From 90d13068c9ecdcbe9daa3eac39da1863d8bac527 Mon Sep 17 00:00:00 2001 From: iranl Date: Thu, 20 Jun 2024 15:58:40 +0200 Subject: [PATCH 1/4] 8.35 OTA binaries --- ota/nuki_hub_esp32.bin | Bin 1788720 -> 1869232 bytes ota/nuki_hub_esp32c3.bin | Bin 1816528 -> 1896656 bytes ota/nuki_hub_esp32s3.bin | Bin 1641584 -> 1724656 bytes ota/nuki_hub_esp32solo1.bin | Bin 1536416 -> 1603488 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ota/nuki_hub_esp32.bin b/ota/nuki_hub_esp32.bin index a6ccfb78ec494d343f22148272797b046b537474..6996959c205c9a560d7593ba65c38dbb94ec6bb7 100644 GIT binary patch delta 935198 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 z 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
@HP)9OL1yv{BE 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%0DqLlhEJoqFP;;t% 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 z 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 Anj0FzS0*{gaG62qAlR`&|ky-^Rr|*jJ_+mTu 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
sjhH8?%rH5w=CBexP@f4{W7oQ_M;~)|xydy$^RI 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 z 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%0DGOm@vlT;Bn%a}6tn}6 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

^WGeHzF{;!kCgfW4cbvRI3ml7O9pJ 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�MzFjnu@+ms7-@ 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 oD<#d(hi?e8D*gZ{}H; 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

;I|D;o-uZVy@#a!|7fg!kriJh+}LWC7yCc%Y=g- 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 IbO82w6QtV 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 z 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≪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

|@%uJc_K}XYjw8Mww{b{ZRs=b)l=sQwL$4VI+ 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�F{5BdMK)z6f3p~jddMtn# z#DMM>8r+@06gErI9k+hcovf3HA$vIu(GU%jiBHgwWYtrP^54aAt4ga8rq~G zmEJG)P|JHrM3pl6M!GzR3?RxL{(=?FN}bDTPb~k0{v1St7$tQthzybp?nMU#lLdS% z{VJIB?X6_;O&(Bs720U|Ol~)p0GZ%Kp3TL^&vd66fy=Xy{uPYE{ypg+ElKOmR)YpC zM63rPz4U!1A9Qye-zdg+(F#HUbLlr)(qAED(aoV(wPfn6*F781B+?qFAWGzo~uXt$7u6W2t-PX_0Ll<^IYo_oO6^CwH3qqO)* z${XfkR#qL1bbIil-mhNm>M0ZC5;rwSF^vmFMc~X;-7ksF=>GlO z_%^Zet%pFTxrvSM7bde4miZ3*`yb(y32%G(y|eg!uhq@tK~zd(3^OtmcQMjDiFdBC zArRn13}i;cAs<|1ZN2dOZ&`_NRb`FjN3?o++=-e5{Z~cfc`M2@l|k)#{B2Zl)+tOc zHs`{#IFo{ln#v+awLXhP=FPa|DUvS!J&sv18keg!k7^YgZ;6o4#yjJAHfaainPe$a zgxS{7r*ZP6i@0fA5aaE|7UXABXQ~E2%yeNUKAY{}7GC&rCzE_|4I7vC+^`ADvi_J{ z&!)$rO1ix;Rg}bAdqW&Q&D6i=c01W<*JqnxC zlIvE3ZCPoNr*#l8gwRaOWS8S`>fVP0#0CETBqiuP$keuy^;s$18?iguvh^~U(%8Vk z{I9$RE?1qRH*g#Ae1R_mZ>WxEgaIot?aT5U=$Jd`%syn0$<*p~$=F#bagN=qfA380 zH?GdScYI;W+A_=ihnyN%XvYs)3?gufmm$K_*+~nL1nSj8|Ah`=}?`>S(!P%FVh`$$#-}Rm?G#|uan=Ox?3ng*0V~%Fmd2nw7W)Hv| z3Yf2w)!9o1xBueMaZ42Ls?Jh)4B;I~+zj-@h&tf+!`22kJxfyW5QZOb;9A zArxbKXhu%4t@U%yzpCUpu`_ay7Qp?T@5%eQL3VUT2fc^vB*pGyp0xQ^p@N^EMz2n~-&HdK3AiUN;Ny&c>K+fwQdA~nm zGpbw@!gcsZ`j4r$@|@9TX`c=l*kvu`MizaoKS@fQR-Rplr?>bGnM%w{AI!^)4>x3f z$-(WX{e2EEH1=`)49p8#OXy$Qmr(4_-Nl~UvQ%BU-q%uNxEwZ0KXNQ~xi zS?dTnu7V(sH66cQ-JsBGo5 zGK_>u+P|Xb!bmL99Nr6qMmA`9+gq1=FztVpX#;&RoCJHs9Anm^P~>Nt7LFpeJ+v^K z^nQ6-Wq?k)MajWbWZo4?fc=`)*zFPIf3UGtB^3d>&;n^MC3oC7ORG|RRKe0WuJ9=#bs{-w0n3{TQK zN=G!(83Rc~hthYCi8MsnEyf3Y!0eBDDmS34; zyxYJ{iG^#C>a0Y%>O~TyR|)*FH;%4l_WAe`>PNE2RqssZckTuKK6ycMk;80Qa9}~x z0yvtsxYhE^I1js?0-0%4ua_6d8$sVsf_Rt8ca+@Fy86oF-pSelGMR)$`;Nc-%Xul;@Zv%<%2Krykh_?-RpnC}$ z1jQ$0&m3E+<8gGbn*q}!4$Wb1BjJ=F2>}1@0=RebW-|j zA5jh&V1N2Q!LCSXwDwN6$O9PU;R)3?zJ6_WdYkRCK<=Ml>?XHkv?YqXXS&(|jnhmi z+fI?W4KQ^i|Ak>x+r9F9`FXJE*xGKhfg7cSmscFU94>i6A2czd$Gp*IqY@(8;R2OC z8FeXAZO^QUGE1TXvH$NmRsCa9w+(VlYFgCaCv`U_H6wE9L^i2Ij}1LFG-YPW_&hd7 zuzMn5(~2>S6em?RP?*%w;-t<@fr~OX=T!E8&o(nf{Lbj_&@3O2mH4np4fU13PixwM zg;sbpk_=fP5j!5U8T{OG3z{B!iVm)Yni{cZFCUVTVyVoi4a zUCuhqZ|Jbmy9<`Om9Lg=aO)u565rwT$!^CcTb6aaN<)71P3_pB$`Ho0v|-CWpL}dG zE%?zls(T0ZYp-%Oib%s1KC*QVH*8t<0QU~rz1*eJ-U(8A?nmE3)6}`^YZ<-6+}Db> zH^%)s{tWZIFymNmeR;uv{L1`YInjqC^^$#zdpxk9YDpb8Y-H@H$lQ^!##tlf>JuZl z>IoJS&qcc3lk6`Zy?R7FoT71DEcqcW?tr6S2c9` z>wT!Izzv!w{Lu(&v88jCp(>Z2o8sj+B(FULoLhEUx1Wvey4w~Kw@c?X;`XE&lZU@v z`FijaF?Ds^(aF=NW1IXU*43)M|A>}K6@Dh%4m^!Z?&1B@?ScBk`}eaZkSmPpELv1) z)_NcJRo}Y@w}+RA6WF#&9W$oE_BT|X9x$^S@;U(r_^~CzG;qY6x*Om%H^MTSM&>74 zMuUJVZh@J|=Uj2W!?A_QDGfgQTxGs=v+UUV+T8m6_Hn-sJOO#W)S~^7mrru@7kORw zx=vNXC9vDG(^1|k+#LiWSl;U3`fpp9I#A%7K$f((I8+=ARe+2T%4+=nUN-j|(-G@{ z0`p#fhnR)y{P!&Ntw~m>0mFnRV{As(52+ngI@p@spNp;aGq3ltvIbme zOn01V_6ue{2;NnG$TrBZwtP8hd>oe@pTZ4STu_*5+-A6)UY5F4YIqTm^Ej#g7$=5% zAp9mbTpp}g@0Pms^s?;uRVbdrW$QO`D5Xe6%s1S6xInD+X5Y13(y}c51-HhfQvDt7 zqf^?@JKpU3BBu@g#$(i}V0q(GUeBEHxu1IRl$YKoAyjp#q zmuE*_xyo7A+~>{N=0);FRd4^yeZ9;=Ugp*pM_%5?tvY?`w6?6yLtB2=V?t8eZ#e2By4eng_`UEaJ%$<{lCEx~^BMmZ0H!0jBv#)aN z6p?zH~Q(k+d^ePvG#JfC8lWuBgkJMk{S!%20(&Hzc-Q14+ zCEtArD&(MVf0Xu&^UczG%f)HY@S#Ts96OW?i>b^|TwBTaJ9hrvwhnXW;(Qq~0fVfs zbzzmsr=m|tYF&85wKB*JadBo||NG+1#S6Q<6<3G0U;lcN!qz^XT9{f|Cvo*>9vxWV ze^V@7diC$6aUryt2Ia4HWw`v045yQ z8J6W4vkRG(Zd<@f8}4&*1#n5n4S84KO5#bER!aZEc))(QbLDT%H?ZB1-7C&SvVOO? z!Q?1NR5o1ATS9UZ7az_0$bBB@HP9nixq3*A7lX!uP*>G^T($HFRnD7QQ3Rz60}@DlDnT`Lji?MPP3U zJtXZZBLkYAEsV@&i$ccl$z{t!TpZE0SRQKzCajMzd;}46nK~Q-+G3Y&-@_y=*s^ea z>7qY&Mx@?-3OK#G7befjy)IQI90h3*FD}JX${SEUNU2O_7S{zv-=vi(`swLyfo;#o zmKlkRa2Y%|`>kH?eQAeKe~{NJ(+-Rp3sFj%47={%px=5djEkGMUn*-@5V?}p>-rDbeI zOe$)%7}}?wW=~Xj(iQMv%i_VQ3+ajvJjvVJ@?w3;&CzBTF=?-SMohZmbUXeTXW#CM z6OWd?+XNo9JiWBJ-pQhtKP{g{{RR`Qw6vtg8a+n~|T;88!^ma>pWqg!- z$Ke+DES_1eP`mfuNe>Jq`O;Eb7ESxNr>}MPFwz_LVph@B(d1J}a{(O~LwY4m1i#ST zz3sbYQLp(8Jr!#?p2yb|tEEzn<-z@qpRUQSlXEGt+56nN3-XtiRb3*yx|APy>!gcMVau&+Ar28ioL5s2bI2|BVk2< zLkZR=m{qxMF?8#zK?wSwiO|kVviA^5SY` ztgN+bk3V@mBR5do3tEsu@w5%JHUUrx8SRU9jUa_Q6KYtRNCq-HNF1E1i|s6;hZ4zj zMOz!@ByAcUG?JtYavUzt^SW#7>g8T(II15HsnH`ct=laaUuL;96V)EoGBvFKFv0V2 z#bPW35$z*MKgr=ndUGV{+fB%7Pp&jf+C3PDrCNSoB4*T$p)ZaC6IaYIil&WXrEGNR zC=%fW17cH2q$_P11!nxRZ>b~+{CXjK%TSimN2=;rK?{;djI)xLoUx8F`Z$U7Rs7M$ zE>K}~z-ZECx+>k`)##TLT3>B2lKT>1Kh^eP!IrD4V>8>y%zg=bMr7V3%<=N+>8h~R zNvSS(4sz^bf0wcM9EZxWLR32f$5jSC-SWfN>E_WyXBzkGfc)`^pe>G#K4(!@^P6i1 zoT$%Sv5nf z5Oo7mQnAI5_R2F%I%6^;F&AZadetbCa=z-JR7CW)EEwbj_$z%8XR$K3j+zvzN9c<2_TDty1Zk z&v#zuA@zzPN}+jFpg)VDbHA!|Ebmw^e0jiP0CpbYIyjaeu4Mx|6P9wqYK0PXvKb;a zJ=u|qcM?x=Kw7$@Mh^jqU7<_*A75yl=RPiXmzj0v@b1thG;=Ju;-d-b76pxBZI7(3 z(Kto$0yAiShagjkPgnR_?y4QIqs#CE+K^kFB}Z|&ShA~dNKt%2c3-}mv|ntu>^@oD zd|D%}<4K%r$H8dqAP)%8NAEZKbdXpSx`)R9jFLt($Y8h>D#o(=0U~6XJY)p|{^SCZ zBJ&J<)rXHH-IuZat+TE_mK?(^z}+O>D&vj!^0o@FWr zXS2gQ4lFJ^3d-|_T{@GiUOj}{%CQudF9L7&!gqUlUeLAW3H|(7sJRxt1I`OyjkvJh zxS$^mRm*X?ECzyQdEL)vZ&JeTN15tev4e}bQJ!bw>jYRejB~Vd{2|Q@%+=P6w=R(IX1e#HOTYF`BUaLahmbFs=M%8mS`@P~L-%V8u zI=uYi$8*)vYQAgj!q>Xi41dk-gyc|HJJ^yZDwElU!NB4}-!M(|jjSGXASbK03$v@4)SUXv;DzLcebrydE-H_d7W*vXf+|j0okd!PXr4J8OxU7t^FZu z#bKefXJIqAcaV>;eL^C9_Atf5W3c0=lIiyxUSWu?pAxI>m!;xjFPsgj)ei7c?OCPm z5$mH39_ypkO!qn0eEFB(PTxE!u}f;O=B3hpd?)DN$p#cu77i*(cAuwW!V^Q5)GVnl zfSuM0K6QereO2hHx#cqqn+y!~ndURW5Wl(WZ|m7<%`}?KvCdv^oPX=+)S3x%e%?-tQkvJVh_Arvzy!A}t2BDZywZG)ekML9 zjF5&kRZ`Ak4?i-OUYHPK@W|a$e-k>0z5U?8xTRwSbP#V|n9!Q_q%GMwI)@qMrf7NC z>T{Q+bD1ku{U2EH;o7FY}NY!~O&D1FTs7}$L^SF=aVla3?77`l^!*NpFRzC4J zwz|hI%u?$Kl$+C+&*+`LToNp(B`;qeU8zfDZ)F+R>SKLU!31$+e0f~p0588Vj2=iK zgL}3Khh@dH`;~sUz`7U?`M2S?zBT<=v(U*uS6%PwMMtKR-rbfD_u@xp#TjdR@O<2R z)-$j!J}wsr$?}>GbZIK-IYKysTYSrxkZYp%3H!#sw-9e|wGd!kh-X_dpQiRD+fDQ6 zT-w6OCMHsuNTY&nYKj;wQPRn`*kbHD`?&dr^IF3R7 z(QFJqx6rN=Nyx;r>!q7KVEABdoWtH-_+Fv+kDuHWa@1k(f7@Lrgbsupa@dn@vDz0F z78{J+AIiQkBp!=CQLOJC@2+E4BTEj<{Mfx5i*>U(hyBJix@IEj?K$c>}$JR={QEukeGVj7n z>?~t@`Rdon0LkGp8vZ&&q1h#Lznxt|N1q$_E3O4zI9}b$a|S@@fE~3OcVpod?~esd zvWI1yeoE}x_~6>;Rmq$n-PRPdse83>c2qDGEd zec9Okjtn`ZuBJ=Ah`sAfQQeU-J#7)Bz|VU=WbrHFqnkuU=-%Au149ns2HZ65(};&F zkQRM(yOe`Hj90M-!kwLu5l57pIDh2k*Iee zXNq?gfQvVl$#%Cx<@wu~Zco909JMn4i>TKjjMQrcC%Kxh}$$ z`G;4v@v{-UXPggwiWH0!V>P$wwy7jmTp6V|=)I|=2fO|Ryg|l_k=zwJ?+p_2a$pq< zMEFWW_j9eCJpS@Ygle8A4#6~=!=f0)u}d;EE!&#Ersx z6Ba?{L1_AfNc)Z?Ut2q+TFf2_Tn<)H&omP0pB!^K^aQj4w^dF^PVgL6UNn!726)RB z(}_ryrnT>(OVdbqXo8F#jD7K9%I_ewW=@Y$OZ`FVV35%h;{>u=o@dK*Z0Pbb|2#uNv? zmR;uIEiFs*u8CinTAue2KPR^vvGQ)OibpCEzqB*-yKF9_e)#E70rS$_Z?vt5geW1-S&f=^>4K8xx(e{S^Jr z+obmk%XWtr!Or*1DWe{CG0uL-OHTUKsTV6NBE97N&h;xNv`Qadh4Q1%WbDTT_|vd8d%I87%eyplpCxm|OqMyGDzQOi2bkDn_ zk1}J-Z8o#ZZqc@PNf-Z&We#n~SDeqm&?OP^*HvJZ3Uy_MQq3$9B((?rMB`>*?gFiJ z)-3X-#8yF@W|070^S1f7E>G}*qvn+pqW9Mrj4Q9WAJsE~NQQS5uZh*zyS;Qtx}}g) z9+qx7z!{0cyP6rI$$;hTe*eOi+_r_L{foTXOK3B#lh^t8Cv0XGH8{8UT?S*fhz->jZPI!hq8;5UcNkU$}P!5rc*O@;%MHFL;|lEZEE&>W)m zc}pbEt%~)oK@6b8vq^oboOJjwU zWItDm;}-oqo%HFFoPMU~!=r}QC3o%>3l+~D++p#|jN$IJrCzR*?K zJ@TP8AnU|X0h{W>i-Qa3sGq!FpzAY$^$s7QdooCXBz+P5ijg6bumjX@E{T`GO=;R( zGFY2tx~JW`m4hsESNU(lY$4|CFLOk+l2&q;9RWLbY6@65oMUu}Xu{<1!b8)O@hayKF3dvF&4`R+Z;yfBuV<$5vv>fwiF^7X0ZQ_J5fkJxD40;~TU^0pbJ zouqK_4Ld^c=E-FJAYyiv9-2=yv~WJrNyNb9PKxW%(2(B=THHDTBxZx+Ivw%>=^CoP z?nqnte_Xs^Ia-hPVL3u-EIAEV*XWofGQ4Q#H(aHkd_Y11L|N80=UroVoG32N9z{XQgp`!}((OSha=40+13D_5`C7N%T->>RTI z1a^7L!W42o3SELl*KIW8L(<1krnq_o5|d1>@Z>gWgMy1_jY4s&+aZ?es&?b$99BRK zE4FJ(5q_GUcTKzga*jHW51=g{l5Rw#+Siqv*>qsCzHy`tOrxrg$PhRE9ehur$sduW zCb#X<@$Ycisd}F*r=H)L17CN$@pHL%P-FfTOJ3HjfW4rr?kOZ$^_Dz- z#z7mtdG;Oq=2@%dUIXV7Z!E3{I?H%`kZnF9m1l6+& zv)i}U}dFcv2UJzSI<~sRinNYdL!8d5c#)=ZHM#Qlr_62V9aMQ{_FD^Mmxs7 zbIGQDVCIY-?%sn1NMi^2FyMr~$A(P{D|vAy3#!ZTQ7`@Xx=1#4{NZfBKz#9AB54al-#rf~uWPJ&3TVRAADjy{ets1O`_-vc z&*nciaVo1t!n673Uw&_gtMB|Pu~q-0${6zxt}6M2;wmSg`Y(S#x#25*K;M;a$Ar~C zqL|epOb{Q{|A(hF4jJ}8Ym6TJw8mJ2N$G@=*9QSgK2}+!JSbGB_5ZF~+`EAhJ213C z{yP}_`9f-S@TEOsYU~S7cA$)(|FjbCPe53qaQG)UPw_h%VUvjLA%T`J zLX|m8+4v;oZ$_mz3SvFmabR!Hay&`VC5U;sR~|n2_!O^~tg5z2C%nm(!#W9$8P3@C zAso31MBX6q)75w3VHy@yk-Q(j|$N;fua7mMm%5>FeK zkQ`nng}j-OFm!Q)<;~ur*uHkJw6=@0G0njLy+m3#ALn(+H4JNB_5Vp)XW+680Q7^D zyPOA%VMWTexFGKTtP*w$O5EpmC}e+V{s3q5rF|Es$e&hLsjnRqnxif3#cwFII%}}^ zp`V+GMy1#;?WN?|X%|wX&cS#eFp=IS{e4H;@M&tf3Pc05BPt%HSR(-ec3yv1AO=Ro zy2lD^vlgzK>zHO?sa_6d^!YxnIO(RWIXK+eu+=r}5RP$t%+$ZYQ-V??@aQFXIf8j1R=(;gMOb$dh&B9ro=UnPi})+VKn49gi~Ph-pfeYde!VkPV)@!Z5WNvH*h^S> zi@C>OL1aNJ^k4epBI4(f^@;KQo=S)67EjNyFgMRQt*3%{r(K;*(j@CXrZcjk>0O-x zmtrKG{a(%{p@R%n&|5p8HrFcsu^bwh!shJQAr;_`?4Bl@$6x9(gIupkf~2-wrr#?ZxTvUbq-qd%{;@D-!7M z->{0i>kB3GN}~6A)1gXEN|JqS^D(r3cI7eT`+pa6)c^OPO}a_unY}5_(-D3lmU9|2@)`n8Jn{x-jW00b57#vJcLg-=rD%yJq2@Db-zS0d4!=#zRUOEu=2hQW2b0y4n9Cn1? z*3p?u$gu80w!9xER`)Szxl5c@X68f{#&kQ^kJc=Kn2V65SHQ$->==Uqy{LO3 z8Kq{ubc0Eue7!%GY(`I@CmOWcmrzYX7k5u9JLel}cfbMd4!XP$iuy{`a4mNS5`m39 zrr5PI8RVH9_RMZY@2K;-;Lfd9Huf-bmptS{HaggiPa)y0n0svhZe%xKA@5fn_JlX=Owy;0mF%OZ1B*z& zqywu3d@Yn{Bdy)y9y(XY+Gp_@zR$Nss=@9S#s_00)Y;-4nuB%ql@k-)`7wJ_=?1ZycxiTE{mvFU6e4ETV9%2?e*MPX1dcyMI_|^vs|ws6RUlmE5}Lc zxTR3PpiT6XrKGRAi)uKVJD_BriPd-+tH@YDe_RT@;`0h%<;KP+3*|BgcMGqkONq{1 zQF&kl5LYFAc^UaHtK`%&kaLC|^wBafg{Qwwdn_lfm;f^F~< z(+YO3b2XU6isjRov-MVYk4HG|+5#_z7Vsk+nssklx|sR%d94Q&4~&bxlsO0bQ)T>@ z?2uEHPFt9=(>7hdi1t5CguaPm)JrFgISEsLz)r^8u0$xr_HOAUs#!sLyeJHH z+Z7o*;JjdDu-)O{=1$S7HZof*ccc?!oE2rEu9xc;K;pkfgPIij(F!uaQ&E{6PhXH5 zfQKq+U0JtH|tOHJ?SzzA9B6YzBwycRLh( z0MAco!q!T4D@os%Fu_2f8?>@wZc6nAnTUzR`LMgYW+U@6mkTEO^z@45urs_8Ple5A z=%JOwPtyJiy}A;HW~LpdAr{iB%hNS;r4XnBQ_I#(azC268Uk0JScr!t@Gvc~kRX;5 zN89y@)k)5sPz)b@86mXBLV_jJ8tG*VnLv<nVAwo1tcI(#+i6&4KJcZv_5 zjbY}0SiQj#(-(B(Y7*2-*!c}r6RW2R!v|a{y95|Z=iRa`qSMcctG=O%UT1}DtEq~T zp3;I|Khu{f1`p3aGbssU4^CC&Iz;!($SxSu~sTD_WnKAs)`$>6X(_*KtK7EbTK*Wn8?ttFHkQ| zUTsKEUYuWDRC!LHBhHhyD?5XLQMio30de_1P0_7wkoLsOt5A8`Y)HKdU-p0THVcl3 zYgUU)qw=v9y=j&`*==orSXlX%H`#El6P&@ayUu_dQ+W>LB~CThw3MtQoXf)5YwaH5(qk^@$u|dv1#yz0^})G1f*9?pUgNFQJ@5H+pnYrpW|vG?BBH8 zP*dq4^Mt~Nr>LsJuE#7RB(^I<_UDXbkA-fBvcEL&Pz9;{y2ZFciLUG1aJj40svb(t z2C*+kTbgP2b+{ded|Y*gv|&q35tHm>YOl#@&>gki7IJY}Qb+0Zw_zIQ6O%Sn>81@< zLh`2M4&GL8JKB;{dA)xbt3bP6<_o5OT?2d=+Ph6U{y!-;F^AH3G;(Z-akQ2C_dNa3 zCN|ulEHboqzkd%%E4ihk85{|m51I_l!NtOG+Vc6XTQ=Vf*qxC^qw6jCvP#eyJj3;g z`-FY9?+ZLP;Rbp03({)@XkCBk$jKXgNE=+G8Ps;V{l7#% zFeq|V0%Q3w30M%S%!^;eSdN`Z&qJ+z9_o-15W?)Xz#bbLr*0u(AM_<8hDi4*di=OEu?|2yP? zr6e{uYoQ~sEaW+<5#!vvY05f?WV3Ql<9z7qb!4p1J1}YuYTx{pMUkw87qABUU>#m}frV$T zCo6eE|6ETZg7|mTo;^8>XP@@aB7ex-zU@SUngXMtlw*iEX#*KPNIcncq$l3x&zYI^ z)#;tZiBHRB8xfRma{&~Knb1fP$B;OwW@YO(klsC)vr|!Lf_zvV11K~PG*iE8R{!|R zc(#Y3W2Ck$pq)07*#OG45kOUswg4!#*T%m>m#}QJT-oNjfI6~~4DTxxO`FYtx`2j9 z@Ufl6>NNkd$jdqZ_yo=wo<*ZKk?3BA77-7~|#JdeL=M^yU~ULleGi)3DvPh&qzz{>PFNcfgUnBfw!l@(Rt|LV|_~M0DoL^S033 z)B5iE^yKNL(A*=!SM?{MxyOaCAbcGZzOoiF58c@b=8KSkyhzV&A=N#ED$>l^hIcs$ zEHtD^R_uK*{=6QKxuw$wLc{kGTO@nSNI!)*mjmd%GSb(%V){n0m1W37eR&rx@|MTu zC6?8_z|Y(Wx-0J@jsKEN=P%N-FNw9kP`tE@Kg@8eX2#lmq)oooBF=D5KN*2U`&UtCs_}sjhJ2>Yha|12gLEe@GrBYQTAtI={ zYm*M*-nKmA6RP`9rx)nBO7c|~Vbn5#t}OBwIS=P3+6$>~6$$HD9DSg`%(jAF?`Uz< z(s5NJdgR<>E1QaZ*=n&6?0Byh`=QI$N^wF%53>5FY^bqW=XD&eeSznArUHK5ORx2Y zT(oZNJERWB)eN>=f2jhcaAce`o;|;3Mq57sjiI>Lu6AouM0UQ%MULMkS)ZrQ%ef8| z4o4Oz(XX+N@Ui3M)uZBY9A_MPWlG%QS4DiTsOnzCma?NXsFzj7xV>@3QQrYD zxpGzZmVN?ch+;t&jRSx|C&suScZO)_PNMDZibMz1au0-90V|fbHk+=dvv!hE!2Z^q zWVn8QNAynU8S;re8#RiLN57zY%whtPvlHHgC+HOJNtb}8Y$%~JbyaqSkFLo!%)^s* z{CXO_3+#EEfj||F^o?Dx*dcP-zNWdm$goMPTqDc6BY@J-$m7!evhfiWxB($Jrs_9= zuk{w}nzY2UVfw={SYb~G%kO_3EEx^3VmF99uQEEy3M~_%Lu|U#X5}gv0=eUwuFYnl zQ;1ze=kJaZplxVu-1+6fB12YO>#Do8j*25aTJ*Y6yHT!eBJHqF_;OfvV#sAWwap zo(xUO6pn*rXrV`E#fL8027MeBqZuPLc;bz3zyUF3viY2O$o|AyG1Z=WA>lS0G_mCt zY9CM&vN-=O5HywalOISo97mu2K!Wh|;}66S?HvDs^z1CKTwfNrff5F??Z4TE{EJle zBQYW8@*nXmb&>A+k^Ce_FSeg$c2v94(%l3u^cXy)=V|?Jl8QV5dr&vf{2tOBKU4PL zNg|CY9BYXpF?GHKf-d0rf>b8;R{!E06~qwOe4% zq;MlwG*Y@z$tiI>u4lBN(EZF+w6uow4-^9SC2jB;5<(B|6a~09>?}q_W`=qectELoe@zSm(v`mY6&276^Mbdh0GG7{m?^OOD&> z6^u2v+O0m(?#LJ$M~Byvs9viiE(GU984TS489&9v<~s}>($ZQ&Osk|D6y9dJc+F*R zpOS1R`ds<68YdF`do@7mawS82sGg4>H3~HW@hMlPiZ{3LBP0rEj@oTASW%qB2Z%dj zfEW}1t_8-CSDV7w~TA6#kIW;Srr`sz8giIXlo zp1i~1$h`H2m7Q!`MifU0^ia-fhQZiqxZ6RsQ`XZF#hy9=#lwp$i`i7mo-g}XvjZZ# zA#csP!_O{$S?tPWuh3cXlJ)}D;ltC-4vo*iSlEGNnH7(i?rh_IM`_k4^kO}E+4qQh zXzmV1qlQPgi>I5RiiS6kpa}vc!BL;ONEo&f=KH}z`Nv?^^<@&?)dIJd$mQ_A}y}U5H zygGvs-zyFaP@@+I9YSZfG_0f1`$+#`YqR5&%-VqWY|bn*FV=EvIjx6G(%l47LNf=m$s~wpuUS`>~8@FKS@ zP)ArDnp+(sPD|>st=zzL@#A4&-T~{HU^;-Y;~$@WGB1WH3}_@;KTt#V_G?trNc#3! z!_FS5Ve(owmv}l^A`fMCZjs~fNiMy^45C=Z-;1Rg0w#tLsQsj0=eq~g@~JRd&f@I;V$bu|&{6xz zD{5hsHO5xC{DPREp!C!IkRIVbpu6@%yc6{BZ~I9I-W7Bs1+Kc^Po&rLx8rbM&wML`AzP{*nuuCqb`TIQY`wrOs{=VNoO6EP=bIy6rInVy!z*xTZhZdb*5gIw$?#A1{|Uj;K~~#;LqxYxd{F!C~C@!pAYal)5YIokRYviQmWS^n<$Sk zuRSo?+_un18|zUkK-=Vh$>Wb1Y}spQEA{FWX_H%j(Q{9~JOV7@MQx$f)Yxoa&h&SD zIr6vv@91#b{6fmv6l>b&Y4PdrrN>EoEm0 z#{8CXYRu4y6%%77t(>HIo)&E%UT4i$@0~Ct^|X~P=DSs^750Yr142P7%K{Oa?c>>0!S6}B}oG^3`kS%(p(zB@@B)BMTKO9DUXbeTn0D4GW zxW5u&d3)=-kr*s51go-uBOiHOFz~5`?YO~TtAjugfxy?)84{j*WM=h?#I4I8*}8SL zb*)>sWO$F|BRcj`_e&NSXgK10B@tfUzZ_kUDU{F8gr%+JO%TF32JBw)J zj=KjhzT30!IL_tCJyt-usUKuP4f%iE#lOJ~#ee)J^6}^> z>69TX?c^1SCCU=eJ|_Wj>#4T_5U~j;TuEuB=PoFl#CtcaFewTMDp^C*3Zi zT2RyrpN$z846%V(qy2XbFTP+f_Rv+p@gcyG;0(2|)F~WYt3pmT`rJ)ner+a+qGQqp znxs7E1%CO0;hA;;70c@R#)}4|Ag)MU7BIYfzoPUTTjXomn*@= zqlU^Z)21rB4i8LTHuk996+HOSdnSh%U|gj6{)-fMi5DrxMt^It4sDtTZw&!h+2~I< zBZ{&@ACv+kh>bG%lX=AwV@BBudna|+dYp-SssVzP3yjRfDURe9zcqB82DA>R03mZk z>_GO6j~Bzq60o|H(x!VHHTM;THF|AEyM~V&Z+l)5WpcqapzwwLb^oC|3<(isybyoi z>vd1>43-A*TKSku22-+7WW23A-g*-J4ZO`rWzbY%(=T{NW(xSTy*)zPUav)%h$TO@ zkMTb_^Y|B+;Msszcv12)UCqA2S8>X`&un(S z>K`})Y_B&uE!~+=HUkoJlzV-j@Q5ph^F*86zG6sHRUV19h$+)j>!B6L<@aX2!6XMI zQx5~4eOazN9h6w$rTZ((RC33Wlt`!6KJyNYB$J|uh|;Ug8luv6pWC9CHLH(v3!Kez zCp&6Xk@|C!%mYB4tCztNNt1sHhzj-~nbBrDx-QkJZT5wC6b@Trm~!*JtWr6Gl*tjm zEG~b@zBhk)*P~V{?0m>ogPuSga~0+YvI)HYdqY@S{Uik0Z}Mf;zlQf@X|oZ3jYR^9 zUmfU1X^RbW*!qSktE-1Nt#-}XpaCyJ5)%+`j9%mtyvWvSm=mfA7kl!buNpef$v|3d zAn=WEQ~(JUilV-0t5lRV>tEKBHVC{67RDmI@>u zSz^kUzX~}=n4Dyn6fsTK9M;Q%B+aLI*7p$52=E*_%H7}NnyMcv&dF=R3@-Yzyi@#h z@|uyS;Nt(!oRnu(|2wDZqb*?ZryC62TE>{$fENZj##Idl;{>Rx)3JSmIi{m#_7M9W z9zeH&BmyXWFCGo$yPb?kuWEw8=anr{yzv z`ZYsb^drx4jzPKrGFtCC-)dfb&A>Wl8kL(4`;A21IZ^b>mmv>B+Fghi=6%Ayzh=nj zp{meSg9nQ(%Oi$mMT1|H;MoJlkVO8FI*_<@*3ZzIo#mO=4ZZv~kgMPg4!fV@*t6Fk z86JcjDIZ(~s)~-u9}cf5gxT>@LCbjQXV^T{Ux$6i)v2DF*9}_vY~iLck_Bz>1}9{} zIkKmI%a}37Pv=Dwg$k@9V;XC{Kd>C` z&w^$kz&)wa(7E-AFf5kfp5Fp@dF6G!s?qR)HbZ!O2YUMdh%iy@F*c@mS{xaBQI2Qn zhQat4z7K{BQFErXB+7fsqqM1%4r{#3Uhsn;vVxe z;h3~hrAx=}5q&HcrG3I!B*-oqPJf#W8xg%7{U^`^A!YF2sX|7}+_ zSN*&Cu!MFs{Dvq)&wm43g9KM<%RH?4jhlvqP;CXo2M9%{3;J-llSGBw^ozkH2;iz0 z-l`jX=|XMN?_-17^}fCO3H_(G3Fm%w&8R8Ugg`Nc5RlKEk> z{!Uj}uPe%$u?owTR(3-KsQP(7K+)6ZmG8VwDj>3#BJ~eBpTpX%?v{qX|Er;A_9G`0 zh6BP8vD#ZvZB!FhQ5&ElTErC797a6Phr@|1wy!Oa3<}QaK&M9DkwIr5x34Nt2;6jy zhp5+J#M}d86{3_Mc63b%8=#fxE)-EeFvnh4w$xV_FnwVn{(*IQhR;x>*wc<*^%?Zp zRk&25V+K?UlB1$R3qnU{tPc@?SAUQz{%$wmGb*21=cM1}XBW}mLYcYbodKTxqJ>#qm1iSl+{a56Z2E?6jHL?uUm%kkJU|2kFnZU z=@iact>@#7V(EPR!`}r`pMTDCelv_$)+G<+7k@MK4>JrBR1LFHML=d>`OfV;_P>VS z5Sotvui+ELE*p^sop_gKgQ4f&Ks2_KK%D3ApFo_qRs>N1Zbq|VH0k_5Z#KO0=(FJN zCN{OwxY8=@T*^~^H#{d_%h&vFNW(wh|8D4E7EVNF3v}))_od@EtM%KuKf!jY#y}LZ zQoF)3(rGd#%1vEJb9O6+XWTY)gbg_^y6LkdwhI9L^R}T+8@wQ*d_sMbe}3DL+Fqze z=RjNv_d^7`yknS*rFi9zAtp{ZxyC}5)~Q>n-OQKU5|=q|xbm0HX>9?c#Lw;+W=l9w z$YbszVz;g$V)*D|ex7{X5oMxHjw~z{eCl0D+0AsHo8RJjcMYSY%RQT4ylaS#``c<~ zOq6!>QG{?mJjRXppl*Fmkc7O>U%O`*Z)|A?9(0PdN3Q@zaiQI~t?n86C>l@lE`JyX zK3Y3thBU?_wX^wxKMaG~flvjRdW;LuW`^?pe;6|QH=YDP-1g4x$slsHs>xN(N~gAA z&AC71w!@V~&^c{Nn?~k(<6JvC|6M^RiCzqz`X>Zq5Q4t*r(y9E>tAwd11rjwLS!R% zY}3j~G3-3(s0ov;IG{v!0$*`cAGpzo&&jtE^W{b?iT?KuW4k^w)#8^W;9qT>>X21( zH(gA;;=aM8e<5Pf4AQH0fK+1^-B8)Z{N`0dctUZG5%gcvPNa{*XQO)-3^Y33SKuns z{;4np&NN(veWkD1*o7xPKvEa;4C>P};(#z`#T-NyW2^U zoVaW6C~f-`jvC~v>4sj=s`z{^7cMvEt3%d+L- zuI9YWgLHmCy@|ZLj?ETnziN?iBAsLLx`TYPjt%S}b`X_V5N-_$m@hnKP?dhkZ|m4U zI*Vg6Ds-vWL*hSM8qsXvd4X(^xES6bPe2>?xIAhcQNGo#Pytut_xp;o-*?!q_3#Ma z^Vje(LCn~H9gi@V>Q?pms7488ggvZ4q1;jcp%LPh$*3lsGf?gyhFX2aS5|GHRW$A! z%*%q<*hi7u4TiqvB98StEeKTnaJk1A%);ctAp(G!4WcFjxm!T)U(lqM;*gh68)PV#y$wge#e}iZbdp)r{zR9ndU4v z651is)?Z<)8$AQv46M6Cdx4KLunCH;7kIgWy-FOTk+B#EjO-!JiUD^z3?eZcUiBRq z{!MB4oGW*yS1OM@1<)Ro#RT@5^OJ07png(dvR(IwOcL8Ipt>a+>B@8*(e_s!?a&`a zAz{suSg-n@{=TA`U4V^?n-?dqdaB(MtukE>4)~88)d>hCjekO2>{;W=NXI2 z#s}=)+fzLD4{Y+*Dg~!-qr6k%Q6BjKd2N@;riT%1f5^7AK_03nF+zxHun1lCBLC=> zKhfxWJfYV_464rk&VvV_bF(-!a0Q!q217f3-=nPVjDC?dS+BkJFh(=wU01hq|*5t?%v9G(J=w)5^$$*1lL1qPE&sR>O%7(s;4ca{zV;_jX_}C?;-1 zI64;ncuQfydEj`Ve2=bZV9lZqg;x8|KRg1D?E>Ig#@|GfZ1J+ZCSI1a{%vwxGsdX; z%*>P9mjnj57N`R3ZQID8$$5d6EZ>M@5A`k3J?F~FxZNv`Dr>Gq!Ahs?9hFNv{vqiw zomTsu+k!C)miPz%C5-wfOes(U12bG$;sJEhYWwY_B2TfHCA83y(s&p;T8CTc9=QEU#2xpOlgrjR+-fK4s z%q1{&%j>-Mz&6_}Xrhz*f0x)^qJ|-B53IK((_f13uB^6AZ4YrcSx>Iq%+y zbqd^MYxp?uzJ8%DnP+rj35t0g`P-dX*KW17yS3NM4U_B7Hq5T7%N_2tHbk8}*1Eq1 z*k5bG^w0T`POM9I)Jepd)vlJqz9h+NU(wL%&VC6E zb5?u~18Q$$b8C+^XR+=11HZ=iV+D6x(cX3%JDVN;xj<;uG@gXvxy8N&VcMMhp}rqX zS}g`XyEBW!MT1+nt0+<7YdSNNcw^`PEbMXsVa2-j{6uFqL!p)P-Vv;iR=6{~xB1)% z_GVj=lB+r6Tt=@5zZ}6jbPy`k|GWW7(#ecLx@3OlL6Iy%xFR(bk~2cil|ueRBBhi z^C~U7y%|wSa4cMbd9qY5P2&i%S%@`qPU{1k75Judsdb9c(pTd*eo<1XHe01pR*#P+ zCSPsQ_h-n}*(7*{*dx?El+|ORPdS67?^#-Vdvy^%HBbpNZ&3xqor?k3VWown`8W8jh!2!SO-P9jQ5CQ9Tl={ zo*Km>CL0&oL)5X3IGvUnK5g0EuUuBz_OrfXm*%(aq3Reaaj4U@^v!-n-Nn@Iv%b&^ zC1oxIm_|ojq0rW1DaCiHB2~`q#f{Nqc9Wl5q9! z5(>p|$R(2M$Mbih+2Cxlh7#4@10-YVk0chs+Ar8D@G3c@D&hKIA{jHnhQ;_oLg6?U zlOpE9k?#8b{<=l~p}O}z5Npnly-?|wu#r;+l*DR9DdQQCA)XIFVbO5gPaD6LppVCCb|(q=wsxnU3TJHL<* z3OT<(e(N2w9q&*eGzLlLzVqGSU&DX@OJET*O)QM`3~!p4Q88@`Ut?lP4BQ=hhIz8W z^sZ;Hh=(~n`DGKc_VuP2PFBE+bzj!w7C#IUrY1C~)lKs&$!rCY_mYgZhG6I>h!LF- z%ing>++9;8VjC^8gc|L!Q@ z*@uA|CH442EQ^lo*xQCFcD|!Pia+x4@eV1XCXT9uI%<-D!|3kByT`FE?8*;L@&swR za^ZppTlW4>0YW#Kam;9L3K9ANaco!XgymXSAojCy2=%kbGSTBNsjL?;u&MH!dzdJV zU`*oPI9xqBJ@~~q7Lo1lt~*W>BEU;?J`*Q_Ua<5*{!Q>|Lvcxyq*63fFDoRWqc5pm zZ3^h8Bax%hIx!kck^o3^!arq&_NSq;b-TieFW#?yIM|;u0A(I?IjL z!$rr+DF3_H5)JD=SP`ide+1eEkp%IC!n(5r9M!s?`B(9*Q#MJ4H05gRg-V~fm%d{v z)ysu+LkopazFSf}W@R@x4@p? z*OaB7cm|pM%qLB~Ezf!&&@@rs#Fc0^P``+`_efky4o)M&XBtTkwlyr(DI6>OYDihZR%&RxQwFnXZ=^jH6k>Znfh-quK zWCJZ}8srh-D=wK~Noh#k_?NHv*7QE=jppw>;qyZbr<|06E@(q-EW+lScr^pV_a>j`okq(pbZeiID{T*nGx@taN|>ymOQig z)!n6sy^Ff7OQjRY2J%jd9Vj)3eB~;B5{FRf=%q!@ncvxAUYiVG`lv|**H1>bp zR}u8!6jV^v3lQXlVP#K1S}yV%w?txV#Y`NPZJ(+TD^1&^w4d5SGe)~SEA*o78`TfS zt4G*7A~BlKD*v||9(lqDM@qP6(=}ga(wtJ=#=*+!Nzo2V-ytuFH@LCsNubCrOl&ky zdW?m)>)a-U$WC}SU9xux)bI(9f&ZIkpTAnAw1sPw8~0^BdBT@jJ|pp%FEeYZ!@4om zk(!tKy{-R#?UQ}zS$2tEGlxT^7`95-HAXJ#HnQdBdj9~ zfBaw=f1!oi?3^MkQ=O?S53$HE>H`5>D{(4}p7|5iHR)7?P6<0a9XniSME&e2^;sB! zYjFK%-|1KysFGHH%#is~w^?0KEkb?Tk+N2UBV1{px|+dh^lREcQ=5&0^$UJ)ha0Nd zkEKJL;{MGX@`ltyMkn;pSzYHCw@tHmHf%-L=?kjw4b>()><_r{an>oIiJ?Y_`UD^P zI7`aT(&JZ{`iR3ql@%})og0foQEE^ha*WS|zSOLF#MB^1z6dm*250oo z#xPe>y?U{b5EqoXh`99vYTnq=-u{s;z#baZ7EjR9Ka9XIuoMjgI;i(M zwxr7&9NPUNRaBEthaXlCK@EjkFDzB}DlIxq=nZsAY=gMJ-|}uf*ce64CH}7-EWCs8 z(Ri3Pf?`~Xm5hh@jvhc(q0n0;7Pg*y_d&uPnld;CGhq)+S+6cv_>4Jk0W_KV*YK|! zmg#Petz0p4wJPCr@wTU=IQiSe`w~LMtfH%UPP|@3*ntPXQT{UBg%D=FEIuc48v`5q z2~|h(0_ka(=dDlRGkUTYvqx5Y@a&5Idg+Js1v&(R7$3X)+-9;QJ0P%_&|{L2**g<5 zpewkl9WBDFtlDqnZl!HDbo9Fs*YST_)JZL@d95vW!X!@*70BUV0d!K1T){6Vu_!2g z<|MJWQ3Cg4JSA9D)aCR=zzk%9nbrt@kqLWl;)(pH!!|KiZRulJjUbZ0w>w-^s<;;m zH@{eV;HRuGDYwN+Ub?vT`ZWrDk6K$;BXM%4pp{&GX&8c~;Mk_D2Dux&7+F?@1ABO) zhdRITU%+KPndv8x@$7^z=5ZG=__R+walfzd@V>oRblS6IERk4=`df%l_yheg^G^Raka$qyE++Q)&TA7r*K!t7sQzy;;nYAv1hQp-*E?|BJ(Y!e^Y` z*XPZc<})4~JAk~cghi?8Nc=V}j~2@#swvK`<*)T-Cc{&^eiVHRfNJJmQ-Ar>XH3c9 zWxZKco7QFijGyk!qIKZFio7ttft<32cL6g73X$*V14-q& z%PvUcNOFa1Z8j*_S)9@-*GGL9?{uai$n0MJLmv>|i0R(8FMAT!fTkP|Xi|}4q+Q80 zg>Q`AZPzdrjcclTvs*$;O@``q;K1dTB5bh3wP zRPLbAa`v`;<>3b#+Bg43ZL>dp1BuR2bGzEIu###`+kVUAQr{xt&uDz&@smV=I1pBV zpb=iU>ha&?B8&=XHkfOJX4A-!-%X&--bZvknLu!4PYtg3h?WJ|UV#wL%>IjlDzuVq z%C4$lkF{r%EB|)0J?NZFtgl(pQvXlH6YQ2J!bA{Z0qD*ihq+uEgMNFsC~rumEa3VyqUZ-ar2> zwOCc-h))SzgTGY)yZhJ4PJeU0h5&NJ=LOasSaVd_H7`JkKnzrN7rzb$9I9P)?u%Mw z*QZpvH( z_|^VQ-@WRBw3W$3Y7>R(Kkg77X$!u?4ZDF>9{E%1xp4psOYC_JHrhbYy0igfDK5Y! z1n#*NGoXt8j(ZWTf2=Qa)B#^z&dYr207yIL&(&+MKl~1X@a%tK{&=|)3%1dtaaRha zmsxo}A;p)|>*d@O`E_5;voDwB2{7Q=g4U`Y5J(r7FEi>aU1rFyNA2S!fkI~GX^@G5 zdww2JW1tpKhysV|ZbErBK(EAATNwDI@9!0?i7g$}5%$xA{y+AEA-yKYI5)#4@7Z*C z?(f6oQvI=5#88d{Y&2xSx`iJ9Ut`74LzzWYz7W{j8J{%2gj7D?SD5KgmF8*dM4?D> zXu4OKP$eTqA$~s@#!E!$pZ-#0ZDYY$CP^)PlOX3rP+@Z3OZkpJ3e+ zub(2>hImbq{K5%oKus{bFHSAy$~c`2fM={bkBemnA3TtyOv3eU!=;rbPqF`aL!~d& z!dNgW2Z@WYtFo7ADS|ByTywdHAYsYxD~F!s!)66t8nu@}NN2XYg2lLjzv>?@Cexro zTdC?^7hguk7=CFW>ol_GxBG-epqVLcPFcT3V*AL@O}s1#T6=S2Tl8r3&cFp$zw-{v zf->jT`bi$Vg+V0;;Hi-mJ%O8_WX3_culpCCa1=^`&gT%?tLM*)#>_fH{kSK~Q|?s) z(vUkEngQ`mwBmxZ%ZE?0{@F!05iaKDD;|ieBkue~m*KphuY06}zDW`aXJ&6$H0C2u z@JyY`DKV8A*!_Xoy>qS|+>`{qyn2VkX=komCy+Vym3u|<26w@yq1KOpat}YMFbB^v zs0mtvCwUs^phtl!w3g!Jq_9qMaoTpkK`%a=Li{Y7KN!+8Js!Wwai>}qN7UH-wZ zaBN$Z+;X9k2H@pSvChNalz4Wd5Kt>~+A8X(HS#ERQ372vXt3RC3$%@yLso8fk{k^g zQ4nbrJ6cVvhV}oFvq7v&ssKBQ<)k%O+XAfhGjXQtmeV{%a9bwwIRS}q>`TD~y(zaG z2c0sA89U{)4fi51lcFW?R}6&>!vW3buMWb44)9GOD){$Q$BOa90HA|!9>n4Y0cpG0 z^n~8Isk!O2t%$2$<=CXvfBB0&FF|pzbEwSnKE(EoPSdp*^ak>@fCfcgTrHoumqDJPp-N2Iad~FWfRUj zs#V5qHiWvqf%jD^<5@%4Fs(SPa{kp2Hc?WD3lmpcz$|C>Jj&zEta~akcwTL;aO$D0 z7aC=5!i&|!+Y9)x(YD*ZLIv3Z)$-Rcm#Wixr5C0L4=)+69w8v%`)1Zv9MipyA2MU% zfSG~G46eImy?6h4B9xqs;C&!+Foy7uFWPkBe#|f70}Arf@p8nQZbxTWeoslbd8Jsn`DYLlNrpbTGKWzoQ`Cb`bo z%QKfu8$)D+XZ`L{?~sVOOEm1@bVO>(rE`Q?1@Bk4>`C-Q4Wel zdp!6s1krU5kztPFwxRbQ6Z7cHw1a%Eh4qm?&D|E(OZ}9vv1ctTcIcHoz6^Iy8U-?& zZ_1pKkR&8W;S2G0qCSRvDGECw=#*tF!YJWYg2S%T;)ESsw1y9|vWO@4WknuxX-edX zBqv8CIXPOILl)S_s1?f8SRoDt41{IkGp^|#ECvtDSO+(8E9=}36aZfT9{$f)uAZ!P z*ivLAHM^0C?rE!i@>!{Abx(htbys-3l^HsqX^;Jby||`(R}{ehlAPx=u3X|lHlT&D zSADXK7lMEBnKS+&3Xo}u;F^Ft z@?Hlb{q3{vC=jv9fLARe2kCn;!KTV9exap5@vsGKA;Mt6=MDc460;?kNoZ;=4xQ8M zV41TQZU6}r9^(P2Z1fZ6nYp$KvzTn&X>}p;UPJh~zkE6K&fzJ;z6dN%Ma(fT!ZC@m z?1f%3f#WMv*`N@udr#xjKZss`z9igUms6QBrZ`Orr#eCBim0mPsr1WNpY*g-jgnKjD2Mops9|lSVR$ z36{0LijTkb6F&r%?;}zmt|fZ3K}y_jA=kJ2Yph#yuM&ad=jrncA&NuXF}Q-e^B-c)5df0CT<$e^kjGV#BgSe)w)f_JMP?L z0tTfhkH8mV!BWMdu_m`p7P=KwO47V~{?2gLGh4h7ev%&+LseTU3DU(mbaqBLMVnH3 zw$~n|wFgvX1XXC&h_qCT!a-7LvHpPT?S>|Yf@~j-osdmW7YX-SulZ!rX^20n2cb%P zw_yu-PFe@?m)6~Z;_r!qZSsB%KTe?&z_an>5iDBKvx?6g!KO&&A8Jt?>&qy*_jgf* zBP9%!RG7@})VB2{jVehj3`JHe@{6~vzUB5M^(=z=Nb|dbZeP7NQ(@0(RFohhZqHTz zS~1Sxmmmsgqt-3vV?9`%<%TM%t+Uw|H!1>O0^^AI!bv?#c=|J}^APd*3kp6gTqr;h z+#Fgzbn|`%3@iS(=QQ*jSy{NmmsGTjZ+wRJZeRIb;gZC{8>ho7DL#U7bM+_u$7k3G zMa@0lePP9r8O)26u>eS z3y-;NFLTl}V67f{u>XD}fbzdPdsbRwQY%tTGN+4MU^srHwvgrAK)|Q% z2@j~2E8vZa|9BXrNNwE`u4`SboBX>!HGjp7;=~{uv({C=({tc{YRT zgPrv0Dn8w$PxI*$GTSsoUBRcH=u-)OQvZTa-{I4b^l2A9WmnOsZ}I7eeY5cq@NCot zr#|SQwiQ}+)=dQUuaJwJZ-`W16Uz^xyu_v!X1$HdeJDSR^6$m+(>huevHVk-PZP>d zqr6@$zorw{rO+B_-Ia|B&>u8CJcSCE#R{rG|H646i?r@RjVjc*QU^)*B?*Ln@>Hj^ zWE6a`kPLSEKxtSRU5D70BZ#ucGpUD6bRC z`%-zfG>el2z#UZBj|wNm3bBuLaE1W5i*hf@kBQ|ekCa~^0PdmuYm^@m%kxm)ih$n{ z2&j?$pN4StA!&qx+5Rdas&E8d!ytb^_VramM|HJWrSH@J8ZuzXbCmBF%TtE5uH!G%9udoje1>u_%7+5s#-M_KH*cXr6;-G}g|Ed9 zW)4Y6-6jq2I}Pvv<>e^)E9Zq3Uw6Ml))BDq(?3ZAOhM)R?v&I+q<{jWC(GKDoGN zTx4CKb}F#~l+U(ItdW<>SB+sI!3dGv6!j4f^HzN4yT&lXL?=Eyd>@Bvvs5*$b+KJA z&H>13%zF(E$40uH=w=dYu0qX{7Ql*8Q%y>y_ptCAsQaj~tV4DcK0S0{S>3n}!AVnS zWNPk58goD-U@k}FDlMeY$OTE)ruu)bO)P6sgF?OWFhcb1%M#yFcrGq72r*$DHRHc= zHV_2>UxQ7yG{pXu-oy&NXDsVRqz&G!jzppvLqM{cD;xDt3T<=ufIV3SBqyN@-W$il zI%&5LUIl+>1$3i7H->l+W6{;2D{<5HyvI10lYkD)7{{XG&|ewiJ%S7t$Ud>pX_seJ zMoch4{QKQ$B?%N(jbpJXa4?WyQO4QQHXv44P3U4izp~`ID6g`1O7JMh#VP{e5i77P z1C--q6%iA@;-y8}zrL&!db*E6hYORa)*asSXmw-nlTdW1{KBs`{wW5}^qH@mj8;9^ zBk9r+W*TI&S=N@8iN7$OJwg19dpwM`@bA~-F+1&cUO%37Hh}+Ks)d#8_Y{YvN8#cE z0fvwXP>@m632YGkyK#cZ8vQi^IxzusnZCF62n8e*C(_>0HGTE&zHTstL~tzT13k`^ z1PHdseqmo${C*Wwvu4N|^v=BgkcbPdas;D97o-!)nsY`+b&XM3?J;_QFbJE{AO8M7 z_`Dm^Bg{k=A*%nz#{QH6NF#-H-Y}8%5@E^Ik}4TwfNH5zuZkTAVpxPqqq{+01twhh z;#E;XSh~=-hB{^ZtB4REpN#T(DJvN>FSo50`rLf2n^MR;pEL#2m9? zr{aQ7Vk2hk%MwWp$H4(Gjj5Yte;w%ulai+X9}Hnr)J{?AB$AL3W~I=g`1yvHHs1eE zkgFMNj_O98{q=J)Q&D38(U!tEVb8OtIsj7y2~7xLLr93vysnsN72dXuj`4S%XS!i8 z!+D@EH(i>=&z^tdT(>!TO|LR5cNZ+hY}?=@5MJ4x*%W5 zE{4j1CC>KMM-iALi^BMYA1Cnmi&NR4xjhRI=H&)TUXI*He5(Jlp(_@NtkbYo?FGs* zKnRKs$}t;(%7U-9rfs6#C3nf{u-4rjb(Z+A82Y+fBDBrz&hU_F%%BzLw~Ke5#yTO< zKwE8p9yW|-%12LQ2}<{t+x%bCSWo5RuIG3;zKDER{jCa1kNkmEn=JM=I)z-KmAw#K z%a2b^HW}mO2Mc{v8mo~z7P}XRv;fyyh6U;s#3{Zy+)gb$v?KUE}je!_ZcIkkxzI-CMU0cY|0eIq2)`5Fxu&8J7eh~Ty zRt9ixEzsfZ-QS|THurp2?jBqikzAJd(ccu^by8i;f!4b7mhtX(wjf)WpK(UG^`cX+ zh6j`QdwMwD8yrWu^gDC92dWf^9L4V`Qa$(7a4VSz``fvvP(N1@g!zcG6hcb~?xmWt z$$uX~_B^#*Sjl5%vLxgOaGbLl1*^EpGqD{RQ}~jZEL~9-#81y;F^Y^Jes?D86D@8= znz)p-gwZKir3`L(f{T;-@)5IGnpUVL8^%AJ#iGR@Ic9!v7JDpBD9L>K!!eF?TG`-L zk1B5HB}@*DgC&5o4KPQj>3y=qW>Uc_3k#pPM6cN-qx2crk0AcU3vdC#(cJn1iy9{F zi>tu0QQQ^He_B>L=}N8KotPH~^FfGvM9>~5g)T{OHwlaCGtYDLz}ak&QB~1aH+U`N z%rX+Fm((5`mJ1X20%;L5)Ow z1@H7C8yZoZJYme_;jTuTZ1T~ol{iO=3H!x+*8CFx=Zh>Y?Ge2~fuTYgqh+BW z^GSO6A z_vaobH3KZIX05S7`UgX8Os_a`|2q>_*LIi5EgrmSii0L52ihETOSDJ(OOxAMx+B`V zKY}4Y_6mzt^law8y~27WwBW4sYiTPUS`o!u;;rQoQZH%oVSfDvRLmYM@henwk7U&Y%0_UD^wqK9ly4uX?Gpy4sC(N;oYNS~|GL3mVfaI99vMZWt=Cct2s){oWzRZv; zK50Jd9-^uMH4>5wE~ja%JOzZWSJfecSIlP}yKDc@FSye#yg{$YQVo6&0o3bch^YUx z`RkZcoybQFvBf5zyvS4$-_3lmJ(rp4@gruz)!u#p3@2yWpjA< zf3S`{#ORp~tF_mZ<7diO+GzJ7h}-|@-0MB!dtb1TzxEH7!Ne#o6zh&01<1`uxM{Oq z$L(RB!vFXO>mvmtiD?1TIOGp*ew}ste>V0$_ef(n=J=11v9gJuf1Sk|71e9^RV-Ei zBr#-BkJPxS2g4}P&DjvuPPhM6BN$+iU5qBSwcd~$S3ND^NkMre=G`9-!vPnm?RzYv z*mSPEy!ypleeKd1r}on6EJRN8b0j%j_X~wCrTS!h*4vWo`4F`}Jbj}Q3PgRgYO-bD zvX8QBVJ<8A-rII7LDqq)Xm3wJ*rl${5PL?G!f|e+5*oLUnn579c1MK2x)QOcw?`kB z?$RX#ub+iB4$AKx3oncrJ3xE);i3*7rmL5XRNX6@vOMRAz>h!_KKU8-QMJv^eo`dQ z9(ti@G7<(o+(4ZtR{NnvM(({+^TqBei=L@WUa+Xcy`l@1a!3c~HD&)Ox8+*Nwr^fj zWh4LoO*T=aXp9a%bOC!xymrk0;&}_0D?z-2-Y6@ae};nho+6(u0j-SD&pZ$qOQA;2 zYux-#c)Es;L)#&zrDZk=Vvat!)ySs|H}%{!*tPRz$!tY4(D()X#QcWUU>T+4t@ zz#M4XfX7`xwr{F76@33&Y)t>G*UAd*f$C0IZKh7Y%SKzG@f?eQW;Qv%#hgkR=Ohao z(<)?{D?os?BiO`Se8k(Vt3_O?n`H$q)g(h7=K}d=XCjKPd@TLDk$zRKSK40hl6VA& zg(wCNTV9vk8g#KI@yKY4OARo-cpDFg(3ST(uYa2vC+|FcmO9Gu`S5?^kPD$zqb+A? zU3VoO0f!%`=UwIY@mfHOE2sV;hM^Z?H2!Y)Y2p#w{Rg_k6H#%D;^9lLNm9$npZpGs z2&-I4!^4)Ke#pNIEdtQxeEB;pT5#PKRy*!T={oneuJ*jUayQ%x^+x{dJFI=Dy61?m z5zlabx7M>+^k3d-5$j7-P{tzGIZD7GcW3FaC$v_qy-6}5p81cUF#ho(wz`8*vp$sk z!?wu~8&g;ocO_5%7hYNsMfUR7|Ha~-_A0x|QyMhtU!~y_AL;eN$-VGI^Angb0VFNv zB99y*hglwdfqXtc`!6;q1y~|3`!3pay0z)%tuJ=~f5tfnY{x5iZut<`vWW)0E~vs3 z){G=@({@pmy-Qw`hO|9F6?|Ma>(^NXvrO4_Y5(2Y>j=Vk8M`&_JLEB_=bN+HM0Jx( zjk>BF;QIxhn!_Tq#mRi+u;qf>RMwNAF%OqP3j)MA2?1&^;cM44?We+{NAbs8g@^r*p0J|k9}(L?*Df$ z;D+gH8+$M%;FJZ~1DfFiFAKCsHmh*4{8r+||GzHFTbs82V5D_3c88uO35>NT$jV;; z&-+14J_!~o(x?uZpR1?Ot1sG(3-1~@*0jTV4{SW@udJ8?dtk9i{Yw6qlbN1wp;gD; zklu#Y+bU$pRiG!_os^q2yL%k$9uO`h#sFI)Vnh+2n$KPyP@}fdYHer%$6O#*$Z_b1 zN%3ZN6mgWW6PJVt^5XXjpsH;de)X@?;_YiW9U<#ZK6*NK6m|~~Gjjj{@uJD*lM2|& zCXZYK0N5)OkasYllJ_6s0s!R!{Ko<|L|K0NA?w+SQkyzTtI{fp2wAtCFD+!_ zrTcF@&aylrU?>n46m$UXKP;J6c{DjPtcpg&8fi72E3p7$#1$HMX-u;1{84DPN%{jx zSjXXyhHh3sY@)4@*EnKrZC78r|GYe9trXKdzq<%;3Qm2)YZznGoPWnB*aVdLJ;YJY3r7X<2E{||Xyow|+ zQ#RpJ75_Hdc-S)5GrZhBnPgI;z)5boF6IW1UHK26yo{BM1s@1GL$?mQNwRj}n&&#h z@2d4xFc;d=t)zxz5%}G$%HxRxN#t}s3rosJN-PP;oGjK!c%xGMOP$DvE(en$>e4k; z2)8oJ7c%Mr|JQQX!T;Wq02TMkkze7TzijyzMRF)68coP6=!Zdvo{5j(oQ7@ z9xR6oRG2z_^-Vu#etx*!P#{yoL8#G)M`^WR6Ct;(mLRiqcFq+0ao0Tvn^lQT71q-m z#?33(z(*gQoInwx{MJV&r08don(WAfKJKT)!d^E7%6XG*H`HP)Xl3mmG|SeKJI`B= zt|@^F1>!h*D_%9Pd*Qt>cr9P&2v?mFsGBWB)(dpt&^X{VoLlQN?&|N8Wk1aSy8#Gt z6!i1S)|LDMJqjKjh@&9|5;0(3g*n02u}YNLJ&SjX#McOmB$Q@W`jXcF!*JD?boC!< zXR3FCpo)_Wy$1wa_rY5e>bH=h%f6)PuZcLQp7&X=ej_XmA@9LYFHWjP`Hk2YHpX*iV}Ou04tli0_G2e79A~Hc}SM1 zuMv&f7tW7A<-h9qO&5!@xP@nb2ATIBDHu)M;}?<@a>&lblqb>NCQyS*rwu?L?_Fb3 zZ>ozc?JIx1o;f^Y6*C224?%7KNIWQQ(^oua6*IRL*==V-CzyuG6Zwf%Y;;8Oe6liv zmw%y4H4|D&fgTaS$jRV?Rx=AZ^pKj*_84Efnng+es!390Hrcux{HxV0`dO)#_Hj}M zE-ujbJBaH-bj8*8yCyqRDU!U^J^T%)T~k}`;cdK8Nyw~s7Qh5roAyzIh(y}my!(5Q zbnrSp`aSld1~tg6*ZUrnium`h_t?PB0+g9aq(-W2>SY}PN|6iSj6L~i&U$KvALhsS z63)yB_J>QeSHmkaTX31;K*&%_p5>sUJZpAL1fyX zJpt93%|bZ_j?x!psqKVasgx-ki*pk53oVhBd70jkiTM=2V_v3l*SGF{eB^WTpVd3YIPIob0n@@&_+n=vxL$u-zHJ0DUk8IdZ)7z&R zBGwYz?qyMK!R0m`5MvwoxBX8#w2d>3{eMiZjoJ#V| z2AFgbJ&cW1L&*gD|!A0 zZ0ZQl08*{hTzRL8v^-yu>{~^*yD2~&;+YjPln#d}QLVs#Arw;hx+zpG#GF~J+?1E^ zuR$di6Yu^Z>k}-_r8k~oS9Pk$W zYjkPHJaZy=_D3u-D6ofrqaeN9`VotmWA6J(r7J)1Ng+xTiEd>*Z~0#sW0!@3Qb6?7 z%gd*vFmP!hJd(H=*P9(=pB{14EKrGef#!e|;Ye0{6TYVTGOFkiI`%?u?QUPDIg(u9L-2~c7(lsX#2Ps} zSNurZ3tJT%P+};}$|tL><-e|DeX_;Fw_Tp{(hWz=mw{qM5|ri-6D!VxSRk#fvdR-U z#j{)Yx{|)SG$VjleF_H1m8r9X^o41GM|ezuPqwp0nYb)}^jeTHLcg*tiTOu}_!U9j z6nuT;`^wZgK{U#S0<|T+AP5H{RUF87fNyuR$82v$406=`q_e+(SY!g&LMYUcVx>`V z*863zJY_%|sHobQ6$9Rh7&N7_k1j>&pSU=d@dMsvJ?s3eIK8zMHf8FU0n`Pd{?T;W zyHQ`h7$AYUHZgy0Kns{W_$t*F2j5U2EXD|N_;#Q3rR&+K4uGqypvMwHaQG}0QHMKs z@}~97CT?5(Qa*SCV?n`VT8g*w%ni7i(H5&auI2M4Uc7;I?I%E*nTz=A`80A&!Pjd~ ztSVis3OrI^awG(oF4hH=Iu-`wkWTbB^{wMKH?T;>q6prml$kq>6P}pk_iaj8UXwoy zZFJEZKBE*W0kQA||G1Q;XCFCq3baITMA#;cSg1Px#O5O>sxNw{UY>F3t7ZL{4_@Zd zLBCc^?_B-Mqz=!uz!F6G?VjU^O@qw@bkFzfT6IS!5^pstOlp+^f(wW*3soN-a8zp{ z!l(4^lJniLo8GFV}`$nud@}h(KhJWyuP0{P)``Qoc_c zfX&g|-d@Yw+MTKpsLIq7WzD2&Rw?5P6#zith)Yu`QyEx`TsS-$19}a!kJK8%_qiIo z%GTolHkl(%r+DWeh@vK6!l%Mx)pn+ucnL^1mt@JyM_j!aLAit$@oGXhiH<*EDq@d_50qS`t#PM9)I6@VBR zKfy|;vmH@Iarhis=071wJ=1~8h_&Hq4J))iI1ozLbw{gcD9~pAfa_p+bNuQ(9Vds@ z;);N2iZ5%Ya}5I8w1P3wvv1kG8olnG0xyNIu$gUWu*B-swI5D%)}}k>LWP)E=m|VA zB=Q#}hLXtAzIyE)h0c%MTM!ze#V9F3KykQLTMzkh{PL#oJ-yRc+w^a}^{}DKAFy;? z$KNhvosCs>rg(K7h((!cBmUd0m672=Rh_hz5BcY1kYHXp#m|?q-cL}JA?p!}B$|sz z$`kj9hb;f7f0(b=_WF0|4QUU~iI4icrm1Uqk53RTjK0GSC0}!1Eb&Kk7+FmZzOQNO zN+9uSB0-g#RIdBOi9VsI4~scbB|!5kY==Jd7pgTQh3fc|ohwTV)avO9M?^A`HML*c zU`p((2fjA%6C@W?<`Y(reC#p>vVzw#?B9-fM_(FuankvzXYKF7!B%_`swFC<>2e|e z^%K@TC@CC|SyRypUxxW99>1Mgx(XFFHKEo}8=R{ZyXduR`ZxzFSF?9GSu)E)pg{hf zuiVc1+24#9G_}C7)fVai?SpCeH&_RI*ISO@x%V}V{KLK?P(x(#7sKcZ1c+63c86$f zDd=ndlLkb?IdO;Tz@8&l8~C4LONK3eAE+edayxgMCw|I0Kh@I2I*6K#{IA$#>##+Y zqH^|HfMdK$2+c~ioz;i@6W!6ob3TQ;&D6qeTkR1#6@nZgX-d%^zT;Dt(CLedipvASMxZ0f~>b}*yd$RFRqhWB>&Eh{8%;47Oghg*U{ zOQLSs0FhIuZsio3+Fs^mXxDFfvk*%MqwL-#f_8SI<3~3Ss3WN^t>~DkD$a z$(~N|Y659Q#M%WRnRfW#^N7i&q`#G^C*`ynM2NaH2LpKVP8OamY^e1n-4#e?+0^zp z_Qsnu*RS&g1PH4kKkoCE&msL_0$vbM;hh)rKDs#NfP#>ro)%NkE#H3=h!^xp!nU??jRFQyz@kP_CRf0Qj)4D5y znVb;jA}?Q4P1Om3ga%V2{;TQT{mQt!e1~n8N`I$=tXJ)}Wh(?;N9+$>X95qre0wOrmlj{*2ro)281DW{wUrgBq0JJzN0`GUTTT@&dU6p-RAk+^bV|dms#$avesHy4a{Fz`YS>}ZG*c+;rxMg4a zG4I#%TuZK-(nTyh_xlGI5VS22tWL`6P&EjVwm>z&N5^u#McA+Wd~c{#zrfSZ!y4hfh-i-kTkrAk93E>MR1?Kj_X5S(r9<+fW>KTzpSO9 z)(mqou%5rrSk7! z5D-!S!5d&)+xRF1Vqf`5{~u*<9v4-;|Bs*983Y6e=71vGC@LxLl9oCu%m5mqxu=Fr zYL*G!+j8rZGB^w)t{Bo=%M`;Uy=8{lT)io{z_=osOPbmgDw*b>iG;cQp09J}0D14{ z^L_mOQ0AQTUSIF``}Kb9uMpGOUGL3}IYY<|EKX_c>8-g7ho@GLK0fZ~q{HfSX;lid z3IeqF{9cQ`S)^+P2}(o*Ct5!`@@OO2*`rduMp=?qd!PC2(03V(b4r{c@qN=L5=RJa z9B@1emZ#%_1P~A^L2?34@hz$vi!mf3Lrh-l02~#X9 z(d?XsS$FEki;?5=rin{Qi#HWce>?R9yJ3x0NgzCNG3C8NpFQqDe^8vBG(kz?O*D_D z2^+C7yY#&W&VVy|)ICT!)X#a`YwwcSNVI3Ro$thvjH70}=CJ~z7f}qEM=7-6Xn}p} z-sfS5cIl^PQ@)a|i{f(!9S%<^U20pR;S^uGWRr(XwI3ShF=jpYSE)+6MZ}fr>L#g* zd+jwyRZ<2`o^xayS#y&5+U3RYN$+%|UD3fc!{8L>qNR0AXVw3L4sPTYBIi`*>S2Xy z#G1974-gwy&z2e;v}ekWnn3lR`6`G2HR24pu!;3g5B$foV$I4KQq8sBG!MN0cg+Jg zy(SI3J$rYzJ|IN^l(9|h5>?~Vtv)&Fo$M^B)qUHWTdh%QZa24E`8uoG4K-8tG4|_j zeW#a%X06)O=8zK#S0`Ff#KH7M8k?=Lmi*foa_V0BzZ}7hY-25H=Dgj-!2FT8i(iyuVB|b|1-8~k3K!1VEWeFIo{<2 zC3%03zC&<#2heakc*)DiG$_tNP-pS~)<;ee8ZrIUtxR?loL(QX@A7+nPl;4o-W8Q| z-o-+DABFfO>i3=(E<4`_I6EQa`PE)E+J<|G8!NO@c~u#{tDAo zjVBpg!p zht0KtqqBWFkC=B%0zs*gxGVPP5EYQmfu(y00wN3nu{JDYuRczHWvL2rJ_%k0ArcI$ zBapXU-x1VdqF$zzcvh`Bh+2#t_>jBxBOmtwOJ;-O80n$oO*!)?$gzpjy` z2L1Y~eorbFF~TDZ(o@?*vx04-sPHe_+4t(+?!O zJi*~)u-BNv9e<8JTc+=j9hfOI?Iyu_kE}T|qzI>9)o%)Nn)Bw}BQVkI%mQPZ_H#cw&ZSgU+PdUwHyu5C_}qbu<#|<#e*)Tv zNCY+G;-_ZZ6Y%A-{G6aAtX#;taJrW?nm&7&?VlP%fw$c3q!B*w_#nJjd;vQO%qe!^ z&q4(Gyg}Y%FYY;q6>*6HhOQm70>NcY^);yP$n!_k1gs9S)O1xLB(Wbe`s>28ou8nq z#m79eoC#~-ap8B|Gp!7wia)5lA}%*zN*Saj{*CcP=9>164;sT%!)s;XZYlZ9T%?rydt2A(1C{!Utv}%-` zWeMg0an7zNTRV3|%` zARoaYK6CZ$&Gy}J0(eNP1L>t-W9&5{P*Xn5H&&X{Z4jbbnO2yuPL;}mCy4YEZ%+wB z6j`gEg^?kSRak9m2Q|knmDcS=cRX%5t;}CoR00_I7gPc}@zM&C8o1-_Vz`ab&<$r6 zjD-lYuoaSF6x{PFMJhcsjMZipw$KVW$}eCS59woKi_m$XzhxD59{5OH2GboXD{i&b zW>59LM^v`!xRZIZGHF?Ho+u`I@%H`-jBC9xE`?bW>>c{u)zZ+b=QmKDFrfs-dym?t z8K{z?(e~PUHn~DSCPLa^JrD?_tV@~(TV=+{>gU^$|KO+)%& z3(OMJ6_!sMA+!w?rbfkd_>BoZ{E6_Rzxb6C7DoKaK~s_U82U2J_NKj(<^W)2Q=Gt# zA2$kQdx@&2g7BkBF{BJ9(EHXzujvq~RbQe3%<7Zo;yOH|V>RND0Ty;wq2ownH?!r9 z299bGM0J|&*l}tfcHE`!K2SK(7>ib#(fnhy(0@74t)y@Jju5~LwTY0m3s_~qVZCXb zwCG05UzdY>Wqod;rr6H{;$XGevKk};Q1eD{%N2|~5Bd7Kd)|4jkZb9b`AI!Rl(9>P z5yoVhX2bu!rdcCB#oYVS>XpwOxD(wy94mmTxnY8oDPS)kRonz>9fk!M1a5SCirp_m zls7!HZls4Kj_8fhrrL`(7ah?DWCIyM%1mFJut!jN?GZYDI}YM6*gbDAPN#1oI+a!6 z92>WXV7Y!vxZ$L`*`evNNV{*fZL^kJ;P74=tt`2<*d(|#KCZp4JC|$3uDj;CZcp4l zbH~aH3pQxhFJN=_I{#Lip;;cCL!625lVd-3%!Anff5 zLe}EpuMBU()zuLIv3O;y8NPsJ*1enu;CNy4^133kq3b=L%(}0RvtN(tqb7M5Z8OpW z|7Fq0+maTIi-$=4FN?F3?kJ8V`|_latGKu`iD6 z!@9rTa3J4okUt>zl;Pq z9|K<1ct;cSAETK`1P+J~q$=F#oII4&^X0>&MQ2-2z|Yflf*n4gZ{HrPiM5Vu236IA zBVKmL6vO0I`Z0cL*pXg{>}V>?g(cG~Rr=N5w0UzW&%JOLR?oS?0#53aC@LU!#@|9r zDSJh}()4#2zCg%h*t9uUG$g^{Ke584C^0KV;}Meii(#AcP6>-5hxD>~j+?DLsqa2S z7@n!4xYb}lRGoHdPu`$>()?TeU20ls3_Z`(S-1qN=UgPH3zk83%NKdlyRT;f)%s5U zf7x|xXf-%8&6FZ~Ataghq6o=k$^LIL z`+hhf)qyxmUZRGDpVAK-j42zI)m8_Y`Vw~PDURdz0hK9cOlkUuW9}mLxqKpR?xbm% z+cU|D+;{)t-;NRISEx~yvbCr5);8Kwv9xGHndu(<3+r)OADjH-o9Sm2reN@A%2tJ{ z4qlpw`%r`v3GqyQy)!TMH=W(9Km#riqHJA;V;tMm_tOkJs-(|8LdM4QN;J#dx#+mv<8aJKlq^)7@@AOd-%F+)e zfOlC8t57f_n+OLDMdnDM%$!v$;*9>8Y<$4$MCtXml?ZQbdXBTK`Us(}cKv8s=PRTW zgEd$0ZyeN&EqOQ>yAab#x#J|R2ez-hE<1~kS+stL5!W@?QlwT`*8aCz=;wuLWm27M zPN?S;zV{*&=HZ;cQJ+4e??(Cnl@Chxr_Hd5G&R)$`I0sufs&4^w7#?@jxI@CN=P83 zNPHvg2|Tq#m>Vb2w*~Bj344!OihR{#-{#&nGiIpt<7|mtgK0h@TY@_=Jw^gVRSqK8 zMW{@ap`{1R3GP6`9`LDxIRE0adVR2;ucDJCK+a@I{=1|pv7=`ZH%#lhzf5~1=g1IX z;-Y7G3z@jqOdy*dSp3lafoO{?;GBMBYhWna&7$NOCU>*X=_3NPr9)HbaFB?!Y&~0b zPT#+Usqt!nyC(*E20KK|)>=OGCaXKAPxbLF9dxd6(a~Zy^t`^89D%&wIS(VXmrt?s z^ZL+dJ*y|>32sYK%YU!3W8W!2g+)Cn5E7S0Wj7@}fA|s^4K6*Fum_;_MQefI>xXrt zBh-Neu6Zwd4{7<8@9x6t7czkFZDTjc=_nW0tB~4!@F8aXULV&_S*n`pHzIw6Px>Ba zD0bZPWEEJ%L-BP|7>U&fMQpG>4;IpARw=+;v{e?fRMNJykofnX=N9-bq}xt$()6#}yMy74JS)nbbD zBc%VyGA3g{N>6zt_=QBI*`s*)bXh0-R(V0&T$LU#=0jrr#o97-I(Ln;gmJq z)*&$i=@#$m8nRS6oZ@_W})4!_c^7s)s`~)l0FlI|C_e;A2b2zq{kTxdhkLYUogRun}&3Sctce$|SLmq-mMu+fK9h z-TE&6=mTxPBFy_F+wRss(;A0>xCar#B;~SS-TJ;QPsT-v-a1=$luORJqmQ%npY?r5t-7Zt z4@M|4BNMhB84RAR;e2aK`fT~6HW+?^?Kb75bhtV}~0N zfNlrd%r!2DT~8dz>ve3gOqOhOIk=qUX^ukm2JRJDmy(aKyl~nE46c<$^=F#p_)L&M zkOa2+^Hpg8mFYz#c;{zn{pUFR^{)y3^KtX=c^Nr5sx&2(=@QP2HZ#bz@#d&(ou6MR ziMA~=O%?|6Hwxt8N#CAI1(q(htk%r7XjHS2i$bO_7qwb#Lj?2LKz8|(Gz5R0A_*pSK9OvbT;R^jf z%*b74?XFr{NwNtxJ+Bv}awIU^KL46z?J!Ntwuke<{XE8~(f*&SQm5=)Kd$EZ4|R5v zfjbX7furVKe|oqc(F4yC0RA?X03dGujKN(lv*$1RgeJcUGZm1Fnq3DyTvq$I#R=ac zV0mgtg`!(Zz+IAa`n~|a)EUT#O^2p@fEEelju&4V{_)ruc3Z0#Kt>)lD>@%9W|wO9 zonP7bBb^2a-$NVjEB=|Hu_#-~soz37LcRzsSo`#Blo%0F%XHMd<-4t^mc_nGEER$t zQduF$j99*B$Zr-kl2}R1%Zy+2U5Bpw5>kKwn`<+-VsXuKim@$%Y^lo<;L9x;Q9WW| zIwHAGD;RNR#FBKy*<87&z&)2r85U`LJl6Df?94Cv%z?N!um;b0S%mHT4%l4E2g0yi z5D}+;wIO=%IeU9Vu9+Q($OIsGdn!D|S1xIHQ8{M4q3`E=VTYjq*=#Oh$$H8qOpfx@PGwqJpfCIw5igg0{6p&hBp z)2Xk@1cc!}`P;yMTiR*4O2<&B+@^~A-QD^-6GB8HS_W76Atj)3HCjdPjcB5WBhN za)L`SCRZ3nkcn)%E0Y9jkc1?CB3yi zL?F&@X?8lyj%H&UZ;GNBeR+^(dB$vCw7#mRtL5xU#o4t&w8nq^Wp-y1c8jxXLxKaE zo_eHrdW;3!LL5ec&{U6*z`u6o>ThZmD0jAO{b!-|YNh|4Pg@{K!hGw^HJ;iJ?YIeG zh}+N*TC-5|p>6z#sG3~OhmXD$5pvW7TKBlcOBW->LDOu7*h+vxcCFQVD{OyFSgS8a zFP;ZU?2=dt98fb!vrIs(Leq*)$736p*I4lmyt;JR=-yE)>6)45pi2i~NBaU~DwS-+ z5Cqh|@;WY~_>Xdud#kIAr;GX~$qQ>Vs!enMh4_-mA||gV@o^-=9VpE0NFpt-@o898 zV^?nQqK3eR4b!(X<8R=G;EklRn?!+*0ukED(iNmuQ|LC3M;VbtFsLn%ax#*_mlgje z7<8d-zXeu$1M4CnG1&Z7m@MLn*`>iJV+ z5#_97i*HlBQP0G(wM|pkpr@ZGA~|rYN=09BfJ=QeM8@V34!oPl(F2d*FU z878{N6z0P2I?khi-lW+<;)Rk$&NhRJN?Pq|L(H7I>aX@dS^l7Eh`;&~tc1viZ@>M6 z3{gK>2HhS;ANGYuAEpr>)a{P(w zW7cK*Ep{ApTr5$}JvD?taR?@N^AP5cFE#-dAy(pYw;Z&Yi@KL+?r@V63ss5PKpkYw zKKW2*?+q38rEUDH@~&L8seh6I#XQ9UzZm37@NBOn68o~iTB4D0r<&4gV!(McJdn?R z*sul5&w-u?%}=}>o{d@kq-Pog$c<7(M@Kudrc_tzaw$&6)jEBLKzeO%dX2ZCcl6y8 zwmObC+i}qysHor{%xkg6nA8rqa354`bm_z$LOrngcl61SO@dbx5H0p+dG-xziNbdh zrxA8d0LgjHg+X?>=fNqWCj6Q}9>QAeLcK6MMFp$&CP2py+k$Kzn}eN#KEd@Y?VRu- z;_+GFaFSHeehqurlaVo4e6pvU2Dy@99YoBtU~QUFY!rXfd-q`RUHL#7mIyFGHlVsH zG{ZfI>q_`lJb*2`ixV$4U;Zq`hxWENU~CyZ<-_|?04}y`XtFKVp$$RS`Rfm$3V^(Y zVjWA*czHju<=>n%4jYX9n(M;UJG)e9poiFi zJ!$`U`ANGdHCcwSH}v~tIH}4NrkoKk{o>-qCXp4ljHZ4Wj+)+mQ65<(AvJ=ccRQaz zK!5nq5P47OVw-kRalqZS&Bb+UtFPdRY@}ml{RjK@cl}t|2dua_IGDxW(?@m^K9pxh z;~eJ8kn~i1owO!Y(3SB} zWF-hpkG$Ub<|^Fn;rAYhZ!{VfTMwttaYjd?0U8CIFoC?;8zED8~uEbe8XBWpx;rlhtDHMt1K;@8}`8~JbU!+K0|)e&Du8T zpOJ+yQv>4S?X$8ucx=Z94t*stu|hKAhm^Pfg#D^%nd#lnvz-lavQBGcR~z)5vQdyO z1D$4O^o0Fzec_1HA6X4j5s41`r$c~^txapFLsTeeFkFO$9Mcz?y}10W*^B>ekP(HL zWl5I>s}akr2CsP8@!TG!sL$0Dju~FZN7l4!qGjbp!P3@2g z`w2+PceDA8h=k*oaAUH7OW@u@fE%f5a3&D2#-zlr}p$_RUMvj%yM)RjeI1Wd?; zaKmaGFJ|MW&xSYtbWicxQVB%KLp*`$yejF0fKz}&{!3NYC=l24#F~$hzfcV60LjKq zRT36jxNZJxy^$al|3|Dh|DUpKsiM34vH!cGCJp!MKfE1oZtBq89kjy#)uCfJ2Ktt_ z!wpUKqS6s0>TFr(|9zy6RE+d*-VTeI@lR~E|2iY^r+IIBJNQ)U0Ly9ke+-QDZEtwn zU(L3oeb53e7U>-!ogNfw>g6hAzM(am|B=)_5hE*Zl8S+3!#JU&c$@VT41YO=D(TLD zTLGax*D!!_QB!*>{?cBy*kDsZ^-^lksFfNdifPqw8e)jJk5H2Kk!vVGuuvT0)Fn+# zBG?!bTmFDlLr7aH-l$J)CaJy=gU|Da;Uwlbb)nP%_Tl!-^8aNYdaG&%13tN8*ZXo? z*6fa}>A&t^Z%xNQKq5!18IdE@WWyfmgCKuuu?W&h8G#wTBNkrvs6{vBYwtIA^WSP} zQqWDNSo3zHR1?>2`92u3VSoaTce$OF2y2UfPD2HL;Gb@xqt%JzQNzZjUBK4A-X7xB z$U=L^D4?KdcK4A!E=sDJ;6gQ2EwnpYbxi7+40JpmP(|i@GZHa9U;D zqHVdQi#%Boj}T0)f<*X&FExl)aj3W9okw)1n3k9PNr?VL`9|E3vU<5E>#>l!hiaK> z#9IEZdWz>RqS!)}l5~kY5vbenUWLH}E@?9A?fSBWm>7VP#GD1dJGp|(8lR%E=uJiRu zjD8?h04~ogc~o$b4_~1X$bsUGyUy?lvX&8O(!;O}V=#{!O{9Bq72;mY`AEg0+S4pe z&cEM>lvR~CnicCXW+m}@@tjR?$!x^c1rVaduZ?AjF&#MwIns-Jv4?WL6WPp)&gJTb zA@C&f6vwY;{S>@q7|w(EA@2k6L)Gg1q*+cfJn&YSFTPJ(MW!dD@X1N)R&P)GR7%Ep zgI!Ya3n=nMhLZ0ac}R48f!#^A4BE~lxnNa@UQgsw4_sl9vPTxq>T?DM{dh)uD-#6IHbvYg6shKm@ZML;z;I^k_VV zoo=~PXrEZ-!f_8RQ71SMHq5$U>I1ex#do9dBi`4!^m_h%_OpuLEJh_!+r3u&1&@Da zAFKHRZ6T{RZ;mc>H9WB|HuyJ0fd&9A137p!yRGKi%FZ*bhJRKT&4z0D7hAQakLoJn zbFqdu4TYBPa4no+&qorrCc_7HxtG5#n0m&-YlDFhj0MkOB*q@kk=tVR0N6tsvj&j7 zgxoAyXCK}fgvwal15(ws6|ByOkM)h*-ZYvhEze^Z&uV$&j3d?S&CmK!E+7PB0Ukx* z#oa~bLFGlsx`om=6~57zY-h=$4!SR$(QtRJy|2qn1#_q1cQBFLG>O3CnTJPug*E7`40NRlIyFse7H!haP1MwLF=G|&&aJ+ z$%2ZsRugQ9ZM;R6S4Fs%D@&!C^0l9{a$kNxR8}u4NCs(@yS!dh1#3%aPA6}Z1ckM2 z#djQt&8cub1M4mI2Co9SVCp)01F65SMcxpw+hl2d-p{i1yr0l-UY=9x>B<`RK`Xu; zg-H>O1_mZ$3vc!mJYG$eVLIR=m<|Mhv9=D{Mes6w;Rv8_gs#Yz!LZ;S)Ch-s5ymm9 zgnk26(S0x3HKas=i1t2_T|=RL<0Mg=M>SBYA~z!Z;RL(Nevqc5KmgAj_G_?`A`3Ap z!g~4fBc;%y6dopPD5M6H0FygSsHb55B3ZGBP1JQ>N8*A(`Rp4%zGoOfNUByfd=gjS z@I=^k_AbF5_v4z6{CU3r1#ks8>9d|tyy@;P|NR6bDxU{GLn{B+ilo*%@=Y}n=O6sW zPb~Y)0U^J7))SWQ&%YACKMVM@?&N{Ed-JF)U(>gE&F~eq;}nR|aiI9GYwaKfu$6t_4rQ9JfSo z(Dnfh_NTYnZ7MOgjP5U78-H|zP8LJT%Ll4}jv0pHgCBXUWq;tUb#P;$%BrDX*^LxW zFhLyzYENAOeQ+E>s4mb`{MDW~N7xC74zme8eIRwe?E87+?-~c#2^EuEF|HC{=SyF= zo$F;j;S>j?&XL}xot2sIG>Mj0+@yM#|4i|FW-x`4{a&)YSuMGCI8^q9g$YYWYuaDUL= ztsFsKjh=$EWB${_R4rYdqiK4g@j-T;={B7ePr>cO^TysOi_4{zmnCh3*Jw$rh6f(& zy1G$Uo5B3#I>7of0r$zz5|{@gos(6Mk~Qzq`x=4}Ow=_1x=n&oz(J}r_%;rTH9Obx zj}3B^w8iCSe`Zfm$vIDfr{pyBt>n*A7x>DUyXmLL44qgyF$PZAnZ>P(5o7gX&1?3D zM-V>mknC;ID`Q4Ocq3Waa-l|TZGxFhxHP-RBqC-nr$}DOS(d8XI$wh=?ZU&8f+5yl zpVaTrm}FH_zXQR^{mQ+|_?!cqZnpxB(hItDO^eBG*;5ekFF&ItM->`xkFOFBqLJNA zvYT}8)VHP$mwk@?62x~Jf@+xPQUYOBX|mB{{qdM0DVKwdp0X~zP*X2jkj!l0*1w7! zy9T$4(Pm!BLB3Q&AXx`%fj0az-n544v}DwK)juaBVmaaQ5{8&f$PPhrxVowx>|IZiKi4H9-xJJ;sx(ZApm{l$5nZyK4~X zHD-aT`D)F3ckpc|bjV1Hj$dr-g|TG_P$AH+rn{mkR%XF%8>Pm9AZNg~To_Y9T#Vp- zQAF?+XB29#!n{|fd9`(+x`Y4zu_}{+C4_(yYt2T7@SQs}1>`7DxHhMR;My^8SNn(v zUZ9w*`yQ~hA$%l=rF|iMbbp~;ea$GLF zUCm>mzs~!Ph3fg(wrlHb8**>zwE5AWB9u7g=M_g9mBuFM`Qh2oIB7RyPgAgYaw-?A z(;?ZKJLmv~g9C;+AA~>@HggDPOYVy^*AWUN6_TjX@tAsD;$?a!;quonKnSRoMk3-? zuACwU#Y>u&X&qEU!-&flhaq>Hl%s1X2G-iQ6n^ZjOI{$#^gokws#;9p^WesrNy>v!j- zr-$d`_pagp)zd_IJA!`Mj@`Hki`Ct_#RIg6SKybEC`+|`G+YszYvGl_3fGaFII58i zYVYw}LW@T**ms=G59K2xg^n}2blIPC+~T*Aj3(UcYPK!`uj7uavAoE>4dtU-iG@1O zeT0QbzY^3oo5GDL(6h~TvG490S)weZuobsZw`72}MmDS7=8DrQwko+5g7a-E_lkG< zxTuNyVfgP}chPd@pWNu&t&3G!-FuC#S14~d6&vz@m8BM97B$@KcZ3$UNG+srQ@t&? z+eKG^cFFE+Gw<$fd9#7Dgf}3HDk$!=aZ70IPtI6gw98U+Rld6SAE4o}-h-aEylLY9 z>gXJu8{$M6*qqUdh)lG|LKCHJJ5qa-&STsnAVfb|qGe4!CrcrANDL`ln!+B3@q8C? z&4S*$pi=7Ix`)odBO^m4>flagO+OWE0ZNBcI;tk!bTU$D}4e1Gp~eun{- z{4;y9k9Z>7cgg(8;0yn>x^+lQy3Prg2ZeZ#Rjvy%6$yLpG2D|A$wy8>4i7qVRPzC| zkQMRIHOWLHwD%HX>d&MaSC+|=?i*($o=Y^Pe3KHJ`cW!-J)95f3FzTAERl-sTa4Iz z-|4ie92v8`P~k%9orx-Xx75ze=N%HsZ9INxz1T0*k)Jkv%m*=b#CTa)ZBc*7x> z+R<(os4Y^-=dF`ko1gPF9L~fjF`|PAc9}4u%FR+M@lV*8_I#f~pk4!fkvXlrE!BX) z4t|z!KgqC$dD5c>jNJ?UM_B!@_L+q1C@Ig8TcBzMwrkej8pf*H^M>x?WVg_%4X76( z1$hlQoZ^e!O!n{UFQkrd-(^t|U=i~OLV5WfYrMy1-q4vSrx<%7#Sr5fqKJ2G|A;mY z0##v~T;37gDB>nF+!8fhO&iS_?{kpw?5DXj(Cq(jQNC;5{a2SX*c;#!2`9%@dlSJ1 zFsy6=0j>~71v=4MbzP(rpHwWc_Mb~dVlKry;&UmdWO z8i+O|nh?QnVx;ct&kNwz6szI)q{cKq6hv^Ju+lm?fBTlqZX>`ocU14s<_eGu7TqI0~eU*@B$& zlcnf#9nm`9MbWG}lJ6$saBc@vM)3n%V}hxN#~p}sY+ZyNHnH?5p2Egpc#vc$VbOIo zpAO>@S4$>-mq%jazZ4_4yJr4rUu-GVM8PJL+l>HQp8B}l{zoWO8O0@Ada_WJBxDgo zTrv?!Z*KpS!mQO22TU=aSvhX^tofh_CRU6&RPQ@w@#m9_3Sn=3b3 z1s}m$wSu@^1UiAEtTMstNhVxcDul!n8E6QwU|WT!CT9^a(2}!Ag@?Y0(kd{*swf2* z3Qd6c(v$V%f(}HeWuY%O&K~_LNVv~IBpC^w5vtVurbP$m3`*ngijB8VcbJ7#=6`jDLH#^#Y~;5e9Dw1o~*L(60Qdh z%`qYE-rRgLx-VG1QpVQ5=BHz^F??Y5kEaTGrL3k(b59`4j%u`?tdVyuZ)}Am0B{nX zzq)0yBq`|Gc0~AIXQ|r)sp?73*8D1wm$05(9$f|#zN{zbx8^rOCYpJpCZq3@6HbvX z^<@2c*zWY7o}}7~STC^$MB$IJG$#9yb-1wU^VBP)LxosQ)_~8$Zb^)`_j{4}9jvxB zeiMR1X-RHmKPb{0ueP?Ei7h2R07?$#Dfsb>0a?@_i`1c(RXSs zZ*_BPX&-9^_XCLMvzppFg7(~6sQh|iPIZyDz10zIXVtK#Mn0whm@5Rj)?>Y0M1v|M z$D%(B5b41Ms$ktgPu-x4taAsx1Ibp?I`C;mIQ+OacPh=_ws>nUk?1Qnwu$eDm_oQ0aj(TGp*486zU zn67KJIQsixL9R9C9GAb@@?kB+Y`N`nj#&z{O7E(jivHYF{$v?lzC|^b9K>rAz-OxR zjv;H`3(I3F%G_aZxNmR(yjym9&ZW0stbDjcD>9g7|q zE!W1ivbiqxJ#sS@j3!(`3ii*`IU1f|AhNqjQhTw5c@1dJGIp12+>)(JQx~cHahnaO z2|Dp$bnav$h>P*LT+Kq(HkR)mv0URON?K=sUdsZB`Eb7gV?Q@xqruCyY-TLqxi2P8 z^B_vzPJuD<)Ym}CC%+9UemX~t0!1AX!9vK_KFgCe^%r(1mLI4Qn#>r=d^+)?6wA(+ zv&o(KXQOPIw|xhiEo0#`thna8zzSb2>B8Eqxn;>^dpcoLbYI8Zo%mqGx_dcE$d&+2 zJhq$risrqPQ606578AD3xy(ZeE+xEe$z}rV! z6$yVQ9aj8PbE{A==8ZW+*7&23tIv%)I#uw>=(R`(1K+P*bmZ8_o%zn8uEs)*b~I-Be#VS(eC%sw z3oH|hISaoSmi=$}pisukNZ+Q&STl^K4$q}HxS81DI{)CIkxYmXzAUHk?GS;Zxc%`h z2*Ys@S7lIok$vfGjEXu)2z_Re@6%u2Od@+w=^dEH6%Eb|(3p`F=5) z($R+$ab}qUbz+Z-Ne_scQDF-X zU2sF1UD_eZIG^YuQZ^9bRj55GC;<_m5O3& z-_i{xzPPPj3mC4o@-ze_7sH|;tN{`~+Qz3ueeJPz%n!%*ipmIMfxY;N*-;cCiGmr1 zoviGCWV#?KRErWkerG zlV8~O!L=j;8T>7Kzc)XaoD(S%9vvRmMA1ene>w5Es1bmceUezRWkR}k&wg3IF zo-QGoCSnD8&;Rez(#9`iseSmDNQ6YMu&3*3@6U0tZ~E|&qHa?Chg5n_F1y}`k8Unq z`G88N<*?Ac{BzB|tJ90Ts;A$ZR8JZE{$zja%a0ukJ~pm0{y;CN0V}`q9?^`)_aqV% zJ|^Ht?8hJg?ta4sGgeh1*Ex`JbV)~zA|uvlQ`bP4u*wG}!K)a5JsH~;v+#a=beLG^ z1u8HQR<1o2B^nt%2P|ac`tkj;(FG`7t0Gj{Fb?v{M?;pxO|p zqSFzm@HTfxK1Bb9`24bobMwx9c4pJ*qt#Var;ndIdhzg;N`p!!FTp=qg>pz-?x$}1 zbisUwgr1K2Pemx0?g>!HhJwtKv5!(X0ooJ*R0#f=57P4q6lfU{Zi)cXZ1tXI7iV2O zFbFP1*r$~^^=8Y(`|>2yQ9Gt$eDX{G&!yjkg=qU&zdh0vB7UIhmi;jIGo8bs@YQ6; zvI%C3za!MHft{UgdYQ%Xj=z)ckUaJAeuoJTlPY^1iaQXGr7`_mYG&WLgy)FS9Dd6N zE=<>II79;i`_4huqFE2a0P@E9Yr&)O<;ef`ao6D`*3KBA4Z zZSx@=hOjxcoz0|F=+u1_mtKV5G{k9;$W}n0EvIalsqGXUl{%gJYx$*@3RUZY`V^+G z<+h~ta)7yd>Ta6IYGK>v+*E8nBx(gT${QiN@Kq^rDod6zU= z(zMWciLUZ5C-@Rvb;?6s#po3xWg-Qx5D5n&0~T2O&7B+jorL9L&RU17&!?WEfEsBh zN1qsXY|@dbE-?w2Aj(fAp+9g!0lW1a-+szkO$U;(O0;~}KzIq?(k)s9*;J;DWT2<* zKA{F5nbLdqZYU7#>C`)q^tSOc<%Ccb$xh$;Cg>ag5!=Rt;15qzFkno(}{VKbBC%S~%lE z(zDW2J$PgD<)alZAAg8%kUj$eX^INr+cXvTm|*>Y=c)F>RxDs3cvzBCB3_%3ym^us|b+m1TCHhZEr2iJKc|q%jBfNS^YtCn9_g`-q(xt8voFzd|L% zO4C5vtQNl%SJ85crETV2F!kvBERdR-lmz>(h-EU4lk6D;6L-ms8(Q4W?@0(N`}R$p zx?FzTCkXWP6@;&+0!5O{>3^hR%WkYm4iRL-a4C;6aN0f)t$(FT8nr`Q(uEUG{M)P6 zJ$7w}&2=WSr}>e%lCL!gM%Y5mrg8oECh#Go5`I5=FRhniaD^iXXN-Q9xPrtOH1o!a zZvc^?M}&oFR^=rcu4nPIyVQlE#C)5%Q94w^ zof4b9>H4F&yrzK#8u`B28~$^&j$2QSw)nq|*74*&N9(wK!RdcZA_45vAz0EFg8^X+ zkfBHhfC_*hI%Cd3Suq*E2arcG5@gam92yxrZR8Da2$QXOS8j_&sKi>OPE)6;`KVTa zrlQ2b4J@{q^_%#o;UCsu9I?<^Tz3mE7iY{_$mS&S{e<_G52lwvgD6TRkXbH~-|0)`E1!7M zBmQ7-CGjt4>TZ)pdK5dH#P^Y7Sso|xljSZsn{49Od&N8drk?WHA~SZU$hK`~UzqtJ z6t^L6p4Q!(c`|R3o0TjznI9Gez9-sb$f<>&ytb%K*fJJ%|fJe&{jQ{4+5_1)tf zak-W;^_))0br)`U2WYA?Z?-^_FU$}4vgU6=7se$Uc?ok$U!__ zCO%(aX)l2NKuDm8M+T2Rgs5T92oxF(cN7{JnpY~+c zsfMbkuOT_;&Bvlv=?xJZd=%pkX=#P9)%Vl-z{oj0;0~his4NkxU{BU|)EbgwQL2Is zp&PP&ZDWhbE z^OL$z`Ey%yr~O1FDej^Alvq-yOnKnRPG9yTvPicHN!4kUTEnJ%d753POq3gzra&|O z;V@t`MNLSDC!}DHwNpUjQs}8@>2WBOhKPGUqxNnw8$$2-zPT4O&!QOz9RXkkLWtmq zWvHCzEmM!kp`6^Hzo)#gOZe3$`=0!_U6|t=-iiPejZ-l`5rHMuCn_j)k=)P*rJPuv zAHFQxV(zU%76Dwwg$`H5prQqER&4oZE1akt+yZOuzYZv>yp+x;Gp7eks)^@_p$w*^306DNah~NKQ9mL#Uj%A zND&hmH?hQYeyBVvjx9{*ld?th^y!pFRnnVfc38_V(DDk3d8Ig)*&`zxK~d&q8nb5N z_j}qS#FN0!!9{g5`idPVc2kPT%?6rc(M_rP4Xq1YC!#J2eha*U=HfYsQ z?@^3emS84?XU=C;qxkmXEHkdKyQBD?Q_x~Zv}aO@?QQ$KW71wHf)Vib_pygPpE|*? zep2u2Or!-#%ts}Io0BzV>^mAa)lN3PaZ8TS-2C-YG8z-B3L0FVe46D z9nH5j6_514N<5A#N!Xqm@5qa_NiAhRs%e=8gUMbd0#1rT=`I*orH@$p_NUA}nva_y z#*Z`ktAvA(I_Uu)XJ)t~G7-%we&JU8P%lZtc|Be8k zj?Edv>*K8R&&HP~#Y5UrJd1L!LmZY--XktI>^DzT-FrBQ5wZ#_e2?OIwrva_^=!cu z(DOyPW>1!tw+mjh3sy>RGW7H&CrNzcv_A`czh*dP?zpyKcbVxu{+8LpI5;ys>aEN` z_ar*$LxRFczV;pAB(z}McMCIpTe{*hjc$ErkAlohV@5k?dqJU*zr45I30k|JD=o^j zM*TfAYx|o3oiB?U$4~Ne=xwfA`I#|b$@HvX9N$^~O(WYgjt>vD&Lqd37$LIOhl#e0 zj*lRQ&azHpx5x4GbiyGno*i`7Ha1rVXd25y+5GX+VQ|l4pN;2#mgnkO-UNP`UsR@7 z+mz0QvZ#rChtw+ zFYycXS)F~1h=EUKkSkF9#)Yxjllf;1zuyKHGYI)73{fi1pjE*j!*o`Rok_xaYz@_N4Cazq{jKwsH_pVQr;Iwl^51Ls%6(@#gt(*@({+nG0-hg;BUiV8XZ&|;$;vi zbLx=h=FduW z9Zg_!@hkT+nua@rA+Ea$fu@{jr?{0q#`f2q-rnUcS}+AQx3KT7tXN_0AOqg_ftj1P z-+si6*r)4!s#{c3H=l|gQ$4a`FQVzOqL#Udm5h3qU761J?weISFyu&Ft~~_|sPMtK zRQFze>#eyEHDzSHh5zfyZto~s%@w-ppUi{XEr{zu%rt|Ke0tgi8JPCl;GjO8V9&kl9chc=kE>YqOg==6SC#jg$Tk8I^q7BK zg0<9R@vF^Ea&l3ux3tmXE7IgA!LN=q%Tw5J3OPk3-=aG|eN z?nLfjs5D=TI&R5qvO~yn`?8C(cte*g zw|s|YvO>`*^=e^Wt25GVLpHmeWIsDRJqB(461G`Zj>WzX;poZg{4zz-evVxBz#@FN z!U+R<`sL_`#CP=T^(gmua^}M38Lc?gA~2~ zAW&d8fP(`Q(H=vRgh_O_mY+bg8P=}Yl^Idp=}hfF&ely#;p#+ZB(y<}D?H>LDMT_d zITFv6kjSi zOMpKNo=(WgjCS$tHN(OXSQF9+rKiW0MNB`N@2=?KR9geSt$&*;Jiy~&4WXT;zc>Jx9VK zh@SD+pPnOflC<<3Aqeg&W*WpnmMquAh`%82US3PT=|bCVE=m9+2z`5B$VLO?aKwl? z1arK0gK4oLR}hAaIGPc_b>6|Ux;ObD?PF}NcV$#sUHRUaEiMoqF=Jkw{8G+Q=n)E8 z+8jPSJLDHTX;QKR+lzDKp3$nbb|<*4lAO&jiKq1=A)eM$^I_#f+qh2h>1DFSYt98$ zaioUg&ESf>o-CmF5alF>^jYdk#gUmZ+aX-N7@*y(I$>yak1O$2ax`a~OB0jt!LMvg zPxCyPtsw6EHAAZovJ&5wT+2;U;(L!Xv{G_6kQq{3h}|_qg6se!oCuAb9@ko}T_rH7 zl59dI8fl@dK9EYHJAZRYZfzd|KB&H7ogM?_bPgRoVh{XhbNMH2=6i6DfLYmb zb~lsn+fCS))-yKqtFoM0tY=;J)uuksh1HZJcoPBvq?f^5RH#y1HP1;9(&2pI z@@OL*g|%6Hq`!cS4adW3VEuD~9nIp~w~NuKj_A}?6fhvIQdF41UL=Gj%H(tTIQifm zEPgI;fMj>{T)vAUAtses-{FHN5vM5iVl(k=!2Y8@%k=XIAydn#4k}z4nf4^{Vvre2 z0ROjW?m74t$p~YPOAAE;g=UDbTXXpl*_w7ECik+#k_n!-l9hbW4S>9j9e^Jr%lBa7 zb&&_45^V$U|12(P)Yo$I~!@# zs$=4l<^csn^RK~EHtty_JRM>8E8=~nTm8QsGX4d_ z@|cv;B*mr_MeOPweO7bZR_2&e?VIeWhhi&5ByT*#KK?u3O%($|I*c9vJ0Ig$9py7& z@|ZzI9(Rl%d+>KyK-T%OsJHkxfkl_Sh22oyhV6Na?-1{7L}<3d;^`IT3QKPaPf*p_ zCENcPl4xTGe$M>f<~z0T=rcq-QP^B5IVOtZlb9|J#r-);f18iUPOFr>ut*pSG!h7Bd?ueW>9bstrb&X`EgDiOt*=HV&Vj z#2$o;2JI|2?5z^pOj#NRI}kL!)e$Dv>8;*iB-dWbQ~cGhIQ>iSamC*owsz1^8}`K) z4nm8|?R9-?#64~7-RB1G!ZY55ltA_eIkj-iG_-J_DPMAFl`$m_() z(x4?2TC-(HkSvKrB4Ta#=TdDM(6AYGsouJusTOTU5%JnK34yxFAAogymv4j3^6a~O zd;A&qE9<2F|LEO;g5uWQ4L2)XZC50h)*41t6g^U|3}%I$3=B4@uO#U24x-b928|41SJL$ z7ot%dl$jAUYK+@8F6g)=7?<3b#Qe-1kXalQw-MVlqNpfIjM3=C+$2IoaElV-mRyY( zHDn+3xtzzLAL}#p%qtFi54jAV%>bazX^K>v2WRU9MLRk-^yd3om4Z zv4Ht}nDuLsInE&3b*lD(2UL%f;f9A<_S=7{$>lG-^gyDKk8t2ZJBM#eUaE=X#j=O` zQlp9*h7Fj;Vs_oa;3xMNqNNzAws&#dMq}U&4V|L>i8ecH(N!8aGKCB|<)2%uGYa;6 z7?*-%H!l0RgV_zIe(`TxREfktq0xqVvV$qLj4Q!DXltE+T(4BN_SgEsHGg@DIC$>O zpGy~Qe7?rn0}MhNiDDEtQjDS+BC}Y=J6OlJpgRFEQwIO7~#)B|c#CpptRt@sinw18xr-i!;Eh}EqG_N=(zSH3aV^YRgen6$mM=LD< zI)(wDJzJ{U#P+?#$Bp~|s062uT2EDb)XnROY2Tsp|FxcGAWB^_M6!yv za93#d4ykTG+N~L?(yTc(X$m=~IK_!y$ERg)w* zEm0DpX?7}1t8nmbH(ysEf|frIwU;)9>q><2%$?ej>TuKSDquz>FnB351Zr@v~} z=50PvYTR&-4SXAP&cUX=jT0Ghd0xFSZX{UN!)aJy(O1Wf1l<&$Cw>o}t594|WT%vv zSzI|)T@93PlkmlZh;kcFWJL4a?RKKH8th@zpnezYoexV~GTY5d2N%*-B74LXV4@Ii zO!{U}D@va+w>|5DA;zLx4Sl)`=|MByKZJp z&NhO*yFPuqXLiHE_x)6WDp6O%ENF`cESJ^mryn$*5)Hu~*>LJE5gLi729*sjK7`x7 z7YT81fqcUxpCfuv$`QvcQKF&C_86=Z`|Yoinxw6e(1xl97a6AvhZ$f9ZSJkY*B(bW zlop92!AwZy7KXHv2*3(5I zth=v6{mUNPuEj}SCY~?#!RayFW@iH0`;!YQ`QuS6&Wz@%KYV-*sGpY~ZFAnCEf@J8UvV z$0`NEpAIqF^edfaU}blR34UL~;gWyDc&XtaEFm#uhf2A49T*ez1DB$IXYb_kZLG0y zDzt?p&qj#}Hxs`&Rx#u|i(S*+W5PySraqRYx%udA{@yZu$(>`~+R3v~z6{4g-AMLm z=!3Tszhpwgii;k@N;))3Cx*H)e!2})lomb?2m7zSy^=?ua|u-LgHlfEqdSIUY*9Yg z!O7-s0ji9f=59Syvb~EUGN`9}7ws_MjP`~!P2QMY>(QllIGoccINUf9^n#L;8B0|_ zGY$UKKsC8iz#x1~quYe0%PJ*2a)~$uv+n;8+OE9{yejii%*cCJ8beyqosOTb`l%G_ zxDe;FvwmmO7V^NwR^vwo7QidCKijrifqiKJ=yS2_N(Qz|_%OMpHkMs*1a+O(U zbH%at1$?^*V_1Jx)`*LJDy~l}!hJr(^-*1ajSVZ{Bdqu&Lr`LP+nGl*(X|r|g{KFs zxWxI8OxRUZi0|~L+ggG)1=Dey-O@Zg6E{13`5#NK3i7AhCpXWp1WRr86?p7}ExfV7 zq~-;xbpCWmn9TrEM)=e1InB}?E|8v@U>sZIfI9GCV~qL;A}^2%hlOepr}?*=?F@P@ z9>J0&A9vCbXQLz%$MS6amXwkOSgJlHg(R@kBqh*gT^r7|?@8zuS4CP7Z|K7-Y`C4* zcK`=lFVfJWL*s^77TyW~E^2{`m>yCEynh@X#wN0Lc3c(m-20LUqo2pUMA}qT9E~Gm za)=lD-37LrG#`f9*pz-s{4=vwBK34s#~&iD@zB(9!)|~5%^weVu%t8Y{sH{uKo#Xz zF8lDyLUJ*!qI>_P&GX9Fq@ein5f*8kH|WN52PIaLwtF_j!T;Ie4ZjwdEaO6XC?fNK zjoti;Na|>M1)JsMtr`)LOAPFmlfMxmB4M4H?8AZY;v1)C_ZRWqq9y!<>A2gjl#M^= zhFAAUTmh3Z)p2aFi%)J-(`VO`q{Svv87C(y!B43d2_*MiyI9o+oa(@0J^Y$rL%%;jnB8O*~$_Y^A^QB zccR#m#eAC7i;B+d*kboj!(si_nF@V;3;FNszg<$aubX4M z>>E!v$8X%rt5urP05xJE+zq+3Pp7i|2~llr`C^@_Dh7|%HAw{IG^YCw`;zS*WR|r* z}Cwc9a%zDt0Grtza~3pk1LKeF)^j&W%lt(erX%7gN}}bl-J}J z4QXmFFKzVEeyavxHdQRg%@2(gv46lKzaTOE#HeHBF=p(MG!QdyN`;Qqy7|aw9Z`Km za{8(k+n|?wC@wd}Hrq;UrMSf?-B&-l5@9U-IbV}4npqP(KkRA2zmJh&n-PN$ND^YSP<<-#c zkD9T=xX5(s3OiEFzvNqJaAUffx3xO>SH7{YQ9{m&>Fo}KYx|ScuI7gZia2B#68V!# zy8PaU;pktSL4$=YWH=+0a!g}iFn)r3dhkBITaG?Oh4zTAo z9tCj!DrMPg`8dLpS!?-jkrJ{#dt$_qT5rk9I2_nW6{oOI*7Al?MulXeM;ajsgYs^t zjRb?J<^suV)vl6KV{VBNCDdFWN>#O!QY&r}y5N%ZYMq9gqJOWxcVsda*2iqvI{ulb zLe`YKWM5)+eL%)AL+pNksI*(;XNG0#Zr=(~bh53+i3r=f4hNqFqm42d1t?fLZe-jE zecQv(dzv|qdLVb<(3$}wm#u-mr-timu9R%OU%M;EbtE6fbvug@P*9|{iGFJ9<-W7Y zN|I~{WgvFCg5P8Gs5!$LW7L4N%c2fl9C_2QX6U#PlQY+x0#LF%R<{o4YhvC!p0!!e zw^4gbhEM*jfu*nK`wYE&$4_>-AnkQOXY4IGJ?^@s+Qwjz3T}&yhD5Q=+^yYFVWhsi zJ~gaHAFq;oOH#*P^5~rAZWyZ62kfi$I34ts+#Fp{M%in+O}!z@tjvtFt3*#XphCB= zwpsO10=`a&yzZA&phv)LzB=L(dujt8=OZ+5g|Y!Qwj%V{7S?QlK(|-4`;fCwH^9M7 z7GFxQmWqXWKF8g=hrjB#=<%oA9REa0?Ix&aNS)PKs0dd<`s1Z%zDKwe6f6+7*=Vve8a|W!QJZWMQrO903+f?%yyBF7N2uU;mg6# zN^D2;Zp}5E;7SOWQ?kc={YPKp6W^>=m_NA}cFJ`^VIJZ0LZ^Pau}cjP9{S70Z1gy- zR=4x+-KYvnfwr~8Sl7(&b4DboCdow6nRj&G`zGzdjiz3nVpAv23R9$~$fWgrRwuPs zGezp|Ms)W>vAa8)b=S<;mQuc72We#9ntRY!$g1`ErZ(qLN}mfDx5-Ssm5dAIU#ao%9iHy|a~{BrUswJf_~p$7*_D_Eh%CEO{H>pJLJN3D}yv=yujP zVWUp>B%AYz4WC_Lh1+tJTyO%px`NNBdwIbah4Bm*KV~8OP&Cp_DDGHWVBW@A=G~Jo z$c(z6Pf*JB@%T$t%IWUE_3ER<2MaRCUHInUxDh_1ROdUIz2})+(MiMUJ7+2iIw{pE ztv)7EM!pwyckYIi232w6kGpT(4f$l%;4yZaK6n-9?@P|qq{VbyO@iAn^|{{)jve6K zf41Q)t6Olo`MtQSt+jU)N41>7*or%5^>=VmLCsoDl}{({u4R^Uw*oDTTW|{or}2Gp zr{?Z5%apsEL$lyS%Q60j>L$>TIBi!Sl{H*_F#U!_tL1ds`47m08hDB8WC~C!gIGcf zN8-Z9eEFFItrVHMY0k@mN&#A@)%`lc09~(!(cKyDtIvqN_=MS=W%RLjO~FflSZ8;=IrqV0T_ zm#`$%)mTf;1H@v?(gUlZ0ON2Y2FC@5YVNV-6J0I6|R!7v5F#Mb89vET#K-iu?Ynl!uNfrD%XsLO2T4t@w+qKka>v(lJ)8{Wna6&l*4Wc2hzZigu+ z4Zk|43HJ@Et?c(5AP02YMBJ?UNM*5EH5C1UcqWKnLYp*QF9O>noAQ3C$Ktn-&!6>3DK*vy z5{tw3?&N1h4uK|`>o)2frz#Ap)~!z9;0uS~9m0B-^E1Tg#HLr zDtjYOU>+u2_(F7-ftJOZu=#U`pCAWgijLVso6b=rayq$67nnVi?Rb|@3lS^KdEa9a zyXIoQzso-xA%VFg4crDixo{6!DLOcZvh?@(UIF5#lG1G~-_tXbf zgyZao_hD=*wNglpQ^9YGmk*$Vaq8z6!l~8+)l#X7yhW`0F5cWu%3c7^6WrUL*i-3t zx`62$z=dqhE^JVFq9|!)6}y1S;)`Jc`(qbBXuxXm?oGb9%ac6X@Fi=m&_125Laf+@ zd1=yOaKRfs%PI~jh5n9JjBC_((fo+gcWI=9U3}M%9|I9E_h?==KAf_ z$>5;fVIO9RIaP-)zUW%)5)W4t+iOBZeQ*pnja7Wew~5bmslFsJQe5(ZklZEmS@+;K z=&b^7$-OZZBiX|bd7dsHQzl1?rc4`uCU-jU{V@jWjTpmpnem3lgPR?S(j!CtI4ive zG~%$>%Uxwd#NQInF!6Uw%`n1u@?{1qGx&g`)9Pd!lV&p?O8(4__Xh>5^Q! z4nJ|sCWHA+ri%^V%Xf+Zd_-5O!$}6l{ds7#`<`LT_wtk5Wx5vCsKl%1L%_*8%szR( z?(GwxS}eabESe>M#B0*ltr|k74RmcpQRZBo?t(+Cbt|gv*ig-d5cPX25}nWbv>Yv| z8Q@gi+tqC5NBmH$h-}phNq-3|zrOzyL`)WzT|JfWOCRYV!?E!$hqWKnoZ)3DzA_!4za#_Ui- zCac>A6F713>H-nr(>x-ezvFXoOU4 z0l>}PofEBqXnC_9IRQZP43TJHX%hg>H~_G;31D+;G|>Ee7667vQ(6zS4&Z=Uq=I=Z z%k63N$Rm$&36|w+ups@(LzaV2!E_LEUsn|!6T(d~CFnSp z>Bn#+?0g2Aruy=zN)O)((wFn=sKXwfv`?Bh$Ki?6$}X~FAA`Dzfi5iVqbOHPQ0N-Q4Xp-VIS^Cbm13cn$eUd)e|E%e$kHO8X>6E9wtv(LVVr$M< z_3`vf71eBE(>~$*tLfRio$dOB@1YStBraz^f5LatC5m$5?-*?C(lfPC0~fyk z1{`9CYV54{r+lY0v4!c+p{K2UWA++aLySVP#HVPjwI@-m=_Fc%_$WRXuyrUrJ&iIs z`{|SDgIECA=zlKz1r@dS4UH8Q3BKpoP>~>2T2>FRea|%vU?UIJQ)UL(zGtVAC4I(c z=tL;W<{?uX-<*zN|H22WlS$nqFXb=$5>U67>NHP4{q3bms97G527E8|g=nC?1cc@Y8t@gaceBZ# z^9RzzF-m+Lt;P9jnu^xqq_NQKM{DuY^K=hdi{VPB@Q7!>vw zcm{fMg%dnxaaaxkRNr&rSwQN0F8dE4_2*Fl(gdmD#DAcEU%KWq)bCG!xg{Ft z=&SS^Q&;ev21pQbDBV#i?ff@Nck~VX43zdgJEx;?k~C}6hXFd@vvUl46%|=W6R6W; zQ8-CbpqN4B@GN$rY#0i6_9Ti6Iv<5Q`<5g;2H)-sOJc38cjJ054fu zBZ;A?G)2l&KONw})6MM^{HEv=R4L$v8cyBNcT{!$%!BBLopIkQIipcMspw!UR#%6y zrz`n*>w0WX*asBbG#mU+HShSJ%#CT9js7&vI{%Zo@yXfvRMYsRX{_12$zQ_R_+<8d z4b(X`>z)|^vbT;^SHi`~qr<%qm%{v9#%#F}#{Iwl+zQba^fG>P73+dGbW)qic zD=#Eh^*y;=uHJ>@-ZFusd)1Csf)wM~mJ;7)2El(Vge`TuDCDQZ;zWR7ayBIT)W z%(JnW-LD3}JBRq|yc;aOh94~zDE);ktbuK)qD*7cO=k$(S#M)oYxs*j4?@{WR)8dB zl4hRbbV++ltE_>oKgz!$#~t8S$M{;= zZqM~&e32~Jx)3~O!^8smzscswJHb0;8c`4GEMmbY`K|KHOV~#z`BlOPRg~w0GYaDs zh~u*n%okyQ8kU`7Ij8tF@}Vxz{Zo85wI)Xt8ywlDgRv&gC)r-@@B;M<%p z!gJ7zO#Ln2%{u17AgN1|@zVUOX<%XOCcXOn5|^kGEX5NYC#cN&HT9g{r4f&L$TdGa z2}~dp2MJ7{?Ly61 z@9v^+%k8o+(_V*m1U!OU%_YL$|hgZO^c;~be5`Xd@xDV zro}ivK5fb=&4=dbLaFd1l)LZ9-FTTthnNiTgyo+yd3C%!(A zgUK!2_Q?PZXWRZeD^{a5Gw_ zzQV_6A6D}21l;i`{Vwe+08=%-UzXnO{_hu`c)vtqrn;I?Dy|APR8yJZdp=T<-yC*P zSr7`7sokGlk{pdRX|eDvTyl9mSod@ z=>gp(;%#y?)!X;NJkJJ$ER)oQ&q+HQKncg08_fU2n?6%F*1$*C5A5gf`K~EN-P@?wUjvBImk0~D(E(`J%Y zN?m22)45WenRF4eQz~GOOwtCViib4QqQnKM%QFgpBN67p0gOn6bvwwtsp`WoM|L$20bWTMn|xD15bGpZ7`93c*E zxj`hnL=aK3<+5SdaA`c3y?l-DlmS@aH?QIH9r}{w!YH?sa*?DBL!YQH(N5Bq+s?dE zthod1^XQa!x36Y)<{B>ZHT#_Z*yk{#=$13e?yH8yT<6>L(G=;I;MC!8A}({yHtZfK zx>=`T!O$tnY`J7fn_Z!^X^KiUTZ8oh9|bEqn%lktAE%lk_SSVcLe1Uch%f=#wuBFJ z)C98&Xa6nWmOho%ESG}g~Kn7`gZJv z3FjuCnRXgJ0OXc6npQyWmfq0XNLs5@k$;M{rhGFEYYe6sG^|Kr>>gr&*=--Y<~2@c zf*o@Y$}Iz`fe5#S!KRp30)|ov0ku|Bxzlb;a!J)ZUOh0@S3Onjwg;}3Dh^FSnC6Ib zmoIgll)5|F8`_}juW~c3EW=*u?AG$OA%Bo;5IjMy)&+7(cgta_0@U*w*G=^zuHZw# z@~>`(Ck|4GP~yzCA$r5;@7E70hVL0W?m_S>S*3HcbERf)eWDCe3jUx4PDemnG)I@E zA5)mWf|YqC0=EAd5(j6Y-z-y@uW*9{R4u+)mVQDG$NC2guSTwCdw=H>SD$O83>`mr z+G)>;qy0vG`#J8(EXl=fcK+F+xlc!v$(_*V?;{R~8QAW!~&&qHS zX5!~;)(w7_Dq+1hlw+|s`QaJ^5&Repd+R12AEPN!m}|6dEG*TbPMOc+(g%IbQ78_7 zr1gf@4Pl?($N=a5|?g*HR4o zv8ey@PAjw^I!)r+`jUDfO?<8ywx&jUa=vh(Cha^OteUUux7W9lQWHn%chtxGp3msF z*2hWD^=I{4@GRy}Y=Qg%zH~YA1g0@+r))XOwvnD|TzD3&(u-ydtSJ(t0yQ)7>}#N2 z56g>|Y4rqzbB=x&^4tx;^Ylq59OHYQi0AOML~1}Y2xWcG=0R)zBY`u0Il31`KOIqMOD!$DmFga?lugRhFTRypy4aS=y5EIxsxDGgCkBFwXw;9$Y|rxZ^?(lM z(){|sNV9%neV`Gsd432;X<5SUPb)B3x!#zR_zjqUGYsFo zDGgEH7*3&@N_+IkHCWRNB#w$3rZP&C9J6kNfkGa`l=4S}JvPGaR%!6!h^`{-$UDep-RD!W-K19&U$4)f(gIwLi}qu& zb6Qt!L76kokDCU>6&n$}^H6?PK|Ea~?Y9Ge_3pEoGTqq`@F5k!>5LJa-KBD2YnoSJ z9ud5)o{qr(RN@YB*oUWR1Y!bK>=L&Ga@W&GwS&M$htKyQ^jX6u+-2BQDCHnwmdy1>1b_K8%=#qe^O^BxX8V)R zOgLCYQ;`Ap4R;pIi z5?@LdcclV~jzYqbxMRK@rI0Ouz%Q4lA7?QS`Aqq;-kxa>`A`|LDQ`aF2kE7;>FKHG zay}lUHO^cA@$rub>82-gA0KDpx18?mhev!b+0o({K`+ZK&J?z_C8Te7bcgnJMMNc6 z1O^o@TO}q)DHGy5`bnlVpy*jEsh5EmJ|~`unkh!ca-MjZP@wQl&~>&;DMVYli6-CQ zgCU5~@3;jSMS=r&*2|P(Z!f8oVoUf2P+c8qCN^g+xMAAVeOwNPHo{yiGC;VF-^k?< zI8EtI+z+MGBEw9zof2uzH?PG7bEz`AaP%a*kN&hRw{7(05%~vHP*APpf*RS>rqosl z&q5`rK7T6Ptr8+YaH~~9r*>GZZf%M>Z7hD31~r%gap3b#(b8ot)j}I}-~ex}wUBjI z3vqD|BFJcX57XU&v5c`$WBKVYN1_YPH2d!1l+@Bo>~Uht7-wqWZe! zo2(%kLEo-%DCwSRO`C|OEa(+msu2=3HB^@~mwl=cMhPE$xy6)fB8wZcLET~p=J)s3 zhWyNu0)(eqU|RtpxlvG7n9C*y2z^^f7`9DJC=U>fzS%BecLId=R!Mks<`N@C6Y0M; zmv4?V_q5TqxjnA6CgS0wsojF$vt${CHcmm+)-Vx5Q}h8)mzoIQxN&QnmL3^(T>e!S z_8Ldwh^_Y|{X$claXju?JEIehsZZ{*rB-7<22sH(-o!rD3Z1Qw7G9#Ti0Eb9i4G== zpxu};5LNjwvO*M-j!b`#ND)1&0!Z~VjLRRWd-IPFoUH5uEAknXn*X-LG`?3da9Lcb z29s{yt&n`scusUdN87qTC@9St**jp)^a5FXlht=}VYw?Ui}Y#;SW>h%%^)k)QuJ<` zpFlx~vA&aPBGwzuB(>TiP*Ox3x8)AEe>%}O(ba)MOz+DLP#7+PTZQ2K;|I(tqov>; zM;lG(V1@Bsu=a3)Q5)i|y}U)F#o}rv_t0W1F)f64)<%rVt^jlb1x%g}PBZNKORAQDFV&f1y+&8@Jdn)G6Q=+@wZ2qj&?Z16s!YB!*IMQdd+fv!-+ zM`J4MDBa(zwDBoQokF%{YGv$_=0ky9MQb37xx(S+EwivBh&hE^=1p< zukI(awk+ydQBbYo#x6Q$fAwUW6W-cW8($qVd4Ola(SDY<-Exbog^0)GF8J_ZZ>@Jd z`{e!L7}h^X7}pVjt<8POTEG|(s&9XTlO~>XAWfx|1qi-(JF5;7o@uEmy3v{p0W4Ey zD%kS>=-PWa1`Bg#Sm*0Pgr{2I%N}#&Kyjz44H5c1h4BP~vZFqf=ueVsPcx~X?n2Ub zV3BFXudH{d&_$2^B5e>MD8lMy1LZK}$P%IrpbE(1q2OI+2o)lpT2BcwlMA&-nuF7e zbOFbAxt+&8(>XH_oOF-_Ld-)-?LXOxP$AO#SZ1-X4*+^@9uD?&cK<RobpQf9RK!&>VyDURKD5s1DB&HbF?P@({&uQPQmMGBP{)mIa&(|U|Z(?rZ8v5 zfCY=V8(a`s730?yC?evuu51vk&~B<884KA)v*qhDZUs_kcaGO?7!3>wRJ4w7Q4o;{ zH72F&+NflTh$&hsr5hWV(M?ru045nmw#aszgk@@1Jv`nzTLfAHfm@oYXiG*u3v8rb z>kCH5YxO~^+Uwii3b3@)s-c|^UIo6j;YCYO3l2?b3shU9X?Hm3!0s^2TVdV6=I{bP zZ~*m5zZ$)0bDN|7R8oJqg2-zzDo;VAGPct}MeA#UAQLUtdJ2?Vqv63#^HH=NE~nz5 zqbfzC(0f4N3+pW%nsSVs~ zOWo;(btrc$mGWR~0=o_p_qD@Vq@y-p%9L{X9}-)wogOin^+L1JNUBS(p6b}>>I0sKdKX&hs-k2D*{ zlhQaQWAol)w3zm(2?hd~HWw_xy2}-$$@vWUVBAC$h?7t1Bw>>`G$q_Op0Q2iX&j2+ zaNpB#0NlBeaIp@x)O5GCpRHkz6{Xmm=fCjeBg^ z&SCeBT_FzQS0E3YykcGHZH0u^_7_NJM=>Rqt3NMp#IU#83f&^OG%x9`y_}~3PN0C& z`W0oX*%xhvbZj~WCUcAtPKdzLw~P`pG?3j35+S>fh!UQ{-jf$4^y-o8=GC&w0!3m? zR6168kTJbl&J@ViU#t5E!d)SqR=(CKXQ09oNzG@!M+xsn=DL(F8|@=sC@b?4#KIsV z)WDv0!qN%KBH~sgMx~%8F%a&MFrm`rpCF^p^wVhiD)63e+&pLWM3Uj9wW?a5h`wJ1HE-! zHnN2=LMJJqE)&;P*RuUF!t*@Tm}{T28^Pz+E!&)LEQi-Id@Nz@V}*^F(@$fC9rZ$12 zUa#`*?ss|1kfNY3g4~yaWR`z^q!Fj}W}Gm~daNSdMTmweW!t|P@?9k_X|8)0I;yu+ zO*luoT9tWM;U3q1+x$V6*X|-HQ=Y;Db=Myg?bD!p$xEspx$KY2e@uLU05J3LgtMNV z{;5wjO0$>bp!vgY5P44=P>F}Bi7H?NLWS_>MK)#>23-@qkj3tRj|bu2LmFe1@!|^$ z8A8V*kQUI=M(xVXZnYs~EVK=nrgDuEn{VBm0Jt!a-1!~x)*jr!hQ|vT5zFs!R6t)c zT7}CN{5?_bXFKABR5_OI#dx9Z03V{vh1?+_${Zh}Bo)qsG>0HbpeO#ca#y}6;Zg3U zRMxwLkd&g{=C*g(Myx|Wu(rzZ(~h~OZa*c;s2BPYxFtaSW`tt#*Tq(K5T0obssb$* zsTy^RmstjB#QlMN-$6)dS-lxzh{%jQI?Gxm2nm4+rJae7Z+LW?WhMw|-Oeu=_3`#qn%ZBB==2 zTZuwKn||9Q1-~V*1(%LV(b-SDn2tlWN)q`!9*c)+OcBqYjKu;fml4nr@nF`a~B*>3iGCt*fZzjdUw?K5DA z{fh0%vOb5rwG-{-i$P>+FWcCwNkT%@2e-GFUNx03q767<(f7^?&fo2@K^WuR?fss8 zlq8g>+s$=r@)T^!Q$in6i`TB+uV%}yq5 zxh~UuU)JUs-+nC3TiXSe__o}!4sr2EMfi?P{qhu%EU61Bqe2w8TE)O&8cO(c_|Ix( z#tkHZ;|qHySx9a*4TDvU!7AQLvVrxe_@ypc;QQvDc8JhE2JA`4-+?{mcmmjpet&to zcM$?*EIF#}zpS)wQf+BC&Q>I-Cy*5nx!6~kcG-HmEKxOF8aP+jcjtcLNO#~jd?qJn z1w(FdiXm4x#Q>bR4Xos7hT|MEvubGZ&}}#rQ5W?>ID?ztN5A8@}QkdkR8Qzl1 zKXg;X%XELwL*f>|Au)9%0xyuME}&aesQo(`Jujz^ItE&(Lo0 zJsTI(7XB02hcRt+!9g#3OAek;w;pt5Px z24az5xOD+zHbNIPqm>XEN*askBSVf5@6%0_mEm?~y_*J6KD`PuWe6HB+zDGa^$6ar z*|~$wif!B4I&g(9AYd6RS&Jq)Lqln$CD`L|ohbS$?ayiWlNnL{W*p*ea;ppBt}*M~ z13n&(`%I@oJ(3y9)H{Z0nddT1S^KjRvO9=}m$Zf@7c0hwgV09j*t#8| zx8sMcl|E2P_UKew%OusDYLZX5{ZQm;>ozTgCmqDM82XTiNc3%75d&aUKV1-ev_7oM z+%1>VMj#1BKv~eeWO6eC9GAEMhjGM7<-rJyljj?cAVMd-8xmMuiV$HHUn=6MK$QZT z0_j~ZWu6h{D;%d&8|2U)sD6|sob{!}_M%2KGdSOS%v^d8IO2bgratSyaVrMabamS` zMLPVs9UAzj(BXgaz^ow)0<4z*LbMkUtpX%F579zz1Dkn{Qe(op;R3MY1qEl2>6cHF zQ(B#D3oBq6EEAVnzv7Nk@j|syrP}M9ZlJfTku`s=z?H^3fx8?RIhncFz!_ZcVucYz zSz}j~7Hm^1ilI4ByEOWB+tmeQ)B)YBs)!7Fxf-Q;P>lGIcLE;{n>FIQ5n-5mQ9uPr zCJN-YU@5n`%n?w1!|VWTjGzCdCy6&+VRD%x@eRfZ_FIp{yP9UpwX$I84AVR_y_f>F zD^TM`Q`QGUeBeohwcMr^8Fv?o$BJJ(WV)mS6baWbO=_B$vtCT&j+vC+#7^L)y?)ui7IX$1xwF)4(skaIO`Fy>y31qug zZzqsfgLMzYd1{_`o_asL`6adCgT5GK1YWwebuHY=lE``cu4etvppRVs5!cCc^|>GJ z>+$s5!88m$%&F+C@7wM|w4&tl*X*zELW}?@6n41eZ*O>2LCyKrI!y)Q;(!I|-a~j= zR9pjt+-ub`TI|GeyVZHh=G;2H>(qJTx8~`ap)nZtKU0_gEfsYH=x}k5>Tg~LtLs6S zE`6^3`{&S}0&mSdjFt?rm3h1@r4IXBD(NwD{+8-i4^!#XbN-fIQ2ko#rZXr%e?+Mf zjf_urQ?l(zqbUp>;?=h9(U`d@@2V$_rjVC4^aSxmk*%$pTS-all~ViukBUBO{rvw- z9r-^}&$RaQdreH7`}O-F^P1)L=@Y`VbR(Pw^_b%yU>%zZ9CM6smfa8Bwbp-Ux!B1x zA(E!A0m1F_{x-U+pAq<{X>tR}!cLmK7@xF=RQ1z;OJ$kQ2=VP{`}oaN8hk#Gg_5$U7%pl7Lsc)K69lK*xM$riGMNSbqeq&duYHroL^3IXg-m%)OPYVG8!)t~OSrVKL`iTSPm z4^*urpXaEFXOX5+=Ymo{U?(|pYtzZsu=GW*-Pw{>LQNZ~S)`hKrIrToOregtywp*@ z^&R$^$AF`K$JbU6rkA!7{j#koIG1YutZ+yp(c4d0-LnEOy>JKE!)Jv7L86w{_)jAO zYCXD7ZWq{;K0-Iyaki$95EbfuC#f(W*QLD`L*EhAFI9a+A^OKY!i3hRigjZPGlr8s zry`_SpSKo_v5U(zph zKP)|6aPzqeRV4?N0*(ks(SNnF9CoIVynjp=x;7$NOg~{zL@v0aP)RwXH6B|f4I9hD zrxvtJL?)5fiCOGiKcR~?SLcZ2R1OSE)Jmg1^cdG)ov~2sla6%iNNyz!Sd_}450kzH z;am7f*65-DETQvvo zAJZfa9|=#BPLaJ*v) z2=c*scr@NOh6TPl=&GjWeaoVj&C)lm7motjJ__Ld!q=5!6-zdx*X|kp;739w>?JTg^=7=Mim={(Nwj9 z7Je&}FyPtTMFwh5&MX7UTT${6|NEfwaJXYpSj=TQ8v4m2=b=k9+*gO}JSR@ZN|Vq< zm#a9Z<-QOR!jB^Cj7iAq+bA^?4sRalfu`Zi-Y-#Sp>Y$ zEcT|{EVM;8s?EYLr0bOp4iaT-VnK;@q`SyXJ3!KsCf3paMPf}Q^&+*aGXCW=&{>@& zq{wSFv(zl1W8ep;D6*z^cb8LaN|w-t&(%c)$=oVK=*6KK`9QRVfs%f>JWJ@S1Ms2I zk}AQkI$-y+g!bwWVBvxBZJ#Z)4S_-=LY#HqiW`_M#C8+aOCGhHQ%!>cO{IFxyWA_P z6VMq9Fq8!Yk>kZ?nv+f6mqkX%iZX{u`T#X`1aAWm4$zRQIV&@X=( z?;$cSr=Y%e47&x+Q>IDe*HGbkS+1vcs8A}CRd`-|Uieihd)hN;ln^Y_)8!%jd2pFQyhP+Mt-!hTN;soi z36kTUo%cbtXXR*Nt-MPe8F9v3SN-G-g-Y)VRHa;sikzz8^6s8AQ+R)>BdQV}9X^Ck zb~PJ2R`^Ma&*U3Q!`R>#g;I@F$9wF~i-KNy$=k_d#tGY`mx_1TiE%=kz`B75JDD{* zrNo2?ZbG`eq(4g;FBG>xZHjlD>l8a{*0I|0!temDTlwOkE3rn2stlYUw3p{S?U^w_ zV6upmlHive?-ORGaKQ=ollU#su~s?4f|QCrNaYM~P><2etqb#{C;N6>{gZmMC93l6 zt1j~(&pu+k>k?MUT#i{2cs>v+nhHguM2cPze=@;hlRkZIAZCOY}n6d>g>vy z>XX?Nof%tK7N=7yA7Rg)$<|F0?6Js;gT&_r(Z*DP3nX!wSTJgm5=mc%$(+f~O%`I) zz81|d$M~gZVj`3?>8RMPRL=D7ejOIZ@W@d6!}=q*&mMM|i4EqAWXTpf!bgrfcW83z zLb{d|l}b0?A9UiyS___6AzCTjgAd3ciClJ6nFSye-jtZ61pAkW747#c=gU6?6L+5a z?Nq^&45vN5Xn?3qsc`rl=t~!ZR4Qr*htSqD$ZWHz3TiSrvV|==waDPDs9u}|4~0M{ z5!8x-0Q<_m*m664Qy0B`k1jpw<8bk*+39u~YJw(4bsN`us1Z+(@cy`CWbe>hr?jiE zJ*w2zdN~GS_v$}&Jt8=Ah_=VThEEarkTK~1=|jUWI+<*z86(FI}{5> zJssSPm?5u%rB4^W8Y)fr&%mrI-(38ZRGnM}JC0*pj1NYq8b#bg7+vU|9#L0ha0shX z)8vyp3Eg_b#6rc^{E`{CTNz!%N@fVH*sJ)bdpuJ=hhl36TRTJO&|amUy?cK#%_Pkt z4W|me0;SgT?z4+Cgr|l|XmmFtER3$NHXLNq646{q8`W%S?FUWSeWT;-hE1h3v2j&F zh}nkR9}@M7!uIP}H^QJus9wiLy(GAziBgnlK7dhHH!siM>*BZS&Z-|PVm z1Yxn?R(fNG1uEjfNOgdNFuSd*=47!x<^U&EZYYR2OqI|6<^N8jJa=*hvpfrIZ$v7ZZ<^C^i72l}-;N_-IUNN#FH|2Yv0Cv~heYBzSfv4OVkg-`~QQqceH+WYq%o~xh%W3&*zpsWpb`YPV z;$U;bG|6@huCMIp#p5zI7Fq5d<}$*1+Qn96Ea_FDW7MWw|2G`cYuT(9M9&$3(wjaR) zgg#J<9!VZy_*Z}~d5$mY*JQNvQ&qcT#&6vvL)EnCn;Ay7X79W`LaYZ z51*%%Rqjl-XUIOs^hRaOpPO2Jagh2Pc}Y$_`Kozb|D+Q#qlLfAMfIO-Y*$2E=$>Ju z9le-gVP)K+j4&|`x6eR6aI3Y>TJBq4=ZWGB{Z?9lbPXMlMFhEj+XERp@3tWdsM-O4YlqLq+2Lm_K3ib36Vf}KKRv7&;are0Qo-z+~xa3vJ42Q;GpJqw|~6wqdckb&}N0V|A@ku zsBrXM$=GMpLU#I1nBI$Ho#R|R9~@+td)w_vE{w$w&6@oQB`?F?uWq7O4B%RK>OQra zqLc8$hjmvPsq_`#NL}=Oi9-}iJSLjWunN)AOGT7tsZ}_LPsIFJ zJi|uhV^k&hAFze_(6UM|_t^LO!aXTlT{QcCq2Tdtt+PBO1%g&aZ;G14S!}mWh}DbL z<>9y{Mrpa=0ZoS3Bc>T1`S$Bs?3PXVhxRDA%1oT`%!0iVL_jeQcZcQKg?3WQIsax` z?ZON4`2xFV7t-We_gSh#c-IH;WzRK-@JOL4p%Le%v!4rvUfsk>a@H4Y3yhn=O-)sl zAB#;|m$m>a3FbKZgv_vWE}d4XlRdX$kgnyDN4gd*W_d;}7Dmcm5UVj{V^cBcJ9ZDF z_>Z(2!C)QL9+o=5<$G`i6Kk=pOELzj(afS~k3)Zn-QgJ--aoAa_zL^=e_*4k^Df`M zi#=Q-{6|wl!^_R_)D;PRWjgV#;zdQGF}!g!QkDsBsT&CPer%a=Lwd>6vM-hk6Q!3J z1?#v%I4iy6+-Ay^!Z)!Z%sKVrGKU4sgl84kFE4e6k#oRpj)~30wD&w*3B6A{F<;5o zQm$TvM#6(Y8P1boTrq!U@+=;KtJKP9i2jo2tW+ip1xXvu3)19f-J+$692uG4zsl;<^Y z^ETT%?7fXbR6vbpvQt-7qhYlhg~d-vgJJ*PJSKC^p>b7F11V-~)RE$SQlV>Kst!s| zQ_grC?+76>sUvl5sUt_Zjsa3f>e{gPHVN+Wbqn))R7PcNJCqUjV06M48!A1wfEAiN zD{)=5m8%XPIlSR0MDVuBwzX9{du1NmEout{QCui92k5sr1I8R#dqk33DF*_2?Cn4S zOC#Ba5+T+qb}?@PdAg=d8M2=cs)KeO^~ndLH&mvH4VGB_jX~yYt35&$k*|1atRe)y z;z>FYoAU%*I2v|@ObjTGYLe90p-}(6l#d%*k}HZN+ayR{Rwe;3stJI5IK_}Iie^`2 zeHoSU&GEE*xQ?vV;=-3DfJ6v?KjA+_5{m+`*8~Llgd`2#Gy$p~MSsMNc}oIff0Wwd zx{b&jGtjc?47cV`1pD`9Axa~{knx_mEm>iU{7Gi)ZKfoP_O4v&Q^}b^J5;rGzZTEC zp)&qfOOTW1NVNxWuclkJWJ~dr=f2_P%x^P;P&Mtq-jdCawAW?EPYhW|8HmfYOG;k3 zhsfKS2e^|)O9Xp&$)pF`pFq8HiW}nWo&9)@#!6)N!B9l?{Au2el}5@i^2T9UJH(x7 zgm}(&9MYEL|AFunM#xTf)d6q~bBb@iDng%Nw}klNuc(pWKT%aM@Oe1q%HRsjU2%CM z7Ln<~IE6{ZQCtsjA>V;N%SoBmnHztw$+4yk7yIDcr{u~F?e&|6REPl(d5zxXVfSZp z(caoS$8MuL>XVS$ODetjX6;e>`1~JxV2jw3>C1$!-8E-=%_a1wWsvY~?~{s}eX?>_ zx+}~Jo6O}`ZV<%UGehha`CafHL>9PD*rGC_UAH-j74vb;xk?shCR2>H7>V>M@0^;? zjrX?TDzA6>+|%n2JUqKQ<+ezqkT0}6FiLKcoM6}Jp72eTN zRi!~vm?jdveeAx99oYd(%T0x>0U51x&O1Av@Jr{tC={FzJ(KMe2rm8HE}J*+>^H>E zVYbvW0=#qP9r4fp4D_tHW)3$q0CFrcRaD+MA!d^wQmoM@#r3Yb~jHpH-rt@S;5McAmSR=*hn^;L};ia zD1DcwE>&&gecM;HbT>9nB1DB1Lrc4YglH8h+iI~4qN=J(>eA9CRdH9}nVEey z^!>fx_xt1fBiS?aoS8Xu=FIKPnKPgzC$p&8F{f6=8(~DCbLycU4PiaJyucg2SD402 z&Nc(=UJPA9=jfIy7 z6aIn}0uL1dL3@`=Gu-Ps^BXvJhq}8Wr{w^ixI^8)M~;GY+{GPFC6VEU^ba-%LI2j7 zXZ1*7;W3^yzSNFH4O-DGIcnZczhNcFd29X4?UQhpnz+QflgENAv9VkVT%k-Wee zMSm+l-3`0?!PL)IGMPef-cI!xrm}N(g0lwbn4m%Oks#hzg7kh8B>GE` zGeClPcn6oI<>C1hcP@bvB(|3zXOIU1pBQdDWd?u|!KC0S_p_PqQ3L$&!c3I_V;e&LoZq2q$o zVg8RHlPuenGNKy3%{5+K|ER2xpUKQ)byHFt(@#ziVOJyziwsvlO&h^+`XOtSQs*sn zx-TD>Z{@W<&_T4bF8Q1z&uC=chi3x$KpGe6!pXbUBNc)9U*i1T>Zx+mxA^DX>g>*D zI^-n#9LY_Zd2)|FAvqz{O?ETR+M`~nFgk1T^*!o-{L!Y2k|VflrMedZJ38>VO0}9y zMRO|E{j+>e!<;O?>%+M0x|@4+YEo_uk+E(+Pt6Fa1^ZO57!jsX+qh>;3&okr$D^^pZNFB)I*iAq?%e6j@hd|!2%9n z?6pt*vT^`9GgFk|H}uKpI7T8USGp`IOV?tTJV zJB{ZyCC74BaU$94nlBy4f&10n{LQjzHj~x_<6-+j_MTkCQ}(OJD$Kcm;)?z1Oy!(T zBS3TU2loC_-M3@LpiKer_(xN5u9J7#XTsW06#u|!UxJf^jE)<6t6{n*p6GS3 zQe5-s@L_b`g@PNJF10QX-q3?C8~6tc!KHhal4WXc{gBl5-^3rekkA{i{7U_@+!xl^ zU%|!w;;CCgllSPCwr>h7`lBMR`)`(rBSA~sKc3jceSDy&6Wq-PH8n3km5~yVe!D{j zD40H2Qjyo@7fS@ZJsFu71Wr%Fj|9cQ^0=w_;Z{ozuOLN_q@YsBv7+D}xUDa4-^8UK zugFXBX)50Ep(3hELl$IE3oJC!mg0IBBz9D zyTk0wH3fcf3VuVIwBP&=Crtg^B4~SMw@N1aE-a>B)WJehT9~$b&%uS3GUe&8@Z26@ zp{sg?MV<@?->JP5@bW`yAxn8$kljsZ&Fbh6OF9PvdlX;&u-c}Ks6Txi(M64E{3BWN z3RwECd$0Yh)c02DXF#K$1D8(ni?HGZ!-;fGRpKQB8f>oKL6nyS-K03&FB`K);As^i&b#8J_An4)wCUX}4!J+P|$jIJ=A2~ok zGVX3`OyqC+=(-yws#W>m{|79*n=){DV+#K(c)~OU1(M}+Q^ta_#^?C!ET%g!pJ2sp zZPfGE;Xr;c*{3zR-ucF=^y(L1YbmR;4HgF& zpU35n5kh>qtKxO8DZ_aP`WG*pP-+IJieu`;DS-9xt7#R21$1HldD9?V{PCGWn);pc zaUvs(yQAt3yV!byUcBMgisiE8^R&1R%7u&m9EnZ;77sbBj+$P4>_q4X5Yhb3PcZo~ z8EGb4;8Ws@fcDkT(JO>0d|Lts)Xx>ca=Fm|bfeP$G`uOoMEy7Gf{t9pipGsfI1}Z( z8h|8V8Vz2X>^Z*g>WZwr$KKO$hmHE{_s=Uh@OWEgTO*w-$&Ri(I5?ur;k(^S( zi@+}rROEH3vcA!Bw{cDQ_pm(wz*0V@Z~!kRG+rwI3T_kAsloQz$wPvVA1CDd5th2n z!xThP|4`P^30H%?Ic=`~I!C#bX?C0di#s?-ffJoBuv*mu<>n1_kzz!pkPkW-K5tr6 z@y(rrw;#Y>|7t4ky;E4~$MG{^Vp$qm($w7ffTFh-w|-xAp1a-|gWy)t5q0Ksy6kUA zf3QRy>0MaEGMcv)tgw2o2cHWhtD-Hf*?bAx3F!aYSKwrs^#2{(sL&R_a0Y${gP>b+ zhEpBPMlmyZ{Bx?K{caS}U5ab}8eHmB>mzcmJf67_)aM|prE3V+h(9c-dGoK|0C}Tr zUa&NLhy$wC{roATbYn9QEuM(Yd)s#M?#{p7JmoQdsal=cg$c!W)#RRBD0l(z^FAf| zNm8{9pRHEE&gih&aC(h8E{fuF8#C=>J3&03kq3OE^LFO(sVTb0nOI9EY-1Cys8M$g z3nO#1rTD)ins4CiHR_S@j5k39Peiq_0H9fz8}S?xpkEXgyrov%N0Ae;3!ko4_Y0;d zy6+n`5l>Wa+-?^timhWV};VuU$ ze1opb(pp{7^Taj5*dp_{p-J*oHqd}hlBV7a(?EA8;{ailnAFN9+gJE(ojNLvA}Xf+ zcSP=Uto=qp6ea<+FqIMJ|2;=zC7$~YoFXv7CoVDf`!9&vPw~!g)M3LZ;@8iCdej+` zPz&B{$)FIGMHbNz#k%oiO<=55XNyfL|$^nf49*;tBQhJsH1X>qC|j zWKvIaHrkoI1iscp?-m-g_DR84eC)W;F^w?G{6}F&B*cuUuaOru`k9+ zSaZ^orUfrL2{f{rjKNn=N@)^*!MaoGKJ1HQG=AfhI-3PxnSAP$dW`!^91i~$R+_Y& z#536ZEu0I{+#G%JmT%SD`?5fIqoxEN;*`!U!A|68N&*vMCcuqO5VxZt3D|W)-PQj7 zX|-LhG?Mj|@v?o=cj`nL%hmN0ERt-tl@gqGUj3t+ zQag_MK|R)_pglD+SRfkQuXFe0$G~QY^KpmG>{ns7+F^2oi<;MD!Os)S#&?+}1D5DP@NEPWuBYfA%cI)JW>-NCPnb0*~qPg0sFW0r!AjFfbpprA=zPsKq^ zJ;gxn87|bG)XPW0TSXeJL6AeuYRUqjmXib-z{ktHz^XG=;Ar7GTDVqddu1*V(L*q` zyD}FtQ3G=%0(8KzxgHL*ZJF!gKpTpi0sNwIkZzmMre!YS-73;x#e%;l!_lEd;0{>K@AQ_%Q&jD|wT&{yW zkX#7AXdEpRB*TO41LAI)Qhmfs|4Ql0i~J z4`Fd7gcrM@&U1uRa8Ct~jX_f=J@}tPRS3R=#F_ETra*6)wSG2fe^QfJsJ&EV50Gey+9A-oBpcmR zag#`#o4gF*jf8827ALrKq&R@r0Y_#Db>(u(W9au+ULuXMo;1o^AiSoR+-zA2b$$sV ziy@N6(FEH-qF-_sMWk24Cap`bKYuFDNaBQXPDbz2IpJHx|XGU`eB%mIr8 zS}YXz7IfGdn+VIz1R})HoYn~nlP5tj)Ig%s1}#bG+$O~Vd=6?qgVc~FbwEoR-6Vew z-PGu=VJ%d}2-po$9L2s4jVochK%gb;X2Ik~(eFu-OjYcBNm3d+2Ln_>l-14$0ErX= zYe5Eyq6F!4B}lXYMAh58$rHCsf}8~sq+dZG6U}fHfV2?)SLw4@FG2iC3DVa|kXQo{ zO`&i0K)*|n^R@)>_aw;KS%O5Ob!Tb0B_^qMkEKW_yk*Hgi@XF;WjiB~sNxw!RO}2w z08!3}=cPEYn*`~*NRYF;gr~nKK_=%J2^7ysi287V-Xxsi2YJ4F?s4eHNngbT3DS>{ zAbykti9;nw4|@Uk89 zD2*GX}rZHd|BF1S>RN#G4YtKan7P ziv&4ud7!%zBt8U)@z?a4CsHXz>R*u{el|d~jh%!Tn#362@ow#{LvG)NP_flOJDWZC5XQ&eHFV(ar*BiNbKqPN<@$5 zOdFO#MDpBL+BXOsl-F%qQj4-iXoOoBwxDQTR()&m`pASaOu_Vr5-M5KqtIX{;m z{xdQ}ut*{*6yk~aFle&}`UoHvL_5z%Ax zFTz`XQD+ZlZ3aRNuc6CZ!eMpBZKBXtLu2QbM{!%}xW0XfdA9*3&rsn+c_@q1@4|zB zRY!EE8R%bLVm@wwIWbg7X$d`PXzbc@hoSKw;zhrzJ1ZGlAN=93pnYS7zK*~8RUJ2z zm9P^WNhoy+n9sWkhs(9FZ&Wk}w*1aA5%-XA%RLKSlcN zobG{0^RXmE=okrP$YODC0z^p=Kae1Pz31yIQk>}N@;vEztl(GOkck(Gn6jo=Eq&$} zOL6*-r8qqiPF66HC6w(DNMGFxRE-}xnmbD)TR}3Z`frpBhjT4Ela=4RN+dmKMh@ypy zvt~a?7=TawrXKK`=~_iTe<`j^J%Zf9&9A2hM_R{A8|fmuan(z=Xw>)#BbPbYjBR2+;PtD;6ucn z-EpYX!uh_*y}7go;+!+`6c~*g=hVTg?bpa{Mr|8-I^&2;FF9b*6X}4XeybOcr$Z{3 zeJ~?O7s>AW9q}RGy&NiV4q){X*Adm8xQ^TlWO$Bn@;x#Rj=`)-XNgK#0M8RExpQCp z8rIcJhgUwl0`tB;S7QbxyR!uMZc;Dyoc!);Qb)_%y^k+6siPFyh_l$cS*@Mob(#ncn8)IjV3n@JDS0yN*iT= zoDF(<)I#iY=_l8em&4w)AJ(V9$$-AP)S$?`#D!_^%bQ|ni(#tma$&q#ZU<|1tGI0U zbkKHx`a|?G-`~P|q$)!5%fPqt;+|4Yx~z@%QgM3B888tc*wC;!O&8#t*LGqRJLkm{ z|4=6=jQ{uxulqwiRAKz+0Y3eQI;uM*#F$Eq5WFUV9g{q_HWDlsyyU-y!+DOe+Z`No zOO1MI7nJ1cdjOqVckeNT9P>$OGVhuI=O4AqOoA9l*vo;^0_90;yrqs9Wc&y9GYe<$ zN^?BCmhAo*Qbm{$a+H`U!|SEoc)m&NEC(&F3|LT(_um40PB?46cnfTLDQUJLKBsdH zU5*lmc<_FWw#MO8`*>n5%mpQKai(YhdpsXvP#1r!N&B5BjOXPcx=@ig%gZ&yi{upC z_cR!Vda>p)KU8EU$>9*Ro|xUq8|0_tr<=6FKM|ulOL;2ilR^ydzz{DGpKaS1Q1ZYh zg<9L$YR}-JKf%;WyY+p%>rWzI{5pL8PdFpc*4)GL+v@3~v^6_?Y8#aik6DV8nv-@S z2kxfU`kbELqCaHG*2~v7lFbxRn?vV^n<#KGMk_AIrMK03XrL?j*V}51d=!Xpi+WQx z)|bBsNvbRiPe^+|q&6UBTs|Bb(s;8SSGTCAF(ln?32AC=3Lu?wBRM|BqwlDrgEGS5 zWwzMj_C!I7IU<_20oZ&8-pOEXb3^EO+smPwM=ZB&DH|4Lh|AaCuw)-0Hb~l4*LtMm z9MT^g&s&0za2uP*_tseRwEp^eT$8PKoh)^l&E49+2tl_wbJAkFJAAFN!|ex-q=kpz zzL%J(4Ve^OxV|PJ19!a(j$mkO>+Yma$~|sXCV2@3PxX`AU>_&%os@f2l6S|SAh2Gq z#w^MR>*U2fO^D-piBMbOtC5VTl=p~~f?YD0^AJguft4uSJz_inFU#a69^Q9XeM!lP zaN!T{sdszW(uJ^vRQit}D07PMHUBr}7<)vDr6NCaQAS1H|I9vPKT1>a=QpQIY;m(` z;UN#3G`H_Lk|Gz{(J$oPNX6Eg$M!Sy+~c#?xtye@$u~a2x9_V*>SL)bT8{lLxuUDg zo7%vj*##k|8B|a-)eR|&xrUH)l5r=?SX>4f5689#ub78h|@22Oq$x z8Rd>^KmMJd(Gp!VaKJ-#w-=Pb|034-LYue}V#*`B!DK*A% zc;X{<+{oh35AHU=K+2I9Uc9Sc9>kj3coIBbQ$C7E;eHaA^K@4@!M;Qs!?lmVj>(}L zh<|+q`g`5K%PI;z9FT z!lZTh_Fo_wRO||haQG8A^ok{8i}_!8?h|!HKiV)l&7ec1JxI|)u2Mr1gUL|w=S7cg zmX1GjjdlE;3=V83b$51P#}hdA)!o^Ko1dtskD-~_ULpek8;kBf4(oKAV-EU`@R$jH zz<;Zh?Jy}TH>s((_HoGuG?Ni$n~Z&AD76c%i*Da;`Y;s(sGG8x_R}2v8DKE^H($q*3e<}Q;NHX}1sW}fJEI#E=nGbHE*www zLWA7hr4Fz2LUAnMsK#f#P_JOhZ%$KDp#LKvB~5gjT&S^{M^SFfLpYg7vsu9PIsS}C zH-=MUbp57IgX8WSFzv}%Li6L43;ZQJEI!HF7xe4D5j)3X1q>0tGYr>N`+09PS*CE9 zeehr(G_*65zX#FP2iG*^WVCC_32aYRT;M#$4=?jU1LdxNV}}pgC*Q^4w|vo$3f-(F zc#ttXZA_4`sln>3J&q(;7Y`8JR|@O_XS4qdTO^i zYr7oV;HDho5W32&fI0`YMPDj%93Angw&){8j!TQ*XouFw8$z*PAnM+oa^AcS9?x}# zj9uRdH%j*eBuxyA%nv2^igR{##p!_vwPO^vwHwGHt>#z!Mj-0fmz8@%P!Zt{Al9em z>kt12(WOgUFf=$Fh{96YI`_-b`T($O?s1naFF}gwJ%eZG{Zx+>HwKXjEtOu+fQgrq zY%9RJ_RztowMXLfWI05>n?b?jRT8LW(Bz>KkNE3z@o5|Q_GICVr) z;Ww781wO4f+LZK3ts$KO$8AMeo=T3%@9hJRLxC+rN7Rc+f$b|c3q=)R?YF2S!#3(X*t+5_*wGR7 zY|lEvzW&J`{0AM8MiZ;vuZvC^3kxYSd&lHiO0Iw#n5J0oN*vP(ja9@}m*ICip$Jv1 z_r_;2k~iaholqZBZ1v8V0&r{Uvqu!JUh7Xbr`F&oxB}+Q?ZF!omlU|S=tLFD_RQfD zq>uDKMCnDpI(tYE)kxAfJ<&<9w7n(B*@r=(6cvfGfqjmZAbmd%1>6FZjvT(5=9n+Jo+R(QI*p;u~h>_c)6DT_a1_Na@}tIBz}Rfc0#%8Kr*}8W=7{1 z>EQ8ZaBy)df0b9$u4ZfsM$z8;!RJ|p8h;v$!iJnbtMXg+YuuL*1%Gj0!7uzNYJ9mq z*Q|Hn;JO%ukFHIz-u05LXtMP5lG*Ka2C~}y)W|54A6tj#Av9aoj87xuydrKO^ta}4?S~5Kd?%k{)}QmZ zHecG^U&P;VdS^7oAA)uHp@8aKi%UDBsMZJ(W`$*|ay+(m zMG;Dh>S)5px}wP)_o+t=Ub;?wS`Fje2R8#@xmz6jG9K0qE!AjIbtZ&uj<+5oc*W_r zI5(RL*5eD^5S(|@<~U=Yt3{Qv2&fY*DQwpR!OkfFYm??!*VVPCcae29ZmMlPuC%1N?aYDl<&U}%*k20`7z-N}seYBpV+ zIJPL^3rV(`Y&rONDC%mWq`2;EHB{uq=BT8x>`3I7``BZswuw*@FIoywZ1g0+C#m|MI!-`JP{|CKlD_0zQ_MM<>5dhi$Q6OIO(%>6Ekq&>NQ_4L;qyGKvM zvFBO1uk)+8&!OOHV|ApkTtjY}NIY9C6l%Be>%S(PahI~tiieR~s8CLva@V6!9GSnL zasrkuKaqB-T<{qer?f4q$ZLG*?wvSg@ge~q2uC3*+6ImvNIvjDDdb+T5Z??(-8%oR zv07{EI*ubF(4g*sKq8?9HiG5$zq@d&>PV}`S2I>}r|_Z(Waz|1;mF7{@M=l^jQp## zYBv0R1c(V-CjtMvD!7KBl8qUCHvTlZV4~P&2!eHdP;Tnz^YQ0MGegW~h}k^)V*CYn zxD>*rhYufguy7583rY`HA3Ul#}|*WiZyWm)6W}oq>niM z^*MB~(0o(|#6;GG9&54{x34(Y$nobz+5$SfG7>E?nNunXq31Lt!;O8?Fvflrb&WjV zz`CJUan^9~oRF|fB}~!D{+Y}gQ>TY=6@0xg#Vorh&d4X}%;O=>mp>*#8$fq+xD)G@-Xn(c1}k1BlkMNe;Hv1yQge(52Oj(aWKH{7n>!agP_<*Y-dY z<=ODXx5&r=oLFxxW#@o zp4bx&3Du3yN?bjO^gs=aSL~Z@Wn})ZZduai;+;Lw;EdR8TG`@VSyXb1W3#Bl7Vpa3 zy?eLI3LC3U*G6ZZ%9<?%o1|Hnt;68!II zG{D3fZUJjRZXuy@u6R|-eTiKe$UP3ew9>h9z|8^~shJ=P2=Go`o6J(U7B(9AHId2t zl4-d#H{*iF4BPKr_6rt2Z@ah6TWDI#+hP1wl;s13)tiQi2gUt$@ux@*;h>{`b9Hu> zK}fO5$p^P2y$=5Nz{x$`=FP|Hy-<&Vj{bzW*Ti4lIL7%Ck}peS%peVN*3cpQ%7GbK zx3XAD?lruv7aG*7fh^Z`TlVNn!Gl#yeyK?O8@=A#u7d4*qCxY3DGpbPeR`vw!&%@X zl7OItSCy@#?C3&hbVk#>?p4y@ER6S(H`#1+>|UICdl7bc2LxerZ`8r$m{|(q%@UYr zk~XsYa%M|Kjm>)W{*wW350X{norRMGhGCmIwxu=1z0mlg?H=v66$L?%CTPGL17#EP z&w^0H@W_amfqr>5#+cohXuHGeVw}9ns?^Fus#YCZIG>!tfHSAO$W!izXx$aouC$a@ z<@Qe|b$qVm**Y4h{=JTlN&ittS7vJ+ZJGbCIyy3+uA_F$|GSRH34gDn+0a@?vn&?} z#vr8J45PW?+p{<}25phItHNhv5S;dsW;efrbNZq#S{l&3{HzRYJg{*7xcWVXum{4Q z^hMp}XV2n>zUWm%`RnLiQ52bfIsZlRtkg!)_N-V$+#Qju9cg$`Kh!0Rl><(7pBAql zzl;N-DptlUC4||(>Icb^D5i1XvzS%SD!?d?w*Rv@^MTN`hQWoP%)#9Tpl*av-2gPL zGb6MmEkAnM&cdtti!%dfN;q zVa7W7e%0Yq2OC&S4a5|jT;e=@_TXtZ&L+Uwgnu52rpN=QVBIi~7+6KC3YP7|#$hN+ zUEF^vq3I%{NgEq|4jdPlWBb|bhoM}#FZA51WO$e7IG!{TR-zer`A9TeR*Y*#qBwbA z*R}De8^wVaEe!RzM?C7^HA9W6UJoozQMIWGs9d%`LCDJB$@09)pbAK@$8P}+9Z^R>{FmW@Z>tc@0Fi4I9E5UW$1OpjbhY}o3n^PT=4>re<&Z9x+Zm*LIB zT)>7=lwxxVaw`u^Amp3d{NdBV02d0qgfrJV#k~yIVSRl&!d0HT^4b++bJJcAG}|qs zQKXDDp!p8om54fbrg%pmX6_{`Je6a}@&ySmo~g)=-!Q?= z;qz_+jN7o+TGZWMX+WKLb{1~vh#S&j^l_1%p!LUd$D&tR!1kB@;#kyE?%w2_z-=>7 zs+7q7Vg?fB4ACgZQ#YZZ?ku+B4Vyq@R`1VAk3$aBDYJSRXSppioV%njKY$3Th=-JH7ctIvg z&>BO9PW%MYQ32_+(u*wfEB%^v@8?&IQTdOl$LBIpG?c8!LgQsNoSB7s0hPH~C?V9* zUTDvcCUgkj`f<5wmCL3k2+zAa&sf@de$GNMaz_9*Z$%y3fE0B}uWWOlvlcr$y zPBU&l84ZOVI%YCTln2hl#gkEgdBb!ZyA3qPtZ7%^tCLZ0dBap}-iD&^@F^(37rF`5 z&^NUnXG}rE$Vf2-h11wHh&_%!pMrX5nxBKc;Ae*o>l?x4W641%61%8EF&96Wf&9gtG^eka8)cs@-G=i@sfZ zpzP_m?S>Y+^=5!pio>g4M7c^zmM$J^{sFQ|1CC*M%0JK~naf`J56~ZkxCKuCu-3MjpE1L;WS4@g3l zGVl0hFvIb>dKI)UTsQ3X5;Cwv+zoI{jT|s4t7f7h?zkWDgqbKtwhQOZL@6xJbqY7k zM7{hey<7uqA68?{D=4HL$v>@tJgE+On{({_W}(q;f^?tbw`arA4ozd+i$9)?dP70q z&qiq)2c7V;8FgOA;i@lC_q*7Xk%LFhL6J)K{dqih4tl|z!DjohIVea5f`92{)Eyc| zF&F9BH}i6wHW$r+xKHMySQcl?#Xrx5(&@s$@vgnoE9g1*v~GME&zlE5+=f@d55q9N zguj}Hrn7);8V-LIYRl425qN$B-ZdL_!a1)(6*BO~SJAkkltkl0iNUN2z=RCfyJ0=H z)Gp2zg066{yMAgB0{NgYTL7on8UWX{wexZKYpAb#O_64w@*3(S176R69Yw$oejO@B z%hmPA7hi{|H+BXdmIG=X8for<|D6M>bcPXO-Dh0Ebl!;)K86Jfw&S;4rI^AI|zG$o4M#wSPj7mo?b?zJbzZO1C)Mm%NEel zPb8$D;W$TYz!?kCjy6mM^y^&EA-#SN`@D_vZkpj|{9xOYb$m39YB88)nc z2fb#ZUtIs1Z@1!bE`B|j#&Dw7(nRLzO7|}k4znqN&nI9#NKGWnbdkB4nMl0u*t_Ma z?F#+Im6EMYf7sOU(}VvE2OEIKi>)|tm`bs1bRU!P)Xv9oX5D|H={7#QYrD-{PmIpu-&6XYQLX(fG|a(M}!;J&`0rbGa45} z%I*YZyUUj!Yszrojb;=I9#4pF7(2~qpm%$c!iJxi(c9jt85B0+Gn?2n3Jkvx)qa<$=)Up5G5i4q%j75<)G#f57e+g1FR-NL-puv@T^-lgU7XRA@q zb`7Kfv@bFC&G`u5T#a6Ml@?;V?b$mpdT!9Y!?*6egZKYs@4(VG)4cdAfQHXnHkI)HE`T#9f7L&$xgy9Pxz(#=vbiwwF4Nq?r%pX3rQE2#(Y!oOW*O_e; zSQb@mqrkodk&QwDJwhn}Nl7b3ecXXj_}x2I5%rRm&%W_w`P>C3Y)4&{#dN{^KAyE5>O})u zjNji5rZySm3wU~%Qh}x^9Yn}##y<5Q0XhwjNy zJa7lY8#mOk7W8|Ya0ji2bhH?xD#t} z#i!`iV3%;ai5r z<;oGal9~MA5d7LMG|~ilfwDOTG|?%TCN+kV{NP(E8aGL|iGs6z@iul7A6ApOK<; zo!VC|4&n{p8-|@1t`x}QfIw^TKo0EP=dvTT4w;8DrF3}FZe&u@gf%9zIcij}G@?I$FA-ZxD==$LVO!bNwXSN=IEG&|1M@n|$TOJjV!&dvwC z(=27lX_uF=So8P!hUlW0^;d2XSsb`8DPB~<#K`;~ydA9WxJCvMdhk-j~5E_(`!nj=# z!kRXd2mw;ztrDjDaYFuOUw0kM-{XeQz`TZ*r2AepSkG&8n*zq~EiL-J;L?H8qFlq# z1FC|%Pe@hUDnWkc4#qx->4_Z-`*Hlm%Z8R3QVJ1q#a1}V*=pES2W(@MJL*Cw<)@6! zuXY#4oqPI3uS0tDY0!s4YbeT11&Ijyc;}l%s}Zz1L1!%}q=-rF>frdD}1fpHn-ek`xCWhYz=s zZaYu`yBX4VxkJyAZmuaa@V?Q@7~%K-GTqAFxlB;s_a=%;cef|3%`{iiDCrzV7r}NUG>%U8RoT+9`~)$)7FERgTx%(ez+Ss%<-6W_fy!(PnS^ zIhrPqa*uArSkx8+4*{J5Hp+-=`F=b->&>CVbwB&+{b;$YBk7tjc_?A>KvaT3wWzcA z{|c?A)*PUDACFHR0Q*&%O!sK*K{TAfuDf{jLD1jO53n37K8T)ld8%+%8~1cIh8cSs zwfN&hsD0j+~$WmUFt8f-{AXY@oML3*L#*&4Ni^tVYG}1R2%nFjhl;sO>IR@(m`c3y2)>Wfd zd*;x!(UBDQ>`#~|tpJShBpAQQZ9D%7xElj|1Bz~Tw5bXUjgWac2if4AOZh5rDa_DZ z2XXHjI7Fpr+AmTX_UPHF;^};C;E`0y*I0^+YLK-bGz>$@PbQ+20j>f)C^#_1${&#$ z$w&msoQX4P(R3mJPbYH)v?kNNXRohCePn;f;ou!N$l6F(ehaa>4jKNA($KLL#rQA# zqB_)*iYH8vFXNBDL8uo^?fPd}=yv&k*3YGBO|G4ao4-Nje=ni9ODl@&IsDl%bc3Lf zbpolrHjLD&6~#CTe{~#M&W&PkJ`N7O{+_2Twl#sStG)gNlF5{mTec4PYy;|-2)$1g zGzk0;6}%k3#wR5`g~(us)Fr9JClj3`w!%EV)euBSq3tkH!{m^bU!T7?2-A#QK{)Ls z`0}lx6I?FLuDR@k)(3Ywh2s3lhpoybkOvrgpMrBgvN+gU@CY}bLfzZZJRB7s8&zV{ zs??H(Fvs8#-=ab78OD~U>{yq4i*|H|gGH-y%*SzX3K?H*hyPY((USODYeCU!oN^kC zRgsg&l-%^kS+expw1_d*<;(Nz+u(ytnL)+nZT#pA7gN(Uw0iXaDOwJaHkt+q#H2;Pq_ix2%3s} z%f9Fa`VH_%T^*@#gA}d@&`-9T_~P%dkEa30ulUjL=pD~lL66%P+?0O<>iG+jX5YTH z32l}s-HLm=?ho{`Cxmz1LYr7Q+6Q>jpP==ph1%}e*Zqn76)dE4;)*-4t&OF##B3aM z7Zl$V&$SO1-$nP`fihft4=rE;cs;f4eNb^Tv=6ZEKGL&*7Tb&NLzibEn*}=_NO%r2 zzV!giwP`_I7=Gg+Y?4`^D?aiNN~NQs`Bi)5BeYoN9wRex#bZ?B4vfLce?fK>&zNF= z>o1~Nry*_tu75)EBV6TTO1f&MyVFFKB8->61(F~WFa64bk zh0ctgRjt}$cyzLy2<3NhWzkPFfF(8-VV$2QwF|}8F0IJZe?P!4LI&1Wu=2oK(lXju zT;`|gHOTeX32EmlbY^#z=si30f{*^Ey9iWk21WU6dW|>Iz(x0+8guab}>Wh5#9GzY)|8ElAE07CT{v-jI1Sw4L#T<1$-Z1-S|Dw`b{?n7rQH0De%yfI&8{ ze<7xob-ZJVPU40p`}kP4q;V=gzdc}H%TZSLz@fb~$5Sbq_VwuHmZ&skVT~pGC0XUN z>;(GM4*lkuGgWsa5zbuAx8V+Sp(<>Z7q`2HHwcB-w6FqW>1WB3u&pncmD%1!K6qkp zO`o2$6s`k;mBn?XeyRl3w`&j zs)2_iXoYNj?4KPS6}JQa{OU*9;m?|vbSG|6$OwBtJsi52mb)zFX(eFAY$Xqon{~cN zLMCo-tZF>skmA334xV{edUc&TQ2`GMs3s4UsTLxRWv>gJ>9kCGNv4>TBvb3G-bFns z3w&f9f#sYR5s+8zOx4AL@cBlbCM|vy=xEtOp%?lvi%jJGEDtY-u}QQ!?Z)hDYU3h4M%&S=V-#hdHK?>Z^2fyKpwW`zQ*~bOn>IU z)XaqTX^xmeco+(t$EHUfb|hAS;Vx+|-JnQ!;l|&a%&-30-rT)#`aYG{5zIm;x0drTz33wrZUBo6&*#xU@k{5=5 zW?M`4xXq-5ki-?sSJkxFS1NTapzFKaPN6q&etdih*_DPK(Iu>!{W#bMUV`+lUc6#7 zp8!^pq{iGsiy?_4S&7PJ%J>rcWl^jqObIoB=g&;IELM{nwt$U`;E%YV?5i)Yg_ zE0(8>4~0i5$&-|)E}T7o{@mr$zc&0{?_G2Cl)L`lSjxYVtNb`coNxW8yfNT~T&_|E z2A(t@SUO-?lEQK{$|wGCoImF<{ei6a@3*tsd%~knmZ-wDVwx=J6b>uC<`tH&^a?9g zdMRqYlwCZc3XsV+7hID=R@~ywacwx=g~Yyjms;s@lxic|}AzXZ#u-25A1rnbC&J`U%Mc_$|6QUthVRh$`YP=ZA$W zxpi67Z>Yet(SU-VFUjNlILBfQsaN4xt5N}8R^BgC06%77MK7gXK>mJ&5a?RR2Y7GM3CsLAt2d{p z%s(wBSc7rS*Q32(1m$hQlBSF}DGVM9DVcgg~7q=*{Bg@w;k#H?9Y6Bh0-pHlSlfrO)^laaS@6o$PV z_~2)IwK&eOaBTWHb7U7o{1!f9>Ep7@A!I$EPWJ>f4U? zuUMvf!Cxi>`^ptP#kPXVS1t{vV7@&RDCr0Eon*2CQ*Oo!m)8!|^i<>&-NL;GYPu;h zhHt>*25P!wI(C4+e!-s~9Gzb$W`O}$zPiXLx zTMG+amhXDXN&y=tmG$?zrd>aL8=co(-=~(;3)UN7V8=jBSGi#`b`8{w@}(;t-QwSoF*z5N`l$y4N}4fpFktBnohx4aT+~hAKz*v;+^t^ zhg1cHF8mp!RkC&91bjJ8(_0=9jsu5i`kIP2h;0s7YQ}(^ByE*N7@(sS++urBR$nVT9LJHhVLt;If62BQe74j;C(0`r8Ky1d_OH316P2)_0{j_CB*iVA z^e~lTa{z0;L3tLdE7uC#4FDyevKvDOSZd) zpx6PGWJLY=>1z^M;3_p|MTNy+ZQ8nOuLANFi4s zSq~*%@-_5!5^Wiys-Lq-J2s!a-dhlgKOCabsz+`OTc+fE`$&USu!5{Iz6QTbLp0qH z4Jg{e69eNP@(Qu0Mb7j^ANnHG4>pKrPVU0g0EK$bNN{lQh7^(QK#y?9`z2W7> zE5km#=I7p;w6h{!X6X%w72o^HUOqNp#W0!0Fp`7ymE2haZ*_2EH{#1fH9ci&9577N zJCrvlKK9~-ZUH_5_V*dLCd?Kt3tOGXg>6|Q3oF|q>u1Lq!!(hyOuS$iEcM`#mUP+J z$%jZzpA^e}QEWLT7h$2bxM+URABXJuq!%T>?o0Lua#-_ad~=E1{vitp$NiW0TB6dq zEOA)11s2{-v5$8}AAu1dcJZ!KL*vHsNBy9ej)k368rav7(L#G*{vVd_UX=}~Hpmj* z7ec%>qDk4`AOt?p$WClXYDiKQ1ap;fcj3yupvFj8TaJjgB4~xRiZe;Dl`I%OKq-P= zSov6Z^RADjSAZ-uzfv3~d#%LX1@>9KOXA3aLY(!uQz;HxeVeOX@EzQMI;>p$?<&ju zl`Sj3U#WlytB0-v)-v+IKr6q6JV?Wh&FknK z2XlZ=;6R_I*aO?T!+sc^M5avTw(&>ZTq;`sHLqWSm+D|I$(rb=|CHBDUpyTbz=W8* zHU;&FUFM_d)_Bg~X=C$wy}j{$|G#Fq+uZ#9R(xrMMrE>O^Dr>t0Mas&XVOTb9dg6g7BTZpP@4EXF0(r z!;0_9Ip_c-*PtJbDIpuZ+_b7~5EJ~1dn^GwlXX8{m&hyEeJvq@SI-+5v;dVDgQJ#f z39=i|Lx%i#jSMj(HluBfMTQcUnCcCJ)G@SV37%i2^5(pAVeTW+=_pnydBvnEwUal5 zb-Dtpq*PckIu#SoO!{$1g4LV%t|(B=zRL}%3OZ`4SjNvDAm(${5?@*E4+Fdh%2Yo8 zr>}2;Yr5+H|LzWW8;WXa2`=aqhI1w-$ykTA946^go&pos6a!sx9*PxC7Lmxjl#S+cTp+9+{L&RfY;!C9I6AHCBuIZ%+7Ui}{` zfD!Inn;p(QyuB;D1vG*l%*nqoDGBI;+AiGnEXCsOtbkJ1E+QH?CJqHuQ+ zUASPd2Np(>l4q4TXo!;rC&~V2;oQyrXrm|h*$t!tZ`j;J8!dfLFv(8c3s$2h5SSSI zGxxsoGW>D6^kXWfM!UR5rzIt%W5fn?g<}DI;Z^xRWj>x093=Imy9v9gnIK zZISJzigCKD*KtcWVcGYocZ1?5HT6 zXtS&-#!^Az2`_v^Rj4Eadkw^1B)*ot&C;{KXm=tF3*EWre%* zb z(Uzb#ei&F4kx3ymj$gbJiyqn7Hm|n7%FjM~c#z-)?GcNHZDa=iYAy_9Qd1__&SHB9 z9YiK&ydJ6S!mP~Fl<4(HOJF9hDm`{Ng-(>q#|An)rXI~!r>M4w`OH8YOORbc6Yb_W z5c~2uqW)L+5F&puMEaVj<|Gr6T0tt-WgeqKylGWP3NO6xz4!Gh)iG-&-(cbp3{9p& zVhyOs5Kg&}K5BHuXga~}r_D-_Ui*Hger9&Vj1OWl`%j;Mf+21C6AFg3>9#;O#mQx7 zGj&Udd!%y6Sk2AZJL{=p3U%@KE(Xd(9xeM7|HRhfd-BJ5{)s{0d-9(;FU%$1lYgHh zv$V>@ZpHNxRO@P+7(2Aefkv(c+f^Uz+qK>{ulb%#tMS(7_C0x~ntvj_>3hOf5mmBs zbTC($^k?7WX@|)_l9dHH@%#j(nx;?BoOD!r)}o&iAyQf+$_m#>_FDBKQB1W^piex3 zc^g>REA|6ewFgC8P6#ceFv7AWO|&;?3zP795fi({Jgq@YyFy1cp@49!^M0aH-(oaT z$RO?$$oNFWwzZZmIe{XoPo9Xd7NeQu_FAQ^+g|I$UdiX$kBT+wov8jG17nU`{*CZ>Qt zvIm{R+y##)Nz1^vZr&^uM`%LC5k9fPCo<4MhJP|jR2wdcb54fRSmS&|ua%BINrhrk zp*dF?#yzi<{mv=+rLqw2_x9RH#4t+PH;0d%%(HCQt(E94+iN2sJ@7ry`(5B&pd1E^ z@!+G6PPMPhTJNiB{kfMJ+-0slbv^i2ys_A54sS-Z#;YTwco%`R(#e)+ae$>yRR9*x zOORs$qG)n^lyW2=&C$*v@hQp#k-A46c{xQnQxtdT-{f?P(vTzwo^+HhUgk1KGqnU?!jqXOj= zlA@^1koKO2k!MB55T?*bRdjO?+|kLc6%L`IAU};v)hpSaX;`8@ZA^tf^J9c2q8lfz*W#H0B zY%pm!*D~>ZcLR=E#`o+43oAVfc6~h`XQuH3MPyL$c3V&%_*HmQMcb+RP^BtWV2H9> ztTIMO209g_FLPs}?12RhVxA2@_&a_+;t|!D;`8_CD~GRGSPdsk-UIP|YrMCIrW?_^{aRAq)HURV=z?`R=Q_HW zNOOHw)6ALK+IjzW8o>nHjD?c93fY6!4WnSm_x#NA2tkJ<7V{eq#Ju<^Soe`$phsHf zGoFS$$75CwydGt3t379%b)9Y|wnhC4%Qod|$*4~NJ9ycW_eM$K=4?1u6|*w*y00Eu z$4B}_UKt7#3cnLRwSo&oYvGx;!tWQ|SwM~G7be-IQqfuK(p7W~9VJV) z98bwJ;+%1zNBeCR7ck`r?>c1Z3$xpx+4Pb?WIQ3%waAz}iwMS298AG0GL|bkel@Q)W%QFm=?lifQj>38&v5JIflC<>QfKA5#L(wbCK+ z_HY4xLWz0k5b6n7DKZZ)NS?M(If@k?0^S?wj zjY5P7Ydec>{RcRSK3Q?=(gy9|mmaM$zgN#((@I`i8vcoea>k=omor=5S_Fgt+C}@K z-@8E|YNuB&th}a0oF%|1z1N!X_8;i&X<nzKuBIZgFJm4jW3cjb zPjlbJDM5EPXmhCSyz!#!_6=3wZOe9Sww$AYh0rENK9+T-cZT~y6N&)W97Mp1aNgJo zD7OZPM%YGBZ{wc1FL0PU1;T6F$OIeBE9(Og4lJnee5W4%r*81Yig8#kB=l220XoZ{ z_IjCcb6#T(!{g&vBsoIGjA*-YW#p;TnUvRCibXatL;V=DtU}^l@jhO?qOkS{D>cG< zUiBHGDAh@#gGFCfA0$Z2+rhbhBO3pt&3PLWpfP&BDs@^?*Vy)gPJsV3r#{HOSPX_? z0?gKWF+PLLdG+EbD>X!EY z-RKD=>MH4)3P(3S<5HDM`Z*>Q{&{@9hR>+{tI}^2k~sN#k8>Zr(_JDMZ+MyE+i=C& zCHYs$r>V+;ecUt&#bJ%a8vBW!G86YZAA5OjVIAgDRG1v{SE_PkF!#gp&uHJ{e-c+( zXc(EDrkpW^2V5MJ-`#)|7UR=5`J&qAoYi3?68F<&Kgqw#upPW62)O(k&UIJ8b@DJx zIk`VqH20P1PKDLTgyMJ}dIrsKTcR^;gzu(@38!Ic$B}=eD_=_Fz_oK?@`Z-?4N=C5 zwzf>qKHiog&ezuVb0loE5?jt`?@W`)KSnDjdiyiJt()V?ccYbqG#rfU$-h;``YMwh zCUIkw;W-?jy5Hk~H9f94%kr;NVsa3UF){g}K6>=|8+1=!wFOSQST3Jgxm+tS9MO|p zimL0YRF{vIxxG4;&A~Dmm-gCWrV56btia+ z@=YS;UYj8XoFl|>%~1Ha4)C_6id})@c{wc9-{9iyqP+A}?NnQll_x=NBrpqZ3JXZZ zDL@=iOgbLgJ)LwPhd4jCa_4?cMvPOA=YKFb<$RoSH2=eWlD_Fpf}T@$>%n!;t)eQs zuu53dGT9vPhnTO9IYNd$2j>*mhWjdUOb80YWsftVQJ3Whq|)Ac2jz0{K0dM;lixCt z+J-aSbH3$!!5ope*)^pC7Wc)vYSs*MD5onpKVBEZsGiZxSQ8{oMp*q=Fx*@BMve z93<#@<#U?9%^X{xUE)gcvx534dFOd$e_nvOFP9Zj*)jeIgsEY;ZNHVcI0xNQoJ}O3 zbXF5_j}hx8oE&%hiaQ|nq<3<;f5PNqnuHdkKwuXykRLquhMs=*IOApKv!Oe5-sz_P zOO_arjj}- z;hy3!ugepaH*-o#4=p+(tRWc`fAxKd5dj*>O=d}`Ju#F?vf3qDDgQ2aUW_ep4)9zE z-vI~hT8w~XA^+X|kG+Lkn3IU#?EQQ_vwIEy)X|myG{r&HFj8_*6y#nMTw|?98hv~0 zv1tr_)};d|ql+o(Vk~~_sbf@(w|QovSq$SNB9OW9!`eU1Yd&XgyguX)1d}*K-4VMS z@kaPSpJ;BNfg_M@y{9B%caI~^oG^Yopd2p4R9Rw|#C4%#!;OcF8`F0vYY2=V86rEP zG|Fm>G_E&NaF@AH_{^y&!-}b7g$kKsmM|+Y3gRa(^ug1@)plm(zopr zw_LLKo-UN@a&l?(aomv5LR?doQ@SjMS}84<3R6s0FqK44Q}%!CQPwnNpB$!sqXa`< zotw=VHzuy7QrN2GqYlJDiIcmRp7z0uax=?&m5sZt`cS>6Jio5T5xT9|ITU|GKvJ3U z03_EQg|tM5O;rCTCXVGYJ#PEj_Dh0h`EFbA-9+rG7!Ji?heBp;Ewd&{=$Pm~&n|iQ zCY?VRtG(aCj}v`zTn+W%q#s9=CBN{dQ-`HJUpImb&qB&QKmUi2N1t+vfxG2i=`N$W5h1E~)-npIm7$HD2dLzrrzGiXqMWWAJ=jm%Ls)Qj zUwG}fQrNziE)0Np8FD6!u$Gfgam3CR2 z@W!9cKVz-f4#uI3iwWL&QF%twR=VaCI$Um-l=tk|s9Ho`o1yIGZ$^570+J0glppy@ z(-NTjCcOB-E@_Y|BonvrD61PumPzT|mhSj~l;B4ikHDt`PeV-e6TlIWN;pb6q)vUv zsA!wrx^*coXxVGoiG*bCjrNeJe-*R0aHkNkTq&)cNM~Y0#4#?hdp${-saz?P^&_We zD(6N8-7YIs$i)5V^=tw?7L(gBP5PPHwG4Oo%g)-{By*OszvcndCi>SzRVUl4px`T5 z0J?w+7x1mP&k@HgWxsU8?NWG?!kMmcNo2W7j>1`e*W1T0sRIuyJnku?fkql+v`ePY zQ(?HCYKxw}E=o(|8iu8Kn{+oTV}%8`$tbfjA&2XVyUe*Y6qbj6#W*XyaE&i$%2SA| zZuh#WarDBi6kTpn%ry?#ZSHfE_j8Nvw$G&Uc_+g;ikNq)l2tA*isz3wMNm*Lm7wOl$jJMf#Sg-VLDp|jbh>z&9dHtvsQ&Qli>kfi!~0NK$OfzF;U?nlyRD>WQpI}o?#B`6fw@z+M&@_cO}vXg^w!fvl1zB%mz zvSl{Z5)P-_Qu5twWm3+YONMC=Y-Siw$(}l@-YKm4*Xe~r*)Go)0vvi2bvmZTDeG*~ zY>^2)CijSVJ(H|a_g1B}VBh^!D&R48766SmyT0)8nW$A^ly9-^^$${Vkxs0f%jWRSfM6y0Kt^0xnCbAve2x z)wkK@e5ah-MJ9yFx77!6JiE14guA-p79>>|*B?X2;%S!<&z_7Nwao?H%w$O?wucbM zl$Ca3qjS{N_9pQYtE=bhiKDg^3vZP@9EmiSWlWxak@uPVs6BiOL!VjoPkWy^j_h6B zTTocbm&)A@UqFEGm-|yYP7v?$#K`)zV3@EH`{}ZR<@V_5Fstgld64rbJlk&QoG4@dS{nXnm1fg}&U{uBjZ7e#FptD^ zXWx$W{!nRYs2ahBPEH+GxqNXkIozF92~AhYweIZDVd`rtWp4_*8oFs-f>{ zJ1-;jQx?X5*7jURJWP2n_-3np1LGZM3RR|v}8_iX1j9Nx~#neYFwYqp5%NDuX;y|XbF!r`6hYA73Vp)SPk_%_8_`taX&mVcyp5NGQ z_1rnDXoz9rssmpo&Sp#zTBno|J289{S4FtEUjfw3Pk$XS=Dl@Dx@Z+`3T50VQ;W?7 z^Ke>fvBhv@FouHVwKJ2HMji|2Sq!&k4i3f91xA*ttn{&{Z&f#^?1?AtYpEN1`YKKA zk6kTzHsmFm{CpGMQcY}QS6}iTo&2dR2j>}qMlt!g z2b&*2r;?|n=Xd10UhGiA_gBH@;?iSuBB)aA>t14RoRR)@f>U*z;Bd?K{CS8sf(x-^ z7N;Noat4z4B)Xo`v*T(kX}!TE6oO2RVl@fqMOCLnGzd28;?$oQInJt(t}C@$=alkb zqEKBJSPeT<%%VW#(W78_6dNJ5ZXze6Si6k2*B1|GYuLUy^JeMn4<2+AZ8oxjoF-c? zrMy5h6lt`b@&g6-O&VOhT2q$4jNo$9lAKEVhUSG7AeKzO$5hc@vIzcHg<%to^hU(k zqOHqFS-z)aX@`>;ds(Jz`EjE||& zY>%8yo|5m${*36%b(zvB57Opfi0NqozG0!MIOv5k*kA?AEZ{f^JZdG2CVk$s(xIr1JqpeCuu(e0~~Hs1E4zXn~nP#}Qq$QwEI$#WMk6a=@KJsiwe z_MZX+c^iiQ_M9z*v1c_O5a)3^uOy+BqD|IT%lDn@vR@ojXfMneXjn5Ba%2 zJ4`sJmPEy{htrFo1nQSm1G<9Kcoy zgWPyP>ErmqSvrV~5C~ndq#};Z61w{l`Cv9isE#Hh2D9dAFgd8%0YwA)Kus^$g1r;x zP@|`MJWh!WwCs?H%yU8om#3NM-(;MA=m|Wuw)crj+|M91caaF%y?uecCBF}5=j5~% zkuJs1X<$S|w>4mjTPmMoZmDLRZ~4$L4A1{Z7^7A9p%wDJ9E3W z6$k3J)VF(Ilh40zh+bG}*DA7Lk-M&`Fq#!a>Vqq0`n9%6EQJkyjlK} zP_7Ry65MT93Ph)+T)l2N6>lXng0uX)9L{e#oqt)^YpJtjnt5(5gIg{{=J~Srl*TyF z3f#S3ai*qNb{H9v2I;}BjW$VXB5B`LHVqpBcIu!SF6aI zLs|1oKc5l$5LidH?28yr*GK!}MBEYMr#K~_EgZz??(bJg0!KcZc}}<>V~TlxZ9C#n z;@QHtq*+lhEhe-&(j{b#`VbeV2L^Rw0{p z8s>nA_f&c0u4zO(jE#EPUsLUm{+hB*`f5>~P3G$8TtjQ=+jB`}p;6^+TlS<6i|JdPnB#fe~Z<)RT8rO~F>1Igc0}Xt(|`+SLHs#Ga_!o8LS6 zBiyA#+P&u(uLs%vG&@wNHISd4X5)oS3Q-PcO+xnw^3HH}M1(sbq03rkTcM(pIM6z# zWjc4SioC89sTQZU8eU96(9liGk?$UbVO2*!J^whonmA=@+ zxNjz0LYkzTBeLP26pFn2Ec>LU z9V1{fC&voXNci}1Tu$|PDK>IyQ_1OP*|9!)(t0VNO@}(dfL`}Dz-0c`Y(5K$=0qWt zxNRERJ_K$1gU5#YF;gcM8eCN+*w; z>0~wDc)#&?`kV3^6Ew3jFD*}Zy^@+zQK$Xw(zd`5XuDy&T{N zk|NITF!DeyIngDv2_1)~W)PO$vHl)7Iz{LMR|q_Q>}?;TEkHGly;ZrtVD(P|+?>bz zdg7PI<_nB(G6DoNkR-7ZedylwSEQ@LsB%T=Z~YB-9`9!jgCYJi{7vSH^X~YYlkNst z0pZGcR7o!a^2E7jRp?b?=*W8F9OOtctH>!ye4H*`n#6-9~9Z#!{ zuZgYl#Hq73wN=i{hzC8ZkOzEUTY+2bvKje2x`uIi`t3=Z!wi)d|_kpY0YimgKQT#i{KdJ3u zw_a&Q{oZG$C7uNvcWpx8E%XTWc-~J-w{7FjjG?ee1+Y>y`kCR+Q?q3ATmFnqJ(-xo zhR(J21ey&qnmidL(E8%pY`Rc$iTpjpGeQ^huum1DK@zGvSNoBB7XQR=3(M$FfLW3XIzyrjcJ#SY=Ms zRJ({_XqoUnt6N2VZcYgRkvP|eVVIUWdT~#iwCXnyv%)S>YZa0VA@wYga!M9vbC<`W z8?{FfM8bX=xdbuYQ=Wz#54hkrk5-#*7gznZ0q%(g5UlFA%cBJ_5EtdFx_nCWsf>{r z4}6tp@Mzs;`jQGj6nT+;mvG-5Ci)%z$|U-R!I=8qxTn$YR)o*sxzxI6&|e(P3-lZB z+CmPxAY1F6Oc~uH&*&Oh9fP^RB*g29P|tS9T>+tbc6bg#G>Q1bV)7%V=@}?{;fXY4 zBl-F}Pez6T`CY9EkNOC3Ibj#%ySG8tc%jwdCn_;T+MXNg`C8(_=VL`chH%jrg&wu3 zbMPH=afk9h^Kdd#cv>aUB46v-w1G^|c)d9YH^av{dU@3DN%rtLjQOk#3#lt|xpwbj zI7Qb4!DC5#q9vmZ?67HVEmQoZ=OFug`SF)0;M~yGJFAe7+y-a6!oy|sy6%+^Zh3`1 zKx?mVYQ0t5*+uI%DX54d4cnDrqaixm%F;G$b!elHzm2*l6U9vH{FQ>!ez=pdQMT#6?yS7b5f3qHBQ&vwp{ zp0OYyAl2M`t>}1@S&bl$EKO%qhk2XkvA6ZZ z7~I8@fav$vXxRO_6}y4WrOJrkD&OQTi@4@+2&yHq$`x(}T zG+cuR3>)U}fqD*dAlinjM#V#9ggvSZJZrtx?#&bYo072e&b%}2o=5S|9bt={c9~X^ zboLFSxr?6;pj%Be1tC9;W}ltk))K`Ehf`H|}n_FPe`D+W~-)h;hl?Z)GK!^;-%cNusJA7(+T)bYDT=;8%9*nA9kZ@lc zujk?>`s&KIwZ>mlSFlMF7KFimytHF5nV0Ts-(EKgMS72A2S4L4iZQBb2Cpahi@Nn# zQ49Cyuf8)Px&54y_NTC`*rhIo4~b|HI7xXC6NOCQl~jIi0K!AmD3D@ zM1W^Pz{F(rI98Kb9{L*hN;^|>i*mI&u$iGrOC$Gt)C~$rdT?cho+^Q+!Sw0(pQCVh z%5=YuW3!&{Hc7jWD5@UAejk+V&$FzH%z2Jo-i{k7OFsfjC;Q1|QpMy~K%4t-Tyz+JM?GWO;njIWa!h{vu`oQ#LuHJ)RjEpjEnMwU>D#}T z!r@43ag3Q?32|;NgHYF!@#9(C_wq8-d9{fYj%U;Tkh!wqsv(W{rDY%n{@PD(H?c6 z3v$Oj8Pp=vCP4NuBnKZ|T$2DgMWRQ<5Qy%2pG*E&LS& zGcrKuk>^f^H(jkBRiVfDFby-f-rPWMlJTeGiQyofGTA=QsPV}0tW`&e0bl!+3z>XI z99Qjkpy)GWIbvjgiwd8iPqVA^=Wku6be@;Vs{cMyq>bn}U77+s+7hxelQpEbb(;!* z!(ZV3C4TZ{Ai=caZ>(V$!$ZoKT;b+`yEmN!F7ot5HX%SA!!dn7p6QoQgw5z}!a9dm z3{g#mUn^oB%XmcOS}HQ#&@lq0bKjzT!c%h7H!6HtPM4-=3UE^j^zyF*u(oOCBLZ+E z`~QR$^|xDx!2aTaGoH2>=ZLYBKwFOc<7wOi5$pVTY#66Km@bN8&7WW(m>kPGzC4|zH1`2riCqrOUwg{c-}NGNBnXd9kvGgq{6PfCn8 z3hVz0G@32-ZAy%9h-}o|^D5{TP4V$)GZa4KhKtCqN8qXkJ9Rwtp4ACezD-+-phCuZ z6$s+iRp&)g_W~={iJNflR=&6??-Z2XY#PAK`xW2bAX+XG`X~IGeNHgu9(sWQlcR3I z930#XyW<-DKj*haH~=N6kwi>kpAgnIl3`O=bxz$&{Fu}>mZngfz_|tiZ|u59`buL& z3Sw}L_CoO~vmAF7se9vg07&q#W+`wur6@}48Eri;#tDc&-%x$<7k9Q{kp35}<-cGr zSUvr17h8XYY4j_8|HPktSbZDtH~H^+kLPK3Pwx-OU5|Ulk6e6Y6YgyTqiD8}Mjp9> zrqUF2Oh^&)qT58|Q(5JRj2G!|MB18n)}q5xRNB?GmnUO`xzPM(GxW}q8U6?_jqPU3 zmrti+>>&-Al!1A9>BJ^PYI%1W_Mv%8`}ka%k2)sXtzT35fDSMjPH+^?Rg;$w zvKNROIo@p~KV?z=Ya&^**+{`DqMpu1<;dgsaiSw6AF${O*!9~MejB$uF3L+*Z~+bm z01trp^74K>@e7*y08LaCM!P5XY)e5invBLI!+BOTfWv1miMGlb|C_jgn2}3uQ!zjH z_~Zpc&QE81<Y)i&9Sq^C$f6Ki?)G0w6r$0C=7MeaMEcqTbrYsO)% zp*Yi!eERVTRXAp|(Ia=iPJTAAeFS$&*O^dgw6D`E*zB^vW}HkJ7}&fXa>Dcq7WZ$U zJ-kLms5wLzc<>n9i7#^m+G1=%C9igI`9_dmXKe)#;uGOG%i&RQiyxOP?pHyayR?o{ zn&8rC?g&X?-@6-MaQCZ+&l3KVQsIsBn{L z2gFDiXe9507(&A3zlZy>fN&`d$tUH92R7)VaN+a>>_FDt{B` zuQ;>i+Gn%jD5u?xsfo>}4ka~m`J56ackD{$h*sYYt#()$=0bAZ=do&d!Q&oOWtZp} zn(XRvXSXd^sW?6Z7R~={XO z*mSQlHk@V}%3V(;qIp_56s1PXHY|xTbJ%F1?E$VNMP8q&zyD-RjYGmriai?RqV#h`3H9&mqYM>>z?-yIDuRn7v1{*Z7o2$N3>Eg;-Y7SwobkUu zFDa6gtvwE3B@N#ApTC^EtW&$6L^zj??vl$1Kb+r!iSHmo=CX+ilE$R9)YHjdc0rT% zFy3;WV6tY3F7FhF38p#SDJT_FZrC`NjSO-H(-$1)ADs*CpjroAZOp1QVydvvume;U zclH`DocDeE>JOeXKe0xPDcJOMn@7znKadh(dma|v6fdiA>ld_7h}WgzrN^NCK<=12 zVUDcmT|I;l;@fEE4)la?)H%!~riAo; zneF*RZR7Rt>C%+A9&7{kl_ua;-A;ts3R!!K%zhc+&y!8$y_eZ2c@PwU7cwz1Vbt)ksb$0wt%&j#pSU)jLkU!m0!% zr2Z9lph=z;uMfV(cd6k;>JQ}|O+1Up8qK0D!Zuk%=gc+;;@6MY)Sdq!xPG zL)Glyp>8ISH(zB3Os@s`QZII#{2Zs9N?Plwn{ip9--$2~#14c`^hpQ~CN4vN`l-|k z{n{TMuh%vo!!*o4Oj^?ND$8a`8_gfvIua-k1Oo8Z;Y%w+#$;VI*GQS0hP?$3w5rqR z4GGv`&uQo~$tk;7aw>^rrQ&2`VVmr#Ydz18Jt+3(JWPiYBj;pi7I>{V85nm>O2Bg$ zCzYn$G_GBxI!E~;4skE9ua3IpnG!9n1?jS|Cg{`(tX-3GAYCFmaB_JH2S2JkJY8r) zk90IsLG*X9`Wv#*l}S8fGt;Q4f+LeCBM!I2Q~?jcRKcnnlIKxr;|&l=%j-jeYvM7R zM*fHpvFK`6;b272}FrIkz1V`Pq1bLNC!$a~cgCXOhw*|>H8)@Vxb^-0W*L}WvHS-cZGVG1?o-4?y0!k zMGph4dYCpZmF~&Ht{sT@tv5XG$^*1+jbrF#n`4mQL1es(-+N z>?q(rKb1Xz|4Bv%nmVdmCf{J2{_>NUk{*m~!!W)8CfmUCv06#RIpt*_wTD#_XfY=YE?uiYMzvkRaT%N{;LqAt2l|3CuH6Lbi;ArL4J2W~XV5vT6V zP56fI@6n1ew;mRs;|a+VvAkP5BHpA#lyF3}R$<$5A=WboPoeD(y_T-GHG4Okv>G!S z`+d03h>QGVAv*w$qOA+rzJfvI%tAJnQ-FQ&HX8-s3om^n#SPx_w<*miwN%>SH8INt z`r_LC%VUqnpB#01t-*Y3zYuz6RXq0k}XF&*h0u$}o9) zy134`H|0@#YGTSEOj>gg&OsVsbglb8HojlbLq(UMhk~@+6hYNBBejB(`(pxZwigsV zEXCpO_QIlv_D-iClBxg4J`w)?kJGOlHO|tT&&lMobdb#N%eupFLRS4B`)W7u!12vU z50HR2SvAPk|4nuP+u@yUKU~vMbbu)uWWk$k$e=L~OHvd=!x+)lPRw4(dacL3>cfv> z=S1JzcfojHzl=1(U-WJ=~ z2t#Gqhmq~+Wg~TYS}N7Xuo^tZ2Hdbp|BYxvGKZgO5v%cafL4bN(#pO>>cuDy;NwMX zd|(bqbcqKR+{`l)ae9qHH={E%_yt%EKyUl*Zmq+qX#(nCooTsZM57o z)4as`VOl8EUumL#e4r@6eb>=HK1h^>V#}bc`}&o8Ny1__Y>3yd>y;E+K_nI`no1UalNXgQlr2SD3+|J57qiis#{1avENpIbJo0tekSA2L5!93Mb(E;VtAC)b z@MM~T(6I6MMAU+9i}zJ2R+;LU#AsfJ1Y11QY}&wa);-{-MHM*IEs$Fdtn{*@doz)Ai{{pXAz%Qo3>Tn*cd_Y<*M zDz7H;2i4>|t$d0teS_^&_vvSHux1ngO`21q*&(~{am_e@-5wk zt<RLH%KFE!jB zpF=z+dfc8paFhyRc4kz)+%IL4Oe8FlvRE zRClH$O3T2lzBKQ)A42M)5G3fI>`+~K7hg^CF8{SANO#<&+g6kMt-sY&LGu5}x`es? zh~aJaO`)b2`8baqM1Fmn4HddnPT@OjgjlHlk5iS)#tDSXaWXEC9VZkWqhKRt+yFTa zJAce$-w_L4Z{fB~cE6~rfyNl3k_MeJ>%=}BkE3U-K?m4b@&Pr|K_m(d$w znSs7y-|6gC>>zyyfEv0(?q6`igi-+5=TV}aI>x>@k}1C7>;P%|j)%NtI`&6;14xu%-3sCQBVNt+H+De6_7h0+DFDLws&WHF{YNtj^k+%!<2^Fm;$d?+ zSn}p-_EyIpNwI?SJ9oLtn36>udt`b@do)6b>uyfI&n9<7mEXS$x!sjRHQLT@5t@D^ zr|sZkF(;@UWJSjSVAHtZy$B|^k z5mS4Gyt@WINypdZz#8_+l(yow2FTPs@O!hnoLRaET^_C$^HuF1p@UAO+O<9B=})59 zvNQY}gAMml(Jr!PEjxHh8>FEL$nC@!2hZH6u<4kg>&#t{Hr@8#_9y?I>An@0v5aO0 z8jDwajs16jF!w$*&qqRpACjSvuf_P57K4DPN0cju1e zNPK~?sY3NMqAF$kjP%yYPlLy}g2@Osckd+hA>*AY9l0U5lpXYBhf4g^;|FDdoZG$4 z4M(n>TrFh>cSNrvTa)PZ?6k)KI&$-d_3YCf0Spq1!EW$E1lPfa^=#kK9dT+K4<0A? zlFQmID{y?5YoHMnpM@2y1H6r+I^3h$it0TPS;|2%J+g@ITRgd@udLuauT2GfV& zdDBet=ZEY^3MytKj1&vv$2@?;O+MYgo_VYzpP(ZfAT6=_Vl(-gkJuF*0i;i0C?k>B zCB31JLab3uxC+!$$Tkq3b%S*vJkE29n!gh*bCD zQFQ-{Jlu$AJ|1tvV{4y#&S1kPD-Ma`y6Cua-kTHif4$Z3^3T+NkW>epin=@4sw&pq zDXfR*%29bgz~ylba${)K(z4mtBsgcn z9C#C@cj63$Ra=&F2WimKNmk!p8IQ|@i=+`>%Hgz$3N4JZJAAq@8gp!{@^7m_)W$XF z5`e>-7_WP(q4gfs?y)QP4s7~6dG&C0HK6gj>>mS9c*?)8Qfay7*3#xY<**^W<|tkM z6;ib*Pv1{|_^j=lO&7`RPuPg3Tvf>iO3#a}JaL$>)VQ6czX5wgIRY{l=q_fc2m^7Y zC-<#3mXv?OhJ@uFzp+05uYPju-ui&582uMgC4*f3gw+jlpYX^x9#RD5iTmF{)UE0y zNtER><_Gmm;uL6AfrW$U(@p%-d-Y`eChV|NSJQ{v+CZI|XgEKAkQaf$Nf!ctOvE#o zHrz?GuynJNzVW_|PrAx~GsY)<$A2q`!U27kx4Fh$JA70Tm@I_*O}wBpJ+yaQA$QyY z*TLL!>Umzvls#8?Eg->KfOE?C=0BC}?ftHCYx1gs18;<-wWzu$tvMc`2@>D;II?Za zaPWb#PJm65sm_-uw;S`wm>uk~zM)TR?NUY!)xnD3&6}gF z*-V`#G5Tq(v(MAoLIWBpgyXH)IdmsGK-ACpgQX^%xpfDUt?Nv~Cp)+!Pq)i{xZ}(k zTet#Sn6TN@vfcOtDf*OsqPy&eYVNt!|NM(jS=FnuAI@;k*PrsiTWS)SUDe2E7vV@~ zt`6A`O&rYXb}&Zfv+B?E$!!oVe}kCJd{li#f3VV52hr|AW=A0Iqu&J$`MG^gj1V12 zMS;XYPq{OcLuYruxNvj1;KrdwY$m@r!D{Z@EcM8h)5I<2=rj4fHeLO-`4yQS`H+oOKA@$H@Div4-w8xc8|w85aTf)^0cpTgfk7P*ym&%-s-*1k1N<2f^LuT3hDegJ4|X=3E$#MlKwgNsDjWxf6i)k zBMq@Bjb+ delta 798127 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%0Dfcj!CSS#qt^mk-Z1-yZ(TFR>bGnhl%l|psc&z^ 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�nd-SOo{lx*ArFQUdyz9|@YNBM=>_m3RocOOx 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%0Aj}W{sP9@$ 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�sCGh*JC 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

0PrzcL=5!bC^I69 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

%h+xbn1LLBDjux)e9=zkRg* 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 b(r$K=b>!}OthlhAt{4(0R%0<7w0O( z#YXV+Gz99aOB*wLt&%Q`lJe-jqL}}<{yS9EqHkL*2KLJeO|azF%w8hc!op|5g;t*~ z(uqOSFoD-zVo8=?D0@_V7x9vg7w-j0ItX{cFWh;WYBTZkJh(kdnYhUS{LF7DHZ%>|YADg{Dgq=^lLVWfqln+RxK;TH)~-{jlFr z&FQiUz<%}Cmc^btKMB(n9(;wxC_m+G7*jWwX_|4POHP8JN z;za}Ba0Oc<4jcIgS6Hh!lpUiv#G zk^2Ku?Wg?iG9V2!5IGy(W-1-bTydp~WMVnxPllNWf$jevB1^?f<7`LQ<5zwqVWhCCyufy~;Y}+R&N`!Tn4}qalA^73}A-{~;Bf z6h zK85&Bfp~Eh5pNUDu-v$OxiML&6%@&#%Zy#Bm;Gy*F@E{;MtJ`=5`1Ilhih04A)Gue=r4G~~dXt1#kN3jV; ze3S%f$ktDQiq*0Wqf~@wH}VC4vI!;k5~#Mx)e?^<-PI_*C6_fyp~2=|jVmgpDsHg3 z*9G2djHHUyBx{gl{?+;kfNkP&S6OtG=|95!OH-o+sdPYLtB`CH&BOwqF08x44An{n z)ZY%6q+G_JtnG8`4T903T;{La1{XdtuNmS`#n)6QF0~XzFSUQ7B)A2ej6&-h#d1nnLu-qn z)N)X7!^$QNnlp3KoJT7vl|_{m!IeT6teCvnSI`)7MRk}yu|wrHY$y%GR?8epJT>Y! z6rg>iP^CYjc}(pRx@0{be=K~~8H3djTw@F#W+ne>W2x5DMImS-zaX;zx~G`{Eq)a@mzw<5nes^b;Y8D=%JYPDij1he1*V| zUI94$T^XAGR`tUhijVtb_$3K`32^qiKQ%enFJBmBdS5WTt6ZS<9#C2hU1nA_?i;$R z3(CTD0ydXp=S)z{@ri`1Z(DH}aD$WUrV2Hz8p!T!xm+l>J1tUvpOT8jyBxV)Ur^#Y z*1O~z{SF)%2|YH3?xHi{^DbD>*6)LT-+EqM_ME}$crv$7r#u&nsDIoh3^G?ao*XrJ zWrJ<6+C5gVTCGe+``?RSCqobFyVg~I6&;Ng!m5M<#MT*CT~qBh^*`diYgV{dE606P zcZt40JB1pd%ceEKj25N6ZwRadgsibzsmYf^9D1IHzyCU$)X2q2hONSkI>G%HwG6cX zeNyYiMcQx4FY)3Va?6yurS}F|JFRkzJak@*Z^FIE$9>LW2G+xS42LibEX{r_U|Dt+ z89>`TErvXtU&{b}J zw){uuRS#)~VoN;#?=9>ZONr;7-(m^E>+$^7Ev6S|hg zHad<^@Uik}E3xRW!`iY`&{J2%eX?Jf{w4DIL_9y{W5*(AC^wq}V|p-|dwfAM==X4tt{#L_SI7mxjS z^$ntqV&hZ4fi+$17|(Yrb@5dyiu1RF8lm&tAGHmFeu6@*l1k{aps-bg^`d%iV!{-H5Yf z0>?ttBVr99g7k4B03jaJGVNUKQ841J$QsSgtb=0mHa(_F7$O;FlUB3|V%Y?u)rBAC34EZ!f-7pTGEzBs;Gts5Z> zj^p2|b@x6JK^buziI=|3-%v^88-3WPxk)#Fm3$kX=oE2nHhyqZ3OeJ_7!Z~!&Z#KdAH&xL>7r6Y1Nd58e@*zFR{UMJ<2S|d zuYh0WlZ&~jxugBk-|#ozj_<@yIU*MX>F})cnBInnyCI^NRu3ut#lNLr+nQcl0n5+! zzTu;rX^M$uf2c>QEyGg=Ij)IcQ$*UB3#v14pKl*c#(cs36K$O?APBPP`81Y0G`eo% zb0`98-})~uXwPWU4w8}Fbgz`c?xhqdffNU0@j>~{SBz~}Un{a7^A~fiO5WH}QxR_3 z;ya^xwV5bj{fmbN>-5D_T17^hiFc;)ZbF*fQX2O_WP7*Adzx}B-^rV-qG}l(!ygOQ z^$^y^^2Ncr=*;CLQRAi_2VfALo6}>{>)phq6eZnLT1Ri1^FGCs0?uTJwiy0Vur9Il ze2T`Ai)*+YLwqWhhjh@zC(oitOc2z#uIHZ;1-h$r8of~`ozi_I_0Wf7d07WtobXUA zpWQ*1B=n2nFLluM9XO2eFvyFkl*i**T7~ld7&y^txe(prp!FWO9cXIqw3U>Ix>;f& zCHmPZ#>DV0A-d@FZ=(@LeP9Y@`SSJ@Fs{ofr1HP+6g$T7aY&JT^0pL*+frOd!;uo0 zx(dL)7R}cKJ8EA58$0DT#G6%}=T7c{+7^Rj`Kb_Hrtoz%7qmKCw>^}H=e3w3D$tTv z=RqOEC*W)hpP|)tGk!r(*5SFRpRhv+(-Ucs6F;KZ2e4!%o{HfcwK|hIMi) zW4NxPE|YB`4D9<>iH$LQXh&Vo&Ku zwjs0lB#1Fxx@iu@u`m|mSg~-~vN;(c{xMvf+M0Yy41bX6Vj?F}%%;~vq*1z4vT$sL z;h`A5jA1Y-i{YD@?jE6k4F8Mi60;JhfQ&_ogSgL(25$@=VkRZWlzaZwO*^{DgHtj# z8Vq-d*)jZHoi1I7j^PV*x)>oghOgJ@GK7#Aew3aaV)!+{vwtJ1pwJN(T~NdoJbs;o zGIWlB$Q)+G`bIS|{63nG?W9W;;Iwohp6qlqb~xTkz3+H5f4h?|F>XJl!Tz|$aH1g9 z>T%q60gw5I4dR|?ehWxxdk85*tDn%>rtUn~p6~!J(iFE+BpNw2?N{j?aShS@-p=5+ zDVjgs8DsZhi_@Qg)w$x8{4?5V~7saWN0#U#&|@;O9oyL z%?eZywF??08nr!WI1CHW9Nvnd7@8U*Q#3CO&6FU~w6B%+C6m&!0tH1y_kW*fVE+EU zA1~hfobx%K^EvnPoafvg&nq$NhqEi#(H&exzVhT5gLVa1bwBd7;FOY})*TA8!fY@6 zELxiJPjEWE^Kh!d5kF>k`fhn;BZrA20lXs8tn?x`QrsZ6D;#`$8DF9zL+E*&qa4q| z$!oY_iA=WnkU8bO0%mxy-KCU~K0$>@LLCQFc-;yq)xIuLjw@{G`#D znaiH4YMv*cDrXcFo2&^hr{A0w`f0FztDiJjafYz_wU5QF_S6D*XhpF7 zw4XH8@;hNmyq*=U^O_ZuHalpxD5W$wA~JS#wHMC7?I*5|_k+tt>wNG@6X`@zwHJHx z_A}O7K%x(23)quXXN=i$r%pe3O9!fL3+p896|7=yLbB(6lWL+5IVDNr`?ot~If<`0 zoMN^Rk(Z* zE*-qyOQIxhs9yLeC^Ma~aW9N!&O^hLU>mR4C=rGK=EfC1Q&|r@&96O@ptfsna9@jTIT_NG6mCkMc~SHuC*iM@+CY zCb*f)#1e4{f5MzU93z9Bok3tdO<1~y5XKN}x2vTwys80Q`#H5VQW^e;gI$xJN}#RC z#hwnkR3iY=Ge8tkE{?dsy+_s>aTBv8y!7+hZVqEM5mih%`R&)<)+8)! zbB_w;pzw5Toxs2mb1Z{5V`(lbv?K^^I`uTCp@LI?L|dhznBt(yY)T{Ya=sT-CB}LU z8u>&;Z0Kx*eQSU;%wh>DI9;L3rqC(9*ED(4-L2Y>>cQ5}y|^v8K7t%MMR@EvWTP#mbqL;S@QT`wGeLw{aQx-+KjZv$@!dEvR~x zd&QfbNfT5JcEy32GguFi*3xJw+Ok%L=-M zK`gIrDc3nO2w%8OC6P#(9+WJ)pRB%5aVFO~s5j+Ys%CS_vq6-&5llH1S%VKq@h0hb z@!aqzE<(o96nt%OJW)82$Kjf__dRvRMg1}^D8itZp`|t9yuno*1B@pjTo2tP%fD4E zJIcKg%8VlZu7@IRl8KTS$uf!X6(8rQAUiimI)pno&^|l}&!UhZ`;s7OkgtLWFJ9AP zQ>>j?Dh{%52$JdsbAwiXRV~SXfX5z(xW6De4RtqBkecrVLz~FvbQMz^V80S14H+2z z9`@ihv4{53cWT>iaj{llxEUysu6(`Pn@z}{0rq~uQvZNIh^}2;sf+Ilj^IwW{$#ON z$K(XqrvytwBe1B4?}x3thjq9e6f|Z2$=bW|d=^wa!!5*jQ_$*4zYDZ~8!Qdvl{WVo zzV;X_$P`ai!$@D^eIS~fm`CB$^UJq$1zM`~aA3_c#mb@rp#=A2#+1Ki_%N^)iC$$B z=6~+^JTS^A|75+=Q5)#24a8%`D5@DD2aP2|W24ZqFR)^Soc$&5Y_Y=jXa)0WVC0CF z5sJ}9W_w_r-%5+IffrJ<{|nRFVti4_)X3~0$t~R)n16fais%UvYDd_{%>t%8uqIkD zI*H~>sf4gkHl)Sp2DYwLtV~Ga=N~LB3(U!t+wFd(C4tUT5|2Een&l)O%NCIdnLK`J zF*3GfxxDnfz-CYqnPm%bTPBuoENpPrK>9OxRIHUAC&j$v#_`_q`E0^R7Vu<9_^k5z z22@m%aHBB)3+Bzh#nIyp3LSo@DIe`+1b*7woEzs0xok_x* z&1;{gFuWWXIkRP^V$Ss1a9&P=73sD_qg`c_NJJ;dsGVUF|BaIbh8F^Bbc)DvG~bs^ z?(}$LVCx*koP;!f#;m~n{pRuVg&UL^GXs~-B%vn>a@enjP81M}S4Ij_o1P%gNJdtt zCy>x5qE#Zf`L~#4$QfbHe^kli zUy&V^6&WPnZ5stP!}87if^iawKeaz>;}R}oU<=3CE7vTm+91Ht!^d;Z$G(}1T+PXo zQ*B`zKjOv@BEnH4t>-ag%;UFMnzcuzRiy%4Fd?i+T8}ua+030bPKFZ2M%j(qxbZyWQ?L)#p5W_t+i%RJZs9C639FD1} z2?6MDNSAoSANh&-ZZsK;#pnvo;INSNaBD4BBH>bBh8^^ik(v5t*#JyW)tf2C|D%Yz8WuXf~`F6jozbY@T`5%a{5)?01bi|6#MV`6mSU(2s9CPq zu_jGdHb%1KW4F0GKE5ocgDM^D0t#_Lk5_ntpUsg?(<)fFfu%gg%} zD5Yu4ta5b$H)KM&ZzZ>%Bmf^&W6wI`8A=LN5`^VI&tTzMa);lMX?m`P%h7%2uIA&@ zp3GY$Knq!`;FEQo7riB7iLzqIdbnzH4+i;M5jTsO*NKp)!u+2~7WbAvtE1|<|5L}j ze|13fo#?q3Vbn}h%vnY2DT{{Bu_kG&`J^(<>Q$D!%6e7kdtNAO5K3#&_5K}(Vn;PW zg+g9bVWvEDym#?vWTnJ=4l?m^9wvE0LX%#{JyK@m7T-qqQq9Fw3S;hzD3_0s&M$%j zu2*rI&0r}w%_%Zq2Xs+4ebiC#K^K%Af(hk1iNt0PC$ zTvQ}qsc*fam~$m1$iL+ZY?YM)6m84*@y-0q;{pjUYWMWW$ZEmk#P(<`Z1GCCf=BFl z5ZSg2yD8#*k$1o5-}YqPEe(WFPolYAnqN85TmjsXV~0t_MYCf5B<=+qUpCLsN1d-w zVW3v)@(r&O>{B&HdmwLC3|j>Ff4t6{LmW+{Ii}VZJ!D-d;2)5 z=ZSk?&m{@iCW9)#6gY=vaL_*a4RkiYAY|G7i{>%_&2*GbA6-6iYRqqxiS zN=iOVEn+{SpbxgL9+`Uj;pOR>-w3vfeyQ_6SLY9p4V6ckI#O~^)Ul6y)54ZNUNO*d zRNZxxw^$tU!KinIVfIpVztcF`I?e)&OBRJj#LrGS5W|;n3pY^cgBNAkGBWJ`i}mP= zwbQhkY6<#Rl{b!xiKOOfs@V>6vTC-|JVQ0xgU!NM;m-a#8~Vq4}7*@RS=jR?Q_@wu_s( z@>XGkyJn4IZB~IsQf{!92NY~9aG$~;sft2N;_`?b$0tQH~`-Gq@9)LxiJ@^V@zw;G$jw_ND#Blu`Jb#;TP=M6I^&h17cDOZ~0PNIYD1Z9^ zoz&mbr77ZO_AMeYw={ZB2OEzgD`uA+7tzja4OZ)h zHD8Q0@-;jT>CyS5M{o2*vjYMJx_;Gst95^{UbFH+@ALEoamI~3sUz-JZoh6}ek6HI z=FUlc_uMMu@)?(=cm-3h85GFHFKN%V(DNGYCNh%UWb@e1!cInzn{4dhs!2yqe;XP# zG>>Z9u$PMgPxu2jJq{-$NGlG%jWLd9_d^|&@6u=ru%AUUNXccYH5Ta5+e!~>u+Id> z2pc-^aa4HoBj%9Cc}Qd3U9e4T-rXPx2#J2PKz};;6Vm{(u{BH)8KFZHkF2lQQ;*B% zaeADL!i)4m!O!ks+vG0`$;<&skhUb()NML%H+nNWHJfcZPhW}Wpx5Z=d0zaqgRkkN zCeGxwjiJ*tc$daKbyca7%v+62vPM(=DD!5I;2xRy4t*Af;PKRBCThwmsInxg?b4&F zM{Y^~W>LokjdOy=k)*l7kw`O}9@+1NNfWuFH1=l(N;N_Q$=!@$8vERVcwY?H*oy{A z`*VXd_FV%p6|2L)aU;2aQ-5kok23^?`rI+ zvZ!Fw$MUzK9@p-y_sK$u!R5pW-9)&T0FwMJW8T+Oj0|)Q%_8h z@Mo#Gf{1iXD_;>i#;cuY)e;SJiTG&7yFT+hG5r#!?l_~~m2qgP%cMTnq~0q#>U+a* zFO+E^uBS6DE#0N4MK+!$R-2-nbKTG#x-)2gbw=INX4w^A=A_y_Zjf|>I7EGJubMu| zVVr9Fhl8YpxYcU=(LqwZ<>Nk|BpQ2#M=^gwI4(+ku0+jzNX#T71wXlQGZkmZ2z&$u z)*u$FTy#Tk2+MR3*sJLLT< zyoMcEv+BpFh`K>R{^w?@T{G2=nd;h#*O^q}Yb?L;7yCTDRIPrFSlNMKJU+F|y`u|Y zCadkmdX!VV+P+^e)f?I_Mxx<|G}ShwFr$cgNMqG^k;Mg}(P{}9683JVF!@M?gCi8o zQ)+wZ1gR=Dp1Mw7iaxEYQ&w}sWkYsNW1F30pUSyUrESnMH6(W4e?&52L}zHI+Sy;N z%iwf`sC5;`UHHww4z9n%lA!R*BXkaS+ZI!;vM-O2hQ@7FIXALO%KMavStUMdr+`)B z10{7X{u4^Rf2@S3w*Lo8EbpkC@32a&eM)W7}Y5X92A>1xMk?J+j*4~dijqvHo3D^RkKNM zEz;K8mq$vaanGxq&$E$up)V3GY$U!_Ilo~eaS@TY>^k#rBr?B#9EnDi{Y0cRJdRd5 zX;w)>pOS;Dk}p)wT2{$XD7omW`BzD}>#-82%076AG~5!Qaz?O9hIo|dnU7c{TUE|Y ztdc4y`PgOuS4rDpkCLO@&~jBXkJSC}ZixULHrk^@t#Ybaeg1usTFdJDQ007=)mH|6 z&8}6w`s66-wl5yXYPHJ#(-6${K1KXsP>4)i!DeD3$;7=5M=R7vZr3f;~m9C25^j59Co&XI?RCqfhOLL2f2j+$!=|A)~Y%gQW zQ7_!f!^TMzVuX;H?}-vSEME!bW3a!wywB`?Fz3BkWgQA-#D_8q?OkEH(`G1V4!QV0QGSxU9m8fd5S}rkI)j zo^VqizuY)V{G26hz-4^_d$9rYR8EQwSdD-g*CW5jZKrC(ao1LVxpf{tB&F7u(R$?dSUC-w-m_^@VU?zKXfRO1Jwt zFZtnSoQe-gEs6il4>`_f+K3x-$qx%HHX%ydCM>hBe@fcV@*{CTlO-8UA~D6!IfaeH zRN_E7D;KNwxS#U~iA2W*KV8L6*I_@LYKY)Sg8mX$tr}73V0W#?f8`16B=KQ5=w};| zWfWTf^Q+WRn5fD;F2U|;l89hGXE3X;pGRLLQ^M-o;^%yi)mH_5 zzq*Qg^^HL-$z0x-mCRbdkoz`a`Qwgm&+CID$+yLeA|%{Xcie_mex$n0j80=2=!c)6bdYXa6ipI{xY7O6PG_ zq06IC&x~Y6qDkhGlAGeEbNIQ2J)tmtggwF_O@48tpJAjQCSapR$)ggq5?+idgz+Pu zoiabyQ>3VC{?t}haH`TgF=)oe>9H?%gC`(v;Sh@1sKf%uTFhOisyOGu{9IvvjxfJk z#}wwS(*7TVbY4Wc(z;r1FISdsR66WR4ebyT$wv6+YIz{DB*F+`T$B+S0=HL-J$rI#A{}I?B&A!hLR@$dNjkl3q3VY7e*y7=@w7>tfbnukXO0$`t zoS>-KBsY5=LIKQr1^YbIbMx!soeFD#d_uW0{xd~sje@PMsH&vu^5cgp%_CSAmuzE% zX3i+7pJgzcARUP;?!Y3+G-#DHFZ6Ok`~YQ=3fb2dB-qO*Z<;;=dR!TwK^78FpJxr7B!9g=Q8NOG-XEJBs}3qe>;D3B@kOk8x>{E4D%JK{-tMvL5@Jw~dH*uV-mLbwO%zbt1<_p%&!0Wv3uljFD?eIv6;Zg-B6 zj?p<;-X1yLk8Q+w>JkqA>|vRo$T1~XAh*j*(xH}xgysB5uB#M7ZLLS`7C9ym4}^s> z>8$HUxJo)cmAgKbdx{1%?^93o99MjuKl@@nocXUW6nXyv15+h756xM!Z$`UJk~K5j-Pd;$X)Z{o#Y<8Z-};EA1fVX zxkcjVjDSQea*FokRJ8RB z`r6mTNu#+}eeGYyNmp`D`r2d6(oF8BzV?sI(lGIM-->rQ>6@*$bYu`mnM|s&~&H=vmYcys)eSPinaX4bY^|j9(hkkXV3@LRs z%L*#L>FAcZ?#Zr*ia6*y@r($MjqZIpq8OK~K&aIixy)Kt9@fgHj+-*q-!eQ&3Nr9b zkH5s>qoVWgWB!CWAgdNu&5tO=3?S*E!ae{O}+)qT@ma#H*moUw%d}$9pg}^GV zkR+%eLr{j}KWk<7MG4X<&3NKvSLVvpG%rl;WwKLyM`ZTT67U|gUuHj_fW+@2GApwx zGY6yz=7kSP{f)x7wC+}OUX+5G^AtSJfy&3Ks;#iurqyu|{_?2L81v3&A4 z5D?E!lT5ec#g3IS*BEr4q?5-`OHDdke1QQMPiDzlvCy56%}*8J^9%Q+#7h*sywvfE z%=PNOUX;=KxB9hTE@wJek--p2N0+cb#y&SvWQlj&zxf3*H&|CKTr=SMg2(j*S>jc9 z(wm1{E3;Q5N(Tn91$#Zk7XLf8MD?SN3Y%pT>|$WdGW*Yo z(&@TLk`L8cSGdi%ERpeNv$Pgx{G>Q2C4^j<%szdB)WlsUB{QGev1{2d#WG!mzQaf6 z5+M_Mr^vg4V2 zB97TGbja)k1vYqgx^GTmve*!>OLZ0BbljA>ev>|K4xI463^ZB;PEv_i!EnHMJHA!Q zj=8egu%}5&fA$1#<2r`1VMfF&-m_J((_Okn@vY?w=91K2kt7{%nZ|~X$zwKrEQ+0B zz1nQTN_~V*KcuXYGdKeGsZh20$oyOOVBcE((AM3G-Jiya%CaLcE73dC%zWwbS1v4w zh^&l=ShLy7a}RlK#L(7i#qKYw#lbdg_Shw^jTmxJkK4PyU-__L5zd}JH&Lqg-^KbK zn8Z!_L@MDXua?gW7|QIF+TWTeHB8$qt)Hf#zv4$FSV=PH%xBaj*2@Hv)KB=>B^zlg zeP2rU^%do%VTtlAe@}x=P`b{O+x@Zj=NS|0virCF%+D4qwMp%dCQ1V>6w$)QADxp| z{XE6ex1_TTlT#TjaacJMfq5}^Brr2Mo($D<_0d_%h{c0#+_KM(qX_jj6lG}+2`YjN z!8aulrm-(T-Z$sSKFh_QFrK0j5yen?l_>Qk`;JlQE{f(-8FQufs!7rj?zQNOlZXYoT;e40DD!*)p<)u+C1L#{D)m{J}DA-89{>trITKtkjL3M%Q5poS7=M z_nV9@_D@Ug@sshkR>P_!JK)ns<#=|sjY3cIDa$@5`Eb@o?y0lx!e%T<8j8ycbi<32 z3Utw_N&HG(Of5duVIZ-toEN2Oya$QY>(YXG!)=iT^9(joR<^jHf>S^@6-45A^A_}3W26i-Xn+An&1r2UnyrWyThK?Yu?KfZ9ga zcS|Ljd2|R#Epw7^%HuQkNcQqJXW0a0`^f%|d3s(6TX*JV^Oz$P;}o3X5qgA#k` zv(n&!PQu2Qgo+y_QWRXRYb3Lmu(0jooM1GyvaAdzX*;P?NzTg%DaoZ}$X6mNR z+NnvOS)cr6Jr20-a;Ht3$K7U6nJV=cGDOC)NMg^Kic@AQB=&VvrMmQV$-MC-s+#-9 zAIJ4&B3bz05jA093adVgFsf5B{cvS9vw&DKW?+9WdECB4Y|9W?JBh3phUTr_6rQnj z2;V_V?7q)Q2MvmcG?-KRgx9dbNEs_Tfv}n368rPdNrMI%JhG<$TQ-K(J3wOJ0$Iyb z#8#b>en89UiIKEpCWKVRyirzm=j)15%eYNh{vKBHEK)yblXj{l;-x}KcKqVmXeZU7XzLbbv?7OB zW@QV=*WcvKUE=8Yuh_mN83#)*i0ucGr2{SJ#Q6`PZbcID{|gZ*Z4_6>?=HgI*+ns2 z@?tAIX^&m}MxJ+GOqPFebqZR1+dm?kVTzB9bai>Q63_PEY^>QVp2@TjJ!!b!bYNxp zn8G)a-jj$nn}{UIyNUhC7TIOzG+ zjky265sxIIY{bV9(_X%X8B7e1W4<#wj2Xh}(?g$cN3_^A=*jv}70m`r@`LlQTJ>YK ztTyC_!lRYF&za2kkfLCvoJ!~o=;$wY$%$S|UquTa)>qM>`cKj0tbRnUi(q5yM^r-f z1NH(5t^ij>_bPT1j}lK=$uD4cK^OCg7xhG()%5&w*`7FBRZ~%T;D#a zxGLlc#XtTJ#a}*Fyo@M5^uH9dmuol=L$Rr&S>&pFQg68b6M9ef>a}=ceB!aR$OTAg(aD|}hG=HHCtOb_kwIx`wi(&juqTOim0lea#IA`?HX|Q4=oC8} z$V^>0bu*fw+4}no$nE6_j~3=s@tif%D+snSsQD9_fiOCq1yln9qU{GF@#t4qB3FG}j{% zS7A1TmjhG)Ujgj^MRmJPG9g`G6l30hKgOIVF`DQ47|lnJnjP@d4VmFY5AY(eAE|9h zMZiEpE0ykcKX503QWS@hr$L{^24-Bnd-b{)bN4K@NeRedjs-==KEive_P;P&fldSh zJN^cm!ET_a`}98WMJaT5qtSdB_S3-J?lW;bHAS_*5o7kAtv2}q2H;XwjJXxE<`;zY z^RQcnIZ%=53I*fxhs(+F~mIP)U0sfGuEL z2U-vi2X+AG30{aI5MY-LFL30rCsO%VXOHPcLi>+nU8!sUCzyZJw#J-5y2A~Y6PeBp< zF_<}^C%=O|@Fle=34opR3g{=mLEt)&zZR)P#3V|}oP)^T0dIafY9tU3OaihGDd}!R ztOuYhB^34NpKkZ=WPI-fS&djeSP7xkKn?H%aC%dWS-3gIJQu0X1_nZTE@;qlROt+~ zFCYrM2+(W5Xy7bR4VYeyF~9s;jJXtM<0~=d6`(Hx<|Q%aDWH}k_@RnP=D6dH?ijNf zxIRC|%u7eEBPAOap{*>7F<*0k8>ioYCQb+pw4I5I%2b=07N||R11R&{w~gj0z>#dw z#mHJO%6$EZ#*_=$WI%<4*&#n=q1x04I#gjao6&rdu)s~55OZ$@YAA$;0uq?JkICtD z2uG0|*{Gzs;MvRLMIn|2;5Gms0vtqf2ckRn>}^t5ae0+;dLX1>MzK;>eYV=fhtDL0 zumI+f(6#~87rYY4?FX&{e7lmq1ey%$cK;Js4Jw9=4^V;Hr-xl%uB3Cyl@>Y)1|A&b zKtQ~|X)Xdi0^U|Y3SLG)A!jQBxdVI!WN($zf#6T664FLQzyxesjDlIDHVHwEtIxy@ z23-X_0yXuZPEipKsI<4pq~M!fXjgFWz-7z8yOBA&@V(^cwq&)CYamb zjxpbSC&oO|vP(!CAV|HUHkA?&ThSw>pf{dwG@nM`awyR5719Ub_789}6p=xXJtLSh zzl;dVe}kg-7_h zM^lcU1axxcU?c!r@d!w|X+Jhj)KAo&ix5sj1K)mQoG93mj8x}=Wkk&LLC3$QHl+i> zKt1fayOeYqWUMgr?;&!7kr+G`^5AYIvT&1wPg!~C3$`d}70e5>va-zkg>(SSHpo-~ zPM`;o{{r+|U;+H41ydI4Dl8HR-T@tvgNNr>qgj=T?6jPTBNz`i8vG7mJyJwQ^WU5VajDJrZLJq8ek9LLZAdfhxJ_$eBd$?WHEx@MN74}g6M@ETBV0b?uh zIxG!90?bK(Y#DlfU|_r?eLJWY^cPSP*d0*c*HJ`31n?}73}gdu0IPtOT(#+AKcNEz_mv-9L`i#O$q z0zewNoknGR?iutSE7Yb8;CWy!>O(pZfX?ninZGHGl)qJ^p!3jv zi={?$4un<$RtUWfN)*^&E(W&3UJRJuMPC6tcY>lW;i;2`91OsdhigW9SE@|~z{@}a zWX!ZLRRMEFK8gqS66o0gNmZkHXXC5O@9FaR<&t7;I^EO%K_a2oCaeT1m9!102d)Eqpl?4=1H1(H8>tdwy$reu z$h(Dr5cp*HJq7!aBDE+)jgk7CFy{4w=#zr-J=@g@XRTf=<}|wcC9YLf3(0IHpZ)jFS(fDAmVG`r1brih(u} z-gAv{F9Ro^ZH&tYT@9=SzZO726iMu0>8 zedzQ*C@SCAhpvFqn~1Cmd`AN`iW1zZfp_pI#4< zYrxlX42#~`z3NgZW#+3Wa|=|65PWsC4;=w7%YhexB|vjiQxipTD>jhm?D3_zfEOSD z>OWH2hYXShT2@1_1R%Yhb@fy6A$T7-jdzj#AE4vF`-tfvMn~_*p!-0V`TZ)2nmCs# zrhVv5@Us^<1XL&b(48o~1eEri2^2*dBysx-P?X@o1K0os9?uIw$+rc(f%bc6EOC0& z+q^+Wa|?>whLKAN1P%fJ1v~D?=d_+PBS_;QYQ+#MXpnn#D zgVqB#C;QMs*z@@^`W6(ndil|NfS>o{t#7^B^b7p813hr#-$#8;_MuHc6fgqr&j1pb zFFXgGz?-mt1KhRX=fXuLefdg^*@zcmJjFieqdcPuF$l+4u@30QJ8CD-Xik@5cn0ND zQhaC$Xq^y)5zqi2W&=9Vjd-mAeSePH^g3t=>U9X*R>3^Qj$DHKMwq=}-U+Jx7?0S~ zF#H8P1ipp9D0mWoh^&Ko6B~T<(13DD+&;Zn1$Q8h@ zg?&HhJFve69bA;P7a#;gz;ocIN)e76t-BtAqrq^4G56t_xIbV&hR?lheQ+jjBs#-v zKn^?te-0GOAR7j#VI~jQp|gGHEpTf9?=9rqN)P@X*yi!czgz z0$K3qSC02H&HPN z4~2OLV1@g@O?X;>=E9!DLr*c<2W3D}H&ht0!EG*Z2=2k4WC(K30?Pqwh;;j2i%c82BSV^D32e6nGWy`_OX{>5Q#- zy5E530ytIzH`n>l-SGS^%(dWO2K@v024)Gc33v*y0;xa?dccuTXaY!WURQxiiNLaf z&tP5&Z^LYv4$ECw{)FWfnEP#4o36tAG0bCNJ_WNFm3Su1pTRr` zW~;`knSu!BgZCYH*C1OCa~o(KXeVe3Xcy=W(7T}24&)*tVE{FQCcyvH9Vq{GP>=zo zZg&9JhV0@%ea-ExpMbd>^jA<{$o7Di!d?c{0P0<+55P#kUGH`$fW8GB0E#UTxClcC zCK&F6j)VdgQmNdnHtB$;fM3eg=d!XeB^6+$MpZszv#~3d2SOTnJhSx*hZ#(4(Ll zJZvt32EyJADuhS56Avi>!*A}hpj~iF2dx2J1?m9(81yzU5Ebt*=oR2OnAgDni2Z2y zpr?`ZCrSD5`O}B)0Any5>cJd&(}$h{b1snc1)hGO#{m(V=rzzn@OnUJpqSJ!M*%Ma z#-kWufR_zWQW0H(Zny;ex9iY!LGJ-eVIFe;5eCfx9c_W31%d8{#T(`eFn{-4Ex8xb1?r797D>;)i6t7{vH?yJLy3qA(Ib#5zr6jy`U~Y zI~C0ok-H3imK|`|bQoPD=r6z;n7cuVf(0;#9>UWQAm0nC1$_;?;(ENZ1K-0w26h4P z6mSU&RiLSW5k2C1xbMO&_$RQx^(E>Es0h>qWCJZ;jh47V7&49^>p`2m8snluMDzvF zRy^qd?%&`qfx8yCiCABP89+YL9YQn z!2A%j88qC5#3thB7%bVKdqAzAAAy#Ft_6J^*bZ|hs1~!DFGJ}e*iQhbUl7sRu=l{c z0CX^9W&rnq0F0)!KmtJOQuGNt`2g}xe9})uw|^j_qvne&wBS`t!_F7cujgXwH3uW# zUJp4Cex}z$$pR5=1u`Mqlj}n#EkhH1&4(VEC89%so0%e7^@b1K3fctJ16KI`3pfFk zkemQQklO)(3aEfRSAh1v0fsz){}pOB=xV?QYz1!Y5B~^wzg0xnz&r&lWG(nS$n66CjhN9Y za$uK(J_SqzG>s@yP)iy-+=inKmKQ;HgPs9?0lHxC1UMTJAy7AXwV=MI@wf#(fSCqO z1MI+YU>A4`fj?mW3AE{L5uKAKqV)*p4tUAng`7br1v=>r`v29i)B{h0(f*c*{vPJb zh}}cbe&8u!jsi+nK*?$mJL0(s`zc^D@Di{OCW%ouB3Cte)Ld4cNWt`z%(EL_8A#Q^L&^afZQLkhzj}vun#y1 zx1p#^xj$fZ3#`W6?hK&E-GM&gY@8W-7hS?U7~HBsj{(<#JAe&?*DOmGMU8|4bRZ`< zRQ;5mUr?d0qVfPQ0UrRBKr?U%FhO<(CdiExl^g}scf^=UeHs2MQVon0Hpaz)UI82c z-Xh!y@Usu*4nX)GnJta09}2m-#W7~fHO%Xu{76I}hT~ZPGgbANDjY1hhO7rh0Y(VN z0tp|TiOYap--hKI&Va3cN#J1`*Zmaum%;l7co|Au zN88=mpgF*GEVx?D{-#36wDut9;HQ88pE059cIOVk5;G<*0)W*(E@nfM;Z7+rVC88{ z)+!5{7#x)Ns|4dy;48kyBnOi4E}sVBiajDa9W;9?R!EYK<^*6huz>J@C@AG(rsg92 z1WiQwf>y)56^DS-2rbG z=+nSrU=P-fYJjc4hHWVSnGn9(Ph(<03xN-T3OH5+^}rEes#s(4@2@c(g40zdUCb&-ooek`0!b%uuCj8DNx?!FQ^I1?n+!kYg1r9q9=k(9X<^yOdef5*y#Ufzo4bcA346ax9cW#j_{S&K!b!vyb74oI$0xSVLv1SM~eS$3xKnu)R zS$HfQPz^iy^`RP*8Rm2#ACN;6=KXmX?(^Jn?L1g}(h-*hK>a3-seP-)B-@NMqu~UA z4g%5vJFo?Ar$O&-)>uptTQsKi11FZHf?7|U;VcK;02~C)1H};j2eckEAVf^}2i0oD z^f1t$fH^=m0xi;Ws3Vw(J|gv_$)s6lq?nc?@VP+CA=Jk&QDqJzs8L}T&>Y=4Vs8uU$|2#Uy#6tbZF z9L&#yR|0H<*&AaR6(R$)1UL@-2^fxP(0#;xJ_qz&;23}_p-ifFFLGB<|NQtKp|i`fFJkAZujqm_HJV!>qc0HqsSJEG}KqJto|~V+w+kNca<1UfLZ}} zd$+s$02&cMc8-k1Odi?H(K8RLD^DBE+Y#8Gz$GB!f;K@;S*0%Tu} z6!iN#>29QqEKZWmBw`mjG$0Nb z0#COP&>0{F_Dq0mG$Gq3CNyYFADlQ7x59-LT$rD0z}ga&CjkL4{|f#-U^GBh_`N~j zhkpTN!{G0_1(q%d9tGY72EburJvM}lpOQEdMPP;f1qf~g4LyRlvoG;*gxMQ1UmeH9 zClC*G9y=3v5xj2btAqIim{)=>fh-5~%cE!F8sSz7It|E%9xEbgnWUwt^>A@)X(_K#sX0W&5^+zow8!fyBJH;^6L%K5<$ zOf4rYXlAf1f@Ll|hXbUtkW~IW6Jv~Ij3eRp6rhD$FyIgL?vCWUv02SI^p37FtE1EH zioEm04%kfFQ~9@t;qHcM6_yEALCn2JL^c$%3$c~-hMV03dp*#7s?$xjd>Zdeo;N2e za^}tT><;vYkL(}K!YP%z#FyZP8!6R$Ne0(rb2H5fv=fJ;e0=4+>NjsAPK&`wKO)C- zsm%!H264v6E6Eu&3b!{foIA5KaI$OB(mC0AxVW!!aO~_9X3!l-RSP8EwUNV?O_IOB ze_QZdFt>0dRT&wxtO6ShEhK@qrIJNO4qL_x-qzXcXP2f4{t{J&$K*ehG+`I^4Z}ny z6HfG8H*Dj#{u2L!_c}qf@bV#j3UjRsmu_Y2af@uFE*2MONr@OaxGiOu11YcCx6mS0`P3j*$nz`Ermn*o(T#pZW;~xAU;xj+) zStq&_KkKlf+FP>c{G>X2M;h|$QWr8aa+b}@@X4dex|KTQN-T~n;MNOf3(1nYrR2Nt z%Sf{F@Cgn$r^Q4)O?KPI#xU!Nge@gyZ&&_3X7Wg}?Ze zXLI$=XgTu^E0_nt8q_6<+IWKNc&p3#R#!8Rd6&3({}If*!3wzLo=oZr>##k|tz;RRNH z7UVyN{2Y(`3tfp9ApbqrF{{fttE*YSWO(F5m=soiGUWF|eyT@)T36y}k^-K$#3CW( z9KNh4b&`OY+SR(=bEQ3yE1e0^!l>2%YDyTF$2l=wMBJ8a_J(j^Co8##*(;fOz@V3kWXo~E$&HOE3g<0U9GDXYe(34 zrNg`OKgY%C_Vs?H!@3+#kwA?;p0m5r?1kk ztNwc*_ozpXV3b|#J?eFS5(z@aW?(HFu$Q-FDET@|=6sS^gI`zcc*P{kh$J4PAOVk* zuUYTM_;!`b*?@(8mjaN~8u^U4OELrpj~P+dUN0+q);N}r;4&}Wj~o$yr;~&@vM#JQ zwWRWMNub{+l5>Zz;d*)=4yB-ZR6XC5diar{v$Hi(F$rN?Qf_s!fzMj6Olj|AIyy;k z2!TDZOpcQo`6)L$@!9ne@{~V2_X?7G!*2VUBwBzdgty#}3^QEp#NqeIu)1hZq6N&a zod{omdc=03Va!=#cQ$tFDsOjO>2#g$WGlMGbB>^GI9t;%Z)Z-iV)YQ~M1}dTldZw$ zJ8{mGqIs(23xb%VtVA6o$SH$wJQCk@p8Ct3H10q`5c37=UIX_#a6jR3KiPSz&7I^& z-1oBX)o{NX!Lf9F=@B^EdFl%8Zw`O1CvAR~dThqwPPYF&LWG&RPFhF}z96QQW@;vT zbT^4g`Mk4W2Pqsn90!c7z1O)jPU4}SR%Gn$oIGPOd%SRQ0<)WNab%YtUglkg({Y)L zz3X@&uUNe6!car1htiH*SP}U&PvmEHVpBRZhd8APDpqPM!(++i)Uyaf zGf5fDjPE47(`T$jnUHAG#G%yO>73MQU-pvJ5dTc4>zPhRTxac$GR90Ci{};_k@`cE zkmth)Bf}RBVf03uPo;j$rlrg%!jnXLXojxSe(fdPPZ--QJSxOD$A+-3T){DCL%yc4&(B~lAH;Ev~T;(tALf?Q^b^W)?&&5ySs=e&5kpo-JM z?{rhT_c*rSwiNz}So}v-^Ov;kRreK9Av>tS(1e^{In4U`;f5dJ6pQl~EzS16e1O@>3RXaH zFa*y*(1I(XPToc&D5`RhQQ~vdYm;+R3iA~a%)e8fk`=V2zCe-Ty#4>!`tpFN>h1A6 zcNSo{SJ@m9QJKMk0U?+EhKgCDMP}I(bVw~=PcTvdm`2|W7_#H0?jKSaWD28Z&{WCIXsEI)rRj<(o_`a2bdw?KX)rdWqJ)F{>UD2(kwD43^c3;@s2x_;owQ3 z(gLY$XJ19b?K0=Dp<FYd0#;by?vR|R{ z*_&#$AZx{dYWF++F1IXa2B4`9zBJSCcVxfzw*hF4OBSRWq>Af9i!>+JxTok_$AW%? zy^r9t?@>&{z?=wt@QCxTI%H{(!egLJ6Do0D9s=40vX=*gG(v39%?=<6F%PUAx%njCEXad(40JMah7Eu$%P8M=w5wgz;b1PKQ~ZnJVh!oJTc|x0UWsT z;q_4jMAb^MkAoa3mA=IaZo^)o)H(JDw=S7=OG!nTc|GKw zU;ps|%R0>KN~p1=1418b9)KzSOpR~;4zfxJUk>3a z2rsdRmkgA5+xEQWoc5h9b(0$yJ5Ed*Xajpd7jxKz8$Om*DUczz8K2ykhInE^2CL*b zG4=7yCB-axO(gf$yoJM1oHz=-`YLFHh9@Pl%GmUbKh`6TT)^FL{|Ma9_xkF62rf2B~?(?Rl!plN^zs$JOFXG5>QYa9A)4xLWmsn^z zef_BJR#hgMrxMx-NrpPlyg)>vjs`Y?L-dd!;`}X@IdO8Jgpl0>Act zOMAb)w}bYfUxMk&YVGG+QF)cYg&8ua^)sunpKo#irwlGbbCk?GeHk!~%DT`mtU?Ez zotcpZ#ufHF=BxU%MfgfTE!fNaM}LZ6t~;nJ1N$lnTIt1jXTWX})GR2&ge020El6~{ zUuB%#57~YSvj;>IoUO)K|-Ke@Asu67FkTvKhtMOY*E0_19X*-Vx6WpjdAGx_Ill#E~ zcJ4l+0?C6uz%kG1wJP|1Tgp?1vQIIG&Cdh)IDA!Qw;5-@!`op7)Yh9Cos}kRo0ir zeXxohF=sO1r3FU5=$m7HwtrJLEo-p_Mh5sUH+!Hjy}|Z^>!wmVz0T&l7GwcXd9BSH z0&K6RU$Oa~HjhIzP#9w#-OtspV&^LU>I3}ppKT$_?f9~vY-Xo^Zqh&4h!^kng@Vxx z7|dSdU;2QJsR3VvM;W=< z7oj@_;Q^(G2v1;|u$IVO@&#iWK5E#@J_9NE(Jd?bm(W)c4pqQ@5ZG z>a-93v2OsG>}*o|ET8xBseQg@i3$TrDt===1vY@s3ZPH=xU=uEaT8ad51{vY1un?r zlfa`xs^9FhEbHUn>?4$b{&)Pwzm6QFq`Q}!vzpbWyd=;{NvoX}1t4(Nwa zFJcgx)Ca9U2Q_-+I{&xlZvqRNoO7^19;Sz2Sao6|9TVMG_WeB|f>jJyc|}L!^fZ-N zGi{$3)PVCTZa%6rWf>w%7%GPcj5(yJq6RG-dBl?6+-^q*~S5g!-pKp{!AXt6xP$CqRX_}+b% z5rF@fv?m2M&9#Pvie;dBEm9kTo0bw%idZ2`X^q>NUE~M!6e-CNlms-9L+bV~b6=8_ zs!K-mkET`B)EVxU)ZXHcVDnLG9WScL3tG3}Crf1olX?ccC2W6(Aq9D)^Vx>h>05AL1w!b2E z|B{3ILt;);#54!^Rh$@EF}1?IXqbAqNO9!0>^B?r8+3rxHVi3+kf}%A%kSD$Qnv)v ztt2swNH+riMW_F6Beamltlj}JWy$XqW&>bR1E$NzLimhc*^f4A;aBDG#gUqh`K%YJ zW26K=y2R<)FMGMF55U0nhF~dkxz&H93X3MLC6_V%vqdqeSVK2903rjBboXb+XT{9uUSe zKfl}7UaBG*jMvnQ%KKE-~a+!sERddpkEI9I=BpJ z6x4;Ew2|4p2_=tbc_fT|9I0w91U-3T*o5l@3nNlR@L#9nj*HclXsaA2So=ikQ(WtZ ztdGdV-T#mcov;4gR(`{_=xF*K+w4TpxhH}C-(I;qXww-RBUvo>6^BYzNoMAate((o znb6AzL4}=3enydCJHCUGLEWX6l%q{FY%$#0kHEf#`e$23Flw38ccBTRXc+q4)L~RX z%#Z?0m}xvXhBCgT7Vx<4-$k3! z%t-xrHpU}i{bR?Wn+0u5Te;^xW)&hem+&zg9$+f9$sqOCURy$^h)l%*w8uFQ&1BXiyoBM z*p$HUgPXzrC(7K?@7YTh)-v%O zx+x_nnvP~vG;4nSW~$0POyy@;g!uxqTIgt@pH(M^z{w;<79p2U<&4WAf4V%3il2Xz z8@Ha-gl8cO!)o*NoAd4!Sf0Px_h(Go-`yX)()JZt)@*ylecr+oE%MpQ74EOW?k0`` ze-Gi(*Rx}%hTnw7sZzN)bxb5{kx75(&1s2r-=A<+CUAMl{lSd3vF^b$+Ge;88BuO*gm=;KF8lh6eQp(~U*oVH{jq&X1u@pfpe@QSK^bf)^gv*QhK{O! zFrYH#2L}dORKNM&Zx70vGL(@4_rQR$8mGW;I(8YAQ=Kr|l@tja-|n%j1&%0_DIi1^ zNR=vGV3Uo>gmD*4sDf34l=b9m0X4D5qQ?Z-%h4a^915`Uq;x4WI>XV;c*>Ba@%G#1 zmGGK0>y4hksF${c=Qv04+Shyd*L$L)B96$li-bR2J`0Q$rA9%gc3ZL0T~pn?2Gk*c zCd4tTCz8)ew8RTJ0RaXuBeI^wlm{TcXK5v zFbYe1G@gM+CI%=JWW11qTisxbMl_fW&LJSQViAsqRt06R!4h%`G0P{y#SF1)GBfI& z%aX4*`kmU|OeTbg# z37q)_nI+W)-IjvxkfS)L?4whN5d{E=h2+@#6OndiH@_1_)`;PwO7tg%h_#yQj&xEi zfK4)fM>qKvLGhCjZJN>_zB)A(v4bv8qDT}56@b=D4juE2+s^;6!RHmTxvRtC)_CEZ z7&oVrFeo%dp0Ltwp;qbD9YeZ<)j`_0SLTXe%?=@XLhh1o3+WbSg2F_wV;pFfQ|w?O z55j7o5;5kAV;{m{yC0l9qEY!@5JukX&UTllrrzF^OUtwrS=BALzk`*7#S5i+AERbQ zPL`7}2A!+qiq3mk%epyZ8ap=16G7ebf>^aL5cn08dyypqXyfcdb7iVBzbUfxN~rl% zwn&lrJ3p^GCmwcU_+PrXztX^3;Q)%D$nGSIg%r%_w!~rz{04*_BvZ|}@g<`q6e!_%$V-^FqxMS4RVguHBSe3KsWc(M)sLuDugNG9z`CA(#77y#Z$bz zn|rX4^{4N5abrGX$Bv$ljD!kdkI|{y;?&Jcx=VR2iRj`IKVwy+ry&kr#&Sq?zsqvJ zi@)7f%BPdSE{^|m_I8!8u1@}d++hE)R>=tP=UESJcxzxqi1Nv#gba6vIXZR?-W3>hH@smpS_i!TMdhs0{f8?*l@ymJx|r?|_qzl$&IDlHg7>N>fO&)L9*ra>fOZr$T_ zPKfqjU6yaV_$xG^ zf2k|%z1!;#8VlW^gt^3Y)@MjcmnEZ%Uk_q^L-uuY8R=lHX5D{cq?C)hxMKhu{VhgP zq$Q8>UoPYzS=BWcn&QmEDn0i&oef@?*cIrn(`vfHbg5xsf08$mk1@{AUJ<9J#TW}> zHXRv777Fl!m_6Y>_7hF5Pgk@qEKCbKL=+K9J^ii?jw9wFqIN|mm$Qi-<)Z%6mH^s0 zFLrXjY=Uc4zFkGmuzxqDD>IKwK}4`xk6YzXHgMesZFP}I1Usgs#H|aa`bEx)Y>I>r z!cDGJEWSR2AwxO7E2Lr;nEX*0MFkcKIgaU6#W1QEFJ^wwYDP>#g-AS%x{bORFOnkE zs?5AOyecM`XfTW)(^U$T0e0?>8nwP%*w6Ue{oRcQubc&&ejcavhLTb7lKj&|f{|SJ zs$XziZt?8mJ-gaEW2zcs$Z#aVnjdqyGh;!NB=!*s83Q&Lx=fUiB6$3T0PT=2rec;@ z%XTrY1t%qB8!{xWT~WFW)oj?{MjnV)V3d$>Axzp;>|F7nTGC~abn%j|H@+h*!X3?w z{MEVPVUaVjJq^3p36Mv22=MZiMtFD^C9B9i1i`gE3Au}|%xH~A`8^y4014WH!8zYK zCzA7!7`)3L*)$qF>>bso?CC5QvK(-_f$Kq@r@%3kbbMY zNUJE4WEne)HAOBfW{oTk&Kt zX>6F63}TyV5qm^<+b@2D(U@xOgz8!({M*xnU`u(B&|1kwWP-+DYo#4qUy0b`p2jvI zsMO+&qMwBXHLomE&W0p0FKSB9TNud0Qlr;ktopMKanB&15l{00;z2&9at9yaAqQTi zTw^Bd&IN8|ha@;XO#_I7lB&y|%1oER_|zxu@tMjnzI#~3pgjl$VMUN5Gk@V;+RA!s z)ce44nO#8UkzhHee zu>D}KU;7Yy*VEWm1UV8}%zX>kDb`{~B8w4w`_tGa1UV9E8Wa!;Y%q~e3f*LKB+`UD z(w^p_N01|t#{c2*Uy0-$iG&#iO;$h6M9n{8V#?><{t^@UwIh-Fh`r=#Y%78siOk`C z0PJPf97iH^5c?$ub_~@c#XZLmxUj6x1>uCT#SVJ`VCtMfnD)6Fus>Vi4|n%WU&6*$ z{-Wcs4@;gyMnz)S`jn`@;KpxbM+TbmY>ys5OR;8QH)9$#*jxFDnuE{L%s9pe!1^iN z>TNK>Su-7d7e$?pV_cD7o-OvC&_QiMNqy{+3cZ>44bweA9((s_+HB*8-p~b8ij8!d zzj%{}B+?T`5ty8lp-5HWPb*f!4O@dZctBR)>+m;y4*7ue7ApR&>zq7`4X2B)bI)bL zapB?XTtXK6%FwBZD2x_LI)2i1?no9pJ*Dy*0JAOc>~n#ojEtN`FBlCl?hRplO2}{M zEj8{fFjj#7C_qlyAr%G2Ob6r_J0#OigE&Y2hw4X!bcia>iz*r0u~P-c+H*s<{OD8C z;F5S_^+2MOe0!byJe!^CdHWhJ29%TFtC0kH!X=YyoD~8T*UKN`K&ljhDXl2Wd+=%3 z)?MRfZD%#~yVtoj+u4=$E7!T!?d&Y?Z;{C~Bhw}$Mv#?}3c9jCf}6>z30J>eS(_A#a8 z>QxX-C_a(sHFJF1Rc1^9$5rlZE*mASx>{Xzm2=5swe*Rr+~hp=8QOf6dnb<#rFUQDcIL5hlXhMWgxgSG z+V~w;%eUGnuvnC7 z;G`wOYXNDna&bG^CG^s(+}@q+Xb}jrlO5r+-)bjc6G+)JYfa)%V9dXCm3zFCojNu5 z|1e?+XN7W6x%&jk;AjHM2by5wHfx$7%tD7Sul0jnfMpav{wnv+d{zyS?aF7Lr9ZTC zjrm~OXrz_|F`UL-E-E=8`-ow|C+U8MJer8q|KJ+O9*mL&CfIG!kU~xfLOef>72(<|c%uZZ+`9FT``70W6w<=^a zc?+@fSCYyr+?)b7jDG(L_h|vE^xS<#@v96DRh=@lFb$t8S01{;nG0Ayb~+LqD@hZL z$ueExS_|0M=^#jFA-jrRcZDk{WYvmfjLD!)zbRA~FdYD^Ed3SETFCzMxj9IVs{(@t z&ZCrLuVAGD31Q@e6zW@Tupo^OxuQ5CTj;^a@?SAbn3)3>NIZ^9=M<31SGa;*?ASmJ zMlfs5v0oQT_DSZe={6}`Cn8M)FLFcPl{f6gl+nioC~!xx(p9 zU}GxfGFNC~XUV%T6b9Iq4(?AA`=-2F@Jq77Yh3bJe?9#ZWH{ z7v>r~71Q0p-Pz5)Nnh;X685n1^gl0i#e3LDztxu`CTOA3{M7--tK@KRF8_%AOmM#O zQ}SX5Cn{o}8xe=039mdl+%fg}n5j!{GodTbLLGnkGWS{$oUCr{$k0N6W^l>T!7nXw zIP_W2TannynLh`(sEc$PekWrub9v+9Q#$}*no<}Yq{2`b`vMrUK=ycyXWJ@QJa{D7 ze85{?L6`#OKACWNPt?h*373h-<&UF|fVANlkg(o~$$*2%k6okoFe5_Pq7LGEnUfZ? z>L4*PJl#=h@hvEuVLc9P6XNaw-6*7cwCJ4EaT#u&J!t0^6tnB-rgrX+Vs^6s*$!M# zLJ{Zah_xfxMG`eF%}C+)4ZsRiUY2j#xzG|edQNr6PdP3dwvZZ($1$BdtlMw{>V@)5 z2e;E@!&y@CR2c9p?+9@5-f)I--ZR2or5ciL+z=S$Oe`H-X$cH0hda3T5_XL8Mmy~5 z;m}}zcs9F#O_{f;#|Ac!v4WGL4o>+U>rEGSaFf1c)%3OwF6lcqWWuR-q2ZBR_`6Nff`ReTqEh$2P9|2i9{!DW~C#A|*U{w45XdsLL!b zK!j5AT^r|pfSocb7XuX~^vLZiYwCXXe?s4oNOrVwYYsry_sb>j`vdHYt{=8Rbt@>K z$Omnl(?K@mxj9I?*eO&RpLYqH2p(J5_x59-p$K;gLYJibswy^@PWWf(r*>+8jeg&gaiv+Iu-tm-a(nPWYw~ zL8U5jK^a4CBOVMhz+&JM=XD5XppBQf8Tj9KiTmIXOlM4&xROJxzyC=@JuW`Gi&)T= z4wk+*49M`E6g9COEDCFTTDiVMY|y9!mo_|jHGF8F$$e3DRiS%W$qBI1H>bp0bcqyQ z;wJvYF7Sw9M#6#-p>e%$vz1 zA?S4U-N)%NqiDke5@^TtWr!MGlS&z1qWUkqb7H)uFzP87&UQ>KfbA$$?deu?c`Kgh z`rwkQIXW746^jvpoNR?1)Ag{rSC7JJuY-Ur#6a`$*8XFymgB8Yj)?U0HC*sfIED$p z*yhTa)A^lIK1^JICp;D=Um{VlBvMjQ1GjfbDtej2I9AQ38E2V&9MhUw?awD(#$W@D zo9xNXaQX-&`ui{`gz3bK7~~K|Q7Vn31H|(b;Ziuh6O&wwIVIr8G>vDG7_W!KAt1oV zuX?;k^ICI)4X%4~hUL1Fkw^ov-9ZeT9&U9#tl6{kUakf4=5*gnZ&ywj#rglc8LvYNrUf=l{^RgJpS0xj*1kZhX# z>GiQN-Z3|!5LRKJ7VoG%jBVJ1@ zHqqn-#P}2|_C*Y`e|zNoA1y6nxF7c3Pk!VL3<&U~W5-gY65TK&=)}&7?anF?W15Ie zLLP95%W|}Zx3rLXhyw!8Lol+JMPHIwl8`JZN)eNPBQWv1mP{Y`KHO!( zaHNA=$!X!gfmDzX#4Ru`BZcT-6pSsw&DzFe9hV|?LS3fYUmVrd1=v%SzQ^i-D3ElDdW)k={r&iQO- zi|n{;a-3c>W|cf&-u_w3xa!Ya%%8WE87~sGAXABH;DJ)#!i=({wj4*px^0UUxM?%<$6UqKyhtC}+0lV$tkwtOILV3m0!;N4_>4 z(t)kD0kLBuS{6zwPGQNT7Y>=Ba#bYRyVp?pL%8z*Cj+pP(1`hQ&W=OF?G@%MB>PQF zYC@;50xWOhPFdJ7>vn$}@Rj`4|{M1@g3G^>AsYk%19kX(D1 zRCdn>jWSM>2JC0Kaa+q+XF9uy27%ZeK0wJ8(T~)-M{ffjbLFyLL1s9`{Ii*nYiRNaF~E+gcAy#V z+kw#c5kT(YHzY04$E~`j+0xVe!cM-YnY=9|+$V($V6gT^GebvdgOsEfy;I~{c=98< z;C~SR1-qvj4-{D1o2zr1jD>0BDgw{RnYqVlKsoI|Ex|v`wEJzO1)Tz)LPuZ${`u-= zOJy^#s@^2D;EQjAm}?DR$Jdjm`E5HO_WB z(m~G3l;*4yNPRYSzDXzkB2g7tLXuxB{GkMsaqx5an0}~E_Gun z1DCLXd5|;t2t(Vt#BDti%h=|?Z$`Cs^UaW&bDHN1ze z_H71)H{>wW8Js)$b%|wup%U$gW^UeZtiReFg~Pf5ax8{Zdisw4L?zp7?+E5&gjr6_ zT;Ff3GGaFR;MVogIR>bA&!Z1I-Ex@w{1@@vCOh$Df%tZlK%5f(U&Q185AhxU@i84u zj!X!|K+@a9@ z9Ht!pYw@qGYT8Gi6T{WT6vmZg3C(`WIWcJUpve~w#I271KkzSXq3rJx?>{c#%bMW) zyuj$KUNPF(B{uGp_-0Q2gcuObce5!ON*B&m$&sdgq8w*~cdjVIog8iwoJ!cZSSYX+ zk&o>EK$3tCXy)@B|MwjKdH9C{0A_q~6F2d9R^=&lz*-|VqFJ89ueip1-Ne29J3Gd0 zM-wBCg2^1b{D*8i*l7{ zhI$l6xlcqMV?Hud%Jx*jG+IQw9pK@P|2+%_iElgp9ta2jfIa)6)Z3}}#|tTP1fr+eY5Rw5+f%u7%|2moa<<$f!pcy*-%3o034}OY`o8h zG+C{-BHG$%9}$gQhj15@rG7i-}ty=06!c#L%dUfR&VFb0>( z7e)E<>PwB5OO2(xioeuIJTVc0WLOA~gK!*TO zABWi?_*wmmPJ zBdHcb4?Z*%KZJ=<^~pxd5x|%g3!7n-+0w{c8tuiRJkh8<(a5bi$7-e|HtvI0CnO9> zp?bgQ_&QnBEdw=cv*Q0Hi5u~1 zjE@F~-_*F&nG@*P04iopWBi&%yEk1$#jI{j-F#xxvvm3xD(2nBxDxp6IrzT$AB`ZD zFqFXm-NqD%AbHX1n3avtv({pC@b7T^&*R@N+iWc}V|EN9nY}t@Nuw?%WOn>nGf1Ua zAkjxr+BX`{@=+v+*Z&AxPwQZ8o!)9oZ^OKq2e4PE z6X`!gxNsF%71<^*F_ZQydk=zt9K|LF`8wrbywLE#he>G%~WaVrH1% zPbcQe_CLS z;q3;~RvRyEv~Gs3K@CoEqk6Lq9<)$Ox-o`!P>JkRpm7A~Yz?^Nrg%|fI_{||sYaf{ za9AGd(^HV6!AAbV{@LJsZMl?x*r5L0#y@C?1${M;KK_0~*bT9Dqs?ill)u}c-)I{S zjynz3G+W@(3E6HLTN}!ZOW-*XxmX7*_>Km6J7f9;x;|5? zjc;pki}$mxx2>@(;j0@MnR>l#rKup8DwR`;*G2kuHom^Wy4JRGSCJ23@fRE5jB!qK z@}Y+Lr`)Ff>h|$hr%4@328UfK2`8m0l~=%gx_mgr|I*-R7VAH>@#PKH4uo)?j@fpBbt@vhk-H{7S{vHCViWda}XqfLM(_#5>X8cTlWejlTD7GI)@k>A!EA6BWS5G z%K+r$g~9l)1)jrulJ6VfU7SAvi^H!P+_UyJaJSC0%8@HDImKdp9YZPkhGNg4>7XJA z+}}2E<7?pHHK&1lsfK;sV|U&D5}b<`qXGFM7xSkL+_4(=bKTz?bSHh=Ky@1Gc`|rr zz0m+O>#VhPj`=h$3(PNL9mx(>z#Dz@{08p*TBycx4P0(5>o?>%M_8D_O*^H5`>mGs zPnp;dmg}Z{r7kQNW6WL-Qz5NZfW1%$TVdMq4e5AiI1&0&<#?n|8#_Anvta=mXJv3h zKqRdUYN%dc$M{s8OslFXaLxZM3WhVvb?fHM!Ntr-E?UI6ZazxZV=JwQBa5-37{k+0 z{+Cav+_O?v)rG;O@MjM~O2X`O>6e8-?XU(vzh^JyD0}^-o0y}L{ zPyMzT?r;r#sv{G;AtWa!=0?38keh>k!|3F9SUcJC>{TOg?_5n<>L zg11m|!tVXI;N2zJZ}ot2Sc?+_DV z9meOQFxi^Xc>Vt8i^jq72Vj9_bXIP?ao4bbVCSr_>I0(btR3|{Uw_hOHz(|9XitLMI`XT4KiyXa@v@0WvQ z5Ez-GjH~wxcf(Cw>=%(s9CA?=+Kj66@ZuB@0S?KZa}h-`*wdYB5IlSk%!##LxW~?%x-fwJbhla|$7@%0U zdUSn2fHRqS5t6ZbME!ZObGBHr&p9NMVO?hx<|@x8if_1+=Pz>R2KHsStu7r7RjI@q zb==TKb|n3%jtgmI1Kc|67>`Z4Lr7O$YIrK?tK*Uy*$Kmcy8uiXeE)7gPS<8#s^eE* z;J$BU$J58^xJ!-faA`#yf3A*u*vJOHd2+C?(Pq;)<1%QKC+fCsllbL|{05bRWN4LL zm}drU){#2+rzJ(>R}~FS-0sD~fblxq>gwp_s`~58`Tn+S1P67SV?;aO5&OYGE)|Lz0Uzb^* z`JZD#s8{@R;!nq9u4Lkj6@F#2Dc*2_+(hJmJugv|OL7t){eGChTx&gIH*Y?i1@4d0 zU2&#VDJ%uvM_>L*Efms0m6^vamFj`NRGC`-HVtDT#%KW<+TL) zuabvK7->SV3+^@DIM01cN8SB2rKw+P{Q{Jr^e*^l=~)pFe29p!S^m3i zVWQ%z+eKnHPzInJDi59kZTc9^e8(*$HLqmsle_{Th>~@6~m6KLzKZ&u@8mtH*8t&)pFlm zXGgfcg8=Jmwyd{mxytM8Fx4^v@Tx5>*qdKmYnKvEdxdTQV|b&MligrPyS^;oEwE+1 zRLhOO!Hx)=gA&EtvSK0TQAI974h%*+LqLAXmi1gM_wEgL*yzcCY@KV%iU8y>Pa_kG zOsM4wZm_z@;95Sow#-PGB5feRHpqSsEVI+9gZ`{JPd@>nzO}q} zEyr}S-b=k}!~Q1G&0_E%6XkZslJs4kA-BJ$!jWNe1>=g{u{Tx`(p}Ba8Bg}SwJx<# z|Kvy%^Fj^d4MU1*tSD93stxi|Qnf@<%WdjpM~!+=vnk30N1U;u;mfPZJ*?x!X+Ptc z@0}XX(#Z}V(OnbwKIswK!}Xevw-4p7*GwG?R|#vl{!SP?)ivCZE_TACsv1xNz^D}d zl(MDzhOl)o}mpg0AyO4VT}= zhN*t6vHV!W|5#IM{FzLx27G(Y#rK{EIW@y#cGqw>yV&8&b_ue6_VW&ST+XB0@LA3d z*a2X?;QG#7dfU+xQ;(jwIe`8GF(Vt){*-28wP+`j(6Y+CuHgjZ3;z( zFn&i3<3uurn>{VQwzUf zQ{i2;=`P8_(9C7f+m%*vOK(EYIjx%e>L$C?Deo>kzj~{Rv)yF9U%GJ~Jby=A<+byx zub*E?7def5rEP*cT#B?}{hG#$G8>DXqD$c72^=`iPofwJ-+Z1dKpMpi7t@ZrWFESq zKV4nLCHJy{qA$2FdfBnE^7F9&x0O5G%TDy)a+i!lES1u21s!`8iUayI{(FcWRQ33M z7(-N5oO>VZIegD~gUcp0!|yszMj`u^Y~1-hIdu6XiVqST(G;&azsH-F1yamuP~pXoKyd6tYE$$~ z-XGndDq~Z$FRv8Pb@1p=aA+xhG&tV!bp{n)yf4Dwt`t8~aD-C44>;m{XW;=6#d{-E z7KD6syaGMxffVm0I07i%6C7iF4duseygS0mVZ+G{9WrnXJ8q9TscvB8w@<%p4VY_`q(L3Mex&74%t z&G{2@d|@@5*HcvKuKlqmZKZph%PltZ%hje%mX<`=5V_uA0?odZ@3e`w(Q=tDZU6yhyp-S#NC z-E06=F#&CD3*W*oXkQ(3H;AP0}#wqkVjbA8I_;`B!)^c2P5G!B;4C+)(AY8pfA7EtQLHW z(Z{IvMw1>S1xA8>19i71b6+H9x$% zln*BXTEk9}dtCm3O(HYn=xFlWIS4UlRjK%8{a;jBzN`uo zG=sxSf9tBTT-bd!VA3H0B^6M1_J3Ms`J&3Mcty~HvSO?ZFW)CGrDY#ecb3xWiB$6Y zv@DNG-dL_(SH)%BXB8<0$Uw(`Wq!LVO4Pps%rC*^nUAZ$f_n1~vQyx`47jfV<)exA zz@=5?=WUuiVIc#W2pZis6?nrv*;4K}Y9U*>hkrdlxYXIP-zk zDq!`Joz?uR6d5#WP01iLAC~-6K%7;j;o9QwdIOrXJXC$8CH_qA-qW z{6;eknHviW39YP3^I+zImj)SvlAHehz!G4EHFZ-?pvDz{t*W6qb8k@kqUn6FgM7RlgjPGkB{wk{eVp7!ueb2EhF z)<0y(5QLfQD^>h9$dC(m_8pbnkVo)flC~3Y=CeRh{w69mS2k3_YyKd2h7M9H>nb(0 z3Y7lcgYwm<$*id|Qd1cO`xN%(PpT^6ijTMH5pG~3?YXCD&)R9#e*&#FMP~g}Mt-df z@_s^VsWdF|enJdqF~=+0rnyf=McLiU$??iKLy@!kIk=+LygB|z<$NiXFKtfJh!a$l z=}#N~Q>A_i>}$t`Yw-FLmF#gFw8dfAT^nz%G)>|}f3agyc2~kNP`-ieshq=SxWit# zl9)i`46VA8B0DRKh1c-*v?zC0>S*Zj0zE^u-&9)iD~rS}bg7XhUt_-oi;6|i7IOg# zs*FjF9aiC^Ujo|rg^`DBsbu638%#yiugY+#gZ5^j6M+#(eFu-8)WP^BUYNK7%zE2q za!0^6M_&ps)2;u7=?9QjANMq^x*uUCk0&sARN_2%&lV0CTxfdX<27y)V^;MO5Bh6BgrVqeCmz%rFcu#RoGg(i|h03oV9s2^Go z_tRr|QKOC)X=hY2BO~!S#Z06;E@y`LZY{HbR(aFkKnNAtl(q${QqIv=Z2;C(4>+F~)0 zpvoe<4uwUCVDBjq?vL;iv>F5VeiJZED8f>sGxVwC0s>&MF$Jz=i!vX~mg`YPLgr=| z=oZ^?iC1N|hSDvkh(~4iQc8(UoaIRP*&}QKdyx$!G9mke ze&x70xP)9i%Y7mm5-_G214i}1HA?&C;zZE91GktI3!GA=RC`h5OdV(U1xBS*wc-tgpJTsmJxT(e>L&nt4*g!DuWUq z&pUO-EVnV;0z0fM)z_4YU?YJYwE6fovE-^#!s~R5+$F!!kX;N4o%hnIT}o$S2+PHP z55~Ks67`Z(d2!ch=fw^t&rO4-9?pep>n=K6iE{O#Q{-~ z$RQGRmfXOeX7$`t1j*2-@ENCK;(|qJo(A8dFVz_U{dZVH+K;`-3o;a4pi*+t0TFC0 z`+b~Db?HG|psMUaoJN)Qfc5F(xoAIpk^*lUnSYz@0X0}KV}V^XrerJ#bEZbLnOVS7 zR1`6b#@a@*J#YbjhJLp&YVT7lvM~{xHwn&blzzDU7Y?RL_Q9uwq2gG0(qVK88sa5K z@eDdeM##})W7HwA1k-Q0T9irV)!Gf->wl-jG&}$rhYddWozB$@BF$j7=z&W3t(U*w z+rn7;yx_(5FBRDd#hKrGNtYZ&4|jP3j)+i#RFe!2Fp<)wdZt%Am-+)XGnNL~|J%zO zfxjAM6$X)T4-_@_%U=G=UQ^n5?a@Jx@I!{US{8eye5pR%n-|D*4v`c^$4v$?E3f3G zO!87tVz9pLP2TW8sUxk#-<-6%7W^S}(SDZq3iZ7Y%|%%?>V3VP5=rrwber1u_SV6x z4&KvCE_Gd)G1Vi9dD9IZNq-ECi zl3fZkoRM^sZUqW07%?!B!P);ik?+%%(`kgwYNFrjCwm`GV~gC`A{s_pF2&Qt9%l9m zi=c<@RqgzMzK%#F8-o7=;idB~&=8`#G#Q-PJSpaWs#nN)G#;TP8ui3pFqy6K%?nAi zXyoc~y{gOo#=ZU|-xG!UXqAJ333kJ!*7XvzCsGZ*;cemq)-3gMaB^PPtK|n-IJxr= zZ_?|D!V5yg3PO7Yomc_PiAi%Yskbkw*Phhdwp(T4WjKR&IBs`|C2nhpAuhLsi+lFh zH0(`F#yx9S_QtE@as{q8-al?DJsfZErmIu?FAXR{rD^1c!NE$voW<$*!AU4!clBHk z?-jy(-A7Xa92M4gG+cT1(ZWoa%cPUaFwnZxqVZ_mF&Vq+KX30XXec)9+DC?F3p8_K>)7f>_$xLik^%~ zsvjhr{EFu#7TBuV^DZ^tL+Aft!)ig{$$D^b-1jjY*g1;-9(sg)&<$YTm&N|R(j)vE`a6Jm=ZI?*s?gmy37kw$Ltl6~ zy{C2>9P72s_(iddzDHQs10;O`^}zL^vx{?-1y$3`BY)IaI%`s@UaYc8 zQ593AvZBPvD{x7cEJk>jSmcxL>s{UHS6oZ=8Hy75wCo~%MhN^HQUd3#+LfCj zgYUA8K=`#}XyDh8GNME_rVUuZp)Qa%({1ernLgOvASWUlQ`VCrp0L!GCe%c!gMMrh zt9h?msPCq3FMvW-QcH`@2#tDgH+c%7#|qx+eyAb_wkp7q7QeC^?AH~gm1OXrb{iML z9)3tX@gH|X7I;u{zCa(8#NEJ?fjH~JM{&T{_7w}kZh=9#;7tL*H^2E|`T39X@&&~Y z0nGb5^8JB0C#Z$m0P0aX}J>X zE8cM3h?l9je%Kfb#k92#Oq{ALTD76-lr0UOn82S?uEcq}A6BMQK`S`7+<2!yPF7-} zYjsvPeZ)dZ#br>?_<{!Gu%9+oflDEcWc#-P5`MOyvP2u5;({ON}@1?ztS zY5+i}ySwsKg1W6MCgf02aNY@~bFw6n*^sP?2^pTZlvzJja$*!f20I>KsXAf3jpt%R zvd1UKZvQDxUXlin?{JCX%x`txciCdu87=azYFtEHd9E7Q9*2MXo-W~X*8tIG{fSfW z?E=THCkjRZ)kR+qzoMDe!%GY&m-J+x7}cbORpw1JFYTB~$Z)m-} z-c{Q4;Ks|#>$RPJHvJBr)6;9a&deok+0e>{6)s-~TJ4|`lC$(q)RNXk8`tH0bK4eV z_3&Duv_%^|AnTIR9&5%jY3t9smW*LQ(m3`BX8m`rO8EZP6+4!?F9}ar#I>fG7su8! z;Eu1df$99#1?>Gaxr9?nN>(r8qPR&CMKk%qA4TWYb-5RzHR{p&;j0GXj6()DM#_KMSa1-_@kZ2Gb=9~C$9t`mCrVM zID>f$Jfe&II{+nQOcY0WU6-(~E9sA@hdvgJJzS#KdIq>*aT@~VY|4hMUlse890Om3 zEpj+S@nTwvc2A`OH~TjOyO7Kn3_s=@~>bN$(%e+J_$x?fiic&KuTA5j}DrKrN_yQV3b@yXv-opEkcU* zW8hQ(xd3Dl;3dEcxauUZE2iUr(LotNRqFDS!2ht>7fAk=(Xh##m21?`>K6sDnF zVoL*C(71)d*R432BC8Bk05OOi;;4<0>t>&{$x3z>z-v% z2PZk<1=;nGnsfO<_!?1C9M%D3ok-!22lz>~-vOI0f%l)9wDi#b%6>X=g9PBti_# zXmW~O{-k+rk17x(`kNgVAq=*pDTZDRO!`5_8yVEFLLo$JZ)OZvp4|wH&@hOF zx4EYx;UUz~7hL1suqZI6*cKDQmd=nk?w5=}@9=wM4A@-0t?xuQ-1UvJxS6s_U(G5;2iO%-_WF$hq)(b`1V zAt)-YoJO!EEuI!38uK(zq-zr*>bzQ5Fon;Sz-1UH+MUP9b3;%HQ*w-aFa!;KTD#w+ z`|mN@2K%EnoTG(dOnAx4ua6Bhqs0SGc6T$@(B#vr{d+w(9RP^0(;#J(Soe~`n~ssJp(sr=or3v>wipJ`*JyKX zUs;6fJZZb5cVrdoaoRD`Fcb}0u!v%$B6TrSq$>{idzavM=;-_%21<=S9-Il`sAD-d zTB>7I*`lpo->?#Rvo$Ki=o)-v1FSloBt@YN?U>^ciPW9E^jM|?guTH=d!a4WGFfVx zEE!f_rf0s@VXtH4lPDC&^tY4aQNUHY*-n0oLc|3R7XWCR#Ymu#tu!cg>6HJa$->|)L~(^V_9lV8+m2m^I` zb0}i`On0%{D|4EqFrW|G#VW$x(+9?w5+(R1?O1y)HOaYS8;&!6v&9Gmj53I3rah$O^>i9f*-gd?4AtS!i*91&)I2>jcQK~KkzK;R%&A{q*qMD3`sxNem=}Tea z0>*$pNv*g zvoBMu6occ$QB>Z6GSu`IgQLZWyMO7vY=iDRvegQfIcMTC6j+gbdk|4gK`5ZSqf8%E zB+m!}J9laNkW{{dJTV1s*c&@6ns>FE88Gg`bb3f68D*-;E{MWK6wPE7Yglv#NWgBTbW_S`G4X)RYW7saiB^W5TY(D~0h2G$Q{dz4bvHUP5bHsHC4p`l;%; zpXgP{MaApXD>|yw@&4EK9jr;n>)@Am#7o&BKvlGOfZgeB)%U;}XKn(gDN&W(QRjA0 zY6iy2K!I2^C0FI=WzaHcD}JHl0(mnX&19yxk>ly;y(a*pLz~*T{4%{{;?1bneu{F| zFskYYo#JJdmwY16(zc~>`K)42(9o>7wmI*GW<_)mJQZoZzYqX^o!q&U?41fo%z2%B z4$(}%KyFP%qmhFqZ`ZS%>b&udV`N+gii-dFSQ{5x$BcpHa7jowuW+_- zXV!&dvvQ(x-uf%++%fWA1{xuqOPVqOqVodzzYH{$d0ilJ(@=tLDTUl*Ph|hI8yo3& z%Ef8wG5*Qw&}Gu=yN~_Mw`o8P_&gZMGk)c&Qy9;Yb<@x|=8!;Iry(x0NW{{HW5f3M z$|U-j7Z6^x$T2sWKXXJK2T%!}M751=re{+P+^Q>H21u)~Xg@fcon zj0~TSlDU^CKo~}P;PB5JGY$&Hna9fFaLF=OX<3S`>s$m+M?;c>X+@FOX0UArKU_!y z^aTMd*Uh>)&+aUA<$Nb&*MiRjD&$1X9`Su(^#})_wNtuYDv?+}?I*HK zq*k3}Se3=_nmK2kgL^G!lZT1R*TXS0HWN*d_K~+TQN$RrqMWsN;28hSl@lCjT;&40 zD3`!5qGjxP)YaC40Iu^alg-UZ<|D=?mmEk05i4Vii}Yq9O^EWCgY!FM8M#b74{ZBA zkbQTijw$AytBKbP6s>ulHf^D@Nw2zlxmSVrw9=Mx#U)>t99nJ#ER3sL$;=r@?O#Vz zns^I8K9Pkh?kBAT&p<)Ug?2(_pjhcHa&!i~a`d*(S;wUBb7l3kx0xk#WK4RUEBTAU z<69X;jq3q>Nk}@+f>0rh!>3X(5Oewb&w_BM-2oj@Hamcte$G|rVYNup-*P>HrSW$C zC++IqR!dAiMSUDNg;^rvz*y@b#?t>pC6 zC^GSrRuRR-!Y@#8U>^C76z`O7weFnuB%xO2o%vY(T z_BWvUUY2%me46I32-~b*)xLz;P-} z+Ov9sc>CrTwu47Cnf3_= zOgd(W1^3e&IXi>xIqjCk>8z^Fywq}RvSINQ>_JoXkF|gNdfHiVWd-!)u|-%yBiT@Q z@a3|+`S{*Z;yn|^G7;@0c_vEs`r#-orfVlJ&qPr&CoH{x&qT9=Ln$hTlT2=1BVBI= zGEBl>X(KmhqEVy%+g27mMOFMCSO7r!ECNxsi2rGJEHwLe8*R2Vf;L-h^)s#Hg;^-Z z>%!3`gTwUSA0;KTP*UjmwyTO+?WxZ8{v72Qo4!TS>oIHTYFu=bd^HOV9Udok^}DNQ z)B&}Tj_9qsy0g05EYbOF=&Wi#*26q+>m_wyTlBU%4{ZoT)LG~;pXRnUbCjdq9}j9J z^Rs}iGpfmkEEL5!$CIiol#tLVJ=67bnR&_SW$Vr>7AkKD<1Yy*EX$4q{-1NEbcIsY z_204pHII*y2U%zqlW>&G%tk|J=C)m&+xAUXTXd{_MH^tWDHQX}kg@^k-}Hk9w3b<4 z?XpCF=uk(hx+FQnq!BQ3+8NT$XI!fAUjPrl__aloZ1s>iyS~Q_M@dUI8XRS0U2STW zLmm9u*HJLgFT2i;y`p#$@;W>K^BU91&1|HTIfG}CxMxwc_xQH)^pMOsN@hQcM*9zM zb9DDxqTjj7I2M22>!ZCzK6w^4Ss*=}0IX&4v9_N6MDOEc?EC{^*a3X<2qb{Si#626 z?zHB*a&8>0Q^0%4z5eVkWrpa_SIv%6bsn+0`g4{afl;>ZrbAVwUvS3)!?knW4PoLX zVf=aTUWOe9$3h|2FEr_U zJ?eaSq~e!o!uC|)ZF;ovk``~+M%uLgoUV(nHOMLVwo)L=W}^{)#lkmwM|2#&TiDW` zYJ8)g)Xqi|nH2*0Z8myLX1%2+Lvv8D*ZTs9UNF{CWPA>a2#gg6hhGHO7PG``Da55m z$V)jWG;O1pV6KII1`cKo=``(qcjncJU?G!+u{*q-h5`G%OM?Rk1|BVt&KxwV;M*3( zO&9wu*{aY@Jd#dzvNWJv2Fn772+Rovb5wR*ewjIGR+h)CZR@}#J@_W`TIh|hwE!@% z;+wtPuQob6A)g&IPnVtWud9RRsk5FE&dcWcXAKd074xK)gjZV_jKxt+iIKS}r%%=<#LR$h_}@t<^N2afiM|nMg0ddnCKMBClzy^k7yw zTO)B2eP2z>Rb}F!UXRTEut-Duom=&kDyq^abNMlWXPh7D6J;&RUP_a6(8eYk{OEfZ zJudODt;5PJaa+okk~?#dCi7w|Xq#q7AJScD1*0Hrmvx8>mQy&)p7xJ^d-hSlxdGf_ ztX0Xe@ zz)h`W_&gLcT095fk&Y5;+i4Z5yn80|aB5q|+*$?n?)48_*&<;_EB|q8G09x_a5)v;l|CQW{F!r-K$RyMFuvktmJ^Db(&aIb=ow=Pmwv`Poi_V`lKgm>19a3)C!SRo^0@W_VpVAqAS9wm^rcQFGrTjCk zcn6I#&)K?N%?_4?PLyom`O&SW#cL%h`pqf~i{~#>E(_x)w1Oe9mraY`F)S`wwRjFL z`2H{ysh;~%W=We2h-9U7g&t_%QaOz3Npg368WxzY1pWWY$yC zUgeT7l$|gbaFuy>>#QZ~7R_1>t;Pwh8@yjqy{}-=c?AA%5g?qeq=1dD^kXUM2DYy7t-m}$s z(A5@QvK-pnZw*ZYUxIsq+Txd|5A27>r zG?+Nq!ml2PxGbjg+XsR_(%``4tIbD~fyv6fYIR60+=uvGF)LS`Z1@nbrQbkjffQe| zf$G0g($;zu=7+`QlpcU4d<6fQ@BzZ17Ry-nWl)c`;8Xuo0p(%!%F7tZu65%<$iYkN zKi~t~WClNZ9$H^1Fz#nO%`#ty{_GqsC3_a4iPBfe?+a0ebU8_R0j(YK%;8yXHqG4B z>`B3&96#sUJ40#bf7pXnG z=A$6?uT_)$SM9A`H7UR}$&WoQDi*Jl947yM5hXFbhlubZy6W-g5#iPmvVRep%s7vb zJBxsm_J4=S2t8Wi)kZO)(0qj0^k~?O12ly99@((d`=$4ar>?)`YFL#q44i}0cy;xW z*qsRC=a}SD(~0}VOW-XFTOqR_M6MZ#+>rhiY-lxqgbX#HaIcR=h&zsuGy{qaDy1R7 zxS)}|Elg^WOL55&@~#1mA7`z9P^3%EKTC?n3WnSi;82@(7jRQ#oY~7XTf$9|o6H`Z zxe#=QOMakRw$NILeJRX|Tq{TlXrI)#nG3aS+l=JgYp1i{jpR0nM)vsZJPDOWO_nC(SW{89Z|tW5psj zI1^V2#v~e+4uZk;qZo+eggP0h5{P-F9@9!wM>W5_lAaOrdAxW;kiHo$B^5<0OHyvA z&F2R7WwsOu(^~jxEe_szRV zVbxpKC7Gs3UK^2AkT4%sV>pEsR_*-BU7zz8`agqp2>DRq@98%n(Zzkfw2rYl)9V<> z=HN@}m>J-}$aytAS#1WuTzjA{w8eBHD2cOVtIbi-sqvT%Dz>NKsry6KHxEMplhp)% z!GYvfCOuDruhae(0CQ7B-&GfF_GDpEVhQWR?JdOjXd*W$N$t^M;TLhas%mwc`Lv^b zfu$`GzfTiS@J*%A8)%?2{f1>xn9EW34TPJIvNK>zen^LJcl&>Y&zli5#DMb>4Tzsw zXZj^Bw%`mGSH{JgxP(>QFgD`&woxX108CENN*Lw4HYi3%y0s&BR&{H$VHu?zf8BCxlzF1ta{yciDq7ByHT~(!ueJ0ws8Jc`z@Lg7DKE>Gty#+ zvuH+H4DlAt6Ba{)MKjuB7uUdEQws0N#Q-9^_ON@WT`tB8aA1(E7+hq+MB#DnDkXH z#R@L(`Lm#9#_Sw_6Lhe<8j8r zr15aa4V-kCt_aca(_*2L@8p$9Li)#9owUP)q>p>VCW`Thju zH(5WY#_kNyzoBC(p#OQz0E=nZ`yk0%2Cw?&Ci2lTG}PDHaDRJN>_^@}LpRS%TUA&W8HmL0nG9xBCxNU{t2v8E5TpVP6JQv92I#Oo}8M9SGk8_26)G#JvF3` zHKdMn*4!t#%Tcngw)%dZtk=UKjK>}aiDfw&Q}8)G7;x7iFv$}3IIcegcydEn4DLL{ zavQ>i;5~;}(}pk=Za>8Fk_}b66PUSPKikUtpi8o+FD2;deGPKyX97MtC0hTwxD z92IU7;UIP6Armk8pYjpz3(Kmeh~h$1YXnmm{}5>D^UdVVm(Y+wBNi=GiYD^tZF5r- z+5HkqWD1%Z`(8pwn*0o{w@H6}BPlV3%{o?PDu`D3(^d858RFKbaaciit}BNa|iiPZZQs80Oe@QBiO>fct`e z@$9=ODb<6tA2quL${qAqABc;a9dQy{NKxFutm2jS4b3J&Q>6zrhI02?rQ39B20;Ayl0*2(wNMa6x3KwXsL zv_`V_H55L#h$d#MCjig+<+D2xz5mDI?e4x^a}hL%|^Rq65?9CyKJDr+_aK5cLz;K91f1e(?P}CWIpXzRCxNELeYo^ zoL+z2TmS7No40I8j46a4+)Tb-iK6FTISA%6b&BTUG8nNX#d?9ai^A$>fu`I{J11;t z=sSN9U!Ymszr9NEYwUynOJl^BL2MW6_>x8l?=(dwSS97Vswyc&qgjkFwPirl?Vhtbp06@)!$ zTv~3hDp(o8g3GAgSVm)PYKK~eOT>DU8~Tb5;uNvcA{vvm`CyYUe|~nZDr?h0_T~B2 zbFW)+!?JS+TiO?4=8pqp`f3zD=R;bc$UkSN@0pn3sh=zade76+8T75cyZ7HfiadhN z+@D#2i)q$x{O?n(tjh=B8xG^rR}L0kXNT_GzU9Sra0SnK*LOi#&ro6Kza#h({#Fk;Qd1V=>ei#gCYvX(MSh8gPA8< zgkd;E40^n5(T25ktZ*g)VGKg+5*lki(IlK`0ufjbQA~gQ5Lo}&qUS{*oPs^@dYXyu z?^KCau>ww(oUu~pXpoC)5)L(ii5GSlK163;Tx#GV=dA;2j1RG{0VaH1(=My7z9DZ^ zU>YNDm@H-GNs~=FThrK)`8TJPva6|d2dlNf!SV*JBs+D&+|oK(w%!ldP>7bSq0c+u zGGKjXhQ)jWSJF5(IR6i9X)?e?{!I^lTa$L|U5Ail9C0rvA!@0hIy*FlIhVUinq-jb zR*|RQg6oI%7-Q%<&Hgn(xuh{2H`D_V`}(N*LM?~Z(+R~NT2iRxM2oZ@aPy<$l>}-M*n?=a4z(|5r{HskMW+rAy=tV7_ zz+sY$nTVLl=+3mHY5o7XmNGFa29D*@#ZAQbZP*j>w1OfX>(lFH5f)%A4f6Av*f>+_ z(|7@G*9mONiiJm5I1jAznX}WSI9~)i-3@kT)B0m@8VJucu^*fPOa--T?=joPUb_M8 zTVVlcA1WLIJbP>3XSQAb&7clZ{phu<)S&k>sQpUQ3Ytvb64lb5Eat^HmDZNIDq;{Y zlc5-FiaJ@0Vu`kt$-ncD$TGd3^WO}B_%Te)dI?EQc8>$a_>vIEW}Fd#Sy#*(e_<%Z z;S^%{`w`z37OtLiFeWvuiS-2$x_)5kIm|M=wedm$$UbZXk36^1|KqZ5WE5BE!M4yV z9WW>b5J>?j-lVrl%8iBl(7E^U1hM-*O+tt`0-y@uGX%tdBd>u+8-F@}3zZ;qJ3`FG zGzorUE-Iz&4cVk{f|=x!GGG!+_c6%}m^3*^&`Z?PrnKoO%`8nzlc;kKBu|%@O=nHh zeL=!qD6O}{1Dd1>o_+_hk6{UI6U)SeeSpKnI(}&s?l!vBUW~FKa2h>Jqu2i+p3$ii ze7Oos(;P*!1_r^zZ^sY$t<;KWspoXS>Y(~yHfxWAJc%u93^2x&7#TeXkI9--ou@%hJzqZwG8)(4L;B)9QnJ!*CO58 zqXnwFQhZX(P}e9l(hML<3sd@AWV#e&KB>1AH#WkKMi9NR#7W_RIPXysrtQ7sK8R}F z@sfdfYd4LjiaxlGHpwA`tx#&GO3Z6TRnL1Pdrq(Ec2`o`rP>^pAxW zsaG>B0<}(tdTEkG)|iVPcF-)n1~sR z8)*&@{4Hq&3$5^GB!t1$_Qc)u;1Ere>T111t*XLWz|6aia~FF?f8-Mf|l zjCY=L_gei@qX}HGgh-8pW>`3h8!~>)J%O-OR^~PuVkN3=GU(G%8arHxm(c%TH`-rp z?4=4K#wWli8+0y@wzc6un-b*`Na&9M{Ep|PiNpahC|K$zSJ!o1_KA8n?PO4A%*X`B^$TDd%ut)Qy= zEG-PA_)aBE;}D34hKU3T#Lf4HxG)-*iJ5_XVO|iYqH)jT2NVZEzV8$e7eM2>@$G@Q zonZf6Ks4?@_>Y0O`EvE2Lk^r*!mby*XxH#ncgn9_ya((y?Ab_$6rfcF!huYFz`VlI z0~{v-5nt^pFc))9+4n<(@IwRdY;f>TVTR6x^`6Ulo30_fM7{6ta(f2KSzmFNJKG?9 z)4+cX<(|ej9Z=4B%Vqr2z4l7KXuw}I*uc>dxWfWL+JM%ZV#maVS=!S8q&iU-0wvzj z0Ly8NzwTH=i*$?{{>JE>n?*A=Fwu3gl0f6Q#bO~)6?^0#b;;bnkqX35Y`qEV%(-kX zU^y|b=yPTk?aBlOy0{j9LYrr=YY_G{3@otSutX&iTu{?6CZSjf>q}f&01O~mk5YU| z)9Jx6H(+Y88gCXMe9{mXAn*;M9*`U~1?b7}S)_P?WP>VOX~Tt&sLf1JyRV&M-_{Tl z%;A5D1^?Xu#PmbTNxKV*C_tB(+G?!Rrc+*NnjnfK4I_VlzzqXm0>-|8sPk9I=@cy6p^{9Kf8hA^bV zJ?Haj1C1(>Xup7OT5;ci2sC_KPrKs=iVgJET6Axq_0~^88=aQf;r@@Pww8(d=@2)7 zCUZm$a|i?ec>dwH_6)c&$4}5<0?Fh*4MDD{p%k#{`*UQ~zGx^x^8f$D$vTqVRtyg*32Q+%H-* zAqqR(BO?N%@o@0tJqJkNdnmBLPOJHQR#Phu=qe9za!C#&wU-}&!^;` zPgUZK`xDmvxv`Ya!ewr_CG%U9Hkmd4&w&A^Rp9OaglnU5TmKnH2YJyK?s*bddsg8A zb|ZLnETC|orenM_son&vweIJjw%xRJRRA64U#G(WeMG~c2kilF&)T}4V-bwC9KSs< z)*E50!7+oKw7-vH3LLZ+ad-=8DJcCe{eRS8;{!Lv476ZW;yF5a4BlcVf38Ow=1e^a+khTZMIJcK`A0ol zn5LDep6gF*3mQ8as7&(01~hnZ-~l1<0M8z9@XN3l1;xVimT@^L*?=NPdmK0ow&yeA zEo{hVjt<$B?Ay<_)x{Dpdaj)IBv%wRb4 zwTYZxjKinzhkD`rdNQ>LjV<`PUihNkQ69P;s6tCD(1j7kEB;i^`Yx5C_cXpvXCgrZ zD@mIXNZBE4B{+<3r7_BT9Pn_JQM%VYK8w{qhW^Iw@ zc*|`oxiI+>2iteJUTB2mq2QEN0*ZVU+lo=RbT^48M%>fd0>2E?*&if58lTD2Ow@8m zAzcU70>4$qPIKl#Ym%=y^ZoF)`fIWNp#7Hqxa8J|Fjb(8D!#=^`gYa}JL~N`>-pk( zynY|qRE(bYu)gVMTurVNqan(?dODwsI=7w#ZbWmvjj#A=U-rY9^?g+8_)o%}I8zza}H5@#$_i5_|ZM~y% z8b7EW`_Lk$mw;bRYvVxotc@;dAV?QLS9+@YBI<>(da`p9(qshH@6c?|E|%>8uTEu? z{7MJaZ`tnG80uGws44%lJ<^>;WqVwtNFHb4Ci&q{=%8Dkldup9qLU&4=LsP7v7dO9 zpm9$^zkiUc@1WwxC57 zQCj3@Vg}`eNc)=i3(foaPoU)Uc>7+Gx*6VYwZ7zq%_t*$GhIqKValZ|&nfzL?H6|K z=ilA$DBp?S+DnAZXqxmU@%aGFie9~6SiRrDf6Qm^$ItAAjzT4M3hSLgP)AQw-_rfU ziv6VE0}u|ilFAQI8nf9>u6%$lF!Xp@7{tEn8Ob8`4$w+1neb0 zZUM=kK-!Ml?7#&kmaQy-e0_jd{T;%nP>;;D@9?b%psIH>{}iDD-OJT z54lr{uvgEX4O?qBBccl2;<&yLT*o6SQJ;2@=xgANR%$a>8Y6nVyY0TV#;{1(6 zeax?|hFfipOLh6a{@}jG_jaIRQmDw#x?R8jA z@H_V6k7~#>pP<3dPxr%DX|^!{M2lQmztzANAMlhedMuwR!B=V^g9*5Pe{MM7+t;#J zI0R7osIM8xwYmOUEiH~O){Y^qpP-DWNwnp)Y@J7o0#dK_ zpU^=Qo!9(zIvOYy4{b$k&L3!I`@iRg6AA88QPtii} z@1YQ^_M$p+|5FqfUSE@@mXH3>GbIbwG-x}w`O7R?K>A+B5#*`QP&zYaFWK-JN)27> z*FAa7hlgQieg*}4{-(6dfTLW)JO!elY0lDai;^)nD&p_X_M@{>&c7?pe6EnyfIR`QDxG5`lH(v>63S zHNs1RE^Mhy+Md2F&9BZ-PKE_YBo7FB~9;bgO}R~t7{M}R!}0;TKpyD8siTC33N_gtR?2%=%YY}_5~X1 z{Jl2}jSeFhK>jdvT9U)~sWFti6LkLI^_}^QcI4Oqi~Ne24TNi@_*%^Ic~2bx64t1-!F89uwZw#^BKtaV-4A0MKOc^ zsG|MQhoXeYXj}a|qADiuts^bDyiVHp-;;+<~2yP`=LFx~9KqB^*x& zVHZdstxWHwtw4BF4Y^SP$mOLP5?u+n!AWLTqOp$~cS50}l@4!oqV$|kUs|1zR%cJE z<7IW&WrHR-x?PTG2;c*llciSDREesX$7@Kg4MmUBeu%18@?LeBcIOC*dEaVqm?Wvu zI5Yf#wg%U!IFfck0Z&#IwWrmHIJHN-B2Hgoz=LZ@n+*;Wwubx;fJPfPQ9wV|X4UqyKVU$4LE(tT8$ zG}15U`#b6>HnO@JB@}2^BlU*bIHqKkZbL2HJwTGj8ts{<9Lm2}%ffrF@mUn7`?ahO z*9xXuhneuW7LTA~-!tDh#FHAa10|@pYr)nvi0dn_0A*Ul#KeugmEyN6B_<@i@AX>Y zO(^#jc$J7rnVgq#H6_5tU64sSovswl#F5Av!~#}Ns6k@~&#TRjk>mtR`xev+3u^hf zwGN)aN*j5n2K0%vlgP(4h#Nk=HnxZnrqx>SxM0(WR1m#8PN*%CQ&MDNtuU#U9}h*J z!oO9L%QaNEVGLqLD={$Y)LIl(ps5u! zkkHA8*5d9;=q?{r8>j4X^bM{RA|c^87%8T5WPbLjcxf@1nKULL5Wto@V-S#wpuFb= z?K$Vw=Tj>L)bd_X;yOM^;h4>JttICTjZ|g(fNgR}GjdFD#?}nc$=J&l)nd4z4r5){vL$VBcM=A)nTvgpps@ z2w&GYcDwkmYw+t7a-Pb!?@Wzwrp8h3wrB$4xfzm##TWAY6Y@^y`LFD)A@}Rht3Hkz zYT{V~7i}wfa}OF3_-RcPJV1lP*33e7OxffirJvQ1!+Ve}ZgUO2Iz<<9%us4B`NJCF z!y0}g)S8N8XqDH}{1YZ;nQBPzUJ#dftAVoy(l+mL=C-gjatP=uYKL%Darq;^obg>WFJa4 z46B(n!Y?bX=DbHtAS1-pTuAm;b2TmUv7C)DPWLp=S`BiyuSgY@u4LKJ@e8lD`;YC> z1=gJI@$YJfbq<5ukmlbvq(&G5qm#?~*WkJeX#eSC|AciHiu_ZRHRRqt6zLaKBltm% z+D_oE0~fWD#Mx1Nki2H>WXp4C>})p1FxxXrTC?)EYGSmb#mraLq}vY4yI)k3PzNaI z?Wrcq9Vm=xt|sdp$Qs^D@wGa?x{Qxo!LS)`77Z?x$_gcccyl#L-;ZMbTWALJ#wd$_ zut_h)2dl`x_JhLPylQf2KPq6Jt|sH_0mUn;$;x^(n~AI@C+gAr%okv`;{aO3oU0=C z188~N*{Z^Wg$^IdzI{P?;Y``dD14?0Xz1#uM{$;}D0@#8nbd$LB{f#T1SM#*cT2Og z>6NwIwI1wTZuSK|7hF*Vs?{5IJdLBQ^ke7b(vPc1Lj#%;@-0Or-}tXIR#n$kRx*mO zT^4^o{H2WqHlhzyFIK?Q7ZVN3S-u1OW1(;m8p^{!W~30p#fDzS*$0BI~VKgJpY~~|0<$Ch!TQ+v9WT{ zde3}w)8Ktl**;02T~OO?*C(7ca*)v_F83> zbB+Q~h~%&)e`6(hk$=L!(on}p$g}AskYS%=g@eqL_wAu1|?5z0r}uC3WKAe z>M&9lSby{$!1hKj@AU&bb>J{9qGJWG8fzum$-dfj-^gp@Hs+s%%kze?Kl&cG36I z`CVpbxT-=cktymADEFE%FlipI+%OMl1iSQuwNpKV9iC@4#bd<@n1=-I+?0;W2!sGCBKAlOgHR z!xqhds!}*r$sen9>@LE?cay6}P(-pe$_s3i&ROa~*-JaTz~d%-7(b>K%7Cd=C(j9# z_O(N=Zrbm#hL+P)$6(Oub1O+@D;mkFaT0`-5yCs*QK7Rc{288}_3mBPeI@|1wo%-Bj|5Wq;%X(@ZaO<6kh3iD=F+m3(!rgaMQ|P zw>tP|@MAo=+=;S-zO@SHt^BuEhh-*KiMg|_;7=YsKefdwv_bR*zQu~~ngNcMu*nSS z+1+=7+=O{At7CU2o@^$iT_^?lS_NM#f2-WF`z1WWOup_y?9;`soYU6<4=`iADV0m^jOm5)AxP3aIu`c*NwWFbDxo{9yBq@QZASw>mTbG z3Dmi(T-XJnpZUUa-0~R|1emsfMQd_r?JuMX>8+m;p$9H|AC!~ddeD%#_sWI$%6VhC z!-}wl=8r0BT_K-pV+t4Dv<3Gn5~|^?67T+ujO;~|xR=X?m&^G~$UPHppt&jL2lBs; zxgsR(yNPql$&Oy&Rc4oy^Zy@NUmnoJwLP3n7PgSfX4sVk0*D(4BH+@Jhyh$$iHb`% z!3Gr}M+p`1 z<%D^24q@4s;zlau5Pt7V@isB{5X(KpP=_o=mi9e}=X@nz9v9Hb1a^YFxC`XP{+<6N zFNPS=Kwm1H;h1Zn>ODI9JV?dk{+{)y6W4t$_Q!vJC0-r>mx=ky^sI+lrvK`p-_q~b zOPLFuC7T}`GV8CK`mU3jq>F1N(nX_4KJkCHWKTTVDqcVHlDNT31|P515u;bnpno*s&%P0_ zqfVP}?6=~sK%+_8)2*wNZrSxMx?I4|cufsq_lf8>xzz5T(|k@@mAlV5bVZ@VV#&hCx#g`(oYURMP(*f z062K2wgx~Of-_u(HnNY6eUFXIH6wjwT;si?m zDI{JMPjziMxGA%u#Di`=i2wDIc(S0-sM=-3*M1VmPB(}0j1`6H%WjK86YkbtQl%N= z!DOEVFO9zdaR&p8YR5-Ty-+Q+UEwM6jUu033JwkORe0ggaC(n79%DwZVPJILNX z*mv(BxKztRBO%tmb?_j2^I+fIgJ&*-V2$P+&2PS&nmAFw9Hgfn#9v+$r;2wUWOpCz+jEdfKS;mUisjeEJH$^r z00Y56!hFw8Pdox^La{jjA)foJ58yLRSZIruj22Hc!)#bt+>+x&TvZgT*Uws2P98=bG6y>7LoL|TCJy&)?`ZIff>jgezY&&3@-HIm`40Ar z4*Y^mJa(e)SJ-HDMms&XBi=b;UnqQBXSx$+%mr?WKGmT#lAwAC7b2SH=y0=5JdIl2 zfxotiBO_LHh+LK9xg-n6AUDu3uO%zxHnX$?A`%?16U+{>wsx=wI`Fs~;!sx!l*^m# zirfx7|Ax4RitWJP-w-c#pWpG%NmO+i20t6BwgR;;4-6YxpAGxihM-+w(zpz)#;E3kz%6{VM{iq=S`oSPuQ0`Ldn9)J%|J zjL7QU!FodBX%Yk}t5Ib2=wRL9o;?E!Z+fI1ulpTBfay8;!t)Y5MjIX>F}qu-4i=tt z{4QRFhFVW9F)lGJT%y9URAnai_yZg;GdT_6-k?z4YdGCtjI2taB)^UA73POev1Ql| zd`V}}YCo#-RgU%BcJ^$$#hib}V%LU;pL@spMLT<@9S(ez|FUzm!Y@T9mY$%5Do)y& z_RU3ZCHYQJc&;Qi*dozLwosrQGrvfY?I62XXgf--YR^^*If33wfGyN&&Xv4#QRJjK z4&gQAPWZwf;PurPa3MOrsqt1se34uY~*Tq81Fv5D(e`UIxkmu7NYH z_@|p-+OKrh=+J`wN~m|mlG96%2N1K4nfCN1 z?lL~uk67olvvE-C#F=q+&IVrmH$s2tfFB3gG^?Fez>~K%P@)ZW*JioHFZk3kBeMjR z$iD2G<$SPC1$v@;%U(aV9Sq|MFH@*bK8?Rd&9amcHo?QCc}69)JbMt_X~y;GDXzDUh?uSoJVf{)r3Li?Sv zm-O;%w?-i2hr=qBqjqsOxrm-s$ser}ZcwV7-A&Gp;v@)sPp?0KdvA&T#O50#v-lGJ zd2wHug>%^LLx2%SgA9StxF|X}uvGmg<)_Jo_*4 z`WYA6*b8mUIk4M$mEJ^Z&|kMTz=7R4d94h%qvYS+^s*_n%et?Z1;RsSavShs^0DMN zEyp+i0=>L#00;jq_H}k8v!&l{!!!Q|S0sw;+gdM9*E^opt~R!-&2s2vroD}xONM}u z5cHuokX>rM`3-)=qImC;3hgqE?eh_(7e~V5CdP%pp{=crZGm>HL7y?p38GFDZlAnV za~s#|K^}C5HVmwdBgv7lkQ*3C% z5x2$VlV%)HYNuw)j#wrRY0ZuC04At%pIz~JE6%+m zo&x)z@s2oHW@|nEmb>-J0rtBC7IUj`CM*(V0RI?~HM&_Z9bmscfd6v`gd#RArtXT> zl9LBE#i+gcCMQw8lY2#pr?D%9=CUHFu6X>!tK`l%+X;GfOHwc5gYcr;TbKRx{~zPK7VI)8mJ4(;x_jjE+ujQkuD(eCVen|DS$VJT=5X381##*}cNxY3vT68(XmJkT}un zxdZIf1D3-AP3wp{ilfeq)Zv$h#A6jP2iQm`N1ELudN+5Io9J1)d@_hrw$2dqU)^nJ z!EX!!cwTS8Uk-_bsFz#tts!whpgD8IAYI^G*>2wy^Ix!fu?0)-iG!w?wIk|KZl(`k zQpw5S97q+4_^ICUF(#f!$#VzfFm{H}&yS8NR@qwd`g?G)RkYxid*bo&;m_Xq%s9?} zK~BUs&v@F+)1{B3@=_eH{=Z3re+zzePppU$k=90|&nZ4cbANZALE8F8*NI5$N3HC; zt(L<{nxK)CnE#?BoEH4*ePGBQG~Og+&x2m322t<9-#r)h;GXMXl z-EU;ub;|b3+ue%4xGx^Z)!{$yi|4wHv_vXv)yznXJOU>^5c~0pTIKkq2jUpf>Q-2? z>HvQ7J7?s$^?^8$_iC#SpLigi&U*na?mYmz5jmbVEFSMsKH52@fy}nit+vTHXV_s> za%>oQhLz3u=V5W6_i|Ec6!Fr@B`s>jqKD!*rH0(4@BsDleF(}d=39LD-992;GY?V% zD1G=TQ~wJD)0=V8Lvgs^j~4bnE!YTMsIRuLS6eK`?F`#OZ`=>v#e1pVZwZP`;48fZ zaqoC47PM%2iCH?&Ox{GT(Z0HI0vzPOe-^ssXFL`M zMx1aE-Q2>oH7&U-7iU6ThJ`+QFMfuuC0*wZll;v4@~X5Cn{nr3aZ>ir&2_?Vo+$9l z7hs|b;_R1N*ku65eqo8-VkGiTo#lzv3!L;%3A9T&nG%k!?@2ecu=sRCfFL(_sN_A! zQfjBiw=@Twa%yolzxgEJi@$m2O2cV@3bfN}`L*v@lUvx?EjaCo*ju1(VQ01AwNJ#s zq0?K~SQzTDW|2K>KO8VySOwfZseI9%NHX6vD5d|?EXb!pAm$qpxQ)QltTVod#kF>4olPg>Hf7jXK0 zAT(ferhvDJuNH9c3Me3=6-gnfTvbXlfPLV8$h9xAby;&G7sXPxxW;%ik+R^%EToo* znzc!hn}k|#sUCR8#Zs*kH_xrP@k8X#l{a2Slf|#&WxQ10@^5W#auugA_Ti$*<>u7_ zM*uH@`Pfs_;weEBdilEBggb)xw-C73HtuaCgVi-zXbe!+;ysQ3Rf0B zrB>U0qig~gC`g!Cyz<=;+kc({+h|ii6*h7~EROLdE|Lp=!R#*>b19TW(HJLFNE2Yf z&6F%WC{TvI$gW$z56iNGnq8!I7Cp?4k%hCNZoLo(0pn61E;&QjsNr;)C*tZ*}K z=Ak6z^Z43#P2H3<4PS5t!39V9Jhr&6rmA5AlR^?>x+=z!1Hf6;FXX#hdtOHWiNXDLzuD9yQgAaU|96 z&$&Qx?oyPA;?+NFl2P1dm(f8gdOWWgnyg-U;1LYi3Q2ElzjK6A_y&?EpVr@Q!czn& zKIG3PQ~0=M7u>3C2oF#HoG%&=$vR}|p>RMr__Tgb6Rr{DtiqFB^) z?T^M3oXv;|H02PZU6C2f*iZ|)Tm9nH^j|Cb0J~g>hx8A*oD60AG%$J0m3}Z^9d$k$=3ViPbb&jGc_8iSFMEvjt``sfkrV z*&)!efVc?Mt@;d}F~-C80=SzP6z4YgI@|uj|8_=xuT5)Wl~D7T!`0N-a=JmwujmG! zFCW{r#}NEz7o4&~pH321-nOstGWkl^NHQ}akphoiMBrl5K!~RylZI>Zm90_IFN~H^ zjxq>hvPKEJp9_*xiTm*@E+{rp_vd3Eign-*FV{f!{h0&YI z{8RjTh1H&Pgrm14#|TMWPz;Ce#}`~sC~T?sT~L$+jXoEV(URP|6#yjKbw8fwiWKGY z;|{-?+BalwK3SOp-M4(OAeK+ykA@Ql#u=1*=Nj2_jm#Msw~AJgaUt3Y(T+W~Z*|Qy zK9T&u>-Xlb@%~Hj6JN9r>ToI%F>nc0*EeXCr&4 zk!gX6scE0Rc)lBo5jQrnjg3q-l%>=By|~T|t%wfdCCB`#ltr`^-rBB|h2M&?mNv4b zjTR=IS=&h8*h5eu1|HOQS_>Q5f=28sLKEd{8`-r`=SC$MYIBrcb0yw^#-*ndAue6w zP~6+@)>VycMk8J$LX!iRHnK|^Ehf&HOLnOEit`3%$uDE9iyGM%8*!fqh4|=>1CBH+ zBxeP~uC-rTlN;IOMr;$IsAX@E(G4mHwBbOM6L~>FJ#QF|Lr3xqs%FJ-TGt2D0nK!W zAA@K|Yphu4ka|jzfI8d$^F-;DD(U5vI=+#WHR9FoXrdsfksZ^B zo88fC0)8X=WIul5j%H99dvJmn{vS2qVlj#d`+h(B{eDpSFsJs@)5(0)vhZ_B&>N@( zK)dzLe%87lpBJM5?{oXv&!Of^faT}jwVvJ2p4pEdiBUMv1}Q@0fYPcE@}<}YyaFLL z+_obWkoCqs=u_*J3Nk9A`Ls!!+U;Wr;GcX8jw8CZ$66o0!E;5-vZ>0&e5Jr0_#?t6 z$Akb#4m3bRV41aHATb{@%>fivndZ2|5~rI;pYZxv#%wvod) zNDdZI(IGzM=$E&j&D(D|cKX zw%|GsG*+;3Kl{ple9QxdNtW(s7eRG3WN-p6iCU9&@qYHj{rIK_nnW$yhy6W~e9CkC z*#xMQrGdaplbj7yy1{;gB8g=FLE^amY}|gv6Cn5}UAr4^@I+In=my;3i2|tc4fv!d znk4q!&-(6XZtt@kUPWi`#`mC%I#SoQHiYqBamCSIXk2K=Ljd^2p5aJJ1DU6uEhTmz%kEf=q8)eG7 z_OV_2EL|TnoA%K|bp%3(t%vrpCMf#^AY|VEkY@JbU%gR`q;VhHxQ|%{Pj1pbld2}! zINKgP$p@v&%l5Hl`z(j9G0FSrkI1w5yIJ0D)=m4^5-9$aoU!jU;BFsO3}V1>W6%rm zN*l+ZeN>Pe=1I^j%Bdc!B}fjWYmEd+se5~IjRZ}OG%tVBceeo|((1AvHm8}^3M`-d zH8f1Vn92d!l6G=~%r8BGSHGeGUz4Emlq~~`e9;`=FB{k|8!U%|D(Be~e+>Z-UD3LS z8M<=3#urHeV|V$YP)dFTzv&BW!L|tB@f0n zJY}1WZ~DRX%-F*p@LPu$`J=Gx1VR+y6dZArI^$!vKG(p`Y_OQ)G#`$@7ViJ#e?0no zDNuLLXkceFFd(5m+)Qt&g@$@+BiJ@!KY>FRyHWRs!w2i1kELi}6%EV~RPUv8YVkFH zG}bq=0V2)xjc;Inucu!pUBDM`>ycwg08)tk8(9B_zJLbiVm+;`#Y+N!lYFoTZx29= zTwCg4Zwm^b|FZ{Q4M4H*a*{waE7I)x_{H&g?&e}pBfld9l_3XFx%y;z`<5}93 zj8XqhJ>C+Co)gQ{o#>D1L4aj&?(46|p9Z4fa(ivW2~X>L_3X)d=Iwe5^Bnz04YZMK zof1DLnJ=Px9L~XH0NPUD?0n^qdgI<^mvhVOzlOgym%e}1gG9O?c5maOhBX}9qfwce z?(q}4X)l<^EThlBU+wRGhw8yH%=ictXGGJ&sXtg>4aPXk+=m^b#}dI+DY z{D`Z&Z?BPMt@;zH!gFR%J>C_BCYGB$9-VO*2LfYZp5vq_uZMW(yrc6Bffe%8O&7S4 zZuMpL<9U%2L}ycGRJ)knAAxeBmk(?$aiDsp;Zfw*L%c_@3X%NI(W#swc_Lns~**pMX6_Zy_w-I=NQAbX_H@hAR4Gy}~Kt;Ft)1`ZHN-zqd^7rDbV6?mZ zJpyl{(R{A{|7tWDhY)LeJv$v*f5pVs(<`5K8CTE7LfO}j9@Sog`#XfNJ2yc-t&ACa zQ@rwpi6TMxYIjRG#}w{H&mzeBifbkxB31r#oE#xEaf7RgPoi3gyq%s&5{F4KEv;8Y z?ZuU2fm!ySu)3cg1!O3{Q{l#;;1zesSX7yw`WB{W;9x-RzP*@5)dzcaeGK zqYb>aR$`A+V=_*YzxW6oFIu1Iz4^5%fb6!CM|z3iz5#3^_OQS0VSd_U=?tWucL6X> zUcs9r^g9l!ne1TLlDQE0qpuFPh9V7hunu1jMRFJ2J1*%_97ehudxW7`Ub;_-st!Dn zgzteKpgPSKgI@~+Zc+X-t_(x#A)zuJ3PTftDoN!i$4^%}+|@KWGmHxgXY(ewmN6gH ztqGIkZaI=sHV!@q|3H6l%VFEGJ;83_C^SHxO9^k-^)e61@JRi%J#fJA`_0myNC2A> zj#?;}J@}V!^jv&GU424bbi4=l_E5yvfm4U_U)<>i<-hE4hE~fbeh|&yi6?n99IvA% z*VRw1dj`!(b$EFMdXCywhg%}hI*-%44K5MQ9)=70wH%0uu>$)%HU$JpvDhwsoMRoFZM zjhp;)9s6?~^F5S3r3b5E>`_WQ@1K4y*RhxD7%TK6rvI$McPF6f<)78Txtp*ypVqOT z)-k8*EKCA@i8Pk=+e08y>1V1lE&v z?8!Q&7n+ZwKPAl}J;@Osuznw`(7P%iRG1+|`sObET*dtPpx{fgck|}Y1c-<`?0vm; zrcjdDh@M%C-b;rmna4&KuR;e73dLF`PgrwSz}euRy-> zAs8Hy;l}U-muP1T;jaFNs{2d)MSh$yi5vrStl6`o<@D7S&%MnR1Ms_dDD8nk&kXKr zS=eII@|^cJsu~svt_b=nYq7Hen4L|vc#Z-sqe^S>K?PDy%&fh$vYLIdwwpitraCbR z=l{|}HBSg4&ZR#5z$Eo-A>7sPslrbcC^-7)X#a^V5VQDM|LH@VzL~Y>DF|dL^3t`A z$Ywh`(z!7lX+jO2t3(0flv*~WwlAfYQPk4&DsjFNX?$#lA1q6Y6hySnVaC*ouE5go zsl?}$=sDm{++x7p`eqIOBL)RK|5C<GRJy4Hi#DT|O-}N{W--iP8%_loVIu{cB!h z4gP#8Fw2G-JUkVJKy&|C6ecupd%%{|;MuWg$|T*E2Mtor5%99C5e2M>G(pU!teUG! zJXdHV`^F1|?}PSO=5F$ov~cO@YJ4yj=;QJl{C+HY%|lH#+r9;cUg5DHLm-hoj+%zz z0bN#2Ly+gRhK;DPbQUl!HFW4ss0bTqMY>_Ez-?xU;uw$X9NCRxd%e4?s zY&WT^%v3sf8CafVLHpFOzBSB)U6#&j+Jihd$&}#Ft;4J1kX-Cq!@AZmzwNRdT1azu z;?_7|cQ5b4pTwa=>OZ@%Q#?wc`gh^9c;xM`8yx;`#A)COMUC{=yYSX{z*G0Cg$9Bh zpyAao5~Sbb^mXjQZ^WZws(Tj>O+eA`c8e2`Y|f@#e^K3n`Lk-+Q+#vZNH1S^ZMZML z3KI6Xop-anHmnXELk^_WRXzuhq4s0u)m^8+o0FrPxd~+*>7BCF%m5veQ^g4nvQ~I%^+JO$+@KF@g+N+fWB~45=oeha)EJ0NSkXfPxJ<@ zAoYO$er-Q9XeUGNXC~~zMbm+uzhS_w(~*vH*@d|?V8ij)g;g_u^z{!dV)&sDtM(#1=kcfwyK%IxiPB5%EZx? zy;Puda;)sHtMSztsDXN;8W+w)G*wfLAIyYvg1H(iW+6$Cv6?kjGfcI`*h4pLhgr)H z4MSR|l^_%q;8n9=58qRbcg;e&z@lp61T!t3Cs`%17FV;y)g-_`K{c)0j$NNai^^A2 zx5hfE081mmPpmIjvn!xZOJOc;{rB}1*)s{m!%))9~O-2Py#bOLH z8O0YexboIvh$HJMaTVzU1VJaOri-oftJ%3wf6Hh>gA{Lwl>2KXG&3aubp@G`(*^40 z#PAIw>+EVa5i071;35mL*cQGMQgaBRA1cTgmpxB8op(2V>_t!7j-8)J$y8)DPJ14C z2guLyK`OL;c#(P zfA|h^I)Ok9>>AA2u10a=;tlLH1BuV@gI!OF;tXpdsdNh*L3DY;q8{5Jyks_t_pv1o zpW>N}u4dB%6F~K6$jSvyFtd^0d~?e%@jJaaTnWy9u{hdxQW z9Np#ORXPZTLWea2c2g7=LM#$yq=CE{1cTZ@OyG*f{Uw|aF%y9|JPoO>3EatR=)}X4&G)REtJo5l z#;28EK%T47Fo9_;O z2k`X-x<1GdY!;3}8m5va+yQ`HCJ@!k@6l!mZD<&dGCw%y2MCr0+^_Pq&ZuH%R53HF zES*ubJDE$qjBD^N%?MguajdWc7bPPlaOK^}NTIPken7sTWe(poN6;`wsGsAMH>OJX zO#F2}Mhd5MrBW)XRS>FCX5^Y@J_UA_w52EO@wgO};LfS4=Rp1mdbqOQ zUWs)nNC8v=r=XZce-PYBKg$!HRLf#?^B;T=AaZVZuJYzK^Qxotb4B!zl`R1V=XlzjLtv^<>KUP{8Z{|WJZLWZ(sjjBX7)PL=s(m8sca`inl{h#RWR{;-;%TWUA<%r? z@fungccD2%zS1eZX9OrV>|rM>@vc+#v}Xt2 zF%QKDw(U?G!QzCYHFB?bGqOram_v^TfC4Hx4|qsPCFadXQlVM!RO(uZqu_en@f{|a z8vwG)&y_y8171?(JQ_e7SPD9C2hN@kq;%yDd~`mF^7?IOBy}rOx_F0Z0$h02r|-bO z&qrGWrIT z>j+)Bv-#~ci>v&@H}JX_xAlOz?eraZ`3or3+dTB3&NVB55=Mi0Ii#Xfn5*zRFCbY& z0GaBQo@H+J5>dVbK^Kh$a9U7lU67?4%Fr`Wa8@k5@PQZ61o5Pu?BtymuwS3FlfJVJfBPaDKhc)^ z;4jzO=`tf&e?yY4Zr}6NA1eBfZ7`AFRjV!HZr_kIr%#EadT4Dq9={Nc4=}HLaLVldQU;V%=y4h9#?hP0`?v>Q84s7$F;RFr89$C4_v zq=Mf&sDSiXlm_yhT{MnLL-Q!J4=zbVFH&ZNKTAVDP!>HtqyY%9$Egygc~Ge}V* zFL_{41kLN|Ch7-8uTU59ptiMFXr2OyVHf^p@0I|K?Kk?+{abP0V&oTU-wG00s7z-N z%Al8WO>-O!!yG5mXFjC-B^uvajQoSlT|(0w*M`u^KrlbcFwJp0C4`I=E<|k?fu&2( z^Hb!LA1rWfPP?2Tnd>485Zu>$TF-B1&u?eG+-_kS=t?rr$beoKt(tRz$X)j=ft6>@ z!yhhz4OhMo|Fi_8#b*DebmSMDq|XE=bqUvM-p-o0GbZR^I{gyqA@6xTj!j3=FMp`d zQ0n`=_@J{A&U~YnO7YTF3)3Gx)dLG_+)*|4Iki!rd}2X(q$=z8vnshh-)L9!Czkkp zXz?O$STnP2{xDz3%|~z+);=)qEj;=jY+&vWU<-D~Y`R1B!Cwke7CDYs3Nw62V-4I= z12oQFiWXA`AQ9A3G)+v=X*@b{hR0HGr2?XW@|OXI@7#(fEJGG*IgS6b43&Gv(4uq$ zFW2mD+3JP|k zEAAXG&zv(e%CtCa<+=@4vUFKOQ>$5zHyWNN4{f znKYE~upFmA4fsmyUqujW$#DNf29Te7_uC1m;kgtOTIn};rJygyzP&26Vrk!Jn;9gdo7uLKFAX|FB zSuwGu2YlEG0dkT%-~Y)KNRX4x<35le2uN`vquY04Eu3QLIi>h;78)OPy^OqWQj~)g zo4{0*uUvB46a_wYL*`ZZ&n#e?zA3|^)hHld?sPvzIyYKW@gJh z?r(6d?Ge@3p5Cin(JR#P?*|WPsr`9Rw%}J+BTVV?@PpN8iQ8+X#!i!Qj*1T1jF+xK zksiV2{UC_=fYTRL4!g8%D&DgOm;>{R_~SJwj8Nz$lBlTF@qeoJw zZE7{gp;U)9Hb<;k73TzGOWTGApbj;-6;IuOUWG-uZv#3Mu(AYRsW~riW|<)a^8?s7 zx2jF{RFUd&2~OLH#)2F>cOwdo*6oG3i{v0o?N6JqIe8VO?Vq24w<=Bc1fim7tB9X4 zO-cQoDgl9=#zPUh8Gp19g$3Fg?`?He8b>6pPVoT^Z|-cEO%#f=xwQ9YOy!^`X($=J z-&a7Qf?ABziG%(VzG=3Dxt`5aa5m!wIVcF(^!FU0^=XbsNZ%{Po1iVcKxYmz`TtZ5 zT^RD5UYDyTZOt^<*YZWewLTe}O7N?>D9pwDJMhbts;?B+0f!c!kkdYS_oAjQNYLW~Bw;3tf$AQ{}=Q4*7Fpf&1YRlN# zvc9@9rVcXjk(Y?~68#E?#$9D>Wm(^@GT}pew^uxMuE#1dl(G7dI<<{In zNCR7iowU5a1BnMjUiN1CV5wFWzies65{R!?itCF|zieG87(LamE0twYhyANPp1XGU^KP2X`XwxzaH{8D)v6XL z9b1HL#VCR*+k(X8qjB;f2|2&@CL-!N{@UF@|7s@IIWaL+M zfAdvGgp~xXC{(EqQ&3y*)KVZ9hd1F3rKr%?u<1gES7Nfq(*4eQ-rt}Y27dz8{LD%)MEX^!@ob1m zDgar_Da!UU7HvZlgtou$ssKG^Z9}m>ua|I=JXgLRqNcoo`(2q7lJQyzuH1%Ngu1JD z>FQD}F9)GhNh#h~jzXx7rFd^Sk;Hw6&z8d$ufu1`eZ8dJSV)H%tic)N3o zB`_(~BI}P>lx(TOmN8Uj# zpD*B?;DfwtbC$|lg8#h}%~5_|!hT=Ed{ScRI!j11Eoc*FB*o9EdU zP+y#F$$PuxWKV{r1W&6(2dJ77{7og=D2Og%qKmMm3T$SIN^nUPXl+y_*x7(KQIkrr z-hf^f$^C|2;Ym90fus}MObo!1+EOs8M#%ikKj@&ggy=@K4mAW1Q)XX_h0*Xk&{^8^&@gmXSV2=W@3+DbUQ)sRKI!4+!q zbiIS=XZZ$i(fZ63(aJSLnJMldGIOSX$bl-5tBHRaXy7Gsqo!_#zwT*GDrS?4nK{K4 zCWihT%5h08Sc%LmhONhqj?ION%=BW1Q|`y46&+t(A=A^-ipM(>F%V>^q5X3~?0!0g zv&I=%Irz`a2+WvRENO7oQ$FEqC}9W(nnS7u`fbtyGoJLur;m}F=tz}J6Jlb07DlR+ z8mUYp(`rKL)w$%%GG9dUH2Ki4lQ}>jj(N=JWu&LVw|G1^o+p2fb1d7_m~}esVb0Yo z&*`$BEErww$aE7g7=WN!;c-4$^dK3i?1AX0Ls`isz2$3M^EGZJic{}YY@xWORE~+F zEU8=>#RHK5!z~VwrSe1&X$``Lk=FT|fP76LoH(UVity1o;Pu}j-9RXj?c}io5F{oz zm#)ddf7PLJ<(Z^BJix>HOA-4^5%WvY%k$`0pVftr202njLyf;QTF=vZrHH*!#C%_5 zF=o<>M=L@-;Na=~WGHa`{wJ#e@C)yTdRnbT>;7Oqeg3gD&T)j70A~ z8W8RcX|G_-yF0>~CytJF%lb(X`%w|@-3`b#jg-9`f;UoE-YR=cOGo>Tv>q*Dk3uK!F-#F1ObY1$ z^4k^=9^hs@RK%L$AqyUVWL{-=aq=D%AeUddYtjKP3`JUo|ugf|+{GCV+J%`RfIi*W2-6jJ_$lC)60vXa28lYSQi(ui;I{fsJfH>kW@8L-Oe_ChlmP|S6qwl#Q_W7b`>1f(SeY1*~Sw*(je$_4c2NmgdQt$r;NtY^$@Z@@sLXR&p zpC|TM1PAAukKcu8PrJDEDo3xOMQr%9Ud@dn@`d}2yk|IdnAA8z&4Royfc1^!j!t*9 z8dJpjKWim#5KZENFQ3A@=#;|(VCAoske~*}qEQhfma@If{S}|9N5Lu1MIxU_z^#y} z`=Ub%&yc7&QeII!)yA_@MJ!ds{8nf&spw3{I2RqL00G?zG3Ibo!-XPm1Hbk&`s*C5 zXh1>bgM?{=>?i&NNu6#waGtqU*v|q9vqfK<1v|z_iUQ^xL@GcIj{Z+(0@rKHy(aQ9 zhVJWDfE9+k=GqxJZINS%ObJq^LHeg>z49ErW=ArY3%_7Rfwl?PuAGb~y}6JFaB3~Q9DM`L;9wJWWT#*fGYNSngbMM5KaGWppK zEdf}h-G^jwz}8db|Jh68r!e(jN4>(3kxAL2wEnUx#$uLLR`mdNu@*a{Ar9 zb|>r_Lb`Eu_{3vF{YI4uY?L(k$9({C`Sd~IsKRRW{83fNRuwXaLW}VReQg8u1mGzr zZ7s$tCoQ^H{(v+AbfG>o4t^Ee;bJm8R%(kNm=wJYZl~zYSM=IkdMjM332A^?^-|K! zg|ZdJwtr$%j+PZe+00_FDje1AK_L-tUnYb8FF36vgTv{XfMO_k0H8%Vphd4K#FqUi zwA?lgASKBjAwa5Laf+wQ83hx-Xc=ic3-H`Fevm{Wg&`#0fbA#1g(%41{b#8Efr?x? z2olDqk%WMR6-wEp@pDg6R~`P%l5Effn&pEecpngrQRSYhkX03~V$=YvbM&5Pz?w8V zCjAn@DFE66*OL~|#HIk?6!C@1%s4=1NR>md_LtujqENuET4}zb z)aEL}2xJwL3-R$rqy>iGwFz_rwwXAh3CYTJv$ILC)8K)b=iux|K=%om0zEUo+8aCx zrZHTZ@z8llu47_F^oNc|PYaaBW7R79NkKqNbq4*oV7_}bLq95*DXQ*+Karb0!;gMg z5Yl;CpW#nGD9~p_IDRAP`*1zp@f#)gyV2%)Z78d9N+7dPzHyA z0$kFJPEB~N0MxW1Dy#DsX-0vD>~>k+m!&HTh?Y0Y`%AbI-nD1V{zSUC0Ke9PCY7fa zBv6$P?OBI@G4Q1G3R1kQsrb-TuLPN92wda71V3k~ssJWQtSqv8J|y?g7YHBQvyv?F zJZXFZSY8r5)tkaXV6B=eD&8-c-y^>P^c~jHH4Z2rC2w=VsZs_NLJKOCp}oBEw0sgg zKbPH|XA@l}(VYow=}YUeZ!41dhZTtCL(X|2d2Puq$T(p8_AadIto2yiiW1j574-27 z;(039g42sUqnDgkxE8=EH=ei2C&5kOTwsDzjdMXJ*xY7$Df@#=87|5Uw|L=+KGAy9 zM|}GFdg%2sFFndtH2(`g^zRk)PmUtRxorAjzQ{K}g+t%UUmo+lGkr53kF=tIz}xw! zg!CPklK>%jsU9 zxBKYtx3<9I&);s6R* za4f%6Sb5hT z<%64Ez%r)<*A1=)>6I~SozmL#v9b-tINRLF?96U>LmPTQTA2@WYufPatv(~Y)D}2a zCAn1P=i@7FXjPDi45`rN&tDMF>u2K=t|?aJpAy9LAgi+(ztj%)zOn1^&UO$>%*n?e zwxg2xuSk1E#Q$m$^iKWqUYgI_|P5mD6JfKxdfmrg(sa}Dt0dMF)G36-#8GD}r zN|phMo~PpGn`E)F*Ey0Xj(Oj(HjHC#8disKOuATYSZt;dGC?lXYzI@}b5o-=+iQPi zz#V_lI%rF5gvh4-Ft6tZ=X_wRYd7C~ZNRO{Xb55M)L z^VNZ^*_Dmi}lKvpYTk&Sz{F(DCy@FJpPBh&2PM!z? z(bFplPb1==fxshV-JUZsZ{~rGyKUAw02e@7a+6bTD;S0=AcDHh!^+H9#lbuotf%Ww zfo}KmQoQI6vR43K`Exe>!_vG${wMJrCLyF#)xJEibm!mFiu7?x3Ov<;Y1$O&x4^lb zO3&n5_vf*Vc}!!T<Tr9TXf`yft~XnQ(}991Eq@8~(}FWp=ikR=I${$e~xa9mCHvD9AkRD1ujbYCDODb1tA~hs+5C7JaDprH*cEveV>h!RkKRm1idTb3b7>yC1WJzpwT#!+ zc3Kzbv1xGs1{nMUHp_300C-GBC-bR04lyqStCG{@etm+PZ9;7SvkF6i6H_~zkH;JIMT21W!b1``NM z`FYr{6V$~cxp-P9tiqvOys{HC0=IMVmQIvUJ#xt2q-=u2yH+#zt)FrOXK!*)lB^lFjq3%vahdLhXC?nstvWPHBb_|PpTA%8S; zX1~nU!t!sE2%qW|(b>luWNJq^^{DT>-5SjlqqL+yh4X3O7NGJoY@ zrVAyCb?qZZG9Whjl^lpoJ_q0KLXqXRwInVZ$ly~r-9ACJ^z}9Hi8K(_2T)H*O;sD6 z6Tt&cJypJYL@RSL?-@~jk|W|R4dn(87}Q{=0beUU5_WGNbJ0j(j1YJa5N50#f}BJj zy9?}g&6dqEaYvkc`LTNc^$UDSezY+=)i}>BkT9U&S<=_)XP?}&>4!bf3 zi+ez1pi6PYxdST`4Uy12;})0XuuF0*omZLU9C{(?CxrqVjKmm^@V7+Pg*ogC@bDUm zpaa7~h?My`>|7|ht{H@g@UU7^b65@B{{n)fl_6pP(go7ReKH`5-n8 zpXx8cN6926JLr-mWiZQUEO1IZ+94oFPv?Wd7MK(eKzuQHMhtY2BZ=Sw_XQw<(JAH%3#KNP6oE@QA&N4&84L>-RZ3Ih` zmq(hf8$1-v2|z@vqE<+M; z5bp1d?B5$LOgwXGBYkx>R0o9nb0hl)lqCSd`PZ7Qe{5uL!0mLPuJN)iZ;{ouk-feV z&o~Ogvfu6kUoL;^4zZf#NQNlDyi;4a8UmnoZu|0fqvl6c4h9x4P zCSi-Xk>G+TN+O1cONAn$bs+&F;8L|d^;s=Us1TIC0{S{=txcj-q*?{7Se2HbrBu-; z)>dn^F0ZuOYTcKrknhZm?R&rP`~C6#0hv2_APerTiobaOI#kL?OJR%RI~%xjl3ZSb;(w? zE4s&?{@*cywNd!hJu=nAe=K%yhN|wDp7x||S`5#2;!xn zV!Cm$`(1#0PFxa~U$133qNOy~73rSNcNV+ti*fTFS(rF)7@3lh`05^6VCbWJaI-wY z6z2VLcZw7=wMDfx_sA^|O<0I!pUAWkwY_^lxwzu-9%A~S?Y3uT#?0iI!$3qRZ%|Ks z>#Vp@tzCn0?kBS0<0dS2PhZ^l(KV-bF&a%UVp0QHr!98B0OxM$HV!y8ax;}FO*6xLu-DwN(#J#e) zbnRrkYcGfy^jhqeENKGq-`%^Qq84YD9!C=P0rMFg!}gjSJr zy`7HNym+wYL8&j5HxEy3lqmxW7on46uLWkvn(aD+psqR+qeigIuor*WD2p04W08Bt zB4_lX#_a+WOR5K>DX!yew z$d=@kFG3+CC*eWx!T6^@afs?nT;v`Dsix8=9w5*|oe7KF@$fx~T%El;dS2~aGHp2) z4G{Fd<(;}k?zlzH?u8(_kAzmdX1^?W-2H_kLljwLjRZM0>;7=q?0@uhB-F_x$KIO+ z&hPTtyRFji_JGa0yp!Fd3~g|40wDXYnS7NO`sQiV?N%|B+Cr&yAKSnqxE&PDOGVCM4{N)Qrzp1te^2a zaz~1%8+;emg`+FvL&uZVRRh&`S&1`7DhXO1Sot>B^6Ow6M+7fJU5g2&yYwsUJ=bMsi z4fr7dL{;Adwf*X^&oX_d@GGa3bR_RfEK$7Lb4XJA;XR-Pt|_(C@tn_OQDbY5J~k3p zv>bdGz)vRdV@ed?bOZc}$KKPS&he-e7HwE77(VnPo;HPdyiMk?`!iXPe0RQ`o;E(G zP6Nj;(3*(!!@qnc3m1NQudX@|%MQzihpt=TE?>~NbE`9D0h*Qz7_p~=g&>H1djXzz z7*l6;QXZ!-OYjW*M!z>{)_4&2Y1_Oi8xM2S**14U5S8?HR;F z&m+l5Mm~Q=h>W5-Rz+TW+D61ssoLB4t)pO>XCtmTDvK(LJnzlW)sGu`s`kb+;IDL; zy1sb|XVbhZPhn+RQwQWlL}&0QPFv{yVPml-;oAGaEb-*u!zK zpibA-hbs=?mBq`e+gWfI5GG~PaY8SEsJc)HFSfecZjoXrtLg>^7w)kPyoPxU^9CP7Cq@#qNer2-@( zz={|_-SSBdNLYwJX_3v%OwDl|X=ysdcHSy*-zsq4Di{=swvx)xuLbab*D^1{RaXl% zbO)SMY-(|)h6iQ5fhDSt1#UviapQ*%Ogr7)$Cd^vs7_d(AXA;rjl<}M!}lru)+OmhL3m&K~-V_mL3O@n3w{ba9kGRJE#D~6o9g*D!KsAJ1z?< ziXpAl(C|+^KS0&DAfIlr%Cl81tUp!lW*b5ZPKhda0hgOp)zGH^^)C28x({rXm8e2Z zXO7FC4^l?xK`cbcR)1*&b#^U z+mMz^sCULEL$t43;`zJz-mM;97zt}>XxwQGPam#WU?d2iJ1f||e<{O(t>*+mn%_S5JB$*tkX z2fzd-rPn_6pc$kf!j^(>RR;Ocz?3FSp_#gMzw_06cSgQ5BY*M&Z*C?TMG|x;jnCPo zg*gO`I@y4}Ck3afVbjb!Miz9^a#KE-yU>smH+YVah4X9w9*is7Wh&pu6~Q}S_1PoJ zTON#$wgbawV7_}`zH<cU*RpAfd{TGUJR9xy*Vrg5=w!SEL3wznBlN_=8C= zlYZkTO@Zc+C!k>ywaXkmXb*`WWnNh#Vt!dtqAWKr-8-L|TqDl>-X}^(w@sp$O%u~h zW~4Xc%O^mNaL0ViJ1HABsB22FeQ6muJDW_|)4+#8TPhX0()!g_t8kXHYQEYjM4ow2 zavg~1W@Gb7S;mM}^D}?-1-n>3zl;}?n$=ET+fP8xOB}+THIa3Fz~;&8^WCq{cNWfX zbnHaG&cnZ*lntck&d0$Wvf;^jV}cDTVM+{Ldc*@v#yR3ru*D#b932d8h@p)KJ#FMP zNljb|Y?CrD9UDi5tw+mAMT%$l!z$nnWJETu>X0P_4xj&hpd|x*)lYLQ&nuzqT4&sR ze5FG+BC6Xr(f{?_KRpD=dzDG=rc37Rg&y>^UV< zsBc=`H?7V~)<)MmXf{b}_h)?UvvzJ>tr#FKpNSUC!y`}229G*#wfi{itn)i7@YRbQ z!g8OhTjb7@)?zeaOZ}RgU{kuX9Mwp{Lq$0}Kcm=})uheCADjk_KN0zEXtuhWt+#zI zOI;3LwQ{}H zy^(7u^rW^yVsQGBn<+F-`>vI2P!%sLBEF^8S>3@Ktj+KpU=gI&&Z;T6RqgmY*@JJ=&Ezs#q}%%?X-J> z6~+*PoT{%^(faxY7mX{v2A+r*pM~=V8F!Obt!pw173|1J$^3N1&6NGsh6Yp24B ze7TJ&$U0aG7Nrw?i3d4*)dzDy{B3=CT`=0if%;iHWmZHH&{NXOzI$jm0HR%7lGNHM zwW5zm82NY)mt<)st84SztCL`35Wr+0`@%#5Q$+)9!vlrSclk7loWNxqK>jy$=iPgr z=kCt)ipA8HN=ONC!ih(3&ULoW!@O@~K`Hn1z-J?LW%E|g{}Xyus;7?*z~zhmlu|PJr@Um1M)>* zsl;9b4klytU_UPodXEX zaqS^E`%inqpgsQ`6XdLXiP!3U(vs6JTLQzVFCnM|_9$v6k;8$>)li;?*5_3Z1QCn% zKb2|^A%FoIyXiEsN(7UL6T9^?xTi&N*|&hKP;*+0nSo&w7^HOCiS$_4*4 zve59exfAJ82K}6zc->5YctaSa`%De(K0}THiBd+2{*{a8od=Hg*SRhy{{nsMw)?Bx zhW1=%d+u2?rM$1a?ogm6vQvUIA4vWcx|}@l3`J2+cWxd_f&T4Fkuy|BfQZl{@XN_j z3sGsG<=Xvc1j|7y5uOdm#Iq1|rCWH147Yw@I*6#}91@eZFW1=E%ARzN(oWRRG)La_ zR6M)3JGXOpZo}@}$+OXI0`%v6-H}`4U$$9VXQ;gmmVe3(FBh@Mdp#;wF4kX=DT)#a zCLG&a(EGVepPg|$#%G_pWtYTRlUu2784!$ikfy#YPqir*@Ue;D1Kh>=qUx6+h8c(| z|110t5`HPCqzaiIMk=yW2ZtTC6XNeHz=mCP-Dd5_0cZhc0Kj*~rw~j|8vmr~f z)V(g(xi0rIjcQ0Yz%2mm9BC_aL7_v45Gl2ekBZ4JNGBzLuI?PWM3KcqZ@kR?w_N86 zlG{#l+l6VT=i=et%LYzakjsRC5r8Em=T3ilXMV0bKey4j+?k(?){(p_E1Wk4uxq0E zUKp^7nd_bhFe_mD2JyS>+>;G^dY<;L#iN-9fku8_^mQ*W0FmaYsC~1PU~y>QXr*4C z3kFQkyR)m_osCm2%4XA=TwHq*Y(*`ajTX+vofl=V$I-cD$@rEuT-%*v3#Y2Xd0_Xc z;!xym51Kf;$~2o?24JZ;O+Y{+>8-i=jUQxbMGs$tZ!$13^{O#*mGv&iM|$)jp#blp z4;tglp6hVgz^>E_kdY&eV`22+7o8*g18rxHhHnpuiD3eE>Ua!){gK0QKpc>+Ka~R& zZX*?5mb>O(a6)&e6KPu-p|DESJ5@0TQ^bJw1ui z!M^Aqsh1Gw{+$01DA49E$pBc9ycZS5cY_oCO0Y{pU3WZPyLzTb6MfN6l6kOnj&B}# zKzv)!(&@^Q5u&$9zI^_zHt?BeB__Jrq-@{&vq$-0z)*YRN=Kx;@4j_+^exZlVj=JwvmL90kyI#m6wD6Jr; z>h&D#z6^}~B_tXYmU464^K&Mjgax`G>nR47FsCtL-oaZkwW@I8rNR&o}sL)ub17uav1Og9D z9h2kM1N=Vcm>i@haW1Xs)9&X^qcP{?(p4J^|B ziRl(x0v{3-B|vC2=w%~(a@=eVPP+nXuhQ4B^$HkMp1eWA}azCzp^Uv?dKR|j} zq58K)=MdP`R9T6%>xlvav0$@}R$T%4kQ7U(>XJnpPmjzA&|b2@z`cPMkP7THSg3>95%q)BwoYzy(Uw~ zi2tjhVTU6(UsSzoiKkO?BJ~v(?K>7*1T_*^-+UB07q7i0>nqIk*OpuGhu38Nr*$0@ z=Us?X6$4_y3Kf;-ROIbas6as|g(LoC=c8NG&z(~6;ieFM; z9SsDMJq!C?hpllA$@U*A$oq~Py(|liSaiO;YZDo|HJ`yP!)D>AxO1MxJe5@?i^)tkA@NyrCsEmpL7yfH>mG_QOci`Vfl+PVv9&&KpI2HFGm^;LoI}&q$D3~ zSDC3ibYmu|G0Nf|VDVlpx>f)#p%Ohcm)USi00g2T`R8~ENo8@XfB*uWy(~yT;+qAt zQ_*A66^?{LE$%*$9x8g`IaMSD>Jg&*Tq2>KAdA}{68pnq_vfPV#B9@0;u~H)j*!}B zacz@0Q|f`eUP=(HdSYJlTtkDNhClj+v=k_lyFNWMGg7<6ssX`Y|Ce(G-7&)x0u*P} z_%YJRXPzQ*{mvWfUwg^B69WIWMzZFqb$}ndMw|Q@e=tsB+gMzj{qp%4T`?1Xj=tjS zLbAoep&`bsR)bW9#J=oM_0F2GI!jZCv39Qq3|UgZu`y?xznSV z_2^owxw940WNnwoQB>{Zdrc~ga0)2>$7VdFOV+!n&#ZKR0bplFTnH-QM*JhQyU`2; z24qHPEK>}xZ|O7>6%>xLIe=~Edmo$KADjQ8!@LZ!%PE502x=0xc(p`u>aP-$*;TtKgr(n02Cm>m3;%(}0&n!#JFd67BIYTm`)CE6wQ zwKE|fh_z;O@s<)tIa|)(Drpu+e&g9CQvB-EPz)Z`i)y9*mT=J1n$Pqnd_TCZkwVR@ z&CSAsrSRi&hZQ($`JT)WaoXmYXoh*|3Uk%FxzOykn4Kx+#@gO!3@NqBWY(6?gq*qpsv?WZu+(_?3Hl5tQ{rh*jjm|3T;t{x!NJH^WltH z&hL6F4)q2~hm{jpOg4C)$U7|tYo`|(X&w@Ht&P+0qp#D(pFDX6g@(W8K$4mrzy}ZC zOgI`&hG~?L=v8pDkTq+7Jt=NnOJ#47Rsoz9Cs7UmL4P5qGsu&+RwD8g@o5iH`JnL5?UlZS&NR4&>`&{DWI~^%=cak zyQPzM{Gmq&NZPJW*KrAIAVHT|esTx;gam=3c%1z{4cOoWq``GO(0f<>0OEr;FGaN^ z{*=@ecRcKCgk0q7Hn1sgR-q3`c#3q=cC?kt>)fy%Z6Tp|q$jtRn-R`#>i?_kD9@}R zksE)>OuL>pWvoC^t0x{!(s5%Db4j|2}ni8?_j3EIt|OVBJq!Q{i$8b*#%BuEy! zG{0=KU-nYJ>;}JVJm!{cT(2`TAW7$FNf?HD<~7-G$<{~%EYqvZ(;Mc_DYtE|-a`*! zP|S4P`w6J4Pn&~NpUA#bOrH*!+Wy6H7bIj@^fIKF1OAji;aM;Tzx5Peztq#Q<0%;H z_T-d=P0H8Q344&cJ{C0j7!$ zW#H6j;Jan*?9S2*y!@GLaInh@9?gMk8b)rS+u|s+Edzh{3@k(}nvJhLlNAWlW>-zi zz^^=)E$ugAcDL9rxh=9wP6;jxfr6mb+%96K(9qfV$LF#rN#ty&Dx*P}fteSw=%NsE zwt2bH?`qOiv;I+0_~FhM@mat=J!Hg!4giR6B4b$bm_h6S`k$}h+cIdv*y(ufAhr)ZaypJ>*>L*JS4jB-aWTuv zIa(RSuE0KWcCzAfCiJ$|Q3nRcLps#1pzU z6+e)(Q|MDuvB94m{ObE8bED(wDN)D~NXFi>o69)yb{r#;Z8itZzo8zfgrJHjyu`z&M zM!Tls!vXAQdgE05B!C@3ubYa82Ey;ksd#=MjEr?EI4NL9_4Uoz()NL1{utoz)OEI; zm|nlxv00w4ZTVVRCCI=%foz{)-LDqzT_kvtz+*%;OC9yow^$vV;WYD;R|~f#>{}5B5&SN(CDyYo7w~ zj3nLBfBhz>V>-4d*cJ4qDfps-eHJu*3O8B3vyY)i1};PCQ}E5+>`GcU1zUpIi$TvP zb0Fblg2LHqWS{{(o!pexhdt^;7fNVluv>W7FuBld&$29Z&B!;+1jia2k{f zKZ%18O`VK?jsvtu$5j;k0zxFh3y$3y;gd>Num{u9_=fl|_{5F$;0umJg ziQ*}E=Lj}dSI)%=i8(t|_E%VlO1Q9SLj$}=7XK9%p|_@BpONhF?AJ+Lvv7m6_GZs1 zkjjH17jR%CEIg46!P_Q&0~TY-*Wmh|3P5r9$6-M6JW6%1P_{Ishl$b z^Wxbj!F-Yj)N`RaiVKQJZJx=P9mV!8>Yfa#-BQrex^Lz;nrZZmL^x8XJARO#Ij3}_ z%HQ06)+|5|x#-s>>{~7Wc>BHua&(tOoH;4a&Qm((M4qXaw|uGGW&UA%t67L{a=`xx z0?RH}Uz6{0yNULEmuYR19x9A_prC9E6|iSl?>1FX|vk+OH-<6|wcKmYwik0y~W6PrxG*fU+JX zk?ooKA((#hVxxw_^u&;+VED70(~d_MAy=F)FX!h^=KSBfT%hemjZgJ&`K zS9Fa6yOhW<31VGlU)PrcG>(LKx#1u+h6{DVK`Ma@U4vs38tDb~cO4g?Vcu{6IYeo_ z;Xv1M1`Y9sgWwp2271E^a*EPSO5y714d*Bn=}icB9S=ilZ@3Rxuljq#Aw&l+%o`4M z9h0Cw-f-B-?MN}HsWXZ7@QQFMlvl0tpX5sT3~eGGHA{7>fDNuK`%xwL>C~wLPm<3H z@~Kk=!J%sPepJpSy5U%r{aGUACx@%T{RoloYE@`Ff)f^$yq0`hRAH`G<*b8f zHTk-suU7Rfa*XFO|4O(1~!ljCooqd~K|5nR#8;nG9QtXT{8A}xt= z?9eBrvW3a{=>3n-U=njE&5j%&=?@pW+8Lxt-C32)(saUjywM1hIcPjSNq+l{$NUub zaNoHTJLB}l(_6qOFt~Jpd0RQXCC?3x%=J}+_4r~6TRt^zB5BHT15~?8*p%^Z1;6&0KfK$7U`JhNHE_xy~hQ#S$u$2>WgNY3r+=nE&EHLi_k%EMG zHM&4XEPxBPx{ie*mITqyNmX4*_?d~#2>ip;`L85{VVbv@wRIkMsR3IivL^axQ`7E= z>^L6%ZW6wo$|mt$je*^f-lt+UWElB=j;j>$d8bXiKSgG@-?ZIBEy0dJW`T_l;$pq}S%+)-!p8z#XHo2#o;P%gza1%NRJm_z|+2x%nCb!AdxLxDa zn@}f-G$)u=i7x$8m0-Fot}F5Z)7N5j$_xEv=LnNK5uk^F+=QknN=+MwQ7TXblW6Eu zl2~<%@v(@-$bP0!5Osu%}hGMt~24E%sfK%=JR_I#+^^$?XRiz3mI^ zlDrF4*RdgMo~U|KYG|9!(#&AiHgSpSS&E%rb?6{ysT$`{_nxKzb6$3;S9344fs_Dt z96=wl^FfOHSxV#fF~$ZDm}+pj2X!4BqDbJOOsrcjmBrDu>FHdzwy-3>+4+wI-WGu%ZS}vF$#%yl^>Ip*sd>9H@P|oD$o4p4!AVI;i@c zT@^zVzurW>xK@3X;@+F`l0EnZr4cdWWrihfAClYr(p!4QXO)-(kmM|hcmF*FyIx@@vvY>D5&IkH2p5}^ zf_q+JLyAl(U^6gYkiXqtlC`lwoBxI`JhWUDTmJ?sBdv-DQ$%&&aDlpS7=9#FDsV*y zjXGbKfUc8*-~(Ot1{AvaK@iQg#ucqV7rAJ#L_J>-Ibz62AoED@$DYDX)6Yp7EC{;J z*cA7elt$+xXG{t@Okz<)ib+r>8Fk3YjV&F+^e&Hid&n4zn;dbl7my=(FUe7 ztPrPqF|VOxddLa}R#p+%2LBYd>d*1q0_qcJ8tDuyVP;A%OksjD)uJ>(3LcWiD)c=@ z^1Q~8an;LKbv`q?{ZblTeVxyYXg!GpB%x8H4DO}sZ7-Z(=VPNAidmP&jwq6nR9ys> z4$TUe*S`8RUXY$6j~BSY{kNtfz89H{5I(!oo)Wkm|9AnDSNCA%enmaW~$aCgTYVneW>?ox6mY zqkAtDWEMF<%~4RWpRC8)#Bpxlu?-&^ogW)v5vReddtY>!RKWO0hg?EW5+T@7X>`{b z$-D#}-f9X}kP?A~V5U^-z(G8>mfz+8ON)$dyAjyEWC842>0Qia-Ui4!knBkOdj&c0bpRDMt5fBUWXwF~N68f+FS)+QFqHa%gbB zYQ#Aiz*J~Y#P4Llk-G0#ms1G0&V0g*vY4aIT7Dt-xIJ5jV9mcfvrtrNiwr|tq8SGLX9Xu9)k;R56 z*hKDj%Uyt_zkh1(yv)U)RcU6pS<`VK}tJsU!%VGi1NE56dIOTe1t`gL@auZ zo#ERxV}7QT)~K{aV{!g#Y+w4qXj}%rT0c_A9=_-W5$8`uQu1k6SJ>^E3fSZM@KtAk zcmW4SBYF(}_BD1seRM|C*xBrBJS{AQaJ7o^mu|ftrDmdZ@-~)2?TKKjjzay%i1x805?1M0uFV@g?Swpb3|kzhM8A8IPVkCLSgm<9 z9yyO4#p{ok&SL|3A$Z+9HoQpgu}kW1T$NI4sULTe(Nj=O72`o_PerT7r%s|dyXH9% zBP7^{BydH1ayoayZXoJagiS=#!Q93mGJio{B^+})j?70HpQ5DnA@Y_ zH=CiTh47mXYRVsMo2VGm4yTzj5OFIQ#v_oTd_Po-3F}8uM)>_*O;PLMms$>K5fpVA z!d3_eI3R8-#I2&JTnKM>DDV&2?C1l8!;Gq`Q>~j?|!eWEc@Ma5Zl(dsYymo;P{>8!$4v;t%WBNez0iStKJY7F{RD*DI z4jUni>}kkIz|(Trk-UZ2p2H^dg!ohrJCOGj|B=Iv=H0}@bJ!WL;+C-G9y+=cTnkwo>y!6~Pgl2( zTHJfL4U4R7OgyZp^VRAEC@-`AfsyDrbrn%Wfm=POY|whOx-TTF{?0XCO_(C+ zXMIz?m6gzRt{yMTXAkj?-m?UX#$Y zu8_^=(KGe<&H`4?`xR>!vbKKLro#kz%JQ>U0d_r}VoyE%l3D%Sqe>c$I~RiUtKUar z;Uadl{4^xN`HbURtiPILbD}8$)x;KpB$n6UJ%_7zuo%Pk%WV)$(;0i*1iNw-O z0D!R8@?68OyAIP@m5pCp49jgYKDC$)uf)ur>C#8jlEAlgI6Nk1+fdZBq{YcCaOBX7mZEA?j`KduxXIRG?+@t zhCjH#r4^Gk>gqE2>b$grm|4oE@jk?Jm$K=+^|)avyMni{NwbXo8;>W$+umRcdo6_Q z86+$ClzE7Qmb24&KQt{^&d%lWO7V%mvHj`gWASf)V~xB*tXsj(;$`A@Rrhn^GH=&#djZKr|jVswy9uNPxl2!CC7`{ka zT*fAW+ymT^cjo)!u`)CE|cp?3?_^-+ge^Dp()S;M!F%tG>jYtJvPW zFYwJ(Z0ZE)9o)L}+TnB}N4uUvn7m_L5Zg4vfh1vw0ry^*$TrHFAV-e>1qR3domGU^ z&h~(CWY;_ow-3N6l6!c7{ODb5{yQ6*UQCAL8kLmvP&K(bDNC=6bmY^QMyQIOy8rNK z=(CP{8eOvpcu0hD*FIfEFFP-EMQfqoV5lAJQ7TmP^Xaxi>QH#tQNqtFfNkdQY)HaN zpMxVM){(Sm9@VCXWtRyvoD&)%dbfp8RI$BsiQRFQPge&E&i4_A;br=%rG2O|KGkVa zRdaFpYBoB3q>D#6>MNJjJC;eMQDf9mVd5oA1R^m^sOVopOtiPOMn@uPnt&1|Qq+<+ z1d8*1%Xm{W%X}Jn)S&35Ci&8&r|!d^RpPVGw=iDKHq)hF;>KX!N;W$0P3blhe!FpTA_sZ!EQ5-YbR>u z>XNuLeo&E3+N-RwFKWR{*RVs2Ho#bKg})Pz?~OYRe`n#Z113iN5N>j$z45~RG08nG z-H|WM0$XoX`nRI=$i91MxX=PW!zSvRE(&Yc&g3N}EiVU0XUo@0=P+A`#e=;}-8Uj# zcz832AcI7)Xg@{OF|LcE#u(+-V444_FV(IcSrnpFRX*7x*3c${hEbmtsnvw4&N?=` zFM68!#_Q0Fcu+y-ih_JlP`mcvEV}d@n9udZ);r>*4nE~lsKWTM2})h2N+4;ss5`{ICd+I-SNvWNDurOd0P`z^mOt_Jzio_5IFj5pVUYEiE@(6U_ zhPD4Y^nU~Q(urk9<8)%CgOm?Nfwc89PeOtV`Xlbuk)sp!Aj2S_fTGSS;9>av%NOe%XCBrG&%z+YT;Ybs4~FJaDxhbw z7gwM>BL?Ip772`eqLMyCK)MgDbMVgg7PN|cHHwMkd=eS3%m*wuy!bE7LUm-+dW$-~ zf#^vv4jhHIjpBMf-XIEtvCaD|k4ZS5g2W>dsleE9Y0I16- z0yL4{Ya=|V<8_3l5)y!>NE<*1-%C>ev)$l704gWbTYLPm+ux&uOR1RAh4TSHXPqBH znh1_mfZ9fdYHPUD4~7J=DPADd8N*;H(i!{0@ErZdDdrN2AVmyuMk1a95Jn&P)qe7L zk2s!hii`IW6RFVsw5M5m*7+6JCa4{z+`x6 zhER9BuwBl@!Aa&N=EQy#+YO=#y1icvi5j}&Fnv|k@J^805A7i>?D ztYI)9ZH{#3$c1*%Qr{;w%}|&(5^7rI!^-l?O1lG;#@E+ZhftM8{}gPUIBi|!G`j=# zaV8M#imw%XATWjjizP52x^QqEEc`=>7BIK;6D8pKI$H?UJ3rw6&SjKQR60Mpb#^Qvg!@v)h|g^k>=!;&;T2d}WrX_@um%9}R=- zI3nMy`b_>c&$R=@jmV~@JX?84-p*^8Bd<}NnclMRs1mrwcc;sfCMheEm1n;Uyo=@a zdmuj&)n#dO$`UYmnj;&@+~%mUj7JgdT0H3trh|yLGx5+JhQ;6!_h*u^xXM;PLmIl9QRSN>L z`1*;DaZE95pnV?U#qe7M6lZV{;a508q&m@?qW~*lr6mm{jc6O6f0<{~^KE>=DS=Hd zuv37@}&HcEXv9gz+WzPhUI5ZgTK4aPmfzG zrKsb36!>4o>>U0H2nCEM^;}~efSX2 zrrrh^)}HdHzR=+f2-s8aJj90(Fu0nZ;_HZ=p$d7dulMMLA)#@xS``?i)AOG~Iim!+ zpx%a{;57Ovo@HZ4Bt3Y-#cJut2L1%?I?wJ++KnE4nigWS_({`Q{WNXT1VW}0Ni(we zVL$!(seRL<|KlM(V}rZQ<~VTpz^bCmkFLtxSN+nni%2m=hfGq{Jb)SC z(h$P4fkPyXT=m`q>|Dq8W8xoy&r`;~;)bf?0X_*af#`t^i1a_Oy|hISaQ8ZRC{RDr z@tKNa+7%DTVO*foXkb{iOCQwH@qAr)fB1MQx(?I^v(c&!R4sU5r)`>Vp|5a4m#Wok z|71P1}p%m+nlX}~_{ zFWZIAJvzvACRa}KeN+sqYLasKlbe#zWb2NrM3c8h=#-7D9x$~2BjAKJOPPf*FUH0L zG$d@(K>|eAe+2baMGXb-KE?kCEZgWt;~q4F%-kNHT>_8_>2r?a<1`yS5x=cdz;A8s-pm!VEHxeL5 zRv+aGl|Z4Z$h?HzCHw)bGA1|y7$Rz#`2%=xIA%71D+u+@19Yj0N(+AAG(0p3vx}BI zG(-%A)FmmEOOhSLNIUTi@>~M1t=uFh=5!rDLI}Hdu?E&Y_AbAaF4Yk*AFPD==ofN|%UV^TYoxaR9#2q>6cc??C!j;aU+kkQL zQ}%oZ;8y)AMKD`fk6t5rU+VEW-}AIOY`_=FB#}6=lvPhXexDF$GNDwa$KV8}S6D^r zr$7z|2u!Op46YVJG@g9aK~gi1co^D4KK1+WX9--9WYVO=q=^jGH{Qp4N?DC>`a^?& zQS9i}*WSlhOW9buqZ|8|v9HJlOdQ;?(;e@P94>-OgMh-z%Gg2l8~3rJjO`=J1}1kCusq zYUp}2Yd!mI#r9?VzrMa&>I2rPZDQ(Z*47cs!qBEYqVH8`3hBZH6%*{ZP_i}d%_f)v ze27jV(M;%tB9-H{l42s8@<%6WL}0&FRQ*}{KnH^yc8}P2_8Yg)O^<~p3G-GpcMhzgk9Vi2q(Cq&Iu1b zBa@WNJtN<3i>92%JdjXS?}F$Lq=)3r#0QQIEpP~O!E{d;0uZi~{Qv@pXtN4nYE*`pF{tv3LhI3k5m3U` z@v~g|mL3wngQ)nwS&wcPk%U=lbfgEa>$9@pU3LQ4-s8^pN?oNg+@bCLAXe=F_JC1D z*?CI?9~5gUi`9-LT-@DAd1llfpeMkoRe+i?_{D{DbL{$(iNtwSN4#=2qesr2#SL?{#- z1EP-zZc5>*6`DM0x^+iK=_$|PKb4PwPMAZ{hXPUUJ@=&-cFEc84R$cdPHro3SYO)% zC<4<|7tywRa2V6{he)DA3~Qd%CN94VG5S@1@#wFMV%| z_ZXGFAsQxKqI3XHBUbqP8UmzhI$n`1umt!X{kf{_9vlVpeJoK!H_KteRoW_B^5tM5 z!P){2V`_X(me$t+Her!~^C& z`@a||G}kVGJV1VMT7|C`n_Q`BsS$uOy1G@NTwe?&Lprxi#?-^Ql%2g?S@}@Cw?#RC zwac?D)FLL?;f_V zXETb50k;R>AVyAkzutvgQ99ZGpLxLgR;wbwSM`U73DNjN99r{G^~oS;VwOZ1Np5cg zBx-(4MS7I~@=_HDI$XXB>cv@NkTc_0S3}?ekmmD(A=0k{glXsQwmLld!e-hMrE|HY zfO~Z+aQ32#7D*GunI@j<#9hFRT1}4sP?DyrOrAOtNLHy<$3vtBbWFU*fKqZV z;hLg~xu=XIh#Meb)avmuum;5o;&XtK$zHh}ItLw7eR|jV(O?Z7+wxGY)-i(_U(%mr za4wDa&$6##eqe~C7844&fPwg47aJP4<1UDcOJHf#ghLXPbqP3j<|p^YQJ=tBA4Hjc zf}Q%INo?M7H(hYv8cCO~!>L`YE_oHzCZ^z83l0`341Nl#8R(1L>*g0Ps;8gj~b3ke`Yhr54`KHvrj_hAO zqzbsG+JxuLZ{NXXH$ggY`5k=dCP)Ye-@{jKvT=&6dqCnl`kTO?PO~ucr@p0cQu?er zSo15pOqh75VOtOW@K+E}Qx0po`77(gqp#k@4}W7P_dEBy^UHxIF;Isg!b=_SNEzHS zM{44mPygOD_ZAz%qkrkft8cTp(!$@}|LO*=_I3u}xD9u}H@Y$VJ4k^h-Nh?@XWx?+ zc5`%*ru-c%?tsv#-|u+Z9oXid>9Fk%YmpA)(uL+Lje3liyIz-fceJX@qkBc=Y&t5tIhCc zXQ0np18L)jJSHMt6>Kn^HwdYYO$PcqMxA-i+Qy^8q7FvT#xkBo6|7cJR)5-9$y1AX zX|LW=ESrnRJ!V6NrM#t6Z{c~5S%nJm9Lk3^e7JMB4~U5&)X-5Krcj$hG7IKbhlOVP z;P)Q0O5Pi|=`lRmSn-dK;j!5`4}>j)U5=v4w<~SIB40c4dv=%>&ERo9B5ky^V@2F@lKlrY;hA&xXC=5s!wRL#YDp< z35BbDc+qgSJ?JrltiM=0?YStBM}ca3%QAUBE`9<6y3c;Yjwfv3j0j%oZI4jpoDq0_ItIO@101Z@4!Iz zh(Y-Er>vg-Bo;S5Wlid4o<$#Nk@T_Xqw0bzK?0YVvZT?Lpg@rQwWLWbK|y%HA8gn- zA7#2eEWKA-x;{E>({K4gOB6V_><266BB@Q)FEb{rhR^&Ty1oT2s%ne-%$Wzna0bp9 zV0fxC0|NtsIbeZ`38NvtZem8}wGtFx<-O|lmX%#NWI8_XO~~A6R&&Nsq$nXXD=mf; zUs!?p&tP@$_kH|WbI#d&ul;_kz1G@mC(cYrobJxftPfX2KQg6} z&*MU8CX~K$)ik}By#5Wqc>c=>lWsaza%583R zrMf{VBsU%{i0PP&?%;cc zR_ScYdLh!R~9Ib z<*iXs_PfS>_=?*cWn-soGg+FU#Ly2(`A)NP>{vGM;ZGat?qm2^)Jz`R4fDX!aZ7G_ z$HYOZ%x$Aa2)KqNKT+ZvOF+K1gN{&5?$=jHRTsaTU2%oX>&A(O7q5}ZZoXI4{eI{{ z&Mb=|bbdH%$z?67u=)ASwiLa%mb7;BV~Q$%qY-EaW?=~#qRoH$%Jfh*cVG$l$DDQi z@D?`wyL80E)lV$Z~^iHBG3iI|@vAC*(C0+Aa~t(d4@n=8)f_qJIGQz+jaC=BHcv;YH} z(luFoetdheFjsN#vtNW*MZZZ`)0M_y9DZ&GaM8HAi0*NfOm-5(ef4>{mfMgrDpLb; zCa#h6- znXc_&KT28*a1Tb&)2lXh0W*U z=V!OfRH3E|j$xn)I~9~Nae3$H#`KMkd=gV2=9R?wg=$P2&iF*#SV zgjWf%*@8_~t+6z#EtU}4l>%rlI{-K3|8y@(Uxm}uZL0B@sY6xVf$Uh?&W@IOdoGh# zRKi2-*O$qMDq&L5rpwh(eEF{kfG+-sTkD-#P{3u{7Hs?DA|eiKheWHcR!Ho--L|FH zReJ#BxVSPIHAbl)n&jzUZK@Qc7o+6rA>PDIM=ka@FJqRnfKlV}${81sadGM8WSkh6 zHHC^~+2!{+DpT>DoY=Z@So6wsx*RBa$d^t?;7X3GQ*0p|-D}IdBk`5X((_g{S+%dp z=p3kJqGxhzOC~8wCaJ_;SIR~y%0{V5!XrUZO;Um*ISOrh`A;n=XLiaQ*4E(dVs?J(H7$UOVZD=hI=E>@NM@6?ryYyhRFlxfR;Xam*nO@027 z)ErC3z6l2P$xCF`n|!?b`%6+?kJH{uqy|p@J1?NDS6;`^s(r8rpo^>~uD3UtrAm&kLgcxw?If~7r?h;k%D z51D+`}i5?)v~34O`Gr;X-aB77+y68U@&+Fxa~0InC3tu-h-B#t~< z${Qc9yz7Kn;o6DQ$|e?Ko@Jsf*oT-WUBYm)#PswHI&R*(i^j-Nm8crBp14GomGV#Y zAJP+b@_*&1xF<({DG7hPjCOa{*J)BN5w46MnDoM3F2KpwPy9>S#K+C1OW>t~{b{j1 zSa()Ae8r8pB^tUelqVhh*$)z9 z>;rD?R5<8ZELQu> z7XNg%{x0`wxqoALExrGALoJ5JLcgmljLnpcbYm*R#H+enu3bXeGI7qU9ofx?%`3Rw!d)Q=gE5S`!+ZP2v)i@YYy7)hP zE86{YFZ@Dl9P6K36_d60V%{K439Bk|wJu%8iK{P?ytjF?R-}=bmtQ1BZ}VA0Xgj@p zQ64nU&|y;+PPS5u8_4z>#3_A=Vh!IX zx!|I&`;Yf!TJE{_XD_1DQZBXIHV`p_6S*?VEspI=#;)O`g4h01@6x(sA=waz$=Mlu zk-WNwPsq=@D5b=Jta%OP$78v|u zDN-Jy`)Ik?_afARFc6|*h??+y9<5l@Ax~hG{oBV^dRq2$x$MSQRG2c7UXJd&bl{K@ zmc8ptD`AzC4qtFLC&~Iw2bqO90wANZSeBr>@6?h0|K>y0h>N{QstBK?Y=5hRoFIIv z?Z@^9^HERaJJuoYGFN=9%dm7{KRI@r^*PI?zQJILyCzJJl@ zlGlr7a~PP?Zg0S1Y!6ngx`Sk*ElURu%I&&iQ#-~NSl{a6*!alAtWVl^LNOG58zecU zr6#I#RP~_+xQ4y1(S?7U`=BP$(ZpFB5fn=YZ8eAOzve~rC7J*@3t8{BXIR*VyaI(> zd@4GsSlIR2QQ)^iB#h;-(jZsl>BNR#yyBbfJFzHov*qN;LvQloMJN=a%YCCg zI`*z@Sk?hd5)M_v>DU~Q+fZEjAj&QGxb=e|?!&5^~URG|r)S@5;qMRap7nd9-g(?MwpCYzwa>Uepo~S+ca`kBkKVg<5U5~HB2!zhsCQ|=eJIP)h@rG-94-T> zR#?C5vZ-nnpu~_|O0|MkPsejJ{jvpYSy%2p*8D0P<`(lymP~crb|MlF@=y`Tcjn)FAJ1-9=O_l{C>} zolc+;aI{$M-~4}ywO_RUUaT?{Yt|QwPR9SJShOFuIgvXwnVg@XEy$3M!CK8$?CT=^ z{>?`|yPsx?4uWR2+k*P0xmu^<*j(;TYl*O3Z7MI`vUZi*KiO|~(xTJxSJ?Vby6UQU z6ZV25lW#Z$cPvxL+I>`+1nTr`VSQJWWxD$dnuhU7g&;3%=Bf)4B`}&@ z{(qhp>7u{|U`9-&Wi4?{DRHQMi^KaD{(Eug`st?3!YjWZUGjPXXEdge6_O{;+-MMPhn~eGC2NXJNw)%4R@20Ap>!kA{{or+ z4$j6~E|AaP;Scy<|Dh5afts?Ya4nU zki=JPB;h@NGCRGUEPW5c@PZ%6*7x}SQD@>2%)b7XFS$@w)9%}M2&U;LR-p;srdGY(6$_R?Y&r%PoYieC7X9RKle9B6d28+unpV(ozd*xGe#_|>pX`J z$WT#H5yKRtv#s}aIP3z!!P8_gD@&$>OZF_&@I0fR{6OTDr-o+po2 z@R7>t!G!$10%FYa^H>Cw8?M|EgK(&3f`Y1RSySR=k2ZKX4M#L4x`O$l18c zqi0WU9(&%2Jv3B`{84Iq&Us30y7wnJx1+{zscZcJvTq|F@Vw(Z#vuB)+d{*EPQl$p z?R&hK$M;ZUw*|{^PYIpI(*HMH;g4)q%6Y%p^PQ@cdcMRK0=fc6r3c}1yj@;jmO`-G zS~&^}Lwmi~Zaq(iZsH54Zb#Qj`q?+#YSA#iYa5Bbc}qLIre$x@ekf1tcEx$O>onb0 z%X8<58=KkFgUt6^X~96rq@r#(od$FYQ}2STUHq37IS_BR62D45cAUwJ+mm{%1)1$P z(%Fx`wO?v=f_MXCAqZJZXDegu=UZ34QW68YgHE^U%1YGa13i)U-m(Ck>B5~vM-52)r8ojxt4(foBQ$oCZJy|`29Pxa_|BKytj$~Ey*@NB&DmH69 zJPnY~w3F?n^PI@!9{UM7%25|U$Yx}-Pcd9v!SEKk%Vp**Mm*Jg8vF7&(oqe0P}q6W z_hX#1nRuQ&_c0cp3Fkg{evIQGtl}Iw@(Djned%n?h@XgK3!mbD;%udQp(Djl%{uouOugxTM$ZUx8O?T?@F{s(p3Um-8R_|jOg`PQ5z-+s#fg}rPc z!CUzuQGIFRGgZ0g&y;|_8U7qjcxSg1U@<;*TksI3@Y<84~^(KZ{*yA+LYNzns4COmyE7pHZ7(2nZ3<5<8Rs)wLXr zTs%MUtCJCjuZ%fy+&g5va0wUOvM)r!oVsp1RNsg||b z$_}a$zj|I0XPSxrOFmM&=00aA_v9@n4}HlestS*J8^|+X^1YutOLZf5D#5kz#ET;- zHn(DYR&qgBKkBf>3x~oskQSz@{w~u3WEv}iz3eK4=a_4hEpai9tYN3=F>yJa$Br2ZZ)hWY`W2#}lW> z3p@D2K+mb^=@CnGO#aSOHNCHrb31su|CUpgYA3F}xk@5-@^jb~XNYqrpD=XUssHD2 zbd8dgwaxpk*ubo6nQrsPF+0=*T~bOcshnZGR($DH&5z{9PCh*Qt1DopXbidjgVGk-xEJQ8y3&>Ow6tMhsra3|M?kynRMttw1MMlfT5%tB zD^Z0FRHWpx%fvDlOi+_@w&69#5~2XjV9Dhys?hj?Xz2E)8H^wa)5>^@N|9#J)qBEg zcj-nKeNdRzks@%Qaf9{d6JGHDj(huC+@{zCA9dJmr=;nX}3Z|#&7v~k*B2Lr_=rZz=?4|+L1{05yPhTPJvF9fP)VY zx%Y>=iew!jFvQRu4Wf!hlI|xxeA`(5|^5gVH<6*Zd zG{vRCxrXV(*aj<&Blgd6r2RP#!yk%C`^}PgiAGZCXAeIOMRyQ30Zf(K9m%B4jzKKJ zr^)_r_^4rajT&M82tf1o!#-$ZrHh=!lxi9%Qkt84Vf0p7j)OExTJvq#12=@?Rq>IV zgx2wv=x?YOC}bM=!>!Q#`^pzK+&I6JEEuEQ19i^5dW3y zEGm<+Io0N$eSleXV$~WxE+VM(lan=;&T{|yjZ2BEj`xIH;%v$#tC^YV0?gJ%wjq-l zuL_;_@=5Zthfl#F&W~^#nQbCXl6#@Rp~GI@T^}G$pbkBZb0mlJ^o-3jYYSD6yO5(oFVM|UM|Fg4b3 z0bf;#dwa_@g6ou_Qez%+l5UbIcRc$qXg}M0l_@3PzclTn^cxCO;%YBTNNJXsjBB8o z2&sqUvrnzc=>FvWEeC{6T(D$4=^-7Jy5>z0ZHY?qT|NJZj-!dXRT1LXB=B24L9vab ze+#=Sw`jTr!y=re+gBgde7W8IZKQaex*?I-8>Z|P`+P>NyLgiaNnNRFf`-gswUWpPnW zhnE{u9ikAg(x_ofjdj_m0{jPCjU;#%pW1uxiJDtrW7JD)A<3rk&6ep`h@T$I|Mmo# zwu|rI>mHVo%YYknIRVA+y*GL#ssvQFnBJSz?BXqK#R+nB7Ysgu!>Zp6l4ZpS^5|}; zaV?OVS^3m+U<7Dt&es=bE_n)6yIWlqjj4!{Sw=L6* z`!NcJ9(Jxr0Z;o1x#+g>mdf660`&gIoIua7-kM%#q+h+_`4ec4n#eQc>RvuB`566L zqG0TA9ZyhlN@~D=F3w0VOvEI8o*Gbq_fFkp4&$_>7kP9acs_3&Cx6`s)R&Kg41S=Q zuHz!W5>I#?Wkh}ww;3~d0K>?UN0C9OmR4`oPu0ac7tW6IPnz8Y~;hVcf6~r z_|iLG@?0YyI=SFD%8QFau6q~#=6joXqD1@H`i0V!Ht`}on^3MRUdxLYyv55*_*#Z# z8Y2*K=G7|f?iTEMV``AT{r#5Bigabwhbb{QNQ9ZqzP^PVYUC&Dz20A`*Z?vEvD-@? zKFIe`+#ydM~9Aqlq(tlMF#`$%S5J=KD}3J`he~8fOZ*ubH@Mx2bmLb7kZu}yZ zg6RrZOhHv?kwJS-3rdAf{Gg`^#=Y#HKjSa^b{KipC+pOnZ!wIJn{&<8CBhc&1Rs+)Y*cSF6(R_~&1M)KTu zFs5p0;S%ZgG_y9Q0-Ff?zT;%ocYH)*eH0RLOl7imx7g)&fsVSw^naM9oiYu()s&cO zTJ1qCBd!bQ~W?al*V) zFZr(>b4#|8I5asuA_DFnkj1$)+`NUypeimO5-egMA9J&8u~R5x6=(*gQYc~3bp#j# zFFoV+HOw;q64uYnYUEJr2cc9wp^p41RDhe+$)RYI%5iCXLN)##s*DYSiFWE-Zh|~X zZ(%v0Fl&WkiwRn(rUbczY0dTC63K?@$F&&U$1I-|;T7VE1fTA$`719MPF+}E2QMjL z@a1IvF8^ww#>&!tDi1q#IM<~XQ)#hne)5q=n=%P%v>#y+>vdy$2%YWGaqmOf*fNYU zryk3lex5WP;=_%@kIiJk3Wyt7AIff5W0}-2xy>!adx(D`y8TUW4lBj9J7QO$gXOSp zC1hV`@tWm-jQp($JGri-q`C>4{&^?K-X^qn`zG>J6W`nR!!df$$J~0Nh^5NIEu22>L%9?^L=ujrtwi(-AKXam-W(7izT#DHKlF})RtJ-L$j>EYkv8d&y31BuSkv| zw9T&)hY|b0e^E2Vgp_C8QS!tQKEd$VQK%+htCNLbl$vRMiu~sYKd9&c^75}o!(g-2?--zMw=>afY<* zCUep;>8{ra>B+@(Jy^V=?U+-$FL}CCiV3%DQue)F0(Xus<9j0mq>J zaQX;II>t|)y6cEX)-5sKpt>c=DJF&ubpb7E53WgG74-sr28N}M(e}NT62U1w(wzwH;=pq<{B^|L-XA6O6Pti zX)QSRIX8m5+5%$hA4kaA7T&6xdBk&@rvK&7WN!;^n!Lc*jj?EA>0GPjo-Ugx6D>JD zz4&=BIRy(Rep;NM9(UA~S-0TY!hjdh@wne+4D8KC%+Z==z1|-uW~Q6+E;8e0y`Hy( zDI1}+{@q(JLQA?@_*Aw&oY;@^p=`<#l5?D2#qvkU$>aRrl!niZWb_ICh0tS%JwIS{ zP2TCu!9gD?DHNLzlg1PLf}-%xjT!v`T7z;5gR@LIc&9y-!}m1bJI~|2*!Lb1Lc`&t z^LpQRbU6JsF-#r4qw#(fPv4{1@~P? z;4X~_&t2(teZXfq*PP<*4|RvZk%r`@o!;gT(hsU?KVZa<<)A6yxi88=TMo-6TTNM? zktwJ6?wJQwB9W1z!gHUKkv4dHklbVkMf&~^q@Tj1)!t^;ULY0A zNUHGM92x1&2T1=R;irML{STyPj!4DG;WZ%5l98^5<=SPWS05m~LKaXY=?|niUTF@p z7Y(HGGSacI+(;Q|<^!Y|5rWBhY}B%(VarJ@d| zBN1LsWOZ2n@%yx4`aQ^5vUlD?l&Fyt!KsBrFFoLkUzxaZOlR`Fhe_udJ~CrCjn@gQ zUVNLxpHWkp7i@w5LhV^fFNcXJaRoo6ENl7V*0l@kC zNa_y|j6dH*CjP+pH5WQ?ns`U|cSG+ZpS$n`p^!DHspqVgePR>&;0K%(9o*5ar%wLDn6VHr zHw+uvZ$XLYGt6ulIMKrGQNWXcCjhjTwk!yU$?t9=Eoz|`J3sXEyJ|sDu!ow6zn@?! z+S7yr7hdq1-#C=6SwD&%S(m(GJ#_`Q1%{UTE>Xz`+28ewJ9=C}j{5p%2ePyn$rSsN zI;iAcuU4U1_I%3Xpg``c-f@#xIdCxGZ->&>_sLtVHNWV^c50`}0XvDeLTD1C%1>C{ z>lzw;G35$?>Kfyf_IWvfs&7&@krDTVkX)_Mo81yZ=4pkYW(kVS33e>w9JU$9 z2np~PBGms0@hl4=3I4*sr;j`jaZLa&zbK{{O|OL9g;a{YS!Ek@|C|3Ic8P}rU0kv zT7A~+5H2k9vASwDbJOdt%ms~ivYrX)W;36x8~5w$H^wb6RxmmFOINdg(^&IUAv0pw zC8kG;*zYi?Oan_h$kk5L<9%}*{~2YApo5& zFogUoKzNMp4ko(;1joqh!N7KEIJT;Cv&QK+$+^sTt(yIEa1Ohu6Wnm|3Jub_SXjQH zd{DsJwS)3Ts<$Ve4rpo(_M8uv&Ii}J9~XB8lX0A2>UBIAQ!g%^)^Z{3I~!2r$0+j3 zX*iL3B$)i06Cwv6kfVEDSiU%YdqC>I?Onm;Gf(?B?G5(q3zq5;n^UZyK?cs`g0W+& zlOy;P5quL&+BhL5X)ASc4qNmiZp7nYsOIU^lBp{36Y5%Ncq%fr{oIwF%Z@h(6T4oB z36Q8CW&gQ?$#Z(alJs^@6ek`;5ksR`^&pBztj8Zju{@Ym>xDSb9X(ML2a~gUA)#m* zb*NbwY;i5U`Ojd_i@^zsGdftV#h$p(b=yL3YNrxCty82HTv9V%e=FTER-1QN>6sJE zS(6SR+&G*bevwA=jBbuH@1$CMT#j=p;(YVwlwi-);4?Trdp!U_t?wX8MfMf%Oz|1b z^xzav(O-j;4pb}qBZ}!1YmRQBc=}6ms2sz1#PAlyz4>@Bu7-ai7&caa_Lj42=NbL` zr6e$UpWotMM(}tS?!Jc4L;>!Xp94rdIL2FU7 zo5~xd4gnx`q5B6C<-fyvDdsBW*Om6m%8+PG_YJ2H1fZG^ji^YHit6rC33o%l3p+ z`!DLmp(B?ZYD9T%{}1@aN&SbLMvfS(TeaCFzC%5X3n)j(TI*dnFTK>6Pl^R0j4d^g zwSr(PT4V66F-Rhcxm_%zp)s-MLtF7$iuiZ>SyN&tab3JwYVe3CaMcm<1;c++6;bPJYzrsu)~ ztHYP;obegA(^kidt#Z&i2-^3ipTVR3a{-4Us51MG7u+OAx+X7Fy(X4j@q~P>a2rKi zbeRbuc_Bg|dqyDBLxe#Q2Ol_R7CXh9C#u!O!}*ar6IBFUl%9PNO$U*N(9ezL7FbKNq5C@)Q!&8*eR}X z%v6iT)B*LP5}%@P(n5h08HMPgd4egGccs$!2RiX%bK2(!{pIN(!70w6VUu;$svQO5 zWAvS4aXBFlu@xuM!0B3Z{-5xvp>Lbk{_F#MEhcD2Orv6T%}0Q)JK`0|aS+ za7HcuLJv?mV{=mk;tdnhpNpsdJ(N;ju%ane@Wcv|Rj8FX@jDte&Jew_EY1=Wmy)#T z7Rn&@5zKvrWy)ep-4c3UMeHS*d*NGy4>4LWN7MIvc#jgyQ36>LF2s&7JV=C&1j?%# zEt$rf#9A8v%2+G|A){+RBIsx^oB3&FLa@!A5F`50@5cRwo!(7v`K#-|yF%d~2BUDhSO%DK*27OPnLMTB^Srh*#yftP;Z zv22L{p$;fXQe!o{3&vX==f?mD8x4|}}7OI`J&rI!^dvI;$a?#Zj_7h&( z#-CBK;v}BrM+%`uYkVHfW~HZsm#TSj9CcWNMSP@YnG#oO(hewAQb+MUV6LBCx{fdN z*RK4rQcJIT5#7{_b_RUYi;dr>-?U-TZ1djaC$clcCQX>}uv#po9&R?)xGo?`?Rv5< z^U0~BtNdXmKw0G$-{#5vNFmuUiv~g^E##%e{27fH!;>LVLL$rYWEP%5kNf=3XgtsI z((^oVM+qq-pQDZrN2~_2O{5A^Jtbdht(~31#*WqHj^K?kDkw9mM;8pLO5%2E3V-wt zp><;KNh_0=9_P;}#j8Q2SG15KWK#DeO=bfm-J>>$-vyB=(L!i+SWnVQkCm4m=9gf6 zGnxGdtQ;m!P@=OC_e8S5OilU-&g(OEfN zi9;*)rhzx7G~7jGsA#)}=NiEXbh~hUBlU8o;u@k&;Su5u8qZGMdO5u!Oy=TCbZKgsNAwN1PZlVEQUz$9h1xYPIre>2kg}US(3POGy<}m!G ztJ6XziAT^(y|F`Rq~1v6N~gGrzIt3iJ9W~xK^Dnh97P?r+oigoc8vnR9e3VSGV{ubz9U7)o;u^Zcm74r4HDLY@^SD{fhZ6(~QrDigS8!D}y{0 zK~iNyoIX@hoc7&^wha@u4+h zP`ahkaZm&4A;$bG;t*fzH1O4?7lS+tf}~f1mfZ9r>|S%a#cjbgGY`V1{1Nu&rssn^ zvx20#K}#-rZT5`@mc*Gr@5?o?Q+J&8JQF0%3=+=;(&SJ2_Q@bg>di`NYEZ39VZG#S z_)VTS>`$Q_B{9J%F`>&0mBXAd^)9NeG(?xguHP>TzBHSj3i6B$lJbJOm2EB}?vtZ! z!!}%Gk~p7{lkITp%bfmJRP~^Y3G!qFNn_Ad(0`W^&{T_d4;~Jirn!TH$VHRzQ25W( z1GSbGK4ZOxBb65;dx?8`(g+Uncmt(ixrL{R#ew92S+J`w1m@lj zBnperC-zwyFsmcblJ)4w^A1Vj$nDJycjU%ajG3L1n_|fiw%-XP!!3dx_rm+KeJRlM zeV}wPkhb4a@p0<9s4XQlc6!X{V-Ah@Z|Z=7(R41*vpY~aOT)R%;$zg={#l?rI;f~Q zU5V>HG{Fk-i$L} z{=j)+pFq+(Mo0^P&WGEyHPAx>rOyM=WYT&uERf8J5hA9Hr@k~xn*u${1Eo!YDfvvd zs!b9_9rY1M^ni2T2 zoVf#H9raK46B(aBtyWvpxIj-@p!Byu&3y0dmo|oZ_Rf1HbqD7*TQ#U2>sK&sa52&> z-lnMNf=>i``UXl90x@|=N5qfxB+4q-2K>YoI$YQp*qbH%bK+he$6c>mFajV3CQrBda_?gd_mN~Ua z9q75Hmn?yrqIfS;H9YF2xDhP2+jCT!AH3*Cg^QWf%f(6`hUdIq3JJ7)(k&KH2hDZw z8C|_OK;i>y-4%sSd2m_8cc~xkPkw=(qk73d&~(ex<~E2=$~YiRaMfRN`zKx;%b*Qk z+7nzJ31Lkgde2_H)U7A3I3YPhq@GwmOOK15FZ9wGeYc-Dh`KHMk-*N^zr5l?UkG%7 zBYMvky>wLnGWtN3cv(;U<1vC~`}~{E={;_}bXMQy&Js^iw-jtsp#{Zcx%6aAybwR+ zDPKs>D!p`255i&}{nq@1{H7b$Z>V%&(ggt$DUS7pJEQb0(M!AZnqR#3Z}ntLykHK> z{M~DzUfQlFt?|N$K8e3OPSr~v=&?;4qQgNOnQ{;%J;}BSkFcxt2 z+$Z95awJ@M+MutBO|S>*+Y}L!AQ;S(^`6OkX|ldnnuu^HO6es1GNpZzeqA|9WyPoU zWPgItOBkdt*G6sLtUa_0Y9w`~kL$_31R=qkt@mW>rALANv6w}%tJwpdT93Bk7jFs6 zWM%4!BTKR-Y}!@xFd zW84WLqM!crj}wI!mi-4umL?1TVaIVKte-H1?ZuJ2eu5bsV`z+6T&o|H&-^eav!7R% ziK!gtzgD|8T(-SOn{KDF@mA9S&NG0M?A+uPVjm7EuOEiH>r`S2eRmo*v!k5LAR$6M zTBr-?=tNFRu?Pj5~NMwnVr zA%~eSMR8&%eci53J;sa`cv%hj8Q}Ha_jcl`+-=Ml55G7(#{dohjsR9oP0#$mi(7IGOy=WvM1BEov4G1F{tlOgbL_zTLcr=cf5+uVImd*d zoTCxp?*R^NHaN6#aEs?0TD!j^9pO&LA{^XR@&1nfVf%-MzrSzj5n~Z#J;>E*z#%{m zN_AOaGQ;{)tw#vR5wMNsI)-!bR?cw;e(7)<0GNDl-%x(PG2_NR(=vPEX$K4k__16~IZKn>skV0BtTzFf$OSTx#Jo$(iJPEem`nwpTg^fyX8!+Vx!(2lAO8lk2zwfU@FC>R$ zB%$?80Jtgc;CndUuO7q&P5@>JvW-j@BY{i!Za#tc7Qjg)3LRT!J7AsHd+)3uC!URXu2Se7cktwuddFP67rzJG;i%j!lA<%j6}|8j!YjfuBDcVOtJhl|v43cB zt=GFA&vG^_V+x+r04~7dSiJ+xM(-|!-wv39g3biY1$2$kJ1zu-Wi$d71GWOz117_- zaircc4evRCJ33Sto;={*WBMY;5jboGOaQC~ECB4v)H`DFyyG91F%7T_uo^H0?j}4> zYY_pU954Y;hs5vsAw1v)pb~H#PzN{yzm<480gC}ifSG_XfXicw^bQU$T7U}hfhH{D z0$>+lF<=^CIN*XhEF%_A6<{mg7Xu~$cB$Zw=N&v31BL@s^r?g&U@_pxP`$%(O2G`k z`@%B4qYEXUz=dUG0Qx_IpIAURAP2yFf~Ne~>*XR)b&+8iJHk<=VaN#JxDhn~2seh2 zFwS5tx{Lr`Kwwl@h82(jn1HdtM~7u>!Fw^Fl|DU)v<~e{pF8l}$>W_q=hpGqjKQ+1b}JwdY{4bRlqxd z?SK}*O@O{vScV<&6kq}1Ex<>B_mJQsbdZIB;`d2Ey}?+t2ktkJE;{@->v!!NDtr=} zG1?TCVd;&w1EA}E%M_>8d5ip*3HY82_!;*kh{eUlU3lIAR03}$U=iRWmvYJ$KncR# zLnrp&xf?KZT6*RdF)g!h8CIg{>6w*5_%<>_GL?P8GU5S`0fv8ZE8j7|~~Xc%5JA78bATYx$@$ItQ6~CcyGkKwhqq+sVsdA;ueCIYblFdKj=gX#0e)!YquuS4Bz1zg2DhiT4k3(F`%-8p%Owir)u5aVTN zLx7F-SNJWAOV8{=H87F;hpxkSHK6z`(!oqte9r4Vhwlu`e#OV)FmK}HCjfICYj}~@ zt0-oehy;8iLkyOzEYOXB z?O3cABEJg&tBaW_s{o)%%qzRWc6qZKq(*6VcZokE8`3Em$y{3~F74i~U3nD}{12(O z=1v*?1?=^x-+=6`KsX`5FXbE6LO ze1Dgda{8C~m!9)VPyg8o>fu10^XJH>(G1R@F7|?MC@)4iONKG_Dcw$G-d?8Wx$eoM z#3|HwGt>^m=X{tbm_4r>GV-U3s6*C-Zi|Wuut3eiGMve?D6;ap@sjm;ccn_4Ktm+p zY_2%22l+fBjq9%Wq(cq6eZ_9O`5ZXo$-1<4k>XP{M9t{#nZT#|GBH_URTYHu6nm9-tMAxeWk0}rK$HsBD2=Dh;jWo@tW+>+6779 zwJuq3b-hb-l@7FazuBHMT{Wk=>h|+Ms8~j;*0@|zB%YIT4tGJkck`SN>3o;wtQVos z#57doui`N|(0)14F<+qLT@6QMu6MgCi;Hq^nkycsfzY^LD#ZPA_^-P>hq`E20ROlB zs~chyb%osRekN{J{*Hb;Lt0Y=W4cv)`5Dx-;(TpaQ(afhrzqtQ;x-zfOi;T8P1$(1 zOz?A$hi+?E*?3jvE|aO&WX*AqeyKvd?QI%R-oDtEcOl#2O6p+#u*-ovAr~mb59w!a zWfyrZRfvo$@r6d6h%VWqs0%jCjh}VrF6`Q_HV*EF1n!+KvNKf}ZCKXD`S)M;mb?|B zGs2QC5;;IHvF*>1i~&Mqnsr)=j|)k6F|hiDT)8naruAKg=&2j7tt$*pK||ubP=^;h ztpfS?03q)&tLZx$I5DMt`62nlF;spIc))|NX4~I97i^DPH=@UHC$PmqP5gNfq`*VY}rMukp+7if`cgC^xFma41z*!Av{rQsq z>^J||nQ)T+yh4AL)1NEm%bn>7u*7DW&6_WET4oF8i}($df5WVaxDdkHaVS~WIH*!t z(QcQUz3|sV6~7#+XtR@~G$Ep>VtC5RQ4l7A#Za*gMXji`&(T>wvcIPLDAInY^Pckb zC)MiT?BWqxi0it0_PrXZvGa_2^tSeu%FRmaLx)_mO?mq}?Rz@iuwgujv0gn?FqO&Q z-B}yQ7zZnD7?O%AcVYV>l>N(lx!-h}zve3b}lV8#4M(UGrD*e#-=`d^bG;33)8*G+=swL2WF~8pls~T~^Y{S<@Ui-Up z#%IHXXT`ZgPb-n#_LGO)Q(;l&I=U1(Yo;pi$}gNX`zJ5e2`Zym0=Iw4MUyP_@kCZ^ zP&TyE_BJo=bXyqXD-0qiapA;_dC3EZ6Fvv2xU(WkX@0fGx#FLsK3#}PeX-LL%fNyT ztkEvIW$o}%PEgj|PMa#upfb;g-erkv%+j|fP{Z37_%6dy_f3ou#XqBX`V==kr zEr&JNip|Po-I7yY+*A*_Q?;t_5fx_7syj8KJEbw5Tq+kmP*rjE`z7DWA`LO8v!uWv zj=*nl(SyNTQEYcjGW96&1kxHx*6lc1>pB9`L`Oe28^-Dy_hb40se^i|G@!>OLlsC= zQr{uCuMgARCF+MT?Q$5(QDo?C<%{go6O~-ZNM-x0_UVIET&!a%b+^81_n$sW$qg8( zEPR!W7(}JoU)WuvRIU$I?qOpq4SUs&VPi&r27@)Ck)|@!kfRlzKeST z_k*gam($gVb@ZvhjR&zKQ@Ibaser2eHCnKW*X&|9^>pnw;rxI~WNCajU@Ij#W4!VlbqIMRnzwEY! zqL+$p>gOz|)Z)JH_vw3Of%vZMW>~+s@-kf4`o1df;eCx9!XU1uPgGYKeIl7Ig`LbA zEJQ`f(QR%UqFZ!t{UqzNnCOzY6&u7u9pv4?LK^!<2RSxahzYiw75}`0 zXfp(J+7ud>+w#2l41J+w<6r3uZ3+lP2hOu^>PQLzVVI-Dk0U=UXP$dkj@3%0WI#an z9t~PsKbaoPPxNIIV$;Ie(9aCC2#}1K+@6e*+-OT~uXfXSYxZ|01$b6k}c zvnLV0)>jX@9D5J8D7GF_<5e8~P%xLTa=D;^dg zhpTebu=(G{CUH2Whc=!rrxH-@SCKR0^3;O*$yy-39i(H3kPz69#uN?76m;uiJBa;JA>^6I znv!*k?w%eLjpV3ow*5DR;f$_=*QZRG0`8_KgsL7!Q_S4nw9q*<_(@kMYtlm0Via|k zTNE}h>-%$WI4$dKbS|SbOY?8U{iu-4HvC4K9uZmeS5iD($m zCxsr!IHNM#THMp}kKdHZV`b>;$7isf(376w);EPpSle_^26^Yw2jo{;8) zlam4l3dc?Eypqv$hnwl-s>n(+D%inh@afkWJ{Uw&a+iQPIbFN%+3FFOOF!%pZ z_2mIkRqg*XcZLCmt8xYy6vz{M>q%+gGQK{He=!Sa|{ z&5T|Jl8ng`HQoda5h2$UQB<_+mX`a1%ltlP@O^*p_n&+3dCvBn<(~7L=XuWaIE)J0 z50AmGmb%R}8{dxq?(s;C&TcKR+H<#c_GF`G`O4LYzIH2J6i0Y&{bRZ!j`ZT>cj%9C zLmnZ|;}{FBvoc`jAOLsv+AOe5pT7hV$|-&D0g??ZN*NgLuxNREaT1ajL&vU*g) z7`DBBs--`JPUS0AFaj6NzF|QtLOD)b(2PI0^$`GA$Ke+qM8i`?G~8z(XhLqP$L_TX zqH57?X36VJaa;J-d2+B4E6Q<}#BTJn9AzJgH=QmQlr%embQ^GifyQB--#(aG|5#mW z>BK56_kNrN(>`@x31*lqwp+d5U#0$JsyZMa)4}HPnARka2(6b3J(c|F75XrN1aWsC z(Qd;r^p76VVZ+I2?(!qLayYc9=_C5%a59!V_=qY;5CeB5iw2J%eY@LTcm=)Mlzh?F z_xdG!Msj6GzM!nbHIwD5M>Kl`=^FPrOVX6guP*B#oXEmQL1l-pwpl)7VBSCfwmoA^ zK?R1z!+wBRRx;>@)`Hzg1@G(emX9CN`Vp|JzT^@8djyHdX*z-n#Fk|&+3FY^l{P}9 z1}4boGC+PIY>?JXt+!idvS8r{kLoN%6Ev0Xf7vY=3=&&j$^BKcZ{I!ix->BYqv6fK z>}s?=_ECP7{_4X@H%l;sm1H-JE^|-Rfv0IJ&W3uz>kL{z>Ay&?9ARFgzRjKecMl%| zTAXdU&)$aN>^^?9fk~pnU@#@y63;R<`Irwx;ZJSsSEgBMI-P78=z=Ckdf6L;rC+k} zXKS#OS)v#?-_(uIt-xY8)zX`VE3)CDl(R&z@0)Hdum_=t^kXZZIHa*Sdwkde<4Dtl zk!H&u4{1swNq6hYuX;ti6hb7*B;UjM&h=`FGuKxktDQJ18bivajPQ!z(e}`Nb;`FUIv_} zZ8AN|9_gRDNG#v`kiIdBBoB&b5%HfrboGW0>kW0NPglzt2CkS0`KUC#aeec%=&HyS zO#71+408(c%O28mqllyDOqOn(wkcj;@7CyE*}?J}11#RMX>)#Zx%iOoNFx6Vz4-tz z%aH%61NVKpTL!VDAZ<{|F_T(Mq5-2xNY6k9ZB(sx;Qv)Yt@}*h3eGmLX|C zm$W5k-@{Z(FofcX{Z9*3ki@>Q`hSlOn}{Xryhzh0k~g|Py9+$}j@XB7KkXiCz1dH{ z_&&QRV;O#r9-T<0hxB6bRAWJH8HbM5SVCENF~rKS*%djKDUNir1i&6d3VB`k$>9pi zQZ3FT*AG_|mT9Exhv}Xa@}bw)E;#QmTs%zUCXvjb-&wu9=Y)(mH4dlY*@e&*zwt(R z_^^D)BB0&be3u@WL_)Zq?$UoI;a8rRW%>0kePc4|lQbdAvh(gI8$IVPUpW%{+|TpB zvhU}_Lkq;qfaU2cumeCE)TJk@lN{UKH=rNmEEz zPkA|)uiQXRE>_+ib}c5`d!7;(+|DgD5^lusqy z2MCL~e3L6@VQ-dclsn7mInX!3(u?&)kx^&2M_Q9}kA;(Jy8^UdnTPy7osmlV4e?_c zHhAP!1>;?08iTaCb%97|5BEOOlq=Y|ldFJIvKLF2U>L(nhRWP1i|1YXdn)l)O7vPP z>EBDmD#Dh$u~OTjV&tPdo5P+8OLt<)?`S#NUZpacybV|H(4;idGbbu*8ki&A{xM<^ zXZ*e>BB=b)ok)J17Axt=J18p>Gh1e-EhOSK;!9aewNe^aQYfTx!?bcLR}#gSiqp9g zlYnm? z!)##&w|>sUxnitQy$fQ$hj|7|`BRGQPDr1L_QDnM#TS0{!bO z3}-PO8Tu7lQ08IhfBIe=1%zUnvR!4W#F5Gs`8Q{=K^leWiB}S5wFkN^_=*3By|t{1EiXE>4;lz_ z`wxm+UjTZeypZ)XNN3L*qN^|EU>Z1sbn7gKaZ9<-Qf@^umW~H#n`?+9`uYrF$hjh- z&~^y$3uftR<6y~ur&qB5mk}%NVDTqgt-ih8Lk4pz1}lUBZmAZ;oVH_oi-ZsuTwr-( zuxazXFmd{^pr)^)#oaaSG;)Y5zL$dCkQRSr(*(c53mm%pxFUlYVlR+z7pW$l2m_kM zlH~STDgdj939N6VGM2qPA!s_eGa?54|EwxmPfh92G&?CeY_a&ez4zu~oLNs|PuFq9 zg?xZazzgI9M8Xxr*NA|ZiT9GcxndhacvbNMQYWtXD3ag>-nHD3E6zp;FAG8)xZ+kM z>A+zO-GvTdaUsNWc7u-h5_qn-9HnJ?AxseV;)-wcUb2>pw(YZj@9>Wq+pBc5aQ2Xy z1@HN1A-GjIb12WY&p+S3V*rB1Li3>_#O_$+|E0sa+**<=oIVsa^R{b=d>c==dLHQ8 z!IF8KnoPt$KHxSMw7GBaZ*KMP0xl<{G7P{D7ucqf**7RQ1k{#SUqo==g0eL;-mOIy zHRd+`1y?}2OV5<^jko`>*y7O$ zcj64Phi}Tp)K}ef$GKiE6|po(eT5Q{#$}LUQSv$EJgvU|;RK_uxUgFAi8~QksS*BC zg6p%s^Z}NB;fYeVi_>tmMSh|b?IQg?1A1UWGs~vEi)@YBO08Y+S#n>xrd%I!2b)i$ z#u4sYrV*|yPx?Qut--a$f~^(V(MBD32`7~$m&()_-ezTmt;}5x_}ysK@xEafc~xM) zWqkwFqsp1IEy3_D+oiB`x>~ZEW;`qLg|CjbKpBBy7$UVE|BeW`$bnYsxR<2Kd zl4p-|V2$2`;jbk1)5p;F^tDu1UOhaqj5;3`(|79T689e1;XwQTibsVY*(&tb1Sj|mpNFg7Fw<9cS`$;bHzMc zg@1mvt!>WL77ZHJfGq}4hxG@$t)fxmzt_Lia^;^3U7$0MaSkXxDV|c|3su`gy#4oz zG<7EFHdlQA5F-)1q|M6q|9LZJG_bNOiwk?JEFZJZtFRQ?giDQOY9`RLDWeYmk+)Qb(P>!2R5073c`TiZK~$JE41w41@2PZWL#l9c}L9 z$RyEr#jedDh2{HB7b{&+JXjEs%1^)Xd33N2WmRMpzwXHFBC))B{orRPthd_=CMO;c z@19_CkH7LaO`c08=;W9~d7E>wLT!IqTI|@YkfZ5Ob4g_Hn!hoB6Ab5Fvlw%@_Em*t zA8XX21fyNC(7|b1on`J{MjecoF#S5dNxE=b|E6JYk|4dfw|@PqyGMWf8@k(7OJEwO zYG|2SqNX=V9TCnyPyF(QrF=H>HlwfcpmQI%hvk!ZI6ou*+Zny=8c=o2Yhj0{`aZe=*8rO4Px^gEmVUgI?BKZ zlyp1uKlnsi&fcVx-UiD?%%>l|P0TQpe(r4&iv_*&J0#LCmF4ZNhHoLZJzKazRZ-GS zI{6)vF!J+u97Zx6RAJ@pxV&6pDP$R93nRIK4sJzvMYq)up}fvuSiTo)M#U%jqwfYP zOM)QGYx5VHGimEP1e-)lJ;)31iMgOJN+tO$_01+RD)C4r9i5G%-=v!~E1Lv&5oe-f z?q9TSh~yt-AARqp|KEy+hAoL0clyi!@Awhs22ad7B5zBk##$0!h?a08hf?IqG2G%=CR#)|GoC= z5DUk`cI$SB)r!3~r=EA$%w~uc#8!I9eVqEsw;^d%34NR{Qv;Fe#P8XDMEQlJbGXp+ zIRv9-t1@oZvOI1)jC{FY^(aVT^IC{-=7B;|Il_pvJ%f&2NP<*iX$GCYkVH+Dx;)2X zT&9{Jbgl3U*!#l|3&hUPr@{n;tZ$ES2wf$E)5wi?HwSIkz`ReHO7weP0jCqL)ROP> zsb^4!?{iia95?VDngdL=M6_j4=R(pgQXtPk#}@yEwgr@0e^`K2ot{Tx-w->o2pfw4 z@qh!X(1ng%L`LcagY)E`rz@ac07=#CDAPK4{9Qyk>(~6nhW}wX1Ov z@!|r7T@7U#%reo@V4vxa4|}M;KH}_<5tU4sB;2Hr7K6!n{yH81A&KzabRD(kD^E5b zYxIEZd({@phU@gx4@v5vpIOYd&)>!7z?K5xa7~S)3r-T51p8j@yJx7yy;%XwYaQJ$#mZm z5*Q-94tP^`dknKeB^`Oj>#P&jmASdpC(sGWi?377QX+8kuhZU3Nu;-M{8>urlU_eY z@{BuXxK3v;CBayXK3z%*BKln)WMIDsc2T^dO`S!zOvXBqvTzmzZryd%SynbPc`8P9H<13kR1x zNM7DvP-j;`Opf-7#ln&l+ON@v$dDtwb?{{KLrC9UndCDEc}*?b%CPZbkG8D4W~_d~ zd;YKc5^z@83_N)dk|MS{W7mTZEG(^&tl-|-0)Kg2=8J9H1rK3xCe+#FkCjXmv7xabsY9MvdsyO=SD)L|WcOVA%^#3UwYB%;O4>2qgl1w=? zlO9?|2CBqX9d%nygq)W$G0B3L0gYP7<58CWA`?r?bzXQ{rd(xB2elio=ob5l4wlmq za9Ee16X&w1-dcU>bMaR%en=T79POZQdxl)n6DMvOu{;HLBF7+UdVA6We{rvus}slA zp4! zg7kmo#uc=D9;S)D8S+`_S%$r;i@=`2^3x1-|I-W}Ubchf!|ovbR=JN!fy~0Kx+=I* zh19!r^jj20H=1nmuRB(D{zdHW_UnpVk4l3s>-~C5QG}`G`bJc-j3zOVrPiGn5S4@JMykBb`8ID3;6j8w=%$T#)nwrj>RdZ zO?^{4=2&%=@1Y-8+r;m5(>iPCsn4deE|>ns9l~*L1*=w<%WWBS$tU=SmtUdZd_uY@ z-Ra&>$l#o=-gaZI*v0$SW-_?+LMe&1Jsn)it}~Zzv6L}XTw@L2NX7wBClPZpEN8EH zMT9~M)O5wrbY=#-TZbfjIOc`Hd+z~U=W9qHuaICa5vyUSPl}|Q5UMg|U7=p9h+(+=ddGQC1+B}dsKU?70yjoG zs+N?2NsI5ZtIFKuRD3kF6=zJYsvC%?Qppm?Fmr^09$6yX=|taNMV9px{XFMsQ~duL z=@%6C`hz@fMW!OGiZ8HNKLYyqE>p6aQ0{kl^jwYEDX3`eY7*r8@5?A?^3jx!&v+T* z6841+G+nz)pRFd{#tZ#BvMHx=A;yXQTv#&1ILQ?=8Z23P2t#pCaYlYSX4c|d%NADR zsDWV_qmAJi307srKp-g{>qKY6EJ~m1%ZbCW44bMhZ`;eQh;t?#O?=O#UBVeYy^QXJ zr$~0Me_+ZR3Jbi*9w;C?UlDG5tkG_YFs!~Dy0MF8<>eJ>MGL#di8VSl(`X=}KHQ2r zXVe6iKfy2%&sbG&4@Tx~RajoTO!urIMmjwm#i*!xeAz0mi${XwIl8HmuODV=TDq zf6`aiksuG@XEWmWnCS=W;LpA7Pr73riST;zCl;%1KXUQ6|D=DeBk=|)4!RX<**cAn z>VES39qiR{()%5t5XY9uH#*V8&&g{l!D^-(J||(lSO0m;$jnQOa;untS5o#Ut~jAu z?H15tHujf_%?|5XyYVGp?yxNVlioy@@!$T*7vzrEmlU61>|dr#G9?&eW=Ew1kZgIA zwPX}mF##nMCmgHt6z%2&V?VG-65>5ZagEB0!M?|WeSnFO;7sxN8kKA-_>+oXkYtry zXr{ZrAW6ZQf3AQIqC(-7m7;%Yd+SezTs9t{yg;oC^!2v%`;&&OCym^bOZ5JF@(FkP z68(rm4qJDLR#75^2y@Mv@0nKQI4;cIU=G`9`|Fb4?3EYX)fgOLyLu_NXrHC^66H5Q zG|+qr3zb6gL&Lu6Ok)9>iOu5jCA7k5RTwjajlo8{RWZ;peOu9S44o*Nq1TcMRtEyI z*&H3L3{z+Q$gK!c{1Pqrk`xPbFRg%bx7QAE9p@5op# zPvyp|vbq>!bxWF}YaV=}S`3A=s4yZ~kY|k$0!w8I= zd$?tF@dluvIM2h~_V8j>7cLQ8h_;Kidl%{cuSkEtzb@iBF+7;pMuMRjGiJ}BQp??o zwBsi7GWX3z`syY!c3>k`a@(nkoBBC|`hy%58akG!&&~l0y`iJ+=tb7e#w2xKP>gYu zTjDuqbx?mtP>f~yMS64-$>ug(q$9p2A9PQ;h#3IZ9Vfoc2sYdM7gw+oFs794-HWvO zYqEh$y+{{)L&8-;Co{EvgVn&}BCYub>RJOXVl{@V55vHV)aP4>w{N!6*l)4_cDzVu zd`r4@>Fg?;GiF8@gAIC|E!DyfXR_}_y6#)@Y2S;j)d~E<-CW`cg(GNb;e*y)ySdsr zXK(i`fA91o!Mx{@jq6%G)7Ql>{&HjQ!oOQ-vXvxpRjqWB6#@)c|aP0wkigKQ++ zdv$C2#C@SZaVtJ_HgcA!t#rN(Y@d~_^cNfHF=TbC!{ChsyZT2=@J)1>3nu)goM2uf zE$nDFuilheZSZy&I$2^{(HRqrOU(xFITI(Cm!dC^n5dtf{KY-GK)KCisax09WMeB` zz8O>p-%5Yo43kqHt+2LkaBq#Ox`3ZI!QeUvF?$%bvcmH33)Hz8Y?{^!MuQIM)fyD6 z7fdvI3t8@d@B%!z{c?d;ZXv;bKVC@OhpsmU_X;o?Gka}K@GyLTfj-zmUgK;R=tv0% zsc+ysPJ*SWmpjtc67lzW?E(v73FMcICleyxw7))-d+GzD9AC5 zx_nOG)(P=nuz2$Uh#ID8!5Y%cCYB8hRAI3H=G(}XZnJ#Og8X3lFE7)t=k%pK`WGIl zgy&w2Z1c)DRU`+Dii?kD7pjsBLU$b0Qc|_4#+(Z5jYt>a0(g#@!x8}KVxjcsj?s#w(5jRhjw&@@(a%Bsgu zRb*-$U0JB~5&M?>+4uE_X8Knd=^ra~=TkOnstrnpr0m0|)MG?Zl;DT4X2}B(ukJRs z(w%Xm2>-O+)fyi<`Fk>M*7qIk#u%}z1NgG$m^^boyRm=4Msd3<+&|AefE}Q0N|Og` z&^(FiohRo8@K;x`Z9)n5Od8men@I!`&YA$W1+^Z(o$TYA-k#^0(elw6zIa zydynUs#n|OX7>N)8G7P5*=-VZ&71#Q7NiP)v@m!(ziP~X5RMFRVeAi#M@f6yOSif( z9wqE;$9R-b35-X{Cr$J;!}!Z~jK`p~c8vG@w-y7J{L}xzc!>Pti!xmp3p-sHi$8l0 zZO8anhy-CM$fb zG@P&wx9>;XDo8=4Io?$*Ed{<+XImUqVMtJIa+imY1bkb!IQDycm*xuZdeZ|xK&wI= z#!3W4t};bp-iAplSu3Lr!|@Dr5A|`geE46?T9wJ~w;cMPafy*)iM=XQPJe-ptN(am z5W~l4-yg^(K&F_EwjZ*I(Zo@M{>&8Sct<9LtHHhKPjXoN9@ZDph8R|(8>?}~iyE=e z+g&pW*Z&|5%`MH9a=qJ+@h-Uazi{E3|AE`zY=^HZ6(b1}0uy%34@CAEEE(HCSbqDP zjX8j?DitDFGIU_08r2}%H1IRn40eT4t?&T@7&lv4IT58IMKP{I6xhJTe|(BL@jd(| z?Y9P7xpAB!vL*Hn)}Hnw@9V~3vNeWF9HNMNuVqjXd(3B#JZf^_z&@viE_Dzg{;dv3 z7riBSu(6UG3r6l(ix=yONZwpEw*F^O>h3IP4<^Pf)=1nv7#mS);TUKvxTj;~IUVRF z2YF>oU`y1Uv#315@H(D2FLz)o{}F}d@3TlddBWuWS?}qxVmd_)X1L%n9}hU)ORJuI2kJ1{m#CCsY*j-ODsme^*$Gum#IlKNgzf8Ri#aWM>h6 zOqoW=WUvSie5=F^d_#JcckprV4!IG_0&^EMG!-3uzP5SUk+lnsesNZRt)<$kgoLK1 zpY*O*OJ^*nYHY~}$4T>H{q^adGL1OVL}&d(281m=YqX8GfBzILL5EF&qvq*sd02<0 z?3A*TuA#^s>lINd5A8r}euU~`TQ}#5R{HKPsKBbu(yw-rkF=f6 z>SHu;FVo>H4XVI~fBOvGSV5w5K0bp6r7lYdo|t&b$uDvllC_;XQ+xRZab_f86D~(< z3}?=S&+2|FEGBEdo8j~s%~PkL>5NN?^Pm3@zgmUsSF`WOUnXDb)c)J?UaLwa^^0GQ z55NzXV0!W2I*fj0YEGP-PG8#%Jta7(%iB$oLjT1uvRlvbZ-VD&w+v>%Xs#t729A}Y z6IvQBMRR9u@1LP}c9U_P3@jFQz}Q{b_%L{S-9zGfrk~*tl_{lv_}+{RoXl7f(B~NV z1(z7Au;|XvvOT0`Y_~IYhF|7XoBM(7x0j{f{zq(7`aAdE>9=mF>V{9$)#jNon8%P2|AF-V zH#M8h10X?iv;4pk_lC{=>~pvVBZW9I8aORy-)?qU$<03945z&$xx;FfZh{pi*(_Df z)bV{YjH0zt6xLB%7o9WG8 zNVxwTmbrAISLwC^TFac~NwMlNBXEQ_eBDg@R+2%4HbbtuZ6_DCrkQa`BGT#NO4762 z=gqYYKdiB~+-Ch9CD>W|4az(ZwQWr^{Rt_!1PqCQR(;jyaA{fV(~Ded$Nu9<&gPwj*ef?E01*fGpP6D-t3&xts@+f%S|% zXsu9=h;?#zSX_{&J}Y0+42tRp*vw)`0afXt6O&caf6wD~kI^^JOg{1VkS0CDw^+v0 z@BU4?YrlhKt6ZESw)6DZzj4#6n5W8LNk5hFUa2NPQ zn~km=-_pZXhS68wtPs1gA?4M=d_KYKTYLv|N8ax&zQe2Kclac{63jzKu0x?8$#3(~ z=8vMyIq0WD%uwK3{9vv*tiR()zo{nfu|rNrTNUD4u2#Q^)O}DXj3AWvXK?vVz`Kfb z0q=?`^{W)3uWLHZ;b}`X@z0orct3$Xz2%vF@tuM>@*ZF!%;ckuL-emRm(rGNO=wJ| z7JFnC(hU(sJU@~%d50b1Kqh+;+s(dJTd%s7mvbz=YsoQjCb@~G*1-H=-032lGSA!t zeOWZYEzjJOIeYWWOW^YoKownGX|@bHO~0-ooqhJR>{&jM<tw7FMQ@adHoS00NtNAk?iL4u3Uj1GbLaG>uX%T88Y zRCi>|@>TOe(FrPHh9b)Uw7tEIE~iUa86_7>j!C=S>G=K7PD@4uW8~NH7ykFqqTi@= zvnzu`M%VkY|R zzh#R1p2O-OSb9=FzQokfJe6mv*wQ=C4DU9rc;GBHbra?7I&)CqBz<>&JKu|)=-zr3 z|4x(Lpot3(6u0Y&O=2`pr`O`bXFmM*){=K#+QX{5np`k=Xt%@`r~UU#@rUP*pdQFF zdT*mfj`aaEF{^2tZ_LPuuqv^MMjwD!Y$|-}9v~yei=XTAP1V+h`nqvi;KCnFmZQ__ zl4tt&FYZ>smz3l5u-hj0OSjiQ|9LQ18>N_4UZ$$h2w%+D6oHkhd`Ocy!vBY?K=T~` z2H*IoCi>3-aAU)oC=|isxWFd*dL69&dp0pUd{d0@ODA^R_!Gil zaZe|lo9Ae7PMN*UBq5X7SYa-JN@05O{@SIOeX@6YiF%Ap>JAebJdck^XzoAN;$r|l zZY*|$;&6}~v3D%u#32Bk9nJQC#1BTGVKHvS+T@qd39mT#=7g@Fnxc@@ZBjIRZl_&Z8VYk<$-x-suO-dE{% zQ@ywaSCdX?>7Ya8b(NGkgMN01yre&Ll1-lWlUGlppv-c(8}6N?Ck~MhxIU-oYYk+0 z&;2I{6-Ir*5+=CV24IgF4W8_rR0H$zCuw;Dnan9pQLjeapxSVfj%dVGU3-#dHIhLp zsoM-{Zv>&7c#_sPl38A9Cp9yj3SKMEeRbEc-`Qox^MBC9!(=4)#~<{w!(dof|3RA% zlK`&)CuujXHe6BouaoPKkVvlV58CGlRP`jk8M`u%kTo3l^aQ-143&ldmZ@%{5yoI9a^zD-*!k?ZQcT zYo~=jL4Q0+R&x<2Xxu3h7x>k2w7JQoU#y-lC?U?8e?a+xAMZYY95-KpiK%hadI}C> z>W}Z*eTt064bbD%?KBzebK`jJ@uv!?~{PymOpRI87q_#0S$;7I&x?EDpPG z+V(v^m2MI5Pv2E|n#3smoX6OLn%!jD_D$#F^2UzP{QB(}J>5*IeZ_mzVQ(cC{$cD@ z{RSNkZ$&wD#~D!6@@sA-g|NfnCSHGDQg|aG%rC&0c*SY>`S#1r2W(J6D-={0W zpDLnWIXrt122VVa817L7!5m1mU4c_>9(`Ps1p8G(}uGoagZ=%`Z!!dUsPpx z$DT2LDeSU?&*~;7OmDcpp{m$cbdW1D@$&HL3;icWKIMCX11~tA7;YS+V_G23k)!Ba zElfk{mFaX<3(4T-9HalVke~#)VR}PzWC2zQH|h2h!;i-j=RV<8k8D?~nvRxngOt@( zLvdH^3s0A&lf+CXj1eNK{P&YY(-W*3h2xLWH_id!wa4i3bL2af(4?l8^TePMo7Gf0 zPhKWs&*}Qbexux?gZrlhxkX)tgS_+j-9&Gyzks*kOJgsPp8ScUgO1J}KJsUG3!Kko zT!2^|UiUt^fWPZ!xWcy|qqz86D$;#&5N zZop(7Tq-?l9NSbZz}D30wsuH6WV z>GUSjsN`v$)cYbCr4k-bqiGjOZt7g^hWqyL0C_gv#@PYJ+1-i+Z%24Hz@*t)eB(oy zg?lUByl2szfTB6w7$sa}auY@EhU6Ffx|?WwQaIpfVt<^T95oumTK+mh`(J|aD)T7K zxkU8cdLB*eivFCh_Bha)tMvqd{K&E2(<;J^P`{zfBg2VK?-HXB%*-wt>!b;d#%g%gj>Q<$5aaIcMGNcjdDgGX z=8n>@BC*D+4`vHfr`Kg?KRB{!Pd+!aQxTXGRbgL}yfB|*RZ~|g*=?t;VwC4nEq0Yr zoI|CA#NDn^9IFZuY}4oznFuO*@N{aC$s56mM_kK#5T34!$k06#!e#tZqmR&>%VY%q^^tDIBwMJ@tH}e7(8HI>$N@u+6q&S9_YS*CWZYV8 z6k#^DPlReLw+^G!Fik*9HRoou-tsq&wmYh(ip!_bu~$%P^I`hI6|!C>ESg4jR{`jA zguZeWi}SI=H2o@B*WqQBKi{NZ^^axG;q})@%;>ocvY{&4(>Sodo3SQ1bSD`a$@gLe z)4`63YZ2RES19ehXrtDTnFOYeeRLK1?&OL#8(Q z@UAV_$u%W+?sxjx4bn>`RZpXpH=r$b=y%$5gQSPa(bI4fVbgWHS|P+v!{RX-rwEM@ zH?3ihJ%n9wceB@fNHNoB`b{!Ux7Tx;_N>-LI%wpFZG~%pr@!7LVai~7^(NVC?DRV@ z!Wy7>2DHH4a8$i%(J~mQW++0-+db)Tf8%oc{YLr^d;io(yZ%Fd=lCsS?&tqn6v`WtI5FG+KR|BopEBRPZzOZFkVJ)upmLl?LA-;XQDP zXdm_$MO0>E?V@Lj_>9Ix@8`*;#@er*7mjJ9bMKIl4r1d}qoM0$O|R(qmmBFfckp`* zY@|QmAsIcFHX4I`zO*&y5}!RahQw5)6eo^37G5saOoffJZewZeUATuj+d${DcVh$H zewXwo`x?+I5U`<>&@q;u8t9$7B&vtlVQh(SLI^?kC8*u>JHrQ!uC@l^b`QqZ)bB!$gOxuQP7N3m1^|p(y7C=Da{=Wdk(GWp+n8 za{U*t>HbtnWGWq?)Cv5PgBa6s+F~Eeqp+5tM!5x7TB(ZY4985U+?oa*%f9be-Q=;4x0CAN{<-xM_8r4tXsR zth5SUvGKxQA}>H@>0OUOx+Ej-QH#9-SyPTPCYSgK7YK1S$I+lpH*k|L(lUvs)4!LwNn+NY@D!wWUU^1RMfzTL>70%*WM{dr`Y88UGa~hc2N~4t#QRaX7OVkhx&2y0#|Wu z4_Vbf#yX33rx4l9xQ=Oe}VuY=h-j z97x7Oe4k$xe*?wOF;3>ZCQjkJ7Mg46TRyr@oV=Ol_~-%#2zKXs zEgKm&%Wdcb<#-{m`z;6#p?D9NP~+66KAWap@!0uam{>!P_~<$d$^)_L%RcTrPSNbl zjMEM>$X_|P`ge6*g@UE7EoqeZ)dl3#>5D^LGdSEd$Y4pT#T?Ezg!#sH*$~nEs+lsWIYSoR}W>R9)y!2vOY+<92e;k!VIVVx<~z1Vc* z_`ZsW)3}X)6B9%1M5ldD-B=9Uo^qC zX6dA##%eFfAxt$T^^zVob>UH$@A zvNNY4mBHm#To%YcgIeG_d>Xg_yl%BE+z_6;GHPY~N_aVPmq)OLpv{y09KM1p5aGGn zCNEB#hhg^>7pINWHk7h?>MJZvt5j`|faliaa09PG_cN7%Jm=YsaX)7uUY^H_8V$_{ z-#2mmVRhFM1=I!JPpj0fwn^`^=sDo!_zLd;y3q|LY-h9B2RUd#}D7ZzV3QIU6@Xea5n5IScm&OU>uFcj1|~(gzU?%eW66`oU_tSwmrn4z^I55cNQ_07pq3J zXsW9~JRsT+l1_J|1Xo59(;DUkj7W5ufWnH(7&V#B309?k)pJ)_QbyXspN2ME=L48> zk{SA|&sMZBJ`g6ktJ5Q;K<$lsT*0r3L}uX^=h-$^vykpANDY_>Bc87A0boWNt<>uR zeZ*eQrP>cum(;CarbP*5YB`PG((4S}MIKE~*`r|#T(GQRf$K1!!2;c#v`=SUmvrID z^EKM1bD*!n$zzb<#vZS%UshCCb#qh&C|2}hfmP7P8X;@hXEQ|kvjnXZG$%}3 zL(#`xwLtK61tYv-kK#n(eu>lcfC@xT*H{(%9)Z!E%4&?qWYjaIEU#)9XUJrwX>mU- z789yab&K|#20iZ0k4C0xQj7b#uDGgf5J5ppY@z7l(m z7ua*Ed;!l{B6}`i{Py$DE24TsxXETfJF?^DiLMrxLb(a3VxYtnR!QljTG7~CFzpXFU32DuQvt~u^R%Ur!P zUVgQ`LhLyU+ADmGCA$8k_8<~XWuQpmRe(|!-$o`DjupnSaG%Aus;fpIn?`cYVOAh^ z0Za~dY*>7)cK3@~02D?$=|q2B&+b5BiE&d~r3MUEqjS?7zSkI=V00Gj0q=DgE%eug z=5)cWv<=JF1}(akGk zPIRgq~7HxP&d;NAJ|?w<5;J|vto4G zJ9)Wzxahes_v5}f*5Vfk)ZRgh4F~o^*BC7~!E7+^5%}@4+}s5zk2G-~FH6~=S*iAl zS@Lk6+sV6%@=6rWxK+_FT2`HF=M~i^l@yU?J>_lP7+9>Xi|V_o?-97=&F{NXjaVEs zzcieV5__dJMe$zNpO@ikRZa(?Pud2R}$!G@$$xhR^nckVUx`#Z9-#TqB*_O&8sLzl&_Jo>Am3u4apyv9Xe*k&W;z1`|TQC}L`lNop17QJ~~zh;xhV&1=@ zOG9{XPv#Xh)c?Wi{KO}0V=kP!pBlUCdUM-qXmWR5cR$G&(tnmCANy~kI%Sc<7Qde^ z>#iF<=cWDI^SgN(`tBb&$PhN!{h~I1lp$jOC;fbLM+L$XkS~wL@V79_Cp92Ql4SN* zyNdamGZ^+4jKYEAOSYn-nGn;b%u?6__A|_R_YX9SX4$&!*FSu|p-WcRt~USuv~Lgi zW003?>Es@|f!y>OTG&Gu$-Q1ff9;{0z`a~UeR}HFaC>X0y{9gi+fhU7dg`LM;u`v- zr|zSik8516Q2$eVPR*vUyf9@}Scj0HmmkDHcDXKE z_T2yf%d+Kz%`R5AmnHeS2-5#smfT58ql`Mg6tUwAg7rmVLIW#I{`dbB2Aix(>6iAx z?Gp?VKgD;qhu z@*eutP_4K&H7yTIVB}sXCG{N~2&H8&;j`4dYTw8wed87&U95MRS6mFN{iPbK2@+Y2 z-f;Wva@EmZE0$EY4t|kp%}s{`a_f$$BDf?xvVaa3bYnPM63h-Lk*T2Qm1G9`j<>;PSKPHY4O8g~^2b~KP0SZEF? z`A8VYu`H>=oX;}^F04p$RCPo2VHUj@9U|;!U(N1~nmIc$BEmuSnpZ%)X>bI_c8D%AU8n{aJPW{}2X9wLrB&q< z7Z=ubF`Qij1YdVDL+r&gas)xZC}^HzKZJyKV}+^?wzK4=sd3}eOSrnAVxJ0Q+{C~Z z_4pZ4!bhp}eu!>hZ$a_AH||wBEBrtlJD=e@_4y*V3U)kF3ky?A-0DFL<^)Z+W8 zbV{hMkei!I{~uj%9~V`%{g2Nx2;&1s91$>?(IW#&IcSQcC1j|mC8)zgS`K>fp}eVC zmf6Lj(oyl2W*#KXnbD(wj5ugXD9Mb5B+xZ0Gs7}(r(33_rauOEL5 zd+)RM+G{_pz4uycuYD~RV|{ThuQf6+Ma|E(zf`xZK)vN(9{1axWp(osLf&cWgLOJD zm)~h*;s-pNYtzq|SoeBJ`egHmp+);j9i(8kHrDY!7{Tji=kouEW2P%+<6zmwj?iT2>ZBfh8^4g$ z2aSnCmxfb`-~&I(GJ4mI)8f-)H3_;s(FAMhy8?IaeJA)ohcS;r*PvX4L}VXy`#`;4DXNG0{fFS#^8Iade<s z!_cs0r(>!-+RF;r&Jsgqll6>0`+Ul7MD_*Nh7)}EaIpL86MS3(V;V2^(`c^HIgB`l z(;FkogQqoO)Q4-Vcou5Kn)VH;{y97?Z~?iP3ZrCeQXS7HFbV9o6Pr~iU~&+>MGVq6 zkP+gPo7Oi8G8I=4RAPG&|7!v>Ovxe8|3PM8uhsrqz}!J*edz?B`XGdf&z|5{Jjiel zu-$5M8!mLIGp7AreR9t5lr{YXf9FAFxK4N&jLy9AZnPq1$b6TwS<&dWK74{7^AIF; z-=5$XJp{oGx3{Y(-FflfX}5fSt&-*j)AkfL)Z2a z*;F^?P(#kXNQM5B6W9yC7_cyq&5*ptG{e6VPRQcI?xxkSy@kL)xQ+=JXu+v@kiTh0 z6sX0MW4p`?)p(6${k!I0RFEZe?{%&4M$-v<|KT{CYJ=Fx-FSf}(QCZooi^`$Omk3` z7xRyMA()>!f*Ht_oPZF=!JnX&UFw@w>=nT6}&`2dMPI{{b0kHhjW2k6p6ea~!?ws?*aCv>;5-J6sY zf@+Dc@llD)fXPEoRJ>(VWF^t5nQie|2cK9U`9RY~;z_7BD2K6Or8PEQrGMZ)6^`f= ze#8#hSbdTr$FwE<1ivN`qEK#gjxN7H9n_0*GQH8M-en}#WlM5&XP`0y+sx|Pg*!BT zaY{p5KSPlv@Igk+KbImUVO4s$*9)Owgg84G3AvCeMxb>oZ~R+!>GU%1n`Z7f`ISzaonbwV>omQ$hn~wI}mM&ch8Utjhgr_L$ zYLZVO#{DJ{&?D2k0F_s})Z%pdyfIi>yVTsTUHrb*nGjX{R__3pyAq67rnnTLuU7G9a zb6%tLO~HLDmo`!!;+b4;c%OISHJz@Y>zYd{@*fcmzj(CJ;S?P$Y?SNY{={5@V>)g~ zaY-0al-gG=ZNxA;wQ{F-jkqMoX}7`sMF`9(D$1QK{XYv^=7Poea2ZyYVzAulP$9rk zzzEQVIb@MH#?SLGd}+HDslpXIu9O5_JLijlI5q5kZgWOj=P3Wouv-3HWB zsTBwaJ^aP9Q93_Mfq~S2V^$b+mo#~XF^;D{;g>&*p~*VsE#<%H8^5@Gr>%-P;!{R5eHDgJc=Kpx&={e}-<1|DW)<)f zq-ylkRE;&UHhEJC4x6^RNf8Q1AE`aT*_O4%m{-Uw+E4h3(af-sY<$=LhZ_qGI_-e9 zGltAq{O;N}Qa0ubIQT@DZX@!LuR&V>B#(-(y2ozG zvxJD#yUwqcSzBtQy61sIOM6&uTF&{6BspTgmnC|VBw4K3Y563986qYKfy@DN(Mg?*xHdlECKKx`$D z$l&TNIQ^?wc`#zh5Pwd@6~a(<0cA)>-icn%3`lrbUl4s)BSx}Pwwt2qxc^8oaR)&! zQA#ltcMY*?8zCgBRbg%l9RO`9!8e+kJiaxZfeNrdwPCrK+y$>;={HbQM83q7Oya~& zRFtLP8NyGUw&m+8eAe}~>m*@J3TEY;oaMr2fE>=op-GYiBQ*?1zca+xoMMIcJ?pEr zSvwSI<8V#6pYFq6;By*oRM+-1p_%9^wM!$6%sGEIBn;_6Vq(|!T=J$B#3knN4~|9u zaz9XAt_FGWs-I^#;r^YfdXbs}4HYVGkiMfKlF(TwmAfW=S5-<9ofQFX;L z16_iK@b}4iH2Af2R6!UkC*L)5n$>7o@l9%yi@4%~55|I=&2YG6om5M0V&RBQ4QIbZ zYa|KhsAV|%ogseFX|qUU23rl~tCrUl2K~~p);LF^{vZ0n<73^}8yOXevHhL;=cjBz z#9*2K+DL&@ju@Ge5Rx*yR#y&IHcIG=W}6_6R8~2_*UA5=SfIjC#W=WNp@B2X6$EQ- zB*be{9l?P)efX9cRJ8Ly;q~Z_ZH~ z5IeXx(g03zveWeB@dVobrRr&yN&aY;Tc;kUou7SgIyn%JRbE&QT8I)%7j~l3{nznm z*e&A&oOvlb-?R}qzaNi{7z}cDp3~nrKGxK30Wm~MocT&VThH#t2iRxOe4^^B_Wq+r3DvPE!q&JEd~uJU?}{v^TCxxGYF{xJ4| z5{UQ?0VFHNVGmDPxTD$IOH|1ZCnr~LfyM#bA8Yq9;GC-%8VMKw0`@4HUZux=Y9${$9H)>;Zo#3 z!RFk~b9UP;XpVlo_>CkK2x32>rikxIk}vG*(yu*UFFg|m{(NiucxH;+#ix&F@PJl= zwEoaBM>w`rGFD~D=-B|5Y7Z()L%0W((~Pf&=rfN`N*d6tIsj8@;qy*x{%S6%4tTJZ zX}AHvfX#u^6ToxT`Zd69mN{tQoWaah+a?rf5Gu5EGF)?iak%$c6 zv31zg%cKhr?0GzFb(*hsPgb7aMz38c!C1`c-H$)0+uR*mQ~{-FuX^sqwo zEDBgeXh=)7kl#FkiAlYrf=$-)t;gWU^~Qp*^n56bmuxJ{*kE}brwOqv+h%E8wW|0} zVxVQfnTT6MgETo%oFq2d0nqVRcBisIx(-IbIHiOPj8!l0y_uu zPvVw#(vkn1C#kt7sb&=Hm(bGb?n0F{oXY`0Ni6+NB(kzQOEcK)PGd%rrO^U4UwVj6xUgtWkzgz|?*%v*u6Bz!E5 zB@6*P zb9g{^O7N8C$S{X6Cd|Y-jWb9Wx07{M9NDa8$9#k+*7txogURF zXz}Jr_F~Jzl3rD(jV`tDV78Xw=TBi$gP&BvN=iTLW8O7|`D|csY8kOtcIN46#G2UN z*$E-}@NGO!rVsm=e>a^;RR|aj>5M)mSyhw>MtRU@O05P(srnc3i+u@vuWgW7AFJjg zrZO)~@?~j*?S*fwwXdvplv$|p8>CvR8XTkzA16GBuIwynus|}0uiPOlKiA5OQ_#=$ z`l!z$%QNluR!uek`BX;V%iU4vIO{w(FVa?CDjedwrZVyJ)4XvSvqbTG7Qby8^HISc z9ffwe!7jt&wEh7GZVnfPSw*>yIn^|1s!nP#5xDDF@Qv;tXu`ED*lJ1d<`J`ZPBF2c zbddj3PM2+csyaXZfmBX5>1dD@2SBO2b^#egg+^Y9PS`o1jAEG8K?`qs5*gA?e+T!&ChCyb6VdJ0= zk)2rlHQ7A>Boo_aRd;rL5+go@53j9weyMtx-ptgKCZdiA###p)2MQY)QvD zzk5&A3X`*y)i`b(<@-Mc!QoFw`AJVf?RN1fzw{|)_~5fgbyqu+Lg)f#8m*KmvQmr= zpZ>F>J1=UJHYoMq9OaKc#jpkS9dkoqhMV%qQQ9QPWayC_SwrI$nqg2NvwTOYq5o?W zCp@0Af7Ew4i72^~9or+ju+(K5WWtdwP=PSJwgUroszG;APO+sOY1fD;!W0EN2^=DX zpXj?ek`{9UIFWTe61xuqF5o`t*cUl2(cWWBzd^|0wae)|_aAgJ_FUIvH0ylwO-dC%$~s?iV^fHOE6pOBO0)Q1XD|=SzvCk^m@)B{S<^#yUQNk6 z3VuO{pK$JA2kZ|(AswTHv!G8`eiyrlZ2r{@lIDDk4Egb+Y2za9%z~>HoZyrkLU-xR z&93S&82X2n$Clt7mByaN*j8oENq_Hw)sIt>s)*7h@9 z*0D!Px6g-T*lR3G)%HAX;sKk+!5Z^`%!Yk`h;sm5Ye4a=kjt>(2$MN2972RcA@)7tNYHd(#pU z+VhW^nQ`(t{A*?=8mir5Gc!=0!+&JPrX;IF7t(=qL={HpYW_cF#-QN}vaGj120!Phg|sPfeEea)?zY!E&96rQtH!sVJJuLt zOD2BrIP#%1%&qdt3iCvnzVgF?H?oyk+wRb=WPYut+$pAHLEz@JZ!4dPVd@kofH8Ef zu-jKZzS@auyWA_6-}eeq=AITy4Ghx=gkKOFxj+T;QLt$K>wQJuj zT-+x*qMA9Hqzzz6kg!~?4y*aNEHuiNhC7%rtWie44-!&Bxo=(T^n(C9 zcP|0y&wM6=pPS1BnYbB#pkI*p$p9Y8JKdiQ^xVB<&?QXI;;%o8ye{OO#ZC1C zwIlBoe~`+W96&>5O$vmmPHBD+lqB9uCW`NcsnoPAKKN;f3b~2@Ctu3nVfJ3Q4}d55 z@qt9)F@F%Hi;o7Nspam4Q4BZU4+2`bd&wwK@F!Op5f;Y*q}Ws?59Rkg%|uwlj&5p#wOJ#=Uu;)#F5 zaU=c?3l9at3}7CV!qwE^fglRz5&{sQQy3lygEk={i?6dV{U#stoPTbRRERJv@VPHA z#0A3CmPRQ|h=tfdGSNFU5T>$Yv+(>KiE-ILB3hUm90*f!hCrAqrw@ctj!5ZJv+l6j zie<+JZ!kd@krE23UhC(lDkcDp=3*ZRgi$0nFc2o}(SdL_4J-QKM_Ftu{U4Oy_3@*O z3V_oH8xRPC7%n0Z26~}?AWXd!k;VT!ml-sY(*+W#`h5do8cX-WgoHtQqoc~GJLci~ zX7NeSFmVL}la&C&G<@xqweII`?3IAEXIA}Pe^AtBX|%M10sw+T{Xro#OEbj>?D)SB z|Amk&O(DfYveI~p_sFU*qj--j_L84uCGR#E4R&hWq=h;~pLd z`6F5T)%_jjpq8p6mK;1yYiT5eHu-U$f&^Nc!eg1_?e$56wiHT<}c!D zsR7*S`-BSh{veU`sWeyz4G>TI(@=Rf5WIlgUTF|U@bl&~K|{DYKMX1;obU%x99!!T zQenrXAvI_Sd;IUTWB#BGg;o25D3`1DkC0)Hg!<>*(fgm+KoFFONBpUvggqkl`=9~B z;lI-;i1sW!<`E8=`6&ySp~<5AUVFOC^&j}zkyv5Yl>38hg*oj*w4QLltT~1M>;ZHA zIf|E?`LYGfqY)?E*asD}uUIcH2)lebY{|ziC0<$fxOv|KCTgK*Qq$2Gw(!w7nW?#z zcM*+O+xpdpOt95Wu+1Od1dpm#Ybjx|SzloNjT8 zFsQ?!sDKf|aA0k!k&u$*-3z>xV+P01tMb}4bfCCFetslbwtEiJ=tea6$KPq$Rs821 z6FD^e?$VGkxQ!7nOENTi=qQAfTQ-!f`Onf&=CTria)fF8CamLO6vuJGcLGO&bu@7lo{vUsYGFqjIZ6= z1qAt(dx~L7A)GEvshV;n<(zvgGj>H{Uf;3K9Pik3Q*Nbv?oQ0>lbXjQ=7mkgMgP0b zJRO9ULLUVBC+0TJO;zKTnkwdqyZ#$r#)odxVS+m1)}8{w!}p-7{7|t6+?vmP8C7o6A%b$F z5~%$lf&z4<+h6;GZmISU?RRUceX@*Fw`m_i?{{lg0(zexTKiUJUU6A9H7J2dwEPpoEhS_MG+`3=A4Hli zI=!P3?cGAdUx|7B)1JfGN%*KMjb6NhmTbiQ7}GO{psmBP-7r`-O-cVPeX|bt)%L^* zi1hm^{_qlJ@Z`CevMo#ek~CosB54Xpp}1Gg5R|3Eglhuiyxb#-jK>d2a)7@04VVO` z90G43siH-mGVT!nz;n##$cJG>nvviK9Sl&|DZ*9NL~HyZ{vXdV>56`b_?qXK?1I~s z$h+w!vZD#&(g9?y!P~gPd^4g?sBz8<5*L7i&fICxZvsY01I)G6;4GIyriHq+>{V#< zT2`-MlQ+Xb@+x*Rq>uo_0o^JR>S<&VC=6C){8TBC-Cv?*On9>O3Vr6cJkLyx_DV!R z!YzgC!+T;+g2LZLrDW+`KMg5E3S zM$4+~3()N03Tw)t!aSYC*}V1z5J)MkC4}7iNFZGz4C|t7QVHU@t`EZz4w01nS;FJ6=vvD;&<{=C`WCI zs^A_saG9E-!bLe8jbkmq)3Z<`Yd5SP`<2koED3>ST#=fDsWO?^$4rhnSjH^9r2*-x z^@~bg_bM}T!l}x7xlFs!>aFB!hLKDfw#`n1TwJG~@Ma9%R;cb<%CHAj>&P#Y6#lnL z(u7i&`$NTVc$FDmP$ps7WZhrMADcp0=4|55$jcZr>~Z!~*5mq{jC);e{z<6~UWZo| zs_ct|27K0qbc=gclI{so+R$}9WTlMoqT1h_sKahm8r=cHtE3ED zr-FqkVBmj|;zAeQAp{c1mhpv3{)5#_)W}7Z>&O0C%7`s0sRBU9K7SvbAfZFjaaG!% z{;ZCtEBR~4STM_;qNH8)LL-n?tLmj}E?7r3tF4nNcPa`E@}b$IS{G@D zCJh`q*4A@yxO;W?#-Zgk1C1G!~Nx@Cx9 zPk!BNOs}5(4^CJ>9Bi^W<3Wt@*O=L1w_TV6*@`)hUUd)nbG_-}gVr#3kaV9sL7j2K zCCwq?QDn(5%=){Fe|!y-tY|yP7p!6WslRbKFt~TDVdnL$BSg~pc6@yhufs9%1&3Vs zEDNSOfWlzuFQ$<%uqVKK;1~@4n5H_o#}R>JFcs2M5R^UxxKMgm&+ks#?ng};fbk0b zM+Zw4P3e9Govm*Jvwmkt^) z9xN#r76{RZx8SBCTsJKcBGvpC1x()p8P$+b3{>aY>ztLDk@?Y~5Ib{=<=5WJwAV$> zuByyC^x@jGCt<*u%9)kG5sCMFL%LMgRWawFwMgYkkx2h%DkT(ok@>YsNYy#&?B6Ot zZL0nu{Gzj=W*aE8{!)Q5$*i4mrh5$5A1F#B^djuc5S`DGiE@^tk=-0C#@K(jFt4%{9@{Ik9ny`eibAIndFEvGn11x_f^h{xHQW%H4aZIJMP8 zQTH~NIiy{?D)VIj8MEr5+p~;eNJ{(8r_G{is$EzQE{`Uq+Xlm}xs*lAbA`-5l7^}i zE5C9tca14gtozVc?a)RFN%HX_?xil>>TA`G>#9o%oENwuYIxwP!E576F$uOR!WcgE z4d$U?!oy^^GD_}#%2ofqFFz~hmR>#Y=a^L?nhi{R-ZAYRy9_UK=o)I&wkGw| zN4P?5+8*~-LY-@9(j9$27uHAIpd$`o4R`GvJXz87Q|Y^O1CFtVxr*Y)DmJT#F+w_I zgMD~Ywj;zv9HJ3+Mci#4Omb`rN3hE_S@%jee3&p@Fh_1y@%3*qqx#>jka!7gi?ylgUTL%@@j*1O^3+=Xz zhPc5ri6r$dmi!zA7Jjx{hJ{~BgXJ#Wdh4LqoQiU_+FC6;3ym&)^BYHqbLG-0(hrXw zi=2HnKFp8PB3Z%=nC;A$S^rtFe@tJmzGt;3N8Y6zcwMFK3E;~xxuli{LJ3&V&9<(r z;A7Tf?ua3Z|NSWTo$XvGlW;5!n961%X<*{QT zwLR~FHutRU=?dm1f&1gdXGf;L-|p9ZQ73W>*Z;2hEUD_;Z&KAGg=ffyhnmS>ZMLxM z|5V%GOu{dISn+H}0G4)9XFI4#fAJ&c?YEi8DAwaw1_7T(PDSlXy(V;n1K_8 zS^y-1DUWnk&MMy{es&Mx^`J`{>2RQ6>pQI553I*k+kW?J;*euStcT7R|4#EC*cd}U z?o@}rFD){1T7e6@-0fNX7e!3?1o74^@?)fEO_m!?Xg`PSoPC5B?hyR;?(eAR-pr>s z=-L#;?h@PjzKS%1Oq&1*vRdH&#j~3kebjFUr14KM+Jq9@2Cx!*r?%Y4TQ)Nj3%)!6 z?|{^Did2Ive}S>8QkD9J8~}%otmP*8^k)y4lY2~7R)?7v499ev3NyZSF*N*O&&Vdh zUJgD8r^vnbH{&P5dQ=5tBw@1(?hy?aPnx|dNmD62+$kn>P7m2+Y0NOHbg4t7RQ8e1 zYLzqC{w6&T@kBR2{9lZr;J^WAWiZMw-^-2Z)K#?(ydfD=s$6pMRTU=D-7aHTwp_b3 ze)d#4m&t`!D7B=sA#CUxMOu!`D0hEw04qSha`0DkZok(Iaq>nz%<=%c$s)X=GMC@R z9+GP}%AJ;o*nWz%blLq9UQ}6t>|$HC+!&^v9?xDR6`Gt|p)xPI*$`HZp%AetgMGdo z-ea=mHh^rL?FY$`v&&TG$Upo*Lr~D-c6g7GfW~hmQh_JaA`_RY_y^x+VxooTRIuII zWXbf5xDeJL2Xz{*qEoj~t^cZ=U-C8+Id)FFF)V6hY=lBn>8qAQ;Rowt&eCqadexvu z(~qlC$TB^_RgK-;^mcQ}uQ=*@CZpVG?R@RqxSt?`o{K+1|CibBv<%SD0bKw10Z8Hf z|KIZ!>IWF~Nx;8uGv1N6k@2!%onu#4j7{XDL1l z@qZ%zgTY=w@ez5RVBz&y=8fMQ?5E-jkV53FLBb`vZ#GW+$E-YiHEdi$mpIse%-WCF z*Iw{x75?!N-Z@z{1rH{-n7{f?zoEQ-sZT%Pz)>vKQ+;Xwkdy*VST|`U{#vuajon@t?MkVC`H0nrb%k6H;a}at)G7wH^GREo=s8jC_>il-2gqFo;I&+s zYdAlh!wtYk>BY`kIK*nY>r%7dQecTKWlV%ZUs4XjL{+=)+*Q-=@-c;4!?}|#wRl0U z*-!oXZaIHwE7N}}JL*2Ai>$`wUQa|k9!qk1V#G%=g1cX_=r@(;_y18log|J@`UsWz zYG>-FYZ{j0xDXoVa(EqZOK}$nt84-~{=) zNL!RiQN6UHn zHbytjLYA6vXDYnfIo4VcZ`xa?A5{)nXxe_Cwl_xg_1@<`HNtZ0Ly-ABOvTK}*Dy#h zj<~Iz{LF2*>nKFPU+6Xlp56va-5I7ISk61PF#{(H;VL|yl%&`9E7$GmaOzdU7++Jm zzIQp^q=Xp^X5(1u>brj#Q}UVUDpu}fW$f#|27R?j^it#Gwu7)lAFp|jN$zvEOxFrV zgFYciOQ?#U@g5U3ghK~}bW?{!NOnrmLNE&L^m-tj8G>y@(sK4Y{_Xde$Z_m07$vIo zKa|Cm>~?%tmi9B6uECwZb9}W2QR|daOpDqOM^l-(qpjWY%kr^uT8QYb!9+DLzQ+uD z>O|T4XocpSuS&0Vd{$;1O*v2x$H!&nNB;buEaFAAuBJopDXS-sJXm*P@?x;`z%GvZ zNa@nVS-B2==61%IEk=OPe`?O{GA>Wj#E;bPC>!(MXQfsy%BTOJ4Aw|wmBS6Bc7n;e zHNS66b$F?YwfG=gp_?T0edA%;1@W4o^Cc+P(aWqWPIjB#DdWG~&OBI<*f~DLX2S6? z$Q3N4Ba)-h4Ze;0L`j+~h?bjurWeaJKl?yorX?uj#WLL~jOrmPPWjkxyH~$h7$h^> z`fl~a{IcA$rp&#jYzMBgUBV{d9uv? zWZ71W>~eQZfO4Txq8xtG9o1Vv*hwGy6eRUUcE!5$KFa%m(vw=|PNj@py`+3>1OH4h z6A`19pc>#N4u^~faN5cUE7K+4BtunKkoC*`{PtodE?aEv#>z2bmZg8$LcCFO*e88g zupj$$CG=v&ZG2`QnuRA9?sQ8n*WO)`4tC7_N!E;9!YoK^xZBbvp|yMGMJ%{CyEE>V z^8I%(BcHxjs#D>r$B@tk+|lkO^RH-R=0`(Upt9Yi?(Wi8AYV$D9M&z zvK_vR)cweGPXsz9e1&xaK^sjjP0Zl=ae6V4+7EX+LEbzVA&;SGNT+rhU3ArmqbV8* zbHQkrhJB=)AMrkuK3M44Jw9YriCUjqs)@vGkHBZtKwQ~vF7GCDF2yW<*ZWLz|Bihq z%BEjkUYIUxSwUArqspya`}p7AXHpc`_VK2j@Dy-mAD^=m=fKTv``?STFP?~#!iV^9jzVndOt?CP)U#y zrn?&`k@yM~vZ@U(H?e9rc!;QQ_GO}>{)P|ooau^91}!=bzE%6jS;Y6-5|sAXcQa27 zFSEwPz`c}99p}kAmBf{_ZH9+1m|%t(PQ`FL+OCJx2IFY*t4SI$9H3F&TVVg+rrAibxEq~<)xPExFFZ85JUKFyP1a~*k|QC%QaZn zbc5txeGmj^u>MnvL-_A@!^g!R0^h^V#Kb?@R%kESU;RMh$#CgDoVa}EP8bl1)7n0Y zhZjMFUZ1%=UZ$VApPy-G5~p#a|orlg-PG&{peVl?!+5g z;YrY?WbgV~;x`@M*;G<>G8_#ozBIEa(lKm5|AiesUljXsKM>MVZe~M2a)BUB zZNql)%%+Da!mXIO#(Vy*e5(7(r;9Ery`RFH;G%xwAe^(Cq>G{enFV-U&f=olbeS?! z-~A&DYiVRU==!W;@p7)pxBSeu&IM*OV8Ovd_%K?Hq9~ zekXEsXBO>o!n@lX#8wLQJAgw+QyLxijH075k1DVM5#MFf$*t zDNovJvI}RfIeot7flTkjLhpEN<%L$C=F-VN%4LZPonEcZ%Ofj@JqOoAKi$`i$79Ia$hf9 zLq(QF!T`b;5BH*r8cZl)jr2Y2?+o8lLVO=718}Ysbd({oH+;S|q>!=ss{|0)tI)GD z)w5_r$`liL3h1MAFhf-_=N4$e02@qKyeluM@CEJ7DG15MkW6pV75mzTl&e=R;krG( z%n@W#4SRS!b8v?iP0zk05fJS4B7yP>y(9vHB(0wWQBDvc*dYc0v;+{M_IhUES}jl% za4!(VU2Knvu6P$+(s;e$0EN-MD4YwiiX>JxFoN%;lN;T5`>O`)1k?H89o7 zX*kWs%}HT6P#9=i~oB6q9RKcH?RwvxNqn(7~gWORK4NizyK`Zq`X zqm@R5gZrZu!)%@d?{Kvits)N+v5FPn)Dp{-MuoN^#{$3&8M&FZj8NN#4Ban1u#dA) zpM)M`>!~i0-&ZquPRgGI!}C*=c&5c`-&<{oY{Ho9M9s`K-$`SxK+P7@_lp<(Lr}Pi zn0A0RWLe1@`v(MXJ>6^n07ddC~b|y#!aRoyWD6Z8YSV|b;)lnbf3v_^J z@yo492~kPYjHO6ta;m*JJr&4R><@@vOTJ*bg4Z~K@^>;Tr!ld;4Jj8)lt9}R_<3r} zvllOMh~Ksrf_4Y@ZL6;BKbmc1#V^a@ukD4k{v{y+4>}d<)jFdu(I79XcWH#@yL7qT zV%|)r1#dRT3(s|7yy}v>1j|f*lz=NE|J;k6!KSU?+!o=_R(`R-7z=(B%A4xH^KIYO zI_%AI+xo)?Ve){Z$!8{RVHZ>wK?t)icQu1u^q}Bc3f>JaPSF;nzbbvj9d9I^32Jau z>2ZJ>CB7lWHPv{pm!gFfy$ClLlzlx#Le!JpxRJQmZXcrM`|M--F)287Tq}on+mT_P znbJoJKezH@_AzWMHy1RR$6YPn()5|ceH6lOfTr!m;#i$=U42OnzAfzK-`K|tUi6aS zmxdbkI>zUWjTbY!a5-g3x3Rx4d1j$Le0qr8e)~pw*sw)qrtDzG#w_NJsQtt?Z@q4fROhR~1%7T3;+#Eo( z3$8jun8QD{pNUKx?%Rx`$`#L$OA1XtoH;oxhUTn^= zw-<|$BhBM$NU7Fehr3_+6A`!YmB6J)5ctOZOq%Y(9+Y-PuQY$IfrBFWc0|3|H~H97 zX0+l#fq%A?Ns_<87nedC79sG}rObGRa}VEE$_$$D?cM}c>fYzmO{8m4nzrx3fB4lT zHPd{VbsHgG6tQB@4MY8n*fD3F#`q2LkHdsG+}6@Xb_#=L^5!ze5b*-J+=l4~MyD9p zh4z7ZDMoc4y4$7dNZk8C{p4(hi7ycihI=x#tW@%v zX_x^An=|Ikm=!Z4OZCp|5%3I|YfHlgDp|^oy)gK}{}=XZPLmqO65NayhQ_5cn-nqiJ{>c*8lH}uc$HprashX4x$E5-TI#IHWKKa!;6Bz6BJ%1L&dmSw05c@MuVemRI=<`( z+aMQj`O@g+MALWIMqPsAlJ1eU|{6uEd`O566`jBUicz&JUP&yy$43N)$1IEN>npowikiarQt4i z1L3#bpyWcg?(y~pW;oneSlv#5rCsuw^n0P3m+|WlFas6+_wwf}$kn)$SGt&3^~F7= z5-0zVi_tx|o#0<#w(hx6c>2crv0tX{T}Ev^(ahwEZ;@}k4oh5xrxckwUbQf8Sxaql*~*j1`zf9}NPqp~ozB~u$bK4g<~!NWJV}H*~33_5Q-wUy%QxSt3gWDfg_O< zwM8{Y04{b?@);$GqbS;e=(USzeaxu{@h)PdfyQ7T@SegsSkS`N6%}KM!9*bvib{jY!J)f;M{ZlLcJwmqW|AW6h;q1=T~%PeVQ;ywbWavKix2 zC9Xo~BqWq7ZdK;_k`AOPg_n_5i8Lkqa_0HmyH1Z$SeOX`0=qDi4$=q-Be92|`{B{r zXu8hxek&GPSg?7bxkZ`w5x2*hn*LmKnlcW=E-9KD*op04 zP}9*2hxSJ7lEt5-IC;@l3(vO}ox%IH6K;>onsl_G{wEmdc#O~*<2>Z`P?^F2+QwXL z(}t5~!6+eFvB3mWQ*f`Oa!yFG^$(UjbTk|8y-dOgNktxL-psKhhmmtS&T`3Zf!_(#-4NS-H5xIHOJ z0jKa1G2*;dUF7Zhql8S-D>gm6#*4!ZmRU9XZ0l0kUUX{T(zVGUJc%|BXP?Z(Q+Lr$xaN4HH39oJdZ`(FKU^%N=n|zD&NtjZ`vs!d_IiSm zfEMVFqg~6!O`cjB(OQmxn@SLcJe<|w)7A}gnO~oUh_0g5s>Z-L0@`ty{wEt(lOYEu+v+08{6GB zXPW5K{n-w8`KW#byOIEs+iRgXCloJ8@NGcgg6rxCPLSfL(GYe@D?jcq^UxUXAC$KG z7Ri%Bn-zkcq8o1l88@+27k@+3a=+dyEDH8vs<${QlXo75iBV)5|2>d|iI24Y47p{L zOkzyzBbodIM;Lv9nABPvwl8u#H18TV34J$`#uPUOlSlzoEcQFX=*;sM<>pDMbxE>w z`tasnx%qvkDQ(5}>qx-lWT zVChbvU_v>K7%eJMF`|{PI|A;?Wl^P;-1WE85Y8-B`7f!;UTnu~QoJ3d2*X>=HEp%( zW{998gsTw7oA0(taN1~gCV_>tLh6dP9>Qi)H1f_pEZm#uuNZR(rf&pmY{f$suv2TI z(OuxzNr@4eEwjx-Rhxr!-zaclnKpF7SFP}K8YIJ1^6RF>X-H_gi18_n!UDu}C7l?8 z8%)CIcWfsA#uea_rXgIM0swf*@WX4^H3Wa=F9=S-9W$2MCEKn70}KBp;CKd0lrRX| zYf(=FKVaM?#3JH1?t(ptWZbnn6TpQMlk^*R&9j3$lHeglZh6}NI+=7DhC3+kwp6qXJrJIVf&u7+zNjIkD!3Op)xALWbf-Io`g5Z z25}mfdzSy@Bjz9KUUtVT4*uz*%-6aLyOAYTa*vZFJ@ObYvwppsPpgKJD2D;Px|(?w z7kxANmTD#nT*> z_oT&ULzq>hcCv*P>*M2MKT_0x%tzHQ0|tL)-}0G#-lDaIcKO1w@ZyKX&hpFd4W`(S zdg;CPV!g#{=d)@UL++m+Ap6{qYw=FK0%ro@ZkN?ZN$$gT&k_5jkn5p%N_xt-Yi_N> zzIL*{=s(&`I5${Dg2Co|b*DCX>%Ix^ESzslDK>4aD*6>t7&XXB*v)@g!^Ec;s4*^t z&0AHsxu?19Zn3H5RTwJ%o3g`2A!N)KCzCxV@VEQ0J^742=nnrz_i#-`c72hZfAkm= zS@15^aw(h@+>9Umi|LC(dv(fXLs+vaKH0jNJ|XR&cDNsg?9RG@5=bg#go{f5F5i2b z`_30XQulR`<0U&;;aYD{LHY$!1budmqNW$@(OT&+_X|ZGOQk5)wE#_=(yUIe272k+ z7kPHad^^}iuV}4xDHZs|T)W$1r#Q9GB1&>UZ3hwJmp)>C!?`cvX+%s*iS;!J z?RdLqywtI-AlCS;wU83I+0t99Lo#(se7co#(-3>1Ua@@A?&PE~V@M!c5NsVyNZ2WH zx;t&ASd1Xr&83%F11p@q?T3DgvEv1IY%K?2pbfmyGSZqMeN{_zdIs1FXpG=(r`T;jTGORZ zzTGr7J>ho0oE%8GX>m^bAg*5p8QdTqeU}?p!A*^$xkGVN_wK5}GV{}FPcW5uDRkOJ zA?<7exT4(pu!QsKZjS;bb}4Ak3%YNuk5KX#-MgC$aKT*rs5a8tO~biN*%I=_-QAwM zyB!yHSJ^+Z{zj?Nbf?ogPBJ%rOGDPQnad?ZoLdd-^kTM|`h`u(y4Z!hr0uu)4;2^$P56V6UKLuld%rwdA(EXAPE! zuHEgqD76Jh4&`6{1p8$1*No?b;8c;lj?0%Q6U8J_iJT!&VsV(OhcG-2o0$jW8c1HC z!bNxtTlN5oF3J_I`bdX@1^J;kO{Z@~<@e+vgh;`04@?3Ncj_}OO7TbEc-3?bl&ZNc zA6dWOg*I@%yW4ZDP>Ei@H`Ez%}Sesv3#~8+OpA+HQ5G}czmI&vR0m8NMLQiVt z-f_ix8{C58q^oT1Q5($C(?Au;LL=W;$Hb}GUU6ar|5qIo^^8ylk%!ctxl(bxcY7YZ zN6Y04Yi=hf~hEvz+D0toWcGnASW+!W0`O-h&h)AhTd(y{4XitJ$Fcm}`1!?5GT zS|ZqKm;Ft#c+2P~-f35|UB*(A&~0oF1Hn+JH}|d$5?&*M>^ba5!k~;02H%721xg%{FRCoBtyiB6vhY$D{z08aPwk+dy^5#*R zu`~pYQ<_nxpSSjXdQE)-yyq9P(60t9 zx~UC?!jPSIXZsR71c=ku)I0Rhl1m}Ogu$92T7XG>ogS#Z< z(vT4o3#TaPl0?2P5?m7B#J1b~h*QjvaU9qpT@mFxo4ljSlXs+x!!s!t9Rw+&Da$+kRk6%m-_(qNi;=?6yAmzoEyL=ntfLegtVYiBE3n z{{dJr5)0#Gc3X@Dh0O0C5YHIz@zO1Q?&sRl>jQVM4@wOZT(eU6CPUkUoK?U~6<#U! zgq7QN1Q$e&Tn8IzsY&BZ?6uog zMN6^>w^6EESeaq^YnQeM;1?@R?Ype)yAa%=)b=;EQRvm+P$D8uslO^k75ZEL|8;m5 zeTU!36_-kW-bIo}@r4Y>ZwQs|tyNww4-@~9Vf|qj90P_<1d1ua)^B%d!~LQE5RxfU zcByqP?8323z2@$u_a=j*ZTVuCwjTg;f*ogfg}#Z7a+r|N~H za^O_0R+$TZS?Z~}^e3#^o#1LqMotUTs`D!A<}K*6Y+a0QvRbIejgtY_+O-jddHoCX z2HZ0A2V07`vGI-TL0!S;ywS}Xj6dOPD1&xh6i+E=h0zAB`@O)IAMvF&7}uzfZ&MXl zrvTHaf;ziSA$S#}-46c>6wEtSx8(4Q^0n4$?-NrcKkg|wpDe-*R9G)lT3`er4M!M- z^~(RINpR;WjTHIFD;^_y&DGNt|Ci#Ppm_5eAf{H?6@0y?*FHfwqZl8uvt0aGK{Cbs zhzozyDtxFQ8$cMbM{KGR5rLd?cmrOn;eG|jLiIw{N!MvG^iqz$&p*?^N9+>eMfl}At81m7~&5~47HIxL&y-ASr3{nY+MR1Z}D|96#$u6i2R6aQ~l zttV{%(^UoNs|GbEpzhI~NmTR5!o28PhDhk2f^Tei*J+6Icb5^8P$hc=y;Tt+>`t<*%NpMfS&;Ruq9v1ywYEo*->4B!aywjzCx4yrdQv6wJ%Hdk6DTfiV|FD-sP4=f60>$vn@#t)Pc4OJs?8qqKb!^TueE)ZyB`xV5HL=11Ig8Xm?c zceAeK_BfbQ^}84J=kR5O@681eo2Bn2dDHLEr#US(F5=q6S7EjE-UMs1M3 zU_6(v+F*D!QOBtkj(Qxn9hejt*3BBLuLSg_o?4s!#FCNF!qV(oi`jMg`bvZ)D3=_VrLB|x2E zS~4A>sR>$|Y4FTaR8&CifLZUhoFaJxebp@AfQrnpSL|k{X4WcA6E7+E=l?yMz3=F_+jh}`mvWMNIgxPGQ%l>#W#>QSj|j9xqiPJsEh zX{nxZD*DfqcSoYUd{K_1KiiX)H4+}ZXXi9%5~?&q%RY5z`bGACdE1Gz(;@0;8?&46 zOXQh;303h!t?{fQz90E!iF|lu#O@;}l;_KWiZw$wZLQd0s33`}d@g7b%0A8ghNzdy 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℞Lf~~yw(JoR$G2g{q)HiAr&K1BUp9( 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 z SgRJ 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%0DcD(m`o@+ba+& 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 delta 808749 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 $KGm=N{?gKD3V4;C>I%c@4&T(3`9VV>}L6 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%0A~a$9Z=`8c4p`q6T6W%S9b4y-@0?6UAJoUQZJHqU z6-m}7lD^>~tD}r$#sYXar~0UVNF9_&aIjVfW@Kv%GK^ac3b1$98jQSIAz^OCj(N#| zXN`V`_7S)(AOkmg(Gr7L84Y9Y7esLr4C1%cBkApBpZ7mgZDCo4o)e`6Q;8{gmC zdbJl;cx@7S^!s%3L#iM{6I<6j5X!>gr^EMt(E!e&bGxAbP_ez1p_u?TJxfCml<5cQ42vN5c z?$GQ!OBekPmp_e{UugZ~g@P`z0tLSk{pjD~wflR)GdOx|!y3*$LXEH^*J$wUjygTM{t#omomc1NycA>Ji=7h2Gd3 znm~U5C3wGw6tWIL$NYsU@HYnRMT4OC=m??JO4-8PXB^E+%SRGCgu2$XgVoz?vi{}D zPYa8T#ajnr0-P;qV1HYn_l9-0>{w)5cxB)lQbDbiQWu8^nwO){o00;1oi5GNB5A(m zw%U%C1aDXeDx9Jg=6YFQ_uTqYyFYa8B%gXuNj{ce`^H|dX`7(~Z6HIMO-2tZ4a#ae;40%Rwz~;1d*%iZ}T=bn`^29Lq6Ab-@c|Eh{A`RiM5vmqp@> zlp}K6xy6^Eo^OhLcW36$4w)!*-@?UXTIU{hNE8PLm;${oCBATcSZBfudnYvfDZ--d z_D3~6%H7{L9BUAw^8xyy%B)Z*%Xdi>6|pbWj(EYOiA7dojDXC$zfU{XKztS0efshi z%t4%Be3Vg@pRmENYQ5xcOax-kz@45qGM<(wP{F(p!%+_9T`!O}XPtkD6I}v#AU1`_ zcKnyZDQixqsELweLaF@Zf+Gj8Z*wxn0Kk*o{L1ZXRR9?+QUNBE5G<*+qvyH;OB#!L zCQu;fk7Sip96VkgN~`}Q*Fd&3F?(%0a&`0u&U0@q-^1DaoG^oWEo|Cs4d2V0KL~w# z`-a2LgZH%i&=ZU!DI2<%zdw#0Sb$~o!GG1E@!boJDpW|2Iq$uKZzoOxFF)j7{^%at zkK8ZY1Ir0cA*@Am|2*z#PO*}Fgxo*aBe*=|6kDMa1#z$q3C}fm_FSR4pCufEU=Z(b=Q}|1|j7#_VC|4&Z;wh*<<^l{D1nb`Du@i=9)(Q z-M4f9ytgKK+65%b)2>9%r|3R;xixMNKjsN`I6ZU^pYsGexInXq2@njCdTht7@VtJl}o96u~J|eKc%s^eCNG zvB%VuRv2loq@PhR0XqYOOSfr${s_Gw&UyLhB$kD*v~fug1OE;lNwbGxhr{)P8A?JA z1XIJSOS|mnh{A5ob)upKGk`IBvCW1lOBXxNiwu)T6SkkwUl7XH5q<9_;~l3QCA1gq zsS#hGH9vi%Go9qfV1PqMlsBxAB)9rduj70H%_%*L=5x}BZ1SBj@^+l^!YVAXOFszF z)W2NXRUt=XTswruXukZ21TionDjP?4myG0$awZ_WBz*nIDf^h`i5H66=Ltv%3}i~- zY2m8PDAWFS4Mra0BOgtob^k}P4J&K~P?)thICSwGprGIVGSBMO%E2ssG@I2QIdm_K zQ(y$wJ{mzVb-DR3AOo3&9eBS~c)$7|@0WVsyL#N#cR%8Cmy!Xv-trZ(+S5SEIRrYn z-ZuV6BkRqUe^in&Orh3MoG!EPv-&sqZX-K&vUBXCI*^+P^llsYklY;{~L&|1qR{>|}haOgBC%-3YVK0$s zMem@jQfa-t1SKk@hiWBSTnO1jQ;T$=5>O)RU-%aO=e~{HY1-fW#jq z7PCTMS>v!*LiA>;5E&xofV3N@R98uy9qt@XrTN-z{Mwy9;(2bq&NM$NV}3NTK0~+97r(w_AIv)u9Nk z!P`^VAtPMYyPkl$WK+9-g)NZIv#0!P$gvYFfcJTvVEt`nYWVvpINsV|NVo|!Fv?(m z!Udl=ddpOsSOlcMu*AR67G78q;rPg1Sa#bEr-?eF?T3ej#`9d3OXlZ!{Rnb90 zjv%UZ&TN(Dn!Dn<=kbXu>#vK+^y90Zx;2ANpG?*K?uMp6*50R{Z;lBs!$(1$L~r%i z{Opbz?~Tx)hNBP4V!{z;$-ETZ?O~ztM=dnVYO7F z;4^&%CI2iq)l<;Y^{Ajw?trJpm{QjTQn`($Hl1~sRqk~tsp8P!7B5B__ODkqGN&1;ctBwPD!YBf#*;ER6}Gte zkPHVH1%=_VlD#Ft)yDV+*P2Y_Br8d;y9ab+PutCGm?g{5&Vi``pYtT^>;3c(Xv8q(_Bqb) z_<|={w!il5RiRDJGglE*8s%$uqxmApUrz9Qo@9duSRP7UBgdj8)R_n{QTs#cvz@WB zr%{i^hyVRaHkF1;+2K#IoYZf(Ca#*F@e~^oGoqT9H*YQ3nqQtewLEni`38Y z8f$pw{%%5wWC$%rby$_;K25kkhK>6ah7iv$WB`wU=q7XQTGUnXHms|vuMsrf*jS~n z-3`x{P?KTN18Z9q6GCJnsVeJl{H`>1c;va=g(YP=I$USxngncg3F^#3dJk#}MM%ru z3*sLjXM)8c>{QASD#9dNUX(a!Q5Q`a->S+P%-Ozu0Me$;t|)#i!Ep30&L|Sqj#x5> zy58sKr?XswbNe-BNRfSOc9>#lM`vMzg{12PKM-I??7!NT4qC*?esV z8=mMYzE)0Wz}do-jN%X}^p%{K+}kHWj71DDAef))T6c}{2GI>BdMbC&aA8!|5J^}m zT<65)@;=kqV42f)%@|t6519@Xa%aIcqi+@e^mJBB58KV#rnAG9AA3Hi8MK=}G@b2F zJ749`O=mT zo^({wt9D0pntHNm`LrihZ-K z(U16ofO)#u+1YEJI6B#n$|-u>x`m%2WWL$E#cD0P%FNlN*@^-^vcC&huJ`6m9PP@v zufKYR|92J}F51BF$zm%T*rEamXYMRcc>)@}UIne1beEdNFvcNe^i_^yF9 z4@U1I(wCbMR|CIW@cRSC`54kpEaw(%7dw7m!n?DJeNE5c7o)8oxGTMa-#Zg_%!8}= zZ)dUzv}F|UJ&PSa!lJ(hVdiv@<_1${(IiTp5j~|2GRcSHR>U5Cw$J`*#5HD)#nEfD z@wv0uF|>9FZ=b~)Cb*)nnI~M{QUR64@(EW;YO6nC?qp23(xu31qjxiRYHu%W-GK>h z@v4z&wbwG}-7PZo&0&wofFeY0d-{9s?EmoU*%<3w-Z-08(J8z5nX_RovyQ{FXWF zsDiyk!nvXO;dCQ{K7#DAj?W>REUgk@F=G^rZavL}fe2&%g3Y_B-nAasn4wrWMl>mv z%%BnzGZlw*nS5n4}lx9VCN z;nKz1QPIzN9;!*LH{IJ8Ba|v4cnYRh&Rgw-vLMG9iKGe^fdZ$bwyQmaJiPRJP~s7! zcaTPvdD?l8pEj2bEpXjvAJ736p_6}szw~!O%XK^@V)C1KCa&?eTx)mT5;*KsOt&g= zr79rtdn`t3Ek(&a}7H61X3hY*V>@OQaq1F3Pl3g%l>XBj4;)2i!vam zlxF6HMzt1n;sdbuwEWRtal_sG0T^8(bPFdUdZ2Z+ufE^>K01|tq7u5gO54N~ZDV&< zo~(sth6x1pp>F3V-JqKHlaZ>So%_2T6}grJ-CiD|Zf`X}!7nqOUOw)UCQYkz2Oqr+gTMy7*|{JHj7^mZ-4Zx~sc%m91C3TUGH zfDArur@_~hg7~fOo)u7i$0n6_Nkwf^YQ5ejmB2t^y~Z|8DrTmx_s@`GXl6rLDAJy8 zuMBWHx&=X?c1JfN#g*HAY$x0}u`-PMlRlWuI-DH^VPkPUWZ-*&A}^%?MAHP}$!!wa)J|PsUqIL;F2f zl!K$36=cvK$Dk`+<8UeP0w_y7hW$pxzjEqn%eUPZC6ghFgB=Z&QXGA{ci105Uk)>? zv{xQ+5OMz#?k_*OZ=u8BQAqp8qkGMr5A`8C`IhI{A?g5&N5S}LF3v>P`-0PVHwB-Od`PHAW}O*!p%3=>q& zb$8TN58z<645PUoo8=E!>15)t$EUNpgmr%(Y6NgV;M#%B*YrW9$9LI*1^j?)RxjGj zKb6gD<4rqZBW8=BT7PlFS5%u~8{Dt7nUaXQmTNo8p*H>CR;cM1B8I~g0Wo!j?uIqU z!q;ZAfnMHLVJGSb@-5lyP@UzSc1CK77@q7Sgz!K{%7W!u5_wHoI&ru;s2(p)2^z<>>;(8w^S3k^A>gbG;?3~~9V7O)Xv2i(Y2 z7-hGvI5k+Oqf77qo!z{E|Mvm{@9*`Zxe_$@UT>X7bl{L^8f|VC%?n@gs$n8DI*d^04U#m=xd z%kVC{%)NMgs-*NRnNY_uiFF)lZ)xbNDI;fYZX+AVQ**xBt2Z5(h41B+d8!jLr5UKs&5-9_{H>lQ4_->{K>M-t)0xq&_1iu5T`czIBw zKhg)deii9Cq(fxGiA0)!4~_IG9i1!DuXb|TaNrXj6&@p*HQsW{4daku$|F%nl-i9w z@Z4awQwz8F+D^lL%0{@dg2x$HnmE^!SEYa9aXG&+heaItrMx|dO)Ho@bon?QXC<+e9g?pOcf~X&eF*+Mx&L5T*RBSs%{Kajm_o8!yOHGEX+O ze$toKWyB82;R0Igga>3ElG@>;7Jp>8YKUb#|KdVcUhqUau)Z;KxZ@agH3OoMJJGo$4xSYXv+U3gF|hcAca~2KlYwj0n2no|^>Ws@DH90_Z~J zSVok_#Se4LzB&oRz!yR7ua~exp{?qbV#@U@R$T_|1&jGE zTAGn9M!eqEJa8^6TaP;7?^;7@oIBf}R5)d}$Qjd)tW03+=-BjA zJvFppBBj02d$KA{@_ZMZQpQM{8-dQ{6omT1LMJ0~q@f}yc67L5!AP=8_G5VhLRr7w zfoPfPgOv56)1y$L-XgM2{uVL^o8q(5AJE7hipSjjzs_Q4g>6q_?$(o%3nLMedu<`lIB>R1HWKVA!3UzVuvGg zSiAm}2dUzeaxus>v2h@O0*~oJGk<>(n_%I9(q6!p>{#S$I*+doEdZ_!GL&(KFIxfS zKB%S(>vopd)vw+7(vGEKgmO`Ha?Ls?#6u9EWtnA~qz9gBwL_|T!D*wDHGjJ0xpYwu zrDN4*iIabCF&jMjdo#Amg#??p%s}rRyT#ijaXa_-=?M~$-|p7@^o_wz0h2eFW3k-1 zv$XT~|Hsywz(rN{|KoS=%)kI6vfV3!=*+;tsHn_n35q&1AfTuT7A|d|4jOH4^_XdJ z$0blIz~!J(4Wpw-SU_gx@`PljhLxsfhNhs$A;zxSq)x5{^W)Z)ArqD{DFvhT$t=I344(X&$pepXL5Bfo`u;Dzi)iHUHjGd zRY733E3Te9tYgk#4P}4A7o${wbhGMn+t2szUKkA_K<^Uwl6zZ*hDbsE8~6S*%m;WF zWyuP)*WhtS=x(*X#Et19F@@1N0A<`abmH-*f~~=oae@ z^H?ceE?oCXJ)GiGKjT@yg4bZo@e4+0j{=Sc^jyREh90^WX4T1EOc30Y){ z%#W^^WSr0n04j8^8pCT(V%%#UPzodDKO!ooYsF2TrZm-S-`oWLJhnvLvZY>zo5^Vp zpWg zDYhS4jlXwHPokJb?W-H7>t4}0Wc=&0EEr20cXSWN6&IQ#t;XLvbVa&(eRIgkSGl)j_sCOo za3z?+;QKR;-6G6AqQ2#!irO8%wJm~HJ2L`z}$IKn+Eg0!vF=x z%d4y;bRHKs+}0vLdc5m2cD>uW?-*q(#;0l<^1%4&Mw2`xE>2M+M+e5?-Kgl!YchtdNp$uc5 z;ecdb7O%`OILY~WTtpB3Z=Lp&vNubn3)L;g%tqTL>|e3llndp?&eJH2iJ7Z&e& z0cVwMDZF#|RB^Jr%$lJ9bV(ELA&_c~ic|NqRx!!WU>><&<&V@XuFTP7@5<0K9QHkU2Ud?JhG~PxVp#6Dk zW27IxYn=|J1$DXA>TcV-Y|Ve_A_JY^9}i+}XWAUQs1Y9b-9PIi11p|xj0~z!8vwm! z4V_03awEy=*P*b)=8bF>%DML3g+7%Ff9mw_c~AGLhph5&#CucuD`p{D6_nKx~aYdV2X~GHdwQ;J`!_e9sEMz(hRmD~AY&rTZhw#}E(Fqm`x>u|* z@|E~La7BdxYY+5=uJ1b1sfz^s=uui_s~|7@hl}mj?d}p^N>$h<6M8&Pod4m>ezq&J zT+V2@?trY@wf}H~W=7yX5D%bT;kg%BgM<0o4A>ul6@$KKIYz^^7vS)t6UW$UIqt~# z=`J8iWtZ9oDMZClXDc!se^5|UDMe@jnw)Ws6fETC_FKPi*5rWc`d5mxW~UVM$bk5& ztz^3XgW?rPNU5Avi8Oiye?`LI;Ciz#5j*@1tZO4Fc!SdqtLjv%GW8MmRAvvCvAr@= zNtK6QwPnn?>j_qTo-wd;igKRvZ)G`OD;%x@LH#^A`v%7kb@8p4-sa+O{GQ58H9Nmn z=ofba*@G|mUgz|a{^0b@jhj7qv3p`xz|_IUKW$aMbwi+i#XH3GvYsDiI#}tvlW(f z$KQgXn4*(i5QCyMUS4;c^nH_yWaazFgg3e90gd$3^Kx}wNmCxdz9>mAQ}IS1LU1QZ7;K#)GtH2bSe8pgTXLC{JpH zGL6l8l1j+k7tjB32LMu?&+|aH{B;F%ri@F(e=#?Cg8R=aEAUYQy|UGqU|Fv%@(BA; zX}IfGjMqK_GJKBFAD3o8gK_ZpTHGOF-*%RbI!=IUU<|VK|rg_Mo7|WqAIKZoG+ZL}7~F zMK_oRQOv}%;*&$8#JA9`^B}fZEhekQD0Ocp?H(*kth_@lOH@4vGTIs1J&G8C+I`#` zC~LN@`AT|bU6Mon5|9%;pF``K^B3)v_v%H#?({n#dv#q2f4Op?8#6s9IBT6UC)P1{ z{YSIC>U*4=eo}7ty7K|7DdFmuJtz4;Pe)J`LiX)hRhX_oFfQTDO1%TJBh}7_?H8(k zF;NA%8m5PtSyVYaGq`q^2ECs?^`vc$IDKFLytS6J}N(qlP+$FzYjWK7ov{gMN1c`sNF8NbwS z4TPRQ&!zUrmASY-L+2_(wUDMlWcedIEE+9TsP|A24vmmSC&zw_gOJsI^-B^XlcvlP zLzRY3e3tBai_5jRN)JGZiro94^9&jVE))5&9MhtX-Z zFt#r{_y<1P;EycV$)$WQUE`|1V%OES=spE>1x_7xIMnQ&yZqX@%Nm%BPjuIki~=sv z>aMv$;n!s#Gfabvf;)}%V+I}saFGt%W!ybojzW9(LqH0;1pUVyxNg?8!h@1e;I7?O z_@ZkQl`!Zp2fIUaH{QmY`udGGp0?&|X8Owptjp zh0+8lMsw{I5GQoya6~KGKYGYJic;@H%Ydc=A`nY&Q>7LGgyU1I1ZV2mohitcVqx1DeSAcH* zuG1y!6b#3pXAlSWRGeFEv|&chfDg;|E1c0xeZK^%qDOPik3plIq1J&Q4%4dY84`-{OgR5CpAC(}f zuS?$z7$AoBVLDR0K6Y(uLub@sv*VAJiw>AMi_cm8r}`~vgHK`fORhj~Rog?9#Z4|H z%GJmMeN~*5GZE3uIIvtr*<>vwQ5?u71hKxz94)Vix?KA#F>! zo=Mf4rb9!toR$GjD&1u;SshB?a*n=^6IQ}GymlqFi7x!H`W=`5M@kYZ@t&9R=aX^E zxKLk^K`6%%)0RqJS;jpXx(!;;foK2p(5O>z$Kjgbl0PMkk7&33CC2^~`H`rMpl8;w$OGro&*UN9O ze^BD9aGhx7@FMO_wXN3`R4?%de@GgOxT+w1;1!8VR}{H^u!JCENWn^O5Ig)!Qn!*D z8QAh^c|DZ8RE;s4hZHOew5(aTiW?}KNCvIq7Rfe}>Q&rZ-6B7x9}I-fsyLy5JXXw& zfju`;P|O*)r5GdZ9PhBuOEEysC;5~IYfWTtF}G5=V=5+TmCNhM6dDGWU{>yrg*l*tH!C+ z{kO!+)WeVXf{tBF+TP_tEpxEHWYd;`t1wfeEv>e*j8>@D6gqSUCd9(K*_a>noLK*Q;uBIQ%Z>3 zG&&e;Xh5?24HoW-=sL_N-KN;pSTqDc{*KE!YA#3rt|=?BL*m}Tgs3;hMCNNuj*Khf zxxsan-BT36m;`HuI^%2T?O zULdA|y6t%dxvbXdCcV_?oC1R))wX67Y7c`(ef2<3fr)yJd(CC_Q|8ADOw;``tzq=` zxj)L}D6ze0(ly2nT@!FoT02lYEYTglNh9mZxMWs8pEQ?oqmykp5_u3uq+MoKSI|32 zkwr+MgIQ<+!vBoyhziPky=<9Yb{Vz|yA=gx!|RIVb{V@(S)>pWrx4p}PA?lrR;}g| zdv2yb&1!upZG@OI^c-z+{bVHPR%4;NF0fssKncYaSG$1bp8GoyzW_AIE9kD}3IED= zg;5a8I3`T#0*|i)>k#?>q*coPKWX|CwAz1_%U8PpN%YuMbB8IrUI0)xz%v>aNRzv| zOX0P^3onM7z4Oqh8F-F`dkvr2sVM0a0^%2=1UB*9$N=L@B3c-yE6KD%0T6hevsU|L zWy)G4srz%EXmECo{?46uSsj)FNIN$u6u38ZpvB=sPc{7um(?3=%@63R%{5V}b76{z z@2X&M$zBC+IS@b-_D{y(TF#Is)^hs3^Bau!r{JnQMFCtpo(T#tv7h=pN&p-HZ1 z$e(Mu9>br$jJ5YY1f|e0&V2=t4)zw%U9d?}v}B%sD&4&>9q#MW#7R>NCVtm%N@7{Z zg+?EdhEghV1sD*Nl$iYWL;p?(=5H{`U&oDS_otEX*MW*`D^q|4euKB2m1SJ%EGTzO zTwjvu<6ZjNhBAowPAy)TaYMun6OgztZ$lSBp{lcy8gXg{z_VHPy=<$I%sY6>&G@GQw$cBD-MOA{ zI;~7FRjR|$=|Yvp&@k2+GYqPjrtQ{0MfHhxwcOo6`$u1_?^;~r?tee(NjT`}U(kHT%Mv}y>N{DvVlue|D`m(59@k6wRvr(zZBG-;HEcaARUzZEXB!JCmw{YqvkN<%a8$VWlCvLSSLKP) z!9~fQBmEp)zsR*HKRF;MaXefSoMRF;p-Lvsu|Q2(&|a|UH!G4|CBuvS@=qwcA zoe5~)dzG9nXnWVM^bYzf=s#QYxa#Y@qA0?(RE^72yHlaLVB_~oBn zYd(3x#r5i`lLo7` z{bZ>sV?qZ`&Uks8uC|J8-lf}AeB+vUKC=^SzIDmVA9cm{q*U07nFxu{ZF=X%Me+RD zP9SaS7XMF;nY2*+uEvc(z&^{yB?dIj5O$KCo4J0yT#tE;@KuM@T!?dI$5jV79+(}D zY~A5Ln6lxdb2HZ?AK-dQ7r);LOyE9@_7`y5Jflu0G7b|NuG{Q$U-4Ztyd%?2MPke^wRj*feCvvr_uBfC?xr z;m64QDv-Xmw!_*5tbxsrtFE<=4QhwRGMSJ_S4>13l(b2_bY|=$alhL)kG*kPJin&{ zity|HoCH2%EMNCPsj+l5V9&O*5jc77fCGZnF9ZRP^5hGBJ(V#vX!d(uBa0IXwx((q zywlGYEf%sm3sr?X3quQ*4cRdz+_ZW6jlab6&JNs0>P}2bkX~dnkWpK~R6C!{+X`)4 z*KmXQ94FEmR5}F9&>PE7^&O69fl>E!dwXe1*NpHru#(!LidM^QQKw+SsWv`cGP5Jo zUk$t8>M(?bTl9-3ty{Tpm93lCIcs1>I_Xvo4J&%3*A!*HWXxKNBIxKTv4d47j`PDv z^!OdR4;d!N%f~nX2zPN(w6O$sggJKE<%yAOs(}KvoD5iKbI+xFlUE=w~ z4nS*luT1*;({%aM(a(y6aR$aq0#J=1?M?@n!WlQK?B$F8Lh1w^1V?BGWxkau(Zhbr z;tFf+s-WD^uv}{odfMMtXf_pK0q7iFy0Jk9-=_MA$J+4nc16~Mjsr4ApC*0pOus06 zvLFUIt2N2D=c@4 zrhH7!%!egw9t$s;?FDg&hQh#=E2=_^AJ`VKD{z8if2YJ>+tD~Oum()t_tHpi4fmW+ z!x)MAQ8+@5)NnD~9<0%^Ow&#DU6{I-$hJY*PZ5i~m-Yl3vD4w>D*RVm<$C*Hac|d( zf5nxq<^PH+T+99y_i`=$S6mKuk^g-k%en;e{x;6&6FSz@(pBWdHm;A)t~Dl>X})C< zNXIsOuAx}t2cPp?=ie0Ok=p&T#t{^&tvLNxJK88uM%)B)4I!TO3$P!5`akkT3JWxg zc3ozQw4QeiTGY_IlWs|_pGEfr5y%a@iiHrjD_cqRh6VuH z$_DTraeX@D+C_KWm5&!2X{^8eGGGNN=@vrxoT~S=rU&mL99q z6wm`@b;u}5bgb1H4n9F^QmF6)?Tm@#+aqyxxGH+Yp>sp}*jcXPp5U{(P~|jG^-+4~<7elbkIM)W(zA{m3>bEN9cM_cDGR96fVkEv?tBGOp4Ir3p$o-D#Hfzqv-hx!MN2*zN`b=VmEww{&1mPE$*Z}<--)h=1z6b zvNTy~<7(XSYF_X>p=P7`%hKJe%Y7=w2w$v*Fo4~lt81fl75t1&fnCKzCsUZ~AbLz! zX)CR7&jz8atGZ95>Ux%b0$VJM!x6urIj?jJ>MOo4Y+SwX4C;%lYo@=Ux;?n2F#Uc{ zMaCD(405NA_DP%HX)%)3_1xfru3wZ@jcN5`tMxy{VK}V1K&K%SMYewi#^iJx&HPt9J9@1o|IFnhJ<65D*RG>7(f zeUYs6+0}xzv#f9LdX-<*sUwv9?)e}GU@?|^=CvkBNa(b5Kn!hX(7{vjYmPY>VR#1F z`x!?1I7a!hXP?ssmc_Hq$T?^o71Mj5HbLM&(u!yrJHpo)_39EoDf}|Ruc$*1wksJ& zl|8%KK5W>Q!K~H6EJ|L;=KLYfi%H1dtU2e+6tYf(b)KZt+VNQfaED-$^k$|jWj%8B zvte(`nm;c(m%i`o25ASCAvZ_WY4`Hy!CsTw%bFXJsg!x!Mho)J=_>zcReLs<83NSd zC950AVB7<1lN+qF`&f01@dprC6Ut`ymNcaq*i3zIr_Sn8qUQL#0jDC>phlMhrXSD> zlpYAn0b}Gd+T*2m^i%r6Du&Sp&(j&^qD|q|=dj&};WMJgzObkZBJrGCv<~4lnk4Km zbwY8b3dVgAL-{|b*o~j?%A@k4ctgZXb9R+hZWhzLG95Cs6pgX`(2On2CtCNi8PB1nUucq8x;go5f83tCR;H(Rs_?$kJW#x71zYx8^ zZWyc-=F=K6Sp9?^k2;SAmRiKZso{l1Q-wFl^&MdLv*n8(K0_!BZQg2Eg@9E?c+c|- zR7zx74?3}9yFcyvSaUn**%2Z<*;Og(6mmMCDknFTT1;@A1Reru+GjdEn|ZDQj36@o zYFXAwT%=O7bd2pyI$|i}UL!{2ONBE!zzbw&d+soVxF?C5!~E@RHf)*L9gN+Y?Rr-l z;S#$0Kwh)}eDS znOT>wdtDN9uxPiY8F7Zq&rh% zbT5dg%o?IhUB`c0A8eI(FFp>wp{53FR4!ePSU);B*KCEVG5#jwlm}#OVDxz+6-tOyB=qUB{HO>kWUEeStDYdA?*9<|1zjO_2r?&%!0PJCx_q0w=+DI{x}=`^EU96%d{#Tn zou2Ah@O%}c?+*)Ec56>8e7ccrT?1Q#aKIAHO>fr}EYNxTPlbdpwB=>B@GUVu^g=%F z2}>>6nhD053A$O)+OQJh-ouUIKN3x|x=H5??R!QN_0_ero_3U8kekH(3VIO>vMZxu6>?D>7M`HPgTNgfO!meY09+!mspmnJtHYJ)EqW zx)_Y?bY0XuojyCSK^;147>ji z7M2OP){4axXtnwQOto6Uy*bl5dI`vOnGNb8*35lYWl!uJ4%Rxlr#nWpVv~(xY+|Qn zR|!b8{7hd2V9W|kURf?5%V#ApGsK7Z#LLNJUvUHT-Q(Q#x|k)tPF=J)GEn%C?oJbZ zAAna*A-AZ64Kyy7sQ@0C9S?+Z8Wjlj&B>pCnPIkS;)Z;Fv_!0XYrQXNtRlU!_<&BRoK4MeSe z(PdW1vC3!28x33^YxfRth)KymO3CWK<42_UyAL1b zAC}?++aJZhmE!%|$>|18XL5Nf_1|_{trV&$_dsyQ-Vd#ECOU*Y(3{b+?^VW$g-~%X zDYj=T2R$SM_W|N-Y5zOv+&{q?5C2Y8{F5s03L4nT4}h1X0xu9NgW8Htg-+tpW|)Kc zL~%DEC+e7zfp6Kvh+Do%fO=$%Nl zaPqH0Rl#6~ZbqwGH9+OLT^uD#zUJNt8~3hyEPd6i1Aa{N3-*KAWsV<7VT_RSE(zGr z^<>TOlK%U-0oHMpM;QAlwSfbk;(E}$Q$0zrbqy}qMu!&ypfLy*nk+>_w<&~?GzQGH z_dv2?KNOLcj3qnvgM<`KPVeUu*obk2`-bZqZo4-C(0gNu`|f}NzG{_McUaRZ8oF|m z`_2F|^&4)uMgJG%h0|T`+XG;dA(~4xz%kt!MijeC|IJz005j(?+3UiWbcuo-*V9*l)E;DpB@v^7!y&wgEFnXolfR{%cYOeA8tQF z-;{OO$N8gC(0Rw^J$ir(^1Tu#=d0ve&wj%=^xpB-B=IqUare9pY zTrge|2qLRwdUu-zYsbs-f<4{k@hJaO@OY&CZ z0wmlSOFloujgXnhtwY>nvKG?!FboPD?bO5$G1mtg#+K*;YIT~vV+}j2wi~RaGpkAQ zVJ^J;2LsEa_B}|)p<(bjdMBOiILuktOX=kPVJ@2WTT8Uxaiij!(&OT`Yx+@8y{{5p zl~Q{!{onDMYhW4upL}e##=YsJ9KV*mMoxXl#jrER5?K@YbuSJi+9oa`{~h|$DGH5d z`y+a>6gL*8|2tm4<`F$u$~T(=wQr@v#$lXJYEKst?(jN^`ln?(al_&ZWgbLcEbyT& z)?LL4{7noX{Rpvx6?_kj4Ed#r>)UtEt;KQ!J12VxRa&AuSWxIFum73@V9_~aAm4#)O}BlN|GeBhn(*|%`b%G`z{wCi0d=EH%NN$HCh zI<^HgRMV1MeagHz^-EL{eG2FNS|vOjL)!wN=8uiSy)k6l5pIOy@msdyoPI%x-uF;CTsK?7-rn z#ES<4t^Y-MJsn$t(NAKv5Zdvj7x#WR?~QHk&-$jxD`rydCsc6{?y2sx7t`1(a1KY) zTj!N_SbgSa$v_ivI$#@E9qvAJaUn}We&E7iIt|S{&6E{3Pyg#hD8o(jo%@Rjg)U>f z`D8^J@ZV|2rMrjaqzIPft%{n~h3veTD19nh$R6=^8u}fwpb;&HI}cjweh@2v5MQ8% zh`Zrdzr;5>EC?o8>fRnJ5ij*8$VWeL{Y-ibd-I#lqyH7R%3cVBTnQA%B<}SFF!JNY zh&Ico?NyLXn}X~7^I)o0E2kG?4}8bbmis;5K03AndW!G|kUAz0>YRmzuZ~BwM_3n5N(gX zg(y~T`CxOwahM9N|B2I$*8Fg2)Fuy}w2~U~)It&@FAW7Nhj%tQ9EjygG4NY$Y(Q)V zjTviiWNtR6$unnO*9Q;Ke@%KGhml{~c{1@hm&mzxN*4~sj1vXjh_A0oGOi*KCvZxc zoRq0SQ{)2*!qkBS6j>Lkrc63>i%8B1ZlJe5i?(z*S$6_Ddfb@Ew1IX}qJu%RO z&&wJny5|x0B$!x}Z;<$tU}8PL18wpg%Fz!EIG&}$yK>XraS*K#np34*Db1sh&K)(V z#B;!R#r^(Iyie!9@@>8U9oL8dD?Ux;4*gex%xc*khzbbV5|2y9m{O`E?Oe`($ zNGDl8b2sIOqB)X&it8!=uq!|cPH`&lM4aHyAmzPN+z0YkgM!GQU%2VM?hz87R}$jy z|H5VYx`#^f9*95u1)7%hL&%`h+{g^ue`6odz02YJ*EgI0|X)$aA4w+)nb}(-1+uMt(WX4V1g0FMi?sEBC!D z;^iWf7gLc`5!J#fA)L{nq}!Df*C{Wz_eJtoGq=&tD~3xf$9uY=jT_H!i7GA?6!1LP zJ@We*E@2cC6qI-y*>|u>9)kfg5+k^FN8;udKV5 zf+{Ex{RVmU95+y>zmEK)lu*1+giVvWOI`V{s~0G^r@dE5zB4Xju+x%D*tVb{A#a3SKRQI>dizSBhfRIj* z$>+JgBTmw58s!7<$AUgiBO{<4B4Fr~e&9Ihk2KSDq+$PBDlvRA+4sI5RYH#hAQAVF zz2~_;Y)A_E4bPCW6pR@L%=Pnyu4N=_A%QJi58rikC?MN5^KD{k;YNkHf4l(3Oj?L3 zeXsNUJDo?D!j@DEH+*$WKbR4&M>{c8oec7f}aZu{awL>mYlF`Wyi zq)zT%u)?u0G<9-!$<~3hv5z2(#z0l{J9=5HQ*@1le)|RN$CUf5kP=FT+sP;*@SWtz zi<~L$5{+$B=sg0lapNA*tf>Av(0Y(b-xrH?QEU?p}P~n5sbGqF7KI;DGYtD5u|mx&vgOo8#Fpl1Yl2OJy6b zlK0%)o9xRgi24#YoP9l+jJd?cYF?xj8I<*3$6}j4$nN^0p=o<#)A6{b2Iu}*VFs|o zm$*LKr)eo#z`IXU567a^hTYp#C@D-zCMPa&QS8`c@{m5w$wd1*XG$GJt#ags z^%Q!p*rqV3JW4@I`4t8q1c8rdX`e&4N$bme?sjzVKnYF*hTCTtD{Oa?<@Wr}yWt#wN%AG*mI&5M(*G zoLDb&gF>z*p*iZv1U7TJi~`h-ZctUX{4y7vfA5d7v{)T0)1~1eG7~!p-Tf&&k(ex`&`}S41-7<%>!64sax~LslsOjg_ zL|ejjU3G!TUBL>?f0U`>_##lNx;Y&YvZ0r$M7N!lc>U6F{NW|E;5^~jA0+(>*C*RG z-;)XUOVT585}c<K;7pSz$-igP^=?Jlmn;Fdgq&jPFoG}HDh z&C=(xIO_fa&zT-aHwA&2_;KX$6@d6dJWmqZ$_0d0bdK>1Kn|1GPY9<6H-6&oPt2`c zEc>5i@=7Z=A+Wg%)Smx`S}}#4J90TW(#o0gZD|*(bVI|`mO;zY6dsY&1ZfD)W9QtY zVwfT5f)aDj<9Qc#e2(-#|GVusfR-7$;#mv5a2nfZU7r`t9L>Khw!~cb5bv=OkGe41OH**WEc$wp zC4GI#oZE8>woi#vD_)irWq`W~_}=AJs``FeFnjICG(Dh-1OcAXML7IIN+eVyd#nAn z<_N)b1>rl`sjQ6LU6|qcIG~_fb2$eoTj@mz$>Wo+aE^~P4ePFgHz_$eJlRnbQ0syF zyGs0=grEJ-FJ64-QG9Cj%gXPbDzv=4iS_zf1jrdZMf*bVRQb`*JZeI~`0X}c$oQt_ zXsvje;>~D6+=ZC!p@5xh#14gLTwH@L*e;0Ja{Vx~2Kn5-b_u#<;<(CXPt|$&lJ$D} z6qqtua*Hg@!&klDawS99XQf{V@BvtRz%vZ5)LCRE3uCpg!fu+?s0}zHqYT&XUzu{t z<%~O#JvT@5!Vj%v>NQTQejsUzrQgT?R+rUKJG!o(B;kKs}|LZVl@)BUc%Q%8iW2y3iun!7n)~iYz{}6r` z@m$#|T%ylQqTr^_@2`5E_wQpXM0`XINE&!fx+1jD=fFF{dHTF@ML0*FGtLNS>2vu* z;Wzqx{h@G%KHqvMG}GsT{D;D?G_dfYaGE~7ZwSB8XJ(sliat+?!q4;>1dJS>=tK_y z4aw-h`&i2h4hC8qCNt(!cqUI_%oPYTH-PQKGY+ne=E21yPX*VGa24Dp;5%XwZrSNA;!bw;DaJezt{83&(w@O{F`jea4kBFp zO`vrXo{66V{n)*`weT}o=0d$|P;VjJew5R+_**YufnECT5Sg#@w?2dXru^>%t%WY& zD)Hk&6ngSUGysID*@(x(F|_sP{jKMY2U@2fzXq3*ad795cew$IWWVya&fMc~H6Se% zWoM(VG`N{4t46#5b%mg8@tHtt=#PQc+30mS;tSxOL3mKweSd2?0t?{Mb_H6O-2u`R zEiOj99eIka{?>*nj0j$keAl16+QvPWui1~G`6=in}W>u+6r z(BHZr&T$yM`8Cj5fwYUwf!4S~{?>(P(K5Ip_|0wn{vyIv)cp`>twr37;lFp&->Ui^ zQ-GIl`WZv@TcCAjJ$i-4P0VES>Gc9<2fmiQzLj%D+kaTwQBiO%t#@98rrI#Ofr=mq zFNs@K(r%WAJ1_PbTT2VR*oZdatjuV534`cZF~FjFiVD^&eaG)S}DwaShPX-=|NF7xKxUE3D1i~hx4g_ntH9mcMpml2+xZ4yZ|A#)t(n9eEYzj z7bNV5A1v&HA0kXfE+=Hc=Ow>~@D#$KlHXH!65%k(4;NNl1)wFIgdZWa{$bDSEj)qT zKEgnxXoTO9q7{qooA#8;|QeaVLlprGAEX1LtMc9F`RRC2hFG&~xKUwle z3$X~NNPeo&AK^5~A0zZbc&y~73w;qDmoGiW3kF0cNd6PTpnLYbiNe&I_Ph)s3h9}` zW9a21L5J{@lK+&TML0|HCkq;cr%3)(p%22-B>xMcH^NU#{xd=Z!p} zAwL|E9HIYT_Ppsrx6Agt8A2#hW(qyv+ay0%&>?r0z#(O}5CZ=N$uAqll=L@f*j$clD}MF5ndtrZwoSn z3njlun0F=Lp0`pEJMDR^giiRy0@G&Cdq-$T_+6pkPkY{b!UKd$B)?R+k8qjb+G@{R zBRqh=TBwA-R=ADyb&^knTL_m6I@GgXxPkBn$$wvHL%2fnKM?*z_(SUF=Y1qxN5mod zmBKZIosz#%n192bw@LT|DK4QE{$|PFB3wbZO7gb~ml3WOD$&r7g&EuJc{M^QR?jx! z0@6Q`{7;1zgli?g4)UdW^};zMd}enjG=%~AxJ(FV5Z|sY)EEMaTeQF8lJvRc@1(#U zBDy?@-3%L*c3dZD5T}L3c1kXYrKdj-SRR;ALV?VzHY}t7BHh$-sttvY!p~Lf3=lYw z(x0w2ls`(J@=Uei;G@V>)qf*Cgv@F~=%e%}s;Nl?Po?9k4e^h{W2y~lkHRU{hAA}6 zKp_fVUTLk?-gc5Jcep;|5~>ZS9u<4M+Hm<%cyP7h-lK3F+81Cl1U`z#A|8SW?ML5g zor=C^86ZzG+~PmOtQrN_-s9vnaNME);@s>IJGvAB4~0i9}Jni$oRP7*`O&U#2&Jx`g7cJ9|nC zsd&i6<(HWYiZrDcMKqwa*qj388XLBh`vXj($xe6leibg=1qD&(3S~5{r{)B?7BVS)IgE^wv2TqVpSzqfN^^K)p$ z_R%ub4Wqtt;g^w~y5r^93?pa2DwwT;Q^N(o(G~MREWJlj?nOR-KXJ37n0BPx>B{-b z^Q0?IE|XIi&>)UtMnO3Q>L`UY9oU;MiDZ8Vq=C+nwhk^VI@MgTK0x?m6h;?%6j5Ki zs?;r(tfm))^|bzYRv2j}ah+Uf=mAl?U*dNP@)f=owO>oGV@rFG>`sd4tRB}Z23B`z?Fam0GV|J>_?7Ih?~~_cd^BsmNZyw56W9kM$qvRj!eSag;`${9D()x|mMAAw<_w@cT z91)d#N>58g_KaF2r+I0j0w|YpNNCP}QQJ0xJmX$Lb-$ZQ&9pD7kIJHyz``hFRZ{89%W*sI9sUY4CdW*8pP<~3PXVgWi zz4^$XAap}-0OzU9-Iwy8y84r|-uzq2_YzCrO@w_(er3peBk+6Z+5-It0s9O_@7=l1 z2g8{&ZS}K0>yQob~00v$NKcUVi)__KQR^-jCO@jmybg zKi(nBCP8X`9@}j#S)t}fL+?$Kntw+YK&Ex$KLz`duRq_Htz7fPWB&XtnGapeonq#hu6Qzyj{#q2={FA--;~Oj zt#Rf;+J_<^VISEOh$astsvv#{`(PLu8N^SMm6D^|dIpo4AZRXLNj^tb*df@!)l}Z4 zBP*?ha$n&uk$wVAL>|oR)p;GIgXnVUs}g3DA;J9kxYA*WN(g%CRi%?UguQ3~l|(-{ zy5~KlUs*b-3+6eN8%7QWW6%;xh%$sXf%|t_3rXQ67IP5UZe2euSkAO5+|n_w_>Do)bPs3!SF=(NrGPuBCoFBt?gYDusJP z3F*fljek6W{?I3DAt+6la5ro)m=ew<2LiEdPAZ5iY)D-lZW)wda>!6lH%tR`un-7t z1KBaATq&%I$4PdsJa7Xzw3`yb3%wqAngULZs|Fz;0r<4)jcCZ0)wpTyln*OMyPPYC067fk%O#G&la8onf$>sJ)-k2!&xKA$BIvqyLl$av&S08-LAHT@iAv~~ za6fiVx}i5Z5`jDx9zKpD`VTs4rWq6mt3AM%yf~2ekJOvaMYMqf ziR~Lnn;42EiT4=~)fnV8R(E-a_Q!>!Vjw?tye(0JxuZMYqXob zl+enMy))hv(P>@MpU$K<05lo*MN6H?w~*2}{#ONzk2B;IBfp(QnfNHycPJTa;vZ+1 zloPv&U&k&!@kQ8RezJ_+RYB$t;f?IJ3bJ_!Ka%~R;)_c|crQhMHk4yI;L?7Dd>gnH zk9EXC5o%i8kbta>0Xd}|PRGGCFKg6Numsfo1+~_AxAC)r721`{9hQK@Z}SYCIzGWpChoUndU} z`JVa9es35obF2?2SxrxB59p}UzES!JKtf`?O8eQ6f5*=(fqrCUc>t&tXv)O%(8vWh z2d@LL0|{`kF$EhVArk2xE-Sqy%8l87k+Ko|VD%+ha*ATz zXi<2c938>O$pVHH>6r#*olVR*A%*qK#0=ZyAeHHB5xY)Sc_=*0`DSu!1j?Q**o}UiA&$3F|Mkk&fYF49pJ1-73S6mosj%pcdj=eI}JiB?Q zS%G--FGGPZ9cnK8acI7|0D%w`zISG*IpDXU<`VpPKV0ZfL(NS`hMH^P;?uiZ7rG&= zhDu(7TlV`d|KB2(N1 z^(O<741~Z2`T+m(uN0y8D}r+1lPTJW`m2Cbrg#nNJAqfW=WUeyH!xxp1wnn2a1y>C z`31rWgf)_1Ask0|hU7mj{DkmY$$tl$-GJDt%xOm;9}T8!=^$qJ>RxZ_sUM|TgsSMG9FZ)J_%?S*o?AsIEhzGe&MPDB1Wz{r)o!Ka~LA)|R^$iv%zqi?52 zKGnVhCe2R@)VoZX^`^{ry%yD>gUFW}j<4gS=L=C^t!o#dFl(C$d36s(^;M{ds+JI9ot0Ak&qehDnc^_Aw9{4m#EtY)?{PGU^+( z1qU@{4*%DSd|J9O;b&ULG2u;Rjf2jpY7aG#3=1DT>-A!vV?IoH;jy&v@bzk+mP)0% z{Pn_a$NZSqLx&F^!w=Sn?}jSwGB%a&Bt;tgv|>A(W={&Uvt!EGv3TpF^mpxSx;?44 zjvc2<>VtvVxl7v5Elm$I-X%>IepZD0{TQ{^-1!gjon&We(!BFFg7Ydp7aOS6sUZ`s z{D4qRW|G!C@h@}QYne$pYZ5(|@QGKhCu^pGn)MB$zDmq#djKGZ8dVd{L7gR@@8Fpc^KhQh-9)yrSvm#=cx{cM zUFn|ZVE$9y3*5yk!WsALWJxj~I(&xA_PeP6lx8=D+6rWNW=)YrhXes2Iw{)b$DHv! z0yCOem?uT2(tWjBcS5FPd)Me(EwF6L_m@?Y_GEsD>?Sde=6TttByBW5K{1`tzE3uc z=7$B{#vmw89vY>Fi-n6nNiL11*Wi=HKZPH`4lt7ODg4UR@#VUlKH5W~E+z6Mg`V6xhnPY#Qh84KzL)~>@4QrA11{86sr+!i)uM5=SO>Jp;v3{B zO*lX~oiL|D!UGbP#*g5=P1t$yB|2mp13escGZ-P|H}Y~CA3Z4XH_R-}W(x}SxeISg zCACWz19OO=BrFZkDhCF;G*J9|j5Mb4MHs4aWBAxF%E#bd*9~{Cw&ZLko4)Z?vUM!4 z?+$elH^iDAs9>SGwCN5xGnUt~Z=PJ2&Kn@M**Bdx1zW{96K%^*A9IqX65358+sG^F zd|ZIBE2GL!8`4&~M@}t)l4@+TESLal;=SmA*i@7_;M$TIExB zQ3RVOf(ewJGv2TA=^LeMmN*6nlnkb=P4F`|lbG>*wBoo}d7Na7$0|BZmW=0nW$zJ9 zHPS%(RPGYvy6(mJNuh7qCk)VQ2p0KPf~BRLzGXZB?`Wdud)K}|mQ3KEmt~MMcm&VJ^2VU4S)96SX(?d{dEyDIu?8~d z3I2_U|3}xmz(rNO|Kn#5w-pz;9}rOYEG`0~0a}8s2`dq%mY|ZF7NF~`EHz8>V=ZS@ z1SNCT95k!lEfPsm&`**|0U6<~l+3iW09ix?1XL~xod0{yqV@T{et%xP_so5sdFFEF z%slf9rsD5BfOG1=F2x(cj*4M895~JS`XI&0*6)?%jYLk%&bmg561lnhXJ~Zga3vkM zk!0$hor*Uy9j`-G`XYrZlzU1OIvf>oRJ@-Sv$3Dyf#HYm;dGLG^JnOUVn(vTMDzRoUO&Bij+`4dtay zxO`&(mCLv*>Sp)$McUV|@f@hQQQ$bv12=8xuE;F*ce2+N*|*Yjjdi_PpDGkpYK+cy z7@dP1@?ur0IWS2>MtWo*AKR(LnbhI4LC(kx>wiE~j(E3|T$;hDd~-j-p^nU8aMfbp zUcPfhk=AeLpEWpIAS;r#6u zzdX~;Skuq$rs|p1P0C`kd2t7s{~Gt)v-dDJ3bxfM3ZZaNOj_=soUuW1L%Co>#Gr@5 zqS0s=Id+fwnPd?(qoG*skyAum2f6hcH#J;mVRK?L6D=VL_$)9iO)zHm2$o+#&{N+LHpf>XT>s(~? z#0~@WErulQm$UH~#rR5b4xhNX?{NeTIt&|sQ~VPwtOJ^X9^llsBy>5a(lg9-=8IBU ziik_po{F_skir(xVz!=l^2--KryD$4?_9#d|*uty4Z z1Hryi^dQ#t<_8=O*)J3w*qmBamrL47M-`*!f_{o^nRxfmn%+MORTS=J0O9~>GzEE@Rt z6a%vmvg4v-pA-fGSQ-Gg?tLvr1|_I05dT)H7A2(a5D^R&9PAje9Rh_5)8pL3Rc;sq z;TGZuztpYb)E}e(vEgwGBC^ElIGHU(>}ERjhdAOV%AVgOre=!DF>X-A)c=`gA8Qc# zBW;p5_0WrC+MAsE<&zI1f=9tMf$cvr%}SOCe$@Zk&o%w8{gXA1>~wsdw~|R2_`CG! ziOKyy%(eu17&-qY7E0f_Pdry}>t?HadKQ)2E@!1L2)X(7F7Ta^mU?oWch3>Cmq0Y^ z&8w(sn&J&ydsGJ?Y(&C+{`4koU;-A|lT{AZgx|C1vV?eCMxt2xc|qnp4b z)dIQ~H#VI~vCm>sre`uKSj+8m`_4&=RE$uEk-rIr`)37M=n#$dR9ca~9x0C>Z7Fzd zAs1J3BV8_Iq_G6kuMVTzee%KESOz|IkDPg%OBy(c5^9F_qP`w7;vMb@p9NV+pwji2 zq7%!8Zr`(H}aF1BmaNG1D4=_5Q(WmT?VH+%Ej60IIj9|humBzylBAjmH?T+CUUT`-o zW`z6)>uEE|k;lZ~M28z@MzBqmD?$}sSZo&-UIFpe?R_yZ_Sn&~%!1~DCIp!6gzS~d zvFR!qPR8IEj3N}SAx?sPwiMxmKJs8KH+s+x2nI8z6|0%tz+7V=dFoy6KkS*il(Hhp5 zy5w$UVveI?0zr1?Z`V&G~hkvkbwN$~aS`JN%W(nWz%gOoor?MoxR!MI+>xK{?|qm}Me1ck}JE zwi2jnB0Oyq?&19(cByw0Z-=UeCrnqlB_}yWDDMWGTVhwjrUj*0Op7sJ%CuYVY#?*i zV|s&KzhO*EV3-SL4OWu9o(p$x#XHTBrj*JgYVJn(j3npRbAv-JcQmuT_Eo0z0(al$}vh*#1*|*Gpi|3&mJJ66S%bnjto`0Vk z>A9=@@~d4H5VOZt^DknFWA2QO|=OAD85qmwC#Oe-`*?KO}v$+@1_}4=pb!%q#?_`^vGw@^j z%$hF#GHukw&dQOL6(P=fsk$M3qwuie%zs2W7h`7~-$PcXbD!zQQF`FDl6$@*;}`7B zKUK!OXQvEb%{z6Zv5dx$qAFFzx+UKos4}I8m=#?Crxk{Psd82708EsOui$*| zUPBcovQV~A5LhI?Ta~KNZR)#HcJ7AxQd@~jo^yF>8@= zmk2L?IWn^_T~&%MI6e~lRFO`Ma!hIDb1=vxgDldCRR)%-o|9JU5dzz%g>B{q_i(WN zHI*tR%|vCp!}J68m;)liG8Lyo3bTYg#*DKf!=XhE20U$ToUdt%NHs`nN^Z%X4!OsB zu}+J#2!84{eZnVg<`*!QEBp_T zrDzQhGFaM7mx{C8BJQ`5@f*2la$+MlitPy|jT^ZTeOvI^G3gtM!Y4+gZ{WkDO7{kW z$#k?u(z-y=`j%+@Llo||T1?o4!2dq_zFH*e?$Ga?%V^mTfT34TPt*d7fP3zcwFI7$ zu`1Ki!cH-i51Wd^2a+1K!h4v!Z4aB8Z^la#DHTqp_xcXEl)WyrOZGcr*i=hd0{Sm} z!>}%fwKYk}R+!w7=uy}p8qAC#(KBqS0po?tkmv=;T7(qjZRAcSC$RagWK|a4l-Dnj zz%ATlx8q>2Xy5cAU7Erhgdr=oa9$x}10kTQg2*P65?{g-BT~fPR{n+HB=pW%ZppuS zTI}wseg)f$w{T(la??bu7gJ@L7^AJyp6b#jI>h3X`{)>LQIUCZ%yWDSH1AMn$5`mP zPC(E{;heU{zLPm@$1a8xIF!$1;$=*I2wOXoIsTEwi`k2>F2;Y>$T%>kiWZ{mtO#Y; z)12oIv}xlg`$>di0^z)qRKoKjd37rn{8FhDv{nXiuN*8%QuaY?c@nc%XYgQ_EilB>>{WDV=^H`*LgK7YLgd-l zLV3G{Je|#j4^p>6?Xt03+@9}d%z2Bvo6YfxT*v-%g!~_O$d}oWtEj$nEd2wVX=UHP zL!3Y4-gnNYUoMd48g_?l`;eP4^SL{Q;55smi+JBF4q8m~ren*bs))NSMRv?J|0q`R zeq`XH-hue|o=1J{7$A)z19WrA(XXX-8 znUtBpbYLp55IB2nW?6f)%doN z>!NyV7PpW;XK~B)x(K?h0qxNAyD^;Jz^0-j3TA$1l^esy;qj3G-c|@mp z9WHbj-Xm|lql7-m^do_I>06(qDPs14+b|r@%lr#m!QlMQxdGV7Jk+2|ATfU^N$ylSlZeAEWEeCR?%)`X(o-c zxnZsW4=WRkW1*ud*Z*Pc?q=dUha1CYHIr#`xV7wS&E%&!++H@WnJk#gy*@~MpyEBa zB*r{WRErPD^|_pnXD_s0gID;JN-`~sG%$?(B|JnCd@-i8+MVb zn1{qYE|T1NSd|-akyOrucnxVHKJ&R*tk6W>n2&I)n}~Tnm(0G>M7rm5iR|PiGW8X1 zE*sfI@?JrQcWgQ~=T&aFj4ioM^eJ5QjG^FDATSRtAq8OEAdzE3;SvlSNJU5S;AaU^B|=f~RLCi8I2 z&2M&FMEr8(`F}t5riz3t;PTkBjU;v}RmB0zn4w8lSa=56PbkIi5e#4VFgi zX;kmP>pWb7RRp3=>ouF($?r zYYjIg8ac1$?~8)Z6_h2%nF{^1Q#nJ}urk^v3T^aT*ya%@2_Uvmhb+o- zNR{0dA1NNkAs^%J<>Y-MgrLIvh{ebyCyNtt`(rwm_DV%@iJL41w`wsW7NQw9XZmWT z-;9!&9=;imyP4l!_pepfVmUUq=-MlO|51+wyGlYvi3B=q@+= z$d5a?EOxa>rtjp|yQE_o+*Bq@K~~0T zK;gDKhg;kVuhfvkySO0lpR22{(>Pb@8fMPG($j86ZaulZi(4vdB(px^qCJ}0@m|69 zHT(|@#Ju|ARbu*xd)NQ!9c7CfFaKLPntFw};-_I?TbanOewU2h%~i2eYKWY0;fg2T zeOz5{kT}B4oZ>b@nzU_K-o57S6{oMDun zlD~1z4f_85N__OLp|7H0)uO0RNA;Rt7mbtZ5Kt1|WmN81+gBnJ^28p_A$l?0$(B;V zYe^ZRH0IIIBuQK`a{%8WLO%O&Al-%$K9W47x{~7>Ub1`-1h8D8`$Ue`i@cDZsHe>d z3m~{&m6ji$l2}rNQIa_oBq6%I0ozshP;yJRX}=ht+ay|din(S{_pJ!!mbur(qC-0@ zhxXxCKHb}*u&bKKg{pL(stl37UgZ2ceZsvZ)QL@>Bkk;G(E&Aw6<%9r+v%r*N4~U6 z1xr$Pi~?p51}&+^&Kd-zGITR3$GXH;mFyAIBoE^~X)05_o=o4%4b}f33Wc=T(n{zf zigA34&)*5x%mLsIMrv>ewh$^e#6&_$=V{pbU8rEFIOZjd%36G*7RZ_EQ4j>2gQSHdP(%hT&(lZ zwQx;-iHR6QHh#=S3_0)+_IMc+arrK!R}eN@UTnrAM{a&;C#m|Fi_{-}tg{g6+ES!# zun3n1VJdxPVOhbszsK0&TN~fSzlrK8qPas9R#MK{#=7|>k9w69MR>EWpYL|r9=UaN z-X9$5tvQ$Hsyzh`#JwIBa{PKeo24wWPV|BI5xK(5J&@rdoVF4kDs1c3Z%fk z5m1hV)@dLv-&K1F_SUz@#mt6T0XN@wApC&%V}apFJp6={_8^cq%3HJRTUYHqWX6mf zIcd_Y7oICV=&DUXoYg=kuy3Ru2k~K0&`j~X1Pl!G*64r)xV?zy`@l|Wf7L^C@{p^x z80JfOUcs{g&n`Ueky#9o{*9|P49_?a0}=L#Q(>MC^Flo5;W-oVg$zRsaH`l%rq{gD1|C57!aGjdB^#ZznZ1tMoVP&)BV)dRxwXSlTimO6)HcAf0<8H0*a)ok z1e*s(#pH2OF>BqUVurtPX5v9)68wjqb{FHMb;Qij0k{M%m@r)_y(DACf`eg5hq)k% zaR@&h$h+yPP2VhvP6&GrRS>gWq1}$~aZf0;2|cdb9DvaiQM3>D)~q+lwJUC*VSueu zeVnvwN1=OQLNFVpK>c@PFztK&A?n-9NqYf_4PWV`bz9-2t@cETT1D)RXc!S=M;yYN z{BSlBNJrY9NLvf&01NON;1Gev46Fw9AL8dYPzMZ(#0UkX0!H8na2e#cbkC;~cw=t<4;)C!X`xyagNvZUI9Qa9s)TE#NTOTN4I64{QXAf%`zj^GE|Y35Y=K6mSYS4crD^ zd}1nofZaeP&<+fn2Ce{a0(*c8;2|*b1#iu}KqYV&kiQ5wU@Gty@Y9RlWaKbz8d*P# zTT8lzap4Z>ucH-{QA*A~4Y#5(>8~&hlZq!Mxast{7jN zo=fornAh;6Zg?{904rgB16U688{``$w@7aVC4GR;bZ^akU;}U*umZt}U^B21Fal?R zCcrHT4GVY=CCLUNm3oRNl@tW^| z+rY47^gm!W@E-6va2jX@)Gxsucn|m-I1N+-ve_UMco8rH$AN0VWsbLI9Iz1B2I$e_ zzsA%3l!s=YH%7o0F;LCdpP6`W`k9HRfKoW*0dkB?nHIU$J`^n!#(?fOA(+UW?l&+E*@ z3+`@O83-vxoNAbRBJi`~ZzruEhB^jQpuamsabJy-Hk}S(z!F4^^JHSSBh&qW*K6dA zihD*sY}4(;lzCufBHmJX^@hW|5Nl%$p2mk>8m|yHt(-+hAfmDw=>cN_FQh$cF2XLr zs0R1~4Qbw*Qp7tAWW!#C=ba!=%{4s7o}f#6trLB*m^TbJ7Bfus#LC5VteFok03$*@ zHFp-5wy($X4u;+7cGKs3lYwe3md#d?WHlG0 zU#-SzZeZaX-kPrEpa58lgmQqjub>Kmu_+itkWmz#4R{56!>oZh4}J_29^(wUhQsa! ze0|?j^E#-FdKTdAoA&TMnAC$b+Hk3S%;$AgPjd{ zVceu_L7V6VZo}LMC>Nsj!`|A4%XMHL2HXS7$Kp8?7^_3y2LAtuT?jwCoWyEy>jFRt zZ9N`hTRLrpLl@8u^z?huI`4(q6`x&)?t7B2f;ir8)?#n+OAzO+he5Llr~^s&Kyv#< zPt9f6Y56E<>;zQ8dX$xhjox-6icabCq>7=7jmJUyhEu@J&n$fjs(L;jJ+Nj{+9MJa!dY1O*bfB*R<&ZBLB} z#0Yv%%|e(pnA4Wdb=H0Wvk@o-tboHio|;j>Y@n{rUAqBKTA+DuQ8BBBMa6st`!j1_ z@zh*^;es+MCdE4{Cd@Y~=2UQ0Obn(Y*Wf-cG%Ch>t*6Frji<&Pm<==n8-NdiD?r$O z%nX14zzdiY$}m5I*8$j^CR2mCfYDRossYM=@zgk8@YFoSb0+LRMPgGN&*{d~6BB@` zK%9~64(5WCjFNKsp-7o4qBmzEHJr{AH%d?OZ*nb|3)XjiFfL|lMpVqMmT@uDyCB8f z4XI`zstp6nJv2!8r{5hHQwnoe)d1~m%tU9F4$vx4aoS{0&B<5{NaLa)6n17}aU~{< z6;9ge&tMt`_g!#{Y4g;Cw|i=Kva2B5LbQ&WlOC4iY974vL~CtCA|C}ucHY7fLP zYv5Laa98pC0BQUM90YbPii%0^aMuPb#xyM@DyDkg%cwC}hP$4b7yx)41C_u^AOO@W z;pPRN`r@fXGodryZ1`0!jf!!DdlR1c;KS~xgCvLmbFv5Yg=4XQY!4Ckabta5ddggS z3SD}#oOOpl975p8gy7sm&hO(!j$nGKaWzX;rkqYmnGzXxM>q2oEX)jUmWcU6smtOG zJT^4Sx#jG&hve^ajwgpcfjsD$hvfH9IL%<)8opRYZ!dUShJ>wMVtE-ZmsYRmN!X`c zjKBJ-4Cia{r@kVSl-V=6zsV|OjPU70viVb->r+>e;!io8$y~~l=1)04JM|KtIDf|Z zIjnhTT=S5Ge8x>>bAKdjKBIxlNZx1M^LDy9Jh}fFH)oJKnJ+2}u%xV}X6GpF^>HOa6RiK}Ae1@y|j+|O{kiDc4QNUoV%fGaME zvxR1Ngv_>Z;Xx+4h!sp12Bb|etEKB}!p0kyL_wFx^*Q3%zJf>1`>vz+IKX#)9>+LV0uGPlUf4f1)r$i+huN|d{3zaFJ zx4Pp(-0rg8?!w;gENAry1ervMvZxrLmoD%g%vU^5E7KK64ZF)ax(hp@V?rv=a9T)P zfph{bko8BKBxOWfH`$WQ1+Wd>Brlhn$zJLveYseAKG#kBzJwUi$!?PJB^TiF#~oy# zI+N1BQ)xWhO}2f>`GoGG8B4Ur?(fFFj=iv-y5PXma7xOVp$Eo}a?V~Rn7hd@UvkRH zd#P^$3qPFV=}*kOqg&`tN8<8150#1bAmIZV_}T;YH)8U5?4H=`+C_eAciGnN!mZsT zYCoq-d#l^{R<|L|O<2`^VAYN^cSD*-f1=hBCe!b{J??(+!;O*XjyNme5#p>m6N4dQ zk_`7teI@F!9Zfl?KEbF$X`5A*%R>B4W;RroX}fc-ocZpewws9ixuB`K6dL18QC&e- zl_+gb*a|MihgXxNl@or#MR<122Z%+sSwJr={uc$GwLDs$1bi@Z|6J!O~sg_4j0?kDz_PLlF97smdG zs9$p$_Gl+L_ciyXJf{=+U)-=PVr#U?B3@Ew zVUjIg?pwBax)fVH-38oWghD^lNxnSHjhd>{GKwvTmHU!dVmD2aKN-f9J=IzGRDZs& z_vbsiKi^7QzWfum!;Qk|PFsyxmn+GzLQdrp*jX0XSs2)v<(#`n#5H7SMnjv)mql1v z_3GU00R`Jxs%S9LpjAAob=S@j&`CC^)7mJGIO5Q{!988|mT_{sp?t{ZZ@Cd;?4=ix zs>&@r{b+=JCqzENRSPWTF1a&A)iRmN#Ds*}>K0Xt=2##dy`rtGtAnv|f?AL}?T z3$YJBqO_c%HG<|y>5^(iH&ZFqin;*9jMRD%417Tt;j0d`b7}CA+-51&4@F^rzhf$c zgunRTgsmO_By4@bmT>O=M+tM~EE2YM^cAU?vbQ^OJkES|adijzIK%q`>VUgv4zLFvjbMC6M`31%LSDccwD!Vg8UR;c$W7#>|8g!*y(i`R zF80I)J@x8m4!Z1?N0r2{!@XOS$Y~w@U0*}?{+Cn6ztK@{T3X;Fq&6WUJHCS+@?NJ;ps?tL~F$iZT0Ge4oymRHV6>({j`9BRQ&P z1|m_K>=Kp=p9;6hv)^)W`Ypc~X*Upy;MtRe6Zfzh)u0*;s5CqIA7ajLnu5jP-v z4g?kyn;`6+Ozm^rlgeV|Bniy#iK+LA<8f^DK7X489f$UVQTLA}9_IpN?05Ibn z*uU=)x086?rQbWY=p^SZlW(RPup>6zBl;2yBg-0zr39Pavl_|$5^j}z3iTDHAo6$E zava@Ac7DgbE>}ygL6WO48TLKr%*q?d$nP=k{CJlneb3E)?g3S9EcD#1E_F}e=B><> zm6pdAnM~>Dl=|`)>{W+SIXKe1~FT6O>0Wm9Z(Eh8(OrCHTSfU zvp;bS?6S6F|E=Ucl*OjBsS^6T%gLln_M~sf7}fr+^<5#8__=Lac9T7m7O{aF&ZGv+f*>nb6w{If{&Ts+4W2HEA0^vKc4T4fM#xwuK7~dwe zwUS$BQ2R}-WWZT&2(Gx|HZtbmHsP8Sctl&U9K%aqWKPolo%Va=@ji^9+-uZ;vNy12CoKhb2avBHs7viB@E(*H|pM+1eJ zWnXLd+vdJjp@=%A_O_DhvuIBDT8Z5`Zj?tuYl1v^V^6#XGBDS*3Lm!;?Ky6%ej5!P z&{b|y?vIlBpTT7$tgyEpZqQA$nfh6@DF;_a+A{|Op}IHCKP_!AI%hid(cGP?*gu9w zvbU5gg=`v28Vbr-l{v*vrD7T3tJaW}boNg7l2xfMCLfV0*u*beVbk(2;x|0XVcafy zJCyJ_O;TmYa8{Yl;r3f1Cl)@tF{LPlr=Dn>7e_?McS%02;VuZE(Qu3LuBGch8 zh2IHF*>GXWhX|J3Xdh|1FjWy=m~JVH6Bc|(s?KxMLUm1-6rKv!6u1GB367_1cWt6e zo0rlgm(dJPE(`V)mb8+|KXb#`lveWQ&zyJYtX73RrQK1RI#?nJ4m!9r zmKu}COM{TgRBAbt;HS#BSnDq(ABVv2NywMteUpkiz@>0|(LIH5TWp-AdV-p!6bhpy z&(OYNcZ{*ZNNRKJ6d4?QkHGCtbfZ4gE+EWOMt8@v3I+XrD?$iEXt+YY6$ey`%DkXj zfc?!N8(cWF6>6tszU?xfS{cr{c$dq(45;B_VROSZ)I2w^AT8JOqno8AAI8ZmK z(o^ZgJ3?@z4kPy31yd6I1bb>dTPVo!)H6^CA-%bJ>5N{%j_~tAkREC&u@hu8sKVD2 zO!+5`xrt48kW+#KekQNf+WB8Q3M#s2aJXoBCrXBz8RxY?sH2VvV|LryukTnorm$#> zf>XS(^`auXzf7d4U1;Tg%QCPUeMb>OakS z_qwi(M!Nq=**Q5Pw&D&cy?{ejm#Fsv)$Vl;iWdq$+;V=<*^9zi>ZS;cj2&X}P@u;O zx~~H)iLQC700lmag-YtZdl_5A`sJyF3dy!bR#tW=Po?n0r>1(U33tpX>>{-R>+eQK zqEu0o!@>3=aJSqSGr$qY^BDtWgr|QK#pWF z3xqytz>lcmF@@|1PhNPdKa7-yrA!$hWK$Pu=9GJ`uY#%pp~M(e-WFdrcQ2V##f3Pn zxdZkuxkKKn!b|(jJH%YY`Fbt6Q(!*|%6Dk|_&b=Q3Tb!9dHCpcQ|*$@s)e4anSMiB3mk;W z5^;2@mm7z{j!yYb^g#y+CDEet&dwKppfL@Qflc$asC>D6M))pBN=$A@^R=kFviAzd zAKASuLQ64y)g$k2+RMJivsoc+_SZ&IVd%x*cM2t$ZBY*zbz>++#R zrc%t4mkm{%#eqCL{H$xx455fwN1t~1ihl=B`zeJ|^kqX|lMIMZR6bh)v0dxZp<5*< z_0pk=sYT@p1?=El+$_oFD)9M)(P#&1(3EZ%EGyh4ke@Dbp?WJziC+AO=x6PURNjhn zNGc7{td8`n3j=M$;g$m0>Jn)Co4k^;+}X~O=E-gGpzM5Jm`vHBRe7Sq=ToC4&5JwZ zMlZrTrL=t)y^6wmp?VbOgm>!@!q&RTir+9^FR#Pp2%KToM=gl|5siPXv4lNqMn2Xb z#1eZn>h08Znlnrp)O7F*TdIGE$X^SIMV7j1)4V{RZCrsm?GaufpoT2Jj6U@i^|v*a zj7L*k;oTOl)?QfK66BFUe^pvxO-oRuhW=`w65eSEN(!gHX`#Z~EkUb>(_h0-#U4C~ z2Pdp*3EJVN_*T%tCdcn03oE?YB3-2fjzzVYm$!f#4B!}Hpf;q0GB9hUuoS_6hhB?N zN)c)$7J~OBcKbaCop-*XGS6-a7$nT0UjKX+Ph+8(fGwQaqKad(yt2k-#bvF|+LiT1 z*3qm}mQ!PeKpGsA63Zzs+9_rXw(;ieN9D}($fip>x*vKJa*JwYmPb}()(%qqI}}|_ zXd%D+&W((SY)R8Hmh!Q}V47A^c^sX@JEF7wd;|8(h;s`RGa|K2MT>aN3w0FSLPlQU zhD_mU=mX_TE!U2pcP=ssmKYHJ%p)1MMP^C)lK3Dy`*Ba1m)n`!8iZ}l zG#-?E-CwGmT!d`gTFA~T+(edXA(yUjlUa2R8FrP6cAqT;4CEg4mDmR;gta%w(yQp8 zFRvn-uX4kN`K2YEYfd+~&CSGndvi34_0#F5)yeZ6ll|n0o@wOAs~qo>`*29|9}dAg zxmu^9Kv}t`qveM&jQ)f3@zpoP<5G~o0p^@$Wvw#ia{8H5 zB@O~*c{P-s~A~vR3 zeXM`9Hb2uWa5N+HgyvkuV5z0;IK=Ext?%BURTwj7E99tAGzRUSB!kvBYZcz)W15eR zx(2yi{xV^8R1k1RwR$AqlCOD^0`0p&Eb=rWlNj@lB-aFYvWLLNkDTFqSVM^)1v>D|cKb?7U4rso{d$KCt-*7uZqn-*1y&YqXs5qLzORq~KG*%R%sc`*K2113zIIp4OJp5zF z-3CdyKVHDf0w#dEsDQ$;x6k7xrh78rk>Xii7V%pn@-qZdhC%t75O#aB$G~#a!lE*| z-f!)aQTKi|Y;+cUwo#%1-ROdG|7qHm27Fdl*r=F-lZOR%)Gq%l z07qsmWmARK)kJUQIE7BOO>1_nDhtOA zHm?cOB)9y!M{e1Op3q2SH#zUXT))btLTYy762}5Zp^GkUG&>h&HRcI8j3F^0_!No0 z$ti=?`jX@`y*Y*1- zaAiPVtZ;!QUL5Oxrhx9&sKYLP;CzL@JeMnQ$ddLswq3}S705Gw6}g}6wYk;LYtiy( z!0Zb}Cf1g^^`Sprdf(B6@EMI|FZkzw3IF!ISQvZI09_R707g`$EUzql)@&CV%hvB!`0lYjFh7g`tpzL=MIl^5Qm!LIPd ziT-DrU2G-Ucjg1<jPv}p7+%r*2)hE3!}r1lP$g zRIEZ|V#%$}x6t^y3sJGzJ1zU8Y}SPr5)!j_nG0`8R`s0IQLLlK%|0gEnq)~q+5Kig zA@kYg&RbWZI_*~MSE{YYM>*H~sfG7$kxjR8=4QUYbRg7+;F(F|H|H;|W`F};`FB0@8^gIgNN zFU=U({%RmDEnGNT)j%e;aHD-IXnct`5Pv_ZT7NIk1JjMq8px&=?3V6sAO$VlNcO7+ z@<$6dgMGV!JaGrHmo|{pJDeB0pn)TG0qlCa*X(ULHHiZsy&(1p5S;_l7!EU zxVnH$Z^hY6Rew^8JjZ0R5xBtup@PHrP`U3t!IC9H)9}cyaLMyH?^5C-c-yjInB>p< za@dGS8Z9$~s!jR$G*0@%mK7p7MT}~ouEF@VxyHB9-9#?Qsc=LC8k4Iqf+n^8F3M#m zh&PE-8~0?$rwgtRG}*|mq%>5T7uTJC?2_jJx1uF>Lc>j>YvWWi?Hj69?(0-LRI=6u z?%7ul+662V7@BOrvJ59^T~np9!ml@B&*TsICO7tGw2A?9g)ZuXXD5Az?@q7YXNnn$5gPQtomb`&k-UdzTCJolArCPanB< ztWkl>j>62FM$M+1aJ>aBXRe+DGqzj z)T}y5cHQU3__fqmFQP%0%JH*AzNUkY8B63V9nwh6eeS0F3A&D4w#K@@D8)2Bw(Mv< zx!S>v9F$)llc~h1wR*4M#Jqaq(TS=5r}gCNP8@eySWn*SgqX`r8r88~s;21|R^v!! z_~F$`(`w;A_2lPHj`MlDe~p^*`myKAdh)Q73-DU{cmW&R^224SP$;E<%6)unFLWN| ze0d#%eZTCvd~7|fN$W6Ku=ApFN7bRj@mM^v4wd%sO-n}jHmQfwxIx-WszXQP@AWS% zF__Dow^toHvHJm&o7$gVCrvNTmY(1LrZ@Os>FEbQPOzvyLE+bWC7)ufs>kOmKdqkl zzP$MW>*y;p{!-6J!#Wk#_zcE)uAVQ3bposzPcz2T_52K2M{f>EGyYW1Pk~vrIYedr zv7V2InKPcM2R+2s#rQ)#A5#xi?ur5FA$q!iWh|{n(TVTf%^_~a@9Oypk9>Dlbc)8~ z_59QDyv&cUH(Y6=k#?dUjNjDryWsr&=8$p5qqaPbYz}edpGBxzDO5%S+MDs~dj1)N zBgTU?o&IchX4Fu>1NC}-Q$5LH9sd$Hhq&+p;{Gkgt+*;0E%m&fdRAN(ji!43y?-KC z(a7uT_zhCrUqrB=Ldh6&>iKu6OU4-pDh z8GI-5%aHY-Qr7V&M8>$Ko?j{@UMvx&gYO?U!f@cr!^|&`55iF)JedVZD^;1iL5U^QH+vJtTtM7&wg-?dWi z5Q&I3_+GRTu|qT_rSJ(-ybndAuAV<)eazaelsjql{ADR_ro+w$^5QpoK??%`Z(>1)uJ)6p8t$`R;-jt^kO}~ z_aA?pVw+OW=ScobMSeF(K5Hw`A`~dTp8rNlcLAbmjFV8o|E2c$S7CQI#?|H={RA`cdULs?mJv`HhmlO62t$5cxY>QXV0G2XWF zqopuyeVapGGd5UxCAG#k!>Tq~t^80a{H;FY4J+>_nd|#tFkCreE5MCD<6l-i?=B@$ zjaV+cD|`zj--+H&`ovcuTD0+JEAJv@@H4D~ z_yGv}wJq!!6sFS3zb57JQy;$=US`QF$ zR{lyI^)K$@f3GuK`P3HqD2@D$m7gNTEtI%~R#epQl5r5JJ#9Q><YQ$PFqjGtTiaWwUcJrZSRD?j!h|6P5?Px|>^VeI2W zQ7kBd#mF4L4JFR$uM5Ymh#GDD$jT3+DaCJw)rB8|z&TQ2#|?dYzLkW{J_e4 z{*%dn`ixmtULg^&Rw81v70i9ao{G2nj2o=Ho#elwj~7wAT{a??gNXO7e6>`#WfFI^ zjB%Znzers&bVzKKagCL4sngREroukL__mdAk|Mm)XMD@bH%R7}`(Q9!*=b|jOO$QP zt^8k--%P1E*WhiGyenSpGcL07t<ZD?ldb$GkCV*^qH*J`{O8nL?-=-~@o2659_o}a6v>S@PPFnnr3Cz7bu&(| z^4lJ#QQ_TZjJERGlD|hEzXe%mN?FIdg6OeUK8t!eDkQ=-!FRKbFsDA_C@a4~if7+v z9EtJ^k5kQHC}qJ`-XKNp?WHVITlxP`YkW7X?nafBf9G+8_c2ZS`N>6TJCAYmo0y-q~uX#LdQZ zt^$!ShPuv{^G??KB`j}mrL#QV(HfL%&q#u}7&RdE_& zH-}tAb`_8jy;T=f`C}NnSv4kLFj_nDEe1yv-Fy#>1^oRwLuG44t;hsK^9~^IW7;!< zKf;l7&e)2M!=1mLk5S1V5FlpeO=V^ztzzp_D_+os>7rwY$V zp~@=9lcHua|EuKoJ$0k`>Ptla27E7692FVO0sdzx0Xpd!tjXffNP&-ve2o;iNaU~A zRU8&ISNTdQ+}F4{i277~CGurRcbMMbzoJ&h zZHTdgKPs8GLW&nLc4ZjgxZ37eu}S0)Q#NAK!xzGLtK)x=9@^HvOXsOFOue0OifXe< ze0T#*ZF-X1xlO70bt!3XP4Poo@$sxn5U2m9Ec>#Kd!8xFt-Fr3JBS$uvZ*iEE&k|I zdH#2`K`=qYKKL7KlXQ_F1?ilTpI zX4RFj2kgtuOo2Rdp-lL6CEQhi$b?OG*tX%{uZxx|0uQiR9?_~fk(0IY%_y+cn+j{O zRk0!Kksx5CO2OT5h3>@yJ42en8V9i;-8Qno!H4%-PWNHY+f%x#?fN%J=w|QkTJoub zkFQ2I*plc}SyXJv(+0Sntx>oL^Jxs*1wM2aBFfIB3RgbiKv&Q+D0`$YWPwQ)YDv3; z&+w)1QpW(+l6y2nCWKMT1ZVE~UI;Bd*DFJcAC%`F6|^+bQO=8;-N0o94TJ?fD>fS& z#p2j0W??0DO5iQ-PLnrNpE-jqFL{3HF*I>ZUBH$SNzNYkraAg>`tBNp%(yB-9uVP1 zGZm;fEQ`XT3x8nS6y5YtT4=JU6e<%l!p|Xhsy{A6dE~bK-oAX@bpL72dFARU{^uH_ z$`6!hZ-Dy0k(6z3cT>SsiOYHA3Md(V$!`dbXpBUwK==gzasP@COe3u7rdLDtM_AvU zJzh82Us|?6#T(H8n*=M5pCx*WcB>IUriwpT2PG2HLS9jls#0?Pv+KDbR-9M>ouLOS&Jq z89r~wQVDCsHcX!Aoo!w-Jo#-6w>bg3922^;^AR1v4&U|>p0r*qCC;;6lV(~Q|*Oj8aBwe zunnMcX{75M>G#g9avc=$4apPO(vyspP}r98d5Fy8OegLE(3gG1HPAN10jEw zovcwzQJ>wHflqo6F1%brmJRS3W2a*u5Yqr3?=amL5}&}j0(L&D9^xMpx}f;kgjvhk zV@LfGo;(~^I^rnw!=JYoQhz5k1AIJ(%%g-?J{$GqvUB71$tu;SpOu;tjcy%G+?{>= zUVecFS)zV^%+gsgX{C9y&O2g#Zn6|_)<5xPN%5+%?^L9`a9&y9qV{t6M*;wKh$7}b zYlpTvf!@nZUz?FPNQSe|usI`dJh#&!$|K$Zmsy9v>=>nrrzekMgJ6+GMV81QND@C- z8#vghZjjc~k<`g8ft;YEJNw$5j>&a06})OC#{lYR;pw5J+)1R*+2;xUAnH{7>pp+O z4{@9Q>Gqj0fI2~5{MVvDk8H@QpeqUX)J?Sjr!N>?1f!ba_)nreQqw|~l0g^FN@%FK%YRCzefHT=p)Ea z)jl_SVr+W~S)lNVV2{?4-3p)o=(pEyro6}iFNAF{gBMWK0n1ic*hrO~VW%Uvwg=f$ zol3(78&L9wK?X3TK`Q?SN(mKC*VT#e8|C~zzU!reNZhgd4@Q?lHJq#E|5IDIt~QU& zZS<2%N%ScUltv1AvwF8eVi?FOVtBC&4jwMAeTvCe{N1Y$J{wYX zIW@>9X&@wv?u*JKCGTBJcvqjm2=7`;`RvJ&k!gbkPa4&) zjZTVA!!nwse4fzz8+qH+Cpx;zHyUFkh_v1og*w_-3%hEpKS0!r7NlBoxL1=~?uSDN za7)D^?-cCzt4-vls}HYhpaCX0(>8uNkX5()=2{^V#6cD>$x*mSJ>fv<(6#z1*mz&Y zddK(wa`qGr76}!pr)#uHxVI{zvPP9Ak4$rpsHll9!Vg*Q=A#_^UmDETH>|gO9}TEN zehvB3%_o%otcFy%`2=e|s#(0#KFY(&7v8W81!RQ;Q#y1U(uYOP( z8ehHC__oxLr`&zs@H5m_L^Ew}Uy?IkK2HxJj~sF>zK$|lg7xkF z;EA@H%;$W@vM1(}og7|2hvt$}&PU}uuKGQ@ zamU$}LDxwW=aayytI1P7J|XPpxg^!cXFR)hF8RdA=Oz7Rx=m>K{|I{%u%?dgarowD zA%qLE=3X|3TZ4iMxYoBW)xwPy5wR6qM%3CQiUtIQs0}Vy zLMt{8*F|i)x&+Y zUfkg}fRuDLK5CL!pWf2{a%<>L?kUEq0^|P0MArc^7$snB>EW$Shm_gtO?m6Vs+=yj zMt}d7u1Z@`RI_a!92UP72Q5%qq`!BoG#7sEJh-JRG3XAcYL0v8PSlk2tU2I8Rg~7$ zlzQljYV@tQP!>bebFbVQV%)UDr2AI6W5=dK7Kk+;^VqbrrqX(AQ)x{_m7!!-#Sf~= zA8zS?xK(jdn|Gq(f=X9zxcwC-eY|uNQgP?(m|IlYMFuN`w}2t%8hza@-FicINsUgg z$}8ng-$HK~T19SaLn>c-bl{#_H4TQEcGd0k9*-JtKgK_e9#r=;J9=2Yx`p=m(nHDi zRp^c{eCa>Gg?N5+0QuQ1)WeSs?X&b&O{7P5WOnK-acZiVTYO8aAf)laT2eD_@TUVw!7bzzKo1~` zN2B2Z@PWB-6D zBKJTbReck^6G-p{O0*yHByWRL0c_(%omGAe9T^5lJr zF_UE8NuC1M^CoKQLC5%}UN7+7necJm=c_u_9V6q+#Q3>Wjmef*Z75hqR|NdfHa^*) zpI@tAaAALD_HFNVLE8)U^OL?1uxHya0bk_8(n=3wTk$in6Rr*V!)c~GTXUohO~0Rx7&KlMeQ|g58N27sFBLR1@v^qBORm?!D+9t_?WJ0kX8BvAyV?S*I|l zT9D*o8yA^dSQV9a?=}qVDh!P(tm5ZqKwR%G`%A_*q$cejbjmV&wP-pdt!QBoJ(rx-imnCG1DvO|R;~v-QNI$sy3vuvPM2%AWSHdxru~4%Kly-C&09)# zA*z~`WqZRFhwVcO4)AWEvfgwex$(xfJ}?DJ!(`H*V#%uq+@%FHV{FLuPJi5 zr2QOn4u=V`{VWO%r~O@utKaPRCPhU=>KQaK90qFsb(9xQ8_AgKsK1gOf}EBL`5x&^ClLv*HO<1`T+Uz8fuQ9li@Nj3X6m?+ODCok@QHi z^cwmyl4i-%*N`ca?mg`IwVGUBSPMmQRrnS6mDtxQuzKW$-T_fzF?;k{tVUKvrs!NN z4#-TJUfdMC2IAVA3Vv)te*I~V{PG(5sy{ti{n@qKksgC16nq^?7*!9{C6|7P#w>TIM1hERwV0%3Ce+T6kx&P%h|zOXFAt z=PwWC)Z4F2v*t`7D_byfafypGoe#(nU>`smvbjg)rIuQYJEXLix};5ak5aSwSLUkh zEX}jjjUe?+E$G`pAg5eyLB9>6rQs)9@*?Z`EneI~tmfG$DR5xEXeao%|zZEPG#mJ70mzH(J@*m`JG{)Tc9B z>MesKfJJ_l7pKPPtj`tYj24VoA$JcsOoDz?IlU$1u*aQgEvq^x{zGf1B|_twqXJcI zQVS(M4rH_tA4b3>GB=r@Y^E%{|E@KQ6C8{hEmc-~~!ccbY6?!zGuMLVUq*rA~< zC}c1lMfPn$n!$8XKzyS$z7gl)l$aUm@!#PL3!xg>sE%z!hQah=a4l!{8A89$bMJdN z**cX^#=Rhv(=My_T}9bL=|NfkhqbIUW{|tIN-)L?Z#@^Xp1Bs#5fv#%UM?uS8a~K< zP_$ck|D%PvjPU3h!YhUtr605XgEX;|a>LcZgQWK?%IM3KBz&2>@`v#ymcfIft#Ox$ z2bSBBvR9K6SH<17aTku8>#xs zgjB;o@cGYGlr;=aspp@A`dHSSvue-b#^o~bNJ<*pJ8rOT<~MlqD}L@``ShIio)xa1 zgMsqdIQ_og;s{on|FP;n=hQ>4f|rXZOXFr`vuV&e30^J}X4*6^!XiN?K$iQGv&_uD&Tu5R<=HMzBQv%^C%{E6hXi!$ocU5z|^M0kXz zXDlmEWP8?8gk{<}YflG(9vCr}m15k+OUgc%(2U`(^0e4v0 zXf@qA|Ep-za5^MQfV07{fWgt`+$84YI9~AmB{hB3-m?)+^wS696$u|BlaO(InMtH(zrSVf^wSt!R-nk!mNUL7Cf6MtR*7H{kj!EPa&aUlkpGCHnI$6$Mv6fwN zOeI#Fw9n7Gj={CJ)LgNCcZI9Jf`-S?eSFPVC}FIoN1~>?fu&5WYc1RT0^5Ttyn@!m z(BsH2FQVocnu+@4N|T^Pj4zl5g@dN%Z$(ruOuLESCIA&qzpezlc<*kn&0LsFRJ6C8 z{s$|yw+&Zpn53e&jLXCDUDx$Bm6*F~vQ5y$4|3Q9 zaj0{a{sS+5^j1g45&A=y(e;t^%7j_)Eo| z#kpHxVV}8p9ZakZW#6^ONZ` zazrz_oJ_AHGn>$d(`ZFj?rH1Ba&96n*7Esj>*uHYN-BoPxCI!{IGFN|)oj(W#zdV) zmEAm*Ayrw;iR_+2*5LBFW#wt>XU$kys?}5#YL0Qkah_o=prhtiora)6v!7dr1NK>r z#CHMygQIuZ{e|qYN3&Bzgg@$gjP@Qn`?Ph|X_s7}lL&OuF&!;i1xQJy&n+LEwg%ga z;l|;F`_N*^r>(356w{1WAEVz#71QaDd$XslveV^wS_s9M`RSB2Cawl*5X){IJH_IA z+Un~_CY#Z_@6$WT7S8psJ`c{A>ZOe&i|ZQx{zMU zBbyq~sUK*W*|dlb<&mE{V(9f^kU)|e(4r-DAsu?k8hWa$3wYqEKB=@D+qVJveoQ|I z=r|j-cfIrSBmR*gK}YLCcu<>t-eg?@!9G5V0+-UQo(}0z98`-BGd4Ec0 zka=ei_bDAgu0Df~eoFsDLSNs#3Pk@;&Y)AP=;dU|8FSQXn&pLlbS4K}0QgMGm8oZ( zp>h)EG>R?}1=G(I&S|6$ff$o$AaGjJ8KnJ;4(9Pt$!D+tjXh&-{*1m(2IbXJ-2k;? zPD2jJ?d$5OeLx{)P6IWtFyy;r-+ew}bwr){2aZnQk=fsYZynIbDC*4WHFPYGj5~(5 zuBEd`^Y=*lIrQtVzBhmNIqk+H_tc^ba*4Q!s72x-!GtbxEdt=k{(EgerJC7OFD)}j`;>{+C*DOV=bCoK*y0IYSGRD zI?8`tE$)+&5+>nBV*3Dca0%3YRn&$tlbK`UgX&tvw1ts37s;(ow-kzT4f%w zo4(ESyL<|>nWz8lRO&+^-p??EoHm7g&o!Sy(K>n}>3S07>0sd}IEl)2AfLU1@nOi# z$4|${z^>p8b-=^FlX2g^O~PM^o(?$v$Z<2?CID|ZE#O~i$^TB%5S$N=*Xr=r6n6lJ zuMEaF=+R_7J)Dd6gTEyan4u`iS4|%>Fr=7Xb%Q~t`!Wfb*Zi`M6s)|a_}jTtU=IjcM%SgsE3?t zeZdYqrHVRLLb46j@YDa4QJ6p`cyb?}00Pm%y6Z$$vhcABysPOL0=h0Oe)=B=y~7S% zNQtoVgtMF!?o9qc=FQrW*Arrl*i))o4vIok zhg3%np=)LIQ*!?abhaGCg6mc0SLJk@IQit!F0nv!OzC{=-(rCbSL$D4fe(&ju^^<} z8eIPNn}C7;S1j;2hQ$IOch#{jp5D#WXz*N}#zSSSe0N^Y>=&uIH}f#p=0^}DUy=T%U?=7-O>>V1+nHSC+G}k@~5My_B2e+K1b29?_qG{v#XIS0Gah$OcUnW{?fUJaT;nioXtuYl{XvGcsLsAPP;|A=Gv_~S_4LXpWjgj$=oCXyB z2_Dl}E*V3HN%E)XrZ+O} zom}7{yiMRO!rKJ?_HZw(GUa>^p&@M`3b-Fa>1}ijzuo5 z9?TV`C_EegNU0xRu=`NTT+jT3!cd}c?tolrz+dZ1TmbVf#>A7ev`}aWmOn1#PLwsa zK*GnEn^hfgQkZfKdNFsj48`4q74!E8&6{u119;SXxIdSm#vRu1L+H{iIx1`70r1Be zs;+}gMt(F28pFk9;j!)^TNJUZf(<-0R~0Hy4a=Lshh_fEQL;vFQ3omd11dwX9*4AS zSPn(RtCH20%LeNu1770AYCID)UffB{VrxSptI&uKQJ#PqDx6o@$izJ&S@EGzaohu- zQOkOw4Yz4pEXyloy)^3%qSD*+m@I_zDt|smF%u-mC%eeC8pcv$us%3w*Y6xOK&s{b zLF@g4Tn5Ipv>&v#ALR0IcmmvC1O?L`JI7iRm7DYJfnsy#OZh;&uzh(^2cu1xD*v>DDPxVz^qseJvFkQGU;IR zXpgaxwLOUoJ$VM!)5LlKQ|8J$bRf@l^+7N~p)b`hI>s(c8@FZWy<4)idV1oMw2XHSks(@4O z2#x|nwXC#GnOdmPvM!cYdTU%)sWFOdZWgBKs9u$t zOT#f}#YaMxv+A?-iP&6?{XA>pAM(T z>#f_M2ys;b=Ya{@d&A~(^yPh;`DhF##Kq%ZV0t8e)^jZd{yjPJEi2ILVLE{d48y6h zBVnQ$wB;krBRtt*F8INf`&u7|!6>0^Ut1c&}End%sD(9)Vzl>Oz3~ZybEWI8 zMHbF`w|V++G)ggE><|UrQ=HgxteU^x4*C}(*Q@S`!!GAwR~aoOCYKs-?2k*p}7vg+c>wj zq?(^AZWC%1(N9E8g2pXWpvAQm)jgx-eqj#cPlR|KmiqE-0o@O_f84=@OL=7a;pTb{~ctZOC{*&@3fq5{ugpxiM|ey^Ej6h^z?Un zLH7eCdLsaia!-sv5;u5lBj{N?3=I_5xC^cPgO-!KO3>~<=unqUCHjqkd!D;sL>K;` z)B1c;BGby`Is)YiiCho4&b^>{D}?2>;_O_H0>3Txu%HIQBXZH~KWXGLvP2(KV$#QO zpBs_rIUVH^QKAnAzzlAw5hXmQpOJqU(TKljIrFsGUd1E{59)Z&sQ=Mu(jVj$MzrED zdb`^xqyB_(W}VEWzsA}2qaH8lV`RP&U4H?4X`B&yks(IE+Q`-JN1iX~ZQ?JA@$Kw* zBdT~wdv~8=B*ZbB!Ye6KBqHEqK)@sAvz>)tq9{yUaBeTU`w~|92lu0HuV7;p?ML%o z(b250QBNC9dnDZZxL+s(*G!6ZpY&dF*gZ^PB&$4Oxno(i(|US8>}hhb`;p}}{dLy$J!b`$(EZ_BFf9KSe_fxU zaEth4rsewHGizwexSiIL{hS9byF%+OKh#jM6TB7^@-i}etuic^-Lt=5fbST)?9apxkeDHktb@06=e7Q_7$Z2e#Z*Z zQsh`cnu{DO$jp6a(C<#?c}3&*-RPI&MpTV#62L*O-bLt*fa&2r1SfnYX$`9y39IoQ z#i*~42_s(?qiI4Wg%lQ>tA&gQkJJ^TW)TxaZ!6YnbU8hR26k6*%Ns)&&!E}EZ8MlD zC#Inr`IR2ENSQkUTXjGb4n*%DbEc8ur8NdkQQTA#FZ^fkHeaS06Q5k9Gq3k&J{NR* zyxV%eupAuKYc>11mfa{&#*FFvL2n?SW%Y&ZzC zo#o_iR3Kx1BLCctRf4i9MP}|szhp20=uA)M45{30 z-qefP!XxkOLczgI0(pKDS{%#_A-~;(4hAzbG2A_b@g;BUGWQN)_L8J_7qW&jzPt(O z=TN3QxpbG=C5&0d@3UoR4y?GjEjy|8+BvHV=d7%QT~;(US%f@!>9 z!%lRtFEf?wwG%n@V;+%t+fipfMoC8QGzY)KsCcCM3)FWgBSY)MnGea@9q3^=^ATCP z!#q~Wxbnyfgr-F>{mAJ%(E14GXR^l*^hqRhj|@lX{r*f}@_LauuRjyUBj4nsZw4@l z;)nUrg8Dv1$bBI5H94sWRSsm*$pJ;?z(I^Rj~u)WMMg2$kqv9tJyw@)nYu+7Z$C(`HbPhw?>I=VE`|s%-hPn0c%Lw_m#$$m*Eea`elC!%Mo^c=*yKRmD0M-!g!WyC?*qCD_|3Zq8Yl=*Ua8M8( zKaBN5!-ZP5NUngB@@}v-gpbcEq@1k~6;EK^@qSha6$EU%wrJDwBddN-jYbb9Fugs0 z#3^=VQMiHKbo^NH0CUj0cskj%8BZq+nlzDdrE@mpIfcb@N>Jj9t~q7ZCiBvXOkFqf zi!ag8kC;2;sxMHFnG8dY%Qr{QWDfGllrPK=XE9mt99~v_ zt|T|=Zz}Q&0yvnK;;oIHZI_PZ@{RVVL5}f~0q-Bxv#Do(IhpGMr#~IpacO_UB>%vG zW<(0(;1a@eIk16ofu{U|n;=)BRWN{!O|p@Bfc4tq$(l z9sOi|_dLuGn)WfH=yTeh|6kPqCazfGD5PECrmJ}7A^mT z>FH^dSCjB+#rF3F=z+hQJ(fcU#eJj(O0leRJ^_-3ynrj766jE|PfT`@Kb?#+7`ZC{D;3?*cbQk8A`f%4t>rxjA(B82Ow~E-8ga1>AXTvp%*}o?6tgZ(%uA{N@{x%|>V**pfM8+|QMh!fGfX@nk@4Oz>un$VN$K&T(HXv@P2foFWwOPZG=(PEGUIlQt@I!%=SO$3P;< zPlPpz#PY+MGYjWU&Gpel_d(YhnE2qQZ*XPFz+ZDYgJN>9-ww)8^b@{=NyrGW0so;J zL73e=(f%eTknA=Z)iuGl;LMxsjqY&pv<9p?QMsmqtDhkLc}Cv<`KauCcWuk-T~*u- z+d4}6+jZNWsiUmdZIx>lg1Nl(_Cxm9r}dO<_tn-v&)dL8MWSiv8Clkdcte5!Olleu zgrUy%o=E`lT#A)0>T-lk<$xt}3T}gzB@r>uyTJNS>X{!J{n}f9z^Zxh4h{9_D+#It zSnAUs0)LJ9>--2A{8t2lXHO5$p`f5;U)og8W1>i-Afl%`C4kGKO8ywoh7mrXoFk3= z#Gt@cuc~>sg+#C)nG=VmU4-)$!{SlaMW$y~1fjlVn>1aQEYyJp)#wp)l@Psy+eytE zCBjP^^~;gTLg`kC(E|v?DL^qgmYe%7a1|E>iNB6C3U5n@I61)mxXwcDVX&{uYvFf?-McaO($Y{!9SQ^kJUKG z_7o&)B})G!O|sA(cHx*FzUZy4H#3^qt}M8z{VF;<~S3q#N2T5;}?j$$|yZ4KZ=TJSYtR8 zURqpJvotA;K%=iR3a@22i&UZvZYOhUiKIR+L>82Nm6;fP4d2LqP?;3=W<#VxJu|Xq zken19C*U^G2a^3;2Y?~P%Hm1iqu;MGp@O7ua<(IR3lqWdpz*vseiNEOywl;`rxR`aVl1sqDxur7cxL>X&SV6|kA!0?m@qF+*ZYS3bP? z(8BxrX=lK!=Y2fK<4dY=I<}px+h?PMarAgNJnMSt4h1-9$nXj!2y z=2=AjtC+|d-E~>)R7u2C7ttzPxhUxCHwv{*_bj6Jm0_wxm$j$HFx92*+}rD!+_qP6 zaM7R;#9WerGR|aI#s$C>46}hW!Zm{QqxKFuLgw@%C~wCh<3#M$uLU<v3Y zu?-_WD5Hmh-)#_SKoYVMzYe@ZXhy`&AdRAvVeFr_sN?VvRFF|#a5h2t?VzZUGb24h z4*PPG1_Eukj3AOHk(_D{`@~i-Vouh2vdFX1r>>4r_$WL>EsCw7ck(0TaE9!T!a|LS zC5gVmMWfu4dMR@)+bvqgCBm7v-n!_bd-kIKS{?6#rdxCT=A`$CMe&=ZKlW1{je;|@ za_3 zqm>pG2rg9MBcEO9A?FKXa%%{=M|SozS*Q#&MlfN^`8;j?vwx?W_=E$&z!w(sooe}_ z3X?3ml!s-v-m*%M>I1u&V_IPRNq<=mu2xFJ|iINhCe{AC?Drf#wNpD+iKS#|Fb zi}P(%K#S9I+SJ6mI)v0U$X2d0dy;Tydzlv*H<73uKWK5is>;PclcwHJ^BPR&n$0Ia zZn11nXcCXDF5TxSo|};7Cnf*05pU6IcTT5TlH{_=yl92H@lLXMNgNM&DxTH^HJ&d{3!A?EHxok^ zaYY5oeN5+`FQ+Rio>BS7%?67ii<4otjd%LEHt`OaQ&XCx>2U1_j9Bt6z{Qf3W-8xg zQNSG&j=)Wr|3cMM6)!m13v?17eB^+u;2!ko62~avG(qBfDpJ+g7AlDL#C=-Rbo%V5HuS;5sSlyqRu-En>+-6 zqIIb?6tkT-2R78j+0$x(m_dQD@*l;L-O2<}d_&KL5Uq28dwO7gHUCG0fZX*W>O%Nn zZ5);`;ZmJztd18O>ly1rN`K@9rCmaqcbR|$@SIcp`qBlt%Y)h`{-Y<*=Aw4dW&3<( zkb?(1UVA373G%Ol`DXUfvm-u%C)6p)lV^QttGu280|X0;-ycQRyUaN6@4Em&HAm$- zTz_unD-?c@@fPl#%uQZ`67DfF#l1-sc1C0r6P__ds9v^12C*V>{+fceNf6rZT*S{` ztGqD@72IQb3U8(sw56hB_n1Cz2Nnd&eS#zWf<2wsU6WDgJ!YU=!oOe}CZj<=GApI& zleKyRQ<4y5Ot!2*wq90{HW{7yk&*j<@IPs*p34;Bvi0r-Nt2PFonhU6&iJR0@sm+x zI}~#BU$7yQ(Xw_XJd2z3!WduHpbd*ITdoZYPD_?+uajCPu;Ap&iYkxo&e7|R6vx-RoCgbDYG}2HN>BabsP&OO zjOVV6N39RuMvC)~f?(;uYTs}a>3(ARW!VN(p0eO@`AAYBP$mpc((>hek0d#tZJlSe zVq}s^FU~n?{h=$|{`paBQ&%_$!soiescVm>@I9nSBE`iJpHOzu%V`&LNk>oJHCD^- zmj7J;%_0TtBN*iJ`MP2ih%uC>d?cFifC(T!dWkX~FdRc|H8vLVJk#&| zpFACWm%BY(t$JJKzIo6^Yju1oT|Ux-lD02D+E--nyxho_`rX6-H4qQ7s|ploj}@_EDr@!N0xfQCI{hANIWQ_QZFD!-TU z0tZvll`msK9$~WAhG%Cl&CV7`jg-psCDK2F1NRw&(KnF2Z{c4Ne7w+Xy{EDO*KINJrNc=PN0XbqYO8c34H>>G|LS&G~LiLpe(RjDn zFpDwG^5uRU4A@$}TVMX;TzN2||8NMb7`htJPx&jDeHsE?KAtb@Py)!sE6m3(EK`rLd+V z*JEa`Hp&E-x1zFxcGz-Fl(f{iZZMgmBkC_4|0X=YhVoiB6wLIL&J7QrN%^iD$fKN( zM^dhXqq%TAPwV#8)arQq2a+%VDk5uYzN@L07{G>$9@Gx0d-2Z!_z6O`6q2X(ACeaA z!M%vSJr6{*k(9_kHzn3vJ4>MT>;?xxwDmk~VmAetV+U!C-`;jUXyN(xZ_hWb3_5W> zweo!Gr1M<^i;{p5jjk{k8%+re;%>3=aL#3^YT1j%bOoq5=j8Yk;8ZiH3}roLCS+ZY zuBi}2kP2|FrW1slHgib{z`H^~NdOg^Hz>tU50Bb)DNYpjLz;RA3v?X8{W?oSM;APu zwM0j(=V?W5E0inPA`dWsyo`BAdxcjhp1sUBxM0i+ed)06&V`}T>s7a%iE^j*b+&S+ z)Sd7Xv^fiwI7^ahmc*}K-1K~j6R~K~(p^rAU%grGl#dp7zA%IY<@-TbSR!(hBKRJ1 zVVJwslE$OwtQ#!YMpux*)+oteSI<`SKxz+~VPp42%Skfd0AD;AMy`Wikb3T-Ts4IBzJ|Ek@c5X3q!qvoWXIJvb_}A5B>ZLBOBL#)e6n$ZnyZ$j??5}W2JOK@a&Bw02Ja)a`&WI8#SGqkKu0{-+vL3bTWRV_aYSB$;e5UMQCg% z?3(cxp>&A9`(mL%&)3R{q_>pVM=%Q-A<=d(<9gS7yUlr8a=hm$b}$eZqOYDYW5~ss=>9V%h}17cuD>%M2CsGG-mYw6pL;;w zHTJyO3oUE^$(ywh75omn2a%cR*6++H35$7vw(pUN`u@R0WR11w8MDwbe&G`rSQO#% z;xJ6E2T`Iml8dz?3mx^~a^OPCuz$)O;Gn@1J+&F} z2s7#2xgi)<;{B?D>uV<(y3mrPgksxZ-0`^3t{g_}u4*f0(>Mx3g?5Go+=C2&)Lq94 zJWxO7V`#~!)-cY`PKtK$*JEMMV_5Qut321gx6VH{H&*Yza6RvVygp*Xvo--2fN_KU z0y$TECTA$$$DR?F?~GxqI>6;JEHVTjvh`2ki@-pi>%wEbLIvQy4Adl8uAmlLsD*mh zg(gEN=eGdza4tA!2|I&NiNI()-(+#;oE#;QqW1_e1on~>;5f&}zsnO1DSRp2Ej}bc z8IM~3Wd5Z8gX@OE3Po@I0?XC~_{HP)S%E(F-w-zUFPi)aVS5v~IhoZ#`7NC~Dm;vD*;DptZ7EK2$eEfoY-%fez0?X3B zDNl7!=0WASxeL&+7fcN4l7X^bFq!WTSYU}=VA>Y;&uw_*nMYlI@E{m^rD|h88Fw-e|-UC*8+^Jf4`@D>+oQbTj7=QBk zeDw4cLywt<3#oG@;v+Z{#@_GkZj5zgY~wdM#bH|u04T$00N@)vaTgQfPD6>({0?H7 zg4;76jepHB<4fjK{CF_8RO`))=0$r%vk@A8J5e}6qTe%rTxGJP)`u5F6wa6E_47AC z6ppY0r2S3742k}$`6deme$wIUYAwSneqDf0zGkMUM00EB|97Z?A{D>)F{e z+3fi!>>W+T%vbx)x0ejXs_QfVX32a0PaR~=d%!WphsMKx z90k#fgIWp(?I7cZ5YdZa5JqCE@Vm9QuU}SQ9BGnNCe75(o=bUgVK}}TpN>@EQ0e{> z<+8ybs=ylZ_!O>}J*)kf>h`2tTeqfexM4LMgA-sUrAM1v6I?k4(DX>o%MKJ$11b86 z5N_SV7Bj~6!Qj`DHc^x4iI)TRmj~yLp>VLqW&YNyzCl?+dtM3m63?b_UZBSdhHLb- zHhps@Uen5o&lK#ESer5}=QH)^Gfld`xMR4}b?{_QB-Cmuvzm{KdW3UR3tsb~6MWzR z-Nzt(Z6?J}mVgITXryR$gho_cTQFBJLsBb+He<>K3GJ2wU9oJCA3s_ht%=wC(aQt$ zr@>w>!QN!fJH#J7Nl`yS|20sF2Py%$M=y@hh*M9&DM$UzOkmL7ol~m|&?TPlJ6Rhu zZ|?zB%*?^1U>kXC?(I?!_4drtT|C2SMbp!bRqju!#w`K->hq=Q2KAHO+UioF_5MxZ~tP+0jT;;~hnA}gB%Y^O&aB2dT>45LV@O4YxSFO%m^}ybbK*t2nXn}HNrrqyt0$;T}^S@G5 z|M{QzlK+V>?250!l-3JS2O0M{p~}cqe>q{YozmN(CL1c0jT45Ck||R&oo17D`FO<{ z&sV2pP8x;tLfQ2DYK?;&_W|^72XB~&_{Y_z+C67wxQ~$8}K$e9%ja|AigptQz&f ze^cxJmU>t21LOWXJ$TH2=l6Px?_A&nbrkppQyFh_Cs3a$9J3UPiGrgZ z-w)o#m7N)?N7&7pf*&Ktb5tl_`6NTt@!uf!mkbKKn1lOXPcl|@+C$u*c-+Bv7h>=Z zuVla!Edu{agzEBaXk(0HuYx$%fL0298Ch=)@KyH(U_hFJPpyRlbF5f+f`x+qb_OyD zeIv+=8R)*yH!RCIi>t>4;1e1+y)J`0{jWItU4~=PT8n|4rHdCkt?Zxq*&77~)fxK~ zAXLtUbSO|8N=WD09Fs-YZxzmjPfh^+il6xv)dK7=x}xWrYLay|VZ%*kjG?T^K)Xb~ zJ+cnki?aX1?(uZ4499m#?(E61?g1svipo71oY9VB|J@bF?Z>hF(mT5|tUCci3(9|P z4~9_^&VZlxI)ENO{G!aVJ0qzV0l)g)8F$Y;Zy$XRE0Hj7AT8|3fSag;oqPw98FSDQ zC*R1B>QRcj|(HKvLjbKGr1gMLLuz_|7y_fVsg?-;kV3`<&uN%v5n zmcfzfh!y*e5>CmmBxay=vF{A0;h0wMd+5B_H?aG)*}1WB^;4HCt9&?TeXKqrW6%jQ zt~a5}b=QYyAZKUa5VCGIig5PrNpfjuspylpyg9CU2#q z#S&lN$ni6PlGIZOi!|=4L+IhI;AiEc+?|fTaPfUNU_<(Rl3kx31uIlAJ~?PdH#RR_K_=BY!4o}q@$KcdD&4XwUB3$0 zXyu4`D2(zA9`G?_@SinL&^*#3$|pR$7j)`qpP&w#x=10Mj_nC zeJ>5|cJ&SO3dF4JS_#%MQg7Qr26y9_baVr9XMHj#M(4>RR>M&v=$T6LnOrBx9hr|6 zbuRLV?_Q;mzqacnsUy2a^~=sw9zJRUxca|3<)9nAK!HMod))~cxL5eMcrP9eFYSQe z@YE72=6>yZ{(_(Kcpmr6p4{0v8fW{t3#xo%5Ag9e(XLq8&wN>5!ELPv+uoTcSCF8H zfVMQ~W^)xdb6qF)e5LuZQ}tsfnlZ+=r?}Nl^F}Ai9RnZgW*mb>=nwdbU+zE+p+C`C z{2c|{UB|!~_9fv}9Mso$TIxC}7hPiw7l{GEQ{466cUr#dg7w3&;%7Gfgw8$`EWf#P z7?Aokq3;d=Y6Dk~<3O0RBevMMtkXD@@0WVt#zu514|kgO60(u*N>e90zB9akc6j*j zAV`4WMa{uZ?l{J64|n2@*|R&@WWm`%_uOOTH5|ea)uv9ZjyFz^r@c`GSBYU-o|{be z`yYyMCDEzimn9bacVl;TR!j7|I-5w2C&xHZ{QP@Ce%%1L9Rpu=04z1I8|4?&oyToK zSL1!-vetGkfhNtw=s?~eu+Oam9_aOSbKS9K!QLKH>6;E6VOiX1{kZcY=dy8@ zuHP(s*#65d>OAHNo&S9dYCj6p&i3eU({1iixLuQsYD1IZb1bedwPZbX3ALzXLJH+JA(CGMH)VS#M#`fOj+Hr6*V>#jTH z3j67RjDJ(5ZmcULGEt;l&I2hoba4>j zmIZ(y5u`Jz-fqy&&++?(b-^F_$zA#9H|A%4%mh$3P+l|0n8|C(h3&t>&(~rg-<)wPdgAh-q(wK)PZ`8 z_w^y$JJ7)KzTHQs<~XU_Fmk9cWQ!{p({Crr1*z=>K8A+(*MEflpyGRQ96snr0v6hM zR$(tg7!acRlF-F2zFbC?1a1hS0+FAI)dd%w>asybZ}o{ zLil5ba6n(s!EL|+m}I%lIAHXkyxM=YmF+O{t{f-W&!J1Wvun|_3BF-HKI@1%A_H63 z;C@cO8W;8y>sa;6JDRZNlCROQccFjH>zH)HU5$TbiRWG~fr2mb^>aG76ij_mv5ZT% z7d*Rz`w#~}r;vu9F7l*~Ka(P#C$oL|($AmkKLYxxKiT4L*$Dmg4*0$ZIS$uS^t%lZ zKK?^=#RijOtLv6h0cBrrM3Ln}fP?pLni?}%P%a4S&kLC)gn7HzVTxKgsH1CP0*(V618|?* z%^KNZiR{q#?=b29lX}uk)vv>J2<-M3zj5KhJ8l<(0XiVM9sH+u`Ck;LdU{Y4)2LEMSr(N}^bP0vp&Ju@L$X?b%ijVYDEUbH>`%akx-{0tQXTNZijTTpfISmKGQ0zD zaIbTvhSlz^p!~5#X;%PP;3xI}(e*80QB_;OXU;rf4#)tG9PlwSFgW0g8DC(g45ETr z2`Zvx0Xm45H|1Jt*Mc*q3`zxqxxp;wjE*8n0(JA1#X%$GJv_}c@iAqo2xTfhn1AgV zsP6xNzn_OWXFt|nd+oK?eyz3kIWMq&n}bmVwq%^WSizQH`g_A9l&i}~dh`S0<1wZe z^XTut?4P|%R-fzpA^rh0NXJTxuA8`>S%_b1 z@Kz{Bz&#oo<~x&i5RPq6aV6#t?((bqofvoK8qP5wq8wRIoUWTkFaI;}nv}iRtM0?j z<1tXjRVmxi3xu{^mkuIT(Ao=QjWM1mXz7K&jQy|tsd!vw8+-FI;SVVNunib-bNEQ6 zp*Mfm&`=oX*Y}1-k<7W?=v}g`=o3}ak9QQ87gy)U8o@XV(jH$HZK~Fv>CF!LGWwK{ z!hIJcUb-D$ru?QiJ9`rJGjJf8y;A{Uxi~@fRmZO4&^l08fbYda>3@;Y_xsaY2Fu9kT+)IrC zE}S^HV7eO7YmY$l7tsNNuwHu@%2-5?%^KB<86gyxJJ^0)U@z7q0*-qH2fHf64ebRa zA*ti#zrt|keK5`g3o`7{jqw@`7+^X`<1rWnbzsDUAMW@p&e<~n_{F~f;~N=Wg{e>f z#pzIy?*}>auXsb%U-2y#BKoYtMM%RuAz$5MA5$6l!lpTt9$RfTVGH1tUR211m8btNTLkMkIy1k(iT zFB7=9YY@o)X+6NyB3=?Kl5X5Zp-FTI?-+V6iPmSGxLa_jXU)cqQEAU*o)#A?4NC7K zrTo$3HET*Yt~vonv^^Z#Gyh|j?NQJ3R$6+(M~^v1UfXT!I^_se7Y z^`G4ZMPLCqoP&^MPq{59V+lQqw-1??(8;`4(bXk%81G#qO{S-f3cU+l1B#O1K%fw0 zmNd3LZo!VN^2o>a*1T=pOtdnY9zAwSPr>LOJOB$-)lXC^80a1C&iadXZ4amIVMBT< z*>`N=-X(9JCJlY)803i4-<>+SH$l;pD(hL0n7w3*BC+~OrkcR_A2&PKdQt(mPuhce zxZ#j>A1m##g?M9jXmn;;2+JD9`{IpzD7#+|=Z`{{(le*ndcAJXv-5j69;B~vUxx}_ zh@fj2Q~B!qUdugA+N6tri0(QG%b67rjEB=k^zl+!!Sh95FQpfPyI-GW^r)q6ckvmc zURm3QiXYWFl(n%S2^e$#vf$fQFa0I60O7BjsB;hZ#hd}Ls;G|{!^5Fi2>)pUm z!ZLy5It~kb%6*GW%jmGIo!vl9pxjpO3s*tv%E5wQG}=8Vseyc-4!*OccgNzbDwF4M zsp7=ea+6}56h3o-J=|ke3~o!{-khPn%i#~XX z9`3dEZa%(&psFPd^s>>hm*_D6O?RRH!E8w5YkNjopIOE?yeLKYUZTfjIVMZBs|I3i zQ>FR0`1zj*7{guVio5xy?5=oOqJ)?SYredphF`rBExg1yV!;hya9i^b=H+Yc3)jY4*x8H}om@^2&oTsJ z0z^mwWl;~72L@WY-q{U><4zMKb!%I?ZzE1g*>K0@Ec-Mc=)*j~Tn7sOa%q{^Hg=GN zhN05byWKFG6RC&&Pj2jK(=|Z+hVwamrDY;Rn6H~;YF{aP4HxS0lcH6xz`oj#IFWh? z%q_YN>Ot6QZz|${xab!b{ZwuJkZ) z+q!|Ga4Sk3cbW{-s*^nt^C}(0+k-xNmDclipewJ^W3ZS@q326qxnt5T+X!x2^=nXC z3d}2CMujQ#glR8!!@|9^=(tBwT3%GON_>9vxlH@>cZw-){vFEWJXx&b;=7Ajf9=uT@j0(q`;;SmFe0dCdZ1 z+j227ub`*!x4kGvbt~u*^6!?2eeFD7u4+q9vSu9Z4aIokFfiFClT{*-G=Hzbrm=G5!d+oUvI z6FNn_bN^dR4SEG&@WR~?D>1}Ca`qE+dKEosgw>s~)lYa&#M}4389zbZ8FUcYe+ykn zr`5de137!q+6+3F_YNw^phr(_lESuv*D}12JQu)>x|Ln;!!+IkDRW$0zNcz$E+x-< zX03;14|os0J*~vNhDfV%8dPF*Hv{&tw~5fO)wD8e(QPc-1rCF!iL5^kLt2TrKF}86 zWlbYs=5O2N3Gy0xWHNdCO~WLQ^gxl@9*cmLCdggKV`nm1-)^6En~S~8#@?>9FzS(B z&G3o2X^jOz*b$(uyw2mtip3oY4#p68d1C#!p)vr_X!9UxZRsn7@m9 z$u>DQX9Q#&VNiG^OpTL%BkZc%oa#0^0#G|?^Y<$MnO|N$NnXcGpG6uxy>zLdWy4WX zT0^PWq@5aom9KI@P^8Zi*>;IVPo2bNX@k_TQ4Hb(#Dv}hQw!+gNc7aHh`p_l{5A1% z&%BFv&)b~zHYI+){y!S@ltS(Vq1yO8v3N?gd@w!SA!T!n9V7QujKc!a#c$^?}kVnB`q}GG7m-JB8|Aqhqroe}ndBN^hAYMVew& zQKTuLSeNU|9K4llrC{*D*2PndX;Y1916IHZ>@CW#OlWX8nSGd5z}1y-t<-SS$$Wx8 z=gm7b3C`5loH{v?d-0Y%{WtK0!)I>bLb&H{+0%YI3==WDA~fUFhke1$7|2q_&+{`p za=JMK=x>OVpo6c&BG8B$Uk4t0`&Rg=L?LXIH3*qG7}hw?yf5JWO$@|xpz1KzjsZB# zx?7+e0Q)}JgzsNCQn}_9oIF*l2``PqA_ zn9qJa;g=1X(tkR0qA2|Lu;_3w<*SzBdGo#g#+fezpcHuC-0464-m9K501E(__~~)e znLejUQgRcZ89lwz1I9A<;oGPQcP}#GCOv+-Y6A0zGYha+cDo9H780vGVR-;uOy#eE z1XsYwIG9MP=E22lt{Q!%k}0n{D{esg>iriqD$3J+P*RfTKRp8wDS~GgJd^4?V+7_Q zG3Qoz#+>_?XUq+FhQs?kcz_2fenN|L`)qo=()ANxv|v z3Yy2=WFvac{^K1RKi@+B=%s(tGXk#kFCo2?1r^=SWOeoanLq>~sLrh4h$*CwJU0L`!_oK+^b_9OXv~}R&*QG#%uMi!;pcQo!L((;;+~$xvSn|Z!zQp7ZbrwJ zgR*L=ZA@%pAXbo0-Hc|uMVCsY{iTPjD}qX>)Pv}cw_v=9LG(s?YF0+H%eXc*+6go7 zlr+mG5oB5`-n-E_njYQ*h{83g9 zT-{~4m-jI5q`9_-dYE6b6)V2N;seUJl;ndbu&$y9Ci3lA@j7p}5>(syx)>sH6^&&C z2h%!?e1y&t$p@nR?l&#^%kt=0OVuJ-^z5pbHbr^)hL{9jN)VGEi%Ib5N%0SQjuJvO zt$zBfCA&SBi$=d8gaw-=snEzNl9q|h!GYAU{6mG7{0&K)MM<+o1$9q*9D+EH+*Bi{ z%1tnGA-VdV?SfqGQsq+FQeI5R>z746zYErNM^IbJ$Swg~Ru`oI_-Uy%PN3rF0NG_dfzvy=c&29-00y$xohofaI# zeBEDqFpXaTP*c)n>(ig+h`deWiZ}aBn(Bj-%kW89verVk zjo*dt*i#~|44;t8726>RFe})h*>{v017X{ES4xH=CFLHjf7((ajh}Bk+EkS;%MlF$ z@ULL-?6)vs0Qe>h->8`Yug`76AQQiv^#4H3F3kq8nWKqp%RPVu7El1+4Lfu6gy@w$ zJ?S!xgP2I`@P~52QWgqcMr2X)?V$vb$SE@UInb_4QxlV zrH1~X`~ey|C_UK&dceAke01tS6OR)2m}I%i z?Yp4g>eMvYYxYc(!8*@8G)DX@xjl(6s{IQTKWA^R%8&D5GM;39G}WvjQ2#shNZu|q z;$3r$cfkUyo z3arZ!SWmA(6SF~KhkSxoWz$MtAIgPKzuS+&a=;|OqG=O|9k7uEgWYWUxuG;c+|#=R z9^O!R>N4bLMmmOGEi*qJ80fBf4o&)007uP77@%B9|DMY#Us`cFUwHssW$01jtbPzS z344&(NUL~npl~BSKI>29KOF=SM1;xWWJ&`za8`s^qV$nua$&|9m0!$Kl z${1gM*qP|)T`>#wVLTHL%1;a6s{+WB1-qgbSA{QDHan@&iclZLSS8HO0~9%h>-&Fc z;peS;%O};tq2WbeUXij&k(S7Bj;(@gZF3U<5J;&?enEb5Ih<_7_{C(MTn*h~?#f{% z-d+tzRccuM#Z3~*cU}0_cStzrhHEL;WeajsSFIF0ce%Ow9{bBLl(*%8kEKlc%N|K| zmq2CVt-DsJ^nJYks3VRn6N9`g=1x@nP;f2P6Qt#Zf}5-6%d*88y^mwIt3X(&q70{Cv~;9jeiC?9d=_9yuoz zuJVFIq&XpkNw&V}5sXi1^QKd(46$n7v#+VsLMJE`_ds%jWw9sE>PdhdYnq=be~$v~ zo?j#`6GG32ZlCB$WTg+CZuXmz=r_}(U$)fj7xnStJ&S?1DH&C33`6EiIA-U(A8ePkQ-^-+3a1X&}kCbta3}G1wSs;C~ zuyiGeWxz)WqDB=6Q+S2q22e$nv=B}f3xZU@d8%0j%Bn}02x65g7@(;5<~S|b!Ot=W zg6%qq!QsEYyNAgN< z?Wd1mLtoeGVGR}ofptK@V6tWsynJBUpRe$XZp!b-GrTcY(1T`!o!r#Qxoq76+IHIT!Nc?qiN>1U|agl;DkuG=wY*FYu ziH(J7op01@2S1)TZ8DgUN8AGn!u$kC7?G^k&4WhZ=@P;E9yC5FY2-w%tG~q-2ju5t zIm|izffS&S9XuUZ*ON{U_R+rb2#q(h80;<9G5=aKCW;)D1Ac+x@Xoi7BA~Klh zF(Xv}|0FXWp)wO4taO5)ne>WlatYw5BEWDo+^a@C;_yVh#hQS6P4raq|ihOr$H^#_~DxaWqxf)mVc+vvK_S6VDF=XpcJF# zK2QM0DPk?GD}3g<7-nyp&XLUN?aX$Q%DGZ_g2G1Jf_*Q{ebfU#lT5hpyNERMW z(C7DwmJ_MwCnkP|2-9r#b>y8#2m4OH?w*B=$tf*?$p#yF9nH$4mBS|tgd4y2aYdMe zu~|DF<~7$*b{?%>@qu%b#3&v{4a+Mr3Ce^pE}72ZPE+G7O3lgLB1dBC2qoR}01U-y zuR%nn9&U%roIPt3pY^#8^B0)5nDnJ3nZVNPCf(1G7{7mNwmd~9??`^dSI)@bYU_9; zd7n;z)xxs(X^n@pFKN#&8ovGz+W9`cZ0rnRjlG+)RhANRuct~fEU!{2>vIV{O*M3R zOtENpQ)wq6*$4DY-eZ*T0X>`^?p)veFayNKh7^@0gVczDZB?oX>>;%M16o7wy@tv^ zpyzu&i*YU?*XLYAq7Uhp$v3W{l^??X)5eD=??ZYdx%?VB@*y4UFTv@Gw3VWNZRvd8 zW8=<%_2?nG{vka>x$`lAO%}2o5Q@pCch6Yq=6qNQ zkLcL|>%-4VOH1)G>nZj-CFu;+yuyroh!-2U{}}_N@(Ti}CfO!Vo2{Jp5PefXuOr7j zL=k3sEU9{kUNO@X$T2t2hh};N>;;yY>5)G62hc(B8oCESC@ClU(M&H6`1&6OgLsRv z5HYY*RQUkK71F`0Pd&g!rg+^O^v6~2k%+&{8_rWe5@qKPiIYYe94fqUJQ0a;*$ zon!V?h08$bu91OkXJCbHmT5e}WDYN1za<|Tx28h;>#z!52hRq0Ho>z6o@{ugLR`HsKSd3{m*6)5 zew&3Z*{wbFNX4HGU0!(&FM2iPs?5m=T~6h-Yw#5(tjOweDq?+?AeDT)x+dRVBx z=u}<+t58T0Pb&ZY09M#4XhvA6;XI^r$kow;D1DPNp$P{Z7r>u$_)msV-{^!pB?jRr zzkn?P(5zw4JFB=!<^PQZw^G0}fX|WY1h6?f3)!;(2{4w8o*kzoY2~n7C~aJrSarPrGtRMZzMd{={`$ zHz720_InDw4<>Q05Fmwo4$0;Va3S;lh9Yql0zfbdV+FX4vYpD9!33mI7k-k+FzYd9LlU!Wz=A;!Yp>yojFd^<$sw8(%e^ z)U~^qo)+@`U+~5OJS+`AfF9Ni0~o+5(bYd<_TERY6vOt;m-kU_F+D4=0(#5f_DtlN8kP-L6j~5tFPk_oXtNYQakLht_Za>=nF@2IG@1w-M zbm%HW)893Uc=hkitNH(U2grL>CbHuuQR17oM|u8FkgcjwZj!wRj?sksT~vT&6$}_4 zMZustwd&9H-~2f`c>+b5LL|69GY2^Mt(X3DC5VH7BwE7b`0x|!IwtoWJZ){hX zPn04)Lea(#BgQUppXO-yc12wGa~~?@?bq(>}4Tf0miK_!Phl1zdEri*1TRFenT7r<|>2h;Nt`wk8&lE9%k{1)TW#Ucs2 zxyu43cKEwsV;B4QCwTok7br`}pF-RDxX+%@sZZ&^)!Tac|L@6Oa2F6`EwBB}$6nCX zfEQQx6IP@FtpTqmuFYx)14M5<#;gFW$Ru~c_5hRyOvEI0)m6ZC+Mf$d+Pp}x-{1LU zL{Dtfu^IblIZt-r`1zTd=WAycMGnCmzv@}YV4-!>Bg!`@EE^m%T<$y}9K*#08xrBw z=NmCj%lr&nNLnS{<0SR-+`ACi)225%WdT*_S5CTEO5f_Fydwp`61w1YYC?;J-{9T# z4Jdo9!87jaTfiuk{HuvPO0?yR2%QfFez6`>!`>H0pmL0=bX7+d`8(-F{afn%MBG!j z6>QR;ed+;v&)!zcYrrQa0reu~ZPcVU3^@%^e+8DBHR(pk_kz?!?Yqp+epJ}tO@W#3 zYp{?|kzSX@Qk9~0Yo=wF&T>F8b!*FKfihBJLaG0fT2%s`M-{gnRW4 zAKU%C27LrVUxm;+d{C#J|Bt{d2&7&BTSo7}Kq^r+=UbKK&F#NB2S5R&5C1=qfC>JB z{{jZJk9x-qDi)VY88NJ*AJud?iD_>o&Lx5-f}*Vs0JFv5@-x@nd5N=KL`oGr#9e}j zyGo=$+ZH@__C9r@r;&1+cMlDVlB;-k(6lJ|G!Gp4qmwcGguGaKn4rzc+(sG}bPaT9 zDNCo4`!1ueS$a6-3;xh_!C`os?~QJ-^alM4ZjMm)^hc7`V7zIp?Q`mTU7doz+%q~3 z_mp@(?jwBt&?nJxxF^N)F&GBG=#6)nUU+tO#cxLbP8PGuWWWRNl z^H(wF1`%*|^kZ>0`aN=JO26BYM2ScC4i|bJ1=`E#>LEIUv|dJjC2;cb(dA>&CA1fB zY&UL3sQUlV=nBSdu(m+6hd<$ZbfL|M=`+JHi9dWAQ$|37bCRncK8>#T(dRuq_EIVR zF^~5Wdhi*ogB`u_BcLO24?TB;Hu6GI;}LqI>daFYOmna=Q{=98M6OU{u)p>j z6kJAcBM)3erDgQUtYqNr6wKcXfWP5)2+{8(`gugD`)G!J=rkV1SQL3uFJq!xRt{2w z1yidm*I4aINpVZv{i~&zjr|3qE&CLAyxZo;Y zv3u~0nw3@yHm1UC2&1y-5?qSjSFDH-up+;1KJX}8%G!+P99Dgl8uZ_Lw1oL}P@b{4tu4Dc5TN5f?)QcEaoey6=G#Ak=r=531M13&mn=#uk!Wtp=>XJXuhhfnd zJ`K>pGjJ-BR944^3RNjffo@iErNs0MF68V1w3 z7Z+^he{8Tj<-R=dRZ(3yud*(mHUs%$LSNmZ=R z0Ha7AYxq_b7N<(VV`j$>X4Tf`J#%u^E^lMIA=pUn&5N^=AH(shk^Cg@IQVF-__usm zmTN$VJ6c@F&idc+?i1eg+F(^UGO4wRoN4R5BkZJ(jOJUl@T+w3Z)VPMMC14;0WFR2wjLW zLa_l(uC~PG92UU2f?~sno&_c%1so&xV}d_*78rj(yf@{3Sr480X7@A-`kO`qh>qx) zG%yM2$8=)8c{I+`nhfr+v0D#3r@)D#5ewPT)cUJqF#`4PG|r$s@0ls-Q7 z9f`K`QH`3&yH>)F8A=?#SSEm_5G=uo68-{|A43zB;Zt!~76E&J&80F*O3i;O&+FvH ziybW^h?7@aULnSuGUE@Qx4iO`inmK(|F=a(q`>j!DMj?b4e-}0 zgS~W_X*~e4lqq^T^vxGRA?3pr0h;8_W~cGpkd5H}|Hc zdc*a#@)!M$sl@MG$Td#U!i6fT6}ArNVGb#Bj7o)dE@74VRP#cuNyM}g zBj7xb*!%FBm}rp`VKS9~_`Sdv&QjSrXBdy@4hD^pvrhr}po!GApxB^|W70>1TZRsd zcs5A#B9Kjo;i-fftslrL6FjfOa}&PL!qWqB=iteLlN$ZjKH!f`L2*R(hNMnOrJzXH z#!KjRngx5V@ddr$gZz#&jsF;~Y2sCL3Xnv`RIg%A&4EM3gg5(I_-~d7i@4lW21fax ztKt*14ri*vso&F=D`OnaDE(?}yb|hf4Bydv*;#SfSw;f-&;$UhOG1G_gJ6~Fy{ng< zNNbW08%+>_fEWeO2tarSJR$Ie!lQx*IJ#hApLSs%ia$y#WJ@2#%ffh7=c)irWBB%~ z-=epV(t6S%MyHR`Bj(2c0E`anjf?oVM1poa0ROORVINSbAZ8%0^{=>^hfZQSl)DU` zC-49V=tuM=jOatka{6ns`yskgPEX4MS^LvNINdOT$8wl8pY~Qf)WcMsns2pWQ|m~+ zq8aA*E2-&tvb-8bBai`C30wC=rs<*C@|sRkrIMW1>9y2CoqoDb!m0G*b$T7OLZ^RL zC#hCRzR~F?QvX)zC+PGuRFZFXk~3DxS!yU1LOr9>N9dO8Cs8rfR^s@UT>Dv zSoOZt9t@jRVw{Bm84lGX;kTHW&XoNy+WrSmMCe6 zBop;=U2syOWo4p%Orm~lj6N98*I`cl#uNP;PoRZNe9M8eRp8At+T=4Z%i>c)n9&|y zDl3M`LCQ5Qu!Re$=EhfYkyb9|cg_b0?#g&a2vcU})hE=m*|7=;!Bb^wzAo4RuGieH zuw)Oo@V44EsZ<}rprLMm2uy${7pm${71oISQ*Un zVHW@fjb}Y==N_WMFKE@sD;EI%QoL1|7*5RHcHi;cL)gy&2?7)KE)os-lAcUnd5q?K zNxw@PJ5bG+bUeBEk7Kg`f^A3EksX4<_;dgj>Xgs(OTYvqXd-i{6TY8Qr7!FT zvog5X5r4XoE|}P9wM9d5c;Su71k3fkos>s0+<1m7#q8-+MSqy`NvYeL{d@Mso0G^{0dA(Kj=gUzoH}JhjiqtFu*Vj34;RS9J$84)5*Tm3Bg4Y zG68qf7p9@$}q14Jtr*2#|Oj8I|X1ASCJ z?6!8OQMQ}39@I4E8|tq@^!}Zw<~XeqQ=Lmd_D7(*$6>3%_H$oVyG(IeL5;;OX3}kr zzRMzzMflxuqwlEzmjC0ZmtEiLU-0(})Y`%CpZi)Y>zX?i)fQ2ug@P{|2;2nj+JZ|`^N5I47iqXj8)@my>B~E&e!yq z$S*tc-JV_~+VLICmmOGfy1WBCq?C7HJowovALeMs0JX4^rK?TLI?$sN^!$VXqs5Zr zJIrk9p(MzBlM15(tZY}!JuvfI4Jx)&6!>p*<_Fe1q?ct)HIt(0gwA5YFN@%%2VTI}x^`b11>SAv z`pFDi#g>x_?xhZPc?V-@gBogI=xDJB20R71D8APAb)R-#$N#zsGMvIRxruX>@nB{H z*%TjYBXpGoF&z<;mDv-ks7+Y}KRP?2f{E*hm?+Dh=ws53KAyo&@2HrLD`WC3H~BM+h7a3Qv$9C&R}Qkpf230pG?0MD~DBE$y22 zC=UpAaXVa(R@2~QgR(ld)IoArL9koF1mc3?aY1ns>k-28w+o&)3G3eh-*BvHam#9n zKB>KojQ3#tFiicB4rU0>tr0+jM(8kpQ35alqx`pjfq6;mGeEWG1_kBqCYvGaaG#d? zzv!ke>7zpCR1EN+{(ierg=?q_AtI*vUpjtVRid+sPiLOTTsJaT7(il2A7}kNX-boshfB34SbybWI(VwS&2VnO6B@J8(Jq4=&%= zr|fKp28ET%px-Ckr?^4i#0`qe6#(U-s_+Uu2xur!*0(E6KFa6X6mBUkP@ZqsceKNK z(z$m1IgG1`gfUY8eS5S!0V&GD-3&yJi7X@Qi*VJ{r(88j5AbK$cC!k`Pa>ySVpZ`C z?M|5Lz%s?9U=Dc<)lQ(I`nZ!h?SdUJ>?Ud30=XfM`K(* zI#D+0Sx8Hkx1)q_=uzH>+ZU9|vSWRqZP`QZ=-qE%dkVFqGvCnT$-H*-$2ath5%1t) zaxrt1@XO<6U8O$JrMQ{Fb=Jmq^uo9FHf#Y>2GqT-m z#UziE~SIF zDuJtRt2qaJhVy!eZ<2F5oT4AyeCOEiT<(c&%+y`Zh}lLk_!LJ>wx+8VF;Q*YmA33) zWA-9r_IuU^uj+Rgdo;WSi3)psYxV?v8TNDYeJh}C*;WNUcqj8d5tmn2<=0mwp<&hZ zeDd>FWT>WtgKapC`@%}h=mnK+%3CciOtclaqbQHIq0g%6aNWT+?qFM`brx%D!wTqu z;^XIz=>$a=kWOm1wsHF)E>`r=dG7f4zEbco9Zuz>(Uu6I}{~2e&JY@)IP0^i-q8kHMgA?XiC+r@;Mi9 z!K3qQulj2H@aQ(~S%@43_9%N}G@ge`KJgs=HD!OMjhotr&Yz_f@`-KSct|l8R-4Bv zd3j~_32j_>8*-kd=SGZZ<3_esvddVHHuWE(3)SDBl6OAiSN^2x{)e=kZsX(-`LfF? zf_-Qk=hueb`i_2a&D~ax2N7B9udTSjZi(E4ztze;Zmndq|0et|t=t0$Vcdj|Bg{?t%l2@ht&_F1g4f8AX0TJSJR5BYv^~g4z((j`lw0TgRRe~qGGkS)~H4J z&&n-lz^Y1B{V>d5X>Fyv!ZujXPFGoOV2?6}sl4!5rLEQFBo?l}AkzI5Q6bu0t*YuC zfP`AZ`~gy7t8zC6W(Htj$xH=9l0qCc34)ZnS|Le6Yt+I;`0q-%m=Y$9a)uan;=a2Ep|wa1z37#k#gemG`oV%S;PmtCFj8uPrr} z7_s^|v&D{l&(Sl+ztqaDgS`J`=eF9aMVqQOPVryzl`Lg()%|V5>`Pj?)ew0MTFbt$ zl}m3$@1BDh^b$L=ouk9a`F3PKN5>~d;d0=@2-0>Q4;U=5RKGf5^LmF5nW*$nv*a%; zU8+sA+_0vKQqr=)FuYR9PdTVCyv_>^6lYq9aoFGw3_QT@$#D;xwi=Sr>*whg7Y=LX zhP77iAHm*kaeO9fxalkfu~iN!4L(nb6VCN8YtCTUOu1hRDyMskQX{8IBh2mzK)?3)zz`hJB*Q z^-#*S7VbI(ErL?2R}wKQ@93G@Xi)#1DJ&Bk?(x(8Jgk;{N?K}lOhjBQ9YD9WaBVG> z)=$_2EskOlaL+`k-QL1AwV>Z?>2R;o7Vf(ic2`R!JJ<0M3ag`^%c^MMDq7fgAt=O< zKVV@7ZM&QV*SkkrxFb;f8g^p~^aaBQqOT@W_QNgQAqae}21HP3u=tro)zK%4#o+Jd zwiR4>9T1K4q~sK6Qz_ zEnxVQf3XDu+~0QOSx*P1?P%e4v{WA8vxzN+Z6ZoU`9)7D%uvFjtNuPnq4!!iBSZ^a za|a^BckWlDXcUp58kR1g|k<_4H+>Q8Jz7#$oL{!fCn^*=eyOikBX^7;HrO zj%u{M9(=Jm+W5C`P_U@T$4v+1yhe!N2s2cO{gc}|c^O*ETUB77*TUcU-+hz_JFta2 zQ(;$L$%A>{X)nhWVmnA$pc}S}Tin7e0kopo5iROXA}W9qMQ_L64OSI;uPTz-Uu@wP zK(rpP#wd#^5z;i!G^sv@W;M{E&p6IO!-8WSYxQ)4gqJS=4A43)EVbIiJkd?;2V^b3 z1{R{Q`-BS{*TO}#u=nki2Ue;7g$^{(6TC*YaHA@l7tk@&>BD(xW z^tdb1JI&tnhvngry>IkpG`rsFn|fC_qp%iwi60>WQ&Xyk(D~e-Na`$n-Y7dNY@uJ| zJwVr6VE=P$GYV~`m1J-;if^U0=wLRPVou-)tubgT5EQ-Ss3`*8)DT*)r5$#HD%B8$va># zZ07PII1?ru_51Dl&0JnH613CGDW+y_D@43C2Rz58eLoz=D;UEZ&+?5*zDBIr?{nL9 zd(Yl>jq zg2ZZ!35=X-Eq}|yI5NT%0gJ+1aNuQ#<-2b@8x)T*&0IWWTg1jR8*T~p2~E*Z;Wqp1 zW-bK>a&D_Xl)(U}brg}b97p!q@3T%@L z&?2u<{_066sFR*Xo^3!&I_VMQ*A3{cPC9DbohI&1Q$=?Z+uh`75vHA;zvVHsnR+N* z4XHxBlkY9jQTCfn+>NG+Uz*URPI?BZ4ne~&&=E7YH@L-*yG$U70FT5{oKr{6POA=q zv5;68{PWOhx}*4HTNg7MV>N=0lR6}5=LLEcsSZL%F3<}{?`z`rHL)KzRkEWTr-kW$ zp8Djbm^44Iz)SOY*9fG&lSH9E&~u)3-p7Ev`CtQ*50xgY)jo!wpeKenE|c4Vu5coO zMevp;ZVLcRW#4SFeJKQc^tYS1O-<x12A>0p7V<_*10Kp(*>SCN8ZB@h;L+XD)2wk|7n#&ToQht4oCuR^yT2 zi16yUuv&u11cNG9uV*-;JBHjJzzs6`9n;O=_yNK4e3h3>M+kO3JQl;v$+*_eDB1P~F6hZmQfr zlpTr@G3&JRK-Z+EeDy4ol1 z_fUVS-KUB3g5W8zU1K=ROA6=3fF1r>!Y*y%#7*eaAHj*Px*dK0BmL}%_WPJo9I!b& zq9;xzkL^=u@DBNZV87MK{oII@m*|jS!&Pu_2tHftn?Mc~kfX(JYUDnEP{m*5(A*D&c6_gqGeNKt$N?i$W)1X?GI5yJ@g=IgOur~m zpCwDQ%)g+vKhbkzXE$;$Lt>7NZp0k13eMeq@~rmcMlK10zXRc+5nLiQA$isIMU7kn zgw=wh8-hq#K_udS2b1rE=*Um>T8a8g5NO@4am|(2MVhjxW)$bZ5JJ&HWXouCu59f1I7+12u2sGFjg7?V>~7@=t&o- z=&K7+_*HuNB=tLFNr-{rjq?N+olW>k~E>;XTnQ5A2ico&xds>VKnOt^)6^ zZ{YsZz%Fg5v^E&VA^&UiB;E53-0KaMhw|CD216LMpbi+L)t=G7t%A@3cMGmtL8Mh< zE)W%K9jnpX*XZdUhPO#DNMhy!9pE!7rh$uTsF>Bj1~sTh3UxR&U}i{xQ68F0b4|Sg zh9D3dSY!-s;G!BTrZuoW4Td10E7}!Th8IuX4cw%Lib)NuM*|iaw9rV-sSj|Bfe{9a zokZ6N0t2RP8Ri2c@PR2fU4q`e4s#{->*$l~ut!-^iyE%e^Cjvjr1i{j$7H0uLCdE& zGD$1D0Mr#lX)EMuD~6TsXH2y)Oc>ckJGQ395!N#)2H%IqR$f|Ml4}+V&M?$7(ApdH zupz(HLt!TD@~cF`IO+f%6=4} zs~s9}FI02iexjZ`QD1Sgo~@`iJP^3SQ)IN;vFy;bWVB&xSGr7l45PY<|Fsy>0r%LZ zk_F}U?_gq;cD<)g6Ad%T zIpA+7+vU7I?>IBjb-aP&A_Lulp#k2^xH?4tLI;hUSMQQ@BS?0Bed?z;X`E+JEd0cK z>POX~#9!!nSyA=FQT|~?uC`d|c+4|tiuryC@Yeu;mGzE39;>al z!QYU2HT)f3?|8^#Wc3AMxC+G*MqOW^!LOjv3@@OKZOZj17+r6whOiQkoRgToxgK35 zvK^&NP(567QChOIGRScsF21w{lk0w5>WGJq<0^?SJ0;Tplb=1VRk-wWnE#chSV|F?DAw{;a&b?m2gwn~BiU>z3kj(a?Ji)i1i z?J~)-w`N0G$&%3@k)SY&#q;MN&cr(tVIca6$CT8SU^*2^4xPaA!K?T}ea+3emr zoVhgnw9wJPv#NaaU2g68%!hSI^BX-y-1BFdz~rmX;C!0~}IA-GQORf|5pMXMHS>)^s4=!>{8{#U_xd}M>`Y&UuCC2ZF$ znRZrP^h6vFrjAJqA7Hsgk*QJ))P#+OOpX6TEJj$Ko6@8T#Z>VrQf|}A7Xw}R!eSp1hVfx^ zZFa(>neDB`((HSlyOv!*H$h#53L^#APfcMV_+=Cmrx4}zme_C~Ga0&2cZj~K>t zwMy_ngd2vo@;nmUp<_qbE)GHk=@txGHDtxlwIwaX=QB5Jk>L)l8Di+*rQG7DtQ90w z)iNh)(cU}s=rIkoTtjU|V=cR<*0x^Il_RV8toCgaaNv%e0OUA$Db5K>&DkSnKC4CD zcj#ecQ7sa8(~~{adw9pSFoE2KW_N?V|EINRb2oS$QrGgf?-=YRMYUW}ZAEb{n_6pF zA<(a`#ofea8|WroMKVTzzKnEn@Nr3H-EhPEJd10I3SNNTgt?62nEOHj+~u~_ayhjX zrdsxeTH7mvgd_}0=&%gHDj0tr!C zFx=I(+}hfTf7P4hxY|HO}niuRAXF^fxF5 zsM_#}lrNMP2ChdPpYXu22UqM9l-mRA$(!d5kgwadDT{U)v^ue4Kv_)->{aqGq{XYujMgU&$}v!g&`g^4og55 zmYUdhSEH7KcUJ?hpIZ_#=g(8|zB_h+_IKsha!?lBL||_e#;so`XaCiDd(OGIN+U6y zf%-)bAE@6}nfB6o%6A8rNVtCL_fcLiJ$zZyc}!kOF3D63yuqr=EjE{9A$aLLcj*{ zDslf0{{1zuMt5KYzj+NzvzPd~DV1|nB_rOA+q)$zHjpX_-Te%AG|Oui76MW!E!*k4 zkps@fy`Iw*Hg;fyJut$Qj~I^qAWIA=f0C2~{Hlavz@?lSTqKQJw2x|3a5S@AIkU;b zZh@EBIuCYFN``Rib+EU;WCYK-nFT#_zBME8hq}$XjN{ozoWWGp+&H71}zQ?0AFNz+zP|)M_PvCbh+H}+b-ap z@s(Nr#aejQiJ!kgnD1-3l^z!Xec4R;5;s3dYAttK$$Ti|Js zOTr`f_P8RUWWv?XTS72cD&;6ExNyl#7-17em``1XOY!?Zi8eg_f|KlQ^`s;6d*?4X%MW+~2RErh zF7Yo;PX6Me)BNkYUds_THPp$)s!F2T?xhKsS{Jk_o59_DiMRQ+fWlQyyyd1yRI7~U z<{F4WK$x#6uBz6RE0~_0CjiGsg3S#LuL;iA2vd>ue+EBU4~=vva>wJd@??mMdaW7!6dWndq61NOn-zj-ir`W2e=}rP7fP<$;EDW z>9@O>WS8tyo?<4cfL!}x{K!#Q;3C9OGK{4HJ8p@@QOZ=Z2n!`-ygHg#&LM7sXN{7yje8C^a~Y)GX&$hPtqET$Csk`~=JyP~CQ_+)hYorbxqrMPLS7aJdWj29jEidGElw|cf#&OOb5`x88k0D!!@fOJvCn~3KZ|n84Fs90q=9AXx?S&< zcsqN+zgZD1Bl}`5FV~tkENLfAsi_>VYIq(6)@n1`>VVK$*CW>I>Xc_WbTk~$d>nLJ zv}jp_6QBmm-hGL)(!h~wy+?+JTp;gnyel2v>VX7HjSL$baQ2#PD@f$Tr=neH@$ems@Uf35bwCRLnnCW^Mx?E+9P$64NmBm zwx!NJ0zR-C{emEcPx`y0yubm8ljYKAU{Eqnw#BJ$aWadYvctT3X;kxYUG|IB(VKHb zo9cXLN2^ek;%HM7rFKHPhm18l+5Jv^vlDnd6wm z4!4?D>2bhb7brXBpXBl{?0EBps3`Qq8-S;O=a5959S=^3mQ%Vobq;u_sUblKi=adW0aiptA*MXbqwQxMN-yQ2M;i^W)2)2y0I$` z_M$_7#j$Y219u?bbR}MIc)!BGklqlMi>mC4hyS<&TCd<& z*cWxvzC%FSaRaZN6eY^X9PH-~{TB}Ad55f;x4U!fLkD}tq5s4|MyA-}@Gt%2_{gN_ zfi;5;mUZZ@j)mWO{Kx@h;Y$uLVNoGi`G)r@r+b^D+Ta`4Z>Se?lUw5e+<+N}%bcze zsDgV0%rXa_=>eu+q8*oeL@^@eNti!hSG{x(lrjv*Foi#t4o zv~BgF1Q2rRa#fncds*|JEWWsy-^57-(kY{aN3(Mwog%R;;8;<$3iZOuhl6z8@dJlNvppB z^rwc5RK+R0UYM6}!cbqM3R9d;TGEnycM_oQ%>Dr=~I+!F!p0J5~nL0-)w@#i2 zC@rpzOix8JStzF(r4+2^6dtp`Iu1|(`w)Y6_z$ivd&&Pao~#Dipd-P>MtODcPh$}d zHo~Ega4_%LbzlkyR+S{2OaSHH25Pg8q9o4uM=L`eaBk}=IOVhhmV5l}q1&DebnnE=DU>|-uD#UQ3OrWG2ryaI6+lO<>by~El-wj-YiMC?+|G{M znQ=Qj2I|sy05ugyche)eWXF06C1hW=GnegY!gEv;_n#nXv2GGlP7vnDMLT=Z&io6? zCF+uSNKAOkKSDf63Jwj>aojt0J6o@=sSg7cKjX>JzCpt zXWQ+}QM=*DX=N1joIDN{9<<8?=qZqOxsT}x3e$X@karueCawnTV*%2q%bS(GA{4cZ`Y~A>x+_W>OrC* zkh9R@;f#K!T4GlVpmWUvI(Cn%p}fexu6L+K#?iTnLmc-L{>zxI7(d5H1^gmATVTf> zd^8(`GI)*qfDHn`AXmpUJDX`|qySxy`#SjBx`*&2O=@S;?aXw$;V3u*fy!X@U1TF(F>7s0jXEP$wjSJvQ-8b2+kA;vSYf+RVY^z# zDwbIBp&&GuT4uvv2BAc1p$*>-LbBQhQX6=j5OWmSHd>UQO9y0@>?_FJwrd(;_dj4` z(``(;&7gfnc9L2gLC1nzSHaGP92_>5W@D3VOcJF1LD>$H3X_XE!^UJbHr~c0K;)~k z_o?Z{B@ty_S&0Jg1xb-$BX^|idlDNoPchwwnP3!C8)9Q)Yzz$r59*Fn+V$i(R#Uq~ z!m$V&8*XFxkn$cd{@prC9TB2#iWqHH-5hSB9DG0XF`iGn+f-Z@maXWM{*j_oypB@os+1VZA+@#8d#h#DV)Y{!ix8>mHT zv{uG7gkPpn>a6F6K&~H1Rri7$AP*b}oLuFC8?a#>x3b3p=EDqQ)$O82bz?d!d&G)A zqEU=u^-%eHR^a22L+;@ln}WeTHB;e!h!opzWt*YcMdnXdSpzlNGq%slzGKDFq3C3= zkS$Y-cbAqwI)pz8MN5L7u+l+IT-D=NEC~bjU24TeVJL@sh{b;hLl25(S>d>b^qJQA z+$JIIYLd{oO$sL6ibulG^x7mAtfdh4xmca4_1iM>gI^PGr4K^deU&AZ2-<=eui}(< ziZoHyS1N5;jugxuM0=< zlxrB*hNEJtcNp8l(NmOm7$*zSlB5>~*$snxs>M*}Mmc`=h1B#5nUx($2 zrNg)(0!gXjVSGFSrAe+^GJQ%+0 z?g-zrgVg$R@u6nT7i#NC0zBo|z8jJrHjbf>t z7JM-pZKq-^xGDxIs2~g8AA@F5cg@%ygC0x?u?%ZH+F#Ez^Y)pmiGd7@t5t_cEc`5~)-{6`js+XzQ2LZ4%V?y2kr{s< zhZ3hgXM&AF`7)Q#d8(Zz3=mvStvB_)5RVeMq0>#%YG#qf&S>VD@WBMwAXqaVNkBUu zOC40n$hvI~);F1(DF3j6nS&<%6{9yE;06B=5Pcl5)ATRnJ*7t2izV2M{ext4?92Pxitw?&n{k8~El+!&)O;dns93nj6gKvi zg*|6s&RO8Zcb9Tc9U(80Cx&d{W4#vqmKd!Gwpb4Ctpis*EoOX8j2=$dX%zdm;7EA= zQd6h034<;ds#Hfx9x&m@B!GQ#Gk#uzaP9*}01T+ss$RCFL<&?pEh*p#d#9x-A`hql z%^j0uyQQowVC8io8A444`N~rYw_5OADUzl`(>IexD9C)<((ZpUh;dVJ<`4$s9Xu>b1p>6yY6RS1h@6*t~LuyQHjme-LVpf^(*Xd}z z>@gGj7}V3>_>HF`dvOww7V}N)e8_S-@E@Mhqhs?-Y`zIs&p=P`vrKHZ2@lRd>9J`h zHVsO}H}-o<@2vLRilxU=Ol-0Vb2AX)Cz{we6BcKnjr?&VJ8r~pXQ1;T9Y*$)(QxDz z(_zFf&qUd!3;F={h|o5y+Q4t%5aNt}Fm~L?9yh|cK=oww*qF}99)VDe<6BQfQQ4xG z7WGXpd-{p8;xh&6GZhalo;C5(*nT7Xt`XmwiRSQ|jO;EW&YA^~+G=FC8u8v)D2u-k%a1m) z(MBxFL^i?o0fTm(YI`qsXQICgj03E3fH4hVrvlXq4h^t}2bjYHcv%)o5oiY3eFKbU z0Kb}r8U>pM*ewIh3j;Vf8_k)rejqPMvwi?C%0^kyD+ZkL(WC3>keOcRU(DkJs?i?& zb~cI$Erq1BG1+&`0%pko)@P#>>bqY2Wj4@Q`2#>&!?O_(x3Yt`Pf)Vdi4+vr3ZhQ3 z(c32N^xf{PHN8~AxnB~{tpLz5ds z4JchhzC8F@Rk=X5nzU8Lgd0BaplbU4fgWH}sxFZ7?v^VnSMwFM7y45>1(onkp(J1R zFY27F__}{l(yYRB{pYp9f@RU-Vy?EOa2^koE3*poz(H`9cBg@z+w$Svtit>vHc#~t zsZH^5|Ef*_`6f~2ANIqKyzXIoWw_#vp{q?HfM~%;%pZkBWdf6erqz_*8&o?kZTkqv<=ef=I;(cP| z%Cnn(U9jNs`hx5hXmVvF7cLkw9hBVtEcj4vCWH4Oo$~S>U}=MYN#bbJ?{xKE$Ji@9 zV}I%g8!vBBm+8Bq;+;cZZQJU+@ro3tDVHiA>UlQ@-WKZn@w6PINWIdX7YnMOkao}P z;Sb#%#Y4Z1`lcKIJ_i+2!`;}BgC3;1y76~8utEQ|8;9niBw*u(4_VY-~Rh+i%eB zSK2*sqjX3qquNGl$&+O8vdZaPDo%}WL1*F_Z-FWOY;Zp#fC7w?y;tCwZk(2flB9>b z%U-YB)gLx?r;okU$K2{OXxn9G&#*QQ@Ej_Byc@rehcf6(eY-`fOMOkj@WIFOP(4-D zjnnhdjEJGWbh-Fo!_1)FFVj>SPqM5VZ^%b^#UJ#6GIrJ{L$n}M-r$=;b(JQeTmMnd zp62j&s#hccx#zvw=v{eJ*`s~>qkU&uIJ$SdzLMyfEYqiF`tZNmU0-t$edx+vBzLlAQy(6fi;_Z> zeITkvqT)1_efZ*BG=1foK9H+!-FiGIT(b)5oCj_4=JkVkCe-jmpZ5_!v%GKN$KGP$ znq`nDZtj^NKAqQip5!U@APqPo7ERtJ~r>*ZXC`F_A095)IW z_}#tq1O9Y%EF_P9sE%l-nsMgCC@N}3S5*opHAc|FfR-KE6Dr^A#T5^ucSEat*$utS zhF$~HpnDwOc^J*eJKPE98}uqBma8lB5MvLI^)f4aRfkDCaQJ}1+wv*(+B(hGT}_f! zO0AFwlMBORz4&(pK+?V4iR%l{Fh8(YAK2SlQixvUiE?}XAF8vnd-St=@Mp!SCL*xs zw=3iw1Agoglunfy@E;yQXbQh)cVuBe4?gq=dOkSA;01@`KixQDA=(i}lW;~r9&|c)5>`k%1x^!MYAdE;bw@gh_z93cs)d?u@r^tk=)8 zesg!+qpeg1Ef1Do12a2;@VoLyBZL+`_yi$o6a9;SJ*M%Vb`JzN8<*{}CuO{1P* z&74ePpyvval$+bl&g*98bsMx#xowkswcL6w1<&j=!S5E?0T}R^rq^`pF}DQ8P&Ili zDghEVwHxP^AnDqd^uW^LoDhol{6q{AZq@_w0DCgr%0O|PrkVoMqFUi`KsAl*b*g`N z(E%X20~;*7cjbaJwL|}u6zD;?2zJ<*NUrR!lVoaxyP4o_Re>J&mY`%RM~}~ypk*;h z1WfhZ@C<%^Va)QvY4GM!{#_R?T!J1A{k)6)qKo;s3%HcJ6Zp?dfJGCg$G4XN!8u2- zNryg{qFMP$&7}TB7ki?MtWcnWRMSb7ilpBFZc0wnX2R)w;uqMdKI*`#QXuCCI`Bv- znk#7UAY-}Ef$62_Il&$h(%3t2?NU@Hc)=Sw(t)Quiqy3#)CE>(q(k)#-wRQK=HyIP zMU%}ztBnGEN=hql5R2FO*i%!z@kawf(tY6&5~f3E1{2b2ZLsX_ z?`M$2cPPH`espn0pQ*#T{;+2A+!cRK$0#+JA z>UlwXd4f7PTALv~IEx1!p1`hxxGtLua#--9L#+(~>I1A@%@6K@#~09BNCu06p;A6w zSF08R7E1YH9I3Fb9)3)%lXB~%VpuErsH9u{)y zwHtg9Wet_MclnbU`Uo%Uj#1oApVzpQh&b1kc-|(tMBLJldK%P?@_e= z0ppLbGU;HQ=|`}#3;qVjJ*tfa0aP_UGypR3wr3$xorSt(1z5HW$pUrrCsj{&;<9BZ zEwQYVE$d{;I@iu1x+)7MRZBX>@}UB$5LB-eFQ3HC%TTiLp-yP!e)RJvdrvPz4|Az( uJq{~FtR&&u?a{@U}|%U_)Q!4iA$=&Zu2YvL>K diff --git a/ota/nuki_hub_esp32solo1.bin b/ota/nuki_hub_esp32solo1.bin index 3878f6169e9d87ab020d6f62d434163b11dfe4f9..6e1dbdb7d9e6dd1c9cbe6d45f8266ab243635203 100644 GIT binary patch delta 716498 zcmce;3w(@M*FL;v5-V{|Bq1cyktk6)3nC(OClYlCQlix(lVl=ONhY0{I8;5OrKmHb zqRz#G(xTEfT8g6Op+!qeQIr-%Q51Fju655$GE|@c`~TkW_a(n;uD#b@d+)Um_deZ+ zMWIg;zNtC?%Cn)13^ z%_WXub=n0R@`o5o@{IW+pkkxJT4pg88%u1CU3Kon4=5=cY#LBlmOCJ~%v6+5z2Mb# zEz8w8y|Jc}0&}eBK$b2V6<^j}r)?iwWX>BLYcUrUnMwv_nFrATmwP}FJbj#UouSND zXttPMHP}q%5*mfZEus-4;3_i?kg%8sqIJt3Inpu2 zFVgXe-~75I1>ImzW{DxU$e3U8lz*9~;`;`7eZzBYMWuP>vJ#uoLg{9+t;lRH)wu*Z zi_vPdReT#_*EVpLql+QWX0{CPqsn`Q4bwJlOC8#FXqVU_A*p@anE3cM?PB6}krrbS zD$Cf)u|xN&qg%6~O&>6FuyJ^)A-}W5WHaR%ibjsCIMnQ(ucLPB^|eOm!i_^vzXNQJ z_=tv%>rVt}jE>FS8&w=>y_Nkv3t9xdqKbDCQZ)7l($1?&mFS6ZMc*En-6&n(5!}pQ z(f0&j+o9->*HZLr;jS5~=qp|PIe7e*G*xdq+!F7OpEKS`_$A)i5~u#ZA{4#oFN?4{ z74|@I8;}IOnpY=O2X1%7mT<=cVo3Hw@}VyI(ud@`J^W(mP533_z{j2G#M$9^RK`z1 z?wN6+E5e%($>+P|8y=D$aLKPeB(Kxr!F27dA&?Ti03HWC>+R%;a8Czj0TMnJ>}k-Z zhx}(;dOj_k@qcRV6k{FllU{eH0YiNjz|1CPTm1-lBCjB7_Z(}{>e`~SC$ z6(~x?zF>)1=!!TJ{BS%mtlXvlXNXh35`MQKqMr@Fj4xY|mZZDi-rK3T*%eU~BqLFf zi0+Z@YghO$uJB9XTYyh=bq11P0Q?d^7Ayw!06%P~+aS@m7r7!#bwybBe~56{rLT=~ zX7B{~zh&?Y!o{GGF8w7ged!yh3A;MvdRnx{72yw8guvK;&L9P08G!VSJg}7bEwJ<^bj0{-93Zc?Hr zkf6lx1@>$L&+A|Gid=f{#iRX2@dN~qs-jT?rQO(e>5`sZ|8FR`6Oar)gI_Y->q_7kuw>{OF#a}P z+;i!NBsvXD0{=Jt=MXOG+f;qD{}fjQ&$XZ1ASuy5PaglhCjLirhaFWVC6f%@W4##S z>Hh!*dipm$)^aMW1WUwI9tKFKsWdp-So+Mv2}M{xEi^G1qFe3^7__A;1QUL;!z@f&M{HcAZAbH(5)}C9-pK zgr%1`-s#-PF|}K+V{O+6$H{I@(qnV6*E3p%$Ev#>s`9!wIUbTigJlr*lhu+T<|3P6 zkmKic#j((@k;5;&k;9Q5lVC0==sG;tV#+7knRathER~k!reViP>fW@-V70mSq1c}~ zwxl-?6M0&m>_y4Be--=7to=&!QH*@YW1U}jZ0g*?5uMS*j=iDHV6kEE_(~a^#(don zlR?+>shpe`dd6K(I%hrQN68jb)M2}4Fe*mfs6H58Rx-H6JQO=%rzKf1O6PPVnLMLu zh%rC8wvGmuW|!r5Hs>21T{4E+-L>Z4Z&p=NXQ?w|U$r5sl&b2{xk*iTHb8aUe6!hN zHI`V-7FWb-!QXWA%q1np7I~-wip?_@7aL0QQ8}gN606Z!i_RL&lpU{QV@6t}!D2BF zMaEQs>M&YLE$CrXVzx=s$YB5y%0scbIc{e>UeDDI2(U>jJ(l@|-IkYav}BgpEW;_* zW-2zq02>Y$2))u~F&V9~gblW{!orhv;bm&;g-2o2EpfW#i;$dtwf4myAFdnuuq;kw z9vKXv9Lde@%uW}rqrSyxQ)!G$Q8oHGbBVEcK>7wW37$$G9tBW~WbZPO}0My+eG>6j|G-PR!QLY3v_cE&^t4pxI^nwA-e&ICAv7k%X zv#!fG!-AoLT%M=Z>(VI4P8OTnQ)C{B%fRhZgK~_;rA7-bGKRclP%I)I&X-kv5EV zid?PZ@~G)LZg-nso8nUHE8eZ@E0L`ni@QHPqet7u=;b8^ra@&e8}$=w#j#R;mK@YL z5_>$~LiM^voc!LU)ElR7s8w|GK{;meNDEmUQ+k|sOv&0&Yte%G%Gt@tVu~ZTr`6wF zT5K3L80SW$x@>ul(>-6zloLE$D5zdJeZxVUQ$YDf>E=VwZ~El)re_Q|YAP9|vzc|4 zvJ#zoP?w&SiDNGHqIC4{)vT5?qFgbKieASL6vY=}{Z<2np*>Lr(~BRP|U?dml~xKwpk)2oi~-nn*+Qbi_fp=2OB zI*g?TQZvSI{0|`yo8&a*sfP@8HWu<8EVbs&8Kb2$00l?ys94*(uBMhP&#mFum>uHy zIlHM>@6r;-z3dw`o|e)%{(S0H$G`f#+|rCA&H{r8r-wOacS$pcp+my{9%`q_lu^WS zrjNy5V#eT#Aq*4gH%aMwzh@PF3*fb$ie8_g=vO|a=*`^~{Y3cZ0RINo0-r&?0ZhFV z{rYT0zYX{nI1Sta0ukOC&;ujk?+z{iN`Y5_(ZEFD$tVQ+W+{3d&<*GZWEh8-@{BsP zm$NldJ5_&cyZ9-0fHCLlD~0OxsP@H*ODl{TyJrbXVV%1aFQ6ntfJc?&OUT_NnchRu zJAgI7x4>V3+qfhT1Fdk61{}aLpc2@XrRelW;J60(A@dj@6?g`afeKyUv8i8#qwdq4 z*x6?t(N8ytrK%nwO3n_80zcTRtAiW^o(^_Qe7b|R$1bjEOqXs47935 zt~nT@)^3@)0D{0hPshrD+gF{3-E*^J*fVLGWXGq^WI5{fZ&HW6KlD?wfjd3?9Buj! zkGodsr)>Y&Pq_)W8$RRNFlGHZKP3yi6TB2~hdI{wZ(4D@e{W5X-d(zMeKx&Mw+wPp zTIU>c_7Y4RE?G{uo|%1I?mn40eV%n`^pVLpqg&rzy?b@<+q;(|`nlouoW4DJX9wKIi2MuWxTdX!p>ztMKbXMoCX}zAz%%IM_dv(d~myTqdznyz$WKxfY*_pl4kf`GXt`4aWjQ%>g{b4CqX99AKbnfBDH8ws{#eh*7y-J74&r^N44yz~h z79)mqUDq^NBx^8AE3%q(rDad4!=+na9o=-1Db`X$i7pRwy0ugIP=loe166ox23D5& zLrhkzOJN_LCAU%Md@< zF}AR|=GBT-g?noHhnK>Pp=L`y7FagpFk84|m?g_M&2@jtp&1@vr(iVSvZp-%P$xS^#hvr10=`liQXTZ79#CAKgzl~Qc7DipS)rr7dR zJ3ALvRoUuFEf^L`)H_z{rJoWDEzzV*bz7vXy20e38JS}lE{55$6ENByE*=8%jRl6X zBAX8P!Q2IGMW_x7ZnPB?pqt3Wpo=UvmFN=VI<$+@VM5cjNoe0LsTJiItQh?yyce!B zvt_VTFFqk5Dd{0adzB_C!Ks!M-yz`vt)56(ovJ-%cvp%}y|!_!$W&5VW`hl)2tATW zu6ftp@l|8vol)ZBoN?@GB&VVpM|zrPN5caCAM^6it!f^0F14GZVob$l#X5}M4^|oO zb>b>OwW=#*dx?6TtG&wIaF{JSg(JR1byjwGsv7o>naFS^)oiP(_y=?O=S(s&cc^hC zYE?F|?micrYtA2@nqtL-QEE#aYAVS$4~;RG6qybAoeIiI)E!}Ds}YVrN&+29L5-yF zhngY0Rg57&KU4Z=78WhCY>W&?ZI_i|!-Lz9d1XZyT3U5T}3Xy(!#L)pQm@6eFt? zs|x0!=V7oY+pCm40v=4+)h~3NbaBqCJesgtDA%9Mum^=sBOa7h=VdQ)hL{Q>-LX@3 zajj7N2NO(4iqk#et`5|i4iQ`_d+1l?)uyeeJH0OL>O6~d)lux&P`dMXujaY_8z4XEcgISBM$BQ#hp*nJ_!63m9@OWWW%n#2TE_HpcCIbx^19 zR2@BQv{ElKITj8HwNtkG$c8L!)GfSGwzWviX%9|3uv)`eB!-J_`5ko+jK3(gdz^}t zN_USz6id9F09%lG%u4E#s)uME5>~WX|Q3D=BUUj&ds*HKAGesm+VjQaL-!rSL z%~smSdC(|%xx!;)hZouM$;_OVQM#6~vKA?`!fCUVVT7;NQfCh&hV<>7Ql)2M1&D=4 z?#mF$ay_QhfYUxa&Vp^X)fR&lih6pNg9V(FtUwnD-54uYth!Fnm2eklgNCRRzRm89StzB+YkX|@?!VhnKiBtNLN(ltXyC1piL z&~yi+OMtUiiDj@oJjK-~TEZb7mG@_GiN3#uB zs=6Mfl0L61bqXX*6phZOtkfWNiK!mSWn&XuI<#SH=f>VM4d=z;PQ@9nrsMcz=o2+v z`iOmeXkuttk$Pp=a*Ij~L&8&Wau4gAmjgKtPYkn@`ZQNw!62s*ojnh`DAtgdS2U!E z($rf7I`!B~_mB#>DP^rl*2|k(Kt@lIPT}+l@>{^Vj%ZXw;x}QcP z_qO4o7%8!3MYz}q?u+SK(p7_KN;x~rQ&oWZHB{K(x*PNB()v7@NS6~h2m)lSA^sV{rI zvJz=~XQFC*Ll|qeysUG!X$)9)8c1TeGf7k^&i7PHo-uVXRVOT|S&Y)yIyC?X@dljd z>Pm5RZYYXzZEj?@>fU};RZ*iSV+(MSh)3SkgwZQxtD<%aXuE=(nL78PkI0{%>DHy2 zUJ~l*3vKz1aL&%w>ZLtK-`x0rl>J zE*HB4Bbrbydl=xH9nhN!A$u@C^f3tVcqMj)*x#E=@~y4Z!`b0zIrYRBeFGa2=Pvib zxMtkM)5+N|26voxddb6*%G8FMG#TVES=w~2;YD@}R-5}GB|~W`n#+0a?Yx~~wGA&a z#z<2-Cm_dwX;0Mg>`abv(=OQ`xPsI}YIjXVxvl`IA64eQ2%J9GRY3o{1Ol;-P_GWx zRj6Jd4%_r-d$A!eH;&{tUj0p=`YRNDC~lty)Km1=3-EZ{AUt@|7d@++qJJGHwi&s& zCEi)l|2|OB|BBnMrc6AY)JM_hKZ#RWxD%gN^pCx$=r@7KAe}EE3qYEkYD4Cw=vTv^ z0eJyX+ui^V3?i{W1U3aGAklY#_kc#ocpk7G5#GT`uNc+@XaU3mZh1|_`>CaI*$ZXOVat$fYC>U=i>>@F_48 zrI8X{MB>{IIBO&k`cf-bk=_EpU27k}y%E?6c+{A^s>*6NsIInKP}0ImcMV7lNi|9p zzBs^Hg*S1~?yg3u-ef=lx`-Q1cLxU6gW)4{6#divP*OC9`^>Zd=YGmsVEgC3aNtmM z-sctF9WQ&^J4Q#BLgs*en)4X!8RW zx(!U|m6Ycyy30aT&d8BZjKB?1+@Md6>xf%eGUg@6jWiVxic(K0qRi@47F8Oho_0jZ zB!HRU5LH%GQFG2=ZJiM~p}}!ya-p%P)NyQHaK-Nnc4{4i{{5+=&$31i?ecSu_P^EF z#LZaI*y(UYuV^GLd)&wv*U9IIJaZ9Jz~aMISvdH?%!&2A45~5+MB>aUdZ;PiR+x;L zsB~DX5jZiyQbA|SAA$SvrA3C}$+@x+8|jj(wm)whUTW+l7QYzvH@Ur&``Gglft{>n zxy7dHXjP?lC1b@y&frU~dpI9HK6gAThd*^r_ArE&wMcHJ;V zB_XYJxD{S#^GMTaV**-77mq#M;~mwsaJ$u9k}Rvcm;|d%UInNwZE}gN&{<`Xa$4MK z#Q(rRY?&g}5eQdmf@;a5Y;5~KF;eno@yAIEcNg=+Y{UV&3IX<3^6)l z=LU6=fvnZv;>7Ny2C2T%Ag_!i1HtDbLmEd|Vf{WBiI%Tx`nEFETnl zT@lCF(qs)O!d=ke+UMQN66c~5ck3R0R|KcT&X;4b$H6MtW-GQ(t-9`+g`yn(N;Xgg zyar4HW&`g#{2k@1Mh^M~?wd2=2lfG3^ZXUt3t`Gqa47t*!R-yc2EBQ3e*|nq*inGy z`zv3=9|(>FN+G)jfBr&$C2A4efCBmZ3;Z1;-haiOcqmlygybcD$;(qN?*Bzz$}=Xp zy{CJoZCkAD`^ZXEJzA+4{6SsKprUvEm9tCymHvzUm9Bsop?fh*NrZb5!Xn|G1bz+p zUl`#yzWR0h`^)^5@vBg=;Kb$5yyB3)6xbX7K;QzxnuGrrc~#vzjarQg2VAWmOgZoj zs}|69xDT!NcidRh)9(F8ntsi8JRxt3Z-d7(nhW2EV%!1`Z5U z3V(+2;H5wNXREc)AD$#&I|7=Yd@#d}NI-#X1$Y?3?|^55UxVy2*bnh8Ko$v(8yHsc z*t#FR^0wTEWk8ex{Srt4G61&~Co~O|I@$)xKFE@wH&fR@i38l>p$PvPcn#r80l)AD zN>`r-N*3HXK%pV5;`vYJdq4j|L<1!$H%!q1U&9>)vKoWPy|vVY^rSCNZf!aQZBZ581MPB(241pPt4HlX%tMV|xA2hIX^vTD8AqWx&WmnSP2MFYJpdT z2Pn0{7vQf0)fJ4ImiRB0vcMp9l(28iKQ0 z1}KfdFEk8Lg29U-1C++#ui*~?pKTSOGzG^!5uk*D3mXL}eZbT*z+t{Q-2PfurvV4R zV$jZBPXGFBXF)=rbQWOPQ_h0F-`mMaeVi5G4VDVnhj1xyB;rd2t#E~Zl;sRpdOE{% z;GdKcpd1AfGXw0(q|5;20+7)qK$!1CiR@>>K@7t~IFWVjaaMTVn*eLx&CTY=2Hy9X#U zC8MkWNBvtb+9%mj%OfHG7ZL&=0=58>xchGl!dAS7c);vIxNL#-z!qR1un1TIxb@w< z6S7ozq7YA7I1A}W%?5*|W=Fji;HSjFQ3M6)8~tAkaNNF?W-oL&4d`0vOjOtnsFA1q zpZr-f(btiVJKm!hXKn+m#REz$=DY!=W<0}-Ki>}m@|A0IP!m8RFdlgAodBg2I64=# zH9J7DZ4FRTwmXgVT@s+^mIWxo{*CYt0+ej%j9QFZd>73KtX~wMBmwK!LT?*t`b+ee z!Z62UcfPNExn7{s)h|#9tQ}Z!|4u87Zqi^3&%dLp!Gd`}u*<&`?&Q@#EU+r_oru8lzFwN??I*4FQ}XfX*FQz>|8$^opmU(|aO4ng&ExII z<2k^@ZvPxP+l(c}vwx2~)LYZcXXfxgrOvB?1diW!!qjCT>5I@7+e)J0wh9 z2Vi!rwARox)3jWK(6b21nH8w4fZLtyTDT8E9tHW$w*$*Ju;v|m=tfjL@X=?m8&H51 zKq62CWC6j*ViH&uR_??yAS>F01sC9!xmlLb9%enTy!KoVLBEX}C+e#}B?SltRsgcP zD;)_r7 z{0N)}G!bd~x*4Jl3@H8;k74R?cWS3i%=EJ=dSOu&DJ_WV_JAgeA<;i}U z=X71CI2&S~i=~pA!#xTp1g6Kwb=~L+J0U!^y5U4OHlAV=#DTwz>CUjV)2em)&j?bM zj>IYsVMwcf9r#6e6m&kC9#lTqU-M!uO^Y;rJ)lX8^6&gLFUL25dnh0Y%QD0Lr$FX* zi~f=mX?j^^yfZyMV8$x%WJzZPkPjIi9Vo_~S9)zoBjxL|M#^j#j~UuXNdm0Htpkih zY@~y3otEXB8fcp2UEUw090i)!Z>S`GkKX!ckaFQ_kTSk@LnXLYLnQ~Y_k9~G-ZdL4 z`G<1ppcl6lzu2bnnQVAUlH9*u@b3z?Uv4&*+N`MG4GCx3pB=^m0bhD@F35$@It zhisHD+0{sHVQUCU)|B{j%MwK<4eufA1es(k%T%qb7x32wGRfFe)*CX(*i+UYGGy$M zWjG@nAe4+f6<-z^GWL{NMHc9c4bpce|RI(FK;9x zz$bAU?-4ypH>c@eoP1laAq@?K8@-8Ypam}X3RYgfgY|n>u<{0Y6xio3(LBg~!54Z4 zD>cEh!L`5{J%h`8uhK-n^f3~V?y(;H`W;`*R`5pPjXSWIk^&c8su3xQrJmBmk7zmY=FSP0oD0psg`OwvxrnTwKV0Afrxh%MR z;c87#z_4+_>Xs&Mbg;Um+46dD`Ht0^-vhQ!4^}!M3EeANb)|fHZgAy}HJYDmKfmJb zFy-%TQUT&_#;{g#S0-xtmRtdcbU; z%U{(v3BRD$9faL(qD%w7b+;ORaQoe@Y_V4prfvUgVu&I*=YdOb3!ZNqq6`GwoCbFa z04^W#t)^S*6N5q&L4pf^y&R$x!>#qwP}C7cUwl~6R~%2%uLlB7r>XZl8-YWBosX4k zzti+-y=-!b@(pkb@ShT*gaWxh888pH4f%5Lms3J2?cZsB(j-{$5Wv-Ryv_n1159@L zXSv*qT=Mt8>r{97lmnU;4X@k?QRrp}>MTS_0wRHso0Yo|rm=^76Q+2gG5pPe0N{_W z!<3(aEpU6{Mfg_&JApVL3FroV>46fshXSL3w}5$ouU{PueBP8SmoI5atEo|G{z21C zV-JoDRUXEXmZ3^h$WMSD4imqGg#(emAFV@`B4E}N43QHV@IBBJ zvZe_=-Hr!&9~3g%gevWTSl|iZaiITyfv!zxrPq%bV-n;fcKl@wYwAgDLR_vPe*oTB zH4GnsNAU&}8A}G?^UPhqkq!WDnEZz^HeQK*MgJcjoZt+{G^Goi+_dcuRa+bbvRU60h9u2 zM);Wt_eNlthwSE0XtQH~&!3J%26;HC;A!CMeIE9G0Zo;Uv`v*0h|?c9 z3!PEGM!08#_d(x#X;`J#NzLop8oHZU)0e;dt0qKUsJ#cfm7C?Of6=ti4!l|ZgYc-E z<@dlf7D2T}`BT4Y9^=VS`}}5kuU`>-_-6TnUo~OQ=v#=cs{R%=>iw0bZ(W`83Iw(M ztNbFOcn?lU*H4evRVJO*WO&)TdZnvtf=IATO1@y3sLpDglh;nLOlT{>GRchx%Sy8l zEV*_CcLqm-Gr+#!Oz>Gvx?WB-cY@^*aRpdTHOGUyfK$Lv5+zb79CFOLkJ9yW%()gU zOVerK*5C|q6u3D!8thH!m9ghEO*Q?_ph_fZ8CWGozDrZg+ydOW_xEr~QNl+7A*iE= z<7=nKhuAlon<|2(z%)P-mx)|*^1c6Hq|3-u%$D#iK;R?7rFarP3eY_wTuzZa{-*2e zWtTQp2sn$}4*;ks=lUM1QAokHc2|r2f~!W=^*=03dPF#i)yOW1DnJ|%45Yl$R6S^x z=9Z#mJQT4IT|w$c!nXj~j|i70mhe%)3y%nwuHX$IeLEFCLLtMYumx;;M7Z=VNnn)V z5#iDYWlbvunDmHnsTB#|B3q`pk5G`_APS>^m5&IQ&aXBQGWhfn;nJ`Yz6JR55#drh z58KAHkKw3<0O0w@Y^H8C2xbuOq@VWVQtn zLZN&U?yrGGz-z!jAPexD)U@(yV{LTp=m~MoQR;2*$AHxJ626!?cJ!g(fwgkLd+;Smqa0$1APh&Ke z7TyiFB>XKn9*~TG1WW%t16e z(>vCEycNWfT`c%dR6sMh+rcerdT2B0QKG-jDYw%`I1T_(RtfkOZb|gvjL$9pjRX2hRayw)?;(`w;vUpo88)u;lSG_&Oj};n&`o zM<6%`kV3lt&}S;|L~4t??OjuyZCebM4CjGG@n^6MSs{9720g(F`~$(Gz{9{|^n77- zj@`mY;4fh$5U7BWfFi8JWFV{%Efz)s2Zc!!Lb^0@Xvw0oH!W1zmrkUWYh$#j&wF3S z^ajMO#G^HU`ryUy7+NkiRRV!w0*?nTW?sQC283S15OlSvvJblRpc92O#vpzM+>?NL zE5pj?#%Sa0@_04A?_;#!L2I40EU!>kfbUJ{@S1i$UJFql!>9DPII|t!Ps$u- z%#+u2@Z!2FdS5*8h=+I#MR*`HU!EX$ed7S%E5Iw{VqZyFajw&5^`SvLMn@TV0LoON zJ`V2A4Q~mkFJj~E7PGF{Y%$_>X|)JOc?k=-mDts1-|-+`o{{h+mtvFEipS{i{&R^5 z&s0fvZo^&QvOrN#4s)3$&xpseti!2`m}8WWa#-=6iP>t6b`=^={tbSpBGgO`9yQz5 zj@NQ@cz7Of)|R-xbhBVo^iXCsBa+X@Q`bnd?1;6x!wa-Uw|q= zi6mk9lz{soD0vgcS(R!Qc+k>jM-%1_cfYfTuS=kw3?+C`O5WU%nzrI)GFKxzi;Az9 zsPCttB9MO>-fNeJl+QZ3N+)mQ;gLNfdXU=sl!M1Zovl_~VeUwFqxxo&SXx$s)<$Ic zmY4J&X%qEXNqJq`m6SA^wX9U$B0*ug6%`o=;X@f#qj4~v^)lo~tIyY}9mLr$s|zHp zVWo77c`yoAYAQA2eQ&&xk7w@jMPyX0s}gnC{ozdpw1<3aOkD2Q?2v&~UWs>Gt{Pd4 zE{*p{)EM|u5T5ka$+NlCO?};{z=TS`1A2JDq1xEo;rN<@Ro-sHM}^3q0kh=+-|E); zTTM8FQE~%b#6TStV{0j-!+T7&BK7T9SgqEXQ||7dR(jfGv6Z2Q@=TVzGLzcV2H^o! z%C?woW<0g1vpcWXe$KCaNncat)DuND72+K``50HRT$`g|ng10o-32Q2T*l2tI@3 z?i%Vxd(xZ(3f>qgHsPUa>E~5FL%OuPC@zKSA`i8g<&zF*CJZ`ue9Ax_Y{)g{pyNBA zFl)j2Nuk7JFRVWq9GXO8#KVea!_n z^}HT!`}9MbSAu3qt+kBdwCZ} zt>$ceSHdK39jTK8hAfnrUxD+$AHZFpW`i)LJ`ekc9sm^w81|2g#To3NK#oL&v@N10TBN)evV)-n_$y zKJn)5KD5Idf)n2SjSo$!!Ml8DK@A8hYw(XgbgBmb;6pQ*_xaGr>~-9S{$#Hj=Y43o zPkDz#ZK}OaAS?-sc!3JQ_wQ@ot=|Za2>!MW#qgdsl*;e7p+OK?`9d4|7ys6VrfB#; z8>-MixLL#F6KR)*-%O;#8otzqMr$FSs^z7LG)K$tCelhRPfVn}B0i$!&53kc%NrBv zx|WwG(pcuw`>7Ez=nMhN-`FJ8#ctgC|n`gGA zUEVysEgkme+lh2v#1m`qnzl5n2EX5ymet_$wzRtj#0P8e*KO%!4gODCx>AEH+ETgP zj$Oihwk@q@JOA32HZkvQOQ%GBiFr&ry2bo@JDT9b=iAa6ABZ>j@S=9~l@HHrM?d)R zxOQ|~#N&K_DR%b&KR#lF0x9qsmo_@FNzYDXu1`TKTs#g{j?qw<;%FR95_+tKQp ze7PNMs>w&%(W#nt$S>98Y3=D&O`hDICe-5V?Wm#_#G7mJ`|W90Eq<>(9j?WW_B6US z#8YeY&h|8?HhJ{em)GG@NwlsG-)&D@ z>+qTObVkHi>+rlJx>two?&h9ufu58{LM_;M1RtjE76(Up39Fp0|RL%gIuPwGIc>+@S3Xj6T@3KbDw zuFuOm(CzxXv;$4_i)t^svpgI2hQwLh< z&pSHMUJ)Ph=Q|zfv_JpVfv)@WsSY%^0mRE2aCtJVYrr#;X=?+%-+|7E_-X_GD4Fgx z;182&N&wGIrV6?8HV5#&WZD(L-`JDsZ~#{((|wUo4CD*RG%JvQOQvOkyg!+C%jIz} zkjHnVlYu;@BV7sPOUYCo1o4s}UfPjX2l2ZdX;TnS>`13Xd?|>xbfjBB{CP*3(2$pR zq>6?RZ*Is(I?}F&e5fNGZphm@(tU{SG_eui>`1d3@t+-OStCByk#@@!c(4)AOrevF zczOz5X~efX(%fK(mk0CO6j~R|AEeOMU@lLgGa|kk%)3+QUNG-Wp(%~IB84g%OP-DS zYzpma%)h44;l{i-h3<=ZViO+IiDot7*E`v1Sra~=Lc5zley|BI>O?1-@cd46r3sJg zL~}zRULL|5JJGrjUf+qfhVYV3bVkHiL-^4c5l?K&Q&VYHQ=XJc%bN0yPPDrz#P)+t`TbNn*_7W)r7KN&MkpHpeVW4t?+);tFBhR67RDt+}B-$|t(9^*5q zbYH|1bv#c`vvmB9o|fr&w4V0rAU>kw^?Ew3}#bR~jUDOBDZ;wARxd_tks&G{#VHZ|w36gngFtIhe2 zLid{UUkXimoKGoK@i@erALrR=wCizxJBbU2nmaX*9Pb#LHXqg)~~%l7CC1t@f6@KaI|a{Ax=cpHBB$@|)>2 zC6X_tQAH%gn|D$6~qTy@zHcT z*@}Nmrz@>^TRN3L0r8S2_(nRdeuA&1)21i*csiXD@ues1JhL<1dV;5SrU|Y2RytL* zhJ15tUfY>=wdM~x)8W=!-kI);cw!WP-I-=Z@qaqgvM8?TOuM5XJ{ZMkI@8H0{-rZr ziQ>JTX>K&c%cFTr2Ca+c*E48qG@tKGXGDB8niplzy=b1FK~rMvJT8MOV<6ua!y7Yb zPYi#WLC0cvNd}FMg?MT#AIhLPv3wwdR>tz?4B9K=Be8rfgHFft9~pE#mXBo6+&GAr z$MLjGS{KKYGihra-^iddBEA~Ot1{_c9IwcvDe>&cq>6ZmH^;MnXD026=Pxtqa6GTh zr28VDn83ee(yRpjITPoKygQS2CqR5Kf$wM1$ppTWNmmm1OeXDYQ~p~=?GqsjnSRlJ ziiN~FZ(hsvyLTLx3^n+3rbFd1DcY|3g+7?W=lRf8ZL0;W&bKvWzTH=Yu6Q+vWU)72 zs6nf}`L`Oh+nXUd=02By>C*-W#_KTgrUT0UaDHn{xBPTD5++4ZmzxK@{zY91%r zui?4%=(^@zK!8tS(D$WPX}u<+~;fZr26zjEz!AMi{Gh_nN8di>+rJrly#+!D9x(N z74>O`%tTnYbj<2LnQ5Mef388xHU8h%pyL`VB!{$ow+5Zk`roQSQ@l27AlmQkKZ>cm zMhCdBl}Dv&+u0}7ee&f!R@$WD?_Z+bnkI{1q9xi7H4vS`vg9SY?bUg=mA>=#8asea zdWZb{66&`vBv?$W96-xB=$r3gu}9bR(1}7tn;JJfVP=H05yxRME7_H6tBv z$|sC;p(%fDq)}nK-bfR}c&U+=h4I@)8uu8FHqu3%qpLb}n6R~FKQa9&_|RXNJ}F5Kp}04o-FttEpw zt@+<3TGN^rn`m2WUTC6&t$Ch_&bQ`wOfrVfGSQ4Ec9>-NoMxg=qMA%L(eWs@PcYHd zC?02`u^2T?KCP!OdF_@OO<(Y$NLt7p-nD(^g3op~jwtVPiy3)4E_LpgHJ6`)Tt!c;eUZ(Bs zc>K$>w;f+I(Ybc~hl##w&p(=IRfjMb{X++SyNJ$r;2A}9zXMM#B1bY$Dx&4d{8kZt zmds;|?6fDDM;FntRK=m$ODFQ(J_kXywxMd2I8v_#=+ z#k5}GKZEh=q|jpl*+sCv{G8xh3}YYQy2crOnbUC zxo)N#UHGb*COpZP&9v}I{@qNg?N9PKGwphk&zNadSH4g}GrCJ=OSCf%W=Pk6Rx1G;gXj^ao)j|h*^GOSx@6E?8biX$r zwU8s5f3(oDZ2rMQ8?t%7h4yCiJ_{Ym=5H)?F`IW;=#8g%hlOT56|vny6Z`Na3*GK3 z8BEOK*;ZPR!*62*%;6bU`YMN~TIp~OPqNa*9Dd76qx-RaEQa!aJlaaD`tc~t1O50e zO5BfcS?E|lzG0y&{rDQPc{<_`{651MA?Ys}jDD8CMBHb2E8;%Oo2|6@S>9-+{m=5J zRyy-6e`2Lu&vJ#8raZ@MVajtMA6RL}bG#BpJjct?pwIErhE}@q9KUO&8PD?qD_wb> z=UQp+OXbruv?lv@jjSNs@whtFgU8gN0sML$Y{&1_rZ+TvyEaYL@Xgw^Si^tTrb-Q8 zsZBdHL6>UNX$@bfO;oYr3AgIfa^@R#sgi@R2Ka&bkGisXzF3#8 zFrTkW_p!G|s1N^Im!|mgggSJ%cI7jf+OZn@?YP)CuuQ=;yL-G=Ru1byXEeMNbW6k2 zK;yK0XPlO1Y58~1GA;iEs?hQ`psiZ|9E8J!4?tLL%m-c3@>I}RFTOJt@w_6=f*jub zJ?Od|0Zf496SOp&Ww*JE`4V!eVE!4joB2l&EWQN|tW0izmih2CP=ycw0ov-r7eU|o z@Hxv11<37BcOHI{e!mpMtl$2j8)BBT3Rf7^iS-y`Hjh1 z`bs?eYxCHNS~^*qM}uzH=24(Eb@=`yEtUj)3-m)Bz5zN_hp&OK==lTmMqR!Lnp&67 zgBD<=09sX-e+7M3mrsKB)aB!#lXdwh=t|v)A3>Mu@mqFevD*)sAM@j{VaP>s-}d8K za8K}O2WW{uzX>|%&;J3P_vf!b_xyPqXkr820-Do+KL@RBz@LFC8*nA)E9|sE`y22Y z(8&h;KInP_eh)MufR};h1lS{%2nX^zpnI}eo`_xXR4pxR$U8yUD1QXn+K?B5_BQ0{ zpkodBb?5ywGe zvHhKFhg3GYQ$qOmbX1;fV^@XnWhDPu2>%Y+AHwHA<3jl?6y}EV0no}&-U6x&2(3F1!t!m2u0e#k#H-Ppu(`KNx2EJG%ME;ZvxP#7J~Hyv7<5zfDW7KZcppw;30 zC1_hXe+)W^H3{fUc+f=9*a*Ih=#B{fUDC8i@K4}RBKRB7t_WTaIvf$P6!b%Lc8E}R zj>lT?No03X+_zisI=CmaI`NKZ3?Z@(-X{k-Q(YDw6ks zuzmanv^O$n*G#RQE=KYWcyCAYcF=@Y`~_%1E8YZJ*NQiQwzi5`55hL_W6&De;cboL zd2geA#f{avn7``is#_%oB8?k%?Gz)t?(6ZQwKR}D)_#$Yk?8Fu)@JF+dhPbyT z@V}A5-UMC@I+MT)L37*ihfrA4hF62Ow&7Kvy>0Bg0(`6u{~L6r4KD_bOXP*1^2CPo zK%XS?JD}}}JPY()B0E4Q5_uZvb|Oy(9mC=XS!`{O%=fnEUm!Zwo__}2XwSz$W0Uv@ z$dSZ{K#P<3dr)N(e>V&Le|Hk^h4)BO(AS__N&FwsxDNakXjTW_23pyHw}3Wv;LkyO zIz)U1+Lg?eB1}Q9-=*;Ua&%pBUrOQMA-|Wx=RoD1_zY-wC!Pa^i91l{h$ z_UYgWSS^7Trt(BkMJkU6ZA%S$6Ld0_-vC`o<@=IoD&GOk(DPrQWqQ62`a~ab6|_#_ z%OXsN4WFg+4~Vr(+y~Qn8QiDSc?sx#IxhlMbmsk_9rn(=5Bx)C{swfaGw%Xj>C8Jo z<1%~g8qk8wi1$Hry6}4<>{X=kuWJ-T5qNY>$XvL2qR7NfGvh4HJ6t zPNX=ymmQvEy?8b}6}|Xv(C%J519ZO^e+hE*=B=Q`y?HZeO>f=^+SHpr1?}(6pMcKv z<_ge_-a%_Yv$FXE(2{Ik30jxU%Rygd^HR{^YH6gQ#t$*6t3j(BGCODo(`JQk6#BZ>BoP(gTCC4kAime3)%@f z-H$&7UG2xKKyN(F^Fgzo=E>q8ftStK()t%*=T|TA=R~}CUoyz08NbcYHUhl$pE}suC)Y6@NX=fvU3Q@U{KLM>V zas}wTk>^3-mXXIVME#E|;J+52ehT!66QL7x@!Mo{I;UueXLQANB1G^L0?1uZY)_dvfDd3_IBUChfC z*|oH#7>4dC=HDSZQq1Q-SBv=!XiW*1FG6=K;hCV_B|IH;xP+&GE|u^^&}cJ{2RY0^ zZ-UmD`3=x!Gv7z_J!ZZGI%(#=K-bND9W=Hy;wtD~DPIQNwp-?FmLbX_8!rN_w()$> z4jaz_y;bJ51hl7&N4<+Nw+wb(EaNp0-7e$zL5?B(o+u3ABcP*0_z>va5dI!?V+el- znlhC4f|d;BuR#?$o}_;CbNP;CH~s!Lz`Z?6WjM4mhTiW3L0A3!V&K37!Dn1Re+e4m<{YvRo7K zI{4UZ4c|k?-^~%TPUH6%NUy8D(Q`HY5qvYiAA(nbSA&m(e+FL#9|OOEqfz@2IHtmJ z2)qFNJ-7n=9e4+LFZkd*P0-ii>+t^vJbJ!{zXHzyZv!s_ZvlS>{v5n(z9!-`@K*~o zTnXN|NQ~Tr-}y^my6QWR-`^Kw{<{UoIVd^a)$kec4)7eP9RZhv&w*!xZ-A$R$6{MM z1w0o#5xfRG9=v(6Cg@G@G5FsAp9kMZdbhxLz*ClJ_%HBc@OALIC7Ot|4eta0Kg7KYcvZ#K|3ByKb0#^to^!~JYXS)p z6cLqHRBE?(R8+9EMT;${_4VKK_QhA)+Ln4EAYizKi)`+MI|2p>2nYxPVn9T|5JLn^ z!W{tt0Rg%GKWlb!l)m%pP(JgIBJ`SUz_HMjy?36_EH&!qmlA&Ln&2`&P!>e01kbMg3^sz7z;f^cco;kfUIM=X^NT&%C&B(p zJ^DC!eHrDKauuvVOMp|s@!$&Zoe0FG6&`CUxOk-$d;`C`;VKNbpWpd#r@*=3;15ti z;5u*@xD%`Z_k*8-r@(FCHSiN~%qoxG49*2V0#~f^q;3E!;n#tY0}yK<&VV0)gI0U= za&RKJ6r8`>lf4+6vj&|gJeG>dv+3&~XEXRcKxidc3!VbM1ZQ##VmPsi!F+HXI2hap z4g?Q?Z-N&h5Z6dBxWtos8JtssVgZ+e-+~*!Ghiin3Ooj$056qzvcCe)toP`{;Mt9y zze%yqm7-X{{vUbt7;q9;09JqGu_l0H%cR(I`28GiWm!bnGT7O$JHZ*?ac~+qa}#<1 zTmfze%fPMRPVi%JKUfA{05^g|H=_r@Nt->XAA+mkSAmtzl3&8v>s8JDoBE=fLm61M&5eq7{h~H{tYr#F>F0cw5`YC#VSku5EU=jEhxEkya zZUL_ouLisVo&~=H2W<1Co}bP5pRvuO&l0c*JPob|zXr>}W8h)%2zY**C;K3HW;<$B z!atK@UE+5WkI63=&f(XAn*)vo*MXzJvtTJW7z5XOa2&W6oEd>w4N(lP1UG^2gL}YY z@c2$o>LM_|!lM_04)`uO2b=@00%wBTz(TOP!jnA(-2FLPRKj;jvG((uHF?|&ZA=0eN{mxD9Fjo>t}9Gnau0VjZ$!ExZw<1AXh z`NvT%;0ka!SO(^UyTQTWNpK)|?Kq1T@X`sC9S=TvQVQAs6pNM!!37XXP33nP+yZb3 zxDhM@FM#{Np{E)D;6!i_I2Wt}mxG^!pMd3H4Y(aVb(%#BIN}?W6*vhj1LuPq!L?w? zJl=mf#D@gz|AtiySbYX<1(u(aVjbpp%DeOu!wvWr-GFQ~cnn+s9sz5>iNrb!I$;0v zjDK(>I0~E!jsTZ}L%~hp5O7!IJgXLn^91w<2V6i~$pgSE;2iKfa20qS+;V|c3s`m$ zWhLR4q>$VAtt54|;g0h=2ksI$6C86H-2iR^cY=Gs9pEuA@+rgxh%MltE9f$C5?Bf@ z0@s7h;2+Zd^;zDrZ0B`oY^LhV62YU5E9z1N2l+xk%8^m+Kli&)l61*}* zq?{_aa?5Q4T!+QR>mG4flmLvr4*?o{6+nh7fDvB344CTGOMnGlT?DN1>IDFYI_CkE z5wD&N9`ouMz%{R)28^(>Cj$d~`s1q}wMRS_C;gg+P}hVWs`Wv{6Se*vz;96o9MO6g z5iV<80gQ;zp8?}z^fq8-jHWf!@)*4t_#{Se1op0dEFOzhfD@~E0cuXH zUIuK4)k}b>0eyl;T$eM5BjWYm0c07kzW`Rm>q=llyxs|Hi`P2<4jz6AoQc<4fWZlR z6W}DImIBKY^m<@pf?f-hCq(pW@Nj}&30z9h?*sXX*~I|I9KPh?r{tty|DgWjEqbze zCuRioA;gPU&v&ITUk5eriFiucHk!+e9ujnjOaXGIED`Sf6{FiZ;=;z|1CkD^T1-uLL+~_b#xFQxO11A>IZ!3vqS`uc2vb zExeqzQ_a5H`7OeV_9kP+`-ND+##Jxt;|KZJ`T*i7oV1yh?Lh=u^P*7J8rfm|E!1fSMM14RESO>O5dX zHm6O&N!j{sV1Bm#j!f5P>#u&QC(nUadLwY5m0k=C%GHyBF}Zp;Fe6uA9Zs*!)n5ajwm2)mC2t zuC>+Q0i$oz=Ycu5>9fG{+pP@gG@6@HhfcAPl;I!9kfw}EdR|943^-5r8d;LDJzr8L7&bQZ# zfc&56g}}t0WWNiH`>CEIfgMcC%Y`RmPLTmm?uaRC^4PwF|K=pOwIu=*Z-62J*@9H_oW9|g|bqYnZ7 z@6Fy1T)S7-2zQ@xYK^{6O9SC#c!wtx-KR&(^CI`@k>F)q54gJWIjR9ToYequFZ2gi zb6Nwp-u9pCD?rW9Q@;bQ;d%gu+WIUoks}*Gk*$vd8*Jk$EVr`{!Ig1>gC~?dSnd(u zTH(WbF;MidUI=W8Jgi56Z$Dx!1-5Yx1CLVeBc`Y)AJOXxy!?n>3ygVGuLib1YTRYj zj~aK`@kfoj?9!vgT{g0lahJ{Pq{Usfv{S0M%gQ?$Z(U6%F_ee2LJZb!Dm!33!HRmafzfOJmlqF6t90F5uCM z`U-*DpVr?2I0ViExBzO!Ez?DdUuj(z*LQ?_0Pa8+Jq5VXC8CFbgS)1l!+|xYt3CuQ z?W#W)cNPaYfXc4=1K?O!Jqx(hHM;;f^NhaEBhGXy_ee3e{z{73q%dz_p>uyRqvAbSE;N0%I2w2xWq8CVYjQ(u(PMG0Y>&R z&Vi}DjB{W?FFhNtz^Y#Q9bkJe{T6Vbmp+ZV;%u+fy};-f^ryhI7xaff(F=MJu;B$g z9jJUkM}~oiU&y{l-n(DaM}hL+Uy7GvRJ^Lsk=_1R^(o-`tGW{S=)bKiK>llbCs8K9 zW=cB$H9Zk-#cSFDw!fyw0z>=iQea|Vy&jm`SFZ(@_tmR`Px|VWKuupAc^^F0H?jhm>ba*!0L!D0k%Z+LSR=!PXP`` z^l;#EL|?_PF)|OU8aOS_lUf0;h5rcr1biRd4bBBmf)l|0Z?XddN5ARG7T?f_{_Kds zK?6NTL(Ys0WSvj`#h`d$J^{~z*TJFFDdJn~*|6)+1rLJD!5!d6P+SM);1ci%I32tU z4g-e{@}ypvMk@|t;|Z<+zW~d?kHOubxMU(HA!b2b8|29@051(@1404LyzQ27WWHi3wY!m*HC&M6hrCAajv0sBRE&=pSvK$rgldyEBlDkv7*Vo)r&8^(LG z#e%zbf@{HDKFO07k-@QZ67Pfv`$4gBUIxYJx@fX%)!Yb*RTDpeG0h$Z#rS#_6yt0E zDX#I=0mb;b02Jfv>M5R7F~07G7vt*@P>iqVK{3AOPsRQt#@DG+UE^!fR8O`TU*}JA zjjuDNyG^)mI=z_iZJ<~?kAPx!6(4|DHN^)YR?m%~SUt-@v3k~kVun2liWzpmOxFzS zfMSN7J2T=*6+3Jh0b+*T35pqZKPYC{^Prev^Jlqc*om_|*zYpI zf?_&d4vOh?3n-S;YEUevC*SpCi{^R@^dpvD5AZ#ZJ2)d}|Kl?>vMUYV()6hT4fsJ=tQY9khQkKrwgj0>#>S929HkDZUMzMTMdeB_T)-Ww%BIH*C4jp{i{8rJyNnOYg~J0{)eu;b0#SE z&LbasEU||cuXRn5rJ&TH927fh&06}u7*a0~AcoYX>%=BWkwGy@ZU@CASq+Lw@+>GO z$-yPANz%bw(XJ7#17z5+31ZXrMnnY%zSWF7{^vU&*=%PKAcV_BVwt3ZszeF zV4MV_JyNoT*!9JP}EBtM6>{SYmpu#*8oa#M7YE;2QX?*nfv^cP+XzL9yA^ zfMWeT35xaeGAP#1{2i|Ka~det&!wPPKR531q>A-(KfG8!Pl00nyatN(bM$BUdcZlL zSU;D4=E)Xw?EG?cOaua3{%DUBt>kmuAK*4n?6F5cvB$n!>9NF|yT8(77Bl^KxfaTi zpqNbOf?_hQ0Z)Qw!QZVX@G{=M{ucX`{OwDEQD0^uXRq`!f4!EeAl;B?|0 z`!Yf|gSbGzBydnQ9Uq(oz5^}-M}zCCnd-o5_+j92@NMuCI0zh3L&pbafO%kX4O5*w zu$GPwPTh|>l#;DH$WR2!z`0b_)F*Aem?O6-2{FvI0ak> zP6RK4W2o8Ci;O^U8aNy*0`tMu;9zhII1sD>-vrNs*GNC`JDjax;dk`^ixBg_qe;M( z;2CfWcnYirPk<-C!`lkhVBnnv=3TAp9N-c%cEBQV0XPmEcU`RV7>g6-JKuZs29NsZ zFHOKx;lqADA=H|~^s{3g#tJP1rstr z>ocixCss6D#GB{1mjFm`>Vs$~9S{ti}r>Pnfay(X#OH-F(^_Vm@DIjs?2K3}KwLG9F zq{(N2gd7Oy8ENWFKu=4f%_L-6oSv7aisJO_G_~D??1|GwY3f*=qNSfMYf;fD?DoxJbuSin^5+u^d1YMG*rY7hQ)6_Z>@=1a&OH;e~)G$q5HX(x( z_0}}`?C@iXm6%Sdor$`fd=m9`@<}rJB(tFY(>aqzMoU9L$ zQL^5brdA|NvW?05SehzN)<@FRSrc+SS)Wc*BZB(tG_igYXLV4YPm>Sj&!(y4Cgeg; zUrAGg_!yr0g*I43x|E`?lc}7or$;8pEd>p96D23PuV0UNu6Y{Wq|_riFQ9&{&&I0% z(uZQzIO)GEn#Tp?R);YG#avYoP>eez_c=@ps4-qWIUr7r2?15%P371x9*uyyjz1%y zW>|VgKy8vM8+KZHNkBfCEDESWKD~f6@`1?;pI$`_`rnFxs`2S%NX54?+OIbT)J(rF z2}mdWFd!E-8286kGUv{QfP7$C7LXen@EGF)38+0&JD87t#5loO+;r^@9L)hQ}c8KcLLEJn{tRpS{M8RC-J$H0u$ zYf}{?V|a$T#+Ni1YD_>6&XAEYFhi{l=r=Re_JF>YuFeMZ<#aVTPG3w{6XW!^4Ar=% zXVTU2IDLvv5vNb2t0D3Ft8_IfULQ_ZMO+t=uGYr?sWx2=iX`fTjNahQ)TSnQlhaU* zz=@I}--67^P+LNp5IzX0$xx^8v1F)eT(i(n6@~SvhH7J2k02EvlxC>2a)*MnZ-39| z_#FxI#fsrWjmG0cJMQ_wSEA)Dn!xz~x~fmdh(k)$;&snl&wn5&@~rTWXrRt(y(lEF zcVS50?7JbgHAc?~sbevEW=NE1VMv@;bAr+!#Get+M?!L`#=(%<8PNNP8PLTcRTFo{ zgZMy#-WgVd67`O-nvtkK2{U~4=CCSH)E|Y_5$eAotS%?&VETZRlYj=+zy)k^P<7?`nf zx*}Vxjr%)vS$x}btwifw%9cAizQ|UQGCu8TrS>G~ldaUT1bw`fI*%gCk()WLW~(B; z@oA+tB33VI0TePv9Z1&uTd6b2x~7#H z9MpSTsYy80T8S2^Y^62^_0Cr6NKo%+C4RI|Td5Hd-gYZh9BRC&m8!;J)=IwnS>H-s z3hA}2)X1=2-AY_$D_g0h;g{bh>jrvdOFqGQjEWykPnndf24?6>t<P(g%)mpyHscNkjH`kxHR-2mZ^48)Qo6}ki&UQXq;%)Ez=j+~>$QnGhtR6gy z?W*Z9A6W9S5qAs()id{8p!c!{4~o+LG>BVytw(|^eJrTvSo%m%v?(E|)6+q<-_l

n-U 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 Cp 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⪚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�Wyd^P1m9Dy-ZO)*52 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

    !Jve2*XgA^ruiOD0o#;cQG;k!kf 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

    Portable fork of NaCl, packaged for Visual Studio 2013 (v120) and CTP_Nov2013 compilers. + https://raw.github.com/jedisct1/libsodium/master/ChangeLog + (c) 2013-2019, Frank Denis (attribution required) + native, NaCl, salt, sodium, libsodium, C++ + +.for dependency + +.endfor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.echo "Generating package.targets from template." +.output "package.targets" + + + + + + + + + + + + + $\(MSBuildThisFileDirectory)include\\;%(AdditionalIncludeDirectories) + + + advapi32.lib;crypt32.lib;%(AdditionalDependencies) + $\(MSBuildThisFileDirectory)bin\\;%(AdditionalLibraryDirectories) + + + + + SODIUM_STATIC;%(PreprocessorDefinitions) + + + + + + + $(package.target)-x86-$(package.platformtoolset)-mt-s-$(package.pathversion).lib;%(AdditionalDependencies) + + + + + $(package.target)-x86-$(package.platformtoolset)-mt-sgd-$(package.pathversion).lib;%(AdditionalDependencies) + + + + + $(package.target)-x64-$(package.platformtoolset)-mt-s-$(package.pathversion).lib;%(AdditionalDependencies) + + + + + $(package.target)-x64-$(package.platformtoolset)-mt-sgd-$(package.pathversion).lib;%(AdditionalDependencies) + + + + + + + $(package.target)-x86-$(package.platformtoolset)-mt-s-$(package.pathversion).ltcg.lib;%(AdditionalDependencies) + + + + + $(package.target)-x86-$(package.platformtoolset)-mt-sgd-$(package.pathversion).ltcg.lib;%(AdditionalDependencies) + + + + + $(package.target)-x64-$(package.platformtoolset)-mt-s-$(package.pathversion).ltcg.lib;%(AdditionalDependencies) + + + + + $(package.target)-x64-$(package.platformtoolset)-mt-sgd-$(package.pathversion).ltcg.lib;%(AdditionalDependencies) + + + + + + + $(package.target)-x86-$(package.platformtoolset)-mt-$(package.pathversion).imp.lib;%(AdditionalDependencies) + + + + + $(package.target)-x86-$(package.platformtoolset)-mt-gd-$(package.pathversion).imp.lib;%(AdditionalDependencies) + + + + + $(package.target)-x64-$(package.platformtoolset)-mt-$(package.pathversion).imp.lib;%(AdditionalDependencies) + + + + + $(package.target)-x64-$(package.platformtoolset)-mt-gd-$(package.pathversion).imp.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + +.echo "Generating package.xml (ui extension) from template." +.output "package.xml" + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj new file mode 100644 index 0000000..ecdca90 --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj @@ -0,0 +1,326 @@ + + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + Win32Proj + libsodium + + + + StaticLibrary + true + MultiByte + false + v140 + + + DynamicLibrary + true + MultiByte + false + v140 + + + StaticLibrary + true + MultiByte + false + v140 + + + DynamicLibrary + true + MultiByte + false + v140 + + + StaticLibrary + false + true + MultiByte + v140 + + + DynamicLibrary + false + true + MultiByte + v140 + + + StaticLibrary + false + true + MultiByte + v140 + + + DynamicLibrary + false + true + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + + + + Level3 + Disabled + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebug + $(SolutionDir);$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebugDLL + $(SolutionDir);$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebug + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebugDLL + + + Console + true + + + + + Level3 + + + Full + true + true + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreaded + Speed + $(SolutionDir);$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + Full + true + true + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDLL + Speed + $(SolutionDir);$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include\sodium;$(SolutionDir)src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreaded + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDLL + + + Console + true + true + true + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters new file mode 100644 index 0000000..1b4637d --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters @@ -0,0 +1,23 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters.tpl b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters.tpl new file mode 100644 index 0000000..abe9247 --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters.tpl @@ -0,0 +1,35 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + {{f1}} + + + {{f2}} + + + {{fd}} + + diff --git a/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.tpl b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.tpl new file mode 100644 index 0000000..0c9c7cd --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.tpl @@ -0,0 +1,37 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + {{platform}} + + + {{configurations}} + + + StaticLibrary + DynamicLibrary + + + + + + + + + + {{v1}} + + + {{v2}} + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/regen-msvc/regen-msvc.py b/components/espressif__libsodium/libsodium/regen-msvc/regen-msvc.py new file mode 100644 index 0000000..f04e3e2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/regen-msvc.py @@ -0,0 +1,240 @@ +#! /usr/bin/env python3 + +import glob +import os +import uuid + +dirs = set() + +tlv1 = "" +for file in glob.iglob("src/libsodium/**/*.c", recursive=True): + file = file.replace("/", "\\") + tlv1 = tlv1 + ' \r\n'.format(file) + +tlv2 = "" +for file in glob.iglob("src/libsodium/**/*.h", recursive=True): + file = file.replace("/", "\\") + tlv2 = tlv2 + ' \r\n'.format(file) + +tlf1 = "" +for file in glob.iglob("src/libsodium/**/*.c", recursive=True): + file = file.replace("/", "\\") + tlf1 = tlf1 + ' \r\n'.format(file) + tlf1 = tlf1 + " Source Files\r\n" + tlf1 = tlf1 + " \r\n" + +tlf2 = "" +for file in glob.iglob("src/libsodium/**/*.h", recursive=True): + file = file.replace("/", "\\") + tlf2 = tlf2 + ' \r\n'.format(file) + tlf2 = tlf2 + " Header Files\r\n" + tlf2 = tlf2 + " \r\n" + +v1 = "" +for file in glob.iglob("src/libsodium/**/*.c", recursive=True): + file = file.replace("/", "\\") + v1 = v1 + ' \r\n'.format(file) + +v2 = "" +for file in glob.iglob("src/libsodium/**/*.h", recursive=True): + file = file.replace("/", "\\") + v2 = v2 + ' \r\n'.format(file) + +f1 = "" +for file in glob.iglob("src/libsodium/**/*.c", recursive=True): + basedir = os.path.dirname(file).replace("src/libsodium/", "") + t = basedir + while t != "": + dirs.add(t) + t = os.path.dirname(t) + basedir = basedir.replace("/", "\\") + file = file.replace("/", "\\") + f1 = f1 + ' \r\n'.format(file) + f1 = f1 + " {}\r\n".format(basedir) + f1 = f1 + " \r\n" + +f2 = "" +for file in glob.iglob("src/libsodium/**/*.h", recursive=True): + basedir = os.path.dirname(file).replace("src/libsodium/", "") + t = basedir + while t != "": + dirs.add(t) + t = os.path.dirname(t) + basedir = basedir.replace("/", "\\") + file = file.replace("/", "\\") + f2 = f2 + ' \r\n'.format(file) + f2 = f2 + " {}\r\n".format(basedir) + f2 = f2 + " \r\n" + +fd = "" +dirs = list(dirs) +dirs.sort() +for dir in dirs: + dir = dir.replace("/", "\\") + uid = uuid.uuid3(uuid.UUID(bytes=b"LibSodiumMSVCUID"), dir) + fd = fd + ' \r\n'.format(dir) + fd = fd + " {{{}}}\r\n".format(uid) + fd = fd + " \r\n" + + +def get_project_configurations(vs_version): + projconfig = "" + configs = [ + "DebugDLL", + "ReleaseDLL", + "DebugLIB", + "ReleaseLIB", + "DebugLTCG", + "ReleaseLTCG", + ] + platforms = ["Win32", "x64"] + # add arm64 platform only for v142+ toolchain + if vs_version >= 142: + platforms.append("ARM64") + for config in configs: + for platform in platforms: + projconfig = ( + projconfig + + ' \r\n'.format( + config, platform + ) + ) + projconfig = ( + projconfig + + " {}\r\n".format(config) + ) + projconfig = projconfig + " {}\r\n".format( + platform + ) + projconfig = projconfig + " \r\n" + return projconfig + + +def apply_template(tplfile, outfile, sbox): + tpl = "" + with open(tplfile, "rb") as fd: + tpl = fd.read() + for s in sbox.keys(): + tpl = tpl.replace( + str.encode("{{" + s + "}}", "utf8"), str.encode(str.strip(sbox[s]), "utf8") + ) + + with open(outfile, "wb") as fd: + fd.write(tpl) + + +sbox = { + "tlv1": tlv1, + "tlv2": tlv2, + "tlf1": tlf1, + "tlf2": tlf2, + "v1": v1, + "v2": v2, + "f1": f1, + "f2": f2, + "fd": fd, +} + +sd = os.path.dirname(os.path.realpath(__file__)) + +apply_template( + sd + "/tl_libsodium.vcxproj.filters.tpl", + "ci/appveyor/libsodium.vcxproj.filters", + sbox, +) + +sbox.update({"platform": "v140"}) +sbox.update({"configurations": get_project_configurations(140)}) +apply_template(sd + "/tl_libsodium.vcxproj.tpl", "ci/appveyor/libsodium.vcxproj", sbox) + +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters", + sbox, +) +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters", + sbox, +) +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters", + sbox, +) +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters", + sbox, +) +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters", + sbox, +) +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters", + sbox, +) +apply_template( + sd + "/libsodium.vcxproj.filters.tpl", + "builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters", + sbox, +) + +sbox.update({"platform": "v143"}) +sbox.update({"configurations": get_project_configurations(143)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2022/libsodium/libsodium.vcxproj", + sbox, +) + +sbox.update({"platform": "v142"}) +sbox.update({"configurations": get_project_configurations(142)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2019/libsodium/libsodium.vcxproj", + sbox, +) + +sbox.update({"platform": "v141"}) +sbox.update({"configurations": get_project_configurations(141)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2017/libsodium/libsodium.vcxproj", + sbox, +) + +sbox.update({"platform": "v140"}) +sbox.update({"configurations": get_project_configurations(140)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2015/libsodium/libsodium.vcxproj", + sbox, +) + +sbox.update({"platform": "v120"}) +sbox.update({"configurations": get_project_configurations(120)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2013/libsodium/libsodium.vcxproj", + sbox, +) + +sbox.update({"platform": "v110"}) +sbox.update({"configurations": get_project_configurations(110)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2012/libsodium/libsodium.vcxproj", + sbox, +) + +sbox.update({"platform": "v100"}) +sbox.update({"configurations": get_project_configurations(100)}) +apply_template( + sd + "/libsodium.vcxproj.tpl", + "builds/msvc/vs2010/libsodium/libsodium.vcxproj", + sbox, +) diff --git a/components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.filters.tpl b/components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.filters.tpl new file mode 100644 index 0000000..f024d61 --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.filters.tpl @@ -0,0 +1,23 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + {{tlf1}} + + + {{tlf2}} + + diff --git a/components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.tpl b/components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.tpl new file mode 100644 index 0000000..9e85e40 --- /dev/null +++ b/components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.tpl @@ -0,0 +1,332 @@ + + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + Win32Proj + libsodium + + + + StaticLibrary + true + MultiByte + false + {{platform}} + + + DynamicLibrary + true + MultiByte + false + {{platform}} + + + StaticLibrary + true + MultiByte + false + {{platform}} + + + DynamicLibrary + true + MultiByte + false + {{platform}} + + + StaticLibrary + false + true + MultiByte + {{platform}} + + + DynamicLibrary + false + true + MultiByte + {{platform}} + + + StaticLibrary + false + true + MultiByte + {{platform}} + + + DynamicLibrary + false + true + MultiByte + {{platform}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + + + + Level3 + Disabled + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebug + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebugDLL + $(SolutionDir)..\..\;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebug + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebugDLL + + + Console + true + + + + + Level3 + + + Full + true + true + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreaded + Speed + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + Full + true + true + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDLL + Speed + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreaded + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDLL + + + Console + true + true + true + + + + {{tlv1}} + + + {{tlv2}} + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/src/Makefile.am b/components/espressif__libsodium/libsodium/src/Makefile.am new file mode 100644 index 0000000..6444504 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/Makefile.am @@ -0,0 +1,3 @@ + +SUBDIRS = \ + libsodium diff --git a/components/espressif__libsodium/libsodium/src/libsodium/Makefile.am b/components/espressif__libsodium/libsodium/src/libsodium/Makefile.am new file mode 100644 index 0000000..b3cd663 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/Makefile.am @@ -0,0 +1,314 @@ +lib_LTLIBRARIES = \ + libsodium.la + +libsodium_la_SOURCES = \ + crypto_aead/aegis128l/aead_aegis128l.c \ + crypto_aead/aegis128l/aegis128l_common.h \ + crypto_aead/aegis128l/aegis128l_soft.c \ + crypto_aead/aegis128l/aegis128l_soft.h \ + crypto_aead/aegis128l/implementations.h \ + crypto_aead/aegis256/aead_aegis256.c \ + crypto_aead/aegis256/aegis256_common.h \ + crypto_aead/aegis256/aegis256_soft.c \ + crypto_aead/aegis256/aegis256_soft.h \ + crypto_aead/aegis256/implementations.h \ + crypto_aead/aes256gcm/aead_aes256gcm.c \ + crypto_aead/chacha20poly1305/aead_chacha20poly1305.c \ + crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c \ + crypto_auth/crypto_auth.c \ + crypto_auth/hmacsha256/auth_hmacsha256.c \ + crypto_auth/hmacsha512/auth_hmacsha512.c \ + crypto_auth/hmacsha512256/auth_hmacsha512256.c \ + crypto_box/crypto_box.c \ + crypto_box/crypto_box_easy.c \ + crypto_box/crypto_box_seal.c \ + crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c \ + crypto_core/ed25519/ref10/ed25519_ref10.c \ + crypto_core/hchacha20/core_hchacha20.c \ + crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c \ + crypto_core/hsalsa20/core_hsalsa20.c \ + crypto_core/salsa/ref/core_salsa_ref.c \ + crypto_core/softaes/softaes.c \ + crypto_generichash/crypto_generichash.c \ + crypto_generichash/blake2b/generichash_blake2.c \ + crypto_generichash/blake2b/ref/blake2.h \ + crypto_generichash/blake2b/ref/blake2b-compress-ref.c \ + crypto_generichash/blake2b/ref/blake2b-load-sse2.h \ + crypto_generichash/blake2b/ref/blake2b-load-sse41.h \ + crypto_generichash/blake2b/ref/blake2b-load-avx2.h \ + crypto_generichash/blake2b/ref/blake2b-ref.c \ + crypto_generichash/blake2b/ref/generichash_blake2b.c \ + crypto_hash/crypto_hash.c \ + crypto_hash/sha256/hash_sha256.c \ + crypto_hash/sha256/cp/hash_sha256_cp.c \ + crypto_hash/sha512/hash_sha512.c \ + crypto_hash/sha512/cp/hash_sha512_cp.c \ + crypto_kdf/blake2b/kdf_blake2b.c \ + crypto_kdf/crypto_kdf.c \ + crypto_kdf/hkdf/kdf_hkdf_sha256.c \ + crypto_kdf/hkdf/kdf_hkdf_sha512.c \ + crypto_kx/crypto_kx.c \ + crypto_onetimeauth/crypto_onetimeauth.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305.c \ + crypto_onetimeauth/poly1305/onetimeauth_poly1305.h \ + crypto_onetimeauth/poly1305/donna/poly1305_donna.h \ + crypto_onetimeauth/poly1305/donna/poly1305_donna32.h \ + crypto_onetimeauth/poly1305/donna/poly1305_donna64.h \ + crypto_onetimeauth/poly1305/donna/poly1305_donna.c \ + crypto_pwhash/argon2/argon2-core.c \ + crypto_pwhash/argon2/argon2-core.h \ + crypto_pwhash/argon2/argon2-encoding.c \ + crypto_pwhash/argon2/argon2-encoding.h \ + crypto_pwhash/argon2/argon2-fill-block-ref.c \ + crypto_pwhash/argon2/argon2.c \ + crypto_pwhash/argon2/argon2.h \ + crypto_pwhash/argon2/blake2b-long.c \ + crypto_pwhash/argon2/blake2b-long.h \ + crypto_pwhash/argon2/blamka-round-ref.h \ + crypto_pwhash/argon2/pwhash_argon2i.c \ + crypto_pwhash/argon2/pwhash_argon2id.c \ + crypto_pwhash/crypto_pwhash.c \ + crypto_scalarmult/crypto_scalarmult.c \ + crypto_scalarmult/curve25519/ref10/x25519_ref10.c \ + crypto_scalarmult/curve25519/ref10/x25519_ref10.h \ + crypto_scalarmult/curve25519/scalarmult_curve25519.c \ + crypto_scalarmult/curve25519/scalarmult_curve25519.h \ + crypto_secretbox/crypto_secretbox.c \ + crypto_secretbox/crypto_secretbox_easy.c \ + crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c \ + crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c \ + crypto_shorthash/crypto_shorthash.c \ + crypto_shorthash/siphash24/shorthash_siphash24.c \ + crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c \ + crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h \ + crypto_sign/crypto_sign.c \ + crypto_sign/ed25519/sign_ed25519.c \ + crypto_sign/ed25519/ref10/keypair.c \ + crypto_sign/ed25519/ref10/open.c \ + crypto_sign/ed25519/ref10/sign.c \ + crypto_sign/ed25519/ref10/sign_ed25519_ref10.h \ + crypto_stream/chacha20/stream_chacha20.c \ + crypto_stream/chacha20/stream_chacha20.h \ + crypto_stream/chacha20/ref/chacha20_ref.h \ + crypto_stream/chacha20/ref/chacha20_ref.c \ + crypto_stream/crypto_stream.c \ + crypto_stream/salsa20/stream_salsa20.c \ + crypto_stream/salsa20/stream_salsa20.h \ + crypto_stream/xsalsa20/stream_xsalsa20.c \ + crypto_verify/verify.c \ + include/sodium/private/asm_cet.h \ + include/sodium/private/chacha20_ietf_ext.h \ + include/sodium/private/common.h \ + include/sodium/private/ed25519_ref10.h \ + include/sodium/private/implementations.h \ + include/sodium/private/mutex.h \ + include/sodium/private/sse2_64_32.h \ + include/sodium/private/softaes.h \ + randombytes/randombytes.c \ + sodium/codecs.c \ + sodium/core.c \ + sodium/runtime.c \ + sodium/utils.c \ + sodium/version.c + +if HAVE_TI_MODE +libsodium_la_SOURCES += \ + crypto_core/ed25519/ref10/fe_51/base.h \ + crypto_core/ed25519/ref10/fe_51/base2.h \ + crypto_core/ed25519/ref10/fe_51/constants.h \ + crypto_core/ed25519/ref10/fe_51/fe.h \ + include/sodium/private/ed25519_ref10_fe_51.h +else +libsodium_la_SOURCES += \ + crypto_core/ed25519/ref10/fe_25_5/base.h \ + crypto_core/ed25519/ref10/fe_25_5/base2.h \ + crypto_core/ed25519/ref10/fe_25_5/constants.h \ + crypto_core/ed25519/ref10/fe_25_5/fe.h \ + include/sodium/private/ed25519_ref10_fe_25_5.h +endif + +if HAVE_AMD64_ASM +libsodium_la_SOURCES += \ + crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S \ + crypto_stream/salsa20/xmm6/salsa20_xmm6.c \ + crypto_stream/salsa20/xmm6/salsa20_xmm6.h +else +libsodium_la_SOURCES += \ + crypto_stream/salsa20/ref/salsa20_ref.c \ + crypto_stream/salsa20/ref/salsa20_ref.h +endif + +noinst_HEADERS = \ + crypto_scalarmult/curve25519/sandy2x/consts.S \ + crypto_scalarmult/curve25519/sandy2x/fe51_mul.S \ + crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S \ + crypto_scalarmult/curve25519/sandy2x/fe51_pack.S \ + crypto_scalarmult/curve25519/sandy2x/ladder.S + +if HAVE_AVX_ASM +libsodium_la_SOURCES += \ + crypto_scalarmult/curve25519/sandy2x/consts_namespace.h \ + crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c \ + crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h \ + crypto_scalarmult/curve25519/sandy2x/fe.h \ + crypto_scalarmult/curve25519/sandy2x/fe51.h \ + crypto_scalarmult/curve25519/sandy2x/fe51_invert.c \ + crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h \ + crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c \ + crypto_scalarmult/curve25519/sandy2x/ladder.h \ + crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h \ + crypto_scalarmult/curve25519/sandy2x/sandy2x.S +endif + +if !MINIMAL +libsodium_la_SOURCES += \ + crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c \ + crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c \ + crypto_core/ed25519/core_ed25519.c \ + crypto_core/ed25519/core_ristretto255.c \ + crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c \ + crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h \ + crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c \ + crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c \ + crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h \ + crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c \ + crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c \ + crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c \ + crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c \ + crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c \ + crypto_shorthash/siphash24/shorthash_siphashx24.c \ + crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c \ + crypto_sign/ed25519/ref10/obsolete.c \ + crypto_stream/salsa2012/ref/stream_salsa2012_ref.c \ + crypto_stream/salsa2012/stream_salsa2012.c \ + crypto_stream/salsa208/ref/stream_salsa208_ref.c \ + crypto_stream/salsa208/stream_salsa208.c \ + crypto_stream/xchacha20/stream_xchacha20.c +endif + +randombytes_internal_randombytes_internal_random_CFLAGS = @CFLAGS_RDRAND@ + +libsodium_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -export-dynamic \ + -no-undefined \ + $(LIBTOOL_EXTRA_FLAGS) + +libsodium_la_CPPFLAGS = \ + $(LTDLINCL) \ + -I$(srcdir)/include/sodium \ + -I$(builddir)/include/sodium + +if HAVE_LD_OUTPUT_DEF +libsodium_la_LDFLAGS += -Wl,--output-def,libsodium-$(DLL_VERSION).def +defexecdir = $(bindir) +defexec_DATA = libsodium-$(DLL_VERSION).def +CLEANFILES = $(defexec_DATA) +libsodium-$(DLL_VERSION).def: libsodium.la +endif + +SUBDIRS = \ + include + +libsodium_la_LIBADD = libaesni.la libarmcrypto.la libsse2.la libssse3.la libsse41.la libavx2.la libavx512f.la +noinst_LTLIBRARIES = libaesni.la libarmcrypto.la libsse2.la libssse3.la libsse41.la libavx2.la libavx512f.la + +librdrand_la_LDFLAGS = $(libsodium_la_LDFLAGS) +librdrand_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_RDRAND@ +librdrand_la_SOURCES = \ + randombytes/internal/randombytes_internal_random.c + +if !EMSCRIPTEN +libsodium_la_LIBADD += librdrand.la +noinst_LTLIBRARIES += librdrand.la + +libsodium_la_SOURCES += \ + randombytes/sysrandom/randombytes_sysrandom.c +endif + +libarmcrypto_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libarmcrypto_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_ARMCRYPTO@ +libarmcrypto_la_SOURCES = \ + crypto_aead/aegis128l/aegis128l_armcrypto.c \ + crypto_aead/aegis128l/aegis128l_armcrypto.h \ + crypto_aead/aegis256/aegis256_armcrypto.c \ + crypto_aead/aegis256/aegis256_armcrypto.h \ + crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c + +libaesni_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libaesni_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_SSE2@ @CFLAGS_SSSE3@ @CFLAGS_AVX@ @CFLAGS_AESNI@ @CFLAGS_PCLMUL@ +libaesni_la_SOURCES = \ + crypto_aead/aegis128l/aegis128l_aesni.c \ + crypto_aead/aegis128l/aegis128l_aesni.h \ + crypto_aead/aegis256/aegis256_aesni.c \ + crypto_aead/aegis256/aegis256_aesni.h \ + crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c + +libsse2_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libsse2_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_SSE2@ +libsse2_la_SOURCES = \ + crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c \ + crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h +if !MINIMAL +libsse2_la_SOURCES += \ + crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c +endif + +if !HAVE_AMD64_ASM +libsse2_la_SOURCES += \ + crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c \ + crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h \ + crypto_stream/salsa20/xmm6int/u0.h \ + crypto_stream/salsa20/xmm6int/u1.h \ + crypto_stream/salsa20/xmm6int/u4.h +endif + +libssse3_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libssse3_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_SSE2@ @CFLAGS_SSSE3@ +libssse3_la_SOURCES = \ + crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c \ + crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h \ + crypto_pwhash/argon2/argon2-fill-block-ssse3.c \ + crypto_pwhash/argon2/blamka-round-ssse3.h \ + crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c \ + crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h \ + crypto_stream/chacha20/dolbeau/u0.h \ + crypto_stream/chacha20/dolbeau/u1.h \ + crypto_stream/chacha20/dolbeau/u4.h + +libsse41_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libsse41_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_SSE2@ @CFLAGS_SSSE3@ @CFLAGS_SSE41@ +libsse41_la_SOURCES = \ + crypto_generichash/blake2b/ref/blake2b-compress-sse41.c \ + crypto_generichash/blake2b/ref/blake2b-compress-sse41.h + +libavx2_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libavx2_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_SSE2@ @CFLAGS_SSSE3@ @CFLAGS_SSE41@ @CFLAGS_AVX@ @CFLAGS_AVX2@ +libavx2_la_SOURCES = \ + crypto_generichash/blake2b/ref/blake2b-compress-avx2.c \ + crypto_generichash/blake2b/ref/blake2b-compress-avx2.h \ + crypto_pwhash/argon2/argon2-fill-block-avx2.c \ + crypto_pwhash/argon2/blamka-round-avx2.h \ + crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c \ + crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h \ + crypto_stream/chacha20/dolbeau/u8.h \ + crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c \ + crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h \ + crypto_stream/salsa20/xmm6int/u0.h \ + crypto_stream/salsa20/xmm6int/u1.h \ + crypto_stream/salsa20/xmm6int/u4.h \ + crypto_stream/salsa20/xmm6int/u8.h + +libavx512f_la_LDFLAGS = $(libsodium_la_LDFLAGS) +libavx512f_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \ + @CFLAGS_SSE2@ @CFLAGS_SSSE3@ @CFLAGS_SSE41@ @CFLAGS_AVX@ @CFLAGS_AVX2@ @CFLAGS_AVX512F@ +libavx512f_la_SOURCES = \ + crypto_pwhash/argon2/argon2-fill-block-avx512f.c \ + crypto_pwhash/argon2/blamka-round-avx512f.h diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aead_aegis128l.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aead_aegis128l.c new file mode 100644 index 0000000..ab2596e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aead_aegis128l.c @@ -0,0 +1,159 @@ + +#include +#include + +#include "core.h" +#include "crypto_aead_aegis128l.h" +#include "private/common.h" +#include "private/implementations.h" +#include "randombytes.h" +#include "runtime.h" + +#include "aegis128l_soft.h" + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) +#include "aegis128l_armcrypto.h" +#endif + +#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H) +#include "aegis128l_aesni.h" +#endif + +static const aegis128l_implementation *implementation = &aegis128l_soft_implementation; + +size_t +crypto_aead_aegis128l_keybytes(void) +{ + return crypto_aead_aegis128l_KEYBYTES; +} + +size_t +crypto_aead_aegis128l_nsecbytes(void) +{ + return crypto_aead_aegis128l_NSECBYTES; +} + +size_t +crypto_aead_aegis128l_npubbytes(void) +{ + return crypto_aead_aegis128l_NPUBBYTES; +} + +size_t +crypto_aead_aegis128l_abytes(void) +{ + return crypto_aead_aegis128l_ABYTES; +} + +size_t +crypto_aead_aegis128l_messagebytes_max(void) +{ + return crypto_aead_aegis128l_MESSAGEBYTES_MAX; +} + +void +crypto_aead_aegis128l_keygen(unsigned char k[crypto_aead_aegis128l_KEYBYTES]) +{ + randombytes_buf(k, crypto_aead_aegis128l_KEYBYTES); +} + +int +crypto_aead_aegis128l_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + unsigned long long clen = 0ULL; + int ret; + + ret = crypto_aead_aegis128l_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, + k); + if (clen_p != NULL) { + if (ret == 0) { + clen = mlen + crypto_aead_aegis128l_ABYTES; + } + *clen_p = clen; + } + return ret; +} + +int +crypto_aead_aegis128l_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= crypto_aead_aegis128l_ABYTES) { + ret = crypto_aead_aegis128l_decrypt_detached( + m, nsec, c, clen - crypto_aead_aegis128l_ABYTES, + c + clen - crypto_aead_aegis128l_ABYTES, ad, adlen, npub, k); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - crypto_aead_aegis128l_ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +int +crypto_aead_aegis128l_encrypt_detached(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + const size_t maclen = crypto_aead_aegis128l_ABYTES; + + if (maclen_p != NULL) { + *maclen_p = maclen; + } + if (mlen > crypto_aead_aegis128l_MESSAGEBYTES_MAX || + adlen > crypto_aead_aegis128l_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->encrypt_detached(c, mac, maclen, m, (size_t) mlen, ad, (size_t) adlen, + npub, k); +} + +int +crypto_aead_aegis128l_decrypt_detached(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *mac, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const unsigned char *k) +{ + const size_t maclen = crypto_aead_aegis128l_ABYTES; + + if (clen > crypto_aead_aegis128l_MESSAGEBYTES_MAX || + adlen > crypto_aead_aegis128l_MESSAGEBYTES_MAX) { + return -1; + } + return implementation->decrypt_detached(m, c, (size_t) clen, mac, maclen, ad, (size_t) adlen, + npub, k); +} + +int +_crypto_aead_aegis128l_pick_best_implementation(void) +{ + implementation = &aegis128l_soft_implementation; + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) + if (sodium_runtime_has_armcrypto()) { + implementation = &aegis128l_armcrypto_implementation; + return 0; + } +#endif + +#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H) + if (sodium_runtime_has_aesni() & sodium_runtime_has_avx()) { + implementation = &aegis128l_aesni_implementation; + return 0; + } +#endif + return 0; /* LCOV_EXCL_LINE */ +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.c new file mode 100644 index 0000000..93782ce --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis128l.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" +#include "utils.h" + +#include "private/common.h" + +#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H) + +#include "aegis128l_aesni.h" + +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("aes,avx"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("aes,avx") +#endif + +#include "private/sse2_64_32.h" +#include +#include + +#define AES_BLOCK_LENGTH 16 + +typedef __m128i aes_block_t; +#define AES_BLOCK_XOR(A, B) _mm_xor_si128((A), (B)) +#define AES_BLOCK_AND(A, B) _mm_and_si128((A), (B)) +#define AES_BLOCK_LOAD(A) _mm_loadu_si128((const aes_block_t *) (const void *) (A)) +#define AES_BLOCK_LOAD_64x2(A, B) _mm_set_epi64x((long long) (A), (long long) (B)) +#define AES_BLOCK_STORE(A, B) _mm_storeu_si128((aes_block_t *) (void *) (A), (B)) +#define AES_ENC(A, B) _mm_aesenc_si128((A), (B)) + +static inline void +aegis128l_update(aes_block_t *const state, const aes_block_t d1, const aes_block_t d2) +{ + aes_block_t tmp; + + tmp = state[7]; + state[7] = AES_ENC(state[6], state[7]); + state[6] = AES_ENC(state[5], state[6]); + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_ENC(state[3], state[4]); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_ENC(tmp, state[0]); + + state[0] = AES_BLOCK_XOR(state[0], d1); + state[4] = AES_BLOCK_XOR(state[4], d2); +} + +#include "aegis128l_common.h" + +struct aegis128l_implementation aegis128l_aesni_implementation = { SODIUM_C99(.encrypt_detached =) + encrypt_detached, + SODIUM_C99(.decrypt_detached =) + decrypt_detached }; + +#ifdef __clang__ +#pragma clang attribute pop +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.h new file mode 100644 index 0000000..65e52da --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.h @@ -0,0 +1,8 @@ +#ifndef aegis128l_aesni_H +#define aegis128l_aesni_H + +#include "implementations.h" + +extern struct aegis128l_implementation aegis128l_aesni_implementation; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c new file mode 100644 index 0000000..825de8a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis128l.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" +#include "utils.h" + +#include "private/common.h" + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) + +#include "aegis128l_armcrypto.h" + +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + +#ifndef __ARM_FEATURE_CRYPTO +#define __ARM_FEATURE_CRYPTO 1 +#endif +#ifndef __ARM_FEATURE_AES +#define __ARM_FEATURE_AES 1 +#endif + +#include + +#define AES_BLOCK_LENGTH 16 + +typedef uint8x16_t aes_block_t; +#define AES_BLOCK_XOR(A, B) veorq_u8((A), (B)) +#define AES_BLOCK_AND(A, B) vandq_u8((A), (B)) +#define AES_BLOCK_LOAD(A) vld1q_u8(A) +#define AES_BLOCK_LOAD_64x2(A, B) vreinterpretq_u8_u64(vsetq_lane_u64((A), vmovq_n_u64(B), 1)) +#define AES_BLOCK_STORE(A, B) vst1q_u8((A), (B)) +#define AES_ENC(A, B) veorq_u8(vaesmcq_u8(vaeseq_u8((A), vmovq_n_u8(0))), (B)) + +static inline void +aegis128l_update(aes_block_t *const state, const aes_block_t d1, const aes_block_t d2) +{ + aes_block_t tmp; + + tmp = state[7]; + state[7] = AES_ENC(state[6], state[7]); + state[6] = AES_ENC(state[5], state[6]); + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_BLOCK_XOR(AES_ENC(state[3], state[4]), d2); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_BLOCK_XOR(AES_ENC(tmp, state[0]), d1); +} + +#include "aegis128l_common.h" + +struct aegis128l_implementation aegis128l_armcrypto_implementation = { + SODIUM_C99(.encrypt_detached =) encrypt_detached, + SODIUM_C99(.decrypt_detached =) decrypt_detached +}; + +#ifdef __clang__ +#pragma clang attribute pop +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.h new file mode 100644 index 0000000..41ad43c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.h @@ -0,0 +1,8 @@ +#ifndef aegis128l_armcrypto_H +#define aegis128l_armcrypto_H + +#include "implementations.h" + +extern struct aegis128l_implementation aegis128l_armcrypto_implementation; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_common.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_common.h new file mode 100644 index 0000000..7a130b0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_common.h @@ -0,0 +1,229 @@ +#define RATE 32 + +static void +aegis128l_init(const uint8_t *key, const uint8_t *nonce, aes_block_t *const state) +{ + static CRYPTO_ALIGN(AES_BLOCK_LENGTH) + const uint8_t c0_[AES_BLOCK_LENGTH] = { 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x08, 0x0d, + 0x15, 0x22, 0x37, 0x59, 0x90, 0xe9, 0x79, 0x62 }; + static CRYPTO_ALIGN(AES_BLOCK_LENGTH) + const uint8_t c1_[AES_BLOCK_LENGTH] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1, + 0x20, 0x11, 0x31, 0x42, 0x73, 0xb5, 0x28, 0xdd }; + + const aes_block_t c0 = AES_BLOCK_LOAD(c0_); + const aes_block_t c1 = AES_BLOCK_LOAD(c1_); + aes_block_t k; + aes_block_t n; + int i; + + k = AES_BLOCK_LOAD(key); + n = AES_BLOCK_LOAD(nonce); + + state[0] = AES_BLOCK_XOR(k, n); + state[1] = c1; + state[2] = c0; + state[3] = c1; + state[4] = AES_BLOCK_XOR(k, n); + state[5] = AES_BLOCK_XOR(k, c0); + state[6] = AES_BLOCK_XOR(k, c1); + state[7] = AES_BLOCK_XOR(k, c0); + for (i = 0; i < 10; i++) { + aegis128l_update(state, n, k); + } +} + +static void +aegis128l_mac(uint8_t *mac, size_t maclen, size_t adlen, size_t mlen, aes_block_t *const state) +{ + aes_block_t tmp; + int i; + + tmp = AES_BLOCK_LOAD_64x2(((uint64_t) mlen) << 3, ((uint64_t) adlen) << 3); + tmp = AES_BLOCK_XOR(tmp, state[2]); + + for (i = 0; i < 7; i++) { + aegis128l_update(state, tmp, tmp); + } + + if (maclen == 16) { + tmp = AES_BLOCK_XOR(state[6], AES_BLOCK_XOR(state[5], state[4])); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[3], state[2])); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0])); + AES_BLOCK_STORE(mac, tmp); + } else if (maclen == 32) { + tmp = AES_BLOCK_XOR(state[3], state[2]); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0])); + AES_BLOCK_STORE(mac, tmp); + tmp = AES_BLOCK_XOR(state[7], state[6]); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[5], state[4])); + AES_BLOCK_STORE(mac + 16, tmp); + } else { + memset(mac, 0, maclen); + } +} + +static inline void +aegis128l_absorb(const uint8_t *const src, aes_block_t *const state) +{ + aes_block_t msg0, msg1; + + msg0 = AES_BLOCK_LOAD(src); + msg1 = AES_BLOCK_LOAD(src + AES_BLOCK_LENGTH); + aegis128l_update(state, msg0, msg1); +} + +static void +aegis128l_enc(uint8_t *const dst, const uint8_t *const src, aes_block_t *const state) +{ + aes_block_t msg0, msg1; + aes_block_t tmp0, tmp1; + + msg0 = AES_BLOCK_LOAD(src); + msg1 = AES_BLOCK_LOAD(src + AES_BLOCK_LENGTH); + tmp0 = AES_BLOCK_XOR(msg0, state[6]); + tmp0 = AES_BLOCK_XOR(tmp0, state[1]); + tmp1 = AES_BLOCK_XOR(msg1, state[5]); + tmp1 = AES_BLOCK_XOR(tmp1, state[2]); + tmp0 = AES_BLOCK_XOR(tmp0, AES_BLOCK_AND(state[2], state[3])); + tmp1 = AES_BLOCK_XOR(tmp1, AES_BLOCK_AND(state[6], state[7])); + AES_BLOCK_STORE(dst, tmp0); + AES_BLOCK_STORE(dst + AES_BLOCK_LENGTH, tmp1); + + aegis128l_update(state, msg0, msg1); +} + +static void +aegis128l_dec(uint8_t *const dst, const uint8_t *const src, aes_block_t *const state) +{ + aes_block_t msg0, msg1; + + msg0 = AES_BLOCK_LOAD(src); + msg1 = AES_BLOCK_LOAD(src + AES_BLOCK_LENGTH); + msg0 = AES_BLOCK_XOR(msg0, state[6]); + msg0 = AES_BLOCK_XOR(msg0, state[1]); + msg1 = AES_BLOCK_XOR(msg1, state[5]); + msg1 = AES_BLOCK_XOR(msg1, state[2]); + msg0 = AES_BLOCK_XOR(msg0, AES_BLOCK_AND(state[2], state[3])); + msg1 = AES_BLOCK_XOR(msg1, AES_BLOCK_AND(state[6], state[7])); + AES_BLOCK_STORE(dst, msg0); + AES_BLOCK_STORE(dst + AES_BLOCK_LENGTH, msg1); + + aegis128l_update(state, msg0, msg1); +} + +static void +aegis128l_declast(uint8_t *const dst, const uint8_t *const src, size_t len, + aes_block_t *const state) +{ + uint8_t pad[RATE]; + aes_block_t msg0, msg1; + + memset(pad, 0, sizeof pad); + memcpy(pad, src, len); + + msg0 = AES_BLOCK_LOAD(pad); + msg1 = AES_BLOCK_LOAD(pad + AES_BLOCK_LENGTH); + msg0 = AES_BLOCK_XOR(msg0, state[6]); + msg0 = AES_BLOCK_XOR(msg0, state[1]); + msg1 = AES_BLOCK_XOR(msg1, state[5]); + msg1 = AES_BLOCK_XOR(msg1, state[2]); + msg0 = AES_BLOCK_XOR(msg0, AES_BLOCK_AND(state[2], state[3])); + msg1 = AES_BLOCK_XOR(msg1, AES_BLOCK_AND(state[6], state[7])); + AES_BLOCK_STORE(pad, msg0); + AES_BLOCK_STORE(pad + AES_BLOCK_LENGTH, msg1); + + memset(pad + len, 0, sizeof pad - len); + memcpy(dst, pad, len); + + msg0 = AES_BLOCK_LOAD(pad); + msg1 = AES_BLOCK_LOAD(pad + AES_BLOCK_LENGTH); + + aegis128l_update(state, msg0, msg1); +} + +static int +encrypt_detached(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen, + const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k) +{ + aes_block_t state[8]; + CRYPTO_ALIGN(RATE) uint8_t src[RATE]; + CRYPTO_ALIGN(RATE) uint8_t dst[RATE]; + size_t i; + + aegis128l_init(k, npub, state); + + for (i = 0; i + RATE <= adlen; i += RATE) { + aegis128l_absorb(ad + i, state); + } + if (adlen % RATE) { + memset(src, 0, RATE); + memcpy(src, ad + i, adlen % RATE); + aegis128l_absorb(src, state); + } + for (i = 0; i + RATE <= mlen; i += RATE) { + aegis128l_enc(c + i, m + i, state); + } + if (mlen % RATE) { + memset(src, 0, RATE); + memcpy(src, m + i, mlen % RATE); + aegis128l_enc(dst, src, state); + memcpy(c + i, dst, mlen % RATE); + } + + aegis128l_mac(mac, maclen, adlen, mlen, state); + + return 0; +} + +static int +decrypt_detached(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac, size_t maclen, + const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k) +{ + aes_block_t state[8]; + CRYPTO_ALIGN(RATE) uint8_t src[RATE]; + CRYPTO_ALIGN(RATE) uint8_t dst[RATE]; + CRYPTO_ALIGN(16) uint8_t computed_mac[32]; + const size_t mlen = clen; + size_t i; + int ret; + + aegis128l_init(k, npub, state); + + for (i = 0; i + RATE <= adlen; i += RATE) { + aegis128l_absorb(ad + i, state); + } + if (adlen % RATE) { + memset(src, 0, RATE); + memcpy(src, ad + i, adlen % RATE); + aegis128l_absorb(src, state); + } + if (m != NULL) { + for (i = 0; i + RATE <= mlen; i += RATE) { + aegis128l_dec(m + i, c + i, state); + } + } else { + for (i = 0; i + RATE <= mlen; i += RATE) { + aegis128l_dec(dst, c + i, state); + } + } + if (mlen % RATE) { + if (m != NULL) { + aegis128l_declast(m + i, c + i, mlen % RATE, state); + } else { + aegis128l_declast(dst, c + i, mlen % RATE, state); + } + } + + COMPILER_ASSERT(sizeof computed_mac >= 32); + aegis128l_mac(computed_mac, maclen, adlen, mlen, state); + ret = -1; + if (maclen == 16) { + ret = crypto_verify_16(computed_mac, mac); + } else if (maclen == 32) { + ret = crypto_verify_32(computed_mac, mac); + } + if (ret != 0 && m != NULL) { + memset(m, 0, mlen); + } + return ret; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.c new file mode 100644 index 0000000..e1d60ec --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis128l.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" +#include "utils.h" + +#include "private/common.h" + +#include "crypto_aead_aegis128l.h" +#include "private/softaes.h" + +#if 1 + +#include "aegis128l_soft.h" + +#define AES_BLOCK_LENGTH 16 + +typedef SoftAesBlock aes_block_t; +#define AES_BLOCK_XOR(A, B) softaes_block_xor((A), (B)) +#define AES_BLOCK_AND(A, B) softaes_block_and((A), (B)) +#define AES_BLOCK_LOAD(A) softaes_block_load(A) +#define AES_BLOCK_LOAD_64x2(A, B) softaes_block_load64x2((A), (B)) +#define AES_BLOCK_STORE(A, B) softaes_block_store((A), (B)) +#define AES_ENC(A, B) softaes_block_encrypt((A), (B)) + +static inline void +aegis128l_update(aes_block_t *const state, const aes_block_t d1, const aes_block_t d2) +{ + aes_block_t tmp; + + tmp = state[7]; + state[7] = AES_ENC(state[6], state[7]); + state[6] = AES_ENC(state[5], state[6]); + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_ENC(state[3], state[4]); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_ENC(tmp, state[0]); + + state[0] = AES_BLOCK_XOR(state[0], d1); + state[4] = AES_BLOCK_XOR(state[4], d2); +} + +#include "aegis128l_common.h" + +struct aegis128l_implementation aegis128l_soft_implementation = { SODIUM_C99(.encrypt_detached =) + encrypt_detached, + SODIUM_C99(.decrypt_detached =) + decrypt_detached }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.h new file mode 100644 index 0000000..df8ddec --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.h @@ -0,0 +1,8 @@ +#ifndef aegis128l_soft_H +#define aegis128l_soft_H + +#include "implementations.h" + +extern struct aegis128l_implementation aegis128l_soft_implementation; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/implementations.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/implementations.h new file mode 100644 index 0000000..29e7b1c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/implementations.h @@ -0,0 +1,17 @@ +#ifndef aegis128l_implementations_H +#define aegis128l_implementations_H + +#include +#include + +#include "crypto_aead_aegis128l.h" + +typedef struct aegis128l_implementation { + int (*encrypt_detached)(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen, + const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k); + int (*decrypt_detached)(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac, + size_t maclen, const uint8_t *ad, size_t adlen, const uint8_t *npub, + const uint8_t *k); +} aegis128l_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aead_aegis256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aead_aegis256.c new file mode 100644 index 0000000..0fd8f96 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aead_aegis256.c @@ -0,0 +1,158 @@ + +#include +#include + +#include "core.h" +#include "crypto_aead_aegis256.h" +#include "private/common.h" +#include "private/implementations.h" +#include "randombytes.h" +#include "runtime.h" + +#include "aegis256_soft.h" + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) +#include "aegis256_armcrypto.h" +#endif + +#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H) +#include "aegis256_aesni.h" +#endif + +static const aegis256_implementation *implementation = &aegis256_soft_implementation; + +size_t +crypto_aead_aegis256_keybytes(void) +{ + return crypto_aead_aegis256_KEYBYTES; +} + +size_t +crypto_aead_aegis256_nsecbytes(void) +{ + return crypto_aead_aegis256_NSECBYTES; +} + +size_t +crypto_aead_aegis256_npubbytes(void) +{ + return crypto_aead_aegis256_NPUBBYTES; +} + +size_t +crypto_aead_aegis256_abytes(void) +{ + return crypto_aead_aegis256_ABYTES; +} + +size_t +crypto_aead_aegis256_messagebytes_max(void) +{ + return crypto_aead_aegis256_MESSAGEBYTES_MAX; +} + +void +crypto_aead_aegis256_keygen(unsigned char k[crypto_aead_aegis256_KEYBYTES]) +{ + randombytes_buf(k, crypto_aead_aegis256_KEYBYTES); +} + +int +crypto_aead_aegis256_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + unsigned long long clen = 0ULL; + int ret; + + ret = + crypto_aead_aegis256_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + clen = mlen + crypto_aead_aegis256_ABYTES; + } + *clen_p = clen; + } + return ret; +} + +int +crypto_aead_aegis256_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= crypto_aead_aegis256_ABYTES) { + ret = crypto_aead_aegis256_decrypt_detached(m, nsec, c, clen - crypto_aead_aegis256_ABYTES, + c + clen - crypto_aead_aegis256_ABYTES, ad, + adlen, npub, k); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - crypto_aead_aegis256_ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +int +crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + const size_t maclen = crypto_aead_aegis256_ABYTES; + + if (maclen_p != NULL) { + *maclen_p = maclen; + } + if (mlen > crypto_aead_aegis256_MESSAGEBYTES_MAX || + adlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->encrypt_detached(c, mac, maclen, m, (size_t) mlen, ad, (size_t) adlen, + npub, k); +} + +int +crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *mac, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + const size_t maclen = crypto_aead_aegis256_ABYTES; + + if (clen > crypto_aead_aegis256_MESSAGEBYTES_MAX || + adlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) { + return -1; + } + return implementation->decrypt_detached(m, c, (size_t) clen, mac, maclen, ad, (size_t) adlen, + npub, k); +} + +int +_crypto_aead_aegis256_pick_best_implementation(void) +{ + implementation = &aegis256_soft_implementation; + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) + if (sodium_runtime_has_armcrypto()) { + implementation = &aegis256_armcrypto_implementation; + return 0; + } +#endif + +#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H) + if (sodium_runtime_has_aesni() & sodium_runtime_has_avx()) { + implementation = &aegis256_aesni_implementation; + return 0; + } +#endif + return 0; /* LCOV_EXCL_LINE */ +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.c new file mode 100644 index 0000000..96aa003 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis256.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" +#include "utils.h" + +#include "private/common.h" + +#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H) + +#include "aegis256_aesni.h" + +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("aes,avx"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("aes,avx") +#endif + +#include "private/sse2_64_32.h" +#include +#include + +#define AES_BLOCK_LENGTH 16 + +typedef __m128i aes_block_t; +#define AES_BLOCK_XOR(A, B) _mm_xor_si128((A), (B)) +#define AES_BLOCK_AND(A, B) _mm_and_si128((A), (B)) +#define AES_BLOCK_LOAD(A) _mm_loadu_si128((const aes_block_t *) (const void *) (A)) +#define AES_BLOCK_LOAD_64x2(A, B) _mm_set_epi64x((long long) (A), (long long) (B)) +#define AES_BLOCK_STORE(A, B) _mm_storeu_si128((aes_block_t *) (void *) (A), (B)) +#define AES_ENC(A, B) _mm_aesenc_si128((A), (B)) + +static inline void +aegis256_update(aes_block_t *const state, const aes_block_t d) +{ + aes_block_t tmp; + + tmp = state[5]; + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_ENC(state[3], state[4]); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_BLOCK_XOR(AES_ENC(tmp, state[0]), d); +} + +#include "aegis256_common.h" + +struct aegis256_implementation aegis256_aesni_implementation = { SODIUM_C99(.encrypt_detached =) + encrypt_detached, + SODIUM_C99(.decrypt_detached =) + decrypt_detached }; + +#ifdef __clang__ +#pragma clang attribute pop +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.h new file mode 100644 index 0000000..21f4d81 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.h @@ -0,0 +1,8 @@ +#ifndef aegis256_aesni_H +#define aegis256_aesni_H + +#include "implementations.h" + +extern struct aegis256_implementation aegis256_aesni_implementation; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c new file mode 100644 index 0000000..e1ebd57 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis256.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" +#include "utils.h" + +#include "private/common.h" + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) + +#include "aegis256_armcrypto.h" + +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + +#ifndef __ARM_FEATURE_CRYPTO +#define __ARM_FEATURE_CRYPTO 1 +#endif +#ifndef __ARM_FEATURE_AES +#define __ARM_FEATURE_AES 1 +#endif + +#include + +#define AES_BLOCK_LENGTH 16 + +typedef uint8x16_t aes_block_t; +#define AES_BLOCK_XOR(A, B) veorq_u8((A), (B)) +#define AES_BLOCK_AND(A, B) vandq_u8((A), (B)) +#define AES_BLOCK_LOAD(A) vld1q_u8(A) +#define AES_BLOCK_LOAD_64x2(A, B) vreinterpretq_u8_u64(vsetq_lane_u64((A), vmovq_n_u64(B), 1)) +#define AES_BLOCK_STORE(A, B) vst1q_u8((A), (B)) +#define AES_ENC(A, B) veorq_u8(vaesmcq_u8(vaeseq_u8((A), vmovq_n_u8(0))), (B)) + +static inline void +aegis256_update(aes_block_t *const state, const aes_block_t d) +{ + aes_block_t tmp; + + tmp = state[5]; + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_ENC(state[3], state[4]); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_BLOCK_XOR(AES_ENC(tmp, state[0]), d); +} + +#include "aegis256_common.h" + +struct aegis256_implementation aegis256_armcrypto_implementation = { SODIUM_C99(.encrypt_detached =) + encrypt_detached, + SODIUM_C99(.decrypt_detached =) + decrypt_detached }; + +#ifdef __clang__ +#pragma clang attribute pop +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.h new file mode 100644 index 0000000..a9bd4ad --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.h @@ -0,0 +1,8 @@ +#ifndef aegis256_armcrypto_H +#define aegis256_armcrypto_H + +#include "implementations.h" + +extern struct aegis256_implementation aegis256_armcrypto_implementation; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_common.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_common.h new file mode 100644 index 0000000..5a486f2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_common.h @@ -0,0 +1,214 @@ +#define RATE 16 + +static void +aegis256_init(const uint8_t *key, const uint8_t *nonce, aes_block_t *const state) +{ + static CRYPTO_ALIGN(AES_BLOCK_LENGTH) + const uint8_t c0_[AES_BLOCK_LENGTH] = { 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x08, 0x0d, + 0x15, 0x22, 0x37, 0x59, 0x90, 0xe9, 0x79, 0x62 }; + static CRYPTO_ALIGN(AES_BLOCK_LENGTH) + const uint8_t c1_[AES_BLOCK_LENGTH] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1, + 0x20, 0x11, 0x31, 0x42, 0x73, 0xb5, 0x28, 0xdd }; + + const aes_block_t c0 = AES_BLOCK_LOAD(c0_); + const aes_block_t c1 = AES_BLOCK_LOAD(c1_); + const aes_block_t k0 = AES_BLOCK_LOAD(key); + const aes_block_t k1 = AES_BLOCK_LOAD(key + AES_BLOCK_LENGTH); + const aes_block_t n0 = AES_BLOCK_LOAD(nonce); + const aes_block_t n1 = AES_BLOCK_LOAD(nonce + AES_BLOCK_LENGTH); + const aes_block_t k0_n0 = AES_BLOCK_XOR(k0, n0); + const aes_block_t k1_n1 = AES_BLOCK_XOR(k1, n1); + int i; + + state[0] = k0_n0; + state[1] = k1_n1; + state[2] = c1; + state[3] = c0; + state[4] = AES_BLOCK_XOR(k0, c0); + state[5] = AES_BLOCK_XOR(k1, c1); + for (i = 0; i < 4; i++) { + aegis256_update(state, k0); + aegis256_update(state, k1); + aegis256_update(state, k0_n0); + aegis256_update(state, k1_n1); + } +} + +static void +aegis256_mac(uint8_t *mac, size_t maclen, size_t adlen, size_t mlen, aes_block_t *const state) +{ + aes_block_t tmp; + int i; + + tmp = AES_BLOCK_LOAD_64x2(((uint64_t) mlen) << 3, ((uint64_t) adlen) << 3); + tmp = AES_BLOCK_XOR(tmp, state[3]); + + for (i = 0; i < 7; i++) { + aegis256_update(state, tmp); + } + + if (maclen == 16) { + tmp = AES_BLOCK_XOR(state[5], state[4]); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[3], state[2])); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0])); + AES_BLOCK_STORE(mac, tmp); + } else if (maclen == 32) { + tmp = AES_BLOCK_XOR(AES_BLOCK_XOR(state[2], state[1]), state[0]); + AES_BLOCK_STORE(mac, tmp); + tmp = AES_BLOCK_XOR(AES_BLOCK_XOR(state[5], state[4]), state[3]); + AES_BLOCK_STORE(mac + 16, tmp); + } else { + memset(mac, 0, maclen); + } +} + +static inline void +aegis256_absorb(const uint8_t *const src, aes_block_t *const state) +{ + aes_block_t msg; + + msg = AES_BLOCK_LOAD(src); + aegis256_update(state, msg); +} + +static void +aegis256_enc(uint8_t *const dst, const uint8_t *const src, aes_block_t *const state) +{ + aes_block_t msg; + aes_block_t tmp; + + msg = AES_BLOCK_LOAD(src); + tmp = AES_BLOCK_XOR(msg, state[5]); + tmp = AES_BLOCK_XOR(tmp, state[4]); + tmp = AES_BLOCK_XOR(tmp, state[1]); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_AND(state[2], state[3])); + AES_BLOCK_STORE(dst, tmp); + + aegis256_update(state, msg); +} + +static void +aegis256_dec(uint8_t *const dst, const uint8_t *const src, aes_block_t *const state) +{ + aes_block_t msg; + + msg = AES_BLOCK_LOAD(src); + msg = AES_BLOCK_XOR(msg, state[5]); + msg = AES_BLOCK_XOR(msg, state[4]); + msg = AES_BLOCK_XOR(msg, state[1]); + msg = AES_BLOCK_XOR(msg, AES_BLOCK_AND(state[2], state[3])); + AES_BLOCK_STORE(dst, msg); + + aegis256_update(state, msg); +} + +static void +aegis256_declast(uint8_t *const dst, const uint8_t *const src, size_t len, aes_block_t *const state) +{ + uint8_t pad[RATE]; + aes_block_t msg; + + memset(pad, 0, sizeof pad); + memcpy(pad, src, len); + + msg = AES_BLOCK_LOAD(pad); + msg = AES_BLOCK_XOR(msg, state[5]); + msg = AES_BLOCK_XOR(msg, state[4]); + msg = AES_BLOCK_XOR(msg, state[1]); + msg = AES_BLOCK_XOR(msg, AES_BLOCK_AND(state[2], state[3])); + AES_BLOCK_STORE(pad, msg); + + memset(pad + len, 0, sizeof pad - len); + memcpy(dst, pad, len); + + msg = AES_BLOCK_LOAD(pad); + + aegis256_update(state, msg); +} + +static int +encrypt_detached(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen, + const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k) +{ + aes_block_t state[6]; + CRYPTO_ALIGN(RATE) uint8_t src[RATE]; + CRYPTO_ALIGN(RATE) uint8_t dst[RATE]; + size_t i; + + aegis256_init(k, npub, state); + + for (i = 0; i + RATE <= adlen; i += RATE) { + aegis256_absorb(ad + i, state); + } + if (adlen % RATE) { + memset(src, 0, RATE); + memcpy(src, ad + i, adlen % RATE); + aegis256_absorb(src, state); + } + for (i = 0; i + RATE <= mlen; i += RATE) { + aegis256_enc(c + i, m + i, state); + } + if (mlen % RATE) { + memset(src, 0, RATE); + memcpy(src, m + i, mlen % RATE); + aegis256_enc(dst, src, state); + memcpy(c + i, dst, mlen % RATE); + } + + aegis256_mac(mac, maclen, adlen, mlen, state); + + return 0; +} + +static int +decrypt_detached(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac, size_t maclen, + const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k) +{ + aes_block_t state[6]; + CRYPTO_ALIGN(RATE) uint8_t src[RATE]; + CRYPTO_ALIGN(RATE) uint8_t dst[RATE]; + CRYPTO_ALIGN(16) uint8_t computed_mac[32]; + const size_t mlen = clen; + size_t i; + int ret; + + aegis256_init(k, npub, state); + + for (i = 0; i + RATE <= adlen; i += RATE) { + aegis256_absorb(ad + i, state); + } + if (adlen % RATE) { + memset(src, 0, RATE); + memcpy(src, ad + i, adlen % RATE); + aegis256_absorb(src, state); + } + if (m != NULL) { + for (i = 0; i + RATE <= mlen; i += RATE) { + aegis256_dec(m + i, c + i, state); + } + } else { + for (i = 0; i + RATE <= mlen; i += RATE) { + aegis256_dec(dst, c + i, state); + } + } + if (mlen % RATE) { + if (m != NULL) { + aegis256_declast(m + i, c + i, mlen % RATE, state); + } else { + aegis256_declast(dst, c + i, mlen % RATE, state); + } + } + + COMPILER_ASSERT(sizeof computed_mac >= 32); + aegis256_mac(computed_mac, maclen, adlen, mlen, state); + ret = -1; + if (maclen == 16) { + ret = crypto_verify_16(computed_mac, mac); + } else if (maclen == 32) { + ret = crypto_verify_32(computed_mac, mac); + } + if (ret != 0 && m != NULL) { + memset(m, 0, mlen); + } + return ret; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.c new file mode 100644 index 0000000..38024d1 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis256.h" +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "export.h" +#include "utils.h" + +#include "private/common.h" + +#include "crypto_aead_aegis256.h" +#include "private/softaes.h" + +#if 1 + +#include "aegis256_soft.h" + +#define AES_BLOCK_LENGTH 16 + +typedef SoftAesBlock aes_block_t; +#define AES_BLOCK_XOR(A, B) softaes_block_xor((A), (B)) +#define AES_BLOCK_AND(A, B) softaes_block_and((A), (B)) +#define AES_BLOCK_LOAD(A) softaes_block_load(A) +#define AES_BLOCK_LOAD_64x2(A, B) softaes_block_load64x2((A), (B)) +#define AES_BLOCK_STORE(A, B) softaes_block_store((A), (B)) +#define AES_ENC(A, B) softaes_block_encrypt((A), (B)) + +static inline void +aegis256_update(aes_block_t *const state, const aes_block_t d) +{ + aes_block_t tmp; + + tmp = state[5]; + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_ENC(state[3], state[4]); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_BLOCK_XOR(AES_ENC(tmp, state[0]), d); +} + +#include "aegis256_common.h" + +struct aegis256_implementation aegis256_soft_implementation = { SODIUM_C99(.encrypt_detached =) + encrypt_detached, + SODIUM_C99(.decrypt_detached =) + decrypt_detached }; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.h new file mode 100644 index 0000000..c20198d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.h @@ -0,0 +1,8 @@ +#ifndef aegis256_soft_H +#define aegis256_soft_H + +#include "implementations.h" + +extern struct aegis256_implementation aegis256_soft_implementation; + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/implementations.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/implementations.h new file mode 100644 index 0000000..9efbf38 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/implementations.h @@ -0,0 +1,17 @@ +#ifndef aegis256_implementations_H +#define aegis256_implementations_H + +#include +#include + +#include "crypto_aead_aegis256.h" + +typedef struct aegis256_implementation { + int (*encrypt_detached)(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen, + const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k); + int (*decrypt_detached)(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac, + size_t maclen, const uint8_t *ad, size_t adlen, const uint8_t *npub, + const uint8_t *k); +} aegis256_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aead_aes256gcm.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aead_aes256gcm.c new file mode 100644 index 0000000..2946ba8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aead_aes256gcm.c @@ -0,0 +1,157 @@ +#include +#include + +#include "crypto_aead_aes256gcm.h" +#include "private/common.h" +#include "randombytes.h" + +size_t +crypto_aead_aes256gcm_keybytes(void) +{ + return crypto_aead_aes256gcm_KEYBYTES; +} + +size_t +crypto_aead_aes256gcm_nsecbytes(void) +{ + return crypto_aead_aes256gcm_NSECBYTES; +} + +size_t +crypto_aead_aes256gcm_npubbytes(void) +{ + return crypto_aead_aes256gcm_NPUBBYTES; +} + +size_t +crypto_aead_aes256gcm_abytes(void) +{ + return crypto_aead_aes256gcm_ABYTES; +} + +size_t +crypto_aead_aes256gcm_statebytes(void) +{ + return (sizeof(crypto_aead_aes256gcm_state) + (size_t) 15U) & ~(size_t) 15U; +} + +size_t +crypto_aead_aes256gcm_messagebytes_max(void) +{ + return crypto_aead_aes256gcm_MESSAGEBYTES_MAX; +} + +void +crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) +{ + randombytes_buf(k, crypto_aead_aes256gcm_KEYBYTES); +} + +#if !((defined(HAVE_ARMCRYPTO) && defined(__clang__) && defined(NATIVE_LITTLE_ENDIAN)) || \ + (defined(HAVE_TMMINTRIN_H) && defined(HAVE_WMMINTRIN_H))) + +#ifndef ENOSYS +#define ENOSYS ENXIO +#endif + +int +crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *mac, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const unsigned char *k) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *st_, const unsigned char *k) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *mac, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, unsigned long long *mlen_p, + unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + errno = ENOSYS; + return -1; +} + +int +crypto_aead_aes256gcm_is_available(void) +{ + return 0; +} + +#endif \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c new file mode 100644 index 0000000..91e578d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c @@ -0,0 +1,1009 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aes256gcm.h" +#include "crypto_verify_16.h" +#include "export.h" +#include "private/common.h" +#include "private/sse2_64_32.h" +#include "randombytes.h" +#include "runtime.h" +#include "utils.h" + +#if defined(HAVE_TMMINTRIN_H) && defined(HAVE_WMMINTRIN_H) + +#ifdef __GNUC__ +#pragma GCC target("avx,aes,pclmul") +#endif + +#if !defined(_MSC_VER) || _MSC_VER < 1800 +#define __vectorcall +#endif + +#include +#include + +#define ABYTES crypto_aead_aes256gcm_ABYTES +#define NPUBBYTES crypto_aead_aes256gcm_NPUBBYTES +#define KEYBYTES crypto_aead_aes256gcm_KEYBYTES + +#define PARALLEL_BLOCKS 7 +#undef USE_KARATSUBA_MULTIPLICATION + +typedef __m128i BlockVec; + +#define LOAD128(a) _mm_loadu_si128((const BlockVec *) (a)) +#define STORE128(a, b) _mm_storeu_si128((BlockVec *) (a), (b)) +#define AES_ENCRYPT(block_vec, rkey) _mm_aesenc_si128((block_vec), (rkey)) +#define AES_ENCRYPTLAST(block_vec, rkey) _mm_aesenclast_si128((block_vec), (rkey)) +#define AES_KEYGEN(block_vec, rc) _mm_aeskeygenassist_si128((block_vec), (rc)) +#define XOR128(a, b) _mm_xor_si128((a), (b)) +#define AND128(a, b) _mm_and_si128((a), (b)) +#define OR128(a, b) _mm_or_si128((a), (b)) +#define SET64x2(a, b) _mm_set_epi64x((uint64_t) (a), (uint64_t) (b)) +#define ZERO128 _mm_setzero_si128() +#define ONE128 SET64x2(0, 1) +#define ADD64x2(a, b) _mm_add_epi64((a), (b)) +#define SUB64x2(a, b) _mm_sub_epi64((a), (b)) +#define SHL64x2(a, b) _mm_slli_epi64((a), (b)) +#define SHR64x2(a, b) _mm_srli_epi64((a), (b)) +#define REV128(x) \ + _mm_shuffle_epi8((x), _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) +#define SHUFFLE32x4(x, a, b, c, d) _mm_shuffle_epi32((x), _MM_SHUFFLE((d), (c), (b), (a))) +#define BYTESHL128(a, b) _mm_slli_si128(a, b) +#define BYTESHR128(a, b) _mm_srli_si128(a, b) +#define SHL128(a, b) OR128(SHL64x2((a), (b)), SHR64x2(BYTESHL128((a), 8), 64 - (b))) +#define CLMULLO128(a, b) _mm_clmulepi64_si128((a), (b), 0x00) +#define CLMULHI128(a, b) _mm_clmulepi64_si128((a), (b), 0x11) +#define CLMULLOHI128(a, b) _mm_clmulepi64_si128((a), (b), 0x10) +#define CLMULHILO128(a, b) _mm_clmulepi64_si128((a), (b), 0x01) +#define PREFETCH_READ(x) _mm_prefetch((x), _MM_HINT_T1) +#define PREFETCH_WRITE(x) _mm_prefetch((x), _MM_HINT_T1) + +#define ROUNDS 14 + +#define PC_COUNT (2 * PARALLEL_BLOCKS) + +typedef struct I256 { + BlockVec hi; + BlockVec lo; + BlockVec mid; +} I256; + +typedef BlockVec Precomp; + +typedef struct GHash { + BlockVec acc; +} GHash; + +typedef struct State { + BlockVec rkeys[ROUNDS + 1]; + Precomp hx[PC_COUNT]; +} State; + +static void __vectorcall expand256(const unsigned char key[KEYBYTES], BlockVec rkeys[1 + ROUNDS]) +{ + BlockVec t1, t2, s; + size_t i = 0; + +#define EXPAND_KEY_1(RC) \ + rkeys[i++] = t2; \ + s = AES_KEYGEN(t2, RC); \ + t1 = XOR128(t1, BYTESHL128(t1, 4)); \ + t1 = XOR128(t1, BYTESHL128(t1, 8)); \ + t1 = XOR128(t1, SHUFFLE32x4(s, 3, 3, 3, 3)); + +#define EXPAND_KEY_2(RC) \ + rkeys[i++] = t1; \ + s = AES_KEYGEN(t1, RC); \ + t2 = XOR128(t2, BYTESHL128(t2, 4)); \ + t2 = XOR128(t2, BYTESHL128(t2, 8)); \ + t2 = XOR128(t2, SHUFFLE32x4(s, 2, 2, 2, 2)); + + t1 = LOAD128(&key[0]); + t2 = LOAD128(&key[16]); + + rkeys[i++] = t1; + EXPAND_KEY_1(0x01); + EXPAND_KEY_2(0x01); + EXPAND_KEY_1(0x02); + EXPAND_KEY_2(0x02); + EXPAND_KEY_1(0x04); + EXPAND_KEY_2(0x04); + EXPAND_KEY_1(0x08); + EXPAND_KEY_2(0x08); + EXPAND_KEY_1(0x10); + EXPAND_KEY_2(0x10); + EXPAND_KEY_1(0x20); + EXPAND_KEY_2(0x20); + EXPAND_KEY_1(0x40); + rkeys[i++] = t1; +} + +/* Encrypt a single AES block */ + +static inline void +encrypt(const State *st, unsigned char dst[16], const unsigned char src[16]) +{ + BlockVec t; + + size_t i; + + t = XOR128(LOAD128(src), st->rkeys[0]); + for (i = 1; i < ROUNDS; i++) { + t = AES_ENCRYPT(t, st->rkeys[i]); + } + t = AES_ENCRYPTLAST(t, st->rkeys[ROUNDS]); + STORE128(dst, t); +} + +/* Encrypt and add a single AES block */ + +static inline void __vectorcall encrypt_xor_block(const State *st, unsigned char dst[16], + const unsigned char src[16], + const BlockVec counter) +{ + BlockVec ts; + size_t i; + + ts = XOR128(counter, st->rkeys[0]); + for (i = 1; i < ROUNDS; i++) { + ts = AES_ENCRYPT(ts, st->rkeys[i]); + } + ts = AES_ENCRYPTLAST(ts, st->rkeys[i]); + ts = XOR128(ts, LOAD128(src)); + STORE128(dst, ts); +} + +/* Encrypt and add PARALLEL_BLOCKS AES blocks */ + +static inline void __vectorcall encrypt_xor_wide(const State *st, + unsigned char dst[16 * PARALLEL_BLOCKS], + const unsigned char src[16 * PARALLEL_BLOCKS], + const BlockVec counters[PARALLEL_BLOCKS]) +{ + BlockVec ts[PARALLEL_BLOCKS]; + size_t i, j; + + for (j = 0; j < PARALLEL_BLOCKS; j++) { + ts[j] = XOR128(counters[j], st->rkeys[0]); + } + for (i = 1; i < ROUNDS; i++) { + for (j = 0; j < PARALLEL_BLOCKS; j++) { + ts[j] = AES_ENCRYPT(ts[j], st->rkeys[i]); + } + } + for (j = 0; j < PARALLEL_BLOCKS; j++) { + ts[j] = AES_ENCRYPTLAST(ts[j], st->rkeys[i]); + ts[j] = XOR128(ts[j], LOAD128(&src[16 * j])); + } + for (j = 0; j < PARALLEL_BLOCKS; j++) { + STORE128(&dst[16 * j], ts[j]); + } +} + +/* Square a field element */ + +static inline I256 __vectorcall clsq128(const BlockVec x) +{ + const BlockVec r_lo = CLMULLO128(x, x); + const BlockVec r_hi = CLMULHI128(x, x); + + return (I256) { + SODIUM_C99(.hi =) r_hi, + SODIUM_C99(.lo =) r_lo, + SODIUM_C99(.mid =) ZERO128, + }; +} + +/* Multiply two field elements -- Textbook multiplication is faster than Karatsuba on some recent + * CPUs */ + +static inline I256 __vectorcall clmul128(const BlockVec x, const BlockVec y) +{ +#ifdef USE_KARATSUBA_MULTIPLICATION + const BlockVec x_hi = BYTESHR128(x, 8); + const BlockVec y_hi = BYTESHR128(y, 8); + const BlockVec r_lo = CLMULLO128(x, y); + const BlockVec r_hi = CLMULHI128(x, y); + const BlockVec r_mid = XOR128(CLMULLO128(XOR128(x, x_hi), XOR128(y, y_hi)), XOR128(r_lo, r_hi)); + + return (I256) { + SODIUM_C99(.hi =) r_hi, + SODIUM_C99(.lo =) r_lo, + SODIUM_C99(.mid =) r_mid, + }; +#else + const BlockVec r_hi = CLMULHI128(x, y); + const BlockVec r_lo = CLMULLO128(x, y); + const BlockVec r_mid = XOR128(CLMULHILO128(x, y), CLMULLOHI128(x, y)); + + return (I256) { + SODIUM_C99(.hi =) r_hi, + SODIUM_C99(.lo =) r_lo, + SODIUM_C99(.mid =) r_mid, + }; +#endif +} + +/* Merge the middle word and reduce a field element */ + +static inline BlockVec __vectorcall gcm_reduce(const I256 x) +{ + const BlockVec hi = XOR128(x.hi, BYTESHR128(x.mid, 8)); + const BlockVec lo = XOR128(x.lo, BYTESHL128(x.mid, 8)); + + const BlockVec p64 = SET64x2(0, 0xc200000000000000); + const BlockVec a = CLMULLO128(lo, p64); + const BlockVec b = XOR128(SHUFFLE32x4(lo, 2, 3, 0, 1), a); + const BlockVec c = CLMULLO128(b, p64); + const BlockVec d = XOR128(SHUFFLE32x4(b, 2, 3, 0, 1), c); + + return XOR128(d, hi); +} + +/* Precompute powers of H from `from` to `to` */ + +static inline void __vectorcall precomp(Precomp hx[PC_COUNT], const size_t from, const size_t to) +{ + const Precomp h = hx[0]; + size_t i; + + for (i = from & ~1U; i < to; i += 2) { + hx[i] = gcm_reduce(clmul128(hx[i - 1], h)); + hx[i + 1] = gcm_reduce(clsq128(hx[i / 2])); + } +} + +/* Precompute powers of H given a key and a block count */ + +static void __vectorcall precomp_for_block_count(Precomp hx[PC_COUNT], + const unsigned char gh_key[16], + const size_t block_count) +{ + const BlockVec h0 = REV128(LOAD128(gh_key)); + BlockVec carry = SET64x2(0xc200000000000000, 1); + BlockVec mask = SUB64x2(ZERO128, SHR64x2(h0, 63)); + BlockVec h0_shifted; + BlockVec h; + + mask = SHUFFLE32x4(mask, 3, 3, 3, 3); + carry = AND128(carry, mask); + h0_shifted = SHL128(h0, 1); + h = XOR128(h0_shifted, carry); + + hx[0] = h; + hx[1] = gcm_reduce(clsq128(hx[0])); + + if (block_count >= PC_COUNT) { + precomp(hx, 2, PC_COUNT); + } else { + precomp(hx, 2, block_count); + } +} + +/* Initialize a GHash */ + +static inline void +gh_init(GHash *sth) +{ + sth->acc = ZERO128; +} + +static inline I256 __vectorcall gh_update0(const GHash *const sth, const unsigned char *const p, + const Precomp hn) +{ + const BlockVec m = REV128(LOAD128(p)); + return clmul128(XOR128(sth->acc, m), hn); +} + +static inline void __vectorcall gh_update(I256 *const u, const unsigned char *p, const Precomp hn) +{ + const BlockVec m = REV128(LOAD128(p)); + const I256 t = clmul128(m, hn); + *u = (I256) { SODIUM_C99(.hi =) XOR128(u->hi, t.hi), SODIUM_C99(.lo =) XOR128(u->lo, t.lo), + SODIUM_C99(.mid =) XOR128(u->mid, t.mid) }; +} + +/* Absorb ad_len bytes of associated data. There has to be no partial block. */ + +static inline void +gh_ad_blocks(const State *st, GHash *sth, const unsigned char *ad, size_t ad_len) +{ + size_t i; + + i = (size_t) 0U; + for (; i + PC_COUNT * 16 <= ad_len; i += PC_COUNT * 16) { + I256 u = gh_update0(sth, ad + i, st->hx[PC_COUNT - 1 - 0]); + size_t j; + + for (j = 1; j < PC_COUNT; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[PC_COUNT - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + for (; i + PC_COUNT * 16 / 2 <= ad_len; i += PC_COUNT * 16 / 2) { + I256 u = gh_update0(sth, ad + i, st->hx[PC_COUNT / 2 - 1 - 0]); + size_t j; + + for (j = 1; j < PC_COUNT / 2; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[PC_COUNT / 2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + for (; i + 4 * 16 <= ad_len; i += 4 * 16) { + size_t j; + I256 u = gh_update0(sth, ad + i, st->hx[4 - 1 - 0]); + + for (j = 1; j < 4; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[4 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + for (; i + 2 * 16 <= ad_len; i += 2 * 16) { + size_t j; + I256 u = gh_update0(sth, ad + i, st->hx[2 - 1 - 0]); + + for (j = 1; j < 2; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + if (i < ad_len) { + I256 u = gh_update0(sth, ad + i, st->hx[0]); + sth->acc = gcm_reduce(u); + } +} + +/* Increment counters */ + +static inline BlockVec __vectorcall incr_counters(BlockVec rev_counters[], BlockVec counter, + const size_t n) +{ + size_t i; + + const BlockVec one = ONE128; + for (i = 0; i < n; i++) { + rev_counters[i] = REV128(counter); + counter = ADD64x2(counter, one); + } + return counter; +} + +/* Compute the number of required blocks to encrypt and authenticate `ad_len` of associated data, + * and `m_len` of encrypted bytes. Return `0` if limits would be exceeded.*/ + +static inline size_t +required_blocks(const size_t ad_len, const size_t m_len) +{ + const size_t ad_blocks = (ad_len + 15) / 16; + const size_t m_blocks = (m_len + 15) / 16; + + if (ad_len > SIZE_MAX - 2 * PARALLEL_BLOCKS * 16 || + m_len > SIZE_MAX - 2 * PARALLEL_BLOCKS * 16 || ad_len < ad_blocks || m_len < m_blocks || + m_blocks >= (1ULL << 32) - 2) { + return 0; + } + return ad_blocks + m_blocks + 1; +} + +/* Generic AES-GCM encryption. "Generic" as it can handle arbitrary input sizes, +unlike a length-limited version that would precompute all the required powers of H */ + +static void +aes_gcm_encrypt_generic(const State *st, GHash *sth, unsigned char mac[ABYTES], unsigned char *dst, + const unsigned char *src, size_t src_len, const unsigned char *ad, + size_t ad_len, unsigned char counter_[16]) +{ + CRYPTO_ALIGN(32) I256 u; + CRYPTO_ALIGN(16) unsigned char last_blocks[2 * 16]; + const BlockVec one = ONE128; + BlockVec final_block; + BlockVec rev_counters[PARALLEL_BLOCKS]; + BlockVec counter; + size_t i; + size_t j; + size_t left; + size_t pi; + + COMPILER_ASSERT(PC_COUNT % PARALLEL_BLOCKS == 0); + + /* Associated data */ + + if (ad != NULL && ad_len != 0) { + gh_ad_blocks(st, sth, ad, ad_len & ~15); + left = ad_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, ad + ad_len - left, left); + gh_ad_blocks(st, sth, pad, sizeof pad); + } + } + + /* Encrypted data */ + + counter = REV128(LOAD128(counter_)); + i = 0; + + /* 2*PARALLEL_BLOCKS aggregation */ + + if (src_len - i >= 2 * PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + i += PARALLEL_BLOCKS * 16; + + for (; i + 2 * PARALLEL_BLOCKS * 16 <= src_len; i += 2 * PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + + PREFETCH_READ(src + i + PARALLEL_BLOCKS * 16); +#if PARALLEL_BLOCKS >= 64 / 16 + PREFETCH_READ(src + i + PARALLEL_BLOCKS * 16 + 64); +#endif + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[2 * PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[2 * PARALLEL_BLOCKS - 1 - j]); + } + + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i + PARALLEL_BLOCKS * 16, src + i + PARALLEL_BLOCKS * 16, + rev_counters); + + PREFETCH_READ(src + i + 2 * PARALLEL_BLOCKS * 16); +#if PARALLEL_BLOCKS >= 64 / 16 + PREFETCH_READ(src + i + 2 * PARALLEL_BLOCKS * 16 + 64); +#endif + pi = i; + for (j = 0; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* PARALLEL_BLOCKS aggregation */ + + if (src_len - i >= PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + i += PARALLEL_BLOCKS * 16; + + for (; i + PARALLEL_BLOCKS * 16 <= src_len; i += PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* 4-blocks aggregation */ + + for (; i + 4 * 16 <= src_len; i += 4 * 16) { + counter = incr_counters(rev_counters, counter, 4); + for (j = 0; j < 4; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + + u = gh_update0(sth, dst + i, st->hx[4 - 1 - 0]); + for (j = 1; j < 4; j += 1) { + gh_update(&u, dst + i + j * 16, st->hx[4 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* 2-blocks aggregation */ + + for (; i + 2 * 16 <= src_len; i += 2 * 16) { + counter = incr_counters(rev_counters, counter, 2); + for (j = 0; j < 2; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + + u = gh_update0(sth, dst + i, st->hx[2 - 1 - 0]); + for (j = 1; j < 2; j += 1) { + gh_update(&u, dst + i + j * 16, st->hx[2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* Remaining *partial* blocks; if we have 16 bytes left, we want to keep the + full block authenticated along with the final block, hence < and not <= */ + + for (; i + 16 < src_len; i += 16) { + encrypt_xor_block(st, dst + i, src + i, REV128(counter)); + u = gh_update0(sth, dst + i, st->hx[1 - 1 - 0]); + sth->acc = gcm_reduce(u); + counter = ADD64x2(counter, one); + } + + /* Authenticate both the last block of the message and the final block */ + + final_block = REV128(SET64x2(ad_len * 8, src_len * 8)); + STORE32_BE(counter_ + NPUBBYTES, 1); + encrypt(st, mac, counter_); + left = src_len - i; + if (left != 0) { + for (j = 0; j < left; j++) { + last_blocks[j] = src[i + j]; + } + STORE128(last_blocks + 16, final_block); + encrypt_xor_block(st, last_blocks, last_blocks, REV128(counter)); + for (; j < 16; j++) { + last_blocks[j] = 0; + } + for (j = 0; j < left; j++) { + dst[i + j] = last_blocks[j]; + } + gh_ad_blocks(st, sth, last_blocks, 32); + } else { + STORE128(last_blocks, final_block); + gh_ad_blocks(st, sth, last_blocks, 16); + } + STORE128(mac, XOR128(LOAD128(mac), REV128(sth->acc))); +} + +/* Generic AES-GCM decryption. "Generic" as it can handle arbitrary input sizes, +unlike a length-limited version that would precompute all the required powers of H */ + +static void +aes_gcm_decrypt_generic(const State *st, GHash *sth, unsigned char mac[ABYTES], unsigned char *dst, + const unsigned char *src, size_t src_len, const unsigned char *ad, + size_t ad_len, unsigned char counter_[16]) +{ + CRYPTO_ALIGN(32) I256 u; + CRYPTO_ALIGN(16) unsigned char last_blocks[2 * 16]; + const BlockVec one = ONE128; + BlockVec final_block; + BlockVec rev_counters[PARALLEL_BLOCKS]; + BlockVec counter; + size_t i; + size_t j; + size_t left; + + COMPILER_ASSERT(PC_COUNT % PARALLEL_BLOCKS == 0); + + /* Associated data */ + + if (ad != NULL && ad_len != 0) { + gh_ad_blocks(st, sth, ad, ad_len & ~15); + left = ad_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, ad + ad_len - left, left); + gh_ad_blocks(st, sth, pad, sizeof pad); + } + } + + /* Encrypted data */ + + counter = REV128(LOAD128(counter_)); + i = 0; + + /* 2*PARALLEL_BLOCKS aggregation */ + + while (i + 2 * PARALLEL_BLOCKS * 16 <= src_len) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + + u = gh_update0(sth, src + i, st->hx[2 * PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[2 * PARALLEL_BLOCKS - 1 - j]); + } + + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + + i += PARALLEL_BLOCKS * 16; + for (j = 0; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + i += PARALLEL_BLOCKS * 16; + } + + /* PARALLEL_BLOCKS aggregation */ + + for (; i + PARALLEL_BLOCKS * 16 <= src_len; i += PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + + u = gh_update0(sth, src + i, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + } + + /* 4-blocks aggregation */ + + for (; i + 4 * 16 <= src_len; i += 4 * 16) { + counter = incr_counters(rev_counters, counter, 4); + + u = gh_update0(sth, src + i, st->hx[4 - 1 - 0]); + for (j = 1; j < 4; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[4 - 1 - j]); + } + sth->acc = gcm_reduce(u); + + for (j = 0; j < 4; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + } + + /* 2-blocks aggregation */ + + for (; i + 2 * 16 <= src_len; i += 2 * 16) { + counter = incr_counters(rev_counters, counter, 2); + + u = gh_update0(sth, src + i, st->hx[2 - 1 - 0]); + for (j = 1; j < 2; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + + for (j = 0; j < 2; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + } + + /* Remaining *partial* blocks; if we have 16 bytes left, we want to keep the + full block authenticated along with the final block, hence < and not <= */ + + for (; i + 16 < src_len; i += 16) { + u = gh_update0(sth, src + i, st->hx[1 - 1 - 0]); + sth->acc = gcm_reduce(u); + encrypt_xor_block(st, dst + i, src + i, REV128(counter)); + counter = ADD64x2(counter, one); + } + + /* Authenticate both the last block of the message and the final block */ + + final_block = REV128(SET64x2(ad_len * 8, src_len * 8)); + STORE32_BE(counter_ + NPUBBYTES, 1); + encrypt(st, mac, counter_); + left = src_len - i; + if (left != 0) { + for (j = 0; j < left; j++) { + last_blocks[j] = src[i + j]; + } + for (; j < 16; j++) { + last_blocks[j] = 0; + } + STORE128(last_blocks + 16, final_block); + gh_ad_blocks(st, sth, last_blocks, 32); + encrypt_xor_block(st, last_blocks, last_blocks, REV128(counter)); + for (j = 0; j < left; j++) { + dst[i + j] = last_blocks[j]; + } + } else { + STORE128(last_blocks, final_block); + gh_ad_blocks(st, sth, last_blocks, 16); + } + STORE128(mac, XOR128(LOAD128(mac), REV128(sth->acc))); +} + +int +crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *st_, const unsigned char *k) +{ + State *st = (State *) (void *) st_; + CRYPTO_ALIGN(16) unsigned char h[16]; + + COMPILER_ASSERT(sizeof *st_ >= sizeof *st); + + expand256(k, st->rkeys); + memset(h, 0, sizeof h); + encrypt(st, h, h); + + precomp_for_block_count(st->hx, h, PC_COUNT); + + return 0; +} + +int +crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long m_len_, const unsigned char *ad, + unsigned long long ad_len_, + const unsigned char *nsec, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + const State *st = (const State *) (const void *) st_; + GHash sth; + CRYPTO_ALIGN(16) unsigned char j[16]; + size_t gh_required_blocks; + const size_t ad_len = (size_t) ad_len_; + const size_t m_len = (size_t) m_len_; + + (void) nsec; + if (maclen_p != NULL) { + *maclen_p = 0; + } + if (ad_len_ > SODIUM_SIZE_MAX || m_len_ > SODIUM_SIZE_MAX) { + sodium_misuse(); + } + gh_required_blocks = required_blocks(ad_len, m_len); + if (gh_required_blocks == 0) { + memset(mac, 0xd0, ABYTES); + memset(c, 0, m_len); + return -1; + } + + gh_init(&sth); + + memcpy(j, npub, NPUBBYTES); + STORE32_BE(j + NPUBBYTES, 2); + + aes_gcm_encrypt_generic(st, &sth, mac, c, m, m_len, ad, ad_len, j); + + if (maclen_p != NULL) { + *maclen_p = ABYTES; + } + return 0; +} + +int +crypto_aead_aes256gcm_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, + unsigned long long m_len, const unsigned char *ad, + unsigned long long ad_len, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + const int ret = crypto_aead_aes256gcm_encrypt_detached(c, c + m_len, NULL, m, m_len, ad, ad_len, + nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + *clen_p = m_len + crypto_aead_aes256gcm_ABYTES; + } else { + *clen_p = 0; + } + } + return ret; +} + +int +crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long m_len, const unsigned char *ad, + unsigned long long ad_len, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + int ret; + + PREFETCH_WRITE(c); + PREFETCH_READ(m); + PREFETCH_READ(ad); + + crypto_aead_aes256gcm_beforenm(&st, k); + ret = crypto_aead_aes256gcm_encrypt_detached_afternm(c, mac, maclen_p, m, m_len, ad, ad_len, + nsec, npub, &st); + sodium_memzero(&st, sizeof st); + + return ret; +} + +int +crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + int ret = crypto_aead_aes256gcm_encrypt_detached_afternm(c, c + mlen, NULL, m, mlen, ad, adlen, + nsec, npub, st_); + if (clen_p != NULL) { + *clen_p = mlen + crypto_aead_aes256gcm_ABYTES; + } + return ret; +} + +static int +crypto_aead_aes256gcm_verify_mac(unsigned char *nsec, const unsigned char *c, + unsigned long long c_len_, const unsigned char *mac, + const unsigned char *ad, unsigned long long ad_len_, + const unsigned char *npub, const crypto_aead_aes256gcm_state *st_) +{ + const State *st = (const State *) (const void *) st_; + GHash sth; + BlockVec final_block; + CRYPTO_ALIGN(16) unsigned char j[16]; + CRYPTO_ALIGN(16) unsigned char computed_mac[16]; + CRYPTO_ALIGN(16) unsigned char last_block[16]; + size_t gh_required_blocks; + size_t left; + const size_t ad_len = (size_t) ad_len_; + const size_t c_len = (size_t) c_len_; + int ret; + + (void) nsec; + if (ad_len_ > SODIUM_SIZE_MAX || c_len_ > SODIUM_SIZE_MAX) { + sodium_misuse(); + } + gh_required_blocks = required_blocks(ad_len, c_len); + if (gh_required_blocks == 0) { + return -1; + } + + gh_init(&sth); + + memcpy(j, npub, NPUBBYTES); + STORE32_BE(j + NPUBBYTES, 2); + + gh_ad_blocks(st, &sth, ad, ad_len & ~15); + left = ad_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, ad + ad_len - left, left); + gh_ad_blocks(st, &sth, pad, sizeof pad); + } + + gh_ad_blocks(st, &sth, c, c_len & ~15); + left = c_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, c + c_len - left, left); + gh_ad_blocks(st, &sth, pad, sizeof pad); + } + final_block = REV128(SET64x2(ad_len * 8, c_len * 8)); + STORE32_BE(j + NPUBBYTES, 1); + encrypt(st, computed_mac, j); + STORE128(last_block, final_block); + gh_ad_blocks(st, &sth, last_block, 16); + STORE128(computed_mac, XOR128(LOAD128(computed_mac), REV128(sth.acc))); + + ret = crypto_verify_16(mac, computed_mac); + sodium_memzero(computed_mac, sizeof computed_mac); + + return ret; +} + +int +crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long c_len_, + const unsigned char *mac, const unsigned char *ad, + unsigned long long ad_len_, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + const State *st = (const State *) (const void *) st_; + GHash sth; + CRYPTO_ALIGN(16) unsigned char j[16]; + unsigned char computed_mac[16]; + size_t gh_required_blocks; + const size_t ad_len = (size_t) ad_len_; + const size_t c_len = (size_t) c_len_; + const size_t m_len = c_len; + + (void) nsec; + if (ad_len_ > SODIUM_SIZE_MAX || c_len_ > SODIUM_SIZE_MAX) { + sodium_misuse(); + } + if (m == NULL) { + return crypto_aead_aes256gcm_verify_mac(nsec, c, c_len, mac, ad, ad_len, npub, st_); + } + gh_required_blocks = required_blocks(ad_len, m_len); + if (gh_required_blocks == 0) { + return -1; + } + + gh_init(&sth); + + memcpy(j, npub, NPUBBYTES); + STORE32_BE(j + NPUBBYTES, 2); + + aes_gcm_decrypt_generic(st, &sth, computed_mac, m, c, m_len, ad, ad_len, j); + + if (crypto_verify_16(mac, computed_mac) != 0) { + sodium_memzero(computed_mac, sizeof computed_mac); + memset(m, 0xd0, m_len); + return -1; + } + return 0; +} + +int +crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, unsigned long long *mlen_p, + unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= ABYTES) { + ret = crypto_aead_aes256gcm_decrypt_detached_afternm( + m, nsec, c, clen - ABYTES, c + clen - ABYTES, ad, adlen, npub, st_); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +int +crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *mac, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const unsigned char *k) +{ + CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + + PREFETCH_WRITE(m); + PREFETCH_READ(c); + PREFETCH_READ(ad); + + crypto_aead_aes256gcm_beforenm(&st, k); + + return crypto_aead_aes256gcm_decrypt_detached_afternm( + m, nsec, c, clen, mac, ad, adlen, npub, (const crypto_aead_aes256gcm_state *) &st); +} + +int +crypto_aead_aes256gcm_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + int ret; + + PREFETCH_WRITE(m); + PREFETCH_READ(c); + PREFETCH_READ(ad); + + crypto_aead_aes256gcm_beforenm(&st, k); + + ret = crypto_aead_aes256gcm_decrypt_afternm(m, mlen_p, nsec, c, clen, ad, adlen, npub, + (const crypto_aead_aes256gcm_state *) &st); + sodium_memzero(&st, sizeof st); + + return ret; +} + +int +crypto_aead_aes256gcm_is_available(void) +{ + return sodium_runtime_has_pclmul() & sodium_runtime_has_aesni() & sodium_runtime_has_avx(); +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c new file mode 100644 index 0000000..0a5a128 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c @@ -0,0 +1,1032 @@ +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aes256gcm.h" +#include "crypto_verify_16.h" +#include "export.h" +#include "private/common.h" +#include "randombytes.h" +#include "runtime.h" +#include "utils.h" + +#if defined(HAVE_ARMCRYPTO) && defined(__clang__) && defined(NATIVE_LITTLE_ENDIAN) + +#if !defined(MSC_VER) || _MSC_VER < 1800 +#define __vectorcall +#endif + +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + +#ifndef __ARM_FEATURE_CRYPTO +#define __ARM_FEATURE_CRYPTO 1 +#endif +#ifndef __ARM_FEATURE_AES +#define __ARM_FEATURE_AES 1 +#endif + +#include + +#define ABYTES crypto_aead_aes256gcm_ABYTES +#define NPUBBYTES crypto_aead_aes256gcm_NPUBBYTES +#define KEYBYTES crypto_aead_aes256gcm_KEYBYTES + +#define PARALLEL_BLOCKS 6 +#undef USE_KARATSUBA_MULTIPLICATION + +typedef uint64x2_t BlockVec; + +#define LOAD128(a) vld1q_u64((const uint64_t *) (const void *) (a)) +#define STORE128(a, b) vst1q_u64((uint64_t *) (void *) (a), (b)) +#define AES_XENCRYPT(block_vec, rkey) \ + vreinterpretq_u64_u8(vaesmcq_u8(vaeseq_u8(vreinterpretq_u8_u64(block_vec), rkey))) +#define AES_XENCRYPTLAST(block_vec, rkey) \ + vreinterpretq_u64_u8(vaeseq_u8(vreinterpretq_u8_u64(block_vec), rkey)) +#define XOR128(a, b) veorq_u64((a), (b)) +#define AND128(a, b) vandq_u64((a), (b)) +#define OR128(a, b) vorrq_u64((a), (b)) +#define SET64x2(a, b) vsetq_lane_u64((uint64_t) (a), vmovq_n_u64((uint64_t) (b)), 1) +#define ZERO128 vmovq_n_u8(0) +#define ONE128 SET64x2(0, 1) +#define ADD64x2(a, b) vaddq_u64((a), (b)) +#define SUB64x2(a, b) vsubq_u64((a), (b)) +#define SHL64x2(a, b) vshlq_n_u64((a), (b)) +#define SHR64x2(a, b) vshrq_n_u64((a), (b)) +#define REV128(x) \ + vreinterpretq_u64_u8(__builtin_shufflevector(vreinterpretq_u8_u64(x), vreinterpretq_u8_u64(x), \ + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, \ + 1, 0)) +#define SHUFFLE32x4(x, a, b, c, d) \ + vreinterpretq_u64_u32(__builtin_shufflevector(vreinterpretq_u32_u64(x), \ + vreinterpretq_u32_u64(x), (a), (b), (c), (d))) +#define BYTESHL128(a, b) vreinterpretq_u64_u8(vextq_s8(vdupq_n_s8(0), (int8x16_t) a, 16 - (b))) +#define BYTESHR128(a, b) vreinterpretq_u64_u8(vextq_s8((int8x16_t) a, vdupq_n_s8(0), (b))) + +#define SHL128(a, b) OR128(SHL64x2((a), (b)), SHR64x2(BYTESHL128((a), 8), 64 - (b))) +#define CLMULLO128(a, b) \ + vreinterpretq_u64_p128(vmull_p64((poly64_t) vget_low_u64(a), (poly64_t) vget_low_u64(b))) +#define CLMULHI128(a, b) \ + vreinterpretq_u64_p128(vmull_high_p64(vreinterpretq_p64_s64(a), vreinterpretq_p64_s64(b))) +#define CLMULLOHI128(a, b) \ + vreinterpretq_u64_p128(vmull_p64((poly64_t) vget_low_u64(a), (poly64_t) vget_high_u64(b))) +#define CLMULHILO128(a, b) \ + vreinterpretq_u64_p128(vmull_p64((poly64_t) vget_high_u64(a), (poly64_t) vget_low_u64(b))) +#define PREFETCH_READ(x) __builtin_prefetch((x), 0, 2) +#define PREFETCH_WRITE(x) __builtin_prefetch((x), 1, 2); + +static inline BlockVec +AES_KEYGEN(BlockVec block_vec, const int rc) +{ + uint8x16_t a = vaeseq_u8(vreinterpretq_u8_u64(block_vec), vmovq_n_u8(0)); + const uint8x16_t b = + __builtin_shufflevector(a, a, 4, 1, 14, 11, 1, 14, 11, 4, 12, 9, 6, 3, 9, 6, 3, 12); + const uint64x2_t c = SET64x2((uint64_t) rc << 32, (uint64_t) rc << 32); + return XOR128(b, c); +} + +#define ROUNDS 14 + +#define PC_COUNT (2 * PARALLEL_BLOCKS) + +typedef struct I256 { + BlockVec hi; + BlockVec lo; + BlockVec mid; +} I256; + +typedef BlockVec Precomp; + +typedef struct GHash { + BlockVec acc; +} GHash; + +typedef struct State { + BlockVec rkeys[ROUNDS + 1]; + Precomp hx[PC_COUNT]; +} State; + +static void __vectorcall expand256(const unsigned char key[KEYBYTES], BlockVec rkeys[1 + ROUNDS]) +{ + BlockVec t1, t2, s; + size_t i = 0; + +#define EXPAND_KEY_1(RC) \ + rkeys[i++] = t2; \ + s = AES_KEYGEN(t2, RC); \ + t1 = XOR128(t1, BYTESHL128(t1, 4)); \ + t1 = XOR128(t1, BYTESHL128(t1, 8)); \ + t1 = XOR128(t1, SHUFFLE32x4(s, 3, 3, 3, 3)); + +#define EXPAND_KEY_2(RC) \ + rkeys[i++] = t1; \ + s = AES_KEYGEN(t1, RC); \ + t2 = XOR128(t2, BYTESHL128(t2, 4)); \ + t2 = XOR128(t2, BYTESHL128(t2, 8)); \ + t2 = XOR128(t2, SHUFFLE32x4(s, 2, 2, 2, 2)); + + t1 = LOAD128(&key[0]); + t2 = LOAD128(&key[16]); + + rkeys[i++] = t1; + EXPAND_KEY_1(0x01); + EXPAND_KEY_2(0x01); + EXPAND_KEY_1(0x02); + EXPAND_KEY_2(0x02); + EXPAND_KEY_1(0x04); + EXPAND_KEY_2(0x04); + EXPAND_KEY_1(0x08); + EXPAND_KEY_2(0x08); + EXPAND_KEY_1(0x10); + EXPAND_KEY_2(0x10); + EXPAND_KEY_1(0x20); + EXPAND_KEY_2(0x20); + EXPAND_KEY_1(0x40); + rkeys[i++] = t1; +} + +/* Encrypt a single AES block */ + +static inline void +encrypt(const State *st, unsigned char dst[16], const unsigned char src[16]) +{ + BlockVec t; + + size_t i; + + t = AES_XENCRYPT(LOAD128(src), st->rkeys[0]); + for (i = 1; i < ROUNDS - 1; i++) { + t = AES_XENCRYPT(t, st->rkeys[i]); + } + t = AES_XENCRYPTLAST(t, st->rkeys[i]); + t = XOR128(t, st->rkeys[ROUNDS]); + STORE128(dst, t); +} + +/* Encrypt and add a single AES block */ + +static inline void __vectorcall encrypt_xor_block(const State *st, unsigned char dst[16], + const unsigned char src[16], + const BlockVec counter) +{ + BlockVec ts; + size_t i; + + ts = AES_XENCRYPT(counter, st->rkeys[0]); + for (i = 1; i < ROUNDS - 1; i++) { + ts = AES_XENCRYPT(ts, st->rkeys[i]); + } + ts = AES_XENCRYPTLAST(ts, st->rkeys[i]); + ts = XOR128(ts, XOR128(st->rkeys[ROUNDS], LOAD128(src))); + STORE128(dst, ts); +} + +/* Encrypt and add PARALLEL_BLOCKS AES blocks */ + +static inline void __vectorcall encrypt_xor_wide(const State *st, + unsigned char dst[16 * PARALLEL_BLOCKS], + const unsigned char src[16 * PARALLEL_BLOCKS], + const BlockVec counters[PARALLEL_BLOCKS]) +{ + BlockVec ts[PARALLEL_BLOCKS]; + size_t i, j; + + for (j = 0; j < PARALLEL_BLOCKS; j++) { + ts[j] = AES_XENCRYPT(counters[j], st->rkeys[0]); + } + for (i = 1; i < ROUNDS - 1; i++) { + for (j = 0; j < PARALLEL_BLOCKS; j++) { + ts[j] = AES_XENCRYPT(ts[j], st->rkeys[i]); + } + } + for (j = 0; j < PARALLEL_BLOCKS; j++) { + ts[j] = AES_XENCRYPTLAST(ts[j], st->rkeys[i]); + ts[j] = XOR128(ts[j], XOR128(st->rkeys[ROUNDS], LOAD128(&src[16 * j]))); + } + for (j = 0; j < PARALLEL_BLOCKS; j++) { + STORE128(&dst[16 * j], ts[j]); + } +} + +/* Square a field element */ + +static inline I256 __vectorcall clsq128(const BlockVec x) +{ + const BlockVec r_lo = CLMULLO128(x, x); + const BlockVec r_hi = CLMULHI128(x, x); + + return (I256) { + SODIUM_C99(.hi =) r_hi, + SODIUM_C99(.lo =) r_lo, + SODIUM_C99(.mid =) ZERO128, + }; +} + +/* Multiply two field elements -- Textbook multiplication is faster than Karatsuba on some recent + * CPUs */ + +static inline I256 __vectorcall clmul128(const BlockVec x, const BlockVec y) +{ +#ifdef USE_KARATSUBA_MULTIPLICATION + const BlockVec x_hi = BYTESHR128(x, 8); + const BlockVec y_hi = BYTESHR128(y, 8); + const BlockVec r_lo = CLMULLO128(x, y); + const BlockVec r_hi = CLMULHI128(x, y); + const BlockVec r_mid = XOR128(CLMULLO128(XOR128(x, x_hi), XOR128(y, y_hi)), XOR128(r_lo, r_hi)); + + return (I256) { + SODIUM_C99(.hi =) r_hi, + SODIUM_C99(.lo =) r_lo, + SODIUM_C99(.mid =) r_mid, + }; +#else + const BlockVec r_hi = CLMULHI128(x, y); + const BlockVec r_lo = CLMULLO128(x, y); + const BlockVec r_mid = XOR128(CLMULHILO128(x, y), CLMULLOHI128(x, y)); + + return (I256) { + SODIUM_C99(.hi =) r_hi, + SODIUM_C99(.lo =) r_lo, + SODIUM_C99(.mid =) r_mid, + }; +#endif +} + +/* Merge the middle word and reduce a field element */ + +static inline BlockVec __vectorcall gcm_reduce(const I256 x) +{ + const BlockVec hi = XOR128(x.hi, BYTESHR128(x.mid, 8)); + const BlockVec lo = XOR128(x.lo, BYTESHL128(x.mid, 8)); + + const BlockVec p64 = SET64x2(0, 0xc200000000000000); + const BlockVec a = CLMULLO128(lo, p64); + const BlockVec b = XOR128(SHUFFLE32x4(lo, 2, 3, 0, 1), a); + const BlockVec c = CLMULLO128(b, p64); + const BlockVec d = XOR128(SHUFFLE32x4(b, 2, 3, 0, 1), c); + + return XOR128(d, hi); +} + +/* Precompute powers of H from `from` to `to` */ + +static inline void __vectorcall precomp(Precomp hx[PC_COUNT], const size_t from, const size_t to) +{ + const Precomp h = hx[0]; + size_t i; + + for (i = from & ~1U; i < to; i += 2) { + hx[i] = gcm_reduce(clmul128(hx[i - 1], h)); + hx[i + 1] = gcm_reduce(clsq128(hx[i / 2])); + } +} + +/* Precompute powers of H given a key and a block count */ + +static void __vectorcall precomp_for_block_count(Precomp hx[PC_COUNT], + const unsigned char gh_key[16], + const size_t block_count) +{ + const BlockVec h0 = REV128(LOAD128(gh_key)); + BlockVec carry = SET64x2(0xc200000000000000, 1); + BlockVec mask = SUB64x2(ZERO128, SHR64x2(h0, 63)); + BlockVec h0_shifted; + BlockVec h; + + mask = SHUFFLE32x4(mask, 3, 3, 3, 3); + carry = AND128(carry, mask); + h0_shifted = SHL128(h0, 1); + h = XOR128(h0_shifted, carry); + + hx[0] = h; + hx[1] = gcm_reduce(clsq128(hx[0])); + + if (block_count >= PC_COUNT) { + precomp(hx, 2, PC_COUNT); + } else { + precomp(hx, 2, block_count); + } +} + +/* Initialize a GHash */ + +static inline void +gh_init(GHash *sth) +{ + sth->acc = ZERO128; +} + +static inline I256 __vectorcall gh_update0(const GHash *const sth, const unsigned char *const p, + const Precomp hn) +{ + const BlockVec m = REV128(LOAD128(p)); + return clmul128(XOR128(sth->acc, m), hn); +} + +static inline void __vectorcall gh_update(I256 *const u, const unsigned char *p, const Precomp hn) +{ + const BlockVec m = REV128(LOAD128(p)); + const I256 t = clmul128(m, hn); + *u = (I256) { SODIUM_C99(.hi =) XOR128(u->hi, t.hi), SODIUM_C99(.lo =) XOR128(u->lo, t.lo), + SODIUM_C99(.mid =) XOR128(u->mid, t.mid) }; +} + +/* Absorb ad_len bytes of associated data. There has to be no partial block. */ + +static inline void +gh_ad_blocks(const State *st, GHash *sth, const unsigned char *ad, size_t ad_len) +{ + size_t i; + + i = (size_t) 0U; + for (; i + PC_COUNT * 16 <= ad_len; i += PC_COUNT * 16) { + I256 u = gh_update0(sth, ad + i, st->hx[PC_COUNT - 1 - 0]); + size_t j; + + for (j = 1; j < PC_COUNT; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[PC_COUNT - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + for (; i + PC_COUNT * 16 / 2 <= ad_len; i += PC_COUNT * 16 / 2) { + I256 u = gh_update0(sth, ad + i, st->hx[PC_COUNT / 2 - 1 - 0]); + size_t j; + + for (j = 1; j < PC_COUNT / 2; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[PC_COUNT / 2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + for (; i + 4 * 16 <= ad_len; i += 4 * 16) { + size_t j; + I256 u = gh_update0(sth, ad + i, st->hx[4 - 1 - 0]); + + for (j = 1; j < 4; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[4 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + for (; i + 2 * 16 <= ad_len; i += 2 * 16) { + size_t j; + I256 u = gh_update0(sth, ad + i, st->hx[2 - 1 - 0]); + + for (j = 1; j < 2; j += 1) { + gh_update(&u, ad + i + j * 16, st->hx[2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + if (i < ad_len) { + I256 u = gh_update0(sth, ad + i, st->hx[0]); + sth->acc = gcm_reduce(u); + } +} + +/* Increment counters */ + +static inline BlockVec __vectorcall incr_counters(BlockVec rev_counters[], BlockVec counter, + const size_t n) +{ + size_t i; + + const BlockVec one = ONE128; + for (i = 0; i < n; i++) { + rev_counters[i] = REV128(counter); + counter = ADD64x2(counter, one); + } + return counter; +} + +/* Compute the number of required blocks to encrypt and authenticate `ad_len` of associated data, + * and `m_len` of encrypted bytes. Return `0` if limits would be exceeded.*/ + +static inline size_t +required_blocks(const size_t ad_len, const size_t m_len) +{ + const size_t ad_blocks = (ad_len + 15) / 16; + const size_t m_blocks = (m_len + 15) / 16; + + if (ad_len > SIZE_MAX - 2 * PARALLEL_BLOCKS * 16 || + m_len > SIZE_MAX - 2 * PARALLEL_BLOCKS * 16 || ad_len < ad_blocks || m_len < m_blocks || + m_blocks >= (1ULL << 32) - 2) { + return 0; + } + return ad_blocks + m_blocks + 1; +} + +/* Generic AES-GCM encryption. "Generic" as it can handle arbitrary input sizes, +unlike a length-limited version that would precompute all the required powers of H */ + +static void +aes_gcm_encrypt_generic(const State *st, GHash *sth, unsigned char mac[ABYTES], unsigned char *dst, + const unsigned char *src, size_t src_len, const unsigned char *ad, + size_t ad_len, unsigned char counter_[16]) +{ + CRYPTO_ALIGN(32) I256 u; + CRYPTO_ALIGN(16) unsigned char last_blocks[2 * 16]; + const BlockVec one = ONE128; + BlockVec final_block; + BlockVec rev_counters[PARALLEL_BLOCKS]; + BlockVec counter; + size_t i; + size_t j; + size_t left; + size_t pi; + + COMPILER_ASSERT(PC_COUNT % PARALLEL_BLOCKS == 0); + + /* Associated data */ + + if (ad != NULL && ad_len != 0) { + gh_ad_blocks(st, sth, ad, ad_len & ~15); + left = ad_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, ad + ad_len - left, left); + gh_ad_blocks(st, sth, pad, sizeof pad); + } + } + + /* Encrypted data */ + + counter = REV128(LOAD128(counter_)); + i = 0; + + /* 2*PARALLEL_BLOCKS aggregation */ + + if (src_len - i >= 2 * PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + i += PARALLEL_BLOCKS * 16; + + for (; i + 2 * PARALLEL_BLOCKS * 16 <= src_len; i += 2 * PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[2 * PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[2 * PARALLEL_BLOCKS - 1 - j]); + } + + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i + PARALLEL_BLOCKS * 16, src + i + PARALLEL_BLOCKS * 16, + rev_counters); + + pi = i; + for (j = 0; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* PARALLEL_BLOCKS aggregation */ + + if (src_len - i >= PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + i += PARALLEL_BLOCKS * 16; + + for (; i + PARALLEL_BLOCKS * 16 <= src_len; i += PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + pi = i - PARALLEL_BLOCKS * 16; + u = gh_update0(sth, dst + pi, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, dst + pi + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* 4-blocks aggregation */ + + for (; i + 4 * 16 <= src_len; i += 4 * 16) { + counter = incr_counters(rev_counters, counter, 4); + for (j = 0; j < 4; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + + u = gh_update0(sth, dst + i, st->hx[4 - 1 - 0]); + for (j = 1; j < 4; j += 1) { + gh_update(&u, dst + i + j * 16, st->hx[4 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* 2-blocks aggregation */ + + for (; i + 2 * 16 <= src_len; i += 2 * 16) { + counter = incr_counters(rev_counters, counter, 2); + for (j = 0; j < 2; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + + u = gh_update0(sth, dst + i, st->hx[2 - 1 - 0]); + for (j = 1; j < 2; j += 1) { + gh_update(&u, dst + i + j * 16, st->hx[2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + } + + /* Remaining *partial* blocks; if we have 16 bytes left, we want to keep the + full block authenticated along with the final block, hence < and not <= */ + + for (; i + 16 < src_len; i += 16) { + encrypt_xor_block(st, dst + i, src + i, REV128(counter)); + u = gh_update0(sth, dst + i, st->hx[1 - 1 - 0]); + sth->acc = gcm_reduce(u); + counter = ADD64x2(counter, one); + } + + /* Authenticate both the last block of the message and the final block */ + + final_block = REV128(SET64x2(ad_len * 8, src_len * 8)); + STORE32_BE(counter_ + NPUBBYTES, 1); + encrypt(st, mac, counter_); + left = src_len - i; + if (left != 0) { + for (j = 0; j < left; j++) { + last_blocks[j] = src[i + j]; + } + STORE128(last_blocks + 16, final_block); + encrypt_xor_block(st, last_blocks, last_blocks, REV128(counter)); + for (; j < 16; j++) { + last_blocks[j] = 0; + } + for (j = 0; j < left; j++) { + dst[i + j] = last_blocks[j]; + } + gh_ad_blocks(st, sth, last_blocks, 32); + } else { + STORE128(last_blocks, final_block); + gh_ad_blocks(st, sth, last_blocks, 16); + } + STORE128(mac, XOR128(LOAD128(mac), REV128(sth->acc))); +} + +/* Generic AES-GCM decryption. "Generic" as it can handle arbitrary input sizes, +unlike a length-limited version that would precompute all the required powers of H */ + +static void +aes_gcm_decrypt_generic(const State *st, GHash *sth, unsigned char mac[ABYTES], unsigned char *dst, + const unsigned char *src, size_t src_len, const unsigned char *ad, + size_t ad_len, unsigned char counter_[16]) +{ + CRYPTO_ALIGN(32) I256 u; + CRYPTO_ALIGN(16) unsigned char last_blocks[2 * 16]; + const BlockVec one = ONE128; + BlockVec final_block; + BlockVec rev_counters[PARALLEL_BLOCKS]; + BlockVec counter; + size_t i; + size_t j; + size_t left; + + COMPILER_ASSERT(PC_COUNT % PARALLEL_BLOCKS == 0); + + /* Associated data */ + + if (ad != NULL && ad_len != 0) { + gh_ad_blocks(st, sth, ad, ad_len & ~15); + left = ad_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, ad + ad_len - left, left); + gh_ad_blocks(st, sth, pad, sizeof pad); + } + } + + /* Encrypted data */ + + counter = REV128(LOAD128(counter_)); + i = 0; + + /* 2*PARALLEL_BLOCKS aggregation */ + + while (i + 2 * PARALLEL_BLOCKS * 16 <= src_len) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + + u = gh_update0(sth, src + i, st->hx[2 * PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[2 * PARALLEL_BLOCKS - 1 - j]); + } + + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + + i += PARALLEL_BLOCKS * 16; + for (j = 0; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + i += PARALLEL_BLOCKS * 16; + } + + /* PARALLEL_BLOCKS aggregation */ + + for (; i + PARALLEL_BLOCKS * 16 <= src_len; i += PARALLEL_BLOCKS * 16) { + counter = incr_counters(rev_counters, counter, PARALLEL_BLOCKS); + + u = gh_update0(sth, src + i, st->hx[PARALLEL_BLOCKS - 1 - 0]); + for (j = 1; j < PARALLEL_BLOCKS; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[PARALLEL_BLOCKS - 1 - j]); + } + sth->acc = gcm_reduce(u); + + encrypt_xor_wide(st, dst + i, src + i, rev_counters); + } + + /* 4-blocks aggregation */ + + for (; i + 4 * 16 <= src_len; i += 4 * 16) { + counter = incr_counters(rev_counters, counter, 4); + + u = gh_update0(sth, src + i, st->hx[4 - 1 - 0]); + for (j = 1; j < 4; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[4 - 1 - j]); + } + sth->acc = gcm_reduce(u); + + for (j = 0; j < 4; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + } + + /* 2-blocks aggregation */ + + for (; i + 2 * 16 <= src_len; i += 2 * 16) { + counter = incr_counters(rev_counters, counter, 2); + + u = gh_update0(sth, src + i, st->hx[2 - 1 - 0]); + for (j = 1; j < 2; j += 1) { + gh_update(&u, src + i + j * 16, st->hx[2 - 1 - j]); + } + sth->acc = gcm_reduce(u); + + for (j = 0; j < 2; j++) { + encrypt_xor_block(st, dst + i + j * 16, src + i + j * 16, rev_counters[j]); + } + } + + /* Remaining *partial* blocks; if we have 16 bytes left, we want to keep the + full block authenticated along with the final block, hence < and not <= */ + + for (; i + 16 < src_len; i += 16) { + u = gh_update0(sth, src + i, st->hx[1 - 1 - 0]); + sth->acc = gcm_reduce(u); + encrypt_xor_block(st, dst + i, src + i, REV128(counter)); + counter = ADD64x2(counter, one); + } + + /* Authenticate both the last block of the message and the final block */ + + final_block = REV128(SET64x2(ad_len * 8, src_len * 8)); + STORE32_BE(counter_ + NPUBBYTES, 1); + encrypt(st, mac, counter_); + left = src_len - i; + if (left != 0) { + for (j = 0; j < left; j++) { + last_blocks[j] = src[i + j]; + } + for (; j < 16; j++) { + last_blocks[j] = 0; + } + STORE128(last_blocks + 16, final_block); + gh_ad_blocks(st, sth, last_blocks, 32); + encrypt_xor_block(st, last_blocks, last_blocks, REV128(counter)); + for (j = 0; j < left; j++) { + dst[i + j] = last_blocks[j]; + } + } else { + STORE128(last_blocks, final_block); + gh_ad_blocks(st, sth, last_blocks, 16); + } + STORE128(mac, XOR128(LOAD128(mac), REV128(sth->acc))); +} + +int +crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *st_, const unsigned char *k) +{ + State *st = (State *) (void *) st_; + CRYPTO_ALIGN(16) unsigned char h[16]; + + COMPILER_ASSERT(sizeof *st_ >= sizeof *st); + + expand256(k, st->rkeys); + memset(h, 0, sizeof h); + encrypt(st, h, h); + + precomp_for_block_count(st->hx, h, PC_COUNT); + + return 0; +} + +int +crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long m_len_, const unsigned char *ad, + unsigned long long ad_len_, + const unsigned char *nsec, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + const State *st = (const State *) (const void *) st_; + GHash sth; + CRYPTO_ALIGN(16) unsigned char j[16]; + size_t gh_required_blocks; + const size_t ad_len = (size_t) ad_len_; + const size_t m_len = (size_t) m_len_; + + (void) nsec; + if (maclen_p != NULL) { + *maclen_p = 0; + } + if (ad_len_ > SODIUM_SIZE_MAX || m_len_ > SODIUM_SIZE_MAX) { + sodium_misuse(); + } + gh_required_blocks = required_blocks(ad_len, m_len); + if (gh_required_blocks == 0) { + memset(mac, 0xd0, ABYTES); + memset(c, 0, m_len); + return -1; + } + + gh_init(&sth); + + memcpy(j, npub, NPUBBYTES); + STORE32_BE(j + NPUBBYTES, 2); + + aes_gcm_encrypt_generic(st, &sth, mac, c, m, m_len, ad, ad_len, j); + + if (maclen_p != NULL) { + *maclen_p = ABYTES; + } + return 0; +} + +int +crypto_aead_aes256gcm_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, + unsigned long long m_len, const unsigned char *ad, + unsigned long long ad_len, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + const int ret = crypto_aead_aes256gcm_encrypt_detached(c, c + m_len, NULL, m, m_len, ad, ad_len, + nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + *clen_p = m_len + crypto_aead_aes256gcm_ABYTES; + } else { + *clen_p = 0; + } + } + return ret; +} + +int +crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long m_len, const unsigned char *ad, + unsigned long long ad_len, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + int ret; + + PREFETCH_WRITE(c); + PREFETCH_READ(m); + PREFETCH_READ(ad); + + crypto_aead_aes256gcm_beforenm(&st, k); + ret = crypto_aead_aes256gcm_encrypt_detached_afternm(c, mac, maclen_p, m, m_len, ad, ad_len, + nsec, npub, &st); + sodium_memzero(&st, sizeof st); + + return ret; +} + +int +crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + int ret = crypto_aead_aes256gcm_encrypt_detached_afternm(c, c + mlen, NULL, m, mlen, ad, adlen, + nsec, npub, st_); + if (clen_p != NULL) { + *clen_p = mlen + crypto_aead_aes256gcm_ABYTES; + } + return ret; +} + +static int +crypto_aead_aes256gcm_verify_mac(unsigned char *nsec, const unsigned char *c, + unsigned long long c_len_, const unsigned char *mac, + const unsigned char *ad, unsigned long long ad_len_, + const unsigned char *npub, const crypto_aead_aes256gcm_state *st_) +{ + const State *st = (const State *) (const void *) st_; + GHash sth; + BlockVec final_block; + CRYPTO_ALIGN(16) unsigned char j[16]; + CRYPTO_ALIGN(16) unsigned char computed_mac[16]; + CRYPTO_ALIGN(16) unsigned char last_block[16]; + size_t gh_required_blocks; + size_t left; + const size_t ad_len = (size_t) ad_len_; + const size_t c_len = (size_t) c_len_; + int ret; + + (void) nsec; + if (ad_len_ > SODIUM_SIZE_MAX || c_len_ > SODIUM_SIZE_MAX) { + sodium_misuse(); + } + gh_required_blocks = required_blocks(ad_len, c_len); + if (gh_required_blocks == 0) { + return -1; + } + + gh_init(&sth); + + memcpy(j, npub, NPUBBYTES); + STORE32_BE(j + NPUBBYTES, 2); + + gh_ad_blocks(st, &sth, ad, ad_len & ~15); + left = ad_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, ad + ad_len - left, left); + gh_ad_blocks(st, &sth, pad, sizeof pad); + } + + gh_ad_blocks(st, &sth, c, c_len & ~15); + left = c_len & 15; + if (left != 0) { + unsigned char pad[16]; + + memset(pad, 0, sizeof pad); + memcpy(pad, c + c_len - left, left); + gh_ad_blocks(st, &sth, pad, sizeof pad); + } + final_block = REV128(SET64x2(ad_len * 8, c_len * 8)); + STORE32_BE(j + NPUBBYTES, 1); + encrypt(st, computed_mac, j); + STORE128(last_block, final_block); + gh_ad_blocks(st, &sth, last_block, 16); + STORE128(computed_mac, XOR128(LOAD128(computed_mac), REV128(sth.acc))); + + ret = crypto_verify_16(mac, computed_mac); + sodium_memzero(computed_mac, sizeof computed_mac); + + return ret; +} + +int +crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long c_len_, + const unsigned char *mac, const unsigned char *ad, + unsigned long long ad_len_, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + const State *st = (const State *) (const void *) st_; + GHash sth; + CRYPTO_ALIGN(16) unsigned char j[16]; + unsigned char computed_mac[16]; + size_t gh_required_blocks; + const size_t ad_len = (size_t) ad_len_; + const size_t c_len = (size_t) c_len_; + const size_t m_len = c_len; + + (void) nsec; + if (ad_len_ > SODIUM_SIZE_MAX || c_len_ > SODIUM_SIZE_MAX) { + sodium_misuse(); + } + if (m == NULL) { + return crypto_aead_aes256gcm_verify_mac(nsec, c, c_len, mac, ad, ad_len, npub, st_); + } + gh_required_blocks = required_blocks(ad_len, m_len); + if (gh_required_blocks == 0) { + return -1; + } + + gh_init(&sth); + + memcpy(j, npub, NPUBBYTES); + STORE32_BE(j + NPUBBYTES, 2); + + aes_gcm_decrypt_generic(st, &sth, computed_mac, m, c, m_len, ad, ad_len, j); + + if (crypto_verify_16(mac, computed_mac) != 0) { + sodium_memzero(computed_mac, sizeof computed_mac); + memset(m, 0xd0, m_len); + return -1; + } + return 0; +} + +int +crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, unsigned long long *mlen_p, + unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const crypto_aead_aes256gcm_state *st_) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= ABYTES) { + ret = crypto_aead_aes256gcm_decrypt_detached_afternm( + m, nsec, c, clen - ABYTES, c + clen - ABYTES, ad, adlen, npub, st_); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +int +crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *mac, const unsigned char *ad, + unsigned long long adlen, const unsigned char *npub, + const unsigned char *k) +{ + CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + + PREFETCH_WRITE(m); + PREFETCH_READ(c); + PREFETCH_READ(ad); + + crypto_aead_aes256gcm_beforenm(&st, k); + + return crypto_aead_aes256gcm_decrypt_detached_afternm( + m, nsec, c, clen, mac, ad, adlen, npub, (const crypto_aead_aes256gcm_state *) &st); +} + +int +crypto_aead_aes256gcm_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + int ret; + + PREFETCH_WRITE(m); + PREFETCH_READ(c); + PREFETCH_READ(ad); + + crypto_aead_aes256gcm_beforenm(&st, k); + + ret = crypto_aead_aes256gcm_decrypt_afternm(m, mlen_p, nsec, c, clen, ad, adlen, npub, + (const crypto_aead_aes256gcm_state *) &st); + sodium_memzero(&st, sizeof st); + + return ret; +} + +int +crypto_aead_aes256gcm_is_available(void) +{ + return sodium_runtime_has_armcrypto(); +} + +#ifdef __clang__ +#pragma clang attribute pop +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c new file mode 100644 index 0000000..c354087 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c @@ -0,0 +1,400 @@ + +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_chacha20poly1305.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_stream_chacha20.h" +#include "crypto_verify_16.h" +#include "randombytes.h" +#include "utils.h" + +#include "private/chacha20_ietf_ext.h" +#include "private/common.h" + +static const unsigned char _pad0[16] = { 0 }; + +int +crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char slen[8U]; + + (void) nsec; + crypto_stream_chacha20(block0, sizeof block0, npub, k); + crypto_onetimeauth_poly1305_init(&state, block0); + sodium_memzero(block0, sizeof block0); + + crypto_onetimeauth_poly1305_update(&state, ad, adlen); + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_stream_chacha20_xor_ic(c, m, mlen, npub, 1U, k); + + crypto_onetimeauth_poly1305_update(&state, c, mlen); + STORE64_LE(slen, (uint64_t) mlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&state, mac); + sodium_memzero(&state, sizeof state); + + if (maclen_p != NULL) { + *maclen_p = crypto_aead_chacha20poly1305_ABYTES; + } + return 0; +} + +int +crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned long long clen = 0ULL; + int ret; + + if (mlen > crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + ret = crypto_aead_chacha20poly1305_encrypt_detached(c, + c + mlen, NULL, + m, mlen, + ad, adlen, + nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + clen = mlen + crypto_aead_chacha20poly1305_ABYTES; + } + *clen_p = clen; + } + return ret; +} + +int +crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char slen[8U]; + + (void) nsec; + crypto_stream_chacha20_ietf(block0, sizeof block0, npub, k); + crypto_onetimeauth_poly1305_init(&state, block0); + sodium_memzero(block0, sizeof block0); + + crypto_onetimeauth_poly1305_update(&state, ad, adlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - adlen) & 0xf); + + crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, npub, 1U, k); + + crypto_onetimeauth_poly1305_update(&state, c, mlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - mlen) & 0xf); + + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + STORE64_LE(slen, (uint64_t) mlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&state, mac); + sodium_memzero(&state, sizeof state); + + if (maclen_p != NULL) { + *maclen_p = crypto_aead_chacha20poly1305_ietf_ABYTES; + } + return 0; +} + +int +crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned long long clen = 0ULL; + int ret; + + if (mlen > crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached(c, + c + mlen, NULL, + m, mlen, + ad, adlen, + nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + clen = mlen + crypto_aead_chacha20poly1305_ietf_ABYTES; + } + *clen_p = clen; + } + return ret; +} + +int +crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char slen[8U]; + unsigned char computed_mac[crypto_aead_chacha20poly1305_ABYTES]; + unsigned long long mlen; + int ret; + + (void) nsec; + crypto_stream_chacha20(block0, sizeof block0, npub, k); + crypto_onetimeauth_poly1305_init(&state, block0); + sodium_memzero(block0, sizeof block0); + + crypto_onetimeauth_poly1305_update(&state, ad, adlen); + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + mlen = clen; + crypto_onetimeauth_poly1305_update(&state, c, mlen); + STORE64_LE(slen, (uint64_t) mlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&state, computed_mac); + sodium_memzero(&state, sizeof state); + + COMPILER_ASSERT(sizeof computed_mac == 16U); + ret = crypto_verify_16(computed_mac, mac); + sodium_memzero(computed_mac, sizeof computed_mac); + if (m == NULL) { + return ret; + } + if (ret != 0) { + memset(m, 0, mlen); + return -1; + } + crypto_stream_chacha20_xor_ic(m, c, mlen, npub, 1U, k); + + return 0; +} + +int +crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= crypto_aead_chacha20poly1305_ABYTES) { + ret = crypto_aead_chacha20poly1305_decrypt_detached + (m, nsec, + c, clen - crypto_aead_chacha20poly1305_ABYTES, + c + clen - crypto_aead_chacha20poly1305_ABYTES, + ad, adlen, npub, k); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - crypto_aead_chacha20poly1305_ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +int +crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char slen[8U]; + unsigned char computed_mac[crypto_aead_chacha20poly1305_ietf_ABYTES]; + unsigned long long mlen; + int ret; + + (void) nsec; + crypto_stream_chacha20_ietf(block0, sizeof block0, npub, k); + crypto_onetimeauth_poly1305_init(&state, block0); + sodium_memzero(block0, sizeof block0); + + crypto_onetimeauth_poly1305_update(&state, ad, adlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - adlen) & 0xf); + + mlen = clen; + crypto_onetimeauth_poly1305_update(&state, c, mlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - mlen) & 0xf); + + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + STORE64_LE(slen, (uint64_t) mlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&state, computed_mac); + sodium_memzero(&state, sizeof state); + + COMPILER_ASSERT(sizeof computed_mac == 16U); + ret = crypto_verify_16(computed_mac, mac); + sodium_memzero(computed_mac, sizeof computed_mac); + if (m == NULL) { + return ret; + } + if (ret != 0) { + memset(m, 0, mlen); + return -1; + } + crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, npub, 1U, k); + + return 0; +} + +int +crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= crypto_aead_chacha20poly1305_ietf_ABYTES) { + ret = crypto_aead_chacha20poly1305_ietf_decrypt_detached + (m, nsec, + c, clen - crypto_aead_chacha20poly1305_ietf_ABYTES, + c + clen - crypto_aead_chacha20poly1305_ietf_ABYTES, + ad, adlen, npub, k); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - crypto_aead_chacha20poly1305_ietf_ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +size_t +crypto_aead_chacha20poly1305_ietf_keybytes(void) +{ + return crypto_aead_chacha20poly1305_ietf_KEYBYTES; +} + +size_t +crypto_aead_chacha20poly1305_ietf_npubbytes(void) +{ + return crypto_aead_chacha20poly1305_ietf_NPUBBYTES; +} + +size_t +crypto_aead_chacha20poly1305_ietf_nsecbytes(void) +{ + return crypto_aead_chacha20poly1305_ietf_NSECBYTES; +} + +size_t +crypto_aead_chacha20poly1305_ietf_abytes(void) +{ + return crypto_aead_chacha20poly1305_ietf_ABYTES; +} + +size_t +crypto_aead_chacha20poly1305_ietf_messagebytes_max(void) +{ + return crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX; +} + +void +crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) +{ + randombytes_buf(k, crypto_aead_chacha20poly1305_ietf_KEYBYTES); +} + +size_t +crypto_aead_chacha20poly1305_keybytes(void) +{ + return crypto_aead_chacha20poly1305_KEYBYTES; +} + +size_t +crypto_aead_chacha20poly1305_npubbytes(void) +{ + return crypto_aead_chacha20poly1305_NPUBBYTES; +} + +size_t +crypto_aead_chacha20poly1305_nsecbytes(void) +{ + return crypto_aead_chacha20poly1305_NSECBYTES; +} + +size_t +crypto_aead_chacha20poly1305_abytes(void) +{ + return crypto_aead_chacha20poly1305_ABYTES; +} + +size_t +crypto_aead_chacha20poly1305_messagebytes_max(void) +{ + return crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX; +} + +void +crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) +{ + randombytes_buf(k, crypto_aead_chacha20poly1305_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c new file mode 100644 index 0000000..07e3655 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c @@ -0,0 +1,262 @@ + +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_chacha20poly1305.h" +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_core_hchacha20.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_stream_chacha20.h" +#include "crypto_verify_16.h" +#include "randombytes.h" +#include "utils.h" + +#include "private/chacha20_ietf_ext.h" +#include "private/common.h" + +static const unsigned char _pad0[16] = { 0 }; + +static int +_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char slen[8U]; + + (void) nsec; + crypto_stream_chacha20_ietf_ext(block0, sizeof block0, npub, k); + crypto_onetimeauth_poly1305_init(&state, block0); + sodium_memzero(block0, sizeof block0); + + crypto_onetimeauth_poly1305_update(&state, ad, adlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - adlen) & 0xf); + + crypto_stream_chacha20_ietf_ext_xor_ic(c, m, mlen, npub, 1U, k); + + crypto_onetimeauth_poly1305_update(&state, c, mlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - mlen) & 0xf); + + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + STORE64_LE(slen, (uint64_t) mlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&state, mac); + sodium_memzero(&state, sizeof state); + + if (maclen_p != NULL) { + *maclen_p = crypto_aead_chacha20poly1305_ietf_ABYTES; + } + return 0; +} + +static int +_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char slen[8U]; + unsigned char computed_mac[crypto_aead_chacha20poly1305_ietf_ABYTES]; + unsigned long long mlen; + int ret; + + (void) nsec; + crypto_stream_chacha20_ietf_ext(block0, sizeof block0, npub, k); + crypto_onetimeauth_poly1305_init(&state, block0); + sodium_memzero(block0, sizeof block0); + + crypto_onetimeauth_poly1305_update(&state, ad, adlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - adlen) & 0xf); + + mlen = clen; + crypto_onetimeauth_poly1305_update(&state, c, mlen); + crypto_onetimeauth_poly1305_update(&state, _pad0, (0x10 - mlen) & 0xf); + + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + STORE64_LE(slen, (uint64_t) mlen); + crypto_onetimeauth_poly1305_update(&state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&state, computed_mac); + sodium_memzero(&state, sizeof state); + + COMPILER_ASSERT(sizeof computed_mac == 16U); + ret = crypto_verify_16(computed_mac, mac); + sodium_memzero(computed_mac, sizeof computed_mac); + if (m == NULL) { + return ret; + } + if (ret != 0) { + memset(m, 0, mlen); + return -1; + } + crypto_stream_chacha20_ietf_ext_xor_ic(m, c, mlen, npub, 1U, k); + + return 0; +} + +int +crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES]; + unsigned char npub2[crypto_aead_chacha20poly1305_ietf_NPUBBYTES] = { 0 }; + int ret; + + crypto_core_hchacha20(k2, npub, k, NULL); + memcpy(npub2 + 4, npub + crypto_core_hchacha20_INPUTBYTES, + crypto_aead_chacha20poly1305_ietf_NPUBBYTES - 4); + ret = _encrypt_detached(c, mac, maclen_p, m, mlen, ad, adlen, + nsec, npub2, k2); + sodium_memzero(k2, crypto_core_hchacha20_OUTPUTBYTES); + + return ret; +} + +int +crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned long long clen = 0ULL; + int ret; + + if (mlen > crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + ret = crypto_aead_xchacha20poly1305_ietf_encrypt_detached + (c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + clen = mlen + crypto_aead_xchacha20poly1305_ietf_ABYTES; + } + *clen_p = clen; + } + return ret; +} + +int +crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES]; + unsigned char npub2[crypto_aead_chacha20poly1305_ietf_NPUBBYTES] = { 0 }; + int ret; + + crypto_core_hchacha20(k2, npub, k, NULL); + memcpy(npub2 + 4, npub + crypto_core_hchacha20_INPUTBYTES, + crypto_aead_chacha20poly1305_ietf_NPUBBYTES - 4); + ret = _decrypt_detached(m, nsec, c, clen, mac, ad, adlen, npub2, k2); + sodium_memzero(k2, crypto_core_hchacha20_OUTPUTBYTES); + + return ret; +} + +int +crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= crypto_aead_xchacha20poly1305_ietf_ABYTES) { + ret = crypto_aead_xchacha20poly1305_ietf_decrypt_detached + (m, nsec, + c, clen - crypto_aead_xchacha20poly1305_ietf_ABYTES, + c + clen - crypto_aead_xchacha20poly1305_ietf_ABYTES, + ad, adlen, npub, k); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - crypto_aead_xchacha20poly1305_ietf_ABYTES; + } + *mlen_p = mlen; + } + return ret; +} + +size_t +crypto_aead_xchacha20poly1305_ietf_keybytes(void) +{ + return crypto_aead_xchacha20poly1305_ietf_KEYBYTES; +} + +size_t +crypto_aead_xchacha20poly1305_ietf_npubbytes(void) +{ + return crypto_aead_xchacha20poly1305_ietf_NPUBBYTES; +} + +size_t +crypto_aead_xchacha20poly1305_ietf_nsecbytes(void) +{ + return crypto_aead_xchacha20poly1305_ietf_NSECBYTES; +} + +size_t +crypto_aead_xchacha20poly1305_ietf_abytes(void) +{ + return crypto_aead_xchacha20poly1305_ietf_ABYTES; +} + +size_t +crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void) +{ + return crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX; +} + +void +crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) +{ + randombytes_buf(k, crypto_aead_xchacha20poly1305_ietf_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/crypto_auth.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/crypto_auth.c new file mode 100644 index 0000000..d061c8c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/crypto_auth.c @@ -0,0 +1,41 @@ + +#include "crypto_auth.h" +#include "randombytes.h" + +size_t +crypto_auth_bytes(void) +{ + return crypto_auth_BYTES; +} + +size_t +crypto_auth_keybytes(void) +{ + return crypto_auth_KEYBYTES; +} + +const char * +crypto_auth_primitive(void) +{ + return crypto_auth_PRIMITIVE; +} + +int +crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_auth_hmacsha512256(out, in, inlen, k); +} + +int +crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen,const unsigned char *k) +{ + return crypto_auth_hmacsha512256_verify(h, in, inlen, k); +} + +void +crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) +{ + randombytes_buf(k, crypto_auth_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c new file mode 100644 index 0000000..a951e93 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c @@ -0,0 +1,118 @@ + +#include +#include +#include + +#include "crypto_auth_hmacsha256.h" +#include "crypto_hash_sha256.h" +#include "crypto_verify_32.h" +#include "randombytes.h" +#include "utils.h" + +size_t +crypto_auth_hmacsha256_bytes(void) +{ + return crypto_auth_hmacsha256_BYTES; +} + +size_t +crypto_auth_hmacsha256_keybytes(void) +{ + return crypto_auth_hmacsha256_KEYBYTES; +} + +size_t +crypto_auth_hmacsha256_statebytes(void) +{ + return sizeof(crypto_auth_hmacsha256_state); +} + +void +crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) +{ + randombytes_buf(k, crypto_auth_hmacsha256_KEYBYTES); +} + +int +crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, size_t keylen) +{ + unsigned char pad[64]; + unsigned char khash[32]; + size_t i; + + if (keylen > 64) { + crypto_hash_sha256_init(&state->ictx); + crypto_hash_sha256_update(&state->ictx, key, keylen); + crypto_hash_sha256_final(&state->ictx, khash); + key = khash; + keylen = 32; + } + crypto_hash_sha256_init(&state->ictx); + memset(pad, 0x36, 64); + for (i = 0; i < keylen; i++) { + pad[i] ^= key[i]; + } + crypto_hash_sha256_update(&state->ictx, pad, 64); + + crypto_hash_sha256_init(&state->octx); + memset(pad, 0x5c, 64); + for (i = 0; i < keylen; i++) { + pad[i] ^= key[i]; + } + crypto_hash_sha256_update(&state->octx, pad, 64); + + sodium_memzero((void *) pad, sizeof pad); + sodium_memzero((void *) khash, sizeof khash); + + return 0; +} + +int +crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, unsigned long long inlen) +{ + crypto_hash_sha256_update(&state->ictx, in, inlen); + + return 0; +} + +int +crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) +{ + unsigned char ihash[32]; + + crypto_hash_sha256_final(&state->ictx, ihash); + crypto_hash_sha256_update(&state->octx, ihash, 32); + crypto_hash_sha256_final(&state->octx, out); + + sodium_memzero((void *) ihash, sizeof ihash); + + return 0; +} + +int +crypto_auth_hmacsha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + crypto_auth_hmacsha256_state state; + + crypto_auth_hmacsha256_init(&state, k, crypto_auth_hmacsha256_KEYBYTES); + crypto_auth_hmacsha256_update(&state, in, inlen); + crypto_auth_hmacsha256_final(&state, out); + + return 0; +} + +int +crypto_auth_hmacsha256_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + unsigned char correct[32]; + + crypto_auth_hmacsha256(correct, in, inlen, k); + + return crypto_verify_32(h, correct) | (-(h == correct)) | + sodium_memcmp(correct, h, 32); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c new file mode 100644 index 0000000..018d7a4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c @@ -0,0 +1,118 @@ + +#include +#include +#include + +#include "crypto_auth_hmacsha512.h" +#include "crypto_hash_sha512.h" +#include "crypto_verify_64.h" +#include "randombytes.h" +#include "utils.h" + +size_t +crypto_auth_hmacsha512_bytes(void) +{ + return crypto_auth_hmacsha512_BYTES; +} + +size_t +crypto_auth_hmacsha512_keybytes(void) +{ + return crypto_auth_hmacsha512_KEYBYTES; +} + +size_t +crypto_auth_hmacsha512_statebytes(void) +{ + return sizeof(crypto_auth_hmacsha512_state); +} + +void +crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) +{ + randombytes_buf(k, crypto_auth_hmacsha512_KEYBYTES); +} + +int +crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, size_t keylen) +{ + unsigned char pad[128]; + unsigned char khash[64]; + size_t i; + + if (keylen > 128) { + crypto_hash_sha512_init(&state->ictx); + crypto_hash_sha512_update(&state->ictx, key, keylen); + crypto_hash_sha512_final(&state->ictx, khash); + key = khash; + keylen = 64; + } + crypto_hash_sha512_init(&state->ictx); + memset(pad, 0x36, 128); + for (i = 0; i < keylen; i++) { + pad[i] ^= key[i]; + } + crypto_hash_sha512_update(&state->ictx, pad, 128); + + crypto_hash_sha512_init(&state->octx); + memset(pad, 0x5c, 128); + for (i = 0; i < keylen; i++) { + pad[i] ^= key[i]; + } + crypto_hash_sha512_update(&state->octx, pad, 128); + + sodium_memzero((void *) pad, sizeof pad); + sodium_memzero((void *) khash, sizeof khash); + + return 0; +} + +int +crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, unsigned long long inlen) +{ + crypto_hash_sha512_update(&state->ictx, in, inlen); + + return 0; +} + +int +crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) +{ + unsigned char ihash[64]; + + crypto_hash_sha512_final(&state->ictx, ihash); + crypto_hash_sha512_update(&state->octx, ihash, 64); + crypto_hash_sha512_final(&state->octx, out); + + sodium_memzero((void *) ihash, sizeof ihash); + + return 0; +} + +int +crypto_auth_hmacsha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + crypto_auth_hmacsha512_state state; + + crypto_auth_hmacsha512_init(&state, k, crypto_auth_hmacsha512_KEYBYTES); + crypto_auth_hmacsha512_update(&state, in, inlen); + crypto_auth_hmacsha512_final(&state, out); + + return 0; +} + +int +crypto_auth_hmacsha512_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + unsigned char correct[64]; + + crypto_auth_hmacsha512(correct, in, inlen, k); + + return crypto_verify_64(h, correct) | (-(h == correct)) | + sodium_memcmp(correct, h, 64); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c new file mode 100644 index 0000000..432d6db --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c @@ -0,0 +1,93 @@ + +#include +#include +#include + +#include "crypto_auth_hmacsha512.h" +#include "crypto_auth_hmacsha512256.h" +#include "crypto_hash_sha512.h" +#include "crypto_verify_32.h" +#include "randombytes.h" +#include "utils.h" + +size_t +crypto_auth_hmacsha512256_bytes(void) +{ + return crypto_auth_hmacsha512256_BYTES; +} + +size_t +crypto_auth_hmacsha512256_keybytes(void) +{ + return crypto_auth_hmacsha512256_KEYBYTES; +} + +size_t +crypto_auth_hmacsha512256_statebytes(void) +{ + return sizeof(crypto_auth_hmacsha512256_state); +} + +void +crypto_auth_hmacsha512256_keygen( + unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) +{ + randombytes_buf(k, crypto_auth_hmacsha512256_KEYBYTES); +} + +int +crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, size_t keylen) +{ + return crypto_auth_hmacsha512_init((crypto_auth_hmacsha512_state *) state, + key, keylen); +} + +int +crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return crypto_auth_hmacsha512_update((crypto_auth_hmacsha512_state *) state, + in, inlen); +} + +int +crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) +{ + unsigned char out0[64]; + + crypto_auth_hmacsha512_final((crypto_auth_hmacsha512_state *) state, out0); + memcpy(out, out0, 32); + + return 0; +} + +int +crypto_auth_hmacsha512256(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + crypto_auth_hmacsha512256_state state; + + crypto_auth_hmacsha512256_init(&state, k, + crypto_auth_hmacsha512256_KEYBYTES); + crypto_auth_hmacsha512256_update(&state, in, inlen); + crypto_auth_hmacsha512256_final(&state, out); + + return 0; +} + +int +crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + unsigned char correct[32]; + + crypto_auth_hmacsha512256(correct, in, inlen, k); + + return crypto_verify_32(h, correct) | (-(h == correct)) | + sodium_memcmp(correct, h, 32); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box.c new file mode 100644 index 0000000..7e4f00b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box.c @@ -0,0 +1,114 @@ + +#include "crypto_box.h" + +size_t +crypto_box_seedbytes(void) +{ + return crypto_box_SEEDBYTES; +} + +size_t +crypto_box_publickeybytes(void) +{ + return crypto_box_PUBLICKEYBYTES; +} + +size_t +crypto_box_secretkeybytes(void) +{ + return crypto_box_SECRETKEYBYTES; +} + +size_t +crypto_box_beforenmbytes(void) +{ + return crypto_box_BEFORENMBYTES; +} + +size_t +crypto_box_noncebytes(void) +{ + return crypto_box_NONCEBYTES; +} + +size_t +crypto_box_zerobytes(void) +{ + return crypto_box_ZEROBYTES; +} + +size_t +crypto_box_boxzerobytes(void) +{ + return crypto_box_BOXZEROBYTES; +} + +size_t +crypto_box_macbytes(void) +{ + return crypto_box_MACBYTES; +} + +size_t +crypto_box_messagebytes_max(void) +{ + return crypto_box_MESSAGEBYTES_MAX; +} + +const char * +crypto_box_primitive(void) +{ + return crypto_box_PRIMITIVE; +} + +int +crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) +{ + return crypto_box_curve25519xsalsa20poly1305_seed_keypair(pk, sk, seed); +} + +int +crypto_box_keypair(unsigned char *pk, unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_keypair(pk, sk); +} + +int +crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_beforenm(k, pk, sk); +} + +int +crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_box_curve25519xsalsa20poly1305_afternm(c, m, mlen, n, k); +} + +int +crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_box_curve25519xsalsa20poly1305_open_afternm(m, c, clen, n, k); +} + +int +crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305(c, m, mlen, n, pk, sk); +} + +int +crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + return crypto_box_curve25519xsalsa20poly1305_open(m, c, clen, n, pk, sk); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_easy.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_easy.c new file mode 100644 index 0000000..deb40b4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_easy.c @@ -0,0 +1,115 @@ + +#include +#include +#include + +#include "core.h" +#include "crypto_box.h" +#include "crypto_secretbox.h" +#include "private/common.h" +#include "utils.h" + +int +crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) +{ + return crypto_secretbox_detached(c, mac, m, mlen, n, k); +} + +int +crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) +{ + unsigned char k[crypto_box_BEFORENMBYTES]; + int ret; + + COMPILER_ASSERT(crypto_box_BEFORENMBYTES >= crypto_secretbox_KEYBYTES); + if (crypto_box_beforenm(k, pk, sk) != 0) { + return -1; + } + ret = crypto_box_detached_afternm(c, mac, m, mlen, n, k); + sodium_memzero(k, sizeof k); + + return ret; +} + +int +crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_box_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_box_detached_afternm(c + crypto_box_MACBYTES, c, m, mlen, n, + k); +} + +int +crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + if (mlen > crypto_box_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_box_detached(c + crypto_box_MACBYTES, c, m, mlen, n, + pk, sk); +} + +int +crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_open_detached(m, c, mac, clen, n, k); +} + +int +crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + unsigned char k[crypto_box_BEFORENMBYTES]; + int ret; + + if (crypto_box_beforenm(k, pk, sk) != 0) { + return -1; + } + ret = crypto_box_open_detached_afternm(m, c, mac, clen, n, k); + sodium_memzero(k, sizeof k); + + return ret; +} + +int +crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + if (clen < crypto_box_MACBYTES) { + return -1; + } + return crypto_box_open_detached_afternm(m, c + crypto_box_MACBYTES, c, + clen - crypto_box_MACBYTES, + n, k); +} + +int +crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) +{ + if (clen < crypto_box_MACBYTES) { + return -1; + } + return crypto_box_open_detached(m, c + crypto_box_MACBYTES, c, + clen - crypto_box_MACBYTES, + n, pk, sk); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_seal.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_seal.c new file mode 100644 index 0000000..e01d649 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_seal.c @@ -0,0 +1,68 @@ + +#include + +#include "crypto_box.h" +#include "crypto_generichash.h" +#include "private/common.h" +#include "utils.h" + +static int +_crypto_box_seal_nonce(unsigned char *nonce, + const unsigned char *pk1, const unsigned char *pk2) +{ + crypto_generichash_state st; + + crypto_generichash_init(&st, NULL, 0U, crypto_box_NONCEBYTES); + crypto_generichash_update(&st, pk1, crypto_box_PUBLICKEYBYTES); + crypto_generichash_update(&st, pk2, crypto_box_PUBLICKEYBYTES); + crypto_generichash_final(&st, nonce, crypto_box_NONCEBYTES); + + return 0; +} + +int +crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) +{ + unsigned char nonce[crypto_box_NONCEBYTES]; + unsigned char epk[crypto_box_PUBLICKEYBYTES]; + unsigned char esk[crypto_box_SECRETKEYBYTES]; + int ret; + + if (crypto_box_keypair(epk, esk) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + _crypto_box_seal_nonce(nonce, epk, pk); + ret = crypto_box_easy(c + crypto_box_PUBLICKEYBYTES, m, mlen, + nonce, pk, esk); + memcpy(c, epk, crypto_box_PUBLICKEYBYTES); + sodium_memzero(esk, sizeof esk); + sodium_memzero(epk, sizeof epk); + sodium_memzero(nonce, sizeof nonce); + + return ret; +} + +int +crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) +{ + unsigned char nonce[crypto_box_NONCEBYTES]; + + if (clen < crypto_box_SEALBYTES) { + return -1; + } + _crypto_box_seal_nonce(nonce, c, pk); + + COMPILER_ASSERT(crypto_box_PUBLICKEYBYTES < crypto_box_SEALBYTES); + return crypto_box_open_easy(m, c + crypto_box_PUBLICKEYBYTES, + clen - crypto_box_PUBLICKEYBYTES, + nonce, c, sk); +} + +size_t +crypto_box_sealbytes(void) +{ + return crypto_box_SEALBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c new file mode 100644 index 0000000..5e2532e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c @@ -0,0 +1,204 @@ + +#include +#include +#include +#include + +#include "core.h" +#include "crypto_box_curve25519xchacha20poly1305.h" +#include "crypto_core_hchacha20.h" +#include "crypto_hash_sha512.h" +#include "crypto_scalarmult_curve25519.h" +#include "crypto_secretbox_xchacha20poly1305.h" +#include "private/common.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) +{ + unsigned char hash[64]; + + crypto_hash_sha512(hash, seed, 32); + memcpy(sk, hash, 32); + sodium_memzero(hash, sizeof hash); + + return crypto_scalarmult_curve25519_base(pk, sk); +} + +int +crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) +{ + randombytes_buf(sk, 32); + + return crypto_scalarmult_curve25519_base(pk, sk); +} + +int +crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) +{ + static const unsigned char zero[16] = { 0 }; + unsigned char s[32]; + + if (crypto_scalarmult_curve25519(s, sk, pk) != 0) { + return -1; + } + return crypto_core_hchacha20(k, zero, s, NULL); +} + +int +crypto_box_curve25519xchacha20poly1305_detached_afternm( + unsigned char *c, unsigned char *mac, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, const unsigned char *k) +{ + return crypto_secretbox_xchacha20poly1305_detached(c, mac, m, mlen, n, k); +} + +int +crypto_box_curve25519xchacha20poly1305_detached( + unsigned char *c, unsigned char *mac, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) +{ + unsigned char k[crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES]; + int ret; + + COMPILER_ASSERT(crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES >= + crypto_secretbox_xchacha20poly1305_KEYBYTES); + if (crypto_box_curve25519xchacha20poly1305_beforenm(k, pk, sk) != 0) { + return -1; + } + ret = crypto_box_curve25519xchacha20poly1305_detached_afternm(c, mac, m, + mlen, n, k); + sodium_memzero(k, sizeof k); + + return ret; +} + +int +crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_box_curve25519xchacha20poly1305_detached_afternm( + c + crypto_box_curve25519xchacha20poly1305_MACBYTES, c, m, mlen, n, k); +} + +int +crypto_box_curve25519xchacha20poly1305_easy( + unsigned char *c, const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, const unsigned char *sk) +{ + if (mlen > crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_box_curve25519xchacha20poly1305_detached( + c + crypto_box_curve25519xchacha20poly1305_MACBYTES, c, m, mlen, n, pk, + sk); +} + +int +crypto_box_curve25519xchacha20poly1305_open_detached_afternm( + unsigned char *m, const unsigned char *c, const unsigned char *mac, + unsigned long long clen, const unsigned char *n, const unsigned char *k) +{ + return crypto_secretbox_xchacha20poly1305_open_detached(m, c, mac, clen, n, + k); +} + +int +crypto_box_curve25519xchacha20poly1305_open_detached( + unsigned char *m, const unsigned char *c, const unsigned char *mac, + unsigned long long clen, const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) +{ + unsigned char k[crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES]; + int ret; + + if (crypto_box_curve25519xchacha20poly1305_beforenm(k, pk, sk) != 0) { + return -1; + } + ret = crypto_box_curve25519xchacha20poly1305_open_detached_afternm( + m, c, mac, clen, n, k); + sodium_memzero(k, sizeof k); + + return ret; +} + +int +crypto_box_curve25519xchacha20poly1305_open_easy_afternm( + unsigned char *m, const unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + if (clen < crypto_box_curve25519xchacha20poly1305_MACBYTES) { + return -1; + } + return crypto_box_curve25519xchacha20poly1305_open_detached_afternm( + m, c + crypto_box_curve25519xchacha20poly1305_MACBYTES, c, + clen - crypto_box_curve25519xchacha20poly1305_MACBYTES, n, k); +} + +int +crypto_box_curve25519xchacha20poly1305_open_easy( + unsigned char *m, const unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *pk, const unsigned char *sk) +{ + if (clen < crypto_box_curve25519xchacha20poly1305_MACBYTES) { + return -1; + } + return crypto_box_curve25519xchacha20poly1305_open_detached( + m, c + crypto_box_curve25519xchacha20poly1305_MACBYTES, c, + clen - crypto_box_curve25519xchacha20poly1305_MACBYTES, n, pk, sk); +} + +size_t +crypto_box_curve25519xchacha20poly1305_seedbytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_SEEDBYTES; +} + +size_t +crypto_box_curve25519xchacha20poly1305_publickeybytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES; +} + +size_t +crypto_box_curve25519xchacha20poly1305_secretkeybytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES; +} + +size_t +crypto_box_curve25519xchacha20poly1305_beforenmbytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES; +} + +size_t +crypto_box_curve25519xchacha20poly1305_noncebytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_NONCEBYTES; +} + +size_t +crypto_box_curve25519xchacha20poly1305_macbytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_MACBYTES; +} + +size_t +crypto_box_curve25519xchacha20poly1305_messagebytes_max(void) +{ + return crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c new file mode 100644 index 0000000..0240f03 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c @@ -0,0 +1,79 @@ + +#include + +#include "crypto_box_curve25519xchacha20poly1305.h" +#include "crypto_generichash.h" +#include "private/common.h" +#include "utils.h" + +static int +_crypto_box_curve25519xchacha20poly1305_seal_nonce(unsigned char *nonce, + const unsigned char *pk1, + const unsigned char *pk2) +{ + crypto_generichash_state st; + + crypto_generichash_init(&st, NULL, 0U, + crypto_box_curve25519xchacha20poly1305_NONCEBYTES); + crypto_generichash_update(&st, pk1, + crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES); + crypto_generichash_update(&st, pk2, + crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES); + crypto_generichash_final(&st, nonce, + crypto_box_curve25519xchacha20poly1305_NONCEBYTES); + + return 0; +} + +int +crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) +{ + unsigned char nonce[crypto_box_curve25519xchacha20poly1305_NONCEBYTES]; + unsigned char epk[crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES]; + unsigned char esk[crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES]; + int ret; + + if (crypto_box_curve25519xchacha20poly1305_keypair(epk, esk) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + _crypto_box_curve25519xchacha20poly1305_seal_nonce(nonce, epk, pk); + ret = crypto_box_curve25519xchacha20poly1305_easy( + c + crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES, m, mlen, + nonce, pk, esk); + memcpy(c, epk, crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES); + sodium_memzero(esk, sizeof esk); + sodium_memzero(epk, sizeof epk); + sodium_memzero(nonce, sizeof nonce); + + return ret; +} + +int +crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) +{ + unsigned char nonce[crypto_box_curve25519xchacha20poly1305_NONCEBYTES]; + + if (clen < crypto_box_curve25519xchacha20poly1305_SEALBYTES) { + return -1; + } + _crypto_box_curve25519xchacha20poly1305_seal_nonce(nonce, c, pk); + + COMPILER_ASSERT(crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES < + crypto_box_curve25519xchacha20poly1305_SEALBYTES); + + return crypto_box_curve25519xchacha20poly1305_open_easy( + m, c + crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES, + clen - crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES, + nonce, c, sk); +} + +size_t +crypto_box_curve25519xchacha20poly1305_sealbytes(void) +{ + return crypto_box_curve25519xchacha20poly1305_SEALBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c new file mode 100644 index 0000000..4c1d62e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c @@ -0,0 +1,156 @@ +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "crypto_core_hsalsa20.h" +#include "crypto_hash_sha512.h" +#include "crypto_scalarmult_curve25519.h" +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) +{ + unsigned char hash[64]; + + crypto_hash_sha512(hash, seed, 32); + memcpy(sk, hash, 32); + sodium_memzero(hash, sizeof hash); + + return crypto_scalarmult_curve25519_base(pk, sk); +} + +int +crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) +{ + randombytes_buf(sk, 32); + + return crypto_scalarmult_curve25519_base(pk, sk); +} + +int +crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) +{ + static const unsigned char zero[16] = { 0 }; + unsigned char s[32]; + + if (crypto_scalarmult_curve25519(s, sk, pk) != 0) { + return -1; + } + return crypto_core_hsalsa20(k, zero, s, NULL); +} + +int +crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305(c, m, mlen, n, k); +} + +int +crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305_open(m, c, clen, n, k); +} + +int +crypto_box_curve25519xsalsa20poly1305(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) +{ + unsigned char k[crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES]; + int ret; + + if (crypto_box_curve25519xsalsa20poly1305_beforenm(k, pk, sk) != 0) { + return -1; + } + ret = crypto_box_curve25519xsalsa20poly1305_afternm(c, m, mlen, n, k); + sodium_memzero(k, sizeof k); + + return ret; +} + +int +crypto_box_curve25519xsalsa20poly1305_open( + unsigned char *m, const unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *pk, const unsigned char *sk) +{ + unsigned char k[crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES]; + int ret; + + if (crypto_box_curve25519xsalsa20poly1305_beforenm(k, pk, sk) != 0) { + return -1; + } + ret = crypto_box_curve25519xsalsa20poly1305_open_afternm(m, c, clen, n, k); + sodium_memzero(k, sizeof k); + + return ret; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_seedbytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_SEEDBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_publickeybytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_noncebytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_NONCEBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_zerobytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_ZEROBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_macbytes(void) +{ + return crypto_box_curve25519xsalsa20poly1305_MACBYTES; +} + +size_t +crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void) +{ + return crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ed25519.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ed25519.c new file mode 100644 index 0000000..bb0bda4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ed25519.c @@ -0,0 +1,225 @@ + +#include + +#include "crypto_core_ed25519.h" +#include "private/common.h" +#include "private/ed25519_ref10.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_core_ed25519_is_valid_point(const unsigned char *p) +{ + ge25519_p3 p_p3; + + if (ge25519_is_canonical(p) == 0 || + ge25519_has_small_order(p) != 0 || + ge25519_frombytes(&p_p3, p) != 0 || + ge25519_is_on_curve(&p_p3) == 0 || + ge25519_is_on_main_subgroup(&p_p3) == 0) { + return 0; + } + return 1; +} + +int +crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) +{ + ge25519_p3 p_p3, q_p3, r_p3; + ge25519_p1p1 r_p1p1; + ge25519_cached q_cached; + + if (ge25519_frombytes(&p_p3, p) != 0 || ge25519_is_on_curve(&p_p3) == 0 || + ge25519_frombytes(&q_p3, q) != 0 || ge25519_is_on_curve(&q_p3) == 0) { + return -1; + } + ge25519_p3_to_cached(&q_cached, &q_p3); + ge25519_add(&r_p1p1, &p_p3, &q_cached); + ge25519_p1p1_to_p3(&r_p3, &r_p1p1); + ge25519_p3_tobytes(r, &r_p3); + + return 0; +} + +int +crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) +{ + ge25519_p3 p_p3, q_p3, r_p3; + ge25519_p1p1 r_p1p1; + ge25519_cached q_cached; + + if (ge25519_frombytes(&p_p3, p) != 0 || ge25519_is_on_curve(&p_p3) == 0 || + ge25519_frombytes(&q_p3, q) != 0 || ge25519_is_on_curve(&q_p3) == 0) { + return -1; + } + ge25519_p3_to_cached(&q_cached, &q_p3); + ge25519_sub(&r_p1p1, &p_p3, &q_cached); + ge25519_p1p1_to_p3(&r_p3, &r_p1p1); + ge25519_p3_tobytes(r, &r_p3); + + return 0; +} + +int +crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) +{ + ge25519_from_uniform(p, r); + + return 0; +} + +int +crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) +{ + ge25519_from_hash(p, h); + + return 0; +} + +void +crypto_core_ed25519_random(unsigned char *p) +{ + unsigned char h[crypto_core_ed25519_UNIFORMBYTES]; + + randombytes_buf(h, sizeof h); + (void) crypto_core_ed25519_from_uniform(p, h); +} + +void +crypto_core_ed25519_scalar_random(unsigned char *r) +{ + do { + randombytes_buf(r, crypto_core_ed25519_SCALARBYTES); + r[crypto_core_ed25519_SCALARBYTES - 1] &= 0x1f; + } while (sc25519_is_canonical(r) == 0 || + sodium_is_zero(r, crypto_core_ed25519_SCALARBYTES)); +} + +int +crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) +{ + sc25519_invert(recip, s); + + return - sodium_is_zero(s, crypto_core_ed25519_SCALARBYTES); +} + +/* 2^252+27742317777372353535851937790883648493 */ +static const unsigned char L[] = { + 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, + 0xa2, 0xde, 0xf9, 0xde, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 +}; + +void +crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) +{ + unsigned char t_[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + unsigned char s_[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + + COMPILER_ASSERT(crypto_core_ed25519_NONREDUCEDSCALARBYTES >= + 2 * crypto_core_ed25519_SCALARBYTES); + memset(t_, 0, sizeof t_); + memset(s_, 0, sizeof s_); + memcpy(t_ + crypto_core_ed25519_SCALARBYTES, L, + crypto_core_ed25519_SCALARBYTES); + memcpy(s_, s, crypto_core_ed25519_SCALARBYTES); + sodium_sub(t_, s_, sizeof t_); + sc25519_reduce(t_); + memcpy(neg, t_, crypto_core_ed25519_SCALARBYTES); +} + +void +crypto_core_ed25519_scalar_complement(unsigned char *comp, + const unsigned char *s) +{ + unsigned char t_[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + unsigned char s_[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + + COMPILER_ASSERT(crypto_core_ed25519_NONREDUCEDSCALARBYTES >= + 2 * crypto_core_ed25519_SCALARBYTES); + memset(t_, 0, sizeof t_); + memset(s_, 0, sizeof s_); + t_[0]++; + memcpy(t_ + crypto_core_ed25519_SCALARBYTES, L, + crypto_core_ed25519_SCALARBYTES); + memcpy(s_, s, crypto_core_ed25519_SCALARBYTES); + sodium_sub(t_, s_, sizeof t_); + sc25519_reduce(t_); + memcpy(comp, t_, crypto_core_ed25519_SCALARBYTES); +} + +void +crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) +{ + unsigned char x_[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + unsigned char y_[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + + memset(x_, 0, sizeof x_); + memset(y_, 0, sizeof y_); + memcpy(x_, x, crypto_core_ed25519_SCALARBYTES); + memcpy(y_, y, crypto_core_ed25519_SCALARBYTES); + sodium_add(x_, y_, crypto_core_ed25519_SCALARBYTES); + crypto_core_ed25519_scalar_reduce(z, x_); +} + +void +crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) +{ + unsigned char yn[crypto_core_ed25519_SCALARBYTES]; + + crypto_core_ed25519_scalar_negate(yn, y); + crypto_core_ed25519_scalar_add(z, x, yn); +} + +void +crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) +{ + sc25519_mul(z, x, y); +} + +void +crypto_core_ed25519_scalar_reduce(unsigned char *r, + const unsigned char *s) +{ + unsigned char t[crypto_core_ed25519_NONREDUCEDSCALARBYTES]; + + memcpy(t, s, sizeof t); + sc25519_reduce(t); + memcpy(r, t, crypto_core_ed25519_SCALARBYTES); + sodium_memzero(t, sizeof t); +} + +size_t +crypto_core_ed25519_bytes(void) +{ + return crypto_core_ed25519_BYTES; +} + +size_t +crypto_core_ed25519_nonreducedscalarbytes(void) +{ + return crypto_core_ed25519_NONREDUCEDSCALARBYTES; +} + +size_t +crypto_core_ed25519_uniformbytes(void) +{ + return crypto_core_ed25519_UNIFORMBYTES; +} + +size_t +crypto_core_ed25519_hashbytes(void) +{ + return crypto_core_ed25519_HASHBYTES; +} + +size_t +crypto_core_ed25519_scalarbytes(void) +{ + return crypto_core_ed25519_SCALARBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ristretto255.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ristretto255.c new file mode 100644 index 0000000..cad3c80 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ristretto255.c @@ -0,0 +1,156 @@ + +#include + +#include "crypto_core_ed25519.h" +#include "crypto_core_ristretto255.h" +#include "private/common.h" +#include "private/ed25519_ref10.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_core_ristretto255_is_valid_point(const unsigned char *p) +{ + ge25519_p3 p_p3; + + if (ristretto255_frombytes(&p_p3, p) != 0) { + return 0; + } + return 1; +} + +int +crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) +{ + ge25519_p3 p_p3, q_p3, r_p3; + ge25519_p1p1 r_p1p1; + ge25519_cached q_cached; + + if (ristretto255_frombytes(&p_p3, p) != 0 || + ristretto255_frombytes(&q_p3, q) != 0) { + return -1; + } + ge25519_p3_to_cached(&q_cached, &q_p3); + ge25519_add(&r_p1p1, &p_p3, &q_cached); + ge25519_p1p1_to_p3(&r_p3, &r_p1p1); + ristretto255_p3_tobytes(r, &r_p3); + + return 0; +} + +int +crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) +{ + ge25519_p3 p_p3, q_p3, r_p3; + ge25519_p1p1 r_p1p1; + ge25519_cached q_cached; + + if (ristretto255_frombytes(&p_p3, p) != 0 || + ristretto255_frombytes(&q_p3, q) != 0) { + return -1; + } + ge25519_p3_to_cached(&q_cached, &q_p3); + ge25519_sub(&r_p1p1, &p_p3, &q_cached); + ge25519_p1p1_to_p3(&r_p3, &r_p1p1); + ristretto255_p3_tobytes(r, &r_p3); + + return 0; +} + +int +crypto_core_ristretto255_from_hash(unsigned char *p, const unsigned char *r) +{ + ristretto255_from_hash(p, r); + + return 0; +} + +void +crypto_core_ristretto255_random(unsigned char *p) +{ + unsigned char h[crypto_core_ristretto255_HASHBYTES]; + + randombytes_buf(h, sizeof h); + (void) crypto_core_ristretto255_from_hash(p, h); +} + +void +crypto_core_ristretto255_scalar_random(unsigned char *r) +{ + crypto_core_ed25519_scalar_random(r); +} + +int +crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) +{ + return crypto_core_ed25519_scalar_invert(recip, s); +} + +void +crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) +{ + crypto_core_ed25519_scalar_negate(neg, s); +} + +void +crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) +{ + crypto_core_ed25519_scalar_complement(comp, s); +} + +void +crypto_core_ristretto255_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) +{ + crypto_core_ed25519_scalar_add(z, x, y); +} + +void +crypto_core_ristretto255_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) +{ + crypto_core_ed25519_scalar_sub(z, x, y); +} + +void +crypto_core_ristretto255_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) +{ + sc25519_mul(z, x, y); +} + +void +crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) +{ + crypto_core_ed25519_scalar_reduce(r, s); +} + +size_t +crypto_core_ristretto255_bytes(void) +{ + return crypto_core_ristretto255_BYTES; +} + +size_t +crypto_core_ristretto255_nonreducedscalarbytes(void) +{ + return crypto_core_ristretto255_NONREDUCEDSCALARBYTES; +} + +size_t +crypto_core_ristretto255_hashbytes(void) +{ + return crypto_core_ristretto255_HASHBYTES; +} + +size_t +crypto_core_ristretto255_scalarbytes(void) +{ + return crypto_core_ristretto255_SCALARBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c new file mode 100644 index 0000000..8129d8b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c @@ -0,0 +1,2858 @@ +#include +#include +#include +#include + +#include "crypto_verify_32.h" +#include "private/common.h" +#include "private/ed25519_ref10.h" +#include "utils.h" + +static inline uint64_t +load_3(const unsigned char *in) +{ + uint64_t result; + + result = (uint64_t) in[0]; + result |= ((uint64_t) in[1]) << 8; + result |= ((uint64_t) in[2]) << 16; + + return result; +} + +static inline uint64_t +load_4(const unsigned char *in) +{ + uint64_t result; + + result = (uint64_t) in[0]; + result |= ((uint64_t) in[1]) << 8; + result |= ((uint64_t) in[2]) << 16; + result |= ((uint64_t) in[3]) << 24; + + return result; +} + +/* + * Field arithmetic: + * Use 5*51 bit limbs on 64-bit systems with support for 128 bit arithmetic, + * and 10*25.5 bit limbs elsewhere. + * + * Functions used elsewhere that are candidates for inlining are defined + * via "private/curve25519_ref10.h". + */ + +#ifdef HAVE_TI_MODE +# include "fe_51/constants.h" +# include "fe_51/fe.h" +#else +# include "fe_25_5/constants.h" +# include "fe_25_5/fe.h" +#endif + +void +fe25519_invert(fe25519 out, const fe25519 z) +{ + fe25519 t0; + fe25519 t1; + fe25519 t2; + fe25519 t3; + int i; + + fe25519_sq(t0, z); + fe25519_sq(t1, t0); + fe25519_sq(t1, t1); + fe25519_mul(t1, z, t1); + fe25519_mul(t0, t0, t1); + fe25519_sq(t2, t0); + fe25519_mul(t1, t1, t2); + fe25519_sq(t2, t1); + for (i = 1; i < 5; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t1, t2, t1); + fe25519_sq(t2, t1); + for (i = 1; i < 10; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t2, t2, t1); + fe25519_sq(t3, t2); + for (i = 1; i < 20; ++i) { + fe25519_sq(t3, t3); + } + fe25519_mul(t2, t3, t2); + for (i = 1; i < 11; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t1, t2, t1); + fe25519_sq(t2, t1); + for (i = 1; i < 50; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t2, t2, t1); + fe25519_sq(t3, t2); + for (i = 1; i < 100; ++i) { + fe25519_sq(t3, t3); + } + fe25519_mul(t2, t3, t2); + for (i = 1; i < 51; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t1, t2, t1); + for (i = 1; i < 6; ++i) { + fe25519_sq(t1, t1); + } + fe25519_mul(out, t1, t0); +} + +static void +fe25519_pow22523(fe25519 out, const fe25519 z) +{ + fe25519 t0; + fe25519 t1; + fe25519 t2; + int i; + + fe25519_sq(t0, z); + fe25519_sq(t1, t0); + fe25519_sq(t1, t1); + fe25519_mul(t1, z, t1); + fe25519_mul(t0, t0, t1); + fe25519_sq(t0, t0); + fe25519_mul(t0, t1, t0); + fe25519_sq(t1, t0); + for (i = 1; i < 5; ++i) { + fe25519_sq(t1, t1); + } + fe25519_mul(t0, t1, t0); + fe25519_sq(t1, t0); + for (i = 1; i < 10; ++i) { + fe25519_sq(t1, t1); + } + fe25519_mul(t1, t1, t0); + fe25519_sq(t2, t1); + for (i = 1; i < 20; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t1, t2, t1); + for (i = 1; i < 11; ++i) { + fe25519_sq(t1, t1); + } + fe25519_mul(t0, t1, t0); + fe25519_sq(t1, t0); + for (i = 1; i < 50; ++i) { + fe25519_sq(t1, t1); + } + fe25519_mul(t1, t1, t0); + fe25519_sq(t2, t1); + for (i = 1; i < 100; ++i) { + fe25519_sq(t2, t2); + } + fe25519_mul(t1, t2, t1); + for (i = 1; i < 51; ++i) { + fe25519_sq(t1, t1); + } + fe25519_mul(t0, t1, t0); + fe25519_sq(t0, t0); + fe25519_sq(t0, t0); + fe25519_mul(out, t0, z); +} + +static inline void +fe25519_cneg(fe25519 h, const fe25519 f, unsigned int b) +{ + fe25519 negf; + + fe25519_neg(negf, f); + fe25519_copy(h, f); + fe25519_cmov(h, negf, b); +} + +static inline void +fe25519_abs(fe25519 h, const fe25519 f) +{ + fe25519_cneg(h, f, fe25519_isnegative(f)); +} + +static inline void +fe25519_sqmul(fe25519 s, const int n, const fe25519 a) +{ + int i; + + for (i = 0; i < n; i++) { + fe25519_sq(s, s); + } + fe25519_mul(s, s, a); +} + +static unsigned int +fe25519_notsquare(const fe25519 x) +{ + fe25519 _10, _11, _1100, _1111, _11110000, _11111111; + fe25519 t, u, v; + unsigned char s[32]; + + /* Jacobi symbol - x^((p-1)/2) */ + fe25519_mul(_10, x, x); + fe25519_mul(_11, x, _10); + fe25519_sq(_1100, _11); + fe25519_sq(_1100, _1100); + fe25519_mul(_1111, _11, _1100); + fe25519_sq(_11110000, _1111); + fe25519_sq(_11110000, _11110000); + fe25519_sq(_11110000, _11110000); + fe25519_sq(_11110000, _11110000); + fe25519_mul(_11111111, _1111, _11110000); + fe25519_copy(t, _11111111); + fe25519_sqmul(t, 2, _11); + fe25519_copy(u, t); + fe25519_sqmul(t, 10, u); + fe25519_sqmul(t, 10, u); + fe25519_copy(v, t); + fe25519_sqmul(t, 30, v); + fe25519_copy(v, t); + fe25519_sqmul(t, 60, v); + fe25519_copy(v, t); + fe25519_sqmul(t, 120, v); + fe25519_sqmul(t, 10, u); + fe25519_sqmul(t, 3, _11); + fe25519_sq(t, t); + + fe25519_tobytes(s, t); + + return s[1] & 1; +} + +/* + r = p + q + */ + +void +ge25519_add(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_cached *q) +{ + fe25519 t0; + + fe25519_add(r->X, p->Y, p->X); + fe25519_sub(r->Y, p->Y, p->X); + fe25519_mul(r->Z, r->X, q->YplusX); + fe25519_mul(r->Y, r->Y, q->YminusX); + fe25519_mul(r->T, q->T2d, p->T); + fe25519_mul(r->X, p->Z, q->Z); + fe25519_add(t0, r->X, r->X); + fe25519_sub(r->X, r->Z, r->Y); + fe25519_add(r->Y, r->Z, r->Y); + fe25519_add(r->Z, t0, r->T); + fe25519_sub(r->T, t0, r->T); +} + +static void +slide_vartime(signed char *r, const unsigned char *a) +{ + int i; + int b; + int k; + int ribs; + int cmp; + + for (i = 0; i < 256; ++i) { + r[i] = 1 & (a[i >> 3] >> (i & 7)); + } + for (i = 0; i < 256; ++i) { + if (! r[i]) { + continue; + } + for (b = 1; b <= 6 && i + b < 256; ++b) { + if (! r[i + b]) { + continue; + } + ribs = r[i + b] << b; + cmp = r[i] + ribs; + if (cmp <= 15) { + r[i] = cmp; + r[i + b] = 0; + } else { + cmp = r[i] - ribs; + if (cmp < -15) { + break; + } + r[i] = cmp; + for (k = i + b; k < 256; ++k) { + if (! r[k]) { + r[k] = 1; + break; + } + r[k] = 0; + } + } + } + } +} + +int +ge25519_frombytes(ge25519_p3 *h, const unsigned char *s) +{ + fe25519 u; + fe25519 v; + fe25519 vxx; + fe25519 m_root_check, p_root_check; + fe25519 negx; + fe25519 x_sqrtm1; + int has_m_root, has_p_root; + + fe25519_frombytes(h->Y, s); + fe25519_1(h->Z); + fe25519_sq(u, h->Y); + fe25519_mul(v, u, d); + fe25519_sub(u, u, h->Z); /* u = y^2-1 */ + fe25519_add(v, v, h->Z); /* v = dy^2+1 */ + + fe25519_mul(h->X, u, v); + fe25519_pow22523(h->X, h->X); + fe25519_mul(h->X, u, h->X); /* u((uv)^((q-5)/8)) */ + + fe25519_sq(vxx, h->X); + fe25519_mul(vxx, vxx, v); + fe25519_sub(m_root_check, vxx, u); /* vx^2-u */ + fe25519_add(p_root_check, vxx, u); /* vx^2+u */ + has_m_root = fe25519_iszero(m_root_check); + has_p_root = fe25519_iszero(p_root_check); + fe25519_mul(x_sqrtm1, h->X, sqrtm1); /* x*sqrt(-1) */ + fe25519_cmov(h->X, x_sqrtm1, 1 - has_m_root); + + fe25519_neg(negx, h->X); + fe25519_cmov(h->X, negx, fe25519_isnegative(h->X) ^ (s[31] >> 7)); + fe25519_mul(h->T, h->X, h->Y); + + return (has_m_root | has_p_root) - 1; +} + +int +ge25519_frombytes_negate_vartime(ge25519_p3 *h, const unsigned char *s) +{ + fe25519 u; + fe25519 v; + fe25519 v3; + fe25519 vxx; + fe25519 m_root_check, p_root_check; + + fe25519_frombytes(h->Y, s); + fe25519_1(h->Z); + fe25519_sq(u, h->Y); + fe25519_mul(v, u, d); + fe25519_sub(u, u, h->Z); /* u = y^2-1 */ + fe25519_add(v, v, h->Z); /* v = dy^2+1 */ + + fe25519_sq(v3, v); + fe25519_mul(v3, v3, v); /* v3 = v^3 */ + fe25519_sq(h->X, v3); + fe25519_mul(h->X, h->X, v); + fe25519_mul(h->X, h->X, u); /* x = uv^7 */ + + fe25519_pow22523(h->X, h->X); /* x = (uv^7)^((q-5)/8) */ + fe25519_mul(h->X, h->X, v3); + fe25519_mul(h->X, h->X, u); /* x = uv^3(uv^7)^((q-5)/8) */ + + fe25519_sq(vxx, h->X); + fe25519_mul(vxx, vxx, v); + fe25519_sub(m_root_check, vxx, u); /* vx^2-u */ + if (fe25519_iszero(m_root_check) == 0) { + fe25519_add(p_root_check, vxx, u); /* vx^2+u */ + if (fe25519_iszero(p_root_check) == 0) { + return -1; + } + fe25519_mul(h->X, h->X, sqrtm1); + } + + if (fe25519_isnegative(h->X) == (s[31] >> 7)) { + fe25519_neg(h->X, h->X); + } + fe25519_mul(h->T, h->X, h->Y); + + return 0; +} + +/* + r = p + q + */ + +static void +ge25519_madd(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_precomp *q) +{ + fe25519 t0; + + fe25519_add(r->X, p->Y, p->X); + fe25519_sub(r->Y, p->Y, p->X); + fe25519_mul(r->Z, r->X, q->yplusx); + fe25519_mul(r->Y, r->Y, q->yminusx); + fe25519_mul(r->T, q->xy2d, p->T); + fe25519_add(t0, p->Z, p->Z); + fe25519_sub(r->X, r->Z, r->Y); + fe25519_add(r->Y, r->Z, r->Y); + fe25519_add(r->Z, t0, r->T); + fe25519_sub(r->T, t0, r->T); +} + +/* + r = p - q + */ + +static void +ge25519_msub(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_precomp *q) +{ + fe25519 t0; + + fe25519_add(r->X, p->Y, p->X); + fe25519_sub(r->Y, p->Y, p->X); + fe25519_mul(r->Z, r->X, q->yminusx); + fe25519_mul(r->Y, r->Y, q->yplusx); + fe25519_mul(r->T, q->xy2d, p->T); + fe25519_add(t0, p->Z, p->Z); + fe25519_sub(r->X, r->Z, r->Y); + fe25519_add(r->Y, r->Z, r->Y); + fe25519_sub(r->Z, t0, r->T); + fe25519_add(r->T, t0, r->T); +} + +/* + r = p + */ + +void +ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p) +{ + fe25519_mul(r->X, p->X, p->T); + fe25519_mul(r->Y, p->Y, p->Z); + fe25519_mul(r->Z, p->Z, p->T); +} + +/* + r = p + */ + +void +ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p) +{ + fe25519_mul(r->X, p->X, p->T); + fe25519_mul(r->Y, p->Y, p->Z); + fe25519_mul(r->Z, p->Z, p->T); + fe25519_mul(r->T, p->X, p->Y); +} + +static void +ge25519_p2_0(ge25519_p2 *h) +{ + fe25519_0(h->X); + fe25519_1(h->Y); + fe25519_1(h->Z); +} + +/* + r = 2 * p + */ + +static void +ge25519_p2_dbl(ge25519_p1p1 *r, const ge25519_p2 *p) +{ + fe25519 t0; + + fe25519_sq(r->X, p->X); + fe25519_sq(r->Z, p->Y); + fe25519_sq2(r->T, p->Z); + fe25519_add(r->Y, p->X, p->Y); + fe25519_sq(t0, r->Y); + fe25519_add(r->Y, r->Z, r->X); + fe25519_sub(r->Z, r->Z, r->X); + fe25519_sub(r->X, t0, r->Y); + fe25519_sub(r->T, r->T, r->Z); +} + +static void +ge25519_p3_0(ge25519_p3 *h) +{ + fe25519_0(h->X); + fe25519_1(h->Y); + fe25519_1(h->Z); + fe25519_0(h->T); +} + +static void +ge25519_cached_0(ge25519_cached *h) +{ + fe25519_1(h->YplusX); + fe25519_1(h->YminusX); + fe25519_1(h->Z); + fe25519_0(h->T2d); +} + +/* + r = p + */ + +void +ge25519_p3_to_cached(ge25519_cached *r, const ge25519_p3 *p) +{ + fe25519_add(r->YplusX, p->Y, p->X); + fe25519_sub(r->YminusX, p->Y, p->X); + fe25519_copy(r->Z, p->Z); + fe25519_mul(r->T2d, p->T, d2); +} + +static void +ge25519_p3_to_precomp(ge25519_precomp *pi, const ge25519_p3 *p) +{ + fe25519 recip; + fe25519 x; + fe25519 y; + fe25519 xy; + + fe25519_invert(recip, p->Z); + fe25519_mul(x, p->X, recip); + fe25519_mul(y, p->Y, recip); + fe25519_add(pi->yplusx, y, x); + fe25519_sub(pi->yminusx, y, x); + fe25519_mul(xy, x, y); + fe25519_mul(pi->xy2d, xy, d2); +} + +/* + r = p + */ + +static void +ge25519_p3_to_p2(ge25519_p2 *r, const ge25519_p3 *p) +{ + fe25519_copy(r->X, p->X); + fe25519_copy(r->Y, p->Y); + fe25519_copy(r->Z, p->Z); +} + +void +ge25519_p3_tobytes(unsigned char *s, const ge25519_p3 *h) +{ + fe25519 recip; + fe25519 x; + fe25519 y; + + fe25519_invert(recip, h->Z); + fe25519_mul(x, h->X, recip); + fe25519_mul(y, h->Y, recip); + fe25519_tobytes(s, y); + s[31] ^= fe25519_isnegative(x) << 7; +} + +/* + r = 2 * p + */ + +static void +ge25519_p3_dbl(ge25519_p1p1 *r, const ge25519_p3 *p) +{ + ge25519_p2 q; + ge25519_p3_to_p2(&q, p); + ge25519_p2_dbl(r, &q); +} + +static void +ge25519_precomp_0(ge25519_precomp *h) +{ + fe25519_1(h->yplusx); + fe25519_1(h->yminusx); + fe25519_0(h->xy2d); +} + +static unsigned char +equal(signed char b, signed char c) +{ + unsigned char ub = b; + unsigned char uc = c; + unsigned char x = ub ^ uc; /* 0: yes; 1..255: no */ + uint32_t y = (uint32_t) x; /* 0: yes; 1..255: no */ + + y -= 1; /* 4294967295: yes; 0..254: no */ + y >>= 31; /* 1: yes; 0: no */ + + return y; +} + +static unsigned char +negative(signed char b) +{ + /* 18446744073709551361..18446744073709551615: yes; 0..255: no */ + uint64_t x = b; + + x >>= 63; /* 1: yes; 0: no */ + + return x; +} + +static void +ge25519_cmov(ge25519_precomp *t, const ge25519_precomp *u, unsigned char b) +{ + fe25519_cmov(t->yplusx, u->yplusx, b); + fe25519_cmov(t->yminusx, u->yminusx, b); + fe25519_cmov(t->xy2d, u->xy2d, b); +} + +static void +ge25519_cmov_cached(ge25519_cached *t, const ge25519_cached *u, unsigned char b) +{ + fe25519_cmov(t->YplusX, u->YplusX, b); + fe25519_cmov(t->YminusX, u->YminusX, b); + fe25519_cmov(t->Z, u->Z, b); + fe25519_cmov(t->T2d, u->T2d, b); +} + +static void +ge25519_cmov8(ge25519_precomp *t, const ge25519_precomp precomp[8], const signed char b) +{ + ge25519_precomp minust; + const unsigned char bnegative = negative(b); + const unsigned char babs = b - (((-bnegative) & b) * ((signed char) 1 << 1)); + + ge25519_precomp_0(t); + ge25519_cmov(t, &precomp[0], equal(babs, 1)); + ge25519_cmov(t, &precomp[1], equal(babs, 2)); + ge25519_cmov(t, &precomp[2], equal(babs, 3)); + ge25519_cmov(t, &precomp[3], equal(babs, 4)); + ge25519_cmov(t, &precomp[4], equal(babs, 5)); + ge25519_cmov(t, &precomp[5], equal(babs, 6)); + ge25519_cmov(t, &precomp[6], equal(babs, 7)); + ge25519_cmov(t, &precomp[7], equal(babs, 8)); + fe25519_copy(minust.yplusx, t->yminusx); + fe25519_copy(minust.yminusx, t->yplusx); + fe25519_neg(minust.xy2d, t->xy2d); + ge25519_cmov(t, &minust, bnegative); +} + +static void +ge25519_cmov8_base(ge25519_precomp *t, const int pos, const signed char b) +{ + static const ge25519_precomp base[32][8] = { /* base[i][j] = (j+1)*256^i*B */ +#ifdef HAVE_TI_MODE +# include "fe_51/base.h" +#else +# include "fe_25_5/base.h" +#endif + }; + ge25519_cmov8(t, base[pos], b); +} + +static void +ge25519_cmov8_cached(ge25519_cached *t, const ge25519_cached cached[8], const signed char b) +{ + ge25519_cached minust; + const unsigned char bnegative = negative(b); + const unsigned char babs = b - (((-bnegative) & b) * ((signed char) 1 << 1)); + + ge25519_cached_0(t); + ge25519_cmov_cached(t, &cached[0], equal(babs, 1)); + ge25519_cmov_cached(t, &cached[1], equal(babs, 2)); + ge25519_cmov_cached(t, &cached[2], equal(babs, 3)); + ge25519_cmov_cached(t, &cached[3], equal(babs, 4)); + ge25519_cmov_cached(t, &cached[4], equal(babs, 5)); + ge25519_cmov_cached(t, &cached[5], equal(babs, 6)); + ge25519_cmov_cached(t, &cached[6], equal(babs, 7)); + ge25519_cmov_cached(t, &cached[7], equal(babs, 8)); + fe25519_copy(minust.YplusX, t->YminusX); + fe25519_copy(minust.YminusX, t->YplusX); + fe25519_copy(minust.Z, t->Z); + fe25519_neg(minust.T2d, t->T2d); + ge25519_cmov_cached(t, &minust, bnegative); +} + +/* + r = p - q + */ + +void +ge25519_sub(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_cached *q) +{ + fe25519 t0; + + fe25519_add(r->X, p->Y, p->X); + fe25519_sub(r->Y, p->Y, p->X); + fe25519_mul(r->Z, r->X, q->YminusX); + fe25519_mul(r->Y, r->Y, q->YplusX); + fe25519_mul(r->T, q->T2d, p->T); + fe25519_mul(r->X, p->Z, q->Z); + fe25519_add(t0, r->X, r->X); + fe25519_sub(r->X, r->Z, r->Y); + fe25519_add(r->Y, r->Z, r->Y); + fe25519_sub(r->Z, t0, r->T); + fe25519_add(r->T, t0, r->T); +} + +void +ge25519_tobytes(unsigned char *s, const ge25519_p2 *h) +{ + fe25519 recip; + fe25519 x; + fe25519 y; + + fe25519_invert(recip, h->Z); + fe25519_mul(x, h->X, recip); + fe25519_mul(y, h->Y, recip); + fe25519_tobytes(s, y); + s[31] ^= fe25519_isnegative(x) << 7; +} + +/* + r = a * A + b * B + where a = a[0]+256*a[1]+...+256^31 a[31]. + and b = b[0]+256*b[1]+...+256^31 b[31]. + B is the Ed25519 base point (x,4/5) with x positive. + + Only used for signatures verification. + */ + +void +ge25519_double_scalarmult_vartime(ge25519_p2 *r, const unsigned char *a, + const ge25519_p3 *A, const unsigned char *b) +{ + static const ge25519_precomp Bi[8] = { +#ifdef HAVE_TI_MODE +# include "fe_51/base2.h" +#else +# include "fe_25_5/base2.h" +#endif + }; + signed char aslide[256]; + signed char bslide[256]; + ge25519_cached Ai[8]; /* A,3A,5A,7A,9A,11A,13A,15A */ + ge25519_p1p1 t; + ge25519_p3 u; + ge25519_p3 A2; + int i; + + slide_vartime(aslide, a); + slide_vartime(bslide, b); + + ge25519_p3_to_cached(&Ai[0], A); + + ge25519_p3_dbl(&t, A); + ge25519_p1p1_to_p3(&A2, &t); + + ge25519_add(&t, &A2, &Ai[0]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[1], &u); + + ge25519_add(&t, &A2, &Ai[1]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[2], &u); + + ge25519_add(&t, &A2, &Ai[2]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[3], &u); + + ge25519_add(&t, &A2, &Ai[3]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[4], &u); + + ge25519_add(&t, &A2, &Ai[4]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[5], &u); + + ge25519_add(&t, &A2, &Ai[5]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[6], &u); + + ge25519_add(&t, &A2, &Ai[6]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[7], &u); + + ge25519_p2_0(r); + + for (i = 255; i >= 0; --i) { + if (aslide[i] || bslide[i]) { + break; + } + } + + for (; i >= 0; --i) { + ge25519_p2_dbl(&t, r); + + if (aslide[i] > 0) { + ge25519_p1p1_to_p3(&u, &t); + ge25519_add(&t, &u, &Ai[aslide[i] / 2]); + } else if (aslide[i] < 0) { + ge25519_p1p1_to_p3(&u, &t); + ge25519_sub(&t, &u, &Ai[(-aslide[i]) / 2]); + } + + if (bslide[i] > 0) { + ge25519_p1p1_to_p3(&u, &t); + ge25519_madd(&t, &u, &Bi[bslide[i] / 2]); + } else if (bslide[i] < 0) { + ge25519_p1p1_to_p3(&u, &t); + ge25519_msub(&t, &u, &Bi[(-bslide[i]) / 2]); + } + + ge25519_p1p1_to_p2(r, &t); + } +} + +/* + h = a * p + where a = a[0]+256*a[1]+...+256^31 a[31] + + Preconditions: + a[31] <= 127 + + p is public + */ + +void +ge25519_scalarmult(ge25519_p3 *h, const unsigned char *a, const ge25519_p3 *p) +{ + signed char e[64]; + signed char carry; + ge25519_p1p1 r; + ge25519_p2 s; + ge25519_p1p1 t2, t3, t4, t5, t6, t7, t8; + ge25519_p3 p2, p3, p4, p5, p6, p7, p8; + ge25519_cached pi[8]; + ge25519_cached t; + int i; + + ge25519_p3_to_cached(&pi[1 - 1], p); /* p */ + + ge25519_p3_dbl(&t2, p); + ge25519_p1p1_to_p3(&p2, &t2); + ge25519_p3_to_cached(&pi[2 - 1], &p2); /* 2p = 2*p */ + + ge25519_add(&t3, p, &pi[2 - 1]); + ge25519_p1p1_to_p3(&p3, &t3); + ge25519_p3_to_cached(&pi[3 - 1], &p3); /* 3p = 2p+p */ + + ge25519_p3_dbl(&t4, &p2); + ge25519_p1p1_to_p3(&p4, &t4); + ge25519_p3_to_cached(&pi[4 - 1], &p4); /* 4p = 2*2p */ + + ge25519_add(&t5, p, &pi[4 - 1]); + ge25519_p1p1_to_p3(&p5, &t5); + ge25519_p3_to_cached(&pi[5 - 1], &p5); /* 5p = 4p+p */ + + ge25519_p3_dbl(&t6, &p3); + ge25519_p1p1_to_p3(&p6, &t6); + ge25519_p3_to_cached(&pi[6 - 1], &p6); /* 6p = 2*3p */ + + ge25519_add(&t7, p, &pi[6 - 1]); + ge25519_p1p1_to_p3(&p7, &t7); + ge25519_p3_to_cached(&pi[7 - 1], &p7); /* 7p = 6p+p */ + + ge25519_p3_dbl(&t8, &p4); + ge25519_p1p1_to_p3(&p8, &t8); + ge25519_p3_to_cached(&pi[8 - 1], &p8); /* 8p = 2*4p */ + + for (i = 0; i < 32; ++i) { + e[2 * i + 0] = (a[i] >> 0) & 15; + e[2 * i + 1] = (a[i] >> 4) & 15; + } + /* each e[i] is between 0 and 15 */ + /* e[63] is between 0 and 7 */ + + carry = 0; + for (i = 0; i < 63; ++i) { + e[i] += carry; + carry = e[i] + 8; + carry >>= 4; + e[i] -= carry * ((signed char) 1 << 4); + } + e[63] += carry; + /* each e[i] is between -8 and 8 */ + + ge25519_p3_0(h); + + for (i = 63; i != 0; i--) { + ge25519_cmov8_cached(&t, pi, e[i]); + ge25519_add(&r, h, &t); + + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + + ge25519_p1p1_to_p3(h, &r); /* *16 */ + } + ge25519_cmov8_cached(&t, pi, e[i]); + ge25519_add(&r, h, &t); + + ge25519_p1p1_to_p3(h, &r); +} + +/* + h = a * B (with precomputation) + where a = a[0]+256*a[1]+...+256^31 a[31] + B is the Ed25519 base point (x,4/5) with x positive + (as bytes: 0x5866666666666666666666666666666666666666666666666666666666666666) + + Preconditions: + a[31] <= 127 + */ + +void +ge25519_scalarmult_base(ge25519_p3 *h, const unsigned char *a) +{ + signed char e[64]; + signed char carry; + ge25519_p1p1 r; + ge25519_p2 s; + ge25519_precomp t; + int i; + + for (i = 0; i < 32; ++i) { + e[2 * i + 0] = (a[i] >> 0) & 15; + e[2 * i + 1] = (a[i] >> 4) & 15; + } + /* each e[i] is between 0 and 15 */ + /* e[63] is between 0 and 7 */ + + carry = 0; + for (i = 0; i < 63; ++i) { + e[i] += carry; + carry = e[i] + 8; + carry >>= 4; + e[i] -= carry * ((signed char) 1 << 4); + } + e[63] += carry; + /* each e[i] is between -8 and 8 */ + + ge25519_p3_0(h); + + for (i = 1; i < 64; i += 2) { + ge25519_cmov8_base(&t, i / 2, e[i]); + ge25519_madd(&r, h, &t); + ge25519_p1p1_to_p3(h, &r); + } + + ge25519_p3_dbl(&r, h); + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + ge25519_p1p1_to_p2(&s, &r); + ge25519_p2_dbl(&r, &s); + ge25519_p1p1_to_p3(h, &r); + + for (i = 0; i < 64; i += 2) { + ge25519_cmov8_base(&t, i / 2, e[i]); + ge25519_madd(&r, h, &t); + ge25519_p1p1_to_p3(h, &r); + } +} + +/* multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493 */ +static void +ge25519_mul_l(ge25519_p3 *r, const ge25519_p3 *A) +{ + static const signed char aslide[253] = { + 13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 3, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 + }; + ge25519_cached Ai[8]; + ge25519_p1p1 t; + ge25519_p3 u; + ge25519_p3 A2; + int i; + + ge25519_p3_to_cached(&Ai[0], A); + ge25519_p3_dbl(&t, A); + ge25519_p1p1_to_p3(&A2, &t); + ge25519_add(&t, &A2, &Ai[0]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[1], &u); + ge25519_add(&t, &A2, &Ai[1]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[2], &u); + ge25519_add(&t, &A2, &Ai[2]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[3], &u); + ge25519_add(&t, &A2, &Ai[3]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[4], &u); + ge25519_add(&t, &A2, &Ai[4]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[5], &u); + ge25519_add(&t, &A2, &Ai[5]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[6], &u); + ge25519_add(&t, &A2, &Ai[6]); + ge25519_p1p1_to_p3(&u, &t); + ge25519_p3_to_cached(&Ai[7], &u); + + ge25519_p3_0(r); + + for (i = 252; i >= 0; --i) { + ge25519_p3_dbl(&t, r); + + if (aslide[i] > 0) { + ge25519_p1p1_to_p3(&u, &t); + ge25519_add(&t, &u, &Ai[aslide[i] / 2]); + } else if (aslide[i] < 0) { + ge25519_p1p1_to_p3(&u, &t); + ge25519_sub(&t, &u, &Ai[(-aslide[i]) / 2]); + } + + ge25519_p1p1_to_p3(r, &t); + } +} + +int +ge25519_is_on_curve(const ge25519_p3 *p) +{ + fe25519 x2; + fe25519 y2; + fe25519 z2; + fe25519 z4; + fe25519 t0; + fe25519 t1; + + fe25519_sq(x2, p->X); + fe25519_sq(y2, p->Y); + fe25519_sq(z2, p->Z); + fe25519_sub(t0, y2, x2); + fe25519_mul(t0, t0, z2); + + fe25519_mul(t1, x2, y2); + fe25519_mul(t1, t1, d); + fe25519_sq(z4, z2); + fe25519_add(t1, t1, z4); + fe25519_sub(t0, t0, t1); + + return fe25519_iszero(t0); +} + +int +ge25519_is_on_main_subgroup(const ge25519_p3 *p) +{ + ge25519_p3 pl; + + ge25519_mul_l(&pl, p); + + return fe25519_iszero(pl.X); +} + +int +ge25519_is_canonical(const unsigned char *s) +{ + unsigned char c; + unsigned char d; + unsigned int i; + + c = (s[31] & 0x7f) ^ 0x7f; + for (i = 30; i > 0; i--) { + c |= s[i] ^ 0xff; + } + c = (((unsigned int) c) - 1U) >> 8; + d = (0xed - 1U - (unsigned int) s[0]) >> 8; + + return 1 - (c & d & 1); +} + +int +ge25519_has_small_order(const unsigned char s[32]) +{ + CRYPTO_ALIGN(16) + static const unsigned char blacklist[][32] = { + /* 0 (order 4) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + /* 1 (order 1) */ + { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + /* 2707385501144840649318225287225658788936804267575313519463743609750303402022 + (order 8) */ + { 0x26, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0, 0x45, 0xc3, 0xf4, + 0x89, 0xf2, 0xef, 0x98, 0xf0, 0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, + 0x33, 0x39, 0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x05 }, + /* 55188659117513257062467267217118295137698188065244968500265048394206261417927 + (order 8) */ + { 0xc7, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f, 0xba, 0x3c, 0x0b, + 0x76, 0x0d, 0x10, 0x67, 0x0f, 0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, + 0xcc, 0xc6, 0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0x7a }, + /* p-1 (order 2) */ + { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, + /* p (=0, order 4) */ + { 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, + /* p+1 (=1, order 1) */ + { 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f } + }; + unsigned char c[7] = { 0 }; + unsigned int k; + size_t i, j; + + COMPILER_ASSERT(7 == sizeof blacklist / sizeof blacklist[0]); + for (j = 0; j < 31; j++) { + for (i = 0; i < sizeof blacklist / sizeof blacklist[0]; i++) { + c[i] |= s[j] ^ blacklist[i][j]; + } + } + for (i = 0; i < sizeof blacklist / sizeof blacklist[0]; i++) { + c[i] |= (s[j] & 0x7f) ^ blacklist[i][j]; + } + k = 0; + for (i = 0; i < sizeof blacklist / sizeof blacklist[0]; i++) { + k |= (c[i] - 1); + } + return (int) ((k >> 8) & 1); +} + +/* + Input: + a[0]+256*a[1]+...+256^31*a[31] = a + b[0]+256*b[1]+...+256^31*b[31] = b + * + Output: + s[0]+256*s[1]+...+256^31*s[31] = (ab) mod l + where l = 2^252 + 27742317777372353535851937790883648493. + */ + +void +sc25519_mul(unsigned char s[32], const unsigned char a[32], const unsigned char b[32]) +{ + int64_t a0 = 2097151 & load_3(a); + int64_t a1 = 2097151 & (load_4(a + 2) >> 5); + int64_t a2 = 2097151 & (load_3(a + 5) >> 2); + int64_t a3 = 2097151 & (load_4(a + 7) >> 7); + int64_t a4 = 2097151 & (load_4(a + 10) >> 4); + int64_t a5 = 2097151 & (load_3(a + 13) >> 1); + int64_t a6 = 2097151 & (load_4(a + 15) >> 6); + int64_t a7 = 2097151 & (load_3(a + 18) >> 3); + int64_t a8 = 2097151 & load_3(a + 21); + int64_t a9 = 2097151 & (load_4(a + 23) >> 5); + int64_t a10 = 2097151 & (load_3(a + 26) >> 2); + int64_t a11 = (load_4(a + 28) >> 7); + + int64_t b0 = 2097151 & load_3(b); + int64_t b1 = 2097151 & (load_4(b + 2) >> 5); + int64_t b2 = 2097151 & (load_3(b + 5) >> 2); + int64_t b3 = 2097151 & (load_4(b + 7) >> 7); + int64_t b4 = 2097151 & (load_4(b + 10) >> 4); + int64_t b5 = 2097151 & (load_3(b + 13) >> 1); + int64_t b6 = 2097151 & (load_4(b + 15) >> 6); + int64_t b7 = 2097151 & (load_3(b + 18) >> 3); + int64_t b8 = 2097151 & load_3(b + 21); + int64_t b9 = 2097151 & (load_4(b + 23) >> 5); + int64_t b10 = 2097151 & (load_3(b + 26) >> 2); + int64_t b11 = (load_4(b + 28) >> 7); + + int64_t s0; + int64_t s1; + int64_t s2; + int64_t s3; + int64_t s4; + int64_t s5; + int64_t s6; + int64_t s7; + int64_t s8; + int64_t s9; + int64_t s10; + int64_t s11; + int64_t s12; + int64_t s13; + int64_t s14; + int64_t s15; + int64_t s16; + int64_t s17; + int64_t s18; + int64_t s19; + int64_t s20; + int64_t s21; + int64_t s22; + int64_t s23; + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + int64_t carry10; + int64_t carry11; + int64_t carry12; + int64_t carry13; + int64_t carry14; + int64_t carry15; + int64_t carry16; + int64_t carry17; + int64_t carry18; + int64_t carry19; + int64_t carry20; + int64_t carry21; + int64_t carry22; + + s0 = a0 * b0; + s1 = a0 * b1 + a1 * b0; + s2 = a0 * b2 + a1 * b1 + a2 * b0; + s3 = a0 * b3 + a1 * b2 + a2 * b1 + a3 * b0; + s4 = a0 * b4 + a1 * b3 + a2 * b2 + a3 * b1 + a4 * b0; + s5 = a0 * b5 + a1 * b4 + a2 * b3 + a3 * b2 + a4 * b1 + a5 * b0; + s6 = a0 * b6 + a1 * b5 + a2 * b4 + a3 * b3 + a4 * b2 + a5 * b1 + a6 * b0; + s7 = a0 * b7 + a1 * b6 + a2 * b5 + a3 * b4 + a4 * b3 + a5 * b2 + + a6 * b1 + a7 * b0; + s8 = a0 * b8 + a1 * b7 + a2 * b6 + a3 * b5 + a4 * b4 + a5 * b3 + + a6 * b2 + a7 * b1 + a8 * b0; + s9 = a0 * b9 + a1 * b8 + a2 * b7 + a3 * b6 + a4 * b5 + a5 * b4 + + a6 * b3 + a7 * b2 + a8 * b1 + a9 * b0; + s10 = a0 * b10 + a1 * b9 + a2 * b8 + a3 * b7 + a4 * b6 + a5 * b5 + + a6 * b4 + a7 * b3 + a8 * b2 + a9 * b1 + a10 * b0; + s11 = a0 * b11 + a1 * b10 + a2 * b9 + a3 * b8 + a4 * b7 + a5 * b6 + + a6 * b5 + a7 * b4 + a8 * b3 + a9 * b2 + a10 * b1 + a11 * b0; + s12 = a1 * b11 + a2 * b10 + a3 * b9 + a4 * b8 + a5 * b7 + a6 * b6 + + a7 * b5 + a8 * b4 + a9 * b3 + a10 * b2 + a11 * b1; + s13 = a2 * b11 + a3 * b10 + a4 * b9 + a5 * b8 + a6 * b7 + a7 * b6 + + a8 * b5 + a9 * b4 + a10 * b3 + a11 * b2; + s14 = a3 * b11 + a4 * b10 + a5 * b9 + a6 * b8 + a7 * b7 + a8 * b6 + + a9 * b5 + a10 * b4 + a11 * b3; + s15 = a4 * b11 + a5 * b10 + a6 * b9 + a7 * b8 + a8 * b7 + a9 * b6 + + a10 * b5 + a11 * b4; + s16 = + a5 * b11 + a6 * b10 + a7 * b9 + a8 * b8 + a9 * b7 + a10 * b6 + a11 * b5; + s17 = a6 * b11 + a7 * b10 + a8 * b9 + a9 * b8 + a10 * b7 + a11 * b6; + s18 = a7 * b11 + a8 * b10 + a9 * b9 + a10 * b8 + a11 * b7; + s19 = a8 * b11 + a9 * b10 + a10 * b9 + a11 * b8; + s20 = a9 * b11 + a10 * b10 + a11 * b9; + s21 = a10 * b11 + a11 * b10; + s22 = a11 * b11; + s23 = 0; + + carry0 = (s0 + (int64_t) (1L << 20)) >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry2 = (s2 + (int64_t) (1L << 20)) >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry4 = (s4 + (int64_t) (1L << 20)) >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry12 = (s12 + (int64_t) (1L << 20)) >> 21; + s13 += carry12; + s12 -= carry12 * ((uint64_t) 1L << 21); + carry14 = (s14 + (int64_t) (1L << 20)) >> 21; + s15 += carry14; + s14 -= carry14 * ((uint64_t) 1L << 21); + carry16 = (s16 + (int64_t) (1L << 20)) >> 21; + s17 += carry16; + s16 -= carry16 * ((uint64_t) 1L << 21); + carry18 = (s18 + (int64_t) (1L << 20)) >> 21; + s19 += carry18; + s18 -= carry18 * ((uint64_t) 1L << 21); + carry20 = (s20 + (int64_t) (1L << 20)) >> 21; + s21 += carry20; + s20 -= carry20 * ((uint64_t) 1L << 21); + carry22 = (s22 + (int64_t) (1L << 20)) >> 21; + s23 += carry22; + s22 -= carry22 * ((uint64_t) 1L << 21); + + carry1 = (s1 + (int64_t) (1L << 20)) >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry3 = (s3 + (int64_t) (1L << 20)) >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry5 = (s5 + (int64_t) (1L << 20)) >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + carry13 = (s13 + (int64_t) (1L << 20)) >> 21; + s14 += carry13; + s13 -= carry13 * ((uint64_t) 1L << 21); + carry15 = (s15 + (int64_t) (1L << 20)) >> 21; + s16 += carry15; + s15 -= carry15 * ((uint64_t) 1L << 21); + carry17 = (s17 + (int64_t) (1L << 20)) >> 21; + s18 += carry17; + s17 -= carry17 * ((uint64_t) 1L << 21); + carry19 = (s19 + (int64_t) (1L << 20)) >> 21; + s20 += carry19; + s19 -= carry19 * ((uint64_t) 1L << 21); + carry21 = (s21 + (int64_t) (1L << 20)) >> 21; + s22 += carry21; + s21 -= carry21 * ((uint64_t) 1L << 21); + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry12 = (s12 + (int64_t) (1L << 20)) >> 21; + s13 += carry12; + s12 -= carry12 * ((uint64_t) 1L << 21); + carry14 = (s14 + (int64_t) (1L << 20)) >> 21; + s15 += carry14; + s14 -= carry14 * ((uint64_t) 1L << 21); + carry16 = (s16 + (int64_t) (1L << 20)) >> 21; + s17 += carry16; + s16 -= carry16 * ((uint64_t) 1L << 21); + + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + carry13 = (s13 + (int64_t) (1L << 20)) >> 21; + s14 += carry13; + s13 -= carry13 * ((uint64_t) 1L << 21); + carry15 = (s15 + (int64_t) (1L << 20)) >> 21; + s16 += carry15; + s15 -= carry15 * ((uint64_t) 1L << 21); + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (int64_t) (1L << 20)) >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry2 = (s2 + (int64_t) (1L << 20)) >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry4 = (s4 + (int64_t) (1L << 20)) >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + + carry1 = (s1 + (int64_t) (1L << 20)) >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry3 = (s3 + (int64_t) (1L << 20)) >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry5 = (s5 + (int64_t) (1L << 20)) >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry1 = s1 >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry2 = s2 >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry3 = s3 >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry4 = s4 >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry5 = s5 >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry6 = s6 >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry7 = s7 >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry8 = s8 >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry9 = s9 >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry10 = s10 >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry11 = s11 >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + + carry0 = s0 >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry1 = s1 >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry2 = s2 >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry3 = s3 >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry4 = s4 >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry5 = s5 >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry6 = s6 >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry7 = s7 >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry8 = s8 >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry9 = s9 >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry10 = s10 >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 * ((uint64_t) 1 << 5)); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 * ((uint64_t) 1 << 2)); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 * ((uint64_t) 1 << 7)); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 * ((uint64_t) 1 << 4)); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 * ((uint64_t) 1 << 1)); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 * ((uint64_t) 1 << 6)); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 * ((uint64_t) 1 << 3)); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 * ((uint64_t) 1 << 5)); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 * ((uint64_t) 1 << 2)); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 * ((uint64_t) 1 << 7)); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} + +/* + Input: + a[0]+256*a[1]+...+256^31*a[31] = a + b[0]+256*b[1]+...+256^31*b[31] = b + c[0]+256*c[1]+...+256^31*c[31] = c + * + Output: + s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l + where l = 2^252 + 27742317777372353535851937790883648493. + */ + +void +sc25519_muladd(unsigned char s[32], const unsigned char a[32], + const unsigned char b[32], const unsigned char c[32]) +{ + int64_t a0 = 2097151 & load_3(a); + int64_t a1 = 2097151 & (load_4(a + 2) >> 5); + int64_t a2 = 2097151 & (load_3(a + 5) >> 2); + int64_t a3 = 2097151 & (load_4(a + 7) >> 7); + int64_t a4 = 2097151 & (load_4(a + 10) >> 4); + int64_t a5 = 2097151 & (load_3(a + 13) >> 1); + int64_t a6 = 2097151 & (load_4(a + 15) >> 6); + int64_t a7 = 2097151 & (load_3(a + 18) >> 3); + int64_t a8 = 2097151 & load_3(a + 21); + int64_t a9 = 2097151 & (load_4(a + 23) >> 5); + int64_t a10 = 2097151 & (load_3(a + 26) >> 2); + int64_t a11 = (load_4(a + 28) >> 7); + + int64_t b0 = 2097151 & load_3(b); + int64_t b1 = 2097151 & (load_4(b + 2) >> 5); + int64_t b2 = 2097151 & (load_3(b + 5) >> 2); + int64_t b3 = 2097151 & (load_4(b + 7) >> 7); + int64_t b4 = 2097151 & (load_4(b + 10) >> 4); + int64_t b5 = 2097151 & (load_3(b + 13) >> 1); + int64_t b6 = 2097151 & (load_4(b + 15) >> 6); + int64_t b7 = 2097151 & (load_3(b + 18) >> 3); + int64_t b8 = 2097151 & load_3(b + 21); + int64_t b9 = 2097151 & (load_4(b + 23) >> 5); + int64_t b10 = 2097151 & (load_3(b + 26) >> 2); + int64_t b11 = (load_4(b + 28) >> 7); + + int64_t c0 = 2097151 & load_3(c); + int64_t c1 = 2097151 & (load_4(c + 2) >> 5); + int64_t c2 = 2097151 & (load_3(c + 5) >> 2); + int64_t c3 = 2097151 & (load_4(c + 7) >> 7); + int64_t c4 = 2097151 & (load_4(c + 10) >> 4); + int64_t c5 = 2097151 & (load_3(c + 13) >> 1); + int64_t c6 = 2097151 & (load_4(c + 15) >> 6); + int64_t c7 = 2097151 & (load_3(c + 18) >> 3); + int64_t c8 = 2097151 & load_3(c + 21); + int64_t c9 = 2097151 & (load_4(c + 23) >> 5); + int64_t c10 = 2097151 & (load_3(c + 26) >> 2); + int64_t c11 = (load_4(c + 28) >> 7); + + int64_t s0; + int64_t s1; + int64_t s2; + int64_t s3; + int64_t s4; + int64_t s5; + int64_t s6; + int64_t s7; + int64_t s8; + int64_t s9; + int64_t s10; + int64_t s11; + int64_t s12; + int64_t s13; + int64_t s14; + int64_t s15; + int64_t s16; + int64_t s17; + int64_t s18; + int64_t s19; + int64_t s20; + int64_t s21; + int64_t s22; + int64_t s23; + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + int64_t carry10; + int64_t carry11; + int64_t carry12; + int64_t carry13; + int64_t carry14; + int64_t carry15; + int64_t carry16; + int64_t carry17; + int64_t carry18; + int64_t carry19; + int64_t carry20; + int64_t carry21; + int64_t carry22; + + s0 = c0 + a0 * b0; + s1 = c1 + a0 * b1 + a1 * b0; + s2 = c2 + a0 * b2 + a1 * b1 + a2 * b0; + s3 = c3 + a0 * b3 + a1 * b2 + a2 * b1 + a3 * b0; + s4 = c4 + a0 * b4 + a1 * b3 + a2 * b2 + a3 * b1 + a4 * b0; + s5 = c5 + a0 * b5 + a1 * b4 + a2 * b3 + a3 * b2 + a4 * b1 + a5 * b0; + s6 = c6 + a0 * b6 + a1 * b5 + a2 * b4 + a3 * b3 + a4 * b2 + a5 * b1 + + a6 * b0; + s7 = c7 + a0 * b7 + a1 * b6 + a2 * b5 + a3 * b4 + a4 * b3 + a5 * b2 + + a6 * b1 + a7 * b0; + s8 = c8 + a0 * b8 + a1 * b7 + a2 * b6 + a3 * b5 + a4 * b4 + a5 * b3 + + a6 * b2 + a7 * b1 + a8 * b0; + s9 = c9 + a0 * b9 + a1 * b8 + a2 * b7 + a3 * b6 + a4 * b5 + a5 * b4 + + a6 * b3 + a7 * b2 + a8 * b1 + a9 * b0; + s10 = c10 + a0 * b10 + a1 * b9 + a2 * b8 + a3 * b7 + a4 * b6 + a5 * b5 + + a6 * b4 + a7 * b3 + a8 * b2 + a9 * b1 + a10 * b0; + s11 = c11 + a0 * b11 + a1 * b10 + a2 * b9 + a3 * b8 + a4 * b7 + a5 * b6 + + a6 * b5 + a7 * b4 + a8 * b3 + a9 * b2 + a10 * b1 + a11 * b0; + s12 = a1 * b11 + a2 * b10 + a3 * b9 + a4 * b8 + a5 * b7 + a6 * b6 + + a7 * b5 + a8 * b4 + a9 * b3 + a10 * b2 + a11 * b1; + s13 = a2 * b11 + a3 * b10 + a4 * b9 + a5 * b8 + a6 * b7 + a7 * b6 + + a8 * b5 + a9 * b4 + a10 * b3 + a11 * b2; + s14 = a3 * b11 + a4 * b10 + a5 * b9 + a6 * b8 + a7 * b7 + a8 * b6 + + a9 * b5 + a10 * b4 + a11 * b3; + s15 = a4 * b11 + a5 * b10 + a6 * b9 + a7 * b8 + a8 * b7 + a9 * b6 + + a10 * b5 + a11 * b4; + s16 = + a5 * b11 + a6 * b10 + a7 * b9 + a8 * b8 + a9 * b7 + a10 * b6 + a11 * b5; + s17 = a6 * b11 + a7 * b10 + a8 * b9 + a9 * b8 + a10 * b7 + a11 * b6; + s18 = a7 * b11 + a8 * b10 + a9 * b9 + a10 * b8 + a11 * b7; + s19 = a8 * b11 + a9 * b10 + a10 * b9 + a11 * b8; + s20 = a9 * b11 + a10 * b10 + a11 * b9; + s21 = a10 * b11 + a11 * b10; + s22 = a11 * b11; + s23 = 0; + + carry0 = (s0 + (int64_t) (1L << 20)) >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry2 = (s2 + (int64_t) (1L << 20)) >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry4 = (s4 + (int64_t) (1L << 20)) >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry12 = (s12 + (int64_t) (1L << 20)) >> 21; + s13 += carry12; + s12 -= carry12 * ((uint64_t) 1L << 21); + carry14 = (s14 + (int64_t) (1L << 20)) >> 21; + s15 += carry14; + s14 -= carry14 * ((uint64_t) 1L << 21); + carry16 = (s16 + (int64_t) (1L << 20)) >> 21; + s17 += carry16; + s16 -= carry16 * ((uint64_t) 1L << 21); + carry18 = (s18 + (int64_t) (1L << 20)) >> 21; + s19 += carry18; + s18 -= carry18 * ((uint64_t) 1L << 21); + carry20 = (s20 + (int64_t) (1L << 20)) >> 21; + s21 += carry20; + s20 -= carry20 * ((uint64_t) 1L << 21); + carry22 = (s22 + (int64_t) (1L << 20)) >> 21; + s23 += carry22; + s22 -= carry22 * ((uint64_t) 1L << 21); + + carry1 = (s1 + (int64_t) (1L << 20)) >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry3 = (s3 + (int64_t) (1L << 20)) >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry5 = (s5 + (int64_t) (1L << 20)) >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + carry13 = (s13 + (int64_t) (1L << 20)) >> 21; + s14 += carry13; + s13 -= carry13 * ((uint64_t) 1L << 21); + carry15 = (s15 + (int64_t) (1L << 20)) >> 21; + s16 += carry15; + s15 -= carry15 * ((uint64_t) 1L << 21); + carry17 = (s17 + (int64_t) (1L << 20)) >> 21; + s18 += carry17; + s17 -= carry17 * ((uint64_t) 1L << 21); + carry19 = (s19 + (int64_t) (1L << 20)) >> 21; + s20 += carry19; + s19 -= carry19 * ((uint64_t) 1L << 21); + carry21 = (s21 + (int64_t) (1L << 20)) >> 21; + s22 += carry21; + s21 -= carry21 * ((uint64_t) 1L << 21); + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry12 = (s12 + (int64_t) (1L << 20)) >> 21; + s13 += carry12; + s12 -= carry12 * ((uint64_t) 1L << 21); + carry14 = (s14 + (int64_t) (1L << 20)) >> 21; + s15 += carry14; + s14 -= carry14 * ((uint64_t) 1L << 21); + carry16 = (s16 + (int64_t) (1L << 20)) >> 21; + s17 += carry16; + s16 -= carry16 * ((uint64_t) 1L << 21); + + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + carry13 = (s13 + (int64_t) (1L << 20)) >> 21; + s14 += carry13; + s13 -= carry13 * ((uint64_t) 1L << 21); + carry15 = (s15 + (int64_t) (1L << 20)) >> 21; + s16 += carry15; + s15 -= carry15 * ((uint64_t) 1L << 21); + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (int64_t) (1L << 20)) >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry2 = (s2 + (int64_t) (1L << 20)) >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry4 = (s4 + (int64_t) (1L << 20)) >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + + carry1 = (s1 + (int64_t) (1L << 20)) >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry3 = (s3 + (int64_t) (1L << 20)) >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry5 = (s5 + (int64_t) (1L << 20)) >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry1 = s1 >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry2 = s2 >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry3 = s3 >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry4 = s4 >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry5 = s5 >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry6 = s6 >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry7 = s7 >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry8 = s8 >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry9 = s9 >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry10 = s10 >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry11 = s11 >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + + carry0 = s0 >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry1 = s1 >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry2 = s2 >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry3 = s3 >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry4 = s4 >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry5 = s5 >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry6 = s6 >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry7 = s7 >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry8 = s8 >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry9 = s9 >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry10 = s10 >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 * ((uint64_t) 1 << 5)); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 * ((uint64_t) 1 << 2)); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 * ((uint64_t) 1 << 7)); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 * ((uint64_t) 1 << 4)); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 * ((uint64_t) 1 << 1)); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 * ((uint64_t) 1 << 6)); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 * ((uint64_t) 1 << 3)); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 * ((uint64_t) 1 << 5)); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 * ((uint64_t) 1 << 2)); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 * ((uint64_t) 1 << 7)); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} + +/* + Input: + a[0]+256*a[1]+...+256^31*a[31] = a + * + Output: + s[0]+256*s[1]+...+256^31*s[31] = a^2 mod l + where l = 2^252 + 27742317777372353535851937790883648493. + */ + +static inline void +sc25519_sq(unsigned char *s, const unsigned char *a) +{ + sc25519_mul(s, a, a); +} + +/* + Input: + s[0]+256*a[1]+...+256^31*a[31] = a + n + * + Output: + s[0]+256*s[1]+...+256^31*s[31] = x * s^(s^n) mod l + where l = 2^252 + 27742317777372353535851937790883648493. + Overwrites s in place. + */ + +static inline void +sc25519_sqmul(unsigned char s[32], const int n, const unsigned char a[32]) +{ + int i; + + for (i = 0; i < n; i++) { + sc25519_sq(s, s); + } + sc25519_mul(s, s, a); +} + +void +sc25519_invert(unsigned char recip[32], const unsigned char s[32]) +{ + unsigned char _10[32], _100[32], _1000[32], _10000[32], _100000[32], + _1000000[32], _10010011[32], _10010111[32], _100110[32], _1010[32], + _1010000[32], _1010011[32], _1011[32], _10110[32], _10111101[32], + _11[32], _1100011[32], _1100111[32], _11010011[32], _1101011[32], + _11100111[32], _11101011[32], _11110101[32]; + + sc25519_sq(_10, s); + sc25519_mul(_11, s, _10); + sc25519_mul(_100, s, _11); + sc25519_sq(_1000, _100); + sc25519_mul(_1010, _10, _1000); + sc25519_mul(_1011, s, _1010); + sc25519_sq(_10000, _1000); + sc25519_sq(_10110, _1011); + sc25519_mul(_100000, _1010, _10110); + sc25519_mul(_100110, _10000, _10110); + sc25519_sq(_1000000, _100000); + sc25519_mul(_1010000, _10000, _1000000); + sc25519_mul(_1010011, _11, _1010000); + sc25519_mul(_1100011, _10000, _1010011); + sc25519_mul(_1100111, _100, _1100011); + sc25519_mul(_1101011, _100, _1100111); + sc25519_mul(_10010011, _1000000, _1010011); + sc25519_mul(_10010111, _100, _10010011); + sc25519_mul(_10111101, _100110, _10010111); + sc25519_mul(_11010011, _10110, _10111101); + sc25519_mul(_11100111, _1010000, _10010111); + sc25519_mul(_11101011, _100, _11100111); + sc25519_mul(_11110101, _1010, _11101011); + + sc25519_mul(recip, _1011, _11110101); + sc25519_sqmul(recip, 126, _1010011); + sc25519_sqmul(recip, 9, _10); + sc25519_mul(recip, recip, _11110101); + sc25519_sqmul(recip, 7, _1100111); + sc25519_sqmul(recip, 9, _11110101); + sc25519_sqmul(recip, 11, _10111101); + sc25519_sqmul(recip, 8, _11100111); + sc25519_sqmul(recip, 9, _1101011); + sc25519_sqmul(recip, 6, _1011); + sc25519_sqmul(recip, 14, _10010011); + sc25519_sqmul(recip, 10, _1100011); + sc25519_sqmul(recip, 9, _10010111); + sc25519_sqmul(recip, 10, _11110101); + sc25519_sqmul(recip, 8, _11010011); + sc25519_sqmul(recip, 8, _11101011); +} + +/* + Input: + s[0]+256*s[1]+...+256^63*s[63] = s + * + Output: + s[0]+256*s[1]+...+256^31*s[31] = s mod l + where l = 2^252 + 27742317777372353535851937790883648493. + Overwrites s in place. + */ + +void +sc25519_reduce(unsigned char s[64]) +{ + int64_t s0 = 2097151 & load_3(s); + int64_t s1 = 2097151 & (load_4(s + 2) >> 5); + int64_t s2 = 2097151 & (load_3(s + 5) >> 2); + int64_t s3 = 2097151 & (load_4(s + 7) >> 7); + int64_t s4 = 2097151 & (load_4(s + 10) >> 4); + int64_t s5 = 2097151 & (load_3(s + 13) >> 1); + int64_t s6 = 2097151 & (load_4(s + 15) >> 6); + int64_t s7 = 2097151 & (load_3(s + 18) >> 3); + int64_t s8 = 2097151 & load_3(s + 21); + int64_t s9 = 2097151 & (load_4(s + 23) >> 5); + int64_t s10 = 2097151 & (load_3(s + 26) >> 2); + int64_t s11 = 2097151 & (load_4(s + 28) >> 7); + int64_t s12 = 2097151 & (load_4(s + 31) >> 4); + int64_t s13 = 2097151 & (load_3(s + 34) >> 1); + int64_t s14 = 2097151 & (load_4(s + 36) >> 6); + int64_t s15 = 2097151 & (load_3(s + 39) >> 3); + int64_t s16 = 2097151 & load_3(s + 42); + int64_t s17 = 2097151 & (load_4(s + 44) >> 5); + int64_t s18 = 2097151 & (load_3(s + 47) >> 2); + int64_t s19 = 2097151 & (load_4(s + 49) >> 7); + int64_t s20 = 2097151 & (load_4(s + 52) >> 4); + int64_t s21 = 2097151 & (load_3(s + 55) >> 1); + int64_t s22 = 2097151 & (load_4(s + 57) >> 6); + int64_t s23 = (load_4(s + 60) >> 3); + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + int64_t carry10; + int64_t carry11; + int64_t carry12; + int64_t carry13; + int64_t carry14; + int64_t carry15; + int64_t carry16; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry12 = (s12 + (int64_t) (1L << 20)) >> 21; + s13 += carry12; + s12 -= carry12 * ((uint64_t) 1L << 21); + carry14 = (s14 + (int64_t) (1L << 20)) >> 21; + s15 += carry14; + s14 -= carry14 * ((uint64_t) 1L << 21); + carry16 = (s16 + (int64_t) (1L << 20)) >> 21; + s17 += carry16; + s16 -= carry16 * ((uint64_t) 1L << 21); + + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + carry13 = (s13 + (int64_t) (1L << 20)) >> 21; + s14 += carry13; + s13 -= carry13 * ((uint64_t) 1L << 21); + carry15 = (s15 + (int64_t) (1L << 20)) >> 21; + s16 += carry15; + s15 -= carry15 * ((uint64_t) 1L << 21); + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (int64_t) (1L << 20)) >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry2 = (s2 + (int64_t) (1L << 20)) >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry4 = (s4 + (int64_t) (1L << 20)) >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry6 = (s6 + (int64_t) (1L << 20)) >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry8 = (s8 + (int64_t) (1L << 20)) >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry10 = (s10 + (int64_t) (1L << 20)) >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + + carry1 = (s1 + (int64_t) (1L << 20)) >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry3 = (s3 + (int64_t) (1L << 20)) >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry5 = (s5 + (int64_t) (1L << 20)) >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry7 = (s7 + (int64_t) (1L << 20)) >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry9 = (s9 + (int64_t) (1L << 20)) >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry11 = (s11 + (int64_t) (1L << 20)) >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry1 = s1 >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry2 = s2 >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry3 = s3 >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry4 = s4 >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry5 = s5 >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry6 = s6 >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry7 = s7 >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry8 = s8 >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry9 = s9 >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry10 = s10 >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + carry11 = s11 >> 21; + s12 += carry11; + s11 -= carry11 * ((uint64_t) 1L << 21); + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + + carry0 = s0 >> 21; + s1 += carry0; + s0 -= carry0 * ((uint64_t) 1L << 21); + carry1 = s1 >> 21; + s2 += carry1; + s1 -= carry1 * ((uint64_t) 1L << 21); + carry2 = s2 >> 21; + s3 += carry2; + s2 -= carry2 * ((uint64_t) 1L << 21); + carry3 = s3 >> 21; + s4 += carry3; + s3 -= carry3 * ((uint64_t) 1L << 21); + carry4 = s4 >> 21; + s5 += carry4; + s4 -= carry4 * ((uint64_t) 1L << 21); + carry5 = s5 >> 21; + s6 += carry5; + s5 -= carry5 * ((uint64_t) 1L << 21); + carry6 = s6 >> 21; + s7 += carry6; + s6 -= carry6 * ((uint64_t) 1L << 21); + carry7 = s7 >> 21; + s8 += carry7; + s7 -= carry7 * ((uint64_t) 1L << 21); + carry8 = s8 >> 21; + s9 += carry8; + s8 -= carry8 * ((uint64_t) 1L << 21); + carry9 = s9 >> 21; + s10 += carry9; + s9 -= carry9 * ((uint64_t) 1L << 21); + carry10 = s10 >> 21; + s11 += carry10; + s10 -= carry10 * ((uint64_t) 1L << 21); + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 * ((uint64_t) 1 << 5)); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 * ((uint64_t) 1 << 2)); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 * ((uint64_t) 1 << 7)); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 * ((uint64_t) 1 << 4)); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 * ((uint64_t) 1 << 1)); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 * ((uint64_t) 1 << 6)); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 * ((uint64_t) 1 << 3)); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 * ((uint64_t) 1 << 5)); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 * ((uint64_t) 1 << 2)); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 * ((uint64_t) 1 << 7)); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} + +int +sc25519_is_canonical(const unsigned char s[32]) +{ + /* 2^252+27742317777372353535851937790883648493 */ + static const unsigned char L[32] = { + 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, + 0xa2, 0xde, 0xf9, 0xde, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 + }; + unsigned char c = 0; + unsigned char n = 1; + unsigned int i = 32; + + do { + i--; + c |= ((s[i] - L[i]) >> 8) & n; + n &= ((s[i] ^ L[i]) - 1) >> 8; + } while (i != 0); + + return (c != 0); +} + +/* multiply by the cofactor */ +static void +ge25519_clear_cofactor(ge25519_p3 *p3) +{ + ge25519_p1p1 p1; + ge25519_p2 p2; + + ge25519_p3_dbl(&p1, p3); + ge25519_p1p1_to_p2(&p2, &p1); + ge25519_p2_dbl(&p1, &p2); + ge25519_p1p1_to_p2(&p2, &p1); + ge25519_p2_dbl(&p1, &p2); + ge25519_p1p1_to_p3(p3, &p1); +} + +static void +ge25519_elligator2(unsigned char s[32], const fe25519 r, const unsigned char x_sign) +{ + fe25519 gx; + fe25519 negx; + fe25519 rr2; + fe25519 x, x2, x3; + ge25519_p3 p3; + unsigned int notsquare; + + fe25519_sq2(rr2, r); + rr2[0]++; + fe25519_invert(rr2, rr2); + fe25519_mul32(x, rr2, curve25519_A[0]); + fe25519_neg(x, x); + + fe25519_sq(x2, x); + fe25519_mul(x3, x, x2); + fe25519_add(gx, x3, x); + fe25519_mul32(x2, x2, curve25519_A[0]); + fe25519_add(gx, x2, gx); + + notsquare = fe25519_notsquare(gx); + fe25519_neg(negx, x); + fe25519_cmov(x, negx, notsquare); + fe25519_0(x2); + fe25519_cmov(x2, curve25519_A, notsquare); + fe25519_sub(x, x, x2); + + /* yed = (x-1)/(x+1) */ + { + fe25519 one; + fe25519 x_plus_one; + fe25519 x_plus_one_inv; + fe25519 x_minus_one; + fe25519 yed; + + fe25519_1(one); + fe25519_add(x_plus_one, x, one); + fe25519_sub(x_minus_one, x, one); + fe25519_invert(x_plus_one_inv, x_plus_one); + fe25519_mul(yed, x_minus_one, x_plus_one_inv); + fe25519_tobytes(s, yed); + } + + /* recover x */ + s[31] |= x_sign; + if (ge25519_frombytes(&p3, s) != 0) { + abort(); /* LCOV_EXCL_LINE */ + } + + ge25519_clear_cofactor(&p3); + ge25519_p3_tobytes(s, &p3); +} + +void +ge25519_from_uniform(unsigned char s[32], const unsigned char r[32]) +{ + fe25519 r_fe; + unsigned char x_sign; + + memcpy(s, r, 32); + x_sign = s[31] & 0x80; + s[31] &= 0x7f; + fe25519_frombytes(r_fe, s); + ge25519_elligator2(s, r_fe, x_sign); +} + +void +ge25519_from_hash(unsigned char s[32], const unsigned char h[64]) +{ + unsigned char fl[32]; + unsigned char gl[32]; + fe25519 fe_f; + fe25519 fe_g; + size_t i; + unsigned char x_sign; + + x_sign = h[0] & 0x80; + for (i = 0; i < 32; i++) { + fl[i] = h[63 - i]; + gl[i] = h[31 - i]; + } + fl[31] &= 0x7f; + gl[31] &= 0x7f; + fe25519_frombytes(fe_f, fl); + fe25519_frombytes(fe_g, gl); + fe_f[0] += (h[32] >> 7) * 19; + for (i = 0; i < sizeof (fe25519) / sizeof fe_f[0]; i++) { + fe_f[i] += 38 * fe_g[i]; + } + fe25519_reduce(fe_f, fe_f); + ge25519_elligator2(s, fe_f, x_sign); +} + +/* Ristretto group */ + +static int +ristretto255_sqrt_ratio_m1(fe25519 x, const fe25519 u, const fe25519 v) +{ + fe25519 v3; + fe25519 vxx; + fe25519 m_root_check, p_root_check, f_root_check; + fe25519 x_sqrtm1; + int has_m_root, has_p_root, has_f_root; + + fe25519_sq(v3, v); + fe25519_mul(v3, v3, v); /* v3 = v^3 */ + fe25519_sq(x, v3); + fe25519_mul(x, x, v); + fe25519_mul(x, x, u); /* x = uv^7 */ + + fe25519_pow22523(x, x); /* x = (uv^7)^((q-5)/8) */ + fe25519_mul(x, x, v3); + fe25519_mul(x, x, u); /* x = uv^3(uv^7)^((q-5)/8) */ + + fe25519_sq(vxx, x); + fe25519_mul(vxx, vxx, v); /* vx^2 */ + fe25519_sub(m_root_check, vxx, u); /* vx^2-u */ + fe25519_add(p_root_check, vxx, u); /* vx^2+u */ + fe25519_mul(f_root_check, u, sqrtm1); /* u*sqrt(-1) */ + fe25519_add(f_root_check, vxx, f_root_check); /* vx^2+u*sqrt(-1) */ + has_m_root = fe25519_iszero(m_root_check); + has_p_root = fe25519_iszero(p_root_check); + has_f_root = fe25519_iszero(f_root_check); + fe25519_mul(x_sqrtm1, x, sqrtm1); /* x*sqrt(-1) */ + + fe25519_cmov(x, x_sqrtm1, has_p_root | has_f_root); + fe25519_abs(x, x); + + return has_m_root | has_p_root; +} + +static int +ristretto255_is_canonical(const unsigned char *s) +{ + unsigned char c; + unsigned char d; + unsigned char e; + unsigned int i; + + c = (s[31] & 0x7f) ^ 0x7f; + for (i = 30; i > 0; i--) { + c |= s[i] ^ 0xff; + } + c = (((unsigned int) c) - 1U) >> 8; + d = (0xed - 1U - (unsigned int) s[0]) >> 8; + e = s[31] >> 7; + + return 1 - (((c & d) | e | s[0]) & 1); +} + +int +ristretto255_frombytes(ge25519_p3 *h, const unsigned char *s) +{ + fe25519 inv_sqrt; + fe25519 one; + fe25519 s_; + fe25519 ss; + fe25519 u1, u2; + fe25519 u1u1, u2u2; + fe25519 v; + fe25519 v_u2u2; + int was_square; + + if (ristretto255_is_canonical(s) == 0) { + return -1; + } + fe25519_frombytes(s_, s); + fe25519_sq(ss, s_); /* ss = s^2 */ + + fe25519_1(u1); + fe25519_sub(u1, u1, ss); /* u1 = 1-ss */ + fe25519_sq(u1u1, u1); /* u1u1 = u1^2 */ + + fe25519_1(u2); + fe25519_add(u2, u2, ss); /* u2 = 1+ss */ + fe25519_sq(u2u2, u2); /* u2u2 = u2^2 */ + + fe25519_mul(v, d, u1u1); /* v = d*u1^2 */ + fe25519_neg(v, v); /* v = -d*u1^2 */ + fe25519_sub(v, v, u2u2); /* v = -(d*u1^2)-u2^2 */ + + fe25519_mul(v_u2u2, v, u2u2); /* v_u2u2 = v*u2^2 */ + + fe25519_1(one); + was_square = ristretto255_sqrt_ratio_m1(inv_sqrt, one, v_u2u2); + fe25519_mul(h->X, inv_sqrt, u2); + fe25519_mul(h->Y, inv_sqrt, h->X); + fe25519_mul(h->Y, h->Y, v); + + fe25519_mul(h->X, h->X, s_); + fe25519_add(h->X, h->X, h->X); + fe25519_abs(h->X, h->X); + fe25519_mul(h->Y, u1, h->Y); + fe25519_1(h->Z); + fe25519_mul(h->T, h->X, h->Y); + + return - ((1 - was_square) | + fe25519_isnegative(h->T) | fe25519_iszero(h->Y)); +} + +void +ristretto255_p3_tobytes(unsigned char *s, const ge25519_p3 *h) +{ + fe25519 den1, den2; + fe25519 den_inv; + fe25519 eden; + fe25519 inv_sqrt; + fe25519 ix, iy; + fe25519 one; + fe25519 s_; + fe25519 t_z_inv; + fe25519 u1, u2; + fe25519 u1_u2u2; + fe25519 x_, y_; + fe25519 x_z_inv; + fe25519 z_inv; + fe25519 zmy; + int rotate; + + fe25519_add(u1, h->Z, h->Y); /* u1 = Z+Y */ + fe25519_sub(zmy, h->Z, h->Y); /* zmy = Z-Y */ + fe25519_mul(u1, u1, zmy); /* u1 = (Z+Y)*(Z-Y) */ + fe25519_mul(u2, h->X, h->Y); /* u2 = X*Y */ + + fe25519_sq(u1_u2u2, u2); /* u1_u2u2 = u2^2 */ + fe25519_mul(u1_u2u2, u1, u1_u2u2); /* u1_u2u2 = u1*u2^2 */ + + fe25519_1(one); + (void) ristretto255_sqrt_ratio_m1(inv_sqrt, one, u1_u2u2); + fe25519_mul(den1, inv_sqrt, u1); /* den1 = inv_sqrt*u1 */ + fe25519_mul(den2, inv_sqrt, u2); /* den2 = inv_sqrt*u2 */ + fe25519_mul(z_inv, den1, den2); /* z_inv = den1*den2 */ + fe25519_mul(z_inv, z_inv, h->T); /* z_inv = den1*den2*T */ + + fe25519_mul(ix, h->X, sqrtm1); /* ix = X*sqrt(-1) */ + fe25519_mul(iy, h->Y, sqrtm1); /* iy = Y*sqrt(-1) */ + fe25519_mul(eden, den1, invsqrtamd); /* eden = den1/sqrt(a-d) */ + + fe25519_mul(t_z_inv, h->T, z_inv); /* t_z_inv = T*z_inv */ + rotate = fe25519_isnegative(t_z_inv); + + fe25519_copy(x_, h->X); + fe25519_copy(y_, h->Y); + fe25519_copy(den_inv, den2); + + fe25519_cmov(x_, iy, rotate); + fe25519_cmov(y_, ix, rotate); + fe25519_cmov(den_inv, eden, rotate); + + fe25519_mul(x_z_inv, x_, z_inv); + fe25519_cneg(y_, y_, fe25519_isnegative(x_z_inv)); + + fe25519_sub(s_, h->Z, y_); + fe25519_mul(s_, den_inv, s_); + fe25519_abs(s_, s_); + fe25519_tobytes(s, s_); +} + +static void +ristretto255_elligator(ge25519_p3 *p, const fe25519 t) +{ + fe25519 c; + fe25519 n; + fe25519 one; + fe25519 r; + fe25519 rpd; + fe25519 s, s_prime; + fe25519 ss; + fe25519 u, v; + fe25519 w0, w1, w2, w3; + int wasnt_square; + + fe25519_1(one); + fe25519_sq(r, t); /* r = t^2 */ + fe25519_mul(r, sqrtm1, r); /* r = sqrt(-1)*t^2 */ + fe25519_add(u, r, one); /* u = r+1 */ + fe25519_mul(u, u, onemsqd); /* u = (r+1)*(1-d^2) */ + fe25519_1(c); + fe25519_neg(c, c); /* c = -1 */ + fe25519_add(rpd, r, d); /* rpd = r+d */ + fe25519_mul(v, r, d); /* v = r*d */ + fe25519_sub(v, c, v); /* v = c-r*d */ + fe25519_mul(v, v, rpd); /* v = (c-r*d)*(r+d) */ + + wasnt_square = 1 - ristretto255_sqrt_ratio_m1(s, u, v); + fe25519_mul(s_prime, s, t); + fe25519_abs(s_prime, s_prime); + fe25519_neg(s_prime, s_prime); /* s_prime = -|s*t| */ + fe25519_cmov(s, s_prime, wasnt_square); + fe25519_cmov(c, r, wasnt_square); + + fe25519_sub(n, r, one); /* n = r-1 */ + fe25519_mul(n, n, c); /* n = c*(r-1) */ + fe25519_mul(n, n, sqdmone); /* n = c*(r-1)*(d-1)^2 */ + fe25519_sub(n, n, v); /* n = c*(r-1)*(d-1)^2-v */ + + fe25519_add(w0, s, s); /* w0 = 2s */ + fe25519_mul(w0, w0, v); /* w0 = 2s*v */ + fe25519_mul(w1, n, sqrtadm1); /* w1 = n*sqrt(ad-1) */ + fe25519_sq(ss, s); /* ss = s^2 */ + fe25519_sub(w2, one, ss); /* w2 = 1-s^2 */ + fe25519_add(w3, one, ss); /* w3 = 1+s^2 */ + + fe25519_mul(p->X, w0, w3); + fe25519_mul(p->Y, w2, w1); + fe25519_mul(p->Z, w1, w3); + fe25519_mul(p->T, w0, w2); +} + +void +ristretto255_from_hash(unsigned char s[32], const unsigned char h[64]) +{ + fe25519 r0, r1; + ge25519_cached p1_cached; + ge25519_p1p1 p_p1p1; + ge25519_p3 p0, p1; + ge25519_p3 p; + + fe25519_frombytes(r0, h); + fe25519_frombytes(r1, h + 32); + ristretto255_elligator(&p0, r0); + ristretto255_elligator(&p1, r1); + ge25519_p3_to_cached(&p1_cached, &p1); + ge25519_add(&p_p1p1, &p0, &p1_cached); + ge25519_p1p1_to_p3(&p, &p_p1p1); + ristretto255_p3_tobytes(s, &p); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base.h new file mode 100644 index 0000000..e18530b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base.h @@ -0,0 +1,1344 @@ +{ /* 0/31 */ + { + { 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605 }, + { -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378 }, + { -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546 } + }, + { + { -12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303 }, + { -21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081 }, + { 26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697 } + }, + { + { 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024 }, + { 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574 }, + { 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357 } + }, + { + { -17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540 }, + { 23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397 }, + { 7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325 } + }, + { + { 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380 }, + { 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306 }, + { 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942 } + }, + { + { -15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777 }, + { -8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737 }, + { -18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652 } + }, + { + { 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766 }, + { -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701 }, + { 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300 } + }, + { + { 14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726 }, + { -7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955 }, + { 27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425 } + } +}, +{ /* 1/31 */ + { + { -13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171 }, + { 27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510 }, + { 17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660 } + }, + { + { -10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639 }, + { 29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963 }, + { 5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950 } + }, + { + { -27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568 }, + { 12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335 }, + { 25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628 } + }, + { + { -26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007 }, + { -2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772 }, + { -22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653 } + }, + { + { 2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567 }, + { 13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686 }, + { 21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372 } + }, + { + { -13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887 }, + { -23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954 }, + { -29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953 } + }, + { + { 24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833 }, + { -16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532 }, + { -22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876 } + }, + { + { 2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268 }, + { 33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214 }, + { 1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038 } + } +}, +{ /* 2/31 */ + { + { 6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800 }, + { 4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645 }, + { -4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664 } + }, + { + { 1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933 }, + { -25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182 }, + { -17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222 } + }, + { + { -18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991 }, + { 20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880 }, + { 9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092 } + }, + { + { -16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295 }, + { 19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788 }, + { 8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553 } + }, + { + { -15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026 }, + { 11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347 }, + { -18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033 } + }, + { + { -23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395 }, + { -27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278 }, + { 1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890 } + }, + { + { 32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995 }, + { -30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596 }, + { -11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891 } + }, + { + { 31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060 }, + { 11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608 }, + { -20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606 } + } +}, +{ /* 3/31 */ + { + { 7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389 }, + { -19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016 }, + { -11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341 } + }, + { + { -22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505 }, + { 14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553 }, + { -28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655 } + }, + { + { 15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220 }, + { 12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631 }, + { -4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099 } + }, + { + { 26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556 }, + { 14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749 }, + { 236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930 } + }, + { + { 1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391 }, + { 5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253 }, + { 20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066 } + }, + { + { 24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958 }, + { -11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082 }, + { -28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383 } + }, + { + { -30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521 }, + { -11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807 }, + { 23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948 } + }, + { + { 9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134 }, + { -32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455 }, + { 27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629 } + } +}, +{ /* 4/31 */ + { + { -8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069 }, + { -32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746 }, + { 24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919 } + }, + { + { 11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837 }, + { 8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906 }, + { -28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771 } + }, + { + { -25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817 }, + { 10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098 }, + { 10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409 } + }, + { + { -12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504 }, + { -26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727 }, + { 28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420 } + }, + { + { -32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003 }, + { -1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605 }, + { -30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384 } + }, + { + { -26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701 }, + { -23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683 }, + { 29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708 } + }, + { + { -3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563 }, + { -19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260 }, + { -5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387 } + }, + { + { -19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672 }, + { 23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686 }, + { -24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665 } + } +}, +{ /* 5/31 */ + { + { 11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182 }, + { -31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277 }, + { 14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628 } + }, + { + { -4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474 }, + { -26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539 }, + { -25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822 } + }, + { + { -10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970 }, + { 19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756 }, + { -24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508 } + }, + { + { -26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683 }, + { -10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655 }, + { -20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158 } + }, + { + { -4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125 }, + { -15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839 }, + { -20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664 } + }, + { + { 27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294 }, + { -18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899 }, + { -11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070 } + }, + { + { 3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294 }, + { -15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949 }, + { -21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083 } + }, + { + { 31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420 }, + { -5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940 }, + { 29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396 } + } +}, +{ /* 6/31 */ + { + { -12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567 }, + { 20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127 }, + { -16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294 } + }, + { + { -12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887 }, + { 22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964 }, + { 16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195 } + }, + { + { 9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244 }, + { 24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999 }, + { -1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762 } + }, + { + { -18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274 }, + { -33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236 }, + { -16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605 } + }, + { + { -13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761 }, + { -22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884 }, + { -6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482 } + }, + { + { -24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638 }, + { -11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490 }, + { -32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170 } + }, + { + { 5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736 }, + { 10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124 }, + { -17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392 } + }, + { + { 8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029 }, + { 6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048 }, + { 28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958 } + } +}, +{ /* 7/31 */ + { + { 24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593 }, + { 26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071 }, + { -11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692 } + }, + { + { 11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687 }, + { -160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441 }, + { -20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001 } + }, + { + { -938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460 }, + { -19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007 }, + { -21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762 } + }, + { + { 15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005 }, + { -9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674 }, + { 4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035 } + }, + { + { 7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590 }, + { -2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957 }, + { -30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812 } + }, + { + { 33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740 }, + { -18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122 }, + { -27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158 } + }, + { + { 8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885 }, + { 26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140 }, + { 19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857 } + }, + { + { 801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155 }, + { 19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260 }, + { 19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483 } + } +}, +{ /* 8/31 */ + { + { -3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677 }, + { 32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815 }, + { 22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751 } + }, + { + { -16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203 }, + { -11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208 }, + { 1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230 } + }, + { + { 16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850 }, + { -21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389 }, + { -9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968 } + }, + { + { -11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689 }, + { 14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880 }, + { 5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304 } + }, + { + { 30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632 }, + { -3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412 }, + { 20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566 } + }, + { + { -20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038 }, + { -26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232 }, + { -1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943 } + }, + { + { 17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856 }, + { 23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738 }, + { 15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971 } + }, + { + { -27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718 }, + { -13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697 }, + { -11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883 } + } +}, +{ /* 9/31 */ + { + { 5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912 }, + { -26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358 }, + { 3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849 } + }, + { + { 29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307 }, + { -14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977 }, + { -6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335 } + }, + { + { -29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831, 15026644 }, + { -22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616 }, + { -27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735 } + }, + { + { -21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099 }, + { 29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341 }, + { -936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336 } + }, + { + { -23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646 }, + { 31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425 }, + { -17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388 } + }, + { + { -31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743 }, + { -16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822 }, + { -8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462 } + }, + { + { 18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985 }, + { 9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702 }, + { -22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797 } + }, + { + { 21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293 }, + { 27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100 }, + { 19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688 } + } +}, +{ /* 10/31 */ + { + { 12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186 }, + { 2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610 }, + { -2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707 } + }, + { + { 7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220 }, + { 915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025 }, + { 32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044 } + }, + { + { 32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992 }, + { -4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027 }, + { 21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197 } + }, + { + { 8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901 }, + { 31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952 }, + { 19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878 } + }, + { + { -28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390 }, + { 32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730 }, + { 2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730 } + }, + { + { -19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180 }, + { -30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272 }, + { -15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715 } + }, + { + { -22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970 }, + { -31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772 }, + { -17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865 } + }, + { + { 15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750 }, + { 20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373 }, + { 32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348 } + } +}, +{ /* 11/31 */ + { + { 9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144 }, + { -22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195 }, + { 5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086 } + }, + { + { -13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684 }, + { -8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518 }, + { -2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233 } + }, + { + { -5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793 }, + { -2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794 }, + { 580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435 } + }, + { + { 23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921 }, + { 13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518 }, + { 2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563 } + }, + { + { 14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278 }, + { -27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024 }, + { 4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030 } + }, + { + { 10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783 }, + { 27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717 }, + { 6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844 } + }, + { + { 14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333 }, + { 16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048 }, + { 22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760 } + }, + { + { -4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760 }, + { -15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757 }, + { -2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112 } + } +}, +{ /* 12/31 */ + { + { -19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468 }, + { 3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184 }, + { 10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289 } + }, + { + { 15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066 }, + { 24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882 }, + { 13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226 } + }, + { + { 16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101 }, + { 29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279 }, + { -6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811 } + }, + { + { 27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709 }, + { 20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714 }, + { -2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121 } + }, + { + { 9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464 }, + { 12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847 }, + { 13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400 } + }, + { + { 4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414 }, + { -15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158 }, + { 17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045 } + }, + { + { -461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415 }, + { -5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459 }, + { -31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079 } + }, + { + { 21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412 }, + { -20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743 }, + { -14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836 } + } +}, +{ /* 13/31 */ + { + { 12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022 }, + { 18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429 }, + { -6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065 } + }, + { + { 30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861 }, + { 10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000 }, + { -33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101 } + }, + { + { 32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815 }, + { 29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642 }, + { 10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966 } + }, + { + { 25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574 }, + { -21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742 }, + { -18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689 } + }, + { + { 12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020 }, + { -10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772 }, + { 3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982 } + }, + { + { -14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953 }, + { -16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218 }, + { -17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265 } + }, + { + { 29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073 }, + { -3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325 }, + { -11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798 } + }, + { + { -4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870 }, + { -7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863 }, + { -13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927 } + } +}, +{ /* 14/31 */ + { + { -2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267 }, + { -9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663 }, + { 22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862 } + }, + { + { -25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673 }, + { 15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943 }, + { 15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020 } + }, + { + { -4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238 }, + { 11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064 }, + { 14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795 } + }, + { + { 15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052 }, + { -10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904 }, + { 29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531 } + }, + { + { -13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979 }, + { -5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841 }, + { 10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431 } + }, + { + { 10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324 }, + { -31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940 }, + { 10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320 } + }, + { + { -15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184 }, + { 14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114 }, + { 30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878 } + }, + { + { 12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784 }, + { -2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091 }, + { -16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585 } + } +}, +{ /* 15/31 */ + { + { -8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208 }, + { 10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864 }, + { 17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661 } + }, + { + { 7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233 }, + { 26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212 }, + { -12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525 } + }, + { + { -24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068 }, + { 9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397 }, + { -8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988 } + }, + { + { 5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889 }, + { 32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038 }, + { 14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697 } + }, + { + { 20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875 }, + { -25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905 }, + { -25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656 } + }, + { + { 11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818 }, + { 27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714 }, + { 10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203 } + }, + { + { 20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931 }, + { -30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024 }, + { -23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084 } + }, + { + { -1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204 }, + { 20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817 }, + { 27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667 } + } +}, +{ /* 16/31 */ + { + { 11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504 }, + { -12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768 }, + { -19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255 } + }, + { + { 6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790 }, + { 1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438 }, + { -22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333 } + }, + { + { 17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971 }, + { 31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905 }, + { 29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409 } + }, + { + { 12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409 }, + { 6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499 }, + { -8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363 } + }, + { + { 28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664 }, + { -11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324 }, + { -21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940 } + }, + { + { 13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990 }, + { -17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914 }, + { -25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290 } + }, + { + { 24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257 }, + { -6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433 }, + { -16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236 } + }, + { + { -12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045 }, + { 11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093 }, + { -1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347 } + } +}, +{ /* 17/31 */ + { + { -28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191 }, + { -15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507 }, + { -12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906 } + }, + { + { 3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018 }, + { -16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109 }, + { -23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926 } + }, + { + { -24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528 }, + { 8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625 }, + { -32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286 } + }, + { + { 2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033 }, + { 27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866 }, + { 21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896 } + }, + { + { 30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075 }, + { 26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347 }, + { -22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437 } + }, + { + { -5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165 }, + { -18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588 }, + { -32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193 } + }, + { + { -19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017 }, + { -28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883 }, + { 21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961 } + }, + { + { 8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043 }, + { 29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663 }, + { -20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362 } + } +}, +{ /* 18/31 */ + { + { -33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860 }, + { 2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466 }, + { -24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063 } + }, + { + { -26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997 }, + { -1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295 }, + { -13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369 } + }, + { + { 9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385 }, + { 18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109 }, + { 2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906 } + }, + { + { 4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424 }, + { -19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185 }, + { 7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962 } + }, + { + { -7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325 }, + { 10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593 }, + { 696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404 } + }, + { + { -11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644 }, + { 17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801 }, + { 26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804 } + }, + { + { -31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884 }, + { -586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577 }, + { -9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849 } + }, + { + { 32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473 }, + { -8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644 }, + { -2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319 } + } +}, +{ /* 19/31 */ + { + { -11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599 }, + { -9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768 }, + { -27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084 } + }, + { + { -27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328 }, + { -15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369 }, + { 20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920 } + }, + { + { 12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815 }, + { -32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025 }, + { -21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397 } + }, + { + { -20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448 }, + { 6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981 }, + { 30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165 } + }, + { + { 32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501 }, + { 17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073 }, + { -1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861 } + }, + { + { 14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845 }, + { -1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211 }, + { 18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870 } + }, + { + { 10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096 }, + { 33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803 }, + { -32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168 } + }, + { + { 30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965 }, + { -14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505 }, + { 18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598 } + } +}, +{ /* 20/31 */ + { + { 5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782 }, + { 5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900 }, + { -31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479 } + }, + { + { -12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208 }, + { 8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232 }, + { 17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719 } + }, + { + { 16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271 }, + { -4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326 }, + { -8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132 } + }, + { + { 14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300 }, + { 8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570 }, + { 15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670 } + }, + { + { -2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994 }, + { -12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913 }, + { 31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317 } + }, + { + { -25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730 }, + { 842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096 }, + { -4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078 } + }, + { + { -15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411 }, + { -19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905 }, + { -9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654 } + }, + { + { -28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870 }, + { -23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498 }, + { 12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579 } + } +}, +{ /* 21/31 */ + { + { 14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677 }, + { 10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647 }, + { -2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743 } + }, + { + { -25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468 }, + { 21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375 }, + { -25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155 } + }, + { + { 6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725 }, + { -12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612 }, + { -10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943 } + }, + { + { -30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944 }, + { 30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928 }, + { 9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406 } + }, + { + { 22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139 }, + { -8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963 }, + { -31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693 } + }, + { + { 1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734 }, + { -448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680 }, + { -24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410 } + }, + { + { -9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931 }, + { -16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654 }, + { 22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710 } + }, + { + { 29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180 }, + { -26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684 }, + { -10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895 } + } +}, +{ /* 22/31 */ + { + { 22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501 }, + { -11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413 }, + { 6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880 } + }, + { + { -8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874 }, + { 22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962 }, + { -7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899 } + }, + { + { 21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152 }, + { 9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063 }, + { 7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080 } + }, + { + { -9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146 }, + { -17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183 }, + { -19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133 } + }, + { + { -32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421 }, + { -3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622 }, + { -4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197 } + }, + { + { 2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663 }, + { 31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753 }, + { 4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755 } + }, + { + { -9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862 }, + { -26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118 }, + { 26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171 } + }, + { + { 15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380 }, + { 16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824 }, + { 28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270 } + } +}, +{ /* 23/31 */ + { + { -817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438 }, + { -31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584 }, + { -594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562 } + }, + { + { 30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471 }, + { 18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610 }, + { 19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269 } + }, + { + { -30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650 }, + { 14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369 }, + { 19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461 } + }, + { + { 30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462 }, + { -5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793 }, + { -2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218 } + }, + { + { -24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226 }, + { 18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019 }, + { -15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037 } + }, + { + { 31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171 }, + { -17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132 }, + { -28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841 } + }, + { + { 21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181 }, + { -33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210 }, + { -1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040 } + }, + { + { 3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935 }, + { 24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105 }, + { -28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814 } + } +}, +{ /* 24/31 */ + { + { 793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852 }, + { 5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581 }, + { -4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646 } + }, + { + { 10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844 }, + { 10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025 }, + { 27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453 } + }, + { + { -23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068 }, + { 4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192 }, + { -17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921 } + }, + { + { -9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259 }, + { -12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426 }, + { -5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072 } + }, + { + { -17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305 }, + { 13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204, -9421832 }, + { 28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943 } + }, + { + { -16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011 }, + { 24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447 }, + { 17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494 } + }, + { + { -28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245 }, + { -20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859 }, + { 28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915 } + }, + { + { 16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707 }, + { 10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848 }, + { -11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224 } + } +}, +{ /* 25/31 */ + { + { -25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391 }, + { 15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215 }, + { -23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101 } + }, + { + { 23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713 }, + { 21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849 }, + { -7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930 } + }, + { + { -29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940 }, + { -21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031 }, + { -17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404 } + }, + { + { -25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243 }, + { -23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116 }, + { -24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525 } + }, + { + { -23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509 }, + { -10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883 }, + { 15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865 } + }, + { + { -3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660 }, + { 4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273 }, + { -28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138 } + }, + { + { -25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560 }, + { -10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135 }, + { 2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941 } + }, + { + { -4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739 }, + { 18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756 }, + { -30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819 } + } +}, +{ /* 26/31 */ + { + { -6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347 }, + { -27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028 }, + { 21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075 } + }, + { + { 16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799 }, + { -2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609 }, + { -25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817 } + }, + { + { -23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989 }, + { -30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523 }, + { 4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278 } + }, + { + { 31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045 }, + { 19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377 }, + { 24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480 } + }, + { + { 17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016 }, + { 510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426 }, + { 18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525 } + }, + { + { 13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396 }, + { 9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080 }, + { 12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892 } + }, + { + { 15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275 }, + { 11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074 }, + { 20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140 } + }, + { + { -16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717 }, + { -1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101 }, + { 24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127 } + } +}, +{ /* 27/31 */ + { + { -12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632 }, + { -26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415 }, + { -31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160 } + }, + { + { 31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876 }, + { 22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625 }, + { -15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478 } + }, + { + { 27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164 }, + { 26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595 }, + { -7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248 } + }, + { + { -16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858 }, + { 15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193 }, + { 8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184 } + }, + { + { -18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942 }, + { -1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635 }, + { 21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948 } + }, + { + { 11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935 }, + { -25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415 }, + { -15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416 } + }, + { + { -7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018 }, + { 4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778 }, + { 366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659 } + }, + { + { -24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385 }, + { 18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503 }, + { 476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329 } + } +}, +{ /* 28/31 */ + { + { 20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056 }, + { -13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838 }, + { 24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948 } + }, + { + { -3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691 }, + { -15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118 }, + { -23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517 } + }, + { + { -20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269 }, + { -6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904 }, + { -23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589 } + }, + { + { -28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193 }, + { -7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910 }, + { -30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930 } + }, + { + { -7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667 }, + { 25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481 }, + { -9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876 } + }, + { + { 22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640 }, + { -8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278 }, + { -21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112 } + }, + { + { 26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272 }, + { 17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012 }, + { -10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221 } + }, + { + { 30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046 }, + { 13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345 }, + { -19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310 } + } +}, +{ /* 29/31 */ + { + { 19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937 }, + { 31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636 }, + { -9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008 } + }, + { + { -2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429 }, + { -15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576 }, + { 31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066 } + }, + { + { -9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490 }, + { -12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104 }, + { 33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053 } + }, + { + { 31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275 }, + { -20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511 }, + { 22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095 } + }, + { + { -28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439 }, + { 23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939 }, + { -23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424 } + }, + { + { 2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310 }, + { 3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608 }, + { -32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079 } + }, + { + { -23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101 }, + { 21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418 }, + { 18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576 } + }, + { + { 30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356 }, + { 9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996 }, + { -26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099 } + } +}, +{ /* 30/31 */ + { + { -26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728 }, + { -13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658 }, + { -10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242 } + }, + { + { -21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001 }, + { -4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766 }, + { 18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373 } + }, + { + { 26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458 }, + { -17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628 }, + { -13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657 } + }, + { + { -23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062 }, + { 25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616 }, + { 31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014 } + }, + { + { 24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383 }, + { -25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814 }, + { -20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718 } + }, + { + { 30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417 }, + { 2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222 }, + { 33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444 } + }, + { + { -20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597 }, + { 23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970 }, + { 1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799 } + }, + { + { -5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647 }, + { 13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511 }, + { -29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032 } + } +}, +{ /* 31/31 */ + { + { 9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834 }, + { -23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461 }, + { 29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062 } + }, + { + { -25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516 }, + { -20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547 }, + { -24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240 } + }, + { + { -17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038 }, + { -33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741 }, + { 16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103 } + }, + { + { -19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747 }, + { -1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323 }, + { 31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016 } + }, + { + { -14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373 }, + { 15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228 }, + { -2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141 } + }, + { + { 16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399 }, + { 11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831 }, + { -185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376 } + }, + { + { -32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313 }, + { -18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958 }, + { -6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577 } + }, + { + { -22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743 }, + { 29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684 }, + { -20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476 } + } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base2.h new file mode 100644 index 0000000..90a1457 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base2.h @@ -0,0 +1,40 @@ +{ + { 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605 }, + { -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378 }, + { -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546 } +}, +{ + { 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024 }, + { 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574 }, + { 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357 } +}, +{ + { 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380 }, + { 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306 }, + { 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942 } +}, +{ + { 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766 }, + { -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701 }, + { 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300 } +}, +{ + { -22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877 }, + { -6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951 }, + { 4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784 } +}, +{ + { -25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436 }, + { 25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918 }, + { 23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877 } +}, +{ + { -33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800 }, + { -25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305 }, + { -13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300 } +}, +{ + { -3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876 }, + { -24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619 }, + { -3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683 } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/constants.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/constants.h new file mode 100644 index 0000000..dd6da1b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/constants.h @@ -0,0 +1,40 @@ +/* 37095705934669439343138083508754565189542113879843219016388785533085940283555 */ +static const fe25519 d = { + -10913610, 13857413, -15372611, 6949391, 114729, -8787816, -6275908, -3247719, -18696448, -12055116 +}; + +/* 2 * d = + * 16295367250680780974490674513165176452449235426866156013048779062215315747161 + */ +static const fe25519 d2 = { + -21827239, -5839606, -30745221, 13898782, 229458, 15978800, -12551817, -6495438, 29715968, 9444199 }; + +/* sqrt(-1) */ +static const fe25519 sqrtm1 = { + -32595792, -7943725, 9377950, 3500415, 12389472, -272473, -25146209, -2005654, 326686, 11406482 +}; + +/* A = 486662 */ +static const fe25519 curve25519_A = { + 486662, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/* sqrt(ad - 1) with a = -1 (mod p) */ +static const fe25519 sqrtadm1 = { + 24849947, -153582, -23613485, 6347715, -21072328, -667138, -25271143, -15367704, -870347, 14525639 +}; + +/* 1 / sqrt(a - d) */ +static const fe25519 invsqrtamd = { + 6111485, 4156064, -27798727, 12243468, -25904040, 120897, 20826367, -7060776, 6093568, -1986012 +}; + +/* 1 - d ^ 2 */ +static const fe25519 onemsqd = { + 6275446, -16617371, -22938544, -3773710, 11667077, 7397348, -27922721, 1766195, -24433858, 672203 +}; + +/* (d - 1) ^ 2 */ +static const fe25519 sqdmone = { + 15551795, -11097455, -13425098, -10125071, -11896535, 10178284, -26634327, 4729244, -5282110, -10116402 +}; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/fe.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/fe.h new file mode 100644 index 0000000..9e11afd --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/fe.h @@ -0,0 +1,220 @@ +/* + Ignores top bit of s. + */ + +void +fe25519_frombytes(fe25519 h, const unsigned char *s) +{ + int64_t h0 = load_4(s); + int64_t h1 = load_3(s + 4) << 6; + int64_t h2 = load_3(s + 7) << 5; + int64_t h3 = load_3(s + 10) << 3; + int64_t h4 = load_3(s + 13) << 2; + int64_t h5 = load_4(s + 16); + int64_t h6 = load_3(s + 20) << 7; + int64_t h7 = load_3(s + 23) << 5; + int64_t h8 = load_3(s + 26) << 4; + int64_t h9 = (load_3(s + 29) & 8388607) << 2; + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + + carry9 = (h9 + (int64_t)(1L << 24)) >> 25; + h0 += carry9 * 19; + h9 -= carry9 * ((uint64_t) 1L << 25); + carry1 = (h1 + (int64_t)(1L << 24)) >> 25; + h2 += carry1; + h1 -= carry1 * ((uint64_t) 1L << 25); + carry3 = (h3 + (int64_t)(1L << 24)) >> 25; + h4 += carry3; + h3 -= carry3 * ((uint64_t) 1L << 25); + carry5 = (h5 + (int64_t)(1L << 24)) >> 25; + h6 += carry5; + h5 -= carry5 * ((uint64_t) 1L << 25); + carry7 = (h7 + (int64_t)(1L << 24)) >> 25; + h8 += carry7; + h7 -= carry7 * ((uint64_t) 1L << 25); + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + carry2 = (h2 + (int64_t)(1L << 25)) >> 26; + h3 += carry2; + h2 -= carry2 * ((uint64_t) 1L << 26); + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + carry6 = (h6 + (int64_t)(1L << 25)) >> 26; + h7 += carry6; + h6 -= carry6 * ((uint64_t) 1L << 26); + carry8 = (h8 + (int64_t)(1L << 25)) >> 26; + h9 += carry8; + h8 -= carry8 * ((uint64_t) 1L << 26); + + h[0] = (int32_t) h0; + h[1] = (int32_t) h1; + h[2] = (int32_t) h2; + h[3] = (int32_t) h3; + h[4] = (int32_t) h4; + h[5] = (int32_t) h5; + h[6] = (int32_t) h6; + h[7] = (int32_t) h7; + h[8] = (int32_t) h8; + h[9] = (int32_t) h9; +} + +/* + Preconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + + Write p=2^255-19; q=floor(h/p). + Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). + + Proof: + Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. + Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4. + + Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). + Then 0> 25; + q = (h0 + q) >> 26; + q = (h1 + q) >> 25; + q = (h2 + q) >> 26; + q = (h3 + q) >> 25; + q = (h4 + q) >> 26; + q = (h5 + q) >> 25; + q = (h6 + q) >> 26; + q = (h7 + q) >> 25; + q = (h8 + q) >> 26; + q = (h9 + q) >> 25; + + /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */ + h0 += 19 * q; + /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */ + + carry0 = h0 >> 26; + h1 += carry0; + h0 -= carry0 * ((uint32_t) 1L << 26); + carry1 = h1 >> 25; + h2 += carry1; + h1 -= carry1 * ((uint32_t) 1L << 25); + carry2 = h2 >> 26; + h3 += carry2; + h2 -= carry2 * ((uint32_t) 1L << 26); + carry3 = h3 >> 25; + h4 += carry3; + h3 -= carry3 * ((uint32_t) 1L << 25); + carry4 = h4 >> 26; + h5 += carry4; + h4 -= carry4 * ((uint32_t) 1L << 26); + carry5 = h5 >> 25; + h6 += carry5; + h5 -= carry5 * ((uint32_t) 1L << 25); + carry6 = h6 >> 26; + h7 += carry6; + h6 -= carry6 * ((uint32_t) 1L << 26); + carry7 = h7 >> 25; + h8 += carry7; + h7 -= carry7 * ((uint32_t) 1L << 25); + carry8 = h8 >> 26; + h9 += carry8; + h8 -= carry8 * ((uint32_t) 1L << 26); + carry9 = h9 >> 25; + h9 -= carry9 * ((uint32_t) 1L << 25); + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} + +/* + Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. + Have h0+...+2^230 h9 between 0 and 2^255-1; + evidently 2^255 h10-2^255 q = 0. + + Goal: Output h0+...+2^230 h9. + */ + +void +fe25519_tobytes(unsigned char *s, const fe25519 h) +{ + fe25519 t; + + fe25519_reduce(t, h); + s[0] = t[0] >> 0; + s[1] = t[0] >> 8; + s[2] = t[0] >> 16; + s[3] = (t[0] >> 24) | (t[1] * ((uint32_t) 1 << 2)); + s[4] = t[1] >> 6; + s[5] = t[1] >> 14; + s[6] = (t[1] >> 22) | (t[2] * ((uint32_t) 1 << 3)); + s[7] = t[2] >> 5; + s[8] = t[2] >> 13; + s[9] = (t[2] >> 21) | (t[3] * ((uint32_t) 1 << 5)); + s[10] = t[3] >> 3; + s[11] = t[3] >> 11; + s[12] = (t[3] >> 19) | (t[4] * ((uint32_t) 1 << 6)); + s[13] = t[4] >> 2; + s[14] = t[4] >> 10; + s[15] = t[4] >> 18; + s[16] = t[5] >> 0; + s[17] = t[5] >> 8; + s[18] = t[5] >> 16; + s[19] = (t[5] >> 24) | (t[6] * ((uint32_t) 1 << 1)); + s[20] = t[6] >> 7; + s[21] = t[6] >> 15; + s[22] = (t[6] >> 23) | (t[7] * ((uint32_t) 1 << 3)); + s[23] = t[7] >> 5; + s[24] = t[7] >> 13; + s[25] = (t[7] >> 21) | (t[8] * ((uint32_t) 1 << 4)); + s[26] = t[8] >> 4; + s[27] = t[8] >> 12; + s[28] = (t[8] >> 20) | (t[9] * ((uint32_t) 1 << 6)); + s[29] = t[9] >> 2; + s[30] = t[9] >> 10; + s[31] = t[9] >> 18; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base.h new file mode 100644 index 0000000..6b3b833 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base.h @@ -0,0 +1,1344 @@ +{ /* 0/31 */ + { + { 1288382639258501, 245678601348599, 269427782077623, 1462984067271730, 137412439391563 }, + { 62697248952638, 204681361388450, 631292143396476, 338455783676468, 1213667448819585 }, + { 301289933810280, 1259582250014073, 1422107436869536, 796239922652654, 1953934009299142 } + }, + { + { 1380971894829527, 790832306631236, 2067202295274102, 1995808275510000, 1566530869037010 }, + { 463307831301544, 432984605774163, 1610641361907204, 750899048855000, 1894842303421586 }, + { 748439484463711, 1033211726465151, 1396005112841647, 1611506220286469, 1972177495910992 } + }, + { + { 1601611775252272, 1720807796594148, 1132070835939856, 1260455018889551, 2147779492816911 }, + { 316559037616741, 2177824224946892, 1459442586438991, 1461528397712656, 751590696113597 }, + { 1850748884277385, 1200145853858453, 1068094770532492, 672251375690438, 1586055907191707 } + }, + { + { 934282339813791, 1846903124198670, 1172395437954843, 1007037127761661, 1830588347719256 }, + { 1694390458783935, 1735906047636159, 705069562067493, 648033061693059, 696214010414170 }, + { 1121406372216585, 192876649532226, 190294192191717, 1994165897297032, 2245000007398739 } + }, + { + { 769950342298419, 132954430919746, 844085933195555, 974092374476333, 726076285546016 }, + { 425251763115706, 608463272472562, 442562545713235, 837766094556764, 374555092627893 }, + { 1086255230780037, 274979815921559, 1960002765731872, 929474102396301, 1190409889297339 } + }, + { + { 1388594989461809, 316767091099457, 394298842192982, 1230079486801005, 1440737038838979 }, + { 7380825640100, 146210432690483, 304903576448906, 1198869323871120, 997689833219095 }, + { 1181317918772081, 114573476638901, 262805072233344, 265712217171332, 294181933805782 } + }, + { + { 665000864555967, 2065379846933859, 370231110385876, 350988370788628, 1233371373142985 }, + { 2019367628972465, 676711900706637, 110710997811333, 1108646842542025, 517791959672113 }, + { 965130719900578, 247011430587952, 526356006571389, 91986625355052, 2157223321444601 } + }, + { + { 2068619540119183, 1966274918058806, 957728544705549, 729906502578991, 159834893065166 }, + { 2073601412052185, 31021124762708, 264500969797082, 248034690651703, 1030252227928288 }, + { 551790716293402, 1989538725166328, 801169423371717, 2052451893578887, 678432056995012 } + } +}, +{ /* 1/31 */ + { + { 1368953770187805, 790347636712921, 437508475667162, 2142576377050580, 1932081720066286 }, + { 953638594433374, 1092333936795051, 1419774766716690, 805677984380077, 859228993502513 }, + { 1200766035879111, 20142053207432, 1465634435977050, 1645256912097844, 295121984874596 } + }, + { + { 1735718747031557, 1248237894295956, 1204753118328107, 976066523550493, 65943769534592 }, + { 1060098822528990, 1586825862073490, 212301317240126, 1975302711403555, 666724059764335 }, + { 1091990273418756, 1572899409348578, 80968014455247, 306009358661350, 1520450739132526 } + }, + { + { 1480517209436112, 1511153322193952, 1244343858991172, 304788150493241, 369136856496443 }, + { 2151330273626164, 762045184746182, 1688074332551515, 823046109005759, 907602769079491 }, + { 2047386910586836, 168470092900250, 1552838872594810, 340951180073789, 360819374702533 } + }, + { + { 1982622644432056, 2014393600336956, 128909208804214, 1617792623929191, 105294281913815 }, + { 980234343912898, 1712256739246056, 588935272190264, 204298813091998, 841798321043288 }, + { 197561292938973, 454817274782871, 1963754960082318, 2113372252160468, 971377527342673 } + }, + { + { 164699448829328, 3127451757672, 1199504971548753, 1766155447043652, 1899238924683527 }, + { 732262946680281, 1674412764227063, 2182456405662809, 1350894754474250, 558458873295247 }, + { 2103305098582922, 1960809151316468, 715134605001343, 1454892949167181, 40827143824949 } + }, + { + { 1239289043050212, 1744654158124578, 758702410031698, 1796762995074688, 1603056663766 }, + { 2232056027107988, 987343914584615, 2115594492994461, 1819598072792159, 1119305654014850 }, + { 320153677847348, 939613871605645, 641883205761567, 1930009789398224, 329165806634126 } + }, + { + { 980930490474130, 1242488692177893, 1251446316964684, 1086618677993530, 1961430968465772 }, + { 276821765317453, 1536835591188030, 1305212741412361, 61473904210175, 2051377036983058 }, + { 833449923882501, 1750270368490475, 1123347002068295, 185477424765687, 278090826653186 } + }, + { + { 794524995833413, 1849907304548286, 53348672473145, 1272368559505217, 1147304168324779 }, + { 1504846112759364, 1203096289004681, 562139421471418, 274333017451844, 1284344053775441 }, + { 483048732424432, 2116063063343382, 30120189902313, 292451576741007, 1156379271702225 } + } +}, +{ /* 2/31 */ + { + { 928372153029038, 2147692869914564, 1455665844462196, 1986737809425946, 185207050258089 }, + { 137732961814206, 706670923917341, 1387038086865771, 1965643813686352, 1384777115696347 }, + { 481144981981577, 2053319313589856, 2065402289827512, 617954271490316, 1106602634668125 } + }, + { + { 696298019648792, 893299659040895, 1148636718636009, 26734077349617, 2203955659340681 }, + { 657390353372855, 998499966885562, 991893336905797, 810470207106761, 343139804608786 }, + { 791736669492960, 934767652997115, 824656780392914, 1759463253018643, 361530362383518 } + }, + { + { 2022541353055597, 2094700262587466, 1551008075025686, 242785517418164, 695985404963562 }, + { 1287487199965223, 2215311941380308, 1552928390931986, 1664859529680196, 1125004975265243 }, + { 677434665154918, 989582503122485, 1817429540898386, 1052904935475344, 1143826298169798 } + }, + { + { 367266328308408, 318431188922404, 695629353755355, 634085657580832, 24581612564426 }, + { 773360688841258, 1815381330538070, 363773437667376, 539629987070205, 783280434248437 }, + { 180820816194166, 168937968377394, 748416242794470, 1227281252254508, 1567587861004268 } + }, + { + { 478775558583645, 2062896624554807, 699391259285399, 358099408427873, 1277310261461761 }, + { 1984740906540026, 1079164179400229, 1056021349262661, 1659958556483663, 1088529069025527 }, + { 580736401511151, 1842931091388998, 1177201471228238, 2075460256527244, 1301133425678027 } + }, + { + { 1515728832059182, 1575261009617579, 1510246567196186, 191078022609704, 116661716289141 }, + { 1295295738269652, 1714742313707026, 545583042462581, 2034411676262552, 1513248090013606 }, + { 230710545179830, 30821514358353, 760704303452229, 390668103790604, 573437871383156 } + }, + { + { 1169380107545646, 263167233745614, 2022901299054448, 819900753251120, 2023898464874585 }, + { 2102254323485823, 1570832666216754, 34696906544624, 1993213739807337, 70638552271463 }, + { 894132856735058, 548675863558441, 845349339503395, 1942269668326667, 1615682209874691 } + }, + { + { 1287670217537834, 1222355136884920, 1846481788678694, 1150426571265110, 1613523400722047 }, + { 793388516527298, 1315457083650035, 1972286999342417, 1901825953052455, 338269477222410 }, + { 550201530671806, 778605267108140, 2063911101902983, 115500557286349, 2041641272971022 } + } +}, +{ /* 3/31 */ + { + { 717255318455100, 519313764361315, 2080406977303708, 541981206705521, 774328150311600 }, + { 261715221532238, 1795354330069993, 1496878026850283, 499739720521052, 389031152673770 }, + { 1997217696294013, 1717306351628065, 1684313917746180, 1644426076011410, 1857378133465451 } + }, + { + { 1475434724792648, 76931896285979, 1116729029771667, 2002544139318042, 725547833803938 }, + { 2022306639183567, 726296063571875, 315345054448644, 1058733329149221, 1448201136060677 }, + { 1710065158525665, 1895094923036397, 123988286168546, 1145519900776355, 1607510767693874 } + }, + { + { 561605375422540, 1071733543815037, 131496498800990, 1946868434569999, 828138133964203 }, + { 1548495173745801, 442310529226540, 998072547000384, 553054358385281, 644824326376171 }, + { 1445526537029440, 2225519789662536, 914628859347385, 1064754194555068, 1660295614401091 } + }, + { + { 1199690223111956, 24028135822341, 66638289244341, 57626156285975, 565093967979607 }, + { 876926774220824, 554618976488214, 1012056309841565, 839961821554611, 1414499340307677 }, + { 703047626104145, 1266841406201770, 165556500219173, 486991595001879, 1011325891650656 } + }, + { + { 1622861044480487, 1156394801573634, 1869132565415504, 327103985777730, 2095342781472284 }, + { 334886927423922, 489511099221528, 129160865966726, 1720809113143481, 619700195649254 }, + { 1646545795166119, 1758370782583567, 714746174550637, 1472693650165135, 898994790308209 } + }, + { + { 333403773039279, 295772542452938, 1693106465353610, 912330357530760, 471235657950362 }, + { 1811196219982022, 1068969825533602, 289602974833439, 1988956043611592, 863562343398367 }, + { 906282429780072, 2108672665779781, 432396390473936, 150625823801893, 1708930497638539 } + }, + { + { 925664675702328, 21416848568684, 1831436641861340, 601157008940113, 371818055044496 }, + { 1479786007267725, 1738881859066675, 68646196476567, 2146507056100328, 1247662817535471 }, + { 52035296774456, 939969390708103, 312023458773250, 59873523517659, 1231345905848899 } + }, + { + { 643355106415761, 290186807495774, 2013561737429023, 319648069511546, 393736678496162 }, + { 129358342392716, 1932811617704777, 1176749390799681, 398040349861790, 1170779668090425 }, + { 2051980782668029, 121859921510665, 2048329875753063, 1235229850149665, 519062146124755 } + } +}, +{ /* 4/31 */ + { + { 1608170971973096, 415809060360428, 1350468408164766, 2038620059057678, 1026904485989112 }, + { 1837656083115103, 1510134048812070, 906263674192061, 1821064197805734, 565375124676301 }, + { 578027192365650, 2034800251375322, 2128954087207123, 478816193810521, 2196171989962750 } + }, + { + { 1633188840273139, 852787172373708, 1548762607215796, 1266275218902681, 1107218203325133 }, + { 462189358480054, 1784816734159228, 1611334301651368, 1303938263943540, 707589560319424 }, + { 1038829280972848, 38176604650029, 753193246598573, 1136076426528122, 595709990562434 } + }, + { + { 1408451820859834, 2194984964010833, 2198361797561729, 1061962440055713, 1645147963442934 }, + { 4701053362120, 1647641066302348, 1047553002242085, 1923635013395977, 206970314902065 }, + { 1750479161778571, 1362553355169293, 1891721260220598, 966109370862782, 1024913988299801 } + }, + { + { 212699049131723, 1117950018299775, 1873945661751056, 1403802921984058, 130896082652698 }, + { 636808533673210, 1262201711667560, 390951380330599, 1663420692697294, 561951321757406 }, + { 520731594438141, 1446301499955692, 273753264629267, 1565101517999256, 1019411827004672 } + }, + { + { 926527492029409, 1191853477411379, 734233225181171, 184038887541270, 1790426146325343 }, + { 1464651961852572, 1483737295721717, 1519450561335517, 1161429831763785, 405914998179977 }, + { 996126634382301, 796204125879525, 127517800546509, 344155944689303, 615279846169038 } + }, + { + { 738724080975276, 2188666632415296, 1961313708559162, 1506545807547587, 1151301638969740 }, + { 622917337413835, 1218989177089035, 1284857712846592, 970502061709359, 351025208117090 }, + { 2067814584765580, 1677855129927492, 2086109782475197, 235286517313238, 1416314046739645 } + }, + { + { 586844262630358, 307444381952195, 458399356043426, 602068024507062, 1028548203415243 }, + { 678489922928203, 2016657584724032, 90977383049628, 1026831907234582, 615271492942522 }, + { 301225714012278, 1094837270268560, 1202288391010439, 644352775178361, 1647055902137983 } + }, + { + { 1210746697896478, 1416608304244708, 686487477217856, 1245131191434135, 1051238336855737 }, + { 1135604073198207, 1683322080485474, 769147804376683, 2086688130589414, 900445683120379 }, + { 1971518477615628, 401909519527336, 448627091057375, 1409486868273821, 1214789035034363 } + } +}, +{ /* 5/31 */ + { + { 1364039144731711, 1897497433586190, 2203097701135459, 145461396811251, 1349844460790699 }, + { 1045230323257973, 818206601145807, 630513189076103, 1672046528998132, 807204017562437 }, + { 439961968385997, 386362664488986, 1382706320807688, 309894000125359, 2207801346498567 } + }, + { + { 1229004686397588, 920643968530863, 123975893911178, 681423993215777, 1400559197080973 }, + { 2003766096898049, 170074059235165, 1141124258967971, 1485419893480973, 1573762821028725 }, + { 729905708611432, 1270323270673202, 123353058984288, 426460209632942, 2195574535456672 } + }, + { + { 1271140255321235, 2044363183174497, 52125387634689, 1445120246694705, 942541986339084 }, + { 1761608437466135, 583360847526804, 1586706389685493, 2157056599579261, 1170692369685772 }, + { 871476219910823, 1878769545097794, 2241832391238412, 548957640601001, 690047440233174 } + }, + { + { 297194732135507, 1366347803776820, 1301185512245601, 561849853336294, 1533554921345731 }, + { 999628998628371, 1132836708493400, 2084741674517453, 469343353015612, 678782988708035 }, + { 2189427607417022, 699801937082607, 412764402319267, 1478091893643349, 2244675696854460 } + }, + { + { 1712292055966563, 204413590624874, 1405738637332841, 408981300829763, 861082219276721 }, + { 508561155940631, 966928475686665, 2236717801150132, 424543858577297, 2089272956986143 }, + { 221245220129925, 1156020201681217, 491145634799213, 542422431960839, 828100817819207 } + }, + { + { 153756971240384, 1299874139923977, 393099165260502, 1058234455773022, 996989038681183 }, + { 559086812798481, 573177704212711, 1629737083816402, 1399819713462595, 1646954378266038 }, + { 1887963056288059, 228507035730124, 1468368348640282, 930557653420194, 613513962454686 } + }, + { + { 1224529808187553, 1577022856702685, 2206946542980843, 625883007765001, 279930793512158 }, + { 1076287717051609, 1114455570543035, 187297059715481, 250446884292121, 1885187512550540 }, + { 902497362940219, 76749815795675, 1657927525633846, 1420238379745202, 1340321636548352 } + }, + { + { 1129576631190784, 1281994010027327, 996844254743018, 257876363489249, 1150850742055018 }, + { 628740660038789, 1943038498527841, 467786347793886, 1093341428303375, 235413859513003 }, + { 237425418909360, 469614029179605, 1512389769174935, 1241726368345357, 441602891065214 } + } +}, +{ /* 6/31 */ + { + { 1736417953058555, 726531315520508, 1833335034432527, 1629442561574747, 624418919286085 }, + { 1960754663920689, 497040957888962, 1909832851283095, 1271432136996826, 2219780368020940 }, + { 1537037379417136, 1358865369268262, 2130838645654099, 828733687040705, 1999987652890901 } + }, + { + { 629042105241814, 1098854999137608, 887281544569320, 1423102019874777, 7911258951561 }, + { 1811562332665373, 1501882019007673, 2213763501088999, 359573079719636, 36370565049116 }, + { 218907117361280, 1209298913016966, 1944312619096112, 1130690631451061, 1342327389191701 } + }, + { + { 1369976867854704, 1396479602419169, 1765656654398856, 2203659200586299, 998327836117241 }, + { 2230701885562825, 1348173180338974, 2172856128624598, 1426538746123771, 444193481326151 }, + { 784210426627951, 918204562375674, 1284546780452985, 1324534636134684, 1872449409642708 } + }, + { + { 319638829540294, 596282656808406, 2037902696412608, 1557219121643918, 341938082688094 }, + { 1901860206695915, 2004489122065736, 1625847061568236, 973529743399879, 2075287685312905 }, + { 1371853944110545, 1042332820512553, 1949855697918254, 1791195775521505, 37487364849293 } + }, + { + { 687200189577855, 1082536651125675, 644224940871546, 340923196057951, 343581346747396 }, + { 2082717129583892, 27829425539422, 145655066671970, 1690527209845512, 1865260509673478 }, + { 1059729620568824, 2163709103470266, 1440302280256872, 1769143160546397, 869830310425069 } + }, + { + { 1609516219779025, 777277757338817, 2101121130363987, 550762194946473, 1905542338659364 }, + { 2024821921041576, 426948675450149, 595133284085473, 471860860885970, 600321679413000 }, + { 598474602406721, 1468128276358244, 1191923149557635, 1501376424093216, 1281662691293476 } + }, + { + { 1721138489890707, 1264336102277790, 433064545421287, 1359988423149466, 1561871293409447 }, + { 719520245587143, 393380711632345, 132350400863381, 1543271270810729, 1819543295798660 }, + { 396397949784152, 1811354474471839, 1362679985304303, 2117033964846756, 498041172552279 } + }, + { + { 1812471844975748, 1856491995543149, 126579494584102, 1036244859282620, 1975108050082550 }, + { 650623932407995, 1137551288410575, 2125223403615539, 1725658013221271, 2134892965117796 }, + { 522584000310195, 1241762481390450, 1743702789495384, 2227404127826575, 1686746002148897 } + } +}, +{ /* 7/31 */ + { + { 427904865186312, 1703211129693455, 1585368107547509, 1436984488744336, 761188534613978 }, + { 318101947455002, 248138407995851, 1481904195303927, 309278454311197, 1258516760217879 }, + { 1275068538599310, 513726919533379, 349926553492294, 688428871968420, 1702400196000666 } + }, + { + { 1061864036265233, 961611260325381, 321859632700838, 1045600629959517, 1985130202504038 }, + { 1558816436882417, 1962896332636523, 1337709822062152, 1501413830776938, 294436165831932 }, + { 818359826554971, 1862173000996177, 626821592884859, 573655738872376, 1749691246745455 } + }, + { + { 1988022651432119, 1082111498586040, 1834020786104821, 1454826876423687, 692929915223122 }, + { 2146513703733331, 584788900394667, 464965657279958, 2183973639356127, 238371159456790 }, + { 1129007025494441, 2197883144413266, 265142755578169, 971864464758890, 1983715884903702 } + }, + { + { 1291366624493075, 381456718189114, 1711482489312444, 1815233647702022, 892279782992467 }, + { 444548969917454, 1452286453853356, 2113731441506810, 645188273895859, 810317625309512 }, + { 2242724082797924, 1373354730327868, 1006520110883049, 2147330369940688, 1151816104883620 } + }, + { + { 1745720200383796, 1911723143175317, 2056329390702074, 355227174309849, 879232794371100 }, + { 163723479936298, 115424889803150, 1156016391581227, 1894942220753364, 1970549419986329 }, + { 681981452362484, 267208874112496, 1374683991933094, 638600984916117, 646178654558546 } + }, + { + { 13378654854251, 106237307029567, 1944412051589651, 1841976767925457, 230702819835573 }, + { 260683893467075, 854060306077237, 913639551980112, 4704576840123, 280254810808712 }, + { 715374893080287, 1173334812210491, 1806524662079626, 1894596008000979, 398905715033393 } + }, + { + { 500026409727661, 1596431288195371, 1420380351989370, 985211561521489, 392444930785633 }, + { 2096421546958141, 1922523000950363, 789831022876840, 427295144688779, 320923973161730 }, + { 1927770723575450, 1485792977512719, 1850996108474547, 551696031508956, 2126047405475647 } + }, + { + { 2112099158080148, 742570803909715, 6484558077432, 1951119898618916, 93090382703416 }, + { 383905201636970, 859946997631870, 855623867637644, 1017125780577795, 794250831877809 }, + { 77571826285752, 999304298101753, 487841111777762, 1038031143212339, 339066367948762 } + } +}, +{ /* 8/31 */ + { + { 674994775520533, 266035846330789, 826951213393478, 1405007746162285, 1781791018620876 }, + { 1001412661522686, 348196197067298, 1666614366723946, 888424995032760, 580747687801357 }, + { 1939560076207777, 1409892634407635, 552574736069277, 383854338280405, 190706709864139 } + }, + { + { 2177087163428741, 1439255351721944, 1208070840382793, 2230616362004769, 1396886392021913 }, + { 676962063230039, 1880275537148808, 2046721011602706, 888463247083003, 1318301552024067 }, + { 1466980508178206, 617045217998949, 652303580573628, 757303753529064, 207583137376902 } + }, + { + { 1511056752906902, 105403126891277, 493434892772846, 1091943425335976, 1802717338077427 }, + { 1853982405405128, 1878664056251147, 1528011020803992, 1019626468153565, 1128438412189035 }, + { 1963939888391106, 293456433791664, 697897559513649, 985882796904380, 796244541237972 } + }, + { + { 416770998629779, 389655552427054, 1314476859406756, 1749382513022778, 1161905598739491 }, + { 1428358296490651, 1027115282420478, 304840698058337, 441410174026628, 1819358356278573 }, + { 204943430200135, 1554861433819175, 216426658514651, 264149070665950, 2047097371738319 } + }, + { + { 1934415182909034, 1393285083565062, 516409331772960, 1157690734993892, 121039666594268 }, + { 662035583584445, 286736105093098, 1131773000510616, 818494214211439, 472943792054479 }, + { 665784778135882, 1893179629898606, 808313193813106, 276797254706413, 1563426179676396 } + }, + { + { 945205108984232, 526277562959295, 1324180513733566, 1666970227868664, 153547609289173 }, + { 2031433403516252, 203996615228162, 170487168837083, 981513604791390, 843573964916831 }, + { 1476570093962618, 838514669399805, 1857930577281364, 2017007352225784, 317085545220047 } + }, + { + { 1461557121912842, 1600674043318359, 2157134900399597, 1670641601940616, 127765583803283 }, + { 1293543509393474, 2143624609202546, 1058361566797508, 214097127393994, 946888515472729 }, + { 357067959932916, 1290876214345711, 521245575443703, 1494975468601005, 800942377643885 } + }, + { + { 566116659100033, 820247422481740, 994464017954148, 327157611686365, 92591318111744 }, + { 617256647603209, 1652107761099439, 1857213046645471, 1085597175214970, 817432759830522 }, + { 771808161440705, 1323510426395069, 680497615846440, 851580615547985, 1320806384849017 } + } +}, +{ /* 9/31 */ + { + { 1219260086131915, 647169006596815, 79601124759706, 2161724213426748, 404861897060198 }, + { 1327968293887866, 1335500852943256, 1401587164534264, 558137311952440, 1551360549268902 }, + { 417621685193956, 1429953819744454, 396157358457099, 1940470778873255, 214000046234152 } + }, + { + { 1268047918491973, 2172375426948536, 1533916099229249, 1761293575457130, 1590622667026765 }, + { 1627072914981959, 2211603081280073, 1912369601616504, 1191770436221309, 2187309757525860 }, + { 1149147819689533, 378692712667677, 828475842424202, 2218619146419342, 70688125792186 } + }, + { + { 1299739417079761, 1438616663452759, 1536729078504412, 2053896748919838, 1008421032591246 }, + { 2040723824657366, 399555637875075, 632543375452995, 872649937008051, 1235394727030233 }, + { 2211311599327900, 2139787259888175, 938706616835350, 12609661139114, 2081897930719789 } + }, + { + { 1324994503390450, 336982330582631, 1183998925654177, 1091654665913274, 48727673971319 }, + { 1845522914617879, 1222198248335542, 150841072760134, 1927029069940982, 1189913404498011 }, + { 1079559557592645, 2215338383666441, 1903569501302605, 49033973033940, 305703433934152 } + }, + { + { 94653405416909, 1386121349852999, 1062130477891762, 36553947479274, 833669648948846 }, + { 1432015813136298, 440364795295369, 1395647062821501, 1976874522764578, 934452372723352 }, + { 1296625309219774, 2068273464883862, 1858621048097805, 1492281814208508, 2235868981918946 } + }, + { + { 1490330266465570, 1858795661361448, 1436241134969763, 294573218899647, 1208140011028933 }, + { 1282462923712748, 741885683986255, 2027754642827561, 518989529541027, 1826610009555945 }, + { 1525827120027511, 723686461809551, 1597702369236987, 244802101764964, 1502833890372311 } + }, + { + { 113622036244513, 1233740067745854, 674109952278496, 2114345180342965, 166764512856263 }, + { 2041668749310338, 2184405322203901, 1633400637611036, 2110682505536899, 2048144390084644 }, + { 503058759232932, 760293024620937, 2027152777219493, 666858468148475, 1539184379870952 } + }, + { + { 1916168475367211, 915626432541343, 883217071712575, 363427871374304, 1976029821251593 }, + { 678039535434506, 570587290189340, 1605302676614120, 2147762562875701, 1706063797091704 }, + { 1439489648586438, 2194580753290951, 832380563557396, 561521973970522, 584497280718389 } + } +}, +{ /* 10/31 */ + { + { 187989455492609, 681223515948275, 1933493571072456, 1872921007304880, 488162364135671 }, + { 1413466089534451, 410844090765630, 1397263346404072, 408227143123410, 1594561803147811 }, + { 2102170800973153, 719462588665004, 1479649438510153, 1097529543970028, 1302363283777685 } + }, + { + { 942065717847195, 1069313679352961, 2007341951411051, 70973416446291, 1419433790163706 }, + { 1146565545556377, 1661971299445212, 406681704748893, 564452436406089, 1109109865829139 }, + { 2214421081775077, 1165671861210569, 1890453018796184, 3556249878661, 442116172656317 } + }, + { + { 753830546620811, 1666955059895019, 1530775289309243, 1119987029104146, 2164156153857580 }, + { 615171919212796, 1523849404854568, 854560460547503, 2067097370290715, 1765325848586042 }, + { 1094538949313667, 1796592198908825, 870221004284388, 2025558921863561, 1699010892802384 } + }, + { + { 1951351290725195, 1916457206844795, 198025184438026, 1909076887557595, 1938542290318919 }, + { 1014323197538413, 869150639940606, 1756009942696599, 1334952557375672, 1544945379082874 }, + { 764055910920305, 1603590757375439, 146805246592357, 1843313433854297, 954279890114939 } + }, + { + { 80113526615750, 764536758732259, 1055139345100233, 469252651759390, 617897512431515 }, + { 74497112547268, 740094153192149, 1745254631717581, 727713886503130, 1283034364416928 }, + { 525892105991110, 1723776830270342, 1476444848991936, 573789489857760, 133864092632978 } + }, + { + { 542611720192581, 1986812262899321, 1162535242465837, 481498966143464, 544600533583622 }, + { 64123227344372, 1239927720647794, 1360722983445904, 222610813654661, 62429487187991 }, + { 1793193323953132, 91096687857833, 70945970938921, 2158587638946380, 1537042406482111 } + }, + { + { 1895854577604609, 1394895708949416, 1728548428495944, 1140864900240149, 563645333603061 }, + { 141358280486863, 91435889572504, 1087208572552643, 1829599652522921, 1193307020643647 }, + { 1611230858525381, 950720175540785, 499589887488610, 2001656988495019, 88977313255908 } + }, + { + { 1189080501479658, 2184348804772597, 1040818725742319, 2018318290311834, 1712060030915354 }, + { 873966876953756, 1090638350350440, 1708559325189137, 672344594801910, 1320437969700239 }, + { 1508590048271766, 1131769479776094, 101550868699323, 428297785557897, 561791648661744 } + } +}, +{ /* 11/31 */ + { + { 756417570499462, 237882279232602, 2136263418594016, 1701968045454886, 703713185137472 }, + { 1781187809325462, 1697624151492346, 1381393690939988, 175194132284669, 1483054666415238 }, + { 2175517777364616, 708781536456029, 955668231122942, 1967557500069555, 2021208005604118 } + }, + { + { 1115135966606887, 224217372950782, 915967306279222, 593866251291540, 561747094208006 }, + { 1443163092879439, 391875531646162, 2180847134654632, 464538543018753, 1594098196837178 }, + { 850858855888869, 319436476624586, 327807784938441, 740785849558761, 17128415486016 } + }, + { + { 2132756334090067, 536247820155645, 48907151276867, 608473197600695, 1261689545022784 }, + { 1525176236978354, 974205476721062, 293436255662638, 148269621098039, 137961998433963 }, + { 1121075518299410, 2071745529082111, 1265567917414828, 1648196578317805, 496232102750820 } + }, + { + { 122321229299801, 1022922077493685, 2001275453369484, 2017441881607947, 993205880778002 }, + { 654925550560074, 1168810995576858, 575655959430926, 905758704861388, 496774564663534 }, + { 1954109525779738, 2117022646152485, 338102630417180, 1194140505732026, 107881734943492 } + }, + { + { 1714785840001267, 2036500018681589, 1876380234251966, 2056717182974196, 1645855254384642 }, + { 106431476499341, 62482972120563, 1513446655109411, 807258751769522, 538491469114 }, + { 2002850762893643, 1243624520538135, 1486040410574605, 2184752338181213, 378495998083531 } + }, + { + { 922510868424903, 1089502620807680, 402544072617374, 1131446598479839, 1290278588136533 }, + { 1867998812076769, 715425053580701, 39968586461416, 2173068014586163, 653822651801304 }, + { 162892278589453, 182585796682149, 75093073137630, 497037941226502, 133871727117371 } + }, + { + { 1914596576579670, 1608999621851578, 1987629837704609, 1519655314857977, 1819193753409464 }, + { 1949315551096831, 1069003344994464, 1939165033499916, 1548227205730856, 1933767655861407 }, + { 1730519386931635, 1393284965610134, 1597143735726030, 416032382447158, 1429665248828629 } + }, + { + { 360275475604565, 547835731063078, 215360904187529, 596646739879007, 332709650425085 }, + { 47602113726801, 1522314509708010, 437706261372925, 814035330438027, 335930650933545 }, + { 1291597595523886, 1058020588994081, 402837842324045, 1363323695882781, 2105763393033193 } + } +}, +{ /* 12/31 */ + { + { 109521982566564, 1715257748585139, 1112231216891516, 2046641005101484, 134249157157013 }, + { 2156991030936798, 2227544497153325, 1869050094431622, 754875860479115, 1754242344267058 }, + { 1846089562873800, 98894784984326, 1412430299204844, 171351226625762, 1100604760929008 } + }, + { + { 84172382130492, 499710970700046, 425749630620778, 1762872794206857, 612842602127960 }, + { 868309334532756, 1703010512741873, 1952690008738057, 4325269926064, 2071083554962116 }, + { 523094549451158, 401938899487815, 1407690589076010, 2022387426254453, 158660516411257 } + }, + { + { 612867287630009, 448212612103814, 571629077419196, 1466796750919376, 1728478129663858 }, + { 1723848973783452, 2208822520534681, 1718748322776940, 1974268454121942, 1194212502258141 }, + { 1254114807944608, 977770684047110, 2010756238954993, 1783628927194099, 1525962994408256 } + }, + { + { 232464058235826, 1948628555342434, 1835348780427694, 1031609499437291, 64472106918373 }, + { 767338676040683, 754089548318405, 1523192045639075, 435746025122062, 512692508440385 }, + { 1255955808701983, 1700487367990941, 1166401238800299, 1175121994891534, 1190934801395380 } + }, + { + { 349144008168292, 1337012557669162, 1475912332999108, 1321618454900458, 47611291904320 }, + { 877519947135419, 2172838026132651, 272304391224129, 1655143327559984, 886229406429814 }, + { 375806028254706, 214463229793940, 572906353144089, 572168269875638, 697556386112979 } + }, + { + { 1168827102357844, 823864273033637, 2071538752104697, 788062026895924, 599578340743362 }, + { 1948116082078088, 2054898304487796, 2204939184983900, 210526805152138, 786593586607626 }, + { 1915320147894736, 156481169009469, 655050471180417, 592917090415421, 2165897438660879 } + }, + { + { 1726336468579724, 1119932070398949, 1929199510967666, 33918788322959, 1836837863503150 }, + { 829996854845988, 217061778005138, 1686565909803640, 1346948817219846, 1723823550730181 }, + { 384301494966394, 687038900403062, 2211195391021739, 254684538421383, 1245698430589680 } + }, + { + { 1247567493562688, 1978182094455847, 183871474792955, 806570235643435, 288461518067916 }, + { 1449077384734201, 38285445457996, 2136537659177832, 2146493000841573, 725161151123125 }, + { 1201928866368855, 800415690605445, 1703146756828343, 997278587541744, 1858284414104014 } + } +}, +{ /* 13/31 */ + { + { 356468809648877, 782373916933152, 1718002439402870, 1392222252219254, 663171266061951 }, + { 759628738230460, 1012693474275852, 353780233086498, 246080061387552, 2030378857679162 }, + { 2040672435071076, 888593182036908, 1298443657189359, 1804780278521327, 354070726137060 } + }, + { + { 1894938527423184, 1463213041477277, 474410505497651, 247294963033299, 877975941029128 }, + { 207937160991127, 12966911039119, 820997788283092, 1010440472205286, 1701372890140810 }, + { 218882774543183, 533427444716285, 1233243976733245, 435054256891319, 1509568989549904 } + }, + { + { 1888838535711826, 1052177758340622, 1213553803324135, 169182009127332, 463374268115872 }, + { 299137589460312, 1594371588983567, 868058494039073, 257771590636681, 1805012993142921 }, + { 1806842755664364, 2098896946025095, 1356630998422878, 1458279806348064, 347755825962072 } + }, + { + { 1402334161391744, 1560083671046299, 1008585416617747, 1147797150908892, 1420416683642459 }, + { 665506704253369, 273770475169863, 799236974202630, 848328990077558, 1811448782807931 }, + { 1468412523962641, 771866649897997, 1931766110147832, 799561180078482, 524837559150077 } + }, + { + { 2223212657821850, 630416247363666, 2144451165500328, 816911130947791, 1024351058410032 }, + { 1266603897524861, 156378408858100, 1275649024228779, 447738405888420, 253186462063095 }, + { 2022215964509735, 136144366993649, 1800716593296582, 1193970603800203, 871675847064218 } + }, + { + { 1862751661970328, 851596246739884, 1519315554814041, 1542798466547449, 1417975335901520 }, + { 1228168094547481, 334133883362894, 587567568420081, 433612590281181, 603390400373205 }, + { 121893973206505, 1843345804916664, 1703118377384911, 497810164760654, 101150811654673 } + }, + { + { 458346255946468, 290909935619344, 1452768413850679, 550922875254215, 1537286854336538 }, + { 584322311184395, 380661238802118, 114839394528060, 655082270500073, 2111856026034852 }, + { 996965581008991, 2148998626477022, 1012273164934654, 1073876063914522, 1688031788934939 } + }, + { + { 923487018849600, 2085106799623355, 528082801620136, 1606206360876188, 735907091712524 }, + { 1697697887804317, 1335343703828273, 831288615207040, 949416685250051, 288760277392022 }, + { 1419122478109648, 1325574567803701, 602393874111094, 2107893372601700, 1314159682671307 } + } +}, +{ /* 14/31 */ + { + { 2201150872731804, 2180241023425241, 97663456423163, 1633405770247824, 848945042443986 }, + { 1173339555550611, 818605084277583, 47521504364289, 924108720564965, 735423405754506 }, + { 830104860549448, 1886653193241086, 1600929509383773, 1475051275443631, 286679780900937 } + }, + { + { 1577111294832995, 1030899169768747, 144900916293530, 1964672592979567, 568390100955250 }, + { 278388655910247, 487143369099838, 927762205508727, 181017540174210, 1616886700741287 }, + { 1191033906638969, 940823957346562, 1606870843663445, 861684761499847, 658674867251089 } + }, + { + { 1875032594195546, 1427106132796197, 724736390962158, 901860512044740, 635268497268760 }, + { 622869792298357, 1903919278950367, 1922588621661629, 1520574711600434, 1087100760174640 }, + { 25465949416618, 1693639527318811, 1526153382657203, 125943137857169, 145276964043999 } + }, + { + { 214739857969358, 920212862967915, 1939901550972269, 1211862791775221, 85097515720120 }, + { 2006245852772938, 734762734836159, 254642929763427, 1406213292755966, 239303749517686 }, + { 1619678837192149, 1919424032779215, 1357391272956794, 1525634040073113, 1310226789796241 } + }, + { + { 1040763709762123, 1704449869235352, 605263070456329, 1998838089036355, 1312142911487502 }, + { 1996723311435669, 1844342766567060, 985455700466044, 1165924681400960, 311508689870129 }, + { 43173156290518, 2202883069785309, 1137787467085917, 1733636061944606, 1394992037553852 } + }, + { + { 670078326344559, 555655025059356, 471959386282438, 2141455487356409, 849015953823125 }, + { 2197214573372804, 794254097241315, 1030190060513737, 267632515541902, 2040478049202624 }, + { 1812516004670529, 1609256702920783, 1706897079364493, 258549904773295, 996051247540686 } + }, + { + { 1540374301420584, 1764656898914615, 1810104162020396, 923808779163088, 664390074196579 }, + { 1323460699404750, 1262690757880991, 871777133477900, 1060078894988977, 1712236889662886 }, + { 1696163952057966, 1391710137550823, 608793846867416, 1034391509472039, 1780770894075012 } + }, + { + { 1367603834210841, 2131988646583224, 890353773628144, 1908908219165595, 270836895252891 }, + { 597536315471731, 40375058742586, 1942256403956049, 1185484645495932, 312666282024145 }, + { 1919411405316294, 1234508526402192, 1066863051997083, 1008444703737597, 1348810787701552 } + } +}, +{ /* 15/31 */ + { + { 2102881477513865, 1570274565945361, 1573617900503708, 18662635732583, 2232324307922098 }, + { 1853931367696942, 8107973870707, 350214504129299, 775206934582587, 1752317649166792 }, + { 1417148368003523, 721357181628282, 505725498207811, 373232277872983, 261634707184480 } + }, + { + { 2186733281493267, 2250694917008620, 1014829812957440, 479998161452389, 83566193876474 }, + { 1268116367301224, 560157088142809, 802626839600444, 2210189936605713, 1129993785579988 }, + { 615183387352312, 917611676109240, 878893615973325, 978940963313282, 938686890583575 } + }, + { + { 522024729211672, 1045059315315808, 1892245413707790, 1907891107684253, 2059998109500714 }, + { 1799679152208884, 912132775900387, 25967768040979, 432130448590461, 274568990261996 }, + { 98698809797682, 2144627600856209, 1907959298569602, 811491302610148, 1262481774981493 } + }, + { + { 1791451399743152, 1713538728337276, 118349997257490, 1882306388849954, 158235232210248 }, + { 1217809823321928, 2173947284933160, 1986927836272325, 1388114931125539, 12686131160169 }, + { 1650875518872272, 1136263858253897, 1732115601395988, 734312880662190, 1252904681142109 } + }, + { + { 372986456113865, 525430915458171, 2116279931702135, 501422713587815, 1907002872974925 }, + { 803147181835288, 868941437997146, 316299302989663, 943495589630550, 571224287904572 }, + { 227742695588364, 1776969298667369, 628602552821802, 457210915378118, 2041906378111140 } + }, + { + { 815000523470260, 913085688728307, 1052060118271173, 1345536665214223, 541623413135555 }, + { 1580216071604333, 1877997504342444, 857147161260913, 703522726778478, 2182763974211603 }, + { 1870080310923419, 71988220958492, 1783225432016732, 615915287105016, 1035570475990230 } + }, + { + { 730987750830150, 857613889540280, 1083813157271766, 1002817255970169, 1719228484436074 }, + { 377616581647602, 1581980403078513, 804044118130621, 2034382823044191, 643844048472185 }, + { 176957326463017, 1573744060478586, 528642225008045, 1816109618372371, 1515140189765006 } + }, + { + { 1888911448245718, 1387110895611080, 1924503794066429, 1731539523700949, 2230378382645454 }, + { 443392177002051, 233793396845137, 2199506622312416, 1011858706515937, 974676837063129 }, + { 1846351103143623, 1949984838808427, 671247021915253, 1946756846184401, 1929296930380217 } + } +}, +{ /* 16/31 */ + { + { 849646212452002, 1410198775302919, 73767886183695, 1641663456615812, 762256272452411 }, + { 692017667358279, 723305578826727, 1638042139863265, 748219305990306, 334589200523901 }, + { 22893968530686, 2235758574399251, 1661465835630252, 925707319443452, 1203475116966621 } + }, + { + { 801299035785166, 1733292596726131, 1664508947088596, 467749120991922, 1647498584535623 }, + { 903105258014366, 427141894933047, 561187017169777, 1884330244401954, 1914145708422219 }, + { 1344191060517578, 1960935031767890, 1518838929955259, 1781502350597190, 1564784025565682 } + }, + { + { 673723351748086, 1979969272514923, 1175287312495508, 1187589090978666, 1881897672213940 }, + { 1917185587363432, 1098342571752737, 5935801044414, 2000527662351839, 1538640296181569 }, + { 2495540013192, 678856913479236, 224998292422872, 219635787698590, 1972465269000940 } + }, + { + { 271413961212179, 1353052061471651, 344711291283483, 2014925838520662, 2006221033113941 }, + { 194583029968109, 514316781467765, 829677956235672, 1676415686873082, 810104584395840 }, + { 1980510813313589, 1948645276483975, 152063780665900, 129968026417582, 256984195613935 } + }, + { + { 1860190562533102, 1936576191345085, 461100292705964, 1811043097042830, 957486749306835 }, + { 796664815624365, 1543160838872951, 1500897791837765, 1667315977988401, 599303877030711 }, + { 1151480509533204, 2136010406720455, 738796060240027, 319298003765044, 1150614464349587 } + }, + { + { 1731069268103150, 735642447616087, 1364750481334268, 417232839982871, 927108269127661 }, + { 1017222050227968, 1987716148359, 2234319589635701, 621282683093392, 2132553131763026 }, + { 1567828528453324, 1017807205202360, 565295260895298, 829541698429100, 307243822276582 } + }, + { + { 249079270936248, 1501514259790706, 947909724204848, 944551802437487, 552658763982480 }, + { 2089966982947227, 1854140343916181, 2151980759220007, 2139781292261749, 158070445864917 }, + { 1338766321464554, 1906702607371284, 1519569445519894, 115384726262267, 1393058953390992 } + }, + { + { 1364621558265400, 1512388234908357, 1926731583198686, 2041482526432505, 920401122333774 }, + { 1884844597333588, 601480070269079, 620203503079537, 1079527400117915, 1202076693132015 }, + { 840922919763324, 727955812569642, 1303406629750194, 522898432152867, 294161410441865 } + } +}, +{ /* 17/31 */ + { + { 353760790835310, 1598361541848743, 1122905698202299, 1922533590158905, 419107700666580 }, + { 359856369838236, 180914355488683, 861726472646627, 218807937262986, 575626773232501 }, + { 755467689082474, 909202735047934, 730078068932500, 936309075711518, 2007798262842972 } + }, + { + { 1609384177904073, 362745185608627, 1335318541768201, 800965770436248, 547877979267412 }, + { 984339177776787, 815727786505884, 1645154585713747, 1659074964378553, 1686601651984156 }, + { 1697863093781930, 599794399429786, 1104556219769607, 830560774794755, 12812858601017 } + }, + { + { 1168737550514982, 897832437380552, 463140296333799, 302564600022547, 2008360505135501 }, + { 1856930662813910, 678090852002597, 1920179140755167, 1259527833759868, 55540971895511 }, + { 1158643631044921, 476554103621892, 178447851439725, 1305025542653569, 103433927680625 } + }, + { + { 2176793111709008, 1576725716350391, 2009350167273523, 2012390194631546, 2125297410909580 }, + { 825403285195098, 2144208587560784, 1925552004644643, 1915177840006985, 1015952128947864 }, + { 1807108316634472, 1534392066433717, 347342975407218, 1153820745616376, 7375003497471 } + }, + { + { 983061001799725, 431211889901241, 2201903782961093, 817393911064341, 2214616493042167 }, + { 228567918409756, 865093958780220, 358083886450556, 159617889659320, 1360637926292598 }, + { 234147501399755, 2229469128637390, 2175289352258889, 1397401514549353, 1885288963089922 } + }, + { + { 1111762412951562, 252849572507389, 1048714233823341, 146111095601446, 1237505378776770 }, + { 1113790697840279, 1051167139966244, 1045930658550944, 2011366241542643, 1686166824620755 }, + { 1054097349305049, 1872495070333352, 182121071220717, 1064378906787311, 100273572924182 } + }, + { + { 1306410853171605, 1627717417672447, 50983221088417, 1109249951172250, 870201789081392 }, + { 104233794644221, 1548919791188248, 2224541913267306, 2054909377116478, 1043803389015153 }, + { 216762189468802, 707284285441622, 190678557969733, 973969342604308, 1403009538434867 } + }, + { + { 1279024291038477, 344776835218310, 273722096017199, 1834200436811442, 634517197663804 }, + { 343805853118335, 1302216857414201, 566872543223541, 2051138939539004, 321428858384280 }, + { 470067171324852, 1618629234173951, 2000092177515639, 7307679772789, 1117521120249968 } + } +}, +{ /* 18/31 */ + { + { 278151578291475, 1810282338562947, 1771599529530998, 1383659409671631, 685373414471841 }, + { 577009397403102, 1791440261786291, 2177643735971638, 174546149911960, 1412505077782326 }, + { 893719721537457, 1201282458018197, 1522349501711173, 58011597740583, 1130406465887139 } + }, + { + { 412607348255453, 1280455764199780, 2233277987330768, 14180080401665, 331584698417165 }, + { 262483770854550, 990511055108216, 526885552771698, 571664396646158, 354086190278723 }, + { 1820352417585487, 24495617171480, 1547899057533253, 10041836186225, 480457105094042 } + }, + { + { 2023310314989233, 637905337525881, 2106474638900687, 557820711084072, 1687858215057826 }, + { 1144168702609745, 604444390410187, 1544541121756138, 1925315550126027, 626401428894002 }, + { 1922168257351784, 2018674099908659, 1776454117494445, 956539191509034, 36031129147635 } + }, + { + { 544644538748041, 1039872944430374, 876750409130610, 710657711326551, 1216952687484972 }, + { 58242421545916, 2035812695641843, 2118491866122923, 1191684463816273, 46921517454099 }, + { 272268252444639, 1374166457774292, 2230115177009552, 1053149803909880, 1354288411641016 } + }, + { + { 1857910905368338, 1754729879288912, 885945464109877, 1516096106802166, 1602902393369811 }, + { 1193437069800958, 901107149704790, 999672920611411, 477584824802207, 364239578697845 }, + { 886299989548838, 1538292895758047, 1590564179491896, 1944527126709657, 837344427345298 } + }, + { + { 754558365378305, 1712186480903618, 1703656826337531, 750310918489786, 518996040250900 }, + { 1309847803895382, 1462151862813074, 211370866671570, 1544595152703681, 1027691798954090 }, + { 803217563745370, 1884799722343599, 1357706345069218, 2244955901722095, 730869460037413 } + }, + { + { 689299471295966, 1831210565161071, 1375187341585438, 1106284977546171, 1893781834054269 }, + { 696351368613042, 1494385251239250, 738037133616932, 636385507851544, 927483222611406 }, + { 1949114198209333, 1104419699537997, 783495707664463, 1747473107602770, 2002634765788641 } + }, + { + { 1607325776830197, 530883941415333, 1451089452727895, 1581691157083423, 496100432831154 }, + { 1068900648804224, 2006891997072550, 1134049269345549, 1638760646180091, 2055396084625778 }, + { 2222475519314561, 1870703901472013, 1884051508440561, 1344072275216753, 1318025677799069 } + } +}, +{ /* 19/31 */ + { + { 155711679280656, 681100400509288, 389811735211209, 2135723811340709, 408733211204125 }, + { 7813206966729, 194444201427550, 2071405409526507, 1065605076176312, 1645486789731291 }, + { 16625790644959, 1647648827778410, 1579910185572704, 436452271048548, 121070048451050 } + }, + { + { 1037263028552531, 568385780377829, 297953104144430, 1558584511931211, 2238221839292471 }, + { 190565267697443, 672855706028058, 338796554369226, 337687268493904, 853246848691734 }, + { 1763863028400139, 766498079432444, 1321118624818005, 69494294452268, 858786744165651 } + }, + { + { 1292056768563024, 1456632109855638, 1100631247050184, 1386133165675321, 1232898350193752 }, + { 366253102478259, 525676242508811, 1449610995265438, 1183300845322183, 185960306491545 }, + { 28315355815982, 460422265558930, 1799675876678724, 1969256312504498, 1051823843138725 } + }, + { + { 156914999361983, 1606148405719949, 1665208410108430, 317643278692271, 1383783705665320 }, + { 54684536365732, 2210010038536222, 1194984798155308, 535239027773705, 1516355079301361 }, + { 1484387703771650, 198537510937949, 2186282186359116, 617687444857508, 647477376402122 } + }, + { + { 2147715541830533, 500032538445817, 646380016884826, 352227855331122, 1488268620408052 }, + { 159386186465542, 1877626593362941, 618737197060512, 1026674284330807, 1158121760792685 }, + { 1744544377739822, 1964054180355661, 1685781755873170, 2169740670377448, 1286112621104591 } + }, + { + { 81977249784993, 1667943117713086, 1668983819634866, 1605016835177615, 1353960708075544 }, + { 1602253788689063, 439542044889886, 2220348297664483, 657877410752869, 157451572512238 }, + { 1029287186166717, 65860128430192, 525298368814832, 1491902500801986, 1461064796385400 } + }, + { + { 408216988729246, 2121095722306989, 913562102267595, 1879708920318308, 241061448436731 }, + { 1185483484383269, 1356339572588553, 584932367316448, 102132779946470, 1792922621116791 }, + { 1966196870701923, 2230044620318636, 1425982460745905, 261167817826569, 46517743394330 } + }, + { + { 107077591595359, 884959942172345, 27306869797400, 2224911448949390, 964352058245223 }, + { 1730194207717538, 431790042319772, 1831515233279467, 1372080552768581, 1074513929381760 }, + { 1450880638731607, 1019861580989005, 1229729455116861, 1174945729836143, 826083146840706 } + } +}, +{ /* 20/31 */ + { + { 1899935429242705, 1602068751520477, 940583196550370, 82431069053859, 1540863155745696 }, + { 2136688454840028, 2099509000964294, 1690800495246475, 1217643678575476, 828720645084218 }, + { 765548025667841, 462473984016099, 998061409979798, 546353034089527, 2212508972466858 } + }, + { + { 46575283771160, 892570971573071, 1281983193144090, 1491520128287375, 75847005908304 }, + { 1801436127943107, 1734436817907890, 1268728090345068, 167003097070711, 2233597765834956 }, + { 1997562060465113, 1048700225534011, 7615603985628, 1855310849546841, 2242557647635213 } + }, + { + { 1161017320376250, 492624580169043, 2169815802355237, 976496781732542, 1770879511019629 }, + { 1357044908364776, 729130645262438, 1762469072918979, 1365633616878458, 181282906404941 }, + { 1080413443139865, 1155205815510486, 1848782073549786, 622566975152580, 124965574467971 } + }, + { + { 1184526762066993, 247622751762817, 692129017206356, 820018689412496, 2188697339828085 }, + { 2020536369003019, 202261491735136, 1053169669150884, 2056531979272544, 778165514694311 }, + { 237404399610207, 1308324858405118, 1229680749538400, 720131409105291, 1958958863624906 } + }, + { + { 515583508038846, 17656978857189, 1717918437373989, 1568052070792483, 46975803123923 }, + { 281527309158085, 36970532401524, 866906920877543, 2222282602952734, 1289598729589882 }, + { 1278207464902042, 494742455008756, 1262082121427081, 1577236621659884, 1888786707293291 } + }, + { + { 353042527954210, 1830056151907359, 1111731275799225, 174960955838824, 404312815582675 }, + { 2064251142068628, 1666421603389706, 1419271365315441, 468767774902855, 191535130366583 }, + { 1716987058588002, 1859366439773457, 1767194234188234, 64476199777924, 1117233614485261 } + }, + { + { 984292135520292, 135138246951259, 2220652137473167, 1722843421165029, 190482558012909 }, + { 298845952651262, 1166086588952562, 1179896526238434, 1347812759398693, 1412945390096208 }, + { 1143239552672925, 906436640714209, 2177000572812152, 2075299936108548, 325186347798433 } + }, + { + { 721024854374772, 684487861263316, 1373438744094159, 2193186935276995, 1387043709851261 }, + { 418098668140962, 715065997721283, 1471916138376055, 2168570337288357, 937812682637044 }, + { 1043584187226485, 2143395746619356, 2209558562919611, 482427979307092, 847556718384018 } + } +}, +{ /* 21/31 */ + { + { 1248731221520759, 1465200936117687, 540803492710140, 52978634680892, 261434490176109 }, + { 1057329623869501, 620334067429122, 461700859268034, 2012481616501857, 297268569108938 }, + { 1055352180870759, 1553151421852298, 1510903185371259, 1470458349428097, 1226259419062731 } + }, + { + { 1492988790301668, 790326625573331, 1190107028409745, 1389394752159193, 1620408196604194 }, + { 47000654413729, 1004754424173864, 1868044813557703, 173236934059409, 588771199737015 }, + { 30498470091663, 1082245510489825, 576771653181956, 806509986132686, 1317634017056939 } + }, + { + { 420308055751555, 1493354863316002, 165206721528088, 1884845694919786, 2065456951573059 }, + { 1115636332012334, 1854340990964155, 83792697369514, 1972177451994021, 457455116057587 }, + { 1698968457310898, 1435137169051090, 1083661677032510, 938363267483709, 340103887207182 } + }, + { + { 1995325341336574, 911500251774648, 164010755403692, 855378419194762, 1573601397528842 }, + { 241719380661528, 310028521317150, 1215881323380194, 1408214976493624, 2141142156467363 }, + { 1315157046163473, 727368447885818, 1363466668108618, 1668921439990361, 1398483384337907 } + }, + { + { 75029678299646, 1015388206460473, 1849729037055212, 1939814616452984, 444404230394954 }, + { 2053597130993710, 2024431685856332, 2233550957004860, 2012407275509545, 872546993104440 }, + { 1217269667678610, 599909351968693, 1390077048548598, 1471879360694802, 739586172317596 } + }, + { + { 1718318639380794, 1560510726633958, 904462881159922, 1418028351780052, 94404349451937 }, + { 2132502667405250, 214379346175414, 1502748313768060, 1960071701057800, 1353971822643138 }, + { 319394212043702, 2127459436033571, 717646691535162, 663366796076914, 318459064945314 } + }, + { + { 405989424923593, 1960452633787083, 667349034401665, 1492674260767112, 1451061489880787 }, + { 947085906234007, 323284730494107, 1485778563977200, 728576821512394, 901584347702286 }, + { 1575783124125742, 2126210792434375, 1569430791264065, 1402582372904727, 1891780248341114 } + }, + { + { 838432205560695, 1997703511451664, 1018791879907867, 1662001808174331, 78328132957753 }, + { 739152638255629, 2074935399403557, 505483666745895, 1611883356514088, 628654635394878 }, + { 1822054032121349, 643057948186973, 7306757352712, 577249257962099, 284735863382083 } + } +}, +{ /* 22/31 */ + { + { 1366558556363930, 1448606567552086, 1478881020944768, 165803179355898, 1115718458123498 }, + { 204146226972102, 1630511199034723, 2215235214174763, 174665910283542, 956127674017216 }, + { 1562934578796716, 1070893489712745, 11324610642270, 958989751581897, 2172552325473805 } + }, + { + { 1770564423056027, 735523631664565, 1326060113795289, 1509650369341127, 65892421582684 }, + { 623682558650637, 1337866509471512, 990313350206649, 1314236615762469, 1164772974270275 }, + { 223256821462517, 723690150104139, 1000261663630601, 933280913953265, 254872671543046 } + }, + { + { 1969087237026041, 624795725447124, 1335555107635969, 2069986355593023, 1712100149341902 }, + { 1236103475266979, 1837885883267218, 1026072585230455, 1025865513954973, 1801964901432134 }, + { 1115241013365517, 1712251818829143, 2148864332502771, 2096001471438138, 2235017246626125 } + }, + { + { 1299268198601632, 2047148477845621, 2165648650132450, 1612539282026145, 514197911628890 }, + { 118352772338543, 1067608711804704, 1434796676193498, 1683240170548391, 230866769907437 }, + { 1850689576796636, 1601590730430274, 1139674615958142, 1954384401440257, 76039205311 } + }, + { + { 1723387471374172, 997301467038410, 533927635123657, 20928644693965, 1756575222802513 }, + { 2146711623855116, 503278928021499, 625853062251406, 1109121378393107, 1033853809911861 }, + { 571005965509422, 2005213373292546, 1016697270349626, 56607856974274, 914438579435146 } + }, + { + { 1346698876211176, 2076651707527589, 1084761571110205, 265334478828406, 1068954492309671 }, + { 1769967932677654, 1695893319756416, 1151863389675920, 1781042784397689, 400287774418285 }, + { 1851867764003121, 403841933237558, 820549523771987, 761292590207581, 1743735048551143 } + }, + { + { 410915148140008, 2107072311871739, 1004367461876503, 99684895396761, 1180818713503224 }, + { 285945406881439, 648174397347453, 1098403762631981, 1366547441102991, 1505876883139217 }, + { 672095903120153, 1675918957959872, 636236529315028, 1569297300327696, 2164144194785875 } + }, + { + { 1902708175321798, 1035343530915438, 1178560808893263, 301095684058146, 1280977479761118 }, + { 1615357281742403, 404257611616381, 2160201349780978, 1160947379188955, 1578038619549541 }, + { 2013087639791217, 822734930507457, 1785668418619014, 1668650702946164, 389450875221715 } + } +}, +{ /* 23/31 */ + { + { 453918449698368, 106406819929001, 2072540975937135, 308588860670238, 1304394580755385 }, + { 1295082798350326, 2091844511495996, 1851348972587817, 3375039684596, 789440738712837 }, + { 2083069137186154, 848523102004566, 993982213589257, 1405313299916317, 1532824818698468 } + }, + { + { 1495961298852430, 1397203457344779, 1774950217066942, 139302743555696, 66603584342787 }, + { 1782411379088302, 1096724939964781, 27593390721418, 542241850291353, 1540337798439873 }, + { 693543956581437, 171507720360750, 1557908942697227, 1074697073443438, 1104093109037196 } + }, + { + { 345288228393419, 1099643569747172, 134881908403743, 1740551994106740, 248212179299770 }, + { 231429562203065, 1526290236421172, 2021375064026423, 1520954495658041, 806337791525116 }, + { 1079623667189886, 872403650198613, 766894200588288, 2163700860774109, 2023464507911816 } + }, + { + { 854645372543796, 1936406001954827, 151460662541253, 825325739271555, 1554306377287556 }, + { 1497138821904622, 1044820250515590, 1742593886423484, 1237204112746837, 849047450816987 }, + { 667962773375330, 1897271816877105, 1399712621683474, 1143302161683099, 2081798441209593 } + }, + { + { 127147851567005, 1936114012888110, 1704424366552046, 856674880716312, 716603621335359 }, + { 1072409664800960, 2146937497077528, 1508780108920651, 935767602384853, 1112800433544068 }, + { 333549023751292, 280219272863308, 2104176666454852, 1036466864875785, 536135186520207 } + }, + { + { 373666279883137, 146457241530109, 304116267127857, 416088749147715, 1258577131183391 }, + { 1186115062588401, 2251609796968486, 1098944457878953, 1153112761201374, 1791625503417267 }, + { 1870078460219737, 2129630962183380, 852283639691142, 292865602592851, 401904317342226 } + }, + { + { 1361070124828035, 815664541425524, 1026798897364671, 1951790935390647, 555874891834790 }, + { 1546301003424277, 459094500062839, 1097668518375311, 1780297770129643, 720763293687608 }, + { 1212405311403990, 1536693382542438, 61028431067459, 1863929423417129, 1223219538638038 } + }, + { + { 1294303766540260, 1183557465955093, 882271357233093, 63854569425375, 2213283684565087 }, + { 339050984211414, 601386726509773, 413735232134068, 966191255137228, 1839475899458159 }, + { 235605972169408, 2174055643032978, 1538335001838863, 1281866796917192, 1815940222628465 } + } +}, +{ /* 24/31 */ + { + { 1632352921721536, 1833328609514701, 2092779091951987, 1923956201873226, 2210068022482919 }, + { 35271216625062, 1712350667021807, 983664255668860, 98571260373038, 1232645608559836 }, + { 1998172393429622, 1798947921427073, 784387737563581, 1589352214827263, 1589861734168180 } + }, + { + { 1733739258725305, 31715717059538, 201969945218860, 992093044556990, 1194308773174556 }, + { 846415389605137, 746163495539180, 829658752826080, 592067705956946, 957242537821393 }, + { 1758148849754419, 619249044817679, 168089007997045, 1371497636330523, 1867101418880350 } + }, + { + { 326633984209635, 261759506071016, 1700682323676193, 1577907266349064, 1217647663383016 }, + { 1714182387328607, 1477856482074168, 574895689942184, 2159118410227270, 1555532449716575 }, + { 853828206885131, 998498946036955, 1835887550391235, 207627336608048, 258363815956050 } + }, + { + { 141141474651677, 1236728744905256, 643101419899887, 1646615130509173, 1208239602291765 }, + { 1501663228068911, 1354879465566912, 1444432675498247, 897812463852601, 855062598754348 }, + { 714380763546606, 1032824444965790, 1774073483745338, 1063840874947367, 1738680636537158 } + }, + { + { 1640635546696252, 633168953192112, 2212651044092396, 30590958583852, 368515260889378 }, + { 1171650314802029, 1567085444565577, 1453660792008405, 757914533009261, 1619511342778196 }, + { 420958967093237, 971103481109486, 2169549185607107, 1301191633558497, 1661514101014240 } + }, + { + { 907123651818302, 1332556122804146, 1824055253424487, 1367614217442959, 1982558335973172 }, + { 1121533090144639, 1021251337022187, 110469995947421, 1511059774758394, 2110035908131662 }, + { 303213233384524, 2061932261128138, 352862124777736, 40828818670255, 249879468482660 } + }, + { + { 856559257852200, 508517664949010, 1378193767894916, 1723459126947129, 1962275756614521 }, + { 1445691340537320, 40614383122127, 402104303144865, 485134269878232, 1659439323587426 }, + { 20057458979482, 1183363722525800, 2140003847237215, 2053873950687614, 2112017736174909 } + }, + { + { 2228654250927986, 1483591363415267, 1368661293910956, 1076511285177291, 526650682059608 }, + { 709481497028540, 531682216165724, 316963769431931, 1814315888453765, 258560242424104 }, + { 1053447823660455, 1955135194248683, 1010900954918985, 1182614026976701, 1240051576966610 } + } +}, +{ /* 25/31 */ + { + { 1957943897155497, 1788667368028035, 137692910029106, 1039519607062, 826404763313028 }, + { 1848942433095597, 1582009882530495, 1849292741020143, 1068498323302788, 2001402229799484 }, + { 1528282417624269, 2142492439828191, 2179662545816034, 362568973150328, 1591374675250271 } + }, + { + { 160026679434388, 232341189218716, 2149181472355545, 598041771119831, 183859001910173 }, + { 2013278155187349, 662660471354454, 793981225706267, 411706605985744, 804490933124791 }, + { 2051892037280204, 488391251096321, 2230187337030708, 930221970662692, 679002758255210 } + }, + { + { 1530723630438670, 875873929577927, 341560134269988, 449903119530753, 1055551308214179 }, + { 1461835919309432, 1955256480136428, 180866187813063, 1551979252664528, 557743861963950 }, + { 359179641731115, 1324915145732949, 902828372691474, 294254275669987, 1887036027752957 } + }, + { + { 2043271609454323, 2038225437857464, 1317528426475850, 1398989128982787, 2027639881006861 }, + { 2072902725256516, 312132452743412, 309930885642209, 996244312618453, 1590501300352303 }, + { 1397254305160710, 695734355138021, 2233992044438756, 1776180593969996, 1085588199351115 } + }, + { + { 440567051331029, 254894786356681, 493869224930222, 1556322069683366, 1567456540319218 }, + { 1950722461391320, 1907845598854797, 1822757481635527, 2121567704750244, 73811931471221 }, + { 387139307395758, 2058036430315676, 1220915649965325, 1794832055328951, 1230009312169328 } + }, + { + { 1765973779329517, 659344059446977, 19821901606666, 1301928341311214, 1116266004075885 }, + { 1127572801181483, 1224743760571696, 1276219889847274, 1529738721702581, 1589819666871853 }, + { 2181229378964934, 2190885205260020, 1511536077659137, 1246504208580490, 668883326494241 } + }, + { + { 437866655573314, 669026411194768, 81896997980338, 523874406393178, 245052060935236 }, + { 1975438052228868, 1071801519999806, 594652299224319, 1877697652668809, 1489635366987285 }, + { 958592545673770, 233048016518599, 851568750216589, 567703851596087, 1740300006094761 } + }, + { + { 2014540178270324, 192672779514432, 213877182641530, 2194819933853411, 1716422829364835 }, + { 1540769606609725, 2148289943846077, 1597804156127445, 1230603716683868, 815423458809453 }, + { 1738560251245018, 1779576754536888, 1783765347671392, 1880170990446751, 1088225159617541 } + } +}, +{ /* 26/31 */ + { + { 659303913929492, 1956447718227573, 1830568515922666, 841069049744408, 1669607124206368 }, + { 1143465490433355, 1532194726196059, 1093276745494697, 481041706116088, 2121405433561163 }, + { 1686424298744462, 1451806974487153, 266296068846582, 1834686947542675, 1720762336132256 } + }, + { + { 889217026388959, 1043290623284660, 856125087551909, 1669272323124636, 1603340330827879 }, + { 1206396181488998, 333158148435054, 1402633492821422, 1120091191722026, 1945474114550509 }, + { 766720088232571, 1512222781191002, 1189719893490790, 2091302129467914, 2141418006894941 } + }, + { + { 419663647306612, 1998875112167987, 1426599870253707, 1154928355379510, 486538532138187 }, + { 938160078005954, 1421776319053174, 1941643234741774, 180002183320818, 1414380336750546 }, + { 398001940109652, 1577721237663248, 1012748649830402, 1540516006905144, 1011684812884559 } + }, + { + { 1653276489969630, 6081825167624, 1921777941170836, 1604139841794531, 861211053640641 }, + { 996661541407379, 1455877387952927, 744312806857277, 139213896196746, 1000282908547789 }, + { 1450817495603008, 1476865707053229, 1030490562252053, 620966950353376, 1744760161539058 } + }, + { + { 559728410002599, 37056661641185, 2038622963352006, 1637244893271723, 1026565352238948 }, + { 962165956135846, 1116599660248791, 182090178006815, 1455605467021751, 196053588803284 }, + { 796863823080135, 1897365583584155, 420466939481601, 2165972651724672, 932177357788289 } + }, + { + { 877047233620632, 1375632631944375, 643773611882121, 660022738847877, 19353932331831 }, + { 2216943882299338, 394841323190322, 2222656898319671, 558186553950529, 1077236877025190 }, + { 801118384953213, 1914330175515892, 574541023311511, 1471123787903705, 1526158900256288 } + }, + { + { 949617889087234, 2207116611267331, 912920039141287, 501158539198789, 62362560771472 }, + { 1474518386765335, 1760793622169197, 1157399790472736, 1622864308058898, 165428294422792 }, + { 1961673048027128, 102619413083113, 1051982726768458, 1603657989805485, 1941613251499678 } + }, + { + { 1401939116319266, 335306339903072, 72046196085786, 862423201496006, 850518754531384 }, + { 1234706593321979, 1083343891215917, 898273974314935, 1640859118399498, 157578398571149 }, + { 1143483057726416, 1992614991758919, 674268662140796, 1773370048077526, 674318359920189 } + } +}, +{ /* 27/31 */ + { + { 1835401379538542, 173900035308392, 818247630716732, 1762100412152786, 1021506399448291 }, + { 1506632088156630, 2127481795522179, 513812919490255, 140643715928370, 442476620300318 }, + { 2056683376856736, 219094741662735, 2193541883188309, 1841182310235800, 556477468664293 } + }, + { + { 1315019427910827, 1049075855992603, 2066573052986543, 266904467185534, 2040482348591520 }, + { 94096246544434, 922482381166992, 24517828745563, 2139430508542503, 2097139044231004 }, + { 537697207950515, 1399352016347350, 1563663552106345, 2148749520888918, 549922092988516 } + }, + { + { 1747985413252434, 680511052635695, 1809559829982725, 594274250930054, 201673170745982 }, + { 323583936109569, 1973572998577657, 1192219029966558, 79354804385273, 1374043025560347 }, + { 213277331329947, 416202017849623, 1950535221091783, 1313441578103244, 2171386783823658 } + }, + { + { 189088804229831, 993969372859110, 895870121536987, 1547301535298256, 1477373024911350 }, + { 1620578418245010, 541035331188469, 2235785724453865, 2154865809088198, 1974627268751826 }, + { 1346805451740245, 1350981335690626, 942744349501813, 2155094562545502, 1012483751693409 } + }, + { + { 2107080134091762, 1132567062788208, 1824935377687210, 769194804343737, 1857941799971888 }, + { 1074666112436467, 249279386739593, 1174337926625354, 1559013532006480, 1472287775519121 }, + { 1872620123779532, 1892932666768992, 1921559078394978, 1270573311796160, 1438913646755037 } + }, + { + { 837390187648199, 1012253300223599, 989780015893987, 1351393287739814, 328627746545550 }, + { 1028328827183114, 1711043289969857, 1350832470374933, 1923164689604327, 1495656368846911 }, + { 1900828492104143, 430212361082163, 687437570852799, 832514536673512, 1685641495940794 } + }, + { + { 842632847936398, 605670026766216, 290836444839585, 163210774892356, 2213815011799645 }, + { 1176336383453996, 1725477294339771, 12700622672454, 678015708818208, 162724078519879 }, + { 1448049969043497, 1789411762943521, 385587766217753, 90201620913498, 832999441066823 } + }, + { + { 516086333293313, 2240508292484616, 1351669528166508, 1223255565316488, 750235824427138 }, + { 1263624896582495, 1102602401673328, 526302183714372, 2152015839128799, 1483839308490010 }, + { 442991718646863, 1599275157036458, 1925389027579192, 899514691371390, 350263251085160 } + } +}, +{ /* 28/31 */ + { + { 1689713572022143, 593854559254373, 978095044791970, 1985127338729499, 1676069120347625 }, + { 1557207018622683, 340631692799603, 1477725909476187, 614735951619419, 2033237123746766 }, + { 968764929340557, 1225534776710944, 662967304013036, 1155521416178595, 791142883466590 } + }, + { + { 1487081286167458, 993039441814934, 1792378982844640, 698652444999874, 2153908693179754 }, + { 1123181311102823, 685575944875442, 507605465509927, 1412590462117473, 568017325228626 }, + { 560258797465417, 2193971151466401, 1824086900849026, 579056363542056, 1690063960036441 } + }, + { + { 1918407319222416, 353767553059963, 1930426334528099, 1564816146005724, 1861342381708096 }, + { 2131325168777276, 1176636658428908, 1756922641512981, 1390243617176012, 1966325177038383 }, + { 2063958120364491, 2140267332393533, 699896251574968, 273268351312140, 375580724713232 } + }, + { + { 2024297515263178, 416959329722687, 1079014235017302, 171612225573183, 1031677520051053 }, + { 2033900009388450, 1744902869870788, 2190580087917640, 1949474984254121, 231049754293748 }, + { 343868674606581, 550155864008088, 1450580864229630, 481603765195050, 896972360018042 } + }, + { + { 2151139328380127, 314745882084928, 59756825775204, 1676664391494651, 2048348075599360 }, + { 1528930066340597, 1605003907059576, 1055061081337675, 1458319101947665, 1234195845213142 }, + { 830430507734812, 1780282976102377, 1425386760709037, 362399353095425, 2168861579799910 } + }, + { + { 1155762232730333, 980662895504006, 2053766700883521, 490966214077606, 510405877041357 }, + { 1683750316716132, 652278688286128, 1221798761193539, 1897360681476669, 319658166027343 }, + { 618808732869972, 72755186759744, 2060379135624181, 1730731526741822, 48862757828238 } + }, + { + { 1463171970593505, 1143040711767452, 614590986558883, 1409210575145591, 1882816996436803 }, + { 2230133264691131, 563950955091024, 2042915975426398, 827314356293472, 672028980152815 }, + { 264204366029760, 1654686424479449, 2185050199932931, 2207056159091748, 506015669043634 } + }, + { + { 1784446333136569, 1973746527984364, 334856327359575, 1156769775884610, 1023950124675478 }, + { 2065270940578383, 31477096270353, 306421879113491, 181958643936686, 1907105536686083 }, + { 1496516440779464, 1748485652986458, 872778352227340, 818358834654919, 97932669284220 } + } +}, +{ /* 29/31 */ + { + { 471636015770351, 672455402793577, 1804995246884103, 1842309243470804, 1501862504981682 }, + { 1013216974933691, 538921919682598, 1915776722521558, 1742822441583877, 1886550687916656 }, + { 2094270000643336, 303971879192276, 40801275554748, 649448917027930, 1818544418535447 } + }, + { + { 2241737709499165, 549397817447461, 838180519319392, 1725686958520781, 1705639080897747 }, + { 1216074541925116, 50120933933509, 1565829004133810, 721728156134580, 349206064666188 }, + { 948617110470858, 346222547451945, 1126511960599975, 1759386906004538, 493053284802266 } + }, + { + { 1454933046815146, 874696014266362, 1467170975468588, 1432316382418897, 2111710746366763 }, + { 2105387117364450, 1996463405126433, 1303008614294500, 851908115948209, 1353742049788635 }, + { 750300956351719, 1487736556065813, 15158817002104, 1511998221598392, 971739901354129 } + }, + { + { 1874648163531693, 2124487685930551, 1810030029384882, 918400043048335, 586348627300650 }, + { 1235084464747900, 1166111146432082, 1745394857881591, 1405516473883040, 4463504151617 }, + { 1663810156463827, 327797390285791, 1341846161759410, 1964121122800605, 1747470312055380 } + }, + { + { 660005247548233, 2071860029952887, 1358748199950107, 911703252219107, 1014379923023831 }, + { 2206641276178231, 1690587809721504, 1600173622825126, 2156096097634421, 1106822408548216 }, + { 1344788193552206, 1949552134239140, 1735915881729557, 675891104100469, 1834220014427292 } + }, + { + { 1920949492387964, 158885288387530, 70308263664033, 626038464897817, 1468081726101009 }, + { 622221042073383, 1210146474039168, 1742246422343683, 1403839361379025, 417189490895736 }, + { 22727256592983, 168471543384997, 1324340989803650, 1839310709638189, 504999476432775 } + }, + { + { 1313240518756327, 1721896294296942, 52263574587266, 2065069734239232, 804910473424630 }, + { 1337466662091884, 1287645354669772, 2018019646776184, 652181229374245, 898011753211715 }, + { 1969792547910734, 779969968247557, 2011350094423418, 1823964252907487, 1058949448296945 } + }, + { + { 207343737062002, 1118176942430253, 758894594548164, 806764629546266, 1157700123092949 }, + { 1273565321399022, 1638509681964574, 759235866488935, 666015124346707, 897983460943405 }, + { 1717263794012298, 1059601762860786, 1837819172257618, 1054130665797229, 680893204263559 } + } +}, +{ /* 30/31 */ + { + { 2237039662793603, 2249022333361206, 2058613546633703, 149454094845279, 2215176649164582 }, + { 79472182719605, 1851130257050174, 1825744808933107, 821667333481068, 781795293511946 }, + { 755822026485370, 152464789723500, 1178207602290608, 410307889503239, 156581253571278 } + }, + { + { 1418185496130297, 484520167728613, 1646737281442950, 1401487684670265, 1349185550126961 }, + { 1495380034400429, 325049476417173, 46346894893933, 1553408840354856, 828980101835683 }, + { 1280337889310282, 2070832742866672, 1640940617225222, 2098284908289951, 450929509534434 } + }, + { + { 407703353998781, 126572141483652, 286039827513621, 1999255076709338, 2030511179441770 }, + { 1254958221100483, 1153235960999843, 942907704968834, 637105404087392, 1149293270147267 }, + { 894249020470196, 400291701616810, 406878712230981, 1599128793487393, 1145868722604026 } + }, + { + { 1497955250203334, 110116344653260, 1128535642171976, 1900106496009660, 129792717460909 }, + { 452487513298665, 1352120549024569, 1173495883910956, 1999111705922009, 367328130454226 }, + { 1717539401269642, 1475188995688487, 891921989653942, 836824441505699, 1885988485608364 } + }, + { + { 1241784121422547, 187337051947583, 1118481812236193, 428747751936362, 30358898927325 }, + { 2022432361201842, 1088816090685051, 1977843398539868, 1854834215890724, 564238862029357 }, + { 938868489100585, 1100285072929025, 1017806255688848, 1957262154788833, 152787950560442 } + }, + { + { 867319417678923, 620471962942542, 226032203305716, 342001443957629, 1761675818237336 }, + { 1295072362439987, 931227904689414, 1355731432641687, 922235735834035, 892227229410209 }, + { 1680989767906154, 535362787031440, 2136691276706570, 1942228485381244, 1267350086882274 } + }, + { + { 366018233770527, 432660629755596, 126409707644535, 1973842949591662, 645627343442376 }, + { 535509430575217, 546885533737322, 1524675609547799, 2138095752851703, 1260738089896827 }, + { 1159906385590467, 2198530004321610, 714559485023225, 81880727882151, 1484020820037082 } + }, + { + { 1377485731340769, 2046328105512000, 1802058637158797, 62146136768173, 1356993908853901 }, + { 2013612215646735, 1830770575920375, 536135310219832, 609272325580394, 270684344495013 }, + { 1237542585982777, 2228682050256790, 1385281931622824, 593183794882890, 493654978552689 } + } +}, +{ /* 31/31 */ + { + { 47341488007760, 1891414891220257, 983894663308928, 176161768286818, 1126261115179708 }, + { 1694030170963455, 502038567066200, 1691160065225467, 949628319562187, 275110186693066 }, + { 1124515748676336, 1661673816593408, 1499640319059718, 1584929449166988, 558148594103306 } + }, + { + { 1784525599998356, 1619698033617383, 2097300287550715, 258265458103756, 1905684794832758 }, + { 1288941072872766, 931787902039402, 190731008859042, 2006859954667190, 1005931482221702 }, + { 1465551264822703, 152905080555927, 680334307368453, 173227184634745, 666407097159852 } + }, + { + { 2111017076203943, 1378760485794347, 1248583954016456, 1352289194864422, 1895180776543896 }, + { 171348223915638, 662766099800389, 462338943760497, 466917763340314, 656911292869115 }, + { 488623681976577, 866497561541722, 1708105560937768, 1673781214218839, 1506146329818807 } + }, + { + { 160425464456957, 950394373239689, 430497123340934, 711676555398832, 320964687779005 }, + { 988979367990485, 1359729327576302, 1301834257246029, 294141160829308, 29348272277475 }, + { 1434382743317910, 100082049942065, 221102347892623, 186982837860588, 1305765053501834 } + }, + { + { 2205916462268190, 499863829790820, 961960554686616, 158062762756985, 1841471168298305 }, + { 1191737341426592, 1847042034978363, 1382213545049056, 1039952395710448, 788812858896859 }, + { 1346965964571152, 1291881610839830, 2142916164336056, 786821641205979, 1571709146321039 } + }, + { + { 787164375951248, 202869205373189, 1356590421032140, 1431233331032510, 786341368775957 }, + { 492448143532951, 304105152670757, 1761767168301056, 233782684697790, 1981295323106089 }, + { 665807507761866, 1343384868355425, 895831046139653, 439338948736892, 1986828765695105 } + }, + { + { 756096210874553, 1721699973539149, 258765301727885, 1390588532210645, 1212530909934781 }, + { 852891097972275, 1816988871354562, 1543772755726524, 1174710635522444, 202129090724628 }, + { 1205281565824323, 22430498399418, 992947814485516, 1392458699738672, 688441466734558 } + }, + { + { 1050627428414972, 1955849529137135, 2171162376368357, 91745868298214, 447733118757826 }, + { 1287181461435438, 622722465530711, 880952150571872, 741035693459198, 311565274989772 }, + { 1003649078149734, 545233927396469, 1849786171789880, 1318943684880434, 280345687170552 } + } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base2.h new file mode 100644 index 0000000..d088241 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base2.h @@ -0,0 +1,40 @@ +{ + { 1288382639258501, 245678601348599, 269427782077623, 1462984067271730, 137412439391563 }, + { 62697248952638, 204681361388450, 631292143396476, 338455783676468, 1213667448819585 }, + { 301289933810280, 1259582250014073, 1422107436869536, 796239922652654, 1953934009299142 } +}, +{ + { 1601611775252272, 1720807796594148, 1132070835939856, 1260455018889551, 2147779492816911 }, + { 316559037616741, 2177824224946892, 1459442586438991, 1461528397712656, 751590696113597 }, + { 1850748884277385, 1200145853858453, 1068094770532492, 672251375690438, 1586055907191707 } +}, +{ + { 769950342298419, 132954430919746, 844085933195555, 974092374476333, 726076285546016 }, + { 425251763115706, 608463272472562, 442562545713235, 837766094556764, 374555092627893 }, + { 1086255230780037, 274979815921559, 1960002765731872, 929474102396301, 1190409889297339 } +}, +{ + { 665000864555967, 2065379846933859, 370231110385876, 350988370788628, 1233371373142985 }, + { 2019367628972465, 676711900706637, 110710997811333, 1108646842542025, 517791959672113 }, + { 965130719900578, 247011430587952, 526356006571389, 91986625355052, 2157223321444601 } +}, +{ + { 1802695059465007, 1664899123557221, 593559490740857, 2160434469266659, 927570450755031 }, + { 1725674970513508, 1933645953859181, 1542344539275782, 1767788773573747, 1297447965928905 }, + { 1381809363726107, 1430341051343062, 2061843536018959, 1551778050872521, 2036394857967624 } +}, +{ + { 1970894096313054, 528066325833207, 1619374932191227, 2207306624415883, 1169170329061080 }, + { 2070390218572616, 1458919061857835, 624171843017421, 1055332792707765, 433987520732508 }, + { 893653801273833, 1168026499324677, 1242553501121234, 1306366254304474, 1086752658510815 } +}, +{ + { 213454002618221, 939771523987438, 1159882208056014, 317388369627517, 621213314200687 }, + { 1971678598905747, 338026507889165, 762398079972271, 655096486107477, 42299032696322 }, + { 177130678690680, 1754759263300204, 1864311296286618, 1180675631479880, 1292726903152791 } +}, +{ + { 1913163449625248, 460779200291993, 2193883288642314, 1008900146920800, 1721983679009502 }, + { 1070401523076875, 1272492007800961, 1910153608563310, 2075579521696771, 1191169788841221 }, + { 692896803108118, 500174642072499, 2068223309439677, 1162190621851337, 1426986007309901 } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/constants.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/constants.h new file mode 100644 index 0000000..24e5cb5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/constants.h @@ -0,0 +1,41 @@ +/* 37095705934669439343138083508754565189542113879843219016388785533085940283555 */ +static const fe25519 d = { + 929955233495203, 466365720129213, 1662059464998953, 2033849074728123, 1442794654840575 +}; + +/* 2 * d = + * 16295367250680780974490674513165176452449235426866156013048779062215315747161 + */ +static const fe25519 d2 = { + 1859910466990425, 932731440258426, 1072319116312658, 1815898335770999, 633789495995903 +}; + +/* sqrt(-1) */ +static const fe25519 sqrtm1 = { + 1718705420411056, 234908883556509, 2233514472574048, 2117202627021982, 765476049583133 +}; + +/* A = 486662 */ +static const fe25519 curve25519_A = { + 486662, 0, 0, 0, 0 +}; + +/* sqrt(ad - 1) with a = -1 (mod p) */ +static const fe25519 sqrtadm1 = { + 2241493124984347, 425987919032274, 2207028919301688, 1220490630685848, 974799131293748 +}; + +/* 1 / sqrt(a - d) */ +static const fe25519 invsqrtamd = { + 278908739862762, 821645201101625, 8113234426968, 1777959178193151, 2118520810568447 +}; + +/* 1 - d ^ 2 */ +static const fe25519 onemsqd = { + 1136626929484150, 1998550399581263, 496427632559748, 118527312129759, 45110755273534 +}; + +/* (d - 1) ^ 2 */ +static const fe25519 sqdmone = { + 1507062230895904, 1572317787530805, 683053064812840, 317374165784489, 1572899562415810 +}; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/fe.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/fe.h new file mode 100644 index 0000000..be7d181 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/fe.h @@ -0,0 +1,116 @@ +/* + Ignores top bit of s. + */ + +void +fe25519_frombytes(fe25519 h, const unsigned char *s) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint64_t h0, h1, h2, h3, h4; + + h0 = (LOAD64_LE(s ) ) & mask; + h1 = (LOAD64_LE(s + 6) >> 3) & mask; + h2 = (LOAD64_LE(s + 12) >> 6) & mask; + h3 = (LOAD64_LE(s + 19) >> 1) & mask; + h4 = (LOAD64_LE(s + 24) >> 12) & mask; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; +} + +static void +fe25519_reduce(fe25519 h, const fe25519 f) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint128_t t[5]; + + t[0] = f[0]; + t[1] = f[1]; + t[2] = f[2]; + t[3] = f[3]; + t[4] = f[4]; + + t[1] += t[0] >> 51; + t[0] &= mask; + t[2] += t[1] >> 51; + t[1] &= mask; + t[3] += t[2] >> 51; + t[2] &= mask; + t[4] += t[3] >> 51; + t[3] &= mask; + t[0] += 19 * (t[4] >> 51); + t[4] &= mask; + + t[1] += t[0] >> 51; + t[0] &= mask; + t[2] += t[1] >> 51; + t[1] &= mask; + t[3] += t[2] >> 51; + t[2] &= mask; + t[4] += t[3] >> 51; + t[3] &= mask; + t[0] += 19 * (t[4] >> 51); + t[4] &= mask; + + /* now t is between 0 and 2^255-1, properly carried. */ + /* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */ + + t[0] += 19ULL; + + t[1] += t[0] >> 51; + t[0] &= mask; + t[2] += t[1] >> 51; + t[1] &= mask; + t[3] += t[2] >> 51; + t[2] &= mask; + t[4] += t[3] >> 51; + t[3] &= mask; + t[0] += 19ULL * (t[4] >> 51); + t[4] &= mask; + + /* now between 19 and 2^255-1 in both cases, and offset by 19. */ + + t[0] += 0x8000000000000 - 19ULL; + t[1] += 0x8000000000000 - 1ULL; + t[2] += 0x8000000000000 - 1ULL; + t[3] += 0x8000000000000 - 1ULL; + t[4] += 0x8000000000000 - 1ULL; + + /* now between 2^255 and 2^256-20, and offset by 2^255. */ + + t[1] += t[0] >> 51; + t[0] &= mask; + t[2] += t[1] >> 51; + t[1] &= mask; + t[3] += t[2] >> 51; + t[2] &= mask; + t[4] += t[3] >> 51; + t[3] &= mask; + t[4] &= mask; + + h[0] = t[0]; + h[1] = t[1]; + h[2] = t[2]; + h[3] = t[3]; + h[4] = t[4]; +} + +void +fe25519_tobytes(unsigned char *s, const fe25519 h) +{ + fe25519 t; + uint64_t t0, t1, t2, t3; + + fe25519_reduce(t, h); + t0 = t[0] | (t[1] << 51); + t1 = (t[1] >> 13) | (t[2] << 38); + t2 = (t[2] >> 26) | (t[3] << 25); + t3 = (t[3] >> 39) | (t[4] << 12); + STORE64_LE(s + 0, t0); + STORE64_LE(s + 8, t1); + STORE64_LE(s + 16, t2); + STORE64_LE(s + 24, t3); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hchacha20/core_hchacha20.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hchacha20/core_hchacha20.c new file mode 100644 index 0000000..39ab26a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hchacha20/core_hchacha20.c @@ -0,0 +1,93 @@ + +#include +#include + +#include "crypto_core_hchacha20.h" +#include "private/common.h" + +#define QUARTERROUND(A, B, C, D) \ + do { \ + A += B; D = ROTL32(D ^ A, 16); \ + C += D; B = ROTL32(B ^ C, 12); \ + A += B; D = ROTL32(D ^ A, 8); \ + C += D; B = ROTL32(B ^ C, 7); \ + } while(0) + +int +crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) +{ + int i; + uint32_t x0, x1, x2, x3, x4, x5, x6, x7; + uint32_t x8, x9, x10, x11, x12, x13, x14, x15; + + if (c == NULL) { + x0 = 0x61707865; + x1 = 0x3320646e; + x2 = 0x79622d32; + x3 = 0x6b206574; + } else { + x0 = LOAD32_LE(c + 0); + x1 = LOAD32_LE(c + 4); + x2 = LOAD32_LE(c + 8); + x3 = LOAD32_LE(c + 12); + } + x4 = LOAD32_LE(k + 0); + x5 = LOAD32_LE(k + 4); + x6 = LOAD32_LE(k + 8); + x7 = LOAD32_LE(k + 12); + x8 = LOAD32_LE(k + 16); + x9 = LOAD32_LE(k + 20); + x10 = LOAD32_LE(k + 24); + x11 = LOAD32_LE(k + 28); + x12 = LOAD32_LE(in + 0); + x13 = LOAD32_LE(in + 4); + x14 = LOAD32_LE(in + 8); + x15 = LOAD32_LE(in + 12); + + for (i = 0; i < 10; i++) { + QUARTERROUND(x0, x4, x8, x12); + QUARTERROUND(x1, x5, x9, x13); + QUARTERROUND(x2, x6, x10, x14); + QUARTERROUND(x3, x7, x11, x15); + QUARTERROUND(x0, x5, x10, x15); + QUARTERROUND(x1, x6, x11, x12); + QUARTERROUND(x2, x7, x8, x13); + QUARTERROUND(x3, x4, x9, x14); + } + + STORE32_LE(out + 0, x0); + STORE32_LE(out + 4, x1); + STORE32_LE(out + 8, x2); + STORE32_LE(out + 12, x3); + STORE32_LE(out + 16, x12); + STORE32_LE(out + 20, x13); + STORE32_LE(out + 24, x14); + STORE32_LE(out + 28, x15); + + return 0; +} + +size_t +crypto_core_hchacha20_outputbytes(void) +{ + return crypto_core_hchacha20_OUTPUTBYTES; +} + +size_t +crypto_core_hchacha20_inputbytes(void) +{ + return crypto_core_hchacha20_INPUTBYTES; +} + +size_t +crypto_core_hchacha20_keybytes(void) +{ + return crypto_core_hchacha20_KEYBYTES; +} + +size_t +crypto_core_hchacha20_constbytes(void) +{ + return crypto_core_hchacha20_CONSTBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c new file mode 100644 index 0000000..37c4923 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c @@ -0,0 +1,21 @@ +#include "crypto_core_hsalsa20.h" + +size_t +crypto_core_hsalsa20_outputbytes(void) { + return crypto_core_hsalsa20_OUTPUTBYTES; +} + +size_t +crypto_core_hsalsa20_inputbytes(void) { + return crypto_core_hsalsa20_INPUTBYTES; +} + +size_t +crypto_core_hsalsa20_keybytes(void) { + return crypto_core_hsalsa20_KEYBYTES; +} + +size_t +crypto_core_hsalsa20_constbytes(void) { + return crypto_core_hsalsa20_CONSTBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c new file mode 100644 index 0000000..1d1220f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c @@ -0,0 +1,95 @@ +/* +version 20080912 +D. J. Bernstein +Public domain. +*/ + +#include +#include + +#include "crypto_core_hsalsa20.h" +#include "private/common.h" + +#define ROUNDS 20 +#define U32C(v) (v##U) + +int +crypto_core_hsalsa20(unsigned char *out, + const unsigned char *in, + const unsigned char *k, + const unsigned char *c) +{ + uint32_t x0, x1, x2, x3, x4, x5, x6, x7, x8, + x9, x10, x11, x12, x13, x14, x15; + int i; + + if (c == NULL) { + x0 = U32C(0x61707865); + x5 = U32C(0x3320646e); + x10 = U32C(0x79622d32); + x15 = U32C(0x6b206574); + } else { + x0 = LOAD32_LE(c + 0); + x5 = LOAD32_LE(c + 4); + x10 = LOAD32_LE(c + 8); + x15 = LOAD32_LE(c + 12); + } + x1 = LOAD32_LE(k + 0); + x2 = LOAD32_LE(k + 4); + x3 = LOAD32_LE(k + 8); + x4 = LOAD32_LE(k + 12); + x11 = LOAD32_LE(k + 16); + x12 = LOAD32_LE(k + 20); + x13 = LOAD32_LE(k + 24); + x14 = LOAD32_LE(k + 28); + x6 = LOAD32_LE(in + 0); + x7 = LOAD32_LE(in + 4); + x8 = LOAD32_LE(in + 8); + x9 = LOAD32_LE(in + 12); + + for (i = ROUNDS; i > 0; i -= 2) { + x4 ^= ROTL32(x0 + x12, 7); + x8 ^= ROTL32(x4 + x0, 9); + x12 ^= ROTL32(x8 + x4, 13); + x0 ^= ROTL32(x12 + x8, 18); + x9 ^= ROTL32(x5 + x1, 7); + x13 ^= ROTL32(x9 + x5, 9); + x1 ^= ROTL32(x13 + x9, 13); + x5 ^= ROTL32(x1 + x13, 18); + x14 ^= ROTL32(x10 + x6, 7); + x2 ^= ROTL32(x14 + x10, 9); + x6 ^= ROTL32(x2 + x14, 13); + x10 ^= ROTL32(x6 + x2, 18); + x3 ^= ROTL32(x15 + x11, 7); + x7 ^= ROTL32(x3 + x15, 9); + x11 ^= ROTL32(x7 + x3, 13); + x15 ^= ROTL32(x11 + x7, 18); + x1 ^= ROTL32(x0 + x3, 7); + x2 ^= ROTL32(x1 + x0, 9); + x3 ^= ROTL32(x2 + x1, 13); + x0 ^= ROTL32(x3 + x2, 18); + x6 ^= ROTL32(x5 + x4, 7); + x7 ^= ROTL32(x6 + x5, 9); + x4 ^= ROTL32(x7 + x6, 13); + x5 ^= ROTL32(x4 + x7, 18); + x11 ^= ROTL32(x10 + x9, 7); + x8 ^= ROTL32(x11 + x10, 9); + x9 ^= ROTL32(x8 + x11, 13); + x10 ^= ROTL32(x9 + x8, 18); + x12 ^= ROTL32(x15 + x14, 7); + x13 ^= ROTL32(x12 + x15, 9); + x14 ^= ROTL32(x13 + x12, 13); + x15 ^= ROTL32(x14 + x13, 18); + } + + STORE32_LE(out + 0, x0); + STORE32_LE(out + 4, x5); + STORE32_LE(out + 8, x10); + STORE32_LE(out + 12, x15); + STORE32_LE(out + 16, x6); + STORE32_LE(out + 20, x7); + STORE32_LE(out + 24, x8); + STORE32_LE(out + 28, x9); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c new file mode 100644 index 0000000..c023378 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c @@ -0,0 +1,195 @@ + +#include +#include + +#include "crypto_core_salsa20.h" +#include "crypto_core_salsa2012.h" +#include "crypto_core_salsa208.h" +#include "private/common.h" + +static void +crypto_core_salsa(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c, + const int rounds) +{ + uint32_t x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, + x15; + uint32_t j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, + j15; + int i; + + j0 = x0 = 0x61707865; + j5 = x5 = 0x3320646e; + j10 = x10 = 0x79622d32; + j15 = x15 = 0x6b206574; + if (c != NULL) { + j0 = x0 = LOAD32_LE(c + 0); + j5 = x5 = LOAD32_LE(c + 4); + j10 = x10 = LOAD32_LE(c + 8); + j15 = x15 = LOAD32_LE(c + 12); + } + j1 = x1 = LOAD32_LE(k + 0); + j2 = x2 = LOAD32_LE(k + 4); + j3 = x3 = LOAD32_LE(k + 8); + j4 = x4 = LOAD32_LE(k + 12); + j11 = x11 = LOAD32_LE(k + 16); + j12 = x12 = LOAD32_LE(k + 20); + j13 = x13 = LOAD32_LE(k + 24); + j14 = x14 = LOAD32_LE(k + 28); + + j6 = x6 = LOAD32_LE(in + 0); + j7 = x7 = LOAD32_LE(in + 4); + j8 = x8 = LOAD32_LE(in + 8); + j9 = x9 = LOAD32_LE(in + 12); + + for (i = 0; i < rounds; i += 2) { + x4 ^= ROTL32(x0 + x12, 7); + x8 ^= ROTL32(x4 + x0, 9); + x12 ^= ROTL32(x8 + x4, 13); + x0 ^= ROTL32(x12 + x8, 18); + x9 ^= ROTL32(x5 + x1, 7); + x13 ^= ROTL32(x9 + x5, 9); + x1 ^= ROTL32(x13 + x9, 13); + x5 ^= ROTL32(x1 + x13, 18); + x14 ^= ROTL32(x10 + x6, 7); + x2 ^= ROTL32(x14 + x10, 9); + x6 ^= ROTL32(x2 + x14, 13); + x10 ^= ROTL32(x6 + x2, 18); + x3 ^= ROTL32(x15 + x11, 7); + x7 ^= ROTL32(x3 + x15, 9); + x11 ^= ROTL32(x7 + x3, 13); + x15 ^= ROTL32(x11 + x7, 18); + x1 ^= ROTL32(x0 + x3, 7); + x2 ^= ROTL32(x1 + x0, 9); + x3 ^= ROTL32(x2 + x1, 13); + x0 ^= ROTL32(x3 + x2, 18); + x6 ^= ROTL32(x5 + x4, 7); + x7 ^= ROTL32(x6 + x5, 9); + x4 ^= ROTL32(x7 + x6, 13); + x5 ^= ROTL32(x4 + x7, 18); + x11 ^= ROTL32(x10 + x9, 7); + x8 ^= ROTL32(x11 + x10, 9); + x9 ^= ROTL32(x8 + x11, 13); + x10 ^= ROTL32(x9 + x8, 18); + x12 ^= ROTL32(x15 + x14, 7); + x13 ^= ROTL32(x12 + x15, 9); + x14 ^= ROTL32(x13 + x12, 13); + x15 ^= ROTL32(x14 + x13, 18); + } + STORE32_LE(out + 0, x0 + j0); + STORE32_LE(out + 4, x1 + j1); + STORE32_LE(out + 8, x2 + j2); + STORE32_LE(out + 12, x3 + j3); + STORE32_LE(out + 16, x4 + j4); + STORE32_LE(out + 20, x5 + j5); + STORE32_LE(out + 24, x6 + j6); + STORE32_LE(out + 28, x7 + j7); + STORE32_LE(out + 32, x8 + j8); + STORE32_LE(out + 36, x9 + j9); + STORE32_LE(out + 40, x10 + j10); + STORE32_LE(out + 44, x11 + j11); + STORE32_LE(out + 48, x12 + j12); + STORE32_LE(out + 52, x13 + j13); + STORE32_LE(out + 56, x14 + j14); + STORE32_LE(out + 60, x15 + j15); +} + +int +crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) +{ + crypto_core_salsa(out, in, k, c, 20); + return 0; +} + +size_t +crypto_core_salsa20_outputbytes(void) +{ + return crypto_core_salsa20_OUTPUTBYTES; +} + +size_t +crypto_core_salsa20_inputbytes(void) +{ + return crypto_core_salsa20_INPUTBYTES; +} + +size_t +crypto_core_salsa20_keybytes(void) +{ + return crypto_core_salsa20_KEYBYTES; +} + +size_t +crypto_core_salsa20_constbytes(void) +{ + return crypto_core_salsa20_CONSTBYTES; +} + +#ifndef MINIMAL +/* LCOV_EXCL_START */ +int +crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) +{ + crypto_core_salsa(out, in, k, c, 12); + return 0; +} + +size_t +crypto_core_salsa2012_outputbytes(void) +{ + return crypto_core_salsa2012_OUTPUTBYTES; +} + +size_t +crypto_core_salsa2012_inputbytes(void) +{ + return crypto_core_salsa2012_INPUTBYTES; +} + +size_t +crypto_core_salsa2012_keybytes(void) +{ + return crypto_core_salsa2012_KEYBYTES; +} + +size_t +crypto_core_salsa2012_constbytes(void) +{ + return crypto_core_salsa2012_CONSTBYTES; +} + +int +crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) +{ + crypto_core_salsa(out, in, k, c, 8); + return 0; +} + +size_t +crypto_core_salsa208_outputbytes(void) +{ + return crypto_core_salsa208_OUTPUTBYTES; +} + +size_t +crypto_core_salsa208_inputbytes(void) +{ + return crypto_core_salsa208_INPUTBYTES; +} + +size_t +crypto_core_salsa208_keybytes(void) +{ + return crypto_core_salsa208_KEYBYTES; +} + +size_t +crypto_core_salsa208_constbytes(void) +{ + return crypto_core_salsa208_CONSTBYTES; +} +/* LCOV_EXCL_END */ +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/softaes/softaes.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/softaes/softaes.c new file mode 100644 index 0000000..ae469c8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_core/softaes/softaes.c @@ -0,0 +1,143 @@ +#include +#include +#include +#include + +#include "private/common.h" +#include "private/softaes.h" + +uint32_t _aes_lut[256] __attribute__ ((visibility ("hidden"))) = { + 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, + 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, + 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, + 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, + 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, + 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, + 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f, + 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, + 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, + 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, + 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, + 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, + 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, + 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, + 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, + 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf, + 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, + 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, + 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, + 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, + 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, + 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, + 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, + 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, + 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, + 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, + 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, + 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, + 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, + 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, + 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, + 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c +}; + +static const uint32_t * const LUT = _aes_lut; + +#ifndef SOFTAES_STRIDE +# ifdef FAVOR_PERFORMANCE +# define SOFTAES_STRIDE 256 +# else +# define SOFTAES_STRIDE 16 +# endif +#endif + +static SoftAesBlock +_encrypt(const uint8_t ix0[4], const uint8_t ix1[4], const uint8_t ix2[4], const uint8_t ix3[4]) +{ + CRYPTO_ALIGN(64) uint32_t t[4][4][256 / SOFTAES_STRIDE]; + CRYPTO_ALIGN(64) uint8_t of[4][4]; + CRYPTO_ALIGN(64) SoftAesBlock out; + size_t i; + size_t j; + + for (j = 0; j < 4; j++) { + of[j][0] = ix0[j] % SOFTAES_STRIDE; + of[j][1] = ix1[j] % SOFTAES_STRIDE; + of[j][2] = ix2[j] % SOFTAES_STRIDE; + of[j][3] = ix3[j] % SOFTAES_STRIDE; + } + for (i = 0; i < 256 / SOFTAES_STRIDE; i++) { + for (j = 0; j < 4; j++) { + t[j][0][i] = LUT[(i * SOFTAES_STRIDE) | of[j][0]]; + t[j][1][i] = LUT[(i * SOFTAES_STRIDE) | of[j][1]]; + t[j][2][i] = LUT[(i * SOFTAES_STRIDE) | of[j][2]]; + t[j][3][i] = LUT[(i * SOFTAES_STRIDE) | of[j][3]]; + } + } + +#ifdef HAVE_INLINE_ASM + __asm__ __volatile__("" : : "r"(t) : "memory"); +#endif + + out.w0 = t[0][0][ix0[0] / SOFTAES_STRIDE]; + out.w0 ^= ROTL32(t[0][1][ix1[0] / SOFTAES_STRIDE], 8); + out.w0 ^= ROTL32(t[0][2][ix2[0] / SOFTAES_STRIDE], 16); + out.w0 ^= ROTL32(t[0][3][ix3[0] / SOFTAES_STRIDE], 24); + + out.w1 = t[1][0][ix0[1] / SOFTAES_STRIDE]; + out.w1 ^= ROTL32(t[1][1][ix1[1] / SOFTAES_STRIDE], 8); + out.w1 ^= ROTL32(t[1][2][ix2[1] / SOFTAES_STRIDE], 16); + out.w1 ^= ROTL32(t[1][3][ix3[1] / SOFTAES_STRIDE], 24); + + out.w2 = t[2][0][ix0[2] / SOFTAES_STRIDE]; + out.w2 ^= ROTL32(t[2][1][ix1[2] / SOFTAES_STRIDE], 8); + out.w2 ^= ROTL32(t[2][2][ix2[2] / SOFTAES_STRIDE], 16); + out.w2 ^= ROTL32(t[2][3][ix3[2] / SOFTAES_STRIDE], 24); + + out.w3 = t[3][0][ix0[3] / SOFTAES_STRIDE]; + out.w3 ^= ROTL32(t[3][1][ix1[3] / SOFTAES_STRIDE], 8); + out.w3 ^= ROTL32(t[3][2][ix2[3] / SOFTAES_STRIDE], 16); + out.w3 ^= ROTL32(t[3][3][ix3[3] / SOFTAES_STRIDE], 24); + + return out; +} + +SoftAesBlock +softaes_block_encrypt(const SoftAesBlock block, const SoftAesBlock rk) +{ + CRYPTO_ALIGN(64) SoftAesBlock out; + CRYPTO_ALIGN(64) uint8_t ix0[4], ix1[4], ix2[4], ix3[4]; + const uint32_t s0 = block.w0; + const uint32_t s1 = block.w1; + const uint32_t s2 = block.w2; + const uint32_t s3 = block.w3; + + ix0[0] = (uint8_t) s0; + ix0[1] = (uint8_t) s1; + ix0[2] = (uint8_t) s2; + ix0[3] = (uint8_t) s3; + + ix1[0] = (uint8_t) (s1 >> 8); + ix1[1] = (uint8_t) (s2 >> 8); + ix1[2] = (uint8_t) (s3 >> 8); + ix1[3] = (uint8_t) (s0 >> 8); + + ix2[0] = (uint8_t) (s2 >> 16); + ix2[1] = (uint8_t) (s3 >> 16); + ix2[2] = (uint8_t) (s0 >> 16); + ix2[3] = (uint8_t) (s1 >> 16); + + ix3[0] = (uint8_t) (s3 >> 24); + ix3[1] = (uint8_t) (s0 >> 24); + ix3[2] = (uint8_t) (s1 >> 24); + ix3[3] = (uint8_t) (s2 >> 24); + + out = _encrypt(ix0, ix1, ix2, ix3); + + out.w0 ^= rk.w0; + out.w1 ^= rk.w1; + out.w2 ^= rk.w2; + out.w3 ^= rk.w3; + + return out; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/generichash_blake2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/generichash_blake2.c new file mode 100644 index 0000000..781d4c5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/generichash_blake2.c @@ -0,0 +1,55 @@ +#include "crypto_generichash_blake2b.h" +#include "randombytes.h" + +size_t +crypto_generichash_blake2b_bytes_min(void) { + return crypto_generichash_blake2b_BYTES_MIN; +} + +size_t +crypto_generichash_blake2b_bytes_max(void) { + return crypto_generichash_blake2b_BYTES_MAX; +} + +size_t +crypto_generichash_blake2b_bytes(void) { + return crypto_generichash_blake2b_BYTES; +} + +size_t +crypto_generichash_blake2b_keybytes_min(void) { + return crypto_generichash_blake2b_KEYBYTES_MIN; +} + +size_t +crypto_generichash_blake2b_keybytes_max(void) { + return crypto_generichash_blake2b_KEYBYTES_MAX; +} + +size_t +crypto_generichash_blake2b_keybytes(void) { + return crypto_generichash_blake2b_KEYBYTES; +} + +size_t +crypto_generichash_blake2b_saltbytes(void) { + return crypto_generichash_blake2b_SALTBYTES; +} + +size_t +crypto_generichash_blake2b_personalbytes(void) { + return crypto_generichash_blake2b_PERSONALBYTES; +} + +size_t +crypto_generichash_blake2b_statebytes(void) +{ + return (sizeof(crypto_generichash_blake2b_state) + (size_t) 63U) + & ~(size_t) 63U; +} + +void +crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) +{ + randombytes_buf(k, crypto_generichash_blake2b_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2.h new file mode 100644 index 0000000..edfc99a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2.h @@ -0,0 +1,106 @@ +/* + BLAKE2 reference source code package - reference C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + All code is triple-licensed under the + [CC0](http://creativecommons.org/publicdomain/zero/1.0), the + [OpenSSL Licence](https://www.openssl.org/source/license.html), or + the [Apache Public License 2.0](http://www.apache.org/licenses/LICENSE-2.0), + at your choosing. + */ + +#ifndef blake2_H +#define blake2_H + +#include +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +enum blake2b_constant { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16 +}; + +#ifdef __IBMC__ +# pragma pack(1) +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct blake2b_param_ { + uint8_t digest_length; /* 1 */ + uint8_t key_length; /* 2 */ + uint8_t fanout; /* 3 */ + uint8_t depth; /* 4 */ + uint8_t leaf_length[4]; /* 8 */ + uint8_t node_offset[8]; /* 16 */ + uint8_t node_depth; /* 17 */ + uint8_t inner_length; /* 18 */ + uint8_t reserved[14]; /* 32 */ + uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */ + uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */ +} blake2b_param; + +typedef struct blake2b_state { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[2 * 128]; + size_t buflen; + uint8_t last_node; +} blake2b_state; + +#ifdef __IBMC__ +# pragma pack(pop) +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +/* Streaming API */ +int blake2b_init(blake2b_state *S, const uint8_t outlen); +int blake2b_init_salt_personal(blake2b_state *S, const uint8_t outlen, + const void *salt, const void *personal); +int blake2b_init_key(blake2b_state *S, const uint8_t outlen, const void *key, + const uint8_t keylen); +int blake2b_init_key_salt_personal(blake2b_state *S, const uint8_t outlen, + const void *key, const uint8_t keylen, + const void *salt, const void *personal); +int blake2b_init_param(blake2b_state *S, const blake2b_param *P); +int blake2b_update(blake2b_state *S, const uint8_t *in, uint64_t inlen); +int blake2b_final(blake2b_state *S, uint8_t *out, uint8_t outlen); + +/* Simple API */ +int blake2b(uint8_t *out, const void *in, const void *key, const uint8_t outlen, + const uint64_t inlen, uint8_t keylen); +int blake2b_salt_personal(uint8_t *out, const void *in, const void *key, + const uint8_t outlen, const uint64_t inlen, + uint8_t keylen, const void *salt, + const void *personal); + +typedef int (*blake2b_compress_fn)(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]); +int blake2b_pick_best_implementation(void); +int blake2b_compress_ref(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]); +int blake2b_compress_ssse3(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]); +int blake2b_compress_sse41(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]); +int blake2b_compress_avx2(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c new file mode 100644 index 0000000..4945462 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c @@ -0,0 +1,49 @@ + +#define BLAKE2_USE_SSSE3 +#define BLAKE2_USE_SSE41 +#define BLAKE2_USE_AVX2 + +#include +#include + +#include "blake2.h" +#include "private/common.h" + +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# pragma GCC target("sse4.1") +# pragma GCC target("avx2") +# endif + +# include +# include +# include +# include +# include "private/sse2_64_32.h" + +# include "blake2b-compress-avx2.h" + +CRYPTO_ALIGN(64) +static const uint64_t blake2b_IV[8] = { + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +int +blake2b_compress_avx2(blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES]) +{ + __m256i a = LOADU(&S->h[0]); + __m256i b = LOADU(&S->h[4]); + BLAKE2B_COMPRESS_V1(a, b, block, S->t[0], S->t[1], S->f[0], S->f[1]); + STOREU(&S->h[0], a); + STOREU(&S->h[4], b); + + return 0; +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.h new file mode 100644 index 0000000..7c11321 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.h @@ -0,0 +1,142 @@ + +#ifndef blake2b_compress_avx2_H +#define blake2b_compress_avx2_H + +#define LOADU128(p) _mm_loadu_si128((const __m128i *) (p)) +#define STOREU128(p, r) _mm_storeu_si128((__m128i *) (p), r) + +#define LOADU(p) _mm256_loadu_si256((const __m256i *) (p)) +#define STOREU(p, r) _mm256_storeu_si256((__m256i *) (p), r) + +#if defined(__INTEL_COMPILER) || defined(_MSC_VER) || defined(__GNUC__) +# define LOAD(p) _mm256_load_si256((const __m256i *) (p)) +# define STORE(p, r) _mm256_store_si256((__m256i *) (p), r) +#else +# define LOAD(p) LOADU(p) +# define STORE(p, r) STOREU(p, r) +#endif + +static inline uint64_t +LOADU64(const void *p) +{ + uint64_t v; + memcpy(&v, p, sizeof v); + return v; +} + +#define ROTATE16 \ + _mm256_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9, 2, \ + 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9) + +#define ROTATE24 \ + _mm256_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10, 3, \ + 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10) + +#define ADD(a, b) _mm256_add_epi64(a, b) +#define SUB(a, b) _mm256_sub_epi64(a, b) + +#define XOR(a, b) _mm256_xor_si256(a, b) +#define AND(a, b) _mm256_and_si256(a, b) +#define OR(a, b) _mm256_or_si256(a, b) + +#define ROT32(x) _mm256_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) +#define ROT24(x) _mm256_shuffle_epi8((x), ROTATE24) +#define ROT16(x) _mm256_shuffle_epi8((x), ROTATE16) +#define ROT63(x) _mm256_or_si256(_mm256_srli_epi64((x), 63), ADD((x), (x))) + +#define BLAKE2B_G1_V1(a, b, c, d, m) \ + do { \ + a = ADD(a, m); \ + a = ADD(a, b); \ + d = XOR(d, a); \ + d = ROT32(d); \ + c = ADD(c, d); \ + b = XOR(b, c); \ + b = ROT24(b); \ + } while (0) + +#define BLAKE2B_G2_V1(a, b, c, d, m) \ + do { \ + a = ADD(a, m); \ + a = ADD(a, b); \ + d = XOR(d, a); \ + d = ROT16(d); \ + c = ADD(c, d); \ + b = XOR(b, c); \ + b = ROT63(b); \ + } while (0) + +#define BLAKE2B_DIAG_V1(a, b, c, d) \ + do { \ + a = _mm256_permute4x64_epi64(a, _MM_SHUFFLE(2, 1, 0, 3)); \ + d = _mm256_permute4x64_epi64(d, _MM_SHUFFLE(1, 0, 3, 2)); \ + c = _mm256_permute4x64_epi64(c, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while(0) + +#define BLAKE2B_UNDIAG_V1(a, b, c, d) \ + do { \ + a = _mm256_permute4x64_epi64(a, _MM_SHUFFLE(0, 3, 2, 1)); \ + d = _mm256_permute4x64_epi64(d, _MM_SHUFFLE(1, 0, 3, 2)); \ + c = _mm256_permute4x64_epi64(c, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while(0) + +#include "blake2b-load-avx2.h" + +#define BLAKE2B_ROUND_V1(a, b, c, d, r, m) \ + do { \ + __m256i b0; \ + BLAKE2B_LOAD_MSG_##r##_1(b0); \ + BLAKE2B_G1_V1(a, b, c, d, b0); \ + BLAKE2B_LOAD_MSG_##r##_2(b0); \ + BLAKE2B_G2_V1(a, b, c, d, b0); \ + BLAKE2B_DIAG_V1(a, b, c, d); \ + BLAKE2B_LOAD_MSG_##r##_3(b0); \ + BLAKE2B_G1_V1(a, b, c, d, b0); \ + BLAKE2B_LOAD_MSG_##r##_4(b0); \ + BLAKE2B_G2_V1(a, b, c, d, b0); \ + BLAKE2B_UNDIAG_V1(a, b, c, d); \ + } while (0) + +#define BLAKE2B_ROUNDS_V1(a, b, c, d, m) \ + do { \ + BLAKE2B_ROUND_V1(a, b, c, d, 0, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 1, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 2, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 3, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 4, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 5, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 6, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 7, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 8, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 9, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 10, (m)); \ + BLAKE2B_ROUND_V1(a, b, c, d, 11, (m)); \ + } while (0) + +#define DECLARE_MESSAGE_WORDS(m) \ + const __m256i m0 = _mm256_broadcastsi128_si256(LOADU128((m) + 0)); \ + const __m256i m1 = _mm256_broadcastsi128_si256(LOADU128((m) + 16)); \ + const __m256i m2 = _mm256_broadcastsi128_si256(LOADU128((m) + 32)); \ + const __m256i m3 = _mm256_broadcastsi128_si256(LOADU128((m) + 48)); \ + const __m256i m4 = _mm256_broadcastsi128_si256(LOADU128((m) + 64)); \ + const __m256i m5 = _mm256_broadcastsi128_si256(LOADU128((m) + 80)); \ + const __m256i m6 = _mm256_broadcastsi128_si256(LOADU128((m) + 96)); \ + const __m256i m7 = _mm256_broadcastsi128_si256(LOADU128((m) + 112)); \ + __m256i t0, t1; + +#define BLAKE2B_COMPRESS_V1(a, b, m, t0, t1, f0, f1) \ + do { \ + DECLARE_MESSAGE_WORDS(m) \ + const __m256i iv0 = a; \ + const __m256i iv1 = b; \ + __m256i c = LOAD(&blake2b_IV[0]); \ + __m256i d = \ + XOR(LOAD(&blake2b_IV[4]), _mm256_set_epi64x(f1, f0, t1, t0)); \ + BLAKE2B_ROUNDS_V1(a, b, c, d, m); \ + a = XOR(a, c); \ + b = XOR(b, d); \ + a = XOR(a, iv0); \ + b = XOR(b, iv1); \ + } while (0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c new file mode 100644 index 0000000..5fb356f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c @@ -0,0 +1,93 @@ + +#include +#include + +#include "blake2.h" +#include "private/common.h" + +CRYPTO_ALIGN(64) +static const uint64_t blake2b_IV[8] = { + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +static const uint8_t blake2b_sigma[12][16] = { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }, + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 }, + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 }, + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 }, + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 }, + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 }, + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 }, + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 }, + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } +}; + +int +blake2b_compress_ref(blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES]) +{ + uint64_t m[16]; + uint64_t v[16]; + int i; + + for (i = 0; i < 16; ++i) { + m[i] = LOAD64_LE(block + i * sizeof m[i]); + } + for (i = 0; i < 8; ++i) { + v[i] = S->h[i]; + } + v[8] = blake2b_IV[0]; + v[9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = S->t[0] ^ blake2b_IV[4]; + v[13] = S->t[1] ^ blake2b_IV[5]; + v[14] = S->f[0] ^ blake2b_IV[6]; + v[15] = S->f[1] ^ blake2b_IV[7]; +#define G(r, i, a, b, c, d) \ + do { \ + a += b + m[blake2b_sigma[r][2 * i + 0]]; \ + d = ROTR64(d ^ a, 32); \ + c += d; \ + b = ROTR64(b ^ c, 24); \ + a += b + m[blake2b_sigma[r][2 * i + 1]]; \ + d = ROTR64(d ^ a, 16); \ + c += d; \ + b = ROTR64(b ^ c, 63); \ + } while (0) +#define ROUND(r) \ + do { \ + G(r, 0, v[0], v[4], v[8], v[12]); \ + G(r, 1, v[1], v[5], v[9], v[13]); \ + G(r, 2, v[2], v[6], v[10], v[14]); \ + G(r, 3, v[3], v[7], v[11], v[15]); \ + G(r, 4, v[0], v[5], v[10], v[15]); \ + G(r, 5, v[1], v[6], v[11], v[12]); \ + G(r, 6, v[2], v[7], v[8], v[13]); \ + G(r, 7, v[3], v[4], v[9], v[14]); \ + } while (0) + ROUND(0); + ROUND(1); + ROUND(2); + ROUND(3); + ROUND(4); + ROUND(5); + ROUND(6); + ROUND(7); + ROUND(8); + ROUND(9); + ROUND(10); + ROUND(11); + + for (i = 0; i < 8; ++i) { + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + } + +#undef G +#undef ROUND + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c new file mode 100644 index 0000000..f085c61 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c @@ -0,0 +1,87 @@ + +#define BLAKE2_USE_SSSE3 +#define BLAKE2_USE_SSE41 + +#include +#include + +#include "blake2.h" +#include "private/common.h" + +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) && \ + defined(HAVE_SMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# pragma GCC target("sse4.1") +# endif + +# include +# include +# include +# include "private/sse2_64_32.h" + +# include "blake2b-compress-sse41.h" + +CRYPTO_ALIGN(64) +static const uint64_t blake2b_IV[8] = { + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +int +blake2b_compress_sse41(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]) +{ + __m128i row1l, row1h; + __m128i row2l, row2h; + __m128i row3l, row3h; + __m128i row4l, row4h; + __m128i b0, b1; + __m128i t0, t1; + const __m128i r16 = + _mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9); + const __m128i r24 = + _mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10); + const __m128i m0 = LOADU(block + 00); + const __m128i m1 = LOADU(block + 16); + const __m128i m2 = LOADU(block + 32); + const __m128i m3 = LOADU(block + 48); + const __m128i m4 = LOADU(block + 64); + const __m128i m5 = LOADU(block + 80); + const __m128i m6 = LOADU(block + 96); + const __m128i m7 = LOADU(block + 112); + row1l = LOADU(&S->h[0]); + row1h = LOADU(&S->h[2]); + row2l = LOADU(&S->h[4]); + row2h = LOADU(&S->h[6]); + row3l = LOADU(&blake2b_IV[0]); + row3h = LOADU(&blake2b_IV[2]); + row4l = _mm_xor_si128(LOADU(&blake2b_IV[4]), LOADU(&S->t[0])); + row4h = _mm_xor_si128(LOADU(&blake2b_IV[6]), LOADU(&S->f[0])); + ROUND(0); + ROUND(1); + ROUND(2); + ROUND(3); + ROUND(4); + ROUND(5); + ROUND(6); + ROUND(7); + ROUND(8); + ROUND(9); + ROUND(10); + ROUND(11); + row1l = _mm_xor_si128(row3l, row1l); + row1h = _mm_xor_si128(row3h, row1h); + STOREU(&S->h[0], _mm_xor_si128(LOADU(&S->h[0]), row1l)); + STOREU(&S->h[2], _mm_xor_si128(LOADU(&S->h[2]), row1h)); + row2l = _mm_xor_si128(row4l, row2l); + row2h = _mm_xor_si128(row4h, row2h); + STOREU(&S->h[4], _mm_xor_si128(LOADU(&S->h[4]), row2l)); + STOREU(&S->h[6], _mm_xor_si128(LOADU(&S->h[6]), row2h)); + return 0; +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.h new file mode 100644 index 0000000..c4c93f7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.h @@ -0,0 +1,106 @@ + +#ifndef blake2b_compress_sse41_H +#define blake2b_compress_sse41_H + +#define LOADU(p) _mm_loadu_si128((const __m128i *) (const void *) (p)) +#define STOREU(p, r) _mm_storeu_si128((__m128i *) (void *) (p), r) + +#if !(defined(_mm_roti_epi64) && defined(__XOP__)) +#undef _mm_roti_epi64 +#define _mm_roti_epi64(x, c) \ + (-(c) == 32) \ + ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) \ + : (-(c) == 24) \ + ? _mm_shuffle_epi8((x), r24) \ + : (-(c) == 16) \ + ? _mm_shuffle_epi8((x), r16) \ + : (-(c) == 63) \ + ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_add_epi64((x), (x))) \ + : _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_slli_epi64((x), 64 - (-(c)))) +#endif + +#define G1(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1) \ + row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ + row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \ + \ + row4l = _mm_xor_si128(row4l, row1l); \ + row4h = _mm_xor_si128(row4h, row1h); \ + \ + row4l = _mm_roti_epi64(row4l, -32); \ + row4h = _mm_roti_epi64(row4h, -32); \ + \ + row3l = _mm_add_epi64(row3l, row4l); \ + row3h = _mm_add_epi64(row3h, row4h); \ + \ + row2l = _mm_xor_si128(row2l, row3l); \ + row2h = _mm_xor_si128(row2h, row3h); \ + \ + row2l = _mm_roti_epi64(row2l, -24); \ + row2h = _mm_roti_epi64(row2h, -24); + +#define G2(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1) \ + row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ + row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \ + \ + row4l = _mm_xor_si128(row4l, row1l); \ + row4h = _mm_xor_si128(row4h, row1h); \ + \ + row4l = _mm_roti_epi64(row4l, -16); \ + row4h = _mm_roti_epi64(row4h, -16); \ + \ + row3l = _mm_add_epi64(row3l, row4l); \ + row3h = _mm_add_epi64(row3h, row4h); \ + \ + row2l = _mm_xor_si128(row2l, row3l); \ + row2h = _mm_xor_si128(row2h, row3h); \ + \ + row2l = _mm_roti_epi64(row2l, -63); \ + row2h = _mm_roti_epi64(row2h, -63); + +#define DIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h) \ + t0 = _mm_alignr_epi8(row2h, row2l, 8); \ + t1 = _mm_alignr_epi8(row2l, row2h, 8); \ + row2l = t0; \ + row2h = t1; \ + \ + t0 = row3l; \ + row3l = row3h; \ + row3h = t0; \ + \ + t0 = _mm_alignr_epi8(row4h, row4l, 8); \ + t1 = _mm_alignr_epi8(row4l, row4h, 8); \ + row4l = t1; \ + row4h = t0; + +#define UNDIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h) \ + t0 = _mm_alignr_epi8(row2l, row2h, 8); \ + t1 = _mm_alignr_epi8(row2h, row2l, 8); \ + row2l = t0; \ + row2h = t1; \ + \ + t0 = row3l; \ + row3l = row3h; \ + row3h = t0; \ + \ + t0 = _mm_alignr_epi8(row4l, row4h, 8); \ + t1 = _mm_alignr_epi8(row4h, row4l, 8); \ + row4l = t1; \ + row4h = t0; + +#include "blake2b-load-sse41.h" + +#define ROUND(r) \ + LOAD_MSG_##r##_1(b0, b1); \ + G1(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + LOAD_MSG_##r##_2(b0, b1); \ + G2(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + DIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h); \ + LOAD_MSG_##r##_3(b0, b1); \ + G1(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + LOAD_MSG_##r##_4(b0, b1); \ + G2(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + UNDIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c new file mode 100644 index 0000000..6372da0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c @@ -0,0 +1,90 @@ + +#include +#include + +#include "blake2.h" +#include "private/common.h" + +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# endif + +# include +# include +# include "private/sse2_64_32.h" + +# include "blake2b-compress-ssse3.h" + +CRYPTO_ALIGN(64) +static const uint64_t blake2b_IV[8] = { + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +int +blake2b_compress_ssse3(blake2b_state *S, + const uint8_t block[BLAKE2B_BLOCKBYTES]) +{ + __m128i row1l, row1h; + __m128i row2l, row2h; + __m128i row3l, row3h; + __m128i row4l, row4h; + __m128i b0, b1; + __m128i t0, t1; + const __m128i r16 = + _mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9); + const __m128i r24 = + _mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10); + const uint64_t m0 = ((const uint64_t *) block)[0]; + const uint64_t m1 = ((const uint64_t *) block)[1]; + const uint64_t m2 = ((const uint64_t *) block)[2]; + const uint64_t m3 = ((const uint64_t *) block)[3]; + const uint64_t m4 = ((const uint64_t *) block)[4]; + const uint64_t m5 = ((const uint64_t *) block)[5]; + const uint64_t m6 = ((const uint64_t *) block)[6]; + const uint64_t m7 = ((const uint64_t *) block)[7]; + const uint64_t m8 = ((const uint64_t *) block)[8]; + const uint64_t m9 = ((const uint64_t *) block)[9]; + const uint64_t m10 = ((const uint64_t *) block)[10]; + const uint64_t m11 = ((const uint64_t *) block)[11]; + const uint64_t m12 = ((const uint64_t *) block)[12]; + const uint64_t m13 = ((const uint64_t *) block)[13]; + const uint64_t m14 = ((const uint64_t *) block)[14]; + const uint64_t m15 = ((const uint64_t *) block)[15]; + + row1l = LOADU(&S->h[0]); + row1h = LOADU(&S->h[2]); + row2l = LOADU(&S->h[4]); + row2h = LOADU(&S->h[6]); + row3l = LOADU(&blake2b_IV[0]); + row3h = LOADU(&blake2b_IV[2]); + row4l = _mm_xor_si128(LOADU(&blake2b_IV[4]), LOADU(&S->t[0])); + row4h = _mm_xor_si128(LOADU(&blake2b_IV[6]), LOADU(&S->f[0])); + ROUND(0); + ROUND(1); + ROUND(2); + ROUND(3); + ROUND(4); + ROUND(5); + ROUND(6); + ROUND(7); + ROUND(8); + ROUND(9); + ROUND(10); + ROUND(11); + row1l = _mm_xor_si128(row3l, row1l); + row1h = _mm_xor_si128(row3h, row1h); + STOREU(&S->h[0], _mm_xor_si128(LOADU(&S->h[0]), row1l)); + STOREU(&S->h[2], _mm_xor_si128(LOADU(&S->h[2]), row1h)); + row2l = _mm_xor_si128(row4l, row2l); + row2h = _mm_xor_si128(row4h, row2h); + STOREU(&S->h[4], _mm_xor_si128(LOADU(&S->h[4]), row2l)); + STOREU(&S->h[6], _mm_xor_si128(LOADU(&S->h[6]), row2h)); + return 0; +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h new file mode 100644 index 0000000..9b96b8f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h @@ -0,0 +1,106 @@ + +#ifndef blake2b_compress_ssse3_H +#define blake2b_compress_ssse3_H + +#define LOADU(p) _mm_loadu_si128((const __m128i *) (const void *) (p)) +#define STOREU(p, r) _mm_storeu_si128((__m128i *) (void *) (p), r) + +#if !(defined(_mm_roti_epi64) && defined(__XOP__)) +#undef _mm_roti_epi64 +#define _mm_roti_epi64(x, c) \ + (-(c) == 32) \ + ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) \ + : (-(c) == 24) \ + ? _mm_shuffle_epi8((x), r24) \ + : (-(c) == 16) \ + ? _mm_shuffle_epi8((x), r16) \ + : (-(c) == 63) \ + ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_add_epi64((x), (x))) \ + : _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_slli_epi64((x), 64 - (-(c)))) +#endif + +#define G1(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1) \ + row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ + row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \ + \ + row4l = _mm_xor_si128(row4l, row1l); \ + row4h = _mm_xor_si128(row4h, row1h); \ + \ + row4l = _mm_roti_epi64(row4l, -32); \ + row4h = _mm_roti_epi64(row4h, -32); \ + \ + row3l = _mm_add_epi64(row3l, row4l); \ + row3h = _mm_add_epi64(row3h, row4h); \ + \ + row2l = _mm_xor_si128(row2l, row3l); \ + row2h = _mm_xor_si128(row2h, row3h); \ + \ + row2l = _mm_roti_epi64(row2l, -24); \ + row2h = _mm_roti_epi64(row2h, -24); + +#define G2(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1) \ + row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ + row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \ + \ + row4l = _mm_xor_si128(row4l, row1l); \ + row4h = _mm_xor_si128(row4h, row1h); \ + \ + row4l = _mm_roti_epi64(row4l, -16); \ + row4h = _mm_roti_epi64(row4h, -16); \ + \ + row3l = _mm_add_epi64(row3l, row4l); \ + row3h = _mm_add_epi64(row3h, row4h); \ + \ + row2l = _mm_xor_si128(row2l, row3l); \ + row2h = _mm_xor_si128(row2h, row3h); \ + \ + row2l = _mm_roti_epi64(row2l, -63); \ + row2h = _mm_roti_epi64(row2h, -63); + +#define DIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h) \ + t0 = _mm_alignr_epi8(row2h, row2l, 8); \ + t1 = _mm_alignr_epi8(row2l, row2h, 8); \ + row2l = t0; \ + row2h = t1; \ + \ + t0 = row3l; \ + row3l = row3h; \ + row3h = t0; \ + \ + t0 = _mm_alignr_epi8(row4h, row4l, 8); \ + t1 = _mm_alignr_epi8(row4l, row4h, 8); \ + row4l = t1; \ + row4h = t0; + +#define UNDIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h) \ + t0 = _mm_alignr_epi8(row2l, row2h, 8); \ + t1 = _mm_alignr_epi8(row2h, row2l, 8); \ + row2l = t0; \ + row2h = t1; \ + \ + t0 = row3l; \ + row3l = row3h; \ + row3h = t0; \ + \ + t0 = _mm_alignr_epi8(row4l, row4h, 8); \ + t1 = _mm_alignr_epi8(row4h, row4l, 8); \ + row4l = t1; \ + row4h = t0; + +#include "blake2b-load-sse2.h" + +#define ROUND(r) \ + LOAD_MSG_##r##_1(b0, b1); \ + G1(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + LOAD_MSG_##r##_2(b0, b1); \ + G2(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + DIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h); \ + LOAD_MSG_##r##_3(b0, b1); \ + G1(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + LOAD_MSG_##r##_4(b0, b1); \ + G2(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h, b0, b1); \ + UNDIAGONALIZE(row1l, row2l, row3l, row4l, row1h, row2h, row3h, row4h); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-avx2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-avx2.h new file mode 100644 index 0000000..12a5d18 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-avx2.h @@ -0,0 +1,340 @@ +#ifndef blake2b_load_avx2_H +#define blake2b_load_avx2_H + +#define BLAKE2B_LOAD_MSG_0_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m0, m1); \ + t1 = _mm256_unpacklo_epi64(m2, m3); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_0_2(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m0, m1); \ + t1 = _mm256_unpackhi_epi64(m2, m3); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_0_3(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m7, m4); \ + t1 = _mm256_unpacklo_epi64(m5, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_0_4(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m7, m4); \ + t1 = _mm256_unpackhi_epi64(m5, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_1_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m7, m2); \ + t1 = _mm256_unpackhi_epi64(m4, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_1_2(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m5, m4); \ + t1 = _mm256_alignr_epi8(m3, m7, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_1_3(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m2, m0); \ + t1 = _mm256_blend_epi32(m5, m0, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_1_4(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m6, m1, 8); \ + t1 = _mm256_blend_epi32(m3, m1, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_2_1(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m6, m5, 8); \ + t1 = _mm256_unpackhi_epi64(m2, m7); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_2_2(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m4, m0); \ + t1 = _mm256_blend_epi32(m6, m1, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_2_3(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m5, m4, 8); \ + t1 = _mm256_unpackhi_epi64(m1, m3); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_2_4(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m2, m7); \ + t1 = _mm256_blend_epi32(m0, m3, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_3_1(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m3, m1); \ + t1 = _mm256_unpackhi_epi64(m6, m5); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_3_2(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m4, m0); \ + t1 = _mm256_unpacklo_epi64(m6, m7); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_3_3(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m1, m7, 8); \ + t1 = _mm256_shuffle_epi32(m2, _MM_SHUFFLE(1, 0, 3, 2)); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_3_4(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m4, m3); \ + t1 = _mm256_unpacklo_epi64(m5, m0); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_4_1(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m4, m2); \ + t1 = _mm256_unpacklo_epi64(m1, m5); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_4_2(b0) \ + do { \ + t0 = _mm256_blend_epi32(m3, m0, 0x33); \ + t1 = _mm256_blend_epi32(m7, m2, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_4_3(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m7, m1, 8); \ + t1 = _mm256_alignr_epi8(m3, m5, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_4_4(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m6, m0); \ + t1 = _mm256_unpacklo_epi64(m6, m4); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_5_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m1, m3); \ + t1 = _mm256_unpacklo_epi64(m0, m4); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_5_2(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m6, m5); \ + t1 = _mm256_unpackhi_epi64(m5, m1); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_5_3(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m2, m0, 8); \ + t1 = _mm256_unpackhi_epi64(m3, m7); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_5_4(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m4, m6); \ + t1 = _mm256_alignr_epi8(m7, m2, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_6_1(b0) \ + do { \ + t0 = _mm256_blend_epi32(m0, m6, 0x33); \ + t1 = _mm256_unpacklo_epi64(m7, m2); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_6_2(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m2, m7); \ + t1 = _mm256_alignr_epi8(m5, m6, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_6_3(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m4, m0); \ + t1 = _mm256_blend_epi32(m4, m3, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_6_4(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m5, m3); \ + t1 = _mm256_shuffle_epi32(m1, _MM_SHUFFLE(1, 0, 3, 2)); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_7_1(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m6, m3); \ + t1 = _mm256_blend_epi32(m1, m6, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_7_2(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m7, m5, 8); \ + t1 = _mm256_unpackhi_epi64(m0, m4); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_7_3(b0) \ + do { \ + t0 = _mm256_blend_epi32(m2, m1, 0x33); \ + t1 = _mm256_alignr_epi8(m4, m7, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_7_4(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m5, m0); \ + t1 = _mm256_unpacklo_epi64(m2, m3); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_8_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m3, m7); \ + t1 = _mm256_alignr_epi8(m0, m5, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_8_2(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m7, m4); \ + t1 = _mm256_alignr_epi8(m4, m1, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_8_3(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m5, m6); \ + t1 = _mm256_unpackhi_epi64(m6, m0); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_8_4(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m1, m2, 8); \ + t1 = _mm256_alignr_epi8(m2, m3, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_9_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m5, m4); \ + t1 = _mm256_unpackhi_epi64(m3, m0); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_9_2(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m1, m2); \ + t1 = _mm256_blend_epi32(m2, m3, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_9_3(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m6, m7); \ + t1 = _mm256_unpackhi_epi64(m4, m1); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_9_4(b0) \ + do { \ + t0 = _mm256_blend_epi32(m5, m0, 0x33); \ + t1 = _mm256_unpacklo_epi64(m7, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_10_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m0, m1); \ + t1 = _mm256_unpacklo_epi64(m2, m3); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_10_2(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m0, m1); \ + t1 = _mm256_unpackhi_epi64(m2, m3); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_10_3(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m7, m4); \ + t1 = _mm256_unpacklo_epi64(m5, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_10_4(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m7, m4); \ + t1 = _mm256_unpackhi_epi64(m5, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_11_1(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m7, m2); \ + t1 = _mm256_unpackhi_epi64(m4, m6); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_11_2(b0) \ + do { \ + t0 = _mm256_unpacklo_epi64(m5, m4); \ + t1 = _mm256_alignr_epi8(m3, m7, 8); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_11_3(b0) \ + do { \ + t0 = _mm256_unpackhi_epi64(m2, m0); \ + t1 = _mm256_blend_epi32(m5, m0, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#define BLAKE2B_LOAD_MSG_11_4(b0) \ + do { \ + t0 = _mm256_alignr_epi8(m6, m1, 8); \ + t1 = _mm256_blend_epi32(m3, m1, 0x33); \ + b0 = _mm256_blend_epi32(t0, t1, 0xF0); \ + } while (0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse2.h new file mode 100644 index 0000000..8e67421 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse2.h @@ -0,0 +1,164 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along + with + this software. If not, see + . +*/ + +#ifndef blake2b_load_sse2_H +#define blake2b_load_sse2_H + +#define LOAD_MSG_0_1(b0, b1) \ + b0 = _mm_set_epi64x(m2, m0); \ + b1 = _mm_set_epi64x(m6, m4) +#define LOAD_MSG_0_2(b0, b1) \ + b0 = _mm_set_epi64x(m3, m1); \ + b1 = _mm_set_epi64x(m7, m5) +#define LOAD_MSG_0_3(b0, b1) \ + b0 = _mm_set_epi64x(m10, m8); \ + b1 = _mm_set_epi64x(m14, m12) +#define LOAD_MSG_0_4(b0, b1) \ + b0 = _mm_set_epi64x(m11, m9); \ + b1 = _mm_set_epi64x(m15, m13) +#define LOAD_MSG_1_1(b0, b1) \ + b0 = _mm_set_epi64x(m4, m14); \ + b1 = _mm_set_epi64x(m13, m9) +#define LOAD_MSG_1_2(b0, b1) \ + b0 = _mm_set_epi64x(m8, m10); \ + b1 = _mm_set_epi64x(m6, m15) +#define LOAD_MSG_1_3(b0, b1) \ + b0 = _mm_set_epi64x(m0, m1); \ + b1 = _mm_set_epi64x(m5, m11) +#define LOAD_MSG_1_4(b0, b1) \ + b0 = _mm_set_epi64x(m2, m12); \ + b1 = _mm_set_epi64x(m3, m7) +#define LOAD_MSG_2_1(b0, b1) \ + b0 = _mm_set_epi64x(m12, m11); \ + b1 = _mm_set_epi64x(m15, m5) +#define LOAD_MSG_2_2(b0, b1) \ + b0 = _mm_set_epi64x(m0, m8); \ + b1 = _mm_set_epi64x(m13, m2) +#define LOAD_MSG_2_3(b0, b1) \ + b0 = _mm_set_epi64x(m3, m10); \ + b1 = _mm_set_epi64x(m9, m7) +#define LOAD_MSG_2_4(b0, b1) \ + b0 = _mm_set_epi64x(m6, m14); \ + b1 = _mm_set_epi64x(m4, m1) +#define LOAD_MSG_3_1(b0, b1) \ + b0 = _mm_set_epi64x(m3, m7); \ + b1 = _mm_set_epi64x(m11, m13) +#define LOAD_MSG_3_2(b0, b1) \ + b0 = _mm_set_epi64x(m1, m9); \ + b1 = _mm_set_epi64x(m14, m12) +#define LOAD_MSG_3_3(b0, b1) \ + b0 = _mm_set_epi64x(m5, m2); \ + b1 = _mm_set_epi64x(m15, m4) +#define LOAD_MSG_3_4(b0, b1) \ + b0 = _mm_set_epi64x(m10, m6); \ + b1 = _mm_set_epi64x(m8, m0) +#define LOAD_MSG_4_1(b0, b1) \ + b0 = _mm_set_epi64x(m5, m9); \ + b1 = _mm_set_epi64x(m10, m2) +#define LOAD_MSG_4_2(b0, b1) \ + b0 = _mm_set_epi64x(m7, m0); \ + b1 = _mm_set_epi64x(m15, m4) +#define LOAD_MSG_4_3(b0, b1) \ + b0 = _mm_set_epi64x(m11, m14); \ + b1 = _mm_set_epi64x(m3, m6) +#define LOAD_MSG_4_4(b0, b1) \ + b0 = _mm_set_epi64x(m12, m1); \ + b1 = _mm_set_epi64x(m13, m8) +#define LOAD_MSG_5_1(b0, b1) \ + b0 = _mm_set_epi64x(m6, m2); \ + b1 = _mm_set_epi64x(m8, m0) +#define LOAD_MSG_5_2(b0, b1) \ + b0 = _mm_set_epi64x(m10, m12); \ + b1 = _mm_set_epi64x(m3, m11) +#define LOAD_MSG_5_3(b0, b1) \ + b0 = _mm_set_epi64x(m7, m4); \ + b1 = _mm_set_epi64x(m1, m15) +#define LOAD_MSG_5_4(b0, b1) \ + b0 = _mm_set_epi64x(m5, m13); \ + b1 = _mm_set_epi64x(m9, m14) +#define LOAD_MSG_6_1(b0, b1) \ + b0 = _mm_set_epi64x(m1, m12); \ + b1 = _mm_set_epi64x(m4, m14) +#define LOAD_MSG_6_2(b0, b1) \ + b0 = _mm_set_epi64x(m15, m5); \ + b1 = _mm_set_epi64x(m10, m13) +#define LOAD_MSG_6_3(b0, b1) \ + b0 = _mm_set_epi64x(m6, m0); \ + b1 = _mm_set_epi64x(m8, m9) +#define LOAD_MSG_6_4(b0, b1) \ + b0 = _mm_set_epi64x(m3, m7); \ + b1 = _mm_set_epi64x(m11, m2) +#define LOAD_MSG_7_1(b0, b1) \ + b0 = _mm_set_epi64x(m7, m13); \ + b1 = _mm_set_epi64x(m3, m12) +#define LOAD_MSG_7_2(b0, b1) \ + b0 = _mm_set_epi64x(m14, m11); \ + b1 = _mm_set_epi64x(m9, m1) +#define LOAD_MSG_7_3(b0, b1) \ + b0 = _mm_set_epi64x(m15, m5); \ + b1 = _mm_set_epi64x(m2, m8) +#define LOAD_MSG_7_4(b0, b1) \ + b0 = _mm_set_epi64x(m4, m0); \ + b1 = _mm_set_epi64x(m10, m6) +#define LOAD_MSG_8_1(b0, b1) \ + b0 = _mm_set_epi64x(m14, m6); \ + b1 = _mm_set_epi64x(m0, m11) +#define LOAD_MSG_8_2(b0, b1) \ + b0 = _mm_set_epi64x(m9, m15); \ + b1 = _mm_set_epi64x(m8, m3) +#define LOAD_MSG_8_3(b0, b1) \ + b0 = _mm_set_epi64x(m13, m12); \ + b1 = _mm_set_epi64x(m10, m1) +#define LOAD_MSG_8_4(b0, b1) \ + b0 = _mm_set_epi64x(m7, m2); \ + b1 = _mm_set_epi64x(m5, m4) +#define LOAD_MSG_9_1(b0, b1) \ + b0 = _mm_set_epi64x(m8, m10); \ + b1 = _mm_set_epi64x(m1, m7) +#define LOAD_MSG_9_2(b0, b1) \ + b0 = _mm_set_epi64x(m4, m2); \ + b1 = _mm_set_epi64x(m5, m6) +#define LOAD_MSG_9_3(b0, b1) \ + b0 = _mm_set_epi64x(m9, m15); \ + b1 = _mm_set_epi64x(m13, m3) +#define LOAD_MSG_9_4(b0, b1) \ + b0 = _mm_set_epi64x(m14, m11); \ + b1 = _mm_set_epi64x(m0, m12) +#define LOAD_MSG_10_1(b0, b1) \ + b0 = _mm_set_epi64x(m2, m0); \ + b1 = _mm_set_epi64x(m6, m4) +#define LOAD_MSG_10_2(b0, b1) \ + b0 = _mm_set_epi64x(m3, m1); \ + b1 = _mm_set_epi64x(m7, m5) +#define LOAD_MSG_10_3(b0, b1) \ + b0 = _mm_set_epi64x(m10, m8); \ + b1 = _mm_set_epi64x(m14, m12) +#define LOAD_MSG_10_4(b0, b1) \ + b0 = _mm_set_epi64x(m11, m9); \ + b1 = _mm_set_epi64x(m15, m13) +#define LOAD_MSG_11_1(b0, b1) \ + b0 = _mm_set_epi64x(m4, m14); \ + b1 = _mm_set_epi64x(m13, m9) +#define LOAD_MSG_11_2(b0, b1) \ + b0 = _mm_set_epi64x(m8, m10); \ + b1 = _mm_set_epi64x(m6, m15) +#define LOAD_MSG_11_3(b0, b1) \ + b0 = _mm_set_epi64x(m0, m1); \ + b1 = _mm_set_epi64x(m5, m11) +#define LOAD_MSG_11_4(b0, b1) \ + b0 = _mm_set_epi64x(m2, m12); \ + b1 = _mm_set_epi64x(m3, m7) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse41.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse41.h new file mode 100644 index 0000000..31745fc --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse41.h @@ -0,0 +1,307 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along + with + this software. If not, see + . +*/ + +#ifndef blake2b_load_sse41_H +#define blake2b_load_sse41_H + +#define LOAD_MSG_0_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m0, m1); \ + b1 = _mm_unpacklo_epi64(m2, m3); \ + } while (0) + +#define LOAD_MSG_0_2(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m0, m1); \ + b1 = _mm_unpackhi_epi64(m2, m3); \ + } while (0) + +#define LOAD_MSG_0_3(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m4, m5); \ + b1 = _mm_unpacklo_epi64(m6, m7); \ + } while (0) + +#define LOAD_MSG_0_4(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m4, m5); \ + b1 = _mm_unpackhi_epi64(m6, m7); \ + } while (0) + +#define LOAD_MSG_1_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m7, m2); \ + b1 = _mm_unpackhi_epi64(m4, m6); \ + } while (0) + +#define LOAD_MSG_1_2(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m5, m4); \ + b1 = _mm_alignr_epi8(m3, m7, 8); \ + } while (0) + +#define LOAD_MSG_1_3(b0, b1) \ + do { \ + b0 = _mm_shuffle_epi32(m0, _MM_SHUFFLE(1, 0, 3, 2)); \ + b1 = _mm_unpackhi_epi64(m5, m2); \ + } while (0) + +#define LOAD_MSG_1_4(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m6, m1); \ + b1 = _mm_unpackhi_epi64(m3, m1); \ + } while (0) + +#define LOAD_MSG_2_1(b0, b1) \ + do { \ + b0 = _mm_alignr_epi8(m6, m5, 8); \ + b1 = _mm_unpackhi_epi64(m2, m7); \ + } while (0) + +#define LOAD_MSG_2_2(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m4, m0); \ + b1 = _mm_blend_epi16(m1, m6, 0xF0); \ + } while (0) + +#define LOAD_MSG_2_3(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m5, m1, 0xF0); \ + b1 = _mm_unpackhi_epi64(m3, m4); \ + } while (0) + +#define LOAD_MSG_2_4(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m7, m3); \ + b1 = _mm_alignr_epi8(m2, m0, 8); \ + } while (0) + +#define LOAD_MSG_3_1(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m3, m1); \ + b1 = _mm_unpackhi_epi64(m6, m5); \ + } while (0) + +#define LOAD_MSG_3_2(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m4, m0); \ + b1 = _mm_unpacklo_epi64(m6, m7); \ + } while (0) + +#define LOAD_MSG_3_3(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m1, m2, 0xF0); \ + b1 = _mm_blend_epi16(m2, m7, 0xF0); \ + } while (0) + +#define LOAD_MSG_3_4(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m3, m5); \ + b1 = _mm_unpacklo_epi64(m0, m4); \ + } while (0) + +#define LOAD_MSG_4_1(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m4, m2); \ + b1 = _mm_unpacklo_epi64(m1, m5); \ + } while (0) + +#define LOAD_MSG_4_2(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m0, m3, 0xF0); \ + b1 = _mm_blend_epi16(m2, m7, 0xF0); \ + } while (0) + +#define LOAD_MSG_4_3(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m7, m5, 0xF0); \ + b1 = _mm_blend_epi16(m3, m1, 0xF0); \ + } while (0) + +#define LOAD_MSG_4_4(b0, b1) \ + do { \ + b0 = _mm_alignr_epi8(m6, m0, 8); \ + b1 = _mm_blend_epi16(m4, m6, 0xF0); \ + } while (0) + +#define LOAD_MSG_5_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m1, m3); \ + b1 = _mm_unpacklo_epi64(m0, m4); \ + } while (0) + +#define LOAD_MSG_5_2(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m6, m5); \ + b1 = _mm_unpackhi_epi64(m5, m1); \ + } while (0) + +#define LOAD_MSG_5_3(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m2, m3, 0xF0); \ + b1 = _mm_unpackhi_epi64(m7, m0); \ + } while (0) + +#define LOAD_MSG_5_4(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m6, m2); \ + b1 = _mm_blend_epi16(m7, m4, 0xF0); \ + } while (0) + +#define LOAD_MSG_6_1(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m6, m0, 0xF0); \ + b1 = _mm_unpacklo_epi64(m7, m2); \ + } while (0) + +#define LOAD_MSG_6_2(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m2, m7); \ + b1 = _mm_alignr_epi8(m5, m6, 8); \ + } while (0) + +#define LOAD_MSG_6_3(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m0, m3); \ + b1 = _mm_shuffle_epi32(m4, _MM_SHUFFLE(1, 0, 3, 2)); \ + } while (0) + +#define LOAD_MSG_6_4(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m3, m1); \ + b1 = _mm_blend_epi16(m1, m5, 0xF0); \ + } while (0) + +#define LOAD_MSG_7_1(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m6, m3); \ + b1 = _mm_blend_epi16(m6, m1, 0xF0); \ + } while (0) + +#define LOAD_MSG_7_2(b0, b1) \ + do { \ + b0 = _mm_alignr_epi8(m7, m5, 8); \ + b1 = _mm_unpackhi_epi64(m0, m4); \ + } while (0) + +#define LOAD_MSG_7_3(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m2, m7); \ + b1 = _mm_unpacklo_epi64(m4, m1); \ + } while (0) + +#define LOAD_MSG_7_4(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m0, m2); \ + b1 = _mm_unpacklo_epi64(m3, m5); \ + } while (0) + +#define LOAD_MSG_8_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m3, m7); \ + b1 = _mm_alignr_epi8(m0, m5, 8); \ + } while (0) + +#define LOAD_MSG_8_2(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m7, m4); \ + b1 = _mm_alignr_epi8(m4, m1, 8); \ + } while (0) + +#define LOAD_MSG_8_3(b0, b1) \ + do { \ + b0 = m6; \ + b1 = _mm_alignr_epi8(m5, m0, 8); \ + } while (0) + +#define LOAD_MSG_8_4(b0, b1) \ + do { \ + b0 = _mm_blend_epi16(m1, m3, 0xF0); \ + b1 = m2; \ + } while (0) + +#define LOAD_MSG_9_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m5, m4); \ + b1 = _mm_unpackhi_epi64(m3, m0); \ + } while (0) + +#define LOAD_MSG_9_2(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m1, m2); \ + b1 = _mm_blend_epi16(m3, m2, 0xF0); \ + } while (0) + +#define LOAD_MSG_9_3(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m7, m4); \ + b1 = _mm_unpackhi_epi64(m1, m6); \ + } while (0) + +#define LOAD_MSG_9_4(b0, b1) \ + do { \ + b0 = _mm_alignr_epi8(m7, m5, 8); \ + b1 = _mm_unpacklo_epi64(m6, m0); \ + } while (0) + +#define LOAD_MSG_10_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m0, m1); \ + b1 = _mm_unpacklo_epi64(m2, m3); \ + } while (0) + +#define LOAD_MSG_10_2(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m0, m1); \ + b1 = _mm_unpackhi_epi64(m2, m3); \ + } while (0) + +#define LOAD_MSG_10_3(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m4, m5); \ + b1 = _mm_unpacklo_epi64(m6, m7); \ + } while (0) + +#define LOAD_MSG_10_4(b0, b1) \ + do { \ + b0 = _mm_unpackhi_epi64(m4, m5); \ + b1 = _mm_unpackhi_epi64(m6, m7); \ + } while (0) + +#define LOAD_MSG_11_1(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m7, m2); \ + b1 = _mm_unpackhi_epi64(m4, m6); \ + } while (0) + +#define LOAD_MSG_11_2(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m5, m4); \ + b1 = _mm_alignr_epi8(m3, m7, 8); \ + } while (0) + +#define LOAD_MSG_11_3(b0, b1) \ + do { \ + b0 = _mm_shuffle_epi32(m0, _MM_SHUFFLE(1, 0, 3, 2)); \ + b1 = _mm_unpackhi_epi64(m5, m2); \ + } while (0) + +#define LOAD_MSG_11_4(b0, b1) \ + do { \ + b0 = _mm_unpacklo_epi64(m6, m1); \ + b1 = _mm_unpackhi_epi64(m3, m1); \ + } while (0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c new file mode 100644 index 0000000..a1beacf --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c @@ -0,0 +1,438 @@ +/* + BLAKE2 reference source code package - C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along + with + this software. If not, see + . +*/ + +#include +#include +#include +#include +#include + +#include "blake2.h" +#include "core.h" +#include "private/common.h" +#include "runtime.h" +#include "utils.h" + +static blake2b_compress_fn blake2b_compress = blake2b_compress_ref; + +static const uint64_t blake2b_IV[8] = { + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +/* LCOV_EXCL_START */ +static inline int +blake2b_set_lastnode(blake2b_state *S) +{ + S->f[1] = -1; + return 0; +} +/* LCOV_EXCL_STOP */ + +static inline int +blake2b_is_lastblock(const blake2b_state *S) +{ + return S->f[0] != 0; +} + +static inline int +blake2b_set_lastblock(blake2b_state *S) +{ + if (S->last_node) { + blake2b_set_lastnode(S); + } + S->f[0] = -1; + return 0; +} + +static inline int +blake2b_increment_counter(blake2b_state *S, const uint64_t inc) +{ +#ifdef HAVE_TI_MODE + uint128_t t = ((uint128_t) S->t[1] << 64) | S->t[0]; + t += inc; + S->t[0] = (uint64_t)(t >> 0); + S->t[1] = (uint64_t)(t >> 64); +#else + S->t[0] += inc; + S->t[1] += (S->t[0] < inc); +#endif + return 0; +} + +/* Parameter-related functions */ +static inline int +blake2b_param_set_salt(blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES]) +{ + memcpy(P->salt, salt, BLAKE2B_SALTBYTES); + return 0; +} + +static inline int +blake2b_param_set_personal(blake2b_param *P, + const uint8_t personal[BLAKE2B_PERSONALBYTES]) +{ + memcpy(P->personal, personal, BLAKE2B_PERSONALBYTES); + return 0; +} + +static inline int +blake2b_init0(blake2b_state *S) +{ + int i; + + for (i = 0; i < 8; i++) { + S->h[i] = blake2b_IV[i]; + } + /* zero everything between .t and .last_node */ + memset((void *) &S->t, 0, + offsetof(blake2b_state, last_node) + sizeof(S->last_node) + - offsetof(blake2b_state, t)); + return 0; +} + +/* init xors IV with input parameter block */ +int +blake2b_init_param(blake2b_state *S, const blake2b_param *P) +{ + size_t i; + const uint8_t *p; + + COMPILER_ASSERT(sizeof *P == 64); + blake2b_init0(S); + p = (const uint8_t *) (P); + + /* IV XOR ParamBlock */ + for (i = 0; i < 8; i++) { + S->h[i] ^= LOAD64_LE(p + sizeof(S->h[i]) * i); + } + return 0; +} + +int +blake2b_init(blake2b_state *S, const uint8_t outlen) +{ + blake2b_param P[1]; + + if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) { + sodium_misuse(); + } + P->digest_length = outlen; + P->key_length = 0; + P->fanout = 1; + P->depth = 1; + STORE32_LE(P->leaf_length, 0); + STORE64_LE(P->node_offset, 0); + P->node_depth = 0; + P->inner_length = 0; + memset(P->reserved, 0, sizeof(P->reserved)); + memset(P->salt, 0, sizeof(P->salt)); + memset(P->personal, 0, sizeof(P->personal)); + return blake2b_init_param(S, P); +} + +int +blake2b_init_salt_personal(blake2b_state *S, const uint8_t outlen, + const void *salt, const void *personal) +{ + blake2b_param P[1]; + + if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) { + sodium_misuse(); + } + P->digest_length = outlen; + P->key_length = 0; + P->fanout = 1; + P->depth = 1; + STORE32_LE(P->leaf_length, 0); + STORE64_LE(P->node_offset, 0); + P->node_depth = 0; + P->inner_length = 0; + memset(P->reserved, 0, sizeof(P->reserved)); + if (salt != NULL) { + blake2b_param_set_salt(P, (const uint8_t *) salt); + } else { + memset(P->salt, 0, sizeof(P->salt)); + } + if (personal != NULL) { + blake2b_param_set_personal(P, (const uint8_t *) personal); + } else { + memset(P->personal, 0, sizeof(P->personal)); + } + return blake2b_init_param(S, P); +} + +int +blake2b_init_key(blake2b_state *S, const uint8_t outlen, const void *key, + const uint8_t keylen) +{ + blake2b_param P[1]; + + if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) { + sodium_misuse(); + } + if (!key || !keylen || keylen > BLAKE2B_KEYBYTES) { + sodium_misuse(); /* does not return */ + } + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = 1; + P->depth = 1; + STORE32_LE(P->leaf_length, 0); + STORE64_LE(P->node_offset, 0); + P->node_depth = 0; + P->inner_length = 0; + memset(P->reserved, 0, sizeof(P->reserved)); + memset(P->salt, 0, sizeof(P->salt)); + memset(P->personal, 0, sizeof(P->personal)); + + if (blake2b_init_param(S, P) < 0) { + sodium_misuse(); + } + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset(block, 0, BLAKE2B_BLOCKBYTES); + memcpy(block, key, keylen); /* key and keylen cannot be 0 */ + blake2b_update(S, block, BLAKE2B_BLOCKBYTES); + sodium_memzero(block, BLAKE2B_BLOCKBYTES); /* Burn the key from stack */ + } + return 0; +} + +int +blake2b_init_key_salt_personal(blake2b_state *S, const uint8_t outlen, + const void *key, const uint8_t keylen, + const void *salt, const void *personal) +{ + blake2b_param P[1]; + + if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) { + sodium_misuse(); + } + if (!key || !keylen || keylen > BLAKE2B_KEYBYTES) { + sodium_misuse(); /* does not return */ + } + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = 1; + P->depth = 1; + STORE32_LE(P->leaf_length, 0); + STORE64_LE(P->node_offset, 0); + P->node_depth = 0; + P->inner_length = 0; + memset(P->reserved, 0, sizeof(P->reserved)); + if (salt != NULL) { + blake2b_param_set_salt(P, (const uint8_t *) salt); + } else { + memset(P->salt, 0, sizeof(P->salt)); + } + if (personal != NULL) { + blake2b_param_set_personal(P, (const uint8_t *) personal); + } else { + memset(P->personal, 0, sizeof(P->personal)); + } + + if (blake2b_init_param(S, P) < 0) { + sodium_misuse(); + } + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset(block, 0, BLAKE2B_BLOCKBYTES); + memcpy(block, key, keylen); /* key and keylen cannot be 0 */ + blake2b_update(S, block, BLAKE2B_BLOCKBYTES); + sodium_memzero(block, BLAKE2B_BLOCKBYTES); /* Burn the key from stack */ + } + return 0; +} + +/* inlen now in bytes */ +int +blake2b_update(blake2b_state *S, const uint8_t *in, uint64_t inlen) +{ + while (inlen > 0) { + size_t left = S->buflen; + size_t fill = 2 * BLAKE2B_BLOCKBYTES - left; + + if (inlen > fill) { + memcpy(S->buf + left, in, fill); /* Fill buffer */ + S->buflen += fill; + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, S->buf); /* Compress */ + memcpy(S->buf, S->buf + BLAKE2B_BLOCKBYTES, + BLAKE2B_BLOCKBYTES); /* Shift buffer left */ + S->buflen -= BLAKE2B_BLOCKBYTES; + in += fill; + inlen -= fill; + } else /* inlen <= fill */ + { + memcpy(S->buf + left, in, inlen); + S->buflen += inlen; /* Be lazy, do not compress */ + in += inlen; + inlen -= inlen; + } + } + + return 0; +} + +int +blake2b_final(blake2b_state *S, uint8_t *out, uint8_t outlen) +{ + unsigned char buffer[BLAKE2B_OUTBYTES]; + + if (!outlen || outlen > BLAKE2B_OUTBYTES) { + sodium_misuse(); + } + if (blake2b_is_lastblock(S)) { + return -1; + } + if (S->buflen > BLAKE2B_BLOCKBYTES) { + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, S->buf); + S->buflen -= BLAKE2B_BLOCKBYTES; + assert(S->buflen <= BLAKE2B_BLOCKBYTES); + memcpy(S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen); + } + + blake2b_increment_counter(S, S->buflen); + blake2b_set_lastblock(S); + memset(S->buf + S->buflen, 0, + 2 * BLAKE2B_BLOCKBYTES - S->buflen); /* Padding */ + blake2b_compress(S, S->buf); + + COMPILER_ASSERT(sizeof buffer == 64U); + STORE64_LE(buffer + 8 * 0, S->h[0]); + STORE64_LE(buffer + 8 * 1, S->h[1]); + STORE64_LE(buffer + 8 * 2, S->h[2]); + STORE64_LE(buffer + 8 * 3, S->h[3]); + STORE64_LE(buffer + 8 * 4, S->h[4]); + STORE64_LE(buffer + 8 * 5, S->h[5]); + STORE64_LE(buffer + 8 * 6, S->h[6]); + STORE64_LE(buffer + 8 * 7, S->h[7]); + memcpy(out, buffer, outlen); /* outlen <= BLAKE2B_OUTBYTES (64) */ + + sodium_memzero(S->h, sizeof S->h); + sodium_memzero(S->buf, sizeof S->buf); + + return 0; +} + +/* inlen, at least, should be uint64_t. Others can be size_t. */ +int +blake2b(uint8_t *out, const void *in, const void *key, const uint8_t outlen, + const uint64_t inlen, uint8_t keylen) +{ + CRYPTO_ALIGN(64) blake2b_state S[1]; + + /* Verify parameters */ + if (NULL == in && inlen > 0) { + sodium_misuse(); + } + if (NULL == out) { + sodium_misuse(); + } + if (!outlen || outlen > BLAKE2B_OUTBYTES) { + sodium_misuse(); + } + if (NULL == key && keylen > 0) { + sodium_misuse(); + } + if (keylen > BLAKE2B_KEYBYTES) { + sodium_misuse(); + } + if (keylen > 0) { + if (blake2b_init_key(S, outlen, key, keylen) < 0) { + sodium_misuse(); + } + } else { + if (blake2b_init(S, outlen) < 0) { + sodium_misuse(); + } + } + + blake2b_update(S, (const uint8_t *) in, inlen); + blake2b_final(S, out, outlen); + return 0; +} + +int +blake2b_salt_personal(uint8_t *out, const void *in, const void *key, + const uint8_t outlen, const uint64_t inlen, + uint8_t keylen, const void *salt, const void *personal) +{ + CRYPTO_ALIGN(64) blake2b_state S[1]; + + /* Verify parameters */ + if (NULL == in && inlen > 0) { + sodium_misuse(); + } + if (NULL == out) { + sodium_misuse(); + } + if (!outlen || outlen > BLAKE2B_OUTBYTES) { + sodium_misuse(); + } + if (NULL == key && keylen > 0) { + sodium_misuse(); + } + if (keylen > BLAKE2B_KEYBYTES) { + sodium_misuse(); + } + if (keylen > 0) { + if (blake2b_init_key_salt_personal(S, outlen, key, keylen, salt, + personal) < 0) { + sodium_misuse(); + } + } else { + if (blake2b_init_salt_personal(S, outlen, salt, personal) < 0) { + sodium_misuse(); + } + } + + blake2b_update(S, (const uint8_t *) in, inlen); + blake2b_final(S, out, outlen); + return 0; +} + +int +blake2b_pick_best_implementation(void) +{ +/* LCOV_EXCL_START */ +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_TMMINTRIN_H) && \ + defined(HAVE_SMMINTRIN_H) + if (sodium_runtime_has_avx2()) { + blake2b_compress = blake2b_compress_avx2; + return 0; + } +#endif +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) && \ + defined(HAVE_SMMINTRIN_H) + if (sodium_runtime_has_sse41()) { + blake2b_compress = blake2b_compress_sse41; + return 0; + } +#endif +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) + if (sodium_runtime_has_ssse3()) { + blake2b_compress = blake2b_compress_ssse3; + return 0; + } +#endif + blake2b_compress = blake2b_compress_ref; + + return 0; + /* LCOV_EXCL_STOP */ +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c new file mode 100644 index 0000000..7a8598c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c @@ -0,0 +1,116 @@ + +#include +#include +#include + +#include "blake2.h" +#include "crypto_generichash_blake2b.h" +#include "private/common.h" +#include "private/implementations.h" + +int +crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) +{ + if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || + keylen > BLAKE2B_KEYBYTES || inlen > UINT64_MAX) { + return -1; + } + assert(outlen <= UINT8_MAX); + assert(keylen <= UINT8_MAX); + + return blake2b((uint8_t *) out, in, key, (uint8_t) outlen, (uint64_t) inlen, + (uint8_t) keylen); +} + +int +crypto_generichash_blake2b_salt_personal( + unsigned char *out, size_t outlen, const unsigned char *in, + unsigned long long inlen, const unsigned char *key, size_t keylen, + const unsigned char *salt, const unsigned char *personal) +{ + if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || + keylen > BLAKE2B_KEYBYTES || inlen > UINT64_MAX) { + return -1; + } + assert(outlen <= UINT8_MAX); + assert(keylen <= UINT8_MAX); + + return blake2b_salt_personal((uint8_t *) out, in, key, (uint8_t) outlen, + (uint64_t) inlen, (uint8_t) keylen, salt, + personal); +} + +int +crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, const size_t keylen, + const size_t outlen) +{ + if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || + keylen > BLAKE2B_KEYBYTES) { + return -1; + } + assert(outlen <= UINT8_MAX); + assert(keylen <= UINT8_MAX); + COMPILER_ASSERT(sizeof(blake2b_state) <= sizeof *state); + if (key == NULL || keylen <= 0U) { + if (blake2b_init((blake2b_state *) (void *) state, (uint8_t) outlen) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + } else if (blake2b_init_key((blake2b_state *) (void *) state, (uint8_t) outlen, key, + (uint8_t) keylen) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} + +int +crypto_generichash_blake2b_init_salt_personal( + crypto_generichash_blake2b_state *state, const unsigned char *key, + const size_t keylen, const size_t outlen, const unsigned char *salt, + const unsigned char *personal) +{ + if (outlen <= 0U || outlen > BLAKE2B_OUTBYTES || + keylen > BLAKE2B_KEYBYTES) { + return -1; + } + assert(outlen <= UINT8_MAX); + assert(keylen <= UINT8_MAX); + if (key == NULL || keylen <= 0U) { + if (blake2b_init_salt_personal((blake2b_state *) (void *) state, + (uint8_t) outlen, salt, personal) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + } else if (blake2b_init_key_salt_personal((blake2b_state *) (void *) state, + (uint8_t) outlen, key, + (uint8_t) keylen, salt, + personal) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} + +int +crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return blake2b_update((blake2b_state *) (void *) state, + (const uint8_t *) in, (uint64_t) inlen); +} + +int +crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, const size_t outlen) +{ + assert(outlen <= UINT8_MAX); + return blake2b_final((blake2b_state *) (void *) state, + (uint8_t *) out, (uint8_t) outlen); +} + +int +_crypto_generichash_blake2b_pick_best_implementation(void) +{ + return blake2b_pick_best_implementation(); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c new file mode 100644 index 0000000..a9a14e9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c @@ -0,0 +1,91 @@ + +#include "crypto_generichash.h" +#include "randombytes.h" + +size_t +crypto_generichash_bytes_min(void) +{ + return crypto_generichash_BYTES_MIN; +} + +size_t +crypto_generichash_bytes_max(void) +{ + return crypto_generichash_BYTES_MAX; +} + +size_t +crypto_generichash_bytes(void) +{ + return crypto_generichash_BYTES; +} + +size_t +crypto_generichash_keybytes_min(void) +{ + return crypto_generichash_KEYBYTES_MIN; +} + +size_t +crypto_generichash_keybytes_max(void) +{ + return crypto_generichash_KEYBYTES_MAX; +} + +size_t +crypto_generichash_keybytes(void) +{ + return crypto_generichash_KEYBYTES; +} + +const char * +crypto_generichash_primitive(void) +{ + return crypto_generichash_PRIMITIVE; +} + +size_t +crypto_generichash_statebytes(void) +{ + return (sizeof(crypto_generichash_state) + (size_t) 63U) & ~(size_t) 63U; +} + +int +crypto_generichash(unsigned char *out, size_t outlen, const unsigned char *in, + unsigned long long inlen, const unsigned char *key, + size_t keylen) +{ + return crypto_generichash_blake2b(out, outlen, in, inlen, key, keylen); +} + +int +crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) +{ + return crypto_generichash_blake2b_init + ((crypto_generichash_blake2b_state *) state, key, keylen, outlen); +} + +int +crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return crypto_generichash_blake2b_update + ((crypto_generichash_blake2b_state *) state, in, inlen); +} + +int +crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) +{ + return crypto_generichash_blake2b_final + ((crypto_generichash_blake2b_state *) state, out, outlen); +} + +void +crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) +{ + randombytes_buf(k, crypto_generichash_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/crypto_hash.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/crypto_hash.c new file mode 100644 index 0000000..855c560 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/crypto_hash.c @@ -0,0 +1,20 @@ + +#include "crypto_hash.h" + +size_t +crypto_hash_bytes(void) +{ + return crypto_hash_BYTES; +} + +int +crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ + return crypto_hash_sha512(out, in, inlen); +} + +const char * +crypto_hash_primitive(void) { + return crypto_hash_PRIMITIVE; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c new file mode 100644 index 0000000..394c391 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c @@ -0,0 +1,256 @@ + +/*- + * Copyright 2005,2007,2009 Colin Percival + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +#include "crypto_hash_sha256.h" +#include "private/common.h" +#include "utils.h" + +static void +be32enc_vect(unsigned char *dst, const uint32_t *src, size_t len) +{ + size_t i; + + for (i = 0; i < len / 4; i++) { + STORE32_BE(dst + i * 4, src[i]); + } +} + +static void +be32dec_vect(uint32_t *dst, const unsigned char *src, size_t len) +{ + size_t i; + + for (i = 0; i < len / 4; i++) { + dst[i] = LOAD32_BE(src + i * 4); + } +} + +static const uint32_t Krnd[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +#define Ch(x, y, z) ((x & (y ^ z)) ^ z) +#define Maj(x, y, z) ((x & (y | z)) | (y & z)) +#define SHR(x, n) (x >> n) +#define ROTR(x, n) ROTR32(x, n) +#define S0(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) +#define S1(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) +#define s0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) +#define s1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) + +#define RND(a, b, c, d, e, f, g, h, k) \ + h += S1(e) + Ch(e, f, g) + k; \ + d += h; \ + h += S0(a) + Maj(a, b, c); + +#define RNDr(S, W, i, ii) \ + RND(S[(64 - i) % 8], S[(65 - i) % 8], S[(66 - i) % 8], S[(67 - i) % 8], \ + S[(68 - i) % 8], S[(69 - i) % 8], S[(70 - i) % 8], S[(71 - i) % 8], \ + W[i + ii] + Krnd[i + ii]) + +#define MSCH(W, ii, i) \ + W[i + ii + 16] = \ + s1(W[i + ii + 14]) + W[i + ii + 9] + s0(W[i + ii + 1]) + W[i + ii] + +static void +SHA256_Transform(uint32_t state[8], const uint8_t block[64], uint32_t W[64], + uint32_t S[8]) +{ + int i; + + be32dec_vect(W, block, 64); + memcpy(S, state, 32); + for (i = 0; i < 64; i += 16) { + RNDr(S, W, 0, i); + RNDr(S, W, 1, i); + RNDr(S, W, 2, i); + RNDr(S, W, 3, i); + RNDr(S, W, 4, i); + RNDr(S, W, 5, i); + RNDr(S, W, 6, i); + RNDr(S, W, 7, i); + RNDr(S, W, 8, i); + RNDr(S, W, 9, i); + RNDr(S, W, 10, i); + RNDr(S, W, 11, i); + RNDr(S, W, 12, i); + RNDr(S, W, 13, i); + RNDr(S, W, 14, i); + RNDr(S, W, 15, i); + if (i == 48) { + break; + } + MSCH(W, 0, i); + MSCH(W, 1, i); + MSCH(W, 2, i); + MSCH(W, 3, i); + MSCH(W, 4, i); + MSCH(W, 5, i); + MSCH(W, 6, i); + MSCH(W, 7, i); + MSCH(W, 8, i); + MSCH(W, 9, i); + MSCH(W, 10, i); + MSCH(W, 11, i); + MSCH(W, 12, i); + MSCH(W, 13, i); + MSCH(W, 14, i); + MSCH(W, 15, i); + } + for (i = 0; i < 8; i++) { + state[i] += S[i]; + } +} + +static const uint8_t PAD[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +static void +SHA256_Pad(crypto_hash_sha256_state *state, uint32_t tmp32[64 + 8]) +{ + unsigned int r; + unsigned int i; + + ACQUIRE_FENCE; + r = (unsigned int) ((state->count >> 3) & 0x3f); + if (r < 56) { + for (i = 0; i < 56 - r; i++) { + state->buf[r + i] = PAD[i]; + } + } else { + for (i = 0; i < 64 - r; i++) { + state->buf[r + i] = PAD[i]; + } + SHA256_Transform(state->state, state->buf, &tmp32[0], &tmp32[64]); + memset(&state->buf[0], 0, 56); + } + STORE64_BE(&state->buf[56], state->count); + SHA256_Transform(state->state, state->buf, &tmp32[0], &tmp32[64]); +} + +int +crypto_hash_sha256_init(crypto_hash_sha256_state *state) +{ + static const uint32_t sha256_initial_state[8] = { 0x6a09e667, 0xbb67ae85, + 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, + 0x1f83d9ab, 0x5be0cd19 }; + + state->count = (uint64_t) 0U; + memcpy(state->state, sha256_initial_state, sizeof sha256_initial_state); + + return 0; +} + +int +crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, unsigned long long inlen) +{ + uint32_t tmp32[64 + 8]; + unsigned long long i; + unsigned long long r; + + if (inlen <= 0U) { + return 0; + } + ACQUIRE_FENCE; + r = (unsigned long long) ((state->count >> 3) & 0x3f); + + state->count += ((uint64_t) inlen) << 3; + if (inlen < 64 - r) { + for (i = 0; i < inlen; i++) { + state->buf[r + i] = in[i]; + } + return 0; + } + for (i = 0; i < 64 - r; i++) { + state->buf[r + i] = in[i]; + } + SHA256_Transform(state->state, state->buf, &tmp32[0], &tmp32[64]); + in += 64 - r; + inlen -= 64 - r; + + while (inlen >= 64) { + SHA256_Transform(state->state, in, &tmp32[0], &tmp32[64]); + in += 64; + inlen -= 64; + } + inlen &= 63; + for (i = 0; i < inlen; i++) { + state->buf[i] = in[i]; + } + sodium_memzero((void *) tmp32, sizeof tmp32); + + return 0; +} + +int +crypto_hash_sha256_final(crypto_hash_sha256_state *state, unsigned char *out) +{ + uint32_t tmp32[64 + 8]; + + SHA256_Pad(state, tmp32); + be32enc_vect(out, state->state, 32); + sodium_memzero((void *) tmp32, sizeof tmp32); + sodium_memzero((void *) state, sizeof *state); + + return 0; +} + +int +crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ + crypto_hash_sha256_state state; + + crypto_hash_sha256_init(&state); + crypto_hash_sha256_update(&state, in, inlen); + crypto_hash_sha256_final(&state, out); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256.c new file mode 100644 index 0000000..e729c81 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256.c @@ -0,0 +1,13 @@ +#include "crypto_hash_sha256.h" + +size_t +crypto_hash_sha256_bytes(void) +{ + return crypto_hash_sha256_BYTES; +} + +size_t +crypto_hash_sha256_statebytes(void) +{ + return sizeof(crypto_hash_sha256_state); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c new file mode 100644 index 0000000..a36841b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c @@ -0,0 +1,284 @@ + +/*- + * Copyright 2005,2007,2009 Colin Percival + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +#include "crypto_hash_sha512.h" +#include "private/common.h" +#include "utils.h" + +static void +be64enc_vect(unsigned char *dst, const uint64_t *src, size_t len) +{ + size_t i; + + for (i = 0; i < len / 8; i++) { + STORE64_BE(dst + i * 8, src[i]); + } +} + +static void +be64dec_vect(uint64_t *dst, const unsigned char *src, size_t len) +{ + size_t i; + + for (i = 0; i < len / 8; i++) { + dst[i] = LOAD64_BE(src + i * 8); + } +} + +static const uint64_t Krnd[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, + 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, 0xd807aa98a3030242ULL, + 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, + 0xc19bf174cf692694ULL, 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL, + 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, + 0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, 0x27b70a8546d22ffcULL, + 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, + 0x92722c851482353bULL, 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL, + 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, + 0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, 0x748f82ee5defb2fcULL, + 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, + 0xc67178f2e372532bULL, 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL, + 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, + 0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +#define Ch(x, y, z) ((x & (y ^ z)) ^ z) +#define Maj(x, y, z) ((x & (y | z)) | (y & z)) +#define SHR(x, n) (x >> n) +#define ROTR(x, n) ROTR64(x, n) +#define S0(x) (ROTR(x, 28) ^ ROTR(x, 34) ^ ROTR(x, 39)) +#define S1(x) (ROTR(x, 14) ^ ROTR(x, 18) ^ ROTR(x, 41)) +#define s0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x, 7)) +#define s1(x) (ROTR(x, 19) ^ ROTR(x, 61) ^ SHR(x, 6)) + +#define RND(a, b, c, d, e, f, g, h, k) \ + h += S1(e) + Ch(e, f, g) + k; \ + d += h; \ + h += S0(a) + Maj(a, b, c); + +#define RNDr(S, W, i, ii) \ + RND(S[(80 - i) % 8], S[(81 - i) % 8], S[(82 - i) % 8], S[(83 - i) % 8], \ + S[(84 - i) % 8], S[(85 - i) % 8], S[(86 - i) % 8], S[(87 - i) % 8], \ + W[i + ii] + Krnd[i + ii]) + +#define MSCH(W, ii, i) \ + W[i + ii + 16] = \ + s1(W[i + ii + 14]) + W[i + ii + 9] + s0(W[i + ii + 1]) + W[i + ii] + +static void +SHA512_Transform(uint64_t *state, const uint8_t block[128], uint64_t W[80], + uint64_t S[8]) +{ + int i; + + be64dec_vect(W, block, 128); + memcpy(S, state, 64); + for (i = 0; i < 80; i += 16) { + RNDr(S, W, 0, i); + RNDr(S, W, 1, i); + RNDr(S, W, 2, i); + RNDr(S, W, 3, i); + RNDr(S, W, 4, i); + RNDr(S, W, 5, i); + RNDr(S, W, 6, i); + RNDr(S, W, 7, i); + RNDr(S, W, 8, i); + RNDr(S, W, 9, i); + RNDr(S, W, 10, i); + RNDr(S, W, 11, i); + RNDr(S, W, 12, i); + RNDr(S, W, 13, i); + RNDr(S, W, 14, i); + RNDr(S, W, 15, i); + if (i == 64) { + break; + } + MSCH(W, 0, i); + MSCH(W, 1, i); + MSCH(W, 2, i); + MSCH(W, 3, i); + MSCH(W, 4, i); + MSCH(W, 5, i); + MSCH(W, 6, i); + MSCH(W, 7, i); + MSCH(W, 8, i); + MSCH(W, 9, i); + MSCH(W, 10, i); + MSCH(W, 11, i); + MSCH(W, 12, i); + MSCH(W, 13, i); + MSCH(W, 14, i); + MSCH(W, 15, i); + } + for (i = 0; i < 8; i++) { + state[i] += S[i]; + } +} + +static const uint8_t PAD[128] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static void +SHA512_Pad(crypto_hash_sha512_state *state, uint64_t tmp64[80 + 8]) +{ + unsigned int r; + unsigned int i; + + ACQUIRE_FENCE; + r = (unsigned int) ((state->count[1] >> 3) & 0x7f); + if (r < 112) { + for (i = 0; i < 112 - r; i++) { + state->buf[r + i] = PAD[i]; + } + } else { + for (i = 0; i < 128 - r; i++) { + state->buf[r + i] = PAD[i]; + } + SHA512_Transform(state->state, state->buf, &tmp64[0], &tmp64[80]); + memset(&state->buf[0], 0, 112); + } + be64enc_vect(&state->buf[112], state->count, 16); + SHA512_Transform(state->state, state->buf, &tmp64[0], &tmp64[80]); +} + +int +crypto_hash_sha512_init(crypto_hash_sha512_state *state) +{ + static const uint64_t sha512_initial_state[8] = { + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL + }; + + state->count[0] = state->count[1] = (uint64_t) 0U; + memcpy(state->state, sha512_initial_state, sizeof sha512_initial_state); + + return 0; +} + +int +crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, unsigned long long inlen) +{ + uint64_t tmp64[80 + 8]; + uint64_t bitlen[2]; + unsigned long long i; + unsigned long long r; + + if (inlen <= 0U) { + return 0; + } + ACQUIRE_FENCE; + r = (unsigned long long) ((state->count[1] >> 3) & 0x7f); + + bitlen[1] = ((uint64_t) inlen) << 3; + bitlen[0] = ((uint64_t) inlen) >> 61; + /* LCOV_EXCL_START */ + if ((state->count[1] += bitlen[1]) < bitlen[1]) { + state->count[0]++; + } + /* LCOV_EXCL_STOP */ + state->count[0] += bitlen[0]; + if (inlen < 128 - r) { + for (i = 0; i < inlen; i++) { + state->buf[r + i] = in[i]; + } + return 0; + } + for (i = 0; i < 128 - r; i++) { + state->buf[r + i] = in[i]; + } + SHA512_Transform(state->state, state->buf, &tmp64[0], &tmp64[80]); + in += 128 - r; + inlen -= 128 - r; + + while (inlen >= 128) { + SHA512_Transform(state->state, in, &tmp64[0], &tmp64[80]); + in += 128; + inlen -= 128; + } + inlen &= 127; + for (i = 0; i < inlen; i++) { + state->buf[i] = in[i]; + } + sodium_memzero((void *) tmp64, sizeof tmp64); + + return 0; +} + +int +crypto_hash_sha512_final(crypto_hash_sha512_state *state, unsigned char *out) +{ + uint64_t tmp64[80 + 8]; + + SHA512_Pad(state, tmp64); + be64enc_vect(out, state->state, 64); + sodium_memzero((void *) tmp64, sizeof tmp64); + sodium_memzero((void *) state, sizeof *state); + + return 0; +} + +int +crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ + crypto_hash_sha512_state state; + + crypto_hash_sha512_init(&state); + crypto_hash_sha512_update(&state, in, inlen); + crypto_hash_sha512_final(&state, out); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512.c new file mode 100644 index 0000000..ba842b8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512.c @@ -0,0 +1,13 @@ +#include "crypto_hash_sha512.h" + +size_t +crypto_hash_sha512_bytes(void) +{ + return crypto_hash_sha512_BYTES; +} + +size_t +crypto_hash_sha512_statebytes(void) +{ + return sizeof(crypto_hash_sha512_state); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c new file mode 100644 index 0000000..2a690c9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c @@ -0,0 +1,52 @@ +#include + +#include "crypto_kdf_blake2b.h" +#include "crypto_generichash_blake2b.h" +#include "private/common.h" + +size_t +crypto_kdf_blake2b_bytes_min(void) +{ + return crypto_kdf_blake2b_BYTES_MIN; +} + +size_t +crypto_kdf_blake2b_bytes_max(void) +{ + return crypto_kdf_blake2b_BYTES_MAX; +} + +size_t +crypto_kdf_blake2b_contextbytes(void) +{ + return crypto_kdf_blake2b_CONTEXTBYTES; +} + +size_t +crypto_kdf_blake2b_keybytes(void) +{ + return crypto_kdf_blake2b_KEYBYTES; +} + +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) +{ + unsigned char ctx_padded[crypto_generichash_blake2b_PERSONALBYTES]; + unsigned char salt[crypto_generichash_blake2b_SALTBYTES]; + + memcpy(ctx_padded, ctx, crypto_kdf_blake2b_CONTEXTBYTES); + memset(ctx_padded + crypto_kdf_blake2b_CONTEXTBYTES, 0, sizeof ctx_padded - crypto_kdf_blake2b_CONTEXTBYTES); + STORE64_LE(salt, subkey_id); + memset(salt + 8, 0, (sizeof salt) - 8); + if (subkey_len < crypto_kdf_blake2b_BYTES_MIN || + subkey_len > crypto_kdf_blake2b_BYTES_MAX) { + errno = EINVAL; + return -1; + } + return crypto_generichash_blake2b_salt_personal(subkey, subkey_len, + NULL, 0, + key, crypto_kdf_blake2b_KEYBYTES, + salt, ctx_padded); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/crypto_kdf.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/crypto_kdf.c new file mode 100644 index 0000000..b215d99 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/crypto_kdf.c @@ -0,0 +1,49 @@ + +#include "crypto_kdf.h" +#include "randombytes.h" + +const char * +crypto_kdf_primitive(void) +{ + return crypto_kdf_PRIMITIVE; +} + +size_t +crypto_kdf_bytes_min(void) +{ + return crypto_kdf_BYTES_MIN; +} + +size_t +crypto_kdf_bytes_max(void) +{ + return crypto_kdf_BYTES_MAX; +} + +size_t +crypto_kdf_contextbytes(void) +{ + return crypto_kdf_CONTEXTBYTES; +} + +size_t +crypto_kdf_keybytes(void) +{ + return crypto_kdf_KEYBYTES; +} + +int +crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) +{ + return crypto_kdf_blake2b_derive_from_key(subkey, subkey_len, + subkey_id, ctx, key); +} + +void +crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) +{ + randombytes_buf(k, crypto_kdf_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha256.c new file mode 100644 index 0000000..8eb7c87 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha256.c @@ -0,0 +1,123 @@ +#include +#include + +#include "crypto_auth_hmacsha256.h" +#include "crypto_kdf.h" +#include "crypto_kdf_hkdf_sha256.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_kdf_hkdf_sha256_extract_init(crypto_kdf_hkdf_sha256_state *state, + const unsigned char *salt, size_t salt_len) +{ + return crypto_auth_hmacsha256_init(&state->st, salt, salt_len); +} + +int +crypto_kdf_hkdf_sha256_extract_update(crypto_kdf_hkdf_sha256_state *state, + const unsigned char *ikm, size_t ikm_len) +{ + return crypto_auth_hmacsha256_update(&state->st, ikm, ikm_len); +} + +int +crypto_kdf_hkdf_sha256_extract_final(crypto_kdf_hkdf_sha256_state *state, + unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]) +{ + crypto_auth_hmacsha256_final(&state->st, prk); + sodium_memzero(state, sizeof state); + + return 0; +} + +int +crypto_kdf_hkdf_sha256_extract( + unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES], + const unsigned char *salt, size_t salt_len, const unsigned char *ikm, + size_t ikm_len) +{ + crypto_kdf_hkdf_sha256_state state; + + crypto_kdf_hkdf_sha256_extract_init(&state, salt, salt_len); + crypto_kdf_hkdf_sha256_extract_update(&state, ikm, ikm_len); + + return crypto_kdf_hkdf_sha256_extract_final(&state, prk); +} + +void +crypto_kdf_hkdf_sha256_keygen(unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]) +{ + randombytes_buf(prk, crypto_kdf_hkdf_sha256_KEYBYTES); +} + +int +crypto_kdf_hkdf_sha256_expand(unsigned char *out, size_t out_len, + const char *ctx, size_t ctx_len, + const unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]) +{ + crypto_auth_hmacsha256_state st; + unsigned char tmp[crypto_auth_hmacsha256_BYTES]; + size_t i; + size_t left; + unsigned char counter = 1U; + + if (out_len > crypto_kdf_hkdf_sha256_BYTES_MAX) { + errno = EINVAL; + return -1; + } + for (i = (size_t) 0U; i + crypto_auth_hmacsha256_BYTES <= out_len; + i += crypto_auth_hmacsha256_BYTES) { + crypto_auth_hmacsha256_init(&st, prk, crypto_kdf_hkdf_sha256_KEYBYTES); + if (i != (size_t) 0U) { + crypto_auth_hmacsha256_update(&st, + &out[i - crypto_auth_hmacsha256_BYTES], + crypto_auth_hmacsha256_BYTES); + } + crypto_auth_hmacsha256_update(&st, + (const unsigned char *) ctx, ctx_len); + crypto_auth_hmacsha256_update(&st, &counter, (size_t) 1U); + crypto_auth_hmacsha256_final(&st, &out[i]); + counter++; + } + if ((left = out_len & (crypto_auth_hmacsha256_BYTES - 1U)) != (size_t) 0U) { + crypto_auth_hmacsha256_init(&st, prk, crypto_kdf_hkdf_sha256_KEYBYTES); + if (i != (size_t) 0U) { + crypto_auth_hmacsha256_update(&st, + &out[i - crypto_auth_hmacsha256_BYTES], + crypto_auth_hmacsha256_BYTES); + } + crypto_auth_hmacsha256_update(&st, + (const unsigned char *) ctx, ctx_len); + crypto_auth_hmacsha256_update(&st, &counter, (size_t) 1U); + crypto_auth_hmacsha256_final(&st, tmp); + memcpy(&out[i], tmp, left); + sodium_memzero(tmp, sizeof tmp); + } + sodium_memzero(&st, sizeof st); + + return 0; +} + +size_t +crypto_kdf_hkdf_sha256_keybytes(void) +{ + return crypto_kdf_hkdf_sha256_KEYBYTES; +} + +size_t +crypto_kdf_hkdf_sha256_bytes_min(void) +{ + return crypto_kdf_hkdf_sha256_BYTES_MIN; +} + +size_t +crypto_kdf_hkdf_sha256_bytes_max(void) +{ + return crypto_kdf_hkdf_sha256_BYTES_MAX; +} + +size_t crypto_kdf_hkdf_sha256_statebytes(void) +{ + return sizeof(crypto_kdf_hkdf_sha256_state); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha512.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha512.c new file mode 100644 index 0000000..51d9161 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha512.c @@ -0,0 +1,118 @@ +#include +#include + +#include "crypto_auth_hmacsha512.h" +#include "crypto_kdf.h" +#include "crypto_kdf_hkdf_sha512.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_kdf_hkdf_sha512_extract_init(crypto_kdf_hkdf_sha512_state *state, + const unsigned char *salt, size_t salt_len) +{ + return crypto_auth_hmacsha512_init(&state->st, salt, salt_len); +} + +int +crypto_kdf_hkdf_sha512_extract_update(crypto_kdf_hkdf_sha512_state *state, + const unsigned char *ikm, size_t ikm_len) +{ + return crypto_auth_hmacsha512_update(&state->st, ikm, ikm_len); +} + +int +crypto_kdf_hkdf_sha512_extract_final(crypto_kdf_hkdf_sha512_state *state, + unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES]) +{ + crypto_auth_hmacsha512_final(&state->st, prk); + sodium_memzero(state, sizeof state); + + return 0; +} + +int +crypto_kdf_hkdf_sha512_extract( + unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES], + const unsigned char *salt, size_t salt_len, const unsigned char *ikm, + size_t ikm_len) +{ + crypto_kdf_hkdf_sha512_state state; + + crypto_kdf_hkdf_sha512_extract_init(&state, salt, salt_len); + crypto_kdf_hkdf_sha512_extract_update(&state, ikm, ikm_len); + + return crypto_kdf_hkdf_sha512_extract_final(&state, prk); +} + +void +crypto_kdf_hkdf_sha512_keygen(unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES]) +{ + randombytes_buf(prk, crypto_kdf_hkdf_sha512_KEYBYTES); +} + +int +crypto_kdf_hkdf_sha512_expand(unsigned char *out, size_t out_len, + const char *ctx, size_t ctx_len, + const unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES]) +{ + crypto_auth_hmacsha512_state st; + unsigned char tmp[crypto_auth_hmacsha512_BYTES]; + size_t i; + size_t left; + unsigned char counter = 1U; + + if (out_len > crypto_kdf_hkdf_sha512_BYTES_MAX) { + errno = EINVAL; + return -1; + } + for (i = (size_t) 0U; i + crypto_auth_hmacsha512_BYTES <= out_len; + i += crypto_auth_hmacsha512_BYTES) { + crypto_auth_hmacsha512_init(&st, prk, crypto_kdf_hkdf_sha512_KEYBYTES); + if (i != (size_t) 0U) { + crypto_auth_hmacsha512_update(&st, + &out[i - crypto_auth_hmacsha512_BYTES], + crypto_auth_hmacsha512_BYTES); + } + crypto_auth_hmacsha512_update(&st, + (const unsigned char *) ctx, ctx_len); + crypto_auth_hmacsha512_update(&st, &counter, (size_t) 1U); + crypto_auth_hmacsha512_final(&st, &out[i]); + counter++; + } + if ((left = out_len & (crypto_auth_hmacsha512_BYTES - 1U)) != (size_t) 0U) { + crypto_auth_hmacsha512_init(&st, prk, crypto_kdf_hkdf_sha512_KEYBYTES); + if (i != (size_t) 0U) { + crypto_auth_hmacsha512_update(&st, + &out[i - crypto_auth_hmacsha512_BYTES], + crypto_auth_hmacsha512_BYTES); + } + crypto_auth_hmacsha512_update(&st, + (const unsigned char *) ctx, ctx_len); + crypto_auth_hmacsha512_update(&st, &counter, (size_t) 1U); + crypto_auth_hmacsha512_final(&st, tmp); + memcpy(&out[i], tmp, left); + sodium_memzero(tmp, sizeof tmp); + } + sodium_memzero(&st, sizeof st); + + return 0; +} + +size_t +crypto_kdf_hkdf_sha512_keybytes(void) +{ + return crypto_kdf_hkdf_sha512_KEYBYTES; +} + +size_t +crypto_kdf_hkdf_sha512_bytes_min(void) +{ + return crypto_kdf_hkdf_sha512_BYTES_MIN; +} + +size_t +crypto_kdf_hkdf_sha512_bytes_max(void) +{ + return crypto_kdf_hkdf_sha512_BYTES_MAX; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_kx/crypto_kx.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kx/crypto_kx.c new file mode 100644 index 0000000..9f0c3ae --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_kx/crypto_kx.c @@ -0,0 +1,143 @@ + +#include + +#include "core.h" +#include "crypto_generichash.h" +#include "crypto_kx.h" +#include "crypto_scalarmult.h" +#include "private/common.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) +{ + crypto_generichash(sk, crypto_kx_SECRETKEYBYTES, + seed, crypto_kx_SEEDBYTES, NULL, 0); + return crypto_scalarmult_base(pk, sk); +} + +int +crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) +{ + COMPILER_ASSERT(crypto_kx_SECRETKEYBYTES == crypto_scalarmult_SCALARBYTES); + COMPILER_ASSERT(crypto_kx_PUBLICKEYBYTES == crypto_scalarmult_BYTES); + + randombytes_buf(sk, crypto_kx_SECRETKEYBYTES); + return crypto_scalarmult_base(pk, sk); +} + +int +crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) +{ + crypto_generichash_state h; + unsigned char q[crypto_scalarmult_BYTES]; + unsigned char keys[2 * crypto_kx_SESSIONKEYBYTES]; + int i; + + if (rx == NULL) { + rx = tx; + } + if (tx == NULL) { + tx = rx; + } + if (rx == NULL) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + if (crypto_scalarmult(q, client_sk, server_pk) != 0) { + return -1; + } + COMPILER_ASSERT(sizeof keys <= crypto_generichash_BYTES_MAX); + crypto_generichash_init(&h, NULL, 0U, sizeof keys); + crypto_generichash_update(&h, q, crypto_scalarmult_BYTES); + sodium_memzero(q, sizeof q); + crypto_generichash_update(&h, client_pk, crypto_kx_PUBLICKEYBYTES); + crypto_generichash_update(&h, server_pk, crypto_kx_PUBLICKEYBYTES); + crypto_generichash_final(&h, keys, sizeof keys); + sodium_memzero(&h, sizeof h); + for (i = 0; i < crypto_kx_SESSIONKEYBYTES; i++) { + rx[i] = keys[i]; /* rx cannot be NULL */ + tx[i] = keys[i + crypto_kx_SESSIONKEYBYTES]; /* tx cannot be NULL */ + } + sodium_memzero(keys, sizeof keys); + + return 0; +} + +int +crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) +{ + crypto_generichash_state h; + unsigned char q[crypto_scalarmult_BYTES]; + unsigned char keys[2 * crypto_kx_SESSIONKEYBYTES]; + int i; + + if (rx == NULL) { + rx = tx; + } + if (tx == NULL) { + tx = rx; + } + if (rx == NULL) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + if (crypto_scalarmult(q, server_sk, client_pk) != 0) { + return -1; + } + COMPILER_ASSERT(sizeof keys <= crypto_generichash_BYTES_MAX); + crypto_generichash_init(&h, NULL, 0U, sizeof keys); + crypto_generichash_update(&h, q, crypto_scalarmult_BYTES); + sodium_memzero(q, sizeof q); + crypto_generichash_update(&h, client_pk, crypto_kx_PUBLICKEYBYTES); + crypto_generichash_update(&h, server_pk, crypto_kx_PUBLICKEYBYTES); + crypto_generichash_final(&h, keys, sizeof keys); + sodium_memzero(&h, sizeof h); + for (i = 0; i < crypto_kx_SESSIONKEYBYTES; i++) { + tx[i] = keys[i]; + rx[i] = keys[i + crypto_kx_SESSIONKEYBYTES]; + } + sodium_memzero(keys, sizeof keys); + + return 0; +} + +size_t +crypto_kx_publickeybytes(void) +{ + return crypto_kx_PUBLICKEYBYTES; +} + +size_t +crypto_kx_secretkeybytes(void) +{ + return crypto_kx_SECRETKEYBYTES; +} + +size_t +crypto_kx_seedbytes(void) +{ + return crypto_kx_SEEDBYTES; +} + +size_t +crypto_kx_sessionkeybytes(void) +{ + return crypto_kx_SESSIONKEYBYTES; +} + +const char * +crypto_kx_primitive(void) +{ + return crypto_kx_PRIMITIVE; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c new file mode 100644 index 0000000..93567aa --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c @@ -0,0 +1,71 @@ + +#include "crypto_onetimeauth.h" +#include "randombytes.h" + +size_t +crypto_onetimeauth_statebytes(void) +{ + return sizeof(crypto_onetimeauth_state); +} + +size_t +crypto_onetimeauth_bytes(void) +{ + return crypto_onetimeauth_BYTES; +} + +size_t +crypto_onetimeauth_keybytes(void) +{ + return crypto_onetimeauth_KEYBYTES; +} + +int +crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_onetimeauth_poly1305(out, in, inlen, k); +} + +int +crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_onetimeauth_poly1305_verify(h, in, inlen, k); +} + +int +crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) +{ + return crypto_onetimeauth_poly1305_init + ((crypto_onetimeauth_poly1305_state *) state, key); +} + +int +crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return crypto_onetimeauth_poly1305_update + ((crypto_onetimeauth_poly1305_state *) state, in, inlen); +} + +int +crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) +{ + return crypto_onetimeauth_poly1305_final + ((crypto_onetimeauth_poly1305_state *) state, out); +} + +const char * +crypto_onetimeauth_primitive(void) +{ + return crypto_onetimeauth_PRIMITIVE; +} + +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) +{ + randombytes_buf(k, crypto_onetimeauth_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c new file mode 100644 index 0000000..e798072 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c @@ -0,0 +1,124 @@ + +#include "poly1305_donna.h" +#include "crypto_verify_16.h" +#include "private/common.h" +#include "utils.h" + +#ifdef HAVE_TI_MODE +#include "poly1305_donna64.h" +#else +#include "poly1305_donna32.h" +#endif +#include "../onetimeauth_poly1305.h" + +static void +poly1305_update(poly1305_state_internal_t *st, const unsigned char *m, + unsigned long long bytes) +{ + unsigned long long i; + + /* handle leftover */ + if (st->leftover) { + unsigned long long want = (poly1305_block_size - st->leftover); + + if (want > bytes) { + want = bytes; + } + for (i = 0; i < want; i++) { + st->buffer[st->leftover + i] = m[i]; + } + bytes -= want; + m += want; + st->leftover += want; + if (st->leftover < poly1305_block_size) { + return; + } + poly1305_blocks(st, st->buffer, poly1305_block_size); + st->leftover = 0; + } + + /* process full blocks */ + if (bytes >= poly1305_block_size) { + unsigned long long want = (bytes & ~(poly1305_block_size - 1)); + + poly1305_blocks(st, m, want); + m += want; + bytes -= want; + } + + /* store leftover */ + if (bytes) { + for (i = 0; i < bytes; i++) { + st->buffer[st->leftover + i] = m[i]; + } + st->leftover += bytes; + } +} + +static int +crypto_onetimeauth_poly1305_donna(unsigned char *out, const unsigned char *m, + unsigned long long inlen, + const unsigned char *key) +{ + CRYPTO_ALIGN(64) poly1305_state_internal_t state; + + poly1305_init(&state, key); + poly1305_update(&state, m, inlen); + poly1305_finish(&state, out); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_donna_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) +{ + COMPILER_ASSERT(sizeof(crypto_onetimeauth_poly1305_state) >= + sizeof(poly1305_state_internal_t)); + poly1305_init((poly1305_state_internal_t *) (void *) state, key); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_donna_update( + crypto_onetimeauth_poly1305_state *state, const unsigned char *in, + unsigned long long inlen) +{ + poly1305_update((poly1305_state_internal_t *) (void *) state, in, inlen); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_donna_final( + crypto_onetimeauth_poly1305_state *state, unsigned char *out) +{ + poly1305_finish((poly1305_state_internal_t *) (void *) state, out); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_donna_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + unsigned char correct[16]; + + crypto_onetimeauth_poly1305_donna(correct, in, inlen, k); + + return crypto_verify_16(h, correct); +} + +struct crypto_onetimeauth_poly1305_implementation + crypto_onetimeauth_poly1305_donna_implementation = { + SODIUM_C99(.onetimeauth =) crypto_onetimeauth_poly1305_donna, + SODIUM_C99(.onetimeauth_verify =) + crypto_onetimeauth_poly1305_donna_verify, + SODIUM_C99(.onetimeauth_init =) crypto_onetimeauth_poly1305_donna_init, + SODIUM_C99(.onetimeauth_update =) + crypto_onetimeauth_poly1305_donna_update, + SODIUM_C99(.onetimeauth_final =) crypto_onetimeauth_poly1305_donna_final + }; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h new file mode 100644 index 0000000..d6474b3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h @@ -0,0 +1,12 @@ +#ifndef poly1305_donna_H +#define poly1305_donna_H + +#include + +#include "../onetimeauth_poly1305.h" +#include "crypto_onetimeauth_poly1305.h" + +extern struct crypto_onetimeauth_poly1305_implementation + crypto_onetimeauth_poly1305_donna_implementation; + +#endif /* poly1305_donna_H */ diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h new file mode 100644 index 0000000..ed52500 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h @@ -0,0 +1,235 @@ +/* + poly1305 implementation using 32 bit * 32 bit = 64 bit multiplication + and 64 bit addition +*/ + +#if defined(_MSC_VER) +# define POLY1305_NOINLINE __declspec(noinline) +#elif defined(__clang__) || defined(__GNUC__) +# define POLY1305_NOINLINE __attribute__((noinline)) +#else +# define POLY1305_NOINLINE +#endif + +#include "private/common.h" + +#define poly1305_block_size 16 + +/* 17 + sizeof(unsigned long long) + 14*sizeof(unsigned long) */ +typedef struct poly1305_state_internal_t { + unsigned long r[5]; + unsigned long h[5]; + unsigned long pad[4]; + unsigned long long leftover; + unsigned char buffer[poly1305_block_size]; + unsigned char final; +} poly1305_state_internal_t; + +static void +poly1305_init(poly1305_state_internal_t *st, const unsigned char key[32]) +{ + /* r &= 0xffffffc0ffffffc0ffffffc0fffffff - wiped after finalization */ + st->r[0] = (LOAD32_LE(&key[0])) & 0x3ffffff; + st->r[1] = (LOAD32_LE(&key[3]) >> 2) & 0x3ffff03; + st->r[2] = (LOAD32_LE(&key[6]) >> 4) & 0x3ffc0ff; + st->r[3] = (LOAD32_LE(&key[9]) >> 6) & 0x3f03fff; + st->r[4] = (LOAD32_LE(&key[12]) >> 8) & 0x00fffff; + + /* h = 0 */ + st->h[0] = 0; + st->h[1] = 0; + st->h[2] = 0; + st->h[3] = 0; + st->h[4] = 0; + + /* save pad for later */ + st->pad[0] = LOAD32_LE(&key[16]); + st->pad[1] = LOAD32_LE(&key[20]); + st->pad[2] = LOAD32_LE(&key[24]); + st->pad[3] = LOAD32_LE(&key[28]); + + st->leftover = 0; + st->final = 0; +} + +static void +poly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, + unsigned long long bytes) +{ + const unsigned long hibit = (st->final) ? 0UL : (1UL << 24); /* 1 << 128 */ + unsigned long r0, r1, r2, r3, r4; + unsigned long s1, s2, s3, s4; + unsigned long h0, h1, h2, h3, h4; + unsigned long long d0, d1, d2, d3, d4; + unsigned long c; + + r0 = st->r[0]; + r1 = st->r[1]; + r2 = st->r[2]; + r3 = st->r[3]; + r4 = st->r[4]; + + s1 = r1 * 5; + s2 = r2 * 5; + s3 = r3 * 5; + s4 = r4 * 5; + + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + h3 = st->h[3]; + h4 = st->h[4]; + + while (bytes >= poly1305_block_size) { + /* h += m[i] */ + h0 += (LOAD32_LE(m + 0)) & 0x3ffffff; + h1 += (LOAD32_LE(m + 3) >> 2) & 0x3ffffff; + h2 += (LOAD32_LE(m + 6) >> 4) & 0x3ffffff; + h3 += (LOAD32_LE(m + 9) >> 6) & 0x3ffffff; + h4 += (LOAD32_LE(m + 12) >> 8) | hibit; + + /* h *= r */ + d0 = ((unsigned long long) h0 * r0) + ((unsigned long long) h1 * s4) + + ((unsigned long long) h2 * s3) + ((unsigned long long) h3 * s2) + + ((unsigned long long) h4 * s1); + d1 = ((unsigned long long) h0 * r1) + ((unsigned long long) h1 * r0) + + ((unsigned long long) h2 * s4) + ((unsigned long long) h3 * s3) + + ((unsigned long long) h4 * s2); + d2 = ((unsigned long long) h0 * r2) + ((unsigned long long) h1 * r1) + + ((unsigned long long) h2 * r0) + ((unsigned long long) h3 * s4) + + ((unsigned long long) h4 * s3); + d3 = ((unsigned long long) h0 * r3) + ((unsigned long long) h1 * r2) + + ((unsigned long long) h2 * r1) + ((unsigned long long) h3 * r0) + + ((unsigned long long) h4 * s4); + d4 = ((unsigned long long) h0 * r4) + ((unsigned long long) h1 * r3) + + ((unsigned long long) h2 * r2) + ((unsigned long long) h3 * r1) + + ((unsigned long long) h4 * r0); + + /* (partial) h %= p */ + c = (unsigned long) (d0 >> 26); + h0 = (unsigned long) d0 & 0x3ffffff; + d1 += c; + c = (unsigned long) (d1 >> 26); + h1 = (unsigned long) d1 & 0x3ffffff; + d2 += c; + c = (unsigned long) (d2 >> 26); + h2 = (unsigned long) d2 & 0x3ffffff; + d3 += c; + c = (unsigned long) (d3 >> 26); + h3 = (unsigned long) d3 & 0x3ffffff; + d4 += c; + c = (unsigned long) (d4 >> 26); + h4 = (unsigned long) d4 & 0x3ffffff; + h0 += c * 5; + c = (h0 >> 26); + h0 &= 0x3ffffff; + h1 += c; + + m += poly1305_block_size; + bytes -= poly1305_block_size; + } + + st->h[0] = h0; + st->h[1] = h1; + st->h[2] = h2; + st->h[3] = h3; + st->h[4] = h4; +} + +static POLY1305_NOINLINE void +poly1305_finish(poly1305_state_internal_t *st, unsigned char mac[16]) +{ + unsigned long h0, h1, h2, h3, h4, c; + unsigned long g0, g1, g2, g3, g4; + unsigned long long f; + unsigned long mask; + + /* process the remaining block */ + if (st->leftover) { + unsigned long long i = st->leftover; + + st->buffer[i++] = 1; + for (; i < poly1305_block_size; i++) { + st->buffer[i] = 0; + } + st->final = 1; + poly1305_blocks(st, st->buffer, poly1305_block_size); + } + + /* fully carry h */ + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + h3 = st->h[3]; + h4 = st->h[4]; + + c = h1 >> 26; + h1 = h1 & 0x3ffffff; + h2 += c; + c = h2 >> 26; + h2 = h2 & 0x3ffffff; + h3 += c; + c = h3 >> 26; + h3 = h3 & 0x3ffffff; + h4 += c; + c = h4 >> 26; + h4 = h4 & 0x3ffffff; + h0 += c * 5; + c = h0 >> 26; + h0 = h0 & 0x3ffffff; + h1 += c; + + /* compute h + -p */ + g0 = h0 + 5; + c = g0 >> 26; + g0 &= 0x3ffffff; + g1 = h1 + c; + c = g1 >> 26; + g1 &= 0x3ffffff; + g2 = h2 + c; + c = g2 >> 26; + g2 &= 0x3ffffff; + g3 = h3 + c; + c = g3 >> 26; + g3 &= 0x3ffffff; + g4 = h4 + c - (1UL << 26); + + /* select h if h < p, or h + -p if h >= p */ + mask = (g4 >> ((sizeof(unsigned long) * 8) - 1)) - 1; + g0 &= mask; + g1 &= mask; + g2 &= mask; + g3 &= mask; + g4 &= mask; + mask = ~mask; + + h0 = (h0 & mask) | g0; + h1 = (h1 & mask) | g1; + h2 = (h2 & mask) | g2; + h3 = (h3 & mask) | g3; + h4 = (h4 & mask) | g4; + + /* h = h % (2^128) */ + h0 = ((h0) | (h1 << 26)) & 0xffffffff; + h1 = ((h1 >> 6) | (h2 << 20)) & 0xffffffff; + h2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff; + h3 = ((h3 >> 18) | (h4 << 8)) & 0xffffffff; + + /* mac = (h + pad) % (2^128) */ + f = (unsigned long long) h0 + st->pad[0]; + h0 = (unsigned long) f; + f = (unsigned long long) h1 + st->pad[1] + (f >> 32); + h1 = (unsigned long) f; + f = (unsigned long long) h2 + st->pad[2] + (f >> 32); + h2 = (unsigned long) f; + f = (unsigned long long) h3 + st->pad[3] + (f >> 32); + h3 = (unsigned long) f; + + STORE32_LE(mac + 0, (uint32_t) h0); + STORE32_LE(mac + 4, (uint32_t) h1); + STORE32_LE(mac + 8, (uint32_t) h2); + STORE32_LE(mac + 12, (uint32_t) h3); + + /* zero out the state */ + sodium_memzero((void *) st, sizeof *st); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h new file mode 100644 index 0000000..046ab09 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h @@ -0,0 +1,221 @@ +/* + poly1305 implementation using 64 bit * 64 bit = 128 bit multiplication + and 128 bit addition +*/ + +#include "private/common.h" + +#define MUL(out, x, y) out = ((uint128_t) x * y) +#define ADD(out, in) out += in +#define ADDLO(out, in) out += in +#define SHR(in, shift) (unsigned long long) (in >> (shift)) +#define LO(in) (unsigned long long) (in) + +#if defined(_MSC_VER) +# define POLY1305_NOINLINE __declspec(noinline) +#elif defined(__clang__) || defined(__GNUC__) +# define POLY1305_NOINLINE __attribute__((noinline)) +#else +# define POLY1305_NOINLINE +#endif + +#define poly1305_block_size 16 + +/* 17 + sizeof(unsigned long long) + 8*sizeof(unsigned long long) */ +typedef struct poly1305_state_internal_t { + unsigned long long r[3]; + unsigned long long h[3]; + unsigned long long pad[2]; + unsigned long long leftover; + unsigned char buffer[poly1305_block_size]; + unsigned char final; +} poly1305_state_internal_t; + +static void +poly1305_init(poly1305_state_internal_t *st, const unsigned char key[32]) +{ + unsigned long long t0, t1; + + /* r &= 0xffffffc0ffffffc0ffffffc0fffffff */ + t0 = LOAD64_LE(&key[0]); + t1 = LOAD64_LE(&key[8]); + + /* wiped after finalization */ + st->r[0] = (t0) & 0xffc0fffffff; + st->r[1] = ((t0 >> 44) | (t1 << 20)) & 0xfffffc0ffff; + st->r[2] = ((t1 >> 24)) & 0x00ffffffc0f; + + /* h = 0 */ + st->h[0] = 0; + st->h[1] = 0; + st->h[2] = 0; + + /* save pad for later */ + st->pad[0] = LOAD64_LE(&key[16]); + st->pad[1] = LOAD64_LE(&key[24]); + + st->leftover = 0; + st->final = 0; +} + +static void +poly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, + unsigned long long bytes) +{ + const unsigned long long hibit = + (st->final) ? 0ULL : (1ULL << 40); /* 1 << 128 */ + unsigned long long r0, r1, r2; + unsigned long long s1, s2; + unsigned long long h0, h1, h2; + unsigned long long c; + uint128_t d0, d1, d2, d; + + r0 = st->r[0]; + r1 = st->r[1]; + r2 = st->r[2]; + + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + + s1 = r1 * (5 << 2); + s2 = r2 * (5 << 2); + + while (bytes >= poly1305_block_size) { + unsigned long long t0, t1; + + /* h += m[i] */ + t0 = LOAD64_LE(&m[0]); + t1 = LOAD64_LE(&m[8]); + + h0 += t0 & 0xfffffffffff; + h1 += ((t0 >> 44) | (t1 << 20)) & 0xfffffffffff; + h2 += (((t1 >> 24)) & 0x3ffffffffff) | hibit; + + /* h *= r */ + MUL(d0, h0, r0); + MUL(d, h1, s2); + ADD(d0, d); + MUL(d, h2, s1); + ADD(d0, d); + MUL(d1, h0, r1); + MUL(d, h1, r0); + ADD(d1, d); + MUL(d, h2, s2); + ADD(d1, d); + MUL(d2, h0, r2); + MUL(d, h1, r1); + ADD(d2, d); + MUL(d, h2, r0); + ADD(d2, d); + + /* (partial) h %= p */ + c = SHR(d0, 44); + h0 = LO(d0) & 0xfffffffffff; + ADDLO(d1, c); + c = SHR(d1, 44); + h1 = LO(d1) & 0xfffffffffff; + ADDLO(d2, c); + c = SHR(d2, 42); + h2 = LO(d2) & 0x3ffffffffff; + h0 += c * 5; + c = (h0 >> 44); + h0 &= 0xfffffffffff; + h1 += c; + + m += poly1305_block_size; + bytes -= poly1305_block_size; + } + + st->h[0] = h0; + st->h[1] = h1; + st->h[2] = h2; +} + +static POLY1305_NOINLINE void +poly1305_finish(poly1305_state_internal_t *st, unsigned char mac[16]) +{ + unsigned long long h0, h1, h2, c; + unsigned long long g0, g1, g2; + unsigned long long t0, t1; + unsigned long long mask; + + /* process the remaining block */ + if (st->leftover) { + unsigned long long i = st->leftover; + + st->buffer[i] = 1; + + for (i = i + 1; i < poly1305_block_size; i++) { + st->buffer[i] = 0; + } + st->final = 1; + poly1305_blocks(st, st->buffer, poly1305_block_size); + } + + /* fully carry h */ + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + + c = h1 >> 44; + h1 &= 0xfffffffffff; + h2 += c; + c = h2 >> 42; + h2 &= 0x3ffffffffff; + h0 += c * 5; + c = h0 >> 44; + h0 &= 0xfffffffffff; + h1 += c; + c = h1 >> 44; + h1 &= 0xfffffffffff; + h2 += c; + c = h2 >> 42; + h2 &= 0x3ffffffffff; + h0 += c * 5; + c = h0 >> 44; + h0 &= 0xfffffffffff; + h1 += c; + + /* compute h + -p */ + g0 = h0 + 5; + c = g0 >> 44; + g0 &= 0xfffffffffff; + g1 = h1 + c; + c = g1 >> 44; + g1 &= 0xfffffffffff; + g2 = h2 + c - (1ULL << 42); + + /* select h if h < p, or h + -p if h >= p */ + mask = (g2 >> ((sizeof(unsigned long long) * 8) - 1)) - 1; + g0 &= mask; + g1 &= mask; + g2 &= mask; + mask = ~mask; + h0 = (h0 & mask) | g0; + h1 = (h1 & mask) | g1; + h2 = (h2 & mask) | g2; + + /* h = (h + pad) */ + t0 = st->pad[0]; + t1 = st->pad[1]; + + h0 += ((t0) &0xfffffffffff); + c = (h0 >> 44); + h0 &= 0xfffffffffff; + h1 += (((t0 >> 44) | (t1 << 20)) & 0xfffffffffff) + c; + c = (h1 >> 44); + h1 &= 0xfffffffffff; + h2 += (((t1 >> 24)) & 0x3ffffffffff) + c; + h2 &= 0x3ffffffffff; + + /* mac = h % (2^128) */ + h0 = (h0) | (h1 << 44); + h1 = (h1 >> 20) | (h2 << 24); + + STORE64_LE(&mac[0], h0); + STORE64_LE(&mac[8], h1); + + /* zero out the state */ + sodium_memzero((void *) st, sizeof *st); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c new file mode 100644 index 0000000..d5e2efa --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c @@ -0,0 +1,90 @@ + +#include "onetimeauth_poly1305.h" +#include "crypto_onetimeauth_poly1305.h" +#include "private/common.h" +#include "private/implementations.h" +#include "randombytes.h" +#include "runtime.h" + +#include "donna/poly1305_donna.h" +#if defined(HAVE_TI_MODE) && defined(HAVE_EMMINTRIN_H) +# include "sse2/poly1305_sse2.h" +#endif + +static const crypto_onetimeauth_poly1305_implementation *implementation = + &crypto_onetimeauth_poly1305_donna_implementation; + +int +crypto_onetimeauth_poly1305(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return implementation->onetimeauth(out, in, inlen, k); +} + +int +crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + return implementation->onetimeauth_verify(h, in, inlen, k); +} + +int +crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) +{ + return implementation->onetimeauth_init(state, key); +} + +int +crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) +{ + return implementation->onetimeauth_update(state, in, inlen); +} + +int +crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) +{ + return implementation->onetimeauth_final(state, out); +} + +size_t +crypto_onetimeauth_poly1305_bytes(void) +{ + return crypto_onetimeauth_poly1305_BYTES; +} + +size_t +crypto_onetimeauth_poly1305_keybytes(void) +{ + return crypto_onetimeauth_poly1305_KEYBYTES; +} + +size_t +crypto_onetimeauth_poly1305_statebytes(void) +{ + return sizeof(crypto_onetimeauth_poly1305_state); +} + +void +crypto_onetimeauth_poly1305_keygen( + unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) +{ + randombytes_buf(k, crypto_onetimeauth_poly1305_KEYBYTES); +} + +int +_crypto_onetimeauth_poly1305_pick_best_implementation(void) +{ + implementation = &crypto_onetimeauth_poly1305_donna_implementation; +#if defined(HAVE_TI_MODE) && defined(HAVE_EMMINTRIN_H) + if (sodium_runtime_has_sse2()) { + implementation = &crypto_onetimeauth_poly1305_sse2_implementation; + } +#endif + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.h new file mode 100644 index 0000000..243eadd --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.h @@ -0,0 +1,21 @@ + +#ifndef onetimeauth_poly1305_H +#define onetimeauth_poly1305_H + +#include "crypto_onetimeauth_poly1305.h" + +typedef struct crypto_onetimeauth_poly1305_implementation { + int (*onetimeauth)(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); + int (*onetimeauth_verify)(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k); + int (*onetimeauth_init)(crypto_onetimeauth_poly1305_state *state, + const unsigned char * key); + int (*onetimeauth_update)(crypto_onetimeauth_poly1305_state *state, + const unsigned char * in, + unsigned long long inlen); + int (*onetimeauth_final)(crypto_onetimeauth_poly1305_state *state, + unsigned char * out); +} crypto_onetimeauth_poly1305_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c new file mode 100644 index 0000000..2485928 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c @@ -0,0 +1,949 @@ + +#include +#include + +#include "../onetimeauth_poly1305.h" +#include "crypto_verify_16.h" +#include "poly1305_sse2.h" +#include "private/common.h" +#include "utils.h" + +#if defined(HAVE_TI_MODE) && defined(HAVE_EMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# endif + +# include +# include "private/sse2_64_32.h" + +typedef __m128i xmmi; + +# if defined(_MSC_VER) +# define POLY1305_NOINLINE __declspec(noinline) +# elif defined(__clang__) || defined(__GNUC__) +# define POLY1305_NOINLINE __attribute__((noinline)) +# else +# define POLY1305_NOINLINE +# endif + +# define poly1305_block_size 32 + +enum poly1305_state_flags_t { + poly1305_started = 1, + poly1305_final_shift8 = 4, + poly1305_final_shift16 = 8, + poly1305_final_r2_r = 16, /* use [r^2,r] for the final block */ + poly1305_final_r_1 = 32 /* use [r,1] for the final block */ +}; + +typedef struct poly1305_state_internal_t { + union { + uint64_t h[3]; + uint32_t hh[10]; + } H; /* 40 bytes */ + uint32_t R[5]; /* 20 bytes */ + uint32_t R2[5]; /* 20 bytes */ + uint32_t R4[5]; /* 20 bytes */ + uint64_t pad[2]; /* 16 bytes */ + uint64_t flags; /* 8 bytes */ + unsigned long long leftover; /* 8 bytes */ + unsigned char buffer[poly1305_block_size]; /* 32 bytes */ +} poly1305_state_internal_t; /* 164 bytes total */ + +/* + * _mm_loadl_epi64() is turned into a simple MOVQ. So, unaligned accesses are + * totally fine, even though this intrinsic requires a __m128i* input. + * This confuses dynamic analysis, so force alignment, only in debug mode. + */ +# ifdef DEBUG +static xmmi +_fakealign_mm_loadl_epi64(const void *m) +{ + xmmi tmp; + memcpy(&tmp, m, 8); + + return _mm_loadl_epi64(&tmp); +} +# define _mm_loadl_epi64(X) _fakealign_mm_loadl_epi64(X) +#endif + +/* copy 0-31 bytes */ +static inline void +poly1305_block_copy31(unsigned char *dst, const unsigned char *src, + unsigned long long bytes) +{ + if (bytes & 16) { + _mm_store_si128((xmmi *) (void *) dst, + _mm_loadu_si128((const xmmi *) (const void *) src)); + src += 16; + dst += 16; + } + if (bytes & 8) { + memcpy(dst, src, 8); + src += 8; + dst += 8; + } + if (bytes & 4) { + memcpy(dst, src, 4); + src += 4; + dst += 4; + } + if (bytes & 2) { + memcpy(dst, src, 2); + src += 2; + dst += 2; + } + if (bytes & 1) { + *dst = *src; + } +} + +static POLY1305_NOINLINE void +poly1305_init_ext(poly1305_state_internal_t *st, const unsigned char key[32], + unsigned long long bytes) +{ + uint32_t *R; + uint128_t d[3]; + uint64_t r0, r1, r2; + uint64_t rt0, rt1, rt2, st2, c; + uint64_t t0, t1; + unsigned long long i; + + if (!bytes) { + bytes = ~(unsigned long long) 0; + } + /* H = 0 */ + _mm_storeu_si128((xmmi *) (void *) &st->H.hh[0], _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) &st->H.hh[4], _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) &st->H.hh[8], _mm_setzero_si128()); + + /* clamp key */ + memcpy(&t0, key, 8); + memcpy(&t1, key + 8, 8); + r0 = t0 & 0xffc0fffffff; + t0 >>= 44; + t0 |= t1 << 20; + r1 = t0 & 0xfffffc0ffff; + t1 >>= 24; + r2 = t1 & 0x00ffffffc0f; + + /* r^1 */ + R = st->R; + R[0] = (uint32_t)(r0) &0x3ffffff; + R[1] = (uint32_t)((r0 >> 26) | (r1 << 18)) & 0x3ffffff; + R[2] = (uint32_t)((r1 >> 8)) & 0x3ffffff; + R[3] = (uint32_t)((r1 >> 34) | (r2 << 10)) & 0x3ffffff; + R[4] = (uint32_t)((r2 >> 16)); + + /* save pad */ + memcpy(&st->pad[0], key + 16, 8); + memcpy(&st->pad[1], key + 24, 8); + + rt0 = r0; + rt1 = r1; + rt2 = r2; + + /* r^2, r^4 */ + for (i = 0; i < 2; i++) { + if (i == 0) { + R = st->R2; + if (bytes <= 16) { + break; + } + } else if (i == 1) { + R = st->R4; + if (bytes < 96) { + break; + } + } + st2 = rt2 * (5 << 2); + + d[0] = ((uint128_t) rt0 * rt0) + ((uint128_t)(rt1 * 2) * st2); + d[1] = ((uint128_t) rt2 * st2) + ((uint128_t)(rt0 * 2) * rt1); + d[2] = ((uint128_t) rt1 * rt1) + ((uint128_t)(rt2 * 2) * rt0); + + rt0 = (uint64_t) d[0] & 0xfffffffffff; + c = (uint64_t)(d[0] >> 44); + d[1] += c; + + rt1 = (uint64_t) d[1] & 0xfffffffffff; + c = (uint64_t)(d[1] >> 44); + d[2] += c; + + rt2 = (uint64_t) d[2] & 0x3ffffffffff; + c = (uint64_t)(d[2] >> 42); + rt0 += c * 5; + c = (rt0 >> 44); + rt0 = rt0 & 0xfffffffffff; + rt1 += c; + c = (rt1 >> 44); + rt1 = rt1 & 0xfffffffffff; + rt2 += c; /* even if rt2 overflows, it will still fit in rp4 safely, and + is safe to multiply with */ + + R[0] = (uint32_t)(rt0) &0x3ffffff; + R[1] = (uint32_t)((rt0 >> 26) | (rt1 << 18)) & 0x3ffffff; + R[2] = (uint32_t)((rt1 >> 8)) & 0x3ffffff; + R[3] = (uint32_t)((rt1 >> 34) | (rt2 << 10)) & 0x3ffffff; + R[4] = (uint32_t)((rt2 >> 16)); + } + st->flags = 0; + st->leftover = 0U; +} + +static POLY1305_NOINLINE void +poly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, + unsigned long long bytes) +{ + CRYPTO_ALIGN(64) + xmmi HIBIT = + _mm_shuffle_epi32(_mm_cvtsi32_si128(1 << 24), _MM_SHUFFLE(1, 0, 1, 0)); + const xmmi MMASK = _mm_shuffle_epi32(_mm_cvtsi32_si128((1 << 26) - 1), + _MM_SHUFFLE(1, 0, 1, 0)); + const xmmi FIVE = + _mm_shuffle_epi32(_mm_cvtsi32_si128(5), _MM_SHUFFLE(1, 0, 1, 0)); + xmmi H0, H1, H2, H3, H4; + xmmi T0, T1, T2, T3, T4, T5, T6, T7, T8; + xmmi M0, M1, M2, M3, M4; + xmmi M5, M6, M7, M8; + xmmi C1, C2; + xmmi R20, R21, R22, R23, R24, S21, S22, S23, S24; + xmmi R40, R41, R42, R43, R44, S41, S42, S43, S44; + + if (st->flags & poly1305_final_shift8) { + HIBIT = _mm_srli_si128(HIBIT, 8); + } + if (st->flags & poly1305_final_shift16) { + HIBIT = _mm_setzero_si128(); + } + if (!(st->flags & poly1305_started)) { + /* H = [Mx,My] */ + T5 = _mm_unpacklo_epi64( + _mm_loadl_epi64((const xmmi *) (const void *) (m + 0)), + _mm_loadl_epi64((const xmmi *) (const void *) (m + 16))); + T6 = _mm_unpacklo_epi64( + _mm_loadl_epi64((const xmmi *) (const void *) (m + 8)), + _mm_loadl_epi64((const xmmi *) (const void *) (m + 24))); + H0 = _mm_and_si128(MMASK, T5); + H1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); + T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12)); + H2 = _mm_and_si128(MMASK, T5); + H3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); + H4 = _mm_srli_epi64(T6, 40); + H4 = _mm_or_si128(H4, HIBIT); + m += 32; + bytes -= 32; + st->flags |= poly1305_started; + } else { + T0 = _mm_loadu_si128((const xmmi *) (const void *) &st->H.hh[0]); + T1 = _mm_loadu_si128((const xmmi *) (const void *) &st->H.hh[4]); + T2 = _mm_loadu_si128((const xmmi *) (const void *) &st->H.hh[8]); + H0 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(1, 1, 0, 0)); + H1 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(3, 3, 2, 2)); + H2 = _mm_shuffle_epi32(T1, _MM_SHUFFLE(1, 1, 0, 0)); + H3 = _mm_shuffle_epi32(T1, _MM_SHUFFLE(3, 3, 2, 2)); + H4 = _mm_shuffle_epi32(T2, _MM_SHUFFLE(1, 1, 0, 0)); + } + if (st->flags & (poly1305_final_r2_r | poly1305_final_r_1)) { + if (st->flags & poly1305_final_r2_r) { + /* use [r^2, r] */ + T2 = _mm_loadu_si128((const xmmi *) (const void *) &st->R[0]); + T3 = _mm_cvtsi32_si128(st->R[4]); + T0 = _mm_loadu_si128((const xmmi *) (const void *) &st->R2[0]); + T1 = _mm_cvtsi32_si128(st->R2[4]); + T4 = _mm_unpacklo_epi32(T0, T2); + T5 = _mm_unpackhi_epi32(T0, T2); + R24 = _mm_unpacklo_epi64(T1, T3); + } else { + /* use [r^1, 1] */ + T0 = _mm_loadu_si128((const xmmi *) (const void *) &st->R[0]); + T1 = _mm_cvtsi32_si128(st->R[4]); + T2 = _mm_cvtsi32_si128(1); + T4 = _mm_unpacklo_epi32(T0, T2); + T5 = _mm_unpackhi_epi32(T0, T2); + R24 = T1; + } + R20 = _mm_shuffle_epi32(T4, _MM_SHUFFLE(1, 1, 0, 0)); + R21 = _mm_shuffle_epi32(T4, _MM_SHUFFLE(3, 3, 2, 2)); + R22 = _mm_shuffle_epi32(T5, _MM_SHUFFLE(1, 1, 0, 0)); + R23 = _mm_shuffle_epi32(T5, _MM_SHUFFLE(3, 3, 2, 2)); + } else { + /* use [r^2, r^2] */ + T0 = _mm_loadu_si128((const xmmi *) (const void *) &st->R2[0]); + T1 = _mm_cvtsi32_si128(st->R2[4]); + R20 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(0, 0, 0, 0)); + R21 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(1, 1, 1, 1)); + R22 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(2, 2, 2, 2)); + R23 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(3, 3, 3, 3)); + R24 = _mm_shuffle_epi32(T1, _MM_SHUFFLE(0, 0, 0, 0)); + } + S21 = _mm_mul_epu32(R21, FIVE); + S22 = _mm_mul_epu32(R22, FIVE); + S23 = _mm_mul_epu32(R23, FIVE); + S24 = _mm_mul_epu32(R24, FIVE); + + if (bytes >= 64) { + T0 = _mm_loadu_si128((const xmmi *) (const void *) &st->R4[0]); + T1 = _mm_cvtsi32_si128(st->R4[4]); + R40 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(0, 0, 0, 0)); + R41 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(1, 1, 1, 1)); + R42 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(2, 2, 2, 2)); + R43 = _mm_shuffle_epi32(T0, _MM_SHUFFLE(3, 3, 3, 3)); + R44 = _mm_shuffle_epi32(T1, _MM_SHUFFLE(0, 0, 0, 0)); + S41 = _mm_mul_epu32(R41, FIVE); + S42 = _mm_mul_epu32(R42, FIVE); + S43 = _mm_mul_epu32(R43, FIVE); + S44 = _mm_mul_epu32(R44, FIVE); + + while (bytes >= 64) { + xmmi v00, v01, v02, v03, v04; + xmmi v10, v11, v12, v13, v14; + xmmi v20, v21, v22, v23, v24; + xmmi v30, v31, v32, v33, v34; + xmmi v40, v41, v42, v43, v44; + xmmi T14, T15; + + /* H *= [r^4,r^4], preload [Mx,My] */ + T15 = S42; + T0 = H4; + T0 = _mm_mul_epu32(T0, S41); + v01 = H3; + v01 = _mm_mul_epu32(v01, T15); + T14 = S43; + T1 = H4; + T1 = _mm_mul_epu32(T1, T15); + v11 = H3; + v11 = _mm_mul_epu32(v11, T14); + T2 = H4; + T2 = _mm_mul_epu32(T2, T14); + T0 = _mm_add_epi64(T0, v01); + T15 = S44; + v02 = H2; + v02 = _mm_mul_epu32(v02, T14); + T3 = H4; + T3 = _mm_mul_epu32(T3, T15); + T1 = _mm_add_epi64(T1, v11); + v03 = H1; + v03 = _mm_mul_epu32(v03, T15); + v12 = H2; + v12 = _mm_mul_epu32(v12, T15); + T0 = _mm_add_epi64(T0, v02); + T14 = R40; + v21 = H3; + v21 = _mm_mul_epu32(v21, T15); + v31 = H3; + v31 = _mm_mul_epu32(v31, T14); + T0 = _mm_add_epi64(T0, v03); + T4 = H4; + T4 = _mm_mul_epu32(T4, T14); + T1 = _mm_add_epi64(T1, v12); + v04 = H0; + v04 = _mm_mul_epu32(v04, T14); + T2 = _mm_add_epi64(T2, v21); + v13 = H1; + v13 = _mm_mul_epu32(v13, T14); + T3 = _mm_add_epi64(T3, v31); + T15 = R41; + v22 = H2; + v22 = _mm_mul_epu32(v22, T14); + v32 = H2; + v32 = _mm_mul_epu32(v32, T15); + T0 = _mm_add_epi64(T0, v04); + v41 = H3; + v41 = _mm_mul_epu32(v41, T15); + T1 = _mm_add_epi64(T1, v13); + v14 = H0; + v14 = _mm_mul_epu32(v14, T15); + T2 = _mm_add_epi64(T2, v22); + T14 = R42; + T5 = _mm_unpacklo_epi64( + _mm_loadl_epi64((const xmmi *) (const void *) (m + 0)), + _mm_loadl_epi64((const xmmi *) (const void *) (m + 16))); + v23 = H1; + v23 = _mm_mul_epu32(v23, T15); + T3 = _mm_add_epi64(T3, v32); + v33 = H1; + v33 = _mm_mul_epu32(v33, T14); + T4 = _mm_add_epi64(T4, v41); + v42 = H2; + v42 = _mm_mul_epu32(v42, T14); + T1 = _mm_add_epi64(T1, v14); + T15 = R43; + T6 = _mm_unpacklo_epi64( + _mm_loadl_epi64((const xmmi *) (const void *) (m + 8)), + _mm_loadl_epi64((const xmmi *) (const void *) (m + 24))); + v24 = H0; + v24 = _mm_mul_epu32(v24, T14); + T2 = _mm_add_epi64(T2, v23); + v34 = H0; + v34 = _mm_mul_epu32(v34, T15); + T3 = _mm_add_epi64(T3, v33); + M0 = _mm_and_si128(MMASK, T5); + v43 = H1; + v43 = _mm_mul_epu32(v43, T15); + T4 = _mm_add_epi64(T4, v42); + M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26)); + v44 = H0; + v44 = _mm_mul_epu32(v44, R44); + T2 = _mm_add_epi64(T2, v24); + T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12)); + T3 = _mm_add_epi64(T3, v34); + M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T6, 14)); + T4 = _mm_add_epi64(T4, v43); + M2 = _mm_and_si128(MMASK, T5); + T4 = _mm_add_epi64(T4, v44); + M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT); + + /* H += [Mx',My'] */ + T5 = _mm_loadu_si128((const xmmi *) (const void *) (m + 32)); + T6 = _mm_loadu_si128((const xmmi *) (const void *) (m + 48)); + T7 = _mm_unpacklo_epi32(T5, T6); + T8 = _mm_unpackhi_epi32(T5, T6); + M5 = _mm_unpacklo_epi32(T7, _mm_setzero_si128()); + M6 = _mm_unpackhi_epi32(T7, _mm_setzero_si128()); + M7 = _mm_unpacklo_epi32(T8, _mm_setzero_si128()); + M8 = _mm_unpackhi_epi32(T8, _mm_setzero_si128()); + M6 = _mm_slli_epi64(M6, 6); + M7 = _mm_slli_epi64(M7, 12); + M8 = _mm_slli_epi64(M8, 18); + T0 = _mm_add_epi64(T0, M5); + T1 = _mm_add_epi64(T1, M6); + T2 = _mm_add_epi64(T2, M7); + T3 = _mm_add_epi64(T3, M8); + T4 = _mm_add_epi64(T4, HIBIT); + + /* H += [Mx,My]*[r^2,r^2] */ + T15 = S22; + v00 = M4; + v00 = _mm_mul_epu32(v00, S21); + v01 = M3; + v01 = _mm_mul_epu32(v01, T15); + T14 = S23; + v10 = M4; + v10 = _mm_mul_epu32(v10, T15); + v11 = M3; + v11 = _mm_mul_epu32(v11, T14); + T0 = _mm_add_epi64(T0, v00); + v20 = M4; + v20 = _mm_mul_epu32(v20, T14); + T0 = _mm_add_epi64(T0, v01); + T15 = S24; + v02 = M2; + v02 = _mm_mul_epu32(v02, T14); + T1 = _mm_add_epi64(T1, v10); + v30 = M4; + v30 = _mm_mul_epu32(v30, T15); + T1 = _mm_add_epi64(T1, v11); + v03 = M1; + v03 = _mm_mul_epu32(v03, T15); + T2 = _mm_add_epi64(T2, v20); + v12 = M2; + v12 = _mm_mul_epu32(v12, T15); + T0 = _mm_add_epi64(T0, v02); + T14 = R20; + v21 = M3; + v21 = _mm_mul_epu32(v21, T15); + T3 = _mm_add_epi64(T3, v30); + v31 = M3; + v31 = _mm_mul_epu32(v31, T14); + T0 = _mm_add_epi64(T0, v03); + v40 = M4; + v40 = _mm_mul_epu32(v40, T14); + T1 = _mm_add_epi64(T1, v12); + v04 = M0; + v04 = _mm_mul_epu32(v04, T14); + T2 = _mm_add_epi64(T2, v21); + v13 = M1; + v13 = _mm_mul_epu32(v13, T14); + T3 = _mm_add_epi64(T3, v31); + T15 = R21; + v22 = M2; + v22 = _mm_mul_epu32(v22, T14); + T4 = _mm_add_epi64(T4, v40); + v32 = M2; + v32 = _mm_mul_epu32(v32, T15); + T0 = _mm_add_epi64(T0, v04); + v41 = M3; + v41 = _mm_mul_epu32(v41, T15); + T1 = _mm_add_epi64(T1, v13); + v14 = M0; + v14 = _mm_mul_epu32(v14, T15); + T2 = _mm_add_epi64(T2, v22); + T14 = R22; + v23 = M1; + v23 = _mm_mul_epu32(v23, T15); + T3 = _mm_add_epi64(T3, v32); + v33 = M1; + v33 = _mm_mul_epu32(v33, T14); + T4 = _mm_add_epi64(T4, v41); + v42 = M2; + v42 = _mm_mul_epu32(v42, T14); + T1 = _mm_add_epi64(T1, v14); + T15 = R23; + v24 = M0; + v24 = _mm_mul_epu32(v24, T14); + T2 = _mm_add_epi64(T2, v23); + v34 = M0; + v34 = _mm_mul_epu32(v34, T15); + T3 = _mm_add_epi64(T3, v33); + v43 = M1; + v43 = _mm_mul_epu32(v43, T15); + T4 = _mm_add_epi64(T4, v42); + v44 = M0; + v44 = _mm_mul_epu32(v44, R24); + T2 = _mm_add_epi64(T2, v24); + T3 = _mm_add_epi64(T3, v34); + T4 = _mm_add_epi64(T4, v43); + T4 = _mm_add_epi64(T4, v44); + + /* reduce */ + C1 = _mm_srli_epi64(T0, 26); + C2 = _mm_srli_epi64(T3, 26); + T0 = _mm_and_si128(T0, MMASK); + T3 = _mm_and_si128(T3, MMASK); + T1 = _mm_add_epi64(T1, C1); + T4 = _mm_add_epi64(T4, C2); + C1 = _mm_srli_epi64(T1, 26); + C2 = _mm_srli_epi64(T4, 26); + T1 = _mm_and_si128(T1, MMASK); + T4 = _mm_and_si128(T4, MMASK); + T2 = _mm_add_epi64(T2, C1); + T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE)); + C1 = _mm_srli_epi64(T2, 26); + C2 = _mm_srli_epi64(T0, 26); + T2 = _mm_and_si128(T2, MMASK); + T0 = _mm_and_si128(T0, MMASK); + T3 = _mm_add_epi64(T3, C1); + T1 = _mm_add_epi64(T1, C2); + C1 = _mm_srli_epi64(T3, 26); + T3 = _mm_and_si128(T3, MMASK); + T4 = _mm_add_epi64(T4, C1); + + /* Final: H = (H*[r^4,r^4] + [Mx,My]*[r^2,r^2] + [Mx',My']) */ + H0 = T0; + H1 = T1; + H2 = T2; + H3 = T3; + H4 = T4; + + m += 64; + bytes -= 64; + } + } + + if (bytes >= 32) { + xmmi v01, v02, v03, v04; + xmmi v11, v12, v13, v14; + xmmi v21, v22, v23, v24; + xmmi v31, v32, v33, v34; + xmmi v41, v42, v43, v44; + xmmi T14, T15; + + /* H *= [r^2,r^2] */ + T15 = S22; + T0 = H4; + T0 = _mm_mul_epu32(T0, S21); + v01 = H3; + v01 = _mm_mul_epu32(v01, T15); + T14 = S23; + T1 = H4; + T1 = _mm_mul_epu32(T1, T15); + v11 = H3; + v11 = _mm_mul_epu32(v11, T14); + T2 = H4; + T2 = _mm_mul_epu32(T2, T14); + T0 = _mm_add_epi64(T0, v01); + T15 = S24; + v02 = H2; + v02 = _mm_mul_epu32(v02, T14); + T3 = H4; + T3 = _mm_mul_epu32(T3, T15); + T1 = _mm_add_epi64(T1, v11); + v03 = H1; + v03 = _mm_mul_epu32(v03, T15); + v12 = H2; + v12 = _mm_mul_epu32(v12, T15); + T0 = _mm_add_epi64(T0, v02); + T14 = R20; + v21 = H3; + v21 = _mm_mul_epu32(v21, T15); + v31 = H3; + v31 = _mm_mul_epu32(v31, T14); + T0 = _mm_add_epi64(T0, v03); + T4 = H4; + T4 = _mm_mul_epu32(T4, T14); + T1 = _mm_add_epi64(T1, v12); + v04 = H0; + v04 = _mm_mul_epu32(v04, T14); + T2 = _mm_add_epi64(T2, v21); + v13 = H1; + v13 = _mm_mul_epu32(v13, T14); + T3 = _mm_add_epi64(T3, v31); + T15 = R21; + v22 = H2; + v22 = _mm_mul_epu32(v22, T14); + v32 = H2; + v32 = _mm_mul_epu32(v32, T15); + T0 = _mm_add_epi64(T0, v04); + v41 = H3; + v41 = _mm_mul_epu32(v41, T15); + T1 = _mm_add_epi64(T1, v13); + v14 = H0; + v14 = _mm_mul_epu32(v14, T15); + T2 = _mm_add_epi64(T2, v22); + T14 = R22; + v23 = H1; + v23 = _mm_mul_epu32(v23, T15); + T3 = _mm_add_epi64(T3, v32); + v33 = H1; + v33 = _mm_mul_epu32(v33, T14); + T4 = _mm_add_epi64(T4, v41); + v42 = H2; + v42 = _mm_mul_epu32(v42, T14); + T1 = _mm_add_epi64(T1, v14); + T15 = R23; + v24 = H0; + v24 = _mm_mul_epu32(v24, T14); + T2 = _mm_add_epi64(T2, v23); + v34 = H0; + v34 = _mm_mul_epu32(v34, T15); + T3 = _mm_add_epi64(T3, v33); + v43 = H1; + v43 = _mm_mul_epu32(v43, T15); + T4 = _mm_add_epi64(T4, v42); + v44 = H0; + v44 = _mm_mul_epu32(v44, R24); + T2 = _mm_add_epi64(T2, v24); + T3 = _mm_add_epi64(T3, v34); + T4 = _mm_add_epi64(T4, v43); + T4 = _mm_add_epi64(T4, v44); + + /* H += [Mx,My] */ + if (m) { + T5 = _mm_loadu_si128((const xmmi *) (const void *) (m + 0)); + T6 = _mm_loadu_si128((const xmmi *) (const void *) (m + 16)); + T7 = _mm_unpacklo_epi32(T5, T6); + T8 = _mm_unpackhi_epi32(T5, T6); + M0 = _mm_unpacklo_epi32(T7, _mm_setzero_si128()); + M1 = _mm_unpackhi_epi32(T7, _mm_setzero_si128()); + M2 = _mm_unpacklo_epi32(T8, _mm_setzero_si128()); + M3 = _mm_unpackhi_epi32(T8, _mm_setzero_si128()); + M1 = _mm_slli_epi64(M1, 6); + M2 = _mm_slli_epi64(M2, 12); + M3 = _mm_slli_epi64(M3, 18); + T0 = _mm_add_epi64(T0, M0); + T1 = _mm_add_epi64(T1, M1); + T2 = _mm_add_epi64(T2, M2); + T3 = _mm_add_epi64(T3, M3); + T4 = _mm_add_epi64(T4, HIBIT); + } + + /* reduce */ + C1 = _mm_srli_epi64(T0, 26); + C2 = _mm_srli_epi64(T3, 26); + T0 = _mm_and_si128(T0, MMASK); + T3 = _mm_and_si128(T3, MMASK); + T1 = _mm_add_epi64(T1, C1); + T4 = _mm_add_epi64(T4, C2); + C1 = _mm_srli_epi64(T1, 26); + C2 = _mm_srli_epi64(T4, 26); + T1 = _mm_and_si128(T1, MMASK); + T4 = _mm_and_si128(T4, MMASK); + T2 = _mm_add_epi64(T2, C1); + T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE)); + C1 = _mm_srli_epi64(T2, 26); + C2 = _mm_srli_epi64(T0, 26); + T2 = _mm_and_si128(T2, MMASK); + T0 = _mm_and_si128(T0, MMASK); + T3 = _mm_add_epi64(T3, C1); + T1 = _mm_add_epi64(T1, C2); + C1 = _mm_srli_epi64(T3, 26); + T3 = _mm_and_si128(T3, MMASK); + T4 = _mm_add_epi64(T4, C1); + + /* H = (H*[r^2,r^2] + [Mx,My]) */ + H0 = T0; + H1 = T1; + H2 = T2; + H3 = T3; + H4 = T4; + } + + if (m) { + T0 = _mm_shuffle_epi32(H0, _MM_SHUFFLE(0, 0, 2, 0)); + T1 = _mm_shuffle_epi32(H1, _MM_SHUFFLE(0, 0, 2, 0)); + T2 = _mm_shuffle_epi32(H2, _MM_SHUFFLE(0, 0, 2, 0)); + T3 = _mm_shuffle_epi32(H3, _MM_SHUFFLE(0, 0, 2, 0)); + T4 = _mm_shuffle_epi32(H4, _MM_SHUFFLE(0, 0, 2, 0)); + T0 = _mm_unpacklo_epi64(T0, T1); + T1 = _mm_unpacklo_epi64(T2, T3); + _mm_storeu_si128((xmmi *) (void *) &st->H.hh[0], T0); + _mm_storeu_si128((xmmi *) (void *) &st->H.hh[4], T1); + _mm_storel_epi64((xmmi *) (void *) &st->H.hh[8], T4); + } else { + uint32_t t0, t1, t2, t3, t4, b; + uint64_t h0, h1, h2, g0, g1, g2, c, nc; + + /* H = H[0]+H[1] */ + T0 = H0; + T1 = H1; + T2 = H2; + T3 = H3; + T4 = H4; + + T0 = _mm_add_epi64(T0, _mm_srli_si128(T0, 8)); + T1 = _mm_add_epi64(T1, _mm_srli_si128(T1, 8)); + T2 = _mm_add_epi64(T2, _mm_srli_si128(T2, 8)); + T3 = _mm_add_epi64(T3, _mm_srli_si128(T3, 8)); + T4 = _mm_add_epi64(T4, _mm_srli_si128(T4, 8)); + + t0 = _mm_cvtsi128_si32(T0); + b = (t0 >> 26); + t0 &= 0x3ffffff; + t1 = _mm_cvtsi128_si32(T1) + b; + b = (t1 >> 26); + t1 &= 0x3ffffff; + t2 = _mm_cvtsi128_si32(T2) + b; + b = (t2 >> 26); + t2 &= 0x3ffffff; + t3 = _mm_cvtsi128_si32(T3) + b; + b = (t3 >> 26); + t3 &= 0x3ffffff; + t4 = _mm_cvtsi128_si32(T4) + b; + + /* everything except t4 is in range, so this is all safe */ + h0 = (((uint64_t) t0) | ((uint64_t) t1 << 26)) & 0xfffffffffffull; + h1 = (((uint64_t) t1 >> 18) | ((uint64_t) t2 << 8) | + ((uint64_t) t3 << 34)) & + 0xfffffffffffull; + h2 = (((uint64_t) t3 >> 10) | ((uint64_t) t4 << 16)); + + c = (h2 >> 42); + h2 &= 0x3ffffffffff; + h0 += c * 5; + c = (h0 >> 44); + h0 &= 0xfffffffffff; + h1 += c; + c = (h1 >> 44); + h1 &= 0xfffffffffff; + h2 += c; + c = (h2 >> 42); + h2 &= 0x3ffffffffff; + h0 += c * 5; + c = (h0 >> 44); + h0 &= 0xfffffffffff; + h1 += c; + + g0 = h0 + 5; + c = (g0 >> 44); + g0 &= 0xfffffffffff; + g1 = h1 + c; + c = (g1 >> 44); + g1 &= 0xfffffffffff; + g2 = h2 + c - ((uint64_t) 1 << 42); + + c = (g2 >> 63) - 1; + nc = ~c; + h0 = (h0 & nc) | (g0 & c); + h1 = (h1 & nc) | (g1 & c); + h2 = (h2 & nc) | (g2 & c); + + st->H.h[0] = h0; + st->H.h[1] = h1; + st->H.h[2] = h2; + } +} + +static void +poly1305_update(poly1305_state_internal_t *st, const unsigned char *m, + unsigned long long bytes) +{ + unsigned long long i; + + /* handle leftover */ + if (st->leftover) { + unsigned long long want = (poly1305_block_size - st->leftover); + + if (want > bytes) { + want = bytes; + } + for (i = 0; i < want; i++) { + st->buffer[st->leftover + i] = m[i]; + } + bytes -= want; + m += want; + st->leftover += want; + if (st->leftover < poly1305_block_size) { + return; + } + poly1305_blocks(st, st->buffer, poly1305_block_size); + st->leftover = 0; + } + + /* process full blocks */ + if (bytes >= poly1305_block_size) { + unsigned long long want = (bytes & ~(poly1305_block_size - 1)); + + poly1305_blocks(st, m, want); + m += want; + bytes -= want; + } + + /* store leftover */ + if (bytes) { + for (i = 0; i < bytes; i++) { + st->buffer[st->leftover + i] = m[i]; + } + st->leftover += bytes; + } +} + +static POLY1305_NOINLINE void +poly1305_finish_ext(poly1305_state_internal_t *st, const unsigned char *m, + unsigned long long leftover, unsigned char mac[16]) +{ + uint64_t h0, h1, h2; + + if (leftover) { + CRYPTO_ALIGN(16) unsigned char final[32] = { 0 }; + + poly1305_block_copy31(final, m, leftover); + if (leftover != 16) { + final[leftover] = 1; + } + st->flags |= + (leftover >= 16) ? poly1305_final_shift8 : poly1305_final_shift16; + poly1305_blocks(st, final, 32); + } + + if (st->flags & poly1305_started) { + /* finalize, H *= [r^2,r], or H *= [r,1] */ + if (!leftover || (leftover > 16)) { + st->flags |= poly1305_final_r2_r; + } else { + st->flags |= poly1305_final_r_1; + } + poly1305_blocks(st, NULL, 32); + } + + h0 = st->H.h[0]; + h1 = st->H.h[1]; + h2 = st->H.h[2]; + + /* pad */ + h0 = ((h0) | (h1 << 44)); + h1 = ((h1 >> 20) | (h2 << 24)); +#ifdef HAVE_AMD64_ASM + __asm__ __volatile__( + "addq %2, %0 ;\n" + "adcq %3, %1 ;\n" + : "+r"(h0), "+r"(h1) + : "r"(st->pad[0]), "r"(st->pad[1]) + : "flags", "cc"); +#else + { + uint128_t h; + + memcpy(&h, &st->pad[0], 16); + h += ((uint128_t) h1 << 64) | h0; + h0 = (uint64_t) h; + h1 = (uint64_t)(h >> 64); + } +#endif + _mm_storeu_si128((xmmi *) (void *) st + 0, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 1, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 2, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 3, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 4, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 5, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 6, _mm_setzero_si128()); + _mm_storeu_si128((xmmi *) (void *) st + 7, _mm_setzero_si128()); + + memcpy(&mac[0], &h0, 8); + memcpy(&mac[8], &h1, 8); + + sodium_memzero((void *) st, sizeof *st); +} + +static void +poly1305_finish(poly1305_state_internal_t *st, unsigned char mac[16]) +{ + poly1305_finish_ext(st, st->buffer, st->leftover, mac); +} + +static int +crypto_onetimeauth_poly1305_sse2_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) +{ + COMPILER_ASSERT(sizeof(crypto_onetimeauth_poly1305_state) >= + sizeof(poly1305_state_internal_t)); + poly1305_init_ext((poly1305_state_internal_t *) (void *) state, key, 0U); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_sse2_update( + crypto_onetimeauth_poly1305_state *state, const unsigned char *in, + unsigned long long inlen) +{ + poly1305_update((poly1305_state_internal_t *) (void *) state, in, inlen); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_sse2_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) +{ + poly1305_finish((poly1305_state_internal_t *) (void *) state, out); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_sse2(unsigned char *out, const unsigned char *m, + unsigned long long inlen, + const unsigned char *key) +{ + CRYPTO_ALIGN(64) poly1305_state_internal_t st; + unsigned long long blocks; + + poly1305_init_ext(&st, key, inlen); + blocks = inlen & ~31; + if (blocks > 0) { + poly1305_blocks(&st, m, blocks); + m += blocks; + inlen -= blocks; + } + poly1305_finish_ext(&st, m, inlen, out); + + return 0; +} + +static int +crypto_onetimeauth_poly1305_sse2_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) +{ + unsigned char correct[16]; + + crypto_onetimeauth_poly1305_sse2(correct, in, inlen, k); + + return crypto_verify_16(h, correct); +} + +struct crypto_onetimeauth_poly1305_implementation + crypto_onetimeauth_poly1305_sse2_implementation = { + SODIUM_C99(.onetimeauth =) crypto_onetimeauth_poly1305_sse2, + SODIUM_C99(.onetimeauth_verify =) + crypto_onetimeauth_poly1305_sse2_verify, + SODIUM_C99(.onetimeauth_init =) crypto_onetimeauth_poly1305_sse2_init, + SODIUM_C99(.onetimeauth_update =) + crypto_onetimeauth_poly1305_sse2_update, + SODIUM_C99(.onetimeauth_final =) crypto_onetimeauth_poly1305_sse2_final + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h new file mode 100644 index 0000000..9177cad --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h @@ -0,0 +1,12 @@ +#ifndef poly1305_sse2_H +#define poly1305_sse2_H + +#include + +#include "../onetimeauth_poly1305.h" +#include "crypto_onetimeauth_poly1305.h" + +extern struct crypto_onetimeauth_poly1305_implementation + crypto_onetimeauth_poly1305_sse2_implementation; + +#endif /* poly1305_sse2_H */ diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.c new file mode 100644 index 0000000..2922942 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.c @@ -0,0 +1,556 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#include +#include +#include +#include +#include + +#include +#ifdef HAVE_SYS_MMAN_H +# include +#endif + +#include "crypto_generichash_blake2b.h" +#include "private/common.h" +#include "private/implementations.h" +#include "runtime.h" +#include "utils.h" + +#include "argon2-core.h" +#include "blake2b-long.h" + +#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) +# define MAP_ANON MAP_ANONYMOUS +#endif +#ifndef MAP_NOCORE +# ifdef MAP_CONCEAL +# define MAP_NOCORE MAP_CONCEAL +# else +# define MAP_NOCORE 0 +# endif +#endif +#ifndef MAP_POPULATE +# define MAP_POPULATE 0 +#endif + +static fill_segment_fn fill_segment = argon2_fill_segment_ref; + +static void +load_block(block *dst, const void *input) +{ + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] = LOAD64_LE((const uint8_t *) input + i * sizeof(dst->v[i])); + } +} + +static void +store_block(void *output, const block *src) +{ + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + STORE64_LE((uint8_t *) output + i * sizeof(src->v[i]), src->v[i]); + } +} + +/***************Memory allocators*****************/ +/* Allocates memory to the given pointer + * @param memory pointer to the pointer to the memory + * @param m_cost number of blocks to allocate in the memory + * @return ARGON2_OK if @memory is a valid pointer and memory is allocated + */ +static int allocate_memory(block_region **region, uint32_t m_cost); + +static int +allocate_memory(block_region **region, uint32_t m_cost) +{ + void *base; + block *memory; + size_t memory_size; + + if (region == NULL) { + return ARGON2_MEMORY_ALLOCATION_ERROR; /* LCOV_EXCL_LINE */ + } + memory_size = sizeof(block) * m_cost; + if (m_cost == 0 || memory_size / m_cost != sizeof(block)) { + return ARGON2_MEMORY_ALLOCATION_ERROR; /* LCOV_EXCL_LINE */ + } + *region = (block_region *) malloc(sizeof(block_region)); + if (*region == NULL) { + return ARGON2_MEMORY_ALLOCATION_ERROR; /* LCOV_EXCL_LINE */ + } + (*region)->base = (*region)->memory = NULL; + +#if defined(MAP_ANON) && defined(HAVE_MMAP) + if ((base = mmap(NULL, memory_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_NOCORE | MAP_POPULATE, + -1, 0)) == MAP_FAILED) { + base = NULL; /* LCOV_EXCL_LINE */ + } /* LCOV_EXCL_LINE */ + memory = (block *) base; +#elif defined(HAVE_POSIX_MEMALIGN) + if ((errno = posix_memalign((void **) &base, 64, memory_size)) != 0) { + base = NULL; + } + memory = (block *) base; +#else + memory = NULL; + if (memory_size + 63 < memory_size) { + base = NULL; + errno = ENOMEM; + } else if ((base = malloc(memory_size + 63)) != NULL) { + uint8_t *aligned = ((uint8_t *) base) + 63; + aligned -= (uintptr_t) aligned & 63; + memory = (block *) aligned; + } +#endif + if (base == NULL) { + /* LCOV_EXCL_START */ + free(*region); + *region = NULL; + return ARGON2_MEMORY_ALLOCATION_ERROR; + /* LCOV_EXCL_STOP */ + } + (*region)->base = base; + (*region)->memory = memory; + (*region)->size = memory_size; + + return ARGON2_OK; +} + +/*********Memory functions*/ + +/* Clears memory + * @param instance pointer to the current instance + * @param clear_memory indicates if we clear the memory with zeros. + */ +static void clear_memory(argon2_instance_t *instance, int clear); + +static void +clear_memory(argon2_instance_t *instance, int clear) +{ + /* LCOV_EXCL_START */ + if (clear) { + if (instance->region != NULL) { + sodium_memzero(instance->region->memory, + sizeof(block) * instance->memory_blocks); + } + if (instance->pseudo_rands != NULL) { + sodium_memzero(instance->pseudo_rands, + sizeof(uint64_t) * instance->segment_length); + } + } + /* LCOV_EXCL_STOP */ +} + +/* Deallocates memory + * @param memory pointer to the blocks + */ +static void free_memory(block_region *region); + +static void +free_memory(block_region *region) +{ + if (region && region->base) { +#if defined(MAP_ANON) && defined(HAVE_MMAP) + if (munmap(region->base, region->size)) { + return; /* LCOV_EXCL_LINE */ + } +#else + free(region->base); +#endif + } + free(region); +} + +static void +argon2_free_instance(argon2_instance_t *instance, int flags) +{ + /* Clear memory */ + clear_memory(instance, flags & ARGON2_FLAG_CLEAR_MEMORY); + + /* Deallocate the memory */ + free(instance->pseudo_rands); + instance->pseudo_rands = NULL; + free_memory(instance->region); + instance->region = NULL; +} + +void +argon2_finalize(const argon2_context *context, argon2_instance_t *instance) +{ + if (context != NULL && instance != NULL) { + block blockhash; + uint32_t l; + + copy_block(&blockhash, + instance->region->memory + instance->lane_length - 1); + + /* XOR the last blocks */ + for (l = 1; l < instance->lanes; ++l) { + uint32_t last_block_in_lane = + l * instance->lane_length + (instance->lane_length - 1); + xor_block(&blockhash, + instance->region->memory + last_block_in_lane); + } + + /* Hash the result */ + { + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + store_block(blockhash_bytes, &blockhash); + blake2b_long(context->out, context->outlen, blockhash_bytes, + ARGON2_BLOCK_SIZE); + sodium_memzero(blockhash.v, + ARGON2_BLOCK_SIZE); /* clear blockhash */ + sodium_memzero(blockhash_bytes, + ARGON2_BLOCK_SIZE); /* clear blockhash_bytes */ + } + + argon2_free_instance(instance, context->flags); + } +} + +void +argon2_fill_memory_blocks(argon2_instance_t *instance, uint32_t pass) +{ + argon2_position_t position; + uint32_t l; + uint32_t s; + + if (instance == NULL || instance->lanes == 0) { + return; /* LCOV_EXCL_LINE */ + } + + position.pass = pass; + for (s = 0; s < ARGON2_SYNC_POINTS; ++s) { + position.slice = (uint8_t) s; + for (l = 0; l < instance->lanes; ++l) { + position.lane = l; + position.index = 0; + fill_segment(instance, position); + } + } +} + +int +argon2_validate_inputs(const argon2_context *context) +{ + /* LCOV_EXCL_START */ + if (NULL == context) { + return ARGON2_INCORRECT_PARAMETER; + } + + if (NULL == context->out) { + return ARGON2_OUTPUT_PTR_NULL; + } + + /* Validate output length */ + if (ARGON2_MIN_OUTLEN > context->outlen) { + return ARGON2_OUTPUT_TOO_SHORT; + } + + if (ARGON2_MAX_OUTLEN < context->outlen) { + return ARGON2_OUTPUT_TOO_LONG; + } + + /* Validate password (required param) */ + if (NULL == context->pwd) { + if (0 != context->pwdlen) { + return ARGON2_PWD_PTR_MISMATCH; + } + } + + if (ARGON2_MIN_PWD_LENGTH > context->pwdlen) { + return ARGON2_PWD_TOO_SHORT; + } + + if (ARGON2_MAX_PWD_LENGTH < context->pwdlen) { + return ARGON2_PWD_TOO_LONG; + } + + /* Validate salt (required param) */ + if (NULL == context->salt) { + if (0 != context->saltlen) { + return ARGON2_SALT_PTR_MISMATCH; + } + } + + if (ARGON2_MIN_SALT_LENGTH > context->saltlen) { + return ARGON2_SALT_TOO_SHORT; + } + + if (ARGON2_MAX_SALT_LENGTH < context->saltlen) { + return ARGON2_SALT_TOO_LONG; + } + + /* Validate secret (optional param) */ + if (NULL == context->secret) { + if (0 != context->secretlen) { + return ARGON2_SECRET_PTR_MISMATCH; + } + } else { + if (ARGON2_MIN_SECRET > context->secretlen) { + return ARGON2_SECRET_TOO_SHORT; + } + + if (ARGON2_MAX_SECRET < context->secretlen) { + return ARGON2_SECRET_TOO_LONG; + } + } + + /* Validate associated data (optional param) */ + if (NULL == context->ad) { + if (0 != context->adlen) { + return ARGON2_AD_PTR_MISMATCH; + } + } else { + if (ARGON2_MIN_AD_LENGTH > context->adlen) { + return ARGON2_AD_TOO_SHORT; + } + + if (ARGON2_MAX_AD_LENGTH < context->adlen) { + return ARGON2_AD_TOO_LONG; + } + } + + /* Validate lanes */ + if (ARGON2_MIN_LANES > context->lanes) { + return ARGON2_LANES_TOO_FEW; + } + + if (ARGON2_MAX_LANES < context->lanes) { + return ARGON2_LANES_TOO_MANY; + } + + /* Validate memory cost */ + if (ARGON2_MIN_MEMORY > context->m_cost) { + return ARGON2_MEMORY_TOO_LITTLE; + } + + if (ARGON2_MAX_MEMORY < context->m_cost) { + return ARGON2_MEMORY_TOO_MUCH; + } + + if (context->m_cost < 8 * context->lanes) { + return ARGON2_MEMORY_TOO_LITTLE; + } + + /* Validate time cost */ + if (ARGON2_MIN_TIME > context->t_cost) { + return ARGON2_TIME_TOO_SMALL; + } + + if (ARGON2_MAX_TIME < context->t_cost) { + return ARGON2_TIME_TOO_LARGE; + } + + /* Validate threads */ + if (ARGON2_MIN_THREADS > context->threads) { + return ARGON2_THREADS_TOO_FEW; + } + + if (ARGON2_MAX_THREADS < context->threads) { + return ARGON2_THREADS_TOO_MANY; + } + /* LCOV_EXCL_STOP */ + + return ARGON2_OK; +} + +static void +argon2_fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) +{ + uint32_t l; + /* Make the first and second block in each lane as G(H0||i||0) or + G(H0||i||1) */ + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + for (l = 0; l < instance->lanes; ++l) { + STORE32_LE(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 0); + STORE32_LE(blockhash + ARGON2_PREHASH_DIGEST_LENGTH + 4, l); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->region->memory[l * instance->lane_length + 0], + blockhash_bytes); + + STORE32_LE(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 1); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->region->memory[l * instance->lane_length + 1], + blockhash_bytes); + } + sodium_memzero(blockhash_bytes, ARGON2_BLOCK_SIZE); +} + +static void +argon2_initial_hash(uint8_t *blockhash, argon2_context *context, + argon2_type type) +{ + crypto_generichash_blake2b_state BlakeHash; + uint8_t value[4U /* sizeof(uint32_t) */]; + + if (NULL == context || NULL == blockhash) { + return; /* LCOV_EXCL_LINE */ + } + + crypto_generichash_blake2b_init(&BlakeHash, NULL, 0U, + ARGON2_PREHASH_DIGEST_LENGTH); + + STORE32_LE(value, context->lanes); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + STORE32_LE(value, context->outlen); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + STORE32_LE(value, context->m_cost); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + STORE32_LE(value, context->t_cost); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + STORE32_LE(value, ARGON2_VERSION_NUMBER); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + STORE32_LE(value, (uint32_t) type); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + STORE32_LE(value, context->pwdlen); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + if (context->pwd != NULL) { + crypto_generichash_blake2b_update( + &BlakeHash, (const uint8_t *) context->pwd, context->pwdlen); + + /* LCOV_EXCL_START */ + if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) { + sodium_memzero(context->pwd, context->pwdlen); + context->pwdlen = 0; + } + /* LCOV_EXCL_STOP */ + } + + STORE32_LE(value, context->saltlen); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + if (context->salt != NULL) { + crypto_generichash_blake2b_update( + &BlakeHash, (const uint8_t *) context->salt, context->saltlen); + } + + STORE32_LE(value, context->secretlen); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + /* LCOV_EXCL_START */ + if (context->secret != NULL) { + crypto_generichash_blake2b_update( + &BlakeHash, (const uint8_t *) context->secret, context->secretlen); + + if (context->flags & ARGON2_FLAG_CLEAR_SECRET) { + sodium_memzero(context->secret, context->secretlen); + context->secretlen = 0; + } + } + /* LCOV_EXCL_STOP */ + + STORE32_LE(value, context->adlen); + crypto_generichash_blake2b_update(&BlakeHash, value, sizeof(value)); + + /* LCOV_EXCL_START */ + if (context->ad != NULL) { + crypto_generichash_blake2b_update( + &BlakeHash, (const uint8_t *) context->ad, context->adlen); + } + /* LCOV_EXCL_STOP */ + + crypto_generichash_blake2b_final(&BlakeHash, blockhash, + ARGON2_PREHASH_DIGEST_LENGTH); +} + +int +argon2_initialize(argon2_instance_t *instance, argon2_context *context) +{ + uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; + int result = ARGON2_OK; + + if (instance == NULL || context == NULL) { + return ARGON2_INCORRECT_PARAMETER; + } + + /* 1. Memory allocation */ + + if ((instance->pseudo_rands = (uint64_t *) + malloc(sizeof(uint64_t) * instance->segment_length)) == NULL) { + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + result = allocate_memory(&(instance->region), instance->memory_blocks); + if (ARGON2_OK != result) { + argon2_free_instance(instance, context->flags); + return result; + } + + /* 2. Initial hashing */ + /* H_0 + 8 extra bytes to produce the first blocks */ + /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */ + /* Hashing all inputs */ + argon2_initial_hash(blockhash, context, instance->type); + /* Zeroing 8 extra bytes */ + sodium_memzero(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, + ARGON2_PREHASH_SEED_LENGTH - ARGON2_PREHASH_DIGEST_LENGTH); + + /* 3. Creating first blocks, we always have at least two blocks in a slice + */ + argon2_fill_first_blocks(blockhash, instance); + /* Clearing the hash */ + sodium_memzero(blockhash, ARGON2_PREHASH_SEED_LENGTH); + + return ARGON2_OK; +} + +static int +argon2_pick_best_implementation(void) +{ +/* LCOV_EXCL_START */ +#if defined(HAVE_AVX512FINTRIN_H) && defined(HAVE_AVX2INTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) && \ + !defined(__APPLE__) + if (sodium_runtime_has_avx512f()) { + fill_segment = argon2_fill_segment_avx512f; + return 0; + } +#endif +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_TMMINTRIN_H) && \ + defined(HAVE_SMMINTRIN_H) + if (sodium_runtime_has_avx2()) { + fill_segment = argon2_fill_segment_avx2; + return 0; + } +#endif +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) + if (sodium_runtime_has_ssse3()) { + fill_segment = argon2_fill_segment_ssse3; + return 0; + } +#endif + fill_segment = argon2_fill_segment_ref; + + return 0; + /* LCOV_EXCL_STOP */ +} + +int +_crypto_pwhash_argon2_pick_best_implementation(void) +{ + return argon2_pick_best_implementation(); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h new file mode 100644 index 0000000..2fd7f41 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h @@ -0,0 +1,271 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#ifndef argon2_core_H +#define argon2_core_H + +#include + +#include "argon2.h" + +/*************************Argon2 internal + * constants**************************************************/ + +enum argon2_ctx_constants { + /* Version of the algorithm */ + ARGON2_VERSION_NUMBER = 0x13, + + /* Memory block size in bytes */ + ARGON2_BLOCK_SIZE = 1024, + ARGON2_QWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 8, + ARGON2_OWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 16, + ARGON2_HWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 32, + ARGON2_512BIT_WORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 64, + + /* Number of pseudo-random values generated by one call to Blake in Argon2i + to + generate reference block positions */ + ARGON2_ADDRESSES_IN_BLOCK = 128, + + /* Pre-hashing digest length and its extension*/ + ARGON2_PREHASH_DIGEST_LENGTH = 64, + ARGON2_PREHASH_SEED_LENGTH = 72 +}; + +/*************************Argon2 internal data + * types**************************************************/ + +/* + * Structure for the (1KB) memory block implemented as 128 64-bit words. + * Memory blocks can be copied, XORed. Internal words can be accessed by [] (no + * bounds checking). + */ +typedef struct block_ { + uint64_t v[ARGON2_QWORDS_IN_BLOCK]; +} block; + +typedef struct block_region_ { + void * base; + block *memory; + size_t size; +} block_region; + +/*****************Functions that work with the block******************/ + +/* Initialize each byte of the block with @in */ +static inline void +init_block_value(block *b, uint8_t in) +{ + memset(b->v, in, sizeof(b->v)); +} + +/* Copy block @src to block @dst */ +static inline void +copy_block(block *dst, const block *src) +{ + memcpy(dst->v, src->v, sizeof(uint64_t) * ARGON2_QWORDS_IN_BLOCK); +} + +/* XOR @src onto @dst bytewise */ +static inline void +xor_block(block *dst, const block *src) +{ + int i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] ^= src->v[i]; + } +} + +/* + * Argon2 instance: memory pointer, number of passes, amount of memory, type, + * and derived values. + * Used to evaluate the number and location of blocks to construct in each + * thread + */ +typedef struct Argon2_instance_t { + block_region *region; /* Memory region pointer */ + uint64_t *pseudo_rands; + uint32_t passes; /* Number of passes */ + uint32_t current_pass; + uint32_t memory_blocks; /* Number of blocks in memory */ + uint32_t segment_length; + uint32_t lane_length; + uint32_t lanes; + uint32_t threads; + argon2_type type; + int print_internals; /* whether to print the memory blocks */ +} argon2_instance_t; + +/* + * Argon2 position: where we construct the block right now. Used to distribute + * work between threads. + */ +typedef struct Argon2_position_t { + uint32_t pass; + uint32_t lane; + uint8_t slice; + uint32_t index; +} argon2_position_t; + +/*Struct that holds the inputs for thread handling FillSegment*/ +typedef struct Argon2_thread_data { + argon2_instance_t *instance_ptr; + argon2_position_t pos; +} argon2_thread_data; + +/*************************Argon2 core + * functions**************************************************/ + +/* + * Computes absolute position of reference block in the lane following a skewed + * distribution and using a pseudo-random value as input + * @param instance Pointer to the current instance + * @param position Pointer to the current position + * @param pseudo_rand 32-bit pseudo-random value used to determine the position + * @param same_lane Indicates if the block will be taken from the current lane. + * If so we can reference the current segment + * @pre All pointers must be valid + */ +static uint32_t index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane) +{ + /* + * Pass 0: + * This lane : all already finished segments plus already constructed + * blocks in this segment + * Other lanes : all already finished segments + * Pass 1+: + * This lane : (SYNC_POINTS - 1) last segments plus already constructed + * blocks in this segment + * Other lanes : (SYNC_POINTS - 1) last segments + */ + uint32_t reference_area_size; + uint64_t relative_position; + uint32_t start_position, absolute_position; + + if (position->pass == 0) { + /* First pass */ + if (position->slice == 0) { + /* First slice */ + reference_area_size = + position->index - 1; /* all but the previous */ + } else { + if (same_lane) { + /* The same lane => add current segment */ + reference_area_size = + position->slice * instance->segment_length + + position->index - 1; + } else { + reference_area_size = + position->slice * instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + } else { + /* Second pass */ + if (same_lane) { + reference_area_size = instance->lane_length - + instance->segment_length + position->index - + 1; + } else { + reference_area_size = instance->lane_length - + instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + + /* 1.2.4. Mapping pseudo_rand to 0.. and produce + * relative position */ + relative_position = pseudo_rand; + relative_position = relative_position * relative_position >> 32; + relative_position = reference_area_size - 1 - + (reference_area_size * relative_position >> 32); + + /* 1.2.5 Computing starting position */ + start_position = 0; + + if (position->pass != 0) { + start_position = (position->slice == ARGON2_SYNC_POINTS - 1) + ? 0 + : (position->slice + 1) * instance->segment_length; + } + + /* 1.2.6. Computing absolute position */ + absolute_position = (start_position + relative_position) % + instance->lane_length; /* absolute position */ + return absolute_position; +} + +/* + * Function that validates all inputs against predefined restrictions and return + * an error code + * @param context Pointer to current Argon2 context + * @return ARGON2_OK if everything is all right, otherwise one of error codes + * (all defined in + */ +int argon2_validate_inputs(const argon2_context *context); + +/* + * Function allocates memory, hashes the inputs with Blake, and creates first + * two blocks. Returns the pointer to the main memory with 2 blocks per lane + * initialized + * @param context Pointer to the Argon2 internal structure containing memory + * pointer, and parameters for time and space requirements. + * @param instance Current Argon2 instance + * @return Zero if successful, -1 if memory failed to allocate. @context->state + * will be modified if successful. + */ +int argon2_initialize(argon2_instance_t *instance, argon2_context *context); + +/* + * XORing the last block of each lane, hashing it, making the tag. Deallocates + * the memory. + * @param context Pointer to current Argon2 context (use only the out parameters + * from it) + * @param instance Pointer to current instance of Argon2 + * @pre instance->state must point to necessary amount of memory + * @pre context->out must point to outlen bytes of memory + * @pre if context->free_cbk is not NULL, it should point to a function that + * deallocates memory + */ +void argon2_finalize(const argon2_context *context, + argon2_instance_t *instance); + +/* + * Function that fills the segment using previous segments also from other + * threads + * @param instance Pointer to the current instance + * @param position Current position + * @pre all block pointers must be valid + */ +typedef void (*fill_segment_fn)(const argon2_instance_t *instance, + argon2_position_t position); +void argon2_fill_segment_avx512f(const argon2_instance_t *instance, + argon2_position_t position); +void argon2_fill_segment_avx2(const argon2_instance_t *instance, + argon2_position_t position); +void argon2_fill_segment_ssse3(const argon2_instance_t *instance, + argon2_position_t position); +void argon2_fill_segment_ref(const argon2_instance_t *instance, + argon2_position_t position); + +/* + * Function that fills the entire memory t_cost times based on the first two + * blocks in each lane + * @param instance Pointer to the current instance + * @return Zero if successful, -1 if memory failed to allocate + */ +void argon2_fill_memory_blocks(argon2_instance_t *instance, uint32_t pass); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c new file mode 100644 index 0000000..6a80afe --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c @@ -0,0 +1,306 @@ +#include "argon2-encoding.h" +#include "argon2-core.h" +#include "utils.h" +#include +#include +#include +#include + +/* + * Example code for a decoder and encoder of "hash strings", with Argon2 + * parameters. + * + * The code was originally written by Thomas Pornin , + * to whom comments and remarks may be sent. It is released under what + * should amount to Public Domain or its closest equivalent; the + * following mantra is supposed to incarnate that fact with all the + * proper legal rituals: + * + * --------------------------------------------------------------------- + * This file is provided under the terms of Creative Commons CC0 1.0 + * Public Domain Dedication. To the extent possible under law, the + * author (Thomas Pornin) has waived all copyright and related or + * neighboring rights to this file. This work is published from: Canada. + * --------------------------------------------------------------------- + * + * Copyright (c) 2015 Thomas Pornin + */ + +/* ==================================================================== */ + +/* + * Decode decimal integer from 'str'; the value is written in '*v'. + * Returned value is a pointer to the next non-decimal character in the + * string. If there is no digit at all, or the value encoding is not + * minimal (extra leading zeros), or the value does not fit in an + * 'unsigned long', then NULL is returned. + */ +static const char * +decode_decimal(const char *str, unsigned long *v) +{ + const char *orig; + unsigned long acc; + + acc = 0; + for (orig = str;; str++) { + int c; + + c = *str; + if (c < '0' || c > '9') { + break; + } + c -= '0'; + if (acc > (ULONG_MAX / 10)) { + return NULL; + } + acc *= 10; + if ((unsigned long) c > (ULONG_MAX - acc)) { + return NULL; + } + acc += (unsigned long) c; + } + if (str == orig || (*orig == '0' && str != (orig + 1))) { + return NULL; + } + *v = acc; + return str; +} + +/* ==================================================================== */ +/* + * Code specific to Argon2. + * + * The code below applies the following format: + * + * $argon2[$v=]$m=,t=,p=$$ + * + * where is either 'i', is a decimal integer (positive, fits in an + * 'unsigned long') and is Base64-encoded data (no '=' padding characters, + * no newline or whitespace). + * + * The last two binary chunks (encoded in Base64) are, in that order, + * the salt and the output. Both are required. The binary salt length and the + * output length must be in the allowed ranges defined in argon2.h. + * + * The ctx struct must contain buffers large enough to hold the salt and pwd + * when it is fed into argon2_decode_string. + */ + +/* + * Decode an Argon2i hash string into the provided structure 'ctx'. + * Returned value is ARGON2_OK on success. + */ +int +argon2_decode_string(argon2_context *ctx, const char *str, argon2_type type) +{ +/* Prefix checking */ +#define CC(prefix) \ + do { \ + size_t cc_len = strlen(prefix); \ + if (strncmp(str, prefix, cc_len) != 0) { \ + return ARGON2_DECODING_FAIL; \ + } \ + str += cc_len; \ + } while ((void) 0, 0) + +/* Optional prefix checking with supplied code */ +#define CC_opt(prefix, code) \ + do { \ + size_t cc_len = strlen(prefix); \ + if (strncmp(str, prefix, cc_len) == 0) { \ + str += cc_len; \ + { \ + code; \ + } \ + } \ + } while ((void) 0, 0) + +/* Decoding prefix into decimal */ +#define DECIMAL(x) \ + do { \ + unsigned long dec_x; \ + str = decode_decimal(str, &dec_x); \ + if (str == NULL) { \ + return ARGON2_DECODING_FAIL; \ + } \ + (x) = dec_x; \ + } while ((void) 0, 0) + +/* Decoding prefix into uint32_t decimal */ +#define DECIMAL_U32(x) \ + do { \ + unsigned long dec_x; \ + str = decode_decimal(str, &dec_x); \ + if (str == NULL || dec_x > UINT32_MAX) { \ + return ARGON2_DECODING_FAIL; \ + } \ + (x) = (uint32_t)dec_x; \ + } while ((void)0, 0) + +/* Decoding base64 into a binary buffer */ +#define BIN(buf, max_len, len) \ + do { \ + size_t bin_len = (max_len); \ + const char *str_end; \ + if (sodium_base642bin((buf), (max_len), str, strlen(str), NULL, \ + &bin_len, &str_end, \ + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) != 0 || \ + bin_len > UINT32_MAX) { \ + return ARGON2_DECODING_FAIL; \ + } \ + (len) = (uint32_t) bin_len; \ + str = str_end; \ + } while ((void) 0, 0) + + size_t maxsaltlen = ctx->saltlen; + size_t maxoutlen = ctx->outlen; + int validation_result; + uint32_t version = 0; + + ctx->saltlen = 0; + ctx->outlen = 0; + + if (type == Argon2_id) { + CC("$argon2id"); + } else if (type == Argon2_i) { + CC("$argon2i"); + } else { + return ARGON2_INCORRECT_TYPE; + } + CC("$v="); + DECIMAL_U32(version); + if (version != ARGON2_VERSION_NUMBER) { + return ARGON2_INCORRECT_TYPE; + } + CC("$m="); + DECIMAL_U32(ctx->m_cost); + if (ctx->m_cost > UINT32_MAX) { + return ARGON2_INCORRECT_TYPE; + } + CC(",t="); + DECIMAL_U32(ctx->t_cost); + if (ctx->t_cost > UINT32_MAX) { + return ARGON2_INCORRECT_TYPE; + } + CC(",p="); + DECIMAL_U32(ctx->lanes); + if (ctx->lanes > UINT32_MAX) { + return ARGON2_INCORRECT_TYPE; + } + ctx->threads = ctx->lanes; + + CC("$"); + BIN(ctx->salt, maxsaltlen, ctx->saltlen); + CC("$"); + BIN(ctx->out, maxoutlen, ctx->outlen); + validation_result = argon2_validate_inputs(ctx); + if (validation_result != ARGON2_OK) { + return validation_result; + } + if (*str == 0) { + return ARGON2_OK; + } + return ARGON2_DECODING_FAIL; + +#undef CC +#undef CC_opt +#undef DECIMAL +#undef BIN +} + +#define U32_STR_MAXSIZE 11U + +static void +u32_to_string(char *str, uint32_t x) +{ + char tmp[U32_STR_MAXSIZE - 1U]; + size_t i; + + i = sizeof tmp; + do { + tmp[--i] = (x % (uint32_t) 10U) + '0'; + x /= (uint32_t) 10U; + } while (x != 0U && i != 0U); + memcpy(str, &tmp[i], (sizeof tmp) - i); + str[(sizeof tmp) - i] = 0; +} + +/* + * Encode an argon2i hash string into the provided buffer. 'dst_len' + * contains the size, in characters, of the 'dst' buffer; if 'dst_len' + * is less than the number of required characters (including the + * terminating 0), then this function returns 0. + * + * If pp->output_len is 0, then the hash string will be a salt string + * (no output). if pp->salt_len is also 0, then the string will be a + * parameter-only string (no salt and no output). + * + * On success, ARGON2_OK is returned. + */ +int +argon2_encode_string(char *dst, size_t dst_len, argon2_context *ctx, + argon2_type type) +{ +#define SS(str) \ + do { \ + size_t pp_len = strlen(str); \ + if (pp_len >= dst_len) { \ + return ARGON2_ENCODING_FAIL; \ + } \ + memcpy(dst, str, pp_len + 1); \ + dst += pp_len; \ + dst_len -= pp_len; \ + } while ((void) 0, 0) + +#define SX(x) \ + do { \ + char tmp[U32_STR_MAXSIZE]; \ + u32_to_string(tmp, x); \ + SS(tmp); \ + } while ((void) 0, 0) + +#define SB(buf, len) \ + do { \ + size_t sb_len; \ + if (sodium_bin2base64(dst, dst_len, (buf), (len), \ + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == NULL) { \ + return ARGON2_ENCODING_FAIL; \ + } \ + sb_len = strlen(dst); \ + dst += sb_len; \ + dst_len -= sb_len; \ + } while ((void) 0, 0) + + int validation_result; + + switch (type) { + case Argon2_id: + SS("$argon2id$v="); break; + case Argon2_i: + SS("$argon2i$v="); break; + default: + return ARGON2_ENCODING_FAIL; + } + validation_result = argon2_validate_inputs(ctx); + if (validation_result != ARGON2_OK) { + return validation_result; + } + SX(ARGON2_VERSION_NUMBER); + SS("$m="); + SX(ctx->m_cost); + SS(",t="); + SX(ctx->t_cost); + SS(",p="); + SX(ctx->lanes); + + SS("$"); + SB(ctx->salt, ctx->saltlen); + + SS("$"); + SB(ctx->out, ctx->outlen); + return ARGON2_OK; + +#undef SS +#undef SX +#undef SB +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.h new file mode 100644 index 0000000..c35fbf4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.h @@ -0,0 +1,34 @@ +#ifndef argon2_encoding_H +#define argon2_encoding_H + +#include "argon2.h" + +/* + * encode an Argon2 hash string into the provided buffer. 'dst_len' + * contains the size, in characters, of the 'dst' buffer; if 'dst_len' + * is less than the number of required characters (including the + * terminating 0), then this function returns 0. + * + * if ctx->outlen is 0, then the hash string will be a salt string + * (no output). if ctx->saltlen is also 0, then the string will be a + * parameter-only string (no salt and no output). + * + * On success, ARGON2_OK is returned. + * + * No other parameters are checked + */ +int argon2_encode_string(char *dst, size_t dst_len, argon2_context *ctx, + argon2_type type); + +/* + * Decodes an Argon2 hash string into the provided structure 'ctx'. + * The fields ctx.saltlen, ctx.adlen, ctx.outlen set the maximal salt, ad, out + * length values + * that are allowed; invalid input string causes an error + * + * Returned value is ARGON2_OK on success. + */ +int argon2_decode_string(argon2_context *ctx, const char *str, + argon2_type type); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c new file mode 100644 index 0000000..a35e1f9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c @@ -0,0 +1,239 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#include +#include +#include + +#include "argon2-core.h" +#include "argon2.h" +#include "private/common.h" + +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# pragma GCC target("sse4.1") +# pragma GCC target("avx2") +# endif + +# ifdef _MSC_VER +# include /* for _mm_set_epi64x */ +# endif +# include +# include +# include +# include +# include "private/sse2_64_32.h" + +# include "blamka-round-avx2.h" + +static void +fill_block(__m256i *state, const uint8_t *ref_block, uint8_t *next_block) +{ + __m256i block_XY[ARGON2_HWORDS_IN_BLOCK]; + uint32_t i; + + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((__m256i const *) (&ref_block[32 * i]))); + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_1(state[8 * i + 0], state[8 * i + 4], state[8 * i + 1], state[8 * i + 5], + state[8 * i + 2], state[8 * i + 6], state[8 * i + 3], state[8 * i + 7]); + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_2(state[ 0 + i], state[ 4 + i], state[ 8 + i], state[12 + i], + state[16 + i], state[20 + i], state[24 + i], state[28 + i]); + } + + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256(state[i], block_XY[i]); + _mm256_storeu_si256((__m256i *) (&next_block[32 * i]), state[i]); + } +} + +static void +fill_block_with_xor(__m256i *state, const uint8_t *ref_block, + uint8_t *next_block) +{ + __m256i block_XY[ARGON2_HWORDS_IN_BLOCK]; + uint32_t i; + + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((__m256i const *) (&ref_block[32 * i]))); + block_XY[i] = _mm256_xor_si256( + state[i], _mm256_loadu_si256((__m256i const *) (&next_block[32 * i]))); + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_1(state[8 * i + 0], state[8 * i + 4], state[8 * i + 1], state[8 * i + 5], + state[8 * i + 2], state[8 * i + 6], state[8 * i + 3], state[8 * i + 7]); + } + + for (i = 0; i < 4; ++i) { + BLAKE2_ROUND_2(state[ 0 + i], state[ 4 + i], state[ 8 + i], state[12 + i], + state[16 + i], state[20 + i], state[24 + i], state[28 + i]); + } + + for (i = 0; i < ARGON2_HWORDS_IN_BLOCK; i++) { + state[i] = _mm256_xor_si256(state[i], block_XY[i]); + _mm256_storeu_si256((__m256i *) (&next_block[32 * i]), state[i]); + } +} + +static void +generate_addresses(const argon2_instance_t *instance, + const argon2_position_t *position, uint64_t *pseudo_rands) +{ + block address_block, input_block, tmp_block; + uint32_t i; + + init_block_value(&address_block, 0); + init_block_value(&input_block, 0); + + if (instance != NULL && position != NULL) { + input_block.v[0] = position->pass; + input_block.v[1] = position->lane; + input_block.v[2] = position->slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + + for (i = 0; i < instance->segment_length; ++i) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + /* Temporary zero-initialized blocks */ + __m256i zero_block[ARGON2_HWORDS_IN_BLOCK]; + __m256i zero2_block[ARGON2_HWORDS_IN_BLOCK]; + + memset(zero_block, 0, sizeof(zero_block)); + memset(zero2_block, 0, sizeof(zero2_block)); + init_block_value(&address_block, 0); + init_block_value(&tmp_block, 0); + /* Increasing index counter */ + input_block.v[6]++; + /* First iteration of G */ + fill_block_with_xor(zero_block, (uint8_t *) &input_block.v, + (uint8_t *) &tmp_block.v); + /* Second iteration of G */ + fill_block_with_xor(zero2_block, (uint8_t *) &tmp_block.v, + (uint8_t *) &address_block.v); + } + + pseudo_rands[i] = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } + } +} + +void +argon2_fill_segment_avx2(const argon2_instance_t *instance, + argon2_position_t position) +{ + block *ref_block = NULL, *curr_block = NULL; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index, i; + __m256i state[ARGON2_HWORDS_IN_BLOCK]; + int data_independent_addressing = 1; + + /* Pseudo-random values that determine the reference block position */ + uint64_t *pseudo_rands = NULL; + + if (instance == NULL) { + return; + } + + if (instance->type == Argon2_id && + (position.pass != 0 || position.slice >= ARGON2_SYNC_POINTS / 2)) { + data_independent_addressing = 0; + } + + pseudo_rands = instance->pseudo_rands; + + if (data_independent_addressing) { + generate_addresses(instance, &position, pseudo_rands); + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + memcpy(state, ((instance->region->memory + prev_offset)->v), + ARGON2_BLOCK_SIZE); + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { +#pragma warning(push) +#pragma warning(disable : 6385) + pseudo_rand = pseudo_rands[i]; +#pragma warning(pop) + } else { + pseudo_rand = instance->region->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = instance->region->memory + + instance->lane_length * ref_lane + ref_index; + curr_block = instance->region->memory + curr_offset; + if (position.pass != 0) { + fill_block_with_xor(state, (uint8_t *) ref_block->v, + (uint8_t *) curr_block->v); + } else { + fill_block(state, (uint8_t *) ref_block->v, + (uint8_t *) curr_block->v); + } + } +} +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c new file mode 100644 index 0000000..6566804 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c @@ -0,0 +1,244 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#include +#include +#include + +#include "argon2-core.h" +#include "argon2.h" +#include "private/common.h" + +#if defined(HAVE_AVX512FINTRIN_H) && defined(HAVE_AVX2INTRIN_H) && \ + defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# pragma GCC target("sse4.1") +# pragma GCC target("avx2") +# pragma GCC target("avx512f") +# endif + +# ifdef _MSC_VER +# include /* for _mm_set_epi64x */ +# endif +# include +# include +# include +# include +# include "private/sse2_64_32.h" + +# include "blamka-round-avx512f.h" + +static void +fill_block(__m512i *state, const uint8_t *ref_block, uint8_t *next_block) +{ + __m512i block_XY[ARGON2_512BIT_WORDS_IN_BLOCK]; + uint32_t i; + + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((__m512i const *) (&ref_block[64 * i]))); + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_1( + state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], state[8 * i + 3], + state[8 * i + 4], state[8 * i + 5], state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_2( + state[2 * 0 + i], state[2 * 1 + i], state[2 * 2 + i], state[2 * 3 + i], + state[2 * 4 + i], state[2 * 5 + i], state[2 * 6 + i], state[2 * 7 + i]); + } + + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512(state[i], block_XY[i]); + _mm512_storeu_si512((__m512i *) (&next_block[64 * i]), state[i]); + } +} + +static void +fill_block_with_xor(__m512i *state, const uint8_t *ref_block, + uint8_t *next_block) +{ + __m512i block_XY[ARGON2_512BIT_WORDS_IN_BLOCK]; + uint32_t i; + + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((__m512i const *) (&ref_block[64 * i]))); + block_XY[i] = _mm512_xor_si512( + state[i], _mm512_loadu_si512((__m512i const *) (&next_block[64 * i]))); + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_1( + state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], state[8 * i + 3], + state[8 * i + 4], state[8 * i + 5], state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 2; ++i) { + BLAKE2_ROUND_2( + state[2 * 0 + i], state[2 * 1 + i], state[2 * 2 + i], state[2 * 3 + i], + state[2 * 4 + i], state[2 * 5 + i], state[2 * 6 + i], state[2 * 7 + i]); + } + + for (i = 0; i < ARGON2_512BIT_WORDS_IN_BLOCK; i++) { + state[i] = _mm512_xor_si512(state[i], block_XY[i]); + _mm512_storeu_si512((__m512i *) (&next_block[64 * i]), state[i]); + } +} + +static void +generate_addresses(const argon2_instance_t *instance, + const argon2_position_t *position, uint64_t *pseudo_rands) +{ + block address_block, input_block, tmp_block; + uint32_t i; + + init_block_value(&address_block, 0); + init_block_value(&input_block, 0); + + if (instance != NULL && position != NULL) { + input_block.v[0] = position->pass; + input_block.v[1] = position->lane; + input_block.v[2] = position->slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + + for (i = 0; i < instance->segment_length; ++i) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + /* Temporary zero-initialized blocks */ + __m512i zero_block[ARGON2_512BIT_WORDS_IN_BLOCK]; + __m512i zero2_block[ARGON2_512BIT_WORDS_IN_BLOCK]; + + memset(zero_block, 0, sizeof(zero_block)); + memset(zero2_block, 0, sizeof(zero2_block)); + init_block_value(&address_block, 0); + init_block_value(&tmp_block, 0); + /* Increasing index counter */ + input_block.v[6]++; + /* First iteration of G */ + fill_block_with_xor(zero_block, (uint8_t *) &input_block.v, + (uint8_t *) &tmp_block.v); + /* Second iteration of G */ + fill_block_with_xor(zero2_block, (uint8_t *) &tmp_block.v, + (uint8_t *) &address_block.v); + } + + pseudo_rands[i] = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } + } +} + +void +argon2_fill_segment_avx512f(const argon2_instance_t *instance, + argon2_position_t position) +{ + block *ref_block = NULL, *curr_block = NULL; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index, i; + __m512i state[ARGON2_512BIT_WORDS_IN_BLOCK]; + int data_independent_addressing = 1; + + /* Pseudo-random values that determine the reference block position */ + uint64_t *pseudo_rands = NULL; + + if (instance == NULL) { + return; + } + + if (instance->type == Argon2_id && + (position.pass != 0 || position.slice >= ARGON2_SYNC_POINTS / 2)) { + data_independent_addressing = 0; + } + + pseudo_rands = instance->pseudo_rands; + + if (data_independent_addressing) { + generate_addresses(instance, &position, pseudo_rands); + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + memcpy(state, ((instance->region->memory + prev_offset)->v), + ARGON2_BLOCK_SIZE); + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { +#pragma warning(push) +#pragma warning(disable : 6385) + pseudo_rand = pseudo_rands[i]; +#pragma warning(pop) + } else { + pseudo_rand = instance->region->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = instance->region->memory + + instance->lane_length * ref_lane + ref_index; + curr_block = instance->region->memory + curr_offset; + if (position.pass != 0) { + fill_block_with_xor(state, (uint8_t *) ref_block->v, + (uint8_t *) curr_block->v); + } else { + fill_block(state, (uint8_t *) ref_block->v, + (uint8_t *) curr_block->v); + } + } +} +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c new file mode 100644 index 0000000..567895d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c @@ -0,0 +1,234 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#include +#include +#include + +#include "argon2-core.h" +#include "argon2.h" +#include "blamka-round-ref.h" +#include "private/common.h" + +static void +fill_block(const block *prev_block, const block *ref_block, block *next_block) +{ + block blockR, block_tmp; + unsigned i; + + copy_block(&blockR, ref_block); + xor_block(&blockR, prev_block); + copy_block(&block_tmp, &blockR); + /* Now blockR = ref_block + prev_block and bloc_tmp = ref_block + prev_block + Apply Blake2 on columns of 64-bit words: (0,1,...,15), then + (16,17,..31)... finally (112,113,...127) */ + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND_NOMSG( + blockR.v[16 * i], blockR.v[16 * i + 1], blockR.v[16 * i + 2], + blockR.v[16 * i + 3], blockR.v[16 * i + 4], blockR.v[16 * i + 5], + blockR.v[16 * i + 6], blockR.v[16 * i + 7], blockR.v[16 * i + 8], + blockR.v[16 * i + 9], blockR.v[16 * i + 10], blockR.v[16 * i + 11], + blockR.v[16 * i + 12], blockR.v[16 * i + 13], blockR.v[16 * i + 14], + blockR.v[16 * i + 15]); + } + + /* Apply Blake2 on rows of 64-bit words: (0,1,16,17,...112,113), then + (2,3,18,19,...,114,115).. finally (14,15,30,31,...,126,127) */ + for (i = 0; i < 8; i++) { + BLAKE2_ROUND_NOMSG( + blockR.v[2 * i], blockR.v[2 * i + 1], blockR.v[2 * i + 16], + blockR.v[2 * i + 17], blockR.v[2 * i + 32], blockR.v[2 * i + 33], + blockR.v[2 * i + 48], blockR.v[2 * i + 49], blockR.v[2 * i + 64], + blockR.v[2 * i + 65], blockR.v[2 * i + 80], blockR.v[2 * i + 81], + blockR.v[2 * i + 96], blockR.v[2 * i + 97], blockR.v[2 * i + 112], + blockR.v[2 * i + 113]); + } + + copy_block(next_block, &block_tmp); + xor_block(next_block, &blockR); +} + +static void +fill_block_with_xor(const block *prev_block, const block *ref_block, + block *next_block) +{ + block blockR, block_tmp; + unsigned i; + + copy_block(&blockR, ref_block); + xor_block(&blockR, prev_block); + copy_block(&block_tmp, &blockR); + xor_block(&block_tmp, + next_block); /* Saving the next block contents for XOR over */ + /* Now blockR = ref_block + prev_block and bloc_tmp = ref_block + prev_block + * + next_block */ + /* Apply Blake2 on columns of 64-bit words: (0,1,...,15) , then + (16,17,..31)... finally (112,113,...127) */ + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND_NOMSG( + blockR.v[16 * i], blockR.v[16 * i + 1], blockR.v[16 * i + 2], + blockR.v[16 * i + 3], blockR.v[16 * i + 4], blockR.v[16 * i + 5], + blockR.v[16 * i + 6], blockR.v[16 * i + 7], blockR.v[16 * i + 8], + blockR.v[16 * i + 9], blockR.v[16 * i + 10], blockR.v[16 * i + 11], + blockR.v[16 * i + 12], blockR.v[16 * i + 13], blockR.v[16 * i + 14], + blockR.v[16 * i + 15]); + } + + /* Apply Blake2 on rows of 64-bit words: (0,1,16,17,...112,113), then + (2,3,18,19,...,114,115).. finally (14,15,30,31,...,126,127) */ + for (i = 0; i < 8; i++) { + BLAKE2_ROUND_NOMSG( + blockR.v[2 * i], blockR.v[2 * i + 1], blockR.v[2 * i + 16], + blockR.v[2 * i + 17], blockR.v[2 * i + 32], blockR.v[2 * i + 33], + blockR.v[2 * i + 48], blockR.v[2 * i + 49], blockR.v[2 * i + 64], + blockR.v[2 * i + 65], blockR.v[2 * i + 80], blockR.v[2 * i + 81], + blockR.v[2 * i + 96], blockR.v[2 * i + 97], blockR.v[2 * i + 112], + blockR.v[2 * i + 113]); + } + + copy_block(next_block, &block_tmp); + xor_block(next_block, &blockR); +} + +/* + * Generate pseudo-random values to reference blocks in the segment and puts + * them into the array + * @param instance Pointer to the current instance + * @param position Pointer to the current position + * @param pseudo_rands Pointer to the array of 64-bit values + * @pre pseudo_rands must point to @a instance->segment_length allocated values + */ +static void +generate_addresses(const argon2_instance_t *instance, + const argon2_position_t *position, uint64_t *pseudo_rands) +{ + block zero_block, input_block, address_block, tmp_block; + uint32_t i; + + init_block_value(&zero_block, 0); + init_block_value(&input_block, 0); + + if (instance != NULL && position != NULL) { + input_block.v[0] = position->pass; + input_block.v[1] = position->lane; + input_block.v[2] = position->slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + + for (i = 0; i < instance->segment_length; ++i) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + input_block.v[6]++; + init_block_value(&tmp_block, 0); + init_block_value(&address_block, 0); + fill_block_with_xor(&zero_block, &input_block, &tmp_block); + fill_block_with_xor(&zero_block, &tmp_block, &address_block); + } + + pseudo_rands[i] = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } + } +} + +void +argon2_fill_segment_ref(const argon2_instance_t *instance, + argon2_position_t position) +{ + block *ref_block = NULL, *curr_block = NULL; + /* Pseudo-random values that determine the reference block position */ + uint64_t *pseudo_rands = NULL; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index; + uint32_t i; + int data_independent_addressing = 1; + + if (instance == NULL) { + return; + } + + if (instance->type == Argon2_id && + (position.pass != 0 || position.slice >= ARGON2_SYNC_POINTS / 2)) { + data_independent_addressing = 0; + } + + pseudo_rands = instance->pseudo_rands; + + if (data_independent_addressing) { + generate_addresses(instance, &position, pseudo_rands); + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { +#pragma warning(push) +#pragma warning(disable : 6385) + pseudo_rand = pseudo_rands[i]; +#pragma warning(pop) + } else { + pseudo_rand = instance->region->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = instance->region->memory + + instance->lane_length * ref_lane + ref_index; + curr_block = instance->region->memory + curr_offset; + if (position.pass != 0) { + fill_block_with_xor(instance->region->memory + prev_offset, + ref_block, curr_block); + } else { + fill_block(instance->region->memory + prev_offset, ref_block, + curr_block); + } + } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c new file mode 100644 index 0000000..fc85a47 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c @@ -0,0 +1,238 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#include +#include +#include + +#include "argon2-core.h" +#include "argon2.h" +#include "private/common.h" + +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# endif + +# ifdef _MSC_VER +# include /* for _mm_set_epi64x */ +# endif +# include +# include +# include "private/sse2_64_32.h" + +# include "blamka-round-ssse3.h" + +static void +fill_block(__m128i *state, const uint8_t *ref_block, uint8_t *next_block) +{ + __m128i block_XY[ARGON2_OWORDS_IN_BLOCK]; + uint32_t i; + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((__m128i const *) (&ref_block[16 * i]))); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], + state[8 * i + 3], state[8 * i + 4], state[8 * i + 5], + state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i], + state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i], + state[8 * 6 + i], state[8 * 7 + i]); + } + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128(state[i], block_XY[i]); + _mm_storeu_si128((__m128i *) (&next_block[16 * i]), state[i]); + } +} + +static void +fill_block_with_xor(__m128i *state, const uint8_t *ref_block, + uint8_t *next_block) +{ + __m128i block_XY[ARGON2_OWORDS_IN_BLOCK]; + uint32_t i; + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((__m128i const *) (&ref_block[16 * i]))); + block_XY[i] = _mm_xor_si128( + state[i], _mm_loadu_si128((__m128i const *) (&next_block[16 * i]))); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], + state[8 * i + 3], state[8 * i + 4], state[8 * i + 5], + state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i], + state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i], + state[8 * 6 + i], state[8 * 7 + i]); + } + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = _mm_xor_si128(state[i], block_XY[i]); + _mm_storeu_si128((__m128i *) (&next_block[16 * i]), state[i]); + } +} + +static void +generate_addresses(const argon2_instance_t *instance, + const argon2_position_t *position, uint64_t *pseudo_rands) +{ + block address_block, input_block, tmp_block; + uint32_t i; + + init_block_value(&address_block, 0); + init_block_value(&input_block, 0); + + if (instance != NULL && position != NULL) { + input_block.v[0] = position->pass; + input_block.v[1] = position->lane; + input_block.v[2] = position->slice; + input_block.v[3] = instance->memory_blocks; + input_block.v[4] = instance->passes; + input_block.v[5] = instance->type; + + for (i = 0; i < instance->segment_length; ++i) { + if (i % ARGON2_ADDRESSES_IN_BLOCK == 0) { + /* Temporary zero-initialized blocks */ + __m128i zero_block[ARGON2_OWORDS_IN_BLOCK]; + __m128i zero2_block[ARGON2_OWORDS_IN_BLOCK]; + + memset(zero_block, 0, sizeof(zero_block)); + memset(zero2_block, 0, sizeof(zero2_block)); + init_block_value(&address_block, 0); + init_block_value(&tmp_block, 0); + /* Increasing index counter */ + input_block.v[6]++; + /* First iteration of G */ + fill_block_with_xor(zero_block, (uint8_t *) &input_block.v, + (uint8_t *) &tmp_block.v); + /* Second iteration of G */ + fill_block_with_xor(zero2_block, (uint8_t *) &tmp_block.v, + (uint8_t *) &address_block.v); + } + + pseudo_rands[i] = address_block.v[i % ARGON2_ADDRESSES_IN_BLOCK]; + } + } +} + +void +argon2_fill_segment_ssse3(const argon2_instance_t *instance, + argon2_position_t position) +{ + block *ref_block = NULL, *curr_block = NULL; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index, i; + __m128i state[ARGON2_OWORDS_IN_BLOCK]; + int data_independent_addressing = 1; + + /* Pseudo-random values that determine the reference block position */ + uint64_t *pseudo_rands = NULL; + + if (instance == NULL) { + return; + } + + if (instance->type == Argon2_id && + (position.pass != 0 || position.slice >= ARGON2_SYNC_POINTS / 2)) { + data_independent_addressing = 0; + } + + pseudo_rands = instance->pseudo_rands; + + if (data_independent_addressing) { + generate_addresses(instance, &position, pseudo_rands); + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + memcpy(state, ((instance->region->memory + prev_offset)->v), + ARGON2_BLOCK_SIZE); + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + if (data_independent_addressing) { +#pragma warning(push) +#pragma warning(disable : 6385) + pseudo_rand = pseudo_rands[i]; +#pragma warning(pop) + } else { + pseudo_rand = instance->region->memory[prev_offset].v[0]; + } + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = instance->region->memory + + instance->lane_length * ref_lane + ref_index; + curr_block = instance->region->memory + curr_offset; + if (position.pass != 0) { + fill_block_with_xor(state, (uint8_t *) ref_block->v, + (uint8_t *) curr_block->v); + } else { + fill_block(state, (uint8_t *) ref_block->v, + (uint8_t *) curr_block->v); + } + } +} +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c new file mode 100644 index 0000000..4d69f11 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c @@ -0,0 +1,283 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with + * this software. If not, see + * . + */ + +#include +#include +#include +#include +#include + +#include "randombytes.h" +#include "utils.h" + +#include "argon2-core.h" +#include "argon2-encoding.h" +#include "argon2.h" + +int +argon2_ctx(argon2_context *context, argon2_type type) +{ + /* 1. Validate all inputs */ + int result = argon2_validate_inputs(context); + uint32_t memory_blocks, segment_length; + uint32_t pass; + argon2_instance_t instance; + + if (ARGON2_OK != result) { + return result; + } + + if (type != Argon2_id && type != Argon2_i) { + return ARGON2_INCORRECT_TYPE; + } + + /* 2. Align memory size */ + /* Minimum memory_blocks = 8L blocks, where L is the number of lanes */ + memory_blocks = context->m_cost; + + if (memory_blocks < 2 * ARGON2_SYNC_POINTS * context->lanes) { + memory_blocks = 2 * ARGON2_SYNC_POINTS * context->lanes; + } + + segment_length = memory_blocks / (context->lanes * ARGON2_SYNC_POINTS); + /* Ensure that all segments have equal length */ + memory_blocks = segment_length * (context->lanes * ARGON2_SYNC_POINTS); + + instance.region = NULL; + instance.passes = context->t_cost; + instance.current_pass = ~ 0U; + instance.memory_blocks = memory_blocks; + instance.segment_length = segment_length; + instance.lane_length = segment_length * ARGON2_SYNC_POINTS; + instance.lanes = context->lanes; + instance.threads = context->threads; + instance.type = type; + + /* 3. Initialization: Hashing inputs, allocating memory, filling first + * blocks + */ + result = argon2_initialize(&instance, context); + + if (ARGON2_OK != result) { + return result; + } + + /* 4. Filling memory */ + for (pass = 0; pass < instance.passes; pass++) { + argon2_fill_memory_blocks(&instance, pass); + } + + /* 5. Finalization */ + argon2_finalize(context, &instance); + + return ARGON2_OK; +} + +int +argon2_hash(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, const size_t pwdlen, + const void *salt, const size_t saltlen, void *hash, + const size_t hashlen, char *encoded, const size_t encodedlen, + argon2_type type) +{ + argon2_context context; + int result; + uint8_t *out; + + if (hash != NULL) { + randombytes_buf(hash, hashlen); + } + + if (pwdlen > ARGON2_MAX_PWD_LENGTH) { + return ARGON2_PWD_TOO_LONG; + } + + if (hashlen > ARGON2_MAX_OUTLEN) { + return ARGON2_OUTPUT_TOO_LONG; + } + + if (saltlen > ARGON2_MAX_SALT_LENGTH) { + return ARGON2_SALT_TOO_LONG; + } + + out = (uint8_t *) malloc(hashlen); + if (!out) { + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + context.out = (uint8_t *) out; + context.outlen = (uint32_t) hashlen; + context.pwd = (uint8_t *) pwd; + context.pwdlen = (uint32_t) pwdlen; + context.salt = (uint8_t *) salt; + context.saltlen = (uint32_t) saltlen; + context.secret = NULL; + context.secretlen = 0; + context.ad = NULL; + context.adlen = 0; + context.t_cost = t_cost; + context.m_cost = m_cost; + context.lanes = parallelism; + context.threads = parallelism; + context.flags = ARGON2_DEFAULT_FLAGS; + + result = argon2_ctx(&context, type); + + if (result != ARGON2_OK) { + sodium_memzero(out, hashlen); + free(out); + return result; + } + + /* if encoding requested, write it */ + if (encoded && encodedlen) { + if (argon2_encode_string(encoded, encodedlen, + &context, type) != ARGON2_OK) { + sodium_memzero(out, hashlen); + sodium_memzero(encoded, encodedlen); + free(out); + return ARGON2_ENCODING_FAIL; + } + } + + /* if raw hash requested, write it */ + if (hash) { + memcpy(hash, out, hashlen); + } + + sodium_memzero(out, hashlen); + free(out); + + return ARGON2_OK; +} + +int +argon2i_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, char *encoded, + const size_t encodedlen) +{ + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + NULL, hashlen, encoded, encodedlen, Argon2_i); +} + +int +argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, const size_t saltlen, + void *hash, const size_t hashlen) +{ + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + hash, hashlen, NULL, 0, Argon2_i); +} + +int +argon2id_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, char *encoded, + const size_t encodedlen) +{ + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + NULL, hashlen, encoded, encodedlen, Argon2_id); +} + +int +argon2id_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, const size_t saltlen, + void *hash, const size_t hashlen) +{ + return argon2_hash(t_cost, m_cost, parallelism, pwd, pwdlen, salt, saltlen, + hash, hashlen, NULL, 0, Argon2_id); +} + +int +argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen, + argon2_type type) +{ + argon2_context ctx; + uint8_t *out; + int decode_result; + int ret; + size_t encoded_len; + + memset(&ctx, 0, sizeof ctx); + + ctx.pwd = NULL; + ctx.pwdlen = 0; + ctx.secret = NULL; + ctx.secretlen = 0; + + /* max values, to be updated in argon2_decode_string */ + encoded_len = strlen(encoded); + if (encoded_len > UINT32_MAX) { + return ARGON2_DECODING_LENGTH_FAIL; + } + ctx.adlen = (uint32_t) encoded_len; + ctx.saltlen = (uint32_t) encoded_len; + ctx.outlen = (uint32_t) encoded_len; + + ctx.ad = (uint8_t *) malloc(ctx.adlen); + ctx.salt = (uint8_t *) malloc(ctx.saltlen); + ctx.out = (uint8_t *) malloc(ctx.outlen); + if (!ctx.out || !ctx.salt || !ctx.ad) { + free(ctx.ad); + free(ctx.salt); + free(ctx.out); + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + out = (uint8_t *) malloc(ctx.outlen); + if (!out) { + free(ctx.ad); + free(ctx.salt); + free(ctx.out); + return ARGON2_MEMORY_ALLOCATION_ERROR; + } + + decode_result = argon2_decode_string(&ctx, encoded, type); + if (decode_result != ARGON2_OK) { + free(ctx.ad); + free(ctx.salt); + free(ctx.out); + free(out); + return decode_result; + } + + ret = argon2_hash(ctx.t_cost, ctx.m_cost, ctx.threads, pwd, pwdlen, + ctx.salt, ctx.saltlen, out, ctx.outlen, NULL, 0, type); + + free(ctx.ad); + free(ctx.salt); + + if (ret == ARGON2_OK && sodium_memcmp(out, ctx.out, ctx.outlen) != 0) { + ret = ARGON2_VERIFY_MISMATCH; + } + free(out); + free(ctx.out); + + return ret; +} + +int +argon2i_verify(const char *encoded, const void *pwd, const size_t pwdlen) +{ + return argon2_verify(encoded, pwd, pwdlen, Argon2_i); +} + +int +argon2id_verify(const char *encoded, const void *pwd, const size_t pwdlen) +{ + return argon2_verify(encoded, pwd, pwdlen, Argon2_id); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.h new file mode 100644 index 0000000..3b05daa --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.h @@ -0,0 +1,305 @@ +/* + * Argon2 source code package + * + * Written by Daniel Dinu and Dmitry Khovratovich, 2015 + * + * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. + * + * You should have received a copy of the CC0 Public Domain Dedication along + * with this software. If not, see + * . + */ +#ifndef argon2_H +#define argon2_H + +#include +#include +#include + +/* + * Argon2 input parameter restrictions + */ + +/* Minimum and maximum number of lanes (degree of parallelism) */ +#define ARGON2_MIN_LANES UINT32_C(1) +#define ARGON2_MAX_LANES UINT32_C(0xFFFFFF) + +/* Minimum and maximum number of threads */ +#define ARGON2_MIN_THREADS UINT32_C(1) +#define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF) + +/* Number of synchronization points between lanes per pass */ +#define ARGON2_SYNC_POINTS UINT32_C(4) + +/* Minimum and maximum digest size in bytes */ +#define ARGON2_MIN_OUTLEN UINT32_C(16) +#define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */ +#define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */ + +#define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b)) +/* Max memory size is half the addressing space, topping at 2^32 blocks (4 TB) + */ +#define ARGON2_MAX_MEMORY_BITS \ + ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1)) +#define ARGON2_MAX_MEMORY \ + ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS) + +/* Minimum and maximum number of passes */ +#define ARGON2_MIN_TIME UINT32_C(1) +#define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum password length in bytes */ +#define ARGON2_MIN_PWD_LENGTH UINT32_C(0) +#define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum associated data length in bytes */ +#define ARGON2_MIN_AD_LENGTH UINT32_C(0) +#define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum salt length in bytes */ +#define ARGON2_MIN_SALT_LENGTH UINT32_C(8) +#define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum key length in bytes */ +#define ARGON2_MIN_SECRET UINT32_C(0) +#define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF) + +#define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0) +#define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1) +#define ARGON2_FLAG_CLEAR_MEMORY (UINT32_C(1) << 2) +#define ARGON2_DEFAULT_FLAGS (UINT32_C(0)) + +/* Error codes */ +typedef enum Argon2_ErrorCodes { + ARGON2_OK = 0, + + ARGON2_OUTPUT_PTR_NULL = -1, + + ARGON2_OUTPUT_TOO_SHORT = -2, + ARGON2_OUTPUT_TOO_LONG = -3, + + ARGON2_PWD_TOO_SHORT = -4, + ARGON2_PWD_TOO_LONG = -5, + + ARGON2_SALT_TOO_SHORT = -6, + ARGON2_SALT_TOO_LONG = -7, + + ARGON2_AD_TOO_SHORT = -8, + ARGON2_AD_TOO_LONG = -9, + + ARGON2_SECRET_TOO_SHORT = -10, + ARGON2_SECRET_TOO_LONG = -11, + + ARGON2_TIME_TOO_SMALL = -12, + ARGON2_TIME_TOO_LARGE = -13, + + ARGON2_MEMORY_TOO_LITTLE = -14, + ARGON2_MEMORY_TOO_MUCH = -15, + + ARGON2_LANES_TOO_FEW = -16, + ARGON2_LANES_TOO_MANY = -17, + + ARGON2_PWD_PTR_MISMATCH = -18, /* NULL ptr with non-zero length */ + ARGON2_SALT_PTR_MISMATCH = -19, /* NULL ptr with non-zero length */ + ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */ + ARGON2_AD_PTR_MISMATCH = -21, /* NULL ptr with non-zero length */ + + ARGON2_MEMORY_ALLOCATION_ERROR = -22, + + ARGON2_FREE_MEMORY_CBK_NULL = -23, + ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24, + + ARGON2_INCORRECT_PARAMETER = -25, + ARGON2_INCORRECT_TYPE = -26, + + ARGON2_OUT_PTR_MISMATCH = -27, + + ARGON2_THREADS_TOO_FEW = -28, + ARGON2_THREADS_TOO_MANY = -29, + + ARGON2_MISSING_ARGS = -30, + + ARGON2_ENCODING_FAIL = -31, + + ARGON2_DECODING_FAIL = -32, + + ARGON2_THREAD_FAIL = -33, + + ARGON2_DECODING_LENGTH_FAIL = -34, + + ARGON2_VERIFY_MISMATCH = -35 +} argon2_error_codes; + +/* Argon2 external data structures */ + +/* + * Context: structure to hold Argon2 inputs: + * output array and its length, + * password and its length, + * salt and its length, + * secret and its length, + * associated data and its length, + * number of passes, amount of used memory (in KBytes, can be rounded up a bit) + * number of parallel threads that will be run. + * All the parameters above affect the output hash value. + * Additionally, two function pointers can be provided to allocate and + * deallocate the memory (if NULL, memory will be allocated internally). + * Also, three flags indicate whether to erase password, secret as soon as they + * are pre-hashed (and thus not needed anymore), and the entire memory + ***** + * Simplest situation: you have output array out[8], password is stored in + * pwd[32], salt is stored in salt[16], you do not have keys nor associated + *data. + * You need to spend 1 GB of RAM and you run 5 passes of Argon2 with 4 parallel + *lanes. + * You want to erase the password, but you're OK with last pass not being + *erased. + * You want to use the default memory allocator. + * Then you initialize: + * Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false). + */ +typedef struct Argon2_Context { + uint8_t *out; /* output array */ + uint32_t outlen; /* digest length */ + + uint8_t *pwd; /* password array */ + uint32_t pwdlen; /* password length */ + + uint8_t *salt; /* salt array */ + uint32_t saltlen; /* salt length */ + + uint8_t *secret; /* key array */ + uint32_t secretlen; /* key length */ + + uint8_t *ad; /* associated data array */ + uint32_t adlen; /* associated data length */ + + uint32_t t_cost; /* number of passes */ + uint32_t m_cost; /* amount of memory requested (KB) */ + uint32_t lanes; /* number of lanes */ + uint32_t threads; /* maximum number of threads */ + + uint32_t flags; /* array of bool options */ +} argon2_context; + +/* Argon2 primitive type */ +typedef enum Argon2_type { Argon2_i = 1, Argon2_id = 2 } argon2_type; + +/* + * Function that performs memory-hard hashing with certain degree of parallelism + * @param context Pointer to the Argon2 internal structure + * @return Error code if smth is wrong, ARGON2_OK otherwise + */ +int argon2_ctx(argon2_context *context, argon2_type type); + +/** + * Hashes a password with Argon2i, producing an encoded hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hashlen Desired length of the hash in bytes + * @param encoded Buffer where to write the encoded hash + * @param encodedlen Size of the buffer (thus max size of the encoded hash) + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +int argon2i_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, + char *encoded, const size_t encodedlen); + +/** + * Hashes a password with Argon2id, producing an encoded hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hashlen Desired length of the hash in bytes + * @param encoded Buffer where to write the encoded hash + * @param encodedlen Size of the buffer (thus max size of the encoded hash) + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +int argon2id_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, const size_t hashlen, + char *encoded, const size_t encodedlen); + +/** + * Hashes a password with Argon2i, producing a raw hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hash Buffer where to write the raw hash + * @param hashlen Desired length of the hash in bytes + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +int argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, const size_t hashlen); + +/** + * Hashes a password with Argon2id, producing a raw hash + * @param t_cost Number of iterations + * @param m_cost Sets memory usage to m_cost kibibytes + * @param parallelism Number of threads and compute lanes + * @param pwd Pointer to password + * @param pwdlen Password size in bytes + * @param salt Pointer to salt + * @param saltlen Salt size in bytes + * @param hash Buffer where to write the raw hash + * @param hashlen Desired length of the hash in bytes + * @pre Different parallelism levels will give different results + * @pre Returns ARGON2_OK if successful + */ +int argon2id_hash_raw(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, + const size_t saltlen, void *hash, const size_t hashlen); + +/* generic function underlying the above ones */ +int argon2_hash(const uint32_t t_cost, const uint32_t m_cost, + const uint32_t parallelism, const void *pwd, + const size_t pwdlen, const void *salt, const size_t saltlen, + void *hash, const size_t hashlen, char *encoded, + const size_t encodedlen, argon2_type type); + +/** + * Verifies a password against an encoded string + * Encoded string is restricted as in argon2_validate_inputs() + * @param encoded String encoding parameters, salt, hash + * @param pwd Pointer to password + * @pre Returns ARGON2_OK if successful + */ +int argon2i_verify(const char *encoded, const void *pwd, const size_t pwdlen); + +/** + * Verifies a password against an encoded string + * Encoded string is restricted as in argon2_validate_inputs() + * @param encoded String encoding parameters, salt, hash + * @param pwd Pointer to password + * @pre Returns ARGON2_OK if successful + */ +int argon2id_verify(const char *encoded, const void *pwd, const size_t pwdlen); + +/* generic function underlying the above ones */ +int argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen, + argon2_type type); +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.c new file mode 100644 index 0000000..f0364ac --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.c @@ -0,0 +1,79 @@ +#include +#include +#include +#include + +#include "crypto_generichash_blake2b.h" +#include "private/common.h" +#include "utils.h" + +#include "blake2b-long.h" + +int +blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) +{ + uint8_t *out = (uint8_t *) pout; + crypto_generichash_blake2b_state blake_state; + uint8_t outlen_bytes[4 /* sizeof(uint32_t) */] = { 0 }; + int ret = -1; + + if (outlen > UINT32_MAX) { + goto fail; /* LCOV_EXCL_LINE */ + } + + /* Ensure little-endian byte order! */ + STORE32_LE(outlen_bytes, (uint32_t) outlen); + +#define TRY(statement) \ + do { \ + ret = statement; \ + if (ret < 0) { \ + goto fail; \ + } \ + } while ((void) 0, 0) + + if (outlen <= crypto_generichash_blake2b_BYTES_MAX) { + TRY(crypto_generichash_blake2b_init(&blake_state, NULL, 0U, outlen)); + TRY(crypto_generichash_blake2b_update(&blake_state, outlen_bytes, + sizeof(outlen_bytes))); + TRY(crypto_generichash_blake2b_update( + &blake_state, (const unsigned char *) in, inlen)); + TRY(crypto_generichash_blake2b_final(&blake_state, out, outlen)); + } else { + uint32_t toproduce; + uint8_t out_buffer[crypto_generichash_blake2b_BYTES_MAX]; + uint8_t in_buffer[crypto_generichash_blake2b_BYTES_MAX]; + TRY(crypto_generichash_blake2b_init( + &blake_state, NULL, 0U, crypto_generichash_blake2b_BYTES_MAX)); + TRY(crypto_generichash_blake2b_update(&blake_state, outlen_bytes, + sizeof(outlen_bytes))); + TRY(crypto_generichash_blake2b_update( + &blake_state, (const unsigned char *) in, inlen)); + TRY(crypto_generichash_blake2b_final( + &blake_state, out_buffer, crypto_generichash_blake2b_BYTES_MAX)); + memcpy(out, out_buffer, crypto_generichash_blake2b_BYTES_MAX / 2); + out += crypto_generichash_blake2b_BYTES_MAX / 2; + toproduce = + (uint32_t) outlen - crypto_generichash_blake2b_BYTES_MAX / 2; + + while (toproduce > crypto_generichash_blake2b_BYTES_MAX) { + memcpy(in_buffer, out_buffer, crypto_generichash_blake2b_BYTES_MAX); + TRY(crypto_generichash_blake2b( + out_buffer, crypto_generichash_blake2b_BYTES_MAX, in_buffer, + crypto_generichash_blake2b_BYTES_MAX, NULL, 0U)); + memcpy(out, out_buffer, crypto_generichash_blake2b_BYTES_MAX / 2); + out += crypto_generichash_blake2b_BYTES_MAX / 2; + toproduce -= crypto_generichash_blake2b_BYTES_MAX / 2; + } + + memcpy(in_buffer, out_buffer, crypto_generichash_blake2b_BYTES_MAX); + TRY(crypto_generichash_blake2b(out_buffer, toproduce, in_buffer, + crypto_generichash_blake2b_BYTES_MAX, + NULL, 0U)); + memcpy(out, out_buffer, toproduce); + } +fail: + sodium_memzero(&blake_state, sizeof(blake_state)); + return ret; +#undef TRY +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.h new file mode 100644 index 0000000..3d6d775 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.h @@ -0,0 +1,8 @@ +#ifndef blake2b_long_H +#define blake2b_long_H + +#include + +int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx2.h new file mode 100644 index 0000000..f3dfa0f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx2.h @@ -0,0 +1,150 @@ +#ifndef blamka_round_avx2_H +#define blamka_round_avx2_H + +#include "private/common.h" +#include "private/sse2_64_32.h" + +#define rotr32(x) _mm256_shuffle_epi32(x, _MM_SHUFFLE(2, 3, 0, 1)) +#define rotr24(x) _mm256_shuffle_epi8(x, _mm256_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10, 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10)) +#define rotr16(x) _mm256_shuffle_epi8(x, _mm256_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9, 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9)) +#define rotr63(x) _mm256_xor_si256(_mm256_srli_epi64((x), 63), _mm256_add_epi64((x), (x))) + +#define G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i ml = _mm256_mul_epu32(A0, B0); \ + ml = _mm256_add_epi64(ml, ml); \ + A0 = _mm256_add_epi64(A0, _mm256_add_epi64(B0, ml)); \ + D0 = _mm256_xor_si256(D0, A0); \ + D0 = rotr32(D0); \ + \ + ml = _mm256_mul_epu32(C0, D0); \ + ml = _mm256_add_epi64(ml, ml); \ + C0 = _mm256_add_epi64(C0, _mm256_add_epi64(D0, ml)); \ + \ + B0 = _mm256_xor_si256(B0, C0); \ + B0 = rotr24(B0); \ + \ + ml = _mm256_mul_epu32(A1, B1); \ + ml = _mm256_add_epi64(ml, ml); \ + A1 = _mm256_add_epi64(A1, _mm256_add_epi64(B1, ml)); \ + D1 = _mm256_xor_si256(D1, A1); \ + D1 = rotr32(D1); \ + \ + ml = _mm256_mul_epu32(C1, D1); \ + ml = _mm256_add_epi64(ml, ml); \ + C1 = _mm256_add_epi64(C1, _mm256_add_epi64(D1, ml)); \ + \ + B1 = _mm256_xor_si256(B1, C1); \ + B1 = rotr24(B1); \ + } while((void)0, 0); + +#define G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i ml = _mm256_mul_epu32(A0, B0); \ + ml = _mm256_add_epi64(ml, ml); \ + A0 = _mm256_add_epi64(A0, _mm256_add_epi64(B0, ml)); \ + D0 = _mm256_xor_si256(D0, A0); \ + D0 = rotr16(D0); \ + \ + ml = _mm256_mul_epu32(C0, D0); \ + ml = _mm256_add_epi64(ml, ml); \ + C0 = _mm256_add_epi64(C0, _mm256_add_epi64(D0, ml)); \ + B0 = _mm256_xor_si256(B0, C0); \ + B0 = rotr63(B0); \ + \ + ml = _mm256_mul_epu32(A1, B1); \ + ml = _mm256_add_epi64(ml, ml); \ + A1 = _mm256_add_epi64(A1, _mm256_add_epi64(B1, ml)); \ + D1 = _mm256_xor_si256(D1, A1); \ + D1 = rotr16(D1); \ + \ + ml = _mm256_mul_epu32(C1, D1); \ + ml = _mm256_add_epi64(ml, ml); \ + C1 = _mm256_add_epi64(C1, _mm256_add_epi64(D1, ml)); \ + B1 = _mm256_xor_si256(B1, C1); \ + B1 = rotr63(B1); \ + } while((void)0, 0); + +#define DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \ + C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \ + \ + B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \ + C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while((void)0, 0); + +#define DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \ + __m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \ + B1 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + B0 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + \ + tmp1 = C0; \ + C0 = C1; \ + C1 = tmp1; \ + \ + tmp1 = _mm256_blend_epi32(D0, D1, 0xCC); \ + tmp2 = _mm256_blend_epi32(D0, D1, 0x33); \ + D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + } while(0); + +#define UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \ + C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \ + \ + B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \ + C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while((void)0, 0); + +#define UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + __m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \ + __m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \ + B0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + B1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + \ + tmp1 = C0; \ + C0 = C1; \ + C1 = tmp1; \ + \ + tmp1 = _mm256_blend_epi32(D0, D1, 0x33); \ + tmp2 = _mm256_blend_epi32(D0, D1, 0xCC); \ + D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \ + D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \ + } while((void)0, 0); + +#define BLAKE2_ROUND_1(A0, A1, B0, B1, C0, C1, D0, D1) \ + do{ \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \ + } while((void)0, 0); + +#define BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do{ \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \ + \ + UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + } while((void)0, 0); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx512f.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx512f.h new file mode 100644 index 0000000..9a82240 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx512f.h @@ -0,0 +1,145 @@ +#ifndef blamka_round_avx512f_H +#define blamka_round_avx512f_H + +#include "private/common.h" +#include "private/sse2_64_32.h" + +#define ror64(x, n) _mm512_ror_epi64((x), (n)) + +static inline __m512i +muladd(__m512i x, __m512i y) +{ + __m512i z = _mm512_mul_epu32(x, y); + + return _mm512_add_epi64(_mm512_add_epi64(x, y), _mm512_add_epi64(z, z)); +} + +#define G1_AVX512F(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = muladd(A0, B0); \ + A1 = muladd(A1, B1); \ + \ + D0 = _mm512_xor_si512(D0, A0); \ + D1 = _mm512_xor_si512(D1, A1); \ + \ + D0 = ror64(D0, 32); \ + D1 = ror64(D1, 32); \ + \ + C0 = muladd(C0, D0); \ + C1 = muladd(C1, D1); \ + \ + B0 = _mm512_xor_si512(B0, C0); \ + B1 = _mm512_xor_si512(B1, C1); \ + \ + B0 = ror64(B0, 24); \ + B1 = ror64(B1, 24); \ + } while ((void)0, 0) + +#define G2_AVX512F(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = muladd(A0, B0); \ + A1 = muladd(A1, B1); \ + \ + D0 = _mm512_xor_si512(D0, A0); \ + D1 = _mm512_xor_si512(D1, A1); \ + \ + D0 = ror64(D0, 16); \ + D1 = ror64(D1, 16); \ + \ + C0 = muladd(C0, D0); \ + C1 = muladd(C1, D1); \ + \ + B0 = _mm512_xor_si512(B0, C0); \ + B1 = _mm512_xor_si512(B1, C1); \ + \ + B0 = ror64(B0, 63); \ + B1 = ror64(B1, 63); \ + } while ((void)0, 0) + +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \ + B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \ + \ + C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + \ + D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \ + D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \ + B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \ + \ + C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \ + C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \ + \ + D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \ + D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + G1_AVX512F(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2_AVX512F(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + G1_AVX512F(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2_AVX512F(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void)0, 0) + +#define SWAP_HALVES(A0, A1) \ + do { \ + __m512i t0, t1; \ + t0 = _mm512_shuffle_i64x2(A0, A1, _MM_SHUFFLE(1, 0, 1, 0)); \ + t1 = _mm512_shuffle_i64x2(A0, A1, _MM_SHUFFLE(3, 2, 3, 2)); \ + A0 = t0; \ + A1 = t1; \ + } while((void)0, 0) + +#define SWAP_QUARTERS(A0, A1) \ + do { \ + SWAP_HALVES(A0, A1); \ + A0 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A0); \ + A1 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A1); \ + } while((void)0, 0) + +#define UNSWAP_QUARTERS(A0, A1) \ + do { \ + A0 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A0); \ + A1 = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), A1); \ + SWAP_HALVES(A0, A1); \ + } while((void)0, 0) + +#define BLAKE2_ROUND_1(A0, C0, B0, D0, A1, C1, B1, D1) \ + do { \ + SWAP_HALVES(A0, B0); \ + SWAP_HALVES(C0, D0); \ + SWAP_HALVES(A1, B1); \ + SWAP_HALVES(C1, D1); \ + BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1); \ + SWAP_HALVES(A0, B0); \ + SWAP_HALVES(C0, D0); \ + SWAP_HALVES(A1, B1); \ + SWAP_HALVES(C1, D1); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND_2(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + SWAP_QUARTERS(A0, A1); \ + SWAP_QUARTERS(B0, B1); \ + SWAP_QUARTERS(C0, C1); \ + SWAP_QUARTERS(D0, D1); \ + BLAKE2_ROUND(A0, B0, C0, D0, A1, B1, C1, D1); \ + UNSWAP_QUARTERS(A0, A1); \ + UNSWAP_QUARTERS(B0, B1); \ + UNSWAP_QUARTERS(C0, C1); \ + UNSWAP_QUARTERS(D0, D1); \ + } while ((void)0, 0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ref.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ref.h new file mode 100644 index 0000000..7a2c6eb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ref.h @@ -0,0 +1,40 @@ +#ifndef blamka_round_ref_H +#define blamka_round_ref_H + +#include "private/common.h" + +/*designed by the Lyra PHC team */ +static inline uint64_t +fBlaMka(uint64_t x, uint64_t y) +{ + const uint64_t m = UINT64_C(0xFFFFFFFF); + const uint64_t xy = (x & m) * (y & m); + return x + y + 2 * xy; +} + +#define G(a, b, c, d) \ + do { \ + a = fBlaMka(a, b); \ + d = ROTR64(d ^ a, 32); \ + c = fBlaMka(c, d); \ + b = ROTR64(b ^ c, 24); \ + a = fBlaMka(a, b); \ + d = ROTR64(d ^ a, 16); \ + c = fBlaMka(c, d); \ + b = ROTR64(b ^ c, 63); \ + } while ((void) 0, 0) + +#define BLAKE2_ROUND_NOMSG(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, \ + v12, v13, v14, v15) \ + do { \ + G(v0, v4, v8, v12); \ + G(v1, v5, v9, v13); \ + G(v2, v6, v10, v14); \ + G(v3, v7, v11, v15); \ + G(v0, v5, v10, v15); \ + G(v1, v6, v11, v12); \ + G(v2, v7, v8, v13); \ + G(v3, v4, v9, v14); \ + } while ((void) 0, 0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ssse3.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ssse3.h new file mode 100644 index 0000000..5134b67 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ssse3.h @@ -0,0 +1,124 @@ +#ifndef blamka_round_ssse3_H +#define blamka_round_ssse3_H + +#include "private/common.h" +#include "private/sse2_64_32.h" + +#define r16 \ + (_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9)) +#define r24 \ + (_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10)) + +#if !(defined(_mm_roti_epi64) && defined(__XOP__)) +#undef _mm_roti_epi64 +#define _mm_roti_epi64(x, c) \ + (-(c) == 32) \ + ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2, 3, 0, 1)) \ + : (-(c) == 24) \ + ? _mm_shuffle_epi8((x), r24) \ + : (-(c) == 16) \ + ? _mm_shuffle_epi8((x), r16) \ + : (-(c) == 63) \ + ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_add_epi64((x), (x))) \ + : _mm_xor_si128(_mm_srli_epi64((x), -(c)), \ + _mm_slli_epi64((x), 64 - (-(c)))) +#endif + +static inline __m128i +fBlaMka(__m128i x, __m128i y) +{ + const __m128i z = _mm_mul_epu32(x, y); + return _mm_add_epi64(_mm_add_epi64(x, y), _mm_add_epi64(z, z)); +} + +#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = _mm_xor_si128(D0, A0); \ + D1 = _mm_xor_si128(D1, A1); \ + \ + D0 = _mm_roti_epi64(D0, -32); \ + D1 = _mm_roti_epi64(D1, -32); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = _mm_xor_si128(B0, C0); \ + B1 = _mm_xor_si128(B1, C1); \ + \ + B0 = _mm_roti_epi64(B0, -24); \ + B1 = _mm_roti_epi64(B1, -24); \ + } while ((void) 0, 0) + +#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = _mm_xor_si128(D0, A0); \ + D1 = _mm_xor_si128(D1, A1); \ + \ + D0 = _mm_roti_epi64(D0, -16); \ + D1 = _mm_roti_epi64(D1, -16); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = _mm_xor_si128(B0, C0); \ + B1 = _mm_xor_si128(B1, C1); \ + \ + B0 = _mm_roti_epi64(B0, -63); \ + B1 = _mm_roti_epi64(B1, -63); \ + } while ((void) 0, 0) + +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = _mm_alignr_epi8(B1, B0, 8); \ + __m128i t1 = _mm_alignr_epi8(B0, B1, 8); \ + B0 = t0; \ + B1 = t1; \ + \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + \ + t0 = _mm_alignr_epi8(D1, D0, 8); \ + t1 = _mm_alignr_epi8(D0, D1, 8); \ + D0 = t1; \ + D1 = t0; \ + } while ((void) 0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + __m128i t0 = _mm_alignr_epi8(B0, B1, 8); \ + __m128i t1 = _mm_alignr_epi8(B1, B0, 8); \ + B0 = t0; \ + B1 = t1; \ + \ + t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + \ + t0 = _mm_alignr_epi8(D0, D1, 8); \ + t1 = _mm_alignr_epi8(D1, D0, 8); \ + D0 = t1; \ + D1 = t0; \ + } while ((void) 0, 0) + +#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void) 0, 0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c new file mode 100644 index 0000000..8e17c5b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c @@ -0,0 +1,294 @@ + +#include +#include +#include +#include +#include +#include + +#include "argon2-core.h" +#include "argon2-encoding.h" +#include "argon2.h" +#include "crypto_pwhash.h" +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "private/common.h" +#include "randombytes.h" +#include "utils.h" + +#define STR_HASHBYTES 32U + +int +crypto_pwhash_argon2i_alg_argon2i13(void) +{ + return crypto_pwhash_argon2i_ALG_ARGON2I13; +} + +size_t +crypto_pwhash_argon2i_bytes_min(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_BYTES_MIN >= ARGON2_MIN_OUTLEN); + return crypto_pwhash_argon2i_BYTES_MIN; +} + +size_t +crypto_pwhash_argon2i_bytes_max(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_BYTES_MAX <= ARGON2_MAX_OUTLEN); + return crypto_pwhash_argon2i_BYTES_MAX; +} + +size_t +crypto_pwhash_argon2i_passwd_min(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_PASSWD_MIN >= ARGON2_MIN_PWD_LENGTH); + return crypto_pwhash_argon2i_PASSWD_MIN; +} + +size_t +crypto_pwhash_argon2i_passwd_max(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_PASSWD_MAX <= ARGON2_MAX_PWD_LENGTH); + return crypto_pwhash_argon2i_PASSWD_MAX; +} + +size_t +crypto_pwhash_argon2i_saltbytes(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_SALTBYTES >= ARGON2_MIN_SALT_LENGTH); + COMPILER_ASSERT(crypto_pwhash_argon2i_SALTBYTES <= ARGON2_MAX_SALT_LENGTH); + return crypto_pwhash_argon2i_SALTBYTES; +} + +size_t +crypto_pwhash_argon2i_strbytes(void) +{ + return crypto_pwhash_argon2i_STRBYTES; +} + +const char* +crypto_pwhash_argon2i_strprefix(void) +{ + return crypto_pwhash_argon2i_STRPREFIX; +} + +size_t +crypto_pwhash_argon2i_opslimit_min(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_OPSLIMIT_MIN >= ARGON2_MIN_TIME); + return crypto_pwhash_argon2i_OPSLIMIT_MIN; +} + +size_t +crypto_pwhash_argon2i_opslimit_max(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2i_OPSLIMIT_MAX <= ARGON2_MAX_TIME); + return crypto_pwhash_argon2i_OPSLIMIT_MAX; +} + +size_t +crypto_pwhash_argon2i_memlimit_min(void) +{ + COMPILER_ASSERT((crypto_pwhash_argon2i_MEMLIMIT_MIN / 1024U) >= ARGON2_MIN_MEMORY); + return crypto_pwhash_argon2i_MEMLIMIT_MIN; +} + +size_t +crypto_pwhash_argon2i_memlimit_max(void) +{ + COMPILER_ASSERT((crypto_pwhash_argon2i_MEMLIMIT_MAX / 1024U) <= ARGON2_MAX_MEMORY); + return crypto_pwhash_argon2i_MEMLIMIT_MAX; +} + +size_t +crypto_pwhash_argon2i_opslimit_interactive(void) +{ + return crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_argon2i_memlimit_interactive(void) +{ + return crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_argon2i_opslimit_moderate(void) +{ + return crypto_pwhash_argon2i_OPSLIMIT_MODERATE; +} + +size_t +crypto_pwhash_argon2i_memlimit_moderate(void) +{ + return crypto_pwhash_argon2i_MEMLIMIT_MODERATE; +} + +size_t +crypto_pwhash_argon2i_opslimit_sensitive(void) +{ + return crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE; +} + +size_t +crypto_pwhash_argon2i_memlimit_sensitive(void) +{ + return crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE; +} + +int +crypto_pwhash_argon2i(unsigned char *const out, unsigned long long outlen, + const char *const passwd, unsigned long long passwdlen, + const unsigned char *const salt, + unsigned long long opslimit, size_t memlimit, int alg) +{ + memset(out, 0, outlen); + if (outlen > crypto_pwhash_argon2i_BYTES_MAX) { + errno = EFBIG; + return -1; + } + if (outlen < crypto_pwhash_argon2i_BYTES_MIN) { + errno = EINVAL; + return -1; + } + if (passwdlen > crypto_pwhash_argon2i_PASSWD_MAX || + opslimit > crypto_pwhash_argon2i_OPSLIMIT_MAX || + memlimit > crypto_pwhash_argon2i_MEMLIMIT_MAX) { + errno = EFBIG; + return -1; + } + if (passwdlen < crypto_pwhash_argon2i_PASSWD_MIN || + opslimit < crypto_pwhash_argon2i_OPSLIMIT_MIN || + memlimit < crypto_pwhash_argon2i_MEMLIMIT_MIN) { + errno = EINVAL; + return -1; + } + if ((const void *) out == (const void *) passwd) { + errno = EINVAL; + return -1; + } + switch (alg) { + case crypto_pwhash_argon2i_ALG_ARGON2I13: + if (argon2i_hash_raw((uint32_t) opslimit, (uint32_t) (memlimit / 1024U), + (uint32_t) 1U, passwd, (size_t) passwdlen, salt, + (size_t) crypto_pwhash_argon2i_SALTBYTES, out, + (size_t) outlen) != ARGON2_OK) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; + default: + errno = EINVAL; + return -1; + } +} + +int +crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char *const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) +{ + unsigned char salt[crypto_pwhash_argon2i_SALTBYTES]; + + memset(out, 0, crypto_pwhash_argon2i_STRBYTES); + if (passwdlen > crypto_pwhash_argon2i_PASSWD_MAX || + opslimit > crypto_pwhash_argon2i_OPSLIMIT_MAX || + memlimit > crypto_pwhash_argon2i_MEMLIMIT_MAX) { + errno = EFBIG; + return -1; + } + if (passwdlen < crypto_pwhash_argon2i_PASSWD_MIN || + opslimit < crypto_pwhash_argon2i_OPSLIMIT_MIN || + memlimit < crypto_pwhash_argon2i_MEMLIMIT_MIN) { + errno = EINVAL; + return -1; + } + randombytes_buf(salt, sizeof salt); + if (argon2i_hash_encoded((uint32_t) opslimit, (uint32_t) (memlimit / 1024U), + (uint32_t) 1U, passwd, (size_t) passwdlen, salt, + sizeof salt, STR_HASHBYTES, out, + crypto_pwhash_argon2i_STRBYTES) != ARGON2_OK) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} + +int +crypto_pwhash_argon2i_str_verify(const char * str, + const char * const passwd, + unsigned long long passwdlen) +{ + int verify_ret; + + if (passwdlen > crypto_pwhash_argon2i_PASSWD_MAX) { + errno = EFBIG; + return -1; + } + /* LCOV_EXCL_START */ + if (passwdlen < crypto_pwhash_argon2i_PASSWD_MIN) { + errno = EINVAL; + return -1; + } + /* LCOV_EXCL_STOP */ + + verify_ret = argon2i_verify(str, passwd, (size_t) passwdlen); + if (verify_ret == ARGON2_OK) { + return 0; + } + if (verify_ret == ARGON2_VERIFY_MISMATCH) { + errno = EINVAL; + } + return -1; +} + +static int +_needs_rehash(const char *str, unsigned long long opslimit, size_t memlimit, + argon2_type type) +{ + unsigned char *fodder; + argon2_context ctx; + size_t fodder_len; + int ret = -1; + + fodder_len = strlen(str); + memlimit /= 1024U; + if (opslimit > UINT32_MAX || memlimit > UINT32_MAX || + fodder_len >= crypto_pwhash_STRBYTES) { + errno = EINVAL; + return -1; + } + memset(&ctx, 0, sizeof ctx); + if ((fodder = (unsigned char *) calloc(fodder_len, 1U)) == NULL) { + return -1; /* LCOV_EXCL_LINE */ + } + ctx.out = ctx.pwd = ctx.salt = fodder; + ctx.outlen = ctx.pwdlen = ctx.saltlen = (uint32_t) fodder_len; + ctx.ad = ctx.secret = NULL; + ctx.adlen = ctx.secretlen = 0U; + if (argon2_decode_string(&ctx, str, type) != 0) { + errno = EINVAL; + ret = -1; + } else if (ctx.t_cost != (uint32_t) opslimit || + ctx.m_cost != (uint32_t) memlimit) { + ret = 1; + } else { + ret = 0; + } + free(fodder); + + return ret; +} + +int +crypto_pwhash_argon2i_str_needs_rehash(const char * str, + unsigned long long opslimit, size_t memlimit) +{ + return _needs_rehash(str, opslimit, memlimit, Argon2_i); +} + +int +crypto_pwhash_argon2id_str_needs_rehash(const char * str, + unsigned long long opslimit, size_t memlimit) +{ + return _needs_rehash(str, opslimit, memlimit, Argon2_id); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c new file mode 100644 index 0000000..e08be0a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c @@ -0,0 +1,238 @@ + +#include +#include +#include +#include +#include + +#include "argon2-core.h" +#include "argon2.h" +#include "crypto_pwhash_argon2id.h" +#include "private/common.h" +#include "randombytes.h" +#include "utils.h" + +#define STR_HASHBYTES 32U + +int +crypto_pwhash_argon2id_alg_argon2id13(void) +{ + return crypto_pwhash_argon2id_ALG_ARGON2ID13; +} + +size_t +crypto_pwhash_argon2id_bytes_min(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_BYTES_MIN >= ARGON2_MIN_OUTLEN); + return crypto_pwhash_argon2id_BYTES_MIN; +} + +size_t +crypto_pwhash_argon2id_bytes_max(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_BYTES_MAX <= ARGON2_MAX_OUTLEN); + return crypto_pwhash_argon2id_BYTES_MAX; +} + +size_t +crypto_pwhash_argon2id_passwd_min(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_PASSWD_MIN >= ARGON2_MIN_PWD_LENGTH); + return crypto_pwhash_argon2id_PASSWD_MIN; +} + +size_t +crypto_pwhash_argon2id_passwd_max(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_PASSWD_MAX <= ARGON2_MAX_PWD_LENGTH); + return crypto_pwhash_argon2id_PASSWD_MAX; +} + +size_t +crypto_pwhash_argon2id_saltbytes(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_SALTBYTES >= ARGON2_MIN_SALT_LENGTH); + COMPILER_ASSERT(crypto_pwhash_argon2id_SALTBYTES <= ARGON2_MAX_SALT_LENGTH); + return crypto_pwhash_argon2id_SALTBYTES; +} + +size_t +crypto_pwhash_argon2id_strbytes(void) +{ + return crypto_pwhash_argon2id_STRBYTES; +} + +const char* +crypto_pwhash_argon2id_strprefix(void) +{ + return crypto_pwhash_argon2id_STRPREFIX; +} + +size_t +crypto_pwhash_argon2id_opslimit_min(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_OPSLIMIT_MIN >= ARGON2_MIN_TIME); + return crypto_pwhash_argon2id_OPSLIMIT_MIN; +} + +size_t +crypto_pwhash_argon2id_opslimit_max(void) +{ + COMPILER_ASSERT(crypto_pwhash_argon2id_OPSLIMIT_MAX <= ARGON2_MAX_TIME); + return crypto_pwhash_argon2id_OPSLIMIT_MAX; +} + +size_t +crypto_pwhash_argon2id_memlimit_min(void) +{ + COMPILER_ASSERT((crypto_pwhash_argon2id_MEMLIMIT_MIN / 1024U) >= ARGON2_MIN_MEMORY); + return crypto_pwhash_argon2id_MEMLIMIT_MIN; +} + +size_t +crypto_pwhash_argon2id_memlimit_max(void) +{ + COMPILER_ASSERT((crypto_pwhash_argon2id_MEMLIMIT_MAX / 1024U) <= ARGON2_MAX_MEMORY); + return crypto_pwhash_argon2id_MEMLIMIT_MAX; +} + +size_t +crypto_pwhash_argon2id_opslimit_interactive(void) +{ + return crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_argon2id_memlimit_interactive(void) +{ + return crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_argon2id_opslimit_moderate(void) +{ + return crypto_pwhash_argon2id_OPSLIMIT_MODERATE; +} + +size_t +crypto_pwhash_argon2id_memlimit_moderate(void) +{ + return crypto_pwhash_argon2id_MEMLIMIT_MODERATE; +} + +size_t +crypto_pwhash_argon2id_opslimit_sensitive(void) +{ + return crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE; +} + +size_t +crypto_pwhash_argon2id_memlimit_sensitive(void) +{ + return crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE; +} + +int +crypto_pwhash_argon2id(unsigned char *const out, unsigned long long outlen, + const char *const passwd, unsigned long long passwdlen, + const unsigned char *const salt, + unsigned long long opslimit, size_t memlimit, int alg) +{ + memset(out, 0, outlen); + if (outlen > crypto_pwhash_argon2id_BYTES_MAX) { + errno = EFBIG; + return -1; + } + if (outlen < crypto_pwhash_argon2id_BYTES_MIN) { + errno = EINVAL; + return -1; + } + if (passwdlen > crypto_pwhash_argon2id_PASSWD_MAX || + opslimit > crypto_pwhash_argon2id_OPSLIMIT_MAX || + memlimit > crypto_pwhash_argon2id_MEMLIMIT_MAX) { + errno = EFBIG; + return -1; + } + if (passwdlen < crypto_pwhash_argon2id_PASSWD_MIN || + opslimit < crypto_pwhash_argon2id_OPSLIMIT_MIN || + memlimit < crypto_pwhash_argon2id_MEMLIMIT_MIN) { + errno = EINVAL; + return -1; + } + if ((const void *) out == (const void *) passwd) { + errno = EINVAL; + return -1; + } + switch (alg) { + case crypto_pwhash_argon2id_ALG_ARGON2ID13: + if (argon2id_hash_raw((uint32_t) opslimit, (uint32_t) (memlimit / 1024U), + (uint32_t) 1U, passwd, (size_t) passwdlen, salt, + (size_t) crypto_pwhash_argon2id_SALTBYTES, out, + (size_t) outlen) != ARGON2_OK) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; + default: + errno = EINVAL; + return -1; + } +} + +int +crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char *const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) +{ + unsigned char salt[crypto_pwhash_argon2id_SALTBYTES]; + + memset(out, 0, crypto_pwhash_argon2id_STRBYTES); + if (passwdlen > crypto_pwhash_argon2id_PASSWD_MAX || + opslimit > crypto_pwhash_argon2id_OPSLIMIT_MAX || + memlimit > crypto_pwhash_argon2id_MEMLIMIT_MAX) { + errno = EFBIG; + return -1; + } + if (passwdlen < crypto_pwhash_argon2id_PASSWD_MIN || + opslimit < crypto_pwhash_argon2id_OPSLIMIT_MIN || + memlimit < crypto_pwhash_argon2id_MEMLIMIT_MIN) { + errno = EINVAL; + return -1; + } + randombytes_buf(salt, sizeof salt); + if (argon2id_hash_encoded((uint32_t) opslimit, (uint32_t) (memlimit / 1024U), + (uint32_t) 1U, passwd, (size_t) passwdlen, salt, + sizeof salt, STR_HASHBYTES, out, + crypto_pwhash_argon2id_STRBYTES) != ARGON2_OK) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} + +int +crypto_pwhash_argon2id_str_verify(const char * str, + const char * const passwd, + unsigned long long passwdlen) +{ + int verify_ret; + + if (passwdlen > crypto_pwhash_argon2id_PASSWD_MAX) { + errno = EFBIG; + return -1; + } + /* LCOV_EXCL_START */ + if (passwdlen < crypto_pwhash_argon2id_PASSWD_MIN) { + errno = EINVAL; + return -1; + } + /* LCOV_EXCL_STOP */ + + verify_ret = argon2id_verify(str, passwd, (size_t) passwdlen); + if (verify_ret == ARGON2_OK) { + return 0; + } + if (verify_ret == ARGON2_VERIFY_MISMATCH) { + errno = EINVAL; + } + return -1; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/crypto_pwhash.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/crypto_pwhash.c new file mode 100644 index 0000000..fde099a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/crypto_pwhash.c @@ -0,0 +1,212 @@ + +#include +#include + +#include "core.h" +#include "crypto_pwhash.h" + +int +crypto_pwhash_alg_argon2i13(void) +{ + return crypto_pwhash_ALG_ARGON2I13; +} + +int +crypto_pwhash_alg_argon2id13(void) +{ + return crypto_pwhash_ALG_ARGON2ID13; +} + +int +crypto_pwhash_alg_default(void) +{ + return crypto_pwhash_ALG_DEFAULT; +} + +size_t +crypto_pwhash_bytes_min(void) +{ + return crypto_pwhash_BYTES_MIN; +} + +size_t +crypto_pwhash_bytes_max(void) +{ + return crypto_pwhash_BYTES_MAX; +} + +size_t +crypto_pwhash_passwd_min(void) +{ + return crypto_pwhash_PASSWD_MIN; +} + +size_t +crypto_pwhash_passwd_max(void) +{ + return crypto_pwhash_PASSWD_MAX; +} + +size_t +crypto_pwhash_saltbytes(void) +{ + return crypto_pwhash_SALTBYTES; +} + +size_t +crypto_pwhash_strbytes(void) +{ + return crypto_pwhash_STRBYTES; +} + +const char * +crypto_pwhash_strprefix(void) +{ + return crypto_pwhash_STRPREFIX; +} + +size_t +crypto_pwhash_opslimit_min(void) +{ + return crypto_pwhash_OPSLIMIT_MIN; +} + +size_t +crypto_pwhash_opslimit_max(void) +{ + return crypto_pwhash_OPSLIMIT_MAX; +} + +size_t +crypto_pwhash_memlimit_min(void) +{ + return crypto_pwhash_MEMLIMIT_MIN; +} + +size_t +crypto_pwhash_memlimit_max(void) +{ + return crypto_pwhash_MEMLIMIT_MAX; +} + +size_t +crypto_pwhash_opslimit_interactive(void) +{ + return crypto_pwhash_OPSLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_memlimit_interactive(void) +{ + return crypto_pwhash_MEMLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_opslimit_moderate(void) +{ + return crypto_pwhash_OPSLIMIT_MODERATE; +} + +size_t +crypto_pwhash_memlimit_moderate(void) +{ + return crypto_pwhash_MEMLIMIT_MODERATE; +} + +size_t +crypto_pwhash_opslimit_sensitive(void) +{ + return crypto_pwhash_OPSLIMIT_SENSITIVE; +} + +size_t +crypto_pwhash_memlimit_sensitive(void) +{ + return crypto_pwhash_MEMLIMIT_SENSITIVE; +} + +int +crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) +{ + switch (alg) { + case crypto_pwhash_ALG_ARGON2I13: + return crypto_pwhash_argon2i(out, outlen, passwd, passwdlen, salt, + opslimit, memlimit, alg); + case crypto_pwhash_ALG_ARGON2ID13: + return crypto_pwhash_argon2id(out, outlen, passwd, passwdlen, salt, + opslimit, memlimit, alg); + default: + errno = EINVAL; + return -1; + } +} + +int +crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) +{ + return crypto_pwhash_argon2id_str(out, passwd, passwdlen, + opslimit, memlimit); +} + +int +crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) +{ + switch (alg) { + case crypto_pwhash_ALG_ARGON2I13: + return crypto_pwhash_argon2i_str(out, passwd, passwdlen, + opslimit, memlimit); + case crypto_pwhash_ALG_ARGON2ID13: + return crypto_pwhash_argon2id_str(out, passwd, passwdlen, + opslimit, memlimit); + } + sodium_misuse(); + /* NOTREACHED */ + return -1; +} + +int +crypto_pwhash_str_verify(const char * str, + const char * const passwd, + unsigned long long passwdlen) +{ + if (strncmp(str, crypto_pwhash_argon2id_STRPREFIX, + sizeof crypto_pwhash_argon2id_STRPREFIX - 1) == 0) { + return crypto_pwhash_argon2id_str_verify(str, passwd, passwdlen); + } + if (strncmp(str, crypto_pwhash_argon2i_STRPREFIX, + sizeof crypto_pwhash_argon2i_STRPREFIX - 1) == 0) { + return crypto_pwhash_argon2i_str_verify(str, passwd, passwdlen); + } + errno = EINVAL; + + return -1; +} + +int +crypto_pwhash_str_needs_rehash(const char * str, + unsigned long long opslimit, size_t memlimit) +{ + if (strncmp(str, crypto_pwhash_argon2id_STRPREFIX, + sizeof crypto_pwhash_argon2id_STRPREFIX - 1) == 0) { + return crypto_pwhash_argon2id_str_needs_rehash(str, opslimit, memlimit); + } + if (strncmp(str, crypto_pwhash_argon2i_STRPREFIX, + sizeof crypto_pwhash_argon2i_STRPREFIX - 1) == 0) { + return crypto_pwhash_argon2i_str_needs_rehash(str, opslimit, memlimit); + } + errno = EINVAL; + + return -1; +} + +const char * +crypto_pwhash_primitive(void) { + return crypto_pwhash_PRIMITIVE; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c new file mode 100644 index 0000000..65aebb1 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c @@ -0,0 +1,268 @@ +/*- + * Copyright 2013 Alexander Peslyak + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include + +#include "crypto_pwhash_scryptsalsa208sha256.h" +#include "crypto_scrypt.h" +#include "private/common.h" +#include "randombytes.h" +#include "runtime.h" +#include "utils.h" + +static const char *const itoa64 = + "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +static uint8_t * +encode64_uint32(uint8_t *dst, size_t dstlen, uint32_t src, uint32_t srcbits) +{ + uint32_t bit; + + for (bit = 0; bit < srcbits; bit += 6) { + if (dstlen < 1) { + return NULL; /* LCOV_EXCL_LINE */ + } + *dst++ = itoa64[src & 0x3f]; + dstlen--; + src >>= 6; + } + return dst; +} + +static uint8_t * +encode64(uint8_t *dst, size_t dstlen, const uint8_t *src, size_t srclen) +{ + size_t i; + + for (i = 0; i < srclen;) { + uint8_t *dnext; + uint32_t value = 0, bits = 0; + + do { + value |= (uint32_t) src[i++] << bits; + bits += 8; + } while (bits < 24 && i < srclen); + + dnext = encode64_uint32(dst, dstlen, value, bits); + if (!dnext) { + return NULL; /* LCOV_EXCL_LINE */ + } + dstlen -= dnext - dst; + dst = dnext; + } + return dst; +} + +static int +decode64_one(uint32_t *dst, uint8_t src) +{ + const char *ptr = strchr(itoa64, src); + + if (ptr) { + *dst = (uint32_t)(ptr - itoa64); + return 0; + } + *dst = 0; + + return -1; +} + +static const uint8_t * +decode64_uint32(uint32_t *dst, uint32_t dstbits, const uint8_t *src) +{ + uint32_t bit; + uint32_t value; + + value = 0; + for (bit = 0; bit < dstbits; bit += 6) { + uint32_t one; + if (decode64_one(&one, *src)) { + *dst = 0; + return NULL; + } + src++; + value |= one << bit; + } + *dst = value; + + return src; +} + +const uint8_t * +escrypt_parse_setting(const uint8_t *setting, + uint32_t *N_log2_p, uint32_t *r_p, uint32_t *p_p) +{ + const uint8_t *src; + + if (setting[0] != '$' || setting[1] != '7' || setting[2] != '$') { + return NULL; + } + src = setting + 3; + + if (decode64_one(N_log2_p, *src)) { + return NULL; + } + src++; + + src = decode64_uint32(r_p, 30, src); + if (!src) { + return NULL; + } + + src = decode64_uint32(p_p, 30, src); + if (!src) { + return NULL; + } + return src; +} + +uint8_t * +escrypt_r(escrypt_local_t *local, const uint8_t *passwd, size_t passwdlen, + const uint8_t *setting, uint8_t *buf, size_t buflen) +{ + uint8_t hash[crypto_pwhash_scryptsalsa208sha256_STRHASHBYTES]; + escrypt_kdf_t escrypt_kdf; + const uint8_t *src; + const uint8_t *salt; + uint8_t *dst; + size_t prefixlen; + size_t saltlen; + size_t need; + uint64_t N; + uint32_t N_log2; + uint32_t r; + uint32_t p; + + if (buf != NULL) { + randombytes_buf(buf, buflen); + } + + src = escrypt_parse_setting(setting, &N_log2, &r, &p); + if (!src) { + return NULL; + } + N = (uint64_t) 1 << N_log2; + prefixlen = src - setting; + + salt = src; + src = (const uint8_t *) strrchr((const char *) salt, '$'); + if (src) { + saltlen = src - salt; + } else { + saltlen = strlen((const char *) salt); + } + need = prefixlen + saltlen + 1 + + crypto_pwhash_scryptsalsa208sha256_STRHASHBYTES_ENCODED + 1; + if (need > buflen || need < saltlen) { + return NULL; + } +#ifdef HAVE_EMMINTRIN_H + escrypt_kdf = + sodium_runtime_has_sse2() ? escrypt_kdf_sse : escrypt_kdf_nosse; +#else + escrypt_kdf = escrypt_kdf_nosse; +#endif + if (escrypt_kdf(local, passwd, passwdlen, salt, saltlen, N, r, p, hash, + sizeof(hash))) { + return NULL; + } + dst = buf; + memcpy(dst, setting, prefixlen + saltlen); + dst += prefixlen + saltlen; + *dst++ = '$'; + + dst = encode64(dst, buflen - (dst - buf), hash, sizeof(hash)); + sodium_memzero(hash, sizeof hash); + if (!dst || dst >= buf + buflen) { + return NULL; /* Can't happen LCOV_EXCL_LINE */ + } + *dst = 0; /* NUL termination */ + + return buf; +} + +uint8_t * +escrypt_gensalt_r(uint32_t N_log2, uint32_t r, uint32_t p, const uint8_t *src, + size_t srclen, uint8_t *buf, size_t buflen) +{ + uint8_t *dst; + size_t prefixlen = + (sizeof "$7$" - 1U) + (1U /* N_log2 */) + (5U /* r */) + (5U /* p */); + size_t saltlen = BYTES2CHARS(srclen); + size_t need; + + need = prefixlen + saltlen + 1; + if (need > buflen || need < saltlen || saltlen < srclen) { + return NULL; /* LCOV_EXCL_LINE */ + } + if (N_log2 > 63 || ((uint64_t) r * (uint64_t) p >= (1U << 30))) { + return NULL; /* LCOV_EXCL_LINE */ + } + dst = buf; + *dst++ = '$'; + *dst++ = '7'; + *dst++ = '$'; + + *dst++ = itoa64[N_log2]; + + dst = encode64_uint32(dst, buflen - (dst - buf), r, 30); + if (!dst) { + return NULL; /* Can't happen LCOV_EXCL_LINE */ + } + dst = encode64_uint32(dst, buflen - (dst - buf), p, 30); + if (!dst) { + return NULL; /* Can't happen LCOV_EXCL_LINE */ + } + dst = encode64(dst, buflen - (dst - buf), src, srclen); + if (!dst || dst >= buf + buflen) { + return NULL; /* Can't happen LCOV_EXCL_LINE */ + } + *dst = 0; /* NUL termination */ + + return buf; +} + +int +crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t *passwd, size_t passwdlen, + const uint8_t *salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t *buf, size_t buflen) +{ + escrypt_kdf_t escrypt_kdf; + escrypt_local_t local; + int retval; + + if (escrypt_init_local(&local)) { + return -1; /* LCOV_EXCL_LINE */ + } +#if defined(HAVE_EMMINTRIN_H) + escrypt_kdf = + sodium_runtime_has_sse2() ? escrypt_kdf_sse : escrypt_kdf_nosse; +#else + escrypt_kdf = escrypt_kdf_nosse; +#endif + retval = escrypt_kdf(&local, passwd, passwdlen, salt, saltlen, N, r, p, buf, + buflen); + if (escrypt_free_local(&local)) { + return -1; /* LCOV_EXCL_LINE */ + } + return retval; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h new file mode 100644 index 0000000..1224c0f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h @@ -0,0 +1,92 @@ +/*- + * Copyright 2009 Colin Percival + * Copyright 2013 Alexander Peslyak + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file was originally written by Colin Percival as part of the Tarsnap + * online backup system. + */ +#ifndef crypto_scrypt_H +#define crypto_scrypt_H + +#include +#include +#include + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIXBYTES 14 +#define crypto_pwhash_scryptsalsa208sha256_STRSETTINGBYTES 57 +#define crypto_pwhash_scryptsalsa208sha256_STRSALTBYTES 32 +#define crypto_pwhash_scryptsalsa208sha256_STRSALTBYTES_ENCODED 43 +#define crypto_pwhash_scryptsalsa208sha256_STRHASHBYTES 32 +#define crypto_pwhash_scryptsalsa208sha256_STRHASHBYTES_ENCODED 43 + +#define BYTES2CHARS(bytes) ((((bytes) *8) + 5) / 6) + +typedef struct { + void * base, *aligned; + size_t size; +} escrypt_region_t; + +typedef union { + uint64_t d[8]; + uint32_t w[16]; +} escrypt_block_t; + +typedef escrypt_region_t escrypt_local_t; + +int escrypt_init_local(escrypt_local_t *__local); + +int escrypt_free_local(escrypt_local_t *__local); + +void *escrypt_alloc_region(escrypt_region_t *region, size_t size); +int escrypt_free_region(escrypt_region_t *region); + +typedef int (*escrypt_kdf_t)(escrypt_local_t *__local, const uint8_t *__passwd, + size_t __passwdlen, const uint8_t *__salt, + size_t __saltlen, uint64_t __N, uint32_t __r, + uint32_t __p, uint8_t *__buf, size_t __buflen); + +int escrypt_kdf_nosse(escrypt_local_t *__local, const uint8_t *__passwd, + size_t __passwdlen, const uint8_t *__salt, + size_t __saltlen, uint64_t __N, uint32_t __r, + uint32_t __p, uint8_t *__buf, size_t __buflen); + +int escrypt_kdf_sse(escrypt_local_t *__local, const uint8_t *__passwd, + size_t __passwdlen, const uint8_t *__salt, + size_t __saltlen, uint64_t __N, uint32_t __r, + uint32_t __p, uint8_t *__buf, size_t __buflen); + +uint8_t *escrypt_r(escrypt_local_t *__local, const uint8_t *__passwd, + size_t __passwdlen, const uint8_t *__setting, + uint8_t *__buf, size_t __buflen); + +uint8_t *escrypt_gensalt_r(uint32_t __N_log2, uint32_t __r, uint32_t __p, + const uint8_t *__src, size_t __srclen, + uint8_t *__buf, size_t __buflen); + +const uint8_t *escrypt_parse_setting(const uint8_t *setting, + uint32_t *N_log2_p, uint32_t *r_p, + uint32_t *p_p); + +#endif /* !_CRYPTO_SCRYPT_H_ */ diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c new file mode 100644 index 0000000..9ecaf52 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c @@ -0,0 +1,318 @@ +/*- + * Copyright 2009 Colin Percival + * Copyright 2013 Alexander Peslyak + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file was originally written by Colin Percival as part of the Tarsnap + * online backup system. + */ + +#include +#include +#include +#include +#include + +#include "../crypto_scrypt.h" +#include "../pbkdf2-sha256.h" +#include "private/common.h" + +static inline void +blkcpy(uint32_t *dest, const uint32_t *src, size_t len) +{ + memcpy(dest, src, len * 64); +} + +static inline void +blkxor(uint32_t *dest, const uint32_t *src, size_t len) +{ + size_t i; + + for (i = 0; i < len * 16; i++) { + dest[i] ^= src[i]; + } +} + +/* + * salsa20_8(B): + * Apply the salsa20/8 core to the provided block. + */ +static void +salsa20_8(uint32_t B[16]) +{ + uint32_t x[16]; + size_t i; + + blkcpy(x, B, 1); + for (i = 0; i < 8; i += 2) { +#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b)))) + /* Operate on columns. */ + x[4] ^= R(x[0] + x[12], 7); + x[8] ^= R(x[4] + x[0], 9); + x[12] ^= R(x[8] + x[4], 13); + x[0] ^= R(x[12] + x[8], 18); + + x[9] ^= R(x[5] + x[1], 7); + x[13] ^= R(x[9] + x[5], 9); + x[1] ^= R(x[13] + x[9], 13); + x[5] ^= R(x[1] + x[13], 18); + + x[14] ^= R(x[10] + x[6], 7); + x[2] ^= R(x[14] + x[10], 9); + x[6] ^= R(x[2] + x[14], 13); + x[10] ^= R(x[6] + x[2], 18); + + x[3] ^= R(x[15] + x[11], 7); + x[7] ^= R(x[3] + x[15], 9); + x[11] ^= R(x[7] + x[3], 13); + x[15] ^= R(x[11] + x[7], 18); + + /* Operate on rows. */ + x[1] ^= R(x[0] + x[3], 7); + x[2] ^= R(x[1] + x[0], 9); + x[3] ^= R(x[2] + x[1], 13); + x[0] ^= R(x[3] + x[2], 18); + + x[6] ^= R(x[5] + x[4], 7); + x[7] ^= R(x[6] + x[5], 9); + x[4] ^= R(x[7] + x[6], 13); + x[5] ^= R(x[4] + x[7], 18); + + x[11] ^= R(x[10] + x[9], 7); + x[8] ^= R(x[11] + x[10], 9); + x[9] ^= R(x[8] + x[11], 13); + x[10] ^= R(x[9] + x[8], 18); + + x[12] ^= R(x[15] + x[14], 7); + x[13] ^= R(x[12] + x[15], 9); + x[14] ^= R(x[13] + x[12], 13); + x[15] ^= R(x[14] + x[13], 18); +#undef R + } + for (i = 0; i < 16; i++) { + B[i] += x[i]; + } +} + +/* + * blockmix_salsa8(Bin, Bout, X, r): + * Compute Bout = BlockMix_{salsa20/8, r}(Bin). + * The input Bin must be 128r bytes in length; + * The output Bout must also be the same size. + * The temporary space X must be 64 bytes. + */ +static void +blockmix_salsa8(const uint32_t *Bin, uint32_t *Bout, uint32_t *X, size_t r) +{ + size_t i; + + /* 1: X <-- B_{2r - 1} */ + blkcpy(X, &Bin[(2 * r - 1) * 16], 1); + + /* 2: for i = 0 to 2r - 1 do */ + for (i = 0; i < 2 * r; i += 2) { + /* 3: X <-- H(X \xor B_i) */ + blkxor(X, &Bin[i * 16], 1); + salsa20_8(X); + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + blkcpy(&Bout[i * 8], X, 1); + + /* 3: X <-- H(X \xor B_i) */ + blkxor(X, &Bin[i * 16 + 16], 1); + salsa20_8(X); + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + blkcpy(&Bout[i * 8 + r * 16], X, 1); + } +} + +/* + * integerify(B, r): + * Return the result of parsing B_{2r-1} as a little-endian integer. + */ +static inline uint64_t +integerify(const uint32_t *B, size_t r) +{ + const uint32_t *X = B + (2 * r - 1) * 16; + + return ((uint64_t) (X[1]) << 32) + X[0]; +} + +/* + * smix(B, r, N, V, XY): + * Compute B = SMix_r(B, N). The input B must be 128r bytes in length; + * the temporary storage V must be 128rN bytes in length; the temporary + * storage XY must be 256r + 64 bytes in length. The value N must be a + * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a + * multiple of 64 bytes. + */ +static void +smix(uint8_t *B, size_t r, uint64_t N, uint32_t *V, uint32_t *XY) +{ + uint32_t *X = XY; + uint32_t *Y = &XY[32 * r]; + uint32_t *Z = &XY[64 * r]; + uint64_t i; + uint64_t j; + size_t k; + + /* 1: X <-- B */ + for (k = 0; k < 32 * r; k++) { + X[k] = LOAD32_LE(&B[4 * k]); + } + /* 2: for i = 0 to N - 1 do */ + for (i = 0; i < N; i += 2) { + /* 3: V_i <-- X */ + blkcpy(&V[i * (32 * r)], X, 2 * r); + + /* 4: X <-- H(X) */ + blockmix_salsa8(X, Y, Z, r); + + /* 3: V_i <-- X */ + blkcpy(&V[(i + 1) * (32 * r)], Y, 2 * r); + + /* 4: X <-- H(X) */ + blockmix_salsa8(Y, X, Z, r); + } + + /* 6: for i = 0 to N - 1 do */ + for (i = 0; i < N; i += 2) { + /* 7: j <-- Integerify(X) mod N */ + j = integerify(X, r) & (N - 1); + + /* 8: X <-- H(X \xor V_j) */ + blkxor(X, &V[j * (32 * r)], 2 * r); + blockmix_salsa8(X, Y, Z, r); + + /* 7: j <-- Integerify(X) mod N */ + j = integerify(Y, r) & (N - 1); + + /* 8: X <-- H(X \xor V_j) */ + blkxor(Y, &V[j * (32 * r)], 2 * r); + blockmix_salsa8(Y, X, Z, r); + } + /* 10: B' <-- X */ + for (k = 0; k < 32 * r; k++) { + STORE32_LE(&B[4 * k], X[k]); + } +} + +/* + * escrypt_kdf(local, passwd, passwdlen, salt, saltlen, + * N, r, p, buf, buflen): + * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r, + * p, buflen) and write the result into buf. The parameters r, p, and buflen + * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N + * must be a power of 2 greater than 1. + * + * Return 0 on success; or -1 on error. + */ +int +escrypt_kdf_nosse(escrypt_local_t *local, const uint8_t *passwd, + size_t passwdlen, const uint8_t *salt, size_t saltlen, + uint64_t N, uint32_t _r, uint32_t _p, uint8_t *buf, + size_t buflen) +{ + size_t B_size, V_size, XY_size, need; + uint8_t * B; + uint32_t *V, *XY; + size_t r = _r, p = _p; + uint32_t i; + +/* Sanity-check parameters. */ +#if SIZE_MAX > UINT32_MAX + if (buflen > (((uint64_t)(1) << 32) - 1) * 32) { + errno = EFBIG; + return -1; + } +#endif + if ((uint64_t)(r) * (uint64_t)(p) >= ((uint64_t) 1 << 30)) { + errno = EFBIG; + return -1; + } + if (N > UINT32_MAX) { + errno = EFBIG; + return -1; + } + if (((N & (N - 1)) != 0) || (N < 2)) { + errno = EINVAL; + return -1; + } + if (r == 0 || p == 0) { + errno = EINVAL; + return -1; + } + if ((r > SIZE_MAX / 128 / p) || +#if SIZE_MAX / 256 <= UINT32_MAX + (r > SIZE_MAX / 256) || +#endif + (N > SIZE_MAX / 128 / r)) { + errno = ENOMEM; + return -1; + } + + /* Allocate memory. */ + B_size = (size_t) 128 * r * p; + V_size = (size_t) 128 * r * (size_t) N; + need = B_size + V_size; + if (need < V_size) { + errno = ENOMEM; + return -1; + } + XY_size = (size_t) 256 * r + 64; + need += XY_size; + if (need < XY_size) { + errno = ENOMEM; + return -1; + } + if (local->size < need) { + if (escrypt_free_region(local)) { + return -1; + } + if (!escrypt_alloc_region(local, need)) { + return -1; + } + } + B = (uint8_t *) local->aligned; + V = (uint32_t *) ((uint8_t *) B + B_size); + XY = (uint32_t *) ((uint8_t *) V + V_size); + + /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */ + escrypt_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, B_size); + + /* 2: for i = 0 to p - 1 do */ + for (i = 0; i < p; i++) { + /* 3: B_i <-- MF(B_i, N) */ + smix(&B[(size_t) 128 * i * r], r, N, V, XY); + } + + /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */ + escrypt_PBKDF2_SHA256(passwd, passwdlen, B, B_size, 1, buf, buflen); + + /* Success! */ + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c new file mode 100644 index 0000000..bcf7da5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c @@ -0,0 +1,96 @@ +/*- + * Copyright 2005,2007,2009 Colin Percival + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#include + +#include "core.h" +#include "crypto_auth_hmacsha256.h" +#include "crypto_pwhash_scryptsalsa208sha256.h" +#include "pbkdf2-sha256.h" +#include "private/common.h" +#include "utils.h" + +/** + * escrypt_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen): + * Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and + * write the output to buf. The value dkLen must be at most 32 * (2^32 - 1). + */ +void +escrypt_PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, + const uint8_t *salt, size_t saltlen, uint64_t c, + uint8_t *buf, size_t dkLen) +{ + crypto_auth_hmacsha256_state PShctx, hctx; + size_t i; + uint8_t ivec[4]; + uint8_t U[32]; + uint8_t T[32]; + uint64_t j; + int k; + size_t clen; + +#if SIZE_MAX > 0x1fffffffe0ULL + COMPILER_ASSERT(crypto_pwhash_scryptsalsa208sha256_BYTES_MAX + <= 0x1fffffffe0ULL); + if (dkLen > 0x1fffffffe0ULL) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +#endif + crypto_auth_hmacsha256_init(&PShctx, passwd, passwdlen); + crypto_auth_hmacsha256_update(&PShctx, salt, saltlen); + + for (i = 0; i * 32 < dkLen; i++) { + STORE32_BE(ivec, (uint32_t)(i + 1)); + memcpy(&hctx, &PShctx, sizeof(crypto_auth_hmacsha256_state)); + crypto_auth_hmacsha256_update(&hctx, ivec, 4); + crypto_auth_hmacsha256_final(&hctx, U); + + memcpy(T, U, 32); + /* LCOV_EXCL_START */ + for (j = 2; j <= c; j++) { + crypto_auth_hmacsha256_init(&hctx, passwd, passwdlen); + crypto_auth_hmacsha256_update(&hctx, U, 32); + crypto_auth_hmacsha256_final(&hctx, U); + + for (k = 0; k < 32; k++) { + T[k] ^= U[k]; + } + } + /* LCOV_EXCL_STOP */ + + clen = dkLen - i * 32; + if (clen > 32) { + clen = 32; + } + memcpy(&buf[i * 32], T, clen); + } + sodium_memzero((void *) &PShctx, sizeof PShctx); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h new file mode 100644 index 0000000..962b433 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h @@ -0,0 +1,45 @@ +/*- + * Copyright 2005,2007,2009 Colin Percival + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#ifndef pbkdf2_sha256_H +#define pbkdf2_sha256_H + +#include + +#include + +#include "crypto_auth_hmacsha256.h" + +/** + * escrypt_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen): + * Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and + * write the output to buf. The value dkLen must be at most 32 * (2^32 - 1). + */ +void escrypt_PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t, + uint64_t, uint8_t *, size_t); + +#endif /* !_SHA256_H_ */ diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c new file mode 100644 index 0000000..f44e04e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c @@ -0,0 +1,301 @@ + +#include +#include +#include +#include +#include + +#include "crypto_pwhash_scryptsalsa208sha256.h" +#include "crypto_scrypt.h" +#include "private/common.h" +#include "randombytes.h" +#include "utils.h" + +#define SETTING_SIZE(saltbytes) \ + ((sizeof "$7$" - 1U) + (1U /* N_log2 */) + (5U /* r */) + (5U /* p */) + \ + BYTES2CHARS(saltbytes)) + +static int +pickparams(unsigned long long opslimit, const size_t memlimit, + uint32_t *const N_log2, uint32_t *const p, uint32_t *const r) +{ + unsigned long long maxN; + unsigned long long maxrp; + + if (opslimit < 32768) { + opslimit = 32768; + } + *r = 8; + if (opslimit < memlimit / 32) { + *p = 1; + maxN = opslimit / (*r * 4); + for (*N_log2 = 1; *N_log2 < 63; *N_log2 += 1) { + if ((uint64_t)(1) << *N_log2 > maxN / 2) { + break; + } + } + } else { + maxN = memlimit / ((size_t) *r * 128); + for (*N_log2 = 1; *N_log2 < 63; *N_log2 += 1) { + if ((uint64_t)(1) << *N_log2 > maxN / 2) { + break; + } + } + maxrp = (opslimit / 4) / ((uint64_t)(1) << *N_log2); + /* LCOV_EXCL_START */ + if (maxrp > 0x3fffffff) { + maxrp = 0x3fffffff; + } + /* LCOV_EXCL_STOP */ + *p = (uint32_t)(maxrp) / *r; + } + return 0; +} + +static size_t +sodium_strnlen(const char *str, size_t maxlen) +{ + size_t i = 0U; + + ACQUIRE_FENCE; + while (i < maxlen && str[i] != 0) { + i++; + } + return i; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_bytes_min(void) +{ + return crypto_pwhash_scryptsalsa208sha256_BYTES_MIN; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_bytes_max(void) +{ + return crypto_pwhash_scryptsalsa208sha256_BYTES_MAX; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_passwd_min(void) +{ + return crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_passwd_max(void) +{ + return crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_saltbytes(void) +{ + return crypto_pwhash_scryptsalsa208sha256_SALTBYTES; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_strbytes(void) +{ + return crypto_pwhash_scryptsalsa208sha256_STRBYTES; +} + +const char * +crypto_pwhash_scryptsalsa208sha256_strprefix(void) +{ + return crypto_pwhash_scryptsalsa208sha256_STRPREFIX; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_opslimit_min(void) +{ + return crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_opslimit_max(void) +{ + return crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_memlimit_min(void) +{ + return crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_memlimit_max(void) +{ + return crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void) +{ + return crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void) +{ + return crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void) +{ + return crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE; +} + +size_t +crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void) +{ + return crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE; +} + +int +crypto_pwhash_scryptsalsa208sha256(unsigned char *const out, + unsigned long long outlen, + const char *const passwd, + unsigned long long passwdlen, + const unsigned char *const salt, + unsigned long long opslimit, size_t memlimit) +{ + uint32_t N_log2; + uint32_t p; + uint32_t r; + + memset(out, 0, outlen); + if (passwdlen > crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX || + outlen > crypto_pwhash_scryptsalsa208sha256_BYTES_MAX) { + errno = EFBIG; /* LCOV_EXCL_LINE */ + return -1; /* LCOV_EXCL_LINE */ + } + if (outlen < crypto_pwhash_scryptsalsa208sha256_BYTES_MIN || + pickparams(opslimit, memlimit, &N_log2, &p, &r) != 0) { + errno = EINVAL; /* LCOV_EXCL_LINE */ + return -1; /* LCOV_EXCL_LINE */ + } + if ((const void *) out == (const void *) passwd) { + errno = EINVAL; + return -1; + } + return crypto_pwhash_scryptsalsa208sha256_ll( + (const uint8_t *) passwd, (size_t) passwdlen, (const uint8_t *) salt, + crypto_pwhash_scryptsalsa208sha256_SALTBYTES, (uint64_t)(1) << N_log2, + r, p, out, (size_t) outlen); +} + +int +crypto_pwhash_scryptsalsa208sha256_str( + char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char *const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) +{ + uint8_t salt[crypto_pwhash_scryptsalsa208sha256_STRSALTBYTES]; + char setting[crypto_pwhash_scryptsalsa208sha256_STRSETTINGBYTES + 1U]; + escrypt_local_t escrypt_local; + uint32_t N_log2; + uint32_t p; + uint32_t r; + + memset(out, 0, crypto_pwhash_scryptsalsa208sha256_STRBYTES); + if (passwdlen > crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX) { + errno = EFBIG; /* LCOV_EXCL_LINE */ + return -1; /* LCOV_EXCL_LINE */ + } + if (passwdlen < crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN || + pickparams(opslimit, memlimit, &N_log2, &p, &r) != 0) { + errno = EINVAL; /* LCOV_EXCL_LINE */ + return -1; /* LCOV_EXCL_LINE */ + } + randombytes_buf(salt, sizeof salt); + if (escrypt_gensalt_r(N_log2, r, p, salt, sizeof salt, (uint8_t *) setting, + sizeof setting) == NULL) { + errno = EINVAL; /* LCOV_EXCL_LINE */ + return -1; /* LCOV_EXCL_LINE */ + } + if (escrypt_init_local(&escrypt_local) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + if (escrypt_r(&escrypt_local, (const uint8_t *) passwd, (size_t) passwdlen, + (const uint8_t *) setting, (uint8_t *) out, + crypto_pwhash_scryptsalsa208sha256_STRBYTES) == NULL) { + /* LCOV_EXCL_START */ + escrypt_free_local(&escrypt_local); + errno = EINVAL; + return -1; + /* LCOV_EXCL_STOP */ + } + escrypt_free_local(&escrypt_local); + + COMPILER_ASSERT( + SETTING_SIZE(crypto_pwhash_scryptsalsa208sha256_STRSALTBYTES) == + crypto_pwhash_scryptsalsa208sha256_STRSETTINGBYTES); + COMPILER_ASSERT( + crypto_pwhash_scryptsalsa208sha256_STRSETTINGBYTES + 1U + + crypto_pwhash_scryptsalsa208sha256_STRHASHBYTES_ENCODED + 1U == + crypto_pwhash_scryptsalsa208sha256_STRBYTES); + + return 0; +} + +int +crypto_pwhash_scryptsalsa208sha256_str_verify( + const char *str, + const char *const passwd, unsigned long long passwdlen) +{ + char wanted[crypto_pwhash_scryptsalsa208sha256_STRBYTES]; + escrypt_local_t escrypt_local; + int ret = -1; + + if (sodium_strnlen(str, crypto_pwhash_scryptsalsa208sha256_STRBYTES) != + crypto_pwhash_scryptsalsa208sha256_STRBYTES - 1U) { + return -1; + } + if (escrypt_init_local(&escrypt_local) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + memset(wanted, 0, sizeof wanted); + if (escrypt_r(&escrypt_local, (const uint8_t *) passwd, (size_t) passwdlen, + (const uint8_t *) str, (uint8_t *) wanted, + sizeof wanted) == NULL) { + escrypt_free_local(&escrypt_local); + return -1; + } + escrypt_free_local(&escrypt_local); + ret = sodium_memcmp(wanted, str, sizeof wanted); + sodium_memzero(wanted, sizeof wanted); + + return ret; +} + +int +crypto_pwhash_scryptsalsa208sha256_str_needs_rehash( + const char * str, + unsigned long long opslimit, size_t memlimit) +{ + uint32_t N_log2, N_log2_; + uint32_t p, p_; + uint32_t r, r_; + + if (pickparams(opslimit, memlimit, &N_log2, &p, &r) != 0) { + errno = EINVAL; + return -1; + } + if (sodium_strnlen(str, crypto_pwhash_scryptsalsa208sha256_STRBYTES) != + crypto_pwhash_scryptsalsa208sha256_STRBYTES - 1U) { + errno = EINVAL; + return -1; + } + if (escrypt_parse_setting((const uint8_t *) str, + &N_log2_, &r_, &p_) == NULL) { + errno = EINVAL; + return -1; + } + if (N_log2 != N_log2_ || r != r_ || p != p_) { + return 1; + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c new file mode 100644 index 0000000..890517f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c @@ -0,0 +1,112 @@ +/*- + * Copyright 2013 Alexander Peslyak + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_SYS_MMAN_H +#include +#endif +#include +#include + +#include "crypto_scrypt.h" +#include "runtime.h" + +#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) +# define MAP_ANON MAP_ANONYMOUS +#endif +#ifndef MAP_NOCORE +# ifdef MAP_CONCEAL +# define MAP_NOCORE MAP_CONCEAL +# else +# define MAP_NOCORE 0 +# endif +#endif +#ifndef MAP_POPULATE +# define MAP_POPULATE 0 +#endif + +void * +escrypt_alloc_region(escrypt_region_t *region, size_t size) +{ + uint8_t *base, *aligned; +#if defined(MAP_ANON) && defined(HAVE_MMAP) + if ((base = (uint8_t *) mmap(NULL, size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_NOCORE | MAP_POPULATE, + -1, 0)) == MAP_FAILED) { + base = NULL; /* LCOV_EXCL_LINE */ + } /* LCOV_EXCL_LINE */ + aligned = base; +#elif defined(HAVE_POSIX_MEMALIGN) + if ((errno = posix_memalign((void **) &base, 64, size)) != 0) { + base = NULL; + } + aligned = base; +#else + base = aligned = NULL; + if (size + 63 < size) { + errno = ENOMEM; + } else if ((base = (uint8_t *) malloc(size + 63)) != NULL) { + aligned = base + 63; + aligned -= (uintptr_t) aligned & 63; + } +#endif + region->base = base; + region->aligned = aligned; + region->size = base ? size : 0; + + return aligned; +} + +static inline void +init_region(escrypt_region_t *region) +{ + region->base = region->aligned = NULL; + region->size = 0; +} + +int +escrypt_free_region(escrypt_region_t *region) +{ + if (region->base) { +#if defined(MAP_ANON) && defined(HAVE_MMAP) + if (munmap(region->base, region->size)) { + return -1; /* LCOV_EXCL_LINE */ + } +#else + free(region->base); +#endif + } + init_region(region); + + return 0; +} + +int +escrypt_init_local(escrypt_local_t *local) +{ + init_region(local); + + return 0; +} + +int +escrypt_free_local(escrypt_local_t *local) +{ + return escrypt_free_region(local); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c new file mode 100644 index 0000000..c3ea0a3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c @@ -0,0 +1,400 @@ +/*- + * Copyright 2009 Colin Percival + * Copyright 2012,2013 Alexander Peslyak + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file was originally written by Colin Percival as part of the Tarsnap + * online backup system. + */ + +#include +#include +#include +#include +#include + +#include "private/common.h" + +#ifdef HAVE_EMMINTRIN_H + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# endif +# include +# if defined(__XOP__) && defined(DISABLED) +# include +# endif +# include "private/sse2_64_32.h" + +# include "../crypto_scrypt.h" +# include "../pbkdf2-sha256.h" + +# define ARX(out, in1, in2, s) \ + { \ + __m128i T = _mm_add_epi32(in1, in2); \ + out = _mm_xor_si128(out, _mm_slli_epi32(T, s)); \ + out = _mm_xor_si128(out, _mm_srli_epi32(T, 32 - s)); \ + } + +# define SALSA20_2ROUNDS \ + /* Operate on "columns". */ \ + ARX(X1, X0, X3, 7) \ + ARX(X2, X1, X0, 9) \ + ARX(X3, X2, X1, 13) \ + ARX(X0, X3, X2, 18) \ + \ + /* Rearrange data. */ \ + X1 = _mm_shuffle_epi32(X1, 0x93); \ + X2 = _mm_shuffle_epi32(X2, 0x4E); \ + X3 = _mm_shuffle_epi32(X3, 0x39); \ + \ + /* Operate on "rows". */ \ + ARX(X3, X0, X1, 7) \ + ARX(X2, X3, X0, 9) \ + ARX(X1, X2, X3, 13) \ + ARX(X0, X1, X2, 18) \ + \ + /* Rearrange data. */ \ + X1 = _mm_shuffle_epi32(X1, 0x39); \ + X2 = _mm_shuffle_epi32(X2, 0x4E); \ + X3 = _mm_shuffle_epi32(X3, 0x93); + +/* + * Apply the salsa20/8 core to the block provided in (X0 ... X3) ^ (Z0 ... Z3). + */ +# define SALSA20_8_XOR(in, out) \ + { \ + __m128i Y0 = X0 = _mm_xor_si128(X0, (in)[0]); \ + __m128i Y1 = X1 = _mm_xor_si128(X1, (in)[1]); \ + __m128i Y2 = X2 = _mm_xor_si128(X2, (in)[2]); \ + __m128i Y3 = X3 = _mm_xor_si128(X3, (in)[3]); \ + SALSA20_2ROUNDS \ + SALSA20_2ROUNDS \ + SALSA20_2ROUNDS \ + SALSA20_2ROUNDS(out)[0] = X0 = _mm_add_epi32(X0, Y0); \ + (out)[1] = X1 = _mm_add_epi32(X1, Y1); \ + (out)[2] = X2 = _mm_add_epi32(X2, Y2); \ + (out)[3] = X3 = _mm_add_epi32(X3, Y3); \ + } + +/* + * blockmix_salsa8(Bin, Bout, r): + * Compute Bout = BlockMix_{salsa20/8, r}(Bin). + * The input Bin must be 128r bytes in length; + * the output Bout must also be the same size. + */ +static inline void +blockmix_salsa8(const __m128i *Bin, __m128i *Bout, size_t r) +{ + __m128i X0, X1, X2, X3; + size_t i; + + /* 1: X <-- B_{2r - 1} */ + X0 = Bin[8 * r - 4]; + X1 = Bin[8 * r - 3]; + X2 = Bin[8 * r - 2]; + X3 = Bin[8 * r - 1]; + + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + SALSA20_8_XOR(Bin, Bout) + + /* 2: for i = 0 to 2r - 1 do */ + r--; + for (i = 0; i < r;) { + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + SALSA20_8_XOR(&Bin[i * 8 + 4], &Bout[(r + i) * 4 + 4]) + + i++; + + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + SALSA20_8_XOR(&Bin[i * 8], &Bout[i * 4]) + } + + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + SALSA20_8_XOR(&Bin[i * 8 + 4], &Bout[(r + i) * 4 + 4]) +} + +# define XOR4(in) \ + X0 = _mm_xor_si128(X0, (in)[0]); \ + X1 = _mm_xor_si128(X1, (in)[1]); \ + X2 = _mm_xor_si128(X2, (in)[2]); \ + X3 = _mm_xor_si128(X3, (in)[3]); + +# define XOR4_2(in1, in2) \ + X0 = _mm_xor_si128((in1)[0], (in2)[0]); \ + X1 = _mm_xor_si128((in1)[1], (in2)[1]); \ + X2 = _mm_xor_si128((in1)[2], (in2)[2]); \ + X3 = _mm_xor_si128((in1)[3], (in2)[3]); + +static inline uint32_t +blockmix_salsa8_xor(const __m128i *Bin1, const __m128i *Bin2, __m128i *Bout, + size_t r) +{ + __m128i X0, X1, X2, X3; + size_t i; + + /* 1: X <-- B_{2r - 1} */ + XOR4_2(&Bin1[8 * r - 4], &Bin2[8 * r - 4]) + + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + XOR4(Bin1) + SALSA20_8_XOR(Bin2, Bout) + + /* 2: for i = 0 to 2r - 1 do */ + r--; + for (i = 0; i < r;) { + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + XOR4(&Bin1[i * 8 + 4]) + SALSA20_8_XOR(&Bin2[i * 8 + 4], &Bout[(r + i) * 4 + 4]) + + i++; + + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + XOR4(&Bin1[i * 8]) + SALSA20_8_XOR(&Bin2[i * 8], &Bout[i * 4]) + } + + /* 3: X <-- H(X \xor B_i) */ + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + XOR4(&Bin1[i * 8 + 4]) + SALSA20_8_XOR(&Bin2[i * 8 + 4], &Bout[(r + i) * 4 + 4]) + + return _mm_cvtsi128_si32(X0); +} + +# undef ARX +# undef SALSA20_2ROUNDS +# undef SALSA20_8_XOR +# undef XOR4 +# undef XOR4_2 + +/* + * integerify(B, r): + * Return the result of parsing B_{2r-1} as a little-endian integer. + * Note that B's layout is permuted compared to the generic implementation. + */ +static inline uint64_t +integerify(const __m128i *B, size_t r) +{ + const __m128i * X = B + (2*r - 1) * 4; + const uint32_t X0 = (uint32_t) _mm_cvtsi128_si32(X[0]); + const uint32_t X13 = (uint32_t) _mm_cvtsi128_si32(_mm_srli_si128(X[3], 4)); + + return (((uint64_t)(X13) << 32) + X0); +} + +/* + * smix(B, r, N, V, XY): + * Compute B = SMix_r(B, N). The input B must be 128r bytes in length; + * the temporary storage V must be 128rN bytes in length; the temporary + * storage XY must be 256r + 64 bytes in length. The value N must be a + * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a + * multiple of 64 bytes. + */ +static void +smix(uint8_t *B, size_t r, uint64_t N, void *V, void *XY) +{ + size_t s = 128 * r; + __m128i *X = (__m128i *) V, *Y; + uint32_t *X32 = (uint32_t *) V; + uint64_t i, j; + size_t k; + + /* 1: X <-- B */ + /* 3: V_i <-- X */ + for (k = 0; k < 2 * r; k++) { + for (i = 0; i < 16; i++) { + X32[k * 16 + i] = LOAD32_LE(&B[(k * 16 + (i * 5 % 16)) * 4]); + } + } + + /* 2: for i = 0 to N - 1 do */ + for (i = 1; i < N - 1; i += 2) { + /* 4: X <-- H(X) */ + /* 3: V_i <-- X */ + Y = (__m128i *) ((uintptr_t)(V) + i * s); + blockmix_salsa8(X, Y, r); + + /* 4: X <-- H(X) */ + /* 3: V_i <-- X */ + X = (__m128i *) ((uintptr_t)(V) + (i + 1) * s); + blockmix_salsa8(Y, X, r); + } + + /* 4: X <-- H(X) */ + /* 3: V_i <-- X */ + Y = (__m128i *) ((uintptr_t)(V) + i * s); + blockmix_salsa8(X, Y, r); + + /* 4: X <-- H(X) */ + /* 3: V_i <-- X */ + X = (__m128i *) XY; + blockmix_salsa8(Y, X, r); + + X32 = (uint32_t *) XY; + Y = (__m128i *) ((uintptr_t)(XY) + s); + + /* 7: j <-- Integerify(X) mod N */ + j = integerify(X, r) & (N - 1); + + /* 6: for i = 0 to N - 1 do */ + for (i = 0; i < N; i += 2) { + __m128i *V_j = (__m128i *) ((uintptr_t)(V) + j * s); + + /* 8: X <-- H(X \xor V_j) */ + /* 7: j <-- Integerify(X) mod N */ + j = blockmix_salsa8_xor(X, V_j, Y, r) & (N - 1); + V_j = (__m128i *) ((uintptr_t)(V) + j * s); + + /* 8: X <-- H(X \xor V_j) */ + /* 7: j <-- Integerify(X) mod N */ + j = blockmix_salsa8_xor(Y, V_j, X, r) & (N - 1); + } + + /* 10: B' <-- X */ + for (k = 0; k < 2 * r; k++) { + for (i = 0; i < 16; i++) { + STORE32_LE(&B[(k * 16 + (i * 5 % 16)) * 4], X32[k * 16 + i]); + } + } +} + +/* + * escrypt_kdf(local, passwd, passwdlen, salt, saltlen, + * N, r, p, buf, buflen): + * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r, + * p, buflen) and write the result into buf. The parameters r, p, and buflen + * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N + * must be a power of 2 greater than 1. + * + * Return 0 on success; or -1 on error. + */ +int +escrypt_kdf_sse(escrypt_local_t *local, const uint8_t *passwd, size_t passwdlen, + const uint8_t *salt, size_t saltlen, uint64_t N, uint32_t _r, + uint32_t _p, uint8_t *buf, size_t buflen) +{ + size_t B_size, V_size, XY_size, need; + uint8_t * B; + uint32_t *V, *XY; + size_t r = _r, p = _p; + uint32_t i; + +/* Sanity-check parameters. */ +# if SIZE_MAX > UINT32_MAX +/* LCOV_EXCL_START */ + if (buflen > (((uint64_t)(1) << 32) - 1) * 32) { + errno = EFBIG; + return -1; + } +/* LCOV_EXCL_END */ +# endif + if ((uint64_t)(r) * (uint64_t)(p) >= ((uint64_t) 1 << 30)) { + errno = EFBIG; + return -1; + } + if (N > UINT32_MAX) { + errno = EFBIG; + return -1; + } + if (((N & (N - 1)) != 0) || (N < 2)) { + errno = EINVAL; + return -1; + } + if (r == 0 || p == 0) { + errno = EINVAL; + return -1; + } +/* LCOV_EXCL_START */ + if ((r > SIZE_MAX / 128 / p) || +# if SIZE_MAX / 256 <= UINT32_MAX + (r > SIZE_MAX / 256) || +# endif + (N > SIZE_MAX / 128 / r)) { + errno = ENOMEM; + return -1; + } +/* LCOV_EXCL_END */ + + /* Allocate memory. */ + B_size = (size_t) 128 * r * p; + V_size = (size_t) 128 * r * N; + need = B_size + V_size; +/* LCOV_EXCL_START */ + if (need < V_size) { + errno = ENOMEM; + return -1; + } +/* LCOV_EXCL_END */ + XY_size = (size_t) 256 * r + 64; + need += XY_size; +/* LCOV_EXCL_START */ + if (need < XY_size) { + errno = ENOMEM; + return -1; + } +/* LCOV_EXCL_END */ + if (local->size < need) { + if (escrypt_free_region(local)) { + return -1; /* LCOV_EXCL_LINE */ + } + if (!escrypt_alloc_region(local, need)) { + return -1; /* LCOV_EXCL_LINE */ + } + } + B = (uint8_t *) local->aligned; + V = (uint32_t *) ((uint8_t *) B + B_size); + XY = (uint32_t *) ((uint8_t *) V + V_size); + + /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */ + escrypt_PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, B_size); + + /* 2: for i = 0 to p - 1 do */ + for (i = 0; i < p; i++) { + /* 3: B_i <-- MF(B_i, N) */ + smix(&B[(size_t) 128 * i * r], r, N, V, XY); + } + + /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */ + escrypt_PBKDF2_SHA256(passwd, passwdlen, B, B_size, 1, buf, buflen); + + /* Success! */ + return 0; +} +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c new file mode 100644 index 0000000..9afffce --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c @@ -0,0 +1,33 @@ + +#include "crypto_scalarmult.h" + +const char * +crypto_scalarmult_primitive(void) +{ + return crypto_scalarmult_PRIMITIVE; +} + +int +crypto_scalarmult_base(unsigned char *q, const unsigned char *n) +{ + return crypto_scalarmult_curve25519_base(q, n); +} + +int +crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + return crypto_scalarmult_curve25519(q, n, p); +} + +size_t +crypto_scalarmult_bytes(void) +{ + return crypto_scalarmult_BYTES; +} + +size_t +crypto_scalarmult_scalarbytes(void) +{ + return crypto_scalarmult_SCALARBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c new file mode 100644 index 0000000..d298922 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c @@ -0,0 +1,182 @@ + +#include +#include + +#include "../scalarmult_curve25519.h" +#include "export.h" +#include "private/ed25519_ref10.h" +#include "utils.h" +#include "x25519_ref10.h" + +/* + * Reject small order points early to mitigate the implications of + * unexpected optimizations that would affect the ref10 code. + * See https://eprint.iacr.org/2017/806.pdf for reference. + */ +static int +has_small_order(const unsigned char s[32]) +{ + CRYPTO_ALIGN(16) + static const unsigned char blacklist[][32] = { + /* 0 (order 4) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + /* 1 (order 1) */ + { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + /* 325606250916557431795983626356110631294008115727848805560023387167927233504 + (order 8) */ + { 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 }, + /* 39382357235489614581723060781553021112529911719440698176882885853963445705823 + (order 8) */ + { 0x5f, 0x9c, 0x95, 0xbc, 0xa3, 0x50, 0x8c, 0x24, 0xb1, 0xd0, 0xb1, + 0x55, 0x9c, 0x83, 0xef, 0x5b, 0x04, 0x44, 0x5c, 0xc4, 0x58, 0x1c, + 0x8e, 0x86, 0xd8, 0x22, 0x4e, 0xdd, 0xd0, 0x9f, 0x11, 0x57 }, + /* p-1 (order 2) */ + { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, + /* p (=0, order 4) */ + { 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, + /* p+1 (=1, order 1) */ + { 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f } + }; + unsigned char c[7] = { 0 }; + unsigned int k; + size_t i, j; + + COMPILER_ASSERT(7 == sizeof blacklist / sizeof blacklist[0]); + for (j = 0; j < 31; j++) { + for (i = 0; i < sizeof blacklist / sizeof blacklist[0]; i++) { + c[i] |= s[j] ^ blacklist[i][j]; + } + } + for (i = 0; i < sizeof blacklist / sizeof blacklist[0]; i++) { + c[i] |= (s[j] & 0x7f) ^ blacklist[i][j]; + } + k = 0; + for (i = 0; i < sizeof blacklist / sizeof blacklist[0]; i++) { + k |= (c[i] - 1); + } + return (int) ((k >> 8) & 1); +} + +static int +crypto_scalarmult_curve25519_ref10(unsigned char *q, + const unsigned char *n, + const unsigned char *p) +{ + unsigned char t[32]; + unsigned int i; + fe25519 x1; + fe25519 x2; + fe25519 z2; + fe25519 x3; + fe25519 z3; + fe25519 tmp0; + fe25519 tmp1; + int pos; + unsigned int swap; + unsigned int b; + + if (has_small_order(p)) { + return -1; + } + for (i = 0; i < 32; i++) { + t[i] = n[i]; + } + t[0] &= 248; + t[31] &= 127; + t[31] |= 64; + fe25519_frombytes(x1, p); + fe25519_1(x2); + fe25519_0(z2); + fe25519_copy(x3, x1); + fe25519_1(z3); + + swap = 0; + for (pos = 254; pos >= 0; --pos) { + b = t[pos / 8] >> (pos & 7); + b &= 1; + swap ^= b; + fe25519_cswap(x2, x3, swap); + fe25519_cswap(z2, z3, swap); + swap = b; + fe25519_sub(tmp0, x3, z3); + fe25519_sub(tmp1, x2, z2); + fe25519_add(x2, x2, z2); + fe25519_add(z2, x3, z3); + fe25519_mul(z3, tmp0, x2); + fe25519_mul(z2, z2, tmp1); + fe25519_sq(tmp0, tmp1); + fe25519_sq(tmp1, x2); + fe25519_add(x3, z3, z2); + fe25519_sub(z2, z3, z2); + fe25519_mul(x2, tmp1, tmp0); + fe25519_sub(tmp1, tmp1, tmp0); + fe25519_sq(z2, z2); + fe25519_mul32(z3, tmp1, 121666); + fe25519_sq(x3, x3); + fe25519_add(tmp0, tmp0, z3); + fe25519_mul(z3, x1, z2); + fe25519_mul(z2, tmp1, tmp0); + } + fe25519_cswap(x2, x3, swap); + fe25519_cswap(z2, z3, swap); + + fe25519_invert(z2, z2); + fe25519_mul(x2, x2, z2); + fe25519_tobytes(q, x2); + + sodium_memzero(t, sizeof t); + + return 0; +} + +static void +edwards_to_montgomery(fe25519 montgomeryX, const fe25519 edwardsY, const fe25519 edwardsZ) +{ + fe25519 tempX; + fe25519 tempZ; + + fe25519_add(tempX, edwardsZ, edwardsY); + fe25519_sub(tempZ, edwardsZ, edwardsY); + fe25519_invert(tempZ, tempZ); + fe25519_mul(montgomeryX, tempX, tempZ); +} + +static int +crypto_scalarmult_curve25519_ref10_base(unsigned char *q, + const unsigned char *n) +{ + unsigned char *t = q; + ge25519_p3 A; + fe25519 pk; + unsigned int i; + + for (i = 0; i < 32; i++) { + t[i] = n[i]; + } + t[0] &= 248; + t[31] &= 127; + t[31] |= 64; + ge25519_scalarmult_base(&A, t); + edwards_to_montgomery(pk, A.Y, A.Z); + fe25519_tobytes(q, pk); + + return 0; +} + +struct crypto_scalarmult_curve25519_implementation + crypto_scalarmult_curve25519_ref10_implementation = { + SODIUM_C99(.mult =) crypto_scalarmult_curve25519_ref10, + SODIUM_C99(.mult_base =) crypto_scalarmult_curve25519_ref10_base + }; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h new file mode 100644 index 0000000..ea52a62 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h @@ -0,0 +1,10 @@ +#ifndef x25519_ref10_H +#define x25519_ref10_H + +#include "crypto_scalarmult_curve25519.h" +#include "../scalarmult_curve25519.h" + +extern struct crypto_scalarmult_curve25519_implementation + crypto_scalarmult_curve25519_ref10_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S new file mode 100644 index 0000000..67f1f01 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S @@ -0,0 +1,25 @@ +#ifdef IN_SANDY2X + +/* + REDMASK51 is from amd64-51/consts.s. +*/ + +#include "consts_namespace.h" +.data +.p2align 4 +v0_0: .quad 0, 0 +v1_0: .quad 1, 0 +v2_1: .quad 2, 1 +v9_0: .quad 9, 0 +v9_9: .quad 9, 9 +v19_19: .quad 19, 19 +v38_1: .quad 38, 1 +v38_38: .quad 38, 38 +v121666_121666: .quad 121666, 121666 +m25: .quad 33554431, 33554431 +m26: .quad 67108863, 67108863 +subc0: .quad 0x07FFFFDA, 0x03FFFFFE +subc2: .quad 0x07FFFFFE, 0x03FFFFFE +REDMASK51: .quad 0x0007FFFFFFFFFFFF + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h new file mode 100644 index 0000000..9f81fa6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h @@ -0,0 +1,20 @@ +#ifndef consts_namespace_H +#define consts_namespace_H + +#define v0_0 crypto_scalarmult_curve25519_sandy2x_v0_0 +#define v1_0 crypto_scalarmult_curve25519_sandy2x_v1_0 +#define v2_1 crypto_scalarmult_curve25519_sandy2x_v2_1 +#define v9_0 crypto_scalarmult_curve25519_sandy2x_v9_0 +#define v9_9 crypto_scalarmult_curve25519_sandy2x_v9_9 +#define v19_19 crypto_scalarmult_curve25519_sandy2x_v19_19 +#define v38_1 crypto_scalarmult_curve25519_sandy2x_v38_1 +#define v38_38 crypto_scalarmult_curve25519_sandy2x_v38_38 +#define v121666_121666 crypto_scalarmult_curve25519_sandy2x_v121666_121666 +#define m25 crypto_scalarmult_curve25519_sandy2x_m25 +#define m26 crypto_scalarmult_curve25519_sandy2x_m26 +#define subc0 crypto_scalarmult_curve25519_sandy2x_subc0 +#define subc2 crypto_scalarmult_curve25519_sandy2x_subc2 +#define REDMASK51 crypto_scalarmult_curve25519_sandy2x_REDMASK51 + +#endif /* ifndef consts_namespace_H */ + diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c new file mode 100644 index 0000000..d653b21 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c @@ -0,0 +1,71 @@ +/* + This file is adapted from ref10/scalarmult.c: + The code for Mongomery ladder is replace by the ladder assembly function; + Inversion is done in the same way as amd64-51/. + (fe is first converted into fe51 after Mongomery ladder) +*/ + +#include + +#ifdef HAVE_AVX_ASM + +#include "utils.h" +#include "curve25519_sandy2x.h" +#include "../scalarmult_curve25519.h" +#include "fe.h" +#include "fe51.h" +#include "ladder.h" + +#define x1 var[0] +#define x2 var[1] +#define z2 var[2] + +static int +crypto_scalarmult_curve25519_sandy2x(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + unsigned char t[32]; + fe var[3]; + fe51 x_51; + fe51 z_51; + unsigned int i; + + for (i = 0; i < 32; i++) { + t[i] = n[i]; + } + t[0] &= 248; + t[31] &= 127; + t[31] |= 64; + + fe_frombytes(x1, p); + + ladder(var, t); + + z_51.v[0] = (z2[1] << 26) + z2[0]; + z_51.v[1] = (z2[3] << 26) + z2[2]; + z_51.v[2] = (z2[5] << 26) + z2[4]; + z_51.v[3] = (z2[7] << 26) + z2[6]; + z_51.v[4] = (z2[9] << 26) + z2[8]; + + x_51.v[0] = (x2[1] << 26) + x2[0]; + x_51.v[1] = (x2[3] << 26) + x2[2]; + x_51.v[2] = (x2[5] << 26) + x2[4]; + x_51.v[3] = (x2[7] << 26) + x2[6]; + x_51.v[4] = (x2[9] << 26) + x2[8]; + + fe51_invert(&z_51, &z_51); + fe51_mul(&x_51, &x_51, &z_51); + fe51_pack(q, &x_51); + + sodium_memzero(t, sizeof t); + + return 0; +} + +struct crypto_scalarmult_curve25519_implementation +crypto_scalarmult_curve25519_sandy2x_implementation = { + SODIUM_C99(.mult = ) crypto_scalarmult_curve25519_sandy2x, + SODIUM_C99(.mult_base = ) NULL +}; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h new file mode 100644 index 0000000..f02d980 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h @@ -0,0 +1,9 @@ +#ifndef curve25519_sandy2x_H +#define curve25519_sandy2x_H + +#include "crypto_scalarmult_curve25519.h" + +extern struct crypto_scalarmult_curve25519_implementation + crypto_scalarmult_curve25519_sandy2x_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h new file mode 100644 index 0000000..b1115f8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h @@ -0,0 +1,26 @@ +/* + This file is adapted from ref10/fe.h: + All the redundant functions are removed. +*/ + +#ifndef fe_H +#define fe_H + +#include +#include + +typedef uint64_t fe[10]; + +/* +fe means field element. +Here the field is \Z/(2^255-19). +An element t, entries t[0]...t[9], represents the integer +t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9]. +Bounds on each t[i] vary depending on context. +*/ + +#define fe_frombytes crypto_scalarmult_curve25519_sandy2x_fe_frombytes + +extern void fe_frombytes(fe, const unsigned char *); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h new file mode 100644 index 0000000..8e3f199 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h @@ -0,0 +1,35 @@ +/* + This file is adapted from amd64-51/fe25519.h: + 'fe25519' is renamed as 'fe51'; + All the redundant functions are removed; + New function fe51_nsquare is introduced. +*/ + +#ifndef fe51_H +#define fe51_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include "fe51_namespace.h" + +typedef struct +{ + uint64_t v[5]; +} +fe51; + +extern void fe51_pack(unsigned char *, const fe51 *); +extern void fe51_mul(fe51 *, const fe51 *, const fe51 *); +extern void fe51_nsquare(fe51 *, const fe51 *, int); +extern void fe51_invert(fe51 *, const fe51 *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c new file mode 100644 index 0000000..ec9bb1a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c @@ -0,0 +1,58 @@ +/* + This file is adapted from amd64-51/fe25519_invert.c: + Loops of squares are replaced by nsquares for better performance. +*/ + +#include "fe51.h" + +#ifdef HAVE_AVX_ASM + +#define fe51_square(x, y) fe51_nsquare(x, y, 1) + +void +fe51_invert(fe51 *r, const fe51 *x) +{ + fe51 z2; + fe51 z9; + fe51 z11; + fe51 z2_5_0; + fe51 z2_10_0; + fe51 z2_20_0; + fe51 z2_50_0; + fe51 z2_100_0; + fe51 t; + + /* 2 */ fe51_square(&z2,x); + /* 4 */ fe51_square(&t,&z2); + /* 8 */ fe51_square(&t,&t); + /* 9 */ fe51_mul(&z9,&t,x); + /* 11 */ fe51_mul(&z11,&z9,&z2); + /* 22 */ fe51_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe51_mul(&z2_5_0,&t,&z9); + + /* 2^10 - 2^5 */ fe51_nsquare(&t,&z2_5_0, 5); + /* 2^10 - 2^0 */ fe51_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^20 - 2^10 */ fe51_nsquare(&t,&z2_10_0, 10); + /* 2^20 - 2^0 */ fe51_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^40 - 2^20 */ fe51_nsquare(&t,&z2_20_0, 20); + /* 2^40 - 2^0 */ fe51_mul(&t,&t,&z2_20_0); + + /* 2^50 - 2^10 */ fe51_nsquare(&t,&t,10); + /* 2^50 - 2^0 */ fe51_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^100 - 2^50 */ fe51_nsquare(&t,&z2_50_0, 50); + /* 2^100 - 2^0 */ fe51_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^200 - 2^100 */ fe51_nsquare(&t,&z2_100_0, 100); + /* 2^200 - 2^0 */ fe51_mul(&t,&t,&z2_100_0); + + /* 2^250 - 2^50 */ fe51_nsquare(&t,&t, 50); + /* 2^250 - 2^0 */ fe51_mul(&t,&t,&z2_50_0); + + /* 2^255 - 2^5 */ fe51_nsquare(&t,&t,5); + /* 2^255 - 21 */ fe51_mul(r,&t,&z11); +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S new file mode 100644 index 0000000..94e3615 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S @@ -0,0 +1,200 @@ +#ifdef IN_SANDY2X + +/* + This file is basically amd64-51/fe25519_mul.s. +*/ +#include "private/asm_cet.h" +#include "fe51_namespace.h" +#include "consts_namespace.h" +.text +.p2align 5 +#ifdef ASM_HIDE_SYMBOL +ASM_HIDE_SYMBOL fe51_mul +ASM_HIDE_SYMBOL _fe51_mul +#endif +.globl fe51_mul +.globl _fe51_mul +#ifdef __ELF__ +.type fe51_mul, @function +.type _fe51_mul, @function +#endif +fe51_mul: +_fe51_mul: + +_CET_ENDBR +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +mov %rdx,%rcx +movq 24(%rsi),%rdx +imulq $19,%rdx,%rax +movq %rax,64(%rsp) +mulq 16(%rcx) +mov %rax,%r8 +mov %rdx,%r9 +movq 32(%rsi),%rdx +imulq $19,%rdx,%rax +movq %rax,72(%rsp) +mulq 8(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 0(%rsi),%rax +mulq 0(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 0(%rsi),%rax +mulq 8(%rcx) +mov %rax,%r10 +mov %rdx,%r11 +movq 0(%rsi),%rax +mulq 16(%rcx) +mov %rax,%r12 +mov %rdx,%r13 +movq 0(%rsi),%rax +mulq 24(%rcx) +mov %rax,%r14 +mov %rdx,%r15 +movq 0(%rsi),%rax +mulq 32(%rcx) +mov %rax,%rbx +mov %rdx,%rbp +movq 8(%rsi),%rax +mulq 0(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 8(%rsi),%rax +mulq 8(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 8(%rsi),%rax +mulq 16(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq 8(%rsi),%rax +mulq 24(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 8(%rsi),%rdx +imulq $19,%rdx,%rax +mulq 32(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 16(%rsi),%rax +mulq 0(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 16(%rsi),%rax +mulq 8(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq 16(%rsi),%rax +mulq 16(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 16(%rsi),%rdx +imulq $19,%rdx,%rax +mulq 24(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 16(%rsi),%rdx +imulq $19,%rdx,%rax +mulq 32(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 24(%rsi),%rax +mulq 0(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq 24(%rsi),%rax +mulq 8(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 64(%rsp),%rax +mulq 24(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 64(%rsp),%rax +mulq 32(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 32(%rsi),%rax +mulq 0(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 72(%rsp),%rax +mulq 16(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 72(%rsp),%rax +mulq 24(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 72(%rsp),%rax +mulq 32(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq REDMASK51(%rip),%rsi +shld $13,%r8,%r9 +and %rsi,%r8 +shld $13,%r10,%r11 +and %rsi,%r10 +add %r9,%r10 +shld $13,%r12,%r13 +and %rsi,%r12 +add %r11,%r12 +shld $13,%r14,%r15 +and %rsi,%r14 +add %r13,%r14 +shld $13,%rbx,%rbp +and %rsi,%rbx +add %r15,%rbx +imulq $19,%rbp,%rdx +add %rdx,%r8 +mov %r8,%rdx +shr $51,%rdx +add %r10,%rdx +mov %rdx,%rcx +shr $51,%rdx +and %rsi,%r8 +add %r12,%rdx +mov %rdx,%r9 +shr $51,%rdx +and %rsi,%rcx +add %r14,%rdx +mov %rdx,%rax +shr $51,%rdx +and %rsi,%r9 +add %rbx,%rdx +mov %rdx,%r10 +shr $51,%rdx +and %rsi,%rax +imulq $19,%rdx,%rdx +add %rdx,%r8 +and %rsi,%r10 +movq %r8,0(%rdi) +movq %rcx,8(%rdi) +movq %r9,16(%rdi) +movq %rax,24(%rdi) +movq %r10,32(%rdi) +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h new file mode 100644 index 0000000..057f242 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h @@ -0,0 +1,16 @@ +#ifndef fe51_namespace_H +#define fe51_namespace_H + +#define fe51 crypto_scalarmult_curve25519_sandy2x_fe51 +#define _fe51 _crypto_scalarmult_curve25519_sandy2x_fe51 +#define fe51_pack crypto_scalarmult_curve25519_sandy2x_fe51_pack +#define _fe51_pack _crypto_scalarmult_curve25519_sandy2x_fe51_pack +#define fe51_mul crypto_scalarmult_curve25519_sandy2x_fe51_mul +#define _fe51_mul _crypto_scalarmult_curve25519_sandy2x_fe51_mul +#define fe51_nsquare crypto_scalarmult_curve25519_sandy2x_fe51_nsquare +#define _fe51_nsquare _crypto_scalarmult_curve25519_sandy2x_fe51_nsquare + +#define fe51_invert crypto_scalarmult_curve25519_sandy2x_fe51_invert + +#endif /* ifndef fe51_namespace_H */ + diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S new file mode 100644 index 0000000..75465b0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S @@ -0,0 +1,174 @@ +#ifdef IN_SANDY2X + +/* + This file is adapted from amd64-51/fe25519_square.s: + Adding loop to perform n squares. +*/ +#include "private/asm_cet.h" +#include "fe51_namespace.h" +#include "consts_namespace.h" +.p2align 5 + +#ifdef ASM_HIDE_SYMBOL +ASM_HIDE_SYMBOL fe51_nsquare +ASM_HIDE_SYMBOL _fe51_nsquare +#endif +.globl fe51_nsquare +.globl _fe51_nsquare +#ifdef __ELF__ +.type fe51_nsquare, @function +.type _fe51_nsquare, @function +#endif +fe51_nsquare: +_fe51_nsquare: + +_CET_ENDBR +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq 0(%rsi),%rcx +movq 8(%rsi),%r8 +movq 16(%rsi),%r9 +movq 24(%rsi),%rax +movq 32(%rsi),%rsi +movq %r9,16(%rdi) +movq %rax,24(%rdi) +movq %rsi,32(%rdi) +mov %rdx,%rsi + +.p2align 4 +._loop: +sub $1,%rsi +mov %rcx,%rax +mul %rcx +add %rcx,%rcx +mov %rax,%r9 +mov %rdx,%r10 +mov %rcx,%rax +mul %r8 +mov %rax,%r11 +mov %rdx,%r12 +mov %rcx,%rax +mulq 16(%rdi) +mov %rax,%r13 +mov %rdx,%r14 +mov %rcx,%rax +mulq 24(%rdi) +mov %rax,%r15 +mov %rdx,%rbx +mov %rcx,%rax +mulq 32(%rdi) +mov %rax,%rcx +mov %rdx,%rbp +mov %r8,%rax +mul %r8 +add %r8,%r8 +add %rax,%r13 +adc %rdx,%r14 +mov %r8,%rax +mulq 16(%rdi) +add %rax,%r15 +adc %rdx,%rbx +mov %r8,%rax +imulq $19, %r8,%r8 +mulq 24(%rdi) +add %rax,%rcx +adc %rdx,%rbp +mov %r8,%rax +mulq 32(%rdi) +add %rax,%r9 +adc %rdx,%r10 +movq 16(%rdi),%rax +mulq 16(%rdi) +add %rax,%rcx +adc %rdx,%rbp +shld $13,%rcx,%rbp +movq 16(%rdi),%rax +imulq $38, %rax,%rax +mulq 24(%rdi) +add %rax,%r9 +adc %rdx,%r10 +shld $13,%r9,%r10 +movq 16(%rdi),%rax +imulq $38, %rax,%rax +mulq 32(%rdi) +add %rax,%r11 +adc %rdx,%r12 +movq 24(%rdi),%rax +imulq $19, %rax,%rax +mulq 24(%rdi) +add %rax,%r11 +adc %rdx,%r12 +shld $13,%r11,%r12 +movq 24(%rdi),%rax +imulq $38, %rax,%rax +mulq 32(%rdi) +add %rax,%r13 +adc %rdx,%r14 +shld $13,%r13,%r14 +movq 32(%rdi),%rax +imulq $19, %rax,%rax +mulq 32(%rdi) +add %rax,%r15 +adc %rdx,%rbx +shld $13,%r15,%rbx +movq REDMASK51(%rip),%rdx +and %rdx,%rcx +add %rbx,%rcx +and %rdx,%r9 +and %rdx,%r11 +add %r10,%r11 +and %rdx,%r13 +add %r12,%r13 +and %rdx,%r15 +add %r14,%r15 +imulq $19, %rbp,%rbp +lea (%r9,%rbp),%r9 +mov %r9,%rax +shr $51,%r9 +add %r11,%r9 +and %rdx,%rax +mov %r9,%r8 +shr $51,%r9 +add %r13,%r9 +and %rdx,%r8 +mov %r9,%r10 +shr $51,%r9 +add %r15,%r9 +and %rdx,%r10 +movq %r10,16(%rdi) +mov %r9,%r10 +shr $51,%r9 +add %rcx,%r9 +and %rdx,%r10 +movq %r10,24(%rdi) +mov %r9,%r10 +shr $51,%r9 +imulq $19, %r9,%r9 +lea (%rax,%r9),%rcx +and %rdx,%r10 +movq %r10,32(%rdi) +cmp $0,%rsi +jne ._loop + +movq %rcx,0(%rdi) +movq %r8,8(%rdi) +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp +add %r11,%rsp +ret + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S new file mode 100644 index 0000000..fb7a39a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S @@ -0,0 +1,228 @@ +#ifdef IN_SANDY2X + +/* + This file is the result of merging + amd64-51/fe25519_pack.c and amd64-51/fe25519_freeze.s. +*/ +#include "private/asm_cet.h" +#include "fe51_namespace.h" +#include "consts_namespace.h" +.p2align 5 + +#ifdef ASM_HIDE_SYMBOL +ASM_HIDE_SYMBOL fe51_pack +ASM_HIDE_SYMBOL _fe51_pack +#endif +.globl fe51_pack +.globl _fe51_pack +#ifdef __ELF__ +.type fe51_pack, @function +.type _fe51_pack, @function +#endif +fe51_pack: +_fe51_pack: + +_CET_ENDBR +mov %rsp,%r11 +and $31,%r11 +add $32,%r11 +sub %r11,%rsp +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq 0(%rsi),%rdx +movq 8(%rsi),%rcx +movq 16(%rsi),%r8 +movq 24(%rsi),%r9 +movq 32(%rsi),%rsi +movq REDMASK51(%rip),%rax +lea -18(%rax),%r10 +mov $3,%r11 + +.p2align 4 +._reduceloop: +mov %rdx,%r12 +shr $51,%r12 +and %rax,%rdx +add %r12,%rcx +mov %rcx,%r12 +shr $51,%r12 +and %rax,%rcx +add %r12,%r8 +mov %r8,%r12 +shr $51,%r12 +and %rax,%r8 +add %r12,%r9 +mov %r9,%r12 +shr $51,%r12 +and %rax,%r9 +add %r12,%rsi +mov %rsi,%r12 +shr $51,%r12 +and %rax,%rsi +imulq $19, %r12,%r12 +add %r12,%rdx +sub $1,%r11 +ja ._reduceloop + +mov $1,%r12 +cmp %r10,%rdx +cmovl %r11,%r12 +cmp %rax,%rcx +cmovne %r11,%r12 +cmp %rax,%r8 +cmovne %r11,%r12 +cmp %rax,%r9 +cmovne %r11,%r12 +cmp %rax,%rsi +cmovne %r11,%r12 +neg %r12 +and %r12,%rax +and %r12,%r10 +sub %r10,%rdx +sub %rax,%rcx +sub %rax,%r8 +sub %rax,%r9 +sub %rax,%rsi +mov %rdx,%rax +and $0xFF,%eax +movb %al,0(%rdi) +mov %rdx,%rax +shr $8,%rax +and $0xFF,%eax +movb %al,1(%rdi) +mov %rdx,%rax +shr $16,%rax +and $0xFF,%eax +movb %al,2(%rdi) +mov %rdx,%rax +shr $24,%rax +and $0xFF,%eax +movb %al,3(%rdi) +mov %rdx,%rax +shr $32,%rax +and $0xFF,%eax +movb %al,4(%rdi) +mov %rdx,%rax +shr $40,%rax +and $0xFF,%eax +movb %al,5(%rdi) +mov %rdx,%rdx +shr $48,%rdx +mov %rcx,%rax +shl $3,%rax +and $0xF8,%eax +xor %rdx,%rax +movb %al,6(%rdi) +mov %rcx,%rdx +shr $5,%rdx +and $0xFF,%edx +movb %dl,7(%rdi) +mov %rcx,%rdx +shr $13,%rdx +and $0xFF,%edx +movb %dl,8(%rdi) +mov %rcx,%rdx +shr $21,%rdx +and $0xFF,%edx +movb %dl,9(%rdi) +mov %rcx,%rdx +shr $29,%rdx +and $0xFF,%edx +movb %dl,10(%rdi) +mov %rcx,%rdx +shr $37,%rdx +and $0xFF,%edx +movb %dl,11(%rdi) +mov %rcx,%rdx +shr $45,%rdx +mov %r8,%rcx +shl $6,%rcx +and $0xC0,%ecx +xor %rdx,%rcx +movb %cl,12(%rdi) +mov %r8,%rdx +shr $2,%rdx +and $0xFF,%edx +movb %dl,13(%rdi) +mov %r8,%rdx +shr $10,%rdx +and $0xFF,%edx +movb %dl,14(%rdi) +mov %r8,%rdx +shr $18,%rdx +and $0xFF,%edx +movb %dl,15(%rdi) +mov %r8,%rdx +shr $26,%rdx +and $0xFF,%edx +movb %dl,16(%rdi) +mov %r8,%rdx +shr $34,%rdx +and $0xFF,%edx +movb %dl,17(%rdi) +mov %r8,%rdx +shr $42,%rdx +movb %dl,18(%rdi) +mov %r8,%rdx +shr $50,%rdx +mov %r9,%rcx +shl $1,%rcx +and $0xFE,%ecx +xor %rdx,%rcx +movb %cl,19(%rdi) +mov %r9,%rdx +shr $7,%rdx +and $0xFF,%edx +movb %dl,20(%rdi) +mov %r9,%rdx +shr $15,%rdx +and $0xFF,%edx +movb %dl,21(%rdi) +mov %r9,%rdx +shr $23,%rdx +and $0xFF,%edx +movb %dl,22(%rdi) +mov %r9,%rdx +shr $31,%rdx +and $0xFF,%edx +movb %dl,23(%rdi) +mov %r9,%rdx +shr $39,%rdx +and $0xFF,%edx +movb %dl,24(%rdi) +mov %r9,%rdx +shr $47,%rdx +mov %rsi,%rcx +shl $4,%rcx +and $0xF0,%ecx +xor %rdx,%rcx +movb %cl,25(%rdi) +mov %rsi,%rdx +shr $4,%rdx +and $0xFF,%edx +movb %dl,26(%rdi) +mov %rsi,%rdx +shr $12,%rdx +and $0xFF,%edx +movb %dl,27(%rdi) +mov %rsi,%rdx +shr $20,%rdx +and $0xFF,%edx +movb %dl,28(%rdi) +mov %rsi,%rdx +shr $28,%rdx +and $0xFF,%edx +movb %dl,29(%rdi) +mov %rsi,%rdx +shr $36,%rdx +and $0xFF,%edx +movb %dl,30(%rdi) +mov %rsi,%rsi +shr $44,%rsi +movb %sil,31(%rdi) +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +add %r11,%rsp +ret + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c new file mode 100644 index 0000000..b6e687e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c @@ -0,0 +1,78 @@ +/* + This file is basically ref10/fe_frombytes.h. +*/ + +#include "fe.h" + +#ifdef HAVE_AVX_ASM + +static uint64_t +load_3(const unsigned char *in) +{ + uint64_t result; + result = (uint64_t) in[0]; + result |= ((uint64_t) in[1]) << 8; + result |= ((uint64_t) in[2]) << 16; + return result; +} + +static uint64_t +load_4(const unsigned char *in) +{ + uint64_t result; + result = (uint64_t) in[0]; + result |= ((uint64_t) in[1]) << 8; + result |= ((uint64_t) in[2]) << 16; + result |= ((uint64_t) in[3]) << 24; + return result; +} + +void +fe_frombytes(fe h, const unsigned char *s) +{ + uint64_t h0 = load_4(s); + uint64_t h1 = load_3(s + 4) << 6; + uint64_t h2 = load_3(s + 7) << 5; + uint64_t h3 = load_3(s + 10) << 3; + uint64_t h4 = load_3(s + 13) << 2; + uint64_t h5 = load_4(s + 16); + uint64_t h6 = load_3(s + 20) << 7; + uint64_t h7 = load_3(s + 23) << 5; + uint64_t h8 = load_3(s + 26) << 4; + uint64_t h9 = (load_3(s + 29) & 8388607) << 2; + uint64_t carry0; + uint64_t carry1; + uint64_t carry2; + uint64_t carry3; + uint64_t carry4; + uint64_t carry5; + uint64_t carry6; + uint64_t carry7; + uint64_t carry8; + uint64_t carry9; + + carry9 = h9 >> 25; h0 += carry9 * 19; h9 &= 0x1FFFFFF; + carry1 = h1 >> 25; h2 += carry1; h1 &= 0x1FFFFFF; + carry3 = h3 >> 25; h4 += carry3; h3 &= 0x1FFFFFF; + carry5 = h5 >> 25; h6 += carry5; h5 &= 0x1FFFFFF; + carry7 = h7 >> 25; h8 += carry7; h7 &= 0x1FFFFFF; + + carry0 = h0 >> 26; h1 += carry0; h0 &= 0x3FFFFFF; + carry2 = h2 >> 26; h3 += carry2; h2 &= 0x3FFFFFF; + carry4 = h4 >> 26; h5 += carry4; h4 &= 0x3FFFFFF; + carry6 = h6 >> 26; h7 += carry6; h6 &= 0x3FFFFFF; + carry8 = h8 >> 26; h9 += carry8; h8 &= 0x3FFFFFF; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S new file mode 100644 index 0000000..a25e57b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S @@ -0,0 +1,1442 @@ +#ifdef IN_SANDY2X + +#include "private/asm_cet.h" +#include "ladder_namespace.h" +#include "consts_namespace.h" +.p2align 5 + +#ifdef ASM_HIDE_SYMBOL +ASM_HIDE_SYMBOL ladder +ASM_HIDE_SYMBOL _ladder +#endif +.globl ladder +.globl _ladder +#ifdef __ELF__ +.type ladder, @function +.type _ladder, @function +#endif +ladder: +_ladder: + +_CET_ENDBR +mov %rsp,%r11 +and $31,%r11 +add $1856,%r11 +sub %r11,%rsp +movq %r11,1824(%rsp) +movq %r12,1832(%rsp) +movq %r13,1840(%rsp) +movq %r14,1848(%rsp) +vmovdqa v0_0(%rip),%xmm0 +vmovdqa v1_0(%rip),%xmm1 +vmovdqu 0(%rdi),%xmm2 +vmovdqa %xmm2,0(%rsp) +vmovdqu 16(%rdi),%xmm2 +vmovdqa %xmm2,16(%rsp) +vmovdqu 32(%rdi),%xmm2 +vmovdqa %xmm2,32(%rsp) +vmovdqu 48(%rdi),%xmm2 +vmovdqa %xmm2,48(%rsp) +vmovdqu 64(%rdi),%xmm2 +vmovdqa %xmm2,64(%rsp) +vmovdqa %xmm1,80(%rsp) +vmovdqa %xmm0,96(%rsp) +vmovdqa %xmm0,112(%rsp) +vmovdqa %xmm0,128(%rsp) +vmovdqa %xmm0,144(%rsp) +vmovdqa %xmm1,%xmm0 +vpxor %xmm1,%xmm1,%xmm1 +vpxor %xmm2,%xmm2,%xmm2 +vpxor %xmm3,%xmm3,%xmm3 +vpxor %xmm4,%xmm4,%xmm4 +vpxor %xmm5,%xmm5,%xmm5 +vpxor %xmm6,%xmm6,%xmm6 +vpxor %xmm7,%xmm7,%xmm7 +vpxor %xmm8,%xmm8,%xmm8 +vpxor %xmm9,%xmm9,%xmm9 +vmovdqu 0(%rdi),%xmm10 +vmovdqa %xmm10,160(%rsp) +vmovdqu 16(%rdi),%xmm10 +vmovdqa %xmm10,176(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,192(%rsp) +vmovdqu 32(%rdi),%xmm10 +vmovdqa %xmm10,208(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,224(%rsp) +vmovdqu 48(%rdi),%xmm10 +vmovdqa %xmm10,240(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,256(%rsp) +vmovdqu 64(%rdi),%xmm10 +vmovdqa %xmm10,272(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,288(%rsp) +vmovdqu 8(%rdi),%xmm10 +vpmuludq v2_1(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,304(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,320(%rsp) +vmovdqu 24(%rdi),%xmm10 +vpmuludq v2_1(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,336(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,352(%rsp) +vmovdqu 40(%rdi),%xmm10 +vpmuludq v2_1(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,368(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,384(%rsp) +vmovdqu 56(%rdi),%xmm10 +vpmuludq v2_1(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,400(%rsp) +vpmuludq v19_19(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,416(%rsp) +vmovdqu 0(%rdi),%xmm10 +vmovdqu 64(%rdi),%xmm11 +vblendps $12, %xmm11, %xmm10, %xmm10 +vpshufd $2,%xmm10,%xmm10 +vpmuludq v38_1(%rip),%xmm10,%xmm10 +vmovdqa %xmm10,432(%rsp) +movq 0(%rsi),%rdx +movq 8(%rsi),%rcx +movq 16(%rsi),%r8 +movq 24(%rsi),%r9 +shrd $1,%rcx,%rdx +shrd $1,%r8,%rcx +shrd $1,%r9,%r8 +shr $1,%r9 +xorq 0(%rsi),%rdx +xorq 8(%rsi),%rcx +xorq 16(%rsi),%r8 +xorq 24(%rsi),%r9 +leaq 800(%rsp),%rsi +mov $64,%rax + +.p2align 4 +._ladder_small_loop: +mov %rdx,%r10 +mov %rcx,%r11 +mov %r8,%r12 +mov %r9,%r13 +shr $1,%rdx +shr $1,%rcx +shr $1,%r8 +shr $1,%r9 +and $1,%r10d +and $1,%r11d +and $1,%r12d +and $1,%r13d +neg %r10 +neg %r11 +neg %r12 +neg %r13 +movl %r10d,0(%rsi) +movl %r11d,256(%rsi) +movl %r12d,512(%rsi) +movl %r13d,768(%rsi) +add $4,%rsi +sub $1,%rax +jne ._ladder_small_loop +mov $255,%rdx +add $760,%rsi + +.p2align 4 +._ladder_loop: +sub $1,%rdx +vbroadcastss 0(%rsi),%xmm10 +sub $4,%rsi +vmovdqa 0(%rsp),%xmm11 +vmovdqa 80(%rsp),%xmm12 +vpxor %xmm11,%xmm0,%xmm13 +vpand %xmm10,%xmm13,%xmm13 +vpxor %xmm13,%xmm0,%xmm0 +vpxor %xmm13,%xmm11,%xmm11 +vpxor %xmm12,%xmm1,%xmm13 +vpand %xmm10,%xmm13,%xmm13 +vpxor %xmm13,%xmm1,%xmm1 +vpxor %xmm13,%xmm12,%xmm12 +vmovdqa 16(%rsp),%xmm13 +vmovdqa 96(%rsp),%xmm14 +vpxor %xmm13,%xmm2,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm2,%xmm2 +vpxor %xmm15,%xmm13,%xmm13 +vpxor %xmm14,%xmm3,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm3,%xmm3 +vpxor %xmm15,%xmm14,%xmm14 +vmovdqa %xmm13,0(%rsp) +vmovdqa %xmm14,16(%rsp) +vmovdqa 32(%rsp),%xmm13 +vmovdqa 112(%rsp),%xmm14 +vpxor %xmm13,%xmm4,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm4,%xmm4 +vpxor %xmm15,%xmm13,%xmm13 +vpxor %xmm14,%xmm5,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm5,%xmm5 +vpxor %xmm15,%xmm14,%xmm14 +vmovdqa %xmm13,32(%rsp) +vmovdqa %xmm14,80(%rsp) +vmovdqa 48(%rsp),%xmm13 +vmovdqa 128(%rsp),%xmm14 +vpxor %xmm13,%xmm6,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm6,%xmm6 +vpxor %xmm15,%xmm13,%xmm13 +vpxor %xmm14,%xmm7,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm7,%xmm7 +vpxor %xmm15,%xmm14,%xmm14 +vmovdqa %xmm13,48(%rsp) +vmovdqa %xmm14,96(%rsp) +vmovdqa 64(%rsp),%xmm13 +vmovdqa 144(%rsp),%xmm14 +vpxor %xmm13,%xmm8,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm8,%xmm8 +vpxor %xmm15,%xmm13,%xmm13 +vpxor %xmm14,%xmm9,%xmm15 +vpand %xmm10,%xmm15,%xmm15 +vpxor %xmm15,%xmm9,%xmm9 +vpxor %xmm15,%xmm14,%xmm14 +vmovdqa %xmm13,64(%rsp) +vmovdqa %xmm14,112(%rsp) +vpaddq subc0(%rip),%xmm11,%xmm10 +vpsubq %xmm12,%xmm10,%xmm10 +vpaddq %xmm12,%xmm11,%xmm11 +vpunpckhqdq %xmm10,%xmm11,%xmm12 +vpunpcklqdq %xmm10,%xmm11,%xmm10 +vpaddq %xmm1,%xmm0,%xmm11 +vpaddq subc0(%rip),%xmm0,%xmm0 +vpsubq %xmm1,%xmm0,%xmm0 +vpunpckhqdq %xmm11,%xmm0,%xmm1 +vpunpcklqdq %xmm11,%xmm0,%xmm0 +vpmuludq %xmm0,%xmm10,%xmm11 +vpmuludq %xmm1,%xmm10,%xmm13 +vmovdqa %xmm1,128(%rsp) +vpaddq %xmm1,%xmm1,%xmm1 +vpmuludq %xmm0,%xmm12,%xmm14 +vmovdqa %xmm0,144(%rsp) +vpaddq %xmm14,%xmm13,%xmm13 +vpmuludq %xmm1,%xmm12,%xmm0 +vmovdqa %xmm1,448(%rsp) +vpaddq %xmm3,%xmm2,%xmm1 +vpaddq subc2(%rip),%xmm2,%xmm2 +vpsubq %xmm3,%xmm2,%xmm2 +vpunpckhqdq %xmm1,%xmm2,%xmm3 +vpunpcklqdq %xmm1,%xmm2,%xmm1 +vpmuludq %xmm1,%xmm10,%xmm2 +vpaddq %xmm2,%xmm0,%xmm0 +vpmuludq %xmm3,%xmm10,%xmm2 +vmovdqa %xmm3,464(%rsp) +vpaddq %xmm3,%xmm3,%xmm3 +vpmuludq %xmm1,%xmm12,%xmm14 +vmovdqa %xmm1,480(%rsp) +vpaddq %xmm14,%xmm2,%xmm2 +vpmuludq %xmm3,%xmm12,%xmm1 +vmovdqa %xmm3,496(%rsp) +vpaddq %xmm5,%xmm4,%xmm3 +vpaddq subc2(%rip),%xmm4,%xmm4 +vpsubq %xmm5,%xmm4,%xmm4 +vpunpckhqdq %xmm3,%xmm4,%xmm5 +vpunpcklqdq %xmm3,%xmm4,%xmm3 +vpmuludq %xmm3,%xmm10,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vpmuludq %xmm5,%xmm10,%xmm4 +vmovdqa %xmm5,512(%rsp) +vpaddq %xmm5,%xmm5,%xmm5 +vpmuludq %xmm3,%xmm12,%xmm14 +vmovdqa %xmm3,528(%rsp) +vpaddq %xmm14,%xmm4,%xmm4 +vpaddq %xmm7,%xmm6,%xmm3 +vpaddq subc2(%rip),%xmm6,%xmm6 +vpsubq %xmm7,%xmm6,%xmm6 +vpunpckhqdq %xmm3,%xmm6,%xmm7 +vpunpcklqdq %xmm3,%xmm6,%xmm3 +vpmuludq %xmm3,%xmm10,%xmm6 +vpmuludq %xmm5,%xmm12,%xmm14 +vmovdqa %xmm5,544(%rsp) +vpmuludq v19_19(%rip),%xmm5,%xmm5 +vmovdqa %xmm5,560(%rsp) +vpaddq %xmm14,%xmm6,%xmm6 +vpmuludq %xmm7,%xmm10,%xmm5 +vmovdqa %xmm7,576(%rsp) +vpaddq %xmm7,%xmm7,%xmm7 +vpmuludq %xmm3,%xmm12,%xmm14 +vmovdqa %xmm3,592(%rsp) +vpaddq %xmm14,%xmm5,%xmm5 +vpmuludq v19_19(%rip),%xmm3,%xmm3 +vmovdqa %xmm3,608(%rsp) +vpaddq %xmm9,%xmm8,%xmm3 +vpaddq subc2(%rip),%xmm8,%xmm8 +vpsubq %xmm9,%xmm8,%xmm8 +vpunpckhqdq %xmm3,%xmm8,%xmm9 +vpunpcklqdq %xmm3,%xmm8,%xmm3 +vmovdqa %xmm3,624(%rsp) +vpmuludq %xmm7,%xmm12,%xmm8 +vmovdqa %xmm7,640(%rsp) +vpmuludq v19_19(%rip),%xmm7,%xmm7 +vmovdqa %xmm7,656(%rsp) +vpmuludq %xmm3,%xmm10,%xmm7 +vpaddq %xmm7,%xmm8,%xmm8 +vpmuludq %xmm9,%xmm10,%xmm7 +vmovdqa %xmm9,672(%rsp) +vpaddq %xmm9,%xmm9,%xmm9 +vpmuludq %xmm3,%xmm12,%xmm10 +vpaddq %xmm10,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm3,%xmm3 +vmovdqa %xmm3,688(%rsp) +vpmuludq v19_19(%rip),%xmm12,%xmm12 +vpmuludq %xmm9,%xmm12,%xmm3 +vmovdqa %xmm9,704(%rsp) +vpaddq %xmm3,%xmm11,%xmm11 +vmovdqa 0(%rsp),%xmm3 +vmovdqa 16(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +vpsubq %xmm9,%xmm10,%xmm10 +vpaddq %xmm9,%xmm3,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm0,%xmm0 +vpmuludq 128(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm2,%xmm2 +vpmuludq 480(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm1,%xmm1 +vpmuludq 464(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm4,%xmm4 +vpmuludq 528(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm6,%xmm6 +vpmuludq 512(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm5,%xmm5 +vpmuludq 592(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm8,%xmm8 +vpmuludq 576(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm3,%xmm3 +vpmuludq 624(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm11,%xmm11 +vpmuludq 672(%rsp),%xmm3,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 144(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpmuludq 448(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm1,%xmm1 +vpmuludq 480(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 496(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 528(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 544(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm8,%xmm8 +vpmuludq 592(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm9,%xmm9 +vpmuludq 640(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 624(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 704(%rsp),%xmm9,%xmm9 +vpaddq %xmm9,%xmm0,%xmm0 +vmovdqa 32(%rsp),%xmm3 +vmovdqa 80(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +vpsubq %xmm9,%xmm10,%xmm10 +vpaddq %xmm9,%xmm3,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm1,%xmm1 +vpmuludq 128(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm4,%xmm4 +vpmuludq 480(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm6,%xmm6 +vpmuludq 464(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm5,%xmm5 +vpmuludq 528(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm8,%xmm8 +vpmuludq 512(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm3,%xmm3 +vpmuludq 592(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm11,%xmm11 +vpmuludq 576(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm13,%xmm13 +vpmuludq 624(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm0,%xmm0 +vpmuludq 672(%rsp),%xmm3,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpmuludq 144(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 448(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 480(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 496(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm8,%xmm8 +vpmuludq 528(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm9,%xmm9 +vpmuludq 544(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 592(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 640(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm0,%xmm0 +vpmuludq 624(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpmuludq 704(%rsp),%xmm9,%xmm9 +vpaddq %xmm9,%xmm1,%xmm1 +vmovdqa 48(%rsp),%xmm3 +vmovdqa 96(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +vpsubq %xmm9,%xmm10,%xmm10 +vpaddq %xmm9,%xmm3,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm6,%xmm6 +vpmuludq 128(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm5,%xmm5 +vpmuludq 480(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm8,%xmm8 +vpmuludq 464(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm3,%xmm3 +vpmuludq 528(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm11,%xmm11 +vpmuludq 512(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm13,%xmm13 +vpmuludq 592(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm0,%xmm0 +vpmuludq 576(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm2,%xmm2 +vpmuludq 624(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm1,%xmm1 +vpmuludq 672(%rsp),%xmm3,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 144(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 448(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm8,%xmm8 +vpmuludq 480(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm9,%xmm9 +vpmuludq 496(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 528(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 544(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm0,%xmm0 +vpmuludq 592(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpmuludq 640(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm1,%xmm1 +vpmuludq 624(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 704(%rsp),%xmm9,%xmm9 +vpaddq %xmm9,%xmm6,%xmm6 +vmovdqa 64(%rsp),%xmm3 +vmovdqa 112(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +vpsubq %xmm9,%xmm10,%xmm10 +vpaddq %xmm9,%xmm3,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm8,%xmm8 +vpmuludq 128(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm3,%xmm3 +vpmuludq 480(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm11,%xmm11 +vpmuludq 464(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm13,%xmm13 +vpmuludq 528(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm0,%xmm0 +vpmuludq 512(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm2,%xmm2 +vpmuludq 592(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm1,%xmm1 +vpmuludq 576(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm4,%xmm4 +vpmuludq 624(%rsp),%xmm3,%xmm10 +vpaddq %xmm10,%xmm6,%xmm6 +vpmuludq 672(%rsp),%xmm3,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 144(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq v19_19(%rip),%xmm9,%xmm9 +vpmuludq 448(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 480(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 496(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm0,%xmm0 +vpmuludq 528(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpmuludq 544(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm1,%xmm1 +vpmuludq 592(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 640(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 624(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 704(%rsp),%xmm9,%xmm9 +vpaddq %xmm9,%xmm8,%xmm8 +vpsrlq $25,%xmm4,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpand m25(%rip),%xmm4,%xmm4 +vpsrlq $26,%xmm11,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpand m26(%rip),%xmm11,%xmm11 +vpsrlq $26,%xmm6,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpand m26(%rip),%xmm6,%xmm6 +vpsrlq $25,%xmm13,%xmm3 +vpaddq %xmm3,%xmm0,%xmm0 +vpand m25(%rip),%xmm13,%xmm13 +vpsrlq $25,%xmm5,%xmm3 +vpaddq %xmm3,%xmm8,%xmm8 +vpand m25(%rip),%xmm5,%xmm5 +vpsrlq $26,%xmm0,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpand m26(%rip),%xmm0,%xmm0 +vpsrlq $26,%xmm8,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpand m26(%rip),%xmm8,%xmm8 +vpsrlq $25,%xmm2,%xmm3 +vpaddq %xmm3,%xmm1,%xmm1 +vpand m25(%rip),%xmm2,%xmm2 +vpsrlq $25,%xmm7,%xmm3 +vpsllq $4,%xmm3,%xmm9 +vpaddq %xmm3,%xmm11,%xmm11 +vpsllq $1,%xmm3,%xmm3 +vpaddq %xmm3,%xmm9,%xmm9 +vpaddq %xmm9,%xmm11,%xmm11 +vpand m25(%rip),%xmm7,%xmm7 +vpsrlq $26,%xmm1,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpand m26(%rip),%xmm1,%xmm1 +vpsrlq $26,%xmm11,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpand m26(%rip),%xmm11,%xmm11 +vpsrlq $25,%xmm4,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpand m25(%rip),%xmm4,%xmm4 +vpunpcklqdq %xmm13,%xmm11,%xmm3 +vpunpckhqdq %xmm13,%xmm11,%xmm9 +vpaddq subc0(%rip),%xmm9,%xmm10 +vpsubq %xmm3,%xmm10,%xmm10 +vpaddq %xmm9,%xmm3,%xmm3 +vpunpckhqdq %xmm3,%xmm10,%xmm9 +vpunpcklqdq %xmm3,%xmm10,%xmm10 +vpmuludq %xmm10,%xmm10,%xmm3 +vpaddq %xmm10,%xmm10,%xmm10 +vpmuludq %xmm9,%xmm10,%xmm11 +vpunpcklqdq %xmm2,%xmm0,%xmm12 +vpunpckhqdq %xmm2,%xmm0,%xmm0 +vpaddq subc2(%rip),%xmm0,%xmm2 +vpsubq %xmm12,%xmm2,%xmm2 +vpaddq %xmm0,%xmm12,%xmm12 +vpunpckhqdq %xmm12,%xmm2,%xmm0 +vpunpcklqdq %xmm12,%xmm2,%xmm2 +vpmuludq %xmm2,%xmm10,%xmm12 +vpaddq %xmm9,%xmm9,%xmm13 +vpmuludq %xmm13,%xmm9,%xmm9 +vpaddq %xmm9,%xmm12,%xmm12 +vpmuludq %xmm0,%xmm10,%xmm9 +vpmuludq %xmm2,%xmm13,%xmm14 +vpaddq %xmm14,%xmm9,%xmm9 +vpunpcklqdq %xmm4,%xmm1,%xmm14 +vpunpckhqdq %xmm4,%xmm1,%xmm1 +vpaddq subc2(%rip),%xmm1,%xmm4 +vpsubq %xmm14,%xmm4,%xmm4 +vpaddq %xmm1,%xmm14,%xmm14 +vpunpckhqdq %xmm14,%xmm4,%xmm1 +vpunpcklqdq %xmm14,%xmm4,%xmm4 +vmovdqa %xmm1,0(%rsp) +vpaddq %xmm1,%xmm1,%xmm1 +vmovdqa %xmm1,16(%rsp) +vpmuludq v19_19(%rip),%xmm1,%xmm1 +vmovdqa %xmm1,32(%rsp) +vpmuludq %xmm4,%xmm10,%xmm1 +vpmuludq %xmm2,%xmm2,%xmm14 +vpaddq %xmm14,%xmm1,%xmm1 +vpmuludq 0(%rsp),%xmm10,%xmm14 +vpmuludq %xmm4,%xmm13,%xmm15 +vpaddq %xmm15,%xmm14,%xmm14 +vpunpcklqdq %xmm5,%xmm6,%xmm15 +vpunpckhqdq %xmm5,%xmm6,%xmm5 +vpaddq subc2(%rip),%xmm5,%xmm6 +vpsubq %xmm15,%xmm6,%xmm6 +vpaddq %xmm5,%xmm15,%xmm15 +vpunpckhqdq %xmm15,%xmm6,%xmm5 +vpunpcklqdq %xmm15,%xmm6,%xmm6 +vmovdqa %xmm6,48(%rsp) +vpmuludq v19_19(%rip),%xmm6,%xmm6 +vmovdqa %xmm6,64(%rsp) +vmovdqa %xmm5,80(%rsp) +vpmuludq v38_38(%rip),%xmm5,%xmm5 +vmovdqa %xmm5,96(%rsp) +vpmuludq 48(%rsp),%xmm10,%xmm5 +vpaddq %xmm0,%xmm0,%xmm6 +vpmuludq %xmm6,%xmm0,%xmm0 +vpaddq %xmm0,%xmm5,%xmm5 +vpmuludq 80(%rsp),%xmm10,%xmm0 +vpmuludq %xmm4,%xmm6,%xmm15 +vpaddq %xmm15,%xmm0,%xmm0 +vpmuludq %xmm6,%xmm13,%xmm15 +vpaddq %xmm15,%xmm1,%xmm1 +vpmuludq %xmm6,%xmm2,%xmm15 +vpaddq %xmm15,%xmm14,%xmm14 +vpunpcklqdq %xmm7,%xmm8,%xmm15 +vpunpckhqdq %xmm7,%xmm8,%xmm7 +vpaddq subc2(%rip),%xmm7,%xmm8 +vpsubq %xmm15,%xmm8,%xmm8 +vpaddq %xmm7,%xmm15,%xmm15 +vpunpckhqdq %xmm15,%xmm8,%xmm7 +vpunpcklqdq %xmm15,%xmm8,%xmm8 +vmovdqa %xmm8,112(%rsp) +vpmuludq v19_19(%rip),%xmm8,%xmm8 +vmovdqa %xmm8,448(%rsp) +vpmuludq 112(%rsp),%xmm10,%xmm8 +vpmuludq %xmm7,%xmm10,%xmm10 +vpmuludq v38_38(%rip),%xmm7,%xmm15 +vpmuludq %xmm15,%xmm7,%xmm7 +vpaddq %xmm7,%xmm8,%xmm8 +vpmuludq %xmm15,%xmm13,%xmm7 +vpaddq %xmm7,%xmm3,%xmm3 +vpmuludq %xmm15,%xmm2,%xmm7 +vpaddq %xmm7,%xmm11,%xmm11 +vpmuludq 80(%rsp),%xmm13,%xmm7 +vpaddq %xmm7,%xmm7,%xmm7 +vpaddq %xmm7,%xmm8,%xmm8 +vpmuludq 16(%rsp),%xmm13,%xmm7 +vpaddq %xmm7,%xmm5,%xmm5 +vpmuludq 48(%rsp),%xmm13,%xmm7 +vpaddq %xmm7,%xmm0,%xmm0 +vpmuludq 112(%rsp),%xmm13,%xmm7 +vpaddq %xmm7,%xmm10,%xmm10 +vpmuludq %xmm15,%xmm6,%xmm7 +vpaddq %xmm7,%xmm12,%xmm12 +vpmuludq %xmm15,%xmm4,%xmm7 +vpaddq %xmm7,%xmm9,%xmm9 +vpaddq %xmm2,%xmm2,%xmm2 +vpmuludq %xmm4,%xmm2,%xmm7 +vpaddq %xmm7,%xmm5,%xmm5 +vpmuludq 448(%rsp),%xmm2,%xmm7 +vpaddq %xmm7,%xmm3,%xmm3 +vpmuludq 448(%rsp),%xmm6,%xmm7 +vpaddq %xmm7,%xmm11,%xmm11 +vpmuludq 0(%rsp),%xmm2,%xmm7 +vpaddq %xmm7,%xmm0,%xmm0 +vpmuludq 48(%rsp),%xmm2,%xmm7 +vpaddq %xmm7,%xmm8,%xmm8 +vpmuludq 80(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq 96(%rsp),%xmm4,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpmuludq %xmm4,%xmm4,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpaddq %xmm4,%xmm4,%xmm2 +vpmuludq 448(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm12,%xmm12 +vpmuludq 16(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vpmuludq 48(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm14,%xmm14 +vpmuludq 96(%rsp),%xmm6,%xmm4 +vpaddq %xmm4,%xmm3,%xmm3 +vmovdqa 16(%rsp),%xmm4 +vpmuludq 448(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm9,%xmm9 +vpmuludq 16(%rsp),%xmm6,%xmm4 +vpaddq %xmm4,%xmm8,%xmm8 +vpmuludq 48(%rsp),%xmm6,%xmm4 +vpaddq %xmm4,%xmm10,%xmm10 +vpmuludq 80(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm4,%xmm4 +vpaddq %xmm4,%xmm5,%xmm5 +vpmuludq 112(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm0,%xmm0 +vmovdqa 48(%rsp),%xmm4 +vpaddq %xmm4,%xmm4,%xmm4 +vpmuludq 448(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vmovdqa 80(%rsp),%xmm4 +vpaddq %xmm4,%xmm4,%xmm4 +vpmuludq 448(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm14,%xmm14 +vpmuludq 64(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm3,%xmm3 +vmovdqa 16(%rsp),%xmm4 +vpmuludq 64(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm11,%xmm11 +vmovdqa 16(%rsp),%xmm4 +vpmuludq 96(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm12,%xmm12 +vmovdqa 48(%rsp),%xmm4 +vpmuludq 96(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm9,%xmm9 +vpmuludq 0(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vmovdqa 32(%rsp),%xmm2 +vpmuludq 0(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm3,%xmm3 +vmovdqa 64(%rsp),%xmm2 +vpmuludq 48(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vmovdqa 96(%rsp),%xmm2 +vpmuludq 80(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm1,%xmm1 +vmovdqa 448(%rsp),%xmm2 +vpmuludq 112(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpsrlq $26,%xmm3,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpand m26(%rip),%xmm3,%xmm3 +vpsrlq $25,%xmm14,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpand m25(%rip),%xmm14,%xmm14 +vpsrlq $25,%xmm11,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpand m25(%rip),%xmm11,%xmm11 +vpsrlq $26,%xmm5,%xmm2 +vpaddq %xmm2,%xmm0,%xmm0 +vpand m26(%rip),%xmm5,%xmm5 +vpsrlq $26,%xmm12,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpand m26(%rip),%xmm12,%xmm12 +vpsrlq $25,%xmm0,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpand m25(%rip),%xmm0,%xmm0 +vpsrlq $25,%xmm9,%xmm2 +vpaddq %xmm2,%xmm1,%xmm1 +vpand m25(%rip),%xmm9,%xmm9 +vpsrlq $26,%xmm8,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpand m26(%rip),%xmm8,%xmm8 +vpsrlq $26,%xmm1,%xmm2 +vpaddq %xmm2,%xmm14,%xmm14 +vpand m26(%rip),%xmm1,%xmm1 +vpsrlq $25,%xmm10,%xmm2 +vpsllq $4,%xmm2,%xmm4 +vpaddq %xmm2,%xmm3,%xmm3 +vpsllq $1,%xmm2,%xmm2 +vpaddq %xmm2,%xmm4,%xmm4 +vpaddq %xmm4,%xmm3,%xmm3 +vpand m25(%rip),%xmm10,%xmm10 +vpsrlq $25,%xmm14,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpand m25(%rip),%xmm14,%xmm14 +vpsrlq $26,%xmm3,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpand m26(%rip),%xmm3,%xmm3 +vpunpckhqdq %xmm11,%xmm3,%xmm2 +vmovdqa %xmm2,0(%rsp) +vpshufd $0,%xmm3,%xmm2 +vpshufd $0,%xmm11,%xmm3 +vpmuludq 160(%rsp),%xmm2,%xmm4 +vpmuludq 432(%rsp),%xmm3,%xmm6 +vpaddq %xmm6,%xmm4,%xmm4 +vpmuludq 176(%rsp),%xmm2,%xmm6 +vpmuludq 304(%rsp),%xmm3,%xmm7 +vpaddq %xmm7,%xmm6,%xmm6 +vpmuludq 208(%rsp),%xmm2,%xmm7 +vpmuludq 336(%rsp),%xmm3,%xmm11 +vpaddq %xmm11,%xmm7,%xmm7 +vpmuludq 240(%rsp),%xmm2,%xmm11 +vpmuludq 368(%rsp),%xmm3,%xmm13 +vpaddq %xmm13,%xmm11,%xmm11 +vpmuludq 272(%rsp),%xmm2,%xmm2 +vpmuludq 400(%rsp),%xmm3,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpunpckhqdq %xmm9,%xmm12,%xmm3 +vmovdqa %xmm3,16(%rsp) +vpshufd $0,%xmm12,%xmm3 +vpshufd $0,%xmm9,%xmm9 +vpmuludq 288(%rsp),%xmm3,%xmm12 +vpaddq %xmm12,%xmm4,%xmm4 +vpmuludq 416(%rsp),%xmm9,%xmm12 +vpaddq %xmm12,%xmm4,%xmm4 +vpmuludq 160(%rsp),%xmm3,%xmm12 +vpaddq %xmm12,%xmm6,%xmm6 +vpmuludq 432(%rsp),%xmm9,%xmm12 +vpaddq %xmm12,%xmm6,%xmm6 +vpmuludq 176(%rsp),%xmm3,%xmm12 +vpaddq %xmm12,%xmm7,%xmm7 +vpmuludq 304(%rsp),%xmm9,%xmm12 +vpaddq %xmm12,%xmm7,%xmm7 +vpmuludq 208(%rsp),%xmm3,%xmm12 +vpaddq %xmm12,%xmm11,%xmm11 +vpmuludq 336(%rsp),%xmm9,%xmm12 +vpaddq %xmm12,%xmm11,%xmm11 +vpmuludq 240(%rsp),%xmm3,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpmuludq 368(%rsp),%xmm9,%xmm3 +vpaddq %xmm3,%xmm2,%xmm2 +vpunpckhqdq %xmm14,%xmm1,%xmm3 +vmovdqa %xmm3,32(%rsp) +vpshufd $0,%xmm1,%xmm1 +vpshufd $0,%xmm14,%xmm3 +vpmuludq 256(%rsp),%xmm1,%xmm9 +vpaddq %xmm9,%xmm4,%xmm4 +vpmuludq 384(%rsp),%xmm3,%xmm9 +vpaddq %xmm9,%xmm4,%xmm4 +vpmuludq 288(%rsp),%xmm1,%xmm9 +vpaddq %xmm9,%xmm6,%xmm6 +vpmuludq 416(%rsp),%xmm3,%xmm9 +vpaddq %xmm9,%xmm6,%xmm6 +vpmuludq 160(%rsp),%xmm1,%xmm9 +vpaddq %xmm9,%xmm7,%xmm7 +vpmuludq 432(%rsp),%xmm3,%xmm9 +vpaddq %xmm9,%xmm7,%xmm7 +vpmuludq 176(%rsp),%xmm1,%xmm9 +vpaddq %xmm9,%xmm11,%xmm11 +vpmuludq 304(%rsp),%xmm3,%xmm9 +vpaddq %xmm9,%xmm11,%xmm11 +vpmuludq 208(%rsp),%xmm1,%xmm1 +vpaddq %xmm1,%xmm2,%xmm2 +vpmuludq 336(%rsp),%xmm3,%xmm1 +vpaddq %xmm1,%xmm2,%xmm2 +vpunpckhqdq %xmm0,%xmm5,%xmm1 +vmovdqa %xmm1,48(%rsp) +vpshufd $0,%xmm5,%xmm1 +vpshufd $0,%xmm0,%xmm0 +vpmuludq 224(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 352(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 256(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 384(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 288(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq 416(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq 160(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 432(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 176(%rsp),%xmm1,%xmm1 +vpaddq %xmm1,%xmm2,%xmm2 +vpmuludq 304(%rsp),%xmm0,%xmm0 +vpaddq %xmm0,%xmm2,%xmm2 +vpunpckhqdq %xmm10,%xmm8,%xmm0 +vmovdqa %xmm0,64(%rsp) +vpshufd $0,%xmm8,%xmm0 +vpshufd $0,%xmm10,%xmm1 +vpmuludq 192(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 320(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm4,%xmm4 +vpmuludq 224(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 352(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 256(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq 384(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq 288(%rsp),%xmm0,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 416(%rsp),%xmm1,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 160(%rsp),%xmm0,%xmm0 +vpaddq %xmm0,%xmm2,%xmm2 +vpmuludq 432(%rsp),%xmm1,%xmm0 +vpaddq %xmm0,%xmm2,%xmm2 +vmovdqa %xmm4,80(%rsp) +vmovdqa %xmm6,96(%rsp) +vmovdqa %xmm7,112(%rsp) +vmovdqa %xmm11,448(%rsp) +vmovdqa %xmm2,496(%rsp) +vmovdqa 144(%rsp),%xmm0 +vpmuludq %xmm0,%xmm0,%xmm1 +vpaddq %xmm0,%xmm0,%xmm0 +vmovdqa 128(%rsp),%xmm2 +vpmuludq %xmm2,%xmm0,%xmm3 +vmovdqa 480(%rsp),%xmm4 +vpmuludq %xmm4,%xmm0,%xmm5 +vmovdqa 464(%rsp),%xmm6 +vpmuludq %xmm6,%xmm0,%xmm7 +vmovdqa 528(%rsp),%xmm8 +vpmuludq %xmm8,%xmm0,%xmm9 +vpmuludq 512(%rsp),%xmm0,%xmm10 +vpmuludq 592(%rsp),%xmm0,%xmm11 +vpmuludq 576(%rsp),%xmm0,%xmm12 +vpmuludq 624(%rsp),%xmm0,%xmm13 +vmovdqa 672(%rsp),%xmm14 +vpmuludq %xmm14,%xmm0,%xmm0 +vpmuludq v38_38(%rip),%xmm14,%xmm15 +vpmuludq %xmm15,%xmm14,%xmm14 +vpaddq %xmm14,%xmm13,%xmm13 +vpaddq %xmm6,%xmm6,%xmm14 +vpmuludq %xmm14,%xmm6,%xmm6 +vpaddq %xmm6,%xmm11,%xmm11 +vpaddq %xmm2,%xmm2,%xmm6 +vpmuludq %xmm6,%xmm2,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpmuludq %xmm15,%xmm6,%xmm2 +vpaddq %xmm2,%xmm1,%xmm1 +vpmuludq %xmm15,%xmm4,%xmm2 +vpaddq %xmm2,%xmm3,%xmm3 +vpmuludq 544(%rsp),%xmm6,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpmuludq 592(%rsp),%xmm6,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq 640(%rsp),%xmm6,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpmuludq 624(%rsp),%xmm6,%xmm2 +vpaddq %xmm2,%xmm0,%xmm0 +vpmuludq %xmm4,%xmm6,%xmm2 +vpaddq %xmm2,%xmm7,%xmm7 +vpmuludq %xmm14,%xmm6,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpmuludq %xmm8,%xmm6,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq %xmm15,%xmm14,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpmuludq %xmm15,%xmm8,%xmm2 +vpaddq %xmm2,%xmm7,%xmm7 +vpmuludq %xmm4,%xmm4,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpmuludq %xmm14,%xmm4,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpaddq %xmm4,%xmm4,%xmm2 +vpmuludq %xmm8,%xmm2,%xmm4 +vpaddq %xmm4,%xmm11,%xmm11 +vpmuludq 688(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vpmuludq 688(%rsp),%xmm14,%xmm4 +vpaddq %xmm4,%xmm3,%xmm3 +vpmuludq 512(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm12,%xmm12 +vpmuludq 592(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm13,%xmm13 +vpmuludq 576(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm0,%xmm0 +vpmuludq 656(%rsp),%xmm8,%xmm2 +vpaddq %xmm2,%xmm3,%xmm3 +vpmuludq %xmm8,%xmm14,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq %xmm8,%xmm8,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpaddq %xmm8,%xmm8,%xmm2 +vpmuludq 688(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm5,%xmm5 +vpmuludq 544(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm9,%xmm9 +vpmuludq 592(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm10,%xmm10 +vpmuludq 656(%rsp),%xmm14,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vmovdqa 544(%rsp),%xmm4 +vpmuludq 688(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm7,%xmm7 +vpmuludq 544(%rsp),%xmm14,%xmm4 +vpaddq %xmm4,%xmm13,%xmm13 +vpmuludq 592(%rsp),%xmm14,%xmm4 +vpaddq %xmm4,%xmm0,%xmm0 +vpmuludq 640(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm11,%xmm11 +vpmuludq 624(%rsp),%xmm15,%xmm4 +vpaddq %xmm4,%xmm12,%xmm12 +vmovdqa 592(%rsp),%xmm4 +vpaddq %xmm4,%xmm4,%xmm4 +vpmuludq 688(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm9,%xmm9 +vpmuludq 608(%rsp),%xmm2,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vmovdqa 544(%rsp),%xmm4 +vpmuludq 608(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm3,%xmm3 +vmovdqa 544(%rsp),%xmm4 +vpmuludq 656(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm5,%xmm5 +vmovdqa 592(%rsp),%xmm4 +vpmuludq 656(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm7,%xmm7 +vmovdqa 640(%rsp),%xmm4 +vpmuludq 688(%rsp),%xmm4,%xmm4 +vpaddq %xmm4,%xmm10,%xmm10 +vpmuludq 512(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm0,%xmm0 +vmovdqa 560(%rsp),%xmm2 +vpmuludq 512(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm1,%xmm1 +vmovdqa 608(%rsp),%xmm2 +vpmuludq 592(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vmovdqa 656(%rsp),%xmm2 +vpmuludq 576(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vmovdqa 688(%rsp),%xmm2 +vpmuludq 624(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpsrlq $26,%xmm1,%xmm2 +vpaddq %xmm2,%xmm3,%xmm3 +vpand m26(%rip),%xmm1,%xmm1 +vpsrlq $25,%xmm10,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpand m25(%rip),%xmm10,%xmm10 +vpsrlq $25,%xmm3,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpand m25(%rip),%xmm3,%xmm3 +vpsrlq $26,%xmm11,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpand m26(%rip),%xmm11,%xmm11 +vpsrlq $26,%xmm5,%xmm2 +vpaddq %xmm2,%xmm7,%xmm7 +vpand m26(%rip),%xmm5,%xmm5 +vpsrlq $25,%xmm12,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpand m25(%rip),%xmm12,%xmm12 +vpsrlq $25,%xmm7,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpand m25(%rip),%xmm7,%xmm7 +vpsrlq $26,%xmm13,%xmm2 +vpaddq %xmm2,%xmm0,%xmm0 +vpand m26(%rip),%xmm13,%xmm13 +vpsrlq $26,%xmm9,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpand m26(%rip),%xmm9,%xmm9 +vpsrlq $25,%xmm0,%xmm2 +vpsllq $4,%xmm2,%xmm4 +vpaddq %xmm2,%xmm1,%xmm1 +vpsllq $1,%xmm2,%xmm2 +vpaddq %xmm2,%xmm4,%xmm4 +vpaddq %xmm4,%xmm1,%xmm1 +vpand m25(%rip),%xmm0,%xmm0 +vpsrlq $25,%xmm10,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpand m25(%rip),%xmm10,%xmm10 +vpsrlq $26,%xmm1,%xmm2 +vpaddq %xmm2,%xmm3,%xmm3 +vpand m26(%rip),%xmm1,%xmm1 +vpunpckhqdq %xmm3,%xmm1,%xmm2 +vpunpcklqdq %xmm3,%xmm1,%xmm1 +vmovdqa %xmm1,464(%rsp) +vpaddq subc0(%rip),%xmm2,%xmm3 +vpsubq %xmm1,%xmm3,%xmm3 +vpunpckhqdq %xmm3,%xmm2,%xmm1 +vpunpcklqdq %xmm3,%xmm2,%xmm2 +vmovdqa %xmm2,480(%rsp) +vmovdqa %xmm1,512(%rsp) +vpsllq $1,%xmm1,%xmm1 +vmovdqa %xmm1,528(%rsp) +vpmuludq v121666_121666(%rip),%xmm3,%xmm3 +vmovdqa 80(%rsp),%xmm1 +vpunpcklqdq %xmm1,%xmm3,%xmm2 +vpunpckhqdq %xmm1,%xmm3,%xmm1 +vpunpckhqdq %xmm7,%xmm5,%xmm3 +vpunpcklqdq %xmm7,%xmm5,%xmm4 +vmovdqa %xmm4,544(%rsp) +vpaddq subc2(%rip),%xmm3,%xmm5 +vpsubq %xmm4,%xmm5,%xmm5 +vpunpckhqdq %xmm5,%xmm3,%xmm4 +vpunpcklqdq %xmm5,%xmm3,%xmm3 +vmovdqa %xmm3,560(%rsp) +vmovdqa %xmm4,576(%rsp) +vpsllq $1,%xmm4,%xmm4 +vmovdqa %xmm4,592(%rsp) +vpmuludq v121666_121666(%rip),%xmm5,%xmm5 +vmovdqa 96(%rsp),%xmm3 +vpunpcklqdq %xmm3,%xmm5,%xmm4 +vpunpckhqdq %xmm3,%xmm5,%xmm3 +vpunpckhqdq %xmm10,%xmm9,%xmm5 +vpunpcklqdq %xmm10,%xmm9,%xmm6 +vmovdqa %xmm6,608(%rsp) +vpaddq subc2(%rip),%xmm5,%xmm7 +vpsubq %xmm6,%xmm7,%xmm7 +vpunpckhqdq %xmm7,%xmm5,%xmm6 +vpunpcklqdq %xmm7,%xmm5,%xmm5 +vmovdqa %xmm5,624(%rsp) +vmovdqa %xmm6,640(%rsp) +vpsllq $1,%xmm6,%xmm6 +vmovdqa %xmm6,656(%rsp) +vpmuludq v121666_121666(%rip),%xmm7,%xmm7 +vmovdqa 112(%rsp),%xmm5 +vpunpcklqdq %xmm5,%xmm7,%xmm6 +vpunpckhqdq %xmm5,%xmm7,%xmm5 +vpunpckhqdq %xmm12,%xmm11,%xmm7 +vpunpcklqdq %xmm12,%xmm11,%xmm8 +vmovdqa %xmm8,672(%rsp) +vpaddq subc2(%rip),%xmm7,%xmm9 +vpsubq %xmm8,%xmm9,%xmm9 +vpunpckhqdq %xmm9,%xmm7,%xmm8 +vpunpcklqdq %xmm9,%xmm7,%xmm7 +vmovdqa %xmm7,688(%rsp) +vmovdqa %xmm8,704(%rsp) +vpsllq $1,%xmm8,%xmm8 +vmovdqa %xmm8,720(%rsp) +vpmuludq v121666_121666(%rip),%xmm9,%xmm9 +vmovdqa 448(%rsp),%xmm7 +vpunpcklqdq %xmm7,%xmm9,%xmm8 +vpunpckhqdq %xmm7,%xmm9,%xmm7 +vpunpckhqdq %xmm0,%xmm13,%xmm9 +vpunpcklqdq %xmm0,%xmm13,%xmm0 +vmovdqa %xmm0,448(%rsp) +vpaddq subc2(%rip),%xmm9,%xmm10 +vpsubq %xmm0,%xmm10,%xmm10 +vpunpckhqdq %xmm10,%xmm9,%xmm0 +vpunpcklqdq %xmm10,%xmm9,%xmm9 +vmovdqa %xmm9,736(%rsp) +vmovdqa %xmm0,752(%rsp) +vpsllq $1,%xmm0,%xmm0 +vmovdqa %xmm0,768(%rsp) +vpmuludq v121666_121666(%rip),%xmm10,%xmm10 +vmovdqa 496(%rsp),%xmm0 +vpunpcklqdq %xmm0,%xmm10,%xmm9 +vpunpckhqdq %xmm0,%xmm10,%xmm0 +vpsrlq $26,%xmm2,%xmm10 +vpaddq %xmm10,%xmm1,%xmm1 +vpand m26(%rip),%xmm2,%xmm2 +vpsrlq $25,%xmm5,%xmm10 +vpaddq %xmm10,%xmm8,%xmm8 +vpand m25(%rip),%xmm5,%xmm5 +vpsrlq $25,%xmm1,%xmm10 +vpaddq %xmm10,%xmm4,%xmm4 +vpand m25(%rip),%xmm1,%xmm1 +vpsrlq $26,%xmm8,%xmm10 +vpaddq %xmm10,%xmm7,%xmm7 +vpand m26(%rip),%xmm8,%xmm8 +vpsrlq $26,%xmm4,%xmm10 +vpaddq %xmm10,%xmm3,%xmm3 +vpand m26(%rip),%xmm4,%xmm4 +vpsrlq $25,%xmm7,%xmm10 +vpaddq %xmm10,%xmm9,%xmm9 +vpand m25(%rip),%xmm7,%xmm7 +vpsrlq $25,%xmm3,%xmm10 +vpaddq %xmm10,%xmm6,%xmm6 +vpand m25(%rip),%xmm3,%xmm3 +vpsrlq $26,%xmm9,%xmm10 +vpaddq %xmm10,%xmm0,%xmm0 +vpand m26(%rip),%xmm9,%xmm9 +vpsrlq $26,%xmm6,%xmm10 +vpaddq %xmm10,%xmm5,%xmm5 +vpand m26(%rip),%xmm6,%xmm6 +vpsrlq $25,%xmm0,%xmm10 +vpsllq $4,%xmm10,%xmm11 +vpaddq %xmm10,%xmm2,%xmm2 +vpsllq $1,%xmm10,%xmm10 +vpaddq %xmm10,%xmm11,%xmm11 +vpaddq %xmm11,%xmm2,%xmm2 +vpand m25(%rip),%xmm0,%xmm0 +vpsrlq $25,%xmm5,%xmm10 +vpaddq %xmm10,%xmm8,%xmm8 +vpand m25(%rip),%xmm5,%xmm5 +vpsrlq $26,%xmm2,%xmm10 +vpaddq %xmm10,%xmm1,%xmm1 +vpand m26(%rip),%xmm2,%xmm2 +vpunpckhqdq %xmm1,%xmm2,%xmm10 +vmovdqa %xmm10,80(%rsp) +vpunpcklqdq %xmm1,%xmm2,%xmm1 +vpunpckhqdq %xmm3,%xmm4,%xmm2 +vmovdqa %xmm2,96(%rsp) +vpunpcklqdq %xmm3,%xmm4,%xmm2 +vpunpckhqdq %xmm5,%xmm6,%xmm3 +vmovdqa %xmm3,112(%rsp) +vpunpcklqdq %xmm5,%xmm6,%xmm3 +vpunpckhqdq %xmm7,%xmm8,%xmm4 +vmovdqa %xmm4,128(%rsp) +vpunpcklqdq %xmm7,%xmm8,%xmm4 +vpunpckhqdq %xmm0,%xmm9,%xmm5 +vmovdqa %xmm5,144(%rsp) +vpunpcklqdq %xmm0,%xmm9,%xmm0 +vmovdqa 464(%rsp),%xmm5 +vpaddq %xmm5,%xmm1,%xmm1 +vpunpcklqdq %xmm1,%xmm5,%xmm6 +vpunpckhqdq %xmm1,%xmm5,%xmm1 +vpmuludq 512(%rsp),%xmm6,%xmm5 +vpmuludq 480(%rsp),%xmm1,%xmm7 +vpaddq %xmm7,%xmm5,%xmm5 +vpmuludq 560(%rsp),%xmm6,%xmm7 +vpmuludq 528(%rsp),%xmm1,%xmm8 +vpaddq %xmm8,%xmm7,%xmm7 +vpmuludq 576(%rsp),%xmm6,%xmm8 +vpmuludq 560(%rsp),%xmm1,%xmm9 +vpaddq %xmm9,%xmm8,%xmm8 +vpmuludq 624(%rsp),%xmm6,%xmm9 +vpmuludq 592(%rsp),%xmm1,%xmm10 +vpaddq %xmm10,%xmm9,%xmm9 +vpmuludq 640(%rsp),%xmm6,%xmm10 +vpmuludq 624(%rsp),%xmm1,%xmm11 +vpaddq %xmm11,%xmm10,%xmm10 +vpmuludq 688(%rsp),%xmm6,%xmm11 +vpmuludq 656(%rsp),%xmm1,%xmm12 +vpaddq %xmm12,%xmm11,%xmm11 +vpmuludq 704(%rsp),%xmm6,%xmm12 +vpmuludq 688(%rsp),%xmm1,%xmm13 +vpaddq %xmm13,%xmm12,%xmm12 +vpmuludq 736(%rsp),%xmm6,%xmm13 +vpmuludq 720(%rsp),%xmm1,%xmm14 +vpaddq %xmm14,%xmm13,%xmm13 +vpmuludq 752(%rsp),%xmm6,%xmm14 +vpmuludq 736(%rsp),%xmm1,%xmm15 +vpaddq %xmm15,%xmm14,%xmm14 +vpmuludq 480(%rsp),%xmm6,%xmm6 +vpmuludq v19_19(%rip),%xmm1,%xmm1 +vpmuludq 768(%rsp),%xmm1,%xmm1 +vpaddq %xmm1,%xmm6,%xmm6 +vmovdqa 544(%rsp),%xmm1 +vpaddq %xmm1,%xmm2,%xmm2 +vpunpcklqdq %xmm2,%xmm1,%xmm15 +vpunpckhqdq %xmm2,%xmm1,%xmm1 +vpmuludq 480(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm7,%xmm7 +vpmuludq 512(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpmuludq 560(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpmuludq 576(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq 624(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpmuludq 640(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq 688(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpmuludq 704(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm15,%xmm15 +vpmuludq 736(%rsp),%xmm15,%xmm2 +vpaddq %xmm2,%xmm6,%xmm6 +vpmuludq 752(%rsp),%xmm15,%xmm15 +vpaddq %xmm15,%xmm5,%xmm5 +vpmuludq 480(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpmuludq 528(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpmuludq 560(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq 592(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpmuludq 624(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq 656(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpmuludq 688(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm1,%xmm1 +vpmuludq 720(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm6,%xmm6 +vpmuludq 736(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpmuludq 768(%rsp),%xmm1,%xmm1 +vpaddq %xmm1,%xmm7,%xmm7 +vmovdqa 608(%rsp),%xmm1 +vpaddq %xmm1,%xmm3,%xmm3 +vpunpcklqdq %xmm3,%xmm1,%xmm2 +vpunpckhqdq %xmm3,%xmm1,%xmm1 +vpmuludq 480(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm9,%xmm9 +vpmuludq 512(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm10,%xmm10 +vpmuludq 560(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 576(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm12,%xmm12 +vpmuludq 624(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 640(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm2,%xmm2 +vpmuludq 688(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 704(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 736(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq 752(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpmuludq 480(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq 528(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm11,%xmm11 +vpmuludq 560(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq 592(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpmuludq 624(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm1,%xmm1 +vpmuludq 656(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm6,%xmm6 +vpmuludq 688(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpmuludq 720(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm7,%xmm7 +vpmuludq 736(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpmuludq 768(%rsp),%xmm1,%xmm1 +vpaddq %xmm1,%xmm9,%xmm9 +vmovdqa 672(%rsp),%xmm1 +vpaddq %xmm1,%xmm4,%xmm4 +vpunpcklqdq %xmm4,%xmm1,%xmm2 +vpunpckhqdq %xmm4,%xmm1,%xmm1 +vpmuludq 480(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm11,%xmm11 +vpmuludq 512(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm12,%xmm12 +vpmuludq 560(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm13,%xmm13 +vpmuludq 576(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm2,%xmm2 +vpmuludq 624(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm6,%xmm6 +vpmuludq 640(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm5,%xmm5 +vpmuludq 688(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm7,%xmm7 +vpmuludq 704(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm8,%xmm8 +vpmuludq 736(%rsp),%xmm2,%xmm3 +vpaddq %xmm3,%xmm9,%xmm9 +vpmuludq 752(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq 480(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq 528(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm13,%xmm13 +vpmuludq 560(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm1,%xmm1 +vpmuludq 592(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm6,%xmm6 +vpmuludq 624(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm5,%xmm5 +vpmuludq 656(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm7,%xmm7 +vpmuludq 688(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm8,%xmm8 +vpmuludq 720(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm9,%xmm9 +vpmuludq 736(%rsp),%xmm1,%xmm2 +vpaddq %xmm2,%xmm10,%xmm10 +vpmuludq 768(%rsp),%xmm1,%xmm1 +vpaddq %xmm1,%xmm11,%xmm11 +vmovdqa 448(%rsp),%xmm1 +vpaddq %xmm1,%xmm0,%xmm0 +vpunpcklqdq %xmm0,%xmm1,%xmm2 +vpunpckhqdq %xmm0,%xmm1,%xmm0 +vpmuludq 480(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm13,%xmm13 +vpmuludq 512(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm2,%xmm2 +vpmuludq 560(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm6,%xmm6 +vpmuludq 576(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm5,%xmm5 +vpmuludq 624(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm7,%xmm7 +vpmuludq 640(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm8,%xmm8 +vpmuludq 688(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm9,%xmm9 +vpmuludq 704(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm10,%xmm10 +vpmuludq 736(%rsp),%xmm2,%xmm1 +vpaddq %xmm1,%xmm11,%xmm11 +vpmuludq 752(%rsp),%xmm2,%xmm2 +vpaddq %xmm2,%xmm12,%xmm12 +vpmuludq 480(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm14,%xmm14 +vpmuludq v19_19(%rip),%xmm0,%xmm0 +vpmuludq 528(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm6,%xmm6 +vpmuludq 560(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm5,%xmm5 +vpmuludq 592(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm7,%xmm7 +vpmuludq 624(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm8,%xmm8 +vpmuludq 656(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm9,%xmm9 +vpmuludq 688(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm10,%xmm10 +vpmuludq 720(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm11,%xmm11 +vpmuludq 736(%rsp),%xmm0,%xmm1 +vpaddq %xmm1,%xmm12,%xmm12 +vpmuludq 768(%rsp),%xmm0,%xmm0 +vpaddq %xmm0,%xmm13,%xmm13 +vpsrlq $26,%xmm6,%xmm0 +vpaddq %xmm0,%xmm5,%xmm5 +vpand m26(%rip),%xmm6,%xmm6 +vpsrlq $25,%xmm10,%xmm0 +vpaddq %xmm0,%xmm11,%xmm11 +vpand m25(%rip),%xmm10,%xmm10 +vpsrlq $25,%xmm5,%xmm0 +vpaddq %xmm0,%xmm7,%xmm7 +vpand m25(%rip),%xmm5,%xmm5 +vpsrlq $26,%xmm11,%xmm0 +vpaddq %xmm0,%xmm12,%xmm12 +vpand m26(%rip),%xmm11,%xmm11 +vpsrlq $26,%xmm7,%xmm0 +vpaddq %xmm0,%xmm8,%xmm8 +vpand m26(%rip),%xmm7,%xmm7 +vpsrlq $25,%xmm12,%xmm0 +vpaddq %xmm0,%xmm13,%xmm13 +vpand m25(%rip),%xmm12,%xmm12 +vpsrlq $25,%xmm8,%xmm0 +vpaddq %xmm0,%xmm9,%xmm9 +vpand m25(%rip),%xmm8,%xmm8 +vpsrlq $26,%xmm13,%xmm0 +vpaddq %xmm0,%xmm14,%xmm14 +vpand m26(%rip),%xmm13,%xmm13 +vpsrlq $26,%xmm9,%xmm0 +vpaddq %xmm0,%xmm10,%xmm10 +vpand m26(%rip),%xmm9,%xmm9 +vpsrlq $25,%xmm14,%xmm0 +vpsllq $4,%xmm0,%xmm1 +vpaddq %xmm0,%xmm6,%xmm6 +vpsllq $1,%xmm0,%xmm0 +vpaddq %xmm0,%xmm1,%xmm1 +vpaddq %xmm1,%xmm6,%xmm6 +vpand m25(%rip),%xmm14,%xmm14 +vpsrlq $25,%xmm10,%xmm0 +vpaddq %xmm0,%xmm11,%xmm11 +vpand m25(%rip),%xmm10,%xmm10 +vpsrlq $26,%xmm6,%xmm0 +vpaddq %xmm0,%xmm5,%xmm5 +vpand m26(%rip),%xmm6,%xmm6 +vpunpckhqdq %xmm5,%xmm6,%xmm1 +vpunpcklqdq %xmm5,%xmm6,%xmm0 +vpunpckhqdq %xmm8,%xmm7,%xmm3 +vpunpcklqdq %xmm8,%xmm7,%xmm2 +vpunpckhqdq %xmm10,%xmm9,%xmm5 +vpunpcklqdq %xmm10,%xmm9,%xmm4 +vpunpckhqdq %xmm12,%xmm11,%xmm7 +vpunpcklqdq %xmm12,%xmm11,%xmm6 +vpunpckhqdq %xmm14,%xmm13,%xmm9 +vpunpcklqdq %xmm14,%xmm13,%xmm8 +cmp $0,%rdx +jne ._ladder_loop +vmovdqu %xmm1,160(%rdi) +vmovdqu %xmm0,80(%rdi) +vmovdqu %xmm3,176(%rdi) +vmovdqu %xmm2,96(%rdi) +vmovdqu %xmm5,192(%rdi) +vmovdqu %xmm4,112(%rdi) +vmovdqu %xmm7,208(%rdi) +vmovdqu %xmm6,128(%rdi) +vmovdqu %xmm9,224(%rdi) +vmovdqu %xmm8,144(%rdi) +movq 1824(%rsp),%r11 +movq 1832(%rsp),%r12 +movq 1840(%rsp),%r13 +movq 1848(%rsp),%r14 +add %r11,%rsp +ret + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h new file mode 100644 index 0000000..ccf4eca --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h @@ -0,0 +1,18 @@ +#ifndef ladder_H +#define ladder_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "fe.h" +#include "ladder_namespace.h" + +extern void ladder(fe *, const unsigned char *); + +#ifdef __cplusplus +} +#endif + +#endif /* ifndef ladder_H */ + diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h new file mode 100644 index 0000000..6637074 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h @@ -0,0 +1,8 @@ +#ifndef ladder_namespace_H +#define ladder_namespace_H + +#define ladder crypto_scalarmult_curve25519_sandy2x_ladder +#define _ladder _crypto_scalarmult_curve25519_sandy2x_ladder + +#endif /* ifndef ladder_namespace_H */ + diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S new file mode 100644 index 0000000..585804f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S @@ -0,0 +1,16 @@ + +#ifdef HAVE_AVX_ASM + +#define IN_SANDY2X + +#include "consts.S" +#include "fe51_mul.S" +#include "fe51_nsquare.S" +#include "fe51_pack.S" +#include "ladder.S" + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c new file mode 100644 index 0000000..c55e45e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c @@ -0,0 +1,60 @@ + +#include "crypto_scalarmult_curve25519.h" +#include "private/implementations.h" +#include "scalarmult_curve25519.h" +#include "runtime.h" + +#ifdef HAVE_AVX_ASM +# include "sandy2x/curve25519_sandy2x.h" +#endif +#include "ref10/x25519_ref10.h" +static const crypto_scalarmult_curve25519_implementation *implementation = + &crypto_scalarmult_curve25519_ref10_implementation; + +int +crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + size_t i; + volatile unsigned char d = 0; + + if (implementation->mult(q, n, p) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + for (i = 0; i < crypto_scalarmult_curve25519_BYTES; i++) { + d |= q[i]; + } + return -(1 & ((d - 1) >> 8)); +} + +int +crypto_scalarmult_curve25519_base(unsigned char *q, const unsigned char *n) +{ + return crypto_scalarmult_curve25519_ref10_implementation + .mult_base(q, n); +} + +size_t +crypto_scalarmult_curve25519_bytes(void) +{ + return crypto_scalarmult_curve25519_BYTES; +} + +size_t +crypto_scalarmult_curve25519_scalarbytes(void) +{ + return crypto_scalarmult_curve25519_SCALARBYTES; +} + +int +_crypto_scalarmult_curve25519_pick_best_implementation(void) +{ + implementation = &crypto_scalarmult_curve25519_ref10_implementation; + +#ifdef HAVE_AVX_ASM + if (sodium_runtime_has_avx()) { + implementation = &crypto_scalarmult_curve25519_sandy2x_implementation; + } +#endif + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h new file mode 100644 index 0000000..66edbf6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h @@ -0,0 +1,11 @@ + +#ifndef scalarmult_poly1305_H +#define scalarmult_poly1305_H + +typedef struct crypto_scalarmult_curve25519_implementation { + int (*mult)(unsigned char *q, const unsigned char *n, + const unsigned char *p); + int (*mult_base)(unsigned char *q, const unsigned char *n); +} crypto_scalarmult_curve25519_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c new file mode 100644 index 0000000..7c98089 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c @@ -0,0 +1,121 @@ + +#include + +#include "crypto_scalarmult_ed25519.h" +#include "private/ed25519_ref10.h" +#include "utils.h" + +static int +_crypto_scalarmult_ed25519_is_inf(const unsigned char s[32]) +{ + unsigned char c; + unsigned int i; + + c = s[0] ^ 0x01; + for (i = 1; i < 31; i++) { + c |= s[i]; + } + c |= s[31] & 0x7f; + + return ((((unsigned int) c) - 1U) >> 8) & 1; +} + +static inline void +_crypto_scalarmult_ed25519_clamp(unsigned char k[32]) +{ + k[0] &= 248; + k[31] |= 64; +} + +static int +_crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p, const int clamp) +{ + unsigned char *t = q; + ge25519_p3 Q; + ge25519_p3 P; + unsigned int i; + + if (ge25519_is_canonical(p) == 0 || ge25519_has_small_order(p) != 0 || + ge25519_frombytes(&P, p) != 0 || ge25519_is_on_main_subgroup(&P) == 0) { + return -1; + } + for (i = 0; i < 32; ++i) { + t[i] = n[i]; + } + if (clamp != 0) { + _crypto_scalarmult_ed25519_clamp(t); + } + t[31] &= 127; + + ge25519_scalarmult(&Q, t, &P); + ge25519_p3_tobytes(q, &Q); + if (_crypto_scalarmult_ed25519_is_inf(q) != 0 || sodium_is_zero(n, 32)) { + return -1; + } + return 0; +} + +int +crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + return _crypto_scalarmult_ed25519(q, n, p, 1); +} + +int +crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + return _crypto_scalarmult_ed25519(q, n, p, 0); +} + +static int +_crypto_scalarmult_ed25519_base(unsigned char *q, + const unsigned char *n, const int clamp) +{ + unsigned char *t = q; + ge25519_p3 Q; + unsigned int i; + + for (i = 0; i < 32; ++i) { + t[i] = n[i]; + } + if (clamp != 0) { + _crypto_scalarmult_ed25519_clamp(t); + } + t[31] &= 127; + + ge25519_scalarmult_base(&Q, t); + ge25519_p3_tobytes(q, &Q); + if (_crypto_scalarmult_ed25519_is_inf(q) != 0 || sodium_is_zero(n, 32)) { + return -1; + } + return 0; +} + +int +crypto_scalarmult_ed25519_base(unsigned char *q, + const unsigned char *n) +{ + return _crypto_scalarmult_ed25519_base(q, n, 1); +} + +int +crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, + const unsigned char *n) +{ + return _crypto_scalarmult_ed25519_base(q, n, 0); +} + +size_t +crypto_scalarmult_ed25519_bytes(void) +{ + return crypto_scalarmult_ed25519_BYTES; +} + +size_t +crypto_scalarmult_ed25519_scalarbytes(void) +{ + return crypto_scalarmult_ed25519_SCALARBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c new file mode 100644 index 0000000..433a9a2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c @@ -0,0 +1,63 @@ + +#include + +#include "crypto_scalarmult_ed25519.h" +#include "crypto_scalarmult_ristretto255.h" +#include "private/ed25519_ref10.h" +#include "utils.h" + +int +crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) +{ + unsigned char *t = q; + ge25519_p3 Q; + ge25519_p3 P; + unsigned int i; + + if (ristretto255_frombytes(&P, p) != 0) { + return -1; + } + for (i = 0; i < 32; ++i) { + t[i] = n[i]; + } + t[31] &= 127; + ge25519_scalarmult(&Q, t, &P); + ristretto255_p3_tobytes(q, &Q); + if (sodium_is_zero(q, 32)) { + return -1; + } + return 0; +} + +int +crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) +{ + unsigned char *t = q; + ge25519_p3 Q; + unsigned int i; + + for (i = 0; i < 32; ++i) { + t[i] = n[i]; + } + t[31] &= 127; + ge25519_scalarmult_base(&Q, t); + ristretto255_p3_tobytes(q, &Q); + if (sodium_is_zero(q, 32)) { + return -1; + } + return 0; +} + +size_t +crypto_scalarmult_ristretto255_bytes(void) +{ + return crypto_scalarmult_ristretto255_BYTES; +} + +size_t +crypto_scalarmult_ristretto255_scalarbytes(void) +{ + return crypto_scalarmult_ristretto255_SCALARBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c new file mode 100644 index 0000000..45f678e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c @@ -0,0 +1,67 @@ + +#include "crypto_secretbox.h" +#include "randombytes.h" + +size_t +crypto_secretbox_keybytes(void) +{ + return crypto_secretbox_KEYBYTES; +} + +size_t +crypto_secretbox_noncebytes(void) +{ + return crypto_secretbox_NONCEBYTES; +} + +size_t +crypto_secretbox_zerobytes(void) +{ + return crypto_secretbox_ZEROBYTES; +} + +size_t +crypto_secretbox_boxzerobytes(void) +{ + return crypto_secretbox_BOXZEROBYTES; +} + +size_t +crypto_secretbox_macbytes(void) +{ + return crypto_secretbox_MACBYTES; +} + +size_t +crypto_secretbox_messagebytes_max(void) +{ + return crypto_secretbox_MESSAGEBYTES_MAX; +} + +const char * +crypto_secretbox_primitive(void) +{ + return crypto_secretbox_PRIMITIVE; +} + +int +crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305(c, m, mlen, n, k); +} + +int +crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_secretbox_xsalsa20poly1305_open(m, c, clen, n, k); +} + +void +crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) +{ + randombytes_buf(k, crypto_secretbox_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c new file mode 100644 index 0000000..c991ac6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c @@ -0,0 +1,145 @@ + +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_core_hsalsa20.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_secretbox.h" +#include "crypto_stream_salsa20.h" +#include "private/common.h" +#include "utils.h" + +int +crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char subkey[crypto_stream_salsa20_KEYBYTES]; + unsigned long long i; + unsigned long long mlen0; + + crypto_core_hsalsa20(subkey, n, k, NULL); + + if (((uintptr_t) c > (uintptr_t) m && + (uintptr_t) c - (uintptr_t) m < mlen) || + ((uintptr_t) m > (uintptr_t) c && + (uintptr_t) m - (uintptr_t) c < mlen)) { /* LCOV_EXCL_LINE */ + memmove(c, m, mlen); + m = c; + } + memset(block0, 0U, crypto_secretbox_ZEROBYTES); + COMPILER_ASSERT(64U >= crypto_secretbox_ZEROBYTES); + mlen0 = mlen; + if (mlen0 > 64U - crypto_secretbox_ZEROBYTES) { + mlen0 = 64U - crypto_secretbox_ZEROBYTES; + } + for (i = 0U; i < mlen0; i++) { + block0[i + crypto_secretbox_ZEROBYTES] = m[i]; + } + crypto_stream_salsa20_xor(block0, block0, + mlen0 + crypto_secretbox_ZEROBYTES, + n + 16, subkey); + COMPILER_ASSERT(crypto_secretbox_ZEROBYTES >= + crypto_onetimeauth_poly1305_KEYBYTES); + crypto_onetimeauth_poly1305_init(&state, block0); + + for (i = 0U; i < mlen0; i++) { + c[i] = block0[crypto_secretbox_ZEROBYTES + i]; + } + sodium_memzero(block0, sizeof block0); + if (mlen > mlen0) { + crypto_stream_salsa20_xor_ic(c + mlen0, m + mlen0, mlen - mlen0, + n + 16, 1U, subkey); + } + sodium_memzero(subkey, sizeof subkey); + + crypto_onetimeauth_poly1305_update(&state, c, mlen); + crypto_onetimeauth_poly1305_final(&state, mac); + sodium_memzero(&state, sizeof state); + + return 0; +} + +int +crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_secretbox_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_secretbox_detached(c + crypto_secretbox_MACBYTES, + c, m, mlen, n, k); +} + +int +crypto_secretbox_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + unsigned char block0[64U]; + unsigned char subkey[crypto_stream_salsa20_KEYBYTES]; + unsigned long long i; + unsigned long long mlen0; + + crypto_core_hsalsa20(subkey, n, k, NULL); + crypto_stream_salsa20(block0, crypto_stream_salsa20_KEYBYTES, + n + 16, subkey); + if (crypto_onetimeauth_poly1305_verify(mac, c, clen, block0) != 0) { + sodium_memzero(subkey, sizeof subkey); + return -1; + } + if (m == NULL) { + return 0; + } + if (((uintptr_t) c > (uintptr_t) m && + (uintptr_t) c - (uintptr_t) m < clen) || + ((uintptr_t) m > (uintptr_t) c && + (uintptr_t) m - (uintptr_t) c < clen)) { /* LCOV_EXCL_LINE */ + memmove(m, c, clen); + c = m; + } + mlen0 = clen; + if (mlen0 > 64U - crypto_secretbox_ZEROBYTES) { + mlen0 = 64U - crypto_secretbox_ZEROBYTES; + } + for (i = 0U; i < mlen0; i++) { + block0[crypto_secretbox_ZEROBYTES + i] = c[i]; + } + crypto_stream_salsa20_xor(block0, block0, + crypto_secretbox_ZEROBYTES + mlen0, + n + 16, subkey); + for (i = 0U; i < mlen0; i++) { + m[i] = block0[i + crypto_secretbox_ZEROBYTES]; + } + sodium_memzero(block0, sizeof block0); + if (clen > mlen0) { + crypto_stream_salsa20_xor_ic(m + mlen0, c + mlen0, clen - mlen0, + n + 16, 1U, subkey); + } + sodium_memzero(subkey, sizeof subkey); + + return 0; +} + +int +crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + if (clen < crypto_secretbox_MACBYTES) { + return -1; + } + return crypto_secretbox_open_detached(m, c + crypto_secretbox_MACBYTES, c, + clen - crypto_secretbox_MACBYTES, + n, k); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c new file mode 100644 index 0000000..d012b13 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c @@ -0,0 +1,177 @@ + +#include +#include +#include +#include +#include + +#include "core.h" +#include "crypto_core_hchacha20.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_secretbox_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "private/common.h" +#include "utils.h" + +#define crypto_secretbox_xchacha20poly1305_ZEROBYTES 32U + +int +crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + crypto_onetimeauth_poly1305_state state; + unsigned char block0[64U]; + unsigned char subkey[crypto_stream_chacha20_KEYBYTES]; + unsigned long long i; + unsigned long long mlen0; + + crypto_core_hchacha20(subkey, n, k, NULL); + + if (((uintptr_t) c > (uintptr_t) m && + (uintptr_t) c - (uintptr_t) m < mlen) || + ((uintptr_t) m > (uintptr_t) c && + (uintptr_t) m - (uintptr_t) c < mlen)) { /* LCOV_EXCL_LINE */ + memmove(c, m, mlen); + m = c; + } + memset(block0, 0U, crypto_secretbox_xchacha20poly1305_ZEROBYTES); + COMPILER_ASSERT(64U >= crypto_secretbox_xchacha20poly1305_ZEROBYTES); + mlen0 = mlen; + if (mlen0 > 64U - crypto_secretbox_xchacha20poly1305_ZEROBYTES) { + mlen0 = 64U - crypto_secretbox_xchacha20poly1305_ZEROBYTES; + } + for (i = 0U; i < mlen0; i++) { + block0[i + crypto_secretbox_xchacha20poly1305_ZEROBYTES] = m[i]; + } + crypto_stream_chacha20_xor(block0, block0, + mlen0 + crypto_secretbox_xchacha20poly1305_ZEROBYTES, + n + 16, subkey); + COMPILER_ASSERT(crypto_secretbox_xchacha20poly1305_ZEROBYTES >= + crypto_onetimeauth_poly1305_KEYBYTES); + crypto_onetimeauth_poly1305_init(&state, block0); + + for (i = 0U; i < mlen0; i++) { + c[i] = block0[crypto_secretbox_xchacha20poly1305_ZEROBYTES + i]; + } + sodium_memzero(block0, sizeof block0); + if (mlen > mlen0) { + crypto_stream_chacha20_xor_ic(c + mlen0, m + mlen0, mlen - mlen0, + n + 16, 1U, subkey); + } + sodium_memzero(subkey, sizeof subkey); + + crypto_onetimeauth_poly1305_update(&state, c, mlen); + crypto_onetimeauth_poly1305_final(&state, mac); + sodium_memzero(&state, sizeof state); + + return 0; +} + +int +crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_secretbox_xchacha20poly1305_detached + (c + crypto_secretbox_xchacha20poly1305_MACBYTES, c, m, mlen, n, k); +} + +int +crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + unsigned char block0[64U]; + unsigned char subkey[crypto_stream_chacha20_KEYBYTES]; + unsigned long long i; + unsigned long long mlen0; + + crypto_core_hchacha20(subkey, n, k, NULL); + crypto_stream_chacha20(block0, crypto_stream_chacha20_KEYBYTES, + n + 16, subkey); + if (crypto_onetimeauth_poly1305_verify(mac, c, clen, block0) != 0) { + sodium_memzero(subkey, sizeof subkey); + return -1; + } + if (m == NULL) { + return 0; + } + if (((uintptr_t) c > (uintptr_t) m && + (uintptr_t) c - (uintptr_t) m < clen) || + ((uintptr_t) m > (uintptr_t) c && + (uintptr_t) m - (uintptr_t) c < clen)) { /* LCOV_EXCL_LINE */ + memmove(m, c, clen); + c = m; + } + mlen0 = clen; + if (mlen0 > 64U - crypto_secretbox_xchacha20poly1305_ZEROBYTES) { + mlen0 = 64U - crypto_secretbox_xchacha20poly1305_ZEROBYTES; + } + for (i = 0U; i < mlen0; i++) { + block0[crypto_secretbox_xchacha20poly1305_ZEROBYTES + i] = c[i]; + } + crypto_stream_chacha20_xor(block0, block0, + crypto_secretbox_xchacha20poly1305_ZEROBYTES + mlen0, + n + 16, subkey); + for (i = 0U; i < mlen0; i++) { + m[i] = block0[i + crypto_secretbox_xchacha20poly1305_ZEROBYTES]; + } + if (clen > mlen0) { + crypto_stream_chacha20_xor_ic(m + mlen0, c + mlen0, clen - mlen0, + n + 16, 1U, subkey); + } + sodium_memzero(subkey, sizeof subkey); + + return 0; +} + +int +crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + if (clen < crypto_secretbox_xchacha20poly1305_MACBYTES) { + return -1; + } + return crypto_secretbox_xchacha20poly1305_open_detached + (m, c + crypto_secretbox_xchacha20poly1305_MACBYTES, c, + clen - crypto_secretbox_xchacha20poly1305_MACBYTES, n, k); +} + +size_t +crypto_secretbox_xchacha20poly1305_keybytes(void) +{ + return crypto_secretbox_xchacha20poly1305_KEYBYTES; +} + +size_t +crypto_secretbox_xchacha20poly1305_noncebytes(void) +{ + return crypto_secretbox_xchacha20poly1305_NONCEBYTES; +} + +size_t +crypto_secretbox_xchacha20poly1305_macbytes(void) +{ + return crypto_secretbox_xchacha20poly1305_MACBYTES; +} + +size_t +crypto_secretbox_xchacha20poly1305_messagebytes_max(void) +{ + return crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c new file mode 100644 index 0000000..7240050 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c @@ -0,0 +1,89 @@ +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "crypto_stream_xsalsa20.h" +#include "randombytes.h" + +int +crypto_secretbox_xsalsa20poly1305(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) +{ + int i; + + if (mlen < 32) { + return -1; + } + crypto_stream_xsalsa20_xor(c, m, mlen, n, k); + crypto_onetimeauth_poly1305(c + 16, c + 32, mlen - 32, c); + for (i = 0; i < 16; ++i) { + c[i] = 0; + } + return 0; +} + +int +crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) +{ + unsigned char subkey[32]; + int i; + + if (clen < 32) { + return -1; + } + crypto_stream_xsalsa20(subkey, 32, n, k); + if (crypto_onetimeauth_poly1305_verify(c + 16, c + 32, + clen - 32, subkey) != 0) { + return -1; + } + crypto_stream_xsalsa20_xor(m, c, clen, n, k); + for (i = 0; i < 32; ++i) { + m[i] = 0; + } + return 0; +} + +size_t +crypto_secretbox_xsalsa20poly1305_keybytes(void) +{ + return crypto_secretbox_xsalsa20poly1305_KEYBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_noncebytes(void) +{ + return crypto_secretbox_xsalsa20poly1305_NONCEBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_zerobytes(void) +{ + return crypto_secretbox_xsalsa20poly1305_ZEROBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_boxzerobytes(void) +{ + return crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_macbytes(void) +{ + return crypto_secretbox_xsalsa20poly1305_MACBYTES; +} + +size_t +crypto_secretbox_xsalsa20poly1305_messagebytes_max(void) +{ + return crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX; +} + +void +crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) +{ + randombytes_buf(k, crypto_secretbox_xsalsa20poly1305_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c new file mode 100644 index 0000000..2754a91 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c @@ -0,0 +1,313 @@ +#include +#include +#include +#include + +#include "core.h" +#include "crypto_aead_chacha20poly1305.h" +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_core_hchacha20.h" +#include "crypto_onetimeauth_poly1305.h" +#include "crypto_secretstream_xchacha20poly1305.h" +#include "randombytes.h" +#include "utils.h" + +#include "private/common.h" + +#define crypto_secretstream_xchacha20poly1305_COUNTERBYTES 4U +#define crypto_secretstream_xchacha20poly1305_INONCEBYTES 8U + +#define STATE_COUNTER(STATE) ((STATE)->nonce) +#define STATE_INONCE(STATE) ((STATE)->nonce + \ + crypto_secretstream_xchacha20poly1305_COUNTERBYTES) + +static const unsigned char _pad0[16] = { 0 }; + +static inline void +_crypto_secretstream_xchacha20poly1305_counter_reset + (crypto_secretstream_xchacha20poly1305_state *state) +{ + memset(STATE_COUNTER(state), 0, + crypto_secretstream_xchacha20poly1305_COUNTERBYTES); + STATE_COUNTER(state)[0] = 1; +} + +void +crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) +{ + randombytes_buf(k, crypto_secretstream_xchacha20poly1305_KEYBYTES); +} + +int +crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char out[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) +{ + COMPILER_ASSERT(crypto_secretstream_xchacha20poly1305_HEADERBYTES == + crypto_core_hchacha20_INPUTBYTES + + crypto_secretstream_xchacha20poly1305_INONCEBYTES); + COMPILER_ASSERT(crypto_secretstream_xchacha20poly1305_HEADERBYTES == + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES); + COMPILER_ASSERT(sizeof state->nonce == + crypto_secretstream_xchacha20poly1305_INONCEBYTES + + crypto_secretstream_xchacha20poly1305_COUNTERBYTES); + + randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES); + crypto_core_hchacha20(state->k, out, k, NULL); + _crypto_secretstream_xchacha20poly1305_counter_reset(state); + memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES, + crypto_secretstream_xchacha20poly1305_INONCEBYTES); + memset(state->_pad, 0, sizeof state->_pad); + + return 0; +} + +int +crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char in[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) +{ + crypto_core_hchacha20(state->k, in, k, NULL); + _crypto_secretstream_xchacha20poly1305_counter_reset(state); + memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES, + crypto_secretstream_xchacha20poly1305_INONCEBYTES); + memset(state->_pad, 0, sizeof state->_pad); + + return 0; +} + +void +crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state) +{ + unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + + crypto_secretstream_xchacha20poly1305_INONCEBYTES]; + size_t i; + + for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) { + new_key_and_inonce[i] = state->k[i]; + } + for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) { + new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] = + STATE_INONCE(state)[i]; + } + crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce, + sizeof new_key_and_inonce, + state->nonce, state->k); + for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) { + state->k[i] = new_key_and_inonce[i]; + } + for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) { + STATE_INONCE(state)[i] = + new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i]; + } + _crypto_secretstream_xchacha20poly1305_counter_reset(state); +} + +int +crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *out, unsigned long long *outlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) +{ + crypto_onetimeauth_poly1305_state poly1305_state; + unsigned char block[64U]; + unsigned char slen[8U]; + unsigned char *c; + unsigned char *mac; + + if (outlen_p != NULL) { + *outlen_p = 0U; + } + COMPILER_ASSERT(crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX + <= crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX); + if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k); + crypto_onetimeauth_poly1305_init(&poly1305_state, block); + sodium_memzero(block, sizeof block); + + crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen); + crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0, + (0x10 - adlen) & 0xf); + memset(block, 0, sizeof block); + block[0] = tag; + + crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block, + state->nonce, 1U, state->k); + crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block); + out[0] = block[0]; + + c = out + (sizeof tag); + crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k); + crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen); + crypto_onetimeauth_poly1305_update + (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf); + + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen); + STORE64_LE(slen, (sizeof block) + mlen); + crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen); + + mac = c + mlen; + crypto_onetimeauth_poly1305_final(&poly1305_state, mac); + sodium_memzero(&poly1305_state, sizeof poly1305_state); + + COMPILER_ASSERT(crypto_onetimeauth_poly1305_BYTES >= + crypto_secretstream_xchacha20poly1305_INONCEBYTES); + XOR_BUF(STATE_INONCE(state), mac, + crypto_secretstream_xchacha20poly1305_INONCEBYTES); + sodium_increment(STATE_COUNTER(state), + crypto_secretstream_xchacha20poly1305_COUNTERBYTES); + if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 || + sodium_is_zero(STATE_COUNTER(state), + crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) { + crypto_secretstream_xchacha20poly1305_rekey(state); + } + if (outlen_p != NULL) { + *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen; + } + return 0; +} + +int +crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *in, unsigned long long inlen, + const unsigned char *ad, unsigned long long adlen) +{ + crypto_onetimeauth_poly1305_state poly1305_state; + unsigned char block[64U]; + unsigned char slen[8U]; + unsigned char mac[crypto_onetimeauth_poly1305_BYTES]; + const unsigned char *c; + const unsigned char *stored_mac; + unsigned long long mlen; + unsigned char tag; + + if (mlen_p != NULL) { + *mlen_p = 0U; + } + if (tag_p != NULL) { + *tag_p = 0xff; + } + if (inlen < crypto_secretstream_xchacha20poly1305_ABYTES) { + return -1; + } + mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES; + if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k); + crypto_onetimeauth_poly1305_init(&poly1305_state, block); + sodium_memzero(block, sizeof block); + + crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen); + crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0, + (0x10 - adlen) & 0xf); + + memset(block, 0, sizeof block); + block[0] = in[0]; + crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block, + state->nonce, 1U, state->k); + tag = block[0]; + block[0] = in[0]; + crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block); + + c = in + (sizeof tag); + crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen); + crypto_onetimeauth_poly1305_update + (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf); + + STORE64_LE(slen, (uint64_t) adlen); + crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen); + STORE64_LE(slen, (sizeof block) + mlen); + crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen); + + crypto_onetimeauth_poly1305_final(&poly1305_state, mac); + sodium_memzero(&poly1305_state, sizeof poly1305_state); + + stored_mac = c + mlen; + if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) { + sodium_memzero(mac, sizeof mac); + return -1; + } + + crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k); + XOR_BUF(STATE_INONCE(state), mac, + crypto_secretstream_xchacha20poly1305_INONCEBYTES); + sodium_increment(STATE_COUNTER(state), + crypto_secretstream_xchacha20poly1305_COUNTERBYTES); + if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 || + sodium_is_zero(STATE_COUNTER(state), + crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) { + crypto_secretstream_xchacha20poly1305_rekey(state); + } + if (mlen_p != NULL) { + *mlen_p = mlen; + } + if (tag_p != NULL) { + *tag_p = tag; + } + return 0; +} + +size_t +crypto_secretstream_xchacha20poly1305_statebytes(void) +{ + return sizeof(crypto_secretstream_xchacha20poly1305_state); +} + +size_t +crypto_secretstream_xchacha20poly1305_abytes(void) +{ + return crypto_secretstream_xchacha20poly1305_ABYTES; +} + +size_t +crypto_secretstream_xchacha20poly1305_headerbytes(void) +{ + return crypto_secretstream_xchacha20poly1305_HEADERBYTES; +} + +size_t +crypto_secretstream_xchacha20poly1305_keybytes(void) +{ + return crypto_secretstream_xchacha20poly1305_KEYBYTES; +} + +size_t +crypto_secretstream_xchacha20poly1305_messagebytes_max(void) +{ + return crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX; +} + +unsigned char +crypto_secretstream_xchacha20poly1305_tag_message(void) +{ + return crypto_secretstream_xchacha20poly1305_TAG_MESSAGE; +} + +unsigned char +crypto_secretstream_xchacha20poly1305_tag_push(void) +{ + return crypto_secretstream_xchacha20poly1305_TAG_PUSH; +} + +unsigned char +crypto_secretstream_xchacha20poly1305_tag_rekey(void) +{ + return crypto_secretstream_xchacha20poly1305_TAG_REKEY; +} + +unsigned char +crypto_secretstream_xchacha20poly1305_tag_final(void) +{ + return crypto_secretstream_xchacha20poly1305_TAG_FINAL; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c new file mode 100644 index 0000000..95f52f8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c @@ -0,0 +1,34 @@ + +#include "crypto_shorthash.h" +#include "randombytes.h" + +size_t +crypto_shorthash_bytes(void) +{ + return crypto_shorthash_BYTES; +} + +size_t +crypto_shorthash_keybytes(void) +{ + return crypto_shorthash_KEYBYTES; +} + +const char * +crypto_shorthash_primitive(void) +{ + return crypto_shorthash_PRIMITIVE; +} + +int +crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + return crypto_shorthash_siphash24(out, in, inlen, k); +} + +void +crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) +{ + randombytes_buf(k, crypto_shorthash_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c new file mode 100644 index 0000000..5487745 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c @@ -0,0 +1,71 @@ +#include "crypto_shorthash_siphash24.h" +#include "private/common.h" +#include "shorthash_siphash_ref.h" + +int +crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + /* "somepseudorandomlygeneratedbytes" */ + uint64_t v0 = 0x736f6d6570736575ULL; + uint64_t v1 = 0x646f72616e646f6dULL; + uint64_t v2 = 0x6c7967656e657261ULL; + uint64_t v3 = 0x7465646279746573ULL; + uint64_t b; + uint64_t k0 = LOAD64_LE(k); + uint64_t k1 = LOAD64_LE(k + 8); + uint64_t m; + const uint8_t *end = in + inlen - (inlen % sizeof(uint64_t)); + const int left = inlen & 7; + + b = ((uint64_t) inlen) << 56; + v3 ^= k1; + v2 ^= k0; + v1 ^= k1; + v0 ^= k0; + for (; in != end; in += 8) { + m = LOAD64_LE(in); + v3 ^= m; + SIPROUND; + SIPROUND; + v0 ^= m; + } + switch (left) { + case 7: + b |= ((uint64_t) in[6]) << 48; + /* FALLTHRU */ + case 6: + b |= ((uint64_t) in[5]) << 40; + /* FALLTHRU */ + case 5: + b |= ((uint64_t) in[4]) << 32; + /* FALLTHRU */ + case 4: + b |= ((uint64_t) in[3]) << 24; + /* FALLTHRU */ + case 3: + b |= ((uint64_t) in[2]) << 16; + /* FALLTHRU */ + case 2: + b |= ((uint64_t) in[1]) << 8; + /* FALLTHRU */ + case 1: + b |= ((uint64_t) in[0]); + break; + case 0: + break; + } + v3 ^= b; + SIPROUND; + SIPROUND; + v0 ^= b; + v2 ^= 0xff; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + b = v0 ^ v1 ^ v2 ^ v3; + STORE64_LE(out, b); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h new file mode 100644 index 0000000..3f9a38b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h @@ -0,0 +1,24 @@ +#ifndef shorthash_siphash_H +#define shorthash_siphash_H + +#include "private/common.h" + +#define SIPROUND \ + do { \ + v0 += v1; \ + v1 = ROTL64(v1, 13); \ + v1 ^= v0; \ + v0 = ROTL64(v0, 32); \ + v2 += v3; \ + v3 = ROTL64(v3, 16); \ + v3 ^= v2; \ + v0 += v3; \ + v3 = ROTL64(v3, 21); \ + v3 ^= v0; \ + v2 += v1; \ + v1 = ROTL64(v1, 17); \ + v1 ^= v2; \ + v2 = ROTL64(v2, 32); \ + } while (0) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c new file mode 100644 index 0000000..be984ee --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c @@ -0,0 +1,77 @@ +#include "crypto_shorthash_siphash24.h" +#include "private/common.h" +#include "shorthash_siphash_ref.h" + +int +crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) +{ + uint64_t v0 = 0x736f6d6570736575ULL; + uint64_t v1 = 0x646f72616e646f83ULL; + uint64_t v2 = 0x6c7967656e657261ULL; + uint64_t v3 = 0x7465646279746573ULL; + uint64_t b; + uint64_t k0 = LOAD64_LE(k); + uint64_t k1 = LOAD64_LE(k + 8); + uint64_t m; + const uint8_t *end = in + inlen - (inlen % sizeof(uint64_t)); + const int left = inlen & 7; + + b = ((uint64_t) inlen) << 56; + v3 ^= k1; + v2 ^= k0; + v1 ^= k1; + v0 ^= k0; + for (; in != end; in += 8) { + m = LOAD64_LE(in); + v3 ^= m; + SIPROUND; + SIPROUND; + v0 ^= m; + } + switch (left) { + case 7: + b |= ((uint64_t) in[6]) << 48; + /* FALLTHRU */ + case 6: + b |= ((uint64_t) in[5]) << 40; + /* FALLTHRU */ + case 5: + b |= ((uint64_t) in[4]) << 32; + /* FALLTHRU */ + case 4: + b |= ((uint64_t) in[3]) << 24; + /* FALLTHRU */ + case 3: + b |= ((uint64_t) in[2]) << 16; + /* FALLTHRU */ + case 2: + b |= ((uint64_t) in[1]) << 8; + /* FALLTHRU */ + case 1: + b |= ((uint64_t) in[0]); + break; + case 0: + break; + } + v3 ^= b; + SIPROUND; + SIPROUND; + v0 ^= b; + v2 ^= 0xee; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + b = v0 ^ v1 ^ v2 ^ v3; + STORE64_LE(out, b); + v1 ^= 0xdd; + SIPROUND; + SIPROUND; + SIPROUND; + SIPROUND; + b = v0 ^ v1 ^ v2 ^ v3; + STORE64_LE(out + 8, b); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c new file mode 100644 index 0000000..e2cea77 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c @@ -0,0 +1,11 @@ +#include "crypto_shorthash_siphash24.h" + +size_t +crypto_shorthash_siphash24_bytes(void) { + return crypto_shorthash_siphash24_BYTES; +} + +size_t +crypto_shorthash_siphash24_keybytes(void) { + return crypto_shorthash_siphash24_KEYBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c new file mode 100644 index 0000000..2d487db --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c @@ -0,0 +1,11 @@ +#include "crypto_shorthash_siphash24.h" + +size_t +crypto_shorthash_siphashx24_bytes(void) { + return crypto_shorthash_siphashx24_BYTES; +} + +size_t +crypto_shorthash_siphashx24_keybytes(void) { + return crypto_shorthash_siphashx24_KEYBYTES; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/crypto_sign.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/crypto_sign.c new file mode 100644 index 0000000..d723ff8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/crypto_sign.c @@ -0,0 +1,115 @@ + +#include "crypto_sign.h" + +size_t +crypto_sign_statebytes(void) +{ + return sizeof(crypto_sign_state); +} + +size_t +crypto_sign_bytes(void) +{ + return crypto_sign_BYTES; +} + +size_t +crypto_sign_seedbytes(void) +{ + return crypto_sign_SEEDBYTES; +} + +size_t +crypto_sign_publickeybytes(void) +{ + return crypto_sign_PUBLICKEYBYTES; +} + +size_t +crypto_sign_secretkeybytes(void) +{ + return crypto_sign_SECRETKEYBYTES; +} + +size_t +crypto_sign_messagebytes_max(void) +{ + return crypto_sign_MESSAGEBYTES_MAX; +} + +const char * +crypto_sign_primitive(void) +{ + return crypto_sign_PRIMITIVE; +} + +int +crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) +{ + return crypto_sign_ed25519_seed_keypair(pk, sk, seed); +} + +int +crypto_sign_keypair(unsigned char *pk, unsigned char *sk) +{ + return crypto_sign_ed25519_keypair(pk, sk); +} + +int +crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) +{ + return crypto_sign_ed25519(sm, smlen_p, m, mlen, sk); +} + +int +crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) +{ + return crypto_sign_ed25519_open(m, mlen_p, sm, smlen, pk); +} + +int +crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) +{ + return crypto_sign_ed25519_detached(sig, siglen_p, m, mlen, sk); +} + +int +crypto_sign_verify_detached(const unsigned char *sig, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) +{ + return crypto_sign_ed25519_verify_detached(sig, m, mlen, pk); +} + +int +crypto_sign_init(crypto_sign_state *state) +{ + return crypto_sign_ed25519ph_init(state); +} + +int +crypto_sign_update(crypto_sign_state *state, const unsigned char *m, + unsigned long long mlen) +{ + return crypto_sign_ed25519ph_update(state, m, mlen); +} + +int +crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, const unsigned char *sk) +{ + return crypto_sign_ed25519ph_final_create(state, sig, siglen_p, sk); +} + +int +crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) +{ + return crypto_sign_ed25519ph_final_verify(state, sig, pk); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c new file mode 100644 index 0000000..e8e4015 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c @@ -0,0 +1,83 @@ + +#include + +#include "crypto_hash_sha512.h" +#include "crypto_scalarmult_curve25519.h" +#include "crypto_sign_ed25519.h" +#include "sign_ed25519_ref10.h" +#include "private/ed25519_ref10.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) +{ + ge25519_p3 A; + + crypto_hash_sha512(sk, seed, 32); + sk[0] &= 248; + sk[31] &= 127; + sk[31] |= 64; + + ge25519_scalarmult_base(&A, sk); + ge25519_p3_tobytes(pk, &A); + + memmove(sk, seed, 32); + memmove(sk + 32, pk, 32); + + return 0; +} + +int +crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) +{ + unsigned char seed[32]; + int ret; + + randombytes_buf(seed, sizeof seed); + ret = crypto_sign_ed25519_seed_keypair(pk, sk, seed); + sodium_memzero(seed, sizeof seed); + + return ret; +} + +int +crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) +{ + ge25519_p3 A; + fe25519 x; + fe25519 one_minus_y; + + if (ge25519_has_small_order(ed25519_pk) != 0 || + ge25519_frombytes_negate_vartime(&A, ed25519_pk) != 0 || + ge25519_is_on_main_subgroup(&A) == 0) { + return -1; + } + fe25519_1(one_minus_y); + fe25519_sub(one_minus_y, one_minus_y, A.Y); + fe25519_1(x); + fe25519_add(x, x, A.Y); + fe25519_invert(one_minus_y, one_minus_y); + fe25519_mul(x, x, one_minus_y); + fe25519_tobytes(curve25519_pk, x); + + return 0; +} + +int +crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) +{ + unsigned char h[crypto_hash_sha512_BYTES]; + + crypto_hash_sha512(h, ed25519_sk, 32); + h[0] &= 248; + h[31] &= 127; + h[31] |= 64; + memcpy(curve25519_sk, h, crypto_scalarmult_curve25519_BYTES); + sodium_memzero(h, sizeof h); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c new file mode 100644 index 0000000..64ded79 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c @@ -0,0 +1,118 @@ + +#include +#include +#include + +#include "crypto_hash_sha512.h" +#include "crypto_sign_edwards25519sha512batch.h" +#include "crypto_verify_32.h" +#include "private/ed25519_ref10.h" +#include "randombytes.h" +#include "utils.h" + +/* LCOV_EXCL_START */ +int +crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) +{ + ge25519_p3 A; + + randombytes_buf(sk, 32); + crypto_hash_sha512(sk, sk, 32); + sk[0] &= 248; + sk[31] &= 127; + sk[31] |= 64; + ge25519_scalarmult_base(&A, sk); + ge25519_p3_tobytes(pk, &A); + + return 0; +} + +int +crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) +{ + crypto_hash_sha512_state hs; + unsigned char nonce[64]; + unsigned char hram[64]; + unsigned char sig[64]; + ge25519_p3 A; + ge25519_p3 R; + + crypto_hash_sha512_init(&hs); + crypto_hash_sha512_update(&hs, sk + 32, 32); + crypto_hash_sha512_update(&hs, m, mlen); + crypto_hash_sha512_final(&hs, nonce); + ge25519_scalarmult_base(&A, sk); + ge25519_p3_tobytes(sig + 32, &A); + sc25519_reduce(nonce); + ge25519_scalarmult_base(&R, nonce); + ge25519_p3_tobytes(sig, &R); + crypto_hash_sha512_init(&hs); + crypto_hash_sha512_update(&hs, sig, 32); + crypto_hash_sha512_update(&hs, m, mlen); + crypto_hash_sha512_final(&hs, hram); + sc25519_reduce(hram); + sc25519_muladd(sig + 32, hram, nonce, sk); + sodium_memzero(hram, sizeof hram); + memmove(sm + 32, m, (size_t) mlen); + memcpy(sm, sig, 32); + memcpy(sm + 32 + mlen, sig + 32, 32); + *smlen_p = mlen + 64U; + + return 0; +} + +int +crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) +{ + unsigned char h[64]; + unsigned char t1[32], t2[32]; + unsigned long long mlen; + ge25519_cached Ai; + ge25519_p1p1 csa; + ge25519_p2 cs; + ge25519_p3 A; + ge25519_p3 R; + ge25519_p3 cs3; + + *mlen_p = 0; + if (smlen < 64 || smlen - 64 > crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX) { + return -1; + } + mlen = smlen - 64; + if (sm[smlen - 1] & 224) { + return -1; + } + if (ge25519_has_small_order(pk) != 0 || + ge25519_frombytes_negate_vartime(&A, pk) != 0 || + ge25519_has_small_order(sm) != 0 || + ge25519_frombytes_negate_vartime(&R, sm) != 0) { + return -1; + } + ge25519_p3_to_cached(&Ai, &A); + crypto_hash_sha512(h, sm, mlen + 32); + sc25519_reduce(h); + ge25519_scalarmult(&cs3, h, &R); + ge25519_add(&csa, &cs3, &Ai); + ge25519_p1p1_to_p2(&cs, &csa); + ge25519_tobytes(t1, &cs); + t1[31] ^= 1 << 7; + ge25519_scalarmult_base(&R, sm + 32 + mlen); + ge25519_p3_tobytes(t2, &R); + if (crypto_verify_32(t1, t2) != 0) { + return -1; + } + *mlen_p = mlen; + memmove(m, sm + 32, mlen); + + return 0; +} +/* LCOV_EXCL_END */ diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c new file mode 100644 index 0000000..b5280a7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c @@ -0,0 +1,98 @@ + +#include +#include +#include + +#include "crypto_hash_sha512.h" +#include "crypto_sign_ed25519.h" +#include "crypto_verify_32.h" +#include "sign_ed25519_ref10.h" +#include "private/common.h" +#include "private/ed25519_ref10.h" +#include "utils.h" + +int +_crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk, + int prehashed) +{ + crypto_hash_sha512_state hs; + unsigned char h[64]; + unsigned char rcheck[32]; + ge25519_p3 A; + ge25519_p2 R; + + ACQUIRE_FENCE; +#ifdef ED25519_COMPAT + if (sig[63] & 224) { + return -1; + } +#else + if (sc25519_is_canonical(sig + 32) == 0 || + ge25519_has_small_order(sig) != 0) { + return -1; + } + if (ge25519_is_canonical(pk) == 0 || + ge25519_has_small_order(pk) != 0) { + return -1; + } +#endif + if (ge25519_frombytes_negate_vartime(&A, pk) != 0) { + return -1; + } + _crypto_sign_ed25519_ref10_hinit(&hs, prehashed); + crypto_hash_sha512_update(&hs, sig, 32); + crypto_hash_sha512_update(&hs, pk, 32); + crypto_hash_sha512_update(&hs, m, mlen); + crypto_hash_sha512_final(&hs, h); + sc25519_reduce(h); + + ge25519_double_scalarmult_vartime(&R, h, &A, sig + 32); + ge25519_tobytes(rcheck, &R); + + return crypto_verify_32(rcheck, sig) | (-(rcheck == sig)) | + sodium_memcmp(sig, rcheck, 32); +} + +int +crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) +{ + return _crypto_sign_ed25519_verify_detached(sig, m, mlen, pk, 0); +} + +int +crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) +{ + unsigned long long mlen; + + if (smlen < 64 || smlen - 64 > crypto_sign_ed25519_MESSAGEBYTES_MAX) { + goto badsig; + } + mlen = smlen - 64; + if (crypto_sign_ed25519_verify_detached(sm, sm + 64, mlen, pk) != 0) { + if (m != NULL) { + memset(m, 0, mlen); + } + goto badsig; + } + if (mlen_p != NULL) { + *mlen_p = mlen; + } + if (m != NULL) { + memmove(m, sm + 64, mlen); + } + return 0; + +badsig: + if (mlen_p != NULL) { + *mlen_p = 0; + } + return -1; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c new file mode 100644 index 0000000..b994cb6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c @@ -0,0 +1,128 @@ + +#include + +#include "crypto_hash_sha512.h" +#include "crypto_sign_ed25519.h" +#include "sign_ed25519_ref10.h" +#include "private/ed25519_ref10.h" +#include "randombytes.h" +#include "utils.h" + +void +_crypto_sign_ed25519_ref10_hinit(crypto_hash_sha512_state *hs, int prehashed) +{ + static const unsigned char DOM2PREFIX[32 + 2] = { + 'S', 'i', 'g', 'E', 'd', '2', '5', '5', '1', '9', ' ', + 'n', 'o', ' ', + 'E', 'd', '2', '5', '5', '1', '9', ' ', + 'c', 'o', 'l', 'l', 'i', 's', 'i', 'o', 'n', 's', 1, 0 + }; + + crypto_hash_sha512_init(hs); + if (prehashed) { + crypto_hash_sha512_update(hs, DOM2PREFIX, sizeof DOM2PREFIX); + } +} + +static inline void +_crypto_sign_ed25519_clamp(unsigned char k[32]) +{ + k[0] &= 248; + k[31] &= 127; + k[31] |= 64; +} + +#ifdef ED25519_NONDETERMINISTIC +/* r = hash(k || K || noise || pad || M) (mod q) */ +static void +_crypto_sign_ed25519_synthetic_r_hv(crypto_hash_sha512_state *hs, + unsigned char tmp[64], + const unsigned char az[64]) +{ + crypto_hash_sha512_update(hs, az, 64); + randombytes_buf(tmp, 32); + memset(tmp + 32, 0, 32); + crypto_hash_sha512_update(hs, tmp, 64); +} +#endif + +int +_crypto_sign_ed25519_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk, int prehashed) +{ + crypto_hash_sha512_state hs; + unsigned char az[64]; + unsigned char nonce[64]; + unsigned char hram[64]; + ge25519_p3 R; + + _crypto_sign_ed25519_ref10_hinit(&hs, prehashed); + + crypto_hash_sha512(az, sk, 32); +#ifdef ED25519_NONDETERMINISTIC + _crypto_sign_ed25519_synthetic_r_hv(&hs, nonce /* tmp */, az); +#else + crypto_hash_sha512_update(&hs, az + 32, 32); +#endif + + crypto_hash_sha512_update(&hs, m, mlen); + crypto_hash_sha512_final(&hs, nonce); + + memmove(sig + 32, sk + 32, 32); + + sc25519_reduce(nonce); + ge25519_scalarmult_base(&R, nonce); + ge25519_p3_tobytes(sig, &R); + + _crypto_sign_ed25519_ref10_hinit(&hs, prehashed); + crypto_hash_sha512_update(&hs, sig, 64); + crypto_hash_sha512_update(&hs, m, mlen); + crypto_hash_sha512_final(&hs, hram); + + sc25519_reduce(hram); + _crypto_sign_ed25519_clamp(az); + sc25519_muladd(sig + 32, hram, az, nonce); + + sodium_memzero(az, sizeof az); + sodium_memzero(nonce, sizeof nonce); + + if (siglen_p != NULL) { + *siglen_p = 64U; + } + return 0; +} + +int +crypto_sign_ed25519_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) +{ + return _crypto_sign_ed25519_detached(sig, siglen_p, m, mlen, sk, 0); +} + +int +crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) +{ + unsigned long long siglen; + + memmove(sm + crypto_sign_ed25519_BYTES, m, mlen); + /* LCOV_EXCL_START */ + if (crypto_sign_ed25519_detached( + sm, &siglen, sm + crypto_sign_ed25519_BYTES, mlen, sk) != 0 || + siglen != crypto_sign_ed25519_BYTES) { + if (smlen_p != NULL) { + *smlen_p = 0; + } + memset(sm, 0, mlen + crypto_sign_ed25519_BYTES); + return -1; + } + /* LCOV_EXCL_STOP */ + + if (smlen_p != NULL) { + *smlen_p = mlen + siglen; + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign_ed25519_ref10.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign_ed25519_ref10.h new file mode 100644 index 0000000..29f45a8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign_ed25519_ref10.h @@ -0,0 +1,18 @@ +#ifndef sign_ed25519_ref10_H +#define sign_ed25519_ref10_H + +void _crypto_sign_ed25519_ref10_hinit(crypto_hash_sha512_state *hs, + int prehashed); + +int _crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk, int prehashed); + +int _crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk, + int prehashed); +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519.c new file mode 100644 index 0000000..9b90249 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519.c @@ -0,0 +1,97 @@ + +#include + +#include "crypto_hash_sha512.h" +#include "crypto_sign_ed25519.h" +#include "ref10/sign_ed25519_ref10.h" + +size_t +crypto_sign_ed25519ph_statebytes(void) +{ + return sizeof(crypto_sign_ed25519ph_state); +} + +size_t +crypto_sign_ed25519_bytes(void) +{ + return crypto_sign_ed25519_BYTES; +} + +size_t +crypto_sign_ed25519_seedbytes(void) +{ + return crypto_sign_ed25519_SEEDBYTES; +} + +size_t +crypto_sign_ed25519_publickeybytes(void) +{ + return crypto_sign_ed25519_PUBLICKEYBYTES; +} + +size_t +crypto_sign_ed25519_secretkeybytes(void) +{ + return crypto_sign_ed25519_SECRETKEYBYTES; +} + +size_t +crypto_sign_ed25519_messagebytes_max(void) +{ + return crypto_sign_ed25519_MESSAGEBYTES_MAX; +} + +int +crypto_sign_ed25519_sk_to_seed(unsigned char *seed, const unsigned char *sk) +{ + memmove(seed, sk, crypto_sign_ed25519_SEEDBYTES); + + return 0; +} + +int +crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) +{ + memmove(pk, sk + crypto_sign_ed25519_SEEDBYTES, + crypto_sign_ed25519_PUBLICKEYBYTES); + return 0; +} + +int +crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) +{ + crypto_hash_sha512_init(&state->hs); + return 0; +} + +int +crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, unsigned long long mlen) +{ + return crypto_hash_sha512_update(&state->hs, m, mlen); +} + +int +crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) +{ + unsigned char ph[crypto_hash_sha512_BYTES]; + + crypto_hash_sha512_final(&state->hs, ph); + + return _crypto_sign_ed25519_detached(sig, siglen_p, ph, sizeof ph, sk, 1); +} + +int +crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) +{ + unsigned char ph[crypto_hash_sha512_BYTES]; + + crypto_hash_sha512_final(&state->hs, ph); + + return _crypto_sign_ed25519_verify_detached(sig, ph, sizeof ph, pk, 1); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c new file mode 100644 index 0000000..6100050 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c @@ -0,0 +1,177 @@ + +#include +#include +#include + +#include "core.h" +#include "crypto_stream_chacha20.h" +#include "private/common.h" +#include "utils.h" + +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# pragma GCC target("sse4.1") +# pragma GCC target("avx2") +# endif + +# include +# include +# include +# include +# include "private/sse2_64_32.h" + +# include "../stream_chacha20.h" +# include "chacha20_dolbeau-avx2.h" + +# define ROUNDS 20 + +typedef struct chacha_ctx { + uint32_t input[16]; +} chacha_ctx; + +static void +chacha_keysetup(chacha_ctx *ctx, const uint8_t *k) +{ + ctx->input[0] = 0x61707865; + ctx->input[1] = 0x3320646e; + ctx->input[2] = 0x79622d32; + ctx->input[3] = 0x6b206574; + ctx->input[4] = LOAD32_LE(k + 0); + ctx->input[5] = LOAD32_LE(k + 4); + ctx->input[6] = LOAD32_LE(k + 8); + ctx->input[7] = LOAD32_LE(k + 12); + ctx->input[8] = LOAD32_LE(k + 16); + ctx->input[9] = LOAD32_LE(k + 20); + ctx->input[10] = LOAD32_LE(k + 24); + ctx->input[11] = LOAD32_LE(k + 28); +} + +static void +chacha_ivsetup(chacha_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[12] = counter == NULL ? 0 : LOAD32_LE(counter + 0); + ctx->input[13] = counter == NULL ? 0 : LOAD32_LE(counter + 4); + ctx->input[14] = LOAD32_LE(iv + 0); + ctx->input[15] = LOAD32_LE(iv + 4); +} + +static void +chacha_ietf_ivsetup(chacha_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[12] = counter == NULL ? 0 : LOAD32_LE(counter); + ctx->input[13] = LOAD32_LE(iv + 0); + ctx->input[14] = LOAD32_LE(iv + 4); + ctx->input[15] = LOAD32_LE(iv + 8); +} + +static void +chacha20_encrypt_bytes(chacha_ctx *ctx, const uint8_t *m, uint8_t *c, + unsigned long long bytes) +{ + uint32_t * const x = &ctx->input[0]; + + if (!bytes) { + return; /* LCOV_EXCL_LINE */ + } +# include "u8.h" +# include "u4.h" +# include "u1.h" +# include "u0.h" +} + +static int +stream_ref(unsigned char *c, unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + struct chacha_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES == 256 / 8); + chacha_keysetup(&ctx, k); + chacha_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + chacha20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ietf_ext_ref(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + struct chacha_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES == 256 / 8); + chacha_keysetup(&ctx, k); + chacha_ietf_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + chacha20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + struct chacha_ctx ctx; + uint8_t ic_bytes[8]; + uint32_t ic_high; + uint32_t ic_low; + + if (!mlen) { + return 0; + } + ic_high = (uint32_t) (ic >> 32); + ic_low = (uint32_t) ic; + STORE32_LE(&ic_bytes[0], ic_low); + STORE32_LE(&ic_bytes[4], ic_high); + chacha_keysetup(&ctx, k); + chacha_ivsetup(&ctx, n, ic_bytes); + chacha20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ietf_ext_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + uint32_t ic, const unsigned char *k) +{ + struct chacha_ctx ctx; + uint8_t ic_bytes[4]; + + if (!mlen) { + return 0; + } + STORE32_LE(ic_bytes, ic); + chacha_keysetup(&ctx, k); + chacha_ietf_ivsetup(&ctx, n, ic_bytes); + chacha20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +struct crypto_stream_chacha20_implementation + crypto_stream_chacha20_dolbeau_avx2_implementation = { + SODIUM_C99(.stream =) stream_ref, + SODIUM_C99(.stream_ietf_ext =) stream_ietf_ext_ref, + SODIUM_C99(.stream_xor_ic =) stream_ref_xor_ic, + SODIUM_C99(.stream_ietf_ext_xor_ic =) stream_ietf_ext_ref_xor_ic + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h new file mode 100644 index 0000000..45eb98d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_chacha20.h" +#include "crypto_stream_chacha20.h" + +extern struct crypto_stream_chacha20_implementation + crypto_stream_chacha20_dolbeau_avx2_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c new file mode 100644 index 0000000..ad13c3a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c @@ -0,0 +1,171 @@ + +#include +#include +#include + +#include "core.h" +#include "crypto_stream_chacha20.h" +#include "private/common.h" +#include "utils.h" + +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# endif + +# include +# include +# include "private/sse2_64_32.h" + +# include "../stream_chacha20.h" +# include "chacha20_dolbeau-ssse3.h" + +# define ROUNDS 20 + +typedef struct chacha_ctx { + uint32_t input[16]; +} chacha_ctx; + +static void +chacha_keysetup(chacha_ctx *ctx, const uint8_t *k) +{ + ctx->input[0] = 0x61707865; + ctx->input[1] = 0x3320646e; + ctx->input[2] = 0x79622d32; + ctx->input[3] = 0x6b206574; + ctx->input[4] = LOAD32_LE(k + 0); + ctx->input[5] = LOAD32_LE(k + 4); + ctx->input[6] = LOAD32_LE(k + 8); + ctx->input[7] = LOAD32_LE(k + 12); + ctx->input[8] = LOAD32_LE(k + 16); + ctx->input[9] = LOAD32_LE(k + 20); + ctx->input[10] = LOAD32_LE(k + 24); + ctx->input[11] = LOAD32_LE(k + 28); +} + +static void +chacha_ivsetup(chacha_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[12] = counter == NULL ? 0 : LOAD32_LE(counter + 0); + ctx->input[13] = counter == NULL ? 0 : LOAD32_LE(counter + 4); + ctx->input[14] = LOAD32_LE(iv + 0); + ctx->input[15] = LOAD32_LE(iv + 4); +} + +static void +chacha_ietf_ivsetup(chacha_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[12] = counter == NULL ? 0 : LOAD32_LE(counter); + ctx->input[13] = LOAD32_LE(iv + 0); + ctx->input[14] = LOAD32_LE(iv + 4); + ctx->input[15] = LOAD32_LE(iv + 8); +} + +static void +chacha20_encrypt_bytes(chacha_ctx *ctx, const uint8_t *m, uint8_t *c, + unsigned long long bytes) +{ + uint32_t * const x = &ctx->input[0]; + + if (!bytes) { + return; /* LCOV_EXCL_LINE */ + } +# include "u4.h" +# include "u1.h" +# include "u0.h" +} + +static int +stream_ref(unsigned char *c, unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + struct chacha_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES == 256 / 8); + chacha_keysetup(&ctx, k); + chacha_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + chacha20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ietf_ext_ref(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + struct chacha_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES == 256 / 8); + chacha_keysetup(&ctx, k); + chacha_ietf_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + chacha20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + struct chacha_ctx ctx; + uint8_t ic_bytes[8]; + uint32_t ic_high; + uint32_t ic_low; + + if (!mlen) { + return 0; + } + ic_high = (uint32_t) (ic >> 32); + ic_low = (uint32_t) ic; + STORE32_LE(&ic_bytes[0], ic_low); + STORE32_LE(&ic_bytes[4], ic_high); + chacha_keysetup(&ctx, k); + chacha_ivsetup(&ctx, n, ic_bytes); + chacha20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ietf_ext_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + uint32_t ic, const unsigned char *k) +{ + struct chacha_ctx ctx; + uint8_t ic_bytes[4]; + + if (!mlen) { + return 0; + } + STORE32_LE(ic_bytes, ic); + chacha_keysetup(&ctx, k); + chacha_ietf_ivsetup(&ctx, n, ic_bytes); + chacha20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +struct crypto_stream_chacha20_implementation + crypto_stream_chacha20_dolbeau_ssse3_implementation = { + SODIUM_C99(.stream =) stream_ref, + SODIUM_C99(.stream_ietf_ext =) stream_ietf_ext_ref, + SODIUM_C99(.stream_xor_ic =) stream_ref_xor_ic, + SODIUM_C99(.stream_ietf_ext_xor_ic =) stream_ietf_ext_ref_xor_ic + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h new file mode 100644 index 0000000..d67630f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_chacha20.h" +#include "crypto_stream_chacha20.h" + +extern struct crypto_stream_chacha20_implementation + crypto_stream_chacha20_dolbeau_ssse3_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u0.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u0.h new file mode 100644 index 0000000..c05dfd7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u0.h @@ -0,0 +1,86 @@ +if (bytes > 0) { + __m128i x_0, x_1, x_2, x_3; + __m128i t_1; + const __m128i rot16 = + _mm_set_epi8(13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2); + const __m128i rot8 = + _mm_set_epi8(14, 13, 12, 15, 10, 9, 8, 11, 6, 5, 4, 7, 2, 1, 0, 3); + uint8_t partialblock[64]; + + unsigned int i; + + x_0 = _mm_loadu_si128((const __m128i*) (x + 0)); + x_1 = _mm_loadu_si128((const __m128i*) (x + 4)); + x_2 = _mm_loadu_si128((const __m128i*) (x + 8)); + x_3 = _mm_loadu_si128((const __m128i*) (x + 12)); + + for (i = 0; i < ROUNDS; i += 2) { + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_3 = _mm_shuffle_epi8(x_3, rot16); + + x_2 = _mm_add_epi32(x_2, x_3); + x_1 = _mm_xor_si128(x_1, x_2); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 12); + t_1 = _mm_srli_epi32(t_1, 20); + x_1 = _mm_xor_si128(x_1, t_1); + + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_0 = _mm_shuffle_epi32(x_0, 0x93); + x_3 = _mm_shuffle_epi8(x_3, rot8); + + x_2 = _mm_add_epi32(x_2, x_3); + x_3 = _mm_shuffle_epi32(x_3, 0x4e); + x_1 = _mm_xor_si128(x_1, x_2); + x_2 = _mm_shuffle_epi32(x_2, 0x39); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 7); + t_1 = _mm_srli_epi32(t_1, 25); + x_1 = _mm_xor_si128(x_1, t_1); + + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_3 = _mm_shuffle_epi8(x_3, rot16); + + x_2 = _mm_add_epi32(x_2, x_3); + x_1 = _mm_xor_si128(x_1, x_2); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 12); + t_1 = _mm_srli_epi32(t_1, 20); + x_1 = _mm_xor_si128(x_1, t_1); + + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_0 = _mm_shuffle_epi32(x_0, 0x39); + x_3 = _mm_shuffle_epi8(x_3, rot8); + + x_2 = _mm_add_epi32(x_2, x_3); + x_3 = _mm_shuffle_epi32(x_3, 0x4e); + x_1 = _mm_xor_si128(x_1, x_2); + x_2 = _mm_shuffle_epi32(x_2, 0x93); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 7); + t_1 = _mm_srli_epi32(t_1, 25); + x_1 = _mm_xor_si128(x_1, t_1); + } + x_0 = _mm_add_epi32(x_0, _mm_loadu_si128((const __m128i*) (x + 0))); + x_1 = _mm_add_epi32(x_1, _mm_loadu_si128((const __m128i*) (x + 4))); + x_2 = _mm_add_epi32(x_2, _mm_loadu_si128((const __m128i*) (x + 8))); + x_3 = _mm_add_epi32(x_3, _mm_loadu_si128((const __m128i*) (x + 12))); + _mm_storeu_si128((__m128i*) (partialblock + 0), x_0); + _mm_storeu_si128((__m128i*) (partialblock + 16), x_1); + _mm_storeu_si128((__m128i*) (partialblock + 32), x_2); + _mm_storeu_si128((__m128i*) (partialblock + 48), x_3); + + for (i = 0; i < bytes; i++) { + c[i] = m[i] ^ partialblock[i]; + } + + sodium_memzero(partialblock, sizeof partialblock); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u1.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u1.h new file mode 100644 index 0000000..f93fffe --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u1.h @@ -0,0 +1,98 @@ +while (bytes >= 64) { + __m128i x_0, x_1, x_2, x_3; + __m128i t_1; + const __m128i rot16 = + _mm_set_epi8(13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2); + const __m128i rot8 = + _mm_set_epi8(14, 13, 12, 15, 10, 9, 8, 11, 6, 5, 4, 7, 2, 1, 0, 3); + + uint32_t in12; + uint32_t in13; + int i; + + x_0 = _mm_loadu_si128((const __m128i*) (x + 0)); + x_1 = _mm_loadu_si128((const __m128i*) (x + 4)); + x_2 = _mm_loadu_si128((const __m128i*) (x + 8)); + x_3 = _mm_loadu_si128((const __m128i*) (x + 12)); + + for (i = 0; i < ROUNDS; i += 2) { + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_3 = _mm_shuffle_epi8(x_3, rot16); + + x_2 = _mm_add_epi32(x_2, x_3); + x_1 = _mm_xor_si128(x_1, x_2); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 12); + t_1 = _mm_srli_epi32(t_1, 20); + x_1 = _mm_xor_si128(x_1, t_1); + + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_0 = _mm_shuffle_epi32(x_0, 0x93); + x_3 = _mm_shuffle_epi8(x_3, rot8); + + x_2 = _mm_add_epi32(x_2, x_3); + x_3 = _mm_shuffle_epi32(x_3, 0x4e); + x_1 = _mm_xor_si128(x_1, x_2); + x_2 = _mm_shuffle_epi32(x_2, 0x39); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 7); + t_1 = _mm_srli_epi32(t_1, 25); + x_1 = _mm_xor_si128(x_1, t_1); + + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_3 = _mm_shuffle_epi8(x_3, rot16); + + x_2 = _mm_add_epi32(x_2, x_3); + x_1 = _mm_xor_si128(x_1, x_2); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 12); + t_1 = _mm_srli_epi32(t_1, 20); + x_1 = _mm_xor_si128(x_1, t_1); + + x_0 = _mm_add_epi32(x_0, x_1); + x_3 = _mm_xor_si128(x_3, x_0); + x_0 = _mm_shuffle_epi32(x_0, 0x39); + x_3 = _mm_shuffle_epi8(x_3, rot8); + + x_2 = _mm_add_epi32(x_2, x_3); + x_3 = _mm_shuffle_epi32(x_3, 0x4e); + x_1 = _mm_xor_si128(x_1, x_2); + x_2 = _mm_shuffle_epi32(x_2, 0x93); + + t_1 = x_1; + x_1 = _mm_slli_epi32(x_1, 7); + t_1 = _mm_srli_epi32(t_1, 25); + x_1 = _mm_xor_si128(x_1, t_1); + } + x_0 = _mm_add_epi32(x_0, _mm_loadu_si128((const __m128i*) (x + 0))); + x_1 = _mm_add_epi32(x_1, _mm_loadu_si128((const __m128i*) (x + 4))); + x_2 = _mm_add_epi32(x_2, _mm_loadu_si128((const __m128i*) (x + 8))); + x_3 = _mm_add_epi32(x_3, _mm_loadu_si128((const __m128i*) (x + 12))); + x_0 = _mm_xor_si128(x_0, _mm_loadu_si128((const __m128i*) (m + 0))); + x_1 = _mm_xor_si128(x_1, _mm_loadu_si128((const __m128i*) (m + 16))); + x_2 = _mm_xor_si128(x_2, _mm_loadu_si128((const __m128i*) (m + 32))); + x_3 = _mm_xor_si128(x_3, _mm_loadu_si128((const __m128i*) (m + 48))); + _mm_storeu_si128((__m128i*) (c + 0), x_0); + _mm_storeu_si128((__m128i*) (c + 16), x_1); + _mm_storeu_si128((__m128i*) (c + 32), x_2); + _mm_storeu_si128((__m128i*) (c + 48), x_3); + + in12 = x[12]; + in13 = x[13]; + in12++; + if (in12 == 0) { + in13++; + } + x[12] = in12; + x[13] = in13; + + bytes -= 64; + c += 64; + m += 64; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u4.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u4.h new file mode 100644 index 0000000..4ab295d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u4.h @@ -0,0 +1,177 @@ + +#define VEC4_ROT(A, IMM) \ + _mm_or_si128(_mm_slli_epi32(A, IMM), _mm_srli_epi32(A, (32 - IMM))) + +/* same, but replace 2 of the shift/shift/or "rotation" by byte shuffles (8 & + * 16) (better) */ +#define VEC4_QUARTERROUND_SHUFFLE(A, B, C, D) \ + x_##A = _mm_add_epi32(x_##A, x_##B); \ + t_##A = _mm_xor_si128(x_##D, x_##A); \ + x_##D = _mm_shuffle_epi8(t_##A, rot16); \ + x_##C = _mm_add_epi32(x_##C, x_##D); \ + t_##C = _mm_xor_si128(x_##B, x_##C); \ + x_##B = VEC4_ROT(t_##C, 12); \ + x_##A = _mm_add_epi32(x_##A, x_##B); \ + t_##A = _mm_xor_si128(x_##D, x_##A); \ + x_##D = _mm_shuffle_epi8(t_##A, rot8); \ + x_##C = _mm_add_epi32(x_##C, x_##D); \ + t_##C = _mm_xor_si128(x_##B, x_##C); \ + x_##B = VEC4_ROT(t_##C, 7) + +#define VEC4_QUARTERROUND(A, B, C, D) VEC4_QUARTERROUND_SHUFFLE(A, B, C, D) + +if (bytes >= 256) { + /* constant for shuffling bytes (replacing multiple-of-8 rotates) */ + __m128i rot16 = + _mm_set_epi8(13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2); + __m128i rot8 = + _mm_set_epi8(14, 13, 12, 15, 10, 9, 8, 11, 6, 5, 4, 7, 2, 1, 0, 3); + + __m128i x_0 = _mm_set1_epi32(x[0]); + __m128i x_1 = _mm_set1_epi32(x[1]); + __m128i x_2 = _mm_set1_epi32(x[2]); + __m128i x_3 = _mm_set1_epi32(x[3]); + __m128i x_4 = _mm_set1_epi32(x[4]); + __m128i x_5 = _mm_set1_epi32(x[5]); + __m128i x_6 = _mm_set1_epi32(x[6]); + __m128i x_7 = _mm_set1_epi32(x[7]); + __m128i x_8 = _mm_set1_epi32(x[8]); + __m128i x_9 = _mm_set1_epi32(x[9]); + __m128i x_10 = _mm_set1_epi32(x[10]); + __m128i x_11 = _mm_set1_epi32(x[11]); + __m128i x_12; + __m128i x_13; + __m128i x_14 = _mm_set1_epi32(x[14]); + __m128i x_15 = _mm_set1_epi32(x[15]); + __m128i orig0 = x_0; + __m128i orig1 = x_1; + __m128i orig2 = x_2; + __m128i orig3 = x_3; + __m128i orig4 = x_4; + __m128i orig5 = x_5; + __m128i orig6 = x_6; + __m128i orig7 = x_7; + __m128i orig8 = x_8; + __m128i orig9 = x_9; + __m128i orig10 = x_10; + __m128i orig11 = x_11; + __m128i orig12; + __m128i orig13; + __m128i orig14 = x_14; + __m128i orig15 = x_15; + __m128i t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8, t_9, t_10, t_11, t_12, + t_13, t_14, t_15; + + uint32_t in12, in13; + int i; + + while (bytes >= 256) { + const __m128i addv12 = _mm_set_epi64x(1, 0); + const __m128i addv13 = _mm_set_epi64x(3, 2); + __m128i t12, t13; + uint64_t in1213; + + x_0 = orig0; + x_1 = orig1; + x_2 = orig2; + x_3 = orig3; + x_4 = orig4; + x_5 = orig5; + x_6 = orig6; + x_7 = orig7; + x_8 = orig8; + x_9 = orig9; + x_10 = orig10; + x_11 = orig11; + x_14 = orig14; + x_15 = orig15; + + in12 = x[12]; + in13 = x[13]; + in1213 = ((uint64_t) in12) | (((uint64_t) in13) << 32); + t12 = _mm_set1_epi64x(in1213); + t13 = _mm_set1_epi64x(in1213); + + x_12 = _mm_add_epi64(addv12, t12); + x_13 = _mm_add_epi64(addv13, t13); + + t12 = _mm_unpacklo_epi32(x_12, x_13); + t13 = _mm_unpackhi_epi32(x_12, x_13); + + x_12 = _mm_unpacklo_epi32(t12, t13); + x_13 = _mm_unpackhi_epi32(t12, t13); + + orig12 = x_12; + orig13 = x_13; + + in1213 += 4; + + x[12] = in1213 & 0xFFFFFFFF; + x[13] = (in1213 >> 32) & 0xFFFFFFFF; + + for (i = 0; i < ROUNDS; i += 2) { + VEC4_QUARTERROUND(0, 4, 8, 12); + VEC4_QUARTERROUND(1, 5, 9, 13); + VEC4_QUARTERROUND(2, 6, 10, 14); + VEC4_QUARTERROUND(3, 7, 11, 15); + VEC4_QUARTERROUND(0, 5, 10, 15); + VEC4_QUARTERROUND(1, 6, 11, 12); + VEC4_QUARTERROUND(2, 7, 8, 13); + VEC4_QUARTERROUND(3, 4, 9, 14); + } + +#define ONEQUAD_TRANSPOSE(A, B, C, D) \ + { \ + __m128i t0, t1, t2, t3; \ + \ + x_##A = _mm_add_epi32(x_##A, orig##A); \ + x_##B = _mm_add_epi32(x_##B, orig##B); \ + x_##C = _mm_add_epi32(x_##C, orig##C); \ + x_##D = _mm_add_epi32(x_##D, orig##D); \ + t_##A = _mm_unpacklo_epi32(x_##A, x_##B); \ + t_##B = _mm_unpacklo_epi32(x_##C, x_##D); \ + t_##C = _mm_unpackhi_epi32(x_##A, x_##B); \ + t_##D = _mm_unpackhi_epi32(x_##C, x_##D); \ + x_##A = _mm_unpacklo_epi64(t_##A, t_##B); \ + x_##B = _mm_unpackhi_epi64(t_##A, t_##B); \ + x_##C = _mm_unpacklo_epi64(t_##C, t_##D); \ + x_##D = _mm_unpackhi_epi64(t_##C, t_##D); \ + \ + t0 = _mm_xor_si128(x_##A, _mm_loadu_si128((const __m128i*) (m + 0))); \ + _mm_storeu_si128((__m128i*) (c + 0), t0); \ + t1 = _mm_xor_si128(x_##B, _mm_loadu_si128((const __m128i*) (m + 64))); \ + _mm_storeu_si128((__m128i*) (c + 64), t1); \ + t2 = \ + _mm_xor_si128(x_##C, _mm_loadu_si128((const __m128i*) (m + 128))); \ + _mm_storeu_si128((__m128i*) (c + 128), t2); \ + t3 = \ + _mm_xor_si128(x_##D, _mm_loadu_si128((const __m128i*) (m + 192))); \ + _mm_storeu_si128((__m128i*) (c + 192), t3); \ + } + +#define ONEQUAD(A, B, C, D) ONEQUAD_TRANSPOSE(A, B, C, D) + + ONEQUAD(0, 1, 2, 3); + m += 16; + c += 16; + ONEQUAD(4, 5, 6, 7); + m += 16; + c += 16; + ONEQUAD(8, 9, 10, 11); + m += 16; + c += 16; + ONEQUAD(12, 13, 14, 15); + m -= 48; + c -= 48; + +#undef ONEQUAD +#undef ONEQUAD_TRANSPOSE + + bytes -= 256; + c += 256; + m += 256; + } +} +#undef VEC4_ROT +#undef VEC4_QUARTERROUND +#undef VEC4_QUARTERROUND_SHUFFLE diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u8.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u8.h new file mode 100644 index 0000000..f212f67 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u8.h @@ -0,0 +1,326 @@ + +#define VEC8_ROT(A, IMM) \ + _mm256_or_si256(_mm256_slli_epi32(A, IMM), _mm256_srli_epi32(A, (32 - IMM))) + +/* same, but replace 2 of the shift/shift/or "rotation" by byte shuffles (8 & + * 16) (better) */ +#define VEC8_QUARTERROUND_SHUFFLE(A, B, C, D) \ + x_##A = _mm256_add_epi32(x_##A, x_##B); \ + t_##A = _mm256_xor_si256(x_##D, x_##A); \ + x_##D = _mm256_shuffle_epi8(t_##A, rot16); \ + x_##C = _mm256_add_epi32(x_##C, x_##D); \ + t_##C = _mm256_xor_si256(x_##B, x_##C); \ + x_##B = VEC8_ROT(t_##C, 12); \ + x_##A = _mm256_add_epi32(x_##A, x_##B); \ + t_##A = _mm256_xor_si256(x_##D, x_##A); \ + x_##D = _mm256_shuffle_epi8(t_##A, rot8); \ + x_##C = _mm256_add_epi32(x_##C, x_##D); \ + t_##C = _mm256_xor_si256(x_##B, x_##C); \ + x_##B = VEC8_ROT(t_##C, 7) + +#define VEC8_QUARTERROUND(A, B, C, D) VEC8_QUARTERROUND_SHUFFLE(A, B, C, D) + +#define VEC8_LINE1(A, B, C, D) \ + x_##A = _mm256_add_epi32(x_##A, x_##B); \ + x_##D = _mm256_shuffle_epi8(_mm256_xor_si256(x_##D, x_##A), rot16) +#define VEC8_LINE2(A, B, C, D) \ + x_##C = _mm256_add_epi32(x_##C, x_##D); \ + x_##B = VEC8_ROT(_mm256_xor_si256(x_##B, x_##C), 12) +#define VEC8_LINE3(A, B, C, D) \ + x_##A = _mm256_add_epi32(x_##A, x_##B); \ + x_##D = _mm256_shuffle_epi8(_mm256_xor_si256(x_##D, x_##A), rot8) +#define VEC8_LINE4(A, B, C, D) \ + x_##C = _mm256_add_epi32(x_##C, x_##D); \ + x_##B = VEC8_ROT(_mm256_xor_si256(x_##B, x_##C), 7) + +#define VEC8_ROUND_SEQ(A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3, A4, B4, \ + C4, D4) \ + VEC8_LINE1(A1, B1, C1, D1); \ + VEC8_LINE1(A2, B2, C2, D2); \ + VEC8_LINE1(A3, B3, C3, D3); \ + VEC8_LINE1(A4, B4, C4, D4); \ + VEC8_LINE2(A1, B1, C1, D1); \ + VEC8_LINE2(A2, B2, C2, D2); \ + VEC8_LINE2(A3, B3, C3, D3); \ + VEC8_LINE2(A4, B4, C4, D4); \ + VEC8_LINE3(A1, B1, C1, D1); \ + VEC8_LINE3(A2, B2, C2, D2); \ + VEC8_LINE3(A3, B3, C3, D3); \ + VEC8_LINE3(A4, B4, C4, D4); \ + VEC8_LINE4(A1, B1, C1, D1); \ + VEC8_LINE4(A2, B2, C2, D2); \ + VEC8_LINE4(A3, B3, C3, D3); \ + VEC8_LINE4(A4, B4, C4, D4) + +#define VEC8_ROUND_HALF(A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3, A4, \ + B4, C4, D4) \ + VEC8_LINE1(A1, B1, C1, D1); \ + VEC8_LINE1(A2, B2, C2, D2); \ + VEC8_LINE2(A1, B1, C1, D1); \ + VEC8_LINE2(A2, B2, C2, D2); \ + VEC8_LINE3(A1, B1, C1, D1); \ + VEC8_LINE3(A2, B2, C2, D2); \ + VEC8_LINE4(A1, B1, C1, D1); \ + VEC8_LINE4(A2, B2, C2, D2); \ + VEC8_LINE1(A3, B3, C3, D3); \ + VEC8_LINE1(A4, B4, C4, D4); \ + VEC8_LINE2(A3, B3, C3, D3); \ + VEC8_LINE2(A4, B4, C4, D4); \ + VEC8_LINE3(A3, B3, C3, D3); \ + VEC8_LINE3(A4, B4, C4, D4); \ + VEC8_LINE4(A3, B3, C3, D3); \ + VEC8_LINE4(A4, B4, C4, D4) + +#define VEC8_ROUND_HALFANDHALF(A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3, \ + A4, B4, C4, D4) \ + VEC8_LINE1(A1, B1, C1, D1); \ + VEC8_LINE1(A2, B2, C2, D2); \ + VEC8_LINE2(A1, B1, C1, D1); \ + VEC8_LINE2(A2, B2, C2, D2); \ + VEC8_LINE1(A3, B3, C3, D3); \ + VEC8_LINE1(A4, B4, C4, D4); \ + VEC8_LINE2(A3, B3, C3, D3); \ + VEC8_LINE2(A4, B4, C4, D4); \ + VEC8_LINE3(A1, B1, C1, D1); \ + VEC8_LINE3(A2, B2, C2, D2); \ + VEC8_LINE4(A1, B1, C1, D1); \ + VEC8_LINE4(A2, B2, C2, D2); \ + VEC8_LINE3(A3, B3, C3, D3); \ + VEC8_LINE3(A4, B4, C4, D4); \ + VEC8_LINE4(A3, B3, C3, D3); \ + VEC8_LINE4(A4, B4, C4, D4) + +#define VEC8_ROUND(A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3, A4, B4, C4, \ + D4) \ + VEC8_ROUND_SEQ(A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3, A4, B4, C4, \ + D4) + +if (bytes >= 512) { + /* constant for shuffling bytes (replacing multiple-of-8 rotates) */ + __m256i rot16 = + _mm256_set_epi8(13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2, + 13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2); + __m256i rot8 = + _mm256_set_epi8(14, 13, 12, 15, 10, 9, 8, 11, 6, 5, 4, 7, 2, 1, 0, 3, + 14, 13, 12, 15, 10, 9, 8, 11, 6, 5, 4, 7, 2, 1, 0, 3); + uint32_t in12, in13; + + /* the naive way seems as fast (if not a bit faster) than the vector way */ + __m256i x_0 = _mm256_set1_epi32(x[0]); + __m256i x_1 = _mm256_set1_epi32(x[1]); + __m256i x_2 = _mm256_set1_epi32(x[2]); + __m256i x_3 = _mm256_set1_epi32(x[3]); + __m256i x_4 = _mm256_set1_epi32(x[4]); + __m256i x_5 = _mm256_set1_epi32(x[5]); + __m256i x_6 = _mm256_set1_epi32(x[6]); + __m256i x_7 = _mm256_set1_epi32(x[7]); + __m256i x_8 = _mm256_set1_epi32(x[8]); + __m256i x_9 = _mm256_set1_epi32(x[9]); + __m256i x_10 = _mm256_set1_epi32(x[10]); + __m256i x_11 = _mm256_set1_epi32(x[11]); + __m256i x_12; + __m256i x_13; + __m256i x_14 = _mm256_set1_epi32(x[14]); + __m256i x_15 = _mm256_set1_epi32(x[15]); + + __m256i orig0 = x_0; + __m256i orig1 = x_1; + __m256i orig2 = x_2; + __m256i orig3 = x_3; + __m256i orig4 = x_4; + __m256i orig5 = x_5; + __m256i orig6 = x_6; + __m256i orig7 = x_7; + __m256i orig8 = x_8; + __m256i orig9 = x_9; + __m256i orig10 = x_10; + __m256i orig11 = x_11; + __m256i orig12; + __m256i orig13; + __m256i orig14 = x_14; + __m256i orig15 = x_15; + __m256i t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8, t_9, t_10, t_11, t_12, + t_13, t_14, t_15; + + while (bytes >= 512) { + const __m256i addv12 = _mm256_set_epi64x(3, 2, 1, 0); + const __m256i addv13 = _mm256_set_epi64x(7, 6, 5, 4); + const __m256i permute = _mm256_set_epi32(7, 6, 3, 2, 5, 4, 1, 0); + __m256i t12, t13; + + uint64_t in1213; + int i; + + x_0 = orig0; + x_1 = orig1; + x_2 = orig2; + x_3 = orig3; + x_4 = orig4; + x_5 = orig5; + x_6 = orig6; + x_7 = orig7; + x_8 = orig8; + x_9 = orig9; + x_10 = orig10; + x_11 = orig11; + x_14 = orig14; + x_15 = orig15; + + in12 = x[12]; + in13 = x[13]; + in1213 = ((uint64_t) in12) | (((uint64_t) in13) << 32); + x_12 = x_13 = _mm256_broadcastq_epi64(_mm_cvtsi64_si128(in1213)); + + t12 = _mm256_add_epi64(addv12, x_12); + t13 = _mm256_add_epi64(addv13, x_13); + + x_12 = _mm256_unpacklo_epi32(t12, t13); + x_13 = _mm256_unpackhi_epi32(t12, t13); + + t12 = _mm256_unpacklo_epi32(x_12, x_13); + t13 = _mm256_unpackhi_epi32(x_12, x_13); + + /* required because unpack* are intra-lane */ + x_12 = _mm256_permutevar8x32_epi32(t12, permute); + x_13 = _mm256_permutevar8x32_epi32(t13, permute); + + orig12 = x_12; + orig13 = x_13; + + in1213 += 8; + + x[12] = in1213 & 0xFFFFFFFF; + x[13] = (in1213 >> 32) & 0xFFFFFFFF; + + for (i = 0; i < ROUNDS; i += 2) { + VEC8_ROUND(0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15); + VEC8_ROUND(0, 5, 10, 15, 1, 6, 11, 12, 2, 7, 8, 13, 3, 4, 9, 14); + } + +#define ONEQUAD_TRANSPOSE(A, B, C, D) \ + { \ + __m128i t0, t1, t2, t3; \ + x_##A = _mm256_add_epi32(x_##A, orig##A); \ + x_##B = _mm256_add_epi32(x_##B, orig##B); \ + x_##C = _mm256_add_epi32(x_##C, orig##C); \ + x_##D = _mm256_add_epi32(x_##D, orig##D); \ + t_##A = _mm256_unpacklo_epi32(x_##A, x_##B); \ + t_##B = _mm256_unpacklo_epi32(x_##C, x_##D); \ + t_##C = _mm256_unpackhi_epi32(x_##A, x_##B); \ + t_##D = _mm256_unpackhi_epi32(x_##C, x_##D); \ + x_##A = _mm256_unpacklo_epi64(t_##A, t_##B); \ + x_##B = _mm256_unpackhi_epi64(t_##A, t_##B); \ + x_##C = _mm256_unpacklo_epi64(t_##C, t_##D); \ + x_##D = _mm256_unpackhi_epi64(t_##C, t_##D); \ + t0 = _mm_xor_si128(_mm256_extracti128_si256(x_##A, 0), \ + _mm_loadu_si128((const __m128i*) (m + 0))); \ + _mm_storeu_si128((__m128i*) (c + 0), t0); \ + t1 = _mm_xor_si128(_mm256_extracti128_si256(x_##B, 0), \ + _mm_loadu_si128((const __m128i*) (m + 64))); \ + _mm_storeu_si128((__m128i*) (c + 64), t1); \ + t2 = _mm_xor_si128(_mm256_extracti128_si256(x_##C, 0), \ + _mm_loadu_si128((const __m128i*) (m + 128))); \ + _mm_storeu_si128((__m128i*) (c + 128), t2); \ + t3 = _mm_xor_si128(_mm256_extracti128_si256(x_##D, 0), \ + _mm_loadu_si128((const __m128i*) (m + 192))); \ + _mm_storeu_si128((__m128i*) (c + 192), t3); \ + t0 = _mm_xor_si128(_mm256_extracti128_si256(x_##A, 1), \ + _mm_loadu_si128((const __m128i*) (m + 256))); \ + _mm_storeu_si128((__m128i*) (c + 256), t0); \ + t1 = _mm_xor_si128(_mm256_extracti128_si256(x_##B, 1), \ + _mm_loadu_si128((const __m128i*) (m + 320))); \ + _mm_storeu_si128((__m128i*) (c + 320), t1); \ + t2 = _mm_xor_si128(_mm256_extracti128_si256(x_##C, 1), \ + _mm_loadu_si128((const __m128i*) (m + 384))); \ + _mm_storeu_si128((__m128i*) (c + 384), t2); \ + t3 = _mm_xor_si128(_mm256_extracti128_si256(x_##D, 1), \ + _mm_loadu_si128((const __m128i*) (m + 448))); \ + _mm_storeu_si128((__m128i*) (c + 448), t3); \ + } + +#define ONEQUAD(A, B, C, D) ONEQUAD_TRANSPOSE(A, B, C, D) + +#define ONEQUAD_UNPCK(A, B, C, D) \ + { \ + x_##A = _mm256_add_epi32(x_##A, orig##A); \ + x_##B = _mm256_add_epi32(x_##B, orig##B); \ + x_##C = _mm256_add_epi32(x_##C, orig##C); \ + x_##D = _mm256_add_epi32(x_##D, orig##D); \ + t_##A = _mm256_unpacklo_epi32(x_##A, x_##B); \ + t_##B = _mm256_unpacklo_epi32(x_##C, x_##D); \ + t_##C = _mm256_unpackhi_epi32(x_##A, x_##B); \ + t_##D = _mm256_unpackhi_epi32(x_##C, x_##D); \ + x_##A = _mm256_unpacklo_epi64(t_##A, t_##B); \ + x_##B = _mm256_unpackhi_epi64(t_##A, t_##B); \ + x_##C = _mm256_unpacklo_epi64(t_##C, t_##D); \ + x_##D = _mm256_unpackhi_epi64(t_##C, t_##D); \ + } + +#define ONEOCTO(A, B, C, D, A2, B2, C2, D2) \ + { \ + ONEQUAD_UNPCK(A, B, C, D); \ + ONEQUAD_UNPCK(A2, B2, C2, D2); \ + t_##A = _mm256_permute2x128_si256(x_##A, x_##A2, 0x20); \ + t_##A2 = _mm256_permute2x128_si256(x_##A, x_##A2, 0x31); \ + t_##B = _mm256_permute2x128_si256(x_##B, x_##B2, 0x20); \ + t_##B2 = _mm256_permute2x128_si256(x_##B, x_##B2, 0x31); \ + t_##C = _mm256_permute2x128_si256(x_##C, x_##C2, 0x20); \ + t_##C2 = _mm256_permute2x128_si256(x_##C, x_##C2, 0x31); \ + t_##D = _mm256_permute2x128_si256(x_##D, x_##D2, 0x20); \ + t_##D2 = _mm256_permute2x128_si256(x_##D, x_##D2, 0x31); \ + t_##A = _mm256_xor_si256( \ + t_##A, _mm256_loadu_si256((const __m256i*) (m + 0))); \ + t_##B = _mm256_xor_si256( \ + t_##B, _mm256_loadu_si256((const __m256i*) (m + 64))); \ + t_##C = _mm256_xor_si256( \ + t_##C, _mm256_loadu_si256((const __m256i*) (m + 128))); \ + t_##D = _mm256_xor_si256( \ + t_##D, _mm256_loadu_si256((const __m256i*) (m + 192))); \ + t_##A2 = _mm256_xor_si256( \ + t_##A2, _mm256_loadu_si256((const __m256i*) (m + 256))); \ + t_##B2 = _mm256_xor_si256( \ + t_##B2, _mm256_loadu_si256((const __m256i*) (m + 320))); \ + t_##C2 = _mm256_xor_si256( \ + t_##C2, _mm256_loadu_si256((const __m256i*) (m + 384))); \ + t_##D2 = _mm256_xor_si256( \ + t_##D2, _mm256_loadu_si256((const __m256i*) (m + 448))); \ + _mm256_storeu_si256((__m256i*) (c + 0), t_##A); \ + _mm256_storeu_si256((__m256i*) (c + 64), t_##B); \ + _mm256_storeu_si256((__m256i*) (c + 128), t_##C); \ + _mm256_storeu_si256((__m256i*) (c + 192), t_##D); \ + _mm256_storeu_si256((__m256i*) (c + 256), t_##A2); \ + _mm256_storeu_si256((__m256i*) (c + 320), t_##B2); \ + _mm256_storeu_si256((__m256i*) (c + 384), t_##C2); \ + _mm256_storeu_si256((__m256i*) (c + 448), t_##D2); \ + } + + ONEOCTO(0, 1, 2, 3, 4, 5, 6, 7); + m += 32; + c += 32; + ONEOCTO(8, 9, 10, 11, 12, 13, 14, 15); + m -= 32; + c -= 32; + +#undef ONEQUAD +#undef ONEQUAD_TRANSPOSE +#undef ONEQUAD_UNPCK +#undef ONEOCTO + + bytes -= 512; + c += 512; + m += 512; + } +} +#undef VEC8_ROT +#undef VEC8_QUARTERROUND +#undef VEC8_QUARTERROUND_NAIVE +#undef VEC8_QUARTERROUND_SHUFFLE +#undef VEC8_QUARTERROUND_SHUFFLE2 +#undef VEC8_LINE1 +#undef VEC8_LINE2 +#undef VEC8_LINE3 +#undef VEC8_LINE4 +#undef VEC8_ROUND +#undef VEC8_ROUND_SEQ +#undef VEC8_ROUND_HALF +#undef VEC8_ROUND_HALFANDHALF diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c new file mode 100644 index 0000000..40cccbf --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c @@ -0,0 +1,312 @@ + +/* + chacha-merged.c version 20080118 + D. J. Bernstein + Public domain. + */ + +#include +#include +#include + +#include "core.h" +#include "crypto_stream_chacha20.h" +#include "private/common.h" +#include "utils.h" + +#include "../stream_chacha20.h" +#include "chacha20_ref.h" + +struct chacha_ctx { + uint32_t input[16]; +}; + +typedef struct chacha_ctx chacha_ctx; + +#define U32C(v) (v##U) + +#define U32V(v) ((uint32_t)(v) &U32C(0xFFFFFFFF)) + +#define ROTATE(v, c) (ROTL32(v, c)) +#define XOR(v, w) ((v) ^ (w)) +#define PLUS(v, w) (U32V((v) + (w))) +#define PLUSONE(v) (PLUS((v), 1)) + +#define QUARTERROUND(a, b, c, d) \ + a = PLUS(a, b); \ + d = ROTATE(XOR(d, a), 16); \ + c = PLUS(c, d); \ + b = ROTATE(XOR(b, c), 12); \ + a = PLUS(a, b); \ + d = ROTATE(XOR(d, a), 8); \ + c = PLUS(c, d); \ + b = ROTATE(XOR(b, c), 7); + +static void +chacha_keysetup(chacha_ctx *ctx, const uint8_t *k) +{ + ctx->input[0] = U32C(0x61707865); + ctx->input[1] = U32C(0x3320646e); + ctx->input[2] = U32C(0x79622d32); + ctx->input[3] = U32C(0x6b206574); + ctx->input[4] = LOAD32_LE(k + 0); + ctx->input[5] = LOAD32_LE(k + 4); + ctx->input[6] = LOAD32_LE(k + 8); + ctx->input[7] = LOAD32_LE(k + 12); + ctx->input[8] = LOAD32_LE(k + 16); + ctx->input[9] = LOAD32_LE(k + 20); + ctx->input[10] = LOAD32_LE(k + 24); + ctx->input[11] = LOAD32_LE(k + 28); +} + +static void +chacha_ivsetup(chacha_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[12] = counter == NULL ? 0 : LOAD32_LE(counter + 0); + ctx->input[13] = counter == NULL ? 0 : LOAD32_LE(counter + 4); + ctx->input[14] = LOAD32_LE(iv + 0); + ctx->input[15] = LOAD32_LE(iv + 4); +} + +static void +chacha_ietf_ivsetup(chacha_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[12] = counter == NULL ? 0 : LOAD32_LE(counter); + ctx->input[13] = LOAD32_LE(iv + 0); + ctx->input[14] = LOAD32_LE(iv + 4); + ctx->input[15] = LOAD32_LE(iv + 8); +} + +static void +chacha20_encrypt_bytes(chacha_ctx *ctx, const uint8_t *m, uint8_t *c, + unsigned long long bytes) +{ + uint32_t x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, + x15; + uint32_t j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, + j15; + uint8_t *ctarget = NULL; + uint8_t tmp[64]; + unsigned int i; + + if (!bytes) { + return; /* LCOV_EXCL_LINE */ + } + j0 = ctx->input[0]; + j1 = ctx->input[1]; + j2 = ctx->input[2]; + j3 = ctx->input[3]; + j4 = ctx->input[4]; + j5 = ctx->input[5]; + j6 = ctx->input[6]; + j7 = ctx->input[7]; + j8 = ctx->input[8]; + j9 = ctx->input[9]; + j10 = ctx->input[10]; + j11 = ctx->input[11]; + j12 = ctx->input[12]; + j13 = ctx->input[13]; + j14 = ctx->input[14]; + j15 = ctx->input[15]; + + for (;;) { + if (bytes < 64) { + memset(tmp, 0, 64); + for (i = 0; i < bytes; ++i) { + tmp[i] = m[i]; + } + m = tmp; + ctarget = c; + c = tmp; + } + x0 = j0; + x1 = j1; + x2 = j2; + x3 = j3; + x4 = j4; + x5 = j5; + x6 = j6; + x7 = j7; + x8 = j8; + x9 = j9; + x10 = j10; + x11 = j11; + x12 = j12; + x13 = j13; + x14 = j14; + x15 = j15; + for (i = 20; i > 0; i -= 2) { + QUARTERROUND(x0, x4, x8, x12) + QUARTERROUND(x1, x5, x9, x13) + QUARTERROUND(x2, x6, x10, x14) + QUARTERROUND(x3, x7, x11, x15) + QUARTERROUND(x0, x5, x10, x15) + QUARTERROUND(x1, x6, x11, x12) + QUARTERROUND(x2, x7, x8, x13) + QUARTERROUND(x3, x4, x9, x14) + } + x0 = PLUS(x0, j0); + x1 = PLUS(x1, j1); + x2 = PLUS(x2, j2); + x3 = PLUS(x3, j3); + x4 = PLUS(x4, j4); + x5 = PLUS(x5, j5); + x6 = PLUS(x6, j6); + x7 = PLUS(x7, j7); + x8 = PLUS(x8, j8); + x9 = PLUS(x9, j9); + x10 = PLUS(x10, j10); + x11 = PLUS(x11, j11); + x12 = PLUS(x12, j12); + x13 = PLUS(x13, j13); + x14 = PLUS(x14, j14); + x15 = PLUS(x15, j15); + + x0 = XOR(x0, LOAD32_LE(m + 0)); + x1 = XOR(x1, LOAD32_LE(m + 4)); + x2 = XOR(x2, LOAD32_LE(m + 8)); + x3 = XOR(x3, LOAD32_LE(m + 12)); + x4 = XOR(x4, LOAD32_LE(m + 16)); + x5 = XOR(x5, LOAD32_LE(m + 20)); + x6 = XOR(x6, LOAD32_LE(m + 24)); + x7 = XOR(x7, LOAD32_LE(m + 28)); + x8 = XOR(x8, LOAD32_LE(m + 32)); + x9 = XOR(x9, LOAD32_LE(m + 36)); + x10 = XOR(x10, LOAD32_LE(m + 40)); + x11 = XOR(x11, LOAD32_LE(m + 44)); + x12 = XOR(x12, LOAD32_LE(m + 48)); + x13 = XOR(x13, LOAD32_LE(m + 52)); + x14 = XOR(x14, LOAD32_LE(m + 56)); + x15 = XOR(x15, LOAD32_LE(m + 60)); + + j12 = PLUSONE(j12); + /* LCOV_EXCL_START */ + if (!j12) { + j13 = PLUSONE(j13); + } + /* LCOV_EXCL_STOP */ + + STORE32_LE(c + 0, x0); + STORE32_LE(c + 4, x1); + STORE32_LE(c + 8, x2); + STORE32_LE(c + 12, x3); + STORE32_LE(c + 16, x4); + STORE32_LE(c + 20, x5); + STORE32_LE(c + 24, x6); + STORE32_LE(c + 28, x7); + STORE32_LE(c + 32, x8); + STORE32_LE(c + 36, x9); + STORE32_LE(c + 40, x10); + STORE32_LE(c + 44, x11); + STORE32_LE(c + 48, x12); + STORE32_LE(c + 52, x13); + STORE32_LE(c + 56, x14); + STORE32_LE(c + 60, x15); + + if (bytes <= 64) { + if (bytes < 64) { + for (i = 0; i < (unsigned int) bytes; ++i) { + ctarget[i] = c[i]; /* ctarget cannot be NULL */ + } + } + ctx->input[12] = j12; + ctx->input[13] = j13; + + return; + } + bytes -= 64; + c += 64; + m += 64; + } +} + +static int +stream_ref(unsigned char *c, unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + struct chacha_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES == 256 / 8); + chacha_keysetup(&ctx, k); + chacha_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + chacha20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ietf_ext_ref(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + struct chacha_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES == 256 / 8); + chacha_keysetup(&ctx, k); + chacha_ietf_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + chacha20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + struct chacha_ctx ctx; + uint8_t ic_bytes[8]; + uint32_t ic_high; + uint32_t ic_low; + + if (!mlen) { + return 0; + } + ic_high = U32V(ic >> 32); + ic_low = U32V(ic); + STORE32_LE(&ic_bytes[0], ic_low); + STORE32_LE(&ic_bytes[4], ic_high); + chacha_keysetup(&ctx, k); + chacha_ivsetup(&ctx, n, ic_bytes); + chacha20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_ietf_ext_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + uint32_t ic, const unsigned char *k) +{ + struct chacha_ctx ctx; + uint8_t ic_bytes[4]; + + if (!mlen) { + return 0; + } + STORE32_LE(ic_bytes, ic); + chacha_keysetup(&ctx, k); + chacha_ietf_ivsetup(&ctx, n, ic_bytes); + chacha20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +struct crypto_stream_chacha20_implementation + crypto_stream_chacha20_ref_implementation = { + SODIUM_C99(.stream =) stream_ref, + SODIUM_C99(.stream_ietf_ext =) stream_ietf_ext_ref, + SODIUM_C99(.stream_xor_ic =) stream_ref_xor_ic, + SODIUM_C99(.stream_ietf_ext_xor_ic =) stream_ietf_ext_ref_xor_ic + }; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.h new file mode 100644 index 0000000..6ac4807 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_chacha20.h" +#include "crypto_stream_chacha20.h" + +extern struct crypto_stream_chacha20_implementation + crypto_stream_chacha20_ref_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.c new file mode 100644 index 0000000..427c3fb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.c @@ -0,0 +1,184 @@ +#include "crypto_stream_chacha20.h" +#include "core.h" +#include "private/chacha20_ietf_ext.h" +#include "private/common.h" +#include "private/implementations.h" +#include "randombytes.h" +#include "runtime.h" +#include "stream_chacha20.h" + +#include "ref/chacha20_ref.h" +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) +# include "dolbeau/chacha20_dolbeau-avx2.h" +#endif +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) +# include "dolbeau/chacha20_dolbeau-ssse3.h" +#endif + +static const crypto_stream_chacha20_implementation *implementation = + &crypto_stream_chacha20_ref_implementation; + +size_t +crypto_stream_chacha20_keybytes(void) { + return crypto_stream_chacha20_KEYBYTES; +} + +size_t +crypto_stream_chacha20_noncebytes(void) { + return crypto_stream_chacha20_NONCEBYTES; +} + +size_t +crypto_stream_chacha20_messagebytes_max(void) +{ + return crypto_stream_chacha20_MESSAGEBYTES_MAX; +} + +size_t +crypto_stream_chacha20_ietf_keybytes(void) { + return crypto_stream_chacha20_ietf_KEYBYTES; +} + +size_t +crypto_stream_chacha20_ietf_noncebytes(void) { + return crypto_stream_chacha20_ietf_NONCEBYTES; +} + +size_t +crypto_stream_chacha20_ietf_messagebytes_max(void) +{ + return crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX; +} + +int +crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + if (clen > crypto_stream_chacha20_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->stream(c, clen, n, k); +} + +int +crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->stream_xor_ic(c, m, mlen, n, ic, k); +} + +int +crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->stream_xor_ic(c, m, mlen, n, 0U, k); +} + +int +crypto_stream_chacha20_ietf_ext(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + if (clen > crypto_stream_chacha20_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->stream_ietf_ext(c, clen, n, k); +} + +int +crypto_stream_chacha20_ietf_ext_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) +{ + if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->stream_ietf_ext_xor_ic(c, m, mlen, n, ic, k); +} + +static int +crypto_stream_chacha20_ietf_ext_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return implementation->stream_ietf_ext_xor_ic(c, m, mlen, n, 0U, k); +} + +int +crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + if (clen > crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_stream_chacha20_ietf_ext(c, clen, n, k); +} + +int +crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) +{ + if ((unsigned long long) ic > + (64ULL * (1ULL << 32)) / 64ULL - (mlen + 63ULL) / 64ULL) { + sodium_misuse(); + } + return crypto_stream_chacha20_ietf_ext_xor_ic(c, m, mlen, n, ic, k); +} + +int +crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + if (mlen > crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + return crypto_stream_chacha20_ietf_ext_xor(c, m, mlen, n, k); +} + +void +crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_chacha20_ietf_KEYBYTES); +} + +void +crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_chacha20_KEYBYTES); +} + +int +_crypto_stream_chacha20_pick_best_implementation(void) +{ + implementation = &crypto_stream_chacha20_ref_implementation; +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + if (sodium_runtime_has_avx2()) { + implementation = &crypto_stream_chacha20_dolbeau_avx2_implementation; + return 0; + } +#endif +#if defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) + if (sodium_runtime_has_ssse3()) { + implementation = &crypto_stream_chacha20_dolbeau_ssse3_implementation; + return 0; + } +#endif + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.h new file mode 100644 index 0000000..40f782f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.h @@ -0,0 +1,22 @@ + +#ifndef stream_chacha20_H +#define stream_chacha20_H + +#include + +typedef struct crypto_stream_chacha20_implementation { + int (*stream)(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k); + int (*stream_ietf_ext)(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k); + int (*stream_xor_ic)(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k); + int (*stream_ietf_ext_xor_ic)(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k); +} crypto_stream_chacha20_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/crypto_stream.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/crypto_stream.c new file mode 100644 index 0000000..58d2538 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/crypto_stream.c @@ -0,0 +1,49 @@ + +#include "crypto_stream.h" +#include "randombytes.h" + +size_t +crypto_stream_keybytes(void) +{ + return crypto_stream_KEYBYTES; +} + +size_t +crypto_stream_noncebytes(void) +{ + return crypto_stream_NONCEBYTES; +} + +size_t +crypto_stream_messagebytes_max(void) +{ + return crypto_stream_MESSAGEBYTES_MAX; +} + +const char * +crypto_stream_primitive(void) +{ + return crypto_stream_PRIMITIVE; +} + +int +crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + return crypto_stream_xsalsa20(c, clen, n, k); +} + + +int +crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_stream_xsalsa20_xor(c, m, mlen, n, k); +} + +void +crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c new file mode 100644 index 0000000..f0854eb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c @@ -0,0 +1,120 @@ +/* +version 20140420 +D. J. Bernstein +Public domain. +*/ + +#include + +#include "crypto_core_salsa20.h" +#include "crypto_stream_salsa20.h" +#include "utils.h" + +#include "../stream_salsa20.h" +#include "salsa20_ref.h" + +#ifndef HAVE_AMD64_ASM + +static int +stream_ref(unsigned char *c, unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned char kcopy[32]; + unsigned int i; + unsigned int u; + + if (!clen) { + return 0; + } + for (i = 0; i < 32; i++) { + kcopy[i] = k[i]; + } + for (i = 0; i < 8; i++) { + in[i] = n[i]; + } + for (i = 8; i < 16; i++) { + in[i] = 0; + } + while (clen >= 64) { + crypto_core_salsa20(c, in, kcopy, NULL); + u = 1; + for (i = 8; i < 16; i++) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + clen -= 64; + c += 64; + } + if (clen) { + crypto_core_salsa20(block, in, kcopy, NULL); + for (i = 0; i < (unsigned int) clen; i++) { + c[i] = block[i]; + } + } + sodium_memzero(block, sizeof block); + sodium_memzero(kcopy, sizeof kcopy); + + return 0; +} + +static int +stream_ref_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned char kcopy[32]; + unsigned int i; + unsigned int u; + + if (!mlen) { + return 0; + } + for (i = 0; i < 32; i++) { + kcopy[i] = k[i]; + } + for (i = 0; i < 8; i++) { + in[i] = n[i]; + } + for (i = 8; i < 16; i++) { + in[i] = (unsigned char) (ic & 0xff); + ic >>= 8; + } + while (mlen >= 64) { + crypto_core_salsa20(block, in, kcopy, NULL); + for (i = 0; i < 64; i++) { + c[i] = m[i] ^ block[i]; + } + u = 1; + for (i = 8; i < 16; i++) { + u += (unsigned int) in[i]; + in[i] = u; + u >>= 8; + } + mlen -= 64; + c += 64; + m += 64; + } + if (mlen) { + crypto_core_salsa20(block, in, kcopy, NULL); + for (i = 0; i < (unsigned int) mlen; i++) { + c[i] = m[i] ^ block[i]; + } + } + sodium_memzero(block, sizeof block); + sodium_memzero(kcopy, sizeof kcopy); + + return 0; +} + +struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_ref_implementation = { + SODIUM_C99(.stream =) stream_ref, + SODIUM_C99(.stream_xor_ic =) stream_ref_xor_ic, + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.h new file mode 100644 index 0000000..8716cb4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_salsa20.h" +#include "crypto_stream_salsa20.h" + +extern struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_ref_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.c new file mode 100644 index 0000000..4529850 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.c @@ -0,0 +1,100 @@ +#include "crypto_stream_salsa20.h" +#include "private/common.h" +#include "private/implementations.h" +#include "randombytes.h" +#include "runtime.h" +#include "stream_salsa20.h" + +#ifdef HAVE_AMD64_ASM +# include "xmm6/salsa20_xmm6.h" +#else +# include "ref/salsa20_ref.h" +#endif +#if !defined(HAVE_AMD64_ASM) && defined(HAVE_EMMINTRIN_H) +# include "xmm6int/salsa20_xmm6int-sse2.h" +#endif +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) +# include "xmm6int/salsa20_xmm6int-avx2.h" +#endif + +#if HAVE_AMD64_ASM +static const crypto_stream_salsa20_implementation *implementation = + &crypto_stream_salsa20_xmm6_implementation; +#else +static const crypto_stream_salsa20_implementation *implementation = + &crypto_stream_salsa20_ref_implementation; +#endif + +size_t +crypto_stream_salsa20_keybytes(void) +{ + return crypto_stream_salsa20_KEYBYTES; +} + +size_t +crypto_stream_salsa20_noncebytes(void) +{ + return crypto_stream_salsa20_NONCEBYTES; +} + +size_t +crypto_stream_salsa20_messagebytes_max(void) +{ + return crypto_stream_salsa20_MESSAGEBYTES_MAX; +} + +int +crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + return implementation->stream(c, clen, n, k); +} + +int +crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + return implementation->stream_xor_ic(c, m, mlen, n, ic, k); +} + +int +crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return implementation->stream_xor_ic(c, m, mlen, n, 0U, k); +} + +void +crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_salsa20_KEYBYTES); +} + +int +_crypto_stream_salsa20_pick_best_implementation(void) +{ +#ifdef HAVE_AMD64_ASM + implementation = &crypto_stream_salsa20_xmm6_implementation; +#else + implementation = &crypto_stream_salsa20_ref_implementation; +#endif + +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + if (sodium_runtime_has_avx2()) { + implementation = &crypto_stream_salsa20_xmm6int_avx2_implementation; + return 0; + } +#endif +#if !defined(HAVE_AMD64_ASM) && defined(HAVE_EMMINTRIN_H) + if (sodium_runtime_has_sse2()) { + implementation = &crypto_stream_salsa20_xmm6int_sse2_implementation; + return 0; + } +#endif + return 0; /* LCOV_EXCL_LINE */ +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.h new file mode 100644 index 0000000..1949d38 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.h @@ -0,0 +1,16 @@ + +#ifndef stream_salsa20_H +#define stream_salsa20_H + +#include + +typedef struct crypto_stream_salsa20_implementation { + int (*stream)(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k); + int (*stream_xor_ic)(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k); +} crypto_stream_salsa20_implementation; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S new file mode 100644 index 0000000..51ac26a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S @@ -0,0 +1,965 @@ +#ifdef HAVE_AMD64_ASM + +#include "private/asm_cet.h" + +.text +.p2align 5 + +#ifdef ASM_HIDE_SYMBOL +ASM_HIDE_SYMBOL stream_salsa20_xmm6 +ASM_HIDE_SYMBOL _stream_salsa20_xmm6 +#endif +.globl stream_salsa20_xmm6 +.globl _stream_salsa20_xmm6 +#ifdef __ELF__ +.type stream_salsa20_xmm6, @function +.type _stream_salsa20_xmm6, @function +#endif +stream_salsa20_xmm6: +_stream_salsa20_xmm6: + +_CET_ENDBR +mov %rsp,%r11 +and $31,%r11 +add $512,%r11 +sub %r11,%rsp +movq %r11,416(%rsp) +movq %r12,424(%rsp) +movq %r13,432(%rsp) +movq %r14,440(%rsp) +movq %r15,448(%rsp) +movq %rbx,456(%rsp) +movq %rbp,464(%rsp) +mov %rsi,%r9 +mov %rdi,%rdi +mov %rdi,%rsi +mov %rdx,%rdx +mov %rcx,%r10 +cmp $0,%r9 +jbe ._done +mov $0,%rax +mov %r9,%rcx +rep stosb +sub %r9,%rdi +movq $0,472(%rsp) +jmp ._start + +.text +.p2align 5 + +#ifdef ASM_HIDE_SYMBOL +ASM_HIDE_SYMBOL stream_salsa20_xmm6_xor_ic +ASM_HIDE_SYMBOL _stream_salsa20_xmm6_xor_ic +#endif +.globl stream_salsa20_xmm6_xor_ic +.globl _stream_salsa20_xmm6_xor_ic +#ifdef __ELF__ +.type stream_salsa20_xmm6_xor_ic, @function +.type _stream_salsa20_xmm6_xor_ic, @function +#endif +stream_salsa20_xmm6_xor_ic: +_stream_salsa20_xmm6_xor_ic: + +_CET_ENDBR +mov %rsp,%r11 +and $31,%r11 +add $512,%r11 +sub %r11,%rsp +movq %r11,416(%rsp) +movq %r12,424(%rsp) +movq %r13,432(%rsp) +movq %r14,440(%rsp) +movq %r15,448(%rsp) +movq %rbx,456(%rsp) +movq %rbp,464(%rsp) +mov %rdi,%rdi +mov %rsi,%rsi +mov %r9,%r10 +movq %r8,472(%rsp) +mov %rdx,%r9 +mov %rcx,%rdx +cmp $0,%r9 +jbe ._done + +._start: +movl 20(%r10),%ecx +movl 0(%r10),%r8d +movl 0(%rdx),%eax +movl 16(%r10),%r11d +movl %ecx,64(%rsp) +movl %r8d,4+64(%rsp) +movl %eax,8+64(%rsp) +movl %r11d,12+64(%rsp) +movl 24(%r10),%r8d +movl 4(%r10),%eax +movl 4(%rdx),%edx +movq 472(%rsp),%rcx +movl %ecx,80(%rsp) +movl %r8d,4+80(%rsp) +movl %eax,8+80(%rsp) +movl %edx,12+80(%rsp) +movl 12(%r10),%edx +shr $32,%rcx +movl 28(%r10),%r8d +movl 8(%r10),%eax +movl %edx,96(%rsp) +movl %ecx,4+96(%rsp) +movl %r8d,8+96(%rsp) +movl %eax,12+96(%rsp) +mov $1634760805,%rdx +mov $857760878,%rcx +mov $2036477234,%r8 +mov $1797285236,%rax +movl %edx,112(%rsp) +movl %ecx,4+112(%rsp) +movl %r8d,8+112(%rsp) +movl %eax,12+112(%rsp) +cmp $256,%r9 +jb ._bytesbetween1and255 +movdqa 112(%rsp),%xmm0 +pshufd $0x55,%xmm0,%xmm1 +pshufd $0xaa,%xmm0,%xmm2 +pshufd $0xff,%xmm0,%xmm3 +pshufd $0x00,%xmm0,%xmm0 +movdqa %xmm1,128(%rsp) +movdqa %xmm2,144(%rsp) +movdqa %xmm3,160(%rsp) +movdqa %xmm0,176(%rsp) +movdqa 64(%rsp),%xmm0 +pshufd $0xaa,%xmm0,%xmm1 +pshufd $0xff,%xmm0,%xmm2 +pshufd $0x00,%xmm0,%xmm3 +pshufd $0x55,%xmm0,%xmm0 +movdqa %xmm1,192(%rsp) +movdqa %xmm2,208(%rsp) +movdqa %xmm3,224(%rsp) +movdqa %xmm0,240(%rsp) +movdqa 80(%rsp),%xmm0 +pshufd $0xff,%xmm0,%xmm1 +pshufd $0x55,%xmm0,%xmm2 +pshufd $0xaa,%xmm0,%xmm0 +movdqa %xmm1,256(%rsp) +movdqa %xmm2,272(%rsp) +movdqa %xmm0,288(%rsp) +movdqa 96(%rsp),%xmm0 +pshufd $0x00,%xmm0,%xmm1 +pshufd $0xaa,%xmm0,%xmm2 +pshufd $0xff,%xmm0,%xmm0 +movdqa %xmm1,304(%rsp) +movdqa %xmm2,320(%rsp) +movdqa %xmm0,336(%rsp) + +.p2align 4 +._bytesatleast256: +movq 472(%rsp),%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,352(%rsp) +movl %ecx,368(%rsp) +add $1,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,4+352(%rsp) +movl %ecx,4+368(%rsp) +add $1,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,8+352(%rsp) +movl %ecx,8+368(%rsp) +add $1,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,12+352(%rsp) +movl %ecx,12+368(%rsp) +add $1,%rdx +mov %rdx,%rcx +shr $32,%rcx +movl %edx,80(%rsp) +movl %ecx,4+96(%rsp) +movq %rdx,472(%rsp) +movq %r9,480(%rsp) +mov $20,%rdx +movdqa 128(%rsp),%xmm0 +movdqa 144(%rsp),%xmm1 +movdqa 160(%rsp),%xmm2 +movdqa 320(%rsp),%xmm3 +movdqa 336(%rsp),%xmm4 +movdqa 192(%rsp),%xmm5 +movdqa 208(%rsp),%xmm6 +movdqa 240(%rsp),%xmm7 +movdqa 256(%rsp),%xmm8 +movdqa 272(%rsp),%xmm9 +movdqa 288(%rsp),%xmm10 +movdqa 368(%rsp),%xmm11 +movdqa 176(%rsp),%xmm12 +movdqa 224(%rsp),%xmm13 +movdqa 304(%rsp),%xmm14 +movdqa 352(%rsp),%xmm15 + +.p2align 4 +._mainloop1: +movdqa %xmm1,384(%rsp) +movdqa %xmm2,400(%rsp) +movdqa %xmm13,%xmm1 +paddd %xmm12,%xmm1 +movdqa %xmm1,%xmm2 +pslld $7,%xmm1 +pxor %xmm1,%xmm14 +psrld $25,%xmm2 +pxor %xmm2,%xmm14 +movdqa %xmm7,%xmm1 +paddd %xmm0,%xmm1 +movdqa %xmm1,%xmm2 +pslld $7,%xmm1 +pxor %xmm1,%xmm11 +psrld $25,%xmm2 +pxor %xmm2,%xmm11 +movdqa %xmm12,%xmm1 +paddd %xmm14,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm15 +psrld $23,%xmm2 +pxor %xmm2,%xmm15 +movdqa %xmm0,%xmm1 +paddd %xmm11,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm9 +psrld $23,%xmm2 +pxor %xmm2,%xmm9 +movdqa %xmm14,%xmm1 +paddd %xmm15,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm13 +psrld $19,%xmm2 +pxor %xmm2,%xmm13 +movdqa %xmm11,%xmm1 +paddd %xmm9,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm7 +psrld $19,%xmm2 +pxor %xmm2,%xmm7 +movdqa %xmm15,%xmm1 +paddd %xmm13,%xmm1 +movdqa %xmm1,%xmm2 +pslld $18,%xmm1 +pxor %xmm1,%xmm12 +psrld $14,%xmm2 +pxor %xmm2,%xmm12 +movdqa 384(%rsp),%xmm1 +movdqa %xmm12,384(%rsp) +movdqa %xmm9,%xmm2 +paddd %xmm7,%xmm2 +movdqa %xmm2,%xmm12 +pslld $18,%xmm2 +pxor %xmm2,%xmm0 +psrld $14,%xmm12 +pxor %xmm12,%xmm0 +movdqa %xmm5,%xmm2 +paddd %xmm1,%xmm2 +movdqa %xmm2,%xmm12 +pslld $7,%xmm2 +pxor %xmm2,%xmm3 +psrld $25,%xmm12 +pxor %xmm12,%xmm3 +movdqa 400(%rsp),%xmm2 +movdqa %xmm0,400(%rsp) +movdqa %xmm6,%xmm0 +paddd %xmm2,%xmm0 +movdqa %xmm0,%xmm12 +pslld $7,%xmm0 +pxor %xmm0,%xmm4 +psrld $25,%xmm12 +pxor %xmm12,%xmm4 +movdqa %xmm1,%xmm0 +paddd %xmm3,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm10 +psrld $23,%xmm12 +pxor %xmm12,%xmm10 +movdqa %xmm2,%xmm0 +paddd %xmm4,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm8 +psrld $23,%xmm12 +pxor %xmm12,%xmm8 +movdqa %xmm3,%xmm0 +paddd %xmm10,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm5 +psrld $19,%xmm12 +pxor %xmm12,%xmm5 +movdqa %xmm4,%xmm0 +paddd %xmm8,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm6 +psrld $19,%xmm12 +pxor %xmm12,%xmm6 +movdqa %xmm10,%xmm0 +paddd %xmm5,%xmm0 +movdqa %xmm0,%xmm12 +pslld $18,%xmm0 +pxor %xmm0,%xmm1 +psrld $14,%xmm12 +pxor %xmm12,%xmm1 +movdqa 384(%rsp),%xmm0 +movdqa %xmm1,384(%rsp) +movdqa %xmm4,%xmm1 +paddd %xmm0,%xmm1 +movdqa %xmm1,%xmm12 +pslld $7,%xmm1 +pxor %xmm1,%xmm7 +psrld $25,%xmm12 +pxor %xmm12,%xmm7 +movdqa %xmm8,%xmm1 +paddd %xmm6,%xmm1 +movdqa %xmm1,%xmm12 +pslld $18,%xmm1 +pxor %xmm1,%xmm2 +psrld $14,%xmm12 +pxor %xmm12,%xmm2 +movdqa 400(%rsp),%xmm12 +movdqa %xmm2,400(%rsp) +movdqa %xmm14,%xmm1 +paddd %xmm12,%xmm1 +movdqa %xmm1,%xmm2 +pslld $7,%xmm1 +pxor %xmm1,%xmm5 +psrld $25,%xmm2 +pxor %xmm2,%xmm5 +movdqa %xmm0,%xmm1 +paddd %xmm7,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm10 +psrld $23,%xmm2 +pxor %xmm2,%xmm10 +movdqa %xmm12,%xmm1 +paddd %xmm5,%xmm1 +movdqa %xmm1,%xmm2 +pslld $9,%xmm1 +pxor %xmm1,%xmm8 +psrld $23,%xmm2 +pxor %xmm2,%xmm8 +movdqa %xmm7,%xmm1 +paddd %xmm10,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm4 +psrld $19,%xmm2 +pxor %xmm2,%xmm4 +movdqa %xmm5,%xmm1 +paddd %xmm8,%xmm1 +movdqa %xmm1,%xmm2 +pslld $13,%xmm1 +pxor %xmm1,%xmm14 +psrld $19,%xmm2 +pxor %xmm2,%xmm14 +movdqa %xmm10,%xmm1 +paddd %xmm4,%xmm1 +movdqa %xmm1,%xmm2 +pslld $18,%xmm1 +pxor %xmm1,%xmm0 +psrld $14,%xmm2 +pxor %xmm2,%xmm0 +movdqa 384(%rsp),%xmm1 +movdqa %xmm0,384(%rsp) +movdqa %xmm8,%xmm0 +paddd %xmm14,%xmm0 +movdqa %xmm0,%xmm2 +pslld $18,%xmm0 +pxor %xmm0,%xmm12 +psrld $14,%xmm2 +pxor %xmm2,%xmm12 +movdqa %xmm11,%xmm0 +paddd %xmm1,%xmm0 +movdqa %xmm0,%xmm2 +pslld $7,%xmm0 +pxor %xmm0,%xmm6 +psrld $25,%xmm2 +pxor %xmm2,%xmm6 +movdqa 400(%rsp),%xmm2 +movdqa %xmm12,400(%rsp) +movdqa %xmm3,%xmm0 +paddd %xmm2,%xmm0 +movdqa %xmm0,%xmm12 +pslld $7,%xmm0 +pxor %xmm0,%xmm13 +psrld $25,%xmm12 +pxor %xmm12,%xmm13 +movdqa %xmm1,%xmm0 +paddd %xmm6,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm15 +psrld $23,%xmm12 +pxor %xmm12,%xmm15 +movdqa %xmm2,%xmm0 +paddd %xmm13,%xmm0 +movdqa %xmm0,%xmm12 +pslld $9,%xmm0 +pxor %xmm0,%xmm9 +psrld $23,%xmm12 +pxor %xmm12,%xmm9 +movdqa %xmm6,%xmm0 +paddd %xmm15,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm11 +psrld $19,%xmm12 +pxor %xmm12,%xmm11 +movdqa %xmm13,%xmm0 +paddd %xmm9,%xmm0 +movdqa %xmm0,%xmm12 +pslld $13,%xmm0 +pxor %xmm0,%xmm3 +psrld $19,%xmm12 +pxor %xmm12,%xmm3 +movdqa %xmm15,%xmm0 +paddd %xmm11,%xmm0 +movdqa %xmm0,%xmm12 +pslld $18,%xmm0 +pxor %xmm0,%xmm1 +psrld $14,%xmm12 +pxor %xmm12,%xmm1 +movdqa %xmm9,%xmm0 +paddd %xmm3,%xmm0 +movdqa %xmm0,%xmm12 +pslld $18,%xmm0 +pxor %xmm0,%xmm2 +psrld $14,%xmm12 +pxor %xmm12,%xmm2 +movdqa 384(%rsp),%xmm12 +movdqa 400(%rsp),%xmm0 +sub $2,%rdx +ja ._mainloop1 + +paddd 176(%rsp),%xmm12 +paddd 240(%rsp),%xmm7 +paddd 288(%rsp),%xmm10 +paddd 336(%rsp),%xmm4 +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +pshufd $0x39,%xmm12,%xmm12 +pshufd $0x39,%xmm7,%xmm7 +pshufd $0x39,%xmm10,%xmm10 +pshufd $0x39,%xmm4,%xmm4 +xorl 0(%rsi),%edx +xorl 4(%rsi),%ecx +xorl 8(%rsi),%r8d +xorl 12(%rsi),%r9d +movl %edx,0(%rdi) +movl %ecx,4(%rdi) +movl %r8d,8(%rdi) +movl %r9d,12(%rdi) +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +pshufd $0x39,%xmm12,%xmm12 +pshufd $0x39,%xmm7,%xmm7 +pshufd $0x39,%xmm10,%xmm10 +pshufd $0x39,%xmm4,%xmm4 +xorl 64(%rsi),%edx +xorl 68(%rsi),%ecx +xorl 72(%rsi),%r8d +xorl 76(%rsi),%r9d +movl %edx,64(%rdi) +movl %ecx,68(%rdi) +movl %r8d,72(%rdi) +movl %r9d,76(%rdi) +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +pshufd $0x39,%xmm12,%xmm12 +pshufd $0x39,%xmm7,%xmm7 +pshufd $0x39,%xmm10,%xmm10 +pshufd $0x39,%xmm4,%xmm4 +xorl 128(%rsi),%edx +xorl 132(%rsi),%ecx +xorl 136(%rsi),%r8d +xorl 140(%rsi),%r9d +movl %edx,128(%rdi) +movl %ecx,132(%rdi) +movl %r8d,136(%rdi) +movl %r9d,140(%rdi) +movd %xmm12,%rdx +movd %xmm7,%rcx +movd %xmm10,%r8 +movd %xmm4,%r9 +xorl 192(%rsi),%edx +xorl 196(%rsi),%ecx +xorl 200(%rsi),%r8d +xorl 204(%rsi),%r9d +movl %edx,192(%rdi) +movl %ecx,196(%rdi) +movl %r8d,200(%rdi) +movl %r9d,204(%rdi) +paddd 304(%rsp),%xmm14 +paddd 128(%rsp),%xmm0 +paddd 192(%rsp),%xmm5 +paddd 256(%rsp),%xmm8 +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +pshufd $0x39,%xmm14,%xmm14 +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm5,%xmm5 +pshufd $0x39,%xmm8,%xmm8 +xorl 16(%rsi),%edx +xorl 20(%rsi),%ecx +xorl 24(%rsi),%r8d +xorl 28(%rsi),%r9d +movl %edx,16(%rdi) +movl %ecx,20(%rdi) +movl %r8d,24(%rdi) +movl %r9d,28(%rdi) +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +pshufd $0x39,%xmm14,%xmm14 +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm5,%xmm5 +pshufd $0x39,%xmm8,%xmm8 +xorl 80(%rsi),%edx +xorl 84(%rsi),%ecx +xorl 88(%rsi),%r8d +xorl 92(%rsi),%r9d +movl %edx,80(%rdi) +movl %ecx,84(%rdi) +movl %r8d,88(%rdi) +movl %r9d,92(%rdi) +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +pshufd $0x39,%xmm14,%xmm14 +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm5,%xmm5 +pshufd $0x39,%xmm8,%xmm8 +xorl 144(%rsi),%edx +xorl 148(%rsi),%ecx +xorl 152(%rsi),%r8d +xorl 156(%rsi),%r9d +movl %edx,144(%rdi) +movl %ecx,148(%rdi) +movl %r8d,152(%rdi) +movl %r9d,156(%rdi) +movd %xmm14,%rdx +movd %xmm0,%rcx +movd %xmm5,%r8 +movd %xmm8,%r9 +xorl 208(%rsi),%edx +xorl 212(%rsi),%ecx +xorl 216(%rsi),%r8d +xorl 220(%rsi),%r9d +movl %edx,208(%rdi) +movl %ecx,212(%rdi) +movl %r8d,216(%rdi) +movl %r9d,220(%rdi) +paddd 352(%rsp),%xmm15 +paddd 368(%rsp),%xmm11 +paddd 144(%rsp),%xmm1 +paddd 208(%rsp),%xmm6 +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +pshufd $0x39,%xmm15,%xmm15 +pshufd $0x39,%xmm11,%xmm11 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm6,%xmm6 +xorl 32(%rsi),%edx +xorl 36(%rsi),%ecx +xorl 40(%rsi),%r8d +xorl 44(%rsi),%r9d +movl %edx,32(%rdi) +movl %ecx,36(%rdi) +movl %r8d,40(%rdi) +movl %r9d,44(%rdi) +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +pshufd $0x39,%xmm15,%xmm15 +pshufd $0x39,%xmm11,%xmm11 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm6,%xmm6 +xorl 96(%rsi),%edx +xorl 100(%rsi),%ecx +xorl 104(%rsi),%r8d +xorl 108(%rsi),%r9d +movl %edx,96(%rdi) +movl %ecx,100(%rdi) +movl %r8d,104(%rdi) +movl %r9d,108(%rdi) +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +pshufd $0x39,%xmm15,%xmm15 +pshufd $0x39,%xmm11,%xmm11 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm6,%xmm6 +xorl 160(%rsi),%edx +xorl 164(%rsi),%ecx +xorl 168(%rsi),%r8d +xorl 172(%rsi),%r9d +movl %edx,160(%rdi) +movl %ecx,164(%rdi) +movl %r8d,168(%rdi) +movl %r9d,172(%rdi) +movd %xmm15,%rdx +movd %xmm11,%rcx +movd %xmm1,%r8 +movd %xmm6,%r9 +xorl 224(%rsi),%edx +xorl 228(%rsi),%ecx +xorl 232(%rsi),%r8d +xorl 236(%rsi),%r9d +movl %edx,224(%rdi) +movl %ecx,228(%rdi) +movl %r8d,232(%rdi) +movl %r9d,236(%rdi) +paddd 224(%rsp),%xmm13 +paddd 272(%rsp),%xmm9 +paddd 320(%rsp),%xmm3 +paddd 160(%rsp),%xmm2 +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +pshufd $0x39,%xmm13,%xmm13 +pshufd $0x39,%xmm9,%xmm9 +pshufd $0x39,%xmm3,%xmm3 +pshufd $0x39,%xmm2,%xmm2 +xorl 48(%rsi),%edx +xorl 52(%rsi),%ecx +xorl 56(%rsi),%r8d +xorl 60(%rsi),%r9d +movl %edx,48(%rdi) +movl %ecx,52(%rdi) +movl %r8d,56(%rdi) +movl %r9d,60(%rdi) +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +pshufd $0x39,%xmm13,%xmm13 +pshufd $0x39,%xmm9,%xmm9 +pshufd $0x39,%xmm3,%xmm3 +pshufd $0x39,%xmm2,%xmm2 +xorl 112(%rsi),%edx +xorl 116(%rsi),%ecx +xorl 120(%rsi),%r8d +xorl 124(%rsi),%r9d +movl %edx,112(%rdi) +movl %ecx,116(%rdi) +movl %r8d,120(%rdi) +movl %r9d,124(%rdi) +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +pshufd $0x39,%xmm13,%xmm13 +pshufd $0x39,%xmm9,%xmm9 +pshufd $0x39,%xmm3,%xmm3 +pshufd $0x39,%xmm2,%xmm2 +xorl 176(%rsi),%edx +xorl 180(%rsi),%ecx +xorl 184(%rsi),%r8d +xorl 188(%rsi),%r9d +movl %edx,176(%rdi) +movl %ecx,180(%rdi) +movl %r8d,184(%rdi) +movl %r9d,188(%rdi) +movd %xmm13,%rdx +movd %xmm9,%rcx +movd %xmm3,%r8 +movd %xmm2,%r9 +xorl 240(%rsi),%edx +xorl 244(%rsi),%ecx +xorl 248(%rsi),%r8d +xorl 252(%rsi),%r9d +movl %edx,240(%rdi) +movl %ecx,244(%rdi) +movl %r8d,248(%rdi) +movl %r9d,252(%rdi) +movq 480(%rsp),%r9 +sub $256,%r9 +add $256,%rsi +add $256,%rdi +cmp $256,%r9 +jae ._bytesatleast256 + +cmp $0,%r9 +jbe ._done + +._bytesbetween1and255: +cmp $64,%r9 +jae ._nocopy + +mov %rdi,%rdx +leaq 0(%rsp),%rdi +mov %r9,%rcx +rep movsb +leaq 0(%rsp),%rdi +leaq 0(%rsp),%rsi + +._nocopy: +movq %r9,480(%rsp) +movdqa 112(%rsp),%xmm0 +movdqa 64(%rsp),%xmm1 +movdqa 80(%rsp),%xmm2 +movdqa 96(%rsp),%xmm3 +movdqa %xmm1,%xmm4 +mov $20,%rcx + +.p2align 4 +._mainloop2: +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm3 +pxor %xmm6,%xmm3 +paddd %xmm3,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm3,%xmm3 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm1 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pxor %xmm6,%xmm0 +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm1 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm1,%xmm1 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm3 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm3 +paddd %xmm3,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm3,%xmm3 +pxor %xmm6,%xmm0 +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm3 +pxor %xmm6,%xmm3 +paddd %xmm3,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm3,%xmm3 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm1 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm3,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pxor %xmm6,%xmm0 +paddd %xmm0,%xmm4 +movdqa %xmm0,%xmm5 +movdqa %xmm4,%xmm6 +pslld $7,%xmm4 +psrld $25,%xmm6 +pxor %xmm4,%xmm1 +pxor %xmm6,%xmm1 +paddd %xmm1,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $9,%xmm5 +psrld $23,%xmm6 +pxor %xmm5,%xmm2 +pshufd $0x93,%xmm1,%xmm1 +pxor %xmm6,%xmm2 +paddd %xmm2,%xmm4 +movdqa %xmm2,%xmm5 +movdqa %xmm4,%xmm6 +pslld $13,%xmm4 +psrld $19,%xmm6 +pxor %xmm4,%xmm3 +pshufd $0x4e,%xmm2,%xmm2 +pxor %xmm6,%xmm3 +sub $4,%rcx +paddd %xmm3,%xmm5 +movdqa %xmm1,%xmm4 +movdqa %xmm5,%xmm6 +pslld $18,%xmm5 +pxor %xmm7,%xmm7 +psrld $14,%xmm6 +pxor %xmm5,%xmm0 +pshufd $0x39,%xmm3,%xmm3 +pxor %xmm6,%xmm0 +ja ._mainloop2 + +paddd 112(%rsp),%xmm0 +paddd 64(%rsp),%xmm1 +paddd 80(%rsp),%xmm2 +paddd 96(%rsp),%xmm3 +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm2,%xmm2 +pshufd $0x39,%xmm3,%xmm3 +xorl 0(%rsi),%ecx +xorl 48(%rsi),%r8d +xorl 32(%rsi),%r9d +xorl 16(%rsi),%eax +movl %ecx,0(%rdi) +movl %r8d,48(%rdi) +movl %r9d,32(%rdi) +movl %eax,16(%rdi) +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm2,%xmm2 +pshufd $0x39,%xmm3,%xmm3 +xorl 20(%rsi),%ecx +xorl 4(%rsi),%r8d +xorl 52(%rsi),%r9d +xorl 36(%rsi),%eax +movl %ecx,20(%rdi) +movl %r8d,4(%rdi) +movl %r9d,52(%rdi) +movl %eax,36(%rdi) +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +pshufd $0x39,%xmm0,%xmm0 +pshufd $0x39,%xmm1,%xmm1 +pshufd $0x39,%xmm2,%xmm2 +pshufd $0x39,%xmm3,%xmm3 +xorl 40(%rsi),%ecx +xorl 24(%rsi),%r8d +xorl 8(%rsi),%r9d +xorl 56(%rsi),%eax +movl %ecx,40(%rdi) +movl %r8d,24(%rdi) +movl %r9d,8(%rdi) +movl %eax,56(%rdi) +movd %xmm0,%rcx +movd %xmm1,%r8 +movd %xmm2,%r9 +movd %xmm3,%rax +xorl 60(%rsi),%ecx +xorl 44(%rsi),%r8d +xorl 28(%rsi),%r9d +xorl 12(%rsi),%eax +movl %ecx,60(%rdi) +movl %r8d,44(%rdi) +movl %r9d,28(%rdi) +movl %eax,12(%rdi) +movq 480(%rsp),%r9 +movq 472(%rsp),%rcx +add $1,%rcx +mov %rcx,%r8 +shr $32,%r8 +movl %ecx,80(%rsp) +movl %r8d,4+96(%rsp) +movq %rcx,472(%rsp) +cmp $64,%r9 +ja ._bytesatleast65 +jae ._bytesatleast64 + +mov %rdi,%rsi +mov %rdx,%rdi +mov %r9,%rcx +rep movsb + +._bytesatleast64: +._done: +movq 416(%rsp),%r11 +movq 424(%rsp),%r12 +movq 432(%rsp),%r13 +movq 440(%rsp),%r14 +movq 448(%rsp),%r15 +movq 456(%rsp),%rbx +movq 464(%rsp),%rbp +add %r11,%rsp +xor %rax,%rax +mov %rsi,%rdx +ret + +._bytesatleast65: +sub $64,%r9 +add $64,%rdi +add $64,%rsi +jmp ._bytesbetween1and255 + +#endif + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c new file mode 100644 index 0000000..0a6fee0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c @@ -0,0 +1,31 @@ + +#include + +#include "utils.h" + +#include "../stream_salsa20.h" +#include "salsa20_xmm6.h" + +#ifdef HAVE_AMD64_ASM + +#ifdef __cplusplus +extern "C" { +#endif +extern int stream_salsa20_xmm6(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k); + +extern int stream_salsa20_xmm6_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + uint64_t ic, const unsigned char *k); +#ifdef __cplusplus +} +#endif + +struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_xmm6_implementation = { + SODIUM_C99(.stream =) stream_salsa20_xmm6, + SODIUM_C99(.stream_xor_ic =) stream_salsa20_xmm6_xor_ic, + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h new file mode 100644 index 0000000..d38473a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_salsa20.h" +#include "crypto_stream_salsa20.h" + +extern struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_xmm6_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c new file mode 100644 index 0000000..507d7fe --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c @@ -0,0 +1,131 @@ + +#include +#include +#include + +#include "crypto_stream_salsa20.h" +#include "private/common.h" +#include "utils.h" + +#if defined(HAVE_AVX2INTRIN_H) && defined(HAVE_EMMINTRIN_H) && \ + defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# pragma GCC target("ssse3") +# pragma GCC target("sse4.1") +# pragma GCC target("avx2") +# endif + +#include +#include +#include +#include +#include "private/sse2_64_32.h" + +# include "../stream_salsa20.h" +# include "salsa20_xmm6int-avx2.h" + +# define ROUNDS 20 + +typedef struct salsa_ctx { + uint32_t input[16]; +} salsa_ctx; + +static const int TR[16] = { + 0, 5, 10, 15, 12, 1, 6, 11, 8, 13, 2, 7, 4, 9, 14, 3 +}; + +static void +salsa_keysetup(salsa_ctx *ctx, const uint8_t *k) +{ + ctx->input[TR[1]] = LOAD32_LE(k + 0); + ctx->input[TR[2]] = LOAD32_LE(k + 4); + ctx->input[TR[3]] = LOAD32_LE(k + 8); + ctx->input[TR[4]] = LOAD32_LE(k + 12); + ctx->input[TR[11]] = LOAD32_LE(k + 16); + ctx->input[TR[12]] = LOAD32_LE(k + 20); + ctx->input[TR[13]] = LOAD32_LE(k + 24); + ctx->input[TR[14]] = LOAD32_LE(k + 28); + ctx->input[TR[0]] = 0x61707865; + ctx->input[TR[5]] = 0x3320646e; + ctx->input[TR[10]] = 0x79622d32; + ctx->input[TR[15]] = 0x6b206574; +} + +static void +salsa_ivsetup(salsa_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[TR[6]] = LOAD32_LE(iv + 0); + ctx->input[TR[7]] = LOAD32_LE(iv + 4); + ctx->input[TR[8]] = counter == NULL ? 0 : LOAD32_LE(counter + 0); + ctx->input[TR[9]] = counter == NULL ? 0 : LOAD32_LE(counter + 4); +} + +static void +salsa20_encrypt_bytes(salsa_ctx *ctx, const uint8_t *m, uint8_t *c, + unsigned long long bytes) +{ + uint32_t * const x = &ctx->input[0]; + + if (!bytes) { + return; /* LCOV_EXCL_LINE */ + } + +#include "u8.h" +#include "u4.h" +#include "u1.h" +#include "u0.h" +} + +static int +stream_avx2(unsigned char *c, unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + struct salsa_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_salsa20_KEYBYTES == 256 / 8); + salsa_keysetup(&ctx, k); + salsa_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + salsa20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_avx2_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + struct salsa_ctx ctx; + uint8_t ic_bytes[8]; + uint32_t ic_high; + uint32_t ic_low; + + if (!mlen) { + return 0; + } + ic_high = (uint32_t) (ic >> 32); + ic_low = (uint32_t) ic; + STORE32_LE(&ic_bytes[0], ic_low); + STORE32_LE(&ic_bytes[4], ic_high); + salsa_keysetup(&ctx, k); + salsa_ivsetup(&ctx, n, ic_bytes); + salsa20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_xmm6int_avx2_implementation = { + SODIUM_C99(.stream =) stream_avx2, + SODIUM_C99(.stream_xor_ic =) stream_avx2_xor_ic + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h new file mode 100644 index 0000000..0924e9b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_salsa20.h" +#include "crypto_stream_salsa20.h" + +extern struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_xmm6int_avx2_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c new file mode 100644 index 0000000..16cca0d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c @@ -0,0 +1,122 @@ + +#include +#include +#include + +#include "crypto_stream_salsa20.h" +#include "private/common.h" +#include "utils.h" + +#ifdef HAVE_EMMINTRIN_H + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# endif +# include +# include "private/sse2_64_32.h" + +# include "../stream_salsa20.h" +# include "salsa20_xmm6int-sse2.h" + +# define ROUNDS 20 + +typedef struct salsa_ctx { + uint32_t input[16]; +} salsa_ctx; + +static const int TR[16] = { + 0, 5, 10, 15, 12, 1, 6, 11, 8, 13, 2, 7, 4, 9, 14, 3 +}; + +static void +salsa_keysetup(salsa_ctx *ctx, const uint8_t *k) +{ + ctx->input[TR[1]] = LOAD32_LE(k + 0); + ctx->input[TR[2]] = LOAD32_LE(k + 4); + ctx->input[TR[3]] = LOAD32_LE(k + 8); + ctx->input[TR[4]] = LOAD32_LE(k + 12); + ctx->input[TR[11]] = LOAD32_LE(k + 16); + ctx->input[TR[12]] = LOAD32_LE(k + 20); + ctx->input[TR[13]] = LOAD32_LE(k + 24); + ctx->input[TR[14]] = LOAD32_LE(k + 28); + ctx->input[TR[0]] = 0x61707865; + ctx->input[TR[5]] = 0x3320646e; + ctx->input[TR[10]] = 0x79622d32; + ctx->input[TR[15]] = 0x6b206574; +} + +static void +salsa_ivsetup(salsa_ctx *ctx, const uint8_t *iv, const uint8_t *counter) +{ + ctx->input[TR[6]] = LOAD32_LE(iv + 0); + ctx->input[TR[7]] = LOAD32_LE(iv + 4); + ctx->input[TR[8]] = counter == NULL ? 0 : LOAD32_LE(counter + 0); + ctx->input[TR[9]] = counter == NULL ? 0 : LOAD32_LE(counter + 4); +} + +static void +salsa20_encrypt_bytes(salsa_ctx *ctx, const uint8_t *m, uint8_t *c, + unsigned long long bytes) +{ + uint32_t * const x = &ctx->input[0]; + + if (!bytes) { + return; /* LCOV_EXCL_LINE */ + } + +#include "u4.h" +#include "u1.h" +#include "u0.h" +} + +static int +stream_sse2(unsigned char *c, unsigned long long clen, const unsigned char *n, + const unsigned char *k) +{ + struct salsa_ctx ctx; + + if (!clen) { + return 0; + } + COMPILER_ASSERT(crypto_stream_salsa20_KEYBYTES == 256 / 8); + salsa_keysetup(&ctx, k); + salsa_ivsetup(&ctx, n, NULL); + memset(c, 0, clen); + salsa20_encrypt_bytes(&ctx, c, c, clen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +static int +stream_sse2_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, uint64_t ic, + const unsigned char *k) +{ + struct salsa_ctx ctx; + uint8_t ic_bytes[8]; + uint32_t ic_high; + uint32_t ic_low; + + if (!mlen) { + return 0; + } + ic_high = (uint32_t) (ic >> 32); + ic_low = (uint32_t) (ic); + STORE32_LE(&ic_bytes[0], ic_low); + STORE32_LE(&ic_bytes[4], ic_high); + salsa_keysetup(&ctx, k); + salsa_ivsetup(&ctx, n, ic_bytes); + salsa20_encrypt_bytes(&ctx, m, c, mlen); + sodium_memzero(&ctx, sizeof ctx); + + return 0; +} + +struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_xmm6int_sse2_implementation = { + SODIUM_C99(.stream =) stream_sse2, + SODIUM_C99(.stream_xor_ic =) stream_sse2_xor_ic + }; + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h new file mode 100644 index 0000000..ed52a8b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h @@ -0,0 +1,8 @@ + +#include + +#include "../stream_salsa20.h" +#include "crypto_stream_salsa20.h" + +extern struct crypto_stream_salsa20_implementation + crypto_stream_salsa20_xmm6int_sse2_implementation; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u0.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u0.h new file mode 100644 index 0000000..2bc527d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u0.h @@ -0,0 +1,195 @@ +if (bytes > 0) { + __m128i diag0 = _mm_loadu_si128((const __m128i *) (x + 0)); + __m128i diag1 = _mm_loadu_si128((const __m128i *) (x + 4)); + __m128i diag2 = _mm_loadu_si128((const __m128i *) (x + 8)); + __m128i diag3 = _mm_loadu_si128((const __m128i *) (x + 12)); + __m128i a0, a1, a2, a3, a4, a5, a6, a7; + __m128i b0, b1, b2, b3, b4, b5, b6, b7; + uint8_t partialblock[64] = { 0 }; + + unsigned int i; + + a0 = diag1; + for (i = 0; i < ROUNDS; i += 4) { + a0 = _mm_add_epi32(a0, diag0); + a1 = diag0; + b0 = a0; + a0 = _mm_slli_epi32(a0, 7); + b0 = _mm_srli_epi32(b0, 25); + diag3 = _mm_xor_si128(diag3, a0); + + diag3 = _mm_xor_si128(diag3, b0); + + a1 = _mm_add_epi32(a1, diag3); + a2 = diag3; + b1 = a1; + a1 = _mm_slli_epi32(a1, 9); + b1 = _mm_srli_epi32(b1, 23); + diag2 = _mm_xor_si128(diag2, a1); + diag3 = _mm_shuffle_epi32(diag3, 0x93); + diag2 = _mm_xor_si128(diag2, b1); + + a2 = _mm_add_epi32(a2, diag2); + a3 = diag2; + b2 = a2; + a2 = _mm_slli_epi32(a2, 13); + b2 = _mm_srli_epi32(b2, 19); + diag1 = _mm_xor_si128(diag1, a2); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag1 = _mm_xor_si128(diag1, b2); + + a3 = _mm_add_epi32(a3, diag1); + a4 = diag3; + b3 = a3; + a3 = _mm_slli_epi32(a3, 18); + b3 = _mm_srli_epi32(b3, 14); + diag0 = _mm_xor_si128(diag0, a3); + diag1 = _mm_shuffle_epi32(diag1, 0x39); + diag0 = _mm_xor_si128(diag0, b3); + + a4 = _mm_add_epi32(a4, diag0); + a5 = diag0; + b4 = a4; + a4 = _mm_slli_epi32(a4, 7); + b4 = _mm_srli_epi32(b4, 25); + diag1 = _mm_xor_si128(diag1, a4); + + diag1 = _mm_xor_si128(diag1, b4); + + a5 = _mm_add_epi32(a5, diag1); + a6 = diag1; + b5 = a5; + a5 = _mm_slli_epi32(a5, 9); + b5 = _mm_srli_epi32(b5, 23); + diag2 = _mm_xor_si128(diag2, a5); + diag1 = _mm_shuffle_epi32(diag1, 0x93); + diag2 = _mm_xor_si128(diag2, b5); + + a6 = _mm_add_epi32(a6, diag2); + a7 = diag2; + b6 = a6; + a6 = _mm_slli_epi32(a6, 13); + b6 = _mm_srli_epi32(b6, 19); + diag3 = _mm_xor_si128(diag3, a6); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag3 = _mm_xor_si128(diag3, b6); + + a7 = _mm_add_epi32(a7, diag3); + a0 = diag1; + b7 = a7; + a7 = _mm_slli_epi32(a7, 18); + b7 = _mm_srli_epi32(b7, 14); + diag0 = _mm_xor_si128(diag0, a7); + diag3 = _mm_shuffle_epi32(diag3, 0x39); + diag0 = _mm_xor_si128(diag0, b7); + + a0 = _mm_add_epi32(a0, diag0); + a1 = diag0; + b0 = a0; + a0 = _mm_slli_epi32(a0, 7); + b0 = _mm_srli_epi32(b0, 25); + diag3 = _mm_xor_si128(diag3, a0); + + diag3 = _mm_xor_si128(diag3, b0); + + a1 = _mm_add_epi32(a1, diag3); + a2 = diag3; + b1 = a1; + a1 = _mm_slli_epi32(a1, 9); + b1 = _mm_srli_epi32(b1, 23); + diag2 = _mm_xor_si128(diag2, a1); + diag3 = _mm_shuffle_epi32(diag3, 0x93); + diag2 = _mm_xor_si128(diag2, b1); + + a2 = _mm_add_epi32(a2, diag2); + a3 = diag2; + b2 = a2; + a2 = _mm_slli_epi32(a2, 13); + b2 = _mm_srli_epi32(b2, 19); + diag1 = _mm_xor_si128(diag1, a2); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag1 = _mm_xor_si128(diag1, b2); + + a3 = _mm_add_epi32(a3, diag1); + a4 = diag3; + b3 = a3; + a3 = _mm_slli_epi32(a3, 18); + b3 = _mm_srli_epi32(b3, 14); + diag0 = _mm_xor_si128(diag0, a3); + diag1 = _mm_shuffle_epi32(diag1, 0x39); + diag0 = _mm_xor_si128(diag0, b3); + + a4 = _mm_add_epi32(a4, diag0); + a5 = diag0; + b4 = a4; + a4 = _mm_slli_epi32(a4, 7); + b4 = _mm_srli_epi32(b4, 25); + diag1 = _mm_xor_si128(diag1, a4); + + diag1 = _mm_xor_si128(diag1, b4); + + a5 = _mm_add_epi32(a5, diag1); + a6 = diag1; + b5 = a5; + a5 = _mm_slli_epi32(a5, 9); + b5 = _mm_srli_epi32(b5, 23); + diag2 = _mm_xor_si128(diag2, a5); + diag1 = _mm_shuffle_epi32(diag1, 0x93); + diag2 = _mm_xor_si128(diag2, b5); + + a6 = _mm_add_epi32(a6, diag2); + a7 = diag2; + b6 = a6; + a6 = _mm_slli_epi32(a6, 13); + b6 = _mm_srli_epi32(b6, 19); + diag3 = _mm_xor_si128(diag3, a6); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag3 = _mm_xor_si128(diag3, b6); + + a7 = _mm_add_epi32(a7, diag3); + a0 = diag1; + b7 = a7; + a7 = _mm_slli_epi32(a7, 18); + b7 = _mm_srli_epi32(b7, 14); + diag0 = _mm_xor_si128(diag0, a7); + diag3 = _mm_shuffle_epi32(diag3, 0x39); + diag0 = _mm_xor_si128(diag0, b7); + } + + diag0 = _mm_add_epi32(diag0, _mm_loadu_si128((const __m128i *) (x + 0))); + diag1 = _mm_add_epi32(diag1, _mm_loadu_si128((const __m128i *) (x + 4))); + diag2 = _mm_add_epi32(diag2, _mm_loadu_si128((const __m128i *) (x + 8))); + diag3 = _mm_add_epi32(diag3, _mm_loadu_si128((const __m128i *) (x + 12))); + +#define ONEQUAD_SHUFFLE(A, B, C, D) \ + do { \ + uint32_t in##A = _mm_cvtsi128_si32(diag0); \ + uint32_t in##B = _mm_cvtsi128_si32(diag1); \ + uint32_t in##C = _mm_cvtsi128_si32(diag2); \ + uint32_t in##D = _mm_cvtsi128_si32(diag3); \ + diag0 = _mm_shuffle_epi32(diag0, 0x39); \ + diag1 = _mm_shuffle_epi32(diag1, 0x39); \ + diag2 = _mm_shuffle_epi32(diag2, 0x39); \ + diag3 = _mm_shuffle_epi32(diag3, 0x39); \ + *(uint32_t *) (partialblock + (A * 4)) = in##A; \ + *(uint32_t *) (partialblock + (B * 4)) = in##B; \ + *(uint32_t *) (partialblock + (C * 4)) = in##C; \ + *(uint32_t *) (partialblock + (D * 4)) = in##D; \ + } while (0) + +#define ONEQUAD(A, B, C, D) ONEQUAD_SHUFFLE(A, B, C, D) + + ONEQUAD(0, 12, 8, 4); + ONEQUAD(5, 1, 13, 9); + ONEQUAD(10, 6, 2, 14); + ONEQUAD(15, 11, 7, 3); + +#undef ONEQUAD +#undef ONEQUAD_SHUFFLE + + for (i = 0; i < bytes; i++) { + c[i] = m[i] ^ partialblock[i]; + } + + sodium_memzero(partialblock, sizeof partialblock); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u1.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u1.h new file mode 100644 index 0000000..e82521c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u1.h @@ -0,0 +1,207 @@ +while (bytes >= 64) { + __m128i diag0 = _mm_loadu_si128((const __m128i *) (x + 0)); + __m128i diag1 = _mm_loadu_si128((const __m128i *) (x + 4)); + __m128i diag2 = _mm_loadu_si128((const __m128i *) (x + 8)); + __m128i diag3 = _mm_loadu_si128((const __m128i *) (x + 12)); + __m128i a0, a1, a2, a3, a4, a5, a6, a7; + __m128i b0, b1, b2, b3, b4, b5, b6, b7; + + uint32_t in8; + uint32_t in9; + int i; + + a0 = diag1; + for (i = 0; i < ROUNDS; i += 4) { + a0 = _mm_add_epi32(a0, diag0); + a1 = diag0; + b0 = a0; + a0 = _mm_slli_epi32(a0, 7); + b0 = _mm_srli_epi32(b0, 25); + diag3 = _mm_xor_si128(diag3, a0); + + diag3 = _mm_xor_si128(diag3, b0); + + a1 = _mm_add_epi32(a1, diag3); + a2 = diag3; + b1 = a1; + a1 = _mm_slli_epi32(a1, 9); + b1 = _mm_srli_epi32(b1, 23); + diag2 = _mm_xor_si128(diag2, a1); + diag3 = _mm_shuffle_epi32(diag3, 0x93); + diag2 = _mm_xor_si128(diag2, b1); + + a2 = _mm_add_epi32(a2, diag2); + a3 = diag2; + b2 = a2; + a2 = _mm_slli_epi32(a2, 13); + b2 = _mm_srli_epi32(b2, 19); + diag1 = _mm_xor_si128(diag1, a2); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag1 = _mm_xor_si128(diag1, b2); + + a3 = _mm_add_epi32(a3, diag1); + a4 = diag3; + b3 = a3; + a3 = _mm_slli_epi32(a3, 18); + b3 = _mm_srli_epi32(b3, 14); + diag0 = _mm_xor_si128(diag0, a3); + diag1 = _mm_shuffle_epi32(diag1, 0x39); + diag0 = _mm_xor_si128(diag0, b3); + + a4 = _mm_add_epi32(a4, diag0); + a5 = diag0; + b4 = a4; + a4 = _mm_slli_epi32(a4, 7); + b4 = _mm_srli_epi32(b4, 25); + diag1 = _mm_xor_si128(diag1, a4); + + diag1 = _mm_xor_si128(diag1, b4); + + a5 = _mm_add_epi32(a5, diag1); + a6 = diag1; + b5 = a5; + a5 = _mm_slli_epi32(a5, 9); + b5 = _mm_srli_epi32(b5, 23); + diag2 = _mm_xor_si128(diag2, a5); + diag1 = _mm_shuffle_epi32(diag1, 0x93); + diag2 = _mm_xor_si128(diag2, b5); + + a6 = _mm_add_epi32(a6, diag2); + a7 = diag2; + b6 = a6; + a6 = _mm_slli_epi32(a6, 13); + b6 = _mm_srli_epi32(b6, 19); + diag3 = _mm_xor_si128(diag3, a6); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag3 = _mm_xor_si128(diag3, b6); + + a7 = _mm_add_epi32(a7, diag3); + a0 = diag1; + b7 = a7; + a7 = _mm_slli_epi32(a7, 18); + b7 = _mm_srli_epi32(b7, 14); + diag0 = _mm_xor_si128(diag0, a7); + diag3 = _mm_shuffle_epi32(diag3, 0x39); + diag0 = _mm_xor_si128(diag0, b7); + + a0 = _mm_add_epi32(a0, diag0); + a1 = diag0; + b0 = a0; + a0 = _mm_slli_epi32(a0, 7); + b0 = _mm_srli_epi32(b0, 25); + diag3 = _mm_xor_si128(diag3, a0); + + diag3 = _mm_xor_si128(diag3, b0); + + a1 = _mm_add_epi32(a1, diag3); + a2 = diag3; + b1 = a1; + a1 = _mm_slli_epi32(a1, 9); + b1 = _mm_srli_epi32(b1, 23); + diag2 = _mm_xor_si128(diag2, a1); + diag3 = _mm_shuffle_epi32(diag3, 0x93); + diag2 = _mm_xor_si128(diag2, b1); + + a2 = _mm_add_epi32(a2, diag2); + a3 = diag2; + b2 = a2; + a2 = _mm_slli_epi32(a2, 13); + b2 = _mm_srli_epi32(b2, 19); + diag1 = _mm_xor_si128(diag1, a2); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag1 = _mm_xor_si128(diag1, b2); + + a3 = _mm_add_epi32(a3, diag1); + a4 = diag3; + b3 = a3; + a3 = _mm_slli_epi32(a3, 18); + b3 = _mm_srli_epi32(b3, 14); + diag0 = _mm_xor_si128(diag0, a3); + diag1 = _mm_shuffle_epi32(diag1, 0x39); + diag0 = _mm_xor_si128(diag0, b3); + + a4 = _mm_add_epi32(a4, diag0); + a5 = diag0; + b4 = a4; + a4 = _mm_slli_epi32(a4, 7); + b4 = _mm_srli_epi32(b4, 25); + diag1 = _mm_xor_si128(diag1, a4); + + diag1 = _mm_xor_si128(diag1, b4); + + a5 = _mm_add_epi32(a5, diag1); + a6 = diag1; + b5 = a5; + a5 = _mm_slli_epi32(a5, 9); + b5 = _mm_srli_epi32(b5, 23); + diag2 = _mm_xor_si128(diag2, a5); + diag1 = _mm_shuffle_epi32(diag1, 0x93); + diag2 = _mm_xor_si128(diag2, b5); + + a6 = _mm_add_epi32(a6, diag2); + a7 = diag2; + b6 = a6; + a6 = _mm_slli_epi32(a6, 13); + b6 = _mm_srli_epi32(b6, 19); + diag3 = _mm_xor_si128(diag3, a6); + diag2 = _mm_shuffle_epi32(diag2, 0x4e); + diag3 = _mm_xor_si128(diag3, b6); + + a7 = _mm_add_epi32(a7, diag3); + a0 = diag1; + b7 = a7; + a7 = _mm_slli_epi32(a7, 18); + b7 = _mm_srli_epi32(b7, 14); + diag0 = _mm_xor_si128(diag0, a7); + diag3 = _mm_shuffle_epi32(diag3, 0x39); + diag0 = _mm_xor_si128(diag0, b7); + } + + diag0 = _mm_add_epi32(diag0, _mm_loadu_si128((const __m128i *) (x + 0))); + diag1 = _mm_add_epi32(diag1, _mm_loadu_si128((const __m128i *) (x + 4))); + diag2 = _mm_add_epi32(diag2, _mm_loadu_si128((const __m128i *) (x + 8))); + diag3 = _mm_add_epi32(diag3, _mm_loadu_si128((const __m128i *) (x + 12))); + +#define ONEQUAD_SHUFFLE(A, B, C, D) \ + do { \ + uint32_t in##A = _mm_cvtsi128_si32(diag0); \ + uint32_t in##B = _mm_cvtsi128_si32(diag1); \ + uint32_t in##C = _mm_cvtsi128_si32(diag2); \ + uint32_t in##D = _mm_cvtsi128_si32(diag3); \ + diag0 = _mm_shuffle_epi32(diag0, 0x39); \ + diag1 = _mm_shuffle_epi32(diag1, 0x39); \ + diag2 = _mm_shuffle_epi32(diag2, 0x39); \ + diag3 = _mm_shuffle_epi32(diag3, 0x39); \ + in##A ^= *(const uint32_t *) (m + (A * 4)); \ + in##B ^= *(const uint32_t *) (m + (B * 4)); \ + in##C ^= *(const uint32_t *) (m + (C * 4)); \ + in##D ^= *(const uint32_t *) (m + (D * 4)); \ + *(uint32_t *) (c + (A * 4)) = in##A; \ + *(uint32_t *) (c + (B * 4)) = in##B; \ + *(uint32_t *) (c + (C * 4)) = in##C; \ + *(uint32_t *) (c + (D * 4)) = in##D; \ + } while (0) + +#define ONEQUAD(A, B, C, D) ONEQUAD_SHUFFLE(A, B, C, D) + + ONEQUAD(0, 12, 8, 4); + ONEQUAD(5, 1, 13, 9); + ONEQUAD(10, 6, 2, 14); + ONEQUAD(15, 11, 7, 3); + +#undef ONEQUAD +#undef ONEQUAD_SHUFFLE + + in8 = x[8]; + in9 = x[13]; + in8++; + if (in8 == 0) { + in9++; + } + x[8] = in8; + x[13] = in9; + + c += 64; + m += 64; + bytes -= 64; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u4.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u4.h new file mode 100644 index 0000000..474f486 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u4.h @@ -0,0 +1,547 @@ +if (bytes >= 256) { + __m128i y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, + y15; + __m128i z0, z1, z2, z3, z4, z5, z6, z7, z8, z9, z10, z11, z12, z13, z14, + z15; + __m128i orig0, orig1, orig2, orig3, orig4, orig5, orig6, orig7, orig8, + orig9, orig10, orig11, orig12, orig13, orig14, orig15; + + uint32_t in8; + uint32_t in9; + int i; + + /* element broadcast immediate for _mm_shuffle_epi32 are in order: + 0x00, 0x55, 0xaa, 0xff */ + z0 = _mm_loadu_si128((const __m128i *) (x + 0)); + z5 = _mm_shuffle_epi32(z0, 0x55); + z10 = _mm_shuffle_epi32(z0, 0xaa); + z15 = _mm_shuffle_epi32(z0, 0xff); + z0 = _mm_shuffle_epi32(z0, 0x00); + z1 = _mm_loadu_si128((const __m128i *) (x + 4)); + z6 = _mm_shuffle_epi32(z1, 0xaa); + z11 = _mm_shuffle_epi32(z1, 0xff); + z12 = _mm_shuffle_epi32(z1, 0x00); + z1 = _mm_shuffle_epi32(z1, 0x55); + z2 = _mm_loadu_si128((const __m128i *) (x + 8)); + z7 = _mm_shuffle_epi32(z2, 0xff); + z13 = _mm_shuffle_epi32(z2, 0x55); + z2 = _mm_shuffle_epi32(z2, 0xaa); + /* no z8 -> first half of the nonce, will fill later */ + z3 = _mm_loadu_si128((const __m128i *) (x + 12)); + z4 = _mm_shuffle_epi32(z3, 0x00); + z14 = _mm_shuffle_epi32(z3, 0xaa); + z3 = _mm_shuffle_epi32(z3, 0xff); + /* no z9 -> second half of the nonce, will fill later */ + orig0 = z0; + orig1 = z1; + orig2 = z2; + orig3 = z3; + orig4 = z4; + orig5 = z5; + orig6 = z6; + orig7 = z7; + orig10 = z10; + orig11 = z11; + orig12 = z12; + orig13 = z13; + orig14 = z14; + orig15 = z15; + + while (bytes >= 256) { + /* vector implementation for z8 and z9 */ + /* not sure if it helps for only 4 blocks */ + const __m128i addv8 = _mm_set_epi64x(1, 0); + const __m128i addv9 = _mm_set_epi64x(3, 2); + __m128i t8, t9; + uint64_t in89; + + in8 = x[8]; + in9 = x[13]; + in89 = ((uint64_t) in8) | (((uint64_t) in9) << 32); + t8 = _mm_set1_epi64x(in89); + t9 = _mm_set1_epi64x(in89); + + z8 = _mm_add_epi64(addv8, t8); + z9 = _mm_add_epi64(addv9, t9); + + t8 = _mm_unpacklo_epi32(z8, z9); + t9 = _mm_unpackhi_epi32(z8, z9); + + z8 = _mm_unpacklo_epi32(t8, t9); + z9 = _mm_unpackhi_epi32(t8, t9); + + orig8 = z8; + orig9 = z9; + + in89 += 4; + + x[8] = in89 & 0xFFFFFFFF; + x[13] = (in89 >> 32) & 0xFFFFFFFF; + + z5 = orig5; + z10 = orig10; + z15 = orig15; + z14 = orig14; + z3 = orig3; + z6 = orig6; + z11 = orig11; + z1 = orig1; + + z7 = orig7; + z13 = orig13; + z2 = orig2; + z9 = orig9; + z0 = orig0; + z12 = orig12; + z4 = orig4; + z8 = orig8; + + for (i = 0; i < ROUNDS; i += 2) { + /* the inner loop is a direct translation (regexp search/replace) + * from the amd64-xmm6 ASM */ + __m128i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, + r14, r15; + + y4 = z12; + y4 = _mm_add_epi32(y4, z0); + r4 = y4; + y4 = _mm_slli_epi32(y4, 7); + z4 = _mm_xor_si128(z4, y4); + r4 = _mm_srli_epi32(r4, 25); + z4 = _mm_xor_si128(z4, r4); + + y9 = z1; + y9 = _mm_add_epi32(y9, z5); + r9 = y9; + y9 = _mm_slli_epi32(y9, 7); + z9 = _mm_xor_si128(z9, y9); + r9 = _mm_srli_epi32(r9, 25); + z9 = _mm_xor_si128(z9, r9); + + y8 = z0; + y8 = _mm_add_epi32(y8, z4); + r8 = y8; + y8 = _mm_slli_epi32(y8, 9); + z8 = _mm_xor_si128(z8, y8); + r8 = _mm_srli_epi32(r8, 23); + z8 = _mm_xor_si128(z8, r8); + + y13 = z5; + y13 = _mm_add_epi32(y13, z9); + r13 = y13; + y13 = _mm_slli_epi32(y13, 9); + z13 = _mm_xor_si128(z13, y13); + r13 = _mm_srli_epi32(r13, 23); + z13 = _mm_xor_si128(z13, r13); + + y12 = z4; + y12 = _mm_add_epi32(y12, z8); + r12 = y12; + y12 = _mm_slli_epi32(y12, 13); + z12 = _mm_xor_si128(z12, y12); + r12 = _mm_srli_epi32(r12, 19); + z12 = _mm_xor_si128(z12, r12); + + y1 = z9; + y1 = _mm_add_epi32(y1, z13); + r1 = y1; + y1 = _mm_slli_epi32(y1, 13); + z1 = _mm_xor_si128(z1, y1); + r1 = _mm_srli_epi32(r1, 19); + z1 = _mm_xor_si128(z1, r1); + + y0 = z8; + y0 = _mm_add_epi32(y0, z12); + r0 = y0; + y0 = _mm_slli_epi32(y0, 18); + z0 = _mm_xor_si128(z0, y0); + r0 = _mm_srli_epi32(r0, 14); + z0 = _mm_xor_si128(z0, r0); + + y5 = z13; + y5 = _mm_add_epi32(y5, z1); + r5 = y5; + y5 = _mm_slli_epi32(y5, 18); + z5 = _mm_xor_si128(z5, y5); + r5 = _mm_srli_epi32(r5, 14); + z5 = _mm_xor_si128(z5, r5); + + y14 = z6; + y14 = _mm_add_epi32(y14, z10); + r14 = y14; + y14 = _mm_slli_epi32(y14, 7); + z14 = _mm_xor_si128(z14, y14); + r14 = _mm_srli_epi32(r14, 25); + z14 = _mm_xor_si128(z14, r14); + + y3 = z11; + y3 = _mm_add_epi32(y3, z15); + r3 = y3; + y3 = _mm_slli_epi32(y3, 7); + z3 = _mm_xor_si128(z3, y3); + r3 = _mm_srli_epi32(r3, 25); + z3 = _mm_xor_si128(z3, r3); + + y2 = z10; + y2 = _mm_add_epi32(y2, z14); + r2 = y2; + y2 = _mm_slli_epi32(y2, 9); + z2 = _mm_xor_si128(z2, y2); + r2 = _mm_srli_epi32(r2, 23); + z2 = _mm_xor_si128(z2, r2); + + y7 = z15; + y7 = _mm_add_epi32(y7, z3); + r7 = y7; + y7 = _mm_slli_epi32(y7, 9); + z7 = _mm_xor_si128(z7, y7); + r7 = _mm_srli_epi32(r7, 23); + z7 = _mm_xor_si128(z7, r7); + + y6 = z14; + y6 = _mm_add_epi32(y6, z2); + r6 = y6; + y6 = _mm_slli_epi32(y6, 13); + z6 = _mm_xor_si128(z6, y6); + r6 = _mm_srli_epi32(r6, 19); + z6 = _mm_xor_si128(z6, r6); + + y11 = z3; + y11 = _mm_add_epi32(y11, z7); + r11 = y11; + y11 = _mm_slli_epi32(y11, 13); + z11 = _mm_xor_si128(z11, y11); + r11 = _mm_srli_epi32(r11, 19); + z11 = _mm_xor_si128(z11, r11); + + y10 = z2; + y10 = _mm_add_epi32(y10, z6); + r10 = y10; + y10 = _mm_slli_epi32(y10, 18); + z10 = _mm_xor_si128(z10, y10); + r10 = _mm_srli_epi32(r10, 14); + z10 = _mm_xor_si128(z10, r10); + + y1 = z3; + y1 = _mm_add_epi32(y1, z0); + r1 = y1; + y1 = _mm_slli_epi32(y1, 7); + z1 = _mm_xor_si128(z1, y1); + r1 = _mm_srli_epi32(r1, 25); + z1 = _mm_xor_si128(z1, r1); + + y15 = z7; + y15 = _mm_add_epi32(y15, z11); + r15 = y15; + y15 = _mm_slli_epi32(y15, 18); + z15 = _mm_xor_si128(z15, y15); + r15 = _mm_srli_epi32(r15, 14); + z15 = _mm_xor_si128(z15, r15); + + y6 = z4; + y6 = _mm_add_epi32(y6, z5); + r6 = y6; + y6 = _mm_slli_epi32(y6, 7); + z6 = _mm_xor_si128(z6, y6); + r6 = _mm_srli_epi32(r6, 25); + z6 = _mm_xor_si128(z6, r6); + + y2 = z0; + y2 = _mm_add_epi32(y2, z1); + r2 = y2; + y2 = _mm_slli_epi32(y2, 9); + z2 = _mm_xor_si128(z2, y2); + r2 = _mm_srli_epi32(r2, 23); + z2 = _mm_xor_si128(z2, r2); + + y7 = z5; + y7 = _mm_add_epi32(y7, z6); + r7 = y7; + y7 = _mm_slli_epi32(y7, 9); + z7 = _mm_xor_si128(z7, y7); + r7 = _mm_srli_epi32(r7, 23); + z7 = _mm_xor_si128(z7, r7); + + y3 = z1; + y3 = _mm_add_epi32(y3, z2); + r3 = y3; + y3 = _mm_slli_epi32(y3, 13); + z3 = _mm_xor_si128(z3, y3); + r3 = _mm_srli_epi32(r3, 19); + z3 = _mm_xor_si128(z3, r3); + + y4 = z6; + y4 = _mm_add_epi32(y4, z7); + r4 = y4; + y4 = _mm_slli_epi32(y4, 13); + z4 = _mm_xor_si128(z4, y4); + r4 = _mm_srli_epi32(r4, 19); + z4 = _mm_xor_si128(z4, r4); + + y0 = z2; + y0 = _mm_add_epi32(y0, z3); + r0 = y0; + y0 = _mm_slli_epi32(y0, 18); + z0 = _mm_xor_si128(z0, y0); + r0 = _mm_srli_epi32(r0, 14); + z0 = _mm_xor_si128(z0, r0); + + y5 = z7; + y5 = _mm_add_epi32(y5, z4); + r5 = y5; + y5 = _mm_slli_epi32(y5, 18); + z5 = _mm_xor_si128(z5, y5); + r5 = _mm_srli_epi32(r5, 14); + z5 = _mm_xor_si128(z5, r5); + + y11 = z9; + y11 = _mm_add_epi32(y11, z10); + r11 = y11; + y11 = _mm_slli_epi32(y11, 7); + z11 = _mm_xor_si128(z11, y11); + r11 = _mm_srli_epi32(r11, 25); + z11 = _mm_xor_si128(z11, r11); + + y12 = z14; + y12 = _mm_add_epi32(y12, z15); + r12 = y12; + y12 = _mm_slli_epi32(y12, 7); + z12 = _mm_xor_si128(z12, y12); + r12 = _mm_srli_epi32(r12, 25); + z12 = _mm_xor_si128(z12, r12); + + y8 = z10; + y8 = _mm_add_epi32(y8, z11); + r8 = y8; + y8 = _mm_slli_epi32(y8, 9); + z8 = _mm_xor_si128(z8, y8); + r8 = _mm_srli_epi32(r8, 23); + z8 = _mm_xor_si128(z8, r8); + + y13 = z15; + y13 = _mm_add_epi32(y13, z12); + r13 = y13; + y13 = _mm_slli_epi32(y13, 9); + z13 = _mm_xor_si128(z13, y13); + r13 = _mm_srli_epi32(r13, 23); + z13 = _mm_xor_si128(z13, r13); + + y9 = z11; + y9 = _mm_add_epi32(y9, z8); + r9 = y9; + y9 = _mm_slli_epi32(y9, 13); + z9 = _mm_xor_si128(z9, y9); + r9 = _mm_srli_epi32(r9, 19); + z9 = _mm_xor_si128(z9, r9); + + y14 = z12; + y14 = _mm_add_epi32(y14, z13); + r14 = y14; + y14 = _mm_slli_epi32(y14, 13); + z14 = _mm_xor_si128(z14, y14); + r14 = _mm_srli_epi32(r14, 19); + z14 = _mm_xor_si128(z14, r14); + + y10 = z8; + y10 = _mm_add_epi32(y10, z9); + r10 = y10; + y10 = _mm_slli_epi32(y10, 18); + z10 = _mm_xor_si128(z10, y10); + r10 = _mm_srli_epi32(r10, 14); + z10 = _mm_xor_si128(z10, r10); + + y15 = z13; + y15 = _mm_add_epi32(y15, z14); + r15 = y15; + y15 = _mm_slli_epi32(y15, 18); + z15 = _mm_xor_si128(z15, y15); + r15 = _mm_srli_epi32(r15, 14); + z15 = _mm_xor_si128(z15, r15); + } + +/* store data ; this macro replicates the original amd64-xmm6 code */ +#define ONEQUAD_SHUFFLE(A, B, C, D) \ + z##A = _mm_add_epi32(z##A, orig##A); \ + z##B = _mm_add_epi32(z##B, orig##B); \ + z##C = _mm_add_epi32(z##C, orig##C); \ + z##D = _mm_add_epi32(z##D, orig##D); \ + in##A = _mm_cvtsi128_si32(z##A); \ + in##B = _mm_cvtsi128_si32(z##B); \ + in##C = _mm_cvtsi128_si32(z##C); \ + in##D = _mm_cvtsi128_si32(z##D); \ + z##A = _mm_shuffle_epi32(z##A, 0x39); \ + z##B = _mm_shuffle_epi32(z##B, 0x39); \ + z##C = _mm_shuffle_epi32(z##C, 0x39); \ + z##D = _mm_shuffle_epi32(z##D, 0x39); \ + \ + in##A ^= *(uint32_t *) (m + 0); \ + in##B ^= *(uint32_t *) (m + 4); \ + in##C ^= *(uint32_t *) (m + 8); \ + in##D ^= *(uint32_t *) (m + 12); \ + \ + *(uint32_t *) (c + 0) = in##A; \ + *(uint32_t *) (c + 4) = in##B; \ + *(uint32_t *) (c + 8) = in##C; \ + *(uint32_t *) (c + 12) = in##D; \ + \ + in##A = _mm_cvtsi128_si32(z##A); \ + in##B = _mm_cvtsi128_si32(z##B); \ + in##C = _mm_cvtsi128_si32(z##C); \ + in##D = _mm_cvtsi128_si32(z##D); \ + z##A = _mm_shuffle_epi32(z##A, 0x39); \ + z##B = _mm_shuffle_epi32(z##B, 0x39); \ + z##C = _mm_shuffle_epi32(z##C, 0x39); \ + z##D = _mm_shuffle_epi32(z##D, 0x39); \ + \ + in##A ^= *(uint32_t *) (m + 64); \ + in##B ^= *(uint32_t *) (m + 68); \ + in##C ^= *(uint32_t *) (m + 72); \ + in##D ^= *(uint32_t *) (m + 76); \ + *(uint32_t *) (c + 64) = in##A; \ + *(uint32_t *) (c + 68) = in##B; \ + *(uint32_t *) (c + 72) = in##C; \ + *(uint32_t *) (c + 76) = in##D; \ + \ + in##A = _mm_cvtsi128_si32(z##A); \ + in##B = _mm_cvtsi128_si32(z##B); \ + in##C = _mm_cvtsi128_si32(z##C); \ + in##D = _mm_cvtsi128_si32(z##D); \ + z##A = _mm_shuffle_epi32(z##A, 0x39); \ + z##B = _mm_shuffle_epi32(z##B, 0x39); \ + z##C = _mm_shuffle_epi32(z##C, 0x39); \ + z##D = _mm_shuffle_epi32(z##D, 0x39); \ + \ + in##A ^= *(uint32_t *) (m + 128); \ + in##B ^= *(uint32_t *) (m + 132); \ + in##C ^= *(uint32_t *) (m + 136); \ + in##D ^= *(uint32_t *) (m + 140); \ + *(uint32_t *) (c + 128) = in##A; \ + *(uint32_t *) (c + 132) = in##B; \ + *(uint32_t *) (c + 136) = in##C; \ + *(uint32_t *) (c + 140) = in##D; \ + \ + in##A = _mm_cvtsi128_si32(z##A); \ + in##B = _mm_cvtsi128_si32(z##B); \ + in##C = _mm_cvtsi128_si32(z##C); \ + in##D = _mm_cvtsi128_si32(z##D); \ + \ + in##A ^= *(uint32_t *) (m + 192); \ + in##B ^= *(uint32_t *) (m + 196); \ + in##C ^= *(uint32_t *) (m + 200); \ + in##D ^= *(uint32_t *) (m + 204); \ + *(uint32_t *) (c + 192) = in##A; \ + *(uint32_t *) (c + 196) = in##B; \ + *(uint32_t *) (c + 200) = in##C; \ + *(uint32_t *) (c + 204) = in##D + +/* store data ; this macro replaces shuffle+mov by a direct extract; not much + * difference */ +#define ONEQUAD_EXTRACT(A, B, C, D) \ + z##A = _mm_add_epi32(z##A, orig##A); \ + z##B = _mm_add_epi32(z##B, orig##B); \ + z##C = _mm_add_epi32(z##C, orig##C); \ + z##D = _mm_add_epi32(z##D, orig##D); \ + in##A = _mm_cvtsi128_si32(z##A); \ + in##B = _mm_cvtsi128_si32(z##B); \ + in##C = _mm_cvtsi128_si32(z##C); \ + in##D = _mm_cvtsi128_si32(z##D); \ + in##A ^= *(uint32_t *) (m + 0); \ + in##B ^= *(uint32_t *) (m + 4); \ + in##C ^= *(uint32_t *) (m + 8); \ + in##D ^= *(uint32_t *) (m + 12); \ + *(uint32_t *) (c + 0) = in##A; \ + *(uint32_t *) (c + 4) = in##B; \ + *(uint32_t *) (c + 8) = in##C; \ + *(uint32_t *) (c + 12) = in##D; \ + \ + in##A = _mm_extract_epi32(z##A, 1); \ + in##B = _mm_extract_epi32(z##B, 1); \ + in##C = _mm_extract_epi32(z##C, 1); \ + in##D = _mm_extract_epi32(z##D, 1); \ + \ + in##A ^= *(uint32_t *) (m + 64); \ + in##B ^= *(uint32_t *) (m + 68); \ + in##C ^= *(uint32_t *) (m + 72); \ + in##D ^= *(uint32_t *) (m + 76); \ + *(uint32_t *) (c + 64) = in##A; \ + *(uint32_t *) (c + 68) = in##B; \ + *(uint32_t *) (c + 72) = in##C; \ + *(uint32_t *) (c + 76) = in##D; \ + \ + in##A = _mm_extract_epi32(z##A, 2); \ + in##B = _mm_extract_epi32(z##B, 2); \ + in##C = _mm_extract_epi32(z##C, 2); \ + in##D = _mm_extract_epi32(z##D, 2); \ + \ + in##A ^= *(uint32_t *) (m + 128); \ + in##B ^= *(uint32_t *) (m + 132); \ + in##C ^= *(uint32_t *) (m + 136); \ + in##D ^= *(uint32_t *) (m + 140); \ + *(uint32_t *) (c + 128) = in##A; \ + *(uint32_t *) (c + 132) = in##B; \ + *(uint32_t *) (c + 136) = in##C; \ + *(uint32_t *) (c + 140) = in##D; \ + \ + in##A = _mm_extract_epi32(z##A, 3); \ + in##B = _mm_extract_epi32(z##B, 3); \ + in##C = _mm_extract_epi32(z##C, 3); \ + in##D = _mm_extract_epi32(z##D, 3); \ + \ + in##A ^= *(uint32_t *) (m + 192); \ + in##B ^= *(uint32_t *) (m + 196); \ + in##C ^= *(uint32_t *) (m + 200); \ + in##D ^= *(uint32_t *) (m + 204); \ + *(uint32_t *) (c + 192) = in##A; \ + *(uint32_t *) (c + 196) = in##B; \ + *(uint32_t *) (c + 200) = in##C; \ + *(uint32_t *) (c + 204) = in##D + +/* store data ; this macro first transpose data in-registers, and then store + * them in memory. much faster with icc. */ +#define ONEQUAD_TRANSPOSE(A, B, C, D) \ + z##A = _mm_add_epi32(z##A, orig##A); \ + z##B = _mm_add_epi32(z##B, orig##B); \ + z##C = _mm_add_epi32(z##C, orig##C); \ + z##D = _mm_add_epi32(z##D, orig##D); \ + y##A = _mm_unpacklo_epi32(z##A, z##B); \ + y##B = _mm_unpacklo_epi32(z##C, z##D); \ + y##C = _mm_unpackhi_epi32(z##A, z##B); \ + y##D = _mm_unpackhi_epi32(z##C, z##D); \ + z##A = _mm_unpacklo_epi64(y##A, y##B); \ + z##B = _mm_unpackhi_epi64(y##A, y##B); \ + z##C = _mm_unpacklo_epi64(y##C, y##D); \ + z##D = _mm_unpackhi_epi64(y##C, y##D); \ + y##A = _mm_xor_si128(z##A, _mm_loadu_si128((const __m128i *) (m + 0))); \ + _mm_storeu_si128((__m128i *) (c + 0), y##A); \ + y##B = _mm_xor_si128(z##B, _mm_loadu_si128((const __m128i *) (m + 64))); \ + _mm_storeu_si128((__m128i *) (c + 64), y##B); \ + y##C = _mm_xor_si128(z##C, _mm_loadu_si128((const __m128i *) (m + 128))); \ + _mm_storeu_si128((__m128i *) (c + 128), y##C); \ + y##D = _mm_xor_si128(z##D, _mm_loadu_si128((const __m128i *) (m + 192))); \ + _mm_storeu_si128((__m128i *) (c + 192), y##D) + +#define ONEQUAD(A, B, C, D) ONEQUAD_TRANSPOSE(A, B, C, D) + + ONEQUAD(0, 1, 2, 3); + m += 16; + c += 16; + ONEQUAD(4, 5, 6, 7); + m += 16; + c += 16; + ONEQUAD(8, 9, 10, 11); + m += 16; + c += 16; + ONEQUAD(12, 13, 14, 15); + m -= 48; + c -= 48; + +#undef ONEQUAD +#undef ONEQUAD_TRANSPOSE +#undef ONEQUAD_EXTRACT +#undef ONEQUAD_SHUFFLE + + bytes -= 256; + c += 256; + m += 256; + } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u8.h b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u8.h new file mode 100644 index 0000000..581b22c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u8.h @@ -0,0 +1,477 @@ +if (bytes >= 512) { + __m256i y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, + y15; + + /* the naive way seems as fast (if not a bit faster) than the vector way */ + __m256i z0 = _mm256_set1_epi32(x[0]); + __m256i z5 = _mm256_set1_epi32(x[1]); + __m256i z10 = _mm256_set1_epi32(x[2]); + __m256i z15 = _mm256_set1_epi32(x[3]); + __m256i z12 = _mm256_set1_epi32(x[4]); + __m256i z1 = _mm256_set1_epi32(x[5]); + __m256i z6 = _mm256_set1_epi32(x[6]); + __m256i z11 = _mm256_set1_epi32(x[7]); + __m256i z8; /* useless */ + __m256i z13 = _mm256_set1_epi32(x[9]); + __m256i z2 = _mm256_set1_epi32(x[10]); + __m256i z7 = _mm256_set1_epi32(x[11]); + __m256i z4 = _mm256_set1_epi32(x[12]); + __m256i z9; /* useless */ + __m256i z14 = _mm256_set1_epi32(x[14]); + __m256i z3 = _mm256_set1_epi32(x[15]); + + __m256i orig0 = z0; + __m256i orig1 = z1; + __m256i orig2 = z2; + __m256i orig3 = z3; + __m256i orig4 = z4; + __m256i orig5 = z5; + __m256i orig6 = z6; + __m256i orig7 = z7; + __m256i orig8; + __m256i orig9; + __m256i orig10 = z10; + __m256i orig11 = z11; + __m256i orig12 = z12; + __m256i orig13 = z13; + __m256i orig14 = z14; + __m256i orig15 = z15; + + uint32_t in8; + uint32_t in9; + int i; + + while (bytes >= 512) { + /* vector implementation for z8 and z9 */ + /* faster than the naive version for 8 blocks */ + const __m256i addv8 = _mm256_set_epi64x(3, 2, 1, 0); + const __m256i addv9 = _mm256_set_epi64x(7, 6, 5, 4); + const __m256i permute = _mm256_set_epi32(7, 6, 3, 2, 5, 4, 1, 0); + + __m256i t8, t9; + uint64_t in89; + + in8 = x[8]; + in9 = x[13]; /* see arrays above for the address translation */ + in89 = ((uint64_t) in8) | (((uint64_t) in9) << 32); + + z8 = z9 = _mm256_broadcastq_epi64(_mm_cvtsi64_si128(in89)); + + t8 = _mm256_add_epi64(addv8, z8); + t9 = _mm256_add_epi64(addv9, z9); + + z8 = _mm256_unpacklo_epi32(t8, t9); + z9 = _mm256_unpackhi_epi32(t8, t9); + + t8 = _mm256_unpacklo_epi32(z8, z9); + t9 = _mm256_unpackhi_epi32(z8, z9); + + /* required because unpack* are intra-lane */ + z8 = _mm256_permutevar8x32_epi32(t8, permute); + z9 = _mm256_permutevar8x32_epi32(t9, permute); + + orig8 = z8; + orig9 = z9; + + in89 += 8; + + x[8] = in89 & 0xFFFFFFFF; + x[13] = (in89 >> 32) & 0xFFFFFFFF; + + z5 = orig5; + z10 = orig10; + z15 = orig15; + z14 = orig14; + z3 = orig3; + z6 = orig6; + z11 = orig11; + z1 = orig1; + + z7 = orig7; + z13 = orig13; + z2 = orig2; + z9 = orig9; + z0 = orig0; + z12 = orig12; + z4 = orig4; + z8 = orig8; + + for (i = 0; i < ROUNDS; i += 2) { + /* the inner loop is a direct translation (regexp search/replace) + * from the amd64-xmm6 ASM */ + __m256i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, + r14, r15; + + y4 = z12; + y4 = _mm256_add_epi32(y4, z0); + r4 = y4; + y4 = _mm256_slli_epi32(y4, 7); + z4 = _mm256_xor_si256(z4, y4); + r4 = _mm256_srli_epi32(r4, 25); + z4 = _mm256_xor_si256(z4, r4); + + y9 = z1; + y9 = _mm256_add_epi32(y9, z5); + r9 = y9; + y9 = _mm256_slli_epi32(y9, 7); + z9 = _mm256_xor_si256(z9, y9); + r9 = _mm256_srli_epi32(r9, 25); + z9 = _mm256_xor_si256(z9, r9); + + y8 = z0; + y8 = _mm256_add_epi32(y8, z4); + r8 = y8; + y8 = _mm256_slli_epi32(y8, 9); + z8 = _mm256_xor_si256(z8, y8); + r8 = _mm256_srli_epi32(r8, 23); + z8 = _mm256_xor_si256(z8, r8); + + y13 = z5; + y13 = _mm256_add_epi32(y13, z9); + r13 = y13; + y13 = _mm256_slli_epi32(y13, 9); + z13 = _mm256_xor_si256(z13, y13); + r13 = _mm256_srli_epi32(r13, 23); + z13 = _mm256_xor_si256(z13, r13); + + y12 = z4; + y12 = _mm256_add_epi32(y12, z8); + r12 = y12; + y12 = _mm256_slli_epi32(y12, 13); + z12 = _mm256_xor_si256(z12, y12); + r12 = _mm256_srli_epi32(r12, 19); + z12 = _mm256_xor_si256(z12, r12); + + y1 = z9; + y1 = _mm256_add_epi32(y1, z13); + r1 = y1; + y1 = _mm256_slli_epi32(y1, 13); + z1 = _mm256_xor_si256(z1, y1); + r1 = _mm256_srli_epi32(r1, 19); + z1 = _mm256_xor_si256(z1, r1); + + y0 = z8; + y0 = _mm256_add_epi32(y0, z12); + r0 = y0; + y0 = _mm256_slli_epi32(y0, 18); + z0 = _mm256_xor_si256(z0, y0); + r0 = _mm256_srli_epi32(r0, 14); + z0 = _mm256_xor_si256(z0, r0); + + y5 = z13; + y5 = _mm256_add_epi32(y5, z1); + r5 = y5; + y5 = _mm256_slli_epi32(y5, 18); + z5 = _mm256_xor_si256(z5, y5); + r5 = _mm256_srli_epi32(r5, 14); + z5 = _mm256_xor_si256(z5, r5); + + y14 = z6; + y14 = _mm256_add_epi32(y14, z10); + r14 = y14; + y14 = _mm256_slli_epi32(y14, 7); + z14 = _mm256_xor_si256(z14, y14); + r14 = _mm256_srli_epi32(r14, 25); + z14 = _mm256_xor_si256(z14, r14); + + y3 = z11; + y3 = _mm256_add_epi32(y3, z15); + r3 = y3; + y3 = _mm256_slli_epi32(y3, 7); + z3 = _mm256_xor_si256(z3, y3); + r3 = _mm256_srli_epi32(r3, 25); + z3 = _mm256_xor_si256(z3, r3); + + y2 = z10; + y2 = _mm256_add_epi32(y2, z14); + r2 = y2; + y2 = _mm256_slli_epi32(y2, 9); + z2 = _mm256_xor_si256(z2, y2); + r2 = _mm256_srli_epi32(r2, 23); + z2 = _mm256_xor_si256(z2, r2); + + y7 = z15; + y7 = _mm256_add_epi32(y7, z3); + r7 = y7; + y7 = _mm256_slli_epi32(y7, 9); + z7 = _mm256_xor_si256(z7, y7); + r7 = _mm256_srli_epi32(r7, 23); + z7 = _mm256_xor_si256(z7, r7); + + y6 = z14; + y6 = _mm256_add_epi32(y6, z2); + r6 = y6; + y6 = _mm256_slli_epi32(y6, 13); + z6 = _mm256_xor_si256(z6, y6); + r6 = _mm256_srli_epi32(r6, 19); + z6 = _mm256_xor_si256(z6, r6); + + y11 = z3; + y11 = _mm256_add_epi32(y11, z7); + r11 = y11; + y11 = _mm256_slli_epi32(y11, 13); + z11 = _mm256_xor_si256(z11, y11); + r11 = _mm256_srli_epi32(r11, 19); + z11 = _mm256_xor_si256(z11, r11); + + y10 = z2; + y10 = _mm256_add_epi32(y10, z6); + r10 = y10; + y10 = _mm256_slli_epi32(y10, 18); + z10 = _mm256_xor_si256(z10, y10); + r10 = _mm256_srli_epi32(r10, 14); + z10 = _mm256_xor_si256(z10, r10); + + y1 = z3; + y1 = _mm256_add_epi32(y1, z0); + r1 = y1; + y1 = _mm256_slli_epi32(y1, 7); + z1 = _mm256_xor_si256(z1, y1); + r1 = _mm256_srli_epi32(r1, 25); + z1 = _mm256_xor_si256(z1, r1); + + y15 = z7; + y15 = _mm256_add_epi32(y15, z11); + r15 = y15; + y15 = _mm256_slli_epi32(y15, 18); + z15 = _mm256_xor_si256(z15, y15); + r15 = _mm256_srli_epi32(r15, 14); + z15 = _mm256_xor_si256(z15, r15); + + y6 = z4; + y6 = _mm256_add_epi32(y6, z5); + r6 = y6; + y6 = _mm256_slli_epi32(y6, 7); + z6 = _mm256_xor_si256(z6, y6); + r6 = _mm256_srli_epi32(r6, 25); + z6 = _mm256_xor_si256(z6, r6); + + y2 = z0; + y2 = _mm256_add_epi32(y2, z1); + r2 = y2; + y2 = _mm256_slli_epi32(y2, 9); + z2 = _mm256_xor_si256(z2, y2); + r2 = _mm256_srli_epi32(r2, 23); + z2 = _mm256_xor_si256(z2, r2); + + y7 = z5; + y7 = _mm256_add_epi32(y7, z6); + r7 = y7; + y7 = _mm256_slli_epi32(y7, 9); + z7 = _mm256_xor_si256(z7, y7); + r7 = _mm256_srli_epi32(r7, 23); + z7 = _mm256_xor_si256(z7, r7); + + y3 = z1; + y3 = _mm256_add_epi32(y3, z2); + r3 = y3; + y3 = _mm256_slli_epi32(y3, 13); + z3 = _mm256_xor_si256(z3, y3); + r3 = _mm256_srli_epi32(r3, 19); + z3 = _mm256_xor_si256(z3, r3); + + y4 = z6; + y4 = _mm256_add_epi32(y4, z7); + r4 = y4; + y4 = _mm256_slli_epi32(y4, 13); + z4 = _mm256_xor_si256(z4, y4); + r4 = _mm256_srli_epi32(r4, 19); + z4 = _mm256_xor_si256(z4, r4); + + y0 = z2; + y0 = _mm256_add_epi32(y0, z3); + r0 = y0; + y0 = _mm256_slli_epi32(y0, 18); + z0 = _mm256_xor_si256(z0, y0); + r0 = _mm256_srli_epi32(r0, 14); + z0 = _mm256_xor_si256(z0, r0); + + y5 = z7; + y5 = _mm256_add_epi32(y5, z4); + r5 = y5; + y5 = _mm256_slli_epi32(y5, 18); + z5 = _mm256_xor_si256(z5, y5); + r5 = _mm256_srli_epi32(r5, 14); + z5 = _mm256_xor_si256(z5, r5); + + y11 = z9; + y11 = _mm256_add_epi32(y11, z10); + r11 = y11; + y11 = _mm256_slli_epi32(y11, 7); + z11 = _mm256_xor_si256(z11, y11); + r11 = _mm256_srli_epi32(r11, 25); + z11 = _mm256_xor_si256(z11, r11); + + y12 = z14; + y12 = _mm256_add_epi32(y12, z15); + r12 = y12; + y12 = _mm256_slli_epi32(y12, 7); + z12 = _mm256_xor_si256(z12, y12); + r12 = _mm256_srli_epi32(r12, 25); + z12 = _mm256_xor_si256(z12, r12); + + y8 = z10; + y8 = _mm256_add_epi32(y8, z11); + r8 = y8; + y8 = _mm256_slli_epi32(y8, 9); + z8 = _mm256_xor_si256(z8, y8); + r8 = _mm256_srli_epi32(r8, 23); + z8 = _mm256_xor_si256(z8, r8); + + y13 = z15; + y13 = _mm256_add_epi32(y13, z12); + r13 = y13; + y13 = _mm256_slli_epi32(y13, 9); + z13 = _mm256_xor_si256(z13, y13); + r13 = _mm256_srli_epi32(r13, 23); + z13 = _mm256_xor_si256(z13, r13); + + y9 = z11; + y9 = _mm256_add_epi32(y9, z8); + r9 = y9; + y9 = _mm256_slli_epi32(y9, 13); + z9 = _mm256_xor_si256(z9, y9); + r9 = _mm256_srli_epi32(r9, 19); + z9 = _mm256_xor_si256(z9, r9); + + y14 = z12; + y14 = _mm256_add_epi32(y14, z13); + r14 = y14; + y14 = _mm256_slli_epi32(y14, 13); + z14 = _mm256_xor_si256(z14, y14); + r14 = _mm256_srli_epi32(r14, 19); + z14 = _mm256_xor_si256(z14, r14); + + y10 = z8; + y10 = _mm256_add_epi32(y10, z9); + r10 = y10; + y10 = _mm256_slli_epi32(y10, 18); + z10 = _mm256_xor_si256(z10, y10); + r10 = _mm256_srli_epi32(r10, 14); + z10 = _mm256_xor_si256(z10, r10); + + y15 = z13; + y15 = _mm256_add_epi32(y15, z14); + r15 = y15; + y15 = _mm256_slli_epi32(y15, 18); + z15 = _mm256_xor_si256(z15, y15); + r15 = _mm256_srli_epi32(r15, 14); + z15 = _mm256_xor_si256(z15, r15); + } + +/* store data ; this macro first transpose data in-registers, and then store + * them in memory. much faster with icc. */ +#define ONEQUAD_TRANSPOSE(A, B, C, D) \ + { \ + __m128i t0, t1, t2, t3; \ + z##A = _mm256_add_epi32(z##A, orig##A); \ + z##B = _mm256_add_epi32(z##B, orig##B); \ + z##C = _mm256_add_epi32(z##C, orig##C); \ + z##D = _mm256_add_epi32(z##D, orig##D); \ + y##A = _mm256_unpacklo_epi32(z##A, z##B); \ + y##B = _mm256_unpacklo_epi32(z##C, z##D); \ + y##C = _mm256_unpackhi_epi32(z##A, z##B); \ + y##D = _mm256_unpackhi_epi32(z##C, z##D); \ + z##A = _mm256_unpacklo_epi64(y##A, y##B); \ + z##B = _mm256_unpackhi_epi64(y##A, y##B); \ + z##C = _mm256_unpacklo_epi64(y##C, y##D); \ + z##D = _mm256_unpackhi_epi64(y##C, y##D); \ + t0 = _mm_xor_si128(_mm256_extracti128_si256(z##A, 0), \ + _mm_loadu_si128((const __m128i*) (m + 0))); \ + _mm_storeu_si128((__m128i*) (c + 0), t0); \ + t1 = _mm_xor_si128(_mm256_extracti128_si256(z##B, 0), \ + _mm_loadu_si128((const __m128i*) (m + 64))); \ + _mm_storeu_si128((__m128i*) (c + 64), t1); \ + t2 = _mm_xor_si128(_mm256_extracti128_si256(z##C, 0), \ + _mm_loadu_si128((const __m128i*) (m + 128))); \ + _mm_storeu_si128((__m128i*) (c + 128), t2); \ + t3 = _mm_xor_si128(_mm256_extracti128_si256(z##D, 0), \ + _mm_loadu_si128((const __m128i*) (m + 192))); \ + _mm_storeu_si128((__m128i*) (c + 192), t3); \ + t0 = _mm_xor_si128(_mm256_extracti128_si256(z##A, 1), \ + _mm_loadu_si128((const __m128i*) (m + 256))); \ + _mm_storeu_si128((__m128i*) (c + 256), t0); \ + t1 = _mm_xor_si128(_mm256_extracti128_si256(z##B, 1), \ + _mm_loadu_si128((const __m128i*) (m + 320))); \ + _mm_storeu_si128((__m128i*) (c + 320), t1); \ + t2 = _mm_xor_si128(_mm256_extracti128_si256(z##C, 1), \ + _mm_loadu_si128((const __m128i*) (m + 384))); \ + _mm_storeu_si128((__m128i*) (c + 384), t2); \ + t3 = _mm_xor_si128(_mm256_extracti128_si256(z##D, 1), \ + _mm_loadu_si128((const __m128i*) (m + 448))); \ + _mm_storeu_si128((__m128i*) (c + 448), t3); \ + } + +#define ONEQUAD(A, B, C, D) ONEQUAD_TRANSPOSE(A, B, C, D) + +#define ONEQUAD_UNPCK(A, B, C, D) \ + { \ + z##A = _mm256_add_epi32(z##A, orig##A); \ + z##B = _mm256_add_epi32(z##B, orig##B); \ + z##C = _mm256_add_epi32(z##C, orig##C); \ + z##D = _mm256_add_epi32(z##D, orig##D); \ + y##A = _mm256_unpacklo_epi32(z##A, z##B); \ + y##B = _mm256_unpacklo_epi32(z##C, z##D); \ + y##C = _mm256_unpackhi_epi32(z##A, z##B); \ + y##D = _mm256_unpackhi_epi32(z##C, z##D); \ + z##A = _mm256_unpacklo_epi64(y##A, y##B); \ + z##B = _mm256_unpackhi_epi64(y##A, y##B); \ + z##C = _mm256_unpacklo_epi64(y##C, y##D); \ + z##D = _mm256_unpackhi_epi64(y##C, y##D); \ + } + +#define ONEOCTO(A, B, C, D, A2, B2, C2, D2) \ + { \ + ONEQUAD_UNPCK(A, B, C, D); \ + ONEQUAD_UNPCK(A2, B2, C2, D2); \ + y##A = _mm256_permute2x128_si256(z##A, z##A2, 0x20); \ + y##A2 = _mm256_permute2x128_si256(z##A, z##A2, 0x31); \ + y##B = _mm256_permute2x128_si256(z##B, z##B2, 0x20); \ + y##B2 = _mm256_permute2x128_si256(z##B, z##B2, 0x31); \ + y##C = _mm256_permute2x128_si256(z##C, z##C2, 0x20); \ + y##C2 = _mm256_permute2x128_si256(z##C, z##C2, 0x31); \ + y##D = _mm256_permute2x128_si256(z##D, z##D2, 0x20); \ + y##D2 = _mm256_permute2x128_si256(z##D, z##D2, 0x31); \ + y##A = _mm256_xor_si256(y##A, \ + _mm256_loadu_si256((const __m256i*) (m + 0))); \ + y##B = _mm256_xor_si256( \ + y##B, _mm256_loadu_si256((const __m256i*) (m + 64))); \ + y##C = _mm256_xor_si256( \ + y##C, _mm256_loadu_si256((const __m256i*) (m + 128))); \ + y##D = _mm256_xor_si256( \ + y##D, _mm256_loadu_si256((const __m256i*) (m + 192))); \ + y##A2 = _mm256_xor_si256( \ + y##A2, _mm256_loadu_si256((const __m256i*) (m + 256))); \ + y##B2 = _mm256_xor_si256( \ + y##B2, _mm256_loadu_si256((const __m256i*) (m + 320))); \ + y##C2 = _mm256_xor_si256( \ + y##C2, _mm256_loadu_si256((const __m256i*) (m + 384))); \ + y##D2 = _mm256_xor_si256( \ + y##D2, _mm256_loadu_si256((const __m256i*) (m + 448))); \ + _mm256_storeu_si256((__m256i*) (c + 0), y##A); \ + _mm256_storeu_si256((__m256i*) (c + 64), y##B); \ + _mm256_storeu_si256((__m256i*) (c + 128), y##C); \ + _mm256_storeu_si256((__m256i*) (c + 192), y##D); \ + _mm256_storeu_si256((__m256i*) (c + 256), y##A2); \ + _mm256_storeu_si256((__m256i*) (c + 320), y##B2); \ + _mm256_storeu_si256((__m256i*) (c + 384), y##C2); \ + _mm256_storeu_si256((__m256i*) (c + 448), y##D2); \ + } + + ONEOCTO(0, 1, 2, 3, 4, 5, 6, 7); + m += 32; + c += 32; + ONEOCTO(8, 9, 10, 11, 12, 13, 14, 15); + m -= 32; + c -= 32; + +#undef ONEQUAD +#undef ONEQUAD_TRANSPOSE +#undef ONEQUAD_UNPCK +#undef ONEOCTO + + bytes -= 512; + c += 512; + m += 512; + } +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c new file mode 100644 index 0000000..bfdfeed --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c @@ -0,0 +1,106 @@ +/* +version 20140420 +D. J. Bernstein +Public domain. +*/ + +#include + +#include "crypto_core_salsa2012.h" +#include "crypto_stream_salsa2012.h" +#include "utils.h" + +int +crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned char kcopy[32]; + unsigned int i; + unsigned int u; + + if (!clen) { + return 0; + } + for (i = 0; i < 32; ++i) { + kcopy[i] = k[i]; + } + for (i = 0; i < 8; ++i) { + in[i] = n[i]; + } + for (i = 8; i < 16; ++i) { + in[i] = 0; + } + while (clen >= 64) { + crypto_core_salsa2012(c, in, kcopy, NULL); + u = 1; + for (i = 8; i < 16; ++i) { + u += (unsigned int)in[i]; + in[i] = u; + u >>= 8; + } + clen -= 64; + c += 64; + } + if (clen) { + crypto_core_salsa2012(block, in, kcopy, NULL); + for (i = 0; i < (unsigned int)clen; ++i) { + c[i] = block[i]; + } + } + sodium_memzero(block, sizeof block); + sodium_memzero(kcopy, sizeof kcopy); + + return 0; +} + +int +crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned char kcopy[32]; + unsigned int i; + unsigned int u; + + if (!mlen) { + return 0; + } + for (i = 0; i < 32; ++i) { + kcopy[i] = k[i]; + } + for (i = 0; i < 8; ++i) { + in[i] = n[i]; + } + for (i = 8; i < 16; ++i) { + in[i] = 0; + } + while (mlen >= 64) { + crypto_core_salsa2012(block, in, kcopy, NULL); + for (i = 0; i < 64; ++i) { + c[i] = m[i] ^ block[i]; + } + u = 1; + for (i = 8; i < 16; ++i) { + u += (unsigned int)in[i]; + in[i] = u; + u >>= 8; + } + mlen -= 64; + c += 64; + m += 64; + } + if (mlen) { + crypto_core_salsa2012(block, in, kcopy, NULL); + for (i = 0; i < (unsigned int)mlen; ++i) { + c[i] = m[i] ^ block[i]; + } + } + sodium_memzero(block, sizeof block); + sodium_memzero(kcopy, sizeof kcopy); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c new file mode 100644 index 0000000..d0cc0f6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c @@ -0,0 +1,26 @@ +#include "crypto_stream_salsa2012.h" +#include "randombytes.h" + +size_t +crypto_stream_salsa2012_keybytes(void) +{ + return crypto_stream_salsa2012_KEYBYTES; +} + +size_t +crypto_stream_salsa2012_noncebytes(void) +{ + return crypto_stream_salsa2012_NONCEBYTES; +} + +size_t +crypto_stream_salsa2012_messagebytes_max(void) +{ + return crypto_stream_salsa2012_MESSAGEBYTES_MAX; +} + +void +crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_salsa2012_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c new file mode 100644 index 0000000..7ec0c4e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c @@ -0,0 +1,106 @@ +/* +version 20140420 +D. J. Bernstein +Public domain. +*/ + +#include + +#include "crypto_core_salsa208.h" +#include "crypto_stream_salsa208.h" +#include "utils.h" + +int +crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned char kcopy[32]; + unsigned int i; + unsigned int u; + + if (!clen) { + return 0; + } + for (i = 0; i < 32; ++i) { + kcopy[i] = k[i]; + } + for (i = 0; i < 8; ++i) { + in[i] = n[i]; + } + for (i = 8; i < 16; ++i) { + in[i] = 0; + } + while (clen >= 64) { + crypto_core_salsa208(c, in, kcopy, NULL); + u = 1; + for (i = 8; i < 16; ++i) { + u += (unsigned int)in[i]; + in[i] = u; + u >>= 8; + } + clen -= 64; + c += 64; + } + if (clen) { + crypto_core_salsa208(block, in, kcopy, NULL); + for (i = 0; i < (unsigned int)clen; ++i) { + c[i] = block[i]; + } + } + sodium_memzero(block, sizeof block); + sodium_memzero(kcopy, sizeof kcopy); + + return 0; +} + +int +crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + unsigned char in[16]; + unsigned char block[64]; + unsigned char kcopy[32]; + unsigned int i; + unsigned int u; + + if (!mlen) { + return 0; + } + for (i = 0; i < 32; ++i) { + kcopy[i] = k[i]; + } + for (i = 0; i < 8; ++i) { + in[i] = n[i]; + } + for (i = 8; i < 16; ++i) { + in[i] = 0; + } + while (mlen >= 64) { + crypto_core_salsa208(block, in, kcopy, NULL); + for (i = 0; i < 64; ++i) { + c[i] = m[i] ^ block[i]; + } + u = 1; + for (i = 8; i < 16; ++i) { + u += (unsigned int)in[i]; + in[i] = u; + u >>= 8; + } + mlen -= 64; + c += 64; + m += 64; + } + if (mlen) { + crypto_core_salsa208(block, in, kcopy, NULL); + for (i = 0; i < (unsigned int)mlen; ++i) { + c[i] = m[i] ^ block[i]; + } + } + sodium_memzero(block, sizeof block); + sodium_memzero(kcopy, sizeof kcopy); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208.c new file mode 100644 index 0000000..b79bda5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208.c @@ -0,0 +1,26 @@ +#include "crypto_stream_salsa208.h" +#include "randombytes.h" + +size_t +crypto_stream_salsa208_keybytes(void) +{ + return crypto_stream_salsa208_KEYBYTES; +} + +size_t +crypto_stream_salsa208_noncebytes(void) +{ + return crypto_stream_salsa208_NONCEBYTES; +} + +size_t +crypto_stream_salsa208_messagebytes_max(void) +{ + return crypto_stream_salsa208_MESSAGEBYTES_MAX; +} + +void +crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_salsa208_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c new file mode 100644 index 0000000..8b1bc09 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c @@ -0,0 +1,69 @@ + +#include + +#include "crypto_core_hchacha20.h" +#include "crypto_stream_chacha20.h" +#include "crypto_stream_xchacha20.h" +#include "private/common.h" +#include "randombytes.h" + +size_t +crypto_stream_xchacha20_keybytes(void) +{ + return crypto_stream_xchacha20_KEYBYTES; +} + +size_t +crypto_stream_xchacha20_noncebytes(void) +{ + return crypto_stream_xchacha20_NONCEBYTES; +} + +size_t +crypto_stream_xchacha20_messagebytes_max(void) +{ + return crypto_stream_xchacha20_MESSAGEBYTES_MAX; +} + +int +crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES]; + + crypto_core_hchacha20(k2, n, k, NULL); + COMPILER_ASSERT(crypto_stream_chacha20_KEYBYTES <= sizeof k2); + COMPILER_ASSERT(crypto_stream_chacha20_NONCEBYTES == + crypto_stream_xchacha20_NONCEBYTES - + crypto_core_hchacha20_INPUTBYTES); + + return crypto_stream_chacha20(c, clen, n + crypto_core_hchacha20_INPUTBYTES, + k2); +} + +int +crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + uint64_t ic, const unsigned char *k) +{ + unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES]; + + crypto_core_hchacha20(k2, n, k, NULL); + return crypto_stream_chacha20_xor_ic( + c, m, mlen, n + crypto_core_hchacha20_INPUTBYTES, ic, k2); +} + +int +crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_stream_xchacha20_xor_ic(c, m, mlen, n, 0U, k); +} + +void +crypto_stream_xchacha20_keygen( + unsigned char k[crypto_stream_xchacha20_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_xchacha20_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c new file mode 100644 index 0000000..dc831a9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c @@ -0,0 +1,66 @@ +#include "crypto_core_hsalsa20.h" +#include "crypto_stream_salsa20.h" +#include "crypto_stream_xsalsa20.h" +#include "randombytes.h" +#include "utils.h" + +int +crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) +{ + unsigned char subkey[32]; + int ret; + + crypto_core_hsalsa20(subkey, n, k, NULL); + ret = crypto_stream_salsa20(c, clen, n + 16, subkey); + sodium_memzero(subkey, sizeof subkey); + + return ret; +} + +int +crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + uint64_t ic, const unsigned char *k) +{ + unsigned char subkey[32]; + int ret; + + crypto_core_hsalsa20(subkey, n, k, NULL); + ret = crypto_stream_salsa20_xor_ic(c, m, mlen, n + 16, ic, subkey); + sodium_memzero(subkey, sizeof subkey); + + return ret; +} + +int +crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) +{ + return crypto_stream_xsalsa20_xor_ic(c, m, mlen, n, 0ULL, k); +} + +size_t +crypto_stream_xsalsa20_keybytes(void) +{ + return crypto_stream_xsalsa20_KEYBYTES; +} + +size_t +crypto_stream_xsalsa20_noncebytes(void) +{ + return crypto_stream_xsalsa20_NONCEBYTES; +} + +size_t +crypto_stream_xsalsa20_messagebytes_max(void) +{ + return crypto_stream_xsalsa20_MESSAGEBYTES_MAX; +} + +void +crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) +{ + randombytes_buf(k, crypto_stream_xsalsa20_KEYBYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/crypto_verify/verify.c b/components/espressif__libsodium/libsodium/src/libsodium/crypto_verify/verify.c new file mode 100644 index 0000000..ffebf22 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/crypto_verify/verify.c @@ -0,0 +1,98 @@ + +#include +#include + +#include "crypto_verify_16.h" +#include "crypto_verify_32.h" +#include "crypto_verify_64.h" + +size_t +crypto_verify_16_bytes(void) +{ + return crypto_verify_16_BYTES; +} + +size_t +crypto_verify_32_bytes(void) +{ + return crypto_verify_32_BYTES; +} + +size_t +crypto_verify_64_bytes(void) +{ + return crypto_verify_64_BYTES; +} + +#if defined(HAVE_EMMINTRIN_H) && defined(__SSE2__) + +# ifdef __GNUC__ +# pragma GCC target("sse2") +# endif +# include + +static inline int +crypto_verify_n(const unsigned char *x_, const unsigned char *y_, + const int n) +{ + const __m128i zero = _mm_setzero_si128(); + volatile __m128i v1, v2, z; + volatile int m; + int i; + + const volatile __m128i *volatile x = + (const volatile __m128i *volatile) (const void *) x_; + const volatile __m128i *volatile y = + (const volatile __m128i *volatile) (const void *) y_; + v1 = _mm_loadu_si128((const __m128i *) &x[0]); + v2 = _mm_loadu_si128((const __m128i *) &y[0]); + z = _mm_xor_si128(v1, v2); + for (i = 1; i < n / 16; i++) { + v1 = _mm_loadu_si128((const __m128i *) &x[i]); + v2 = _mm_loadu_si128((const __m128i *) &y[i]); + z = _mm_or_si128(z, _mm_xor_si128(v1, v2)); + } + m = _mm_movemask_epi8(_mm_cmpeq_epi32(z, zero)); + v1 = zero; v2 = zero; z = zero; + + return (int) (((uint32_t) m + 1U) >> 16) - 1; +} + +#else + +static inline int +crypto_verify_n(const unsigned char *x_, const unsigned char *y_, + const int n) +{ + const volatile unsigned char *volatile x = + (const volatile unsigned char *volatile) x_; + const volatile unsigned char *volatile y = + (const volatile unsigned char *volatile) y_; + volatile uint_fast16_t d = 0U; + int i; + + for (i = 0; i < n; i++) { + d |= x[i] ^ y[i]; + } + return (1 & ((d - 1) >> 8)) - 1; +} + +#endif + +int +crypto_verify_16(const unsigned char *x, const unsigned char *y) +{ + return crypto_verify_n(x, y, crypto_verify_16_BYTES); +} + +int +crypto_verify_32(const unsigned char *x, const unsigned char *y) +{ + return crypto_verify_n(x, y, crypto_verify_32_BYTES); +} + +int +crypto_verify_64(const unsigned char *x, const unsigned char *y) +{ + return crypto_verify_n(x, y, crypto_verify_64_BYTES); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/Makefile.am b/components/espressif__libsodium/libsodium/src/libsodium/include/Makefile.am new file mode 100644 index 0000000..3146ec8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/Makefile.am @@ -0,0 +1,76 @@ + +SODIUM_EXPORT = \ + sodium.h \ + sodium/core.h \ + sodium/crypto_aead_aes256gcm.h \ + sodium/crypto_aead_aegis128l.h \ + sodium/crypto_aead_aegis256.h \ + sodium/crypto_aead_chacha20poly1305.h \ + sodium/crypto_aead_xchacha20poly1305.h \ + sodium/crypto_auth.h \ + sodium/crypto_auth_hmacsha256.h \ + sodium/crypto_auth_hmacsha512.h \ + sodium/crypto_auth_hmacsha512256.h \ + sodium/crypto_box.h \ + sodium/crypto_box_curve25519xchacha20poly1305.h \ + sodium/crypto_box_curve25519xsalsa20poly1305.h \ + sodium/crypto_core_ed25519.h \ + sodium/crypto_core_ristretto255.h \ + sodium/crypto_core_hchacha20.h \ + sodium/crypto_core_hsalsa20.h \ + sodium/crypto_core_salsa20.h \ + sodium/crypto_core_salsa2012.h \ + sodium/crypto_core_salsa208.h \ + sodium/crypto_generichash.h \ + sodium/crypto_generichash_blake2b.h \ + sodium/crypto_hash.h \ + sodium/crypto_hash_sha256.h \ + sodium/crypto_hash_sha512.h \ + sodium/crypto_kdf.h \ + sodium/crypto_kdf_hkdf_sha256.h \ + sodium/crypto_kdf_hkdf_sha512.h \ + sodium/crypto_kdf_blake2b.h \ + sodium/crypto_kx.h \ + sodium/crypto_onetimeauth.h \ + sodium/crypto_onetimeauth_poly1305.h \ + sodium/crypto_pwhash.h \ + sodium/crypto_pwhash_argon2i.h \ + sodium/crypto_pwhash_argon2id.h \ + sodium/crypto_pwhash_scryptsalsa208sha256.h \ + sodium/crypto_scalarmult.h \ + sodium/crypto_scalarmult_curve25519.h \ + sodium/crypto_scalarmult_ed25519.h \ + sodium/crypto_scalarmult_ristretto255.h \ + sodium/crypto_secretbox.h \ + sodium/crypto_secretbox_xchacha20poly1305.h \ + sodium/crypto_secretbox_xsalsa20poly1305.h \ + sodium/crypto_secretstream_xchacha20poly1305.h \ + sodium/crypto_shorthash.h \ + sodium/crypto_shorthash_siphash24.h \ + sodium/crypto_sign.h \ + sodium/crypto_sign_ed25519.h \ + sodium/crypto_sign_edwards25519sha512batch.h \ + sodium/crypto_stream.h \ + sodium/crypto_stream_chacha20.h \ + sodium/crypto_stream_salsa20.h \ + sodium/crypto_stream_salsa2012.h \ + sodium/crypto_stream_salsa208.h \ + sodium/crypto_stream_xchacha20.h \ + sodium/crypto_stream_xsalsa20.h \ + sodium/crypto_verify_16.h \ + sodium/crypto_verify_32.h \ + sodium/crypto_verify_64.h \ + sodium/export.h \ + sodium/randombytes.h \ + sodium/randombytes_internal_random.h \ + sodium/randombytes_sysrandom.h \ + sodium/runtime.h \ + sodium/utils.h + +EXTRA_SRC = $(SODIUM_EXPORT) \ + sodium/version.h.in + +nobase_include_HEADERS = $(SODIUM_EXPORT) + +nobase_nodist_include_HEADERS = \ + sodium/version.h diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium.h new file mode 100644 index 0000000..86b7a4d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium.h @@ -0,0 +1,75 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aegis128l.h" +#include "sodium/crypto_aead_aegis256.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_hkdf_sha256.h" +#include "sodium/crypto_kdf_hkdf_sha512.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kdf_hkdf_sha256.h" +#include "sodium/crypto_kdf_hkdf_sha512.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +#include "sodium/crypto_box_curve25519xchacha20poly1305.h" +#include "sodium/crypto_core_ed25519.h" +#include "sodium/crypto_core_ristretto255.h" +#include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +#include "sodium/crypto_scalarmult_ed25519.h" +#include "sodium/crypto_scalarmult_ristretto255.h" +#include "sodium/crypto_secretbox_xchacha20poly1305.h" +#include "sodium/crypto_stream_salsa2012.h" +#include "sodium/crypto_stream_salsa208.h" +#include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/core.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/core.h new file mode 100644 index 0000000..dd088d2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis128l.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis128l.h new file mode 100644 index 0000000..0ad019f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis128l.h @@ -0,0 +1,92 @@ +#ifndef crypto_aead_aegis128l_H +#define crypto_aead_aegis128l_H + +#include + +#include "export.h" + +#ifdef __cplusplus +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wlong-long" +#endif +extern "C" { +#endif + +#define crypto_aead_aegis128l_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aegis128l_keybytes(void); + +#define crypto_aead_aegis128l_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aegis128l_nsecbytes(void); + +#define crypto_aead_aegis128l_NPUBBYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aegis128l_npubbytes(void); + +#define crypto_aead_aegis128l_ABYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aegis128l_abytes(void); + +#define crypto_aead_aegis128l_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aegis128l_ABYTES, (1ULL << 61) - 1) +SODIUM_EXPORT +size_t crypto_aead_aegis128l_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_aegis128l_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) __attribute__((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aegis128l_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) __attribute__((warn_unused_result)) +__attribute__((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aegis128l_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aegis128l_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__((warn_unused_result)) __attribute__((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aegis128l_keygen(unsigned char k[crypto_aead_aegis128l_KEYBYTES]) + __attribute__((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis256.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis256.h new file mode 100644 index 0000000..26bd18a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis256.h @@ -0,0 +1,92 @@ +#ifndef crypto_aead_aegis256_H +#define crypto_aead_aegis256_H + +#include + +#include "export.h" + +#ifdef __cplusplus +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wlong-long" +#endif +extern "C" { +#endif + +#define crypto_aead_aegis256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aegis256_keybytes(void); + +#define crypto_aead_aegis256_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aegis256_nsecbytes(void); + +#define crypto_aead_aegis256_NPUBBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aegis256_npubbytes(void); + +#define crypto_aead_aegis256_ABYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aegis256_abytes(void); + +#define crypto_aead_aegis256_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aegis256_ABYTES, (1ULL << 61) - 1) +SODIUM_EXPORT +size_t crypto_aead_aegis256_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_aegis256_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) __attribute__((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aegis256_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) __attribute__((warn_unused_result)) +__attribute__((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aegis256_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aegis256_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__((warn_unused_result)) __attribute__((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aegis256_keygen(unsigned char k[crypto_aead_aegis256_KEYBYTES]) + __attribute__((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 0000000..9baeb3f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 0000000..5d671df --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 0000000..6643b0c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth.h new file mode 100644 index 0000000..540aee0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 0000000..3da864c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 0000000..d992cb8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 0000000..3fb5263 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box.h new file mode 100644 index 0000000..e060dd2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 0000000..26a3d31 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 0000000..e733f49 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ed25519.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ed25519.h new file mode 100644 index 0000000..dcc46a6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)) __attribute__ ((deprecated)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hchacha20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 0000000..ece141b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 0000000..4bf7a48 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ristretto255.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 0000000..f2820e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h new file mode 100644 index 0000000..bd79fd9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 0000000..0595759 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h new file mode 100644 index 0000000..d2f216a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash.h new file mode 100644 index 0000000..d897e5d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 0000000..ae3b52f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,122 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#ifdef __IBMC__ +# pragma pack(1) +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#ifdef __IBMC__ +# pragma pack(pop) +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash.h new file mode 100644 index 0000000..767d548 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperability, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h new file mode 100644 index 0000000..c47982a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperability, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h new file mode 100644 index 0000000..5b690fb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperability, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf.h new file mode 100644 index 0000000..ac2fc61 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_blake2b.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 0000000..489c7c2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha256.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha256.h new file mode 100644 index 0000000..e7e7f4d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha256.h @@ -0,0 +1,74 @@ +#ifndef crypto_kdf_hkdf_sha256_H +#define crypto_kdf_hkdf_sha256_H + +#include +#include +#include + +#include "crypto_kdf.h" +#include "crypto_auth_hmacsha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_hkdf_sha256_KEYBYTES crypto_auth_hmacsha256_BYTES +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha256_keybytes(void); + +#define crypto_kdf_hkdf_sha256_BYTES_MIN 0U +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha256_bytes_min(void); + +#define crypto_kdf_hkdf_sha256_BYTES_MAX (0xff * crypto_auth_hmacsha256_BYTES) +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha256_bytes_max(void); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha256_extract(unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES], + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len) + __attribute__ ((nonnull(4))); + +SODIUM_EXPORT +void crypto_kdf_hkdf_sha256_keygen(unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha256_expand(unsigned char *out, size_t out_len, + const char *ctx, size_t ctx_len, + const unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]) + __attribute__ ((nonnull(1))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_kdf_hkdf_sha256_state { + crypto_auth_hmacsha256_state st; +} crypto_kdf_hkdf_sha256_state; + +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha256_statebytes(void); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha256_extract_init(crypto_kdf_hkdf_sha256_state *state, + const unsigned char *salt, size_t salt_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha256_extract_update(crypto_kdf_hkdf_sha256_state *state, + const unsigned char *ikm, size_t ikm_len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha256_extract_final(crypto_kdf_hkdf_sha256_state *state, + unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha512.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha512.h new file mode 100644 index 0000000..0ed205d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha512.h @@ -0,0 +1,75 @@ +#ifndef crypto_kdf_hkdf_sha512_H +#define crypto_kdf_hkdf_sha512_H + +#include +#include +#include + +#include "crypto_kdf.h" +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_hkdf_sha512_KEYBYTES crypto_auth_hmacsha512_BYTES +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha512_keybytes(void); + +#define crypto_kdf_hkdf_sha512_BYTES_MIN 0U +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha512_bytes_min(void); + +#define crypto_kdf_hkdf_sha512_BYTES_MAX (0xff * crypto_auth_hmacsha512_BYTES) +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha512_bytes_max(void); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha512_extract(unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES], + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_kdf_hkdf_sha512_keygen(unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha512_expand(unsigned char *out, size_t out_len, + const char *ctx, size_t ctx_len, + const unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES]) + __attribute__ ((nonnull(1))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_kdf_hkdf_sha512_state { + crypto_auth_hmacsha512_state st; +} crypto_kdf_hkdf_sha512_state; + +SODIUM_EXPORT +size_t crypto_kdf_hkdf_sha512_statebytes(void); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha512_extract_init(crypto_kdf_hkdf_sha512_state *state, + const unsigned char *salt, size_t salt_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha512_extract_update(crypto_kdf_hkdf_sha512_state *state, + const unsigned char *ikm, size_t ikm_len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kdf_hkdf_sha512_extract_final(crypto_kdf_hkdf_sha512_state *state, + unsigned char prk[crypto_kdf_hkdf_sha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kx.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kx.h new file mode 100644 index 0000000..347132c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h new file mode 100644 index 0000000..7cd7b07 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 0000000..f3e34d8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash.h new file mode 100644 index 0000000..40e7ceb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char *str, + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char *str, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 0000000..63abdf4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char * str, + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char * str, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2id.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 0000000..98bc83e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char * str, + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char * str, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 0000000..8956dfb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char * str, + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char * str, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h new file mode 100644 index 0000000..1c68585 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 0000000..60e9d0c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ed25519.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 0000000..2dfa4d7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ristretto255.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 0000000..40a45cc --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox.h new file mode 100644 index 0000000..1d3709d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 0000000..6ec674e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 0000000..be0874c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretstream_xchacha20poly1305.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 0000000..b22e4e9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash.h new file mode 100644 index 0000000..fecaa88 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 0000000..1e6f72a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign.h new file mode 100644 index 0000000..f5fafb1 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 0000000..0fdac42 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 0000000..eed158a --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream.h new file mode 100644 index 0000000..88dab5f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 0000000..4088975 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 0000000..45b3b3e --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 0000000..6c5d303 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 0000000..d574f30 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xchacha20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 0000000..c4002db --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 0000000..20034e3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_16.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_16.h new file mode 100644 index 0000000..7b9c807 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_32.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_32.h new file mode 100644 index 0000000..9b0f452 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_64.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_64.h new file mode 100644 index 0000000..c83b730 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/export.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/export.h new file mode 100644 index 0000000..a0074fc --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/asm_cet.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/asm_cet.h new file mode 100644 index 0000000..4428c97 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/asm_cet.h @@ -0,0 +1,11 @@ +#ifndef asm_cet_H +#define asm_cet_H 1 + +#if HAVE_CET_H +# include +#endif +#ifndef _CET_ENDBR +# define _CET_ENDBR +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/chacha20_ietf_ext.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/chacha20_ietf_ext.h new file mode 100644 index 0000000..2c80b96 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/chacha20_ietf_ext.h @@ -0,0 +1,16 @@ +#ifndef chacha20_ietf_ext_H +#define chacha20_ietf_ext_H + +#include + +/* The ietf_ext variant allows the internal counter to overflow into the IV */ + +int crypto_stream_chacha20_ietf_ext(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k); + +int crypto_stream_chacha20_ietf_ext_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k); +#endif + diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/common.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/common.h new file mode 100644 index 0000000..74529bb --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/common.h @@ -0,0 +1,282 @@ +#ifndef common_H +#define common_H 1 + +#if !defined(_MSC_VER) && !defined(DEV_MODE) && 0 +# warning *** This is unstable, untested, development code. +# warning It might not compile. It might not work as expected. +# warning It might be totally insecure. +# warning Do not use this except if you are planning to contribute code. +# warning Use releases available at https://download.libsodium.org/libsodium/releases/ instead. +# warning Alternatively, use the "stable" branch in the git repository. +#endif + +#if !defined(_MSC_VER) && (!defined(CONFIGURED) || CONFIGURED != 1) +# warning *** The library is being compiled using an undocumented method. +# warning This is not supported. It has not been tested, it might not +# warning work as expected, and performance is likely to be suboptimal. +#endif + +#include +#include +#include + +#define COMPILER_ASSERT(X) (void) sizeof(char[(X) ? 1 : -1]) + +#ifdef HAVE_TI_MODE +# if defined(__SIZEOF_INT128__) +typedef unsigned __int128 uint128_t; +# else +typedef unsigned uint128_t __attribute__((mode(TI))); +# endif +#endif + +#define ROTL32(X, B) rotl32((X), (B)) +static inline uint32_t +rotl32(const uint32_t x, const int b) +{ + return (x << b) | (x >> (32 - b)); +} + +#define ROTL64(X, B) rotl64((X), (B)) +static inline uint64_t +rotl64(const uint64_t x, const int b) +{ + return (x << b) | (x >> (64 - b)); +} + +#define ROTR32(X, B) rotr32((X), (B)) +static inline uint32_t +rotr32(const uint32_t x, const int b) +{ + return (x >> b) | (x << (32 - b)); +} + +#define ROTR64(X, B) rotr64((X), (B)) +static inline uint64_t +rotr64(const uint64_t x, const int b) +{ + return (x >> b) | (x << (64 - b)); +} + +#define LOAD64_LE(SRC) load64_le(SRC) +static inline uint64_t +load64_le(const uint8_t src[8]) +{ +#ifdef NATIVE_LITTLE_ENDIAN + uint64_t w; + memcpy(&w, src, sizeof w); + return w; +#else + uint64_t w = (uint64_t) src[0]; + w |= (uint64_t) src[1] << 8; + w |= (uint64_t) src[2] << 16; + w |= (uint64_t) src[3] << 24; + w |= (uint64_t) src[4] << 32; + w |= (uint64_t) src[5] << 40; + w |= (uint64_t) src[6] << 48; + w |= (uint64_t) src[7] << 56; + return w; +#endif +} + +#define STORE64_LE(DST, W) store64_le((DST), (W)) +static inline void +store64_le(uint8_t dst[8], uint64_t w) +{ +#ifdef NATIVE_LITTLE_ENDIAN + memcpy(dst, &w, sizeof w); +#else + dst[0] = (uint8_t) w; w >>= 8; + dst[1] = (uint8_t) w; w >>= 8; + dst[2] = (uint8_t) w; w >>= 8; + dst[3] = (uint8_t) w; w >>= 8; + dst[4] = (uint8_t) w; w >>= 8; + dst[5] = (uint8_t) w; w >>= 8; + dst[6] = (uint8_t) w; w >>= 8; + dst[7] = (uint8_t) w; +#endif +} + +#define LOAD32_LE(SRC) load32_le(SRC) +static inline uint32_t +load32_le(const uint8_t src[4]) +{ +#ifdef NATIVE_LITTLE_ENDIAN + uint32_t w; + memcpy(&w, src, sizeof w); + return w; +#else + uint32_t w = (uint32_t) src[0]; + w |= (uint32_t) src[1] << 8; + w |= (uint32_t) src[2] << 16; + w |= (uint32_t) src[3] << 24; + return w; +#endif +} + +#define STORE32_LE(DST, W) store32_le((DST), (W)) +static inline void +store32_le(uint8_t dst[4], uint32_t w) +{ +#ifdef NATIVE_LITTLE_ENDIAN + memcpy(dst, &w, sizeof w); +#else + dst[0] = (uint8_t) w; w >>= 8; + dst[1] = (uint8_t) w; w >>= 8; + dst[2] = (uint8_t) w; w >>= 8; + dst[3] = (uint8_t) w; +#endif +} + +/* ----- */ + +#define LOAD64_BE(SRC) load64_be(SRC) +static inline uint64_t +load64_be(const uint8_t src[8]) +{ +#ifdef NATIVE_BIG_ENDIAN + uint64_t w; + memcpy(&w, src, sizeof w); + return w; +#else + uint64_t w = (uint64_t) src[7]; + w |= (uint64_t) src[6] << 8; + w |= (uint64_t) src[5] << 16; + w |= (uint64_t) src[4] << 24; + w |= (uint64_t) src[3] << 32; + w |= (uint64_t) src[2] << 40; + w |= (uint64_t) src[1] << 48; + w |= (uint64_t) src[0] << 56; + return w; +#endif +} + +#define STORE64_BE(DST, W) store64_be((DST), (W)) +static inline void +store64_be(uint8_t dst[8], uint64_t w) +{ +#ifdef NATIVE_BIG_ENDIAN + memcpy(dst, &w, sizeof w); +#else + dst[7] = (uint8_t) w; w >>= 8; + dst[6] = (uint8_t) w; w >>= 8; + dst[5] = (uint8_t) w; w >>= 8; + dst[4] = (uint8_t) w; w >>= 8; + dst[3] = (uint8_t) w; w >>= 8; + dst[2] = (uint8_t) w; w >>= 8; + dst[1] = (uint8_t) w; w >>= 8; + dst[0] = (uint8_t) w; +#endif +} + +#define LOAD32_BE(SRC) load32_be(SRC) +static inline uint32_t +load32_be(const uint8_t src[4]) +{ +#ifdef NATIVE_BIG_ENDIAN + uint32_t w; + memcpy(&w, src, sizeof w); + return w; +#else + uint32_t w = (uint32_t) src[3]; + w |= (uint32_t) src[2] << 8; + w |= (uint32_t) src[1] << 16; + w |= (uint32_t) src[0] << 24; + return w; +#endif +} + +#define STORE32_BE(DST, W) store32_be((DST), (W)) +static inline void +store32_be(uint8_t dst[4], uint32_t w) +{ +#ifdef NATIVE_BIG_ENDIAN + memcpy(dst, &w, sizeof w); +#else + dst[3] = (uint8_t) w; w >>= 8; + dst[2] = (uint8_t) w; w >>= 8; + dst[1] = (uint8_t) w; w >>= 8; + dst[0] = (uint8_t) w; +#endif +} + +#define XOR_BUF(OUT, IN, N) xor_buf((OUT), (IN), (N)) +static inline void +xor_buf(unsigned char *out, const unsigned char *in, size_t n) +{ + size_t i; + + for (i = 0; i < n; i++) { + out[i] ^= in[i]; + } +} + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#ifdef _MSC_VER + +# if defined(_M_X64) || defined(_M_AMD64) || defined(_M_IX86) +# include + +# define HAVE_INTRIN_H 1 +# define HAVE_MMINTRIN_H 1 +# define HAVE_EMMINTRIN_H 1 +# define HAVE_PMMINTRIN_H 1 +# define HAVE_TMMINTRIN_H 1 +# define HAVE_SMMINTRIN_H 1 +# define HAVE_AVXINTRIN_H 1 +# if _MSC_VER >= 1600 +# define HAVE_WMMINTRIN_H 1 +# endif +# if _MSC_VER >= 1700 && defined(_M_X64) +# define HAVE_AVX2INTRIN_H 1 +# endif +# if _MSC_VER >= 1910 && defined(_M_X64) +# define HAVE_AVX512FINTRIN_H 1 +# endif + +# elif defined(_M_ARM64) + +# ifndef __ARM_NEON +# define __ARM_NEON 1 +# endif +# define HAVE_ARMCRYPTO 1 + +# endif /* _MSC_VER */ + +#elif defined(HAVE_INTRIN_H) +# include +#endif + +#ifdef HAVE_LIBCTGRIND +extern void ct_poison (const void *, size_t); +extern void ct_unpoison(const void *, size_t); +# define POISON(X, L) ct_poison((X), (L)) +# define UNPOISON(X, L) ct_unpoison((X), (L)) +#else +# define POISON(X, L) (void) 0 +# define UNPOISON(X, L) (void) 0 +#endif + +#ifdef HAVE_GCC_MEMORY_FENCES +# define ACQUIRE_FENCE __atomic_thread_fence(__ATOMIC_ACQUIRE) +#elif defined(HAVE_C11_MEMORY_FENCES) +# define ACQUIRE_FENCE atomic_thread_fence(memory_order_acquire) +#else +# define ACQUIRE_FENCE (void) 0 +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h new file mode 100644 index 0000000..3f4c45c --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h @@ -0,0 +1,142 @@ +#ifndef ed25519_ref10_H +#define ed25519_ref10_H + +#include +#include + +/* + fe means field element. + Here the field is \Z/(2^255-19). + */ + +#ifdef HAVE_TI_MODE +typedef uint64_t fe25519[5]; +#else +typedef int32_t fe25519[10]; +#endif + +void fe25519_invert(fe25519 out, const fe25519 z); +void fe25519_frombytes(fe25519 h, const unsigned char *s); +void fe25519_tobytes(unsigned char *s, const fe25519 h); + +#ifdef HAVE_TI_MODE +# include "ed25519_ref10_fe_51.h" +#else +# include "ed25519_ref10_fe_25_5.h" +#endif + + +/* + ge means group element. + + Here the group is the set of pairs (x,y) of field elements + satisfying -x^2 + y^2 = 1 + d x^2y^2 + where d = -121665/121666. + + Representations: + ge25519_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z + ge25519_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT + ge25519_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T + ge25519_precomp (Duif): (y+x,y-x,2dxy) + */ + +typedef struct { + fe25519 X; + fe25519 Y; + fe25519 Z; +} ge25519_p2; + +typedef struct { + fe25519 X; + fe25519 Y; + fe25519 Z; + fe25519 T; +} ge25519_p3; + +typedef struct { + fe25519 X; + fe25519 Y; + fe25519 Z; + fe25519 T; +} ge25519_p1p1; + +typedef struct { + fe25519 yplusx; + fe25519 yminusx; + fe25519 xy2d; +} ge25519_precomp; + +typedef struct { + fe25519 YplusX; + fe25519 YminusX; + fe25519 Z; + fe25519 T2d; +} ge25519_cached; + +void ge25519_tobytes(unsigned char *s, const ge25519_p2 *h); + +void ge25519_p3_tobytes(unsigned char *s, const ge25519_p3 *h); + +int ge25519_frombytes(ge25519_p3 *h, const unsigned char *s); + +int ge25519_frombytes_negate_vartime(ge25519_p3 *h, const unsigned char *s); + +void ge25519_p3_to_cached(ge25519_cached *r, const ge25519_p3 *p); + +void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); + +void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); + +void ge25519_add(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_cached *q); + +void ge25519_sub(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_cached *q); + +void ge25519_scalarmult_base(ge25519_p3 *h, const unsigned char *a); + +void ge25519_double_scalarmult_vartime(ge25519_p2 *r, const unsigned char *a, + const ge25519_p3 *A, + const unsigned char *b); + +void ge25519_scalarmult(ge25519_p3 *h, const unsigned char *a, + const ge25519_p3 *p); + +int ge25519_is_canonical(const unsigned char *s); + +int ge25519_is_on_curve(const ge25519_p3 *p); + +int ge25519_is_on_main_subgroup(const ge25519_p3 *p); + +int ge25519_has_small_order(const unsigned char s[32]); + +void ge25519_from_uniform(unsigned char s[32], const unsigned char r[32]); + +void ge25519_from_hash(unsigned char s[32], const unsigned char h[64]); + +/* + Ristretto group + */ + +int ristretto255_frombytes(ge25519_p3 *h, const unsigned char *s); + +void ristretto255_p3_tobytes(unsigned char *s, const ge25519_p3 *h); + +void ristretto255_from_hash(unsigned char s[32], const unsigned char h[64]); + +/* + The set of scalars is \Z/l + where l = 2^252 + 27742317777372353535851937790883648493. + */ + +void sc25519_invert(unsigned char recip[32], const unsigned char s[32]); + +void sc25519_reduce(unsigned char s[64]); + +void sc25519_mul(unsigned char s[32], const unsigned char a[32], + const unsigned char b[32]); + +void sc25519_muladd(unsigned char s[32], const unsigned char a[32], + const unsigned char b[32], const unsigned char c[32]); + +int sc25519_is_canonical(const unsigned char s[32]); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_25_5.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_25_5.h new file mode 100644 index 0000000..4652f0d --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_25_5.h @@ -0,0 +1,1030 @@ +#include + +#include "private/common.h" +#include "utils.h" + +/* + h = 0 + */ + +static inline void +fe25519_0(fe25519 h) +{ + memset(&h[0], 0, 10 * sizeof h[0]); +} + +/* + h = 1 + */ + +static inline void +fe25519_1(fe25519 h) +{ + h[0] = 1; + h[1] = 0; + memset(&h[2], 0, 8 * sizeof h[0]); +} + +/* + h = f + g + Can overlap h with f or g. + * + Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + * + Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + */ + +static inline void +fe25519_add(fe25519 h, const fe25519 f, const fe25519 g) +{ + int32_t h0 = f[0] + g[0]; + int32_t h1 = f[1] + g[1]; + int32_t h2 = f[2] + g[2]; + int32_t h3 = f[3] + g[3]; + int32_t h4 = f[4] + g[4]; + int32_t h5 = f[5] + g[5]; + int32_t h6 = f[6] + g[6]; + int32_t h7 = f[7] + g[7]; + int32_t h8 = f[8] + g[8]; + int32_t h9 = f[9] + g[9]; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} + +/* + h = f - g + Can overlap h with f or g. + * + Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + * + Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + */ + +static void +fe25519_sub(fe25519 h, const fe25519 f, const fe25519 g) +{ + int32_t h0 = f[0] - g[0]; + int32_t h1 = f[1] - g[1]; + int32_t h2 = f[2] - g[2]; + int32_t h3 = f[3] - g[3]; + int32_t h4 = f[4] - g[4]; + int32_t h5 = f[5] - g[5]; + int32_t h6 = f[6] - g[6]; + int32_t h7 = f[7] - g[7]; + int32_t h8 = f[8] - g[8]; + int32_t h9 = f[9] - g[9]; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} + +/* + h = -f + * + Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + * + Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + */ + +static inline void +fe25519_neg(fe25519 h, const fe25519 f) +{ + int32_t h0 = -f[0]; + int32_t h1 = -f[1]; + int32_t h2 = -f[2]; + int32_t h3 = -f[3]; + int32_t h4 = -f[4]; + int32_t h5 = -f[5]; + int32_t h6 = -f[6]; + int32_t h7 = -f[7]; + int32_t h8 = -f[8]; + int32_t h9 = -f[9]; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} + +/* + Replace (f,g) with (g,g) if b == 1; + replace (f,g) with (f,g) if b == 0. + * + Preconditions: b in {0,1}. + */ + +static void +fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b) +{ + const uint32_t mask = (uint32_t) (-(int32_t) b); + + int32_t f0 = f[0]; + int32_t f1 = f[1]; + int32_t f2 = f[2]; + int32_t f3 = f[3]; + int32_t f4 = f[4]; + int32_t f5 = f[5]; + int32_t f6 = f[6]; + int32_t f7 = f[7]; + int32_t f8 = f[8]; + int32_t f9 = f[9]; + + int32_t x0 = f0 ^ g[0]; + int32_t x1 = f1 ^ g[1]; + int32_t x2 = f2 ^ g[2]; + int32_t x3 = f3 ^ g[3]; + int32_t x4 = f4 ^ g[4]; + int32_t x5 = f5 ^ g[5]; + int32_t x6 = f6 ^ g[6]; + int32_t x7 = f7 ^ g[7]; + int32_t x8 = f8 ^ g[8]; + int32_t x9 = f9 ^ g[9]; + + x0 &= mask; + x1 &= mask; + x2 &= mask; + x3 &= mask; + x4 &= mask; + x5 &= mask; + x6 &= mask; + x7 &= mask; + x8 &= mask; + x9 &= mask; + + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; + f[5] = f5 ^ x5; + f[6] = f6 ^ x6; + f[7] = f7 ^ x7; + f[8] = f8 ^ x8; + f[9] = f9 ^ x9; +} + +static void +fe25519_cswap(fe25519 f, fe25519 g, unsigned int b) +{ + const uint32_t mask = (uint32_t) (-(int64_t) b); + + int32_t f0 = f[0]; + int32_t f1 = f[1]; + int32_t f2 = f[2]; + int32_t f3 = f[3]; + int32_t f4 = f[4]; + int32_t f5 = f[5]; + int32_t f6 = f[6]; + int32_t f7 = f[7]; + int32_t f8 = f[8]; + int32_t f9 = f[9]; + + int32_t g0 = g[0]; + int32_t g1 = g[1]; + int32_t g2 = g[2]; + int32_t g3 = g[3]; + int32_t g4 = g[4]; + int32_t g5 = g[5]; + int32_t g6 = g[6]; + int32_t g7 = g[7]; + int32_t g8 = g[8]; + int32_t g9 = g[9]; + + int32_t x0 = f0 ^ g0; + int32_t x1 = f1 ^ g1; + int32_t x2 = f2 ^ g2; + int32_t x3 = f3 ^ g3; + int32_t x4 = f4 ^ g4; + int32_t x5 = f5 ^ g5; + int32_t x6 = f6 ^ g6; + int32_t x7 = f7 ^ g7; + int32_t x8 = f8 ^ g8; + int32_t x9 = f9 ^ g9; + + x0 &= mask; + x1 &= mask; + x2 &= mask; + x3 &= mask; + x4 &= mask; + x5 &= mask; + x6 &= mask; + x7 &= mask; + x8 &= mask; + x9 &= mask; + + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; + f[5] = f5 ^ x5; + f[6] = f6 ^ x6; + f[7] = f7 ^ x7; + f[8] = f8 ^ x8; + f[9] = f9 ^ x9; + + g[0] = g0 ^ x0; + g[1] = g1 ^ x1; + g[2] = g2 ^ x2; + g[3] = g3 ^ x3; + g[4] = g4 ^ x4; + g[5] = g5 ^ x5; + g[6] = g6 ^ x6; + g[7] = g7 ^ x7; + g[8] = g8 ^ x8; + g[9] = g9 ^ x9; +} + +/* + h = f + */ + +static inline void +fe25519_copy(fe25519 h, const fe25519 f) +{ + memcpy(h, f, 10 * sizeof h[0]); +} + +/* + return 1 if f is in {1,3,5,...,q-2} + return 0 if f is in {0,2,4,...,q-1} + + Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + */ + +static inline int +fe25519_isnegative(const fe25519 f) +{ + unsigned char s[32]; + + fe25519_tobytes(s, f); + + return s[0] & 1; +} + +/* + return 1 if f == 0 + return 0 if f != 0 + + Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + */ + +static inline int +fe25519_iszero(const fe25519 f) +{ + unsigned char s[32]; + + fe25519_tobytes(s, f); + + return sodium_is_zero(s, 32); +} + +/* + h = f * g + Can overlap h with f or g. + * + Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + * + Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. + */ + +/* + Notes on implementation strategy: + * + Using schoolbook multiplication. + Karatsuba would save a little in some cost models. + * + Most multiplications by 2 and 19 are 32-bit precomputations; + cheaper than 64-bit postcomputations. + * + There is one remaining multiplication by 19 in the carry chain; + one *19 precomputation can be merged into this, + but the resulting data flow is considerably less clean. + * + There are 12 carries below. + 10 of them are 2-way parallelizable and vectorizable. + Can get away with 11 carries, but then data flow is much deeper. + * + With tighter constraints on inputs can squeeze carries into int32. + */ + +static void +fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g) +{ + int32_t f0 = f[0]; + int32_t f1 = f[1]; + int32_t f2 = f[2]; + int32_t f3 = f[3]; + int32_t f4 = f[4]; + int32_t f5 = f[5]; + int32_t f6 = f[6]; + int32_t f7 = f[7]; + int32_t f8 = f[8]; + int32_t f9 = f[9]; + + int32_t g0 = g[0]; + int32_t g1 = g[1]; + int32_t g2 = g[2]; + int32_t g3 = g[3]; + int32_t g4 = g[4]; + int32_t g5 = g[5]; + int32_t g6 = g[6]; + int32_t g7 = g[7]; + int32_t g8 = g[8]; + int32_t g9 = g[9]; + + int32_t g1_19 = 19 * g1; /* 1.959375*2^29 */ + int32_t g2_19 = 19 * g2; /* 1.959375*2^30; still ok */ + int32_t g3_19 = 19 * g3; + int32_t g4_19 = 19 * g4; + int32_t g5_19 = 19 * g5; + int32_t g6_19 = 19 * g6; + int32_t g7_19 = 19 * g7; + int32_t g8_19 = 19 * g8; + int32_t g9_19 = 19 * g9; + int32_t f1_2 = 2 * f1; + int32_t f3_2 = 2 * f3; + int32_t f5_2 = 2 * f5; + int32_t f7_2 = 2 * f7; + int32_t f9_2 = 2 * f9; + + int64_t f0g0 = f0 * (int64_t) g0; + int64_t f0g1 = f0 * (int64_t) g1; + int64_t f0g2 = f0 * (int64_t) g2; + int64_t f0g3 = f0 * (int64_t) g3; + int64_t f0g4 = f0 * (int64_t) g4; + int64_t f0g5 = f0 * (int64_t) g5; + int64_t f0g6 = f0 * (int64_t) g6; + int64_t f0g7 = f0 * (int64_t) g7; + int64_t f0g8 = f0 * (int64_t) g8; + int64_t f0g9 = f0 * (int64_t) g9; + int64_t f1g0 = f1 * (int64_t) g0; + int64_t f1g1_2 = f1_2 * (int64_t) g1; + int64_t f1g2 = f1 * (int64_t) g2; + int64_t f1g3_2 = f1_2 * (int64_t) g3; + int64_t f1g4 = f1 * (int64_t) g4; + int64_t f1g5_2 = f1_2 * (int64_t) g5; + int64_t f1g6 = f1 * (int64_t) g6; + int64_t f1g7_2 = f1_2 * (int64_t) g7; + int64_t f1g8 = f1 * (int64_t) g8; + int64_t f1g9_38 = f1_2 * (int64_t) g9_19; + int64_t f2g0 = f2 * (int64_t) g0; + int64_t f2g1 = f2 * (int64_t) g1; + int64_t f2g2 = f2 * (int64_t) g2; + int64_t f2g3 = f2 * (int64_t) g3; + int64_t f2g4 = f2 * (int64_t) g4; + int64_t f2g5 = f2 * (int64_t) g5; + int64_t f2g6 = f2 * (int64_t) g6; + int64_t f2g7 = f2 * (int64_t) g7; + int64_t f2g8_19 = f2 * (int64_t) g8_19; + int64_t f2g9_19 = f2 * (int64_t) g9_19; + int64_t f3g0 = f3 * (int64_t) g0; + int64_t f3g1_2 = f3_2 * (int64_t) g1; + int64_t f3g2 = f3 * (int64_t) g2; + int64_t f3g3_2 = f3_2 * (int64_t) g3; + int64_t f3g4 = f3 * (int64_t) g4; + int64_t f3g5_2 = f3_2 * (int64_t) g5; + int64_t f3g6 = f3 * (int64_t) g6; + int64_t f3g7_38 = f3_2 * (int64_t) g7_19; + int64_t f3g8_19 = f3 * (int64_t) g8_19; + int64_t f3g9_38 = f3_2 * (int64_t) g9_19; + int64_t f4g0 = f4 * (int64_t) g0; + int64_t f4g1 = f4 * (int64_t) g1; + int64_t f4g2 = f4 * (int64_t) g2; + int64_t f4g3 = f4 * (int64_t) g3; + int64_t f4g4 = f4 * (int64_t) g4; + int64_t f4g5 = f4 * (int64_t) g5; + int64_t f4g6_19 = f4 * (int64_t) g6_19; + int64_t f4g7_19 = f4 * (int64_t) g7_19; + int64_t f4g8_19 = f4 * (int64_t) g8_19; + int64_t f4g9_19 = f4 * (int64_t) g9_19; + int64_t f5g0 = f5 * (int64_t) g0; + int64_t f5g1_2 = f5_2 * (int64_t) g1; + int64_t f5g2 = f5 * (int64_t) g2; + int64_t f5g3_2 = f5_2 * (int64_t) g3; + int64_t f5g4 = f5 * (int64_t) g4; + int64_t f5g5_38 = f5_2 * (int64_t) g5_19; + int64_t f5g6_19 = f5 * (int64_t) g6_19; + int64_t f5g7_38 = f5_2 * (int64_t) g7_19; + int64_t f5g8_19 = f5 * (int64_t) g8_19; + int64_t f5g9_38 = f5_2 * (int64_t) g9_19; + int64_t f6g0 = f6 * (int64_t) g0; + int64_t f6g1 = f6 * (int64_t) g1; + int64_t f6g2 = f6 * (int64_t) g2; + int64_t f6g3 = f6 * (int64_t) g3; + int64_t f6g4_19 = f6 * (int64_t) g4_19; + int64_t f6g5_19 = f6 * (int64_t) g5_19; + int64_t f6g6_19 = f6 * (int64_t) g6_19; + int64_t f6g7_19 = f6 * (int64_t) g7_19; + int64_t f6g8_19 = f6 * (int64_t) g8_19; + int64_t f6g9_19 = f6 * (int64_t) g9_19; + int64_t f7g0 = f7 * (int64_t) g0; + int64_t f7g1_2 = f7_2 * (int64_t) g1; + int64_t f7g2 = f7 * (int64_t) g2; + int64_t f7g3_38 = f7_2 * (int64_t) g3_19; + int64_t f7g4_19 = f7 * (int64_t) g4_19; + int64_t f7g5_38 = f7_2 * (int64_t) g5_19; + int64_t f7g6_19 = f7 * (int64_t) g6_19; + int64_t f7g7_38 = f7_2 * (int64_t) g7_19; + int64_t f7g8_19 = f7 * (int64_t) g8_19; + int64_t f7g9_38 = f7_2 * (int64_t) g9_19; + int64_t f8g0 = f8 * (int64_t) g0; + int64_t f8g1 = f8 * (int64_t) g1; + int64_t f8g2_19 = f8 * (int64_t) g2_19; + int64_t f8g3_19 = f8 * (int64_t) g3_19; + int64_t f8g4_19 = f8 * (int64_t) g4_19; + int64_t f8g5_19 = f8 * (int64_t) g5_19; + int64_t f8g6_19 = f8 * (int64_t) g6_19; + int64_t f8g7_19 = f8 * (int64_t) g7_19; + int64_t f8g8_19 = f8 * (int64_t) g8_19; + int64_t f8g9_19 = f8 * (int64_t) g9_19; + int64_t f9g0 = f9 * (int64_t) g0; + int64_t f9g1_38 = f9_2 * (int64_t) g1_19; + int64_t f9g2_19 = f9 * (int64_t) g2_19; + int64_t f9g3_38 = f9_2 * (int64_t) g3_19; + int64_t f9g4_19 = f9 * (int64_t) g4_19; + int64_t f9g5_38 = f9_2 * (int64_t) g5_19; + int64_t f9g6_19 = f9 * (int64_t) g6_19; + int64_t f9g7_38 = f9_2 * (int64_t) g7_19; + int64_t f9g8_19 = f9 * (int64_t) g8_19; + int64_t f9g9_38 = f9_2 * (int64_t) g9_19; + + int64_t h0 = f0g0 + f1g9_38 + f2g8_19 + f3g7_38 + f4g6_19 + f5g5_38 + + f6g4_19 + f7g3_38 + f8g2_19 + f9g1_38; + int64_t h1 = f0g1 + f1g0 + f2g9_19 + f3g8_19 + f4g7_19 + f5g6_19 + f6g5_19 + + f7g4_19 + f8g3_19 + f9g2_19; + int64_t h2 = f0g2 + f1g1_2 + f2g0 + f3g9_38 + f4g8_19 + f5g7_38 + f6g6_19 + + f7g5_38 + f8g4_19 + f9g3_38; + int64_t h3 = f0g3 + f1g2 + f2g1 + f3g0 + f4g9_19 + f5g8_19 + f6g7_19 + + f7g6_19 + f8g5_19 + f9g4_19; + int64_t h4 = f0g4 + f1g3_2 + f2g2 + f3g1_2 + f4g0 + f5g9_38 + f6g8_19 + + f7g7_38 + f8g6_19 + f9g5_38; + int64_t h5 = f0g5 + f1g4 + f2g3 + f3g2 + f4g1 + f5g0 + f6g9_19 + f7g8_19 + + f8g7_19 + f9g6_19; + int64_t h6 = f0g6 + f1g5_2 + f2g4 + f3g3_2 + f4g2 + f5g1_2 + f6g0 + + f7g9_38 + f8g8_19 + f9g7_38; + int64_t h7 = f0g7 + f1g6 + f2g5 + f3g4 + f4g3 + f5g2 + f6g1 + f7g0 + + f8g9_19 + f9g8_19; + int64_t h8 = f0g8 + f1g7_2 + f2g6 + f3g5_2 + f4g4 + f5g3_2 + f6g2 + f7g1_2 + + f8g0 + f9g9_38; + int64_t h9 = + f0g9 + f1g8 + f2g7 + f3g6 + f4g5 + f5g4 + f6g3 + f7g2 + f8g1 + f9g0; + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + + /* + |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38)) + i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8 + |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19)) + i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9 + */ + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + /* |h0| <= 2^25 */ + /* |h4| <= 2^25 */ + /* |h1| <= 1.71*2^59 */ + /* |h5| <= 1.71*2^59 */ + + carry1 = (h1 + (int64_t)(1L << 24)) >> 25; + h2 += carry1; + h1 -= carry1 * ((uint64_t) 1L << 25); + carry5 = (h5 + (int64_t)(1L << 24)) >> 25; + h6 += carry5; + h5 -= carry5 * ((uint64_t) 1L << 25); + /* |h1| <= 2^24; from now on fits into int32 */ + /* |h5| <= 2^24; from now on fits into int32 */ + /* |h2| <= 1.41*2^60 */ + /* |h6| <= 1.41*2^60 */ + + carry2 = (h2 + (int64_t)(1L << 25)) >> 26; + h3 += carry2; + h2 -= carry2 * ((uint64_t) 1L << 26); + carry6 = (h6 + (int64_t)(1L << 25)) >> 26; + h7 += carry6; + h6 -= carry6 * ((uint64_t) 1L << 26); + /* |h2| <= 2^25; from now on fits into int32 unchanged */ + /* |h6| <= 2^25; from now on fits into int32 unchanged */ + /* |h3| <= 1.71*2^59 */ + /* |h7| <= 1.71*2^59 */ + + carry3 = (h3 + (int64_t)(1L << 24)) >> 25; + h4 += carry3; + h3 -= carry3 * ((uint64_t) 1L << 25); + carry7 = (h7 + (int64_t)(1L << 24)) >> 25; + h8 += carry7; + h7 -= carry7 * ((uint64_t) 1L << 25); + /* |h3| <= 2^24; from now on fits into int32 unchanged */ + /* |h7| <= 2^24; from now on fits into int32 unchanged */ + /* |h4| <= 1.72*2^34 */ + /* |h8| <= 1.41*2^60 */ + + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + carry8 = (h8 + (int64_t)(1L << 25)) >> 26; + h9 += carry8; + h8 -= carry8 * ((uint64_t) 1L << 26); + /* |h4| <= 2^25; from now on fits into int32 unchanged */ + /* |h8| <= 2^25; from now on fits into int32 unchanged */ + /* |h5| <= 1.01*2^24 */ + /* |h9| <= 1.71*2^59 */ + + carry9 = (h9 + (int64_t)(1L << 24)) >> 25; + h0 += carry9 * 19; + h9 -= carry9 * ((uint64_t) 1L << 25); + /* |h9| <= 2^24; from now on fits into int32 unchanged */ + /* |h0| <= 1.1*2^39 */ + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + /* |h0| <= 2^25; from now on fits into int32 unchanged */ + /* |h1| <= 1.01*2^24 */ + + h[0] = (int32_t) h0; + h[1] = (int32_t) h1; + h[2] = (int32_t) h2; + h[3] = (int32_t) h3; + h[4] = (int32_t) h4; + h[5] = (int32_t) h5; + h[6] = (int32_t) h6; + h[7] = (int32_t) h7; + h[8] = (int32_t) h8; + h[9] = (int32_t) h9; +} + +/* + h = f * f + Can overlap h with f. + * + Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + * + Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. + */ + +static void +fe25519_sq(fe25519 h, const fe25519 f) +{ + int32_t f0 = f[0]; + int32_t f1 = f[1]; + int32_t f2 = f[2]; + int32_t f3 = f[3]; + int32_t f4 = f[4]; + int32_t f5 = f[5]; + int32_t f6 = f[6]; + int32_t f7 = f[7]; + int32_t f8 = f[8]; + int32_t f9 = f[9]; + + int32_t f0_2 = 2 * f0; + int32_t f1_2 = 2 * f1; + int32_t f2_2 = 2 * f2; + int32_t f3_2 = 2 * f3; + int32_t f4_2 = 2 * f4; + int32_t f5_2 = 2 * f5; + int32_t f6_2 = 2 * f6; + int32_t f7_2 = 2 * f7; + int32_t f5_38 = 38 * f5; /* 1.959375*2^30 */ + int32_t f6_19 = 19 * f6; /* 1.959375*2^30 */ + int32_t f7_38 = 38 * f7; /* 1.959375*2^30 */ + int32_t f8_19 = 19 * f8; /* 1.959375*2^30 */ + int32_t f9_38 = 38 * f9; /* 1.959375*2^30 */ + + int64_t f0f0 = f0 * (int64_t) f0; + int64_t f0f1_2 = f0_2 * (int64_t) f1; + int64_t f0f2_2 = f0_2 * (int64_t) f2; + int64_t f0f3_2 = f0_2 * (int64_t) f3; + int64_t f0f4_2 = f0_2 * (int64_t) f4; + int64_t f0f5_2 = f0_2 * (int64_t) f5; + int64_t f0f6_2 = f0_2 * (int64_t) f6; + int64_t f0f7_2 = f0_2 * (int64_t) f7; + int64_t f0f8_2 = f0_2 * (int64_t) f8; + int64_t f0f9_2 = f0_2 * (int64_t) f9; + int64_t f1f1_2 = f1_2 * (int64_t) f1; + int64_t f1f2_2 = f1_2 * (int64_t) f2; + int64_t f1f3_4 = f1_2 * (int64_t) f3_2; + int64_t f1f4_2 = f1_2 * (int64_t) f4; + int64_t f1f5_4 = f1_2 * (int64_t) f5_2; + int64_t f1f6_2 = f1_2 * (int64_t) f6; + int64_t f1f7_4 = f1_2 * (int64_t) f7_2; + int64_t f1f8_2 = f1_2 * (int64_t) f8; + int64_t f1f9_76 = f1_2 * (int64_t) f9_38; + int64_t f2f2 = f2 * (int64_t) f2; + int64_t f2f3_2 = f2_2 * (int64_t) f3; + int64_t f2f4_2 = f2_2 * (int64_t) f4; + int64_t f2f5_2 = f2_2 * (int64_t) f5; + int64_t f2f6_2 = f2_2 * (int64_t) f6; + int64_t f2f7_2 = f2_2 * (int64_t) f7; + int64_t f2f8_38 = f2_2 * (int64_t) f8_19; + int64_t f2f9_38 = f2 * (int64_t) f9_38; + int64_t f3f3_2 = f3_2 * (int64_t) f3; + int64_t f3f4_2 = f3_2 * (int64_t) f4; + int64_t f3f5_4 = f3_2 * (int64_t) f5_2; + int64_t f3f6_2 = f3_2 * (int64_t) f6; + int64_t f3f7_76 = f3_2 * (int64_t) f7_38; + int64_t f3f8_38 = f3_2 * (int64_t) f8_19; + int64_t f3f9_76 = f3_2 * (int64_t) f9_38; + int64_t f4f4 = f4 * (int64_t) f4; + int64_t f4f5_2 = f4_2 * (int64_t) f5; + int64_t f4f6_38 = f4_2 * (int64_t) f6_19; + int64_t f4f7_38 = f4 * (int64_t) f7_38; + int64_t f4f8_38 = f4_2 * (int64_t) f8_19; + int64_t f4f9_38 = f4 * (int64_t) f9_38; + int64_t f5f5_38 = f5 * (int64_t) f5_38; + int64_t f5f6_38 = f5_2 * (int64_t) f6_19; + int64_t f5f7_76 = f5_2 * (int64_t) f7_38; + int64_t f5f8_38 = f5_2 * (int64_t) f8_19; + int64_t f5f9_76 = f5_2 * (int64_t) f9_38; + int64_t f6f6_19 = f6 * (int64_t) f6_19; + int64_t f6f7_38 = f6 * (int64_t) f7_38; + int64_t f6f8_38 = f6_2 * (int64_t) f8_19; + int64_t f6f9_38 = f6 * (int64_t) f9_38; + int64_t f7f7_38 = f7 * (int64_t) f7_38; + int64_t f7f8_38 = f7_2 * (int64_t) f8_19; + int64_t f7f9_76 = f7_2 * (int64_t) f9_38; + int64_t f8f8_19 = f8 * (int64_t) f8_19; + int64_t f8f9_38 = f8 * (int64_t) f9_38; + int64_t f9f9_38 = f9 * (int64_t) f9_38; + + int64_t h0 = f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38; + int64_t h1 = f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38; + int64_t h2 = f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19; + int64_t h3 = f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38; + int64_t h4 = f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38; + int64_t h5 = f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38; + int64_t h6 = f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19; + int64_t h7 = f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38; + int64_t h8 = f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38; + int64_t h9 = f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2; + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + + carry1 = (h1 + (int64_t)(1L << 24)) >> 25; + h2 += carry1; + h1 -= carry1 * ((uint64_t) 1L << 25); + carry5 = (h5 + (int64_t)(1L << 24)) >> 25; + h6 += carry5; + h5 -= carry5 * ((uint64_t) 1L << 25); + + carry2 = (h2 + (int64_t)(1L << 25)) >> 26; + h3 += carry2; + h2 -= carry2 * ((uint64_t) 1L << 26); + carry6 = (h6 + (int64_t)(1L << 25)) >> 26; + h7 += carry6; + h6 -= carry6 * ((uint64_t) 1L << 26); + + carry3 = (h3 + (int64_t)(1L << 24)) >> 25; + h4 += carry3; + h3 -= carry3 * ((uint64_t) 1L << 25); + carry7 = (h7 + (int64_t)(1L << 24)) >> 25; + h8 += carry7; + h7 -= carry7 * ((uint64_t) 1L << 25); + + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + carry8 = (h8 + (int64_t)(1L << 25)) >> 26; + h9 += carry8; + h8 -= carry8 * ((uint64_t) 1L << 26); + + carry9 = (h9 + (int64_t)(1L << 24)) >> 25; + h0 += carry9 * 19; + h9 -= carry9 * ((uint64_t) 1L << 25); + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + + h[0] = (int32_t) h0; + h[1] = (int32_t) h1; + h[2] = (int32_t) h2; + h[3] = (int32_t) h3; + h[4] = (int32_t) h4; + h[5] = (int32_t) h5; + h[6] = (int32_t) h6; + h[7] = (int32_t) h7; + h[8] = (int32_t) h8; + h[9] = (int32_t) h9; +} + +/* + h = 2 * f * f + Can overlap h with f. + * + Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + * + Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. + */ + +static void +fe25519_sq2(fe25519 h, const fe25519 f) +{ + int32_t f0 = f[0]; + int32_t f1 = f[1]; + int32_t f2 = f[2]; + int32_t f3 = f[3]; + int32_t f4 = f[4]; + int32_t f5 = f[5]; + int32_t f6 = f[6]; + int32_t f7 = f[7]; + int32_t f8 = f[8]; + int32_t f9 = f[9]; + + int32_t f0_2 = 2 * f0; + int32_t f1_2 = 2 * f1; + int32_t f2_2 = 2 * f2; + int32_t f3_2 = 2 * f3; + int32_t f4_2 = 2 * f4; + int32_t f5_2 = 2 * f5; + int32_t f6_2 = 2 * f6; + int32_t f7_2 = 2 * f7; + int32_t f5_38 = 38 * f5; /* 1.959375*2^30 */ + int32_t f6_19 = 19 * f6; /* 1.959375*2^30 */ + int32_t f7_38 = 38 * f7; /* 1.959375*2^30 */ + int32_t f8_19 = 19 * f8; /* 1.959375*2^30 */ + int32_t f9_38 = 38 * f9; /* 1.959375*2^30 */ + + int64_t f0f0 = f0 * (int64_t) f0; + int64_t f0f1_2 = f0_2 * (int64_t) f1; + int64_t f0f2_2 = f0_2 * (int64_t) f2; + int64_t f0f3_2 = f0_2 * (int64_t) f3; + int64_t f0f4_2 = f0_2 * (int64_t) f4; + int64_t f0f5_2 = f0_2 * (int64_t) f5; + int64_t f0f6_2 = f0_2 * (int64_t) f6; + int64_t f0f7_2 = f0_2 * (int64_t) f7; + int64_t f0f8_2 = f0_2 * (int64_t) f8; + int64_t f0f9_2 = f0_2 * (int64_t) f9; + int64_t f1f1_2 = f1_2 * (int64_t) f1; + int64_t f1f2_2 = f1_2 * (int64_t) f2; + int64_t f1f3_4 = f1_2 * (int64_t) f3_2; + int64_t f1f4_2 = f1_2 * (int64_t) f4; + int64_t f1f5_4 = f1_2 * (int64_t) f5_2; + int64_t f1f6_2 = f1_2 * (int64_t) f6; + int64_t f1f7_4 = f1_2 * (int64_t) f7_2; + int64_t f1f8_2 = f1_2 * (int64_t) f8; + int64_t f1f9_76 = f1_2 * (int64_t) f9_38; + int64_t f2f2 = f2 * (int64_t) f2; + int64_t f2f3_2 = f2_2 * (int64_t) f3; + int64_t f2f4_2 = f2_2 * (int64_t) f4; + int64_t f2f5_2 = f2_2 * (int64_t) f5; + int64_t f2f6_2 = f2_2 * (int64_t) f6; + int64_t f2f7_2 = f2_2 * (int64_t) f7; + int64_t f2f8_38 = f2_2 * (int64_t) f8_19; + int64_t f2f9_38 = f2 * (int64_t) f9_38; + int64_t f3f3_2 = f3_2 * (int64_t) f3; + int64_t f3f4_2 = f3_2 * (int64_t) f4; + int64_t f3f5_4 = f3_2 * (int64_t) f5_2; + int64_t f3f6_2 = f3_2 * (int64_t) f6; + int64_t f3f7_76 = f3_2 * (int64_t) f7_38; + int64_t f3f8_38 = f3_2 * (int64_t) f8_19; + int64_t f3f9_76 = f3_2 * (int64_t) f9_38; + int64_t f4f4 = f4 * (int64_t) f4; + int64_t f4f5_2 = f4_2 * (int64_t) f5; + int64_t f4f6_38 = f4_2 * (int64_t) f6_19; + int64_t f4f7_38 = f4 * (int64_t) f7_38; + int64_t f4f8_38 = f4_2 * (int64_t) f8_19; + int64_t f4f9_38 = f4 * (int64_t) f9_38; + int64_t f5f5_38 = f5 * (int64_t) f5_38; + int64_t f5f6_38 = f5_2 * (int64_t) f6_19; + int64_t f5f7_76 = f5_2 * (int64_t) f7_38; + int64_t f5f8_38 = f5_2 * (int64_t) f8_19; + int64_t f5f9_76 = f5_2 * (int64_t) f9_38; + int64_t f6f6_19 = f6 * (int64_t) f6_19; + int64_t f6f7_38 = f6 * (int64_t) f7_38; + int64_t f6f8_38 = f6_2 * (int64_t) f8_19; + int64_t f6f9_38 = f6 * (int64_t) f9_38; + int64_t f7f7_38 = f7 * (int64_t) f7_38; + int64_t f7f8_38 = f7_2 * (int64_t) f8_19; + int64_t f7f9_76 = f7_2 * (int64_t) f9_38; + int64_t f8f8_19 = f8 * (int64_t) f8_19; + int64_t f8f9_38 = f8 * (int64_t) f9_38; + int64_t f9f9_38 = f9 * (int64_t) f9_38; + + int64_t h0 = f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38; + int64_t h1 = f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38; + int64_t h2 = f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19; + int64_t h3 = f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38; + int64_t h4 = f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38; + int64_t h5 = f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38; + int64_t h6 = f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19; + int64_t h7 = f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38; + int64_t h8 = f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38; + int64_t h9 = f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2; + + int64_t carry0; + int64_t carry1; + int64_t carry2; + int64_t carry3; + int64_t carry4; + int64_t carry5; + int64_t carry6; + int64_t carry7; + int64_t carry8; + int64_t carry9; + + h0 += h0; + h1 += h1; + h2 += h2; + h3 += h3; + h4 += h4; + h5 += h5; + h6 += h6; + h7 += h7; + h8 += h8; + h9 += h9; + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + + carry1 = (h1 + (int64_t)(1L << 24)) >> 25; + h2 += carry1; + h1 -= carry1 * ((uint64_t) 1L << 25); + carry5 = (h5 + (int64_t)(1L << 24)) >> 25; + h6 += carry5; + h5 -= carry5 * ((uint64_t) 1L << 25); + + carry2 = (h2 + (int64_t)(1L << 25)) >> 26; + h3 += carry2; + h2 -= carry2 * ((uint64_t) 1L << 26); + carry6 = (h6 + (int64_t)(1L << 25)) >> 26; + h7 += carry6; + h6 -= carry6 * ((uint64_t) 1L << 26); + + carry3 = (h3 + (int64_t)(1L << 24)) >> 25; + h4 += carry3; + h3 -= carry3 * ((uint64_t) 1L << 25); + carry7 = (h7 + (int64_t)(1L << 24)) >> 25; + h8 += carry7; + h7 -= carry7 * ((uint64_t) 1L << 25); + + carry4 = (h4 + (int64_t)(1L << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((uint64_t) 1L << 26); + carry8 = (h8 + (int64_t)(1L << 25)) >> 26; + h9 += carry8; + h8 -= carry8 * ((uint64_t) 1L << 26); + + carry9 = (h9 + (int64_t)(1L << 24)) >> 25; + h0 += carry9 * 19; + h9 -= carry9 * ((uint64_t) 1L << 25); + + carry0 = (h0 + (int64_t)(1L << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((uint64_t) 1L << 26); + + h[0] = (int32_t) h0; + h[1] = (int32_t) h1; + h[2] = (int32_t) h2; + h[3] = (int32_t) h3; + h[4] = (int32_t) h4; + h[5] = (int32_t) h5; + h[6] = (int32_t) h6; + h[7] = (int32_t) h7; + h[8] = (int32_t) h8; + h[9] = (int32_t) h9; +} + +static inline void +fe25519_mul32(fe25519 h, const fe25519 f, uint32_t n) +{ + int64_t sn = (int64_t) n; + int32_t f0 = f[0]; + int32_t f1 = f[1]; + int32_t f2 = f[2]; + int32_t f3 = f[3]; + int32_t f4 = f[4]; + int32_t f5 = f[5]; + int32_t f6 = f[6]; + int32_t f7 = f[7]; + int32_t f8 = f[8]; + int32_t f9 = f[9]; + int64_t h0 = f0 * sn; + int64_t h1 = f1 * sn; + int64_t h2 = f2 * sn; + int64_t h3 = f3 * sn; + int64_t h4 = f4 * sn; + int64_t h5 = f5 * sn; + int64_t h6 = f6 * sn; + int64_t h7 = f7 * sn; + int64_t h8 = f8 * sn; + int64_t h9 = f9 * sn; + int64_t carry0, carry1, carry2, carry3, carry4, carry5, carry6, carry7, + carry8, carry9; + + carry9 = (h9 + ((int64_t) 1 << 24)) >> 25; + h0 += carry9 * 19; + h9 -= carry9 * ((int64_t) 1 << 25); + carry1 = (h1 + ((int64_t) 1 << 24)) >> 25; + h2 += carry1; + h1 -= carry1 * ((int64_t) 1 << 25); + carry3 = (h3 + ((int64_t) 1 << 24)) >> 25; + h4 += carry3; + h3 -= carry3 * ((int64_t) 1 << 25); + carry5 = (h5 + ((int64_t) 1 << 24)) >> 25; + h6 += carry5; + h5 -= carry5 * ((int64_t) 1 << 25); + carry7 = (h7 + ((int64_t) 1 << 24)) >> 25; + h8 += carry7; + h7 -= carry7 * ((int64_t) 1 << 25); + + carry0 = (h0 + ((int64_t) 1 << 25)) >> 26; + h1 += carry0; + h0 -= carry0 * ((int64_t) 1 << 26); + carry2 = (h2 + ((int64_t) 1 << 25)) >> 26; + h3 += carry2; + h2 -= carry2 * ((int64_t) 1 << 26); + carry4 = (h4 + ((int64_t) 1 << 25)) >> 26; + h5 += carry4; + h4 -= carry4 * ((int64_t) 1 << 26); + carry6 = (h6 + ((int64_t) 1 << 25)) >> 26; + h7 += carry6; + h6 -= carry6 * ((int64_t) 1 << 26); + carry8 = (h8 + ((int64_t) 1 << 25)) >> 26; + h9 += carry8; + h8 -= carry8 * ((int64_t) 1 << 26); + + h[0] = (int32_t) h0; + h[1] = (int32_t) h1; + h[2] = (int32_t) h2; + h[3] = (int32_t) h3; + h[4] = (int32_t) h4; + h[5] = (int32_t) h5; + h[6] = (int32_t) h6; + h[7] = (int32_t) h7; + h[8] = (int32_t) h8; + h[9] = (int32_t) h9; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h new file mode 100644 index 0000000..ac4321b --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h @@ -0,0 +1,508 @@ +#include + +#include "private/common.h" +#include "utils.h" + +/* + h = 0 + */ + +static inline void +fe25519_0(fe25519 h) +{ + memset(&h[0], 0, 5 * sizeof h[0]); +} + +/* + h = 1 + */ + +static inline void +fe25519_1(fe25519 h) +{ + h[0] = 1; + memset(&h[1], 0, 4 * sizeof h[0]); +} + +/* + h = f + g + Can overlap h with f or g. + */ + +static inline void +fe25519_add(fe25519 h, const fe25519 f, const fe25519 g) +{ + uint64_t h0 = f[0] + g[0]; + uint64_t h1 = f[1] + g[1]; + uint64_t h2 = f[2] + g[2]; + uint64_t h3 = f[3] + g[3]; + uint64_t h4 = f[4] + g[4]; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; +} + +/* + h = f - g + */ + +static void +fe25519_sub(fe25519 h, const fe25519 f, const fe25519 g) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint64_t h0, h1, h2, h3, h4; + + h0 = g[0]; + h1 = g[1]; + h2 = g[2]; + h3 = g[3]; + h4 = g[4]; + + h1 += h0 >> 51; + h0 &= mask; + h2 += h1 >> 51; + h1 &= mask; + h3 += h2 >> 51; + h2 &= mask; + h4 += h3 >> 51; + h3 &= mask; + h0 += 19ULL * (h4 >> 51); + h4 &= mask; + + h0 = (f[0] + 0xfffffffffffdaULL) - h0; + h1 = (f[1] + 0xffffffffffffeULL) - h1; + h2 = (f[2] + 0xffffffffffffeULL) - h2; + h3 = (f[3] + 0xffffffffffffeULL) - h3; + h4 = (f[4] + 0xffffffffffffeULL) - h4; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; +} + +/* + h = -f + */ + +static inline void +fe25519_neg(fe25519 h, const fe25519 f) +{ + fe25519 zero; + + fe25519_0(zero); + fe25519_sub(h, zero, f); +} + +/* + Replace (f,g) with (g,g) if b == 1; + replace (f,g) with (f,g) if b == 0. + * + Preconditions: b in {0,1}. + */ + +static void +fe25519_cmov(fe25519 f, const fe25519 g, unsigned int b) +{ + const uint64_t mask = (uint64_t) (-(int64_t) b); + + uint64_t f0 = f[0]; + uint64_t f1 = f[1]; + uint64_t f2 = f[2]; + uint64_t f3 = f[3]; + uint64_t f4 = f[4]; + + uint64_t x0 = f0 ^ g[0]; + uint64_t x1 = f1 ^ g[1]; + uint64_t x2 = f2 ^ g[2]; + uint64_t x3 = f3 ^ g[3]; + uint64_t x4 = f4 ^ g[4]; + + x0 &= mask; + x1 &= mask; + x2 &= mask; + x3 &= mask; + x4 &= mask; + + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; +} + +/* +Replace (f,g) with (g,f) if b == 1; +replace (f,g) with (f,g) if b == 0. + +Preconditions: b in {0,1}. +*/ + +static void +fe25519_cswap(fe25519 f, fe25519 g, unsigned int b) +{ + const uint64_t mask = (uint64_t) (-(int64_t) b); + + uint64_t f0 = f[0]; + uint64_t f1 = f[1]; + uint64_t f2 = f[2]; + uint64_t f3 = f[3]; + uint64_t f4 = f[4]; + + uint64_t g0 = g[0]; + uint64_t g1 = g[1]; + uint64_t g2 = g[2]; + uint64_t g3 = g[3]; + uint64_t g4 = g[4]; + + uint64_t x0 = f0 ^ g0; + uint64_t x1 = f1 ^ g1; + uint64_t x2 = f2 ^ g2; + uint64_t x3 = f3 ^ g3; + uint64_t x4 = f4 ^ g4; + + x0 &= mask; + x1 &= mask; + x2 &= mask; + x3 &= mask; + x4 &= mask; + + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; + + g[0] = g0 ^ x0; + g[1] = g1 ^ x1; + g[2] = g2 ^ x2; + g[3] = g3 ^ x3; + g[4] = g4 ^ x4; +} + +/* + h = f + */ + +static inline void +fe25519_copy(fe25519 h, const fe25519 f) +{ + memcpy(h, f, 5 * sizeof h[0]); +} + +/* + return 1 if f is in {1,3,5,...,q-2} + return 0 if f is in {0,2,4,...,q-1} + */ + +static inline int +fe25519_isnegative(const fe25519 f) +{ + unsigned char s[32]; + + fe25519_tobytes(s, f); + + return s[0] & 1; +} + +/* + return 1 if f == 0 + return 0 if f != 0 + */ + +static inline int +fe25519_iszero(const fe25519 f) +{ + unsigned char s[32]; + + fe25519_tobytes(s, f); + + return sodium_is_zero(s, 32); +} + +/* + h = f * g + Can overlap h with f or g. + */ + +static void +fe25519_mul(fe25519 h, const fe25519 f, const fe25519 g) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint128_t r0, r1, r2, r3, r4, carry; + uint64_t f0, f1, f2, f3, f4; + uint64_t f1_19, f2_19, f3_19, f4_19; + uint64_t g0, g1, g2, g3, g4; + uint64_t r00, r01, r02, r03, r04; + + f0 = f[0]; + f1 = f[1]; + f2 = f[2]; + f3 = f[3]; + f4 = f[4]; + + g0 = g[0]; + g1 = g[1]; + g2 = g[2]; + g3 = g[3]; + g4 = g[4]; + + f1_19 = 19ULL * f1; + f2_19 = 19ULL * f2; + f3_19 = 19ULL * f3; + f4_19 = 19ULL * f4; + + r0 = ((uint128_t) f0 ) * ((uint128_t) g0); + r0 += ((uint128_t) f1_19) * ((uint128_t) g4); + r0 += ((uint128_t) f2_19) * ((uint128_t) g3); + r0 += ((uint128_t) f3_19) * ((uint128_t) g2); + r0 += ((uint128_t) f4_19) * ((uint128_t) g1); + + r1 = ((uint128_t) f0 ) * ((uint128_t) g1); + r1 += ((uint128_t) f1 ) * ((uint128_t) g0); + r1 += ((uint128_t) f2_19) * ((uint128_t) g4); + r1 += ((uint128_t) f3_19) * ((uint128_t) g3); + r1 += ((uint128_t) f4_19) * ((uint128_t) g2); + + r2 = ((uint128_t) f0 ) * ((uint128_t) g2); + r2 += ((uint128_t) f1 ) * ((uint128_t) g1); + r2 += ((uint128_t) f2 ) * ((uint128_t) g0); + r2 += ((uint128_t) f3_19) * ((uint128_t) g4); + r2 += ((uint128_t) f4_19) * ((uint128_t) g3); + + r3 = ((uint128_t) f0 ) * ((uint128_t) g3); + r3 += ((uint128_t) f1 ) * ((uint128_t) g2); + r3 += ((uint128_t) f2 ) * ((uint128_t) g1); + r3 += ((uint128_t) f3 ) * ((uint128_t) g0); + r3 += ((uint128_t) f4_19) * ((uint128_t) g4); + + r4 = ((uint128_t) f0 ) * ((uint128_t) g4); + r4 += ((uint128_t) f1 ) * ((uint128_t) g3); + r4 += ((uint128_t) f2 ) * ((uint128_t) g2); + r4 += ((uint128_t) f3 ) * ((uint128_t) g1); + r4 += ((uint128_t) f4 ) * ((uint128_t) g0); + + r00 = ((uint64_t) r0) & mask; + carry = r0 >> 51; + r1 += carry; + r01 = ((uint64_t) r1) & mask; + carry = r1 >> 51; + r2 += carry; + r02 = ((uint64_t) r2) & mask; + carry = r2 >> 51; + r3 += carry; + r03 = ((uint64_t) r3) & mask; + carry = r3 >> 51; + r4 += carry; + r04 = ((uint64_t) r4) & mask; + carry = r4 >> 51; + r00 += 19ULL * (uint64_t) carry; + carry = r00 >> 51; + r00 &= mask; + r01 += (uint64_t) carry; + carry = r01 >> 51; + r01 &= mask; + r02 += (uint64_t) carry; + + h[0] = r00; + h[1] = r01; + h[2] = r02; + h[3] = r03; + h[4] = r04; +} + +/* + h = f * f + Can overlap h with f. + */ + +static void +fe25519_sq(fe25519 h, const fe25519 f) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint128_t r0, r1, r2, r3, r4, carry; + uint64_t f0, f1, f2, f3, f4; + uint64_t f0_2, f1_2, f1_38, f2_38, f3_38, f3_19, f4_19; + uint64_t r00, r01, r02, r03, r04; + + f0 = f[0]; + f1 = f[1]; + f2 = f[2]; + f3 = f[3]; + f4 = f[4]; + + f0_2 = f0 << 1; + f1_2 = f1 << 1; + + f1_38 = 38ULL * f1; + f2_38 = 38ULL * f2; + f3_38 = 38ULL * f3; + + f3_19 = 19ULL * f3; + f4_19 = 19ULL * f4; + + r0 = ((uint128_t) f0 ) * ((uint128_t) f0); + r0 += ((uint128_t) f1_38) * ((uint128_t) f4); + r0 += ((uint128_t) f2_38) * ((uint128_t) f3); + + r1 = ((uint128_t) f0_2 ) * ((uint128_t) f1); + r1 += ((uint128_t) f2_38) * ((uint128_t) f4); + r1 += ((uint128_t) f3_19) * ((uint128_t) f3); + + r2 = ((uint128_t) f0_2 ) * ((uint128_t) f2); + r2 += ((uint128_t) f1 ) * ((uint128_t) f1); + r2 += ((uint128_t) f3_38) * ((uint128_t) f4); + + r3 = ((uint128_t) f0_2 ) * ((uint128_t) f3); + r3 += ((uint128_t) f1_2 ) * ((uint128_t) f2); + r3 += ((uint128_t) f4_19) * ((uint128_t) f4); + + r4 = ((uint128_t) f0_2 ) * ((uint128_t) f4); + r4 += ((uint128_t) f1_2 ) * ((uint128_t) f3); + r4 += ((uint128_t) f2 ) * ((uint128_t) f2); + + r00 = ((uint64_t) r0) & mask; + carry = r0 >> 51; + r1 += carry; + r01 = ((uint64_t) r1) & mask; + carry = r1 >> 51; + r2 += carry; + r02 = ((uint64_t) r2) & mask; + carry = r2 >> 51; + r3 += carry; + r03 = ((uint64_t) r3) & mask; + carry = r3 >> 51; + r4 += carry; + r04 = ((uint64_t) r4) & mask; + carry = r4 >> 51; + r00 += 19ULL * (uint64_t) carry; + carry = r00 >> 51; + r00 &= mask; + r01 += (uint64_t) carry; + carry = r01 >> 51; + r01 &= mask; + r02 += (uint64_t) carry; + + h[0] = r00; + h[1] = r01; + h[2] = r02; + h[3] = r03; + h[4] = r04; +} + +/* + h = 2 * f * f + Can overlap h with f. +*/ + +static void +fe25519_sq2(fe25519 h, const fe25519 f) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint128_t r0, r1, r2, r3, r4, carry; + uint64_t f0, f1, f2, f3, f4; + uint64_t f0_2, f1_2, f1_38, f2_38, f3_38, f3_19, f4_19; + uint64_t r00, r01, r02, r03, r04; + + f0 = f[0]; + f1 = f[1]; + f2 = f[2]; + f3 = f[3]; + f4 = f[4]; + + f0_2 = f0 << 1; + f1_2 = f1 << 1; + + f1_38 = 38ULL * f1; + f2_38 = 38ULL * f2; + f3_38 = 38ULL * f3; + + f3_19 = 19ULL * f3; + f4_19 = 19ULL * f4; + + r0 = ((uint128_t) f0 ) * ((uint128_t) f0); + r0 += ((uint128_t) f1_38) * ((uint128_t) f4); + r0 += ((uint128_t) f2_38) * ((uint128_t) f3); + + r1 = ((uint128_t) f0_2 ) * ((uint128_t) f1); + r1 += ((uint128_t) f2_38) * ((uint128_t) f4); + r1 += ((uint128_t) f3_19) * ((uint128_t) f3); + + r2 = ((uint128_t) f0_2 ) * ((uint128_t) f2); + r2 += ((uint128_t) f1 ) * ((uint128_t) f1); + r2 += ((uint128_t) f3_38) * ((uint128_t) f4); + + r3 = ((uint128_t) f0_2 ) * ((uint128_t) f3); + r3 += ((uint128_t) f1_2 ) * ((uint128_t) f2); + r3 += ((uint128_t) f4_19) * ((uint128_t) f4); + + r4 = ((uint128_t) f0_2 ) * ((uint128_t) f4); + r4 += ((uint128_t) f1_2 ) * ((uint128_t) f3); + r4 += ((uint128_t) f2 ) * ((uint128_t) f2); + + r0 <<= 1; + r1 <<= 1; + r2 <<= 1; + r3 <<= 1; + r4 <<= 1; + + r00 = ((uint64_t) r0) & mask; + carry = r0 >> 51; + r1 += carry; + r01 = ((uint64_t) r1) & mask; + carry = r1 >> 51; + r2 += carry; + r02 = ((uint64_t) r2) & mask; + carry = r2 >> 51; + r3 += carry; + r03 = ((uint64_t) r3) & mask; + carry = r3 >> 51; + r4 += carry; + r04 = ((uint64_t) r4) & mask; + carry = r4 >> 51; + r00 += 19ULL * (uint64_t) carry; + carry = r00 >> 51; + r00 &= mask; + r01 += (uint64_t) carry; + carry = r01 >> 51; + r01 &= mask; + r02 += (uint64_t) carry; + + h[0] = r00; + h[1] = r01; + h[2] = r02; + h[3] = r03; + h[4] = r04; +} + +static inline void +fe25519_mul32(fe25519 h, const fe25519 f, uint32_t n) +{ + const uint64_t mask = 0x7ffffffffffffULL; + uint128_t a; + uint128_t sn = (uint128_t) n; + uint64_t h0, h1, h2, h3, h4; + + a = f[0] * sn; + h0 = ((uint64_t) a) & mask; + a = f[1] * sn + ((uint64_t) (a >> 51)); + h1 = ((uint64_t) a) & mask; + a = f[2] * sn + ((uint64_t) (a >> 51)); + h2 = ((uint64_t) a) & mask; + a = f[3] * sn + ((uint64_t) (a >> 51)); + h3 = ((uint64_t) a) & mask; + a = f[4] * sn + ((uint64_t) (a >> 51)); + h4 = ((uint64_t) a) & mask; + + h0 += (a >> 51) * 19ULL; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/implementations.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/implementations.h new file mode 100644 index 0000000..edbb2b8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/implementations.h @@ -0,0 +1,13 @@ +#ifndef implementations_H +#define implementations_H + +int _crypto_generichash_blake2b_pick_best_implementation(void); +int _crypto_onetimeauth_poly1305_pick_best_implementation(void); +int _crypto_pwhash_argon2_pick_best_implementation(void); +int _crypto_scalarmult_curve25519_pick_best_implementation(void); +int _crypto_stream_chacha20_pick_best_implementation(void); +int _crypto_stream_salsa20_pick_best_implementation(void); +int _crypto_aead_aegis128l_pick_best_implementation(void); +int _crypto_aead_aegis256_pick_best_implementation(void); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/mutex.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/mutex.h new file mode 100644 index 0000000..322b674 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/mutex.h @@ -0,0 +1,7 @@ +#ifndef mutex_H +#define mutex_H 1 + +extern int sodium_crit_enter(void); +extern int sodium_crit_leave(void); + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/softaes.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/softaes.h new file mode 100644 index 0000000..f7a2bd2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/softaes.h @@ -0,0 +1,56 @@ +#ifndef softaes_H +#define softaes_H 1 + +#include + +#include "private/common.h" + +typedef struct SoftAesBlock { + uint32_t w0; + uint32_t w1; + uint32_t w2; + uint32_t w3; +} SoftAesBlock; + +SoftAesBlock softaes_block_encrypt(const SoftAesBlock block, const SoftAesBlock rk); + +static inline SoftAesBlock +softaes_block_load(const uint8_t in[16]) +{ + const SoftAesBlock out = { LOAD32_LE(in + 0), LOAD32_LE(in + 4), LOAD32_LE(in + 8), + LOAD32_LE(in + 12) }; + return out; +} + +static inline SoftAesBlock +softaes_block_load64x2(const uint64_t a, const uint64_t b) +{ + const SoftAesBlock out = { (uint32_t) b, (uint32_t) (b >> 32), (uint32_t) a, + (uint32_t) (a >> 32) }; + return out; +} + +static inline void +softaes_block_store(uint8_t out[16], const SoftAesBlock in) +{ + STORE32_LE(out + 0, in.w0); + STORE32_LE(out + 4, in.w1); + STORE32_LE(out + 8, in.w2); + STORE32_LE(out + 12, in.w3); +} + +static inline SoftAesBlock +softaes_block_xor(const SoftAesBlock a, const SoftAesBlock b) +{ + const SoftAesBlock out = { a.w0 ^ b.w0, a.w1 ^ b.w1, a.w2 ^ b.w2, a.w3 ^ b.w3 }; + return out; +} + +static inline SoftAesBlock +softaes_block_and(const SoftAesBlock a, const SoftAesBlock b) +{ + const SoftAesBlock out = { a.w0 & b.w0, a.w1 & b.w1, a.w2 & b.w2, a.w3 & b.w3 }; + return out; +} + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/sse2_64_32.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/sse2_64_32.h new file mode 100644 index 0000000..fc994bd --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/sse2_64_32.h @@ -0,0 +1,50 @@ +#ifndef sse2_64_32_H +#define sse2_64_32_H 1 + +#include "private/common.h" + +#ifdef HAVE_INTRIN_H +# include +#endif + +#if defined(HAVE_EMMINTRIN_H) && \ + !(defined(__amd64) || defined(__amd64__) || defined(__x86_64__) || \ + defined(_M_X64) || defined(_M_AMD64)) + +# include +# include + +# ifndef _mm_set_epi64x +# define _mm_set_epi64x(Q0, Q1) sodium__mm_set_epi64x((Q0), (Q1)) +static inline __m128i +sodium__mm_set_epi64x(int64_t q1, int64_t q0) +{ + union { int64_t as64; int32_t as32[2]; } x0, x1; + x0.as64 = q0; x1.as64 = q1; + return _mm_set_epi32(x1.as32[1], x1.as32[0], x0.as32[1], x0.as32[0]); +} +# endif + +# ifndef _mm_set1_epi64x +# define _mm_set1_epi64x(Q) sodium__mm_set1_epi64x(Q) +static inline __m128i +sodium__mm_set1_epi64x(int64_t q) +{ + return _mm_set_epi64x(q, q); +} +# endif + +# ifndef _mm_cvtsi64_si128 +# define _mm_cvtsi64_si128(Q) sodium__mm_cvtsi64_si128(Q) +static inline __m128i +sodium__mm_cvtsi64_si128(int64_t q) +{ + union { int64_t as64; int32_t as32[2]; } x; + x.as64 = q; + return _mm_setr_epi32(x.as32[0], x.as32[1], 0, 0); +} +# endif + +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes.h new file mode 100644 index 0000000..c83a4df --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(const randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_internal_random.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_internal_random.h new file mode 100644 index 0000000..2b2b7d6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h new file mode 100644 index 0000000..9e27b67 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/runtime.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/runtime.h new file mode 100644 index 0000000..c1cec85 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/runtime.h @@ -0,0 +1,55 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_armcrypto(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/utils.h b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/utils.h new file mode 100644 index 0000000..f9b3697 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be preferred to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/version.h.in b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/version.h.in new file mode 100644 index 0000000..8a72044 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/include/sodium/version.h.in @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "@VERSION@" + +#define SODIUM_LIBRARY_VERSION_MAJOR @SODIUM_LIBRARY_VERSION_MAJOR@ +#define SODIUM_LIBRARY_VERSION_MINOR @SODIUM_LIBRARY_VERSION_MINOR@ +@SODIUM_LIBRARY_MINIMAL_DEF@ + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c b/components/espressif__libsodium/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c new file mode 100644 index 0000000..1176cd6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c @@ -0,0 +1,635 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#if !defined(_MSC_VER) && !defined(__BORLANDC__) +# include +#endif + +#include +#ifndef _WIN32 +# include +# include +#endif +#ifdef __linux__ +# define _LINUX_SOURCE +#endif +#ifdef HAVE_SYS_RANDOM_H +# include +#endif +#ifdef __linux__ +# ifdef HAVE_GETRANDOM +# define HAVE_LINUX_COMPATIBLE_GETRANDOM +# else +# include +# if defined(SYS_getrandom) && defined(__NR_getrandom) +# define getrandom(B, S, F) syscall(SYS_getrandom, (B), (int) (S), (F)) +# define HAVE_LINUX_COMPATIBLE_GETRANDOM +# endif +# endif +#elif defined(__FreeBSD__) +# include +# if defined(__FreeBSD_version) && __FreeBSD_version >= 1200000 +# define HAVE_LINUX_COMPATIBLE_GETRANDOM +# endif +#endif +#if !defined(NO_BLOCKING_RANDOM_POLL) && defined(__linux__) +# define BLOCK_ON_DEV_RANDOM +#endif +#ifdef BLOCK_ON_DEV_RANDOM +# include +#endif +#ifdef HAVE_RDRAND +# pragma GCC target("rdrnd") +# include +#endif + +#include "core.h" +#include "crypto_core_hchacha20.h" +#include "crypto_stream_chacha20.h" +#include "private/common.h" +#include "randombytes.h" +#include "randombytes_internal_random.h" +#include "runtime.h" +#include "utils.h" + +#ifdef _WIN32 +# include +# include +# define RtlGenRandom SystemFunction036 +# if defined(__cplusplus) +extern "C" +# endif +BOOLEAN NTAPI RtlGenRandom(PVOID RandomBuffer, ULONG RandomBufferLength); +# pragma comment(lib, "advapi32.lib") +# ifdef __BORLANDC__ +# define _ftime ftime +# define _timeb timeb +# endif +#endif + +#define INTERNAL_RANDOM_BLOCK_SIZE crypto_core_hchacha20_OUTPUTBYTES + +#if defined(__OpenBSD__) || defined(__CloudABI__) || defined(__wasi__) +# define HAVE_SAFE_ARC4RANDOM 1 +#endif +#if defined(__CloudABI__) || defined(__wasm__) +# define NONEXISTENT_DEV_RANDOM 1 +#endif + +#ifndef SSIZE_MAX +# define SSIZE_MAX (SIZE_MAX / 2 - 1) +#endif +#ifndef S_ISNAM +# ifdef __COMPCERT__ +# define S_ISNAM(X) 1 +# else +# define S_ISNAM(X) 0 +# endif +#endif + +#if !defined(TLS) && !defined(__STDC_NO_THREADS__) && \ + defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +# define TLS _Thread_local +#endif +#ifndef TLS +# ifdef _WIN32 +# define TLS __declspec(thread) +# else +# define TLS +# endif +#endif + +typedef struct InternalRandomGlobal_ { + int initialized; + int random_data_source_fd; + int getentropy_available; + int getrandom_available; + int rdrand_available; +#ifdef HAVE_GETPID + pid_t pid; +#endif +} InternalRandomGlobal; + +typedef struct InternalRandom_ { + int initialized; + size_t rnd32_outleft; + unsigned char key[crypto_stream_chacha20_KEYBYTES]; + unsigned char rnd32[16U * INTERNAL_RANDOM_BLOCK_SIZE]; + uint64_t nonce; +} InternalRandom; + +static InternalRandomGlobal global = { + SODIUM_C99(.initialized =) 0, + SODIUM_C99(.random_data_source_fd =) -1 +}; + +static TLS InternalRandom stream = { + SODIUM_C99(.initialized =) 0, + SODIUM_C99(.rnd32_outleft =) (size_t) 0U +}; + + +/* + * Get a high-resolution timestamp, as a uint64_t value + */ + +#ifdef _WIN32 +static uint64_t +sodium_hrtime(void) +{ + struct _timeb tb; +# pragma warning(push) +# pragma warning(disable: 4996) + _ftime(&tb); +# pragma warning(pop) + return ((uint64_t) tb.time) * 1000000U + ((uint64_t) tb.millitm) * 1000U; +} + +#else /* _WIN32 */ + +static uint64_t +sodium_hrtime(void) +{ + struct timeval tv; + + if (gettimeofday(&tv, NULL) != 0) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + return ((uint64_t) tv.tv_sec) * 1000000U + (uint64_t) tv.tv_usec; +} +#endif /* _WIN32 */ + +/* + * Initialize the entropy source + */ + +#ifdef _WIN32 + +static void +randombytes_internal_random_init(void) +{ + global.rdrand_available = sodium_runtime_has_rdrand(); +} + +#else /* _WIN32 */ + +# ifdef HAVE_GETENTROPY +static int +_randombytes_getentropy(void * const buf, const size_t size) +{ + assert(size <= 256U); + if (getentropy(buf, size) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} + +static int +randombytes_getentropy(void * const buf_, size_t size) +{ + unsigned char *buf = (unsigned char *) buf_; + size_t chunk_size = 256U; + + do { + if (size < chunk_size) { + chunk_size = size; + assert(chunk_size > (size_t) 0U); + } + if (_randombytes_getentropy(buf, chunk_size) != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + size -= chunk_size; + buf += chunk_size; + } while (size > (size_t) 0U); + + return 0; +} + +# elif defined(HAVE_LINUX_COMPATIBLE_GETRANDOM) + +static int +_randombytes_linux_getrandom(void * const buf, const size_t size) +{ + int readnb; + + assert(size <= 256U); + do { + readnb = getrandom(buf, size, 0); + } while (readnb < 0 && (errno == EINTR || errno == EAGAIN)); + + return (readnb == (int) size) - 1; +} + +static int +randombytes_linux_getrandom(void * const buf_, size_t size) +{ + unsigned char *buf = (unsigned char *) buf_; + size_t chunk_size = 256U; + + do { + if (size < chunk_size) { + chunk_size = size; + assert(chunk_size > (size_t) 0U); + } + if (_randombytes_linux_getrandom(buf, chunk_size) != 0) { + return -1; + } + size -= chunk_size; + buf += chunk_size; + } while (size > (size_t) 0U); + + return 0; +} +# endif + +# ifndef NONEXISTENT_DEV_RANDOM + +# ifdef BLOCK_ON_DEV_RANDOM +static int +randombytes_block_on_dev_random(void) +{ + struct pollfd pfd; + int fd; + int pret; + + fd = open("/dev/random", O_RDONLY); + if (fd == -1) { + return 0; + } + pfd.fd = fd; + pfd.events = POLLIN; + pfd.revents = 0; + do { + pret = poll(&pfd, 1, -1); + } while (pret < 0 && (errno == EINTR || errno == EAGAIN)); + if (pret != 1) { + (void) close(fd); + errno = EIO; + return -1; + } + return close(fd); +} +# endif + +/* LCOV_EXCL_START */ +static int +randombytes_internal_random_random_dev_open(void) +{ + struct stat st; + static const char *devices[] = { +# ifndef USE_BLOCKING_RANDOM + "/dev/urandom", +# endif + "/dev/random", NULL + }; + const char **device = devices; + int fd; + +# ifdef BLOCK_ON_DEV_RANDOM + if (randombytes_block_on_dev_random() != 0) { + return -1; + } +# endif + do { + fd = open(*device, O_RDONLY); + if (fd != -1) { + if (fstat(fd, &st) == 0 && (S_ISNAM(st.st_mode) || S_ISCHR(st.st_mode))) { +# if defined(F_SETFD) && defined(FD_CLOEXEC) + (void) fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); +# endif + return fd; + } + (void) close(fd); + } else if (errno == EINTR) { + continue; + } + device++; + } while (*device != NULL); + + errno = EIO; + return -1; +} +/* LCOV_EXCL_STOP */ + +static ssize_t +safe_read(const int fd, void * const buf_, size_t size) +{ + unsigned char *buf = (unsigned char *) buf_; + ssize_t readnb; + + assert(size > (size_t) 0U); + assert(size <= SSIZE_MAX); + do { + while ((readnb = read(fd, buf, size)) < (ssize_t) 0 && + (errno == EINTR || errno == EAGAIN)); /* LCOV_EXCL_LINE */ + if (readnb < (ssize_t) 0) { + return readnb; /* LCOV_EXCL_LINE */ + } + if (readnb == (ssize_t) 0) { + break; /* LCOV_EXCL_LINE */ + } + size -= (size_t) readnb; + buf += readnb; + } while (size > (ssize_t) 0); + + return (ssize_t) (buf - (unsigned char *) buf_); +} + +# endif /* !NONEXISTENT_DEV_RANDOM */ + +static void +randombytes_internal_random_init(void) +{ + const int errno_save = errno; + + global.rdrand_available = sodium_runtime_has_rdrand(); + global.getentropy_available = 0; + global.getrandom_available = 0; + +# ifdef HAVE_GETENTROPY + { + unsigned char fodder[16]; + + if (randombytes_getentropy(fodder, sizeof fodder) == 0) { + global.getentropy_available = 1; + errno = errno_save; + return; + } + } +# elif defined(HAVE_LINUX_COMPATIBLE_GETRANDOM) + { + unsigned char fodder[16]; + + if (randombytes_linux_getrandom(fodder, sizeof fodder) == 0) { + global.getrandom_available = 1; + errno = errno_save; + return; + } + } +# endif +/* LCOV_EXCL_START */ +# if !defined(NONEXISTENT_DEV_RANDOM) + assert((global.getentropy_available | global.getrandom_available) == 0); + if ((global.random_data_source_fd = + randombytes_internal_random_random_dev_open()) == -1) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + errno = errno_save; + return; +# endif +/* LCOV_EXCL_STOP */ +# ifndef HAVE_SAFE_ARC4RANDOM + sodium_misuse(); +# endif +} + +#endif /* _WIN32 */ + +/* + * (Re)seed the generator using the entropy source + */ + +static void +randombytes_internal_random_stir(void) +{ + stream.nonce = sodium_hrtime(); + assert(stream.nonce != (uint64_t) 0U); + memset(stream.rnd32, 0, sizeof stream.rnd32); + stream.rnd32_outleft = (size_t) 0U; + if (global.initialized == 0) { + randombytes_internal_random_init(); + global.initialized = 1; + } +#ifdef HAVE_GETPID + global.pid = getpid(); +#endif + +#ifndef _WIN32 + +# ifdef HAVE_GETENTROPY + if (global.getentropy_available != 0) { + if (randombytes_getentropy(stream.key, sizeof stream.key) != 0) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + } +# elif defined(HAVE_LINUX_COMPATIBLE_GETRANDOM) + if (global.getrandom_available != 0) { + if (randombytes_linux_getrandom(stream.key, sizeof stream.key) != 0) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + } +# elif defined(NONEXISTENT_DEV_RANDOM) && defined(HAVE_SAFE_ARC4RANDOM) + arc4random_buf(stream.key, sizeof stream.key); +# elif !defined(NONEXISTENT_DEV_RANDOM) + if (global.random_data_source_fd == -1 || + safe_read(global.random_data_source_fd, stream.key, + sizeof stream.key) != (ssize_t) sizeof stream.key) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +# else + sodium_misuse(); +# endif + +#else /* _WIN32 */ + if (! RtlGenRandom((PVOID) stream.key, (ULONG) sizeof stream.key)) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +#endif + + stream.initialized = 1; +} + +/* + * Reseed the generator if it hasn't been initialized yet + */ + +static void +randombytes_internal_random_stir_if_needed(void) +{ +#ifdef HAVE_GETPID + if (stream.initialized == 0) { + randombytes_internal_random_stir(); + } else if (global.pid != getpid()) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +#else + if (stream.initialized == 0) { + randombytes_internal_random_stir(); + } +#endif +} + +/* + * Close the stream, free global resources + */ + +#ifdef _WIN32 +static int +randombytes_internal_random_close(void) +{ + int ret = -1; + + if (global.initialized != 0) { + global.initialized = 0; + ret = 0; + } + sodium_memzero(&stream, sizeof stream); + + return ret; +} +#else +static int +randombytes_internal_random_close(void) +{ + int ret = -1; + +# ifdef HAVE_GETENTROPY + if (global.getentropy_available != 0) { + ret = 0; + } +# elif defined(HAVE_LINUX_COMPATIBLE_GETRANDOM) + if (global.getrandom_available != 0) { + ret = 0; + } +# elif !defined(NONEXISTENT_DEV_RANDOM) && defined(HAVE_SAFE_ARC4RANDOM) + ret = 0; +# else + if (global.random_data_source_fd != -1 && + close(global.random_data_source_fd) == 0) { + global.random_data_source_fd = -1; + global.initialized = 0; +# ifdef HAVE_GETPID + global.pid = (pid_t) 0; +# endif + ret = 0; + } +# endif + + sodium_memzero(&stream, sizeof stream); + + return ret; +} +#endif + +/* + * RDRAND is only used to mitigate prediction if a key is compromised + */ + +static void +randombytes_internal_random_xorhwrand(void) +{ +/* LCOV_EXCL_START */ +#ifdef HAVE_RDRAND + unsigned int r; + + if (global.rdrand_available == 0) { + return; + } + (void) _rdrand32_step(&r); + * (uint32_t *) (void *) + &stream.key[crypto_stream_chacha20_KEYBYTES - 4] ^= (uint32_t) r; +#endif +/* LCOV_EXCL_STOP */ +} + +/* + * XOR the key with another same-length secret + */ + +static inline void +randombytes_internal_random_xorkey(const unsigned char * const mix) +{ + unsigned char *key = stream.key; + size_t i; + + for (i = (size_t) 0U; i < sizeof stream.key; i++) { + key[i] ^= mix[i]; + } +} + +/* + * Put `size` random bytes into `buf` and overwrite the key + */ + +static void +randombytes_internal_random_buf(void * const buf, const size_t size) +{ + size_t i; + int ret; + + randombytes_internal_random_stir_if_needed(); + COMPILER_ASSERT(sizeof stream.nonce == crypto_stream_chacha20_NONCEBYTES); +#if defined(ULLONG_MAX) && defined(SIZE_MAX) +# if SIZE_MAX > ULLONG_MAX + /* coverity[result_independent_of_operands] */ + assert(size <= ULLONG_MAX); +# endif +#endif + ret = crypto_stream_chacha20((unsigned char *) buf, (unsigned long long) size, + (unsigned char *) &stream.nonce, stream.key); + assert(ret == 0); + for (i = 0U; i < sizeof size; i++) { + stream.key[i] ^= ((const unsigned char *) (const void *) &size)[i]; + } + randombytes_internal_random_xorhwrand(); + stream.nonce++; + crypto_stream_chacha20_xor(stream.key, stream.key, sizeof stream.key, + (unsigned char *) &stream.nonce, stream.key); +} + +/* + * Pop a 32-bit value from the random pool + * + * Overwrite the key after the pool gets refilled. + */ + +static uint32_t +randombytes_internal_random(void) +{ + uint32_t val; + int ret; + + COMPILER_ASSERT(sizeof stream.rnd32 >= (sizeof stream.key) + (sizeof val)); + COMPILER_ASSERT(((sizeof stream.rnd32) - (sizeof stream.key)) + % sizeof val == (size_t) 0U); + if (stream.rnd32_outleft <= (size_t) 0U) { + randombytes_internal_random_stir_if_needed(); + COMPILER_ASSERT(sizeof stream.nonce == crypto_stream_chacha20_NONCEBYTES); + ret = crypto_stream_chacha20((unsigned char *) stream.rnd32, + (unsigned long long) sizeof stream.rnd32, + (unsigned char *) &stream.nonce, + stream.key); + assert(ret == 0); + stream.rnd32_outleft = (sizeof stream.rnd32) - (sizeof stream.key); + randombytes_internal_random_xorhwrand(); + randombytes_internal_random_xorkey(&stream.rnd32[stream.rnd32_outleft]); + memset(&stream.rnd32[stream.rnd32_outleft], 0, sizeof stream.key); + stream.nonce++; + } + stream.rnd32_outleft -= sizeof val; + memcpy(&val, &stream.rnd32[stream.rnd32_outleft], sizeof val); + memset(&stream.rnd32[stream.rnd32_outleft], 0, sizeof val); + + return val; +} + +static const char * +randombytes_internal_implementation_name(void) +{ + return "internal"; +} + +struct randombytes_implementation randombytes_internal_implementation = { + SODIUM_C99(.implementation_name =) randombytes_internal_implementation_name, + SODIUM_C99(.random =) randombytes_internal_random, + SODIUM_C99(.stir =) randombytes_internal_random_stir, + SODIUM_C99(.uniform =) NULL, + SODIUM_C99(.buf =) randombytes_internal_random_buf, + SODIUM_C99(.close =) randombytes_internal_random_close +}; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/randombytes/randombytes.c b/components/espressif__libsodium/libsodium/src/libsodium/randombytes/randombytes.c new file mode 100644 index 0000000..2aa2762 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/randombytes/randombytes.c @@ -0,0 +1,199 @@ + +#include +#include +#include +#include + +#include + +#ifdef __EMSCRIPTEN__ +# include +#endif + +#include "core.h" +#include "crypto_stream_chacha20.h" +#include "randombytes.h" +#ifndef RANDOMBYTES_CUSTOM_IMPLEMENTATION +# ifdef RANDOMBYTES_DEFAULT_IMPLEMENTATION +# include "randombytes_internal.h" +# endif +# include "randombytes_sysrandom.h" +#endif +#include "private/common.h" + +/* C++Builder defines a "random" macro */ +#undef random + +static const randombytes_implementation *implementation; + +#ifndef RANDOMBYTES_DEFAULT_IMPLEMENTATION +# ifdef __EMSCRIPTEN__ +# define RANDOMBYTES_DEFAULT_IMPLEMENTATION NULL +# else +# define RANDOMBYTES_DEFAULT_IMPLEMENTATION &randombytes_sysrandom_implementation; +# endif +#endif + +static void +randombytes_init_if_needed(void) +{ + if (implementation == NULL) { + implementation = RANDOMBYTES_DEFAULT_IMPLEMENTATION; + randombytes_stir(); + } +} + +int +randombytes_set_implementation(const randombytes_implementation *impl) +{ + implementation = impl; + + return 0; +} + +const char * +randombytes_implementation_name(void) +{ +#ifndef __EMSCRIPTEN__ + randombytes_init_if_needed(); + return implementation->implementation_name(); +#else + return "js"; +#endif +} + +uint32_t +randombytes_random(void) +{ +#ifndef __EMSCRIPTEN__ + randombytes_init_if_needed(); + return implementation->random(); +#else + return EM_ASM_INT_V({ + return Module.getRandomValue(); + }); +#endif +} + +void +randombytes_stir(void) +{ +#ifndef __EMSCRIPTEN__ + randombytes_init_if_needed(); + if (implementation->stir != NULL) { + implementation->stir(); + } +#else + EM_ASM({ + if (Module.getRandomValue === undefined) { + try { + var window_ = 'object' === typeof window ? window : self; + var crypto_ = typeof window_.crypto !== 'undefined' ? window_.crypto : window_.msCrypto; + var randomValuesStandard = function() { + var buf = new Uint32Array(1); + crypto_.getRandomValues(buf); + return buf[0] >>> 0; + }; + randomValuesStandard(); + Module.getRandomValue = randomValuesStandard; + } catch (e) { + try { + var crypto = require('crypto'); + var randomValueNodeJS = function() { + var buf = crypto['randomBytes'](4); + return (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]) >>> 0; + }; + randomValueNodeJS(); + Module.getRandomValue = randomValueNodeJS; + } catch (e) { + throw 'No secure random number generator found'; + } + } + } + }); +#endif +} + +uint32_t +randombytes_uniform(const uint32_t upper_bound) +{ + uint32_t min; + uint32_t r; + +#ifndef __EMSCRIPTEN__ + randombytes_init_if_needed(); + if (implementation->uniform != NULL) { + return implementation->uniform(upper_bound); + } +#endif + if (upper_bound < 2) { + return 0; + } + min = (1U + ~upper_bound) % upper_bound; /* = 2**32 mod upper_bound */ + do { + r = randombytes_random(); + } while (r < min); + /* r is now clamped to a set whose size mod upper_bound == 0 + * the worst case (2**31+1) requires ~ 2 attempts */ + + return r % upper_bound; +} + +void +randombytes_buf(void * const buf, const size_t size) +{ +#ifndef __EMSCRIPTEN__ + randombytes_init_if_needed(); + if (size > (size_t) 0U) { + implementation->buf(buf, size); + } +#else + unsigned char *p = (unsigned char *) buf; + size_t i; + + for (i = (size_t) 0U; i < size; i++) { + p[i] = (unsigned char) randombytes_random(); + } +#endif +} + +void +randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) +{ + static const unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES] = { + 'L', 'i', 'b', 's', 'o', 'd', 'i', 'u', 'm', 'D', 'R', 'G' + }; + + COMPILER_ASSERT(randombytes_SEEDBYTES == crypto_stream_chacha20_ietf_KEYBYTES); +#if SIZE_MAX > 0x4000000000ULL + COMPILER_ASSERT(randombytes_BYTES_MAX <= 0x4000000000ULL); + if (size > 0x4000000000ULL) { + sodium_misuse(); + } +#endif + crypto_stream_chacha20_ietf((unsigned char *) buf, (unsigned long long) size, + nonce, seed); +} + +size_t +randombytes_seedbytes(void) +{ + return randombytes_SEEDBYTES; +} + +int +randombytes_close(void) +{ + if (implementation != NULL && implementation->close != NULL) { + return implementation->close(); + } + return 0; +} + +void +randombytes(unsigned char * const buf, const unsigned long long buf_len) +{ + assert(buf_len <= SIZE_MAX); + randombytes_buf(buf, (size_t) buf_len); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c b/components/espressif__libsodium/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c new file mode 100644 index 0000000..ed1ebee --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c @@ -0,0 +1,396 @@ +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +# include +#endif +#include + +#include +#ifndef _WIN32 +# include +# include +#endif +#ifdef __linux__ +# define _LINUX_SOURCE +#endif +#ifdef HAVE_SYS_RANDOM_H +# include +#endif +#ifdef __linux__ +# ifdef HAVE_GETRANDOM +# define HAVE_LINUX_COMPATIBLE_GETRANDOM +# else +# include +# if defined(SYS_getrandom) && defined(__NR_getrandom) +# define getrandom(B, S, F) syscall(SYS_getrandom, (B), (int) (S), (F)) +# define HAVE_LINUX_COMPATIBLE_GETRANDOM +# endif +# endif +#elif defined(__FreeBSD__) || defined(__DragonFly__) +# include +# if (defined(__FreeBSD_version) && __FreeBSD_version >= 1200000) || \ + (defined(__DragonFly_version) && __DragonFly_version >= 500700) +# define HAVE_LINUX_COMPATIBLE_GETRANDOM +# endif +#endif +#if !defined(NO_BLOCKING_RANDOM_POLL) && defined(__linux__) +# define BLOCK_ON_DEV_RANDOM +#endif +#ifdef BLOCK_ON_DEV_RANDOM +# include +#endif + +#include "core.h" +#include "private/common.h" +#include "randombytes.h" +#include "randombytes_sysrandom.h" +#include "utils.h" + +#ifdef _WIN32 +/* `RtlGenRandom` is used over `CryptGenRandom` on Microsoft Windows based systems: + * - `CryptGenRandom` requires pulling in `CryptoAPI` which causes unnecessary + * memory overhead if this API is not being used for other purposes + * - `RtlGenRandom` is thus called directly instead. A detailed explanation + * can be found here: https://blogs.msdn.microsoft.com/michael_howard/2005/01/14/cryptographically-secure-random-number-on-windows-without-using-cryptoapi/ + * + * In spite of the disclaimer on the `RtlGenRandom` documentation page that was + * written back in the Windows XP days, this function is here to stay. The CRT + * function `rand_s()` directly depends on it, so touching it would break many + * applications released since Windows XP. + * + * Also note that Rust, Firefox and BoringSSL (thus, Google Chrome and everything + * based on Chromium) also depend on it, and that libsodium allows the RNG to be + * replaced without patching nor recompiling the library. + */ +# include +# define RtlGenRandom SystemFunction036 +# if defined(__cplusplus) +extern "C" +# endif +BOOLEAN NTAPI RtlGenRandom(PVOID RandomBuffer, ULONG RandomBufferLength); +# pragma comment(lib, "advapi32.lib") +#endif + +#if defined(__OpenBSD__) || defined(__CloudABI__) || defined(__wasi__) +# define HAVE_SAFE_ARC4RANDOM 1 +#endif + +#ifndef SSIZE_MAX +# define SSIZE_MAX (SIZE_MAX / 2 - 1) +#endif + +#ifdef HAVE_SAFE_ARC4RANDOM + +static uint32_t +randombytes_sysrandom(void) +{ + return arc4random(); +} + +static void +randombytes_sysrandom_stir(void) +{ +} + +static void +randombytes_sysrandom_buf(void * const buf, const size_t size) +{ + arc4random_buf(buf, size); +} + +static int +randombytes_sysrandom_close(void) +{ + return 0; +} + +#else /* HAVE_SAFE_ARC4RANDOM */ + +typedef struct SysRandom_ { + int random_data_source_fd; + int initialized; + int getrandom_available; +} SysRandom; + +static SysRandom stream = { + SODIUM_C99(.random_data_source_fd =) -1, + SODIUM_C99(.initialized =) 0, + SODIUM_C99(.getrandom_available =) 0 +}; + +# ifndef _WIN32 +static ssize_t +safe_read(const int fd, void * const buf_, size_t size) +{ + unsigned char *buf = (unsigned char *) buf_; + ssize_t readnb; + + assert(size > (size_t) 0U); + assert(size <= SSIZE_MAX); + do { + while ((readnb = read(fd, buf, size)) < (ssize_t) 0 && + (errno == EINTR || errno == EAGAIN)); /* LCOV_EXCL_LINE */ + if (readnb < (ssize_t) 0) { + return readnb; /* LCOV_EXCL_LINE */ + } + if (readnb == (ssize_t) 0) { + break; /* LCOV_EXCL_LINE */ + } + size -= (size_t) readnb; + buf += readnb; + } while (size > (ssize_t) 0); + + return (ssize_t) (buf - (unsigned char *) buf_); +} + +# ifdef BLOCK_ON_DEV_RANDOM +static int +randombytes_block_on_dev_random(void) +{ + struct pollfd pfd; + int fd; + int pret; + + fd = open("/dev/random", O_RDONLY); + if (fd == -1) { + return 0; + } + pfd.fd = fd; + pfd.events = POLLIN; + pfd.revents = 0; + do { + pret = poll(&pfd, 1, -1); + } while (pret < 0 && (errno == EINTR || errno == EAGAIN)); + if (pret != 1) { + (void) close(fd); + errno = EIO; + return -1; + } + return close(fd); +} +# endif /* BLOCK_ON_DEV_RANDOM */ + +static int +randombytes_sysrandom_random_dev_open(void) +{ +/* LCOV_EXCL_START */ + struct stat st; + static const char *devices[] = { +# ifndef USE_BLOCKING_RANDOM + "/dev/urandom", +# endif + "/dev/random", NULL + }; + const char **device = devices; + int fd; + +# ifdef BLOCK_ON_DEV_RANDOM + if (randombytes_block_on_dev_random() != 0) { + return -1; + } +# endif + do { + fd = open(*device, O_RDONLY); + if (fd != -1) { + if (fstat(fd, &st) == 0 && +# ifdef __COMPCERT__ + 1 +# elif defined(S_ISNAM) + (S_ISNAM(st.st_mode) || S_ISCHR(st.st_mode)) +# else + S_ISCHR(st.st_mode) +# endif + ) { +# if defined(F_SETFD) && defined(FD_CLOEXEC) + (void) fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); +# endif + return fd; + } + (void) close(fd); + } else if (errno == EINTR) { + continue; + } + device++; + } while (*device != NULL); + + errno = EIO; + return -1; +/* LCOV_EXCL_STOP */ +} + +# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM +static int +_randombytes_linux_getrandom(void * const buf, const size_t size) +{ + int readnb; + + assert(size <= 256U); + do { + readnb = getrandom(buf, size, 0); + } while (readnb < 0 && (errno == EINTR || errno == EAGAIN)); + + return (readnb == (int) size) - 1; +} + +static int +randombytes_linux_getrandom(void * const buf_, size_t size) +{ + unsigned char *buf = (unsigned char *) buf_; + size_t chunk_size = 256U; + + do { + if (size < chunk_size) { + chunk_size = size; + assert(chunk_size > (size_t) 0U); + } + if (_randombytes_linux_getrandom(buf, chunk_size) != 0) { + return -1; + } + size -= chunk_size; + buf += chunk_size; + } while (size > (size_t) 0U); + + return 0; +} +# endif /* HAVE_LINUX_COMPATIBLE_GETRANDOM */ + +static void +randombytes_sysrandom_init(void) +{ + const int errno_save = errno; + +# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM + { + unsigned char fodder[16]; + + if (randombytes_linux_getrandom(fodder, sizeof fodder) == 0) { + stream.getrandom_available = 1; + errno = errno_save; + return; + } + stream.getrandom_available = 0; + } +# endif + + if ((stream.random_data_source_fd = + randombytes_sysrandom_random_dev_open()) == -1) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + errno = errno_save; +} + +# else /* _WIN32 */ + +static void +randombytes_sysrandom_init(void) +{ +} +# endif /* _WIN32 */ + +static void +randombytes_sysrandom_stir(void) +{ + if (stream.initialized == 0) { + randombytes_sysrandom_init(); + stream.initialized = 1; + } +} + +static void +randombytes_sysrandom_stir_if_needed(void) +{ + if (stream.initialized == 0) { + randombytes_sysrandom_stir(); + } +} + +static int +randombytes_sysrandom_close(void) +{ + int ret = -1; + +# ifndef _WIN32 + if (stream.random_data_source_fd != -1 && + close(stream.random_data_source_fd) == 0) { + stream.random_data_source_fd = -1; + stream.initialized = 0; + ret = 0; + } +# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM + if (stream.getrandom_available != 0) { + ret = 0; + } +# endif +# else /* _WIN32 */ + if (stream.initialized != 0) { + stream.initialized = 0; + ret = 0; + } +# endif /* _WIN32 */ + return ret; +} + +static void +randombytes_sysrandom_buf(void * const buf, const size_t size) +{ + randombytes_sysrandom_stir_if_needed(); +# if defined(ULLONG_MAX) && defined(SIZE_MAX) +# if SIZE_MAX > ULLONG_MAX + /* coverity[result_independent_of_operands] */ + assert(size <= ULLONG_MAX); +# endif +# endif +# ifndef _WIN32 +# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM + if (stream.getrandom_available != 0) { + if (randombytes_linux_getrandom(buf, size) != 0) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + return; + } +# endif + if (stream.random_data_source_fd == -1 || + safe_read(stream.random_data_source_fd, buf, size) != (ssize_t) size) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +# else /* _WIN32 */ + COMPILER_ASSERT(randombytes_BYTES_MAX <= 0xffffffffUL); + if (size > (size_t) 0xffffffffUL) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + if (! RtlGenRandom((PVOID) buf, (ULONG) size)) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +# endif /* _WIN32 */ +} + +static uint32_t +randombytes_sysrandom(void) +{ + uint32_t r; + + randombytes_sysrandom_buf(&r, sizeof r); + + return r; +} + +#endif /* HAVE_SAFE_ARC4RANDOM */ + +static const char * +randombytes_sysrandom_implementation_name(void) +{ + return "sysrandom"; +} + +struct randombytes_implementation randombytes_sysrandom_implementation = { + SODIUM_C99(.implementation_name =) randombytes_sysrandom_implementation_name, + SODIUM_C99(.random =) randombytes_sysrandom, + SODIUM_C99(.stir =) randombytes_sysrandom_stir, + SODIUM_C99(.uniform =) NULL, + SODIUM_C99(.buf =) randombytes_sysrandom_buf, + SODIUM_C99(.close =) randombytes_sysrandom_close +}; diff --git a/components/espressif__libsodium/libsodium/src/libsodium/sodium/codecs.c b/components/espressif__libsodium/libsodium/src/libsodium/sodium/codecs.c new file mode 100644 index 0000000..3650808 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/sodium/codecs.c @@ -0,0 +1,335 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "core.h" +#include "private/common.h" +#include "utils.h" + +/* Derived from original code by CodesInChaos */ +char * +sodium_bin2hex(char *const hex, const size_t hex_maxlen, + const unsigned char *const bin, const size_t bin_len) +{ + size_t i = (size_t) 0U; + unsigned int x; + int b; + int c; + + if (bin_len >= SIZE_MAX / 2 || hex_maxlen <= bin_len * 2U) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + while (i < bin_len) { + c = bin[i] & 0xf; + b = bin[i] >> 4; + x = (unsigned char) (87U + c + (((c - 10U) >> 8) & ~38U)) << 8 | + (unsigned char) (87U + b + (((b - 10U) >> 8) & ~38U)); + hex[i * 2U] = (char) x; + x >>= 8; + hex[i * 2U + 1U] = (char) x; + i++; + } + hex[i * 2U] = 0U; + + return hex; +} + +int +sodium_hex2bin(unsigned char *const bin, const size_t bin_maxlen, + const char *const hex, const size_t hex_len, + const char *const ignore, size_t *const bin_len, + const char **const hex_end) +{ + size_t bin_pos = (size_t) 0U; + size_t hex_pos = (size_t) 0U; + int ret = 0; + unsigned char c; + unsigned char c_acc = 0U; + unsigned char c_alpha0, c_alpha; + unsigned char c_num0, c_num; + unsigned char c_val; + unsigned char state = 0U; + + while (hex_pos < hex_len) { + c = (unsigned char) hex[hex_pos]; + c_num = c ^ 48U; + c_num0 = (c_num - 10U) >> 8; + c_alpha = (c & ~32U) - 55U; + c_alpha0 = ((c_alpha - 10U) ^ (c_alpha - 16U)) >> 8; + if ((c_num0 | c_alpha0) == 0U) { + if (ignore != NULL && state == 0U && strchr(ignore, c) != NULL) { + hex_pos++; + continue; + } + break; + } + c_val = (c_num0 & c_num) | (c_alpha0 & c_alpha); + if (bin_pos >= bin_maxlen) { + ret = -1; + errno = ERANGE; + break; + } + if (state == 0U) { + c_acc = c_val * 16U; + } else { + bin[bin_pos++] = c_acc | c_val; + } + state = ~state; + hex_pos++; + } + if (state != 0U) { + hex_pos--; + errno = EINVAL; + ret = -1; + } + if (ret != 0) { + bin_pos = (size_t) 0U; + } + if (hex_end != NULL) { + *hex_end = &hex[hex_pos]; + } else if (hex_pos != hex_len) { + errno = EINVAL; + ret = -1; + } + if (bin_len != NULL) { + *bin_len = bin_pos; + } + return ret; +} + +/* + * Some macros for constant-time comparisons. These work over values in + * the 0..255 range. Returned value is 0x00 on "false", 0xFF on "true". + * + * Original code by Thomas Pornin. + */ +#define EQ(x, y) \ + ((((0U - ((unsigned int) (x) ^ (unsigned int) (y))) >> 8) & 0xFF) ^ 0xFF) +#define GT(x, y) ((((unsigned int) (y) - (unsigned int) (x)) >> 8) & 0xFF) +#define GE(x, y) (GT(y, x) ^ 0xFF) +#define LT(x, y) GT(y, x) +#define LE(x, y) GE(y, x) + +static int +b64_byte_to_char(unsigned int x) +{ + return (LT(x, 26) & (x + 'A')) | + (GE(x, 26) & LT(x, 52) & (x + ('a' - 26))) | + (GE(x, 52) & LT(x, 62) & (x + ('0' - 52))) | (EQ(x, 62) & '+') | + (EQ(x, 63) & '/'); +} + +static unsigned int +b64_char_to_byte(int c) +{ + const unsigned int x = + (GE(c, 'A') & LE(c, 'Z') & (c - 'A')) | + (GE(c, 'a') & LE(c, 'z') & (c - ('a' - 26))) | + (GE(c, '0') & LE(c, '9') & (c - ('0' - 52))) | (EQ(c, '+') & 62) | + (EQ(c, '/') & 63); + + return x | (EQ(x, 0) & (EQ(c, 'A') ^ 0xFF)); +} + +static int +b64_byte_to_urlsafe_char(unsigned int x) +{ + return (LT(x, 26) & (x + 'A')) | + (GE(x, 26) & LT(x, 52) & (x + ('a' - 26))) | + (GE(x, 52) & LT(x, 62) & (x + ('0' - 52))) | (EQ(x, 62) & '-') | + (EQ(x, 63) & '_'); +} + +static unsigned int +b64_urlsafe_char_to_byte(int c) +{ + const unsigned x = + (GE(c, 'A') & LE(c, 'Z') & (c - 'A')) | + (GE(c, 'a') & LE(c, 'z') & (c - ('a' - 26))) | + (GE(c, '0') & LE(c, '9') & (c - ('0' - 52))) | (EQ(c, '-') & 62) | + (EQ(c, '_') & 63); + + return x | (EQ(x, 0) & (EQ(c, 'A') ^ 0xFF)); +} + + +#define VARIANT_NO_PADDING_MASK 0x2U +#define VARIANT_URLSAFE_MASK 0x4U + +static void +sodium_base64_check_variant(const int variant) +{ + if ((((unsigned int) variant) & ~ 0x6U) != 0x1U) { + sodium_misuse(); + } +} + +size_t +sodium_base64_encoded_len(const size_t bin_len, const int variant) +{ + sodium_base64_check_variant(variant); + + return sodium_base64_ENCODED_LEN(bin_len, variant); +} + +char * +sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) +{ + size_t acc_len = (size_t) 0; + size_t b64_len; + size_t b64_pos = (size_t) 0; + size_t bin_pos = (size_t) 0; + size_t nibbles; + size_t remainder; + unsigned int acc = 0U; + + sodium_base64_check_variant(variant); + nibbles = bin_len / 3; + remainder = bin_len - 3 * nibbles; + b64_len = nibbles * 4; + if (remainder != 0) { + if ((((unsigned int) variant) & VARIANT_NO_PADDING_MASK) == 0U) { + b64_len += 4; + } else { + b64_len += 2 + (remainder >> 1); + } + } + if (b64_maxlen <= b64_len) { + sodium_misuse(); + } + if ((((unsigned int) variant) & VARIANT_URLSAFE_MASK) != 0U) { + while (bin_pos < bin_len) { + acc = (acc << 8) + bin[bin_pos++]; + acc_len += 8; + while (acc_len >= 6) { + acc_len -= 6; + b64[b64_pos++] = (char) b64_byte_to_urlsafe_char((acc >> acc_len) & 0x3F); + } + } + if (acc_len > 0) { + b64[b64_pos++] = (char) b64_byte_to_urlsafe_char((acc << (6 - acc_len)) & 0x3F); + } + } else { + while (bin_pos < bin_len) { + acc = (acc << 8) + bin[bin_pos++]; + acc_len += 8; + while (acc_len >= 6) { + acc_len -= 6; + b64[b64_pos++] = (char) b64_byte_to_char((acc >> acc_len) & 0x3F); + } + } + if (acc_len > 0) { + b64[b64_pos++] = (char) b64_byte_to_char((acc << (6 - acc_len)) & 0x3F); + } + } + assert(b64_pos <= b64_len); + while (b64_pos < b64_len) { + b64[b64_pos++] = '='; + } + do { + b64[b64_pos++] = 0U; + } while (b64_pos < b64_maxlen); + + return b64; +} + +static int +_sodium_base642bin_skip_padding(const char * const b64, const size_t b64_len, + size_t * const b64_pos_p, + const char * const ignore, size_t padding_len) +{ + int c; + + while (padding_len > 0) { + if (*b64_pos_p >= b64_len) { + errno = ERANGE; + return -1; + } + ACQUIRE_FENCE; + c = b64[*b64_pos_p]; + if (c == '=') { + padding_len--; + } else if (ignore == NULL || strchr(ignore, c) == NULL) { + errno = EINVAL; + return -1; + } + (*b64_pos_p)++; + } + return 0; +} + +int +sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) +{ + size_t acc_len = (size_t) 0; + size_t b64_pos = (size_t) 0; + size_t bin_pos = (size_t) 0; + int is_urlsafe; + int ret = 0; + unsigned int acc = 0U; + unsigned int d; + char c; + + sodium_base64_check_variant(variant); + is_urlsafe = ((unsigned int) variant) & VARIANT_URLSAFE_MASK; + while (b64_pos < b64_len) { + c = b64[b64_pos]; + if (is_urlsafe) { + d = b64_urlsafe_char_to_byte(c); + } else { + d = b64_char_to_byte(c); + } + if (d == 0xFF) { + if (ignore != NULL && strchr(ignore, c) != NULL) { + b64_pos++; + continue; + } + break; + } + acc = (acc << 6) + d; + acc_len += 6; + if (acc_len >= 8) { + acc_len -= 8; + if (bin_pos >= bin_maxlen) { + errno = ERANGE; + ret = -1; + break; + } + bin[bin_pos++] = (acc >> acc_len) & 0xFF; + } + b64_pos++; + } + if (acc_len > 4U || (acc & ((1U << acc_len) - 1U)) != 0U) { + ret = -1; + } else if (ret == 0 && + (((unsigned int) variant) & VARIANT_NO_PADDING_MASK) == 0U) { + ret = _sodium_base642bin_skip_padding(b64, b64_len, &b64_pos, ignore, + acc_len / 2); + } + if (ret != 0) { + bin_pos = (size_t) 0U; + } else if (ignore != NULL) { + while (b64_pos < b64_len && strchr(ignore, b64[b64_pos]) != NULL) { + b64_pos++; + } + } + if (b64_end != NULL) { + *b64_end = &b64[b64_pos]; + } else if (b64_pos != b64_len) { + errno = EINVAL; + ret = -1; + } + if (bin_len != NULL) { + *bin_len = bin_pos; + } + return ret; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/sodium/core.c b/components/espressif__libsodium/libsodium/src/libsodium/sodium/core.c new file mode 100644 index 0000000..214ef5f --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/sodium/core.c @@ -0,0 +1,216 @@ + +#include +#include +#include +#include +#ifdef _WIN32 +# include +#elif defined(HAVE_PTHREAD) +# include +#endif + +#include "core.h" +#include "crypto_generichash.h" +#include "crypto_onetimeauth.h" +#include "crypto_scalarmult.h" +#include "crypto_stream_chacha20.h" +#include "crypto_stream_salsa20.h" +#include "randombytes.h" +#include "runtime.h" +#include "utils.h" +#include "private/implementations.h" +#include "private/mutex.h" + +static volatile int initialized; +static volatile int locked; + +int +sodium_init(void) +{ + if (sodium_crit_enter() != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + if (initialized != 0) { + if (sodium_crit_leave() != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + return 1; + } + _sodium_runtime_get_cpu_features(); + randombytes_stir(); + _sodium_alloc_init(); + _crypto_pwhash_argon2_pick_best_implementation(); + _crypto_generichash_blake2b_pick_best_implementation(); + _crypto_onetimeauth_poly1305_pick_best_implementation(); + _crypto_scalarmult_curve25519_pick_best_implementation(); + _crypto_stream_chacha20_pick_best_implementation(); + _crypto_stream_salsa20_pick_best_implementation(); + _crypto_aead_aegis128l_pick_best_implementation(); + _crypto_aead_aegis256_pick_best_implementation(); + initialized = 1; + if (sodium_crit_leave() != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} + +#ifdef _WIN32 + +static CRITICAL_SECTION _sodium_lock; +static volatile LONG _sodium_lock_initialized; + +static int +_sodium_crit_init(void) +{ + LONG status = 0L; + + while ((status = InterlockedCompareExchange(&_sodium_lock_initialized, + 1L, 0L)) == 1L) { + Sleep(0); + } + + switch (status) { + case 0L: + InitializeCriticalSection(&_sodium_lock); + return InterlockedExchange(&_sodium_lock_initialized, 2L) == 1L ? 0 : -1; + case 2L: + return 0; + default: /* should never be reached */ + return -1; + } +} + +int +sodium_crit_enter(void) +{ + if (_sodium_crit_init() != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + EnterCriticalSection(&_sodium_lock); + assert(locked == 0); + locked = 1; + + return 0; +} + +int +sodium_crit_leave(void) +{ + if (locked == 0) { +# ifdef EPERM + errno = EPERM; +# endif + return -1; + } + locked = 0; + LeaveCriticalSection(&_sodium_lock); + + return 0; +} + +#elif defined(HAVE_PTHREAD) && !defined(__EMSCRIPTEN__) + +static pthread_mutex_t _sodium_lock = PTHREAD_MUTEX_INITIALIZER; + +int +sodium_crit_enter(void) +{ + int ret; + + if ((ret = pthread_mutex_lock(&_sodium_lock)) == 0) { + assert(locked == 0); + locked = 1; + } + return ret; +} + +int +sodium_crit_leave(void) +{ + if (locked == 0) { +# ifdef EPERM + errno = EPERM; +# endif + return -1; + } + locked = 0; + + return pthread_mutex_unlock(&_sodium_lock); +} + +#elif defined(HAVE_ATOMIC_OPS) && !defined(__EMSCRIPTEN__) + +static volatile int _sodium_lock; + +int +sodium_crit_enter(void) +{ +# ifdef HAVE_NANOSLEEP + struct timespec q; + memset(&q, 0, sizeof q); +# endif + while (__sync_lock_test_and_set(&_sodium_lock, 1) != 0) { +# ifdef HAVE_NANOSLEEP + (void) nanosleep(&q, NULL); +# elif defined(__x86_64__) || defined(__i386__) + __asm__ __volatile__ ("pause"); +# endif + } + return 0; +} + +int +sodium_crit_leave(void) +{ + __sync_lock_release(&_sodium_lock); + + return 0; +} + +#else + +int +sodium_crit_enter(void) +{ + return 0; +} + +int +sodium_crit_leave(void) +{ + return 0; +} + +#endif + +static void (*_misuse_handler)(void); + +void +sodium_misuse(void) +{ + void (*handler)(void); + + (void) sodium_crit_leave(); + if (sodium_crit_enter() == 0) { + handler = _misuse_handler; + if (handler != NULL) { + handler(); + } + } +/* LCOV_EXCL_START */ + abort(); +} +/* LCOV_EXCL_STOP */ + +int +sodium_set_misuse_handler(void (*handler)(void)) +{ + if (sodium_crit_enter() != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + _misuse_handler = handler; + if (sodium_crit_leave() != 0) { + return -1; /* LCOV_EXCL_LINE */ + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/sodium/runtime.c b/components/espressif__libsodium/libsodium/src/libsodium/sodium/runtime.c new file mode 100644 index 0000000..c3fc2e0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/sodium/runtime.c @@ -0,0 +1,392 @@ +#include +#include +#ifdef HAVE_ANDROID_GETCPUFEATURES +# include +#endif +#ifdef __APPLE__ +# include +# include +# include +#endif +#ifdef HAVE_SYS_AUXV_H +# include +#endif + +#include "private/common.h" +#include "runtime.h" + +typedef struct CPUFeatures_ { + int initialized; + int has_neon; + int has_armcrypto; + int has_sse2; + int has_sse3; + int has_ssse3; + int has_sse41; + int has_avx; + int has_avx2; + int has_avx512f; + int has_pclmul; + int has_aesni; + int has_rdrand; +} CPUFeatures; + +static CPUFeatures _cpu_features; + +#define CPUID_EBX_AVX2 0x00000020 +#define CPUID_EBX_AVX512F 0x00010000 + +#define CPUID_ECX_SSE3 0x00000001 +#define CPUID_ECX_PCLMUL 0x00000002 +#define CPUID_ECX_SSSE3 0x00000200 +#define CPUID_ECX_SSE41 0x00080000 +#define CPUID_ECX_AESNI 0x02000000 +#define CPUID_ECX_XSAVE 0x04000000 +#define CPUID_ECX_OSXSAVE 0x08000000 +#define CPUID_ECX_AVX 0x10000000 +#define CPUID_ECX_RDRAND 0x40000000 + +#define CPUID_EDX_SSE2 0x04000000 + +#define XCR0_SSE 0x00000002 +#define XCR0_AVX 0x00000004 +#define XCR0_OPMASK 0x00000020 +#define XCR0_ZMM_HI256 0x00000040 +#define XCR0_HI16_ZMM 0x00000080 + +static int +_sodium_runtime_arm_cpu_features(CPUFeatures * const cpu_features) +{ + cpu_features->has_neon = 0; + cpu_features->has_armcrypto = 0; + +#ifndef __ARM_ARCH + return -1; /* LCOV_EXCL_LINE */ +#endif + +#if defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) + cpu_features->has_neon = 1; +#elif defined(HAVE_ANDROID_GETCPUFEATURES) + cpu_features->has_neon = + (android_getCpuFeatures() & ANDROID_CPU_ARM64_FEATURE_ASIMD) != 0x0; +#elif (defined(__aarch64__) || defined(_M_ARM64)) && defined(AT_HWCAP) +# ifdef HAVE_GETAUXVAL + cpu_features->has_neon = (getauxval(AT_HWCAP) & (1L << 1)) != 0; +# elif defined(HAVE_ELF_AUX_INFO) + { + unsigned long buf; + if (elf_aux_info(AT_HWCAP, (void *) &buf, (int) sizeof buf) == 0) { + cpu_features->has_neon = (buf & (1L << 1)) != 0; + } + } +# endif +#elif defined(__arm__) && defined(AT_HWCAP) +# ifdef HAVE_GETAUXVAL + cpu_features->has_neon = (getauxval(AT_HWCAP) & (1L << 12)) != 0; +# elif defined(HAVE_ELF_AUX_INFO) + { + unsigned long buf; + if (elf_aux_info(AT_HWCAP, (void *) &buf, (int) sizeof buf) == 0) { + cpu_features->has_neon = (buf & (1L << 12)) != 0; + } + } +# endif +#endif + + if (cpu_features->has_neon == 0) { + return 0; + } + +#if defined(__ARM_FEATURE_CRYPTO) && defined(__ARM_FEATURE_AES) + cpu_features->has_armcrypto = 1; +#elif defined(_M_ARM64) + cpu_features->has_armcrypto = 1; /* assuming all CPUs supported by ARM Windows have the crypto extensions */ +#elif defined(__APPLE__) && defined(CPU_TYPE_ARM64) && defined(CPU_SUBTYPE_ARM64E) + { + cpu_type_t cpu_type; + cpu_subtype_t cpu_subtype; + size_t cpu_type_len = sizeof cpu_type; + size_t cpu_subtype_len = sizeof cpu_subtype; + + if (sysctlbyname("hw.cputype", &cpu_type, &cpu_type_len, + NULL, 0) == 0 && cpu_type == CPU_TYPE_ARM64 && + sysctlbyname("hw.cpusubtype", &cpu_subtype, &cpu_subtype_len, + NULL, 0) == 0 && + (cpu_subtype == CPU_SUBTYPE_ARM64E || + cpu_subtype == CPU_SUBTYPE_ARM64_V8)) { + cpu_features->has_armcrypto = 1; + } + } +#elif defined(HAVE_ANDROID_GETCPUFEATURES) + cpu_features->has_armcrypto = + (android_getCpuFeatures() & ANDROID_CPU_ARM64_FEATURE_AES) != 0x0; +#elif (defined(__aarch64__) || defined(_M_ARM64)) && defined(AT_HWCAP) +# ifdef HAVE_GETAUXVAL + cpu_features->has_armcrypto = (getauxval(AT_HWCAP) & (1L << 3)) != 0; +# elif defined(HAVE_ELF_AUX_INFO) + { + unsigned long buf; + if (elf_aux_info(AT_HWCAP, (void *) &buf, (int) sizeof buf) == 0) { + cpu_features->has_armcrypto = (buf & (1L << 3)) != 0; + } + } +# endif +#elif defined(__arm__) && defined(AT_HWCAP2) +# ifdef HAVE_GETAUXVAL + cpu_features->has_armcrypto = (getauxval(AT_HWCAP2) & (1L << 0)) != 0; +# elif defined(HAVE_ELF_AUX_INFO) + { + unsigned long buf; + if (elf_aux_info(AT_HWCAP2, (void *) &buf, (int) sizeof buf) == 0) { + cpu_features->has_armcrypto = (buf & (1L << 0)) != 0; + } + } +# endif +#endif + + return 0; +} + +static void +_cpuid(unsigned int cpu_info[4U], const unsigned int cpu_info_type) +{ +#if defined(_MSC_VER) && \ + (defined(_M_X64) || defined(_M_AMD64) || defined(_M_IX86)) + __cpuid((int *) cpu_info, cpu_info_type); +#elif defined(HAVE_CPUID) + cpu_info[0] = cpu_info[1] = cpu_info[2] = cpu_info[3] = 0; +# ifdef __i386__ + __asm__ __volatile__( + "pushfl; pushfl; " + "popl %0; " + "movl %0, %1; xorl %2, %0; " + "pushl %0; " + "popfl; pushfl; popl %0; popfl" + : "=&r"(cpu_info[0]), "=&r"(cpu_info[1]) + : "i"(0x200000)); + if (((cpu_info[0] ^ cpu_info[1]) & 0x200000) == 0x0) { + return; /* LCOV_EXCL_LINE */ + } +# endif +# ifdef __i386__ + __asm__ __volatile__("xchgl %%ebx, %k1; cpuid; xchgl %%ebx, %k1" + : "=a"(cpu_info[0]), "=&r"(cpu_info[1]), + "=c"(cpu_info[2]), "=d"(cpu_info[3]) + : "0"(cpu_info_type), "2"(0U)); +# elif defined(__x86_64__) + __asm__ __volatile__("xchgq %%rbx, %q1; cpuid; xchgq %%rbx, %q1" + : "=a"(cpu_info[0]), "=&r"(cpu_info[1]), + "=c"(cpu_info[2]), "=d"(cpu_info[3]) + : "0"(cpu_info_type), "2"(0U)); +# else + __asm__ __volatile__("cpuid" + : "=a"(cpu_info[0]), "=b"(cpu_info[1]), + "=c"(cpu_info[2]), "=d"(cpu_info[3]) + : "0"(cpu_info_type), "2"(0U)); +# endif +#else + (void) cpu_info_type; + cpu_info[0] = cpu_info[1] = cpu_info[2] = cpu_info[3] = 0; +#endif +} + +static int +_sodium_runtime_intel_cpu_features(CPUFeatures * const cpu_features) +{ + unsigned int cpu_info[4]; + uint32_t xcr0 = 0U; + + _cpuid(cpu_info, 0x0); + if (cpu_info[0] == 0U) { + return -1; /* LCOV_EXCL_LINE */ + } + _cpuid(cpu_info, 0x00000001); +#ifdef HAVE_EMMINTRIN_H + cpu_features->has_sse2 = ((cpu_info[3] & CPUID_EDX_SSE2) != 0x0); +#else + cpu_features->has_sse2 = 0; +#endif + +#ifdef HAVE_PMMINTRIN_H + cpu_features->has_sse3 = ((cpu_info[2] & CPUID_ECX_SSE3) != 0x0); +#else + cpu_features->has_sse3 = 0; +#endif + +#ifdef HAVE_TMMINTRIN_H + cpu_features->has_ssse3 = ((cpu_info[2] & CPUID_ECX_SSSE3) != 0x0); +#else + cpu_features->has_ssse3 = 0; +#endif + +#ifdef HAVE_SMMINTRIN_H + cpu_features->has_sse41 = ((cpu_info[2] & CPUID_ECX_SSE41) != 0x0); +#else + cpu_features->has_sse41 = 0; +#endif + + cpu_features->has_avx = 0; + + (void) xcr0; +#ifdef HAVE_AVXINTRIN_H + if ((cpu_info[2] & (CPUID_ECX_AVX | CPUID_ECX_XSAVE | CPUID_ECX_OSXSAVE)) == + (CPUID_ECX_AVX | CPUID_ECX_XSAVE | CPUID_ECX_OSXSAVE)) { + xcr0 = 0U; +# if defined(HAVE__XGETBV) || \ + (defined(_MSC_VER) && defined(_XCR_XFEATURE_ENABLED_MASK) && _MSC_FULL_VER >= 160040219) + xcr0 = (uint32_t) _xgetbv(0); +# elif defined(_MSC_VER) && defined(_M_IX86) + /* + * Visual Studio documentation states that eax/ecx/edx don't need to + * be preserved in inline assembly code. But that doesn't seem to + * always hold true on Visual Studio 2010. + */ + __asm { + push eax + push ecx + push edx + xor ecx, ecx + _asm _emit 0x0f _asm _emit 0x01 _asm _emit 0xd0 + mov xcr0, eax + pop edx + pop ecx + pop eax + } +# elif defined(HAVE_AVX_ASM) + __asm__ __volatile__(".byte 0x0f, 0x01, 0xd0" /* XGETBV */ + : "=a"(xcr0) + : "c"((uint32_t) 0U) + : "%edx"); +# endif + if ((xcr0 & (XCR0_SSE | XCR0_AVX)) == (XCR0_SSE | XCR0_AVX)) { + cpu_features->has_avx = 1; + } + } +#endif + + cpu_features->has_avx2 = 0; +#ifdef HAVE_AVX2INTRIN_H + if (cpu_features->has_avx) { + unsigned int cpu_info7[4]; + + _cpuid(cpu_info7, 0x00000007); + cpu_features->has_avx2 = ((cpu_info7[1] & CPUID_EBX_AVX2) != 0x0); + } +#endif + + cpu_features->has_avx512f = 0; +#ifdef HAVE_AVX512FINTRIN_H + if (cpu_features->has_avx2) { + unsigned int cpu_info7[4]; + + _cpuid(cpu_info7, 0x00000007); + /* LCOV_EXCL_START */ + if ((cpu_info7[1] & CPUID_EBX_AVX512F) == CPUID_EBX_AVX512F && + (xcr0 & (XCR0_OPMASK | XCR0_ZMM_HI256 | XCR0_HI16_ZMM)) + == (XCR0_OPMASK | XCR0_ZMM_HI256 | XCR0_HI16_ZMM)) { + cpu_features->has_avx512f = 1; + } + /* LCOV_EXCL_STOP */ + } +#endif + +#ifdef HAVE_WMMINTRIN_H + cpu_features->has_pclmul = ((cpu_info[2] & CPUID_ECX_PCLMUL) != 0x0); + cpu_features->has_aesni = ((cpu_info[2] & CPUID_ECX_AESNI) != 0x0); +#else + cpu_features->has_pclmul = 0; + cpu_features->has_aesni = 0; +#endif + +#ifdef HAVE_RDRAND + cpu_features->has_rdrand = ((cpu_info[2] & CPUID_ECX_RDRAND) != 0x0); +#else + cpu_features->has_rdrand = 0; +#endif + + return 0; +} + +int +_sodium_runtime_get_cpu_features(void) +{ + int ret = -1; + + ret &= _sodium_runtime_arm_cpu_features(&_cpu_features); + ret &= _sodium_runtime_intel_cpu_features(&_cpu_features); + _cpu_features.initialized = 1; + + return ret; +} + +int +sodium_runtime_has_neon(void) +{ + return _cpu_features.has_neon; +} + +int +sodium_runtime_has_armcrypto(void) +{ + return _cpu_features.has_armcrypto; +} + +int +sodium_runtime_has_sse2(void) +{ + return _cpu_features.has_sse2; +} + +int +sodium_runtime_has_sse3(void) +{ + return _cpu_features.has_sse3; +} + +int +sodium_runtime_has_ssse3(void) +{ + return _cpu_features.has_ssse3; +} + +int +sodium_runtime_has_sse41(void) +{ + return _cpu_features.has_sse41; +} + +int +sodium_runtime_has_avx(void) +{ + return _cpu_features.has_avx; +} + +int +sodium_runtime_has_avx2(void) +{ + return _cpu_features.has_avx2; +} + +int +sodium_runtime_has_avx512f(void) +{ + return _cpu_features.has_avx512f; +} + +int +sodium_runtime_has_pclmul(void) +{ + return _cpu_features.has_pclmul; +} + +int +sodium_runtime_has_aesni(void) +{ + return _cpu_features.has_aesni; +} + +int +sodium_runtime_has_rdrand(void) +{ + return _cpu_features.has_rdrand; +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/sodium/utils.c b/components/espressif__libsodium/libsodium/src/libsodium/sodium/utils.c new file mode 100644 index 0000000..994b835 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/sodium/utils.c @@ -0,0 +1,809 @@ +#ifndef __STDC_WANT_LIB_EXT1__ +# define __STDC_WANT_LIB_EXT1__ 1 +#endif +#include +#include +#include +#include +#include +#include +#include + +#if defined(HAVE_RAISE) && !defined(__wasm__) +# include +#endif + +#ifdef HAVE_SYS_MMAN_H +# include +#endif + +#ifdef HAVE_SYS_PARAM_H +# include +#endif + +#ifdef _WIN32 +# include +# include +#else +# include +#endif + +#ifndef HAVE_C_VARARRAYS +# ifdef HAVE_ALLOCA_H +# include +# elif !defined(alloca) +# if defined(__clang__) || defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# include +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +# endif +#endif + +#include "core.h" +#include "randombytes.h" +#include "utils.h" + +#ifndef ENOSYS +# define ENOSYS ENXIO +#endif + +#if defined(_WIN32) && \ + (!defined(WINAPI_FAMILY) || WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) +# define WINAPI_DESKTOP +#endif + +#define CANARY_SIZE 16U +#define GARBAGE_VALUE 0xdb + +#ifndef MAP_NOCORE +# ifdef MAP_CONCEAL +# define MAP_NOCORE MAP_CONCEAL +# else +# define MAP_NOCORE 0 +# endif +#endif +#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) +# define MAP_ANON MAP_ANONYMOUS +#endif +#if defined(WINAPI_DESKTOP) || (defined(MAP_ANON) && defined(HAVE_MMAP)) || \ + defined(HAVE_POSIX_MEMALIGN) +# define HAVE_ALIGNED_MALLOC +#endif + +#if defined(HAVE_MPROTECT) && \ + !(defined(PROT_NONE) && defined(PROT_READ) && defined(PROT_WRITE)) +# undef HAVE_MPROTECT +#endif +#if defined(HAVE_ALIGNED_MALLOC) && \ + (defined(WINAPI_DESKTOP) || defined(HAVE_MPROTECT)) +# define HAVE_PAGE_PROTECTION +#endif +#if !defined(MADV_DODUMP) && defined(MADV_CORE) +# define MADV_DODUMP MADV_CORE +# define MADV_DONTDUMP MADV_NOCORE +#endif + +#ifndef DEFAULT_PAGE_SIZE +# ifdef PAGE_SIZE +# define DEFAULT_PAGE_SIZE PAGE_SIZE +# else +# define DEFAULT_PAGE_SIZE 0x10000 +# endif +#endif + +static size_t page_size = DEFAULT_PAGE_SIZE; +static unsigned char canary[CANARY_SIZE]; + +/* LCOV_EXCL_START */ +#ifdef HAVE_WEAK_SYMBOLS +__attribute__((weak)) void +_sodium_dummy_symbol_to_prevent_memzero_lto(void *const pnt, + const size_t len); +__attribute__((weak)) void +_sodium_dummy_symbol_to_prevent_memzero_lto(void *const pnt, + const size_t len) +{ + (void) pnt; /* LCOV_EXCL_LINE */ + (void) len; /* LCOV_EXCL_LINE */ +} +#endif +/* LCOV_EXCL_STOP */ + +void +sodium_memzero(void * const pnt, const size_t len) +{ +#if defined(_WIN32) && !defined(__CRT_INLINE) + SecureZeroMemory(pnt, len); +#elif defined(HAVE_MEMSET_S) + if (len > 0U && memset_s(pnt, (rsize_t) len, 0, (rsize_t) len) != 0) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +#elif defined(HAVE_EXPLICIT_BZERO) + explicit_bzero(pnt, len); +#elif defined(HAVE_MEMSET_EXPLICIT) + memset_explicit(pnt, 0, len); +#elif defined(HAVE_EXPLICIT_MEMSET) + explicit_memset(pnt, 0, len); +#elif HAVE_WEAK_SYMBOLS + if (len > 0U) { + memset(pnt, 0, len); + _sodium_dummy_symbol_to_prevent_memzero_lto(pnt, len); + } +# ifdef HAVE_INLINE_ASM + __asm__ __volatile__ ("" : : "r"(pnt) : "memory"); +# endif +#else + volatile unsigned char *volatile pnt_ = + (volatile unsigned char *volatile) pnt; + size_t i = (size_t) 0U; + + while (i < len) { + pnt_[i++] = 0U; + } +#endif +} + +void +sodium_stackzero(const size_t len) +{ +#ifdef HAVE_C_VARARRAYS + unsigned char fodder[len]; + sodium_memzero(fodder, len); +#elif HAVE_ALLOCA + sodium_memzero(alloca(len), len); +#endif +} + +#ifdef HAVE_WEAK_SYMBOLS +__attribute__((weak)) void +_sodium_dummy_symbol_to_prevent_memcmp_lto(const unsigned char *b1, + const unsigned char *b2, + const size_t len); +__attribute__((weak)) void +_sodium_dummy_symbol_to_prevent_memcmp_lto(const unsigned char *b1, + const unsigned char *b2, + const size_t len) +{ + (void) b1; + (void) b2; + (void) len; +} +#endif + +int +sodium_memcmp(const void *const b1_, const void *const b2_, size_t len) +{ +#ifdef HAVE_WEAK_SYMBOLS + const unsigned char *b1 = (const unsigned char *) b1_; + const unsigned char *b2 = (const unsigned char *) b2_; +#else + const volatile unsigned char *volatile b1 = + (const volatile unsigned char *volatile) b1_; + const volatile unsigned char *volatile b2 = + (const volatile unsigned char *volatile) b2_; +#endif + size_t i; + volatile unsigned char d = 0U; + +#if HAVE_WEAK_SYMBOLS + _sodium_dummy_symbol_to_prevent_memcmp_lto(b1, b2, len); +#endif + for (i = 0U; i < len; i++) { + d |= b1[i] ^ b2[i]; + } + return (1 & ((d - 1) >> 8)) - 1; +} + +#ifdef HAVE_WEAK_SYMBOLS +__attribute__((weak)) void +_sodium_dummy_symbol_to_prevent_compare_lto(const unsigned char *b1, + const unsigned char *b2, + const size_t len); +__attribute__((weak)) void +_sodium_dummy_symbol_to_prevent_compare_lto(const unsigned char *b1, + const unsigned char *b2, + const size_t len) +{ + (void) b1; + (void) b2; + (void) len; +} +#endif + +int +sodium_compare(const unsigned char *b1_, const unsigned char *b2_, size_t len) +{ +#ifdef HAVE_WEAK_SYMBOLS + const unsigned char *b1 = b1_; + const unsigned char *b2 = b2_; +#else + const volatile unsigned char *volatile b1 = + (const volatile unsigned char *volatile) b1_; + const volatile unsigned char *volatile b2 = + (const volatile unsigned char *volatile) b2_; +#endif + size_t i; + volatile unsigned char gt = 0U; + volatile unsigned char eq = 1U; + uint16_t x1, x2; + +#if HAVE_WEAK_SYMBOLS + _sodium_dummy_symbol_to_prevent_compare_lto(b1, b2, len); +#endif + i = len; + while (i != 0U) { + i--; + x1 = b1[i]; + x2 = b2[i]; + gt |= (((unsigned int) x2 - (unsigned int) x1) >> 8) & eq; + eq &= (((unsigned int) (x2 ^ x1)) - 1) >> 8; + } + return (int) (gt + gt + eq) - 1; +} + +int +sodium_is_zero(const unsigned char *n, const size_t nlen) +{ + size_t i; + volatile unsigned char d = 0U; + + for (i = 0U; i < nlen; i++) { + d |= n[i]; + } + return 1 & ((d - 1) >> 8); +} + +void +sodium_increment(unsigned char *n, const size_t nlen) +{ + size_t i = 0U; + uint_fast16_t c = 1U; + +#ifdef HAVE_AMD64_ASM + uint64_t t64, t64_2; + uint32_t t32; + + if (nlen == 12U) { + __asm__ __volatile__( + "xorq %[t64], %[t64] \n" + "xorl %[t32], %[t32] \n" + "stc \n" + "adcq %[t64], (%[out]) \n" + "adcl %[t32], 8(%[out]) \n" + : [t64] "=&r"(t64), [t32] "=&r"(t32) + : [out] "D"(n) + : "memory", "flags", "cc"); + return; + } else if (nlen == 24U) { + __asm__ __volatile__( + "movq $1, %[t64] \n" + "xorq %[t64_2], %[t64_2] \n" + "addq %[t64], (%[out]) \n" + "adcq %[t64_2], 8(%[out]) \n" + "adcq %[t64_2], 16(%[out]) \n" + : [t64] "=&r"(t64), [t64_2] "=&r"(t64_2) + : [out] "D"(n) + : "memory", "flags", "cc"); + return; + } else if (nlen == 8U) { + __asm__ __volatile__("incq (%[out]) \n" + : + : [out] "D"(n) + : "memory", "flags", "cc"); + return; + } +#endif + for (; i < nlen; i++) { + c += (uint_fast16_t) n[i]; + n[i] = (unsigned char) c; + c >>= 8; + } +} + +void +sodium_add(unsigned char *a, const unsigned char *b, const size_t len) +{ + size_t i; + uint_fast16_t c = 0U; + +#ifdef HAVE_AMD64_ASM + uint64_t t64, t64_2, t64_3; + uint32_t t32; + + if (len == 12U) { + __asm__ __volatile__( + "movq (%[in]), %[t64] \n" + "movl 8(%[in]), %[t32] \n" + "addq %[t64], (%[out]) \n" + "adcl %[t32], 8(%[out]) \n" + : [t64] "=&r"(t64), [t32] "=&r"(t32) + : [in] "S"(b), [out] "D"(a) + : "memory", "flags", "cc"); + return; + } else if (len == 24U) { + __asm__ __volatile__( + "movq (%[in]), %[t64] \n" + "movq 8(%[in]), %[t64_2] \n" + "movq 16(%[in]), %[t64_3] \n" + "addq %[t64], (%[out]) \n" + "adcq %[t64_2], 8(%[out]) \n" + "adcq %[t64_3], 16(%[out]) \n" + : [t64] "=&r"(t64), [t64_2] "=&r"(t64_2), [t64_3] "=&r"(t64_3) + : [in] "S"(b), [out] "D"(a) + : "memory", "flags", "cc"); + return; + } else if (len == 8U) { + __asm__ __volatile__( + "movq (%[in]), %[t64] \n" + "addq %[t64], (%[out]) \n" + : [t64] "=&r"(t64) + : [in] "S"(b), [out] "D"(a) + : "memory", "flags", "cc"); + return; + } +#endif + for (i = 0U; i < len; i++) { + c += (uint_fast16_t) a[i] + (uint_fast16_t) b[i]; + a[i] = (unsigned char) c; + c >>= 8; + } +} + +void +sodium_sub(unsigned char *a, const unsigned char *b, const size_t len) +{ + uint_fast16_t c = 0U; + size_t i; + +#ifdef HAVE_AMD64_ASM + uint64_t t64_1, t64_2, t64_3, t64_4; + uint64_t t64_5, t64_6, t64_7, t64_8; + uint32_t t32; + + if (len == 64U) { + __asm__ __volatile__( + "movq (%[in]), %[t64_1] \n" + "movq 8(%[in]), %[t64_2] \n" + "movq 16(%[in]), %[t64_3] \n" + "movq 24(%[in]), %[t64_4] \n" + "movq 32(%[in]), %[t64_5] \n" + "movq 40(%[in]), %[t64_6] \n" + "movq 48(%[in]), %[t64_7] \n" + "movq 56(%[in]), %[t64_8] \n" + "subq %[t64_1], (%[out]) \n" + "sbbq %[t64_2], 8(%[out]) \n" + "sbbq %[t64_3], 16(%[out]) \n" + "sbbq %[t64_4], 24(%[out]) \n" + "sbbq %[t64_5], 32(%[out]) \n" + "sbbq %[t64_6], 40(%[out]) \n" + "sbbq %[t64_7], 48(%[out]) \n" + "sbbq %[t64_8], 56(%[out]) \n" + : [t64_1] "=&r"(t64_1), [t64_2] "=&r"(t64_2), [t64_3] "=&r"(t64_3), [t64_4] "=&r"(t64_4), + [t64_5] "=&r"(t64_5), [t64_6] "=&r"(t64_6), [t64_7] "=&r"(t64_7), [t64_8] "=&r"(t64_8) + : [in] "S"(b), [out] "D"(a) + : "memory", "flags", "cc"); + return; + } +#endif + for (i = 0U; i < len; i++) { + c = (uint_fast16_t) a[i] - (uint_fast16_t) b[i] - c; + a[i] = (unsigned char) c; + c = (c >> 8) & 1U; + } +} + +int +_sodium_alloc_init(void) +{ +#ifdef HAVE_ALIGNED_MALLOC +# if defined(_SC_PAGESIZE) && defined(HAVE_SYSCONF) + long page_size_ = sysconf(_SC_PAGESIZE); + if (page_size_ > 0L) { + page_size = (size_t) page_size_; + } +# elif defined(WINAPI_DESKTOP) + SYSTEM_INFO si; + GetSystemInfo(&si); + page_size = (size_t) si.dwPageSize; +# elif !defined(PAGE_SIZE) +# warning Unknown page size +# endif + if (page_size < CANARY_SIZE || page_size < sizeof(size_t)) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } +#endif + randombytes_buf(canary, sizeof canary); + + return 0; +} + +int +sodium_mlock(void *const addr, const size_t len) +{ +#if defined(MADV_DONTDUMP) && defined(HAVE_MADVISE) + (void) madvise(addr, len, MADV_DONTDUMP); +#endif +#ifdef HAVE_MLOCK + return mlock(addr, len); +#elif defined(WINAPI_DESKTOP) + return -(VirtualLock(addr, len) == 0); +#else + errno = ENOSYS; + return -1; +#endif +} + +int +sodium_munlock(void *const addr, const size_t len) +{ + sodium_memzero(addr, len); +#if defined(MADV_DODUMP) && defined(HAVE_MADVISE) + (void) madvise(addr, len, MADV_DODUMP); +#endif +#ifdef HAVE_MLOCK + return munlock(addr, len); +#elif defined(WINAPI_DESKTOP) + return -(VirtualUnlock(addr, len) == 0); +#else + errno = ENOSYS; + return -1; +#endif +} + +static int +_mprotect_noaccess(void *ptr, size_t size) +{ +#ifdef HAVE_MPROTECT + return mprotect(ptr, size, PROT_NONE); +#elif defined(WINAPI_DESKTOP) + DWORD old; + return -(VirtualProtect(ptr, size, PAGE_NOACCESS, &old) == 0); +#else + errno = ENOSYS; + return -1; +#endif +} + +static int +_mprotect_readonly(void *ptr, size_t size) +{ +#ifdef HAVE_MPROTECT + return mprotect(ptr, size, PROT_READ); +#elif defined(WINAPI_DESKTOP) + DWORD old; + return -(VirtualProtect(ptr, size, PAGE_READONLY, &old) == 0); +#else + errno = ENOSYS; + return -1; +#endif +} + +static int +_mprotect_readwrite(void *ptr, size_t size) +{ +#ifdef HAVE_MPROTECT + return mprotect(ptr, size, PROT_READ | PROT_WRITE); +#elif defined(WINAPI_DESKTOP) + DWORD old; + return -(VirtualProtect(ptr, size, PAGE_READWRITE, &old) == 0); +#else + errno = ENOSYS; + return -1; +#endif +} + +#ifdef HAVE_ALIGNED_MALLOC + +__attribute__((noreturn)) static void +_out_of_bounds(void) +{ +# if defined(HAVE_RAISE) && !defined(__wasm__) +# ifdef SIGPROT + raise(SIGPROT); +# elif defined(SIGSEGV) + raise(SIGSEGV); +# elif defined(SIGKILL) + raise(SIGKILL); +# endif +# endif + abort(); /* not something we want any higher-level API to catch */ +} /* LCOV_EXCL_LINE */ + +static inline size_t +_page_round(const size_t size) +{ + const size_t page_mask = page_size - 1U; + + return (size + page_mask) & ~page_mask; +} + +static __attribute__((malloc)) unsigned char * +_alloc_aligned(const size_t size) +{ + void *ptr; + +# if defined(MAP_ANON) && defined(HAVE_MMAP) + if ((ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_NOCORE, -1, 0)) == + MAP_FAILED) { + ptr = NULL; /* LCOV_EXCL_LINE */ + } /* LCOV_EXCL_LINE */ +# elif defined(HAVE_POSIX_MEMALIGN) + if (posix_memalign(&ptr, page_size, size) != 0) { + ptr = NULL; /* LCOV_EXCL_LINE */ + } /* LCOV_EXCL_LINE */ +# elif defined(WINAPI_DESKTOP) + ptr = VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); +# else +# error Bug +# endif + return (unsigned char *) ptr; +} + +static void +_free_aligned(unsigned char *const ptr, const size_t size) +{ +# if defined(MAP_ANON) && defined(HAVE_MMAP) + (void) munmap(ptr, size); +# elif defined(HAVE_POSIX_MEMALIGN) + free(ptr); +# elif defined(WINAPI_DESKTOP) + VirtualFree(ptr, 0U, MEM_RELEASE); +# else +# error Bug +#endif +} + +static unsigned char * +_unprotected_ptr_from_user_ptr(void *const ptr) +{ + uintptr_t unprotected_ptr_u; + unsigned char *canary_ptr; + size_t page_mask; + + canary_ptr = ((unsigned char *) ptr) - sizeof canary; + page_mask = page_size - 1U; + unprotected_ptr_u = ((uintptr_t) canary_ptr & (uintptr_t) ~page_mask); + if (unprotected_ptr_u <= page_size * 2U) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + return (unsigned char *) unprotected_ptr_u; +} + +#endif /* HAVE_ALIGNED_MALLOC */ + +#ifndef HAVE_ALIGNED_MALLOC +static __attribute__((malloc)) void * +_sodium_malloc(const size_t size) +{ + return malloc(size > (size_t) 0U ? size : (size_t) 1U); +} +#else +static __attribute__((malloc)) void * +_sodium_malloc(const size_t size) +{ + void *user_ptr; + unsigned char *base_ptr; + unsigned char *canary_ptr; + unsigned char *unprotected_ptr; + size_t size_with_canary; + size_t total_size; + size_t unprotected_size; + + if (size >= (size_t) SIZE_MAX - page_size * 4U) { + errno = ENOMEM; + return NULL; + } + if (page_size <= sizeof canary || page_size < sizeof unprotected_size) { + sodium_misuse(); /* LCOV_EXCL_LINE */ + } + size_with_canary = (sizeof canary) + size; + unprotected_size = _page_round(size_with_canary); + total_size = page_size + page_size + unprotected_size + page_size; + if ((base_ptr = _alloc_aligned(total_size)) == NULL) { + return NULL; /* LCOV_EXCL_LINE */ + } + unprotected_ptr = base_ptr + page_size * 2U; + _mprotect_noaccess(base_ptr + page_size, page_size); +# ifndef HAVE_PAGE_PROTECTION + memcpy(unprotected_ptr + unprotected_size, canary, sizeof canary); +# endif + _mprotect_noaccess(unprotected_ptr + unprotected_size, page_size); + (void) sodium_mlock(unprotected_ptr, unprotected_size); /* not a hard error in the context of sodium_malloc() */ + canary_ptr = + unprotected_ptr + _page_round(size_with_canary) - size_with_canary; + user_ptr = canary_ptr + sizeof canary; + memcpy(canary_ptr, canary, sizeof canary); + memcpy(base_ptr, &unprotected_size, sizeof unprotected_size); + _mprotect_readonly(base_ptr, page_size); + assert(_unprotected_ptr_from_user_ptr(user_ptr) == unprotected_ptr); + + return user_ptr; +} +#endif /* !HAVE_ALIGNED_MALLOC */ + +__attribute__((malloc)) void * +sodium_malloc(const size_t size) +{ + void *ptr; + + if ((ptr = _sodium_malloc(size)) == NULL) { + return NULL; + } + memset(ptr, (int) GARBAGE_VALUE, size); + + return ptr; +} + +__attribute__((malloc)) void * +sodium_allocarray(size_t count, size_t size) +{ + if (count > (size_t) 0U && size >= (size_t) SIZE_MAX / count) { + errno = ENOMEM; + return NULL; + } + return sodium_malloc(count * size); +} + +#ifndef HAVE_ALIGNED_MALLOC +void +sodium_free(void *ptr) +{ + free(ptr); +} +#else +void +sodium_free(void *ptr) +{ + unsigned char *base_ptr; + unsigned char *canary_ptr; + unsigned char *unprotected_ptr; + size_t total_size; + size_t unprotected_size; + + if (ptr == NULL) { + return; + } + canary_ptr = ((unsigned char *) ptr) - sizeof canary; + unprotected_ptr = _unprotected_ptr_from_user_ptr(ptr); + base_ptr = unprotected_ptr - page_size * 2U; + memcpy(&unprotected_size, base_ptr, sizeof unprotected_size); + total_size = page_size + page_size + unprotected_size + page_size; + _mprotect_readwrite(base_ptr, total_size); + if (sodium_memcmp(canary_ptr, canary, sizeof canary) != 0) { + _out_of_bounds(); + } +# ifndef HAVE_PAGE_PROTECTION + if (sodium_memcmp(unprotected_ptr + unprotected_size, canary, + sizeof canary) != 0) { + _out_of_bounds(); + } +# endif + (void) sodium_munlock(unprotected_ptr, unprotected_size); + _free_aligned(base_ptr, total_size); +} +#endif /* HAVE_ALIGNED_MALLOC */ + +#ifndef HAVE_PAGE_PROTECTION +static int +_sodium_mprotect(void *ptr, int (*cb)(void *ptr, size_t size)) +{ + (void) ptr; + (void) cb; + errno = ENOSYS; + return -1; +} +#else +static int +_sodium_mprotect(void *ptr, int (*cb)(void *ptr, size_t size)) +{ + unsigned char *base_ptr; + unsigned char *unprotected_ptr; + size_t unprotected_size; + + unprotected_ptr = _unprotected_ptr_from_user_ptr(ptr); + base_ptr = unprotected_ptr - page_size * 2U; + memcpy(&unprotected_size, base_ptr, sizeof unprotected_size); + + return cb(unprotected_ptr, unprotected_size); +} +#endif + +int +sodium_mprotect_noaccess(void *ptr) +{ + return _sodium_mprotect(ptr, _mprotect_noaccess); +} + +int +sodium_mprotect_readonly(void *ptr) +{ + return _sodium_mprotect(ptr, _mprotect_readonly); +} + +int +sodium_mprotect_readwrite(void *ptr) +{ + return _sodium_mprotect(ptr, _mprotect_readwrite); +} + +int +sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) +{ + unsigned char *tail; + size_t i; + size_t xpadlen; + size_t xpadded_len; + volatile unsigned char mask; + unsigned char barrier_mask; + + if (blocksize <= 0U) { + return -1; + } + xpadlen = blocksize - 1U; + if ((blocksize & (blocksize - 1U)) == 0U) { + xpadlen -= unpadded_buflen & (blocksize - 1U); + } else { + xpadlen -= unpadded_buflen % blocksize; + } + if ((size_t) SIZE_MAX - unpadded_buflen <= xpadlen) { + sodium_misuse(); + } + xpadded_len = unpadded_buflen + xpadlen; + if (xpadded_len >= max_buflen) { + return -1; + } + tail = &buf[xpadded_len]; + if (padded_buflen_p != NULL) { + *padded_buflen_p = xpadded_len + 1U; + } + mask = 0U; + for (i = 0; i < blocksize; i++) { + barrier_mask = (unsigned char) (((i ^ xpadlen) - 1U) + >> ((sizeof(size_t) - 1) * CHAR_BIT)); + *(tail - i) = ((*(tail - i)) & mask) | (0x80 & barrier_mask); + mask |= barrier_mask; + } + return 0; +} + +int +sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) +{ + const unsigned char *tail; + unsigned char acc = 0U; + unsigned char c; + unsigned char valid = 0U; + volatile size_t pad_len = 0U; + size_t i; + size_t is_barrier; + + if (padded_buflen < blocksize || blocksize <= 0U) { + return -1; + } + tail = &buf[padded_buflen - 1U]; + + for (i = 0U; i < blocksize; i++) { + c = *(tail - i); + is_barrier = + (( (acc - 1U) & (pad_len - 1U) & ((c ^ 0x80) - 1U) ) >> 8) & 1U; + acc |= c; + pad_len |= i & (1U + ~is_barrier); + valid |= (unsigned char) is_barrier; + } + *unpadded_buflen_p = padded_buflen - 1U - pad_len; + + return (int) (valid - 1U); +} diff --git a/components/espressif__libsodium/libsodium/src/libsodium/sodium/version.c b/components/espressif__libsodium/libsodium/src/libsodium/sodium/version.c new file mode 100644 index 0000000..4e584a6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/src/libsodium/sodium/version.c @@ -0,0 +1,30 @@ + +#include "version.h" + +const char * +sodium_version_string(void) +{ + return SODIUM_VERSION_STRING; +} + +int +sodium_library_version_major(void) +{ + return SODIUM_LIBRARY_VERSION_MAJOR; +} + +int +sodium_library_version_minor(void) +{ + return SODIUM_LIBRARY_VERSION_MINOR; +} + +int +sodium_library_minimal(void) +{ +#ifdef SODIUM_LIBRARY_MINIMAL + return 1; +#else + return 0; +#endif +} diff --git a/components/espressif__libsodium/libsodium/test/Makefile.am b/components/espressif__libsodium/libsodium/test/Makefile.am new file mode 100644 index 0000000..f9894bb --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/Makefile.am @@ -0,0 +1,5 @@ +SUBDIRS = \ + default + +EXTRA_DIST = \ + quirks/quirks.h diff --git a/components/espressif__libsodium/libsodium/test/constcheck.sh b/components/espressif__libsodium/libsodium/test/constcheck.sh new file mode 100644 index 0000000..994c164 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/constcheck.sh @@ -0,0 +1,20 @@ +#! /bin/sh + +CT='ct.c' + +echo '#include ' > "$CT" +echo '#include ' >> "$CT" +echo 'int main(void) {' >> "$CT" +for macro in $(egrep -r '#define crypto_.*BYTES(_[A-Z]+)? ' src/libsodium/include | \ + cut -d: -f2- | cut -d' ' -f2 | \ + fgrep -v edwards25519sha512batch | sort -u); do + func=$(echo "$macro" | tr A-Z a-z) + echo " assert($func() == $macro);" >> "$CT" +done +echo "return 0; }" >> "$CT" + +CPPFLAGS="${CPPFLAGS} -Wno-deprecated-declarations" +${CC:-cc} "$CT" $CPPFLAGS $CFLAGS $LDFLAGS -lsodium || exit 1 +./a.out || exit 1 +rm -f a.out "$CT" + diff --git a/components/espressif__libsodium/libsodium/test/default/Makefile.am b/components/espressif__libsodium/libsodium/test/default/Makefile.am new file mode 100644 index 0000000..ad9da78 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/Makefile.am @@ -0,0 +1,525 @@ + +EXTRA_DIST = \ + run.sh \ + cmptest.h \ + wasi-test-wrapper.sh \ + wintest.bat \ + pre.js.inc \ + aead_aegis128l.exp \ + aead_aegis256.exp \ + aead_aes256gcm.exp \ + aead_aes256gcm2.exp \ + aead_chacha20poly1305.exp \ + aead_chacha20poly13052.exp \ + aead_xchacha20poly1305.exp \ + auth.exp \ + auth2.exp \ + auth3.exp \ + auth5.exp \ + auth6.exp \ + auth7.exp \ + box.exp \ + box2.exp \ + box7.exp \ + box8.exp \ + box_easy.exp \ + box_easy2.exp \ + box_seal.exp \ + box_seed.exp \ + chacha20.exp \ + codecs.exp \ + core_ed25519.exp \ + core_ristretto255.exp \ + core1.exp \ + core2.exp \ + core3.exp \ + core4.exp \ + core5.exp \ + core6.exp \ + ed25519_convert.exp \ + generichash.exp \ + generichash2.exp \ + generichash3.exp \ + hash.exp \ + hash3.exp \ + kdf.exp \ + kdf_hkdf.exp \ + keygen.exp \ + kx.exp \ + metamorphic.exp \ + misuse.exp \ + onetimeauth.exp \ + onetimeauth2.exp \ + onetimeauth7.exp \ + pwhash_argon2i.exp \ + pwhash_argon2id.exp \ + pwhash_scrypt.exp \ + pwhash_scrypt_ll.exp \ + randombytes.exp \ + scalarmult.exp \ + scalarmult_ed25519.exp \ + scalarmult_ristretto255.exp \ + scalarmult2.exp \ + scalarmult5.exp \ + scalarmult6.exp \ + scalarmult7.exp \ + scalarmult8.exp \ + secretbox.exp \ + secretbox2.exp \ + secretbox7.exp \ + secretbox8.exp \ + secretbox_easy.exp \ + secretbox_easy2.exp \ + secretstream_xchacha20poly1305.exp \ + shorthash.exp \ + sign.exp \ + siphashx24.exp \ + sodium_core.exp \ + sodium_utils.exp \ + sodium_utils2.exp \ + sodium_utils3.exp \ + sodium_version.exp \ + stream.exp \ + stream2.exp \ + stream3.exp \ + stream4.exp \ + verify1.exp \ + xchacha20.exp + +DISTCLEANFILES = \ + aead_aegis128l.res \ + aead_aegis256.res \ + aead_aes256gcm.res \ + aead_aes256gcm2.res \ + aead_chacha20poly1305.res \ + aead_chacha20poly13052.res \ + aead_xchacha20poly1305.res \ + auth.res \ + auth2.res \ + auth3.res \ + auth5.res \ + auth6.res \ + auth7.res \ + box.res \ + box2.res \ + box7.res \ + box8.res \ + box_easy.res \ + box_easy2.res \ + box_seal.res \ + box_seed.res \ + chacha20.res \ + codecs.res \ + core_ed25519.res \ + core_ristretto255.res \ + core1.res \ + core2.res \ + core3.res \ + core4.res \ + core5.res \ + core6.res \ + ed25519_convert.res \ + generichash.res \ + generichash2.res \ + generichash3.res \ + hash.res \ + hash2.res \ + hash3.res \ + kdf.res \ + kdf_hkdf.res \ + keygen.res \ + kx.res \ + metamorphic.res \ + misuse.res \ + onetimeauth.res \ + onetimeauth2.res \ + onetimeauth7.res \ + pwhash_argon2i.res \ + pwhash_argon2id.res \ + pwhash_scrypt.res \ + pwhash_scrypt_ll.res \ + randombytes.res \ + scalarmult.res \ + scalarmult_ed25519.res \ + scalarmult_ristretto255.res \ + scalarmult2.res \ + scalarmult5.res \ + scalarmult6.res \ + scalarmult7.res \ + scalarmult8.res \ + secretbox.res \ + secretbox2.res \ + secretbox7.res \ + secretbox8.res \ + secretbox_easy.res \ + secretbox_easy2.res \ + secretstream_xchacha20poly1305.res \ + shorthash.res \ + sign.res \ + siphashx24.res \ + sodium_core.res \ + sodium_utils.res \ + sodium_utils2.res \ + sodium_utils3.res \ + sodium_version.res \ + stream.res \ + stream2.res \ + stream3.res \ + stream4.res \ + verify1.res \ + xchacha20.res + +AM_CPPFLAGS = \ + -DTEST_SRCDIR=\"@srcdir@\" \ + -I$(top_srcdir)/src/libsodium/include \ + -I$(top_srcdir)/src/libsodium/include/sodium \ + -I$(top_builddir)/src/libsodium/include \ + -I$(top_builddir)/src/libsodium/include/sodium \ + -I$(top_srcdir)/test/quirks + +AM_LDFLAGS = @TEST_LDFLAGS@ + +TESTS_TARGETS = \ + aead_aegis128l \ + aead_aegis256 \ + aead_aes256gcm \ + aead_aes256gcm2 \ + aead_chacha20poly1305 \ + aead_chacha20poly13052 \ + aead_xchacha20poly1305 \ + auth \ + auth2 \ + auth3 \ + auth5 \ + auth6 \ + auth7 \ + box \ + box2 \ + box7 \ + box8 \ + box_easy \ + box_easy2 \ + box_seal \ + box_seed \ + chacha20 \ + codecs \ + core1 \ + core2 \ + core3 \ + core4 \ + core5 \ + core6 \ + ed25519_convert \ + generichash \ + generichash2 \ + generichash3 \ + hash \ + hash3 \ + kdf \ + keygen \ + kx \ + metamorphic \ + misuse \ + onetimeauth \ + onetimeauth2 \ + onetimeauth7 \ + pwhash_argon2i \ + pwhash_argon2id \ + randombytes \ + scalarmult \ + scalarmult2 \ + scalarmult5 \ + scalarmult6 \ + scalarmult7 \ + scalarmult8 \ + secretbox \ + secretbox2 \ + secretbox7 \ + secretbox8 \ + secretbox_easy \ + secretbox_easy2 \ + secretstream_xchacha20poly1305 \ + shorthash \ + sign \ + sodium_core \ + sodium_utils \ + sodium_version \ + stream \ + stream2 \ + stream3 \ + stream4 \ + verify1 + +if !EMSCRIPTEN +TESTS_TARGETS += \ + sodium_utils2 \ + sodium_utils3 +endif + +check_PROGRAMS = $(TESTS_TARGETS) + +TESTS = $(TESTS_TARGETS) + +TESTS_LDADD = \ + ${top_builddir}/src/libsodium/libsodium.la + +aead_aegis128l_SOURCE = cmptest.h aead_aegis128l.c +aead_aegis128l_LDADD = $(TESTS_LDADD) + +aead_aegis256_SOURCE = cmptest.h aead_aegis256.c +aead_aegis256_LDADD = $(TESTS_LDADD) + +aead_aes256gcm_SOURCE = cmptest.h aead_aes256gcm.c +aead_aes256gcm_LDADD = $(TESTS_LDADD) + +aead_aes256gcm2_SOURCE = cmptest.h aead_aes256gcm2.c +aead_aes256gcm2_LDADD = $(TESTS_LDADD) + +aead_chacha20poly1305_SOURCE = cmptest.h aead_chacha20poly1305.c +aead_chacha20poly1305_LDADD = $(TESTS_LDADD) + +aead_chacha20poly13052_SOURCE = cmptest.h aead_chacha20poly13052.c +aead_chacha20poly13052_LDADD = $(TESTS_LDADD) + +aead_xchacha20poly1305_SOURCE = cmptest.h aead_xchacha20poly1305.c +aead_xchacha20poly1305_LDADD = $(TESTS_LDADD) + +auth_SOURCE = cmptest.h auth.c +auth_LDADD = $(TESTS_LDADD) + +auth2_SOURCE = cmptest.h auth2.c +auth2_LDADD = $(TESTS_LDADD) + +auth3_SOURCE = cmptest.h auth3.c +auth3_LDADD = $(TESTS_LDADD) + +auth5_SOURCE = cmptest.h auth5.c quirks.h +auth5_LDADD = $(TESTS_LDADD) + +auth6_SOURCE = cmptest.h auth6.c quirks.h +auth6_LDADD = $(TESTS_LDADD) + +auth7_SOURCE = cmptest.h auth7.c quirks.h +auth7_LDADD = $(TESTS_LDADD) + +box_SOURCE = cmptest.h box.c +box_LDADD = $(TESTS_LDADD) + +box2_SOURCE = cmptest.h box2.c +box2_LDADD = $(TESTS_LDADD) + +box7_SOURCE = cmptest.h box7.c +box7_LDADD = $(TESTS_LDADD) + +box8_SOURCE = cmptest.h box8.c +box8_LDADD = $(TESTS_LDADD) + +box_easy_SOURCE = cmptest.h box_easy.c +box_easy_LDADD = $(TESTS_LDADD) + +box_easy2_SOURCE = cmptest.h box_easy2.c +box_easy2_LDADD = $(TESTS_LDADD) + +box_seal_SOURCE = cmptest.h box_seal.c +box_seal_LDADD = $(TESTS_LDADD) + +box_seed_SOURCE = cmptest.h box_seed.c +box_seed_LDADD = $(TESTS_LDADD) + +chacha20_SOURCE = cmptest.h chacha20.c +chacha20_LDADD = $(TESTS_LDADD) + +codecs_SOURCE = cmptest.h codecs.c +codecs_LDADD = $(TESTS_LDADD) + +core_ed25519_SOURCE = cmptest.h core_ed25519.c +core_ed25519_LDADD = $(TESTS_LDADD) + +core_ristretto255_SOURCE = cmptest.h core_ristretto255.c +core_ristretto255_LDADD = $(TESTS_LDADD) + +core1_SOURCE = cmptest.h core1.c +core1_LDADD = $(TESTS_LDADD) + +core2_SOURCE = cmptest.h core2.c +core2_LDADD = $(TESTS_LDADD) + +core3_SOURCE = cmptest.h core3.c +core3_LDADD = $(TESTS_LDADD) + +core4_SOURCE = cmptest.h core4.c +core4_LDADD = $(TESTS_LDADD) + +core5_SOURCE = cmptest.h core5.c +core5_LDADD = $(TESTS_LDADD) + +core6_SOURCE = cmptest.h core6.c +core6_LDADD = $(TESTS_LDADD) + +ed25519_convert_SOURCE = cmptest.h ed25519_convert.c +ed25519_convert_LDADD = $(TESTS_LDADD) + +generichash_SOURCE = cmptest.h generichash.c +generichash_LDADD = $(TESTS_LDADD) + +generichash2_SOURCE = cmptest.h generichash2.c +generichash2_LDADD = $(TESTS_LDADD) + +generichash3_SOURCE = cmptest.h generichash3.c +generichash3_LDADD = $(TESTS_LDADD) + +hash_SOURCE = cmptest.h hash.c +hash_LDADD = $(TESTS_LDADD) + +hash3_SOURCE = cmptest.h hash3.c +hash3_LDADD = $(TESTS_LDADD) + +kdf_SOURCE = cmptest.h kdf.c +kdf_LDADD = $(TESTS_LDADD) + +kdf_hkdf_SOURCE = cmptest.h kdf_hkdf.c +kdf_hkdf_LDADD = $(TESTS_LDADD) + +keygen_SOURCE = cmptest.h keygen.c +keygen_LDADD = $(TESTS_LDADD) + +kx_SOURCE = cmptest.h kx.c +kx_LDADD = $(TESTS_LDADD) + +metamorphic_SOURCE = cmptest.h metamorphic.c +metamorphic_LDADD = $(TESTS_LDADD) + +misuse_SOURCE = cmptest.h misuse.c +misuse_LDADD = $(TESTS_LDADD) + +onetimeauth_SOURCE = cmptest.h onetimeauth.c +onetimeauth_LDADD = $(TESTS_LDADD) + +onetimeauth2_SOURCE = cmptest.h onetimeauth2.c +onetimeauth2_LDADD = $(TESTS_LDADD) + +onetimeauth7_SOURCE = cmptest.h onetimeauth7.c +onetimeauth7_LDADD = $(TESTS_LDADD) + +pwhash_argon2i_SOURCE = cmptest.h pwhash_argon2i.c +pwhash_argon2i_LDADD = $(TESTS_LDADD) + +pwhash_argon2id_SOURCE = cmptest.h pwhash_argon2id.c +pwhash_argon2id_LDADD = $(TESTS_LDADD) + +pwhash_scrypt_SOURCE = cmptest.h pwhash_scrypt.c +pwhash_scrypt_LDADD = $(TESTS_LDADD) + +pwhash_scrypt_ll_SOURCE = cmptest.h pwhash_scrypt_ll.c +pwhash_scrypt_ll_LDADD = $(TESTS_LDADD) + +randombytes_SOURCE = cmptest.h randombytes.c +randombytes_LDADD = $(TESTS_LDADD) + +scalarmult_SOURCE = cmptest.h scalarmult.c +scalarmult_LDADD = $(TESTS_LDADD) + +scalarmult_ed25519_SOURCE = cmptest.h scalarmult_ed25519.c +scalarmult_ed25519_LDADD = $(TESTS_LDADD) + +scalarmult_ristretto255_SOURCE = cmptest.h scalarmult_ristretto255.c +scalarmult_ristretto255_LDADD = $(TESTS_LDADD) + +scalarmult2_SOURCE = cmptest.h scalarmult2.c +scalarmult2_LDADD = $(TESTS_LDADD) + +scalarmult5_SOURCE = cmptest.h scalarmult5.c +scalarmult5_LDADD = $(TESTS_LDADD) + +scalarmult6_SOURCE = cmptest.h scalarmult6.c +scalarmult6_LDADD = $(TESTS_LDADD) + +scalarmult7_SOURCE = cmptest.h scalarmult7.c +scalarmult7_LDADD = $(TESTS_LDADD) + +scalarmult8_SOURCE = cmptest.h scalarmult8.c +scalarmult8_LDADD = $(TESTS_LDADD) + +secretbox_SOURCE = cmptest.h secretbox.c +secretbox_LDADD = $(TESTS_LDADD) + +secretbox2_SOURCE = cmptest.h secretbox2.c +secretbox2_LDADD = $(TESTS_LDADD) + +secretbox7_SOURCE = cmptest.h secretbox7.c +secretbox7_LDADD = $(TESTS_LDADD) + +secretbox8_SOURCE = cmptest.h secretbox8.c +secretbox8_LDADD = $(TESTS_LDADD) + +secretbox_easy_SOURCE = cmptest.h secretbox_easy.c +secretbox_easy_LDADD = $(TESTS_LDADD) + +secretbox_easy2_SOURCE = cmptest.h secretbox_easy2.c +secretbox_easy2_LDADD = $(TESTS_LDADD) + +secretstream_xchacha20poly1305_SOURCE = cmptest.h secretstream_xchacha20poly1305.c +secretstream_xchacha20poly1305_LDADD = $(TESTS_LDADD) + +shorthash_SOURCE = cmptest.h shorthash.c +shorthash_LDADD = $(TESTS_LDADD) + +sign_SOURCE = cmptest.h sign.c +sign_LDADD = $(TESTS_LDADD) + +siphashx24_SOURCE = cmptest.h siphashx24.c +siphashx24_LDADD = $(TESTS_LDADD) + +sodium_core_SOURCE = cmptest.h sodium_core.c +sodium_core_LDADD = $(TESTS_LDADD) + +sodium_utils_SOURCE = cmptest.h sodium_utils.c +sodium_utils_LDADD = $(TESTS_LDADD) + +sodium_utils2_SOURCE = cmptest.h sodium_utils2.c +sodium_utils2_LDADD = $(TESTS_LDADD) + +sodium_utils3_SOURCE = cmptest.h sodium_utils3.c +sodium_utils3_LDADD = $(TESTS_LDADD) + +sodium_version_SOURCE = cmptest.h sodium_version.c +sodium_version_LDADD = $(TESTS_LDADD) + +stream_SOURCE = cmptest.h stream.c +stream_LDADD = $(TESTS_LDADD) + +stream2_SOURCE = cmptest.h stream2.c +stream2_LDADD = $(TESTS_LDADD) + +stream3_SOURCE = cmptest.h stream3.c +stream3_LDADD = $(TESTS_LDADD) + +stream4_SOURCE = cmptest.h stream4.c +stream4_LDADD = $(TESTS_LDADD) + +verify1_SOURCE = cmptest.h verify1.c +verify1_LDADD = $(TESTS_LDADD) + +xchacha20_SOURCE = cmptest.h xchacha20.c +xchacha20_LDADD = $(TESTS_LDADD) + +if !MINIMAL +TESTS_TARGETS += \ + core_ed25519 \ + core_ristretto255 \ + kdf_hkdf \ + pwhash_scrypt \ + pwhash_scrypt_ll \ + scalarmult_ed25519 \ + scalarmult_ristretto255 \ + siphashx24 \ + xchacha20 +endif + +if WASI +LOG_COMPILER = ./wasi-test-wrapper.sh +endif + +verify: check + +@VALGRIND_CHECK_RULES@ diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aegis128l.c b/components/espressif__libsodium/libsodium/test/default/aead_aegis128l.c new file mode 100644 index 0000000..b8d85aa --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aegis128l.c @@ -0,0 +1,642 @@ +#define TEST_NAME "aead_aegis128l" +#include "cmptest.h" + +static struct { + const char *key_hex; + const char *nonce_hex; + const char *message_hex; + const char *ad_hex; + const char *ciphertext_hex; + const char *mac_hex; +} tests[] = { + { "54662e55bb4771f9711fe5301d7412fe", "e51d417ab10a2931d8d22a9fffb98e3a", + "04f672f8cdb3e71d032d52c064bc33ecf8aad3d40c41d5806cc306766c057c50b500af5c550d076d34cc3a74a2b4" + "bed195ffa3e8eddf953aefe9aed2bc14349c700ab7e4cb974fb31615a9ff70fb44307055523ab378b133fefc8830" + "13ce23bb01b23aeda15f85e65cdf02a291a0454900cb261872d5205737fd7410", + "3b762e3ab5d06cb2896b852ea70303f289f2775401b7808e30272f", + "d6736371f35eb067244dd7963ad2e0cd3949452cbd4c220be55082498ed3b230f579d78844311652a9958e82f172" + "bb8072c4b1114ec531a6ccb340ddd86caf32a0d4c9c45738e9ec9c0d9154612f7d90465f3a277bebd667c0af0edb" + "6935d8dffbdee96c1a96e4c4318f5d3bc90c1c8d5729e1a402f765bdc9b26b08", + "ee9595bb3f1b32000578ffb751b508655b3cae8fecaf44f40d740fa0347e283a" }, + { "46a5c72e03d900b48f829df00ecb88b9", "b25187e4b77b6770c35c7a962584597d", + "fc8083311b38a80c04e57d069661b273264310906781eb7e4e44c6416f7336267674a44a7c54ed6361b43ef95005" + "14e5d9e71f8b5c33aece756b64f3ed011922facbec7c3ffd27d01a853435bde551372806bd0c", + "b73c81239e01cd81b0de13247ca4e3528b87f3078e2b674a667430b1dbdc3e93657131e654a4182b4c4ab01a33b3" + "6e946f1fcc55aab06fc6f56d", + "51189448af53ae3630c06a167ceefe6b9b5eba746fb9b53f4b3104d2b15b6020fa8998e182eb9c9d6b6463939e50" + "723780f983733206ae6f11b986d95abe83555e64f8d3242d7e8055fcb8e2df8e41d318f06728", + "caf8957f9ebc9a88469c04089962487a3c77040b82661616c5d5c83e974eae1e" }, + { "e343d75de99e6d73543968437d3dcf6a", "317a5808ed5debf6f527a780e0896b2d", + "247045cb40dea9c514a885444c526ac867b1b80e4728a23b63f596", "323094c01e", + "18cb5d2fc5e27bdda5ba16f1320da42049759368548e5bd96f2dbc", + "5d3e88816daf20f11018456b58b2614050b93b222f03be079b39a9bb2de49f47" }, + { "7db9c2721a03931c880f9e714bbf2211", "27f642398299ada7fdda1895ee4589f0", + "dc5180954df0c3391a60b44cbf70aee72b7dbb2addc90a0bf2ceac6113287eb501fe1ea9f4c51822664b82fe0279" + "b039f4", + "6dd5e43033fa6f021059a353edaf1f870387693054d0a2360fd1f6941a68f48ba972a1bc0816a446a6186e4a9a2f" + "9df556bf709470137b8e60d9daa2", + "c8a7d9131cebfa5388003cc30deac523aa9b09d148affff06ba40400e09ca900db770e07cedf5cd0647f6723c810" + "ffcb59", + "2c17a7022f6500450e86c8afdd60d3da535c2322fdf84f3dc67429e6ad92673f" }, + { "bef8a47bbf0ffc4ab56ad5d9899f42b6", "3a2195a5196a0d785e04b38dd62f056d", + "5aa0dc37e4db1de35789398b25dc656d05cdc6737de4e30ce944b304ec752bbd10ebfa51feff99dfcfe26b8526cc" + "9b0cf1ba3d1685fb26cfc0c8888fd3cdf55577a516328b289eebda2e14f15eeb1d0f4207efebe3803618d43d9968" + "8e6c", + "a4a290a0d719b1aaf58f24152402b2f36957f44ea8a2d76b045390f5e0a3559a8ec5b2f871fc6095152183b7be75" + "65d4953b593f854b8477e29ce0cdddce5cf8739ab56288c26c81921f1fbae38b90b287b4622ca8b5b6c0b4b02196" + "e73ee56af6ae427ca7ae3ca0", + "0ead975179d64f2b927440bf9ef666ab921e7a3b0832949f31315c2931451c5ddf810c17ad0330073922c07a18eb" + "665aca01c05de58f7d159a74884f9d90cc10dc8c017ab61b820fc3dd32be52f3f7265e3a7a912a230b2a7ed19992" + "e693", + "f61ace25382fc3f88ec63eab23a6f9f6d1be65d149428bbb778a77428f909863" }, + { "01f1cea5b7e20db64a67502bb4715033", "7336701bbc2d766167b57c452d010f02", + "b3669d31ef8040dd6f462624977d69cfd1869fb19946595759b7265eb98b51f579fddce4bd38452fe3", + "d007e9ce654ec9a8b44e3655dcac889176fbf8012b133c4effe70b716eff43264d67d84a3d8504858c01002957ca" + "c6eb75d94635fb708343a18e20615e4ecb963bd98a8e7bee66520fba5c2991541c1e7863c1c97ae7ba6c3c34f116" + "1518097b6e75dcfb3aa3e93995eb39", + "4e643f7a1b8c0d595c8ff2b00c0145deb5bfa13d8a1b75d7a731f2258b690e1a3b2ce2cbacc6d05c42", + "8f33c6494f971462bcf82a508f341905b8febf9a9d25363ce853d59230d5e60b" }, + { "76d53860e1c45cf60d76d8336948e337", "579c0f0993f13470fa301cd4c6fbe99a", + "d0f5d2b3b824fe01ca36d00d47434519b2112195093a06d9d07d7f4f9c5b8f2a4c68668265c40d6edd6e12b5a350" + "e4af11f1ee6226bf307a1a6c25318c0d3aa0421edf565ad42d524f69d0fef06c236c1f0d0e50261e205f381c3e11" + "96dd8827b9990d674288f8250596", + "a7a77cc847afdfb9dc8ceccc621462302f31233a830b3827ca68618e604c95ba8615f6ebb5ff1c2c66727e70c038" + "554619f96f79d08902fc70111f853766a2db04e51d", + "def4fcb75110820298f08a8a4941434deccb952dec01215f5e7f5a2509fcb9e2a994a77d5eaa617da9cf2f03483f" + "aff5831506e5617707b88e08195b6a993219898c3ead769ebaa002934d3c80023833d7ce4a7a989596de6fe78eb0" + "237e8caab0a9fcd2625af80caad6", + "a4a60bf81cb2ce55df3c5864eac4c93d7748010a1adb6e5110d389e0501d7004" }, + { "cd05e08e14686623fd334780439c4ae3", "d05ba5a655bf7b1be7500f205c9c80b9", + "021c20518825c167a746a728578a0f470b2035c7b39c75f3e492bcc2e6e96035c4fff65dfbfa93cbc7a37828a0cd" + "62bf1b20b3bb89425ae647e021cde586f652eb98c98b1ac1018c6fe3e046f41545bbfdbf94dca48e465aaed8efb7" + "eab5ea143e5b95b72a078f8fb58d8ecfdd9a3a968e2468b6", + "be9255f750498ce672c877285e649318bd5bf07cdc5902b7de61a8415b6fbf20b1e432ebc9f8f9c8e3094ff6dffd" + "1b1e0c3cc5", + "faa851ddfe54b01cf1a3caf34815c6db0145ddebd1f34ca9edd479bd4a3bb4bac21c2b5d365ff4d389a764bcc143" + "6e51267ed3e4f225b7cda1fbf25d221d91b59aed0b4d20f71859f41e85e15a02e2bcd59913d8ae019d1f01ede317" + "b4ff94ed2b05650259a705c3b2be2c2a9c82a4809dab7b03", + "83b60061bc457578effce5462091e0a2b1f8ee35dbdb6a6b17e4e6179df6eb18" }, + { "6870a5652199e2f17407185bd7cf18eb", "942988922482351c317244b26587c560", + "49b2f6765f7f552f8704671271d703b3b02157f71ed84e64481be8bbd4f3493bfd3f313ac62ba4e9a7d86288533a" + "7bc7a4257cad5db04bb80d6574e473519eccd15cd2", + "6cc34a81ee984b436947b31574473e0a849a341db0ebc67f64efb39c9e118f65cfb25d1d898b4ee8052f700cb43c" + "be744d70b71d2086a89ad12dd67feceacb092a861ba80e41808c625fbdce017d51916e1fb5b38b0beebb27478d83" + "90ec79b3f3902a4ac22d79", + "82d3ae3aea3870e40fa48da698adcb596eb43fb063866f6231bb744b687e32e72117a03da08a635e4ed0f255f28f" + "3db6f0b8a7238d0244994a507fe75ddd17138b0605", + "a3feae07a737428751dc2c92301bc012b0d5c9c41a7543d248d6213a90343565" }, + { "15a87aee858f5723beb477b2cc039d14", "6ce71c763784e59fba852ae39b25de3a", + "25d1d38a8e9e8c34564abbfcba69035ce2f78df8626543e7639f2f23d742853e34880e7bc6d684ed3075abdfb91e" + "36076242dc53d60513333f59d139e680aa246b0e7e6092e8d4e6ab471459068c2a83b07e8b7969c911e3bff7558c" + "af02b3f3e6de7ae9122d533558868d993b8242b2328834a88cd656a941", + "26fde5885fd22bdcba8b5c1b5f66d09c7da7bfef2790e6dd2a98a351056044495fe4", + "2e241f3f96e8bde7d2b5cfad94461d6c7282405c77918a2a8731711175211814e20e72ce01139643f58a2336c05c" + "c27458f042ff063bc73fbee2ca8c099ff1f3fbe8517fce6cd3d54567220218cc67b4ef52767f75fe514e8ec49013" + "d9fa787685a5a81efe550248f342eaade9cd61fb5037634f2bf621c944", + "694a5b5ae2081becf4d38b2958d3557438b9f04dbefbe649baa91924e17e4d88" }, + { "23e2250df6b870b6eebbce928cd1a80f", "279f73beda18846d7170c29414590029", + "9cdd4e34495b4a03ca2c5bef9074c1", + "f306eb122b1907b4b6bccc77984ea7be4a28f9ca3615135d4c84ad74d7469efefbbff997bb495806a3d9ab274b42" + "28cb894fceeb24c4905e121efbd3ce8be668dfee4f9e38584ba6c3374337d3c884cdaddcd96f63df225ddc879e0b" + "a4bce0125dd0", + "8821c6d2c36ae97bef1b9d78c1afba", + "155b5b0c92176ed1a2248bc86b04570620e97a2a601a3d730d53236f43696c28" }, + { "82f02cd289d07f40acf9a1d2b1cf7f06", "09162f09c3893bd2c5e4f2c8f6ec9930", + "29f1d0e8aef96c9936eb5bcb32b0f751b25a7a46d4cc5a33d5f96dcaea757b2b", + "4ccb0ba7f1b2eecbe3dc3ba47f797201ca656ab04e5b38df9b95ef24ba02a5ef04a9a8122f954048581d275e", + "6b8f329fa3e905b7c0df490f18a13ab3b6be6701cba59a1ee7c12d054c500e58", + "8c97a1010a25a9e9047d4dded0235450f488d3c18b460316e5ef5517edc82e3b" }, + { "a28c7a79d3d7d7b372c5cb4eb66201ba", "3c27d1ca6e8fd19cbf2dbd81c87d2ac0", + "0ff33640432edcf34a2df2527ca13a0340d5adcae1d10589edbc89701f5093efeaf6d7d3f97a778052a76a6efe7b" + "37021a4fbc8205f26f17dbd0c68b60c6403c4160985255aeac23c3bc88b1d8c11fd4197ba366962c", + "96bec6c8014708e9142a8ea0fd496f89f5a2414f4296ae0a185b13f362f2", + "f20be34587afaa4300683655ea16a292bfc7f2779cb771e520c6b0952e41a2b89e45f6c4b571779d573f1383b5e3" + "11f71ca89379b8a3eb9d9cde72b16e0f782058e9bb4df4731cbd7c67af1c459061ccff149da3bcdc", + "d9dd91cdfc19da4a95fca7229f296a74aafc0d78b2b398e7dc089cfc6309d281" }, + { "24d66092958836e491cf974f34ee7ca9", "1c04e8166ef37a2a5d34b4462a7ca8bd", + "01a77fb558d8d94c16eccc82b49f53823597272de8e6df070fefd202042665ef5788bab86c70dc3e571e3b372654" + "494e552ef00462bf0f7fdeca8efbaa51f3da63e6f18fd13a4668b7fb1a89464a09a17d9ce709b0b8f079d6bf93ed" + "4871c0", + "3c082dae68ee1cd6b8d1ef79593132e68e373eec746d13583f28d42730bfa18ed77ee83ad6c3db24bcda6d5e2925" + "970dc01d1968b744cf3753e597ef831dcab728ce66ef3da0ab872cb0dedf77922a57abfb", + "47ec41abfe34c4ece7ff8f3ba179238f38f3e527d97d7f3f6ada79a9609e715cd0acec31f0a0df25c7ac0bb894fe" + "791cc467a098710e92af75a14e68d9241c160d4587f7da279deaa9cc9d9c5a6e97b231021ab2ba9c63473cf269ef" + "294d1b", + "807d350484ead90c1470efc0c6e334999b204444034151c3b80961faa4b821d3" }, + { "78f67aada609c94a7c79f2fe9bf9c82e", "9ad46b00946c799b17b683ed3d920896", + "3fc884334f762cede042a56b4a89ad9eaf474459371f2daf7c157a352cd5ae6d45662593bd3eaba7bf59ed569429" + "c52153599f02e3263b2784be00e52e30d0347553fe8aa70a071c3f2e34593d1e78692f9a194800571eaaeedcf297" + "0784426959e0", + "80bb105971fd223f89efae15ae1b5e252c7e1c761b6abd5509d8354adbbb5007928763e715aad67b2109ac60afc7" + "3e386a75084c77a5af1021ddb4bc636c32a70ee95c6ef5eea9cba0d1c944754f328208ff78f7b0718899bacdf5d6" + "e603e1b098acbffc83a86a0e122078338e0bd5", + "325ce1b0bb065488f9f74f779bdc433da58412b3834005b4661491e7d9d6c2a371560ca7d649093a7ab2475548ed" + "b37b425c23f75eb1bf79b972714469174fc85665dbe2af774719d803c2426f067ae68da1ae0783ae376970055cc2" + "8d484ecae2e3", + "5f755de0d9a033967a9d23e3357332ad9640983fc121cc9104c8e79b37a9ea6d" }, + { "ba4c7e6a36e4684631fa5ede07b678cf", "ed722d3769b33d82626ce89bb4d212d9", + "ae106ad8029d73ff984de16db70772ca9adec5f2bffb1d92e12412b6f76f855463f47f1739d6e9a1fab5a9b7ff3e" + "ad419efd7fd7b31a0c5b9b992aa8d0ad754cb5ba371adfc60a5cdbcae37c4653b9cf5f46b015d31a03e10e288256" + "7d2c44255c30f1", + "1955a221ff4b3f271876a4bc04cfb41449881f6ff3a7e9aacaa1e992a5218af3294027709c1ec594bf863000ddb7" + "d561ca4c3f42340ee932e71eb8efd1b7dbd19f6ef0de28d437355b2b4cd1527cee849a315fc9a35ecb6e458e4af4" + "df07a9e108a0", + "aa24653b20af5925a19e486d0b28e3bafdb240aa984c8b365792443a5411c8385c8197d0a13f1a8a7686c02cc0f7" + "adbe1230736362afeb3c0ada988dec6d35fd298768866f64aac8dd560250e27bb1007a3fd4c312a8ce3af4af9ed2" + "7d5859ae56a3ac", + "b06f562123bfc9c4e36e2299da0d6987c2c191c2486ac2ff9e2baa156ce6cb81" }, + { "639668e0b0fbb192b83f870048d29c1c", "48ed7de6da13ba38a1e748eb9ea57529", "1ceca7", + "604b7b904ba56e1f2d17556236150e5bd19ba125f92e9adef0f75b38356fc9a1851ba34105805cae7e99dc7bdcf8" + "744c44f06e709c345cadcffde348d2d55c5c36cf5ee1f288509e7a878dc00daa3d9593afafd7a0d94fa78960b3ca" + "9fdb2b7d5746d1f4702080fadaf0cd6785373a16ceed056641aa4afe725e", + "0f5286", "b6b24c01ae14d452da68d75693fe772340ee1310d329281370c6c54231372be2" }, + { "94b94725497880ff10d89572b62d1029", "bbdb56d8112d298fd5686b93787e0011", + "f062bbe085b5f49ae4064f9ffd", "de189cbb1821775cb97888f25d4781ddb82d4664634f41", + "d317f2a31eaa3f23e84fc3eaa9", + "5098967201169e8ab8242b8e09322165127ef2155795f62fc1e55e6a72363fac" }, + { "8e6f1217eaf84aee8e5897f5860f184c", "a4e099068ad0b67f28b6902a40921dca", + "53c939f8d167e49980f8fd3ccc4a2ae3", + "4bb7fccecf15f0b32be37860507fc53812713194e2844855894ef916abbf9b5d", + "92e47292a4f02cc22d3392d1b6a089ce", + "a3eb3e03808499409b00f0bb635c6fbf12062469edb45f5bb252c08748e131ed" }, + { "6968acc00e83184e6024167672c5df8a", "2d5b193c93e8aa5302fb5bb20cd59504", "bd6b6830", + "7f4e725f4b0f84454e823b8193f1d8b39d78a8b12f1a2250beb0def895dd0aef8960652c071a82d9ad89910d9728" + "7e72848fba1623f441d4955a019f5c1a955b054db858722b1f15210c3a752fdbd2bd631620cc56c2c30d78ccb162" + "72eeeea1", + "c01c9b02", "9910104c7d6d91e99c167d027c4190701a21c2fcadc9874b1744cfda7b75b8c6" }, + { "1e7e0ef737799bb1e00ccd4e31da5ff9", "9d1111da7d3d329ab5d824404e4bdd60", + "76cbec797c2364c6ed70901db527c6a3471a84f8d297c64c9dbffd7c3204503ca6e51c8c88757500ed503ba86d73" + "67baf6b9f3f5f2b69308bef97232e67698ae10896ed70a66a7c40115770f3192b9168f66a359270c753bfffc5496" + "58fc7aba3d3943221e125a6f88e025cc024b753693", + "7e6c97d0fee9f249c7510c2a0abf9530ac49cecfffe2ae37c9d38ba60cd012d3e00b696ee54591", + "b04070df9cc5d032d1914eb69f9afeda61559ed98c7e5fbeb81930b242cd30cf097e4130b0cc45b3e3178ba5ff25" + "98493e1d1fe22fd14f3cc2de08fd8cbb3539d4c71c606adb7826c2a9e05ac36a6795293cdfab6d07fcfdedac099f" + "1ab9bfec63a32f7633e424e684ca8744b4ad2288ed", + "a0b933e1a706046c38967971e50c0ce9ececaabd188092313c654e9f297cf18a" }, + { "6dbf15415dae57093e6774f4a1b7e4d8", "bba38b490d740d7b3df0c9283d4a530c", + "fafe1562e69a0f5149e0ee65d14b42098a8a53a58d2cf07fd86f6c64cc4e67d9b5cf3655b5ed7f722d2073a3e9cc" + "8372efd9620a32d6443a328436dd5ae394700ddc171bef8cb0674b1fab87b3e93aa426aee92c7ff733c33f9e4e49" + "f614043a7fb42cf657e4e3c2", + "c742a929d2a766dde0fb0ce2d0faf790bd6c5feb63cb3126402aac7ef7c9ddfd408cd22bc6928a9b67426e20c3d9" + "b340cd7231f87ffbc29a8e6c23602b9dc434f5ab06bb8c049803b45cf088b919e8584091ecfca7259e0d130ddf4c" + "a45d44291024446f58f1271f", + "d8dda53eeb8b375930698379836e64014c22bd885b5b5cafb4dc65ed00aa947acb2792c46dfed8ecd155b21cfc98" + "ff163b403e3a9961805436678fd34942354094bc47663165341ed0b949c0ecb4da5499c1c8c87eab99ddfd0fc2d8" + "0a9a520461e3dc402c3d4b4f", + "f8e4c1f827d4c5dbe00e7794effc567089b8128a5b11e3c6c2e5e36414b4618a" }, + { "a6d38f5cebee041a0afe035caad48443", "cb7e7813c7018b25782f77e0ae7c84c7", + "6ef6c5d92f3acf78b3e2c8334038f364a51193e4e559b1458dd74c44269e69a7a6af22f531680c63270b22ee7154" + "7d72abc9b87bc5639a1b3a13f8613ad4d1742e8209ab", + "d536bed277bbb5a9", + "457fff7d0e1b61def59fbe99e81c08bc370bcac0240c9cec6d6a0de2c37f9950f5b2d12b8b21126af18d757c743a" + "2a9bf451ebcba235f9f48c31a63674f0e8a1c5af5094", + "269ee12821b981d794399bb759d233db2d60c1dcbc3a9a87dbb068551b032f1d" }, + { "753eb1d49c102d1e3a9bcfbcb1cfa369", "0e0cc4395844d363ceccc8a07a92a2d8", + "5166ac0bdba2b660af164fc847e4ad300675cda9f0acda47567f7952eea7084832f6dbfa0aae9f403a5bbbe307ad" + "40845cb08347588063ad3f1df766790c023f160ce21bdf372fb48e0f7e2ced50cb3f86c2fb257ad7863fadc5fe69" + "92bf1c4508308b259480007a628aacee94c258c91cd847f3d05251dadb96", + "5f590a65034eba433e57a9d089b2924f5f8482db6a467ea435478afc", + "f2fa7ed4fccf0388b7bb291977d2214d03dd30c4f81bab2df8f2c1cfaa46ff2fd14733cd7b8fefb6dd020ecab3eb" + "478d1fe0b849e057512fe7b897b171771a2b68d7fe6d9b70dcfbb6307dacba5409b7fdafc49752e4392111474388" + "afb6d79ed21a60c59234bafad676f88f7653765b4dc758c9fd930b2632a0", + "352c935b482696f9a4f40de117ac4efe5c38952c8a45e23242a86c66e79f7f4d" }, + { "711a437629429db2e14058e2a826dcbf", "eb036d6e483a212ff6ee25d970fe1ac3", + "29937c0efb36ed27fe7709d7179b4f38a2fc191b5e8d9616b58f6dc9ba2ab74e13bbdcd233e8726d90f7ded06c38" + "61582f27158732f997df9091446befe75855ab05b348d68f96e45445f44c31e9ba3e4d7be96d9c8e806535e79079" + "139c71fcc599fea8701e0c2edf606986eff1535afdfa51d1be2dfdee", + "", + "4a61f5d6b8e746bf6fb49ca2b16c22f4e9ffcdc89a3137b39bf5445fb6b989d5200f0c8d5538891a5e8979b5cd8c" + "734128b4e4ad98b0cd598c40ec9be74725dbca84c65a52f17ac983330b0b74e4193540f6357c3bcde4e8d8fc6942" + "314ba68115bf2a682756e3c42008803a81532708a0e7b5e3b8436145", + "4af113e2b6165247c2760ab445c6985306c81fb9ccebb8df0e57b0b044c52736" }, + { "a26d6028473bf7de23851d00d514455b", "05b87c16ebee8bb62365d265ac6818a2", + "baeef99e6d4d15be9ff68a5d94aee7afa3d898cf42f94ad572b089659708658534d198dd3fba47a48611e8d78da" + "d", + "5d77dd8066d3cea3b0762602ba6ae3d1ae1c27d1ebe70bfcdc068912def545362a5bd2", + "e4365eac2e7b5d02e7fc6c110895bcf193a0ebe28e81d0f6128a95e3e9183582ebb964d666972bd7fff8cd3870c" + "a", + "515045f7ad90ab569a6c8b90808d64346334e71d03db18d07d19f40b2b94fc7d" }, + { "9bb0e363275374f1771ababb7b96851c", "08cf3a6355ffbe621ea874e917729d4e", + "b380355f794d31e6e85fc81a49fdc2af2104471609692f94c994a710be5cabdc9c9a61b94fc3f76927c1cd5c9a53" + "55a0e8ec55a69ef114b3963ec95137b9ff84240c2a71d3b3459056d1a183eae21cc5a7c109e937faf8f61b6232fa" + "30951f030047d7555b60f85a318833afcea80ee4d88a98", + "a7fc199cb07b6e5e498dbe590af4a4d95d35b043a97d52e11cc1092c70250112e070e49fcb8a3e7bbfca3d0c4467" + "ba332c0dad277a997f2a603fd2d016979c24b3870a", + "f8ec2722a9aa97d0cab77f7833e6bddc9570bb79a159feec2dac9d2366e7eabeb9d74ab53a846fd8ad052a740dba" + "39801b681e4da903939387ac3578eec4547dc97c43a8824db11cdae4e7ca8330c9a2d4249853a7285c54498e59d6" + "45546a5bb5858b8ddfe37a14242d9750b02ccb41b92bbf", + "1f6822430a2fea84595ad870c833951814a0792cce0cd414bf9f744bfa7c9f72" }, + { "7458fcb1fa1a886924a044eccab9c5b2", "30565643aa9bae844b87bd459628d093", + "4227dc17d3e0ec8363c84b989f72d235d3991e57ebe8a6fcbcab1053edf3b323cbf5f5f45aa142494ab0afe78c", + "d07afef73f3cabbed475b69fa30aac8af674b74448cfd4d6ecb0c5c1b5b58d0c7173eaee440be65715d780d61d34" + "6dede7c52724bd76207ada9a3707c1326dffefd04fb29321db617d12b4a607452a5b197460bc524a40672628e5b9" + "d45f821a5b", + "50c568868de4b49df40d33e6b25abd6b2dfd2f22bdc12a18ee2407dfe82cd3bfa2fc344c91ba6544e079446073", + "5d9f885ee5dafd1ef4a2d0a951941f1d03acf8adc3652ec34e5b6ca4bf7ed18b" }, + { "68df4e697e83c55c822bb3637bb52d54", "1b0df23e69aa907856ccb9ca4d6c51b5", + "59242d6e2d7e612d2aee7e8c08f53f172e0f93d57b0c08e7cffda90da5b2703eed8192511f6f1bd59e9ae781b4f1" + "156ae06ec38b5bc1f5dddefee49f561d692f832030f7a1b506c0ebe26447b3eab68172e7e7810b13d425f6c78e1d" + "6591cb4a24a61c5f9554a083283485175c18cf5df4ecf2f87c98615de9ccb3", + "fe9643236be4e7aa3998f44b4336a4c1f8fec28e17", + "46e15eda413037249e584ea1e3007166d70bf9c998ca2a8386bdb8efde70f3bd35a9b0877e333451f7789f4d8b4e" + "797170445eef5f818bd321574e66b7881cdb546eb5528dce75cdd1683e715b2ac7ad259954bca62d8f0f0066fa6a" + "df50f9e13dbe3ca1e503957cb5f8a2dfce0ca7377ca51989e3d8e5275893ab", + "6afa564c9f5a650cdd7284589134c6c1379fb798af9330bec354ab1221539e86" }, + { "a4b06bbf87393d2b921dcba697274f07", "5c14d51c52d95ac040e1060a0ffa21eb", + "8c85ddd8d3f446608e656052062f0cd58e6d58", + "847d3b95895426225d08865cc9a329f6f14e63bc5a66fb6f2a05bf8eb9bc8166e6fef29e1d573acdb4c3bc699dae" + "adff7df5d6e8dbe2ef713008afcf9b6e97ce6cab4d90594fa4430ecba5bb62a7938f03d57869", + "cf6c47fec422ee29226b6cbc5092bf670b5434", + "0d57758c68a9524557fd6f6742d24a00467846456a5bbb1271e2a5e8c3ccbea3" }, + { "50034800a878a3e570364540fc862b77", "bc92f50c2630f7fe354399fa9a6fc48f", + "23a93e636d1924a60f3461de1020b73ba18fc3854c9dc9f166d7d4d1912503bdf1", + "23d5009057b76a00d92db6b280a3a30ba08ba3afec6312197f06ee01dc4a22d73ea010e02b65af7968d8977f9762" + "ff5a6dde278d8b351d3b8efb32cf7cc8a70a7a8b3d79", + "2cf9f00b66c63518354ea59510c178d75499866218eb5a031a0dc4d743ac8c05c9", + "7681550d340ca003acb18bde30e7a26b23022f9e71dc0d7801ea6e9e569784f3" }, + { "d68448b73ae9bd161c9f1f36dbf6163d", "3345d820331958c63dd7a129d3ea0de1", + "ffa236070dc5b464eb034a9332041a014cd7852b498be2dc498dcdab4151d71f47c7a6b17a176c5999a7574fab5f" + "f469cd02226492a38693eb2296a4a7cc2857b28b5b61", + "c790bb04036883e6e4a6912a9b0afc36607e12b0d457d4b5f6c120cf0c009caa087fc2710439", + "1474d60067d082706bb0cd823b22582ddc0fd68412ea0e399b03988e616ac5ca0a7a8da6e6fe29292b57046c289a" + "d8a52360ecd19655bb801c6eaa2ccd66ccb14c4c3748", + "a1d80340487279787a1dcfd1082fe04d557c072f9b558cc78c956c1b06a0683b" }, + { "519fee7049473c7c41f3bcf7b2f63a69", "be227d2bb97f2eef62d5fd9203cb63a9", + "0c121fbcfb4f4f8f150281140e49d71dc5ed82ac4a30263a6b2d92c55ac6fe4f43f64c0f526d3df642c04a5c51e5" + "8703c381701b1f4618cf66e27c60dd5e6558b48028d5fb11339c4f2547a3aefd8100", + "9ebb3c33eda54164b54bf95d4fbe113333edb0fdd62c24532fbd4cb91b11e08b1e74487dbb0f3daaa08c566e759d" + "53ea3974cc3685ec460e608f7d01fd2dc23d9bc283c73ab492bc9fa2ff458d268667504cd47e585826", + "c0e22cc3aa610bda350a2ebe8f530c05cafa19e7060b064c276a06f0bb430b79839c51e6b22aabf429616480382c" + "86f8c04ea397c976bb08caf8f35c38208e476787ce229a7a300c5411471548b15d9a", + "7891d41aa7d6f935761dc0454a7919d511f629fdc3f38f4932eb0148d870a24f" }, + { "58bd2c73aedb31baca592e42d614c68a", "bbf76585731b6334fd314e771d9e404f", + "d238c5f0677c86c001e66691ea9eb8aee429fc490d38abccfed3a546b5f05398288e7232880fa3d485fe3862c546" + "9f980d9ff4caced1cbbe7f97adc15b6919876b8cbdd35320a20eda8a1ad6e853164b0e0ffb2f702e1d6a0eae8b27" + "577bdd4e5a17e6d8", + "86147d2debc30111b82c1ccc41a13dab1aff144bf2810695a40d02bdeaf519669a1b81864edf", + "94fccab0dce48d5aaf42ef59764cba95b42410e2d6b2c87c95d8dbc15421c45d7a556e25296df9167cd46def7d10" + "602aeebd0e7e909c52ab7a22f833e976fb76b9b39b1c2889587582d44ad8f484f0382804d7481f1a8d6c903b1319" + "0c213102ae273378", + "67a012ae5452dc293645179c0fbe23d2f79ecf435e4fa09208ddf8bbd8bf8b37" }, + { "a27d07b0976574c43edba5619b3c1f27", "879f4114bf61f1d7b487bcdff6c90778", + "302994dba80c2268f5b1c77bfad0b780a9be6437a07dcf1fee61e8e72f7fd3ceac24a01be486a2eddc901a19a0f1" + "0eaa94cf46b604f98a90c0f62fa6476d27a338bd046fffc26570", + "b97a43027c5dcb8a95", + "633c76783dcb88ff677a6f567685ada02d787eb9aa3a527a45fd415180f1fc19cfddcb90583621c2609558703c7c" + "5ed548650c98e591fac7a692b1f921284ebd8b86d3a1f26f1ad2", + "1f54a298784b2ad47bdbe5c982b51b2eb5f8c96bc4b46a57dd703dbd7e1b199a" }, + { "d55658dd1f27af02885d0f431fb2ebb2", "0aba0b9dfc9831aef0203bc61a601176", + "05805491b667d9ff38147d96493db29441e188243f72668c7ba61b", + "df403489e3bb67eeae8440569f6fbc1ae072305f5047c5105a7e4e5349d3732d75572298253f60e3821c721941c0" + "2dd761edfb081d09b3c7528a0e786a6fcbab709727e7d614ecc604def19c78fe061040bd636d842b16e96158db07" + "d6c2521ad54778acc78f12b450db0474ef700dfd547f9c5b", + "2e8adbea0e9ef5068fc3abb39ccef59616420d4fa038e2f35b560c", + "d1f27edf1046f8ad30e9900c43a317744dadc934e6ceeb63184e0663ba80df77" }, + { "adff46e4d7d78b3db5c74c712534db37", "c54185637dd281ebf672393cf9bad28f", + "b3850ad942e221753e4bf30140eb5569cfd9972246b9a6a35f7a8512db333aec59d380973d6a6505d99cb004dd47" + "b33e32f4f238b1342e6756d3619414c31bde45", + "59bc7a834189b930c8cbff769ef63b5e1a08c352ed779853b36bcd3d0ca7b4e35bd6cdaf2538ebf0e3a0d7cbcf3b" + "cd2b66b910967c226a1da42f84c4a8f81e19161c6593e2c0a0fdddd3c6ab3a864037fbf976e8aebd33d4450be989" + "3da2e37e728916b663944e3fa6ba543d1010", + "5cc93a30fd8f71befd87fc50112c156b53abfc97466f36e3315915a7d4147f0b3641177b9d08ec13e7315957d078" + "ec73eb0a93a3b7a51e3db63a396e6ea2adfba7", + "9c14e5bcf26a00fa0bb04256cc32736d0f2300ea93a51f8e4ba69d15ff11121a" }, + { "4a5d7c201ddae018edc9783413dd0329", "eb7e038948d3bf61d2cd29d2fe722603", + "3e6a17d47db58690b895619128645a2782d17e9a3735c1450a7c8e13a9f212208fcf256f", + "65b8cebd83d3197118fe81dddce22b3947653e04a48d05b4a2dbc42a89e62b0d6b61d5f31487af", + "a1a858d13540281e1d0a9a82e3caef64ff742e51b1f7476d318729508a68840b371fd300", + "62b25795c2cfc4d7f8c1058256ed2d0e73374f8e33a106319a67778387150217" }, + { "83190fd90c68cf63648dbc5daa442e3e", "3c3683fb5d3f1446f8c0d0127fc59d5f", + "a5136deb0a795dccc18889c23e9bb21640864981a4ecd903e8fb62", + "13066ef4f97501fe1854da6e2d57ed43e4c074ad45b7218536e7dd8368a4ee8c6f2b63199fc0a9a679e2b198bd3a" + "43e6e8bbd6", + "0c8cc3bde1f4933729293718686301b1ce50f5e7521655016f8432", + "cbfa761976091ca1ffaadb4278f141f83bd6b5270f78cbcdf61018a744ae2fe4" }, + { "05bed4c00afcb8ecacda8daba02585a1", "ed014d4e9eb504c70d5d3153473dc146", + "6fab5ff04c5a74a0a96948501de9167597a42fde4c50ab27719dd1e2b0e0fc0fe6e48e97c79d2a71fcb5e7ef60c6" + "7a32bf865decb39bf5ac17969177b2fac849a38e08bbaa3be0d6dcee9ff685ba97e9b54514624d51c270065508c0" + "3e96f28667e3c79f6a68859a85048301779da7e2254b1bd1662ae3ea15e0332c", + "ebb614315ba4b7d69632656d5a4d2810112862ea3e443148100bf2e89d059bc9e2d9563bf34b823c57108ca9a88e" + "4b07441f0ceca4713e2af56f40f35d6f2223d37e9eeb61739a65933712763104a67488d2022a5e033e240969a4d3" + "3966b4527035eef0970c69660ab3ee5c00ac815a9ee52d767b0a937b", + "6edcebf7ac2cd10be8a9a595a00e68e2d3127f5de640323791229141caded658e99fa59539077027ed7b7a433a79" + "4bd523ec59f504978964d3e17eb388956e43395ec89b252a93b317c64580426d1ab0b633a972524084be5d488645" + "8718ed42f47967eddabdf7b2f440818e0aab9d932c10a4c7283d05b84ef74a6b", + "7be2b003c341d5a7d1a7fbbefd6170d8be25e785230bb6adb70785416eabb281" }, + { "53e1b8de6176c05e04f5a4787e733b3e", "574de8c0f914115c9267f7852280fbe8", + "0ef099d6995b41d4e9227c3aa59da313160afaa32e1753422c1eb45bf102e806aa996a54606c78320e85da74deb3" + "9e8b0059bffe32780ec784abf6bd540d3c01e9f13c4209bec2", + "3d9ca3718f31b4f37f988ec676fc3b5492a44792d1a4f8fd7cc4726fae899f102841e7f5c04b2ae2c5f9eb204c5b" + "74222d89c2bd36b1500b2dd81e9643142becec1b88aa7a0d7ea4c81fb7e8fb37ec1a58e0383e", + "5cf9292077dbcc9557a1cef51de815facf02a89c9e29ac62098c8e4d0cb49c4f55ed55dd9dc9c36a634ceb8f4dd4" + "75837582b9be1c17030c0546b335be95fded1c416e4599851e", + "782baaaec2b50b6bcb07d00c6eacb7fa8ac084113bad5a1d6dbe8c80340443e8" }, + { "81118e9376e515a93dbdda15e58ff387", "75a0f02a8e78a0d2d0097cee863aa576", + "f30c353db4dcb2320ba5fba118e50526800fda7ebabef05bdf15aee5d9b70f2ab697937d77a01bb4bb460fcc4233" + "acc3b970f4f434e9ea85f30aed7d247115fc5db1c333ac6a008dfe65ee02b930ea097d046f2923bf84785d47f382" + "b19651948d69a6e4b861a7112c4e1804f6435f70", + "6f75857a795e6aff71994dacae41c2b2d9d6d7e67fbaed6d2e20bf89da461f509ef3d284341a8a2059ef1b97e9e6" + "820f1a72ad703e71999be36fd7156d3e3f35663eb4db44a858e08bceb154af51360feadf3bca8f20", + "0376339c7324168426dbc1f36ee91603f844352817b575ffb25ca6a75e2d0f0d77d853230b7e5a4823195c406298" + "bc3781b40df001d9cfdff16de970df4ffd0aa652fc7732c6311e2665daad93bb2576d43e1a58837513c62a8b74cd" + "e75901f9520a29a10e4dad9e4aa981c5e72d6cc0", + "d5db09ad858cbf4f860e527aac44bafedcfb01653818baeabfc8efeec0e3a9e5" }, + { "2d60824c89bbeb4e2b72434aa0356587", "20ad2c51679a7246ca6d0a47ba7292e8", + "17aa9ed83ff674f959085ecde2a6c5026325265a143d2c772337056a3c66abb5d742f33be39697194fb1", + "283fa29dc399d07116e43c85eec0adc8a76221669a9bba6554f8e828b680", + "40fddfe3b15925fe189b25aeb6616538958d43f0c64806f6286a5efc8a4faee98d02314eace7619bd2a3", + "4d9f99a5248b8c7ed7ecac6397969bb92799a3e206239bcfbca54ca2b2325f9a" }, + { "e2e2a29db958c6a3f68a52825b844c2a", "3210fe0cede911318435fefee1d921d9", "45f5fc3a", + "91209d1202574e", "2067b789", + "8869621138c4b08670fd8b6ede57933e4036e9c2a635e367f12a4dd7b19e1d73" }, + { "24affb4e364dfcb9be823bda04cdf045", "d7db8f0fd20b87ea4ad5e85e026b4b42", + "296e2b8040a3907fbd8789f660f85f3b49c6050092029a2b", + "42f31798f0016547fc9126a6919c14fdee91bc68f839dabb24d2249ff5e001b6a2308b57bfa6baa84e635123e8c2" + "110c", + "3af391d72e60751b10d3f009814673d64cb86a0dc998cbf5", + "388f9d6b3b3765f7361cf130f3418f1d81f3c4220b37046d82ba47ba252424d6" }, + { "e8d14e976fed8be59625b034419fde86", "1d3a06b7b80217caa5a4e237c2b94549", + "fa2d4f764e7399bd346f60f1cee797a9624809373daa3803cdb12717fb48503263b21ab1d99dfde20d588458993d" + "8c33384e897973a9dd74bb7e308c8fdd6a46a9", + "8c0c2e14cf2ed5c7147d8c50b4c28b232a80247344f21a61dfe4065fdc559200b7a0046e58606e3a3615ff54bb60" + "5e7a5f001d215de255ba75366f6be3dd1fd4858aa9e8904ca99647387b1a17c7ff", + "9427f3a18a22e801a3d7d863cccf4fc8dfc23a51bffab61235e2bdbae311ecc321db38128730818cec04f51ba5f0" + "c3e6b7327402a2a63c95c184f7946756f2c94e", + "70a800b87eeed41887887449465656d777659f183f9cb335d2a253fe09816cfe" }, + { "73e9b0ca8fb59181dac10130454e3a7c", "81c9a08c95fb942c42003aff680b11ea", + "971adb65be3d885bc115724cc33a0f53aa47606e7bd5", + "03cc2f305af325f4fa14de7ae8e89a03d040e812f0f4a7f82d72441d83b85a424f3ebc34ad", + "18ff36eaf9e6f49530db6f886fd85a77d55289d85fcd", + "0bde31d7323ac029d9900c897aca4b0d42f33d46bab1974affe35a4095139184" }, + { "59f15a1479f5dbd9c1b879475de9d2e7", "060ac95c956235bcc003dfdc92da5d89", + "a17b5ffce4cc08b23a8b8cd7735e11822f9672691b4dac380835729694f39da377e4d3fd23ef7b8b40a355e271bb" + "fbb8cd632481c7cdb67d99d314609174b10cf370fd9b9ab872346c631127f873573ef61776bb8e154b55bab6d845" + "44cd8fe5f7611840a057", + "9faf2f97e14d2be029", + "3a4986b25ac4ebbdf8c62e74790e79f860c5c131f68b540a7a9f0504cbbc36b7484fe76713a53f354f4970613a97" + "6a4cc55ed7480d5c5acf876977b74e622926c8309b65a5edd3ea2ad7c2805f2859ce1e2805577d409760b2cf8e84" + "cda7097478491bab3fd9", + "81ab6e4c949f5f8552f8a5f067073a0563a4ea6a9ae83810d76937e1a370cda1" }, + { "5dc5206e6145ce81ffbce717cb425955", "a7a6fda319439a67cb679b3cc6076dd7", + "4244fc95829a69089920", + "92f48b403ce97f87118605d24314981ec34b958ca0036f0b6acef5e20bfddee370e13bb2cc676dd8d4547668aacc" + "7dfde6af12727789f6ef811e63b391cfa9c4a68ca89e6bd978f38f9228dd9c24e968c4e59e3d34963d6ee942f788" + "e0b5625ad95bd3eb6ae67ffcaf2e4ee9a9cbbd15c40385ae", + "adc2915b7813f367bd80", "30cff01d2431cc61bacb6445d7e3e604de19ea532a2db3adcc1a978d9cdf3dcf" }, + { "8d88268afada2ee19bdc754147d6b04f", "119588763bcbdec984a226e9dff179ce", + "04deb10354489349a273c5cd5d02ee1d71cbda2a20743bdc2cbc48788b9da779ad2f3f1dec4cceb3132b2e4a1c43" + "02c8f9ecd1d37fef", + "0f32a44fb0edff2f0d2334029e59715f5fe2b8e896068b8488f43b567c0d6fa3de5bfa99c6c8f055e3889309e088" + "22eea3a683d6907675b6f0072438be", + "bda6c7381492f48849c00a86ba72c8162c09981f593547682b88b7bc6e051a9ab9fa1602e879b8f1e5145bb61925" + "30e7faa76be34dc2", + "dac7ad31ca2f77427665d8255bb24e7604403434770869ee202598e649950dae" }, + { "0049493db4ab12f83fe50f0fb2a88961", "fd0dd2556a03ebe50b41446250d56e52", + "1d3139deaf1046e234189942c2249a7aee9d644f934e6a203a8a69e7683557551dfade301cef8abb29d7308c5a28" + "93a52ce6b1493bf2232606e79c0ae51b0a55cfc0434f2e669cbc56fe7176fd04a1278918c14791e00f88de41d563" + "d3", + "4c92be6ed0634323014b9ae5c9401f751c5b710c12df357a694c1c25d906ab3beb5bbaa002208e787f448dd0cef8" + "4d3d", + "dc3bb7e4baadeb7c32f70cef3144d04ad199ec429ca6b695f87f997c6e5db58e9d60b34d89ccfe49d5e62c267a87" + "1ab7818137f523cde68036ad1d8f7db0b80286ceda9734b32ad73f7f0eaf8d19c80fe74866c1cf785f44513b918a" + "24", + "51a9d0fb861eca8a334632ade9f37e319a283d7b33cf0894b2e4e545d01afe75" }, + { "b6279f439261d1dfa4b85151caa60e75", "d0b003ce641633d48413bf3bbcde6b5c", + "39ee6f13a66b4ee74cda034a3bfed3fcf36f101f1e5b646d1c93e019174e4bd850417fcd5755264476124a5ee8e6" + "8cf2fcb9fba50f872fb1d33a025f8c572b4b5ff034d9ad77ecd33981bdfe3e9554253522", + "c635cbbf8eace8f911d093544536f38fcfa14b78b1e1eb069c42a351cbc70b7d1f5e93bceacadaf0c9198d3b2ffe" + "54db45cfac70c05d4aecb0c801194642cc070ed223a9e3b65b735af796373db7fb6e3285ee3fd3579dd74be0cd29" + "37f6f825dc3bd77ff7674b06a9ac", + "9787ff29777e12f86c7281c57c5a345278fa96d8fc6ed949be284bb79f97b34da9f256a6be673ab93829492159e7" + "ba1a19dc727e16ec57e388447c6616626c6af3412cc70432c3dbeafa35b044e7e53456c1", + "9fb598560f6e1085c32baaeb48e643f0ae1b5a2c3a8ffbc0a9d88821c893330f" }, + { "81d8c7bf41cb0e54fa51899660637877", "044d29eb40264aa36b976a766108ac88", + "4712680db09039894cd72e86db111d63c4bcb62058f84f83ef419cc21e36f2169ca340375ff69f9280fa60c99d86" + "a03dec4673901a7029784be2cdae3f63590da312a448d24eef063304545e553fd01ce6ee088e43c8b02c51b155ba" + "da983ea1aca4bad804406aad3c92ac75ce4c", + "897f0ea8d69b962913a9a59ca36b65aa7aefe39d3a", + "1d5cff8679946302451dc9aed1c601ce46a6f31ef17a53af6ab130605cc2a41da08c932a13b72983ba8cc5837604" + "0cc17e3182993dd593f4fc8f2965825173656325942e97db98c584ff0bc913633888a0812ea7675d130d690f9fe8" + "d6eb7f1655de1938fa0163b02c50c8a122df", + "96887b58e80e7c7716cfc5ef37c2b5a6bffb401733b82a0bd31510613f033a05" }, + { "8d35dc035a1039af8f3dc653857cef8c", "a0df1b717a186cfe86a0ac8343e80217", + "572bf5295915e7b2f817bd137a6608e09fcb7bad29887b9209eb29e944f2d3231717f9a112e68756948c1fc71dcf" + "6245a0130bbffeef74ccf3ff3860ca5a23753f7539b7a268fb08434b73ba9adc385e6f9ccbfd213f812d7b64d8d6" + "d7bfce1e236c5fd857", + "94714396e2dc4bc13a6d628563b0db14e189695810a4925a90826de63327942db0508e7453", + "6f2364c357e257e9b412018a1c702f0d0c1170751393b1f73999f77927d4ec1454e78eda131af56b1b46e348f877" + "5e6a022a746b31ee135651bb2a14e21cbc3f333c13df02a3de6d5128ff1145514605d98e984c28dfa89cbfd2f0d8" + "bc41af3e4c73e7ddc0", + "8df601cc113253733da78d2f06eaba71d45d2026e77c30918ff8c176b54f75a5" }, + { "4666ffed66ee2dc3ed18e6345384e828", "8c5c38610ee79b818c18e95ed2baf026", + "dd2baf24c168f99d1868712a43dfda4717650c26c36378127800d8cf", + "196a5357a0d6c588acc29f85cf38b78b61e0810feefb965d", + "a58828aa09a6f25e7d4775ba7a2b303085bd5fb43cd61bcd19c8bb8a", + "3f54d97c03f05417d44d62925d9a0e2c457fcc8befd1c388499c3e38bf89e163" }, + { "2d5464646342ceb3039a9d2fa406b90a", "8f045fec196343f938902e1bf706e34b", + "260ab30c42d3356dc39837b28f6f387accc2527aa853dd58f54426d52cdb9ffc0a5ca5a5c00761a7299e72d48874" + "b46ffe18dfaf38f19cfad76d7c9cb4a4cd7784cfb125a58673972b4bb8c894da2a8969f68cb27fab746f8d62fef6" + "0664900833dfca7e0be03eb5908f12e74bacda9d35b06e", + "d4aa5263a31fcc8ccc9e1127f7ba6ea2d3ccc72cd7e98e442890ad3f8763856d90e362", + "51ede001d1e4ca8a3de43186651a011cd14f4bf93e9375e910a8974ea411343b68e8f6ce80cfc945ae7d9c5adf76" + "e1c0f93de8f5dc48f36b82b65886776f1298b36a2f012140da048da77e09e4d57426abe2b894c425aeb2050b0eea" + "2d8f8255b733bb814abf3ef3d530d87dd7e1504bd683f4", + "890d5d33a9dfa3807e5e20e4824d13fdce5f7ccaeee1f3448a4b21a085277370" }, + { "723efa25ce1bf1748d86d9da611be9b1", "aff260690905ed2e8618c20963e4b7c9", + "f7e3eb593d3966c015d63ea0e9211beceb8fa6d9a202bb4fd4128c3177c5", + "3950b62147fc16429392d41cc4188d5c82537204e93edc7abfe7ce3404f9aa1474ebc4acd8e18aa652a87ee99c24" + "15f9214963becd44720684f67aa814903cde", + "9d7ee643a2cec28c467d2cc88aa539341dfbc82f72b5d940feecd11d4a7d", + "eadd8931af484ec1f3c3e18f7acc0dacec73dd80836e03957b595b2022c8ac21" }, + { "784197d89800aad00105ff7487b6e5df", "fdded94dfbb72c77ad81b2ccaaa2de2e", + "b14ad4fc08d08cb0601289a7ff9127f26c4036606a50bdd2921baadffbc75749b8ca33ddf7b6ac", + "b82cbea4eaf532d52046bf0bfaf22ec2", + "a625b4da553686296d5c6f5ce526c4f84c4af779c67cd328c16a7985c9a28737130da855b1f3aa", + "1807d55856630efb2794c74810522703b71bed188d5d918b8d265fb12a8bdc9b" }, + { "4dda1ff559520020513e0a8e554da28e", "8b183c7e23130aade134ff8e539d8053", + "e56d6364a87fb7f40af02b672fd337705ab8a02a5fbf2c2a639a872da16895774d90658269437160cd22d7370ab0" + "fd3e81d746", + "675b6d9e6c4c479798038b06561f1ac0dba2ce54988efa3393cb6265d901df1f815937a6e42db8c64c76dae0c8ab" + "a0ee20", + "0b2f31b8b15ec535c7e8c732e91f4e119bca192b1fe2eaabdac037dd1568e4a8d786c7048c16ebd4c513324b18ac" + "9ee0281fac", + "4809fc5e0e21e6344364f0dd59d380740c36c1b1d22e22de5c1190c0044a98fa" }, + { "66dbe969ec0adfbe1b99874de53417d8", "13ee71e9dc02d592700c04ca0bcc6344", + "fb420a6751909185796656a952759b4b794bd4eb98c82456af4f596093f5615962e62a9ce3fd9c4e0cb31a649cb5" + "c17d30f66ad3d52e16589b174102cb5ad9973ce03f44cd3776e0d9c538d255ffe81ddff81e06cff8e4d8adef4f08" + "cca416d52ee3aade52341e5cfb5de80c71", + "db499d6cf13840accc40e3d14733662885768f7541b2615138c498b087e51b20f1c0c373a589b510de546d372a40" + "cad0f92ac3f6f7bc1b85290c4553c83b", + "7a7786b03d18c1f2edb2d9015da13a327f364895751c32b8ab840079b08e47870b4ecb49474d2da2bc0a53977aeb" + "4d63f3b4e56f6a3d22ccd64fbe098fb9b27eb5e5b1f179ac69eb3d57175bf9ee37345e6f48161adcaa27bfb53638" + "89e38cf7297b3fb9b41a0d61e751ca5184", + "18d7dd7f471d491883ad31f046ff3451d02dbc85fe59f43c5b67c53c21cd9f19" }, + { "3a00ee1e8877248065cd26e3b9a857de", "950529b19697df5b0ce43a3f429e9509", + "d6fdd1746e8e7c7b84adef010951f60fd19b5aa74b1a8ab1ef2dbd5487318fdf7844b436dd1063f10e609bc58604" + "ada5c41ae2ea1b5303f84c", + "30a5f3a4e4543dca2b4d53a59a6a11b97a7d", + "06ffcb4a0da10ae1a5a1c5b6205ccf4882a9c796370e7793d9b3ff3a857c156b3285e3dcc2181d8c0df26167ab4f" + "8709db6870c9e10e75b90f", + "6127c870f1aad279a83c79ce8226147782f709fe81f8c8740eb47bea34c2a558" }, + { "b611b23912f0c44c8f0a452e181016a3", "aa0321dae967b75f958a3949fa08fda2", + "16320a4eabdcbbb1e600058d308cd8aa650ec35985906489d1ed3210ad402589b33de4a68088cec878461e54ce60" + "ebac399457d4f4ffaea77fef304f9363817fd797afac854d0ca313321fbaca4b0f", + "d0b0ea43a3fcbcf70e5d4b21ad115e503ada6f43a74a0585481b249db3c00645f06005b1b3da91600a14a40ae5c0" + "45127cf8cb6bcb", + "39f3258b852471d9b9a289027f26c3a7e49fa8cb61983c429b3b306edb1f0d34d9718774005d71ef2e89212c6c53" + "8f647335d85a2d0b4c72b97a7eee96d5b6976a602d82a294bc2a4887b16aa327f6", + "411aac7435b623d80d284a1a6533dba99d7a44e4de22bbb22b09a4812c6f27e5" }, + { "2ed2ab0c5548c1e97879a6c3ec7ebadc", "3e15d94c7dd22593caa8be653b6d59d2", + "76b1d92662d472c87ba9b27e2756cf62513ec190f709996e", + "f1e64c14a92e952036305ceef2535f65295b2803f7396a5e88f2ac993e201782e2f1edba92011a1530278b6d3d1c" + "9a", + "8c9fe2da6b58f0a9d40609bfd9ac6855badaef814588ebc8", + "b212a9d7ef27a5228e1c02ba78cc92068c2251c162348e1d87da2afc53616571" }, + { "37263267c4f24129d9db09a2a96d7c14", "39e5c4f2b36c9ed5077765b89cea1bed", "3581b4424c", + "6ea6a9f99350a38601162f2e24928ee2", "9ace0569f7", + "746536436bc496acc8bab10e6ae17d5d1d6113b3fad96df462107c3b4b6bf96e" } +}; + +static int +tv(void) +{ + unsigned char *ad; + unsigned char *ciphertext; + unsigned char *decrypted; + unsigned char *detached_ciphertext; + unsigned char *expected_ciphertext; + unsigned char *key; + unsigned char *message; + unsigned char *mac; + unsigned char *nonce; + char *hex; + unsigned long long found_ciphertext_len; + unsigned long long found_mac_len; + unsigned long long found_message_len; + size_t ad_len; + size_t ciphertext_len; + size_t detached_ciphertext_len; + size_t i = 0U; + size_t message_len; + + key = (unsigned char *) sodium_malloc(crypto_aead_aegis128l_KEYBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_aead_aegis128l_NPUBBYTES); + mac = (unsigned char *) sodium_malloc(crypto_aead_aegis128l_ABYTES); + + do { + assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aegis128l_KEYBYTES); + sodium_hex2bin(key, crypto_aead_aegis128l_KEYBYTES, tests[i].key_hex, + strlen(tests[i].key_hex), NULL, NULL, NULL); + assert(strlen(tests[i].nonce_hex) == 2 * crypto_aead_aegis128l_NPUBBYTES); + sodium_hex2bin(nonce, crypto_aead_aegis128l_NPUBBYTES, tests[i].nonce_hex, + strlen(tests[i].nonce_hex), NULL, NULL, NULL); + message_len = strlen(tests[i].message_hex) / 2; + message = (unsigned char *) sodium_malloc(message_len); + sodium_hex2bin(message, message_len, tests[i].message_hex, strlen(tests[i].message_hex), + NULL, NULL, NULL); + ad_len = strlen(tests[i].ad_hex) / 2; + ad = (unsigned char *) sodium_malloc(ad_len); + sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex), NULL, NULL, NULL); + ciphertext_len = message_len + crypto_aead_aegis128l_ABYTES; + detached_ciphertext_len = message_len; + expected_ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + assert(strlen(tests[i].ciphertext_hex) == 2 * message_len); + sodium_hex2bin(expected_ciphertext, message_len, tests[i].ciphertext_hex, + strlen(tests[i].ciphertext_hex), NULL, NULL, NULL); + assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aegis128l_ABYTES); + sodium_hex2bin(expected_ciphertext + message_len, crypto_aead_aegis128l_ABYTES, + tests[i].mac_hex, strlen(tests[i].mac_hex), NULL, NULL, NULL); + ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + detached_ciphertext = (unsigned char *) sodium_malloc(detached_ciphertext_len); + + crypto_aead_aegis128l_encrypt_detached(detached_ciphertext, mac, &found_mac_len, message, + message_len, ad, ad_len, NULL, nonce, key); + assert(found_mac_len == crypto_aead_aegis128l_ABYTES); + if (memcmp(detached_ciphertext, expected_ciphertext, detached_ciphertext_len) != 0 || + memcmp(mac, expected_ciphertext + message_len, crypto_aead_aegis128l_ABYTES) != 0) { + printf("Detached encryption of test vector #%u failed\n", (unsigned int) i); + hex = (char *) sodium_malloc((size_t) ciphertext_len * 2 + 1); + sodium_bin2hex(hex, (size_t) ciphertext_len * 2 + 1, ciphertext, ciphertext_len); + printf("Computed: [%s]\n", hex); + sodium_free(hex); + } + + crypto_aead_aegis128l_encrypt(ciphertext, &found_ciphertext_len, message, message_len, ad, + ad_len, NULL, nonce, key); + + assert((size_t) found_ciphertext_len == ciphertext_len); + if (memcmp(ciphertext, expected_ciphertext, ciphertext_len) != 0) { + printf("Encryption of test vector #%u failed\n", (unsigned int) i); + hex = (char *) sodium_malloc((size_t) found_ciphertext_len * 2 + 1); + sodium_bin2hex(hex, (size_t) found_ciphertext_len * 2 + 1, ciphertext, ciphertext_len); + printf("Computed: [%s]\n", hex); + sodium_free(hex); + } + + decrypted = (unsigned char *) sodium_malloc(message_len); + found_message_len = 1; + if (crypto_aead_aegis128l_decrypt(decrypted, &found_message_len, NULL, ciphertext, + randombytes_uniform((uint32_t) ciphertext_len), ad, + ad_len, nonce, key) != -1) { + printf("Verification of test vector #%u after truncation succeeded\n", + (unsigned int) i); + } + if (found_message_len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + if (crypto_aead_aegis128l_decrypt(decrypted, &found_message_len, NULL, guard_page, + randombytes_uniform(crypto_aead_aegis128l_ABYTES), ad, + ad_len, nonce, key) != -1) { + printf("Verification of test vector #%u with a truncated tag failed\n", + (unsigned int) i); + } + if (i == 0 && crypto_aead_aegis128l_decrypt(NULL, NULL, NULL, ciphertext, ciphertext_len, + ad, ad_len, nonce, key) != 0) { + printf("Verification of test vector #%u's tag failed\n", (unsigned int) i); + } + if (crypto_aead_aegis128l_decrypt(decrypted, &found_message_len, NULL, ciphertext, + ciphertext_len, ad, ad_len, nonce, key) != 0) { + printf("Verification of test vector #%u failed\n", (unsigned int) i); + } + assert((size_t) found_message_len == message_len); + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", (unsigned int) i); + } + memset(decrypted, 0xd0, message_len); + if (crypto_aead_aegis128l_decrypt_detached(decrypted, NULL, detached_ciphertext, + detached_ciphertext_len, mac, ad, ad_len, nonce, + key) != 0) { + printf("Detached verification of test vector #%u failed\n", (unsigned int) i); + } + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", (unsigned int) i); + } + + sodium_free(message); + sodium_free(ad); + sodium_free(expected_ciphertext); + sodium_free(ciphertext); + sodium_free(decrypted); + sodium_free(detached_ciphertext); + } while (++i < (sizeof tests) / (sizeof tests[0])); + + sodium_free(key); + sodium_free(mac); + sodium_free(nonce); + + return 0; +} + +int +main(void) +{ + tv(); + assert(crypto_aead_aegis128l_keybytes() == crypto_aead_aegis128l_KEYBYTES); + assert(crypto_aead_aegis128l_nsecbytes() == crypto_aead_aegis128l_NSECBYTES); + assert(crypto_aead_aegis128l_npubbytes() == crypto_aead_aegis128l_NPUBBYTES); + assert(crypto_aead_aegis128l_abytes() == crypto_aead_aegis128l_ABYTES); + assert(crypto_aead_aegis128l_messagebytes_max() == crypto_aead_aegis128l_MESSAGEBYTES_MAX); + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aegis128l.exp b/components/espressif__libsodium/libsodium/test/default/aead_aegis128l.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aegis128l.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aegis256.c b/components/espressif__libsodium/libsodium/test/default/aead_aegis256.c new file mode 100644 index 0000000..e7158c8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aegis256.c @@ -0,0 +1,723 @@ +#define TEST_NAME "aead_aegis256" +#include "cmptest.h" + +static struct { + const char *key_hex; + const char *nonce_hex; + const char *message_hex; + const char *ad_hex; + const char *ciphertext_hex; + const char *mac_hex; +} tests[] = { + { "7083505997f52fdf86548d86ee87c1429ed91f108cd56384dc840269ef7fdd73", + "18cd778e6f5b1d35d4ca975fd719a17aaf22c3eba01928b6a78bac5810c92c75", + "5d6691271eb1b2261d1b34fa7560e274b83373343c2e49b2b6a82bc0f20cee85cd608d195c1a16679d720441c95f" + "ae86631f3f2cd27f38f71cedc79aaca7fdddbd4da4eeb97632366db65ca21acd85b41fd1a9de688bddff433a4757" + "eb084e6816dbc8ff93f5995804", + "af5b16a480e6a1400be15c8e6b194c2aca175e3b5c3f3fbbeca865f9390a", + "0943a3e659b86e267ffea969ddd6d6d63aa35d1a1f31fb6f47205104b132da65799cc64cc9f66ffa5ec479550c2c" + "5dfa006f827ef02e3ab4dae3446bf93ccb5c17e1ec0393f161fca94f2944d041f162e9c964558b6b57d3bb393b97" + "43b1f8338ff878a154800fd16c", + "480091eb823480e8b29c7aa96ffd55a026ac3d7fa16787c36c25865131a639a4" }, + { "c88bb05b2aec1218e1a5026511e6d44de7bd502588e9e2a01591b39c5ead76ff", + "4a485f226a73f0c4e16242e8234841cdf6af1771eb278e7f35428d03eb5b4cf0", + "2a4c06941ec356390542d7d7833fd68fc85a00c0452281f87dee6f10180d02182791232c7007fde35dfd5a901afa" + "896296f9f344db717994d078fbd3a4cec8d782d2bdc205f3709827b776fd5c863a952fea97a14a6c2ee3f20432b8" + "baa084470179078bd6a83597478b2fd9ae00ecb424822cb0d61e9a55a4", + "38a9809dbdd2579010d38bf5314f255b", + "b8565db06c2fa493e09b6764f4d09296422095eb6e9890f606654713bfee6f362a123688b61f254f315f18b20bcc" + "5ed8b0b4f2224de9f498e3ef03532a8bcddb361f5ace8ff491bab8b3d06550496501264f9f48ebad277e74921467" + "89d0fc1a3b1e3e81598370a4183683d1fee25a9a1fe359c836932746b9", + "5d5d35e0299dea47956a2e2143cdace4de8d228784d6717ae5a6bf5ea6b3ed04" }, + { "77b473865175ebd5ddf9c382bac227029c25bdb836e683a138e4618cc964488b", + "f183d8de1e6dd4ccefa79fe22fabfda58e68dd29116d13408042f0713a4ee5f8", + "9888b8ee03c3217a777b7558a31e331909570ea196f02c8cffad2c8dc6499b8125363c06a71c057842666bfb5c6a" + "cc937d2eecd960330c2361abdd88a4b191557ddf5102de75ddc7e09aee9862f32e24f1db3847a5f5b379fb32e2ef" + "7ffb0d3a60", + "0679fd74a846965e33e558676115d843e440fa37092fbd5c57c82fd914210fcf948f911b04632d66be46248d772b" + "3eb9f55b537e54b1ec751b63f035c8", + "3464d835302583ade6ed99e23333e865d3308f31a6cb65bcefdc9a1b9b4d0e0f75513188480dac4a64922af44413" + "24ce7de74eb9f7f4e414f6177a4814edc96313694b99ff8dd36b2f7f79c7ecd70ec475abe1c1909238767f172fd6" + "b95e92c025", + "33527e829a3db1929cd643d5251ee19482aab7f2d74635cbf8370f1e1621ecdf" }, + { "b8c6e8cea59ca9fd2922530ee61911c1ed1c5af98be8fb03cbb449adcea0ed83", + "af5bc1abe7bafadee790390277874cdfcc1ac1955f249d1131555d345832f555", + "b6c15f560be043d06aa27e15d8c901af6b19db7a15e1", + "d899366a0b4e4d86cce5ba61aca2a84349c8de5757e008e94e7d7a3703", + "4c8496dfa6c419ef3c4867769a9014bd17118c22eef5", + "f81ceacaaae6263c33f836fa26d92b0f08eb0796135c7fe312c93add6a208e8a" }, + { "d4ed0fe94cda2be7e50d57833158c84180b4cb7dec95d5ba774b6b5e1b0597bd", + "cae41ba20bfd124270b76c13d61c1dffd7a42017731546d41aa071c22b9967cc", + "1cd4b85fa6c14d5adea84ed3167479c1cd18e77792cca73a540aa16a00e50ba62ddd12a62911b21d3ee108651693" + "7f33ed7756c7ec93b3", + "35564745c05bc961994ea03764eb02044f9e7b2f6130d6d1f041580d6b3ea7ade2b6e231dacc5e97db01", + "a1f64f45985a89303d1fdacf6f31ad745a8015350f1afe63d6ecc26677f661addd3c229ed76f4c627b1e902f8ce8" + "c42fd08baef481e86e", + "c706b2f13d4e76b4e024a2d72540637a8d9ff5e626d6bffeb7801c58ccab0c2e" }, + { "d755d9d980e8cb221955b63c19f3989eecce945f61307a0593bd7cbea6577e1d", + "9f83666d787e5ceb0e17fc1b084b3734dc3ea88dda73b1b7ed53be7491f4637f", + "d1093941fdb3d9710cfcbe504be2434c17296d0b7e0f4e4058e79062f2b2cf3cbe2007ae2e5d391ebf3fc1e07e4e" + "e7d1705044c9bc2bf08e97a4d8", + "f2a1432fba86dc01b3bfbf3206943bfa3dc66e9f54b576c57f61ad515555b0c371dcfcec45eaa58ca06654b6cd47" + "6aaaaf1b2602c03f9e41a2cefc265d10f19d42bda0b07aac8e86", + "58e044943cf3b73e48ce75c048464fedb0445b02bffc00c1998b212f48f48c93e89dbfbf36cfade1112629e8deb2" + "67c55118c10ab67b7ef2740fc2", + "0179f0edd217214881e90c1be3b513170d1292603c484a55499e1bc70970d5ed" }, + { "152f15933e4ae26192bd3aaecea29daf77e9b2bcd97e7eae7637025de8a3d3ac", + "e177be02348efb533fc2e9d5a259cef80aabeec97da50c937e8d5f7c6eeb32ce", + "ef86da6d5b0dab27a444a95ef5c237baa5819b863dcf0232d0162dceda8f180e1b9c6b9d94ccc0692eb52923783e" + "f9de17497f1da62d6524bbf432aa6c3bbc1e851310218a03ef97ac6676eb6ec30ba6ab131802b992a11417cd00e6" + "270ac73dec8dad88ecc3cba25734ef7de3b8e3cceb5d19778d6808", + "221b1875425844e48c2111fa59b6df729a924a43b3869ab64f8291dca8f12be34d62d11ac94f9f308e0744d5d5f4" + "564fe9fc1e014cefee3cf7706ace4643871d41f1ad5c616adbcc1e9701a3b4", + "dc48260eb047397f41c4d0a0ffe394557aaff8b149cf4b16e7c22754095f51b626ded66e3db9d4cbd98421ee9d8e" + "7c6eb72b607cd462f1fb3ab0c41b2cc84ad320c781ccda9aefa1a68ff5d280500a17c7959e869f45f97bf09cd0bf" + "2c4c068d2b9603710ca8f71f82acd47faefdebdd0abc9b45c83388", + "97191234839a54c00143463e8e8c863f5710e520ee9d9b9ce051076696bc8b52" }, + { "873edbe818233d0f51bcfc1d5340cc4712c909de36f963e6157f128b8a71e3a8", + "16e7637700a6fc10539c056663d12ec85bd529f1e6adb131a3853578f5d27c12", + "db38cdcecbd99003978832d29cf6a34acb4d0e6293e37d2795fcded538ba37d6a11ed41430dc9f4c0cfd27587d60" + "7846f42aa30682bcc295097053821b80b5869b4a0b852ba7ac1d7b784ea0e76b2d033678011889a5adbf7e091cdb" + "b9754f828b7519f1179e2426ca6bf80a509e34729c854a5052e61adf8d", + "0b0bd264fb5030f84da620f07099f42dfbad57c314102a1f7fc0b452ebb7966ad4b88ea773aa07", + "de67a4eb8821625d4451734993d93e0fafd2c55c761afb097bfccba898e6d634be975d5f2ce8d456785a089c9b40" + "724d8ea41095c1cc80f070c3ababc9258e5eea504831b034baccff61d8f73c220d5bdb1244c8a675f2d6081abea8" + "f59088b99583cae22f8bd37fa030f94d5bfe1c9e799aa71bb41874b17f", + "8665ecac1758be7eea0b5f482ce8024ce3c78b3f51af3ee4e0b440f24db2f451" }, + { "b04b735c74d2286302e5994e126a8a8f52af38d6cb094279ac883b560a52a6a6", + "6af57ad705792ac2f71a61bcea9ab38a9a5acc510de7995b66f3ae4cd2079aa4", + "1c052ab52a21894287fa7f763b12f49b2edd6a0cd266e93207573d08d75ec31b294d171f0098f804020cc12056c6" + "0f8d396ec94d97eae1c07a874849e39a3302e8c3b538de6c9e268fb922f6875ee5bbc264137035a76d9ceb269dc0" + "988517a302c2bace2fb6efc4ffaa2c1455a16b6cd0", + "52618046f112a5a35780e370c713987e24609c38157e5fd5d51ed36324359b0615af70f801b05a98ceb1", + "7183180c37ab14f38ed084bdd2aaa4e8d8e8442b526214f594054e0379a2aba6992804afa8c63bb1e580d7d905d0" + "c46536970e98bf7cb921e95db8faf388e7c98cc08496a7036b90a2e4efdfbcf79610edbc9f905067358b13934825" + "c0ed2e3c3d1f03f7ceb812945f77fcb7731f805b1c", + "483a6b3a7d5de797f0911d2a514350d5ae5af89aefe1245cb08cf8c7487eb99a" }, + { "5bd7cbff6b469c03643cabb99dc50f905091fc9cfcd6d8f28e74ac1a33fd0198", + "3b458a51fdb6b9d5a7071a22825a79f2844c5ac7ae91014ed7862499dcf10461", + "4eda7997fa3b9e12e39eb00b209b43af9949c017660e523e78d0e483f23e9113b662f42a164db3511d", + "808d8a8523a983a2afb2f9daed913efdc19a3c1ca3315382ffe757426e7ef65bc1d83d8e6af95191f3c30de29806" + "5be1e5d14d0dba8f82281aa2fde67684cf7eb6f32ca4de7a116caa796f2b27222f93b9275f4b95f08c4a4e8d6b13" + "cd326c16daf232c8", + "98959acc116ede75df052f4028783105408022ed6db9516e8a27f18c2b4d59f1bcaa7163e0811203a2", + "edff06bd132fd3031cfa5a47803d5169289a29d304f7091b20dec2b284a0e271" }, + { "1bc0dea26d8583e51cece0df7021522adb9336450929715fecb497c43cfba717", + "7cced62d655e703f54824f4e2ceb6e5af1507e2000f1bfec9e50eb87328c2218", + "edeb537b66dc39d20ef6ca5647e6f34df0f5dce2964d227b0c444613f951edbbc532b5576735e9dbf39177ccf807" + "1e5fe9fa011bf8ab7fe9f716acd50847f7a9ce35262b22f04486f1e956e09005249b5ed70e68ca9896802c4ff9b8" + "019fab057bbd5ecddaebb6a079e57cb6e39c95f6748b22cf3703e30a5e", + "36febc6e0763391b6b1031478fd485b54d427b88d06d3582c10263", + "5f75548b3bdc53e80c61fe8659f2b90350a59dff4477fad24764621dbc35ebbb6d71f80c556a825a2bba962561a9" + "db3360311438d4b3eb7452926dc5ec88d451be66eeaa491cc21837ec202b3e71b3ec2d0ed2f53ec59da253fc9920" + "482545f570e3b2e4ecb3629757f3c721fc462a380504aa8fa9fc8880fa", + "9e46a21c41a40101ca413017cadc2fed4fc3ff390a57fc0643784871af07492f" }, + { "230bf249a043d34effa31974328fce207daf3ce10b42e5b44073b70e9566b1bf", + "de67af72aa00fe1798e8b41be2528f36a45aeb3d957bbcc5c01490e4a786437d", + "12403a1905c9da8bd546946612e7d4ddab1c716a533cbd5898240b4c68c675c2f18b72dd40c218bc6f7599edb573" + "f89af867ab3c05fcef8c78b9bd0a267e8db3d9ab1dd04dd14a11f9c9e0", + "77fe28a72f7029da86bfbcddcb819f7068afc07a249e207ae80f0acb90", + "e9f1c7e28b1581f25448b1e21de4fe67c3ff432338b2f7364460b6b1f666a2ddb5b9cc896c3f410445d00c146952" + "180ad1a36944aad13956e6ff95449bcf8bb6cdb1b3e87112507663441c", + "7174e0d47bd83c1a8cf9cb14127d26bad67bf413e146bdfceab4e79b7ef13c70" }, + { "c9675c6e2c0d8cf9f45f17faff568943e4a9038df4472908dd631c5ba8a29c2f", + "bc07c8de4778d50f5dbf324e3f9e377b82e6defdb84163bc9447f156bb70beb7", + "d2c4c2773ac5fcbfe43869bafa8278709a32dc395be3df8360562184d47675133ff716c620fe4d18902dfb41d09b" + "205c87a9a2acd268f9d5662c9e4b12c50181d93ec7b676cb7afd0639f2b3c1154f7489cdf926a85f51c62eb16c47" + "b1bde2b46df56ffc9438b395", + "88a976fd2e7ab25e492f90a1901d7d3982b678217d4b248066c6d8e7a97af0aa93d04300eb0fc0be23a5db41b1c5" + "62efc21c6057c57cd723894d9735d3a651240c6c30e7afc2be2192081c4622ff1d7390e81182642a4d532dda34e2" + "ed45994ce50e1524ce", + "15f5a70290975933cbb70f830200fdd876732952577ef9c0bce0293e78c0525a1209eba2531d9c58cb742ecb4555" + "d4c9cb6bbe69c62a0910e633d14351d3b8f0c3c6734ed9adc384c294bc4935d0026fcd50d513750826da12ecb5f4" + "6b7c6595550547b963de030e", + "da44d1dc3de8523cb2dc0b3d5012f0920ef4665fb676bd4ff66fd6662db058ea" }, + { "c4de2cc53d61339da13f360f88ae40b1895067680a7a9d28b3d281bb2a7d2f34", + "29428c6b06edddd68e8f4973fc2a698fc49c71230bb97da4fbcdafb7f945c9de", + "e9d1f0438a405d57816cf8eb37d3bbada217837db578d7c8e26355ecffc3b497732a54ae509fe8402f30239dca95" + "9b0aa7bd436f23c31e2b9cec889f3bc82d4ad2d4af9c6f978a14b1a8dd325d8976368af2d3f04b83ee343a0bea47" + "0bf8d56913986121402a49ed4a68c6526cb53d41ac", + "74", + "f1bc93dc853b7989e79d34615742488c52221d9d277560406fae0dca1a086ec09ae034a37424556922cd6661bb01" + "a389aa00823fe3e2fb84e9811a078bdcbb4da5e949fefd45988131846259c64b45b279b7cce15ad2b1ba0b52db1d" + "e7d39b07458bba7b26a4a4081fa3b0b6aa53b73d6d", + "ff4527b7c136c8c92b151e0658ff456262fe74a07747f9437445d9336919939a" }, + { "0d0b70db983f4afeac46cb5e042ca51a6a85cdc500f2dfb2f97282d2f96d3235", + "a1280a20ba18cf8977c63450318ff1f6c4303b20c111fc733212e37e11cbd38e", + "d9db68a084a6aaacdbfa1cfd7ab1f9b4fde06f18ff093d9f5a04afb9f1a23a573125906fbe126e8fc0f51e65465a" + "09c1167bb6fbb623f311fe07f564ad4216a01b597d4d756acfc736b905a26dcbad3c6aae8bb7043039d06561ff59" + "7924d623767105024c170113b6", + "0a9d9525935e346ede23c3eee268c24f1070959d392d1aa1c4234cc19cce7807c477ac8e9062ff302015952aa910" + "6de9db40c8d20e022f3617", + "2f517ff86b32f3841fd9cfd34fbbf2bfb77b190dd2bdb74f438914d95809d52d20f07af6fa7a03913a517a6cf3dc" + "591045eb4fd7fa0b55d80ca54d48ee85d56841fd44db7585e5d0ad8f27264751157be2190b85f224623a40c4c821" + "cc8c7c680c548204e7f742d749", + "054df03cbd4f45572ecee0a8fe80b37eeca1f17881bd12c42ad6575a5ef304c5" }, + { "8011b1043674d753172302aa123478a121640daf4317957545749d0be6a91698", + "57bd1ac0f3db407989f88a762f60b3eabd03d3bc3bae577f3818b15c0974ae9c", + "be1833fd169fd745acaa7d8584c457657433e6a3237225a086d47806804120613d78344e097ecc6a5f869d07", + "", + "e34dff511e16bf12570a6828843c414b8fdced120db36ea0223e8700f57bea4c9dfbec5d3195caa633d52ee8", + "0ac3f0459608a7f38b5b77c3f38c73f9ebc48253b316830b9583bcd51ba5c995" }, + { "d4af433d4d7598a8bf02f3e34ba9014a85f92e7ff946d51ea7fa9a4f5cab09dc", + "4fa45413eca04bccc3c732e18fc6442646e5d809afc00e1e749a8b8f84d6926c", + "b867dea7593a03b7b7762052e58b18483163c0828f5ebecb8cbbe4d55c7f1a4ceadf55f4c3a979e619763377cfba" + "4f88e9e692c2794ee862b2aed63902879e11c5ee167ea4fc266a4556fbb54357ad243f92418a1d13c987f5b260e" + "d", + "ee4ff169ca", + "e2e12b2510c72d2d59ad8bf30235d14f3e85824e19b09f4e84eed629325b5a5368178dc94dac13b9aa262f12592f" + "8748bbed8581dad74895fe73dac4cc3a5f17ba480903ab86d349d68cfa0e4dcedea3321ffe1023b092cc77853a0" + "7", + "07a59bb7b8f5805195197a01bf6f628c689024dd64218f0a2a9b77aa5cd6b357" }, + { "2eb12f163119cd1262e0dbb26338486bc75c183026cbc71bed601f6cde324bb7", + "c59654bef68ff95760ce8fdd39f480a3655c650647d00e49620b9938f917535d", + "9cf103fd377ee14f1fd775530b5153eb31789755382697aef6008f59b0404bcf3fe34509835308cfac8cfed2678f" + "523815615423831317ad7770ef74145db7a72ca9462ecd50d7b19a0d50e894bdadbb0f63d6624c80c85836bfabf4" + "4359f700fe04b5e6bf1db1b4ded24fe9054e7318", + "a3fb893a7baf646371e92f3c34c6700e6a9306bd7e905a25be4bd7d6239416ca94a1a31b59068729", + "22139c2d9bedf4a0535c22de56fe441df6752a692a99c10c186b439fde9954e815d6e81d0bfa0a7c3caf60808343" + "3e9b8d32321392f41ae03e5b67cd7801362c371223a98989b00c79fb42d4b25cc222ef6a4fe415654030e67ec506" + "44bbc93fe83c20e1a30259a14ae1ec82ac4759d8", + "83b054697569ad69e55ee1b1491b9353255c4cef4c0f31a0db8090b7dd06ce0b" }, + { "553928dbf68b2dfdacd75bacda2cbb4fb33d81f55731f8ac6615631ed4169784", + "92e86bd57fafd57c88a090397a72f7af5967fb623eec8892b358abd1665f88ac", + "b305ac06529bc8483fdc6d765a535ccbc8125a27b8d72fa2450053ad4be45beede300f87e035a05538b3", + "1f80c2c7694a35f5653ab2fc2cc93614d959f2136bd4cf2918d2a20d6440e8ae73a652e08b7987d1df8c", + "4885419082270c83c03f5d4869adc63cd2f940bf527e8474c7c61a748fc883b74e5ffbd8b0cd3e780a92", + "ef4b2bbe41b9c4e58e207fe9fdbb0e9aed224989d9b9a77e78003b1c2fd7bc31" }, + { "4d6ffdfc693ab2d94d760163bb9b31728a2762c26236f04859b7b31b98c0e159", + "e412d9b3b1b40c740ce56cdc0bec430c0ba4f95f5d83124244cebae8295b31c5", + "ff03d03191d459d57a628a8d69d398214699bf88c2ce8694e2dcbe6d9c987056a50319ef387363b6266fb8d3e15a" + "fe3b2eeb964800799c0686c3d6f0b27d9523592690ba7d765e9a21d62e113788076267cb50193d64b43156b3683e" + "7ab0758e", + "78c96946f355a8153659dd06b41b75b8109b0c31c0d6ff2feb90c875a3b211f01061f73a88a9d42550c807676dd3" + "a405516da1d2639395cb4df526e046d621ec997c1c4fc858b60ff9051f2ee093fc8f032f367bf25b3f32361d8aec" + "5c0e239dbb129316411e96da198d6fb512", + "4c3083ed17c2de0981fcfd38bc244c6e6d0756fa3c23b22fe770c0c952159b6e112c6f4b6686aef4bbd0be98bcb2" + "c32c44af09425f70cbe031d08798ef258a820dcd3029d2b0a857615a939e2a008ef14b949f5bd4ccb4607c8a8a4f" + "c5f1236e", + "bfa101aea1676baa3b5205d45b572425ef7da415984796d2b76f01fe5e37e919" }, + { "c9bde00bad3334e5792b5c1e5a8fda8ea7f7eed152c0a3feceb565208017af73", + "2ee41bb5c473206ec00ec597548161573e8c2adf7387f88e4fcf64c84a2f5905", + "b7dac21337a4029b80ae0ce7578eb0eb45c76eb84d68c4dde73690162b377118237fd1f466ce1d7d7638945779e0" + "b148047c61b63c7e05c877f75f4a52865efe94fb65ee99e4b0d79242c69c3aad1c425d017a71eb26adc2594a6a52" + "16eb72b736f40a91001b13c91d13d5b057ff05ea883ccff3eb6033679b7b41a62f", + "26b1dbda8f99f9492955fab6891c3de81e4535ed525fdc6d98beebef67067fefb1674359525cacb2119d016876fe" + "b5dd", + "6249b44800c9d47ca20cfc1726563befbedf20639735d441917f52cbcc7ef72d5b095c6a15a7bf1239f8b93a62d9" + "bd5e7f47b05ab9f12b4da72392ab4ba093de150fb8b7b61ea92e6a3204b178e2e1c066102ea9aea6241749ebdfba" + "4b307ab0a5471d1d43fc930dc29a1ed5e687d41883c69d0de38ffdd25ce4d8ea33", + "53bf7cee58474076330dc64d1eeff748df909700dd942d8d59da2447b9f84fec" }, + { "6466a65e9fe920b026739645b446cafb70919a5d03a7e890537bf88c620c5bdf", + "db812442fcc36f2deb4b04a9c32354579abd8a57c185654dc8ce5af21f5e5463", + "39917090786a9532f0700bbdd94d960491d89b68b2b9b1425ef8db67b735ff08d73cb171d911eb94eda3354e252b" + "ee238408ced860a8c1657fdf8c9afea4f4bd041173ae22f236c238d38e469c89b2b2bc73d3ec88cda37530362939" + "34732295e29dda", + "34c8b124c1e26a893aeee4b228214ce840cd9e49f1ab7bbfbb4d90c808215be99c9da5d0d426d5933f6aaf9d1af5" + "78c1a6f2b56e6b4c2ef41f6fa67e7f2693f36b3e21223a5428a8a24d2db24d", + "e1d4206c53b1072c317a494b43323a65d4f17afd6f02f865d94c425f80153add9d611175e9f0bb45c51d7f469272" + "10bfeafdcbf29cf3e1de3c01f4fc3fa94848af52293e3f48be11d1efa5d6e2aefb62385c97ab1dc7aaa96bd0210b" + "af8a7c732386b8", + "bb406b111937304d1ede67719247747cb082efa5e8743364b763ef0e9af1059b" }, + { "be69e13f684ade9206fc567da10871fa4bface67e86e23b9bab7da87f5c2f39c", + "d8b143fd6fe42e1ddf4460592c2c3239e2dd97bad39066b86d121b658395bdce", + "4f7c016b4ad5d4822e125851ea3cff387ed83933c6e20965225c34e5da784ba36585e38293c6508eca322e9a9bfb" + "21b3d5b5b0866c2d32b850072abfebf5417f9cf7c1b3e995338b99cab418b9812863c051fd03131c82b999bfa107" + "bb987a83528931e75a5f4ca0de75f0", + "0d32bb65ce4936e3c9eed5cea33bec6cdc7c4e105c132a2dd663bb2cb0fa2ca62fa1fd55ee46ba39853c04655a84" + "fcb4eec40e5a810e8ecc01063420cae63259ed33cb3fac23b343cbfaa7d9bb30ea45f824d0eaff4d836845baf675" + "6564c66e3aef9457baa1c70e3a9b6cf4", + "4cb6bb6308675a9a03f72d1fbf1d2b7b092bb4743e6f8e6d4f8bc176e1778eb226efd8b33a14c3bf0a554d7cd648" + "80dff4adf7fe622d8b2a51d5a3becc06f77046eb98f6f8b7e4c9a9cbf24eb7a384f87912146662a065f22b984e9f" + "11bbba929183d4152c2dd607f87714", + "c06e27543c2dad50440824ab41013fa2fb34bc1c47222e5a157fe2a8d8324c18" }, + { "e365b446bd38e82eec6f10ef0ab21ee388ad485f08935ab5b27d812c77c8c2eb", + "b5d1efebc38b831ef46617bfc282e47e20a844c326c35981b0af5e97cf151cef", + "a04e8c9a01dcc73001fc6a53", "c6064f3f164594ab4bfe65c76c753d81e110a255d3cd9e512c3ef38d54", + "bca8a253d89f09d92b364671", + "4ef59bdf41cb393aada19b052ed31e568855c6edb37d286078ea3c8b8969061b" }, + { "f6c8e88d9e0da3770d3499977a5b9f9d071731244c6b0ccac921261ca799c4ca", + "de6b3d103cf9efc4cb7d60dd3458e7c5a348692ab63a87c8ff611a336f0bf63b", + "5eda6f7400227d5f0c4f8910c621dcd6ef0c4f9d2d9fb3feab68b3b162fc3db362acfb61c55b06febf04546a3bb0" + "02dd6f3b9e2f531cafb7a6b1d31c29483526b2958eddbc9f2eab5717e1", + "0dff4615b2084f8e01dce6ecf3edfc785f1cc51361f32f29b7e5c49c82f9666454f2143b9fffaac5ad9ef9fc0aab" + "e91245cc050d5e21dd3d31bb508072d8a23d3e289aede9e95bef1bc8c8dd6d1401409234237f7e4df6db44cf9290" + "ebca5ee8a69768eb6dc29dcc5aabde", + "50c1b3be72fed8b6feeeeac72b999bf7f24bec747d30dee62f91753e7a26fdb4666cbea2f437232e57edb331ef32" + "7119b8b41572e8a6198fd4377e6657520d6e833fac4b2b2b1ea4c01923", + "342804e54894f812c0879615dd7d4b8959d36f00b03c3e183148ebba41d34d88" }, + { "c9268f6053542789747187da6140b7566024b623dc9691a534bd730764b20a63", + "b0cd1ad38a01130f0b312be85a9dd570937c0fa1050ec7c3aa31befc400b8283", "60bf644abf31501722", + "3091f60cfb9fa8946e8a06b1a663e60b54a24f2e5f8eb5282d980a21878c794efaa2f6f699300e3facc64197c5", + "a3bdd452eecc7c431d", "32d6f160b3c802fc4a92344f6edd6bd47cc83630ac76b3f7d2d8ea38bf1d8886" }, + { "491c6c8be1926521f6abfdaff5f95c5fc6ee07a800fffb4715e36c5de167e8f3", + "747cf6c78d7462846364b00f21a26b18c49d7bc3878f478af38a7dedf86c9ab1", + "9ca6b63dce33c54e7122ef72a5bec5552b1cd8099596ed8917ff694390e970248f1ef672e985121c", + "3d545120992929ab79fbe41da239705bbd20ab461daeb3f13b74069b0797b02699abe360382669e6752564f6525c" + "349b0bf6a8833445d14ad99d2cfa1212e20874603760682769ec1abdf33186de04d33621d8", + "f5a2cf25a6e22b71786ebf2adeb78d0675d08711b0cc9f1bbc6b065f056f1948570ebf4dc8df1574", + "8c7250ec14c5e10239d1d8d275059a09dce220b496a4869f82718258f52d004f" }, + { "512cb5bfea47aa81a414e0e9c866daa1f2f7d7562a9ff7616ca182642695e9c2", + "39f87cc65699610a3a5b84abaf4d8333e1f83f640b7673ba630d53eb608f3c57", + "371b10a048dc329eadda98b1ab87a8fbcf817eac1fc0a40f5a8c3e34e1b735dd4bf2f185964a", + "96fdeb760af9a39b819676fbd7cf6e025de97d9a735012b0fc2aaf2f845b4d76e97220920b7beb1b7f920e0795cd" + "e96ff923865a5eec1a08fd88c837b2ac0b38e860b1ac5d5054e46c6538fd916f46e8bb17751cf152a3dd531762a8" + "abbafe38198dfbd35ce232ec1927b8f47d1833db9bdebf6f7d92eb029056835ae0", + "dfa26829a13b2383e59180b896920d0a8dc02d11ab91fcea5e004416517cbb465f951447237b", + "7325d446ad6af8023893386201dc1a8c7b3d603d13241a5bbc33f6248d42cd48" }, + { "f2ffec87944d3061075de87038cfed1797276d8c6857433c9458677f67e090b8", + "7aef11906a27ec49ace7193bf61183e4c67835c9c26b50381c7ec18b81e4bac4", + "1460c5acbb61d26d0af31b565d3696e50d6dc022c528f11569dde0ad691b32fb20538236028d51b98d441ba5ef52" + "7ace9a59ee9784c9ff14e8a1d03b2450bb75aba2a91ddf1827c14ef131", + "d95e3d49c922e70c4c34edbde880239eec5bad1c13158a07d6a13462a8978158cadb13ee5f2cc95a21673b6ce25d" + "7c30f0c8acdfa55c259c6d03a4b25d22fa65", + "bfb8d129ab8a3898eb71aa46e2d976c44d790803420ce1b6c77c399ac19842b1486339571b82d84a0461a946664a" + "68e6387b4bec56ee0acc08bec0100175d670ebdb6a9c36fcd13126762a", + "2956d57d9089e44a5c34400b411210dd35c261a9354f6ef1d07235224f2f3b85" }, + { "5c2b46c8c5e5a4661c26ad19be10a781cb845c824a403a6bb708c738e90d9c46", + "b80e79dc4b26bb75d284f0346697816efd98b0412549d4ab09e5453b14a1362f", + "ead1a7d4f2a4d5d5a979e16cdbd32005a5b5506968e18d68a598ba5c0fe2863839ecb029450b0b2d0966558a890c" + "af2b2c5ee750be7784f583b6d3e0bed0cb5d4fa6f7fd098dbe05ba8416c400faf2034c3074dc1ef7d7ee63ea1cfe" + "d18526d394c445848a959fee", + "9aa44ce6a70328ac8455e5648a34176e", + "09633b3761e956bca7602b876d9b5429e64e56c2b39ee00484ce92ffa7395751cfd43f6c46ac3b0552fbc2280404" + "df446cdd8632a41fc7989c4d603b3f6b7efbd075aaceeb3e01bbe60ef88b696ac22f41fec3d7b65b35c0c45d8bfb" + "0cc99d80316b913968089e28", + "2e1954215e5487ac78177f851a580067ff75de270b664e962240f38a42f67150" }, + { "05fead6fb5a0f2be62533e0a29377010bac0a25c753155d56de340a094e7c426", + "aa6663a20646cdcc620fcf23c31deac51ef80b68bc8c5df1f91197066763eb39", + "5e9162142770449251a541fcb7798ee6a59ef56c518a96742b4186f3d27e3a8ef9855dd5c0c586cf957725726a5d" + "9518919c54b07b87630c8f5079b49aa656d03b0a10ae7aa498c1eaf4bf0660ff999c8080524843ff8a8137d95921" + "b8425ff6a3cbac4f52c198f9932af067ef734ca00b682f6ad0ef0e", + "08fffcc594bc5d08a1f6473b604289aa885d9b199c2acbc56493cbd740a5127ed1e218a719076a310301954e54f3" + "8b682eb9f50cb05d2335e7d82bb88487f333", + "211957354e5bd50bc25009e2cdb0adbad870d25aa02c3759bebb29ea2de74afd194aa82edf530086b07569588e5f" + "bc3618f762712d63844c8177d7d24b2d9d5f6be5ff98cf7ea678ac7022a15c17430c20213ef276284ceb7f35e00f" + "2b33a124a88d9aa6ca5eb37afa4076b051f94e2c2018cd90bfb499", + "79edf8d61edd0c8d23e2337c3cc7db00a622215540796800dd4c01be03958587" }, + { "96cfab5f246dfcf8b33a9e80fb15f90a089a9078dabacbe767082da806cb4fc9", + "6a0ad0d16594d33730b03a7b40b86581fda3661264ea17f3a4327160a30f181d", + "61b0d79387c11ac4a87c37a9b3", "a62d02eac118d047cae4ebd58ce97a7c99ed90f4a4bee9a442", + "d0762aa4c8d20934e91a999ca5", + "c0dc96d5ad1cdff9445e163c0df739880bb4dd741f4ca70eef655b213b53773e" }, + { "4206ea8a06c8fdfa6aa47e76e317c3108169d142f6de50927345a2825767a7db", + "b9c7d7ce4503a4ca01b8762ff383f0c13c240d0c9ad691cabb61a73fb1ea7dd0", + "0915f9ff74e3b4cc4d9faedd463176e8b4d259aca80b64fedb9427394fc5950d1db2ee8a57", + "4b283f58f0938a62ba97144ac872b231bd93c8bc14c7bbe22f993598544d90991d713e289cc3", + "963202b6d18e7742621ccdefd04ba47457aa639ec78ea6ebc277d062117fcb7f7efbe926e7", + "33d965ed6fff8369f9e2173f784c19795ba93776e9de83fe0292830c0ad52dc5" }, + { "7729253efc6935859e8e7cbb15850aeb37e0e3fbc017754c9583d7b4353d37f6", + "8b66e8adf9bdc7907e2127485410c30bd8488901d0c75857b35c087eb9e21d18", + "ea7d864e9e1b537c409601fa7b35ed10e66b71ad6a81aae70ab07cc69123a459b9020034dd165a46035ce9ab29e7" + "01d3622a76947e7adbf6c6fecfb4316f35e24fb01a5f46cf57", + "a3788e4450cd6edc283dc66866a7d03b1250b8868364bdfa6017cd9a518046304c4e46f5203e547fbf9c5f416429" + "41b198ea1f640ae2f6431caf544fff17a09fb288904fc3f1686c496f7c3dd47f9fe013a9", + "01a5877237bc6b94f0597df25ff9482976a5ff545dd26759efa03b10280d5f9a058c7bb1c230be66977d463df1ae" + "3ddc3d7ab02c10313320b5dab74a22dc0a6d9158cd3900a184", + "7539465a447f836c3d2e6abfc53a8d9af7914d2fcb738735d64051f8f14d59c0" }, + { "d0c627cef866ebdab7a8030be47a9aae4e97311a3a1896de7971c78feba16dfa", + "505b133a1f82a9eb4c57c485d139197fd3e59dbb07b9c8a02a32438f6502fd90", + "206f537aac47c77eff924a9b3e74ea85623945e1c24490", + "636238aea904adc5f4582d48a00357c4aa57ff1f822fdbf49cadf780f5e346f0153d8ecd353073517fe4f080", + "c44ce4e69f32651596fc5fec1f9f59cfa62c7a44f7281f", + "36d1db8dfadc687ed88ccedc2796b8aa76337ed49e999091186659586295b6a8" }, + { "e13e72cd7f25a23b4f605050771ce73980ac37ea3c2104a17a6dccfae70b795f", + "3720f810b9d2fc0c01abe11477689b78ba6515488483b747fdf66f243f2bb387", + "f2468d65f0c10f82d7989e84b500178f011bc98c199f0bc299c882644373f554ef4a6eb8ff008bf005aa8b40da2" + "1", + "1041f65b724df64dd279659ade61cddf90672f490453aed4f019dd86fe5eee3c15c359b01d0f91a34a67bb67b4ac" + "f51e229ada29499a0503fcb6eff20be9f59b4ff57b73e173dcb1faddbb111e645149321883c02b7f2ec265009e1e" + "8331905cef72a24111fd80de344b420b51e4daa88e6b3b054dd96f4536f5", + "79e9eb1f7879d2c2b27e52f3f00fa7c0e813da9bd741f1a3955ea9de04703a8624f6b7b91b0d720c95432bb57fd" + "a", + "4071822c3d3d92142be2437266fba4701e5c28cab4c11e3ac32d245351b66135" }, + { "1caf2693aa463ae93d13f6b687d7a19fdf047c30d054c2fdb5e07e88b5ab5a08", + "86603e8c83f17abf6af5d8571e4f78955440c1aa97bb6a6e146d787fcc1d4e50", + "ea9eddcc4ac951c60afae654d012b307f21c823da4ca44b3276c7f7006ce82c07d8caefa665636d6f5031e31bc7" + "7", + "cfbaf3cac9237f19986571ec0e39ed09b1a5107cfde57bea24b3f5dba56bb7db7459c4fa82ade76f63ec59e9400f" + "4f51188734811bb563131f49c2e2d71841334b596a63470b2dfe3a421cc657129b449628e5c1ce39a57ff07f2130" + "643a725637014eeba27ff95146a99a06e2584cb9bb3f12", + "de9912a8bec65989ba4c82daaeebb14aa21246bdcd52d01ae5d4e1aa3d70a12277651c75d62569349e0e4cebd80" + "b", + "7af7d1875ed73bf8db71707992f07ffb5fcaa82f5a821c0d3a9000443db1bc45" }, + { "cb1a72f1752672a7fc0ccaf10c76257c047fb767f42c3f23cabc78d35a8cae4d", + "a48db1fa02317b85f1787ed869f1b13250d7f582304594fdf4a2899d50e22c3f", + "25f09554ecaab85e2d00c6e76e31222a9ac91b79fe9eccadb6fd38bdb948502849ea5ed30470d0d94335a64fbfe0" + "d01f5a5b6afb95a40c5406c43e022520c2c727d53f66846e35fa3fedb4c7efa44a16", + "72c88fc1764d922dcc6f3a61e444213e6f7877ef585c65a57ab9814813c9ae73b5a4619b316a6cec5e34241ed2f3" + "cc530d105de4e5ca356ad66cb95f2aef4cedff42a0522f5f7d9d7a9f2fa54901e914a5b733791ef5236b78d06533" + "5477a5eac9d626da94b36a76c3f702", + "ca4afd213fa1a13a18e6ec57488012451cb648902e367edf72902944422f3dddbfd4946f5b34292c39ddd84e5c76" + "91afa22f359cec4dd14afd210a5df66a5799aea2bb57c17f29fcf9c3aeb9c528c260", + "21ac240f5e13978f67a5a233e6ecadc5e555fa3c5637d29661ed9196556b231e" }, + { "34eeeed632897724c59cc20d82ec745af1a6b43665ac88290c11b9baeda6b80a", + "562c76d4ff6201116aa3ba82056b43d8106565553efa4f65be2776ec7346156c", + "485560e1c34a3f1068a77cfd144054f1add7ac802d013adf462fa1e112fef5ca2ee8b48c1a37f1d62c06", + "26f75dda69bd27835c891b9d556fb7312ed524c8f4fed9029ad963eae7a43f85a6dec0146b919e195bcbcf7eeac0" + "09ac5aac9ec784175e0d18a25693", + "4a7861fc50e5c17910876b4cc45b1249ca8b8ed3940e82f5f6bf6e0a161263c66005ce91edd32f876c4c", + "72b792ed7d8e1d5c044c452daab093029c63881044bfa97a819204f8fd87c499" }, + { "ffae6a920ea2fc5baea3c3278f8cbba1f1ab3f07f2499cc87eeb3df3858d67d4", + "81a53e4c40e507e2071b7f9464914a273065ec7f24c5e6e5d0bb77f6fce20b76", + "484672fe6dbd8223fa1cc097886e9b73e971a6120b9f909dec308cf1df8d02181216b35ca756025dc50f6bfe3d19" + "2cc5531ad9bb4dccbc1687afc507539b5fd6259c80f55fb55cee1708485f78d013a03851e4e6ce28c0", + "8bb27c47b62c7048b6117e0c631313d2e165c277742a2a1cdddd", + "8027f08446e70cb72e52679809488940fe1965ec18bf1c56882cc412e41f7727efc55acd6c2b996b5fac79bf13bf" + "ddc7e03b3900f57589215a37ff34241329ca7b5da9ee238ed7fdaf5b1bbbb172e040d1dccc6acbd8ae", + "d25734872533b137110dec26861bcb77fe062c0c41775a2a05ccb86365bcac09" }, + { "57f2386e011a547a48e5c8c170bdc2758e246d4fdb4b5f90f06945efb6bf6c9e", + "8647b48a6ac27f0b6b68f09d9a264963b0b62c8cc8b454ccef9c503e6d568b33", + "523120a8a391e743e7e2d60fa509345da8145db83631881bcf21c0c56b47990966ee08a36b361d2660268bfebaa2" + "2d4f5a8584c1c04a27693adfef76e910eeac0454c4c1aa3b", + "e7b43a9582ba177e97df8725092ae30620a9066c1cdfa627dda1042f5a325a46496c4b200baff0e0709c52ed0ed8" + "2ab11af1efec1e05d044f50d25a38eaf6da2fc2709e609df95f2dc6500d30caca60e421a169ac0f1f69b1d774f37" + "5b942edfc4151e0c78", + "a032008e9601e05f87694a001918c0389b66d13ea514f4c2d5c891591856a3e45472f74b14c409376060ecd90de7" + "b700b0048cd84bac232f5211768e4185086d7992103be87e", + "ce7174bc583746a5183676f5af292df91213a864bae6e6783cc51543cd18e80c" }, + { "29f1e4ad600bc24f64d2a99669f7317add8e61d5d3a3dcda1968b398e7ab3a8d", + "15190e8300313a59c0c6c4dcb0358cc88f7e856240091f1b1bc599a2ff3aca00", + "b01d68b18df703fa9d166efd6aa3ac15fd48dc99f4ac806194f0f500be971560b3135ae422095a", + "cf90cd99d137d5bb0203c0a97f5d4842f4c0ad975df8a5dd863269b37e94fbcd941f220736ea4987e9cfb73b17c9" + "39be601c40daa99133b9a0f98bdc4e4b77bc47d307354119a2fab2771285048a273aa859f99a4ceb6bcf5bae19d7" + "b9d766529d53e29a384304af8de07e", + "321523038cedbe3da195d701835cf62941e6260c3c4ce5466e1fe14b36bccfc0bfcf4955f1f061", + "75b72ea023300ea4fd27926d097e49d4955c6dd6747ea38d2c33bb21ca61e168" }, + { "4600adc836738547a6e1fb257d6a7c290d4895dcbff2e071dc38bac04f338a30", + "ab2f8f6a728f1bab52541407027c51a1619c1db32985120f5ab40cef22e08edd", "f8cbb1362eab78f7", + "7adb0527d13748950fc60a8f6879ec1116c73817e343958965359c8f7f7465b26fe5da1f43112465be72751de684" + "600456e97856aee757161f6157dafac3", + "26baa1fd39aa3c33", "147f674a8345d803d23714b057bf8c030ffb002b6f9dac1a1a7d7582dd89b746" }, + { "01f560d41c4dcdb3906e687c5fe23c070b9a8a9653987706f3357037d7d512d2", + "a47633929b3fbfafd2c29d25ab1e8e3b6402aeecff25d60761355ef44ace4cb0", + "6e085d40606a8042e71fc16b720cec34e47d9bd5e0676f74b6be17f7c78b53ab910980ed7b0622c248006c0ff9e9" + "4b66b8944acfe6857f3241d0abdd8d70a4a81eb0c0a86dde53849e34643b9f37e173ed218d88bea948a240", + "d7631a8eea17f31555b3d4abf16439f763501827180a1f5e58389f796f1c0b468f41ea3ff2e1c76cd02d180c9df1" + "e19f6524b2a8d006f2f954f340a2f0a5a97946d39c34b935f5da5b081f18ecf457b6f0b33a37185ea8af64aa0ade" + "40026580dafe1a5dfd2c4a7acfa8a8254897c7fd3b", + "c309272b71ffd6ee1ed80b91ad22fe88d0488fa7c2dc4539f3452d6d6d1508c162bb8df3ec1fa5ebbd8ab738387d" + "5b0e649cfd83e17b3e943ccedf4548171c82cb8f0b2ae39c48d78df07e282cc40c3068dc70f1fc080114c1", + "786061e81d76bc07550cab11bc1ba1765b41e2967bc8736e11029968cbd85ba4" }, + { "c440e9504cfb4544932adc72ff5fc1b657ba0aae703b1bff33805b7f9b81412d", + "df08a05337a532382953728ef1e921b772d435803e671a02e9cdba82522714a1", + "9dfa0945de0d4c2cb76aa55f8b55761911163b87993db7964760dc5e807f003b6875f74eb34cc160942f580bfba4" + "d96d967d50b1b20b0643ae1a2c73691b6bfb64403350272686fc8bb3a8e3a5674761c2204ca240e37005", + "0c9f5ad3e58b9bf021e09b83564c8d74b1b2bf7c8cba0dc8177084a4e1a07bb84c30c3566103f538", + "279ac5eb9bf6e01cd50a0eda161658f331226f4c8d43fdb793ae07f353e6fc2f2821a01a02be62f515af80633215" + "a908aad8e5199c4ff23a38277ff8f16f15058d69fca995718c0d837b6db3bbb5842dd21c07ca35b21bd4", + "16f09ea8657c053e907bdf8f822936f2cac056af25e0240633c80ae0baf7ade2" }, + { "ca81440758e13fe0b847ea81be8037b1be4cf995f805d4f40c1f421c9864ab9d", + "aed156910fd8af6af094c74c0ca0fba932b436bc282e0c5c910ffd3651777117", "fd83897f98974ac8", + "64ff6ab0506574c5020e14c45a009192a7a17ffbf6761393e17a86aaf339264a5c72e9e2b7fd22832a999076dbd4" + "9c75145228ba6d36b0372042e22435f34577a2c3e1c89e2e1846dbc393d57064f016d0487d591fc6b7f8499701f8" + "2568182041929386c821b74a53232dd596b300a13fa09949939967e58b2c0cf2de5b8b", + "cc1913d2e48750a0", "59db1143754b19f380fb1d1b9296fa992b7c2f5adc56f451349d1ff95cd2a1d9" }, + { "a657ee84d894bb98db137d57121d149eee96447353225f701b4c0c8bfc5d9497", + "1edcd529feb85cd69e484c0989a9b60776437dd4dcf988e3bfcce5bead13f331", + "4fd8a593ef021f81603e430e0c9eef2fa2e7cab56d86b13a9ecfee70fb96a7bb0cdc7b23df061ff73b96a289faf0" + "c0756f0c2e4692489e58391eae3574539f40189fb8735735deda0c8d71ff361155a0d3a574b193a31746f0272001" + "fbe8f840dbb4f16f522c90096ae5d76209af6eb2e423109d2bf0", + "fd167c49f8e588d06df1ac5d94d61538e399d0c531aa0ac0f9a1c030dbd3e8b649796917f4f8f8078b104352b156" + "4a042ccffd30c19340e067d4f17b0bacc47e121a8808d06b1ea6bcc06ffbc1bdaed0999dca79212c8df6ec", + "99f8a75bbaef042167ebfb927e6ff5bdc23e3a2084e539780ffbdc20d9be6d21e761381f23937f3179aeff80469b" + "a65b8d2169c5695ad2dc64e39d165eb7e57ded4ab07182ca59e516b41dc463c2093425d9dcf6a377312e4437d441" + "6d063324d24945f86c57a060cdb4c182fb3c9094e6c43af38a8d", + "977af18c47b4e1bf3f6ee45ae865d3e3dd6ebc953c4ee636c3e560beb433c5d6" }, + { "0cb4ac9b372daf29e69a698a434c67bf822f88eabe81c2fbd1869b151bec66ad", + "b34c3f1d39ac43e9a10ed22019b858a679fc4c629b7554e4b205ec3f31d601d7", + "40da148ae0cd9eb7d108fe5b04664e6369ac4f24465737a33f2a16164e67a84a403a66ea3f4166b4304f", + "1559e36d745dd40b60d8006bfa6ad62f9f1a8a7992de66bbc71d8ddf18fd68ce01e7910a972a028334f686c3b214" + "d725d3606eb3b762d69fb1460b95e949a724d09977c41b13fb094e16e186ddd429515e939e641cc38e5f6c492f3c" + "f7495cbe2b474c48f1890e214edfb8580d1de07855084d69ae241b421ae6", + "e2c7a3fcd1d66a1f71301dfcfc459ad8c3485f2586a4594a02e46d35dbc4e637e9562cee2e317adc7120", + "feae706283fea438eaa7c20641bb8446e9695cd9a0292f99b3b3ed4609a28dee" }, + { "b38e1805f202898c64975134d2369d065b808ca28ac8562bef3dd97b96650b3c", + "1bd55d1c60a6f84094c52906fb2f711aacb93831fee6dc27fb6a746f4c412012", + "d4817734cb56d6bd3321c7a3dc4e23d5481703d72075ae6127f1f366a0624bc1e2ac175db9ee2fe4a9c0a016d1d9" + "955c652970a05dbb4b16f7d2e7275b9a915bc39df5effea00190b77eeb6fd056cb2951cada1d8ef9c8e9ca0de03d" + "7b2d659c947c9a82ab512641ae734f82", + "1be672d193cec78c85db5636ebdfe4f087ab5a2fccff0885fb39b60f901e8d6921e4d285b5daa19dac9032d6b03a" + "2a81740ba4ffd833e90a942253e607a800c1ff92", + "5be3df33c976077a603612ee85cfdf388953e958e5ee0c53271058258dbcc1fa8e493e044467fd00229b64337644" + "8e9958dae478e59808839daa20c983159be864a905f97e7e00bf82ac97bfd9d005f3282886b7c1df0b505f75741c" + "518bedea91f800fcb135688940a38022", + "5fe7fac48f68d44c9c8d8be7ac95025fb4bf890650af092d1228c4858a8c1a9f" }, + { "bdeb596ed2056c8a78eb1f33340d2b8b0789cc456d6e8db9bb45516233900e29", + "7096012b1bf4f66f48c1f26ab48d8594d244be86426438993ed1cfad84376c90", + "5f3638865cb87188951620dfbcf77c6da914372635542fca218b74f5808090f8ff72919975744dff1a6693a759da" + "7579ee01c449246e12783546333d9201ddd0e9941acbedc6c1995b09", + "186d83c27e4831ef0c472840230860513d15b0f3df6a27ce2decb7a53c15e38c3b043c8a", + "399b4dbc243c979b481b18a29415fff5065c9da5367679a2bbe60b5864352fa096c65cc51c9d5054844b8f0cdacb" + "c638f8defdc81b7d80a9f5b1fa58201f0c513dbb192ea93a05dda87f", + "7f5644fb9adcbc68a86621c4d6d7b1b32a62cda6ccdbe2d5fa8e708a4de8a3f5" }, + { "42985b7c9c97ec16bba3c36bcf82e93205c35a57428262d9e45a7fd494a9020d", + "be4b2dd3dde2e7a773f7b85f0acb48d65bdbf4d8bfc103eee72697c8834a5058", + "6bfc05bc2457a43f50a7391a2c38627fb0429a446ac684e7552cd54c07b9608f716ceeb50d6bc0563247163213e6" + "2ca2bbb5067dd00b3d884795a11dab0c96e23419ce7779554bf39c50edd6ae225998cf96d1effe70c81d348a938b" + "116fcae5d402f35aa2900673376576", + "a7f9f0d4a1cdeb5abf1d927f6968beab9c6ead6995f484c016", + "985b208c4938d0fd9ac7b653e0d04445fd9666044e79a766c746354cf7c949e8724170dd76245f2af71ac34d379b" + "0be203bcb863f40081564ba161087605a9863f5b39c2c7d0f7876c84b02d9131f5284ce5d837662575efedcbb3b0" + "12053e2c4b15ef4ee0010840552759", + "ac55330373905d10205b0884596166370c6c9c52af6a358bbf09195b3e2f2626" }, + { "50034fdf7205a542055cf377ef546d1fe01ae8c7581806688c04279aeccf76de", + "215de8afdde0916097f91dda6fecbd18c5e65bc685e10488e99a225a5887d92b", + "dcd4b2ef9dd40e50adc8ce3fb674801d650e", + "6f1ce70899b24793fd8ad89784d62ebc43b750faa9bc63fa44e707cb6877dc400dbcb85500a386add1052bbf090c" + "637c8c618428040226209023a0db954ac26824ce40ba5021bb19d1a65ee3e3c4261c9801bd85b9c282753072", + "df3e9901518fa830aaacab9a5635c861aab5", + "b2a32c41c181a42175cd9108135f815663981c51f43af547e7942f77ebdc46aa" }, + { "782358a4bf3258130b1ab345e76184bd37eeff55c6efe7b8489626e5ba01741b", + "3ae5c450b1f426cedd3f5445ee785b6c2718d587f4239053cbad839e7e19f044", "454e", + "bc5971d3c8a7284f6218685581fc0e67572e5f124405136021536da07ec4d443015de3a708e72eaa943f5b5fb8f4" + "85472a3999e95dc3ab7cf72ecba533006681a49f39b5d5768e9ed22e3cfc7d20d3744308a6518d46a0", + "8a75", "d5cf51a52be53fc9b297efd9c0f3421e598143718f7f46fc3dd542f166a65e8f" }, + { "5958a371e26fff28efef8a6e71a0b81b4a14e3cf57ac75d215376e050468806b", + "1293abdd7b6c43483f8caa43836922fb3a92feb4eb1476f4fa5ec4f06a0431f7", + "06544eb4f4baafd8880df8a4e1da38d3111149aef41669b56ae2", "5f6cd8814bf4915f08cbf1", + "e4b718de939d6fbb41e32b57098b08fa16bd39ccc085625d0546", + "d1a48afe22b3c7d28e239f103b93b0a200428f4bb8e80fcb2e5110fd1ed780eb" }, + { "7bdcad0b011743f3dec12c999ac89b28f60e03564cd076fbf0183457846e606b", + "e008a14a3fb5e56e89e02d5fec31b37b3fb6357682bc3db3368f25987f6205c2", + "c2bc1a650114c6d522d2f928c6a65fb6abcca554336dfb70b51f61558a349387b35462bba19c3f8f13488fd4812f" + "9d6d58d04a6ca93e8dad62a5f695a0834dd99f876294", + "18066e9f8cdd274090f075f3047a455ca6be1ec4d1672acb013f328a1d981bece9b9c9f0f38dd25db8523b885b47" + "cfaba4844d5bb3972591bdc2b68062e7fb0e08773506e7851a18fbc6cd29c29358a347ea195a10f5a7d874010909" + "278395f2f9820ee8eb6655602b7b44c6c1642b9c157cc5c1a454e1b18b46", + "bcf887985dc0e45a156b522f02c4b2adbf90a2b30f4a30ee68505df9c61d3857a6216a827c98d1d7df6dc664a526" + "32b61361f4d86ca646c83f690015535b149c545efed3", + "bd2cbde77f6ef4955e956d440226534942f7a41a659eb826647b3a99a57efa87" }, + { "21505992872622190e47da3d4a985ceaf356b35e096429bdff8e4a21fcbeccac", + "8b4ab2427a4177cd205fda2b2b31f8f5ecc5ff591262791f88f54535f3054977", + "1ceea40aba4d9328718e9939eaba25f5b558ed0df855e743cc958506b4d0c5e44d0690b9637bf94a30e861ed9260" + "e254d602be895f173453a7977236846c4687d2b38470f074b07e16e67721646989421cf5081555fa7bef42a83066" + "6e6c2c9b61ba14932210", + "106f5b1fed2f5d3a102733ef6fbb7e190e508e7e8cb73766bf18fa4d50b87d6f83144f9b616dceef6c0b085f09e4" + "27f7f0985a535fd9edf3bc05aa8dbc0db601cb4f90761420164fba50a68c5a87322fecbe28c902b03035e88d499a" + "f758eb2049659f2561ee6c5210579f8c0c", + "1562c0d501518e478b0c5561b32a79bbf5249d0eb8db411190454b4f3a458bfc200f65af91a22eb0fce63c726cb2" + "b51023d294c9a35e0ff842da517d6f91b6126c0ecfccd72cfc35d7ef98f11ebbb4cd071c2eafeda598a5ccf4e09d" + "8cff52ed583d968525a7", + "1dfe935ef87488e515897c850bc899d4a9844d512969802e98be90c0343bc146" }, + { "337bd1641222ad96608b0928eb3e05fee02a6fb1e2f66cb4c9b698d1d96ee39b", + "b532f2e6485513a5b21a6326beded2b3a74bc49c74db3f7a23e440e5bc864e7d", + "9cdf9d6c42cff95ca0bf8d199962f55ce013348fb06d878b10a344ad5a7b2b2981b0e44ddb7dda1f74bcd24f3ff1" + "bb63da249bb02234edf123305759780e45ace82aac7a95adbd1c7e72741e374c82a4524146d13589ef28ee593678" + "9e65724b10406aff6d19d0fee8289033c094bed67df3fd45b0bdd52fccc25492cd335a", + "efa6fdd7e4c161a5cc2eb6d67b14d6d8f16ecd3c52e8c9720709c321de05973b51750a7286120a50b3039e54c4c5" + "e09785f815ddb5eb528b43e972bf4c60e41252", + "4616337212a9b1fb827ad8729cf40a8309330dcc958ac0d5f73c9e57279de69280065e13fd1309153243c1303cf1" + "16227392c9ce4b8ab505a580c06926587378c83f49c30021a1f4038180fedbe90259a9d468c87bdff827da1d01a1" + "23fbd5b091d62d3b17e3ce7f4e83cba4510dc1e41b420c2ffc7544464befe9eb5a898d", + "709914dea13632a2127159bf004a73349efc090a46bfecec911c63679a1540e6" }, + { "88f3c9cd7b2f27295c5defc7ba7071996ae5d558192c1a4788efe8a3bc3559d0", + "d1ec8bbec1bd039825009a00b35522ad81c8de7bbfb698551f880b05319330c6", + "5fc7d4fba7f9018c91533584a5e61be925559d1c8b1270621aaa2f0f51ec69ee7b14628841e2a234f3ed4279e589" + "bc40339928d600f79a051db41699a98a263864ae34909a7c37e9c833c106bc5e996c730879d7b94d18c87741a3e7" + "2bbbd30a5c7a", + "9c", + "efec904dfe14b42ca52b083ca46fc0ab80877b425e8cfbafdbcdf8600bcaa64afa05119ebbdd0f8db82ae71236c2" + "4cac6cc53b9e0ec701f94ae4a9217f9f63ad426394793cebb1f0af7ba4bf0dc8ac621c48e2a435955afc79f095ba" + "518e20bbe360", + "1ed588fb6966a006fccc5f5a6e57949f9389f89c3e346bd8851610a0b159e958" }, + { "db7c3c7c7e5aa8a1c5cd5173bfb0d25958db4038a3d8deb705c102935fea8f21", + "315686635d388d5b2ecf3b12a8450280d92555a6920f6ad3b48ba3b4f8ec5053", + "939b319d85880267f8be72b69d2a22ba2460bbd7ce68cfc9398afce09c4f0005cf510db2aa894dcbf08120f07640" + "255a9464056ec16765521f23d602b5af51cab7133cf01123b3038cd7dc47fdd7801c46fd628de0aa", + "b2da", + "783dbc7d88eb43f69d7330326e58555f58df2e75a019586beb5e4a303a3b3e4439677fd7e00a6826372cb2bc15c2" + "5ab445bb0dfa8aae1f4d9b5d6ded219e69037c161c7fd5911bf08e3179419dbef05d37df75fb19c2", + "b96409a14cdac61218fcc2ece389e570ac6c665856f36d98fa01be4d767b960c" }, + { "cf1f1538739072f57ebf0fa4090a63c72cf8f5bb904effb6051073596ed1dd19", + "41e11d23771626febef2435eaefddf0c93a484ea6c4c7fa0bfd48f93e50b646d", + "a22ba67dac88efd1988863f8991bfc9dbb9dc1a34e3866b0a51e088671971225fed3bc0369b0bccb436249d6fa30" + "e7", + "80d7f1fc70203411f8827cd7eec9888f26e39e055d8fd1c2876e1e252b3b14363f493100f157d8246c29b973a490" + "338dfa0bcb52221d260875a65e22a56f655a55330933b35e2937c53a625a55bf40564fc58f742ecf54aed0536ca3" + "f7c59f6d", + "b3c76b03eb90c78ca281f178f30a92a98ed9966698ceb24f15f6c5ebf2e65ec4880543847005a58006a0829d2d00" + "b3", + "22f4354c7487a2db0c8c2249fe96909ea1cc9a053447b4a83ad396e3b3ec87ca" }, + { "38a7aa902690a3e1b285953e0121eae7304815e12a015fa98cbd227e6f7d73c1", + "f23f9ac01c0b118b684f10031836f7c92e8a70eea0e916dba2952b685ae2c148", + "995580acc337ee1216802b1a45daf0df12280eb94953ac61916d35eee038e5ea1d1f53da1c6a3e17d54dd1555e79" + "c4ac988494f805715f59f2404eee2fdb592fa538928d", + "6b726ca02fa44684e7d92ddb0b6e2f30d6a6e75b537f209d21bf2375718b4092286ea592f3c1750af21b12f64961" + "1370ee4bfac05e0281c9731242c507a56d9d6522c26e172fb406f3e61efbf3c346917988a1dc85c829d51d3954a0" + "825d2ca4d0e2a784c78ea07bfc5973e80fe6b34ccfe72457", + "c73f3832441f59ce54910fd16dca9e2bd59a168ccd658ba3eb87fbb1ba561f63ad73ecf9618481bc6e8c8020c60e" + "8194cc65bdea155f0f6cc79adaf2334c099793efba4a", + "5c52422a24f79990f26224082d375bf81eaf5df242389c894cf89c4d0131d01e" }, + { "aa54db3f1c5e6405d443afcf4a463974448435f4002d64044a21a04c269759b9", + "0711d3a79176e4c75ac8cc1ecdbadd4203a6a4b9eda4c2ef17150f493d645b8b", + "5a80d351e6a2682a6ceeb374acf59de7e7", + "171077e40c0a689d44003bd1ce56c08b81f6fa3c118cf448f5e8b6386328d5e3465132e5bdf4f73e60b1b1e6e021" + "d05f6881fe7ec8be523ae7e6c57dd1b0af6939b79dc785d584400dfb71aabc336817e295a922aa1d46b873ad3863" + "3099ffbecbf43527a1e64f98d82cf85a18", + "5026a9cbdd2239c6a9abd45e36d5b46b14", + "afe7bea6340c227c0f062e73a05e1be4aa63b93d35f2322322d3e855e0ef5887" }, + { "c3dddd6891c6081f6b478a6cf89574636c8905efbc8079ef1924b97036a050ef", + "abc30e2892910e8c3fb83d4cb6f93eea614a7ff03b750e31ad5fc74ab77e0715", + "079db15c3fc075189ca979ae738e72f0e5a35410b0b746d2d92874f58214cedd7e69a5337485ff038a44f18cbb6c" + "9bb02bc396aa128b87e7888011e803fd9f43dd43494dfb2b58981d1f95820be9d37cec3bc4f779861cf59137f764" + "dd88ea41cf044d9a", + "56c59f42c3429832f9f2333099d2c422ea40cf36162b162e6cda56a9", + "6910f3c047011cf301c6d8458ca4d1c40aafc129476a9c89da7b35ced9479edd3c7cbd5c1ae7a8fabff159cce121" + "c170c1e1a884255b08758d640371d26eb031ae92d1deb7091f202bff0698ca059eae8ae572ada217b6d3df5d446a" + "a5aef503eda02f5e", + "f5d285ebf784c68df40ff4324bf79d0808d43f0739d297f4238b833a7cf9c013" }, + { "77716c56b9f0e158530b24ae8bc160f827eb4a11ee3b1bb3fbef3922e41d58c1", + "f340f377c03ffca01829e013ba7a175b158ac51e5ec84e13dcc1a1974e157557", + "2b9b2bf80c7c65d0a2d243cfac9d01ec9a0250b5e985d430f5eed4ca6aa62b31e3f5d4256a9c998fc588c69486ad" + "41618d8b9094468f9e74b6", + "d314a97f25ebbb16aa2d8a444c70474b5733fa18507c544515ac905450507c708868a7c3847705fcc3b7651a72a2" + "15675a24d44aec160c562c1d68f859dcd4b9aa3569595e040ef6", + "a58d41ed071ccfd12e01de4038783e6b23f84f55354dc0368a025cb9ceff0aa01d9e77badba040fdbc5cd984f95f" + "4c6c6ad1151f02b5687ffd", + "f66ee48f6ab2bbdf3ebd292a11c997bfd6f81ef5a9b61f0c9c5f9e77d7fa2624" } +}; + +static int +tv(void) +{ + unsigned char *ad; + unsigned char *ciphertext; + unsigned char *decrypted; + unsigned char *detached_ciphertext; + unsigned char *expected_ciphertext; + unsigned char *key; + unsigned char *message; + unsigned char *mac; + unsigned char *nonce; + char *hex; + unsigned long long found_ciphertext_len; + unsigned long long found_mac_len; + unsigned long long found_message_len; + size_t ad_len; + size_t ciphertext_len; + size_t detached_ciphertext_len; + size_t i = 0U; + size_t message_len; + + key = (unsigned char *) sodium_malloc(crypto_aead_aegis256_KEYBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_aead_aegis256_NPUBBYTES); + mac = (unsigned char *) sodium_malloc(crypto_aead_aegis256_ABYTES); + + do { + assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aegis256_KEYBYTES); + sodium_hex2bin(key, crypto_aead_aegis256_KEYBYTES, tests[i].key_hex, + strlen(tests[i].key_hex), NULL, NULL, NULL); + assert(strlen(tests[i].nonce_hex) == 2 * crypto_aead_aegis256_NPUBBYTES); + sodium_hex2bin(nonce, crypto_aead_aegis256_NPUBBYTES, tests[i].nonce_hex, + strlen(tests[i].nonce_hex), NULL, NULL, NULL); + message_len = strlen(tests[i].message_hex) / 2; + message = (unsigned char *) sodium_malloc(message_len); + sodium_hex2bin(message, message_len, tests[i].message_hex, strlen(tests[i].message_hex), + NULL, NULL, NULL); + ad_len = strlen(tests[i].ad_hex) / 2; + ad = (unsigned char *) sodium_malloc(ad_len); + sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex), NULL, NULL, NULL); + ciphertext_len = message_len + crypto_aead_aegis256_ABYTES; + detached_ciphertext_len = message_len; + expected_ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + assert(strlen(tests[i].ciphertext_hex) == 2 * message_len); + sodium_hex2bin(expected_ciphertext, message_len, tests[i].ciphertext_hex, + strlen(tests[i].ciphertext_hex), NULL, NULL, NULL); + assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aegis256_ABYTES); + sodium_hex2bin(expected_ciphertext + message_len, crypto_aead_aegis256_ABYTES, + tests[i].mac_hex, strlen(tests[i].mac_hex), NULL, NULL, NULL); + ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + detached_ciphertext = (unsigned char *) sodium_malloc(detached_ciphertext_len); + + crypto_aead_aegis256_encrypt_detached(detached_ciphertext, mac, &found_mac_len, message, + message_len, ad, ad_len, NULL, nonce, key); + assert(found_mac_len == crypto_aead_aegis256_ABYTES); + if (memcmp(detached_ciphertext, expected_ciphertext, detached_ciphertext_len) != 0 || + memcmp(mac, expected_ciphertext + message_len, crypto_aead_aegis256_ABYTES) != 0) { + printf("Detached encryption of test vector #%u failed\n", (unsigned int) i); + hex = (char *) sodium_malloc((size_t) ciphertext_len * 2 + 1); + sodium_bin2hex(hex, (size_t) ciphertext_len * 2 + 1, ciphertext, ciphertext_len); + printf("Computed: [%s]\n", hex); + sodium_free(hex); + } + + crypto_aead_aegis256_encrypt(ciphertext, &found_ciphertext_len, message, message_len, ad, + ad_len, NULL, nonce, key); + + assert((size_t) found_ciphertext_len == ciphertext_len); + if (memcmp(ciphertext, expected_ciphertext, ciphertext_len) != 0) { + printf("Encryption of test vector #%u failed\n", (unsigned int) i); + hex = (char *) sodium_malloc((size_t) found_ciphertext_len * 2 + 1); + sodium_bin2hex(hex, (size_t) found_ciphertext_len * 2 + 1, ciphertext, ciphertext_len); + printf("Computed: [%s]\n", hex); + sodium_free(hex); + } + + decrypted = (unsigned char *) sodium_malloc(message_len); + found_message_len = 1; + if (crypto_aead_aegis256_decrypt(decrypted, &found_message_len, NULL, ciphertext, + randombytes_uniform((uint32_t) ciphertext_len), ad, ad_len, + nonce, key) != -1) { + printf("Verification of test vector #%u after truncation succeeded\n", + (unsigned int) i); + } + if (found_message_len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + if (crypto_aead_aegis256_decrypt(decrypted, &found_message_len, NULL, guard_page, + randombytes_uniform(crypto_aead_aegis256_ABYTES), ad, + ad_len, nonce, key) != -1) { + printf("Verification of test vector #%u with a truncated tag failed\n", + (unsigned int) i); + } + if (i == 0 && crypto_aead_aegis256_decrypt(NULL, NULL, NULL, ciphertext, ciphertext_len, ad, + ad_len, nonce, key) != 0) { + printf("Verification of test vector #%u's tag failed\n", (unsigned int) i); + } + if (crypto_aead_aegis256_decrypt(decrypted, &found_message_len, NULL, ciphertext, + ciphertext_len, ad, ad_len, nonce, key) != 0) { + printf("Verification of test vector #%u failed\n", (unsigned int) i); + } + assert((size_t) found_message_len == message_len); + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", (unsigned int) i); + } + memset(decrypted, 0xd0, message_len); + if (crypto_aead_aegis256_decrypt_detached(decrypted, NULL, detached_ciphertext, + detached_ciphertext_len, mac, ad, ad_len, nonce, + key) != 0) { + printf("Detached verification of test vector #%u failed\n", (unsigned int) i); + } + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", (unsigned int) i); + } + + sodium_free(message); + sodium_free(ad); + sodium_free(expected_ciphertext); + sodium_free(ciphertext); + sodium_free(decrypted); + sodium_free(detached_ciphertext); + } while (++i < (sizeof tests) / (sizeof tests[0])); + + sodium_free(key); + sodium_free(mac); + sodium_free(nonce); + + return 0; +} + +int +main(void) +{ + tv(); + assert(crypto_aead_aegis256_keybytes() == crypto_aead_aegis256_KEYBYTES); + assert(crypto_aead_aegis256_nsecbytes() == crypto_aead_aegis256_NSECBYTES); + assert(crypto_aead_aegis256_npubbytes() == crypto_aead_aegis256_NPUBBYTES); + assert(crypto_aead_aegis256_abytes() == crypto_aead_aegis256_ABYTES); + assert(crypto_aead_aegis256_messagebytes_max() == crypto_aead_aegis256_MESSAGEBYTES_MAX); + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aegis256.exp b/components/espressif__libsodium/libsodium/test/default/aead_aegis256.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aegis256.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.c b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.c new file mode 100644 index 0000000..9c1e43d --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.c @@ -0,0 +1,3328 @@ + +#define TEST_NAME "aead_aes256gcm" +#include "cmptest.h" + +static struct { + const char *key_hex; + const char *nonce_hex; + const char *message_hex; + const char *ad_hex; + const char *ciphertext_hex; + const char *mac_hex; +} tests[] = { + { + "b52c505a37d78eda5dd34f20c22540ea1b58963cf8e5bf8ffa85f9f2492505b4", + "516c33929df5a3284ff463d7", + "", + "", + "", + "bdc1ac884d332457a1d2664f168c76f0", + }, + { + "5fe0861cdc2690ce69b3658c7f26f8458eec1c9243c5ba0845305d897e96ca0f", + "770ac1a5a3d476d5d96944a1", + "", + "", + "", + "196d691e1047093ca4b3d2ef4baba216", + }, + { + "7620b79b17b21b06d97019aa70e1ca105e1c03d2a0cf8b20b5a0ce5c3903e548", + "60f56eb7a4b38d4f03395511", + "", + "", + "", + "f570c38202d94564bab39f75617bc87a", + }, + { + "7e2db00321189476d144c5f27e787087302a48b5f7786cd91e93641628c2328b", + "ea9d525bf01de7b2234b606a", + "", + "", + "", + "db9df5f14f6c9f2ae81fd421412ddbbb", + }, + { + "a23dfb84b5976b46b1830d93bcf61941cae5e409e4f5551dc684bdcef9876480", + "5aa345908048de10a2bd3d32", + "", + "", + "", + "f28217649230bd7a40a9a4ddabc67c43", + }, + { + "dfe928f86430b78add7bb7696023e6153d76977e56103b180253490affb9431c", + "1dd0785af9f58979a10bd62d", + "", + "", + "", + "a55eb09e9edef58d9f671d72207f8b3c", + }, + { + "34048db81591ee68224956bd6989e1630fcf068d7ff726ae81e5b29f548cfcfb", + "1621d34cff2a5b250c7b76fc", + "", + "", + "", + "4992ec3d57cccfa58fd8916c59b70b11", + }, + { + "a1114f8749c72b8cef62e7503f1ad921d33eeede32b0b5b8e0d6807aa233d0ad", + "a190ed3ff2e238be56f90bd6", + "", + "", + "", + "c8464d95d540fb191156fbbc1608842a", + }, + { + "ddbb99dc3102d31102c0e14b238518605766c5b23d9bea52c7c5a771042c85a0", + "95d15ed75c6a109aac1b1d86", + "", + "", + "", + "813d1da3775cacd78e96d86f036cff96", + }, + { + "1faa506b8f13a2e6660af78d92915adf333658f748f4e48fa20135a29e9abe5f", + "e50f278d3662c99d750f60d3", + "", + "", + "", + "aec7ece66b7344afd6f6cc7419cf6027", + }, + { + "f30b5942faf57d4c13e7a82495aedf1b4e603539b2e1599317cc6e53225a2493", + "336c388e18e6abf92bb739a9", + "", + "", + "", + "ddaf8ef4cb2f8a6d401f3be5ff0baf6a", + }, + { + "daf4d9c12c5d29fc3fa936532c96196e56ae842e47063a4b29bfff2a35ed9280", + "5381f21197e093b96cdac4fa", + "", + "", + "", + "7f1832c7f7cd7812a004b79c3d399473", + }, + { + "6b524754149c81401d29a4b8a6f4a47833372806b2d4083ff17f2db3bfc17bca", + "ac7d3d618ab690555ec24408", + "", + "", + "", + "db07a885e2bd39da74116d06c316a5c9", + }, + { + "cff083303ff40a1f66c4aed1ac7f50628fe7e9311f5d037ebf49f4a4b9f0223f", + "45d46e1baadcfbc8f0e922ff", + "", + "", + "", + "1687c6d459ea481bf88e4b2263227906", + }, + { + "3954f60cddbb39d2d8b058adf545d5b82490c8ae9283afa5278689041d415a3a", + "8fb3d98ef24fba03746ac84f", + "", + "", + "", + "7fb130855dfe7a373313361f33f55237", + }, + { + "78dc4e0aaf52d935c3c01eea57428f00ca1fd475f5da86a49c8dd73d68c8e223", + "d79cf22d504cc793c3fb6c8a", + "", + "b96baa8c1c75a671bfb2d08d06be5f36", + "", + "3e5d486aa2e30b22e040b85723a06e76", + }, + { + "4457ff33683cca6ca493878bdc00373893a9763412eef8cddb54f91318e0da88", + "699d1f29d7b8c55300bb1fd2", + "", + "6749daeea367d0e9809e2dc2f309e6e3", + "", + "d60c74d2517fde4a74e0cd4709ed43a9", + }, + { + "4d01c96ef9d98d4fb4e9b61be5efa772c9788545b3eac39eb1cacb997a5f0792", + "32124a4d9e576aea2589f238", + "", + "d72bad0c38495eda50d55811945ee205", + "", + "6d6397c9e2030f5b8053bfe510f3f2cf", + }, + { + "8378193a4ce64180814bd60591d1054a04dbc4da02afde453799cd6888ee0c6c", + "bd8b4e352c7f69878a475435", + "", + "1c6b343c4d045cbba562bae3e5ff1b18", + "", + "0833967a6a53ba24e75c0372a6a17bda", + }, + { + "22fc82db5b606998ad45099b7978b5b4f9dd4ea6017e57370ac56141caaabd12", + "880d05c5ee599e5f151e302f", + "", + "3e3eb5747e390f7bc80e748233484ffc", + "", + "2e122a478e64463286f8b489dcdd09c8", + }, + { + "fc00960ddd698d35728c5ac607596b51b3f89741d14c25b8badac91976120d99", + "a424a32a237f0df530f05e30", + "", + "cfb7e05e3157f0c90549d5c786506311", + "", + "dcdcb9e4004b852a0da12bdf255b4ddd", + }, + { + "69749943092f5605bf971e185c191c618261b2c7cc1693cda1080ca2fd8d5111", + "bd0d62c02ee682069bd1e128", + "", + "6967dce878f03b643bf5cdba596a7af3", + "", + "378f796ae543e1b29115cc18acd193f4", + }, + { + "fc4875db84819834b1cb43828d2f0ae3473aa380111c2737e82a9ab11fea1f19", + "da6a684d3ff63a2d109decd6", + "", + "91b6fa2ab4de44282ffc86c8cde6e7f5", + "", + "504e81d2e7877e4dad6f31cdeb07bdbd", + }, + { + "9f9fe7d2a26dcf59d684f1c0945b5ffafe0a4746845ed317d35f3ed76c93044d", + "13b59971cd4dd36b19ac7104", + "", + "190a6934f45f89c90067c2f62e04c53b", + "", + "4f636a294bfbf51fc0e131d694d5c222", + }, + { + "ab9155d7d81ba6f33193695cf4566a9b6e97a3e409f57159ae6ca49655cca071", + "26a9f8d665d163ddb92d035d", + "", + "4a203ac26b951a1f673c6605653ec02d", + "", + "437ea77a3879f010691e288d6269a996", + }, + { + "0f1c62dd80b4a6d09ee9d787b1b04327aa361529ffa3407560414ac47b7ef7bc", + "c87613a3b70d2a048f32cb9a", + "", + "8f23d404be2d9e888d219f1b40aa29e8", + "", + "36d8a309acbb8716c9c08c7f5de4911e", + }, + { + "f3e954a38956df890255f01709e457b33f4bfe7ecb36d0ee50f2500471eebcde", + "9799abd3c52110c704b0f36a", + "", + "ddb70173f44157755b6c9b7058f40cb7", + "", + "b323ae3abcb415c7f420876c980f4858", + }, + { + "0625316534fbd82fe8fdea50fa573c462022c42f79e8b21360e5a6dce66dde28", + "da64a674907cd6cf248f5fbb", + "", + "f24d48e04f5a0d987ba7c745b73b0364", + "", + "df360b810f27e794673a8bb2dc0d68b0", + }, + { + "28f045ac7c4fe5d4b01a9dcd5f1ad3efff1c4f170fc8ab8758d97292868d5828", + "5d85de95b0bdc44514143919", + "", + "601d2158f17ab3c7b4dcb6950fbdcdde", + "", + "42c3f527418cf2c3f5d5010ccba8f271", + }, + { + "19310eed5f5f44eb47075c105eb31e36bbfd1310f741b9baa66a81138d357242", + "a1247120138fa4f0e96c992c", + "", + "29d746414333e0f72b4c3f44ec6bfe42", + "", + "d5997e2f956df3fa2c2388e20f30c480", + }, + { + "886cff5f3e6b8d0e1ad0a38fcdb26de97e8acbe79f6bed66959a598fa5047d65", + "3a8efa1cd74bbab5448f9945", + "", + "519fee519d25c7a304d6c6aa1897ee1eb8c59655", + "", + "f6d47505ec96c98a42dc3ae719877b87", + }, + { + "6937a57d35fe6dc3fc420b123bccdce874bd4c18f2e7c01ce2faf33d3944fd9d", + "a87247797b758467b96310f3", + "", + "ead961939a33dd578f8e93db8b28a1c85362905f", + "", + "599de3ecf22cb867f03f7f6d9fd7428a", + }, + { + "e65a331776c9dcdf5eba6c59e05ec079d97473bcdce84daf836be323456263a0", + "ca731f768da01d02eb8e727e", + "", + "d7274586517bf1d8da866f4a47ad0bcf2948a862", + "", + "a8abe7a8085f25130a7206d37a8aaf6d", + }, + { + "77bb1b6ef898683c981b2fc899319ffbb6000edca22566b634db3a3c804059e5", + "354a19283769b3b991b05a4c", + "", + "b5566251a8a8bec212dc08113229ff8590168800", + "", + "e5c2dccf8fc7f296cac95d7071cb8d7d", + }, + { + "2a43308d520a59ed51e47a3a915e1dbf20a91f0886506e481ad3de65d50975b4", + "bcbf99733d8ec90cb23e6ce6", + "", + "eb88288729289d26fe0e757a99ad8eec96106053", + "", + "01b0196933aa49123eab4e1571250383", + }, + { + "2379b35f85102db4e7aecc52b705bc695d4768d412e2d7bebe999236783972ff", + "918998c4801037b1cd102faa", + "", + "b3722309e0f066225e8d1659084ebb07a93b435d", + "", + "dfb18aee99d1f67f5748d4b4843cb649", + }, + { + "98b3cb7537167e6d14a2a8b2310fe94b715c729fdf85216568150b556d0797ba", + "bca5e2e5a6b30f18d263c6b2", + "", + "260d3d72db70d677a4e3e1f3e11431217a2e4713", + "", + "d6b7560f8ac2f0a90bad42a6a07204bc", + }, + { + "30341ae0f199b10a15175d00913d5029526ab7f761c0b936a7dd5f1b1583429d", + "dbe109a8ce5f7b241e99f7af", + "", + "fe4bdee5ca9c4806fa024715fbf66ab845285fa7", + "", + "ae91daed658e26c0d126575147af9899", + }, + { + "8232b6a1d2e367e9ce1ea8d42fcfc83a4bc8bdec465c6ba326e353ad9255f207", + "cd2fb5ff9cf0f39868ad8685", + "", + "02418b3dde54924a9628de06004c0882ae4ec3bb", + "", + "d5308f63708675ced19b2710afd2db49", + }, + { + "f9a132a50a508145ffd8294e68944ea436ce0f9a97e181f5e0d6c5d272311fc1", + "892991b54e94b9d57442ccaf", + "", + "4e0fbd3799da250fa27911b7e68d7623bfe60a53", + "", + "89881d5f786e6d53e0d19c3b4e6887d8", + }, + { + "0e3746e5064633ea9311b2b8427c536af92717de20eeb6260db1333c3d8a8114", + "f84c3a1c94533f7f25cec0ac", + "", + "8c0d41e6135338c8d3e63e2a5fa0a9667ec9a580", + "", + "479ccfe9241de2c474f2edebbb385c09", + }, + { + "b997e9b0746abaaed6e64b63bdf64882526ad92e24a2f5649df055c9ec0f1daa", + "f141d8d71b033755022f0a7d", + "", + "681d6583f527b1a92f66caae9b1d4d028e2e631e", + "", + "b30442a6395ec13246c48b21ffc65509", + }, + { + "87660ec1700d4e9f88a323a49f0b871e6aaf434a2d8448d04d4a22f6561028e0", + "2a07b42593cd24f0a6fe406c", + "", + "1dd239b57185b7e457ced73ebba043057f049edd", + "", + "df7a501049b37a534098cb45cb9c21b7", + }, + { + "ea4792e1f1717b77a00de4d109e627549b165c82af35f33ca7e1a6b8ed62f14f", + "7453cc8b46fe4b93bcc48381", + "", + "46d98970a636e7cd7b76fc362ae88298436f834f", + "", + "518dbacd36be6fba5c12871678a55516", + }, + { + "34892cdd1d48ca166f7ba73182cb97336c2c754ac160a3e37183d6fb5078cec3", + "ed3198c5861b78c71a6a4eec", + "", + "a6fa6d0dd1e0b95b4609951bbbe714de0ae0ccfa", + "", + "c6387795096b348ecf1d1f6caaa3c813", + }, + { + "f4069bb739d07d0cafdcbc609ca01597f985c43db63bbaaa0debbb04d384e49c", + "d25ff30fdc3d464fe173e805", + "", + "3e1449c4837f0892f9d55127c75c4b25d69be334baf5f19394d2d8bb460cbf2120e14736d0f634aa792feca20e455f11", + "", + "805ec2931c2181e5bfb74fa0a975f0cf", + }, + { + "62189dcc4beb97462d6c0927d8a270d39a1b07d72d0ad28840badd4f68cf9c8b", + "859fda5247c888823a4b8032", + "", + "b28d1621ee110f4c9d709fad764bba2dd6d291bc003748faac6d901937120d41c1b7ce67633763e99e05c71363fceca8", + "", + "27330907d0002880bbb4c1a1d23c0be2", + }, + { + "59012d85a1b90aeb0359e6384c9991e7be219319f5b891c92c384ade2f371816", + "3c9cde00c23912cff9689c7c", + "", + "e5daf473a470860b55210a483c0d1a978d8add843c2c097f73a3cda49ac4a614c8e887d94e6692309d2ed97ebe1eaf5d", + "", + "048239e4e5c2c8b33890a7c950cda852", + }, + { + "4be09b408ad68b890f94be5efa7fe9c917362712a3480c57cd3844935f35acb7", + "8f350bd3b8eea173fc7370bc", + "", + "2819d65aec942198ca97d4435efd9dd4d4393b96cf5ba44f09bce4ba135fc8636e8275dcb515414b8befd32f91fc4822", + "", + "a133cb7a7d0471dbac61fb41589a2efe", + }, + { + "13cb965a4d9d1a36efad9f6ca1ba76386a5bb160d80b0917277102357ac7afc8", + "f313adec42a66d13c3958180", + "", + "717b48358898e5ccfea4289049adcc1bb0db3b3ebd1767ac24fb2b7d37dc80ea2316c17f14fb51b5e18cd5bb09afe414", + "", + "81b4ef7a84dc4a0b1fddbefe37f53852", + }, + { + "d27f1bebbbdef0edca393a6261b0338abbc491262eab0737f55246458f6668cc", + "fc062f857886e278f3a567d2", + "", + "2bae92dea64aa99189de8ea4c046745306002e02cfb46a41444ce8bfcc329bd4205963d9ab5357b026a4a34b1a861771", + "", + "5c5a6c4613f1e522596330d45f243fdd", + }, + { + "7b4d19cd3569f74c7b5df61ab78379ee6bfa15105d21b10bf6096699539006d0", + "fbed5695c4a739eded97b1e3", + "", + "c6f2e5d663bfaf668d014550ef2e66bf89978799a785f1f2c79a2cb3eb3f2fd4076207d5f7e1c284b4af5cffc4e46198", + "", + "7101b434fb90c7f95b9b7a0deeeb5c81", + }, + { + "d3431488d8f048590bd76ec66e71421ef09f655d7cf8043bf32f75b4b2e7efcc", + "cc766e98b40a81519fa46392", + "", + "93320179fdb40cbc1ccf00b872a3b4a5f6c70b56e43a84fcac5eb454a0a19a747d452042611bf3bbaafd925e806ffe8e", + "", + "3afcc336ce8b7191eab04ad679163c2a", + }, + { + "a440948c0378561c3956813c031f81573208c7ffa815114ef2eee1eb642e74c6", + "c1f4ffe54b8680832eed8819", + "", + "253438f132b18e8483074561898c5652b43a82cc941e8b4ae37e792a8ed6ec5ce2bcec9f1ffcf4216e46696307bb774a", + "", + "129445f0a3c979a112a3afb10a24e245", + }, + { + "798706b651033d9e9bf2ce064fb12be7df7308cf45df44776588cd391c49ff85", + "5a43368a39e7ffb775edfaf4", + "", + "926b74fe6381ebd35757e42e8e557601f2287bfc133a13fd86d61c01aa84f39713bf99a8dc07b812f0274c9d3280a138", + "", + "89fe481a3d95c03a0a9d4ee3e3f0ed4a", + }, + { + "c3aa2a39a9fef4a466618d1288bb62f8da7b1cb760ccc8f1be3e99e076f08eff", + "9965ba5e23d9453d7267ca5b", + "", + "93efb6a2affc304cb25dfd49aa3e3ccdb25ceac3d3cea90dd99e38976978217ad5f2b990d10b91725c7fd2035ecc6a30", + "", + "00a94c18a4572dcf4f9e2226a03d4c07", + }, + { + "14e06858008f7e77186a2b3a7928a0c7fcee22136bc36f53553f20fa5c37edcd", + "32ebe0dc9ada849b5eda7b48", + "", + "6c0152abfa485b8cd67c154a5f0411f22121379774d745f40ee577b028fd0e188297581561ae972223d75a24b488aed7", + "", + "2625b0ba6ee02b58bc529e43e2eb471b", + }, + { + "fbb56b11c51a093ce169a6990399c4d741f62b3cc61f9e8a609a1b6ae8e7e965", + "9c5a953247e91aceceb9defb", + "", + "46cb5c4f617916a9b1b2e03272cb0590ce716498533047d73c81e4cbe9278a3686116f5632753ea2df52efb3551aea2d", + "", + "4f3b82e6be4f08756071f2c46c31fedf", + }, + { + "b303bf02f6a8dbb5bc4baccab0800db5ee06de648e2fae299b95f135c9b107cc", + "906495b67ef4ce00b44422fa", + "", + "872c6c370926535c3fa1baec031e31e7c6c82808c8a060742dbef114961c314f1986b2131a9d91f30f53067ec012c6b7", + "", + "64dde37169082d181a69107f60c5c6bb", + }, + { + "29f5f8075903063cb6d7050669b1f74e08a3f79ef566292dfdef1c06a408e1ab", + "35f25c48b4b5355e78b9fb3a", + "", + "107e2e23159fc5c0748ca7a077e5cc053fa5c682ff5269d350ee817f8b5de4d3972041d107b1e2f2e54ca93b72cd0408", + "", + "fee5a9baebb5be0165deaa867e967a9e", + }, + { + "03ccb7dbc7b8425465c2c3fc39ed0593929ffd02a45ff583bd89b79c6f646fe9", + "fd119985533bd5520b301d12", + "", + "98e68c10bf4b5ae62d434928fc6405147c6301417303ef3a703dcfd2c0c339a4d0a89bd29fe61fecf1066ab06d7a5c31a48ffbfed22f749b17e9bd0dc1c6f8fbd6fd4587184db964d5456132106d782338c3f117ec05229b0899", + "", + "cf54e7141349b66f248154427810c87a", + }, + { + "57e112cd45f2c57ddb819ea651c206763163ef016ceead5c4eae40f2bbe0e4b4", + "188022c2125d2b1fcf9e4769", + "", + "09c8f445ce5b71465695f838c4bb2b00624a1c9185a3d552546d9d2ee4870007aaf3007008f8ae9affb7588b88d09a90e58b457f88f1e3752e3fb949ce378670b67a95f8cf7f5c7ceb650efd735dbc652cae06e546a5dbd861bd", + "", + "9efcddfa0be21582a05749f4050d29fe", + }, + { + "a4ddf3cab7453aaefad616fd65d63d13005e9459c17d3173cd6ed7f2a86c921f", + "06177b24c58f3be4f3dd4920", + "", + "f95b046d80485e411c56b834209d3abd5a8a9ddf72b1b916679adfdde893044315a5f4967fd0405ec297aa332f676ff0fa5bd795eb609b2e4f088db1cdf37ccff0735a5e53c4c12173a0026aea42388a7d7153a8830b8a901cf9", + "", + "9d1bd8ecb3276906138d0b03fcb8c1bb", + }, + { + "24a92b24e85903cd4aaabfe07c310df5a4f8f459e03a63cbd1b47855b09c0be8", + "22e756dc898d4cf122080612", + "", + "2e01b2536dbe376be144296f5c38fb099e008f962b9f0e896334b6408393bff1020a0e442477abfdb1727213b6ccc577f5e16cb057c8945a07e307264b65979aed96b5995f40250ffbaaa1a1f0eccf394015f6290f5e64dfe5ca", + "", + "0d7f1aed4708a03b0c80b2a18785c96d", + }, + { + "15276fc64438578e0ec53366b90a0e23d93910fec10dc3003d9b3f3fa72db702", + "c5e931946d5caebc227656d2", + "", + "3f967c83ba02e77c14e9d41185eb87f172250e93edb0f82b6742c124298ab69418358eddefa39fedc3cade9d80f036d864a59ead37c87727c56c701a8cd9634469ff31c704f5ee39354157e6558467b92824da36b1c071bedfe9", + "", + "a0ffa19adcf31d061cd0dd46d24015ef", + }, + { + "ec09804a048bb854c71618b5a3a1c590910fc8a68455139b719486d2280ea59a", + "d0b1247e7121a9276ac18ca3", + "", + "66b1d39d414596308e866b04476e053b71acd1cd07ce80939577ebbeace0430f7e4c0c185fe1d97ac7569950c83db40bbed0f1d173e1aa0dc28b4773705032d97551f7fcef7f55e4b69f88df650032dfc5232c156641104b5397", + "", + "8440e6d864ab778f9be478f203162d86", + }, + { + "4adf86bfa547725e4b80365a5a327c107040facfff007dc35102066bd6a995c4", + "b1018cc331911255a55a0795", + "", + "053ca4428c990b4456d3c1895d5d52deff675896de9faa53d8cf241255f4a31dc3399f15d83be380256616e5af043abfb37552655adf4f2e68dda24bc3736951134f359d9c0e288bb798b6c3ea46239231a3cb280066db9862e7", + "", + "c7424f38084930bfc5edc1fcf1e7608d", + }, + { + "3c92e0d1e39a3c766573c4646c768c402ccff48a56682a93433512abf0456e00", + "d57f319e590191841d2b98bd", + "", + "840d9394aa240e52ba152151c12acd1cd44881e8549dc832b71a45da7efcc74fb7e844d9fec25e5d497b8fb8f47f328c8d99045a19e366e6ce5e19dc26f67a81a94fa6c97c314d886e7b56eff144c09f6fa519db6308bc73422e", + "", + "cb4ef72dbda4914d7434f9686f823e2f", + }, + { + "b66ba39733888a9e0a2e30452844161dc33cb383c02ce16c4efad5452509b5b5", + "937cb665e37059b2e40359f2", + "", + "dbcd9694a8834860034e8ede3a5bd419fcf91c005ad99f488aa623f581622093f9d41e6a68e20fd202f302bcfc4417ca89090bfcd4d5224e8ff4eb5bbae4ecb27baa239f59c2f99cd47c0a269c497906b41a8f320a3dd2dc2de2", + "", + "bdc8249302d9d666cf7168317c118743", + }, + { + "2f9fcd1043455695638c991a1b1d35ad57c18ef0727322747b7991abc3d787f3", + "d06cf548f62869f4bed7a318", + "", + "432023c12cf1f614e1005112a17dbe6c5d54022a95cf6335a5bc55004c75f09a5699739ecf928e1c78d03dad5096a17a084afe1cc22041bbdfb5985bd08b0dcc59d2b08cd86b7aad597c4cd7b4ba6d6a7370b83995a6511a1f9e", + "", + "322eb84fb6884f10cfb766c2e3ec779e", + }, + { + "21c5839a63e1230c06b086341c96ab74585e69bced94332caeb1fa77d510c24f", + "5ab6e5ed6ee733be7250858c", + "", + "c92f08e30f67d42516133c48e97b65cc9e124365e110aba5e7b2cbe83debcc99edf4eb0007af052bda22d85900271b1897af4fd9ace6a2d09d984ac3de79d05de0b105a81b12542b2c48e27d409fd6992dd062d6055d6fc66842", + "", + "53b0e450309d146459f2a1e46c9d9e23", + }, + { + "25a144f0fdba184125d81a87e7ed82fad33c701a094a67a81fe4692dc69afa31", + "8bf575c5c2b45b4efc6746e4", + "", + "2a367cb0d3b7c5b8320b3cf95e82b6ba0bba1d09a2055885dedd9ef5641623682212103238b8f775cce42ddfd4f66382f2c3a5e8d6dff9163ced83580a75705574026b55db90f75f8abb3014c9a707021dedc075da38bebbf0a0", + "", + "0e2ce9cac8dfcedb0572ec6cab621efd", + }, + { + "42bc841b3b03a807cd366a35ecec8a6aebef7c4cba0ec8cb8da0da41df8ccef1", + "1bd46f85df5f4b3a126ee315", + "", + "ede3dcddbdc7d8e5d034c01661332ec349cb4e7a9fbaaf7abe2c647587db86cd427ce66908e070bc49ef838747e06b45ac486dfbea6f8698b4625e21e69db8327ec05cfd74accbe67ab644948cdb554af179a1e264e08fe16641", + "", + "633ab6aaf5b32b53a794f6be6262fc5f", + }, + { + "c25b8500be73210596fc4a9fb4d84d1a3379a91e3f0a6cc4177d996046627679", + "b56c48c0c4cd318b20437002", + "", + "bcd14dd043fdc8c327957e1c1428698543ec8602521a7c74788d296d37d4828f10f90656883d2531c702ebda2dc0a68dab00154577454455fad986ff8e0973098dbf370ff703ed98222b945726ed9be7909210ddbc672e99fdd9", + "", + "8171d4ff60fe7ef6de0288326aa73223", + }, + { + "dd95259bc8eefa3e493cb1a6ba1d8ee2b341d5230d50363094a2cc3433b3d9b9", + "a1a6ced084f4f13990750a9e", + "", + "d46db90e13684b26149cb3b7f776e228a0538fa1892c418aaad07aa08d3076f4a52bee8f130ff560db2b8d1009e9260fa6233fc22733e050c9e4f7cc699062765e261dffff1159e9060b26c8065dfab04055b58c82c340d987c9", + "", + "9e120b01899fe2cb3e3a0b0c05045940", + }, + { + "31bdadd96698c204aa9ce1448ea94ae1fb4a9a0b3c9d773b51bb1822666b8f22", + "0d18e06c7c725ac9e362e1ce", + "2db5168e932556f8089a0622981d017d", + "", + "fa4362189661d163fcd6a56d8bf0405a", + "d636ac1bbedd5cc3ee727dc2ab4a9489", + }, + { + "460fc864972261c2560e1eb88761ff1c992b982497bd2ac36c04071cbb8e5d99", + "8a4a16b9e210eb68bcb6f58d", + "99e4e926ffe927f691893fb79a96b067", + "", + "133fc15751621b5f325c7ff71ce08324", + "ec4e87e0cf74a13618d0b68636ba9fa7", + }, + { + "f78a2ba3c5bd164de134a030ca09e99463ea7e967b92c4b0a0870796480297e5", + "2bb92fcb726c278a2fa35a88", + "f562509ed139a6bbe7ab545ac616250c", + "", + "e2f787996e37d3b47294bf7ebba5ee25", + "00f613eee9bdad6c9ee7765db1cb45c0", + }, + { + "48e6af212da1386500454c94a201640c2151b28079240e40d72d2a5fd7d54234", + "ef0ff062220eb817dc2ece94", + "c7afeecec1408ad155b177c2dc7138b0", + "", + "9432a620e6a22307e06a321d66846fd4", + "e3ea499192f2cd8d3ab3edfc55897415", + }, + { + "79cd8d750fc8ea62a2714edcd9b32867c7c4da906c56e23a644552f5b812e75a", + "9bbfdb81015d2b57dead2de5", + "f980ad8c55ebd31ee6f98f44e92bff55", + "", + "41a34d1e759c859e91b8cf5d3ded1970", + "68cd98406d5b322571e750c30aa49834", + }, + { + "130ae450c18efb851057aaa79575a0a090194be8b2c95469a0e8e380a8f48f42", + "b269115396f81b39e0c38f47", + "036cf36280dee8355c82abc4c1fdb778", + "", + "09f7568fd8181652e556f0dda5a49ed5", + "d10b61947cae275b7034f5259ba6fc28", + }, + { + "9c7121289aefc67090cabed53ad11658be72a5372761b9d735e81d2bfc0e3267", + "ade1702d2051b8dd203b5419", + "b95bcaa2b31403d76859a4c301c50b56", + "", + "628285e6489090dde1b9a60674785003", + "9f516af3f3b93d610edbc5ba6e2d115f", + }, + { + "0400b42897011fc20fd2280a52ef905d6ebf1b055b48c97067bd786d678ec4ea", + "0abfb0a41496b453358409d9", + "20c8230191e35f4e9b269d59cf5521f6", + "", + "dd8c38087daffbbb3ebb57ebf5ee5f78", + "bfb07aa5049ee350ec6fb1397f37087b", + }, + { + "56690798978c154ff250ba78e463765f2f0ce69709a4551bd8cb3addeda087b6", + "cf37c286c18ad4ea3d0ba6a0", + "2d328124a8d58d56d0775eed93de1a88", + "", + "3b0a0267f6ecde3a78b30903ebd4ca6e", + "1fd2006409fc636379f3d4067eca0988", + }, + { + "8a02a33bdf87e7845d7a8ae3c8727e704f4fd08c1f2083282d8cb3a5d3cedee9", + "599f5896851c968ed808323b", + "4ade8b32d56723fb8f65ce40825e27c9", + "", + "cb9133796b9075657840421a46022b63", + "a79e453c6fad8a5a4c2a8e87821c7f88", + }, + { + "23aaa78a5915b14f00cf285f38ee275a2db97cb4ab14d1aac8b9a73ff1e66467", + "4a675ec9be1aab9632dd9f59", + "56659c06a00a2e8ed1ac60572eee3ef7", + "", + "e6c01723bfbfa398d9c9aac8c683bb12", + "4a2f78a9975d4a1b5f503a4a2cb71553", + }, + { + "fe647f72e95c469027f4d7778429a2e8e90d090268d4fa7df44f65c0af84190a", + "4f40ae2a83a9b480e4686c90", + "31fd6cce3f0d2b0d18e0af01c4b5609e", + "", + "54c769fd542f0d3022f1335a7c410b61", + "106cb7cbcd967da6cad646039c753474", + }, + { + "fce205515f0551b1797128a2132d8e002ea5ab1beb99c5e7e8329398cf478e10", + "20209a0d4a3b9bfddeef39a0", + "7d663e31a2f6ffef17e536684dae2e87", + "", + "6529712030fb659dc11ab719f6a4c402", + "58699464d062aba505508c576c4e07dd", + }, + { + "cd33003ff18f6f3369dd9a35381261ba660ce0a769864475152e677066540337", + "20bffe9064ce76d275204138", + "acaf53d4dd2fe12cd44450b0d9adcc92", + "", + "a669fda0444b180165f90815dc992b33", + "6e31f5a56c4790cedcc2368c51d0639b", + }, + { + "381873b5f9579d8241f0c61f0d9e327bb9f678691714aaa48ea7d92678d43fe7", + "3fc8bec23603158e012d65e5", + "7b622e9b408fe91f6fa800ecef838d36", + "", + "8ca4de5b4e2ab22431a009f3ddd01bae", + "b3a7f80e3edf322622731550164cd747", + }, + { + "92e11dcdaa866f5ce790fd24501f92509aacf4cb8b1339d50c9c1240935dd08b", + "ac93a1a6145299bde902f21a", + "2d71bcfa914e4ac045b2aa60955fad24", + "1e0889016f67601c8ebea4943bc23ad6", + "8995ae2e6df3dbf96fac7b7137bae67f", + "eca5aa77d51d4a0a14d9c51e1da474ab", + }, + { + "7da3bccaffb3464178ca7c722379836db50ce0bfb47640b9572163865332e486", + "c04fd2e701c3dc62b68738b3", + "fd671cab1ee21f0df6bb610bf94f0e69", + "fec0311013202e4ffdc4204926ae0ddf", + "6be61b17b7f7d494a7cdf270562f37ba", + "5e702a38323fe1160b780d17adad3e96", + }, + { + "a359b9584beec189527f8842dda6b6d4c6a5db2f889635715fa3bcd7967c0a71", + "8616c4cde11b34a944caba32", + "33a46b7539d64c6e1bdb91ba221e3007", + "e1796fca20cb3d3ab0ade69b2a18891e", + "b0d316e95f3f3390ba10d0274965c62b", + "aeaedcf8a012cc32ef25a62790e9334c", + }, + { + "8c83238e7b3b58278200b54940d779d0a0750673aab0bf2f5808dd15dc1a8c49", + "70f8f4ebe408f61a35077956", + "6e57f8572dd5b2247410f0d4c7424186", + "e1cbf83924f1b8d1014b97db56c25a15", + "4a11acb9611251df01f79f16f8201ffb", + "9732be4ad0569586753d90fabb06f62c", + }, + { + "fe21919bb320af8744c9e862b5b7cf8b81ad3ad1fb0e7d7d710a688d3eed154b", + "38bc3917aa1925f40850c082", + "aea53b1ea79a71c3a4b83c92a0c979f1", + "f24102fa7e6b819bb3ff47f90844db9c", + "2fb8b697bf8f7a2eea25fe702a3ae0a9", + "5be77e827737ad7c4f79e0e343fe010d", + }, + { + "499e8a3f39ac4abc62dd4e1a6133042e74785972b6b501bfaffefc8bb29fd312", + "5c728dbbef9dcc0ff483e891", + "b44014c7fc6b3f15d126a881fbe2bd2b", + "82300dab592f840ae991efa3623a6203", + "578fe5e1aef7619f392c027c838a239e", + "49fdc724f05eb56ea9e3fd14b61ad567", + }, + { + "2775d3e7a8fc665bb9a59edc22eb136add194824ed8f2adb449177404c739716", + "73f16c054e166696df679a2e", + "c9f3bce40310b6c0a3fd62742e4f3617", + "23199a1c9b7244913952ca4f7e7444f4", + "72c85c10756266d00a9a4340b2cb3137", + "5881e4565b42394e62d5daf0d1ebc593", + }, + { + "425a341c67e6d873870f54e2cc5a2984c734e81729c0dbaaeee050309f1ce674", + "0c09b7b4e9e097317b791433", + "76dda644b3faca509b37def0319f30cc", + "4300a721547846761e4bf8df2b6ec1d6", + "1dd80daa0fc9e47e43897c64a6663f5e", + "5d69b34d8c3b12f783faaea7e93685db", + }, + { + "dd5c48988a6e9f9f60be801ba5c090f224a1b53d6601ec5858eab7b7784a8d5e", + "43562d48cd4110a66d9ca64e", + "2cda2761fd0be2b03f9714fce8d0e303", + "55e568309fc6cb0fb0e0e7d2511d4116", + "f2cfb6f5446e7aa172adfcd66b92a98d", + "e099c64d2966e780ce7d2eaae97f47d8", + }, + { + "2bdad9c3e5de6e4e101b7f16e727c690db95eacf4b0ccbdec7aab6fb9fc80486", + "a5cf3967d244074d2153c576", + "84c867ec36cc6fe3487f5192fdfd390b", + "6bdae72b5ed0e4d1f10064ebd02cf85c", + "53c8fa437c1b5fa91abbd6508b3878ce", + "7859593d127324be8b9cf1d43ead4d82", + }, + { + "01e92afdb5d956be12d38b09252966c5728d26f3c72e54bb62bbc55ae590e716", + "886e55364eeb90e87ac79bbe", + "6c6570385f3d6d937e54a3a2e95bc9eb", + "c76aabb7f44b942a81feb50249d2131a", + "423b749a507f437b431114962180d352", + "54d859320a49281368297da7d4e37326", + }, + { + "46921319217598cb64256fe49abca1f18a9d1dbca360f8630afb5c6137cb42b5", + "290827cf981415760ec3b37a", + "480d32b191c2e201aed03680f93ea2da", + "535ee80b12f581baaf8027e6e3900e31", + "89ace4f73583fb1ac260dea99b54055e", + "7b8b8358363c175a66e6fb48d1bc2222", + }, + { + "e18cd9b01b59bc0de1502efb74c3642997fe7dfb8d80c8a73caffe7726807d33", + "bd087b384c40841b3839ba02", + "62f7f3a12b8c5f6747fcfe192d850b19", + "fe69f837961b1d83f27fbf68e6791a1c", + "bacfccf6397424e96caf761e71dd3e3a", + "9c9a5b65420f83e766c7c051680e8e58", + }, + { + "68ee463b3153d9a042e5e3685def6f90f7659a203441de337fb94831cbeae9b2", + "9c4a9254c485236cf838de7e", + "73731054514f3fb0102c7a1df809f212", + "d55820e7acbb27d23c7df32938cf7d42", + "13b7823cac37f40eb811e3c966d16a67", + "76288c33a66ff6451e2cec6c4ba4935e", + }, + { + "64bd594daf279e3172f9aa713b35b7fce8f43083792bc7d1f10919131f400a7b", + "339a2c40e9d9507c34228649", + "2b794cb4c98450463a3e225ab33f3f30", + "2b9544807b362ebfd88146e2b02c9270", + "434d703b8d1069ad8036288b7c2d1ae6", + "7d31e397c0c943cbb16cfb9539a6a17d", + }, + { + "83688deb4af8007f9b713b47cfa6c73e35ea7a3aa4ecdb414dded03bf7a0fd3a", + "0b459724904e010a46901cf3", + "33d893a2114ce06fc15d55e454cf90c3", + "794a14ccd178c8ebfd1379dc704c5e208f9d8424", + "cc66bee423e3fcd4c0865715e9586696", + "0fb291bd3dba94a1dfd8b286cfb97ac5", + }, + { + "013f549af9ecc2ee0259d5fc2311059cb6f10f6cd6ced3b543babe7438a88251", + "e45e759a3bfe4b652dc66d5b", + "79490d4d233ba594ece1142e310a9857", + "b5fe530a5bafce7ae79b3c15471fa68334ab378e", + "619443034e4437b893a45a4c89fad851", + "6da8a991b690ff6a442087a356f8e9e3", + }, + { + "4b2815c531d2fceab303ec8bca739a97abca9373b7d415ad9d6c6fa9782518cc", + "47d647a72b3b5fe19f5d80f7", + "d3f6a645779e07517bd0688872e0a49b", + "20fd79bd0ee538f42b7264a5d098af9a30959bf5", + "00be3b295899c455110a0ae833140c4d", + "d054e3997c0085e87055b79829ec3629", + }, + { + "2503b909a569f618f7eb186e4c4b81dbfe974c553e2a16a29aea6846293e1a51", + "e4fa3dc131a910c75f61a38b", + "188d542f8a815695c48c3a882158958c", + "f80edf9b51f8fd66f57ce9af5967ec028245eb6e", + "4d39b5494ca12b770099a8eb0c178aca", + "adda54ad0c7f848c1c72758406b49355", + }, + { + "6c8f34f14569f625aad7b232f59fa8b187ab24fadcdbaf7d8eb45da8f914e673", + "6e2f886dd97be0e4c5bd488b", + "ac8aa71cfbf1e968ef5515531576e314", + "772ec23e49dbe1d923b1018fc2bef4b579e46241", + "cb0ce70345e950b429e710c47d9c8d9b", + "9dceea98c438b1d9c154e5386180966d", + }, + { + "182fe560614e1c6adfd1566ac44856df723dcb7e171a7c5796b6d3f83ef3d233", + "8484abca6877a8622bfd2e3c", + "92ca46b40f2c75755a28943a68a8d81c", + "2618c0f7fe97772a0c97638cca238a967987c5e5", + "ed1941b330f4275d05899f8677d73637", + "3fe93f1f5ffa4844963de1dc964d1996", + }, + { + "65a290b2fabe7cd5fb2f6d627e9f1f79c2c714bffb4fb86e9df3e5eab28320ed", + "5a5ed4d5592a189f0737cf47", + "662dda0f9c8f92bc906e90288100501c", + "ad1c7f7a7fb7f8fef4819c1dd1a67e007c99a87b", + "8eb7cb5f0418da43f7e051c588776186", + "2b15399ee23690bbf5252fb26a01ae34", + }, + { + "7b720d31cd62966dd4d002c9ea41bcfc419e6d285dfab0023ba21b34e754cb2f", + "e1fb1f9229b451b72f89c333", + "1aa2948ed804f24e5d783b1bc959e086", + "7fdae42d0cf6a13873d3092c41dd3a19a9ea90f9", + "8631d3c6b6647866b868421b6a3a548a", + "a31febbe169d8d6f391a5e60ef6243a0", + }, + { + "a2aec8f3438ab4d6d9ae566a2cf9101ad3a3cc20f83674c2e208e8ca5abac2bb", + "815c020686c52ae5ddc81680", + "a5ccf8b4eac22f0e1aac10b8d62cdc69", + "86120ce3aa81445a86d971fdb7b3b33c07b25bd6", + "364c9ade7097e75f99187e5571ec2e52", + "64c322ae7a8dbf3d2407b12601e50942", + }, + { + "e5104cfcbfa30e56915d9cf79efcf064a1d4ce1919b8c20de47eab0c106d67c1", + "d1a5ec793597745c7a31b605", + "7b6b303381441f3fdf9a0cf79ee2e9e0", + "9931678430ff3aa765b871b703dfcc43fb1b8594", + "425d48a76001bed9da270636be1f770b", + "76ff43a157a6748250a3fdee7446ed22", + }, + { + "f461d1b75a72d942aa096384dc20cf8514a9ad9a9720660add3f318284ca3014", + "d0495f25874e5714a1149e94", + "d9e4b967fdca8c8bae838a5da95d7cce", + "1133f372e3db22456e7ea92f29dff7f1d92864d3", + "1df711e6fbcba22b0564c6e36051a3f7", + "f0563b7494d5159289b644afc4e8e397", + }, + { + "a9a98ef5076ceb45c4b60a93aeba102507f977bc9b70ded1ad7d422108cdaa65", + "54a1bc67e3a8a3e44deec232", + "ede93dd1eaa7c9859a0f709f86a48776", + "10cfef05e2cd1edd30db5c028bd936a03df03bdc", + "3d3b61f553ab59a9f093cac45afa5ac0", + "7814cfc873b3398d997d8bb38ead58ef", + }, + { + "d9e17c9882600dd4d2edbeae9a224d8588ff5aa210bd902d1080a6911010c5c5", + "817f3501e977a45a9e110fd4", + "d74d968ea80121aea0d7a2a45cd5388c", + "d216284811321b7591528f0af5a3f2768429e4e8", + "1587c8b00e2c197f32a21019feeee99a", + "63ea43c03d00f8ae5724589cb6f64480", + }, + { + "ec251b45cb70259846db530aff11b63be00a951827020e9d746659bef2b1fd6f", + "e41652e57b624abd84fe173a", + "75023f51ba81b680b44ea352c43f700c", + "92dd2b00b9dc6c613011e5dee477e10a6e52389c", + "29274599a95d63f054ae0c9b9df3e68d", + "eb19983b9f90a0e9f556213d7c4df0f9", + }, + { + "61f71fdbe29f56bb0fdf8a9da80cef695c969a2776a88e62cb3d39fca47b18e3", + "77f1d75ab0e3a0ed9bf2b981", + "110a5c09703482ef1343396d0c3852d3", + "c882691811d3de6c927d1c9f2a0f15f782d55c21", + "7e9daa4983283facd29a93037eb70bb0", + "244930965913ebe0fa7a0eb547b159fb", + }, + { + "e4fed339c7b0cd267305d11ab0d5c3273632e8872d35bdc367a1363438239a35", + "0365882cf75432cfd23cbd42", + "fff39a087de39a03919fbd2f2fa5f513", + "8a97d2af5d41160ac2ff7dd8ba098e7aa4d618f0f455957d6a6d0801796747ba57c32dfbaaaf15176528fe3a0e4550c9", + "8d9e68f03f7e5f4a0ffaa7650d026d08", + "3554542c478c0635285a61d1b51f6afa", + }, + { + "bd93c7bfc850b33c86484e04859ed374beaee9d613bdca6f072d1d182aeebd04", + "6414c7749effb9af7e5c4762", + "b6de1699931f2252efc98d491d22ee12", + "76f43d5664c7ac1b4de43f2e2c4bc71f6918e0762f40e5dd5597ef4ff215855a4fd26d3ea6ccbd4e10789948fa692433", + "a6c7e52f2018b823506e48064ffe6ee4", + "175e653c9036f66835f10cf1c82d1741", + }, + { + "df0125a826c7fe49243d89cbdd7562aafd2103fa2783cf901976b5f5d481cdcb", + "f63c1461b2964929d035d9bf", + "cc27ff68f981e4d6fb1918427c3d6b9e", + "0bf602ec47593e44ac1b88244455fa04359e338057b0a0ba057cb506d546d4d6d8538640fe7dd3d5864bd33b5a33d768", + "b8fa150af93078574ac7c4615f88647d", + "4584553ac3ccdf8b0efae517652d3a18", + }, + { + "d33ea320cec0e43dfc1e3d1d8ccca2dd7e30ad3ea18ad7141cc83645d18771ae", + "540009f321f41d00202e473b", + "e56cdd522d526d8d0cd18131a19ee4fd", + "a41162e1fe875a81fbb5667f73c5d4cbbb9c3956002f7867047edec15bdcac1206e519ee9c238c371a38a485c710da60", + "8b624b6f5483f42f36c85dc7cf3e9609", + "2651e978d9eaa6c5f4db52391ac9bc7c", + }, + { + "7f35f5979b23321e6449f0f5ef99f2e7b796d52d560cc77aabfb621dbf3a6530", + "cf0f6f3eed4cf374da714c77", + "4e9f53affdb5b1e91bf423d29c54401a", + "a676d35d93e12bfe0603f6aef2c3dd892a9b1ad22d476c3509d313256d4e98e4dda4e46e93b54cf59c2b90608a8fb3ad", + "1714d55ef83df2927ee95ff22f1d90e6", + "4962a91d1071dd2c05934968d21eb43c", + }, + { + "06ecc134993506cf539b1e797a519fe1d9f34321fe6a0b05f1936285c35c93a4", + "f2190861d1140bd080d79906", + "519c1fc45a628ec16c515427796711f7", + "a04f2723c2521181437ad63f7910481d5de98f3e2561cec3a177bdbcb5048619738852e0fb212a3caa741a353e4e89a8", + "b36c793224ce3bb1b54144398fbdedb6", + "0030e6e84f6f8eb474ce8e071c2953dd", + }, + { + "734fa8b423b91e0ecccc7f554480eef57a82423a9f92b28d464320fba405a71c", + "a6b5c78bb5791f4d121390ce", + "b496a99b39e0e94bb5829cfc3d7b3856", + "9ce25ff9b55dfa04e4271999a47cba8af8e83a390b090d1c4306b40ce8882624b662ff5867896396789295c19ec80d07", + "904081a40484bb6454fc52cb6674e737", + "6a0787cf3921a71c35b5054954527823", + }, + { + "d106280b84f25b294f71c261f66a65c2efd9680e19f50316d237975052796392", + "cfc6aa2aeba468c66bf4553f", + "57e937f8b9b814e965bb569fcf63aaac", + "012a43f9903a3808bf34fd6f77d831d9154205ded589964cae60d2e49c856b7a4100a55c8cd02f5e476f62e988dcbd2b", + "c835f5d4fd30fe9b2edb4aff24803c60", + "e88426bb4619807f18a9cc9839754777", + }, + { + "81eb63bc47aba313d964a5335cfb039051520b3112fa54cab368e5243947d450", + "18cc5dd875753ff51cc6f441", + "45f51399dff6a0dcd43f35256616d6be", + "24f766c56777312494245a4e6c7dbebbae4026e0907eadbc20a488982678161de7b924473c0a81ee59a0fa6905952b33", + "a2fc7b0784ec4233142f9cde12ab9e98", + "4e60b8561cacfe7133740cd2bddefaa0", + }, + { + "0a997863786a4e97332224ed484ffca508b166f0603687200d99fd6accd45d83", + "7a9acabd4b8d3e1036293a07", + "9d2c9ff39f57c96ecce287c68c5cd6eb", + "525fc5ac7fe93c183a3ef7c75e3fbd52dce956855aff385966f4d79966bdb3ec2019c466584d21bfee74511a77d82adb", + "238441c65b2a1c41b302da0f52d40770", + "c351d93ab9491cdfb7fa15e7a251de22", + }, + { + "acbfeb7c595b704960c1097e93d3906534c23444c8acc1f8e969ce6c3fe8a46b", + "28922ecac3013806c11660e6", + "e0d8c52d60c6ed6980abd4348f3f96f1", + "b1fe886107013ebdeb19315a9d096ed81803951a508f56f68202a7df00bebae0742dd1128c200952a049ef0cd7cfe4e6", + "56fe1cf2c1d193b9b33badbf846f52cc", + "1cb4c14f50a54a64813ffc810f31f9f8", + }, + { + "f6e768475c33269596da1f5a5a38547a885006bebb9134e21274d8456e9f5529", + "3579e5ac51d1f1b82ea352ca", + "0aa481f856f8b96547672e5ae5370f9e", + "6929b6053ba148304366164f79b1b9f592c9cb9bce65094cec5cb8b0fc63e20d86b17c8bf5a7b089a63c5eac1824ee93", + "b2f4edf5f0b0bfc590fead6239b0f2fb", + "2540ceb5ef247c95d63df84c46468533", + }, + { + "2ca76112300bed65b87ba6ec887cd514f4633c1c96565fec8e3e69ae2ba88401", + "964864510a8c957dcfb97d2f", + "0aff24b4c5aa45b81ce08ec2439be446", + "5aebdfd153a18763f36ecc9e8e9a01cb7b3f21e435b35b0da937c67e87c9ec058d08060a95e1eda0a5ab6546cca45094", + "03da1f5a1403dbdd9f75a26113608ec0", + "a1c215d0c552a6061aa2b60afc3667a6", + }, + { + "c0ff018b6c337dde685c8279cf6de59d7ce4b288032b819e074b671e72abbc91", + "f12e6b1e85f87ef4c9ccbb7b", + "f7512bbfa2d40d14be71b70f70701c99", + "0577e8d28c0e9e5cde3c8b2a1a2aa8e2fc3ec8e96768405fcfbd623be7fc4e2e395c59b5b3a8ea117ef211320bc1f857", + "0187b4c2d52486b4417e5a013d553e5e", + "dba451e7339be8ebed3ea9683d1b4552", + }, + { + "d90c6948ac2353867e943069196a2c4d0c4d51e34e2505661b1d76f3e5f17ac5", + "07e5623f474e2f0fe9f4c7d2", + "8a9fb1b384c0d1728099a4f7cb002f07", + "0de97574ae1bc6d3ef06c6ce03513ca47dff4728803e0aacc50564ee32b775fd535f5c8c30186550d99bff6f384af2dd", + "4234a3a9fb199c3b293357983e8ac30b", + "d51e6f071dbab126f5fc9732967108ef", + }, + { + "80d755e24d129e68a5259ec2cf618e39317074a83c8961d3768ceb2ed8d5c3d7", + "7598c07ba7b16cd12cf50813", + "5e7fd1298c4f15aa0f1c1e47217aa7a9", + "0e94f4c48fd0c9690c853ad2a5e197c5de262137b69ed0cdfa28d8d12413e4ffff15374e1cccb0423e8ed829a954a335ed705a272ad7f9abd1057c849bb0d54b768e9d79879ec552461cc04adb6ca0040c5dd5bc733d21a93702", + "5762a38cf3f2fdf3645d2f6696a7eead", + "8a6708e69468915c5367573924fe1ae3", + }, + { + "dda7977efa1be95a0e41ed8bcd2aa648621945c95a9e28b63919e1d92d269fc3", + "053f6e1be42af8894a6e86a0", + "6fa9b08176e9963927afba1e5f969a42", + "cb5114a001989339657427eb88329d6ce9c69694dc91a69b7557d62184e57832ec76d162fc9c47490bb3d78e5899445cecf85d36cb1f07fed5a3d82aaf7e9590f3ed74ad13b13c8adbfc7f29d7b151448d6f29d11d0bd3d03b76", + "d4adbff3ec8edade29b9a1b748c31b54", + "3b331733c753858c22d309ceb0f9488c", + }, + { + "d7da934ad057dc06bd1ec234fcc4efdc5119037a440b5827de25915f22dd47e5", + "1b54c4ea37d2395ef70dcc72", + "86d5567658361198348207ede7a46da6", + "735de4596a80e64e38a12ab24ef73881d6ed3b533cb2c101025c3615acd2114150feeca84ade4e563bc4a300eb4a0cd97a184a293f0ac063e4f3c61e7fcdb331bcc6459fafaf0e2dda881f34eb717f4ee8c4b6890d3ef59721f3", + "70a1c1d7c200ba5ae1b6f29917bb19f2", + "a25d51cccb198bed33de0b98df249c2d", + }, + { + "930ebb4b9b9c35094be374cc0b700c437b3c46b45d489a716c30f93cd5f986c9", + "7a21e5febd82ec9b97bfbe83", + "980086665d08a365f6bbe20ae51116f7", + "9f2ed5f6cf9e2d6505d3c99a8f81a7dfc5658dd085eba966c8b3206230973a086ec36fe948573baee108fca941bce53dad73180877cd497976209c1adf8a9861f0215560df064caf0ef2f99445c11816f5b8deeafedd682b5fb2", + "05baaefdeb0c33674a8064a2e9951aaf", + "2ec7efd2564d4e09a6ab852f3af49939", + }, + { + "70213d8949a65f463d13206071fab1b4c6b614fd3cee0d340d2d806de6714a93", + "f8529d3e4f155cbb1ffb3d0a", + "47d47a5fd32a2a416f921cc7f00c0f81", + "112360db39b867dabaaa1d777bd881df2104b69fba15a4f37a832f5da38ad8a8c7c46db93e5b4eadf8b9a5a75508ad1457994c133c5ac85509eedfb13b90a2cf6c56a3c778582939362008608b08f9c4866a0e38744572114598", + "b220b69bd851a17fbc5b725fb912f11e", + "4c3436943d58501c0826ae5827bc063e", + }, + { + "7a5834230ebbbf616630f2edb3ad4320182433c0546ac1e34bc9fd046e4a0ed9", + "d27dd6212b6defdcbbc701bb", + "b4def1251427ade064a9614e353dda3f", + "3bc12f3bb88ea4f8a2184959bb9cd68911a78458b27e9b528ccecafe7f13f303dc714722875f26b136d18a3acfe82b53ad5e13c71f3f6db4b0fd59fffd9cd4422c73f2c31ac97010e5edf5950dc908e8df3d7e1cbf7c34a8521e", + "88f94965b4350750e11a2dc139ccaef1", + "8a61f0166e70c9bfdd198403e53a68a5", + }, + { + "c3f10586f246aacadcce3701441770c03cfec940afe1908c4c537df4e01c50a0", + "4f52faa1fa67a0e5f4196452", + "79d97ea3a2edd65045821ea745a44742", + "46f9a22b4e52e1526513a952dbee3b91f69595501e0177d50ff364638588c08d92fab8c58a969bdcc84c468d8498c4f06392b99ed5e0c484507fc48dc18d87c40e2ed848b43150be9d36f14cf2cef1310ba4a745adcc7bdc41f6", + "560cf716e56190e9397c2f103629eb1f", + "ff7c9124879644e80555687d273c55d8", + }, + { + "ad70ebcf889e88b867ded0e4838ca66d6991499046a5671d99e91ed463ae78b1", + "561e13b335718fcbee364100", + "82d5568872a4cef12238c0feb14f0fb4", + "e037bd7306eec185b9cb4e3bf295232da19005957086d62e6fb342284f05feaa0e81d6c95071e7e4d7b6aad7b00f7e7863dd0fc16303a8304bb8855305f28067f4be71eed95ff90e046382116229f0fd3d2c3ef2e87e0d0e7950", + "771c6d091f8190ddbdb8886d9ce2ebd5", + "5009abd1ebeb26dab852346ea6d8aee3", + }, + { + "a452fa24b381e7165ee90f3371c2b0db2176f848a0354c78e92f2f1f89bbc511", + "4bd904dfe18241eb5455d912", + "3f43df23ea940f3680a4b679b56db579", + "64f1a9d21deb183cff84f1aef5be83dbfc72e275f229eb5d59ace143605e8901dfa8f4724be24c86b5429bc84b629971fe1f9663b7537427b45dfb67d5f04506df4ee2c33d7f15af9f6e86058b131b7e6042b43a55bf6915f048", + "c054974c4562f8536aef2734f10e09fc", + "2c5cafaf7b1f7581c5ec13080994e33c", + }, + { + "209ea3c4dd0420a4d63dbb72099a0202c9b0709f3b1221565f890511eef8005b", + "43775083e4008816129f5d40", + "b4967f8c4fb1b34b6ff43a22d34fae5c", + "9abc653a2347fc6e5a8cb9bdc251dff7c56109797c387494c0ed55570330961eb5b11087603e08ad293d0dd55571008e62d1163f67cf829e28d27beba65553bd11d8838f8a7a5f1fe05500befbaf97839801e99ecf998882c707", + "a8d22a6e25232938d3f8600a66be80da", + "2ef93cc03c17bbfb6626144697fd2422", + }, + { + "dabd63ac5274b26842c2695c9850d7accc1693ee2aeee1e2e1338bbbc5b80f87", + "fd6790d620f12870b1d99b31", + "4a28048f5683679a557630a661f030e2", + "e4a06b9b205a7faadb21dc7fea8a0de0e013d717b61b24ec42f81afc8cdbc055573e971375da2fa5103a091317eab13b6a110ea211af257feabf52abafec23fd5b114b013d5c052199020573f8b7b7ae6958f733e87efa0426c2", + "196d0345df259b47665bc233b798ebba", + "b0729d8b427ad048a7396cedf2257338", + }, + { + "b238df5e52e649d4b0a05e53020ac59e7d5bf49b8d04f8c30c356ed62dba9ed1", + "f153f093c9a3479f999eda04", + "d48e779766afa73d7e04fc6fc3fa825e", + "45b5df0c15140e5ce7a19f4e02834e6027971e3e0e719626c29081a6301e95c71214345afac1908bb75ff2d3281261e6c5f41dc4e4796f054174a64f8e177f3f33321edfbd263e204135699428a09f34eb344211bfb9fac9afba", + "b1989eb510843d8f35205dc3f949522f", + "616089990729228f673099514824d9b4", + }, + { + "f3dc2456d3b8947591a2d82b7319226b0f346cd4361bcc13b56da43e072a2774", + "7a8acb5a84d7d01e3c00499e", + "ad075da908231ff9aae30daa6b847143", + "5e6be069effee27d34a8087c0d193f9f13e6440dc9fabfe24f6c867f831d06789d0dce92b2e3ff3ab9fe14202a8b42f384c25e3f3753dd503ec907a9b877f1707d64e4ac42909a7dee00c87c4a09d04de331515460ed101f5187", + "9f224f2a1a1fbaade8b87b748971c0ac", + "cb5089d9dfaebf98e4b36ebc5f9a1a50", + }, + { + "f5a56b69a1562c77e8edebc327a20295c2eba7d406d899a622c53539626c9d72", + "a395b8aca4508a6a5f3cb4d8", + "7de4638701bd2b600d7f8d26da7a75bc", + "2e4fca2b163e4403971716015386cd81bdd1e57f00f2936da408098341011f2644a38ddad799f70eaa54f6e430d4853ff2b9c44a35123670879a83120bd555c76b95b70de0c8054f9d08539a5795e70a2446d7b9fab3f7887c6b", + "6508be2698ba9889b4e445b99190a5c5", + "3394106f257c2e15c815430f60bc24ba", + }, + { + "376371a780947256c52f07d80bb25a4d7e919ca8bd693b1a0ccbca748d2ce620", + "27d7170f6f70f2fc40dfca78", + "7a279f9f8568b7c307490549b259226c", + "272c3559398ad774fa4b6895afc92870b2b92d310fa0debf0b7960e1fe38bfda64acd2fef26d6b177d8ab11d8afceee77374c6c18ad405d5ae323ad65fb6b04f0c809319133712f47636c5e042f15ed02f37ee7a10c643d7b178", + "32284379d8c40ec18ee5774085d7d870", + "dcdee1a757f9758c944d296b1dabe7b2", + }, + { + "82c4f12eeec3b2d3d157b0f992d292b237478d2cecc1d5f161389b97f999057a", + "7b40b20f5f397177990ef2d1", + "982a296ee1cd7086afad976945", + "", + "ec8e05a0471d6b43a59ca5335f", + "113ddeafc62373cac2f5951bb9165249", + }, + { + "db4340af2f835a6c6d7ea0ca9d83ca81ba02c29b7410f221cb6071114e393240", + "40e438357dd80a85cac3349e", + "8ddb3397bd42853193cb0f80c9", + "", + "b694118c85c41abf69e229cb0f", + "c07f1b8aafbd152f697eb67f2a85fe45", + }, + { + "acad4a3588a7c5ec67832baee242b007c8f42ed7425d5a7e57b1070b7be2677e", + "b11704ba368abadf8b0c2b98", + "2656b5fbec8a3666cad5f460b7", + "", + "35c7114cabe39203df19413a99", + "16f4c7e5becf00db1223476a14c43ebc", + }, + { + "e5a0eb92cc2b064e1bc80891faf1fab5e9a17a9c3a984e25416720e30e6c2b21", + "4742357c335913153ff0eb0f", + "8499893e16b0ba8b007d54665a", + "", + "eb8e6175f1fe38eb1acf95fd51", + "88a8b74bb74fda553e91020a23deed45", + }, + { + "e78c477053f5dae5c02941061d397bc38dda5de3c9c8660a19de66c56c57fd22", + "4f52c67c2bb748d192a5a4e2", + "91593e21e1f883af5c32d9be07", + "", + "e37fbc56b0af200a7aa1bbe34e", + "29fe54eaaccf5e382601a15603c9f28c", + }, + { + "d0b13482037639aa797471a52b60f353b42e0ed271daa4f38a9293191cb78b72", + "40fb7cae46adf3771bf3756a", + "938f40ac8e0e3b956aac5e9184", + "", + "7dca05a1abe81928ccfb2164dd", + "5ea53ee170d9ab5f6cc047854e47cf60", + }, + { + "46da5ec688feead76a1ddcd60befb45074a2ef2254d7be26abdfd84629dbbc32", + "9fb3b2b03925f476fc9a35f3", + "a41adc9fb4e25a8adef1180ec8", + "", + "f55d4cbe9b14cea051fe7a2477", + "824753da0113d21186699dbb366c0589", + }, + { + "de3adf89f2fe246c07b0ce035f4af73cf2f65e5034dcfecfe9d7690ae1bdbd96", + "a94aa4df0d8451644a5056c0", + "96825f6d6301db14a8d78fc2f4", + "", + "784c6c3c24a022637cbc907c48", + "1eeaeddcdb4c72c4e8966950a319a4ef", + }, + { + "03c362288883327f6289bc1824e1c329ce485e0ce0e8d3405245283cf0f2eae2", + "5de9f882c915c72729b2245c", + "f5c1c8d41de01d9c08d9f47ece", + "", + "61af621953a126a2d1de559e92", + "fbdeb761238f2b70c5fb3dde0a7978f3", + }, + { + "e9ead7c59100b768aa6367d80c04a49bcd19fa8cc2e158dc8edeec3ea39b657d", + "e81854665d2e0a97150fbab3", + "f8ccf69c52a873695367a42940", + "", + "af2a7199602ee9ed2020c7b4cd", + "29715945ab1c034ecfcd91a466fc822e", + }, + { + "bc3e5b0fe423205904c32f870b9adec9d736a1616624043e819533fa97ed9b79", + "335fe5180135673ce1a75144", + "295df9665eef999204f92acf24", + "", + "3ac2a8a1b505a84677adfdb396", + "21f20aa0bb77d46d7290bc9c97a7a7bd", + }, + { + "ce889c73e0d64e272aba4bf9777afc7ee6457ddc9626ad931708ed7530d71b99", + "fe61a6cda62fecd4e3b0c562", + "e2ae40ba5b4103b1a3066c1b57", + "", + "185aa3508a37e6712b28191ec2", + "9ec1d567585aa467730cce92e536728e", + }, + { + "41e0cb1aed2fe53e0b688acb042a0c710a3c3ae3205b07c0af5191073abdfba9", + "2f56e35216d88d34d08f6872", + "6482df0e4150e73dac51dc3220", + "", + "9cb09b9927dfbe0f228e0a4307", + "fe7e87a596d63e2ab2aae46b64d466e8", + }, + { + "52a7662954d525cb00602b1ff5e937d41065ac4b921e284ffac73c04cfd462a0", + "baffe73856ab1a47fb1feebf", + "9d0b5ca712f97caa1875d3ad87", + "", + "fd01165380aedd6be226a66af3", + "35a492e39952c26456850b0172d723d1", + }, + { + "c4badb9766986faeb888b1db33060a9cd1f02e1afe7aaaea072d905750cb7352", + "cc6966e9d81a298a561416d4", + "de68fb51731b45e7c2c5063923", + "", + "f5be41f2c8c32e01098d433057", + "c82b1b012916ab6ed851d59829dad8ab", + }, + { + "dad89d9be9bba138cdcf8752c45b579d7e27c3dbb40f53e771dd8cfd500aa2d5", + "cfb2aec82cfa6c7d89ee72ff", + "b526ba1050177d05b0f72f8d67", + "6e43784a91851a77667a02198e28dc32", + "8b29e66e924ecae84f6d8f7d68", + "1e365805c8f28b2ed8a5cadfd9079158", + }, + { + "0d35d3dbd99cd5e088caf686b1cead9defe0c6001463e92e6d9fcdc2b0dcbaf6", + "f9139eb9368d69ac48479d1f", + "5e2103eb3e739298c9f5c6ba0e", + "825cc713bb41c789c1ace0f2d0dd3377", + "8ff3870eec0176d9f0c6c1b1a2", + "344234475538dc78c01f249f673e0862", + }, + { + "d35d64f1872bdcb422228f0d63f8e48977ed68d143f648ae2cd852f944b0e6dd", + "0b2184aadbe8b515924dda5e", + "c8f999aa1a08871d74db490cf3", + "888f328d9e9eebbb9cb2704b5b880d66", + "ad0d5e7c1065a34b27a256d144", + "8c8e7076950f7f2aeba62e1e761650d5", + }, + { + "9484b7ce3c118a8a2d556c2f7ba41fca34f60c9ea1070171459c9e7487c9537e", + "87bc033522ae84d2abe863c5", + "14d8004793190563825e273dda", + "07ee18737b9bf8223979a01c59a90eb4", + "43034a2c57ccacc367796d766a", + "4c981ca8b6e9e52092f5435e7ef55fbb", + }, + { + "4f4539e4a80ec01a14d6bb1bae0010f8a8b3f2cd0ac01adf239a9b2b755f0614", + "2b6f00ce1570432bf52fdcac", + "820cc9389e7e74ca1cbb5a5fe6", + "0d72a13effe40544c57cc18005b998cb", + "99553fdf3e777e2a4b3b6a5538", + "3cbf51640a3a93c3662c738e98fb36a2", + }, + { + "2f5e93ee24a8cd2fc6d3765f12d2179ddb8397783e136af9e0ac75f16fca451e", + "0dc3c70a191f3722641fd701", + "4e96463793cdeda403668c4aee", + "ebab30cbcc99905354e4ee6f07c7db87", + "ab03f8ca7b1b150bdc26d4e691", + "020546afff4290c4c8ef7fc38035ebfd", + }, + { + "a902e15d06ef5ad334d0ec6502e936ee53ef3f3608f7708848b11cefa92983d1", + "b9f3e966efa43ab4aca1f2d8", + "393ff3dfe51cd43543e4e29fcc", + "2eaa35c00bf1cf8a81919bd04b43fd97", + "7e8928b450c622ac8efe29d5a0", + "5a285de95990aef171629350bbcaf46e", + }, + { + "96657976da7692004e271b594e8304f77db9c9e77859246bb30a16239ba76a53", + "79226100afea30644876e79a", + "2b0833a065c3853ee27c8968d0", + "ede7a9072a0086b9a1e55d900747cf76", + "19373168f1a4052a57c6b8146f", + "debbf044325384b90a0c442d95455fb9", + }, + { + "630ea13eb5f52378b976ba2662f824dc622920759a15d2e341c446b03ea7bd5c", + "0f9ebe47682f93d44c4db314", + "5c734964878a4250a3bf61fdd6", + "5ad8e9cffe622e9f35bdb185473868e5", + "67cb6d943340d002d3323fcc4e", + "f5dc0f88f236560c4e2a6d6c15d3c0de", + }, + { + "c64f8a3ac230dce61b53d7b584f2309384274d4b32d404bc0c491f129781e52d", + "7f4b3bcf763f9e2d08516a6d", + "fe581128ae9832d27ec58bd7ac", + "89ed6945547ee5998de1bb2d2f0bef1e", + "81d7a8fdaf42b5716b892199c9", + "8183aaff4c0973fe56c02c2e0c7e4457", + }, + { + "dd73670fb221f7ee185f5818065e22dda3780fc900fc02ef00232c661d7bffce", + "c33de65344cfbf228e1652bd", + "ada4d98147b30e5a901229952a", + "e1a5e52427f1c5b887575a6f2c445429", + "6ed4e4bd1f953d47c5288c48f4", + "404e3a9b9f5ddab9ee169a7c7c2cf7af", + }, + { + "f6c5d9562b7dbdd0bf628ddc9d660c27841b06a638f56601f408f23aa2f66f4e", + "67280bcb945ba6eda1c6c80a", + "f4caead242d180fbd2e6d32d0c", + "5b33716567b6c67b78ea5cd9349bcaaf", + "fdfa39517d89ea47e6ccb0f831", + "91f9b540ca90e310a1f5c12c03d8c25e", + }, + { + "ce1d242f13de7638b870e0aa85843ea43a9255a4fa4d32057347f38e0267daeb", + "86562be4621b4d5eb1983075", + "d20e59a8ef1a7de9096c3e6746", + "d48a9490a0b7deb023460608b7db79ce", + "35ce69fb15d01159c52266537c", + "dc48f7b8d3feeeb26fcf63c0d2a889ec", + }, + { + "512753cea7c8a6165f2ebbd3768cc7b951029bd527b126233cf0841aff7568c7", + "b79221802d8d97978041fe84", + "c63d6c1006b615275c085730b1", + "22fa0605b955a33468f3e60160b907f2", + "bdb5d7f24732bdba1d2a429108", + "fca923d2941a6fd9d596b86c3afb0ad9", + }, + { + "e7b18429e3edded2d992ca27afab99e438b8aff25fc8460201fabe08e7d48ec2", + "9db9b7320aaac68538e37bf7", + "c4713bc67a59928eee50039901", + "283e12a26e1646087b5b9d8c123dde1f", + "a5932f92bda107d28f2a8aaa74", + "9a1357fd8ed21fe14d1ca2e597c3ef17", + }, + { + "69b458f2644af9020463b40ee503cdf083d693815e2659051ae0d039e606a970", + "8d1da8ab5f91ccd09205944b", + "f3e0e09224256bf21a83a5de8d", + "036ad5e5494ef817a8af2f5828784a4bfedd1653", + "c0a62d77e6031bfdc6b13ae217", + "a794a9aaee48cd92e47761bf1baff0af", + }, + { + "97431e565e8370a4879de962746a2fd67eca868b1c8e51eece2c1f94f74af407", + "17fb63066e2726d282ecc610", + "e21629cc973fbe40176e621d9d", + "78e7374da7c77be5938de8dd76cf0308618306a9", + "80dbd469de480389ba6c2fca52", + "4e284abb8b4f9f13c7497ae56df05fa5", + }, + { + "2b14ad68f442f7f92a72c7ba909bcf995c827b439d39a02f77c9bf8f84ab04dc", + "4c847ea59f83d82b0ac0bc37", + "b3c4b26ebbfc717f51e874587d", + "8eb650f662be23191e88f1cd0422e57453090e21", + "3e288478688e60178920090814", + "a928dc026986823062f37ec825c67b95", + }, + { + "11f41bf7d4b9ac7b0035ce54481ed1502ff05cfae02ffba9e502f61bfe785351", + "06f5cf8c12c236e094c32014", + "bee374a32293cad5e1b28419b3", + "d15cbde6290b7723625c99ffa82a9c4c03ed214d", + "3f8122deb6dbe0ff596441203d", + "60ef7f3723710b9ab744f8eea00267f7", + }, + { + "18ca572da055a2ebb479be6d6d7164e78f592b159cdea76e9fe208062d7b3fa1", + "1b041e534ae20748262f3929", + "cda2fa0015361ecf684c6ba7d1", + "e8a925d7ce18dd456b071cb4c46655940efbe991", + "740d8d578e2e7522c31019f471", + "f2eeb5af1bfedd10570a137fe2566c3f", + }, + { + "0de2ac5bfec9e8a859c3b6b86dde0537029cdca2d0844bf3e1d98f370e199be1", + "1778e308e0221288f1eb4c5a", + "575d93a3416763cbd371b5a671", + "1362264f5655f71986aa788efd48f6fc13bb6ab4", + "8f8df7ca83bf876b63c78e2c9a", + "16c74e315aab97efafbe95c9dcaa2d0c", + }, + { + "b381535a085bc4808fa7a139c7204e8a87c7145dfc8f3900df1fa9a9844fab35", + "21ddc54d3c633f4a344a0e42", + "e4d958cee583010bbfd3a53021", + "7ac3ba600e08363ddb57c45a8670bb4abb869db0", + "c42c81a312759cdb032aafe852", + "0c472591db3df8a7c67164591542dcc9", + }, + { + "29f21e5029ea4964b96dc6f4c34b2df4cce02f2fcf0f168ffd470e7858e0a0ad", + "63a1c1ccc328280a90ff96fe", + "dc12113764c13c21432ca1ba33", + "454f447433f0948581956c4be1b19d932e89b492", + "1cb45aac5def93daef806b781e", + "f4b0723c89607b66c392049ba042db63", + }, + { + "2733d3aa52a9d70a9fbd6ce2364bb5f9004902aa5eeb17446e08f2bdcc41db15", + "196c4addb84a58beb3674a7a", + "cbc50cafda2544bcd291e8a025", + "c9826fe31f29b55b9d0f9da9795869a1a98befe5", + "7a89cc58ccb97ad3e54ca4a9c8", + "3990d9aba210182996fdbd91c2ae4801", + }, + { + "0c4b9005b407415c19672bcd0ebe169f66fe404f22529baf55568e0901e94922", + "e51381e959a1f5688c938576", + "c6179bd3451d9299b727e8bd0a", + "0b512faeb4da740dcc1e30d3c7ea61035e8570b7", + "4d3fe086c990f16020b4c5eed6", + "9ff2297845814719f851ab0943117efb", + }, + { + "fee442ba37c351ec094a48794216a51d208c6a5ba0e5bdb8f3c0f0dfc1e4ed63", + "a666f2f0d42214dbaa6a2658", + "a2cf3ea0e43e435261cb663a3b", + "7198c12810345403862c5374092cc79b669baecc", + "713d4050f8c7fd63c0c1bf2ad9", + "250a35e2b45ba6b0fe24512f8213d8cb", + }, + { + "77f754d0cf7dbdaf75cfe965ab131e8cd39087ee6d986dec4ad2ff08ebd7f14b", + "e28a14f3107ca190d824ed5f", + "54a97a74889e55d8043451c796", + "1decf0cbc50a9da6dad4a785a941e4b95ce5aaa8", + "eedbf8dd81eb19184589dcb157", + "7749edd752fab7e50dbc3b0b47678bf6", + }, + { + "0523f232001e68bd65a79837bbaf70ec2e20851301d8e12fddb5926acb2100cb", + "2bb8d5cb3ceb15107582e1fa", + "6b4cdc9f9c5082d86a1d2e68fe", + "1f55bba71cb63df431ef8832c77499ee3c502067", + "079fe90ef517ed2f614a3cd8ce", + "539c30590a2527f1d52dfae92920794c", + }, + { + "54c56ee869ebb112a408717eb40af6937fe51eb061b42277a10537e7db346b6a", + "5bfb63e2f3e5b2e1b4343480", + "75f9496b8d0ca96ed3af02dcab", + "740ab07b9c5de2afa37f0788ae5230535c18203d", + "827902e58c4c8b7af976f61842", + "036ee6473c2138f2a2c2841438cb0edc", + }, + { + "d968ffdbed6ffc259b4310e2e97e42d877ef5d86d2169928c51031983779a485", + "633d0d8d3613c83b40df99dd", + "08cfc65fea9b07f0c01d29dfdf", + "9aadc8d8975ec0a3f5c960ce72aaec8ef0b42034", + "7b450f162bdedc301b96a3ac36", + "970d97344b1451f3f969aeb972d352e6", + }, + { + "5f671466378f470ba5f5160e2209f3d95a48b7e560625d5a08654414de23aee2", + "6b3c08a663d04132243dd96c", + "c428592d9f8a7f107ec4d0df05", + "12965559c31d538f937bda6eee9c93b0387318dc5d9496fb1c3a0b9b978dbfebff2a5823974ee9d679834dbe59f7ec51", + "1d8d7fe4357080c817303ce19c", + "e88d6b566fdc7b4fd62106bd2eb806ec", + }, + { + "fbcc2e7faa4295080e40b141bef829ba9d34e0691231ad6c62b5109009d74b5e", + "7f35d9ec651c5b0966573e2f", + "cdd251d449551fec080425d565", + "6330d16002a8fd51762043f2df06ecc9c535c96ebe33526d8faf767c2c2af3cd01f4e02fa102f15ce0236d9c9cef26de", + "514c5523024dd4c7d59bd73b15", + "d3a399843e5776aa348e3e5e56482fff", + }, + { + "04ef660ec041f5c0c24209f959ccf1a2a7cdb0dba22b134ea9f75e6f1efdae4a", + "0f5f6fbca29358217c8a6b67", + "0835b312191f30f931e65aa05f", + "505e205d13ec945391c7d6516af86255e82f38433f40404d4f1e42d23b33eb9e6dea5820dad60622d3a825fc8f01a5d2", + "5ddc0f5963f0290c1a0fb65be7", + "106d1f8d26abe4b4b1e590cd5d85e737", + }, + { + "42d3ff74284395fb9db9b8c7a444fa400f7fc6b985a7fec2478667c7f17cf3ba", + "89230fbed59d1226a093ad28", + "d8339e3618ba57a243a27c85d6", + "60342f97310446266b2e47b18e008979d07fc181151ac0939b495e7f31de1d0e74042532840ab91686efd7a402d27a94", + "9bb6fa36fa167016109d521ac0", + "600909ef32ca62951ecbdc811caa7778", + }, + { + "e115c6468606a5f9b8e9a7c220d7d7684d686c9210a669770b6e4bf24447cd17", + "029c7c9ee2d3ab26843e8b41", + "7abf84842f9867cfc5eabc7032", + "1befd9f97f99fc096deafde5e158ac86716c0ba32454988fe48ba4737684361849a221c03fc0948cb25b5f29d6a0cb2a", + "851c7047fb09646fbddb824531", + "d0ac4110c8d768f0a804ecda387cfa30", + }, + { + "56552f0cef34673a4c958ff55ad0b32c6ababa06cb3ae90178ab1c9a1f29c0e5", + "b34d24935407e8592247ffff", + "dbd6cc358b28ab66a69f5238d4", + "b199437da189486a8fd1c2fa1fe3ebbb116f0ef41415bb7c8065272fb0b2fe8edca9cd0d4255d467e77f2834be557474", + "76dc8d035e5ca4001e4e3fcb18", + "49c01f735da1131cd42b01b746fd38de", + }, + { + "d4f405ba556e6fe74b7e6dbdd7a8eae36376d1ca7a98d567d108729aeae5c326", + "df6637c98a6592843e0b81ef", + "abe87641e9a5169f90179d3099", + "a5328cbabdfe6c3c1d4f5152189072dade71e2bacd857d3ce37ee9e3161eb0f20de5a29b7999fd9c7c60cdc03751bd1b", + "06f9cf9677745e78c6c02bf06b", + "5a3a76da0703c24a9588afb2ac1a9e13", + }, + { + "4f667f65ea4569264456e25de498579036d6a604c18baf770bb626d8a1c68e4f", + "43e27d275abefdd45137c8ff", + "eaa2498ce27e5658489381b6ec", + "264b807b4631d7c87ee9f1507082f5af9218f531b4630141f3c94939aa7cf81c71ea540783995560bf7e6e02d196227f", + "bac018bf2e7090e7f217ab3365", + "13e5a16a9ce7a88cda640de2c4fdc07e", + }, + { + "f5624a166759ef0b8168af6565649f7797fa92476e008c407458101e75831312", + "521ca79ffc8930349abfc052", + "1fab3def2ea13e815f8746093b", + "6e2771ecd637361cb6b947148910f7d9206d6af176c510bb5dd5bc9b97ac015fb05537affbc1756625715374172fb456", + "ca72ff15a7eb62a2839bcf0c43", + "475fff6d9e2382583c9614020844b92a", + }, + { + "ac1383a3c783d3d0667e944cbe1a6159647b96afa922557eb1cb6407546b98ca", + "70366112dbe1bd905b900e3a", + "b8dd871f9d866867efbe551c3b", + "b7c1865927737bee802415277cf1a25b7380774a9d27b6a3253f077d36e9c4142df2bbbf3c03414ac09161626ce9367c", + "ba181874380841791f64881534", + "c5641edf42c446873372bbbde1146642", + }, + { + "f37499d9b6ad2e7618e30a23082673008f3ae1938b9397c02a4da2453fb7e403", + "18e112ea6a998d6f9705f7e0", + "31560b2114a248ffe0696fa130", + "736f1a71fb259f46c6519bb87451f238f47d80c74a016604499b02568f1c7bedf70f9597d7b62c1698c4f2631f4e9706", + "0163f558be0142ebabde29a7bc", + "45579ce07ee64cdac3a7a42109ff44e7", + }, + { + "50b7f5118ef7ee22b107d93ceab9881ef9658931e80385d1ae92501b95e47d62", + "d5113665039169978b7dc4db", + "9ba4cd5e600277f4c786ce827e", + "68ff6c63e94cb7dd2b8413662a56c88dc130b79b8b2e2388c1089b61fa51ea37819109b5ef64da1250f5d6b5d74cc392", + "67842199482b28be56f7570d11", + "79e03841843fe32337b7c7409a2153bc", + }, + { + "d396941c9c59e6a7bc7d71bd56daf6eabe4bfb943151cdb9895103384b8f38b4", + "f408f8c21f3825d7a87643ed", + "dc8ad6a50812b25f1b0af70bee", + "947bd9a904e03fdd2c91d038d26d48ac6e32afcad908eacd42a25f6240964656d5a493242d3f8a19119a4cd9957d9c42", + "57e6d821079bb8a79027f30e25", + "de8c26d5a3da6be24b3f6ea1e2a0f0c6", + }, + { + "eca22b3a29761fd40031b5c27d60adbcfac3a8e87feb9380c429cfbcda27bd06", + "4e6fe3d1f989d2efb8293168", + "44d6a6af7d90be17aac02049a4", + "29beb1f0bb6b568268b9c7383991a09fd03da7e1639488169e4f58ec6451cad6d4c62086eee59df64e52a36527733d8c", + "9aaa295bb3db7f6335a4c8cf2f", + "55f7577163a130c0dbcde243ef216885", + }, + { + "fa3ce8b099f3a392624bc433b5265235b65c0952cfc54817be2a8003d057903c", + "3168b4e50efe96b3d3aed600", + "84ed3ccd428d3783ecea180b3b", + "d451fa64d73b7d7eee8f8143c40bab8e3f7a58ee018acda23224974f64ac7e1e389f5058ec08664bf56492b932d15f42", + "ee2bd527568a4e7537c8f939b6", + "f4615f7dfdffec8a2d52c992456210ad", + }, + { + "ff9506b4d46ba54128876fadfcc673a4c927c618ea7d95cfcaa508cbc8f7fc66", + "3742ad2208a0484345eee1be", + "7fd0d6cadc92cad27bb2d7d8c8", + "f1360a27fdc244be8739d85af6491c762a693aafe668c449515fdeeedb6a90aeee3891bbc8b69adc6a6426cb12fcdebc32c9f58c5259d128b91efa28620a3a9a0168b0ff5e76951cb41647ba4aa1f87fac0d97ac580e42cffc7e", + "bdb8346b28eb4d7226493611a6", + "7484d827b767647f44c7f94a39f8175c", + }, + { + "b65b7e27d552395f5f444f031d5118fb4fb226deb0ac4e82784b901accd43c51", + "2493026855dd1c1da3af7b7e", + "8adb36d2c2358e505b5d214ad0", + "b78e31b1793c2b758494e9c8ae7d3cee6e3697d40ffba04d3c6cbe25e12eeea365d5a2e7b46c4245771b7b2eb2062a640e6090d9f81caf63207865bb4f2c4cf6af81898560e3aeaa521dcd2c336e0ec57faffef58683a72710b9", + "e9f19548d66ef3c16b711b89e2", + "e7efc91bbf2026c3519010d65628e85f", + }, + { + "8e4f8859bc838f6a2e7deb1849c27b78878285e00caad67507d5e79105669674", + "e71d0ebb691a4c31fdd9879c", + "bd1713d8d276df4367bf3cbb81", + "47ca6cef3ca77997ef1b04e3721469be440ad6812aa3674ae92ca016b391d202e29932edfa83029eccae90bd8dbe4b434e7304b28fe249b380b2c3c49324fd5b3e469e3e135abc1c9fd77828b409c7482e6a63461c0597b14e5c", + "eecbfb74e314628b0e3f827881", + "c9ea890294d7e10f38b88e7c7493c5f8", + }, + { + "2530cdcb2a789000822588a31bdc87c09234838da2d6ae1259c7049186525f11", + "0c509faa257dbb0e743a53ac", + "a8edc524930ce4c20897c66f75", + "92a92cb8c1984ede806028cc45ac95574167ee83f03a707cc4b0fb8ad70907e0016e38b650f4a75bc83a625e3c670701d43bfb0326d1c4fe7c68410733c0c874c920389d164bf67a9032e2e837f5e9e324b97932d1f917ba7dca", + "1f658c7a1f41152b22999ed1b7", + "cf3e4fef775d9c6ff3695be2602a90d8", + }, + { + "54c31fb2fb4aab6a82ce188e6afa71a3354811099d1203fe1f991746f7342f90", + "f0fe974bdbe1694dc3b06cc6", + "fbb7b3730f0cd7b1052a5298ee", + "2879e05e0f8dd4402425eabb0dc184dcd07d46d54d775d7c2b76b0f76b3eed5f7ca93c6ae71bf509c270490269ea869ed6603fdf7113aa625648ab8ed88210f8b30ec9c94bca5757ca3d77491f64109101165636b068e3095cb4", + "3a5a2a8aa93c462cfb80f1f728", + "59ef9d54ee01fb6cd54bd0e08f74096f", + }, + { + "8084061d0f7858a65c3a3557215ed46f1590278ca97a45dcb095d2a0979f2e3f", + "6973898b1a8f72856415675b", + "200d0445cb09eb52f54d2f74c6", + "8b543e294546848c3308ccea302f0238b7dffc1706d03657c190ea745cc75bcd5a437993e787828ea7fe42fea1d5c6f7229a72ea65f0d0c190989a590ab49c54726633282c689eef8cf852af263b5edf63e449fd5440730003ca", + "ec242c358193ca6187c89aa7a5", + "967428ac6956525ba81d5901ed259407", + }, + { + "2aad7db82df4a0d2ec85218da9d61ade98f65feeb8532d8eb728ef8aac220da6", + "029ac2e9f5dc3d76b0d1f9df", + "ba363912f6207c54aecd26b627", + "d6f4b6232d17b1bc307912a15f39ccd185a465ee860279e98eb9551498d7b078271ebabdda7211e6b4ab187043171bc5e4bf9ffcf89a778430e735df29410a45ca354b0003433c6bc8593ee82e7c096a32eac76d11daa7d64150", + "bfcad32611da275a0f0821517c", + "9ea37bdcaafad69caf06d67fb18dd001", + }, + { + "f70bb950ab56f12f1efc2376d32a59d16ef3ef5969e0106ab40cc314c9b0c7e8", + "3b3b29ba422c2bacafeeb8b3", + "029929277043dc0379f152a484", + "464ac0c84b9ff17a0e7c39a65f89682a89b8787553a6275f0d55effaabef2114072c739f9831a5d5a5133ae4de14eb51346b318b255a1bff57e50c433e1e69a00fe1a8b6f6b621d515d670d89e148f6b65d6eb4c54878cb819ce", + "c0b97d6d1a95d708d6dc7d2b95", + "322eb4395bf4d4dd070b8f9f6195f8ee", + }, + { + "f4950f01cb11fdd9afb297f7aa852facfac354ff96557befa5f657678de6cefb", + "aba7d864f29cbc449cd93e33", + "e6daf59ef54ac7405984fc4c4e", + "852f624cea7a8c20e189e0c79f578c0d770c4bf7c4e691649eba992f6de89d7bf2078aff94803a3dc62628e02a80a01957722e2a931fc56283d84ab68ce11ae867835c2d9700df130048ea8eaaca41f1a9059be2acaea6e0f7f2", + "d01d36ff8009b4082279abb906", + "d9a36c8008493bd95c09049299cbd075", + }, + { + "714261ef4f02fb4efb0e6b5aed96d7b3ceac6551a57cf679da179c01aac5ee0e", + "3b7d15c7fd877461a789255a", + "815de8b0382fe60cb0d3782ee9", + "7621e58152336ee415f037f2e11581fe4da545c18d6e80177d5ab5dda89a25e8057d6fccec3757759a6e86e631080c0b17baa8be0b8fe579d3bfa97937ee242b6faacfc09425853df4dc26bc263ed1083a73ffc978c9265f8069", + "29c566ea47752a31a380fd0e7c", + "b279340a384dbbae721c54e9183b3966", + }, + { + "53459ba5a2e49d1a7c2fb6ad9e6961b4dbe5158cb9266eff425d6dcccaaf8073", + "3c97dc635a75fbe2c33c9a41", + "03fbfe5842ed781990ca8be728", + "7fe308afe58a927680bee3368301f4dc7c47811fc09f1b9922a092a497b9c6b67c857fdcc32da1011acb110b3c1475bef303f1a609479485cc400ee8f38381c45d078708ad49f226f95dd9c81478d1ee2b53c3b906d96f8ddd76", + "5865e5a1ec711732a4ee871bff", + "856a653ec214178096bed423e30a36e9", + }, + { + "f0501583c226d2519ed23fcc6f2cffd2f013eb91aa07b3a5a2073d6e2bd10cef", + "29a922ad9bdeddc2e298b99f", + "035eb6922345c02a81435d9e77", + "d84f54bac09ea92afe0a7335cb0bb5f68425490fd2fb6c3b99218f49856ed427ec902e510b899d54951fe84cdbfd112608d1e999f64ecc9cd4be3a0114c1c34875dbf35a1b0be421659f99d69b32e968cebfca6f95837e3edeb4", + "095971f99af467805a62bfb882", + "d5ff2b7beac260e517ea3eca13ff1e77", + }, + { + "78e6789b596c71cb3becc833cf823d2ebb18ca2e26c27e26a55ef95df7353971", + "65da9c7a9f17b11246bcf8db", + "003e82a147df3c953400f87ab5", + "d49aee7ffd31e7c8d831d97ae894a00473adbc5071f6099d567caaef85c295d5143a1316ff82753cc35d3efc60f7e5101ddd811336b404d598f6c439cce6b47fcbebb15d1c342e4151b355025a03b4397260b4a7e6444fa57b5b", + "abcceced40209fc30a5590fee8", + "0a203973b81375949ebd932597efd495", + }, + { + "816b3e6ca31d59688c20bcd1fa4285197735d8734289ca19a4730e56f1631ccf", + "4c191ac994f86985c180ccd4", + "b2060dd86bc307133b7d365830", + "b3dcd643c68ccce186570c63288c8722b8a13dfaf9e71f44f1eeb454a44dddf5f955540cd46c9f3b6f820588f71936d7a8c54c7b7bc43f58bb48e6416149feae7a3f8d8198a970811627489266a871e8cb87878cdb3a48be65f5", + "53e65880ad0012a75f1188996f", + "9ca8a71a45eb4402a6b03106bae330d1", + }, + { + "a07ba57478061bd7abddd762971cf2e47141891f76c3d1c150b53eee5704557d", + "5adfb85b2d9e239c5146501d", + "67c8824c1837cfdec6edcd719c", + "937b3ed73e67ca0b02f9eb736a668362d4d0447c15f6083099a7f90c7c49318dd72f6baa74da22ff53b56c24fb9a1b1d6c4e29f4ac4d917220ebe3c8d760999da7be9e1e8f6a171133640c9196f9ee3cdb76a5a342a95a05c8c4", + "1eb85c6682850e849eb37927e5", + "8079f705cf551a5484132cd0f0c5297c", + }, + { + "268ed1b5d7c9c7304f9cae5fc437b4cd3aebe2ec65f0d85c3918d3d3b5bba89b", + "9ed9d8180564e0e945f5e5d4", + "fe29a40d8ebf57262bdb87191d01843f4ca4b2de97d88273154a0b7d9e2fdb80", + "", + "791a4a026f16f3a5ea06274bf02baab469860abde5e645f3dd473a5acddeecfc", + "05b2b74db0662550435ef1900e136b15", + }, + { + "c772a8d5e9f3384f16be2c34bf9afd9ebf86b69e6f610cd195a9db169e9be17e", + "9b8e079f9971d7352e6810a3", + "7f13fcaf0db79d792823a9271b1213a98d116eff7e8e3c86ddeb6a0a03f13afa", + "", + "d29e2bf3518668a14f17a3e4e76e1b43685734b801118d33a23238f34d18aa40", + "8e02b0b7d172cf5e2578f5b30fac2e7a", + }, + { + "d5924b31676e2354fe7dafffaf529749598ea1bf5e4c44f5b60240e09d8036aa", + "5d847784f0bcd79cb84fcf1d", + "6fd80c8f0d4de081a93c16b84dec697a1e4f9d80a6af497c561572645eac0d63", + "", + "282cc9d2308a443019cfdc4d79854accc7731ee36902bafe3ffaca6484327b82", + "4dc5e0f2ab91bdfd31f2bdcf06af9667", + }, + { + "b328c6d7946221a08c4f0509b52992a139890cdd8eae1956851f110c49602cb5", + "1a433c33ca12ce26cf3dffff", + "217bdc314a4d335c72b5267b424fc8e31f4bb118e6cfaeacf5548f4ba8f51980", + "", + "a322944e07bf84ab424ffa75fd0309e8691c9036b08f344ba76ce0774f43b351", + "14dd6b1c2b224533ccc9fee8d2881358", + }, + { + "c2080965d21d229c0d0d6c56cbce83880120c21a48172a64560b90dc4ce1ffbe", + "928d6c0195f5f0974f38730b", + "864397271e1b242aa1dff38e78aa89353e1554ba907318a0aaad44f26fcd567d", + "", + "7de4f941f44bd0f268b2a47b9c4927cc10537bbed739d52ab099fde4033041d1", + "b51a59931817257619e7be1091128c49", + }, + { + "dd6b7e2584edf1f1e6c2c0dd1f72161a92d2cba99856554f820de1256d48c099", + "fe9d553c75067e8dbae1ab67", + "f9f86f7762859f11d6e7ef56178657ddcded532843446f86a23eac35aa2dd3c0", + "", + "f7aaa1711c8092783b05b4e5e6c9c6944e991bd59c94b9d0356df00a66e2db5b", + "c61edd176c8322a01d8c5f3df09252e9", + }, + { + "37f39137416bafde6f75022a7a527cc593b6000a83ff51ec04871a0ff5360e4e", + "a291484c3de8bec6b47f525f", + "fafd94cede8b5a0730394bec68a8e77dba288d6ccaa8e1563a81d6e7ccc7fc97", + "", + "44dc868006b21d49284016565ffb3979cc4271d967628bf7cdaf86db888e92e5", + "01a2b578aa2f41ec6379a44a31cc019c", + }, + { + "a2ef619054164073c06a191b6431c4c0bc2690508dcb6e88a8396a1391291483", + "16c6d20224b556a8ad7e6007", + "949a9f85966f4a317cf592e70c5fb59c4cacbd08140c8169ba10b2e8791ae57b", + "", + "b5054a392e5f0672e7922ac243b93b432e8c58274ff4a6d3aa8cb654e494e2f2", + "cf2bbdb740369c140e93e251e6f5c875", + }, + { + "76f386bc8b93831903901b5eda1f7795af8adcecffa8aef004b754a353c62d8e", + "96618b357c41f41a2c48343b", + "36108edad5de3bfb0258df7709fbbb1a157c36321f8de72eb8320e9aa1794933", + "", + "b2093a4fc8ff0daefc1c786b6b04324a80d77941a88e0a7a6ef0a62beb8ed283", + "e55ea0456af9cdff2cad4eebbf00da1b", + }, + { + "6fb2d130bbad1924cab37d071553b12169e978a805bf74cb4c23d5ccd393d7bb", + "76826741225a391fdce4d3b6", + "c49b80080e2efeb5724b9e5b53ba0c302e97bd16f1a6bbec01e1ca6c35a42a3c", + "", + "62fbe5466a7ff83ff719f4927e00e9319e1bb7e835c5d6b4e9d4bc5a8d6e2beb", + "df72da7a66cb5257836f3c19ecadcd55", + }, + { + "402e8113970257d9437807620098370243536a105cca4fbc81a1ff2d48874f48", + "c924c19c4d14905a2bdf63bf", + "917b9585f65e59bf4d242bb0802966045dd29fbc66911277baecdfcc818c3c35", + "", + "5b6594edcddbb338f4e813687f4f23a75a64c21e3cf5d2e7c9af0f7e3ee3e616", + "f1cccd93a4411247c8b6830addd72c6f", + }, + { + "2aac499cb0eb72b4598acff4330df6cd764978997d5ace51da88e0c18671bde9", + "fd16cdc39d7f0b92e1f95c97", + "e7b75bfa35c9a004d0b68265623a9b06b6d4493ea0ad4f6c777ba5add8c7bbbb", + "", + "c3d0a0f7ce9720c95aac86151aad634884ddfa62df58f18394537f6504d9a8aa", + "76749a1ec70236b267fc340d5fbb6da3", + }, + { + "a2a502d6bb19089351e228d5cbff203e54fc31f2772253df08557875d964c231", + "0ebb5af4a462a1e6ded7164a", + "bbecc89450c07b8de631155e5d7cc7a9d26376bb57d7458d49b4c36e140490f3", + "", + "fd09c950890441fcaaa8809a8998079abb88741c6672abae12383ffd724f8299", + "22fac246058bf142c5f26812a635b480", + }, + { + "ce2d289e20c76f75c135c8118d5cbf5f2828026f0b639588a3eb4ad752cea548", + "bb08526dd8bd1c3bb58d0999", + "56f5db1e796a0c4633a8d570182c39e3c8451e7ba485b98d38a2c926a1b92a46", + "", + "a41005df18734d4f3f99f19ef8fc43b16ef431207cb0466341bf164b58e23533", + "a45c2a1ef6aec75cc22d71807dab3c27", + }, + { + "66e418d0ec97b420b1b5365d1b6d5cd7c5ac1a5653739120d4aec3c94c93c287", + "989f94480266e3652488184e", + "e5052b19d7f827fd60f45c8925809fd2217ec4d16aa89bbf95c86a1c1e42bd36", + "", + "f341630574ee92942cf4c5ecd3721ae74b32c557379dfe8351bd1c6661a240da", + "e85fb655ef432e19580e0426dd405a3e", + }, + { + "37ccdba1d929d6436c16bba5b5ff34deec88ed7df3d15d0f4ddf80c0c731ee1f", + "5c1b21c8998ed6299006d3f9", + "ad4260e3cdc76bcc10c7b2c06b80b3be948258e5ef20c508a81f51e96a518388", + "22ed235946235a85a45bc5fad7140bfa", + "3b335f8b08d33ccdcad228a74700f1007542a4d1e7fc1ebe3f447fe71af29816", + "1fbf49cc46f458bf6e88f6370975e6d4", + }, + { + "2c11470e6f136bec73351619288f819fb2bbba451857aadfb78384074612778a", + "4e6cc2bcc15a46d51e88958d", + "3b3186a02475f536d80d8bd326ecc8b33dd04f66f8ba1d20917952410b05c2ed", + "05d29369922fdac1a7b37f07953fe175", + "6380945a08977e87b294b9e412a26aebeeb8960c512439bac36636763cd91c0c", + "1029a3c4be1d90123c1b404513efde53", + }, + { + "df25ea377c784d743846555a10cfaa044936535649e94da21811bad9cea957b5", + "35f5f8e950c1f57ad3dfb1fa", + "98941a807ac8f16eef0b3d3c7bbdfd55d01736c5b3360d92b4358a5a8919380b", + "28eb4677110ccb6edc8d2013dc8f46ec", + "24a07532e981aaf3106eab8dfbb2d2078342e2eaee027e148f06aca68f6a1c50", + "131373ed4a0e3f584ae978d42daa6f3a", + }, + { + "106168ea651f22c54196a06f1a10bcf4e620d93e4dc0824d798f44f9219c6177", + "4064dcbd631cf20b05ae22de", + "b0d3da2b96b8889c92e445abbea4c6d0d5d44d7fbcc7dade4c92f6bcddbf06e1", + "a36e2fb9cd96a8ca9ae2b193aa498efd", + "f55a6d8a6965ea451637bec7548cfb1ffe59fc0ce6ea6a937cb5dd32b3d45d5f", + "8d1bf2715041f817f11631fc9910c629", + }, + { + "272d1649a3dd804de0962d3e07064a7054c00a6234ab1b0cdcf685ab394837e5", + "955b5897f6b9806bbec5c33e", + "36e57c29c08c51ad7fa91c0416f976cfd011780eb44cc5abd34c7b431b093b8d", + "33e618ecbbe5eb0566df21c3c34b7e25", + "cd6aeb345081dc0bb2c8b4d19b280658fb87c0f2bd0f4c9da694dc1feeb32f4e", + "dd37eac6bd6a4d3618241738779735d7", + }, + { + "3dab6a51bb7af334dd4b79a7d139550c88f0778d43c21fc4ad33f983a13515cb", + "362eaa67cab3d1ed48e9f388", + "3eb7f5f0a4ca9aa7000497602c6124433a60a8fcd91b20175b4ee87e6b10a2d7", + "52852150786e6547a2618e15c77110b6", + "cc3316041b88733839249b756ffa00bbec6211942f604f26c4a35ed32e6eeaff", + "5936c5500240d50c0da0fcdc248f176e", + }, + { + "0ea606521b935d5b4b66df89fb372d35c4d6d2c03767367e38de0d4c27761d56", + "0d3168318a4f76392699640b", + "f450b36d6c49411897bce39001d73ff01b5e8566179e36dacac7064cab5c6270", + "3bd8849070cf034c4298f40f33b0b839", + "3b15fad18726c4eaa70502b3f3b32c5092d1d92835e6460665fc50dda953a191", + "11fd3fddf61e010c17fbedd4bd5fb012", + }, + { + "c8c4f9e0bd289ef1bd16104a8074fb073dd9035ab937ab076fb5801e2295aa2f", + "be699d9d98ec1f724da8bd0f", + "49fe9407a719d41e658587809cfed7a5b49941c2d6378f3c0afe612f54f058a1", + "a985c7489732038c3190cb52be23737c", + "17a9aaa6a3c68ba1f6cb26fdd6536c207e3c9ce58f43e4ecfd38d3387a798a0f", + "d832cb4814142562fedfe45b36126cb8", + }, + { + "52d0f20b0ca7a6f9e5c5b8549d5910f1b5b344fc6852392f983558e3c593be24", + "d5c618a940a5a5d9cc813f27", + "a9fed8a29355685321f978e59c40135309306cd41b25349fe671dc7990951c68", + "61823f7e39ed76143ca7249d149bdf57", + "509c540e558d0bf0a3b776cddfbfddc15486748a7f9952b17c1cbd6869c263f4", + "42e35ee3f7119f87fb52b5d75b8ab8ec", + }, + { + "5d291a8f1a6433a41076702d9d8a8c196e464550ed900ce8c2a36f4d10483954", + "c4ba743ee692e5d00b5ae2c6", + "605d519b26182458fea68dddd86033390fc545f843ae817850a2a4574add015d", + "878fa6720ab30e0287f6903acd2dca19", + "1c2f153f2374d3945cca9757dc18d9a15a93276526285a6e316ee32a72092c34", + "e7905e856c88c6ece4bb47781becf923", + }, + { + "09e2724d4017cd57e967000e4da2cd5c5c18ccfb06c33b7ce62a7641e4bb0b73", + "9ea18b420a10177289ab370b", + "6f5dfa86d5df4febd752265c56390049e7cda60c2644c84ab413932faad15b15", + "a8e77939423d5894d307fd60278d162a", + "35e37a9b913eb58b72262e92d7584d44bf9a8442f1b2f3da3a5d05ec6a2a31e2", + "1a95023b1a4a3e885520ec79e1a3aef9", + }, + { + "8544a9f4f6c0efdff3da90cfa3ee53fbe1f8de159d29537c803e1651da153718", + "be406029a1d0c25d09af94cf", + "7e88a65646ed138b7c749366d16e41dbafd9987ad2373bb9d0b6ce0c1a4d6661", + "599dbb73897d045a1bd87385e60323a2", + "38ffbf9ffff8d6a92090584e6dace1c6a47d3d5709a25e470557d5c8f5dd1851", + "d5b2e83c47df404de9a7cd95d3cbe7ab", + }, + { + "35b9d2a5db3b06e7720cec794dae615029a491c417f235498e0496cd8183d1bf", + "b382987916e19752dd9ecc0c", + "76b290496901c5824ad167433dbb6d6b5856d41913ee97ec81e70cf6a170e35c", + "e0aa3a1f1df601366c59a390f4f06c3b", + "78347400d6799e77e11e76c0ecfd311becf31f74f14b3a71e6d526ce57015c8b", + "bf8dec2feac7cfe9f330bdfc92737b33", + }, + { + "d707eab3c167b73efeb08c50e12b1569a275487ea136f52736c0f3ce66b69fa3", + "11116f34182e52428642e747", + "a0c4818362035b16b50de445d558ea5cf8844bf5c84b96232999a2279806cc45", + "ae9f90331800c358716c92667f79f748", + "91c77404b20028ef0fd4dd7f8b65b6594af94a1e7fc79cfbdb108265354fc71b", + "6c3410d4b915dbad745715202c04e9a4", + }, + { + "405d13ee48d3b9fc26bcfca776b2af6c745d8fc34171622f8c6c4be5a54b8b65", + "add1524abb1b846f0f6577da", + "e06475990d6e3990266de1bd025c3b1910c0736c81050885f2bfc13ec78e9d96", + "0b1c4c3ba877bca5846b2c1f2b0e2105", + "6399f7e6d6c680fc41bac8bee3836b9a4241403d5a19e4919f396ce37b238d38", + "e754f400d76c76e03c63ea88cf64ccba", + }, + { + "5853c020946b35f2c58ec427152b840420c40029636adcbb027471378cfdde0f", + "eec313dd07cc1b3e6b068a47", + "ce7458e56aef9061cb0c42ec2315565e6168f5a6249ffd31610b6d17ab64935e", + "1389b522c24a774181700553f0246bbabdd38d6f", + "eadc3b8766a77ded1a58cb727eca2a9790496c298654cda78febf0da16b6903b", + "3d49a5b32fde7eafcce90079217ffb57", + }, + { + "5019ac0617fea10517a2a2714e6cd369c681be340c2a24611306edcd9d5c3928", + "fd1fa6b5cab9aa8d56418abb", + "4349221f6647a906a47e64b5a7a1deb2f7caf5c3fef16f0b968d625bca363dca", + "953bcbd731a139c5de3a2b75e9ffa4f48018266a", + "dbce650508dab5f499767651ee734692f7b157341977692d2ca879799e8f54aa", + "20239e97e2db4985f07e271ba545bbbf", + }, + { + "c8cee90a8b9ad6094d469e5d1edc30d667608e89b26200cac77efd7e52af36fd", + "5a1aa9c8e635281ee1fb9df7", + "728d9221891bd75c8e60b7dd6f53edcfd1ab1cebc63a6ce54be220b5b362233b", + "0538b3b64da72aac591bc59991a140eff206b3f7", + "b753eb6b87f0c8778c3ea3a74fba3b31ced6d2da94d43d482ab0431806a80d75", + "b21d29cf6fd04571ffcaf317d384df11", + }, + { + "b4b77710f86ffd463fc14bb9eaa4424b2b3a581778e5511a094a08fb204cab59", + "3e4b12bf55633bf48d104620", + "6f44a8df11dce27df075ea10ddeb7566ca6c988a334cf56e8540f71166d7c0d1", + "3e3b4c9369266266098326217b5677a40297cb87", + "31f82f5cb1cd5c4b4819b61aa9377abebe8fca76978b1199178462c7c1c4e2b2", + "1b3a535768e8480d75ec91b2e7b55efd", + }, + { + "0a8fb75498a139223c763d52bbe3d42f813de370fa36b81edc4553d4219d2d5d", + "7d6cb675fded3efef908a11a", + "81b69ca354de3b04d76ee62334cb981e55f0210f1174d391655d0f6712921a0e", + "2314ad86b248f1ed2878e7c562b533bf2dda5a29", + "6a23d30737f4a72b1e07ba23d17fde43a4498e2e60d3e1b0c8e6ea26a2bb331a", + "7fcac442fb657910c62a74b1d0638902", + }, + { + "a84315058849690c2b88062aef81134d338526baa7090e865fcaad94bbf51ca5", + "a487cfa701447b495aab41e0", + "18074e14dc0a14d4439f1d710927ed8c200154c8492f77f10f653e0bf6070ca6", + "7c4416b0cf13ac76bec6687a6840dc703e91bb86", + "80f40b7e335d40fc5859e87f385e14798a253818e8ad73b1799c1419638246a4", + "b4c7c76d8863e784eb6029cd160ef6de", + }, + { + "82833bcaaec56f6abbb3378f7d65daf6e6f6f2a0d1e858c7219f53a7840f4e00", + "4bc9b028a00be8feb5232978", + "d9b2383123a27a93bce85add8392b938093b40e82f182e484bf4f84fa3bfb3f0", + "76fc8ed57154cd8a9b3d02c87061edd2a8157811", + "383efe971438cd2b2cbb399d74a3fb3eedd394f1862addc58e9fdd4c421402d2", + "fd803c4fa917f7ff649a6aac013a96b1", + }, + { + "ee4634c49c5672c660968a42862698f6c1b2c7b79efd1605c24af8ff9ff8366c", + "877912b2f35888d2810612cc", + "9512a5268a0cb3fbd916ddb820dce77f1e0dbb52c8ffc7a74be077119e9245e4", + "93bd669db4f1354ef6c8addb0cf729e46d5c3846", + "69af0ac954e0d69043851d89f1538ebcb42769857eba27dbe4ad4fd60fd75537", + "3ee443873e2f7f7ea601fe3d7e5211e2", + }, + { + "442f4bbc468433411e49486a15c5eed577f5007380ff126d9974f3bd3fe4e3c4", + "1e7133aaa8af826dc646ec62", + "7f8069e5c356ece135d98bb563c8b411ea90ea3b673dfd92e1ba9c459efae61f", + "577662f611446b5b31814930029edb949a30dcb9", + "b962952750eb2bce313e1a85a72e3c9cc2ea7e58c353ea37df2c9f0723995ca7", + "e633fe9f10cedf0f0d02aa2ddcf47d86", + }, + { + "3a29aec009f44fdd2b1bc07cb7836f29d8589774bd0d74089a68d9e67827d6d8", + "a42c5fb61573c72688ac31d8", + "d36eb81506c0a0e4ebcac9b4b1acebb38b94b8f2ce3d6f85a8f705fa40cb987a", + "2ee2582d544e1663f1d7a0b5033bcb0fce13b3e5", + "179ef449daaacb961f88c39b4457d6638f304762bd695924ca9ebd01a3e99b9f", + "1fee176c7a5d214748e1d47b77f4bcc8", + }, + { + "ed47660054294f3c913c97b869317cbddc395d757bef7d29b8ccbdd2c54e99d3", + "770a00642c67eff93c9f1f56", + "034193397cbd0eb414459273a88808db2d0711e46f80d7883212c443d9e31b54", + "06210fca2018d2357256c09197730e9777caea96", + "6a250ebd3390229d46b691142743dba1c432c0feaa0f0dd19d0ce4e6a8918d80", + "a5f6e975592b472907c34b93bfc69dde", + }, + { + "9539844493362dc3f913308f7e12a2a0e02afdbd8869877b30ce0397fb0349dc", + "eadda3132079195a54fde2c1", + "62349a0b1e40a9f31eadf27073682da15f0a05cf4566ee718b28325f7d8eaba0", + "0ae4a90cb292c4e519b525755af6c720b3145a1e", + "ad6c9521bf78d1d95673edd150f2b8dd28f10625d67fa25f1fb42d132ba7fcfa", + "916242a9cb80dffcb6d3ae05c278819a", + }, + { + "3b4eb08d27ae0b77605ae628a1b54a5402026550679fab0a20752bee510d3d92", + "28a20c40f49a00493da3488a", + "c8a47edcf84872f53f96ef41ce05ca37cbc3854b556d6e606f0a8a32d0861907", + "0591390e2d14ebe62aeb1741c26448ce55b28cab", + "a3e8cbf84df8529838f79315c7f1a0b7bb3ad4c4d036ec317b1810b274ee3080", + "0a8f66daeb7f0a88756909c4e93fcd36", + }, + { + "0cccea8f1f6ce141690e246cf4cb9f35b66baf6e6986b8e0b4cfdd13fcdbc8c3", + "929f07be5aa7bae7607bae3c", + "9fa5214c599523c695d37937b02f78837f6406960b2a03bf9a6db34bd35e3dc7", + "b851e610be70a994808b34ca73f45f1ea973de65", + "917ecc8b00b53f7fb0732d66848a106e91f60acf2dcf180832a74d5993c658da", + "2959e20746bbb6ab66dfd29b9477799a", + }, + { + "ecbfaef2345b34f31fbf6d68efb385e5833df8b6e6ae621ede02baf9735d2dba", + "50c3527b1a35ccb318b446de", + "634f6dd60783d1f952353fd1d359b9ee4f4afa53cc13e81c5adfe24b46baf08f", + "f8981548bde6ee6c1745f947de191bf29997fadf", + "705e5f67ab889ba238118e3fd9b90b68be801995ae307378d93b50977cf90588", + "12d14468ac18cc9936bd565f8ad42d0d", + }, + { + "dc776f0156c15d032623854b625c61868e5db84b7b6f9fbd3672f12f0025e0f6", + "67130951c4a57f6ae7f13241", + "9378a727a5119595ad631b12a5a6bc8a91756ef09c8d6eaa2b718fe86876da20", + "fd0920faeb7b212932280a009bac969145e5c316cf3922622c3705c3457c4e9f124b2076994323fbcfb523f8ed16d241", + "6d958c20870d401a3c1f7a0ac092c97774d451c09f7aae992a8841ff0ab9d60d", + "b876831b4ecd7242963b040aa45c4114", + }, + { + "07b3b8735d67a05632c557076ac41293f52540bac0521573e8c0414ec36f7220", + "0046420eee8d56de35e2f7d5", + "4835d489828325a0cb38a59fc29cfeedccae25f2e9c399281d9b7641fb609765", + "d51cedf9a30e476de37c90b2f60882193630c7497a921ab01590a26bce8cb247e3b5590e7b07b955956ca89c7a041988", + "46eb31cd98b6cc3ecafe1cd1fc2d45fa693667cbd3a7d2c5f8c10296827ea83c", + "36cd4e76dd0679887477bfb96cf1c5f6", + }, + { + "0219f14b9ca6506c1388177c4ae6ee64ad2ac0256ebbf8c219b40df6e8571d70", + "3420a87c4b9b23ba81eb221e", + "348f7a4ca944f252e4562c66dacf01fb10d70a3c8f5b280a2829567a2a94e47e", + "54dc2277b8d1aae660ffcc326e2c5d9e16b8ca17288601aacd02b3eea8bc5cc60718639aa189506b7b333b87da86e940", + "58c92119bfb6ad53e387cac6728ce73b82e18f6e5bfbfca5f5acc370cd8c76a4", + "e7f9e3e3dae6d0a3470d8f597291180c", + }, + { + "87440ee7f6febf3e14ef0a917a87c5d61260fefc979eeaeac0a64662c98cb4f7", + "7c48bc75e58f21cc9989d691", + "f8e40a6a985f424898a7996307a077c487406c5312eefe055ea5b17a4b22087b", + "e0c66e5db1c7665a015ba7e21e08ff3de5b4a5fcd5d35e41db7e97ccd0c3df657ae803c3529d375420ad75ac9621cea0", + "5a118fc3dbdaf6bc9490d372b7623af76da7841bf9820a9c6624a15eff6a69c2", + "0ddc2ae087d9b8ca2249ea5aa3dbd4c7", + }, + { + "b12425796f63bf5435740f9039fa66367fc7702d675c61b2dec4435feeea07f8", + "f26727053e6d67c2d2bf1e69", + "9df079d98a6e4dbe277a8545f4f6c19fe130f4a84bdd6b760a049fba21d4e99a", + "e50fca2e5a81ae56ca07f34c4b5da140d368cceab08494f5e28f746cbfefdc285b79b33cf4969fe618b77ab7baafe271", + "845f00202e2e894516d8f4a4021430e531967098c9a94024c7113c9a1b91c8cd", + "3566c75967ae00198e39ebe9f0ac697f", + }, + { + "674dfb625b8b0ce1dadbbbcbf7e151c5b2cecf0a1bc4e07f4734f3a6792350cd", + "99e7b76e6686449616ad36c7", + "0a744a72e536a0484db47091609228d803bcfa9a8daf579e3039e3645f7688e2", + "2ab1573e5a94ca2997590840bd9c62e6add55e4d3eac12c895d2ec637791caa41d46ed91e6064db627e1fbef71d31d01", + "e550ee77069709f5199be3c618f2a4178e4d719ab73df41cbfe32c52777138ff", + "134ac3fa8bd4af7ee836f4a3421d9e99", + }, + { + "10c1de5f741560dae5be23e15649f0114db52949560bb6cdf2d4883247392ee1", + "7cf73c1472cd60d8d35fde51", + "05becd366aebaa2e609f507dd2dd4433b2aba0634b0eb9a5bf7ded4cc8fbed72", + "d3fa8b6f607a20a18dd7eac85eabef69d4fb5a074d8e7d1bf15d07732ed80e020163b475f209c4b0cbfa00d65d1e82ef", + "280f0c306e1a3aab8ff9ab3e4a9adc2e9ae4e4e1a06f190d11b3b4dc4280e4f3", + "3bc8be845bf5ff844c07337c2cfd5f80", + }, + { + "e8d6ab5e514645dd7e051b028f5bfe624c72f44f30279577365aea65d4a8a819", + "30b0d654ee5b79c2cfb24100", + "19be7e0feedd402bf4b05995a38e5f423c033de016e3ae83ea8c3c1cba658e1e", + "082e534bf860d0061ec2dad34d6b0db8cba1c651f2c705356ff271e47365b0b18f8ddb3a3c2269b437fb0703c9ad367a", + "8573800c737d2480b2885ce714ac6a15f23287b1d12949a3d76effbe82b593bd", + "50110884292151f51213ccb2fe934d88", + }, + { + "2d1eaf5e62ca80fd1515a811c0e4c045aba8c769df03d57f7493eb623ed8b941", + "abf190b05df2e6556cb34b47", + "9c7cd522ed5c0af3e57da08d2653ef77eb973734f360572bbcb15a2a6cbd60b9", + "75ab9bd39c24e498a54d85a8b76a4126dc1879f2a30270a42609763e045a4021785b6134f283fd81c195c3188e78752d", + "5fdfdaccb105e5408c375af8ca63a67afaba7ccbcd591acca9a86d92f92fd0f7", + "49940b7610618b3a5cb3912339e06b3c", + }, + { + "b6020677e098c59e19eacf26732473d843aafd6bf999c707bb08ab896406918d", + "807167ef2b84b32d1df4a94c", + "3199d6b95d133ba5b7eadc420080a0b249c84f4960bd369d6bf9e313627cf670", + "06225d410ada3e04157da7e5481d7d9f2285845824aac0c0e033244ed4c1b19615354c224ba8b7093c5651d10ef952fe", + "4618adbfa5ea4ee260e310140b385232b7c3ad46887aa2107f7dafffd85cda22", + "2d76307bf55826dfeb58a171b6fa80e4", + }, + { + "f75456c4918d0bea72f546a9a1e2db0b6ab9bcd9782b5eb1c2700e729921d666", + "c75b83134e7b9188e5800ffe", + "f9a23abbd0f2b367ce16c2a0613cd293ac7e66cbe020eaeb5deb09d5031fd992", + "5ef46c9eb5865cab2c8a35f9c4c434614a6c9f1b5c479739f7434d3326cff1e70b0d2877c084a71c7a9d33d258d304bb", + "56e4efe6c0944153b65ed4909845219842b9b88f54d8d8394051132afb95d391", + "255e2c8c43f8979c440c3581bff6cf65", + }, + { + "9831c5c12e53e8a961642e93ddb2e13a38506acd0cf422e6ad9fbaeabce7b3f2", + "bff29de3d6869e5fa75b96f9", + "b1edbed58ed34e99f718db0608e54dd31883baec1c8a0799c4ff8a5dad468de4", + "67ebeecb74cc81fdfee8065f8b1c1f5012bf788953bec9525e896611b827084a8e6baa0ce40ee70bc699b152bc6ed903", + "13845db7e33bab1f5766a7fadfb942748e779753d97f143e645ccfcbd7c23b23", + "10dbe8a3e1901c8b88b0ab1441664d32", + }, + { + "a02c2d4a43f0f7f1db57c07f13f07f588edfe069a9d83c9b76e9511946c4fc48", + "84677438592dcaf683d08a67", + "ad5a884dad20ffa88794c4fca39f2ca01c6f67657ab38e5cf86ac5597318ef07", + "d5dea0cd6080af49a1c6b4d69ace674a622f84f9f190b2db8a22e084a66500b52ff20a8d04f62a7aeaedb67e2258598c", + "83da16ae07ee0e885484c1330a6255a6e7ac22915c63cbefaabc6f9f059dd69d", + "42c4a270705493d85ad7bbcfda86dffb", + }, + { + "feba412b641bc762bfa79ef17c3ea16e5630605470db096e36ffd33813641ace", + "e3633f21e7c63a459d5d1670", + "9326572bd33551322ca42fcfb7cef8be41d78725f392c34907ecd1fe5572bff1", + "b7ee0233863b0e185b2f46181eb5fc0718832e1e76e7d4115a4c1f7e998c41319ccef44f5db89e8c5f077bd553d7bf42", + "5019ea98cc9dc9368432c6d58f9e144f55446e763c0a8b4d8a6ce26f3dd95260", + "1010beb9cd6e9b611280a5395f08bca9", + }, + { + "21bd5691f7af1ce765f099e3c5c09786936982834efd81dd5527c7c322f90e83", + "36a59e523df04bc7feb74944", + "77e539dfdab4cfb9309a75c2ee9f9e9aa1b4651568b05390d73da19f12ccbe78", + "48aef5872f67f524b54598781c3b28f9cbcf353066c3670370fca44e132761203100b5e6c7352a930f7e9cbf28a8e1ce", + "c21483731f7fe1b8a17d6e133eda16db7d73ddd7e34b47eec2f99b3bbc9669aa", + "15f9265bc523298cefb20337f878b283", + }, + { + "26bf255bee60ef0f653769e7034db95b8c791752754e575c761059e9ee8dcf78", + "cecd97ab07ce57c1612744f5", + "96983917a036650763aca2b4e927d95ffc74339519ed40c4336dba91edfbf9ad", + "afebbe9f260f8c118e52b84d8880a34622675faef334cdb41be9385b7d059b79c0f8a432d25f8b71e781b177fce4d4c57ac5734543e85d7513f96382ff4b2d4b95b2f1fdbaf9e78bbd1db13a7dd26e8a4ac83a3e8ab42d1d545f", + "e34b1540a769f7913331d66796e00bdc3ee0f258cf244eb7663375cc5ad6c658", + "3841f02beb7a7fca7e578922d0a2f80c", + }, + { + "74ce3121c18bbff4756ad10d0f293bb1ea3f93490daad0249cd3b05e223c9747", + "81107afb4c264f65ae0002b1", + "7a133385ead593c3907806bec12240943f00a8c3c1b0ac73b8b81af2d3192c6f", + "f00847f848d758494afd90b6c49375e0e76e26dcba284e9a608eae33b87ad2deac28ccf40d2db154bbe10dc0fd69b09c9b8920f0f74ea62dd68df275074e288e76a290336b3bf6b485c0159525c362092408f51167c8e59e218f", + "64bd17f3e8f71a4844b970d4ebc119961812efb9015b818e8d88b906d5efbd76", + "46d0e42aa046237efee17eab6d9cfb75", + }, + { + "4c669a1969c97d56da30a46236c15407e06aada686205eed3bd7796b02c97a4b", + "0a07758d5ad44766e051da6c", + "cd59bb307be76f11304f69ac8b151e1628ac61dec81086e7f24fd5bd83df8856", + "0b8277114cbf7ee16c9bbda1ab40419a02e469ebb295883f0a833c3cb755ded44a3c410034a201f7d91b43519fbabb55b974834be5d5afc7aea7c84b44a14e8e16dd68a3e8cc79ad2bf76d0ceb33d58ddb6378b45681ceaa0f2f", + "bc62ce0b23cf4aa8e16b4450c8ab8c629a53949f01e68b875ecc5c45ff6d3ab0", + "5ffeda728914031006f271c3d9986f2d", + }, + { + "a23296632913051e438114deb782fb955b75acc35e86e7e9fdaf4e9025b87f12", + "ad50db40f80f15214e43ffd7", + "b71116cc27b5a5844d9b51a4a720cb3f06d55d6aaeaeaf921236424db8617204", + "a6f96f5a89bfd8c8f34cd07045270d80e58ea62f1f0b10f2506a954f272af0bc71df96ad3fa8eed52c45e0b868091dc4f75d9e0eaf15a0a858a71bf7036c5607110cbfe47ad9b6d02e942fcfae88d4c792a1f824e60e3cf98a37", + "8e9e4b0ac93ab8e73688d6b4723d8c5ef399ead72246c7aa7a0783a8bfe29936", + "b7dea91e4b357ce805edeea3f91392d2", + }, + { + "4036a07bdd4e10eb545f3d9124c9f766d2d0c8c59fc0d5835ac55dcfaebfc3a1", + "815828fbb964497cdadccaad", + "717f22faff8066182e46d32dbac7831ec24272871c45c7c12ca779f868e7739a", + "0bc0e3931388bcb091463bae2989a93bde103bc14fc5d39f9448ca90367e86336b188f73218b2b0ab72a9a564ad5ff32544c5afeacecadfa55d2fb66925a88299dbf58f425cf49e31f42ac4edace743fdf9680d20ec845afc278", + "e8c3b0342964c7a71f084d44ba2f93742bccd9821b30087d11b53bbe8b085808", + "86ddd9c469849cb6b100c339ca62717d", + }, + { + "714bc3ba3839ac6707863a40aa3db5a2eebcb38dc6ec6d22b083cef244fb09f7", + "2cfe1c51d894e5ef2f5a2c3c", + "0cc4a18bbfea87de0ac3446c777be38ca843d16f93be2c12c790fda4de94c9bf", + "84e3d46af2ecb717a39024d62bbc24d119f5aff57569dfef94e7db71ad5aff864abacdc5f8554e18ed5129cfb3366d349c52b3d1a111b867e8772140749e7f33e2e64259968486e32f047d21120da73c77757c4595ccac1b5713", + "0857c8fb93412fde69bad287b43deea36506d7ee061d6844d00a7e77418f702f", + "24a9e5290957074807d55ad705adaa89", + }, + { + "2f93b5a37be1a43853bf1fd578061d0744e6bd89337cde20177d1e95a2b642c4", + "52b6d91557ae15aa792ce4b7", + "0fcaa316a135d81052509dd85f688aed2e5fd4261e174f435cf1c4115aa6f354", + "992ba9efa287a5c3e5177bd4931af498982a1728b56b3d7c4b28476905e29f83326c4f3223a28844fc9b9d84d4f6cd859074aff647a35dde28e1ee889faab3bb9c09a4c3fbf2a16460d48a40dc53378d4673f4325e6aa3992a71", + "f99774cef3c15af33cda3cb449cd335ffe4f27435edf83aff4a4f4c2d2df6647", + "c5e09b83b1c2cc81e48a1f7c62b7bb35", + }, + { + "531ca845af7bf731c49c3136407322b1c0f6b32b8eaebf03744b2edc1202d096", + "baf13b85202bbfc899fc73f7", + "d4e9783f537c738200e7ba7526605f359a98c9f10cafaa2f433c40f3e5081a36", + "e2ba9cf548b4f6fb206f224250d85af327fde8d08916686ae770203dc29c694f8902b02222fd287f28ce6091006368c3949bea2937ff0bdedb7dbbd013ccf0a15ee0af8c56fe211b7c311e182f27707f59e09492b3604e80c6c5", + "642f544929202128a783b985d36f60964c7d78e1d41f5d1bfe27de3ae0180df3", + "e333528c59ee1909750ed72fd1309ee1", + }, + { + "3add17568daa9d441aa7a89bf88fa4e6998a921d57e494a254080445bc9b6f35", + "b290f4a52496380218c3dcf5", + "2c6908cb34215f89a3f3a3c892e8887f2efa496a15ab913fc7d34cc70c0dff79", + "0bc9cc13eb2890aa60515c2297a99f092f6e516236c0dec9f986ea98b8a180680f2c6c20bd4354c33433a4c6f6a25e632f90ebef3a383c3592268b483eebf5f5db006929e7987edbcac4755d3afd1cdf9b02954ebd4fef53d5f6", + "2cf3beae94fd5e6a4126a8ec8a7166b0aacb8b8bbce45d6106b78d3456d05149", + "ce1509b1bd5c47a593702618b0d79f6c", + }, + { + "1c1dcfd4c4cc4beb71d6e368f739d8e681dfe48fbae39728386c9dfc08825743", + "0deceb69ce0dc776a3a71b4c", + "b12700258ace7b16e40f4e86886892837168b256a170937a3b89063a9a0d68f7", + "a3af2db672292431fa8ee1fa5b197593b13e58a68c4129401d0942474d5f4cbe62093aaa5453f6d355d2f4b6dc8abde58ce863d1be5f9ecf39730a49565b3b6882a0a641c0b5d156a4107309dd150fd1f1634ea4e5100b3d4f88", + "3ea7f1c0d613323e095558ddde53247420fa0eef17997a1e9c5ba93d5f24c46f", + "70534a87c258905d35806f4439f6906e", + }, + { + "f2724153aac9d50f350878d3c498bc3dd782d90cce5cce4ae14126c0e1fbb3cf", + "1c07b61c5316659bad65cca9", + "067ccbd0206f1f05d2872210dc5717a0585e8195d72afd0c77da11b9b3710e44", + "e69db7fcd3b590a6d32052612034036d5c8bffa5e5e9b742ffe75a9fbba89dd576dec08154cf4e6d36f0fdd4419bdf50adc1974a80ea313421c926dffa87565b4bd0c1e84f2ff305af91877f830f145bb13dfa7efa5e3aa682e6", + "9aba433eef383466a1291bd486c3ce5e0ed126010e0a77bf037c5eaed2c72460", + "f30a155e35400bb0540883e8e09b4afd", + }, + { + "a2544eb2047c97cfcaf0ec1427c5df395472285233a93ffccda8fee660aced56", + "a751bea3c769bb5db25ab109", + "b9514cc01a357605918f9cc19123dcc8db328c605ca0eb9d69d871afeea1dcfb", + "eb9e09884de1454d6aeb0d6c82375f2428992031ea6cabf6a29aa6a4de49a353e4ffae043dad18ae651b20b7bca13f5c327ca9f132014bfa86e716d4724e05a1ef675521a6607a536756e6a8c16bb885b64815f1eb5ec282ce8e", + "cb442b17088f6ac5f24c7a04f0050559386f3a57131b92a54142c7a556fdb935", + "5f80c5c0cdf0c7890bfd1fbd58c33081", + }, + { + "ceb057782efb1e85d805448af946a9b4d4128bf09a12473cce1e8ef8bfd2869d", + "406f9730e9b1e421e428439b", + "0815723d5367b1328cac632fa26e23f2b814a1d59a2971d94d02ebd7ecf5c14a", + "0772ae00e1ca05d096cf533fd3de2818ac783edfca0eee7686a6290f3357481e883fb2f895b9a4f4004c56b8a1265242cfdf1fb4af7edc41ed78c5f4ffe9c4080d4a17318f9c56ecdb3a06f3c748535387d56a096943a76d46f6", + "9d82355d8e460896201be15fd95fed48a8524666d987ab078550883034d0253c", + "a0bee8ac0e636d64d3b1eb33fd6f21d4", + }, + { + "7dbdbdfe36d4936940ad6d6f76c67c2851a0477f0aa7d6797bfdf2b7878ef7e0", + "bc672b224b4b6b91fc3fd697", + "dfea463d35f0fa20487b606d6ccfd422a5b707f16527b422bf1d68a77db67e9c", + "faacb84ec7cfadd731de2f7c0892d7e38cbfb782b48412331af0b3eab602a722cad1069dea0052beb5ca70e2ee476c340c6193bcc60f939aabe446bf3ce958fe11a2ffc90241f0a7e4e274f0c1441def795893895bd848bf0f0e", + "0ddc2281b1fcb904864a43657bc72357cf73fc1f16520caad7cddde10f846bd9", + "9d96699450aa9707695e5de56597101b", + }, + { + "187214df6e2d80ee8e9aae1fc569acd41589e952ddcbe8da018550d103767122", + "56db334422b6c5e93460d013", + "53355283186719a9146c7305e3d1959a11ccf197570b855a43cbc7563a053c73", + "cbedb7ccfbf56dfd72e530bfe16b4f5aac48a90204bcb7a8cae1046010882cfc8b526e7562a7880914e61b60cbd605165242737d85eeed583c98cab3443874e5989ec9cde001adf7de9c9967de5178f75b8412b0c4d6fec5af72", + "c2262585966bc9c23dc7cc1059d060211e86f3b3161d38b153635fbea4a28c05", + "a94297c584dfcd10ee5df19a2ee5c3d2", + }, + { + "1fded32d5999de4a76e0f8082108823aef60417e1896cf4218a2fa90f632ec8a", + "1f3afa4711e9474f32e70462", + "06b2c75853df9aeb17befd33cea81c630b0fc53667ff45199c629c8e15dce41e530aa792f796b8138eeab2e86c7b7bee1d40b0", + "", + "91fbd061ddc5a7fcc9513fcdfdc9c3a7c5d4d64cedf6a9c24ab8a77c36eefbf1c5dc00bc50121b96456c8cd8b6ff1f8b3e480f", + "30096d340f3d5c42d82a6f475def23eb", + }, + { + "b405ac89724f8b555bfee1eaa369cd854003e9fae415f28c5a199d4d6efc83d6", + "cec71a13b14c4d9bd024ef29", + "ab4fd35bef66addfd2856b3881ff2c74fdc09c82abe339f49736d69b2bd0a71a6b4fe8fc53f50f8b7d6d6d6138ab442c7f653f", + "", + "69a079bca9a6a26707bbfa7fd83d5d091edc88a7f7ff08bd8656d8f2c92144ff23400fcb5c370b596ad6711f386e18f2629e76", + "6d2b7861a3c59ba5a3e3a11c92bb2b14", + }, + { + "fad40c82264dc9b8d9a42c10a234138344b0133a708d8899da934bfee2bdd6b8", + "0dade2c95a9b85a8d2bc13ef", + "664ea95d511b2cfdb9e5fb87efdd41cbfb88f3ff47a7d2b8830967e39071a89b948754ffb0ed34c357ed6d4b4b2f8a76615c03", + "", + "ea94dcbf52b22226dda91d9bfc96fb382730b213b66e30960b0d20d2417036cbaa9e359984eea947232526e175f49739095e69", + "5ca8905d469fffec6fba7435ebdffdaf", + }, + { + "aa5fca688cc83283ecf39454679948f4d30aa8cb43db7cc4da4eff1669d6c52f", + "4b2d7b699a5259f9b541fa49", + "c691f3b8f3917efb76825108c0e37dc33e7a8342764ce68a62a2dc1a5c940594961fcd5c0df05394a5c0fff66c254c6b26a549", + "", + "2cd380ebd6b2cf1b80831cff3d6dc2b6770778ad0d0a91d03eb8553696800f84311d337302519d1036feaab8c8eb845882c5f0", + "5de4ef67bf8896fbe82c01dca041d590", + }, + { + "1c7690d5d845fceabba227b11ca221f4d6d302233641016d9cd3a158c3e36017", + "93bca8de6b11a4830c5f5f64", + "3c79a39878a605f3ac63a256f68c8a66369cc3cd7af680d19692b485a7ba58ce1d536707c55eda5b256c8b29bbf0b4cbeb4fc4", + "", + "c9e48684df13afccdb1d9ceaa483759022e59c3111188c1eceb02eaf308035b0428db826de862d925a3c55af0b61fd8f09a74d", + "8f577e8730c19858cad8e0124f311dd9", + }, + { + "dbdb5132f126e62ce5b74bf85a2ac33b276588a3fc91d1bb5c7405a1bf68418b", + "64f9e16489995e1a99568118", + "b2740a3d5647aa5aaeb98a2e7bbf31edaea1ebacd63ad96b4e2688f1ff08af8ee4071bf26941c517d74523668ca1f9dfdbcaab", + "", + "e5fec362d26a1286b7fd2ec0fa876017437c7bce242293ff03d72c2f321d9e39316a6aa7404a65ccd84890c2f527c1232b58d5", + "dfa591ee2372699758d2cc43bfcbd2ba", + }, + { + "8433a85f16c7c921476c83d042cb713eb11a83fc0cffe31dde97907f060b4ee9", + "55ffc85ffd1cdea8b8c48382", + "23bc3983ba5b3be91c8a6aa148a99995241ee9e82ce44e1184beb742affbe48f545c9a980480cf1fab758a46e4711ea9267466", + "", + "2f4bdc7b8b8cec1863e3145871554778c43963b527f8413bb9779935c138a34d86d7c76a9e6af689902f316191e12f34126a42", + "7dc63156b12c9868e6b9a5843df2d79e", + }, + { + "5d7bf55457929c65e4f2a97cbdcc9b432405b1352451ccc958bceebce557491d", + "f45ae70c264ed6e1cc132978", + "ba5ac2a16d84b0df5a6e40f097d9d44bf21de1fcec06e4c7857463963e5c65c936d37d78867f253ce25690811bf39463e5702a", + "", + "47c16f87ebf00ba3e50416b44b99976c2db579423c3a3420479c477cd5ef57621c9c0cee7520acb55e739cc5435bc8665a2a0c", + "456054ecb55cf7e75f9543def2c6e98c", + }, + { + "595f259c55abe00ae07535ca5d9b09d6efb9f7e9abb64605c337acbd6b14fc7e", + "92f258071d79af3e63672285", + "a6fee33eb110a2d769bbc52b0f36969c287874f665681477a25fc4c48015c541fbe2394133ba490a34ee2dd67b898177849a91", + "", + "bbca4a9e09ae9690c0f6f8d405e53dccd666aa9c5fa13c8758bc30abe1ddd1bcce0d36a1eaaaaffef20cd3c5970b9673f8a65c", + "26ccecb9976fd6ac9c2c0f372c52c821", + }, + { + "251227f72c481a7e064cbbaa5489bc85d740c1e6edea2282154507877ed56819", + "db7193d9cd7aeced99062a1c", + "cccffd58fded7e589481da18beec51562481f4b28c2944819c37f7125d56dceca0ef0bb6f7d7eeb5b7a2bd6b551254e9edff3a", + "", + "1cc08d75a03d32ee9a7ae88e0071406dbee1c306383cf41731f3c547f3377b92f7cc28b3c1066601f54753fbd689af5dbc5448", + "a0c7b7444229a8cfef24a31ee2de9961", + }, + { + "f256504fc78fff7139c42ed1510edf9ac5de27da706401aa9c67fd982d435911", + "8adcf2d678abcef9dd45e8f9", + "d1b6db2b2c81751170d9e1a39997539e3e926ca4a43298cdd3eb6fe8678b508cdb90a8a94171abe2673894405eda5977694d7a", + "", + "76205d63b9c5144e5daa8ac7e51f19fa96e71a3106ab779b67a8358ab5d60ef77197706266e2c214138334a3ed66ceccb5a6cd", + "c1fe53cf85fbcbff932c6e1d026ea1d5", + }, + { + "21d296335f58515a90537a6ca3a38536eba1f899a2927447a3be3f0add70bea5", + "2be3ad164fcbcf8ee6708535", + "ad278650092883d348be63e991231ef857641e5efc0cab9bb28f360becc3c103d2794785024f187beaf9665b986380c92946a7", + "", + "b852aeba704e9d89448ba180a0bfde9e975a21cc073d0c02701215872ed7469f00fe349294ba2d72bf3c7780b72c76101ba148", + "bdd6d708b45ae54cd8482e4c5480a3c1", + }, + { + "d42380580e3491ddfbc0ec32424e3a281cbe71aa7505ff5ab8d24e64fbe47518", + "fbed88de61d605a7137ffeb2", + "4887a6ef947888bf80e4c40d9769650506eb4f4a5fd241b42c9046e3a2cf119db002f89a9eba1d11b7a378be6b27d6f8fc86c9", + "", + "87aa27f96187ce27e26caf71ba5ba4e37705fd86ca9291ea68d6c6f9030291cdbff58bff1e6741590b268367e1f1b8c4b94cd4", + "d1690a6fe403c4754fd3773d89395ecd", + }, + { + "5511727ecd92acec510d5d8c0c49b3caacd2140431cf51e09437ebd8ca82e2ce", + "ae80d03696e23464c881ccff", + "184b086646ef95111ccb3d319f3124f4d4d241f9d731ce26662ea39e43457e30b0bd739b5d5dbceb353ce0c3647a3a4c87e3b0", + "", + "aa28cb257698963dfc3e3fe86368d881ac066eb8ee215a7c0ed72e4d081db0b940071e2e64ff6204960da8e3464daf4cb7f37b", + "c1578aa6e3325ee4b5e9fb9ee62a7028", + }, + { + "d48f3072bbd535a2df0a2864feb33b488596cd523ad1623b1cefe7b8cbefcf4a", + "bbf2a537d285444d94f5e944", + "060c585bd51539afdd8ff871440db36bfdce33b7f039321b0a63273a318bd25375a2d9615b236cfe63d627c6c561535ddfb6bd", + "", + "993d5d692c218570d294ab90d5f7aa683dc0e470efac279a776040f3b49386813f68b0db6a7aef59025cc38520fb318a1eac55", + "8cd808438a8f5b6a69ff3ae255bf2cb2", + }, + { + "5fe01c4baf01cbe07796d5aaef6ec1f45193a98a223594ae4f0ef4952e82e330", + "bd587321566c7f1a5dd8652d", + "881dc6c7a5d4509f3c4bd2daab08f165ddc204489aa8134562a4eac3d0bcad7965847b102733bb63d1e5c598ece0c3e5dadddd", + "9013617817dda947e135ee6dd3653382", + "16e375b4973b339d3f746c1c5a568bc7526e909ddff1e19c95c94a6ccff210c9a4a40679de5760c396ac0e2ceb1234f9f5fe26", + "abd3d26d65a6275f7a4f56b422acab49", + }, + { + "885a9b124137e40bd0f697771317e401ce36327e61a8f9d0b80f4798f30a731d", + "beebc2f5a26fd2cab1e9c395", + "427ec568ad8367c202f5d9999240f9994cc113500154f7f49e9ca27cc8154143b855238bca5c7bd6d9852b4eebd41e4eb98f16", + "2e8bdde32258a5fcd8cd21037d0545eb", + "a1d83aab6864db463d9d7c22419462bde0740355c1147c62b4c4f23ceeaf65b16b873b1cc7e698dff6e3d19cf9da33e8cbcba7", + "4fdbfd5210afa3556ec0fdc48b98e1eb", + }, + { + "21c190e2b52e27b107f7a24b913a34bd5b7022060c5a4dec9ab289ff8ae67e2d", + "b28a61e6c1dfa7f76d086063", + "4e1b9528cf46b1dd889858d3904d41d3174dcb225923f923d80adbfe6eec144b1d4eb3690d0b8519c99beaee25bb50fd2d148f", + "d80657377ddbbed1f9b8d824b3c4d876", + "7126fa807aa6b61a60958fe4cc8682bb256e5bbdc499d04a6caa81b23f9e67d3da4cf1994b5a8ecc7bce641864d0519a6509cd", + "d3e96568f2cd1a48771ee4f67ad042c1", + }, + { + "11c33ae37680130c51ed11bfaf0fcb6ed4fc7d903ff432b811763d2c7ef83a33", + "0f224d26dbf632cebdce3b8b", + "f8a2affe5a7e67f2c62622e4a56804b48e529d1faf9096f94409224129921ce46aed898dd5391746e8170e05f91e0524166625", + "dee803732ff662cba9f861227f8b67cf", + "3856558375c363b25e8f9e9e2eb63cf0e76a1c6e228893c7b22da4a69b682528b4a4ca2b99e7a537390e2d1e05a68f3e39c4e9", + "9b12691b2002ca9227035c68ea941ef3", + }, + { + "3b291794fbb9152c3e4f4de4608a9137d277bd651f97e738afaa548d97b4ec60", + "4d1c69c6da96c085d31422ba", + "21b3ca1f47a0c7f6ebd097eda69d9e5b5fbf5c24d781658003cfd443ae7096be19e1cd3c14fe9738efb00847697fccb466ae1b", + "f3a5fa61a4e987413a8fab4aa51d895d", + "6c1439cd2cb564e7944fd52f316e84aeffc3fd8024df5a7d95a87c4d31a0f8ea17f21442c709a83b326d067d5f8e3005ebe22a", + "e58048f2c1f806e09552c2e5cdf1b9d9", + }, + { + "8e7a8e7b129326e5410c8ae67fbd318de1909caba1d2b79210793c6b2c6e61c7", + "8e48513fdd971861ef7b5dc3", + "ef6b4145910139293631db87a0d7782a1d95db568e857598128582e8914b4fa7c03c1b83e5624a2eb4c340c8ad7e6736a3e700", + "80bb66a4727095b6c201fb3d82b0fcf5", + "e302687c0548973897a27c31911fc87ee93d8758c4ded68d6bd6415eaaf86bcc45fa6a1ef8a6ae068820549b170405b3fc0925", + "ff5c193952558e5a120e672f566be411", + }, + { + "d687e0262f7af2768570df90b698094e03b668ce6183b6c6b6ca385dcd622729", + "50f6904f2d8466daa33c2461", + "79e3067d94464e019a7c8af10b53adf5b09426d35f2257c3cbaffe1ff720565c07e77aeef06f9d03a2353053992073a4ed1fc8", + "e8fa99432929d66f10205ad3e9592151", + "18f6e6aeecc8dc5a3d0b63a2a8b7bfaf695bd9c49a7392dbfa8ed44771eebe27f94589d8a430da4cf03a8693bc7525e1fcac82", + "3c864eaa1b0ae44a7f0ad9ba287ba800", + }, + { + "26dc5ce74b4d64d1dc2221cdd6a63d7a9226134708299cd719a68f636b6b5ebd", + "0294c54ff4ed30782222c834", + "ae4c7f040d3a5ff108e29381e7a0830221d5378b13b87ef0703c327686d30af004902d4ddb59d5787fecea4731eaa8042443d5", + "2a9fb326f98bbe2d2cf57bae9ecbeff7", + "9601aec6bc6e8a09d054a01e500a4e4cdcc7c2cf83122656be7c26fc7dc1a773a40be7e8a049a6cdf059e93a23ca441ef1ca96", + "b620a8a0c8fe6117f22735c0ca29434c", + }, + { + "7fa0644efc7f2e8df4b311f54ba8b8c975b2c2aa97962f8ca8a322541bedaa9d", + "5e774e45a07eeb9721734412", + "84d1c75455e4c57419a9d78a90efc232c179517fe94aff53a4b8f7575db5af627f3d008006f216ecfc49ab8da8927ff5dc3959", + "6ad673daa8c412bf280ea39ba0d9b6d4", + "e2f00b5a86b3dec2b77e54db328c8d954d4b716f9735e5798b05d65c512674d56e88bda0d486685a45d5c249719884329e3297", + "0ce8eb54d5ad35dd2cb3fa75e7b70e33", + }, + { + "91d0429f2c45cf8ab01d50b9f04daaaccbe0503c9f115f9457c83a043dc83b23", + "34401d8d922eebac1829f22e", + "d600d82a3c20c94792362959de440c93119a718ac749fa88aa606fc99cb02b4ca9ba958d28dc85f0523c99d82f43f58c5f979b", + "1b29de9321aebc3ff9d1c2507aee80e9", + "84cbc9936eb7270080bb7024780113d064eccb63d3da0bd6bce4f8737d28304bfb6102f3ae9c394cc6452633fc551582bbfe1d", + "e132dc8a31d21f24ea0e69dfb6b26557", + }, + { + "44e6411b9fbfcef387d0ca07b719181c7567e27dba59e8e1c3cc1763cfeaca04", + "25a1cfd97bd8e63de5d65974", + "db28a592b1f3603c287991a69cc64eacdd62046445a8ba4067575f12553de155d06a9b40ddf58fec56c8171687b9cb54b1f346", + "4b1751b074ab649d27fd3f2c4d7ee33a", + "36bf6bb761b2248fe71a620e34e9d18e12a74ca42c9a9a21d30345995a83eb44bcae3c67c020730cd8d5e51a741694cc396469", + "e69ebf80a88d6eca41ae87cdcab4e1f2", + }, + { + "a94bfcefae90f9078860db80ccc50819eadf7cce29df3279f94f5eea97009ef2", + "f481bcb7f5da296e9454ff78", + "97d0c7dfcab32a386f51d92e89333ec84eecd552e68d14cf48b75067bf0e1946ad03a5d063b852ca053c929088af45d0884a88", + "9f80d845577818df9ba984ee552ae203", + "18a1c9bfe1b1dfdd06e465df347c1e942b37b3e48cb0c905841a593b5b0d0330feb3b8970dbc9429252a897f0f8e12860ea39a", + "10cf4d335b8d8e7e8bbaf49222a1cd66", + }, + { + "a50a60e568ff35a610ef9479c08bbc7bb64c373fc853f37fa6b350250a26f232", + "5ada1d4aca883d7bd6fa869f", + "9ea44e72a1d21395cd81d20db05816441010efd8f811b75bb143ab47f55eefce4eec5f606fa5d98b260d7e5df4a7474cbd8599", + "cc7a7a541be7a6d1b846354cb6a571e6", + "4165b135187faeb395d4531c062738e0d47df8bed91982eb32e391a6b3711f117b6fae0afde791de3e72fcf96d2b53ff1a621a", + "e2cbfea2100585b2cbe5107da17ff77a", + }, + { + "5ff3311461d247ceb1eaf591292fcba54308dd3484fd1851e09a12b8f6663fc1", + "61af2e6aec183129cf053c2b", + "920df8b2888a74022ede6919ed0bf48ccf51e395fe5bfa69a6209ff9a46674024eaa4f43ae2c933730b9fdc8ad216130447cc8", + "5eafed6674f2ae83397df923e059db49", + "0e35e1208168b639e012df398bc8bf2b19b08d46af0353cd78f6d1b7ae14e6224c1da6fdc9433b171f1cd2b512d5f1acd84f03", + "5bc77eb02e4d51e2019446b468498d0e", + }, + { + "42e93547eee7e18ec9620dd3dc0e2b1cf3e5d448198a902ded3f935da9d35b33", + "e02e12ba92a6046af11adf0e", + "6c3704b32527ace3d5236687c4a98a1ad5a4f83c04af2f62c9e87e7f3d0469327919d810bb6c44fd3c9b146852583a44ed2f3c", + "ac3d536981e3cabc81211646e14f2f92", + "8b6506af703ae3158eb61e2f9c2b63de403b2ebc6b1e6759ceb99c08aa66cb07d1d913ac4acd7af9b9e03b3af602bcaf2bb65e", + "a6ce2ccb236fc99e87b76cc412a79031", + }, + { + "24501ad384e473963d476edcfe08205237acfd49b5b8f33857f8114e863fec7f", + "9ff18563b978ec281b3f2794", + "27f348f9cdc0c5bd5e66b1ccb63ad920ff2219d14e8d631b3872265cf117ee86757accb158bd9abb3868fdc0d0b074b5f01b2c", + "adb5ec720ccf9898500028bf34afccbcaca126ef", + "eb7cb754c824e8d96f7c6d9b76c7d26fb874ffbf1d65c6f64a698d839b0b06145dae82057ad55994cf59ad7f67c0fa5e85fab8", + "bc95c532fecc594c36d1550286a7a3f0", + }, + { + "fb43f5ab4a1738a30c1e053d484a94254125d55dccee1ad67c368bc1a985d235", + "9fbb5f8252db0bca21f1c230", + "34b797bb82250e23c5e796db2c37e488b3b99d1b981cea5e5b0c61a0b39adb6bd6ef1f50722e2e4f81115cfcf53f842e2a6c08", + "98f8ae1735c39f732e2cbee1156dabeb854ec7a2", + "871cd53d95a8b806bd4821e6c4456204d27fd704ba3d07ce25872dc604ea5c5ea13322186b7489db4fa060c1fd4159692612c8", + "07b48e4a32fac47e115d7ac7445d8330", + }, + { + "9f953b9f2f3bb4103a4b34d8ca2ec3720df7fedf8c69cac900bd75338beababe", + "eb731ae04e39f3eb88cc77fa", + "3b80d5ac12ba9dad9d9ff30a73732674e11c9edf9bb057fd1c6adc97cf6c5fa3ee8690ad4c51b10b3bd5da9a28e6275cbe28cb", + "d44a07d869ac0d89b15262a1e8e1aa74f09bcb82", + "1533ce8e2fc6ab485aef6fcfb08ded83ae549a7111fce2a1d8a3f691f35182ce46fce6204d7dafb8d3206c4e4b645bc3f5afd1", + "f09265c21f90ef79b309a93db73d9290", + }, + { + "2426e2d1cd9545ec2fb7ab9137ad852734333925bfc5674763d6ee906e81c091", + "49a094a71d393b36daa4a591", + "7cbe7982d365a55d147c954583f9760a09948ab73ebbe1b2c1d69ed58e092a347392192cfe8bce18ca43ee19af7652331bd92c", + "177309cfc913e3f5c093e8b1319ba81826d43ce5", + "cab992e17cf6ec69fd3c67ea0424bcd67475a7f1f16e6733c4419d1b5a755f78d6eda8e368360d403800a08f0d52b4bc0aa0ab", + "b125f8caee9e54b9f9414b1c09021ed8", + }, + { + "8dc1b24bcbbee3cb8e14b344166d461d00c7490041edc9fa07e19cc82a3ed9c4", + "31768ad18c971b188d947019", + "84e4f79dbb7209cbaf70e4fefe137c494786c899602783e9c034296978d7f0c571f7ea9d80ed0cc4723124872d7326890300c1", + "eb3673b64560cca7bda76a1de7ae1014ee1acaee", + "2402acd865d4b731bc9395eae0e57d38fdf5ce847ac7aef75791a52c7573ea9b3a296e62cb1ed97c4bd34be50ee7f3d75747cf", + "665abb725498ede2b0df655fc1765a2b", + }, + { + "bc898f643a5f2cd864c10b507b4b803b4ff4ace61fadcc7bcd98af394731b791", + "cc447d83c0a6734a79778c64", + "124eb963cdb56fa49c70a9b1aa682445c55065f26859f1d16eef7cfe491587533eedd7e23deabddfc5550c2fa6a08b17822699", + "e932bd2e0e6c550d136f725e14c53d27ffb20f6a", + "45d8908ef9eef369e78b7ea0b7d023a92c63648271927efe9b0220eb09ed96f3b635c6ec8bfc68b4c228b712494bb37f4c7f1a", + "47899857494bac28d2176a9c923026b2", + }, + { + "8e82a85466ee024eb1ae10c4982d6a95e6dbe5582299ab37fe89a9db80ab51a6", + "04cfd489e18eeb7a4a8ab36b", + "3aa2e4eaed18c4602715ae77379e9083708af9f9b49031324d41abca61440319c8c8e6dbcc20006a825b12ced00b2286848a94", + "7bb54b1a6ed0ca387268a146430c0bfa2602a8fd", + "674b1391937074642408eeae9b748ca629da9fd00281824f5a108f6078ee78f98749392bb6e29b53e53e4b11739ac53a8e653b", + "e320a873a9c2e8ef455698c37ea59a6d", + }, + { + "f1f2c5503ebf35ac1373c29e2305e963f89f6ed015a181b70fb549429805d5d9", + "2fb5c6a24f406872755db05c", + "b4a2809198035c277637bb1c2927fb5c60b49ef9087c800012d8663d997983fcb78d51a054114a24e1e1b5214b58e7dee47195", + "92c1f3489aed90aedafb55562a34b3f4be29e101", + "f051a3a968278a46630b2894a0d386c18fa034960d8ddd14e88e1071afbbca5baf02967c2270117b4fb2bd4cfd032174505f99", + "6f1db5293660b6904f7f008e409bdc06", + }, + { + "f0338d26d74bd1768da5bb79c59fab2b4abe1966324048790c44bc98a6b34b6c", + "c8269e4406fa0be1cf057b2f", + "323c373e4d85a1fd21f387fdd8c7e6aeebd5aae893d7af286cb214600cba8b9eb06df085a2dc5aed870259f7f3cc81d3eb53bd", + "13fb0edcba095cef9c4343a0629fd5020f03729d", + "08572b9cf9bcfd21d4403a1218d94476b9ee8c3b94c56625c21ccaf4c0efa34cf22a532389210793699c9de1ab14f8c4c52928", + "29968c9fb610940cee9fd5b2f7c8ba21", + }, + { + "a67648285b65b9196060aaa02af279170164353e38fb77c3968c403cfa9acdc8", + "0822d6b3e91eccb7e14245fd", + "b5d271768c12ccabf89eb2d58cbde840c26d1c9b3692581f90c8b0d7b2cff31ae9192d284f5448de7d924a7b08f115edae75aa", + "0d9a5af7ac27438d92534d97ff4378274790e59f", + "b59041eed7abc2ff507d1932b5c55ac52728e5ac6648dcc74b38870db6181b1989f95a0144f0db368ec50414cfda0b977141e3", + "1d12ce89e1261d73470f3ae36ab87288", + }, + { + "51162b2435f3cf43471f4cc0ffac98b438501ee9b887843a66e9951ca35b8767", + "dcb902eaa837ed22bf5fa636", + "3edf43358f5109a4dfb4a02987170a67cdd170f6028f7708bdd7726f476b882b9640270f2270f7babfa384181c8e58c15d04c4", + "4d459905ff89aed07dcda43a3d191a3da9309faa", + "046a2313d36cbc43b6d0787e5ef37d153090a31d0f6656004034be72b9b07ace3a8abe8614362282d87da40c29c60a1a9f5c40", + "c7410b5cb94d2877c189983791cee82e", + }, + { + "2fa2beb1cde2226f28fb42a5fb0af3fc58fbb76bf14aa436e6535d466456a0f4", + "50190514a3740b3c0b1df576", + "a5e0b4837dfca263ba286abf7940b6e70fabb55d8dee5028617c1190fbd327f79b79d2f34db6076ab07cecff7114b15ca02a33", + "25142928c1ae9c7b850309e07df359389db539fc", + "850fd22bd0897b98ce40bc6c1345a9d59abf796b1b8c34ee8b377e54ee7d59dec05c022ecae96ffdfa1311bdd4e7a9d35aac47", + "4b5ab89b4f627ca32d12a1791c286870", + }, + { + "a92a797ce2b2f382030b77a1abe94c8076eee88de2dc4929350b244dbdaddd30", + "716f577401a7893c42c91710", + "9d26ff79a89720fab6e4cda85887e3c0c3f86a4670d065c8ea68042b6f9f16dd2c5b31acb36331f5b1e50f08c492dc12eebd9e", + "8642681f1839b88990c2a939f00c9b90766dadac", + "3080bcf3604cf81f5f2c6edc80dfe5d877168a9903598a700a0bbae188fadc7a8b76a04b40400f9252d7f9437fa8f024a3bdeb", + "8fc56f6bf48efb00476886b2a03ecb89", + }, + { + "89d0723e5a087456b7b709b8b21be380b463ba3dc9b79170e9947526798fe91c", + "68e2f307b7d49d4d9c041755", + "7fe2afb710e8fd49cca1c2ba8fd0814594fba4d667017630e170a8a379fa5837bf370ca1cd4c98bd8c4f13eb7068ffa71ab07c", + "b34805b30703a62b6d37c93f2443e1a33154b5fb", + "b841012752bbf1dfa7b59366dbf353bf98b61ff2e6e7a13d64d9dcb58b771003c8842ac002aac1fa8ca00a21eaf101ab44f380", + "73a93e2722db63c2bbf470d5193b2230", + }, + { + "329a6e94b1cce693e445694650d62b8c2c9ab03a09e6d4eca05c48291e576b89", + "78f471bc32f8637a213e87ac", + "65264d75e1a176a7e966e59109cd074ac5d54740eb0c58084af023e5599eb611846199579d95ba94b6d25ee4d9074b9714f231", + "c00c465524e2e2f8a55c0793ed9af851be45a70e", + "964d665d1e3c1018dfd883e217cfe4c856cc844f7644b53bb68fbe66f8541fa43ac54e92a2b194d6d8929fe031e94b3e70eca0", + "fd511385711236f2e99e6da5042007b7", + }, + { + "463b412911767d57a0b33969e674ffe7845d313b88c6fe312f3d724be68e1fca", + "611ce6f9a6880750de7da6cb", + "e7d1dcf668e2876861940e012fe52a98dacbd78ab63c08842cc9801ea581682ad54af0c34d0d7f6f59e8ee0bf4900e0fd85042", + "0a682fbc6192e1b47a5e0868787ffdafe5a50cead3575849990cdd2ea9b3597749403efb4a56684f0c6bde352d4aeec5", + "8886e196010cb3849d9c1a182abe1eeab0a5f3ca423c3669a4a8703c0f146e8e956fb122e0d721b869d2b6fcd4216d7d4d3758", + "2469cecd70fd98fec9264f71df1aee9a", + }, + { + "55f9171a03c21e09e3a5fd771e56bffb775ebb190319f3dc214c4b19f72e5482", + "14f3bf95a08e8f52eb46fbf9", + "af6b17fd67bc1173b063fc6f0941483cee9cbbbbed3a4dcff55a74b0c9535b977efa640e5b1a30faa859fd3daa8dd780cc94a0", + "bac1ddefd111d471e75f0efb0f8127b4da923ecc788a5c91e3e2f65e2943e4caf42f54896604af19ed0b4d8697d45ab9", + "3ae8678089522371fe4bd4da99ffd83a32988e0728aa3a4970ded1fe73bc30c2eb1fe24c0ff5ab549ac7e567d7036628fd718d", + "cf59603e05f4ed1d2da04e19399b8512", + }, + { + "54601d1538e5f04dc3fe95e483e40dec0aaa58375dc868da167c9a599ed345d9", + "c5150872e45c341c2b99c69a", + "ae87c08c7610a125e7aa6f93fac0f80472530b2ce4d7194f5f4cb8ac025323c6c43a806788ef50c5028764ec32f2839005c813", + "93cd7ee8648a64c59d54cdac455b05ffdfc2effe8b19b50babd8c1a8c21f5dc8dc6050e2347f4cd28701594b9f8d4de5", + "d5f005dc67bdc9738407ce2401977f59c9c83520e262d0c8db7fe47ae0eada30d674694f008e222f9733a6e63d81499e247567", + "3470155144c74929980134db6995dd88", + }, + { + "e966c470cbecc819260640d5404c84382e6e649da96d29cad2d4412e671ed802", + "b3a92d6f49fe2cb9c144d339", + "7adf6fcb41d59b8d2b663010c3d4cf5f5f0b95cf754f76f8626c4428467e5c6684e77e7857b1cc755762e9ea9117e3bb077040", + "dfa62a3a4b5b3af6770cfd3cef3bbb4cce3f64925782a9a8a6e15fe3744d8f9310400dd04e8d7966c03850539e440aa5", + "5f5b09486e6cd2a854e5622b4988e2408fddaca42c21d946c5cd789fe5a1306ef33c8cd44467ad7aa4c8152bce656a20367284", + "2b388109afdada6473435230d747b4eb", + }, + { + "4a8a12c0575ec65ae1c5784d2829bc7b04818eb00bd4c90a0d032ea281076e27", + "959f113b705397fb738018b0", + "0c5571195586e4fc7096fb86cfcd6684081446f3d7adc33a897f03ac4ff6c3cc2019b67bd3184c86070764f6deaa8a10d0d81f", + "adb8bc96142a1025122dc22f826957197af33dcdcf6b7ab56bc1a5e17e8534e48b8daf685faf9543bb343614bdf6737f", + "84212d5991231d35c4e8621163e5b370a0105a05856866e74df72c0808c062981570d32d274ea732fa4d29f9cfa7839cadbe6a", + "39cee3b8fa0bf92605666ccd9eb19840", + }, + { + "6197a4fa7cfcedeff223f69ea68b4ddf54b683350c20875be353077e9bbce346", + "1a69ecabd42c53c0ec64fcd0", + "40a487b4daf866c20f3c4911a0586709c3344aa988dc9c464bcf36cc4e3d92701e611e60cf69f3edbf76cd27ff6ba935026d7f", + "b20a7ca5b5b603f661587e01f7ef171823ef463c187ded77a3d616400cc1d2b0b688ac9e927498341560cbc8eb9a4198", + "06420fa038ee62db30cc05bfe34c8d2c39a9d439653907c512ed606511921fe76110913a5bfb6b6c7b23d7f8883f5ab65f4b14", + "4d3097c9919002cd1da83f29820312ed", + }, + { + "c9dbe185023ecaa78be9bfac1b91b9da6bd7c11349feb69e6b0be83a838e77b2", + "8940fa7c6afd3f7a09ec93b6", + "075be0d61273e6975978d0b88b3fa38fc398d4d0f22a342a8afa5562af0e7c8fa548f0d8faec898a20c97e851754992c1ed4a3", + "f17bd357608365e66b98e49191cdc2a3813bba5a1b7988aa8aaaaad4b86d0ef4e2698cad799d63fcd2a5e87c0e3e929a", + "615c1097d577363a77bfc7dd57179acb68166e78021b3397d7029ce33cbc848f036b9c07989eeb9f42aeaeebe8542f103b1d32", + "a22ab25fd8a6127469e8ce9ff686d575", + }, + { + "e6cdcf497a6e119009bf43ac183d2dd4d4e967964ef92811f69eb18d92923305", + "3e88459a76e1dcc890788297", + "72a3dfb555ba0029fc3d1c85b836f76135bd1858189efdde2db29045f2c26e6a65627d81a0b85ca42e8269d432a41154e929ac", + "a359f86ec918537d80a84da7b66bca700c1ff9ec7f8695a30808d484da218d15ae89c5f943e71778445130191f779001", + "9ae3f8ccae0bb5789b1105118760c406e41175a76612435cb0c8be225ea6b368c9d08c9d9a24b512d1458e94af79e3060ab69e", + "ac3bbc8fd6a7097df6f298411c23e385", + }, + { + "de5531b50888b61d63af2210ee23f46d91a5e60312bd578584af586bf22ea756", + "0fde8689b0348bbcfaa89fec", + "80621e54eef1c92afb1f64ed860e39311eea7e2cca6f5624008c1d2e581d7112b7ee0b559fc3db575b7b7c42ee4f2a20442dc0", + "22db97cd5f359f12aec66c51c7da79ba629db4c8c7e5501be2ec1e4cc3f3944b6e3057d093bc68b735b5156950f91804", + "933018419a32b7bf65f9777c44889a44b32d61ceddbb46839366ce2ca2ffeb1833f46559e59c93bb07f622d9633f13932cf7f1", + "25023a4ee9bdbf525cfef888e2480f86", + }, + { + "bc0c6368a9bb2622f6d5ba12de581f003336c298adac34499bf26b11e630f891", + "2aa8f30b567cf1edd818e42d", + "1dcc1a3167fba55c00d3383e26d386eaa0449154599992da7f7f6598f41b3eb8e4d0a9143dfcab963f5c390a6ae2010fbcf6ec", + "0e28ebf87eb757e83031fb836f7b049a46bd740b0a39c9b798d2407e1150da86dfe84121c7c98449559453ad7558e779", + "78d00a6e3302369817b9cf1f24ea13c41751382e3fea74403d094737e32fb507184cfebce48d10b4ce8db12ef961e4df2c8e95", + "c0aff3594f86b58e229c7ad05c2b84f0", + }, + { + "5d98a0c7ad6f9c0b116613ca5082250356a6a9bca55fe1a4a2962b733214dac4", + "8b2d8e8d83bdd6a3125dd997", + "4f3685c2cfbc856379d1fd00f9611fe4c0a4b9c4013fe1bee144449709a6a7e31ff6fb0da74ed464b066b03b50f19cd7f5f9bc", + "2f20636d46ce37e9bb0ca0c41d819e3eabcedacbd1ca3ced112d3ad620bbd3b2effe80d3ec8760706e8f14db83139a70", + "8e178c0e3e5d22b3be897e0b8879b0d53fef2efb9946ccff6d717b001e3033f2cc22d01d9551e9c0749de704fbe3189328cbb0", + "541b7db823e37b5ed323626b9c6748f6", + }, + { + "d80a2703e982de1a2fe706ffe6e389f351ab356ccf056df045e2941b42ef21a4", + "1521ab8f7242cba05427f429", + "6f9fde28e85776a49cfbad1459d94611757a3cd996aa6e2d702d0483a4d88d532131ebd405b351226b16d19d30d32807a1d511", + "5395de90d6bec7c159ab9d6cfa663bdc6295d025e1fcc8b760b9ba42d785eda218dabc6fa7c0f733ad77f61682bff2db", + "1e72a8495ceadaf0d31b28ba7cb7c37ccb117761d38fe7dd98eb230ff4ea0b400401e9b5311a7be9b2a533523ad469e2fdb233", + "bb174b7624c935ff75b3b77ff7068a98", + }, + { + "6d5c69d7135c0b5b7fef512c127fa788092f1a908358ab658b8f23e463409aa5", + "b36cccad38cd6148a384a026", + "b4e74f5c56f2ea056d9ff931525944dfad207e063ba226c354e0320a50449967e964580d9b57028c14005aba6865f8bc6a3ef8", + "b19f4616bb1452251a2a7dbf78f920194f139e0424d27683621d1ee1e865737c2466e058439c8e122e582a7b63607ce9", + "1ce12cd5502efa9ea259584ae9b3c7dbd9444380d4b77a2c787f9b2257019b23ee183dffebb3106a26b18d8a23445626a578e2", + "62945e31bae3181855b69c37898ac5bf", + }, + { + "e6afe3c4db2c1d13edb1c5931b2b4b515ec0fd6201139ee1ea55cec92263830e", + "358bd9ea64177d1e23a41726", + "710bb3394b094ee7d053bc6599b26dafd337e8a61c580d0446c3bf195e77ca5132c8ec3a47a61579dce38360bba7c65e4d5634", + "7e0f841cddd7eeebd1ec7b7b8d0e2f71656e5e9ff3cfa739c0b9d0ec4941a0b3f3b396690dbe5f5082d6fb6dd701c68d", + "4574a8db515b41c14c2a962dff34e2161a7195c491b11b79889aff93c5b79a6455df9fe8ef5c5b9edb5da1aa9fe66058b9065f", + "7c928d7f5cbac9bb4b5928fe727899eb", + }, + { + "5cb962278d79417b7795499e8b92befe4228f3ba5f31992201aa356a6d139a67", + "76f7e7608f09a05f336994cf", + "2e12cbd468086aa70e2ecd1ddef561e85c225dd083e5956f5c67503344b0ea982bb5044dafbcc02a5b9be1e9b988902d80172b", + "032de3fdec273fc8446c2bf767e201f2c7c190acf9d6d321a24a0462cbc3356e798fe23d6c1b4fe83be9c95d71c05504", + "c959344a46aa5216d2b37c832436eb72a4a363a6df5642cfbbfd640dea1d64c80bd97eabc1aab192969ee0b799e592a13d2351", + "51b227eaf7228a4419f2f3b79b53463a", + }, + { + "148579a3cbca86d5520d66c0ec71ca5f7e41ba78e56dc6eebd566fed547fe691", + "b08a5ea1927499c6ecbfd4e0", + "9d0b15fdf1bd595f91f8b3abc0f7dec927dfd4799935a1795d9ce00c9b879434420fe42c275a7cd7b39d638fb81ca52b49dc41", + "e4f963f015ffbb99ee3349bbaf7e8e8e6c2a71c230a48f9d59860a29091d2747e01a5ca572347e247d25f56ba7ae8e05cde2be3c97931292c02370208ecd097ef692687fecf2f419d3200162a6480a57dad408a0dfeb492e2c5d", + "2097e372950a5e9383c675e89eea1c314f999159f5611344b298cda45e62843716f215f82ee663919c64002a5c198d7878fd3f", + "adbecdb0d5c2224d804d2886ff9a5760", + }, + { + "e49af19182faef0ebeeba9f2d3be044e77b1212358366e4ef59e008aebcd9788", + "e7f37d79a6a487a5a703edbb", + "461cd0caf7427a3d44408d825ed719237272ecd503b9094d1f62c97d63ed83a0b50bdc804ffdd7991da7a5b6dcf48d4bcd2cbc", + "19a9a1cfc647346781bef51ed9070d05f99a0e0192a223c5cd2522dbdf97d9739dd39fb178ade3339e68774b058aa03e9a20a9a205bc05f32381df4d63396ef691fefd5a71b49a2ad82d5ea428778ca47ee1398792762413cff4", + "32ca3588e3e56eb4c8301b009d8b84b8a900b2b88ca3c21944205e9dd7311757b51394ae90d8bb3807b471677614f4198af909", + "3e403d035c71d88f1be1a256c89ba6ad", + }, + { + "c277df045d0a1a3956958f271055c229d2634427b1d73e99d54920da69f72e01", + "79e24f84bc77a21a6cb14ee2", + "5ca68d858cc30b1cb0514c4e9de98e1a1a835df401f69e9ec6f1bcb1158f09114dff551683b3827457f77e17a7097b1ea69eac", + "ca09282238d492029afbd30ea9b4aa9d448d77b4b41a791c35ebe3f8e5034ac71210117a843fae647cea020712c27e5c8f85acf933d5e28430c7770862d8dbb197cbbcfe49dd63f6aa05fbd13e32c459342698dfee5935c7c321", + "5c5223c8eda59a8dc28b08e6c21482a46e5d84d32c7050bf144fc57f4e8094de133198da7b4b8398b167204aff837da15d9ab2", + "378885950a4491bee3cd681d3c957b9a", + }, + { + "4d07f78d19e6d8bb32bf209f138307890f0f1ae39362779ff2bf1f9b734fe653", + "d983a5d5af78a3b1cd5fbd58", + "94f0bbc4340d97d854e25cc7ce85ea1e781e68bf6f639e0a981bb03e3c209cbf5127171cb0fff65bc3ecac92774d10146d1ac5", + "a3dc9ff9210bc4b3276909883db2c2aa0762cd22b46901a248c0372d073e7778b9c1d8469b26bb42406e484ef7747f71dea785fc0020a2eac17e0ac3fbe0453629efd68d5678fbecc10af8ffbe7828f826defb638763f4ecfe82", + "6543b4d97fccd273b36436fef719ac31bf0e5c4c058ea71aea2a0e5b60e329be6ea81ce386e6e9fe4480e58363c3b2036865ac", + "924cf7c0770f228a4b92e9b2a11fc70b", + }, + { + "9572b9c57abdf1caae3bebc0e4bbf9e556b5cbacca2c4756050fefd10a666155", + "de292a9858caaccdcab6a433", + "6f420a32708ccd4df0d3149e8c1d88dceba66ee4546f38db07046ebf30f47627f7fdda1dd79783adabe5f6b6853857b99b864c", + "a042d97a9b8f6caf51c5f24522d7ed83e2c5d8ec6b37ef2598134a30e57319300c3fdf92fb1d9797f5ef00971f662aae768f69f9ca0455bd6d1059d5f85b8ecb977006b833f90ac2d5bbf4498c83f4d1a42584c0dfc4a2e2453c", + "a9af961d61ab578cc1348eb6f729603f481c5d9bf9bee3a13eda022bd09c03a4f207c21c45c0232a9742ae8f0c54b4278a3a63", + "eff9bb26156ec76f0060cd93a959e055", + }, + { + "3cc8671c4d25c3cbc887f4dcbd64e531e91cf6252f6ee9c29d9988d20ab6747f", + "f960a09c0b5067280926a9c3", + "5b58717b0b32076566b58bf37c6133e61468b2be67715fb0007fe390c4b5578decf55502a4e3c12e7bdf0ba98784d126e4753a", + "79d73a7ff86698e6114a0f465373fbee029e042424c439b22e3ad37b36b9e02bab82e16844114e99e39c169f462fe61b87c4627c394384acc9531680706e4e56491a304c6075cca37c64db24468c1fb9519605c83f0ee3e0316a", + "1d0be097470c1ac30619f63c3961152ab27db88ce694b7bba4db185cb31803cc7bab890e931c90766621bfe5d887eb0cd6995d", + "dbd57ea091ff16fc7dbc5435030cc74e", + }, + { + "882068be4552d7ad224fc8fa2af00d6abf76ccf1a7689d75f6f0e9bd82c1215e", + "890a5315992f12674d1c8018", + "8464c03e0280cb1f63c054a24a050e980f60cc7313f09f2092c45d77bbe9ad2a8c1f6cdca2acd8c57c87e887edadb66bcb66c4", + "916721df816b1cad531dee8e4a8e634d43ed87db99609bcc986d16bfac2cff577d536d749a5c3625de53c5351825c228911f0a64be1fc9738a26394efe5332c0762bf59b65d3f1c5aafa9ca2e63eccd59568e6c0269950911a71", + "020e297d907177dba12dde4bfe1b0ff9b6a9d9db0695193e4181449e157137b59b488616ba151b06d889f8498ce373d2396ab9", + "e48537ecb27460b477a6e7c3463dbcb0", + }, + { + "4deadcf0f7e19231f8afcb6fb902b105bef23f2fa9323a51833ff8368ccb4f91", + "6d4d01abd587ed110e512ed2", + "75686e0fdd3fd96f3e6dfafd7a2a907f9f375d93943cb2229bd72b032bf624af4fc72071289386e3dccc45959e47ab42b261a2", + "31a2797318104b2dc9977e599435b041c56bafe5e7d901a58614c2d3fb9d220e3fd3e2828cef69e0604ed73340cb1e21967294dcd874893942442200b2a5b860ee8cf91e1d8eb3d364d0e43e84f6379f434a1ae17c236b216842", + "8feaf9a089599812117a67aed2f4bf3431ff1f6cfd64ea5ff475287abb4ff1ab6b3e4f8a55d1c6b3f08594f403e771ec7e9956", + "5040407621712e053591179e1689698e", + }, + { + "80f1c515f10d79cdbee275213aa9ac0845e2cf42874f7e695081cb103abf1a27", + "399d5f9b218b62ff60c267bd", + "9e95221873f65282dd1ec75494d2500e62a2b6edda5a6f33b3d4dd7516ef25cf4154472e61c6aed2749c5a7d86637052b00f54", + "d2a8fff8ae24a6a5efc75764549a765222df317e323a798cbb8a23d1af8fdf8a3b767f55703b1c0feba3912d4234441978191262f1999c69caa4e9a3e0454c143af0022cd6e44cec14149f9e9964a1f2c5e5a6e3e768bd870060", + "4f996562e23ebbfd4fe26523aee9525b13d6e134e72d21bdc7f195c6403501fd8300b6e597b668f199f93591ba742a91b54454", + "2da1c7325f58575d275abf96c7fa9e51", + }, + { + "c2c6e9be5a480a4a56bfcd0e268faa2276093bd1f7e8ce61e746d003decc761e", + "c1541eb25721d4856df8f928", + "87d22e0318fbbb420b86b0585bd12c14645ff2c742e5639b3a114cc96c5f738edfbe2055116f259e3d6c14cb6d8fca45708289", + "f34e79e5fe437eda03ccfef2f1d6319df51a71c9891863e4b98a7298bd64490460354db5a28b0fadcb815024ea17f3b84810e27954afb1fdf44f0defb930b1793684a781310b9af95b4bcf0a727a2cb0ac529b805811b3721d98", + "b5d6e57c7aa0240e0b6e332d3b3323b525a3d8a553ad041ba599e909188da537c3293d1687fb967882d16a5615b84e95f9dd77", + "1cce334cec4b51216cac0fc620cdadf9", + }, + { + "ea0d6184a71456e27f9ac82dfc7f6694c898f7c0d19d1cb0db4e575dd0094bb6", + "5018fb816d515511bfb939d5", + "083147d0c80f134f7393855c8a95bf6e6abd6f9a7b1fca584e8bfc6b5dc13a8edbfd473e232c041d9be9ee7709dc86b3aa320a", + "8bc6bd0a263212bd7281fd1a45e512fca104f859358eae9293a297c529a0abaffd8a77507b9069040f2b3141a7620691e110a8b593b956d8e3e71694506b89018a03861c1ba6082687adce15a874c73477430cef075eba077a93", + "f0a5c4941782e2f2941dd05acee29b65341773f2e8d51935a3f4fa6f268ff030c880976cf1ee858f6571abd8411b695a2fadf0", + "067d8cc2d38c30697272daa00c7f70cf", + }, + { + "c624feb6cb0d78d634b627134c692f0bf5debf84d8639e22ff27ce2ace49d438", + "a54f4f1204255f6b312222cd", + "ec34f45c1b70fd56518cc5c404cc13330ab7d51c10f4d2cfeb26b097ae76897191ec1b3953b0086e425c7da221d29f65d5ccf3", + "d9099ba6be50dca77e0b9803766ad993132479fbab43b8f4126a7f9ef673ac0caf2de235e1e84ad9fe505c43d1ac779f5072c025c14ea0d930ce39db8c5930baada23b3e4654470e559fcb6eb1c133a77318b87cc7913e12d404", + "713d28a5123d65e82cca6e7fd919e1e5e3bdaab12ae715cf8b7c974eb5f62be8c3b42637074c6b891f6c6033eb4b7e61db9f0b", + "01ededff6e4d1dce4ac790218e208ebe", + }, + { + "1afc68b32596198ae0f3a8612751c2413322e8054ff2ac6bede3d4a1ee20ee62", + "356860e76e794492de6a68f3", + "293041038f9e8edee23d2f18bce87b522380f1fa18b3021830a54ab891da8548095228ed9860176152e27945d66254f0db8590", + "205e44009e0ef963838aff615b35c9f1271d487cf719677d956718bce8ab676cceb636ad381432c5c790c26b07051b661a2fec4e607f9644f84993c8335db21ae36b6008bab2883ad7541809bf5f49272295c1c1f1cf8c678553", + "e06109680d5fefd345665ec9a5b2e7bf3ece3af1b62841a95c453e7753b5a1d6d8a10b3c6c42df1f23832b74e74871821f1c0b", + "953d8d04f70e2af055ac902a455235b2", + }, + { + "f61b723359e798fefecc26b10b168dc331c639079598f1f651166cc58c671ee1", + "b07e9407b592d4fd95509343", + "2724f1ad6b5b409a59c7f2ff649eb24b4a33a03d7a0426e29a6ea3aa91b4f00699fbed75bb7189964303e2e9fe3a7e5f74b7a1", + "1429c6f27828cb94ad5e62451da10fd574660cec2b8f279a19bbb8a167a630d3ac60db04e8faa02204792e49aed4501844a419d3ecdff0d03799866fee81a91187b08a44d5bb617ff3b2cef79cd48750ea20903e1d3627a17730", + "362bad8de943dce8f53edf682d02e1d893c23c5272b13fd35b492f8477083a8c34027db32b6131931f03555ac5fbc6dbb13801", + "a51775606343755691f125019b44fdfc", + }, + { + "6be7f4d18ff0fbdd9b3b3cacaba4629a0c617387079add62f6ce1584b33faad1", + "fda568c9cb13d9c176bcef03", + "4df668e99d5068604a48bcca5baa8245435928558a83d68d7b0b081861224e9bd39ea8f2d55a635949e66c6f6a7ff5cc34dd94", + "11ebeb97dd4a9925c1fbe2b9af77392058d2d971e42db15da39f090d7bc132573c34bf7d92a2d72dc66ee6840c3ff07985b8976ee8d8f36bf47ae330b899fdc60652dd5a23c45f3680f11951f019e0697c8acfcaa95f01b9c7dd", + "488b40ad594e1845ccdd9e9467fc5e1afbbfde34e57d45bfcd30b61cc326d57fe8e3f31a39cdebf00f60bbd2c3cdf69f756eff", + "3bf3fbab9b48486fd08a5552604df639", + }, + { + "83C093B58DE7FFE1C0DA926AC43FB3609AC1C80FEE1B624497EF942E2F79A823", + "7CFDE9F9E33724C68932D612", + "", + "84C5D513D2AAF6E5BBD2727788E523008932D6127CFDE9F9E33724C608000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F0005", + "", + "6EE160E8FAECA4B36C86B234920CA975" + }, + { + "4C973DBC7364621674F8B5B89E5C15511FCED9216490FB1C1A2CAA0FFE0407E5", + "7AE8E2CA4EC500012E58495C", + "08000F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748490008", + "68F2E77696CE7AE8E2CA4EC588E54D002E58495C", + "BA8AE31BC506486D6873E4FCE460E7DC57591FF00611F31C3834FE1C04AD80B66803AFCF5B27E6333FA67C99DA47C2F0CED68D531BD741A943CFF7A6713BD0", + "2611CD7DAA01D61C5C886DC1A8170107" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000000", + "", + "d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad", + "", + "f4c58f80a3a1a9cd52755214bdbb6ad0" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "", + "cea7403d4d606b6e074ec5d3baf39d18726003ca37a62a74d1a2f58e7506358edd4ab1284d4ae17b41e85924470c36f7", + "0eb41c52b074ecacb213f6de062f7897" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "", + "cea7403d4d606b6e074ec5d3baf39d18726003ca37a62a74d1a2f58e7506358edd4ab1284d4ae17b41e85924470c36f74741cbe181bb7f30617c1de3ab0c3a1fd0c48f7321a82d376095ace0419167a0bcaf49b0c0cea62de6bc1c66545e1dadabfa77cd6e85da245fb0bdc5e52cfc29ba0ae1ab2837e0f36387b70e93176012", + "ae1753b346fd6971d20cb69a2d6148bc" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "ffffffff0000000000000000", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "", + "ee2491af7588cbd4ccccaea18a6118cdf00222178a0b53be8a7a0ef9806991a81c70151316ef97ffea3d83e8905d933c253b56a63f115a2cd4005281bfbdd9a07a1b19d7e07caf3f90a11228785d7bf749449598214a4222c3c476ea5df9d60250b8d66787b568762a5cb70149e2957c1cc5ef636113b1e1752096ec404fe2b6", + "0c23c9176aedc5bacbca56f777324aa4" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "ffffffffffffffffffffffff", + "010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002", + "0102030405060708090a0b0c0d", + "d3b089dead85b8b6874327390d0fff1575051e2a96243ab8ca0927447f58d7053d99918491eeeee470cd929077ccb404ef140354241e12e2e36e3aea89a06e79c064479d7cdd711220dff6059ab913a1ea3ba7bcdb2d5b8746a990ec54cf2aab55c11c9c849ab552fc03cc4425db4e54b13d334e9ef145805c73680d7899b64bab", + "c9ee768b5473f678ac00203affa6a34e" + }, + { + "843ffcf5d2b72694d19ed01d01249412d5cb4a08f134d246513633e84d006bbb", + "dbcca32ebf9b804617c3aa9e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f", + "00000000000000000000000000000000101112131415161718191a1b1c1d1e1f", + "3847bb9e60181f62ba36beae09cc3cfeb5958a16e37c72e87add8be814ee6dbbb98c0727709c84d26a6adf5e7b4e17cdfd84977b328d3eda489a30ff8d1875b530239d4abaf15a5903f516cac0c91b3a", + "39fa8fc1c78405e86326c97d428cd1c6" + } +}; + +static int +tv(void) +{ + unsigned char *ad; + unsigned char *ciphertext; + unsigned char *ciphertext2; + unsigned char *decrypted; + unsigned char *detached_ciphertext; + unsigned char *expected_ciphertext; + unsigned char *key; + unsigned char *message; + unsigned char *mac; + unsigned char *nonce; + char *hex; + unsigned long long found_ciphertext_len; + unsigned long long found_mac_len; + unsigned long long found_message_len; + size_t ad_len; + size_t ciphertext_len; + size_t detached_ciphertext_len; + size_t i = 0U; + size_t message_len; + int res; + + key = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_KEYBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_NPUBBYTES); + mac = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_ABYTES); + + do { + assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aes256gcm_KEYBYTES); + sodium_hex2bin(key, crypto_aead_aes256gcm_KEYBYTES, + tests[i].key_hex, strlen(tests[i].key_hex), + NULL, NULL, NULL); + assert(strlen(tests[i].nonce_hex) == 2 * crypto_aead_aes256gcm_NPUBBYTES); + sodium_hex2bin(nonce, crypto_aead_aes256gcm_NPUBBYTES, + tests[i].nonce_hex, strlen(tests[i].nonce_hex), + NULL, NULL, NULL); + message_len = strlen(tests[i].message_hex) / 2; + message = (unsigned char *) sodium_malloc(message_len); + sodium_hex2bin(message, message_len, + tests[i].message_hex, strlen(tests[i].message_hex), + NULL, NULL, NULL); + ad_len = strlen(tests[i].ad_hex) / 2; + ad = (unsigned char *) sodium_malloc(ad_len); + sodium_hex2bin(ad, ad_len, + tests[i].ad_hex, strlen(tests[i].ad_hex), + NULL, NULL, NULL); + ciphertext_len = message_len + crypto_aead_aes256gcm_ABYTES; + detached_ciphertext_len = message_len; + expected_ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + assert(strlen(tests[i].ciphertext_hex) == 2 * message_len); + sodium_hex2bin(expected_ciphertext, message_len, + tests[i].ciphertext_hex, strlen(tests[i].ciphertext_hex), + NULL, NULL, NULL); + assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aes256gcm_ABYTES); + sodium_hex2bin(expected_ciphertext + message_len, crypto_aead_aes256gcm_ABYTES, + tests[i].mac_hex, strlen(tests[i].mac_hex), + NULL, NULL, NULL); + ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + detached_ciphertext = (unsigned char *) sodium_malloc(detached_ciphertext_len); + + res = crypto_aead_aes256gcm_encrypt_detached(detached_ciphertext, mac, + &found_mac_len, + message, message_len, + ad, ad_len, NULL, nonce, key); + assert(found_mac_len == crypto_aead_aes256gcm_ABYTES); + if (memcmp(detached_ciphertext, expected_ciphertext, + detached_ciphertext_len) != 0 || + memcmp(mac, expected_ciphertext + message_len, + crypto_aead_aes256gcm_ABYTES) != 0) { + printf("Detached encryption of test vector #%u failed (res=%d)\n", + (unsigned int) i, res); + hex = (char *) sodium_malloc((size_t) ciphertext_len * 2 + 1); + sodium_bin2hex(hex, (size_t) detached_ciphertext_len * 2 + 1, + detached_ciphertext, detached_ciphertext_len); + printf("Computed: [%s]\n", hex); + sodium_bin2hex(hex, (size_t) detached_ciphertext_len * 2 + 1, + expected_ciphertext, detached_ciphertext_len); + printf("Expected: [%s]\n", hex); + sodium_bin2hex(hex, (size_t) found_mac_len * 2 + 1, + mac, found_mac_len); + printf("Computed mac: [%s]\n", hex); + sodium_bin2hex(hex, (size_t) found_mac_len * 2 + 1, + expected_ciphertext + message_len, found_mac_len); + printf("Expected mac: [%s]\n", hex); + sodium_free(hex); + } + + res = crypto_aead_aes256gcm_encrypt(ciphertext, &found_ciphertext_len, + message, message_len, + ad, ad_len, NULL, nonce, key); + + assert((size_t) found_ciphertext_len == ciphertext_len); + if (memcmp(ciphertext, expected_ciphertext, ciphertext_len) != 0) { + printf("Encryption of test vector #%u failed (res=%d)\n", + (unsigned int) i, res); + hex = (char *) sodium_malloc((size_t) found_ciphertext_len * 2 + 1); + sodium_bin2hex(hex, (size_t) found_ciphertext_len * 2 + 1, + ciphertext, ciphertext_len); + printf("Computed: [%s]\n", hex); + sodium_bin2hex(hex, (size_t) ciphertext_len * 2 + 1, + expected_ciphertext, ciphertext_len); + printf("Expected: [%s]\n", hex); + sodium_free(hex); + } + + decrypted = (unsigned char *) sodium_malloc(message_len); + found_message_len = 1; + if (crypto_aead_aes256gcm_decrypt(decrypted, &found_message_len, + NULL, ciphertext, + randombytes_uniform((uint32_t) ciphertext_len), + ad, ad_len, nonce, key) != -1) { + printf("Verification of test vector #%u after truncation succeeded\n", + (unsigned int) i); + } + if (found_message_len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + if (crypto_aead_aes256gcm_decrypt(decrypted, &found_message_len, + NULL, guard_page, + randombytes_uniform(crypto_aead_aes256gcm_ABYTES), + ad, ad_len, nonce, key) != -1) { + printf("Verification of test vector #%u with a truncated tag failed\n", + (unsigned int) i); + } + if (i == 0 && crypto_aead_aes256gcm_decrypt(NULL, NULL, + NULL, ciphertext, ciphertext_len, + ad, ad_len, nonce, key) != 0) { + printf("Verification of test vector #%u's tag failed\n", (unsigned int) i); + } + if (crypto_aead_aes256gcm_decrypt(decrypted, &found_message_len, + NULL, ciphertext, ciphertext_len, + ad, ad_len, nonce, key) != 0) { + printf("Verification of test vector #%u failed\n", (unsigned int) i); + } + assert((size_t) found_message_len == message_len); + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", (unsigned int) i); + } + memset(decrypted, 0xd0, message_len); + if (crypto_aead_aes256gcm_decrypt_detached(decrypted, + NULL, detached_ciphertext, + detached_ciphertext_len, + mac, ad, ad_len, nonce, key) != 0) { + printf("Detached verification of test vector #%u failed\n", (unsigned int) i); + } + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", (unsigned int) i); + } + + ciphertext2 = (unsigned char *) sodium_malloc(ciphertext_len); + crypto_aead_aes256gcm_encrypt(ciphertext, &found_ciphertext_len, message, + message_len, ad, ad_len, NULL, nonce, key); + assert(found_ciphertext_len == ciphertext_len); + memcpy(ciphertext2, message, message_len); + crypto_aead_aes256gcm_encrypt(ciphertext2, &found_ciphertext_len, + ciphertext2, message_len, ad, ad_len, NULL, + nonce, key); + assert(found_ciphertext_len == ciphertext_len); + assert(memcmp(ciphertext, ciphertext2, ciphertext_len) == 0); + if (crypto_aead_aes256gcm_decrypt(ciphertext2, &found_message_len, NULL, + ciphertext2, ciphertext_len, ad, ad_len, + nonce, key) != 0) { + printf("In-place decryption of vector #%u failed\n", (unsigned int) i); + } + assert(found_message_len == message_len); + assert(memcmp(ciphertext2, message, message_len) == 0); + if (crypto_aead_aes256gcm_decrypt(message, &found_message_len, NULL, + ciphertext, ciphertext_len, ad, ad_len, + nonce, key) != 0) { + printf("Decryption of vector #%u failed\n", (unsigned int) i); + } + assert(found_message_len == message_len); + assert(memcmp(ciphertext2, message, message_len) == 0); + + sodium_free(ciphertext2); + sodium_free(message); + sodium_free(ad); + sodium_free(expected_ciphertext); + sodium_free(ciphertext); + sodium_free(decrypted); + sodium_free(detached_ciphertext); + } while (++i < (sizeof tests) / (sizeof tests[0])); + + sodium_free(key); + sodium_free(mac); + sodium_free(nonce); + + return 0; +} + +static int +tv2(void) +{ + unsigned char *ciphertext; + unsigned char *message; + unsigned char *message2; + unsigned char *nonce; + unsigned char *key; + size_t message_len; + size_t ciphertext_len; + int i; + + for (i = 0; i < 250; i++) { + message_len = randombytes_uniform(1000); + ciphertext_len = message_len + crypto_aead_aes256gcm_ABYTES; + message = (unsigned char *) sodium_malloc(message_len); + message2 = (unsigned char *) sodium_malloc(message_len); + ciphertext = (unsigned char *) sodium_malloc(ciphertext_len); + nonce = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_NPUBBYTES); + key = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_KEYBYTES); + + crypto_aead_aes256gcm_keygen(key); + randombytes_buf(nonce, crypto_aead_aes256gcm_NPUBBYTES); + randombytes_buf(message, message_len); + crypto_aead_aes256gcm_encrypt(ciphertext, NULL, message, message_len, + NULL, 0, NULL, nonce, key); + if (crypto_aead_aes256gcm_decrypt(message2, NULL, NULL, + ciphertext, ciphertext_len, + NULL, 0, nonce, key) != 0) { + printf("Decryption of random ciphertext failed"); + } + assert(message_len == 0 || memcmp(message, message2, message_len) == 0); + sodium_free(key); + sodium_free(nonce); + sodium_free(ciphertext); + sodium_free(message2); + sodium_free(message); + } + + return 0; +} + +int +main(void) +{ + if (crypto_aead_aes256gcm_is_available()) { + tv(); + tv2(); + } + assert(crypto_aead_aes256gcm_keybytes() == crypto_aead_aes256gcm_KEYBYTES); + assert(crypto_aead_aes256gcm_nsecbytes() == crypto_aead_aes256gcm_NSECBYTES); + assert(crypto_aead_aes256gcm_npubbytes() == crypto_aead_aes256gcm_NPUBBYTES); + assert(crypto_aead_aes256gcm_abytes() == crypto_aead_aes256gcm_ABYTES); + assert(crypto_aead_aes256gcm_statebytes() >= sizeof(crypto_aead_aes256gcm_state)); + assert(crypto_aead_aes256gcm_messagebytes_max() == crypto_aead_aes256gcm_MESSAGEBYTES_MAX); + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.exp b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.c b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.c new file mode 100644 index 0000000..43170b5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.c @@ -0,0 +1,276 @@ + +#define TEST_NAME "aead_aes256gcm2" +#include "cmptest.h" + +static struct { + const char *key_hex; + const char nonce_hex[crypto_aead_aes256gcm_NPUBBYTES * 2 + 1]; + const char *ad_hex; + const char *message_hex; + const char *detached_ciphertext_hex; + const char mac_hex[crypto_aead_aes256gcm_ABYTES * 2 + 1]; + const char *outcome; +} tests[] = { + { "92ace3e348cd821092cd921aa3546374299ab46209691bc28b8752d17f123c20", + "00112233445566778899aabb", "00000000ffffffff", "00010203040506070809", + "e27abdd2d2a53d2f136b", "9a4a2579529301bcfb71c78d4060f52c", "valid" }, + { "29d3a44f8723dc640239100c365423a312934ac80239212ac3df3421a2098123", + "00112233445566778899aabb", "aabbccddeeff", "", "", + "2a7d77fa526b8250cb296078926b5020", "valid" }, + { "cc56b680552eb75008f5484b4cb803fa5063ebd6eab91f6ab6aef4916a766273", + "99e23ec48985bccdeeab60f1", "", "2a", "06", + "633c1e9703ef744ffffb40edf9d14355", "valid" }, + { "51e4bf2bad92b7aff1a4bc05550ba81df4b96fabf41c12c7b00e60e48db7e152", + "4f07afedfdc3b6c2361823d3", "", "be3308f72a2c6aed", "cf332a12fdee800b", + "602e8d7c4799d62c140c9bb834876b09", "valid" }, + { "67119627bd988eda906219e08c0d0d779a07d208ce8a4fe0709af755eeec6dcb", + "68ab7fdbf61901dad461d23c", "", "51f8c1f731ea14acdb210a6d973e07", + "43fc101bff4b32bfadd3daf57a590e", "ec04aacb7148a8b8be44cb7eaf4efa69", + "valid" }, + { "59d4eafb4de0cfc7d3db99a8f54b15d7b39f0acc8da69763b019c1699f87674a", + "2fcb1b38a99e71b84740ad9b", "", "549b365af913f3b081131ccb6b825588", + "f58c16690122d75356907fd96b570fca", "28752c20153092818faba2a334640d6e", + "valid" }, + { "3b2458d8176e1621c0cc24c0c0e24c1e80d72f7ee9149a4b166176629616d011", + "45aaa3e5d16d2d42dc03445d", "", "3ff1514b1c503915918f0c0c31094a6e1f", + "73a6b6f45f6ccc5131e07f2caa1f2e2f56", "2d7379ec1db5952d4e95d30c340b1b1d", + "valid" }, + { "0212a8de5007ed87b33f1a7090b6114f9e08cefd9607f2c276bdcfdbc5ce9cd7", + "e6b1adf2fd58a8762c65f31b", "", + "10f1ecf9c60584665d9ae5efe279e7f7377eea6916d2b111", + "0843fff52d934fc7a071ea62c0bd351ce85678cde3ea2c9e", + "7355fde599006715053813ce696237a8", "valid" }, + { "b279f57e19c8f53f2f963f5f2519fdb7c1779be2ca2b3ae8e1128b7d6c627fc4", + "98bc2c7438d5cd7665d76f6e", "c0", + "fcc515b294408c8645c9183e3f4ecee5127846d1", + "eb5500e3825952866d911253f8de860c00831c81", + "ecb660e1fb0541ec41e8d68a64141b3a", "valid" }, + { "cdccfe3f46d782ef47df4e72f0c02d9c7f774def970d23486f11a57f54247f17", + "376187894605a8d45e30de51", "956846a209e087ed", + "e28e0e9f9d22463ac0e42639b530f42102fded75", + "feca44952447015b5df1f456df8ca4bb4eee2ce2", + "082e91924deeb77880e1b1c84f9b8d30", "valid" }, + { "f32364b1d339d82e4f132d8f4a0ec1ff7e746517fa07ef1a7f422f4e25a48194", + "5a86a50a0e8a179c734b996d", "ab2ac7c44c60bdf8228c7884adb20184", + "43891bccb522b1e72a6b53cf31c074e9d6c2df8e", + "43dda832e942e286da314daa99bef5071d9d2c78", + "c3922583476ced575404ddb85dd8cd44", "valid" }, + { "ff0089ee870a4a39f645b0a5da774f7a5911e9696fc9cad646452c2aa8595a12", + "bc2a7757d0ce2d8b1f14ccd9", + "972ab4e06390caae8f99dd6e2187be6c7ff2c08a24be16ef", + "748b28031621d95ee61812b4b4f47d04c6fc2ff3", + "a929ee7e67c7a2f91bbcec6389a3caf43ab49305", + "ebec6774b955e789591c822dab739e12", "valid" }, + { "00112233445566778899aabbccddeeff102132435465768798a9bacbdcedfe0f", + "000000000000000000000000", "", "561008fa07a68f5c61285cd013464eaf", + "23293e9b07ca7d1b0cae7cc489a973b3", "ffffffffffffffffffffffffffffffff", + "valid" }, + { "00112233445566778899aabbccddeeff102132435465768798a9bacbdcedfe0f", + "ffffffffffffffffffffffff", "", "c6152244cea1978d3e0bc274cf8c0b3b", + "7cb6fc7c6abc009efe9551a99f36a421", "00000000000000000000000000000000", + "valid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9de8fef6d8ab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ee8fef6d8ab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "1ce8fef6d8ab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce9fef6d8ab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fe76d8ab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d9ab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6daab1bf1bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1b71bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1be887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf13f887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bfa87232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887332eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232ebb590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232e8b590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf8872326ab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab590dc", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab590df", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab5909d", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab5905d", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9de8fef6d8ab1bf1be887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fe76d8ab1b71bf887232eab590dd", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1b71bf887232eab5905d", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "631701092754e40e40778dcd154a6f22", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "00000000000000000000000000000000", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "ffffffffffffffffffffffffffffffff", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "1c687e76582b9b713f08f2b26a35105d", + "invalid" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f", + "b2061457c0759fc1749f174ee1ccadfa", "9de9fff7d9aa1af0be897333ebb491dc", + "invalid" } +}; + +static int +tv(void) +{ + unsigned char *ad; + unsigned char *decrypted; + unsigned char *detached_ciphertext; + unsigned char *key; + unsigned char *message; + unsigned char *mac; + unsigned char *nonce; + size_t ad_len; + size_t detached_ciphertext_len; + size_t message_len; + unsigned int i; + + key = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_KEYBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_NPUBBYTES); + mac = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_ABYTES); + + for (i = 0U; i < (sizeof tests) / (sizeof tests[0]); i++) { + assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aes256gcm_KEYBYTES); + sodium_hex2bin(key, crypto_aead_aes256gcm_KEYBYTES, tests[i].key_hex, + strlen(tests[i].key_hex), NULL, NULL, NULL); + + assert(strlen(tests[i].nonce_hex) == + 2 * crypto_aead_aes256gcm_NPUBBYTES); + sodium_hex2bin(nonce, crypto_aead_aes256gcm_NPUBBYTES, + tests[i].nonce_hex, strlen(tests[i].nonce_hex), NULL, + NULL, NULL); + + message_len = strlen(tests[i].message_hex) / 2; + message = (unsigned char *) sodium_malloc(message_len); + sodium_hex2bin(message, message_len, tests[i].message_hex, + strlen(tests[i].message_hex), NULL, NULL, NULL); + + ad_len = strlen(tests[i].ad_hex) / 2; + ad = (unsigned char *) sodium_malloc(ad_len); + sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex), + NULL, NULL, NULL); + + detached_ciphertext_len = message_len; + assert(strlen(tests[i].detached_ciphertext_hex) == 2 * message_len); + assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aes256gcm_ABYTES); + sodium_hex2bin(mac, crypto_aead_aes256gcm_ABYTES, tests[i].mac_hex, + strlen(tests[i].mac_hex), NULL, NULL, NULL); + + detached_ciphertext = + (unsigned char *) sodium_malloc(detached_ciphertext_len); + sodium_hex2bin(detached_ciphertext, detached_ciphertext_len, + tests[i].detached_ciphertext_hex, + strlen(tests[i].detached_ciphertext_hex), NULL, NULL, + NULL); + + decrypted = (unsigned char *) sodium_malloc(message_len); + if (crypto_aead_aes256gcm_decrypt_detached( + decrypted, NULL, detached_ciphertext, detached_ciphertext_len, + mac, ad, ad_len, nonce, key) == 0) { + if (strcmp(tests[i].outcome, "valid") != 0) { + printf("*** test case %u succeeded, was supposed to be %s\n", i, + tests[i].outcome); + } + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", + (unsigned int) i); + } + } else { + if (strcmp(tests[i].outcome, "invalid") != 0) { + printf("*** test case %u failed, was supposed to be %s\n", i, + tests[i].outcome); + } + } + + sodium_free(message); + sodium_free(ad); + sodium_free(decrypted); + sodium_free(detached_ciphertext); + } + + sodium_free(key); + sodium_free(mac); + sodium_free(nonce); + + return 0; +} + +int +main(void) +{ + if (crypto_aead_aes256gcm_is_available()) { + tv(); + } + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.exp b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.c b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.c new file mode 100644 index 0000000..0a01afe --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.c @@ -0,0 +1,372 @@ + +#define TEST_NAME "aead_chacha20poly1305" +#include "cmptest.h" + +static int +tv(void) +{ +#undef MLEN +#define MLEN 10U +#undef ADLEN +#define ADLEN 10U +#undef CLEN +#define CLEN (MLEN + crypto_aead_chacha20poly1305_ABYTES) + static const unsigned char firstkey[crypto_aead_chacha20poly1305_KEYBYTES] + = { 0x42, 0x90, 0xbc, 0xb1, 0x54, 0x17, 0x35, 0x31, 0xf3, 0x14, 0xaf, + 0x57, 0xf3, 0xbe, 0x3b, 0x50, 0x06, 0xda, 0x37, 0x1e, 0xce, 0x27, + 0x2a, 0xfa, 0x1b, 0x5d, 0xbd, 0xd1, 0x10, 0x0a, 0x10, 0x07 }; + static const unsigned char m[MLEN] + = { 0x86, 0xd0, 0x99, 0x74, 0x84, 0x0b, 0xde, 0xd2, 0xa5, 0xca }; + static const unsigned char nonce[crypto_aead_chacha20poly1305_NPUBBYTES] + = { 0xcd, 0x7c, 0xf6, 0x7b, 0xe3, 0x9c, 0x79, 0x4a }; + static const unsigned char ad[ADLEN] + = { 0x87, 0xe2, 0x29, 0xd4, 0x50, 0x08, 0x45, 0xa0, 0x79, 0xc0 }; + unsigned char *c = (unsigned char *) sodium_malloc(CLEN); + unsigned char *detached_c = (unsigned char *) sodium_malloc(MLEN); + unsigned char *mac = (unsigned char *) sodium_malloc(crypto_aead_chacha20poly1305_ABYTES); + unsigned char *m2 = (unsigned char *) sodium_malloc(MLEN); + unsigned long long found_clen; + unsigned long long found_maclen; + unsigned long long m2len; + size_t i; + + crypto_aead_chacha20poly1305_encrypt(c, &found_clen, m, MLEN, + ad, ADLEN, + NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("found_clen is not properly set\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + crypto_aead_chacha20poly1305_encrypt_detached(detached_c, + mac, &found_maclen, + m, MLEN, ad, ADLEN, + NULL, nonce, firstkey); + if (found_maclen != crypto_aead_chacha20poly1305_abytes()) { + printf("found_maclen is not properly set\n"); + } + if (memcmp(detached_c, c, MLEN) != 0) { + printf("detached ciphertext is bogus\n"); + } + + if (crypto_aead_chacha20poly1305_decrypt(m2, &m2len, NULL, c, CLEN, + ad, ADLEN, + nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_decrypt() failed\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("m != m2\n"); + } + memset(m2, 0, m2len); + assert(crypto_aead_chacha20poly1305_decrypt_detached(NULL, NULL, + c, MLEN, mac, + ad, ADLEN, + nonce, firstkey) == 0); + if (crypto_aead_chacha20poly1305_decrypt_detached(m2, NULL, + c, MLEN, mac, + ad, ADLEN, + nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_decrypt_detached() failed\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("detached m != m2\n"); + } + + for (i = 0U; i < CLEN; i++) { + c[i] ^= (i + 1U); + if (crypto_aead_chacha20poly1305_decrypt(m2, NULL, NULL, c, CLEN, + ad, ADLEN, nonce, firstkey) + == 0 || memcmp(m, m2, MLEN) == 0) { + printf("message can be forged\n"); + } + c[i] ^= (i + 1U); + } + + crypto_aead_chacha20poly1305_encrypt(c, &found_clen, m, MLEN, + NULL, 0U, NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("found_clen is not properly set (adlen=0)\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + + if (crypto_aead_chacha20poly1305_decrypt(m2, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_decrypt() failed (adlen=0)\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set (adlen=0)\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("m != m2 (adlen=0)\n"); + } + m2len = 1; + if (crypto_aead_chacha20poly1305_decrypt( + m2, &m2len, NULL, guard_page, + randombytes_uniform(crypto_aead_chacha20poly1305_ABYTES), + NULL, 0U, nonce, firstkey) != -1) { + printf("crypto_aead_chacha20poly1305_decrypt() worked with a short " + "ciphertext\n"); + } + if (m2len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + m2len = 1; + if (crypto_aead_chacha20poly1305_decrypt(m2, &m2len, NULL, c, 0U, NULL, 0U, + nonce, firstkey) != -1) { + printf("crypto_aead_chacha20poly1305_decrypt() worked with an empty " + "ciphertext\n"); + } + if (m2len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + + memcpy(c, m, MLEN); + crypto_aead_chacha20poly1305_encrypt(c, &found_clen, c, MLEN, + NULL, 0U, NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("found_clen is not properly set (adlen=0)\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + + if (crypto_aead_chacha20poly1305_decrypt(c, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_decrypt() failed (adlen=0)\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set (adlen=0)\n"); + } + if (memcmp(m, c, MLEN) != 0) { + printf("m != c (adlen=0)\n"); + } + + sodium_free(c); + sodium_free(detached_c); + sodium_free(mac); + sodium_free(m2); + + assert(crypto_aead_chacha20poly1305_keybytes() > 0U); + assert(crypto_aead_chacha20poly1305_npubbytes() > 0U); + assert(crypto_aead_chacha20poly1305_nsecbytes() == 0U); + assert(crypto_aead_chacha20poly1305_messagebytes_max() > 0U); + assert(crypto_aead_chacha20poly1305_messagebytes_max() == crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX); + assert(crypto_aead_chacha20poly1305_keybytes() == crypto_aead_chacha20poly1305_KEYBYTES); + assert(crypto_aead_chacha20poly1305_nsecbytes() == crypto_aead_chacha20poly1305_NSECBYTES); + assert(crypto_aead_chacha20poly1305_npubbytes() == crypto_aead_chacha20poly1305_NPUBBYTES); + assert(crypto_aead_chacha20poly1305_abytes() == crypto_aead_chacha20poly1305_ABYTES); + + return 0; +} + +static int +tv_ietf(void) +{ +#undef MLEN +#define MLEN 114U +#undef ADLEN +#define ADLEN 12U +#undef CLEN +#define CLEN (MLEN + crypto_aead_chacha20poly1305_ietf_ABYTES) + static const unsigned char firstkey[crypto_aead_chacha20poly1305_ietf_KEYBYTES] + = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f + }; +#undef MESSAGE +#define MESSAGE "Ladies and Gentlemen of the class of '99: If I could offer you " \ +"only one tip for the future, sunscreen would be it." + unsigned char *m = (unsigned char *) sodium_malloc(MLEN); + static const unsigned char nonce[crypto_aead_chacha20poly1305_ietf_NPUBBYTES] + = { 0x07, 0x00, 0x00, 0x00, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 }; + static const unsigned char ad[ADLEN] + = { 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 }; + unsigned char *c = (unsigned char *) sodium_malloc(CLEN); + unsigned char *detached_c = (unsigned char *) sodium_malloc(MLEN); + unsigned char *mac = (unsigned char *) sodium_malloc(crypto_aead_chacha20poly1305_ietf_ABYTES); + unsigned char *m2 = (unsigned char *) sodium_malloc(MLEN); + unsigned long long found_clen; + unsigned long long found_maclen; + unsigned long long m2len; + size_t i; + + assert(sizeof MESSAGE - 1U == MLEN); + memcpy(m, MESSAGE, MLEN); + crypto_aead_chacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, + ad, ADLEN, + NULL, nonce, firstkey); + if (found_clen != MLEN + crypto_aead_chacha20poly1305_ietf_abytes()) { + printf("found_clen is not properly set\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + crypto_aead_chacha20poly1305_ietf_encrypt_detached(detached_c, + mac, &found_maclen, + m, MLEN, + ad, ADLEN, + NULL, nonce, firstkey); + if (found_maclen != crypto_aead_chacha20poly1305_ietf_abytes()) { + printf("found_maclen is not properly set\n"); + } + if (memcmp(detached_c, c, MLEN) != 0) { + printf("detached ciphertext is bogus\n"); + } + + if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, ad, + ADLEN, nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_ietf_decrypt() failed\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("m != m2\n"); + } + memset(m2, 0, m2len); + assert(crypto_aead_chacha20poly1305_ietf_decrypt_detached(NULL, NULL, + c, MLEN, mac, + ad, ADLEN, + nonce, firstkey) == 0); + if (crypto_aead_chacha20poly1305_ietf_decrypt_detached(m2, NULL, + c, MLEN, mac, + ad, ADLEN, + nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_ietf_decrypt_detached() failed\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("detached m != m2\n"); + } + + for (i = 0U; i < CLEN; i++) { + c[i] ^= (i + 1U); + if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, NULL, NULL, c, CLEN, + ad, ADLEN, nonce, firstkey) + == 0 || memcmp(m, m2, MLEN) == 0) { + printf("message can be forged\n"); + } + c[i] ^= (i + 1U); + } + crypto_aead_chacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, + NULL, 0U, NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("clen is not properly set (adlen=0)\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set (adlen=0)\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("m != m2 (adlen=0)\n"); + } + m2len = 1; + if (crypto_aead_chacha20poly1305_ietf_decrypt( + m2, &m2len, NULL, guard_page, + randombytes_uniform(crypto_aead_chacha20poly1305_ietf_ABYTES), + NULL, 0U, nonce, firstkey) != -1) { + printf("crypto_aead_chacha20poly1305_ietf_decrypt() worked with a short " + "ciphertext\n"); + } + if (m2len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + m2len = 1; + if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, 0U, NULL, 0U, + nonce, firstkey) != -1) { + printf("crypto_aead_chacha20poly1305_ietf_decrypt() worked with an empty " + "ciphertext\n"); + } + if (m2len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + + memcpy(c, m, MLEN); + crypto_aead_chacha20poly1305_ietf_encrypt(c, &found_clen, c, MLEN, + NULL, 0U, NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("clen is not properly set (adlen=0)\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + + if (crypto_aead_chacha20poly1305_ietf_decrypt(c, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, firstkey) != 0) { + printf("crypto_aead_chacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set (adlen=0)\n"); + } + if (memcmp(m, c, MLEN) != 0) { + printf("m != c (adlen=0)\n"); + } + + sodium_free(c); + sodium_free(detached_c); + sodium_free(mac); + sodium_free(m2); + sodium_free(m); + + assert(crypto_aead_chacha20poly1305_ietf_keybytes() > 0U); + assert(crypto_aead_chacha20poly1305_ietf_keybytes() == crypto_aead_chacha20poly1305_keybytes()); + assert(crypto_aead_chacha20poly1305_ietf_npubbytes() > 0U); + assert(crypto_aead_chacha20poly1305_ietf_npubbytes() > crypto_aead_chacha20poly1305_npubbytes()); + assert(crypto_aead_chacha20poly1305_ietf_nsecbytes() == 0U); + assert(crypto_aead_chacha20poly1305_ietf_nsecbytes() == crypto_aead_chacha20poly1305_nsecbytes()); + assert(crypto_aead_chacha20poly1305_ietf_messagebytes_max() == crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX); + assert(crypto_aead_chacha20poly1305_IETF_KEYBYTES == crypto_aead_chacha20poly1305_ietf_KEYBYTES); + assert(crypto_aead_chacha20poly1305_IETF_NSECBYTES == crypto_aead_chacha20poly1305_ietf_NSECBYTES); + assert(crypto_aead_chacha20poly1305_IETF_NPUBBYTES == crypto_aead_chacha20poly1305_ietf_NPUBBYTES); + assert(crypto_aead_chacha20poly1305_IETF_ABYTES == crypto_aead_chacha20poly1305_ietf_ABYTES); + assert(crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX == crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX); + + return 0; +} + +int +main(void) +{ + tv(); + tv_ietf(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.exp b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.exp new file mode 100644 index 0000000..1c6131f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.exp @@ -0,0 +1,63 @@ +,0xe3,0xe4,0x46,0xf7,0xed,0xe9,0xa1,0x9b +,0x62,0xa4,0x67,0x7d,0xab,0xf4,0xe3,0xd2 +,0x4b,0x87,0x6b,0xb2,0x84,0x75,0x38,0x96 +,0xe1,0xd6 +,0xe3,0xe4,0x46,0xf7,0xed,0xe9,0xa1,0x9b +,0x62,0xa4,0x69,0xe7,0x78,0x9b,0xcd,0x95 +,0x4e,0x65,0x8e,0xd3,0x84,0x23,0xe2,0x31 +,0x61,0xdc +,0xe3,0xe4,0x46,0xf7,0xed,0xe9,0xa1,0x9b +,0x62,0xa4,0x69,0xe7,0x78,0x9b,0xcd,0x95 +,0x4e,0x65,0x8e,0xd3,0x84,0x23,0xe2,0x31 +,0x61,0xdc +,0xd3,0x1a,0x8d,0x34,0x64,0x8e,0x60,0xdb +,0x7b,0x86,0xaf,0xbc,0x53,0xef,0x7e,0xc2 +,0xa4,0xad,0xed,0x51,0x29,0x6e,0x08,0xfe +,0xa9,0xe2,0xb5,0xa7,0x36,0xee,0x62,0xd6 +,0x3d,0xbe,0xa4,0x5e,0x8c,0xa9,0x67,0x12 +,0x82,0xfa,0xfb,0x69,0xda,0x92,0x72,0x8b +,0x1a,0x71,0xde,0x0a,0x9e,0x06,0x0b,0x29 +,0x05,0xd6,0xa5,0xb6,0x7e,0xcd,0x3b,0x36 +,0x92,0xdd,0xbd,0x7f,0x2d,0x77,0x8b,0x8c +,0x98,0x03,0xae,0xe3,0x28,0x09,0x1b,0x58 +,0xfa,0xb3,0x24,0xe4,0xfa,0xd6,0x75,0x94 +,0x55,0x85,0x80,0x8b,0x48,0x31,0xd7,0xbc +,0x3f,0xf4,0xde,0xf0,0x8e,0x4b,0x7a,0x9d +,0xe5,0x76,0xd2,0x65,0x86,0xce,0xc6,0x4b +,0x61,0x16,0x1a,0xe1,0x0b,0x59,0x4f,0x09 +,0xe2,0x6a,0x7e,0x90,0x2e,0xcb,0xd0,0x60 +,0x06,0x91 +,0xd3,0x1a,0x8d,0x34,0x64,0x8e,0x60,0xdb +,0x7b,0x86,0xaf,0xbc,0x53,0xef,0x7e,0xc2 +,0xa4,0xad,0xed,0x51,0x29,0x6e,0x08,0xfe +,0xa9,0xe2,0xb5,0xa7,0x36,0xee,0x62,0xd6 +,0x3d,0xbe,0xa4,0x5e,0x8c,0xa9,0x67,0x12 +,0x82,0xfa,0xfb,0x69,0xda,0x92,0x72,0x8b +,0x1a,0x71,0xde,0x0a,0x9e,0x06,0x0b,0x29 +,0x05,0xd6,0xa5,0xb6,0x7e,0xcd,0x3b,0x36 +,0x92,0xdd,0xbd,0x7f,0x2d,0x77,0x8b,0x8c +,0x98,0x03,0xae,0xe3,0x28,0x09,0x1b,0x58 +,0xfa,0xb3,0x24,0xe4,0xfa,0xd6,0x75,0x94 +,0x55,0x85,0x80,0x8b,0x48,0x31,0xd7,0xbc +,0x3f,0xf4,0xde,0xf0,0x8e,0x4b,0x7a,0x9d +,0xe5,0x76,0xd2,0x65,0x86,0xce,0xc6,0x4b +,0x61,0x16,0x6a,0x23,0xa4,0x68,0x1f,0xd5 +,0x94,0x56,0xae,0xa1,0xd2,0x9f,0x82,0x47 +,0x72,0x16 +,0xd3,0x1a,0x8d,0x34,0x64,0x8e,0x60,0xdb +,0x7b,0x86,0xaf,0xbc,0x53,0xef,0x7e,0xc2 +,0xa4,0xad,0xed,0x51,0x29,0x6e,0x08,0xfe +,0xa9,0xe2,0xb5,0xa7,0x36,0xee,0x62,0xd6 +,0x3d,0xbe,0xa4,0x5e,0x8c,0xa9,0x67,0x12 +,0x82,0xfa,0xfb,0x69,0xda,0x92,0x72,0x8b +,0x1a,0x71,0xde,0x0a,0x9e,0x06,0x0b,0x29 +,0x05,0xd6,0xa5,0xb6,0x7e,0xcd,0x3b,0x36 +,0x92,0xdd,0xbd,0x7f,0x2d,0x77,0x8b,0x8c +,0x98,0x03,0xae,0xe3,0x28,0x09,0x1b,0x58 +,0xfa,0xb3,0x24,0xe4,0xfa,0xd6,0x75,0x94 +,0x55,0x85,0x80,0x8b,0x48,0x31,0xd7,0xbc +,0x3f,0xf4,0xde,0xf0,0x8e,0x4b,0x7a,0x9d +,0xe5,0x76,0xd2,0x65,0x86,0xce,0xc6,0x4b +,0x61,0x16,0x6a,0x23,0xa4,0x68,0x1f,0xd5 +,0x94,0x56,0xae,0xa1,0xd2,0x9f,0x82,0x47 +,0x72,0x16 diff --git a/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.c b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.c new file mode 100644 index 0000000..8c59eca --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.c @@ -0,0 +1,1046 @@ + +#define TEST_NAME "aead_chacha20poly13052" +#include "cmptest.h" + +static struct { + const char *key_hex; + const char nonce_hex[crypto_aead_chacha20poly1305_ietf_NPUBBYTES * 2 + 1]; + const char *ad_hex; + const char *message_hex; + const char *detached_ciphertext_hex; + const char mac_hex[crypto_aead_chacha20poly1305_ietf_ABYTES * 2 + 1]; + const char *outcome; +} tests[] = { + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "070000004041424344454647", "50515253c0c1c2c3c4c5c6c7", + "4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66" + "202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e6520" + "74697020666f7220746865206675747572652c2073756e73637265656e20776f756c6420" + "62652069742e", + "d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e" + "8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c" + "9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d265" + "86cec64b6116", + "1ae10b594f09e26a7e902ecbd0600691", "valid" }, + { "80ba3192c803ce965ea371d5ff073cf0f43b6a2ab576b208426e11409c09b9b0", + "4da5bf8dfd5852c1ea12379d", "", "", "", + "76acb342cf3166a5b63c0c0ea1383c8d", "valid" }, + { "7a4cd759172e02eb204db2c3f5c746227df584fc1345196391dbb9577a250742", + "a92ef0ac991dd516a3c6f689", "bd506764f2d2c410", "", "", + "906fa6284b52f87b7359cbaa7563c709", "valid" }, + { "cc56b680552eb75008f5484b4cb803fa5063ebd6eab91f6ab6aef4916a766273", + "99e23ec48985bccdeeab60f1", "", "2a", "3a", + "cac27dec0968801e9f6eded69d807522", "valid" }, + { "46f0254965f769d52bdb4a70b443199f8ef207520d1220c55e4b70f0fda620ee", + "ab0dca716ee051d2782f4403", "91ca6c592cbcca53", "51", "c4", + "168310ca45b1f7c66cad4e99e43f72b9", "valid" }, + { "2f7f7e4f592bb389194989743507bf3ee9cbde1786b6695fe6c025fd9ba4c100", + "461af122e9f2e0347e03f2db", "", "5c60", "4d13", + "91e8b61efb39c122195453077b22e5e2", "valid" }, + { "c8833dce5ea9f248aa2030eacfe72bffe69a620caf793344e5718fe0d7ab1a58", + "61546ba5f1720590b6040ac6", "88364fc8060518bf", "ddf2", "b60d", + "ead0fd4697ec2e5558237719d02437a2", "valid" }, + { "55568158d3a6483f1f7021eab69b703f614251cadc1af5d34a374fdbfc5adac7", + "3c4e654d663fa4596dc55bb7", "", "ab85e9c1571731", "5dfe3440dbb3c3", + "ed7a434e2602d394281e0afa9fb7aa42", "valid" }, + { "e3c09e7fab1aefb516da6a33022a1dd4eb272c80d540c5da52a730f34d840d7f", + "58389375c69ee398de948396", "84e46be8c0919053", "4ee5cda20d4290", + "4bd47212941ce3", "185f1408ee7fbf18f5abad6e2253a1ba", "valid" }, + { "51e4bf2bad92b7aff1a4bc05550ba81df4b96fabf41c12c7b00e60e48db7e152", + "4f07afedfdc3b6c2361823d3", "", "be3308f72a2c6aed", "8e9439a56eeec817", + "fbe8a6ed8fabb1937539dd6c00e90021", "valid" }, + { "1131c1418577a054de7a4ac551950f1a053f9ae46e5b75fe4abd5608d7cddadd", + "b4ea666ee119563366484a78", "66c0ae70076cb14d", "a4c9c2801b71f7df", + "b9b910433af052b0", "4530f51aeee024e0a445a6328fa67a18", "valid" }, + { "99b62bd5afbe3fb015bde93f0abf483957a1c3eb3ca59cb50b39f7f8a9cc51be", + "9a59fce26df0005e07538656", "", "42baae5978feaf5c368d14e0", + "ff7dc203b26c467a6b50db33", "578c0f2758c2e14e36d4fc106dcb29b4", "valid" }, + { "85f35b6282cff440bc1020c8136ff27031110fa63ec16f1e825118b006b91257", + "58dbd4ad2c4ad35dd906e9ce", "a506e1a5c69093f9", + "fdc85b94a4b2a6b759b1a0da", "9f8816de0994e938d9e53f95", + "d086fc6c9d8fa915fd8423a7cf05072f", "valid" }, + { "67119627bd988eda906219e08c0d0d779a07d208ce8a4fe0709af755eeec6dcb", + "68ab7fdbf61901dad461d23c", "", "51f8c1f731ea14acdb210a6d973e07", + "0b29638e1fbdd6df53970be2210042", "2a9134087d67a46e79178d0a93f5e1d2", + "valid" }, + { "e6f1118d41e4b43fb58221b7ed79673834e0d8ac5c4fa60bbc8bc4893a58894d", + "d95b3243afaef714c5035b6a", "6453a53384632212", + "97469da667d6110f9cbda1d1a20673", "32db66c4a3819d81557455e5980fed", + "feae30dec94e6ad3a9eea06a0d703917", "valid" }, + { "59d4eafb4de0cfc7d3db99a8f54b15d7b39f0acc8da69763b019c1699f87674a", + "2fcb1b38a99e71b84740ad9b", "", "549b365af913f3b081131ccb6b825588", + "e9110e9f56ab3ca483500ceabab67a13", "836ccabf15a6a22a51c1071cfa68fa0c", + "valid" }, + { "b907a45075513fe8a8019edee3f2591487b2a030b03c6e1d771c862571d2ea1e", + "118a6964c2d3e380071f5266", "034585621af8d7ff", + "55a465644f5b650928cbee7c063214d6", "e4b113cb775945f3d3a8ae9ec141c00c", + "7c43f16ce096d0dc27c95849dc383b7d", "valid" }, + { "3b2458d8176e1621c0cc24c0c0e24c1e80d72f7ee9149a4b166176629616d011", + "45aaa3e5d16d2d42dc03445d", "", "3ff1514b1c503915918f0c0c31094a6e1f", + "02cc3acb5ee1fcdd12a03bb857976474d3", "d83b7463a2c3800fe958c28eaa290813", + "valid" }, + { "f60c6a1b625725f76c7037b48fe3577fa7f7b87b1bd5a982176d182306ffb870", + "f0384fb876121410633d993d", "9aaf299eeea78f79", + "63858ca3e2ce69887b578a3c167b421c9c", + "35766488d2bc7c2b8d17cbbb9abfad9e6d", "1f391e657b2738dda08448cba2811ceb", + "valid" }, + { "0212a8de5007ed87b33f1a7090b6114f9e08cefd9607f2c276bdcfdbc5ce9cd7", + "e6b1adf2fd58a8762c65f31b", "", + "10f1ecf9c60584665d9ae5efe279e7f7377eea6916d2b111", + "42f26c56cb4be21d9d8d0c80fc99dde00d75f38074bfe764", + "54aa7e13d48fff7d7557039457040a3a", "valid" }, + { "c5bc09565646e7edda954f1f739223dada20b95c44ab033d0fae4b0283d18be3", + "6b282ebecc541bcd7834ed55", "3e8bc5ade182ff08", + "9222f9018e54fd6de1200806a9ee8e4cc904d29f25cba193", + "123032437b4bfd6920e8f7e7e0087ae4889ebe7a0ad0e900", + "3cf68f179550da63d3b96c2d55411865", "valid" }, + { "2eb51c469aa8eb9e6c54a8349bae50a20f0e382711bba1152c424f03b6671d71", + "04a9be03508a5f31371a6fd2", "", + "b053999286a2824f42cc8c203ab24e2c97a685adcc2ad32662558e55a5c729", + "45c7d6b53acad4abb68876a6e96a48fb59524d2c92c9d8a189c9fd2db91746", + "566d3ca10e311b695f3eae1551652493", "valid" }, + { "7f5b74c07ed1b40fd14358fe2ff2a740c116c7706510e6a437f19ea49911cec4", + "470a339ecb3219b8b81a1f8b", "374618a06ea98a48", + "f45206abc25552b2abc9ab7fa243035fedaaddc3b2293956f1ea6e7156e7eb", + "46a80c4187024720084627580080dde5a3f4a11093a7076ed6f3d326bc7b70", + "534d4aa2835a52e72d14df0e4f47f25f", "valid" }, + { "e1731d5854e1b70cb3ffe8b786a2b3ebf0994370954757b9dc8c7bc5354634a3", + "72cfd90ef3026ca22b7e6e6a", "", + "b9c554cbc36ac18ae897df7beecac1dbeb4eafa156bb60ce2e5d48f05715e678", + "ea29afa49d36e8760f5fe19723b9811ed5d519934a440f5081ac430b953b0e21", + "222541af46b86533c6b68d2ff108a7ea", "valid" }, + { "27d860631b0485a410702fea61bc873f3442260caded4abde25b786a2d97f145", + "262880d475f3dac5340dd1b8", "2333e5ce0f93b059", + "6b2604996cd30c14a13a5257ed6cffd3bc5e29d6b97eb1799eb335e281ea451e", + "6dad637897544d8bf6be9507ed4d1bb2e954bc427e5de729daf50762846ff2f4", + "7b997d93c982189d7095dc794c746232", "valid" }, + { "cf0d40a4644e5f51815165d5301b22631f4544c49a1878e3a0a5e8e1aae0f264", + "e74a515e7e2102b90bef55d2", "", + "973d0c753826bae466cf9abb3493152e9de7819e2bd0c71171346b4d2cebf8041aa3cedc" + "0dfd7b467e26228bc86c9a", + "fba78ae4f9d808a62e3da40be2cb7700c3613d9eb2c529c652e76a432c658d27095f0eb8" + "f940c324981ea935e507f9", + "8f046956db3a512908bd7afc8f2ab0a9", "valid" }, + { "6cbfd71c645d184cf5d23c402bdb0d25ec54898c8a0273d42eb5be109fdcb2ac", + "d4d807341683825b31cd4d95", "b3e4064683b02d84", + "a98995504df16f748bfb7785ff91eeb3b660ea9ed3450c3d5e7b0e79ef653659a9978d75" + "542ef91c456762215640b9", + "a1ffed80761829ecce242e0e88b138049016bca018da2b6e19986b3e318cae8d806198fb" + "4c527cc39350ebddeac573", + "c4cbf0befda0b70242c640d7cd02d7a3", "valid" }, + { "5b1d1035c0b17ee0b0444767f80a25b8c1b741f4b50a4d3052226baa1c6fb701", + "d61040a313ed492823cc065b", "", + "d096803181beef9e008ff85d5ddc38ddacf0f09ee5f7e07f1e4079cb64d0dc8f5e6711cd" + "4921a7887de76e2678fdc67618f1185586bfea9d4c685d50e4bb9a82", + "9a4ef22b181677b5755c08f747c0f8d8e8d4c18a9cc2405c12bb51bb1872c8e8b877678b" + "ec442cfcbb0ff464a64b74332cf072898c7e0eddf6232ea6e27efe50", + "9ff3427a0f32fa566d9ca0a78aefc013", "valid" }, + { "97d635c4f47574d9998a90875da1d3a284b755b2d39297a5725235190e10a97e", + "d31c21aba175b70de4ebb19c", "7193f623663321a2", + "94ee166d6d6ecf8832437136b4ae805d428864359586d9193a25016293edba443c58e07e" + "7b7195ec5bd84582a9d56c8d4a108c7d7ce34e6c6f8ea1bec0567317", + "5fbbdecc34be201614f636031eeb42f1cace3c79a12cffd871ee8e73820c829749f1abb4" + "294367849fb6c2aa56bda8a3078f723d7c1c852024b017b58973fb1e", + "09263da7b4cb921452f97dca40f580ec", "valid" }, + { "fe6e55bdaed1f7284ca5fc0f8c5f2b8df56dc0f49e8ca66a41995e783351f901", + "17c86a8abbb7e003acde2799", "", + "b429eb80fb8fe8baeda0c85b9c333458e7c2992e558475069d12d45c2221756412158803" + "2297eff56783742a5fc22d7410ffb29d66098661d76f126c3c27689e43b37267cac5a3a6" + "d3ab49e391da29cd3054a5692e2807e4c3ea46c8761d50f592", + "d0102f6c258bf49742cec34cf2d0fedf23d105fb4c84cf98515e1bc9a64f8ad5be8f0721" + "bde50645d00083c3a263a31053b760245f52ae2866a5ec83b19f61be1d30d5c5d9fecc4c" + "bbe08fd385813a2aa39a00ff9c10f7f23702add1e4b2ffa31c", + "41865fc71de12b19612127ce49993bb0", "valid" }, + { "aabc063474e65c4c3e9bdc480dea97b45110c8618846ff6b15bdd2a4a5682c4e", + "46362f45d6379e63e5229460", "a11c40b603767330", + "ceb534ce50dc23ff638ace3ef63ab2cc2973eeada80785fc165d06c2f5100ff5e8ab2882" + "c475afcd05ccd49f2e7d8f55ef3a72e3dc51d6852b8e6b9e7aece57be6556b0b6d9413e3" + "3fc5fc24a9a205ad59574bb39d944a92dc47970d84a6ad3176", + "7545391b51de01d5c53dfaca777909063e58edee4bb1227e7110ac4d2620c2aec2f848f5" + "6deeb037a8dced75afa8a6c890e2dee42f950bb33d9e2424d08a505d899563973ed38870" + "f3de6ee2adc7fe072c366c14e2cf7ca62fb3d36bee11685461", + "b70d44ef8c66c5c7bbf10dcadd7facf6", "valid" }, + { "7d00b48095adfa3272050607b264185002ba99957c498be022770f2ce2f3143c", + "87345f1055fd9e2102d50656", "02", "e5ccaa441bc814688f8f6e8f28b500b2", + "7e72f5a185af16a611921b438f749f0b", "1242c670732334029adfe1c5001651e4", + "valid" }, + { "6432717f1db85e41ac7836bce25185a080d5762b9e2b18444b6ec72c3bd8e4dc", + "87a3163ec0598ad95b3aa713", "b648", "02cde168fba3f544bbd0332f7adeada8", + "85f29a719557cdd14d1f8fffab6d9e60", "732ca32becd515a1ed353f542e999858", + "valid" }, + { "8e34cf73d245a1082a920b86364eb896c4946467bcb3d58929fcb36690e6394f", + "6f573aa86baa492ba46596df", "bd4cd02fc7502bbdbdf6c9a3cbe8f0", + "16ddd23ff53f3d23c06334487040eb47", "c1b295936d56fadac03e5f742bff73a1", + "39c457dbab66382babb3b55800cda5b8", "valid" }, + { "cb5575f5c7c45c91cf320b139fb594237560d0a3e6f865a67d4f633f2c08f016", + "1a6518f02ede1da6809266d9", "89cce9fb47441d07e0245a66fe8b778b", + "623b7850c321e2cf0c6fbcc8dfd1aff2", "c84c9bb7c61c1bcb17772a1c500c5095", + "dbadf7a5138ca03459a2cd65831e092f", "valid" }, + { "a5569e729a69b24ba6e0ff15c4627897436824c941e9d00b2e93fddc4ba77657", + "564dee49ab00d240fc1068c3", "d19f2d989095f7ab03a5fde84416e00c0e", + "87b3a4d7b26d8d3203a0de1d64ef82e3", "94bc80621ed1e71b1fd2b5c3a15e3568", + "333511861796978401598b963722f5b3", "valid" }, + { "56207465b4e48e6d04630f4a42f35cfc163ab289c22a2b4784f6f9290330bee0", + "df8713e87ec3dbcfad14d53e", + "5e6470facd99c1d81e37cd44015fe19480a2a4d3352a4ff560c0640fdbda", + "e601b38557797da2f8a4106a089d1da6", "299b5d3f3d03c087209a16e285143111", + "4b454ed198de117e83ec49fa8d8508d6", "valid" }, + { "3937986af86dafc1ba0c4672d8abc46c207062682d9c264ab06d6c5807205130", + "8df4b15a888c33286a7b7651", + "ba446f6f9a0ced22450feb10737d9007fd69abc19b1d4d9049a5551e86ec2b37", + "dc9e9eaf11e314182df6a4eba17aec9c", "605bbf90aeb974f6602bc778056f0dca", + "38ea23d99054b46b42ffe004129d2204", "valid" }, + { "36372abcdb78e0279646ac3d176b9674e9154eecf0d5469c651ec7e16b4c1199", + "be40e5f1a11817a0a8fa8949", + "d41a828d5e71829247021905402ea257dccbc3b80fcd5675056b68bb59e62e8873", + "81ce84ede9b35859cc8c49a8f6be7dc6", "7b7ce0d824809a70de32562ccf2c2bbd", + "15d44a00ce0d19b4231f921e22bc0a43", "valid" }, + { "9f1479ed097d7fe529c11f2f5add9aaff4a1ca0b68997a2cb7f79749bd90aaf4", + "84c87dae4eee27730ec35d12", + "3f2dd49bbf09d69a78a3d80ea2566614fc379474196c1aae84583da73d7ff85c6f42ca42" + "056a9792cc1b9fb3c7d261", + "a66747c89e857af3a18e2c79500087ed", "ca82bff3e2f310ccc976672c4415e69b", + "57638c62a5d85ded774f913c813ea032", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000000000000000000000000000000", + "256d40888094178355d304846443fee8df99470303fb3b7b80e030beebd329be", + "0000000000000000000000000000000000000000000000000000000000000000", + "e6d3d7324a1cbba777bbb0ecdda37807", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000000000000000000000000000000", + "256d40888094178355d304846443fee8df99470303fb3b7b80e030beebd329bee3bcdb5b" + "1edefcfe8bcda1b6a15c8c2b0869ffd2ec5e26e553b7b227fe87fdbd", + "000000000000000000000000000000000000000000000000000000000000000000000000" + "00000000000000000000000000000000000000000000000000000000", + "062de6795f274fd2a305d76980bc9cce", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000000000000000000000000000000", + "256d40888094178355d304846443fee8df99470303fb3b7b80e030beebd329bee3bcdb5b" + "1edefcfe8bcda1b6a15c8c2b0869ffd2ec5e26e553b7b227fe87fdbd7ada44424269bffa" + "5527f270acf68502b74c5ae2e60c0580981a4938459392c49bb2f284b646efc7f3f0b136" + "1dc348ed77d30bc57692ed38fbac0188380488c7", + "000000000000000000000000000000000000000000000000000000000000000000000000" + "000000000000000000000000000000000000000000000000000000000000000000000000" + "000000000000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000", + "d8b47902baaeafb34203051529af282e", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffffffffffffffffffffffffffffff", + "da92bf777f6be87caa2cfb7b9bbc01172066b8fcfc04c4847f1fcf41142cd641", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "b3891c849cb52c27747edfcf31213bb6", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffffffffffffffffffffffffffffff", + "da92bf777f6be87caa2cfb7b9bbc01172066b8fcfc04c4847f1fcf41142cd6411c4324a4" + "e121030174325e495ea373d4f796002d13a1d91aac484dd801780242", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "f0c12d26ef03029b62c008da27c5dc68", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffffffffffffffffffffffffffffff", + "da92bf777f6be87caa2cfb7b9bbc01172066b8fcfc04c4847f1fcf41142cd6411c4324a4" + "e121030174325e495ea373d4f796002d13a1d91aac484dd8017802428525bbbdbd964005" + "aad80d8f53097afd48b3a51d19f3fa7f67e5b6c7ba6c6d3b644d0d7b49b910380c0f4ec9" + "e23cb712882cf43a896d12c70453fe77c7fb7738", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "ee65783001c25691fa28d0f5f1c1d762", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000080000000800000008000000080", + "256d40088094170355d304046443fe68df99478303fb3bfb80e0303eebd3293e", + "0000008000000080000000800000008000000080000000800000008000000080", + "79ba7a29f5a7bb75797af87a610129a4", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000080000000800000008000000080", + "256d40088094170355d304046443fe68df99478303fb3bfb80e0303eebd3293ee3bcdbdb" + "1edefc7e8bcda136a15c8cab0869ff52ec5e266553b7b2a7fe87fd3d", + "000000800000008000000080000000800000008000000080000000800000008000000080" + "00000080000000800000008000000080000000800000008000000080", + "36b1743819e1b9ba1551e8ed922a959a", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000080000000800000008000000080", + "256d40088094170355d304046443fe68df99478303fb3bfb80e0303eebd3293ee3bcdbdb" + "1edefc7e8bcda136a15c8cab0869ff52ec5e266553b7b2a7fe87fd3d7ada44c24269bf7a" + "5527f2f0acf68582b74c5a62e60c0500981a49b8459392449bb2f204b646ef47f3f0b1b6" + "1dc3486d77d30b457692edb8fbac010838048847", + "000000800000008000000080000000800000008000000080000000800000008000000080" + "000000800000008000000080000000800000008000000080000000800000008000000080" + "000000800000008000000080000000800000008000000080000000800000008000000080" + "0000008000000080000000800000008000000080", + "feac4955554e806f3a1902e24432c08a", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffff7fffffff7fffffff7fffffff7f", + "da92bff77f6be8fcaa2cfbfb9bbc01972066b87cfc04c4047f1fcfc1142cd6c1", + "ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f", + "20a3798df1292c5972bf9741aec38a19", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffff7fffffff7fffffff7fffffff7f", + "da92bff77f6be8fcaa2cfbfb9bbc01972066b87cfc04c4047f1fcfc1142cd6c11c432424" + "e121038174325ec95ea37354f79600ad13a1d99aac484d58017802c2", + "ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f" + "ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f", + "c03d9f67354a97b2f074f7551557e49c", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffff7fffffff7fffffff7fffffff7f", + "da92bff77f6be8fcaa2cfbfb9bbc01972066b87cfc04c4047f1fcfc1142cd6c11c432424" + "e121038174325ec95ea37354f79600ad13a1d99aac484d58017802c28525bb3dbd964085" + "aad80d0f53097a7d48b3a59d19f3faff67e5b647ba6c6dbb644d0dfb49b910b80c0f4e49" + "e23cb792882cf4ba896d12470453fef7c7fb77b8", + "ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f" + "ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f" + "ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f" + "ffffff7fffffff7fffffff7fffffff7fffffff7f", + "c86da8dd652286d50213d328d63e4006", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "7fffffff7fffffff7fffffff7fffffff", + "5a92bf77ff6be87c2a2cfb7b1bbc0117a066b8fc7c04c484ff1fcf41942cd641", + "7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff", + "bede9083ceb36ddfe5fa811f95471c67", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "7fffffff7fffffff7fffffff7fffffff", + "5a92bf77ff6be87c2a2cfb7b1bbc0117a066b8fc7c04c484ff1fcf41942cd6419c4324a4" + "61210301f4325e49dea373d47796002d93a1d91a2c484dd881780242", + "7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff" + "7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff", + "300874bb0692b689dead9ae15b067390", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "7fffffff7fffffff7fffffff7fffffff", + "5a92bf77ff6be87c2a2cfb7b1bbc0117a066b8fc7c04c484ff1fcf41942cd6419c4324a4" + "61210301f4325e49dea373d47796002d93a1d91a2c484dd8817802420525bbbd3d964005" + "2ad80d8fd3097afdc8b3a51d99f3fa7fe7e5b6c73a6c6d3be44d0d7bc9b910388c0f4ec9" + "623cb712082cf43a096d12c78453fe7747fb7738", + "7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff" + "7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff" + "7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff" + "7fffffff7fffffff7fffffff7fffffff7fffffff", + "99cad85f45ca40942d0d4d5e950ade22", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000000ffffffff00000000ffffffff", + "256d40887f6be87c55d304849bbc0117df994703fc04c48480e030be142cd641", + "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff", + "8bbe145272e7c2d9a1891a3ab0983d9d", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000000ffffffff00000000ffffffff", + "256d40887f6be87c55d304849bbc0117df994703fc04c48480e030be142cd641e3bcdb5b" + "e12103018bcda1b65ea373d40869ffd213a1d91a53b7b22701780242", + "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000" + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff", + "3b41861913a8f6de7f61e225631bc382", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "00000000ffffffff00000000ffffffff", + "256d40887f6be87c55d304849bbc0117df994703fc04c48480e030be142cd641e3bcdb5b" + "e12103018bcda1b65ea373d40869ffd213a1d91a53b7b227017802427ada4442bd964005" + "5527f27053097afdb74c5ae219f3fa7f981a4938ba6c6d3b9bb2f28449b91038f3f0b136" + "e23cb71277d30bc5896d12c7fbac0188c7fb7738", + "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000" + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff" + "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000" + "ffffffff00000000ffffffff00000000ffffffff", + "8428bcf023ec6bf31fd9efb203ff0871", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffffff00000000ffffffff00000000", + "da92bf7780941783aa2cfb7b6443fee82066b8fc03fb3b7b7f1fcf41ebd329be", + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000", + "139fdf6474ea24f549b075825f2c7620", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffffff00000000ffffffff00000000", + "da92bf7780941783aa2cfb7b6443fee82066b8fc03fb3b7b7f1fcf41ebd329be1c4324a4" + "1edefcfe74325e49a15c8c2bf796002dec5e26e5ac484dd8fe87fdbd", + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff" + "00000000ffffffff00000000ffffffff00000000ffffffff00000000", + "bbad8d863b835a8e8664fd1d4566b6b4", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000000000000000001ee3200", "ffffffff00000000ffffffff00000000", + "da92bf7780941783aa2cfb7b6443fee82066b8fc03fb3b7b7f1fcf41ebd329be1c4324a4" + "1edefcfe74325e49a15c8c2bf796002dec5e26e5ac484dd8fe87fdbd8525bbbd4269bffa" + "aad80d8facf6850248b3a51de60c058067e5b6c7459392c4644d0d7bb646efc70c0f4ec9" + "1dc348ed882cf43a7692ed380453fe77380488c7", + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff" + "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000" + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff" + "00000000ffffffff00000000ffffffff00000000", + "42f2354297849a511d53e5571772f71f", "valid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a2e3fdf9fba6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a1e3fdf9fba6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "23e3fdf9fba6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e2fdf9fba6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fd79fba6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9faa6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9f9a6861b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6869b5ad2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5bd2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5af2607f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2617f40b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2607f41b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2607f42b7f447", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2607f40b7f446", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2607f40b7f445", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2607f40b7f407", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6861b5ad2607f40b7f4c7", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "a3e3fdf9fba6869b5ad2607f40b7f4c7", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "00000000000000000000000000000000", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "", "", + "ffffffffffffffffffffffffffffffff", "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "26da374f17b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "25da374f17b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "a7da374f17b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27db374f17b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da37cf17b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f16b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f15b7f1b23844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1323844a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23944a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23864a5490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a4490bfc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a5490afc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a54909fc4001", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a5490bfc4000", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a5490bfc4003", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a5490bfc4041", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1b23844a5490bfc4081", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "27da374f17b7f1323844a5490bfc4081", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "00000000000000000000000000000000", + "invalid" }, + { "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", + "000102030405060708090a0b", "616164", "00000000000000000000000000000000", + "2cf8ae525fc86025268a4e1d88bead19", "ffffffffffffffffffffffffffffffff", + "invalid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "30303030303030300002506e", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "d4500bf009493551c380adf52c573a69df7e8b762463330facc16a5726be7190c63c5a1c" + "926584a096756828dcdc64acdf963d931bf1dae238f3f157224ac4b542d785b0dd84db6b" + "e3bc5a3663e84149ffbed09e54f78f16a8223b24cb019f58b21b0e551e7aa07327629551" + "376ccbc3937671a0629bd95c9915c78555771e7a", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "0b300d8da56c2185755279553c4c82ca", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "3030303030303030000318a5", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "7de87f6729945275d0655da4c7fde4569e16f111b5eb26c22d859e3ff822eced3a6dd9a6" + "0f22957f7b7c857e8822eb9fe0b8d7022141f2d0b48f4b5612d322a88dd0fe0b4d917932" + "4f7c6c9e990efbd80e5ed6775826498b1efe0f71a0f3ec5b29cb28c2540a7dcd51b7daae" + "e0ff4a7f3ac1ee54c29ee4c170de408f66692194", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "c578e2aa44d309b7b6a5193bdc6118f5", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "00000000000000000007b4f0", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "1b996f9a3ccc6785de22ff5b8add9502ce03a0faf5992a09522cdd1206d220b8f8bd07d1" + "f1f5a1bd9a71d11c7f579b855818c08d4de036393183b7f590b335aed8de5b57b13c5fed" + "e2441c3e184aa9d46e61598506b3e11c43c62cbcaceced33190875b012218b1930fb7c38" + "ec45ac11c353d0cf938dccb9efad8fedbe46daa5", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "4b0bda8ad043830d8319ab82c50c7663", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "00000000000000000020fb66", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "86cbacae4d3f74ae01213e0551cc15160ea1be8408e3d5d74f01464995a69e6176cb9e02" + "b2247ed299892f9182a45caf4c69405611766edfafdc285519ea30480c44f05e781eacf8" + "fcecc7090abb28fa5fd585ac8cda7e8772e594e4ce6c883281932e0f89f877a1f04d9c32" + "b06cf90b0e762b430c4d517c97107068f498ef7f", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "4bc98f72c494c2a43c2b15a1043f1cfa", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "00000000000000000038bb90", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "fab1cddf4fe198ef63add881d6ead6c57637bbe92018ca7c0b96fba0871e932db1fbf907" + "61be25df8dfaf931ce5757e617b3d7a9f0bf0ffe5d591a33c143b8f53fd0b5a19609fd62" + "e5c251a4281a200cfdc34f281710406f4e37625446ff6ef224913deb0d89af337128e3d1" + "55d16d3ec3246041432143e9ab3a6d2ccc2f4d62", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "f7e9e151b02533c74658bfc7737c680d", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "00000000000000000070484a", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "227202be7f3515e9d1c02eea2f1950b6481b048a4c91506cb40d504e6c949f82d197c25a" + "d17dc721651125782ac7a71247feaef32f1f250ce4bb8f79acaa179d45a7b0545f092432" + "5efa87d5e441d28478c61f2223ee67c3b41f4394535e2a24369a2e16613c459490c14fb1" + "d755fe53fbe1ee45b1b21f7162e2fcaa742abefd", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "795bcff647c553c2e4eb6e0eafd9e04e", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "000000000000000000932f40", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "fae58345c16cb0f5cc537f2b1b3469c969463b3ea71bcf6b98d669a8e60e04fc08d5fd06" + "9c362638e3400ef4cb242e27e2245e68cb9ec583da5340b12edf423b7326ad20feeb57da" + "ca2e0467a32899b42df8e56d84e006bc8a7acc731e7c1f6becb5719f7077f0d4f4c61ab1" + "1ebac1001801ce33c4e4a77d831d3ce34e8410e1", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "1946d653960f947a74d3e8093cf48502", "valid" }, + { "3030303030303030303030303030303030303030303030303030303030303030", + "000000000000000000e29335", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ebb216ddd7ca709215f503df9ce63c5cd2194e7d9099e8a90b2afaad5eba35069925a603" + "fdbc341aaed41505b10941fa3856a7e247b1040709746cfc2096caa631b2fff41c250506" + "d889c1c90671ade853ee6394c19192a5cf3710d1073099e5bc946582fc0fab9f543c716a" + "e2486a8683fdca39d2e14f23d00a582664f4ecb1", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "36c3002985dd21baf895d633573f12c0", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000000ef7d5", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "408ae6ef1c7ef0fb2c2d610816fc7849efa58f78273f5f166ea65f81b575747d035b3040" + "fede1eb9459788669788408e00413b3e376d152d204aa2b7a83558fcd48a0ef7a26b1cd6" + "d35d23b3f5dfe0ca77a4ce32b94abf83da2aefcaf068380879e89fb0a3829595cf44c385" + "2ae2cc662b689f9355d9c183801f6acc313f8907", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "6514518e0a264142e0b7351f967fc2ae", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000003dfce4", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0a0a24499bcade58cf1576c312aca984718cb4cc7e0153f5a9015810859644dfc021174e" + "0b060a397448de8b484a8603be680a6934c0906f30dd17eae2d4c5faa777f8ca53370e08" + "331b88c342bac959787bbb33930e3b56be86da7f2a6eb1f94089d1d181074d4302f8e055" + "2d0de1fab306a21b42d4c3ba6e6f0cbcc81e877a", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "4c194da6a99fd65b40e9cad798f44b19", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000018486a8", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "4a0aaff8494729188691701340f3ce2b8a78eed3a0f065994b72484e7991d25c29aa075e" + "b1fc16de93fe069058112ab284a3ed18780326d1258a47222fa633d8b29f3bd9150b239b" + "1546c2bb9b9f410febead396000ee477701532c3d0f5fbf895d280196d2f737c5e9fec50" + "d92bb0df5d7e513be5b8ea971310d5bf16ba7aee", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "c8ae7788cd2874abc138541e11fd0587", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ff9428d079351f665cd001354319875c783d35f613e6d9093d38e975c38fe3b89f7aed35" + "cb5a2fcaa0346efb936554649cf6378171eae4396ea15dc240d1abf4472d9096524fa1b2" + "b023b8b288222773d4d206616f9293f65b45dbbc74e7c2edfbcbbf1cfb679bb739a5862d" + "e2bcb937f74d5bf8671c5a8a5092f61d54c9aa5b", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffff", + "933a5163c7f62368327b3fbc1036c943", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "85ffffffffffffffffffffffffffffffa6902fcbc883bbc180b256ae34ad7f00", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "000102030405060708090a0b0c0d0e0f", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "ffffffffffffffffffffffffffffffff247e50642a1c0a2f8f77219609dba958", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "00000000000000000000000000000000", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "7cffffffffffffffffffffffffffffffd9e72c064ac8961f3fa585e0e2abd600", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ffffffffffffffffffffffffffffffff", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "65ffffffffffffffffffffffffffffff95af0f4d0b686eaeccca4307d596f502", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "00000080000000800000008000000080", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "ffffffffffffffffffffffffffffffff8540b464357707be3a39d55c34f8bcb3", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ffffff7fffffff7fffffff7fffffff7f", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "4fffffffffffffffffffffffffffffff6623d990b898d830d212af2383330701", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "01000000010000000100000001000000", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b", + "83ffffffffffffffffffffffffffffff5f16d09f17787211b7d484e024f89701", + "9a49c40f8b48d7c66d1db4e53f20f2dd4aaa241ddab26b5bc0e218b72c3390f2df3ebd01" + "76704419972bcdbc6bbcb3e4e74a71528ef51263ce24e0d575e0e44d", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ffffffff000000000000000000000000", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "005235d2a919f28d3db7664a34ae6b444d3d35f613e6d9093d38e975c38fe3b85b8b9450" + "9e2b74a36d346e33d572659ba9f6378171eae4396ea15dc240d1abf483dce9f3073efadb" + "7d23b87ace35168c", + "0039e2fd2fd312149e989880884813e7caffffffffffffffffffffffffffffff3b0e869a" + "aa8ea49632ffff37b9e8ce00caffffffffffffffffffffffffffffff3b0e869aaa8ea496" + "32ffff37b9e8ce00", + "a519ac1a35b4a57787510af78d8d200a", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "d39428d079351f665cd001354319875ce5da78766fa19290c031f75208506745ae7aed35" + "cb5a2fcaa0346efb93655464496ddeb05509c6efffab75eb2df4ab09762d9096524fa1b2" + "b023b8b2882227730149ef504b71b120ca4ff39519c2c210", + "d3ffffffffffffffffffffffffffffff6218b27f83b8b46602f6e1d834207b02ceffffff" + "ffffffffffffffffffffffff2a6416cedb1cdd296ef5d7d692daff02ceffffffffffffff" + "ffffffffffffffff2a6416cedb1cdd296ef5d7d692daff02", + "302fe82ab0a09af64400d015ae83d9cc", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "e99428d079351f665cd001354319875c6df1394edc539b5b3a0957be0fb85946807aed35" + "cb5a2fcaa0346efb93655464d1769fe806bbfeb6f590950f2eac9e0a582d9096524fa1b2" + "b023b8b2882227739952ae0818c38979c07413711a9af713", + "e9ffffffffffffffffffffffffffffffea33f347304abdadf8ce413433c84501e0ffffff" + "ffffffffffffffffffffffffb27f579688aee57064ce37329182ca01e0ffffffffffffff" + "ffffffffffffffffb27f579688aee57064ce37329182ca01", + "98a7e836e0ee4d023500d0557ec2cbe0", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875c64f90f5b2692b860d4596ff4b3402c5c00b9bb53" + "707aa667d356fe50c7199694033561e7caca6d941dc3cd6914ad6904", + "ffffffffffffffffffffffffffffffffe33bc552ca8b9e96169e797e8f30301b603ca999" + "44df76528c9d6f54ab833d0f603ca99944df76528c9d6f54ab833d0f", + "6ab8dce2c59da4737130b0252f68a8d8", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "689428d079351f665cd001354319875cb08f25675b9bcbf6e38407de2ec75a479f7aed35" + "cb5a2fcaa0346efb936554642d2af7cd6b080501d31ba54fb2eb7596472d9096524fa1b2" + "b023b8b288222773650ec62d757072cee6ff233186dd1c8f", + "68ffffffffffffffffffffffffffffff374def6eb782ed002143115412b74600ffffffff" + "ffffffffffffffffffffffff4e233fb3e51d1ec7424507720dc5219dffffffffffffffff" + "ffffffffffffffff4e233fb3e51d1ec7424507720dc5219d", + "044dea608880412bfdffcf35579e9b26", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "6d9428d079351f665cd001354319875ca161b5ab040900629efeff78d7d86b459f7aed35" + "cb5a2fcaa0346efb93655464c6f8078cc8ef12a0ff657d6d08db10b8472d9096524fa1b2" + "b023b8b2882227738edc366cd697656fca81fb133ced79a1", + "6dffffffffffffffffffffffffffffff26a37fa2e81026945c39e9f2eba87702ffffffff" + "ffffffffffffffffffffffffa5f1cff246fa09666e3bdf50b7f544b3ffffffffffffffff" + "ffffffffffffffffa5f1cff246fa09666e3bdf50b7f544b3", + "1e6bea6314542e2ef9ffcf450b2e982b", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875cfc01b891e5f0f9128d7d1c579192b69863414415" + "b69968959a7291b7a5af134860cd9ea10c29a36654e7a28e761becd8", + "ffffffffffffffffffffffffffffffff7bc3729809e9dfe44fba0addade2aadf03c456df" + "823cb8a0c5b900b3c935b8d303c456df823cb8a0c5b900b3c935b8d3", + "ed2017c8dba4775629049d786e3bceb1", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875c6b6dc9d21a819e70b577f44137d3d6bd1335f5eb" + "44494077b26449a54b6c7c7510b92f5ffef98b847cf17a9c98d883e5", + "ffffffffffffffffffffffffffffffffecaf03dbf698b88677b0e2cb0ba3cafa73b0e721" + "70ec9042edafd8a127f6d7ee73b0e72170ec9042edafd8a127f6d7ee", + "073f17cb6778645925049d8822cbcab6", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ffcb2b1106f8234c5e99d4db4c7048de323d35f613e6d9093d38e975c38fe3b816e9884a" + "114f0e9266cea3885fe36b9fd6f6378171eae4396ea15dc240d1abf4cebef5e9885a80ea" + "76d975c144a41888", + "ffa0fc3e8032c3d5fdb62a11f096307db5ffffffffffffffffffffffffffffff766c9a80" + "25eadea73905328c3379c004b5ffffffffffffffffffffffffffffff766c9a8025eadea7" + "3905328c3379c004", + "8b9bb4b4861289658c696a8340150405", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "6f9e70ed3b8baca026e46a5a0943158d213d35f613e6d9093d38e975c38fe3b80c612c5e" + "8d89a873dbcaad5b7346429bc5f6378171eae4396ea15dc240d1abf4d43651fd149c260b" + "cbdd7b126801318c", + "6ff5a7c2bd414c3985cb9490b5a56d2ea6ffffffffffffffffffffffffffffff6ce43e94" + "b92c784684013c5f1fdce900a6ffffffffffffffffffffffffffffff6ce43e94b92c7846" + "84013c5f1fdce900", + "8b3bbd51644459568d81ca1fa72ce404", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "412b080a3e19c10d44a1af1eabdeb4ce353d35f613e6d9093d38e975c38fe3b86b839433" + "0921486ca11d291c3e97ee9ad1f6378171eae4396ea15dc240d1abf4b3d4e9909034c614" + "b10aff5525d09d8d", + "4140df25b8d32194e78e51d41738cc6db2ffffffffffffffffffffffffffffff0b0686f9" + "3d849859fed6b818520d4501b2ffffffffffffffffffffffffffffff0b0686f93d849859" + "fed6b818520d4501", + "86fbab2b4a94f47aa56f0aea65d11008", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "b247a74723491aacacaad709c91e932b313d35f613e6d9093d38e975c38fe3b89ade04e7" + "5bb701d9660601b34765de98d5f6378171eae4396ea15dc240d1abf442897944c2a28fa1" + "7611d7fa5c22ad8f", + "b22c7068a583fa350f8529c375f8eb88b6fffffffffffffffffffffffffffffffa5b162d" + "6f12d1ec39cd90b72bff7503b6fffffffffffffffffffffffffffffffa5b162d6f12d1ec" + "39cd90b72bff7503", + "a019ac2ed667e17da16f0afa19610d0d", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "740f9e49f610efa585b659ca6ed8b4992d3d35f613e6d9093d38e975c38fe3b8412d96af" + "be80ec3e79d451b00a2db29ac9f6378171eae4396ea15dc240d1abf4997aeb0c27956246" + "69c387f9116ac18d", + "7464496670da0f3c2699a700d23ecc3aaaffffffffffffffffffffffffffffff21a88465" + "8a253c0b261fc0b466b71901aaffffffffffffffffffffffffffffff21a884658a253c0b" + "261fc0b466b71901", + "736e18181696a5889c3159faabab20fd", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "adba5d105bc8aa062c2336cb889ddbd5373d35f613e6d9093d38e975c38fe3b8177c5ffe" + "2875f468f6c2965748f3599ad3f6378171eae4396ea15dc240d1abf4cf2b225db1607a10" + "e6d5401e53b42a8d", + "add18a3fdd024a9f8f0cc801347ba376b0ffffffffffffffffffffffffffffff77f94d34" + "1cd0245da90907532469f201b0ffffffffffffffffffffffffffffff77f94d341cd0245d" + "a90907532469f201", + "bad58f10a91e6a889aba32fd17d8331a", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "fe9428d079351f665cd001354319875cc001edc5da442e719bce9abe273af144b47aed35" + "cb5a2fcaa0346efb9365546448025f41fa4e336c786957a2a7c4930a6c2d9096524fa1b2" + "b023b8b28822277300266ea1e43644a34d8dd1dc93f2fa13", + "feffffffffffffffffffffffffffffff47c327cc365d088759098c341b4aed03d4ffffff" + "ffffffffffffffffffffffff2b0b973f745b28aae937f59f18eac701d4ffffffffffffff" + "ffffffffffffffff2b0b973f745b28aae937f59f18eac701", + "d68ce174079add028dd05cf814630488", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "b513b06ab9ac14435acb8aa3a37afdb6543d35f613e6d9093d38e975c38fe3b861950193" + "b1bf0311ff117989aed9a999b0f6378171eae4396ea15dc240d1abf4b9c27c3028aa8d69" + "ef06afc0b59eda8e", + "b57867453f66f4daf9e474691f9c8515d3ffffffffffffffffffffffffffffff01101359" + "851ad324a0dae88dc2430202d3ffffffffffffffffffffffffffffff01101359851ad324" + "a0dae88dc2430202", + "aa48a3887d4b059699c2fdf9c6787e0a", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875cd4f109e814cea85a08c011d850dd1dcbcf7aed35" + "cb5a2fcaa0346efb936554645340b85a9aa08296b77a5fc3961f660f172d9096524fa1b2" + "b023b8b2882227731b6489ba84d8f559829ed9bda2290f16", + "ffffffffffffffffffffffffffffffff5333c3e1f8d78eacca0707526cad018cafffffff" + "ffffffffffffffffffffffff3049702414b599502624fdfe29313204afffffffffffffff" + "ffffffffffffffff3049702414b599502624fdfe29313204", + "b936a817f2211af129e2cf160fd42bcb", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875cdf4c62032d4119b588477e99925a56d9d67aed35" + "cb5a2fcaa0346efb93655464fa84f0645536421b2bb9246ec219ed0b0e2d9096524fa1b2" + "b023b8b288222773b2a0c1844b4e35d41e5da210f62f8412", + "ffffffffffffffffffffffffffffffff588ea80ac1583f434a806813ae2a4a9eb6ffffff" + "ffffffffffffffffffffffff998d381adb2359ddbae786537d37b900b6ffffffffffffff" + "ffffffffffffffff998d381adb2359ddbae786537d37b900", + "9f7ac4351f6b91e63097a713115d05be", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875c13f80a006dc1bbdad639a92fc7eca655f77aed35" + "cb5a2fcaa0346efb936554646348b8fd29bf96d563a517e27d7bfc0f2f2d9096524fa1b2" + "b023b8b2882227732b6c891d37c7e11a5641919c494d9516", + "ffffffffffffffffffffffffffffffff943ac00981d89d2c14febfa5fb9cba1297ffffff" + "ffffffffffffffffffffffff00417083a7aa8d13f2fbb5dfc255a80497ffffffffffffff" + "ffffffffffffffff00417083a7aa8d13f2fbb5dfc255a804", + "9a18a828070269f44700d009e7171cc9", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875c82e59b4582915038f933811e652dc66afc7aed35" + "cb5a2fcaa0346efb93655464b671c8cac270c265a0ac2f535799880a242d9096524fa1b2" + "b023b8b288222773fe55f92adc08b5aa9548a92d63afe113", + "ffffffffffffffffffffffffffffffff0527514c6e8876ce3bf49794595dda2d9cffffff" + "ffffffffffffffffffffffffd57800b44c65d9a331f28d6ee8b7dc019cffffffffffffff" + "ffffffffffffffffd57800b44c65d9a331f28d6ee8b7dc01", + "b436a82b93d555f74300d0199ba718ce", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "ff9428d079351f665cd001354319875cf1d12887b7216986a12d79098b6de60fc07aed35" + "cb5a2fcaa0346efb93655464a7c75899f3e60af1fcb6c7307d87590f182d9096524fa1b2" + "b023b8b288222773efe36979ed9e7d3ec952414e49b13016", + "ffffffffffffffffffffffffffffffff7613e28e5b384f7063ea6f83b71dfa48a0ffffff" + "ffffffffffffffffffffffffc4ce90e77df311376de8650dc2a90d04a0ffffffffffffff" + "ffffffffffffffffc4ce90e77df311376de8650dc2a90d04", + "ce54a82e1fa942fa3f00d0294f3715d3", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "cbf1da9e0ba9377374e69e1c0e600cfc343d35f613e6d9093d38e975c38fe3b8be3fa66b" + "6ce7808aa3e45949f944649fd0f6378171eae4396ea15dc240d1abf46668dbc8f5f20ef2" + "b3f38f00e2031788", + "cb9a0db18d63d7ead7c960d6b286745fb3ffffffffffffffffffffffffffffffdebab4a1" + "584250bffc2fc84d95decf04b3ffffffffffffffffffffffffffffffdebab4a1584250bf" + "fc2fc84d95decf04", + "2383ab0b799205699b510aa709bf31f1", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "8f278694c4e9daebd58d3e5b966e8b68423d35f613e6d9093d38e975c38fe3b80653e7a3" + "31718833acc3b9adff1c3198a6f6378171eae4396ea15dc240d1abf4de049a00a864064b" + "bcd46fe4e45b428f", + "8f4c51bb42233a7276a2c0912a88f3cbc5ffffffffffffffffffffffffffffff66d6f569" + "05d45806f30828a993869a03c5ffffffffffffffffffffffffffffff66d6f56905d45806" + "f30828a993869a03", + "8bfbab17a9e0b8748b510ae7d9fd2305", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "d59428d079351f665cd001354319875c9a22d70a48e24fddcdd4419de64c8f44fc7aed35" + "cb5a2fcaa0346efb9365546477b5c907d9c9e1ea51851a204aad9f0a242d9096524fa1b2" + "b023b8b2882227733f91f8e7c7b1962564619c5e7e9bf613", + "d5ffffffffffffffffffffffffffffff1de01d03a4fb692b0f135717da3c93039cffffff" + "ffffffffffffffffffffffff14bc017957dcfa2cc0dbb81df583cb019cffffffffffffff" + "ffffffffffffffff14bc017957dcfa2cc0dbb81df583cb01", + "49bc6e9fc51c4d503036644d842773d2", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "db9428d079351f665cd001354319875c75d5643aa5af934d8cce392cc3eedb47c07aed35" + "cb5a2fcaa0346efb93655464601b5ad2067f28066a8f3281715ba808182d9096524fa1b2" + "b023b8b288222773283f6b3218075fc95f6bb4ff456dc111", + "dbfffffffffffffffffffffffffffffff217ae3349b6b5bb4e092fa6ff9ec700a0ffffff" + "ffffffffffffffffffffffff031292ac886a33c0fbd190bcce75fc03a0ffffffffffffff" + "ffffffffffffffff031292ac886a33c0fbd190bcce75fc03", + "63da6ea251f039532c36645d38b76fd7", "valid" }, + { "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "0000000000000000064c2d52", "ffffffff", + "939428d079351f665cd001354319875c624839604216e403ebcc6af559ec8b43977aed35" + "cb5a2fcaa0346efb93655464d8c8c3fa1a9e474abe52d02c8187e90f4f2d9096524fa1b2" + "b023b8b28822277390ecf21a04e630858bb65652b5b18016", + "93ffffffffffffffffffffffffffffffe58af369ae0fc2f5290b7c7f659c9704f7ffffff" + "ffffffffffffffffffffffffbbc10b84948b5c8c2f0c72113ea9bd04f7ffffffffffffff" + "ffffffffffffffffbbc10b84948b5c8c2f0c72113ea9bd04", + "73eb2724b5c405f04d00d0f15840a1c1", "valid" } +}; + +static int +tv(void) +{ + unsigned char *ad; + unsigned char *decrypted; + unsigned char *detached_ciphertext; + unsigned char *key; + unsigned char *message; + unsigned char *mac; + unsigned char *nonce; + size_t ad_len; + size_t detached_ciphertext_len; + size_t message_len; + unsigned int i; + + key = (unsigned char *) sodium_malloc( + crypto_aead_chacha20poly1305_ietf_KEYBYTES); + nonce = (unsigned char *) sodium_malloc( + crypto_aead_chacha20poly1305_ietf_NPUBBYTES); + mac = (unsigned char *) sodium_malloc( + crypto_aead_chacha20poly1305_ietf_ABYTES); + + for (i = 0U; i < (sizeof tests) / (sizeof tests[0]); i++) { + assert(strlen(tests[i].key_hex) == + 2 * crypto_aead_chacha20poly1305_ietf_KEYBYTES); + sodium_hex2bin(key, crypto_aead_chacha20poly1305_ietf_KEYBYTES, + tests[i].key_hex, strlen(tests[i].key_hex), NULL, NULL, + NULL); + + assert(strlen(tests[i].nonce_hex) == + 2 * crypto_aead_chacha20poly1305_ietf_NPUBBYTES); + sodium_hex2bin(nonce, crypto_aead_chacha20poly1305_ietf_NPUBBYTES, + tests[i].nonce_hex, strlen(tests[i].nonce_hex), NULL, + NULL, NULL); + + message_len = strlen(tests[i].message_hex) / 2; + message = (unsigned char *) sodium_malloc(message_len); + sodium_hex2bin(message, message_len, tests[i].message_hex, + strlen(tests[i].message_hex), NULL, NULL, NULL); + + ad_len = strlen(tests[i].ad_hex) / 2; + ad = (unsigned char *) sodium_malloc(ad_len); + sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex), + NULL, NULL, NULL); + + detached_ciphertext_len = message_len; + assert(strlen(tests[i].detached_ciphertext_hex) == 2 * message_len); + assert(strlen(tests[i].mac_hex) == + 2 * crypto_aead_chacha20poly1305_ietf_ABYTES); + sodium_hex2bin(mac, crypto_aead_chacha20poly1305_ietf_ABYTES, + tests[i].mac_hex, strlen(tests[i].mac_hex), NULL, NULL, + NULL); + + detached_ciphertext = + (unsigned char *) sodium_malloc(detached_ciphertext_len); + sodium_hex2bin(detached_ciphertext, detached_ciphertext_len, + tests[i].detached_ciphertext_hex, + strlen(tests[i].detached_ciphertext_hex), NULL, NULL, + NULL); + + decrypted = (unsigned char *) sodium_malloc(message_len); + if (crypto_aead_chacha20poly1305_ietf_decrypt_detached( + decrypted, NULL, detached_ciphertext, detached_ciphertext_len, + mac, ad, ad_len, nonce, key) == 0) { + if (strcmp(tests[i].outcome, "valid") != 0) { + printf("*** test case %u succeeded, was supposed to be %s\n", i, + tests[i].outcome); + } + if (memcmp(decrypted, message, message_len) != 0) { + printf("Incorrect decryption of test vector #%u\n", + (unsigned int) i); + } + } else { + if (strcmp(tests[i].outcome, "invalid") != 0) { + printf("*** test case %u failed, was supposed to be %s\n", i, + tests[i].outcome); + } + } + + sodium_free(message); + sodium_free(ad); + sodium_free(decrypted); + sodium_free(detached_ciphertext); + } + + sodium_free(key); + sodium_free(mac); + sodium_free(nonce); + + return 0; +} + +int +main(void) +{ + tv(); + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.exp b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.c b/components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.c new file mode 100644 index 0000000..12059b6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.c @@ -0,0 +1,203 @@ + +#define TEST_NAME "aead_xchacha20poly1305" +#include "cmptest.h" + +static int +tv(void) +{ +#undef MLEN +#define MLEN 114U +#undef ADLEN +#define ADLEN 12U +#undef CLEN +#define CLEN (MLEN + crypto_aead_xchacha20poly1305_ietf_ABYTES) + static const unsigned char firstkey[crypto_aead_xchacha20poly1305_ietf_KEYBYTES] + = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f + }; +#undef MESSAGE +#define MESSAGE "Ladies and Gentlemen of the class of '99: If I could offer you " \ + "only one tip for the future, sunscreen would be it." + unsigned char *m = (unsigned char *) sodium_malloc(MLEN); + static const unsigned char nonce[crypto_aead_xchacha20poly1305_ietf_NPUBBYTES] + = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53 }; + static const unsigned char ad[ADLEN] + = { 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 }; + unsigned char *c = (unsigned char *) sodium_malloc(CLEN); + unsigned char *detached_c = (unsigned char *) sodium_malloc(MLEN); + unsigned char *key2 = (unsigned char *) sodium_malloc(crypto_aead_xchacha20poly1305_ietf_KEYBYTES); + unsigned char *mac = (unsigned char *) sodium_malloc(crypto_aead_xchacha20poly1305_ietf_ABYTES); + unsigned char *m2 = (unsigned char *) sodium_malloc(MLEN); + unsigned long long found_clen; + unsigned long long found_maclen; + unsigned long long m2len; + size_t i; + + assert(sizeof MESSAGE - 1U == MLEN); + memcpy(m, MESSAGE, MLEN); + crypto_aead_xchacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, + ad, ADLEN, + NULL, nonce, firstkey); + if (found_clen != MLEN + crypto_aead_xchacha20poly1305_ietf_abytes()) { + printf("found_clen is not properly set\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + crypto_aead_xchacha20poly1305_ietf_encrypt_detached(detached_c, + mac, &found_maclen, + m, MLEN, + ad, ADLEN, + NULL, nonce, firstkey); + if (found_maclen != crypto_aead_xchacha20poly1305_ietf_abytes()) { + printf("found_maclen is not properly set\n"); + } + if (memcmp(detached_c, c, MLEN) != 0) { + printf("detached ciphertext is bogus\n"); + } + + if (crypto_aead_xchacha20poly1305_ietf_decrypt(NULL, 0, NULL, c, CLEN, ad, + ADLEN, nonce, firstkey) != 0) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() tag-only verification failed\n"); + } + if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, ad, + ADLEN, nonce, firstkey) != 0) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() failed\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("m != m2\n"); + } + memset(m2, 0, m2len); + if (crypto_aead_xchacha20poly1305_ietf_decrypt_detached(m2, NULL, + c, MLEN, mac, + ad, ADLEN, + nonce, firstkey) != 0) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt_detached() failed\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("detached m != m2\n"); + } + + for (i = 0U; i < CLEN; i++) { + c[i] ^= (i + 1U); + if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, NULL, NULL, c, CLEN, + ad, ADLEN, nonce, firstkey) + == 0 || memcmp(m, m2, MLEN) == 0) { + printf("message can be forged\n"); + } + c[i] ^= (i + 1U); + } + crypto_aead_xchacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, + NULL, 0U, NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("clen is not properly set (adlen=0)\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, firstkey) != 0) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set (adlen=0)\n"); + } + if (memcmp(m, m2, MLEN) != 0) { + printf("m != m2 (adlen=0)\n"); + } + m2len = 1; + if (crypto_aead_xchacha20poly1305_ietf_decrypt( + m2, &m2len, NULL, guard_page, + randombytes_uniform(crypto_aead_xchacha20poly1305_ietf_ABYTES), + NULL, 0U, nonce, firstkey) != -1) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() worked with a short " + "ciphertext\n"); + } + if (m2len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + m2len = 1; + if (crypto_aead_xchacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, 0U, NULL, 0U, + nonce, firstkey) != -1) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() worked with an empty " + "ciphertext\n"); + } + if (m2len != 0) { + printf("Message length should have been set to zero after a failure\n"); + } + + memcpy(c, m, MLEN); + crypto_aead_xchacha20poly1305_ietf_encrypt(c, &found_clen, c, MLEN, + NULL, 0U, NULL, nonce, firstkey); + if (found_clen != CLEN) { + printf("clen is not properly set (adlen=0)\n"); + } + for (i = 0U; i < CLEN; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + + if (crypto_aead_xchacha20poly1305_ietf_decrypt(c, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, firstkey) != 0) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); + } + if (m2len != MLEN) { + printf("m2len is not properly set (adlen=0)\n"); + } + if (memcmp(m, c, MLEN) != 0) { + printf("m != c (adlen=0)\n"); + } + + crypto_aead_xchacha20poly1305_ietf_keygen(key2); + if (crypto_aead_xchacha20poly1305_ietf_decrypt(c, &m2len, NULL, c, CLEN, + NULL, 0U, nonce, key2) == 0) { + printf("crypto_aead_xchacha20poly1305_ietf_decrypt() with a wrong key should have failed\n"); + } + + sodium_free(c); + sodium_free(detached_c); + sodium_free(key2); + sodium_free(mac); + sodium_free(m2); + sodium_free(m); + + assert(crypto_aead_xchacha20poly1305_ietf_abytes() == crypto_aead_xchacha20poly1305_ietf_ABYTES); + assert(crypto_aead_xchacha20poly1305_ietf_keybytes() == crypto_aead_xchacha20poly1305_ietf_KEYBYTES); + assert(crypto_aead_xchacha20poly1305_ietf_npubbytes() == crypto_aead_xchacha20poly1305_ietf_NPUBBYTES); + assert(crypto_aead_xchacha20poly1305_ietf_nsecbytes() == 0U); + assert(crypto_aead_xchacha20poly1305_ietf_nsecbytes() == crypto_aead_xchacha20poly1305_ietf_NSECBYTES); + assert(crypto_aead_xchacha20poly1305_ietf_messagebytes_max() == crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX); + assert(crypto_aead_xchacha20poly1305_IETF_KEYBYTES == crypto_aead_xchacha20poly1305_ietf_KEYBYTES); + assert(crypto_aead_xchacha20poly1305_IETF_NSECBYTES == crypto_aead_xchacha20poly1305_ietf_NSECBYTES); + assert(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES == crypto_aead_xchacha20poly1305_ietf_NPUBBYTES); + assert(crypto_aead_xchacha20poly1305_IETF_ABYTES == crypto_aead_xchacha20poly1305_ietf_ABYTES); + assert(crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX == crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX); + + return 0; +} + +int +main(void) +{ + tv(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.exp b/components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.exp new file mode 100644 index 0000000..d17ee7a --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.exp @@ -0,0 +1,51 @@ +,0xf8,0xeb,0xea,0x48,0x75,0x04,0x40,0x66 +,0xfc,0x16,0x2a,0x06,0x04,0xe1,0x71,0xfe +,0xec,0xfb,0x3d,0x20,0x42,0x52,0x48,0x56 +,0x3b,0xcf,0xd5,0xa1,0x55,0xdc,0xc4,0x7b +,0xbd,0xa7,0x0b,0x86,0xe5,0xab,0x9b,0x55 +,0x00,0x2b,0xd1,0x27,0x4c,0x02,0xdb,0x35 +,0x32,0x1a,0xcd,0x7a,0xf8,0xb2,0xe2,0xd2 +,0x50,0x15,0xe1,0x36,0xb7,0x67,0x94,0x58 +,0xe9,0xf4,0x32,0x43,0xbf,0x71,0x9d,0x63 +,0x9b,0xad,0xb5,0xfe,0xac,0x03,0xf8,0x0a +,0x19,0xa9,0x6e,0xf1,0x0c,0xb1,0xd1,0x53 +,0x33,0xa8,0x37,0xb9,0x09,0x46,0xba,0x38 +,0x54,0xee,0x74,0xda,0x3f,0x25,0x85,0xef +,0xc7,0xe1,0xe1,0x70,0xe1,0x7e,0x15,0xe5 +,0x63,0xe7,0x76,0x01,0xf4,0xf8,0x5c,0xaf +,0xa8,0xe5,0x87,0x76,0x14,0xe1,0x43,0xe6 +,0x84,0x20 +,0xf8,0xeb,0xea,0x48,0x75,0x04,0x40,0x66 +,0xfc,0x16,0x2a,0x06,0x04,0xe1,0x71,0xfe +,0xec,0xfb,0x3d,0x20,0x42,0x52,0x48,0x56 +,0x3b,0xcf,0xd5,0xa1,0x55,0xdc,0xc4,0x7b +,0xbd,0xa7,0x0b,0x86,0xe5,0xab,0x9b,0x55 +,0x00,0x2b,0xd1,0x27,0x4c,0x02,0xdb,0x35 +,0x32,0x1a,0xcd,0x7a,0xf8,0xb2,0xe2,0xd2 +,0x50,0x15,0xe1,0x36,0xb7,0x67,0x94,0x58 +,0xe9,0xf4,0x32,0x43,0xbf,0x71,0x9d,0x63 +,0x9b,0xad,0xb5,0xfe,0xac,0x03,0xf8,0x0a +,0x19,0xa9,0x6e,0xf1,0x0c,0xb1,0xd1,0x53 +,0x33,0xa8,0x37,0xb9,0x09,0x46,0xba,0x38 +,0x54,0xee,0x74,0xda,0x3f,0x25,0x85,0xef +,0xc7,0xe1,0xe1,0x70,0xe1,0x7e,0x15,0xe5 +,0x63,0xe7,0xe0,0x96,0xe0,0x33,0xd9,0x1b +,0x63,0xf7,0xac,0x92,0xe9,0x97,0x2e,0x0d +,0x43,0xe5 +,0xf8,0xeb,0xea,0x48,0x75,0x04,0x40,0x66 +,0xfc,0x16,0x2a,0x06,0x04,0xe1,0x71,0xfe +,0xec,0xfb,0x3d,0x20,0x42,0x52,0x48,0x56 +,0x3b,0xcf,0xd5,0xa1,0x55,0xdc,0xc4,0x7b +,0xbd,0xa7,0x0b,0x86,0xe5,0xab,0x9b,0x55 +,0x00,0x2b,0xd1,0x27,0x4c,0x02,0xdb,0x35 +,0x32,0x1a,0xcd,0x7a,0xf8,0xb2,0xe2,0xd2 +,0x50,0x15,0xe1,0x36,0xb7,0x67,0x94,0x58 +,0xe9,0xf4,0x32,0x43,0xbf,0x71,0x9d,0x63 +,0x9b,0xad,0xb5,0xfe,0xac,0x03,0xf8,0x0a +,0x19,0xa9,0x6e,0xf1,0x0c,0xb1,0xd1,0x53 +,0x33,0xa8,0x37,0xb9,0x09,0x46,0xba,0x38 +,0x54,0xee,0x74,0xda,0x3f,0x25,0x85,0xef +,0xc7,0xe1,0xe1,0x70,0xe1,0x7e,0x15,0xe5 +,0x63,0xe7,0xe0,0x96,0xe0,0x33,0xd9,0x1b +,0x63,0xf7,0xac,0x92,0xe9,0x97,0x2e,0x0d +,0x43,0xe5 diff --git a/components/espressif__libsodium/libsodium/test/default/auth.c b/components/espressif__libsodium/libsodium/test/default/auth.c new file mode 100644 index 0000000..23ac927 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth.c @@ -0,0 +1,141 @@ + +#define TEST_NAME "auth" +#include "cmptest.h" + +/* "Test Case 2" from RFC 4231 */ +static unsigned char key[32] = "Jefe"; +static unsigned char c[] = "what do ya want for nothing?"; + +/* Hacker manifesto */ +static unsigned char key2[] = + "Another one got caught today, it's all over the papers. \"Teenager " + "Arrested in Computer Crime Scandal\", \"Hacker Arrested after Bank " + "Tampering\"... Damn kids. They're all alike."; + +static unsigned char a[crypto_auth_BYTES]; +static unsigned char a2[crypto_auth_hmacsha512_BYTES]; +static unsigned char a3[crypto_auth_hmacsha512_BYTES]; + +int +main(void) +{ + crypto_auth_hmacsha512_state st; + crypto_auth_hmacsha256_state st256; + crypto_auth_hmacsha512256_state st512_256; + size_t i; + + assert(crypto_auth_hmacsha512_statebytes() == + sizeof(crypto_auth_hmacsha512_state)); + crypto_auth(a, c, sizeof c - 1U, key); + for (i = 0; i < sizeof a; ++i) { + printf(",0x%02x", (unsigned int) a[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + + crypto_auth_hmacsha512_init(&st, key, sizeof key); + crypto_auth_hmacsha512_update(&st, c, 1U); + crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U); + crypto_auth_hmacsha512_final(&st, a2); + for (i = 0; i < sizeof a2; ++i) { + printf(",0x%02x", (unsigned int) a2[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + + crypto_auth_hmacsha512_init(&st, key2, sizeof key2); + crypto_auth_hmacsha512_update(&st, c, 1U); + crypto_auth_hmacsha512_update(&st, c, sizeof c - 2U); + crypto_auth_hmacsha512_final(&st, a2); + for (i = 0; i < sizeof a2; ++i) { + printf(",0x%02x", (unsigned int) a2[i]); + if (i % 8 == 7) + printf("\n"); + } + + memset(a2, 0, sizeof a2); + crypto_auth_hmacsha256_init(&st256, key2, sizeof key2); + crypto_auth_hmacsha256_update(&st256, guard_page, 0U); + crypto_auth_hmacsha256_update(&st256, c, 1U); + crypto_auth_hmacsha256_update(&st256, c, sizeof c - 2U); + crypto_auth_hmacsha256_final(&st256, a2); + for (i = 0; i < sizeof a2; ++i) { + printf(",0x%02x", (unsigned int) a2[i]); + if (i % 8 == 7) + printf("\n"); + } + + /* Empty message tests: HMAC-SHA512 */ + memset(a2, 0, sizeof a2); + crypto_auth_hmacsha512_init(&st, key, sizeof key); + crypto_auth_hmacsha512_final(&st, a2); + + memset(a3, 0, sizeof a3); + crypto_auth_hmacsha512_init(&st, key, sizeof key); + crypto_auth_hmacsha512_update(&st, a2, 0U); + crypto_auth_hmacsha512_final(&st, a3); + assert(sodium_memcmp(a2, a3, sizeof a2) == 0); + + memset(a3, 0, sizeof a3); + crypto_auth_hmacsha512_init(&st, key, sizeof key); + crypto_auth_hmacsha512_update(&st, guard_page, 0U); + crypto_auth_hmacsha512_final(&st, a3); + assert(sodium_memcmp(a2, a3, sizeof a2) == 0); + + /* Empty message tests: HMAC-SHA512-256 */ + memset(a2, 0, sizeof a2); + crypto_auth_hmacsha512256_init(&st512_256, key, sizeof key); + crypto_auth_hmacsha512256_final(&st512_256, a2); + + memset(a3, 0, sizeof a3); + crypto_auth_hmacsha512256_init(&st512_256, key, sizeof key); + crypto_auth_hmacsha512256_update(&st512_256, a2, 0U); + crypto_auth_hmacsha512256_final(&st512_256, a3); + assert(sodium_memcmp(a2, a3, sizeof a2) == 0); + + memset(a3, 0, sizeof a3); + crypto_auth_hmacsha512256_init(&st512_256, key, sizeof key); + crypto_auth_hmacsha512256_update(&st512_256, guard_page, 0U); + crypto_auth_hmacsha512256_final(&st512_256, a3); + assert(sodium_memcmp(a2, a3, sizeof a2) == 0); + + /* Empty message tests: HMAC-SHA256 */ + + memset(a2, 0, sizeof a2); + crypto_auth_hmacsha256_init(&st256, key, sizeof key); + crypto_auth_hmacsha256_final(&st256, a2); + + memset(a3, 0, sizeof a3); + crypto_auth_hmacsha256_init(&st256, key, sizeof key); + crypto_auth_hmacsha256_update(&st256, a2, 0U); + crypto_auth_hmacsha256_final(&st256, a3); + assert(sodium_memcmp(a2, a3, sizeof a2) == 0); + + memset(a3, 0, sizeof a3); + crypto_auth_hmacsha256_init(&st256, key, sizeof key); + crypto_auth_hmacsha256_update(&st256, guard_page, 0U); + crypto_auth_hmacsha256_final(&st256, a3); + assert(sodium_memcmp(a2, a3, sizeof a2) == 0); + + /* --- */ + + assert(crypto_auth_bytes() > 0U); + assert(crypto_auth_keybytes() > 0U); + assert(strcmp(crypto_auth_primitive(), "hmacsha512256") == 0); + assert(crypto_auth_hmacsha256_bytes() > 0U); + assert(crypto_auth_hmacsha256_keybytes() > 0U); + assert(crypto_auth_hmacsha512_bytes() > 0U); + assert(crypto_auth_hmacsha512_keybytes() > 0U); + assert(crypto_auth_hmacsha512256_bytes() == crypto_auth_bytes()); + assert(crypto_auth_hmacsha512256_keybytes() == crypto_auth_keybytes()); + assert(crypto_auth_hmacsha512256_statebytes() >= + crypto_auth_hmacsha512256_keybytes()); + assert(crypto_auth_hmacsha256_statebytes() == + sizeof(crypto_auth_hmacsha256_state)); + assert(crypto_auth_hmacsha512_statebytes() == + sizeof(crypto_auth_hmacsha512_state)); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/auth.exp b/components/espressif__libsodium/libsodium/test/default/auth.exp new file mode 100644 index 0000000..03b57d6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth.exp @@ -0,0 +1,30 @@ +,0x16,0x4b,0x7a,0x7b,0xfc,0xf8,0x19,0xe2 +,0xe3,0x95,0xfb,0xe7,0x3b,0x56,0xe0,0xa3 +,0x87,0xbd,0x64,0x22,0x2e,0x83,0x1f,0xd6 +,0x10,0x27,0x0c,0xd7,0xea,0x25,0x05,0x54 + +,0x7b,0x9d,0x83,0x38,0xeb,0x1e,0x3d,0xdd +,0xba,0x8a,0x9a,0x35,0x08,0xd0,0x34,0xa1 +,0xec,0xbe,0x75,0x11,0x37,0xfa,0x1b,0xcb +,0xa0,0xf9,0x2a,0x3e,0x6d,0xfc,0x79,0x80 +,0xb8,0x81,0xa8,0x64,0x5f,0x92,0x67,0x22 +,0x74,0x37,0x96,0x4b,0xf3,0x07,0x0b,0xe2 +,0xb3,0x36,0xb3,0xa3,0x20,0xf8,0x25,0xce +,0xc9,0x87,0x2d,0xb2,0x50,0x4b,0xf3,0x6d + +,0x73,0xe0,0x0d,0xcb,0xf4,0xf8,0xa3,0x33 +,0x30,0xac,0x52,0xed,0x2c,0xc9,0xd1,0xb2 +,0xef,0xb1,0x77,0x13,0xd3,0xec,0xe3,0x96 +,0x14,0x9f,0x37,0x65,0x3c,0xfe,0x70,0xe7 +,0x1f,0x2c,0x6f,0x9a,0x62,0xc3,0xc5,0x3a +,0x31,0x8a,0x9a,0x0b,0x3b,0x78,0x60,0xa4 +,0x31,0x6f,0x72,0x9b,0x8d,0x30,0x0f,0x15 +,0x9b,0x2f,0x60,0x93,0xa8,0x60,0xc1,0xed +,0x62,0x27,0xe4,0xce,0x7c,0x7f,0xe7,0xa4 +,0xba,0x9e,0x2a,0xc3,0x42,0xc3,0x5d,0x24 +,0x03,0x3e,0x38,0x8c,0x9b,0xdc,0x29,0x9b +,0x4a,0x50,0x50,0xf6,0x71,0x70,0xf4,0x83 +,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 diff --git a/components/espressif__libsodium/libsodium/test/default/auth2.c b/components/espressif__libsodium/libsodium/test/default/auth2.c new file mode 100644 index 0000000..583a2d4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth2.c @@ -0,0 +1,34 @@ +/* "Test Case AUTH256-4" from RFC 4868 */ + +#define TEST_NAME "auth2" +#include "cmptest.h" + +static unsigned char key[32] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 +}; + +static unsigned char c[50] = { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd }; + +static unsigned char a[32]; + +int +main(void) +{ + int i; + + crypto_auth_hmacsha256(a, c, sizeof c, key); + for (i = 0; i < 32; ++i) { + printf(",0x%02x", (unsigned int) a[i]); + if (i % 8 == 7) + printf("\n"); + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/auth2.exp b/components/espressif__libsodium/libsodium/test/default/auth2.exp new file mode 100644 index 0000000..955951a --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth2.exp @@ -0,0 +1,4 @@ +,0x37,0x2e,0xfc,0xf9,0xb4,0x0b,0x35,0xc2 +,0x11,0x5b,0x13,0x46,0x90,0x3d,0x2e,0xf4 +,0x2f,0xce,0xd4,0x6f,0x08,0x46,0xe7,0x25 +,0x7b,0xb1,0x56,0xd3,0xd7,0xb3,0x0d,0x3f diff --git a/components/espressif__libsodium/libsodium/test/default/auth3.c b/components/espressif__libsodium/libsodium/test/default/auth3.c new file mode 100644 index 0000000..ca90aa7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth3.c @@ -0,0 +1,36 @@ +/* "Test Case AUTH256-4" from RFC 4868 */ + +#define TEST_NAME "auth3" +#include "cmptest.h" + +static unsigned char key[32] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 +}; + +static unsigned char c[50] = { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd }; + +static unsigned char a[32] = { 0x37, 0x2e, 0xfc, 0xf9, 0xb4, 0x0b, 0x35, 0xc2, + 0x11, 0x5b, 0x13, 0x46, 0x90, 0x3d, 0x2e, 0xf4, + 0x2f, 0xce, 0xd4, 0x6f, 0x08, 0x46, 0xe7, 0x25, + 0x7b, 0xb1, 0x56, 0xd3, 0xd7, 0xb3, 0x0d, 0x3f }; + +int +main(void) +{ + static unsigned char a2[crypto_auth_hmacsha256_BYTES]; + + printf("%d\n", crypto_auth_hmacsha256_verify(a, c, sizeof c, key)); + + crypto_auth_hmacsha256(a2, guard_page, 0U, key); + assert(crypto_auth_hmacsha256_verify(a2, guard_page, 0U, key) == 0); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/auth3.exp b/components/espressif__libsodium/libsodium/test/default/auth3.exp new file mode 100644 index 0000000..573541a --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth3.exp @@ -0,0 +1 @@ +0 diff --git a/components/espressif__libsodium/libsodium/test/default/auth5.c b/components/espressif__libsodium/libsodium/test/default/auth5.c new file mode 100644 index 0000000..955c9cf --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth5.c @@ -0,0 +1,41 @@ + +#define TEST_NAME "auth5" +#include "cmptest.h" + +static unsigned char key[32]; +static unsigned char c[1000]; +static unsigned char a[32]; + +int +main(void) +{ + size_t clen; + + for (clen = 0; clen < 1000; ++clen) { + crypto_auth_keygen(key); + randombytes_buf(c, clen); + crypto_auth(a, c, clen, key); + if (crypto_auth_verify(a, c, clen, key) != 0) { + printf("fail %u\n", (unsigned int) clen); + return 100; + } + if (clen > 0) { + c[rand() % clen] += 1 + (rand() % 255); + if (crypto_auth_verify(a, c, clen, key) == 0) { + printf("forgery %u\n", (unsigned int) clen); + return 100; + } + a[rand() % sizeof a] += 1 + (rand() % 255); + if (crypto_auth_verify(a, c, clen, key) == 0) { + printf("forgery %u\n", (unsigned int) clen); + return 100; + } + } + } + + crypto_auth_keygen(key); + crypto_auth(a, guard_page, 0U, key); + assert(crypto_auth_verify(a, guard_page, 0U, key) == 0); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/auth5.exp b/components/espressif__libsodium/libsodium/test/default/auth5.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/auth6.c b/components/espressif__libsodium/libsodium/test/default/auth6.c new file mode 100644 index 0000000..f397a05 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth6.c @@ -0,0 +1,23 @@ + +#define TEST_NAME "auth6" +#include "cmptest.h" + +/* "Test Case 2" from RFC 4231 */ +static unsigned char key[32] = "Jefe"; +static unsigned char c[] = "what do ya want for nothing?"; + +static unsigned char a[64]; + +int +main(void) +{ + int i; + + crypto_auth_hmacsha512(a, c, sizeof c - 1U, key); + for (i = 0; i < 64; ++i) { + printf(",0x%02x", (unsigned int) a[i]); + if (i % 8 == 7) + printf("\n"); + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/auth6.exp b/components/espressif__libsodium/libsodium/test/default/auth6.exp new file mode 100644 index 0000000..da0c528 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth6.exp @@ -0,0 +1,8 @@ +,0x16,0x4b,0x7a,0x7b,0xfc,0xf8,0x19,0xe2 +,0xe3,0x95,0xfb,0xe7,0x3b,0x56,0xe0,0xa3 +,0x87,0xbd,0x64,0x22,0x2e,0x83,0x1f,0xd6 +,0x10,0x27,0x0c,0xd7,0xea,0x25,0x05,0x54 +,0x97,0x58,0xbf,0x75,0xc0,0x5a,0x99,0x4a +,0x6d,0x03,0x4f,0x65,0xf8,0xf0,0xe6,0xfd +,0xca,0xea,0xb1,0xa3,0x4d,0x4a,0x6b,0x4b +,0x63,0x6e,0x07,0x0a,0x38,0xbc,0xe7,0x37 diff --git a/components/espressif__libsodium/libsodium/test/default/auth7.c b/components/espressif__libsodium/libsodium/test/default/auth7.c new file mode 100644 index 0000000..3d087f8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/auth7.c @@ -0,0 +1,41 @@ + +#define TEST_NAME "auth7" +#include "cmptest.h" + +static unsigned char key[32]; +static unsigned char c[600]; +static unsigned char a[64]; + +int +main(void) +{ + size_t clen; + + for (clen = 0; clen < sizeof c; ++clen) { + crypto_auth_keygen(key); + randombytes_buf(c, clen); + crypto_auth_hmacsha512(a, c, clen, key); + if (crypto_auth_hmacsha512_verify(a, c, clen, key) != 0) { + printf("fail %u\n", (unsigned int) clen); + return 100; + } + if (clen > 0) { + c[(size_t) rand() % clen] += 1 + (rand() % 255); + if (crypto_auth_hmacsha512_verify(a, c, clen, key) == 0) { + printf("forgery %u\n", (unsigned int) clen); + return 100; + } + a[rand() % sizeof a] += 1 + (rand() % 255); + if (crypto_auth_hmacsha512_verify(a, c, clen, key) == 0) { + printf("forgery %u\n", (unsigned int) clen); + return 100; + } + } + } + + crypto_auth_keygen(key); + crypto_auth_hmacsha512(a, guard_page, 0U, key); + assert(crypto_auth_hmacsha512_verify(a, guard_page, 0U, key) == 0); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/auth7.exp b/components/espressif__libsodium/libsodium/test/default/auth7.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/box.c b/components/espressif__libsodium/libsodium/test/default/box.c new file mode 100644 index 0000000..228aca7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box.c @@ -0,0 +1,112 @@ + +#define TEST_NAME "box" +#include "cmptest.h" + +static const unsigned char alicesk[32] = { + 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, + 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, + 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a +}; + +static const unsigned char bobpk[32] = { + 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, 0x61, + 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78, + 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f +}; + +static const unsigned char small_order_p[crypto_box_PUBLICKEYBYTES] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 +}; + +static const unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +/* API requires first 32 bytes to be 0 */ +static const unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0xbe, 0x07, 0x5f, 0xc5, + 0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b, + 0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, 0x4b, 0x66, 0x84, 0x9b, + 0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, 0x33, 0xbd, 0x75, 0x1a, + 0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, 0x6c, 0xdc, 0x3c, 0x01, + 0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, 0x31, 0x4a, 0xdb, 0x31, + 0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, 0xce, 0xea, 0x3a, 0x7f, + 0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, 0xd6, 0xb1, 0x31, 0x8a, + 0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, 0x04, 0x89, 0x77, 0xeb, + 0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, 0x60, 0x90, 0x2e, 0x52, + 0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, 0xe0, 0x82, 0xf9, 0x37, + 0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05 +}; + +static unsigned char c[163]; + +int +main(void) +{ + unsigned char k[crypto_box_BEFORENMBYTES]; + int i; + int ret; + + ret = crypto_box(c, m, 163, nonce, bobpk, alicesk); + assert(ret == 0); + for (i = 16; i < 163; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + + ret = crypto_box(c, m, 163, nonce, small_order_p, alicesk); + assert(ret == -1); + + memset(c, 0, sizeof c); + + ret = crypto_box_beforenm(k, bobpk, alicesk); + assert(ret == 0); + crypto_box_afternm(c, m, 163, nonce, k); + for (i = 16; i < 163; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + + ret = crypto_box_beforenm(k, small_order_p, alicesk); + assert(ret == -1); + + assert(crypto_box_seedbytes() > 0U); + assert(crypto_box_publickeybytes() > 0U); + assert(crypto_box_secretkeybytes() > 0U); + assert(crypto_box_beforenmbytes() > 0U); + assert(crypto_box_noncebytes() > 0U); + assert(crypto_box_zerobytes() > 0U); + assert(crypto_box_boxzerobytes() > 0U); + assert(crypto_box_macbytes() > 0U); + assert(crypto_box_messagebytes_max() > 0U); + assert(strcmp(crypto_box_primitive(), "curve25519xsalsa20poly1305") == 0); + assert(crypto_box_curve25519xsalsa20poly1305_seedbytes() == + crypto_box_seedbytes()); + assert(crypto_box_curve25519xsalsa20poly1305_publickeybytes() == + crypto_box_publickeybytes()); + assert(crypto_box_curve25519xsalsa20poly1305_secretkeybytes() == + crypto_box_secretkeybytes()); + assert(crypto_box_curve25519xsalsa20poly1305_beforenmbytes() == + crypto_box_beforenmbytes()); + assert(crypto_box_curve25519xsalsa20poly1305_noncebytes() == + crypto_box_noncebytes()); + assert(crypto_box_curve25519xsalsa20poly1305_zerobytes() == + crypto_box_zerobytes()); + assert(crypto_box_curve25519xsalsa20poly1305_boxzerobytes() == + crypto_box_boxzerobytes()); + assert(crypto_box_curve25519xsalsa20poly1305_macbytes() == + crypto_box_macbytes()); + assert(crypto_box_curve25519xsalsa20poly1305_messagebytes_max() == + crypto_box_messagebytes_max()); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box.exp b/components/espressif__libsodium/libsodium/test/default/box.exp new file mode 100644 index 0000000..25db669 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box.exp @@ -0,0 +1,38 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 diff --git a/components/espressif__libsodium/libsodium/test/default/box2.c b/components/espressif__libsodium/libsodium/test/default/box2.c new file mode 100644 index 0000000..3e46fda --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box2.c @@ -0,0 +1,80 @@ + +#define TEST_NAME "box2" +#include "cmptest.h" + +static unsigned char bobsk[32] = { 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, + 0x4b, 0x79, 0xe1, 0x7f, 0x8b, 0x83, 0x80, + 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, + 0x18, 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, + 0xff, 0x88, 0xe0, 0xeb }; + +static unsigned char alicepk[32] = { 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, + 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, + 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, + 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, + 0xaa, 0x9b, 0x4e, 0x6a }; + +static const unsigned char small_order_p[crypto_box_PUBLICKEYBYTES] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 +}; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +/* API requires first 16 bytes to be 0 */ +static unsigned char c[163] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5, + 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9, 0x8e, 0x99, 0x3b, 0x9f, + 0x48, 0x68, 0x12, 0x73, 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce, + 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4, 0x47, 0x6f, 0xb8, 0xc5, + 0x31, 0xa1, 0x18, 0x6a, 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b, + 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72, 0x71, 0xd2, 0xc2, 0x0f, + 0x9b, 0x92, 0x8f, 0xe2, 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38, + 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a, 0xb9, 0x32, 0x16, 0x45, + 0x48, 0xe5, 0x26, 0xae, 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea, + 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda, 0x99, 0x83, 0x2b, 0x61, + 0xca, 0x01, 0xb6, 0xde, 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3, + 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6, 0x59, 0x9b, 0x1f, 0x65, + 0x4c, 0xb4, 0x5a, 0x74, 0xe3, 0x55, 0xa5 +}; + +static unsigned char m[163]; + +int +main(void) +{ + unsigned char k[crypto_box_BEFORENMBYTES]; + int i; + int ret; + + if (crypto_box_open(m, c, 163, nonce, alicepk, bobsk) == 0) { + for (i = 32; i < 163; ++i) { + printf(",0x%02x", (unsigned int) m[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + } + ret = crypto_box_open(m, c, 163, nonce, small_order_p, bobsk); + assert(ret == -1); + + memset(m, 0, sizeof m); + ret = crypto_box_beforenm(k, small_order_p, bobsk); + assert(ret == -1); + ret = crypto_box_beforenm(k, alicepk, bobsk); + assert(ret == 0); + if (crypto_box_open_afternm(m, c, 163, nonce, k) == 0) { + for (i = 32; i < 163; ++i) { + printf(",0x%02x", (unsigned int) m[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box2.exp b/components/espressif__libsodium/libsodium/test/default/box2.exp new file mode 100644 index 0000000..51deccd --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box2.exp @@ -0,0 +1,34 @@ +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 diff --git a/components/espressif__libsodium/libsodium/test/default/box7.c b/components/espressif__libsodium/libsodium/test/default/box7.c new file mode 100644 index 0000000..a58ea30 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box7.c @@ -0,0 +1,50 @@ + +#define TEST_NAME "box7" +#include "cmptest.h" + +static unsigned char alicesk[crypto_box_SECRETKEYBYTES]; +static unsigned char alicepk[crypto_box_PUBLICKEYBYTES]; +static unsigned char bobsk[crypto_box_SECRETKEYBYTES]; +static unsigned char bobpk[crypto_box_PUBLICKEYBYTES]; +static unsigned char n[crypto_box_NONCEBYTES]; + +int +main(void) +{ + unsigned char *m; + unsigned char *c; + unsigned char *m2; + size_t mlen; + size_t mlen_max = 1000; + size_t i; + int ret; + + m = (unsigned char *) sodium_malloc(mlen_max); + c = (unsigned char *) sodium_malloc(mlen_max); + m2 = (unsigned char *) sodium_malloc(mlen_max); + memset(m, 0, crypto_box_ZEROBYTES); + crypto_box_keypair(alicepk, alicesk); + crypto_box_keypair(bobpk, bobsk); + for (mlen = 0; mlen + crypto_box_ZEROBYTES <= mlen_max; mlen++) { + randombytes_buf(n, crypto_box_NONCEBYTES); + randombytes_buf(m + crypto_box_ZEROBYTES, mlen); + ret = crypto_box(c, m, mlen + crypto_box_ZEROBYTES, n, bobpk, alicesk); + assert(ret == 0); + if (crypto_box_open(m2, c, mlen + crypto_box_ZEROBYTES, n, alicepk, + bobsk) == 0) { + for (i = 0; i < mlen + crypto_box_ZEROBYTES; ++i) { + if (m2[i] != m[i]) { + printf("bad decryption\n"); + break; + } + } + } else { + printf("ciphertext fails verification\n"); + } + } + sodium_free(m); + sodium_free(c); + sodium_free(m2); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box7.exp b/components/espressif__libsodium/libsodium/test/default/box7.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/box8.c b/components/espressif__libsodium/libsodium/test/default/box8.c new file mode 100644 index 0000000..4d27f33 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box8.c @@ -0,0 +1,58 @@ + +#define TEST_NAME "box8" +#include "cmptest.h" + +static unsigned char alicesk[crypto_box_SECRETKEYBYTES]; +static unsigned char alicepk[crypto_box_PUBLICKEYBYTES]; +static unsigned char bobsk[crypto_box_SECRETKEYBYTES]; +static unsigned char bobpk[crypto_box_PUBLICKEYBYTES]; +static unsigned char n[crypto_box_NONCEBYTES]; + +int +main(void) +{ + unsigned char *m; + unsigned char *c; + unsigned char *m2; + size_t mlen; + size_t mlen_max = 1000; + size_t i; + int faults; + int ret; + + m = (unsigned char *) sodium_malloc(mlen_max); + c = (unsigned char *) sodium_malloc(mlen_max); + m2 = (unsigned char *) sodium_malloc(mlen_max); + crypto_box_keypair(alicepk, alicesk); + crypto_box_keypair(bobpk, bobsk); + for (mlen = 0; mlen + crypto_box_ZEROBYTES <= mlen_max; mlen++) { + randombytes_buf(n, crypto_box_NONCEBYTES); + randombytes_buf(m + crypto_box_ZEROBYTES, mlen); + ret = crypto_box(c, m, mlen + crypto_box_ZEROBYTES, n, bobpk, alicesk); + assert(ret == 0); +#ifdef BROWSER_TESTS + faults = 1; +#else + faults = 5; +#endif + while (faults > 0) { + c[rand() % (mlen + crypto_box_ZEROBYTES)] = rand(); + if (crypto_box_open(m2, c, mlen + crypto_box_ZEROBYTES, n, alicepk, + bobsk) == 0) { + for (i = 0; i < mlen + crypto_box_ZEROBYTES; ++i) { + if (m2[i] != m[i]) { + printf("forgery\n"); + return 100; + } + } + } else { + faults--; + } + } + } + sodium_free(m); + sodium_free(c); + sodium_free(m2); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box8.exp b/components/espressif__libsodium/libsodium/test/default/box8.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/box_easy.c b/components/espressif__libsodium/libsodium/test/default/box_easy.c new file mode 100644 index 0000000..2e6a20f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_easy.c @@ -0,0 +1,72 @@ + +#define TEST_NAME "box_easy" +#include "cmptest.h" + +static unsigned char alicesk[32] = { 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, + 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, + 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, + 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, + 0x1d, 0xb9, 0x2c, 0x2a }; + +static unsigned char bobpk[32] = { 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, + 0xb4, 0xd3, 0x5b, 0x61, 0xc2, 0xec, 0xe4, + 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, + 0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, + 0x6f, 0x88, 0x2b, 0x4f }; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +static unsigned char m[131] = { + 0xbe, 0x07, 0x5f, 0xc5, 0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, + 0xeb, 0xeb, 0x0c, 0x7b, 0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, + 0x4b, 0x66, 0x84, 0x9b, 0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, + 0x33, 0xbd, 0x75, 0x1a, 0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, + 0x6c, 0xdc, 0x3c, 0x01, 0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, + 0x31, 0x4a, 0xdb, 0x31, 0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, + 0xce, 0xea, 0x3a, 0x7f, 0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, + 0xd6, 0xb1, 0x31, 0x8a, 0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, + 0x04, 0x89, 0x77, 0xeb, 0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, + 0x60, 0x90, 0x2e, 0x52, 0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, + 0xe0, 0x82, 0xf9, 0x37, 0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05 +}; + +static unsigned char c[147 + crypto_box_MACBYTES]; + +int +main(void) +{ + size_t i; + int ret; + + ret = crypto_box_easy(c, m, 131, nonce, bobpk, alicesk); + assert(ret == 0); + for (i = 0; i < 131 + crypto_box_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + /* Null message */ + + ret = crypto_box_easy(c, guard_page, 0, nonce, bobpk, alicesk); + assert(ret == 0); + for (i = 0; i < 1 + crypto_box_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + ret = + crypto_box_open_easy(c, c, crypto_box_MACBYTES, nonce, bobpk, alicesk); + assert(ret == 0); + for (i = 0; i < 1 + crypto_box_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + c[randombytes_uniform(crypto_box_MACBYTES)]++; + ret = crypto_box_open_easy(c, c, crypto_box_MACBYTES, nonce, bobpk, alicesk); + assert(ret == -1); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box_easy.exp b/components/espressif__libsodium/libsodium/test/default/box_easy.exp new file mode 100644 index 0000000..f13afd0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_easy.exp @@ -0,0 +1,3 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,0xe3,0x55,0xa5 +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80,0x8e +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80,0x8e diff --git a/components/espressif__libsodium/libsodium/test/default/box_easy2.c b/components/espressif__libsodium/libsodium/test/default/box_easy2.c new file mode 100644 index 0000000..05cb099 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_easy2.c @@ -0,0 +1,149 @@ + +#define TEST_NAME "box_easy2" +#include "cmptest.h" + +static const unsigned char small_order_p[crypto_box_PUBLICKEYBYTES] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 +}; + +int +main(void) +{ + unsigned char *alicepk; + unsigned char *alicesk; + unsigned char *bobpk; + unsigned char *bobsk; + unsigned char *mac; + unsigned char *nonce; + unsigned char *k1; + unsigned char *k2; + unsigned char *m; + unsigned char *m2; + unsigned char *c; + size_t mlen; + size_t i; + size_t m_size; + size_t m2_size; + size_t c_size; + int ret; + + m2_size = m_size = 7U + randombytes_uniform(1000); + c_size = crypto_box_MACBYTES + m_size; + m = (unsigned char *) sodium_malloc(m_size); + m2 = (unsigned char *) sodium_malloc(m2_size); + c = (unsigned char *) sodium_malloc(c_size); + alicepk = (unsigned char *) sodium_malloc(crypto_box_PUBLICKEYBYTES); + alicesk = (unsigned char *) sodium_malloc(crypto_box_SECRETKEYBYTES); + bobpk = (unsigned char *) sodium_malloc(crypto_box_PUBLICKEYBYTES); + bobsk = (unsigned char *) sodium_malloc(crypto_box_SECRETKEYBYTES); + mac = (unsigned char *) sodium_malloc(crypto_box_MACBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_box_NONCEBYTES); + k1 = (unsigned char *) sodium_malloc(crypto_box_BEFORENMBYTES); + k2 = (unsigned char *) sodium_malloc(crypto_box_BEFORENMBYTES); + crypto_box_keypair(alicepk, alicesk); + crypto_box_keypair(bobpk, bobsk); + mlen = (size_t) randombytes_uniform((uint32_t) m_size) + 1U; + randombytes_buf(m, mlen); + randombytes_buf(nonce, crypto_box_NONCEBYTES); + ret = crypto_box_easy(c, m, mlen, nonce, bobpk, alicesk); + assert(ret == 0); + if (crypto_box_open_easy(m2, c, + (unsigned long long) mlen + crypto_box_MACBYTES, + nonce, alicepk, bobsk) != 0) { + printf("open() failed"); + return 1; + } + printf("%d\n", memcmp(m, m2, mlen)); + + for (i = 0; i < mlen + crypto_box_MACBYTES - 1; i++) { + if (crypto_box_open_easy(m2, c, (unsigned long long) i, nonce, alicepk, + bobsk) == 0) { + printf("short open() should have failed"); + return 1; + } + } + memcpy(c, m, mlen); + ret = + crypto_box_easy(c, c, (unsigned long long) mlen, nonce, bobpk, alicesk); + assert(ret == 0); + printf("%d\n", memcmp(m, c, mlen) == 0); + printf("%d\n", memcmp(m, c + crypto_box_MACBYTES, mlen) == 0); + if (crypto_box_open_easy(c, c, + (unsigned long long) mlen + crypto_box_MACBYTES, + nonce, alicepk, bobsk) != 0) { + printf("crypto_box_open_easy() failed\n"); + } + + ret = crypto_box_beforenm(k1, small_order_p, bobsk); + assert(ret == -1); + ret = crypto_box_beforenm(k2, small_order_p, alicesk); + assert(ret == -1); + + ret = crypto_box_beforenm(k1, alicepk, bobsk); + assert(ret == 0); + ret = crypto_box_beforenm(k2, bobpk, alicesk); + assert(ret == 0); + + memset(m2, 0, m2_size); + + if (crypto_box_easy_afternm(c, m, 0, nonce, k1) != 0) { + printf( + "crypto_box_easy_afternm() with a null ciphertext should have " + "worked\n"); + } + crypto_box_easy_afternm(c, m, (unsigned long long) mlen, nonce, k1); + if (crypto_box_open_easy_afternm( + m2, c, (unsigned long long) mlen + crypto_box_MACBYTES, nonce, + k2) != 0) { + printf("crypto_box_open_easy_afternm() failed\n"); + } + printf("%d\n", memcmp(m, m2, mlen)); + if (crypto_box_open_easy_afternm(m2, c, crypto_box_MACBYTES - 1U, nonce, + k2) == 0) { + printf( + "crypto_box_open_easy_afternm() with a huge ciphertext should have " + "failed\n"); + } + memset(m2, 0, m2_size); + ret = crypto_box_detached(c, mac, m, (unsigned long long) mlen, nonce, + small_order_p, bobsk); + assert(ret == -1); + ret = crypto_box_detached(c, mac, m, (unsigned long long) mlen, nonce, + alicepk, bobsk); + assert(ret == 0); + if (crypto_box_open_detached(m2, c, mac, (unsigned long long) mlen, nonce, + small_order_p, alicesk) != -1) { + printf("crypto_box_open_detached() with a weak key passed\n"); + } + if (crypto_box_open_detached(m2, c, mac, (unsigned long long) mlen, nonce, + bobpk, alicesk) != 0) { + printf("crypto_box_open_detached() failed\n"); + } + printf("%d\n", memcmp(m, m2, mlen)); + + memset(m2, 0, m2_size); + crypto_box_detached_afternm(c, mac, m, (unsigned long long) mlen, nonce, + k1); + if (crypto_box_open_detached_afternm(m2, c, mac, (unsigned long long) mlen, + nonce, k2) != 0) { + printf("crypto_box_open_detached_afternm() failed\n"); + } + printf("%d\n", memcmp(m, m2, mlen)); + + sodium_free(alicepk); + sodium_free(alicesk); + sodium_free(bobpk); + sodium_free(bobsk); + sodium_free(mac); + sodium_free(nonce); + sodium_free(k1); + sodium_free(k2); + sodium_free(m); + sodium_free(m2); + sodium_free(c); + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box_easy2.exp b/components/espressif__libsodium/libsodium/test/default/box_easy2.exp new file mode 100644 index 0000000..9a8dd6c --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_easy2.exp @@ -0,0 +1,7 @@ +0 +0 +0 +0 +0 +0 +OK diff --git a/components/espressif__libsodium/libsodium/test/default/box_seal.c b/components/espressif__libsodium/libsodium/test/default/box_seal.c new file mode 100644 index 0000000..f28c041 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_seal.c @@ -0,0 +1,165 @@ + +#define TEST_NAME "box_seal" +#include "cmptest.h" + +static +void tv1(void) +{ + unsigned char pk[crypto_box_PUBLICKEYBYTES]; + unsigned char sk[crypto_box_SECRETKEYBYTES]; + unsigned char *c; + unsigned char *m; + unsigned char *m2; + size_t m_len; + size_t c_len; + + crypto_box_keypair(pk, sk); + m_len = (size_t) randombytes_uniform(1000); + c_len = crypto_box_SEALBYTES + m_len; + m = (unsigned char *) sodium_malloc(m_len); + m2 = (unsigned char *) sodium_malloc(m_len); + c = (unsigned char *) sodium_malloc(c_len); + randombytes_buf(m, m_len); + if (crypto_box_seal(c, m, m_len, pk) != 0) { + printf("crypto_box_seal() failure\n"); + return; + } + if (crypto_box_seal_open(m2, c, c_len, pk, sk) != 0) { + printf("crypto_box_seal_open() failure\n"); + return; + } + printf("%d\n", memcmp(m, m2, m_len)); + + printf("%d\n", crypto_box_seal_open(m, c, 0U, pk, sk)); + printf("%d\n", crypto_box_seal_open(m, c, c_len - 1U, pk, sk)); + printf("%d\n", crypto_box_seal_open(m, c, c_len, sk, pk)); + + sodium_free(c); + sodium_free(m); + sodium_free(m2); + + assert(crypto_box_sealbytes() == crypto_box_SEALBYTES); +} + +static +void tv2(void) +{ + unsigned char pk[crypto_box_PUBLICKEYBYTES]; + unsigned char sk[crypto_box_SECRETKEYBYTES]; + unsigned char *cm; + unsigned char *m2; + size_t m_len; + size_t cm_len; + + crypto_box_keypair(pk, sk); + m_len = (size_t) randombytes_uniform(1000); + cm_len = crypto_box_SEALBYTES + m_len; + m2 = (unsigned char *) sodium_malloc(m_len); + cm = (unsigned char *) sodium_malloc(cm_len); + randombytes_buf(cm, m_len); + if (crypto_box_seal(cm, cm, m_len, pk) != 0) { + printf("crypto_box_seal() failure\n"); + return; + } + if (crypto_box_seal_open(m2, cm, cm_len, pk, sk) != 0) { + printf("crypto_box_seal_open() failure\n"); + return; + } + assert(m_len == 0 || memcmp(cm, m2, m_len) != 0); + sodium_free(cm); + sodium_free(m2); +} + +#ifndef SODIUM_LIBRARY_MINIMAL +static +void tv3(void) +{ + unsigned char pk[crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES]; + unsigned char sk[crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES]; + unsigned char *c; + unsigned char *m; + unsigned char *m2; + size_t m_len; + size_t c_len; + + crypto_box_curve25519xchacha20poly1305_keypair(pk, sk); + m_len = (size_t) randombytes_uniform(1000); + c_len = crypto_box_curve25519xchacha20poly1305_SEALBYTES + m_len; + m = (unsigned char *) sodium_malloc(m_len); + m2 = (unsigned char *) sodium_malloc(m_len); + c = (unsigned char *) sodium_malloc(c_len); + randombytes_buf(m, m_len); + if (crypto_box_curve25519xchacha20poly1305_seal(c, m, m_len, pk) != 0) { + printf("crypto_box_curve25519xchacha20poly1305_seal() failure\n"); + return; + } + if (crypto_box_curve25519xchacha20poly1305_seal_open(m2, c, c_len, pk, sk) != 0) { + printf("crypto_box_curve25519xchacha20poly1305_seal_open() failure\n"); + return; + } + printf("%d\n", memcmp(m, m2, m_len)); + + printf("%d\n", crypto_box_curve25519xchacha20poly1305_seal_open(m, c, 0U, pk, sk)); + printf("%d\n", crypto_box_curve25519xchacha20poly1305_seal_open(m, c, c_len - 1U, pk, sk)); + printf("%d\n", crypto_box_curve25519xchacha20poly1305_seal_open(m, c, c_len, sk, pk)); + + sodium_free(c); + sodium_free(m); + sodium_free(m2); + + assert(crypto_box_curve25519xchacha20poly1305_sealbytes() == + crypto_box_curve25519xchacha20poly1305_SEALBYTES); +} + +static +void tv4(void) +{ + unsigned char pk[crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES]; + unsigned char sk[crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES]; + unsigned char *cm; + unsigned char *m2; + size_t m_len; + size_t cm_len; + + crypto_box_curve25519xchacha20poly1305_keypair(pk, sk); + m_len = (size_t) randombytes_uniform(1000); + cm_len = crypto_box_curve25519xchacha20poly1305_SEALBYTES + m_len; + m2 = (unsigned char *) sodium_malloc(m_len); + cm = (unsigned char *) sodium_malloc(cm_len); + randombytes_buf(cm, m_len); + if (crypto_box_curve25519xchacha20poly1305_seal(cm, cm, m_len, pk) != 0) { + printf("crypto_box_curve25519xchacha20poly1305_seal() failure\n"); + return; + } + if (crypto_box_curve25519xchacha20poly1305_seal_open(m2, cm, cm_len, pk, sk) != 0) { + printf("crypto_box_curve25519xchacha20poly1305_seal_open() failure\n"); + return; + } + assert(m_len == 0 || memcmp(cm, m2, m_len) != 0); + sodium_free(cm); + sodium_free(m2); +} + +#else + +static +void tv3(void) +{ + printf("0\n-1\n-1\n-1\n"); +} + +static +void tv4(void) +{ } +#endif + +int +main(void) +{ + tv1(); + tv2(); + tv3(); + tv4(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box_seal.exp b/components/espressif__libsodium/libsodium/test/default/box_seal.exp new file mode 100644 index 0000000..ded7a43 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_seal.exp @@ -0,0 +1,8 @@ +0 +-1 +-1 +-1 +0 +-1 +-1 +-1 diff --git a/components/espressif__libsodium/libsodium/test/default/box_seed.c b/components/espressif__libsodium/libsodium/test/default/box_seed.c new file mode 100644 index 0000000..95930d3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_seed.c @@ -0,0 +1,30 @@ + +#define TEST_NAME "box_seed" +#include "cmptest.h" + +static unsigned char seed[32] = { 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, + 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, + 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, + 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, + 0x1d, 0xb9, 0x2c, 0x2a }; + +int +main(void) +{ + int i; + unsigned char sk[32]; + unsigned char pk[32]; + + crypto_box_seed_keypair(pk, sk, seed); + for (i = 0; i < 32; ++i) { + printf(",0x%02x", (unsigned int) pk[i]); + if (i % 8 == 7) + printf("\n"); + } + for (i = 0; i < 32; ++i) { + printf(",0x%02x", (unsigned int) sk[i]); + if (i % 8 == 7) + printf("\n"); + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/box_seed.exp b/components/espressif__libsodium/libsodium/test/default/box_seed.exp new file mode 100644 index 0000000..20e6806 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/box_seed.exp @@ -0,0 +1,8 @@ +,0xed,0x77,0x49,0xb4,0xd9,0x89,0xf6,0x95 +,0x7f,0x3b,0xfd,0xe6,0xc5,0x67,0x67,0xe9 +,0x88,0xe2,0x1c,0x9f,0x87,0x84,0xd9,0x1d +,0x61,0x00,0x11,0xcd,0x55,0x3f,0x9b,0x06 +,0xac,0xcd,0x44,0xeb,0x8e,0x93,0x31,0x9c +,0x05,0x70,0xbc,0x11,0x00,0x5c,0x0e,0x01 +,0x89,0xd3,0x4f,0xf0,0x2f,0x6c,0x17,0x77 +,0x34,0x11,0xad,0x19,0x12,0x93,0xc9,0x8f diff --git a/components/espressif__libsodium/libsodium/test/default/chacha20.c b/components/espressif__libsodium/libsodium/test/default/chacha20.c new file mode 100644 index 0000000..8b88745 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/chacha20.c @@ -0,0 +1,186 @@ + +#define TEST_NAME "chacha20" +#include "cmptest.h" + +static +void tv(void) +{ + static struct { + const char *key_hex; + const char *nonce_hex; + } tests[] + = { { "0000000000000000000000000000000000000000000000000000000000000000", + "0000000000000000" }, + { "0000000000000000000000000000000000000000000000000000000000000001", + "0000000000000000" }, + { "0000000000000000000000000000000000000000000000000000000000000000", + "0000000000000001" }, + { "0000000000000000000000000000000000000000000000000000000000000000", + "0100000000000000" }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "0001020304050607" } }; + unsigned char key[crypto_stream_chacha20_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_NONCEBYTES]; + unsigned char *part; + unsigned char out[160]; + unsigned char zero[160]; + char out_hex[160 * 2 + 1]; + size_t i = 0U; + size_t plen; + + memset(zero, 0, sizeof zero); + do { + sodium_hex2bin((unsigned char *)key, sizeof key, tests[i].key_hex, + strlen(tests[i].key_hex), NULL, NULL, NULL); + sodium_hex2bin(nonce, sizeof nonce, tests[i].nonce_hex, + strlen(tests[i].nonce_hex), NULL, NULL, NULL); + crypto_stream_chacha20(out, sizeof out, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + for (plen = 1U; plen < sizeof out; plen++) { + part = (unsigned char *) sodium_malloc(plen); + crypto_stream_chacha20_xor(part, out, plen, nonce, key); + if (memcmp(part, zero, plen) != 0) { + printf("Failed with length %lu\n", (unsigned long) plen); + } + sodium_free(part); + } + } while (++i < (sizeof tests) / (sizeof tests[0])); + assert(66 <= sizeof out); + for (plen = 1U; plen < 66; plen += 3) { + memset(out, (int) (plen & 0xff), sizeof out); + crypto_stream_chacha20(out, plen, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + } + randombytes_buf(out, sizeof out); + crypto_stream_chacha20(out, sizeof out, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + + assert(crypto_stream_chacha20(out, 0U, nonce, key) == 0); + assert(crypto_stream_chacha20_xor(out, out, 0U, nonce, key) == 0); + assert(crypto_stream_chacha20_xor(out, out, 0U, nonce, key) == 0); + assert(crypto_stream_chacha20_xor_ic(out, out, 0U, nonce, 1U, key) == 0); + + memset(out, 0x42, sizeof out); + crypto_stream_chacha20_xor(out, out, sizeof out, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + + crypto_stream_chacha20_xor_ic(out, out, sizeof out, nonce, 0U, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + + crypto_stream_chacha20_xor_ic(out, out, sizeof out, nonce, 1U, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); +} + +static +void tv_ietf(void) +{ + static struct { + const char *key_hex; + const char *nonce_hex; + uint32_t ic; + } tests[] + = { { "0000000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000000", + 0U }, + { "0000000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000000", + 1U }, + { "0000000000000000000000000000000000000000000000000000000000000001", + "000000000000000000000000", + 1U }, + { "00ff000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000000", + 2U }, + { "0000000000000000000000000000000000000000000000000000000000000000", + "000000000000000000000002", + 0U }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "000000090000004a00000000", + 1U }, + { "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "000000090000004a00000000", + 0xfeffffff }}; + unsigned char key[crypto_stream_chacha20_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_IETF_NONCEBYTES]; + unsigned char *part; + unsigned char out[160]; + unsigned char zero[160]; + char out_hex[160 * 2 + 1]; + size_t i = 0U; + size_t plen; + + memset(zero, 0, sizeof zero); + do { + sodium_hex2bin((unsigned char *)key, sizeof key, tests[i].key_hex, + strlen(tests[i].key_hex), ": ", NULL, NULL); + sodium_hex2bin(nonce, sizeof nonce, tests[i].nonce_hex, + strlen(tests[i].nonce_hex), ": ", NULL, NULL); + memset(out, 0, sizeof out); + crypto_stream_chacha20_ietf_xor_ic(out, out, sizeof out, nonce, tests[i].ic, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + for (plen = 1U; plen < sizeof out; plen++) { + part = (unsigned char *) sodium_malloc(plen); + crypto_stream_chacha20_ietf_xor_ic(part, out, plen, nonce, tests[i].ic, key); + if (memcmp(part, zero, plen) != 0) { + printf("Failed with length %lu\n", (unsigned long) plen); + } + sodium_free(part); + } + } while (++i < (sizeof tests) / (sizeof tests[0])); + assert(66 <= sizeof out); + for (plen = 1U; plen < 66; plen += 3) { + memset(out, (int) (plen & 0xff), sizeof out); + crypto_stream_chacha20_ietf(out, plen, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + } + randombytes_buf(out, sizeof out); + crypto_stream_chacha20_ietf(out, sizeof out, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + + assert(crypto_stream_chacha20_ietf(out, 0U, nonce, key) == 0); + assert(crypto_stream_chacha20_ietf_xor(out, out, 0U, nonce, key) == 0); + assert(crypto_stream_chacha20_ietf_xor(out, out, 0U, nonce, key) == 0); + assert(crypto_stream_chacha20_ietf_xor_ic(out, out, 0U, nonce, 1U, key) == 0); + + memset(out, 0x42, sizeof out); + crypto_stream_chacha20_ietf_xor(out, out, sizeof out, nonce, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + + crypto_stream_chacha20_ietf_xor_ic(out, out, sizeof out, nonce, 0U, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); + + crypto_stream_chacha20_ietf_xor_ic(out, out, sizeof out, nonce, 1U, key); + sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out); + printf("[%s]\n", out_hex); +} + +int +main(void) +{ + tv(); + tv_ietf(); + + assert(crypto_stream_chacha20_keybytes() > 0U); + assert(crypto_stream_chacha20_keybytes() == crypto_stream_chacha20_KEYBYTES); + assert(crypto_stream_chacha20_noncebytes() > 0U); + assert(crypto_stream_chacha20_noncebytes() == crypto_stream_chacha20_NONCEBYTES); + assert(crypto_stream_chacha20_messagebytes_max() == crypto_stream_chacha20_MESSAGEBYTES_MAX); + assert(crypto_stream_chacha20_ietf_keybytes() > 0U); + assert(crypto_stream_chacha20_ietf_keybytes() == crypto_stream_chacha20_ietf_KEYBYTES); + assert(crypto_stream_chacha20_ietf_noncebytes() > 0U); + assert(crypto_stream_chacha20_ietf_noncebytes() == crypto_stream_chacha20_ietf_NONCEBYTES); + assert(crypto_stream_chacha20_ietf_messagebytes_max() == crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/chacha20.exp b/components/espressif__libsodium/libsodium/test/default/chacha20.exp new file mode 100644 index 0000000..aafaf29 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/chacha20.exp @@ -0,0 +1,64 @@ +[76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee65869f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed29b721769ce64e43d57133b074d839d531ed1f28510afb45ace10a1f4b794d6f2d09a0e663266ce1ae7ed1081968a0758e718e997bd362c6b0c34634a9a0b35d] +[4540f05a9f1fb296d7736e7b208e3c96eb4fe1834688d2604f450952ed432d41bbe2a0b6ea7566d2a5d1e7e20d42af2c53d792b1c43fea817e9ad275ae5469633aeb5224ecf849929b9d828db1ced4dd832025e8018b8160b82284f3c949aa5a8eca00bbb4a73bdad192b5c42f73f2fd4e273644c8b36125a64addeb006c13a096d68b9ff7b57e7090f880392effd5b297a83bbaf2fbe8cf5d4618965e3dc776] +[de9cba7bf3d69ef5e786dc63973f653a0b49e015adbff7134fcb7df137821031e85a050278a7084527214f73efc7fa5b5277062eb7a0433e445f41e31afab757283547e3d3d30ee0371c1e6025ff4c91b794a291cf7568d48ff84b37329e2730b12738a072a2b2c7169e326fe4893a7b2421bb910b79599a7ce4fbaee86be427c5ee0e8225eb6f48231fd504939d59eac8bd106cc138779b893c54da8758f62a] +[ef3fdfd6c61578fbf5cf35bd3dd33b8009631634d21e42ac33960bd138e50d32111e4caf237ee53ca8ad6426194a88545ddc497a0b466e7d6bbdb0041b2f586b5305e5e44aff19b235936144675efbe4409eb7e8e5f1430f5f5836aeb49bb5328b017c4b9dc11f8a03863fa803dc71d5726b2b6b31aa32708afe5af1d6b690584d58792b271e5fdb92c486051c48b79a4d48a109bb2d0477956e74c25e93c3c2] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59ea1c53f15916155c2be8241a38008b9a26bc35941e2444177c8ade6689de95264986d95889fb60e84629c9bd9a5acb1cc118be563eb9b3a4a472f82e09a7e778492b562ef7130e88dfe031c79db9d4f7c7a899151b9a475032b63fc385245fe054e3dd5a97a5f576fe064025] +[f7010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101] +[f798a189040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404] +[f798a189f195e6070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707] +[f798a189f195e66982100a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a] +[f798a189f195e66982105ffb640d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d] +[f798a189f195e66982105ffb640bb775101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010] +[f798a189f195e66982105ffb640bb7757f579d131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313] +[f798a189f195e66982105ffb640bb7757f579da31602161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac561c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac31f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b73252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b4641282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c92b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c94400492e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59ea1c53373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59ea1c53f159163a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59ea1c53f15916155c2b3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59ea1c53f15916155c2be8241a404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040] +[f798a189f195e66982105ffb640bb7757f579da31602fc93ec01ac56f85ac3c134a4547b733b46413042c9440049176905d3be59ea1c53f15916155c2be8241a38008b9a26bc35941e2444177c8ade6689de95264986d95889fb60e84629c9bd9a5acb1cc118be563eb9b3a4a472f82e09a7e778492b562ef7130e88dfe031c79db9d4f7c7a899151b9a475032b63fc385245fe054e3dd5a97a5f576fe064025] +[b5dae3cbb3d7a42bc0521db92649f5373d15dfe15440bed1ae43ee14ba18818376e616393179040372008b06420b552b4791fc1ba85e11b31b54571e69aa66587a42c9d864fe77d65c6606553ec89c24cb9cd7640bc49b1acbb922aa046b8bffd818895e835afc147cfbf1e6e630ba6c4be5a53a0b69146cb5514cca9da27385dffb96b585eadb5759d8051270f47d81c7661da216a19f18d5e7b734bc440267] +[42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242] +[7a42c9d864fe77d65c6606553ec89c24cb9cd7640bc49b1acbb922aa046b8bffd818895e835afc147cfbf1e6e630ba6c4be5a53a0b69146cb5514cca9da27385dffb96b585eadb5759d8051270f47d81c7661da216a19f18d5e7b734bc440267918c466e1428f08745f37a99c77c7f2b1b244bd4162e8b86e4a8bf85358202954ced04b52fef7b3ba787744e715554285ecb0ed6e133c528d69d346abc0ce8b0] +[76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee65869f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed29b721769ce64e43d57133b074d839d531ed1f28510afb45ace10a1f4b794d6f2d09a0e663266ce1ae7ed1081968a0758e718e997bd362c6b0c34634a9a0b35d] +[9f07e7be5551387a98ba977c732d080dcb0f29a048e3656912c6533e32ee7aed29b721769ce64e43d57133b074d839d531ed1f28510afb45ace10a1f4b794d6f2d09a0e663266ce1ae7ed1081968a0758e718e997bd362c6b0c34634a9a0b35d012737681f7b5d0f281e3afde458bc1e73d2d313c9cf94c05ff3716240a248f21320a058d7b3566bd520daaa3ed2bf0ac5b8b120fb852773c3639734b45c91a4] +[3aeb5224ecf849929b9d828db1ced4dd832025e8018b8160b82284f3c949aa5a8eca00bbb4a73bdad192b5c42f73f2fd4e273644c8b36125a64addeb006c13a096d68b9ff7b57e7090f880392effd5b297a83bbaf2fbe8cf5d4618965e3dc776cd430d9b4e7eda8a767fb0e860319aadb5fd96a855de1fbfc92cb0489190cfdd87da6dbf1f736a2d499941ca097e5170bd685578611323120cebf296181ed4f5] +[72d54dfbf12ec44b362692df94137f328fea8da73990265ec1bbbea1ae9af0ca13b25aa26cb4a648cb9b9d1be65b2c0924a66c54d545ec1b7374f4872e99f096bf74dbd52cc4fc95ceb6097fe5e65358c9dbc0a5ecbf7894a132a9a54ae3e951f2e9f209aa9c3d9a877ac9dab62433d2961a17d103e455dfb7337c90f6857aad233065955a212b5c7a8eab4dc8a629e5b6b8ba914afd06de7177054b33d21c96] +[c2c64d378cd536374ae204b9ef933fcd1a8b2288b3dfa49672ab765b54ee27c78a970e0e955c14f3a88e741b97c286f75f8fc299e8148362fa198a39531bed6d1a91288c874ec254f322c2a197340c55bb3e9b3998f7de2309486a0bb494abd20c9c5ef99c1370d61e77f408ac5514f49202bcc6828d45409d2d1416f8ae106b06ebd2541256264fa415bd54cb12e1d4449ed85299a1b7a249b75ff6c89b2e3f] +[10f1e7e4d13b5915500fdd1fa32071c4c7d1f4c733c068030422aa9ac3d46c4ed2826446079faa0914c2d705d98b02a2b5129cd1de164eb9cbd083e8a2503c4e0a88837739d7bf4ef8ccacb0ea2bb9d69d56c394aa351dfda5bf459f0a2e9fe8e721f89255f9c486bf21679c683d4f9c5cf2fa27865526005b06ca374c86af3bdcbfbdcb83be65862ed5c20eae5a43241d6a92da6dca9a156be25297f51c2718] +[75924bad7831b25662dbac54b46827990b6168ae990e7bd7e1fd2ad282bf23ef052c7d1a0a6c1ef862070943a0d4da24705fbc006dfb85e2af18c0a264d772a44c70fbedac9d6a6867ff6be0a32826507f2c784101583211c9e2453d4cc8b283d5e86682bd4bf511271b91dbd351415f5a009d1f78b64085a9a4341be7d42e2679d57e2747097f0129950e2c9e9ca1356022d45da252af71ac37f351a2e77911] +[8a010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101] +[8adc91fd040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404] +[8adc91fd9ff4f0070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707] +[8adc91fd9ff4f0f51b0f0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a] +[8adc91fd9ff4f0f51b0fad50ff0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d] +[8adc91fd9ff4f0f51b0fad50ff15d637101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efd131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a742001c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c151f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd98222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d5282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f492e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69c313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1f343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a755843a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a75584c52d693d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a75584c52d690a35d4404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040] +[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a75584c52d690a35d410f1e7e4d13b5915500fdd1fa32071c4c7d1f4c733c068030422aa9ac3d46c4ed2826446079faa0914c2d705d98b02a2b5129cd1de164eb9cbd083e8a2503c4e0a88837739d7bf4ef8ccacb0ea2bb9d69d56c394aa351dfda5bf459f0a2e9fe8] +[c89ed3bfddb6b2b7594def12bd579475a64cbfe0448e1085c1e50042127e57c08fda71743f4816973f7edcdbcd0b4ca4dee10e5dbbab7be517c6876f2b48779652b3a5a693791b57124d9f5de16233868593b68571822a414660e8d881962e0c90c0260445dde84b568095479bc940e0f750de939c540cfb8992c1aae0127e0c48cac1357b95fd0cba8eeef2a869fb94df1481d6e8775fbfe7fd07dd486cddaa] +[42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242] +[52b3a5a693791b57124d9f5de16233868593b68571822a414660e8d881962e0c90c0260445dde84b568095479bc940e0f750de939c540cfb8992c1aae0127e0c48cac1357b95fd0cba8eeef2a869fb94df1481d6e8775fbfe7fd07dd486cddaaa563bad017bb86c4fd6325de2a7f0dde1eb0b865c4176442194488750ec4ed799efdff89c1fc27c46c97804cec1801665f28d0982f88d85729a010d5b75e655a] diff --git a/components/espressif__libsodium/libsodium/test/default/cmptest.h b/components/espressif__libsodium/libsodium/test/default/cmptest.h new file mode 100644 index 0000000..54a0207 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/cmptest.h @@ -0,0 +1,238 @@ + +#ifndef __CMPTEST_H__ +#define __CMPTEST_H__ + +#ifdef NDEBUG +#/**/undef/**/ NDEBUG +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include "sodium.h" +#include "quirks.h" + +#ifdef __EMSCRIPTEN__ +# undef TEST_SRCDIR +# define TEST_SRCDIR "/test-data" +#endif +#ifndef TEST_SRCDIR +# define TEST_SRCDIR "." +#endif + +#define TEST_NAME_RES TEST_NAME ".res" +#define TEST_NAME_OUT TEST_SRCDIR "/" TEST_NAME ".exp" + +#ifdef HAVE_ARC4RANDOM +# undef rand +# define rand(X) arc4random(X) +#endif + +int xmain(void); + +static unsigned char *guard_page; + +#ifdef BENCHMARKS + +# include + +# ifndef ITERATIONS +# define ITERATIONS 128 +# endif + +struct { + void *pnt; + size_t size; +} mempool[1024]; + +static size_t mempool_idx; + +static __attribute__((malloc)) void *mempool_alloc(size_t size) +{ + size_t i; + if (size >= (size_t) 0x80000000 - (size_t) 0x00000fff) { + return NULL; + } + size = (size + (size_t) 0x00000fff) & ~ (size_t) 0x00000fff; + for (i = 0U; i < mempool_idx; i++) { + if (mempool[i].size >= (size | (size_t) 0x80000000)) { + mempool[i].size &= ~ (size_t) 0x80000000; + return mempool[i].pnt; + } + } + if (mempool_idx >= sizeof mempool / sizeof mempool[0]) { + return NULL; + } + mempool[mempool_idx].size = size; + return (mempool[mempool_idx++].pnt = (void *) malloc(size)); +} + +static void mempool_free(void *pnt) +{ + size_t i; + for (i = 0U; i < mempool_idx; i++) { + if (mempool[i].pnt == pnt) { + if ((mempool[i].size & (size_t) 0x80000000) != (size_t) 0x0) { + break; + } + mempool[i].size |= (size_t) 0x80000000; + return; + } + } + abort(); +} + +static __attribute__((malloc)) void *mempool_allocarray(size_t count, size_t size) +{ + if (count > (size_t) 0U && size >= (size_t) SIZE_MAX / count) { + return NULL; + } + return mempool_alloc(count * size); +} + +static int mempool_free_all(void) +{ + size_t i; + int ret = 0; + + for (i = 0U; i < mempool_idx; i++) { + if ((mempool[i].size & (size_t) 0x80000000) == (size_t) 0x0) { + ret = -1; + } + free(mempool[i].pnt); + mempool[i].pnt = NULL; + } + mempool_idx = (size_t) 0U; + + return ret; +} + +#define sodium_malloc(X) mempool_alloc(X) +#define sodium_free(X) mempool_free(X) +#define sodium_allocarray(X, Y) mempool_allocarray((X), (Y)) + +static unsigned long long now(void) +{ +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) + struct timespec tp; + + if (clock_gettime(CLOCK_MONOTONIC, &tp) != 0) { + abort(); + } + return (unsigned long long) tp.tv_sec * 1000000ULL + + (unsigned long long) tp.tv_nsec / 1000ULL; +#else + struct timeval tp; + + if (gettimeofday(&tp, NULL) != 0) { + abort(); + } + return (unsigned long long) tp.tv_sec * 1000000ULL + + (unsigned long long) tp.tv_usec; +#endif +} + +int main(void) +{ + unsigned long long ts_start; + unsigned long long ts_end; + unsigned int i; + + if (sodium_init() != 0) { + return 99; + } + +#ifndef __EMSCRIPTEN__ + randombytes_set_implementation(&randombytes_salsa20_implementation); +#endif + ts_start = now(); + for (i = 0; i < ITERATIONS; i++) { + if (xmain() != 0) { + abort(); + } + } + ts_end = now(); + printf("%llu\n", 1000000ULL * (ts_end - ts_start) / ITERATIONS); + if (mempool_free_all() != 0) { + fprintf(stderr, "** memory leaks detected **\n"); + return 99; + } + return 0; +} + +#undef printf +#define printf(...) do { } while(0) + +#elif !defined(BROWSER_TESTS) + +static FILE *fp_res; + +int main(void) +{ + FILE *fp_out; + unsigned char *_guard_page; + int c; + + if ((fp_res = fopen(TEST_NAME_RES, "w+")) == NULL) { + perror("fopen(" TEST_NAME_RES ")"); + return 99; + } + if (sodium_init() != 0) { + return 99; + } +# if defined(__EMSCRIPTEN__) || defined(__SANITIZE_ADDRESS__) + guard_page = _guard_page = NULL; +#else + if ((_guard_page = (unsigned char *) sodium_malloc(0)) == NULL) { + perror("sodium_malloc()"); + return 99; + } + guard_page = _guard_page + 1; +#endif + if (xmain() != 0) { + return 99; + } + fflush(fp_res); + rewind(fp_res); + if ((fp_out = fopen(TEST_NAME_OUT, "r")) == NULL) { + perror("fopen(" TEST_NAME_OUT ")"); + return 99; + } + do { + if ((c = fgetc(fp_res)) != fgetc(fp_out)) { + return 99; + } + } while (c != EOF); + sodium_free(_guard_page); + + return 0; +} + +#undef printf +#define printf(...) fprintf(fp_res, __VA_ARGS__) + +#else + +int main(void) +{ + if (sodium_init() != 0) { + return 99; + } + if (xmain() != 0) { + return 99; + } + printf("--- SUCCESS ---\n"); + + return 0; +} + +#endif + +#define main xmain + +#endif diff --git a/components/espressif__libsodium/libsodium/test/default/codecs.c b/components/espressif__libsodium/libsodium/test/default/codecs.c new file mode 100644 index 0000000..3c98d73 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/codecs.c @@ -0,0 +1,251 @@ +#define TEST_NAME "codecs" +#include "cmptest.h" + +int +main(void) +{ + unsigned char buf1[1000]; + char buf3[33]; + unsigned char buf4[4]; + const char *b64; + char *b64_; + const char *b64_end; + unsigned char *bin; + const char *hex; + const char *hex_end; + size_t b64_len; + size_t bin_len; + unsigned int i; + + printf("%s\n", + sodium_bin2hex(buf3, 33U, (const unsigned char *) "0123456789ABCDEF", + 16U)); + printf("bin2hex(..., guard_page, 0):%s\n", + sodium_bin2hex(buf3, sizeof buf3, guard_page, 0U)); + printf("bin2hex(..., \"\", 0):%s\n", + sodium_bin2hex(buf3, sizeof buf3, (const unsigned char *) "", 0U)); + + hex = "Cafe : 6942"; + sodium_hex2bin(buf4, sizeof buf4, hex, strlen(hex), ": ", &bin_len, + &hex_end); + printf("%lu:%02x%02x%02x%02x\n", (unsigned long) bin_len, + buf4[0], buf4[1], buf4[2], buf4[3]); + printf("dt1: %ld\n", (long) (hex_end - hex)); + + hex = "Cafe : 6942"; + sodium_hex2bin(buf4, sizeof buf4, hex, strlen(hex), ": ", &bin_len, NULL); + printf("%lu:%02x%02x%02x%02x\n", (unsigned long) bin_len, + buf4[0], buf4[1], buf4[2], buf4[3]); + + hex = "deadbeef"; + if (sodium_hex2bin(buf1, 1U, hex, 8U, NULL, &bin_len, &hex_end) != -1) { + printf("sodium_hex2bin() overflow not detected\n"); + } + printf("dt2: %ld\n", (long) (hex_end - hex)); + + hex = "de:ad:be:eff"; + if (sodium_hex2bin(buf1, 4U, hex, 12U, ":", &bin_len, &hex_end) != -1) { + printf( + "sodium_hex2bin() with an odd input length and a short output " + "buffer\n"); + } + printf("dt3: %ld\n", (long) (hex_end - hex)); + + hex = "de:ad:be:eff"; + if (sodium_hex2bin(buf1, sizeof buf1, hex, 12U, ":", + &bin_len, &hex_end) != -1) { + printf("sodium_hex2bin() with an odd input length\n"); + } + printf("dt4: %ld\n", (long) (hex_end - hex)); + + hex = "de:ad:be:eff"; + if (sodium_hex2bin(buf1, sizeof buf1, hex, 13U, ":", + &bin_len, &hex_end) != -1) { + printf("sodium_hex2bin() with an odd input length (2)\n"); + } + printf("dt5: %ld\n", (long) (hex_end - hex)); + + hex = "de:ad:be:eff"; + if (sodium_hex2bin(buf1, sizeof buf1, hex, 12U, ":", + &bin_len, NULL) != -1) { + printf("sodium_hex2bin() with an odd input length and no end pointer\n"); + } + + hex = "de:ad:be:ef*"; + if (sodium_hex2bin(buf1, sizeof buf1, hex, 12U, ":", + &bin_len, &hex_end) != 0) { + printf("sodium_hex2bin() with an extra character and an end pointer\n"); + } + printf("dt6: %ld\n", (long) (hex_end - hex)); + + hex = "de:ad:be:ef*"; + if (sodium_hex2bin(buf1, sizeof buf1, hex, 12U, ":", + &bin_len, NULL) != -1) { + printf("sodium_hex2bin() with an extra character and no end pointer\n"); + } + + assert(sodium_hex2bin(buf4, sizeof buf4, (const char *) guard_page, 0U, + NULL, &bin_len, NULL) == 0); + assert(bin_len == 0); + + assert(sodium_hex2bin(buf4, sizeof buf4, "", 0U, NULL, &bin_len, NULL) == 0); + assert(bin_len == 0); + + printf("%s\n", + sodium_bin2base64(buf3, 31U, (const unsigned char *) "\xfb\xf0\xf1" "0123456789ABCDEFab", + 21U, sodium_base64_VARIANT_ORIGINAL)); + printf("%s\n", + sodium_bin2base64(buf3, 33U, (const unsigned char *) "\xfb\xf0\xf1" "0123456789ABCDEFabc", + 22U, sodium_base64_VARIANT_ORIGINAL_NO_PADDING)); + printf("%s\n", + sodium_bin2base64(buf3, 31U, (const unsigned char *) "\xfb\xf0\xf1" "0123456789ABCDEFab", + 21U, sodium_base64_VARIANT_URLSAFE)); + printf("%s\n", + sodium_bin2base64(buf3, 33U, (const unsigned char *) "\xfb\xf0\xf1" "0123456789ABCDEFabc", + 22U, sodium_base64_VARIANT_URLSAFE_NO_PADDING)); + printf("%s\n", + sodium_bin2base64(buf3, 1U, guard_page, + 0U, sodium_base64_VARIANT_ORIGINAL)); + printf("%s\n", + sodium_bin2base64(buf3, 5U, (const unsigned char *) "a", + 1U, sodium_base64_VARIANT_ORIGINAL)); + printf("%s\n", + sodium_bin2base64(buf3, 5U, (const unsigned char *) "ab", + 2U, sodium_base64_VARIANT_ORIGINAL)); + printf("%s\n", + sodium_bin2base64(buf3, 5U, (const unsigned char *) "abc", + 3U, sodium_base64_VARIANT_ORIGINAL)); + printf("%s\n", + sodium_bin2base64(buf3, 1U, guard_page, + 0U, sodium_base64_VARIANT_ORIGINAL_NO_PADDING)); + printf("%s\n", + sodium_bin2base64(buf3, 3U, (const unsigned char *) "a", + 1U, sodium_base64_VARIANT_ORIGINAL_NO_PADDING)); + printf("%s\n", + sodium_bin2base64(buf3, 4U, (const unsigned char *) "ab", + 2U, sodium_base64_VARIANT_ORIGINAL_NO_PADDING)); + printf("%s\n", + sodium_bin2base64(buf3, 5U, (const unsigned char *) "abc", + 3U, sodium_base64_VARIANT_ORIGINAL_NO_PADDING)); + + b64 = "VGhpcyBpcyBhIGpvdXJu" "\n" "ZXkgaW50by" " " "Bzb3VuZA=="; + memset(buf4, '*', sizeof buf4); + assert(sodium_base642bin(buf4, sizeof buf4, b64, strlen(b64), "\n\r ", &bin_len, + &b64_end, sodium_base64_VARIANT_ORIGINAL) == -1); + buf4[bin_len] = 0; + printf("[%s]\n", (const char *) buf4); + printf("[%s]\n", b64_end); + + memset(buf1, '*', sizeof buf1); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), "\n\r ", &bin_len, + &b64_end, sodium_base64_VARIANT_ORIGINAL) == 0); + buf1[bin_len] = 0; + printf("[%s]\n", (const char *) buf1); + assert(*b64_end == 0); + + memset(buf1, '*', sizeof buf1); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, &bin_len, + &b64_end, sodium_base64_VARIANT_ORIGINAL) == 0); + buf1[bin_len] = 0; + printf("[%s]\n", (const char *) buf1); + printf("[%s]\n", b64_end); + + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, NULL, + &b64_end, sodium_base64_VARIANT_ORIGINAL) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, NULL, + &b64_end, sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), " \r\n", NULL, + &b64_end, sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, NULL, + &b64_end, sodium_base64_VARIANT_URLSAFE_NO_PADDING) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), " \r\n", NULL, + &b64_end, sodium_base64_VARIANT_URLSAFE_NO_PADDING) == 0); + + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, NULL, + NULL, sodium_base64_VARIANT_ORIGINAL) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, NULL, + NULL, sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), " \r\n", NULL, + NULL, sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), NULL, NULL, + NULL, sodium_base64_VARIANT_URLSAFE_NO_PADDING) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), " \r\n", NULL, + NULL, sodium_base64_VARIANT_URLSAFE_NO_PADDING) == -1); + + assert(sodium_base642bin(guard_page, (size_t) 10U, "a=", (size_t) 2U, NULL, NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a*", (size_t) 2U, NULL, NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a*", (size_t) 2U, "~", NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a*", (size_t) 2U, "*", NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a==", (size_t) 3U, NULL, NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a=*", (size_t) 3U, NULL, NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a=*", (size_t) 3U, "~", NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + assert(sodium_base642bin(guard_page, (size_t) 10U, "a=*", (size_t) 3U, "*", NULL, NULL, + sodium_base64_VARIANT_URLSAFE) == -1); + + assert(sodium_base642bin(buf1, sizeof buf1, "O1R", (size_t) 3U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "O1Q", (size_t) 3U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, "O1", (size_t) 2U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "Ow", (size_t) 2U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, "O", (size_t) 1U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL_NO_PADDING) == -1); + + assert(sodium_base642bin(buf1, sizeof buf1, "", (size_t) 0U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, "A", (size_t) 1U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "AA", (size_t) 2U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "kaw", (size_t) 3U, NULL, NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "kQ*", (size_t) 3U, "@", NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "kQ*", (size_t) 3U, "*", NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == -1); + assert(sodium_base642bin(buf1, sizeof buf1, "kaw=**", (size_t) 6U, "*", NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, "kaw*=*", (size_t) 6U, "~*", NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == 0); + assert(sodium_base642bin(buf1, sizeof buf1, "ka*w*=*", (size_t) 7U, "*~", NULL, NULL, + sodium_base64_VARIANT_ORIGINAL) == 0); + + assert(sodium_base642bin(buf1, sizeof buf1, (const char *) guard_page, 0U, + NULL, &bin_len, NULL, sodium_base64_VARIANT_ORIGINAL) == 0); + assert(bin_len == 0); + + assert(sodium_base642bin(buf1, sizeof buf1, "", 0U, NULL, &bin_len, NULL, + sodium_base64_VARIANT_ORIGINAL) == 0); + assert(bin_len == 0); + + for (i = 0; i < 1000; i++) { + assert(sizeof buf1 >= 100); + bin_len = (size_t) randombytes_uniform(100); + bin = (unsigned char *) sodium_malloc(bin_len); + b64_len = (bin_len + 2U) / 3U * 4U + 1U; + assert(b64_len == sodium_base64_encoded_len(bin_len, sodium_base64_VARIANT_URLSAFE)); + b64_ = (char *) sodium_malloc(b64_len); + randombytes_buf(bin, bin_len); + memcpy(buf1, bin, bin_len); + b64 = sodium_bin2base64(b64_, b64_len, bin, bin_len, + sodium_base64_VARIANT_URLSAFE); + assert(b64 != NULL); + assert(sodium_base642bin(bin, bin_len + 10, b64, b64_len, + NULL, NULL, &b64_end, + sodium_base64_VARIANT_URLSAFE) == 0); + assert(b64_end == &b64[b64_len - 1]); + assert(memcmp(bin, buf1, bin_len) == 0); + sodium_free(bin); + sodium_free(b64_); + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/codecs.exp b/components/espressif__libsodium/libsodium/test/default/codecs.exp new file mode 100644 index 0000000..171834e --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/codecs.exp @@ -0,0 +1,30 @@ +30313233343536373839414243444546 +bin2hex(..., guard_page, 0): +bin2hex(..., "", 0): +4:cafe6942 +dt1: 11 +4:cafe6942 +dt2: 2 +dt3: 11 +dt4: 11 +dt5: 11 +dt6: 11 ++/DxMDEyMzQ1Njc4OUFCQ0RFRmFi ++/DxMDEyMzQ1Njc4OUFCQ0RFRmFiYw +-_DxMDEyMzQ1Njc4OUFCQ0RFRmFi +-_DxMDEyMzQ1Njc4OUFCQ0RFRmFiYw + +YQ== +YWI= +YWJj + +YQ +YWI +YWJj +[] +[BpcyBhIGpvdXJu +ZXkgaW50by Bzb3VuZA==] +[This is a journey into sound] +[This is a journ] +[ +ZXkgaW50by Bzb3VuZA==] diff --git a/components/espressif__libsodium/libsodium/test/default/core1.c b/components/espressif__libsodium/libsodium/test/default/core1.c new file mode 100644 index 0000000..f1d7b0b --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core1.c @@ -0,0 +1,41 @@ + +#define TEST_NAME "core1" +#include "cmptest.h" + +static unsigned char shared[32] = { 0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, + 0xe1, 0x72, 0x8e, 0x3b, 0xf4, 0x80, 0x35, + 0x0f, 0x25, 0xe0, 0x7e, 0x21, 0xc9, 0x47, + 0xd1, 0x9e, 0x33, 0x76, 0xf0, 0x9b, 0x3c, + 0x1e, 0x16, 0x17, 0x42 }; + +static unsigned char zero[32]; + +static unsigned char c[16] = { 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x33, + 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b }; + +static unsigned char firstkey[32]; + +int +main(void) +{ + int i; + + crypto_core_hsalsa20(firstkey, zero, shared, c); + for (i = 0; i < 32; ++i) { + if (i > 0) { + printf(","); + } else { + printf(" "); + } + printf("0x%02x", (unsigned int) firstkey[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + assert(crypto_core_hsalsa20_outputbytes() > 0U); + assert(crypto_core_hsalsa20_inputbytes() > 0U); + assert(crypto_core_hsalsa20_keybytes() > 0U); + assert(crypto_core_hsalsa20_constbytes() > 0U); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core1.exp b/components/espressif__libsodium/libsodium/test/default/core1.exp new file mode 100644 index 0000000..715a489 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core1.exp @@ -0,0 +1,4 @@ + 0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4 +,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7 +,0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2 +,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89 diff --git a/components/espressif__libsodium/libsodium/test/default/core2.c b/components/espressif__libsodium/libsodium/test/default/core2.c new file mode 100644 index 0000000..7e2dd7e --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core2.c @@ -0,0 +1,38 @@ + +#define TEST_NAME "core2" +#include "cmptest.h" + +static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 }; + +static unsigned char nonceprefix[16] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6 }; + +static unsigned char c[16] = { 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x33, + 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b }; + +static unsigned char secondkey[32]; + +int +main(void) +{ + int i; + + crypto_core_hsalsa20(secondkey, nonceprefix, firstkey, c); + for (i = 0; i < 32; ++i) { + if (i > 0) { + printf(","); + } else { + printf(" "); + } + printf("0x%02x", (unsigned int) secondkey[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core2.exp b/components/espressif__libsodium/libsodium/test/default/core2.exp new file mode 100644 index 0000000..f4682af --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core2.exp @@ -0,0 +1,4 @@ + 0xdc,0x90,0x8d,0xda,0x0b,0x93,0x44,0xa9 +,0x53,0x62,0x9b,0x73,0x38,0x20,0x77,0x88 +,0x80,0xf3,0xce,0xb4,0x21,0xbb,0x61,0xb9 +,0x1c,0xbd,0x4c,0x3e,0x66,0x25,0x6c,0xe4 diff --git a/components/espressif__libsodium/libsodium/test/default/core3.c b/components/espressif__libsodium/libsodium/test/default/core3.c new file mode 100644 index 0000000..09f2473 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core3.c @@ -0,0 +1,115 @@ + +#define TEST_NAME "core3" +#include "cmptest.h" + +static unsigned char SECONDKEY[32] = { 0xdc, 0x90, 0x8d, 0xda, 0x0b, 0x93, 0x44, + 0xa9, 0x53, 0x62, 0x9b, 0x73, 0x38, 0x20, + 0x77, 0x88, 0x80, 0xf3, 0xce, 0xb4, 0x21, + 0xbb, 0x61, 0xb9, 0x1c, 0xbd, 0x4c, 0x3e, + 0x66, 0x25, 0x6c, 0xe4 }; + +static unsigned char NONCESUFFIX[8] = { 0x82, 0x19, 0xe0, 0x03, + 0x6b, 0x7a, 0x0b, 0x37 }; + +static unsigned char C[16] = { 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x33, + 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b }; + +int +main(void) +{ + unsigned char *secondkey; + unsigned char *c; + unsigned char *noncesuffix; + unsigned char *in; + unsigned char *output; + unsigned char *h; + size_t output_len = 64 * 256 * 256; + size_t pos = 0; + int i; + + pos = 0; + secondkey = (unsigned char *) sodium_malloc(32); + memcpy(secondkey, SECONDKEY, 32); + noncesuffix = (unsigned char *) sodium_malloc(8); + memcpy(noncesuffix, NONCESUFFIX, 8); + c = (unsigned char *) sodium_malloc(16); + memcpy(c, C, 16); + in = (unsigned char *) sodium_malloc(16); + output = (unsigned char *) sodium_malloc(output_len); + h = (unsigned char *) sodium_malloc(32); + + for (i = 0; i < 8; i++) { + in[i] = noncesuffix[i]; + } + for (; i < 16; i++) { + in[i] = 0; + } + do { + do { + crypto_core_salsa20(output + pos, in, secondkey, c); + pos += 64; + in[8]++; + } while (in[8] != 0); + in[9]++; + } while (in[9] != 0); + + crypto_hash_sha256(h, output, output_len); + + for (i = 0; i < 32; ++i) { + printf("%02x", h[i]); + } + printf("\n"); + +#ifndef SODIUM_LIBRARY_MINIMAL + pos = 0; + do { + do { + crypto_core_salsa2012(output + pos, in, secondkey, c); + pos += 64; + in[8]++; + } while (in[8] != 0); + in[9]++; + } while (in[9] != 0); + + crypto_hash_sha256(h, output, output_len); + + for (i = 0; i < 32; ++i) { + printf("%02x", h[i]); + } + printf("\n"); + + pos = 0; + do { + do { + crypto_core_salsa208(output + pos, in, secondkey, c); + pos += 64; + in[8]++; + } while (in[8] != 0); + in[9]++; + } while (in[9] != 0); + + crypto_hash_sha256(h, output, output_len); + + for (i = 0; i < 32; ++i) { + printf("%02x", h[i]); + } + printf("\n"); +#else + printf("a4e3147dddd2ba7775939b50208a22eb3277d4e4bad8a1cfbc999c6bd392b638\n" + "017421baa9959cbe894bd003ec87938254f47c1e757eb66cf89c353d0c2b68de\n"); +#endif + + sodium_free(h); + sodium_free(output); + sodium_free(in); + sodium_free(c); + sodium_free(noncesuffix); + sodium_free(secondkey); + + assert(crypto_core_salsa20_outputbytes() == crypto_core_salsa20_OUTPUTBYTES); + assert(crypto_core_salsa20_inputbytes() == crypto_core_salsa20_INPUTBYTES); + assert(crypto_core_salsa20_keybytes() == crypto_core_salsa20_KEYBYTES); + assert(crypto_core_salsa20_constbytes() == crypto_core_salsa20_CONSTBYTES); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core3.exp b/components/espressif__libsodium/libsodium/test/default/core3.exp new file mode 100644 index 0000000..e6bc102 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core3.exp @@ -0,0 +1,3 @@ +662b9d0e3463029156069b12f918691a98f7dfb2ca0393c96bbfc6b1fbd630a2 +a4e3147dddd2ba7775939b50208a22eb3277d4e4bad8a1cfbc999c6bd392b638 +017421baa9959cbe894bd003ec87938254f47c1e757eb66cf89c353d0c2b68de diff --git a/components/espressif__libsodium/libsodium/test/default/core4.c b/components/espressif__libsodium/libsodium/test/default/core4.c new file mode 100644 index 0000000..cb174ab --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core4.c @@ -0,0 +1,36 @@ + +#define TEST_NAME "core4" +#include "cmptest.h" + +static unsigned char k[32] = { 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216 }; + +static unsigned char in[16] = { 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116 }; + +static unsigned char c[16] = { 101, 120, 112, 97, 110, 100, 32, 51, + 50, 45, 98, 121, 116, 101, 32, 107 }; + +static unsigned char out[64]; + +int +main(void) +{ + int i; + + crypto_core_salsa20(out, in, k, c); + for (i = 0; i < 64; ++i) { + if (i > 0) { + printf(","); + } else { + printf(" "); + } + printf("%3u", (unsigned int) out[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core4.exp b/components/espressif__libsodium/libsodium/test/default/core4.exp new file mode 100644 index 0000000..d04e5b5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core4.exp @@ -0,0 +1,8 @@ + 69, 37, 68, 39, 41, 15,107,193 +,255,139,122, 6,170,233,217, 98 +, 89,144,182,106, 21, 51,200, 65 +,239, 49,222, 34,215,114, 40,126 +,104,197, 7,225,197,153, 31, 2 +,102, 78, 76,176, 84,245,246,184 +,177,160,133,130, 6, 72,149,119 +,192,195,132,236,234,103,246, 74 diff --git a/components/espressif__libsodium/libsodium/test/default/core5.c b/components/espressif__libsodium/libsodium/test/default/core5.c new file mode 100644 index 0000000..02b0fd9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core5.c @@ -0,0 +1,33 @@ + +#define TEST_NAME "core5" +#include "cmptest.h" + +static unsigned char k[32] = { 0xee, 0x30, 0x4f, 0xca, 0x27, 0x00, 0x8d, 0x8c, + 0x12, 0x6f, 0x90, 0x02, 0x79, 0x01, 0xd8, 0x0f, + 0x7f, 0x1d, 0x8b, 0x8d, 0xc9, 0x36, 0xcf, 0x3b, + 0x9f, 0x81, 0x96, 0x92, 0x82, 0x7e, 0x57, 0x77 }; + +static unsigned char in[16] = { + 0x81, 0x91, 0x8e, 0xf2, 0xa5, 0xe0, 0xda, 0x9b, + 0x3e, 0x90, 0x60, 0x52, 0x1e, 0x4b, 0xb3, 0x52 +}; + +static unsigned char c[16] = { 101, 120, 112, 97, 110, 100, 32, 51, + 50, 45, 98, 121, 116, 101, 32, 107 }; + +unsigned char out[32]; + +int +main(void) +{ + int i; + + crypto_core_hsalsa20(out, in, k, c); + for (i = 0; i < 32; ++i) { + printf(",0x%02x", (unsigned int) out[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core5.exp b/components/espressif__libsodium/libsodium/test/default/core5.exp new file mode 100644 index 0000000..562cf71 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core5.exp @@ -0,0 +1,4 @@ +,0xbc,0x1b,0x30,0xfc,0x07,0x2c,0xc1,0x40 +,0x75,0xe4,0xba,0xa7,0x31,0xb5,0xa8,0x45 +,0xea,0x9b,0x11,0xe9,0xa5,0x19,0x1f,0x94 +,0xe1,0x8c,0xba,0x8f,0xd8,0x21,0xa7,0xcd diff --git a/components/espressif__libsodium/libsodium/test/default/core6.c b/components/espressif__libsodium/libsodium/test/default/core6.c new file mode 100644 index 0000000..f10c0d6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core6.c @@ -0,0 +1,52 @@ + +#define TEST_NAME "core6" +#include "cmptest.h" + +static unsigned char k[32] = { 0xee, 0x30, 0x4f, 0xca, 0x27, 0x00, 0x8d, 0x8c, + 0x12, 0x6f, 0x90, 0x02, 0x79, 0x01, 0xd8, 0x0f, + 0x7f, 0x1d, 0x8b, 0x8d, 0xc9, 0x36, 0xcf, 0x3b, + 0x9f, 0x81, 0x96, 0x92, 0x82, 0x7e, 0x57, 0x77 }; + +static unsigned char in[16] = { + 0x81, 0x91, 0x8e, 0xf2, 0xa5, 0xe0, 0xda, 0x9b, + 0x3e, 0x90, 0x60, 0x52, 0x1e, 0x4b, 0xb3, 0x52 +}; + +static unsigned char c[16] = { 101, 120, 112, 97, 110, 100, 32, 51, + 50, 45, 98, 121, 116, 101, 32, 107 }; + +static unsigned char out[64]; + +static void +print(unsigned char *x, unsigned char *y) +{ + int i; + unsigned int borrow = 0; + + for (i = 0; i < 4; ++i) { + unsigned int xi = x[i]; + unsigned int yi = y[i]; + printf(",0x%02x", 255 & (xi - yi - borrow)); + borrow = (xi < yi + borrow); + } +} + +int +main(void) +{ + crypto_core_salsa20(out, in, k, c); + print(out, c); + print(out + 20, c + 4); + printf("\n"); + print(out + 40, c + 8); + print(out + 60, c + 12); + printf("\n"); + print(out + 24, in); + print(out + 28, in + 4); + printf("\n"); + print(out + 32, in + 8); + print(out + 36, in + 12); + printf("\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core6.exp b/components/espressif__libsodium/libsodium/test/default/core6.exp new file mode 100644 index 0000000..562cf71 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core6.exp @@ -0,0 +1,4 @@ +,0xbc,0x1b,0x30,0xfc,0x07,0x2c,0xc1,0x40 +,0x75,0xe4,0xba,0xa7,0x31,0xb5,0xa8,0x45 +,0xea,0x9b,0x11,0xe9,0xa5,0x19,0x1f,0x94 +,0xe1,0x8c,0xba,0x8f,0xd8,0x21,0xa7,0xcd diff --git a/components/espressif__libsodium/libsodium/test/default/core_ed25519.c b/components/espressif__libsodium/libsodium/test/default/core_ed25519.c new file mode 100644 index 0000000..b246126 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core_ed25519.c @@ -0,0 +1,545 @@ +#define TEST_NAME "core_ed25519" +#include "cmptest.h" + +static const unsigned char non_canonical_p[32] = { + 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char non_canonical_invalid_p[32] = { + 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char max_canonical_p[32] = { + 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char L_p1[32] = { + 0xee, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 +}; +static const unsigned char L[32] = { + 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 +}; +static const unsigned char L_1[32] = { + 0xec, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 +}; +static const unsigned char sc_8[32] = { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +static const unsigned char sc_highbit[32] = { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 +}; + +static void +add_P(unsigned char * const S) +{ + static const unsigned char P[32] = { + 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f + }; + + sodium_add(S, P, sizeof P); +} + +static void +add_l64(unsigned char * const S) +{ + static const unsigned char l[crypto_core_ed25519_NONREDUCEDSCALARBYTES] = + { 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, + 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + sodium_add(S, l, sizeof l); +} + +int +main(void) +{ + unsigned char *h, *r; + unsigned char *p, *p2, *p3; + unsigned char *sc, *sc2, *sc3; + unsigned char *sc64; + unsigned char *seed; + char *hex; + unsigned int i, j; + + h = (unsigned char *) sodium_malloc(crypto_core_ed25519_HASHBYTES); + r = (unsigned char *) sodium_malloc(crypto_core_ed25519_UNIFORMBYTES); + p = (unsigned char *) sodium_malloc(crypto_core_ed25519_BYTES); + for (i = 0; i < 500; i++) { + randombytes_buf(r, crypto_core_ed25519_UNIFORMBYTES); + if (crypto_core_ed25519_from_uniform(p, r) != 0) { + printf("crypto_core_ed25519_from_uniform() failed\n"); + } + if (crypto_core_ed25519_is_valid_point(p) == 0) { + printf("crypto_core_ed25519_from_uniform() returned an invalid point\n"); + } + crypto_core_ed25519_random(p); + if (crypto_core_ed25519_is_valid_point(p) == 0) { + printf("crypto_core_ed25519_random() returned an invalid point\n"); + } + } + + p2 = (unsigned char *) sodium_malloc(crypto_core_ed25519_BYTES); + p3 = (unsigned char *) sodium_malloc(crypto_core_ed25519_BYTES); + + crypto_core_ed25519_random(p2); + + j = 1 + (unsigned int) randombytes_uniform(100); + memcpy(p3, p, crypto_core_ed25519_BYTES); + for (i = 0; i < j; i++) { + crypto_core_ed25519_add(p, p, p2); + if (crypto_core_ed25519_is_valid_point(p) != 1) { + printf("crypto_core_add() returned an invalid point\n"); + } + } + if (memcmp(p, p3, crypto_core_ed25519_BYTES) == 0) { + printf("crypto_core_add() failed\n"); + } + for (i = 0; i < j; i++) { + crypto_core_ed25519_sub(p, p, p2); + } + if (memcmp(p, p3, crypto_core_ed25519_BYTES) != 0) { + printf("crypto_core_add() or crypto_core_sub() failed\n"); + } + sc = (unsigned char *) sodium_malloc(crypto_scalarmult_ed25519_SCALARBYTES); + memset(sc, 0, crypto_scalarmult_ed25519_SCALARBYTES); + sc[0] = 8; + memcpy(p2, p, crypto_core_ed25519_BYTES); + memcpy(p3, p, crypto_core_ed25519_BYTES); + + for (i = 0; i < 254; i++) { + crypto_core_ed25519_add(p2, p2, p2); + } + for (i = 0; i < 8; i++) { + crypto_core_ed25519_add(p2, p2, p); + } + if (crypto_scalarmult_ed25519(p3, sc, p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + if (memcmp(p2, p3, crypto_core_ed25519_BYTES) != 0) { + printf("crypto_scalarmult_ed25519() is inconsistent with crypto_core_ed25519_add()\n"); + } + + assert(crypto_core_ed25519_is_valid_point(p) == 1); + + memset(p, 0, crypto_core_ed25519_BYTES); + assert(crypto_core_ed25519_is_valid_point(p) == 0); + + p[0] = 1; + assert(crypto_core_ed25519_is_valid_point(p) == 0); + + p[0] = 2; + assert(crypto_core_ed25519_is_valid_point(p) == 0); + + p[0] = 9; + assert(crypto_core_ed25519_is_valid_point(p) == 1); + + assert(crypto_core_ed25519_is_valid_point(max_canonical_p) == 1); + assert(crypto_core_ed25519_is_valid_point(non_canonical_invalid_p) == 0); + assert(crypto_core_ed25519_is_valid_point(non_canonical_p) == 0); + + memcpy(p2, p, crypto_core_ed25519_BYTES); + add_P(p2); + crypto_core_ed25519_add(p3, p2, p2); + crypto_core_ed25519_sub(p3, p3, p2); + assert(memcmp(p2, p, crypto_core_ed25519_BYTES) != 0); + assert(memcmp(p3, p, crypto_core_ed25519_BYTES) == 0); + + p[0] = 2; + assert(crypto_core_ed25519_add(p3, p2, p) == -1); + assert(crypto_core_ed25519_add(p3, p2, non_canonical_p) == 0); + assert(crypto_core_ed25519_add(p3, p2, non_canonical_invalid_p) == -1); + assert(crypto_core_ed25519_add(p3, p, p3) == -1); + assert(crypto_core_ed25519_add(p3, non_canonical_p, p3) == 0); + assert(crypto_core_ed25519_add(p3, non_canonical_invalid_p, p3) == -1); + + assert(crypto_core_ed25519_sub(p3, p2, p) == -1); + assert(crypto_core_ed25519_sub(p3, p2, non_canonical_p) == 0); + assert(crypto_core_ed25519_sub(p3, p2, non_canonical_invalid_p) == -1); + assert(crypto_core_ed25519_sub(p3, p, p3) == -1); + assert(crypto_core_ed25519_sub(p3, non_canonical_p, p3) == 0); + assert(crypto_core_ed25519_sub(p3, non_canonical_invalid_p, p3) == -1); + + for (i = 0; i < 1000; i++) { + crypto_core_ed25519_random(p); + do { + crypto_core_ed25519_scalar_random(sc); + } while (sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + if (crypto_scalarmult_ed25519_noclamp(p2, sc, p) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed\n"); + } + assert(crypto_core_ed25519_is_valid_point(p2)); + if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) { + printf("crypto_core_ed25519_scalar_invert() failed\n"); + } + if (crypto_scalarmult_ed25519_noclamp(p3, sc, p2) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed\n"); + } + assert(memcmp(p3, p, crypto_core_ed25519_BYTES) == 0); + } + + sc64 = (unsigned char *) sodium_malloc(64); + crypto_core_ed25519_scalar_random(sc); + memcpy(sc64, sc, crypto_core_ed25519_BYTES); + memset(sc64 + crypto_core_ed25519_BYTES, 0, + 64 - crypto_core_ed25519_BYTES); + i = (unsigned int) randombytes_uniform(100); + do { + add_l64(sc64); + } while (i-- > 0); + crypto_core_ed25519_scalar_reduce(sc64, sc64); + if (memcmp(sc64, sc, crypto_core_ed25519_BYTES) != 0) { + printf("crypto_core_ed25519_scalar_reduce() failed\n"); + } + + randombytes_buf(r, crypto_core_ed25519_UNIFORMBYTES); + crypto_core_ed25519_from_uniform(p, r); + memcpy(p2, p, crypto_core_ed25519_BYTES); + crypto_core_ed25519_scalar_random(sc); + if (crypto_scalarmult_ed25519_noclamp(p, sc, p) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed (1)\n"); + } + crypto_core_ed25519_scalar_complement(sc, sc); + if (crypto_scalarmult_ed25519_noclamp(p2, sc, p2) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed (2)\n"); + } + crypto_core_ed25519_add(p3, p, p2); + crypto_core_ed25519_from_uniform(p, r); + crypto_core_ed25519_sub(p, p, p3); + assert(p[0] == 0x01); + for (i = 1; i < crypto_core_ed25519_BYTES; i++) { + assert(p[i] == 0); + } + + crypto_core_ed25519_random(p); + memcpy(p2, p, crypto_core_ed25519_BYTES); + crypto_core_ed25519_scalar_random(sc); + if (crypto_scalarmult_ed25519_noclamp(p, sc, p) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed (3)\n"); + } + crypto_core_ed25519_scalar_negate(sc, sc); + if (crypto_scalarmult_ed25519_noclamp(p2, sc, p2) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed (4)\n"); + } + crypto_core_ed25519_add(p, p, p2); + assert(p[0] == 0x01); + for (i = 1; i < crypto_core_ed25519_BYTES; i++) { + assert(p[i] == 0); + } + + hex = (char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES * 2 + 1); + + for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) { + sc[i] = 255 - i; + } + if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) { + printf("crypto_core_ed25519_scalar_invert() failed\n"); + } + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("inv1: %s\n", hex); + if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) { + printf("crypto_core_ed25519_scalar_invert() failed\n"); + } + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("inv2: %s\n", hex); + for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) { + sc[i] = 32 - i; + } + if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) { + printf("crypto_core_ed25519_scalar_invert() failed\n"); + } + + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("inv3: %s\n", hex); + if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) { + printf("crypto_core_ed25519_scalar_invert() failed\n"); + } + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("inv4: %s\n", hex); + + for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) { + sc[i] = 255 - i; + } + crypto_core_ed25519_scalar_negate(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("neg1: %s\n", hex); + crypto_core_ed25519_scalar_negate(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("neg2: %s\n", hex); + for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) { + sc[i] = 32 - i; + } + crypto_core_ed25519_scalar_negate(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("neg3: %s\n", hex); + crypto_core_ed25519_scalar_negate(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("neg4: %s\n", hex); + + for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) { + sc[i] = 255 - i; + } + crypto_core_ed25519_scalar_complement(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("comp1: %s\n", hex); + crypto_core_ed25519_scalar_complement(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("comp2: %s\n", hex); + for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) { + sc[i] = 32 - i; + } + crypto_core_ed25519_scalar_complement(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("comp3: %s\n", hex); + crypto_core_ed25519_scalar_complement(sc, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("comp4: %s\n", hex); + + sc2 = (unsigned char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES); + sc3 = (unsigned char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES); + for (i = 0; i < 1000; i++) { + randombytes_buf(sc, crypto_core_ed25519_SCALARBYTES); + randombytes_buf(sc2, crypto_core_ed25519_SCALARBYTES); + sc[crypto_core_ed25519_SCALARBYTES - 1] &= 0x7f; + sc2[crypto_core_ed25519_SCALARBYTES - 1] &= 0x7f; + crypto_core_ed25519_scalar_add(sc3, sc, sc2); + assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_sub(sc3, sc3, sc2); + assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_sub(sc3, sc3, sc); + assert(sodium_is_zero(sc3, crypto_core_ed25519_SCALARBYTES)); + } + + memset(sc, 0x69, crypto_core_ed25519_SCALARBYTES); + memset(sc2, 0x42, crypto_core_ed25519_SCALARBYTES); + crypto_core_ed25519_scalar_add(sc, sc, sc2); + crypto_core_ed25519_scalar_add(sc, sc2, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("add1: %s\n", hex); + + crypto_core_ed25519_scalar_sub(sc, sc2, sc); + crypto_core_ed25519_scalar_sub(sc, sc, sc2); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("sub1: %s\n", hex); + + memset(sc, 0xcd, crypto_core_ed25519_SCALARBYTES); + memset(sc2, 0x42, crypto_core_ed25519_SCALARBYTES); + crypto_core_ed25519_scalar_add(sc, sc, sc2); + crypto_core_ed25519_scalar_add(sc, sc2, sc); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("add2: %s\n", hex); + + crypto_core_ed25519_scalar_sub(sc, sc2, sc); + crypto_core_ed25519_scalar_sub(sc, sc, sc2); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("sub2: %s\n", hex); + + memset(sc, 0x69, crypto_core_ed25519_SCALARBYTES); + memset(sc2, 0x42, crypto_core_ed25519_SCALARBYTES); + for (i = 0; i < 100; i++) { + crypto_core_ed25519_scalar_mul(sc, sc, sc2); + crypto_core_ed25519_scalar_mul(sc2, sc, sc2); + } + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc2, crypto_core_ed25519_SCALARBYTES); + printf("mul: %s\n", hex); + for (i = 0; i < 1000; i++) { + crypto_core_ed25519_scalar_random(sc); + memset(sc2, 0, crypto_core_ed25519_SCALARBYTES); + crypto_core_ed25519_scalar_mul(sc3, sc, sc2); + assert(sodium_is_zero(sc3, crypto_core_ed25519_SCALARBYTES)); + + sc2[0]++; + crypto_core_ed25519_scalar_mul(sc3, sc, sc2); + assert(memcmp(sc3, sc, crypto_core_ed25519_SCALARBYTES) == 0); + + sc2[0]++; + crypto_core_ed25519_scalar_mul(sc3, sc, sc2); + crypto_core_ed25519_scalar_sub(sc3, sc3, sc); + crypto_core_ed25519_scalar_sub(sc3, sc3, sc); + assert(sodium_is_zero(sc3, crypto_core_ed25519_SCALARBYTES)); + + do { + crypto_core_ed25519_scalar_random(sc2); + } while (sodium_is_zero(sc2, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_mul(sc3, sc, sc2); + crypto_core_ed25519_scalar_invert(sc2, sc2); + crypto_core_ed25519_scalar_mul(sc3, sc3, sc2); + assert(memcmp(sc3, sc, crypto_core_ed25519_SCALARBYTES) == 0); + + sc[31] |= 0x11; + memset(sc2, 0, crypto_core_ed25519_SCALARBYTES); + sc2[0] = 1; + crypto_core_ed25519_scalar_mul(sc3, sc, sc2); + assert(memcmp(sc3, sc, crypto_core_ed25519_SCALARBYTES) != 0); + } + + seed = (unsigned char *) sodium_malloc(randombytes_SEEDBYTES); + for (i = 0; i < 15; i++) { + randombytes_buf_deterministic(r, crypto_core_ed25519_UNIFORMBYTES, seed); + if (crypto_core_ed25519_from_uniform(p, r) != 0) { + printf("crypto_core_ed25519_from_uniform() failed\n"); + } + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + p, crypto_core_ed25519_BYTES); + printf("from_uniform_deterministic (%u): %s\n", i, hex); + sodium_increment(seed, randombytes_SEEDBYTES); + } + crypto_core_ed25519_scalar_mul(sc, L_1, sc_8); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L-1)*8: %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, sc_8, L_1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("8(L-1): %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, L_1, L_1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L-1)^2: %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, L, sc_8); + + crypto_core_ed25519_scalar_mul(sc, L_p1, sc_8); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L+1)*8: %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, sc_8, L_p1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("8(L+1): %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, L_p1, L_p1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L+1)^2: %s\n", hex); + + crypto_core_ed25519_scalar_mul(sc, L_1, sc_highbit); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L-1)h: %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, sc_highbit, L_1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("h(L-1): %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, L_p1, sc_highbit); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L+1)h: %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, sc_highbit, L_p1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("h(L+1): %s\n", hex); + crypto_core_ed25519_scalar_mul(sc, sc_highbit, sc_highbit); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("h^2: %s\n", hex); + + crypto_core_ed25519_scalar_mul(sc, L, sc_8); + assert(sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_mul(sc, sc_8, L); + assert(sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_mul(sc, L, L); + assert(sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_mul(sc, L, L_1); + assert(sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + crypto_core_ed25519_scalar_mul(sc, L_1, L); + assert(sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES)); + + crypto_core_ed25519_scalar_add(sc, L_1, sc_8); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L-1)+8: %s\n", hex); + crypto_core_ed25519_scalar_add(sc, sc_8, L_1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("8+(L-1): %s\n", hex); + crypto_core_ed25519_scalar_add(sc, L_1, L_1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L-1)*2: %s\n", hex); + crypto_core_ed25519_scalar_add(sc, L, sc_8); + + crypto_core_ed25519_scalar_add(sc, L_p1, sc_8); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L+1)+8: %s\n", hex); + crypto_core_ed25519_scalar_add(sc, sc_8, L_p1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("8+(L+1): %s\n", hex); + crypto_core_ed25519_scalar_add(sc, L_p1, L_p1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L+1)*2: %s\n", hex); + + crypto_core_ed25519_scalar_add(sc, L_1, sc_highbit); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L-1)+h: %s\n", hex); + crypto_core_ed25519_scalar_add(sc, sc_highbit, L_1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("h+(L-1): %s\n", hex); + crypto_core_ed25519_scalar_add(sc, L_p1, sc_highbit); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("(L+1)+h: %s\n", hex); + crypto_core_ed25519_scalar_add(sc, sc_highbit, L_p1); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("h+(L+1): %s\n", hex); + crypto_core_ed25519_scalar_add(sc, sc_highbit, sc_highbit); + sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1, + sc, crypto_core_ed25519_SCALARBYTES); + printf("h*2: %s\n", hex); + + sodium_free(seed); + sodium_free(hex); + sodium_free(sc64); + sodium_free(sc3); + sodium_free(sc2); + sodium_free(sc); + sodium_free(p3); + sodium_free(p2); + sodium_free(p); + sodium_free(r); + sodium_free(h); + + assert(crypto_core_ed25519_BYTES == crypto_core_ed25519_bytes()); + assert(crypto_core_ed25519_SCALARBYTES == crypto_core_ed25519_scalarbytes()); + assert(crypto_core_ed25519_NONREDUCEDSCALARBYTES == crypto_core_ed25519_nonreducedscalarbytes()); + assert(crypto_core_ed25519_NONREDUCEDSCALARBYTES >= crypto_core_ed25519_SCALARBYTES); + assert(crypto_core_ed25519_UNIFORMBYTES == crypto_core_ed25519_uniformbytes()); + assert(crypto_core_ed25519_UNIFORMBYTES >= crypto_core_ed25519_BYTES); + assert(crypto_core_ed25519_HASHBYTES == crypto_core_ed25519_hashbytes()); + assert(crypto_core_ed25519_HASHBYTES >= 2 * crypto_core_ed25519_BYTES); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core_ed25519.exp b/components/espressif__libsodium/libsodium/test/default/core_ed25519.exp new file mode 100644 index 0000000..2865979 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core_ed25519.exp @@ -0,0 +1,55 @@ +inv1: 5858cdec40a044b1548b3bb08f8ce0d71103d1f887df84ebc502643dac4df40b +inv2: 09688ce78a8ff8273f636b0bc748c0cceeeeedecebeae9e8e7e6e5e4e3e2e100 +inv3: f70b4f272b47bd6a1015a511fb3c9fc1b9c21ca4ca2e17d5a225b4c410b9b60d +inv4: 201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201 +neg1: e46b69758fd3193097398c9717b11e48111112131415161718191a1b1c1d1e0f +neg2: 09688ce78a8ff8273f636b0bc748c0cceeeeedecebeae9e8e7e6e5e4e3e2e100 +neg3: cdb4d73ffe47f83ebe85e18dcae6cc03f0f0f1f2f3f4f5f6f7f8f9fafbfcfd0e +neg4: 201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201 +comp1: e56b69758fd3193097398c9717b11e48111112131415161718191a1b1c1d1e0f +comp2: 09688ce78a8ff8273f636b0bc748c0cceeeeedecebeae9e8e7e6e5e4e3e2e100 +comp3: ceb4d73ffe47f83ebe85e18dcae6cc03f0f0f1f2f3f4f5f6f7f8f9fafbfcfd0e +comp4: 201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201 +add1: f7567cd87c82ec1c355a6304c143bcc9ecedededededededededededededed0d +sub1: f67c79849de0253ba142949e1db6224b13121212121212121212121212121202 +add2: b02e8581ce62f69922427c23f970f7e951525252525252525252525252525202 +sub2: 3da570db4b001cbeb35a7b7fe588e72aaeadadadadadadadadadadadadadad0d +mul: 4453ef38408c06677c1b810e4bf8b1991f01c88716fbfa2f075a518b77da400b +from_uniform_deterministic (0): b18e62cf804b022fec392b0e2d6539d0f059732616c11913f510f73ae2544ebc +from_uniform_deterministic (1): b9d23004e78c58e22da72e109550133e3d3bb9e46afcc066b82326319653d62c +from_uniform_deterministic (2): 14063782c8b8a677dce09c4e51719b1cf942bf71bc765c1ec9832a8b4446983c +from_uniform_deterministic (3): 02d6dbac70f6a14de72f4e17386016b08d6506336a086f10e719fbad8831d550 +from_uniform_deterministic (4): 11c851408e7892c2eae37584423a8f9c797e3649d45946b53e64319318a750b0 +from_uniform_deterministic (5): d4b9eaf70ffdc238c88725e294bdd02a6ce85577c5e7add7ca07041873019842 +from_uniform_deterministic (6): 740a6141079285c1b9e84ed463dcce5d3d40a167fa13129463eaf97d2a7bf654 +from_uniform_deterministic (7): e504a3e00bbf506cbe388784d85e85b10c428c37eba04ebd19a60948b71ad2cf +from_uniform_deterministic (8): 67cd50902c40c943f22c479c587fb3e5da2f8f1ad402049ac49ddc45ec20884c +from_uniform_deterministic (9): 658bffa23b425a91268ee17559073c4b1548209054ed7cf00ffe582696dda8dc +from_uniform_deterministic (10): b55b93e7a0fe554f86f1f4c991871a27756fee359a8c6bb7554ec91d5d552c49 +from_uniform_deterministic (11): fbc2bb45df1d806489a5a6415898c719c45c932d3467b6ce948ee80c0e8122c9 +from_uniform_deterministic (12): 93164e57b5e3ae6826ac9e0c31ddecf94e21a39a29ba9d1d24e9e588fe065d95 +from_uniform_deterministic (13): 16824d74c9482890dc57b0ec843a0a5231b581d2ce3909934d7658389f169093 +from_uniform_deterministic (14): 2f5b0336c7f0af520badeae99450f92835c27224ab4cd117f55b176afb6f0001 +(L-1)*8: e5d3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010 +8(L-1): e5d3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010 +(L-1)^2: 0100000000000000000000000000000000000000000000000000000000000000 +(L+1)*8: 0800000000000000000000000000000000000000000000000000000000000000 +8(L+1): 0800000000000000000000000000000000000000000000000000000000000000 +(L+1)^2: 0100000000000000000000000000000000000000000000000000000000000000 +(L-1)h: 609faee7d21893c0b2e6bc17f5cef7a600000000000000000000000000000000 +h(L-1): 609faee7d21893c0b2e6bc17f5cef7a600000000000000000000000000000000 +(L+1)h: 8d344775474a7f9723b63a8be92ae76dffffffffffffffffffffffffffffff0f +h(L+1): 8d344775474a7f9723b63a8be92ae76dffffffffffffffffffffffffffffff0f +h^2: 726cf51b9ec1dda146af8c58ffd22d148f6ffd85f41cbb738f260cdf4650e60c +(L-1)+8: 0700000000000000000000000000000000000000000000000000000000000000 +8+(L-1): 0700000000000000000000000000000000000000000000000000000000000000 +(L-1)*2: ebd3f55c1a631258d69cf7a2def9de1400000000000000000000000000000010 +(L+1)+8: 0900000000000000000000000000000000000000000000000000000000000000 +8+(L+1): 0900000000000000000000000000000000000000000000000000000000000000 +(L+1)*2: 0200000000000000000000000000000000000000000000000000000000000000 +(L-1)+h: 8c344775474a7f9723b63a8be92ae76dffffffffffffffffffffffffffffff0f +h+(L-1): 8c344775474a7f9723b63a8be92ae76dffffffffffffffffffffffffffffff0f +(L+1)+h: 8e344775474a7f9723b63a8be92ae76dffffffffffffffffffffffffffffff0f +h+(L+1): 8e344775474a7f9723b63a8be92ae76dffffffffffffffffffffffffffffff0f +h*2: 1000000000000000000000000000000000000000000000000000000000000000 +OK diff --git a/components/espressif__libsodium/libsodium/test/default/core_ristretto255.c b/components/espressif__libsodium/libsodium/test/default/core_ristretto255.c new file mode 100644 index 0000000..0d247c4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core_ristretto255.c @@ -0,0 +1,271 @@ +#define TEST_NAME "core_ristretto255" +#include "cmptest.h" + +static void +tv1(void) +{ + static const char *bad_encodings_hex[] = { + /* Non-canonical field encodings */ + "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "0100000000000000000000000000000000000000000000000000000000000080", + + /* Negative field elements */ + "0100000000000000000000000000000000000000000000000000000000000000", + "01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "ed57ffd8c914fb201471d1c3d245ce3c746fcbe63a3679d51b6a516ebebe0e20", + "c34c4e1826e5d403b78e246e88aa051c36ccf0aafebffe137d148a2bf9104562", + "c940e5a4404157cfb1628b108db051a8d439e1a421394ec4ebccb9ec92a8ac78", + "47cfc5497c53dc8e61c91d17fd626ffb1c49e2bca94eed052281b510b1117a24", + "f1c6165d33367351b0da8f6e4511010c68174a03b6581212c71c0e1d026c3c72", + "87260f7a2f12495118360f02c26a470f450dadf34a413d21042b43b9d93e1309", + + /* Non-square x^2 */ + "26948d35ca62e643e26a83177332e6b6afeb9d08e4268b650f1f5bbd8d81d371", + "4eac077a713c57b4f4397629a4145982c661f48044dd3f96427d40b147d9742f", + "de6a7b00deadc788eb6b6c8d20c0ae96c2f2019078fa604fee5b87d6e989ad7b", + "bcab477be20861e01e4a0e295284146a510150d9817763caf1a6f4b422d67042", + "2a292df7e32cababbd9de088d1d1abec9fc0440f637ed2fba145094dc14bea08", + "f4a9e534fc0d216c44b218fa0c42d99635a0127ee2e53c712f70609649fdff22", + "8268436f8c4126196cf64b3c7ddbda90746a378625f9813dd9b8457077256731", + "2810e5cbc2cc4d4eece54f61c6f69758e289aa7ab440b3cbeaa21995c2f4232b", + + /* Negative xy value */ + "3eb858e78f5a7254d8c9731174a94f76755fd3941c0ac93735c07ba14579630e", + "a45fdc55c76448c049a1ab33f17023edfb2be3581e9c7aade8a6125215e04220", + "d483fe813c6ba647ebbfd3ec41adca1c6130c2beeee9d9bf065c8d151c5f396e", + "8a2e1d30050198c65a54483123960ccc38aef6848e1ec8f5f780e8523769ba32", + "32888462f8b486c68ad7dd9610be5192bbeaf3b443951ac1a8118419d9fa097b", + "227142501b9d4355ccba290404bde41575b037693cef1f438c47f8fbf35d1165", + "5c37cc491da847cfeb9281d407efc41e15144c876e0170b499a96a22ed31e01e", + "445425117cb8c90edcbc7c1cc0e74f747f2c1efa5630a967c64f287792a48a4b", + + /* s = -1, which causes y = 0 */ + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f" + }; + unsigned char *s; + size_t i; + + s = (unsigned char *) sodium_malloc(crypto_core_ristretto255_BYTES); + for (i = 0; i < sizeof bad_encodings_hex / sizeof bad_encodings_hex[0]; i++) { + sodium_hex2bin(s, crypto_core_ristretto255_BYTES, bad_encodings_hex[i], + crypto_core_ristretto255_BYTES * 2 + 1, + NULL, NULL, NULL); + if (crypto_core_ristretto255_is_valid_point(s)) { + printf("[%s] was not rejected\n", bad_encodings_hex[i]); + } + } + sodium_free(s); +}; + +static void +tv2(void) +{ + static const char *hash_hex[] = { + "5d1be09e3d0c82fc538112490e35701979d99e06ca3e2b5b54bffe8b4dc772c1" + "4d98b696a1bbfb5ca32c436cc61c16563790306c79eaca7705668b47dffe5bb6", + + "f116b34b8f17ceb56e8732a60d913dd10cce47a6d53bee9204be8b44f6678b27" + "0102a56902e2488c46120e9276cfe54638286b9e4b3cdb470b542d46c2068d38", + + "8422e1bbdaab52938b81fd602effb6f89110e1e57208ad12d9ad767e2e25510c" + "27140775f9337088b982d83d7fcf0b2fa1edffe51952cbe7365e95c86eaf325c", + + "ac22415129b61427bf464e17baee8db65940c233b98afce8d17c57beeb7876c2" + "150d15af1cb1fb824bbd14955f2b57d08d388aab431a391cfc33d5bafb5dbbaf", + + "165d697a1ef3d5cf3c38565beefcf88c0f282b8e7dbd28544c483432f1cec767" + "5debea8ebb4e5fe7d6f6e5db15f15587ac4d4d4a1de7191e0c1ca6664abcc413", + + "a836e6c9a9ca9f1e8d486273ad56a78c70cf18f0ce10abb1c7172ddd605d7fd2" + "979854f47ae1ccf204a33102095b4200e5befc0465accc263175485f0e17ea5c", + + "2cdc11eaeb95daf01189417cdddbf95952993aa9cb9c640eb5058d09702c7462" + "2c9965a697a3b345ec24ee56335b556e677b30e6f90ac77d781064f866a3c982" + }; + unsigned char *s; + unsigned char *u; + char *hex; + size_t i; + + s = (unsigned char *) sodium_malloc(crypto_core_ristretto255_BYTES); + u = (unsigned char *) sodium_malloc(crypto_core_ristretto255_HASHBYTES); + hex = (char *) sodium_malloc(crypto_core_ristretto255_BYTES * 2 + 1); + for (i = 0; i < sizeof hash_hex / sizeof hash_hex[0]; i++) { + sodium_hex2bin(u, crypto_core_ristretto255_HASHBYTES, hash_hex[i], + crypto_core_ristretto255_HASHBYTES * 2 + 1, + NULL, NULL, NULL); + crypto_core_ristretto255_from_hash(s, u); + sodium_bin2hex(hex, crypto_core_ristretto255_BYTES * 2 + 1, + s, crypto_core_ristretto255_BYTES); + printf("%s\n", hex); + } + sodium_free(hex); + sodium_free(u); + sodium_free(s); +} + +static void +tv3(void) +{ + static const unsigned char l[crypto_core_ed25519_BYTES] = + { 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, + 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 }; + + unsigned char *r = + (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + unsigned char *r_inv = + (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + unsigned char *ru = + (unsigned char *) sodium_malloc(crypto_core_ristretto255_HASHBYTES); + unsigned char *s = + (unsigned char *) sodium_malloc(crypto_core_ristretto255_BYTES); + unsigned char *s_ = + (unsigned char *) sodium_malloc(crypto_core_ristretto255_BYTES); + unsigned char *s2 = + (unsigned char *) sodium_malloc(crypto_core_ristretto255_BYTES); + int i; + + for (i = 0; i < 1000; i++) { + crypto_core_ristretto255_scalar_random(r); + if (crypto_scalarmult_ristretto255_base(s, r) != 0 || + crypto_core_ristretto255_is_valid_point(s) != 1) { + printf("crypto_scalarmult_ristretto255_base() failed\n"); + } + crypto_core_ristretto255_random(s); + if (crypto_core_ristretto255_is_valid_point(s) != 1) { + printf("crypto_core_ristretto255_random() failed\n"); + } + if (crypto_scalarmult_ristretto255(s, l, s) == 0) { + printf("s*l != inf (1)\n"); + } + randombytes_buf(ru, crypto_core_ristretto255_HASHBYTES); + if (crypto_core_ristretto255_from_hash(s, ru) != 0 || + crypto_core_ristretto255_is_valid_point(s) != 1) { + printf("crypto_core_ristretto255_from_hash() failed\n"); + } + if (crypto_scalarmult_ristretto255(s2, l, s) == 0) { + printf("s*l != inf (2)\n"); + } + if (crypto_scalarmult_ristretto255(s2, r, s) != 0 || + crypto_core_ristretto255_is_valid_point(s2) != 1) { + printf("crypto_scalarmult_ristretto255() failed\n"); + } + if (crypto_core_ristretto255_scalar_invert(r_inv, r) != 0) { + printf("crypto_core_ristretto255_scalar_invert() failed\n"); + } + if (crypto_scalarmult_ristretto255(s_, r_inv, s2) != 0 || + crypto_core_ristretto255_is_valid_point(s_) != 1) { + printf("crypto_scalarmult_ristretto255() failed\n"); + } + if (memcmp(s, s_, crypto_core_ristretto255_BYTES) != 0) { + printf("inversion failed\n"); + } + if (crypto_scalarmult_ristretto255(s2, l, s2) == 0) { + printf("s*l != inf (3)\n"); + } + if (crypto_core_ristretto255_add(s2, s, s_) != 0) { + printf("addition failed"); + } + if (crypto_core_ristretto255_sub(s2, s2, s_) != 0) { + printf("subtraction failed"); + } + if (crypto_core_ristretto255_is_valid_point(s2) == 0) { + printf("invalid point"); + } + if (memcmp(s, s2, crypto_core_ristretto255_BYTES) != 0) { + printf("s2 + s - s_ != s\n"); + } + if (crypto_core_ristretto255_sub(s2, s2, s) != 0) { + printf("subtraction failed"); + } + if (crypto_core_ristretto255_is_valid_point(s2) == -1) { + printf("s + s' - s - s' != 0"); + } + } + + crypto_core_ristretto255_random(s); + memset(s_, 0xfe, crypto_core_ristretto255_BYTES); + assert(crypto_core_ristretto255_add(s2, s_, s) == -1); + assert(crypto_core_ristretto255_add(s2, s, s_) == -1); + assert(crypto_core_ristretto255_add(s2, s_, s_) == -1); + assert(crypto_core_ristretto255_add(s2, s, s) == 0); + assert(crypto_core_ristretto255_sub(s2, s_, s) == -1); + assert(crypto_core_ristretto255_sub(s2, s, s_) == -1); + assert(crypto_core_ristretto255_sub(s2, s_, s_) == -1); + assert(crypto_core_ristretto255_sub(s2, s, s) == 0); + + sodium_free(s2); + sodium_free(s_); + sodium_free(s); + sodium_free(ru); + sodium_free(r_inv); + sodium_free(r); +} + +static void +tv4(void) +{ + unsigned char *r; + unsigned char *s1; + unsigned char *s2; + unsigned char *s3; + unsigned char *s4; + + r = (unsigned char *) sodium_malloc(crypto_core_ristretto255_NONREDUCEDSCALARBYTES); + s1 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + s2 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + s3 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + s4 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + + crypto_core_ristretto255_scalar_random(s1); + randombytes_buf(r, crypto_core_ristretto255_NONREDUCEDSCALARBYTES); + crypto_core_ristretto255_scalar_reduce(s2, r); + memcpy(s4, s1, crypto_core_ristretto255_SCALARBYTES); + crypto_core_ristretto255_scalar_add(s3, s1, s2); + crypto_core_ristretto255_scalar_sub(s4, s1, s2); + crypto_core_ristretto255_scalar_add(s2, s3, s4); + crypto_core_ristretto255_scalar_sub(s2, s2, s1); + crypto_core_ristretto255_scalar_mul(s2, s3, s2); + crypto_core_ristretto255_scalar_invert(s4, s3); + crypto_core_ristretto255_scalar_mul(s2, s2, s4); + crypto_core_ristretto255_scalar_negate(s1, s1); + crypto_core_ristretto255_scalar_add(s2, s2, s1); + crypto_core_ristretto255_scalar_complement(s1, s2); + s1[0]--; + assert(sodium_is_zero(s1, crypto_core_ristretto255_SCALARBYTES)); + + sodium_free(s1); + sodium_free(s2); + sodium_free(s3); + sodium_free(s4); + sodium_free(r); +} + +int +main(void) +{ + tv1(); + tv2(); + tv3(); + tv4(); + + assert(crypto_core_ristretto255_BYTES == crypto_core_ristretto255_bytes()); + assert(crypto_core_ristretto255_SCALARBYTES == crypto_core_ristretto255_scalarbytes()); + assert(crypto_core_ristretto255_NONREDUCEDSCALARBYTES == crypto_core_ristretto255_nonreducedscalarbytes()); + assert(crypto_core_ristretto255_NONREDUCEDSCALARBYTES >= crypto_core_ristretto255_SCALARBYTES); + assert(crypto_core_ristretto255_HASHBYTES == crypto_core_ristretto255_hashbytes()); + assert(crypto_core_ristretto255_HASHBYTES >= crypto_core_ristretto255_BYTES); + assert(crypto_core_ristretto255_BYTES == crypto_core_ed25519_BYTES); + assert(crypto_core_ristretto255_SCALARBYTES == crypto_core_ed25519_SCALARBYTES); + assert(crypto_core_ristretto255_NONREDUCEDSCALARBYTES == crypto_core_ed25519_NONREDUCEDSCALARBYTES); + assert(crypto_core_ristretto255_HASHBYTES >= 2 * crypto_core_ed25519_UNIFORMBYTES); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/core_ristretto255.exp b/components/espressif__libsodium/libsodium/test/default/core_ristretto255.exp new file mode 100644 index 0000000..8618d89 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/core_ristretto255.exp @@ -0,0 +1,8 @@ +3066f82a1a747d45120d1740f14358531a8f04bbffe6a819f86dfe50f44a0a46 +f26e5b6f7d362d2d2a94c5d0e7602cb4773c95a2e5c31a64f133189fa76ed61b +006ccd2a9e6867e6a2c5cea83d3302cc9de128dd2a9a57dd8ee7b9d7ffe02826 +f8f0c87cf237953c5890aec3998169005dae3eca1fbb04548c635953c817f92a +ae81e7dedf20a497e10c304a765c1767a42d6e06029758d2d7e8ef7cc4c41179 +e2705652ff9f5e44d3e841bf1c251cf7dddb77d140870d1ab2ed64f1a9ce8628 +80bd07262511cdde4863f8a7434cef696750681cb9510eea557088f76d9e5065 +OK diff --git a/components/espressif__libsodium/libsodium/test/default/ed25519_convert.c b/components/espressif__libsodium/libsodium/test/default/ed25519_convert.c new file mode 100644 index 0000000..d067547 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/ed25519_convert.c @@ -0,0 +1,70 @@ + +#define TEST_NAME "ed25519_convert" +#include "cmptest.h" + +static const unsigned char keypair_seed[crypto_sign_ed25519_SEEDBYTES] = { + 0x42, 0x11, 0x51, 0xa4, 0x59, 0xfa, 0xea, 0xde, 0x3d, 0x24, 0x71, + 0x15, 0xf9, 0x4a, 0xed, 0xae, 0x42, 0x31, 0x81, 0x24, 0x09, 0x5a, + 0xfa, 0xbe, 0x4d, 0x14, 0x51, 0xa5, 0x59, 0xfa, 0xed, 0xee +}; + +int +main(void) +{ + unsigned char ed25519_pk[crypto_sign_ed25519_PUBLICKEYBYTES]; + unsigned char ed25519_skpk[crypto_sign_ed25519_SECRETKEYBYTES]; + unsigned char curve25519_pk[crypto_scalarmult_curve25519_BYTES]; + unsigned char curve25519_pk2[crypto_scalarmult_curve25519_BYTES]; + unsigned char curve25519_sk[crypto_scalarmult_curve25519_BYTES]; + char curve25519_pk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1]; + char curve25519_sk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1]; + unsigned int i; + + assert(crypto_sign_ed25519_SEEDBYTES <= crypto_hash_sha512_BYTES); + crypto_sign_ed25519_seed_keypair(ed25519_pk, ed25519_skpk, keypair_seed); + + if (crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) != 0) { + printf("conversion failed\n"); + } + crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, ed25519_skpk); + sodium_bin2hex(curve25519_pk_hex, sizeof curve25519_pk_hex, curve25519_pk, + sizeof curve25519_pk); + sodium_bin2hex(curve25519_sk_hex, sizeof curve25519_sk_hex, curve25519_sk, + sizeof curve25519_sk); + + printf("curve25519 pk: [%s]\n", curve25519_pk_hex); + printf("curve25519 sk: [%s]\n", curve25519_sk_hex); + + for (i = 0U; i < 500U; i++) { + crypto_sign_ed25519_keypair(ed25519_pk, ed25519_skpk); + if (crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) != + 0) { + printf("conversion failed\n"); + } + crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, ed25519_skpk); + crypto_scalarmult_curve25519_base(curve25519_pk2, curve25519_sk); + if (memcmp(curve25519_pk, curve25519_pk2, sizeof curve25519_pk) != 0) { + printf("conversion failed\n"); + } + } + + sodium_hex2bin(ed25519_pk, crypto_sign_ed25519_PUBLICKEYBYTES, + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + 64, NULL, NULL, NULL); + assert(crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) == -1); + sodium_hex2bin(ed25519_pk, crypto_sign_ed25519_PUBLICKEYBYTES, + "0200000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + 64, NULL, NULL, NULL); + assert(crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) == -1); + sodium_hex2bin(ed25519_pk, crypto_sign_ed25519_PUBLICKEYBYTES, + "0500000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + 64, NULL, NULL, NULL); + assert(crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) == -1); + + printf("ok\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/ed25519_convert.exp b/components/espressif__libsodium/libsodium/test/default/ed25519_convert.exp new file mode 100644 index 0000000..cba2b7b --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/ed25519_convert.exp @@ -0,0 +1,3 @@ +curve25519 pk: [f1814f0e8ff1043d8a44d25babff3cedcae6c22c3edaa48f857ae70de2baae50] +curve25519 sk: [8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166] +ok diff --git a/components/espressif__libsodium/libsodium/test/default/generichash.c b/components/espressif__libsodium/libsodium/test/default/generichash.c new file mode 100644 index 0000000..2da877d --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/generichash.c @@ -0,0 +1,1406 @@ + +#define TEST_NAME "generichash" +#include "cmptest.h" + +#define MAXLEN 64 + +static struct { + const char *in_hex; + const char *key_hex; + const char *out_hex; +} tests[] = { + { + "", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "10ebb67700b1868efb4417987acf4690ae9d972fb7a590c2f02871799aaa4786b5e996e8f0f4eb981fc214b005f42d2ff4233499391653df7aefcbc13fc51568" + }, + { + "00", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "961f6dd1e4dd30f63901690c512e78e4b45e4742ed197c3c5e45c549fd25f2e4187b0bc9fe30492b16b0d0bc4ef9b0f34c7003fac09a5ef1532e69430234cebd" + }, + { + "0001", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "da2cfbe2d8409a0f38026113884f84b50156371ae304c4430173d08a99d9fb1b983164a3770706d537f49e0c916d9f32b95cc37a95b99d857436f0232c88a965" + }, + { + "000102", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "33d0825dddf7ada99b0e7e307104ad07ca9cfd9692214f1561356315e784f3e5a17e364ae9dbb14cb2036df932b77f4b292761365fb328de7afdc6d8998f5fc1" + }, + { + "00010203", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "beaa5a3d08f3807143cf621d95cd690514d0b49efff9c91d24b59241ec0eefa5f60196d407048bba8d2146828ebcb0488d8842fd56bb4f6df8e19c4b4daab8ac" + }, + { + "0001020304", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "098084b51fd13deae5f4320de94a688ee07baea2800486689a8636117b46c1f4c1f6af7f74ae7c857600456a58a3af251dc4723a64cc7c0a5ab6d9cac91c20bb" + }, + { + "000102030405", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "6044540d560853eb1c57df0077dd381094781cdb9073e5b1b3d3f6c7829e12066bbaca96d989a690de72ca3133a83652ba284a6d62942b271ffa2620c9e75b1f" + }, + { + "00010203040506", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7a8cfe9b90f75f7ecb3acc053aaed6193112b6f6a4aeeb3f65d3de541942deb9e2228152a3c4bbbe72fc3b12629528cfbb09fe630f0474339f54abf453e2ed52" + }, + { + "0001020304050607", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "380beaf6ea7cc9365e270ef0e6f3a64fb902acae51dd5512f84259ad2c91f4bc4108db73192a5bbfb0cbcf71e46c3e21aee1c5e860dc96e8eb0b7b8426e6abe9" + }, + { + "000102030405060708", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "60fe3c4535e1b59d9a61ea8500bfac41a69dffb1ceadd9aca323e9a625b64da5763bad7226da02b9c8c4f1a5de140ac5a6c1124e4f718ce0b28ea47393aa6637" + }, + { + "00010203040506070809", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "4fe181f54ad63a2983feaaf77d1e7235c2beb17fa328b6d9505bda327df19fc37f02c4b6f0368ce23147313a8e5738b5fa2a95b29de1c7f8264eb77b69f585cd" + }, + { + "000102030405060708090a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f228773ce3f3a42b5f144d63237a72d99693adb8837d0e112a8a0f8ffff2c362857ac49c11ec740d1500749dac9b1f4548108bf3155794dcc9e4082849e2b85b" + }, + { + "000102030405060708090a0b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "962452a8455cc56c8511317e3b1f3b2c37df75f588e94325fdd77070359cf63a9ae6e930936fdf8e1e08ffca440cfb72c28f06d89a2151d1c46cd5b268ef8563" + }, + { + "000102030405060708090a0b0c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "43d44bfa18768c59896bf7ed1765cb2d14af8c260266039099b25a603e4ddc5039d6ef3a91847d1088d401c0c7e847781a8a590d33a3c6cb4df0fab1c2f22355" + }, + { + "000102030405060708090a0b0c0d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "dcffa9d58c2a4ca2cdbb0c7aa4c4c1d45165190089f4e983bb1c2cab4aaeff1fa2b5ee516fecd780540240bf37e56c8bcca7fab980e1e61c9400d8a9a5b14ac6" + }, + { + "000102030405060708090a0b0c0d0e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "6fbf31b45ab0c0b8dad1c0f5f4061379912dde5aa922099a030b725c73346c524291adef89d2f6fd8dfcda6d07dad811a9314536c2915ed45da34947e83de34e" + }, + { + "000102030405060708090a0b0c0d0e0f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "a0c65bddde8adef57282b04b11e7bc8aab105b99231b750c021f4a735cb1bcfab87553bba3abb0c3e64a0b6955285185a0bd35fb8cfde557329bebb1f629ee93" + }, + { + "000102030405060708090a0b0c0d0e0f10", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f99d815550558e81eca2f96718aed10d86f3f1cfb675cce06b0eff02f617c5a42c5aa760270f2679da2677c5aeb94f1142277f21c7f79f3c4f0cce4ed8ee62b1" + }, + { + "000102030405060708090a0b0c0d0e0f1011", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "95391da8fc7b917a2044b3d6f5374e1ca072b41454d572c7356c05fd4bc1e0f40b8bb8b4a9f6bce9be2c4623c399b0dca0dab05cb7281b71a21b0ebcd9e55670" + }, + { + "000102030405060708090a0b0c0d0e0f101112", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "04b9cd3d20d221c09ac86913d3dc63041989a9a1e694f1e639a3ba7e451840f750c2fc191d56ad61f2e7936bc0ac8e094b60caeed878c18799045402d61ceaf9" + }, + { + "000102030405060708090a0b0c0d0e0f10111213", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ec0e0ef707e4ed6c0c66f9e089e4954b058030d2dd86398fe84059631f9ee591d9d77375355149178c0cf8f8e7c49ed2a5e4f95488a2247067c208510fadc44c" + }, + { + "000102030405060708090a0b0c0d0e0f1011121314", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "9a37cce273b79c09913677510eaf7688e89b3314d3532fd2764c39de022a2945b5710d13517af8ddc0316624e73bec1ce67df15228302036f330ab0cb4d218dd" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "4cf9bb8fb3d4de8b38b2f262d3c40f46dfe747e8fc0a414c193d9fcf753106ce47a18f172f12e8a2f1c26726545358e5ee28c9e2213a8787aafbc516d2343152" + }, + { + "000102030405060708090a0b0c0d0e0f10111213141516", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "64e0c63af9c808fd893137129867fd91939d53f2af04be4fa268006100069b2d69daa5c5d8ed7fddcb2a70eeecdf2b105dd46a1e3b7311728f639ab489326bc9" + }, + { + "000102030405060708090a0b0c0d0e0f1011121314151617", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5e9c93158d659b2def06b0c3c7565045542662d6eee8a96a89b78ade09fe8b3dcc096d4fe48815d88d8f82620156602af541955e1f6ca30dce14e254c326b88f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7775dff889458dd11aef417276853e21335eb88e4dec9cfb4e9edb49820088551a2ca60339f12066101169f0dfe84b098fddb148d9da6b3d613df263889ad64b" + }, + { + "000102030405060708090a0b0c0d0e0f10111213141516171819", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f0d2805afbb91f743951351a6d024f9353a23c7ce1fc2b051b3a8b968c233f46f50f806ecb1568ffaa0b60661e334b21dde04f8fa155ac740eeb42e20b60d764" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "86a2af316e7d7754201b942e275364ac12ea8962ab5bd8d7fb276dc5fbffc8f9a28cae4e4867df6780d9b72524160927c855da5b6078e0b554aa91e31cb9ca1d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "10bdf0caa0802705e706369baf8a3f79d72c0a03a80675a7bbb00be3a45e516424d1ee88efb56f6d5777545ae6e27765c3a8f5e493fc308915638933a1dfee55" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b01781092b1748459e2e4ec178696627bf4ebafebba774ecf018b79a68aeb84917bf0b84bb79d17b743151144cd66b7b33a4b9e52c76c4e112050ff5385b7f0b" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c6dbc61dec6eaeac81e3d5f755203c8e220551534a0b2fd105a91889945a638550204f44093dd998c076205dffad703a0e5cd3c7f438a7e634cd59fededb539e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "eba51acffb4cea31db4b8d87e9bf7dd48fe97b0253ae67aa580f9ac4a9d941f2bea518ee286818cc9f633f2a3b9fb68e594b48cdd6d515bf1d52ba6c85a203a7" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "86221f3ada52037b72224f105d7999231c5e5534d03da9d9c0a12acb68460cd375daf8e24386286f9668f72326dbf99ba094392437d398e95bb8161d717f8991" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5595e05c13a7ec4dc8f41fb70cb50a71bce17c024ff6de7af618d0cc4e9c32d9570d6d3ea45b86525491030c0d8f2b1836d5778c1ce735c17707df364d054347" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ce0f4f6aca89590a37fe034dd74dd5fa65eb1cbd0a41508aaddc09351a3cea6d18cb2189c54b700c009f4cbf0521c7ea01be61c5ae09cb54f27bc1b44d658c82" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7ee80b06a215a3bca970c77cda8761822bc103d44fa4b33f4d07dcb997e36d55298bceae12241b3fa07fa63be5576068da387b8d5859aeab701369848b176d42" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "940a84b6a84d109aab208c024c6ce9647676ba0aaa11f86dbb7018f9fd2220a6d901a9027f9abcf935372727cbf09ebd61a2a2eeb87653e8ecad1bab85dc8327" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "2020b78264a82d9f4151141adba8d44bf20c5ec062eee9b595a11f9e84901bf148f298e0c9f8777dcdbc7cc4670aac356cc2ad8ccb1629f16f6a76bcefbee760" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d1b897b0e075ba68ab572adf9d9c436663e43eb3d8e62d92fc49c9be214e6f27873fe215a65170e6bea902408a25b49506f47babd07cecf7113ec10c5dd31252" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b14d0c62abfa469a357177e594c10c194243ed2025ab8aa5ad2fa41ad318e0ff48cd5e60bec07b13634a711d2326e488a985f31e31153399e73088efc86a5c55" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "4169c5cc808d2697dc2a82430dc23e3cd356dc70a94566810502b8d655b39abf9e7f902fe717e0389219859e1945df1af6ada42e4ccda55a197b7100a30c30a1" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "258a4edb113d66c839c8b1c91f15f35ade609f11cd7f8681a4045b9fef7b0b24c82cda06a5f2067b368825e3914e53d6948ede92efd6e8387fa2e537239b5bee" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "79d2d8696d30f30fb34657761171a11e6c3f1e64cbe7bebee159cb95bfaf812b4f411e2f26d9c421dc2c284a3342d823ec293849e42d1e46b0a4ac1e3c86abaa" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8b9436010dc5dee992ae38aea97f2cd63b946d94fedd2ec9671dcde3bd4ce9564d555c66c15bb2b900df72edb6b891ebcadfeff63c9ea4036a998be7973981e7" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c8f68e696ed28242bf997f5b3b34959508e42d613810f1e2a435c96ed2ff560c7022f361a9234b9837feee90bf47922ee0fd5f8ddf823718d86d1e16c6090071" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b02d3eee4860d5868b2c39ce39bfe81011290564dd678c85e8783f29302dfc1399ba95b6b53cd9ebbf400cca1db0ab67e19a325f2d115812d25d00978ad1bca4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7693ea73af3ac4dad21ca0d8da85b3118a7d1c6024cfaf557699868217bc0c2f44a199bc6c0edd519798ba05bd5b1b4484346a47c2cadf6bf30b785cc88b2baf" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "a0e5c1c0031c02e48b7f09a5e896ee9aef2f17fc9e18e997d7f6cac7ae316422c2b1e77984e5f3a73cb45deed5d3f84600105e6ee38f2d090c7d0442ea34c46d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "41daa6adcfdb69f1440c37b596440165c15ada596813e2e22f060fcd551f24dee8e04ba6890387886ceec4a7a0d7fc6b44506392ec3822c0d8c1acfc7d5aebe8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "14d4d40d5984d84c5cf7523b7798b254e275a3a8cc0a1bd06ebc0bee726856acc3cbf516ff667cda2058ad5c3412254460a82c92187041363cc77a4dc215e487" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d0e7a1e2b9a447fee83e2277e9ff8010c2f375ae12fa7aaa8ca5a6317868a26a367a0b69fbc1cf32a55d34eb370663016f3d2110230eba754028a56f54acf57c" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e771aa8db5a3e043e8178f39a0857ba04a3f18e4aa05743cf8d222b0b095825350ba422f63382a23d92e4149074e816a36c1cd28284d146267940b31f8818ea2" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "feb4fd6f9e87a56bef398b3284d2bda5b5b0e166583a66b61e538457ff0584872c21a32962b9928ffab58de4af2edd4e15d8b35570523207ff4e2a5aa7754caa" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "462f17bf005fb1c1b9e671779f665209ec2873e3e411f98dabf240a1d5ec3f95ce6796b6fc23fe171903b502023467dec7273ff74879b92967a2a43a5a183d33" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d3338193b64553dbd38d144bea71c5915bb110e2d88180dbc5db364fd6171df317fc7268831b5aef75e4342b2fad8797ba39eddcef80e6ec08159350b1ad696d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e1590d585a3d39f7cb599abd479070966409a6846d4377acf4471d065d5db94129cc9be92573b05ed226be1e9b7cb0cabe87918589f80dadd4ef5ef25a93d28e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f8f3726ac5a26cc80132493a6fedcb0e60760c09cfc84cad178175986819665e76842d7b9fedf76dddebf5d3f56faaad4477587af21606d396ae570d8e719af2" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "30186055c07949948183c850e9a756cc09937e247d9d928e869e20bafc3cd9721719d34e04a0899b92c736084550186886efba2e790d8be6ebf040b209c439a4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f3c4276cb863637712c241c444c5cc1e3554e0fddb174d035819dd83eb700b4ce88df3ab3841ba02085e1a99b4e17310c5341075c0458ba376c95a6818fbb3e2" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0aa007c4dd9d5832393040a1583c930bca7dc5e77ea53add7e2b3f7c8e231368043520d4a3ef53c969b6bbfd025946f632bd7f765d53c21003b8f983f75e2a6a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "08e9464720533b23a04ec24f7ae8c103145f765387d738777d3d343477fd1c58db052142cab754ea674378e18766c53542f71970171cc4f81694246b717d7564" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d37ff7ad297993e7ec21e0f1b4b5ae719cdc83c5db687527f27516cbffa822888a6810ee5c1ca7bfe3321119be1ab7bfa0a502671c8329494df7ad6f522d440f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "dd9042f6e464dcf86b1262f6accfafbd8cfd902ed3ed89abf78ffa482dbdeeb6969842394c9a1168ae3d481a017842f660002d42447c6b22f7b72f21aae021c9" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "bd965bf31e87d70327536f2a341cebc4768eca275fa05ef98f7f1b71a0351298de006fba73fe6733ed01d75801b4a928e54231b38e38c562b2e33ea1284992fa" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "65676d800617972fbd87e4b9514e1c67402b7a331096d3bfac22f1abb95374abc942f16e9ab0ead33b87c91968a6e509e119ff07787b3ef483e1dcdccf6e3022" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "939fa189699c5d2c81ddd1ffc1fa207c970b6a3685bb29ce1d3e99d42f2f7442da53e95a72907314f4588399a3ff5b0a92beb3f6be2694f9f86ecf2952d5b41c" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c516541701863f91005f314108ceece3c643e04fc8c42fd2ff556220e616aaa6a48aeb97a84bad74782e8dff96a1a2fa949339d722edcaa32b57067041df88cc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "987fd6e0d6857c553eaebb3d34970a2c2f6e89a3548f492521722b80a1c21a153892346d2cba6444212d56da9a26e324dccbc0dcde85d4d2ee4399eec5a64e8f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ae56deb1c2328d9c4017706bce6e99d41349053ba9d336d677c4c27d9fd50ae6aee17e853154e1f4fe7672346da2eaa31eea53fcf24a22804f11d03da6abfc2b" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "49d6a608c9bde4491870498572ac31aac3fa40938b38a7818f72383eb040ad39532bc06571e13d767e6945ab77c0bdc3b0284253343f9f6c1244ebf2ff0df866" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "da582ad8c5370b4469af862aa6467a2293b2b28bd80ae0e91f425ad3d47249fdf98825cc86f14028c3308c9804c78bfeeeee461444ce243687e1a50522456a1d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243444546", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d5266aa3331194aef852eed86d7b5b2633a0af1c735906f2e13279f14931a9fc3b0eac5ce9245273bd1aa92905abe16278ef7efd47694789a7283b77da3c70f8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344454647", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "2962734c28252186a9a1111c732ad4de4506d4b4480916303eb7991d659ccda07a9911914bc75c418ab7a4541757ad054796e26797feaf36e9f6ad43f14b35a4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e8b79ec5d06e111bdfafd71e9f5760f00ac8ac5d8bf768f9ff6f08b8f026096b1cc3a4c973333019f1e3553e77da3f98cb9f542e0a90e5f8a940cc58e59844b3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243444546474849", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "dfb320c44f9d41d1efdcc015f08dd5539e526e39c87d509ae6812a969e5431bf4fa7d91ffd03b981e0d544cf72d7b1c0374f8801482e6dea2ef903877eba675e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d88675118fdb55a5fb365ac2af1d217bf526ce1ee9c94b2f0090b2c58a06ca58187d7fe57c7bed9d26fca067b4110eefcd9a0a345de872abe20de368001b0745" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b893f2fc41f7b0dd6e2f6aa2e0370c0cff7df09e3acfcc0e920b6e6fad0ef747c40668417d342b80d2351e8c175f20897a062e9765e6c67b539b6ba8b9170545" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "6c67ec5697accd235c59b486d7b70baeedcbd4aa64ebd4eef3c7eac189561a726250aec4d48cadcafbbe2ce3c16ce2d691a8cce06e8879556d4483ed7165c063" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f1aa2b044f8f0c638a3f362e677b5d891d6fd2ab0765f6ee1e4987de057ead357883d9b405b9d609eea1b869d97fb16d9b51017c553f3b93c0a1e0f1296fedcd" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "cbaa259572d4aebfc1917acddc582b9f8dfaa928a198ca7acd0f2aa76a134a90252e6298a65b08186a350d5b7626699f8cb721a3ea5921b753ae3a2dce24ba3a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "fa1549c9796cd4d303dcf452c1fbd5744fd9b9b47003d920b92de34839d07ef2a29ded68f6fc9e6c45e071a2e48bd50c5084e96b657dd0404045a1ddefe282ed" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5cf2ac897ab444dcb5c8d87c495dbdb34e1838b6b629427caa51702ad0f9688525f13bec503a3c3a2c80a65e0b5715e8afab00ffa56ec455a49a1ad30aa24fcd" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "9aaf80207bace17bb7ab145757d5696bde32406ef22b44292ef65d4519c3bb2ad41a59b62cc3e94b6fa96d32a7faadae28af7d35097219aa3fd8cda31e40c275" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "af88b163402c86745cb650c2988fb95211b94b03ef290eed9662034241fd51cf398f8073e369354c43eae1052f9b63b08191caa138aa54fea889cc7024236897" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "48fa7d64e1ceee27b9864db5ada4b53d00c9bc7626555813d3cd6730ab3cc06ff342d727905e33171bde6e8476e77fb1720861e94b73a2c538d254746285f430" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051525354", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0e6fd97a85e904f87bfe85bbeb34f69e1f18105cf4ed4f87aec36c6e8b5f68bd2a6f3dc8a9ecb2b61db4eedb6b2ea10bf9cb0251fb0f8b344abf7f366b6de5ab" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "06622da5787176287fdc8fed440bad187d830099c94e6d04c8e9c954cda70c8bb9e1fc4a6d0baa831b9b78ef6648681a4867a11da93ee36e5e6a37d87fc63f6f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1da6772b58fabf9c61f68d412c82f182c0236d7d575ef0b58dd22458d643cd1dfc93b03871c316d8430d312995d4197f0874c99172ba004a01ee295abac24e46" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051525354555657", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3cd2d9320b7b1d5fb9aab951a76023fa667be14a9124e394513918a3f44096ae4904ba0ffc150b63bc7ab1eeb9a6e257e5c8f000a70394a5afd842715de15f29" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "04cdc14f7434e0b4be70cb41db4c779a88eaef6accebcb41f2d42fffe7f32a8e281b5c103a27021d0d08362250753cdf70292195a53a48728ceb5844c2d98bab" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "9071b7a8a075d0095b8fb3ae5113785735ab98e2b52faf91d5b89e44aac5b5d4ebbf91223b0ff4c71905da55342e64655d6ef8c89a4768c3f93a6dc0366b5bc8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ebb30240dd96c7bc8d0abe49aa4edcbb4afdc51ff9aaf720d3f9e7fbb0f9c6d6571350501769fc4ebd0b2141247ff400d4fd4be414edf37757bb90a32ac5c65a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8532c58bf3c8015d9d1cbe00eef1f5082f8f3632fbe9f1ed4f9dfb1fa79e8283066d77c44c4af943d76b300364aecbd0648c8a8939bd204123f4b56260422dec" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "fe9846d64f7c7708696f840e2d76cb4408b6595c2f81ec6a28a7f2f20cb88cfe6ac0b9e9b8244f08bd7095c350c1d0842f64fb01bb7f532dfcd47371b0aeeb79" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "28f17ea6fb6c42092dc264257e29746321fb5bdaea9873c2a7fa9d8f53818e899e161bc77dfe8090afd82bf2266c5c1bc930a8d1547624439e662ef695f26f24" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ec6b7d7f030d4850acae3cb615c21dd25206d63e84d1db8d957370737ba0e98467ea0ce274c66199901eaec18a08525715f53bfdb0aacb613d342ebdceeddc3b" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b403d3691c03b0d3418df327d5860d34bbfcc4519bfbce36bf33b208385fadb9186bc78a76c489d89fd57e7dc75412d23bcd1dae8470ce9274754bb8585b13c5" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "31fc79738b8772b3f55cd8178813b3b52d0db5a419d30ba9495c4b9da0219fac6df8e7c23a811551a62b827f256ecdb8124ac8a6792ccfecc3b3012722e94463" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "bb2039ec287091bcc9642fc90049e73732e02e577e2862b32216ae9bedcd730c4c284ef3968c368b7d37584f97bd4b4dc6ef6127acfe2e6ae2509124e66c8af4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f53d68d13f45edfcb9bd415e2831e938350d5380d3432278fc1c0c381fcb7c65c82dafe051d8c8b0d44e0974a0e59ec7bf7ed0459f86e96f329fc79752510fd3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60616263", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8d568c7984f0ecdf7640fbc483b5d8c9f86634f6f43291841b309a350ab9c1137d24066b09da9944bac54d5bb6580d836047aac74ab724b887ebf93d4b32eca9" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c0b65ce5a96ff774c456cac3b5f2c4cd359b4ff53ef93a3da0778be4900d1e8da1601e769e8f1b02d2a2f8c5b9fa10b44f1c186985468feeb008730283a6657d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "4900bba6f5fb103ece8ec96ada13a5c3c85488e05551da6b6b33d988e611ec0fe2e3c2aa48ea6ae8986a3a231b223c5d27cec2eadde91ce07981ee652862d1e4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60616263646566", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c7f5c37c7285f927f76443414d4357ff789647d7a005a5a787e03c346b57f49f21b64fa9cf4b7e45573e23049017567121a9c3d4b2b73ec5e9413577525db45a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656667", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ec7096330736fdb2d64b5653e7475da746c23a4613a82687a28062d3236364284ac01720ffb406cfe265c0df626a188c9e5963ace5d3d5bb363e32c38c2190a6" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "82e744c75f4649ec52b80771a77d475a3bc091989556960e276a5f9ead92a03f718742cdcfeaee5cb85c44af198adc43a4a428f5f0c2ddb0be36059f06d7df73" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60616263646566676869", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "2834b7a7170f1f5b68559ab78c1050ec21c919740b784a9072f6e5d69f828d70c919c5039fb148e39e2c8a52118378b064ca8d5001cd10a5478387b966715ed6" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "16b4ada883f72f853bb7ef253efcab0c3e2161687ad61543a0d2824f91c1f81347d86be709b16996e17f2dd486927b0288ad38d13063c4a9672c39397d3789b6" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "78d048f3a69d8b54ae0ed63a573ae350d89f7c6cf1f3688930de899afa037697629b314e5cd303aa62feea72a25bf42b304b6c6bcb27fae21c16d925e1fbdac3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0f746a48749287ada77a82961f05a4da4abdb7d77b1220f836d09ec814359c0ec0239b8c7b9ff9e02f569d1b301ef67c4612d1de4f730f81c12c40cc063c5caa" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f0fc859d3bd195fbdc2d591e4cdac15179ec0f1dc821c11df1f0c1d26e6260aaa65b79fafacafd7d3ad61e600f250905f5878c87452897647a35b995bcadc3a3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "2620f687e8625f6a412460b42e2cef67634208ce10a0cbd4dff7044a41b7880077e9f8dc3b8d1216d3376a21e015b58fb279b521d83f9388c7382c8505590b9b" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "227e3aed8d2cb10b918fcb04f9de3e6d0a57e08476d93759cd7b2ed54a1cbf0239c528fb04bbf288253e601d3bc38b21794afef90b17094a182cac557745e75f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1a929901b09c25f27d6b35be7b2f1c4745131fdebca7f3e2451926720434e0db6e74fd693ad29b777dc3355c592a361c4873b01133a57c2e3b7075cbdb86f4fc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5fd7968bc2fe34f220b5e3dc5af9571742d73b7d60819f2888b629072b96a9d8ab2d91b82d0a9aaba61bbd39958132fcc4257023d1eca591b3054e2dc81c8200" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "dfcce8cf32870cc6a503eadafc87fd6f78918b9b4d0737db6810be996b5497e7e5cc80e312f61e71ff3e9624436073156403f735f56b0b01845c18f6caf772e6" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717273", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "02f7ef3a9ce0fff960f67032b296efca3061f4934d690749f2d01c35c81c14f39a67fa350bc8a0359bf1724bffc3bca6d7c7bba4791fd522a3ad353c02ec5aa8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727374", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "64be5c6aba65d594844ae78bb022e5bebe127fd6b6ffa5a13703855ab63b624dcd1a363f99203f632ec386f3ea767fc992e8ed9686586aa27555a8599d5b808f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f78585505c4eaa54a8b5be70a61e735e0ff97af944ddb3001e35d86c4e2199d976104b6ae31750a36a726ed285064f5981b503889fef822fcdc2898dddb7889a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717273747576", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e4b5566033869572edfd87479a5bb73c80e8759b91232879d96b1dda36c012076ee5a2ed7ae2de63ef8406a06aea82c188031b560beafb583fb3de9e57952a7e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727374757677", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e1b3e7ed867f6c9484a2a97f7715f25e25294e992e41f6a7c161ffc2adc6daaeb7113102d5e6090287fe6ad94ce5d6b739c6ca240b05c76fb73f25dd024bf935" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "85fd085fdc12a080983df07bd7012b0d402a0f4043fcb2775adf0bad174f9b08d1676e476985785c0a5dcc41dbff6d95ef4d66a3fbdc4a74b82ba52da0512b74" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717273747576777879", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "aed8fa764b0fbff821e05233d2f7b0900ec44d826f95e93c343c1bc3ba5a24374b1d616e7e7aba453a0ada5e4fab5382409e0d42ce9c2bc7fb39a99c340c20f0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7ba3b2e297233522eeb343bd3ebcfd835a04007735e87f0ca300cbee6d416565162171581e4020ff4cf176450f1291ea2285cb9ebffe4c56660627685145051c" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "de748bcf89ec88084721e16b85f30adb1a6134d664b5843569babc5bbd1a15ca9b61803c901a4fef32965a1749c9f3a4e243e173939dc5a8dc495c671ab52145" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "aaf4d2bdf200a919706d9842dce16c98140d34bc433df320aba9bd429e549aa7a3397652a4d768277786cf993cde2338673ed2e6b66c961fefb82cd20c93338f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c408218968b788bf864f0997e6bc4c3dba68b276e2125a4843296052ff93bf5767b8cdce7131f0876430c1165fec6c4f47adaa4fd8bcfacef463b5d3d0fa61a0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "76d2d819c92bce55fa8e092ab1bf9b9eab237a25267986cacf2b8ee14d214d730dc9a5aa2d7b596e86a1fd8fa0804c77402d2fcd45083688b218b1cdfa0dcbcb" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "72065ee4dd91c2d8509fa1fc28a37c7fc9fa7d5b3f8ad3d0d7a25626b57b1b44788d4caf806290425f9890a3a2a35a905ab4b37acfd0da6e4517b2525c9651e4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "64475dfe7600d7171bea0b394e27c9b00d8e74dd1e416a79473682ad3dfdbb706631558055cfc8a40e07bd015a4540dcdea15883cbbf31412df1de1cd4152b91" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "12cd1674a4488a5d7c2b3160d2e2c4b58371bedad793418d6f19c6ee385d70b3e06739369d4df910edb0b0a54cbff43d54544cd37ab3a06cfa0a3ddac8b66c89" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "60756966479dedc6dd4bcff8ea7d1d4ce4d4af2e7b097e32e3763518441147cc12b3c0ee6d2ecabf1198cec92e86a3616fba4f4e872f5825330adbb4c1dee444" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80818283", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "a7803bcb71bc1d0f4383dde1e0612e04f872b715ad30815c2249cf34abb8b024915cb2fc9f4e7cc4c8cfd45be2d5a91eab0941c7d270e2da4ca4a9f7ac68663a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828384", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b84ef6a7229a34a750d9a98ee2529871816b87fbe3bc45b45fa5ae82d5141540211165c3c5d7a7476ba5a4aa06d66476f0d9dc49a3f1ee72c3acabd498967414" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "fae4b6d8efc3f8c8e64d001dabec3a21f544e82714745251b2b4b393f2f43e0da3d403c64db95a2cb6e23ebb7b9e94cdd5ddac54f07c4a61bd3cb10aa6f93b49" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80818283848586", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "34f7286605a122369540141ded79b8957255da2d4155abbf5a8dbb89c8eb7ede8eeef1daa46dc29d751d045dc3b1d658bb64b80ff8589eddb3824b13da235a6b" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828384858687", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3b3b48434be27b9eababba43bf6b35f14b30f6a88dc2e750c358470d6b3aa3c18e47db4017fa55106d8252f016371a00f5f8b070b74ba5f23cffc5511c9f09f0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ba289ebd6562c48c3e10a8ad6ce02e73433d1e93d7c9279d4d60a7e879ee11f441a000f48ed9f7c4ed87a45136d7dccdca482109c78a51062b3ba4044ada2469" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80818283848586878889", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "022939e2386c5a37049856c850a2bb10a13dfea4212b4c732a8840a9ffa5faf54875c5448816b2785a007da8a8d2bc7d71a54e4e6571f10b600cbdb25d13ede3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e6fec19d89ce8717b1a087024670fe026f6c7cbda11caef959bb2d351bf856f8055d1c0ebdaaa9d1b17886fc2c562b5e99642fc064710c0d3488a02b5ed7f6fd" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "94c96f02a8f576aca32ba61c2b206f907285d9299b83ac175c209a8d43d53bfe683dd1d83e7549cb906c28f59ab7c46f8751366a28c39dd5fe2693c9019666c8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "31a0cd215ebd2cb61de5b9edc91e6195e31c59a5648d5c9f737e125b2605708f2e325ab3381c8dce1a3e958886f1ecdc60318f882cfe20a24191352e617b0f21" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "91ab504a522dce78779f4c6c6ba2e6b6db5565c76d3e7e7c920caf7f757ef9db7c8fcf10e57f03379ea9bf75eb59895d96e149800b6aae01db778bb90afbc989" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d85cabc6bd5b1a01a5afd8c6734740da9fd1c1acc6db29bfc8a2e5b668b028b6b3154bfb8703fa3180251d589ad38040ceb707c4bad1b5343cb426b61eaa49c1" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d62efbec2ca9c1f8bd66ce8b3f6a898cb3f7566ba6568c618ad1feb2b65b76c3ce1dd20f7395372faf28427f61c9278049cf0140df434f5633048c86b81e0399" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7c8fdc6175439e2c3db15bafa7fb06143a6a23bc90f449e79deef73c3d492a671715c193b6fea9f036050b946069856b897e08c00768f5ee5ddcf70b7cd6d0e0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "58602ee7468e6bc9df21bd51b23c005f72d6cb013f0a1b48cbec5eca299299f97f09f54a9a01483eaeb315a6478bad37ba47ca1347c7c8fc9e6695592c91d723" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "27f5b79ed256b050993d793496edf4807c1d85a7b0a67c9c4fa99860750b0ae66989670a8ffd7856d7ce411599e58c4d77b232a62bef64d15275be46a68235ff" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3957a976b9f1887bf004a8dca942c92d2b37ea52600f25e0c9bc5707d0279c00c6e85a839b0d2d8eb59c51d94788ebe62474a791cadf52cccf20f5070b6573fc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091929394", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "eaa2376d55380bf772ecca9cb0aa4668c95c707162fa86d518c8ce0ca9bf7362b9f2a0adc3ff59922df921b94567e81e452f6c1a07fc817cebe99604b3505d38" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c1e2c78b6b2734e2480ec550434cb5d613111adcc21d475545c3b1b7e6ff12444476e5c055132e2229dc0f807044bb919b1a5662dd38a9ee65e243a3911aed1a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293949596", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8ab48713389dd0fcf9f965d3ce66b1e559a1f8c58741d67683cd971354f452e62d0207a65e436c5d5d8f8ee71c6abfe50e669004c302b31a7ea8311d4a916051" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091929394959697", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "24ce0addaa4c65038bd1b1c0f1452a0b128777aabc94a29df2fd6c7e2f85f8ab9ac7eff516b0e0a825c84a24cfe492eaad0a6308e46dd42fe8333ab971bb30ca" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5154f929ee03045b6b0c0004fa778edee1d139893267cc84825ad7b36c63de32798e4a166d24686561354f63b00709a1364b3c241de3febf0754045897467cd4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293949596979899", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e74e907920fd87bd5ad636dd11085e50ee70459c443e1ce5809af2bc2eba39f9e6d7128e0e3712c316da06f4705d78a4838e28121d4344a2c79c5e0db307a677" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "bf91a22334bac20f3fd80663b3cd06c4e8802f30e6b59f90d3035cc9798a217ed5a31abbda7fa6842827bdf2a7a1c21f6fcfccbb54c6c52926f32da816269be1" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d9d5c74be5121b0bd742f26bffb8c89f89171f3f934913492b0903c271bbe2b3395ef259669bef43b57f7fcc3027db01823f6baee66e4f9fead4d6726c741fce" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "50c8b8cf34cd879f80e2faab3230b0c0e1cc3e9dcadeb1b9d97ab923415dd9a1fe38addd5c11756c67990b256e95ad6d8f9fedce10bf1c90679cde0ecf1be347" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0a386e7cd5dd9b77a035e09fe6fee2c8ce61b5383c87ea43205059c5e4cd4f4408319bb0a82360f6a58e6c9ce3f487c446063bf813bc6ba535e17fc1826cfc91" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1f1459cb6b61cbac5f0efe8fc487538f42548987fcd56221cfa7beb22504769e792c45adfb1d6b3d60d7b749c8a75b0bdf14e8ea721b95dca538ca6e25711209" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e58b3836b7d8fedbb50ca5725c6571e74c0785e97821dab8b6298c10e4c079d4a6cdf22f0fedb55032925c16748115f01a105e77e00cee3d07924dc0d8f90659" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b929cc6505f020158672deda56d0db081a2ee34c00c1100029bdf8ea98034fa4bf3e8655ec697fe36f40553c5bb46801644a627d3342f4fc92b61f03290fb381" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "72d353994b49d3e03153929a1e4d4f188ee58ab9e72ee8e512f29bc773913819ce057ddd7002c0433ee0a16114e3d156dd2c4a7e80ee53378b8670f23e33ef56" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c70ef9bfd775d408176737a0736d68517ce1aaad7e81a93c8c1ed967ea214f56c8a377b1763e676615b60f3988241eae6eab9685a5124929d28188f29eab06f7" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c230f0802679cb33822ef8b3b21bf7a9a28942092901d7dac3760300831026cf354c9232df3e084d9903130c601f63c1f4a4a4b8106e468cd443bbe5a734f45f" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "6f43094cafb5ebf1f7a4937ec50f56a4c9da303cbb55ac1f27f1f1976cd96beda9464f0e7b9c54620b8a9fba983164b8be3578425a024f5fe199c36356b88972" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3745273f4c38225db2337381871a0c6aafd3af9b018c88aa02025850a5dc3a42a1a3e03e56cbf1b0876d63a441f1d2856a39b8801eb5af325201c415d65e97fe" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c50c44cca3ec3edaae779a7e179450ebdda2f97067c690aa6c5a4ac7c30139bb27c0df4db3220e63cb110d64f37ffe078db72653e2daacf93ae3f0a2d1a7eb2e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8aef263e385cbc61e19b28914243262af5afe8726af3ce39a79c27028cf3ecd3f8d2dfd9cfc9ad91b58f6f20778fd5f02894a3d91c7d57d1e4b866a7f364b6be" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "28696141de6e2d9bcb3235578a66166c1448d3e905a1b482d423be4bc5369bc8c74dae0acc9cc123e1d8ddce9f97917e8c019c552da32d39d2219b9abf0fa8c8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "2fb9eb2085830181903a9dafe3db428ee15be7662224efd643371fb25646aee716e531eca69b2bdc8233f1a8081fa43da1500302975a77f42fa592136710e9dc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "66f9a7143f7a3314a669bf2e24bbb35014261d639f495b6c9c1f104fe8e320aca60d4550d69d52edbd5a3cdeb4014ae65b1d87aa770b69ae5c15f4330b0b0ad8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f4c4dd1d594c3565e3e25ca43dad82f62abea4835ed4cd811bcd975e46279828d44d4c62c3679f1b7f7b9dd4571d7b49557347b8c5460cbdc1bef690fb2a08c0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabac", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8f1dc9649c3a84551f8f6e91cac68242a43b1f8f328ee92280257387fa7559aa6db12e4aeadc2d26099178749c6864b357f3f83b2fb3efa8d2a8db056bed6bcc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3139c1a7f97afd1675d460ebbc07f2728aa150df849624511ee04b743ba0a833092f18c12dc91b4dd243f333402f59fe28abdbbbae301e7b659c7a26d5c0f979" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadae", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "06f94a2996158a819fe34c40de3cf0379fd9fb85b3e363ba3926a0e7d960e3f4c2e0c70c7ce0ccb2a64fc29869f6e7ab12bd4d3f14fce943279027e785fb5c29" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c29c399ef3eee8961e87565c1ce263925fc3d0ce267d13e48dd9e732ee67b0f69fad56401b0f10fcaac119201046cca28c5b14abdea3212ae65562f7f138db3d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "4cec4c9df52eef05c3f6faaa9791bc7445937183224ecc37a1e58d0132d35617531d7e795f52af7b1eb9d147de1292d345fe341823f8e6bc1e5badca5c656108" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "898bfbae93b3e18d00697eab7d9704fa36ec339d076131cefdf30edbe8d9cc81c3a80b129659b163a323bab9793d4feed92d54dae966c77529764a09be88db45" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ee9bd0469d3aaf4f14035be48a2c3b84d9b4b1fff1d945e1f1c1d38980a951be197b25fe22c731f20aeacc930ba9c4a1f4762227617ad350fdabb4e80273a0f4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3d4d3113300581cd96acbf091c3d0f3c310138cd6979e6026cde623e2dd1b24d4a8638bed1073344783ad0649cc6305ccec04beb49f31c633088a99b65130267" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "95c0591ad91f921ac7be6d9ce37e0663ed8011c1cfd6d0162a5572e94368bac02024485e6a39854aa46fe38e97d6c6b1947cd272d86b06bb5b2f78b9b68d559d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "227b79ded368153bf46c0a3ca978bfdbef31f3024a5665842468490b0ff748ae04e7832ed4c9f49de9b1706709d623e5c8c15e3caecae8d5e433430ff72f20eb" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5d34f3952f0105eef88ae8b64c6ce95ebfade0e02c69b08762a8712d2e4911ad3f941fc4034dc9b2e479fdbcd279b902faf5d838bb2e0c6495d372b5b7029813" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7f939bf8353abce49e77f14f3750af20b7b03902e1a1e7fb6aaf76d0259cd401a83190f15640e74f3e6c5a90e839c7821f6474757f75c7bf9002084ddc7a62dc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "062b61a2f9a33a71d7d0a06119644c70b0716a504de7e5e1be49bd7b86e7ed6817714f9f0fc313d06129597e9a2235ec8521de36f7290a90ccfc1ffa6d0aee29" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f29e01eeae64311eb7f1c6422f946bf7bea36379523e7b2bbaba7d1d34a22d5ea5f1c5a09d5ce1fe682cced9a4798d1a05b46cd72dff5c1b355440b2a2d476bc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ec38cd3bbab3ef35d7cb6d5c914298351d8a9dc97fcee051a8a02f58e3ed6184d0b7810a5615411ab1b95209c3c810114fdeb22452084e77f3f847c6dbaafe16" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babb", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c2aef5e0ca43e82641565b8cb943aa8ba53550caef793b6532fafad94b816082f0113a3ea2f63608ab40437ecc0f0229cb8fa224dcf1c478a67d9b64162b92d1" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbc", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "15f534efff7105cd1c254d074e27d5898b89313b7d366dc2d7d87113fa7d53aae13f6dba487ad8103d5e854c91fdb6e1e74b2ef6d1431769c30767dde067a35c" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbd", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "89acbca0b169897a0a2714c2df8c95b5b79cb69390142b7d6018bb3e3076b099b79a964152a9d912b1b86412b7e372e9cecad7f25d4cbab8a317be36492a67d7" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e3c0739190ed849c9c962fd9dbb55e207e624fcac1eb417691515499eea8d8267b7e8f1287a63633af5011fde8c4ddf55bfdf722edf88831414f2cfaed59cb9a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8d6cf87c08380d2d1506eee46fd4222d21d8c04e585fbfd08269c98f702833a156326a0724656400ee09351d57b440175e2a5de93cc5f80db6daf83576cf75fa" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "da24bede383666d563eeed37f6319baf20d5c75d1635a6ba5ef4cfa1ac95487e96f8c08af600aab87c986ebad49fc70a58b4890b9c876e091016daf49e1d322e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f9d1d1b1e87ea7ae753a029750cc1cf3d0157d41805e245c5617bb934e732f0ae3180b78e05bfe76c7c3051e3e3ac78b9b50c05142657e1e03215d6ec7bfd0fc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "11b7bc1668032048aa43343de476395e814bbbc223678db951a1b03a021efac948cfbe215f97fe9a72a2f6bc039e3956bfa417c1a9f10d6d7ba5d3d32ff323e5" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b8d9000e4fc2b066edb91afee8e7eb0f24e3a201db8b6793c0608581e628ed0bcc4e5aa6787992a4bcc44e288093e63ee83abd0bc3ec6d0934a674a4da13838a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ce325e294f9b6719d6b61278276ae06a2564c03bb0b783fafe785bdf89c7d5acd83e78756d301b445699024eaeb77b54d477336ec2a4f332f2b3f88765ddb0c3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "29acc30e9603ae2fccf90bf97e6cc463ebe28c1b2f9b4b765e70537c25c702a29dcbfbf14c99c54345ba2b51f17b77b5f15db92bbad8fa95c471f5d070a137cc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3379cbaae562a87b4c0425550ffdd6bfe1203f0d666cc7ea095be407a5dfe61ee91441cd5154b3e53b4f5fb31ad4c7a9ad5c7af4ae679aa51a54003a54ca6b2d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3095a349d245708c7cf550118703d7302c27b60af5d4e67fc978f8a4e60953c7a04f92fcf41aee64321ccb707a895851552b1e37b00bc5e6b72fa5bcef9e3fff" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "07262d738b09321f4dbccec4bb26f48cb0f0ed246ce0b31b9a6e7bc683049f1f3e5545f28ce932dd985c5ab0f43bd6de0770560af329065ed2e49d34624c2cbb" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b6405eca8ee3316c87061cc6ec18dba53e6c250c63ba1f3bae9e55dd3498036af08cd272aa24d713c6020d77ab2f3919af1a32f307420618ab97e73953994fb4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9ca", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "7ee682f63148ee45f6e5315da81e5c6e557c2c34641fc509c7a5701088c38a74756168e2cd8d351e88fd1a451f360a01f5b2580f9b5a2e8cfc138f3dd59a3ffc" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1d263c179d6b268f6fa016f3a4f29e943891125ed8593c81256059f5a7b44af2dcb2030d175c00e62ecaf7ee96682aa07ab20a611024a28532b1c25b86657902" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcc", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "106d132cbdb4cd2597812846e2bc1bf732fec5f0a5f65dbb39ec4e6dc64ab2ce6d24630d0f15a805c3540025d84afa98e36703c3dbee713e72dde8465bc1be7e" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccd", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0e79968226650667a8d862ea8da4891af56a4e3a8b6d1750e394f0dea76d640d85077bcec2cc86886e506751b4f6a5838f7f0b5fef765d9dc90dcdcbaf079f08" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdce", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "521156a82ab0c4e566e5844d5e31ad9aaf144bbd5a464fdca34dbd5717e8ff711d3ffebbfa085d67fe996a34f6d3e4e60b1396bf4b1610c263bdbb834d560816" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1aba88befc55bc25efbce02db8b9933e46f57661baeabeb21cc2574d2a518a3cba5dc5a38e49713440b25f9c744e75f6b85c9d8f4681f676160f6105357b8406" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5a9949fcb2c473cda968ac1b5d08566dc2d816d960f57e63b898fa701cf8ebd3f59b124d95bfbbedc5f1cf0e17d5eaed0c02c50b69d8a402cabcca4433b51fd4" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b0cead09807c672af2eb2b0f06dde46cf5370e15a4096b1a7d7cbb36ec31c205fbefca00b7a4162fa89fb4fb3eb78d79770c23f44e7206664ce3cd931c291e5d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "bb6664931ec97044e45b2ae420ae1c551a8874bc937d08e969399c3964ebdba8346cdd5d09caafe4c28ba7ec788191ceca65ddd6f95f18583e040d0f30d0364d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "65bc770a5faa3792369803683e844b0be7ee96f29f6d6a35568006bd5590f9a4ef639b7a8061c7b0424b66b60ac34af3119905f33a9d8c3ae18382ca9b689900" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "ea9b4dca333336aaf839a45c6eaa48b8cb4c7ddabffea4f643d6357ea6628a480a5b45f2b052c1b07d1fedca918b6f1139d80f74c24510dcbaa4be70eacc1b06" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "e6342fb4a780ad975d0e24bce149989b91d360557e87994f6b457b895575cc02d0c15bad3ce7577f4c63927ff13f3e381ff7e72bdbe745324844a9d27e3f1c01" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3e209c9b33e8e461178ab46b1c64b49a07fb745f1c8bc95fbfb94c6b87c69516651b264ef980937fad41238b91ddc011a5dd777c7efd4494b4b6ecd3a9c22ac0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "fd6a3d5b1875d80486d6e69694a56dbb04a99a4d051f15db2689776ba1c4882e6d462a603b7015dc9f4b7450f05394303b8652cfb404a266962c41bae6e18a94" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "951e27517e6bad9e4195fc8671dee3e7e9be69cee1422cb9fecfce0dba875f7b310b93ee3a3d558f941f635f668ff832d2c1d033c5e2f0997e4c66f147344e02" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8eba2f874f1ae84041903c7c4253c82292530fc8509550bfdc34c95c7e2889d5650b0ad8cb988e5c4894cb87fbfbb19612ea93ccc4c5cad17158b9763464b492" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9da", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "16f712eaa1b7c6354719a8e7dbdfaf55e4063a4d277d947550019b38dfb564830911057d50506136e2394c3b28945cc964967d54e3000c2181626cfb9b73efd2" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c39639e7d5c7fb8cdd0fd3e6a52096039437122f21c78f1679cea9d78a734c56ecbeb28654b4f18e342c331f6f7229ec4b4bc281b2d80a6eb50043f31796c88c" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdc", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "72d081af99f8a173dcc9a0ac4eb3557405639a29084b54a40172912a2f8a395129d5536f0918e902f9e8fa6000995f4168ddc5f893011be6a0dbc9b8a1a3f5bb" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdd", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c11aa81e5efd24d5fc27ee586cfd8847fbb0e27601ccece5ecca0198e3c7765393bb74457c7e7a27eb9170350e1fb53857177506be3e762cc0f14d8c3afe9077" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcddde", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c28f2150b452e6c0c424bcde6f8d72007f9310fed7f2f87de0dbb64f4479d6c1441ba66f44b2accee61609177ed340128b407ecec7c64bbe50d63d22d8627727" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f63d88122877ec30b8c8b00d22e89000a966426112bd44166e2f525b769ccbe9b286d437a0129130dde1a86c43e04bedb594e671d98283afe64ce331de9828fd" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "348b0532880b88a6614a8d7408c3f913357fbb60e995c60205be9139e74998aede7f4581e42f6b52698f7fa1219708c14498067fd1e09502de83a77dd281150c" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "5133dc8bef725359dff59792d85eaf75b7e1dcd1978b01c35b1b85fcebc63388ad99a17b6346a217dc1a9622ebd122ecf6913c4d31a6b52a695b86af00d741a0" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "2753c4c0e98ecad806e88780ec27fccd0f5c1ab547f9e4bf1659d192c23aa2cc971b58b6802580baef8adc3b776ef7086b2545c2987f348ee3719cdef258c403" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b1663573ce4b9d8caefc865012f3e39714b9898a5da6ce17c25a6a47931a9ddb9bbe98adaa553beed436e89578455416c2a52a525cf2862b8d1d49a2531b7391" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "64f58bd6bfc856f5e873b2a2956ea0eda0d6db0da39c8c7fc67c9f9feefcff3072cdf9e6ea37f69a44f0c61aa0da3693c2db5b54960c0281a088151db42b11e8" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0764c7be28125d9065c4b98a69d60aede703547c66a12e17e1c618994132f5ef82482c1e3fe3146cc65376cc109f0138ed9a80e49f1f3c7d610d2f2432f20605" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "f748784398a2ff03ebeb07e155e66116a839741a336e32da71ec696001f0ad1b25cd48c69cfca7265eca1dd71904a0ce748ac4124f3571076dfa7116a9cf00e9" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3f0dbc0186bceb6b785ba78d2a2a013c910be157bdaffae81bb6663b1a73722f7f1228795f3ecada87cf6ef0078474af73f31eca0cc200ed975b6893f761cb6d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d4762cd4599876ca75b2b8fe249944dbd27ace741fdab93616cbc6e425460feb51d4e7adcc38180e7fc47c89024a7f56191adb878dfde4ead62223f5a2610efe" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "cd36b3d5b4c91b90fcbba79513cfee1907d8645a162afd0cd4cf4192d4a5f4c892183a8eacdb2b6b6a9d9aa8c11ac1b261b380dbee24ca468f1bfd043c58eefe" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9ea", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "98593452281661a53c48a9d8cd790826c1a1ce567738053d0bee4a91a3d5bd92eefdbabebe3204f2031ca5f781bda99ef5d8ae56e5b04a9e1ecd21b0eb05d3e1" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaeb", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "771f57dd2775ccdab55921d3e8e30ccf484d61fe1c1b9c2ae819d0fb2a12fab9be70c4a7a138da84e8280435daade5bbe66af0836a154f817fb17f3397e725a3" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "c60897c6f828e21f16fbb5f15b323f87b6c8955eabf1d38061f707f608abdd993fac3070633e286cf8339ce295dd352df4b4b40b2f29da1dd50b3a05d079e6bb" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebeced", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "8210cd2c2d3b135c2cf07fa0d1433cd771f325d075c6469d9c7f1ba0943cd4ab09808cabf4acb9ce5bb88b498929b4b847f681ad2c490d042db2aec94214b06b" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedee", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1d4edfffd8fd80f7e4107840fa3aa31e32598491e4af7013c197a65b7f36dd3ac4b478456111cd4309d9243510782fa31b7c4c95fa951520d020eb7e5c36e4ef" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "af8e6e91fab46ce4873e1a50a8ef448cc29121f7f74deef34a71ef89cc00d9274bc6c2454bbb3230d8b2ec94c62b1dec85f3593bfa30ea6f7a44d7c09465a253" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "29fd384ed4906f2d13aa9fe7af905990938bed807f1832454a372ab412eea1f5625a1fcc9ac8343b7c67c5aba6e0b1cc4644654913692c6b39eb9187ceacd3ec" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "a268c7885d9874a51c44dffed8ea53e94f78456e0b2ed99ff5a3924760813826d960a15edbedbb5de5226ba4b074e71b05c55b9756bb79e55c02754c2c7b6c8a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "0cf8545488d56a86817cd7ecb10f7116b7ea530a45b6ea497b6c72c997e09e3d0da8698f46bb006fc977c2cd3d1177463ac9057fdd1662c85d0c126443c10473" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b39614268fdd8781515e2cfebf89b4d5402bab10c226e6344e6b9ae000fb0d6c79cb2f3ec80e80eaeb1980d2f8698916bd2e9f747236655116649cd3ca23a837" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "74bef092fc6f1e5dba3663a3fb003b2a5ba257496536d99f62b9d73f8f9eb3ce9ff3eec709eb883655ec9eb896b9128f2afc89cf7d1ab58a72f4a3bf034d2b4a" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "3a988d38d75611f3ef38b8774980b33e573b6c57bee0469ba5eed9b44f29945e7347967fba2c162e1c3be7f310f2f75ee2381e7bfd6b3f0baea8d95dfb1dafb1" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "58aedfce6f67ddc85a28c992f1c0bd0969f041e66f1ee88020a125cbfcfebcd61709c9c4eba192c15e69f020d462486019fa8dea0cd7a42921a19d2fe546d43d" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "9347bd291473e6b4e368437b8e561e065f649a6d8ada479ad09b1999a8f26b91cf6120fd3bfe014e83f23acfa4c0ad7b3712b2c3c0733270663112ccd9285cd9" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "b32163e7c5dbb5f51fdc11d2eac875efbbcb7e7699090a7e7ff8a8d50795af5d74d9ff98543ef8cdf89ac13d0485278756e0ef00c817745661e1d59fe38e7537" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "1085d78307b1c4b008c57a2e7e5b234658a0a82e4ff1e4aaac72b312fda0fe27d233bc5b10e9cc17fdc7697b540c7d95eb215a19a1a0e20e1abfa126efd568c7" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "4e5c734c7dde011d83eac2b7347b373594f92d7091b9ca34cb9c6f39bdf5a8d2f134379e16d822f6522170ccf2ddd55c84b9e6c64fc927ac4cf8dfb2a17701f2" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafb", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "695d83bd990a1117b3d0ce06cc888027d12a054c2677fd82f0d4fbfc93575523e7991a5e35a3752e9b70ce62992e268a877744cdd435f5f130869c9a2074b338" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfc", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "a6213743568e3b3158b9184301f3690847554c68457cb40fc9a4b8cfd8d4a118c301a07737aeda0f929c68913c5f51c80394f53bff1c3e83b2e40ca97eba9e15" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfd", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "d444bfa2362a96df213d070e33fa841f51334e4e76866b8139e8af3bb3398be2dfaddcbc56b9146de9f68118dc5829e74b0c28d7711907b121f9161cb92b69a9" + }, + { + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe", + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "142709d62e28fcccd0af97fad0f8465b971e82201dc51070faa0372aa43e92484be1c1e73ba10906d5d1853db6a4106e0a7bf9800d373d6dee2d46d62ef2a461" + } +}; + +static int +tv(void) +{ + unsigned char *expected_out; + unsigned char *in; + unsigned char *key; + unsigned char *out; + size_t i = 0U; + size_t in_len; + + key = (unsigned char *) sodium_malloc(crypto_generichash_KEYBYTES_MAX); + out = (unsigned char *) sodium_malloc(crypto_generichash_BYTES_MAX); + expected_out = (unsigned char *) sodium_malloc(crypto_generichash_BYTES_MAX); + do { + assert(strlen(tests[i].key_hex) == 2 * crypto_generichash_KEYBYTES_MAX); + sodium_hex2bin(key, crypto_generichash_KEYBYTES_MAX, + tests[i].key_hex, strlen(tests[i].key_hex), + NULL, NULL, NULL); + assert(strlen(tests[i].out_hex) == 2 * crypto_generichash_BYTES_MAX); + sodium_hex2bin(expected_out, crypto_generichash_BYTES_MAX, + tests[i].out_hex, strlen(tests[i].out_hex), + NULL, NULL, NULL); + in_len = strlen(tests[i].in_hex) / 2; + in = (unsigned char *) sodium_malloc(in_len); + sodium_hex2bin(in, in_len, tests[i].in_hex, strlen(tests[i].in_hex), + NULL, NULL, NULL); + crypto_generichash(out, crypto_generichash_BYTES_MAX, + in, (unsigned long long) in_len, + key, crypto_generichash_KEYBYTES_MAX); + if (memcmp(out, expected_out, crypto_generichash_BYTES_MAX) != 0) { + printf("Test vector #%u failed\n", (unsigned int) i); + } + sodium_free(in); + } while (++i < (sizeof tests) / (sizeof tests[0])); + sodium_free(key); + sodium_free(out); + sodium_free(expected_out); + + return 0; +} + +int +main(void) +{ + unsigned char in[MAXLEN]; + unsigned char out[crypto_generichash_BYTES_MAX]; + unsigned char k[crypto_generichash_KEYBYTES_MAX]; + size_t h; + size_t i; + size_t j; + + tv(); + + for (h = 0; h < crypto_generichash_KEYBYTES_MAX; ++h) { + k[h] = (unsigned char) h; + } + + for (i = 0; i < MAXLEN; ++i) { + in[i] = (unsigned char) i; + crypto_generichash(out, 1 + i % crypto_generichash_BYTES_MAX, in, + (unsigned long long) i, k, + 1 + i % crypto_generichash_KEYBYTES_MAX); + for (j = 0; j < 1 + i % crypto_generichash_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + } + + memset(out, 0, sizeof out); + crypto_generichash(out, crypto_generichash_BYTES_MAX, in, + (unsigned long long) i, k, 0U); + for (j = 0; j < crypto_generichash_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + assert(crypto_generichash(guard_page, 0, + in, (unsigned long long) sizeof in, + k, sizeof k) == -1); + assert(crypto_generichash(guard_page, crypto_generichash_BYTES_MAX + 1, + in, (unsigned long long) sizeof in, + k, sizeof k) == -1); + assert(crypto_generichash(guard_page, (unsigned long long) sizeof in, + in, (unsigned long long) sizeof in, + k, crypto_generichash_KEYBYTES_MAX + 1) == -1); + + assert(crypto_generichash_bytes_min() > 0U); + assert(crypto_generichash_bytes_max() > 0U); + assert(crypto_generichash_bytes() > 0U); + assert(crypto_generichash_bytes() >= crypto_generichash_bytes_min()); + assert(crypto_generichash_bytes() <= crypto_generichash_bytes_max()); + assert(crypto_generichash_keybytes_min() > 0U); + assert(crypto_generichash_keybytes_max() > 0U); + assert(crypto_generichash_keybytes() > 0U); + assert(crypto_generichash_keybytes() >= crypto_generichash_keybytes_min()); + assert(crypto_generichash_keybytes() <= crypto_generichash_keybytes_max()); + assert(strcmp(crypto_generichash_primitive(), "blake2b") == 0); + assert(crypto_generichash_bytes_min() + == crypto_generichash_blake2b_bytes_min()); + assert(crypto_generichash_bytes_max() + == crypto_generichash_blake2b_bytes_max()); + assert(crypto_generichash_bytes() == crypto_generichash_blake2b_bytes()); + assert(crypto_generichash_keybytes_min() + == crypto_generichash_blake2b_keybytes_min()); + assert(crypto_generichash_keybytes_max() + == crypto_generichash_blake2b_keybytes_max()); + assert(crypto_generichash_keybytes() + == crypto_generichash_blake2b_keybytes()); + assert(crypto_generichash_blake2b_saltbytes() > 0U); + assert(crypto_generichash_blake2b_personalbytes() > 0U); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/generichash.exp b/components/espressif__libsodium/libsodium/test/default/generichash.exp new file mode 100644 index 0000000..ac46f32 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/generichash.exp @@ -0,0 +1,65 @@ +05 +5d8c +22221b +d4974470 +be8492fb36 +edc178279907 +26848f2ae0c2e6 +045cf1235112b9f6 +5110bad569356dfa6c +1339d95145bc8a33d3aa +3dbb39b4d57c5566808a88 +22378260939cee01022686a2 +e18b37abcead6cc520e6504dac +3cbb356604cf862e62ad2f534323 +44c41ba227b191961b475ec5875057 +0c7c9c3922d41a7b2b3b20f92685d560 +8508c01d19709bdd881866aa1f8c63ca06 +f6b2dddfbece6d7d52e114c7e5a97772e18d +d36b5af9591d0cd3747254e26bc6e1de5b6081 +f7f7ce69149418d7ec33327bd86e14bcca4b8ed7 +2c9aba9a56de21165753c4f3cee9310a9c8fe546b9 +ee5e08cee5fbbcb51900341bb30db6695920faecda6a +fe9ffb56dc5716b91bc7d77ce7b05e7cc39c31683bec91 +c500ae0f5bff0f1106ce104ae9c291add7207e0d8ebcb1ed +68e23d12000b387158afd6458d3bcef9c26936ca68b5c0f3d6 +220efa2c09f67dbb02aa623bbc0cb92107a30f53b633e78d4b44 +54df984b47e4bcd489d9c045c488743fac91c9b3e0cbcc37495fac +b4852cf66c6ce164c002bbb62ded0faeb4a39c39fdffb372ff14dd31 +d79cafb5565e7775616e1c9b09100d61fb71efaf25affcf2d480d2c980 +ae557883145e374adef583ba0550429d5cdd86b254c33bf52d02e070efda +9f53d28c0df7b327c2eb4c8a12c742829225b7f30fda7baf64135098fdb01b +a9f51bb7f6a3e9cdb96ce652c07d177962a348a9cced1b92f948187e59b44463 +f2960cf5fd57fc92f549cd5a2803147964f60e7703e1b8897c088cded74c7bd39f +89981acbb690eb03ed2a67510d1d85a1b4f9d496fdfe134550ae14146bb05fd5fedd +6d8245383fd7c418b46511339e711b9d4a0d1f5fdf6de45fdd3d0664164b7bf878a124 +1f0b6b083d524e0741710ddef499ce88f51083bb3ad80a1815cc57acf006436e9b6ad72b +fc35bfe34c915020bb8b44fa0a19933774eaaf61919780fd55564e085bc31646dfc1d426e9 +117d58f1f8cb2c036102686035975be90550795e5a0e3469a8f7a2cba9bc88961852b18c8ae3 +c679c950818729c799bb7f39cef2d89fa80a147817f379a073ef1ccafea5d369815c70373bf5be +d487ad2143024ee8c645a066c035b74abe3a11f1c9fcd738b154b8ca37134d74fb78c40d1a2274cf +2d3ee00828b0ccea6812b40f214fab6d4f23f7e74ae228115bcb208ced2d5e1cb9cdff41de912af7a8 +a697b26d4c4475e312288b98ae2ec4954d3c74c8e144c0ab518616ff9f52918a946fd765af75e761178c +f647bcba2a711f431d6d453aa7d75dcf5bb9ab6f8b83f89117230f633e7580f27c71c4f4c211cadd04f587 +1fc1d6a4db753e2f4fd1456b2b709dd70ad58547eeda9d5a55762b5cd4097a7a1bd73cc633ec27168ee65631 +1cfe0f63ab155379b4a1b5bf694a33635097b8e4b6dbd3b983d62454d36d7bf4550bece301abdd27b2dd76ca9f +73dee8a0a558e7b6f6eefe411280e253b05ef006d499849fea5d6a95f9141ee160322fff3a3f70e10c84025e02ce +edf9e706f4acae4f4bed72404f14458ba075d2b9d9a4a1ed46d1f1c5e23113a74cce9f7735432a922a3d8097f22c7a +95d5cd54c6722ac4335fa0ab38d388c9fd0baea48a9078605e400534ef38f13abb1d770da84b90b0256e1c1b64f54ba9 +fe6b85ee8b5eb7da035264ed46e6dcd948571018d1f6976de4102fcb4bb5f1422e7df1b5aaa5b6b56c5961966db29ead6e +499ab83c01e4bf74ea5036392f9f810eae8a066fff49e316e4288baccb2001efa24f64cef7bfae70c90f139b198e53ad87f1 +eac6c9d97264241a8adba22ee925438ed9787a547018608a10676a7594bc51c60294bd9159fbcada9022b44880a37c5b07c1b4 +0771e3ae24bbfe424800d4bae776fef3da1607990019e7c4b30bc8140061ebf0b64aad7b018a878d579caa67154b98a04402735e +d569e5f5fe197387451441911a2be2effa606dad39820af44cea056bd9d1499dde41fa1c6c3a0459d5866c944bec2ac83328953726 +68e523ded865c4d8318d61c312189a59597bbc3995e312e85137611af761a5f73508ac79e359edf729d4508830fc642b432f09185914 +601af664ae596166707244adbb4f704593b355c6a659c844d853c6647fb265cdbcea26ed43657251dec37f2d6453fa0ace55f22d303cb0 +703d8e552236b2090143444545f0a61a809d8ef9843bcf6883f61671fb31c8d6ac9fd373e7f9f79a0c72fa6a37dc655ba1fb01a5f41e36d1 +03896f594afd1bf97acb862106eb05a1d8b54ec08d184812a79f4dc7b287a7486e60927b6c23e5f51fcbc94798648b28fd13438300567bec95 +cc66a891768e95a2717b040c111996f14942f10f2475c33aa5f1c97476e6f8386733d6b21c16102d01ff1f715475f01099e1f19aa763238a38a9 +007aac8eae29e5bf2be1b54857f5fe80c324424a3273b46e55482fbc4ae1033df4a97016b60c81a5344abd6366f56d8cee2c2e94619418293990de +50c81e92605a6111ea4c7c602acfb3945d4c2631c8c08fa4b594134577f5c2ffcca90d48604162cfdb2a0bb40416ff9134a275461b829ff1b875f995 +661b7a1c70170aa7559aa82639fa65c1bdcfb5e336cb23b40a9edf5b4f6eeca1a176a9844da705cafb990dd94b9dc6194eb6b2de3eca9dbd255bb267a1 +9ff11c233aaf5e0242b0dbe6e110a42e58b86141ad0ef130fd2bb895700019782de66d435bf0a8d6f5eda5d7d1105e7a6f3ef17a9da8f9c16fc21075431a +bdd3d0fafe8ba2b29d1ac0b79aa46e249cc9d3a82d0f772d690637bbdd353722356658d00436ff5dd5239ab747979329345eb8c7ed11b7331456ae87350fcf +bd965bf31e87d70327536f2a341cebc4768eca275fa05ef98f7f1b71a0351298de006fba73fe6733ed01d75801b4a928e54231b38e38c562b2e33ea1284992fa +2fc6e69fa26a89a5ed269092cb9b2a449a4409a7a44011eecad13d7c4b0456602d402fa5844f1a7a758136ce3d5d8d0e8b86921ffff4f692dd95bdc8e5ff0052 diff --git a/components/espressif__libsodium/libsodium/test/default/generichash2.c b/components/espressif__libsodium/libsodium/test/default/generichash2.c new file mode 100644 index 0000000..b7e33e6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/generichash2.c @@ -0,0 +1,62 @@ + +#define TEST_NAME "generichash2" +#include "cmptest.h" + +int +main(void) +{ +#define MAXLEN 64 + crypto_generichash_state *st; + unsigned char in[MAXLEN]; + unsigned char out[crypto_generichash_BYTES_MAX]; + unsigned char k[crypto_generichash_KEYBYTES_MAX]; + size_t h, i, j; + + assert(crypto_generichash_statebytes() >= sizeof *st); + st = (crypto_generichash_state *) + sodium_malloc(crypto_generichash_statebytes()); + for (h = 0; h < crypto_generichash_KEYBYTES_MAX; ++h) { + k[h] = (unsigned char) h; + } + for (i = 0; i < MAXLEN; ++i) { + in[i] = (unsigned char) i; + if (crypto_generichash_init(st, k, + 1 + i % crypto_generichash_KEYBYTES_MAX, + 1 + i % crypto_generichash_BYTES_MAX) != 0) { + printf("crypto_generichash_init()\n"); + return 1; + } + crypto_generichash_update(st, in, i); + crypto_generichash_update(st, in, i); + crypto_generichash_update(st, in, i); + if (crypto_generichash_final(st, out, + 1 + i % crypto_generichash_BYTES_MAX) != 0) { + printf("crypto_generichash_final() should have returned 0\n"); + } + for (j = 0; j < 1 + i % crypto_generichash_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + if (crypto_generichash_final(st, out, + 1 + i % crypto_generichash_BYTES_MAX) != -1) { + printf("crypto_generichash_final() should have returned -1\n"); + } + } + + assert(crypto_generichash_init(st, k, sizeof k, 0U) == -1); + assert(crypto_generichash_init(st, k, sizeof k, + crypto_generichash_BYTES_MAX + 1U) == -1); + assert(crypto_generichash_init(st, k, crypto_generichash_KEYBYTES_MAX + 1U, + sizeof out) == -1); + assert(crypto_generichash_init(st, k, 0U, sizeof out) == 0); + assert(crypto_generichash_init(st, k, 1U, sizeof out) == 0); + assert(crypto_generichash_init(st, NULL, 1U, 0U) == -1); + assert(crypto_generichash_init(st, NULL, crypto_generichash_KEYBYTES, + 1U) == 0); + assert(crypto_generichash_init(st, NULL, crypto_generichash_KEYBYTES, + 0U) == -1); + + sodium_free(st); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/generichash2.exp b/components/espressif__libsodium/libsodium/test/default/generichash2.exp new file mode 100644 index 0000000..5ee6f60 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/generichash2.exp @@ -0,0 +1,64 @@ +05 +22a8 +287a9d +d8eeab1c +d4ce34973f +584f7ac46f0c +32c848bb67545b +8438e21361bca125 +27a6faae998b4fabb4 +508c05a4f2daee150bad +68c886c97dce370e8c72fa +d41e90824ace31ba7bf512ac +6e0d7a1e2b92a68e45ea867895 +1fc5ee8715312db38da9066152a5 +3138504ba58fcd56c62752bc98a6d2 +b689ecd5357cb5276007627fbdf4082e +afe251881beb8b9dfa3d4f76aafc7b2995 +980eaa215cb0911027c5564db809bb8ac0a1 +56048436883efdfc8feaa239d960fa5ce24d42 +fce905b6d57fd841f58899a77887a4988e6aa2d1 +6f7afd81d24ccf4d98188b71bdbb7e6c637620879b +50406b4c37b48621505942b35dff30a75f7d2868146b +32c21792e18e7a79a4a20ef291721d7eab4e4cf99fbe79 +4b9d9ac5dbfb825acd87588667e6683e0fde4cdcd0a532f9 +2b55a3ebb461623e5de4fbacfb8b26819cfa8adeb094c8c13b +4c7d261780b25a864a008352ad64d1ae7fc21d608317813cf63f +f0ca06b8e12c48f1511d0991ba562f06dbe6ba6d5e18280224cc6a +838a5f7056bfbca65a245796dd3510cb07ff1614b44989d91ac650b2 +a58a8da276577160441f8b9e9c52a041b7caf7cd316acc506f620ab0e1 +e03940a7231049ff2b86c47a28e4951f105d2a3aa3421190fe0ed6aa4ad6 +a7af977c0b34294b1a03d0cc2dcf6eb72f9a32721c3f70128384aeb1f56047 +0e5625d74ada70b8a3b23ca76894e9a0f9dee88f5e3e370e27ad25061ea9dd6f +775fd9257b265997a16557a445985091798af60e68d06e3ae8e2e886d23ed12f6e +852e8d4208166a990e215ed06b86c708f491e014584ac9b08f97f24d9f08a84c8e83 +fbdca0db9a933fcffcce2ae694d7e16e7571b100564fcb3d69cec82ea42f254a493a32 +50530ae5eb9780f3fafc5d179f7b363a0d69314a8545d68588b5fec28c8e8d1a011857f6 +5eb71553ff1ac4aba3f84faeb70281c738e3428aae68edc9842ebf55ffd7184a015e323445 +39b279c6d9cca89f8052f953abf71041faf3491b2b965cef503d715e8bf339e02a58fd0e0fba +e315bef5f4918e881dc8d39d3c6b3948c2ea8e21ac00ee7c7ab875a53e194add0c3d9b8bcba5b2 +4e950f0e1da3111d054136fbdf10b4b88b20de6ad0c6bd5024a5e0a8b4cd7059685c0b663a00cbfa +b1ed8d99fd62a4f504ecdd58a01759a85932a7783f88f314cdca5019e05063dcc1fcb3c39b8c07758e +e4d78e734b0cb5bbd83e22bc67f97bbc8a3644f789f6c26a3ec2fe72c75b4d48a3bc000e6f2f2f0726fe +162e01beb796433a2771eab54611fc93677ed12c73a93ea4d75e148bec7ab14b3e31ab7f395456fb2b47ab +759c30631fd52e80a22f0614125dcd136287db65079908b75fb5b03be1cdf6dd0a1c9de0cc759cdd82c33758 +af2992acdaf0908f03a2025854de6446123c919b1e24db711df6cb070091343b4e6f5b2716c20c2547f50f1fde +b833064955778a611fe41a9f1a2de730a16fb4e61a7e2fb67425ce199101d4e71dd7b0c731ea4188e9cc30e9bc52 +e546ee327168d9b4e0d73d9a043f9ef03f880bc8aee91b0923704eb7361ac916b00f5c71c872e2f911a77ef76704b5 +83d86f056729fa1a6e1d3fe8c3d2ebe42b327025747f2e6ba923d2b7b893e31571839937222852033844e585b17d462f +5d70402524fbef569552a3ff6854087e090ff9ac9ea03aba92cf9f33a28845fa6a1631090dca10e05cdd3341b391a15fcf +64f4d3ebf0717900f7c04512d1e18f9985975991d4254d76c4e2ee02c0edd6f912f715991984731b808b8370be1f201e53bf +7d45eae6626dfc9ec3591764b8c39c72ca67e6c1893ab590963a75922719937d1d0ff188a510ffbdf9c777a4d565b3683cbf38 +68e007db5067874548c0d12a9ca709221f9bd352e3eb9847fde6c5de4a8550f4b85b67fe4e5aad70626ebb27d71e5b528effb2e6 +b0dc4dc0bd0d41a8ccfa45a127542079bc4e6f63a63863a9ce21f44481d23eff1060ea03851759b9317209405d5b7cc4387cc2759b +adf6a9df484e93eb3a6113c3fd68a49b2166878fc652833c9cbef3fd8dd281d385ad0374bc25bc865b216ca395e21c30b9eda1d58a8d +f1df9bc169323da338daa8a94867db96a1a2a6feb26569198fb4591ae602ba6f766a879e745d71e93b6cb8886b914f2bf4aa55d4c48045 +0c7446078a5077f33bba1ebfad60bbf1b1df47aab2eb3f3f3274ce56ead7800cf095af8208b6d570c4c832fe33227bbbc0842a13e1e82ad9 +accd0b4682e56698ecc55a60a8db8b3f950b6bffc5a1d160daf6ca25e13e3b4983ced5903df0bdc21f70c2ec5adb1a2ec9617df645cdd17ac9 +b787bae190ff2608eb383e0299cc10d6b7232de67ab74285e7bfa933d79f91226066537d74a9d40140d7b1683c2d42cd1935f6430cc554db2b69 +d09b717a0c80f581c07b8813e0ae79cec2188f77122f7477954610655a20420f13eb1b68cacde8c1fdf7a9a398efa72f40c85f0122812eaa33aba0 +87fff156d9895917468e92848fdcfacc134ca3bfc7fce484bd6db41c682ee2ee47151df0fa863d5641633d908c0328e6cbe080e80d8293530ffd2c4f +1b17b2c0e7afcd224ec9bbe9ce9a13a00bd0a336b863f1b4d5304043778244323bd23fb6154a2e1e94aa48f6ff0e12787a50ca09e9e72ece9e038f6218 +23ac1ccd5e7df51b65b284650158d662e7ef51ebae01b879f39cec484b688c792f8e854bd8ca31ffe8796d28f10e49ab402dab47878a21cb95556dc32b0a +f8f5323ebcc28bf927e72d342b5b70d80ba67794afb4c28debad21b0dae24c7a9252e862eb4b83bea6d9c0bb7c108983c987f13d73f250c7f14483f0454a24 +55b97ca594d68ccf69a0a93fe7fa4004c7e2947a8cac4ca4a44e17ac6876f472e3f221b341a28004cd35a79cfad7fabb9378ce5af03e4c0445ebbe9540943bbd diff --git a/components/espressif__libsodium/libsodium/test/default/generichash3.c b/components/espressif__libsodium/libsodium/test/default/generichash3.c new file mode 100644 index 0000000..ec86b35 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/generichash3.c @@ -0,0 +1,176 @@ + +#define TEST_NAME "generichash3" +#include "cmptest.h" + +int +main(void) +{ +#define MAXLEN 64 + crypto_generichash_blake2b_state st; + unsigned char salt[crypto_generichash_blake2b_SALTBYTES] + = { '5', 'b', '6', 'b', '4', '1', 'e', 'd', + '9', 'b', '3', '4', '3', 'f', 'e', '0' }; + unsigned char personal[crypto_generichash_blake2b_PERSONALBYTES] + = { '5', '1', '2', '6', 'f', 'b', '2', 'a', + '3', '7', '4', '0', '0', 'd', '2', 'a' }; + unsigned char in[MAXLEN]; + unsigned char out[crypto_generichash_blake2b_BYTES_MAX]; + unsigned char k[crypto_generichash_blake2b_KEYBYTES_MAX]; + size_t h; + size_t i; + size_t j; + + assert(crypto_generichash_blake2b_statebytes() >= sizeof st); + for (h = 0; h < crypto_generichash_blake2b_KEYBYTES_MAX; ++h) { + k[h] = (unsigned char) h; + } + + for (i = 0; i < MAXLEN; ++i) { + in[i] = (unsigned char) i; + crypto_generichash_blake2b_init_salt_personal( + &st, k, 1 + i % crypto_generichash_blake2b_KEYBYTES_MAX, + 1 + i % crypto_generichash_blake2b_BYTES_MAX, salt, personal); + crypto_generichash_blake2b_update(&st, in, (unsigned long long) i); + crypto_generichash_blake2b_final( + &st, out, 1 + i % crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < 1 + i % crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + } + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_init_salt_personal( + &st, k, 0U, crypto_generichash_blake2b_BYTES_MAX, salt, personal); + crypto_generichash_blake2b_update(&st, in, MAXLEN); + crypto_generichash_blake2b_final(&st, out, + crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_init_salt_personal( + &st, NULL, 1U, crypto_generichash_blake2b_BYTES_MAX, salt, personal); + crypto_generichash_blake2b_update(&st, in, MAXLEN); + crypto_generichash_blake2b_final(&st, out, + crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_init_salt_personal( + &st, k, crypto_generichash_blake2b_KEYBYTES_MAX, + crypto_generichash_blake2b_BYTES_MAX, NULL, personal); + crypto_generichash_blake2b_update(&st, in, MAXLEN); + crypto_generichash_blake2b_final(&st, out, + crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_init_salt_personal( + &st, k, crypto_generichash_blake2b_KEYBYTES_MAX, + crypto_generichash_blake2b_BYTES_MAX, salt, NULL); + crypto_generichash_blake2b_update(&st, in, MAXLEN); + crypto_generichash_blake2b_final( + &st, out, crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_salt_personal( + out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, + k, 0U, salt, personal); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_salt_personal( + out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, + NULL, 0U, salt, personal); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_salt_personal( + out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, + k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, personal); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_salt_personal( + out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, + k, crypto_generichash_blake2b_KEYBYTES_MAX, NULL, personal); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + memset(out, 0, sizeof out); + crypto_generichash_blake2b_salt_personal( + out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN, + k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, NULL); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + assert(crypto_generichash_blake2b_salt_personal + (guard_page, 0, + in, (unsigned long long) sizeof in, + k, sizeof k, NULL, NULL) == -1); + assert(crypto_generichash_blake2b_salt_personal + (guard_page, crypto_generichash_BYTES_MAX + 1, + in, (unsigned long long) sizeof in, + k, sizeof k, NULL, NULL) == -1); + assert(crypto_generichash_blake2b_salt_personal + (guard_page, (unsigned long long) sizeof in, + in, (unsigned long long) sizeof in, + k, crypto_generichash_KEYBYTES_MAX + 1, NULL, NULL) == -1); + + crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES, + NULL, personal); + crypto_generichash_blake2b_update(&st, in, MAXLEN); + crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES, + salt, NULL); + crypto_generichash_blake2b_update(&st, in, MAXLEN); + crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX); + for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + + assert(crypto_generichash_blake2b_init_salt_personal + (&st, k, sizeof k, 0, NULL, NULL) == -1); + assert(crypto_generichash_blake2b_init_salt_personal + (&st, k, sizeof k, crypto_generichash_blake2b_BYTES_MAX + 1, NULL, NULL) == -1); + assert(crypto_generichash_blake2b_init_salt_personal + (&st, k, crypto_generichash_blake2b_KEYBYTES_MAX + 1, sizeof out, NULL, NULL) == -1); + + assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES, + NULL, personal) == 0); + assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES, + salt, NULL) == 0); + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/generichash3.exp b/components/espressif__libsodium/libsodium/test/default/generichash3.exp new file mode 100644 index 0000000..75a62d4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/generichash3.exp @@ -0,0 +1,75 @@ +ba +6139 +3a1666 +5797e9d0 +834a26efe6 +d7e9e862bbce +40d8b84c374750 +276789189244cf04 +16f73ffe0673cc9992 +b3835bfaf6eb71d94078 +8c624e844d34f4a59f34cc +e0a394962413ad09975df3cf +47f043c3aacb501f97e0458ae3 +b4a11f2fb72a7e6f96fdacf98d49 +f434079e9adeb244047cb6855f9854 +5fbe885c4b2d4e0d78dc5905622a277a +e262ba3e2ab76efdf83513108e3b987d1b +add93dde78d32e77bc039c34a49043f19d26 +093842ac10e2eb1237ddc9ca9e7990cf397772 +09e7f6a0e2ea4888f1dbf6562effd1561c65029c +bd33a9ec914f5b81864a49184338e4062d6c6b2b2e +8dc46295235d94f5881d429a5ad47f9db9e35cf8c6b3 +ba5df554dca7ac1cba4889fa88adf3070fbf4ab5d187b5 +1ff84715e71c66214d271d421395fb6166db97b1d47ed697 +75a0d227c70549f5b0c933b7b21f151355bd47e04b6085c91f +a32a5c9439a0fa771dcbe7f338b5dcef62a754edc4952614d6f0 +53a87de519cdcc7f64730d58bce6baaf7b44c5c428a4611a208ad4 +5e5ad8f0c4f083f9b7a5154d9c0dfd0f3d2fce94cf54fc215450314a +9c76b9e63c77e6564b1e5111c2fb140046e1e5a4f900a7cfc2bac3fcfa +bb919251ca310eb9b994e5d7883bc9fa2144b59b8d5d940677b7130ac777 +faa492a66f08ef0c7adb868fcb7b523aedd35b8ff1414bd1d554794f144474 +9b273ebe335540b87be899abe169389ed61ed262c3a0a16e4998bbf752f0bee3 +1e0070b92429c151b33bdd1bb4430a0e650a3dfc94d404054e93c8568330ecc505 +e3b64149f1b76231686d592d1d4af984ce2826ba03c2224a92f95f9526130ce4eb40 +5f8e378120b73db9eefa65ddcdcdcb4acd8046c31a5e47f298caa400937d5623f1394b +74c757a4165a1782c933e587353a9fd8f6d7bf26b7f51b52c542747030bfb3d560c2e5c2 +2d5ee85cc238b923806dd98db18919d1924f2340ec88917d4ce1799cbfd5f2cb9df99db2e1 +c93ff727e6f9822efec0a77eed0025c0eff19127bf8746b7c71c2a098f57cef02febb86a1e6c +adfb6d7ba13779a5dd1bbf268e400f4156f0f5c9d5b670ff539e1d9c1a63373416f3001f338407 +3a6900e58a448887d77c5911e4bdde620e64f25b2d71723fa60f7cb3efa7c320b6153bdbc3287949 +413eb0fd379b32dd88e82242a87cc58ce3e64c72352387a4c70f92ee5c8d23fa7ecd86f6df170a32d2 +92d0d3cacc3e25628caf6f2c4cd50d25d154ac45098f531d690230b859f37cfe089eb169f76bba72a3ff +92f6ccc11a9a3bee520b17e0cddc4550c0e9cf47ddd9a6161284259ffb161c1d0675b505cb1066872768e8 +a3cd675804e6be7f120138a9eaadcd56bb7763d1c046e87fe0d358c8276b0d24621f46c60b46e397933b75b4 +304a1af53cbdd6486b8419d1ebd5e9528c540d8dc46a10be49067f46a0617229577015d776783f702b2954df43 +d8a6358970446453ac0c82c758644ab68989b5b4f06f9768807ce0c5f2a0dbac1e8450f4e3a02deecf7b54b6a45d +1264b8dee9ac4aa8de69a43ada95cc95f20230f33836d4a1db8c2466ab38361686e5ac282025ccc2e0f6a1cd98a4dd +7eed787abaa7f4e8b8aa3090f0676201cfbaaf350899661cdd5216ac0b5cd874443f5c0688ffd7ca1ccbfe1ca7e1a3f5 +8907f0218585167962a8e8213559a643dd03c2bf1a7a5ad3e3bc5f88c0ff1532ee8cd29880e7e0e68da22a5798aef27cc5 +12dea17b0733e5060751b1115e10c3d4b2f4583bcd009d9f1f42ec23d4a6a0df1185d3abbdbe86de08569e70583d6de1c1fe +8ff75e91f1de547dc3a25472db2f51f5910a290c449603da54207b5e39bd735d240ec913b52df90709b5d29357971d6c341452 +4a3b16b12400f38e74778efc3a4caa52ec6fdf6b0180a5bfac9189e52e162c10e8911a54ab33e2b389ee1949e58edaa119e2b2b9 +c9943e7186fdc9bbfa1d7087fa7086babe6fcf95a6196d1772187854071304e2f1fff39e6e6f48f76addb16d5c00249e0523aac91f +0297f16fdd34add9cc87b4adf816525b590ba08ac733c43f8d225d194df4f9c83b4dce617be51e25b5f6c80dff249f27c707de20e422 +576bb891eab9930998e2e73b5d0498e3c5f040f8dec9397a8c7a622c17de01fee7cc936e3bd4de1f7fd8b31dea9e70c65462bbb5dc7b50 +9416a57ae7c8c51c6e008f940fe06d8ebc02c350c19a2f71583a6d260b085670d73a95248fef0f4cae5292ba7db1189a7cd9c51122ba7913 +ea644b9051cca5eee8868a553e3f0f4e14739e1555474151156e10578256b288a233870dd43a380765400ea446df7f452c1e03a9e5b6731256 +f99cc1603de221abc1ecb1a7eb4bbf06e99561d1cc5541d8d601bae2b1dd3cbe448ac276667f26de5e269183a09f7deaf35d33174b3cc8ad4aa2 +ee2be1ec57fdac23f89402a534177eca0f4b982a4ed2c2e900b6a79e1f47a2d023eff2e647baf4f4c0da3a28d08a44bc780516974074e2523e6651 +9cda001868949a2bad96c5b3950a8315e6e5214d0b54dcd596280565d351806ef22cf3053f63623da72fcad9afa3896641658632334c9ec4f644c984 +c6d6722a916651a8671383d8260873347d9c248696b4cb3dac4dea9ba57ed971127cb18e44211d7e14177ace248b3c6e0785356ee261ebdc6ef0faf143 +5dd258a3e7505bc6b9776b0df25676a1c19e2c8258c7b5f2e361423523d96299eb6827bc7c27e7bca2d2b59d717c2ebcb05e6dcaa32289d96fae9a4077ef +19c14de35fe19c92cc0e624280e4136355d4cfa9a0a98b090c4b06f5665021920725852ff1f566b0c8c37157b25fb9f947a2e70b40577a17860a0732c170ac +5fcdcc02be7714a0dbc77df498bf999ea9225d564adca1c121c9af03af92cac8177b9b4a86bcc47c79aa32aac58a3fef967b2132e9352d4613fe890beed2571b +1afc8ec818bef0a479d2b4cac81d40a52cafa27f6d80c42fc23cbaf4141882ab59ab1101922fcb6e707ef2f61efd07cce5d09094e6bee420b1b96998c7cee96d +1afc8ec818bef0a479d2b4cac81d40a52cafa27f6d80c42fc23cbaf4141882ab59ab1101922fcb6e707ef2f61efd07cce5d09094e6bee420b1b96998c7cee96d +5789f474edd5206ededaccfc35e7dd3ed730748125b5395abf802b2601126b19b109a1db67556945bc79bb25e1ab59610599d155070e0e04354f11a6a5d6f3ac +e78efc663a5547c089f2b3b08973c974c4bfd365eac18b80c68bdb3b1ba4554b54d6b8465a68a3b9aa0bc020621f16efd5b8dd8c7c01ed9ee3ec5544aae465ff +1afc8ec818bef0a479d2b4cac81d40a52cafa27f6d80c42fc23cbaf4141882ab59ab1101922fcb6e707ef2f61efd07cce5d09094e6bee420b1b96998c7cee96d +1afc8ec818bef0a479d2b4cac81d40a52cafa27f6d80c42fc23cbaf4141882ab59ab1101922fcb6e707ef2f61efd07cce5d09094e6bee420b1b96998c7cee96d +fb4e2ad6b7fe6afd2ba06d5c1d79379c5bf10e336a35c89a1aaf408a805171716e0635a5b1d18190131e15b6888510bcb3e3752b050f892a09dbbde60b051495 +5789f474edd5206ededaccfc35e7dd3ed730748125b5395abf802b2601126b19b109a1db67556945bc79bb25e1ab59610599d155070e0e04354f11a6a5d6f3ac +e78efc663a5547c089f2b3b08973c974c4bfd365eac18b80c68bdb3b1ba4554b54d6b8465a68a3b9aa0bc020621f16efd5b8dd8c7c01ed9ee3ec5544aae465ff +4f9875a42ba0da8ae3448d2d62b1ff51be672eb1b8a1b0fa5bcd5334c861eff06b5903d672d318fd04e0ef94ddd37eca6d4ad2051a36a0236dc4cc09a5a44358 +ec9f272db92d1fa99324115f34cda8b4690ad029c1df36986cf9e1f844d8fdeca8e8e8311620ad24cbbfa12eccb676b979565405c8e2e20a2e4f18fb27c93d76 diff --git a/components/espressif__libsodium/libsodium/test/default/hash.c b/components/espressif__libsodium/libsodium/test/default/hash.c new file mode 100644 index 0000000..60d3527 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/hash.c @@ -0,0 +1,47 @@ + +#define TEST_NAME "hash" +#include "cmptest.h" + +static unsigned char x[] = "testing\n"; +static unsigned char x2[] = + "The Conscience of a Hacker is a small essay written January 8, 1986 by a " + "computer security hacker who went by the handle of The Mentor, who " + "belonged to the 2nd generation of Legion of Doom."; +static unsigned char h[crypto_hash_BYTES]; + +int +main(void) +{ + size_t i; + + crypto_hash(h, x, sizeof x - 1U); + for (i = 0; i < crypto_hash_BYTES; ++i) { + printf("%02x", (unsigned int) h[i]); + } + printf("\n"); + crypto_hash(h, x2, sizeof x2 - 1U); + for (i = 0; i < crypto_hash_BYTES; ++i) { + printf("%02x", (unsigned int) h[i]); + } + printf("\n"); + crypto_hash_sha256(h, x, sizeof x - 1U); + for (i = 0; i < crypto_hash_sha256_BYTES; ++i) { + printf("%02x", (unsigned int) h[i]); + } + printf("\n"); + crypto_hash_sha256(h, x2, sizeof x2 - 1U); + for (i = 0; i < crypto_hash_sha256_BYTES; ++i) { + printf("%02x", (unsigned int) h[i]); + } + printf("\n"); + + assert(crypto_hash_bytes() > 0U); + assert(strcmp(crypto_hash_primitive(), "sha512") == 0); + assert(crypto_hash_sha256_bytes() > 0U); + assert(crypto_hash_sha512_bytes() >= crypto_hash_sha256_bytes()); + assert(crypto_hash_sha512_bytes() == crypto_hash_bytes()); + assert(crypto_hash_sha256_statebytes() == sizeof(crypto_hash_sha256_state)); + assert(crypto_hash_sha512_statebytes() == sizeof(crypto_hash_sha512_state)); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/hash.exp b/components/espressif__libsodium/libsodium/test/default/hash.exp new file mode 100644 index 0000000..f26c0b0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/hash.exp @@ -0,0 +1,4 @@ +24f950aac7b9ea9b3cb728228a0c82b67c39e96b4b344798870d5daee93e3ae5931baae8c7cacfea4b629452c38026a81d138bc7aad1af3ef7bfd5ec646d6c28 +a77abe1ccf8f5497e228fbc0acd73a521ededb21b89726684a6ebbc3baa32361aca5a244daa84f24bf19c68baf78e6907625a659b15479eb7bd426fc62aafa73 +12a61f4e173fb3a11c05d6471f74728f76231b4a5fcd9667cef3af87a3ae4dc2 +71cc8123fef8c236e451d3c3ddf1adae9aa6cd9521e7041769d737024900a03a diff --git a/components/espressif__libsodium/libsodium/test/default/hash3.c b/components/espressif__libsodium/libsodium/test/default/hash3.c new file mode 100644 index 0000000..cfcb989 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/hash3.c @@ -0,0 +1,20 @@ + +#define TEST_NAME "hash3" +#include "cmptest.h" + +static unsigned char x[] = "testing\n"; +static unsigned char h[crypto_hash_BYTES]; + +int +main(void) +{ + size_t i; + + crypto_hash(h, x, sizeof x - 1U); + for (i = 0; i < crypto_hash_BYTES; ++i) { + printf("%02x", (unsigned int) h[i]); + } + printf("\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/hash3.exp b/components/espressif__libsodium/libsodium/test/default/hash3.exp new file mode 100644 index 0000000..df58217 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/hash3.exp @@ -0,0 +1 @@ +24f950aac7b9ea9b3cb728228a0c82b67c39e96b4b344798870d5daee93e3ae5931baae8c7cacfea4b629452c38026a81d138bc7aad1af3ef7bfd5ec646d6c28 diff --git a/components/espressif__libsodium/libsodium/test/default/index.html.tpl b/components/espressif__libsodium/libsodium/test/default/index.html.tpl new file mode 100644 index 0000000..cb7cb00 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/index.html.tpl @@ -0,0 +1,98 @@ + + + + + + + +

    +
    + + + diff --git a/components/espressif__libsodium/libsodium/test/default/kdf.c b/components/espressif__libsodium/libsodium/test/default/kdf.c new file mode 100644 index 0000000..dc9a247 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/kdf.c @@ -0,0 +1,71 @@ + +#define TEST_NAME "kdf" +#include "cmptest.h" + +static void +tv_kdf(void) +{ + unsigned char *master_key; + unsigned char *subkey; + char *context; + char hex[crypto_kdf_BYTES_MAX * 2 + 1]; + uint64_t i; + int ret; + + context = (char *) sodium_malloc(crypto_kdf_CONTEXTBYTES); + master_key = (unsigned char *) sodium_malloc(crypto_kdf_KEYBYTES); + + memcpy(context, "KDF test", sizeof "KDF test" - 1U); + for (i = 0; i < crypto_kdf_KEYBYTES; i++) { + master_key[i] = i; + } + subkey = (unsigned char *) sodium_malloc(crypto_kdf_BYTES_MAX); + for (i = 0; i < 10; i++) { + ret = crypto_kdf_derive_from_key(subkey, crypto_kdf_BYTES_MAX, + i, context, master_key); + assert(ret == 0); + sodium_bin2hex(hex, sizeof hex, subkey, crypto_kdf_BYTES_MAX); + printf("%s\n", hex); + } + sodium_free(subkey); + + for (i = 0; i < crypto_kdf_BYTES_MAX + 2; i++) { + subkey = (unsigned char *) sodium_malloc(crypto_kdf_BYTES_MAX); + if (crypto_kdf_derive_from_key(subkey, (size_t) i, + i, context, master_key) == 0) { + sodium_bin2hex(hex, sizeof hex, subkey, (size_t) i); + printf("%s\n", hex); + } else { + printf("Failure -- probably expected for output length=%u\n", + (unsigned int) i); + } + sodium_free(subkey); + } + + sodium_free(master_key); + sodium_free(context); + + assert(strcmp(crypto_kdf_primitive(), crypto_kdf_PRIMITIVE) == 0); + assert(crypto_kdf_BYTES_MAX > 0); + assert(crypto_kdf_BYTES_MIN <= crypto_kdf_BYTES_MAX); + assert(crypto_kdf_bytes_min() == crypto_kdf_BYTES_MIN); + assert(crypto_kdf_bytes_max() == crypto_kdf_BYTES_MAX); + assert(crypto_kdf_CONTEXTBYTES > 0); + assert(crypto_kdf_contextbytes() == crypto_kdf_CONTEXTBYTES); + assert(crypto_kdf_KEYBYTES >= 16); + assert(crypto_kdf_keybytes() == crypto_kdf_KEYBYTES); + assert(crypto_kdf_bytes_min() == crypto_kdf_blake2b_bytes_min()); + assert(crypto_kdf_bytes_max() == crypto_kdf_blake2b_bytes_max()); + assert(crypto_kdf_contextbytes() == crypto_kdf_blake2b_contextbytes()); + assert(crypto_kdf_keybytes() == crypto_kdf_blake2b_keybytes()); + + printf("tv_kdf: ok\n"); +} + +int +main(void) +{ + tv_kdf(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/kdf.exp b/components/espressif__libsodium/libsodium/test/default/kdf.exp new file mode 100644 index 0000000..4aa7694 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/kdf.exp @@ -0,0 +1,77 @@ +a0c724404728c8bb95e5433eb6a9716171144d61efb23e74b873fcbeda51d8071b5d70aae12066dfc94ce943f145aa176c055040c3dd73b0a15e36254d450614 +02507f144fa9bf19010bf7c70b235b4c2663cc00e074f929602a5e2c10a780757d2a3993d06debc378a90efdac196dd841817b977d67b786804f6d3cd585bab5 +1944da61ff18dc2028c3578ac85be904931b83860896598f62468f1cb5471c6a344c945dbc62c9aaf70feb62472d17775ea5db6ed5494c68b7a9a59761f39614 +131c0ca1633ed074986215b264f6e0474f362c52b029effc7b0f75977ee89cc95d85c3db87f7e399197a25411592beeeb7e5128a74646a460ecd6deb4994b71e +a7023a0bf9be245d078aed26bcde0465ff0cc0961196a5482a0ff4ff8b4015971e13611f50529cb408f5776b14a90e7c3dd9160a22211db64ff4b5c0b9953680 +50f49313f3a05b2e565c13feedb44daa675cafd42c2b2cf9edbce9c949fbfc3f175dcb738671509ae2ea66fb85e552394d479afa7fa3affe8791744796b94176 +13b58d6d69780089293862cd59a1a8a4ef79bb850e3f3ba41fb22446a7dd1dc4da4667d37b33bf1225dcf8173c4c349a5d911c5bd2db9c5905ed70c11e809e3b +15d44b4b44ffa006eeceeb508c98a970aaa573d65905687b9e15854dec6d49c612757e149f78268f727660dedf9abce22a9691feb20a01b0525f4b47a3cf19db +9aebba11c5428ae8225716369e30a48943be39159a899f804e9963ef78822e186c21fe95bb0b85e60ef03a6f58d0b9d06e91f79d0ab998450b8810c73ca935b4 +70f9b83e463fb441e7a4c43275125cd5b19d8e2e4a5d179a39f5db10bbce745a199104563d308cf8d4c6b27bbb759ded232f5bdb7c367dd632a9677320dfe416 +Failure -- probably expected for output length=0 +Failure -- probably expected for output length=1 +Failure -- probably expected for output length=2 +Failure -- probably expected for output length=3 +Failure -- probably expected for output length=4 +Failure -- probably expected for output length=5 +Failure -- probably expected for output length=6 +Failure -- probably expected for output length=7 +Failure -- probably expected for output length=8 +Failure -- probably expected for output length=9 +Failure -- probably expected for output length=10 +Failure -- probably expected for output length=11 +Failure -- probably expected for output length=12 +Failure -- probably expected for output length=13 +Failure -- probably expected for output length=14 +Failure -- probably expected for output length=15 +a529216624ef9161e4cf117272aafff2 +068bd6940b80c6cc2530a68c31d9f4e323 +0acf4f6c74a590c8a1c0997ec9a1a3f48b2a +ac17a37ce74c0efece75f9337de20795dbadcc +268214dc9477a2e3c1022829f934ab992a5a3d84 +33b76197b4531665e494760909eda1cc570e7da9bb +3d4efbc569ca7f858ad4f49c56b820986a406e6eebbc +983fea27520f507c40231f9557908f07c095bdf4a4ce5d +94d678717625e011995c7355f2092267dee47bf0722dd380 +198901896c4f51e74ffa8b2805415c6eaba5accfc85a6e6b34 +4ffabb81d49021f85ef5d2a713ab02ae86bc2e7d1522f5e077fe +eebc3d55b3f4fc8b64d2474063254da7db98e7398dfdd510e28075 +22c134b9d664e1bdb14dc309a936bf1512b19e4f5175642efb1a0df7 +4b179762bfc8e27a9e575113faa76247b9c046d6f22d5a02e2910a299b +abc45eb2b031307b8822c7e59a43f4108850c34a7445936bc848422251c4 +d6565bd3265b6373f4f6a6b6458e981006da5e9d532ce94ca4737e188995e9 +154b291f11196737f8b7f491e4ca11764e0227d34f94295408a869f007aa8618 +e9dd395570e09ebb523ffc6ba098a38b17bc4944f14bd3725bdd7edbd8bcff54fb +7248294d37159e85bacde68c7762a673794c91b811e05f4e3b9e3ecc82bfcf63a2cd +d060ee4d93f8de6d9ae60fca9596413455183a1f83c7a2381227cec8f7a217e4072f85 +20790290347b9b0f413a954f40e52e270b3b45417e96c8733161672188701c08dd76cc3d +7674188112a1ab8d3926d468be8e51d788ce4144bb20ff842034e4d1ddab3929a4f1a13a74 +a2ab1f980a47472d8a539f20410cc9bf143d941331ab2259ea73684c0608939c5b23e9cbcb3d +f4cfbe3050f15ebbaf8d2f3bf3a678c01fc21ee1f4be07d0744c7fbf4835ea9d9472a3d785c24c +66efa5dfe3efd4cc8ca25f2d622c97a20a192d7add965f26b002b7eb81aae4203c0e5f07fd945845 +ad5d8031055c96dc9db10285206d7edc38d3af85736df8a3b5fdd30a318e80c28d9b26c95a60fa3e68 +9107c8a57a2c9ca40158f33ca0bfb64c095d2f21ca98bb7138477599330a36cdfc2ae5751e370d0e024e +b0c190177358b955ebebc5e0b86ec91dde3b6f1982ea4d68ec5ec3bdd6527c362e5275600b263601c98452 +31bfaaad4adde0f87d87372e398c42cb7befe065ab2957ebb91ef9dc534b410783899b2e1e84221286f3bab4 +2258dd1f3e516cb8e3d1f6c45808573c365192f073698939721af8961a02a8bdd002a31fd239b9498663a01f27 +7c7a88016610493bb44a9432a88b50f97e2e94383972ff95da826692d96c52d82f86899b3561ec9c95a8b1bf3213 +3929dc7473be4c633be9e08801a8abd284dc0c6154c5c81a4c18259699dd86753c5e14fbd723be46ebb04f4ab3058c +30b720220015fa60daa69c83f9754d772b1b2dd12ab6baaa2f4edab458d4d251c1cddb8c4a554f3eb13969316b890fbd +33fa2412a5c3294d49e964419e96d043a2099a72b3351e3bed0f07e12255c95b509ea9bf2963a4c0fe9cc2314dbc44f673 +ca891d2c82a6a8f833dc1a05f190bab6de221307eab1dd2c88341d4d2537a2fc0056b0d04d8104fd3fe89e1ea20877893e81 +fd78ac89a64d03672ad99d663f2613d15277cda1636e334a1706b7211ff1f3a3b3d2e671e391c75e3d242c482ce7e1b8b427ed +36a6072743d3aafd3ee89344b9ef92cb58a2853ae92b20283520439fcb55afffd3d4b5e4e8c92a85d3cf74497bdcf68bbf1fcf93 +a90afcfaffec1105ad05fdaa9473fb5daf1bf8fb376b7326db46ef4c120c553188c69131933371d409eb56d66d5adca618e1dac65b +9b990d1fcddbdb5e5c7a48a6a2a666e02e7d4d4a814ece40660d99e1c02d5f023c56ae82526fc6dc8c933d0add92fc376efcddd55a42 +ec545dcf456d1b0907c07418a42bf2b3d668b4797ba6874bf0d563f5f429a820f02177dd4d05e639a06807c9619fee54ffe07712493543 +b0106957626894586682a275f69ed4533e2f94334cc0430394b68d82679aca00dd579e712bdd2d7f5bbce9a050269739bd8427b75b06027f +05751bfeebb480c9bca0d25d8197e2673845f405d7fb9793e29169ac19956c525f6e637f3d5ea50597b04342afed4ca16f988b4f21a34f1902 +7b4e4294d3f64085b5c09be73548f1f5cb5c6f04e57ce6cdd3077e2fb37640bf1ca0c6393b87d48a6b7e3e42628bd30fca132ded03ce51f71d9d +082d248862cbfd71a634769a4b1cf52a4af47ace5b9ea4d583ca52207efc7234a6d321788130cbdec122579ad03afe00bc68c9fb3f68dd0532a96f +a2b39b4428d981013e8a9c0e41b3eed504983fc18dc4b60332b1ab28b9705228147bdb95cc17889d5f0f9cfb7fd16f9d414b1a829346a8922e945b40 +efbf0f8bda1b9ef24fe389f1cf0c0c8a08bca03fc95badabb79a487d8ce1351683f59183aa6229f880d69ad60114ac128f69b2be250109972ab1f3fc3b +dfe0ba2a6de25fa06b47375e9d9cf6c6fa1493a8a2a81c28d6e09bc161057b445659db76e92e349ff44f34a2a9e3bcaa6b84b21bae56f1499c170ab81af0 +02f9cbdb10759314515b01379c474ad74a1b575137bd3949776dbcfc3e18060cb13ee1f6dcf86035768fc7be63e01de321cacbfade209900dd94273fd8e176 +06ae14308eeeda62a00cb6d5edf18d1707029515db98f472bbf0617419301b1d4f4f2ab65849446be46f87e1d31c6c74283897b9976f70d8a16253ac927e0d9f +Failure -- probably expected for output length=65 +tv_kdf: ok diff --git a/components/espressif__libsodium/libsodium/test/default/kdf_hkdf.c b/components/espressif__libsodium/libsodium/test/default/kdf_hkdf.c new file mode 100644 index 0000000..8fb07fe --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/kdf_hkdf.c @@ -0,0 +1,100 @@ + +#define TEST_NAME "kdf_hkdf" +#include "cmptest.h" + +static void +tv_kdf_hkdf(void) +{ + unsigned char *master_key; + size_t master_key_len = 66; + unsigned char *prk256; + size_t prk256_len = crypto_kdf_hkdf_sha256_KEYBYTES; + unsigned char *prk512; + size_t prk512_len = crypto_kdf_hkdf_sha512_KEYBYTES; + unsigned char *salt; + size_t salt_len = 77; + char *context; + size_t context_len = 88; + unsigned char *out; + size_t out_len = 99; + char hex[99 * 2 + 1]; + size_t i; + int ret; + + master_key = (unsigned char *) sodium_malloc(master_key_len); + prk256 = (unsigned char *) sodium_malloc(prk256_len); + prk512 = (unsigned char *) sodium_malloc(prk512_len); + salt = (unsigned char *) sodium_malloc(salt_len); + context = (char *) sodium_malloc(context_len); + out = (unsigned char *) sodium_malloc(out_len); + for (i = 0; i < master_key_len; i++) { + master_key[i] = i; + } + for (i = 0; i < salt_len; i++) { + salt[i] = (unsigned char) ~i; + } + for (i = 0; i < context_len; i++) { + context[i] = (unsigned char) (i + 111); + } + + printf("\nHKDF/SHA-256:\n"); + crypto_kdf_hkdf_sha256_keygen(prk256); + if (crypto_kdf_hkdf_sha256_extract(prk256, salt, salt_len, + master_key, master_key_len) != 0) { + printf("hkdf_sha256_extract() failed\n"); + } + printf("PRK: %s\n", sodium_bin2hex(hex, sizeof hex, prk256, prk256_len)); + + for (i = 0; i < out_len; i++) { + context[0] = i; + if (crypto_kdf_hkdf_sha256_expand(out, i, + context, context_len, prk256) != 0) { + printf("hkdf_sha256_expand() failed\n"); + } + printf("%s\n", sodium_bin2hex(hex, sizeof hex, out, i)); + } + + printf("\nHKDF/SHA-512:\n"); + crypto_kdf_hkdf_sha256_keygen(prk512); + if (crypto_kdf_hkdf_sha512_extract(prk512, salt, salt_len, + master_key, master_key_len) != 0) { + printf("hkdf_sha512_extract() failed\n"); + } + printf("PRK: %s\n", sodium_bin2hex(hex, sizeof hex, prk512, prk512_len)); + + for (i = 0; i < out_len; i++) { + context[0] = i; + if (crypto_kdf_hkdf_sha512_expand(out, i, + context, context_len, prk512) != 0) { + printf("hkdf_sha512_expand() failed\n"); + } + printf("%s\n", sodium_bin2hex(hex, sizeof hex, out, i)); + } + + sodium_free(out); + sodium_free(context); + sodium_free(salt); + sodium_free(master_key); + sodium_free(prk512); + sodium_free(prk256); + + assert(crypto_kdf_hkdf_sha512_bytes_min() == crypto_kdf_hkdf_sha512_BYTES_MIN); + assert(crypto_kdf_hkdf_sha512_bytes_max() == crypto_kdf_hkdf_sha512_BYTES_MAX); + assert(crypto_kdf_hkdf_sha512_keybytes() == crypto_kdf_hkdf_sha512_KEYBYTES); + + assert(crypto_kdf_hkdf_sha256_bytes_min() == crypto_kdf_hkdf_sha256_BYTES_MIN); + assert(crypto_kdf_hkdf_sha256_bytes_max() == crypto_kdf_hkdf_sha256_BYTES_MAX); + assert(crypto_kdf_hkdf_sha256_keybytes() == crypto_kdf_hkdf_sha256_KEYBYTES); + + assert(crypto_kdf_hkdf_sha256_KEYBYTES < crypto_kdf_hkdf_sha512_KEYBYTES); + + printf("tv_kdf_hkdf: ok\n"); +} + +int +main(void) +{ + tv_kdf_hkdf(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/kdf_hkdf.exp b/components/espressif__libsodium/libsodium/test/default/kdf_hkdf.exp new file mode 100644 index 0000000..57bd571 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/kdf_hkdf.exp @@ -0,0 +1,205 @@ + +HKDF/SHA-256: +PRK: 8c3725c0ea8e14106d8c342887ccd1218cc205acecd8095ae1efc099ec195e7e + +92 +2ebf +e29531 +8e563a1b +1fa58d77ee +50f1a4e15ba2 +4fb3724b7d4174 +d10853ceb46b11db +0fdf31228221242833 +98acb29e0993ec45f8cc +f4481a5e6d263d7bdc59ed +e620eb399337a9aace16765c +dbe8924351577475584731979f +371a112305dfd4264feb29c28a2f +d0a4b022f748c96141ec6b4aac6dcb +d2b38fe15e0f95bcff87822ff4df3d90 +e4bf8fde7d77899a5f85d68b039ee7119b +6766b092971ec2e616286925708c7ed6c9e9 +c4f9d36cddfe89b3194282a084881e6c429099 +49be5bc10c278f39b5be391a55e765560deca0ad +6e7d3031d08c5658a19a7d647dad0250418435febc +07cb6356aa7f978cbab87e7814fa90af9ce729aa2b3f +2ea1c08eb04c75806f80ccf0fca683a8998bb663e99993 +bb111699f6c32263474dc5569a6950c767e3b8201f838345 +e81e9086d3e035cc1a288fa521ce8b43b7f93d3d9bbac5085b +29c398bfafa672bc315e192110575691607118759f9e7669f3c5 +60840e8bc6d86733752787232a0321257c82d691722bfba07af839 +b0ec22e547dae3f04fc6ef146203604f0d604a8ce8a20fce229a688f +81ae6add3344b25d14115a38bc10553a75ce0a4be3aa8f3579299227f7 +242c65f95ee0bce1c5e1b01b1ff68e8634fac096edb18997dfd3baf3817d +14b5afe2cc0d8fe10e5359667b2b310365fba93d62f7fd3df2dddfc34c1de5 +24a79d4c0c69e0a524ca91f356e64ab40345973ba82ce68992dbdd16bf161cbe +3edbfc22f9a1e3a5c774cfec8fff3cc4febdfc61d98aecedf6a16eca0546316b56 +b8bad2b04b9b382f9ad2559afc33b8dece4a7fe9b8ac9d74557dfc51ed8949b78ee8 +1d01316d7767f068171f08a8c2f05d2cd571f623fd5fc9916b3476115aac9d7f635cb4 +a7c5763a3b678ee2fa05a57dab377b67e448a38f94531ce83bab9eff8035e105e8889b91 +ab6721825aefb2cb9f9d0ce5123882573abebe94404e0e3a923a7aac84efc084f84ee5b2ed +4815da740c872a9816850c8757be64cb3096dca7994f3af7bd8c10e83a2d3bbb14b40da93d40 +abb141fbb64faec34c09e9c784b1e8aba15b6e916f70996ad803b963d2de676669ebff3ed4b711 +231a7a47a81c21dd6a0969c67b6ff446a73a145fb1d4f0a2d268af8fd56ac6d67b6ef55d13194440 +74e40130ca102c22acc109cc6b8b66d840b984fe729c156edd05eb4f44d1869e6ae6260b41931179ff +3817d2cf7b7c7c7bfe4ab51e9178343f31fa8eea20899ec96d21eebdbf55f44327e7dc23cf669e215c02 +d5ab755f5631d08b70718d2ba3e2775fbc3cdfe69b7ac74afcc73ffbd7b91b9d3a7fef364cda9816c8c367 +93c15afc2cf1baec84b8e3c89f50a3e4cc3a2c1b72aeaa894a45bf09f22aac0711994f0873ac69b099e47d02 +7b359dd2abb995a8bb0d1a01a986bfcf28d47b9215f000b240f5080dc78a84cc65e34ff098074ae237a0238b6f +182ec78776f5ba3818c2ccc7b84aa7bb1a54386134b3215e8f8f709757f3c8e4f9bef3800e3a9eda8b9794e95f8a +0cf1874215b38ab1900ce7137d9b8817fbe99d3196eab5b845971a46a38c479d81fc8033a641533e2c39dd550e672a +3f5a283ca862e6a5f79c5ab39f8d4984b54a86e132d40adcca249f6419caf5b61fbbf61d54d80e78af3e613adfea5f9e +ce6bceffd4ae50e8465c3d5179c661da2f18dcb37f95f9cc66808d2f848b55dd0c1d2201bb37a2e339e9385233e687a711 +7ce3f4575d3edab2f989b0a975b279ac21af117184130911dba4e7c70e19f96b5595ec8910e737c019f3392390f8b9af6439 +9c1b37296ed2ad9b556938d30814c47f822807be8cf9bfb26a05651061015493d4ed551f8a6f1a5cef7df88dd7426f03681935 +0d1f6f49c38c4d6fbc57103193b544ec1a73f40ed8aaac53da2b1a28a4a35838036ec9d50d719af22f3f89ebb7f340f50ce8c180 +fe6786d7d7728a1ed057c329f68cf698b163ae1e6c1b48290e6ba2c325740155f0f90f216111f3bc16d61b8338d910d429241899c4 +c729c63757fa5a421704ba88f8c13f23606e59cb1e7d2396a130742c31b98dc9461cc1fa9d8d24f79f7303dd416bf66adbb08562f832 +44cf07d63adc85de7c0aa524962c29dfad1b37b253fc9559fd1f5b8237d8bd6e6449e5f3997d6b0571ae50da1e164be845523c8630b1df +c1040513a53f652e0ba7bc30f84deaaec13a15919855dd76148ae1fc86cd147ba686ff0ee025f9a00cbf7b6e190c7b87ea458974cf147ae3 +0a67afc69f00ddbdd6794ed7b06285c00d70fd86fb8b959bd8c686e96c72032f2726c4f0fb607a7f4d4f66b410eff17354b6db803c9c910a72 +faad9414932446902309147f8f2c1d2d48c95a7ddb8856219aa36ed30f971e160542ed8272ef9bdf72551cd059ca6c81ea76b5a3b49cbfb07738 +14ee2fc3899650164beb828a557afc7253e4b89cba8a1908d3641d47eb23d50ef34a0dafaa1388328fc33b1db37f2f74db6934d398bacbec785f03 +2333128e004f61ba45c524dbf72a9973fdcc288d76236402f63b0f4a39867b18e73135f35945f1791ae537b215c69941194258103419558c0a477fa9 +70f1a4c027d950573c5ea8f9b34069d1b85ac0b6daabc9de5c4cd1844d6781c0b15ca7b01c2a33dd06272e7c8729b74ea71a0f35486252461a3d83bc62 +8b9199ebc5ae61365d6cc78c9d1b1a466565639c50c317cddcdc13db96b4f6ec612bbc1c6e5d2479147040f313a168e4471b9093f47548899265d8472aab +5f420864258d597766beb7c55ef0dc9c85aab5e296677e1fd9201a8c8a0c7b74b573276b0ce11f797a5816e5ed7ea3a02ca5c338f78c0c6a41322e0cdbb5d6 +13029325fb0fbbe2221caaa6c3797a967335c4a857fafe23b4fb221433afc84da6876cbd74ac631d18f2478aae8def5a85a227b3bb496a81e9d29171a5b501fc +44ef825de340dbcb1b2ce9325eb78650d574d1c9fc13ed3b4517ee3f2f95bd97c8ab62988455a1639d0e4b2e404d661c3881dbdb52d86b7bd5593713b10e8d1086 +2c67d0e2fbdb55cf649c97e1053c717636c526ee4f58f86e9671a1086e5ef6ef7ae109eca2cd482affb1add956aad7225debca3420c4cae6cf590e8e8c1a0398a9cd +6900b97c5783d5856e4eda7816e27326cb71f8c9cda3bfdc88c4a5aa49b580aa4341cd100fd3084b447a24c9d521c8ddb7a55af52c998c4a9b53bae6c86caa02424df6 +c63f43dd3d29e0e92fc2adf18a50e33f11dbe9746f16bfc518397e0df3bd4eff491963cd2a0d25022c535a425fe3cfcea4ffd7dfbe98e2ae9fb40a007012acc31460ef25 +dd61268207f4452ce4a1f212aa4f4ffff1d0cd4df9ac1730b0f4acc07f75e86afb02c0d99aeb512bf3bb138183364a4b800af446b403add2b30d73eca024fb5e3eeebf10dc +4eb2c6dc6159bb82eba32aa839bc4b3d46be87cd358f47aeb7b488d91230414a40fe35a2c0bcde81de243b6974c49ac0af113904a8995928931e867f5b7d131c2c9caf4adde5 +22cef8bbb9f6874c1be53adc6687e3b28d0b9b8574d22212e4d60074585d17751fdcb80a1ed6143a7471fd3b1a0dddbce5b8b1ae859441413d99b069252f39c3a0b7eafc65ab34 +6f0a07f43c6d00649b516cc986fce770aed949875a17164beed5305ceaf74131574eb2cf489dc13fad53e2b10cb757b69eecb481a76a8d99a7cfb2e0aee40dde6f7d44c2be5a5e63 +bf701b835481d47ee85d390caa8f63bd3e7dfa48f4307d51989b4660e465de31329589bd5e3293f75b63d320b8f53211cf1209e426869c3c3b506dde3f819cae07672af9ef74f36de6 +92cc25c67b65fc9c57381457e7752441782dc4d2d62828c13992a7c2eda57811fe7c2de66b725e08f361fee4d8370d3dff2cdba6c603cd03ae54d813e44793387ded1add2c006b320058 +e3ec7f8ccf313fac832d3ef5c3b8b10f1faf5ae8ec32bce0f5f98b9f4464624a58b0f74ffdb827d52d94fa77a8456ca550017f3c31d8e8e6827b6a9ac9664355bc57e9b46cc66b6e396a50 +636ffbeb1cb2e834ae37213247ca8e615fc52f00e79c13f37874edc549f4b629901312b685f3e1ae3394a6beebc5e0c1364c562b3579f34cbbe9ed80c5cc045b9ab7a749950d005e785832e0 +3ae686a5e1abf936d472963d6272226f920c8df4eed5c4b26d9afc910f509c205ffb56a0289fb62d38790dca4f85028f76b4339e9eee32c1c2690abd02c74ef9a7cc822f901ae596ef1b2f2f42 +e542066a18aed627ea3feea7a962b9c69a9a2f00bc0f22c7186c389701283807801d2cd79d678010d91379cfc6d72cf30830a34fd9983a0c011e775be61eb0d093a1432493abb703c8b5bf99ad63 +1392b4676365c1ee01f75811cabe0fa989faa6a222b65e72bf4016f7767c0e9f822de2ad0034098dd9867a787abe9b97adb1a345e96b345aea898682d71fc3febc0e2ef579874da073285d0ba4edc4 +2ddd472dd4090528036d7bf01cacfca7c71ce3d89bab2299b3d6f1b987c51e5f884cfed55ca25008811fa4f44d9bb8563d83cfeccc580865978972cec981f431e4b74857e2a565e5d6e0bc9f0a3c45ec +d2a855d0e2a912ce3ff5ffa99c464c215d9ae1195e92b022d4518dde9fa5ecbdbac4f1877c1a94df35421a122a04073dbe7fce959c87497cb30774bac3441140089b4b714e025509fa3cd41d683ab46edf +00bcf365897640b9268fad068977a11b7eb3006482b51c97543ba4359db31adcd18497d174844c9ec47a0f6132b16d14aa5a02c42583aabd033e520a8a9c5c430cc6708e8b9cdd4fd56c1023a744af67fd14 +0e20beb1a84e9c252b54c4db895324e85436f29e4855cdfa5bf4bbe7868bdbc51b7f0ac428ce54750e2cd16829051e95cd97f2f40c5a1a3db17f90b68570a05ac55a9eaa7c8bf377c7a752666de779ef46764f +20ddf3ccd89c8bf4c084324858c0f0c7d4dcfd4a76a7526183a5bf4344f62320f29e7c0650d3c55ad587128e667d5d4e69689850fa741b49d3ceef45b134327ac89186248d1157aa4b16263731138777811e508b +2a8fadda7001128cf59e3fcc93dc5c98e75ac92d66d536330eb90a558920e4416c210658b3bf44a451db23c62caac1a79fad1437a81d66ab98e4423d8a1ce9ed9a0586a160c4819a019a93781775c6510c6ed09cb9 +9049524d223052ee507450e65112e1f4331c4d7fd71e8237b8f79feb2fa30504c856d6907cc4eb814694e9a7b8a8b10d85f956df72062c5f4752dc42d37f164eae1a3155a11ecb413f92a0e49e0a89d398c21d76e100 +86a92236b4e0dc16e0a17e92825e31b66a417784b7f6c0a53c274ca5100847a929c0a30430ff67e6c8913a41c3437d8313fd11b2c0eebc75e5bdffeb95a4d100c7eb36216494f3c7a8f19403080941e3d1c9e319ede000 +4b15b094db5789ff78fafabdd0f0aa06d3f4ded903c89e8ae22982d152017295de63ad0b43d3d303243de1bbf2637e8e0c042024e307739ab3b02a5b7d299167909edd51f82229c0093a68768d56c2e774285ed95bdc24d9 +9bbca463a5142ea7dad0522f073eabc7eed63e4baea13efec9d7c198b75a9c4db88623c406edc5bf61ec61e047357358541aa66e44a364b779b6a8842c1b1e8131c594ac8298755ba532937b5bdbcbbd1f2c2152d03af55120 +edc5fe50b3f3a7de5ddc14b467e41ec0ce68a44f734c4cd46b5ee1d98337d8a917cf1dd13e09946d22918eaf31f83de1e035209a6f2de32bb7caf119d0db73e4075cb9a714adb84b4d0a6163aac56bb4299a71e8979a97e363f4 +e2770541945a0395fbf597fb58cc4e6f6a2883b707aa79df9c2da5a7165a8838b1e7f4736b5418bd2f99d3eb8020f9b4cb7ff3a620f8bef276f22f3e98ffe20adeac2f62a9e5758136d222a9c562f81f151d3980bdad54f52dbf55 +248474ddc86ce5e07be50fdd3a6a113ab7f2319e3fb86f1d2d361372fa1d89926ef501c5a62b9d2efeb409d0be8fb67f12c1624d04bcf9d555dad09dffdba76948b0eecba430110ab9e738db70e51c4e2f27350a49aecf1282410ab8 +37d75ee27cc14c95c9d930bb1324d8aa6cc77ba833504253d91002fb622d9e578a3f3b1439dad7d9d7af8ea17cebee86fe13c59f316434d46208c019c2e673168b5aaa397525cbce3a0b2f1c59c853600711e719218311e15d1ab9a0cf +981461afd5756cc5d6a953c188b0a537fbcd18b41034cc4f40870cc2c97bcc48e3e4d563c2ee1d60d8c9f714996fc32e2977aaf7c3544e437f40f61d7281548efc22d7c298853304444c4184605b7b55148c24e88f362e41a8c919bf0288 +d65ac485824f9490c5f70fe674fe1da39b4583b25f3580b636a06135761eb0fb5e36a59dcb070dd9bfd5b2d69503a5c3ef295eb9cb3a9346578556d56fdd0c81cbdd960d292f8410681643af154b2550e2d586119b82cb17a79c1447cb26f6 +cdd5bd495ed8c2c41dc511577051ffa30ee02eddb95b3650337e8aeae161d2b81a9ebc1514524c52dbe2c4d0739706dbdcea1a7ba21d9cab36ca10f753fc82b218c01094e288bbcd96d6678e06e1a03f55c3bc6aea67b9637e87a4ce8e2aa0e8 +1d07389dad745981eb7ae03162bf249996cb836316872a4de4241d1fea49044541b9ababc2a10f7d5455ad3c0519997698a52039fd5517c53f7963aea8917e1b8ce3c63c5a2b23331cc473c1ff0986b08e8dd1257847256ded17e6d0409855f8e5 +a1245e0117a0e7c3cfbcd3d3eeb21a5aa7f2a73aea4465f4d83c8d0c6237c5c093ada99ada6ad75dcf18d1eb58982c7316d5c366ce5128a832d433c960e6bf7be42e4dce2747e3cc78101ed44aebcdbbf6bcd42f5160ca40784ea3ee3dd6be537475 + +HKDF/SHA-512: +PRK: 2502bc897dc1b23f9f2d8c35d519c5280ea960bf9154ebb07d377a12a81a4794ea8bdc0cb6ec59ab3303f5cbd713027825715f8af2ac0203e560fd2e55f4ff2b + +4c +abec +6d7647 +a3397e73 +15b3f69cec +fb5c266f8785 +7147d8a6bff246 +1dd7f9b2ab2583ab +725aee4e2d8d7f1f90 +046f63a1e2d606d7893e +fc2026603b032dc6c862de +03127d298ea441e3ae1d3781 +a8f163b5b9476eb50dcb304bc2 +9430c3aa31857951320feaa65e4e +14e4918f7b7eaa9c6d39dc08e9abc1 +3480c9854b8f0bb4a97920338dce7573 +42714ad1af787467b0388cb6663864ba89 +700cd7f28075fc3a28d98672207b45df5b20 +528c93053c63c5fa5ff1f0a6e7cde8d4aec5a8 +d225940fcd325eecf827666ebcb9ea3881dbfc3f +0341475a114b87cdae767a4a68432889145748b0aa +bbbf499a74a2c22dc4a2295bc904fdcd7d4e91b32060 +deb06fe0b094b65da9febfed81f990ae77fd3f458a1bf3 +f64b7ac1473232a727ff461af2f650cc8a8419d7c97b7298 +3ca9c302e1096302185e2288beb6d91124c6abc9f9f97d5a4f +81dfa7213143feb429dae2c641d25bf913aca03feead6ab7df10 +5d428190aad0539c0c2e6037e7745218dbf4e5c5aa0102996ceead +7e76c9dcd614d730eaab145be60584c7bbe925bddc64d9dccde16142 +4b2be1c3dd5cd41d53ead2ce0aa220823ec4f3cf8656b14449e50cb48b +4ceb80935422dba37af63ba59a460204dcd6639741d478185fd1a1e48de6 +633e555556c5288d808b2483d7e99bcc9876b42b61cbcc4d3e9ed42bcaee33 +0d28411da5a660b2eb063af0ed7e031c463a64eddd6c48882add6fad4cc9da92 +30b734f5768d26c4f8d641037b3e425c3d75c5c0c97cf8a3e684d1d2f1ba4f37b6 +970db4152321c2bac15898927aa25db90246c494017765b01ff21ae9a6aef7b89b88 +f168959f62696ea32a46ee67cdd3375684533f799e346fd1d26ad29aecd51de7c2c473 +76a81fa4b90ee1d1b05986c837f10f098cf1ac8f7d6be8097caec980b125185e8f9ee56d +ed95ff4a9919f45c08151fb7f610f5155dac10c92e84bebf2a6bf0fc653585158c19ef59fe +16ff87fb87760dfbaa53a2820c9ef365ee3b539b4a7fd1a4e626d313f24db495319f98c247d3 +f514b605b74bb3a35b86f8c96fb08e751d916b3ecd8b5e84b364e57f1fb6e5928a3a46f4cf7b1a +ecef871f30ca56fbd6b242b9d095a33b9d60472da4914af80dbb8672a84d8ba4640ff1b459cb9b1d +9220ed520c628b7e7e249c334573ff2402d573e34b27c25c4ba22e2b472ccdd2ef4d060eeef5387dc6 +b431fd9eaba69bc20967d1d02014913637df29c855faa6e93a8571ea3c27ad2c542700c77f9f3d19e5bb +7ebd91db579ec5879f81a922c58ee82a91b8cb648294f63b97f728a53411438f54157cb6459ae762b5ef3f +c28a1322e46a89f7a2b6b3dd6d39cbcaa84368bca33a53c04bb7bc90c3f51065143d8e93a279a403aea8ca8a +089ca5fb6e4de86c77cac49f92c8d3356697a1fa51c8e4a207ec44428c4da0b82aadad5f196510d0ae7abc25ab +31b08873dafc0d8c11afacb5efd3fcabbb7cc5ff7aab6e1d40a7451ec715de4a4a6e7e15f9d1f9f832a0e1bc39d7 +984f57235036e6d44777a7bf41fa4333f3077d3f2d92b46bc36c29b123de8580d81e22b2969d9a5abf3bb5fb7b422d +2730edbf85f4e35152af0f22fbc4f23f7968cb430fde9685cf4e1bb64611ba6459acedad777fe1a6d70c88733d83661f +0eb2a97a6d6a5901535399caa5ccb7192e1f1488f9a06d3150ccafe1eeaa8d6e50e039a9344f68d1783973fcb34719c2fa +24d7e154d4b7382daa4d1fb47a8badf0d1020e97f75efe74f302b983584e26bc1865d44c3761b65c4d745766da0bfce5682a +cb7503ad874932bfc2c7b18176d3e03f3e66666613e3e8e2ac83a29965b56afb0aa74d1080ac2ffeb1c43ee160c9f120cc4c61 +0ad5086f6cf363dfbf14c13e82faf14dde185b7142bd0ae44da8692339ed31f47f10773578af23cd7a632352087d07a7f4133474 +72873f68ad5874e1146a70e96c98360ccf0e5e9a5e31e4e38c7829241a531b0712eee8f22729e244da3d94d92703d975e54d84c36c +b05200d914edd05309a7aaafcde50cfbc201d988387d2b7fb7b7315b56d58ecaebc2f7c7b5d2607d041dfd3486e849cf2535c8ef76f4 +6324ea52a00274312457f451953302d02e3e9107aed0a4007c04d26f4b5ce37f31fbc5a2606575a464f64b507691646e2d773c62aac387 +e0c68ed5571a90bc8db36c948b5ffd9179cd80218ae47b86cc7bf4aa4adccc438ddf670ea817d324ca709b612522d510913eb64012462acb +61d3ec6537c084df5981a79545847cbf204c3a267080e2cba06a29b4fa591bc43668f701cc0d9e33e123b774b066e212fd1989d253120bfdf6 +7b74db37484227d237eb7d4039ddade342827d0075322c14de32985d616ffe38c4786e2e0df89de856051796e1f922b6b47578c3428fade6b372 +feea8d891c65fb37dc20095946b9f5db5aa936a2331fc9609ea45ee146107bf561710edceef2cea29e7c25032cb6764bc361eac0c148553e62ca5d +a95341f8f7536d95f14181e4aa01c540a345bd172b67279f5b6dfebe2c8fb7b366edb8ad7e4545eed29903eeb6f486fa9f9d825185a0333eeddd2b45 +5b7fd7b9d6623c25d508712d585fd541089c8b4721b9dc219baa9cfe14022b5ffb0ded9a546ddf183c543d1f26f9c4183f4c7ff012d61de8cb822bccb4 +fa0fc08f49144cf85dcefd25717f37de8469a943fdeaa8c764bbf483af7a37b0dcf1f50451b20e693635e94976c44ead0ef83ac632eec781e9d50efb2f9d +6ec1e621af3a878ad836aeb322e67752de29a310d7e6fbe6d164bb79e8f939d7a8f9f77a72733482d323c50ae7dc2170b90a48c59da782865eb7a9e254aba3 +10d13645bc853dcac6b71dadf4327ea0c7497822a6e0691d93a5e9d32cbafb883f9ff0c245126e391666fed31747e92c81ab886d5e75bb057faac5b3b0f1afa8 +dfb3872da01656cddd9abcb389e75a4a01d89d0d49f571e77655ad1ae0c14c87d4146accaf59f3e402767e6666228ef8e52aa32cd18306f69666769159423d8141 +d3a86236f119fa35c480d5b4b71d3aec93e226db5d2173c04e5d1d88c696594f51ec36470487fb72044a039cc081607be2a99e5d8f1c653848176f97cd2e9d50a742 +0d1f5a47c4917f6158b039e68fdeda5fa3889bbac6dff571f6353f83ada55c26bb99dac4416b2dea7d0fec2b585877aed2709f2b25516551004fee20b68e21efded761 +79a910c7f74b303d5844b609148a5a723e31c6b00d16a773547fb6d97fd35bf4a452eefd7ac3466ea520d61be4b75493156c9ae39ce6698e7120e92ebb366adeafb21d09 +a893878e100dc628ec674c4b48556c067419a3c317be94ed37cfd8ed8cae2ff035985579238f4dc13576677d527f21cde829a54466a911ab81888016c2094fda50e6dab622 +6faefe6e6bad59fab2a801aefd26d05ea3ac3ce546b0abfff524ec2ea80f3cc5c8c7015d18ae766cc84a2de75bc4c8a44cafb3743c6147e934d5de803d74ff8ca507d505065b +ef32b102fb18681c02cee796ba8bb602d927d3428c4387150a5c342532380d3234d69e58a607396af5802cfeece1554de5722931f4e09fe51ae4b74dcd7e851e9a95cf4218f96e +efe653c021ff38cabba1a76f8df2b0737ccffe6dba0506074143c88f6547afb06bcf1a36ba8e48bad9e7ee76c70717e089e1c31f052ee8859f65d6cc0d4bdccf845c8a8955d316bb +8bf54ff6ef8b0f73a569d908ef432227d7fff0e1300503c1d41f3b2618b089ba76873cc5abd22039f3bffd2bb88b4a169e1f55b8280ba8b474aee9a19a93710cdc05a51062ea5970a2 +126a003e4194b577fbf4070e8ecd47f3807afc7d9e733760a23b350649e924ebe702eaefedb70490b77fc8dbccd068baab02bcd64517aee6005d37a496f8dd92093ec34f5ec6af703836 +3b025057a1a889389b105956cffae970b21e3a1179382bb626856c793727ba9ca14706741b94b4704ce0089a378c1efadb7961fbbfd146d657b6ee605231d9ffc60eadcc6af32c43ec7e75 +0c2eadac7883bb59c278aa115b10b8d1459066b9e0061b7e4e2e1ec4caca02c6fc443e5f78c80779360f260507bc2d49beae6bf7470da5c8dca5ee51d251ed1db892db23a43c62fe088d07fc +2f40a09aea1a9b7c32e7b68845de40452c9b753c31c46118d14d3b34c8c7f3eae0f3c0018300ce4d583715debeb9bac31de392080fe2630225a0f0e0d4c5b6e19ff1fa5bf5a0cb8840fed794fc +155e5eef1e32ec06bd7a51741fbeafcbd82bddbb18fc34a984e9018f4b62d1b7ed4fc0b0d7843d4e8983ccdba6bb30d28f964994650e692a5b0b746171563be70a0c622f6a022ac4c655f216bb68 +142e1d62a31895b3a916453a0c01ca2a096d9b0747b3a2c9584822819cbffdab6c6461d4e4374e4d9363f8cc52861e2be1f4ad4edbdf4a72f1fc3667903df83a32a8810398e156ea8dd3385d416e9a +08a01d87455bfb057d64a6374f8da7ae52f4575af5085e7aa3c390de0fe528c14767525b9af87e7e5ef053bf03b2390c98f7eef36161ae1c0d9eba83c4a78d9ae5d4322cbd0b3f7aaed183f18616e49d +1c8ccae6d387f360c2fca138f1c65410918ca0cb47c15cbdee931ed03cbcec6e871f11f2692a9b9136f82b274a338805e863f87c5c0f99604c03484b1a2020732e5473bec84ced8ba05cd9490e75563628 +ac3916dc874442f05ca2409bd5c63957bca4c5363dda23846a5901010818c57874aff1787bd7c554c95aae8e354ec55beb1b79966bae64197d4383c894485c8a509064957abe7f3fa4154dc0f0e958121fcc +f0b7a82a962c7faa238acb98ebe4b904e8d5998e1856dbf68aea0933dfb3d80a44f0eaad678dacf31ee5c985fe6f9844f9490319745e89bf790d3e0cf2a788a177de8401119ebc9f7e48f58c279ef723fda7cc +6d87c3942bc4ebbc224fac383f1b22af13a4ccdfae5ee66ab8f954ebbb874f583ef07152872ce03de5c3584574b91d91d2f6fc4b14625e3e2bdfd04fc7b9441d73f9c09411f08938429c9f12e31caea17e094d9d +2e0d7c7f1c03ce9d4479fa800645abda4aade87bca0bbe547e889f8d32af7530d212171baae32831ecbd84cc27bb3da8496982a183e2785a0731220677341bcf75ae345ddb8bcdb7dccd2c4e1094d33ca53b0768cf +9bec3f01c35ba5436e44b01a96077f41aa61516dff5cef6185818e7f57d2dd0b9d9ebfeb35a0cff1ae8d98975a0cdcf2b626dd7b1f8fa2534ffc058abc1b81e1c68aaeaf8e9b255c3eabe1d675399220d4b6d967fc5f +b0d54ba8f86b01d511acb7ddb567198dabe835512d0033991a221b2bdf815d8063d073d1bbf5704f954df8f73a4ecec48417c2fec643f9e15d1d41b51f955f2422a69a2a8f73b6154881e6f6721f8e73a80efa5bfb1717 +cd41ad000e15e9b261e52b459bf79c7f7ffeb281629fba3c986c08b90a058abf76799dc72e430a1df8b64641cc2e03339ebb37fe7eabced490f77b58b3dcf492f981687036dcb94328cd9ad9f4e489de5d06bbd3671a9bf1 +21233d332c3fa9b056520c06fe55aa388773ee12ae893395df1d75c4932b54a5d679637d33930f2f8afa22be2fb4b1fd36a6c83b51057611c8119bd8cdb1efd8ee7063d5f13c09d2f8e5f8888eda3ece738e34f667aee451b9 +86418350d07d8f9d8b7e1190eb13634dc0a59f267730afe9409cecab0ac4f57feacaee8dec7321b8512991d51d4fe3b7cc2cbb5e6728ba115f022087606d15b39810032b3945e052574c7464c2b2434b2a54a801991d093f9390 +5501bfd8c7b1784515a192c0db6516b1fda893702ed45db7a5c07b32b3d9d41f396f9ed61cc4f9a143d4b4ab16c9f6975ee0a8851c62f80ddd4fdfef6c9f6f27c130a13109cd20779e4bab78200129900ecedae564c790153d2227 +7d45d142bdeff8e1b941537dab8685697988e60cd0ca0926dacc9a227de9f33e0dca5c7c17bcb3f3d3a1f39c4999313786933cb931c725b6359a1b10e31b77cd30f28e3bd4ebe898ef0ae1ee5e3a28a911fdc3759d04929c74321a9d +36f11d276af5958a737c5f457ae997455025cde0503ecf1431ea68b6567530cf3abeee2391c1c549fd3bb274120b0613828839ae74b6a071ee9d29b6247ca6a8a1cd2195d24c6215f58be04e197b541828b99e3a71d0991be8245303ad +efe64e5b4341239a2e60d342b89a302c2b8cbd45a33a5301936a051f69dd1644164bf7e24d269d341285a2c22aaa93517b1e9ae6a3d6b18961d4b1f58b357a113a12e9c6519ce7533f602b026dbd885c0584f21e099e74516d5db197dec0 +e5d90cf622738f73973fc448b7be40b044fac3dfc65d36db47f3fa9d01d41fb9808ad83e51729c0c2c35cc08226fbcd20a988ea24bb8373991e702c911d1764b309eda4d1500592ce0fee42fe111e9f9e346734b9e2758194ff9f0713613d1 +1444dfb0694d36937eb77a0b1f04c2e29e9904d1dcf03cf8d420315c5cb38463f8f3327df5cd34485b0e6db3eefedcd9015f4953a99c125f3ee803c4727c10e0ca943408d82a0c6c1b797a7a3a9e6446df53b8de29894309e81d09a321564b40 +171e9fb9e3867ac3ae4cbe09884cccb7561c2c0773ea8200c492ac338512f2017bc843b1ae5fb998c7d1f155b01b707f70dcbf68dab56d74a561b5fe7759788b5651a9ab0fe7006d0c096cacbc9ba93736bda0b967b7f1ebfb4c7a032e73f40392 +db14a6d9c6311aadd73d9fb5b38b654bf306e0ea3880d22a12032971115d22dc38f9bf03ac83a177a0e36be7f710d4a903934601d15911942f11364692d77958be02be75eb6c697e3d963f6ca2c26449272bd05cd3ec41b884a6a97381f57f19d70c +tv_kdf_hkdf: ok diff --git a/components/espressif__libsodium/libsodium/test/default/keygen.c b/components/espressif__libsodium/libsodium/test/default/keygen.c new file mode 100644 index 0000000..a53d818 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/keygen.c @@ -0,0 +1,67 @@ + +#define TEST_NAME "keygen" +#include "cmptest.h" + +typedef struct KeygenTV_ { + void (*fn)(unsigned char *k); + size_t key_len; +} KeygenTV; + +static void +tv_keygen(void) +{ + static const KeygenTV tvs[] = { + { crypto_auth_keygen, crypto_auth_KEYBYTES }, + { crypto_auth_hmacsha256_keygen, crypto_auth_hmacsha256_KEYBYTES }, + { crypto_aead_aes256gcm_keygen, crypto_aead_aes256gcm_KEYBYTES }, + { crypto_auth_hmacsha512_keygen, crypto_auth_hmacsha512_KEYBYTES }, + { crypto_auth_hmacsha512256_keygen, crypto_auth_hmacsha512256_KEYBYTES }, + { crypto_generichash_keygen, crypto_generichash_KEYBYTES }, + { crypto_generichash_blake2b_keygen, crypto_generichash_blake2b_KEYBYTES }, + { crypto_kdf_keygen, crypto_kdf_KEYBYTES }, + { crypto_onetimeauth_keygen, crypto_onetimeauth_KEYBYTES }, + { crypto_onetimeauth_poly1305_keygen, crypto_onetimeauth_poly1305_KEYBYTES }, + { crypto_aead_chacha20poly1305_ietf_keygen, crypto_aead_chacha20poly1305_ietf_KEYBYTES }, + { crypto_aead_chacha20poly1305_keygen, crypto_aead_chacha20poly1305_KEYBYTES }, + { crypto_aead_chacha20poly1305_ietf_keygen, crypto_aead_chacha20poly1305_ietf_KEYBYTES }, + { crypto_aead_xchacha20poly1305_ietf_keygen, crypto_aead_xchacha20poly1305_ietf_KEYBYTES }, + { crypto_secretbox_xsalsa20poly1305_keygen, crypto_secretbox_xsalsa20poly1305_KEYBYTES }, + { crypto_secretbox_keygen, crypto_secretbox_KEYBYTES }, + { crypto_secretstream_xchacha20poly1305_keygen, crypto_secretstream_xchacha20poly1305_KEYBYTES }, + { crypto_shorthash_keygen, crypto_shorthash_KEYBYTES }, + { crypto_stream_keygen, crypto_stream_KEYBYTES }, + { crypto_stream_chacha20_keygen, crypto_stream_chacha20_KEYBYTES }, + { crypto_stream_chacha20_ietf_keygen, crypto_stream_chacha20_ietf_KEYBYTES }, + { crypto_stream_salsa20_keygen, crypto_stream_salsa20_KEYBYTES }, + { crypto_stream_xsalsa20_keygen, crypto_stream_xsalsa20_KEYBYTES } + }; + const KeygenTV *tv; + unsigned char *key; + size_t i; + int j; + + for (i = 0; i < (sizeof tvs) / (sizeof tvs[0]); i++) { + tv = &tvs[i]; + key = (unsigned char *) sodium_malloc(tv->key_len); + key[tv->key_len - 1U] = 0; + for (j = 0; j < 10000; j++) { + tv->fn(key); + if (key[tv->key_len - 1U] != 0) { + break; + } + } + sodium_free(key); + if (j >= 10000) { + printf("Buffer underflow with test vector %u\n", (unsigned int) i); + } + } + printf("tv_keygen: ok\n"); +} + +int +main(void) +{ + tv_keygen(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/keygen.exp b/components/espressif__libsodium/libsodium/test/default/keygen.exp new file mode 100644 index 0000000..4d10017 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/keygen.exp @@ -0,0 +1 @@ +tv_keygen: ok diff --git a/components/espressif__libsodium/libsodium/test/default/kx.c b/components/espressif__libsodium/libsodium/test/default/kx.c new file mode 100644 index 0000000..e03f2d0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/kx.c @@ -0,0 +1,149 @@ + +#define TEST_NAME "kx" +#include "cmptest.h" + +static const unsigned char small_order_p[crypto_scalarmult_BYTES] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 +}; + +static void +tv_kx(void) +{ + unsigned char *seed; + unsigned char *client_pk, *client_sk; + unsigned char *client_rx, *client_tx; + unsigned char *server_pk, *server_sk; + unsigned char *server_rx, *server_tx; + char hex[65]; + int i; + + seed = (unsigned char *) sodium_malloc(crypto_kx_SEEDBYTES); + for (i = 0; i < crypto_kx_SEEDBYTES; i++) { + seed[i] = (unsigned char) i; + } + client_pk = (unsigned char *) sodium_malloc(crypto_kx_PUBLICKEYBYTES); + client_sk = (unsigned char *) sodium_malloc(crypto_kx_SECRETKEYBYTES); + crypto_kx_seed_keypair(client_pk, client_sk, seed); + + sodium_bin2hex(hex, sizeof hex, client_pk, crypto_kx_PUBLICKEYBYTES); + printf("client_pk: [%s]\n", hex); + sodium_bin2hex(hex, sizeof hex, client_sk, crypto_kx_SECRETKEYBYTES); + printf("client_sk: [%s]\n", hex); + + server_pk = (unsigned char *) sodium_malloc(crypto_kx_PUBLICKEYBYTES); + server_sk = (unsigned char *) sodium_malloc(crypto_kx_SECRETKEYBYTES); + crypto_kx_keypair(server_pk, server_sk); + + client_rx = (unsigned char *) sodium_malloc(crypto_kx_SESSIONKEYBYTES); + client_tx = (unsigned char *) sodium_malloc(crypto_kx_SESSIONKEYBYTES); + + assert(crypto_kx_client_session_keys(client_rx, client_tx, + client_pk, client_sk, + small_order_p) == -1); + if (crypto_kx_client_session_keys(client_rx, client_tx, + client_pk, client_sk, server_pk) != 0) { + printf("crypto_kx_client_session_keys() failed\n"); + } + + server_rx = (unsigned char *) sodium_malloc(crypto_kx_SESSIONKEYBYTES); + server_tx = (unsigned char *) sodium_malloc(crypto_kx_SESSIONKEYBYTES); + + assert(crypto_kx_server_session_keys(server_rx, server_tx, + server_pk, server_sk, + small_order_p) == -1); + if (crypto_kx_server_session_keys(server_rx, server_tx, + server_pk, server_sk, client_pk) != 0) { + printf("crypto_kx_server_session_keys() failed\n"); + } + if (memcmp(server_rx, client_tx, crypto_kx_SESSIONKEYBYTES) != 0 || + memcmp(server_tx, client_rx, crypto_kx_SESSIONKEYBYTES) != 0) { + printf("client session keys != server session keys\n"); + } + + sodium_increment(client_pk, crypto_kx_PUBLICKEYBYTES); + if (crypto_kx_server_session_keys(server_rx, server_tx, + server_pk, server_sk, client_pk) != 0) { + printf("crypto_kx_server_session_keys() failed\n"); + } + if (memcmp(server_rx, client_tx, crypto_kx_SESSIONKEYBYTES) == 0 && + memcmp(server_tx, client_rx, crypto_kx_SESSIONKEYBYTES) == 0) { + printf("peer's public key is ignored\n"); + } + + crypto_kx_keypair(client_pk, client_sk); + if (crypto_kx_server_session_keys(server_rx, server_tx, + server_pk, server_sk, client_pk) != 0) { + printf("crypto_kx_server_session_keys() failed\n"); + } + if (memcmp(server_rx, client_tx, crypto_kx_SESSIONKEYBYTES) == 0 || + memcmp(server_tx, client_rx, crypto_kx_SESSIONKEYBYTES) == 0) { + printf("session keys are constant\n"); + } + + crypto_kx_seed_keypair(client_pk, client_sk, seed); + sodium_increment(seed, crypto_kx_SEEDBYTES); + crypto_kx_seed_keypair(server_pk, server_sk, seed); + if (crypto_kx_server_session_keys(server_rx, server_tx, + server_pk, server_sk, client_pk) != 0) { + printf("crypto_kx_server_session_keys() failed\n"); + } + sodium_bin2hex(hex, sizeof hex, server_rx, crypto_kx_SESSIONKEYBYTES); + printf("server_rx: [%s]\n", hex); + sodium_bin2hex(hex, sizeof hex, server_tx, crypto_kx_SESSIONKEYBYTES); + printf("server_tx: [%s]\n", hex); + + if (crypto_kx_client_session_keys(client_rx, client_tx, + client_pk, client_sk, server_pk) != 0) { + printf("crypto_kx_client_session_keys() failed\n"); + } + sodium_bin2hex(hex, sizeof hex, client_rx, crypto_kx_SESSIONKEYBYTES); + printf("client_rx: [%s]\n", hex); + sodium_bin2hex(hex, sizeof hex, client_tx, crypto_kx_SESSIONKEYBYTES); + printf("client_tx: [%s]\n", hex); + + randombytes_buf(client_rx, crypto_kx_SESSIONKEYBYTES); + randombytes_buf(client_tx, crypto_kx_SESSIONKEYBYTES); + randombytes_buf(server_rx, crypto_kx_SESSIONKEYBYTES); + randombytes_buf(server_tx, crypto_kx_SESSIONKEYBYTES); + if (crypto_kx_client_session_keys(client_rx, NULL, + client_pk, client_sk, server_pk) != 0 || + crypto_kx_client_session_keys(NULL, client_tx, + client_pk, client_sk, server_pk) != 0 || + crypto_kx_server_session_keys(server_rx, NULL, + server_pk, server_sk, client_pk) != 0 || + crypto_kx_server_session_keys(NULL, server_tx, + server_pk, server_sk, client_pk) != 0) { + printf("failure when one of the pointers happens to be NULL"); + } + assert(memcmp(client_rx, client_tx, crypto_kx_SESSIONKEYBYTES) == 0); + assert(memcmp(client_tx, server_rx, crypto_kx_SESSIONKEYBYTES) == 0); + assert(memcmp(server_rx, server_tx, crypto_kx_SESSIONKEYBYTES) == 0); + + sodium_free(client_rx); + sodium_free(client_tx); + sodium_free(server_rx); + sodium_free(server_tx); + sodium_free(server_sk); + sodium_free(server_pk); + sodium_free(client_sk); + sodium_free(client_pk); + sodium_free(seed); + + assert(strcmp(crypto_kx_primitive(), crypto_kx_PRIMITIVE) == 0); + assert(crypto_kx_publickeybytes() == crypto_kx_PUBLICKEYBYTES); + assert(crypto_kx_secretkeybytes() == crypto_kx_SECRETKEYBYTES); + assert(crypto_kx_seedbytes() == crypto_kx_SEEDBYTES); + assert(crypto_kx_sessionkeybytes() == crypto_kx_SESSIONKEYBYTES); + + printf("tv_kx: ok\n"); +} + +int +main(void) +{ + tv_kx(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/kx.exp b/components/espressif__libsodium/libsodium/test/default/kx.exp new file mode 100644 index 0000000..b9db6d5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/kx.exp @@ -0,0 +1,7 @@ +client_pk: [0e0216223f147143d32615a91189c288c1728cba3cc5f9f621b1026e03d83129] +client_sk: [cb2f5160fc1f7e05a55ef49d340b48da2e5a78099d53393351cd579dd42503d6] +server_rx: [62c8f4fa81800abd0577d99918d129b65deb789af8c8351f391feb0cbf238604] +server_tx: [749519c68059bce69f7cfcc7b387a3de1a1e8237d110991323bf62870115731a] +client_rx: [749519c68059bce69f7cfcc7b387a3de1a1e8237d110991323bf62870115731a] +client_tx: [62c8f4fa81800abd0577d99918d129b65deb789af8c8351f391feb0cbf238604] +tv_kx: ok diff --git a/components/espressif__libsodium/libsodium/test/default/metamorphic.c b/components/espressif__libsodium/libsodium/test/default/metamorphic.c new file mode 100644 index 0000000..fc883c7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/metamorphic.c @@ -0,0 +1,187 @@ + +#define TEST_NAME "metamorphic" +#include "cmptest.h" + +#define MAXLEN 512 +#define MAX_ITER 1000 + +static void +mm_generichash(void) +{ + crypto_generichash_state st; + unsigned char *h, *h2; + unsigned char *k; + unsigned char *m; + size_t hlen; + size_t klen; + size_t mlen; + size_t l1, l2; + int i; + + for (i = 0; i < MAX_ITER; i++) { + mlen = randombytes_uniform(MAXLEN); + m = (unsigned char *) sodium_malloc(mlen); + klen = randombytes_uniform(crypto_generichash_KEYBYTES_MAX - + crypto_generichash_KEYBYTES_MIN + 1U) + + crypto_generichash_KEYBYTES_MIN; + k = (unsigned char *) sodium_malloc(klen); + hlen = randombytes_uniform(crypto_generichash_BYTES_MAX - + crypto_generichash_BYTES_MIN + 1U) + + crypto_generichash_BYTES_MIN; + h = (unsigned char *) sodium_malloc(hlen); + h2 = (unsigned char *) sodium_malloc(hlen); + + randombytes_buf(k, klen); + randombytes_buf(m, mlen); + + crypto_generichash_init(&st, k, klen, hlen); + l1 = randombytes_uniform((uint32_t) mlen); + l2 = randombytes_uniform((uint32_t) (mlen - l1)); + crypto_generichash_update(&st, m, l1); + crypto_generichash_update(&st, m + l1, l2); + crypto_generichash_update(&st, m + l1 + l2, mlen - l1 - l2); + crypto_generichash_final(&st, h, hlen); + + crypto_generichash(h2, hlen, m, mlen, k, klen); + + assert(memcmp(h, h2, hlen) == 0); + + sodium_free(h2); + sodium_free(h); + sodium_free(k); + sodium_free(m); + } +} + +static void +mm_onetimeauth(void) +{ + crypto_onetimeauth_state st; + unsigned char *h, *h2; + unsigned char *k; + unsigned char *m; + size_t mlen; + size_t l1, l2; + int i; + + for (i = 0; i < MAX_ITER; i++) { + mlen = randombytes_uniform(MAXLEN); + m = (unsigned char *) sodium_malloc(mlen); + k = (unsigned char *) sodium_malloc(crypto_onetimeauth_KEYBYTES); + h = (unsigned char *) sodium_malloc(crypto_onetimeauth_BYTES); + h2 = (unsigned char *) sodium_malloc(crypto_onetimeauth_BYTES); + + crypto_onetimeauth_keygen(k); + randombytes_buf(m, mlen); + + crypto_onetimeauth_init(&st, k); + l1 = randombytes_uniform((uint32_t) mlen); + l2 = randombytes_uniform((uint32_t) (mlen - l1)); + crypto_onetimeauth_update(&st, m, l1); + crypto_onetimeauth_update(&st, m + l1, l2); + crypto_onetimeauth_update(&st, m + l1 + l2, mlen - l1 - l2); + crypto_onetimeauth_final(&st, h); + + crypto_onetimeauth(h2, m, mlen, k); + + assert(memcmp(h, h2, crypto_onetimeauth_BYTES) == 0); + + sodium_free(h2); + sodium_free(h); + sodium_free(k); + sodium_free(m); + } +} + +static void +mm_hmacsha256(void) +{ + crypto_auth_hmacsha256_state st; + unsigned char *h, *h2; + unsigned char *k; + unsigned char *m; + size_t mlen; + size_t l1, l2; + int i; + + for (i = 0; i < MAX_ITER; i++) { + mlen = randombytes_uniform(MAXLEN); + m = (unsigned char *) sodium_malloc(mlen); + k = (unsigned char *) sodium_malloc(crypto_auth_hmacsha256_KEYBYTES); + h = (unsigned char *) sodium_malloc(crypto_auth_hmacsha256_BYTES); + h2 = (unsigned char *) sodium_malloc(crypto_auth_hmacsha256_BYTES); + + crypto_auth_hmacsha256_keygen(k); + randombytes_buf(m, mlen); + + crypto_auth_hmacsha256_init(&st, k, crypto_auth_hmacsha256_KEYBYTES); + l1 = randombytes_uniform((uint32_t) mlen); + l2 = randombytes_uniform((uint32_t) (mlen - l1)); + crypto_auth_hmacsha256_update(&st, m, l1); + crypto_auth_hmacsha256_update(&st, m + l1, l2); + crypto_auth_hmacsha256_update(&st, m + l1 + l2, mlen - l1 - l2); + crypto_auth_hmacsha256_final(&st, h); + + crypto_auth_hmacsha256(h2, m, mlen, k); + + assert(memcmp(h, h2, crypto_auth_hmacsha256_BYTES) == 0); + + sodium_free(h2); + sodium_free(h); + sodium_free(k); + sodium_free(m); + } +} + +static void +mm_hmacsha512(void) +{ + crypto_auth_hmacsha512_state st; + unsigned char *h, *h2; + unsigned char *k; + unsigned char *m; + size_t mlen; + size_t l1, l2; + int i; + + for (i = 0; i < MAX_ITER; i++) { + mlen = randombytes_uniform(MAXLEN); + m = (unsigned char *) sodium_malloc(mlen); + k = (unsigned char *) sodium_malloc(crypto_auth_hmacsha512_KEYBYTES); + h = (unsigned char *) sodium_malloc(crypto_auth_hmacsha512_BYTES); + h2 = (unsigned char *) sodium_malloc(crypto_auth_hmacsha512_BYTES); + + crypto_auth_hmacsha512_keygen(k); + randombytes_buf(m, mlen); + + crypto_auth_hmacsha512_init(&st, k, crypto_auth_hmacsha512_KEYBYTES); + l1 = randombytes_uniform((uint32_t) mlen); + l2 = randombytes_uniform((uint32_t) (mlen - l1)); + crypto_auth_hmacsha512_update(&st, m, l1); + crypto_auth_hmacsha512_update(&st, m + l1, l2); + crypto_auth_hmacsha512_update(&st, m + l1 + l2, mlen - l1 - l2); + crypto_auth_hmacsha512_final(&st, h); + + crypto_auth_hmacsha512(h2, m, mlen, k); + + assert(memcmp(h, h2, crypto_auth_hmacsha512_BYTES) == 0); + + sodium_free(h2); + sodium_free(h); + sodium_free(k); + sodium_free(m); + } +} + +int +main(void) +{ + mm_generichash(); + mm_onetimeauth(); + mm_hmacsha256(); + mm_hmacsha512(); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/metamorphic.exp b/components/espressif__libsodium/libsodium/test/default/metamorphic.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/metamorphic.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/misuse.c b/components/espressif__libsodium/libsodium/test/default/misuse.c new file mode 100644 index 0000000..93a6b0e --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/misuse.c @@ -0,0 +1,187 @@ + +#define TEST_NAME "misuse" +#include "cmptest.h" + +#ifdef HAVE_CATCHABLE_ABRT +# include +#ifndef _WIN32 +# include +#endif + +static void +sigabrt_handler_15(int sig) +{ + (void) sig; + _exit(0); +} + +# ifndef SODIUM_LIBRARY_MINIMAL +static void +sigabrt_handler_14(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_15); + assert(crypto_box_curve25519xchacha20poly1305_easy + (guard_page, guard_page, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1, + guard_page, guard_page, guard_page) == -1); + _exit(1); +} + +static void +sigabrt_handler_13(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_14); + assert(crypto_box_curve25519xchacha20poly1305_easy_afternm + (guard_page, guard_page, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1, + guard_page, guard_page) == -1); + _exit(1); +} +# endif + +static void +sigabrt_handler_12(int sig) +{ + (void) sig; +# ifdef SODIUM_LIBRARY_MINIMAL + signal(SIGABRT, sigabrt_handler_15); +# else + signal(SIGABRT, sigabrt_handler_13); +# endif + assert(crypto_pwhash_str_alg((char *) guard_page, + "", 0U, 1U, 1U, -1) == -1); + _exit(1); +} + +static void +sigabrt_handler_11(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_12); + assert(crypto_box_easy(guard_page, guard_page, + crypto_stream_xsalsa20_MESSAGEBYTES_MAX, + guard_page, guard_page, guard_page) == -1); + _exit(1); +} + +static void +sigabrt_handler_10(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_11); + assert(crypto_box_easy_afternm(guard_page, guard_page, + crypto_stream_xsalsa20_MESSAGEBYTES_MAX, + guard_page, guard_page) == -1); + _exit(1); +} + +static void +sigabrt_handler_9(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_10); + assert(sodium_base642bin(guard_page, 1, (const char *) guard_page, 1, + NULL, NULL, NULL, -1) == -1); + _exit(1); +} + +static void +sigabrt_handler_8(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_9); + assert(sodium_bin2base64((char *) guard_page, 1, guard_page, 1, + sodium_base64_VARIANT_ORIGINAL) == NULL); + _exit(1); +} + +static void +sigabrt_handler_7(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_8); + assert(sodium_bin2base64((char *) guard_page, 1, + guard_page, 1, -1) == NULL); + _exit(1); +} + +static void +sigabrt_handler_6(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_7); + assert(sodium_pad(NULL, guard_page, SIZE_MAX, 16, 1) == -1); + _exit(1); +} + +static void +sigabrt_handler_5(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_6); + assert(crypto_aead_xchacha20poly1305_ietf_encrypt(guard_page, NULL, NULL, UINT64_MAX, + NULL, 0, NULL, + guard_page, guard_page) == -1); + _exit(1); +} + +static void +sigabrt_handler_4(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_5); + assert(crypto_aead_chacha20poly1305_ietf_encrypt(guard_page, NULL, NULL, UINT64_MAX, + NULL, 0, NULL, + guard_page, guard_page) == -1); + _exit(1); +} + +static void +sigabrt_handler_3(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_4); + assert(crypto_aead_chacha20poly1305_encrypt(guard_page, NULL, NULL, UINT64_MAX, + NULL, 0, NULL, + guard_page, guard_page) == -1); + _exit(1); +} + +static void +sigabrt_handler_2(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_3); +#if SIZE_MAX > 0x4000000000ULL + randombytes_buf_deterministic(guard_page, 0x4000000001ULL, guard_page); +#else + abort(); +#endif + _exit(1); +} + +static void +sigabrt_handler_1(int sig) +{ + (void) sig; + signal(SIGABRT, sigabrt_handler_2); + assert(crypto_kx_server_session_keys(NULL, NULL, guard_page, guard_page, + guard_page) == -1); + _exit(1); +} + +int +main(void) +{ + signal(SIGABRT, sigabrt_handler_1); + assert(crypto_kx_client_session_keys(NULL, NULL, guard_page, guard_page, + guard_page) == -1); + return 1; +} +#else +int +main(void) +{ + return 0; +} +#endif diff --git a/components/espressif__libsodium/libsodium/test/default/misuse.exp b/components/espressif__libsodium/libsodium/test/default/misuse.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/onetimeauth.c b/components/espressif__libsodium/libsodium/test/default/onetimeauth.c new file mode 100644 index 0000000..7a4931b --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/onetimeauth.c @@ -0,0 +1,63 @@ + +#define TEST_NAME "onetimeauth" +#include "cmptest.h" + +static unsigned char rs[32] = { + 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91, 0x6d, 0x11, 0xc2, + 0xcb, 0x21, 0x4d, 0x3c, 0x25, 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, + 0x4e, 0x65, 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80 +}; + +static unsigned char c[131] = { + 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73, 0xc2, 0x96, 0x50, 0xba, + 0x32, 0xfc, 0x76, 0xce, 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4, + 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a, 0xc0, 0xdf, 0xc1, 0x7c, + 0x98, 0xdc, 0xe8, 0x7b, 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72, + 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2, 0x27, 0x0d, 0x6f, 0xb8, + 0x63, 0xd5, 0x17, 0x38, 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a, + 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae, 0x90, 0x22, 0x43, 0x68, + 0x51, 0x7a, 0xcf, 0xea, 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda, + 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde, 0x56, 0x24, 0x4a, 0x9e, + 0x88, 0xd5, 0xf9, 0xb3, 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6, + 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74, 0xe3, 0x55, 0xa5 +}; + +static unsigned char a[16]; + +int +main(void) +{ + crypto_onetimeauth_state st; + int i; + + assert(crypto_onetimeauth_statebytes() == sizeof st); + crypto_onetimeauth(a, c, 131, rs); + for (i = 0; i < 16; ++i) { + printf(",0x%02x", (unsigned int) a[i]); + if (i % 8 == 7) + printf("\n"); + } + + memset(a, 0, sizeof a); + crypto_onetimeauth_init(&st, rs); + crypto_onetimeauth_update(&st, c, 100); + crypto_onetimeauth_update(&st, c, 0); + crypto_onetimeauth_update(&st, c + 100, 31); + crypto_onetimeauth_final(&st, a); + for (i = 0; i < 16; ++i) { + printf(",0x%02x", (unsigned int) a[i]); + if (i % 8 == 7) + printf("\n"); + } + + assert(crypto_onetimeauth_bytes() > 0U); + assert(crypto_onetimeauth_keybytes() > 0U); + assert(strcmp(crypto_onetimeauth_primitive(), "poly1305") == 0); + assert(crypto_onetimeauth_poly1305_bytes() == crypto_onetimeauth_bytes()); + assert(crypto_onetimeauth_poly1305_keybytes() == + crypto_onetimeauth_keybytes()); + assert(crypto_onetimeauth_statebytes() > 0); + assert(crypto_onetimeauth_statebytes() == crypto_onetimeauth_poly1305_statebytes()); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/onetimeauth.exp b/components/espressif__libsodium/libsodium/test/default/onetimeauth.exp new file mode 100644 index 0000000..33973bd --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/onetimeauth.exp @@ -0,0 +1,4 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 diff --git a/components/espressif__libsodium/libsodium/test/default/onetimeauth2.c b/components/espressif__libsodium/libsodium/test/default/onetimeauth2.c new file mode 100644 index 0000000..e429ce0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/onetimeauth2.c @@ -0,0 +1,33 @@ + +#define TEST_NAME "onetimeauth2" +#include "cmptest.h" + +static unsigned char rs[32] = { + 0xee, 0xa6, 0xa7, 0x25, 0x1c, 0x1e, 0x72, 0x91, 0x6d, 0x11, 0xc2, + 0xcb, 0x21, 0x4d, 0x3c, 0x25, 0x25, 0x39, 0x12, 0x1d, 0x8e, 0x23, + 0x4e, 0x65, 0x2d, 0x65, 0x1f, 0xa4, 0xc8, 0xcf, 0xf8, 0x80 +}; + +static unsigned char c[131] = { + 0x8e, 0x99, 0x3b, 0x9f, 0x48, 0x68, 0x12, 0x73, 0xc2, 0x96, 0x50, 0xba, + 0x32, 0xfc, 0x76, 0xce, 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4, + 0x47, 0x6f, 0xb8, 0xc5, 0x31, 0xa1, 0x18, 0x6a, 0xc0, 0xdf, 0xc1, 0x7c, + 0x98, 0xdc, 0xe8, 0x7b, 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72, + 0x71, 0xd2, 0xc2, 0x0f, 0x9b, 0x92, 0x8f, 0xe2, 0x27, 0x0d, 0x6f, 0xb8, + 0x63, 0xd5, 0x17, 0x38, 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a, + 0xb9, 0x32, 0x16, 0x45, 0x48, 0xe5, 0x26, 0xae, 0x90, 0x22, 0x43, 0x68, + 0x51, 0x7a, 0xcf, 0xea, 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda, + 0x99, 0x83, 0x2b, 0x61, 0xca, 0x01, 0xb6, 0xde, 0x56, 0x24, 0x4a, 0x9e, + 0x88, 0xd5, 0xf9, 0xb3, 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6, + 0x59, 0x9b, 0x1f, 0x65, 0x4c, 0xb4, 0x5a, 0x74, 0xe3, 0x55, 0xa5 +}; + +static unsigned char a[16] = { 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5, + 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9 }; + +int +main(void) +{ + printf("%d\n", crypto_onetimeauth_verify(a, c, 131, rs)); + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/onetimeauth2.exp b/components/espressif__libsodium/libsodium/test/default/onetimeauth2.exp new file mode 100644 index 0000000..573541a --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/onetimeauth2.exp @@ -0,0 +1 @@ +0 diff --git a/components/espressif__libsodium/libsodium/test/default/onetimeauth7.c b/components/espressif__libsodium/libsodium/test/default/onetimeauth7.c new file mode 100644 index 0000000..7a77339 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/onetimeauth7.c @@ -0,0 +1,36 @@ + +#define TEST_NAME "onetimeauth7" +#include "cmptest.h" + +static unsigned char key[32]; +static unsigned char c[1000]; +static unsigned char a[16]; + +int +main(void) +{ + int clen; + + for (clen = 0; clen < 1000; ++clen) { + crypto_onetimeauth_keygen(key); + randombytes_buf(c, clen); + crypto_onetimeauth(a, c, clen, key); + if (crypto_onetimeauth_verify(a, c, clen, key) != 0) { + printf("fail %d\n", clen); + return 100; + } + if (clen > 0) { + c[rand() % clen] += 1 + (rand() % 255); + if (crypto_onetimeauth_verify(a, c, clen, key) == 0) { + printf("forgery %d\n", clen); + return 100; + } + a[rand() % sizeof a] += 1 + (rand() % 255); + if (crypto_onetimeauth_verify(a, c, clen, key) == 0) { + printf("forgery %d\n", clen); + return 100; + } + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/onetimeauth7.exp b/components/espressif__libsodium/libsodium/test/default/onetimeauth7.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/pre.js.inc b/components/espressif__libsodium/libsodium/test/default/pre.js.inc new file mode 100644 index 0000000..8b8d589 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pre.js.inc @@ -0,0 +1,22 @@ +try { + this['Module'] = Module; + Module.test; +} catch(e) { + this['Module'] = Module = {}; +} +if (typeof process === 'object') { + if (typeof(FS) === 'object') { + Module['preRun'] = Module['preRun'] || []; + Module['preRun'].push(function() { + FS.init(); + FS.mkdir('/test-data'); + FS.mount(NODEFS, { root: '.' }, '/test-data'); + }); + } +} else { + Module['print'] = function(x) { + var event = new Event('test-output'); + event.data = x; + window.dispatchEvent(event); + }; +} diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.c b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.c new file mode 100644 index 0000000..d3aaba1 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.c @@ -0,0 +1,467 @@ + +#define TEST_NAME "pwhash_argon2i" +#include "cmptest.h" + +#define OUT_LEN 128 +#define OPSLIMIT 3 +#define MEMLIMIT 5000000 + +static void +tv(void) +{ + static struct { + const char * passwd_hex; + size_t passwd_len; + const char * salt_hex; + size_t outlen; + unsigned long long opslimit; + size_t memlimit; + unsigned int lanes; + } tests[] = { + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 5, 7256678, 1 }, + { "e125cee61c8cb7778d9e5ad0a6f5d978ce9f84de213a8556d9ffe202020ab4a6ed" + "9074a4eb3416f9b168f137510f3a30b70b96cbfa219ff99f6c6eaffb15c06b60e0" + "0cc2890277f0fd3c622115772f7048adaebed86e", + 86, + "f1192dd5dc2368b9cd421338b22433455ee0a3699f9379a08b9650ea2c126f0d", + 250, 4, 7849083, 1 }, + { "92263cbf6ac376499f68a4289d3bb59e5a22335eba63a32e6410249155b956b6a3" + "b48d4a44906b18b897127300b375b8f834f1ceffc70880a885f47c33876717e392" + "be57f7da3ae58da4fd1f43daa7e44bb82d3717af4319349c24cd31e46d295856b0" + "441b6b289992a11ced1cc3bf3011604590244a3eb737ff221129215e4e4347f491" + "5d41292b5173d196eb9add693be5319fdadc242906178bb6c0286c9b6ca6012746" + "711f58c8c392016b2fdfc09c64f0f6b6ab7b", + 183, + "3b840e20e9555e9fb031c4ba1f1747ce25cc1d0ff664be676b9b4a90641ff194", + 249, 3, 7994791, 1 }, + { "027b6d8e8c8c474e9b69c7d9ed4f9971e8e1ce2f6ba95048414c3970f0f09b70e3" + "b6c5ae05872b3d8678705b7d381829c351a5a9c88c233569b35d6b0b809df44b64" + "51a9c273f1150e2ef8a0b5437eb701e373474cd44b97ef0248ebce2ca0400e1b53" + "f3d86221eca3f18eb45b702b9172440f774a82cbf1f6f525df30a6e293c873cce6" + "9bb078ed1f0d31e7f9b8062409f37f19f8550aae", + 152, + "eb2a3056a09ad2d7d7f975bcd707598f24cd32518cde3069f2e403b34bfee8a5", 5, + 4, 1397645, 1 }, + { "4a857e2ee8aa9b6056f2424e84d24a72473378906ee04a46cb05311502d5250b82" + "ad86b83c8f20a23dbb74f6da60b0b6ecffd67134d45946ac8ebfb3064294bc097d" + "43ced68642bfb8bbbdd0f50b30118f5e", + 82, + "39d82eef32010b8b79cc5ba88ed539fbaba741100f2edbeca7cc171ffeabf258", + 190, 3, 1432947, 1 }, + { "c7b09aec680e7b42fedd7fc792e78b2f6c1bea8f4a884320b648f81e8cf515e8ba" + "9dcfb11d43c4aae114c1734aa69ca82d44998365db9c93744fa28b63fd16000e82" + "61cbbe083e7e2da1e5f696bde0834fe53146d7e0e35e7de9920d041f5a5621aabe" + "02da3e2b09b405b77937efef3197bd5772e41fdb73fb5294478e45208063b5f58e" + "089dbeb6d6342a909c1307b3fff5fe2cf4da56bdae50848f", + 156, + "039c056d933b475032777edbaffac50f143f64c123329ed9cf59e3b65d3f43b6", + 178, 3, 4886999, 1 }, + { "b540beb016a5366524d4605156493f9874514a5aa58818cd0c6dfffaa9e90205f1" + "7b", + 34, + "44071f6d181561670bda728d43fb79b443bb805afdebaf98622b5165e01b15fb", + 231, 1, 1631659, 1 }, + { "a14975c26c088755a8b715ff2528d647cd343987fcf4aa25e7194a8417fb2b4b3f" + "7268da9f3182b4cfb22d138b2749d673a47ecc7525dd15a0a3c66046971784bb63" + "d7eae24cc84f2631712075a10e10a96b0e0ee67c43e01c423cb9c44e5371017e9c" + "496956b632158da3fe12addecb88912e6759bc37f9af2f45af72c5cae3b179ffb6" + "76a697de6ebe45cd4c16d4a9d642d29ddc0186a0a48cb6cd62bfc3dd229d313b30" + "1560971e740e2cf1f99a9a090a5b283f35475057e96d7064e2e0fc81984591068d" + "55a3b4169f22cccb0745a2689407ea1901a0a766eb99", + 220, + "3d968b2752b8838431165059319f3ff8910b7b8ecb54ea01d3f54769e9d98daf", + 167, 3, 1784128, 1 }, + }; + char passwd[256]; + unsigned char salt[crypto_pwhash_SALTBYTES]; + unsigned char out[256]; + char out_hex[256 * 2 + 1]; + size_t i = 0U; + + do { + sodium_hex2bin((unsigned char *) passwd, sizeof passwd, + tests[i].passwd_hex, strlen(tests[i].passwd_hex), NULL, + NULL, NULL); + sodium_hex2bin(salt, sizeof salt, tests[i].salt_hex, + strlen(tests[i].salt_hex), NULL, NULL, NULL); + if (crypto_pwhash(out, (unsigned long long) tests[i].outlen, passwd, + tests[i].passwd_len, (const unsigned char *) salt, + tests[i].opslimit, tests[i].memlimit, + crypto_pwhash_alg_argon2i13()) != 0) { + printf("[tv] pwhash failure (maybe intentional): [%u]\n", + (unsigned int) i); + continue; + } + sodium_bin2hex(out_hex, sizeof out_hex, out, tests[i].outlen); + printf("%s\n", out_hex); + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +tv2(void) +{ + static struct { + const char * passwd_hex; + size_t passwd_len; + const char * salt_hex; + size_t outlen; + unsigned long long opslimit; + size_t memlimit; + unsigned int lanes; + } tests[] = { + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 4, 397645, 1 }, + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 3, 397645, 1 }, + }; + char passwd[256]; + unsigned char salt[crypto_pwhash_SALTBYTES]; + unsigned char out[256]; + char out_hex[256 * 2 + 1]; + size_t i = 0U; + + do { + sodium_hex2bin((unsigned char *) passwd, sizeof passwd, + tests[i].passwd_hex, strlen(tests[i].passwd_hex), NULL, + NULL, NULL); + sodium_hex2bin(salt, sizeof salt, tests[i].salt_hex, + strlen(tests[i].salt_hex), NULL, NULL, NULL); + if (crypto_pwhash(out, (unsigned long long) tests[i].outlen, passwd, + tests[i].passwd_len, (const unsigned char *) salt, + tests[i].opslimit, tests[i].memlimit, + crypto_pwhash_alg_argon2i13()) != 0) { + printf("[tv2] pwhash failure: [%u]\n", (unsigned int) i); + continue; + } + sodium_bin2hex(out_hex, sizeof out_hex, out, tests[i].outlen); + printf("%s\n", out_hex); + } while (++i < (sizeof tests) / (sizeof tests[0])); + + if (crypto_pwhash(out, sizeof out, "password", strlen("password"), salt, 3, + 1ULL << 12, 0) != -1) { + printf("[tv2] pwhash should have failed (0)\n"); + } + if (crypto_pwhash_argon2i(out, sizeof out, "password", strlen("password"), salt, 3, + 1ULL << 12, 0) != -1) { + printf("[tv2] pwhash should have failed (0')\n"); + } + if (crypto_pwhash(out, sizeof out, "password", strlen("password"), salt, 3, + 1, crypto_pwhash_alg_argon2i13()) != -1) { + printf("[tv2] pwhash should have failed (1)\n"); + } + if (crypto_pwhash(out, sizeof out, "password", strlen("password"), salt, 3, + 1ULL << 12, crypto_pwhash_alg_argon2i13()) != -1) { + printf("[tv2] pwhash should have failed (2)\n"); + } + if (crypto_pwhash(out, sizeof out, "password", strlen("password"), salt, 2, + 1ULL << 12, crypto_pwhash_alg_argon2i13()) != -1) { + printf("[tv2] pwhash should have failed (3)\n"); + } + if (crypto_pwhash(out, 15, "password", strlen("password"), salt, 3, + 1ULL << 12, crypto_pwhash_alg_argon2i13()) != -1) { + printf("[tv2] pwhash with a short output length should have failed\n"); + } + if (crypto_pwhash(out, sizeof out, "password", 0x100000000ULL, salt, 3, + 1ULL << 12, crypto_pwhash_alg_argon2i13()) != -1) { + printf("[tv2] pwhash with a long password length should have failed\n"); + } + assert(crypto_pwhash_argon2i(out, sizeof out, "password", strlen("password"), salt, + OPSLIMIT, MEMLIMIT, crypto_pwhash_alg_argon2id13()) == -1); +} + +static void +tv3(void) +{ + static struct { + const char *passwd; + const char *out; + } tests[] = { + { "", + "$argon2i$v=19$m=4096,t=1,p=1$X1NhbHQAAAAAAAAAAAAAAA$bWh++" + "MKN1OiFHKgIWTLvIi1iHicmHH7+Fv3K88ifFfI" }, + { "", + "$argon2i$v=19$m=2048,t=4,p=1$SWkxaUhpY21ISDcrRnYzSw$Mbg/" + "Eck1kpZir5T9io7C64cpffdTBaORgyriLQFgQj8" }, + { "^T5H$JYt39n%K*j:W]!1s?vg!:jGi]Ax?..l7[p0v:1jHTpla9;]bUN;?bWyCbtqg ", + "$argon2i$v=19$m=4096,t=3,p=2$X1NhbHQAAAAAAAAAAAAAAA$z/QMiU4lQxGsYNc/" + "+K/bizwsA1P11UG2dj/7+aILJ4I" }, + { "K3S=KyH#)36_?]LxeR8QNKw6X=gFbxai$C%29V*", + "$argon2i$v=19$m=4096,t=3,p=1$X1NhbHQAAAAAAAAAAAAAAA$fu2Wsecyt+" + "yPnBvSvYN16oP5ozRmkp0ixJ1YL19V3Uo" } + }; + char *out; + char *passwd; + size_t i = 0U; + int ret; + + do { + out = (char *) sodium_malloc(strlen(tests[i].out) + 1U); + assert(out != NULL); + memcpy(out, tests[i].out, strlen(tests[i].out) + 1U); + passwd = (char *) sodium_malloc(strlen(tests[i].passwd) + 1U); + assert(passwd != NULL); + memcpy(passwd, tests[i].passwd, strlen(tests[i].passwd) + 1U); + ret = crypto_pwhash_str_verify(out, passwd, strlen(passwd)); + sodium_free(out); + sodium_free(passwd); + if (ret != 0) { + printf("[tv3] pwhash_str failure (maybe intentional): [%u]\n", + (unsigned int) i); + } + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +str_tests(void) +{ + char *str_out; + char *str_out2; + char *salt; + const char *passwd = "Correct Horse Battery Staple"; + + salt = (char *) sodium_malloc(crypto_pwhash_SALTBYTES); + str_out = (char *) sodium_malloc(crypto_pwhash_STRBYTES); + str_out2 = (char *) sodium_malloc(crypto_pwhash_STRBYTES); + memcpy(salt, ">A 16-bytes salt", crypto_pwhash_SALTBYTES); + if (crypto_pwhash_argon2i_str(str_out, passwd, strlen(passwd), OPSLIMIT, + MEMLIMIT) != 0) { + printf("pwhash_argon2i_str failure\n"); + } + if (crypto_pwhash_argon2i_str(str_out2, passwd, strlen(passwd), OPSLIMIT, + MEMLIMIT) != 0) { + printf("pwhash_argon2i_str(2) failure\n"); + } + if (strcmp(str_out, str_out2) == 0) { + printf("pwhash_argon2i_str() doesn't generate different salts\n"); + } + if (crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT) != 0) { + printf("needs_rehash() false positive\n"); + } + if (crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT / 2) != 1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT / 2, MEMLIMIT) != 1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT * 2) != 1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT * 2, MEMLIMIT) != 1) { + printf("needs_rehash() false negative\n"); + } + if (crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT / 2) != 1) { + printf("pwhash_str_needs_rehash() didn't handle argon2i\n"); + } + if (crypto_pwhash_str_needs_rehash(str_out + 1, OPSLIMIT, MEMLIMIT) != -1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out + 1, OPSLIMIT, MEMLIMIT) != -1) { + printf("needs_rehash() didn't fail with an invalid hash string\n"); + } + if (sodium_is_zero((const unsigned char *) str_out + strlen(str_out), + crypto_pwhash_STRBYTES - strlen(str_out)) != 1 || + sodium_is_zero((const unsigned char *) str_out2 + strlen(str_out2), + crypto_pwhash_STRBYTES - strlen(str_out2)) != 1) { + printf("pwhash_str() doesn't properly pad with zeros\n"); + } + if (crypto_pwhash_argon2i_str_verify(str_out, passwd, strlen(passwd)) != 0) { + printf("pwhash_str_verify(1) failure\n"); + } + str_out[14]++; + if (crypto_pwhash_argon2i_str_verify(str_out, passwd, strlen(passwd)) != -1) { + printf("pwhash_str_verify(2) failure\n"); + } + str_out[14]--; + assert(str_out[crypto_pwhash_STRBYTES - 1U] == 0); + + if (crypto_pwhash_argon2i_str(str_out2, passwd, 0x100000000ULL, OPSLIMIT, + MEMLIMIT) != -1) { + printf("pwhash_str() with a large password should have failed\n"); + } + if (crypto_pwhash_argon2i_str(str_out2, passwd, strlen(passwd), 1, MEMLIMIT) != + -1) { + printf("pwhash_str() with a small opslimit should have failed\n"); + } + { + const char *str_in_ = "$argon2i$m=65536,t=2,p=1c29tZXNhbHQ" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"; + char *str_in = (char *) sodium_malloc(strlen(str_in_) + 1U); + + const char *password_in_ = "password"; + char *password_in = (char *) sodium_malloc(strlen(password_in_) + 1U); + + memcpy(str_in, str_in_, strlen(str_in_) + 1U); + memcpy(password_in, password_in_, strlen(password_in_) + 1U); + + if (crypto_pwhash_argon2i_str_verify(str_in, password_in, + 0x100000000ULL) != -1) { + printf("pwhash_str_verify(invalid(0)) failure\n"); + } + + sodium_free(password_in); + sodium_free(str_in); + } + if (crypto_pwhash_argon2i_str_verify("$argon2i$m=65536,t=2,p=1c29tZXNhbHQ" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(1)) failure %d\n", errno); + } + if (crypto_pwhash_argon2i_str_verify("$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" + "9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(2)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" + "$b2G3seW+uPzerwQQC+/E1K50CLLO7YXy0JRcaTuswRo", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(3)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2i$v=19$m=65536,t=2,p=1c29tZXNhbHQ" + "$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(4)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(5)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$8iIuixkI73Js3G1uMbezQXD0b8LG4SXGsOwoQkdAQIM", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(6)) failure\n"); + } + if (crypto_pwhash_str_verify( + "$argon2i$v=19$m=4096,t=3,p=2$b2RpZHVlamRpc29kaXNrdw" + "$TNnWIwlu1061JHrnCqIAmjs3huSxYIU+0jWipu7Kc9M", + "password", strlen("password")) != 0) { + printf("pwhash_str_verify(valid(7)) failure\n"); + } + if (crypto_pwhash_str_verify( + "$argon2i$v=19$m=4096,t=3,p=2$b2RpZHVlamRpc29kaXNrdw" + "$TNnWIwlu1061JHrnCqIAmjs3huSxYIU+0jWipu7Kc9M", + "passwore", strlen("passwore")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(7)) failure\n"); + } + if (crypto_pwhash_str_verify( + "$Argon2i$v=19$m=4096,t=3,p=2$b2RpZHVlamRpc29kaXNrdw" + "$TNnWIwlu1061JHrnCqIAmjs3huSxYIU+0jWipu7Kc9M", + "password", strlen("password")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(8)) failure\n"); + } + if (crypto_pwhash_str_verify( + "$argon2i$v=1$m=4096,t=3,p=2$b2RpZHVlamRpc29kaXNrdw" + "$TNnWIwlu1061JHrnCqIAmjs3huSxYIU+0jWipu7Kc9M", + "password", strlen("password")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(9)) failure\n"); + } + if (crypto_pwhash_str_verify( + "$argon2i$v=1$m=4096,t=3,p=2$b2RpZHVla~=mRpc29kaXNrdw" + "$TNnWIwlu1061JHrnCqIAmjs3huSxYIU+0jWipu7Kc9M", + "password", strlen("password")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(10)) failure\n"); + } + if (crypto_pwhash_str_verify( + "$argon2i$v=1$m=4096,t=3,p=2$b2RpZHVlamRpc29kaXNrdw" + "$TNnWIwlu1061JHrnCqIAmjs3huSxYI~=U+0jWipu7Kc9M", + "password", strlen("password")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(11)) failure\n"); + } + assert(crypto_pwhash_str_alg(str_out, "test", 4, OPSLIMIT, MEMLIMIT, + crypto_pwhash_ALG_ARGON2I13) == 0); + assert(crypto_pwhash_argon2i_str_verify(str_out, "test", 4) == 0); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT) == 0); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, + OPSLIMIT / 2, MEMLIMIT) == 1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT / 2) == 1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, 0, 0) == 1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out + 1, + OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_argon2id_str_needs_rehash("", OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_str_alg(str_out, "test", 4, OPSLIMIT, MEMLIMIT, + crypto_pwhash_ALG_ARGON2ID13) == 0); + assert(crypto_pwhash_argon2id_str_verify(str_out, "test", 4) == 0); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT) == 0); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, + OPSLIMIT / 2, MEMLIMIT) == 1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT / 2) == 1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, 0, 0) == 1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_argon2id_str_needs_rehash("", OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out + 1, + OPSLIMIT, MEMLIMIT) == -1); + sodium_free(salt); + sodium_free(str_out); + sodium_free(str_out2); +} + +int +main(void) +{ + tv(); + tv2(); + tv3(); + str_tests(); + + assert(crypto_pwhash_argon2i_bytes_min() > 0U); + assert(crypto_pwhash_argon2i_bytes_max() > crypto_pwhash_argon2i_bytes_min()); + assert(crypto_pwhash_argon2i_passwd_max() > crypto_pwhash_argon2i_passwd_min()); + assert(crypto_pwhash_argon2i_saltbytes() > 0U); + assert(crypto_pwhash_argon2i_strbytes() > 1U); + assert(crypto_pwhash_argon2i_strbytes() > strlen(crypto_pwhash_argon2i_strprefix())); + + assert(crypto_pwhash_argon2i_opslimit_min() > 0U); + assert(crypto_pwhash_argon2i_opslimit_max() > 0U); + assert(crypto_pwhash_argon2i_memlimit_min() > 0U); + assert(crypto_pwhash_argon2i_memlimit_max() > 0U); + assert(crypto_pwhash_argon2i_opslimit_interactive() > 0U); + assert(crypto_pwhash_argon2i_memlimit_interactive() > 0U); + assert(crypto_pwhash_argon2i_opslimit_moderate() > 0U); + assert(crypto_pwhash_argon2i_memlimit_moderate() > 0U); + assert(crypto_pwhash_argon2i_opslimit_sensitive() > 0U); + assert(crypto_pwhash_argon2i_memlimit_sensitive() > 0U); + + assert(crypto_pwhash_argon2i_bytes_min() == crypto_pwhash_argon2i_BYTES_MIN); + assert(crypto_pwhash_argon2i_bytes_max() == crypto_pwhash_argon2i_BYTES_MAX); + assert(crypto_pwhash_argon2i_passwd_min() == crypto_pwhash_argon2i_PASSWD_MIN); + assert(crypto_pwhash_argon2i_passwd_max() == crypto_pwhash_argon2i_PASSWD_MAX); + assert(crypto_pwhash_argon2i_saltbytes() == crypto_pwhash_argon2i_SALTBYTES); + assert(crypto_pwhash_argon2i_strbytes() == crypto_pwhash_argon2i_STRBYTES); + + assert(crypto_pwhash_argon2i_opslimit_min() == crypto_pwhash_argon2i_OPSLIMIT_MIN); + assert(crypto_pwhash_argon2i_opslimit_max() == crypto_pwhash_argon2i_OPSLIMIT_MAX); + assert(crypto_pwhash_argon2i_memlimit_min() == crypto_pwhash_argon2i_MEMLIMIT_MIN); + assert(crypto_pwhash_argon2i_memlimit_max() == crypto_pwhash_argon2i_MEMLIMIT_MAX); + assert(crypto_pwhash_argon2i_opslimit_interactive() == + crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE); + assert(crypto_pwhash_argon2i_memlimit_interactive() == + crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE); + assert(crypto_pwhash_argon2i_opslimit_moderate() == + crypto_pwhash_argon2i_OPSLIMIT_MODERATE); + assert(crypto_pwhash_argon2i_memlimit_moderate() == + crypto_pwhash_argon2i_MEMLIMIT_MODERATE); + assert(crypto_pwhash_argon2i_opslimit_sensitive() == + crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE); + assert(crypto_pwhash_argon2i_memlimit_sensitive() == + crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE); + + assert(crypto_pwhash_argon2i_alg_argon2i13() == crypto_pwhash_argon2i_ALG_ARGON2I13); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.exp b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.exp new file mode 100644 index 0000000..0140ba8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.exp @@ -0,0 +1,11 @@ +23b803c84eaa25f4b44634cc1e5e37792c53fcd9b1eb20f865329c68e09cbfa9f1968757901b383fce221afe27713f97914a041395bbe1fb70e079e5bed2c7145b1f6154046f5958e9b1b29055454e264d1f2231c316f26be2e3738e83a80315e9a0951ce4b137b52e7d5ee7b37f7d936dcee51362bcf792595e3c896ad5042734fc90c92cae572ce63ff659a2f7974a3bd730d04d525d253ccc38 +0bb3769b064b9c43a9460476ab38c4a9a2470d55d4c992c6e723af895e4c07c09af41f22f90eab583a0c362d177f4677f212482fd145bfb9ac6211635e48461122bb49097b5fb0739d2cd22a39bf03d268e7495d4fd8d710aa156202f0a06e932ff513e6e7c76a4e98b6df5cf922f124791b1076ad904e6897271f5d7d24c5929e2a3b836d0f2f2697c2d758ee79bf1264f3fae65f3744e0f6d7d07ef6e8b35b70c0f88e9036325bfb24ac7f550351486da87aef10d6b0cb77d1cf6e31cf98399c6f241c605c6530dffb4764784f6c0b0bf601d4e4431e8b18dabdc3079c6e264302ade79f61cbd5497c95486340bb891a737223100be0429650 +e9aa073b0b872f15c083d1d7ce52c09f493b827ca78f13a06c1721b45b1e17b24c04e19fe869333135360197a7eb55994fee3e8d9680aedfdf7674f3ad7b84d59d7eab03579ffc10c7093093bc48ec84252aa1b30f40f5e838f1443e15e2772a39f4e774eb052097e8881e94f15457b779fa2af2bbc9a993687657c7704ac8a37c25c1df4289eb4c70da45f2fd46bc0f78259767d3dd478a7c369cf866758bc36d9bd8e2e3c9fb0cf7fd6073ebf630c1f67fa7d303c07da40b36749d157ea37965fef810f2ea05ae6fc7d96a8f3470d73e15b22b42e8d6986dbfe5303256b2b3560372c4452ffb2a04fb7c6691489f70cb46831be0679117f7 +[tv] pwhash failure (maybe intentional): [3] +c121209f0ba70aed93d49200e5dc82cce013cef25ea31e160bf8db3cf448a59d1a56f6c19259e18ea020553cb75781761d112b2d949a297584c65e60df95ad89c4109825a3171dc6f20b1fd6b0cdfd194861bc2b414295bee5c6c52619e544abce7d520659c3d51de2c60e89948d830695ab38dcb75dd7ab06a4770dd4bc7c8f335519e04b038416b1a7dbd25c026786a8105c5ffe7a0931364f0376ae5772be39b51d91d3281464e0f3a128e7155a68e87cf79626ffca0b2a3022fc8420 +91c337ce8918a5805a59b00bd1819d3eb4356807cbd2a80b271c4b482dce03f5b02ae4eb831ff668cbb327b93c300b41da4852e5547bea8342d518dd9311aaeb5f90eccf66d548f9275631f0b1fd4b299cec5d2e86a59e55dc7b3afab6204447b21d1ef1da824abaf31a25a0d6135c4fe81d34a06816c8a6eab19141f5687108500f3719a862af8c5fee36e130c69921e11ce83dfc72c5ec3b862c1bccc5fd63ad57f432fbcca6f9e18d5a59015950cdf053 +[tv] pwhash failure (maybe intentional): [6] +e942951dfbc2d508294b10f9e97b47d0cd04e668a043cb95679cc1139df7c27cd54367688725be9d069f5704c12223e7e4ca181fbd0bed18bb4634795e545a6c04a7306933a41a794baedbb628d41bc285e0b9084055ae136f6b63624c874f5a1e1d8be7b0b7227a171d2d7ed578d88bfdcf18323198962d0dcad4126fd3f21adeb1e11d66252ea0c58c91696e91031bfdcc2a9dc0e028d17b9705ba2d7bcdcd1e3ba75b4b1fea +fd329873387429cb79faaec4f65c35649f65de0aabc1f092ca9dee20029d8ae6c3a97e9940763e1703a7fef5a20eb7f210123fc8c6d3f1745d19d5e3c1eb392ab4a6070c8a6b9ecbeabae0711326e81530099541a882d4bd7733c4a7477ae72b6928c46cd07264172a9d2cfb7d649594f877f8b447d9c01b17996b85db5a71f733f8cc5fd0436540a5b7a1d79de09e20c3abe6515501b3156cd51e +bbbc4c7963593601d4d685ed9d89682374f8e6b3ce92ce8ccc702728ec8bf839fd7cb8e37ddb09be8c18c7e0ed099949665227a00fb33e1f63ca830dbeb13b29d987b445b3e081cd8428bdb2f9e003e12bea98230fd30842fa193af9169171b550322072c88330ea464cbe02b6ee044374d3f3d174c23617b707159a11926c56601123dcc30508ec84fdb0797b7ab23a77eeefb2a0be2ef45e903c +OK diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.c b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.c new file mode 100644 index 0000000..8e9db04 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.c @@ -0,0 +1,517 @@ + +#define TEST_NAME "pwhash_argon2id" +#include "cmptest.h" + +#define OUT_LEN 128 +#define OPSLIMIT 3 +#define MEMLIMIT 5000000 + +static void +tv(void) +{ + static struct { + const char * passwd_hex; + size_t passwd_len; + const char * salt_hex; + size_t outlen; + unsigned long long opslimit; + size_t memlimit; + unsigned int lanes; + } tests[] = { + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 5, 7256678, 1 }, + { "e125cee61c8cb7778d9e5ad0a6f5d978ce9f84de213a8556d9ffe202020ab4a6ed" + "9074a4eb3416f9b168f137510f3a30b70b96cbfa219ff99f6c6eaffb15c06b60e0" + "0cc2890277f0fd3c622115772f7048adaebed86e", + 86, + "f1192dd5dc2368b9cd421338b22433455ee0a3699f9379a08b9650ea2c126f0d", + 250, 4, 7849083, 1 }, + { "92263cbf6ac376499f68a4289d3bb59e5a22335eba63a32e6410249155b956b6a3" + "b48d4a44906b18b897127300b375b8f834f1ceffc70880a885f47c33876717e392" + "be57f7da3ae58da4fd1f43daa7e44bb82d3717af4319349c24cd31e46d295856b0" + "441b6b289992a11ced1cc3bf3011604590244a3eb737ff221129215e4e4347f491" + "5d41292b5173d196eb9add693be5319fdadc242906178bb6c0286c9b6ca6012746" + "711f58c8c392016b2fdfc09c64f0f6b6ab7b", + 183, + "3b840e20e9555e9fb031c4ba1f1747ce25cc1d0ff664be676b9b4a90641ff194", + 249, 3, 7994791, 1 }, + { "027b6d8e8c8c474e9b69c7d9ed4f9971e8e1ce2f6ba95048414c3970f0f09b70e3" + "b6c5ae05872b3d8678705b7d381829c351a5a9c88c233569b35d6b0b809df44b64" + "51a9c273f1150e2ef8a0b5437eb701e373474cd44b97ef0248ebce2ca0400e1b53" + "f3d86221eca3f18eb45b702b9172440f774a82cbf1f6f525df30a6e293c873cce6" + "9bb078ed1f0d31e7f9b8062409f37f19f8550aae", + 152, + "eb2a3056a09ad2d7d7f975bcd707598f24cd32518cde3069f2e403b34bfee8a5", 5, + 4, 1397645, 1 }, + { "4a857e2ee8aa9b6056f2424e84d24a72473378906ee04a46cb05311502d5250b82" + "ad86b83c8f20a23dbb74f6da60b0b6ecffd67134d45946ac8ebfb3064294bc097d" + "43ced68642bfb8bbbdd0f50b30118f5e", + 82, + "39d82eef32010b8b79cc5ba88ed539fbaba741100f2edbeca7cc171ffeabf258", + 190, 3, 1432947, 1 }, + { "c7b09aec680e7b42fedd7fc792e78b2f6c1bea8f4a884320b648f81e8cf515e8ba" + "9dcfb11d43c4aae114c1734aa69ca82d44998365db9c93744fa28b63fd16000e82" + "61cbbe083e7e2da1e5f696bde0834fe53146d7e0e35e7de9920d041f5a5621aabe" + "02da3e2b09b405b77937efef3197bd5772e41fdb73fb5294478e45208063b5f58e" + "089dbeb6d6342a909c1307b3fff5fe2cf4da56bdae50848f", + 156, + "039c056d933b475032777edbaffac50f143f64c123329ed9cf59e3b65d3f43b6", + 178, 3, 4886999, 1 }, + { "b540beb016a5366524d4605156493f9874514a5aa58818cd0c6dfffaa9e90205f1" + "7b", + 34, + "44071f6d181561670bda728d43fb79b443bb805afdebaf98622b5165e01b15fb", + 231, 1, 1631659, 1 }, + { "a14975c26c088755a8b715ff2528d647cd343987fcf4aa25e7194a8417fb2b4b3f" + "7268da9f3182b4cfb22d138b2749d673a47ecc7525dd15a0a3c66046971784bb63" + "d7eae24cc84f2631712075a10e10a96b0e0ee67c43e01c423cb9c44e5371017e9c" + "496956b632158da3fe12addecb88912e6759bc37f9af2f45af72c5cae3b179ffb6" + "76a697de6ebe45cd4c16d4a9d642d29ddc0186a0a48cb6cd62bfc3dd229d313b30" + "1560971e740e2cf1f99a9a090a5b283f35475057e96d7064e2e0fc81984591068d" + "55a3b4169f22cccb0745a2689407ea1901a0a766eb99", + 220, + "3d968b2752b8838431165059319f3ff8910b7b8ecb54ea01d3f54769e9d98daf", + 167, 3, 1784128, 1 }, + }; + char passwd[256]; + unsigned char salt[crypto_pwhash_SALTBYTES]; + unsigned char out[256]; + char out_hex[256 * 2 + 1]; + size_t i = 0U; + + do { + sodium_hex2bin((unsigned char *) passwd, sizeof passwd, + tests[i].passwd_hex, strlen(tests[i].passwd_hex), NULL, + NULL, NULL); + sodium_hex2bin(salt, sizeof salt, tests[i].salt_hex, + strlen(tests[i].salt_hex), NULL, NULL, NULL); + if (crypto_pwhash(out, (unsigned long long) tests[i].outlen, passwd, + tests[i].passwd_len, (const unsigned char *) salt, + tests[i].opslimit, tests[i].memlimit, + crypto_pwhash_alg_default()) != 0) { + printf("[tv] pwhash failure (maybe intentional): [%u]\n", + (unsigned int) i); + continue; + } + sodium_bin2hex(out_hex, sizeof out_hex, out, tests[i].outlen); + printf("%s\n", out_hex); + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +tv2(void) +{ + static struct { + const char * passwd_hex; + size_t passwd_len; + const char * salt_hex; + size_t outlen; + unsigned long long opslimit; + size_t memlimit; + unsigned int lanes; + } tests[] = { + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 4, 397645, 1 }, + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 3, 397645, 1 }, + }; + char passwd[256]; + unsigned char salt[crypto_pwhash_SALTBYTES]; + unsigned char out[256]; + char out_hex[256 * 2 + 1]; + size_t i = 0U; + + do { + sodium_hex2bin((unsigned char *) passwd, sizeof passwd, + tests[i].passwd_hex, strlen(tests[i].passwd_hex), NULL, + NULL, NULL); + sodium_hex2bin(salt, sizeof salt, tests[i].salt_hex, + strlen(tests[i].salt_hex), NULL, NULL, NULL); + if (crypto_pwhash(out, (unsigned long long) tests[i].outlen, passwd, + tests[i].passwd_len, (const unsigned char *) salt, + tests[i].opslimit, tests[i].memlimit, + crypto_pwhash_alg_default()) != 0) { + printf("[tv2] pwhash failure: [%u]\n", (unsigned int) i); + continue; + } + sodium_bin2hex(out_hex, sizeof out_hex, out, tests[i].outlen); + printf("%s\n", out_hex); + } while (++i < (sizeof tests) / (sizeof tests[0])); + + if (crypto_pwhash_argon2id(out, sizeof out, "password", strlen("password"), salt, 3, + 1ULL << 12, 0) != -1) { + printf("[tv2] pwhash should have failed (0)\n"); + } + if (crypto_pwhash_argon2id(out, sizeof out, "password", strlen("password"), salt, 3, + 1, crypto_pwhash_argon2id_alg_argon2id13()) != -1) { + printf("[tv2] pwhash should have failed (1)\n"); + } + if (crypto_pwhash_argon2id(out, sizeof out, "password", strlen("password"), salt, 3, + 1ULL << 12, crypto_pwhash_argon2id_alg_argon2id13()) != -1) { + printf("[tv2] pwhash should have failed (2)\n"); + } + if (crypto_pwhash_argon2id(out, sizeof out, "password", strlen("password"), salt, 2, + 1ULL << 12, crypto_pwhash_argon2id_alg_argon2id13()) != -1) { + printf("[tv2] pwhash should have failed (3)\n"); + } + if (crypto_pwhash_argon2id(out, 15, "password", strlen("password"), salt, 3, + 1ULL << 12, crypto_pwhash_argon2id_alg_argon2id13()) != -1) { + printf("[tv2] pwhash with a short output length should have failed\n"); + } + if (crypto_pwhash_argon2id(out, sizeof out, "password", 0x100000000ULL, salt, 3, + 1ULL << 12, crypto_pwhash_argon2id_alg_argon2id13()) != -1) { + printf("[tv2] pwhash with a long password length should have failed\n"); + } + assert(crypto_pwhash_argon2id(out, sizeof out, "password", strlen("password"), salt, + OPSLIMIT, MEMLIMIT, crypto_pwhash_alg_argon2i13()) == -1); +} + +static void +tv3(void) +{ + static struct { + const char *passwd; + const char *out; + } tests[] = { + { "", + "$argon2id$v=19$m=4096,t=0,p=1$X1NhbHQAAAAAAAAAAAAAAA$bWh++MKN1OiFHKgIWTLvIi1iHicmHH7+Fv3K88ifFfI" }, + { "", + "$argon2id$v=19$m=2048,t=4,p=1$SWkxaUhpY21ISDcrRnYzSw$Mbg/Eck1kpZir5T9io7C64cpffdTBaORgyriLQFgQj8" }, + { "", + "$argon2id$v=19$m=4882,t=2,p=1$bA81arsiXysd3WbTRzmEOw$Nm8QBM+7RH1DXo9rvp5cwKEOOOfD2g6JuxlXihoNcpE" }, + { "^T5H$JYt39n%K*j:W]!1s?vg!:jGi]Ax?..l7[p0v:1jHTpla9;]bUN;?bWyCbtqg ", + "$argon2id$v=19$m=4096,t=0,p=1$PkEgMTYtYnl0ZXMgc2FsdA$ltB/ue1kPtBMBGfsysMpPigE6hiNEKZ9vs8vLNVDQGA" }, + { "^T5H$JYt39n%K*j:W]!1s?vg!:jGi]Ax?..l7[p0v:1jHTpla9;]bUN;?bWyCbtqg ", + "$argon2id$v=19$m=4096,t=19,p=1$PkEgMTYtYnl0ZXMgc2FsdA$ltB/ue1kPtBMBGfsysMpPigE6hiNEKZ9vs8vLNVDQGA" }, + { "K3S=KyH#)36_?]LxeR8QNKw6X=gFbxai$C%29V*", + "$argon2id$v=19$m=4096,t=1,p=3$PkEgcHJldHR5IGxvbmcgc2FsdA$HUqx5Z1b/ZypnUrvvJ5UC2Q+T6Q1WwASK/Kr9dRbGA0" } + }; + char *out; + char *passwd; + size_t i = 0U; + int ret; + + do { + out = (char *) sodium_malloc(strlen(tests[i].out) + 1U); + assert(out != NULL); + memcpy(out, tests[i].out, strlen(tests[i].out) + 1U); + passwd = (char *) sodium_malloc(strlen(tests[i].passwd) + 1U); + assert(passwd != NULL); + memcpy(passwd, tests[i].passwd, strlen(tests[i].passwd) + 1U); + ret = crypto_pwhash_str_verify(out, passwd, strlen(passwd)); + sodium_free(out); + sodium_free(passwd); + if (ret != 0) { + printf("[tv3] pwhash_argon2id_str failure (maybe intentional): [%u]\n", + (unsigned int) i); + } + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +str_tests(void) +{ + char *str_out; + char *str_out2; + char *salt; + const char *passwd = "Correct Horse Battery Staple"; + + salt = (char *) sodium_malloc(crypto_pwhash_argon2id_SALTBYTES); + str_out = (char *) sodium_malloc(crypto_pwhash_argon2id_STRBYTES); + str_out2 = (char *) sodium_malloc(crypto_pwhash_argon2id_STRBYTES); + memcpy(salt, ">A 16-bytes salt", crypto_pwhash_argon2id_SALTBYTES); + if (crypto_pwhash_str(str_out, passwd, strlen(passwd), OPSLIMIT, + MEMLIMIT) != 0) { + printf("pwhash_str failure\n"); + } + if (crypto_pwhash_str(str_out2, passwd, strlen(passwd), OPSLIMIT, + MEMLIMIT) != 0) { + printf("pwhash_str(2) failure\n"); + } + if (strcmp(str_out, str_out2) == 0) { + printf("pwhash_str() doesn't generate different salts\n"); + } + if (crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT) != 0 || + crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT) != 0) { + printf("needs_rehash() false positive\n"); + } + if (crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT / 2) != 1 || + crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT - 1, MEMLIMIT) != 1 || + crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT * 2) != 1 || + crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT + 1, MEMLIMIT) != 1) { + printf("needs_rehash() false negative (0)\n"); + } + if (crypto_pwhash_argon2id_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT / 2) != 1 || + crypto_pwhash_argon2id_str_needs_rehash(str_out, OPSLIMIT - 1, MEMLIMIT) != 1 || + crypto_pwhash_argon2id_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT * 2) != 1 || + crypto_pwhash_argon2id_str_needs_rehash(str_out, OPSLIMIT + 1, MEMLIMIT) != 1) { + printf("needs_rehash() false negative (1)\n"); + } + if (crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT / 2) != -1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT - 1, MEMLIMIT) != -1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT * 2) != -1 || + crypto_pwhash_argon2i_str_needs_rehash(str_out, OPSLIMIT + 1, MEMLIMIT) != -1) { + printf("needs_rehash() false negative (2)\n"); + } + if (crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT / 2) != 1) { + printf("pwhash_str_needs_rehash() didn't handle argon2id\n"); + } + if (crypto_pwhash_str_needs_rehash(str_out + 1, OPSLIMIT, MEMLIMIT) != -1 || + crypto_pwhash_argon2id_str_needs_rehash(str_out + 1, OPSLIMIT, MEMLIMIT) != -1) { + printf("needs_rehash() didn't fail with an invalid hash string\n"); + } + if (sodium_is_zero((const unsigned char *) str_out + strlen(str_out), + crypto_pwhash_STRBYTES - strlen(str_out)) != 1 || + sodium_is_zero((const unsigned char *) str_out2 + strlen(str_out2), + crypto_pwhash_STRBYTES - strlen(str_out2)) != 1) { + printf("pwhash_argon2id_str() doesn't properly pad with zeros\n"); + } + if (crypto_pwhash_argon2id_str_verify(str_out, passwd, strlen(passwd)) != 0) { + printf("pwhash_argon2id_str_verify(1) failure\n"); + } + if (crypto_pwhash_str_verify(str_out, passwd, strlen(passwd)) != 0) { + printf("pwhash_str_verify(1') failure\n"); + } + str_out[14]++; + if (crypto_pwhash_str_verify(str_out, passwd, strlen(passwd)) != -1) { + printf("pwhash_argon2id_str_verify(2) failure\n"); + } + str_out[14]--; + assert(str_out[crypto_pwhash_argon2id_STRBYTES - 1U] == 0); + + if (crypto_pwhash_str(str_out2, passwd, 0x100000000ULL, OPSLIMIT, + MEMLIMIT) != -1) { + printf("pwhash_str() with a large password should have failed\n"); + } + if (crypto_pwhash_str(str_out2, passwd, strlen(passwd), 1, MEMLIMIT) != 0) { + printf("pwhash_str() with a small opslimit should not have failed\n"); + } + if (crypto_pwhash_str(str_out2, passwd, strlen(passwd), 0, MEMLIMIT) != -1) { + printf("pwhash_argon2id_str() with a null opslimit should have failed\n"); + } + { + const char *str_in_ ="$argon2id$m=65536,t=2,p=1c29tZXNhbHQ" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"; + char *str_in = (char *) sodium_malloc(strlen(str_in_) + 1U); + + const char *password_in_ = "password"; + char *password_in = (char *) sodium_malloc(strlen(password_in_) + 1U); + + memcpy(str_in, str_in_, strlen(str_in_) + 1U); + memcpy(password_in, password_in_, strlen(password_in_) + 1U); + + if (crypto_pwhash_argon2i_str_verify(str_in, password_in, + 0x100000000ULL) != -1) { + printf("pwhash_str_verify(invalid(0)) failure\n"); + } + + sodium_free(password_in); + sodium_free(str_in); + } + if (crypto_pwhash_str_verify("$argon2id$m=65536,t=2,p=1c29tZXNhbHQ" + "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(1)) failure %d\n", errno); + } + if (crypto_pwhash_str_verify("$argon2id$m=65536,t=2,p=1$c29tZXNhbHQ" + "9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(2)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$m=65536,t=2,p=1$c29tZXNhbHQ" + "$b2G3seW+uPzerwQQC+/E1K50CLLO7YXy0JRcaTuswRo", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(3)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$v=19$m=65536,t=2,p=1c29tZXNhbHQ" + "$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(4)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(5)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" + "$8iIuixkI73Js3G1uMbezQXD0b8LG4SXGsOwoQkdAQIM", + "password", strlen("password")) != -1) { + printf("pwhash_str_verify(invalid(6)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$v=19$m=256,t=3,p=1$MDEyMzQ1Njc" + "$G5ajKFCoUzaXRLdz7UJb5wGkb2Xt+X5/GQjUYtS2+TE", + "password", strlen("password")) != 0) { + printf("pwhash_str_verify(valid(7)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$v=19$m=256,t=3,p=1$MDEyMzQ1Njc" + "$G5ajKFCoUzaXRLdz7UJb5wGkb2Xt+X5/GQjUYtS2+TE", + "passwore", strlen("passwore")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(7)) failure\n"); + } + if (crypto_pwhash_str_verify("$Argon2id$v=19$m=256,t=3,p=1$MDEyMzQ1Njc" + "$G5ajKFCoUzaXRLdz7UJb5wGkb2Xt+X5/GQjUYtS2+TE", + "password", strlen("password")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(8)) failure\n"); + } + if (crypto_pwhash_str_verify("$argon2id$v=19$m=256,t=3,p=2$MDEyMzQ1Njc" + "$G5ajKFCoUzaXRLdz7UJb5wGkb2Xt+X5/GQjUYtS2+TE", + "password", strlen("password")) != -1 || errno != EINVAL) { + printf("pwhash_str_verify(invalid(9)) failure\n"); + } + assert(crypto_pwhash_str_alg(str_out, "test", 4, OPSLIMIT, MEMLIMIT, + crypto_pwhash_ALG_ARGON2ID13) == 0); + assert(crypto_pwhash_argon2id_str_verify(str_out, "test", 4) == 0); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT) == 0); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, + OPSLIMIT / 2, MEMLIMIT) == 1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT / 2) == 1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, 0, 0) == 1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out + 1, + OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_argon2i_str_needs_rehash("", OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_str_alg(str_out, "test", 4, OPSLIMIT, MEMLIMIT, + crypto_pwhash_ALG_ARGON2I13) == 0); + assert(crypto_pwhash_argon2i_str_verify(str_out, "test", 4) == 0); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT) == 0); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, + OPSLIMIT / 2, MEMLIMIT) == 1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, + OPSLIMIT, MEMLIMIT / 2) == 1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out, 0, 0) == 1); + assert(crypto_pwhash_argon2id_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_argon2i_str_needs_rehash("", OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_argon2i_str_needs_rehash(str_out + 1, + OPSLIMIT, MEMLIMIT) == -1); + sodium_free(salt); + sodium_free(str_out); + sodium_free(str_out2); +} + +int +main(void) +{ + tv(); + tv2(); + tv3(); + str_tests(); + + assert(crypto_pwhash_bytes_min() > 0U); + assert(crypto_pwhash_bytes_max() > crypto_pwhash_bytes_min()); + assert(crypto_pwhash_passwd_max() > crypto_pwhash_passwd_min()); + assert(crypto_pwhash_saltbytes() > 0U); + assert(crypto_pwhash_strbytes() > 1U); + assert(crypto_pwhash_strbytes() > strlen(crypto_pwhash_strprefix())); + + assert(crypto_pwhash_opslimit_min() > 0U); + assert(crypto_pwhash_opslimit_max() > 0U); + assert(crypto_pwhash_memlimit_min() > 0U); + assert(crypto_pwhash_memlimit_max() > 0U); + assert(crypto_pwhash_opslimit_interactive() > 0U); + assert(crypto_pwhash_memlimit_interactive() > 0U); + assert(crypto_pwhash_opslimit_moderate() > 0U); + assert(crypto_pwhash_memlimit_moderate() > 0U); + assert(crypto_pwhash_opslimit_sensitive() > 0U); + assert(crypto_pwhash_memlimit_sensitive() > 0U); + assert(strcmp(crypto_pwhash_primitive(), "argon2i") == 0); + + assert(crypto_pwhash_bytes_min() == crypto_pwhash_BYTES_MIN); + assert(crypto_pwhash_bytes_max() == crypto_pwhash_BYTES_MAX); + assert(crypto_pwhash_passwd_min() == crypto_pwhash_PASSWD_MIN); + assert(crypto_pwhash_passwd_max() == crypto_pwhash_PASSWD_MAX); + assert(crypto_pwhash_saltbytes() == crypto_pwhash_SALTBYTES); + assert(crypto_pwhash_strbytes() == crypto_pwhash_STRBYTES); + + assert(crypto_pwhash_opslimit_min() == crypto_pwhash_OPSLIMIT_MIN); + assert(crypto_pwhash_opslimit_max() == crypto_pwhash_OPSLIMIT_MAX); + assert(crypto_pwhash_memlimit_min() == crypto_pwhash_MEMLIMIT_MIN); + assert(crypto_pwhash_memlimit_max() == crypto_pwhash_MEMLIMIT_MAX); + assert(crypto_pwhash_opslimit_interactive() == + crypto_pwhash_OPSLIMIT_INTERACTIVE); + assert(crypto_pwhash_memlimit_interactive() == + crypto_pwhash_MEMLIMIT_INTERACTIVE); + assert(crypto_pwhash_opslimit_moderate() == + crypto_pwhash_OPSLIMIT_MODERATE); + assert(crypto_pwhash_memlimit_moderate() == + crypto_pwhash_MEMLIMIT_MODERATE); + assert(crypto_pwhash_opslimit_sensitive() == + crypto_pwhash_OPSLIMIT_SENSITIVE); + assert(crypto_pwhash_memlimit_sensitive() == + crypto_pwhash_MEMLIMIT_SENSITIVE); + + assert(crypto_pwhash_argon2id_bytes_min() == crypto_pwhash_bytes_min()); + assert(crypto_pwhash_argon2id_bytes_max() == crypto_pwhash_bytes_max()); + assert(crypto_pwhash_argon2id_passwd_min() == crypto_pwhash_passwd_min()); + assert(crypto_pwhash_argon2id_passwd_max() == crypto_pwhash_passwd_max()); + assert(crypto_pwhash_argon2id_saltbytes() == crypto_pwhash_saltbytes()); + assert(crypto_pwhash_argon2id_strbytes() == crypto_pwhash_strbytes()); + assert(strcmp(crypto_pwhash_argon2id_strprefix(), + crypto_pwhash_strprefix()) == 0); + assert(crypto_pwhash_argon2id_opslimit_min() == + crypto_pwhash_opslimit_min()); + assert(crypto_pwhash_argon2id_opslimit_max() == + crypto_pwhash_opslimit_max()); + assert(crypto_pwhash_argon2id_memlimit_min() == + crypto_pwhash_memlimit_min()); + assert(crypto_pwhash_argon2id_memlimit_max() == + crypto_pwhash_memlimit_max()); + assert(crypto_pwhash_argon2id_opslimit_interactive() == + crypto_pwhash_opslimit_interactive()); + assert(crypto_pwhash_argon2id_opslimit_moderate() == + crypto_pwhash_opslimit_moderate()); + assert(crypto_pwhash_argon2id_opslimit_sensitive() == + crypto_pwhash_opslimit_sensitive()); + assert(crypto_pwhash_argon2id_memlimit_interactive() == + crypto_pwhash_memlimit_interactive()); + assert(crypto_pwhash_argon2id_memlimit_moderate() == + crypto_pwhash_memlimit_moderate()); + assert(crypto_pwhash_argon2id_memlimit_sensitive() == + crypto_pwhash_memlimit_sensitive()); + assert(crypto_pwhash_alg_argon2id13() == + crypto_pwhash_argon2id_alg_argon2id13()); + assert(crypto_pwhash_alg_argon2i13() == crypto_pwhash_ALG_ARGON2I13); + assert(crypto_pwhash_alg_argon2i13() != crypto_pwhash_alg_default()); + assert(crypto_pwhash_alg_argon2id13() == crypto_pwhash_ALG_ARGON2ID13); + assert(crypto_pwhash_alg_argon2id13() != crypto_pwhash_alg_argon2i13()); + assert(crypto_pwhash_alg_argon2id13() == crypto_pwhash_alg_default()); + + assert(crypto_pwhash_argon2id(guard_page, 0, (const char *) guard_page, 0, guard_page, + crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE, + crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE, + 0) == -1); + assert(crypto_pwhash_argon2id(guard_page, 0, (const char *) guard_page, 0, guard_page, + crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE, + crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE, + crypto_pwhash_ALG_ARGON2I13) == -1); + assert(crypto_pwhash_argon2i(guard_page, 0, (const char *) guard_page, 0, guard_page, + crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE, + crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE, + 0) == -1); + assert(crypto_pwhash_argon2i(guard_page, 0, (const char *) guard_page, 0, guard_page, + crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE, + crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE, + crypto_pwhash_ALG_ARGON2ID13) == -1); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.exp b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.exp new file mode 100644 index 0000000..a259827 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.exp @@ -0,0 +1,14 @@ +18acec5d6507739f203d1f5d9f1d862f7c2cdac4f19d2bdff64487e60d969e3ced615337b9eec6ac4461c6ca07f0939741e57c24d0005c7ea171a0ee1e7348249d135b38f222e4dad7b9a033ed83f5ca27277393e316582033c74affe2566a2bea47f91f0fd9fe49ece7e1f79f3ad6e9b23e0277c8ecc4b313225748dd2a80f5679534a0700e246a79a49b3f74eb89ec6205fe1eeb941c73b1fcf1 +26bab5f101560e48c711da4f05e81f5a3802b7a93d5155b9cab153069cc42b8e9f910bfead747652a0708d70e4de0bada37218bd203a1201c36b42f9a269b675b1f30cfc36f35a3030e9c7f57dfba0d341a974c1886f708c3e8297efbfe411bb9d51375264bd7c70d57a8a56fc9de2c1c97c08776803ec2cd0140bba8e61dc0f4ad3d3d1a89b4b710af81bfe35a0eea193e18a6da0f5ec05542c9eefc4584458e1da715611ba09617384748bd43b9bf1f3a6df4ecd091d0875e08d6e2fd8a5c7ce08904b5160cd38167b76ec76ef2d310049055a564da23d4ebd2b87e421cc33c401e12d5cd8d936c9baf75ebdfb557d342d2858fc781da31860 +6eb45e668582d63788ca8f6e930ca60b045a795fca987344f9a7a135aa3b5132b50a34a3864c26581f1f56dd0bcbfafbfa92cd9bff6b24a734cfe88f854aef4bda0a7983120f44936e8ff31d29728ac08ccce6f3f916b3c63962755c23a1fa9bb4e8823fc867bfd18f28980d94bc5874423ab7f96cc0ab78d8fa21fbd00cd3a1d96a73fa439ccc3fc4eab1590677b06cc78b0f674dfb680f23022fb902022dd8620803229c6ddf79a8156ccfce48bbd76c05ab670634f206e5b2e896230baa74a856964dbd8511acb71d75a1506766a125d8ce037f1db72086ebc3bccaefbd8cd9380167c2530386544ebfbeadbe237784d102bb92a10fd242 +[tv] pwhash failure (maybe intentional): [3] +08d8cd330c57e1b4643241d05bb468ba4ee4e932cd0858816be9ef15360b27bbd06a87130ee92222be267a29b81f5ae8fe8613324cfc4832dc49387fd0602f1c57b4d0f3855db94fb7e12eb05f9a484aed4a4307abf586cd3d55c809bc081541e00b682772fb2066504ff935b8ebc551a2083882f874bc0fae68e56848ae34c91097c3bf0cca8e75c0797eef3efde3f75e005815018db3cf7c109a812264c4de69dcb22322dbbcfa447f5b00ecd1b04a7be1569c8e556adb7bba48adf81d +d6e9d6cabd42fb9ba7162fe9b8e41d59d3c7034756cb460c9affe393308bd0225ce0371f2e6c3ca32aca2002bf2d3909c6b6e7dfc4a00e850ff4f570f8f749d4bb6f0091e554be67a9095ae1eefaa1a933316cbec3c2fd4a14a5b6941bda9b7eabd821d79abde2475a53af1a8571c7ee46460be415882e0b393f48c12f740a6a72cba9773000602e13b40d3dfa6ac1d4ec43a838b7e3e165fecad4b2498389e60a3ff9f0f8f4b9fca1126e64f49501e38690 +7fb72409b0987f8190c3729710e98c3f80c5a8727d425fdcde7f3644d467fe973f5b5fee683bd3fce812cb9ae5e9921a2d06c2f1905e4e839692f2b934b682f11a2fe2b90482ea5dd234863516dba6f52dc0702d324ec77d860c2e181f84472bd7104fedce071ffa93c5309494ad51623d214447a7b2b1462dc7d5d55a1f6fd5b54ce024118d86f0c6489d16545aaa87b6689dad9f2fb47fda9894f8e12b87d978b483ccd4cc5fd9595cdc7a818452f915ce2f7df95ec12b1c72e3788d473441d884f9748eb14703c21b45d82fd667b85f5b2d98c13303b3fe76285531a826b6fc0fe8e3dddecf +4e702bc5f891df884c6ddaa243aa846ce3c087fe930fef0f36b3c2be34164ccc295db509254743f18f947159c813bcd5dd8d94a3aec93bbe57605d1fad1aef1112687c3d4ef1cb329d21f1632f626818d766915d886e8d819e4b0b9c9307f4b6afc081e13b0cf31db382ff1bf05a16aac7af696336d75e99f82163e0f371e1d25c4add808e215697ad3f779a51a462f8bf52610af21fc69dba6b072606f2dabca7d4ae1d91d919 +20e7ba6faa2c0a4b07f3ff38e15e252a069c2c62bac3f2785d311764d73e67fd713be342ee938e6df4de6af1a89a44b8589838864457bcfe3cf0f2d329b800ab9f5810b6325588eb4e0c56f99192b2cc76dc8194dc1097fe5ed12ac4214481c03c3597131ba164a56e7187e2da565a8cd529668e9a37faa58a1701c49a14edf7a50dec4143b456cba6d14c957bb655e99ce96bc506961216ef887a +8fb6ed1862cdd2a399e10956c60dc9b2670338ea59c3414d0443216925ba24c6e89a17f3e56c12893dcbc9bc498e8308aea9627d9c9e47912d6342b631008719edfa2db364b97e60cf47a97ad9aa3b7f139d80ddda44f1ef2af881ce027a15644218cac6cc74751469ae56be0469fbc760825882b3e8abca55daaae5753575106cf867cd69932602c63ec880ad8811d9aa4870a9e0b39fef47c92e +[tv3] pwhash_argon2id_str failure (maybe intentional): [0] +[tv3] pwhash_argon2id_str failure (maybe intentional): [1] +[tv3] pwhash_argon2id_str failure (maybe intentional): [3] +OK diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.c b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.c new file mode 100644 index 0000000..5afe963 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.c @@ -0,0 +1,393 @@ + +#define TEST_NAME "pwhash_scrypt" +#include "cmptest.h" + +#define OUT_LEN 128 +#define OPSLIMIT 1000000 +#define MEMLIMIT 10000000 + +static void +tv(void) +{ + static struct { + const char *passwd_hex; + size_t passwdlen; + const char *salt_hex; + size_t outlen; + unsigned long long opslimit; + size_t memlimit; + } tests[] = { + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 481326, 7256678 }, + { "e125cee61c8cb7778d9e5ad0a6f5d978ce9f84de213a8556d9ffe202020ab4a6ed" + "9074a4eb3416f9b168f137510f3a30b70b96cbfa219ff99f6c6eaffb15c06b60e0" + "0cc2890277f0fd3c622115772f7048adaebed86e", + 86, + "f1192dd5dc2368b9cd421338b22433455ee0a3699f9379a08b9650ea2c126f0d", + 250, 535778, 7849083 }, + { "92263cbf6ac376499f68a4289d3bb59e5a22335eba63a32e6410249155b956b6a3" + "b48d4a44906b18b897127300b375b8f834f1ceffc70880a885f47c33876717e392" + "be57f7da3ae58da4fd1f43daa7e44bb82d3717af4319349c24cd31e46d295856b0" + "441b6b289992a11ced1cc3bf3011604590244a3eb737ff221129215e4e4347f491" + "5d41292b5173d196eb9add693be5319fdadc242906178bb6c0286c9b6ca6012746" + "711f58c8c392016b2fdfc09c64f0f6b6ab7b", + 183, + "3b840e20e9555e9fb031c4ba1f1747ce25cc1d0ff664be676b9b4a90641ff194", + 249, 311757, 7994791 }, + { "027b6d8e8c8c474e9b69c7d9ed4f9971e8e1ce2f6ba95048414c3970f0f09b70e3" + "b6c5ae05872b3d8678705b7d381829c351a5a9c88c233569b35d6b0b809df44b64" + "51a9c273f1150e2ef8a0b5437eb701e373474cd44b97ef0248ebce2ca0400e1b53" + "f3d86221eca3f18eb45b702b9172440f774a82cbf1f6f525df30a6e293c873cce6" + "9bb078ed1f0d31e7f9b8062409f37f19f8550aae", + 152, + "eb2a3056a09ad2d7d7f975bcd707598f24cd32518cde3069f2e403b34bfee8a5", 5, + 643464, 1397645 }, + { "4a857e2ee8aa9b6056f2424e84d24a72473378906ee04a46cb05311502d5250b82" + "ad86b83c8f20a23dbb74f6da60b0b6ecffd67134d45946ac8ebfb3064294bc097d" + "43ced68642bfb8bbbdd0f50b30118f5e", + 82, + "39d82eef32010b8b79cc5ba88ed539fbaba741100f2edbeca7cc171ffeabf258", + 190, 758010, 5432947 }, + { "1845e375479537e9dd4f4486d5c91ac72775d66605eeb11a787b78a7745f1fd005" + "2d526c67235dbae1b2a4d575a74cb551c8e9096c593a497aee74ba3047d911358e" + "de57bc27c9ea1829824348daaab606217cc931dcb6627787bd6e4e5854f0e8", + 97, + "3ee91a805aa62cfbe8dce29a2d9a44373a5006f4a4ce24022aca9cecb29d1473", + 212, 233177, 13101817 }, + { "c7b09aec680e7b42fedd7fc792e78b2f6c1bea8f4a884320b648f81e8cf515e8ba" + "9dcfb11d43c4aae114c1734aa69ca82d44998365db9c93744fa28b63fd16000e82" + "61cbbe083e7e2da1e5f696bde0834fe53146d7e0e35e7de9920d041f5a5621aabe" + "02da3e2b09b405b77937efef3197bd5772e41fdb73fb5294478e45208063b5f58e" + "089dbeb6d6342a909c1307b3fff5fe2cf4da56bdae50848f", + 156, + "039c056d933b475032777edbaffac50f143f64c123329ed9cf59e3b65d3f43b6", + 178, 234753, 4886999 }, + { "8f3a06e2fd8711350a517bb12e31f3d3423e8dc0bb14aac8240fca0995938d59bb" + "37bd0a7dfc9c9cc0705684b46612e8c8b1d6655fb0f9887562bb9899791a0250d1" + "320f945eda48cdc20c233f40a5bb0a7e3ac5ad7250ce684f68fc0b8c9633bfd75a" + "ad116525af7bdcdbbdb4e00ab163fd4df08f243f12557e", + 122, + "90631f686a8c3dbc0703ffa353bc1fdf35774568ac62406f98a13ed8f47595fd", + 55, 695191, 15738350 }, + { "b540beb016a5366524d4605156493f9874514a5aa58818cd0c6dfffaa9e90205f1" + "7b", + 34, + "44071f6d181561670bda728d43fb79b443bb805afdebaf98622b5165e01b15fb", + 231, 78652, 6631659 }, + { "a14975c26c088755a8b715ff2528d647cd343987fcf4aa25e7194a8417fb2b4b3f" + "7268da9f3182b4cfb22d138b2749d673a47ecc7525dd15a0a3c66046971784bb63" + "d7eae24cc84f2631712075a10e10a96b0e0ee67c43e01c423cb9c44e5371017e9c" + "496956b632158da3fe12addecb88912e6759bc37f9af2f45af72c5cae3b179ffb6" + "76a697de6ebe45cd4c16d4a9d642d29ddc0186a0a48cb6cd62bfc3dd229d313b30" + "1560971e740e2cf1f99a9a090a5b283f35475057e96d7064e2e0fc81984591068d" + "55a3b4169f22cccb0745a2689407ea1901a0a766eb99", + 220, + "3d968b2752b8838431165059319f3ff8910b7b8ecb54ea01d3f54769e9d98daf", + 167, 717248, 10784179 }, + }; + char passwd[256]; + unsigned char salt[crypto_pwhash_scryptsalsa208sha256_SALTBYTES]; + unsigned char out[256]; + char out_hex[256 * 2 + 1]; + size_t i = 0U; + + do { + sodium_hex2bin((unsigned char *) passwd, sizeof passwd, + tests[i].passwd_hex, strlen(tests[i].passwd_hex), NULL, + NULL, NULL); + sodium_hex2bin(salt, sizeof salt, tests[i].salt_hex, + strlen(tests[i].salt_hex), NULL, NULL, NULL); + if (crypto_pwhash_scryptsalsa208sha256( + out, (unsigned long long) tests[i].outlen, passwd, + tests[i].passwdlen, (const unsigned char *) salt, + tests[i].opslimit, tests[i].memlimit) != 0) { + printf("pwhash failure\n"); + } + sodium_bin2hex(out_hex, sizeof out_hex, out, tests[i].outlen); + printf("%s\n", out_hex); + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +tv2(void) +{ + static struct { + const char *passwd_hex; + size_t passwdlen; + const char *salt_hex; + size_t outlen; + unsigned long long opslimit; + size_t memlimit; + } tests[] = { + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 64, 1397645 }, + { "a347ae92bce9f80f6f595a4480fc9c2fe7e7d7148d371e9487d75f5c23008ffae0" + "65577a928febd9b1973a5a95073acdbeb6a030cfc0d79caa2dc5cd011cef02c08d" + "a232d76d52dfbca38ca8dcbd665b17d1665f7cf5fe59772ec909733b24de97d6f5" + "8d220b20c60d7c07ec1fd93c52c31020300c6c1facd77937a597c7a6", + 127, + "5541fbc995d5c197ba290346d2c559dedf405cf97e5f95482143202f9e74f5c2", + 155, 32768, 1397645 }, + }; + char passwd[256]; + unsigned char salt[crypto_pwhash_scryptsalsa208sha256_SALTBYTES]; + unsigned char out[256]; + char out_hex[256 * 2 + 1]; + size_t i = 0U; + + do { + sodium_hex2bin((unsigned char *) passwd, sizeof passwd, + tests[i].passwd_hex, strlen(tests[i].passwd_hex), NULL, + NULL, NULL); + sodium_hex2bin(salt, sizeof salt, tests[i].salt_hex, + strlen(tests[i].salt_hex), NULL, NULL, NULL); + if (crypto_pwhash_scryptsalsa208sha256( + out, (unsigned long long) tests[i].outlen, passwd, + tests[i].passwdlen, (const unsigned char *) salt, + tests[i].opslimit, tests[i].memlimit) != 0) { + printf("pwhash failure\n"); + } + sodium_bin2hex(out_hex, sizeof out_hex, out, tests[i].outlen); + printf("%s\n", out_hex); + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +tv3(void) +{ + static struct { + const char *passwd; + const char *out; + } tests[] = { + { "^T5H$JYt39n%K*j:W]!1s?vg!:jGi]Ax?..l7[p0v:1jHTpla9;]bUN;?bWyCbtqg " + "nrDFal+Jxl3,2`#^tFSu%v_+7iYse8-cCkNf!tD=KrW)", + "$7$B6....1....75gBMAGwfFWZqBdyF3WdTQnWdUsuTiWjG1fF9c1jiSD$tc8RoB3." + "Em3/zNgMLWo2u00oGIoTyJv4fl3Fl8Tix72" }, + { "bl72h6#y<':MFRZ>B IA1=NRkCKS%W8`1I.2uQxJN0g)N N aTt^4K!Iw5r " + "H6;crDsv^a55j9tsk'/GqweZn;cdk6+F_St6:#*=?ZCD_lw>.", + "$7$A6....3....Iahc6qM0.UQJHVgE4h9oa1/" + "4OWlWLm9CCtfguvz6bQD$QnXCo3M7nIqtry2WKsUZ5gQ.mY0wAlJu." + "WUhtE8vF66" }, + { "Py " + ">e.5b+tLo@rL`dC2k@eJ&4eVl!W=JJ4+k&mAt@gt',FS1JjqKW3aq21:]^kna`" + "mde7kVkN5NrpKUptu)@4*b&?BE_sJMG1=&@`3GBCV]Wg7xwgo7x3El", + "$7$96..../....f6bEusKt79kK4wdYN0ki2nw4bJQ7P3rN6k3BSigsK/" + "D$Dsvuw7vXj5xijmrb/NOhdgoyK/OiSIYv88cEtl9Cik7" }, + { "2vj;Um]FKOL27oam(:Uo8+UmSTvb1FD*h?jk_,S=;RDgF-$Fjk?]9yvfxe@fN^!NN(" + "Cuml?+2Raa", + "$7$86....I....7XwIxLtCx4VphmFeUa6OGuGJrFaIaYzDiLNu/" + "tyUPhD$U3q5GCEqCWxMwh.YQHDJrlg7FIZgViv9pcXE3h1vg61" }, + { "CT=[9uUoGav,J`kU+348tA50ue#sL:ABZ3QgF+r[#vh:tTOiL>s8tv%,Jeo]jH/" + "_4^i(*jD-_ku[9Ko[=86 06V", + "$7$A6....2....R3.bjH6YS9wz9z8Jsj.3weGQ3J80ZZElGw2oVux1TP6$" + "i5u6lFzXDHaIgYEICinLD6WNaovbiXP8SnLrDRdKgA9" }, + { "J#wNn`hDgOpTHNI.w^1a70%f,.9V_m038H_JIJQln`vdWnn/" + "rmILR?9H5g(+`;@H(2VosN9Fgk[WEjaBr'yB9Q19-imNa04[Mk5kvGcSn-TV", + "$7$B6....1....Dj1y.4mF1J9XmT/6IDskYdCLaPFJTq9xcCwXQ1DpT92$92/" + "hYfZLRq1nTLyIz.uc/dC6wLqwnsoqpkadrCXusm6" }, + { "j4BS38Asa;p)[K+9TY!3YDjQw+!qJb]>pP :_.9`dxM9k [eR7Y!yL-3)sNs[R,j_/^ " + "TH=5ny'15>6UXWcQW^6D%XCsO[vN[%ReA-`tV1vW(Nt*0KVK#]45P_A", + "$7$B6....1....D/" + "eyk8N5y6Z8YVQEsw521cTx.9zzLuK7YDs1KMMh.o4$alfW8ZbsUWnXc." + "vqon2zoljVk24Tt1.IsCuo2KurvS2" }, + { "K3S=KyH#)36_?]LxeR8QNKw6X=gFb'ai$C%29V* " + "tyh^Wo$TN-#Q4qkmtTCf0LLb.^E$0uykkP", + "$7$B6....1....CuBuU97xgAage8whp/" + "JNKobo0TFbsORGVbfcQIefyP8$aqalP." + "XofGViB8EPLONqHma8vs1xc9uTIMYh9CgE.S8" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + + /* Invalid pwhash strings */ + + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....1....$TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$.6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A.....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6.........TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i44269$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AH" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx54269" }, + { "Y0!?iQa9M%5ekffW(`", + "$7^A6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$!6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A!....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....!....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "", + "$7$A6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7fA6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4#" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$AX....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....1!...TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" + "a4ik5hGDN7foMuHOW.cp.CtX01UyCeO0.JAG.AHPpx5" }, + { "Y0!?iQa9M%5ekffW(`", "$7$A6....1" }, + { "Y0!?iQa9M%5ekffW(`", "$7$" }, + { "Y0!?iQa9M%5ekffW(`", "" }, + { "Y0!?iQa9M%5ekffW(`", + "$7$A6....1....TrXs5Zk6s8sWHpQgWDIXTR8kUU3s6Jc3s.DtdS8M2i4$" }, + { "test", + "$7$.6..../.....lgPchkGHqbeONR/xtuXyjCrt9kUSg6NlKFQO0OSxo/$.DbajbPYH9T7sg3fOtcgxvJzzfIgJBIxMkeQ8b24YQ." }, + { "test", + "$7$z6..../.....lgPchkGHqbeONR/xtuXyjCrt9kUSg6NlKFQO0OSxo/$.DbajbPYH9T7sg3fOtcgxvJzzfIgJBIxMkeQ8b24YQ." }, + { "test", + "$7$8zzzzzzzzzz.lgPchkGHqbeONR/xtuXyjCrt9kUSg6NlKFQO0OSxo/$.DbajbPYH9T7sg3fOtcgxvJzzfIgJBIxMkeQ8b24YQ." }, + { "test", + "$7$8.....zzzzz.lgPchkGHqbeONR/xtuXyjCrt9kUSg6NlKFQO0OSxo/$.DbajbPYH9T7sg3fOtcgxvJzzfIgJBIxMkeQ8b24YQ." }, + { "test", + "$7$86..../..../lgPchkGHqbeONR/xtuXyjCrt9kUSg6NlKFQO0OSxo/$.DbajbPYH9T7sg3fOtcgxvJzzfIgJBIxMkeQ8b24YQ." } + }; + char * out; + char * passwd; + size_t i = 0U; + + do { + out = (char *) sodium_malloc(strlen(tests[i].out) + 1U); + assert(out != NULL); + memcpy(out, tests[i].out, strlen(tests[i].out) + 1U); + passwd = (char *) sodium_malloc(strlen(tests[i].passwd) + 1U); + assert(passwd != NULL); + memcpy(passwd, tests[i].passwd, strlen(tests[i].passwd) + 1U); + if (crypto_pwhash_scryptsalsa208sha256_str_verify( + out, passwd, strlen(passwd)) != 0) { + printf("pwhash_str failure: [%u]\n", (unsigned int) i); + } + sodium_free(out); + sodium_free(passwd); + } while (++i < (sizeof tests) / (sizeof tests[0])); +} + +static void +str_tests(void) +{ + char *str_out; + char *str_out2; + const char *passwd = "Correct Horse Battery Staple"; + + str_out = + (char *) sodium_malloc(crypto_pwhash_scryptsalsa208sha256_STRBYTES); + str_out2 = + (char *) sodium_malloc(crypto_pwhash_scryptsalsa208sha256_STRBYTES); + if (crypto_pwhash_scryptsalsa208sha256_str(str_out, passwd, strlen(passwd), + OPSLIMIT, MEMLIMIT) != 0) { + printf("pwhash_str failure\n"); + } + if (crypto_pwhash_scryptsalsa208sha256_str(str_out2, passwd, strlen(passwd), + OPSLIMIT, MEMLIMIT) != 0) { + printf("pwhash_str(2) failure\n"); + } + if (strcmp(str_out, str_out2) == 0) { + printf("pwhash_str doesn't generate different salts\n"); + } + if (crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out, OPSLIMIT, MEMLIMIT) != 0) { + printf("needs_rehash() false positive\n"); + } + if (crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out, OPSLIMIT, MEMLIMIT / 2) != 1 || + crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out, OPSLIMIT / 2, MEMLIMIT) != 1 || + crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out, OPSLIMIT, MEMLIMIT * 2) != 1 || + crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out, OPSLIMIT * 2, MEMLIMIT) != 1) { + printf("needs_rehash() false negative\n"); + } + if (crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out + 1, OPSLIMIT, MEMLIMIT) != -1) { + printf("needs_rehash() didn't fail with an invalid hash string\n"); + } + if (crypto_pwhash_scryptsalsa208sha256_str_verify(str_out, passwd, + strlen(passwd)) != 0) { + printf("pwhash_str_verify failure\n"); + } + if (crypto_pwhash_scryptsalsa208sha256_str_verify(str_out, passwd, + strlen(passwd)) != 0) { + printf("pwhash_str_verify failure\n"); + } + str_out[14]++; + if (crypto_pwhash_scryptsalsa208sha256_str_verify(str_out, passwd, + strlen(passwd)) == 0) { + printf("pwhash_str_verify(2) failure\n"); + } + str_out[14]--; + + assert(str_out[crypto_pwhash_scryptsalsa208sha256_STRBYTES - 1U] == 0); + + assert(crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + (str_out, 0, 0) == 1); + assert(crypto_pwhash_str_needs_rehash(str_out, 0, 0) == -1); + assert(crypto_pwhash_str_needs_rehash(str_out, OPSLIMIT, MEMLIMIT) == -1); + assert(crypto_pwhash_scryptsalsa208sha256_str_needs_rehash + ("", OPSLIMIT, MEMLIMIT) == -1); + + sodium_free(str_out); + sodium_free(str_out2); +} + +int +main(void) +{ + tv(); + tv2(); + tv3(); + str_tests(); + + assert(crypto_pwhash_scryptsalsa208sha256_bytes_min() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_bytes_max() > + crypto_pwhash_scryptsalsa208sha256_bytes_min()); + assert(crypto_pwhash_scryptsalsa208sha256_passwd_max() > + crypto_pwhash_scryptsalsa208sha256_passwd_min()); + assert(crypto_pwhash_scryptsalsa208sha256_saltbytes() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_strbytes() > 1U); + assert(crypto_pwhash_scryptsalsa208sha256_strbytes() > + strlen(crypto_pwhash_scryptsalsa208sha256_strprefix())); + + assert(crypto_pwhash_scryptsalsa208sha256_opslimit_min() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_opslimit_max() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_memlimit_min() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_memlimit_max() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_opslimit_interactive() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_memlimit_interactive() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive() > 0U); + assert(crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive() > 0U); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.exp b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.exp new file mode 100644 index 0000000..2f98d0e --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.exp @@ -0,0 +1,37 @@ +8d40f5f8c6a1791204f03e19a98cd74f918b6e331b39cfc2415e5014d7738b7bb0a83551fb14a035e07fdd4dc0c60c1a6822ac253918979f6324ff0c87cba75d3b91f88f41ca5414a0f152bdc4d636f42ab2250afd058c19ec31a3374d1bd7133289bf21513ff67cbf8482e626aee9864c58fd05f9ea02e508a10182b7d838157119866f072004987ef6c56683ed207705923921af9d76444a331a +d985d4c278343a46d82af0c4268b7ae6b6d1d2dd289675ef45bfb6d0648bffe5bab8c91228f3a31b091154a9c1142670a07b92e70a298333066de07db9300e046fd7cacc99780804683df7babdfc9d019047178400b2875bde0a1ad824dda7a422d9ed48475af9a3876378dd3a2f206e34984e223afb82c0c1e4644c9a458f4666379fdd3e2d9206d87e3c32c3977f35826a27590baaa1ec1a3bd7d15a92bc84c95dcfc56c14fca7c4c9810162dfdf9dc08a191e79fe40250b7e07d3a9317d9a5cb56e1062c419a6cd6a9b73128e8ad79ab7efffbb3cc52c1f49f86d2ebb46e6e4846aecdb14c2d046f5380517ff8cc794e4a772a58b93083dad +ee7e9e1369267ec555981f0ea088ff6f93953abfcb767d88ec3c46393d24cfbaba5e4e26e0f35b5d5259647748476d65cd8881c96f8cda049d9c877b2d33d932e67f4c0df2cb434b4b4900e0c49c3f8ba9663795420577e65d0b456201ad9162fbc485c7b44f2b34e6673aa3692c123021ee3b624c3bb22b808b89613d8ecc7b87da47f57152eb3f7b10ad206f6b09cb6935b347b5e42bc3b8c9c9bcd8d7b7c44929b367fc279dec48ea78e6ee3e2620d7459700bd0aedb1c9aa5a323ca94403927f5e5c2b73bda7c5c3287b62fe51874cfeb1dc3151cd886b26d83ece68833229d2d432798c602d85b0505947207d8430febbe901164b12ce +pwhash failure +0000000000 +bcc5c2fd785e4781d1201ed43d84925537e2a540d3de55f5812f29e9dd0a4a00451a5c8ddbb4862c03d45c75bf91b7fb49265feb667ad5c899fdbf2ca19eac67aa5e48595d5b02f8183ab07f71b1ce0d76e5df54919f63810ad0893ded7d1ca18fc956ec06ffd4c3d1f77a00ed53608947b25eea5df6bea02272be15815f974c321a2a9208674fdf59d1d798c2a12f1889df68b0c222b37ee9ef0d6391fc160b0281ec53073cb3a3706ce1d71c3af2f5237a1b3d8545d99012eecc0b4abb +82765c040c58c1810f8c053ef5c248556299385476bde44bdd91a0d9a239f24e9b1717fd8b23209ffa45b7aa7937296c601b79e77da99e8d2fda0ea4459be2d0900f5bc5a269b5488d873d4632d1baf75965e509ee24b12501a9ce3bbbd8b7d759987d545a1c221a363195e5802d768b3b9e00ebe5ac0ed8ad2362c1c4157b910a40f94adf2561a2b0d3e65dbb06f244e5ac44d362103df54c9b9175777b3db1cdadb03e977ab8a79baf1e1e18ec9f5d0f25c487ddc53d7e81910f83576b44e9caeece26e2eb376569ad3a8cdccbde8bc355210e +ca9216d4127e2e4a6ee3584b49be106217bb61cc807016d46d0cfbb1fd722e2bbac33541386bdfeac41a299ead22790993fcaa8e1d23bd1c8426afa5ff4c08e731dc476ef834f142c32dfb2c1be12b9978802e63b2cd6f226b1a8df59f0c79154d7ef4296a68ec654538d987104f9a11aca1b7c83ab2ed8fd69da6b88f0bcbd27d3fea01329cecf10c57ec3ba163d57b38801bd6c3b31ce527b33717bb56a46f78fb96be9f2424a21b3284232388cbba6a74 +2732a7566023c8db90a5fdd08dbe6c1b5e70c046d50c5735c8d86a589ba177f69db12d6cc3596319fa27c9e063ed05b8a31970a07dc905 +d7b1ef464be03ce9050b5108e25f0b8e821299986fe0ff89e17fbae65ba9fad167fbd265866ac03efc86ab0b50d46d6740a59adf5949b44f7f9f3ac3f3d4cc9f128966db9099deb1b6b78505242b2401a193820408eb0780b27162ebafb7c505b0e7c32ce66c6efc0be487008c1201454680498a2fc06e00b454e0b20933906bbb0e43b399b9ee46d882f107df1ebdd1e7cd867c9cdba6015b7e80064ae8b3417d969524bec046e782a13b125f058cd36b5d1ae65886ae7caab45a6d98651ada435b8ee11d5c1224232f5f515df974138dd6cf347b730481d4b073af8ff0394fe9f0b8cdfd99f5 +1839be14287053bfcd4ea60db82777fad1a6e9535c388b770743e61235449e668717199defd516c438b3ebd79b3529eb32482ef414525292ea1bbec09da10790a2330a4399f2fe6dd63d80954e3c547a5f1c619db5a30bde495b23f2214b4fa7572851d75246f2817775f0b521acc6efbc7832c9a76de7465e3c65cade88e86c973f85a882bb54f92b983977c6e937c88f083ba68c70fb49497065b158e2e789809b1d4cc9ec2d +d54916748076b9d9f72198c8fbef563462dc8c706e1ad38abd1fac570016721acd0a7659ab49a47299a996b43597690c0c947143069f35d83e606273dbf2d622321393949b8ed5a68315362c4f84804384d05e0e0e86bc00e3641233f9f975ab46b60ba185c5e5fe47f78efd207e69fd8f6390730828b93b9b3763ea1283caa03bc36726763715de811915681dd214524f5ad4dd386608cac6c7f2 +d54916748076b9d9f72198c8fbef563462dc8c706e1ad38abd1fac570016721acd0a7659ab49a47299a996b43597690c0c947143069f35d83e606273dbf2d622321393949b8ed5a68315362c4f84804384d05e0e0e86bc00e3641233f9f975ab46b60ba185c5e5fe47f78efd207e69fd8f6390730828b93b9b3763ea1283caa03bc36726763715de811915681dd214524f5ad4dd386608cac6c7f2 +pwhash_str failure: [10] +pwhash_str failure: [11] +pwhash_str failure: [12] +pwhash_str failure: [13] +pwhash_str failure: [14] +pwhash_str failure: [15] +pwhash_str failure: [16] +pwhash_str failure: [17] +pwhash_str failure: [18] +pwhash_str failure: [19] +pwhash_str failure: [20] +pwhash_str failure: [21] +pwhash_str failure: [22] +pwhash_str failure: [23] +pwhash_str failure: [24] +pwhash_str failure: [25] +pwhash_str failure: [26] +pwhash_str failure: [27] +pwhash_str failure: [28] +pwhash_str failure: [29] +pwhash_str failure: [30] +pwhash_str failure: [31] +pwhash_str failure: [32] +OK diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.c b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.c new file mode 100644 index 0000000..c2b3f3c --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.c @@ -0,0 +1,59 @@ + +#define TEST_NAME "pwhash_scrypt_ll" +#include "cmptest.h" + +static const char * passwd1 = ""; +static const char * salt1 = ""; +static const uint64_t N1 = 16U; +static const uint32_t r1 = 1U; +static const uint32_t p1 = 1U; + +static const char * passwd2 = "password"; +static const char * salt2 = "NaCl"; +static const uint64_t N2 = 1024U; +static const uint32_t r2 = 8U; +static const uint32_t p2 = 16U; + +static const char * passwd3 = "pleaseletmein"; +static const char * salt3 = "SodiumChloride"; +static const uint64_t N3 = 16384U; +static const uint32_t r3 = 8U; +static const uint32_t p3 = 1U; + +static void +tv(const char *passwd, const char *salt, uint64_t N, uint32_t r, uint32_t p) +{ + uint8_t data[64]; + size_t i; + size_t olen = (sizeof data / sizeof data[0]); + size_t passwd_len = strlen(passwd); + size_t salt_len = strlen(salt); + int line_items = 0; + + if (crypto_pwhash_scryptsalsa208sha256_ll( + (const uint8_t *) passwd, passwd_len, (const uint8_t *) salt, + salt_len, N, r, p, data, olen) != 0) { + printf("pwhash_scryptsalsa208sha256_ll([%s],[%s]) failure\n", passwd, + salt); + return; + } + + printf("scrypt('%s', '%s', %lu, %lu, %lu, %lu) =\n", passwd, salt, + (unsigned long) N, (unsigned long) r, (unsigned long) p, + (unsigned long) olen); + + for (i = 0; i < olen; i++) { + printf("%02x%c", data[i], line_items < 15 ? ' ' : '\n'); + line_items = line_items < 15 ? line_items + 1 : 0; + } +} + +int +main(void) +{ + tv(passwd1, salt1, N1, r1, p1); + tv(passwd2, salt2, N2, r2, p2); + tv(passwd3, salt3, N3, r3, p3); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.exp b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.exp new file mode 100644 index 0000000..9b7f6a7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.exp @@ -0,0 +1,15 @@ +scrypt('', '', 16, 1, 1, 64) = +77 d6 57 62 38 65 7b 20 3b 19 ca 42 c1 8a 04 97 +f1 6b 48 44 e3 07 4a e8 df df fa 3f ed e2 14 42 +fc d0 06 9d ed 09 48 f8 32 6a 75 3a 0f c8 1f 17 +e8 d3 e0 fb 2e 0d 36 28 cf 35 e2 0c 38 d1 89 06 +scrypt('password', 'NaCl', 1024, 8, 16, 64) = +fd ba be 1c 9d 34 72 00 78 56 e7 19 0d 01 e9 fe +7c 6a d7 cb c8 23 78 30 e7 73 76 63 4b 37 31 62 +2e af 30 d9 2e 22 a3 88 6f f1 09 27 9d 98 30 da +c7 27 af b9 4a 83 ee 6d 83 60 cb df a2 cc 06 40 +scrypt('pleaseletmein', 'SodiumChloride', 16384, 8, 1, 64) = +70 23 bd cb 3a fd 73 48 46 1c 06 cd 81 fd 38 eb +fd a8 fb ba 90 4f 8e 3e a9 b5 43 f6 54 5d a1 f2 +d5 43 29 55 61 3f 0f cf 62 d4 97 05 24 2a 9a f9 +e6 1e 85 dc 0d 65 1e 40 df cf 01 7b 45 57 58 87 diff --git a/components/espressif__libsodium/libsodium/test/default/randombytes.c b/components/espressif__libsodium/libsodium/test/default/randombytes.c new file mode 100644 index 0000000..d08066e --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/randombytes.c @@ -0,0 +1,164 @@ + +#define TEST_NAME "randombytes" +#include "cmptest.h" + +static unsigned char x[65536]; +static unsigned long long freq[256]; + +static int +compat_tests(void) +{ + size_t i; + + memset(x, 0, sizeof x); + randombytes(x, sizeof x); + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < sizeof x; ++i) { + ++freq[255 & (int) x[i]]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("nacl_tests failed\n"); + } + } + return 0; +} + +static int +randombytes_tests(void) +{ + static const unsigned char seed[randombytes_SEEDBYTES] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f + }; + unsigned char out[100]; + unsigned int f = 0U; + unsigned int i; + uint32_t n; + +#ifndef BENCHMARKS +# ifdef __EMSCRIPTEN__ + assert(strcmp(randombytes_implementation_name(), "js") == 0); +# else + assert(strcmp(randombytes_implementation_name(), "sysrandom") == 0); +# endif +#endif + randombytes(x, 1U); + do { + n = randombytes_random(); + f |= ((n >> 24) > 1); + f |= ((n >> 16) > 1) << 1; + f |= ((n >> 8) > 1) << 2; + f |= ((n) > 1) << 3; + f |= (n > 0x7fffffff) << 4; + } while (f != 0x1f); + randombytes_close(); + + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < 65536; ++i) { + ++freq[randombytes_uniform(256)]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("randombytes_uniform() test failed\n"); + } + } + assert(randombytes_uniform(1U) == 0U); + randombytes_close(); +#ifndef __EMSCRIPTEN__ + assert(&randombytes_internal_implementation == &randombytes_salsa20_implementation); + randombytes_set_implementation(&randombytes_internal_implementation); + assert(strcmp(randombytes_implementation_name(), "internal") == 0); +#endif + randombytes_stir(); + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < 65536; ++i) { + ++freq[randombytes_uniform(256)]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("randombytes_uniform() test failed\n"); + } + } + memset(x, 0, sizeof x); + randombytes_buf(x, sizeof x); + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < sizeof x; ++i) { + ++freq[255 & (int) x[i]]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("randombytes_buf() test failed\n"); + } + } + assert(randombytes_uniform(1U) == 0U); + + randombytes_buf_deterministic(out, sizeof out, seed); + for (i = 0; i < sizeof out; ++i) { + printf("%02x", out[i]); + } + printf(" (deterministic)\n"); + + randombytes_close(); + + randombytes(x, 1U); + randombytes_close(); + + assert(randombytes_SEEDBYTES > 0); + assert(randombytes_seedbytes() == randombytes_SEEDBYTES); + + return 0; +} + +static uint32_t +randombytes_uniform_impl(const uint32_t upper_bound) +{ + return upper_bound; +} + +static int +impl_tests(void) +{ + randombytes_implementation impl = randombytes_sysrandom_implementation; + uint32_t v = randombytes_random(); + + impl.uniform = randombytes_uniform_impl; + randombytes_close(); + randombytes_set_implementation(&impl); + assert(randombytes_uniform(1) == 1); + assert(randombytes_uniform(v) == v); + assert(randombytes_uniform(v) == v); + assert(randombytes_uniform(v) == v); + assert(randombytes_uniform(v) == v); + randombytes_close(); + impl.close = NULL; + randombytes_close(); + + return 0; +} + +int +main(void) +{ + compat_tests(); + randombytes_tests(); +#ifndef __EMSCRIPTEN__ + impl_tests(); +#endif + printf("OK\n"); + +#ifndef __EMSCRIPTEN__ + randombytes_set_implementation(&randombytes_salsa20_implementation); +#endif + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/randombytes.exp b/components/espressif__libsodium/libsodium/test/default/randombytes.exp new file mode 100644 index 0000000..cf955ee --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/randombytes.exp @@ -0,0 +1,2 @@ +0d8e6cc68715648926732e7ea73250cfaf2d58422083904c841a8ba33b986111f346ba50723a68ae283524a6bded09f83be6b80595856f72e25b86918e8b114bafb94bc8abedd73daab454576b7c5833eb0bf982a1bb4587a5c970ff0810ca3b791d7e12 (deterministic) +OK diff --git a/components/espressif__libsodium/libsodium/test/default/run.sh b/components/espressif__libsodium/libsodium/test/default/run.sh new file mode 100644 index 0000000..91e4377 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/run.sh @@ -0,0 +1,9 @@ +#! /bin/sh + +find . -type f -perm -100 -print | grep -v run.sh | sort | while read -r x; do + echo "[$x]" + if ! "$x"; then + echo "*** [$x] FAILED" >&2 + exit 1 + fi +done diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult.c b/components/espressif__libsodium/libsodium/test/default/scalarmult.c new file mode 100644 index 0000000..b410fcd --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult.c @@ -0,0 +1,77 @@ + +#define TEST_NAME "scalarmult" +#include "cmptest.h" + +static const unsigned char alicesk[crypto_scalarmult_BYTES] = { + 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, + 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, + 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a +}; + +static const unsigned char bobsk[crypto_scalarmult_BYTES] = { + 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, 0x7f, + 0x8b, 0x83, 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18, + 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb +}; + +static const unsigned char small_order_p[crypto_scalarmult_BYTES] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 +}; + +static char hex[crypto_scalarmult_BYTES * 2 + 1]; + +int +main(void) +{ + unsigned char *alicepk = + (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES); + unsigned char *bobpk = + (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES); + unsigned char *k = (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES); + int ret; + + assert(alicepk != NULL && bobpk != NULL && k != NULL); + + crypto_scalarmult_base(alicepk, alicesk); + sodium_bin2hex(hex, sizeof hex, alicepk, crypto_scalarmult_BYTES); + printf("%s\n", hex); + + crypto_scalarmult_base(bobpk, bobsk); + sodium_bin2hex(hex, sizeof hex, bobpk, crypto_scalarmult_BYTES); + printf("%s\n", hex); + + ret = crypto_scalarmult(k, alicesk, bobpk); + assert(ret == 0); + sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES); + printf("%s\n", hex); + + ret = crypto_scalarmult(k, bobsk, alicepk); + assert(ret == 0); + sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES); + printf("%s\n", hex); + + alicepk[31] ^= 0x80; + ret = crypto_scalarmult(k, bobsk, alicepk); + assert(ret == 0); + sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES); + printf("%s\n", hex); + + ret = crypto_scalarmult(k, bobsk, small_order_p); + assert(ret == -1); + + sodium_free(bobpk); + sodium_free(alicepk); + sodium_free(k); + + assert(crypto_scalarmult_bytes() > 0U); + assert(crypto_scalarmult_scalarbytes() > 0U); + assert(strcmp(crypto_scalarmult_primitive(), "curve25519") == 0); + assert(crypto_scalarmult_bytes() == crypto_scalarmult_curve25519_bytes()); + assert(crypto_scalarmult_scalarbytes() == + crypto_scalarmult_curve25519_scalarbytes()); + assert(crypto_scalarmult_bytes() == crypto_scalarmult_scalarbytes()); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult.exp new file mode 100644 index 0000000..df1d273 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult.exp @@ -0,0 +1,5 @@ +8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a +de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f +4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 +4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 +4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult2.c b/components/espressif__libsodium/libsodium/test/default/scalarmult2.c new file mode 100644 index 0000000..d1bb83d --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult2.c @@ -0,0 +1,23 @@ + +#define TEST_NAME "scalarmult2" +#include "cmptest.h" + +static unsigned char bobsk[32] = { 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, + 0x4b, 0x79, 0xe1, 0x7f, 0x8b, 0x83, 0x80, + 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, + 0x18, 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, + 0xff, 0x88, 0xe0, 0xeb }; + +int +main(void) +{ + unsigned char bobpk[32]; + char hex[65]; + int i; + + crypto_scalarmult_base(bobpk, bobsk); + sodium_bin2hex(hex, sizeof hex, bobpk, sizeof bobpk); + printf("%s\n", hex); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult2.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult2.exp new file mode 100644 index 0000000..9804b11 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult2.exp @@ -0,0 +1 @@ +de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult5.c b/components/espressif__libsodium/libsodium/test/default/scalarmult5.c new file mode 100644 index 0000000..adeda87 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult5.c @@ -0,0 +1,31 @@ + +#define TEST_NAME "scalarmult5" +#include "cmptest.h" + +static unsigned char alicesk[32] = { 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, + 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, + 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, + 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, + 0x1d, 0xb9, 0x2c, 0x2a }; + +static unsigned char bobpk[32] = { 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, + 0xb4, 0xd3, 0x5b, 0x61, 0xc2, 0xec, 0xe4, + 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, + 0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, + 0x6f, 0x88, 0x2b, 0x4f }; + +int +main(void) +{ + unsigned char k[32]; + char hex[65]; + int i; + int ret; + + ret = crypto_scalarmult(k, alicesk, bobpk); + assert(ret == 0); + sodium_bin2hex(hex, sizeof hex, k, sizeof k); + printf("%s\n", hex); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult5.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult5.exp new file mode 100644 index 0000000..e66cca1 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult5.exp @@ -0,0 +1 @@ +4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult6.c b/components/espressif__libsodium/libsodium/test/default/scalarmult6.c new file mode 100644 index 0000000..f8f0784 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult6.c @@ -0,0 +1,54 @@ + +#define TEST_NAME "scalarmult6" +#include "cmptest.h" + +static unsigned char bobsk_[crypto_scalarmult_SCALARBYTES] = { + 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, 0x7f, + 0x8b, 0x83, 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18, + 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb +}; + +static unsigned char alicepk_[crypto_scalarmult_SCALARBYTES] = { + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, + 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, + 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a +}; + +int +main(void) +{ + unsigned char *k; + unsigned char *bobsk; + unsigned char *alicepk; + int i; + int ret; + + k = (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES); + bobsk = (unsigned char *) sodium_malloc(crypto_scalarmult_SCALARBYTES); + alicepk = (unsigned char *) sodium_malloc(crypto_scalarmult_SCALARBYTES); + assert(k != NULL && bobsk != NULL && alicepk != NULL); + + memcpy(bobsk, bobsk_, crypto_scalarmult_SCALARBYTES); + memcpy(alicepk, alicepk_, crypto_scalarmult_SCALARBYTES); + + ret = crypto_scalarmult(k, bobsk, alicepk); + assert(ret == 0); + + sodium_free(alicepk); + sodium_free(bobsk); + + for (i = 0; i < 32; ++i) { + if (i > 0) { + printf(","); + } else { + printf(" "); + } + printf("0x%02x", (unsigned int) k[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + sodium_free(k); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult6.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult6.exp new file mode 100644 index 0000000..bec2113 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult6.exp @@ -0,0 +1,4 @@ + 0x4a,0x5d,0x9d,0x5b,0xa4,0xce,0x2d,0xe1 +,0x72,0x8e,0x3b,0xf4,0x80,0x35,0x0f,0x25 +,0xe0,0x7e,0x21,0xc9,0x47,0xd1,0x9e,0x33 +,0x76,0xf0,0x9b,0x3c,0x1e,0x16,0x17,0x42 diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult7.c b/components/espressif__libsodium/libsodium/test/default/scalarmult7.c new file mode 100644 index 0000000..54f64c2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult7.c @@ -0,0 +1,34 @@ + +#define TEST_NAME "scalarmult7" +#include "cmptest.h" + +static unsigned char p1[32] = { + 0x72, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, + 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, + 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0xea +}; + +static unsigned char p2[32] = { + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, + 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, + 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a +}; + +static unsigned char scalar[32]; +static unsigned char out1[32]; +static unsigned char out2[32]; + +int +main(void) +{ + int ret; + + scalar[0] = 1U; + ret = crypto_scalarmult_curve25519(out1, scalar, p1); + assert(ret == 0); + ret = crypto_scalarmult_curve25519(out2, scalar, p2); + assert(ret == 0); + printf("%d\n", !!memcmp(out1, out2, 32)); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult7.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult7.exp new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult7.exp @@ -0,0 +1 @@ +1 diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult8.c b/components/espressif__libsodium/libsodium/test/default/scalarmult8.c new file mode 100644 index 0000000..25a541d --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult8.c @@ -0,0 +1,580 @@ + +#define TEST_NAME "scalarmult8" +#include "cmptest.h" + +typedef struct TestData_ { + const char pk_hex[crypto_scalarmult_BYTES * 2 + 1]; + const char sk_hex[crypto_scalarmult_SCALARBYTES * 2 + 1]; + const char shared_hex[crypto_scalarmult_BYTES * 2 + 1]; + const char *outcome; +} TestData; + +static TestData test_data[] = { + { + "9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a", + "4852834d9d6b77dadeabaaf2e11dca66d19fe74993a7bec36c6e16a0983feaba", + "87b7f212b627f7a54ca5e0bcdaddd5389d9de6156cdbcf8ebe14ffbcfb436551", + "valid" + }, + { + "9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "4b82bd8650ea9b81a42181840926a4ffa16434d1bf298de1db87efb5b0a9e34e", + "valid" + }, + { + "63aa40c6e38346c5caf23a6df0a5e6c80889a08647e551b3563449befcfc9733", + "588c061a50804ac488ad774ac716c3f5ba714b2712e048491379a500211998a8", + "b1a707519495ffffb298ff941716b06dfab87cf8d91123fe2be9a233dda22212", + "acceptable" + }, + { + "0f83c36fded9d32fadf4efa3ae93a90bb5cfa66893bc412c43fa7287dbb99779", + "b05bfd32e55325d9fd648cb302848039000b390e44d521e58aab3b29a6960ba8", + "67dd4a6e165533534c0e3f172e4ab8576bca923a5f07b2c069b4c310ff2e935b", + "acceptable" + }, + { + "0b8211a2b6049097f6871c6c052d3c5fc1ba17da9e32ae458403b05bb283092a", + "70e34bcbe1f47fbc0fddfd7c1e1aa53d57bfe0f66d243067b424bb6210bed19c", + "4a0638cfaa9ef1933b47f8939296a6b25be541ef7f70e844c0bcc00b134de64a", + "acceptable" + }, + { + "343ac20a3b9c6a27b1008176509ad30735856ec1c8d8fcae13912d08d152f46c", + "68c1f3a653a4cdb1d37bba94738f8b957a57beb24d646e994dc29a276aad458d", + "399491fce8dfab73b4f9f611de8ea0b27b28f85994250b0f475d585d042ac207", + "acceptable" + }, + { + "fa695fc7be8d1be5bf704898f388c452bafdd3b8eae805f8681a8d15c2d4e142", + "d877b26d06dff9d9f7fd4c5b3769f8cdd5b30516a5ab806be324ff3eb69ea0b2", + "2c4fe11d490a53861776b13b4354abd4cf5a97699db6e6c68c1626d07662f758", + "acceptable" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "207494038f2bb811d47805bcdf04a2ac585ada7f2f23389bfd4658f9ddd4debc", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0100000000000000000000000000000000000000000000000000000000000000", + "202e8972b61c7e61930eb9450b5070eae1c670475685541f0476217e4818cfab", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0200000000000000000000000000000000000000000000000000000000000000", + "38dde9f3e7b799045f9ac3793d4a9277dadeadc41bec0290f81f744f73775f84", + "9a2cfe84ff9c4a9739625cae4a3b82a906877a441946f8d7b3d795fe8f5d1639", + "acceptable" + }, + { + "0300000000000000000000000000000000000000000000000000000000000000", + "9857a914e3c29036fd9a442ba526b5cdcdf28216153e636c10677acab6bd6aa5", + "4da4e0aa072c232ee2f0fa4e519ae50b52c1edd08a534d4ef346c2e106d21d60", + "acceptable" + }, + { + "ffffff030000f8ffff1f0000c0ffffff000000feffff070000f0ffff3f000000", + "48e2130d723305ed05e6e5894d398a5e33367a8c6aac8fcdf0a88e4b42820db7", + "9ed10c53747f647f82f45125d3de15a1e6b824496ab40410ffcc3cfe95760f3b", + "acceptable" + }, + { + "000000fcffff070000e0ffff3f000000ffffff010000f8ffff0f0000c0ffff7f", + "28f41011691851b3a62b641553b30d0dfddcb8fffcf53700a7be2f6a872e9fb0", + "cf72b4aa6aa1c9f894f4165b86109aa468517648e1f0cc70e1ab08460176506b", + "acceptable" + }, + { + "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff7f", + "18a93b6499b9f6b3225ca02fef410e0adec23532321d2d8ef1a6d602a8c65b83", + "5d50b62836bb69579410386cf7bb811c14bf85b1c7b17e5924c7ffea91ef9e12", + "acceptable" + }, + { + "eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "c01d1305a1338a1fcac2ba7e2e032b427e0b04903165aca957d8d0553d8717b0", + "19230eb148d5d67c3c22ab1daeff80a57eae4265ce2872657b2c8099fc698e50", + "acceptable" + }, + { + "0400000000000000000000000000000000000000000000000000000000000000", + "386f7f16c50731d64f82e6a170b142a4e34f31fd7768fcb8902925e7d1e21abe", + "0fcab5d842a078d7a71fc59b57bfb4ca0be6873b49dcdb9f44e14ae8fbdfa542", + "valid" + }, + { + "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000", + "e023a289bd5e90fa2804ddc019a05ef3e79d434bb6ea2f522ecb643a75296e95", + "54ce8f2275c077e3b1306a3939c5e03eef6bbb88060544758d9fef59b0bc3e4f", + "valid" + }, + { + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03", + "68f010d62ee8d926053a361c3a75c6ea4ebdc8606ab285003a6f8f4076b01e83", + "f136775c5beb0af8110af10b20372332043cab752419678775a223df57c9d30d", + "valid" + }, + { + "fffffffbfffffbffffdfffffdffffffffefffffefffff7fffff7ffffbfffff3f", + "58ebcb35b0f8845caf1ec630f96576b62c4b7b6c36b29deb2cb0084651755c96", + "bf9affd06b844085586460962ef2146ff3d4533d9444aab006eb88cc3054407d", + "valid" + }, + { + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f", + "188c4bc5b9c44b38bb658b9b2ae82d5b01015e093184b17cb7863503a783e1bb", + "d480de04f699cb3be0684a9cc2e31281ea0bc5a9dcc157d3d20158d46ca5246d", + "valid" + }, + { + "fffffffffeffff7ffffffffffeffff7ffffffffffeffff7ffffffffffeffff7f", + "e06c11bb2e13ce3dc7673f67f5482242909423a9ae95ee986a988d98faee23a2", + "4c4401cce6b51e4cb18f2790246c9bf914db667750a1cb89069092af07292276", + "valid" + }, + { + "ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "c0658c46dde18129293877535b1162b6f9f5414a23cf4d2cbc140a4d99da2b8f", + "578ba8cc2dbdc575afcf9df2b3ee6189f5337d6854c79b4ce165ea12293b3a0f", + "valid" + }, + { + "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800", + "10255c9230a97a30a458ca284a629669293a31890cda9d147febc7d1e22d6bb1", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157", + "78f1e8edf14481b389448dac8f59c70b038e7cf92ef2c7eff57a72466e115296", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "a0a05a3e8f9f44204d5f8059a94ac7dfc39a49ac016dd743dbfa43c5d671fd88", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "d0dbb3ed1906663f15420af31f4eaf6509d9a9949723500605ad7c1c6e7450a9", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "c0b1d0eb22b244fe3291140072cdd9d989b5f0ecd96c100feb5bca241c1d9f8f", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0000000000000000000000000000000000000000000000000000000000000080", + "480bf45f594942a8bc0f3353c6e8b8853d77f351f1c2ca6c2d1abf8a00b4229c", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0100000000000000000000000000000000000000000000000000000000000080", + "30f993fcf8514fc89bd8db14cd43ba0d4b2530e73c4276a05e1b145d420cedb4", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880", + "c04974b758380e2a5b5df6eb09bb2f6b3434f982722a8e676d3da251d1b3de83", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7", + "502a31373db32446842fe5add3e024022ea54f274182afc3d9f1bb3d39534eb5", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "90fa6417b0e37030fd6e43eff2abaef14c6793117a039cf621318ba90f4e98be", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "78ad3f26027f1c9fdd975a1613b947779bad2cf2b741ade01840885a30bb979c", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "98e23de7b1e0926ed9c87e7b14baf55f497a1d7096f93977680e44dc1c7b7b8b", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0000000000000000000000000000000000000000000000000000000000000000", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0100000000000000000000000000000000000000000000000000000000000000", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0000000000000000000000000000000000000000000000000000000000000080", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "0100000000000000000000000000000000000000000000000000000000000080", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae", + "0000000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "f01e48dafac9d7bcf589cbc382c878d18bda3550589ffb5d50b523bebe329dae", + "bd36a0790eb883098c988b21786773de0b3a4df162282cf110de18dd484ce74b", + "acceptable" + }, + { + "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "288796bc5aff4b81a37501757bc0753a3c21964790d38699308debc17a6eaf8d", + "b4e0dd76da7b071728b61f856771aa356e57eda78a5b1655cc3820fb5f854c5c", + "acceptable" + }, + { + "f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "98df845f6651bf1138221f119041f72b6dbc3c4ace7143d99fd55ad867480da8", + "6fdf6c37611dbd5304dc0f2eb7c9517eb3c50e12fd050ac6dec27071d4bfc034", + "acceptable" + }, + { + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "f09498e46f02f878829e78b803d316a2ed695d0498a08abdf8276930e24edcb0", + "4c8fc4b1c6ab88fb21f18f6d4c810240d4e94651ba44f7a2c863cec7dc56602d", + "acceptable" + }, + { + "0200000000000000000000000000000000000000000000000000000000000080", + "1813c10a5c7f21f96e17f288c0cc37607c04c5f5aea2db134f9e2ffc66bd9db8", + "1cd0b28267dc541c642d6d7dca44a8b38a63736eef5c4e6501ffbbb1780c033c", + "acceptable" + }, + { + "0300000000000000000000000000000000000000000000000000000000000080", + "7857fb808653645a0beb138a64f5f4d733a45ea84c3cda11a9c06f7e7139149e", + "8755be01c60a7e825cff3e0e78cb3aa4333861516aa59b1c51a8b2a543dfa822", + "acceptable" + }, + { + "0400000000000000000000000000000000000000000000000000000000000080", + "e03aa842e2abc56e81e87b8b9f417b2a1e5913c723eed28d752f8d47a59f498f", + "54c9a1ed95e546d27822a360931dda60a1df049da6f904253c0612bbdc087476", + "acceptable" + }, + { + "daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "f8f707b7999b18cb0d6b96124f2045972ca274bfc154ad0c87038c24c6d0d4b2", + "cc1f40d743cdc2230e1043daba8b75e810f1fbab7f255269bd9ebb29e6bf494f", + "acceptable" + }, + { + "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "a034f684fa631e1a348118c1ce4c98231f2d9eec9ba5365b4a05d69a785b0796", + "54998ee43a5b007bf499f078e736524400a8b5c7e9b9b43771748c7cdf880412", + "acceptable" + }, + { + "dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "30b6c6a0f2ffa680768f992ba89e152d5bc9893d38c9119be4f767bfab6e0ca5", + "ead9b38efdd723637934e55ab717a7ae09eb86a21dc36a3feeb88b759e391e09", + "acceptable" + }, + { + "eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "901b9dcf881e01e027575035d40b43bdc1c5242e030847495b0c7286469b6591", + "602ff40789b54b41805915fe2a6221f07a50ffc2c3fc94cf61f13d7904e88e0e", + "acceptable" + }, + { + "ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "8046677c28fd82c9a1bdb71a1a1a34faba1225e2507fe3f54d10bd5b0d865f8e", + "e00ae8b143471247ba24f12c885536c3cb981b58e1e56b2baf35c12ae1f79c26", + "acceptable" + }, + { + "efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "602f7e2f68a846b82cc269b1d48e939886ae54fd636c1fe074d710127d472491", + "98cb9b50dd3fc2b0d4f2d2bf7c5cfdd10c8fcd31fc40af1ad44f47c131376362", + "acceptable" + }, + { + "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "60887b3dc72443026ebedbbbb70665f42b87add1440e7768fbd7e8e2ce5f639d", + "38d6304c4a7e6d9f7959334fb5245bd2c754525d4c91db950206926234c1f633", + "acceptable" + }, + { + "f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "78d31dfa854497d72d8def8a1b7fb006cec2d8c4924647c93814ae56faeda495", + "786cd54996f014a5a031ec14db812ed08355061fdb5de680a800ac521f318e23", + "acceptable" + }, + { + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "c04c5baefa8302ddded6a4bb957761b4eb97aefa4fc3b8043085f96a5659b3a5", + "29ae8bc73e9b10a08b4f681c43c3e0ac1a171d31b38f1a48efba29ae639ea134", + "acceptable" + }, + { + "e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c", + "a046e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449a44", + "c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552", + "valid" + }, + { + "e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a413", + "4866e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba4d", + "95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957", + "valid" + }, + { + "0ab4e76380d84dde4f6833c58f2a9fb8f83bb0169b172be4b6e0592887741a36", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "0200000000000000000000000000000000000000000000000000000000000000", + "acceptable" + }, + { + "89e10d5701b4337d2d032181538b1064bd4084401ceca1fd12663a1959388000", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "0900000000000000000000000000000000000000000000000000000000000000", + "valid" + }, + { + "2b55d3aa4a8f80c8c0b2ae5f933e85af49beac36c2fa7394bab76c8933f8f81d", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "1000000000000000000000000000000000000000000000000000000000000000", + "valid" + }, + { + "63e5b1fe9601fe84385d8866b0421262f78fbfa5aff9585e626679b18547d959", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f", + "acceptable" + }, + { + "e428f3dac17809f827a522ce32355058d07369364aa78902ee10139b9f9dd653", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f", + "valid" + }, + { + "b3b50e3ed3a407b95de942ef74575b5ab8a10c09ee103544d60bdfed8138ab2b", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f", + "acceptable" + }, + { + "213fffe93d5ea8cd242e462844029922c43c77c9e3e42f562f485d24c501a20b", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f", + "valid" + }, + { + "91b232a178b3cd530932441e6139418f72172292f1da4c1834fc5ebfefb51e3f", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03", + "valid" + }, + { + "045c6e11c5d332556c7822fe94ebf89b56a3878dc27ca079103058849fabcb4f", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "acceptable" + }, + { + "1ca2190b71163539063c35773bda0c9c928e9136f0620aeb093f099197b7f74e", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "acceptable" + }, + { + "f76e9010ac33c5043b2d3b76a842171000c4916222e9e85897a0aec7f6350b3c", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "valid" + }, + { + "bb72688d8f8aa7a39cd6060cd5c8093cdec6fe341937c3886a99346cd07faa55", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "acceptable" + }, + { + "88fddea193391c6a5933ef9b71901549447205aae9da928a6b91a352ba10f41f", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "0000000000000000000000000000000000000000000000000000000000000002", + "acceptable" + }, + { + "303b392f153116cad9cc682a00ccc44c95ff0d3bbe568beb6c4e739bafdc2c68", + "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63", + "0000000000000000000000000000000000000000000000000000000000008000", + "acceptable" + }, + { + "fd300aeb40e1fa582518412b49b208a7842b1e1f056a040178ea4141534f652d", + "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2", + "b734105dc257585d73b566ccb76f062795ccbec89128e52b02f3e59639f13c46", + "valid" + }, + { + "c8ef79b514d7682677bc7931e06ee5c27c9b392b4ae9484473f554e6678ecc2e", + "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2", + "647a46b6fc3f40d62141ee3cee706b4d7a9271593a7b143e8e2e2279883e4550", + "valid" + }, + { + "64aeac2504144861532b7bbcb6c87d67dd4c1f07ebc2e06effb95aecc6170b2c", + "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2", + "4ff03d5fb43cd8657a3cf37c138cadcecce509e4eba089d0ef40b4e4fb946155", + "valid" + }, + { + "bf68e35e9bdb7eee1b50570221860f5dcdad8acbab031b14974cc49013c49831", + "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2", + "21cee52efdbc812e1d021a4af1e1d8bc4db3c400e4d2a2c56a3926db4d99c65b", + "valid" + }, + { + "5347c491331a64b43ddc683034e677f53dc32b52a52a577c15a83bf298e99f19", + "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2", + "18cb89e4e20c0c2bd324305245266c9327690bbe79acb88f5b8fb3f74eca3e52", + "valid" + }, + { + "258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75", + "a023cdd083ef5bb82f10d62e59e15a6800000000000000000000000000000050", + "258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75", + "valid" + }, + { + "2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035", + "58083dd261ad91eff952322ec824c682ffffffffffffffffffffffffffffff5f", + "2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035", + "acceptable" + } +}; + +int +main(void) +{ + unsigned char sk[crypto_scalarmult_SCALARBYTES]; + unsigned char pk[crypto_scalarmult_BYTES]; + unsigned char shared[crypto_scalarmult_BYTES]; + unsigned char shared2[crypto_scalarmult_BYTES]; + unsigned int i; + int res; + + for (i = 0U; i < (sizeof test_data) / (sizeof test_data[0]); i++) { + sodium_hex2bin(sk, crypto_scalarmult_SCALARBYTES, test_data[i].sk_hex, + crypto_scalarmult_SCALARBYTES * 2, NULL, NULL, NULL); + sodium_hex2bin(pk, crypto_scalarmult_BYTES, test_data[i].pk_hex, + crypto_scalarmult_BYTES * 2, NULL, NULL, NULL); + sodium_hex2bin(shared, crypto_scalarmult_BYTES, test_data[i].shared_hex, + crypto_scalarmult_BYTES * 2, NULL, NULL, NULL); + randombytes_buf(shared2, crypto_scalarmult_BYTES); + res = crypto_scalarmult(shared2, sk, pk); + if (res == 0) { + if (strcmp(test_data[i].outcome, "acceptable") == 0) { + printf("test case %u succeeded (%s)\n", i, + test_data[i].outcome); + } else if (strcmp(test_data[i].outcome, "valid") != 0) { + printf("*** test case %u succeeded, was supposed to be %s\n", i, + test_data[i].outcome); + } + if (memcmp(shared, shared2, crypto_scalarmult_BYTES) != 0) { + printf("*** test case %u succeeded, but shared key is not %s\n", + i, test_data[i].outcome); + } + } else { + if (strcmp(test_data[i].outcome, "acceptable") == 0) { + printf("test case %u failed (%s)\n", i, test_data[i].outcome); + } else if (strcmp(test_data[i].outcome, "valid") == 0) { + printf("*** test case %u failed, was supposed to be %s\n", i, + test_data[i].outcome); + } + } + } + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult8.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult8.exp new file mode 100644 index 0000000..320ff64 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult8.exp @@ -0,0 +1,65 @@ +test case 2 succeeded (acceptable) +test case 3 succeeded (acceptable) +test case 4 succeeded (acceptable) +test case 5 succeeded (acceptable) +test case 6 succeeded (acceptable) +test case 7 failed (acceptable) +test case 8 failed (acceptable) +test case 9 succeeded (acceptable) +test case 10 succeeded (acceptable) +test case 11 succeeded (acceptable) +test case 12 succeeded (acceptable) +test case 13 succeeded (acceptable) +test case 14 succeeded (acceptable) +test case 22 failed (acceptable) +test case 23 failed (acceptable) +test case 24 failed (acceptable) +test case 25 failed (acceptable) +test case 26 failed (acceptable) +test case 27 failed (acceptable) +test case 28 failed (acceptable) +test case 29 failed (acceptable) +test case 30 failed (acceptable) +test case 31 failed (acceptable) +test case 32 failed (acceptable) +test case 33 failed (acceptable) +test case 34 failed (acceptable) +test case 35 failed (acceptable) +test case 36 failed (acceptable) +test case 37 failed (acceptable) +test case 38 failed (acceptable) +test case 39 failed (acceptable) +test case 40 failed (acceptable) +test case 41 failed (acceptable) +test case 42 failed (acceptable) +test case 43 failed (acceptable) +test case 44 failed (acceptable) +test case 45 failed (acceptable) +test case 46 failed (acceptable) +test case 47 failed (acceptable) +test case 48 succeeded (acceptable) +test case 49 succeeded (acceptable) +test case 50 succeeded (acceptable) +test case 51 succeeded (acceptable) +test case 52 succeeded (acceptable) +test case 53 succeeded (acceptable) +test case 54 succeeded (acceptable) +test case 55 succeeded (acceptable) +test case 56 succeeded (acceptable) +test case 57 succeeded (acceptable) +test case 58 succeeded (acceptable) +test case 59 succeeded (acceptable) +test case 60 succeeded (acceptable) +test case 61 succeeded (acceptable) +test case 62 succeeded (acceptable) +test case 63 succeeded (acceptable) +test case 66 succeeded (acceptable) +test case 69 succeeded (acceptable) +test case 71 succeeded (acceptable) +test case 74 succeeded (acceptable) +test case 75 succeeded (acceptable) +test case 77 succeeded (acceptable) +test case 78 succeeded (acceptable) +test case 79 succeeded (acceptable) +test case 86 succeeded (acceptable) +OK diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.c b/components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.c new file mode 100644 index 0000000..795647b --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.c @@ -0,0 +1,134 @@ +#define TEST_NAME "scalarmult_ed25519" +#include "cmptest.h" + +static const unsigned char non_canonical_p[32] = { + 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char non_canonical_invalid_p[32] = { + 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char max_canonical_p[32] = { + 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; + +static const unsigned char B[32] = { + 0x58, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66 +}; + +int +main(void) +{ + unsigned char *n, *p, *q, *q2; + + n = (unsigned char *) sodium_malloc(crypto_scalarmult_ed25519_SCALARBYTES); + p = (unsigned char *) sodium_malloc(crypto_scalarmult_ed25519_BYTES); + q = (unsigned char *) sodium_malloc(crypto_scalarmult_ed25519_BYTES); + q2 = (unsigned char *) sodium_malloc(crypto_scalarmult_ed25519_BYTES); + + randombytes_buf(n, crypto_scalarmult_ed25519_SCALARBYTES); + if (crypto_scalarmult_ed25519_base(q, n) != 0) { + printf("crypto_scalarmult_ed25519_base() failed\n"); + } + memcpy(p, B, crypto_scalarmult_ed25519_BYTES); + if (crypto_scalarmult_ed25519(q2, n, p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + if (memcmp(q, q2, crypto_scalarmult_ed25519_BYTES) != 0) { + printf("crypto_scalarmult_ed25519_base(n) != crypto_scalarmult_ed25519(n, 9)\n"); + } + + memset(n, 0, crypto_scalarmult_ed25519_SCALARBYTES); + if (crypto_scalarmult_ed25519_base(q, n) != -1) { + printf("crypto_scalarmult_ed25519_base(0) passed\n"); + } + if (crypto_scalarmult_ed25519(q2, n, p) != -1) { + printf("crypto_scalarmult_ed25519(0) passed\n"); + } + if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != -1) { + printf("crypto_scalarmult_ed25519_noclamp(0) passed\n"); + } + + n[0] = 1; + if (crypto_scalarmult_ed25519_base(q, n) != 0) { + printf("crypto_scalarmult_ed25519_base() failed\n"); + } + if (crypto_scalarmult_ed25519(q2, n, p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed\n"); + } + + if (crypto_scalarmult_ed25519(q, n, non_canonical_p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + if (crypto_scalarmult_ed25519(q, n, non_canonical_invalid_p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + if (crypto_scalarmult_ed25519(q, n, max_canonical_p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + + n[0] = 9; + if (crypto_scalarmult_ed25519(q, n, p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed\n"); + } + if (memcmp(q, q2, crypto_scalarmult_ed25519_BYTES) == 0) { + printf("clamping not applied\n"); + } + + n[0] = 9; + if (crypto_scalarmult_ed25519_base(q, n) != 0) { + printf("crypto_scalarmult_ed25519_base() failed\n"); + } + if (crypto_scalarmult_ed25519_base_noclamp(q2, n) != 0) { + printf("crypto_scalarmult_ed25519_base_noclamp() failed\n"); + } + if (memcmp(q, q2, crypto_scalarmult_ed25519_BYTES) == 0) { + printf("clamping not applied\n"); + } + + n[0] = 8; + n[31] = 64; + if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != 0) { + printf("crypto_scalarmult_ed25519_noclamp() failed\n"); + } + if (memcmp(q, q2, crypto_scalarmult_ed25519_BYTES) != 0) { + printf("inconsistent clamping\n"); + } + + memset(p, 0, crypto_scalarmult_ed25519_BYTES); + if (crypto_scalarmult_ed25519(q, n, p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + if (crypto_scalarmult_ed25519_noclamp(q, n, p) != -1) { + printf("crypto_scalarmult_ed25519_noclamp() didn't fail\n"); + } + + n[0] = 8; + if (crypto_scalarmult_ed25519(q, n, p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + if (crypto_scalarmult_ed25519_noclamp(q, n, p) != -1) { + printf("crypto_scalarmult_ed25519_noclamp() didn't fail\n"); + } + + sodium_free(q2); + sodium_free(q); + sodium_free(p); + sodium_free(n); + + assert(crypto_scalarmult_ed25519_BYTES == crypto_scalarmult_ed25519_bytes()); + assert(crypto_scalarmult_ed25519_SCALARBYTES == crypto_scalarmult_ed25519_scalarbytes()); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.c b/components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.c new file mode 100644 index 0000000..1acd121 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.c @@ -0,0 +1,51 @@ +#define TEST_NAME "scalarmult_ristretto255" +#include "cmptest.h" + +#define B_HEX "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76" + +int +main(void) +{ + unsigned char *b = + (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES); + unsigned char *n = + (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_SCALARBYTES); + unsigned char *p = + (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES); + unsigned char *p2 = + (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES); + char *hex = + (char *) sodium_malloc(2 * crypto_scalarmult_ristretto255_BYTES + 1); + int i; + + sodium_hex2bin(b, crypto_scalarmult_ristretto255_BYTES, + B_HEX, sizeof B_HEX - (size_t) 1U, NULL, NULL, NULL); + memset(n, 0, crypto_scalarmult_ristretto255_SCALARBYTES); + for (i = 0; i < 16; i++) { + crypto_scalarmult_ristretto255_base(p, n); + if (crypto_scalarmult_ristretto255(p2, n, b) != 0) { + printf("crypto_scalarmult_ristretto255(%d) != 0\n", i); + } + sodium_bin2hex(hex, 2 * crypto_scalarmult_ristretto255_BYTES + 1, + p, crypto_scalarmult_ristretto255_BYTES); + printf("%s\n", hex); + assert(memcmp(p, p2, crypto_scalarmult_ristretto255_BYTES) == 0); + sodium_increment(n, crypto_scalarmult_ristretto255_SCALARBYTES); + } + + memset(p, 0xfe, crypto_scalarmult_ristretto255_BYTES); + assert(crypto_scalarmult_ristretto255(guard_page, n, p) == -1); + + sodium_free(hex); + sodium_free(p2); + sodium_free(p); + sodium_free(n); + sodium_free(b); + + assert(crypto_scalarmult_ristretto255_BYTES == crypto_scalarmult_ristretto255_bytes()); + assert(crypto_scalarmult_ristretto255_SCALARBYTES == crypto_scalarmult_ristretto255_scalarbytes()); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.exp b/components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.exp new file mode 100644 index 0000000..919a762 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.exp @@ -0,0 +1,18 @@ +crypto_scalarmult_ristretto255(0) != 0 +0000000000000000000000000000000000000000000000000000000000000000 +e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76 +6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b919 +94741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259 +da80862773358b466ffadfe0b3293ab3d9fd53c5ea6c955358f568322daf6a57 +e882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e +f64746d3c92b13050ed8d80236a7f0007c3b3f962f5ba793d19a601ebb1df403 +44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d +903293d8f2287ebe10e2374dc1a53e0bc887e592699f02d077d5263cdd55601c +02622ace8f7303a31cafc63f8fc48fdc16e1c8c8d234b2f0d6685282a9076031 +20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f +bce83f8ba5dd2fa572864c24ba1810f9522bc6004afe95877ac73241cafdab42 +e4549ee16b9aa03099ca208c67adafcafa4c3f3e4e5303de6026e3ca8ff84460 +aa52e000df2e16f55fb1032fc33bc42742dad6bd5a8fc0be0167436c5948501f +46376b80f409b29dc2b5f6f0c52591990896e5716f41477cd30085ab7f10301e +e0c418f7c8d9c4cdd7395b93ea124f3ad99021bb681dfc3302a9d99a2e53e64e +OK diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox.c b/components/espressif__libsodium/libsodium/test/default/secretbox.c new file mode 100644 index 0000000..df1d62f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox.c @@ -0,0 +1,84 @@ + +#define TEST_NAME "secretbox" +#include "cmptest.h" + +static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 }; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +/* API requires first 32 bytes to be 0 */ +static unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0xbe, 0x07, 0x5f, 0xc5, + 0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b, + 0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, 0x4b, 0x66, 0x84, 0x9b, + 0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, 0x33, 0xbd, 0x75, 0x1a, + 0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, 0x6c, 0xdc, 0x3c, 0x01, + 0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, 0x31, 0x4a, 0xdb, 0x31, + 0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, 0xce, 0xea, 0x3a, 0x7f, + 0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, 0xd6, 0xb1, 0x31, 0x8a, + 0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, 0x04, 0x89, 0x77, 0xeb, + 0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, 0x60, 0x90, 0x2e, 0x52, + 0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, 0xe0, 0x82, 0xf9, 0x37, + 0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05 +}; + +static unsigned char c[163]; + +int +main(void) +{ + int i; + + crypto_secretbox(c, m, 163, nonce, firstkey); + for (i = 16; i < 163; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + + memcpy(c, m, 163); + crypto_secretbox(c, c, 163, nonce, firstkey); + for (i = 16; i < 163; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + + assert(crypto_secretbox(c, c, 31, nonce, firstkey) == -1); + assert(crypto_secretbox(c, c, 12, nonce, firstkey) == -1); + assert(crypto_secretbox(c, c, 1, nonce, firstkey) == -1); + assert(crypto_secretbox(c, c, 0, nonce, firstkey) == -1); + + assert(crypto_secretbox_keybytes() > 0U); + assert(crypto_secretbox_noncebytes() > 0U); + assert(crypto_secretbox_zerobytes() > 0U); + assert(crypto_secretbox_boxzerobytes() > 0U); + assert(crypto_secretbox_macbytes() > 0U); + assert(crypto_secretbox_messagebytes_max() > 0U); + assert(strcmp(crypto_secretbox_primitive(), "xsalsa20poly1305") == 0); + assert(crypto_secretbox_keybytes() == + crypto_secretbox_xsalsa20poly1305_keybytes()); + assert(crypto_secretbox_noncebytes() == + crypto_secretbox_xsalsa20poly1305_noncebytes()); + assert(crypto_secretbox_zerobytes() == + crypto_secretbox_xsalsa20poly1305_zerobytes()); + assert(crypto_secretbox_boxzerobytes() == + crypto_secretbox_xsalsa20poly1305_boxzerobytes()); + assert(crypto_secretbox_macbytes() == + crypto_secretbox_xsalsa20poly1305_macbytes()); + assert(crypto_secretbox_messagebytes_max() == + crypto_secretbox_xsalsa20poly1305_messagebytes_max()); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox.exp b/components/espressif__libsodium/libsodium/test/default/secretbox.exp new file mode 100644 index 0000000..25db669 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox.exp @@ -0,0 +1,38 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5 +,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9 +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox2.c b/components/espressif__libsodium/libsodium/test/default/secretbox2.c new file mode 100644 index 0000000..e6320b7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox2.c @@ -0,0 +1,55 @@ + +#define TEST_NAME "secretbox2" +#include "cmptest.h" + +static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 }; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +/* API requires first 16 bytes to be 0 */ +static unsigned char c[163] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0xf3, 0xff, 0xc7, 0x70, 0x3f, 0x94, 0x00, 0xe5, + 0x2a, 0x7d, 0xfb, 0x4b, 0x3d, 0x33, 0x05, 0xd9, 0x8e, 0x99, 0x3b, 0x9f, + 0x48, 0x68, 0x12, 0x73, 0xc2, 0x96, 0x50, 0xba, 0x32, 0xfc, 0x76, 0xce, + 0x48, 0x33, 0x2e, 0xa7, 0x16, 0x4d, 0x96, 0xa4, 0x47, 0x6f, 0xb8, 0xc5, + 0x31, 0xa1, 0x18, 0x6a, 0xc0, 0xdf, 0xc1, 0x7c, 0x98, 0xdc, 0xe8, 0x7b, + 0x4d, 0xa7, 0xf0, 0x11, 0xec, 0x48, 0xc9, 0x72, 0x71, 0xd2, 0xc2, 0x0f, + 0x9b, 0x92, 0x8f, 0xe2, 0x27, 0x0d, 0x6f, 0xb8, 0x63, 0xd5, 0x17, 0x38, + 0xb4, 0x8e, 0xee, 0xe3, 0x14, 0xa7, 0xcc, 0x8a, 0xb9, 0x32, 0x16, 0x45, + 0x48, 0xe5, 0x26, 0xae, 0x90, 0x22, 0x43, 0x68, 0x51, 0x7a, 0xcf, 0xea, + 0xbd, 0x6b, 0xb3, 0x73, 0x2b, 0xc0, 0xe9, 0xda, 0x99, 0x83, 0x2b, 0x61, + 0xca, 0x01, 0xb6, 0xde, 0x56, 0x24, 0x4a, 0x9e, 0x88, 0xd5, 0xf9, 0xb3, + 0x79, 0x73, 0xf6, 0x22, 0xa4, 0x3d, 0x14, 0xa6, 0x59, 0x9b, 0x1f, 0x65, + 0x4c, 0xb4, 0x5a, 0x74, 0xe3, 0x55, 0xa5 +}; + +static unsigned char m[163]; + +int +main(void) +{ + int i; + + if (crypto_secretbox_open(m, c, 163, nonce, firstkey) == 0) { + for (i = 32; i < 163; ++i) { + printf(",0x%02x", (unsigned int) m[i]); + if (i % 8 == 7) + printf("\n"); + } + printf("\n"); + } + assert(crypto_secretbox_open(m, c, 31, nonce, firstkey) == -1); + assert(crypto_secretbox_open(m, c, 16, nonce, firstkey) == -1); + assert(crypto_secretbox_open(m, c, 1, nonce, firstkey) == -1); + assert(crypto_secretbox_open(m, c, 0, nonce, firstkey) == -1); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox2.exp b/components/espressif__libsodium/libsodium/test/default/secretbox2.exp new file mode 100644 index 0000000..c61d455 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox2.exp @@ -0,0 +1,17 @@ +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5 +,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b +,0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4 +,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc +,0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a +,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29 +,0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4 +,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31 +,0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d +,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57 +,0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a +,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde +,0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd +,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52 +,0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40 +,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64 +,0x5e,0x07,0x05 diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox7.c b/components/espressif__libsodium/libsodium/test/default/secretbox7.c new file mode 100644 index 0000000..389943d --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox7.c @@ -0,0 +1,36 @@ + +#define TEST_NAME "secretbox7" +#include "cmptest.h" + +static unsigned char k[crypto_secretbox_KEYBYTES]; +static unsigned char n[crypto_secretbox_NONCEBYTES]; +static unsigned char m[10000]; +static unsigned char c[10000]; +static unsigned char m2[10000]; + +int +main(void) +{ + size_t mlen; + size_t i; + + for (mlen = 0; mlen < 1000 && mlen + crypto_secretbox_ZEROBYTES < sizeof m; + ++mlen) { + crypto_secretbox_keygen(k); + randombytes_buf(n, crypto_secretbox_NONCEBYTES); + randombytes_buf(m + crypto_secretbox_ZEROBYTES, mlen); + crypto_secretbox(c, m, mlen + crypto_secretbox_ZEROBYTES, n, k); + if (crypto_secretbox_open(m2, c, mlen + crypto_secretbox_ZEROBYTES, n, + k) == 0) { + for (i = 0; i < mlen + crypto_secretbox_ZEROBYTES; ++i) { + if (m2[i] != m[i]) { + printf("bad decryption\n"); + break; + } + } + } else { + printf("ciphertext fails verification\n"); + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox7.exp b/components/espressif__libsodium/libsodium/test/default/secretbox7.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox8.c b/components/espressif__libsodium/libsodium/test/default/secretbox8.c new file mode 100644 index 0000000..acba5f0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox8.c @@ -0,0 +1,41 @@ + +#define TEST_NAME "secretbox8" +#include "cmptest.h" + +static unsigned char k[crypto_secretbox_KEYBYTES]; +static unsigned char n[crypto_secretbox_NONCEBYTES]; +static unsigned char m[10000]; +static unsigned char c[10000]; +static unsigned char m2[10000]; + +int +main(void) +{ + size_t mlen; + size_t i; + int caught; + + for (mlen = 0; mlen < 1000 && mlen + crypto_secretbox_ZEROBYTES < sizeof m; + ++mlen) { + crypto_secretbox_keygen(k); + randombytes_buf(n, crypto_secretbox_NONCEBYTES); + randombytes_buf(m + crypto_secretbox_ZEROBYTES, mlen); + crypto_secretbox(c, m, mlen + crypto_secretbox_ZEROBYTES, n, k); + caught = 0; + while (caught < 10) { + c[rand() % (mlen + crypto_secretbox_ZEROBYTES)] = rand(); + if (crypto_secretbox_open(m2, c, mlen + crypto_secretbox_ZEROBYTES, + n, k) == 0) { + for (i = 0; i < mlen + crypto_secretbox_ZEROBYTES; ++i) { + if (m2[i] != m[i]) { + printf("forgery\n"); + return 100; + } + } + } else { + ++caught; + } + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox8.exp b/components/espressif__libsodium/libsodium/test/default/secretbox8.exp new file mode 100644 index 0000000..e69de29 diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox_easy.c b/components/espressif__libsodium/libsodium/test/default/secretbox_easy.c new file mode 100644 index 0000000..4542bbd --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox_easy.c @@ -0,0 +1,124 @@ + +#define TEST_NAME "secretbox_easy" +#include "cmptest.h" + +static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 }; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +static unsigned char m[131] = { + 0xbe, 0x07, 0x5f, 0xc5, 0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, + 0xeb, 0xeb, 0x0c, 0x7b, 0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, + 0x4b, 0x66, 0x84, 0x9b, 0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, + 0x33, 0xbd, 0x75, 0x1a, 0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, + 0x6c, 0xdc, 0x3c, 0x01, 0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, + 0x31, 0x4a, 0xdb, 0x31, 0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, + 0xce, 0xea, 0x3a, 0x7f, 0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, + 0xd6, 0xb1, 0x31, 0x8a, 0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, + 0x04, 0x89, 0x77, 0xeb, 0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, + 0x60, 0x90, 0x2e, 0x52, 0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, + 0xe0, 0x82, 0xf9, 0x37, 0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05 +}; + +int +main(void) +{ + unsigned char *c; + unsigned char *mac; + size_t i; + + c = (unsigned char *) sodium_malloc(131 + crypto_secretbox_MACBYTES + 1); + mac = (unsigned char *) sodium_malloc(crypto_secretbox_MACBYTES); + assert(c != NULL && mac != NULL); + + crypto_secretbox_easy(c, m, 131, nonce, firstkey); + for (i = 0; i < 131 + crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + crypto_secretbox_detached(c, mac, m, 131, nonce, firstkey); + for (i = 0; i < crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) mac[i]); + } + for (i = 0; i < 131; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + /* Same test, with c and m overlapping */ + + memcpy(c + 1, m, 131); + crypto_secretbox_easy(c, c + 1, 131, nonce, firstkey); + for (i = 0; i < 131 + crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + memcpy(c, m, 131); + crypto_secretbox_easy(c + 1, c, 131, nonce, firstkey); + for (i = 0; i < 131 + crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i + 1]); + } + printf("\n"); + + memcpy(c, m, 131); + crypto_secretbox_easy(c, c, 131, nonce, firstkey); + for (i = 0; i < 131 + crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + assert(crypto_secretbox_easy(c, m, 0, nonce, firstkey) == 0); + + /* Null message */ + + crypto_secretbox_easy(c, c, 0, nonce, firstkey); + for (i = 0; i < crypto_secretbox_MACBYTES + 1; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + if (crypto_secretbox_open_easy(c, c, crypto_secretbox_MACBYTES, nonce, + firstkey) != 0) { + printf("Null crypto_secretbox_open_easy() failed\n"); + } + for (i = 0; i < crypto_secretbox_MACBYTES + 1; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + c[randombytes_uniform(crypto_secretbox_MACBYTES)]++; + if (crypto_secretbox_open_easy(c, c, crypto_secretbox_MACBYTES, nonce, + firstkey) != -1) { + printf("Null tampered crypto_secretbox_open_easy() failed\n"); + } + + /* No overlap, but buffers are next to each other */ + + memset(c, 0, 131 + crypto_secretbox_MACBYTES + 1); + memcpy(c, m, 20); + crypto_secretbox_easy(c, c + 10, 10, nonce, firstkey); + for (i = 0; i < 10 + crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + memset(c, 0, 131 + crypto_secretbox_MACBYTES + 1); + memcpy(c, m, 20); + crypto_secretbox_easy(c + 10, c, 10, nonce, firstkey); + for (i = 0; i < 10 + crypto_secretbox_MACBYTES; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + } + printf("\n"); + + sodium_free(mac); + sodium_free(c); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox_easy.exp b/components/espressif__libsodium/libsodium/test/default/secretbox_easy.exp new file mode 100644 index 0000000..3cffae8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox_easy.exp @@ -0,0 +1,9 @@ +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,0xe3,0x55,0xa5 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,0xe3,0x55,0xa5 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,0xe3,0x55,0xa5 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,0xe3,0x55,0xa5 +,0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,0xe3,0x55,0xa5 +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80,0x8e +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80,0x8e +,0x8c,0xf3,0x90,0x57,0xc9,0xbc,0xf2,0xba,0x98,0x87,0xfb,0x15,0x9f,0x21,0x0c,0xd8,0x23,0x88,0x8f,0xb1,0x78,0x92,0xb2,0x8e,0xc8,0xa8 +,0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5,0xcf,0x14,0xd2,0xe8,0xe8,0x1a,0xac,0xd2,0xba,0x1b,0xaa,0x60,0x99,0xe3,0xd9,0x63,0x56,0x18 diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox_easy2.c b/components/espressif__libsodium/libsodium/test/default/secretbox_easy2.c new file mode 100644 index 0000000..7cacbd7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox_easy2.c @@ -0,0 +1,72 @@ + +#define TEST_NAME "secretbox_easy2" +#include "cmptest.h" + +int +main(void) +{ + unsigned char *m; + unsigned char *m2; + unsigned char *c; + unsigned char *nonce; + unsigned char *k; + unsigned char *mac; + size_t mlen; + size_t i; + + mlen = (size_t) randombytes_uniform((uint32_t) 10000) + 1U; + m = (unsigned char *) sodium_malloc(mlen); + m2 = (unsigned char *) sodium_malloc(mlen); + c = (unsigned char *) sodium_malloc(crypto_secretbox_MACBYTES + mlen); + nonce = (unsigned char *) sodium_malloc(crypto_secretbox_NONCEBYTES); + k = (unsigned char *) sodium_malloc(crypto_secretbox_KEYBYTES); + mac = (unsigned char *) sodium_malloc(crypto_secretbox_MACBYTES); + crypto_secretbox_keygen(k); + randombytes_buf(m, mlen); + randombytes_buf(nonce, crypto_secretbox_NONCEBYTES); + crypto_secretbox_easy(c, m, (unsigned long long) mlen, nonce, k); + if (crypto_secretbox_open_easy( + m2, c, (unsigned long long) mlen + crypto_secretbox_MACBYTES, nonce, + k) != 0) { + printf("crypto_secretbox_open_easy() failed\n"); + } + printf("%d\n", memcmp(m, m2, mlen)); + + for (i = 0; i < mlen + crypto_secretbox_MACBYTES - 1; i++) { + if (crypto_secretbox_open_easy(m2, c, (unsigned long long) i, nonce, + k) == 0) { + printf("short open() should have failed\n"); + return 1; + } + } + crypto_secretbox_detached(c, mac, m, (unsigned long long) mlen, nonce, k); + if (crypto_secretbox_open_detached(NULL, c, mac, (unsigned long long) mlen, + nonce, k) != 0) { + printf("crypto_secretbox_open_detached() with a NULL message pointer failed\n"); + } + if (crypto_secretbox_open_detached(m2, c, mac, (unsigned long long) mlen, + nonce, k) != 0) { + printf("crypto_secretbox_open_detached() failed\n"); + } + printf("%d\n", memcmp(m, m2, mlen)); + + memcpy(c, m, mlen); + crypto_secretbox_easy(c, c, (unsigned long long) mlen, nonce, k); + printf("%d\n", memcmp(m, c, mlen) == 0); + printf("%d\n", memcmp(m, c + crypto_secretbox_MACBYTES, mlen) == 0); + if (crypto_secretbox_open_easy( + c, c, (unsigned long long) mlen + crypto_secretbox_MACBYTES, nonce, + k) != 0) { + printf("crypto_secretbox_open_easy() failed\n"); + } + printf("%d\n", memcmp(m, c, mlen)); + + sodium_free(m); + sodium_free(m2); + sodium_free(c); + sodium_free(nonce); + sodium_free(k); + sodium_free(mac); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretbox_easy2.exp b/components/espressif__libsodium/libsodium/test/default/secretbox_easy2.exp new file mode 100644 index 0000000..229972f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretbox_easy2.exp @@ -0,0 +1,5 @@ +0 +0 +0 +0 +0 diff --git a/components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.c b/components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.c new file mode 100644 index 0000000..6955f82 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.c @@ -0,0 +1,329 @@ + +#define TEST_NAME "secretstream_xchacha20poly1305" +#include "cmptest.h" + +int +main(void) +{ + crypto_secretstream_xchacha20poly1305_state *state, *statesave; + crypto_secretstream_xchacha20poly1305_state state_copy; + unsigned char *ad; + unsigned char *header; + unsigned char *k; + unsigned char *c1, *c2, *c3, *csave; + unsigned char *m1, *m2, *m3; + unsigned char *m1_, *m2_, *m3_; + unsigned long long res_len; + size_t ad_len; + size_t m1_len, m2_len, m3_len; + int ret; + unsigned char tag; + + state = (crypto_secretstream_xchacha20poly1305_state *) + sodium_malloc(crypto_secretstream_xchacha20poly1305_statebytes()); + statesave = (crypto_secretstream_xchacha20poly1305_state *) + sodium_malloc(crypto_secretstream_xchacha20poly1305_statebytes()); + header = (unsigned char *) + sodium_malloc(crypto_secretstream_xchacha20poly1305_HEADERBYTES); + + ad_len = randombytes_uniform(100); + m1_len = randombytes_uniform(1000); + m2_len = randombytes_uniform(1000); + m3_len = randombytes_uniform(1000); + + c1 = (unsigned char *) + sodium_malloc(m1_len + crypto_secretstream_xchacha20poly1305_ABYTES); + c2 = (unsigned char *) + sodium_malloc(m2_len + crypto_secretstream_xchacha20poly1305_ABYTES); + c3 = (unsigned char *) + sodium_malloc(m3_len + crypto_secretstream_xchacha20poly1305_ABYTES); + csave = (unsigned char *) + sodium_malloc((m1_len | m2_len | m3_len) + crypto_secretstream_xchacha20poly1305_ABYTES); + + ad = (unsigned char *) sodium_malloc(ad_len); + m1 = (unsigned char *) sodium_malloc(m1_len); + m2 = (unsigned char *) sodium_malloc(m2_len); + m3 = (unsigned char *) sodium_malloc(m3_len); + m1_ = (unsigned char *) sodium_malloc(m1_len); + m2_ = (unsigned char *) sodium_malloc(m2_len); + m3_ = (unsigned char *) sodium_malloc(m3_len); + + randombytes_buf(ad, ad_len); + + randombytes_buf(m1, m1_len); + memcpy(m1_, m1, m1_len); + randombytes_buf(m2, m2_len); + memcpy(m2_, m2, m2_len); + randombytes_buf(m3, m3_len); + memcpy(m3_, m3, m3_len); + + k = (unsigned char *) + sodium_malloc(crypto_secretstream_xchacha20poly1305_KEYBYTES); + crypto_secretstream_xchacha20poly1305_keygen(k); + + /* push */ + + ret = crypto_secretstream_xchacha20poly1305_init_push(state, header, k); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c1, &res_len, m1, m1_len, NULL, 0, 0); + assert(ret == 0); + assert(res_len == m1_len + crypto_secretstream_xchacha20poly1305_ABYTES); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c2, NULL, m2, m2_len, ad, 0, 0); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c3, NULL, m3, m3_len, ad, ad_len, + crypto_secretstream_xchacha20poly1305_TAG_FINAL); + assert(ret == 0); + + /* pull */ + + ret = crypto_secretstream_xchacha20poly1305_init_pull(state, header, k); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m1, &res_len, &tag, + c1, m1_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + assert(tag == 0); + assert(memcmp(m1, m1_, m1_len) == 0); + assert(res_len == m1_len); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + assert(tag == 0); + assert(memcmp(m2, m2_, m2_len) == 0); + + if (ad_len > 0) { + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m3, NULL, &tag, + c3, m3_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == -1); + } + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m3, NULL, &tag, + c3, m3_len + crypto_secretstream_xchacha20poly1305_ABYTES, ad, ad_len); + assert(ret == 0); + assert(tag == crypto_secretstream_xchacha20poly1305_TAG_FINAL); + assert(memcmp(m3, m3_, m3_len) == 0); + + /* previous with FINAL tag */ + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m3, NULL, &tag, + c3, m3_len + crypto_secretstream_xchacha20poly1305_ABYTES, ad, ad_len); + assert(ret == -1); + + /* previous without a tag */ + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == -1); + + /* short ciphertext */ + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, c2, + randombytes_uniform(crypto_secretstream_xchacha20poly1305_ABYTES), + NULL, 0); + assert(ret == -1); + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, c2, 0, NULL, 0); + assert(ret == -1); + + /* empty ciphertext */ + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, c2, + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == -1); + + /* without explicit rekeying */ + + ret = crypto_secretstream_xchacha20poly1305_init_push(state, header, k); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_push + (state, c1, NULL, m1, m1_len, NULL, 0, 0); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_push + (state, c2, NULL, m2, m2_len, NULL, 0, 0); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_init_pull(state, header, k); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m1, NULL, &tag, + c1, m1_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + + /* with explicit rekeying */ + + ret = crypto_secretstream_xchacha20poly1305_init_push(state, header, k); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_push + (state, c1, NULL, m1, m1_len, NULL, 0, 0); + assert(ret == 0); + + crypto_secretstream_xchacha20poly1305_rekey(state); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c2, NULL, m2, m2_len, NULL, 0, 0); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_init_pull(state, header, k); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m1, NULL, &tag, + c1, m1_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == -1); + + crypto_secretstream_xchacha20poly1305_rekey(state); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + + /* with explicit rekeying using TAG_REKEY */ + + ret = crypto_secretstream_xchacha20poly1305_init_push(state, header, k); + assert(ret == 0); + + memcpy(statesave, state, sizeof *state); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c1, NULL, m1, m1_len, NULL, 0, crypto_secretstream_xchacha20poly1305_TAG_REKEY); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c2, NULL, m2, m2_len, NULL, 0, 0); + assert(ret == 0); + + memcpy(csave, c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES); + + ret = crypto_secretstream_xchacha20poly1305_init_pull(state, header, k); + assert(ret == 0); + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m1, NULL, &tag, + c1, m1_len + crypto_secretstream_xchacha20poly1305_ABYTES, &tag, 0); + assert(ret == 0); + assert(tag == crypto_secretstream_xchacha20poly1305_TAG_REKEY); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, &tag, 0); + assert(ret == 0); + assert(tag == 0); + + memcpy(state, statesave, sizeof *state); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c1, NULL, m1, m1_len, NULL, 0, 0); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c2, NULL, m2, m2_len, NULL, 0, 0); + assert(ret == 0); + + assert(memcmp(csave, c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES) != 0); + + /* New stream */ + + ret = crypto_secretstream_xchacha20poly1305_init_push(state, header, k); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c1, &res_len, m1, m1_len, NULL, 0, + crypto_secretstream_xchacha20poly1305_TAG_PUSH); + assert(ret == 0); + assert(res_len == m1_len + crypto_secretstream_xchacha20poly1305_ABYTES); + + /* Force a counter overflow, check that the key has been updated + * even though the tag was not changed to REKEY */ + + memset(state->nonce, 0xff, 4U); + state_copy = *state; + + ret = crypto_secretstream_xchacha20poly1305_push + (state, c2, NULL, m2, m2_len, ad, 0, 0); + assert(ret == 0); + + assert(memcmp(state_copy.k, state->k, sizeof state->k) != 0); + assert(memcmp(state_copy.nonce, state->nonce, sizeof state->nonce) != 0); + assert(state->nonce[0] == 1U); + assert(sodium_is_zero(state->nonce + 1, 3U)); + + ret = crypto_secretstream_xchacha20poly1305_init_pull(state, header, k); + assert(ret == 0); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m1, &res_len, &tag, + c1, m1_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + assert(tag == crypto_secretstream_xchacha20poly1305_TAG_PUSH); + assert(memcmp(m1, m1_, m1_len) == 0); + assert(res_len == m1_len); + + memset(state->nonce, 0xff, 4U); + + ret = crypto_secretstream_xchacha20poly1305_pull + (state, m2, NULL, &tag, + c2, m2_len + crypto_secretstream_xchacha20poly1305_ABYTES, NULL, 0); + assert(ret == 0); + assert(tag == 0); + assert(memcmp(m2, m2_, m2_len) == 0); + + sodium_free(m3_); + sodium_free(m2_); + sodium_free(m1_); + sodium_free(m3); + sodium_free(m2); + sodium_free(m1); + sodium_free(ad); + sodium_free(csave); + sodium_free(c3); + sodium_free(c2); + sodium_free(c1); + sodium_free(k); + sodium_free(header); + sodium_free(statesave); + sodium_free(state); + + assert(crypto_secretstream_xchacha20poly1305_abytes() == + crypto_secretstream_xchacha20poly1305_ABYTES); + assert(crypto_secretstream_xchacha20poly1305_headerbytes() == + crypto_secretstream_xchacha20poly1305_HEADERBYTES); + assert(crypto_secretstream_xchacha20poly1305_keybytes() == + crypto_secretstream_xchacha20poly1305_KEYBYTES); + assert(crypto_secretstream_xchacha20poly1305_messagebytes_max() == + crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX); + + assert(crypto_secretstream_xchacha20poly1305_tag_message() == + crypto_secretstream_xchacha20poly1305_TAG_MESSAGE); + assert(crypto_secretstream_xchacha20poly1305_tag_push() == + crypto_secretstream_xchacha20poly1305_TAG_PUSH); + assert(crypto_secretstream_xchacha20poly1305_tag_rekey() == + crypto_secretstream_xchacha20poly1305_TAG_REKEY); + assert(crypto_secretstream_xchacha20poly1305_tag_final() == + crypto_secretstream_xchacha20poly1305_TAG_FINAL); + + printf("OK\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.exp b/components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.exp new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.exp @@ -0,0 +1 @@ +OK diff --git a/components/espressif__libsodium/libsodium/test/default/shorthash.c b/components/espressif__libsodium/libsodium/test/default/shorthash.c new file mode 100644 index 0000000..e8fadec --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/shorthash.c @@ -0,0 +1,35 @@ + +#define TEST_NAME "shorthash" +#include "cmptest.h" + +#define MAXLEN 64 + +int +main(void) +{ + unsigned char in[MAXLEN]; + unsigned char out[crypto_shorthash_BYTES]; + unsigned char k[crypto_shorthash_KEYBYTES]; + size_t i; + size_t j; + + for (i = 0; i < crypto_shorthash_KEYBYTES; ++i) { + k[i] = (unsigned char) i; + } + for (i = 0; i < MAXLEN; ++i) { + in[i] = (unsigned char) i; + crypto_shorthash(out, in, (unsigned long long) i, k); + for (j = 0; j < crypto_shorthash_BYTES; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + } + assert(crypto_shorthash_bytes() > 0); + assert(crypto_shorthash_keybytes() > 0); + assert(strcmp(crypto_shorthash_primitive(), "siphash24") == 0); + assert(crypto_shorthash_bytes() == crypto_shorthash_siphash24_bytes()); + assert(crypto_shorthash_keybytes() == + crypto_shorthash_siphash24_keybytes()); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/shorthash.exp b/components/espressif__libsodium/libsodium/test/default/shorthash.exp new file mode 100644 index 0000000..6ec8684 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/shorthash.exp @@ -0,0 +1,64 @@ +310e0edd47db6f72 +fd67dc93c539f874 +5a4fa9d909806c0d +2d7efbd796666785 +b7877127e09427cf +8da699cd64557618 +cee3fe586e46c9cb +37d1018bf50002ab +6224939a79f5f593 +b0e4a90bdf82009e +f3b9dd94c5bb5d7a +a7ad6b22462fb3f4 +fbe50e86bc8f1e75 +903d84c02756ea14 +eef27a8e90ca23f7 +e545be4961ca29a1 +db9bc2577fcc2a3f +9447be2cf5e99a69 +9cd38d96f0b3c14b +bd6179a71dc96dbb +98eea21af25cd6be +c7673b2eb0cbf2d0 +883ea3e395675393 +c8ce5ccd8c030ca8 +94af49f6c650adb8 +eab8858ade92e1bc +f315bb5bb835d817 +adcf6b0763612e2f +a5c91da7acaa4dde +716595876650a2a6 +28ef495c53a387ad +42c341d8fa92d832 +ce7cf2722f512771 +e37859f94623f3a7 +381205bb1ab0e012 +ae97a10fd434e015 +b4a31508beff4d31 +81396229f0907902 +4d0cf49ee5d4dcca +5c73336a76d8bf9a +d0a704536ba93e0e +925958fcd6420cad +a915c29bc8067318 +952b79f3bc0aa6d4 +f21df2e41d4535f9 +87577519048f53a9 +10a56cf5dfcd9adb +eb75095ccd986cd0 +51a9cb9ecba312e6 +96afadfc2ce666c7 +72fe52975a4364ee +5a1645b276d592a1 +b274cb8ebf87870a +6f9bb4203de7b381 +eaecb2a30b22a87f +9924a43cc1315724 +bd838d3aafbf8db7 +0b1a2a3265d51aea +135079a3231ce660 +932b2846e4d70666 +e1915f5cb1eca46c +f325965ca16d629f +575ff28e60381be5 +724506eb4c328a95 diff --git a/components/espressif__libsodium/libsodium/test/default/sign.c b/components/espressif__libsodium/libsodium/test/default/sign.c new file mode 100644 index 0000000..30a2882 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sign.c @@ -0,0 +1,1324 @@ + +#define TEST_NAME "sign" +#include "cmptest.h" + +static const unsigned char keypair_seed[] + = { 0x42, 0x11, 0x51, 0xa4, 0x59, 0xfa, 0xea, 0xde, 0x3d, 0x24, 0x71, + 0x15, 0xf9, 0x4a, 0xed, 0xae, 0x42, 0x31, 0x81, 0x24, 0x09, 0x5a, + 0xfa, 0xbe, 0x4d, 0x14, 0x51, 0xa5, 0x59, 0xfa, 0xed, 0xee }; + +typedef struct TestData_ { + const unsigned char sk[crypto_sign_SEEDBYTES]; + const unsigned char pk[crypto_sign_PUBLICKEYBYTES]; + const unsigned char sig[crypto_sign_BYTES]; + const char *m; +} TestData; + +static TestData test_data[] = { +{{0x9d,0x61,0xb1,0x9d,0xef,0xfd,0x5a,0x60,0xba,0x84,0x4a,0xf4,0x92,0xec,0x2c,0xc4,0x44,0x49,0xc5,0x69,0x7b,0x32,0x69,0x19,0x70,0x3b,0xac,0x03,0x1c,0xae,0x7f,0x60,},{0xd7,0x5a,0x98,0x01,0x82,0xb1,0x0a,0xb7,0xd5,0x4b,0xfe,0xd3,0xc9,0x64,0x07,0x3a,0x0e,0xe1,0x72,0xf3,0xda,0xa6,0x23,0x25,0xaf,0x02,0x1a,0x68,0xf7,0x07,0x51,0x1a,},{0xe5,0x56,0x43,0x00,0xc3,0x60,0xac,0x72,0x90,0x86,0xe2,0xcc,0x80,0x6e,0x82,0x8a,0x84,0x87,0x7f,0x1e,0xb8,0xe5,0xd9,0x74,0xd8,0x73,0xe0,0x65,0x22,0x49,0x01,0x55,0x5f,0xb8,0x82,0x15,0x90,0xa3,0x3b,0xac,0xc6,0x1e,0x39,0x70,0x1c,0xf9,0xb4,0x6b,0xd2,0x5b,0xf5,0xf0,0x59,0x5b,0xbe,0x24,0x65,0x51,0x41,0x43,0x8e,0x7a,0x10,0x0b,},""}, +{{0x4c,0xcd,0x08,0x9b,0x28,0xff,0x96,0xda,0x9d,0xb6,0xc3,0x46,0xec,0x11,0x4e,0x0f,0x5b,0x8a,0x31,0x9f,0x35,0xab,0xa6,0x24,0xda,0x8c,0xf6,0xed,0x4f,0xb8,0xa6,0xfb,},{0x3d,0x40,0x17,0xc3,0xe8,0x43,0x89,0x5a,0x92,0xb7,0x0a,0xa7,0x4d,0x1b,0x7e,0xbc,0x9c,0x98,0x2c,0xcf,0x2e,0xc4,0x96,0x8c,0xc0,0xcd,0x55,0xf1,0x2a,0xf4,0x66,0x0c,},{0x92,0xa0,0x09,0xa9,0xf0,0xd4,0xca,0xb8,0x72,0x0e,0x82,0x0b,0x5f,0x64,0x25,0x40,0xa2,0xb2,0x7b,0x54,0x16,0x50,0x3f,0x8f,0xb3,0x76,0x22,0x23,0xeb,0xdb,0x69,0xda,0x08,0x5a,0xc1,0xe4,0x3e,0x15,0x99,0x6e,0x45,0x8f,0x36,0x13,0xd0,0xf1,0x1d,0x8c,0x38,0x7b,0x2e,0xae,0xb4,0x30,0x2a,0xee,0xb0,0x0d,0x29,0x16,0x12,0xbb,0x0c,0x00,},"\x72"}, +{{0xc5,0xaa,0x8d,0xf4,0x3f,0x9f,0x83,0x7b,0xed,0xb7,0x44,0x2f,0x31,0xdc,0xb7,0xb1,0x66,0xd3,0x85,0x35,0x07,0x6f,0x09,0x4b,0x85,0xce,0x3a,0x2e,0x0b,0x44,0x58,0xf7,},{0xfc,0x51,0xcd,0x8e,0x62,0x18,0xa1,0xa3,0x8d,0xa4,0x7e,0xd0,0x02,0x30,0xf0,0x58,0x08,0x16,0xed,0x13,0xba,0x33,0x03,0xac,0x5d,0xeb,0x91,0x15,0x48,0x90,0x80,0x25,},{0x62,0x91,0xd6,0x57,0xde,0xec,0x24,0x02,0x48,0x27,0xe6,0x9c,0x3a,0xbe,0x01,0xa3,0x0c,0xe5,0x48,0xa2,0x84,0x74,0x3a,0x44,0x5e,0x36,0x80,0xd7,0xdb,0x5a,0xc3,0xac,0x18,0xff,0x9b,0x53,0x8d,0x16,0xf2,0x90,0xae,0x67,0xf7,0x60,0x98,0x4d,0xc6,0x59,0x4a,0x7c,0x15,0xe9,0x71,0x6e,0xd2,0x8d,0xc0,0x27,0xbe,0xce,0xea,0x1e,0xc4,0x0a,},"\xaf\x82"}, +{{0x0d,0x4a,0x05,0xb0,0x73,0x52,0xa5,0x43,0x6e,0x18,0x03,0x56,0xda,0x0a,0xe6,0xef,0xa0,0x34,0x5f,0xf7,0xfb,0x15,0x72,0x57,0x57,0x72,0xe8,0x00,0x5e,0xd9,0x78,0xe9,},{0xe6,0x1a,0x18,0x5b,0xce,0xf2,0x61,0x3a,0x6c,0x7c,0xb7,0x97,0x63,0xce,0x94,0x5d,0x3b,0x24,0x5d,0x76,0x11,0x4d,0xd4,0x40,0xbc,0xf5,0xf2,0xdc,0x1a,0xa5,0x70,0x57,},{0xd9,0x86,0x8d,0x52,0xc2,0xbe,0xbc,0xe5,0xf3,0xfa,0x5a,0x79,0x89,0x19,0x70,0xf3,0x09,0xcb,0x65,0x91,0xe3,0xe1,0x70,0x2a,0x70,0x27,0x6f,0xa9,0x7c,0x24,0xb3,0xa8,0xe5,0x86,0x06,0xc3,0x8c,0x97,0x58,0x52,0x9d,0xa5,0x0e,0xe3,0x1b,0x82,0x19,0xcb,0xa4,0x52,0x71,0xc6,0x89,0xaf,0xa6,0x0b,0x0e,0xa2,0x6c,0x99,0xdb,0x19,0xb0,0x0c,},"\xcb\xc7\x7b"}, +{{0x6d,0xf9,0x34,0x0c,0x13,0x8c,0xc1,0x88,0xb5,0xfe,0x44,0x64,0xeb,0xaa,0x3f,0x7f,0xc2,0x06,0xa2,0xd5,0x5c,0x34,0x34,0x70,0x7e,0x74,0xc9,0xfc,0x04,0xe2,0x0e,0xbb,},{0xc0,0xda,0xc1,0x02,0xc4,0x53,0x31,0x86,0xe2,0x5d,0xc4,0x31,0x28,0x47,0x23,0x53,0xea,0xab,0xdb,0x87,0x8b,0x15,0x2a,0xeb,0x8e,0x00,0x1f,0x92,0xd9,0x02,0x33,0xa7,},{0x12,0x4f,0x6f,0xc6,0xb0,0xd1,0x00,0x84,0x27,0x69,0xe7,0x1b,0xd5,0x30,0x66,0x4d,0x88,0x8d,0xf8,0x50,0x7d,0xf6,0xc5,0x6d,0xed,0xfd,0xb5,0x09,0xae,0xb9,0x34,0x16,0xe2,0x6b,0x91,0x8d,0x38,0xaa,0x06,0x30,0x5d,0xf3,0x09,0x56,0x97,0xc1,0x8b,0x2a,0xa8,0x32,0xea,0xa5,0x2e,0xdc,0x0a,0xe4,0x9f,0xba,0xe5,0xa8,0x5e,0x15,0x0c,0x07,},"\x5f\x4c\x89\x89"}, +{{0xb7,0x80,0x38,0x1a,0x65,0xed,0xf8,0xb7,0x8f,0x69,0x45,0xe8,0xdb,0xec,0x79,0x41,0xac,0x04,0x9f,0xd4,0xc6,0x10,0x40,0xcf,0x0c,0x32,0x43,0x57,0x97,0x5a,0x29,0x3c,},{0xe2,0x53,0xaf,0x07,0x66,0x80,0x4b,0x86,0x9b,0xb1,0x59,0x5b,0xe9,0x76,0x5b,0x53,0x48,0x86,0xbb,0xaa,0xb8,0x30,0x5b,0xf5,0x0d,0xbc,0x7f,0x89,0x9b,0xfb,0x5f,0x01,},{0xb2,0xfc,0x46,0xad,0x47,0xaf,0x46,0x44,0x78,0xc1,0x99,0xe1,0xf8,0xbe,0x16,0x9f,0x1b,0xe6,0x32,0x7c,0x7f,0x9a,0x0a,0x66,0x89,0x37,0x1c,0xa9,0x4c,0xaf,0x04,0x06,0x4a,0x01,0xb2,0x2a,0xff,0x15,0x20,0xab,0xd5,0x89,0x51,0x34,0x16,0x03,0xfa,0xed,0x76,0x8c,0xf7,0x8c,0xe9,0x7a,0xe7,0xb0,0x38,0xab,0xfe,0x45,0x6a,0xa1,0x7c,0x09,},"\x18\xb6\xbe\xc0\x97"}, +{{0x78,0xae,0x9e,0xff,0xe6,0xf2,0x45,0xe9,0x24,0xa7,0xbe,0x63,0x04,0x11,0x46,0xeb,0xc6,0x70,0xdb,0xd3,0x06,0x0c,0xba,0x67,0xfb,0xc6,0x21,0x6f,0xeb,0xc4,0x45,0x46,},{0xfb,0xcf,0xbf,0xa4,0x05,0x05,0xd7,0xf2,0xbe,0x44,0x4a,0x33,0xd1,0x85,0xcc,0x54,0xe1,0x6d,0x61,0x52,0x60,0xe1,0x64,0x0b,0x2b,0x50,0x87,0xb8,0x3e,0xe3,0x64,0x3d,},{0x6e,0xd6,0x29,0xfc,0x1d,0x9c,0xe9,0xe1,0x46,0x87,0x55,0xff,0x63,0x6d,0x5a,0x3f,0x40,0xa5,0xd9,0xc9,0x1a,0xfd,0x93,0xb7,0x9d,0x24,0x18,0x30,0xf7,0xe5,0xfa,0x29,0x85,0x4b,0x8f,0x20,0xcc,0x6e,0xec,0xbb,0x24,0x8d,0xbd,0x8d,0x16,0xd1,0x4e,0x99,0x75,0x21,0x94,0xe4,0x90,0x4d,0x09,0xc7,0x4d,0x63,0x95,0x18,0x83,0x9d,0x23,0x00,},"\x89\x01\x0d\x85\x59\x72"}, +{{0x69,0x18,0x65,0xbf,0xc8,0x2a,0x1e,0x4b,0x57,0x4e,0xec,0xde,0x4c,0x75,0x19,0x09,0x3f,0xaf,0x0c,0xf8,0x67,0x38,0x02,0x34,0xe3,0x66,0x46,0x45,0xc6,0x1c,0x5f,0x79,},{0x98,0xa5,0xe3,0xa3,0x6e,0x67,0xaa,0xba,0x89,0x88,0x8b,0xf0,0x93,0xde,0x1a,0xd9,0x63,0xe7,0x74,0x01,0x3b,0x39,0x02,0xbf,0xab,0x35,0x6d,0x8b,0x90,0x17,0x8a,0x63,},{0x6e,0x0a,0xf2,0xfe,0x55,0xae,0x37,0x7a,0x6b,0x7a,0x72,0x78,0xed,0xfb,0x41,0x9b,0xd3,0x21,0xe0,0x6d,0x0d,0xf5,0xe2,0x70,0x37,0xdb,0x88,0x12,0xe7,0xe3,0x52,0x98,0x10,0xfa,0x55,0x52,0xf6,0xc0,0x02,0x09,0x85,0xca,0x17,0xa0,0xe0,0x2e,0x03,0x6d,0x7b,0x22,0x2a,0x24,0xf9,0x9b,0x77,0xb7,0x5f,0xdd,0x16,0xcb,0x05,0x56,0x81,0x07,},"\xb4\xa8\xf3\x81\xe7\x0e\x7a"}, +{{0x3b,0x26,0x51,0x6f,0xb3,0xdc,0x88,0xeb,0x18,0x1b,0x9e,0xd7,0x3f,0x0b,0xcd,0x52,0xbc,0xd6,0xb4,0xc7,0x88,0xe4,0xbc,0xaf,0x46,0x05,0x7f,0xd0,0x78,0xbe,0xe0,0x73,},{0xf8,0x1f,0xb5,0x4a,0x82,0x5f,0xce,0xd9,0x5e,0xb0,0x33,0xaf,0xcd,0x64,0x31,0x40,0x75,0xab,0xfb,0x0a,0xbd,0x20,0xa9,0x70,0x89,0x25,0x03,0x43,0x6f,0x34,0xb8,0x63,},{0xd6,0xad,0xde,0xc5,0xaf,0xb0,0x52,0x8a,0xc1,0x7b,0xb1,0x78,0xd3,0xe7,0xf2,0x88,0x7f,0x9a,0xdb,0xb1,0xad,0x16,0xe1,0x10,0x54,0x5e,0xf3,0xbc,0x57,0xf9,0xde,0x23,0x14,0xa5,0xc8,0x38,0x8f,0x72,0x3b,0x89,0x07,0xbe,0x0f,0x3a,0xc9,0x0c,0x62,0x59,0xbb,0xe8,0x85,0xec,0xc1,0x76,0x45,0xdf,0x3d,0xb7,0xd4,0x88,0xf8,0x05,0xfa,0x08,},"\x42\x84\xab\xc5\x1b\xb6\x72\x35"}, +{{0xed,0xc6,0xf5,0xfb,0xdd,0x1c,0xee,0x4d,0x10,0x1c,0x06,0x35,0x30,0xa3,0x04,0x90,0xb2,0x21,0xbe,0x68,0xc0,0x36,0xf5,0xb0,0x7d,0x0f,0x95,0x3b,0x74,0x5d,0xf1,0x92,},{0xc1,0xa4,0x9c,0x66,0xe6,0x17,0xf9,0xef,0x5e,0xc6,0x6b,0xc4,0xc6,0x56,0x4c,0xa3,0x3d,0xe2,0xa5,0xfb,0x5e,0x14,0x64,0x06,0x2e,0x6d,0x6c,0x62,0x19,0x15,0x5e,0xfd,},{0x2c,0x76,0xa0,0x4a,0xf2,0x39,0x1c,0x14,0x70,0x82,0xe3,0x3f,0xaa,0xcd,0xbe,0x56,0x64,0x2a,0x1e,0x13,0x4b,0xd3,0x88,0x62,0x0b,0x85,0x2b,0x90,0x1a,0x6b,0xc1,0x6f,0xf6,0xc9,0xcc,0x94,0x04,0xc4,0x1d,0xea,0x12,0xed,0x28,0x1d,0xa0,0x67,0xa1,0x51,0x38,0x66,0xf9,0xd9,0x64,0xf8,0xbd,0xd2,0x49,0x53,0x85,0x6c,0x50,0x04,0x29,0x01,},"\x67\x2b\xf8\x96\x5d\x04\xbc\x51\x46"}, +{{0x4e,0x7d,0x21,0xfb,0x3b,0x18,0x97,0x57,0x1a,0x44,0x58,0x33,0xbe,0x0f,0x9f,0xd4,0x1c,0xd6,0x2b,0xe3,0xaa,0x04,0x04,0x0f,0x89,0x34,0xe1,0xfc,0xbd,0xca,0xcd,0x45,},{0x31,0xb2,0x52,0x4b,0x83,0x48,0xf7,0xab,0x1d,0xfa,0xfa,0x67,0x5c,0xc5,0x38,0xe9,0xa8,0x4e,0x3f,0xe5,0x81,0x9e,0x27,0xc1,0x2a,0xd8,0xbb,0xc1,0xa3,0x6e,0x4d,0xff,},{0x28,0xe4,0x59,0x8c,0x41,0x5a,0xe9,0xde,0x01,0xf0,0x3f,0x9f,0x3f,0xab,0x4e,0x91,0x9e,0x8b,0xf5,0x37,0xdd,0x2b,0x0c,0xdf,0x6e,0x79,0xb9,0xe6,0x55,0x9c,0x94,0x09,0xd9,0x15,0x1a,0x4c,0x40,0xf0,0x83,0x19,0x39,0x37,0x62,0x7c,0x36,0x94,0x88,0x25,0x9e,0x99,0xda,0x5a,0x9f,0x0a,0x87,0x49,0x7f,0xa6,0x69,0x6a,0x5d,0xd6,0xce,0x08,},"\x33\xd7\xa7\x86\xad\xed\x8c\x1b\xf6\x91"}, +{{0xa9,0x80,0xf8,0x92,0xdb,0x13,0xc9,0x9a,0x3e,0x89,0x71,0xe9,0x65,0xb2,0xff,0x3d,0x41,0xea,0xfd,0x54,0x09,0x3b,0xc9,0xf3,0x4d,0x1f,0xd2,0x2d,0x84,0x11,0x5b,0xb6,},{0x44,0xb5,0x7e,0xe3,0x0c,0xdb,0x55,0x82,0x9d,0x0a,0x5d,0x4f,0x04,0x6b,0xae,0xf0,0x78,0xf1,0xe9,0x7a,0x7f,0x21,0xb6,0x2d,0x75,0xf8,0xe9,0x6e,0xa1,0x39,0xc3,0x5f,},{0x77,0xd3,0x89,0xe5,0x99,0x63,0x0d,0x93,0x40,0x76,0x32,0x95,0x83,0xcd,0x41,0x05,0xa6,0x49,0xa9,0x29,0x2a,0xbc,0x44,0xcd,0x28,0xc4,0x00,0x00,0xc8,0xe2,0xf5,0xac,0x76,0x60,0xa8,0x1c,0x85,0xb7,0x2a,0xf8,0x45,0x2d,0x7d,0x25,0xc0,0x70,0x86,0x1d,0xae,0x91,0x60,0x1c,0x78,0x03,0xd6,0x56,0x53,0x16,0x50,0xdd,0x4e,0x5c,0x41,0x00,},"\x34\x86\xf6\x88\x48\xa6\x5a\x0e\xb5\x50\x7d"}, +{{0x5b,0x5a,0x61,0x9f,0x8c,0xe1,0xc6,0x6d,0x7c,0xe2,0x6e,0x5a,0x2a,0xe7,0xb0,0xc0,0x4f,0xeb,0xcd,0x34,0x6d,0x28,0x6c,0x92,0x9e,0x19,0xd0,0xd5,0x97,0x3b,0xfe,0xf9,},{0x6f,0xe8,0x36,0x93,0xd0,0x11,0xd1,0x11,0x13,0x1c,0x4f,0x3f,0xba,0xaa,0x40,0xa9,0xd3,0xd7,0x6b,0x30,0x01,0x2f,0xf7,0x3b,0xb0,0xe3,0x9e,0xc2,0x7a,0xb1,0x82,0x57,},{0x0f,0x9a,0xd9,0x79,0x30,0x33,0xa2,0xfa,0x06,0x61,0x4b,0x27,0x7d,0x37,0x38,0x1e,0x6d,0x94,0xf6,0x5a,0xc2,0xa5,0xa9,0x45,0x58,0xd0,0x9e,0xd6,0xce,0x92,0x22,0x58,0xc1,0xa5,0x67,0x95,0x2e,0x86,0x3a,0xc9,0x42,0x97,0xae,0xc3,0xc0,0xd0,0xc8,0xdd,0xf7,0x10,0x84,0xe5,0x04,0x86,0x0b,0xb6,0xba,0x27,0x44,0x9b,0x55,0xad,0xc4,0x0e,},"\x5a\x8d\x9d\x0a\x22\x35\x7e\x66\x55\xf9\xc7\x85"}, +{{0x94,0x0c,0x89,0xfe,0x40,0xa8,0x1d,0xaf,0xbd,0xb2,0x41,0x6d,0x14,0xae,0x46,0x91,0x19,0x86,0x97,0x44,0x41,0x0c,0x33,0x03,0xbf,0xaa,0x02,0x41,0xda,0xc5,0x78,0x00,},{0xa2,0xeb,0x8c,0x05,0x01,0xe3,0x0b,0xae,0x0c,0xf8,0x42,0xd2,0xbd,0xe8,0xde,0xc7,0x38,0x6f,0x6b,0x7f,0xc3,0x98,0x1b,0x8c,0x57,0xc9,0x79,0x2b,0xb9,0x4c,0xf2,0xdd,},{0xd8,0xbb,0x64,0xaa,0xd8,0xc9,0x95,0x5a,0x11,0x5a,0x79,0x3a,0xdd,0xd2,0x4f,0x7f,0x2b,0x07,0x76,0x48,0x71,0x4f,0x49,0xc4,0x69,0x4e,0xc9,0x95,0xb3,0x30,0xd0,0x9d,0x64,0x0d,0xf3,0x10,0xf4,0x47,0xfd,0x7b,0x6c,0xb5,0xc1,0x4f,0x9f,0xe9,0xf4,0x90,0xbc,0xf8,0xcf,0xad,0xbf,0xd2,0x16,0x9c,0x8a,0xc2,0x0d,0x3b,0x8a,0xf4,0x9a,0x0c,},"\xb8\x7d\x38\x13\xe0\x3f\x58\xcf\x19\xfd\x0b\x63\x95"}, +{{0x9a,0xca,0xd9,0x59,0xd2,0x16,0x21,0x2d,0x78,0x9a,0x11,0x92,0x52,0xeb,0xfe,0x0c,0x96,0x51,0x2a,0x23,0xc7,0x3b,0xd9,0xf3,0xb2,0x02,0x29,0x2d,0x69,0x16,0xa7,0x38,},{0xcf,0x3a,0xf8,0x98,0x46,0x7a,0x5b,0x7a,0x52,0xd3,0x3d,0x53,0xbc,0x03,0x7e,0x26,0x42,0xa8,0xda,0x99,0x69,0x03,0xfc,0x25,0x22,0x17,0xe9,0xc0,0x33,0xe2,0xf2,0x91,},{0x6e,0xe3,0xfe,0x81,0xe2,0x3c,0x60,0xeb,0x23,0x12,0xb2,0x00,0x6b,0x3b,0x25,0xe6,0x83,0x8e,0x02,0x10,0x66,0x23,0xf8,0x44,0xc4,0x4e,0xdb,0x8d,0xaf,0xd6,0x6a,0xb0,0x67,0x10,0x87,0xfd,0x19,0x5d,0xf5,0xb8,0xf5,0x8a,0x1d,0x6e,0x52,0xaf,0x42,0x90,0x80,0x53,0xd5,0x5c,0x73,0x21,0x01,0x00,0x92,0x74,0x87,0x95,0xef,0x94,0xcf,0x06,},"\x55\xc7\xfa\x43\x4f\x5e\xd8\xcd\xec\x2b\x7a\xea\xc1\x73"}, +{{0xd5,0xae,0xee,0x41,0xee,0xb0,0xe9,0xd1,0xbf,0x83,0x37,0xf9,0x39,0x58,0x7e,0xbe,0x29,0x61,0x61,0xe6,0xbf,0x52,0x09,0xf5,0x91,0xec,0x93,0x9e,0x14,0x40,0xc3,0x00,},{0xfd,0x2a,0x56,0x57,0x23,0x16,0x3e,0x29,0xf5,0x3c,0x9d,0xe3,0xd5,0xe8,0xfb,0xe3,0x6a,0x7a,0xb6,0x6e,0x14,0x39,0xec,0x4e,0xae,0x9c,0x0a,0x60,0x4a,0xf2,0x91,0xa5,},{0xf6,0x8d,0x04,0x84,0x7e,0x5b,0x24,0x97,0x37,0x89,0x9c,0x01,0x4d,0x31,0xc8,0x05,0xc5,0x00,0x7a,0x62,0xc0,0xa1,0x0d,0x50,0xbb,0x15,0x38,0xc5,0xf3,0x55,0x03,0x95,0x1f,0xbc,0x1e,0x08,0x68,0x2f,0x2c,0xc0,0xc9,0x2e,0xfe,0x8f,0x49,0x85,0xde,0xc6,0x1d,0xcb,0xd5,0x4d,0x4b,0x94,0xa2,0x25,0x47,0xd2,0x44,0x51,0x27,0x1c,0x8b,0x00,},"\x0a\x68\x8e\x79\xbe\x24\xf8\x66\x28\x6d\x46\x46\xb5\xd8\x1c"}, +{{0x0a,0x47,0xd1,0x04,0x52,0xae,0x2f,0xeb,0xec,0x51,0x8a,0x1c,0x7c,0x36,0x28,0x90,0xc3,0xfc,0x1a,0x49,0xd3,0x4b,0x03,0xb6,0x46,0x7d,0x35,0xc9,0x04,0xa8,0x36,0x2d,},{0x34,0xe5,0xa8,0x50,0x8c,0x47,0x43,0x74,0x69,0x62,0xc0,0x66,0xe4,0xba,0xde,0xa2,0x20,0x1b,0x8a,0xb4,0x84,0xde,0x5c,0x4f,0x94,0x47,0x6c,0xcd,0x21,0x43,0x95,0x5b,},{0x2a,0x3d,0x27,0xdc,0x40,0xd0,0xa8,0x12,0x79,0x49,0xa3,0xb7,0xf9,0x08,0xb3,0x68,0x8f,0x63,0xb7,0xf1,0x4f,0x65,0x1a,0xac,0xd7,0x15,0x94,0x0b,0xdb,0xe2,0x7a,0x08,0x09,0xaa,0xc1,0x42,0xf4,0x7a,0xb0,0xe1,0xe4,0x4f,0xa4,0x90,0xba,0x87,0xce,0x53,0x92,0xf3,0x3a,0x89,0x15,0x39,0xca,0xf1,0xef,0x4c,0x36,0x7c,0xae,0x54,0x50,0x0c,},"\xc9\x42\xfa\x7a\xc6\xb2\x3a\xb7\xff\x61\x2f\xdc\x8e\x68\xef\x39"}, +{{0xf8,0x14,0x8f,0x75,0x06,0xb7,0x75,0xef,0x46,0xfd,0xc8,0xe8,0xc7,0x56,0x51,0x68,0x12,0xd4,0x7d,0x6c,0xfb,0xfa,0x31,0x8c,0x27,0xc9,0xa2,0x26,0x41,0xe5,0x6f,0x17,},{0x04,0x45,0xe4,0x56,0xda,0xcc,0x7d,0x5b,0x0b,0xbe,0xd2,0x3c,0x82,0x00,0xcd,0xb7,0x4b,0xdc,0xb0,0x3e,0x4c,0x7b,0x73,0xf0,0xa2,0xb9,0xb4,0x6e,0xac,0x5d,0x43,0x72,},{0x36,0x53,0xcc,0xb2,0x12,0x19,0x20,0x2b,0x84,0x36,0xfb,0x41,0xa3,0x2b,0xa2,0x61,0x8c,0x4a,0x13,0x34,0x31,0xe6,0xe6,0x34,0x63,0xce,0xb3,0xb6,0x10,0x6c,0x4d,0x56,0xe1,0xd2,0xba,0x16,0x5b,0xa7,0x6e,0xaa,0xd3,0xdc,0x39,0xbf,0xfb,0x13,0x0f,0x1d,0xe3,0xd8,0xe6,0x42,0x7d,0xb5,0xb7,0x19,0x38,0xdb,0x4e,0x27,0x2b,0xc3,0xe2,0x0b,},"\x73\x68\x72\x4a\x5b\x0e\xfb\x57\xd2\x8d\x97\x62\x2d\xbd\xe7\x25\xaf"}, +{{0x77,0xf8,0x86,0x91,0xc4,0xef,0xf2,0x3e,0xbb,0x73,0x64,0x94,0x70,0x92,0x95,0x1a,0x5f,0xf3,0xf1,0x07,0x85,0xb4,0x17,0xe9,0x18,0x82,0x3a,0x55,0x2d,0xab,0x7c,0x75,},{0x74,0xd2,0x91,0x27,0xf1,0x99,0xd8,0x6a,0x86,0x76,0xae,0xc3,0x3b,0x4c,0xe3,0xf2,0x25,0xcc,0xb1,0x91,0xf5,0x2c,0x19,0x1c,0xcd,0x1e,0x8c,0xca,0x65,0x21,0x3a,0x6b,},{0xfb,0xe9,0x29,0xd7,0x43,0xa0,0x3c,0x17,0x91,0x05,0x75,0x49,0x2f,0x30,0x92,0xee,0x2a,0x2b,0xf1,0x4a,0x60,0xa3,0xfc,0xac,0xec,0x74,0xa5,0x8c,0x73,0x34,0x51,0x0f,0xc2,0x62,0xdb,0x58,0x27,0x91,0x32,0x2d,0x6c,0x8c,0x41,0xf1,0x70,0x0a,0xdb,0x80,0x02,0x7e,0xca,0xbc,0x14,0x27,0x0b,0x70,0x34,0x44,0xae,0x3e,0xe7,0x62,0x3e,0x0a,},"\xbd\x8e\x05\x03\x3f\x3a\x8b\xcd\xcb\xf4\xbe\xce\xb7\x09\x01\xc8\x2e\x31"}, +{{0xab,0x6f,0x7a,0xee,0x6a,0x08,0x37,0xb3,0x34,0xba,0x5e,0xb1,0xb2,0xad,0x7f,0xce,0xcf,0xab,0x7e,0x32,0x3c,0xab,0x18,0x7f,0xe2,0xe0,0xa9,0x5d,0x80,0xef,0xf1,0x32,},{0x5b,0x96,0xdc,0xa4,0x97,0x87,0x5b,0xf9,0x66,0x4c,0x5e,0x75,0xfa,0xcf,0x3f,0x9b,0xc5,0x4b,0xae,0x91,0x3d,0x66,0xca,0x15,0xee,0x85,0xf1,0x49,0x1c,0xa2,0x4d,0x2c,},{0x73,0xbc,0xa6,0x4e,0x9d,0xd0,0xdb,0x88,0x13,0x8e,0xed,0xfa,0xfc,0xea,0x8f,0x54,0x36,0xcf,0xb7,0x4b,0xfb,0x0e,0x77,0x33,0xcf,0x34,0x9b,0xaa,0x0c,0x49,0x77,0x5c,0x56,0xd5,0x93,0x4e,0x1d,0x38,0xe3,0x6f,0x39,0xb7,0xc5,0xbe,0xb0,0xa8,0x36,0x51,0x0c,0x45,0x12,0x6f,0x8e,0xc4,0xb6,0x81,0x05,0x19,0x90,0x5b,0x0c,0xa0,0x7c,0x09,},"\x81\x71\x45\x6f\x8b\x90\x71\x89\xb1\xd7\x79\xe2\x6b\xc5\xaf\xbb\x08\xc6\x7a"}, +{{0x8d,0x13,0x5d,0xe7,0xc8,0x41,0x1b,0xbd,0xbd,0x1b,0x31,0xe5,0xdc,0x67,0x8f,0x2a,0xc7,0x10,0x9e,0x79,0x2b,0x60,0xf3,0x8c,0xd2,0x49,0x36,0xe8,0xa8,0x98,0xc3,0x2d,},{0x1c,0xa2,0x81,0x93,0x85,0x29,0x89,0x65,0x35,0xa7,0x71,0x4e,0x35,0x84,0x08,0x5b,0x86,0xef,0x9f,0xec,0x72,0x3f,0x42,0x81,0x9f,0xc8,0xdd,0x5d,0x8c,0x00,0x81,0x7f,},{0xa1,0xad,0xc2,0xbc,0x6a,0x2d,0x98,0x06,0x62,0x67,0x7e,0x7f,0xdf,0xf6,0x42,0x4d,0xe7,0xdb,0xa5,0x0f,0x57,0x95,0xca,0x90,0xfd,0xf3,0xe9,0x6e,0x25,0x6f,0x32,0x85,0xca,0xc7,0x1d,0x33,0x60,0x48,0x2e,0x99,0x3d,0x02,0x94,0xba,0x4e,0xc7,0x44,0x0c,0x61,0xaf,0xfd,0xf3,0x5f,0xe8,0x3e,0x6e,0x04,0x26,0x39,0x37,0xdb,0x93,0xf1,0x05,},"\x8b\xa6\xa4\xc9\xa1\x5a\x24\x4a\x9c\x26\xbb\x2a\x59\xb1\x02\x6f\x21\x34\x8b\x49"}, +{{0x0e,0x76,0x5d,0x72,0x0e,0x70,0x5f,0x93,0x66,0xc1,0xab,0x8c,0x3f,0xa8,0x4c,0x9a,0x44,0x37,0x0c,0x06,0x96,0x9f,0x80,0x32,0x96,0x88,0x4b,0x28,0x46,0xa6,0x52,0xa4,},{0x7f,0xae,0x45,0xdd,0x0a,0x05,0x97,0x10,0x26,0xd4,0x10,0xbc,0x49,0x7a,0xf5,0xbe,0x7d,0x08,0x27,0xa8,0x2a,0x14,0x5c,0x20,0x3f,0x62,0x5d,0xfc,0xb8,0xb0,0x3b,0xa8,},{0xbb,0x61,0xcf,0x84,0xde,0x61,0x86,0x22,0x07,0xc6,0xa4,0x55,0x25,0x8b,0xc4,0xdb,0x4e,0x15,0xee,0xa0,0x31,0x7f,0xf8,0x87,0x18,0xb8,0x82,0xa0,0x6b,0x5c,0xf6,0xec,0x6f,0xd2,0x0c,0x5a,0x26,0x9e,0x5d,0x5c,0x80,0x5b,0xaf,0xbc,0xc5,0x79,0xe2,0x59,0x0a,0xf4,0x14,0xc7,0xc2,0x27,0x27,0x3c,0x10,0x2a,0x10,0x07,0x0c,0xdf,0xe8,0x0f,},"\x1d\x56\x6a\x62\x32\xbb\xaa\xb3\xe6\xd8\x80\x4b\xb5\x18\xa4\x98\xed\x0f\x90\x49\x86"}, +{{0xdb,0x36,0xe3,0x26,0xd6,0x76,0xc2,0xd1,0x9c,0xc8,0xfe,0x0c,0x14,0xb7,0x09,0x20,0x2e,0xcf,0xc7,0x61,0xd2,0x70,0x89,0xeb,0x6e,0xa4,0xb1,0xbb,0x02,0x1e,0xcf,0xa7,},{0x48,0x35,0x9b,0x85,0x0d,0x23,0xf0,0x71,0x5d,0x94,0xbb,0x8b,0xb7,0x5e,0x7e,0x14,0x32,0x2e,0xaf,0x14,0xf0,0x6f,0x28,0xa8,0x05,0x40,0x3f,0xbd,0xa0,0x02,0xfc,0x85,},{0xb6,0xdc,0xd0,0x99,0x89,0xdf,0xba,0xc5,0x43,0x22,0xa3,0xce,0x87,0x87,0x6e,0x1d,0x62,0x13,0x4d,0xa9,0x98,0xc7,0x9d,0x24,0xb5,0x0b,0xd7,0xa6,0xa7,0x97,0xd8,0x6a,0x0e,0x14,0xdc,0x9d,0x74,0x91,0xd6,0xc1,0x4a,0x67,0x3c,0x65,0x2c,0xfb,0xec,0x9f,0x96,0x2a,0x38,0xc9,0x45,0xda,0x3b,0x2f,0x08,0x79,0xd0,0xb6,0x8a,0x92,0x13,0x00,},"\x1b\x0a\xfb\x0a\xc4\xba\x9a\xb7\xb7\x17\x2c\xdd\xc9\xeb\x42\xbb\xa1\xa6\x4b\xce\x47\xd4"}, +{{0xc8,0x99,0x55,0xe0,0xf7,0x74,0x1d,0x90,0x5d,0xf0,0x73,0x0b,0x3d,0xc2,0xb0,0xce,0x1a,0x13,0x13,0x4e,0x44,0xfe,0xf3,0xd4,0x0d,0x60,0xc0,0x20,0xef,0x19,0xdf,0x77,},{0xfd,0xb3,0x06,0x73,0x40,0x2f,0xaf,0x1c,0x80,0x33,0x71,0x4f,0x35,0x17,0xe4,0x7c,0xc0,0xf9,0x1f,0xe7,0x0c,0xf3,0x83,0x6d,0x6c,0x23,0x63,0x6e,0x3f,0xd2,0x28,0x7c,},{0x7e,0xf6,0x6e,0x5e,0x86,0xf2,0x36,0x08,0x48,0xe0,0x01,0x4e,0x94,0x88,0x0a,0xe2,0x92,0x0a,0xd8,0xa3,0x18,0x5a,0x46,0xb3,0x5d,0x1e,0x07,0xde,0xa8,0xfa,0x8a,0xe4,0xf6,0xb8,0x43,0xba,0x17,0x4d,0x99,0xfa,0x79,0x86,0x65,0x4a,0x08,0x91,0xc1,0x2a,0x79,0x44,0x55,0x66,0x93,0x75,0xbf,0x92,0xaf,0x4c,0xc2,0x77,0x0b,0x57,0x9e,0x0c,},"\x50\x7c\x94\xc8\x82\x0d\x2a\x57\x93\xcb\xf3\x44\x2b\x3d\x71\x93\x6f\x35\xfe\x3a\xfe\xf3\x16"}, +{{0x4e,0x62,0x62,0x7f,0xc2,0x21,0x14,0x24,0x78,0xae,0xe7,0xf0,0x07,0x81,0xf8,0x17,0xf6,0x62,0xe3,0xb7,0x5d,0xb2,0x9b,0xb1,0x4a,0xb4,0x7c,0xf8,0xe8,0x41,0x04,0xd6,},{0xb1,0xd3,0x98,0x01,0x89,0x20,0x27,0xd5,0x8a,0x8c,0x64,0x33,0x51,0x63,0x19,0x58,0x93,0xbf,0xc1,0xb6,0x1d,0xbe,0xca,0x32,0x60,0x49,0x7e,0x1f,0x30,0x37,0x11,0x07,},{0x83,0x6a,0xfa,0x76,0x4d,0x9c,0x48,0xaa,0x47,0x70,0xa4,0x38,0x8b,0x65,0x4e,0x97,0xb3,0xc1,0x6f,0x08,0x29,0x67,0xfe,0xbc,0xa2,0x7f,0x2f,0xc4,0x7d,0xdf,0xd9,0x24,0x4b,0x03,0xcf,0xc7,0x29,0x69,0x8a,0xcf,0x51,0x09,0x70,0x43,0x46,0xb6,0x0b,0x23,0x0f,0x25,0x54,0x30,0x08,0x9d,0xdc,0x56,0x91,0x23,0x99,0xd1,0x12,0x2d,0xe7,0x0a,},"\xd3\xd6\x15\xa8\x47\x2d\x99\x62\xbb\x70\xc5\xb5\x46\x6a\x3d\x98\x3a\x48\x11\x04\x6e\x2a\x0e\xf5"}, +{{0x6b,0x83,0xd7,0xda,0x89,0x08,0xc3,0xe7,0x20,0x5b,0x39,0x86,0x4b,0x56,0xe5,0xf3,0xe1,0x71,0x96,0xa3,0xfc,0x9c,0x2f,0x58,0x05,0xaa,0xd0,0xf5,0x55,0x4c,0x14,0x2d,},{0xd0,0xc8,0x46,0xf9,0x7f,0xe2,0x85,0x85,0xc0,0xee,0x15,0x90,0x15,0xd6,0x4c,0x56,0x31,0x1c,0x88,0x6e,0xdd,0xcc,0x18,0x5d,0x29,0x6d,0xbb,0x16,0x5d,0x26,0x25,0xd6,},{0x16,0xe4,0x62,0xa2,0x9a,0x6d,0xd4,0x98,0x68,0x5a,0x37,0x18,0xb3,0xee,0xd0,0x0c,0xc1,0x59,0x86,0x01,0xee,0x47,0x82,0x04,0x86,0x03,0x2d,0x6b,0x9a,0xcc,0x9b,0xf8,0x9f,0x57,0x68,0x4e,0x08,0xd8,0xc0,0xf0,0x55,0x89,0xcd,0xa2,0x88,0x2a,0x05,0xdc,0x4c,0x63,0xf9,0xd0,0x43,0x1d,0x65,0x52,0x71,0x08,0x12,0x43,0x30,0x03,0xbc,0x08,},"\x6a\xda\x80\xb6\xfa\x84\xf7\x03\x49\x20\x78\x9e\x85\x36\xb8\x2d\x5e\x46\x78\x05\x9a\xed\x27\xf7\x1c"}, +{{0x19,0xa9,0x1f,0xe2,0x3a,0x4e,0x9e,0x33,0xec,0xc4,0x74,0x87,0x8f,0x57,0xc6,0x4c,0xf1,0x54,0xb3,0x94,0x20,0x34,0x87,0xa7,0x03,0x5e,0x1a,0xd9,0xcd,0x69,0x7b,0x0d,},{0x2b,0xf3,0x2b,0xa1,0x42,0xba,0x46,0x22,0xd8,0xf3,0xe2,0x9e,0xcd,0x85,0xee,0xa0,0x7b,0x9c,0x47,0xbe,0x9d,0x64,0x41,0x2c,0x9b,0x51,0x0b,0x27,0xdd,0x21,0x8b,0x23,},{0x88,0x1f,0x5b,0x8c,0x5a,0x03,0x0d,0xf0,0xf7,0x5b,0x66,0x34,0xb0,0x70,0xdd,0x27,0xbd,0x1e,0xe3,0xc0,0x87,0x38,0xae,0x34,0x93,0x38,0xb3,0xee,0x64,0x69,0xbb,0xf9,0x76,0x0b,0x13,0x57,0x8a,0x23,0x7d,0x51,0x82,0x53,0x5e,0xde,0x12,0x12,0x83,0x02,0x7a,0x90,0xb5,0xf8,0x65,0xd6,0x3a,0x65,0x37,0xdc,0xa0,0x7b,0x44,0x04,0x9a,0x0f,},"\x82\xcb\x53\xc4\xd5\xa0\x13\xba\xe5\x07\x07\x59\xec\x06\xc3\xc6\x95\x5a\xb7\xa4\x05\x09\x58\xec\x32\x8c"}, +{{0x1d,0x5b,0x8c,0xb6,0x21,0x5c,0x18,0x14,0x16,0x66,0xba,0xee,0xfc,0xf5,0xd6,0x9d,0xad,0x5b,0xea,0x9a,0x34,0x93,0xdd,0xda,0xa3,0x57,0xa4,0x39,0x7a,0x13,0xd4,0xde,},{0x94,0xd2,0x3d,0x97,0x7c,0x33,0xe4,0x9e,0x5e,0x49,0x92,0xc6,0x8f,0x25,0xec,0x99,0xa2,0x7c,0x41,0xce,0x6b,0x91,0xf2,0xbf,0xa0,0xcd,0x82,0x92,0xfe,0x96,0x28,0x35,},{0x3a,0xcd,0x39,0xbe,0xc8,0xc3,0xcd,0x2b,0x44,0x29,0x97,0x22,0xb5,0x85,0x0a,0x04,0x00,0xc1,0x44,0x35,0x90,0xfd,0x48,0x61,0xd5,0x9a,0xae,0x74,0x96,0xac,0xb3,0xdf,0x73,0xfc,0x3f,0xdf,0x79,0x69,0xae,0x5f,0x50,0xba,0x47,0xdd,0xdc,0x43,0x52,0x46,0xe5,0xfd,0x37,0x6f,0x6b,0x89,0x1c,0xd4,0xc2,0xca,0xf5,0xd6,0x14,0xb6,0x17,0x0c,},"\xa9\xa8\xcb\xb0\xad\x58\x51\x24\xe5\x22\xab\xbf\xb4\x05\x33\xbd\xd6\xf4\x93\x47\xb5\x5b\x18\xe8\x55\x8c\xb0"}, +{{0x6a,0x91,0xb3,0x22,0x7c,0x47,0x22,0x99,0x08,0x9b,0xdc,0xe9,0x35,0x6e,0x72,0x6a,0x40,0xef,0xd8,0x40,0xf1,0x10,0x02,0x70,0x8b,0x7e,0xe5,0x5b,0x64,0x10,0x5a,0xc2,},{0x9d,0x08,0x4a,0xa8,0xb9,0x7a,0x6b,0x9b,0xaf,0xa4,0x96,0xdb,0xc6,0xf7,0x6f,0x33,0x06,0xa1,0x16,0xc9,0xd9,0x17,0xe6,0x81,0x52,0x0a,0x0f,0x91,0x43,0x69,0x42,0x7e,},{0xf5,0x87,0x54,0x23,0x78,0x1b,0x66,0x21,0x6c,0xb5,0xe8,0x99,0x8d,0xe5,0xd9,0xff,0xc2,0x9d,0x1d,0x67,0x10,0x70,0x54,0xac,0xe3,0x37,0x45,0x03,0xa9,0xc3,0xef,0x81,0x15,0x77,0xf2,0x69,0xde,0x81,0x29,0x67,0x44,0xbd,0x70,0x6f,0x1a,0xc4,0x78,0xca,0xf0,0x9b,0x54,0xcd,0xf8,0x71,0xb3,0xf8,0x02,0xbd,0x57,0xf9,0xa6,0xcb,0x91,0x01,},"\x5c\xb6\xf9\xaa\x59\xb8\x0e\xca\x14\xf6\xa6\x8f\xb4\x0c\xf0\x7b\x79\x4e\x75\x17\x1f\xba\x96\x26\x2c\x1c\x6a\xdc"}, +{{0x93,0xea,0xa8,0x54,0xd7,0x91,0xf0,0x53,0x72,0xce,0x72,0xb9,0x4f,0xc6,0x50,0x3b,0x2f,0xf8,0xae,0x68,0x19,0xe6,0xa2,0x1a,0xfe,0x82,0x5e,0x27,0xad,0xa9,0xe4,0xfb,},{0x16,0xce,0xe8,0xa3,0xf2,0x63,0x18,0x34,0xc8,0x8b,0x67,0x08,0x97,0xff,0x0b,0x08,0xce,0x90,0xcc,0x14,0x7b,0x45,0x93,0xb3,0xf1,0xf4,0x03,0x72,0x7f,0x7e,0x7a,0xd5,},{0xd8,0x34,0x19,0x7c,0x1a,0x30,0x80,0x61,0x4e,0x0a,0x5f,0xa0,0xaa,0xaa,0x80,0x88,0x24,0xf2,0x1c,0x38,0xd6,0x92,0xe6,0xff,0xbd,0x20,0x0f,0x7d,0xfb,0x3c,0x8f,0x44,0x40,0x2a,0x73,0x82,0x18,0x0b,0x98,0xad,0x0a,0xfc,0x8e,0xec,0x1a,0x02,0xac,0xec,0xf3,0xcb,0x7f,0xde,0x62,0x7b,0x9f,0x18,0x11,0x1f,0x26,0x0a,0xb1,0xdb,0x9a,0x07,},"\x32\xfe\x27\x99\x41\x24\x20\x21\x53\xb5\xc7\x0d\x38\x13\xfd\xee\x9c\x2a\xa6\xe7\xdc\x74\x3d\x4d\x53\x5f\x18\x40\xa5"}, +{{0x94,0x1c,0xac,0x69,0xfb,0x7b,0x18,0x15,0xc5,0x7b,0xb9,0x87,0xc4,0xd6,0xc2,0xad,0x2c,0x35,0xd5,0xf9,0xa3,0x18,0x2a,0x79,0xd4,0xba,0x13,0xea,0xb2,0x53,0xa8,0xad,},{0x23,0xbe,0x32,0x3c,0x56,0x2d,0xfd,0x71,0xce,0x65,0xf5,0xbb,0xa5,0x6a,0x74,0xa3,0xa6,0xdf,0xc3,0x6b,0x57,0x3d,0x2f,0x94,0xf6,0x35,0xc7,0xf9,0xb4,0xfd,0x5a,0x5b,},{0x0f,0x8f,0xad,0x1e,0x6b,0xde,0x77,0x1b,0x4f,0x54,0x20,0xea,0xc7,0x5c,0x37,0x8b,0xae,0x6d,0xb5,0xac,0x66,0x50,0xcd,0x2b,0xc2,0x10,0xc1,0x82,0x3b,0x43,0x2b,0x48,0xe0,0x16,0xb1,0x05,0x95,0x45,0x8f,0xfa,0xb9,0x2f,0x7a,0x89,0x89,0xb2,0x93,0xce,0xb8,0xdf,0xed,0x6c,0x24,0x3a,0x20,0x38,0xfc,0x06,0x65,0x2a,0xaa,0xf1,0x6f,0x02,},"\xbb\x31\x72\x79\x57\x10\xfe\x00\x05\x4d\x3b\x5d\xfe\xf8\xa1\x16\x23\x58\x2d\xa6\x8b\xf8\xe4\x6d\x72\xd2\x7c\xec\xe2\xaa"}, +{{0x1a,0xcd,0xbb,0x79,0x3b,0x03,0x84,0x93,0x46,0x27,0x47,0x0d,0x79,0x5c,0x3d,0x1d,0xd4,0xd7,0x9c,0xea,0x59,0xef,0x98,0x3f,0x29,0x5b,0x9b,0x59,0x17,0x9c,0xbb,0x28,},{0x3f,0x60,0xc7,0x54,0x1a,0xfa,0x76,0xc0,0x19,0xcf,0x5a,0xa8,0x2d,0xcd,0xb0,0x88,0xed,0x9e,0x4e,0xd9,0x78,0x05,0x14,0xae,0xfb,0x37,0x9d,0xab,0xc8,0x44,0xf3,0x1a,},{0xbe,0x71,0xef,0x48,0x06,0xcb,0x04,0x1d,0x88,0x5e,0xff,0xd9,0xe6,0xb0,0xfb,0xb7,0x3d,0x65,0xd7,0xcd,0xec,0x47,0xa8,0x9c,0x8a,0x99,0x48,0x92,0xf4,0xe5,0x5a,0x56,0x8c,0x4c,0xc7,0x8d,0x61,0xf9,0x01,0xe8,0x0d,0xbb,0x62,0x8b,0x86,0xa2,0x3c,0xcd,0x59,0x4e,0x71,0x2b,0x57,0xfa,0x94,0xc2,0xd6,0x7e,0xc2,0x66,0x34,0x87,0x85,0x07,},"\x7c\xf3\x4f\x75\xc3\xda\xc9\xa8\x04\xd0\xfc\xd0\x9e\xba\x9b\x29\xc9\x48\x4e\x8a\x01\x8f\xa9\xe0\x73\x04\x2d\xf8\x8e\x3c\x56"}, +{{0x8e,0xd7,0xa7,0x97,0xb9,0xce,0xa8,0xa8,0x37,0x0d,0x41,0x91,0x36,0xbc,0xdf,0x68,0x3b,0x75,0x9d,0x2e,0x3c,0x69,0x47,0xf1,0x7e,0x13,0xe2,0x48,0x5a,0xa9,0xd4,0x20,},{0xb4,0x9f,0x3a,0x78,0xb1,0xc6,0xa7,0xfc,0xa8,0xf3,0x46,0x6f,0x33,0xbc,0x0e,0x92,0x9f,0x01,0xfb,0xa0,0x43,0x06,0xc2,0xa7,0x46,0x5f,0x46,0xc3,0x75,0x93,0x16,0xd9,},{0x04,0x26,0x6c,0x03,0x3b,0x91,0xc1,0x32,0x2c,0xeb,0x34,0x46,0xc9,0x01,0xff,0xcf,0x3c,0xc4,0x0c,0x40,0x34,0xe8,0x87,0xc9,0x59,0x7c,0xa1,0x89,0x3b,0xa7,0x33,0x0b,0xec,0xbb,0xd8,0xb4,0x81,0x42,0xef,0x35,0xc0,0x12,0xc6,0xba,0x51,0xa6,0x6d,0xf9,0x30,0x8c,0xb6,0x26,0x8a,0xd6,0xb1,0xe4,0xb0,0x3e,0x70,0x10,0x24,0x95,0x79,0x0b,},"\xa7\x50\xc2\x32\x93\x3d\xc1\x4b\x11\x84\xd8\x6d\x8b\x4c\xe7\x2e\x16\xd6\x97\x44\xba\x69\x81\x8b\x6a\xc3\x3b\x1d\x82\x3b\xb2\xc3"}, +{{0xf2,0xab,0x39,0x6f,0xe8,0x90,0x6e,0x3e,0x56,0x33,0xe9,0x9c,0xab,0xcd,0x5b,0x09,0xdf,0x08,0x59,0xb5,0x16,0x23,0x0b,0x1e,0x04,0x50,0xb5,0x80,0xb6,0x5f,0x61,0x6c,},{0x8e,0xa0,0x74,0x24,0x51,0x59,0xa1,0x16,0xaa,0x71,0x22,0xa2,0x5e,0xc1,0x6b,0x89,0x1d,0x62,0x5a,0x68,0xf3,0x36,0x60,0x42,0x39,0x08,0xf6,0xbd,0xc4,0x4f,0x8c,0x1b,},{0xa0,0x6a,0x23,0xd9,0x82,0xd8,0x1a,0xb8,0x83,0xaa,0xe2,0x30,0xad,0xbc,0x36,0x8a,0x6a,0x99,0x77,0xf0,0x03,0xce,0xbb,0x00,0xd4,0xc2,0xe4,0x01,0x84,0x90,0x19,0x1a,0x84,0xd3,0xa2,0x82,0xfd,0xbf,0xb2,0xfc,0x88,0x04,0x6e,0x62,0xde,0x43,0xe1,0x5f,0xb5,0x75,0x33,0x6b,0x3c,0x8b,0x77,0xd1,0x9c,0xe6,0xa0,0x09,0xce,0x51,0xf5,0x0c,},"\x5a\x44\xe3\x4b\x74\x6c\x5f\xd1\x89\x8d\x55\x2a\xb3\x54\xd2\x8f\xb4\x71\x38\x56\xd7\x69\x7d\xd6\x3e\xb9\xbd\x6b\x99\xc2\x80\xe1\x87"}, +{{0x55,0x0a,0x41,0xc0,0x13,0xf7,0x9b,0xab,0x8f,0x06,0xe4,0x3a,0xd1,0x83,0x6d,0x51,0x31,0x27,0x36,0xa9,0x71,0x38,0x06,0xfa,0xfe,0x66,0x45,0x21,0x9e,0xaa,0x1f,0x9d,},{0xaf,0x6b,0x71,0x45,0x47,0x4d,0xc9,0x95,0x4b,0x9a,0xf9,0x3a,0x9c,0xdb,0x34,0x44,0x9d,0x5b,0x7c,0x65,0x1c,0x82,0x4d,0x24,0xe2,0x30,0xb9,0x00,0x33,0xce,0x59,0xc0,},{0x16,0xdc,0x1e,0x2b,0x9f,0xa9,0x09,0xee,0xfd,0xc2,0x77,0xba,0x16,0xeb,0xe2,0x07,0xb8,0xda,0x5e,0x91,0x14,0x3c,0xde,0x78,0xc5,0x04,0x7a,0x89,0xf6,0x81,0xc3,0x3c,0x4e,0x4e,0x34,0x28,0xd5,0xc9,0x28,0x09,0x59,0x03,0xa8,0x11,0xec,0x00,0x2d,0x52,0xa3,0x9e,0xd7,0xf8,0xb3,0xfe,0x19,0x27,0x20,0x0c,0x6d,0xd0,0xb9,0xab,0x3e,0x04,},"\x8b\xc4\x18\x5e\x50\xe5\x7d\x5f\x87\xf4\x75\x15\xfe\x2b\x18\x37\xd5\x85\xf0\xaa\xe9\xe1\xca\x38\x3b\x3e\xc9\x08\x88\x4b\xb9\x00\xff\x27"}, +{{0x19,0xac,0x3e,0x27,0x24,0x38,0xc7,0x2d,0xdf,0x7b,0x88,0x19,0x64,0x86,0x7c,0xb3,0xb3,0x1f,0xf4,0xc7,0x93,0xbb,0x7e,0xa1,0x54,0x61,0x3c,0x1d,0xb0,0x68,0xcb,0x7e,},{0xf8,0x5b,0x80,0xe0,0x50,0xa1,0xb9,0x62,0x0d,0xb1,0x38,0xbf,0xc9,0xe1,0x00,0x32,0x7e,0x25,0xc2,0x57,0xc5,0x92,0x17,0xb6,0x01,0xf1,0xf6,0xac,0x9a,0x41,0x3d,0x3f,},{0xea,0x85,0x5d,0x78,0x1c,0xbe,0xa4,0x68,0x2e,0x35,0x01,0x73,0xcb,0x89,0xe8,0x61,0x9c,0xcf,0xdd,0xb9,0x7c,0xdc,0xe1,0x6f,0x9a,0x2f,0x6f,0x68,0x92,0xf4,0x6d,0xbe,0x68,0xe0,0x4b,0x12,0xb8,0xd8,0x86,0x89,0xa7,0xa3,0x16,0x70,0xcd,0xff,0x40,0x9a,0xf9,0x8a,0x93,0xb4,0x9a,0x34,0x53,0x7b,0x6a,0xa0,0x09,0xd2,0xeb,0x8b,0x47,0x01,},"\x95\x87\x2d\x5f\x78\x9f\x95\x48\x4e\x30\xcb\xb0\xe1\x14\x02\x89\x53\xb1\x6f\x5c\x6a\x8d\x9f\x65\xc0\x03\xa8\x35\x43\xbe\xaa\x46\xb3\x86\x45"}, +{{0xca,0x26,0x7d,0xe9,0x6c,0x93,0xc2,0x38,0xfa,0xfb,0x12,0x79,0x81,0x20,0x59,0xab,0x93,0xac,0x03,0x05,0x96,0x57,0xfd,0x99,0x4f,0x8f,0xa5,0xa0,0x92,0x39,0xc8,0x21,},{0x01,0x73,0x70,0xc8,0x79,0x09,0x0a,0x81,0xc7,0xf2,0x72,0xc2,0xfc,0x80,0xe3,0xaa,0xc2,0xbc,0x60,0x3f,0xcb,0x37,0x9a,0xfc,0x98,0x69,0x11,0x60,0xab,0x74,0x5b,0x26,},{0xac,0x95,0x7f,0x82,0x33,0x5a,0xa7,0x14,0x1e,0x96,0xb5,0x9d,0x63,0xe3,0xcc,0xee,0x95,0xc3,0xa2,0xc4,0x7d,0x02,0x65,0x40,0xc2,0xaf,0x42,0xdc,0x95,0x33,0xd5,0xfd,0x81,0x82,0x7d,0x16,0x79,0xad,0x18,0x7a,0xea,0xf3,0x78,0x34,0x91,0x5e,0x75,0xb1,0x47,0xa9,0x28,0x68,0x06,0xc8,0x01,0x75,0x16,0xba,0x43,0xdd,0x05,0x1a,0x5e,0x0c,},"\xe0\x5f\x71\xe4\xe4\x9a\x72\xec\x55\x0c\x44\xa3\xb8\x5a\xca\x8f\x20\xff\x26\xc3\xee\x94\xa8\x0f\x1b\x43\x1c\x7d\x15\x4e\xc9\x60\x3e\xe0\x25\x31"}, +{{0x3d,0xff,0x5e,0x89,0x94,0x75,0xe7,0xe9,0x1d,0xd2,0x61,0x32,0x2f,0xab,0x09,0x98,0x0c,0x52,0x97,0x0d,0xe1,0xda,0x6e,0x2e,0x20,0x16,0x60,0xcc,0x4f,0xce,0x70,0x32,},{0xf3,0x01,0x62,0xba,0xc9,0x84,0x47,0xc4,0x04,0x2f,0xac,0x05,0xda,0x44,0x80,0x34,0x62,0x9b,0xe2,0xc6,0xa5,0x8d,0x30,0xdf,0xd5,0x78,0xba,0x9f,0xb5,0xe3,0x93,0x0b,},{0x5e,0xfe,0x7a,0x92,0xff,0x96,0x23,0x08,0x9b,0x3e,0x3b,0x78,0xf3,0x52,0x11,0x53,0x66,0xe2,0x6b,0xa3,0xfb,0x1a,0x41,0x62,0x09,0xbc,0x02,0x9e,0x9c,0xad,0xcc,0xd9,0xf4,0xaf,0xfa,0x33,0x35,0x55,0xa8,0xf3,0xa3,0x5a,0x9d,0x0f,0x7c,0x34,0xb2,0x92,0xca,0xe7,0x7e,0xc9,0x6f,0xa3,0xad,0xfc,0xaa,0xde,0xe2,0xd9,0xce,0xd8,0xf8,0x05,},"\x93\x8f\x0e\x77\x62\x1b\xf3\xea\x52\xc7\xc4\x91\x1c\x51\x57\xc2\xd8\xa2\xa8\x58\x09\x3e\xf1\x6a\xa9\xb1\x07\xe6\x9d\x98\x03\x7b\xa1\x39\xa3\xc3\x82"}, +{{0x9a,0x6b,0x84,0x78,0x64,0xe7,0x0c,0xfe,0x8b,0xa6,0xab,0x22,0xfa,0x0c,0xa3,0x08,0xc0,0xcc,0x8b,0xec,0x71,0x41,0xfb,0xca,0xa3,0xb8,0x1f,0x5d,0x1e,0x1c,0xfc,0xfc,},{0x34,0xad,0x0f,0xbd,0xb2,0x56,0x65,0x07,0xa8,0x1c,0x2b,0x1f,0x8a,0xa8,0xf5,0x3d,0xcc,0xaa,0x64,0xcc,0x87,0xad,0xa9,0x1b,0x90,0x3e,0x90,0x0d,0x07,0xee,0xe9,0x30,},{0x2a,0xb2,0x55,0x16,0x9c,0x48,0x9c,0x54,0xc7,0x32,0x23,0x2e,0x37,0xc8,0x73,0x49,0xd4,0x86,0xb1,0xeb,0xa2,0x05,0x09,0xdb,0xab,0xe7,0xfe,0xd3,0x29,0xef,0x08,0xfd,0x75,0xba,0x1c,0xd1,0x45,0xe6,0x7b,0x2e,0xa2,0x6c,0xb5,0xcc,0x51,0xca,0xb3,0x43,0xee,0xb0,0x85,0xfe,0x1f,0xd7,0xb0,0xec,0x4c,0x6a,0xfc,0xd9,0xb9,0x79,0xf9,0x05,},"\x83\x83\x67\x47\x11\x83\xc7\x1f\x7e\x71\x77\x24\xf8\x9d\x40\x1c\x3a\xd9\x86\x3f\xd9\xcc\x7a\xa3\xcf\x33\xd3\xc5\x29\x86\x0c\xb5\x81\xf3\x09\x3d\x87\xda"}, +{{0x57,0x5b,0xe0,0x7a,0xfc,0xa5,0xd0,0x63,0xc2,0x38,0xcd,0x9b,0x80,0x28,0x77,0x2c,0xc4,0x9c,0xda,0x34,0x47,0x14,0x32,0xa2,0xe1,0x66,0xe0,0x96,0xe2,0x21,0x9e,0xfc,},{0x94,0xe5,0xeb,0x4d,0x50,0x24,0xf4,0x9d,0x7e,0xbf,0x79,0x81,0x7c,0x8d,0xe1,0x14,0x97,0xdc,0x2b,0x55,0x62,0x2a,0x51,0xae,0x12,0x3f,0xfc,0x74,0x9d,0xbb,0x16,0xe0,},{0x58,0x27,0x1d,0x44,0x23,0x6f,0x3b,0x98,0xc5,0x8f,0xd7,0xae,0x0d,0x2f,0x49,0xef,0x2b,0x6e,0x3a,0xff,0xdb,0x22,0x5a,0xa3,0xba,0x55,0x5f,0x0e,0x11,0xcc,0x53,0xc2,0x3a,0xd1,0x9b,0xaf,0x24,0x34,0x65,0x90,0xd0,0x5d,0x7d,0x53,0x90,0x58,0x20,0x82,0xcf,0x94,0xd3,0x9c,0xad,0x65,0x30,0xab,0x93,0xd1,0x3e,0xfb,0x39,0x27,0x95,0x06,},"\x33\xe5\x91\x8b\x66\xd3\x3d\x55\xfe\x71\x7c\xa3\x43\x83\xea\xe7\x8f\x0a\xf8\x28\x89\xca\xf6\x69\x6e\x1a\xc9\xd9\x5d\x1f\xfb\x32\xcb\xa7\x55\xf9\xe3\x50\x3e"}, +{{0x15,0xff,0xb4,0x55,0x14,0xd4,0x34,0x44,0xd6,0x1f,0xcb,0x10,0x5e,0x30,0xe1,0x35,0xfd,0x26,0x85,0x23,0xdd,0xa2,0x0b,0x82,0x75,0x8b,0x17,0x94,0x23,0x11,0x04,0x41,},{0x17,0x72,0xc5,0xab,0xc2,0xd2,0x3f,0xd2,0xf9,0xd1,0xc3,0x25,0x7b,0xe7,0xbc,0x3c,0x1c,0xd7,0x9c,0xee,0x40,0x84,0x4b,0x74,0x9b,0x3a,0x77,0x43,0xd2,0xf9,0x64,0xb8,},{0x68,0x28,0xcd,0x76,0x24,0xe7,0x93,0xb8,0xa4,0xce,0xb9,0x6d,0x3c,0x2a,0x97,0x5b,0xf7,0x73,0xe5,0xff,0x66,0x45,0xf3,0x53,0x61,0x40,0x58,0x62,0x1e,0x58,0x83,0x52,0x89,0xe7,0xf3,0x1f,0x42,0xdf,0xe6,0xaf,0x6d,0x73,0x6f,0x26,0x44,0x51,0x1e,0x32,0x0c,0x0f,0xa6,0x98,0x58,0x2a,0x79,0x77,0x8d,0x18,0x73,0x0e,0xd3,0xe8,0xcb,0x08,},"\xda\x9c\x55\x59\xd0\xea\x51\xd2\x55\xb6\xbd\x9d\x76\x38\xb8\x76\x47\x2f\x94\x2b\x33\x0f\xc0\xe2\xb3\x0a\xea\x68\xd7\x73\x68\xfc\xe4\x94\x82\x72\x99\x1d\x25\x7e"}, +{{0xfe,0x05,0x68,0x64,0x29,0x43,0xb2,0xe1,0xaf,0xbf,0xd1,0xf1,0x0f,0xe8,0xdf,0x87,0xa4,0x23,0x6b,0xea,0x40,0xdc,0xe7,0x42,0x07,0x2c,0xb2,0x18,0x86,0xee,0xc1,0xfa,},{0x29,0x9e,0xbd,0x1f,0x13,0x17,0x7d,0xbd,0xb6,0x6a,0x91,0x2b,0xbf,0x71,0x20,0x38,0xfd,0xf7,0x3b,0x06,0xc3,0xac,0x02,0x0c,0x7b,0x19,0x12,0x67,0x55,0xd4,0x7f,0x61,},{0xd5,0x9e,0x6d,0xfc,0xc6,0xd7,0xe3,0xe2,0xc5,0x8d,0xec,0x81,0xe9,0x85,0xd2,0x45,0xe6,0x81,0xac,0xf6,0x59,0x4a,0x23,0xc5,0x92,0x14,0xf7,0xbe,0xd8,0x01,0x5d,0x81,0x3c,0x76,0x82,0xb6,0x0b,0x35,0x83,0x44,0x03,0x11,0xe7,0x2a,0x86,0x65,0xba,0x2c,0x96,0xde,0xc2,0x3c,0xe8,0x26,0xe1,0x60,0x12,0x7e,0x18,0x13,0x2b,0x03,0x04,0x04,},"\xc5\x9d\x08\x62\xec\x1c\x97\x46\xab\xcc\x3c\xf8\x3c\x9e\xeb\xa2\xc7\x08\x2a\x03\x6a\x8c\xb5\x7c\xe4\x87\xe7\x63\x49\x27\x96\xd4\x7e\x6e\x06\x3a\x0c\x1f\xec\xcc\x2d"}, +{{0x5e,0xcb,0x16,0xc2,0xdf,0x27,0xc8,0xcf,0x58,0xe4,0x36,0xa9,0xd3,0xaf,0xfb,0xd5,0x8e,0x95,0x38,0xa9,0x26,0x59,0xa0,0xf9,0x7c,0x4c,0x4f,0x99,0x46,0x35,0xa8,0xca,},{0xda,0x76,0x8b,0x20,0xc4,0x37,0xdd,0x3a,0xa5,0xf8,0x4b,0xb6,0xa0,0x77,0xff,0xa3,0x4a,0xb6,0x85,0x01,0xc5,0x35,0x2b,0x5c,0xc3,0xfd,0xce,0x7f,0xe6,0xc2,0x39,0x8d,},{0x1c,0x72,0x3a,0x20,0xc6,0x77,0x24,0x26,0xa6,0x70,0xe4,0xd5,0xc4,0xa9,0x7c,0x6e,0xbe,0x91,0x47,0xf7,0x1b,0xb0,0xa4,0x15,0x63,0x1e,0x44,0x40,0x6e,0x29,0x03,0x22,0xe4,0xca,0x97,0x7d,0x34,0x8f,0xe7,0x85,0x6a,0x8e,0xdc,0x23,0x5d,0x0f,0xe9,0x5f,0x7e,0xd9,0x1a,0xef,0xdd,0xf2,0x8a,0x77,0xe2,0xc7,0xdb,0xfd,0x8f,0x55,0x2f,0x0a,},"\x56\xf1\x32\x9d\x9a\x6b\xe2\x5a\x61\x59\xc7\x2f\x12\x68\x8d\xc8\x31\x4e\x85\xdd\x9e\x7e\x4d\xc0\x5b\xbe\xcb\x77\x29\xe0\x23\xc8\x6f\x8e\x09\x37\x35\x3f\x27\xc7\xed\xe9"}, +{{0xd5,0x99,0xd6,0x37,0xb3,0xc3,0x0a,0x82,0xa9,0x98,0x4e,0x2f,0x75,0x84,0x97,0xd1,0x44,0xde,0x6f,0x06,0xb9,0xfb,0xa0,0x4d,0xd4,0x0f,0xd9,0x49,0x03,0x9d,0x7c,0x84,},{0x67,0x91,0xd8,0xce,0x50,0xa4,0x46,0x89,0xfc,0x17,0x87,0x27,0xc5,0xc3,0xa1,0xc9,0x59,0xfb,0xee,0xd7,0x4e,0xf7,0xd8,0xe7,0xbd,0x3c,0x1a,0xb4,0xda,0x31,0xc5,0x1f,},{0xeb,0xf1,0x0d,0x9a,0xc7,0xc9,0x61,0x08,0x14,0x0e,0x7d,0xef,0x6f,0xe9,0x53,0x3d,0x72,0x76,0x46,0xff,0x5b,0x3a,0xf2,0x73,0xc1,0xdf,0x95,0x76,0x2a,0x66,0xf3,0x2b,0x65,0xa0,0x96,0x34,0xd0,0x13,0xf5,0x4b,0x5d,0xd6,0x01,0x1f,0x91,0xbc,0x33,0x6c,0xa8,0xb3,0x55,0xce,0x33,0xf8,0xcf,0xbe,0xc2,0x53,0x5a,0x4c,0x42,0x7f,0x82,0x05,},"\xa7\xc0\x4e\x8b\xa7\x5d\x0a\x03\xd8\xb1\x66\xad\x7a\x1d\x77\xe1\xb9\x1c\x7a\xaf\x7b\xef\xdd\x99\x31\x1f\xc3\xc5\x4a\x68\x4d\xdd\x97\x1d\x5b\x32\x11\xc3\xee\xaf\xf1\xe5\x4e"}, +{{0x30,0xab,0x82,0x32,0xfa,0x70,0x18,0xf0,0xce,0x6c,0x39,0xbd,0x8f,0x78,0x2f,0xe2,0xe1,0x59,0x75,0x8b,0xb0,0xf2,0xf4,0x38,0x6c,0x7f,0x28,0xcf,0xd2,0xc8,0x58,0x98,},{0xec,0xfb,0x6a,0x2b,0xd4,0x2f,0x31,0xb6,0x12,0x50,0xba,0x5d,0xe7,0xe4,0x6b,0x47,0x19,0xaf,0xdf,0xbc,0x66,0x0d,0xb7,0x1a,0x7b,0xd1,0xdf,0x7b,0x0a,0x3a,0xbe,0x37,},{0x9a,0xf8,0x85,0x34,0x4c,0xc7,0x23,0x94,0x98,0xf7,0x12,0xdf,0x80,0xbc,0x01,0xb8,0x06,0x38,0x29,0x1e,0xd4,0xa1,0xd2,0x8b,0xaa,0x55,0x45,0x01,0x7a,0x72,0xe2,0xf6,0x56,0x49,0xcc,0xf9,0x60,0x3d,0xa6,0xeb,0x5b,0xfa,0xb9,0xf5,0x54,0x3a,0x6c,0xa4,0xa7,0xaf,0x38,0x66,0x15,0x3c,0x76,0xbf,0x66,0xbf,0x95,0xde,0xf6,0x15,0xb0,0x0c,},"\x63\xb8\x0b\x79\x56\xac\xbe\xcf\x0c\x35\xe9\xab\x06\xb9\x14\xb0\xc7\x01\x4f\xe1\xa4\xbb\xc0\x21\x72\x40\xc1\xa3\x30\x95\xd7\x07\x95\x3e\xd7\x7b\x15\xd2\x11\xad\xaf\x9b\x97\xdc"}, +{{0x0d,0xdc,0xdc,0x87,0x2c,0x7b,0x74,0x8d,0x40,0xef,0xe9,0x6c,0x28,0x81,0xae,0x18,0x9d,0x87,0xf5,0x61,0x48,0xed,0x8a,0xf3,0xeb,0xbb,0xc8,0x03,0x24,0xe3,0x8b,0xdd,},{0x58,0x8d,0xda,0xdc,0xbc,0xed,0xf4,0x0d,0xf0,0xe9,0x69,0x7d,0x8b,0xb2,0x77,0xc7,0xbb,0x14,0x98,0xfa,0x1d,0x26,0xce,0x0a,0x83,0x5a,0x76,0x0b,0x92,0xca,0x7c,0x85,},{0xc1,0x79,0xc0,0x94,0x56,0xe2,0x35,0xfe,0x24,0x10,0x5a,0xfa,0x6e,0x8e,0xc0,0x46,0x37,0xf8,0xf9,0x43,0x81,0x7c,0xd0,0x98,0xba,0x95,0x38,0x7f,0x96,0x53,0xb2,0xad,0xd1,0x81,0xa3,0x14,0x47,0xd9,0x2d,0x1a,0x1d,0xdf,0x1c,0xeb,0x0d,0xb6,0x21,0x18,0xde,0x9d,0xff,0xb7,0xdc,0xd2,0x42,0x40,0x57,0xcb,0xdf,0xf5,0xd4,0x1d,0x04,0x03,},"\x65\x64\x1c\xd4\x02\xad\xd8\xbf\x3d\x1d\x67\xdb\xeb\x6d\x41\xde\xbf\xbe\xf6\x7e\x43\x17\xc3\x5b\x0a\x6d\x5b\xbb\xae\x0e\x03\x4d\xe7\xd6\x70\xba\x14\x13\xd0\x56\xf2\xd6\xf1\xde\x12"}, +{{0x89,0xf0,0xd6,0x82,0x99,0xba,0x0a,0x5a,0x83,0xf2,0x48,0xae,0x0c,0x16,0x9f,0x8e,0x38,0x49,0xa9,0xb4,0x7b,0xd4,0x54,0x98,0x84,0x30,0x5c,0x99,0x12,0xb4,0x66,0x03,},{0xab,0xa3,0xe7,0x95,0xaa,0xb2,0x01,0x2a,0xcc,0xea,0xdd,0x7b,0x3b,0xd9,0xda,0xee,0xed,0x6f,0xf5,0x25,0x8b,0xdc,0xd7,0xc9,0x36,0x99,0xc2,0xa3,0x83,0x6e,0x38,0x32,},{0x2c,0x69,0x1f,0xa8,0xd4,0x87,0xce,0x20,0xd5,0xd2,0xfa,0x41,0x55,0x91,0x16,0xe0,0xbb,0xf4,0x39,0x7c,0xf5,0x24,0x0e,0x15,0x25,0x56,0x18,0x35,0x41,0xd6,0x6c,0xf7,0x53,0x58,0x24,0x01,0xa4,0x38,0x8d,0x39,0x03,0x39,0xdb,0xef,0x4d,0x38,0x47,0x43,0xca,0xa3,0x46,0xf5,0x5f,0x8d,0xab,0xa6,0x8b,0xa7,0xb9,0x13,0x1a,0x8a,0x6e,0x0b,},"\x4f\x18\x46\xdd\x7a\xd5\x0e\x54\x5d\x4c\xfb\xff\xbb\x1d\xc2\xff\x14\x5d\xc1\x23\x75\x4d\x08\xaf\x4e\x44\xec\xc0\xbc\x8c\x91\x41\x13\x88\xbc\x76\x53\xe2\xd8\x93\xd1\xea\xc2\x10\x7d\x05"}, +{{0x0a,0x3c,0x18,0x44,0xe2,0xdb,0x07,0x0f,0xb2,0x4e,0x3c,0x95,0xcb,0x1c,0xc6,0x71,0x4e,0xf8,0x4e,0x2c,0xcd,0x2b,0x9d,0xd2,0xf1,0x46,0x0e,0xbf,0x7e,0xcf,0x13,0xb1,},{0x72,0xe4,0x09,0x93,0x7e,0x06,0x10,0xeb,0x5c,0x20,0xb3,0x26,0xdc,0x6e,0xa1,0xbb,0xbc,0x04,0x06,0x70,0x1c,0x5c,0xd6,0x7d,0x1f,0xbd,0xe0,0x91,0x92,0xb0,0x7c,0x01,},{0x87,0xf7,0xfd,0xf4,0x60,0x95,0x20,0x1e,0x87,0x7a,0x58,0x8f,0xe3,0xe5,0xaa,0xf4,0x76,0xbd,0x63,0x13,0x8d,0x8a,0x87,0x8b,0x89,0xd6,0xac,0x60,0x63,0x1b,0x34,0x58,0xb9,0xd4,0x1a,0x3c,0x61,0xa5,0x88,0xe1,0xdb,0x8d,0x29,0xa5,0x96,0x89,0x81,0xb0,0x18,0x77,0x6c,0x58,0x87,0x80,0x92,0x2f,0x5a,0xa7,0x32,0xba,0x63,0x79,0xdd,0x05,},"\x4c\x82\x74\xd0\xed\x1f\x74\xe2\xc8\x6c\x08\xd9\x55\xbd\xe5\x5b\x2d\x54\x32\x7e\x82\x06\x2a\x1f\x71\xf7\x0d\x53\x6f\xdc\x87\x22\xcd\xea\xd7\xd2\x2a\xae\xad\x2b\xfa\xa1\xad\x00\xb8\x29\x57"}, +{{0xc8,0xd7,0xa8,0x81,0x8b,0x98,0xdf,0xdb,0x20,0x83,0x9c,0x87,0x1c,0xb5,0xc4,0x8e,0x9e,0x94,0x70,0xca,0x3a,0xd3,0x5b,0xa2,0x61,0x3a,0x5d,0x31,0x99,0xc8,0xab,0x23,},{0x90,0xd2,0xef,0xbb,0xa4,0xd4,0x3e,0x6b,0x2b,0x99,0x2c,0xa1,0x60,0x83,0xdb,0xcf,0xa2,0xb3,0x22,0x38,0x39,0x07,0xb0,0xee,0x75,0xf3,0xe9,0x58,0x45,0xd3,0xc4,0x7f,},{0xfa,0x2e,0x99,0x44,0x21,0xae,0xf1,0xd5,0x85,0x66,0x74,0x81,0x3d,0x05,0xcb,0xd2,0xcf,0x84,0xef,0x5e,0xb4,0x24,0xaf,0x6e,0xcd,0x0d,0xc6,0xfd,0xbd,0xc2,0xfe,0x60,0x5f,0xe9,0x85,0x88,0x33,0x12,0xec,0xf3,0x4f,0x59,0xbf,0xb2,0xf1,0xc9,0x14,0x9e,0x5b,0x9c,0xc9,0xec,0xda,0x05,0xb2,0x73,0x11,0x30,0xf3,0xed,0x28,0xdd,0xae,0x0b,},"\x78\x3e\x33\xc3\xac\xbd\xbb\x36\xe8\x19\xf5\x44\xa7\x78\x1d\x83\xfc\x28\x3d\x33\x09\xf5\xd3\xd1\x2c\x8d\xcd\x6b\x0b\x3d\x0e\x89\xe3\x8c\xfd\x3b\x4d\x08\x85\x66\x1c\xa5\x47\xfb\x97\x64\xab\xff"}, +{{0xb4,0x82,0x70,0x36,0x12,0xd0,0xc5,0x86,0xf7,0x6c,0xfc,0xb2,0x1c,0xfd,0x21,0x03,0xc9,0x57,0x25,0x15,0x04,0xa8,0xc0,0xac,0x4c,0x86,0xc9,0xc6,0xf3,0xe4,0x29,0xff,},{0xfd,0x71,0x1d,0xc7,0xdd,0x3b,0x1d,0xfb,0x9d,0xf9,0x70,0x4b,0xe3,0xe6,0xb2,0x6f,0x58,0x7f,0xe7,0xdd,0x7b,0xa4,0x56,0xa9,0x1b,0xa4,0x3f,0xe5,0x1a,0xec,0x09,0xad,},{0x58,0x83,0x2b,0xde,0xb2,0x6f,0xea,0xfc,0x31,0xb4,0x62,0x77,0xcf,0x3f,0xb5,0xd7,0xa1,0x7d,0xfb,0x7c,0xcd,0x9b,0x1f,0x58,0xec,0xbe,0x6f,0xeb,0x97,0x96,0x66,0x82,0x8f,0x23,0x9b,0xa4,0xd7,0x52,0x19,0x26,0x0e,0xca,0xc0,0xac,0xf4,0x0f,0x0e,0x5e,0x25,0x90,0xf4,0xca,0xa1,0x6b,0xbb,0xcd,0x8a,0x15,0x5d,0x34,0x79,0x67,0xa6,0x07,},"\x29\xd7\x7a\xcf\xd9\x9c\x7a\x00\x70\xa8\x8f\xeb\x62\x47\xa2\xbc\xe9\x98\x4f\xe3\xe6\xfb\xf1\x9d\x40\x45\x04\x2a\x21\xab\x26\xcb\xd7\x71\xe1\x84\xa9\xa7\x5f\x31\x6b\x64\x8c\x69\x20\xdb\x92\xb8\x7b"}, +{{0x84,0xe5,0x0d,0xd9,0xa0,0xf1,0x97,0xe3,0x89,0x3c,0x38,0xdb,0xd9,0x1f,0xaf,0xc3,0x44,0xc1,0x77,0x6d,0x3a,0x40,0x0e,0x2f,0x0f,0x0e,0xe7,0xaa,0x82,0x9e,0xb8,0xa2,},{0x2c,0x50,0xf8,0x70,0xee,0x48,0xb3,0x6b,0x0a,0xc2,0xf8,0xa5,0xf3,0x36,0xfb,0x09,0x0b,0x11,0x30,0x50,0xdb,0xcc,0x25,0xe0,0x78,0x20,0x0a,0x6e,0x16,0x15,0x3e,0xea,},{0x69,0xe6,0xa4,0x49,0x1a,0x63,0x83,0x73,0x16,0xe8,0x6a,0x5f,0x4b,0xa7,0xcd,0x0d,0x73,0x1e,0xcc,0x58,0xf1,0xd0,0xa2,0x64,0xc6,0x7c,0x89,0xbe,0xfd,0xd8,0xd3,0x82,0x9d,0x8d,0xe1,0x3b,0x33,0xcc,0x0b,0xf5,0x13,0x93,0x17,0x15,0xc7,0x80,0x96,0x57,0xe2,0xbf,0xb9,0x60,0xe5,0xc7,0x64,0xc9,0x71,0xd7,0x33,0x74,0x60,0x93,0xe5,0x00,},"\xf3\x99\x2c\xde\x64\x93\xe6\x71\xf1\xe1\x29\xdd\xca\x80\x38\xb0\xab\xdb\x77\xbb\x90\x35\xf9\xf8\xbe\x54\xbd\x5d\x68\xc1\xae\xff\x72\x4f\xf4\x7d\x29\x34\x43\x91\xdc\x53\x61\x66\xb8\x67\x1c\xbb\xf1\x23"}, +{{0xb3,0x22,0xd4,0x65,0x77,0xa2,0xa9,0x91,0xa4,0xd1,0x69,0x82,0x87,0x83,0x2a,0x39,0xc4,0x87,0xef,0x77,0x6b,0x4b,0xff,0x03,0x7a,0x05,0xc7,0xf1,0x81,0x2b,0xde,0xec,},{0xeb,0x2b,0xca,0xdf,0xd3,0xee,0xc2,0x98,0x6b,0xaf,0xf3,0x2b,0x98,0xe7,0xc4,0xdb,0xf0,0x3f,0xf9,0x5d,0x8a,0xd5,0xff,0x9a,0xa9,0x50,0x6e,0x54,0x72,0xff,0x84,0x5f,},{0xc7,0xb5,0x51,0x37,0x31,0x7c,0xa2,0x1e,0x33,0x48,0x9f,0xf6,0xa9,0xbf,0xab,0x97,0xc8,0x55,0xdc,0x6f,0x85,0x68,0x4a,0x70,0xa9,0x12,0x5a,0x26,0x1b,0x56,0xd5,0xe6,0xf1,0x49,0xc5,0x77,0x4d,0x73,0x4f,0x2d,0x8d,0xeb,0xfc,0x77,0xb7,0x21,0x89,0x6a,0x82,0x67,0xc2,0x37,0x68,0xe9,0xba,0xdb,0x91,0x0e,0xef,0x83,0xec,0x25,0x88,0x02,},"\x19\xf1\xbf\x5d\xcf\x17\x50\xc6\x11\xf1\xc4\xa2\x86\x52\x00\x50\x4d\x82\x29\x8e\xdd\x72\x67\x1f\x62\xa7\xb1\x47\x1a\xc3\xd4\xa3\x0f\x7d\xe9\xe5\xda\x41\x08\xc5\x2a\x4c\xe7\x0a\x3e\x11\x4a\x52\xa3\xb3\xc5"}, +{{0x96,0x0c,0xab,0x50,0x34,0xb9,0x83,0x8d,0x09,0x8d,0x2d,0xcb,0xf4,0x36,0x4b,0xec,0x16,0xd3,0x88,0xf6,0x37,0x6d,0x73,0xa6,0x27,0x3b,0x70,0xf8,0x2b,0xbc,0x98,0xc0,},{0x5e,0x3c,0x19,0xf2,0x41,0x5a,0xcf,0x72,0x9f,0x82,0x9a,0x4e,0xbd,0x5c,0x40,0xe1,0xa6,0xbc,0x9f,0xbc,0xa9,0x57,0x03,0xa9,0x37,0x60,0x87,0xed,0x09,0x37,0xe5,0x1a,},{0x27,0xd4,0xc3,0xa1,0x81,0x1e,0xf9,0xd4,0x36,0x0b,0x3b,0xdd,0x13,0x3c,0x2c,0xcc,0x30,0xd0,0x2c,0x2f,0x24,0x82,0x15,0x77,0x6c,0xb0,0x7e,0xe4,0x17,0x7f,0x9b,0x13,0xfc,0x42,0xdd,0x70,0xa6,0xc2,0xfe,0xd8,0xf2,0x25,0xc7,0x66,0x3c,0x7f,0x18,0x2e,0x7e,0xe8,0xec,0xcf,0xf2,0x0d,0xc7,0xb0,0xe1,0xd5,0x83,0x4e,0xc5,0xb1,0xea,0x01,},"\xf8\xb2\x19\x62\x44\x7b\x0a\x8f\x2e\x42\x79\xde\x41\x1b\xea\x12\x8e\x0b\xe4\x4b\x69\x15\xe6\xcd\xa8\x83\x41\xa6\x8a\x0d\x81\x83\x57\xdb\x93\x8e\xac\x73\xe0\xaf\x6d\x31\x20\x6b\x39\x48\xf8\xc4\x8a\x44\x73\x08"}, +{{0xeb,0x77,0xb2,0x63,0x8f,0x23,0xee,0xbc,0x82,0xef,0xe4,0x5e,0xe9,0xe5,0xa0,0x32,0x66,0x37,0x40,0x1e,0x66,0x3e,0xd0,0x29,0x69,0x9b,0x21,0xe6,0x44,0x3f,0xb4,0x8e,},{0x9e,0xf2,0x76,0x08,0x96,0x1a,0xc7,0x11,0xde,0x71,0xa6,0xe2,0xd4,0xd4,0x66,0x3e,0xa3,0xec,0xd4,0x2f,0xb7,0xe4,0xe8,0x62,0x7c,0x39,0x62,0x2d,0xf4,0xaf,0x0b,0xbc,},{0x18,0xdc,0x56,0xd7,0xbd,0x9a,0xcd,0x4f,0x4d,0xaa,0x78,0x54,0x0b,0x4a,0xc8,0xff,0x7a,0xa9,0x81,0x5f,0x45,0xa0,0xbb,0xa3,0x70,0x73,0x1a,0x14,0xea,0xab,0xe9,0x6d,0xf8,0xb5,0xf3,0x7d,0xbf,0x8e,0xae,0x4c,0xb1,0x5a,0x64,0xb2,0x44,0x65,0x1e,0x59,0xd6,0xa3,0xd6,0x76,0x1d,0x9e,0x3c,0x50,0xf2,0xd0,0xcb,0xb0,0x9c,0x05,0xec,0x06,},"\x99\xe3\xd0\x09\x34\x00\x3e\xba\xfc\x3e\x9f\xdb\x68\x7b\x0f\x5f\xf9\xd5\x78\x2a\x4b\x1f\x56\xb9\x70\x00\x46\xc0\x77\x91\x56\x02\xc3\x13\x4e\x22\xfc\x90\xed\x7e\x69\x0f\xdd\xd4\x43\x3e\x20\x34\xdc\xb2\xdc\x99\xab"}, +{{0xb6,0x25,0xaa,0x89,0xd3,0xf7,0x30,0x87,0x15,0x42,0x7b,0x6c,0x39,0xbb,0xac,0x58,0xef,0xfd,0x3a,0x0f,0xb7,0x31,0x6f,0x7a,0x22,0xb9,0x9e,0xe5,0x92,0x2f,0x2d,0xc9,},{0x65,0xa9,0x9c,0x3e,0x16,0xfe,0xa8,0x94,0xec,0x33,0xc6,0xb2,0x0d,0x91,0x05,0xe2,0xa0,0x4e,0x27,0x64,0xa4,0x76,0x9d,0x9b,0xbd,0x4d,0x8b,0xac,0xfe,0xab,0x4a,0x2e,},{0x01,0xbb,0x90,0x1d,0x83,0xb8,0xb6,0x82,0xd3,0x61,0x4a,0xf4,0x6a,0x80,0x7b,0xa2,0x69,0x13,0x58,0xfe,0xb7,0x75,0x32,0x5d,0x34,0x23,0xf5,0x49,0xff,0x0a,0xa5,0x75,0x7e,0x4e,0x1a,0x74,0xe9,0xc7,0x0f,0x97,0x21,0xd8,0xf3,0x54,0xb3,0x19,0xd4,0xf4,0xa1,0xd9,0x14,0x45,0xc8,0x70,0xfd,0x0f,0xfb,0x94,0xfe,0xd6,0x46,0x64,0x73,0x0d,},"\xe0\x72\x41\xdb\xd3\xad\xbe\x61\x0b\xbe\x4d\x00\x5d\xd4\x67\x32\xa4\xc2\x50\x86\xec\xb8\xec\x29\xcd\x7b\xca\x11\x6e\x1b\xf9\xf5\x3b\xfb\xf3\xe1\x1f\xa4\x90\x18\xd3\x9f\xf1\x15\x4a\x06\x66\x8e\xf7\xdf\x5c\x67\x8e\x6a"}, +{{0xb1,0xc9,0xf8,0xbd,0x03,0xfe,0x82,0xe7,0x8f,0x5c,0x0f,0xb0,0x64,0x50,0xf2,0x7d,0xac,0xdf,0x71,0x64,0x34,0xdb,0x26,0x82,0x75,0xdf,0x3e,0x1d,0xc1,0x77,0xaf,0x42,},{0x7f,0xc8,0x8b,0x1f,0x7b,0x3f,0x11,0xc6,0x29,0xbe,0x67,0x1c,0x21,0x62,0x1f,0x5c,0x10,0x67,0x2f,0xaf,0xc8,0x49,0x2d,0xa8,0x85,0x74,0x20,0x59,0xee,0x67,0x74,0xcf,},{0x4b,0x22,0x99,0x51,0xef,0x26,0x2f,0x16,0x97,0x8f,0x79,0x14,0xbc,0x67,0x2e,0x72,0x26,0xc5,0xf8,0x37,0x9d,0x27,0x78,0xc5,0xa2,0xdc,0x0a,0x26,0x50,0x86,0x9f,0x7a,0xcf,0xbd,0x0b,0xcd,0x30,0xfd,0xb0,0x61,0x9b,0xb4,0x4f,0xc1,0xae,0x59,0x39,0xb8,0x7c,0xc3,0x18,0x13,0x30,0x09,0xc2,0x03,0x95,0xb6,0xc7,0xeb,0x98,0x10,0x77,0x01,},"\x33\x1d\xa7\xa9\xc1\xf8\x7b\x2a\xc9\x1e\xe3\xb8\x6d\x06\xc2\x91\x63\xc0\x5e\xd6\xf8\xd8\xa9\x72\x5b\x47\x1b\x7d\xb0\xd6\xac\xec\x7f\x0f\x70\x24\x87\x16\x3f\x5e\xda\x02\x0c\xa5\xb4\x93\xf3\x99\xe1\xc8\xd3\x08\xc3\xc0\xc2"}, +{{0x6d,0x8c,0xdb,0x2e,0x07,0x5f,0x3a,0x2f,0x86,0x13,0x72,0x14,0xcb,0x23,0x6c,0xeb,0x89,0xa6,0x72,0x8b,0xb4,0xa2,0x00,0x80,0x6b,0xf3,0x55,0x7f,0xb7,0x8f,0xac,0x69,},{0x57,0xa0,0x4c,0x7a,0x51,0x13,0xcd,0xdf,0xe4,0x9a,0x4c,0x12,0x46,0x91,0xd4,0x6c,0x1f,0x9c,0xdc,0x8f,0x34,0x3f,0x9d,0xcb,0x72,0xa1,0x33,0x0a,0xec,0xa7,0x1f,0xda,},{0xa6,0xcb,0xc9,0x47,0xf9,0xc8,0x7d,0x14,0x55,0xcf,0x1a,0x70,0x85,0x28,0xc0,0x90,0xf1,0x1e,0xce,0xe4,0x85,0x5d,0x1d,0xba,0xad,0xf4,0x74,0x54,0xa4,0xde,0x55,0xfa,0x4c,0xe8,0x4b,0x36,0xd7,0x3a,0x5b,0x5f,0x8f,0x59,0x29,0x8c,0xcf,0x21,0x99,0x2d,0xf4,0x92,0xef,0x34,0x16,0x3d,0x87,0x75,0x3b,0x7e,0x9d,0x32,0xf2,0xc3,0x66,0x0b,},"\x7f\x31\x8d\xbd\x12\x1c\x08\xbf\xdd\xfe\xff\x4f\x6a\xff\x4e\x45\x79\x32\x51\xf8\xab\xf6\x58\x40\x33\x58\x23\x89\x84\x36\x00\x54\xf2\xa8\x62\xc5\xbb\x83\xed\x89\x02\x5d\x20\x14\xa7\xa0\xce\xe5\x0d\xa3\xcb\x0e\x76\xbb\xb6\xbf"}, +{{0x47,0xad,0xc6,0xd6,0xbf,0x57,0x1e,0xe9,0x57,0x0c,0xa0,0xf7,0x5b,0x60,0x4a,0xc4,0x3e,0x30,0x3e,0x4a,0xb3,0x39,0xca,0x9b,0x53,0xca,0xcc,0x5b,0xe4,0x5b,0x2c,0xcb,},{0xa3,0xf5,0x27,0xa1,0xc1,0xf1,0x7d,0xfe,0xed,0x92,0x27,0x73,0x47,0xc9,0xf9,0x8a,0xb4,0x75,0xde,0x17,0x55,0xb0,0xab,0x54,0x6b,0x8a,0x15,0xd0,0x1b,0x9b,0xd0,0xbe,},{0x4e,0x8c,0x31,0x83,0x43,0xc3,0x06,0xad,0xbb,0xa6,0x0c,0x92,0xb7,0x5c,0xb0,0x56,0x9b,0x92,0x19,0xd8,0xa8,0x6e,0x5d,0x57,0x75,0x2e,0xd2,0x35,0xfc,0x10,0x9a,0x43,0xc2,0xcf,0x4e,0x94,0x2c,0xac,0xf2,0x97,0x27,0x9f,0xbb,0x28,0x67,0x53,0x47,0xe0,0x80,0x27,0x72,0x2a,0x4e,0xb7,0x39,0x5e,0x00,0xa1,0x74,0x95,0xd3,0x2e,0xdf,0x0b,},"\xce\x49\x7c\x5f\xf5\xa7\x79\x90\xb7\xd8\xf8\x69\x9e\xb1\xf5\xd8\xc0\x58\x2f\x70\xcb\x7a\xc5\xc5\x4d\x9d\x92\x49\x13\x27\x8b\xc6\x54\xd3\x7e\xa2\x27\x59\x0e\x15\x20\x22\x17\xfc\x98\xda\xc4\xc0\xf3\xbe\x21\x83\xd1\x33\x31\x57\x39"}, +{{0x3c,0x19,0xb5,0x0b,0x0f,0xe4,0x79,0x61,0x71,0x9c,0x38,0x1d,0x0d,0x8d,0xa9,0xb9,0x86,0x9d,0x31,0x2f,0x13,0xe3,0x29,0x8b,0x97,0xfb,0x22,0xf0,0xaf,0x29,0xcb,0xbe,},{0x0f,0x7e,0xda,0x09,0x14,0x99,0x62,0x5e,0x2b,0xae,0x85,0x36,0xea,0x35,0xcd,0xa5,0x48,0x3b,0xd1,0x6a,0x9c,0x7e,0x41,0x6b,0x34,0x1d,0x6f,0x2c,0x83,0x34,0x36,0x12,},{0xef,0xbd,0x41,0xf2,0x6a,0x5d,0x62,0x68,0x55,0x16,0xf8,0x82,0xb6,0xec,0x74,0xe0,0xd5,0xa7,0x18,0x30,0xd2,0x03,0xc2,0x31,0x24,0x8f,0x26,0xe9,0x9a,0x9c,0x65,0x78,0xec,0x90,0x0d,0x68,0xcd,0xb8,0xfa,0x72,0x16,0xad,0x0d,0x24,0xf9,0xec,0xbc,0x9f,0xfa,0x65,0x53,0x51,0x66,0x65,0x82,0xf6,0x26,0x64,0x53,0x95,0xa3,0x1f,0xa7,0x04,},"\x8d\xdc\xd6\x30\x43\xf5\x5e\xc3\xbf\xc8\x3d\xce\xae\x69\xd8\xf8\xb3\x2f\x4c\xdb\x6e\x2a\xeb\xd9\x4b\x43\x14\xf8\xfe\x72\x87\xdc\xb6\x27\x32\xc9\x05\x2e\x75\x57\xfe\x63\x53\x43\x38\xef\xb5\xb6\x25\x4c\x5d\x41\xd2\x69\x0c\xf5\x14\x4f"}, +{{0x34,0xe1,0xe9,0xd5,0x39,0x10,0x7e,0xb8,0x6b,0x39,0x3a,0x5c,0xce,0xa1,0x49,0x6d,0x35,0xbc,0x7d,0x5e,0x9a,0x8c,0x51,0x59,0xd9,0x57,0xe4,0xe5,0x85,0x2b,0x3e,0xb0,},{0x0e,0xcb,0x26,0x01,0xd5,0xf7,0x04,0x74,0x28,0xe9,0xf9,0x09,0x88,0x3a,0x12,0x42,0x00,0x85,0xf0,0x4e,0xe2,0xa8,0x8b,0x6d,0x95,0xd3,0xd7,0xf2,0xc9,0x32,0xbd,0x76,},{0x32,0xd2,0x29,0x04,0xd3,0xe7,0x01,0x2d,0x6f,0x5a,0x44,0x1b,0x0b,0x42,0x28,0x06,0x4a,0x5c,0xf9,0x5b,0x72,0x3a,0x66,0xb0,0x48,0xa0,0x87,0xec,0xd5,0x59,0x20,0xc3,0x1c,0x20,0x4c,0x3f,0x20,0x06,0x89,0x1a,0x85,0xdd,0x19,0x32,0xe3,0xf1,0xd6,0x14,0xcf,0xd6,0x33,0xb5,0xe6,0x32,0x91,0xc6,0xd8,0x16,0x6f,0x30,0x11,0x43,0x1e,0x09,},"\xa6\xd4\xd0\x54\x2c\xfe\x0d\x24\x0a\x90\x50\x7d\xeb\xac\xab\xce\x7c\xbb\xd4\x87\x32\x35\x3f\x4f\xad\x82\xc7\xbb\x7d\xbd\x9d\xf8\xe7\xd9\xa1\x69\x80\xa4\x51\x86\xd8\x78\x6c\x5e\xf6\x54\x45\xbc\xc5\xb2\xad\x5f\x66\x0f\xfc\x7c\x8e\xaa\xc0"}, +{{0x49,0xdd,0x47,0x3e,0xde,0x6a,0xa3,0xc8,0x66,0x82,0x4a,0x40,0xad,0xa4,0x99,0x6c,0x23,0x9a,0x20,0xd8,0x4c,0x93,0x65,0xe4,0xf0,0xa4,0x55,0x4f,0x80,0x31,0xb9,0xcf,},{0x78,0x8d,0xe5,0x40,0x54,0x4d,0x3f,0xeb,0x0c,0x91,0x92,0x40,0xb3,0x90,0x72,0x9b,0xe4,0x87,0xe9,0x4b,0x64,0xad,0x97,0x3e,0xb6,0x5b,0x46,0x69,0xec,0xf2,0x35,0x01,},{0xd2,0xfd,0xe0,0x27,0x91,0xe7,0x20,0x85,0x25,0x07,0xfa,0xa7,0xc3,0x78,0x90,0x40,0xd9,0xef,0x86,0x64,0x63,0x21,0xf3,0x13,0xac,0x55,0x7f,0x40,0x02,0x49,0x15,0x42,0xdd,0x67,0xd0,0x5c,0x69,0x90,0xcd,0xb0,0xd4,0x95,0x50,0x1f,0xbc,0x5d,0x51,0x88,0xbf,0xbb,0x84,0xdc,0x1b,0xf6,0x09,0x8b,0xee,0x06,0x03,0xa4,0x7f,0xc2,0x69,0x0f,},"\x3a\x53\x59\x4f\x3f\xba\x03\x02\x93\x18\xf5\x12\xb0\x84\xa0\x71\xeb\xd6\x0b\xae\xc7\xf5\x5b\x02\x8d\xc7\x3b\xfc\x9c\x74\xe0\xca\x49\x6b\xf8\x19\xdd\x92\xab\x61\xcd\x8b\x74\xbe\x3c\x0d\x6d\xcd\x12\x8e\xfc\x5e\xd3\x34\x2c\xba\x12\x4f\x72\x6c"}, +{{0x33,0x1c,0x64,0xda,0x48,0x2b,0x6b,0x55,0x13,0x73,0xc3,0x64,0x81,0xa0,0x2d,0x81,0x36,0xec,0xad,0xbb,0x01,0xab,0x11,0x4b,0x44,0x70,0xbf,0x41,0x60,0x7a,0xc5,0x71,},{0x52,0xa0,0x0d,0x96,0xa3,0x14,0x8b,0x47,0x26,0x69,0x2d,0x9e,0xff,0x89,0x16,0x0e,0xa9,0xf9,0x9a,0x5c,0xc4,0x38,0x9f,0x36,0x1f,0xed,0x0b,0xb1,0x6a,0x42,0xd5,0x21,},{0x22,0xc9,0x9a,0xa9,0x46,0xea,0xd3,0x9a,0xc7,0x99,0x75,0x62,0x81,0x0c,0x01,0xc2,0x0b,0x46,0xbd,0x61,0x06,0x45,0xbd,0x2d,0x56,0xdc,0xdc,0xba,0xac,0xc5,0x45,0x2c,0x74,0xfb,0xf4,0xb8,0xb1,0x81,0x3b,0x0e,0x94,0xc3,0x0d,0x80,0x8c,0xe5,0x49,0x8e,0x61,0xd4,0xf7,0xcc,0xbb,0x4c,0xc5,0xf0,0x4d,0xfc,0x61,0x40,0x82,0x5a,0x96,0x00,},"\x20\xe1\xd0\x5a\x0d\x5b\x32\xcc\x81\x50\xb8\x11\x6c\xef\x39\x65\x9d\xd5\xfb\x44\x3a\xb1\x56\x00\xf7\x8e\x5b\x49\xc4\x53\x26\xd9\x32\x3f\x28\x50\xa6\x3c\x38\x08\x85\x94\x95\xae\x27\x3f\x58\xa5\x1e\x9d\xe9\xa1\x45\xd7\x74\xb4\x0b\xa9\xd7\x53\xd3"}, +{{0x5c,0x0b,0x96,0xf2,0xaf,0x87,0x12,0x12,0x2c,0xf7,0x43,0xc8,0xf8,0xdc,0x77,0xb6,0xcd,0x55,0x70,0xa7,0xde,0x13,0x29,0x7b,0xb3,0xdd,0xe1,0x88,0x62,0x13,0xcc,0xe2,},{0x05,0x10,0xea,0xf5,0x7d,0x73,0x01,0xb0,0xe1,0xd5,0x27,0x03,0x9b,0xf4,0xc6,0xe2,0x92,0x30,0x0a,0x3a,0x61,0xb4,0x76,0x54,0x34,0xf3,0x20,0x3c,0x10,0x03,0x51,0xb1,},{0x06,0xe5,0xd8,0x43,0x6a,0xc7,0x70,0x5b,0x3a,0x90,0xf1,0x63,0x1c,0xdd,0x38,0xec,0x1a,0x3f,0xa4,0x97,0x78,0xa9,0xb9,0xf2,0xfa,0x5e,0xbe,0xa4,0xe7,0xd5,0x60,0xad,0xa7,0xdd,0x26,0xff,0x42,0xfa,0xfa,0x8b,0xa4,0x20,0x32,0x37,0x42,0x76,0x1a,0xca,0x69,0x04,0x94,0x0d,0xc2,0x1b,0xbe,0xf6,0x3f,0xf7,0x2d,0xaa,0xb4,0x5d,0x43,0x0b,},"\x54\xe0\xca\xa8\xe6\x39\x19\xca\x61\x4b\x2b\xfd\x30\x8c\xcf\xe5\x0c\x9e\xa8\x88\xe1\xee\x44\x46\xd6\x82\xcb\x50\x34\x62\x7f\x97\xb0\x53\x92\xc0\x4e\x83\x55\x56\xc3\x1c\x52\x81\x6a\x48\xe4\xfb\x19\x66\x93\x20\x6b\x8a\xfb\x44\x08\x66\x2b\x3c\xb5\x75"}, +{{0xde,0x84,0xf2,0x43,0x5f,0x78,0xde,0xdb,0x87,0xda,0x18,0x19,0x4f,0xf6,0xa3,0x36,0xf0,0x81,0x11,0x15,0x0d,0xef,0x90,0x1c,0x1a,0xc4,0x18,0x14,0x6e,0xb7,0xb5,0x4a,},{0xd3,0xa9,0x2b,0xba,0xa4,0xd6,0x3a,0xf7,0x9c,0x22,0x26,0xa7,0x23,0x6e,0x64,0x27,0x42,0x8d,0xf8,0xb3,0x62,0x42,0x7f,0x87,0x30,0x23,0xb2,0x2d,0x2f,0x5e,0x03,0xf2,},{0x47,0x1e,0xbc,0x97,0x3c,0xfd,0xac,0xee,0xc0,0x72,0x79,0x30,0x73,0x68,0xb7,0x3b,0xe3,0x5b,0xc6,0xf8,0xd8,0x31,0x2b,0x70,0x15,0x05,0x67,0x36,0x90,0x96,0x70,0x6d,0xc4,0x71,0x12,0x6c,0x35,0x76,0xf9,0xf0,0xeb,0x55,0x0d,0xf5,0xac,0x6a,0x52,0x51,0x81,0x11,0x00,0x29,0xdd,0x1f,0xc1,0x11,0x74,0xd1,0xaa,0xce,0xd4,0x8d,0x63,0x0f,},"\x20\x51\x35\xec\x7f\x41\x7c\x85\x80\x72\xd5\x23\x3f\xb3\x64\x82\xd4\x90\x6a\xbd\x60\xa7\x4a\x49\x8c\x34\x7f\xf2\x48\xdf\xa2\x72\x2c\xa7\x4e\x87\x9d\xe3\x31\x69\xfa\xdc\x7c\xd4\x4d\x6c\x94\xa1\x7d\x16\xe1\xe6\x30\x82\x4b\xa3\xe0\xdf\x22\xed\x68\xea\xab"}, +{{0xba,0x4d,0x6e,0x67,0xb2,0xce,0x67,0xa1,0xe4,0x43,0x26,0x49,0x40,0x44,0xf3,0x7a,0x44,0x2f,0x3b,0x81,0x72,0x5b,0xc1,0xf9,0x34,0x14,0x62,0x71,0x8b,0x55,0xee,0x20,},{0xf7,0x3f,0xa0,0x76,0xf8,0x4b,0x6d,0xb6,0x75,0xa5,0xfd,0xa5,0xad,0x67,0xe3,0x51,0xa4,0x1e,0x8e,0x7f,0x29,0xad,0xd1,0x68,0x09,0xca,0x01,0x03,0x87,0xe9,0xc6,0xcc,},{0x57,0xb9,0xd2,0xa7,0x11,0x20,0x7f,0x83,0x74,0x21,0xba,0xe7,0xdd,0x48,0xea,0xa1,0x8e,0xab,0x1a,0x9a,0x70,0xa0,0xf1,0x30,0x58,0x06,0xfe,0xe1,0x7b,0x45,0x8f,0x3a,0x09,0x64,0xb3,0x02,0xd1,0x83,0x4d,0x3e,0x0a,0xc9,0xe8,0x49,0x6f,0x00,0x0b,0x77,0xf0,0x08,0x3b,0x41,0xf8,0xa9,0x57,0xe6,0x32,0xfb,0xc7,0x84,0x0e,0xee,0x6a,0x06,},"\x4b\xaf\xda\xc9\x09\x9d\x40\x57\xed\x6d\xd0\x8b\xca\xee\x87\x56\xe9\xa4\x0f\x2c\xb9\x59\x80\x20\xeb\x95\x01\x95\x28\x40\x9b\xbe\xa3\x8b\x38\x4a\x59\xf1\x19\xf5\x72\x97\xbf\xb2\xfa\x14\x2f\xc7\xbb\x1d\x90\xdb\xdd\xde\x77\x2b\xcd\xe4\x8c\x56\x70\xd5\xfa\x13"}, +{{0x0d,0x13,0x1c,0x45,0xae,0xa6,0xf3,0xa4,0xe1,0xb9,0xa2,0xcf,0x60,0xc5,0x51,0x04,0x58,0x7e,0xfa,0xa8,0x46,0xb2,0x22,0xbf,0x0a,0x7b,0x74,0xce,0x7a,0x3f,0x63,0xb6,},{0x3c,0x67,0x29,0xdb,0xe9,0x3b,0x49,0x9c,0x4e,0x61,0x4a,0x2f,0x21,0xbe,0xb7,0x29,0x43,0x8d,0x49,0x8e,0x1a,0xc8,0xd1,0x4c,0xba,0xd9,0x71,0x7a,0x5d,0xbd,0x97,0xcd,},{0xa9,0xc5,0xee,0x86,0xfb,0x06,0xd9,0xe4,0x6b,0x37,0x9c,0x32,0xdd,0xa7,0xc9,0x2c,0x9c,0x13,0xdb,0x27,0x4d,0xc2,0x41,0x16,0xfb,0xdd,0x87,0x86,0x96,0x04,0x54,0x88,0xcc,0x75,0xa5,0x2f,0xff,0x67,0xd1,0xa5,0x11,0x3d,0x06,0xe3,0x33,0xac,0x67,0xff,0x66,0x4b,0x3f,0x2a,0x40,0x5f,0xa1,0xd1,0x4d,0xd5,0xbb,0xb9,0x74,0x09,0xb6,0x06,},"\xb4\x29\x1d\x08\xb8\x8f\xb2\xf7\xb8\xf9\x9d\x0d\xce\x40\x07\x9f\xcb\xab\x71\x8b\xbd\x8f\x4e\x8e\xab\xc3\xc1\x42\x8b\x6a\x07\x1f\xb2\xa3\xc8\xeb\xa1\xca\xcc\xcf\xa8\x71\xb3\x65\xc7\x08\xbe\xf2\x68\x5b\xc1\x3e\x6b\x80\xbc\x14\xa5\xf2\x49\x17\x0f\xfc\x56\xd0\x14"}, +{{0xa7,0x5e,0x3b,0x6b,0x41,0x70,0xe4,0x44,0x78,0x1b,0xe4,0xee,0xac,0x3e,0x0f,0xda,0xa4,0xb4,0x35,0x6f,0x70,0x54,0x86,0xbc,0xb0,0x71,0xa3,0x25,0xae,0x07,0x1f,0xba,},{0x99,0x3d,0x38,0xa7,0xd7,0x2f,0x0a,0xee,0x15,0xff,0x6f,0x4f,0xdc,0x37,0xca,0x77,0x24,0xfd,0x13,0x73,0xa3,0x76,0x6b,0x27,0x5d,0xbc,0x77,0xe6,0x47,0x98,0x0e,0x0a,},{0xa5,0xdb,0x4d,0x3d,0x33,0x29,0xab,0xe3,0x69,0x79,0x59,0xe6,0xb5,0x94,0x7e,0xa8,0x60,0x1b,0x03,0xef,0x8e,0x1d,0x6f,0xe2,0x02,0x14,0x49,0x31,0x27,0x2c,0xa0,0xa0,0x9b,0x5e,0xb0,0xf3,0x90,0x57,0x2e,0xa7,0xef,0x03,0xc6,0x13,0x1e,0x9d,0xe5,0xf1,0x6b,0xf0,0xb0,0x34,0x24,0x4f,0x7e,0x10,0x4f,0xf5,0x31,0x1b,0xbf,0x66,0x3a,0x0d,},"\x40\x37\x86\x6f\x65\x48\xb0\x1c\xc6\xbc\xf3\xa9\x40\xe3\x94\x5a\xa2\xd1\x88\xb4\xb7\xf1\x82\xaa\x77\xec\x4d\x6b\x04\x28\xab\x5b\x84\xd8\x5d\xf1\x92\xa5\xa3\x8a\xda\x08\x9d\x76\xfa\x26\xbf\x67\x73\x6a\x70\x41\xa5\xeb\x8f\x0c\x57\x19\xeb\x39\x66\x93\xc4\x51\x60\xf8"}, +{{0xbc,0xbc,0xf5,0x61,0xec,0xc0,0x5a,0x41,0xc7,0xd7,0xe5,0x5e,0x69,0x6d,0x32,0xce,0x39,0xb4,0xd0,0x3c,0x1f,0x5f,0x3f,0x3a,0x89,0x27,0xfe,0x5e,0x62,0xe8,0x44,0xb2,},{0x4d,0xdf,0x53,0xfa,0xd6,0xa7,0xa9,0xed,0x30,0xf3,0xaf,0xec,0xca,0x13,0x6f,0xd7,0x84,0x3b,0x72,0xc2,0x43,0x09,0x08,0x91,0xae,0x40,0x21,0xa3,0x2c,0xad,0xff,0x1a,},{0x9f,0xf1,0x51,0x15,0xf6,0x66,0x1f,0x32,0x11,0xd7,0xa4,0x07,0x64,0x96,0x76,0x29,0xba,0x6a,0x52,0x63,0x95,0x1b,0xdc,0x3c,0x6a,0x4c,0x90,0xd0,0x70,0xf7,0xbe,0x00,0x02,0x4b,0x80,0xd8,0x3b,0x6b,0xc2,0x75,0x87,0xfc,0xff,0x5f,0x5c,0xcc,0x0e,0xb3,0xcd,0xe1,0x49,0x7c,0xf5,0x68,0x95,0x14,0x7a,0x06,0x3f,0x61,0xf0,0x8a,0xdf,0x0b,},"\x6f\x67\x16\xb6\x78\x47\x40\x98\x0a\xeb\xc3\x24\x88\x07\xe3\x1c\x12\x86\xac\x7b\x68\x1c\x00\xb6\x6c\x88\xff\x7a\x33\x6d\x44\x1f\xa5\xc3\xeb\x25\x6d\x20\xcf\x6d\x1a\xc9\x2c\xcf\xe4\xbe\x6d\xcc\x41\xb1\xaf\xf8\x46\xd3\x60\xc2\x43\x00\x1c\xab\xdf\xbf\x1a\x9b\x24\x04\x55"}, +{{0x21,0x05,0x32,0x80,0x5f,0xa9,0xcc,0x9b,0xe9,0x16,0xd2,0x13,0xca,0xc3,0x74,0xe3,0xcd,0x6f,0xc2,0x60,0x2a,0x54,0x4d,0x0c,0x1c,0xe2,0x9d,0x30,0x10,0x5d,0x69,0xab,},{0x10,0x69,0x9e,0x49,0x9b,0xe9,0x9e,0x2b,0x11,0xb9,0x8f,0x6f,0x86,0xb6,0x7c,0xdc,0x4c,0xcf,0x69,0xf3,0xc5,0x3c,0xe0,0x94,0x87,0x56,0x47,0xd2,0xd0,0xd0,0xec,0xc5,},{0x4c,0x2d,0x31,0xd5,0xbb,0xc4,0x2e,0x02,0x6d,0xc1,0xe0,0x79,0xec,0xc4,0xdd,0x07,0x2c,0x5d,0x2c,0xce,0x65,0xe3,0xdb,0x8d,0x8a,0x1d,0xd9,0x05,0x7f,0xaa,0x03,0x71,0x72,0x7f,0x72,0x72,0x31,0xa0,0xf0,0x60,0xfa,0x27,0x09,0x75,0x33,0xb6,0xdb,0x3b,0x8f,0x62,0x52,0xf2,0x79,0x3d,0x75,0x66,0x2c,0xaa,0xdf,0x5f,0x0f,0xcc,0x71,0x0e,},"\x9f\xc4\xd2\x8c\xfd\x25\xe6\xc0\xc5\xe7\x24\xe1\x9c\xa3\x9d\x71\xe5\x3b\xf4\xaa\x27\x96\xc5\x4c\x33\x51\xf1\x08\xfc\x70\xf2\x61\x1a\x62\xe0\xab\x90\xaf\x6a\xde\x52\x16\x78\x8e\x9e\xb2\xa8\x73\x05\x9b\x1e\x79\xd7\xd5\x9d\xeb\xd6\x8f\x2d\x4d\x80\xff\xe3\x1b\xf7\x4b\x92\x8c"}, +{{0x18,0x5d,0x64,0xb6,0x94,0x79,0xe0,0xba,0x0a,0x58,0x44,0xa1,0x0a,0xd8,0x41,0x25,0xba,0x11,0xc4,0xb4,0x0d,0x63,0xed,0xa2,0xc5,0x7a,0xfc,0x7e,0x01,0x9c,0x8e,0x0c,},{0xa5,0x76,0x4f,0x63,0x98,0xa5,0xae,0x22,0x66,0xa3,0x8f,0x97,0x14,0x53,0x3c,0x4b,0xbd,0x8d,0x07,0x82,0x6f,0x63,0xe2,0x04,0xcb,0xac,0x37,0x4b,0x0a,0xce,0xf1,0xbd,},{0x43,0xe0,0x38,0x7d,0xa5,0xba,0x09,0xa1,0x90,0xf6,0xe7,0xb2,0x68,0x05,0x78,0xd8,0x89,0x76,0x9b,0xcc,0x44,0x5e,0x5e,0xf5,0x71,0xb4,0x92,0x87,0x1c,0x15,0x5c,0x5b,0x9f,0x62,0x0b,0xfa,0xcf,0xbf,0x2d,0xf1,0xfd,0x87,0x44,0x46,0x04,0xb7,0x1b,0x2e,0x23,0x7b,0xaa,0xa7,0xee,0x20,0x93,0xed,0xe4,0xa6,0x01,0xed,0xf8,0x83,0xe3,0x07,},"\x4a\x08\x24\xfe\x70\xd4\x31\x54\x13\xd0\xa0\xca\xfb\xf4\xf5\xfe\x11\x7d\x5e\x07\xe1\xc3\xa4\xef\xfb\x9d\x0a\xe9\x14\x90\x23\x48\x78\xcc\xf6\x79\x2a\x91\xf6\x8c\x6a\x52\x0d\xe1\x60\x71\xf0\x8a\xbe\x35\xdc\x5e\xa4\x28\xf1\x95\x7b\x66\x33\x71\xce\x24\xc6\x09\xdd\x55\xb8\xf4\x93"}, +{{0xcf,0xa9,0xd9,0x16,0x4b,0x3c,0x4f,0x6f,0x72,0x26,0x35,0xd2,0x06,0x6c,0xd7,0xea,0x5e,0x55,0x33,0xd2,0xc7,0x4f,0x8a,0xdd,0x66,0x9c,0x37,0x1f,0xaa,0x47,0x64,0x26,},{0x41,0x16,0x9a,0x66,0xf9,0xa6,0x3f,0x28,0x57,0x82,0xa6,0xc2,0xdb,0x81,0xcc,0x3f,0x70,0xb3,0xad,0xa2,0x1a,0x68,0xc8,0x47,0x45,0xc8,0x8a,0x74,0xc3,0xb0,0xa2,0xde,},{0x01,0xd7,0xc9,0xb5,0x70,0x1a,0xf7,0x1e,0x2f,0x48,0x77,0xff,0xc9,0xb7,0xb5,0x30,0x5f,0x52,0x81,0x6d,0x44,0x58,0xe3,0x7e,0x41,0xc7,0x71,0x9f,0xac,0x1d,0x76,0xa0,0x1f,0xff,0x3f,0x50,0xfe,0x1a,0x58,0x75,0xcc,0xc3,0xfb,0x70,0x00,0x1c,0x94,0x7a,0x33,0xfc,0x8b,0x20,0x7d,0xe1,0x35,0x72,0xcc,0xdb,0x8b,0xa9,0x89,0x33,0xab,0x01,},"\x75\x76\x21\xb1\x67\x5d\xb7\xca\xce\xf7\xf2\x78\x25\x87\xff\x3a\xf5\x1a\x3e\xf2\xf4\xbc\xf9\x27\x9c\x4c\xe9\x40\x02\xe1\xf0\x04\x24\xbf\x0e\xb6\x21\x98\x2c\xc8\x5c\xb4\xd1\x71\xe5\x64\xa0\xc2\xf6\xe3\x56\x7a\x1a\xae\x2c\xdd\xb7\xe9\xb2\x5f\x47\xdc\x20\xa5\x10\x50\x54\x29\x69\xca"}, +{{0x1a,0xcb,0x4a,0x25,0x6c,0x2f,0x89,0x93,0xca,0x24,0xde,0x1e,0x00,0x14,0x60,0x6d,0x66,0x8b,0x5e,0x75,0x60,0x32,0xd2,0x69,0xf1,0xd2,0x4d,0x35,0x1c,0x8e,0xea,0x4a,},{0xcb,0xbd,0xcd,0x8c,0xbc,0x88,0x5a,0xb4,0x3a,0x05,0x7e,0x5f,0x95,0x79,0xf1,0x16,0x19,0x54,0x15,0x9e,0x7b,0x56,0x2e,0xa2,0x6c,0xd9,0xa4,0x3c,0x88,0xd3,0xf9,0x6d,},{0x05,0xaa,0x76,0xf7,0xfe,0x51,0x89,0x23,0x03,0xd7,0x89,0x14,0x71,0x59,0x95,0xe7,0xd7,0x68,0xff,0x77,0x14,0xce,0x27,0x0f,0x17,0x5e,0x56,0xaf,0x17,0xae,0x01,0x8d,0x3f,0xa9,0x39,0xf5,0xf6,0x20,0xde,0x82,0xbc,0xd1,0x54,0x96,0x87,0xb2,0x05,0xc7,0x87,0x12,0x03,0xe6,0x24,0x23,0x8c,0x4e,0x30,0x9f,0xab,0x7f,0x92,0xfb,0xaa,0x05,},"\xc4\x6a\x6d\x61\xaa\x0a\xed\x1c\x1d\x85\x47\xa7\x0b\x89\xb7\x19\x64\x75\xd5\xa4\x87\x08\x81\xb1\xec\xd0\xf0\xcb\x9c\x74\x5f\x8a\x2a\xdc\x80\x24\xe2\xdc\x55\xb5\x3a\xa5\xd3\x83\xa8\x1a\xab\xc1\xa4\x7e\x8d\x07\xd0\x0b\x7f\x0b\x56\xce\xdd\xbf\xb1\xf4\x24\xbb\x5c\x02\x18\x46\x78\xa6\x66"}, +{{0xac,0xe3,0xc4,0x64,0x24,0x82,0x36,0x22,0x97,0x9f,0xc3,0xa8,0x4a,0x7d,0xa6,0x9c,0x1d,0x52,0x7d,0x83,0x12,0xe8,0xfb,0x01,0x83,0x75,0xbd,0x3a,0x96,0xc2,0x9c,0x18,},{0x93,0x7c,0xf3,0x41,0x36,0xd9,0xe1,0xcc,0xe0,0xde,0x11,0xb1,0x2c,0x70,0xcb,0xfb,0x74,0x55,0x44,0x84,0x21,0xe9,0x2c,0x82,0xe7,0xc4,0x09,0x34,0xbf,0xf8,0xc6,0x76,},{0xfe,0xb8,0x89,0x6d,0xd3,0xfe,0x60,0x01,0xff,0xea,0x17,0x1b,0x37,0xb7,0x88,0xa6,0x9f,0x7f,0x85,0x01,0x93,0xa6,0x34,0x06,0xf5,0x63,0x76,0xdd,0x26,0x3d,0x09,0x9a,0xef,0x80,0xec,0xe6,0x7e,0x2c,0x43,0xf4,0x0e,0xca,0x46,0x2c,0x6b,0x71,0xe7,0x94,0x06,0xb1,0x8d,0xb7,0x4a,0xe5,0xd4,0x98,0x44,0xe3,0xb1,0x32,0xbc,0x2a,0x13,0x07,},"\xa9\xf1\x37\xbc\x90\x21\xbf\x10\x5a\xee\x25\xbe\x21\xcd\x9e\xe5\xb3\x54\x7c\xf1\x0c\xc5\xf9\x84\x76\xfb\x58\x8b\xd7\x0e\x2d\x6d\x6b\x08\x34\xe8\x42\xe4\xee\x94\x30\x3c\xf9\x6b\x09\xc1\x71\x53\x81\xb3\x6e\x14\xa4\x91\xb8\x0f\x89\x5e\xa4\x21\xb8\xec\x2b\x1d\x3c\x18\x7e\x02\x93\x5c\x55\x26"}, +{{0x88,0xf6,0x81,0x93,0x4e,0x33,0xc3,0x5c,0x07,0xdc,0x6e,0x5a,0x83,0x29,0x42,0xae,0x3d,0x59,0x90,0x3c,0xcd,0xe2,0xf7,0x6c,0xcb,0x75,0x87,0xce,0xa7,0xec,0x41,0xb6,},{0x6a,0x4e,0x8a,0xa5,0xad,0xb6,0x3d,0x22,0xfd,0x7b,0x14,0xa2,0x6f,0xdb,0x03,0xb7,0xc8,0xaa,0x6c,0xcd,0x5a,0x19,0x6f,0x2c,0x54,0xb0,0x46,0x5a,0xdb,0x50,0x92,0xe1,},{0x45,0xb2,0x7b,0xf1,0xb9,0xea,0xc0,0x6b,0x62,0xb6,0x86,0xf6,0xd5,0x46,0x56,0x3b,0x2d,0xfe,0x5b,0x17,0x5d,0xbe,0xf3,0x2b,0xf7,0x8c,0x35,0xa1,0x6c,0x95,0x8a,0x9d,0x4f,0x26,0xd2,0x91,0xde,0x9b,0xb2,0x06,0x6c,0x0a,0x28,0x61,0x13,0xcc,0x09,0x17,0x2d,0x40,0xa3,0x6d,0x4c,0xbd,0x95,0x17,0x08,0x86,0x02,0x26,0xeb,0x30,0xcd,0x05,},"\x6e\x8b\xac\x1f\x85\x3b\x81\xfe\xf9\x47\x07\xe1\x8c\xc6\x1c\x6f\x0a\x9c\xbc\x2a\x41\xd0\x78\xdc\xc8\x3f\xc0\x22\x9c\x7f\x8d\xbe\x6d\xbd\xd9\x08\x54\xb1\xf1\xae\x2b\x9f\x2b\x12\x0b\x86\xa8\x78\x6b\x4e\x78\xce\x23\xab\x86\xba\xaf\x88\x75\x4a\xf0\xf3\xd8\x88\x81\xda\xe0\xbc\x52\x61\xbf\xd0\x38"}, +{{0x48,0x05,0x0a,0x6e,0x01,0x58,0xf6,0xad,0x25,0x34,0x12,0xe4,0x49,0x7c,0xff,0x62,0xd5,0xee,0x55,0x5e,0xdf,0xfe,0x59,0xe4,0xdc,0x40,0x15,0x22,0x81,0x32,0x95,0xce,},{0x97,0x5e,0x01,0x0a,0xbb,0x9a,0x3e,0x56,0x65,0x91,0x37,0xb0,0x50,0x60,0x57,0xf2,0x83,0x98,0x2f,0x88,0x6c,0xa1,0x72,0xc7,0xbc,0x2c,0x50,0x0e,0xd9,0xbd,0x26,0xc1,},{0x72,0x16,0xab,0x60,0xc3,0x51,0x68,0x18,0x7d,0x0f,0xce,0x47,0x53,0xc8,0x6e,0x80,0x05,0x8d,0x54,0x0b,0x76,0xbf,0x95,0x84,0x3a,0x58,0x98,0x84,0x10,0x60,0xa9,0x9a,0x44,0xde,0x6f,0x43,0x96,0x25,0xa3,0xf6,0x36,0x5f,0x59,0xc3,0x77,0xbf,0x45,0x90,0x9b,0xbf,0xef,0x5c,0x50,0xb2,0x5f,0x31,0x94,0xe5,0xfb,0xd3,0x4e,0xa5,0xe7,0x06,},"\xed\x6e\xec\x29\xfb\x70\x49\xdf\xf7\x07\xf0\xa4\x42\x6e\xbc\x8f\x5b\x35\x0e\x95\x87\x0b\x9d\x61\x98\xc8\x13\x9e\x9c\x3e\x1e\x40\x99\x37\xd1\xa8\x58\xa0\xde\xa4\x82\xa5\xcb\x1a\x85\x4e\xd3\xb5\xa9\x39\x7a\xcb\x63\xbf\xf6\xb6\x40\x39\xef\x2e\xb1\x15\x9e\x99\x85\x83\x10\xbb\xbd\x86\x12\x5c\x3e\x0e"}, +{{0x18,0xd1,0x3d,0x0c,0x00,0xe8,0xe3,0x38,0x6a,0x5c,0xfb,0x30,0xa9,0xe7,0x9f,0xe8,0x8b,0x18,0x61,0xed,0x2d,0x12,0x01,0xeb,0x17,0x00,0x38,0xe1,0x94,0x77,0x04,0x03,},{0xa4,0xaf,0xc8,0x33,0x40,0x18,0x76,0x09,0x0d,0x9b,0x88,0x0c,0x41,0x26,0x7d,0x68,0xcb,0xbe,0xea,0xa3,0x8a,0xfb,0x20,0x88,0x4e,0x27,0x32,0x8f,0x3b,0x7f,0x53,0x5e,},{0x03,0x39,0x88,0x15,0x4c,0x5d,0x79,0xd2,0x51,0x0b,0xe8,0x3e,0x77,0x80,0x15,0xdf,0xe2,0xfb,0x85,0xb8,0x11,0x1f,0x7e,0xc1,0x39,0x91,0x8b,0x54,0x00,0xe3,0xd6,0x56,0xee,0x80,0xa9,0xf5,0xc9,0x07,0x2b,0x5b,0x46,0x7a,0x5c,0xc5,0xa5,0x7c,0xc8,0xad,0x10,0x62,0xb5,0xbf,0xf1,0x08,0x62,0xd9,0xd3,0x69,0xdd,0xe2,0xcc,0x96,0x67,0x01,},"\x91\x0f\x6c\x27\x2d\xd9\x79\x31\xac\x47\x31\x0d\x24\x4c\xad\xb4\x32\x51\x36\x5e\x02\xba\x9f\x6a\x5b\x3c\x32\x26\xbe\x9d\x7d\x3a\x74\xa2\xba\x49\x06\xe8\xe7\x1a\x4b\xf3\xd3\x55\x6e\xbd\xfc\x66\x6c\xd6\xb1\x2f\x20\xc4\xa0\x08\x34\xb8\x8f\xbb\x24\x45\x75\x19\x92\x86\xb0\xb9\x34\x4c\xf3\x34\xaf\xf0\x07"}, +{{0x4a,0xdc,0x8c,0x28,0x64,0x6a,0x93,0xa8,0x17,0x29,0x3a,0x14,0xd2,0x9b,0x48,0xe2,0xc6,0xd7,0x12,0xa6,0x89,0x93,0x54,0x7a,0x5c,0x5e,0x4d,0x14,0x52,0xac,0xbc,0x3a,},{0x7f,0x40,0x47,0x36,0x28,0xf2,0x3f,0xc0,0xdf,0xf0,0x02,0x1a,0xfd,0x48,0x77,0x40,0xd4,0x91,0x6a,0x91,0x22,0xe6,0xc9,0x7d,0x36,0x43,0x3e,0x5e,0xbf,0x04,0xf8,0x8c,},{0x6d,0x3b,0x4e,0x90,0xec,0x40,0x83,0x11,0xf9,0xb1,0x5b,0x92,0x53,0xd3,0xd9,0x5c,0x5d,0x15,0x26,0x20,0xc2,0x60,0xd5,0x63,0x02,0x55,0x5a,0x88,0x04,0xa5,0x10,0x4b,0xa5,0xe8,0xd2,0x9e,0xe1,0x08,0xe7,0x64,0xa6,0x42,0x19,0x29,0x72,0x98,0xab,0x76,0x74,0xbb,0xca,0x78,0x4d,0xee,0x28,0x77,0x3b,0x34,0xe1,0x85,0xa3,0x86,0xc2,0x08,},"\x09\xfb\x55\x01\xf1\x68\x8f\x80\xa0\xab\x9e\x22\xd7\x78\xae\x13\x0a\xca\xf7\x4d\x7f\x51\x85\xb4\xda\x19\x8c\x6b\x9e\xda\xc4\x30\x2e\x2b\x75\x3e\x57\x87\x66\xe1\x7d\x40\x56\xdc\x40\xd9\x5c\xf4\xca\x8b\xcc\x65\x65\x79\x5e\x97\xd6\x8b\xcd\xa7\x9f\xa7\x7c\x49\x33\x97\x71\x63\x56\x16\x4c\xaa\xb5\xd1\x9c\xfd"}, +{{0xf2,0x6e,0x1c,0x84,0x69,0x7a,0x49,0x08,0x15,0x1b,0x44,0x7d,0xcf,0x6c,0x7c,0x7a,0x38,0xb0,0x40,0x81,0xdb,0x9e,0x7c,0x77,0x38,0xe6,0xfe,0xc9,0x00,0xbe,0xd0,0xc1,},{0xa8,0x6e,0x14,0x22,0xc1,0x23,0x5f,0xf8,0xe1,0xaa,0x08,0x34,0x70,0xd5,0xe4,0x22,0x88,0xcb,0x00,0x7a,0xb5,0x0e,0x79,0x5d,0xd0,0xb4,0xff,0x87,0x39,0x49,0x66,0xc4,},{0x44,0xf3,0x34,0x4b,0x95,0x66,0xc9,0xdf,0xd2,0x2d,0x61,0x98,0xe1,0xcb,0xf9,0x5d,0x9e,0x28,0xf2,0x98,0x2f,0xc7,0xf1,0x66,0xab,0x25,0xdd,0xa3,0x0c,0x46,0xf7,0x68,0xc5,0x58,0xe0,0x39,0x4f,0xb9,0xab,0x3e,0x1d,0x4d,0xb4,0xcf,0x48,0x7c,0x17,0x64,0x1a,0x13,0xf3,0xf4,0x89,0x39,0xe0,0xc6,0x48,0x27,0xa7,0x51,0x03,0xc5,0x74,0x06,},"\x54\xed\x47\x60\x6a\x14\x87\xc2\xf9\x00\xce\xfb\x6e\x89\x9d\xba\xf6\xc3\x1c\xc8\x8e\xbe\x35\x58\xb8\x3b\x93\xf6\xd4\x22\xc3\x1e\x88\x8e\x48\xe5\x20\xee\xae\xdd\x7e\x55\x4a\x9c\xd4\x0c\x2c\x51\x9d\x53\x3b\x61\x44\xce\xe4\x84\xc3\x89\xe9\x76\xb1\xe4\x02\x2b\x50\xe7\xdb\xb8\x7e\xad\x7e\x54\x1a\x20\x04\xda\xf7"}, +{{0xcc,0x0c,0x33,0xf3,0xa8,0x6f,0x5a,0x17,0xd3,0x0c,0x18,0x6c,0xe0,0xf3,0xb7,0x40,0xba,0xfa,0x5f,0xe3,0xc7,0x09,0x0f,0x14,0x35,0x41,0xe2,0xb2,0xc1,0xe5,0x34,0xbc,},{0x96,0x7a,0x71,0xc7,0xcf,0x9b,0x82,0xcc,0x78,0xcb,0xe1,0x09,0x10,0x4d,0x8b,0x43,0x8a,0x8d,0x1f,0xd7,0x1d,0x26,0x0d,0x02,0x90,0x46,0xa9,0xa4,0x52,0x68,0x66,0xff,},{0xe2,0x77,0xb3,0xdd,0x65,0x5c,0x33,0xff,0x75,0xfa,0x92,0x0a,0xf1,0xfc,0xc8,0x59,0x40,0x1e,0x6c,0x7a,0x6e,0xf4,0xc6,0xbf,0xbf,0xac,0x50,0x69,0x63,0x8f,0x19,0xca,0x11,0x5b,0xaf,0x13,0xc0,0x9c,0x82,0xaf,0x79,0x3f,0xac,0xb6,0xab,0xd0,0xcd,0x58,0xe8,0x48,0x1b,0x08,0xc1,0xb6,0x8a,0xd7,0xa2,0x66,0x5c,0x4a,0x61,0x4a,0x28,0x06,},"\x19\x44\xe5\xe1\x55\xd7\x5e\x0d\x0b\xe9\x2e\x1b\xe1\x4c\xec\x37\x0a\xd1\x37\x91\xf2\xbf\xd4\x0f\x27\x12\x14\xe9\x4f\xcf\x21\x3c\x71\xbc\x20\xd7\xce\x0c\x75\x84\x42\x1a\xc4\xef\xc4\x51\x88\x3c\xc3\xf4\x95\x6f\x21\xf7\x3a\x42\x16\x72\x04\x38\xbc\x38\xff\x2c\xfd\xf3\x70\x99\x05\xa5\x0a\x9d\x94\xb1\xd9\xe7\x93\x2b"}, +{{0xf0,0xbc,0x97,0x93,0x75,0xa7,0x07,0x30,0x68,0xdb,0xa7,0xf6,0xc0,0x94,0xdb,0x65,0x98,0xb4,0xe4,0x5d,0xf7,0xd5,0x49,0x58,0x3c,0x22,0xfd,0xed,0x80,0x48,0xfa,0x2e,},{0xb4,0x2b,0x6c,0x57,0xa7,0x8f,0x1d,0x90,0x09,0x0a,0x71,0x81,0xab,0x2a,0xe0,0x9f,0x42,0x6c,0xbc,0x2b,0xe9,0x6e,0xb2,0xcf,0x27,0xab,0xc7,0x0d,0x7d,0x32,0xa4,0xb3,},{0x19,0xdb,0xc3,0x02,0x7f,0x9f,0xae,0x70,0x7d,0xeb,0x76,0xf5,0x88,0xf9,0xfd,0x07,0xaa,0x8e,0xae,0x29,0xbd,0x4e,0x1d,0x04,0xc2,0xc9,0x84,0x38,0x82,0x86,0xb3,0xb1,0x22,0x24,0x8a,0x6c,0x03,0xed,0x67,0xec,0xa3,0x5d,0xf4,0xdb,0x3d,0xc1,0xe4,0x23,0x7f,0x26,0x78,0x92,0x51,0x84,0x97,0xd9,0x55,0x2a,0x21,0xde,0x19,0xb5,0x14,0x0f,},"\x27\xab\x30\x49\xb5\xc6\x35\x1f\x6c\xfe\x38\xb1\x3a\x05\x9f\x50\x37\x25\x7e\xe3\xd6\x5d\x60\x79\x65\x68\x56\xed\xc8\x76\xea\x08\x1f\xd8\xa9\x48\x04\x66\xf8\x83\x94\x78\x08\x84\x66\xf5\x1e\xcb\xfa\xf2\xd6\x5d\xef\x25\xf0\xc4\xdd\x8d\x08\x58\x82\x02\x81\x22\x32\xf5\x79\x45\xdf\x8a\x6f\xa1\x61\xed\x8c\x03\x43\xb5\x83"}, +{{0x30,0x22,0x97,0x5f,0x29,0x8c,0x0a,0xd5,0xdd,0xbe,0x90,0x95,0x4f,0x20,0xe6,0x3a,0xe0,0xc0,0xd2,0x70,0x4c,0xf1,0x3c,0x22,0x1f,0x5b,0x37,0x20,0xaf,0x4d,0xba,0x32,},{0xb8,0x45,0xbc,0xe3,0x8e,0x26,0xab,0x02,0x7b,0x82,0x47,0x46,0x3d,0x43,0x7a,0x71,0xbb,0xdd,0xca,0x2a,0x23,0x81,0xd8,0x1f,0xad,0x4c,0x29,0x7d,0xf9,0x14,0x0b,0xd5,},{0xae,0x14,0xa8,0x60,0xfa,0xd0,0x05,0x1b,0x3e,0xb7,0x2b,0x37,0x21,0xa8,0x2f,0x7b,0x95,0x46,0xb2,0x86,0x72,0x61,0xe2,0xb7,0xb6,0x38,0x97,0x9e,0x25,0x61,0xbd,0xeb,0x89,0xb6,0x00,0x76,0x8f,0x82,0x45,0x0a,0x66,0xc8,0xb0,0x48,0x12,0x83,0xfa,0x21,0xcb,0x6c,0x53,0xbd,0xe3,0x50,0xef,0xfb,0x68,0xa7,0xd1,0x11,0x4b,0xfd,0xb2,0x03,},"\x9a\xa1\x9a\x59\x5d\x98\x93\x78\xcd\xc0\x68\x91\x88\x7e\xf5\xf9\xc2\x46\xe5\xf8\x3c\x0b\x65\x87\x10\x67\x3e\x4e\x7d\xb7\x60\xc7\x63\x54\xc4\xf5\xd1\xe9\x0d\xb0\x4a\x23\xb4\xfb\x43\x4c\x69\x38\x45\x93\xd0\x10\xe3\x12\xb1\x1d\x29\x9c\x9f\x97\x48\x2d\xe8\x87\xce\xcf\xe8\x2e\xa7\x23\xbc\xa7\x9a\x1b\xd6\x4d\x03\xef\x19\xee"}, +{{0x0f,0x71,0x0b,0x6c,0x48,0x1f,0x71,0x44,0x95,0x89,0x75,0x33,0x12,0xef,0x64,0x93,0x2b,0x46,0x52,0xeb,0xe0,0xe0,0x75,0x97,0xf7,0xda,0x1c,0x4f,0x3d,0xcf,0xfb,0x80,},{0x69,0x73,0xff,0x29,0x32,0xcc,0xdd,0xfc,0x1d,0x16,0xc4,0xc0,0xda,0x50,0xc8,0xb2,0x9f,0xe6,0x45,0x2d,0x1e,0xe8,0x4d,0x52,0x06,0x4e,0xbf,0x3d,0x62,0x8d,0x40,0x3e,},{0x02,0xa8,0xd2,0x6a,0xee,0x11,0x42,0x0f,0xb4,0xf0,0x9d,0x11,0x63,0xe1,0x4b,0x86,0x7d,0xf7,0xc6,0xf6,0xc8,0xf8,0xdc,0x7a,0x78,0x03,0x46,0x59,0xf0,0x40,0x1c,0xad,0x0a,0xa9,0x03,0x97,0xef,0xdd,0x07,0x04,0xb7,0x98,0xdb,0x19,0x36,0x50,0x30,0x26,0xe2,0xa1,0xad,0xc2,0x97,0xe2,0x79,0x74,0xd4,0xbe,0x31,0x2a,0x37,0x53,0xf8,0x04,},"\x85\xd8\x57\x44\xad\x55\xe9\xef\x9a\x65\xca\x91\xe8\x5c\x8a\x4f\x80\xe4\xc5\x8f\x8e\x4e\x93\x54\xe8\x33\x98\x60\x98\xb7\xd9\xfe\x9f\xdc\x0d\xed\xb0\xd7\x5d\x25\x39\xfb\xa0\x00\x34\xfc\x0c\x2e\x84\x34\x4d\x1e\xda\xa0\x9d\x4f\x63\xd5\x54\x6d\x67\x80\x3d\xd6\xb5\x4d\xdc\xc0\xb1\xd3\xf2\x58\x2d\xd7\x52\x89\xe3\x1d\xe4\x2e\x69"}, +{{0x7a,0x05,0xf1,0x21,0xf6,0x01,0x12,0xdd,0x16,0xfe,0xe8,0xc9,0x1b,0xc2,0xa1,0x14,0x79,0xf4,0xb6,0x7e,0xe3,0x34,0x56,0x04,0x2c,0x8d,0xe1,0x67,0xfc,0x58,0x80,0x17,},{0xb3,0xb0,0x5b,0xe9,0x89,0xce,0xa7,0x19,0x75,0x05,0xd4,0xb5,0x43,0x35,0xe5,0xe1,0xd7,0x7a,0x4b,0x52,0xba,0x72,0x82,0x60,0x4b,0xbc,0x1c,0xf6,0xc4,0xe8,0x7a,0x6c,},{0xd3,0x0c,0xe8,0xa3,0x22,0xb4,0x50,0xa2,0xfb,0x1a,0xfd,0x32,0x9c,0xec,0x85,0x59,0xcc,0xf1,0x12,0xbd,0x83,0x96,0x5f,0x9e,0xc4,0x73,0x62,0x70,0xa0,0x91,0x4e,0x06,0x11,0x96,0xbf,0x52,0x09,0x77,0x8c,0x9f,0x8c,0xcf,0x39,0xc4,0x66,0x8b,0xbf,0x0e,0x13,0x63,0xf8,0x1a,0xfe,0x45,0xdd,0x74,0xe8,0x0d,0x58,0x75,0xdd,0xbf,0x6f,0x01,},"\xd9\xc5\x9e\x8c\xc4\xed\xe5\x37\xbe\x21\x22\xab\x49\x2a\x5b\x91\x5a\x9b\x0a\x11\x4b\x2a\xde\x35\x6f\xc0\x45\x7e\xf9\x87\x22\xd5\xf5\x67\xb8\x62\x11\xe2\x83\x69\xd1\x41\x68\xec\x4a\x3c\x80\x40\x76\xe1\x54\xad\xc7\x0a\x66\x8c\xf6\x4a\x20\xd1\x3c\xf1\x90\xd1\x15\xcd\x68\x8d\x03\x6e\x46\x93\x82\x51\xdf\x49\x64\xdc\x35\x17\xb1\x0c"}, +{{0xbf,0x38,0x1f,0x8d,0xfb,0x5d,0x0c,0x6d,0x64,0xe4,0x16,0xac,0x23,0xe0,0xd0,0xfc,0xb8,0x6e,0xbb,0x89,0x9b,0x1d,0x14,0x6a,0xbd,0x91,0x1b,0x92,0xa7,0x80,0x8e,0xb6,},{0x86,0x3f,0xad,0x8d,0x1f,0x1b,0xc6,0x30,0xa1,0x5f,0x6f,0xe8,0xec,0xef,0xe6,0xb4,0x49,0x7b,0x60,0xb2,0x1a,0xe8,0x83,0x0d,0xa4,0x67,0x42,0x04,0x5f,0xef,0x15,0x6f,},{0x99,0xb7,0x53,0x78,0x73,0x8f,0xca,0xc8,0x06,0x76,0x69,0xe8,0x50,0x9b,0x5d,0x26,0x07,0xe1,0xef,0x76,0xaf,0x90,0x04,0xe1,0x3f,0xe5,0xd3,0x93,0x2d,0xf6,0x0b,0x16,0x82,0x16,0xf5,0x85,0x65,0x34,0x0f,0xa4,0xd6,0x38,0x05,0x5a,0x89,0x04,0x4e,0xe7,0xd4,0x5e,0x2b,0xd0,0x82,0xa5,0x33,0x82,0x28,0x9a,0x34,0x70,0x06,0x48,0x98,0x0e,},"\x86\x54\xf2\xf5\xc6\xdc\xd2\xcf\xcb\xb6\xed\x8d\x2b\xc5\xfb\x5f\xec\x53\xe3\xef\xfb\x0d\xe6\x5a\xac\x50\x7f\xa5\x6c\x89\x77\x32\x39\x5a\xa0\x99\x46\xd3\xb6\x58\x6a\x92\xed\xd6\xdc\x99\x31\x5e\x1b\xa7\x4c\x6a\x02\x47\xc4\xba\x77\x60\xb9\x48\xeb\x3c\x09\x32\xd9\xfe\x1f\x0e\x9f\xea\x6e\xb6\x1a\x54\x8a\x9a\xb4\x8f\xfd\xf1\x54\x73\x29"}, +{{0x36,0x98,0x32,0x41,0xa0,0xa8,0xe6,0x0c,0xe0,0x2a,0x61,0xb3,0xfa,0xfa,0xb1,0x5a,0x73,0x13,0xa5,0xa2,0x70,0xd0,0x15,0xb9,0xc9,0xec,0x07,0x0d,0xc4,0x2d,0xee,0xda,},{0x66,0x47,0x98,0x4d,0x42,0xb9,0xa5,0xb3,0xb1,0xaf,0xa3,0xb7,0xf8,0xf4,0x9d,0x4c,0x2b,0x05,0xe3,0x89,0x84,0xe9,0x9c,0xea,0x8f,0xd6,0x82,0x35,0xd2,0xae,0x46,0x27,},{0xee,0x37,0xdf,0x8a,0xf4,0x22,0xf9,0x1f,0x85,0xdf,0xe4,0x3e,0xfe,0x79,0xf6,0x23,0x78,0x06,0x8c,0xcd,0xba,0xf3,0x91,0x6e,0xec,0xbc,0x3a,0xdf,0xed,0x05,0x08,0xbd,0xeb,0xaf,0x5c,0xe0,0x6b,0x3b,0xc2,0x79,0xf7,0x80,0x87,0xf0,0xdb,0x8d,0xb3,0xc6,0x82,0x3e,0xdf,0xb3,0x2c,0x12,0x21,0x78,0x30,0xbe,0x72,0x3d,0x88,0x72,0xb3,0x0c,},"\xce\xbb\x9e\x40\x44\x51\x81\x82\x53\xc0\x39\x2a\x45\x54\xee\x73\x23\xc5\xd5\xb8\xb2\x26\x77\x57\x00\xb8\x06\xed\x5b\x91\x33\x79\x16\xea\x7e\xcb\xc3\xd4\x10\x3f\xc6\x5e\x53\x72\xae\x7e\x5f\x9b\xa2\xd8\xf5\xae\xe2\x4c\xcf\x6e\x63\x1a\xe2\x0c\x4a\xf9\xb5\xf7\x28\xcd\xf8\x9e\x81\x89\xde\xf1\xa5\xb3\xd3\x53\x47\xaa\x20\x35\x25\xea\x1d\x2e"}, +{{0xd0,0x68,0x99,0xf9,0x3a,0x40,0x8d,0xac,0xb4,0x1c,0x96,0x97,0x18,0x34,0x6f,0x1e,0x28,0x9b,0xb5,0xea,0x65,0xe2,0x83,0xff,0x79,0xc7,0x05,0xa0,0x74,0x51,0x7c,0x35,},{0x46,0xbf,0x2a,0x08,0xa0,0x76,0xc4,0x7d,0x7f,0x11,0xb7,0x33,0xf8,0x14,0x1c,0x35,0x53,0x63,0xed,0x85,0xd7,0xde,0xf2,0x6b,0xa6,0xa0,0xce,0x15,0xac,0x5f,0x2b,0xe8,},{0x6f,0x89,0xde,0x92,0xa6,0x6b,0xc5,0xf4,0x14,0x43,0x39,0x12,0x49,0x50,0xbd,0xf5,0x88,0x14,0x4c,0xb3,0x72,0xf6,0x73,0x62,0x45,0x35,0x1c,0x94,0x76,0xbe,0xcc,0x59,0xa2,0x58,0xf9,0xa9,0x33,0xff,0xff,0x2b,0xef,0x4b,0x46,0xcd,0x10,0x57,0x39,0x52,0x25,0x79,0x9f,0xd0,0x9d,0xed,0xe6,0x82,0x3d,0xb0,0xe3,0x25,0xdb,0xc8,0x14,0x0d,},"\x08\x64\xc3\x9a\xc4\xfd\xa8\xeb\x90\x48\x59\x7b\xd4\x0b\xe0\x40\x10\x21\xfd\x2d\xd3\xa3\x39\x0a\x8f\xac\xce\x98\x4b\x26\x0a\x13\xfa\x2c\x7c\xfc\x00\xd1\x92\xfa\xdf\x13\x4a\x0a\xd5\xa1\x81\xee\x89\xef\xf0\xc7\x95\xea\xa0\xfb\xfe\x2f\x3b\x26\x11\x5d\x07\x16\x8d\xb4\x2e\xd2\x1a\x51\x30\x3b\x19\x58\xe4\xa4\x2d\xc0\x65\xb2\x2c\xe4\x8f\x17\xa6"}, +{{0xee,0xbc,0xa7,0x96,0x69,0x70,0xee,0x9f,0x2c,0xc4,0xd7,0x4c,0x6f,0x1d,0x8e,0x0e,0xbf,0xf7,0xc4,0x5a,0xeb,0xad,0x34,0x9f,0xb9,0xf8,0x6d,0xf6,0x28,0xdf,0xff,0x0e,},{0x89,0x10,0x1e,0x03,0x09,0xf7,0x67,0xe6,0x4a,0xe9,0xc9,0x8c,0x4a,0x5d,0x8d,0x23,0x28,0xfb,0x3e,0xf2,0x62,0xd0,0x82,0xf4,0x9b,0x64,0xca,0x20,0x9e,0x19,0x90,0xf6,},{0x7d,0x44,0x7e,0xe5,0x32,0x8c,0x9f,0xe7,0xf1,0x19,0x36,0xcc,0x42,0x99,0x87,0x54,0xa5,0x6c,0xd1,0xd2,0xa6,0x95,0x1a,0xf4,0xfe,0xe7,0xc4,0xa8,0xeb,0x31,0x9d,0x49,0x23,0x70,0x7c,0x79,0x3c,0x55,0xd7,0x90,0x67,0xf8,0x22,0xd5,0xb1,0x6b,0xb5,0x77,0x6e,0x38,0xdf,0xfa,0xbc,0x67,0x23,0x7a,0x91,0x6a,0x81,0xa6,0x33,0x39,0xb0,0x03,},"\x0f\xac\x79\x0a\xdb\x9f\x59\xe5\xcb\x0d\xdc\xb2\xb6\x67\x17\x2f\x2a\x21\x03\x4d\x93\xbc\xad\xdf\x18\x86\x06\xfa\x9e\x77\x6d\xb3\x3a\x8f\xcc\x6b\xd7\xf5\x56\x78\x83\xfc\x0d\xe3\x51\xaa\x9a\xfa\xa3\x6d\x20\x75\xb1\xba\x85\x3b\xad\xa8\x49\xb8\x66\x1d\x5c\x81\x54\xe7\xb0\xaf\xea\x65\x6d\xd1\x5e\x01\xa9\xc5\xba\x21\x58\x9b\x02\xf8\xfc\x54\x81\xc2"}, +{{0x38,0x20,0xb6,0xb1,0x59,0x39,0xd0,0xaf,0xe1,0x8c,0x9c,0xb3,0xd9,0xa2,0xa0,0x8f,0x16,0x7d,0xd4,0x58,0xeb,0x6c,0x7e,0x3f,0x15,0x58,0xb0,0xc6,0xdb,0x4c,0x68,0x90,},{0x80,0xb8,0x5c,0x65,0x59,0xfe,0xa8,0xb4,0x00,0xe1,0x99,0x9c,0xc5,0xbf,0xed,0x50,0x7a,0xd7,0xfc,0x29,0x4c,0xd9,0xba,0x0c,0xe2,0xdd,0x25,0x84,0xa9,0x10,0x89,0xb0,},{0x82,0x3e,0xe2,0xc0,0xc8,0xd8,0x7f,0xaa,0x0e,0xc0,0x14,0x1e,0x9c,0xe0,0x8b,0x51,0xe5,0x7c,0x83,0x97,0x92,0xd1,0xfb,0xd9,0x7a,0x96,0x72,0x07,0xfd,0x41,0x58,0x49,0xeb,0xfb,0x5d,0xad,0xb5,0xa1,0xdc,0x2c,0x0a,0x8b,0x7f,0xc6,0x3f,0xc3,0x54,0x85,0x7b,0x8c,0x90,0xc4,0x47,0x20,0xe1,0x3f,0x45,0xcd,0x01,0xe7,0xaa,0x23,0x14,0x0c,},"\x3e\x5a\xd9\x2d\x44\xb4\x0e\x86\x14\xd8\x08\x7c\x9c\x74\x3d\xe0\xc0\x86\x1a\x07\xf1\xf5\x14\x6d\x71\xca\xc2\xf3\x74\x00\x24\xe8\x41\xcc\x2d\x46\x02\x7c\xf5\xd2\x61\xd3\xee\x7c\x18\x75\xb3\x95\x51\x01\x7b\x5f\xb1\x46\x81\x14\xfc\x3e\x09\x8a\x89\x9c\xdb\xd5\x58\xb3\x9f\x09\x8e\x15\x6b\x6e\x98\x01\xeb\xcd\xd6\x5f\xed\x56\xdb\xfc\xaf\x2c\x8c\x78\x7b"}, +{{0x0d,0x20,0xfa,0x4a,0x37,0xff,0x30,0xc4,0xdc,0xc3,0xe4,0x4e,0xa7,0xac,0x50,0x11,0x37,0xe5,0x80,0x7e,0x97,0x81,0x33,0x0a,0xc3,0x10,0x98,0x2c,0xc3,0xd3,0x9d,0xbd,},{0x67,0xbb,0x0a,0x01,0xbc,0x86,0x17,0xb4,0x91,0xef,0xf1,0xa3,0x26,0xc1,0xc7,0x0f,0x7d,0x0c,0x5b,0x95,0xa5,0xad,0x48,0x24,0x1a,0xed,0xce,0x1c,0x6f,0x08,0x83,0xcf,},{0xde,0xab,0x12,0xed,0x82,0xba,0x94,0xb4,0x69,0xca,0x98,0xb6,0x6f,0xa2,0x04,0x44,0xb4,0xb7,0x88,0x1c,0x4f,0x0f,0x85,0x34,0x09,0xc9,0xa1,0x50,0x4a,0x5b,0x2b,0x6d,0x78,0x60,0xf2,0x6a,0xda,0x6b,0xf7,0x34,0x59,0xb9,0xcd,0xb5,0x73,0xc8,0x01,0x71,0x21,0x33,0x8e,0xfa,0x60,0xf4,0x14,0x80,0x86,0xd7,0xa3,0xa8,0xed,0x59,0xbb,0x07,},"\x35\xe0\xf4\xb4\xa5\x17\xf9\xc7\xaa\x45\x14\xf0\x3e\x6d\x65\xf1\x9b\x27\xc6\x2c\xc0\x69\xf6\xbf\x07\xdd\x63\x78\xbd\x6a\xfe\x2b\x76\x65\x60\x00\x6c\xbd\x57\x30\xa0\x09\x19\xed\x11\x19\x1f\xb0\xc8\xda\xc5\x6e\x15\x3f\xc1\xce\xa4\xbd\xce\x50\x46\xcc\xcb\x71\x77\x59\xa4\x08\x3e\x1c\x16\xf7\x40\x76\x32\x64\xcc\x80\x4d\xe0\xd0\xe1\xa4\xb5\xa2\x30\x67\xaf"}, +{{0xbe,0xe1,0x61,0x88,0x1d,0x81,0x9b,0x37,0x0d,0x24,0x0d,0x50,0x9b,0xa4,0x6b,0x06,0xfb,0x82,0x8e,0x20,0x31,0x0d,0x9f,0x6b,0x30,0x97,0x80,0x70,0x3e,0x98,0x92,0x7b,},{0x10,0x85,0x43,0x80,0xde,0x89,0x16,0x2b,0xfb,0x9f,0x78,0x35,0xa2,0x71,0x6a,0x3a,0x6e,0x02,0x65,0x67,0x1b,0x25,0x0b,0x38,0x9d,0x01,0xc3,0xbc,0xc0,0x37,0x36,0xb8,},{0xb0,0x7d,0x07,0x2e,0xb3,0x83,0x1f,0xae,0x8a,0x06,0xef,0xfa,0x92,0x01,0x79,0x74,0x96,0xdc,0xe1,0x26,0xb8,0xe1,0x1f,0xef,0x2f,0xa0,0x7f,0x66,0x4d,0xc5,0xcf,0x3d,0x4b,0xf9,0xc3,0x8a,0x8b,0x3c,0x09,0xfb,0x5f,0x14,0xfa,0x2d,0xeb,0x21,0x9e,0x7d,0x85,0x2f,0xdd,0x27,0xc7,0xba,0x32,0xd3,0x09,0x94,0x2f,0x27,0x46,0xdf,0xe4,0x04,},"\x5a\x6f\xe5\x99\xb6\xb0\x9b\x05\xc0\xba\x6a\x62\x2d\xf3\xa9\x2b\x3d\x37\x6d\x24\xd0\x4e\xa8\x5e\xbe\x76\x7b\xc2\xec\x4d\x14\xe8\x3e\x69\x37\xdc\x0b\x91\x4b\x48\x09\xfd\xb6\x07\x90\x68\x41\xa6\xfd\x1d\xcd\xf6\x1a\xae\xa8\xf9\xbb\x81\xb2\xcc\xaa\x32\xdf\x41\x29\x89\xae\x53\x64\x66\x80\xa7\x1a\x21\x1c\x84\x40\xea\xb0\xf1\xae\xc5\xe4\xfc\x00\xe6\xa2\xc9\x6d"}, +{{0x70,0x15,0x0e,0x95,0x16,0x16,0x4a,0x3d,0x7b,0x7e,0x8b,0x6f,0x25,0x5b,0x65,0xca,0xc9,0xf0,0x74,0x59,0xb3,0x2d,0x11,0xbb,0x94,0xb3,0xd2,0x77,0x20,0x8a,0xbc,0x99,},{0x23,0x28,0xbe,0xc8,0xe4,0x03,0x51,0x04,0x78,0x82,0xe8,0xb4,0x3b,0xc1,0xab,0x08,0x53,0x86,0xfa,0x47,0x98,0x7e,0x46,0xea,0x87,0x60,0x88,0x14,0xc5,0xda,0x71,0x3c,},{0xed,0xa3,0xf5,0x03,0x3e,0xa7,0x95,0x3a,0x0d,0x58,0x3c,0x64,0x57,0x52,0x2e,0x84,0xad,0x78,0x44,0x53,0x04,0xd4,0x8e,0x57,0x7d,0x4d,0x69,0xe8,0x64,0x1f,0xeb,0xe1,0x52,0x48,0xd8,0xd9,0x0c,0xe0,0x94,0x4a,0x8f,0x80,0x1d,0x39,0x09,0x9b,0xc7,0x74,0x94,0xba,0xc4,0xce,0x2a,0x20,0xb3,0x83,0x69,0xc6,0xad,0xfb,0x71,0xe0,0x3d,0x0f,},"\x77\xbe\x8e\xce\xaa\xb4\x31\xa1\x3c\x2a\x28\xd0\xd1\x55\x64\x89\xd8\xc3\x92\xfd\x7a\xe4\x11\x57\xf7\xca\xf0\x82\xcb\x54\xe4\x5f\x08\x62\x6b\xe0\x07\x6b\xe8\x44\xd3\x8f\xde\x90\x1a\x5e\xab\x0e\x88\x32\xd6\x9d\xac\x22\xfb\x85\x07\xfb\x8e\xc4\xfa\xf7\xc8\x8f\xd2\x6d\xa3\x08\x46\x1a\xfe\x38\x59\x87\x97\x2b\x5e\x76\x0a\x34\xa5\xe1\x8b\x9a\x82\xb4\xaa\xa5\x29\xb7"}, +{{0x3f,0x87,0xfc,0xfd,0xb4,0x21,0x42,0x2a,0x9c,0x5f,0xb9,0x82,0x68,0x31,0x3c,0x15,0x12,0x8c,0x78,0x84,0x4e,0xf9,0xeb,0x3b,0x37,0x13,0xfa,0x77,0xb6,0x71,0x89,0x03,},{0x53,0x3e,0xc5,0x92,0x28,0x37,0x4b,0xd0,0x3a,0x46,0x99,0xe3,0xa8,0x89,0x6b,0x86,0x18,0x2f,0xcf,0x8f,0xc3,0x08,0x5f,0xdb,0x8f,0x5c,0x46,0x71,0x52,0x4d,0x6f,0xe0,},{0xf6,0x51,0x9d,0x7e,0xdb,0x61,0x34,0x11,0x19,0x74,0x03,0x3f,0x03,0xb8,0xd8,0x9e,0x9c,0x76,0xca,0xec,0x89,0x65,0xa8,0xe1,0x7c,0xd4,0x5f,0xff,0x19,0xde,0x26,0x15,0xd7,0x3e,0xcc,0xdb,0x4a,0x66,0x64,0xa8,0xf0,0xe2,0x3a,0xdf,0x98,0x98,0x8e,0x96,0x25,0x1b,0xf2,0x6e,0xb7,0xa4,0xcc,0xaa,0xc1,0x07,0x9f,0x0a,0x77,0x2f,0x9b,0x05,},"\xc0\x0f\xed\x2d\x68\x94\x68\xbc\xba\xcc\xcd\x44\x6e\x8d\x8f\x29\x9e\x2a\x86\x92\x5e\x62\xe5\x97\x09\xaf\xaf\x48\x57\x46\x9f\xf1\xe0\x06\xd0\x0f\xa3\xe1\x8a\x36\x15\xf8\xf0\x6b\x6e\xbd\xff\x78\x5d\xde\x58\x85\x1d\x2c\x23\x90\x38\xa0\xc3\x44\xdc\xe9\x85\xbd\x1f\xc8\xde\xb4\x77\x9a\xe5\xf8\x93\x2e\x2f\x9e\xd5\x99\x0b\x64\x72\xdb\xe4\xe6\xfe\xf6\x91\x76\x57\xe0\xb5"}, +{{0x44,0xce,0xef,0x04,0x4f,0xf9,0x98,0xd4,0xab,0xea,0xaf,0x37,0x4e,0xb4,0x1d,0x08,0x67,0x18,0xb6,0x30,0x97,0xb1,0xe3,0x5f,0x89,0x63,0x4c,0x14,0x89,0x71,0x32,0xea,},{0xe8,0x3c,0x86,0x67,0x7d,0x03,0xed,0x3a,0x5e,0x8c,0x95,0xf4,0x1f,0x0b,0x32,0x5f,0xf4,0x33,0x37,0x02,0xf2,0xff,0x69,0x36,0xf5,0x7f,0xf3,0x0a,0xa3,0x14,0x85,0xc7,},{0x55,0x45,0x52,0xd6,0xb7,0x90,0xd4,0x21,0xd0,0x6b,0x0a,0x67,0xf8,0xe0,0x02,0xad,0x7a,0x1e,0xd0,0x1c,0x06,0xcf,0x00,0xcb,0xea,0xec,0x2a,0x26,0x8b,0xda,0x29,0xf1,0x18,0x3f,0x0c,0xea,0xfc,0x62,0x5f,0xa5,0xfd,0xb8,0x47,0xdc,0x86,0xfa,0xe1,0xa2,0x04,0x06,0xe4,0x59,0xd4,0xa0,0x17,0x7c,0xb5,0x15,0x22,0x0a,0x56,0x8e,0x08,0x00,},"\x8d\x3e\x2d\xec\x46\x44\xc7\xb5\x16\x33\xb1\x3e\x63\x75\xca\x42\xff\x91\x38\x46\x5f\x43\xd7\x80\x0c\x73\x13\x19\x9f\x67\xc9\xcf\x1b\x52\x0b\x18\x20\xbd\x63\x0e\xcf\x1c\x99\x2e\x27\x67\xb3\x8e\xb5\xbb\xc4\x41\xa4\xab\x8d\x31\x7d\xb4\x41\xdb\x35\xa0\xfe\x3a\xbe\x7a\x9e\x45\x41\x88\x1c\x2d\x7b\x1a\x26\x12\x30\x69\x59\x81\x5d\x1d\xa4\x12\x67\xd9\x64\x9d\xd4\x49\x4a\xce"}, +{{0x98,0xef,0x2a,0x44,0xd4,0xc8,0x47,0x6d,0xff,0x05,0xaa,0x78,0xdc,0xf9,0xc6,0xdc,0x08,0x6c,0xb2,0xf6,0x22,0xa0,0x67,0x45,0xd6,0x0c,0xbf,0x22,0x3f,0xaa,0xba,0x66,},{0x42,0xfd,0xb1,0xda,0xa3,0x9f,0x01,0x59,0x11,0x9b,0xee,0xc1,0xbe,0xdf,0x6f,0x03,0x94,0xb2,0x6a,0x2a,0x29,0xbd,0x1f,0xde,0x08,0x1e,0xcc,0xda,0xde,0xcc,0x22,0x6a,},{0xab,0x5e,0x87,0x24,0xa3,0xe6,0xff,0x76,0x05,0x8c,0xfb,0x21,0x4d,0x57,0x4e,0x04,0xd0,0x55,0x74,0xec,0xdd,0x4f,0xfe,0x8c,0x07,0xc7,0xaf,0x39,0x6e,0x88,0x26,0x87,0xc5,0xd7,0x9e,0xf1,0xe6,0x2f,0xbb,0x4c,0x5f,0x1b,0xd0,0x6b,0x9b,0xd8,0x97,0x82,0x6e,0xdd,0xe0,0xd1,0x11,0xd9,0x18,0xe8,0xef,0x96,0x1f,0xf2,0xa0,0x0d,0x77,0x00,},"\xc8\xb5\xfc\xfc\x3c\x18\xc7\xd9\x59\x57\xb6\x68\xe9\x1c\x73\x1d\x50\xc7\xfc\xea\x4f\x95\x75\xbb\xf7\x84\x62\x58\x70\xe2\x38\xdf\x54\x6e\x2c\xb1\xa1\x9d\x28\x08\xdd\x5b\x23\x0d\x38\x71\xfd\xec\x16\x10\x0e\xe1\xfb\xf9\xb7\x22\xfa\x37\x44\xa7\x50\xa3\xb3\x96\xb0\x5f\x9c\x21\xb8\xc0\xf6\x1e\xad\x57\xa7\x8c\x5e\xcf\x72\xb5\x79\xcf\xe8\x8a\x3f\x40\x4c\x8a\xcf\x52\x4f\x9a\xb9"}, +{{0x93,0xa8,0xc7,0x92,0xa2,0x39,0xc9,0x31,0x91,0x7c,0x11,0x48,0x24,0xa0,0x17,0x4f,0x8b,0xc4,0xeb,0xbf,0x98,0xaf,0x8c,0x7e,0x32,0x1e,0x0f,0x5b,0xea,0x40,0x15,0xec,},{0x9b,0x2e,0xaa,0x8a,0x9c,0x2c,0x25,0xff,0x4f,0x6e,0x13,0xbb,0x12,0xba,0xe5,0xd0,0x6f,0xda,0x0e,0xb1,0x10,0x5f,0xaf,0xae,0x58,0x80,0xff,0x16,0x87,0x40,0xbb,0x74,},{0xcf,0xe3,0x2c,0x44,0x35,0xd9,0x11,0xd7,0x72,0xdc,0x07,0x27,0xe7,0x8d,0x68,0x9d,0x01,0x64,0xc5,0x06,0x95,0x97,0xcb,0x44,0x1b,0x22,0xc1,0xd2,0x62,0x36,0x47,0x9f,0x1a,0xfd,0x70,0x89,0x12,0x1b,0x9a,0xb4,0xf6,0x1b,0xbb,0x1f,0xae,0x1a,0xb4,0x2f,0x76,0x35,0xa9,0x2a,0x53,0x78,0x4d,0x71,0x70,0x91,0x6b,0x70,0x3a,0xa5,0xcc,0x09,},"\x90\x1b\xf4\xe0\x41\xca\xf1\x6e\x04\xf2\xff\xde\x8d\x6f\xe9\x7e\x93\xd0\x90\x0f\x6b\xc0\xfc\x09\xa9\xa0\x17\x9d\x13\x7b\x4b\x77\x88\xe5\x7e\xb9\x27\x66\xa9\xc6\x34\xf3\x5a\xdb\x5c\x29\x88\xaf\x1e\x86\x20\x8f\x46\x19\x98\xf5\x9c\xfe\xc9\x92\x04\xb4\x84\xfb\xca\xd3\x95\x1e\x7e\xe4\x40\x55\x23\x70\x5d\x97\x39\xb4\x43\x07\xdb\x03\xf7\x13\xfd\xa7\x8d\xb4\x21\xef\x31\x21\xb3\xba"}, +{{0x70,0x01,0xfa,0x0c,0x44,0x04,0xc2,0x8a,0xa5,0xb5,0xfc,0xff,0x30,0xa9,0x61,0xf2,0x1a,0x22,0xf5,0xb8,0x5a,0x9e,0x38,0x2e,0x07,0xae,0xa8,0xa8,0x92,0x4d,0x0e,0xc1,},{0xda,0xeb,0xb6,0x3c,0x4d,0x8f,0x40,0xce,0xba,0x8e,0xc3,0x5e,0x3d,0xd9,0x46,0xa6,0xb7,0x5b,0xc7,0x4f,0xcb,0x29,0xad,0xe7,0xb5,0x5e,0xee,0x3c,0xc3,0xae,0xa5,0xca,},{0x64,0xea,0xc9,0xce,0x87,0x46,0x06,0x18,0x63,0x6b,0x41,0xfd,0x2d,0xec,0xc1,0x67,0x3b,0xfc,0x48,0xc5,0xf4,0x79,0xdf,0xac,0xb5,0x1e,0x86,0x68,0x64,0x07,0x37,0x4b,0x1d,0x10,0xbf,0x65,0xd6,0xd7,0x47,0x42,0x14,0xd7,0x77,0x0c,0x9e,0x5c,0x7f,0x80,0x6c,0x80,0xd5,0x3d,0x48,0xb7,0x20,0x87,0x0e,0x5e,0x78,0xf3,0x2e,0x3a,0x7e,0x05,},"\x44\xf4\x8c\xfb\x02\xf0\x87\x77\xa5\x78\x73\x85\x5f\x96\xbe\x4c\x02\x91\x32\x3f\x27\x39\xb2\x75\xd9\x07\x57\xa1\x54\x72\xe5\x75\x04\x36\xe0\x10\x74\x08\xfe\x30\x26\xc0\x06\x25\x68\x99\x83\xf9\x90\xeb\xa9\xbe\xcb\xfc\xe4\x03\xcc\xd5\x63\x56\xad\x27\x41\xfd\x21\x44\x5d\xfb\x23\xd7\x61\x12\xe5\x78\xb3\x39\x5c\xf9\xd9\x60\x95\x5f\x1d\xa8\xf3\x99\xca\x28\x6f\x21\x39\x0e\x25\xa5\x9a"}, +{{0x3a,0xdc,0xe3,0xa3,0xd3,0xfb,0xc9,0x77,0xdd,0x4b,0x30,0x0a,0x74,0x74,0x9f,0x13,0xa3,0xb0,0x4a,0x5d,0x73,0xa2,0xcd,0x75,0xa9,0x94,0xe3,0x19,0x5e,0xfe,0xbd,0xac,},{0x6f,0xf1,0x9b,0x1f,0x18,0xd6,0x48,0x51,0xd5,0xc7,0x48,0x45,0xc6,0x40,0x7f,0x0b,0xf5,0x96,0xa5,0x2e,0x38,0x5e,0x02,0x01,0x27,0xe8,0x3e,0x54,0xcf,0xf5,0xac,0x19,},{0x7d,0xda,0x89,0xf8,0x5b,0x40,0x53,0x9f,0x5a,0xd8,0xc6,0xde,0x49,0x53,0xf7,0x09,0x4a,0x71,0x5b,0x63,0xdd,0xa3,0x0e,0xc7,0xcf,0x65,0xa7,0x85,0xce,0xae,0x5f,0xc6,0x88,0x70,0x7e,0xe0,0x0b,0xe6,0x82,0xce,0xcb,0xe7,0xee,0x37,0xd8,0xfc,0x39,0xee,0x6d,0x83,0xc6,0x44,0x09,0x68,0x17,0x08,0xa0,0x89,0x8a,0x18,0x3b,0x28,0x8a,0x06,},"\xfe\x6c\x1a\x31\x06\x8e\x33\x2d\x12\xaa\xb3\x7d\x99\x40\x65\x68\xde\xaa\x36\xbd\xb2\x77\xce\xe5\x53\x04\x63\x3b\xd0\xa2\x67\xa8\x50\xe2\x03\xbb\x3f\xab\xe5\x11\x0b\xcc\x1c\xa4\x31\x66\x98\xab\x1c\xf0\x0f\x0b\x0f\x1d\x97\xef\x21\x80\x88\x7f\x0e\xc0\x99\x1e\x8c\x11\x11\xf0\xc0\xe1\xd2\xb7\x12\x43\x3a\xd2\xb3\x07\x1b\xd6\x6e\x1d\x81\xf7\xfa\x47\xbb\x4b\xb3\x1a\xc0\xf0\x59\xbb\x3c\xb8"}, +{{0x14,0x80,0x3c,0x1f,0x23,0xa4,0x7f,0xcd,0xd3,0x5e,0x5d,0x14,0x6e,0x20,0xca,0x63,0x0c,0xd7,0x12,0xc0,0x47,0xd5,0x33,0x0b,0x65,0x2e,0x31,0x85,0x7a,0xcb,0xc9,0xe8,},{0x36,0xf2,0xd5,0xbd,0x6d,0x83,0x24,0xfa,0x6e,0x9d,0xb7,0xf7,0xd8,0x54,0xeb,0xe4,0x8c,0x0e,0x62,0x99,0x99,0x81,0x22,0xe9,0xd4,0x4b,0x8a,0xdb,0xef,0x54,0xf0,0x93,},{0x07,0xa7,0xde,0x6c,0xe9,0x76,0x64,0xb3,0xea,0x09,0x28,0xe1,0x38,0x5c,0x33,0x09,0xbe,0x08,0xa4,0x7c,0xbf,0x4d,0xaa,0x91,0x86,0xa1,0xb9,0x48,0xc8,0x6f,0xbb,0xa3,0x9c,0x4e,0xfc,0xfc,0xb7,0xa0,0xa3,0x86,0x6b,0xc9,0x4c,0x67,0x88,0xff,0xe6,0xbe,0x0d,0x49,0x72,0xe5,0x6d,0x0c,0x32,0x92,0xd1,0xcc,0x6e,0x25,0x44,0x7b,0x99,0x04,},"\x55\x59\x83\x67\x9d\x02\x6e\x53\x54\xb4\xcc\x05\x5a\xe1\xbc\x14\x65\x3c\x72\x81\xec\x72\x23\x72\xf3\xfe\xb7\x78\xe8\x41\xda\x82\x1b\x3d\x0b\x8e\xe7\xa9\xa9\x12\x9e\xa0\x68\x24\xbe\x83\x79\xfb\xbd\xcb\x07\x48\xf4\x23\x72\x1c\xcb\x17\x2a\x1b\xaf\xa1\xd5\xae\x9f\xc1\xc5\x1e\x93\xd4\x1d\xd5\x51\xc3\x08\x60\x79\xb6\x20\x28\x6c\x1c\x40\xc1\x22\x3b\xbc\xbb\x76\x72\x2e\x92\xca\x21\xd8\x41\x0a"}, +{{0x1a,0x61,0x15,0x4d,0x34,0x72,0xcd,0x96,0xb3,0x28,0xee,0x67,0x4b,0xeb,0x4f,0xc8,0x67,0x63,0xa9,0x69,0xfb,0x41,0x04,0x94,0xe0,0x67,0x84,0x14,0xe3,0x1a,0x46,0xa6,},{0x75,0x76,0xd9,0x3a,0xc8,0x5d,0x0f,0xc6,0x1f,0x25,0x8c,0x55,0xcf,0x90,0xbd,0x87,0xa6,0x35,0x09,0x9c,0x0e,0x81,0x0e,0xd0,0xb9,0x37,0x25,0x8d,0x13,0xb4,0x25,0x59,},{0xad,0xa1,0x66,0x6c,0x9c,0x3b,0x82,0x84,0xb8,0xa2,0x1c,0x4f,0x26,0x18,0xef,0x08,0x08,0xa6,0x46,0xf3,0xf1,0x09,0x41,0xe4,0x70,0xf7,0x38,0xe1,0x78,0x5e,0x2d,0xe9,0xfd,0xd9,0xc8,0xcb,0x52,0x6f,0x94,0x5c,0x7a,0x8c,0x69,0x94,0xf1,0x51,0xb7,0xd0,0x66,0x58,0x1b,0x1d,0x75,0x53,0x07,0x94,0x7c,0x62,0xbe,0xfc,0x8a,0xb7,0x07,0x0f,},"\x64\xc5\x65\xef\xbc\xb8\xb9\x52\x8e\xd4\x72\x53\xf3\xc6\xa4\x03\x5d\xb7\x81\xd6\xf0\x97\x6b\x5e\x5b\xa8\x44\x7d\x4e\xd5\x4b\x04\x10\x52\x93\xef\x4c\x00\x0d\x8b\x2e\x1b\x5b\x75\xe7\x27\xe5\xd2\xa0\x77\x74\x3b\x50\xd1\x83\xb4\x91\x76\x48\x01\xa2\x50\x4d\x16\xee\x6d\x7d\x8a\xc4\xfe\x40\xe6\xbf\xc2\xa8\x12\x9c\x72\x85\xa5\xac\x69\x1c\x35\xe6\x42\xed\x16\x2c\xf7\xfb\xc6\x45\x16\x73\x3a\x23\xb3"}, +{{0xf2,0x15,0xd3,0x4f,0xe2,0xd7,0x57,0xcf,0xf9,0xcf,0x5c,0x05,0x43,0x09,0x94,0xde,0x58,0x79,0x87,0xce,0x45,0xcb,0x04,0x59,0xf6,0x1e,0xc6,0xc8,0x25,0xc6,0x22,0x59,},{0x1e,0xd5,0x06,0x48,0x5b,0x09,0xa6,0x45,0x0b,0xe7,0xc9,0x33,0x7d,0x9f,0xe8,0x7e,0xf9,0x9c,0x96,0xf8,0xbd,0x11,0xcd,0x63,0x1c,0xa1,0x60,0xd0,0xfd,0x73,0x06,0x7e,},{0xcb,0xef,0x65,0xb6,0xf3,0xfd,0x58,0x09,0x69,0xfc,0x33,0x40,0xcf,0xae,0x4f,0x7c,0x99,0xdf,0x13,0x40,0xcc,0xe5,0x46,0x26,0x18,0x31,0x44,0xef,0x46,0x88,0x71,0x63,0x4b,0x0a,0x5c,0x00,0x33,0x53,0x41,0x08,0xe1,0xc6,0x7c,0x0d,0xc9,0x9d,0x30,0x14,0xf0,0x10,0x84,0xe9,0x8c,0x95,0xe1,0x01,0x4b,0x30,0x9b,0x1d,0xbb,0x2e,0x67,0x04,},"\xfb\xed\x2a\x7d\xf4\x18\xec\x0e\x80\x36\x31\x2e\xc2\x39\xfc\xee\x6e\xf9\x7d\xc8\xc2\xdf\x1f\x2e\x14\xad\xee\x28\x78\x08\xb7\x88\xa6\x07\x21\x43\xb8\x51\xd9\x75\xc8\xe8\xa0\x29\x9d\xf8\x46\xb1\x91\x13\xe3\x8c\xee\x83\xda\x71\xea\x8e\x9b\xd6\xf5\x7b\xdc\xd3\x55\x75\x23\xf4\xfe\xb6\x16\xca\xa5\x95\xae\xa0\x1e\xb0\xb3\xd4\x90\xb9\x9b\x52\x5e\xa4\xfb\xb9\x25\x8b\xc7\xfb\xb0\xde\xea\x8f\x56\x8c\xb2"}, +{{0x8c,0x9f,0x95,0x08,0x30,0x75,0xa4,0x3f,0xe4,0x26,0xd1,0x9f,0x1e,0x87,0x71,0x9b,0x40,0x04,0x3d,0xe8,0x8e,0xb0,0xee,0x97,0x1f,0x70,0xe1,0x0c,0x76,0x94,0xce,0x4e,},{0xe9,0x1d,0x16,0x7a,0xa3,0xeb,0xc2,0x3e,0x70,0xaa,0xb4,0x5d,0xab,0xe9,0x05,0xe4,0x16,0x26,0x2f,0x91,0x0e,0x2a,0x95,0x5d,0xd8,0x61,0x9e,0xfc,0x74,0xc2,0x4e,0x85,},{0xca,0xc5,0x55,0x22,0x2d,0xaf,0xec,0x76,0xa0,0xb4,0x7b,0x9d,0x2c,0x58,0x6b,0x3b,0x3b,0x9b,0x3b,0x9c,0x83,0x64,0xbe,0xb3,0xca,0xe1,0xe8,0xdd,0x7f,0x1a,0xe9,0xdd,0x74,0xf2,0x2b,0x8d,0xd4,0xad,0x2b,0x29,0x0f,0x81,0x35,0x1a,0x41,0x5a,0x99,0xf0,0x30,0xf1,0x07,0x78,0xbe,0x4c,0xda,0x85,0xd1,0xd3,0x53,0x33,0x1e,0x70,0xf1,0x09,},"\xb6\x9d\x70\xe8\x60\xf5\x5c\x42\x7e\xf2\xa7\x1d\xf3\x6e\x05\xbb\xc4\x3b\xb2\xe0\x64\x63\xaa\x5d\xe3\x44\x19\xc6\xa6\x14\xee\xa6\x69\x53\x35\xa8\x75\x26\xc1\x22\x64\x88\xd8\x42\x89\x1d\x05\x74\xdf\x34\x3c\x9c\x1e\x17\xae\xd6\x95\x8e\xce\xe8\x74\x74\x22\x1e\xb7\x7a\x59\x9e\xcb\x05\x93\x44\xc0\xd0\x52\xc0\x00\x2a\x66\xe5\xa6\x01\x31\x85\xaf\x69\xa0\x1b\xa5\xdb\xc6\x60\xd3\x6c\xae\x23\x5f\x67\xfe\x0e"}, +{{0xd7,0xeb,0x1f,0xba,0x42,0x4f,0xee,0xd1,0x00,0x77,0x7e,0xed,0xb4,0x87,0x4b,0xf2,0x08,0x10,0xad,0x68,0x6b,0x67,0xe3,0x1d,0x27,0xec,0xf6,0x10,0x60,0x9a,0x33,0xf5,},{0xa2,0x5a,0xcb,0x11,0xa6,0xc8,0x25,0x71,0x3a,0x08,0x5f,0xa7,0x54,0x69,0x28,0x86,0xa8,0x7d,0x07,0xfb,0x9b,0xe1,0xa5,0x3e,0xb9,0x61,0x72,0x8b,0xb6,0x6c,0x90,0x60,},{0x2b,0xf7,0x19,0x68,0x2b,0x07,0xcc,0x5e,0xcc,0x04,0x80,0xf3,0x7e,0x9d,0x12,0x3f,0xf6,0xf4,0x4c,0x26,0xe6,0x95,0x8e,0x59,0xf0,0x80,0x46,0x6f,0x9c,0xd3,0x73,0xa1,0x65,0x00,0xda,0xf1,0x23,0xdc,0x3f,0x13,0x34,0x77,0x4b,0xfc,0x9f,0xa8,0x45,0x03,0xb1,0x6d,0xbf,0x21,0xa8,0x15,0xc1,0xad,0xa6,0xeb,0xef,0x49,0x20,0x46,0x17,0x02,},"\xa1\xd0\xf8\x1e\x3d\x59\x08\x9c\xc2\xb1\x9e\x07\xd2\xfc\xe4\x3d\xb4\xcf\x17\x1f\xaa\x64\x2f\x3b\x0b\xbd\xe7\x7a\xe3\xd5\x3a\xf5\xc0\x2b\xf8\xfc\x12\xff\xb4\xe5\x7f\x7c\x8a\x01\x5d\x6c\x2d\x17\x89\x44\xfa\xe9\xf7\xc8\xfc\x96\x9d\x4b\x77\xbe\xa5\x18\x76\xae\x99\xd5\x9e\x94\xad\x24\x56\xe0\xed\x72\xc5\x2c\xf4\xe5\x34\x0d\xa1\x7c\x44\xdb\xff\x86\x45\x7a\x51\x9b\x6f\xff\xe2\x69\x06\x62\x90\xd6\x29\xfe\x69"}, +{{0x4f,0x6a,0xeb,0x35,0xfc,0xe1,0x4f,0xbc,0xbb,0x9a,0xa8,0xa4,0xf6,0x45,0x1b,0xf9,0x5b,0x98,0xdf,0x04,0x7f,0xa8,0xc4,0x3f,0x1e,0xad,0x3b,0x40,0x4d,0x3f,0x92,0x8f,},{0xbf,0x66,0xa9,0xed,0xd0,0x94,0x81,0xdb,0x84,0x44,0xa1,0x76,0xc8,0xce,0x05,0x78,0xd2,0x93,0x4f,0x0c,0xdc,0x97,0x34,0xe8,0x6f,0xca,0xac,0x05,0xbf,0x33,0x30,0xf1,},{0x6a,0xdb,0x07,0xe3,0x64,0xf2,0xa4,0x55,0xcb,0x05,0x86,0x7a,0xbc,0x51,0x1a,0xcd,0x9d,0x65,0x89,0x77,0xf0,0xca,0xca,0xfc,0x92,0x82,0x8e,0x7b,0x72,0x4f,0x6b,0xbf,0x98,0xbf,0x0b,0xfb,0x29,0xf4,0xe5,0xe6,0xc7,0x47,0x38,0xd4,0xfd,0xd8,0x16,0xd9,0x25,0x24,0x07,0xae,0x4f,0x3a,0xfc,0x57,0x4c,0x4f,0x00,0x61,0x48,0x24,0xe2,0x03,},"\x2d\xfb\xb3\xf5\x9e\x19\xea\x17\xd4\x4a\x5b\xde\x4a\xd2\x27\xa1\xa3\x51\xdd\xa1\x7a\xf8\x40\xee\x0a\x75\xda\x21\xa5\xcc\xa8\x9b\x6d\x1c\x56\x7c\x33\x3e\x9c\xc9\x10\xe2\x15\x7e\x05\xe8\x6a\xd5\xd9\x31\x14\x50\x64\x59\x4c\x47\xba\xee\xa8\x66\x3a\x34\x64\x9c\x43\xe9\x0e\xb9\x5c\xa1\x0f\x7d\x51\x59\x7b\x37\x8a\x72\x2f\x1f\x70\x4a\xdf\x9f\x22\xe9\xf8\x85\xb8\x9d\x1f\x93\x80\x06\xa2\xef\xcd\xb4\x2a\xaf\xf5\xe3"}, +{{0xef,0x4a,0x67,0x62,0xb4,0x00,0x97,0x52,0x04,0xcc,0xc1,0x3a,0xbb,0x47,0x34,0x40,0x15,0x45,0x49,0x06,0x85,0x0f,0xf1,0x49,0x40,0xcb,0xb8,0x3a,0xa2,0x24,0x14,0xae,},{0xea,0xca,0x45,0x09,0x96,0xf5,0x0c,0xfa,0xf2,0xbd,0x7f,0x9d,0x7f,0xa7,0x08,0x7f,0x09,0xad,0x49,0x66,0x42,0x06,0xa8,0x0b,0xc2,0xe5,0xbb,0xbb,0x85,0xbb,0x66,0x8e,},{0x02,0x69,0x7d,0x44,0xca,0xd8,0x62,0xf1,0xda,0xf5,0x70,0x82,0x05,0xf4,0x50,0xd4,0x08,0x52,0x5b,0x10,0xc0,0x1f,0xfd,0x06,0xcf,0xee,0x80,0x37,0x4f,0x3d,0xb1,0x6f,0xa9,0xa4,0x9c,0x19,0xa9,0x84,0x4b,0x34,0x5f,0x2f,0x95,0x59,0xea,0x74,0xaa,0xb1,0x73,0xba,0xa0,0x78,0xc5,0x43,0x70,0xa5,0x16,0x67,0x00,0xc6,0xda,0xfb,0x78,0x0a,},"\xa4\xb6\x3e\xae\xd5\xa6\x4a\x94\xf2\xca\xd2\x12\xce\x2a\xe7\x10\x92\xfd\x3e\xa7\x44\xf5\xbd\x89\x56\x2b\x2f\xc2\xa6\xc9\xe4\xd7\xaa\x27\xad\xd5\x62\x64\xa5\xa5\x50\x16\x61\x0b\xe6\xc1\x9f\xf7\xd4\x98\x9e\x95\x04\x74\x08\x53\x01\x27\x15\xa7\x9e\xce\x9e\x12\xc3\x01\xb3\x31\x7c\x7d\x9b\x67\x30\xdb\x86\x2a\x4a\x1d\x28\x05\x8e\x0f\x8b\x5d\xdd\x97\x38\xc7\xc6\x2e\xa5\x72\xcf\xe5\x9e\xae\x08\xe2\xb8\xb6\x59\x3b\x58"}, +{{0x55,0x01,0x7e,0x5f,0x61,0xf0,0xc5,0xba,0xfb,0xcd,0xe6,0xf8,0x49,0xf4,0x2a,0x31,0xe5,0xe7,0xa8,0x78,0xc1,0xd3,0xf9,0x12,0x6f,0xc5,0x69,0xfd,0x41,0x7e,0xa9,0xf2,},{0x66,0x91,0x4f,0x74,0xed,0x93,0x2f,0xc8,0x81,0xff,0x01,0x66,0x68,0x3f,0x67,0x5a,0x7c,0x28,0xa9,0x26,0xfd,0xdd,0x64,0x69,0xcd,0xb3,0xf2,0x8e,0x6d,0xec,0x42,0xcc,},{0xb1,0xa5,0xe7,0xc4,0x9b,0x8f,0xc6,0xb4,0x33,0x1e,0x04,0x16,0xce,0x7e,0x4e,0xd5,0x9e,0xdd,0x56,0x30,0x0b,0x80,0x2e,0x0d,0x72,0xab,0xca,0x4a,0x6f,0xcb,0x87,0x6c,0x03,0xbf,0x33,0x15,0x79,0x12,0x4a,0xe0,0xd3,0xfe,0x43,0xf7,0x89,0x8b,0xc8,0x7e,0x93,0xfc,0x2d,0xa3,0x97,0x0f,0xc8,0x63,0x89,0x57,0xd1,0x8c,0x66,0x13,0xc8,0x08,},"\x2f\xc8\x4a\x09\x98\xfa\x6e\x16\x8a\x86\x64\x10\xbb\x68\x10\x5d\xf2\x49\xa2\x8c\xfc\x76\x60\x4b\xe9\x4f\xd7\xdf\xff\xf2\xfc\x1d\xed\xd2\x20\x19\x94\x65\x57\x5e\x8d\xf8\x60\x19\x0f\x16\xac\xa4\x08\x41\x69\xbe\x16\xc6\xba\x32\xeb\x67\x04\x2f\xfd\x4f\x23\x03\x16\xa2\x6b\x26\x24\xa4\x2f\x8f\x90\xad\x57\xf6\x91\x64\x86\xfa\x91\xfd\x94\xed\x68\xad\xed\x4e\x63\x24\x30\xef\x71\x94\x46\x97\x9b\xfa\xf3\x45\x40\x9c\x38\x7f"}, +{{0x05,0x53,0xfb,0xa8,0x66,0x94,0x23,0x41,0x21,0x7c,0xf2,0x78,0xac,0x57,0xcb,0x21,0xac,0xd0,0x9d,0x99,0x16,0xcc,0x6a,0xf0,0xac,0x46,0x94,0x1e,0xa1,0x39,0xd5,0x45,},{0x84,0x0c,0x66,0xe5,0x7c,0x2d,0x4f,0x52,0xa4,0xa2,0x79,0x6d,0x2a,0x53,0xc5,0x70,0x9b,0x96,0xa6,0x28,0xc2,0xe0,0x63,0xfe,0x6e,0xfd,0x47,0xf2,0x83,0xef,0x5e,0x82,},{0xbc,0x33,0x64,0xc1,0x52,0xee,0x5c,0x80,0x8a,0xc3,0x40,0xf4,0x9e,0xa2,0xcc,0x40,0x4e,0x93,0x51,0x71,0x21,0x22,0x0c,0xce,0x6f,0x7c,0x30,0xa2,0x25,0x00,0xe4,0x1b,0xcd,0xb6,0xe8,0x20,0x48,0x0f,0x8f,0xcc,0xdd,0x22,0xff,0x9a,0xd9,0x6d,0xa5,0x32,0x80,0x2f,0x43,0x1e,0x94,0x24,0x0f,0xb8,0x3d,0x4b,0xce,0xaa,0x09,0xb9,0x2b,0x0d,},"\xc1\xfa\xe6\x26\x2a\x0e\x98\xa6\xb1\x23\x5f\xcb\x62\x28\x3b\x7f\x0a\x09\x7f\x9d\x00\x24\x16\xd3\x18\xfe\xfc\x60\xc5\xa1\x58\x4f\x90\x0a\xd0\xab\x26\xcc\xfa\xe0\xd6\xd8\x4a\xa9\xaa\x2d\xf1\x6d\x4c\x11\x7e\xa2\x72\x46\x76\xcb\x86\x6d\x48\x70\xa8\x72\xfc\x82\x9a\x7c\x2a\x5d\x21\xba\x83\x34\x0a\xdb\x33\x9a\x34\xc5\x18\x4c\x7f\x5e\xad\x0f\x07\x72\x89\xb3\x36\x77\xed\x6a\x1b\xa3\x4b\xe1\x99\x4e\x25\x76\x3b\xd1\xd9\xfa\xec"}, +{{0x7a,0x5a,0xc6,0x02,0xde,0x19,0xf3,0xc2,0x10,0x40,0xbc,0xdd,0xbf,0xf4,0x2f,0x6a,0xee,0x6f,0x95,0xc1,0xb0,0x93,0x86,0x8f,0x48,0xe5,0x04,0x82,0xdb,0xf4,0xf9,0xc7,},{0xfb,0xb6,0xc7,0x53,0x1c,0xda,0x21,0xe7,0xd1,0x7e,0xa9,0x03,0xc4,0xd1,0x4b,0xe6,0xc6,0x8b,0x4c,0xa8,0x03,0xa1,0x6b,0xd8,0x71,0x20,0xf5,0xaa,0xf7,0xdc,0xe1,0xd4,},{0x84,0x10,0x1d,0xd4,0xb5,0xe8,0xca,0x3e,0xd9,0x8c,0x1e,0x8a,0x06,0xe1,0x1d,0x7e,0x42,0x4b,0x0d,0x12,0xca,0x71,0x4e,0xe7,0x37,0x4b,0x64,0xc2,0x9d,0x51,0xa2,0x02,0x1c,0xc7,0x7a,0xc7,0x53,0x89,0xd9,0xb0,0xa6,0x46,0xa4,0x47,0x62,0x3d,0x7d,0x04,0xd1,0x24,0x18,0x66,0xb0,0xca,0x6e,0xdd,0x1b,0x7a,0xc0,0x15,0x66,0x6b,0x70,0x0d,},"\xbd\x16\x85\x41\x92\x79\xeb\x81\xe4\xcf\x3c\x90\x90\x31\xf0\xf0\x9c\x5f\xfa\xe7\xe2\xce\x6b\xa9\xd9\x6c\x2b\xce\x87\xb8\xba\x0d\xd7\x63\x23\x10\x01\xe5\x32\xc7\xdd\xd6\x21\x03\xab\xf7\x01\x28\x8e\x19\xdd\x8f\x53\x02\xe8\xf5\xd3\x1b\x64\xcc\x33\x9b\xd8\xb7\xa9\x55\x50\xc8\xa1\x16\xfd\x48\x69\x48\x77\x2b\xd5\xaf\x8d\xfd\x46\x00\x1c\x59\x76\x7b\x0d\x6b\xdc\xe3\x83\xa7\x07\x89\x92\xd1\x02\x2f\xbc\xaf\x90\x71\x06\x87\xb9\xaa"}, +{{0x50,0x41,0x4c,0xf5,0x49,0xbc,0xc5,0x5b,0x5b,0x6b,0x75,0xea,0x37,0x82,0xb2,0xea,0x7c,0x08,0x7b,0x6a,0x01,0x06,0x17,0x5e,0x46,0x9c,0xa2,0xcc,0x76,0x4a,0xeb,0x01,},{0xd0,0xf3,0x0c,0x12,0xe9,0x97,0xf9,0x6e,0x7a,0xee,0xcd,0x1b,0xff,0x6a,0x01,0x2e,0xc3,0x88,0xeb,0xf8,0xf3,0xf4,0xaf,0x66,0x48,0x04,0xd1,0x63,0x8e,0x4c,0x34,0x6a,},{0xb3,0x09,0x80,0x01,0x60,0xde,0x43,0xa6,0x3a,0x89,0xa0,0xac,0xb8,0xa6,0x05,0x00,0x59,0x58,0x9b,0x3e,0xae,0xca,0xc2,0x0b,0x25,0x6f,0xec,0xe4,0x38,0x04,0x2f,0x69,0x41,0x5d,0x8a,0x56,0x88,0x3e,0xe3,0x83,0x6d,0x31,0x34,0xa7,0xfc,0x1d,0xe6,0x4f,0xa8,0xc8,0xce,0xcc,0x3c,0xe2,0x75,0x89,0xf6,0x06,0x05,0x88,0x20,0x85,0x7a,0x0c,},"\x75\xad\x77\xe8\xc5\x4b\x0b\x05\xfb\x2d\x16\x2e\x7c\xad\xb8\xa7\x52\x80\x81\xb8\x63\xf7\x6a\x44\x1b\x37\x44\x69\x41\x3e\x57\x14\xed\xf5\x4f\x80\x04\x96\xaf\x01\x57\xc1\x7e\x42\x55\x83\x41\x4d\x43\x61\xf2\x13\x41\x71\xc0\xb8\x7c\x22\xce\x68\x20\xa4\x85\x0a\xb4\x9d\x99\xa9\xba\xdc\xe9\xe3\x61\x10\xe7\xf3\x06\x01\x18\xb3\x59\x0f\x82\xb4\x37\x71\xe9\xfb\xb0\x81\xaf\xe6\x22\x27\xe0\x24\xd9\x8d\xe6\xcd\xec\x02\x8d\x7c\x49\x49\x0d"}, +{{0x93,0xcb,0x00,0xd8,0xfe,0x9c,0x97,0x77,0xa6,0x83,0x63,0x1f,0x39,0xba,0x0f,0x48,0x76,0x14,0x82,0xcf,0x1c,0x36,0x6b,0xd8,0x63,0xcf,0x71,0x51,0x01,0x53,0x25,0x55,},{0x87,0xe9,0x4a,0x1e,0xa5,0x25,0x8d,0x61,0x18,0x0c,0xb8,0x28,0x59,0x0f,0xf1,0x41,0x8a,0x87,0xd0,0x1e,0x70,0x26,0x86,0xba,0x8a,0xbc,0x26,0x92,0xc8,0xdc,0x3c,0x91,},{0x09,0x82,0x4f,0xa2,0xdf,0xbc,0x4d,0x6e,0xf7,0x6a,0x9e,0x41,0x45,0x96,0x11,0x16,0x76,0x91,0x30,0x55,0x3b,0x3e,0xdf,0xfa,0x50,0xd0,0x4f,0x39,0xb8,0xb7,0x9f,0xac,0xbd,0x23,0x7a,0xcf,0x71,0x35,0x4a,0x53,0xa6,0xe5,0xfe,0xe7,0x54,0xe8,0x23,0xb0,0xb2,0x90,0xf9,0x61,0x93,0x20,0xa1,0x3d,0x56,0x12,0x69,0xa2,0x21,0x63,0x9f,0x03,},"\x88\xd8\x53\x8d\x31\x86\x78\x13\xd8\x8f\xef\x72\x28\xd4\x9a\x7e\x95\x0d\x73\x83\x96\xf1\x16\xdd\xa1\x02\x5f\x79\x13\x54\x7c\x5d\x1d\xc5\x67\x7a\x6d\xe4\xb4\xa5\x88\x05\x07\xb3\x61\x78\x0b\x61\xb4\x3f\x77\x95\x26\x3d\xb2\x2f\xf3\x41\x64\x5f\x2f\x59\x14\xfd\x60\x88\xc2\x81\x12\x11\xed\x47\x56\xac\x01\x9a\x60\x35\xd6\x6e\x31\x70\xc1\xd8\x2b\xfa\xa3\x05\x96\xb3\x96\xb3\x26\x0c\xc1\xd1\x0d\x41\x3d\xd4\x7e\xbe\x6d\xaa\x0c\x30\xdc\x42"}, +{{0x2b,0x4c,0xae,0x38,0x0e,0x95,0xce,0x69,0x4c,0x26,0xac,0x79,0x57,0x44,0x73,0x47,0xf9,0x8e,0x31,0xb4,0xbf,0x02,0xd7,0x44,0xe1,0x31,0x52,0x90,0x71,0xe2,0x30,0x1d,},{0xe6,0xfc,0x70,0x5a,0x79,0xc9,0x8e,0x11,0x5b,0x4e,0x28,0xd3,0xaa,0x15,0x06,0xb7,0x4e,0xe7,0x42,0x76,0xc5,0xfc,0x11,0x09,0xa7,0xf4,0xd8,0x9c,0x6f,0xaf,0xb8,0x89,},{0x55,0x5e,0x45,0x65,0x6b,0xa9,0xcf,0xbf,0x51,0x55,0xd0,0xe5,0x25,0x76,0xe5,0x19,0x7a,0xbb,0xbc,0x9d,0xd2,0x33,0x99,0x3e,0xec,0x2a,0x1e,0xe7,0xf6,0xa8,0x64,0x09,0xc0,0xb7,0x1b,0x0a,0x66,0x19,0x78,0xff,0x5e,0x0a,0xcd,0xc9,0x46,0x3d,0xc4,0x49,0x90,0x6f,0x47,0x4f,0x8e,0x79,0xbb,0x86,0x16,0x8b,0xf7,0x07,0x41,0xe3,0x4b,0x02,},"\xe0\xb8\x25\x0e\x27\xb7\xc0\x29\x1d\xbc\x47\xa6\xda\x6f\x12\x68\x98\x7a\xfd\xf0\xa1\xe9\x0b\xe6\x9b\xcb\xc4\x37\x08\x65\x21\x78\x30\xd5\x20\x86\x93\xbe\x7b\x70\x45\x09\x9a\x22\xea\x27\xf9\x52\xeb\x3f\x79\xa9\xa0\xf1\xb5\xa8\x7b\x19\x36\x77\x90\x78\x8d\x34\xc2\x19\xc2\xe2\xa6\xb8\x34\x02\x0f\xb4\xfd\x14\x9d\xc5\x6b\x54\x4f\xdd\xbb\x42\x07\x1a\x16\x2f\xc7\xcb\x33\xc1\x46\xca\xc0\x5a\x31\xb1\x83\xe9\xda\xad\xc6\x16\xf3\xaf\x44\x9b\x17"}, +{{0xb5,0x64,0x91,0xe5,0x49,0x99,0xbb,0x5a,0x17,0x15,0xeb,0xfa,0x2f,0xeb,0x14,0xa5,0x45,0xa3,0xa4,0x3c,0x2f,0xdf,0xd4,0xbe,0x0c,0x95,0xfc,0x11,0x81,0x9a,0xd6,0x95,},{0xcd,0x42,0xbf,0x41,0x4f,0x9b,0xfc,0x72,0xec,0x06,0x98,0x82,0xa8,0x00,0x55,0x7c,0xdf,0x31,0xbc,0x34,0x64,0xfb,0x10,0x2c,0x31,0x0e,0x6d,0xbd,0x3a,0xe2,0x08,0x63,},{0xe3,0xbe,0x3e,0x71,0xa8,0x98,0x52,0xdf,0x3c,0xff,0xd7,0x2d,0x68,0x20,0x78,0x69,0xdd,0x3e,0xce,0xb4,0x9b,0x1f,0x02,0x94,0x93,0xec,0xcb,0xb9,0x32,0x44,0x4e,0xbe,0x8c,0x8c,0x6d,0xb5,0xf0,0xa5,0xa6,0x7e,0x21,0x94,0x40,0x8d,0xf9,0x84,0x19,0x13,0xa5,0xac,0x1a,0x60,0x68,0x96,0x41,0x9a,0x66,0x8f,0x4f,0x47,0xc5,0x6c,0x2b,0x08,},"\xeb\x44\x18\xba\x30\x68\x3e\xc7\x95\x9b\xdb\x1e\xc7\xb2\x63\xf8\x3e\x81\xf0\x54\xdd\xcd\xbe\x0a\x67\x38\xca\x77\x63\xe2\x46\x93\x5b\xac\x41\x90\x26\xc2\x2b\xfb\xdd\x12\x36\x33\x6c\xc1\x61\x07\xc5\x35\x13\xe3\xdd\xf3\x4e\x12\x08\x46\x96\x2c\x3b\xdd\x54\xf5\xad\x57\x49\x59\x72\x08\xf1\x5a\x8b\xb5\x66\x67\xba\xa8\x95\xf0\x83\x40\xdb\x89\xb8\x5c\x43\x5e\x77\x09\x31\x92\x8d\x8a\xbc\x99\x26\x2f\x83\x9a\xed\xd9\xbe\x2a\xa1\x38\xc9\x25\x9a\xdf"}, +{{0x65,0x79,0xc2,0x47,0xdd,0x2c,0xd0,0x2b,0xa2,0xf7,0xd7,0xa9,0x50,0xa3,0x30,0x75,0x26,0x81,0xe9,0x2c,0x0d,0xc6,0x29,0x84,0xbb,0xea,0x27,0x9e,0xa5,0x21,0xc3,0x81,},{0x0b,0x08,0x7b,0xea,0x1a,0x1b,0x3d,0x15,0x80,0x5c,0xb6,0x04,0xf4,0xbb,0x8d,0x68,0xed,0xde,0x27,0x4f,0xaf,0x52,0x1f,0xe6,0xdf,0x50,0xc5,0x5f,0x8a,0xd4,0xa7,0x0d,},{0xec,0xca,0xf8,0x01,0xae,0x0a,0x91,0x2e,0x21,0xc6,0xb8,0x3a,0x5f,0x0e,0x4e,0x88,0xd4,0xb2,0x71,0x34,0x59,0xff,0x93,0x44,0x9f,0xc0,0xb2,0x1a,0x9f,0x41,0x60,0x50,0x11,0x3c,0xba,0xe4,0xe8,0x14,0xd2,0x0c,0x0a,0x79,0x8f,0x76,0xd2,0xf9,0xd3,0x26,0xed,0x83,0x95,0x9e,0xa0,0x2a,0xbd,0xc1,0xab,0x35,0x0a,0x46,0x71,0x23,0xf7,0x09,},"\xdf\x7c\x55\x2f\xfc\x89\x37\x4b\x95\x71\xa6\x02\x4a\x8d\x04\x71\xd7\xeb\x6b\xe8\xdf\xca\x6f\x41\x66\xb5\x81\xb6\x54\x79\x01\x5a\x05\x68\x12\x90\x74\xcc\x04\xd6\x34\x2c\x75\x8c\xa1\x8f\x79\x87\xde\xc5\x36\xb7\x03\x3d\x5f\x96\x81\x50\x43\x40\xe2\x09\x86\xf0\x27\xb8\xcf\x1f\x26\x3b\xe7\x6d\xb3\x52\x5d\x17\x34\x22\x95\x0e\xa8\xdc\xed\xdc\x58\x56\x40\x91\x8a\xa9\xd2\x5c\xa8\x9c\xba\x70\x1c\x20\x20\x15\x38\x73\xf4\x61\x08\xc7\x72\xcb\x38\x8d\x55"}, +{{0x18,0xfb,0xa6,0x0c,0x50,0x26,0xf3,0xc9,0xdd,0x7a,0xed,0xc0,0x42,0x09,0xd5,0x26,0x03,0x61,0xde,0x40,0x0e,0x19,0x0a,0xeb,0x60,0x16,0x9e,0x05,0xa3,0x36,0x7c,0x9f,},{0xdf,0xff,0x34,0x7f,0x3d,0xd2,0x55,0x53,0x0b,0xf7,0xfb,0x34,0xd0,0x2b,0xa4,0x86,0xd1,0x12,0xbb,0x46,0xe9,0x50,0xe2,0xef,0x80,0xe5,0x17,0x01,0x4c,0xc9,0x57,0x34,},{0x4b,0xc0,0x11,0xe4,0x0f,0x0f,0x59,0xc6,0x18,0xf6,0xbb,0xe2,0x30,0xb6,0xf7,0xbc,0x2f,0x50,0xe3,0x61,0x7c,0x7f,0xaa,0xb7,0xf4,0xc2,0x1c,0xb8,0x4f,0x77,0xeb,0xa9,0x94,0xcb,0x7c,0x2a,0x1b,0xf1,0x0b,0x01,0xbb,0x20,0x08,0x44,0x97,0xfd,0xf0,0xa6,0xab,0x5d,0x9b,0xcd,0x22,0xc4,0xa2,0xc5,0xa7,0x8f,0x79,0x92,0x68,0x25,0x94,0x0f,},"\x34\xf0\x8a\x80\x4d\x78\x29\xcc\x39\x14\xf0\x00\xce\x1a\x32\x88\xac\xce\x21\x49\xc8\xa0\x20\x86\xb9\xf6\x7a\xfc\xcd\x83\xa1\x78\xb0\xbc\xfd\x49\x70\xc0\x56\x99\x7d\xa7\xdc\x3d\x47\x56\x2f\x16\x66\x3c\xed\xc5\x2f\x82\xd7\x10\x85\x0c\xf4\x05\x03\x79\xef\xda\xc2\x3b\xee\x17\xc3\x30\xa3\x83\xad\x13\x7f\x78\x84\x73\xb2\xb0\x72\x36\x03\xb6\xde\xb1\xfd\xbf\x6c\x52\x3f\xc9\x48\xa0\xcc\xc4\xff\x10\x0f\xb9\x46\xd8\x74\xc1\xf9\x90\x43\x6a\xe8\xc4\xf3\xb2"}, +{{0x07,0x3c,0xc1,0x5b,0x05,0x36,0x28,0x59,0x33,0xb2,0xbe,0x39,0x25,0x3c,0xf4,0xfd,0x69,0x6b,0x81,0x61,0x0f,0x5d,0xd3,0xad,0xac,0x2e,0x9c,0xbf,0x33,0x8e,0xf2,0xf6,},{0x00,0xb5,0x51,0xd3,0x71,0x54,0x43,0x75,0xda,0xc5,0xc4,0xe9,0x6c,0xd1,0xf0,0x21,0x52,0x07,0xe8,0xe1,0x66,0xa1,0xfe,0x49,0xd5,0xb0,0xa5,0x1a,0xc1,0x84,0x43,0xec,},{0x3a,0xa5,0x2a,0x83,0x06,0x2a,0x8f,0x28,0xa5,0xd6,0xb7,0x60,0x7f,0x48,0x4b,0x66,0xcc,0x37,0x48,0x96,0xb7,0x66,0x12,0x31,0x26,0x33,0x3c,0x57,0x95,0x81,0x31,0x6c,0x74,0x28,0x06,0xf6,0x27,0xb5,0xbc,0x55,0xca,0xd7,0x05,0xcc,0x1d,0x47,0x82,0xb0,0x44,0x08,0x0c,0x8a,0xc8,0x40,0xf3,0x8c,0x0c,0x50,0xd3,0x5e,0x34,0x5c,0x78,0x03,},"\xc2\x85\x36\x2b\xc8\xef\x62\x8f\x7a\xed\xf6\x54\x23\x1e\xe5\x1a\xcd\xf2\xcf\x69\xa8\x86\xb9\x42\xbb\x9b\xfe\xd8\x15\x51\x05\xd9\x20\x9d\xed\x2a\xf2\x4f\x16\x9a\xd5\xfc\xd4\x51\x37\x0f\x58\x27\xa8\x51\x11\xc7\xa5\x2e\x03\x2c\x50\x38\x61\x7c\x0c\x01\x70\xe2\xa6\xc2\x31\xdc\x40\x1d\x12\x06\x2e\xdb\x18\x60\x36\x11\x4e\x38\x79\x3b\x79\x08\x90\x77\x58\x1b\x97\x83\xf4\x00\x07\x10\x3e\xf1\x74\x72\x49\x1c\x00\xe7\x13\x8a\xec\xc5\x08\x4d\x3c\x85\x01\x04\x70"}, +{{0xfd,0x89,0x4a,0x1e,0x82,0x32,0x20,0x3b,0x28,0x95,0x05,0xd5,0xc6,0x8c,0x68,0x79,0x1f,0xfc,0x0e,0x54,0xf2,0xa8,0x75,0x30,0xfb,0xba,0x5b,0x3a,0x3f,0x2c,0xaf,0x00,},{0xe9,0x5a,0xb5,0x65,0x94,0x5c,0x7a,0xe5,0xd5,0x33,0xdf,0x5d,0x0c,0xcc,0xc7,0xe9,0xab,0xbc,0x83,0x8e,0x20,0xa0,0xb6,0x1c,0x93,0x0f,0x5d,0x41,0xd8,0x1a,0x6f,0xe7,},{0xf5,0x11,0x02,0x21,0x9e,0x88,0x04,0xbe,0x71,0x3e,0x55,0x6d,0xf4,0xe4,0xaf,0xa2,0xf8,0x86,0x6f,0xe8,0x65,0x41,0xa1,0xc2,0xa0,0x93,0x4d,0x24,0xc3,0xc9,0xbe,0xb2,0x80,0xa7,0x0d,0xd8,0xd5,0x27,0xfe,0x8b,0x7e,0x0b,0x94,0x82,0x14,0xd5,0xf2,0xf9,0x63,0x86,0x19,0x91,0x4b,0x72,0xd5,0x5d,0xc1,0x98,0xb0,0x22,0x9a,0x84,0x87,0x08,},"\x26\x69\x62\x4a\x94\xf2\xc4\x4a\x05\xb7\xdc\x3e\xbf\x93\xe5\x8a\x4b\xf3\xa0\x1c\x27\x36\x57\xe7\xe7\x87\x89\x76\xf6\xb6\xea\x73\x7f\xa3\xf2\x2c\xc8\x36\x5b\x8b\x22\x0c\x00\x7d\x5b\x64\x27\x26\xa4\x08\xfe\x2f\xab\x69\xeb\xb3\xbd\x07\x2b\x34\x9f\x4d\xc3\x37\x7e\xe7\xcc\x75\x29\x34\x25\x42\x15\xd2\x39\x89\xbd\x3c\xd0\x2c\xe9\x99\xad\xec\x97\x84\x99\x3f\x4c\x19\x94\x08\x15\xf3\x9c\x9e\x22\x92\x47\xf5\x20\x5c\x36\xcb\xa4\x4e\x71\x42\x66\x36\x92\x89\xb4\xa7"}, +{{0x18,0xef,0x46,0x4e,0x28,0xf8,0x7f,0xfc,0xfa,0x4d,0x3a,0x9c,0x09,0xa2,0x29,0x10,0x95,0x1b,0x8c,0x71,0x9f,0xda,0xcd,0xb5,0x6d,0xe6,0x2c,0x4b,0x40,0x6d,0xf0,0x0c,},{0xc5,0x06,0x4c,0x9d,0x43,0xee,0x2d,0xa7,0x5b,0x06,0xbb,0x09,0xc7,0x72,0x67,0xdb,0xd0,0xd3,0x91,0x28,0xf1,0xcd,0xc6,0xbf,0xa4,0x51,0xa0,0x3e,0x93,0xaf,0x4a,0x70,},{0xd1,0xe7,0xf1,0x6e,0x8e,0x59,0x7d,0x42,0x8a,0xde,0xa6,0x55,0x91,0xd5,0x51,0xb5,0x4b,0x66,0x7a,0xff,0x20,0x20,0xc4,0x64,0xf7,0xf4,0xe5,0x3c,0x47,0x73,0xf7,0x04,0x33,0x24,0x9a,0x3c,0x71,0xb4,0xd1,0x1c,0x89,0xc3,0xfa,0xa8,0x92,0x80,0x92,0x27,0xb9,0xf2,0x9e,0xf4,0xf7,0xf5,0xd0,0x20,0xd4,0x67,0x4d,0x40,0x21,0x35,0x94,0x05,},"\x9c\x82\x57\x07\xd9\x35\x83\x65\xab\x9d\x38\xf7\xe7\x28\xd6\x28\xaa\x72\x2a\x4f\x1a\x20\xa3\x8e\x47\xc9\x99\xff\xf8\xfc\x32\x41\x7f\xbe\x07\x2f\x96\xeb\x6a\x0e\x11\xe4\xda\x9b\x6d\xe9\x61\x54\x45\x28\x0e\x93\xc7\x7a\x36\x34\xd3\xd2\xc6\x87\x98\x56\xc2\x48\xf9\x80\x0f\x60\xa0\xd3\x8d\xc1\xce\xa8\xb7\xf3\x1f\x28\x6c\xb0\x37\x48\x27\xb4\xc6\xba\x14\x4a\x66\x94\xf2\xb9\x08\xea\xd6\x8d\x18\x34\x01\x24\xcb\x59\xcf\x17\x01\x86\x3b\xd4\xf3\xef\xc7\x09\xf3\x62\x7a"}, +{{0xc9,0x11,0xbd,0xf2,0xf9,0xe7,0xcc,0x5f,0xff,0x35,0xc9,0x6e,0x15,0xcc,0x12,0xea,0xfd,0x05,0xab,0x0d,0xb3,0x1f,0x64,0x9f,0x74,0x08,0xac,0xd0,0xca,0xda,0x76,0xe0,},{0xde,0x44,0x69,0x6c,0xd6,0xbd,0x2c,0xbe,0x9b,0x11,0xa0,0xef,0x18,0xb8,0x81,0x64,0x80,0x1a,0x96,0x9d,0x5e,0x06,0xed,0x45,0x3e,0xb4,0x00,0x8c,0xce,0x9a,0x57,0x25,},{0xd5,0x84,0xb5,0xda,0x37,0x1a,0xe4,0xf5,0xc9,0x85,0x9b,0x25,0xf7,0x0d,0xc5,0x6c,0x1b,0x7b,0x4e,0x02,0xd1,0xae,0x66,0x36,0x28,0x3b,0x1b,0x7b,0x11,0x21,0x7a,0xfd,0xcd,0xf6,0x5d,0x1b,0x49,0xca,0x2c,0x8e,0xf1,0x79,0x66,0xe9,0xbc,0x65,0xf1,0x0c,0x31,0x0b,0x77,0xbb,0x5d,0xf7,0xaf,0xf5,0xec,0x1b,0x37,0x9a,0x2c,0xe5,0x5d,0x0d,},"\x76\xc4\x71\x24\x1d\x17\x19\x29\x84\xb0\x03\x62\x69\x6e\x4d\x9d\x4d\x2b\x7f\x83\x9c\x20\x64\x11\x7e\x50\xa1\x59\x8f\x3a\x11\x72\xb1\x6c\x55\xe5\x39\x68\x66\x08\x47\x52\x02\x4f\x3a\x7e\xb6\x8b\xb3\xff\xdb\x80\x97\x9a\x0a\xf6\xd0\xf6\xaf\x26\xb6\xf0\xbc\x0c\x03\x84\x43\x3b\xcf\xd4\x4c\x75\xeb\x65\x4a\x8a\x82\x25\xcb\x9c\x4a\x7f\xb3\xc8\x24\xc3\xaf\x61\x25\xfd\x46\xdb\x28\x7e\x70\x49\x2d\x15\x46\x32\xcb\x8f\x62\x43\x26\x59\xd9\x58\xd6\x28\x1d\x04\xa5\x4f\x5f\x5f"}, +{{0xd3,0x70,0x32,0x99,0xc4,0x1d,0xb3,0x6d,0x77,0xdd,0x3a,0x49,0x54,0x1f,0x3f,0xb2,0x1d,0x0b,0x2b,0xad,0x1f,0x6e,0x07,0x4a,0xff,0xd9,0x6f,0x1c,0x40,0xd0,0xf9,0x27,},{0x86,0x2c,0x5e,0xf6,0x16,0xa5,0xf0,0x66,0xfd,0x87,0x75,0x8a,0x56,0xab,0x45,0x05,0x6f,0xea,0x4b,0xd3,0x3f,0x00,0x8b,0xe2,0x4f,0x7b,0x54,0x0e,0x09,0x5e,0x14,0x8e,},{0xdf,0x28,0x27,0x71,0x21,0xea,0xc4,0x46,0x30,0x08,0x4c,0xce,0x75,0x91,0x7a,0xe9,0xf6,0xbe,0xc6,0x5a,0xf5,0x57,0x2d,0xc3,0x07,0x19,0xbd,0xe6,0x61,0xcf,0x69,0x6b,0x85,0xb8,0x67,0x2d,0xd4,0x98,0x3c,0xab,0x30,0xbd,0x05,0xcc,0x3a,0x11,0x9d,0x7d,0xb9,0xba,0xbd,0x52,0x2d,0x7b,0x3a,0x6b,0xcf,0x38,0x86,0xec,0xd2,0x5e,0x08,0x0f,},"\xac\x92\xed\xbe\x22\x25\x7b\xb0\x6d\x94\xaa\x95\x0e\x62\xd1\x8c\xa2\xac\x0a\x8f\xc1\x06\x00\x0d\x22\x31\xf8\xa1\x3b\x8d\x7a\x20\x9c\xcd\x8c\xc4\x9a\x6c\xd6\x8a\x7f\x36\xc0\x2f\xb8\xf7\x28\xd1\x55\x95\x16\x7f\x0b\xa8\xcf\xe9\x5c\x8a\x1e\x43\x5f\x32\x75\x13\x01\x4a\xc4\x28\xb7\x5d\x4f\x72\xe7\xc8\x34\xdd\x70\xe1\xa4\x48\xf1\x84\x7d\x34\x98\x47\x5f\x74\xe3\xd9\x33\x4d\xc7\xdc\xc4\xfe\xd7\x2b\xf6\xc7\xfe\x3b\x1d\x4f\x53\xd4\x29\x61\x6f\x1d\xf4\x4f\x19\x73\x31\x58\xb6"}, +{{0xd4,0x11,0xcd,0x33,0x57,0x6d,0x0e,0xfe,0x9e,0xc4,0x13,0xcc,0xda,0xab,0xd4,0xfc,0xba,0xfe,0xc0,0x1a,0x3a,0xf4,0xb3,0xcb,0xe3,0x4f,0x8b,0x05,0xef,0x8b,0x59,0xba,},{0xe8,0x70,0x34,0x4d,0xf9,0x8d,0xd3,0xa8,0x70,0x2c,0x45,0x19,0xbf,0x9e,0x8b,0x35,0xa9,0xd1,0x89,0xe7,0x46,0xf7,0x20,0x3d,0xbb,0xf9,0xbb,0xfa,0xb2,0x2d,0x6f,0x63,},{0x83,0x46,0x0d,0x15,0x46,0x1d,0x67,0x17,0x71,0x0b,0xaf,0xd6,0xa4,0x7a,0x1e,0xaa,0x90,0x0a,0x80,0xf2,0xbf,0x8b,0x8a,0xae,0x24,0x68,0x77,0x36,0x14,0xee,0x84,0xbd,0x62,0x8c,0x97,0x17,0x47,0x63,0x68,0xef,0x36,0x40,0xcf,0x76,0x0a,0xca,0xc8,0x3a,0xd6,0x02,0x32,0xa7,0x69,0x63,0xb7,0xd5,0x25,0x88,0xb1,0x1d,0xc0,0x04,0xd7,0x0d,},"\x11\xd2\xc2\xa7\xf0\x19\x09\x88\x12\x66\x96\x43\x1b\x4b\xbc\xd9\x0a\xb7\xb5\x6a\x32\xda\x64\x04\xae\x44\x6a\xa7\x62\xa4\xdd\xc6\x60\x94\x97\x15\x38\xee\xb8\x5b\xde\x04\x70\xa5\x10\xbe\x0d\x6d\x85\x78\x0e\xe7\x30\xa9\x85\x41\x38\x72\x8a\xe6\x81\x61\x62\x26\x8d\xa8\x52\x85\x8e\xae\xd4\xec\x74\xc7\xac\x62\xe6\xe7\x09\x6d\xc0\x02\xdf\x0b\xdf\x5f\xa4\x0d\xa5\x65\xb4\x1d\x18\x1a\x3f\x0a\xd0\xc5\xe0\xb9\x76\x74\x3e\x31\x5d\x9d\xb8\xed\x41\x60\xab\xe6\x9c\x13\xa2\xb3\xf0\x9a"}, +{{0xe1,0x0a,0x2f,0x13,0x80,0xc3,0xe4,0x72,0x0e,0x8a,0x87,0x07,0xa9,0xbc,0xb2,0x5a,0x0f,0x58,0x27,0x0d,0x70,0x59,0xcd,0x76,0x26,0xc7,0x15,0x34,0x47,0xed,0xfb,0x87,},{0xa3,0xc7,0x17,0xac,0xab,0x36,0x6a,0x40,0xb5,0x11,0x87,0xbb,0xf3,0x5b,0x2d,0x15,0xe9,0x7c,0xfe,0xac,0xd7,0x34,0x9c,0x06,0xef,0x1c,0x91,0xac,0x93,0xe9,0x06,0x56,},{0x09,0x4b,0xf6,0xf9,0x53,0xca,0x0e,0xb7,0x7d,0xf4,0x51,0x29,0xb7,0xbf,0x10,0xd1,0x92,0xcf,0x6d,0xde,0xae,0x94,0xad,0x62,0x02,0xb8,0xea,0xcf,0xbe,0xc1,0x19,0xe5,0x29,0x15,0x78,0xfe,0x64,0xa0,0x84,0xae,0x60,0x0f,0xe0,0x7e,0xfd,0xb8,0xa7,0x82,0x61,0x0d,0xbd,0xb0,0xb4,0x9e,0xb5,0xf2,0xa4,0x6c,0x43,0x23,0x55,0x55,0x2f,0x01,},"\x13\x52\x12\xa9\xcf\x00\xd0\xa0\x52\x20\xbe\x73\x23\xbf\xa4\xa5\xba\x7f\xc5\x46\x55\x14\x00\x77\x02\x12\x1a\x9c\x92\xe4\x6b\xd4\x73\x06\x2f\x00\x84\x1a\xf8\x3c\xb7\xbc\x4b\x2c\xd5\x8d\xc4\xd5\xb1\x51\x24\x4c\xc8\x29\x3e\x79\x57\x96\x83\x5e\xd3\x68\x22\xc6\xe0\x98\x93\xec\x99\x1b\x38\xad\xa4\xb2\x1a\x06\xe6\x91\xaf\xa8\x87\xdb\x4e\x9d\x7b\x1d\x2a\xfc\x65\xba\x8d\x2f\x5e\x69\x26\xff\x53\xd2\xd4\x4d\x55\xfa\x09\x5f\x3f\xad\x62\x54\x5c\x71\x4f\x0f\x3f\x59\xe4\xbf\xe9\x1a\xf8"}, +{{0xb2,0xe6,0x97,0xb3,0xd3,0xef,0xec,0x97,0x6e,0xf3,0x36,0x95,0x30,0xc7,0x92,0x71,0x7b,0xdb,0xb4,0x28,0xd9,0xed,0x0c,0x11,0xec,0x0e,0xa9,0xb2,0xe5,0xf3,0x9f,0x82,},{0xc4,0xd2,0xe4,0xb3,0xc2,0x36,0xd6,0xc9,0xb8,0xc7,0x4f,0xa3,0x84,0x61,0x2c,0x47,0x10,0xd8,0x3a,0xa1,0x6a,0xd7,0xef,0x01,0xfb,0xb7,0x42,0x1d,0x4f,0xb3,0xf0,0xf6,},{0x50,0x47,0xfa,0x38,0x19,0x7b,0x83,0x28,0xe7,0x8d,0xd8,0xa1,0x0e,0x96,0x6a,0xfb,0x7b,0xd3,0xd4,0x36,0x08,0x28,0x0f,0x1c,0x25,0x7d,0x25,0xca,0x43,0xbc,0x1c,0x06,0xe9,0x4a,0x57,0x47,0xab,0x62,0x15,0xec,0xe5,0x4c,0xde,0xff,0x8c,0x56,0x56,0x7d,0x70,0xd2,0xf9,0x1f,0x9e,0xc8,0xc2,0x60,0xaa,0x10,0x80,0xa6,0xab,0x5a,0x7a,0x02,},"\x7b\x43\x62\x32\xac\x21\x11\xa8\x40\x59\x51\x0c\x48\x36\x25\x88\xfc\xb7\x38\x34\x26\xbe\x5e\x6f\x62\xf3\x72\xe4\xf7\xcc\xa8\x3c\x81\xc2\x35\x7f\x9b\x54\xf4\xa1\x52\x91\x06\x5b\x6d\x41\xaa\xd1\xea\x93\xcf\xfa\x77\x6b\x9a\xca\xa5\x8a\xfe\x2b\x51\x64\x4b\x97\xaf\x9a\x3e\x53\xf8\x4e\x40\xaa\x6d\x86\x05\x1e\x69\x14\xcd\x03\x9d\x41\x70\xa9\xa5\x26\xdd\x69\x95\x5f\xf5\x07\xc3\x3f\x74\xe2\x17\x65\x91\xfb\x0b\x3c\xd7\xf0\x0e\xe4\x18\xf2\xc2\x58\xa9\x98\x1c\xcc\xee\x72\xf0\x1c\x84\x30"}, +{{0x19,0xa6,0x79,0xa7,0xa9,0x05,0xa1,0xe2,0xb3,0x03,0x8e,0x6e,0x41,0x8b,0x3d,0xa9,0x7c,0x30,0x89,0xc7,0xcd,0x35,0x1e,0xa0,0x7b,0xc8,0xd1,0xaf,0x64,0xea,0xcc,0x46,},{0x19,0xf0,0x83,0x61,0xf4,0x69,0xb4,0xae,0x1e,0x0c,0xeb,0x94,0xf4,0x7a,0x7d,0xe7,0x31,0x74,0x10,0xa9,0x2d,0xd0,0x13,0xb1,0x6a,0xe0,0xd0,0x53,0x2f,0xa4,0xb3,0xef,},{0x43,0x47,0xb7,0xb4,0xf7,0xc3,0xc4,0xdd,0x31,0x5b,0x83,0x84,0xa0,0xb0,0xca,0xee,0xd8,0x4b,0xda,0xbe,0x24,0xb2,0x91,0x5f,0x12,0x51,0x2d,0xfd,0x04,0x77,0x0f,0xc9,0x96,0xa1,0xbf,0xb7,0x29,0xaf,0xef,0x9e,0xdd,0x61,0x14,0x47,0x08,0x1a,0x53,0x30,0x61,0x7e,0xae,0xa1,0xc1,0xda,0xb1,0xbf,0x13,0xce,0xa8,0x99,0x72,0x04,0x91,0x0c,},"\x98\x0c\x7b\x4d\x29\x39\x06\x1a\xc7\xb9\xba\x44\x11\x17\xa1\x94\x85\x66\x17\x81\xa4\x08\x30\x67\xc5\x5a\xcf\x93\x02\x6c\x08\x2a\x93\xcc\x12\x4f\x09\x5e\x1b\x4f\x2c\x3f\x6c\x13\x54\x12\xa5\x09\x62\x28\xe8\xa0\x71\xe8\xb4\xb6\x68\xba\x9d\x96\x44\xea\x9f\x4d\xab\xfc\x54\xa9\x85\x6c\x3e\x96\x5e\x63\x63\x39\x5a\xb7\x09\x03\x7d\xda\x22\x9b\xaf\x92\x7c\xd0\x1f\x9a\xf5\xe0\x39\xaf\xc4\x2f\x3c\xec\x63\x4f\x5d\x83\x2d\x2a\xb7\xc7\xca\xd3\xad\x7b\x8c\xf2\x7e\xbd\xac\x69\x84\x31\xad\x82\x36"}, +{{0xf0,0x3b,0x83,0x63,0xee,0x5b,0x0e,0xef,0x70,0x18,0xa4,0x9b,0xc0,0x2a,0xdf,0x73,0x1d,0xa5,0x4e,0xe5,0x0a,0x7f,0x03,0xb8,0x8a,0x29,0xa2,0x08,0x2b,0x18,0x9c,0x43,},{0x31,0x28,0x7e,0xf5,0xa2,0xe6,0x41,0x04,0xab,0x77,0x90,0xb3,0x12,0xf3,0x5c,0x7a,0xd4,0xaf,0x6b,0xeb,0x0d,0x7c,0xeb,0x8a,0x58,0xf3,0x6a,0x54,0xce,0x27,0x2c,0x3e,},{0xe8,0xfa,0x96,0x7e,0x6a,0xfa,0xdf,0x6a,0x87,0x7d,0x87,0xe5,0xf5,0xc5,0x2b,0xb6,0x34,0xb7,0x5a,0x78,0x04,0x19,0x9a,0x2b,0xc9,0xd0,0x27,0xb6,0x3a,0x35,0x65,0x4d,0x9d,0xdd,0x06,0x83,0x04,0x55,0x64,0x1d,0xbf,0xb4,0x9e,0xdc,0xe4,0x2e,0x20,0xe7,0xd4,0x10,0x4a,0x07,0x1c,0x2c,0xbb,0xec,0x23,0x01,0x8c,0x29,0x7c,0xed,0x99,0x08,},"\x24\x19\x1b\x54\x64\xb3\x5a\xc7\xbc\xf4\xa3\x75\xf0\x33\xef\xba\x89\x43\xb0\x9b\x9f\xf0\xfc\x40\x3c\xa7\xaa\xe7\x02\xa3\xcb\xf3\x96\xc5\x13\x1b\xc0\x08\x13\x2c\xf5\xf1\x29\x10\xd5\x86\xdc\x1d\xb9\xc0\x84\x57\x4a\x96\xba\xbe\xe9\x56\x42\xf9\x22\x37\x1c\x03\x82\xec\x04\x02\xa2\x6f\xeb\x14\x2e\x41\x46\xbb\xd3\x36\x0c\x2b\x36\x83\x4f\xe4\x5a\xf5\xe2\x86\x8d\x4d\x56\xfd\xd5\x04\xce\xbf\x0c\x2d\x7f\x57\x91\xb4\x42\x94\x17\xc8\xb6\x5a\x98\xe0\xb1\x5c\x46\x6c\x13\x7f\x41\x05\x24\xfc\xe7\x37"}, +{{0x11,0x08,0x6b,0x0d,0x11,0xe4,0x15,0xab,0x1c,0xe0,0x2a,0xaf,0x8f,0x06,0x21,0xb5,0x44,0x30,0xf6,0xfb,0x13,0x5c,0x74,0xf4,0x0d,0x38,0xe8,0xc6,0x47,0x37,0x06,0x4b,},{0x71,0x66,0xdf,0xbc,0x69,0x1e,0xb8,0xc2,0x01,0x11,0x4b,0xa0,0xd1,0xa2,0xc7,0xb8,0x7f,0x7a,0x1f,0xd8,0xd0,0xb3,0x60,0x58,0xb0,0xd7,0xdc,0xab,0xe1,0xae,0x30,0xda,},{0xe9,0x07,0x45,0x9d,0x5a,0xdc,0xd0,0xd0,0xc3,0x64,0x18,0x58,0x1f,0x19,0xd0,0xee,0xbd,0xa7,0x13,0x8e,0xbd,0x9f,0xaa,0x0b,0x26,0x22,0x01,0xf4,0x58,0xc8,0x56,0x31,0x0b,0xb7,0x7f,0x4c,0x7d,0xe9,0x22,0x49,0x5d,0xcf,0xe8,0xb2,0x48,0xed,0xa2,0xad,0x0d,0xf6,0xa7,0x3f,0x47,0xbb,0xfb,0x89,0x4b,0xaa,0x7d,0x88,0x69,0x87,0x58,0x02,},"\x4b\x5b\x29\x36\xc5\xe3\x60\xa3\x84\x55\x50\x37\x21\x07\x8f\x8a\xdb\x40\x4a\x7e\xe7\xec\xc1\x48\x01\xdc\x87\xa6\x7a\x15\x2b\x76\x95\x69\xfb\xea\xc0\xaf\xa2\x5a\x20\x70\xa1\x68\x6b\x90\x0a\xc1\x63\x3d\x49\x98\x08\xcd\xb2\xe8\x1c\xe3\x91\x6d\x5a\x3c\x04\xd1\x9c\x5b\xb2\x69\x9a\x66\x2b\x8a\xba\x4a\xf9\x4d\x39\x0b\xac\x7c\xcc\x8e\xc9\x10\xed\x2a\xcd\xf8\x6e\xbb\x71\xad\xb6\x01\x87\x78\x85\xee\xf3\xc9\x16\x62\xfc\x30\x73\x8e\x35\x2c\xc7\x43\x53\xcc\xf8\xd8\xed\xee\xfa\xcc\x04\x2c\x10\xa0\xe5"}, +{{0xef,0xce,0x76,0x67,0xa8,0xef,0x91,0x22,0x8c,0xae,0xd1,0x4e,0xb4,0x77,0xa3,0x45,0xe5,0xe8,0x23,0x92,0x34,0x08,0x08,0x48,0x76,0x0e,0xd0,0x97,0x07,0x13,0xfa,0x86,},{0x91,0x93,0x05,0x5a,0x84,0xdf,0x1e,0xac,0xca,0x28,0xce,0x2a,0x08,0xc2,0xa0,0x7a,0x50,0xf0,0x4c,0x02,0x4e,0xcf,0x1f,0xe4,0xa4,0x7d,0x2e,0xfb,0xaf,0x63,0xed,0x58,},{0xe5,0xa6,0x31,0x24,0xdb,0x16,0x96,0xb6,0x41,0x40,0xb6,0xe9,0x61,0x2f,0xa9,0x58,0x7b,0x3e,0xef,0x71,0x01,0x09,0x39,0x8d,0x44,0xba,0x0c,0xa6,0x3c,0x0e,0xba,0xd0,0x6f,0x0a,0x6c,0x89,0x94,0xea,0x34,0xb3,0xa2,0xaf,0x91,0xa8,0x9b,0xf4,0x1a,0xe6,0x14,0xd7,0x72,0x7d,0x71,0x6f,0xd4,0x2f,0x8b,0x92,0xe1,0xac,0x64,0xfd,0xbf,0x03,},"\xaa\x1b\xc8\x0d\x7b\xcc\x1d\x94\xa2\x3a\x57\xce\xdf\x50\x27\x48\x24\x77\xdc\x46\xb8\x68\x90\xbc\x0e\x5a\xc2\x9a\xe6\xc9\x1b\xbc\x43\x13\x03\x48\x79\x73\x05\xf7\x55\x43\x58\x0a\x8a\x06\x9b\x34\x8a\x7b\xd8\xfc\x3e\x01\x52\x30\xb7\xc1\x94\x0c\x7f\x80\xa8\x2b\x12\x90\x09\x10\xdb\xcf\x06\x30\xda\x03\xf0\x81\xd4\x4c\x7f\x95\x5d\x4a\x11\x72\xf5\x6e\xcc\x7c\x5a\xc6\x46\x69\x6b\xff\xdf\x4e\xb6\xd8\x8b\xdd\x9c\xc3\x84\x35\x28\xb7\x25\x83\xab\xb3\xba\xd0\x2e\x56\xef\x76\x46\xee\xd5\x13\x95\x51\xcd\xeb"}, +{{0x88,0xfc,0xca,0xa9,0x6a,0xd8,0x84,0xd1,0x16,0x5b,0xe7,0x1d,0xd0,0xc4,0xf5,0xf8,0xf4,0x42,0x1c,0x60,0xfb,0xfa,0x49,0x8b,0xfe,0xe9,0xb9,0x67,0x46,0x24,0x43,0xbd,},{0xc7,0x5c,0xb0,0xe0,0x23,0x7b,0x45,0xb8,0x65,0x6e,0xea,0x9f,0x3d,0x1a,0x9d,0x4a,0xcd,0x01,0xa1,0x03,0xaa,0x26,0x9b,0xb2,0x4f,0xd5,0x41,0x22,0xfd,0x81,0xf2,0xac,},{0x27,0xd3,0xa1,0x97,0xcc,0x99,0x94,0x21,0x20,0x63,0xbc,0xe8,0xd7,0x99,0xe7,0x7b,0x68,0x53,0xb7,0x35,0x5e,0xbe,0x36,0x9b,0xcf,0x18,0x89,0xa4,0x18,0xa8,0x2c,0xaa,0x3a,0x79,0x87,0xa6,0x63,0xf6,0x21,0xde,0xfe,0x86,0xb3,0xac,0x4a,0xd4,0x4f,0xae,0xed,0x16,0xc9,0x11,0x6a,0xce,0x28,0xfc,0xcf,0x91,0x55,0x57,0xfa,0x77,0x99,0x03,},"\x9d\x0e\xac\x98\x55\x6b\xfa\x86\x72\xc3\x57\x05\xd1\xd6\x1a\xc4\xd0\xfc\xa1\x9d\xc0\xd9\x93\x01\x58\x77\x85\x7d\x27\xfd\x80\xf7\x4a\xca\xce\x66\x6c\x56\x34\x85\xd8\x1e\x53\x60\x3a\x6a\xef\x40\x87\x5f\xa5\x51\xcc\x10\x5f\x2c\xc1\x0b\x39\x69\x46\x79\xcd\xf4\xa6\xb0\x73\xbc\x88\x64\x5f\xc5\x1a\x36\xda\x17\x9d\x3d\x1e\x3c\x77\x22\x45\x4c\x5e\x73\x57\x7c\x61\xaa\x7d\x14\x8c\x4b\xa5\x0e\xa4\x6c\x56\xa1\xc3\xb3\xb3\xc4\x70\xf9\x31\x00\x49\x4e\x08\xbc\x55\x14\xac\x76\x3a\x85\x48\x3c\x42\xc7\xcd\xc2\x7c"}, +{{0x67,0x0b,0x30,0x62,0x6f,0xe3,0x67,0xd8,0xb4,0x5f,0x43,0x73,0x3d,0x6f,0x25,0xb3,0x7e,0xcc,0xbc,0xb5,0x51,0x96,0x3f,0x0a,0xc8,0xb6,0x66,0xb4,0x80,0x41,0xc7,0x2d,},{0x65,0xaa,0x4c,0x6d,0x4b,0xa0,0xab,0x34,0xbc,0x75,0xb3,0x9f,0x09,0x52,0x7c,0xa6,0xf2,0x42,0x5f,0x52,0x41,0x5c,0xdf,0xfd,0xf2,0xdf,0xf2,0x73,0xf8,0xea,0x61,0x2c,},{0x1b,0x6b,0x43,0x77,0xd2,0xb9,0x8e,0x0f,0x9d,0x24,0xae,0x8d,0xfe,0x30,0xe2,0x39,0x6e,0x20,0x04,0x38,0x0d,0x34,0x31,0x48,0x8e,0x58,0x43,0xcf,0x8d,0x2d,0x7a,0x00,0x70,0xab,0x21,0xf8,0xa3,0xb5,0x1c,0xe8,0x4d,0x2f,0x4b,0xa2,0x09,0xf7,0x39,0xf9,0x22,0xbe,0xbf,0x79,0x80,0x96,0x69,0x3f,0x56,0x22,0x87,0x3d,0x79,0xae,0x6f,0x04,},"\xd0\x0b\xcc\xa7\xe1\x84\xd1\x0e\x1f\x1f\xe4\x20\xb5\x06\x39\xe1\xd5\xde\xba\x52\xa7\x51\x23\x6e\x68\xc5\x9b\xb4\xbf\xf9\x80\x2f\x5f\xc1\x65\xed\x42\xfd\x6d\x53\x46\x70\xa7\xc6\xfb\x60\xe4\x30\x7d\x94\x79\x15\xa2\x48\xbf\x2f\x93\x46\x5c\x2c\xb4\x4d\x8f\x45\x3d\x2c\x01\x5a\xfb\xc8\xed\x58\x81\x8e\xa5\x17\x26\xa2\x51\x77\x93\x0e\x9e\xa1\x92\xef\x45\x14\xf4\xbb\x0e\xb4\xe0\xf5\xd4\xae\x3c\x46\xe3\x57\xc8\x11\x87\xf7\xed\x17\x47\x33\xff\xf9\x59\xc3\xf9\xfa\xe6\x48\x6c\xfa\x13\x56\xa9\x56\x99\x21\x1d\xe5"}, +{{0x81,0x3c,0x4d,0xae,0xd6,0x7a,0x19,0x0d,0x68,0xbb,0x63,0x5d,0x73,0xaf,0x6d,0xa7,0x4f,0x32,0xfd,0xf7,0xc4,0x8c,0xca,0x6e,0x59,0x26,0x29,0x46,0xb8,0xe8,0xc7,0x1f,},{0xa2,0x09,0x54,0x57,0xd7,0x69,0x70,0x20,0xe2,0xb8,0x84,0xd9,0x5a,0x96,0x57,0x8c,0x2a,0x90,0x0a,0x76,0x66,0xac,0x0d,0xc7,0xbd,0x38,0xf1,0x93,0x1d,0x79,0x45,0xd8,},{0xb4,0x46,0x57,0x4f,0xf6,0xa4,0xbd,0x2b,0x57,0x2e,0x48,0x7c,0x4a,0xb4,0x43,0xca,0x64,0x10,0x75,0x16,0x8a,0xa4,0xe1,0x09,0x2f,0x71,0xf3,0x0b,0xdb,0x06,0x8c,0xe4,0x6a,0x39,0x5e,0xfe,0xe1,0xee,0x66,0x0b,0x9f,0xac,0x26,0xd5,0x41,0x09,0x72,0x2c,0x15,0xcd,0xb7,0x91,0xbf,0xb8,0x7f,0xff,0x63,0xc6,0x59,0x6a,0xd4,0xf2,0x27,0x0c,},"\xce\x54\xcb\x04\x50\xe6\x89\xa0\xdb\xef\x78\x53\x08\xb3\x17\x74\x72\xfc\xd6\xd3\x82\x03\xe5\x8a\x05\x90\xb3\x1f\xa2\x53\xf9\xea\x59\x0b\xe5\x36\x8a\x92\x2d\xe8\x8b\x63\x45\x01\x02\x68\x44\x43\xfb\x81\x89\xe6\x01\x28\x20\x03\x32\x3b\x89\xc8\x1e\x92\xea\xef\x2b\x5d\xdc\x4a\x55\xc5\x3f\xa3\xcf\xad\x41\x60\x24\x8b\x3c\x28\x6f\xf8\x0d\x31\xd1\x61\xb7\xb8\xde\xe7\x13\x55\x2b\x56\xf1\x50\x7f\xb7\x2e\xad\xfa\x89\x05\x4e\x9d\x16\x00\xac\x87\x4c\x4b\x0a\x96\x10\x04\xeb\x6d\x0d\x4b\xfd\x2e\xcb\x9c\x73\x4f\x00\xba"}, +{{0x84,0x00,0x96,0x2b,0xb7,0x69,0xf6,0x38,0x68,0xca,0xe5,0xa3,0xfe,0xc8,0xdb,0x6a,0x9c,0x8d,0x3f,0x1c,0x84,0x6c,0x8d,0xce,0xeb,0x64,0x2b,0x69,0x46,0xef,0xa8,0xe3,},{0x98,0xbe,0x21,0x00,0x19,0x93,0xa7,0xeb,0x1a,0x12,0x77,0xff,0x74,0xc1,0x55,0x04,0x18,0x3d,0x25,0xfd,0xfc,0xc0,0x5f,0x0d,0x4d,0xea,0x89,0x2f,0x6e,0x30,0x18,0x90,},{0x0a,0xd7,0x1b,0x00,0x25,0xf3,0xd9,0xa5,0x0d,0xb3,0x38,0x41,0x4d,0x6d,0x67,0x0e,0x77,0x99,0xb7,0x27,0x0a,0x84,0x44,0xf6,0xae,0x7f,0x12,0xae,0x7e,0xb7,0x1b,0xd0,0x3f,0xfd,0x3c,0x4f,0x36,0x63,0x1f,0x69,0xfd,0xcc,0x40,0x61,0x46,0x8f,0xf5,0x82,0xed,0xe4,0x95,0x24,0x3e,0xf1,0x36,0x1a,0x3b,0x32,0x95,0xfa,0x81,0x3b,0xa2,0x05,},"\xf7\xe6\x7d\x98\x2a\x2f\xf9\x3e\xcd\xa4\x08\x71\x52\xb4\x86\x4c\x94\x3b\x1b\xa7\x02\x1f\x54\x07\x04\x3c\xcb\x42\x53\xd3\x48\xc2\x7b\x92\x83\xac\xb2\x6c\x19\x4f\xd1\xcb\xb7\x9e\x6a\xfc\x32\xff\x68\x6b\x55\xb0\xb3\x61\x72\x18\xdc\xf3\x93\x16\xb4\xb6\x6b\x3c\x8c\x0d\x67\x26\x7a\x86\xdb\x8a\xdf\x37\x50\x80\x1b\xcf\x93\x27\xd4\xc2\x54\x41\xb9\x61\x97\x83\x2b\x4c\xde\x0e\xac\x3f\xf2\x28\x92\xa2\xf0\xbc\x17\xc2\xc2\x13\xc0\x23\x77\xa3\x33\xe3\x08\xed\x27\x16\x58\x04\x93\x83\xb7\xe2\xe5\x7b\x6b\x8b\x12\x55\x12\xe0"}, +{{0x62,0x88,0x72,0x20,0x35,0xd1,0xea,0x69,0x9b,0xc7,0xcf,0xdf,0x18,0xd8,0x96,0x25,0x42,0x31,0x80,0xb6,0x83,0xfa,0x74,0x63,0x9f,0x4f,0x30,0xf1,0x53,0x59,0xcc,0x85,},{0xe1,0x7f,0xaa,0x01,0x95,0x72,0x86,0x1a,0x06,0x4e,0x1b,0xc5,0x71,0x25,0x6d,0xea,0x14,0x68,0xf3,0xa4,0x85,0x90,0xa8,0x91,0x38,0xaa,0xa8,0x59,0x25,0x08,0x0c,0xd7,},{0x9d,0xec,0x92,0xb6,0xe8,0x9a,0xdb,0xe8,0xf4,0xe1,0xb5,0xe9,0x3a,0xc4,0xfc,0xf9,0x57,0xde,0x7d,0x19,0x70,0xa2,0x26,0x77,0x0e,0xc4,0xed,0xa6,0x47,0xc8,0xe3,0xb3,0xdf,0xfb,0x27,0x31,0xa3,0x9e,0x16,0xe4,0xa0,0x11,0x9d,0x36,0x62,0xa9,0x37,0xe5,0x60,0x52,0x24,0x91,0xec,0x7a,0x16,0x96,0xbe,0x04,0xc0,0x76,0xb1,0x2e,0x35,0x01,},"\x8b\x6c\xaa\xca\xc5\x1d\x89\x49\xfb\x86\xac\xbc\xb1\xb9\x9d\x85\x9f\xf6\x7c\x64\x14\x7b\xc1\x21\x69\x09\xdc\xab\x07\xee\x6e\xf0\x9f\x40\x38\x63\x32\x73\x94\x68\x9d\xc3\x4a\xbc\x77\x8f\xcb\x5c\x1f\x50\x91\xac\xf5\xa0\x8f\x9d\x84\x22\x11\xd1\xae\x2e\xb4\x0b\xe9\xbb\x8d\x66\x79\x07\x74\x71\x54\x7a\x6c\x71\xff\x77\xb5\x19\xd4\xb7\x10\x8e\x32\xbc\x46\x25\x1c\x60\xde\xe8\xe3\x32\xb6\x22\x93\x16\xe6\xd5\x7c\x22\xab\x82\x6f\xf1\xbc\x33\xf2\xb0\x21\x38\x07\xc1\x92\x80\xaf\x11\x0f\xd2\x6e\xe2\x74\x68\x20\x1c\xff\x49\xcb"}, +{{0x13,0x03,0x8a,0x3a,0x65,0xef,0x32,0x75,0x9a,0x9c,0xd9,0x03,0xac,0xb5,0x54,0xb2,0x52,0xde,0x00,0xe7,0xcd,0xb7,0x7b,0xbe,0xd1,0x97,0x0b,0x20,0x68,0x0e,0xe1,0x7b,},{0xb6,0xa3,0x08,0xe6,0x7f,0x9b,0x46,0xc6,0x64,0x99,0x45,0x6a,0xb5,0xcd,0x13,0x5c,0xb2,0xfe,0x84,0xa3,0x2e,0xb0,0x45,0x35,0x86,0x26,0x60,0x4d,0xa4,0x12,0x2c,0x8f,},{0x52,0x61,0x55,0x8e,0xcc,0x3c,0x98,0xff,0x36,0x35,0x1f,0x42,0xf5,0x04,0xca,0xd4,0xa3,0x2f,0xfd,0xa5,0xa7,0x44,0x56,0x09,0x60,0xb4,0xc1,0x06,0xe4,0x49,0x2f,0x02,0xe2,0x04,0x78,0x88,0x7a,0xfe,0xe4,0xf7,0x70,0xf0,0x55,0x97,0xa7,0xe3,0x88,0xca,0xce,0xae,0x80,0x5a,0xe3,0x51,0xe0,0xe4,0x5e,0x8e,0x57,0x8e,0x6a,0x6f,0xf2,0x0c,},"\xdd\xf0\x0b\x40\x33\xa2\xa0\x88\x02\x2d\xab\xe9\x33\x56\x43\x2f\x50\xdd\xc6\xc6\xe1\xa6\x59\xdc\x1a\x93\x12\x4a\x4c\x2f\xff\xfd\x18\x27\x65\xa2\xf5\x6c\x43\xea\x0b\xfd\x8d\xe8\x01\x50\x60\x88\x9a\xe6\x94\x1c\x3f\x3e\x25\x5d\x44\x21\xa1\xc3\x62\x01\xbe\x84\x6a\x27\x38\xa7\x1f\x12\x0c\xad\x59\x8c\xa8\x52\x7d\x70\xff\x8d\x5a\x09\x93\xb5\x5c\xb5\x15\x35\x17\x11\x0a\x41\x96\x2d\xaf\xf4\x22\x50\x15\x8f\x20\x96\xd1\xdd\xaf\x71\x86\xe5\x02\x98\xcb\xe5\x1f\xcb\x42\x9c\xbe\xa4\x11\x29\x3f\x8a\x7b\xd9\xcf\x06\x9f\xa2\x37\xe4"}, +{{0xb9,0xde,0x5b,0x06,0x3d,0x3c,0xa3,0xa7,0x73,0xf1,0x14,0x94,0x1b,0x2e,0x42,0x27,0xc0,0x75,0x11,0xc0,0xf5,0xc0,0x60,0x17,0xb9,0xc8,0x84,0x50,0x18,0xf2,0x34,0x32,},{0x52,0x95,0x24,0x3c,0x86,0x46,0xe0,0x96,0x67,0x4d,0xda,0x15,0x97,0x9b,0x32,0x2b,0x9d,0xd0,0xfa,0xf2,0x7d,0x02,0x4a,0x0e,0xd5,0x77,0x13,0x34,0xe1,0x17,0x9e,0xd2,},{0x92,0xba,0x76,0x0d,0x14,0xd1,0x41,0x5c,0xfa,0xf2,0x18,0xca,0x84,0x70,0x14,0x08,0x8a,0xe5,0x1a,0xd8,0x21,0x11,0x3a,0x6f,0x86,0x30,0x35,0x6f,0x7b,0xa8,0x5c,0x00,0x5e,0x23,0x30,0xf1,0x06,0x6d,0x0d,0xf4,0x64,0x80,0x60,0x52,0xa4,0x17,0x46,0x10,0x05,0x04,0x62,0xf3,0xe0,0x13,0xd7,0x02,0xe7,0xc7,0x71,0x85,0xa0,0x32,0x58,0x0b,},"\x94\x93\xcc\x23\x89\x6b\x84\x09\x60\x46\xae\x10\x53\xaf\xe3\x94\x99\xe9\x42\x42\x54\xb3\x66\xfe\x14\x3f\x4d\xa3\x21\xe2\xdc\x9e\x47\x84\x20\x8e\x12\xa5\x42\xd8\x99\x82\x8d\xde\x7e\xff\x62\x5a\x7f\x12\x41\x69\x90\xc2\x84\x1f\xfb\x09\x5b\xf9\x4c\x0c\x61\x0e\x5a\x66\x39\x18\xb6\x89\x03\x1c\xcd\x6b\x51\x93\x49\xd0\x4d\xe1\xc2\x12\xca\x2a\x9d\x7a\xbf\x52\xe1\xb4\xfd\x46\x7b\xb6\x65\xb6\x91\x9e\xf8\xf9\x16\x17\xe2\x05\x56\x5b\xf5\x66\x47\xe5\xf8\xd5\x08\xea\x20\x0a\x84\x46\x7f\x8f\xa1\x22\xe7\x4b\xc3\xb9\x97\x9f\x11\x74\xe5"}, +{{0x8f,0xf0,0x29,0x7c,0xc0,0x88,0x42,0xb5,0xe6,0x75,0x52,0xec,0x28,0x43,0xe0,0x43,0x53,0xa3,0x4d,0x74,0xef,0x89,0xb8,0x56,0x5d,0x97,0x20,0x5b,0x74,0xca,0x13,0x3a,},{0x0f,0x7e,0xf9,0x8c,0x5b,0xa4,0xaf,0x98,0x4d,0xfb,0x77,0xbc,0x4e,0x53,0x7b,0x2b,0x39,0xe6,0x27,0x3b,0xb3,0xe7,0xb9,0x5f,0xe1,0xb7,0xe6,0x78,0x19,0x52,0xbd,0x4a,},{0x07,0x83,0x73,0x7f,0x70,0x6e,0x6f,0xf3,0x66,0x14,0xf8,0x50,0x07,0x4f,0xca,0x1f,0x48,0x5f,0x24,0xfc,0xde,0x2a,0x28,0xaf,0x54,0x4f,0x37,0xab,0xd6,0x9b,0x7a,0x58,0x1d,0xef,0xd8,0xc7,0x71,0xb0,0x31,0xe1,0x08,0xd1,0x9d,0x78,0x8c,0x74,0xc5,0xf2,0x0b,0xb3,0xf1,0xc2,0x1c,0xd9,0x2b,0xe3,0x17,0xba,0xcd,0x8f,0x65,0x0b,0x49,0x05,},"\x2b\xdc\x3a\x48\x6c\x5e\x4e\xa6\x2d\xcf\xec\x8a\x9d\x4f\xcf\x9e\xa9\x49\x0d\xbc\xc7\x15\x61\x5d\x58\x49\x0a\x72\xce\x83\x3f\xa2\x23\x87\xca\x50\xa0\x05\x25\x08\xcf\x0a\xff\x1c\xa7\x27\xf0\xfe\xd4\x6f\xfa\x7d\x3c\x8e\x23\xc5\xbb\x01\xd4\x7e\x90\xff\x06\xd3\x85\x8a\x55\x7d\x99\x26\x48\x15\x79\xda\xf4\x38\x4a\xea\x50\xe9\x6e\xc6\x15\xd2\xa3\xbf\x3c\x11\x22\xf1\xf2\x4d\xd6\xed\x98\xa5\xde\x42\x18\x83\x58\x9c\x21\x39\x98\xca\x54\x32\x37\x3e\x68\xbb\xbe\x89\x42\x8c\xa9\x88\x5d\x05\x93\xd5\xe6\x21\x51\x16\xb8\x26\x63\x86\x45\x2b"}, +{{0x05,0x0d,0x55,0x3d,0x28,0x2d,0xca,0x32,0x69,0xc8,0x3c,0x18,0x17,0x68,0xec,0x06,0x7b,0x81,0xc9,0xfe,0x0c,0x94,0xf2,0xa0,0xeb,0xbb,0x0c,0x94,0x2d,0x0f,0xcd,0x7c,},{0x63,0xe2,0x30,0xb0,0x03,0xc5,0x3a,0x56,0x72,0xe8,0x32,0xff,0x7f,0x24,0x43,0x0b,0xe2,0x23,0xe4,0x97,0xde,0x84,0x02,0x33,0xf5,0x95,0xa3,0xe2,0x00,0xc7,0x12,0x7e,},{0x3f,0x0e,0x83,0x76,0x5b,0x31,0xbb,0xe8,0xe1,0xfb,0x92,0xe9,0x67,0x8d,0x6c,0xde,0x57,0x1a,0x03,0xba,0x7f,0x1d,0xcc,0x11,0x28,0x46,0x1f,0x70,0x85,0x25,0x45,0x7f,0x4e,0x0e,0x23,0x53,0xaa,0x2b,0x59,0x8c,0x06,0x3f,0xf1,0xbf,0xfd,0xac,0x91,0x6b,0x5a,0x22,0x00,0x65,0x51,0x56,0x90,0x4b,0x05,0x85,0x57,0x7a,0x16,0x28,0x56,0x0d,},"\x15\xe1\x3b\x8c\x01\x00\x4f\x6a\xa5\xb2\x36\xdb\xb2\x81\x67\x7f\x74\x6d\x81\xe5\x48\xe0\xaa\x80\xf0\xe4\x14\x52\x15\x21\xd8\x56\xcd\x69\x4e\x7c\x91\x52\xbb\x5e\x43\x77\x6b\x60\xf6\xb5\x60\xed\x1a\xd3\xe4\xb3\x90\xdb\xf3\xe4\x6e\xf9\x25\x74\x43\xf3\x9c\x14\x9e\x02\x40\xa0\x2d\x02\x1e\x1e\x3d\x7d\x04\x6b\x26\xfd\x00\x4e\xee\x7c\xa1\x6a\x80\x59\xe1\x26\xc7\x4c\xb3\xf2\x19\x4d\xb4\x7b\xf6\x04\x65\xec\xef\x5c\x70\x4d\x2e\x2c\x75\xe2\xe5\x00\x60\xea\x2a\x31\xcb\x72\xb7\xb3\xc6\xb1\xb5\xec\x72\xab\x38\x00\x40\x85\x28\x1a\x22\xfe\x86"}, +{{0x69,0x49,0x7c,0xd7,0xb4,0xe8,0x68,0xcf,0xa0,0x32,0x8d,0x92,0xbd,0x60,0x52,0xd7,0x72,0xb2,0x76,0x73,0x95,0xc1,0x45,0x95,0xb2,0x79,0x85,0x1a,0x9c,0xdd,0x31,0xaa,},{0x5d,0x27,0x6d,0x62,0x6e,0x23,0x0d,0x18,0xe7,0xbc,0xd6,0x11,0x41,0xcb,0x93,0xc9,0x0e,0xf0,0xf7,0x9e,0x01,0x32,0x12,0x12,0xd8,0x38,0xec,0x71,0x45,0x7b,0x1a,0xac,},{0xbe,0xaf,0xa5,0x83,0x40,0x96,0x09,0x08,0xe8,0xd8,0x6e,0x40,0x32,0x9e,0x3a,0x45,0x23,0xfc,0x7b,0xe7,0x70,0xad,0xdb,0x86,0xe3,0x4c,0x37,0x72,0xf8,0x4c,0xd9,0xfb,0x33,0x8d,0x1f,0x3b,0x65,0xbf,0xcd,0xb0,0x9f,0x35,0xc6,0xda,0x36,0xd1,0xa3,0xad,0xf8,0xf9,0x1f,0x1f,0xfd,0x57,0x82,0xcc,0x83,0x02,0x06,0x43,0x3a,0x08,0x41,0x0d,},"\x53\xcd\x08\x0a\x0c\x61\xf1\xa0\x93\xd3\xb3\xa7\x45\x71\xc2\x96\x30\x3f\x36\x3b\x41\x07\xed\xbe\x88\x0b\x7a\xa9\xdf\xe4\x4a\xb5\xd5\xdc\x5f\x74\xbe\x9c\x8d\x87\x6f\x04\xd7\x54\x65\x34\x91\xab\x51\xb1\x35\xfc\x95\x3f\x71\x28\x7b\x62\xff\x41\xb6\x7c\x74\x2b\xd3\x44\x56\x71\xa9\xd4\xf2\xdc\x17\x4c\xa1\xb0\x33\x5f\x78\x62\x7a\x0d\xd4\xb3\x06\x50\x50\x41\x78\x03\x9e\x73\x93\x63\x85\x10\xff\xe8\x40\x91\xb5\x72\x98\xd3\xac\x90\x01\xc3\x67\xc1\x45\x2f\xbc\xb3\x3d\xc5\x4a\x5d\xc3\x16\xfb\x2a\x52\x70\x76\x4a\x2a\xc8\x20\xa0\xb6\x3f\xbd\xc6"}, +{{0x21,0x65,0xa4,0x86,0xb6,0x12,0xbb,0xff,0x52,0x9c,0xd0,0x03,0x46,0x96,0x4a,0x3c,0xb8,0xcd,0xcf,0xfa,0x51,0xdc,0x3d,0x52,0x4d,0xd5,0xad,0xc5,0xac,0x93,0x6d,0x68,},{0x7e,0xbc,0x83,0x9a,0x46,0x5e,0x14,0xf5,0x89,0x24,0x76,0xe4,0xa1,0x3b,0x39,0x88,0xf8,0x3b,0x3c,0xd2,0x7e,0xf7,0x9e,0x19,0x3f,0x86,0xfa,0x16,0xf3,0x4a,0x1c,0xe1,},{0x7e,0xc6,0xfb,0xa5,0x6b,0xa5,0x24,0x60,0xa1,0xb4,0xf2,0x73,0x86,0x89,0xc1,0x88,0x3d,0xda,0x9a,0xaf,0xfc,0x8b,0xde,0x17,0xcb,0x60,0x29,0xbd,0xce,0x3a,0x0e,0xbe,0x2f,0xff,0xda,0x55,0x93,0x9b,0x70,0xbb,0xd0,0x7f,0xdb,0xf6,0xfc,0x5c,0xda,0x87,0xfe,0xd8,0xba,0x58,0x57,0x5f,0x89,0x4a,0x36,0x6e,0x45,0xe5,0x70,0x5e,0xea,0x09,},"\xb7\x28\xda\x7a\x36\x16\x7c\x60\x85\xbd\x2d\x96\x2c\xf6\x39\x59\xfa\xcd\x95\xc9\xad\x45\x42\x02\x8a\xfb\xa9\x0e\xc9\xc6\xc0\x76\x0b\xda\xe9\x35\x42\x9c\x3f\xeb\x39\x33\xe2\xf0\x00\x42\xc6\x72\xad\x2c\xd7\x34\x8d\x92\xbc\x33\xf8\x17\x51\xe2\x94\xae\x91\x71\xb9\x45\xb1\x93\x14\x4e\xf8\xac\xb9\xa1\xbd\x9a\xbf\x04\x75\xce\x0d\x0a\xc7\x89\xb2\x00\xc3\x2e\x9c\x9a\x27\x36\xb1\x68\x36\x9c\xe5\xf9\x7b\x1e\x8d\x2e\x79\x00\xe1\xa7\x59\x17\x84\x41\xf1\xfc\x43\x05\x64\xae\x12\x9b\xae\x78\x57\x74\x05\x11\xa6\x68\xf3\x2c\x0a\x3b\x07\x7a\x9d\x8b\x19"}, +{{0x1c,0x64,0xad,0x63,0xdd,0x14,0x70,0x34,0x59,0x8e,0x12,0x8f,0x74,0x06,0xec,0x05,0x30,0x74,0x6e,0xa1,0xc5,0xb7,0x2e,0xcf,0x79,0xe8,0x88,0x06,0x54,0x86,0xfa,0x1b,},{0xba,0xa6,0xbc,0xc1,0xc3,0xd8,0xd3,0xb1,0x1f,0xfc,0x15,0x87,0xad,0xdd,0xc5,0x8b,0xfd,0x96,0xc2,0xb9,0x92,0xb6,0xc6,0xf5,0x9f,0xcc,0x50,0xcc,0xbc,0xdd,0x0e,0xb9,},{0x74,0x77,0xe5,0x41,0x58,0xf1,0x3b,0x71,0x28,0xc0,0xa1,0x10,0xca,0x6b,0x65,0xf4,0x25,0x14,0xfb,0x70,0xcd,0x5c,0xf2,0x8a,0x8b,0x1c,0xc6,0x11,0x0e,0xa0,0x6f,0xcf,0x94,0x29,0x0d,0xa1,0x3f,0x85,0xa1,0x1c,0x23,0x51,0xd3,0xbb,0xcc,0xbb,0x4c,0x64,0xe0,0x21,0x5d,0x6d,0x0f,0x00,0x99,0xe7,0xf2,0x7b,0xc9,0x4e,0x94,0x9b,0x15,0x0b,},"\x9e\xbd\x8e\x33\x78\x93\xbb\x05\x3e\xf2\xb9\xe3\x26\x9d\xf5\x48\x48\x49\x4f\x03\xcd\x63\x57\x6b\x33\xe6\x4b\x10\x80\xbe\x4b\xe0\x15\x26\x4a\x40\x3f\xb9\x60\x2b\xbf\x90\xca\x19\xb2\x41\xa9\xb6\x68\x63\x90\x9b\x90\x08\xce\x1b\x2f\xfc\xf2\x36\xef\xa4\xc2\x66\x8f\x0f\x47\xdb\x9f\xf5\xfa\x15\x7d\x9c\xb6\x05\x41\x2b\xe7\xdd\x8b\x07\xea\x87\x8c\xcc\xae\x6b\xf5\x0f\x93\x5b\x86\xd1\x9e\x1b\x64\x8b\x69\xe5\x28\x55\x3a\x56\xd8\xaf\xb7\x82\x21\xad\x53\x30\x7b\x7a\x4e\xc8\xd2\xfd\x48\x61\xb5\x5d\xc5\xda\xe8\xe9\x3e\xf3\x87\xfb\xbe\x0b\x4c\xe7\xf7\x88"}, +{{0x55,0xab,0xbc,0x5d,0xac,0x41,0x28,0x13,0x4d,0xc8,0xc6,0x01,0x8a,0x21,0x3e,0xd4,0xb6,0x0f,0xcc,0x8e,0x90,0xcb,0xd4,0x1d,0xb2,0xd2,0x1e,0xda,0x53,0x73,0xe9,0x36,},{0x25,0x1a,0xfa,0xa2,0x64,0x69,0x26,0xb2,0xa3,0x71,0xf2,0xa0,0x9d,0x58,0x65,0xb9,0x8c,0x9a,0x5e,0xb6,0xca,0x04,0x7c,0xd0,0xd8,0xee,0x36,0xe5,0xe0,0x41,0x69,0x74,},{0xf6,0xa6,0x1c,0x2e,0x66,0x1a,0x9e,0xb7,0xbd,0xe1,0x82,0xe3,0x8e,0xc9,0x9a,0xf9,0x85,0xf6,0x16,0x98,0xa5,0xd7,0xfa,0x43,0x0d,0x16,0xe3,0xf1,0xa9,0x37,0x09,0xb7,0x55,0x22,0x32,0x0d,0xe4,0x8a,0xfc,0xc5,0x95,0xab,0x20,0x91,0x22,0xae,0x0c,0xe1,0x32,0xcd,0xf4,0xb0,0x39,0x17,0x46,0xe7,0xff,0x34,0x11,0x77,0x57,0x0c,0x81,0x08,},"\x47\x01\x0e\x13\x98\xad\x55\xfa\xbe\x37\x1d\xd8\x64\x8f\x76\x8d\x90\xdf\x4b\x96\x5a\x3b\x39\x61\x00\xb3\x03\xb4\x0a\x17\x51\x8b\xed\x6d\x86\xb0\x9f\x73\x4a\xb7\xc1\x0b\x5f\x3a\x01\xb5\x3d\xee\xc5\xf8\x53\x4b\x70\xc7\x9f\x3f\x29\xb2\x84\xfd\xec\x48\x6f\x22\xf4\x4c\x22\xcc\xd5\xc6\x46\x35\x94\x41\x52\x67\xba\xa6\x11\xf7\x0b\x1b\x31\x6c\xaa\x1b\x68\xb5\xe0\xe9\x9b\x31\xc5\xbb\x0c\xe1\x36\x79\xa2\x3c\x31\xa6\x39\x99\x69\x81\x64\xcb\xf3\x7d\x10\x3b\xa9\x24\x90\x18\x8b\xe5\x99\x37\xf1\x23\x04\x3e\xc7\x86\xef\xe3\xd4\x11\xf9\xb0\x62\x3a\x6a\xd9\x72"}, +{{0xf2,0xdc,0xf4,0xa1,0xa0,0xd4,0x6d,0xdb,0x2d,0x72,0xf8,0xfd,0xd8,0x0b,0xbe,0xc5,0xb7,0xde,0xa5,0x91,0x3d,0xa4,0x96,0x6c,0x2f,0x4d,0x12,0xc2,0x61,0xf0,0xbf,0x98,},{0xd3,0x95,0x70,0xa2,0x5c,0xa5,0x9f,0x22,0x57,0xf9,0x3f,0x96,0x60,0x0d,0xf4,0xf6,0x3e,0x68,0x4b,0xf6,0x3a,0xe8,0xdf,0xfd,0x91,0x4e,0x46,0x29,0xc3,0xd5,0x09,0x5f,},{0x42,0x88,0x2a,0x81,0x1d,0xad,0x2d,0x85,0x18,0x85,0xe4,0xcb,0xe9,0x04,0x47,0x08,0xd9,0x1a,0x86,0xf1,0x5d,0xfa,0x1d,0x66,0xc3,0xeb,0x30,0x43,0x14,0x53,0x1f,0x30,0x15,0x20,0x8c,0x71,0x1b,0x9b,0xdb,0xc5,0xfb,0x23,0x39,0x51,0xe5,0x69,0xb5,0x9d,0x34,0xe4,0x15,0xee,0xc4,0xb3,0x7f,0xfd,0x37,0x4d,0x41,0x2c,0x9a,0x36,0x0d,0x0c,},"\x3b\x00\xe8\x08\xfc\xa4\xc1\x16\x51\xd8\x53\xd6\xb9\x0f\x95\x2c\xcf\x56\x47\xe1\x02\xd4\xee\x0a\xd7\xa5\xd1\x81\xd5\xb4\x25\x8c\x52\x3c\xd3\x9e\x3d\x98\x25\x29\x8d\x84\xc8\xcb\xa0\x9f\x43\xdb\xba\x11\x99\x88\x22\x2c\x76\x05\x9c\xaf\x17\xb4\xbf\x99\x31\xc4\x5e\x61\x74\x48\xae\xad\xe1\x51\x18\x14\x97\xb2\x45\x52\x36\x7e\x52\xbc\x45\xac\x79\x08\x88\x06\xd3\x36\x82\x07\xaa\xfe\xfd\x30\x57\x84\x5d\xce\x81\x9d\x5a\xaa\xa7\x7b\x21\x8e\x2a\xed\x3d\xa7\x6d\x40\xc1\xf0\x76\x99\xf8\x17\x2e\x4a\x5c\x80\x3f\x7a\x2a\xce\xb9\xa4\x7a\x89\x52\xe1\xb2\xf0\x53\xf2"}, +{{0x22,0x46,0xbf,0xb0,0x61,0x55,0x85,0x9e,0x10,0xa7,0x48,0xff,0x8f,0x59,0x19,0xad,0x5d,0x1d,0xaa,0xb7,0x56,0xf0,0x10,0x57,0xb7,0x90,0xd0,0x74,0x74,0x77,0x5f,0x4f,},{0xfa,0x63,0x49,0xb6,0x2d,0xc8,0xc6,0xa2,0xfe,0xee,0xf6,0xff,0xc3,0x3a,0xe0,0x85,0xc6,0x49,0x79,0x5c,0x1c,0x9d,0x98,0x98,0xe7,0x5c,0x13,0xae,0x16,0x25,0xdb,0x34,},{0x2b,0xe4,0x91,0x5a,0x35,0x2f,0x77,0x85,0x48,0x30,0x46,0xd8,0xae,0x96,0x25,0xb8,0xb6,0x32,0x57,0xaf,0x57,0xc0,0x73,0x69,0x12,0x56,0xee,0x07,0x6d,0x6e,0x1b,0x97,0x2a,0x10,0x1f,0x55,0x1c,0x70,0x5d,0x3f,0x96,0x15,0x7c,0x33,0xb5,0x6e,0xa0,0x49,0xbe,0x4a,0xf4,0xdc,0x56,0x1c,0xbe,0x3c,0x1e,0xc5,0x07,0x2d,0x7f,0x13,0x4e,0x07,},"\x63\xee\x1c\x7b\xbb\x15\xce\xbe\x1c\x22\x53\x2d\x48\x16\x82\x75\x4b\xda\xf5\x8b\x8b\xc9\x97\xae\x30\xa3\x4c\x9d\x23\xc3\x3f\x16\x90\xc3\x46\xab\x0a\x73\x65\xff\x62\x45\x74\x24\xb6\x10\x5f\x84\x21\xec\xa0\xce\x3c\x63\x0a\xcf\xeb\x9a\x1c\xc4\x16\x39\x0e\xdf\x49\x20\xe2\x2b\x23\x67\xe9\xfb\x5d\x2a\xb2\x5b\xee\x56\xda\x03\xea\x55\xe3\xf5\x78\x82\xd4\x8b\x89\x22\x93\x14\xd7\x34\xcb\x83\xc7\x9f\x4e\x17\xee\x64\xba\xe6\xf7\xad\xdb\xe9\xb5\x25\xfc\xd0\x3a\x91\x40\x9a\x2d\xde\x90\x77\x51\xdb\x8c\xc9\x7e\x08\xd0\xea\x89\xc4\xd1\x87\x18\xd2\x6d\x0b\x89\x7b\x64"}, +{{0xc0,0x88,0xa3,0xdd,0x2c,0xb8,0xbd,0x5d,0x68,0x4d,0xb8,0x53,0x8d,0xc2,0x24,0x73,0xb6,0xf0,0x14,0xf6,0x4f,0xe8,0x6a,0xf1,0x68,0xb4,0xbb,0x01,0xb9,0x0a,0x1d,0xd0,},{0xaa,0xd6,0x15,0xa9,0xc2,0x87,0x59,0xf0,0x3d,0x37,0x3a,0xbe,0x66,0x66,0x91,0xde,0xad,0x8b,0x84,0xf9,0xb8,0xb5,0x0a,0x67,0xf8,0xf0,0xaa,0x4a,0x70,0x15,0x80,0xd1,},{0x3b,0xb4,0x59,0xd1,0xac,0x57,0x5a,0x18,0x0c,0x17,0x28,0xd8,0xb8,0x92,0x49,0x70,0x49,0x2a,0x0c,0x8d,0x2a,0x37,0x8c,0x29,0xd1,0xd4,0x17,0x85,0xc8,0x37,0x9a,0x58,0xe2,0xba,0x36,0x06,0x78,0x5e,0x1c,0x5d,0xa2,0x9e,0x55,0x27,0x55,0x2b,0xc6,0xdc,0x89,0xa2,0xb6,0x9c,0x27,0xfe,0x51,0xed,0x25,0x3a,0x9f,0x3b,0x56,0x5b,0x27,0x00,},"\x74\x90\x6a\xe0\x5a\x5a\xf8\xe9\x96\x8b\x6f\xeb\x49\x85\x69\xd6\x34\x5a\x24\xf9\x71\x1b\xef\xb1\x36\xe6\xc3\xb5\xed\x49\x33\x9e\x59\xa7\x93\x8b\x4b\xa1\xa1\x18\xf1\x69\xb9\xac\xe0\xf7\x84\x2a\x26\xa6\x45\xf1\x4c\x0a\xd2\x2e\xbb\xcd\xa9\x3e\x67\xe4\xc3\x48\xef\xc3\xd9\xec\xbb\x14\x19\xe6\x26\x2d\x04\x36\xa5\x8e\xa8\x2c\x22\x02\x38\x90\x65\xcc\xf6\x7c\x4f\x55\x0e\x45\xb5\xf6\xa1\x2a\x6c\x01\x1b\x2e\x0a\x30\x10\x1d\x5c\x62\x32\x8b\xbf\x99\xc8\xc9\x55\x63\xa6\xe3\x3b\xdd\x9c\xce\x72\xb1\xf7\x20\x13\x9c\x2f\xd3\xe0\x49\x13\x14\x6a\xe5\xba\xc5\x28\x8e\x0e\x3e"}, +{{0x45,0x66,0x7d,0x1e,0x7b,0x59,0x10,0x97,0x9c,0x4a,0x32,0x83,0x17,0x96,0x83,0x71,0xc8,0x64,0xd5,0x64,0xa6,0x61,0xc5,0xcc,0xe5,0x57,0xc9,0xec,0xc6,0x1b,0xab,0x9e,},{0xed,0xcd,0xf5,0xe1,0xa1,0x70,0xe0,0x0c,0x8c,0x68,0x7e,0x7e,0x9c,0x18,0xf9,0x89,0x3b,0x5f,0xe4,0x95,0xcd,0x29,0x77,0xce,0xb7,0xf4,0x46,0xc0,0x14,0x9a,0xa9,0xd3,},{0x6d,0xe6,0x68,0xf1,0xca,0x6f,0x29,0x28,0x14,0x62,0x52,0x89,0xa0,0x80,0x80,0x20,0xc8,0x7c,0x89,0xac,0x94,0xf5,0xb0,0x50,0x8e,0x55,0x7b,0xdf,0x80,0x00,0xa5,0xca,0x80,0x8f,0x02,0x1c,0x96,0x79,0xb5,0x0e,0xe2,0xf3,0x20,0x06,0x4c,0x95,0xa4,0x64,0xa8,0x43,0x93,0x79,0x82,0x8c,0x3b,0x76,0xcf,0xa7,0x66,0x45,0x5e,0x12,0x8c,0x0b,},"\xcd\x66\xce\xc4\x76\xc8\x7c\x8d\xbf\x47\xec\x91\xda\xc4\x8f\xb5\xb4\x2d\xb1\x28\x2a\x57\x3e\x0a\x5c\xf0\xb9\x17\x68\x98\x66\x08\xe1\xd7\xeb\xd0\x5f\x52\x51\xbc\xf8\xb4\x7a\x17\x09\x32\x29\xac\xef\xbd\x44\xbe\xb2\x1c\x0c\x0c\x92\x8d\xd3\xcd\x3f\x89\x66\xec\xce\x69\x10\x33\x1c\x50\x8e\xa7\x6b\xaf\x90\x4d\x8c\x21\xf6\xc1\x7c\x2c\x58\xd0\x0a\xfd\x32\x59\xb8\xbf\x79\x4c\x14\x6b\x12\xb9\x95\xcd\xdd\x1c\x42\x89\xc5\xbe\x31\x68\xeb\xd6\x16\xb3\x84\xc2\x81\xce\x1b\x38\xa1\x0e\x18\x07\x80\x88\x53\xc6\x81\xa6\x40\xa0\x09\xb4\xd2\xac\xd7\x93\x4f\x8c\x6d\x07\x57\x81\x61"}, +{{0x24,0x89,0x74,0x28,0xae,0x65,0x46,0xd8,0x5b,0x31,0x90,0xeb,0xe3,0xf1,0xf7,0xbf,0x7c,0x71,0x25,0x28,0xac,0x85,0x1a,0x58,0x8b,0x07,0xd5,0xc8,0xf9,0x4e,0xec,0xd1,},{0x5f,0x34,0x8f,0xe3,0xea,0x5b,0x2c,0x02,0x3d,0x0a,0xf7,0xed,0xe6,0x0e,0x55,0xf9,0x1a,0xa5,0x51,0x99,0x69,0x9d,0xa1,0x5a,0x11,0xc3,0x79,0x1d,0x68,0xd7,0x10,0xbd,},{0x1b,0x5e,0x75,0xde,0xf4,0x9f,0x51,0xd6,0xb2,0xde,0x00,0x8c,0x71,0xfc,0x1a,0x90,0x9b,0xd4,0x2c,0xa8,0x13,0x29,0x8d,0xce,0x4e,0xee,0xf7,0x17,0x81,0x5d,0x7a,0x6c,0x07,0x8c,0x2f,0x3d,0x9a,0x3f,0xce,0x1a,0xb5,0xb3,0xad,0x8e,0xf8,0xd4,0x5c,0xdf,0x2e,0xb4,0x90,0x1c,0x32,0xee,0xa2,0xd5,0xe0,0x18,0xdc,0xf2,0x83,0x3c,0xad,0x0c,},"\x52\x01\xd9\x72\x5f\x1d\xff\xa1\x86\x3f\xa4\xd8\x4c\x30\x18\x61\x14\x1a\xcd\xfb\x64\xbe\x1f\xbf\xdd\x5b\x93\x86\xdb\x20\xef\x39\x40\x99\xee\xbc\xfd\xfe\xcc\x62\xc6\x26\x86\x07\xa8\x4d\x55\xc5\x5c\xd0\xef\xdc\x37\x2e\xcf\x30\x67\x34\x3e\x7b\x07\x31\xc2\x68\x54\x61\xe2\x4b\x95\x3f\x99\x94\x9e\x59\xba\x3e\x67\xed\x0f\x08\x48\x31\x37\x93\x96\x2a\x29\x2c\x45\x98\x14\xc5\xe2\x86\x90\xec\x1f\x45\x17\x1f\x1a\xba\xb8\x6f\xdd\x14\x56\x8b\x00\xca\xf4\x85\x81\x11\x5e\xe5\xea\x83\xb0\x00\x28\x2f\xbb\xf0\xc0\xb2\xa1\x11\x60\x39\xa3\x5c\xfa\x3f\x20\x14\x22\x20\x7a\x3d\x49\x48"}, +{{0x7b,0x04,0xac,0xa7,0xcf,0x92,0x62,0x16,0xcb,0x96,0x0a,0x38,0x90,0x78,0x63,0x39,0xd0,0xa6,0x15,0x96,0x76,0x80,0x19,0x01,0x23,0xfd,0xa3,0xb6,0x0c,0x6a,0xeb,0x11,},{0xcd,0xbc,0x3e,0x70,0xe4,0xe8,0xfd,0x13,0xd0,0xcc,0xe2,0x85,0x2a,0x3b,0x93,0x72,0xc3,0xa6,0x16,0x0c,0xd6,0xde,0xab,0xa9,0x0f,0x9b,0x30,0x22,0xf7,0x0c,0x91,0xf9,},{0x25,0xd2,0xd3,0x61,0x75,0x1d,0x52,0xb4,0xfe,0x66,0xea,0x18,0xe4,0xb9,0x86,0x6b,0xde,0x3d,0x12,0x1a,0x73,0x12,0xfd,0x9e,0x28,0xa1,0xe2,0x95,0xe0,0x87,0xe3,0x17,0x6c,0x94,0xc8,0x74,0xa2,0xe8,0x16,0x00,0xf2,0x4c,0x46,0x54,0xf4,0x3d,0x1b,0x67,0xd4,0x7b,0x64,0x82,0x26,0x48,0x59,0x0c,0xe5,0xce,0x44,0xf3,0xb5,0xdd,0xc5,0x02,},"\x1c\xb0\x96\x24\xb1\xf1\x4a\x02\x60\xc7\xf5\x6d\x8c\x60\xb5\xfe\x45\x83\x71\x14\x23\x25\x51\xef\x59\x66\x38\x6e\x0c\x2b\x44\x1b\x75\xcf\xdb\x8d\xf2\x18\x57\x85\xd2\x2c\xf5\x26\xfa\x9d\xf7\xfd\x45\xd9\xd8\x38\x81\xb6\x6c\x1f\xee\xe0\x91\x3e\x23\x81\x21\xee\xdb\xb7\xab\x50\x4d\xa0\xbe\xe8\x99\x80\x16\x68\x45\x35\x03\x19\x91\xf1\x1b\xfc\xd9\xb9\x56\x90\xaa\xd2\xd1\x9b\xd6\xa9\xde\x18\x44\xed\x13\x62\x30\x2d\xf4\x21\x72\x30\xb2\x5c\x05\x52\xce\x27\x75\x34\xc6\x50\xca\xe5\x26\x57\x7f\x25\xd8\xb1\xfe\x9f\x9f\xeb\xca\x2c\x81\x46\x70\xd4\x80\x5b\x21\xad\xef\x85\x2d\xaf\x94"}, +{{0xea,0x73,0xbf,0x64,0xa1,0xa9,0x78,0x77,0xc3,0xc3,0xe7,0xca,0x46,0x44,0xb7,0x1a,0xaa,0x66,0x31,0x4c,0x8f,0x1b,0x66,0xba,0xfa,0xeb,0xd5,0xed,0xfb,0x88,0x8b,0xcd,},{0xca,0xac,0x93,0x90,0x2e,0x57,0x64,0xad,0xe4,0x72,0x94,0xed,0xd5,0x1f,0xaa,0x14,0x62,0x09,0x40,0xc6,0x68,0xb5,0xc1,0xc3,0x92,0xa6,0x92,0x83,0x25,0xd4,0xc3,0xfd,},{0xbd,0x86,0xcb,0x9c,0x70,0xa0,0x55,0x27,0x9a,0x86,0xa9,0xe6,0x48,0x70,0x98,0x8b,0x8a,0x73,0x45,0xc3,0xcd,0x29,0x48,0xa0,0xfa,0xbc,0xfb,0x38,0xab,0xce,0x3c,0x42,0x0b,0x4d,0x55,0x21,0x61,0x8e,0x11,0xd2,0xde,0x82,0x7d,0x9d,0xe5,0x69,0xf6,0xbc,0x3b,0xe6,0x6a,0xad,0x40,0x63,0x6c,0xda,0xa6,0x47,0x60,0xde,0xd3,0xb7,0xc2,0x09,},"\x36\x2e\xec\x68\xb9\x12\x85\x27\x86\xbb\x4f\x9a\xff\xf9\xec\xf7\xcb\x28\xc9\xde\x6b\x18\x42\x2a\x8c\xa9\x40\xb0\xd7\xe6\xdc\xb8\x3a\xa4\x4b\xe0\xaf\xb5\xf1\x80\x6d\x43\xf0\xe3\x1d\x71\xf9\x22\xf8\x53\x61\x5a\x26\xe2\x87\xa2\x7f\x08\xa0\x4f\xbc\xe3\xd4\x5a\x0c\x6c\x31\x1d\x4b\x7c\xb1\x7e\x42\x5b\xbe\xb0\xa6\xb4\x10\xb5\xd6\xdb\xb7\xac\x11\xdf\x98\x50\xa1\x31\xa6\x91\xe3\xb6\x0b\x0b\x21\x4e\xbe\x04\x41\x06\xe9\x82\x43\x32\x87\x59\x52\x67\xb0\x31\xb5\xd4\xa0\x92\x62\xde\xd8\x93\x4f\xdf\xdf\x96\x4d\x86\x8e\xf9\xa2\xc8\x42\xf8\x04\xea\xfd\xde\xfc\xb7\x1d\x9f\x16\xa5\x9b\xf8"}, +{{0xb8,0x12,0x3c,0x11,0x6b,0x33,0xba,0xd0,0xdc,0xbc,0x2c,0x4d,0xc0,0x6a,0x3d,0x66,0x85,0x0d,0xab,0x36,0x0c,0xdb,0x5a,0x03,0x3c,0x14,0x89,0x5c,0x4e,0xe3,0x1b,0xfb,},{0xbd,0xca,0x15,0x1b,0xa3,0x2c,0x6b,0xb3,0x15,0x31,0xb0,0x5f,0xdf,0x86,0xc6,0xd7,0x8c,0x8c,0xd1,0x93,0x56,0x11,0xd5,0xff,0x11,0x1a,0x0f,0x00,0x63,0x5b,0x18,0x85,},{0x9c,0xf1,0x3e,0xba,0x3d,0xcc,0x37,0xb8,0xfc,0x70,0xcc,0xb2,0x32,0x74,0x36,0xb9,0xf0,0x88,0x55,0xe7,0x26,0xaa,0x7e,0xd8,0x2b,0xd5,0xcb,0x7d,0xf4,0x5f,0xdf,0x9e,0xc1,0xf9,0x6a,0xfa,0xd1,0x93,0xf4,0x75,0x72,0xd7,0x70,0x44,0x4b,0x65,0xb7,0x4a,0x37,0xcc,0x03,0x4f,0xc5,0x14,0xcb,0x3f,0x91,0xb2,0xd8,0xad,0xa5,0xb0,0x20,0x06,},"\x79\x70\xf6\x66\x66\x34\x54\x8c\x84\x8b\xb5\x23\x38\x81\x7b\x26\xa4\xd0\xca\x68\xdf\x3d\x28\xaf\xff\x20\x7c\x2d\x02\x80\x67\xa1\x8e\x4c\x95\x43\x02\x5f\x5b\x02\x28\xaa\x69\x1e\x50\x88\x51\x31\x51\xa9\x44\x94\xe1\x5d\x1f\x54\x21\x03\x28\xe0\xdf\x15\x9b\x35\x2c\x30\xaa\xa7\xa8\x44\xf1\x8a\x9f\x4c\x39\x5d\xcb\xb3\xfb\x9f\xcf\xbe\xd1\x10\x3e\x07\x06\xfb\xf9\xc3\x5f\xe2\x66\x68\x48\xfa\x35\xdc\x2c\xf5\x22\x7e\xbe\xe8\x9e\x7d\x3b\xcf\xae\x27\x21\xb2\x5f\xde\xc3\xd3\x17\x4e\xa7\xce\x26\x7a\x55\xdd\x61\xd5\x82\x01\xe9\x6b\xda\x30\x3c\xf4\x18\xed\xf6\xe3\x2f\xb9\x2f\x5d\xc1\xa0\xb1"}, +{{0xb1,0x8e,0x1d,0x00,0x45,0x99,0x5e,0xc3,0xd0,0x10,0xc3,0x87,0xcc,0xfe,0xb9,0x84,0xd7,0x83,0xaf,0x8f,0xbb,0x0f,0x40,0xfa,0x7d,0xb1,0x26,0xd8,0x89,0xf6,0xda,0xdd,},{0x77,0xf4,0x8b,0x59,0xca,0xed,0xa7,0x77,0x51,0xed,0x13,0x8b,0x0e,0xc6,0x67,0xff,0x50,0xf8,0x76,0x8c,0x25,0xd4,0x83,0x09,0xa8,0xf3,0x86,0xa2,0xba,0xd1,0x87,0xfb,},{0x6b,0xd7,0x10,0xa3,0x68,0xc1,0x24,0x99,0x23,0xfc,0x7a,0x16,0x10,0x74,0x74,0x03,0x04,0x0f,0x0c,0xc3,0x08,0x15,0xa0,0x0f,0x9f,0xf5,0x48,0xa8,0x96,0xbb,0xda,0x0b,0x4e,0xb2,0xca,0x19,0xeb,0xcf,0x91,0x7f,0x0f,0x34,0x20,0x0a,0x9e,0xdb,0xad,0x39,0x01,0xb6,0x4a,0xb0,0x9c,0xc5,0xef,0x7b,0x9b,0xcc,0x3c,0x40,0xc0,0xff,0x75,0x09,},"\x91\x6c\x7d\x1d\x26\x8f\xc0\xe7\x7c\x1b\xef\x23\x84\x32\x57\x3c\x39\xbe\x57\x7b\xbe\xa0\x99\x89\x36\xad\xd2\xb5\x0a\x65\x31\x71\xce\x18\xa5\x42\xb0\xb7\xf9\x6c\x16\x91\xa3\xbe\x60\x31\x52\x28\x94\xa8\x63\x41\x83\xed\xa3\x87\x98\xa0\xc5\xd5\xd7\x9f\xbd\x01\xdd\x04\xa8\x64\x6d\x71\x87\x3b\x77\xb2\x21\x99\x8a\x81\x92\x2d\x81\x05\xf8\x92\x31\x63\x69\xd5\x22\x4c\x99\x83\x37\x2d\x23\x13\xc6\xb1\xf4\x55\x6e\xa2\x6b\xa4\x9d\x46\xe8\xb5\x61\xe0\xfc\x76\x63\x3a\xc9\x76\x6e\x68\xe2\x1f\xba\x7e\xdc\xa9\x3c\x4c\x74\x60\x37\x6d\x7f\x3a\xc2\x2f\xf3\x72\xc1\x8f\x61\x3f\x2a\xe2\xe8\x56\xaf\x40"}, +{{0x93,0x64,0x9c,0x63,0x91,0x0b,0x35,0x71,0x8e,0x48,0xc5,0x90,0xd2,0x61,0xc4,0x8e,0x4e,0xf8,0x33,0x66,0x13,0xf6,0xaa,0x07,0x7b,0x46,0x26,0x76,0xb3,0xba,0x88,0x29,},{0x06,0xa6,0x85,0x89,0x8b,0x85,0x52,0x12,0xeb,0xc2,0x89,0x91,0x5d,0x10,0x5a,0x43,0x20,0xd6,0x20,0xd8,0x57,0x71,0xb8,0xc6,0xb1,0x5b,0xf1,0x0a,0x1b,0xe6,0xe9,0xb8,},{0x62,0x74,0xf2,0xd4,0xf4,0x31,0xd5,0xaf,0xfe,0xfa,0x35,0xe7,0xcf,0x58,0x4a,0x59,0x90,0x17,0x19,0x3d,0xa9,0x90,0x94,0xca,0x90,0x8b,0x75,0xac,0xb6,0x08,0xd1,0xbf,0x98,0x18,0x57,0xbe,0x93,0xa7,0xda,0xfb,0x0f,0xad,0xb3,0xff,0x09,0x06,0xf4,0x8a,0x5e,0xe9,0x50,0x45,0x6f,0x78,0x2c,0x2d,0x60,0x5b,0x14,0x09,0x5b,0xa0,0xff,0x0f,},"\x2c\xd1\xa9\x51\x05\x6c\x9e\xba\xe1\x39\x9b\x6b\xd2\xd8\x2c\x0a\xe2\x77\x85\x62\x90\xd0\x69\x20\xac\x56\xca\xc8\xfb\x42\x43\x51\x01\xc7\x2a\xa9\xc0\x8d\xd2\xd1\x24\x26\x32\x55\x62\xc2\xf0\xa4\x9c\xd8\x21\xb1\x1b\x93\x9a\xaf\xa5\x93\xb4\x09\x5c\x02\x1b\xcb\x48\x27\xb1\x07\xb9\x66\x4d\x68\x28\x28\x88\xbc\x4a\x44\xaf\x3e\x3b\xdc\x86\x1b\xe6\xaf\x30\x90\x44\xc3\xda\xab\x57\xb7\x70\x23\xdc\x90\x2d\x47\xeb\xc3\x26\xf9\xbd\xd0\x2d\xbc\x02\xcd\x54\x0f\xf8\x1b\x2d\xdf\x7c\xf6\x79\xa4\x11\x93\xdf\xe5\xf8\xc8\xca\x1a\xae\xfc\x41\xef\x74\x02\x80\xd9\x82\x3e\x30\xa3\x54\x71\x7c\x84\x31\xf5\xd8"}, +{{0x1c,0x15,0xcb,0xeb,0x89,0x36,0x2d,0x69,0x47,0x6a,0x2a,0xa4,0xa5,0xf3,0xef,0x20,0x89,0xcf,0x87,0x28,0x63,0x49,0xe0,0xdf,0xe0,0xe7,0x2d,0x9e,0x3e,0x5a,0x66,0xc7,},{0x13,0xa8,0x82,0xa1,0x06,0x41,0x82,0x58,0x2c,0x21,0x18,0x47,0xe1,0x9b,0x4d,0xac,0x59,0x72,0x2c,0x9f,0xfd,0x34,0x82,0x6d,0x96,0xf3,0x31,0x13,0x40,0x0f,0xac,0x7a,},{0x59,0x98,0xb2,0x80,0x8a,0xdf,0xde,0xea,0xeb,0xe2,0xc3,0xea,0xc0,0x26,0xd3,0xf8,0x25,0xf9,0xc7,0xf2,0xaf,0x97,0xca,0x32,0x4f,0xbd,0x57,0xaa,0xc1,0xbe,0xdf,0xf7,0x8a,0x8e,0xe6,0x21,0xd0,0x37,0xee,0x3a,0xd2,0xa7,0x12,0xe9,0xa0,0x09,0xc5,0x8e,0xa3,0xe6,0xf2,0xa8,0x28,0xf7,0x4b,0x86,0xda,0x27,0x5a,0x44,0xa4,0xb1,0xe5,0x0b,},"\x09\x1c\x9b\x9b\x11\x6a\xe8\x3d\x23\xd0\x1a\x62\x95\x21\x17\x85\xd4\x46\xb6\x22\x8d\xd6\x87\xdd\xf7\x9b\xd0\xd5\xa4\xda\xa8\xc7\x9d\x2c\xbf\xc3\x73\x65\xf1\xf2\x85\xe3\x61\x73\x81\x23\xe3\x4e\x2b\xcb\xfc\x66\x4c\xe1\x25\x3a\x11\xd9\xe4\xa7\x98\x2e\x58\xcf\x94\x68\xe1\x01\x7e\xa1\x4d\x2c\xc6\xd0\x86\x5d\x40\xfd\xe8\xcb\x56\x02\x41\xe9\x6a\xc1\x61\x7c\x79\x1f\x0c\xa7\xc6\x41\x0c\xad\xf3\x28\x61\x1b\x18\xae\xf3\x33\xd8\x35\x0a\xc4\x97\xf0\xa4\xae\x2d\x03\xfd\xf0\xe2\x3e\x42\x6d\x34\xf4\x51\x47\x80\xd1\x47\x4e\x11\x35\x83\x54\x1f\x3c\x04\x36\x72\x05\x71\x72\x61\x8c\xb2\x05\x9e\xaa\xed\x56"}, +{{0x11,0x24,0x1f,0xfd,0xf3,0x4a,0xe8,0xab,0x87,0x54,0x75,0xe9,0x4c,0x6c,0xc3,0x29,0x1f,0x0b,0x88,0x20,0xdc,0x85,0xe2,0x0f,0x32,0xfc,0x53,0xb2,0x4a,0xe6,0x89,0x78,},{0x09,0xc0,0x45,0xe4,0xbd,0x51,0x37,0x31,0x4c,0x0e,0xc1,0xd0,0x31,0xfa,0xf9,0x14,0x91,0x0c,0x45,0xa4,0x67,0x6f,0x5a,0x3c,0xd8,0xf5,0x81,0xbc,0xcc,0xb0,0x3c,0x97,},{0x72,0xce,0x9f,0x91,0xbe,0x2e,0x66,0xcf,0xc9,0x0f,0x95,0x25,0x95,0x94,0x6f,0xfc,0x90,0xbf,0xce,0x53,0x08,0x7d,0x49,0xe5,0xdd,0x7c,0x08,0x7f,0x3f,0xaa,0x8f,0x18,0xf2,0x35,0x6d,0xe9,0x71,0xe4,0x42,0x9d,0x98,0x5a,0x99,0x19,0x4b,0x4f,0x92,0xce,0xd3,0xef,0x47,0xcd,0x71,0x14,0x37,0x9e,0x0b,0x32,0x67,0xa9,0xf8,0xb1,0xe7,0x06,},"\x3b\x89\xde\xcc\xb7\x02\x3e\x4b\x2b\x7a\xff\x2c\x39\x51\x87\x0a\xf4\x13\xa9\xb0\x4d\xd8\x6a\xc7\x8b\x7c\x8f\xd8\x87\x49\x2d\x8d\xde\x49\xd8\xfd\xa1\x49\xed\xd5\x47\x81\xae\x2b\x50\x80\x30\xd1\x44\x16\xa9\xa3\x8b\xed\x2b\x9a\xeb\xbb\xb2\x02\x50\xb3\xc9\x31\xac\xd4\xe3\x2f\xbe\xee\xc5\xa2\x65\x01\xbe\xab\x72\x68\xd1\x44\xfc\xe8\x95\x1a\x10\x1c\x4b\x51\x78\x16\x6f\xbb\x59\x27\xb1\xdf\xb1\xe1\xce\x90\xd1\xd1\x23\x06\x8e\x3f\x47\x2c\x88\x8f\xdb\x01\xfd\xf7\x0e\x7f\x8d\xe9\xb0\xad\xb2\x84\xb7\x11\x9f\x55\x35\x43\x16\xf8\x4e\xd0\x90\x03\x0f\x9c\x26\x62\x06\x1c\xa4\x84\x47\xcc\x0a\xef\x96\x41\x26"}, +{{0x3b,0xdb,0x16,0x24,0x65,0xea,0xce,0xff,0x98,0xd6,0x9c,0x86,0xf7,0x00,0x39,0xc5,0x17,0xd1,0x68,0xae,0xfe,0x6b,0xb1,0x01,0xb4,0xf7,0x69,0xa8,0x6b,0x17,0xc9,0x72,},{0xd7,0x6c,0xb7,0xbe,0x74,0x32,0x82,0x89,0xfd,0x1c,0x64,0xbe,0x74,0x7c,0xca,0x5b,0xb3,0x02,0x95,0xdf,0xac,0xcd,0x0f,0x2e,0x43,0xf5,0x17,0x03,0xfd,0x5d,0x36,0x83,},{0x6f,0x13,0x62,0xa4,0x02,0x06,0x37,0x91,0xf9,0x50,0x98,0x4f,0x54,0x49,0x28,0xe6,0x16,0xa4,0xef,0x79,0xbb,0xeb,0x68,0x54,0xe9,0x61,0x5a,0xab,0x9c,0xdb,0xae,0xc4,0x83,0xfb,0x9a,0x04,0xbf,0x22,0xde,0x5d,0x97,0xa1,0x5b,0xda,0x2d,0x39,0x04,0x83,0xc7,0xf6,0x1d,0xbe,0xe0,0x7b,0xb5,0x14,0x1f,0xc1,0x73,0xb1,0xaa,0x47,0x65,0x0d,},"\xfb\xf3\x68\xfe\xae\xba\x87\x91\x8b\x1b\x8c\x7b\x8a\x26\x83\x2b\xe6\xe7\xfc\x1c\xbd\xb8\x90\x25\x19\x28\x1a\x06\x54\xec\x73\xde\x0b\xb0\x71\x01\xa9\xd6\x03\xf7\x45\xd4\xec\x23\x57\xae\xe9\x87\x0c\xb1\x9a\x56\xcb\x44\xfb\xd9\xc9\x1f\xc3\x47\x52\x61\x2f\xbd\x83\xd6\xfc\x1a\x16\xbf\x8a\x85\xa2\x15\xd0\x14\x8e\x4a\xf3\x7d\x29\x84\x67\xe5\xcc\x48\x6b\x13\x13\x52\xce\x09\x21\x82\xce\x82\x84\x15\x9a\x38\x12\xb3\x0b\xac\xbf\xf5\x95\x86\x38\x11\xbf\x9a\x30\xa9\xda\x49\x45\x65\xc3\xac\x18\x14\x43\x00\x18\xea\x0e\xee\xd3\x9c\xdb\xca\x27\xf9\x31\x40\xe4\x69\x49\xdb\x57\x0b\xfa\x2e\xd4\xf4\x07\x3f\x88\x33"}, +{{0xd5,0xef,0xe5,0x1d,0x5c,0xd8,0xe1,0x08,0xbd,0x92,0x2f,0xc0,0xea,0x12,0x61,0x90,0xa9,0x46,0x28,0xff,0xa5,0x3c,0x43,0x3a,0x51,0x80,0x22,0x79,0x2d,0xdc,0x78,0xef,},{0x42,0x6b,0x01,0xcc,0x61,0xff,0x5e,0x0e,0x72,0x4d,0xa1,0xd3,0xb2,0x97,0xf5,0x32,0x5c,0x18,0xc6,0x2f,0x64,0xd5,0xeb,0x48,0xd4,0xa5,0x21,0x6a,0x8e,0x9a,0x40,0x73,},{0x23,0x06,0xf5,0x8f,0xcd,0x4c,0xff,0x22,0x22,0xd8,0x1b,0x05,0xa4,0x75,0x53,0x2b,0x8b,0x19,0xdc,0x67,0xe6,0xd7,0x8d,0xdb,0x42,0x05,0xa3,0xb7,0x62,0x1c,0xc5,0xae,0xf0,0xb3,0x93,0xd5,0xd2,0x4d,0xd9,0x6c,0x88,0xcc,0xbc,0x53,0xa3,0x20,0x8d,0xa3,0x23,0xbe,0x45,0x87,0xd5,0xec,0x06,0x7c,0x82,0x0f,0x07,0x23,0xaa,0x44,0xe9,0x0e,},"\x9d\x17\xbc\xfe\x2d\xfc\x74\x2f\x41\x1c\xb5\x3a\x94\xf3\x59\xc0\x01\xab\xf0\x96\xc7\x41\xf3\x4a\xf4\x86\x79\xf2\x81\xe7\xce\x6b\xbd\x9e\x87\x70\x9f\xc0\x72\x8a\x56\x3d\xb2\xb9\xcf\x8e\xa4\xfb\xdc\xc3\x44\xc1\x84\x8e\x65\x3c\xe9\x70\xc6\xce\x29\xde\x2c\xcd\x52\x03\x00\x64\x9a\xdc\xdd\xfc\x75\x39\x71\xf8\x46\xaa\xc1\xba\x42\xae\x45\x28\x95\x2d\x94\x98\x0a\xa7\xc6\xcf\xa2\x14\x29\x07\x64\x7f\x89\x4a\xe9\x74\xa7\x4d\x59\x03\x5a\x73\xef\x56\xa1\x0b\x66\x12\x62\x48\x09\x52\x01\x90\xac\xe6\x61\xc3\xa4\x70\x95\xe0\x32\x2e\xfd\x78\x1d\x50\xd1\x16\x35\x98\xf2\xda\x32\xf3\x1b\xc9\xc4\xf9\x13\xd1\xb1\x48\x61"}, +{{0x18,0xaf,0x89,0x02,0x5e,0xbf,0xa7,0x6b,0xd5,0x57,0xcf,0xb2,0xdf,0xf1,0x48,0x24,0x52,0x14,0x64,0x1f,0xd5,0xbd,0xa1,0x59,0xf7,0x3d,0xa0,0x4b,0x08,0xe8,0x7c,0x88,},{0x0c,0x58,0x44,0x59,0xb9,0xeb,0xcc,0xca,0xd5,0x87,0xb2,0x72,0x16,0x0b,0xc6,0x0b,0x27,0xf4,0xf7,0x72,0xb4,0x32,0x1d,0xe7,0x72,0x3a,0xfe,0xf5,0x77,0xed,0xc7,0xb4,},{0x26,0xbb,0x08,0x82,0x29,0x7c,0x2c,0x08,0xa7,0x52,0xd3,0x98,0x11,0x45,0xdc,0xde,0x55,0x89,0x3a,0x11,0xdf,0x77,0xf8,0xaa,0x4c,0x19,0xd0,0xb9,0xed,0x6e,0x52,0x20,0xed,0x12,0xe9,0xfa,0xc3,0xaf,0x13,0xd0,0xf0,0xc7,0x15,0x68,0xf4,0xa5,0x47,0xd3,0x01,0x14,0xa6,0x59,0x9a,0x23,0x68,0x06,0xc4,0xbe,0xee,0x67,0x65,0x28,0x44,0x08,},"\xe8\x2f\x46\x65\x2a\xb9\x14\xaf\x53\x5d\x8f\xb7\x20\xb5\x57\xac\x95\x01\x8d\x9f\x2a\x3f\xcc\xe8\x57\x71\xbb\x40\xab\x14\xcb\x9a\x98\x6e\x09\x6f\x3a\xfe\x5b\xee\x82\x9d\xfd\x8b\x97\x33\x5c\x53\x6a\xc9\x71\xa2\x16\x55\xaf\x16\xa2\xf8\xfd\xba\x18\x3a\x4e\x18\x56\x4c\x21\x49\x29\x56\x53\x7a\x41\x9a\xbb\xbb\xb0\x2a\x4b\xbd\xc0\x14\x81\xf5\xc6\xe6\x58\xec\xf3\xc3\x4f\x01\x1a\xd8\x46\xf5\xed\xcd\x49\x39\x19\x5d\xf8\x5e\x41\x30\x3f\xb9\xa8\x8f\xdf\xbd\x70\x43\x96\xf7\x55\x9a\x32\x73\x18\xb9\x52\xb3\xe6\x0c\xe8\xdd\xde\x56\x37\x85\x79\x23\x2f\xaf\x95\x0c\x78\xe7\xf0\xb1\x7c\x3b\x8d\xec\xe3\x6b\x78\x8a\x84\x73"}, +{{0x0c,0x93,0xd9,0x98,0x15,0xff,0xf8,0xfe,0x22,0xb9,0xe4,0x5a,0xa0,0x2b,0x3e,0x64,0x45,0xce,0x1d,0x6b,0xf5,0xa6,0x5d,0xce,0x3d,0xa1,0x07,0xaa,0x10,0x55,0x94,0x0e,},{0x4d,0x27,0xa4,0x7b,0x0f,0xc8,0x08,0x00,0xd8,0x4d,0x24,0x4e,0xeb,0xb1,0xde,0xb4,0x43,0x6d,0x97,0x63,0x3a,0x83,0xe6,0x71,0x25,0xad,0x52,0xea,0x01,0x68,0x50,0x57,},{0x7d,0xc4,0x46,0x7a,0xbc,0xf6,0x43,0x1a,0xdb,0x7c,0xcf,0xe8,0x68,0xea,0xc8,0xcd,0x8a,0x61,0x5a,0x0f,0xf6,0x5f,0x6a,0x9e,0x33,0x83,0x75,0xb1,0xaa,0xe3,0xc4,0x9a,0x12,0x6c,0x9e,0xba,0x79,0x42,0x6d,0x16,0x41,0xc6,0xb9,0x7c,0x3e,0x92,0xc1,0x94,0xe5,0xee,0x44,0x31,0xef,0xa2,0x43,0x9f,0xd4,0x50,0xf2,0xcd,0x01,0x8c,0x87,0x00,},"\x11\xe8\x77\xde\x58\xc1\x34\xea\xf4\xc9\xf1\xb5\x3c\x3d\xc4\x51\xd3\xc0\x55\xf1\x6b\x09\x62\x27\x25\xb2\x79\x76\x85\x12\xfe\x10\xa7\xad\xb0\x76\x5b\x68\x9e\xc2\x1d\x5b\x6e\xfa\xa1\x9f\x1b\x9d\x36\x25\x4d\xf0\xa9\x36\x7f\x44\x1b\x26\xbd\xb9\x0b\x28\xcb\xc4\x03\xe5\x07\x40\x82\xfa\x1f\xed\x58\xe1\x40\xda\xc9\x7a\xea\xf4\x83\xe2\xc1\x3f\x3c\xc5\x60\xab\xff\xab\xa0\x5b\x76\x3f\xee\xdb\x51\xe6\x06\x98\x15\x1c\xf5\x6e\xfd\xf1\xd3\x7d\x6c\xe0\x56\x44\x86\x21\x0f\x05\x2e\x93\x7f\x2e\xa2\x6f\x63\xef\xa5\xd2\x47\xff\x18\x83\x29\xbb\x1a\xa8\x3c\xe3\xf4\xf3\x5a\x3d\x7d\xec\x14\x59\x9e\x5f\xeb\x7b\x6d\x5f\xe4\x29\x6a"}, +{{0x98,0x9e,0x99,0x94,0x56,0x35,0x19,0x2c,0x02,0x3c,0xc5,0x18,0x6f,0xc2,0x5b,0xba,0xef,0x47,0x24,0x07,0x75,0xd1,0x5a,0x56,0x19,0x5d,0x88,0xcd,0x07,0xc3,0x74,0x8e,},{0xca,0x0b,0xea,0xfd,0xf7,0x31,0xd8,0x93,0x01,0xf7,0x72,0x3c,0x5b,0xb7,0xe5,0xa1,0xc3,0xff,0x3e,0xab,0x27,0xc9,0x7d,0x71,0x1b,0xcd,0x76,0xe4,0x20,0x54,0xbe,0xe4,},{0xae,0xf7,0x56,0xbf,0xb8,0xa7,0x26,0x6e,0x17,0xd1,0x5f,0x3f,0x11,0xee,0x50,0xed,0x25,0xbe,0x42,0x0e,0x95,0xa0,0x74,0x22,0x71,0xeb,0xd1,0x22,0x94,0xe2,0xcb,0x96,0xea,0xd0,0x83,0xb8,0xff,0x0b,0x82,0x9d,0x2e,0xde,0xb1,0x4d,0xa8,0x6e,0x40,0x2e,0xf2,0x5e,0x6d,0x4a,0x5a,0x79,0x58,0xc1,0x84,0xed,0x10,0xc1,0x76,0xcb,0x57,0x0b,},"\xc4\x84\x14\xf5\xc7\x57\xd0\x3c\x52\x3e\xf3\xf3\xb8\x51\x07\x71\xb0\xff\x3b\x4b\x97\xde\x27\x96\x25\xd3\x49\xec\x18\x5a\x29\x92\x7a\x66\xb9\x59\x3b\xa1\x93\x38\xc2\xf5\xe4\x13\x1f\x1a\xc0\x7e\xa4\x6d\x2c\x1b\x6e\x4a\xb5\x22\x92\x80\xb2\xe2\xbb\x9d\x14\x0d\x1e\xf7\xaf\x7b\x16\x92\xbf\x2d\x09\x7b\x80\xf8\x11\xad\xcf\xa9\x5d\x5c\xbf\x9e\xee\x92\xa1\x64\x1c\x55\x2b\x4b\xe4\xa0\xd7\x34\xf0\xaf\xd4\x70\xb9\xd7\xf4\xe4\x57\x78\x95\x1e\x21\xfc\x53\x4f\x20\x0a\x12\x8b\x96\xad\xb8\x37\x3f\x10\xce\xce\xc2\xda\xc2\x99\x6a\x06\x2f\xb3\xc2\x94\x31\x59\x65\xa9\xd5\xd7\xb0\x77\xc4\xb0\x13\xc6\x4a\x38\x42\x97\x69\xd2\x3e\xab"}, +{{0x6b,0xdb,0xbe,0x06,0xd9,0xf4,0x21,0x9e,0xea,0x64,0x03,0xa3,0x57,0xb2,0x5e,0x56,0x19,0x92,0xfa,0xe0,0xf0,0xf6,0x14,0x56,0x1d,0xd8,0x6d,0x23,0xde,0x41,0x5a,0x43,},{0xed,0x52,0xdd,0x1c,0xce,0x32,0xd9,0xb4,0x85,0xe0,0x94,0x07,0x46,0x42,0x1d,0x36,0xb9,0xfd,0xe6,0xcd,0xf0,0x21,0x15,0x45,0xb6,0x34,0x04,0x4d,0x4b,0x3c,0xb8,0xf1,},{0x95,0x02,0x06,0x60,0x5b,0x0f,0x41,0x7c,0x90,0x84,0x3e,0x2c,0x8d,0x8e,0x66,0xc8,0x28,0xbb,0x10,0xb9,0x9b,0x36,0xee,0xee,0xe8,0xca,0xf2,0xe0,0xe5,0x48,0x4d,0x93,0xfe,0x02,0xbf,0x53,0x34,0x05,0xf4,0xbb,0x74,0xa5,0x0e,0x55,0x85,0xfa,0x0d,0xae,0xf4,0x82,0x1f,0x03,0x01,0xd0,0x1b,0x46,0x32,0x1b,0xaa,0x31,0xe1,0xf0,0x8d,0x03,},"\x58\x2a\xda\x13\xd6\x92\x93\xe4\x9b\xbd\x46\x10\x32\xdf\xea\x1c\xa2\x02\x5b\x52\xe0\x13\xa3\x3a\x03\x87\xfc\xfc\x5f\x7c\x0b\x8e\xc9\x55\x98\x26\x07\xfc\x90\x1e\x1b\x7f\x63\x6a\x9d\x37\x1e\x1f\x91\xfe\x47\x6b\xdd\x44\x85\x6e\x27\x5d\x67\xef\xa1\x42\x38\x16\x43\x54\xc2\x31\x12\x4c\x84\xde\x8f\x5b\x89\xd5\xa5\x8e\xa6\x74\x4b\x4d\x3b\x3d\x79\x06\x90\x52\x33\xcc\xe6\x94\xa6\x4d\x69\x6f\x5a\x70\x24\xfc\x90\x33\xb1\xce\x39\x08\x99\xa3\xb4\x41\xa4\x8e\x53\xc7\xc9\xb3\x0b\xa1\x2e\x7d\x61\xf3\x5f\x15\xe6\x58\xc7\xcc\x44\x07\xe2\xf6\x89\xea\x8a\x55\xd0\x1b\xf5\xdb\xac\xb1\x19\x54\x75\x4f\x92\x0f\x09\xdb\xd4\x84\x09\xbb\xb5"}, +{{0xd7,0x61,0xc8,0xc5,0xa9,0x60,0x1b,0x91,0x45,0xb7,0xd0,0x51,0x24,0x9b,0x00,0x41,0x07,0xe4,0x52,0xe5,0x63,0x10,0x0c,0x6c,0x78,0x80,0x38,0xc9,0xee,0x8a,0xda,0xd7,},{0xe6,0x48,0x87,0x75,0xd6,0x40,0x7e,0xfc,0x7b,0x2b,0xca,0x89,0x0a,0x7f,0xc6,0x22,0x66,0xfc,0x54,0xcd,0xac,0x89,0x33,0x43,0xb4,0xf5,0x9a,0x19,0x6d,0x94,0x88,0x98,},{0x7a,0xb7,0x8b,0x64,0xe6,0xdb,0x35,0x9a,0x2d,0xc8,0x30,0x2e,0x10,0x92,0xed,0x66,0xfa,0x73,0x6b,0x53,0x62,0x53,0xa1,0xcd,0x90,0xfd,0xb8,0xc1,0x0e,0xfd,0x78,0x30,0x02,0x25,0xe1,0x91,0x96,0x35,0x99,0xba,0x54,0x9c,0xc8,0x59,0x20,0x9d,0xf0,0xff,0x61,0xcd,0x06,0x9b,0x03,0xd2,0x54,0xe6,0xe7,0xd7,0x6c,0x79,0x84,0x40,0xf9,0x07,},"\x84\xea\xd5\xea\xbd\x2f\xd4\xb7\xc7\x9a\x9a\x92\x8a\xb8\xee\x0a\x16\xa5\xfd\x66\x7a\x05\x7f\x8a\x25\x46\x63\xd5\x6d\xaa\xe1\x56\xd1\xa4\x9a\xff\xb2\x99\x61\x37\xb9\xd8\xb3\x40\xe6\x35\x73\x2f\x9d\x2b\x4c\x60\x21\x84\x42\x54\x1e\x72\xd2\xb0\x0e\x1e\xe7\xa7\x3c\x3f\x67\xca\xa4\x99\xfa\x9d\x07\x0b\x57\xd0\x76\xdc\xde\x96\xb0\x76\x47\x23\xc3\xc6\x59\xc7\xa0\x0c\x1b\x78\xb1\x5c\xcc\x22\x23\x89\x0b\x51\x06\x7f\xc8\x1e\x23\xe9\x45\x8a\xb0\x68\x3b\xa6\x26\xa5\x3d\x0c\x37\x93\xa5\x8a\x98\x57\xbb\x44\xb3\xbd\x85\xbb\x6c\xe5\x3a\x85\x69\x4e\x7f\x53\xcc\x1b\xd4\x6d\x50\xed\xa3\x7d\x81\xf5\x38\x1b\x51\x3d\x1f\x38\x33\x9d\x29\x1b"}, +{{0xc5,0xe0,0xc7,0xa7,0xbb,0x8b,0x7c,0xa0,0x7b,0xf0,0xa0,0x5e,0xa6,0x7e,0xff,0x6d,0xee,0xbf,0xe3,0x71,0x4e,0xe3,0xe1,0xa2,0x27,0xf4,0xdc,0x8e,0x24,0x2a,0x2f,0xa0,},{0x51,0x35,0xef,0xcd,0x90,0x52,0xbe,0xc5,0x7a,0x44,0x31,0xca,0xab,0xe8,0x26,0x80,0xee,0xc0,0xa3,0x3a,0xfd,0x59,0xb3,0x02,0x03,0xb2,0x80,0xba,0x12,0xbe,0x48,0x5c,},{0x2e,0x7f,0xde,0xb3,0x48,0x4d,0x0a,0x5e,0x8d,0xce,0x94,0x44,0x89,0x79,0x49,0x6b,0x06,0x42,0xca,0xbc,0x37,0x33,0xa5,0x1f,0x8c,0x3c,0x5c,0x51,0xc1,0x9a,0xe3,0x19,0x01,0x8d,0xa9,0x10,0x91,0xc2,0x38,0x5f,0x2f,0x4e,0x9a,0x59,0xed,0xbc,0xa2,0xab,0xd0,0xd0,0x85,0xee,0x40,0xd3,0xf0,0xd4,0x20,0x61,0xa5,0xa9,0x83,0x2a,0x37,0x0c,},"\x37\x70\xa6\x78\x66\x52\xc4\xb7\x8a\x04\x3e\xdc\xe0\x7f\x3e\x20\x4d\x81\x99\x7c\x42\xaf\xc2\x23\x31\xf7\x5a\x54\x94\xa8\x26\xd7\xcb\x69\xab\x43\x14\xa4\x73\x72\x10\x58\xa1\x83\x99\x81\xd5\xb7\x02\x2d\x0c\xd8\x67\x03\x77\xda\xf3\x32\x04\x76\xd2\x5b\x9f\x55\x95\x61\xd6\x6e\xe0\xa7\x09\xfe\x17\x36\x1e\x2a\x52\x89\x8f\x57\x53\xc4\xfb\x43\xbd\x0c\x98\xb3\x68\xf5\x12\xad\xc0\x9c\xd9\x27\xc6\x62\x26\x76\x92\x6d\x8c\x2d\x91\xa1\x4a\xca\x32\xf2\x26\xf7\x00\x36\xc1\xc8\x58\xbc\xff\xc2\xb5\x9f\x54\xc1\xc3\x7b\xf8\x1e\xb5\x2e\xcb\x3f\x00\xda\x60\x2c\x94\x36\x1b\x52\xa5\xaf\xdd\xbf\xd7\xe0\x50\x36\xe3\x77\x50\x30\x50\x33\x3b\xe5\x12"}, +{{0x11,0xbb,0x47,0x48,0xd2,0x54,0x7e,0x61,0x96,0xbe,0x82,0x3c,0x9b,0xe7,0xaa,0x18,0x15,0x0c,0x20,0x4b,0x12,0xca,0x8d,0x73,0xc1,0xbd,0x46,0xb1,0x1a,0x54,0xb4,0x75,},{0xef,0xeb,0x42,0xda,0x28,0xd7,0x64,0x96,0x64,0x03,0xdd,0x30,0x0d,0x9f,0x94,0x51,0xb2,0x58,0xab,0x1c,0x80,0xdf,0x06,0xfe,0x59,0x43,0x15,0x3f,0x53,0x01,0xcc,0xcb,},{0x44,0xc5,0x8d,0xa4,0x9d,0x23,0x65,0xd2,0x70,0x29,0xd1,0xee,0xbb,0x3b,0xeb,0xf7,0xc0,0x32,0xd8,0x58,0xaa,0x07,0xe0,0x75,0x6b,0x1c,0x26,0xa5,0x41,0x2d,0x22,0x69,0x11,0x76,0x03,0x13,0x41,0xad,0x37,0xd7,0xbb,0x78,0x43,0x28,0x9e,0xb3,0x9d,0xb4,0x91,0x58,0x4c,0x1b,0x2a,0x1d,0xa2,0xe4,0xa2,0x64,0x9c,0x22,0x93,0x82,0x66,0x06,},"\xf4\xb7\x65\xb2\x58\xba\x35\xb4\x27\x52\x5c\x7f\x10\xa4\x6f\x0b\xcc\xd3\x57\xec\x1a\xd5\x2a\x5b\x13\x94\x17\xa9\xd3\x89\x4c\x51\x2d\x89\xeb\x88\xe6\x81\xb1\xf3\x0a\xac\x4c\x11\x5c\xcf\x36\x54\x5e\x83\xf3\x78\x34\xc8\x2e\x83\x00\xcc\x1e\xb2\x89\xaf\x43\x75\x96\x8c\x29\xc0\xff\xef\xb4\x0e\x15\x6c\x20\xc0\x43\x26\x69\xac\x8d\xc0\xa8\x3c\x13\xb1\xe8\x55\xa8\x4a\xd0\x13\x3c\x40\xc8\x2c\x87\xee\x1e\x7d\xd4\x08\x4d\x74\x1c\x80\xde\x8a\x7a\x9f\x77\x59\xe8\x43\xa5\x62\x09\x9c\x4d\x7d\xf8\x75\x35\x20\x39\xff\x4d\x38\x24\x65\x13\x86\xc9\x77\x59\xff\x7d\xba\x52\x06\x4e\x6d\x31\x12\xe0\x80\x81\x9a\xee\x8c\xe7\x23\xa1\xa2\xaa\x46\x4d\x8a"}, +{{0x74,0x52,0xa0,0x01,0x56,0xd7,0x94,0xed,0xeb,0xff,0x4a,0xdb,0x1f,0x7a,0x7e,0xec,0x26,0x21,0x7f,0xef,0x67,0xc3,0xd2,0x68,0x35,0x2b,0x2b,0x54,0x60,0xa7,0xdc,0x25,},{0x5f,0x4d,0xc3,0x38,0xcf,0xbd,0x38,0x4b,0x5f,0x1c,0x14,0xc2,0x26,0x70,0x14,0x46,0xb5,0x2b,0x1e,0x3e,0x2a,0x3c,0xba,0x1a,0x40,0xee,0x28,0x25,0x08,0x0d,0x1d,0xe6,},{0xa8,0xf9,0xfa,0x24,0xa3,0xde,0xa1,0x02,0x2e,0x73,0xf0,0xd8,0x8b,0x1c,0x37,0xd0,0x6d,0x0f,0x0b,0x20,0xbb,0xff,0x0e,0xcd,0xb4,0xa4,0x0c,0x86,0xd7,0xe4,0x75,0x61,0x7c,0x03,0x57,0x0a,0x74,0x19,0xd7,0x4b,0xa0,0xf1,0x32,0x70,0x96,0xbf,0x19,0xf0,0xd0,0xcf,0x9f,0x51,0xd4,0x83,0x11,0x2f,0x26,0x92,0x23,0x78,0x68,0x2f,0x48,0x07,},"\x8c\x4e\xe2\x86\x76\x56\xe3\x3f\x52\x69\x41\x4d\x77\xb4\x2d\x8e\x47\x50\xdb\xa9\x3c\x41\x8b\xac\xca\x10\x93\x8c\xc3\xb5\x70\xc6\x60\x3d\x52\xc2\x34\x44\x88\x60\x7b\x2f\x93\x4f\x6d\x26\x9f\xcb\x2a\xd9\x66\x21\x9b\x1a\xb1\x14\x72\xf4\x2c\x67\x2c\xe2\x05\x92\x49\x0e\xc5\xba\xf6\xa2\xd2\xfc\x8a\x3e\xe3\x53\x74\xb1\x90\x2f\xde\xfc\x78\x70\xb1\xb6\x26\xfa\x46\xb1\x2b\x6c\xee\x24\x1f\x60\x1a\x9b\x3f\xe4\xc5\x08\x12\xe5\x73\xe6\x75\x2c\xe2\xc7\x64\x4e\x33\x67\xa6\xa6\xb7\x77\x58\xd8\xe4\x93\x4b\x58\xaf\x23\xab\xae\x8f\xec\xac\x25\xed\xd7\x34\x03\x0e\xe7\xcf\x39\x90\x7e\x3e\xed\x81\x86\xa1\x9a\x80\x71\x03\xa9\xfc\x49\xd3\x8f\x4c\x84\x60"}, +{{0x88,0x0e,0xf1,0x06,0x73,0x3f,0x04,0xe7,0x61,0x95,0xeb,0xa2,0x80,0xb3,0xfa,0xdd,0xa0,0xf2,0x5d,0xcf,0x96,0xa6,0xa9,0x9c,0x8c,0xcf,0x84,0x2c,0x68,0xaf,0xda,0xe5,},{0x70,0xce,0xe3,0x3d,0x41,0xc7,0x28,0xce,0x7b,0x14,0x19,0x31,0xe6,0xe8,0x52,0x45,0x67,0xd7,0x60,0x1e,0xb7,0x9f,0x67,0xfd,0xcd,0x07,0xb9,0xd6,0x82,0xc6,0x50,0xf0,},{0xff,0x6c,0xae,0xdd,0x8a,0x46,0x8a,0xa0,0x7d,0x4c,0x6e,0x71,0x31,0xbb,0xda,0x76,0x18,0x2b,0xa9,0x58,0x64,0x93,0x76,0xe7,0x11,0xf4,0x4c,0x7b,0xba,0xcb,0xa6,0x07,0x7b,0xea,0x87,0x8b,0xa5,0x94,0x9c,0xde,0xee,0xf0,0x5c,0xfd,0x49,0x83,0xb0,0x05,0x7d,0x27,0x5e,0xa3,0xe1,0x8c,0x32,0x65,0x94,0x68,0xc3,0x0c,0x47,0xac,0x8f,0x0b,},"\xf4\xf3\x8d\x07\x7f\x2b\x03\xda\x82\x1b\xd3\x6f\xde\x67\x3d\x66\x6e\x52\xf4\x83\x2e\x1c\x0d\xcf\xee\xf0\x49\x32\x8a\xcb\x7b\xd7\x1a\xd2\xbf\xc4\x9c\x12\x35\x16\xe1\x96\xc4\x70\xdf\x08\x47\xb3\x84\x8a\x45\xa2\xc6\x9b\xea\x03\xe2\xaf\xa7\xe5\x82\x05\xb6\x3b\x52\x38\x14\xfc\x8e\x24\x2f\x05\x9c\x69\xff\x7e\x40\xf9\x7b\xe8\x12\x5b\x70\xa5\x4f\xda\xf3\x5a\xea\xfa\xc7\x91\x14\xa7\xb4\x19\xe6\xbb\x9e\x70\xbf\x07\xad\xb5\x59\x81\x96\x00\xdc\x25\xe5\x1b\x4b\x70\x0d\x27\xca\x54\x72\xa0\xe7\xcb\xbf\xd1\x4e\x09\x9f\xaa\x3a\x72\x00\x2d\xa5\x38\xcb\xe4\x5d\x62\x1e\xf0\xd5\x25\x2b\xa2\x9d\x83\xf8\xb3\xec\x83\x89\xc9\xce\xb6\xc6\xb2\xe8\xd8\xa2\x0f"}, +{{0xa2,0xd8,0x8f,0x37,0xec,0xc2,0xb2,0xc0,0x5d,0xd6,0xcb,0x31,0x59,0x96,0x2c,0x5f,0x64,0x6a,0x98,0x15,0xb2,0xfb,0x37,0x79,0x1f,0xc7,0xb6,0x06,0xe2,0x91,0x3e,0xd5,},{0x58,0xdd,0x67,0xd7,0xa1,0x5d,0x4c,0xa0,0x34,0x1a,0x4c,0x86,0x95,0x66,0xca,0xd8,0xc4,0xee,0x16,0xe5,0x83,0xa1,0x0b,0x48,0x24,0x17,0x3b,0x08,0x29,0x0d,0x92,0xd1,},{0xcc,0xf2,0x40,0x0c,0xd6,0x73,0xe1,0xef,0xfd,0x20,0x16,0x1d,0x7b,0x68,0xa5,0xfb,0x87,0xc1,0xe9,0x9d,0x36,0x35,0xd7,0x8c,0x2d,0xa1,0xb5,0x09,0xfa,0xc3,0x33,0x46,0xc0,0x69,0x16,0x3a,0x6c,0x46,0xc7,0x82,0x6a,0x48,0xbb,0xbd,0x03,0xb0,0x5e,0x6e,0x23,0x51,0xfa,0x62,0xbf,0x89,0xbf,0x7c,0xcf,0x9a,0x90,0x24,0xbd,0x15,0x7d,0x07,},"\xd1\xb8\x7e\x9e\x88\x6d\xfb\xbd\xc8\xca\x8a\xb9\x01\x0e\xcf\x9b\xba\xf2\x3f\x72\xab\x3c\xbe\x76\x9d\xb1\xd4\x3c\x2a\x47\x4a\x81\x65\x1c\x46\x4e\x9f\xb9\x27\x34\x63\x46\x41\xc9\x48\x5a\x02\x39\xb3\x11\x07\x71\xe7\xf7\x5e\x05\x25\x2e\x4d\x8f\x4c\x0a\xa1\xba\x08\x62\x6d\x7e\x96\x31\x7c\x20\xac\xde\x2a\xd9\x9b\x23\xbd\xad\xfd\x6f\x17\x46\x8e\xb4\x02\xec\x5e\xef\xa5\x7b\x47\xca\xf9\x72\xb3\xdd\x21\xd8\x9f\x0e\x29\x89\xff\x87\xd5\x1e\xd2\xe2\xd6\x39\xc1\x64\x4e\x69\x8c\xbe\x02\x21\xb8\xe1\x79\xf3\xcf\xb0\x4a\x20\xcb\x24\x70\x21\x6a\x68\x82\xfb\x4f\xf7\x99\xe1\x15\x36\xcf\x64\x21\x9f\x0c\x07\x51\x76\xbc\x7c\xf0\xf6\xc5\xb7\x92\x5f\xcd\x61\x55"}, +{{0x42,0xaa,0xfd,0x0a,0xe2,0x6d,0xf1,0xe7,0xaa,0x02,0x76,0x86,0x0d,0x75,0x27,0x83,0xaf,0x97,0x28,0x04,0x39,0xbb,0x23,0xea,0xe4,0x6e,0x3f,0x84,0xca,0xac,0x78,0xde,},{0xda,0xa2,0x35,0x0a,0xdb,0x55,0xdb,0xa9,0xdf,0x7d,0x7a,0xf5,0x10,0x19,0x98,0xfe,0x51,0x5d,0x31,0x1c,0x3c,0xba,0x3e,0xea,0xb9,0x13,0x82,0x33,0x19,0x0c,0x3b,0x4e,},{0x11,0x61,0x43,0x65,0x0b,0x6c,0x13,0x3d,0x61,0x78,0x59,0xdb,0x24,0x29,0xc2,0x91,0x35,0x79,0x79,0x0b,0x21,0x97,0xd7,0xb7,0xb1,0xb4,0x96,0x2b,0x32,0x87,0x21,0x03,0x2c,0xee,0xca,0x58,0xb2,0xd5,0x64,0x39,0xe2,0x33,0xbb,0x84,0xdc,0x52,0x5e,0x28,0x4f,0xf8,0xdf,0x2b,0xde,0x1d,0xb4,0x98,0x6f,0xaf,0xd2,0x1b,0x3d,0x7d,0x6a,0x0a,},"\x72\x13\x1b\x80\xad\x59\x9b\x6f\x5f\xf6\x98\x54\x7d\x16\xe7\x49\x9d\x71\x27\x5e\x4e\x9b\x30\x52\x6a\x5a\xac\x0b\x0c\x8b\x14\xfa\x4a\x54\x0c\xfb\x11\x45\xfc\x00\x44\x18\xbc\xd3\x18\xc1\xa7\x0e\x62\x69\xa3\xfb\x69\xba\xed\x86\xf3\x63\xf5\xb8\xf9\x7f\x56\x9c\x20\xd4\xf4\x99\x0e\x7b\xb4\xd0\xc3\x99\x21\x26\x8d\x63\x6e\xd0\x55\x4b\xd6\x2a\xcf\xca\xcd\x3b\x8e\x03\x02\x17\xaa\xfa\xc3\x04\x4c\x03\x7e\x0f\x94\xda\x18\xc6\xb9\xa0\x93\x2c\x3c\x58\x75\xd3\xa9\x3f\xbd\xad\xcf\x67\x96\x4e\xec\x9e\xc2\xbe\x69\xb4\x8f\x02\x0f\x6c\x98\x74\xde\x5f\x8a\x51\x67\xb5\xee\x02\x4a\x2c\x2e\xfd\x0c\xdc\xd2\xac\xd8\xc1\xf7\x87\x81\x41\x41\xe3\x0b\x38\xb1\x63\x17\x5b"}, +{{0xb6,0x9c,0x33,0xb1,0x1b,0xa6,0x78,0x41,0xc3,0xd4,0xe6,0xf9,0x23,0x4e,0x35,0x37,0x0a,0x28,0xb4,0x76,0x62,0xac,0x56,0x0b,0x27,0xc0,0x78,0xb6,0x6a,0xb1,0xb0,0x21,},{0x9d,0xf6,0x8e,0x9a,0xcf,0x67,0x37,0x92,0x61,0x74,0x4d,0xb5,0xd1,0xe3,0x77,0x89,0x2f,0x2b,0x69,0x2e,0xd5,0xa3,0x8b,0x37,0x07,0x3c,0x04,0xde,0x5d,0x22,0x67,0x37,},{0x24,0x36,0x8f,0xee,0x5b,0xd8,0x48,0xb4,0xc6,0x61,0xa3,0xbe,0x4f,0x31,0x0c,0xfc,0x43,0x6e,0x79,0xec,0x4a,0x78,0x50,0x1b,0x81,0x09,0x5f,0xe5,0x16,0x14,0x23,0x1b,0x6c,0xa1,0xab,0x12,0x69,0x99,0x6a,0xd2,0xe9,0x8e,0x29,0x97,0x81,0xaf,0x8e,0x29,0x80,0x4b,0x24,0xfe,0x56,0x79,0xca,0x3b,0xa6,0x50,0xc5,0xc4,0xcc,0x58,0xce,0x01,},"\xf9\xea\x12\x6d\x3a\xb2\x19\x61\xaa\x24\x33\x90\x0a\x39\x82\xb8\x3e\x0e\xf8\x6d\x52\xd1\x34\x40\xaf\xa4\x81\x7f\x9b\x82\x2f\xb5\x82\xcc\x39\x32\xbf\x45\x0d\x46\x77\xc9\x18\x81\x81\xfe\x75\x26\xad\x6f\xe5\xab\xc6\x1d\x0a\xe7\x59\xf2\x15\x01\x3c\x0b\x2b\x41\x06\x4c\xb6\x27\x8b\xa7\xe3\x9e\x2f\x4c\x10\xd6\xcc\x96\x05\xb3\x86\x9e\x16\x9d\x7d\xa4\x2e\x88\xeb\x85\x78\x70\xfe\x61\x18\xbb\x02\xbc\x08\xc8\x05\x5f\x0c\x18\x9b\x62\xf7\x9f\xb1\x46\xb4\xc5\x43\xaa\x30\xcc\x0c\xd5\x7f\x03\x7e\x9e\xf7\xa6\x37\x11\xf6\x6e\x6f\x28\x78\x93\x17\x02\x20\x27\x02\x61\x42\x77\xd5\x13\xf0\x85\x0b\x75\x85\x49\x33\x6b\x30\xcf\x40\xab\x8b\xd4\x60\xe6\x0e\x12\xde\xed\x04"}, +{{0x7b,0x63,0x61,0x3f,0x6d,0xae,0x01,0xcd,0xcd,0x5e,0x6b,0x37,0x68,0x69,0x71,0xcd,0x8d,0x8a,0x99,0x54,0x2f,0x63,0x29,0xa1,0x28,0x54,0xa9,0xd8,0xff,0x81,0x05,0xac,},{0x72,0xec,0x43,0xfa,0xf3,0x4d,0x87,0x30,0x17,0x7d,0x1f,0x07,0x43,0xc7,0x4c,0x20,0xbf,0x72,0xc2,0x39,0x4b,0x8a,0x7d,0x47,0x1f,0xfe,0x2a,0x04,0xab,0x00,0x81,0x1c,},{0x76,0xf5,0x0b,0x2b,0x9c,0x2a,0xd9,0x7b,0xfb,0x94,0x99,0xee,0x41,0x92,0x8a,0xc0,0x72,0xda,0x5e,0x8b,0xc7,0x1d,0x02,0x12,0x55,0x09,0x42,0x33,0x2b,0x62,0xe7,0x0c,0x8b,0xfe,0x1c,0x72,0x25,0x42,0x39,0x46,0x88,0xde,0xcd,0x91,0x7a,0xec,0x8f,0x95,0x35,0x3e,0x1d,0x72,0x62,0x4b,0x70,0xeb,0xed,0x5d,0x17,0xf6,0xc5,0x49,0x77,0x02,},"\x18\x16\x48\x8f\x1f\xc8\x3e\x1e\xd5\x91\x16\x37\xdd\x42\xba\x20\x77\x65\x7d\xfe\x1a\xe4\x22\xad\x0a\xee\x59\xdf\x9d\xd5\x6a\x27\x63\xc2\xdd\x0e\xf6\x1a\x12\xbb\x82\x5b\x0d\xac\x1e\xda\x5f\xbb\x69\x1c\x5e\xd5\x8f\x3f\xb3\x25\x05\x0b\x45\x63\xa4\x04\x20\x99\x98\x2f\xff\xa5\xd6\xed\x74\x2d\x95\x82\x3d\xa8\xe1\x78\x7c\xf7\x46\xef\x63\xb3\xfb\xb0\xe8\x8a\x6c\x0b\xea\xe4\xf7\x31\x83\x66\x93\x6b\x49\x17\xf5\x07\x33\x60\x68\xb1\x94\x68\x09\x00\xa7\xbf\x4a\x6f\xb6\x9a\x5c\x38\x7b\x97\xe3\x1b\xc7\xf9\xbe\x53\xc2\xa8\x9e\x36\x51\xce\x1d\xe4\x1b\x10\xe9\x21\xb2\x06\xeb\xf3\x2e\x56\x21\xef\x80\x81\x61\x6d\xcd\x7a\x20\x59\x43\x7e\xfa\xd0\x14\xbb\x8e\x2c\x82\x21"}, +{{0x35,0x58,0xd3,0xa7,0x43,0x95,0xbd,0xcb,0xa5,0x60,0xe2,0xc4,0x5a,0x91,0x96,0x0c,0xec,0x6c,0xb3,0xed,0xbc,0xd3,0x0e,0x72,0x2f,0x7f,0x05,0x52,0x10,0xf3,0x7b,0x51,},{0x53,0x4f,0x43,0xeb,0xa4,0x03,0xa8,0x4f,0x25,0x96,0x7c,0x15,0x2d,0x93,0xa0,0x17,0x5e,0xc8,0x29,0x3e,0x6f,0x43,0x75,0x31,0x9e,0xad,0xf9,0x57,0x40,0x1f,0xbb,0xd2,},{0xb3,0x65,0xb5,0x56,0x1a,0x13,0xa5,0x45,0x17,0xcf,0x90,0xd8,0x8b,0x35,0xeb,0x09,0x67,0xd6,0xd5,0x84,0x14,0xb8,0xc1,0x54,0x7e,0x69,0x31,0x59,0xe0,0x13,0x78,0x56,0x36,0x54,0xc5,0x0f,0xb4,0x23,0x23,0xf0,0x9d,0xd7,0x8f,0xfe,0x28,0x05,0x6d,0xdf,0xa5,0x4f,0xeb,0xf4,0x48,0x91,0xe8,0xa7,0x41,0xb6,0xa1,0x68,0x7d,0x72,0x86,0x05,},"\xbe\x75\x44\x4f\x9c\xe6\xbe\x1d\x83\xaf\x62\x2a\x8c\x47\x8d\x51\x01\x27\xdb\x56\xf1\xde\x6e\xb8\xa5\x12\x65\x22\xb0\x9f\xdc\x6c\xa0\x86\x2c\xec\x0b\x8b\x2a\xaf\xa3\x1c\x17\xa2\xcc\x47\x7d\xa5\x33\xd2\x76\xa1\xae\x4f\x8e\x07\x59\xd6\xaf\xa0\xb1\x74\x11\xb5\x17\x0b\x52\xf2\x05\x47\xc7\x2f\x3e\x88\xd4\x8c\xb4\x56\xfe\x62\x5b\x62\xfe\xb0\xf8\x13\x17\xed\xf1\xec\x09\xec\xe5\x34\xb9\xf5\x00\xd4\xe1\xb1\xbd\xa2\xdb\x21\x98\x2a\xa9\x50\x94\x22\x6e\xe9\xf5\xb0\xa6\x5d\xa8\x3f\x91\x12\x1c\x96\xb3\xb4\x01\x0a\xe7\x82\x6c\x9e\x80\x63\x6c\xba\x00\xf7\x0c\x3c\x8a\x27\x9b\x01\xb9\x52\x94\xcb\x85\x0f\x91\x70\x9f\x43\x76\x66\x2a\x58\x0b\x15\xac\x29\x81\xaf\xe9\xf8\x54"}, +{{0xa3,0x5b,0x92,0xf2,0x44,0x06,0x3a,0x19,0xbb,0x5e,0x3e,0xd4,0xd6,0x99,0xed,0x20,0x69,0x60,0x71,0x16,0xd2,0xbd,0x08,0x11,0x3f,0x0d,0x83,0x73,0x61,0x3f,0x35,0xb7,},{0x7e,0xc9,0x36,0x01,0x86,0x4e,0xe4,0x99,0x5a,0x4f,0x7a,0xbc,0xd3,0xdf,0xc1,0x01,0xe9,0xe7,0xf3,0x69,0xe6,0x3d,0xe1,0xae,0x68,0xa0,0x7a,0xa7,0xf0,0x75,0xb3,0x29,},{0xa2,0x3d,0xbe,0x37,0x57,0xe4,0x78,0xdb,0xc8,0x4d,0x3d,0xb3,0xa9,0x33,0xb0,0x42,0x8c,0xed,0xb6,0xb0,0x1b,0x86,0xd8,0xd7,0x3f,0x39,0x59,0x87,0x8d,0xae,0x6f,0x05,0x88,0xf5,0x05,0xcd,0x4d,0x39,0xf2,0xab,0x46,0x77,0xb6,0x48,0x05,0xd6,0x29,0x65,0x2a,0x22,0x52,0x98,0x25,0xc3,0xa9,0x1d,0x04,0x37,0x49,0xfc,0x71,0xf0,0x37,0x06,},"\x65\xcd\x36\xda\xe0\x16\x8d\x69\x97\x4f\x95\xf0\x9d\xd9\xa5\x9d\xb7\x99\xf9\x11\xe1\xa1\x5b\x85\xa0\x08\x93\xb8\xc9\xa3\xd4\x8a\x2f\x58\xac\x12\x6b\xfa\xa0\xa6\x06\xc0\x5d\x94\x70\x1d\x27\x3a\xbf\x7d\x68\x81\x7f\x2c\x71\xb1\xc5\x41\x79\x5c\x4f\x60\x95\xe2\x6c\x9d\xff\x80\x3f\x03\x2f\x75\x66\x3f\xd1\x69\x8e\xdd\x97\xff\x3a\x0e\x72\xe1\xb7\xc9\x94\x8b\x08\xba\xcb\x5f\x7d\xe5\x02\xb2\xfe\xa6\x7c\xa2\xfe\xf1\x90\xd6\x0e\xae\x92\xd1\x51\x58\xda\x44\x4a\x49\xd2\xe9\xd5\xa5\x73\xe8\xe1\x77\xe8\xbb\xf7\xe6\xc4\x9f\x90\x71\x36\xe7\x1d\x2a\x66\xcb\x07\x63\x6d\x48\x76\x8f\xf4\x17\xc8\xbe\xcc\xf4\x32\x31\x81\xfe\xfb\x31\x24\xe4\x34\x04\x9e\xa4\x5d\xd5\x01\x9e\x40\xb4"}, +{{0x72,0xd4,0xa5,0x64,0xca,0x15,0x49,0x9b,0x5e,0x4e,0x75,0xd8,0xac,0x0f,0x28,0x21,0x7d,0x32,0x11,0x4a,0x0c,0x64,0x9a,0x7c,0x8e,0xaa,0xdd,0x0c,0xc7,0x8c,0x52,0x0b,},{0xc7,0x66,0xbd,0x73,0x83,0x7c,0x4f,0xaa,0x52,0x15,0x50,0x2f,0x1e,0xfc,0x90,0xc0,0x03,0xf7,0x11,0xbb,0xef,0x55,0x17,0x00,0x91,0x02,0x8a,0x34,0x49,0x34,0x08,0xa9,},{0x8f,0xc4,0xf1,0x79,0x33,0x0b,0x64,0x2d,0xd8,0x6c,0xa9,0x36,0x26,0x51,0xb8,0x3b,0x00,0x6d,0x83,0x75,0xcc,0xef,0x81,0x1d,0x3c,0x67,0x06,0xf9,0x15,0x94,0x65,0x1d,0xf2,0x76,0x99,0x53,0x72,0x30,0x46,0xcc,0xb9,0xbf,0xe6,0x6a,0x66,0x7e,0x0d,0x11,0xfc,0x3e,0xa2,0xd8,0x22,0x62,0x34,0xfd,0xd5,0x16,0x47,0x65,0x26,0x0f,0x7b,0x05,},"\x6c\x7e\x7b\x62\xeb\x24\x4a\x45\xd7\x84\x36\xe2\x97\x0d\xcd\x6c\x0f\x7d\xb8\x22\x97\xa8\x61\x40\xea\x58\xdd\x22\xc2\x19\x5a\xdb\xc9\x56\xd4\xc4\xec\x05\x35\x4b\x21\xef\xe2\x4c\xfc\xfe\x10\xe1\x76\x22\x36\x88\x48\x18\x0d\x2c\x46\x80\xcc\x21\x5e\x8c\xee\xa6\xcc\xe2\x22\x16\x1f\x1e\x09\x22\x39\x25\x3b\x97\x46\xf7\x88\x7d\xf2\x42\x5a\xb5\xa8\x80\xbd\xba\x98\x15\x3b\xe7\x86\xdc\x83\x8c\xbe\xca\x01\x6b\x1d\x06\x52\x4b\xd6\xbf\xba\x80\x9a\x8b\xb3\x7a\xda\xb1\x5d\x42\x41\x5f\x86\xec\x03\x58\x36\x5e\xa8\x7b\x81\x50\xb0\x54\x41\xd9\xd4\x98\x46\x87\x14\x85\xca\xae\x6d\xe3\x59\x73\x6c\x27\x18\x97\x36\xd8\xf1\x76\x5f\x3e\x5c\x5f\x6b\x92\x16\x83\x96\x39\x0b\xee\x94\xcf\xbd"}, +{{0x2e,0x5a,0xaa,0xb2,0x98,0xe6,0x6c,0x2d,0xc1,0xd7,0x7e,0xa7,0x42,0x1f,0xf8,0x95,0x25,0x5f,0x9d,0x90,0x0d,0xb0,0x45,0x0d,0x63,0xf9,0xf7,0x9c,0x1a,0x70,0x13,0xcf,},{0x03,0x81,0xf3,0xf1,0x90,0x45,0x71,0x9b,0x9e,0x8c,0xeb,0x56,0x2f,0x0e,0x96,0x5d,0xc0,0x7b,0x09,0xf3,0x71,0xa9,0x63,0xa2,0x81,0xc7,0x49,0xc2,0x53,0x2f,0x65,0x4a,},{0x7c,0x74,0x30,0x30,0x5b,0x36,0x1a,0x9e,0x35,0xb2,0x78,0x0c,0x4d,0x44,0x08,0x07,0x1b,0x21,0x30,0x93,0x1d,0x39,0x83,0x0e,0xc8,0xd3,0x13,0xaa,0xfb,0xc8,0x3a,0x65,0xda,0xe1,0x9c,0xb7,0x47,0xd9,0xd1,0xc4,0xce,0x3f,0x35,0x9c,0xc8,0x24,0xea,0x8c,0x92,0xf6,0x6a,0x42,0xb8,0x61,0x4e,0x78,0x48,0xb8,0x84,0xac,0x8a,0xa4,0xae,0x02,},"\x3d\xf0\xe5\x4c\x71\x1e\x31\x32\xd7\xae\x95\x3d\xeb\x7b\x66\x86\x9e\xe5\x31\xee\x40\xb6\x3c\xe6\x93\x20\x6c\xdb\x2f\x4b\xda\x0a\x25\x69\xe9\x13\xac\x3e\x65\x32\xc5\xd9\x64\x8e\xfd\x46\x27\x78\x0f\xb8\xa3\x1d\x10\x7e\x03\x3f\x05\x4d\x19\xed\x8b\x7c\x49\xdc\x40\x7d\x2e\x94\x9d\xe2\x5f\x99\x30\x72\x21\xd3\x58\x43\xf6\xd5\xeb\x7d\xe5\xcd\xf4\x1b\x91\xdb\xbf\x34\xcb\x6c\x9c\x53\x00\x21\x01\x4b\x56\xab\xc4\x4a\xc2\x30\x03\x13\x61\x56\x08\xa7\xb4\xa2\x35\xe9\x9c\x14\xce\xf8\x05\x08\x87\x03\x22\x09\x48\x8b\x9e\xae\xaa\x82\xc0\x94\x05\xfc\x75\xbe\xc9\x4d\xd4\x2d\x6f\xf1\xb5\x99\xa6\x3e\xe5\x74\x2f\x33\x64\x09\x3a\xc9\x2c\xab\xab\x30\x35\x82\x2a\xa8\x67\xae\x56\xdc\xc9\x9d"}, +{{0xb6,0x36,0xa0,0x24,0x48,0x00,0x35,0x43,0xdb,0x86,0x4b,0x40,0xb5,0xd8,0xd6,0xdd,0x9a,0xd6,0x11,0x62,0x4c,0x9b,0x0f,0xc6,0x89,0x0c,0x51,0xea,0x55,0x92,0xc7,0x90,},{0x1e,0xf3,0x60,0x49,0x59,0x68,0xe5,0x6e,0x6d,0x3f,0xe7,0x40,0xb1,0xc8,0x4c,0x4e,0x44,0x90,0xed,0x68,0x2d,0xeb,0x43,0x05,0xaf,0xd5,0x96,0xef,0xb2,0x80,0x22,0x3b,},{0xd4,0xba,0x80,0x30,0x0d,0x5c,0xb5,0x13,0x53,0xc0,0x3f,0x28,0xc4,0x4f,0xd0,0xa4,0x24,0xff,0xe1,0xe4,0x0d,0x78,0xed,0x7b,0xb1,0x13,0x3e,0x8f,0xe4,0xe1,0x87,0x50,0x52,0x93,0xb2,0x0a,0x39,0x1d,0xa9,0x62,0xc6,0xa8,0xac,0x0a,0xce,0xc9,0xc6,0x72,0x26,0xaf,0x3b,0x61,0x95,0xda,0xbe,0x39,0xb3,0x66,0x22,0x94,0xda,0x3e,0x0e,0x09,},"\x4a\xa8\x5a\xac\x25\x03\x4f\x61\x4e\xd4\x4f\x7a\xdc\xdb\xee\xec\x25\xfc\xc2\xa9\xee\xa3\x2a\xb6\xa8\x69\x95\x06\xf7\xa1\xca\xd3\xbc\x89\x2e\x9d\xce\x93\x4e\x75\xb0\xa8\xcd\x14\x64\x2b\x77\x85\x99\x28\x6c\xfd\x8f\x50\xa9\xe4\xf2\xed\xf9\xf9\xd6\x29\x1a\x2e\x29\x79\xcf\x18\x06\xb9\x3e\xd8\xc9\xa7\x8f\xae\x19\x9b\x28\x54\xa0\x3e\xc4\x06\xab\x3f\x72\x08\x35\xee\x26\x3f\xbb\xc9\x1c\xb4\xef\x07\x58\xd7\x75\xfc\x78\x4c\x7d\x5b\x25\x1a\xc8\x93\x79\x19\xa9\xe6\x7b\xe8\x8c\x9e\x44\xcf\x2e\xc7\xf5\x60\x26\x9a\xa0\xf1\x11\x3d\x91\xb8\x44\x01\xdb\x15\xa3\xc4\x8c\x7d\xac\xff\x49\x39\xee\x01\xba\xbb\x98\x2f\xb9\x56\x25\xc6\xc3\xad\x78\x74\x90\x60\x55\x1b\xfd\xe8\xcc\xe4\xfb\x8a\x29"}, +{{0x5c,0xa0,0x54,0x3c,0x71,0xf5,0x68,0xa0,0x0e,0xed,0xf5,0x0a,0x95,0x20,0xf4,0xc1,0x5b,0x52,0x6e,0x3f,0xb0,0xda,0x81,0x6c,0x29,0xea,0x3d,0x50,0xb2,0xf6,0x2a,0x12,},{0xd4,0xa2,0x93,0x3c,0xe1,0x94,0x54,0xe3,0x31,0xb5,0x28,0x01,0x00,0x20,0x9a,0x6c,0xe8,0xe5,0x69,0xf9,0x93,0xc2,0xac,0xab,0x51,0xdb,0xe8,0x64,0xc5,0xcb,0x25,0x63,},{0x43,0x68,0x23,0xee,0xff,0x3e,0xdc,0xe5,0xd8,0x58,0x7d,0x68,0xe5,0x47,0x3e,0xf3,0xd8,0xdc,0x94,0x65,0xb5,0x58,0xb6,0xe8,0xe7,0xcd,0x31,0x37,0xec,0xcc,0x80,0xb4,0xc4,0xe8,0x06,0xed,0xf1,0x36,0x19,0xd8,0xe7,0x17,0xe6,0x9f,0x48,0xd7,0x06,0x1b,0x68,0xde,0x02,0xc8,0x20,0x9b,0xe1,0xf7,0xac,0x26,0xba,0x8e,0xdf,0x60,0x6d,0x02,},"\x4e\xf8\x49\x69\x78\xd2\x8c\x10\xab\xd5\x4a\x26\x35\x6e\xe5\x59\x21\xce\xb3\x50\xdd\x4b\x74\x2c\x41\x61\xfb\xeb\xa8\xa1\x60\x1f\x8a\xd0\x48\x4b\x21\xa8\xcf\x5a\x29\x4f\xac\x00\xec\x8a\x6f\x59\xe3\x36\x2e\x47\xbf\xae\x1e\x28\xa2\xe6\xd0\x17\xc5\xca\xa7\x5f\xb0\xf4\x84\x82\x80\x80\x37\xca\x21\x47\x69\x54\xd7\x78\xff\x1a\x05\x86\xda\x3e\xf6\x9d\x6c\xef\x6d\x2d\x8d\xf4\xae\x7a\x85\x44\x2a\x1e\x46\xc9\x98\xcf\x40\x7a\x6a\xd4\xc5\x46\x3a\x43\xc2\x48\xf3\xb6\x93\x7f\xdb\xc8\x45\xb6\x0c\x6d\x85\xe0\x56\x3c\xc1\x6b\xa9\x67\x5d\x36\x4f\x52\x5f\x66\x9a\xaa\xc9\x5f\x42\x8b\xb5\x82\x05\x09\x9f\x9e\x4a\x6d\xbb\xd0\x15\x1f\xb6\x5b\xab\xe1\x23\xe5\x39\x3a\xd6\x40\x26\x93\x5c\xb4\x88\xaa"}, +{{0x5f,0x87,0x11,0x7d,0xa9,0xbb,0xb6,0x09,0x1c,0x94,0xda,0x6b,0x23,0x0b,0x7d,0x8f,0x6d,0xe0,0xed,0x2a,0x07,0x64,0x13,0xb9,0x2e,0xac,0xdc,0x43,0xab,0xbc,0x68,0x97,},{0xaa,0x78,0x6a,0x14,0x62,0x26,0x83,0x2a,0xa7,0x3c,0x43,0x4b,0x0e,0xdc,0x2d,0x41,0xd2,0x55,0x8f,0x82,0x0a,0xb8,0xf8,0x7e,0x09,0xe6,0xcd,0xa9,0x10,0x72,0xb9,0xb6,},{0x0f,0x19,0xe6,0xea,0x0c,0x05,0xf3,0x81,0x85,0xc0,0x1c,0x2d,0x64,0x77,0x99,0x5d,0xaf,0x50,0x65,0xba,0x9d,0x80,0x17,0x3f,0xa6,0xbb,0x23,0xa7,0x74,0xdc,0x88,0xb3,0xaa,0xe8,0x79,0xd8,0xa6,0x24,0x71,0xd2,0xd3,0x04,0xcc,0x3d,0xc6,0x62,0x78,0xa7,0xab,0xcb,0x0b,0xb0,0x77,0x1c,0xd2,0x78,0xe1,0x1e,0x7b,0x93,0x2e,0x9f,0x9b,0x0f,},"\x22\x97\xc4\x0a\x2e\x83\x65\xba\xe4\xc5\xf0\x63\x0c\x50\xb1\x3b\xdd\x9a\xd9\x77\x0a\x5d\x9a\x94\x51\xd0\x08\x74\xb0\x23\xd2\x5e\xcd\x46\x8b\x96\x57\x1b\x2f\x16\xdc\xb1\xb0\xd3\xd7\x56\xc1\xf0\x44\xfc\xdd\xd1\xc5\x1f\x27\x72\x7a\x03\x69\xc9\xcf\x25\xbd\x6a\xa5\x95\x51\xb5\xb0\x7c\xf8\xf8\x07\xd9\x2b\x15\x91\x98\x63\x97\x04\x74\x0f\xe6\xed\xa0\xf2\x6d\xba\x7e\x75\xd4\x53\x0b\x28\x00\xf0\x3f\xb6\xaa\x67\x7d\x84\xdf\x75\xd6\x8d\x4f\xbb\x64\xad\x21\x00\x1e\x3f\xc8\x7b\x60\x9b\x9c\x25\x1e\x8c\xcb\x12\xbb\xca\x92\x74\x47\xe2\x05\x4e\x07\x68\x8e\xb8\xa2\x05\x21\xa5\x22\x49\xe7\xb9\x43\xbe\xd6\x0e\x6a\x93\xc0\x1e\x3e\xb6\x21\xf0\x46\x0c\x18\xa6\x90\xb6\xf6\xb6\x6e\xdc\x6e\x87\x43\xa6"}, +{{0xb5,0x3a,0x64,0x4c,0x92,0xba,0x2d,0xc7,0x10,0x8b,0x16,0x83,0x3f,0x09,0xad,0x59,0x17,0x84,0x64,0x37,0x22,0x5a,0x77,0x3d,0x32,0xd7,0x9c,0x97,0x73,0x3c,0x0a,0x58,},{0x51,0x58,0x18,0xc6,0x9c,0x0e,0x0a,0x17,0x06,0xb0,0x41,0x43,0x84,0x2f,0x3e,0x9e,0x27,0x14,0x48,0xfb,0xaf,0x3a,0x89,0x91,0x19,0xc3,0x2f,0x42,0x56,0x6f,0xfd,0x33,},{0x13,0xd2,0xcb,0xac,0x79,0x76,0xad,0x27,0xf0,0xbf,0x66,0x9a,0xd5,0x88,0xef,0xb2,0xc9,0x1b,0xab,0x85,0x07,0xd5,0x7f,0xb1,0x6b,0xfe,0xa9,0xca,0xff,0x2b,0x09,0x64,0xe7,0x56,0x25,0xc4,0xd8,0x08,0xd7,0xbb,0xb7,0x8c,0x5b,0x46,0x4e,0xdf,0xfe,0x49,0x49,0xec,0xfb,0xc8,0xb9,0x5f,0xf6,0xfd,0xb1,0xbd,0xca,0x27,0x42,0x06,0x81,0x00,},"\x13\x03\x6d\xaa\xee\x45\xfc\xfd\xe0\xc5\x3e\x06\xd0\x5a\xa9\xc0\x1e\xa9\x4a\x67\xe8\x6c\x6c\x53\x8c\xcb\x28\x3b\x36\x8d\xaf\x70\x78\xd3\xfb\xab\x58\x0c\x76\xec\xf8\x2b\x4e\x96\x60\xf0\x68\xdc\xbb\x50\x0b\x80\x59\x50\x17\xc5\xbe\x3c\x44\x8f\xbd\x8a\x17\xd9\x7c\x56\x43\x19\x78\x90\xe1\x67\xb3\x53\x45\xbf\x65\xe7\x5b\x82\xc8\xd6\x52\x29\xf2\xf6\x0a\xae\x27\x72\x58\x1b\xc9\x9c\x49\xd4\x16\xbc\x3d\x78\x74\x6e\xf8\x30\xf1\xaf\x94\x4f\x4a\x67\x15\xab\x4f\xfb\x01\x59\x1b\xac\x28\x57\xf1\xa9\xc9\xd1\x70\x08\x88\x78\x00\x06\xa3\x16\x07\x33\x8f\x7a\xf7\xbe\xdf\x6e\xfe\x0b\x57\x29\x9a\xc9\x15\x52\x6f\xe5\xe1\xe1\x01\x29\x87\x08\xc6\xe6\x1b\x84\x22\x0a\xfe\x95\xb5\x3f\x89\x59\x87\x45\x61\x52"}, +{{0xd2,0x7c,0x9e,0xaf,0xcf,0x88,0x15,0x19,0x90,0xbb,0x5b,0x2f,0xa8,0x44,0x3e,0x70,0x9b,0x5f,0xd8,0xd7,0x8d,0x23,0x38,0x03,0x32,0x2d,0xc8,0x6d,0x93,0xd9,0x32,0x95,},{0x08,0xe0,0xef,0xf5,0x29,0x77,0x67,0x14,0x68,0x61,0x96,0xd8,0x17,0xfd,0xf7,0x1e,0xb5,0xb6,0xe8,0x32,0x65,0x16,0xef,0x48,0x9b,0xfe,0x18,0x6a,0xc5,0xc5,0xbf,0x6d,},{0xc2,0x54,0xe3,0x71,0x44,0x56,0x33,0x13,0x74,0x42,0xee,0xfe,0x40,0xad,0x4a,0x82,0xe6,0x9b,0x1e,0xbf,0x48,0xa6,0x85,0xa2,0xbc,0x6f,0xfb,0xac,0x12,0x6d,0x22,0x84,0x87,0xb2,0xe3,0x53,0x7c,0x97,0xef,0x74,0x10,0x34,0x20,0x91,0x96,0x2e,0x50,0xc0,0xcb,0x85,0xde,0x7b,0x39,0xce,0xb4,0x1a,0xc4,0x07,0x8d,0x40,0xf3,0x40,0x71,0x06,},"\x77\xc3\x5b\xda\x32\xa5\x96\x7d\x8b\x30\x2f\xa7\xa4\x75\x83\xce\xab\x89\xc9\xa6\x09\xa6\x67\xb7\x53\x15\x5f\xa6\x99\x6f\x86\x31\xd0\xeb\xed\xfe\x0a\xc3\x64\xc7\x7e\x85\xba\x37\x31\x1f\x0d\xe5\x7a\x0d\xc2\xc1\xe9\xe4\x00\xd5\x8b\x42\x4a\x32\x2e\x1d\x57\x71\xe0\xa9\xfd\x95\x02\xad\x02\x32\xce\x54\x4f\x07\xd8\xc6\x6e\x7c\x31\x47\xf8\x60\x7a\xc6\x18\x9b\xb6\x90\x66\xf2\xfa\xd6\x31\x18\x5f\x45\x7f\x46\x7e\xba\x33\x22\x8e\xcc\x40\xe8\x94\xa7\x7b\x57\x16\x98\xa9\xbf\xac\x84\x1a\x54\xea\xc5\x21\x9d\xa9\x9c\x6a\x91\x25\xc4\x69\xa2\x2f\xe8\x1f\x3b\x95\x14\x33\x89\x6f\x19\xce\x39\xb3\x73\xfd\x7e\x5c\x7b\x65\x0a\x5e\xf2\x36\x5a\xe7\x51\x0b\x0d\xa5\xe4\x9d\x7c\x07\x07\x3c\xf1\x66\xa9\x83\x87\xe8"}, +{{0x70,0x21,0x3d,0x3a,0x79,0xc6,0x5d,0x6d,0xbb,0xa5,0x42,0xa3,0x67,0x96,0x35,0x00,0x3a,0x68,0x2a,0xf5,0xfa,0x58,0xde,0x6b,0x0d,0x65,0xbf,0xa2,0x41,0x84,0x90,0x1c,},{0x44,0x02,0xfb,0x92,0xcc,0x12,0x49,0xdd,0x1a,0xe1,0x69,0x0f,0x03,0xb3,0xec,0x4f,0x1e,0x9b,0xda,0xb0,0xde,0x5b,0xfd,0x28,0x9f,0x10,0x29,0x68,0x30,0xfd,0x40,0x3e,},{0x5b,0x6c,0xe2,0x77,0x4d,0x40,0x0e,0xce,0xa8,0xa8,0x08,0xf5,0xfd,0x0a,0x79,0x7f,0xfc,0x61,0x16,0x75,0x23,0x76,0xcd,0x7b,0xfa,0x3b,0x2c,0xca,0x3a,0x84,0xd5,0x59,0x3f,0x5c,0x03,0xad,0x3e,0xec,0x1d,0x89,0x53,0x22,0x75,0xc4,0x7b,0x7c,0xe2,0xa0,0xe9,0xc5,0x9c,0xc4,0x02,0x8a,0x8a,0x65,0xe5,0xbb,0x90,0x97,0xea,0x71,0xc2,0x08,},"\xcd\x6e\x1c\xd9\xc9\x0f\x56\x6d\xe0\x43\xd7\x5d\x72\x44\xec\xfd\xb3\x8e\x8b\xde\x2f\x9a\x6c\xd5\xa4\xfd\xac\x72\xb5\xed\xe6\xaf\x62\xd9\x81\x91\x8c\x5e\x61\x0a\x38\x78\x92\x74\xfa\x10\xe5\x27\xf8\x5f\xad\x20\x9b\x76\xca\x1c\x28\x1a\xd5\x89\x0f\x9c\x96\xd3\x5d\xe5\x22\xf1\xdd\xcc\xb5\x39\xb8\x79\x8a\x00\x67\xac\xdd\x45\xb6\xe3\x44\xa5\xd9\xa9\x77\x31\xf5\x45\xff\xa4\xb1\x7b\x87\x5c\x67\xb4\x8e\x9d\x4c\x4b\xa7\x2c\x98\xa4\x50\x55\x83\xfd\xbf\x1e\x12\xf2\x2b\x5a\x7a\x49\x47\x46\xcc\x9b\x6c\x1b\x57\x19\x06\xc6\x7f\xcc\x88\x3a\x9c\x15\xa3\x80\x68\x75\xb6\x59\xe5\x81\x6b\x42\x76\xc3\x19\x0e\x25\xcc\x1a\xc3\xde\x47\xbf\x99\xc4\x99\x65\x38\x8f\x54\xf3\xef\x8e\xb5\x69\x90\x6c\x60\x08\xe5\xfb\xbd"}, +{{0x5d,0x54,0x0b,0x3b,0x14,0xf0,0xc0,0x17,0x5c,0x04,0x7e,0xaf,0x02,0x6c,0x90,0x70,0x65,0x9e,0xf1,0x3e,0x9d,0x28,0xe0,0xc5,0xc5,0x16,0xa4,0x28,0x26,0x9b,0x14,0xeb,},{0x1d,0x2d,0x4d,0x55,0x1a,0x57,0xc6,0xfb,0x2b,0x04,0x18,0x10,0x49,0xd4,0x03,0x9d,0x57,0x5c,0xf8,0x0c,0x0b,0xc6,0xec,0x70,0x33,0x06,0x7f,0x27,0x30,0x93,0x44,0xde,},{0x32,0x52,0x7d,0xa7,0x55,0x31,0x28,0x89,0x93,0x5d,0xd5,0xee,0x91,0xb1,0xbb,0x11,0x7a,0x5d,0x37,0x7d,0xd2,0x3e,0xf5,0xb7,0xe1,0x5b,0xaf,0xfa,0xe9,0xa5,0x43,0x91,0xa3,0xfd,0x23,0x4b,0xdc,0xe0,0x73,0xe0,0x98,0xc5,0x8d,0x05,0xbf,0x19,0x5b,0x4c,0x3c,0xc6,0x39,0x72,0x38,0x3b,0xa4,0xb5,0x10,0x72,0x97,0x1a,0xeb,0xcb,0x62,0x0d,},"\xe4\xc9\xe8\x70\x68\x98\xca\xd4\xac\x68\xd7\x3c\x13\x0e\xfa\x04\xa5\x4f\x8c\xa2\x59\x19\xea\x6b\xfa\xa5\x4c\x8c\x72\x0c\xed\x85\x4c\x5e\x95\x09\x10\x2c\x7b\x88\x5a\xed\xdf\xfb\xd1\xb7\xf2\xc5\x92\x25\x83\x67\x7a\xc9\xee\xa9\xa1\x08\xc7\xe8\x3e\x88\x71\xae\xd5\xa0\x84\xf5\x44\x0b\x0f\x39\x1a\xd7\xff\xc6\xba\xb4\x57\x4a\xf1\xb9\x67\x70\xf4\x37\x0e\x8e\x98\x8e\x85\xec\xb1\xa8\xd6\x03\x4f\xc3\xd7\xf4\x9f\x74\x22\x02\x3b\x9d\xab\x5d\x0c\x16\xbe\xab\x5f\x5d\x37\xb0\xa4\xd7\xde\x19\x7a\xd8\x7c\xd4\xff\x8c\xe7\x8e\xb1\x2e\x1d\xaf\x73\x9d\x8b\x47\xab\x38\x0a\xbe\x90\x93\x35\x6d\xb5\xb5\x97\x17\x75\x1a\x49\xe1\x94\x84\x72\xfd\xac\xc2\x59\xff\xff\xc8\xc1\xdb\xae\x59\x26\x07\xd4\xec\x71\xcc\x6a\x8f\x6b"}, +{{0xca,0x41,0x76,0x9c,0xaf,0x17,0x17,0xb4,0xe4,0x5c,0x93,0xc1,0x21,0xdc,0x82,0xa5,0x34,0xfb,0xc6,0xec,0x09,0x86,0x66,0x2c,0x32,0x22,0xd7,0x14,0x92,0xbd,0x11,0x76,},{0xaf,0x3f,0x89,0xf6,0x18,0x7d,0xbc,0xf9,0x21,0x77,0x50,0xc6,0x7e,0xf8,0x9e,0xd4,0x7b,0x03,0x9f,0x9e,0xb0,0x62,0xff,0xec,0x9d,0xf6,0x4a,0xb5,0x2b,0x0b,0x45,0xcb,},{0x5c,0xda,0x87,0x2f,0x7e,0xd6,0xd7,0xc9,0x02,0x18,0xac,0x10,0xbe,0xe8,0xe2,0x14,0xf3,0xb3,0x4d,0x15,0xd2,0x5c,0x39,0x25,0x5e,0xc9,0xe6,0xb0,0x17,0x7a,0xa3,0xcb,0x73,0x68,0xd1,0x1c,0xb8,0xed,0x6f,0xf5,0xcf,0x0c,0x04,0x28,0x1d,0x06,0xbc,0x42,0x72,0xb8,0xbc,0x09,0xc2,0x3f,0x6f,0x4c,0xd5,0xa8,0x10,0xdd,0xc7,0xb9,0xc1,0x03,},"\x9d\xe8\x47\x6c\x58\x13\x84\x8a\xb1\x45\x15\x37\x84\x1c\xc1\x78\x00\x21\x81\xa2\x18\x2a\xf3\x05\xb1\x2e\x5f\x7c\x3b\x1d\x56\xb2\x2c\xf4\x6a\xe6\x27\x6d\x18\x26\xec\x0a\x8c\x9a\x7d\x9f\x68\x08\x3b\x72\x25\xbb\xfa\xef\xce\x82\xb3\xb6\x45\x94\x05\x2a\x77\x00\xf3\x09\x23\x3a\x79\xff\xfd\xfc\xcc\x5c\x21\x40\x0c\x91\xcc\x0e\x41\x8d\x51\x41\xd4\x86\xb5\x21\x99\x01\xd6\xdd\x24\x47\xc1\xf7\xb7\xcf\x5a\x08\x79\xe7\x0e\x1d\xd6\x58\xd0\xf2\xec\xf3\x1e\xbe\xee\x11\xa5\xc7\x44\x40\xc6\x3b\x9d\x8b\x45\x31\x8c\x34\x65\xd7\xff\x03\x36\x5e\xdd\x03\x85\xed\xf8\x0d\x4f\xde\xd5\x1f\x0f\x75\x33\xee\x40\x99\xf1\x9e\x93\xbc\x9d\x08\xda\xdc\xd1\x34\x85\xdb\x23\x95\x22\xff\xc8\x1e\x2c\x05\x1f\x87\x96\xd6\x2e\x97\x9f\xcf"}, +{{0xfe,0xdd,0x63,0xff,0xd4,0xcf,0xbf,0x61,0x88,0x94,0x96,0x2e,0x12,0x1a,0x90,0x25,0xee,0xa3,0x18,0xa8,0x0a,0x1a,0xdf,0x16,0x9d,0x64,0x90,0x44,0x5d,0x2e,0x02,0xa0,},{0x54,0x2f,0x22,0x44,0xbd,0xb7,0xd8,0x4b,0x87,0xe6,0x28,0xa8,0xe6,0xa1,0x2f,0x17,0xbf,0x74,0xa9,0xa6,0xd0,0xea,0x46,0xc5,0x95,0xdb,0xfd,0xc6,0x80,0xc0,0x4b,0x26,},{0xed,0x59,0xd9,0xe2,0x3d,0xec,0x34,0x94,0xb0,0xfb,0xc5,0xd1,0x0c,0xd0,0x2b,0xab,0x86,0xb3,0xeb,0x35,0xab,0xbf,0x9e,0x4d,0x4a,0x92,0x64,0x79,0xf1,0x34,0x58,0x3a,0x44,0xce,0x72,0xdc,0x41,0x22,0xac,0xa3,0x77,0xa4,0x07,0x2b,0x71,0x56,0x46,0x2b,0x74,0xe8,0xdf,0x46,0xb6,0x86,0x69,0x86,0x36,0x83,0x6e,0xf2,0x03,0x17,0x9c,0x07,},"\x2e\x2a\xe5\x84\x64\x1b\xe0\x3d\xd4\x8f\x9c\x61\x80\x77\xae\xaa\x18\x21\x2a\x42\x41\xf0\xc0\x19\x4e\xd2\x3e\x37\x0d\x74\x1a\x3a\xe1\x1a\x5f\xec\x3b\x04\x0c\x16\xea\xfa\x4a\xc8\xd1\x8a\xba\xa7\xce\x8f\x28\x69\x67\x33\x71\x89\xf0\x49\x5f\xfd\xd6\x19\x95\xcd\xe3\x1d\xd8\xdf\xc3\xdf\x57\x00\xb5\x7a\x7a\x29\x98\x0e\x9c\x82\x3f\xee\x85\xd6\x14\x51\x17\x67\x29\xe7\x27\x87\xc6\x10\x9b\x47\x35\x9b\x93\xdf\xd6\x2e\x1e\x5a\x2d\x64\x2c\x05\x72\x42\xda\xe5\x00\xa9\x4c\xa1\xa9\x3b\xc5\x7b\xe1\xad\xe7\x6f\xe4\x50\x1c\x0f\x63\x77\xed\x0e\x92\x46\x17\x9a\xec\xdd\x99\x46\xb6\x71\xe8\x19\x0e\x1e\xd2\x3f\x96\x6e\x96\x40\x9b\x94\x82\x22\xd8\xea\x58\x39\xde\x90\x4f\xc5\x13\x48\x07\x3b\x8f\x40\xed\xbd\x9b\x4a\x4b\x22\x75"}, +{{0x38,0xf2,0x18,0x4e,0xaa,0x55,0x36,0x56,0xee,0x29,0x02,0x70,0x6b,0xce,0xc4,0xac,0xb5,0xaf,0x25,0x15,0x7c,0xa0,0xf6,0xa2,0xd4,0x8d,0xe8,0x52,0x85,0xfa,0x3b,0xc0,},{0x7f,0xf0,0x3f,0xb4,0xc8,0x2e,0x9c,0x15,0xd6,0x59,0xdf,0x42,0x4b,0x3e,0x73,0xed,0x1d,0x78,0x00,0x6f,0x3e,0x0b,0x79,0xeb,0x64,0xd9,0x8c,0x13,0xae,0xc6,0xba,0x37,},{0x4a,0x64,0x13,0xc2,0xc8,0x7f,0x2b,0x38,0x56,0xa8,0xde,0xcb,0xce,0x49,0x3a,0xde,0xae,0x0c,0x69,0xc9,0x41,0x34,0x70,0x7f,0xb0,0xf1,0x8f,0x30,0x49,0xfd,0x3e,0x3d,0x05,0x1a,0xbd,0xb9,0xd4,0xbe,0xe2,0x53,0xc6,0x10,0x7c,0x02,0xd5,0x7a,0xd7,0xcc,0x9f,0x31,0x01,0xdb,0x66,0x0a,0xfa,0xc2,0xb7,0x98,0x19,0x38,0xe9,0x56,0x4f,0x01,},"\xc2\xdf\x77\xc9\xe4\x79\xf6\x19\x83\xb6\xc7\x48\x3e\xf9\x3f\xb8\x5a\x10\x3b\x21\x39\x23\x92\x65\x23\x06\x5e\xbf\xf2\x25\x7e\x85\x42\x7e\x05\xcd\xc2\x75\x82\xef\x6c\x16\xbe\x35\x3a\x3b\x25\x03\x72\xd6\x37\x0e\xec\xb6\xc8\x96\x29\x17\xeb\x65\x6f\x26\x41\x69\x01\x89\xd1\x72\xa1\x11\x05\x15\x57\xab\xc2\x49\x4e\x32\xca\xb6\x5e\xd0\x63\x3a\xff\xe9\x24\x08\xb5\x5c\x4e\xd8\xaf\x65\xe2\xc5\xe7\xaa\xb8\x87\xa3\xcc\x8d\x28\xc5\x2e\x9e\x13\x36\xd0\xb7\xbb\x3f\xe2\xcd\x84\x3e\x7f\xa1\x68\x03\x42\xf8\xa4\xaa\xfa\x02\xc4\xab\x25\x2f\x08\xc3\xd4\x6d\x5f\x00\xfd\x01\x48\x42\x63\xee\x63\x52\x84\xf6\xdb\x26\xd6\x29\x8d\xe5\xb0\xdd\x23\x8d\xa4\x0a\x8d\x2a\x93\x37\x6d\xa0\x30\x27\x83\xa0\xe3\xbe\x23\xd9\xe7\xf9\x90\xd2\x5b"}, +{{0x8b,0xfc,0xa4,0x84,0x62,0xd2,0x53,0x6f,0x74,0xb8,0x4f,0x6a,0xf5,0x9f,0x5d,0x85,0x82,0xff,0x8f,0x7e,0xc2,0x87,0x45,0xd6,0x72,0xe7,0x2e,0xb7,0x2e,0x79,0xd3,0xe9,},{0x9d,0x10,0xd2,0x75,0xc3,0xd3,0xfe,0x45,0x9f,0x7f,0xe2,0x90,0x1b,0xce,0x38,0x91,0x91,0xcc,0x84,0x83,0xc0,0xf5,0x11,0x40,0xd9,0xc6,0x2b,0x08,0xfa,0xde,0x81,0xbb,},{0x44,0xd7,0x7e,0x43,0x9e,0xf6,0xca,0x5e,0xb9,0x40,0xc6,0x0f,0xf8,0x73,0x2d,0xdc,0x16,0x26,0x9e,0xa0,0x23,0xbb,0x26,0x13,0xbd,0x44,0x7e,0xba,0x7f,0xd6,0x98,0x51,0x22,0x6c,0x48,0x19,0xce,0x8d,0x44,0x98,0x5a,0x49,0xf3,0xf4,0x1a,0xc7,0xaf,0x33,0xc4,0x7f,0xfe,0x5f,0x89,0x30,0x4a,0x32,0x56,0xe4,0x45,0xf8,0xd6,0x86,0xe3,0x07,},"\x81\xee\x4c\xb9\xc4\x5d\xa6\x91\xda\xcd\x7d\xd0\x9a\xff\x59\x73\x72\x67\xbb\x55\xc3\xad\xe1\xba\x32\xc1\x7b\x7d\x0d\x2d\x0c\x60\x79\xc3\x9d\x5f\xd5\xb2\x9b\xa5\xf9\xc1\x76\x20\x97\x70\x98\x43\xee\xe5\x61\x2b\xd2\x0b\xc8\x18\x5b\xf6\x4d\x5c\x93\x41\x84\xe1\x36\x24\xe6\xf8\x77\xa2\xa5\xdd\xa1\x5c\x0d\xf6\x2a\xfb\xb9\x70\x57\xcc\x91\xca\xc9\xa1\x84\x06\xa0\xe0\x10\x9c\xc3\x9b\x2e\x3f\x81\x2e\x22\x7a\x40\x62\xd5\xef\x81\xc9\x2c\x22\xa7\xdc\x79\x7c\x84\x5d\x71\xeb\x6e\xa9\xe4\x2e\xc8\x41\x7f\xba\x90\xa9\x6d\x2b\xb1\x43\x94\x18\x33\x0b\x4b\xb2\xf9\x9c\x6d\x63\xd3\x04\xa0\xe5\x06\xdc\xa9\x65\x3e\x5d\xe0\xdd\x56\xe3\x09\xdb\x1a\x76\xa0\xfa\xab\xab\x16\x37\x74\xf0\x00\x08\x8c\xef\x3d\x1b\x7a\x6c\xf6\x61\xd2\xe1\xd9"}, +{{0xd7,0x48,0x0d,0x42,0x72,0xbc,0xb1,0x55,0x7b,0x1b,0xbe,0xe0,0x49,0x15,0xc1,0x26,0xa5,0x2c,0xa6,0xd6,0xa8,0xbb,0x53,0x14,0xa0,0xe1,0xa5,0x2b,0x59,0xbf,0xc9,0x9c,},{0x99,0xc8,0x39,0xd3,0x6d,0x8f,0x5b,0x86,0x52,0x61,0x8e,0xd7,0xb0,0xfe,0x9e,0xc3,0xd9,0x4e,0xff,0xf4,0xc4,0x53,0xc5,0x40,0x63,0x14,0x76,0xa5,0x97,0x9b,0xbb,0xe0,},{0xe0,0x4d,0xc8,0x44,0x2d,0x35,0x21,0x73,0xe9,0x31,0x81,0x8e,0x29,0x08,0x58,0xde,0x85,0x68,0x8a,0x46,0x49,0xea,0x3e,0x3c,0x3a,0xe7,0x4e,0xda,0xa5,0x4a,0xd0,0x1b,0x64,0x62,0x2a,0xd8,0xa0,0x90,0xb6,0xad,0x60,0xad,0xfd,0x01,0x88,0x18,0x82,0x82,0x8d,0x39,0x07,0x8b,0xb5,0xb2,0x71,0x4f,0xd3,0xea,0x83,0x97,0xa3,0x42,0xfd,0x04,},"\x61\x5c\xc1\x9f\x94\x20\x17\x36\x5b\xa8\xbf\xa2\x56\xce\xcc\xc8\x5e\xe2\x89\xa1\xc3\x4b\xb1\x44\x2a\xcc\x07\x16\xc7\xfc\x2c\xae\xb7\x6a\x9d\xe1\x9a\xde\xc1\x06\x37\x1e\x47\xa3\x0d\x2e\x12\x39\xce\x1f\x7d\xca\x25\x52\x6d\x60\x4b\xdd\x64\x76\x59\xd9\x42\xbc\xba\xc3\x68\x91\x13\x49\xc3\xb9\x46\xa9\x7d\xa1\x0a\x42\xdb\xcf\x3c\x73\x41\x6d\x2e\x6b\xa2\x2b\xd2\x9d\x9f\x70\x56\x72\xe9\xe3\x38\x94\x4c\xef\x01\xad\x21\xf0\x09\x74\x2e\x07\xbc\xd8\x88\xca\x31\xe1\xee\x95\x3e\x8c\x1b\x1f\xd9\x54\xb7\xdc\xf1\xa0\xb1\xd5\xa0\x69\x06\x5a\x66\xcb\x72\x1a\xdc\x02\x0f\x4e\xfe\x1a\xbd\xd1\x67\x42\x74\x69\x39\x28\x57\x80\xd7\x53\x13\x7a\xe0\x14\x0b\xb4\x10\xfb\x6c\xe3\x36\x76\xc2\x7a\xee\xc5\x93\xa8\x8c\xbc\x73\xaf\xd9\xf4\x05\x11"}, +{{0x3c,0x2d,0x36,0x50,0x73,0x5b,0x41,0xef,0x90,0x06,0xbb,0x45,0xe4,0xbe,0x2e,0x0a,0xa5,0xcd,0xe8,0x51,0xae,0xac,0x42,0x1e,0xe9,0xc1,0xb4,0x92,0xd8,0x7a,0xa1,0x8a,},{0x3e,0x46,0xdd,0xce,0x29,0x88,0x44,0xfc,0xaf,0xa0,0x0a,0x1b,0x47,0xea,0xf3,0xde,0x70,0x59,0x6d,0xf1,0xbb,0xee,0x3c,0x80,0x9d,0x1b,0xe7,0xdd,0x94,0x08,0x0e,0x34,},{0x3f,0x2a,0xf0,0x1a,0xd5,0x37,0x7a,0xc3,0x90,0x40,0xd4,0x1a,0x41,0xe3,0x6e,0x7b,0x93,0xfa,0x72,0x35,0xb8,0x41,0x79,0x1f,0x43,0x2e,0xcd,0x7f,0x91,0xa3,0xb2,0x1a,0xb7,0x19,0x6c,0x88,0x3a,0xd5,0xa7,0xdb,0x44,0x6f,0x6c,0x06,0x67,0x24,0x60,0xf3,0xf6,0x3e,0xf8,0x63,0xd9,0x43,0x2b,0xe9,0xca,0xea,0xbb,0x79,0xe8,0x7e,0x22,0x08,},"\x14\x25\xd8\xd2\x18\xda\x1a\x10\xa8\x0b\x6a\x9c\x3c\x27\x50\xef\xe4\x16\x57\x98\x4a\xbd\x51\x00\xf4\x51\xba\x94\x9d\xb0\x10\x46\xb7\x12\x6b\xe8\x40\x23\x34\xed\x57\x52\x8b\xac\x05\x62\x25\x53\xa8\x6b\x72\x67\x22\x69\x5a\x8f\xb3\x31\xd8\x56\x54\x17\xc4\xff\x0f\x25\x1a\x32\x0a\xd0\x6d\xed\xbb\x75\x0d\xef\x35\xd5\x21\xc3\xc4\xcd\x57\x1a\x45\xad\xa8\x45\x06\x53\xd5\xe8\x1f\xe0\xbe\xb5\x3a\xaa\xe7\x87\xb3\xeb\x65\x3c\x23\x81\xed\x55\xaa\xf2\x59\x0e\xe5\xed\x8b\x66\x26\xf1\xc4\xb0\x43\x0a\x54\xf3\x96\x58\x62\x4e\x66\x35\xfe\xfc\x98\xfe\xe8\xfc\x3e\x1c\xc7\xff\x3d\xd4\x20\xde\x9d\xa1\x1a\x62\xfc\xae\x0e\x0c\xb4\x54\xfc\x6f\x7d\xf0\x39\x54\x29\x1d\x26\x20\x2f\x1b\x18\x8b\x65\x7b\x3b\xae\x07\x38\x94\x49\xb7\x5e\x67\x42\x2f"}, +{{0x74,0x96,0x59,0x96,0x26,0x8c,0xdc,0x4c,0x09,0x22,0x0b,0xd3,0x1c,0xe0,0x7b,0x21,0x7a,0x03,0x82,0x6e,0xe9,0x81,0xfa,0x89,0xf3,0xa2,0x35,0x9c,0xed,0x09,0x5e,0xf1,},{0x40,0x96,0xd0,0x27,0xc1,0xc5,0xee,0x4c,0xbf,0xc0,0x4b,0x9d,0x53,0x41,0x74,0x02,0x9f,0xdb,0x50,0xcf,0x56,0x10,0xd3,0x02,0x1e,0xf9,0x33,0xb4,0xca,0xf3,0x39,0x85,},{0x8c,0x66,0x28,0x34,0x43,0x17,0xa6,0x3a,0xca,0x6f,0x78,0xcf,0xae,0xa9,0x65,0xb3,0xaa,0x55,0x22,0xce,0x91,0x41,0x95,0x14,0x1c,0x08,0x87,0x0a,0x1b,0x8d,0xac,0xf3,0x4b,0x79,0xc7,0xab,0xc6,0x93,0xcd,0x9e,0x5e,0xbe,0x1a,0x2e,0x86,0xf0,0x33,0x2d,0x20,0x48,0xdb,0x3c,0xbd,0xef,0x01,0x68,0x79,0x62,0xd6,0xdf,0x24,0x9e,0x38,0x00,},"\x45\xb2\xf0\x64\x61\x5b\xf7\x74\xfc\xe9\x7f\x51\xc4\x64\x68\x5d\x7b\x3e\x4f\xef\xff\x92\x31\x24\x0a\x71\x9b\x3b\x06\x21\xcd\x4a\xd8\x33\x05\x67\x5c\xd6\xea\xae\xbf\xf7\x91\x00\x0b\x0b\x1f\xa3\x1d\x82\xd8\x18\x1b\x7f\xe5\x7c\x5e\x00\xce\xc5\x6f\xf9\x02\x2e\x9c\xe8\xdb\x66\x35\x6e\x40\x8e\x3e\xe2\x62\xfe\x62\x77\x89\xe6\x55\x35\xef\x1a\x63\xe8\xfe\xc9\x33\xbe\x3d\xee\x34\xd2\xfa\xcd\xb8\x92\x8c\xc4\x56\xab\xf2\xf3\xe8\xca\xb4\x7e\xff\x1c\xa4\x2e\x8b\x0e\x48\xd2\xc7\x3e\x7b\xcc\x5d\xe3\xf1\x05\x6f\xc5\x23\xdf\xef\x6b\x00\x23\xf3\x28\x89\xed\x39\x4e\xed\xa0\x32\xab\xf6\xbc\xaa\xda\xa7\xf3\xee\x74\x11\x87\x60\xab\x6d\x91\xdf\x52\x8b\xdc\x58\x07\x97\x2c\x85\xfa\x7c\xb5\x6e\x38\x7d\x73\x32\xe7\x79\xe5\x2d\x0d\xd7\xdb\x0c\xfb"}, +{{0x0a,0xbf,0x06,0x9c,0x08,0xb2,0x69,0x1c,0x3a,0x26,0xf7,0x9d,0xc8,0xed,0x05,0xcb,0x71,0xd2,0x20,0xff,0x78,0xf3,0xa5,0xc5,0x78,0x0a,0xe9,0xda,0x18,0xe4,0x56,0x43,},{0x9e,0xf3,0xb5,0xcc,0x01,0x6c,0xc8,0x2d,0xbd,0xda,0x70,0x57,0x66,0xaa,0x44,0x8b,0xd6,0x1f,0xa1,0xaa,0xf1,0x17,0x0e,0xfe,0x91,0x49,0xda,0xa9,0xfe,0x64,0xa1,0xae,},{0xc7,0x56,0x6f,0xb3,0xb4,0xd8,0xde,0xf6,0x67,0xe0,0x40,0xf2,0x76,0xd3,0xed,0x98,0xd3,0x6d,0xff,0x46,0x01,0x26,0xa7,0x5b,0x4c,0xc2,0x10,0x03,0x86,0xbb,0x01,0xc6,0x42,0xf6,0xd8,0xde,0x7e,0x64,0x9b,0xe6,0xe0,0x81,0x8b,0x08,0xd7,0x7c,0xe6,0x0f,0x4e,0xe5,0xe7,0x71,0x7a,0x50,0x88,0x4b,0xde,0xe0,0x20,0x34,0xec,0xf1,0xcd,0x0c,},"\x0d\x05\x52\x91\xb2\xe8\x61\xea\xe1\x9e\xa0\xfb\x20\x69\xd8\xc9\xee\xf4\xf1\x34\x7f\x35\x76\xd7\x84\x11\xae\x7c\x0b\x1c\x1c\xaf\x31\xfd\xe7\x36\xdc\x8a\xcc\xac\xb6\x62\xdf\x76\xb6\x20\xb6\x2c\xe9\x0b\x9f\x92\xc8\x33\x09\x12\x86\x21\xd0\x57\xcf\x84\x58\x05\x94\x90\x88\xe9\x38\xdd\xbc\x3d\x41\xc5\xe5\x54\x1f\xec\x82\x98\x68\x7a\xd2\xf7\x9a\xcd\xa0\x1a\xa2\x15\xd2\x58\x21\x43\x6e\xac\x9d\x26\x87\x16\xd4\xcd\x60\x50\x26\x0c\xb4\xef\x6a\xad\xa4\x83\x5e\x07\x3a\x84\x58\x21\xff\x21\x1a\xe2\xba\xad\xce\xb6\xe5\x7f\x06\xf8\x83\x45\xed\xbf\x93\xbf\xdf\x54\xfb\x74\x12\x3b\x57\xc0\xfb\x4a\x79\x60\x8d\x8d\xb6\x74\x08\x89\xe1\x57\x33\x50\x77\x99\xf7\xa1\xfd\x30\x17\xbc\xd7\x7b\x28\xa2\xbb\x6c\x91\xec\xd1\x54\xe9\xc5\xa5\xff\xa0\xeb\x62"}, +{{0xf3,0xfd,0x5e,0xc5,0xe2,0x30,0xb6,0xda,0xd1,0xac,0x3d,0x3a,0xeb,0xad,0xc7,0x86,0x3f,0xf8,0x9d,0xe2,0xa1,0x31,0x7f,0x42,0x4d,0x15,0x98,0x9a,0x3e,0xfb,0x0a,0xfd,},{0xf9,0x9e,0x5d,0x5e,0xee,0xae,0xd1,0x20,0x5c,0xfb,0x5c,0x2c,0xc4,0xe5,0xe9,0xf6,0xb4,0xe7,0xf6,0x41,0x29,0xf8,0x60,0x10,0x4c,0xa6,0x24,0x4e,0xb9,0xfe,0xb5,0x64,},{0x44,0xb0,0x12,0x46,0x63,0xad,0xb0,0xc7,0x3a,0xed,0x49,0xf7,0x34,0x03,0x46,0x1f,0xcb,0x19,0x11,0x1b,0x0b,0xa1,0x7a,0xa9,0x96,0x56,0x6f,0x47,0x7e,0x37,0xd5,0x24,0xb0,0xe1,0xf1,0x07,0x61,0x2f,0xc5,0x2a,0x7c,0x76,0x7b,0x18,0x1f,0xbf,0x4d,0x62,0x9b,0xdd,0xc0,0x8f,0x30,0x58,0x4d,0xec,0x61,0x24,0xc5,0xd3,0x9d,0x42,0x31,0x02,},"\x71\xf2\x89\x73\xed\x3d\xf0\x59\x45\xfa\x0b\xdb\x23\xe9\xbe\xca\x65\x1d\x3e\xe6\xbf\x9f\xa4\x5f\xfd\xc6\x06\x1e\x42\xfa\x2e\x8d\x76\x23\x5f\x0e\x9e\x2d\xaa\x65\xe5\x26\x31\xfc\x3b\xea\xd3\x3d\xa0\x55\xbb\x49\x2e\x47\x58\xe5\x98\xa0\x30\xa3\x3b\x3c\x40\xb3\x43\x71\x45\x9b\x23\x3c\xcc\x04\x3c\xcc\xc3\xa3\xcb\xce\x54\x9e\x20\xe0\xb2\xb4\x33\x05\xb6\x4a\xec\x66\x1a\xad\xba\x65\x56\xb1\x7d\x76\xe3\xbb\xed\x62\xc4\xa4\xea\xc4\xf8\x86\x03\x99\x67\x52\xd2\x36\x3c\x8d\x4a\x27\x89\xd1\x28\xf6\xe9\x59\x94\x5c\x68\xc3\x01\x46\xd1\x94\xcc\xb6\x83\x9e\xc6\x53\x44\x60\x16\x52\xc1\x8b\x00\x74\xe2\xbc\x76\x68\x31\x16\x97\xd9\x60\xc7\x06\x65\x97\x92\x4d\x70\x4d\x02\xa0\x19\x3f\xaf\xbf\xdf\x57\x1e\xe0\xdf\xe4\x14\xdc\x2f\x52\x89\x69\x12\xbc\x32"}, +{{0x73,0x8f,0x13,0x10,0xa4,0xe0,0x8f,0x91,0x7a,0x0a,0x5c,0x1f,0xba,0xf4,0xef,0x72,0xf9,0x5e,0xe6,0x2f,0xcd,0xed,0x50,0x86,0x8a,0x3d,0xaf,0x98,0x85,0x6a,0x44,0x8d,},{0x42,0x27,0x2c,0x2c,0x8b,0x08,0x47,0x0e,0xe5,0xdd,0x8a,0xf8,0x84,0x9c,0x01,0xb7,0x50,0x8d,0x3a,0x3c,0x65,0xb0,0x33,0x0e,0x69,0x5c,0x84,0x1d,0x5d,0xcc,0xb2,0xf5,},{0xce,0x1e,0x35,0x77,0xb6,0xa2,0x10,0x16,0xb9,0xdd,0x0b,0x51,0x7b,0xaa,0x0c,0xcb,0x10,0x7b,0xc1,0x99,0xb8,0xbb,0xae,0xf6,0x8f,0x95,0x0c,0x8e,0xd5,0x80,0x13,0xc8,0x53,0xb4,0xd3,0x38,0xee,0xdc,0x67,0x50,0x79,0xab,0x13,0x90,0x46,0x2f,0xfe,0xfa,0x6a,0x95,0x9b,0x04,0x3f,0x8b,0x56,0x51,0xc6,0xca,0x37,0x5c,0xe0,0xb4,0xa4,0x03,},"\xf0\xe7\xef\x67\x82\xd0\x4c\x69\x43\xb1\x9e\xb6\x6f\xf6\x22\x6b\x73\x6e\x3b\x09\x40\xc0\x9b\xb1\x26\xbf\xc4\xc4\xca\x7a\x5e\x70\x16\xc2\x86\xb7\xbf\xd7\x3a\xa6\xa7\x9a\x96\x03\x1b\xc8\x1c\xb5\xda\x68\xce\xc7\x1a\x6a\x0d\x39\x78\x0c\xbe\x6a\x0c\xd4\x77\x4d\x3a\xa0\x6a\x88\x16\x10\x44\x4a\x8c\x9d\x19\x10\x22\x94\xe5\xf6\x35\x18\x7a\xa6\xf4\x8d\x11\x91\x2c\x70\x94\xb3\x88\x33\x02\x8d\x57\x0c\xb1\x10\xdb\x60\x62\x5b\xb1\xbd\xc3\x7a\xff\xa2\x5e\xa3\xc8\xf8\xdb\xfc\x25\x14\xf4\x36\x5c\x62\xb2\x98\x9a\x66\xd2\x7c\x80\x38\x4e\x74\xae\x5f\xba\x8c\x1c\x2a\xf9\xc7\x2c\x49\x71\xe6\x4f\xa6\xa1\xdc\x25\x17\xb3\x1e\xa5\x7c\xcb\x08\x15\xa7\xfe\x2d\xa0\xf1\x46\xca\xa0\x84\x31\xd2\x5d\x15\x16\x62\xd9\xd2\x6e\x95\x22\x9d\x0c\x62\x82\x36\x64\x12\x3c"}, +{{0x88,0x41,0xd2,0x2a,0xde,0xd6,0x9c,0x13,0x1e,0xf5,0xee,0x0a,0x10,0xab,0x0a,0x9b,0x77,0xcb,0x75,0x4e,0xde,0x8d,0x25,0x7a,0x53,0x72,0x72,0x6e,0x2b,0x49,0x9c,0x6e,},{0x71,0x5e,0xcc,0xa6,0x36,0x81,0xbc,0x6e,0x9e,0x31,0xd1,0x88,0x48,0x90,0x2f,0x4d,0x96,0xfe,0xaf,0x43,0xb9,0x5d,0x00,0x86,0x42,0x90,0x3b,0x17,0x63,0xbc,0x9f,0xb8,},{0xbb,0x2b,0xab,0x70,0x03,0xf1,0x31,0x1b,0xe9,0xb8,0xc8,0x83,0xfc,0x4f,0xd5,0x28,0xad,0xfd,0x51,0xa9,0xc9,0x9d,0xb3,0xdc,0xa8,0xda,0x0f,0xca,0x95,0x8d,0xa1,0x9a,0x10,0xeb,0x22,0x33,0x26,0x67,0xb1,0xa0,0x06,0x5d,0x3d,0xbc,0x0d,0x06,0x26,0x9a,0x12,0x59,0xb6,0xa8,0x90,0x48,0x4a,0xa2,0x14,0x3a,0x52,0x69,0x5f,0x14,0x5b,0x0a,},"\x08\x7c\xa6\xbe\x2a\x95\x0c\x02\x4b\x3e\x74\x67\xfe\x00\xa7\xd3\x64\x55\x5d\x5d\xc6\x77\x0f\x5e\xbd\x26\x06\x42\x52\x5b\xd3\xc0\xf9\x65\xdb\x36\xd7\xb2\x29\xa5\x74\x21\xee\xc6\x4e\x4d\x99\x1c\xdd\xe5\x91\x23\x03\x44\x70\x55\x3f\x4e\xb0\xbe\x81\xad\x29\x36\xc8\xca\x26\xbc\xab\x4e\x5d\x79\x04\x0e\x29\x79\x87\x28\x60\x16\x84\xa4\x68\x32\x3c\xf3\xba\xae\x4d\x94\x8d\x0a\x1f\xd9\x05\xef\xfe\x16\xdc\x44\x64\x20\x88\xdf\x53\xf6\x38\x8b\xc4\x80\xed\xf4\xaa\x20\x7d\x0e\xd1\x61\xed\xa3\x45\x71\x2b\x4c\x00\xcb\x05\xfc\xf6\x35\xec\x25\x88\x78\x5b\xfb\x8a\x27\xcd\xc2\x89\x96\xa1\xdb\x3e\x67\x87\x02\x33\x93\xc0\x75\xd8\x3c\x90\x38\xfe\xd7\x89\x9c\x55\xfe\xc3\x07\xde\x32\x49\xc1\x4b\xda\x49\xe8\xb8\x95\x86\x09\x42\xc3\x6d\x64\x0b\xb8\x93\x77\x91\x42"}, +{{0xc0,0x21,0x35,0xe7,0xb6,0x5a,0xac,0x72,0xf6,0x3c,0x32,0xbf,0x5b,0xef,0x5b,0x68,0xc7,0xf3,0xb8,0xed,0x56,0x20,0x8e,0x59,0xe4,0x75,0x20,0x70,0xe9,0xd0,0x70,0x95,},{0xdc,0xf6,0x00,0xf2,0x44,0x03,0x7a,0x75,0x20,0x3a,0xe1,0x1a,0xc3,0x16,0xe8,0xdb,0xe9,0x98,0x6f,0x0d,0xce,0x23,0x47,0x39,0x39,0x33,0x4b,0xf5,0xce,0xa4,0x8b,0x0d,},{0xdd,0x5c,0xba,0xe4,0x79,0xeb,0x5e,0x22,0x95,0x74,0xc2,0x1e,0xc3,0xbe,0xd9,0x11,0x11,0x3a,0x57,0xa1,0x91,0x6d,0x33,0x13,0x45,0x75,0x15,0xd5,0x5c,0xc5,0xb6,0xe6,0xeb,0xc5,0x2c,0x93,0xf8,0x21,0xd1,0x39,0x88,0xdb,0xba,0x8d,0xf5,0x09,0x6d,0x55,0xff,0x9c,0x39,0xe7,0xf9,0xd5,0x61,0xcb,0x58,0x93,0x0c,0x96,0xa7,0xa5,0xd6,0x0b,},"\x86\xd9\x49\x13\x50\xd2\x56\x6e\x70\x8e\xd3\x56\x18\x5d\x61\x0c\x73\x46\x5b\x2a\x5c\x70\x12\x91\x99\x58\xaf\x2c\xf7\x6a\xf9\x95\x23\x0d\x36\x0d\xe4\x00\xb7\x13\x71\x70\xdd\x08\x35\xf1\x0f\xcb\xec\x22\x4e\xe4\xe4\x2c\x7d\x1c\xeb\xb7\xf5\x80\xfe\xa8\xed\x62\x23\x16\x3b\xac\xdd\x19\x23\xa5\x72\xcb\xb6\xdc\x26\xca\x8b\x17\xad\xe6\x8c\x6d\x28\x08\xc4\xca\x1e\xca\x28\xea\xe9\xa1\x45\xf6\x8d\x40\x79\xd8\xd5\x9d\x14\x0e\x95\x82\x28\xe7\xe9\x95\x20\xe3\x42\xdb\xd7\x45\x7a\x91\x59\x74\x0f\x48\xbd\xc2\x7b\x93\xbd\xab\xeb\xa4\x65\xcb\xf0\xc8\xdf\x5e\xf2\xc0\xf9\x38\x6e\xeb\xe6\x56\xf5\xd7\x49\xd5\xf9\x14\x7f\x52\x52\x66\x91\x0d\x7b\x80\x39\x6a\x90\xbe\x5c\xc1\x88\xa9\xa9\x45\xf9\x3e\x75\x3f\xc9\x9b\xaf\xa1\x8e\xe0\xa6\xdf\xf7\x9b\xf8\x48\x48\x98\xef"}, +{{0x15,0x4a,0x47,0xeb,0xa1,0xb8,0xc3,0x83,0x62,0xea,0x61,0xfa,0xeb,0x0c,0x0a,0xd7,0xe6,0x1e,0x41,0x2a,0x3c,0xba,0x46,0x88,0xaf,0x0d,0xb2,0xa4,0x87,0x20,0x8b,0x1c,},{0x16,0xde,0x2c,0x89,0x4a,0x50,0xcb,0xd4,0xca,0x90,0x41,0x9a,0x4c,0xa6,0x49,0x42,0xcb,0x14,0xbd,0x33,0x5c,0x5d,0x3f,0x4a,0x53,0xe2,0x39,0xc2,0x80,0xbd,0xa7,0x25,},{0xf4,0xb6,0xeb,0x1a,0x8d,0x95,0x0e,0x88,0x7f,0xd2,0xf3,0x0f,0x70,0xa2,0x3b,0x41,0x87,0x14,0x95,0xbf,0xa5,0xb8,0xa4,0xad,0x39,0x96,0xcd,0x9b,0xf5,0x1e,0xb7,0x42,0xe0,0x7f,0x4c,0x4d,0x2d,0xa4,0xb0,0x1a,0xb0,0x87,0x36,0x7a,0x50,0xe2,0xb6,0x5b,0x3c,0xef,0x51,0x4e,0x40,0xd8,0x37,0x54,0x0b,0x8c,0x89,0x96,0x64,0x85,0x91,0x0f,},"\xbf\x60\x7e\x8b\x6e\x14\xd9\xc8\xac\xd9\x68\x15\xaf\x0c\x03\x5a\xc7\x3c\x41\x04\xc9\x37\x86\xcc\xc1\xc9\xf8\x59\x39\x5d\xd7\x81\x90\x03\x20\xeb\xf3\x56\xaa\x99\x1c\xdc\x9f\x50\x3f\xce\xe9\xf8\x36\x75\x88\x8a\x7d\x59\x20\x02\xd2\xa5\x4a\x57\x3a\x96\x99\x4b\x3f\xa8\x65\x53\x8c\x61\x7e\xd8\xad\x1f\xf6\x20\x18\x28\x8a\x67\x4f\x44\x9b\xe0\xaa\xb5\x22\x2f\x74\xc4\xfd\x47\x5e\xd6\xa8\xdf\xb2\x7f\x45\x28\x7b\x22\xb2\xb6\xc3\xbd\x15\x17\x9f\x26\x7d\x15\x7d\x7d\x8a\x41\x59\x67\x9b\xe8\x5b\x25\xc2\xbb\x2b\xa8\x50\xaa\xed\x9a\xe3\xae\x57\x1b\xe4\xf7\x58\x36\x32\x9c\xf3\x6f\x41\x2c\x1c\x80\xf1\x41\x3b\x76\x61\xea\xb4\xa8\xe1\x1b\x60\x24\x24\x4f\xc6\x23\x23\xff\x02\xe3\x8a\xce\xb1\x73\x7b\xd4\x74\xbf\x1e\x98\x01\x5d\xbc\x78\x8b\x02\x7b\xbe\x21\x7c\xf4\xe7"}, +{{0xd3,0x02,0x84,0x31,0xce,0x2e,0xef,0x73,0xbd,0x94,0x0a,0xb8,0x4c,0xa2,0x9f,0x13,0xfb,0x26,0x43,0x6a,0xa2,0x5e,0x1b,0x7b,0xf2,0x6c,0xb3,0x3f,0x17,0xfd,0xf8,0x17,},{0x63,0xdf,0x20,0x3e,0x28,0x60,0xba,0xc4,0xd3,0x52,0xe7,0x22,0xc1,0xc9,0x1f,0xe3,0x77,0x6e,0x1c,0xbc,0xae,0x85,0x53,0xa4,0xf1,0x98,0x90,0x26,0x0b,0xf0,0xe4,0x57,},{0xce,0x97,0x29,0xa9,0x6c,0x3e,0xd2,0x89,0x43,0xb2,0x78,0x39,0xc7,0x33,0x82,0xec,0xd5,0x72,0x96,0x0c,0x1f,0x9e,0x90,0xc5,0xef,0xf9,0xdd,0x49,0x9f,0xf4,0x8f,0x17,0xd2,0x5e,0xdd,0x12,0x68,0xef,0xfe,0x41,0xee,0x6a,0x81,0xce,0x48,0xd8,0x4d,0xe5,0x13,0xdf,0x9c,0x41,0x44,0x26,0x21,0xb2,0xf5,0x49,0x1e,0x34,0x6b,0xe1,0x8c,0x04,},"\x08\x63\x35\xd6\x12\x75\xd1\x68\xea\xac\x05\x40\x47\x7f\x50\xd4\xb1\x5f\x9e\x50\xb9\xbe\x69\x39\x21\xed\x54\xa9\x94\x1b\xc4\x06\x43\xcd\xa6\x2e\x1d\x80\x5d\x02\x50\xa8\x11\x46\xbd\x5f\xe2\xd3\x9e\x81\x44\x4d\x21\xe2\xb2\x1b\x03\x1c\x11\x13\x06\xca\xcb\xf5\x27\x17\xf6\xfb\x4c\xd3\x41\x6f\x12\x15\xf8\xdd\xdc\xed\xd2\xf0\x09\x6b\x0f\xcf\xa0\xa6\xcc\x2c\xde\x7a\x2b\xab\x7f\x1e\x32\x79\x0b\x53\x61\xdf\x36\x71\x42\x4c\xc7\x22\xf2\x31\xbf\x71\x89\x5b\xcd\xcb\x7b\x22\xee\x07\x4e\x8f\xb4\xa9\x67\x85\x04\xe7\x35\x36\x6c\x17\x2f\x07\x63\x7b\x7a\x93\x14\x9b\xb2\x1f\x38\x88\x33\x78\xa1\xdb\x27\x3f\xc2\x32\x39\xe3\x53\x37\xf9\xce\x56\x6d\x8d\xdf\x3b\x31\x33\xca\xd7\xf2\xce\x81\xed\xb5\x03\xce\x1d\x27\xc5\xa6\x57\x16\x0b\x78\xdc\xa9\xae\xae\xa3\x79\xbe\x9c\x85"}, +{{0xee,0x89,0x85,0xdc,0x27,0x50,0x44,0x40,0xa8,0x75,0x8d,0x4c,0x53,0xe4,0x22,0x52,0x15,0x79,0x7a,0x00,0xcd,0x86,0x31,0xd5,0x9b,0xd9,0x3b,0xc6,0x6f,0x37,0x3d,0x5e,},{0xcd,0x64,0x7b,0xb0,0x65,0x69,0x3d,0x48,0x65,0x89,0x15,0x6a,0x9f,0xa2,0x61,0x43,0x75,0x34,0xdc,0x86,0xf4,0x6f,0x72,0xd0,0xa8,0x00,0x39,0x9a,0x7a,0xf0,0x10,0xf7,},{0x5b,0xd6,0x0a,0xd5,0xe9,0xba,0xd9,0x93,0x2c,0xa9,0xc7,0x5f,0x23,0x1a,0x76,0x88,0x9a,0xe7,0xa8,0xb8,0x64,0xb9,0x1d,0x1f,0xcb,0xa5,0xc5,0xd4,0xbf,0xa1,0xd9,0x28,0x38,0xad,0xb9,0x74,0x84,0x2a,0x07,0x10,0x77,0x9b,0x3e,0x30,0x94,0x04,0x49,0x09,0xe9,0x2c,0x7c,0xf0,0x46,0xce,0x51,0x9f,0x4c,0x68,0xe8,0xf1,0x9e,0xc0,0x3c,0x02,},"\xf2\x22\x04\x85\xad\xdf\xeb\xce\x02\xa8\x33\xac\xa3\x33\x81\xd1\xdf\x91\x7e\xd6\x09\x95\x0e\xd2\x4f\x85\xe3\xb0\x2b\x2b\x99\x4b\x4d\x93\x97\x84\xe3\x32\xf4\x10\x64\xc8\xb4\xa2\x63\x0a\xb3\x69\x61\x74\x2a\xa1\xcf\xfd\xcb\x08\xc1\x44\xee\xae\xde\xaf\xd4\x8b\x5d\xbe\x96\xbf\x24\x35\x0e\x14\xfd\x68\x28\x6b\xc0\x8e\xea\xef\x8b\xc6\xad\x9e\x19\x5d\x14\x84\xaf\xcd\x30\xaf\xa8\xce\xd4\x84\x81\x26\xd5\x6c\x81\xb4\x3c\x27\xa5\xdb\xbd\xec\x1a\x50\xc1\x10\x62\xce\x21\xc6\x1d\x86\x0c\x25\xa8\x62\xfb\xb7\x5c\x3b\xd5\x1c\x8d\xc0\x76\x36\x66\x86\x69\xbb\xf7\x51\xea\xca\xcc\xb3\xb5\x1d\x2c\x0d\x41\x40\x31\x6c\xfc\xe2\xeb\x18\xd2\x90\x8c\xec\xd5\xa1\x88\x67\x9b\xc5\xf5\xde\x29\x0f\x54\x8e\x7e\xbc\x57\xd4\x1b\x58\x9a\x24\xce\x88\xee\x48\xd9\x7e\x8d\x0c\x7c\x76\x99\x60"}, +{{0x80,0xdf,0xe2,0xbf,0x73,0x87,0xba,0xd4,0x65,0x4e,0xb0,0x76,0xf8,0xda,0xe9,0x59,0x51,0x63,0xe4,0x01,0x27,0xf5,0xdf,0x49,0x2d,0xad,0x7d,0xf0,0x4c,0x72,0x21,0xc4,},{0xd1,0x78,0x3c,0xee,0xb9,0xcf,0x8e,0x4d,0x07,0x76,0x4c,0x47,0x3f,0xa4,0x06,0x1b,0x82,0x74,0x39,0x71,0x03,0xf2,0x07,0x6d,0x70,0x32,0x49,0xd7,0x58,0xb8,0xfb,0xd5,},{0x27,0x27,0x9e,0x3c,0xdc,0xb0,0x3e,0xf5,0x57,0xa5,0xde,0xfc,0x2f,0x6c,0x58,0x12,0x8a,0x6d,0xc3,0xf8,0xb0,0x38,0x59,0x58,0x01,0x4e,0x70,0x9c,0x1f,0x61,0xb0,0xae,0x6b,0x40,0x35,0x76,0xf0,0xe4,0x54,0xd5,0xe4,0xc6,0x4c,0x17,0x31,0x38,0xee,0x4b,0xbd,0x5f,0xe7,0xb6,0x0d,0x06,0xc5,0xab,0xe2,0x3f,0xe9,0x9e,0xe3,0xb4,0x6a,0x00,},"\xaa\x09\xd7\x84\xbb\x09\xdc\x99\x99\x31\xeb\xb4\xc0\x0e\x42\x4c\xef\xec\xa1\x04\x81\x8d\x8e\xaf\x06\x61\xf0\x97\x28\xad\x02\x5e\xf4\x73\x93\x21\x05\x71\xf1\x74\x04\xe9\xaa\x6d\x8c\xbd\x5f\xd8\x8c\xd7\xdf\xb8\xe2\xe8\xa1\x08\xc0\x5d\xe2\x06\xf3\x40\x82\x34\xa3\xb4\x63\xdb\xe7\x1a\x07\xd0\x55\x87\x32\x45\x24\xb7\x32\x6e\xe7\x9d\x33\x48\xdd\xbe\xd7\x87\x1b\x86\xfc\xb4\x88\x03\x1d\xc9\xea\x93\xf6\xb8\xd7\xfd\xa6\x23\x93\x48\xa5\x62\x44\x4f\xaf\x1e\x72\xd3\x1a\xf3\x54\x43\xe9\xdf\x53\xe7\x62\xf3\xe5\x6b\x48\x66\x8f\x97\x84\xb3\x36\x8a\xb2\x78\xa4\x8e\xf4\x54\x6a\x26\xcf\xad\x0d\x0a\x51\x61\x69\x8f\x26\xee\x8d\x34\xfc\x2b\x3d\x6d\xfb\x93\xb0\x09\xac\x29\x6f\x6a\xfe\x48\x7e\xe3\x35\xea\xc9\xf0\x2c\xfc\xae\x5f\xcb\xd1\xa1\x6b\xa4\xe7\x1b\xe1\xb1\x12\x56\x2f\xc2"}, +{{0xda,0x1f,0x86,0x85,0x42,0xcd,0x7c,0xce,0x7a,0x5c,0xa3,0xfa,0x3c,0x24,0x08,0x1b,0x4d,0x23,0x44,0xb2,0x1a,0x15,0x7f,0x02,0x64,0xa3,0x47,0x13,0x2d,0x19,0x65,0x9d,},{0xcb,0x3a,0x25,0xa5,0x3f,0x27,0x2e,0xa8,0x13,0x80,0x44,0x68,0xd6,0x50,0x0e,0x96,0xa1,0xea,0xf8,0x22,0x70,0x5b,0x77,0x90,0xa8,0xac,0x3e,0x98,0xcc,0x4e,0x52,0x4b,},{0x75,0xc5,0x17,0xad,0xe4,0xf0,0x8d,0x77,0x46,0x30,0x57,0x43,0xd1,0xa7,0x76,0xc3,0xc5,0x5e,0xb5,0xee,0xdf,0xdf,0xcb,0x5e,0xb1,0xd5,0x63,0x4a,0x1b,0xda,0xf7,0xa4,0xb8,0xd2,0x41,0x87,0xd6,0xc8,0x85,0x0e,0x3c,0xed,0x65,0x67,0xa0,0x3c,0x4c,0x59,0x38,0x9a,0x4c,0xf4,0x71,0x14,0xce,0x54,0x73,0x16,0x0f,0x23,0x05,0x46,0xe6,0x0d,},"\xc6\x98\x7e\xf3\x80\xd5\xd0\xe7\x41\x96\x44\x3a\xaa\x3a\x32\x35\x6c\xbc\x02\x63\x6c\x5a\x4b\x6d\x62\xa8\x11\x4b\x21\x11\xbc\x1a\xbd\xdd\x9e\x44\xb3\x67\x2c\x18\xb5\x8d\x4e\xf5\x91\xaf\x45\x62\xe0\x20\x04\x9f\x8e\x12\x74\x68\x8e\x1f\x8e\x52\x96\xd2\xf9\x25\x2e\x7f\xc8\x4c\xd1\xd0\xc5\x8e\x98\xf0\xf1\x60\x53\x0a\xa2\x2c\x87\x1e\xef\x65\x2e\x71\x97\x4c\xe9\x1b\x4a\x65\xfc\x25\xfd\x09\xfa\x1b\x6c\x32\x08\x6e\x98\xec\x70\x8d\x9a\xbc\xb1\xd9\xcc\x8e\x1a\x08\x9e\xd8\xdb\x22\x06\xee\x95\x70\x23\x6a\xd6\x9b\x3d\xe6\x82\x18\x62\xfd\x2c\x70\xcd\x83\xa3\x2a\x68\xb0\x48\x62\x29\x55\x3d\x92\x8d\xe4\x8d\x03\xa1\x04\xe8\x73\x81\x96\x4a\xbe\xa7\x66\x83\x97\x6d\x52\x7c\x84\x16\x3a\x12\xee\xe0\xa5\x59\x86\xcf\x14\x31\xe9\xc8\x6c\xba\x81\x82\xca\x94\x68\x9b\xac\xd1\x65\xfb\xce"}, +{{0xf1,0x3d,0xae,0xc0,0xef,0x33,0xdd,0xd1,0x33,0xc7,0xd2,0x44,0xd1,0x0f,0xd2,0x7d,0xdb,0x23,0x70,0x52,0x80,0xff,0x5f,0x18,0x15,0xf0,0xf6,0x56,0xd8,0x36,0xfe,0x84,},{0x2d,0xc7,0xf1,0x36,0x7d,0xe6,0x72,0xc5,0x1e,0x00,0x5c,0x74,0xf8,0x76,0xf9,0x82,0x59,0x39,0x96,0x87,0x3a,0xcb,0xa0,0x79,0x29,0x27,0x34,0xc2,0x09,0xc2,0xb1,0x11,},{0xdb,0x77,0x18,0x33,0xf7,0xfd,0xba,0xcd,0xab,0x2b,0x5c,0xc8,0x0e,0xed,0x50,0xaf,0xdf,0x13,0x78,0x3b,0x7f,0xe5,0xe9,0x03,0xd5,0xdb,0xb4,0xc2,0xe5,0x35,0x31,0x6a,0x6e,0xef,0x4c,0x34,0xf0,0x04,0xd2,0xb9,0xa4,0xe2,0x70,0x0b,0xd6,0xe2,0xac,0xdd,0x56,0x4c,0x3c,0x80,0xcc,0x68,0xa3,0x03,0xf5,0xfb,0x09,0x1c,0xb4,0x34,0x0f,0x0a,},"\xec\x02\xff\x18\x04\xb2\xb3\x09\xaf\x31\x58\xb6\x62\x72\xa1\x4a\x3a\xad\x83\xc4\x1a\x71\x98\x46\xf7\x08\x8c\xa9\x79\x2a\xf5\x75\xc7\x89\x13\xc4\x32\x75\x9f\x0b\x9a\x74\x8b\xdc\x55\x68\x49\x6e\x41\x65\x8c\xc1\xcd\xb8\xda\x6c\x91\xd0\x7c\x3e\xc2\xf4\xaf\x50\x42\x49\xb9\x96\xaa\x00\xc0\x07\x1c\xdf\xa7\x93\xf8\x2d\x0e\xc5\xd2\x67\x26\x2f\x51\x8f\xc0\x29\xb8\x8e\x20\xb6\x20\x1f\xb9\xe0\x5a\xbd\x3f\x95\x24\xc5\xda\x2f\xa8\x97\x8f\xf2\xef\xd4\x81\x20\xcf\x00\x82\x2d\x1b\xee\x90\xdf\x81\x61\x25\xd8\xed\xc0\xcf\xb5\xde\x66\xd1\x6b\xe6\x38\x96\xa4\x12\xa6\x2b\x03\x1b\x71\x18\xac\x13\xfe\x2c\x9f\xaa\x6b\x1a\x33\x42\xf9\xcc\xf7\x88\x41\x66\xcf\x48\x9a\x84\xde\x26\xb5\xce\x5b\x21\x85\x6a\x3a\xf2\x89\xbc\x66\x22\xc0\xaa\xb9\xf2\x14\x2d\x39\x3f\x5d\x4b\x23\x67\x79\xdb\xb0\x66"}, +{{0x42,0xdc,0x16,0xc5,0x7f,0xb6,0xf1,0x28,0x94,0x5f,0xa1,0x01,0xe0,0x5b,0xbf,0x54,0x8e,0xf7,0xd9,0x77,0x26,0xb6,0x92,0xfe,0x40,0x40,0x69,0xcc,0x57,0xcc,0xef,0xa0,},{0x0a,0x1b,0xa5,0xdf,0x52,0x39,0x96,0xf9,0x54,0xb3,0x4d,0xdc,0xfa,0xba,0xd3,0xf3,0xde,0xe2,0x1a,0x5f,0xa7,0xa4,0xce,0x32,0x2d,0x21,0x6b,0xd8,0xcc,0xaf,0x43,0x8c,},{0xc7,0x59,0x77,0xe8,0x3b,0xcf,0xe9,0xdf,0x72,0x92,0xa8,0x60,0xed,0x97,0x25,0x55,0xb5,0xc2,0x44,0x16,0xfd,0x4b,0x7e,0xe3,0x28,0x53,0x88,0xfa,0x5b,0x14,0x47,0x60,0x8e,0x4a,0x34,0x78,0x13,0xcf,0xe0,0x93,0x51,0x2a,0x76,0x51,0xe4,0x22,0xe9,0x86,0x7d,0xb7,0xb9,0x7c,0x0b,0x08,0x67,0xf0,0xb8,0xc7,0xb7,0xf4,0xf0,0x2c,0x31,0x0d,},"\xf2\x71\x4c\x23\xa3\xa6\xfc\x11\xad\x15\xc9\x80\xb7\x35\x0f\xc8\x42\x17\x87\x76\x61\x18\x80\x55\xff\x75\x0d\x82\xc4\x9c\x5f\xef\x7b\xc8\xe6\xaa\xc5\x74\xa1\xb7\x9a\x3f\x26\xd1\x69\x69\xc0\xf4\x06\xee\xab\x3e\x9e\x12\x85\x0a\x55\x70\x97\x45\xe3\x0d\xff\xa6\x2a\x69\xdf\xb2\xb6\x4b\x3c\x1b\xd2\xbc\x35\x86\xe2\x6d\x4e\xea\x71\x4d\x2a\x7b\x71\xcf\x79\xfb\x8f\xfb\xf2\xaa\xad\x00\xca\x3e\x4f\x2b\x6f\x50\x3c\xc1\xfe\xf2\xea\xb3\x65\x6f\xb4\x4f\x8d\x62\xa8\xdb\x8a\xb5\x8f\x39\x46\x93\x94\x9e\xea\x57\xfa\xfe\xcf\x00\x5f\x6e\xbf\x12\x87\xdb\xa4\xd2\xd6\x23\xc0\x2e\xa1\x71\xf5\x67\xe5\x26\xad\xd2\x07\x09\xeb\xca\xb9\x62\xf8\x3d\x98\xef\x66\x8e\xbd\x01\xef\x20\x48\x8b\x36\x65\xe3\xa4\x46\xfb\xfb\x13\xd3\x40\x50\x94\x2c\x74\x9b\xb2\xdf\xfc\x76\x63\x67\xfd\x45\x2e\x68\xe5\xb0\xc6"}, +{{0x90,0xb4,0x55,0xc6,0xbb,0x9c,0xec,0x83,0xe1,0x37,0x35,0x70,0x65,0x33,0x9d,0x03,0x05,0x25,0xd0,0xea,0x7f,0x5b,0x92,0x3a,0x2d,0x59,0x72,0xc3,0xc1,0x2a,0xa3,0x7b,},{0x5c,0xef,0x03,0x8c,0x16,0xbf,0xa4,0xb4,0xc9,0x23,0xa0,0xfe,0x70,0xcd,0x7f,0x25,0xc8,0xbc,0x83,0x7f,0xdf,0x5a,0x7e,0xfb,0x9d,0x95,0xf2,0x1b,0x96,0xbe,0x92,0x5a,},{0xc9,0x34,0x5e,0xec,0x2c,0x4a,0x0a,0xec,0x73,0x23,0x86,0x49,0x4a,0x69,0xa3,0xfc,0xe8,0xb8,0xa1,0xbe,0x36,0x6b,0xbe,0xd1,0x65,0x9f,0x13,0x1f,0xe9,0x7c,0xc0,0x37,0xfb,0x1b,0x7c,0x1b,0x68,0xb0,0xf3,0x02,0x39,0x45,0xd2,0x00,0x90,0xa0,0xcd,0x2c,0x15,0x53,0xa4,0x7f,0xae,0xc4,0xd6,0x6f,0xd8,0x16,0xce,0x12,0x11,0x68,0xf3,0x09,},"\xc6\x2c\xfd\xb9\xd2\x1e\xee\x6b\xe4\x7f\x30\x72\x7a\xae\xe5\x1f\x07\x03\x78\x9a\x43\x1d\x32\x22\x85\x33\x35\x02\x17\xa9\x3a\x18\x90\x06\x69\xc9\x59\x56\xf3\xf2\xae\x90\xdc\x74\x5a\x71\xe1\x83\x40\xd0\x58\xd1\x6b\x4c\x6f\xe3\x3b\x64\xaf\x8d\xad\x97\x3f\xe5\xdc\x02\xe8\x52\x07\x05\xc7\xa8\xbb\x3c\xcb\xe1\x83\x8c\x6c\x24\x93\x37\xf9\xb6\xa4\xc0\xe1\xf8\xa4\xe5\xd1\x03\x19\x6f\xa7\x99\x98\x92\x3d\x04\x22\xe9\xd0\x79\xa7\x2c\xc2\xa8\xf8\x6d\x65\x90\x31\xa6\x07\xd4\xcc\xa0\xb9\x47\xb3\xab\xee\xee\xf6\x4c\x28\xda\x42\x0d\x05\xde\x66\x5a\x55\x10\xfe\x55\xf7\x75\x98\xec\xad\x7f\xaa\x0a\xc2\x84\x80\x0b\x53\x82\x93\x94\xc4\xae\x90\xbe\x66\x67\x8f\xf0\x4a\xb4\x6d\xa2\x65\xae\x06\x40\x2d\x8c\x83\xca\xd8\x4d\x61\xa0\x51\xde\x02\x60\x55\x98\x88\xe7\x79\xf7\x4b\x72\xa5\xd7\x1c\x13\x2f"}, +{{0xdc,0x18,0x5c,0x2b,0xa0,0xb3,0x78,0xdf,0xe5,0xdd,0xa5,0x10,0xc3,0x2f,0xef,0xf5,0x35,0xca,0x2e,0x8a,0x02,0x43,0x4b,0x32,0x6e,0x01,0x58,0xbc,0x87,0x8e,0x88,0x48,},{0x33,0xd6,0xcc,0x05,0xa4,0x34,0xe4,0x19,0x28,0x0d,0x58,0x64,0xa1,0xaf,0x20,0x9a,0x2c,0x67,0x68,0x14,0xb7,0x0f,0x72,0xf8,0x14,0x1a,0xc7,0xe0,0x57,0x3e,0xe6,0x3e,},{0xf1,0xe4,0x45,0x14,0xd2,0xec,0xbc,0xc8,0xd1,0xa7,0xe8,0x4b,0xf5,0x84,0xce,0x73,0x18,0x35,0xe9,0x89,0x4f,0x88,0x97,0x4f,0x09,0x8d,0x45,0x6b,0x60,0x71,0x8f,0x57,0x5e,0xf4,0xd8,0x06,0x2f,0x21,0x82,0x50,0x42,0x50,0xcf,0x83,0xbb,0x2a,0xf2,0xa7,0x9b,0x1f,0x58,0xa6,0xa9,0x7b,0xd9,0x8d,0xa4,0x67,0x13,0x2d,0x7b,0xec,0x2f,0x05,},"\xe2\x76\xb1\x19\x12\xcc\xa5\xa8\x4b\xba\x65\x0c\x17\x2a\xef\x3a\x4d\x5f\x91\xac\x72\x29\x13\xbb\x89\x1a\x3a\xb0\x42\x4a\xb0\x7e\xa7\x09\xcb\x8b\xba\x3a\x3d\x11\xf8\x2f\x51\xc2\xaf\x01\x62\xa8\x2f\x72\x19\xce\x27\xb3\x5a\x30\x50\x7d\x53\x6a\x93\x08\x17\xe4\x0f\x85\xa2\x2a\x5a\x43\x2b\x94\xd1\x92\xc3\xc8\x91\x17\x77\xcf\xdb\x7f\xe9\x37\xa6\x75\x02\x77\x0d\x6d\x75\x75\x3d\x3a\xe8\x82\x29\xe0\x8f\x1e\xd2\x3b\x43\x28\xd8\x62\xac\x61\x86\x3c\x06\x3e\xa9\x84\x8f\x8a\xb9\x6a\x02\x13\xd7\xb9\x36\xc4\x8f\xe7\x54\x83\x6c\x98\x48\x78\x59\xd1\x99\xb3\xd9\x40\x39\x27\x16\xa1\xd5\x69\xe6\xc0\xcb\x1b\xa9\x18\x93\x2c\xf8\x85\x25\xe2\x56\xc8\xab\xb1\x1a\xaf\x0b\x45\x46\x55\xd5\xdb\x55\x71\x3c\xeb\xba\x28\x7a\xe2\x02\x65\x1a\xc8\x72\xbf\xc8\x0f\xea\xa7\xe0\x0d\x47\xc0\xbe\x38\xe6\x58\xf7\xc5"}, +{{0x90,0x72,0x1c,0x43,0xbc,0x36,0x6f,0x24,0xbf,0x4e,0x8c,0x99,0x3e,0x13,0x80,0x24,0x68,0x2f,0x10,0x29,0xdb,0xa3,0x5a,0xbe,0xb0,0xd6,0x0c,0x7f,0xa7,0x10,0x02,0x1c,},{0x7c,0x63,0xa2,0xf1,0x3b,0x7b,0x22,0x0a,0x0b,0xb7,0x52,0xe3,0x80,0x07,0x53,0xb8,0xb6,0xb3,0x26,0x69,0x37,0x8c,0xe1,0x31,0xbb,0x77,0xa9,0xa8,0xd2,0x30,0xe9,0xae,},{0xd2,0x06,0x4a,0x6d,0x6c,0x99,0xc6,0xc3,0xf1,0x52,0xd2,0xd4,0x35,0xf2,0x4e,0x34,0xb5,0x45,0x9b,0x08,0x2e,0xf1,0x1e,0x94,0x4a,0x77,0xff,0x54,0xdd,0xf9,0x86,0x27,0x37,0xec,0xb2,0xac,0x8d,0x54,0x20,0x7d,0x36,0xc5,0x1a,0xd4,0x1f,0x36,0x49,0x0a,0x11,0x1b,0xa8,0x0e,0x12,0x6b,0xfe,0xcb,0x09,0xde,0xf6,0xac,0xcb,0xdf,0x88,0x0e,},"\x65\x1c\x96\x17\xca\xc9\x58\xc7\xed\xd4\xa5\xf3\xfe\xdf\xb8\x3d\xc9\x71\xab\xfb\xb6\x9a\x31\xe8\x98\xcc\xa8\x47\x2e\xf0\x68\x03\x4a\x6d\x23\x76\xee\x0e\x72\xd0\xa9\xbf\xee\x27\x57\x96\xc3\x79\x5a\xda\xc8\xeb\xe1\xd1\x2b\x66\xec\x26\x8f\x6b\x75\xfa\x39\x41\x15\x4f\x99\xe2\x23\xfa\xf2\xcb\xab\x5b\x92\xe2\xb3\xba\x7b\x79\xbe\x77\x00\xef\x9d\xba\x69\x25\x3c\xce\x53\x56\xb0\xc4\xe7\x47\x03\xcf\xca\xfd\xb5\x54\x68\x50\xb4\x62\x32\x67\x5c\x90\xc0\x2d\x5e\x42\x6d\x33\xd6\x0c\xeb\xf0\xc7\x93\x01\x82\x37\x9d\xbb\x00\x7f\x53\x61\x63\xc8\xdd\xbb\xd3\x15\x7b\xb2\xda\x62\x34\x01\x33\xf0\x0a\xe2\x68\x2e\xc6\xba\xa6\x41\x6b\x5a\x01\x52\x1c\xc1\x0e\x04\x69\x52\x95\xf2\xe5\xb9\x4c\x05\xf0\x03\x83\xff\xe9\x54\x83\x07\x97\xf6\xdf\x82\x31\x72\x53\x2f\x98\x16\x5f\xe3\x14\xab\x32\x59\x29\xaf\x83\x85"}, +{{0x9c,0xec,0x24,0x67,0x58,0xe4,0x12,0xe7,0x37,0x8b,0x45,0x79,0xea,0xfe,0x9f,0xac,0x5a,0x25,0xd5,0x40,0x5f,0x92,0x70,0xb5,0xd7,0xe5,0x43,0x41,0x4e,0xc3,0xd5,0xda,},{0x97,0x5a,0x9e,0x6a,0x15,0x2c,0xae,0xbb,0x2f,0x9d,0xd0,0xde,0xb7,0x6d,0xd9,0x22,0xb6,0xdc,0x77,0x05,0x5d,0xda,0x03,0xfb,0xae,0x9e,0x7c,0x68,0x5d,0x07,0x3a,0xa1,},{0x9b,0xad,0x1e,0x3b,0x12,0x79,0xef,0x65,0x8f,0x4d,0x07,0x16,0x44,0xc6,0x3a,0xe2,0xb7,0xa7,0x80,0x35,0x7e,0x9d,0xc4,0x26,0xf1,0x65,0x0e,0xc0,0x63,0x4d,0xfc,0x52,0x0f,0x8e,0xda,0x9d,0xc8,0xf1,0x0a,0xa7,0x32,0x4c,0x59,0x42,0xd2,0x34,0x7f,0xf8,0x80,0x2b,0xd9,0x0e,0x95,0xfc,0xec,0x31,0x33,0x52,0xcd,0xae,0x64,0xf3,0x2a,0x04,},"\x17\xec\x9b\xd4\x7a\xdd\x6c\xcf\xbd\x78\x7a\xf0\xd9\x01\x3e\x9c\xc9\x79\xaa\xf8\x50\xe0\x94\x26\xd3\xb2\x8e\xdf\xd7\x12\x96\xeb\x31\xff\x8b\x21\xc5\xfe\x7b\xe0\x50\xf5\x36\x32\x4c\x3e\xc4\x88\x50\xe0\xb5\x08\xa3\x6b\xb4\xcb\x7e\x75\x4b\x32\x71\x83\xa1\xb3\x94\xd8\x8a\x79\x41\xd1\xce\x8d\xac\x62\xa5\xd8\x29\x18\x74\xd7\x84\x85\xe5\x1f\x29\xed\x05\x86\x5a\x20\x6e\x52\xec\xb1\x2c\x5d\x10\x7d\x4f\xf9\x6f\x25\xd3\xc5\xd1\x81\xd2\xc4\xba\x64\x63\x60\x0d\xb1\xcc\xa3\x28\x57\xfc\xf5\x97\xcb\xdf\xb2\xfd\xa2\x70\x8a\x8a\xba\x28\x1b\x43\xc3\xd2\x8c\x4a\x4e\x79\x83\x36\x15\x09\xf6\x1a\x10\x74\xe6\xf0\xad\x61\x01\xc7\xb5\x67\xee\x40\x78\xe9\x83\x9c\x47\xf4\x65\x31\xb7\x29\xff\x0e\xfe\xef\x7c\x9d\x1a\x8d\x83\x3d\x9c\x0f\x42\x81\x2a\x34\x18\x7c\x3a\x77\x8c\x16\x5c\x09\xd6\x45\x9c\x9c\x7c\xea\xa2"}, +{{0xd1,0x40,0x3f,0x63,0x20,0x2e,0x08,0x05,0x25,0x84,0x3b,0xde,0x25,0x5e,0xeb,0x6b,0x67,0x83,0xc1,0xca,0xae,0x9d,0x6e,0xd0,0x0b,0xa6,0x08,0x05,0xbe,0xd1,0x94,0x1f,},{0x23,0x8a,0xea,0x3a,0xd6,0xd6,0xf2,0x77,0x83,0xe7,0x05,0x16,0xbb,0xfc,0xca,0x47,0x70,0x36,0x6b,0x50,0xed,0x0f,0xe6,0xa4,0xe9,0x66,0xb5,0x3a,0xf1,0x21,0xa7,0x21,},{0x8e,0x60,0xe7,0x3c,0x06,0x38,0x16,0x79,0x5e,0x29,0xf5,0xd6,0x4e,0xce,0x11,0x59,0xf1,0xb5,0xd5,0x02,0x1a,0x6f,0x8f,0x65,0x5e,0x26,0x1a,0x4d,0x00,0x26,0xf5,0xb9,0x4f,0xf2,0x92,0x32,0x50,0x49,0x9d,0x99,0x52,0x98,0x48,0x05,0x12,0xe4,0x12,0x62,0x76,0xaa,0x4a,0x22,0x6d,0x01,0x5a,0x95,0x82,0x7b,0x3c,0xe6,0x92,0xe2,0x33,0x02,},"\xc4\xf1\x7d\x44\x2f\xba\x4c\xa0\xdf\x8d\xc1\xd0\x62\x8d\x7d\x7f\x36\xb6\x0b\x57\x58\xd7\xc1\x3b\x80\xb8\xf9\x7a\x62\x12\x4d\x96\xa2\x3b\x27\x95\x65\x49\x5a\x8a\xcc\xab\x59\x97\x11\x5b\x13\xa4\xba\x22\x0a\x73\x95\x7e\xb7\x93\x05\x20\xac\xbb\xfb\x6f\x54\xcf\x68\x72\x6b\x64\x50\xc6\xff\xa9\x47\x0b\x05\x5e\xa2\x62\x91\x4e\x2b\xc6\x12\x63\x3f\x1a\xc3\xd0\x61\x8a\x23\xdf\xf1\x88\xa7\x33\xd7\x6b\xcb\xcc\x46\x0f\x52\xab\x61\xe1\x99\x38\xf9\xc8\xca\xaa\x79\x2c\x20\x8d\x1f\x6c\x75\x47\x28\x90\x5f\xda\x51\xd8\x81\xa3\x47\xa5\x3d\xa7\x44\xd3\xba\xad\xc0\xa7\x6c\x47\x4c\x55\x86\x80\x26\x90\x95\xf9\x08\x4a\x74\x47\x1d\x5c\x09\xff\xc2\x91\x41\xb5\xbf\xaf\x49\x54\xdf\xac\xbc\xa6\x63\xd0\x37\xb1\x7e\xbf\x95\x59\x88\x22\x33\xe5\xca\x5a\x8b\xf7\x5c\xca\x4f\xc9\xc5\xa4\x10\x9f\x32\xe1\x45\xf3\x85\x3b\x17"}, +{{0xbd,0xf6,0xbd,0xc3,0x1a,0xb0,0xb5,0x31,0x37,0x84,0x48,0x3a,0xbe,0xca,0x6e,0xa5,0xe9,0xcd,0xc6,0x8f,0x81,0xb2,0x1f,0x35,0x0d,0x09,0xc3,0x90,0x7b,0xb9,0xb6,0xa1,},{0x03,0x62,0x77,0x12,0xb7,0x55,0xe5,0x06,0x9f,0xb9,0xab,0x8f,0x9e,0x89,0x97,0x24,0x02,0x9a,0x7f,0x26,0x8a,0xf9,0x39,0x88,0x21,0xee,0xec,0x93,0x60,0xc9,0x28,0x5b,},{0x38,0xfa,0xc6,0x03,0xed,0x24,0x6f,0x83,0x3f,0x1c,0x0f,0xd4,0x58,0x56,0x98,0xb0,0xa7,0x13,0x05,0xef,0xf0,0xd1,0x4a,0x00,0x49,0xb3,0xce,0xf0,0x73,0xbd,0x03,0x6d,0xd4,0x51,0xb3,0xda,0xba,0xda,0xae,0xae,0xa2,0xae,0xaf,0x83,0xd3,0x95,0x74,0x6f,0x4e,0x86,0x86,0x6a,0xda,0x97,0x1c,0xbe,0x48,0x2e,0xdb,0x04,0x19,0x33,0x2f,0x0e,},"\x90\xa6\x6a\xaf\xa5\x64\x2a\x98\xe7\x9f\x0d\x88\x14\x70\x80\x16\x7b\x11\xe4\x46\x65\x18\xf1\x95\xcd\xdd\x89\x40\xd1\x2e\xe4\x91\x8d\x31\xa6\xd4\xcb\x77\xd0\xbf\x5a\xf2\x99\x83\xbb\xe5\x08\x56\x10\xa7\x9d\xaf\x0c\x75\xa7\x8c\xcb\xcf\xfb\xbd\xab\x21\x89\xc3\x94\xae\x24\xe2\x65\xbd\x8c\x55\xfd\x3f\x40\x98\xe1\xb1\x75\x57\x75\x49\x51\x8e\x7a\x4d\xcf\x74\x52\x08\x6d\xd1\x27\x8d\xd5\x8e\xa4\xc0\xaa\x69\x0e\x91\x79\x51\xef\x39\xfc\xff\x60\xcb\xfa\x1e\x90\x91\x0b\xab\x53\x74\x92\x8d\x47\x22\xf7\x02\xbf\x5a\xd6\x02\x8f\xfd\xa6\x54\x1f\xa5\xba\x1a\x37\x79\xec\x78\xb0\xa9\x5f\xe3\x85\x0c\x74\x8b\x6c\x8f\x42\xf3\x30\xec\x79\x54\x1a\x52\xa1\xcf\x57\xdb\x72\xdf\x4f\x92\xce\x7f\x74\x8a\xee\xf1\xaf\x33\xbc\x5a\xe0\xa8\x2c\x89\xdf\xf2\x16\xf2\x3a\xec\x16\x8a\x7d\xbb\x51\x0a\xa6\x32\xda\xab\xcc\x97\x1b\x3f"}, +{{0x57,0xb3,0xb1,0x4a,0xce,0x1c,0xd0,0xcd,0x60,0x3e,0x63,0x28,0xbd,0x21,0x9e,0xe7,0xd9,0xd0,0x94,0x48,0x7f,0xa6,0x68,0xf2,0x8a,0xee,0xc0,0x2b,0x43,0xc9,0x09,0xa7,},{0x24,0xe6,0xb6,0x39,0x5f,0x97,0xea,0x0e,0x23,0x71,0x86,0xd4,0x69,0xb7,0x19,0x23,0xd2,0x11,0x3a,0xdf,0x40,0x3b,0xee,0xeb,0x4a,0x2d,0x27,0x90,0x9a,0xaf,0x3e,0xda,},{0xfc,0x79,0xfd,0xc6,0xd0,0x90,0x88,0x7a,0x61,0xe4,0x3c,0x6b,0x91,0x87,0xb6,0x57,0xd2,0xe4,0xd9,0xcb,0xaf,0xd6,0xe7,0xca,0xeb,0x7e,0xbd,0xea,0x84,0x28,0x25,0xb7,0x8f,0xb9,0x49,0xd2,0xc4,0x9a,0x0c,0xf3,0x8b,0x6c,0x73,0x29,0x6d,0x82,0xc8,0xdd,0xeb,0x1f,0xe2,0xd4,0x0a,0xad,0xdd,0x79,0x64,0xda,0x68,0xac,0xf8,0xc6,0x6f,0x0e,},"\xb2\xe0\xde\xdd\x80\x2e\xed\x99\x6d\xbd\x58\x36\xbf\x86\x88\xb0\xd1\x20\x1b\xf5\x44\x2f\xf9\xbb\xd3\x51\xae\xef\xe1\xa0\xc2\x1f\xea\x2b\x5c\x9f\xe5\xed\xee\x47\xe9\x21\x09\x9b\x05\xae\xda\xa8\x03\x67\xc1\xce\x08\x82\x1d\x78\x3a\x5b\x64\xcf\x05\x9c\x0f\x43\x35\x08\x39\x86\xa5\xa6\xec\xff\x8c\x84\xfd\x40\xe0\xba\x5d\xd5\xe5\xd2\xf0\x11\x12\xa8\x4c\xe5\xcf\x8e\x0d\xb7\x8b\xeb\x18\x2d\x91\x39\xc0\xb0\xf3\xe0\x06\x0a\x3f\xa7\x38\x69\xe9\x64\x23\xf1\x70\xdf\x9a\xf1\xcb\x9c\x35\x56\x6d\x87\xdf\xf5\x42\x22\x3f\x6d\x43\x9b\xdb\x54\x72\x9d\x36\x6a\xff\x63\x7b\x0f\x36\xa5\xd1\x4b\x15\xd6\x12\xbd\x03\x07\x6c\xc4\xd0\x4c\x1f\x25\xb3\xba\x84\xe0\xd1\xfe\x47\x4e\x57\x18\xd1\xa1\x7d\x5a\x48\x84\x65\x66\x2e\xe4\xc3\xf6\x64\xb4\xc9\x27\x4b\x64\x9d\x78\xce\xa4\xe8\x52\x43\xf3\x71\x32\x39\x04\x8a\x90\x8c\xe3\xe1"}, +{{0x01,0x8a,0x2c,0x3d,0xee,0xa5,0x0a,0xb5,0x06,0x75,0x1f,0x9c,0x2a,0xda,0xad,0xfd,0x9e,0x21,0x92,0x12,0x16,0x09,0x93,0x16,0x84,0xeb,0x26,0x5e,0x19,0x3e,0x7f,0x89,},{0xaf,0x41,0x0b,0xdd,0xde,0xfc,0x64,0x4e,0xf1,0x2c,0x98,0x99,0xff,0x71,0xb9,0xe1,0xd0,0xdf,0xa3,0xd6,0x9d,0x8c,0x2c,0xd6,0x76,0xc1,0x91,0x6b,0x34,0x59,0x1c,0xfd,},{0x7a,0x44,0xe6,0xa3,0x19,0x32,0xde,0xe6,0xdc,0x2d,0x83,0x94,0xe2,0x9a,0x65,0x51,0xd1,0x3e,0x6c,0x6f,0xfd,0xfa,0x21,0x8f,0xa5,0xb9,0x98,0x66,0x8d,0x84,0x39,0xdb,0x5e,0x05,0x37,0x9f,0xbf,0xa0,0xda,0x5b,0x56,0x3e,0xd9,0x66,0x43,0x5a,0xe2,0xc5,0x4e,0x3a,0xd1,0x6e,0x1a,0x9f,0xca,0x1f,0x5a,0x15,0x7a,0x08,0x07,0x04,0xab,0x03,},"\xcf\x78\x13\xef\xac\x12\xad\x1c\x7c\x73\x22\xcc\xbe\x54\xaa\x0e\x9a\x8b\xa4\xfd\x43\x45\xb0\x6e\x4c\xe7\xa3\x5c\x8b\x1c\xd5\xe3\xf7\xf0\x68\x85\x33\x84\x9b\xa2\xcf\x4c\x75\xb6\xf2\x09\x26\xa1\x19\x4a\x72\xdf\x0e\x1b\x1b\x34\x45\x6a\x21\x33\x11\x2d\x00\x67\x22\xfe\x81\x1d\x5e\x40\xc4\x12\x11\x59\xde\xd8\x89\x90\xc0\xac\x2b\xfd\x34\xf3\x5a\xf4\xf0\x7c\xc4\x02\xe9\xa3\x81\xa6\x75\xd0\x3f\xec\x7e\xc4\x38\xc4\xad\x9d\x92\x9a\xec\x8f\x24\x2d\xef\x02\x3c\x99\x3c\x9e\x8b\xa1\x8c\x74\x28\xe8\x8f\xde\x68\xa4\x71\x1e\x50\x6d\x79\x69\xf6\x3c\x8e\x0b\xc8\x3f\xf0\xde\x4e\x13\x36\x10\x6c\x05\xe0\x9d\x59\x22\x40\x0e\x8a\x81\xbf\x54\x88\x56\x67\x89\x97\x85\x88\x2b\x70\xf2\x0d\xd8\xfb\x1e\x75\xf5\x85\x5b\x76\x5a\x25\x6d\xa4\x34\x1b\xf2\x3e\xa0\xff\xa1\x8a\xad\xda\x38\x18\x16\x94\x60\x01\x04\x56\x69\xc8\xd0\x4d\xf0"}, +{{0xbe,0xa4,0x45,0xe9,0xb6,0xd3,0xf2,0x12,0x35,0x91,0x2c,0xd6,0xc4,0x2e,0xc0,0x57,0x72,0x97,0xca,0x20,0xa1,0x03,0x57,0x88,0x0c,0x2b,0x84,0x6d,0xd8,0xe2,0xcc,0x77,},{0x02,0x41,0x74,0x96,0x62,0x21,0x69,0x9e,0xa4,0xb0,0xa3,0x7e,0x51,0x7f,0xf9,0xb1,0x65,0x98,0xae,0x4d,0x4e,0x83,0xbf,0xa3,0xca,0x50,0xbc,0x61,0x68,0x41,0xf5,0x95,},{0x69,0x64,0xb9,0xc5,0x90,0x3e,0x74,0xe9,0x93,0x28,0xac,0xef,0x03,0x65,0x58,0xee,0xcd,0x33,0x69,0x15,0x0a,0x52,0xe2,0xcb,0xad,0x4b,0xbb,0x97,0xd4,0x61,0xb3,0xdf,0xc6,0xb3,0xe8,0x45,0x58,0x13,0xa4,0xf4,0xbd,0xca,0x46,0x30,0x2e,0x02,0xe6,0x83,0xec,0xea,0x18,0x20,0x17,0x1c,0x53,0x8e,0x54,0xc3,0xde,0x6c,0x95,0x4a,0xa4,0x07,},"\x47\x43\xc7\xc0\x99\xab\x81\x59\x27\xb3\x67\x4d\x00\x54\xb6\xde\x59\xaf\x28\x11\xab\xc2\xcf\x7f\xde\x08\xf6\x29\x29\x18\x5a\xdc\x23\x8f\xad\xd5\xe7\x5a\xe3\xba\x00\x36\xff\x56\x5a\x79\x40\x5b\x42\x4f\x65\x52\x33\x1e\x27\x89\xd9\x70\x9a\xc1\xec\xbd\x83\x9a\xa1\xe9\x1c\x85\x48\x17\x59\x79\x58\xcc\x4b\xd9\x1d\x07\x37\x75\x07\xc2\xc8\xd3\xc0\x06\xcf\xeb\x6c\x0a\x6c\x5a\x50\xee\xe1\x15\xe2\x11\x53\xdd\x19\x8e\xa0\xa3\xaf\xf6\x2b\x70\x75\xd5\xa4\x61\x78\x87\x83\xf0\x50\xe6\x59\xc5\x72\x96\x3d\x7a\x59\xe5\xaf\xaa\x2b\x9c\x50\x1f\x43\xc6\xac\x08\xab\x47\x97\xc4\x56\x6d\x22\xb9\x3c\xdf\x65\xa9\x9a\x2a\x1d\x63\x8e\x79\xf7\x2b\x5f\x46\x31\xfe\x5e\x9e\x5f\x96\x8f\x6d\xb7\xa1\x88\x0d\xf5\x1d\x8f\xeb\xc1\x49\x42\x67\x2f\x8e\xa6\xfc\x3a\x72\x81\x4a\x44\xd6\x6d\x14\x84\x20\xa6\x90\x00\xf6\x8c\x33\x0d\xe5\xb8\x0f\xc6"}, +{{0x64,0x47,0x54,0x0e,0xd7,0xbe,0x0a,0x11,0xc2,0xa8,0xde,0x79,0x3d,0x83,0xc6,0xe2,0x44,0x98,0x3d,0xb1,0x8d,0x78,0xec,0x9d,0x75,0xf1,0x72,0x9c,0x92,0xe0,0xfd,0xf1,},{0x39,0x12,0x12,0xc8,0xed,0xc4,0xd3,0x34,0xa5,0xbe,0xc8,0x60,0xef,0x0f,0x5e,0xbb,0x5e,0xc4,0x4e,0x8b,0xb5,0x1c,0x0f,0x67,0x41,0x99,0x89,0x59,0xb2,0xb3,0x79,0xfc,},{0x3a,0xb5,0xf8,0x8e,0x2f,0x72,0x76,0xb5,0xb6,0x58,0x3d,0xff,0xba,0x56,0x39,0x99,0x3a,0x90,0x5d,0xbf,0x9b,0x88,0xce,0xea,0xaa,0xae,0x33,0x35,0x80,0x0e,0x4a,0x5f,0x10,0xf8,0x3d,0xa6,0xd6,0x22,0x5a,0x8d,0xbe,0x99,0xae,0x80,0x07,0x50,0x09,0xdd,0x50,0x87,0x86,0xb3,0x97,0x51,0x13,0xdb,0x47,0x8e,0x14,0xba,0x10,0x1b,0xee,0x0f,},"\xa4\x38\x1c\x76\x38\xc4\x87\x99\xe9\xb5\xc4\x3f\x67\xfc\x3a\xa3\xcb\xb5\xec\x42\x34\xf3\x7e\x70\xcc\xcc\xce\xd1\x62\x7a\x57\x68\x3d\x1e\x53\xf4\xe0\x88\x3d\x8b\x46\x2b\xf8\x3f\x13\x08\x63\x03\x68\xc8\x9b\x49\x15\x33\xdd\xb8\xc9\xa5\xb9\xe8\x15\x50\x02\xfd\xd5\x81\xa9\xa5\xbe\x0e\x43\x0b\x90\x86\xa6\xbe\xac\x47\x20\x21\x0f\x87\xb1\x4e\x86\x2d\x97\xe5\xcc\x69\x28\x67\x86\xa7\x58\x67\x23\xf2\x31\xef\x0e\x3e\x1b\x93\x2d\xbb\xa3\xa1\x8a\x0c\xb2\x21\xcb\x07\xf8\x0e\x6a\x8e\x13\x00\x05\x6c\x13\xe7\x02\xb2\x3b\xfb\x32\x50\xec\x7c\xc8\x64\xd5\xc7\xec\x57\x86\x24\x07\x09\xc5\x60\x24\xea\x6b\xe5\xf7\xb1\x5a\x4f\xa5\x55\x5e\x39\xa7\x44\xa1\xdc\x55\x7d\xf5\xb9\x48\xdb\x22\x0b\x3d\x57\x45\x74\x66\x91\xda\xcb\x44\x21\x64\x1c\xdc\xc1\x2e\x7e\xc0\x45\x02\x93\xf1\x9e\xc5\x7b\x09\xcf\xf1\x35\x84\x7a\xab\xe4\x46\xa6\x13\x32"}, +{{0x0c,0x58,0x7a,0x81,0x1a,0xdd,0x88,0xb9,0x94,0x45,0x8c,0x3c,0x80,0x8a,0xc4,0xe3,0xa8,0x3a,0xfa,0xb2,0x6d,0x4c,0xff,0x5c,0x96,0x1b,0x9d,0xf0,0xb5,0xc8,0x33,0x44,},{0x06,0x78,0x3b,0x0c,0xdc,0xc5,0x02,0x8c,0x56,0x38,0xbd,0x74,0x8f,0x0b,0xc7,0x6f,0x7e,0x94,0xd1,0xaa,0x20,0x15,0xca,0x94,0x87,0x38,0xa3,0x50,0x04,0x60,0xac,0xa0,},{0x33,0xb4,0xf4,0x27,0x4f,0x20,0x00,0x8a,0x72,0x1d,0x1e,0x8d,0x05,0x4a,0x2b,0x4e,0x95,0x32,0x7e,0x38,0xbb,0x07,0xb3,0x3c,0x4b,0xee,0x7e,0x1c,0xe0,0x20,0xa4,0x42,0xfb,0x26,0x27,0xed,0xa3,0xb7,0xac,0x93,0xcd,0x3a,0xb0,0xb1,0x2b,0x99,0x93,0x5a,0x1a,0x92,0x33,0x11,0x16,0x04,0xda,0x4a,0xcf,0xfb,0x53,0x15,0xb9,0x07,0x12,0x0b,},"\xf5\x6d\xc6\xb7\x60\x76\x32\x5b\x21\x26\xed\x11\xd1\xf0\x9d\xec\xef\x9d\x15\xc3\x1d\x0e\x90\xcd\xb1\xa2\x7e\x08\x9c\xc5\x63\x29\xf6\xec\x3f\x66\x5e\xb6\x73\x9e\xc5\x67\x8b\x3f\x37\xee\x1f\xb3\x7d\xeb\x9e\x24\x00\x92\xb7\xa8\x8f\xd2\x55\x25\xac\xd5\x5e\x29\x4e\xb1\x04\x6f\x9b\x1b\x69\xa8\x47\xeb\x9c\xeb\x7b\x15\x93\xb9\xf6\x97\x8e\xf6\x18\xc1\x5d\xe4\xe0\x59\xec\xc3\xbf\xda\x32\x97\xa1\x9c\x2d\xf2\x02\xad\xf7\x21\x55\xcf\x21\xea\xbd\x03\x94\x8d\xf1\x51\x98\xe8\xa6\x8b\x08\x84\xf9\x3a\xd5\xe3\x6e\xb0\x98\x3c\xca\x30\xe4\x5a\x8b\x4b\x5f\xb8\x13\x6f\xde\xa8\xa3\x34\x1d\xd7\x87\x75\x40\xa5\x57\xde\xbf\x75\x30\xcc\x33\xae\xee\xf6\x27\x1c\x3f\x0a\xf6\xd0\x97\x87\xe8\x15\xf2\xf1\xdd\x25\xce\x4d\x2f\xd0\x9f\xfa\x9f\x53\x08\x1b\x46\x9c\x50\x0d\xa4\xd4\x41\x80\xc0\x4e\xb1\x86\x93\x29\xcb\xf2\xd8\x23\x18\x7e\x83\x1c\x24"}, +{{0x66,0xcf,0x40,0x1a,0x21,0x42,0xfc,0xf4,0xa8,0x01,0x80,0x46,0xcf,0x41,0x40,0xbc,0xa1,0x8d,0x76,0xef,0x62,0x66,0xe7,0xa0,0x24,0x75,0x7d,0xf1,0x72,0xa5,0xd6,0x53,},{0x67,0xd4,0x8d,0xfd,0x23,0x74,0x3c,0xc2,0xca,0x40,0xe4,0xdf,0xd6,0xb8,0xcc,0x5d,0x84,0xbe,0x82,0xdd,0x2b,0x11,0x20,0xcc,0x47,0x6e,0x6a,0xf6,0xf2,0x5e,0xcc,0x98,},{0xd6,0xb0,0xe8,0x0e,0x60,0xbc,0x1b,0x29,0xab,0x8f,0x74,0x80,0x8f,0xc4,0x60,0x84,0x77,0x95,0xcc,0xb8,0x87,0xba,0xc0,0xec,0xaa,0x8e,0x13,0x52,0x97,0xa8,0x50,0x97,0x71,0x2b,0x24,0xb0,0xa1,0xfb,0xaf,0x7a,0x67,0xc5,0xd5,0x30,0xa4,0x7d,0x06,0x43,0xfc,0x87,0x02,0xc0,0x59,0xd2,0x15,0xfb,0x11,0x2d,0xbe,0x47,0x5e,0x5b,0xca,0x0d,},"\xda\xa8\xef\xb3\xfd\x41\xf1\x2f\xbc\x55\xbd\x60\x46\x41\x57\xa2\x6d\x71\x86\x32\xd8\x82\xae\xdb\x6b\xf9\x8e\x47\xdd\x23\x37\x87\x9e\x0b\x46\x45\x2e\x06\x2e\x6d\xfb\xff\x3e\x7b\xca\x72\x89\xe4\xef\x6b\x3f\x41\xd4\xb0\x3b\xdc\x2c\x84\x2a\xfe\x97\xf3\x02\x98\x83\xed\x45\xf6\x05\x4d\xde\x96\x90\x64\x9a\xbb\x2b\x8d\xc2\x8f\x5f\xe8\xce\xcf\x80\xfc\x1e\xa4\x11\xbf\xc4\x0b\xbf\x4f\xd2\x0b\x21\x8c\xf4\x7e\xa8\xee\x11\x8d\x4d\x5a\xef\xa5\xc1\xbf\xa0\x8a\x8f\xb1\xb3\x0d\x6d\xe0\x97\x7c\xd1\x5e\x50\x29\x2c\x50\x1f\x2e\x71\xce\x27\x40\xff\x82\x8b\x84\x32\xda\x5a\x59\x4b\xab\x52\x23\x76\x0b\x64\x79\x2e\xd3\xa6\x9d\xd7\x5e\x28\x29\x23\x49\x43\x65\x65\x13\xdf\x1a\x17\xa2\xa0\x67\xa9\xa8\xea\xa6\x4e\x19\x56\x9f\x46\x93\x9d\x34\xb9\x92\x71\xae\x50\xa4\x7d\x7d\xbc\xa3\x62\x0c\x81\x25\x5b\x0e\x1f\xd1\xf3\xce\xc8\x51\xf1\xb1\x1b\x35"}, +{{0x5d,0xbf,0x88,0x5a,0xa5,0x98,0xe8,0x95,0x57,0x1f,0x5f,0x65,0x09,0x0b,0x72,0x32,0x3e,0x9d,0x70,0xb0,0xf5,0x81,0x10,0x68,0x7a,0xfb,0xbc,0x38,0x3a,0xfe,0xdc,0xac,},{0xfa,0x17,0xeb,0xa7,0x6e,0x3b,0xc3,0xea,0x6d,0xab,0x3a,0x5b,0x12,0x0d,0xc5,0xec,0xb9,0xae,0x6f,0x00,0x13,0x8f,0x7d,0x36,0xdd,0xa9,0x26,0x8b,0xc4,0x72,0x21,0x74,},{0xe1,0x42,0x9d,0xab,0x2e,0x42,0xcd,0x03,0x5b,0x7f,0xc6,0x02,0xef,0xd6,0xba,0xf9,0x47,0x06,0xf1,0x6e,0xaf,0x2f,0x8b,0x5f,0xed,0x32,0x92,0x39,0xe8,0x75,0x60,0x5f,0xb1,0x72,0xf5,0xdd,0x9a,0xe2,0xbc,0x2e,0xb4,0x2e,0xb4,0x74,0x56,0x7e,0x29,0x2f,0x52,0x06,0xe8,0x2e,0x69,0x4b,0xca,0x0d,0x6d,0x43,0x3b,0x86,0x76,0x34,0xcb,0x0d,},"\x1e\x0b\x6c\xf1\x5c\xe0\x33\x37\x17\x9c\x02\xd6\x54\x08\xdf\x5b\xe9\x20\x0c\x37\x82\xb6\x00\x4a\xf9\x4e\xa4\xde\xcb\x25\x79\x99\xd6\xfd\xff\x30\x1d\x11\xd0\x0c\x98\xc3\x72\xfa\xc0\xd0\x26\xcb\x56\xdf\xef\xe3\xde\xf7\xeb\x99\xac\x68\xd6\x96\x8e\x17\x12\x4d\x84\x46\xf5\x3e\x8d\x2d\x3d\xd8\x90\xd3\x7a\x23\xc7\xe0\xb8\x3a\x48\x4b\x3c\x93\xbd\xdf\x6c\x11\x8e\x02\x81\x95\x9d\x27\xbd\x87\xd3\x7e\x84\x3d\x57\x85\xf4\xa4\x07\x71\x39\x84\x94\xe6\xc4\x32\x2f\xbb\x67\x5c\x1d\x47\x93\x21\x03\x21\x48\xf7\xfe\x52\x56\x4d\xdf\x7a\xe7\xac\x26\x9d\x0c\xd2\xe5\x52\xfe\xc5\x89\xae\xae\x0f\xb9\x3f\xe3\xee\xae\xf0\x85\x60\x96\xcf\x4f\x6b\x34\x97\xe7\x23\x5c\xc8\x49\x4d\x81\x0a\x0b\x46\xc5\xea\xc8\x7f\x18\x7e\x50\x5b\xb7\x76\x4f\x80\x45\xc9\x54\x19\x83\xf7\xb0\x25\x69\x80\x09\xa2\x3d\x9d\xf0\xbd\x1a\x47\x3c\xbe\xe4\xcf\x5e\x94\x88\xec\xbc"}, +{{0x84,0xb3,0xae,0xdd,0x47,0x97,0xa5,0x65,0xc3,0x51,0xde,0x7d,0xfa,0x07,0x00,0xb9,0xff,0x7c,0x4d,0x72,0x91,0xc8,0x80,0x8d,0x8a,0x8a,0xe5,0x05,0xcd,0xd2,0x25,0x90,},{0xd7,0xad,0x72,0xca,0xa7,0xc2,0x22,0x09,0xec,0x46,0x78,0xd1,0x1d,0x55,0x90,0xa6,0xcb,0x28,0xa0,0x71,0x17,0xfe,0x5a,0xef,0x57,0xb5,0x07,0x51,0x58,0x32,0x01,0xa5,},{0x92,0x20,0xf0,0xed,0xaa,0xae,0xe1,0xb8,0x76,0x35,0x0d,0xbe,0x92,0x66,0x06,0x17,0x67,0xb8,0x62,0x96,0xc3,0x51,0xd4,0xca,0xc9,0x9d,0x07,0xcd,0x61,0x2c,0x6e,0xfb,0x24,0xf8,0xf9,0xb0,0xb9,0x75,0xf9,0x5c,0x42,0xc5,0xb6,0xaf,0xed,0xc8,0x92,0xf8,0x7e,0xfe,0xdd,0x39,0xd5,0x16,0x02,0x94,0xc2,0x76,0x58,0xbd,0xcf,0x42,0x85,0x0b,},"\x53\x25\x67\xff\xa5\x3b\x5c\x0f\xcd\x29\xc3\x94\x99\xd2\xe7\x8e\xcd\x20\xe6\x31\x23\x49\x92\x40\xe7\x75\x08\x8b\x39\x4d\xc6\x5c\x8b\xaa\xa0\xfe\x8f\x6a\xa7\xe7\x01\x81\xf9\xe1\x0a\xdd\x8b\x4a\x8b\xeb\x0b\x2e\xc3\x8a\x43\x30\x9f\x10\x0c\xd4\xbe\x91\xc6\xf4\x8e\x79\xdc\x0a\xee\x93\xa1\x5c\x94\x03\x77\x3b\x35\x4a\x8d\x42\xed\x48\xd8\xf2\x76\x23\x0f\xa6\xde\x5a\xda\x50\x1e\xe0\xa6\x53\xb4\x45\x8f\x0e\xcf\x6d\x5b\x3c\x33\xe2\x14\x1c\x66\x2f\x6e\xa0\x55\xf7\x41\xe5\x45\x86\x91\x7d\x2e\x0c\x4e\xb2\xb5\x66\x21\xf9\x66\x5f\xef\x32\x46\xf0\xbd\x80\x0b\x53\x3e\x3b\xc6\x15\xc4\x02\x1f\x8d\x0e\x2a\xd2\x33\xa1\x1e\x77\x36\xc4\x93\xac\xc3\x1f\xae\xe7\x6a\x09\x7d\xc4\x0d\xb9\xef\xc2\x24\x46\xea\xcf\x1c\xc1\x8f\x51\xfd\x10\x23\x6a\x2f\x94\x2d\x0a\x53\xc3\xce\x20\x91\x08\xb5\x93\x8c\x0a\x9e\x53\x6b\x89\xef\x0a\xd6\xb4\x05\xa1\x0f\x22\xc3"}, +{{0x69,0x50,0xbf,0xcf,0x48,0x0b,0x98,0xea,0x18,0xa2,0xd5,0xae,0x5b,0xa6,0xe7,0x66,0x8f,0x4c,0x28,0x3f,0xf2,0x71,0x13,0x57,0x74,0x0f,0xfe,0x32,0xcf,0x25,0x81,0x9a,},{0x8e,0x4c,0x6f,0x23,0x3f,0x7b,0x86,0x32,0x1c,0x9d,0x67,0x99,0xba,0xc2,0x8a,0xaf,0xcd,0x25,0x03,0xd7,0xaa,0x0a,0x7b,0xde,0xd8,0x72,0x27,0x27,0xfb,0xbc,0xae,0xb8,},{0x94,0xde,0x5d,0xf7,0xa2,0x5e,0xcd,0x70,0x20,0x5d,0x40,0xbc,0x94,0x99,0xfc,0x7c,0xd7,0x13,0x65,0x68,0x06,0x0a,0x41,0x9a,0x93,0xbe,0x6e,0x31,0x86,0x64,0xbb,0x6d,0xfc,0xe6,0x0e,0x2d,0x4e,0x63,0x3f,0x7e,0xc1,0x48,0xfe,0x4f,0x83,0x4e,0xd2,0x77,0xc1,0xfe,0xc4,0xc4,0xe2,0xa8,0x6f,0x44,0xc4,0x58,0x9c,0x81,0x78,0x88,0xdb,0x00,},"\xa4\x01\xb9\x22\xab\xa5\x7e\xe0\xc6\xac\x1c\x8f\x1b\x48\x29\x6a\x85\x62\xee\xf1\x37\x52\x68\x93\x88\x6a\x08\x30\x6e\x22\x03\x66\x77\x88\x61\x8b\x93\x98\x64\x46\x7a\x31\xf1\x6e\xdc\xe1\x52\xa4\x2c\x25\x54\x6b\x64\x0e\xa8\xbe\xd1\x89\xa4\xf8\x98\x86\xa3\x7f\x10\x69\x11\xea\xe1\xf5\x00\x81\xbf\x79\x5e\x70\xc6\x50\x44\x37\xd2\xa8\x0c\xb8\x39\x47\x9e\xcb\xb8\x7c\x12\x9b\xcc\x5f\xe3\x1d\x71\x6e\xf9\x78\xc2\x06\xd7\xf0\x8a\x79\x34\x66\x59\x4f\x4d\x75\xe2\x15\xbb\x63\x74\x59\x6f\x8e\x7d\x00\xee\xa7\x24\x78\x09\x43\xe8\x9b\xd3\x86\x3c\x95\x1b\xbd\x24\xef\xee\x23\xc9\x7c\x2c\x79\x7c\x7f\xaf\xbf\x8f\x2c\x8b\x43\xf3\x7a\x5f\x88\x11\x29\xa0\x95\x73\xfa\x7a\x03\x4a\x28\x5e\x80\xdc\x4b\xa4\xbc\x95\x64\xa4\xdc\xed\xeb\x33\x16\x7e\x0b\x30\xc5\xa0\x0b\x9a\x10\x9a\x22\x31\xcf\xa0\x01\x2b\x29\xb2\xb3\x45\x0b\x89\x2e\xcc\xef\x08\x08\xe5\x03\xf8"}, +{{0x61,0xb2,0x60,0xf5,0xb8,0x48,0xb2,0x71,0xef,0x48,0xe5,0xa5,0x6d,0x29,0x74,0x32,0xd8,0x9f,0x2a,0xb8,0x5b,0xd5,0x38,0xfa,0x66,0x88,0x70,0xd0,0x56,0x02,0x20,0xe5,},{0x60,0x86,0xfe,0x87,0x35,0xf3,0x99,0xf1,0xaf,0x2e,0x39,0x5e,0x0f,0xdf,0xb5,0x62,0x9e,0xbc,0xb0,0x4b,0x6e,0xd4,0xa5,0x4a,0x9e,0x47,0x05,0x2c,0x6e,0x81,0x91,0xd4,},{0x98,0x28,0xfe,0xc8,0xff,0x5c,0xf8,0x5a,0x98,0xf4,0x50,0x77,0x0b,0x5b,0xdb,0x4b,0x80,0xda,0xca,0x44,0x37,0x9d,0x8f,0x53,0xc9,0x1c,0x34,0x8e,0x22,0xdf,0x64,0xac,0x48,0xf2,0xb6,0xe2,0xa7,0xb3,0xb6,0x42,0xbc,0x81,0x93,0xa1,0x94,0x31,0x62,0x29,0xe6,0x94,0x47,0xed,0x24,0x1c,0xd4,0x23,0xd8,0x3b,0x6f,0xe7,0xb2,0xd4,0x4b,0x00,},"\x28\x26\x29\x5d\x79\x94\x5f\x67\x54\x76\xbc\x4d\x45\xef\x80\x0d\x80\xb1\xf0\x39\x8e\x4b\xe6\x0e\x3d\xe4\x57\x1e\xd1\x08\xdf\x98\x9f\x03\x2d\xe6\xc2\x34\x5d\x99\x48\xd6\x77\x92\x7e\xa0\xb8\xcf\x1a\x5c\xa3\x6f\xd5\xf2\x3c\x25\xdc\x0d\x2a\xb5\xbd\x56\x5a\x54\xaf\x46\xfd\x97\xd3\x38\xd7\x70\xe3\xa7\xb4\x7e\xfb\x54\xc0\x7a\x16\x64\x70\x77\x71\xeb\x4e\x37\xd9\xd7\x0b\xa7\x79\x25\x1d\xcd\xcd\x3b\xf6\xd1\x24\x8a\xde\xc5\x3f\x78\x72\x59\xc4\xd5\x94\xd5\xfd\x4c\xed\x8e\x3d\xb7\x62\x1d\x49\x65\xd4\x82\x98\x17\x81\x24\x93\x1a\x3d\x0c\xd2\x69\xb2\xd5\x3b\x7c\xd2\x61\xb9\x6d\x37\x0c\x5d\x96\x93\xc8\xad\x13\x3e\xd5\x89\x45\xee\x35\x40\xe1\x06\x25\xd9\x24\xae\xba\x9b\xda\xfc\x65\x61\x00\xaa\xb2\x76\xfa\x99\x6b\x1d\xb4\x77\xbf\x85\xea\x55\x90\x81\xd5\xb4\xc7\x30\x7d\xc1\x59\x56\x54\xac\xa8\x2f\x7b\x6d\x2d\xda\xf7\x35\x7c\x15\xa4\xd7\xd8\xb9\x08"}, +{{0x93,0x6d,0xc1,0xce,0xf6,0xa3,0x10,0x74,0x7f,0x35,0x00,0x88,0x05,0x5a,0x39,0xaa,0x76,0x2d,0x9a,0x4b,0x52,0xc8,0xc8,0xe4,0xc6,0x82,0x79,0x43,0x80,0xc2,0x72,0x5c,},{0x03,0xb3,0x18,0x00,0x41,0x2d,0xf4,0xd5,0x6f,0x15,0x32,0xc0,0x58,0x28,0xc0,0xb7,0x25,0x28,0xa6,0x7a,0x78,0x1b,0xef,0x4c,0x06,0xc1,0xfb,0x6f,0xf2,0xce,0x32,0x4b,},{0x3f,0x99,0x4b,0x8e,0xf5,0x28,0xf6,0x42,0x1c,0x6a,0x6a,0x22,0xe9,0x77,0xad,0xe5,0xce,0xe8,0x87,0x26,0x3d,0xe3,0x8b,0x71,0x9a,0xcd,0x12,0xd4,0x69,0xbf,0xd8,0xc3,0xf6,0x8e,0x7a,0xc0,0x7d,0x2f,0xae,0x80,0xa2,0x09,0x27,0x78,0xdf,0x0b,0x46,0x35,0x37,0xad,0x3a,0x05,0x51,0x99,0x7a,0x3d,0x5b,0x51,0xf8,0x32,0xd9,0xc8,0x23,0x0b,},"\xeb\x58\xfe\x86\xc4\xef\x34\x9c\x29\xae\x6f\xb0\x4f\x10\x85\x0e\x38\xc6\x82\x3d\xbe\x64\xa0\x9a\x5b\xf1\xe0\xce\x60\x0d\x39\x4e\xfa\x6f\xb9\x6e\xd6\xa8\xf2\xc9\xd4\xbe\xc0\x5e\x6a\x5e\xbd\x5a\x1b\xf4\xd0\xc5\x1d\xb9\x34\xe5\x7b\x79\xe5\xc6\xa8\x79\xd9\x75\x19\x7d\xbb\x10\x47\x5f\x65\xc7\xf8\xa8\xc6\xa7\x7a\x42\x03\x84\xb5\x06\x2a\x27\x40\xf1\x40\x17\x40\xee\x0f\x5e\x04\x3a\xad\x7a\x2a\x2b\x42\x60\xc5\xd9\x07\xf7\x05\xed\xaf\x65\xb0\xe3\x75\xdf\xc7\xb0\x0b\xd6\x60\xdb\x61\x47\xf2\xeb\xe8\x70\xa0\xee\x18\xdc\x2b\xa3\xc9\x2b\x0b\x76\xfa\xe2\xb9\x09\x32\xcd\xb6\xc1\x49\xe4\x6f\x3f\xee\xcf\x4c\x26\xf0\x44\x1f\x3a\x9e\x00\x66\x78\xae\xcf\xf8\xcc\xae\xca\xed\xa7\x3a\x18\xa6\x8a\xc9\x88\xb6\x2e\x83\xa9\xbb\x51\x88\xae\xde\x38\xdf\x77\xa9\xa1\x64\xab\xbd\xd9\xd5\x8e\x52\xa6\xca\xf7\x22\x23\x89\xf1\x98\xe8\x5f\xbf\x96\x62\x36\xdc\xdb\xd4\xc1"}, +{{0xf8,0x9e,0xed,0x09,0xde,0xc5,0x51,0x36,0x1f,0xa4,0x6f,0x37,0x59,0x73,0xd4,0xfb,0xfa,0x5c,0x5c,0x12,0xf1,0xb5,0xe5,0xab,0xf4,0x5c,0xfa,0x05,0xff,0x31,0xa3,0x40,},{0x3e,0x0e,0xfd,0xca,0x39,0x19,0xfa,0x10,0xd4,0xa8,0x49,0xce,0xf1,0xde,0x42,0x88,0x51,0xbd,0x08,0xef,0xd2,0x48,0x59,0x4f,0xd8,0x9c,0xde,0xb9,0xde,0xee,0x43,0xb0,},{0x89,0x7e,0x6f,0x27,0x97,0xc3,0xf3,0x26,0xd2,0xcd,0xb1,0xd2,0x67,0x3d,0x36,0x06,0x31,0xf0,0x63,0x30,0x45,0x80,0xff,0x5b,0x4e,0xb4,0x3d,0x39,0xad,0x68,0x51,0x83,0x4c,0x9c,0xf8,0x91,0xd9,0xf0,0x90,0x5b,0xf8,0xde,0x07,0x5f,0x76,0x35,0xdf,0xca,0x60,0x1a,0xdc,0x0f,0x14,0xe7,0xb2,0xc7,0x6f,0x75,0x71,0xbf,0xa4,0x68,0xed,0x0c,},"\x4c\xf9\x77\x3d\xa0\x5f\xd3\x22\xfc\x14\x7b\xe9\x00\xef\x5c\xf2\x56\xc8\x8a\xfd\xad\x4b\x08\xc2\x30\xdf\xc8\x98\x1f\xb6\x9f\x47\x6f\x7d\x45\xef\x7c\x90\x06\xbc\x10\x03\x2b\xa5\x34\x36\xac\x22\x84\x3e\x0d\x76\x28\x9c\xf6\x8f\x98\x18\xfa\x64\x03\x1d\x4b\x40\x95\x50\x59\xaa\x69\x11\x09\x15\x88\x9f\x5e\x22\x73\x2a\x13\x43\x91\x25\x81\xab\x3b\x11\xa3\xba\xe7\xa4\x71\x35\x95\x08\x59\x65\x75\xf8\x88\x16\x0b\xee\xf9\x66\xe5\x70\x8f\x0e\x31\x47\xea\xcf\xce\xc1\xca\xa3\xef\x24\x0c\x5e\x0a\x14\xc1\x86\x54\x6c\x8e\xeb\x64\x65\x83\x50\xb1\xaf\xfc\x0c\xfd\x2a\xc2\x13\xaf\x67\x0a\xfc\xa7\xbb\xc9\xdd\xdd\x28\xa4\x65\xb5\x86\xe6\x9c\x38\x8c\xd7\x34\x78\xd6\x8e\xfb\x32\x2b\xdf\x86\xd9\x21\x30\x11\xe7\x11\xb2\xb9\x5f\xef\xa7\xbb\x9b\x59\x39\x76\x17\x06\xaa\x71\x21\x02\x49\x06\x42\x0b\xdd\xf1\xd8\x80\x0a\x43\x38\xd9\x38\xfa\x13\x7c\xf2\x7e\x9f\xfc\x51\xc6"}, +{{0x40,0x07,0x96,0xef,0x60,0xc5,0xcf,0x40,0x84,0xde,0xe1,0x80,0x1c,0x4a,0x19,0x75,0xe4,0x82,0xe7,0x0a,0xef,0x96,0x1c,0xd4,0x2e,0x2f,0xd5,0xa3,0xfa,0x1a,0x0f,0xbe,},{0xf4,0x7d,0xa3,0x81,0x28,0xf2,0xd0,0x12,0xcc,0x57,0x97,0x57,0x1d,0x47,0x9c,0x83,0xe7,0xd8,0xa3,0x40,0x98,0x02,0xf9,0xa7,0xd9,0x76,0xc2,0x70,0x67,0xcb,0xbe,0x43,},{0x84,0xd3,0xaa,0x3f,0x36,0x18,0x44,0x39,0x67,0x54,0xd8,0x0d,0x9f,0xa0,0x5b,0x8b,0x2f,0xa4,0xab,0xf3,0xa0,0xf3,0x6b,0x63,0x9b,0xee,0x9c,0xfb,0x5c,0x85,0x30,0xa3,0xa9,0xcc,0x34,0x67,0x7f,0x92,0xa9,0x13,0xc4,0x1e,0x80,0x0f,0x2e,0x80,0x41,0xf7,0x66,0x6d,0x07,0xed,0x85,0xf1,0x6a,0x57,0xd8,0x17,0xb1,0x24,0x1f,0xc5,0xee,0x04,},"\xc4\x73\x32\x5e\x78\x5b\x27\xdf\x44\x71\xee\xfb\x9e\xbe\xbd\x64\x61\xd5\x70\x80\x01\x81\x10\x0f\xf3\x6c\xaf\x3c\x38\xf6\x7c\x19\x21\xb1\x57\xec\x8e\x61\x26\xf9\x55\xae\xbd\x90\xea\x3f\xe5\x38\x5f\x80\x42\xcd\x70\x4b\x27\xcc\x1d\x69\x78\xc0\xe2\xa2\x96\x69\x5f\x5e\xf9\x7b\x7c\x2e\x16\xae\x4f\xf4\xd0\x63\xc6\x88\xd7\xf4\x6e\x96\x4e\x1f\x0a\x00\x50\x3f\x35\x73\x45\x97\x76\x83\xd6\xe4\xc3\x42\x3d\x56\xbd\xb6\xce\x86\x4b\x69\x87\xe0\x85\xe8\x3e\x70\xc7\xc1\xa1\x4e\x0e\x41\x3f\x59\x2a\x72\xa7\x1e\x01\x7d\x50\x5b\x64\xc2\x4f\x1a\x1a\x6b\x81\x3e\x06\x4e\x6e\x0c\xf8\xbd\x45\x71\xd0\xff\x2f\x26\x7a\x6a\x13\xe0\xcd\x43\x04\x63\xb6\xca\x3b\x88\xf0\xcd\x40\xb0\xfb\x83\xd5\xbe\xdf\x6f\x7d\x47\xe1\x70\xe8\x7d\x0a\x75\x00\x93\x69\x3e\xda\x23\x2a\x6d\xaf\x98\x12\x57\x27\xb9\x58\x8e\xcb\x89\x4a\xe3\x73\xba\xe3\xa4\x45\xa1\x06\x30\x64\x69\xa4\xc2\xcd\x77\xff"}, +{{0x67,0x03,0xa6,0x23,0x2c,0x5e,0x2e,0x65,0xe0,0xab,0x3b,0x92,0xe2,0xaa,0xf9,0xf5,0xfb,0xd3,0x3f,0xb4,0x69,0x88,0x04,0x7d,0x6f,0x4d,0x0f,0xf5,0x38,0x7f,0xa0,0x29,},{0x04,0x7c,0xff,0xca,0x8b,0x7b,0x11,0xac,0x6e,0xac,0xc0,0xea,0xa0,0xc5,0xb7,0x3c,0x75,0xb9,0xc6,0x37,0x95,0x69,0x73,0xaf,0x9d,0x97,0xb2,0xdd,0x5b,0x60,0x5d,0x6f,},{0xca,0xe9,0x68,0x79,0xe5,0xb6,0x03,0xbe,0x86,0x66,0x09,0xd4,0xa0,0x53,0xbf,0xa1,0x2a,0x51,0x37,0x8e,0x99,0xb2,0xa2,0x81,0x2e,0x47,0x89,0x26,0x7d,0x8f,0x32,0xf4,0x73,0x24,0x3f,0x8a,0xf7,0x4b,0x9b,0xe7,0x3f,0x47,0xde,0xa5,0x0f,0x0d,0x16,0x5e,0xbf,0x49,0x45,0x8b,0x73,0xe5,0x3d,0x88,0x58,0x0c,0x19,0x1a,0x18,0x2d,0x19,0x04,},"\xa2\x6b\x30\xa7\x69\x19\x79\x32\xa3\xa6\x28\x54\x96\x8d\x76\x01\x51\x61\x23\x66\x77\x8d\xc9\x94\x57\x6a\x2e\x0e\x03\x55\x49\x6b\x46\x20\x0e\x50\x69\x48\xa0\xd1\x02\xb6\x65\x1b\x2e\x73\x34\xca\x6c\x6e\xae\xf8\xbc\xa4\x4b\x42\x59\x70\xa0\xb3\x7d\x6b\xde\x0d\xa9\xd3\xc1\xb9\xf5\x1c\xbb\x25\xbc\x33\x5c\xd6\xfa\x92\x8a\x74\xf2\xc0\xdc\x2c\x6e\x99\xd3\x7a\x12\x86\x3a\x47\x4d\x4d\xf4\x3a\xad\x35\x41\x5f\xfc\xaa\x24\xd8\xc2\x9f\x91\x45\x72\xab\x2a\xbe\xc3\x89\x2d\xb4\x9e\x67\x9c\x5e\xa2\x20\xc2\xf5\x19\xa7\xd0\x33\xac\x1a\x2c\x5a\x46\x78\x69\xe3\x0e\xda\x3d\x26\x35\xca\x86\x34\x31\x47\x3f\x95\x8d\x55\x2b\xdc\x55\x82\x35\x2c\x29\x0d\x0c\xe4\xfa\x9c\xfd\x0a\xd4\x27\x99\xc2\x27\xec\x90\xb7\xc9\xe5\xdb\x9f\x5a\x7b\x6d\x56\x92\x12\xee\xd9\x4d\x32\x33\x26\x80\x5f\x2b\x3a\x00\x10\xd6\xc1\x1e\xb4\x10\x7c\x82\x83\x03\x76\x52\xf5\x0d\xc0\x67\xb6\xdc\x81\xf4\xdb"}, +{{0xe0,0xe7,0x2f,0x8f,0x17,0x86,0x33,0x62,0x67,0x33,0xbc,0xbd,0xa2,0xad,0x2a,0x50,0xe6,0x53,0x89,0x0f,0x15,0x35,0x9b,0x6c,0x22,0xfc,0x73,0x45,0xad,0x33,0x31,0x09,},{0xd1,0x3c,0xee,0x54,0x0d,0x84,0xb5,0x66,0x7d,0x51,0x6f,0xe7,0xec,0x72,0x39,0xbf,0x8d,0xa9,0x15,0x46,0xee,0x79,0x1f,0x84,0xed,0xd8,0xff,0xcf,0x3a,0x08,0x3e,0x76,},{0x14,0x55,0x21,0x71,0xb9,0x52,0x45,0xac,0x0f,0x0e,0x5a,0x6e,0x7a,0x2f,0x54,0x17,0x21,0x06,0x8d,0xb6,0x50,0xc6,0xda,0xda,0x04,0xc2,0x8c,0xab,0x7c,0x49,0x19,0x5f,0x64,0x36,0x71,0x21,0x44,0xcb,0x31,0x91,0x3c,0x56,0x2e,0x30,0xc3,0x9d,0x8a,0x85,0x49,0xfb,0x64,0xff,0xea,0x81,0xc7,0x44,0x51,0x43,0xb5,0xf2,0x32,0x86,0xda,0x05,},"\x79\x1f\xd6\x13\xc1\x09\x52\x92\xc8\xa4\xa2\xc8\x6b\x47\xae\x02\x61\x55\xb8\x46\x5b\x60\x7d\xbb\x41\x64\x77\xef\x79\xa2\x97\xc9\xd7\x75\x8c\xe3\x4a\xf9\xdc\xbf\x1c\x68\x47\x4f\x30\x90\x9f\xbe\x74\xb7\xba\x42\x96\x32\xf2\x40\x3a\xad\x83\x2b\x48\x6b\x72\xc2\x30\x54\xad\x42\xf7\x65\x3a\x9d\xdb\x45\x6c\xc7\x91\xf3\x48\x88\x6a\x7a\xe5\xdc\xec\x7c\x0b\xa8\x15\xf7\xa9\x3a\x10\xfe\x33\x1e\x90\x3b\x97\x0f\x7b\x50\x28\xbe\x49\xd1\x4b\xc5\x62\x0d\x63\x79\x26\x72\xb9\x8b\x94\x88\xc6\x7a\xe1\x66\x46\x69\x3e\x11\x20\x47\xf0\xac\x89\x21\xff\x56\x1c\x92\xdd\x05\x96\xd3\x2d\xf0\xa6\xe5\x07\xac\x1b\x07\xde\x51\x6c\x98\x42\x8d\x57\x0a\x37\xdb\x9b\xcd\x7c\x7e\x61\xc6\x94\x8a\xb3\xfe\x91\x25\x0d\xd1\xd5\xbd\x67\x12\x75\xdf\x9a\x97\x2f\x22\xc2\xba\x36\x80\x47\x47\xae\xc1\xea\x24\x16\xc1\xf4\x1a\xb8\x7b\xef\xde\x31\x62\x9b\x2d\x43\x31\x7c\xe4\x1c\xda\x03\x62\x62\x86\xc0"}, +{{0x54,0x4d,0xaf,0xd9,0x96,0x0d,0x82,0x97,0x56,0xc6,0xd4,0xb3,0xea,0xdd,0x44,0x37,0x5f,0xe7,0x80,0x51,0x87,0x6b,0xf9,0x78,0xa3,0x81,0xb0,0xde,0xca,0xaa,0x80,0x96,},{0xae,0x4f,0x64,0x25,0xc1,0xb6,0x7c,0xcb,0x77,0xf9,0xaa,0xcf,0xea,0x28,0xea,0xef,0x76,0x9c,0x8c,0xac,0xee,0x03,0x52,0x05,0xcd,0xcd,0x78,0x7e,0x8d,0x07,0x62,0x9d,},{0xa2,0xae,0x11,0x7c,0x8d,0xe4,0xca,0x6d,0x6f,0xe7,0x5e,0x46,0x60,0x23,0xbd,0x55,0x0c,0x26,0xfe,0xdd,0x3e,0x74,0xca,0x13,0xad,0xb6,0x25,0xf2,0x72,0xe1,0x75,0xf1,0x4d,0x5d,0xf5,0x50,0xac,0xe7,0xd8,0x22,0x88,0xef,0xef,0xab,0xf9,0x63,0x11,0xa1,0x23,0xbe,0xe2,0x38,0x89,0xad,0x37,0x11,0xbf,0xf2,0xb8,0x08,0x79,0x46,0xbf,0x0e,},"\x44\x7f\xe7\x34\x4c\xad\x1f\xae\x09\xd6\xa7\xd0\x5f\x09\xd5\x03\xc1\xb3\xd3\xd5\xdf\xa5\x84\x81\x0c\x35\xbc\x41\xe4\x95\x56\x93\x70\x61\x54\xe2\xd7\x51\xb2\xf1\xb5\x25\xe1\xa1\x45\x47\xba\x7f\x8b\x23\x20\x88\xa6\xfc\x92\x27\x02\xd9\x3a\x11\xcd\x82\x94\x9c\x27\xbe\xd6\x45\xdc\x35\x1f\xb4\xc1\x24\x2c\xf4\x1d\x01\x57\x54\x12\xe7\x92\xae\xd2\x14\x53\x1d\x94\xfd\x66\xe0\x3d\xd3\x2e\x97\x2f\xd7\x7f\x69\x47\xa3\x53\xe1\xae\x5e\x00\xf5\xa6\xca\x77\x99\x24\x72\xf0\x96\xb6\xe7\x47\x5f\xe5\x34\xe9\x13\xa7\x7b\xcb\x0d\x68\x1f\xdf\xb3\xa7\xa0\xdc\xb5\x6d\x27\x4d\xf4\xaa\x10\x9d\x4a\x8a\x37\x79\x4a\x92\x76\xf5\x00\x06\x69\x6f\xf1\x2c\xa4\xd0\x25\x40\x39\xdf\x0f\xb3\xf7\x2a\x96\x0d\xa0\x5c\x98\x72\xf2\xe3\x3e\xe8\x1d\x1c\xf7\xa6\xf4\x8b\xbc\xe0\xaa\x18\xc7\xc0\xf0\x6b\xa5\x5e\x67\x68\x9e\x0a\xf5\x87\xb5\x00\xea\xb7\x9c\xc7\xf9\x64\x0b\xca\x10\x4b\x7f\xbf\x31\xf0\x8e"}, +{{0xbf,0xbc,0xd8,0x67,0x02,0x7a,0x19,0x99,0x78,0xd5,0x3e,0x35,0x9d,0x70,0x31,0x8f,0xc7,0x8c,0x7c,0xc7,0xbb,0x5c,0x79,0x96,0xba,0x79,0x7c,0x85,0x54,0xf3,0xf0,0xf0,},{0x7c,0x5a,0xe3,0xba,0xb9,0x20,0x11,0x99,0xdf,0xbe,0x74,0xb7,0xd1,0xec,0x15,0x71,0x25,0xbd,0xba,0xa4,0x52,0x0f,0x50,0x1d,0xa3,0xf2,0x48,0x57,0x9d,0xc6,0xc2,0x2d,},{0xe4,0x86,0x15,0xb6,0x56,0x33,0xe6,0x19,0x93,0xb0,0xaa,0xa1,0xfa,0xfb,0x74,0xb9,0x62,0x9c,0x38,0x4f,0xd5,0x92,0xbd,0x73,0x5f,0xa1,0xf6,0x2c,0x5c,0xad,0x11,0x29,0x1f,0xcd,0x8c,0x2e,0x91,0xa5,0x0b,0xfe,0x0b,0x03,0xb4,0x35,0x02,0xff,0xf3,0xa5,0xc3,0x82,0xb9,0xc2,0x82,0x19,0x07,0xef,0xc3,0x4d,0xa5,0xba,0x05,0x4a,0xf0,0x0e,},"\x11\x7f\xae\x13\xe7\x87\x77\xb6\x21\x9f\x02\x02\x14\xc1\xb8\x7c\x57\x04\x6d\x1c\x09\xce\x82\xee\x2b\x56\x29\x89\x8d\x9b\x0d\xe7\x4a\x15\xcf\xe9\x9f\x80\x54\x8b\xa9\x13\xd7\x03\x6c\x56\x28\x5a\x4c\xba\x49\x3b\x52\xd2\xcb\x70\xd6\x36\x5a\xce\x3d\xa1\x2b\x1f\x34\xa2\x77\x8a\xf3\x6e\xf5\x2a\xb8\x2e\xde\x04\xca\xca\xf2\x79\x3f\x5f\x89\x83\x1e\x3b\x20\x5a\x9e\xe4\xc1\xd6\xfb\xda\xb4\xba\x4d\x9f\xae\x65\xdd\x79\xa5\xfe\x76\xb4\xb3\x9a\x30\x92\xcc\x71\x48\xd2\x11\xe8\x5e\xe8\x2a\xb4\x63\xd3\x4d\xce\xe9\x06\x1d\x9c\x21\xde\xd2\x05\x1b\xbd\x50\xb4\x13\xf0\xe2\x1a\x0e\x48\xd1\xff\xa8\xdc\xae\x24\x0b\x34\x95\xbe\x25\xd9\x31\x51\xb5\x7a\xa2\x71\xab\x99\xaa\x70\x8c\xa2\x80\x80\xca\xb4\x80\x4f\xce\xfa\x92\x9f\x5f\x1e\xf3\xf4\xc6\xc0\xfb\xfb\x40\xbe\xf7\xea\x1b\x50\x9b\x36\xba\x12\x60\x32\x35\x12\x37\x9d\x7b\xc3\xfd\xbb\x5d\x3f\xaa\xc9\xb0\x0e\x21\xf1\x2e\xa1\xca\x2e\x29"}, +{{0xdf,0x2d,0xf8,0xa9,0xd6,0x6d,0x56,0x38,0xcd,0xee,0x09,0x32,0x4e,0x7b,0x10,0xf8,0xed,0x29,0xab,0x91,0x38,0x7e,0x31,0x47,0xb7,0xdc,0x03,0xf7,0xcd,0x80,0x05,0x08,},{0x5c,0x04,0x2e,0x15,0x7f,0xb7,0xfb,0x12,0xd4,0xd4,0xfe,0xf2,0x84,0x71,0x41,0xec,0xfb,0x57,0xc1,0x25,0x3e,0x14,0xea,0xf3,0x00,0x4d,0x65,0x13,0xf5,0x2f,0xe6,0x25,},{0x9a,0x10,0x74,0x53,0x1e,0xd4,0x3d,0x07,0xbf,0xfc,0x7f,0x2b,0x6c,0x13,0xb8,0x83,0x8f,0xc7,0x5c,0xba,0x02,0xc7,0xd1,0xec,0x7b,0xa3,0x8b,0xca,0x3c,0xef,0x20,0xdc,0x9b,0xad,0xf3,0xa3,0x06,0x4a,0x2c,0x93,0xb1,0x84,0x24,0x41,0x42,0x0b,0x6a,0x8d,0x42,0x1a,0x96,0x0d,0x70,0xdf,0xb7,0xc7,0x0e,0xec,0x29,0x5f,0x21,0xf8,0x3f,0x0a,},"\x21\x57\x66\x15\xc9\x34\x6a\x63\xdc\xcf\x0c\x50\xec\xbd\x7c\x6d\x72\xad\x45\x2c\xfe\xd4\x3e\xa7\x32\x02\xcc\x7a\x98\x57\x60\x56\xb9\x66\x4b\x54\x62\x29\x05\xa1\xe7\x22\x17\x20\x73\x0a\xc6\x85\xd3\xbd\x39\x77\xec\x39\x59\xd4\x46\xbf\xa9\x41\xe7\x25\xb6\xfe\x16\xaf\xe5\x43\x2c\x4b\x4b\xde\xe7\xaa\x0f\xd8\x03\x09\x48\xed\x6f\xcb\xa7\xc0\xbd\xb4\x0c\x2e\x51\x7d\xa9\x74\x56\xe7\x4e\x1f\x93\xd5\xed\x67\x6d\xe0\xf4\xa8\xb0\xae\xa4\x49\x40\x4b\xd1\x5b\x6d\xa7\x9d\xc1\xb8\x13\x96\x5f\xe5\x57\x24\x10\xd7\x6f\x5b\x5e\xac\x66\x30\x50\x57\x03\x11\xdc\x98\x42\xb6\xfb\xf8\x80\x6a\xec\x03\x15\x17\x15\xca\xcf\x7f\x21\x80\x2e\x8b\xf5\xe9\x8a\x89\xc0\xd7\xd0\xd0\x98\xb7\x3c\x6e\xfc\x09\x96\x2e\x36\xb4\xe0\x30\xc1\xa6\x4b\x5d\x34\x9f\x5f\x20\x42\xc7\x44\x28\x67\x1e\x4a\x2c\x7f\xea\x0c\xae\xe2\x42\x2d\x85\xc4\xfc\xdd\xfe\xd3\x22\x13\x85\x9a\x69\x95\x5d\x4e\x3e\xbb\x7e\x1b\x20\x22"}, +{{0xe8,0xee,0x06,0x5f,0x99,0x07,0xf1,0xef,0xa2,0xda,0xec,0xb2,0x3a,0x04,0x25,0xf3,0x53,0x09,0x4d,0xa0,0x2b,0xc2,0xc9,0x31,0xf0,0xa5,0x87,0xef,0xc0,0xd1,0x3d,0xe1,},{0xc7,0x26,0x51,0xb7,0xfb,0x7a,0xc0,0x33,0x7a,0x17,0x29,0x77,0x49,0x6f,0xd7,0xf2,0xa7,0x2a,0xea,0x88,0x93,0x85,0x83,0x5e,0x56,0x3c,0x6b,0x60,0x53,0xa3,0x2d,0xc1,},{0xa5,0x10,0xdf,0xf4,0x2d,0x45,0x59,0xa1,0x9a,0x7b,0xf0,0xfe,0x0b,0xea,0x53,0xd3,0xe1,0xf2,0x2d,0xfa,0x6b,0xe5,0x50,0x39,0x89,0x5e,0x12,0xa5,0xd0,0x7d,0xa5,0xf2,0xe3,0x77,0x13,0xcc,0xb2,0xeb,0x21,0x60,0x11,0x62,0x8f,0x69,0x83,0xf8,0x71,0xfe,0xe2,0x86,0xe6,0x6f,0xff,0x4b,0xe7,0x58,0x2c,0x96,0x1a,0x1e,0xd7,0x56,0x84,0x04,},"\xa2\xf0\xc1\x37\x34\x73\xa3\x05\xd8\xf1\xd9\x91\x38\xb0\x6b\x9a\x96\x94\xff\xaa\x8a\x88\x22\x2d\xe9\xf7\x29\xbe\xe1\x30\x51\x75\xdf\xb1\x70\x01\xcc\x77\xf6\x7b\x6d\x40\xc9\x0c\x1a\x28\xfb\x22\x6c\x11\x28\x6d\xb4\xa1\x3e\x45\xe6\x92\x11\x24\x2b\xcd\xd0\x1c\xb6\xe2\xc4\x54\xe7\x6c\x0c\xab\x88\x1b\x4d\x2d\x9d\x3a\xb1\x00\xa5\xd6\x1d\x17\x25\xd8\x66\xe4\xfd\xb6\x6d\x93\xd7\x7f\x5b\x30\x86\x93\xb9\xb5\xa3\x33\xe5\x7f\xa2\x5d\x1e\x5d\x2e\x38\xdf\x6e\x4e\x9e\xc8\x41\x59\xbb\xee\x1f\xfe\xa9\x26\x83\x6a\x01\x01\xc9\x14\x83\xbd\x5b\xc8\x8a\x6f\x1c\xc4\xd4\xe7\xf0\x08\xad\x08\x45\x3a\x01\x23\x42\x9d\xd3\x35\x78\x1c\x7c\xbf\x8d\x68\x5a\x89\x99\xed\x11\x77\x60\x70\x04\xa1\x3c\x4c\xb5\xea\x49\x08\xc5\x42\x60\x7d\x3f\x2c\xd6\x69\x0c\xf1\xf2\xa7\x45\x5b\xbd\x38\xf5\x38\xf0\x7a\x10\x39\x64\x31\x7e\xfb\xce\xe3\x7e\xb4\x69\x31\xc0\x27\xcf\x15\x3e\xf8\x6e\x43\xd7\x82\x81\xeb\xd7\x10"}, +{{0xc7,0x2e,0x67,0xd8,0xc3,0xfe,0xc0,0x04,0xff,0x61,0x87,0x18,0xa9,0x09,0x9e,0xb8,0xad,0x7b,0x06,0xff,0x3b,0x8c,0x54,0x2a,0x7e,0x8b,0x98,0x47,0x31,0x34,0x75,0xe1,},{0x4e,0xb0,0x02,0xd3,0xcc,0xeb,0x18,0x8c,0x66,0x58,0xfe,0xc5,0x1c,0xb4,0x79,0xa6,0x52,0x64,0xac,0x55,0x5c,0x75,0xcd,0xc2,0x24,0x9c,0xf1,0xce,0x3d,0xef,0xc1,0x6d,},{0x2d,0x7b,0xab,0x8e,0xbd,0xa7,0xfc,0xa5,0xbb,0x3c,0x25,0xf5,0x1d,0xc5,0x1b,0x73,0xe6,0xff,0x6a,0x3b,0xb1,0xb5,0x2a,0xcc,0x78,0x11,0xa7,0xd2,0x59,0x5c,0xd6,0xfd,0xaf,0x73,0x04,0x94,0x41,0x8e,0x2f,0x57,0xef,0xdc,0x56,0x17,0xb0,0x66,0xfd,0x7b,0x62,0x07,0x68,0x0d,0x94,0xfb,0x8c,0x43,0xd3,0xd4,0x74,0x0b,0x41,0xcb,0x69,0x01,},"\xa8\xf3\x41\x35\xc0\x13\x2e\xc9\x5b\x64\xb0\xcb\xf5\x1d\x66\x90\x01\x43\x37\x04\x06\x79\x1f\xbb\x55\xf2\xb8\xca\x95\x3c\xc7\x4a\x46\xe0\x8b\x00\x2f\xa2\xda\x21\xb9\x51\xb8\x87\x1f\x7a\x29\xbc\x6d\x38\x79\x0a\xfc\x66\xa3\x29\xc3\x97\xd9\xf9\x25\x0b\xae\x0e\x30\xae\x34\x26\xe0\x8d\x8e\xad\x01\x79\xa3\xb3\x13\xc9\x08\x83\x91\x92\xf2\x89\xa3\xf3\xb6\xe9\x60\xb4\xc5\xce\xbe\xf0\xa0\x9d\xaa\x9c\x7a\x15\xc1\x9d\x4e\xbc\x6f\xc2\xac\x3c\xd0\x22\x32\xe8\x32\xb2\x34\xed\xd7\x96\x5d\x68\x7b\xfe\xb7\x58\xf7\x0f\xa7\x96\x38\x41\xb7\x85\x9b\xb9\x7c\x97\x1b\xd5\x57\xbc\x87\x69\x52\x4a\xc4\xc6\xee\xb3\x57\x97\x93\x33\x4b\x52\x2d\x17\x6b\xc6\x2f\x86\xb4\xd5\xc0\xd4\x01\x70\x36\xd2\xb6\xbd\x4e\x43\x84\x41\x6e\xf8\x26\x31\x39\x69\x1a\x86\x06\x17\x0d\x73\xc9\x3d\x64\x17\xdc\xc1\xa0\x8a\x53\x7c\x9e\xd4\x40\x04\x71\xa4\x6f\x52\x90\x7b\x46\xb1\x0a\x8b\x68\x89\xdb\xb4\x64\x7a\x8b\xbc\x71\x49"}, +{{0x69,0x64,0x50,0xb5,0x57,0xec,0x3c,0x94,0xcf,0x1a,0xf1,0x32,0x64,0x75,0x63,0x4a,0xa8,0x1d,0xef,0x38,0x14,0xff,0x30,0xa0,0x2b,0xa7,0xf2,0x04,0x4b,0x59,0xc0,0xfe,},{0x85,0x84,0x77,0x3c,0x56,0x6b,0x0e,0xed,0x3f,0x43,0x28,0x17,0x05,0xb5,0x75,0xa4,0x34,0xe4,0x7d,0x6c,0xf6,0xb2,0x51,0xb8,0x98,0x03,0xfe,0xf5,0x35,0x34,0xcb,0x29,},{0xce,0x8b,0x0a,0x57,0x79,0xf4,0xf5,0xf4,0x01,0xe8,0x4d,0x65,0x92,0x7a,0x0c,0x28,0xdf,0x82,0x9e,0x95,0xd0,0x9b,0xfa,0x97,0x11,0x1b,0x87,0x00,0x07,0x8f,0xf8,0x94,0xcf,0x72,0x77,0xe3,0x4a,0x71,0x61,0x44,0xd5,0x53,0x06,0xfc,0x9e,0x2f,0x64,0xcd,0x28,0x75,0x83,0xcc,0x80,0x03,0xbe,0x0e,0x8f,0xaf,0x26,0xaf,0x76,0x40,0x14,0x0e,},"\xcc\x25\x78\x29\xf3\x0a\x5f\x90\xdf\xdb\xc2\x47\xd4\x2e\x38\x87\x38\xb7\x6c\x41\xef\x8a\x82\xa5\xe0\x22\x5d\xdf\x1e\x38\x6d\x77\x08\x0b\x3b\x9d\xf8\x6c\x54\xb8\x5c\xdf\x2c\x32\xf3\x67\xab\xa0\xc3\xb6\xbf\x88\x8a\x5a\x69\x03\x52\x9b\x6a\xeb\x4d\x54\x07\xa1\x01\x80\x14\x91\x14\x13\x02\x28\xfc\x43\x56\xcc\xf3\x66\xb7\x7b\xe8\x97\x96\xa9\xe7\x1a\x0c\x69\x3f\x31\xe5\x84\xa4\xf1\x43\x09\x7b\xa3\x70\x36\x3b\x67\xb2\xf2\xe2\xfd\x8d\x6f\xe8\xb4\xe8\xdb\xf0\xd7\xdc\xc1\xa8\x36\x00\x41\x15\x8a\xa2\xaf\xf7\xe2\xa3\x25\xb8\xe5\x18\xf1\x93\xa2\x8b\xae\x05\xe3\xd5\x2b\x26\x62\x1a\xf4\x02\x02\x6d\x7f\x25\x0e\x86\xdc\xee\x30\x1a\x58\xb6\x31\xea\xdf\x45\x27\xe9\x58\xf0\x2a\x61\x58\x7f\x0b\xb5\x16\xce\xfa\xc0\x09\xfe\x51\x05\x2f\xff\x53\x33\x6d\xbd\x94\xe7\x26\x6d\x3b\x43\xca\xba\x8a\x1b\x38\xe5\xd8\x71\xc2\xa2\x4a\x4c\x41\x2f\xff\x3f\x7a\x9a\x52\xa8\xab\x23\xba\xc9\x79\x1b\x2b\x5a\x66\x9a"}, +{{0xa8,0xdd,0x35,0xf0,0x54,0xfb,0x6f,0xf6,0xf0,0xab,0x09,0x4a,0x0d,0x3d,0x1c,0x26,0x28,0x32,0x18,0x1d,0xf3,0x5c,0xcd,0x51,0x92,0x54,0x5e,0xbd,0x6a,0x9c,0xf5,0x29,},{0xca,0x41,0x23,0x38,0xd3,0x81,0x4b,0x88,0x6d,0x96,0x4b,0x71,0x92,0x5e,0x1a,0xab,0xb3,0xff,0xd0,0x78,0x34,0xdb,0xe7,0xdc,0x51,0x25,0x68,0x88,0x2b,0x53,0xe4,0xa3,},{0xfa,0x70,0x9f,0xbc,0x83,0x82,0xaf,0x83,0xd1,0x18,0x12,0x61,0x8d,0xfa,0xca,0x45,0x2e,0xab,0x83,0xe4,0xc5,0x3f,0xe9,0xe5,0x85,0x84,0x67,0xd0,0x7b,0x67,0x67,0xe1,0x79,0x75,0xc1,0xe0,0x63,0x93,0xd6,0xdd,0xe1,0x5a,0x34,0xd9,0x47,0x3d,0x1c,0xf4,0xd6,0xd8,0xc2,0xd5,0x73,0x94,0x52,0x00,0x80,0xfa,0xc4,0xe4,0x34,0x48,0xbe,0x07,},"\x55\xa7\xad\x91\x32\xd6\x3a\xc1\x61\xe7\xad\xb1\x32\xb9\x18\x9f\xdd\x84\xc3\x61\xc1\xe4\xf5\x41\x9a\x6d\xf7\x3d\xf4\xd7\xae\xb2\x9a\x8d\xc4\xbf\x01\x49\x0d\x4f\x48\x4e\x2d\x12\x07\x75\x17\xf5\xfc\x7a\xd0\xbd\xed\xa2\x0a\x6c\xb0\x22\x79\x42\x29\x0b\x08\xc3\xfe\x33\xab\x9b\x21\x35\xbc\x38\xa6\x57\x9a\x54\xbd\x98\x2f\x7d\x14\x17\xce\x86\x71\x17\xae\xa9\x18\xdb\xd3\xdd\x47\x6e\x7e\xb5\xb5\xd3\xc3\xe4\x8a\x86\x4a\x2f\x94\x2a\x31\x50\x1a\xa2\xb2\x9b\x53\xb8\x05\x13\xc9\x5d\x6a\x41\x18\x44\xf0\xde\xdf\x16\xa2\x9a\xc2\x67\xd3\x31\xe5\x3b\xdc\x25\x39\xbf\xcf\x32\xdc\x9b\x5d\x64\x0f\x12\x31\xe2\xca\xfb\x0a\xe9\x4b\xb5\x18\x94\x26\x86\x33\x64\x26\x2e\xfb\x47\xb5\xb5\xcc\xdb\xbc\x93\x32\x42\x16\xa7\x99\xb6\xf5\x0d\x37\x04\xf1\x5e\xd5\x9a\xf6\xcc\x7d\x91\x0c\xf0\x62\xd1\xbe\x63\x2d\xca\x5d\xf2\x13\xd4\x87\xd8\x56\x4f\x2b\x2b\xd7\xd8\x18\xbb\xa2\x7c\x36\x40\x13\xd9\x2d\x7f\x72\x62\x54\x62"}, +{{0xae,0x1d,0x2c,0x6b,0x17,0x1b,0xe2,0x4c,0x2e,0x41,0x3d,0x36,0x4d,0xcd,0xa9,0x7f,0xa4,0x76,0xaa,0xf9,0x12,0x3d,0x33,0x66,0xb0,0xbe,0x03,0xa1,0x42,0xfe,0x6e,0x7d,},{0xd4,0x37,0xf5,0x75,0x42,0xc6,0x81,0xdd,0x54,0x34,0x87,0x40,0x8e,0xc7,0xa4,0x4b,0xd4,0x2a,0x5f,0xd5,0x45,0xce,0x2f,0x4c,0x82,0x97,0xd6,0x7b,0xb0,0xb3,0xaa,0x7b,},{0x90,0x90,0x08,0xf3,0xfc,0xff,0xf4,0x39,0x88,0xae,0xe1,0x31,0x4b,0x15,0xb1,0x82,0x2c,0xaa,0xa8,0xda,0xb1,0x20,0xbd,0x45,0x2a,0xf4,0x94,0xe0,0x83,0x35,0xb4,0x4a,0x94,0xc3,0x13,0xc4,0xb1,0x45,0xea,0xdd,0x51,0x66,0xea,0xac,0x03,0x4e,0x29,0xb7,0xe6,0xac,0x79,0x41,0xd5,0x96,0x1f,0xc4,0x9d,0x26,0x0e,0x1c,0x48,0x20,0xb0,0x0e,},"\x9e\x6c\x2f\xc7\x6e\x30\xf1\x7c\xd8\xb4\x98\x84\x5d\xa4\x4f\x22\xd5\x5b\xec\x15\x0c\x61\x30\xb4\x11\xc6\x33\x9d\x14\xb3\x99\x69\xab\x10\x33\xbe\x68\x75\x69\xa9\x91\xa0\x6f\x70\xb2\xa8\xa6\x93\x1a\x77\x7b\x0e\x4b\xe6\x72\x3c\xd7\x5e\x5a\xa7\x53\x28\x13\xef\x50\xb3\xd3\x72\x71\x64\x0f\xa2\xfb\x28\x7c\x03\x55\x25\x76\x41\xea\x93\x5c\x85\x1c\x0b\x6a\xc6\x8b\xe7\x2c\x88\xdf\xc5\x85\x6f\xb5\x35\x43\xfb\x37\x7b\x0d\xbf\x64\x80\x8a\xfc\xc4\x27\x4a\xa4\x56\x85\x5a\xd2\x8f\x61\x26\x7a\x41\x9b\xc7\x21\x66\xb9\xca\x73\xcd\x3b\xb7\x9b\xf7\xdd\x25\x9b\xaa\x75\x91\x14\x40\x97\x4b\x68\xe8\xba\x95\xa7\x8c\xbb\xe1\xcb\x6a\xd8\x07\xa3\x3a\x1c\xce\x2f\x40\x6f\xf7\xbc\xbd\x05\x8b\x44\xa3\x11\xb3\x8a\xb4\xd4\xe6\x14\x16\xc4\xa7\x4d\x88\x3d\x6a\x6a\x79\x4a\xbd\x9c\xf1\xc0\x39\x02\x8b\xf1\xb2\x0e\x3d\x49\x90\xaa\xe8\x6f\x32\xbf\x06\xcd\x83\x49\xa7\xa8\x84\xcc\xe0\x16\x5e\x36\xa0\x64\x0e\x98\x7b\x9d\x51"}, +{{0x02,0x65,0xa7,0x94,0x4b,0xac,0xcf,0xeb,0xf4,0x17,0xb8,0x7a,0xe1,0xe6,0xdf,0x2f,0xf2,0xa5,0x44,0xff,0xb5,0x82,0x25,0xa0,0x8e,0x09,0x2b,0xe0,0x3f,0x02,0x60,0x97,},{0x63,0xd3,0x27,0x61,0x5e,0xa0,0x13,0x9b,0xe0,0x74,0x0b,0x61,0x8a,0xff,0x1a,0xcf,0xa8,0x18,0xd4,0xb0,0xc2,0xcf,0xea,0xf0,0xda,0x93,0xcd,0xd5,0x24,0x5f,0xb5,0xa9,},{0xb6,0xc4,0x45,0xb7,0xed,0xdc,0xa5,0x93,0x5c,0x61,0x70,0x8d,0x44,0xea,0x59,0x06,0xbd,0x19,0xcc,0x54,0x22,0x4e,0xae,0x3c,0x8e,0x46,0xce,0x99,0xf5,0xcb,0xbd,0x34,0x1f,0x26,0x62,0x39,0x38,0xf5,0xfe,0x04,0x07,0x0b,0x1b,0x02,0xe7,0x1f,0xbb,0x7c,0x78,0xa9,0x0c,0x0d,0xda,0x66,0xcb,0x14,0x3f,0xab,0x02,0xe6,0xa0,0xba,0xe3,0x06,},"\x87\x4e\xd7\x12\xa2\xc4\x1c\x26\xa2\xd9\x52\x7c\x55\x23\x3f\xde\x0a\x4f\xfb\x86\xaf\x8e\x8a\x1d\xd0\xa8\x20\x50\x2c\x5a\x26\x93\x2b\xf8\x7e\xe0\xde\x72\xa8\x87\x4e\xf2\xee\xbf\x83\x38\x4d\x44\x3f\x7a\x5f\x46\xa1\x23\x3b\x4f\xb5\x14\xa2\x46\x99\x81\x82\x48\x94\xf3\x25\xbf\x86\xaa\x0f\xe1\x21\x71\x53\xd4\x0f\x35\x56\xc4\x3a\x8e\xa9\x26\x94\x44\xe1\x49\xfb\x70\xe9\x41\x5a\xe0\x76\x6c\x56\x5d\x93\xd1\xd6\x36\x8f\x9a\x23\xa0\xad\x76\xf9\xa0\x9d\xbf\x79\x63\x4a\xa9\x71\x78\x67\x77\x34\xd0\x4e\xf1\xa5\xb3\xf8\x7c\xe1\xee\x9f\xc5\xa9\xac\x4e\x7a\x72\xc9\xd7\xd3\x1e\xc8\x9e\x28\xa8\x45\xd2\xe1\x10\x3c\x15\xd6\x41\x0c\xe3\xc7\x23\xb0\xcc\x22\x09\xf6\x98\xaa\x9f\xa2\x88\xbb\xbe\xcf\xd9\xe5\xf8\x9c\xdc\xb0\x9d\x3c\x21\x5f\xeb\x47\xa5\x8b\x71\xea\x70\xe2\xab\xea\xd6\x7f\x1b\x08\xea\x6f\x56\x1f\xb9\x3e\xf0\x52\x32\xee\xda\xbf\xc1\xc7\x70\x2a\xb0\x39\xbc\x46\x5c\xf5\x7e\x20\x7f\x10\x93\xfc\x82\x08"}, +{{0x6b,0xce,0x4d,0xfd,0x53,0xbf,0xa5,0x50,0x6f,0x2f,0x55,0x4d,0x2d,0x99,0x4a,0x0d,0xc4,0x0c,0xaf,0xcd,0xec,0x7e,0x1b,0xe0,0x50,0x00,0x6e,0x5c,0x5a,0x4b,0x38,0xa1,},{0xc8,0x90,0x02,0x37,0x28,0xd8,0x39,0x70,0x70,0x29,0x17,0x71,0xe6,0x5e,0x03,0x4d,0x34,0xd4,0xaa,0xe5,0xe2,0x47,0x65,0x3e,0x4f,0xf4,0xc0,0x74,0x59,0x1d,0xa7,0x02,},{0x99,0xae,0x67,0x82,0xff,0x27,0x64,0x6c,0x27,0xf6,0x1e,0x23,0x63,0x6a,0xe1,0x88,0x15,0x21,0xcf,0xa5,0xed,0x25,0x6f,0x70,0xbc,0xe7,0xce,0x00,0xb6,0x82,0x80,0xce,0x8e,0x0c,0x82,0xaa,0x76,0x5a,0xfb,0x8b,0x5a,0x1f,0xf2,0xfe,0x42,0xc5,0x74,0x41,0xe4,0x58,0xe4,0x43,0xdc,0x8b,0x12,0x34,0x77,0xae,0x33,0xd8,0x84,0x88,0x8c,0x0b,},"\x32\x39\x19\x07\x47\xee\x33\xd4\x0b\xf8\x70\xac\x9a\xd4\x9d\x88\xee\x32\x0f\x63\xc0\x52\x57\xe8\xab\x2c\x60\x30\x65\x97\xce\x76\xd1\xf1\xe7\x92\xab\x6a\x65\xca\xa5\x44\xfb\xec\x20\x89\x2f\xd4\x96\x05\x94\xf3\x1b\x37\x63\xef\x07\xd4\x98\x2e\xae\x4a\x2d\xbf\x33\x77\xdc\xc1\xe3\xf9\x5e\x46\xed\x39\xb7\xf0\x22\x2f\x04\xbb\x5c\x3b\x43\x4c\x8f\x9f\x31\x0d\xe9\xf1\x22\xa2\x9f\x82\x41\xe8\x1e\x20\x65\x49\xae\x62\x8d\x2b\x8a\xd7\x68\x97\x2c\x98\x84\x7c\x11\x88\xad\x04\xc8\x35\x35\x63\x78\xbe\xf7\x9c\xd1\x26\x86\x94\x05\xb1\x29\xfd\xbd\xc3\xbc\x48\x9c\xbd\x13\x99\x50\x5d\xad\xef\x76\x17\xb5\xbe\x5d\xa1\x73\xd3\xe8\x0e\x58\x38\xc9\x9e\x34\x92\x76\x24\x27\x29\xe0\x21\x9b\xd7\x47\x6a\xe5\xc4\xf8\x1a\x12\x87\x8f\xb4\x83\xa6\xc0\xe9\xb0\xdf\x29\x62\xeb\x0b\xf0\x01\x57\x78\x2c\xf7\x68\xa1\xb7\x1c\x01\x01\x69\xee\x85\x22\xde\xf0\x02\x4a\xd7\xe4\x57\x75\xa2\x90\x63\x9c\x53\xaa\xf4\x81\x98\xc4\x2d\xe7\x5c"}, +{{0x17,0x86,0x1a,0x8d,0x41,0x54,0xac,0xd4,0xfa,0x9c,0x8f,0xc9,0x47,0xc1,0x88,0x6c,0x11,0x29,0x0b,0xe2,0x22,0x87,0x2f,0xf4,0xf8,0xcd,0x25,0x93,0x9e,0x4d,0x13,0x61,},{0x43,0x77,0x3f,0x44,0x49,0x06,0x5e,0xae,0xba,0xf8,0x93,0x7b,0xaf,0x75,0x85,0x60,0xb0,0xc4,0xd2,0xde,0x46,0x97,0x78,0x39,0xb3,0xb8,0x73,0xd5,0xd7,0xd5,0xfd,0x8f,},{0xa5,0xee,0x02,0x4c,0xcd,0xbd,0xd4,0xc2,0x1a,0x24,0x70,0x9e,0xc5,0x3d,0xcc,0xb7,0xee,0x17,0x62,0x6d,0xd0,0x0a,0x09,0x3d,0x08,0x84,0xf5,0xb4,0x5c,0x4c,0x9d,0x16,0x91,0x84,0x01,0x51,0xc3,0x3c,0x8a,0xa0,0x7b,0x69,0xb3,0x4e,0x16,0xf6,0x16,0x47,0xeb,0xe7,0x93,0xae,0x4d,0xaa,0x70,0xcf,0xf4,0x8e,0x6a,0xb4,0x2f,0xfd,0xbc,0x00,},"\x18\x4d\xf5\xea\x32\x15\xeb\xe1\x80\x39\x0b\x0f\xf0\x42\xba\x23\x81\x15\x5a\x03\x8d\xc7\x32\xf7\x6a\x01\xc7\xe7\x0f\x82\xd1\xcc\xc9\xde\x9a\x05\x96\xb3\xfe\xe4\x47\x20\x9c\x99\x26\x84\xf6\x43\xdf\x21\xf4\xcf\x9d\x17\x92\x62\x79\x0e\x86\x23\xe4\x24\x72\xdc\x35\x19\x97\xe6\xda\x18\x9c\x07\xe1\xe8\x88\x2c\x07\xf8\x6c\x63\x37\xec\x01\x13\x91\x2c\xf9\x22\x15\xc8\xde\x19\x82\xb8\xfc\x57\xbf\xab\xc5\x5a\x3e\x87\x36\xf7\x36\x10\x42\x9d\x97\xfe\xb5\x1d\x79\x4f\x50\x5d\x0c\x5a\x0b\x3a\xbd\x48\xef\x7f\x55\xa6\x28\xf9\x0b\x85\x67\xa1\xc1\x5e\xa9\xd1\x90\xd7\xbf\x4e\xc2\xbc\x93\x34\xad\xa6\xcb\x92\x80\x8d\xfc\x20\x64\x83\x6f\xcf\xa4\x6b\x96\xfd\x7a\x5d\x6f\x4b\x05\x4d\xab\x09\xb7\x35\x95\xfe\xb8\x9e\xd0\x05\xb9\xec\x9d\x31\x88\x12\x1d\xe6\x96\x96\xd6\x4e\x7c\x7b\xbd\xfc\x1c\x46\x9f\xaf\x14\x8c\x38\xa7\x78\x59\x70\xaf\xe1\xac\xd0\x6a\x92\xc9\x94\x78\xfe\x44\x97\x4e\x3b\xb2\x09\x5e\x44\x67\xe9\xb2\xe9\x96"}, +{{0x0a,0x84,0xba,0xa5,0x4f,0x11,0xcf,0x17,0x09,0x0f,0xec,0x61,0xf3,0xf9,0x40,0x15,0x08,0xa3,0xa0,0x38,0x87,0xac,0xa1,0xa7,0x93,0x93,0x94,0xb1,0xee,0x40,0xa9,0x25,},{0x30,0x9a,0x73,0xc6,0x2d,0x23,0xd7,0x40,0xf2,0xe9,0x3c,0x18,0x58,0x7a,0xc1,0x5e,0x7e,0xc4,0x80,0xd2,0x5a,0xc0,0x79,0x4e,0x10,0xf8,0xcd,0x46,0x1c,0xc2,0xb1,0x30,},{0x4d,0x87,0x0b,0xd5,0x3a,0xf8,0xf1,0x3f,0x21,0x4d,0x99,0x34,0xec,0x90,0x3a,0xc4,0x82,0x84,0x09,0x2c,0xd9,0xb1,0x62,0xa4,0x4c,0xce,0xc8,0x51,0xfa,0x94,0x2d,0xe7,0x15,0xcc,0xda,0x07,0xb7,0x99,0x1d,0x71,0x27,0x23,0xe7,0xa4,0xd5,0xb4,0xf0,0x37,0x4a,0xb8,0x5a,0xc3,0x86,0x7e,0x0b,0x53,0xeb,0xc4,0x6b,0x53,0x0f,0x9f,0xed,0x05,},"\xfe\x70\x01\x7b\x14\x67\x8b\x0d\x3a\xd0\x3e\x18\x3d\x6f\x53\x31\x43\x78\x37\x9a\xb3\xda\x65\xb3\x51\x12\x57\xb3\xd5\x40\x86\xe8\x6f\x20\x31\x13\x90\x21\x39\x1a\xf9\xd7\x20\x85\xff\x7c\x3d\xc8\xc1\xe2\xd9\x1e\x53\x33\x38\x55\x42\x3d\x0f\x78\x5e\x2c\xc5\xf8\xb7\x79\x9f\xcf\x1b\x70\xe6\xbe\xcb\x78\x8e\x53\xe9\x02\x0f\x29\x95\xdd\xb0\xc3\x83\xa1\xf8\x10\x38\xfc\x3d\x54\x3c\xe0\xa3\x8c\x9c\x28\x8a\x9b\xc4\x07\x7f\x42\x77\xdc\xc6\xc5\x64\x22\x63\xfc\xfe\x19\x68\x80\x05\xa6\x03\xf5\x76\x75\xd2\x43\x4f\x3e\xd1\xf4\x6d\x32\xf1\x4e\xae\xb0\x73\xe8\x3e\xe7\x08\x6d\xa2\xfb\x67\x65\x9d\x3f\xb6\x8c\x62\x32\x0b\x77\x27\xb3\xb8\xea\x00\x65\x76\xbc\x2c\x7e\x6b\x5f\x1e\xce\xfa\x8b\x92\xe7\x0c\x92\xc8\x89\x51\xd0\xc1\x2d\x91\xde\x80\x1c\x38\xb7\xca\x5a\x0a\x04\xb4\xc3\x42\x9a\xba\x86\x38\x6e\x96\xe0\x6a\xfd\x20\xd4\xc5\xc2\xfe\x2b\x9b\x42\x73\xeb\x05\x20\x1a\x79\x27\x3a\xbd\xbe\xb3\x7e\xd1\x83\x0d\x22\x6b\x6b\xdb"}, +{{0x38,0x37,0x94,0x23,0xda,0xfd,0xbf,0x25,0xe1,0x9d,0x72,0x31,0xbd,0xdd,0x80,0xb4,0xce,0xfc,0xfe,0x2a,0xed,0x93,0x25,0x84,0xdf,0xa0,0xcc,0x3c,0x9f,0x92,0x32,0xde,},{0x59,0x7e,0x81,0xdc,0xee,0x94,0x48,0xb7,0x7d,0xe6,0x82,0x9e,0x79,0x21,0xc8,0xa3,0x90,0x53,0x5d,0x89,0xa0,0x84,0x94,0x30,0xae,0xd6,0x63,0x64,0xee,0x14,0x0d,0x8b,},{0xd8,0xb5,0x0a,0x88,0xae,0xd6,0xf2,0xa9,0x6d,0x08,0x22,0x13,0xad,0xf8,0xb2,0x51,0x9f,0x6a,0x0b,0xbd,0x30,0xdd,0x3c,0xb0,0xf3,0xfd,0x3c,0xe1,0xc6,0x43,0xfc,0x02,0x99,0x46,0xcd,0x43,0x46,0x2e,0xd2,0x25,0x13,0xf1,0xd6,0x5f,0xca,0x24,0xbd,0xe3,0x81,0x81,0x66,0xba,0xa8,0x6d,0xaa,0x79,0x87,0x92,0xaf,0xaf,0xe0,0xc1,0xa1,0x0a,},"\x36\x12\x5c\xa6\x66\x68\x80\x29\x06\x23\x7e\x63\xa2\xfe\x5a\xe6\x10\xf1\x1a\x7c\xf9\x25\x20\xd1\x9e\x66\x90\xa3\xad\xfa\xfd\x5d\x07\xa7\x84\xbc\x1a\x0e\x18\x52\x73\xd1\x1d\x34\x0d\x5e\xff\x90\x15\x97\xde\xdf\x45\x0c\x46\x99\xd4\x3f\x3f\xb1\x68\xd5\x57\xf6\xc9\xc0\x30\x77\xc3\xcd\xc3\x70\xd3\x48\x32\xcc\xdf\x2a\x8e\x3d\x75\x79\x64\x90\xed\x02\x42\x89\x9d\x25\xdd\xf4\x4b\xfc\x66\xf3\x29\xcf\x4c\x45\x16\x87\x03\xc3\x1b\xc9\x20\x2d\x89\x0f\x39\x69\xff\xd3\xac\x35\xa1\x28\x18\xdc\xa7\x51\xce\xb8\x80\x8f\xe8\x1e\xfa\x26\xa5\xe0\xd2\x00\xc5\xec\x1d\x94\xa5\x09\x7e\xa7\x4b\x64\x98\xfe\x28\x8f\x30\xc4\x8d\x72\x7e\x9d\x3d\x35\xc8\xe1\x2d\x85\x42\x07\x02\x55\x6f\x28\x61\x48\x4f\xfd\x09\xb4\xf1\x22\x65\xcc\x9a\xba\xfe\xb8\x2c\xf5\x90\x02\x88\x95\xa7\xd0\x50\xff\x57\xcc\xf5\xf2\x80\x22\xd0\x16\xab\x40\x94\xb0\x62\xe4\x8b\x66\xfd\x36\xd1\xe1\x96\x26\xe5\x21\x5e\xfa\x40\xfb\x7e\x3b\x70\x62\xf8\x1e\x95\x48\x30\xc9"}, +{{0xf9,0x25,0xd2,0x74,0xaa,0xf1,0xfe,0x1a,0x21,0x65,0x62,0x37,0x38,0x5e,0x97,0xf7,0x78,0x3e,0x78,0x09,0x0c,0x5d,0x42,0x17,0xfe,0xce,0x70,0x57,0xc8,0x0f,0x42,0x6d,},{0x3b,0x0f,0xc3,0x70,0xbe,0x3a,0x4b,0x19,0xa8,0x8a,0xb9,0x98,0xc5,0x95,0x04,0xff,0xb5,0x9a,0x87,0x60,0x63,0x38,0xe6,0x73,0xdf,0x5b,0x3f,0xab,0x4d,0x9b,0xfb,0x8d,},{0x79,0x54,0x9a,0x31,0x7d,0x10,0xa0,0xbe,0x32,0x2a,0x94,0xa1,0x51,0xad,0x11,0xe7,0x7e,0xfc,0x48,0x36,0xcc,0x80,0x06,0xa8,0x50,0x81,0x27,0x3d,0x76,0x02,0xa6,0x38,0x96,0x3a,0x9c,0xaf,0x19,0xc3,0xed,0xf1,0xe2,0x5f,0xad,0x1e,0x9d,0x68,0x70,0x1a,0x71,0xde,0xa7,0x27,0xda,0x6a,0x5c,0x5b,0xca,0xc9,0x33,0x95,0x89,0x22,0x4b,0x05,},"\x14\x3c\xaa\xfa\x5f\x62\xb1\x3e\x43\xdf\xfa\x49\xd4\x20\xfa\x99\xf7\x71\xb1\x92\x6d\x40\xd6\xcb\x2b\xbb\x42\x7f\x27\xb6\xc2\x66\xeb\x3d\xeb\x2d\x8b\xbb\xd4\x7b\x82\x14\xad\x40\x25\x1c\xb1\x90\x7a\xd6\x5e\xb9\x41\x93\xe5\x4a\xd8\x5c\x67\x00\xb4\x18\x9e\x80\xf1\xcc\x01\x54\xc6\x3e\xd1\x51\xa8\xbb\xbd\x30\xe0\x16\x37\xca\x58\xe7\x0a\xa3\xee\x52\xef\x75\xd0\x87\x30\x78\xa4\x05\x01\x4f\x78\x6e\xb2\xd7\x7b\x7f\x44\x22\xf9\x27\x82\x3e\x47\x5e\x05\xb2\x42\x45\xf9\x06\x8a\x67\xf1\x4f\x4f\x3c\xfb\x1e\xb3\x0b\xfe\xde\x7b\x32\x62\x23\x0c\xed\x9e\x31\x36\x1d\xb1\x96\x36\xb2\xc1\x2f\xdf\x1b\x9c\x14\x51\x0a\xcd\x5b\xc1\x8c\x0d\xdf\x76\x35\xe0\x03\x50\x3e\x6f\x71\xe1\xc3\x65\xcd\xfb\x4c\x65\xee\x75\xb4\xde\x06\x94\xaf\x87\x07\x63\x74\xd6\x31\xe6\xc4\xb8\xe2\x40\xfa\x51\xda\xb5\xe1\xf8\x0c\xa2\xa0\x6c\x49\xf4\x2e\xa0\x9e\x04\x75\xde\xfb\x18\x4d\x9c\xde\x9f\x58\xf9\x59\xe6\x40\x92\xaa\xc8\xf2\x02\x7e\x46\x81\x26\xf2\xfb"}, +{{0x97,0x1f,0x80,0x6b,0xe6,0xf0,0x7d,0x41,0xbe,0x88,0x30,0xff,0x8d,0xae,0x70,0x4b,0x08,0x63,0x8a,0xd6,0xcf,0xf7,0x22,0xd8,0x43,0x25,0x38,0x12,0x7b,0x76,0x96,0x25,},{0xaf,0x6a,0xc9,0x8d,0xce,0x20,0x78,0xa6,0xc7,0x3f,0x60,0x97,0xba,0xb6,0x3f,0x20,0x5c,0xaf,0x69,0x53,0xaf,0xa2,0x84,0xd0,0x42,0xbd,0x50,0xa4,0xfc,0xe9,0x6c,0xb4,},{0x20,0x37,0xa0,0xa7,0x67,0x4b,0x84,0xff,0x27,0xd0,0xb2,0x2f,0x62,0xb4,0xba,0xc6,0x5e,0x2d,0xc0,0xf5,0xfd,0xc8,0x99,0xfe,0xb7,0x80,0x0f,0x25,0xc2,0x99,0x81,0xde,0xe6,0x41,0xc5,0xa5,0x0f,0x8b,0x94,0x10,0x97,0x0b,0x49,0xd2,0xd5,0x36,0x58,0xc8,0x9e,0xe1,0x69,0x61,0xdc,0xcf,0x53,0x91,0xa6,0x91,0x8f,0x2a,0x84,0xea,0xda,0x0b,},"\x01\x34\x55\xd0\x49\xaa\x54\xed\x99\x5f\xbd\x94\xe6\x36\x99\x55\x49\x53\x95\xe4\x43\x88\x22\x25\x9b\x10\x60\xe9\xa3\x47\x79\x04\x2a\x1a\x69\x21\x1f\x6e\xa2\x07\x73\x99\xdd\x23\x48\x06\xba\x0b\x35\x3c\xd7\x9a\x57\xe1\xc4\x9b\x25\x0a\xb2\x71\x06\xdc\xde\x57\x6e\xcf\xa1\x15\xea\xe4\x61\xfe\xbb\x12\xd2\xda\x25\xff\xcf\x17\xb7\x15\xf8\xd9\x5c\x2f\x0c\x42\x5d\x5a\x81\xf7\x00\x11\x5b\x70\xd4\x9e\x1c\xfe\x49\xfc\xaa\x14\xfa\x20\x5e\x28\xec\x85\x24\x7f\x1a\x6e\x71\x28\xbf\x3b\xb3\x06\x0d\xc0\x84\x64\xbd\xa6\x53\x85\x40\xd0\xac\x47\x20\x93\xe5\xa0\x72\x0f\xde\x2f\x3d\xc4\x78\x8e\x0e\x9b\x0d\xbf\xe2\xa2\xb5\xf1\xa0\xf3\xf8\x0d\xe9\x84\x02\x5b\x15\xc6\x5a\xf7\x7f\x67\x1e\x1c\x5e\x28\x40\x44\x4d\xe5\xc7\xed\xa0\x25\xe6\xdc\x1a\x3f\xf1\x6e\x26\xcc\x54\xcd\xee\xd5\x6b\xe7\x3f\x9b\x01\xab\x2b\x1b\xc1\x6c\x8e\xf5\x8a\x5b\x76\xdd\x47\x28\x78\x07\xe5\xc5\x0f\x0d\x7c\x0a\x5b\x81\x20\xdf\xde\x64\x5a\x01\x2c\x5c\xf1\x14\x91\xbc"}, +{{0x2b,0xb0,0x65,0x2f,0x8f,0xff,0x69,0x01,0x99,0x11,0x48,0xc6,0x8a,0x32,0x67,0x87,0x72,0x71,0x00,0x6a,0xe9,0x58,0x91,0x49,0xbb,0x20,0x68,0x50,0xcd,0xf5,0x2f,0xb0,},{0xc0,0x3b,0x77,0xbe,0x98,0x3e,0x74,0xa2,0x34,0xc1,0x98,0x64,0x96,0xb2,0x92,0xe1,0x39,0x99,0x2e,0xb7,0x52,0x9e,0x70,0xb3,0xaf,0xad,0x7a,0xe4,0xfd,0xcf,0x8a,0x66,},{0x4e,0x15,0x8d,0xea,0xae,0xc3,0xd8,0x89,0x41,0x29,0x6a,0xf2,0xd2,0x73,0x41,0x01,0x2b,0x02,0x41,0xd4,0xe0,0xf4,0x6e,0x43,0x5e,0x37,0x5c,0x98,0x75,0xe8,0x9f,0x5e,0x32,0xc0,0x57,0xb5,0x27,0xbc,0x34,0x11,0xaf,0x09,0x6a,0x77,0xbf,0xce,0xb4,0x5b,0x98,0x3e,0xfe,0x45,0x5e,0x3f,0x03,0x15,0x5d,0x6b,0xc7,0xb0,0xac,0xc8,0xe6,0x0c,},"\xb9\x23\xca\x67\xe3\x96\xd8\x65\x6f\xa3\xdb\xce\x82\x89\xa3\x8b\xd3\xc1\x28\xce\xfb\x30\xef\xc1\x86\x2b\xb9\x44\xb4\x50\x78\x05\x41\x98\x24\xce\x2b\x83\xd6\x90\xef\x4c\xf1\x07\x49\x28\x17\x14\x3b\xf6\x4c\x02\x49\x89\xaf\x1a\x7d\x2e\x1f\x5a\xc9\x78\x74\xf8\x6b\xb0\xd3\x77\x3f\xf8\x40\xf5\x14\xd9\xa1\x39\x4a\x39\x59\xb0\x11\xd3\xa6\xb8\x16\xa3\xfa\xe5\xde\x17\xb2\xa9\xff\x34\x98\x63\xd2\x7f\xbb\xb5\x0c\xca\x73\x41\x08\x75\x10\x00\xd6\x35\x8c\xa0\x64\x7a\x93\xeb\x49\xe2\xe7\xaf\x06\x28\x7d\x48\xf2\xc0\x9d\x5c\x1c\x73\xe4\xd8\xf7\x7e\xa2\xbc\xaa\x73\x56\x79\x5b\x26\x72\x87\x19\xbe\xd5\xff\xdb\x82\x15\x78\xbd\x5d\x66\xbf\x92\xed\xaf\x8b\x23\x8b\x2b\xbd\x7d\x1e\x2c\x30\xa7\x87\xf9\x01\xa3\x3d\x0a\x76\x66\x9a\x9c\x3c\x7f\x2b\x55\x2c\xcb\x83\x49\xc7\xde\xd5\xe1\xa4\x61\x70\xcf\x28\xe3\x59\xe2\xfd\xd5\x4b\x05\xa5\x62\xf5\x28\xc6\x8a\x56\x97\x4d\xf8\x2d\x46\x66\x37\xc8\xe5\x32\x46\xa7\x21\x7e\x43\x86\x80\x1e\x0e\x32\x66"}, +{{0xdb,0x9b,0x81,0x2c,0xb3,0xc7,0xc0,0x3b,0x97,0x7f,0x48,0x7d,0x3d,0x65,0xcc,0xd9,0xcd,0x2f,0x3d,0xee,0x11,0x60,0x20,0x67,0xdb,0xfb,0x72,0xb5,0x89,0xff,0x3f,0x79,},{0xff,0xa0,0x38,0xad,0x8c,0x3b,0x37,0x8c,0xe7,0x5d,0x65,0x84,0x4d,0x08,0xe3,0xd6,0xa9,0x2d,0x19,0x4a,0x1b,0x78,0x62,0xe9,0xd9,0x72,0x0d,0x20,0x67,0x9b,0x29,0x44,},{0xa6,0x28,0xa7,0x74,0x21,0xb2,0xab,0xab,0x57,0x6e,0xed,0x35,0xd2,0xee,0x3d,0x14,0x56,0x1b,0x21,0xfa,0x14,0xa6,0xe2,0xfa,0xc2,0x63,0xc3,0xea,0xdd,0x79,0xf2,0xfc,0x06,0x69,0xf9,0x42,0x9b,0x91,0x0b,0x84,0x22,0xb4,0xb2,0x9a,0xc0,0x26,0xa4,0x2e,0x98,0xd1,0x81,0xbe,0x35,0x07,0xc5,0xed,0x7c,0x74,0x8a,0x1f,0xdc,0xf1,0xd8,0x07,},"\xa7\x00\x92\xc7\x69\x7c\xd4\xa2\x09\x56\x7c\x38\xba\x7f\xb7\x1a\xa8\xf1\x5e\x58\x27\xa2\x08\x76\x92\x39\x43\xfd\x6a\xdc\x65\x9c\x98\x67\xac\x6f\x58\xa6\x1d\xc7\xce\xc3\xd3\x62\x41\x16\x82\x00\x0c\x1a\x9a\xd1\x29\x5e\xb8\xb7\x0f\x24\x2d\x86\xb5\x86\x5e\xb7\x6b\x87\xe3\xf2\xc6\x94\x1d\x26\x12\xee\x3b\xcd\xe8\xf1\x97\x65\x56\x67\x33\x15\x2e\xf5\x4e\x95\x69\x09\x43\x28\x5f\x78\xb3\x75\xf4\x03\x65\x85\xd4\x73\x9d\xee\xde\xef\x6d\x94\x6d\xb6\x1c\xa4\x58\xef\x4f\x65\x0d\xa9\x63\xc3\x85\xe2\x9d\xfd\xee\x41\x5f\xe4\x95\x84\x5f\x55\x19\x7a\x87\x0f\x8c\xde\xb5\xa0\x10\xba\x6b\xbb\x32\xbf\x1a\x58\x8c\xc7\x74\xd4\x89\x01\x84\xc4\xb2\x92\x4a\x5b\x80\x73\x31\x3b\xce\x22\x65\x85\xf1\xad\xfc\x22\x9c\x90\xbc\x6c\xc9\xd2\x12\xe6\x2f\x05\xd3\x3b\xed\xac\x96\x1d\x77\xcf\x8c\x26\x20\xe4\x51\xde\x81\x7f\x8c\x1b\xb1\x6a\x2c\x59\xff\x80\x4b\x63\x5a\x73\xa8\xcf\x8c\x18\x1b\x3f\x94\x01\xc3\xb6\x43\xd1\x8a\x2f\x70\x6e\xa9\xca\xe4\x70\x71\xa6"}, +{{0xce,0x37,0x9b,0xbe,0x2f,0xa8,0xab,0xcb,0xa5,0x1c,0x7a,0x75,0x43,0xde,0x5b,0x71,0x80,0x77,0x1b,0x3c,0x44,0xbc,0x6b,0x41,0x89,0x2e,0x7b,0x88,0x97,0x9b,0xab,0x90,},{0x7f,0x3c,0xff,0x89,0xf4,0x1b,0xab,0xf4,0xfa,0x64,0xcb,0xa3,0x3a,0x5b,0xb1,0x7f,0x41,0x3b,0xbf,0x2a,0x1e,0x11,0x2b,0x50,0xa8,0xe9,0xb1,0xf8,0x21,0xd8,0x49,0xbf,},{0xda,0x98,0xdf,0xb1,0x89,0x38,0x5b,0x2c,0x85,0x3b,0x6c,0xf3,0x75,0x73,0x80,0x46,0xa8,0xf2,0x7e,0xf2,0x79,0x74,0xab,0xce,0xce,0xa1,0xdb,0x02,0x98,0x9b,0x95,0x1f,0xe4,0x33,0xa6,0xce,0x1e,0x22,0x5b,0x3f,0xa8,0x20,0x32,0xfe,0x06,0x0a,0x7d,0x3f,0x6c,0x18,0x3f,0xd1,0x15,0x7f,0x79,0x1a,0x06,0x4b,0x40,0x76,0x50,0x57,0x16,0x00,},"\x00\x1a\x74\xf0\x95\xc8\x14\xd3\xbe\xed\x67\xa8\xd1\x5f\xc1\x8e\xfe\x23\x5d\xc3\xf6\x45\x78\x12\xa4\x03\x9b\x7a\x46\xfe\x9a\x0e\x9d\xe8\x1a\x7a\x4e\x5f\xba\xb5\xeb\xe9\xe1\xe4\x80\x1b\xd1\x1b\x45\xc9\xf7\xad\x06\x36\xa0\x9b\xff\x42\x16\x4b\xe5\x74\x9a\x04\xc0\x2f\x0a\xb6\x1f\x0e\xcf\xdf\xef\x79\x9b\x82\x7d\xa6\xa2\x74\xc8\xd3\xb3\x9f\x2e\x38\x05\xa6\x79\x12\x87\xee\xdb\x23\x14\xd3\xf8\x42\xb5\x58\xb9\xb4\x89\xaf\xe1\xed\x37\xbb\xbc\xfc\x5e\x60\xa4\x31\xd5\xac\x60\xb3\x9e\x94\x6d\x90\x3d\x6b\xf6\xb1\x40\xe1\x2c\x7e\x07\xf9\xed\x7a\xc4\x6a\x39\x99\xc6\x24\x5c\x8a\xb1\xbd\xb2\x18\x79\xa3\x17\xa3\xdc\xd2\x57\xa5\xc4\xf3\x49\xb7\xf5\x9e\x4e\x43\xd6\x2d\x9f\x1c\xd1\x6f\x51\x8f\x1c\xa6\xca\xd3\x7e\x2c\xb2\x0f\x25\x98\xc4\x13\x42\x91\xc6\xb8\xa9\x8a\xae\x52\x47\xe2\x6e\xef\xb7\x6a\xa3\x8c\x9c\x82\x31\xc1\x7e\x9d\xbf\x27\x1c\xec\x80\xfb\xa5\xb4\xa8\x34\xbd\x9b\xe8\x1e\xa8\x41\x63\x7a\xa9\xcd\xd4\xc4\xbf\x26\xd7\xad\x24\xca\x3c"}, +{{0x2b,0x2e,0xe8,0x09,0xd6,0x47,0x02,0x3e,0x7b,0x77,0xfc,0x54,0x1f,0x44,0x87,0x5a,0x35,0xfa,0x94,0x1d,0x37,0xf7,0xc5,0xb2,0x1f,0xd3,0x49,0x34,0xd2,0x39,0x19,0x35,},{0x2c,0x29,0xd5,0x3e,0x1b,0xf2,0xc7,0x87,0x9d,0x73,0xd2,0x0b,0xa8,0x8c,0xa0,0x7a,0x0b,0x21,0x6d,0x7f,0x6d,0x05,0xd9,0x36,0x63,0xa6,0x5c,0x3d,0x9e,0x10,0x63,0x3a,},{0x12,0xd9,0x06,0x85,0x77,0x55,0x72,0xc9,0xea,0xbc,0x9b,0xe2,0x57,0x4c,0xa9,0xae,0x66,0xf0,0xe6,0x52,0xe5,0x78,0xb2,0x17,0x36,0xcd,0x6e,0x65,0x4f,0x7c,0x6b,0x15,0x45,0x88,0x3d,0x56,0xbf,0x76,0x0c,0xcf,0xc3,0xcf,0x87,0x54,0x4e,0x00,0x04,0xc7,0x98,0x06,0x12,0x57,0xe1,0x30,0x03,0x0c,0xb9,0x97,0xa7,0x88,0x36,0x9a,0x9a,0x05,},"\xc4\x14\x7d\x64\xeb\xfd\xa4\x1a\x1b\xe5\x97\x72\x62\x95\x81\x04\xe9\x40\xc3\x87\x6b\xcd\x5b\x69\x56\xac\xfd\xec\x32\xc6\x60\x91\x4d\x62\x62\x3c\x21\x06\x63\xcb\x2c\xbe\x62\x49\xd7\xf5\x27\x49\x91\xc6\x0e\x95\x0e\x8e\x28\x09\x04\x99\x53\xc6\x95\x81\xd2\x46\x9f\x4f\xe9\x82\xc7\x43\x4f\xed\xd9\xd4\xe0\x0a\xe0\x88\x96\xd6\x2c\xc1\xfb\x98\x4d\xd2\x33\x15\x0c\xc2\x48\x3e\x15\x9c\xff\x40\x97\xdf\x8c\x03\x6b\xb6\x33\x00\x3a\xbb\xfb\xe1\x8c\x8f\xa7\x9b\x5a\x22\x27\x08\x38\x12\x3f\xc9\xbe\x39\xb8\x89\x2c\x80\x38\x4a\x38\x50\x28\xc1\xa8\x1e\xc5\x8c\x8f\x21\x06\x0e\x78\xaf\xd2\xc0\x4b\xfd\x2d\x30\xca\x39\x77\xc6\xed\xad\x51\x8c\xc1\xe2\x00\x4c\xdc\x14\xbf\x3d\x15\xf5\xf5\x28\xe5\xaf\x27\x7f\xa1\x82\x27\x58\x70\xe5\xc0\x12\xf5\xf8\x2f\xb1\xaf\xd0\x4e\xdd\xe4\x57\x8d\xdd\x21\x60\xa1\xa3\xdb\xc0\x50\xe8\x0b\xdd\x81\x1b\xc8\x8e\xad\x79\xbf\x93\xf0\x10\xcd\x0f\xd4\x43\x3d\x0b\xc3\x48\xda\xcf\xd0\x94\x7c\xce\xda\x62\xbf\xa4\x97\x11\xd0\x13"}, +{{0x4e,0xa1,0x8d,0x6b,0x4a,0xf8,0x05,0x3b,0x88,0x5e,0xc1,0x88,0xbe,0x48,0xde,0xb8,0x6f,0xfb,0x2a,0x69,0xa4,0xce,0xc8,0x66,0x37,0xbb,0xd7,0xb4,0x1b,0x80,0x7c,0x46,},{0xe5,0x98,0x60,0x59,0x97,0x62,0x33,0xed,0x77,0x38,0x2c,0x3d,0x99,0x59,0xf3,0x4e,0x31,0x79,0x62,0x69,0x65,0x53,0xe8,0x6e,0xd1,0xe5,0x90,0x2c,0x4b,0xed,0xd1,0x67,},{0x27,0x57,0x0c,0x00,0x2a,0x48,0x7d,0x00,0x0c,0xa3,0x92,0x8b,0x83,0xcb,0x43,0x19,0x72,0x2c,0x46,0xdf,0xb4,0xcc,0xa2,0x60,0xde,0x79,0x0e,0xc0,0xe3,0xc1,0x93,0x26,0x88,0xf8,0x73,0x62,0x95,0x28,0x18,0xb5,0x4f,0x51,0xbc,0x7a,0xee,0xb2,0x63,0xf9,0x60,0xbc,0x0d,0xa8,0x96,0x4b,0xf3,0x12,0xef,0x93,0xe8,0x1f,0x06,0xc8,0x0b,0x04,},"\xe9\xc8\x9a\x1a\x11\x19\x37\x32\x06\xce\x40\xed\xe3\xb8\x9a\x82\xf8\x94\x62\xa1\xde\xe9\xe7\x89\xe9\x84\x5e\xec\x21\xf5\x71\xc0\xfa\xef\xd4\x30\xad\x33\x8e\x4a\x72\xc0\x47\xa3\x9a\x42\x59\x58\x03\x87\xfb\x9a\xac\xad\xdc\x36\xa2\xb5\x1e\x7b\x60\xa8\x7c\xa1\x32\x1f\xf8\x06\x79\x4c\xd6\xdd\x45\x49\xa4\xdf\x45\xc2\xda\xe3\xe5\x39\xc4\xd7\xd0\x6b\x6e\x6e\x9f\x46\x6f\xfc\xa2\xfa\x49\x78\xce\x3d\xc7\x92\xe4\x4a\x62\x83\x88\x0c\xd1\x38\xa7\x5a\x22\x6f\x98\x5d\xa4\x1f\xfd\xc0\xe3\x2a\x5a\x85\xc8\x5f\xe9\xa4\x3a\xe7\x8f\xcf\xe5\x7f\x4d\xd7\x54\x0a\x6d\xd3\x92\x4a\x49\xab\x39\xeb\x69\x95\x0d\x42\x11\x51\xd9\x6b\x1e\x4f\xd3\x93\x58\x90\xf6\x34\xcd\x52\xa7\x3a\x75\x5f\x5c\x2f\xb7\x2f\x9c\xd5\xa2\xe6\x7e\xa9\x30\x91\x5e\x13\x3b\x47\xcf\x6b\x7c\x10\xa9\xd8\x89\xc6\xaf\x6b\x5f\x1f\x4f\x51\x09\x4d\x27\xfb\xba\x22\x8a\xc2\x26\x8b\x34\x40\x27\xfd\x49\xe4\x26\x34\x3c\xc0\x13\x43\x99\xb4\xb5\x10\xaa\xea\x50\x23\x4d\xf4\x2c\x37\xfa\x1c\x4f\x4d\x0e"}, +{{0xfc,0x1b,0x75,0xd1,0x7d,0x38,0x07,0x21,0x73,0x51,0xd2,0xaa,0x40,0xd9,0xb0,0x4f,0x52,0x5b,0x89,0xed,0x3f,0x5f,0xcd,0xb3,0x11,0xbe,0xc2,0xae,0xc5,0xcb,0x7e,0xce,},{0x55,0xe4,0x84,0xe7,0x74,0xa4,0x39,0x2a,0x9d,0x6e,0xef,0xf8,0x35,0xa8,0xfb,0xb2,0x32,0xcf,0x62,0x76,0xa8,0x9c,0x74,0xfc,0x0d,0x1b,0xb2,0x04,0x5a,0x8b,0x21,0xbe,},{0x9a,0x68,0xd1,0x51,0xfe,0xa3,0x90,0x98,0x93,0x35,0x9e,0x60,0xb9,0x6b,0x68,0xb2,0xa3,0xe2,0x94,0x6f,0x2b,0x47,0xb8,0x75,0x39,0x8a,0x1e,0x39,0xeb,0x01,0x46,0x3d,0x35,0xea,0xe7,0xd9,0x76,0xf8,0x33,0xa7,0x62,0xb5,0x1f,0x27,0x26,0xee,0x0d,0xcc,0xad,0x5c,0xe3,0x60,0x05,0x64,0xfd,0x9d,0xd5,0x8c,0x23,0x80,0x7f,0xdf,0xfd,0x05,},"\xd0\x31\xbd\x11\xda\x30\x80\x97\xe3\xbe\xb6\xff\xdb\x26\x00\xee\x6a\x19\x3c\xa6\xd8\x32\x45\x01\xc9\x72\xb1\xa2\x51\x66\xfa\x7a\x36\x9f\x5b\xc8\x82\xea\x45\x61\x2c\xf0\x25\x80\x25\x4d\x21\xb4\x0b\x03\x63\x23\x7e\x83\x5d\xae\x26\x56\xc1\xb7\xf4\x73\x6e\x88\xbe\x53\xd6\xb1\x19\xc0\x7f\x57\x29\xbb\xd8\x2f\x67\xde\x03\x58\x83\x22\x87\x92\x43\xc5\x99\x0a\x7e\x61\xf5\x69\x07\xb2\x41\x71\xa5\x7c\xbb\x0b\xbe\xfb\xa2\x31\x62\x77\xaf\x93\x26\xf9\xcb\xf3\x53\x8b\xcb\xf6\x78\x0b\xe4\x18\x25\xa2\xca\x77\x4b\x41\xbd\xb1\xcd\x5c\x60\x88\x51\xec\x23\x39\xeb\x2f\x4f\xee\xdd\xaa\x89\x1a\x63\x26\xb2\x9d\x97\xd7\xfb\xf3\x11\xe3\xbb\x74\x9c\x5d\x4c\x05\x8d\xcc\x14\xf4\x52\xf9\x33\x49\x91\xe2\x71\xc1\x6d\x65\x08\xc8\x18\x63\x39\x27\xf4\x29\x80\x4c\xa7\xa3\x81\x70\xf1\xb9\xf6\xbd\x73\xed\x67\x5e\x11\xe8\xc0\xd3\x21\xfa\xc9\x12\x73\x0b\x4b\xa2\xf7\xc4\x28\x53\x4a\xdc\xaa\x4d\xad\x31\x4c\x55\x80\x7e\x6c\x64\x2d\x49\x4c\x6b\x2f\x0e\x8c\xd1\x29\x77\x5c\xc0"}, +{{0x0d,0x0b,0xf4,0xd4,0x2e,0xf8,0x10,0xb1,0x79,0xeb,0x84,0x17,0x71,0xde,0x6d,0xbd,0xe7,0x63,0x61,0xca,0xf8,0x94,0xe4,0x2a,0x14,0xb1,0xe0,0x97,0x87,0xea,0x3e,0x06,},{0x71,0x71,0x51,0x0b,0x43,0xfc,0x17,0xef,0xa8,0x0b,0x15,0xe3,0x20,0xb1,0xb0,0xa4,0x08,0x33,0x25,0x42,0xe0,0xd3,0x6e,0x4a,0xb9,0xa6,0x49,0xcd,0x94,0x1b,0x5a,0xed,},{0x24,0x44,0x6b,0xdf,0x03,0x41,0x6a,0x4d,0x08,0x61,0x44,0x66,0xfb,0x85,0x1d,0xb5,0x0e,0x91,0xa6,0x23,0xca,0xcd,0x1b,0x0b,0x35,0x66,0x0f,0x3c,0xf9,0x33,0x20,0x0e,0x15,0x30,0x87,0x08,0xda,0x34,0x99,0xa5,0xad,0x25,0xf0,0xf0,0x30,0x6b,0x79,0x42,0x76,0x2e,0x20,0xa7,0x65,0xb7,0xca,0x9b,0x90,0x1c,0x75,0x0b,0x3a,0x95,0x32,0x0a,},"\x8e\x21\x79\x97\x5d\x0a\x8e\x5a\x69\xfe\x87\x5a\x3c\xb1\xe7\x9a\xec\x49\xc3\x85\x3e\x30\xdd\x03\x20\xfe\x3e\xbf\xb6\x38\xb8\x2f\x89\xad\x16\x43\x03\x6b\x37\xe5\x6e\x0b\x55\xe0\xa9\xe2\x2a\x4e\x28\x3d\x7a\x27\x48\x5c\xe9\x10\x2d\xb6\x78\x7d\x66\x28\xb7\x79\x13\xe1\x08\x96\x77\x4e\x49\x5c\x26\xe8\xba\xb2\x6e\x7f\x9a\x94\xd2\x9a\xaa\x36\xae\xc9\xc2\x6a\xd3\xf5\x0e\x5d\x8c\x0b\x76\x98\xbb\x5f\x01\xb8\x76\xd0\xd6\x5f\xcf\x5e\x9e\x32\xcd\x7b\x89\x82\x9e\xd0\x5b\x0b\x8f\x63\xa9\x38\x58\x98\x5b\xc9\x56\x9f\xce\x42\x9f\xd3\x7a\x21\x1a\xbe\xd6\x50\xf5\x85\xc3\xb5\x59\x00\x44\x3b\x6c\x5d\x6e\x8a\x48\xba\x67\xde\xee\xd0\x7b\x76\xe9\x69\xfc\x88\x43\x0f\xce\x27\x09\xc0\xbb\x5c\xe9\x26\xab\x7f\x44\xe0\xcd\x79\xf4\xec\x35\x9e\xf7\x67\x48\x88\x3f\xcc\x3d\x02\x6e\xdd\x06\xc8\xb9\xcb\xa5\x4b\x99\x0d\x30\xaa\x41\xf1\x44\x8a\x10\x89\x3f\xb0\x53\x92\x80\xc5\x99\xd4\x23\x61\x43\x3a\x34\xcd\xaf\xd8\xeb\xdd\x92\xef\xb9\xc3\x8a\x36\xda\xf4\xc7\x40\x60\xc6\x96"}, +{{0x57,0xb5,0x19,0x4d,0x26,0xab,0xe4,0xab,0x21,0x16,0xc0,0xf0,0x3d,0x23,0xdb,0xe1,0x16,0xd4,0x88,0x25,0xa2,0x5e,0x77,0xd6,0x46,0x48,0xb4,0x36,0x92,0xae,0x25,0xbf,},{0x49,0x9c,0x02,0xdb,0xad,0x2a,0x4e,0xab,0x3b,0x6f,0xf1,0xab,0xa3,0x94,0x4b,0x91,0xc3,0xf2,0x73,0xa3,0x82,0xc5,0x48,0xa6,0xf3,0xa1,0x9c,0x83,0xf0,0xa8,0x67,0x24,},{0x4c,0x73,0x45,0x96,0x0c,0x8f,0xd4,0x8a,0x7d,0xea,0xd7,0x1d,0xbd,0x61,0x90,0x84,0x68,0xef,0xa8,0x65,0xa1,0x35,0x56,0x8c,0x8f,0x9c,0xa0,0x05,0x54,0x83,0x46,0x86,0x17,0xa7,0xe3,0x35,0x84,0x0f,0x57,0xc6,0xcd,0x8f,0x2c,0x98,0x05,0xcd,0x47,0xa9,0xd7,0xcd,0xfd,0xe5,0x3d,0xa8,0xef,0x4f,0x1a,0xdb,0xb6,0xf6,0x98,0xaa,0xf1,0x00,},"\xb4\x81\x3c\x9d\x13\x21\x5f\xe9\xf6\x3a\x78\xff\x7a\xc9\x51\x73\xeb\x81\x0b\x46\x13\xf0\xf4\x8d\x68\x76\xb2\xbd\x3b\x2c\x72\xbc\x7d\x98\xcb\x1a\xc3\x2b\xc4\x1c\xa4\x7f\x09\x89\x6f\x79\x20\x4e\xcf\xb8\x26\x4c\xe8\xf3\xc3\xe7\x6d\xc1\x24\xda\x8d\xdc\x6e\x0d\xfc\x1e\x13\xb5\xa5\x29\xf2\x0c\x82\x61\x3f\xb9\xa8\x2e\x5f\x5d\x77\x32\x6a\x86\x1f\xae\xda\xbc\x73\x25\xc5\x9a\xf3\x3d\xae\x67\x44\x02\x5e\x64\x97\x74\xfc\x4f\x79\x13\x4b\xf9\xf6\xe3\xd5\x87\x5d\xd9\x1b\xc8\xa1\x4c\xc3\x6a\x66\x28\x3d\x01\xd8\xd1\x08\xc1\x33\x27\xec\xa5\x30\x57\xba\x50\xbf\x21\x0c\x19\xf1\x39\xde\x64\x94\x98\x26\x46\x19\x8a\x12\x46\xc2\x71\xb0\xa3\x68\xc1\x0a\xab\x95\xcd\x89\x61\x23\x5d\x74\x2d\xf4\x54\x5b\xe6\x8b\xd0\x10\xdc\x0d\xb2\x3b\x67\x3e\x62\x36\x09\xe4\x20\xee\x76\xb1\x05\x6c\x52\x0f\x9c\xe8\xfb\xe8\xee\x18\x63\xdf\x97\xd1\x7b\x71\x74\x63\x6c\x3a\x2b\x61\x22\x95\x09\x19\x48\x81\x0d\x1d\x4b\x8a\x58\x43\x76\x0a\x28\x87\xdc\x55\xef\x51\x2a\xf0\x41\xec\x54\xfa\xd3"}, +{{0x06,0x8d,0x27,0xb2,0x1e,0x2a,0xcf,0xcc,0x19,0xc3,0xe9,0x67,0x3d,0xd4,0x41,0x42,0xd9,0x8a,0xac,0xae,0x89,0x49,0x30,0xe2,0x0c,0xa0,0x67,0x43,0x9e,0x74,0x9a,0x79,},{0xe2,0x2d,0xdd,0x39,0x6f,0x95,0x5b,0xb9,0x0e,0x28,0x47,0x76,0xaa,0x76,0xe9,0x21,0xe5,0x06,0x99,0xd0,0xca,0x89,0x14,0xa9,0xb7,0xb8,0x41,0xeb,0x5f,0xf4,0x7d,0x6d,},{0x0c,0x17,0x3c,0x48,0x8a,0xd0,0x01,0xcb,0xb9,0xc4,0x3d,0x7b,0x30,0xa7,0xc0,0x71,0xa2,0xfd,0xb0,0x8c,0xf7,0xf3,0x7d,0xaf,0x71,0xd7,0xae,0x71,0x28,0xdc,0x0d,0x43,0xf0,0xf0,0x95,0xb2,0x92,0x9c,0x54,0xb7,0x73,0xed,0x4a,0x1f,0x0b,0xf0,0xdc,0x4f,0x36,0x4f,0x06,0x01,0xe8,0xd5,0xae,0x06,0x2f,0x5b,0x78,0xc0,0x5b,0xfb,0xc7,0x02,},"\x1c\x68\x15\x42\x3d\x1a\x2c\x5e\xbe\x88\x28\xd1\x64\x65\x27\xc1\x7b\x20\x06\xe5\x47\xf0\x16\xb5\x35\x0f\x01\x0d\x79\xb1\x3d\xf4\xfb\x8c\x6e\xd5\x7b\xa9\xc2\x6c\x3c\xb0\xe0\xa6\x41\x78\xb6\x50\xa3\xea\x54\x44\xa4\xfa\xd5\xb2\x0a\x3e\xb8\xca\xa7\x02\x63\x40\x11\xcf\x78\x92\xa0\x72\x7b\x6e\x81\x50\xb0\x77\x04\x29\xa3\x7a\x8a\x0b\xb3\xa7\xed\xb8\x91\xa7\xc9\x02\x40\xbc\x03\x60\xb1\x4e\x6d\xd7\x70\xa9\x90\xb3\x1b\x31\xf3\x3d\xdb\xf6\x53\x98\x8f\x82\x74\x2e\x5e\xec\x31\xb2\x73\x68\xeb\x0e\x4f\x1e\xcf\x4d\x67\x6f\x49\x21\x4a\x52\x0d\x1e\x5b\x2b\xbb\x59\xac\x2e\x13\x26\x7e\x07\xa0\xcb\xac\xbe\xd9\xf9\x4d\x74\x73\xed\x69\x78\x28\xb0\x92\x8f\xcc\x61\x6e\xe0\x2e\x51\xfc\xd8\xdb\x4d\x8f\x75\x33\xb7\xb1\x39\xa0\x5e\x06\xf9\xe0\xea\xe3\x29\x93\xe3\x02\x5a\xef\x05\x90\xb3\xfb\xb4\x29\x2a\x3a\xc4\x07\x65\xe8\x58\x4e\xad\x00\x26\x6a\xcd\xcb\xdd\xe1\x45\x7a\x03\xb7\xd5\x7b\xd5\xc9\xe6\x4f\xb0\x6b\x64\xa5\x0f\x35\xf0\xa1\xec\x34\xb6\xdd\xbd\xe7\x67\xb9\x6f\xfd"}, +{{0xa3,0x4d,0x52,0x56,0x31,0x59,0xe0,0x72,0x3e,0x9f,0x3f,0xd1,0x33,0xbd,0x96,0xe2,0x0a,0xda,0xe6,0x23,0xf8,0xc7,0x98,0x01,0x3b,0xc3,0x6b,0x44,0x14,0x89,0xbd,0xc2,},{0x1f,0xb6,0x58,0xe6,0x45,0xde,0x6d,0x3e,0xfd,0xb0,0x83,0xa7,0x3f,0xbd,0x59,0x2f,0xcd,0x4b,0x80,0x0e,0x03,0xc7,0xbd,0x68,0x1a,0xea,0xe6,0x57,0x6b,0xfb,0xbe,0x2f,},{0x5f,0xab,0x5a,0x71,0x40,0xd4,0x78,0x73,0x68,0x43,0x05,0xaa,0x63,0x53,0xd3,0x86,0x2f,0x5f,0xc1,0x3e,0x54,0xa4,0x0c,0x95,0x63,0xcc,0xea,0xc8,0xf7,0x40,0x08,0xc6,0xc4,0x45,0x63,0x1f,0xa8,0x64,0xe0,0xf1,0xc3,0x45,0xb5,0x95,0x4f,0x80,0x05,0x6a,0xeb,0xa2,0x56,0x62,0xb7,0x88,0x27,0xb5,0xe8,0xe3,0xa9,0x43,0x78,0x13,0x72,0x0f,},"\x1d\x21\x5f\x85\xc0\x89\xf3\x5f\x30\x7a\x74\x6c\x66\xc7\xc1\xe4\x1d\x6b\xa3\x77\x30\xd7\x59\xe6\xe5\x62\x2d\x6c\x6a\x19\x8e\x40\xf6\x3d\x37\x87\x3b\x71\x5d\xf7\x51\x8b\x3c\x6b\xb5\xe9\x5a\x46\x77\x26\xb9\x7c\x9a\x0f\x8f\x5d\xfc\xdb\xfd\x1e\x0d\xe3\x57\x66\x1d\xde\xab\x55\x50\x42\xb9\x45\xfd\x89\x9f\xad\x6d\x38\x2d\x79\x17\xda\x9e\x12\xdf\xbd\xa0\xd6\x99\x00\xb3\x97\x51\x65\xa7\x3d\x0a\xc9\xde\x01\xfd\x30\x48\xb8\xfe\x5f\x0b\x90\xbe\x67\xe0\x3d\xc2\x2f\x65\x3a\x0a\x13\xeb\x4b\x0b\x75\x3f\x3f\x3b\xbf\x78\x73\x69\xeb\xd8\xbf\x5e\x00\xeb\x78\xbf\x0b\x35\x15\xa9\x1e\x68\xb1\xd5\xfc\x69\x20\xbf\x4f\x42\x59\xf8\xa7\x30\xef\xc7\xf1\x01\x6d\x50\x1e\xf6\xfb\x7c\xb8\x36\x6f\xc8\xe7\x16\xcf\xa5\x0e\xa8\xb2\x03\xcc\xa1\xa3\x16\x70\x7e\x0b\x0f\xc5\x7e\xaf\xce\x82\xd6\x2f\x7f\xf3\xae\x04\xac\x8f\xd0\x41\xb5\x5b\x19\xa3\x52\xa6\x9e\x6d\x4b\x79\xd0\xe6\x50\x17\x51\x68\xe3\x4f\xa3\x35\x8e\xac\x81\x6c\xec\xf2\xc8\xdd\x1b\xf2\xa5\x89\x11\x3e\x91\xbb\x81\x8f\x91\xf8"}, +{{0x58,0xdf,0xe7,0x68,0xbf,0x52,0x11,0x84,0x94,0xb2,0x99,0x75,0x15,0x4c,0xf4,0x52,0xbd,0x97,0x46,0xdc,0x7d,0xe1,0xd6,0xbc,0xd1,0x8e,0xe6,0xa0,0x5a,0xcf,0xd8,0x58,},{0x0f,0x14,0x76,0xc6,0xcc,0x2a,0x1b,0x47,0x64,0xaf,0x75,0x80,0x5e,0x77,0x34,0x1f,0x14,0xa0,0xd8,0xb0,0x9c,0x6a,0x5b,0x2e,0xa2,0x87,0xfd,0x51,0x7c,0x3f,0xa6,0xb9,},{0x97,0x71,0x37,0xa3,0x8a,0xf4,0x4f,0x4b,0x26,0x2a,0xbf,0xf7,0xe0,0x72,0x82,0x43,0x3c,0x58,0x92,0x6d,0x56,0x2f,0xbc,0x61,0x80,0xbd,0xe6,0xcd,0x94,0x97,0x86,0x1f,0xb6,0xd9,0x55,0xcf,0x38,0x3d,0x99,0x9f,0xa1,0x03,0x7b,0x8b,0x17,0x54,0xce,0x88,0x8c,0x9f,0xfc,0x15,0x60,0xa4,0x51,0xd0,0xe9,0xdb,0x8d,0x74,0xd2,0x94,0x06,0x04,},"\x60\x97\x94\x20\x1c\x4f\x6f\xaf\x48\x87\x90\xd6\x1d\xbf\xf3\xf4\x1b\x32\x8c\x5b\x06\x95\xcb\xe9\xaa\x8a\x13\x6d\x72\xb4\x97\x7b\x21\xb5\x00\xf2\x16\xe9\xf3\x21\x68\xad\xa8\xc1\x3b\xff\x25\x32\x76\x47\xe3\x0d\x8a\x24\x4d\x74\xd8\x83\x03\xab\xc9\x0b\x7f\x71\xaa\x07\xca\x04\xd1\x7b\xc8\xa0\x16\x7d\x6e\x63\xfb\x88\xba\xa1\xda\xb8\x1d\x50\xf1\xe9\x1f\x46\xf5\xaf\x77\xf2\xe8\x40\x8b\x82\x63\x36\xa3\x50\x52\xef\xff\xdf\x4a\xf7\x95\x96\xaf\x1b\xb2\x25\x9f\x83\xc1\xbc\x10\x9c\xfd\xc3\xdd\x50\xfd\x96\xd3\x10\xf2\x7e\xa4\xc6\xc7\x69\x0f\x21\x81\x5e\xa9\x2b\xd7\x93\x89\x68\x0c\xfe\x3e\xd4\x0c\x80\x18\x11\x90\x68\x8d\x24\x22\x2d\x9a\x1e\xd5\x2c\xe6\xa1\x6b\x41\xdb\xd9\x10\x7e\xb6\xd2\xe3\x59\x4e\x44\x94\xd7\x5d\xd7\xc0\x89\xe3\xb2\x6f\xfd\x00\xd1\x00\x3c\x92\xc4\xc3\x9a\xe5\x38\x2e\xf9\x29\x14\x91\xa8\x80\xca\x4e\xc3\xac\x2b\x86\xe6\x67\x19\xb9\x2b\x6f\x7c\xea\x2c\xb0\xbb\xb1\xcf\x62\x4d\x0d\x1a\xbe\xae\x55\x6e\x5f\x73\x90\x9d\xd5\x46\x27\x70\x37\xec\x97\x2f\xd4"}, +{{0x5a,0x63,0xef,0x9b,0xd7,0xdb,0xf0,0xe8,0x9f,0xef,0x15,0x59,0x83,0x65,0x9e,0x8a,0x0a,0x6c,0xa0,0x02,0xbc,0x42,0xfa,0xd5,0xa4,0x5a,0xf8,0xe0,0x28,0x19,0x23,0xf4,},{0xe6,0x32,0xf4,0xdc,0x99,0x42,0x31,0xcc,0x17,0x90,0xc2,0x1a,0xfa,0xda,0xa9,0x77,0xa5,0x89,0xb0,0xeb,0x0d,0xa1,0x9f,0xcb,0x27,0x92,0x91,0x1b,0x15,0xec,0xf8,0xaf,},{0x75,0x46,0x1f,0x99,0x65,0x0c,0x03,0x68,0x05,0x81,0x13,0xa1,0x5b,0xa1,0x6b,0xd2,0x33,0x7b,0x2e,0x63,0x3d,0xa3,0x81,0x12,0x87,0x8c,0x48,0x34,0xfa,0xc9,0xba,0x2e,0x30,0x7c,0x86,0x6c,0x02,0xaf,0x79,0xbe,0xa3,0x36,0x59,0x61,0x4c,0xbb,0x44,0x65,0xc5,0x7e,0xc3,0xef,0xfd,0x4c,0x47,0x8a,0xe3,0x8a,0x34,0xa0,0x5c,0xf1,0xed,0x07,},"\x79\x6b\xc8\x36\x1c\x6e\x8e\xec\x39\x83\x8b\x24\xf5\x39\x71\xe8\x20\xf8\x23\x61\xe0\x51\x0e\xb4\xde\xf1\xdb\x25\x12\x38\x7d\x6b\xf3\x5b\xbd\xfa\x31\x88\x79\x20\x94\x35\xd6\x88\x7b\x14\x10\xb3\xeb\xc1\x45\x5f\x91\xf9\x85\xe0\xfa\xb1\xce\x1c\x50\x5c\x45\x55\x76\xbc\xa0\x35\x39\xd0\x48\xad\x3a\x0e\xd1\xf1\x1c\x73\xba\xc6\x80\x9e\x2e\xa1\x47\x97\x5b\xee\x27\xc6\x52\x61\xac\xa1\x17\xdf\x0f\xae\x70\x08\xe2\xc3\xc1\x30\xbe\xc5\x53\x3a\xb8\x93\x51\xc2\x14\x0c\x9d\x1a\x62\xbd\xf6\x88\x62\x97\x87\xf9\x54\xe1\xc6\x10\xcb\xb7\x5e\xdb\x86\x20\x9d\x7c\x35\x7c\xd0\x6e\xf4\x19\x31\xdd\x5d\xfd\x1c\x7d\x40\x7f\xa4\xee\x1e\xf2\x93\x93\xbe\xab\x57\x13\x17\x38\x02\xcc\xe2\xd5\x62\x29\xcf\xa7\x6b\x60\x16\x62\xc4\xd9\xa8\x4a\x49\x36\xc5\x2a\xbb\x19\x81\x37\x8b\x71\x7e\xb5\x5c\xb6\x04\xa6\x8d\x34\xf0\x3b\x21\x9f\x32\x22\x6c\xa0\xe6\x69\x34\x8a\x2d\x8d\x24\x53\x93\x0e\xb6\xe9\xc2\xbf\x66\xfa\x4e\x92\xc7\x51\x36\xe1\x48\xcd\xb0\x34\x13\x0d\x3f\x64\x63\x82\xe1\xc7\x15\x79\xac\x70"}, +{{0x8b,0x2f,0x06,0x14,0x1e,0x40,0x11,0x63,0xf9,0x0f,0x67,0x4b,0x04,0xdc,0x90,0xdc,0xb6,0xdd,0x33,0x86,0x41,0x93,0x39,0x66,0x2e,0xcb,0x0d,0xff,0xad,0xf2,0x50,0x0b,},{0x54,0xda,0x93,0x4a,0x65,0x91,0x19,0x19,0x85,0x53,0xfd,0x45,0x66,0xb6,0x60,0xd8,0xd6,0x10,0xad,0xc3,0x29,0x0c,0xb8,0x48,0x29,0xc8,0x94,0x14,0x8c,0xf3,0xf6,0x7e,},{0xd6,0x8e,0x37,0x50,0xdc,0x56,0x43,0x23,0x97,0x40,0x1c,0x98,0xff,0x15,0x29,0xdb,0x9e,0xd4,0x8f,0xea,0x24,0x6d,0xd4,0xed,0x38,0x3e,0xc7,0x4c,0x1a,0x46,0x3a,0xeb,0x78,0x4c,0x87,0xb1,0xfd,0xa8,0xbb,0xce,0x97,0x0f,0xc9,0x7a,0xa9,0x80,0x7d,0xdb,0xe9,0x5d,0x41,0xfb,0x02,0x2e,0xa6,0x8c,0x1e,0x31,0x16,0x54,0xfa,0x1d,0xa2,0x07,},"\x1d\xeb\x25\xd4\x34\x58\x69\x03\x23\xa7\xd2\x6a\x26\x69\x50\x90\x99\x34\x74\xf4\x67\xc6\xfd\xe5\xdd\xb3\x4d\xa9\x45\xbe\x3c\xea\x2f\x6b\x75\x65\x2a\xe2\x1c\xbc\x4f\xd2\x27\x63\xa1\xb4\x55\x83\xe1\xc3\xe8\x8b\xbb\x5f\xea\x20\x49\xb7\x33\x6c\x91\x15\x99\x88\xc0\x15\x26\x82\x4c\xa3\xbe\xf1\x6b\x36\x2b\x92\x02\xb8\xb9\x75\x41\x85\xbd\x61\xbe\xa8\xf5\x39\xaa\xdf\x4a\x1a\xb1\x35\xfb\xc3\x1d\x2a\x8e\x33\x17\x80\x73\x10\x6c\xbb\xc0\x2d\x4c\xd0\xd3\xc8\xfe\xaa\x8e\xb7\x33\x08\x43\x56\x25\x17\x95\xaf\xbd\x78\xac\x3c\x4f\x8a\x3b\xa1\x9a\xed\x75\x5c\x64\x6f\x35\x56\x9c\x7a\x6c\x67\x5b\x6d\x69\x18\xe8\x34\x96\x9a\xca\x03\xf7\x1a\x2e\x72\xcc\xb1\x70\x03\xbb\x75\xb6\x2e\x85\x2a\xaf\x58\xb3\xba\xea\x89\xbc\xd6\x4a\x32\xeb\x14\xa6\xb9\xe1\x0d\xe4\x89\x71\xe5\x3d\x0e\x9a\xc9\x9a\x78\xf4\x2d\xe0\x38\x2e\xf0\xe8\x0e\xd3\xcf\xa3\x43\xf3\x5e\x4a\x99\x83\xb9\xae\xed\x98\x6d\x3a\x57\xf4\x7e\x5e\x46\xd4\x0e\x9d\x67\x73\x02\x80\x9a\x2d\x37\xe4\xec\x01\x1f\x05\x1b\x4d\x03\x1e\xd6\x00"}, +{{0xdc,0x64,0x9f,0xbb,0x1b,0xee,0x0a,0x44,0x81,0x4d,0x6d,0x9e,0x90,0x80,0xd5,0xd9,0x0c,0x1f,0xc1,0x73,0xab,0x5f,0xef,0xed,0x82,0x6a,0x74,0x72,0x3a,0x77,0x4e,0x0a,},{0x02,0x14,0xc8,0x9f,0x38,0x67,0xad,0x2e,0x88,0x70,0xe5,0x0f,0x8c,0x2a,0x62,0x54,0x98,0x6d,0x9c,0x22,0x0e,0x33,0x38,0x41,0x13,0x00,0xcd,0x9c,0x64,0x04,0xd4,0xb1,},{0x0e,0x0c,0x5e,0x4e,0x18,0x43,0x75,0xda,0x4e,0xf7,0xe2,0xa2,0xe4,0x88,0x80,0x50,0xcd,0x84,0xe2,0xfe,0x21,0xd0,0x8e,0x84,0xa8,0x52,0xdb,0x2b,0xe3,0xfb,0xc3,0x72,0xc4,0x72,0xde,0x09,0x54,0xdc,0xd1,0xdc,0x11,0xae,0xc4,0x93,0xc5,0x69,0xf4,0x0f,0xc6,0xf7,0x7f,0x03,0xee,0x52,0x4f,0xb0,0x6e,0xc4,0x0f,0xaa,0x1d,0x6c,0xc1,0x0f,},"\x32\x87\x00\xa8\xae\x58\x1c\x1e\xdc\x4e\x2c\x00\xc7\x8b\xf4\x60\x60\x97\xf9\xbd\x75\xaa\xde\x20\x5a\x24\x3c\x5f\xd7\x43\x4d\x62\x22\xda\x93\x7e\x28\x81\xa2\xe3\xc5\x74\x35\x6d\x4d\x56\x79\x30\x1d\xa9\x9e\x11\xcf\x74\x9c\x27\x92\x1c\x8c\xaa\x2a\xb2\xa5\x64\xd8\x7c\x5d\xf8\xec\xf1\xa7\x2b\x68\x01\x84\x82\x4f\x69\x86\x02\x2e\x3f\xc9\x8b\xd2\xa2\x1c\x34\x55\xab\xf1\x15\x49\x54\xfb\x30\xc8\x98\x82\x94\x7b\x02\xf3\x5a\xf7\xb1\xbf\xad\x05\x23\x7d\x24\x2e\x2b\x74\x83\x2f\xc5\x36\x19\x6f\x2e\x59\xd1\xac\xd0\xc1\xdb\x6f\x19\x43\xd0\xf6\x04\x3b\xbd\x6a\x76\x90\x83\xed\x66\xba\x0e\x05\xa5\x0f\xeb\x0a\xcf\x72\xb6\xc1\x6b\xa9\xaf\x03\x9a\xfb\x7f\xe2\xa4\xaa\xeb\x4d\x06\x18\x1c\x5a\x18\x78\x68\x9e\x67\xa3\xf5\xd0\xad\x39\xe7\x94\xd6\x23\x9a\x7e\x0a\x12\xce\x82\x0c\x5b\xe6\x0f\xd5\xf1\xdd\x79\x70\x2f\x49\xd0\x2b\x79\x75\x5f\xe8\x73\xf5\x78\x5c\x72\xf7\x46\x25\xcd\x7e\x24\x28\x26\x25\x97\xd3\x14\x82\xc2\xc0\x50\x88\x01\xfd\x96\x31\x9d\x61\xb9\x1b\xa2\x53\xa5\xe7\x22\xf4\x14\xcf"}, +{{0x39,0xb8,0x06,0x2d,0xa4,0x3e,0x64,0xe1,0x67,0x67,0x65,0xd6,0x2c,0x7f,0xb8,0xe0,0xa9,0x9c,0x4f,0xd4,0x17,0xd6,0xf7,0xe3,0x31,0x9b,0xb1,0x30,0x44,0x20,0x5f,0x3b,},{0x62,0x27,0xce,0xfe,0x88,0xea,0x4f,0xb2,0x7b,0x37,0xb5,0xf7,0x97,0x77,0x8b,0xd7,0x2f,0xda,0xfe,0xad,0xcc,0xd9,0xae,0xb6,0x7a,0xd4,0x37,0xce,0x08,0xfb,0xa6,0xa8,},{0xc5,0xf6,0x26,0x49,0x0c,0x0e,0xf4,0xe1,0xef,0xc3,0xed,0xeb,0x0c,0xbc,0x3f,0x7d,0xe2,0x67,0x05,0x7f,0xb7,0xb6,0xeb,0x8f,0x0c,0x81,0x35,0x84,0x96,0x5b,0xc5,0xc4,0x21,0xfe,0xed,0xf5,0x42,0x41,0xca,0xe0,0x01,0xec,0x6d,0x5e,0x25,0xc9,0xb1,0xfb,0xa0,0x38,0x5e,0x5d,0xbd,0x95,0xa0,0x6e,0xc1,0xd8,0xae,0x51,0x91,0x44,0x96,0x0d,},"\x74\x0a\xf6\x79\xe3\x06\x9f\xad\x05\x9f\xa4\x82\x5f\xa4\x1c\x59\xfb\xd4\x84\xaa\x64\x93\x03\xc2\x7c\x4f\x7a\x94\x71\x1c\x5b\x71\x3b\x2a\x6b\x89\x87\x85\x9e\x22\x71\xa6\xa7\x1e\xb0\xb4\xa1\x5a\xbd\xe4\xf5\x16\x8f\x6c\xb9\xdb\xdc\x6a\x27\xa2\xa1\x3d\x52\xc9\x72\x08\x96\xa1\xf4\xce\x3a\x53\x45\xee\x79\x3b\x6c\xc3\xad\x80\xd7\xd5\x81\x63\xd5\x45\x5b\x9c\xbd\x07\x3e\x2b\x7a\xdb\xff\x95\x59\x0c\x71\x72\x27\x1b\xd9\x1f\xef\xdb\xd0\x16\x57\xee\x17\x50\x65\x10\x36\xcd\xc3\x56\x0b\x44\x4c\xa2\x18\x4b\xf4\xf3\xea\x89\xfc\x97\x3a\xab\x6f\xb4\xa8\xee\x57\x04\xbb\xe5\xa7\x1c\x99\xfa\x3b\x5e\xf0\xd0\x39\x62\x49\x75\x82\x97\x69\x9a\xe2\x02\xb8\x19\x69\x0d\xc7\xac\x46\x92\x77\x03\x46\x90\x78\x45\xe2\x21\x0d\x53\x63\xad\xee\xc0\x3f\x0f\xc7\x76\x1b\x7e\x0e\xc0\xfe\xa1\xbc\xf6\xb0\x4f\xc5\x4b\x3e\x4c\x40\xd1\x9b\x8f\xa6\x49\xac\x84\x79\xe8\xf8\x07\x30\xc0\xc9\x4e\x9f\x4a\x1a\xd5\x06\xf2\xbc\xab\x0c\x49\x54\x0f\x6d\xec\xaa\x77\xb3\xd6\x57\xdc\x38\xa0\x2b\x28\xa9\x77\xec\xe4\x82\x54\x5a"}, +{{0x52,0xf4,0x67,0x5d,0x8c,0xcd,0x0e,0xb9,0x09,0xdf,0x0a,0x51,0x66,0x48,0xdb,0x26,0xfa,0x03,0x3b,0xa4,0x1d,0x43,0xfc,0x38,0x45,0x89,0x6d,0x45,0x6e,0x14,0x26,0x5f,},{0xf3,0x9e,0x7d,0xaf,0xc9,0x7b,0x0a,0x84,0xdc,0xbf,0x7f,0xa1,0x4a,0x94,0x03,0xee,0x1f,0xa9,0x2b,0x85,0xe5,0xa7,0xe5,0xd0,0x5f,0x03,0x1b,0x44,0xdd,0xf1,0xf7,0x94,},{0x4b,0xf6,0x68,0x82,0x7a,0x72,0x0a,0xf6,0x88,0x98,0xa0,0x6e,0xa7,0xb4,0x45,0x45,0xa3,0x4c,0xa8,0x96,0xec,0xf3,0x11,0xfe,0xea,0x47,0xe0,0x68,0x6d,0x91,0x1f,0xad,0xaa,0x03,0x11,0x89,0x97,0x15,0x3c,0x65,0x36,0x1f,0xea,0x15,0xde,0x9b,0xb8,0x91,0xb8,0x90,0x98,0x72,0x04,0x55,0x08,0xff,0xad,0x0c,0xd9,0xea,0xb2,0x1a,0x97,0x02,},"\x74\x42\x71\x10\x85\x7c\xb4\xaf\x0a\x33\x42\xc2\xb5\x29\x97\xbc\xe1\xa0\xdb\x64\x05\xc7\x4e\x96\x51\xc5\xb8\x59\x79\xac\xb0\x71\xe5\x67\xfe\x70\x41\x2c\x4e\x0d\x8c\x9f\xa4\x21\x91\x4f\x6a\x62\xf2\xae\x42\x0b\x7b\x2f\x4c\xf8\x0c\x90\x57\x42\x21\x22\x22\x88\xb6\x58\x67\xea\xa6\x6e\x7e\x0a\x05\x57\xa2\x6c\x54\x9f\x9a\x7a\x4e\x70\x83\x8b\xa4\x07\x4b\x4c\xd7\xa9\xd7\x58\xb3\x78\xb8\x8d\xd4\x94\x41\xdf\x80\x2a\x44\x4d\xcb\xc3\x06\x24\x93\x3b\x59\x92\x2f\x33\xc2\x0f\x01\x9f\xe7\x8e\xe2\x4b\x8f\xba\x79\xa6\x82\xf3\x88\x50\x5a\xc9\xc9\x7f\x4e\xb8\x7c\x61\x18\x80\x02\x6b\x4c\x23\x30\x6b\x86\x51\x73\xf5\xd7\x16\xab\xc6\xcd\x9a\x99\x06\xdb\x34\x30\x13\x6f\x75\x41\x29\xc4\x43\xb2\x0c\x42\xbe\x2f\xbc\xbc\xd4\x40\x34\xd7\x14\xf5\x8a\x4b\xa8\xe7\x56\x60\x7a\x02\xb6\x08\xef\x49\x64\x8f\x2a\xd0\xce\xa9\x9e\x7a\xb3\x0a\x8d\xd7\x81\x40\x04\xf7\x25\xf4\x93\x01\xd7\xb3\x04\xdc\xda\x62\x5c\x29\x6d\x92\x8c\xb5\x81\x73\x6a\xb7\x39\xc8\x6b\x46\x92\x41\xa8\x25\x93\x51\xfd\x37\xb4\x78\x0a\x99\x93"}, +{{0xba,0xd7,0x3c,0x9f,0xda,0x4c,0xeb,0x9d,0xa6,0xc7,0x01,0xc2,0xa6,0xe2,0xef,0xc0,0x46,0x7a,0xfa,0x0a,0x74,0xf8,0x75,0x0c,0x52,0xcf,0x1f,0xd4,0xc8,0xe7,0x48,0x9a,},{0xbb,0x0f,0x02,0x7a,0x90,0x35,0x37,0x6e,0x1a,0xa3,0x20,0x6c,0x3d,0x77,0x44,0x75,0xe3,0x51,0xf5,0x76,0x7e,0xf8,0x6e,0xf4,0x8a,0x72,0xc0,0x37,0xc2,0x4c,0xce,0x62,},{0x19,0x7d,0x6b,0x6c,0xc8,0x8a,0x98,0xc0,0x6d,0xfc,0xa0,0xc0,0x12,0x25,0xed,0xfe,0x38,0xa0,0xb2,0x28,0x9f,0x29,0xf8,0xa4,0x4e,0xc0,0x81,0x6a,0x95,0x2d,0x58,0x5e,0x2d,0x59,0xb5,0xb0,0x8d,0xe1,0x00,0xc0,0x60,0x62,0x96,0xcc,0xf5,0xe9,0x2a,0x99,0xe0,0x93,0x62,0x31,0x44,0xb8,0xb2,0x2d,0xb8,0x7d,0x92,0x92,0x25,0x54,0x60,0x05,},"\x74\xb9\x66\xcb\x78\x07\x71\xae\xe6\x3d\x73\x4d\xf3\x75\x67\x02\xd1\xd5\xfd\xed\xdf\x32\x13\x6c\x63\x58\xb8\x36\x31\x8a\x4f\x98\x4f\xe7\x1e\x77\x16\xad\xdd\xbd\x64\x9e\xba\x44\xcd\x42\x82\xe0\x05\x5d\x8c\x1e\xd2\xd3\x51\x23\xd6\x6e\x5a\x98\xf1\xc0\x83\x8d\xed\x56\x3b\x9a\x20\xeb\x80\x07\x53\x8f\xc7\xb0\x71\x3e\x7e\x48\x5e\x3c\x28\xf6\xeb\xc4\x21\xa2\x9d\xce\x25\x24\xdb\x7f\x29\x20\x57\x61\x03\x6a\xda\x62\xe5\xb0\xb7\xd5\xb7\xf2\x94\xff\x17\xf3\x38\x23\x2f\xa5\xfd\x42\xb6\xf7\x25\x33\x04\x09\x2d\x84\x8f\x50\x73\x52\x48\x59\x5d\xa0\xf7\xef\x28\xe5\x68\xe9\x91\x6b\xfc\x56\xd7\xed\x0d\x81\x1b\x59\xd5\xd8\x91\xae\x43\xe1\xb1\x98\x07\x13\x06\xbf\x52\x5c\x67\x8c\x63\x43\x99\x80\x05\xfb\xb7\x86\x9d\x1c\x40\xf8\xca\xc8\x07\xfe\x2e\xf0\x3f\x3d\x5b\x93\x3f\x58\x97\x8e\xf2\x90\x6f\xcc\xf7\x44\x4a\x29\x36\xe6\x3d\x92\x8c\x69\x09\x26\xc9\xc9\x94\xed\x3d\x66\x62\x63\xe9\x56\xfd\xfe\xa2\x77\x64\xbc\x5f\x74\x12\x5b\xc4\x6b\xc1\x02\xdd\x3e\x5f\xf9\x3b\x5e\x12\x3e\x4b\x38\xbd\xef\x69\x7e\x15"}, +{{0x70,0x73,0x27,0xa4,0x31,0xdb,0xa7,0x76,0x39,0xb3,0x96,0x6b,0x2b,0xc0,0x95,0xf8,0xee,0xdf,0x57,0xf7,0xa2,0x00,0xe3,0xb0,0x07,0x7c,0xe4,0x20,0x38,0x9c,0x92,0xfe,},{0xee,0x24,0x96,0x91,0x08,0x64,0x18,0x9f,0xda,0xa3,0xc7,0x75,0x7e,0xb3,0xcd,0xa9,0xab,0x1e,0x70,0xfc,0x9e,0x7f,0x71,0xa3,0x8a,0x0b,0xfc,0x84,0x59,0x31,0xc9,0x5a,},{0xfb,0x99,0x02,0x9f,0xec,0xa3,0x87,0xa5,0xd7,0x65,0x96,0x1e,0x36,0x1d,0x71,0x72,0xb9,0x8b,0x7e,0x0f,0x11,0x29,0x0b,0xb1,0xe5,0xb5,0x7b,0x51,0xbc,0x21,0x23,0xd0,0xbc,0xe2,0x90,0x20,0x39,0x2a,0x4f,0xec,0x9a,0xe6,0xa7,0x2c,0x4c,0x38,0x6c,0xea,0x18,0x57,0xcb,0x8f,0x9c,0x50,0xaa,0x9a,0x76,0xd7,0xf1,0x68,0x7f,0xcf,0x29,0x00,},"\x32\xef\x31\xb6\x4e\xee\x70\x0f\xca\x2a\xb2\x1a\x26\x7f\x8d\x9d\x3b\xdc\x68\x9c\x75\x38\xfe\x95\x9b\xf7\x13\xfa\x99\x5d\xb2\xc0\xad\x36\xdd\xe4\x30\xa8\x41\x7d\x43\x7b\x72\xc7\x4e\x26\xdb\xe3\x1d\x93\x70\x1d\x46\x17\xfe\x51\x82\x5c\xff\x7a\x54\x4f\xc9\xf4\x4e\x43\x45\xe1\x4b\x4b\x11\xe1\x5f\x26\xff\xc2\xaf\x80\x35\xf3\xf9\x70\xe4\xdd\xa4\x4c\x0e\xbc\x03\x63\xc2\xb5\x6f\xde\x21\x86\x63\xbf\x78\x83\x90\x92\x53\x8f\xc2\xf3\x91\x53\xd4\xeb\x29\xda\x0c\x1a\x08\xaa\x96\x66\x01\xcc\x68\xca\x96\xe9\x93\xb0\x1b\x17\x3a\x26\x1b\x2e\xf3\x27\x65\x03\x82\xf5\x68\xfe\x94\x48\x55\xb0\xf4\xfd\x9d\x15\xe7\x52\xac\x74\xdc\xfd\x37\xb3\x78\x6f\xff\xce\xf2\x33\x39\xc2\x1e\x92\x70\xdc\xe8\x89\x1d\xd5\xee\xeb\xa9\x60\x8f\xdc\x7b\x6f\xbc\xc9\x9f\xa1\xb5\x90\x3d\xaa\x09\x68\xe1\xb6\x91\xd1\x9d\x06\xf2\x15\xde\xd0\x47\xef\x9d\x76\x61\x0f\x5d\xe2\x20\xf5\x04\x1b\x31\x3f\xaf\x9e\x96\xc9\xfd\x7d\xb5\x4b\x52\x25\x72\x6a\xf4\x35\xf9\xcb\xd9\xfd\x87\xab\x40\xce\x8f\x2c\x69\x40\xb5\x5f\x0f\xaa\xe8\x78\x50\xca"}, +{{0x6a,0xa5,0xc9,0xf0,0x08,0xf9,0x90,0x47,0x3b,0xa4,0xa6,0x28,0x6a,0x41,0x66,0x14,0x02,0x66,0x61,0xf1,0x1e,0x1a,0x24,0xef,0xa8,0x1a,0xc3,0x58,0x52,0xd1,0xd0,0x70,},{0x60,0x5a,0xc9,0xb4,0xdb,0xdd,0x50,0x33,0xd6,0xc8,0x28,0xbf,0xaf,0xa9,0x3c,0x00,0x39,0x44,0x0a,0xa1,0x1c,0xa7,0x24,0xae,0x83,0x40,0x43,0xe0,0x7b,0xd0,0x32,0xd5,},{0x97,0x56,0x30,0x3b,0x90,0x65,0x5e,0x93,0x52,0x51,0x03,0x2a,0xb1,0x9c,0xfc,0x95,0xca,0x1c,0x2a,0x2c,0x3e,0xa2,0x8b,0x03,0x3b,0xd4,0x70,0x66,0xcb,0xd4,0xc7,0xd8,0x98,0x2a,0x8b,0x98,0x86,0xf1,0xb9,0xcd,0x02,0xe8,0x8a,0x65,0x56,0x4d,0xa8,0xdc,0xc3,0x4f,0x30,0x8b,0xa9,0xf1,0x01,0x44,0xba,0x46,0x9c,0x2e,0xfa,0x49,0xe0,0x04,},"\xb5\x16\x5d\x39\x63\xf6\xe6\xf9\xea\x56\x57\xe9\xf0\x7f\xf3\xa3\x21\xeb\x33\x8f\x9a\x8c\x3d\x3c\x42\x30\x6b\x2b\x27\x89\x78\xb3\x1c\x62\x3a\x63\x1b\xe3\xb0\x4c\x41\xed\xfd\xed\xdf\x53\x8e\x1b\x76\x5b\xc8\x78\x54\x01\xc1\xaf\x29\xd0\x46\x7a\x64\x41\x1c\x49\x73\x95\xd7\x55\xdc\xa0\x3a\xe3\x27\x2f\x4b\xc1\xfb\x19\x18\xdc\xc1\xed\x6f\x04\xd6\x49\x84\x04\xa8\xce\x14\x09\xd4\x47\xf5\x70\xa4\x35\x95\x22\xcc\x54\x62\x92\x02\xeb\xe5\x07\xab\x69\x38\x43\x14\x1b\xd5\xea\x05\x73\xb2\x0f\x32\x1a\x48\x3f\xf3\x83\xa4\x68\x97\xf5\x92\x6f\xe0\xb8\xaf\xc2\x55\x72\x70\x7b\x63\xee\xed\x28\x35\x32\x92\x8a\x41\x44\x19\x64\x97\x94\x2c\x57\x2a\xc5\x47\x60\x51\x39\x25\x6b\x0a\xa0\xea\xf0\x4d\xb1\xa2\x56\x01\x2e\xd4\x53\xb1\x73\xee\x19\xad\x6e\x9b\x1a\xf3\xf4\x5f\xf3\x04\x4a\x64\x1f\x8c\x8e\xb0\xac\x7b\xb4\x5a\xbb\xde\xd4\x72\x86\xb2\xa0\x69\xd3\x90\x86\x94\xee\x06\xf2\xfb\xd0\xef\x60\x5a\x79\x11\x02\x6e\xa9\xea\x3c\x49\x13\xf3\x8c\x04\xd8\xb6\x95\x65\xa7\x02\x78\x67\xab\x30\x92\xd0\x5f\x4c\xfb\x18\xfc\x7c"}, +{{0x8e,0xfb,0x8b,0x79,0x74,0x2b,0xe2,0x1e,0x6d,0x31,0xde,0x67,0x8b,0xc8,0x14,0x50,0xba,0x86,0x21,0x08,0x2c,0xd6,0xf0,0x00,0x3e,0x22,0x86,0x1e,0x22,0x91,0xc4,0x81,},{0x33,0x38,0x1e,0x35,0x6c,0x4f,0xd3,0x86,0xa3,0xf7,0xb9,0x69,0xaf,0xd9,0xf5,0xc0,0x0d,0x20,0x67,0xb6,0x98,0xb3,0xf1,0xf0,0x0f,0x37,0x84,0x20,0x2d,0x30,0x84,0xcf,},{0x92,0x30,0x05,0xcb,0x48,0x48,0x40,0x2a,0xa8,0xf9,0xd5,0xda,0x74,0x03,0x0b,0x00,0x94,0x44,0x92,0x4c,0x21,0x4a,0xd6,0x00,0xdd,0xba,0xb4,0xc1,0x53,0xa6,0xff,0x02,0x2b,0x53,0xcf,0x63,0x64,0xcd,0x7e,0xe9,0x9b,0xef,0x34,0xfe,0x14,0x4d,0xa9,0x64,0xed,0xfc,0x38,0xa0,0xba,0x63,0x33,0x12,0x65,0x0e,0xbf,0x0e,0x55,0xa0,0x60,0x09,},"\x6b\x75\x03\x25\xd3\xa0\xf0\x8a\x14\x77\x00\xb5\x1a\x9b\x37\x25\x57\x10\x94\x81\x8e\xd6\x9d\x1f\x76\x10\x13\xeb\x86\xf3\x23\xf7\x3c\x49\xf5\xe4\x39\x87\x7c\x27\x83\xb3\x36\xd1\xf1\xa6\x74\xef\x3e\x43\x1f\xc1\xae\x01\x80\x08\x2d\xf5\xfc\xa6\x9f\x84\x81\x39\xfe\x6a\xb6\x73\x9a\x05\x92\xeb\xd6\xd4\x70\x5c\x7f\x01\x36\xb2\x21\x89\xa1\x1d\x60\xd4\xd3\xc9\xbc\x80\xfe\x7d\x7c\x00\x95\x2d\x57\x42\xf9\xc0\xc2\x12\x1f\xe7\x92\xdf\x13\x3f\x22\x1d\xb9\x91\xfc\x96\x0e\xe6\x4b\x9d\x32\xe0\x17\x8e\x54\x2b\xce\x8e\xfa\x8d\x03\xac\x80\x26\xcd\x77\xba\x8b\xf0\xb2\x42\x15\xb9\xfa\xed\x2e\xae\xc9\x20\xe9\x25\xd5\xec\x46\xff\xf6\xbd\xe7\x25\xe9\x1c\x82\x80\xe4\xad\xa2\x32\xa5\x43\x3a\xe9\x68\x0e\xbb\x53\xeb\x55\x55\x31\x47\xc9\x33\x70\x57\x48\x54\x89\x61\x54\x51\x42\x99\xc0\x93\x21\x9a\x11\x1d\xca\x4e\x63\x7a\xd5\x00\x13\x38\xc6\xd4\xd5\xee\x90\x98\xc6\x58\x32\xf7\xaf\x83\x5b\xcb\x62\x21\x28\x42\x30\x36\xc7\x9a\x57\x37\x73\x8a\x75\x39\xf8\xd4\xa6\xb8\xb2\x21\xb5\x6d\x14\x01\xae\xb7\x4d\x45\x71\xbc\x00\x9d"}, +{{0xed,0x04,0x6d,0x68,0x8b,0x2b,0x0a,0x1b,0xc3,0xda,0xf2,0x11,0x9d,0xd3,0x21,0xa6,0x07,0xb1,0x6d,0x2a,0x2d,0x1d,0x96,0x3a,0xdd,0x12,0x09,0xc6,0x65,0xb5,0xcc,0xba,},{0x87,0x34,0xf1,0xff,0xcb,0xd7,0x1c,0xfd,0xe2,0x90,0x01,0x7e,0xa6,0x25,0x3e,0x58,0x0d,0x59,0xe6,0x5b,0x54,0x1b,0x46,0x52,0x1f,0x5e,0x5e,0xc1,0x45,0x1e,0xae,0xc6,},{0x72,0x1b,0xfd,0x47,0x76,0xcf,0xba,0x13,0x33,0x0f,0xd3,0x72,0x69,0xe9,0x79,0xc1,0xd7,0xb6,0xce,0x54,0xa5,0x1b,0x82,0xf4,0x56,0xe1,0x37,0x37,0x8e,0x58,0x2f,0x19,0x2a,0x12,0x08,0x9d,0xa5,0xab,0xa7,0x6a,0x7b,0x16,0x18,0x13,0xdc,0xe5,0x6b,0x72,0x89,0x2a,0x35,0x33,0x0c,0x94,0xf7,0xff,0x21,0xd0,0x9c,0xf0,0x9e,0x55,0x35,0x04,},"\xb9\xcc\x90\xfd\x8d\xe2\xa1\x41\xf9\x51\x16\xdb\x3b\x04\xbe\x83\xe9\x85\x22\x59\x7e\xc2\x17\x49\x64\x24\x51\x80\xb9\xa4\x73\x76\x7d\x6d\x47\x0a\x21\x7d\xb5\xff\x5a\x1a\xb7\x77\xe1\xe2\x8a\x0b\x16\x97\x5e\x2b\xac\xb8\x73\x02\x04\x44\xb4\x7e\xd8\x32\x64\x21\xb9\x0e\xbb\x50\x36\x88\xf0\x90\xc1\x1b\x3b\x13\x61\x7c\x5c\x50\x52\xc2\x97\xa4\x1e\x28\x93\x77\x5e\x34\xd5\x9a\xda\x49\xd9\x94\xc0\xe4\xa9\xf5\x22\x0e\x9f\x03\x15\xa6\x77\x05\xa3\xec\x08\xaf\x0d\xc7\x24\xb5\xcf\x67\xff\x34\xfa\xda\x8b\xa7\x10\x9e\xd2\xb5\xa8\x90\x7b\xb4\x03\xfb\x1a\x83\x8b\x4b\x05\x9f\x18\xc7\x92\xd7\xbf\xec\x05\xde\xe0\xc9\xcb\xbf\x17\x53\x40\x9d\x7d\xb3\xac\xea\xf4\x7b\x4c\x61\x39\x84\x97\xb0\xec\xa6\xc1\xf8\xac\x08\xa7\xea\x1e\xb9\xc4\x0b\xc4\xe9\x2e\x88\x82\x12\xf7\xd9\xee\x14\xfd\xb7\x31\x58\x16\x09\x44\xff\x9b\xcd\xfe\xf1\xa7\x46\x9c\xc7\x0f\x94\x74\xe5\xf2\x4d\xff\xfe\xa5\x85\xf0\x9e\xaa\xab\x4b\xe2\xaf\xeb\xbe\x8e\x6c\xf8\x6d\x35\x68\x0d\xc5\xd1\xb9\x29\x13\xe8\x48\x25\x6e\xc7\x36\x31\x6f\xd0\xa2\x14\x20\x63\xb0"}, +{{0x76,0xac,0x8e,0x57,0x0a,0x39,0xb3,0xa0,0x23,0x2c,0x45,0x49,0x75,0x37,0xfb,0x21,0x55,0xac,0xec,0x36,0x17,0x86,0x5e,0xd1,0xdf,0x21,0x0f,0x00,0xb4,0x9d,0x1b,0x8d,},{0x31,0x2a,0x3a,0xd8,0x99,0xae,0x6a,0x25,0x50,0x7a,0xe6,0xe4,0x52,0x4e,0x10,0xb6,0x3a,0x6e,0x7a,0xe5,0x3d,0x9c,0xff,0xd3,0x9c,0xf2,0x85,0x21,0xd9,0x35,0x33,0xd6,},{0xcf,0x03,0xf5,0x25,0x91,0x3c,0x44,0x30,0x3b,0x2f,0x80,0x07,0x93,0x93,0xc2,0x1c,0x11,0x58,0x14,0x6e,0xcf,0x99,0x63,0x6f,0x5d,0x97,0xad,0xfd,0xd9,0xf3,0x58,0x39,0x80,0x4c,0x23,0x80,0x4c,0xbf,0x1e,0x55,0x3c,0xfd,0x4b,0x73,0xf6,0x89,0xa9,0x14,0x3a,0xec,0x29,0x8f,0x82,0x76,0xe1,0xe4,0xee,0x08,0x91,0xf1,0xba,0x75,0xde,0x04,},"\x53\xce\xd9\xdb\x2b\x47\x9e\x59\xd3\xed\x64\x3f\x7c\xc3\x78\x4c\x24\xb8\xbd\x4c\x63\x20\x6c\x72\xe2\x3f\xa8\x50\x02\x88\x99\xa4\x1c\xe1\xa8\xbd\xc0\x03\xf1\x2b\x7c\x29\x97\x2c\x9a\x08\xbc\xd2\x31\xfe\x0e\x1a\x0f\xef\x0b\xaf\xbf\xa4\xe0\xe0\x27\xd7\x20\x04\x07\x5b\xa3\x7d\x49\x0e\xb9\x96\x4e\x78\x3b\xb9\x8f\x9e\x50\x3e\x9c\x1f\xd3\xd2\x3f\xb0\x01\x7c\xc7\xc7\xa9\xf8\x6d\x17\x1f\x04\x1e\x23\x55\xd8\xc5\xe6\x22\x9d\x34\xc7\xee\xac\xb6\x35\x8c\xf3\x06\x0d\x5d\x26\x5b\xae\x20\x04\xa5\x58\x87\x86\x59\xa3\x0d\xfe\xd5\xf2\xec\x78\x8b\x4e\x14\x39\x7b\x5d\x00\xc2\x9d\xb5\xd4\xeb\xf1\x66\x39\xa8\xdf\x29\x2a\x3d\x24\xf6\x98\x3c\xbc\xa7\x60\xd9\x03\xe9\x76\xf5\xb6\x98\x64\x2b\xa1\xfe\xd4\x9e\x79\xc3\x8f\x4b\xb3\x94\x6e\xfc\xcc\x9d\x6a\xef\xad\x33\x6d\x55\x8f\x78\xe4\xf2\x05\x42\x2e\x10\x38\x4a\x4e\x53\x1e\x75\x80\x7e\xfb\x38\x9d\x2a\xf4\xca\xb4\x38\x25\xfb\x87\xf1\x96\xa9\x08\x07\x69\xfe\x75\x85\x78\x29\x70\xa6\x91\x8a\xff\xe1\x0d\x20\xd6\x29\xb7\x05\x84\x55\x97\x41\x8d\x69\x9d\xe3\xf1\xde\x85\x4f\x94\xbd"}, +{{0xf6,0x4a,0x66,0xba,0x0f,0x08,0x19,0xf3,0x00,0x14,0x16,0xc2,0x20,0xbf,0x52,0xd8,0x60,0x13,0x0a,0x19,0x76,0x4a,0xa8,0xab,0x38,0xd1,0x5b,0x2a,0xa7,0x5a,0xc0,0x22,},{0x81,0x25,0x25,0x3c,0xd3,0x37,0xe0,0x0d,0x45,0xb4,0x50,0x79,0xb5,0x85,0x34,0x95,0x61,0xe5,0xf5,0x42,0xa8,0x1f,0x6d,0x2f,0xcf,0xd9,0x85,0xc1,0x0f,0xea,0xb2,0xaf,},{0x4d,0xe6,0xf5,0x25,0x08,0x22,0xd7,0xc9,0xd5,0xbb,0x98,0x58,0x25,0x00,0xb5,0xc0,0x85,0xf5,0x41,0xeb,0xdc,0x45,0x0e,0xd1,0xac,0xaf,0x83,0x68,0x48,0x27,0xed,0x1d,0xc7,0x71,0x47,0xaa,0xe4,0xb1,0x9e,0x14,0xa7,0xdc,0x5b,0xbe,0x1f,0x1e,0x4f,0x57,0x71,0xd8,0xa6,0xe4,0xf2,0x35,0x17,0x39,0xaf,0xb0,0x8c,0x80,0x6d,0x55,0x87,0x01,},"\x80\x72\x86\x2e\xd0\xab\x35\x92\x1d\xb5\xec\x2c\xba\x8e\x6a\xed\xb0\x44\x1f\xdf\x47\x49\x10\x06\xc0\x1e\x64\x56\xad\x70\xfa\xe3\xc4\x15\x2d\xcf\xbf\xdb\xb8\xf0\xfd\xde\xc5\xe9\x6b\x12\xbf\x67\x98\x9b\xa9\x67\x93\xf4\x86\x1a\x11\xb6\x39\x09\xce\x8d\x19\xb8\xca\x64\xa5\x44\xb3\x1c\xe0\x51\xfb\xc8\x8e\x06\x28\x06\xd9\x96\x5c\xbd\x29\x67\xb0\x16\x14\xe8\x6b\x53\x2f\xbf\x59\x84\x32\x18\xdc\x9c\x19\xc8\x03\x15\xf0\x44\x73\x17\x19\x37\x10\x92\xa3\xda\x38\x87\x8b\xc4\xcf\x77\xde\x97\x2e\x86\x04\x66\xb8\xfc\x45\xe4\x65\xdc\x3d\x0e\xbf\x94\xbd\xea\x60\xef\x0b\x98\x91\xce\xd4\x1b\x99\x7b\x11\xb3\x1e\xe4\x16\x7d\xb6\x0c\x9c\xfc\x8b\x85\xbe\xac\xfe\x22\x3c\xc1\x82\x92\x13\x77\x40\x85\xd7\xc0\x6d\x2b\x2e\x63\x2c\xc2\x1c\xd9\x66\x0d\xf4\x7c\x4f\xa9\x18\xbd\xd5\x96\xdd\xf6\x22\xdc\xb6\x52\x64\x2b\x67\x52\x7b\xa8\xed\x15\xa8\x19\xa8\xe2\x1f\x48\xd7\xee\x70\x24\x7f\x52\x00\xe3\x7c\x25\x9d\xff\xd1\x7e\xec\x8c\x23\x2f\x97\x0c\xb0\x31\x82\xfe\x39\x64\x13\x29\x93\xf6\xec\xb7\xc4\xdb\x18\xcc\xef\x39\x0c\x9e\xb3\x63\x9e"}, +{{0x84,0x39,0xb1,0xd6,0x0a,0xa4,0x84,0x60,0x13,0x5e,0xb1,0x00,0x2c,0xc1,0x12,0x79,0x29,0x95,0x07,0x9a,0x77,0xe6,0xe8,0xab,0x02,0x0b,0x9a,0xba,0xca,0x89,0x20,0xb4,},{0xea,0xdc,0x3e,0x0c,0x5b,0xdd,0xbc,0x30,0x52,0xc3,0xb2,0xf8,0xb0,0xa9,0x45,0x66,0xc2,0xb2,0xc8,0x79,0xed,0x17,0x03,0x4a,0xc0,0xe6,0xa4,0x5f,0x2b,0x3e,0x32,0xd2,},{0x62,0xda,0x81,0xe1,0x64,0x40,0x82,0x1b,0x59,0x3b,0x6e,0xe6,0x54,0x0e,0x15,0xd1,0xae,0xa7,0x5d,0x23,0xe0,0xa1,0xbb,0xfe,0xdc,0x80,0x8c,0x95,0x48,0xf8,0x7e,0x8b,0xbf,0x36,0x91,0x5a,0x39,0xa7,0x47,0x16,0xf6,0x45,0xcc,0xa5,0x71,0x4d,0x17,0x0a,0xf9,0x07,0x57,0x6d,0x4f,0x37,0x05,0xe5,0x43,0xd2,0xad,0xdd,0xc5,0xff,0x23,0x03,},"\x54\x19\xf6\xd2\x4e\xb4\x66\x35\xd4\xa7\xf8\xea\xb8\x03\xcf\xd0\xd0\x4d\xe0\x92\xaf\xbd\x86\xf2\xa6\x96\x1a\x8d\x1e\xb8\xc0\xd1\x97\xba\x55\xee\x08\xc9\x91\x82\x2a\x5a\xa7\x02\xba\xe0\x33\x7a\xbd\x5c\xa7\xfa\xa1\x5e\x1f\x1a\xe3\x69\x94\x6e\x9b\x81\x21\x6c\x0f\x5f\xc2\x2b\xbd\x44\x33\xc3\xde\x93\xc5\xca\xa2\x74\x16\x83\xbb\xd0\xe1\xa7\x8d\xf2\x8d\xda\x19\x17\x41\x01\x87\x63\x34\xd4\x03\x39\x65\x9f\x02\x1a\xe7\x66\x16\x2c\x6c\xc5\x42\x1b\x79\xcf\x9d\x5c\x09\x0e\xd4\xaf\x07\xec\x84\x49\x30\x35\xbd\x0b\x24\x21\xb5\x33\x68\x42\x95\xbb\xe7\x6a\x70\xfe\xc5\x96\xef\x8c\x89\xc5\xc9\xdd\xa3\xc3\x3b\x77\x35\xd2\xd2\xf2\x0b\x28\xf1\xa5\x40\x2e\x72\xd0\x4b\xa2\x91\xdd\x59\xf1\x4a\xf0\x8a\xdf\x56\xee\xb0\x86\xd7\x69\xc6\xbe\xc3\x45\x18\x91\x37\x23\x45\xfd\x6b\xd0\x2d\xcf\x95\xe8\x03\xaf\x03\x53\x15\x0e\x18\x2e\x32\x3a\xaf\x68\x3e\x03\x6d\x9a\x13\x5d\x2e\x6f\x98\xcb\x4d\x32\x7e\x2c\xe7\xd5\x42\x47\xf3\x59\x2e\xd0\x67\xb4\xce\x76\x27\x17\x4f\x99\x6f\x28\x16\x5c\x9c\x11\xf0\x7e\x5e\xe9\xce\xe6\x38\x51\xc6\xb6\x8e\xa2"}, +{{0x3a,0x04,0x63,0x97,0xf0,0xaf,0xc0,0x72,0xbc,0x7f,0x90,0x7c,0x74,0xd3,0x8f,0xd1,0xb9,0xaf,0xdf,0x27,0xe1,0x4a,0x35,0x34,0x76,0x8b,0x0d,0xd2,0xdf,0x3a,0x1c,0x22,},{0x99,0xcd,0x70,0xef,0x3b,0xe3,0x42,0x49,0x33,0x93,0x87,0x2f,0x54,0xc4,0x7d,0xea,0xa0,0x81,0x02,0x18,0x92,0xd1,0x1a,0x32,0x68,0xf3,0x14,0x5e,0xd4,0xf3,0xab,0xe5,},{0x50,0x24,0xce,0x60,0x25,0x79,0x65,0x68,0x70,0x80,0xc5,0xb1,0xfc,0x7d,0x13,0x01,0xc3,0x2a,0xa6,0xfc,0xc8,0x35,0x49,0x7d,0x9c,0xb2,0x3a,0x74,0xa6,0xca,0x27,0x24,0xf5,0x53,0x53,0xc1,0xb7,0x57,0x82,0x7c,0xa5,0x44,0x0c,0x9e,0xf8,0xf8,0xc1,0x05,0x09,0x13,0xe2,0x0a,0xab,0xec,0x35,0xc4,0x97,0xb5,0x60,0x41,0xb5,0xde,0xb2,0x09,},"\xf0\x8d\xde\xf4\x6c\xc6\xc3\x41\x79\x82\x0c\x98\x61\x37\x51\x72\xfd\xdf\x77\x4f\x8d\xc3\xf7\xd6\x4a\xa4\x32\xda\x8e\x5f\xae\x64\x4c\x0a\x8a\x9e\x69\x08\x51\x7d\x50\x5d\xeb\xd6\x12\x86\x8a\xc6\xda\xf9\x5c\xd7\xe1\x69\x97\x50\x02\x2c\xcd\x4b\x88\xdb\xae\x2b\xbf\x73\x54\x6e\xe4\xb8\x35\xd3\x19\xa8\x42\xda\xe8\xb9\xed\x68\x33\x23\xf3\x1e\x5c\xc5\x79\x19\xbc\x9d\xbe\x3b\xcf\xff\xb2\xad\xa4\x80\x72\x69\x7f\xf4\xa7\xd3\x10\xc9\x1a\xdb\xca\x81\xfa\xf2\x6a\x0e\xb7\xbb\x0c\x40\x4a\xc9\xd8\xdf\xec\x63\xe9\xc6\x4e\x2f\x42\x0c\x07\xd3\x23\xb7\xc0\xdc\x3b\x73\x50\x72\x83\xae\xb1\xce\xe5\x1d\xb4\xe1\xa8\x3a\x69\x2c\x7c\x1e\xa3\x98\xf6\xf3\x09\x40\xfa\xb8\x5e\x21\x38\xd4\xb8\x5a\xa4\xe2\x31\xe5\x42\x4f\x5b\x06\x4e\xd0\x26\xf0\xcc\xb9\x9d\x1c\x85\xa9\xeb\x15\xf5\x93\x4a\x11\x35\x9d\x41\x1c\xf9\x4a\xe8\xff\xa3\x36\x1a\x22\x4f\x46\xba\xb8\x52\xd1\x84\xa2\x48\xb4\xc3\x1f\xe3\xa7\xe7\xf5\x13\x4c\x05\x10\x31\xa9\xf3\x28\xa7\xbe\x4a\x7c\xbb\xb1\xd8\xd8\x63\xa4\x00\xfd\x2d\x58\xda\xa4\x4f\x1b\x9d\x8e\x9d\xdf\x96\x1c\xe6\x32\x2f"}, +{{0x12,0x4f,0x74,0x16,0xa8,0x04,0x53,0xe4,0xcf,0x1c,0xd7,0xb5,0xe0,0x50,0xa9,0x76,0x14,0x18,0x25,0x8b,0xf7,0xd2,0x7b,0xeb,0x7f,0x23,0x23,0x8c,0x45,0x40,0xbe,0x2d,},{0x0d,0xa3,0x4a,0xb1,0x73,0x99,0x01,0x50,0xdf,0x73,0x99,0xb6,0xbc,0xdd,0xba,0x93,0xc6,0xdb,0xcb,0xf4,0xd1,0x76,0x94,0x1c,0xb5,0x07,0x1e,0x87,0x34,0xc5,0xdc,0x92,},{0xb0,0x57,0x21,0x04,0xaa,0x69,0xe5,0x29,0xe3,0x46,0x5a,0x6f,0xd2,0x8f,0x40,0x4a,0x4e,0xc2,0x02,0x76,0xa9,0x93,0xb1,0x72,0x5e,0xb8,0xc5,0xf6,0x50,0xb4,0xa2,0x16,0xf1,0x87,0x1b,0x24,0xe3,0x68,0xcc,0x46,0xcd,0x1e,0xe0,0x17,0x4c,0xda,0x1b,0x5e,0x4a,0xe2,0x20,0x0a,0xa9,0xfc,0x44,0x52,0x2d,0x97,0x5a,0x9c,0x51,0x81,0x49,0x08,},"\x9d\xcb\x98\x73\xff\x05\x4d\xb1\x1d\x0a\x9b\x19\xde\x68\x85\xff\xba\x7f\x0e\x68\x1c\xf7\xfb\x8f\x6c\xd9\x50\xc4\x83\x28\xd1\xf9\x19\xca\x46\x05\x4e\xee\xe6\xc9\xe5\x78\x43\xeb\xdd\xa7\xb2\x4b\xc3\x50\x3c\x4d\x61\x2a\xbb\x1a\x31\x4f\x39\xf5\x82\x21\xd2\xb5\x4d\xc7\x55\xac\xca\x79\x69\x74\x0e\x7f\xa8\xb1\xa9\x52\x3b\x8c\x73\x79\xfd\x39\x52\x53\xf4\xe6\xcd\x05\x4e\xe2\x4b\x75\x61\x3c\x35\x81\xd4\x9e\x19\x24\x6a\x7b\x3b\xe1\xce\xcb\x33\x4b\xe4\x4f\x3d\x62\x6f\xe3\xb7\xb2\x69\xe6\x28\xd4\x45\x80\xc2\x06\x36\xeb\xa2\x64\x2f\x27\x44\xb9\x59\xe6\x57\x57\xd0\xee\x60\x18\x43\xf1\x88\xe9\x5d\x17\x25\x3f\xef\x56\x70\x68\xa5\x40\x5a\x3a\x9e\x67\x7f\xea\x3d\x7d\x55\xf7\xea\xd1\x9a\x3f\x30\xc5\xf9\x85\x67\x1b\x55\xfa\x12\x0c\xb9\xd0\x5f\x47\x1b\x6e\x1e\x8d\x77\x9a\x2c\x80\x3a\x19\xe6\xd0\xd7\xcd\x50\x78\x87\xed\x64\x7c\x2a\x95\x48\x3f\x93\x39\x91\xed\x45\xae\x30\x1a\x2b\x0e\x95\x4a\x57\x03\xd2\x48\xc7\x88\x10\xaa\x0b\x19\x9c\xc2\xbe\xbb\x2f\x1d\x71\xcc\x40\x48\x7d\xbd\x42\xee\xe0\xf7\x45\xf7\xd2\x85\x68\x5b\x1f\xb3\x1b\x15"}, +{{0x25,0xd1,0x3b,0x38,0x37,0x60,0x1b,0x07,0xa9,0x75,0x69,0x3e,0x5a,0x33,0xd5,0x33,0x7c,0x34,0xc1,0x12,0x7f,0xe4,0xc2,0x74,0x90,0x61,0x2a,0xaf,0x7f,0x64,0x2e,0x9a,},{0x3a,0x07,0xcd,0x68,0xee,0x26,0x92,0xd5,0x1c,0xfa,0xd1,0xa8,0x0e,0x77,0x63,0xb1,0x8a,0x04,0x3c,0x74,0xf4,0xe1,0xb0,0x1e,0xdc,0x55,0xba,0x9a,0x9e,0x07,0x79,0x5a,},{0x20,0xcb,0xf0,0x83,0x92,0xfe,0xa6,0xa9,0x9c,0xf4,0x46,0xa9,0x5c,0x19,0x9c,0xaa,0x0c,0x0f,0x98,0x13,0xcc,0x21,0x7b,0x8d,0x22,0x8e,0x2e,0xd9,0x0b,0xab,0x95,0xea,0x92,0xcd,0x73,0xac,0x95,0x83,0x47,0x64,0xd3,0x3e,0x42,0x24,0x3c,0x80,0xa7,0x60,0x34,0x91,0xc8,0xd3,0xe4,0x9a,0xc7,0x15,0xfd,0x8a,0x5b,0x9e,0x47,0x89,0xbb,0x03,},"\x11\x5b\x32\x20\xb4\x5c\xa8\xf3\x6c\x7f\xf5\xb5\x38\x87\xd4\x7e\x66\x9b\x78\xda\xc1\x3b\x98\xcc\x7a\xac\xa5\xc2\xe1\x9f\xce\x81\xec\x86\x17\xca\x41\x0e\x11\xc9\xa9\x11\x8a\x66\x84\x53\xb3\x29\xff\xb7\x18\xea\xec\x73\x91\x72\xf0\xa8\x49\xa0\x84\x81\x92\xa5\xbd\xea\x18\xab\x4f\x60\xd8\xd1\xa0\xd3\x38\x95\x2d\x77\xb2\xcc\x13\xef\xe8\x3c\x76\xe8\xdd\x58\x80\x3b\x1d\x8b\x3c\x97\x29\xef\x10\x2b\x20\x83\x5b\x7d\xe8\x72\xbe\xf3\x01\x0f\x15\xa4\xca\xdd\xf0\x7c\xf7\xbd\xd2\x22\xd8\x4b\x17\x4b\xc2\x15\x27\xcf\xfb\x1b\x7f\xfd\xe8\x1e\x28\x1d\x30\xcb\x7b\xce\x25\xea\x3d\xff\xb6\xea\x1f\xbb\x06\xcb\x70\x56\x9a\x95\xed\x1a\x07\xe9\x7c\xa4\x2d\xe7\x0a\xa2\x18\x15\x9e\xfd\x60\x8f\xa9\xb0\x89\x6e\x0b\x58\x51\x8a\x32\x2f\x25\x1d\x13\x3e\x58\xc8\xfc\x14\x28\xab\x0a\x17\x0e\xd8\x45\xc7\x5f\xb4\x03\xf1\xff\xb9\x7d\x2d\x2a\x6d\x4f\x27\x79\x11\xd3\x26\xc1\xca\xbb\xb8\x51\x6c\xbc\x17\x90\x8a\xb8\x1f\xf8\xd7\x9a\xf4\x46\x11\xea\x1d\x05\x87\x9c\x1e\xc8\x1d\x06\x93\x6e\x0f\x4a\x0a\xef\x6d\x57\x48\xe1\x81\xd3\x0e\xc2\x52\x36\x59\x7a\x97\x3d"}, +{{0x7b,0x3a,0x76,0xde,0xca,0xea,0x60,0xc4,0x1e,0x95,0xb0,0x58,0x77,0xa7,0xda,0x82,0x06,0x4c,0x27,0x27,0x8c,0x8d,0x7d,0xf5,0xf0,0xbb,0x95,0xf0,0xad,0x2d,0x04,0x35,},{0xf8,0x0d,0xb5,0xc2,0x87,0x21,0xb1,0xc6,0x11,0xbd,0x87,0xeb,0x14,0x5a,0x98,0xbb,0xf3,0x83,0xb0,0x68,0x04,0x5d,0xf2,0x45,0x8d,0x1a,0x6f,0xda,0x09,0x9f,0x7f,0xc2,},{0x2c,0xd2,0x6f,0xb3,0xc4,0xf7,0x44,0x0a,0x72,0xaf,0xfe,0x93,0x56,0x4f,0x6f,0x65,0x59,0xad,0xb1,0x5c,0xc7,0xa2,0xba,0x10,0x87,0x9f,0xb7,0xd6,0x7e,0x47,0xd4,0xeb,0xd0,0x2f,0xe4,0x82,0x36,0x98,0xa5,0xfb,0xd4,0xa9,0x07,0xfd,0x69,0x18,0x4c,0x25,0x5a,0x17,0x0e,0x5f,0x17,0x47,0xfc,0xe9,0x68,0x10,0x2d,0xc2,0x19,0xb5,0x0d,0x02,},"\x37\x5f\xad\xae\xdd\x9c\xac\x49\xb6\x4e\x15\x74\x02\x80\x46\x06\x9f\x4c\x83\x65\x4c\x8a\x70\x11\xab\xdb\x64\xdb\x16\xb4\x7f\xa3\x11\x79\x81\x72\xf9\x07\x22\x17\xb0\xa6\xa4\x3e\x5d\xf6\xff\xcc\x11\x54\xbc\xec\x1c\x68\xe1\xd3\x5e\xc0\x58\x80\xd0\x12\xce\x76\xe4\xce\xbf\x30\x1b\xb2\xec\x98\x3d\x00\xb4\xa0\x54\x0c\x93\x7f\xf1\xc6\xdf\x94\x41\xc6\x1b\xdb\x3b\xe8\xe0\xc7\xc1\x1a\x35\xd4\x9b\x6f\x55\xc3\x81\x26\x9a\x0e\x76\x8e\xfb\xd4\x53\x44\x7f\xe4\x8b\x75\xac\x39\x64\x6c\xa8\x2e\xca\x7d\x14\x93\x04\x42\x34\x91\x87\x1c\x10\xdb\xcf\xc5\x97\x3a\x57\xfa\xb8\x37\x1c\x30\xcb\xc4\xe9\x0b\xec\xc0\xb6\x71\x52\x22\x6e\xe1\x77\xb4\xff\x36\x8e\xc8\x79\xb3\x91\xeb\x95\xe3\x6d\xcb\xb0\x7b\x2c\x16\xba\x39\x55\x45\xd4\x52\x9f\x72\x7b\x1a\x11\xef\x65\xd1\x20\x97\x6b\x7c\xcc\x86\xaf\x4b\xd2\x04\xcb\x94\x89\xc9\x21\xe4\x3b\xa5\xe8\x50\xcf\xe5\x98\x99\xf1\xc1\xec\x4a\xa5\xc9\x2b\x6d\xac\x69\x14\xb1\x95\x2b\x53\xdc\xb5\x40\xb4\x09\x23\x13\x81\x56\x89\x87\xbb\x22\x36\xbc\x40\x89\x5d\xf3\xf1\x7e\xab\x7c\x02\x74\xf2\x24\x4f\x95\x86\x12\xe8\x8e"}, +{{0x5f,0xf8,0xd4,0x05,0x26,0x08,0xeb,0x03,0x3a,0x5e,0x94,0xb6,0x03,0xce,0x38,0x4d,0x84,0x52,0xf6,0x0a,0x26,0x49,0x8b,0x91,0x12,0x56,0x7f,0x34,0x10,0xc1,0x86,0x66,},{0xc4,0x90,0x0d,0xe2,0x4d,0x9a,0xf2,0x48,0x27,0x63,0x10,0x99,0x26,0xaf,0x7c,0x48,0x13,0x80,0xfa,0xbc,0xda,0x94,0x40,0xc1,0xa5,0x3e,0xa1,0xcd,0xc2,0x7e,0x65,0x68,},{0xb7,0x37,0xd4,0xe5,0xbe,0x27,0xde,0xb6,0xd8,0x77,0x29,0xc6,0x36,0xdf,0xf7,0xa4,0x06,0xc0,0x13,0xf3,0x13,0xc3,0x8c,0xf6,0x83,0xfe,0x14,0xf7,0x5a,0x3b,0x30,0x05,0xd9,0x53,0x5d,0x7e,0x58,0x15,0xc8,0xf8,0xb3,0x7c,0x51,0xd6,0x92,0x71,0x11,0xc9,0x79,0xf7,0xd9,0xd8,0x1a,0x34,0x7a,0xa9,0xcc,0x09,0xed,0x4e,0x6c,0x18,0xe9,0x0f,},"\x13\x8c\x60\x55\x7c\x2e\x90\x08\xaf\xc0\x3d\x45\xbe\xc7\x1f\x96\x11\x49\xa0\x83\x59\x26\x75\x1c\x8f\xf3\x93\x5c\x7d\x65\x2d\x83\xe1\xb0\xb1\xda\x7d\x5b\xbe\x0b\x8e\x17\x1a\x4e\x49\xaa\xe0\x6f\xd8\xa9\xde\xff\x78\xdc\xde\x4d\x25\xb1\xaa\x89\x99\x98\xa0\xf9\x9e\x1d\xf6\xf9\x33\x7a\x3e\xa2\xf2\x4b\x76\xc3\x17\xa7\x01\x4d\xb4\xe5\x28\x31\x91\x79\x5a\x70\xd8\x82\x1d\x21\x78\x46\x49\x0f\x95\x87\x01\xd3\x9d\xc2\xc8\xce\x47\xd9\x28\x93\x88\x74\xd8\x7b\x35\x58\x98\x9b\xc7\x7a\xf8\x20\x97\x9a\x35\x1e\xef\x95\x94\xaa\x5b\x94\xf3\x34\x1e\xde\xd4\xea\x20\xb0\x8c\x3e\x7c\x56\x10\xd4\x32\x67\x81\x8d\xfa\xc0\xa8\x7d\xdf\x52\x7f\xbc\xe8\x51\x2b\xbf\x85\xb6\x6c\x9b\xb5\xd6\x2f\x0f\xe8\x40\x48\xf2\x3b\x19\x60\x4a\x5c\x8d\x82\xb1\xf2\x5a\x8d\xa0\x27\x31\xfe\xb2\xec\xae\x48\x9b\x84\x75\xf7\xbd\x32\x6d\xdf\x1a\x08\x18\x9e\x46\xc0\x8c\xf5\x05\x38\xc2\xa3\x63\xe2\xf4\xeb\x2c\x01\xa2\x04\xc7\xff\xbc\x0b\x98\x1a\xdc\x0f\xd9\x97\xaa\xfd\xf2\xa2\x22\xee\x84\xc3\x09\xf6\xe9\x5e\xc7\xde\x4f\xa8\x5d\x47\x68\xd5\xc0\x03\x16\x50\x28\x22\x5e\x22\xe0\x9e"}, +{{0xee,0xde,0xfc,0x17,0x57,0xe3,0xa7,0xe5,0xed,0x39,0x46,0xdb,0xed,0xc3,0x96,0xa3,0x62,0xf6,0x83,0xd2,0xc5,0x1b,0x0b,0x9f,0x60,0x76,0x5d,0x4b,0xfc,0x51,0x34,0xde,},{0xa9,0x87,0x2b,0xc2,0x19,0x2f,0xc0,0x2b,0x18,0x9c,0xee,0xd4,0x03,0xab,0x9f,0x27,0x0a,0x03,0x2a,0x83,0x5f,0xde,0xbf,0xaf,0x1c,0x9d,0x69,0x34,0xed,0x83,0x04,0xbc,},{0xd5,0xbe,0xa8,0xea,0x9a,0x5f,0xe9,0xed,0x6d,0x2b,0xf8,0x39,0x93,0x0c,0x0c,0x6c,0xd5,0x03,0x9e,0x98,0x8f,0x55,0x1f,0xde,0xdb,0x54,0x37,0xe1,0xc1,0xaf,0x0e,0xd7,0xb3,0x89,0x7c,0x03,0x57,0x11,0xc3,0xc5,0x19,0x26,0xbe,0x8d,0x1b,0x32,0x02,0x4d,0x5c,0xd5,0x82,0xf5,0xf8,0x36,0x9a,0xd8,0x4d,0x18,0xb1,0x25,0x02,0x65,0x2f,0x07,},"\xb1\x94\xdb\x73\xf9\x94\xcb\xdc\x3c\xbe\x63\x0b\xa7\x2c\x47\xc2\x24\x9b\xc0\x59\x2a\xb5\x47\x94\x2b\x1d\x1b\x88\x2b\x44\xf5\xb3\x85\x5e\x56\x8b\xdd\xdf\x92\xef\x05\x02\x2d\x88\xfc\xfc\x29\x4e\x76\xb6\x4a\x00\xe9\xc7\x43\x55\x37\x37\x63\xe4\x9a\x4e\xbc\x47\x24\x3d\x48\xa9\xad\x58\x89\x94\xa5\x18\xf8\x0f\x86\x15\xc2\xb3\x1d\xa5\x87\xa5\x3e\x52\x9d\x43\x5a\x86\x97\x35\x0d\xfc\xde\x02\xd2\x0c\xce\x7d\x5e\xee\xfe\x3f\x5a\xb2\xaa\xc6\x01\x25\x9c\xda\x38\x53\x8a\x1b\x83\x01\xf9\x83\x2e\x75\xab\x90\xf8\xa9\x32\xf2\x67\xea\xc1\x81\x00\x39\x65\xd5\x26\x6f\x20\x61\x80\xc6\xc3\x80\xec\xe8\x03\x57\x7c\xcb\x46\x17\x6b\xf6\x07\x15\x94\x86\xf2\x42\x59\x74\x7e\x2c\xa6\xfb\x19\x12\xdb\x7b\x78\xa9\x73\xb2\x84\x63\x87\xc1\x20\x80\x30\xee\x1f\x40\x0d\x0c\x5b\x5e\x8b\xde\x96\x35\xae\x55\x63\x8b\xa1\x7c\x73\x4d\xe8\x63\x8b\xb8\x5d\xfc\xd7\x66\x29\xa7\xf9\xf4\x0d\x6a\xb9\x54\xd5\x5b\xf8\x57\x5f\xc9\xc9\xa5\x95\x09\x7e\x08\x93\xdb\x5a\x7b\x8a\x6c\x45\x5e\xcb\xd3\xd2\x2d\x72\x5e\x19\xde\x29\x41\xf4\x67\xf9\xeb\x93\xd6\x6a\x0e\x2b\xbd\xbf\x92\xed\x1c"}, +{{0x09,0xd2,0x2b,0xba,0xa5,0x95,0x6c,0xfa,0xcb,0xbf,0x9f,0xd5,0x51,0x09,0x75,0x12,0x86,0x86,0xc4,0x0c,0x6e,0xa9,0x6b,0x89,0xef,0x4c,0x0f,0x0c,0x64,0x9b,0xcd,0x7f,},{0xe5,0x59,0xea,0x8a,0xcb,0xdc,0x61,0xb6,0x70,0x9a,0x7d,0x83,0xae,0x15,0x84,0x9a,0x6c,0x78,0xb2,0x03,0x92,0x3d,0xd0,0xa2,0x99,0x23,0x9e,0xe4,0x88,0x69,0x30,0xba,},{0xe6,0x52,0x75,0xc4,0x32,0x8a,0x70,0xad,0x62,0x40,0x8e,0xd7,0xfb,0x17,0x28,0xbe,0x87,0xa7,0x3a,0x81,0x4f,0xee,0x8e,0xbd,0x94,0xf2,0x66,0x5c,0x71,0xbc,0x66,0xab,0x0c,0x1b,0x07,0xa6,0x00,0xb3,0x0b,0xc0,0x81,0xa7,0x4c,0x53,0x68,0x57,0xc2,0x06,0x10,0x38,0x4b,0xe2,0x68,0xd9,0xaf,0x3e,0x3e,0xcd,0xdd,0x3e,0xb0,0xc1,0x4c,0x0c,},"\x1c\x26\xa0\xf3\xa1\xa5\xb2\xd7\xd5\xb2\x97\xaf\x8a\x6a\x68\x9d\x7c\x62\xa2\x52\x67\xe1\x97\xd2\x3b\xec\xd2\xf2\xb8\x16\xc4\xde\x92\xfb\xda\xff\xb9\x41\xc3\xfc\x8d\xb7\xa8\x43\x35\xa8\x4c\xfb\xc9\x2c\xb3\xac\x80\x6e\xd5\x8d\xf1\x6b\x6b\x8e\x11\x9a\x48\xdf\x4f\x27\xc7\x1e\x93\x1a\x59\x38\xe7\xd0\x02\x73\x48\x85\xe1\x3a\x25\x8a\x15\xb6\xe1\x13\x6e\xfb\xa7\x2f\x1d\x09\x6b\x68\x9f\x76\x18\xf4\x9c\x96\x80\x63\xe8\xf9\x91\xfa\x0b\x55\x60\x1e\x43\x0e\xee\x13\x49\x2a\x1b\x09\x41\x3e\xb2\x38\x13\x59\x1a\x7a\x9f\x07\x0c\xc3\x96\xca\x9d\x1f\xac\xdd\x4f\x4c\xe3\x7c\x40\xf7\x24\x5f\x55\x03\x5e\x10\xfa\xd6\xb8\x5b\x5f\x01\xa1\xda\xac\xc0\xdf\x94\x06\x9f\x7d\xe8\xf6\x46\x7f\x96\xd1\xfb\x98\x64\x8e\x8a\x05\x20\xa8\xcd\x72\x3c\x98\xe9\xdc\x2d\xd4\xb2\x93\x4d\x82\x28\xf0\xae\x1a\x41\x5b\xd3\xa7\xcd\xa3\x8d\x7a\x99\x83\xce\x1a\xf6\xf8\xc9\x70\xa2\xa5\x91\x63\x5f\xe1\x2b\x91\x75\x36\xef\x81\x5e\xaf\x1a\x31\x38\xd7\x0c\xe7\x0a\x79\x42\x64\xd7\xc9\x86\xd9\xee\x32\x90\x44\x5f\x15\xa9\x24\x8f\x27\x65\x27\x1e\x5a\x99\x21\x96\xae\x33\x1a\xbd\x41\x64\xbf"}, +{{0x77,0x82,0x6e,0xd3,0x51,0xa3,0xf0,0x92,0x54,0xae,0x56,0x92,0x88,0x5d,0x77,0x4c,0xb3,0xf2,0x44,0x10,0xa4,0x80,0x9f,0xd9,0x0f,0x8a,0x00,0xda,0x9a,0xee,0x99,0x03,},{0x3e,0xac,0x8f,0x41,0xee,0x73,0xe6,0xef,0x13,0x68,0x21,0xf7,0x95,0x7a,0x1c,0x27,0xe1,0x56,0x38,0xd0,0xe3,0x91,0x6e,0x6c,0xaa,0xc6,0xfb,0x7b,0xeb,0x7b,0xcf,0xb0,},{0x97,0x7a,0xdc,0xcd,0xb8,0x29,0xb4,0x0b,0xbd,0x8e,0x53,0x85,0x6a,0x78,0x3d,0xb3,0x46,0xa3,0x9d,0xff,0x62,0x04,0x1a,0x29,0x72,0xd2,0x90,0x09,0xf1,0xc9,0xff,0x81,0xb8,0xad,0x54,0xcb,0x90,0x1e,0x49,0x7c,0x1d,0x30,0x21,0xb5,0x0b,0x6c,0x69,0xee,0x73,0x55,0x8f,0xd7,0xbe,0x05,0xd6,0x25,0xf5,0x72,0x7f,0x9a,0xf2,0xce,0x87,0x02,},"\x1f\xf0\x6c\x0b\x39\x99\xce\xcb\x19\x00\xa4\x7d\x26\x7b\xea\xfb\xb3\x5d\x93\xd1\x4c\xb2\xc8\x92\x5e\x3e\x3f\xe5\xd9\x67\x58\x69\x25\xee\x4b\xaa\x41\x99\x8e\xdd\x01\x03\x20\x58\x10\xaa\xd5\xc0\xbb\xdc\x77\x87\x44\x76\x81\x02\x46\xd1\x30\x89\xa6\x4d\xb5\x76\x42\x4f\xae\x0b\xed\x96\x64\xa4\x2a\x49\x11\x47\xd1\xee\x3b\x9c\x3b\x1b\xa4\x87\x5b\xe1\x54\x62\x39\x25\x40\xf9\x97\x8d\x9a\x46\x30\xba\x4c\x52\x54\x99\x75\x1a\x45\xef\xc2\x99\xec\x7d\x73\xb1\x7f\x9a\xd2\x75\xee\x71\xa6\x87\xe7\x26\x90\xd7\x32\x02\x42\xd2\xdc\x2b\xd4\xd5\xc5\xcf\x0f\x17\xa4\x65\x18\x5d\xcf\x60\xf8\xef\xff\x53\x90\x3f\x20\xb0\xc2\xab\x21\x92\xd4\x43\x68\xf2\xf2\xfb\x36\x04\x8a\xf0\x71\xf7\xaa\x85\x7b\x14\xad\x1d\x11\x46\x12\x05\xbe\xbe\x17\xe0\x2b\xe2\xe3\xcc\xb6\x09\x28\x21\x88\x5c\x4e\x0d\x48\x11\xbe\x3f\x45\xb1\xfe\xa0\x88\x45\x3e\x02\x24\x32\xf5\x62\x56\x2b\x43\xa3\x55\xcb\x56\x27\x0c\xed\xb6\xc2\xc4\x2d\xbf\x9b\xe8\x50\xe7\x71\x92\xfd\xc6\x5c\xfd\x36\x83\x4b\xe9\x88\xdb\xe9\xa9\x3e\x25\x18\xc1\x38\xb0\x90\xfb\x9d\xa8\x27\xcb\x1c\x91\xc8\xfe\x52\xfe\x7c\x57\xf7"}, +{{0x99,0xa9,0x95,0x31,0xc3,0xcd,0x6e,0x3e,0x9c,0x90,0x0a,0x9e,0xeb,0x26,0x26,0x7e,0x72,0xf0,0x9d,0x11,0xb6,0x51,0xa8,0x97,0xeb,0xb7,0x9b,0xe0,0x16,0xf6,0x4c,0x6e,},{0x9b,0xf9,0xf8,0xb4,0x8a,0x27,0x28,0xe0,0x26,0x08,0xfc,0x19,0x89,0x9d,0x21,0x96,0x56,0x83,0x9d,0x1c,0xc1,0xe9,0xa8,0x98,0x4d,0xf6,0x74,0xec,0x26,0x66,0x2f,0x41,},{0x0e,0x89,0xda,0x5d,0x94,0x9c,0xf2,0xbf,0x40,0xc7,0xe1,0x7c,0x2d,0x0f,0x9c,0xea,0xbc,0x88,0xa0,0x92,0xeb,0x4d,0x49,0xcf,0xbf,0xea,0xb7,0xc8,0xbf,0xf4,0x32,0x45,0xc6,0x7b,0x9e,0x2e,0x92,0xf9,0xbc,0xb9,0xb3,0x4b,0x3f,0xcf,0x8b,0x01,0xfa,0x2e,0xa7,0xa9,0x64,0x9f,0x81,0x4c,0x3a,0xa9,0x8b,0x3d,0xd0,0x45,0x40,0xc3,0x1d,0x09,},"\x7a\x89\xc0\xc1\x95\x2f\xdc\x42\x98\xdc\xae\xa8\x54\xef\xc1\x34\x65\x6b\xe1\x47\xe9\xe8\xe8\x2f\xc9\xa4\x49\x05\x9d\x80\x57\x0f\x75\x67\x6b\x81\xc4\xa9\x4f\x76\xa9\x68\x20\x0c\xde\xb0\x98\x8c\x73\xf5\x9a\xfc\x72\xad\x4c\x31\x03\xe1\x9f\xe6\x3b\x7e\x95\xe1\x40\xb5\xcb\x2e\xfc\x7b\x97\xa6\xff\xbb\x6c\x29\x8d\xda\xce\x3b\xe6\xd2\xed\x3d\x59\x8b\x8b\xdf\x0c\x2f\xe6\xc9\x76\x02\x14\x2a\x76\xe9\x78\x51\x4c\x19\x6c\x1b\x9a\x88\xef\xdc\x19\x25\xfc\x50\x61\x55\xcf\xf9\xa2\xf2\x1a\xb6\x34\xe2\xb9\x3e\x96\x92\x8a\x5d\x8f\x7c\xe4\xcb\x73\x26\xd9\x68\x94\x69\x24\x2b\xa9\xc6\xa0\x1b\x77\x49\x6b\xad\xef\x87\x57\x8f\x5a\x17\x28\x4e\x90\x0a\x72\xdf\x14\x1c\x61\x99\xb0\xe7\x1a\xb5\xda\x43\x75\x03\x76\x17\xec\x61\x96\xd4\xf4\xe2\x3a\xe2\x91\x6a\x72\xd0\xfc\xe7\x96\x02\x23\x05\xac\x9f\xbb\xbb\xe4\x70\x5b\x34\x0e\x42\xb7\x8e\x1c\x02\xbb\x10\x01\x86\x0c\xdc\xaf\x71\xed\x89\x25\x5d\xd5\x6c\xc0\xb3\x1c\x59\xd4\x59\x6d\xce\xf8\x4e\x22\x23\x4b\xe5\x62\xbd\x80\x1e\x94\x11\x1d\x83\xa7\x80\x64\xc9\x0f\x9d\x82\xfc\xe9\x1f\x68\xab\xb0\x3c\x73\xb6\xbd\x8d\x7e\x02\xd4"}, +{{0xaa,0x58,0x40,0x3e,0x76,0x3b,0xac,0x40,0x5d,0xb0,0x65,0xeb,0x11,0xeb,0x6b,0xe3,0xe3,0xb6,0xcf,0x00,0xec,0x4a,0x22,0x2b,0x52,0xbf,0xf4,0xb6,0xe3,0xd1,0x56,0xac,},{0x16,0x7f,0x9b,0x9a,0x46,0x65,0xf9,0x3f,0x5d,0x7d,0x30,0x16,0xac,0xe6,0xfb,0xd1,0x34,0x20,0xb2,0xe5,0x1e,0x72,0xbd,0xe5,0x9e,0xed,0xf2,0x69,0x93,0xb6,0x6c,0xae,},{0x64,0xb5,0x98,0xca,0x5b,0x8f,0x9a,0xe7,0x42,0xe4,0x6e,0xe0,0xd8,0xc1,0xaa,0xf3,0x14,0x58,0xb5,0x0c,0x25,0xd2,0x67,0xa6,0x77,0xe4,0x4b,0xe5,0xb7,0x55,0xf1,0x4d,0x51,0x80,0x1a,0x30,0x39,0x9b,0xfc,0xc3,0x8d,0x14,0x07,0x1a,0xa0,0xae,0x93,0xda,0x82,0x5a,0x58,0x1a,0xb6,0xc2,0x07,0x25,0xa0,0xa9,0x10,0xb4,0x73,0x5d,0xfa,0x0b,},"\x3b\xaa\x09\x98\xff\x02\xb3\x2b\x90\xb5\x1f\x9a\x84\x0c\x7b\x5c\x58\x70\xcf\xb1\x81\x0a\x9b\x0f\x77\xb5\x59\x09\xd4\x7a\xd3\x35\x14\x7a\x99\x1c\x29\xfb\xeb\xfc\x59\x2e\x93\x07\x17\x5c\x19\x64\x12\x9a\x2d\x5e\xfc\x62\x15\x80\x74\x53\xbc\xd7\x26\x96\x97\x81\x22\x2b\xca\xd1\xc9\x9a\x49\x74\x8b\x9e\xe6\x67\xc4\xd0\xc8\x28\x89\xe2\xf5\x00\x64\xc1\x15\xdb\xd8\xfb\x48\x3d\x72\xab\x0c\xca\xdf\x76\xbd\xdb\x2d\xc7\x27\xdb\xc3\xfa\x5c\x46\x24\xc2\x83\xd8\x92\x1c\x8a\xa4\x42\x51\x10\xdc\xdd\x69\xc0\x5e\x5e\xd5\x9b\x35\x96\x25\xee\xaa\xec\x1e\x27\xea\xfe\x9d\x9a\x5c\xe7\x36\xc3\xf9\xc5\x27\xea\x54\x78\x18\xb9\xbc\xa6\x81\x1b\xe4\xcc\x15\x05\x8a\x6f\x5b\x68\x33\x03\xb8\x0c\x90\xc9\x4a\x83\xb8\xb1\x58\x69\x71\x3a\x66\xb1\xe0\xf6\x56\x33\x1b\x28\x6d\x1e\xf7\x69\x88\x34\xab\x3e\x13\x84\x17\xaa\xd6\xbb\x3a\xb3\xbd\x9f\xc7\x87\x61\xa4\x82\xdf\xc6\x54\xf3\xf8\x62\x8c\x8d\x9f\xc1\x60\x18\x89\x8f\x16\x41\xe8\x62\x2b\xd2\x72\xe3\x8d\x41\x70\x6c\xb9\xce\xbe\x6e\xe5\xe1\x73\x57\x6b\xf6\x1b\xb1\x18\x8c\xf2\xf3\x9c\x62\x22\x0b\xba\x88\xfc\xb4\xde\x48\x98\xb2\x5b\x04"}, +{{0x10,0x44,0xee,0x37,0x08,0xc0,0xb0,0xe9,0x09,0xa8,0xcb,0x2b,0xa2,0xcd,0x0a,0xf8,0xd2,0x8a,0x5d,0xe0,0x1d,0x96,0x2e,0x82,0x60,0x87,0xfb,0x23,0x2d,0xf7,0xb2,0xd2,},{0x46,0xd2,0x41,0xea,0x0c,0x70,0x2c,0x18,0x89,0xd4,0x46,0x55,0x82,0x46,0x29,0xb6,0x72,0x84,0xd4,0xe6,0x44,0xa4,0x8f,0xa4,0x54,0x55,0xd2,0x7a,0xc5,0xf6,0x25,0x29,},{0x7d,0x6b,0xed,0x7f,0x87,0xd0,0x90,0xab,0xe0,0x13,0xc3,0x1e,0x12,0x03,0x90,0x3b,0xac,0x9c,0x93,0x44,0x5d,0x06,0xc7,0xb5,0x3d,0x31,0xd1,0x5f,0x97,0x0d,0x88,0x64,0x7a,0x7e,0xd2,0xc3,0xa6,0x30,0x50,0xba,0x19,0xd6,0x80,0x43,0xaa,0xdd,0x18,0xbd,0x86,0x1d,0xe1,0xac,0x47,0x15,0xb8,0xe8,0x28,0xb2,0xb1,0x6f,0x8a,0x92,0xb0,0x01,},"\xb8\xa4\x45\x45\x5f\xb6\x6e\x17\xe3\x14\x3d\x35\x20\x4c\x9e\xa9\x34\x74\xee\xbe\xef\x93\x96\x3e\xe5\xc1\xd3\x77\xca\x21\x7a\xcd\x4c\xa6\x3e\x57\x55\xda\x08\xfb\xff\xdb\xd4\x35\x2b\xf1\x65\x19\x38\x96\xc8\xd6\xf7\x6b\xb4\xcd\x3b\xc2\xd3\xa4\x76\xa4\xe3\x20\x82\x4a\x12\x10\xce\x74\xd0\x01\x4d\x74\x7f\x11\x1e\xec\x31\x0c\x5c\x89\xed\x4d\x08\x50\xe8\x11\xf8\x0a\x8b\xb2\x8d\xca\xf6\xf4\x11\xdf\x83\xe2\xc1\xdf\xd9\x0c\x4a\xd2\x35\x61\x45\x4e\xb5\xd7\x56\xb6\x3b\x4e\xa7\xf3\x7d\xc5\xd4\x66\xc1\x6e\xf7\x0d\x11\x19\x0c\x4f\x53\x16\xfe\x2a\xa8\x59\x74\x40\xe8\x8b\xbe\xba\xeb\x35\xea\x5f\x04\xf0\x7b\x03\x39\x26\x41\x58\xef\x90\x9a\xd5\x16\x3b\xfc\x24\x8c\xd7\x24\x13\x3e\x27\x4f\x81\x26\x95\xf2\x90\xe5\x71\x76\xa9\x6b\x93\x93\xd0\x7b\xb3\x10\x29\x9f\x5d\x2a\x6b\x6d\xd1\xda\xbc\xb5\x1b\xf2\x9c\x5a\xfa\x7e\xbb\x07\x01\xc6\xc8\x47\x67\xac\x13\x77\x93\x09\x1f\xe0\xed\x6e\x47\xd7\x80\x62\x8a\x32\xc8\x4f\x83\xe0\x0e\x9c\x16\x74\x2a\x52\x3e\xcb\x63\xc2\x4f\x4a\x33\x8e\xd2\x99\xa0\x61\x94\x92\x4f\x44\xc5\xa5\xd3\xc9\x37\xff\x9b\x09\x45\x98\x2a\xd2\x4a\x2d\x1c\x79"}, +{{0x95,0xdd,0x1a,0x5e,0x65,0x8f,0xa6,0xc8,0xd4,0x25,0x07,0xb3,0xe5,0xb8,0xed,0xb5,0xba,0xec,0xa6,0x2d,0xeb,0x00,0xfc,0x5d,0x4d,0xca,0x8e,0x1a,0xb5,0x83,0x5e,0x59,},{0x3a,0x53,0x23,0xdd,0x1e,0x07,0xf3,0x23,0xbb,0x6d,0x83,0xe9,0xc2,0xdb,0x92,0xa2,0x9f,0x62,0xe2,0xe0,0x03,0xee,0x0d,0xea,0xcd,0x7e,0x2e,0x4e,0x03,0x0d,0x8d,0x27,},{0xd0,0x2a,0x75,0x23,0xdc,0xbd,0x29,0x57,0x6b,0xa8,0x09,0xb5,0x31,0x03,0x77,0x74,0xdf,0x41,0x73,0x4a,0x41,0x17,0x58,0x13,0x11,0x9c,0x6a,0x6a,0x78,0x8c,0xd9,0xb8,0xad,0x78,0x08,0x65,0x67,0x86,0x67,0x69,0x9a,0xe6,0x6d,0x01,0x09,0x19,0xa9,0x66,0xa0,0x51,0xc0,0x81,0x63,0xdf,0x67,0xa9,0x77,0xee,0x6e,0x22,0x0d,0x0d,0xc3,0x0f,},"\x9b\x7a\xfd\x48\xc4\x74\x60\x4c\x26\x36\x75\x31\x55\x68\x40\xc3\x88\x66\x8b\x0f\x38\x40\x06\x3d\xfc\x98\x69\xad\x5b\x90\x12\x74\xb9\x31\x29\x3d\x04\xf3\xc8\xe8\xf7\xf8\xea\xb8\x15\xa6\x41\xd7\xc3\x51\x28\x4e\x8b\xb0\x43\x7a\xc5\x51\xbb\x29\x43\x89\x64\xe6\xa7\xc7\xba\x77\x23\x44\xb3\x33\xf9\xed\xa5\xa7\x75\x68\xc8\x93\x1d\xdc\xaf\x21\xe3\x2e\x07\xb1\x0b\xf4\x82\x0f\xb8\x59\xbc\xf8\x7b\x81\xc4\xbf\xf4\x26\xf2\x4a\x4d\x46\x8f\x2e\x9a\xed\xa8\xf1\x7d\x93\x97\x09\x97\x0d\xb1\x1d\xf7\x62\x47\xe9\x8a\x39\xeb\x8b\x38\xf5\x94\x9f\x34\x9f\x2a\xe0\x5a\xb4\x8c\x01\x85\x17\xc4\x8f\xa0\x20\x5d\xc7\xf1\x56\x64\x53\xe1\x05\xe4\x8c\x52\xeb\x45\x5c\x0c\x40\x80\x2f\x79\x7b\x3e\xef\xb1\xe2\xf3\xb1\xf8\x43\x15\xae\xd5\xb0\x71\x1c\x64\x99\xa6\x91\xb7\x4b\x91\xf1\x2e\xf7\x0f\x76\xc4\xc0\x5c\x1a\xa1\xa9\x93\xe2\xf3\xe5\x28\xab\x34\x3d\xd2\x36\x81\x62\xf4\x03\x6a\x61\xa1\x3a\x88\x04\x5d\xcd\xef\xa8\x5d\x68\x53\x22\x75\xbc\xf5\xb8\xf5\xf0\x0e\xfd\xea\x99\x9a\x95\x78\x31\x75\xd9\xee\x95\xa9\x25\xd4\x8a\x54\x49\x34\xd8\xc6\xb2\x62\x22\x5b\x6e\xbe\xa3\x54\x15\xdd\x44\xdf\x1f"}, +{{0x1a,0xbc,0x0b,0x9a,0xa0,0x1d,0xc5,0x7c,0xa5,0x3e,0xfe,0x73,0x80,0x96,0x2b,0x1a,0x88,0xd5,0x0a,0x96,0x4f,0x5c,0xd9,0x86,0x40,0x98,0x2c,0x74,0x39,0x3f,0x29,0x26,},{0x8d,0x4f,0xd1,0x43,0x94,0xd7,0xc1,0x40,0x57,0x00,0x30,0x69,0x83,0xfb,0xf7,0x6e,0xa9,0xf1,0x71,0xb1,0x5a,0x6b,0x56,0x61,0x2a,0x1f,0xeb,0x1c,0xbd,0xae,0x5d,0xd5,},{0xf7,0x38,0xaf,0x2d,0x3e,0x29,0x0b,0x3d,0x23,0xd9,0xaf,0xf7,0x41,0x4b,0xfc,0x5f,0xfa,0x47,0x23,0x5d,0xc0,0x53,0x68,0x7a,0x8b,0xa5,0xc8,0x54,0x1b,0x85,0x11,0xf7,0x81,0x56,0x6c,0xda,0xa1,0x30,0xe0,0x67,0x7d,0xb5,0x5f,0xa8,0xbe,0x9d,0x81,0xa0,0x92,0xcb,0x58,0x92,0x3a,0x86,0x28,0x49,0x4d,0x2f,0x62,0xd9,0x5c,0x16,0x71,0x00,},"\xda\x2d\xd9\x40\xd5\xe1\xdb\x6e\x80\xbf\x7e\x2b\x78\x2e\x7e\x74\x5c\xd4\xfd\x25\x2e\x98\x15\x17\x97\x58\x87\xdd\x05\xac\x77\xed\x83\x7d\x08\x29\x61\x57\x5e\xfe\xdf\x30\x1f\xdf\x24\xb7\x07\x18\xb9\x91\xb8\xd9\x2b\xdd\x2e\x6b\xee\x17\xc8\xaa\x4b\xc6\x94\xa7\x27\xbc\xfc\x78\xfd\x85\x19\x5c\x42\xca\xf8\x83\xa2\xc3\x8d\x16\x1c\xad\xd7\x9c\xfd\xa9\xa3\x91\x10\xe1\x26\x4d\x30\xbd\x4c\x5c\x4a\x58\x76\x77\x7f\x23\x3b\x07\x1b\x1b\x0b\x40\x89\x35\xf0\x46\x89\x54\xcc\x74\x4a\xf8\x06\x3b\x00\x4e\xde\x56\xcd\x98\x1c\x4d\xd5\x60\x8a\xbf\xfe\xae\xc9\xe5\x8f\x3f\xaf\xaa\x67\x14\x67\x80\x4b\x7f\xa2\x55\x8f\x4f\x95\x17\x42\x01\xf1\x83\xd8\x0a\x59\x14\x06\x5f\xed\x53\x11\x5b\x41\xeb\xc3\x38\xf7\x8d\xf0\x50\x05\x3b\x8a\x4e\x75\xea\x7c\x6f\xdc\x35\x4d\xad\x27\xbf\xd8\xa2\xe6\x6f\xcd\x7a\xe2\xf5\x87\xd2\x4b\xe0\xd4\xa3\x3d\xa3\x0a\x22\x0e\x51\xbc\x05\xfa\x4e\x41\x2b\x95\x9f\xd9\x5d\x89\xea\x6e\xc0\x16\x25\x16\xc0\x96\xa9\x43\x3a\x9e\x7c\xf5\x99\xc9\x28\xbd\x53\x05\xc2\x17\x3b\xf7\x49\x3e\xd0\xc1\xc6\x03\xcd\x03\xf0\x82\xcc\xe4\x42\x37\xa7\x9f\xfd\x8b\xe9\xa6\x72\xc2\xeb\xaa"}, +{{0xcb,0xff,0xce,0x2c,0x9b,0xd3,0xe2,0x3e,0x40,0x6e,0x5f,0x66,0xe6,0x32,0xdc,0xfa,0x72,0x66,0x54,0xd2,0x9a,0x95,0x5c,0xec,0x98,0x31,0x73,0x23,0x5f,0xa3,0x59,0xd0,},{0x49,0x65,0x3e,0xdd,0x64,0xa5,0x5f,0x7c,0xd4,0x0e,0xaf,0x3f,0x8e,0x72,0xeb,0x96,0xdb,0xcd,0xee,0x39,0x8f,0x34,0x81,0x7f,0x2c,0x95,0x86,0x79,0x49,0x71,0x0b,0x14,},{0xe7,0xce,0xd4,0xfa,0x2a,0x7d,0xff,0x73,0xf1,0x06,0x8b,0xba,0xd0,0xec,0x9a,0x11,0x09,0x04,0x3c,0x97,0xa6,0x2e,0xff,0xa1,0x48,0x87,0x6f,0x09,0x69,0xed,0x4d,0xc6,0x08,0xe2,0x8b,0xce,0x79,0x7a,0xf3,0xb8,0x25,0x32,0xc9,0x4d,0xec,0x4d,0x68,0x11,0xb7,0xf5,0x63,0x67,0x91,0x29,0xfa,0xcf,0x17,0xbb,0x73,0xd6,0x93,0x75,0xeb,0x05,},"\x1f\xfd\xe6\x82\x6e\x4f\x0c\x24\xa7\x96\x1f\x19\x1e\x74\xcc\x0b\xbc\x92\x8e\x3f\x1a\xec\x3e\xfa\xb3\x27\x65\xc2\x50\x1c\xbc\x16\x20\xe7\xee\x6f\x61\xfc\xcf\xb0\x0c\xfc\xa9\xfb\x98\x14\x3b\x52\x9b\xcc\x8c\x3d\x0f\xdf\x89\xee\x7c\x34\x2f\x10\x18\x15\xfa\xbf\x7d\xea\xf9\xf3\x02\xa2\x88\xfe\x17\x58\x26\xd5\x90\xd9\x9e\xe6\xfd\x92\xda\x74\xf9\x59\x6b\x78\x3c\x0e\x7d\x47\xd7\x11\xa3\x2f\x39\xea\x41\x65\xe5\x21\x24\x31\x44\x1b\x49\x8c\x6b\x70\xdb\x3b\x09\xd1\xf4\xe4\xa1\x4a\x6b\xae\x39\xda\x50\x88\xbb\x85\xb3\x28\x5c\xe9\xdf\x2f\x90\x68\x1a\xf2\xc7\x4d\xec\xe4\x39\xae\xb9\x1e\x1c\x1b\x07\x12\xed\xdb\xee\x8d\x72\x56\x98\x28\xf3\x7c\xb7\x20\xc5\x09\xd0\x2a\xec\x47\x60\x70\x48\x4e\x9b\x16\xec\x71\x79\x94\x7a\xc9\x6c\xaf\x0e\x1b\xe8\xb6\xb7\x4f\x37\x2d\x72\x35\xfe\x6e\x39\x99\xdf\x73\x3b\xcc\xd4\x82\xdf\xe2\xe6\x31\xf5\x6b\x58\x26\x67\xdc\xe5\xe3\x12\x17\x63\xad\xfa\xcf\x3b\x18\xcf\x20\x95\xf7\x39\x4d\xee\x49\x27\xfc\x2b\xea\x6b\x58\x24\xd9\x0c\xd5\x9e\x85\x4e\xc5\x87\x2b\x45\x51\xb0\x2e\xfa\xba\x5a\xd5\x4a\x9b\x7a\x8f\x6d\xe5\xd7\xcd\xa5\x82\x5b\x32\x5b\x07\x6d\xed"}, +{{0x9f,0x91,0x23,0x14,0x97,0x48,0x4c,0xab,0x39,0xb9,0xe2,0x0f,0x86,0x11,0x81,0xd3,0x97,0x90,0x85,0x77,0xbb,0xb2,0x96,0x82,0x42,0xd0,0x71,0xbc,0xa4,0x81,0x3f,0xfb,},{0x88,0x24,0xbc,0x6c,0xd6,0xa6,0xf1,0x5a,0x5f,0x41,0x66,0x8f,0x2b,0x3b,0xae,0x8f,0xc4,0x96,0x73,0x83,0x07,0x8d,0x08,0xb5,0x1d,0x6d,0x1b,0x2b,0x93,0xa1,0x07,0x1f,},{0x0a,0x1c,0x70,0x6d,0xd8,0xa1,0x30,0x77,0xab,0x18,0x38,0x6c,0x65,0xfa,0x97,0xcf,0x9d,0xfc,0x43,0x54,0x2d,0x18,0x46,0xec,0xbd,0xde,0xb7,0xb3,0xc9,0x3f,0x3c,0x66,0xf3,0xcc,0xd0,0x44,0x7a,0xac,0xdd,0x4d,0xad,0x8f,0xbf,0x73,0x6c,0x4f,0xf9,0xdb,0xdb,0x62,0xbf,0xc1,0x4d,0x88,0x83,0xe3,0x85,0xbc,0xe9,0xba,0xc5,0x6a,0x35,0x0c,},"\x21\xd4\xfb\xc9\x81\x63\xc3\xfb\x6e\x09\xf7\x75\xc2\xab\x7b\x18\xb1\x87\x92\x34\x0b\xaf\xed\xac\xb4\x96\x05\x62\x2e\x3c\x08\xaa\x3b\x2b\x8d\x0e\x09\x02\xf3\x61\xaa\x1c\x0f\x65\x2e\x27\x32\xb1\x0a\x0c\x5c\x6a\x05\x09\x89\x96\xb5\x88\x26\x7c\xc8\x95\x1a\x78\xb5\xd4\x31\xe7\x22\x2b\xbb\x50\x8e\xee\xf1\xb5\xe8\xb8\xd0\x1d\x39\x91\xe1\x8d\xdd\xc6\xca\x8d\x22\x2e\xf1\x77\xce\x62\x93\x8d\x18\x10\xee\xcf\x06\xf4\x73\x8b\x28\xf4\x40\x94\x6c\xca\xd2\xa1\x2e\x39\xd3\x86\x11\xbe\xd3\xa3\x9f\x93\x41\x9a\x17\x9e\xc2\xb1\xb5\x2d\x5f\xe5\xc8\x0c\x23\xb8\x4d\x88\x03\x75\x5f\x51\x46\x09\x2c\xc1\x99\xb4\xbd\xce\xa5\xbc\xf2\x03\x7b\xd5\x3f\xf6\x34\x66\x94\x15\x5f\x02\x7d\x8c\xe2\xba\xff\xe3\x0a\x56\x66\x59\x6c\x00\x78\x3a\xae\xad\xe9\xc7\x7f\xc8\x63\x79\x42\xec\xe0\x17\xd6\x48\x4c\x28\x99\xb1\x91\x8d\x3a\x48\x0b\xd5\x15\x76\x78\xd4\x77\x2d\x27\x1f\x9b\x99\x76\x8e\xe1\xbc\xc4\x6b\x24\x89\xae\x87\xcd\x03\x0f\x47\xd1\x33\x3c\x76\x72\xcb\x90\x2c\xb4\xf5\xfe\x74\x6e\x85\x3d\xe5\x79\x40\xba\x22\x64\xd3\xe6\x29\x64\x4d\x65\x3a\x5b\x7a\xf7\x8c\xe6\x4a\x99\x3f\x36\x25\x0f\x8c\xb7\xcb\x45"}, +{{0x1e,0x2b,0xd5,0x48,0x7c,0x5f,0x5c,0xed,0x46,0x1f,0x60,0x4d,0xcc,0xb4,0xe7,0x8e,0xb9,0x16,0x08,0xf0,0xb8,0x21,0xf5,0xaf,0xc4,0xe3,0xe5,0x34,0xf7,0x96,0x03,0x92,},{0xef,0x82,0x54,0x75,0xcf,0x20,0x51,0xa2,0x01,0x7a,0xe5,0x32,0xf0,0x77,0xd9,0x67,0x74,0x34,0x7d,0x27,0x67,0xea,0x7b,0x45,0xf9,0xc1,0xb8,0x60,0xab,0x99,0x35,0x06,},{0x4d,0x33,0xc9,0x6a,0x2e,0x3a,0x5d,0xb7,0x39,0x1a,0xdf,0x65,0xc1,0xcc,0x35,0x65,0xfe,0x76,0xee,0xaf,0xd0,0xb5,0xc7,0xab,0xb0,0xb4,0x92,0xa0,0xb5,0x1e,0x1f,0xa3,0x36,0x39,0x94,0x6a,0x24,0x3b,0x2d,0xde,0xf3,0x57,0x55,0x22,0x98,0xce,0x0a,0xa9,0x5e,0xac,0x6f,0xbf,0xe6,0x60,0x98,0x82,0x71,0x87,0x7e,0xb2,0xa7,0xda,0x18,0x06,},"\x1d\xbb\xbb\x13\xcd\xad\x88\x85\x4b\x80\x9c\xed\xed\x27\x33\x43\xd3\x06\xa8\xde\xab\xf3\xff\x02\xc9\xce\xc6\xf0\x02\xb8\xe9\xe1\x0e\xf5\xd1\xb0\xf5\x71\x1f\x33\x26\x7a\xa9\x1c\x17\x1b\x61\xe9\x60\xf7\x40\x45\x7b\x81\xd7\x51\xa4\x73\xf4\x4f\x75\x0a\x08\x0c\xab\x80\xaf\x7c\xcc\xa7\xdf\xfc\xfa\xc9\xee\x4c\x39\xdc\x85\xcb\xdf\x51\x25\x9c\xcd\x34\x70\xd9\xba\xd3\xad\x30\xf4\xee\x5d\xbd\x4f\xac\x6b\xd5\xc6\xc4\xdf\x73\x11\xa4\x70\x04\x46\x95\xa7\xe1\xa7\xe1\x85\x72\x20\x75\x88\xaf\xa5\x7e\xeb\xcd\x4d\x57\x5b\x6d\x42\x44\x57\xee\x92\x46\x5c\xe1\x86\x3e\x3c\x67\x7c\xf8\x75\xfd\xb9\x8d\x40\x78\xeb\xe7\x14\x42\x60\x80\x70\x52\x57\x71\x44\xcb\x8e\x03\x59\xaa\x42\xad\x15\x5d\x79\xda\xe3\xde\xb9\x9c\x46\x32\xc1\x91\xc7\x99\xcb\xfe\x58\x7d\x95\x47\x87\x06\x8d\x66\x3b\xdf\xc0\xfa\xb1\x33\x4f\x18\x76\xbf\x49\x8c\x4d\xb5\xc5\x3d\xb7\xb0\x20\x4e\xd5\xa5\x21\xc6\x2f\x09\xea\xca\x8d\x01\x89\xf3\xb3\x94\x14\x3f\x29\xc4\x21\xcb\x5c\x8d\x07\xbd\x75\x1b\xaf\x4c\xbe\x3b\xf4\xbe\x17\x01\xdf\x4b\x22\x07\xdf\xb2\x90\x4d\x84\xf4\xdb\xda\x51\xcb\xa5\x76\xd5\xa5\xbb\x16\xef\xe6\x98\xed\xd6\x08"}, +{{0xf7,0x8d,0xb1,0x4d,0x6d,0x1a,0x64,0x3d,0xd7,0x73,0x5b,0xaf,0x26,0x35,0x32,0x12,0x44,0xe7,0xec,0x8c,0xa7,0x2c,0x5c,0x38,0xc9,0x8c,0x80,0x9d,0xb9,0xcb,0x5a,0x55,},{0x54,0x14,0xf7,0x5f,0x52,0xf3,0x86,0x4a,0xfb,0x0c,0x79,0xc2,0xc5,0xc1,0xd0,0x6b,0x4b,0xce,0x40,0x0f,0xbd,0xdf,0x17,0xfe,0x9c,0xfb,0x2a,0x8b,0xac,0x47,0xa0,0xdd,},{0xd7,0xcb,0xd4,0x18,0x1f,0x67,0x71,0x20,0x07,0xb7,0xf0,0xe1,0x84,0x52,0xe0,0xa0,0x24,0x46,0x4d,0x9d,0xc9,0xb5,0xff,0x9c,0xf6,0x69,0xd1,0xb9,0x11,0x69,0xd7,0x57,0x32,0x62,0xf8,0x33,0x36,0xb9,0x7c,0x86,0x1b,0xfa,0xb3,0xfc,0xf6,0x69,0x22,0x3c,0xe8,0xca,0xf3,0x19,0xf2,0x1d,0x23,0xf1,0xfa,0x33,0x1a,0x2d,0x89,0xb6,0xca,0x0b,},"\x05\xca\xf1\xb8\xed\xc3\xb1\x73\xfb\xc1\xed\x29\xb9\x5e\x2b\xf0\x6d\x81\x4b\xa2\x40\x7d\x4b\x31\xc7\x28\xd0\x4e\xc2\x73\xd2\x53\x94\x42\x3a\xc7\xd4\xff\xf2\xca\x36\xee\x90\x27\x30\x93\xc7\x56\xe2\xbd\x13\xc9\x6d\x4a\x3d\xc7\xf5\xbe\x17\x59\xfc\xd3\x28\xeb\x66\xc5\x88\x2b\x58\xfa\x45\x88\xe5\xb2\xa3\x71\x3a\x41\x54\xa2\x34\x0d\x0b\x06\xad\x01\x96\x01\xb0\xe0\x28\xe4\x97\xf8\x98\x25\x6b\x02\x8a\xf9\x5c\xd8\x16\x8d\xf5\xe5\x8a\x57\xcd\x1e\xbf\xc0\xa0\xc9\x1c\xed\x61\xdb\xb4\x80\xac\xa7\xdf\x8d\xca\x91\xeb\x16\xe9\x80\x07\xcd\x2c\xd1\xa2\x04\x5b\x0e\x44\x77\xd1\x2d\x5a\x40\x72\xf3\x65\x42\x65\x67\xc9\xd6\x15\x77\xf3\x48\x5c\x8f\x46\x60\x5e\x7f\x47\x5e\xf0\x4a\x39\x48\xf6\x0d\xba\x8c\x55\x08\xd1\x4b\xfd\xdb\x9b\x11\xdd\x04\x4e\xf2\xd8\x4c\x16\xb9\xa9\x03\x8d\x8e\x78\xed\xa4\x3b\x91\x29\x7d\xf3\x5f\x43\x61\xa3\x83\xb4\x1d\x49\x67\x7a\x68\x7d\x5b\x34\x4a\xd1\xab\x0f\xc7\x30\x17\xb3\xbe\xbf\x32\x30\x6f\xb3\xfd\x7b\x3d\x50\x71\xf3\xab\x5f\x6e\x49\xaa\x15\x54\x0c\xad\x65\x03\xbe\xa7\x78\x4c\xf9\x42\x18\x01\xce\x13\x85\x83\x98\x93\x36\x2a\x97\xfa\xe1\x21\x30\x0d\x67\x83\xaf\x0f"}, +{{0x7d,0xfa,0x32,0x8e,0x90,0xa1,0xb8,0x49,0xc2,0x19,0xe3,0xda,0x83,0x2d,0xf9,0xed,0x77,0x44,0x82,0x34,0xf0,0xd8,0x9e,0xa5,0xd1,0x7a,0x3d,0x64,0xe7,0x88,0x3d,0xaf,},{0xe3,0x0c,0xe6,0xfd,0x5f,0x58,0x00,0x38,0x9a,0x70,0xcd,0x11,0x73,0x64,0xf5,0x99,0x45,0xaf,0xb1,0x80,0xf2,0x29,0x92,0x73,0x60,0xb0,0x6b,0x48,0x35,0xf8,0xdc,0x91,},{0x1c,0x61,0xd5,0x3b,0x87,0x2f,0x8c,0xde,0x59,0x86,0x09,0x68,0x2c,0x79,0xf6,0xc5,0xdf,0x00,0x7c,0x51,0x3a,0x71,0xcf,0xb3,0xa0,0x6d,0xcb,0x82,0xd8,0x5c,0x4b,0x00,0xcc,0xc4,0x0b,0x00,0xe5,0x9f,0x59,0x53,0x93,0x08,0x8b,0x4c,0xd0,0x43,0x28,0x55,0xc6,0x7a,0x20,0x7d,0xa7,0x1f,0x87,0xe7,0x2c,0x40,0x9b,0x3e,0x50,0x27,0x95,0x07,},"\xe5\xe4\x95\xd6\x63\xf4\x72\x36\x71\x45\x32\x68\x7a\x24\x30\x8f\x94\x2c\xa9\xc3\x3e\x08\x8f\x7f\x10\x6a\x5a\x72\x35\x18\xca\xcb\xbe\xf4\xa6\x8c\x93\x9a\x69\x50\xb2\xdc\x25\x89\xf8\x2d\x35\x4e\x57\x52\x72\xd4\x2b\x13\x83\xd3\x15\xab\x8a\x20\xaa\x0c\xdc\x9d\x4d\xf6\x78\xab\x3b\x26\x61\x2b\x5d\xca\x66\xe7\x1f\x9f\x3f\xa7\xd9\xe7\x31\xdc\x48\x1e\x2b\xc7\x12\x7c\xea\x3b\x62\x03\xca\x6c\xd8\x16\x2e\x90\x88\x6a\x73\xdc\x46\xc8\x3d\xde\xfc\x4b\x9e\x2d\x53\xd2\x9d\xd3\x87\xc6\x24\xe0\x8b\xd8\xd5\x3b\xe9\x28\xa4\x0a\x9a\xa8\xae\x8b\x1c\x8d\x0f\xb6\xa7\xbd\x6d\xce\x5f\x62\x31\x5b\x7a\x21\x81\xf6\x27\xf2\x56\xbb\xe7\xe2\xa9\x5b\xf4\x64\xe6\x13\x22\x04\xc1\x74\x20\x96\x29\x84\x02\x35\xb2\xc3\x99\x13\x30\x1a\x4b\x40\x32\x5d\x11\x8d\x38\x4b\xc7\xac\x02\x8c\xd4\xf1\x27\x02\xe1\x61\x19\x1b\x14\x9e\x42\x09\x05\x8a\x55\x12\x2b\xbb\x8b\x22\xb2\x46\x83\xba\x4f\x8e\x2e\x6c\xcf\xc0\x8d\xc8\xc8\xb1\xbc\xfb\x6d\x60\xbd\x8f\x06\x21\x96\x93\x3d\xf3\x19\xab\x16\x90\x6d\x08\x57\x30\xeb\xa1\x72\x0d\x4b\x02\xc6\x7d\xaf\x38\xcc\xe6\xab\xa3\x8e\x25\xd6\x8e\xf9\x5b\x2f\x52\x19\x13\xa1\xd7\x7d\x5e\xb6\x50"}, +{{0x6c,0xe1,0x3d,0x3c,0x2e,0xc7,0x1f,0xed,0x83,0x13,0x1a,0x69,0xd5,0xd0,0x30,0x31,0x4a,0xb4,0x9e,0x65,0x65,0xef,0x68,0x16,0x3f,0xff,0x09,0xac,0x5d,0x9b,0x47,0xe7,},{0x9c,0x7b,0x11,0x18,0xfa,0xb9,0x1e,0x0e,0x7b,0x19,0x2a,0x23,0xd9,0x5f,0xb8,0x77,0xcb,0x79,0x36,0xcc,0x6c,0x8a,0x33,0x05,0x92,0xf4,0x8e,0x67,0x84,0xed,0xc2,0x92,},{0x60,0x8b,0x2b,0xf6,0xf6,0xda,0x05,0xc2,0xac,0x5b,0xbf,0xd7,0x95,0xa2,0xac,0x32,0xc7,0x9c,0x74,0x15,0x3f,0x94,0x31,0xde,0xa5,0x97,0x68,0xff,0x4c,0x22,0x5e,0x3b,0x69,0x3b,0x64,0x5a,0x50,0x67,0x66,0xb8,0x60,0x85,0x0e,0xe9,0x7e,0xa4,0x30,0x32,0xb0,0x5b,0x69,0xe5,0x67,0x67,0xe8,0xeb,0x9d,0x19,0x18,0xdf,0x9a,0xfb,0xa8,0x05,},"\x10\xbb\xc3\x11\xeb\x2a\x76\x5e\x01\x67\xff\x37\x61\x8f\xf7\x0e\x13\xf0\x2d\x7b\x06\x17\xae\x4a\xc0\x6b\xef\xbb\xe1\x49\xc9\x72\xa9\x94\xf6\x80\xca\x4d\xc9\xa9\x2e\xc7\xef\xa5\x39\x97\xfa\xd3\x56\xb9\xff\x4e\xbd\xee\x62\x95\x41\xd1\xf4\xde\xa6\x2e\xd0\xd2\x49\x4f\x9c\xcf\xdf\x07\xa9\x31\x04\x91\xf6\x1c\x4b\x3e\x27\x00\xb4\xa3\xc6\x68\xd6\x78\x32\x9a\x38\xc2\xef\xf9\xd8\xcb\xa4\x31\xfb\x95\x9e\x7f\x76\x55\xbd\x0f\xbd\x77\xd5\x3b\xbb\xc2\xeb\x8d\xc5\x1d\xd7\x18\xed\x98\x72\x8a\x18\x16\x86\xbe\x12\x2b\x84\x4d\x3d\xa3\x31\xe3\x29\xd3\x95\x9b\x59\x23\xf7\x73\x43\x25\xa0\x21\x02\x6e\x27\x54\xe1\x7a\x15\x10\x8b\xe8\x01\x46\x5a\xd9\x58\xdb\xcf\x21\xdf\x89\x0c\xfe\x5d\x5b\x88\x3c\xa4\x3c\x61\xce\xdc\xcb\xdb\x58\xb8\x49\xea\x75\x37\x4f\x1e\x91\x8e\x80\x3e\x57\x7a\x5d\xc7\xa1\xc1\x79\x36\xec\xcf\xcd\x34\x81\xbd\x2b\x1e\xb0\x75\xb8\x32\x37\xca\x6f\x3c\x07\xc1\x9e\x9a\xf9\x73\x12\x67\xbe\x82\xd4\x89\x8e\xee\x96\xeb\xc9\x00\xd4\x8b\x05\x9d\x51\xb0\xdd\x41\x5b\x1c\x89\x06\x60\xa8\x8d\x25\xf5\xc5\xf3\x5d\x8e\x45\xe5\x23\xe0\xce\x33\x36\x92\x3a\xb4\x36\x70\xe3\x5c\x50\x57\xd5\x6c\x75\x88\x76"}, +{{0xd4,0x5e,0xe6,0x9a,0x5f,0x1a,0x7c,0xfd,0xd0,0x34,0x3f,0x87,0x70,0xd1,0xc6,0xbc,0x02,0x6f,0x06,0x7a,0x70,0xdb,0xe8,0x39,0xa8,0x6f,0x2a,0xa0,0x68,0xc3,0x3f,0x81,},{0xfc,0x8d,0x9f,0xb0,0xe4,0xf3,0x47,0x93,0x09,0x07,0x55,0xe0,0x32,0x80,0x96,0xe0,0x1e,0x28,0x1e,0xa3,0x51,0xb8,0xd9,0x5c,0xd9,0x11,0x6e,0x13,0x1a,0x5c,0xa5,0x4e,},{0x15,0x6c,0x51,0xc5,0xf9,0x15,0xd8,0x9b,0x8d,0x14,0x00,0x35,0x0f,0x8f,0x21,0x7a,0x5c,0x02,0xe2,0x62,0x9e,0xde,0x9f,0x4a,0x30,0xb6,0xe7,0x1d,0x1e,0xa7,0xa9,0x53,0xcc,0x6d,0xb3,0x1b,0xa5,0xc7,0x78,0xc2,0x69,0x92,0x0b,0x64,0x9f,0xb4,0x22,0x1c,0x6d,0x38,0xcf,0x2c,0xea,0x2a,0x7d,0xe3,0xad,0x42,0x3e,0x04,0xfa,0xaa,0x06,0x07,},"\xeb\x5e\xd8\xab\x79\xcb\xfe\x61\xc2\x59\x81\xb9\xd1\xd6\xb7\x0f\x10\xb6\x01\x94\xb4\x16\x1f\xe1\x7d\x11\xaf\xf1\x76\x79\x94\xaa\x08\x13\xe9\xec\xe2\xf4\xc5\xd5\x31\xb9\x9e\x8a\xdf\x18\x88\xc3\x0a\x63\x89\x3e\xb4\x51\xaa\xf5\x5a\xcd\x5a\x52\xad\x8c\x40\x1f\xaa\x88\xd6\xea\xcf\x3e\x49\x47\x05\x66\x11\x4f\xd0\xc6\xa2\x74\xe9\x54\x48\x46\xb0\xae\x9b\xfa\x12\x4d\x79\x51\xeb\x26\x71\x5e\x19\x25\x3f\xf7\xed\xc8\xa7\x09\x65\x77\x6f\x23\xce\x46\x03\x1e\x03\x4a\x20\x07\x23\xba\x3d\x11\xe1\x1d\x35\x3d\x7e\x7c\xd8\x4a\xed\xe2\x67\xff\x64\xbe\xd4\x18\xcb\x9f\x28\xc6\x1c\xd0\xf6\x3b\x6c\xe2\xec\xae\x14\xb2\x0b\xc6\xbd\xae\xd8\xc4\x28\xba\xd1\x8b\xe4\xb7\xd6\x63\x38\x36\x4a\xcd\x80\x42\xa8\x25\x6f\x25\x8a\x69\x96\x9b\x8d\x3c\xa2\xea\xb3\xae\xa3\x70\x6e\x5f\x21\xc3\xb1\xef\xcc\x25\x4a\x82\x4b\xb4\xe7\xea\x7a\xba\x88\x27\xc8\xeb\x82\x78\x6c\x66\x5a\xa9\x73\x82\x19\x31\xff\x99\x0a\x63\xfd\x34\xa7\x4a\x6d\x8c\x22\xa8\x82\xb0\xb9\x35\x15\x2c\xcb\x36\xfc\xc7\x6f\x4e\xca\x65\xd6\x7c\x86\x80\x94\x2f\x75\xdf\xad\x07\x34\x39\xc0\x91\x60\x65\xe8\x38\x77\xf7\xba\x20\x93\x03\xf3\x35\x48\xd9\xe4\x0d\x4a\x6b"}, +{{0x8a,0x76,0xea,0xab,0x3a,0x21,0xec,0x5a,0x97,0x5c,0x8b,0x9e,0x19,0x7a,0x98,0x9e,0x8e,0x03,0x08,0x99,0xeb,0x45,0xd7,0x89,0x68,0xd0,0xfb,0x69,0x7b,0x92,0xe4,0x6d,},{0x2d,0x9c,0x81,0x3d,0x2d,0x81,0xe2,0x73,0x0b,0x0d,0x17,0xd8,0x51,0x2b,0xb8,0xb5,0xd3,0x3f,0x43,0x6c,0xab,0xaa,0x13,0xe1,0x41,0xca,0x1c,0xb7,0x85,0x01,0x43,0x44,},{0xfc,0xee,0xcc,0xa4,0xb0,0x14,0xfe,0xcd,0x90,0xb9,0x21,0xb0,0xfa,0x3b,0x15,0xae,0xaa,0x4e,0x62,0xca,0xa1,0xfb,0x22,0x72,0x9c,0x70,0x26,0x92,0x32,0xc3,0x3c,0xef,0x0d,0x0a,0xee,0xa6,0x64,0x32,0xc1,0x28,0xaf,0xb9,0xa3,0x64,0x6b,0xc7,0xf0,0x3a,0x12,0x77,0x4d,0xa8,0x75,0x83,0x98,0xc2,0xa0,0xdc,0xce,0x0b,0xbb,0xf6,0x74,0x0a,},"\xc6\xc7\x8f\x2e\x20\x80\x46\x1a\xed\x9f\x12\xb4\xf7\x7c\x98\x9b\x19\x71\x67\x80\xfa\xb6\x0e\x6e\xcb\x97\x93\xb4\xbc\x7e\xd6\x9e\x5f\x70\xfa\x6b\xdb\xa1\x6e\x9b\xd3\x19\x49\x69\xee\xa6\x66\x5a\xbf\xd6\x30\xde\xee\xfa\x3d\x71\x7b\x6d\x25\x4d\xd2\x4b\xc9\x7d\xde\x21\xf0\xf2\x9f\x9e\xd3\x4b\x8b\xd7\xa0\x13\x38\x0f\x4f\x82\xc9\x84\xfd\xbd\x95\xaf\x98\x05\xb7\x44\xbc\xd9\x52\xc5\xa7\x1f\xbb\x57\xd1\x1f\x41\x1c\x18\xcc\x30\xbc\x35\x94\xf7\xad\x82\x28\xcb\x60\x99\x39\x4a\x1b\x6b\x0a\x81\x85\x81\xbd\xf9\x3c\xce\x58\xf3\xa4\xa2\x3e\x55\xdb\x3e\x69\xca\x9d\x60\xcf\xb3\xa9\x07\xfb\x68\x32\x9e\x2f\xfb\x6c\x65\xf1\xe8\x28\xd2\x81\x27\x10\x9c\x9e\x9f\xb7\x01\x60\xf2\xef\x82\xa2\xee\x9f\x9b\xd1\x70\xc5\x1e\x13\xfd\x3f\xc1\x86\x6b\x22\xc7\x9f\xe6\xd5\x10\x12\x17\x97\x9d\xbe\x27\x24\xdc\xad\x8a\x9b\xc6\x9a\xcc\x42\xc1\x12\xdc\x69\x7b\xd2\x71\xee\xa5\x50\xe9\xe5\x04\x06\xbf\xd2\x82\x45\xb8\x3b\x8f\x01\x2d\x34\xdb\x6d\xbd\xd5\x5a\xe6\xe5\x75\x74\x5c\x15\x3d\x6e\x75\x34\x90\x10\x27\xea\xdc\x2f\xcc\x33\xa5\x28\x7d\xdb\xca\x6d\x3a\xea\xb8\x97\x22\x94\xdc\x6c\x71\x2b\x99\x42\x54\x72\x77\x34\x0e\x7a\xd1\x9e"}, +{{0x18,0xa8,0xf9,0x36,0x48,0xcd,0xcf,0x47,0x13,0x36,0x30,0xaf,0x1e,0x11,0xc0,0xce,0xea,0x3d,0xe0,0x73,0x27,0x31,0x4c,0x96,0x58,0x0d,0xf7,0x75,0x59,0x7d,0x7a,0x9c,},{0x29,0x12,0xf4,0x1a,0xb4,0xc8,0x7e,0x39,0x37,0xa0,0x33,0x31,0x80,0x2c,0xba,0x87,0x71,0x6b,0x4e,0xea,0x14,0xb9,0xfb,0xa6,0xf5,0x46,0xd0,0xac,0x2c,0x09,0x73,0xdf,},{0x3b,0x77,0x39,0x4c,0xd6,0x9f,0x8b,0x45,0xd0,0x0c,0xfe,0x3a,0x79,0xa7,0x90,0x06,0x28,0xa5,0x65,0x18,0xb3,0x79,0xed,0x8a,0x11,0x58,0x1f,0xc3,0xa3,0x76,0xe5,0xd6,0x68,0x07,0xdf,0x11,0xe7,0x09,0x04,0xf6,0x96,0xc7,0x41,0xd2,0x1d,0x13,0x93,0x10,0xfa,0x1b,0x89,0xa9,0x3b,0xdc,0x4d,0x2c,0x39,0x97,0x99,0x1f,0x52,0x20,0xee,0x00,},"\x59\x20\x93\xac\x7c\xd6\x71\xd6\x07\x0b\x00\x27\xed\xac\x1f\xb0\x15\xcc\x20\x5d\x78\xbb\x60\x3f\x37\x8e\xb9\xf8\xaa\x38\x8c\xa8\x30\xdb\x3c\xb2\x34\x20\xc7\xe8\x52\xdb\x0b\x55\x24\x1e\xb8\x8a\x02\xcc\x62\x7a\xa9\x41\x43\xbe\x43\x9a\xab\x4b\xf2\x63\x47\x57\x47\x04\x06\xe8\x42\xf2\x0e\xb1\x0f\x07\x00\xe3\xc2\xda\x36\x4f\x58\x8a\x80\x00\xf2\x38\x50\xc1\x2c\xe9\x76\xf3\x26\xd2\xdf\x1b\xac\x13\xe9\x50\x20\xb4\x12\xb1\x75\xbf\x74\xbd\x7e\xbb\xac\xf3\xae\x55\xc0\xda\xeb\xb5\xc0\x10\xbf\x80\x4f\xee\xe1\xd7\xd4\x9f\xae\x05\x0b\xea\x55\x99\x6f\x53\xcf\xe1\xf1\x5a\x0c\xf2\x07\x27\xdb\x4e\xe3\x11\xc2\x60\xba\xd9\x68\x2d\x7b\x96\x5e\x27\xa9\x49\x1f\x47\x1d\x4a\x47\x3a\xff\x64\x6c\x7d\x42\x4d\x5a\x0b\xdc\xbb\x8a\x02\x33\xf4\xb3\x06\x0d\xd0\x4c\x98\xec\x98\xdf\xd0\x5e\xc7\x24\x78\x84\xe2\xd8\xe1\x52\xd4\xae\x52\xb3\xd5\x86\x5d\x9e\xfd\x67\x06\xa6\x0e\x08\x8e\x1e\x7c\x9f\x62\x45\x10\xab\xc7\xa2\x04\x5a\x2c\x7a\x75\x88\xe2\x53\x5e\x73\x19\x1d\xd5\xcf\x05\x42\x15\x63\xf5\x56\xa1\x3e\x82\x36\x67\x03\x43\xcd\x5b\xa4\xd4\x66\xe2\x45\xc4\xee\x3b\x5a\x41\xe7\x0c\x9a\x0f\x5e\x6e\xa2\xc5\x59\xeb\xe6\x1b\xa8\x1e"}, +{{0x20,0x6c,0xd2,0xb8,0x11,0x4a,0xae,0x18,0x8d,0x81,0x86,0x2c,0xce,0xc4,0xcb,0x92,0xc4,0xef,0x5f,0xc7,0x8c,0x24,0x43,0x5a,0x19,0xf9,0xed,0x9b,0x8a,0x22,0xf4,0x7e,},{0x97,0xa6,0x7a,0xc2,0x81,0x1f,0x52,0x94,0x56,0xdf,0x53,0x27,0x37,0xd7,0x6b,0xed,0x7e,0x38,0x7d,0xa8,0x3b,0xd5,0x54,0x59,0x37,0x2f,0xdf,0xb2,0x7f,0xfa,0xcf,0xf3,},{0x73,0xa4,0x0d,0x9d,0xa0,0x8f,0xb9,0x8e,0xa2,0x5b,0x67,0xe7,0x21,0x55,0x7a,0x1a,0x51,0x22,0x52,0x94,0xd3,0x16,0xb5,0x31,0x49,0xaf,0x89,0x5f,0xa4,0xd6,0x3c,0xb4,0xa3,0xf5,0x6f,0x68,0x85,0x66,0xef,0x6d,0xa4,0x2f,0xd2,0x94,0x1d,0xff,0xa0,0x6d,0x49,0x7a,0xa9,0x02,0x16,0x5d,0x50,0x21,0x3a,0x62,0x14,0x11,0x62,0x99,0xa9,0x0c,},"\x48\x0c\x48\x00\xf6\x8c\x79\xf5\xdf\xc0\xc3\x66\x6c\x0a\xc4\x29\xb3\x0f\xe0\xc5\xfe\x84\x87\x50\xdb\x21\x71\x38\x0b\x80\xc8\xe9\xfe\xc0\xa0\x54\xb1\x6d\x08\x67\x4c\xef\xe2\xf6\x4e\xc2\x8b\xb6\xb0\x59\x6b\x35\x23\x55\x75\xf1\x89\xbe\xe2\x59\xac\xa7\x66\xc2\x22\xac\x0a\x46\xcf\x2a\xf7\x57\x74\xda\x4e\x34\xa0\xb5\x4f\xc2\xac\x49\xec\x8b\xed\xf4\x88\x7c\xd9\xb7\xbe\x4f\xdb\x7f\x68\x69\x02\xdd\xfa\xb0\x46\x27\xe2\x6e\xa2\xdc\x3d\x97\xd6\x2a\x4b\x15\x46\x18\x02\x18\xed\x8f\xa1\x13\x33\x48\x19\xb5\x27\x5c\xc5\x4a\xfd\xee\x44\x30\x90\x08\x59\x65\x07\x97\x16\x75\xe6\xd8\xb8\xa8\xed\xec\x47\x18\xf2\xd4\xbd\x73\x52\x13\xcb\xbd\x18\x79\x1f\xaa\x80\x54\x17\x49\x07\xa7\xac\x17\xd7\x14\x3a\x47\x57\xe4\x93\xbe\xee\xc4\x84\x9d\x0b\x83\x6f\x18\xbb\x2b\x3c\x90\x16\xf2\x5a\xf4\x7f\xb9\x61\x99\x25\x17\x20\x54\x9f\x15\xd1\x49\x50\x3d\x41\x09\x5e\x25\xf2\x62\x09\xda\xac\x39\x15\x44\x85\xc3\xde\xd7\xcb\x1a\x8c\x3e\x83\xa5\x2f\x5a\x06\xec\x09\xcf\x83\xdf\x00\x72\x6b\x79\x68\xf6\x4c\x0c\xba\xe2\x99\x51\x2f\xb4\x38\x56\x0f\x04\xb3\xb6\x44\x34\x6f\x93\x8a\xc8\xe9\x04\x86\x61\x4c\xd8\x44\xb5\x4e\xae\x07\x8b\xf6\x78\xb3"}, +{{0x59,0xb1,0x44,0xa7,0x08,0xab,0xec,0x97,0x27,0x29,0xa0,0x4a,0x6c,0x13,0xf0,0xea,0x02,0x0b,0x4e,0xd4,0xa4,0x82,0x98,0x02,0x3a,0x56,0x89,0x58,0xc2,0x12,0x15,0xec,},{0xc4,0xf4,0x72,0x00,0x92,0xed,0x61,0x79,0xa0,0x82,0xae,0x4d,0x61,0x45,0xdf,0x37,0x71,0x78,0x6e,0xfc,0xa9,0xbd,0x9b,0xb7,0x9c,0x9f,0x66,0x67,0xd2,0xcb,0x56,0xb3,},{0x1a,0x80,0x85,0x0f,0xcb,0xd6,0xe6,0x43,0xc6,0xba,0x8e,0xb6,0x84,0xdb,0xef,0x7d,0xf0,0x15,0x15,0x92,0x28,0xda,0xed,0xcf,0x06,0x04,0x70,0x91,0x86,0x05,0x4d,0xb1,0x85,0xaa,0x7b,0xaa,0xcb,0x09,0xd6,0xca,0xad,0x01,0x63,0x8e,0xff,0x8e,0x46,0x87,0x35,0xa6,0x01,0x24,0xde,0x0c,0x53,0x76,0xe9,0x43,0x40,0xe5,0x41,0xa9,0x80,0x07,},"\x38\x57\xbd\x26\x0b\x8a\xad\x9d\x07\x3f\x06\x76\x5d\x37\xfe\x89\x3a\x3f\x53\xe2\x3d\xe8\x66\xdd\xac\x33\x49\x5a\x39\xad\x33\xee\x9e\x9d\x5c\x22\x50\x2b\xc1\xc4\xb5\x47\x0d\x0e\x3f\x3a\x58\x52\x23\xfe\x4c\xb9\x3c\xc4\xad\x2b\x5b\xa6\xd7\x88\x26\xa5\x3f\xc0\x25\x3d\xc5\x80\xa2\x01\x8c\xc9\xff\x1c\xfe\xdb\xd3\xac\x0b\x53\x29\x2d\xee\xfb\xc1\x4e\x58\x9a\xcf\x49\x6c\xb5\xf7\x67\x01\x30\xfd\xbb\x6c\xf3\x8d\x20\x89\x53\xc0\x15\xa0\x47\x46\x75\xb7\x24\xbd\x10\x9f\x7c\xb8\x9c\x33\x01\x67\x51\xfe\x7a\xa7\x85\xd0\x99\xd0\x9a\xb2\x0d\xd5\x25\x8c\xd7\x64\xac\x8d\xaf\x34\x3c\xe4\x79\x0e\xad\x08\x63\xaf\x43\x12\x1a\xa5\x27\xa3\x7a\x11\x62\x8f\x47\x86\x96\x68\xf8\xea\xc0\x0d\x80\xb6\xbf\x99\x06\x66\x3d\x7a\x28\x99\xc1\xcb\x67\x8c\xd7\xb3\xeb\x3b\xc8\x02\x26\xb8\xb1\x3b\x6e\x46\x87\x7f\x38\xf0\x7c\x3d\x9c\x86\xd3\x36\x8b\xaa\xc4\xa6\xf6\xb9\x3c\xce\xbc\xec\x98\x11\x47\x4b\x6a\x6a\x4d\xa5\xc3\xa5\x96\x65\x71\xee\xd0\x5e\xdc\xc0\xe3\xfe\x7c\xd1\x59\x15\xc9\x1f\x44\xee\xe8\xc1\x49\xae\x45\x1f\x37\x55\x18\xa7\x9f\xb6\x00\xa9\x71\xa3\x9b\x94\x33\xdf\xa1\x9f\x91\x93\x1b\x19\x32\x27\x57\x47\xc2\x62\xee\xdc\xbd\x27\xf1"}, +{{0x8d,0x16,0x21,0xee,0xab,0x83,0x27,0x0d,0xe8,0x57,0x33,0x5c,0x66,0x5b,0xbf,0x57,0x26,0xe3,0x72,0x22,0x25,0xfd,0x01,0x6e,0x23,0xbf,0x90,0xab,0x47,0xae,0xec,0x3d,},{0xbe,0xcd,0xbc,0x02,0x4d,0xae,0x6a,0x94,0xed,0x4e,0x29,0xc8,0x0f,0x2a,0xff,0x79,0x6a,0xed,0x8f,0xeb,0x2c,0x1b,0x37,0x90,0xa8,0xc7,0x2d,0x7b,0x04,0x8a,0x2c,0x61,},{0xe0,0x8d,0x6c,0xaa,0x5f,0x39,0x32,0x7d,0x6e,0x66,0x52,0xed,0x74,0xdd,0x1a,0x37,0x84,0x4b,0x97,0x9f,0x5c,0xce,0x74,0x7a,0x60,0x6f,0x56,0x79,0xf4,0x89,0x8b,0xbb,0x76,0x43,0xdf,0x7e,0x93,0x1b,0x54,0xa2,0xb4,0x0e,0xbd,0xef,0xe8,0x30,0x03,0xf6,0x1c,0xa0,0xf1,0x11,0x12,0xf0,0x23,0xc6,0xa3,0xe8,0xcc,0x18,0xca,0xfe,0x5f,0x0d,},"\x97\xfa\xcd\xdc\x82\xcc\xcc\xcf\x78\x8c\x31\xb3\x30\x5e\x93\xeb\xa9\x56\xf8\x96\x13\xe6\xe5\x35\x42\xb0\x43\x26\x7f\xee\x54\x4c\x2b\x0a\x8a\xe8\x88\x6a\x31\xb9\xd3\x21\xa6\x3c\x27\x62\x3b\xae\xfe\xa8\x40\xb2\xa8\xaf\x5b\x23\x30\x19\x3f\xfb\x5b\xaf\x87\x3c\x33\x55\x28\xaf\xea\xe2\x16\x01\x63\xc8\x51\xc5\xa2\xe5\x81\x54\xa1\xb0\x56\x9c\x2d\x13\x66\xc0\x71\x04\x37\x62\x3b\x0e\x08\xc6\x86\xe5\x4f\xc2\x79\xed\x4c\x45\xf3\xe8\x56\x86\x83\x75\xf7\x82\x24\xc7\x77\xb1\x3d\x75\xde\x10\xd7\x91\x73\x55\x24\x25\xd1\x5a\x56\x19\x04\x15\x5f\x21\x17\xb2\xf1\x47\x13\xeb\x0b\x04\x64\x8a\x3b\xde\xb3\x30\x21\x67\xd1\x97\x3e\x78\x8a\x06\xcb\x00\xd4\x8c\xcb\x26\x9f\xa7\x1a\xf8\xba\x68\xea\xe5\x5d\xbb\xfd\x95\x94\xd5\xc2\xb4\xdc\x13\xae\x03\x21\x71\x85\x61\xac\xdf\x67\xdc\x8c\xfc\xc2\x5b\xc4\x6b\xb6\x6e\x09\x6a\x19\x41\xd9\x33\x52\x07\xd3\xf7\xd1\x1e\x89\x04\x90\x4f\xab\xe3\xa5\x0a\x38\x83\xe7\x07\x80\x47\xdf\x25\x2f\x38\xb6\x7c\xd2\x8a\x6a\xc4\x5c\x7d\x7a\x1d\x2a\x1d\xe8\xd4\x57\x47\xcf\x09\x30\x1e\x01\xcd\xaf\xd0\xcd\x99\xa6\xe9\x1b\x70\x4d\x50\x9f\xce\x69\x2f\xbd\xef\x2f\x71\xa5\xce\x0b\x35\xbc\x15\xc6\x5f\x87\x68\x24"}, +{{0xf2,0x73,0x5d,0x50,0xee,0x3a,0x9a,0x65,0xb5,0x8c,0x8a,0xcf,0x55,0x16,0x63,0xe9,0x88,0x09,0xec,0x40,0x6f,0x73,0xe3,0xe7,0xf4,0xe7,0x3b,0xc4,0xea,0x92,0x38,0x74,},{0xdf,0x48,0xa5,0xb9,0x4a,0x07,0xaf,0x3c,0x2c,0x99,0xb8,0x38,0x87,0x62,0x24,0x32,0x33,0xc8,0x50,0xdc,0x17,0x53,0x17,0xd6,0x02,0x63,0x8e,0x5b,0x86,0xab,0x49,0xed,},{0x69,0x42,0xa7,0x69,0x64,0x17,0xef,0xaa,0x59,0x1b,0x95,0xe1,0x1f,0x02,0xd7,0x63,0xbe,0xf5,0x27,0x9b,0x93,0x2a,0x8e,0x2a,0x7c,0xbb,0x9f,0x58,0x36,0x95,0xc1,0x4c,0xe5,0xcc,0x55,0x6b,0xec,0x66,0x79,0x9b,0x33,0xcb,0x59,0x2d,0xa4,0xdf,0x27,0x35,0xf9,0xee,0xf2,0xc3,0xce,0xca,0x43,0x62,0x16,0x4b,0x6c,0xc9,0x3d,0xa4,0xe1,0x05,},"\xae\x31\xe9\x4e\x71\x97\xe4\xe4\xd0\x23\x93\x48\x02\x5e\xd6\x68\x1e\x51\x3c\xe1\xa6\xe0\xaa\x0e\x5b\x97\x93\x73\x91\x21\x50\xef\x11\x3e\x50\xef\x05\x69\xc4\x83\xf7\x56\x8c\x4b\xbc\x47\x03\xc5\xda\xca\xa8\x0a\x0d\xe4\xe7\x38\x38\x3f\xa1\xf1\x0d\x6d\x40\x71\xa3\x1b\x99\xe6\x48\x51\x43\x97\x23\x16\xc8\x65\x22\xe3\x7c\x68\x87\xa1\xc3\x07\xb2\x9b\x0d\xd6\xf9\xf1\xb4\x38\x31\x0a\xf9\xd8\xd7\x34\x6f\xb4\x1f\x9b\x2d\xd2\xe8\x0b\x14\xc4\x5e\xb8\x7d\x4e\xd4\x8e\x37\xa5\x26\x0b\x52\x25\x7b\x3e\x99\x78\x7a\x13\xc5\x53\x92\xba\x93\x0c\x08\xe0\x24\x0e\x96\x0d\xef\x0c\x29\xb8\x55\x07\x45\xcf\x14\x9d\xee\x53\xa5\xd1\x74\xec\x06\x5d\x2d\x66\x77\xde\xe1\xfc\x42\x05\x70\x62\xc3\x4e\x27\xea\x5d\xbc\xdb\x86\x1b\x9f\x67\x0c\x60\x32\xc7\x84\x6c\xec\x8e\x87\xa7\xc9\x52\x0e\x27\x96\x7b\x01\x86\xee\x71\xb7\x7e\xd6\xd0\x29\xbb\xdd\x70\x94\x9c\xec\x4a\x70\x93\x29\xfa\x37\xfe\xe0\x02\x49\x0c\xc1\xbc\x4c\x2d\xf6\xf7\x63\xf9\x85\x8f\x33\xd7\x50\xc5\xb5\x05\xa6\x7e\x23\x70\x63\xc0\x48\x6f\x94\x56\xd3\xc6\x20\xd9\xac\x7c\x98\xf1\x38\x1d\xe0\xef\xfe\x41\xc1\x82\x59\x50\x4a\x15\x0d\x68\xa6\xa2\x8b\x0a\x3e\xea\x80\x3b\x85\x53\x15\xc9\xe0"}, +{{0xca,0xd9,0xd2,0x1a,0x01,0xc7,0xe1,0xd1,0x5d,0xf2,0xfb,0xd7,0x9c,0x51,0x6e,0xb8,0xc3,0x40,0x1e,0x9f,0xe2,0x84,0x67,0xcc,0x7b,0x21,0x67,0x9d,0x4e,0x33,0x1a,0x3d,},{0xa7,0xb5,0x5c,0x15,0xd6,0x79,0x0b,0x40,0x53,0x6f,0xca,0xe5,0xad,0x28,0x92,0xcd,0x66,0xb1,0x86,0x89,0xf4,0x99,0xc1,0xfd,0xee,0xa6,0x6d,0x4a,0x7d,0xf3,0x94,0x24,},{0x31,0x92,0x7d,0x01,0xdb,0x9f,0x24,0x72,0xf4,0xdf,0x6f,0x63,0xc1,0x8e,0xbd,0x83,0xc2,0xb1,0xaa,0xf8,0x8d,0x58,0x0e,0x84,0x88,0x54,0xdf,0x8c,0xba,0x63,0x95,0xd3,0xda,0x7b,0xd6,0xbb,0x9e,0xdc,0x1f,0xce,0x1c,0x7d,0x7e,0x13,0x60,0x55,0x8f,0xcd,0xdf,0xa9,0x39,0x15,0xbe,0x07,0x6e,0xfb,0x8e,0xa2,0xdc,0x5e,0xa7,0xb2,0x0d,0x0a,},"\x70\x70\x2b\xf1\x9c\x91\x9f\x98\x36\xde\xfd\x7b\x84\x6f\xd9\x99\x2d\x8b\x7e\xb2\xe1\x06\xae\xb7\x1e\x60\xa3\x1b\x4e\xa2\x5a\x41\xb2\x12\xdc\x7d\xe7\xc9\x1c\xbd\x61\x3d\x58\xd0\x59\x5d\xb8\x33\xcf\xe7\xe5\x05\x84\xf2\x55\x69\x60\x2c\x77\x44\xfa\x67\x5d\x15\x6d\x0f\x63\xcd\x2b\x7c\x08\x9c\x8a\x00\x68\x6a\x43\x71\x69\x82\x6a\x12\xdc\x48\x5b\x38\xc0\x68\xa8\x00\x71\x42\xe5\x16\x37\x47\x01\x1a\x07\xa4\x15\x68\x36\x22\xab\x1e\x23\xce\x57\x7c\x73\x2b\xa1\x4f\x40\x1f\xbc\x30\x43\xe0\x69\x3a\x92\x05\xc1\x9a\x92\x29\x8a\x3d\x9b\x08\xfb\x7a\xfa\xfa\xe0\xa9\xf0\x16\xbc\x75\x0e\xe6\x31\xa5\xf5\xda\x5d\xb6\xf9\xba\x26\x92\xc7\x4c\xaa\xae\xb4\xd0\x97\xe9\x0e\x3c\x02\xd2\xe3\xa7\xfb\x3a\xa0\x00\x04\x0b\x7c\x17\xb7\x45\x64\xe6\x46\xbe\xa1\x6b\xad\x61\x1e\xbc\x08\x59\xa3\x82\x88\x04\xab\x4f\x5c\xfb\xa4\x17\xd2\x54\x51\x5c\xa3\x62\x0a\x3a\xd6\x83\xc4\x6c\xa6\x26\x7b\xb4\x95\x39\xbb\x30\xe3\x69\x08\x7e\x67\x43\x8e\x94\x89\x56\x27\x50\xdc\xcb\xa3\xaa\x0b\x1b\x0a\x6c\x26\x70\x32\xd2\x0c\x2a\xdb\x75\xe6\x8d\xf1\x12\x3b\x52\x59\xbf\xe4\xea\xc6\xca\xdc\xa6\x77\x81\x38\xa3\x73\x18\xad\xb3\x0e\x8d\x66\x9f\x3b\xc9\x69\x2c\xc7\x4b\x68"}, +{{0xd9,0xbe,0x84,0x22,0x55,0xe9,0xa1,0x6b,0x0a,0x51,0xa8,0x67,0x42,0x18,0xce,0xe7,0xcd,0x9a,0x8b,0xdf,0x34,0x35,0x08,0x39,0x7f,0x4d,0xdb,0x05,0xf3,0xfa,0x00,0x82,},{0x79,0x31,0xbc,0x6d,0xfa,0x33,0x24,0x94,0x3a,0xab,0x18,0x3d,0x12,0x85,0x51,0x59,0x19,0x39,0x9f,0xfe,0x0b,0x71,0x06,0x77,0xf0,0x91,0x5d,0x3a,0x5b,0xe5,0x1e,0x92,},{0xc9,0x38,0x45,0x65,0x8c,0x95,0x60,0xd2,0xc0,0xe2,0x8f,0x28,0x2a,0xdb,0xd4,0x65,0x2b,0xaf,0xd3,0xbb,0x2e,0xde,0xc1,0x7c,0x94,0x87,0x8f,0x7b,0x94,0xd3,0xc7,0x7a,0xfe,0xc9,0x06,0xed,0x29,0x2a,0x8d,0xfb,0xf5,0xf8,0xe7,0xc1,0x18,0xe8,0xf2,0xca,0x33,0xdd,0xa7,0x90,0x9d,0x9b,0x69,0x5b,0x8f,0xf5,0xa1,0xc0,0xe9,0x7a,0xc8,0x07,},"\xac\x6c\x55\xb1\x34\x66\x3e\x41\xf0\x2a\x6d\xcb\x85\x49\xea\xa1\xc0\x13\xf5\x96\x58\xd8\x1d\x81\x2f\x95\xb7\x40\x09\x51\x37\x23\x67\x19\x45\xe1\x32\x4f\x90\xf8\xa3\xf9\x71\x36\x91\x81\xb5\x87\xba\xb4\x56\x65\xf7\x88\xd6\x63\xab\x78\x14\x0c\x5a\x22\xc1\xc1\x8d\x4a\xfe\xdc\x74\x48\xa7\x48\xaf\xe5\xbf\x23\x87\x00\x3c\x1d\x65\xab\x18\x48\x2e\xf9\x89\x22\xb4\x70\xda\x80\xad\x14\xc9\x44\x95\x1c\xe4\xae\xd3\x73\x90\xcc\xe7\x9a\x8e\x01\xb2\x4c\x7d\xfc\x11\x41\xc0\xec\xa2\xc7\xf7\x73\xed\x4b\x11\x80\x6a\x34\x61\x55\x13\x48\x6e\x4e\xe1\x1a\xf0\x80\x78\xa1\xb4\x05\x4c\xf9\x88\x02\x98\x60\x8d\xd9\xb3\xfa\xa1\xa2\x42\xa4\x52\xfe\x51\x16\x04\xb3\x10\x2c\x31\x3d\x14\xcc\x27\xc6\xf0\xf8\x47\x1d\x94\x55\x53\x17\xea\xa2\x64\xcd\xf5\x2c\x69\xe1\x8f\x46\x1e\x47\x90\x3d\x21\x29\x87\x16\xb1\x72\xee\x9c\xb1\x78\xf0\x8f\xf2\xd3\xc9\xc1\x62\x12\x1c\x2e\xd2\x1d\x87\x34\xb2\xf0\x63\x0d\x39\x91\x46\xcb\xf7\x6e\x02\x8a\x14\x3f\x2b\xf7\xbb\x50\xaf\x0f\x57\xb9\xba\x80\x21\xd2\x64\xb0\x0c\x66\x62\xf8\x4c\x86\xcb\x6d\x59\x52\xb3\xd2\x41\xf7\xdc\x3e\x70\x0c\x96\x61\x6c\xbc\xfb\x0d\x0e\x75\x3f\xfd\x5d\x21\xee\x32\x0e\x65\xe9\x7e\x25\xcb\x86\x09"}, +{{0xcf,0xc4,0x8c,0xc6,0xf6,0x58,0x11,0xfe,0x7d,0x7b,0xba,0x85,0xd1,0xcd,0x84,0x85,0x8f,0xd6,0xf7,0xed,0xd6,0x38,0xf4,0xf5,0x52,0x36,0x3e,0xe7,0x68,0x5f,0x69,0xca,},{0xd2,0x9c,0x10,0x69,0x4c,0x5e,0x8e,0x3f,0x34,0x47,0xed,0x78,0xd3,0x4d,0xbd,0x74,0xa2,0xb3,0x01,0x37,0x3b,0xa8,0x71,0xb5,0x85,0x0c,0x33,0x3d,0xff,0x7b,0xf8,0xd0,},{0x80,0xc5,0xd5,0x1e,0x96,0xd1,0xca,0xc8,0xef,0xd3,0x45,0x98,0x25,0xe7,0x9c,0x1e,0x9f,0x65,0xaf,0x70,0x1d,0x1d,0x29,0xe1,0xf9,0x5b,0x03,0x67,0x07,0x11,0x3b,0x77,0x98,0x4b,0x7b,0x33,0x50,0xf0,0x40,0x77,0x33,0x3c,0x95,0x7f,0x8f,0xbc,0x7d,0x9b,0x04,0x0c,0x36,0x26,0x51,0x41,0x7b,0x98,0x99,0x02,0x7c,0xd3,0x3e,0xdb,0x11,0x03,},"\x8e\x7d\xef\xb9\xd1\x6d\x03\x6b\xd6\x42\xcf\x22\x6e\x32\x77\x3e\x60\x53\x61\xc5\xec\x4b\x95\x12\x55\x78\x8d\xb0\xa0\x42\xc6\x3e\x5a\x43\x67\xd6\x15\x24\xf1\x0e\x62\x58\x99\x13\x25\xa3\x9a\xb6\xb0\x36\x12\x26\x0c\x3f\xe3\xdf\x20\xb3\x42\x02\xd3\x43\x95\xbd\x4e\xd4\x0b\xd6\x13\x73\xdf\x78\x1a\x4c\x8b\xcf\xbd\x15\x30\x10\x60\xf0\x74\x37\x73\x23\x33\xd8\xe4\x97\x36\x32\x2d\xee\x6b\x22\x43\x8e\x78\x7d\x88\x56\xb7\x0c\x26\xec\x57\xd6\xda\xde\x9c\x3c\x28\xe2\x72\x20\xc5\x67\x0e\x39\x35\x44\xed\x09\x59\x37\x29\x8d\xc3\xad\xc7\x38\x65\xf7\x77\xe9\x00\x37\xbd\xef\x83\x47\x16\x47\x6d\x78\xf4\xe6\xcb\x49\x61\xa4\xc6\x8a\x8a\x83\x63\x38\xa9\xf5\xda\x17\x9c\x4d\x5e\x93\xc3\xf7\x0d\xd3\x5e\xec\x70\x96\x53\xdd\x8d\xe3\x79\x96\xb1\x20\x56\xd4\xee\xfc\xb4\xb6\xb3\xc1\x3b\xa9\x84\xd8\x32\x27\x5c\x43\x86\xeb\xf4\xa8\xff\x7f\x07\x8b\xe3\xd4\x28\xc1\xe0\xd9\xb1\x62\x38\x1f\x06\xa5\xb7\xbb\x12\x70\x40\x03\xd9\x1f\x25\xd1\xd8\xfd\x43\x62\x6c\xe7\x0f\xff\x59\xd2\x92\x77\x68\xa7\x6b\xf7\xf9\xef\x76\xff\x95\x48\x9f\x38\xed\xcd\x1c\x9e\x9b\x8a\x8b\x0e\xf6\x6c\x32\x80\x57\x76\xd5\xae\x9f\xbd\x84\xa7\xaf\x4f\xa6\x56\x3e\xc7\x0a\xc5\x73\x3a\x44"}, +{{0x15,0xc9,0xf7,0xc4,0xd8,0x4a,0x5a,0x47,0x90,0x41,0x95,0x2e,0x6a,0x8c,0xac,0x24,0xe7,0x6f,0xd2,0xd2,0x75,0xc1,0x97,0xe6,0xb5,0x21,0x92,0x9b,0x43,0xba,0x6c,0x5d,},{0x86,0x33,0xc1,0x82,0x9d,0x29,0x09,0x1d,0xf7,0x1f,0xd5,0xc0,0xef,0x64,0x05,0x72,0xe4,0xb6,0x49,0x74,0xcd,0x09,0x7d,0xbe,0xbb,0xcd,0xde,0xba,0x04,0x16,0x47,0xc0,},{0x1e,0x36,0xbe,0xa5,0xa5,0x83,0x76,0x7e,0xbd,0x80,0x30,0x6c,0xab,0x23,0x31,0x55,0xb7,0xb4,0x28,0x14,0xb4,0x34,0x73,0xcf,0x45,0xcd,0xc5,0x03,0x9c,0x93,0x97,0x44,0xa9,0x69,0x4b,0x87,0x22,0x0d,0xaf,0x4c,0xcd,0x29,0xf2,0x5c,0xea,0x40,0x5e,0x7c,0x08,0xdb,0x2e,0xf1,0x7f,0x3f,0x03,0x4d,0xbb,0x49,0xcf,0xf6,0x02,0x83,0xe3,0x06,},"\x11\x73\x0d\xd4\x5d\xda\x80\xd8\x4d\x08\x0d\x92\xe9\xbd\xda\xee\xa6\x87\x8e\x4a\x0b\x3b\x51\x2d\x9e\xa7\x33\x80\x8e\x1c\xef\x51\xd4\x90\x48\xd6\xc7\x81\x16\xa4\xbd\xe3\xc6\x4a\xce\xaa\x52\xbe\xca\x86\xb3\x31\xab\x59\xe9\x18\x5c\x70\x28\x6a\x02\xbb\x5d\xd0\x4f\x5c\x7f\x4e\x9c\x7e\x44\x5e\x77\x45\x85\x65\xf1\x59\xc7\x83\xdf\xd4\xd9\x76\xa9\x10\xe9\x37\x78\x9d\x21\x41\xd4\x16\xed\x3a\x7f\x60\x8d\x26\x73\x7a\x86\xb2\x0b\x62\x4e\x3c\x36\xaf\x18\xd2\x5c\x7d\x59\xb8\xd7\x42\x7e\xc6\xc4\xd3\xd4\x38\xd7\xae\x09\x49\xdd\x7d\x74\x8c\x1f\xfd\x6f\x28\xe8\x28\x5d\x44\x04\x22\xd2\x2a\x37\x61\x20\x2e\x95\x84\xf5\xcd\xb3\x50\x45\x47\xaa\x4b\x68\x57\x30\xc9\x82\xcb\xa2\x13\xde\x08\x02\x0a\x5e\x4e\x46\xa9\x5f\xac\x4b\x48\x1b\xea\x0b\x63\x0a\xbd\x03\x0d\xdd\x33\x5a\x20\xfe\x2c\xf7\x09\x4a\xef\x48\x13\x95\x69\x91\x91\x3c\x68\x21\xf4\xb5\x41\x0d\xf4\xf1\x33\xfe\x63\xe2\x2c\x08\x09\x2a\x0a\x65\x97\x27\x22\xa2\x7a\xe4\x20\x11\xa8\x07\xc3\x27\xb4\x17\x23\x7c\x54\x01\x14\xee\xcb\x9f\x0e\x96\xcd\xa5\xdc\xf0\x24\x6f\x1d\x27\x17\xf4\x9b\x9c\xea\x9d\xc6\xa3\xda\x9b\x39\x6f\x02\x70\x52\x92\x26\xf5\xdc\xba\x64\x99\x91\x8a\x6c\x28\x9f\xe0\x55\xfe\xc8"}, +{{0x6d,0x2d,0x0d,0x82,0x3f,0x29,0x47,0x46,0xb9,0xa5,0x51,0x2e,0x14,0xe7,0x3c,0x1d,0x85,0x5b,0x5e,0x4b,0xca,0x65,0xfe,0x81,0x77,0x29,0x81,0x0c,0xc5,0xef,0x84,0x0d,},{0x1b,0x64,0x80,0xa6,0xa9,0x0d,0xfb,0x47,0x29,0x84,0x85,0x5c,0xef,0x6f,0x1a,0xb3,0x1e,0xb7,0xb3,0xf1,0x3c,0x8a,0xc0,0x0f,0xa5,0x56,0xd2,0x0b,0x53,0xe5,0xae,0x17,},{0xb5,0x15,0xf4,0x9e,0xb3,0x2a,0xd4,0x78,0x69,0x2d,0xf8,0x8f,0x07,0xb7,0x80,0x2c,0x6e,0x0e,0x53,0x27,0xaa,0x08,0xa6,0x36,0x6e,0x4c,0xb1,0xd1,0xe2,0x6f,0x9e,0x65,0xfc,0x81,0xab,0xeb,0xe2,0x21,0x5d,0x64,0x91,0x00,0xf2,0x75,0x98,0x27,0x3a,0x41,0x2b,0x62,0x4e,0x84,0x2d,0x81,0x30,0x40,0x37,0x97,0xe5,0x7d,0xec,0x97,0x5a,0x0a,},"\x87\x72\x72\x1f\x72\xea\xf7\xf7\x30\x40\xc0\x68\xa7\xc3\x75\x3b\xff\xca\x7d\xc2\xd0\x93\x0c\x65\x25\xf4\x25\xe6\x00\x5c\x25\xcd\x4c\x0f\xf5\x09\x5c\x9c\x61\xa5\xd8\xa1\x96\x7b\x8c\x86\x01\x0c\x88\x4e\x50\x9e\x6b\x16\x70\xf7\x90\x46\xe2\x29\x79\xeb\xd3\x54\x73\x40\x90\xd3\xad\xa2\x14\x35\xc1\xf8\x25\x4f\x7b\x52\x22\xcd\x55\x64\xf0\x64\xe9\x77\x64\x03\x66\x44\x9f\x4e\x50\x08\xf8\x70\xf9\xc4\x84\x05\x65\xbf\x4f\xb5\xf5\x74\xc9\x77\x4b\xa2\x56\x8e\x71\xa9\xcc\xd8\x2f\xfc\x59\xb6\x94\xf2\x6e\x7d\xe4\xce\x2e\x3f\xd8\x80\xa0\xee\xf3\x87\x93\x13\x33\xed\xe0\x0d\xcb\x06\x5e\x6d\x0f\x79\x59\x1a\x2a\xa9\x56\xdf\x19\x48\xa2\x65\xcb\x95\x75\x0d\x8a\x23\x3b\x15\xc2\x88\xa0\x54\x87\xc5\x15\x66\x3f\x93\xe7\x40\xfb\x15\x70\xfb\xe4\xbd\x80\xc6\x8e\x8d\x92\x97\x34\x5a\x8a\x01\xcd\xbd\x88\xf4\xa3\x9b\xed\x9c\x5e\xf0\x9f\x14\x4b\xce\x5d\xe5\x68\xbf\x37\x33\xbc\x53\xb2\x03\x9a\x29\xcb\x3e\x19\x45\x01\xad\xc1\xc1\x0e\x86\x38\x3a\xac\x8b\x0f\x85\xc6\x7a\x66\x89\xbb\xe1\x47\x0a\x39\x24\x76\x31\x34\x39\xca\x88\xd9\x8c\x02\x1c\x0e\xae\xc2\x5f\xb2\xf9\xa1\x60\xce\x5c\x78\x61\x70\xbe\x02\x38\xfb\x87\x85\xdd\x33\xbf\xa9\x05\x9a\x6c\x37\x02\xd0\xde\x05"}, +{{0xc0,0xcf,0x79,0x9a,0xf7,0x39,0x5b,0xf2,0x7b,0xaf,0xa3,0x6c,0xab,0x43,0x70,0x45,0xe3,0x9c,0x90,0x3b,0xf8,0x07,0x54,0x83,0x19,0xce,0x44,0xf2,0x87,0x49,0x4f,0xbb,},{0xaf,0xbf,0x55,0x0c,0xa2,0x90,0xc9,0x05,0xbd,0xd9,0x2f,0xc8,0x83,0x1e,0xbe,0x3d,0xfe,0xb6,0xda,0xae,0x4f,0x56,0x00,0x52,0x53,0xcc,0x50,0x95,0x1e,0x50,0xed,0xc2,},{0x5b,0xba,0x01,0xa4,0xc7,0xb2,0x55,0x42,0xd0,0x69,0x12,0xde,0x70,0xaa,0x1e,0x22,0x04,0x23,0xfd,0xf8,0x33,0x8a,0x9e,0x69,0x33,0x95,0xcb,0x6f,0x0d,0xc1,0xfb,0xfd,0x01,0x8e,0x3c,0x77,0xe5,0x0a,0xef,0x90,0xa9,0x08,0x0f,0x30,0xf1,0xf5,0x79,0x2b,0x24,0x31,0x07,0x8f,0xe6,0xe3,0xe0,0x04,0x64,0x24,0x5e,0x17,0xcd,0x8d,0xc1,0x07,},"\xdb\xe6\x57\x80\xe9\x68\xde\x9e\x40\xff\xb5\x7c\xf5\x9a\x60\xfd\x93\xb3\xf9\xa5\xe7\xd8\xed\x51\x80\xad\xbc\x57\x8c\xa1\xbc\x48\xbd\x9f\xb6\x0a\x13\x24\xc9\xc2\xc1\x14\x14\x79\xa0\xdc\xf0\xf1\xd0\x7e\x84\x93\x65\x26\xdf\x42\x33\x3c\x0d\x77\x3e\x3f\xed\x9e\x40\x38\xde\x5b\x95\xad\x90\x5c\x92\xcb\xe0\x40\x48\x7b\xf5\x5e\x10\xe1\xed\xb4\x29\xa0\xec\xc4\xe0\xe8\xd0\x0a\x98\x8a\x9c\xd5\x3e\x2e\xb3\x72\xf4\xfc\x4c\xd9\x53\x7b\x26\x9b\xa3\xa2\x3c\xef\xbc\x8d\xf6\x47\x6e\x75\x43\x4b\x81\xd9\x3e\x88\x91\xbf\x41\x7c\x82\xe3\x63\xf3\xe4\xab\xf8\x0a\x4f\x73\xac\xa8\x4a\xc7\xdf\x63\x37\xf5\x36\xd6\x3d\x93\x9d\x92\xcb\xa6\x4b\xe7\x42\x22\x11\x16\x06\x9e\xf2\x51\xab\xba\x0b\x00\xaf\x01\x71\x8b\xb5\x80\xdd\xbe\xb7\x99\x73\xef\x10\xa6\x8b\x4d\x0f\xa0\x23\xd6\xeb\xd3\x07\x9d\x6b\x32\xa1\xaa\x20\xa2\x1e\x92\x02\xf2\x75\x90\xc3\xf0\xc0\xcc\x25\x30\x73\xc3\xf8\x22\xaa\xc4\x59\xd3\x9f\x50\x75\x8b\x70\xc0\x07\x10\xa3\xc9\x84\x38\x41\x65\x08\x52\x2e\x51\x2a\xda\xa0\xaf\xd5\x03\xa7\xce\xb0\x4f\xb9\x4a\x4a\x93\x2c\xe8\x0c\xd5\xa7\xf1\x1b\xb8\x61\x26\x3f\x58\xe5\x74\x9d\x54\x2a\x11\x0d\xe7\xc7\x68\x9d\xfc\xb0\xc5\x1a\xfa\x9d\x54\xa5\x8f\xf8\x9f\x3f\x67"}, +{{0xcd,0xaa,0x50,0xe8,0x52,0x7d,0xc7,0xa5,0x0f,0xb3,0x7e,0x28,0xfa,0x8b,0x95,0x68,0xc3,0x7e,0x85,0x67,0xe0,0xb4,0x99,0x99,0x7b,0x9a,0xed,0x67,0x61,0x80,0xc3,0xb0,},{0x7c,0x56,0xe1,0x64,0x51,0x02,0x68,0xc1,0x82,0xb4,0x23,0x74,0x79,0x04,0xf1,0xd3,0xa5,0x80,0x93,0x30,0xf6,0xe1,0xb2,0x92,0x66,0xec,0x46,0xe7,0x3b,0xe1,0x55,0x0f,},{0x13,0x7b,0xd1,0x0a,0x50,0xef,0x60,0x93,0x84,0xfe,0x66,0x87,0x68,0xfb,0x87,0x1d,0xe7,0x41,0xca,0x0f,0x53,0xff,0x84,0x77,0xd7,0xeb,0xfa,0x90,0xaa,0xfd,0x5e,0x26,0x81,0xfd,0xf1,0xb8,0x92,0x50,0x46,0x3c,0x15,0xdb,0x8e,0x17,0xa5,0x88,0x25,0xfe,0x94,0x27,0xde,0x08,0x9c,0x34,0xde,0x13,0xcd,0x07,0xbb,0xa1,0x8d,0x4a,0xa4,0x0d,},"\x94\xfc\xfb\xaa\xa3\x03\xde\xce\x7b\x90\x8f\x87\x4c\xc5\xf0\x95\x06\x1f\x17\x54\xbb\x35\x78\x0d\xb6\x66\xb6\x3a\xb8\x29\x08\x11\xbf\x1c\x52\x1a\x7f\x8f\x78\x5e\xa2\x70\xdf\xb3\x9d\x0d\x6e\xd9\x5a\xb7\x19\x55\xa1\x1f\xfa\xea\xa2\x68\xe0\x81\xff\x3e\x4f\x24\x25\xb4\x18\x80\xa9\x87\x15\x1e\x67\x8e\x89\x11\x13\x50\x94\x2d\x82\x0c\x3e\xec\x36\x21\x24\x26\x66\x3b\xe1\x75\xe5\x28\x6b\x4a\xd1\xcc\x80\x4e\x3e\x3a\x03\xb9\xfa\x3e\x82\x83\x8e\xbb\xc2\x61\x5a\x64\x5f\x2c\xa1\x46\x8a\xc4\xa1\xcd\xbe\x52\x37\x61\xe8\x3f\x43\x81\xb0\xc8\x55\x0a\xe5\xe8\xc8\xcd\x1f\xda\x57\x19\x14\x36\xe2\x7c\xb8\x83\xbc\x64\xbe\x86\xa9\xdc\x61\x10\xef\x34\x01\xd8\x8a\x7d\xeb\xd1\xb7\x01\xd9\xc2\x57\xa6\x82\x6c\xf0\x1e\x9e\x29\x22\xe3\xae\x57\x7f\x28\x34\x27\x5f\xb0\xec\xda\x80\xed\x8c\xf1\x80\x1e\x0b\xc5\xe0\x1e\x26\xa7\x7c\x48\xbd\xf4\x6a\x5c\x48\x94\xd2\x2a\xb5\x3e\x74\x18\x27\xe2\x4b\xed\x5f\x07\x50\xff\xad\x05\xe5\x3f\x1d\x5e\x61\xdf\xd3\x16\xb1\x91\xd9\x79\x7e\xf7\x13\x13\x1a\x8b\x43\x0a\xbe\x3f\xac\x5f\x3c\x4a\x2c\xa0\x21\x87\x8b\x15\xad\xc8\xc5\xf5\x42\x11\x42\x60\xe6\x87\xa9\xd1\x99\xd2\x30\xc4\xe0\xd3\xfc\x69\x69\x93\xb5\x9c\xcf\xa3\xff\xa9\xd8\xd2\xfb"}, +{{0x0f,0xde,0xa9,0xbe,0xe6,0x28,0x8f,0x94,0x7e,0x0a,0xdb,0xdd,0xa4,0xdf,0xb2,0xba,0xa0,0x38,0x91,0xaf,0x25,0x02,0x4a,0x5e,0x13,0x8a,0xc7,0x79,0x84,0xd0,0x05,0x07,},{0x70,0xab,0xd8,0x64,0x30,0xd7,0xe8,0xd6,0x32,0x09,0xc8,0xb3,0x73,0xec,0x4e,0x4b,0x79,0xe9,0x89,0xe6,0x72,0x5f,0xac,0xef,0xba,0xde,0x3c,0x75,0x74,0xd2,0x3c,0xd0,},{0x80,0xc4,0x2d,0xd5,0xdf,0x03,0xb2,0x85,0xa8,0x6a,0xc9,0x5c,0xe6,0x66,0x9f,0x78,0x6a,0x97,0x8a,0x81,0x3a,0x9d,0x7b,0x8c,0x6a,0x23,0xde,0x76,0xfb,0xd0,0x9b,0xdb,0x66,0xc5,0xdd,0x1c,0xc9,0xf1,0xa1,0x76,0xcb,0xa3,0x88,0xd5,0x05,0x17,0x64,0xa3,0x2f,0xa2,0x7f,0x00,0x28,0xba,0x48,0x98,0x06,0x8b,0xd0,0x1a,0x3e,0xe1,0x72,0x08,},"\xcf\x72\xc1\xa1\x80\xa2\xbc\x37\xd8\x47\x8d\x9a\x7a\x39\xac\xf0\x3b\xf2\xa5\x07\x90\xf7\x90\x2f\x81\x12\x12\x22\xd3\x1d\x3e\xc9\x16\xf4\xf2\x4c\xef\x9d\x7c\x41\xdc\x02\x1b\x0e\x84\x87\xbb\x89\x2e\x47\x30\x5e\x54\x52\x03\x03\xe8\x9b\x30\xb2\x63\xda\xc4\xa9\xba\x37\x5d\x46\xc4\x0f\xcf\x40\x05\x35\xc9\x59\xd2\xb7\x46\xa7\xfc\x97\x0c\xf6\x5b\x47\x2e\x84\xb5\xf1\xd0\xeb\xad\xcf\xa1\xae\xd6\xfc\x47\xfa\xcc\xe1\x6a\x36\x6a\x3b\x1d\x6e\x51\x68\x13\xc1\x96\x09\x75\xf8\xf2\xb4\x30\x42\xfb\x4e\xea\xab\xe6\x3c\x6f\x65\xdb\x45\xdd\xb7\xdb\x88\x8a\x19\xa9\xd7\xba\x6c\xa4\x79\xfc\xd7\x0c\x5d\x1e\x97\x0f\x12\xc1\x4f\x4d\x24\xfb\x7e\x2f\x35\x7b\xd3\xa9\x4a\xa1\xb8\x68\xcc\xc0\x84\x7f\x2e\xef\x21\x85\x3e\x25\x3b\xaf\xbf\x07\xc4\xe6\x17\x6a\x1e\xf0\x77\x16\x78\x41\xeb\xbe\x56\x29\x33\x71\x57\xf3\x9f\x75\xc7\x1d\x21\xe7\xe9\x6c\x51\xa1\xb1\x6f\xa8\xdc\x60\xf0\xb1\x27\x9f\xcd\xa2\x64\x1f\xc8\x59\x1e\x3c\x49\x2f\x15\xbf\x83\xca\xf1\xd9\x5b\x2c\xd9\x13\x32\xf1\xb4\x20\x2f\xe7\x28\x62\xca\x2e\xa2\xef\x92\xc1\x1d\xb8\x31\xd8\x2f\x8f\xc3\xd4\x1f\xe2\x9a\x76\xc2\x11\xa7\x58\xe2\xf7\x1b\xd8\x9d\x2c\x66\x10\xf2\x01\x42\x9f\x34\x8d\x56\xe1\x0e\x3b\x7a\xf5\x3e\x27"}, +{{0x03,0xd5,0xe4,0x66,0xf8,0x29,0x8a,0xb5,0x43,0x8a,0x30,0x97,0x6d,0x13,0x22,0xa7,0x21,0x5a,0x64,0x2d,0xd5,0xfb,0x4c,0x3f,0x85,0x19,0x40,0x9a,0x75,0x22,0xf0,0x92,},{0x4b,0x3e,0xd4,0xdb,0x08,0x0e,0x2a,0x45,0x2e,0x16,0x91,0x2c,0x14,0x50,0x44,0x24,0x92,0x0a,0x60,0x97,0x56,0x04,0xe4,0xf3,0x79,0x25,0x8d,0x1c,0x8b,0x19,0x3d,0x6f,},{0x6d,0x7e,0x46,0x58,0xf2,0x6f,0x33,0x7c,0x98,0xe0,0x3f,0x13,0x54,0x2e,0x2f,0x39,0x44,0x0f,0xf7,0xbf,0x8d,0x88,0xf3,0xf6,0xdf,0xa4,0xd6,0x49,0x48,0xcd,0x96,0xb7,0x90,0x51,0x49,0x2f,0xc2,0x8f,0x65,0xf2,0xcc,0x0d,0x23,0xa0,0xc4,0xd5,0xe2,0x30,0x7b,0xb1,0xc4,0x7e,0x11,0xe5,0x3b,0x37,0x1f,0x09,0x1b,0x69,0xf8,0x0d,0xbd,0x05,},"\x1b\x47\xb7\x00\x13\xcb\x53\xe1\xf8\xf4\x97\x1e\x0f\x39\x56\x3c\xe8\x7e\xdb\xc2\xce\xdd\x99\xe5\xa3\x55\x85\xdf\x8b\x00\xa8\x52\xf7\xb9\xc9\x7c\x7e\x4a\x54\x65\xfc\x56\x05\xae\x8c\x5c\x36\x57\x0a\x99\x20\x1a\x7a\xd6\x03\x12\x87\xef\x0c\x7b\x2b\xa6\xe5\x7b\x05\x6d\x0f\xc8\xd6\xca\x43\xbf\x6c\xbd\xab\x09\x89\x34\xb4\x03\x19\x7b\x52\x5d\x22\xd4\x5e\x6b\x29\xc7\x8f\x8d\x61\x83\xe4\x1f\xfe\x19\x7d\xae\x25\xba\x22\xb0\x66\x69\xae\x05\xba\xdd\x7e\x1d\xa6\x93\x2a\x7d\x05\x4c\xba\xb3\xf5\x4e\x51\x46\x22\x3a\xd8\x67\x12\x31\xbc\x16\xfe\x62\x67\x9b\xd2\x81\x7a\x6b\x80\xe6\x53\x99\x8c\x49\x49\xf8\x1f\xf5\x3b\x61\x73\x16\x3e\x11\xda\x3e\x6d\x3c\x76\xd8\x4c\x71\x32\x25\xb4\x17\x3d\x6b\xf0\x6a\x85\xb6\x98\x8a\x48\xbe\x43\x59\xcb\x51\x55\x03\xca\x56\x3f\x43\x53\xf8\xe7\xd4\x5e\x4d\x94\x46\x2c\x89\xa0\x4a\x00\xf1\xb3\xb0\xca\x64\x22\xd5\xdb\x02\x9c\x50\x7d\x46\x48\x34\xa2\x0c\x78\xa7\x13\x66\x1d\x84\xed\xff\xc4\x96\xd6\x92\x82\x61\x98\x94\x43\x7b\x44\x87\x95\x4c\xbe\xa2\xaa\x72\x61\xe6\xa6\x2b\x68\x51\x15\x4a\x5d\x25\xfb\x6b\x4f\x09\xc5\x94\x73\xd3\x85\xce\x03\xe9\x1b\xa8\x65\xea\xb6\x6c\x58\xc0\xab\xb0\xb7\xa7\x8e\x4b\xe9\x27\xe5\x54\x60\xcc\xd7\x0d\x82"}, +{{0x76,0xcc,0x18,0xa1,0xda,0xff,0xfa,0x10,0x05,0x86,0xc0,0x6a,0x7b,0x40,0xf7,0x9c,0x35,0xfe,0x55,0x8c,0x33,0x9c,0x29,0x99,0xa5,0xf4,0x38,0x75,0xcf,0xad,0xe0,0x3e,},{0x4b,0x9d,0xa8,0xd2,0xf1,0x37,0xdc,0x6c,0x85,0x7a,0x99,0xa5,0x99,0x8d,0xd8,0x9d,0xd5,0xf0,0x59,0x71,0xa2,0x1e,0x8c,0x77,0x66,0x70,0xeb,0x47,0xbc,0x12,0x70,0xa5,},{0xdb,0x74,0x75,0x1c,0x66,0xe6,0xb1,0x86,0x60,0x44,0xdd,0x9a,0xe9,0x9f,0x19,0xe6,0x33,0x4f,0x17,0x9e,0x79,0xd8,0xb8,0xe0,0xc8,0xcd,0x71,0xd2,0x2c,0xef,0xb9,0xea,0xb7,0xe3,0xe7,0xa9,0xc2,0xda,0x22,0x5f,0x2a,0x9d,0x93,0xa3,0x13,0xd1,0xcb,0xf1,0xb7,0xfe,0x25,0x97,0xb8,0xd7,0x02,0xbf,0x30,0x17,0xa6,0xa6,0xbc,0x7b,0x7b,0x06,},"\x45\x22\xb1\xd8\x23\x73\xf7\xa3\x18\x22\x1e\x7e\x57\x61\x75\x03\xdd\xf4\x4f\xd5\x39\x97\x52\x2a\x1d\x96\x3c\x85\xb7\x08\xd0\xb2\x45\xde\x37\x2a\xd5\x2e\xc7\xf5\x4f\x62\x13\xd2\x71\xf7\xc9\x1d\x5a\x1d\x36\xd1\x34\xdb\x38\x9d\xf0\xb0\x81\xa0\x6b\xc0\xc7\xa4\x87\x5f\x72\x40\x92\x79\x31\x72\xc9\x11\x56\x41\xc6\xd0\x54\xf1\xd9\x92\xe0\xfa\xe4\xdf\x58\x69\x5f\x0e\xa3\x44\x9d\x7a\x4b\x3a\x88\x57\xe1\x98\x03\xfe\x49\xb6\xd5\x2c\x9f\xf3\x74\x6a\x57\x4a\x27\x56\x95\x65\x79\xf9\xfb\x80\x9a\x0e\xde\xc9\x2c\x55\xe9\x5f\xfe\xfa\x3d\x05\xf1\x65\x82\x2f\x46\x4a\x21\x99\x9f\x29\x69\x1f\x67\x44\xac\x5a\x3e\xe4\x90\x17\x88\x06\x45\xe8\x37\xed\xeb\xfd\x2e\x0f\x24\x99\x7f\x04\x11\x45\xa7\x2e\x23\x76\xad\xa2\x83\x18\x6c\xa2\xb8\x36\x36\x29\x77\x19\x5b\xae\xe3\x0a\x3a\xcc\x81\xb2\x43\xf3\xee\x37\x6a\x2c\x47\x64\xc7\x83\x66\x7a\x4b\x11\x77\xe7\x95\x1d\x3e\x3c\x7b\xe4\xf1\xbd\x7a\xe8\xc6\x0f\xd5\xfb\x0f\xd9\x1f\x0c\x1c\x14\xd0\xd2\x32\x7e\x8f\x20\xd9\x2c\x0d\xfc\xc5\x38\x70\xe9\xd9\x9f\xdb\xf9\xdd\x9a\x17\xe8\x82\x50\x9a\xe7\xba\xa8\x65\x3e\x39\xed\xc8\xee\x56\x90\x00\xd6\x24\xcb\x93\xa0\x75\x4a\x79\x8d\x1f\x81\x1f\x6a\x0e\xf5\x50\x1a\x17\xbc\xf2\x5f\xd0\xf9\x16\x26"}, +{{0x71,0xad,0x98,0x0d,0x58,0xad,0x8e,0x7d,0x33,0x30,0x66,0x89,0x35,0x89,0x36,0xa3,0x72,0xd5,0x19,0x0b,0x24,0xec,0x7f,0x9b,0xde,0x74,0x9c,0xb8,0x11,0x50,0xef,0xda,},{0xfd,0x35,0xa7,0x5f,0xe5,0xab,0xc2,0x01,0x04,0x69,0x1a,0x24,0xa4,0x65,0x94,0x40,0xb5,0x5a,0xea,0xea,0x90,0x2a,0xc3,0xbe,0x27,0x4a,0xf2,0x7a,0xa8,0x31,0x28,0x69,},{0x81,0x67,0x0b,0x10,0x29,0xe4,0x81,0xe9,0xff,0x3c,0x17,0x1f,0x05,0xc1,0x68,0x61,0xc8,0x46,0xee,0x79,0xcd,0xf2,0xe2,0x1e,0x3b,0xf9,0x52,0xbc,0xfa,0xc9,0x75,0x65,0xf2,0xb1,0xdc,0xed,0xf6,0x9d,0x2e,0x7e,0xb3,0x5c,0xaf,0x56,0x62,0xe8,0xbc,0x67,0x1f,0xbb,0x96,0x75,0x6a,0x63,0xa5,0x96,0x26,0x4d,0x1b,0x7f,0x4a,0xf9,0x7e,0x06,},"\xe8\x7a\xe0\x73\xff\x5d\xcc\x54\x85\xa1\x99\x40\xe4\xe3\xff\x26\x3a\x06\x18\xa9\x02\x5a\xd4\x03\x2d\xfb\x36\xd1\x71\xce\x88\x1f\x71\xc1\x8a\x49\x21\x0e\xb4\x58\x19\x80\x61\x42\xe2\xf0\x0d\xb3\x04\x18\x35\xbf\x2c\x3b\xcc\xf1\xdb\xa0\x2b\x8b\x5a\x5b\xda\xf8\xfe\xa3\x16\xc0\x62\x3d\xd4\x8a\x56\x4e\xc1\x66\xf0\x37\xd5\x87\xc8\xc0\x16\x84\xe5\xe5\xc0\xba\x9d\xba\x4d\x23\xb4\x9a\x03\x09\x24\x4e\x28\x2a\x51\x40\x86\x22\xed\xb0\x57\x04\x74\x7e\x0c\xde\xec\x97\x68\x93\x77\x70\x71\x09\x89\x72\xc1\x13\xa8\xab\x63\x9c\x31\xf1\x61\x32\x33\xee\x46\x0e\xea\x8a\x8c\x10\xe1\xe6\xe1\x52\x21\x45\x29\x87\x8c\xf1\xad\xae\xaf\x78\xcf\x19\xba\xc7\x13\x61\x81\x5b\xf5\x79\x55\x49\x8f\xab\x4f\x0f\x2b\x75\x86\xc8\x6f\x9f\x4c\x2d\xdf\x89\x72\xf9\xb9\xe0\xeb\x63\x6d\x84\xbc\xc1\x43\x85\xb2\xd0\x38\xbe\x55\xa9\x63\x70\x2e\xfe\x22\x5a\x50\xbd\xd0\xc4\xda\x92\xa2\xa6\xa0\x91\x00\xea\x04\xa2\x11\xd3\x96\x45\x8d\xce\xb4\x48\x71\x16\x83\x7d\x13\x9e\xb0\xf1\x22\x53\x8e\xd3\x98\x6a\xd0\xaf\x4d\xa2\xdf\xfc\x89\xf3\x26\x9c\xa8\x85\x38\x08\x6e\x69\x1e\x5b\xea\xe9\x58\x1e\x7c\x63\xd8\xe6\x12\xda\x2c\x47\xf7\x4d\xde\x1d\x94\x95\x1e\xad\xb0\xdf\x60\xc3\x89\x7d\x2a\x30\x95\xc5\x06\x09\x3b"}, +{{0x61,0x59,0x4e,0x24,0xe7,0x5f,0x99,0x6b,0x4f,0xb6,0xb3,0xe5,0x63,0xf6,0xa4,0xf9,0x91,0x5c,0xfa,0x65,0xdd,0xb1,0x99,0xb0,0x1f,0xed,0x7f,0x8e,0xd7,0x82,0x4e,0xcb,},{0x86,0x27,0xd2,0x14,0x15,0x79,0xcd,0x25,0x21,0xaa,0x07,0x68,0x00,0xac,0x35,0x4b,0x9e,0x3a,0x47,0xd7,0x1c,0xed,0xc8,0x54,0x74,0x34,0x26,0x82,0x25,0xe3,0x30,0x05,},{0x63,0x02,0xb3,0xff,0x27,0x10,0xbe,0x30,0x6c,0x92,0xb9,0xaa,0xe3,0x0d,0x23,0xc3,0xd4,0xbe,0xff,0x39,0x4e,0x63,0x20,0x1e,0x6a,0xd1,0x17,0x13,0x34,0x5c,0x4f,0xcb,0x5c,0xc8,0xd3,0xdd,0x10,0xad,0xfb,0x82,0xbb,0x11,0xa1,0x89,0xce,0x7e,0xc3,0xe4,0x22,0x27,0x27,0x62,0x4f,0xc1,0x78,0x81,0xc1,0x47,0x88,0xd2,0x71,0x0e,0x16,0x08,},"\xbc\x01\xb0\x8c\x7c\xaa\x23\x61\x00\xa0\x12\xa7\x26\x47\x7d\x0e\xc3\x89\xdb\xfa\xda\xc7\x3d\x51\x06\x42\x4c\x5d\x1f\x3d\x1c\xef\x16\x95\xcf\xd9\x3a\x70\x62\xec\x8b\xf1\x06\x70\x47\x85\x49\x20\x16\x2f\x65\x13\x57\xbe\xdf\x1c\xd5\xa9\x2e\xc2\x9b\xdb\x5d\xff\x71\x6e\x8f\x60\x25\x51\x5a\x95\x49\xba\x36\xcd\xc3\x5c\xed\x7c\x5c\x0c\x36\x8e\x6c\xd9\x2f\x2f\x10\xae\x14\x6a\x20\x72\x8c\x37\x4b\xba\x50\x96\x41\xce\x88\xcb\x42\xff\xf0\xce\xdf\xd9\xfd\x67\xf3\x10\xf9\xd0\x1a\x3f\x36\x90\xeb\x21\xdb\x17\xbc\xe6\x7a\xe3\x5c\x4c\xd2\x4c\x20\x9f\x09\xf0\x44\x75\x9d\x8d\x5a\x7d\x24\x8e\x2b\xd9\x66\x52\x4b\xa8\xc0\xc2\x89\x74\x72\x6b\x43\xbd\x05\xde\x84\x34\x33\xcc\x40\x05\x98\x92\x29\x74\x62\x3d\x9a\xcb\xfd\xc7\x61\xc4\xc0\x43\x75\xa9\x52\xce\x54\xca\xff\xaa\x96\xac\xff\x6d\x9d\xc2\x78\x74\x2a\xf4\x76\xe1\x86\x5c\xb8\xc2\x0d\x13\xd1\xc1\x90\x08\x63\xbc\xa2\x31\xe4\x4c\x6b\x0d\x47\xcb\x41\xd5\x10\xf7\x95\x8f\x48\xf3\x04\xd0\x3d\xa0\x33\x48\x4a\x3e\x1f\x27\x3f\xaf\x69\x83\x37\x5b\x7d\x3b\xe0\x3d\x8a\x0a\x00\x2d\xef\x63\x65\xbe\xb2\xfa\x8c\xcf\x1a\x94\x98\x7a\xdc\xd3\x3d\x0d\xa1\x17\x7f\xc5\x15\x9b\x6e\x56\xd0\x04\x30\x1e\x92\x1d\xbc\x12\xec\x0a\x73\xf4\x13\xcf\x2c\x48"}, +{{0x54,0xe6,0xbb,0xfb,0xf8,0xc0,0x6f,0xf2,0xc0,0x66,0x31,0x8c,0x2e,0xbf,0x03,0xd5,0x06,0x54,0x7b,0xf4,0x3c,0x2d,0x7a,0x5d,0x4d,0xf3,0x05,0xa3,0x03,0x2b,0x71,0x38,},{0x3b,0x71,0xaa,0x1d,0xef,0x66,0x6d,0x91,0x88,0xf4,0x03,0xf8,0x2e,0xd3,0x04,0x54,0xab,0xa5,0xbc,0x9f,0x47,0x0f,0x6e,0xb9,0x88,0xda,0x18,0x7c,0x92,0x52,0x32,0x84,},{0x3d,0xf4,0xd0,0x90,0x79,0xf8,0x30,0xe3,0xf9,0x82,0x28,0x36,0x81,0xba,0x37,0xb5,0x0f,0x3c,0x73,0xde,0x2c,0x5d,0x22,0xa2,0x91,0x35,0x8e,0xbb,0x1f,0xb8,0x54,0xe5,0x10,0xf6,0x3f,0x9a,0x48,0xe9,0xff,0xf7,0xfd,0x83,0x11,0x30,0x2e,0xa3,0xe9,0x69,0x39,0x4e,0x6d,0x49,0xc9,0xe3,0x18,0x20,0x54,0x94,0x2f,0x6a,0x74,0x4c,0xee,0x03,},"\x03\x18\xd7\xcb\x48\x05\xaf\x98\x21\xdd\x3f\x91\x4b\x0e\x07\x6f\xea\x04\xa7\xd2\xdb\x3a\x59\xa0\x0a\xff\xea\xd3\x32\x5a\x2b\xe4\x0c\x1f\x87\xf5\x32\x76\xa8\x55\x26\x04\xf2\x28\xb9\x76\xe2\x88\xb9\xbe\x90\x6a\x7b\xd2\x5b\x2f\xfa\xb8\xa8\xaf\x5d\x0f\x6e\x08\x78\x6f\xd0\x34\xe2\xfe\x1e\xb7\xee\x03\x39\x79\x86\x0d\xd1\xe5\x32\x72\x87\xe9\xe6\x15\xf5\xdc\x5a\x96\x0f\x17\x02\x6b\x56\x84\x2f\xc8\xd4\x4c\xad\x00\x2e\xdc\x85\x01\xcf\xb9\x56\x00\x15\x02\xe4\xdd\xc8\x1a\x77\x00\xd9\xc0\xbe\x88\xeb\x4a\xaa\x64\xa6\xcb\xc3\x9d\xe8\x2f\x13\xc1\x10\x86\xde\x1a\x42\x70\xd3\xaf\x97\x28\x4b\xac\x1c\xae\xf1\xd3\xed\xaa\x10\x71\x66\x6b\xd8\x3b\x2e\xde\x39\x62\xd9\x8b\x9d\x93\x49\x7d\xdf\xd8\xe9\x7d\xab\x30\x89\x95\x0c\xf3\x0e\xd1\x1d\xb7\x7a\xd1\x43\x7a\x0a\xf5\x88\x9d\x8e\xfc\x44\xe6\x12\x42\x0e\x39\x07\x26\x7d\xf3\xac\xff\x4b\xd3\xfb\x6e\x8c\xa5\xba\xdf\x8e\x72\xf9\xde\x39\x52\x86\x53\x05\x85\x24\x45\x6a\x81\xda\x5f\x84\x98\x2a\xfa\xc3\x4b\xef\x5f\x71\xe9\x1f\x8f\x90\x93\x8a\x6f\x5f\x1f\x28\x77\x16\xde\x56\xa0\x94\x6d\x26\x1e\x87\xbc\x77\x5c\xe1\x89\xe4\x1a\x77\xba\xed\xe7\x32\x0a\x3c\x60\x8f\xc9\x71\xe5\x5d\x0a\x77\x3c\x4d\x84\x8d\x42\x86\x37\xf1\x1b\x4e\x44\x60\x39\x0c"}, +{{0x68,0x62,0x06,0x1b,0xe0,0xde,0x9d,0xfd,0x99,0x81,0x18,0x20,0x4b,0x2b,0x98,0xdb,0x3c,0xe7,0xd7,0xe8,0x19,0xdb,0xc1,0x07,0x94,0xaf,0x0a,0xb2,0xb0,0x6e,0x84,0x34,},{0x9c,0x5f,0x7c,0x22,0x65,0xdd,0xe1,0xb2,0x5e,0x4f,0x27,0xec,0x71,0x58,0x0d,0x52,0xdc,0x89,0xf2,0xc3,0xa7,0x12,0xbc,0x1a,0xd5,0xd6,0xd6,0x9e,0x71,0x1e,0x08,0xd4,},{0x96,0x5e,0xdb,0x34,0xe8,0xab,0x8b,0xc3,0x20,0x4a,0x32,0x01,0xd2,0x21,0x86,0x37,0x2d,0xe4,0x24,0x26,0x00,0x29,0x7c,0xfd,0xb5,0x7a,0xa1,0xdf,0x07,0x4e,0xc5,0x0d,0xdf,0x10,0x10,0x5e,0x9d,0x4c,0x89,0xa2,0x66,0xc3,0x4d,0xb7,0x77,0x2a,0xa9,0x4c,0xba,0x94,0x64,0x29,0xe6,0x8b,0xa6,0x2b,0xf9,0xa0,0xac,0x90,0xf5,0xf0,0x5b,0x02,},"\x17\x40\xdd\xe8\x43\x4a\x0d\x68\x99\x25\x67\x9b\x0c\x18\x03\x00\xcd\xbd\x0c\xf6\xa8\x9a\xd8\xfd\xe3\x46\x53\x31\x6c\xee\x4c\x57\x1a\x41\x05\xc9\xe9\xe0\x28\x42\x38\xfe\xf2\xc3\x8a\x09\x15\x7c\x5d\xb9\x43\x40\x57\x1b\x39\x0a\xdf\xb6\x9f\xf4\xc0\xdc\x50\x53\x25\x3a\x67\x9d\x42\xcc\x1f\x1b\xf1\xff\x42\x92\x29\xea\x0a\x50\x44\xc6\xf7\x95\x64\xe0\xdd\x28\x7f\x53\xf0\x15\xb8\x31\x87\xd9\xad\x27\xd9\x10\x39\xaf\x06\x2c\x43\x7b\x15\x75\xa0\xea\xb6\xae\xb8\xaa\x0d\x27\xb2\x76\x65\xd6\xde\xa9\x04\x1f\xf9\x96\x3a\x31\x18\xb3\x29\x8a\x85\x44\xe3\xfd\x69\xac\x68\x77\xe3\xe4\x05\x2f\xe4\x42\x2b\xf0\x35\x60\xb2\xc5\x7e\xc5\x31\xee\x8b\x5f\xf5\x3c\x28\xdb\xde\x35\xbb\x45\xc3\x50\x77\x63\x6e\x6f\x84\x1b\x59\xd7\xeb\x77\xbc\x77\x91\xb6\x09\x38\x58\xa3\xa8\x0a\x3a\xa6\xd7\x78\xdb\xf5\x3d\xb9\xd0\x61\x19\xc5\x0b\x71\xc7\x91\xc0\x49\x5c\x57\x6d\x1b\x59\xd3\x96\x87\x3e\xd8\x71\x48\x53\x52\xc8\x29\x9a\x35\x9d\xa5\xee\x9d\x7f\x36\xed\x14\x55\xf8\x98\x51\xa3\x08\x51\xbe\xa7\x19\x68\x5a\xec\xd0\x8f\x25\x56\x26\x09\xdd\x10\x66\x30\x73\x52\x77\xe1\xd6\x51\x9b\xb1\x68\x7d\xe8\xb8\xc6\x8b\x96\x71\x45\x2e\xdb\xb3\x49\x1d\xa2\x64\xcd\xfa\x00\x17\xc5\x12\xd2\x76\x97\x59\xcb\x92\x5f\xb6\x64"}, +{{0xb2,0x25,0x0b,0xbc,0xb2,0x68,0xd2,0x47,0x7c,0x83,0x12,0xb1,0x90,0x0f,0xd9,0x99,0x82,0xba,0xa2,0x9a,0x68,0x97,0x4f,0xbf,0x87,0x78,0xa1,0x22,0x8d,0xc9,0x75,0x50,},{0x44,0xaa,0x8d,0xf1,0x18,0x16,0x74,0xb0,0x5a,0xde,0x98,0x0f,0x7e,0xdd,0xba,0xf3,0xbd,0x74,0x22,0xa9,0x20,0x28,0x7c,0xb2,0xd2,0xdb,0x59,0xa0,0x63,0xee,0xbf,0x74,},{0xf2,0xb8,0xd9,0x2e,0xd5,0x1e,0xbd,0x10,0x00,0xbf,0x9d,0xd3,0x41,0x1a,0x9f,0xa9,0xe7,0xae,0xe5,0x4c,0x4c,0x86,0xe2,0x4a,0xd0,0xf9,0xad,0x5c,0x55,0x64,0x3a,0x12,0xd6,0x80,0x01,0x9c,0xa0,0x3f,0x21,0x6b,0xd4,0xbd,0x32,0xc9,0xce,0x1c,0xd8,0xa5,0x28,0xc3,0xff,0xaa,0x5d,0x5b,0x1d,0xc9,0x1a,0x4b,0xe5,0x6f,0x0e,0x2c,0x5e,0x06,},"\x7e\xf0\xae\x13\x36\xa6\xfa\xb3\x7f\x99\xda\x5f\xa7\xd0\xde\xc7\x40\x9c\x07\x26\x23\xea\xd8\x4f\x24\x1d\x53\xd0\x59\x6b\x46\x17\x05\xfb\x1b\x3c\x53\x7d\x36\xb8\x9e\x89\x60\xfe\xbb\x4c\xdc\x0d\x42\x7c\xe2\xfc\x1b\xe5\x8d\xbb\xce\x15\x1e\x35\xac\xd8\xb6\xac\xe4\x0a\x19\x82\x29\x14\xa4\xbd\x8c\x4a\xf6\x32\xf1\x36\x41\x8a\xc4\x9b\x18\x4d\x55\x19\x3e\xbc\xc3\x2d\x0d\x79\x87\x09\xb1\xa8\xfe\x29\x4f\xba\x8a\x1f\xe7\x2d\x97\x6b\x44\x00\xd4\xa3\x93\x24\x23\x11\xb0\xf8\xcc\x99\x4e\x89\x47\x5b\x00\x38\xae\x5d\x89\x14\x93\x8e\x8f\x6e\x87\xc6\xf5\x0b\x9d\x65\x6c\x45\xd7\xb1\x42\x31\xef\xed\x97\xf3\xc9\x06\x68\x91\x36\x70\xbf\x5b\xe2\xef\xd5\xc2\x70\xc7\xcb\xaf\x01\xe8\x57\x2e\x98\x00\x97\x8d\xfe\x2e\x10\xa2\xfc\x04\x40\xb8\x55\x62\x9b\xf9\xcd\x40\x9e\xa9\x41\xcb\x69\x22\x6c\xac\x77\x1b\x15\xea\x77\xc0\x32\x68\x48\x80\x6f\xf8\xd2\xe2\x01\xe6\xe2\x6c\xd5\xf4\x54\x30\xda\xdc\xff\x8f\x59\xc3\x21\xc1\xc9\xc6\xa2\x9b\x94\x88\x29\x35\x44\x7d\x3e\x6c\x2e\x88\x04\xb1\x16\x15\x76\xbd\xf0\x32\x0f\xe5\x3c\x30\x7d\x9c\xde\x42\x60\x77\xa7\x67\x7c\xde\x3c\x1b\xc8\x3e\x18\xe6\x0a\x0c\x4e\xe6\xdc\xcd\x87\x7c\x21\x3a\x8e\x4c\xca\x64\x0e\xe0\x49\x29\x80\x45\x70\xae\x1f\x96\x15\x7c\x04\x35\x7a"}, +{{0xb8,0x09,0x36,0x1f,0x55,0xcf,0xe8,0x13,0x7f,0xbd,0xa8,0x80,0xfc,0x62,0xcb,0xe4,0x4c,0x21,0x6e,0x14,0x18,0x93,0x34,0x63,0x02,0xb3,0x36,0x04,0x5d,0xe2,0x18,0x78,},{0xfd,0x23,0xe4,0x2f,0xf0,0x66,0x44,0xea,0xd3,0x47,0xab,0xcc,0x1b,0x3e,0x03,0xb0,0xe8,0x85,0x93,0xb6,0x12,0x54,0x98,0x1d,0xd8,0xae,0x59,0x45,0x4e,0x61,0xb3,0xe0,},{0xb5,0xb5,0x95,0x0d,0x37,0x72,0xd2,0xee,0xf8,0x8e,0x1b,0x0f,0x5d,0xf5,0xff,0xae,0x2f,0x21,0x03,0x88,0x5e,0x71,0x44,0x6d,0x34,0x6f,0xbb,0x5d,0xae,0xf9,0x49,0x67,0xa6,0xb7,0xb6,0xe4,0xbe,0x88,0x51,0x10,0x06,0x58,0x76,0xc6,0x65,0xb7,0x81,0x2d,0xe4,0x6a,0xd3,0x1e,0xc3,0xbf,0xcb,0xea,0xee,0x13,0xed,0x0c,0x1e,0x0b,0x30,0x0e,},"\x17\xac\xe1\x97\xd0\x83\xaa\xf1\x72\x6f\x53\xe5\xef\x81\xb5\xa8\xc0\x92\x22\xf2\x60\xee\x5f\x1f\x54\x04\xab\x78\xd9\x00\xd4\x89\x68\x84\x49\xb8\x43\xba\xd3\xc4\x98\xaa\xc6\xd8\x0b\x46\x39\xb7\x6e\x6e\x81\xc5\x52\x76\xa6\xf9\xc7\xce\xcd\x70\xb7\x1a\xaa\xf2\x01\x8e\xf7\x6c\x0e\x30\x15\x4a\xae\x86\xa5\xc8\x6d\x4e\x8d\x0e\x4e\xc6\x8c\xc4\x27\x06\x0b\xd5\x65\x14\xf7\x23\x80\x86\xbb\xef\x5b\xfc\xa1\xf5\x67\x1b\x18\x04\x18\x38\xfd\x01\x35\x72\x44\x3d\xba\x48\xfb\xdd\x95\xca\x74\x0b\x0d\xaa\x43\x27\x16\x4a\x1e\x34\x67\x72\x49\x70\x8f\x77\xbd\x79\x3e\x7c\xaa\x66\x38\xb5\xdc\x9f\xbe\x6f\x0d\xfd\x41\x20\x20\x90\x97\x20\x9c\x93\xce\xdf\xaf\x21\xb6\xbf\x59\xca\x6e\x99\xe6\x20\x96\x39\x44\x4f\x0e\x82\x7b\xbc\xc0\xa6\x1c\x3a\x23\x7c\xa2\x2a\x28\x32\x13\x22\x3a\xb6\x58\xe7\x12\xc7\x55\x62\x38\xd3\xa5\xfe\x31\x72\x2d\x65\xf5\x70\x6e\xf6\xd6\x4d\x73\x23\x2d\x30\x43\x22\x0f\x14\xe5\xcf\xd3\xc2\xc8\x3a\x83\xd6\x8e\x20\x27\x4b\x6f\x96\xb2\x9d\xe0\x40\xce\xc8\x47\x50\x30\xb6\xa8\xa8\x7d\x29\x80\x8d\xd3\x81\x79\x5c\x3d\x22\xac\xf5\xdc\x19\x3b\x72\x0d\x95\xa7\x52\xd9\xf1\x23\xc2\x09\xff\xba\x00\x4e\x48\xdd\x06\xdd\x8c\x9e\x17\x2b\xc9\xe0\x87\xd8\x0b\xc5\x21\x6c\x0b\x0b\x6e\x77\x03\x12\x41"}, +{{0xee,0xef,0x80,0x74,0xc2,0xeb,0x9a,0x1c,0xee,0x2f,0x2d,0x3b,0xb0,0x53,0x25,0x54,0x6a,0x9f,0xb7,0xcb,0xe4,0x4b,0x59,0x94,0x61,0xfc,0x58,0x85,0xf5,0xfd,0x9c,0xac,},{0x9b,0x89,0x29,0x41,0xa0,0x57,0x3b,0x7a,0x16,0x73,0xef,0x48,0x0f,0x08,0x11,0x68,0xd9,0xb7,0x49,0x6a,0x81,0xf9,0x17,0x7d,0xc4,0x27,0xca,0x1f,0x84,0xcb,0xbf,0x7d,},{0x6f,0x71,0x01,0x98,0x4f,0xd6,0x89,0x2e,0x21,0x44,0xb7,0xd4,0x56,0x19,0x83,0x0c,0xae,0xb6,0x71,0x3b,0xfa,0xb4,0xee,0xbb,0xe2,0x17,0xc5,0xbe,0xcd,0x24,0x9b,0xd9,0xd7,0x52,0xeb,0x76,0xe9,0xfa,0x99,0x5e,0x7c,0x71,0xff,0x7d,0xf8,0x6b,0xb2,0x60,0xcd,0xda,0x17,0x3f,0xf5,0xde,0xec,0x6a,0xf2,0x04,0xb7,0xdd,0xe0,0x11,0xde,0x09,},"\x9a\xe3\x9f\xea\xde\x90\x5a\xff\xcb\xed\xd2\xe7\x2a\x6f\x24\x29\xb3\xd1\x10\x8e\x5b\xc1\xa9\xdb\xaf\x49\x0a\x62\x99\xbc\xcd\x94\xac\xc4\x13\xad\xac\xc9\x18\xb1\x4a\xfa\x85\xc7\x8b\xc1\x68\xcc\x00\x74\x0c\x3d\xa0\xe0\x81\x83\x91\x5f\x79\xb7\xfe\x38\x68\xce\x2a\x7e\x88\x6b\x32\xad\x45\x00\x98\x05\xbf\xb8\x1b\x8c\x07\xb3\xb1\x02\x24\x20\xc0\xf0\x09\xb8\x89\xd7\xfc\x22\xfd\x19\x97\xae\x34\x19\x84\x38\xca\x94\x77\x85\x75\x12\x2f\xca\xaf\x96\xe6\x50\x2c\x33\xa7\x5a\x12\x9a\x2d\x0d\xbb\x07\x3d\x93\x82\x0d\x9c\x96\x68\x3d\xb3\x18\x99\x0b\xe3\xfe\xf4\xca\xfc\x89\x0a\xfb\xd9\xb1\x50\x4c\x74\x39\xa0\x8a\x06\x5e\x78\x14\xee\x4f\x9b\x6f\x57\xee\x16\xba\xed\x3f\x0e\x3a\xa3\x5d\xd2\x3d\x35\x28\xa4\x58\x91\x9a\xd7\x70\x48\xb4\xe2\xe6\x17\x23\x46\xbe\x24\x9a\x50\xaf\x02\xbc\x6c\x85\x33\x04\xc2\x08\xae\x0b\xa0\x27\x71\x26\x2a\x0d\x8a\x46\x5f\x71\xfa\x06\x35\xe5\x3e\xb2\xef\x0a\x84\x7d\x56\xa0\xbc\xd7\xdd\x3f\xe0\x77\xc9\x2b\xcd\xca\x30\x69\xa4\xa6\x82\xa2\x85\x99\x28\x31\x5c\xe3\xeb\x44\x5c\x60\x72\xa7\x14\x92\xee\x82\xe1\x72\xa2\x0b\xe0\xb6\x48\xb7\x56\xe6\xc7\x75\x37\x6f\x0c\x7c\x3d\xf8\xe6\x42\x88\x08\x9c\x2f\x81\xce\x95\x93\xc6\xe0\x8b\xb1\xcc\x1b\x27\xfc\xbd\x39\x2f\xc7\x95\x2c\x55"}, +{{0x61,0xfa,0xeb,0x15,0xf8,0x57,0xf6,0x55,0x78,0x62,0xc8,0xb8,0xc7,0xef,0x41,0xf8,0x05,0x45,0x52,0x09,0x96,0xfc,0xc1,0x12,0x7b,0x8c,0x24,0x91,0x82,0x22,0x01,0xae,},{0x60,0xa2,0x90,0xc0,0xfc,0x42,0x5a,0x08,0x74,0x67,0x3d,0x94,0xf9,0xbb,0x14,0x00,0xf9,0xda,0xcd,0xe9,0x95,0x4f,0x9f,0x5b,0x05,0xdd,0x48,0xab,0x74,0x7a,0x39,0x50,},{0x31,0xf9,0x0f,0x50,0xb2,0xdc,0x70,0x5f,0x1d,0x92,0xf1,0x2c,0xa9,0x97,0x5d,0x76,0xf1,0xb2,0x82,0x6a,0xda,0x3c,0xc1,0x85,0xb0,0xed,0x6c,0x83,0x86,0x07,0x77,0xbd,0x8c,0x48,0x9b,0x59,0x85,0x5a,0x91,0xf6,0x48,0x39,0xd4,0x9b,0xa4,0x67,0x98,0x5a,0xbb,0x37,0x6c,0x47,0xa4,0x90,0x8b,0x27,0x1b,0x8f,0x77,0xc5,0x8d,0x01,0xfd,0x04,},"\x25\x3b\x56\x6e\xcc\xb5\x63\xbd\x6e\x48\x0c\x69\x73\x9b\x8e\x37\x25\x19\xa3\x43\x72\x54\xe0\xe5\x02\x9c\xac\x86\xc7\x16\x38\xf2\xdf\x2a\x6c\xf9\xe5\x6d\xb2\x56\x99\x34\xde\xba\x90\xdb\x75\x54\x7e\x36\x71\x74\x7d\xf6\x4d\x6f\x2a\xaf\x3c\x11\x0f\xa6\x7a\x70\x94\xcc\xbe\x4c\xc5\x35\x5f\x0d\x43\x23\x51\x36\xee\x26\xdb\xe3\x7f\x42\x25\xd3\xbb\xfe\x24\x55\x95\x28\x05\x85\xfb\x54\x8f\x89\x4e\x86\xc5\x16\x10\x25\x80\x29\x1f\xa7\xa0\x28\x59\x55\x7f\xb9\x8e\xb5\x88\x87\x08\x28\xb0\x99\x0a\xe9\xd7\x4f\x38\x31\xda\x58\x94\x6b\xc7\xa5\xce\x1b\xa4\x98\xb4\xe8\xbe\x89\x89\xa3\xb5\x0d\x7e\x87\x89\xf5\x6b\x8b\x4f\xec\xbc\x2a\x33\xbf\xa3\xef\x59\x1a\x0f\xbc\xd9\x32\xfa\x93\xe1\x9f\x3a\x81\x2a\xe5\xe4\xe3\xb4\xb2\x42\xbe\x77\x05\xa5\x87\x4a\xf7\x3b\xe3\x10\xb0\x05\x82\x66\xa3\x78\xf2\x3c\x13\x48\x52\x47\x15\xb0\xcc\xc1\x8d\x66\x34\xb2\x36\x36\xc3\x16\xba\x6a\x1d\xd2\xfd\x50\x92\xc0\x67\x16\xa7\x17\xb5\x4d\x0e\xb9\xfc\x7f\x63\x6f\x85\xbb\xf2\x25\xa2\xcf\x03\x5b\x4b\x7c\xfd\xdd\x75\x35\x16\x82\xc0\x57\x6c\x6b\x3b\xa5\xa1\xc0\xb2\x5e\xc5\x94\xe7\x70\x9d\xd0\x9a\x00\x79\x77\x2f\xf3\xac\xc6\x7f\xb6\xc1\xb3\x7b\xb3\x74\x2b\x72\x6e\x77\xe8\x05\x61\xd9\xab\x73\x16\x0b\x73\x36\x25\x81\xda\x5b\x9c\x7f"}, +{{0xe6,0xb9,0xcd,0x4d,0xa0,0x7c,0xb3,0x4f,0x30,0x39,0x1c,0xf6,0x8f,0x0d,0x87,0xc7,0xcf,0xcf,0x68,0xf8,0x10,0xff,0xa4,0x0f,0x97,0x39,0xc9,0x5d,0xeb,0x03,0x7f,0x71,},{0x56,0x9e,0xde,0x0f,0x04,0x63,0x0b,0x43,0xa0,0x4c,0x5a,0x66,0xb6,0xa5,0x63,0x6b,0x76,0x6c,0x75,0x96,0x59,0x84,0xa7,0x47,0x7e,0x15,0x49,0x19,0x60,0xfd,0xd8,0x64,},{0x1e,0x37,0x5c,0x94,0xbd,0x80,0x9c,0xa0,0xcd,0xd0,0x2f,0x89,0xec,0xec,0x4e,0x43,0x77,0x32,0xdd,0x20,0xa0,0xa8,0x4b,0x25,0x4e,0xae,0x88,0x9d,0x80,0x70,0xe6,0x82,0xd1,0x13,0xb0,0xbe,0x22,0xe4,0x1e,0x6c,0xdc,0x3b,0xe8,0x77,0x68,0x0e,0x7e,0xeb,0x7f,0x09,0x95,0xe6,0x62,0x2d,0xc0,0xb4,0x34,0xfb,0x09,0x49,0xdd,0x99,0x4b,0x0c,},"\x69\xde\xf0\x52\x3a\xfd\xa6\x96\xf8\x44\x8f\x9c\x11\x43\xab\xc2\x65\x33\xe6\x86\x95\xa0\x90\xdf\x0d\x9e\x43\xd0\xc0\xef\xf4\x35\x83\xe6\xf7\x09\xd2\x04\x3c\x81\x5f\xbb\x3f\x96\xba\x2b\x0d\xc3\xbe\x6f\xec\xad\x5d\xd3\x81\x48\x78\x8e\x4a\x03\x85\xa9\xfe\x7a\x92\x1f\xcb\x8c\xce\xe0\xe4\xd3\xae\xd4\xbc\x3d\x21\x6d\x84\xb4\x14\xf9\x58\x0b\x02\x82\x0c\x03\xd9\x2e\x67\x5e\x68\x5c\x4b\x58\x51\xf3\x63\xbb\x4d\xf9\x7b\x41\x7c\x3f\xd9\x00\x22\xee\xaf\xa2\x0d\xfb\xe8\x29\x64\xf2\xff\x07\x3d\x25\x57\x58\xfb\xe5\x67\xc7\x6b\x2c\x35\xe2\xb0\x9f\x8a\x8d\x7a\xfa\x32\xc6\xf5\xad\x01\xbc\x3e\xbf\x6e\x21\x06\x06\xdb\x03\x8e\xcb\x68\x20\xce\x1e\xa4\xdd\x52\x9f\xc1\xad\xfb\xc2\xa1\x38\x56\x5a\xc6\xd0\xf4\xa4\x10\x9b\xdd\x47\xb8\xaa\x6e\xf4\xb8\xbe\xde\x45\x46\x80\xd1\xdb\xdb\x75\xfe\x1e\xb2\xe5\x48\xd5\xde\x7c\xb6\xd7\x92\xfe\xf3\xaa\x0d\x84\x80\xa6\x03\x0b\x30\xf1\x04\xd7\xe7\x6b\x58\xe9\xf4\x76\xeb\xf2\xcc\x83\x29\x23\xb5\x0c\x50\xc1\x11\xc3\x51\x5f\xc5\x18\x85\x23\x23\x42\x6c\xa7\x78\xa5\x96\xd3\x19\x5d\xa8\x58\x5d\x8c\x3a\xa9\x20\x83\x31\x3a\x6e\x65\x85\xb7\x0c\x98\xb1\x85\xb4\x72\x79\x8a\x61\xcd\xe7\x7e\x62\xec\x27\x2f\x14\xb0\xd9\xeb\x4f\x22\xf9\xc7\xc0\x58\x17\xda\x6f\xde\xfe\x78\x79\xa5\x84"}, +{{0x4d,0x90,0x44,0xf1,0x7b,0x5a,0x09,0x77,0xdc,0x5a,0xa9,0x91,0x6a,0x92,0x43,0x00,0xa2,0x44,0xa1,0xef,0x7f,0x06,0x02,0x77,0xad,0x49,0x78,0x35,0x1e,0xa6,0x42,0x91,},{0xab,0x9c,0x06,0x92,0xa6,0x06,0xb2,0x56,0x7c,0x19,0xc3,0x0f,0x9f,0xaa,0x3b,0x4c,0xfe,0x72,0xfb,0x23,0x70,0x77,0x76,0x7b,0x76,0xd3,0xb2,0xae,0x14,0x90,0xa6,0xd4,},{0x6f,0xa4,0x8a,0xea,0x4d,0x5b,0x9a,0xf6,0x5a,0xf9,0x64,0xcd,0xb7,0x09,0x44,0x3a,0x11,0xfa,0x84,0xf7,0xd4,0x4a,0xcd,0xda,0xb1,0x6e,0x04,0xa6,0xfc,0xef,0xb2,0x7a,0xe3,0x3c,0x05,0xb3,0x6d,0xa1,0x3c,0x23,0xde,0x51,0x7d,0x6e,0x6a,0xc5,0x74,0xa0,0x3e,0xa6,0x30,0xba,0x4f,0xbb,0x95,0x81,0x31,0x12,0x9a,0xa7,0xf1,0x35,0x4c,0x01,},"\x7c\x8c\x71\x89\xaf\x67\x32\x7a\xf1\xc6\xdd\x2c\x30\xe9\x75\xf1\x90\xe3\xb3\x8d\x00\x8b\x45\x85\x16\x7e\x0d\x45\x07\x40\xd4\x67\x34\x58\x7f\x6d\x20\x87\x84\x24\x5c\xc5\xcb\x06\x2a\x2a\x27\x7f\x17\xeb\xb2\x74\x6f\x9b\xdf\x4a\x82\x37\xca\x47\x9a\xb0\xa4\x30\x17\x7e\x19\xed\x7d\xd3\x62\x25\x76\xb1\x4c\xdc\x08\x28\x22\x14\xfe\x5e\xe4\xd7\x6b\x43\xc1\x6a\xc9\x08\x64\xc5\x1b\xe8\xae\xd4\x5d\x7b\x98\x0d\xf7\x91\x7f\x29\x0f\xdf\x79\x58\x46\x46\x5f\x27\xfc\xb7\xe5\x73\x06\x37\x94\x4f\x05\x77\xc9\x2f\x32\x37\x5e\x99\x5b\xc0\xcd\xa9\xd7\x19\x6f\x2c\x0c\x1a\xc8\xb8\x0d\x12\xa0\x43\x99\x63\xeb\xd2\x25\x4c\x34\x77\x03\x57\x58\x16\xe7\x96\x4c\x13\xd4\x4d\x62\x92\x80\xc3\x12\xea\x26\x53\x44\xde\x38\xf3\xb1\x8d\x91\x50\xf8\xf9\x24\xaf\xb4\x4b\x6b\xfb\x9e\xda\x51\x3d\x59\xe6\x5e\x2e\xf1\x86\x66\xe6\xc2\xa2\x1c\x40\x18\x66\x5b\xef\xe9\x2c\xae\x58\x1d\x3c\xb1\x4e\x23\xe9\x7d\x83\x00\x02\xcb\x90\x93\x1a\xe0\x21\x00\x68\xaf\x39\x4e\xbe\x35\x1b\xe5\xb8\x17\xf3\x67\x4b\xfb\xf4\x00\x49\x03\x0e\x4f\xe5\x05\xd3\x4a\x1d\x50\x2a\x2c\x50\xd8\xe6\x38\xe9\x26\xc2\x30\x67\x6b\x7e\xde\xfb\x6b\xec\x77\xb1\xc0\xce\x60\x93\x25\x28\x7b\xa5\xfd\xd7\xa9\x97\x69\x87\xbd\x07\xfc\x6a\x43\x44\x95\x6e\xbf\x81\x8f\x08\x58\x6c"}, +{{0x75,0xad,0x76,0xbb,0x4c,0x0c,0x22,0x9a,0x5a,0xdc,0x79,0xe4,0x44,0xb1,0x3f,0x88,0xa9,0x64,0x59,0x86,0x2c,0x8c,0xf0,0xba,0x49,0x8d,0x0c,0x99,0x6a,0xf9,0x4a,0x7a,},{0xf0,0x74,0xdd,0x2b,0x9c,0x1c,0x30,0x91,0x05,0xec,0x95,0x1b,0xb5,0x81,0x2a,0x91,0xdd,0xb5,0x40,0x23,0xb3,0x80,0x9a,0xb3,0x79,0xc5,0x6a,0xf0,0x46,0x1a,0xf6,0x17,},{0x0c,0x46,0x43,0xa8,0xbe,0x6d,0xc2,0x2f,0x4b,0xeb,0x6b,0xcc,0x70,0xc6,0x17,0x2e,0xc7,0x60,0x83,0x78,0x65,0x3c,0xb4,0xe9,0x9f,0x3a,0xe7,0x95,0xea,0xdf,0x4e,0x98,0x2a,0x29,0x76,0x09,0xca,0x79,0x38,0xf5,0xdf,0x63,0x2b,0x09,0x56,0x28,0xcb,0x75,0x06,0x2d,0x3d,0x51,0xfc,0x0f,0x33,0x23,0xbf,0xa7,0xb2,0x2e,0xc4,0xd4,0x72,0x05,},"\x0c\xa8\xc1\xc7\x41\x28\xd7\x4e\x9d\x0a\x7b\xf8\x96\x42\x91\xd0\x74\x91\x7f\x2f\x99\x20\xef\xb9\x11\x52\x05\x67\x64\x2a\x50\xa6\x15\xab\xcb\xd0\x0a\xed\x4a\xbb\xfe\xf1\xa9\x83\xcc\xe3\x33\xe1\xd0\xdf\x3e\x64\x04\xfb\x90\x43\xc6\x80\x39\x14\xcd\x5f\xff\xbc\x66\xa0\x79\x0c\x78\x78\xa2\x40\x89\xa5\x71\xf8\x95\x66\x2a\x1d\x18\xbe\x3f\x01\xff\x97\xfb\x33\x23\x33\x4b\x6f\x5b\xaf\x96\x55\x14\x48\xe4\x09\x0d\x03\x3c\x46\x42\x94\xd0\x91\x33\xb1\x51\xd5\xb5\xc6\x32\x1b\x50\xe2\x24\x1d\xe0\xef\x6f\x88\x28\x89\xcc\xf4\xad\x35\x40\xd5\xa1\xe3\xf7\x54\x8f\xb1\x3b\xe7\x1c\x16\x51\x66\x06\xe7\x9d\x04\x49\xc2\xa0\x8e\x5d\xc2\x31\x48\x84\x3c\x84\xe9\x7e\xd2\x40\x69\x16\x1c\x8e\x75\x20\x8f\x33\xe9\x5b\x3e\x10\xd1\xd4\x9a\x2f\xae\xf9\xd9\x86\xab\x62\x80\x9f\x62\xad\x39\xc7\xcc\x87\x1f\x37\x5a\x4f\x5a\x6f\xaf\x10\x4d\x7e\x11\xb8\x90\xcf\xb0\x58\x99\x02\x68\x52\x16\xec\x07\xcb\x8e\x8e\x9e\x7a\x7c\x43\x63\x5e\x23\x21\x2b\x69\xca\x3b\x7e\xd5\x4f\x0b\x97\x94\x9e\x3d\x9a\x66\x62\xf8\xe4\xb3\xab\x09\xcd\x49\x52\x94\xc3\x31\xc0\x47\xd8\x6e\xe7\x85\xff\x65\x8b\xcd\x7f\xcf\x9c\x48\x06\x05\xce\x05\xe8\x10\x06\x8d\x60\xfc\x9b\x26\xb5\xf0\x63\xeb\x90\x00\xd2\x65\x7a\x50\x94\x28\x4a\xc8\x0f\x13\x75\xd0\xb6\x6d\x6f\x5f"}, +{{0xad,0xc6,0xe9,0xb2,0xe1,0x03,0xb6,0x2c,0x24,0xad,0x43,0x46,0x41,0x0e,0x83,0xa1,0xa0,0xbd,0x25,0x3e,0x4a,0xbf,0x77,0x91,0x18,0x50,0xc6,0xd9,0x66,0x6e,0x09,0xf9,},{0xfc,0xe3,0x16,0xe3,0x3c,0x91,0x08,0x21,0xbe,0xed,0xdd,0x63,0x4b,0xed,0xc5,0x8e,0xe5,0x79,0x99,0xa7,0x6e,0xce,0x38,0x46,0x05,0x28,0x3b,0x99,0xb5,0x43,0xb7,0x8b,},{0xcb,0x01,0x7d,0x6d,0x26,0x82,0xc9,0x85,0x43,0x66,0x25,0x9a,0xa3,0x5f,0x30,0xd4,0x91,0xcf,0xaa,0x93,0x09,0x98,0xc2,0x97,0xdb,0xdd,0xc6,0xad,0xed,0x5b,0x3d,0x40,0x1c,0xf7,0x6d,0x80,0xd8,0xa2,0x76,0x4d,0xe1,0x31,0x71,0x8b,0x6e,0x0c,0x48,0x1d,0x71,0x96,0xbc,0x72,0x57,0x97,0x16,0xb0,0xc0,0xf6,0xff,0x05,0x3e,0x68,0xc5,0x0c,},"\x8c\xcc\xd9\x8e\xbb\xf2\x43\x9f\xfd\xfa\xc4\x16\x87\x63\x8f\xaa\x44\x4e\x1c\xa4\xb6\x3d\x13\xe8\x98\xea\xa8\x35\x54\x92\xf2\x88\x13\xab\x81\x3f\xd0\x15\x10\xe1\x12\xbe\x10\x6b\x20\x45\xd3\x0f\x63\x33\x5d\x24\x89\x04\xd5\x21\xde\x18\x1a\xba\xc0\x3e\x3d\x2c\xb2\xd1\x6c\x44\xb3\xb0\x12\xa0\xc5\x1f\x99\x01\xae\xf9\x05\x6c\x72\x4d\x7a\x2c\x6b\x2a\xcb\x0a\x07\x55\x59\x40\xe4\xc6\xe2\x11\x54\x89\x06\x11\xad\xeb\x64\x89\xf4\x61\xd3\xe5\xec\xd1\xaf\x5a\x4d\x2b\x0a\xda\xf4\x17\x47\x43\x6e\xb4\x14\x75\x7a\x8f\xe4\x77\x56\x74\xe3\xc6\xe5\xde\x45\x69\xd6\xfc\x6c\x78\x8e\x10\x90\x5e\xba\x32\xc2\x70\xa3\x93\xe6\xf7\x21\xa7\x65\x29\x4e\x2a\xc9\x9a\x9b\x6e\x53\x4d\x3d\xf0\x8d\x1d\xb9\x7d\x60\x2a\xc3\x19\x5c\xb0\xb7\x7f\x5b\xd4\xac\xaf\x73\x7f\xad\xd6\x99\x1f\x06\x88\xab\xc7\x49\x18\x04\x75\x74\xea\xc2\x82\x89\x73\x9a\x66\x4e\x0e\x0e\x20\x57\x4a\x2c\x25\xfd\xe4\x9d\x14\x53\x9d\xb1\xce\xdd\x4a\x92\x04\xa7\x0a\xcf\xf0\xa6\x2c\x8f\x25\xcd\x76\x8f\xfa\xb1\x5c\x4d\xb3\x16\x84\x0a\x4d\x1b\xc9\x2e\x21\x26\x70\xbe\x07\xc5\xbd\xcf\x53\x75\x90\x60\x7d\xfb\xbb\xb4\xd9\xf9\x8b\x89\xda\x0b\x4d\xf7\xd8\x8f\x3e\xca\x48\x14\xd1\x6b\xfa\x20\xc8\xd2\xfa\x94\xf9\xf2\x59\xf2\xee\x2d\x3a\x83\xc9\xe4\x17\x1b\x1a\x26\x2c\x4b\x99"}, +{{0x37,0xfc,0x1b,0xed,0xa4,0x06,0x0b,0x6c,0x57,0x88,0x3d,0xdb,0xa0,0x77,0x6c,0x2b,0xcf,0x5a,0xc2,0x8a,0x65,0x13,0x26,0x02,0x1c,0xca,0x97,0x72,0x37,0x30,0xfb,0xb0,},{0x7b,0xd7,0xbf,0x1c,0x99,0xdc,0x82,0xe0,0x6f,0x08,0xbb,0x45,0x4d,0x8f,0xb2,0x88,0xa5,0x79,0x27,0xe0,0x7f,0xf1,0xb1,0x2a,0xf1,0x5e,0xe2,0xc1,0x2f,0xbb,0x6b,0x3d,},{0xa0,0x1d,0xd6,0x5f,0xad,0xa2,0x70,0x39,0xf1,0x68,0xb1,0x23,0x41,0x9d,0x8a,0xbf,0xbd,0xa4,0x8c,0x57,0x2e,0xce,0x24,0xfd,0xa0,0x6e,0x1a,0x5e,0xc3,0x1e,0x08,0x4f,0x4e,0xe1,0xcb,0xf9,0x96,0x1e,0x88,0xed,0x51,0xe1,0x89,0xfc,0xb7,0xf5,0xf2,0x35,0xde,0x1e,0x5b,0x28,0xd0,0x8f,0x2b,0xfc,0xa1,0x90,0xb0,0xf0,0x19,0xec,0xc2,0x07,},"\x3d\xfc\xac\x02\x65\xa0\x24\xa8\x3c\xb9\x32\x67\x44\x89\xa1\x63\xaa\xc3\x14\xbf\x3d\x96\x9f\x27\x59\x6e\x45\x17\x33\xb9\x9d\xeb\xa5\xee\xb7\x79\x21\x0b\xaf\x95\xbf\x54\x5a\x1a\xe6\xb8\xa9\x15\x86\x06\x93\xee\x89\x0f\x93\x93\x20\xe0\x6a\x84\x44\x83\xd1\x8c\x6a\x1b\xcd\x03\xc6\x38\xbb\x7d\x1f\xe2\xa8\x2e\xb4\x48\xa3\x11\xb1\x30\x2e\xa6\x42\x8f\x54\xa3\x9f\x45\xa4\xd5\x60\xbe\x15\x57\xa2\xb2\x54\xc4\x5c\x13\x7f\x45\xcc\x68\x35\x68\x36\xe2\x1b\xed\x0b\x7f\x73\xa5\x18\xce\x09\xdb\x0b\xe3\x93\x92\x7c\x33\x9b\xf2\xa4\xb5\x98\x75\x39\x40\x4c\xe6\x50\x28\x4d\xe1\x2e\x3b\x55\x3b\x26\x2e\xfe\x23\x84\x83\x32\xcc\xfd\xc3\x5e\x79\x1a\x0a\xb4\x3f\x13\x9c\x71\xed\x0f\xcb\x2d\x17\x3b\xb3\x77\xee\x46\xb1\xa9\xdc\xa9\x27\x7e\x77\xdf\x85\x5f\x28\x30\x25\x1e\x31\xe2\x6a\xcd\x86\x76\x3c\x8d\x7e\xac\x22\xc8\x82\xfc\x17\x4f\x2b\x5e\x75\xca\x6a\xd1\xad\xe0\x3f\x94\x2b\xb2\xa1\x3b\xf5\x41\x90\x61\x59\x15\x8c\x68\x36\x3c\x74\x80\xc5\xb2\x7a\x99\x32\x0f\x82\x83\xa2\x69\x9d\x43\x69\xc0\x71\xc5\x0d\xbd\x90\xb7\x79\x2e\x47\x72\xef\xbc\x0b\x19\x5b\xce\x84\xcc\x4d\xcf\xff\x70\x72\xa4\x89\x68\xdb\x69\xf9\xfe\xdd\xd0\xf9\xce\xd6\x59\xeb\x5d\xb7\x16\x7f\x35\xf9\x88\xce\xc1\x14\x88\x7d\xcb\xfd\xf2\x7d\x02\xd3\x00\xb3\xe1\xab\xec"}, +{{0x8d,0x42,0xf4,0xdd,0xd2,0xbb,0xd2,0xb8,0x27,0xb0,0xa0,0xd3,0x1d,0x8f,0x75,0x8e,0xbd,0x13,0xa1,0xb9,0xb3,0x71,0x22,0x28,0x94,0x8c,0xa6,0x10,0xbb,0x88,0x58,0xe5,},{0xb7,0x35,0x48,0x98,0x79,0x4f,0x9d,0xb0,0xa8,0xaf,0x6e,0xea,0xfc,0xdb,0xdf,0x01,0x1d,0x3f,0xbe,0xf0,0x21,0x2a,0xd9,0x38,0xa4,0xa4,0xad,0x27,0xab,0x16,0xeb,0xbf,},{0x70,0x76,0x4b,0xe3,0x9c,0x6d,0xca,0x0f,0x06,0x7a,0xbe,0x1e,0xca,0x49,0x0f,0xda,0x95,0x1f,0xd4,0xe9,0x49,0x96,0x95,0x26,0x6e,0x27,0x0b,0x9b,0x05,0xea,0xe7,0x06,0xca,0x8d,0x1c,0xa6,0xa9,0x2d,0x7c,0x48,0x8e,0xc6,0xad,0x8b,0xa1,0x14,0x57,0xa4,0x2a,0x5e,0x31,0x70,0x2a,0x9c,0x2b,0xce,0x89,0x2d,0xc4,0x05,0x35,0xc0,0x9f,0x01,},"\xe3\xa2\xbe\xbc\x04\x96\xd8\x97\x4a\x8f\x40\x61\x88\x03\x69\x31\x4e\xd9\xe4\x40\xc1\xb7\x7e\x26\xfe\x50\x71\xce\x69\x4f\xfd\x21\x36\xdb\x0c\x4d\x5e\x88\x0e\x60\x00\x08\x3a\x75\xc9\x0d\x3c\xf7\x2b\x9c\xf5\xa2\xb1\xa9\x00\x2c\x27\x01\xa2\xff\x59\xb0\x69\x9a\x8f\x42\xd7\x9d\xd8\xa5\xfb\x71\xa8\x12\x54\x53\xd9\x1f\xb8\x00\x80\xa3\xf0\xa1\x65\x84\x28\x2f\x17\xec\x7d\xfd\xc2\xe5\xc6\x9c\x4d\x9b\xdf\x48\x4d\x55\x94\x4d\xae\x27\x3f\x21\x1c\xfb\x76\xad\x37\xda\x45\x87\x13\x65\x43\x9a\xf3\x5e\xea\x1f\xbe\xcd\x4c\xa6\x79\xb5\x9b\x5e\x01\xba\xcf\x49\xc7\xf4\xe5\xef\xaa\x40\x6b\xa1\xda\xeb\x08\x54\x82\xaf\x5d\xed\x89\xdc\x68\x85\xff\xbe\x3d\x14\xd2\x93\x1b\x83\x89\x7e\x28\xad\x06\xe5\x56\x4e\x27\x89\xba\xea\x81\xbd\x93\x2a\xa2\x79\xfe\x8e\x32\x4b\x9a\x8e\xf1\x11\xc2\xab\xe2\xf1\x37\xd4\xbb\x50\xd8\xab\x76\xce\xbc\x0b\xd9\x82\xa2\x39\x19\x75\x1a\xd4\xd4\x9e\x88\xeb\x14\x17\x3d\x33\x10\x28\x9a\x87\x23\x17\xe4\xa4\x51\xe8\x8d\x54\x32\x08\x91\x87\x0f\x15\xb2\xd5\x33\x24\x43\x08\x77\xa9\xfb\x5b\x49\xbb\x92\x9f\x21\x1c\x5b\x89\x76\x4d\xd9\xc3\xa5\x95\xa1\x45\x1e\x9f\x85\xa2\x38\x54\x00\x02\x56\x6e\x53\xa9\x9e\xd1\xe6\xdd\xc9\xb4\x85\x3f\x45\x5e\xdb\x4c\xf1\x98\x0d\x56\xbb\xdc\x13\x13\xa3\x6e\x76\xea\x9c\xbb\x04\x8a"}, +{{0xb6,0x2d,0xe5,0xa1,0xac,0xfe,0x4c,0xa2,0xd1,0xf0,0xc1,0x32,0xaf,0xcb,0xda,0xe6,0x6f,0xb2,0x9a,0x02,0xf2,0x97,0xfb,0xc2,0x40,0x7f,0xad,0xbb,0xf2,0x45,0x42,0x00,},{0xb6,0x3b,0x2d,0x0b,0xf3,0x55,0xf7,0xb6,0xd0,0xba,0xc0,0x74,0x03,0x41,0x1c,0x40,0xaf,0xbb,0xb2,0xf7,0x07,0x50,0x3b,0x3f,0xc2,0xce,0xe8,0xa1,0xc7,0xd0,0xa8,0x38,},{0x5c,0xdb,0x00,0xe9,0x8d,0xe7,0x3e,0xab,0x48,0x0b,0xe4,0x2f,0x8a,0x8a,0x61,0x63,0x80,0x9a,0x0d,0x37,0x10,0x1b,0x6a,0x5a,0x4e,0xed,0x6a,0x0c,0x92,0x03,0x0d,0x09,0xa5,0x56,0x2c,0x72,0x90,0x80,0xce,0x6f,0x65,0x94,0xc8,0xfa,0xfb,0x1f,0x59,0x47,0x72,0xdb,0x7a,0x90,0xa9,0xe7,0xda,0x15,0x89,0x6e,0x82,0xf7,0x05,0x69,0x39,0x0d,},"\xe6\x59\xe5\x1d\x7b\x19\x3c\x4b\x8e\x2b\x3e\xd7\x3a\x9d\x75\x57\xed\x2b\xab\x61\x53\x88\x3a\xb7\x23\x59\x2f\x73\x0a\x91\x45\x67\x14\x2b\x3f\xa4\x35\xdb\x32\x19\xf8\x3a\x54\x2d\xc7\xa4\xbd\x80\x5a\xf6\x66\xea\x86\x5b\x85\x31\x46\xf8\xe3\xa9\xfe\x87\x07\x11\xf9\x0d\x12\xb0\x69\x34\x92\xaf\x2a\x1e\xdf\x99\xa1\x64\x58\xf7\x81\xf1\x26\x6e\xc4\x37\xa5\x29\x6a\x82\x2c\xa9\xd6\x9c\xe8\x44\xb5\xc5\x90\x97\xa2\xa5\x6f\x3e\xb8\xfd\x27\x3a\x63\x61\x16\xdb\x77\x43\x00\x92\x2d\x45\xb7\x44\x65\x7a\x69\x2f\x5e\x8b\xfb\xcb\x06\xd2\x42\x28\x18\xae\xb5\x1e\x7c\xda\x68\xac\xfb\xed\xa1\x6e\x7c\x79\x58\x0d\xcc\xcd\xe2\x4e\x8e\x3d\x60\x1b\x16\xe0\x63\xb4\x3a\x6d\x0d\x14\x07\x55\x2f\x75\x04\xf5\xbe\x19\x88\x2e\x4f\xfe\x32\x34\x4f\x5f\x47\x3e\x73\xa8\xf6\xed\x37\xb0\xd8\xd9\xe5\xe0\xa0\xdc\x98\x28\x39\x5b\xcb\xd8\xf3\xa4\xe3\x12\x48\x69\x24\x9d\x05\x8b\xe0\xe0\x45\xde\x0b\x1e\x12\xb1\xc8\x3b\xa0\xaa\x22\x7c\x95\xb8\x2b\xf7\x42\xc3\xea\xc0\x15\x2b\x33\xe6\xd1\x9b\xe8\xb3\x3a\x35\xbf\x70\x5d\xaa\xb1\x06\x22\xa9\x0a\xed\x02\x2e\xa6\xe4\x39\xed\x50\xa9\x30\x84\x37\x92\x99\x24\xba\x3a\xb1\x11\xad\x0c\xaa\x6f\xeb\x0a\x6e\xb1\x65\x82\x4e\xbd\xb0\x86\x65\x71\xef\xc0\x7e\x52\x22\xed\x86\x86\xb1\x4d\x92\x70\xbf\x76\xb9\x45\xd5\x20\x14"}, +{{0x97,0x32,0x05,0x9d,0x7b,0xf0,0x20,0x0f,0x5f,0x30,0x41,0x24,0x30,0x33,0x6b,0xe4,0xef,0x1e,0x3c,0xae,0x62,0x93,0x8a,0xd0,0x87,0x29,0xce,0x3b,0xa7,0x14,0xcf,0xd4,},{0x0d,0xe8,0x42,0x5f,0x5e,0x30,0xb2,0xb8,0xae,0xbb,0x80,0x72,0x00,0x9a,0x30,0xcf,0x04,0x11,0xc3,0xc8,0x23,0x8f,0x4e,0x42,0x08,0x76,0x0c,0x56,0xc3,0x3e,0x43,0x4f,},{0xfb,0xa1,0x74,0x9b,0x64,0x1d,0xd4,0xdf,0x34,0x66,0x4b,0xc4,0x3c,0x00,0x46,0x8c,0x7d,0x75,0xe8,0x4a,0xfa,0xd7,0x2d,0xe4,0x73,0xfd,0x1e,0x9c,0x87,0xda,0x15,0xea,0x60,0x4f,0xc2,0x54,0x9a,0x1a,0x86,0x7f,0xa8,0x08,0x50,0xe9,0xc2,0xa5,0x9c,0xd9,0x90,0x53,0x88,0x67,0x60,0xa8,0xd9,0x76,0x4b,0x84,0xdd,0x67,0x26,0x76,0x72,0x0d,},"\x1a\x13\xe7\xab\x60\x3b\x48\xeb\x89\x6f\xe1\x71\x73\xfb\x31\x95\x0b\x0d\xcd\x5a\x35\xff\xdb\xe1\x37\x1c\x7a\x5b\xfb\xa5\x93\x31\x75\x89\xd9\x65\x2d\x88\x79\x77\x29\x18\x0b\x8d\x0e\x51\x5a\xbf\xe6\x54\x8f\x16\x04\x21\xe5\x37\xd5\xc9\x4a\xef\x2b\x34\xc7\xeb\xb0\x97\x42\x00\x03\xbc\x0f\x36\x1b\x42\x3e\x7e\x14\x63\x0a\x80\x3c\x11\x82\x02\x54\x00\x49\xf6\x8c\x9c\xf4\x6f\xae\x03\x68\xd1\x62\xe4\x00\xd7\x7b\xb4\x52\x3c\xf6\xc7\x53\xb9\x75\xc2\x45\xbc\x99\xed\x2f\x41\x3a\x9d\x06\xc2\xda\x6c\xe0\xcc\x09\x87\xb6\x40\x6b\x80\x9e\x8e\xb3\x19\x03\x3d\x2d\xe9\x13\x1d\xee\x3b\x1b\x7b\x5c\x95\xd6\x53\xce\xd8\xfc\xcf\x99\x8d\xa1\x76\x85\x11\xec\xa4\xd3\xc5\xf7\x35\xad\xab\x96\x50\x3b\x35\x51\x80\x3e\x49\x22\x63\x50\x95\xef\x81\x1b\xe4\xc0\x8a\x6c\xba\xc9\x17\xcb\xe6\xcd\x91\xa4\xae\x5a\x33\x0c\xce\xc0\xe8\xe8\x15\x37\x12\x17\xa3\xde\x62\xf2\xd2\xd6\x14\x66\x21\x98\x33\xf3\x34\x47\x13\x2f\x4d\x43\x35\x0c\x58\xcb\xaf\x42\x24\x75\xed\xb1\x28\xc5\x6d\x80\xa4\x95\x72\x6b\x1f\xdb\xc5\x65\x51\xeb\x72\xd0\xf4\xfe\xc2\x6b\xa8\xbf\xf5\xee\xd6\x77\x4b\x85\x03\x9a\x52\x92\x83\x4b\x5d\x1c\xc1\xb0\x9b\xa0\xa3\x95\x4d\x29\x32\x36\x73\xf5\xe7\x12\x76\xa1\x2a\xc4\xc5\x79\x35\x5b\xf1\xec\xca\x48\xe6\xa7\x16\xb9\xfc\xec\xdc\x56\x5c\x51\xb9"}, +{{0x9c,0x7f,0x6f,0x37,0x9e,0x38,0x57,0x00,0x7e,0x2a,0xc6,0x32,0x4c,0xbb,0xce,0xd5,0x7a,0xc9,0xee,0xe4,0x47,0x78,0x13,0xf8,0x3a,0x81,0xfc,0x8c,0xef,0xa9,0x64,0xd5,},{0xa5,0x4b,0xa3,0x96,0xd6,0x87,0x63,0x4d,0x3e,0xcc,0xf4,0x1c,0x57,0x82,0x49,0x4f,0x5f,0x10,0xa5,0x21,0xa1,0xe5,0xd3,0x88,0x52,0x3d,0x80,0xee,0xba,0x5b,0x0b,0x2b,},{0x65,0x68,0x5f,0x9c,0xa5,0x98,0x2e,0x15,0xa2,0x2b,0xa3,0xc8,0x3a,0x03,0x48,0x34,0x84,0x82,0xdf,0xae,0x57,0xce,0xa1,0x78,0xf0,0x78,0x0c,0x05,0x7b,0xae,0xbe,0x4a,0xf6,0x32,0xf9,0x84,0x54,0x0a,0x26,0x01,0x9a,0x7f,0xb3,0x42,0x53,0xc9,0xec,0xe7,0xff,0x30,0x8a,0xda,0x23,0x3c,0xe0,0x68,0x63,0x47,0xab,0x5b,0x21,0xce,0x57,0x0b,},"\x3f\x2d\x30\x72\xfe\x73\x83\xe5\x41\x55\x1e\xa9\xab\xdb\xae\xae\x6a\x46\x4a\xe6\xb9\xf0\xba\x78\x6a\x44\x1b\x2d\x08\xda\x5b\xca\xda\x3c\x54\x24\xdc\x69\x31\xd6\xb3\x95\x23\xe2\xde\x0a\x0c\x2e\x4e\x6b\x5b\x8c\xda\x92\x5e\x5e\xac\x93\x84\x16\xa2\xc5\x1b\xf1\x3d\x49\x53\x1d\x7e\xc7\x11\x4b\x1c\x82\xfe\xaf\x90\xf3\xf8\x75\x91\xe3\x97\xd0\x27\x02\xf8\xec\x1b\x30\xd9\x9f\x5b\xe7\xd2\x20\x3e\x4f\xe4\xdb\x2e\xa4\x7e\x7b\x45\x89\xd8\xac\x50\x62\x48\xd7\x34\x74\x66\xed\xbc\x96\xea\x32\xbf\x3a\x6e\xa7\x50\x2d\xd6\x0c\x9e\x84\x90\x27\x15\xab\x2c\x6c\xa6\x8f\x5b\x00\xe1\xd9\x09\xd8\x3a\xa6\xab\x66\x2d\x8a\xea\x87\x0e\xcd\x86\x1f\xec\x69\xf2\xee\xc0\xae\x67\x7d\x29\x95\xb0\xed\x68\x8f\xaa\x8e\xf7\x82\x44\xe0\xd1\x19\x56\x97\xb0\x71\x22\xce\xaa\x11\xf5\xa6\xea\x58\xfb\xdf\xa2\xe2\xec\x2d\xf9\xd1\x86\x93\xae\x96\xd4\x71\x27\x55\x6e\x91\xf0\x86\x49\x82\xc1\x34\x19\xb0\x4a\x63\xf2\x08\xe7\x30\xd2\x69\x51\x88\x2a\xef\xe0\x01\xbc\xa3\x40\x8b\xd9\x86\x27\x48\xc6\xcc\x87\x6c\x28\xca\xc3\xbb\x2e\xb3\x39\x58\x18\xc2\x09\x1e\x0f\xbd\x7a\x0b\x44\x68\xc6\xb0\xd0\x0c\xd0\x08\xc1\x1c\x3c\x3a\xd0\x10\x80\xa1\xf5\xa4\x0a\xe2\xe4\xb0\xc3\xa0\x71\xef\xc8\xe1\xd1\xba\x6a\xce\x6d\x4d\xf0\xff\x19\x82\x9b\x0c\x68\x0b\x3a\xeb\x75\x91\x77\xed\x34"}, +{{0xa4,0x78,0xf3,0x5a,0xbb,0x73,0x72,0x7b,0x6b,0xe6,0xee,0x5e,0x56,0xee,0xc3,0x23,0xc9,0x51,0x78,0x82,0xfd,0x69,0x19,0x36,0x0e,0xbb,0xbf,0x5d,0x5c,0xb8,0xb8,0x3a,},{0x7a,0x6e,0x26,0x6a,0x54,0xd1,0x35,0xdd,0xa0,0x00,0x9c,0xcd,0xa8,0xa9,0x4a,0x47,0x12,0xae,0x5c,0xb1,0x47,0x61,0xe8,0x43,0x6e,0x97,0xc4,0xb7,0x81,0x4d,0x8e,0x8c,},{0x9d,0x16,0xfd,0x40,0xb9,0xf8,0xdd,0x9b,0x4a,0x1a,0x8c,0x6d,0x70,0x3b,0x9f,0xcc,0xbb,0x94,0x0b,0x1e,0x0a,0xe7,0x7a,0x59,0x70,0x37,0x4a,0xf0,0xcf,0x72,0x6f,0x44,0x79,0xfd,0x30,0xd7,0xdf,0xf5,0xcf,0x53,0x49,0x4d,0x9a,0x29,0x6a,0xb6,0xb9,0xe4,0x6e,0xa6,0xc1,0x36,0xb4,0xdb,0x2c,0x71,0xc2,0x1b,0x97,0xc1,0xc8,0x25,0x4d,0x0a,},"\x01\x73\xa3\x40\x50\xb4\x37\x48\x06\x1f\xf8\xf5\xa3\xd7\xc4\x3b\x63\x60\x84\x77\x86\xe8\xbb\x75\xe5\x36\xfb\x47\xb6\x45\xb2\x14\xf2\x21\xba\x24\xd8\x3d\x28\xbc\x02\x50\x24\x66\x3e\x53\x4f\x90\xf6\xe8\x3a\x93\xd8\xbd\xde\xda\x2c\xd8\x80\x81\x55\x65\x2a\x90\x8c\x43\x7c\x2d\xb6\xf3\xed\x49\x12\xf5\x7c\xa5\xb9\x79\x28\xa7\x3b\xe9\x64\xaf\x59\xdf\x44\x39\x85\x4b\xb0\x06\xfc\x29\x5a\x87\xb7\xb7\x22\x39\xc7\xfa\xdf\xec\x40\x71\x55\x09\xd9\x85\x79\xda\xad\xfb\x8d\x52\x4b\x4c\xec\x66\x20\x70\x5e\xfd\x41\x04\xc2\x97\x14\x4a\xea\x72\x29\x74\xe1\x2c\x5e\xce\xe5\x39\x1e\xf2\xd9\x3a\xc2\xb1\x24\xe4\xac\x49\x61\x47\xc8\xb7\x03\x63\x58\x5d\x70\x78\xcc\xc5\x3e\x2a\xe5\x93\x35\x0b\xc2\x55\x48\xa0\x54\x25\x26\xab\x00\xaf\xe4\x77\xa0\xf4\xb2\x73\x97\xc7\x2b\xc7\x4a\x8a\x8a\xb1\x56\xe6\x2b\x8b\xb4\x7c\x3f\xbb\x4b\x34\x91\x3e\x45\x96\x87\x47\x6b\xf3\x31\x42\xc6\x14\x70\x21\x07\xff\xe2\xcc\x01\xe2\x5f\xa3\x02\x75\xe1\xe2\xe6\x3c\xea\x91\x68\xe4\xa4\x7c\x02\xde\x09\x7d\x4d\x85\x3b\x27\x67\x5c\x5b\xb3\x30\xb9\x4a\x97\x4e\xad\x85\xe2\xbd\xee\x8e\xe1\x7c\xbb\x56\x53\x34\x66\x58\xdf\x2f\x91\xf6\xbd\x73\x94\x91\xdd\x71\x98\x8b\x3a\x97\x6a\x3e\x2e\x7a\x9d\x13\x74\x10\xf4\xac\xba\x9f\xeb\x5f\x11\x79\x8c\x9a\x43\xb6\xad\xce\x14\x36\x5a\x7c\x6d"}, +{{0xff,0xe8,0x25,0x14,0x8c,0x09,0x59,0xb3,0xa6,0x8d,0xe8,0x6a,0xd8,0xe8,0xaf,0x7f,0xa5,0xe0,0x78,0xf3,0x63,0xdc,0x12,0x42,0x13,0xc9,0x00,0x20,0xda,0x0c,0x90,0x89,},{0x13,0x91,0x52,0xa0,0xbd,0x22,0x96,0x2d,0xd9,0x19,0xae,0x3e,0x0b,0x16,0x20,0xe0,0x3c,0x03,0x3c,0x2a,0xd0,0xa3,0x97,0x9e,0xc6,0xbc,0xd1,0x70,0x5e,0x23,0xd5,0x98,},{0xfe,0x4e,0x89,0xee,0x31,0x78,0x6c,0x0a,0x3d,0x3d,0xe3,0x64,0x9b,0xb9,0x3f,0x0b,0x8a,0xef,0x1c,0xaf,0x5a,0x83,0x2e,0xc5,0xe4,0x06,0x78,0x10,0x70,0x5a,0xdd,0xdf,0x53,0x9b,0x8f,0x4e,0x05,0xad,0x08,0xcf,0x34,0x79,0xe4,0x5b,0x42,0xc9,0x65,0x28,0xf6,0xd5,0x9a,0x46,0x25,0x70,0x3d,0xdb,0xf1,0x5b,0x63,0x09,0x39,0x65,0xd8,0x0d,},"\xf1\x25\x78\x0d\x0c\xd0\x88\x53\x0f\x0c\x87\xb7\x0b\xd4\x2e\xba\xb5\x6a\xdb\x5a\xd4\x34\x5f\x92\x9a\xe5\xde\xae\x07\xfb\x55\x32\x21\x53\xa8\xf0\x23\xd3\x88\x43\xbf\x5d\x6a\x93\xfe\x99\x3e\xee\x71\xbc\x2e\xe5\x63\xb2\x5a\x50\x91\x8f\x03\xef\xdb\x5d\xbf\x72\x69\xad\xd6\x9d\xed\x3e\x66\x95\x38\x95\x62\x0d\x9b\x6c\xf4\x6b\xa2\x34\x8f\x8d\x66\xd7\xf0\x92\x23\x5e\x37\x8c\x1e\x3e\xdf\xeb\xeb\x78\x08\x4b\xc8\xde\xa0\x13\xf9\x93\x3a\xae\x14\xa0\x41\x94\x82\x76\xd0\x1f\x1c\xb5\x83\x4b\x0e\x59\x0e\x13\xd9\x31\xd1\x92\x92\xbb\x1d\x80\x41\xff\x2f\xe2\xe1\x17\x1a\x2e\x0b\x9a\x05\x98\x21\xd0\x92\x4d\xde\x7f\x3b\x1b\xb5\x98\x13\xf5\xe3\xc6\x35\x20\xaa\xfb\x88\x01\xba\x62\xc7\x09\x7d\x4d\x8c\xf4\x37\xa5\x68\xa7\xf0\x08\x7c\x6e\xa0\xfc\xe6\xe5\x68\xc4\x88\x3f\x1c\xd1\x2c\x74\x9d\x06\xa6\xfe\xb2\x78\xf1\x08\x6a\x8b\x04\x76\x99\x21\xf7\x8a\x99\x59\x06\x2a\xb0\x6f\x98\xee\x80\xc2\xc7\x85\x4f\xfa\x76\x0f\x86\xa8\x9e\xe1\xa5\x12\x66\x05\x3d\x19\x5e\x61\xbb\x1d\xbd\x18\xdd\x89\xff\x39\x4e\x40\x8a\xce\x0f\x64\x1a\x39\x5d\x56\x11\x8e\xa7\x2b\x7d\x8a\xdf\x78\xb1\x65\x5e\xce\xce\x7e\x82\x50\xe8\xa3\xa9\x1c\xb8\xfc\xa0\xd9\xce\x0b\xaf\x89\x80\xa3\x87\xc5\xed\x43\x18\x66\x32\x80\xe5\xb4\x53\x1f\x31\x87\xc4\x7e\xae\xa7\xc3\x29\x72\x8d\xdd\x0e\x40"}, +{{0x49,0xaf,0xf4,0x21,0xa7,0xcd,0x12,0x72,0x2a,0xa8,0x4c,0x48,0xc1,0xfb,0x1c,0x5f,0x8d,0x9e,0x27,0x7d,0x0a,0x99,0xec,0xbc,0x93,0x48,0xc3,0xaa,0xa7,0x4b,0xe4,0x22,},{0x88,0xd2,0xc2,0x62,0x66,0xf4,0x93,0xbc,0x67,0x57,0x8c,0xa0,0xb1,0xf5,0x11,0x60,0xcf,0x0f,0xdb,0x6a,0x09,0xa9,0x06,0xdb,0x9f,0xaa,0x68,0x6f,0x11,0xf8,0x20,0x8d,},{0x74,0x91,0x81,0x28,0x4d,0xf0,0x5d,0xbe,0x59,0x74,0xb9,0x17,0x82,0xa1,0xa7,0x6e,0xa0,0x86,0x42,0xcb,0x0f,0x0c,0x98,0xdb,0x58,0x6c,0x57,0x5c,0x21,0x0c,0xdc,0x8b,0x65,0x1b,0xd3,0x4b,0x75,0x7a,0xe3,0x8e,0x4b,0x6b,0xe9,0x46,0x52,0x35,0xbd,0x0e,0xca,0x43,0x0e,0x26,0xc3,0xee,0xde,0x56,0x1c,0x6e,0x82,0x4d,0xfa,0x20,0x0e,0x0a,},"\x70\xa1\xac\x14\x4b\x75\xfd\xa7\x55\x86\xa7\x9c\x36\xfd\x39\xcc\xe5\xf5\xca\xe2\xe6\x37\x58\x52\xd3\xb6\x2a\x96\x30\x33\x6a\x29\x3e\xa6\xd2\xac\x6e\x5b\x57\xda\x21\xef\x36\x4a\x59\x5b\xb0\x75\x0f\x5b\xf4\xd2\xb3\x20\x67\x64\x23\x87\x0e\x4b\x8e\x08\x69\x60\x1f\x16\x68\x06\x19\x04\x8c\x4e\xde\x27\x6d\xa6\x9f\x20\x5a\x70\x17\x6e\x25\xea\x04\xbd\x08\x97\x63\xe7\x09\xba\x34\x3f\xc8\x83\x1e\x52\x04\x4e\xab\xf9\x44\x1e\x69\x97\xf8\xba\x1a\xeb\x9e\xf0\xf4\x91\x17\x06\x67\xa7\xf5\xfc\x96\x27\xcb\xd0\x55\x1b\x76\xbe\x27\x28\x3a\x4b\x0c\x5f\x66\x78\x46\x68\x82\x26\xa1\x15\xee\x80\x20\xdf\x08\x04\x2b\x19\xb5\x9f\xe5\x51\x31\x6a\x6c\xb6\x91\x68\x60\xb9\xec\xd7\x41\x54\xb4\x05\x10\x38\xa1\x73\x52\x37\x2e\xc1\x4d\x3c\x95\x7d\x2e\xf5\x0f\xf7\x86\x18\x9a\x8a\xeb\x9c\x08\xf4\x5e\xeb\x5e\xb8\xb0\x40\x33\x99\x74\xaa\x97\x98\xc4\x25\xd7\xbe\xcb\x22\x8c\x44\x7a\x6d\x0b\x3c\xef\x27\x18\x93\xe0\xf7\x07\x6e\x22\x3a\x7e\x87\xc6\xa3\xd2\x70\xa0\x33\xbc\x97\xa4\x56\x5e\xdc\xe0\xaa\x91\xff\xc3\xf7\x80\x17\x75\xa6\xf2\x9b\x23\x02\x45\xbd\x71\xfa\x03\x43\x53\xde\x37\x23\x95\xd1\xbf\xcb\xde\xbb\xa0\x81\x33\x0f\x7c\x07\x6b\xe9\x9c\x2c\xf4\x86\x7f\x15\xb7\x8d\x52\xf4\x6f\xc7\x39\x1c\x9c\xb9\x5e\x5d\x64\x64\x3b\xaf\xfe\x72\xa8\xe3\xa6\x50\x66\x7f\xbb\x3e"}, +{{0x70,0x3a,0x6e,0x2b,0x62,0xd0,0x09,0x0c,0x61,0xd8,0x65,0x9b,0x6a,0x96,0x3e,0x03,0xc9,0xd6,0x2c,0x1b,0x38,0xf7,0xd7,0x0e,0x5f,0x9f,0xf0,0x55,0x90,0xcd,0x03,0x60,},{0x37,0x0c,0x21,0xde,0x6e,0xf2,0xfa,0xb5,0x34,0xad,0xa9,0x99,0x86,0x9c,0x90,0xbc,0x9b,0x92,0xcc,0xbf,0x24,0x9b,0x79,0xd3,0x9d,0x95,0x44,0x1d,0x1e,0xde,0x21,0x0a,},{0xe5,0xfd,0x64,0xda,0x02,0x88,0x00,0xc6,0xce,0xed,0x06,0x8a,0x5e,0x59,0x6f,0x16,0x21,0xc7,0x0a,0x8c,0xb1,0x38,0xb3,0x1b,0x32,0x64,0x7e,0xb4,0xb0,0x7b,0xd2,0xec,0xc5,0x94,0x2c,0x18,0x84,0x4f,0x36,0x70,0x33,0xf6,0x73,0x98,0xe3,0x14,0xba,0x2c,0x7c,0xcf,0x29,0x9c,0x06,0x97,0x87,0x77,0x70,0x25,0xd8,0x45,0xf2,0xaa,0xd6,0x0e,},"\xd4\x2a\x17\x56\xe8\x4d\xf4\xb4\xe9\x77\x3f\x86\xf7\x67\x4a\x2c\xd7\x8e\x71\xe4\x0a\xa8\xf6\x44\xe6\x70\x2d\xfb\xc2\xc2\xc5\xca\x90\xfc\x24\x2e\x9c\xb0\x09\x9c\xc8\xf2\xc2\xd3\x13\x6b\xaa\xfc\x0f\xf6\x95\x48\x2f\xda\xcd\xef\x9f\x56\x56\x10\xb6\xe1\x90\x07\x22\xf4\x35\xc6\x38\x5b\x35\xe9\xf6\xc4\x36\xca\x03\x7e\x03\xf6\x4e\x22\x33\xdf\xfa\x58\xdb\x3b\x91\xcc\x1d\xaa\x0b\xb0\xc5\x4c\x8a\x43\xe4\x69\xd2\xcf\xf7\xfa\x2b\xf8\xf5\xd1\xd8\x77\x93\x10\x89\xc8\x2e\xd8\x9a\xba\x42\xf2\xee\x2b\x86\xe4\x45\xcf\xd0\x9f\x4c\xd7\x8b\x35\x19\x1b\xf4\x67\xe7\x84\xee\xf7\x5d\xc9\x87\xe0\x46\xd3\x7d\x4d\x4e\x8e\x9b\xbe\x14\xaf\x80\xd0\x3a\x1f\x40\x89\x83\x84\xb9\xd3\x27\x9f\xac\x9c\x57\xfd\x9c\x7e\xec\xbe\x19\xa5\xac\xc1\x50\x33\xb8\x4e\x07\xfd\x0e\x40\x9b\xdb\xd5\xa5\x7f\x65\x64\x11\x83\xa6\xc0\xa8\xec\x42\x6d\x1f\x1d\x22\x31\x66\xff\x0a\x19\x00\xb2\xe9\x2b\x7d\x85\x83\x5d\x01\x9d\x17\x77\x5e\x50\x93\xcc\xd1\x26\xf9\x0f\x63\xcb\x7d\x15\xcb\xeb\x53\x13\x24\x21\x9c\xd6\x4d\xed\x67\x14\xb2\x1a\x65\x37\x1a\xf0\x72\x10\xdf\xdf\x0e\x4e\x58\xdd\xc7\xd5\x9f\x4c\xfa\x65\xc4\x21\xd8\x14\xee\x2c\x9b\xf6\xdb\xf6\x48\x73\xd5\x79\xb0\x9e\xe5\xdc\xed\xd7\x33\x06\x3e\x03\x9a\xc9\xa5\xf9\xca\x4c\x25\x25\xa4\xcc\x8e\x98\x4d\xa7\x18\x5e\x2d\x64\xfa\xd8\x1c\x8a"}, +{{0x76,0x84,0x9c,0x18,0x8e,0x3e,0xdd,0x0f,0xf5,0xf8,0xfb,0x87,0x4d,0xc0,0x45,0x66,0x45,0x51,0x84,0x45,0xe4,0x1a,0x7d,0x68,0x33,0xe6,0x16,0xc3,0xc4,0x8c,0x98,0x68,},{0xd6,0x70,0xe2,0xea,0x07,0xdb,0x60,0xc2,0x2a,0xb7,0x9a,0x93,0xeb,0xf4,0x9d,0x22,0xa6,0x24,0x5e,0xe3,0xaf,0x07,0xb3,0xbe,0x58,0x4e,0xda,0x69,0x4c,0x37,0x72,0x9e,},{0x71,0x41,0x39,0x9d,0x51,0xda,0xa6,0xeb,0x45,0x19,0xbf,0x3f,0x01,0xb2,0x33,0x92,0x0f,0xa9,0x08,0xfe,0xfa,0x61,0x2f,0x0c,0xd7,0xd5,0xaf,0x8a,0x9a,0x3c,0x44,0x19,0x0e,0x3f,0x63,0x84,0xa8,0xd1,0x4d,0x37,0xc9,0x70,0x30,0xef,0x50,0x18,0xcf,0x8a,0xee,0x8a,0xeb,0x15,0x69,0xa7,0x3d,0x84,0x86,0x2a,0x59,0xb7,0xdf,0x72,0xfe,0x09,},"\x1e\xcc\xb0\xbc\x8e\xca\x3a\xb5\xbe\xe6\x8c\x5f\x8c\xaa\x34\x53\x67\x66\xc7\x05\xf5\x08\x27\xdb\x7a\xc3\x75\xd4\xfe\x30\xb5\x8f\xfb\x7e\x2f\xe4\x90\xcc\x71\xa8\xff\x86\xc0\x06\xd6\x17\x4d\x05\x79\x3a\xb8\xa5\x5d\xd5\x1b\x06\xde\x41\x7b\xc0\xac\x45\x2c\xdc\x7c\xfb\x0b\xb0\x03\x62\xb6\x76\x5d\x20\xdb\x23\xeb\x18\x48\x02\x70\x64\xa1\xd9\x09\x1d\x3b\x10\xed\x77\x6f\x28\xb7\x67\x68\xbd\xfc\x08\xf0\xbc\x51\x1f\x76\xfa\xeb\xa7\x6c\xfc\x4c\xb5\xc8\x3d\xc9\xeb\xe8\xa8\xd7\x9e\xdc\xa9\x23\xec\xcd\x52\x40\x09\xca\xfe\xdc\x90\xe3\xad\x87\xd1\x39\x2e\x1f\xcc\xf4\xe6\x0c\xca\xb9\x5d\xc0\xab\x54\xbf\x44\x24\x5a\x00\x7a\x96\xd4\x66\x34\xb1\xb2\x96\x5b\x82\x9c\x3d\x7d\xaa\x76\x59\x72\xb5\x4a\x7b\x36\x5b\x6f\x34\xd7\x7d\x71\x76\xac\xd8\xd8\x94\xf6\xb4\x17\x09\x1b\x6c\x00\xed\xb7\xa4\xe8\x13\x79\x98\x8b\xfc\xec\xb6\x92\xe9\xc3\xc4\x31\x0a\x7e\x24\x0e\x5c\x10\x63\xcd\xe1\x13\xf2\x2a\x68\x4a\x50\xa1\x12\xff\x47\xd3\x89\x88\x12\xef\xb9\x26\x37\x07\x2b\x86\x16\x3a\xd8\x93\x16\xd2\x21\x19\x5a\xcb\xfa\xd0\xa0\x3a\x1f\xbc\x2d\x96\x7f\xe8\x3f\x84\xc8\x45\x9f\xcc\xd4\x90\xb9\xc5\xb3\xe5\x5d\x27\xe9\x48\x4e\x94\x3c\x41\x7f\x21\x28\xd7\x37\x01\xda\x28\xf4\x9f\xd3\x68\x3f\x33\xa3\x9c\xde\xe2\x34\xbd\x30\x5b\x94\x91\xe2\xf3\xeb\x62\x1b\xe3\xdd\x1d\xbb\xb3\x1b"}, +{{0x83,0xae,0x48,0xad,0x70,0xda,0x0b,0xb3,0xcd,0xf8,0x74,0x81,0xee,0x2c,0x0c,0x85,0x71,0xc2,0xca,0x98,0x67,0x12,0xf8,0xbc,0x23,0x29,0xe9,0xa3,0xe3,0x33,0x83,0xc5,},{0xb7,0x85,0x30,0x90,0x00,0xdf,0x95,0xf5,0xa0,0x4f,0x7d,0x89,0xc4,0x11,0x33,0x01,0x05,0x7a,0xda,0xee,0xb2,0x9b,0xcd,0x28,0xd9,0x93,0x71,0xb5,0x37,0xbb,0xa2,0xf6,},{0x43,0x33,0x23,0x51,0xd3,0xfb,0x7b,0x45,0xfc,0xf3,0x7c,0x60,0x7d,0x44,0x2e,0xa8,0x0d,0xbd,0xa2,0xcb,0x69,0xc2,0x88,0x4f,0x42,0x4e,0x65,0xea,0x3a,0x33,0x1e,0xd8,0x47,0x2d,0x43,0x68,0x40,0x5c,0xb7,0x36,0xb2,0xd6,0x68,0x5a,0xd7,0x82,0xe2,0x39,0xfe,0x83,0x3e,0xd7,0x89,0xa2,0x92,0x31,0x85,0x16,0x6f,0x60,0x83,0x42,0xee,0x05,},"\xb7\x52\x1d\x3f\x71\xc6\x79\xfa\x70\x37\xfe\x74\x88\xa6\x41\xf6\xb9\x7c\x49\x45\x4a\xcc\x8e\x36\xb9\x03\xd8\xf9\xeb\xb5\x4d\x89\xcb\x56\xef\xd1\x9e\x04\xba\x6a\x7c\x8f\x48\xa7\xd3\xec\x9d\xec\xd3\xf1\xcd\x0f\xaf\x6e\x97\x81\x18\xe6\xad\xce\x9c\x6c\x6b\xe6\x3c\x6a\x6a\x1a\xe2\x16\x51\x82\x84\x79\xa4\x6b\xc9\xa0\xf7\x94\x30\x40\xf9\x40\xa0\xd4\x70\xc8\xe5\x77\xc5\xd5\x75\xcb\x53\xc1\xbf\x3a\xb1\xfe\xb0\x50\xdc\xb6\xfe\xf0\xba\x44\x47\xf2\x99\xfd\xb9\xf2\x7e\xcb\x07\x14\xec\xfe\xfd\x74\xba\xd7\xb1\x22\xa4\x62\xc2\x4a\x20\x98\x48\xa0\x33\x89\x07\x45\x78\xc5\xbd\xc3\x63\x96\xd8\x09\xb0\xf1\x40\x18\xda\x64\x91\x7e\x6b\xf8\x7e\xf4\x05\xc8\xf3\xe3\x33\xff\x9c\x3b\xaf\x63\x39\x66\x76\x20\x79\x4b\xb4\x74\x3f\x05\x14\xb5\xde\x7d\x7f\xdd\x94\x7a\x7e\x35\x01\xee\x88\xef\xad\x15\x9e\x33\xa1\x07\x2f\xbb\x99\xc7\xc7\x1e\x9d\x13\xa5\x02\xd5\xa0\x7c\x4f\x81\x7e\xeb\x7f\x0c\x53\x19\xaa\x41\xa9\x6d\x5f\xf4\xf1\x5a\x73\xc2\x9b\x57\x1f\xe2\x11\x09\x0e\x17\x2c\x8d\xb5\x18\x62\x46\x12\xa5\xc3\x71\xa9\xd7\xce\xf6\xde\x35\xeb\xef\x96\xe8\x8e\x1a\x78\xaf\x3b\xd5\xdd\x35\x25\x1a\xb5\x4d\x73\x71\x8f\x3e\x70\xd2\xd5\x90\x21\x53\x1d\xc7\x31\x84\xf0\xfc\x69\xc2\xe9\x29\x65\x84\x4e\xc2\x7c\x1c\x02\xaf\x5e\x9a\x34\x69\xde\x35\x5d\xb2\x25\x6e\x0e\xc2\xa4\xeb\xa3\x0a"}, +{{0x39,0xe5,0x6a,0x65,0x62,0x3a,0x0a,0xeb,0xad,0xe0,0xda,0x12,0xce,0x1d,0xf3,0x78,0xbc,0x92,0x40,0x73,0xf7,0x3a,0x54,0x9e,0xff,0xae,0xbc,0x46,0x5d,0x1a,0x78,0xe2,},{0x83,0xda,0x8a,0xd5,0x0b,0xad,0x09,0xeb,0x3e,0x94,0xc7,0x25,0xdf,0x3c,0xc3,0xa1,0x19,0x73,0x6a,0xdc,0x85,0x9c,0xa1,0xa1,0x05,0x03,0xf4,0x8f,0xf2,0xfe,0xc5,0x96,},{0x39,0x8e,0x82,0x60,0x01,0x1f,0x57,0xd8,0xac,0x8c,0x58,0xd5,0x45,0x7b,0xc6,0x52,0xc7,0x41,0x4a,0xaf,0x6f,0xb2,0xf4,0x26,0xb7,0x89,0x90,0x56,0x60,0x5c,0x0a,0xfc,0x28,0x39,0x24,0x23,0xb2,0xb5,0x71,0xf5,0xe6,0xc3,0xc7,0xf6,0xd6,0x02,0x45,0xe5,0x3e,0xbd,0x03,0xbd,0xc5,0xad,0x3c,0x1a,0xd8,0x73,0x8c,0xb3,0x22,0x14,0xd0,0x0f,},"\xa9\x6d\xc2\xea\x3f\xa1\x35\x14\x92\xa4\x61\x9d\x91\x94\x68\x1f\x8e\xc4\x00\xa9\x71\x58\x24\x44\x82\x65\x38\x38\xcc\xb7\xe1\x56\xa8\x2d\x56\x43\x68\xf8\x3a\x6e\xe1\xbe\x46\xbc\x34\xb8\x17\x20\x0e\x84\x64\xc3\xd1\x2b\x5e\xf2\xc5\x0b\x19\x56\x5b\x88\x1c\x4c\x3d\x45\x63\xfb\x94\x7e\xb4\x7c\x3e\xe9\xc1\xee\x78\x53\x26\x98\x74\x45\x5b\xfa\xcb\xa3\x05\xf3\x07\xd1\xac\x53\x09\xee\xae\x5c\x07\xfa\x5c\x4d\x42\x8e\xdb\xc8\xb9\x52\x8c\x44\x15\x24\x3a\x9e\xf5\x80\xaf\xf8\xfc\xfb\x12\x00\x0a\x71\xfc\xee\xe8\x9d\xe9\x7f\x90\x27\x95\x29\xbc\xc8\x22\xed\x3c\xb3\x4c\x82\xba\x5f\xec\x15\xf4\x94\x56\x63\x63\x6d\x67\xb5\xfe\xce\xac\xc3\x1d\x25\xf9\x8a\xea\x07\xf7\x80\x0d\x5a\x10\x34\x25\x1c\xb9\x1d\xd0\x96\x3e\xc2\xc1\xa5\x47\x73\xa4\xd9\x6c\x18\x35\x7f\x8d\x10\x1d\xe5\x8e\x93\x2f\x8c\x6c\xdd\xe8\xe3\xcf\xce\xf5\xa7\x44\x3f\xdb\xa7\xb7\x83\x20\x40\x3c\x01\x96\x84\x47\x24\xa6\x12\x18\x3e\x34\xbd\xd8\x08\xce\x7b\x95\x88\x61\xca\x37\x11\x57\x30\xea\xed\xe1\xfd\x0b\xaa\xbe\x97\x6e\xfe\xfd\x03\x65\xfd\xf9\x26\x77\x6c\x53\x6f\x47\xff\x80\xde\x5c\x18\x29\x1b\xb7\xe9\xf1\xb9\x13\xff\xd1\xd9\x44\x68\xb7\x89\x75\x2f\xae\x6c\xa8\x97\xc0\xcc\xa5\x3e\xf1\xe7\x31\xd0\x0c\x8b\xdb\xe8\x92\x9e\xa6\xb1\xdc\xe1\xf3\x1a\x20\x68\x8d\x37\xb0\xf3\xa2\xb4\x15\x3b\x30\x6b\xdb\xa1"}, +{{0x4b,0x99,0x21,0x85,0x2f,0x40,0x9a,0x32,0x3a,0xe3,0x81,0x75,0xe8,0xd7,0x6a,0x21,0x1f,0xc4,0xd9,0xc6,0x54,0x17,0x8e,0xea,0x3b,0xaa,0x7a,0x76,0x7a,0x6f,0xda,0x06,},{0x4c,0x72,0x3e,0x43,0x6b,0x6b,0xd9,0x7f,0x44,0xaf,0x52,0x50,0x3b,0x21,0xcc,0x50,0xd5,0xf6,0xad,0x6c,0xfc,0x82,0x88,0x34,0x5d,0xde,0x80,0x54,0xe9,0x95,0x58,0x2e,},{0xcb,0xf1,0xf1,0x64,0x2d,0xf9,0x50,0xeb,0x71,0xfd,0x09,0x59,0x0d,0x34,0xc2,0x65,0x92,0x2c,0x58,0xbd,0x80,0x26,0xbb,0xa3,0xfc,0x0e,0x59,0x4a,0x6b,0xb1,0xf2,0xb9,0x0d,0xa3,0xdc,0x1d,0x5f,0x6b,0x6d,0x5b,0x40,0x5a,0x89,0x6d,0x1d,0xbb,0x71,0xb8,0x68,0x5c,0x4d,0xfc,0x44,0x4a,0xca,0xff,0xe6,0x5a,0xb8,0x33,0x17,0x89,0xf5,0x07,},"\x3f\x33\xd8\xfb\x83\xe6\x87\x41\x09\x0a\x37\xbe\xdd\x74\x5c\xf1\x41\xaa\xae\xd8\xc9\x2f\xfa\x74\x2a\x52\x56\x17\x77\x88\x58\x05\xac\xe1\x42\x46\xab\x98\xa8\xcb\x59\x8c\x9c\xe3\xde\x9b\x29\xba\xe5\xfa\x04\xb1\xcf\x82\x8d\xe1\x1a\xff\x80\xa7\xef\x8a\x3a\x38\xae\xde\x4f\x3c\x35\x63\xa2\x5d\x04\x9b\xad\xca\xd5\xed\x7e\x47\xfd\xbb\xa6\xe1\x11\x30\x7e\xeb\xe9\xef\x49\x06\xbc\x98\x97\x28\xb7\x6e\x84\xaf\xe8\x08\xe6\x65\x3b\x27\x1e\x21\x10\x4a\xa6\x65\xf1\x89\x8d\xd2\xaa\xb2\x30\x90\xe2\x2b\x4e\x34\x4a\x26\x16\xfb\xd8\xee\x4a\xd8\xed\x81\x08\x39\x5e\xba\x81\x7f\xbd\x14\xfe\xc5\xc1\x7d\xcf\x56\xb8\x22\x08\x56\xb2\xb8\x33\xe0\x91\x40\x7d\x50\x89\xb3\x5d\xdf\x34\xb8\x6f\xf7\xdc\x9f\xde\x52\xb2\x1e\xf1\x21\x76\xef\x33\x70\xb7\xf3\xa0\xa8\xcb\x1b\x05\x8a\x51\xae\xff\xf3\xd2\x79\xd8\x0f\x51\xa6\x8b\xfb\x59\x25\x87\xb4\x5c\x5c\x63\xa7\xe4\xd6\x25\xb8\x87\xde\x48\x6a\x11\x83\x16\xc3\xb6\xa2\x38\x57\x5f\x92\xac\x5b\x1c\x94\xc3\xf5\xdb\xbd\x96\x68\x60\x00\xd6\xd3\x9c\xcc\xd5\x58\xd4\x20\xe4\xd4\x47\xa8\xcb\xc4\xbc\x7b\x8c\x6a\x03\xaf\x0f\x00\x34\xfb\x35\x18\xd9\x38\x00\xf0\xf7\x13\xe4\xb1\x37\x32\xe1\x6a\xda\x51\x80\x1d\x7e\x55\x9c\xf8\x39\xd1\x05\x8f\x64\x95\x56\x98\x31\x13\x99\x34\x54\x16\x85\x0d\xdd\xcc\x56\x01\xa6\x84\xfd\x09\xe6\xaf\xd3\x94\x4f\x5e\x19"}, +{{0x1b,0xff,0x65,0x2a,0x2c,0x83,0x09,0xa3,0x93,0xac,0x11,0xda,0x3a,0xa9,0x7f,0xb0,0x78,0xbb,0x28,0x4e,0xd5,0xe1,0xb8,0xcc,0xc9,0x83,0x65,0x2e,0xf8,0x55,0x6c,0xd0,},{0xaa,0xab,0xdc,0x09,0x1f,0xc3,0x68,0x23,0x54,0x20,0x17,0x44,0xe9,0xb7,0x3f,0xd2,0xa6,0xcf,0xb2,0x81,0x91,0x4b,0xf2,0xc7,0x0e,0xc3,0xdc,0x1d,0xec,0x72,0x16,0xb0,},{0x93,0xc9,0xc3,0x34,0x93,0xfc,0x64,0x17,0x2d,0x51,0xe1,0x6a,0x0a,0x1c,0xd7,0x29,0xa0,0xd9,0x9e,0x3c,0xb8,0x64,0xe8,0x9a,0x42,0x98,0x7f,0x39,0xdd,0x8c,0xd2,0x65,0x45,0xfd,0xfe,0x37,0x58,0x19,0x11,0xe8,0x03,0x67,0x7d,0xa4,0xc5,0x5b,0x0a,0x68,0x3d,0xdf,0x62,0xb7,0x28,0xf8,0xf3,0x06,0x85,0xae,0x58,0xf6,0x28,0xeb,0xe6,0x09,},"\x48\xd0\x26\x98\xa9\x7b\xdc\xb3\xef\x07\x8d\xcf\xcf\x57\x50\x00\x5f\x17\x02\xd3\x00\xe7\xe8\x9b\xc4\x36\xe3\x81\x11\x34\x01\xf8\x52\xb8\xb4\xac\xff\x60\xff\xbd\x4a\xb4\x6d\x20\x21\x68\xd9\x8b\x87\x35\xe7\x9c\xb3\x50\xe3\x5b\x07\x0f\xf6\xbd\xca\xfd\x95\x4b\x55\x19\x69\xb6\xb1\xa7\x0c\x91\x31\xeb\xd4\x0d\x96\x14\x02\x91\xd8\xd2\xb0\x91\x54\x0a\x8b\x18\xd8\xe5\x46\x59\x15\xc2\x5d\xbc\x6b\x5c\x9a\x68\x79\x42\x53\x3c\x37\x2c\x8b\x4e\x95\xa9\x53\x67\x71\x69\xb9\x50\xed\xd3\x46\x43\x75\xcd\x43\x13\x2f\xf9\xbd\x54\x1e\xe2\x2b\xd4\x18\xce\x23\x19\x5f\x65\xd8\xb2\x89\xf6\x33\xec\x8d\x71\xe1\xa8\x01\xb0\x6c\x3c\x82\x7f\x62\x7e\x72\x3d\x21\x99\x10\x0c\xe7\x3e\x8e\x4a\x44\x40\xe7\x78\x31\x7a\x47\x49\x10\x79\x3b\x47\xb1\x0f\xfb\x55\xdb\x7f\x28\x1c\x7d\x7a\x03\x3b\xd8\x00\x48\xb8\x26\x73\xb8\x7c\xf9\x5e\x99\x42\x2b\xa6\x28\x68\x8f\x3c\x97\x18\x90\xca\x15\xd1\x2f\x57\x2f\xa1\x97\x7a\x17\x30\x70\x69\xda\x30\x4e\xad\x30\x26\xeb\x01\x04\x26\x68\x89\x0d\x17\x00\x8c\xd1\xe9\x2c\x46\xcb\xe9\xc8\x57\xe7\x19\x3d\xe3\xab\xa3\x91\x1e\x4f\x86\xfe\x0a\x16\x98\xab\x7c\xdb\x92\x51\xa8\x42\x4b\x28\x48\xb9\x6a\xd8\x1e\xa2\x39\xd3\x65\xfd\xea\x92\xea\x5c\x04\x73\xd0\xa6\xbb\x1e\x37\x13\x56\xbd\xfa\xd2\xd0\x35\x03\x36\xd3\xe1\x94\x7c\x93\x6f\xd0\xc2\x51\x95\x44\x50\x11\x73\x1b"}, +{{0x00,0x2f,0xdd,0x1f,0x76,0x41,0x79,0x3a,0xb0,0x64,0xbb,0x7a,0xa8,0x48,0xf7,0x62,0xe7,0xec,0x6e,0x33,0x2f,0xfc,0x26,0xee,0xac,0xda,0x14,0x1a,0xe3,0x3b,0x17,0x83,},{0x77,0xd1,0xd8,0xeb,0xac,0xd1,0x3f,0x4e,0x2f,0x8a,0x40,0xe2,0x8c,0x4a,0x63,0xbc,0x9c,0xe3,0xbf,0xb6,0x97,0x16,0x33,0x4b,0xcb,0x28,0xa3,0x3e,0xb1,0x34,0x08,0x6c,},{0x0d,0xf3,0xaa,0x0d,0x09,0x99,0xad,0x3d,0xc5,0x80,0x37,0x8f,0x52,0xd1,0x52,0x70,0x0d,0x5b,0x3b,0x05,0x7f,0x56,0xa6,0x6f,0x92,0x11,0x2e,0x44,0x1e,0x1c,0xb9,0x12,0x3c,0x66,0xf1,0x87,0x12,0xc8,0x7e,0xfe,0x22,0xd2,0x57,0x37,0x77,0x29,0x62,0x41,0x21,0x69,0x04,0xd7,0xcd,0xd7,0xd5,0xea,0x43,0x39,0x28,0xbd,0x28,0x72,0xfa,0x0c,},"\x5a\xc1\xdf\xc3\x24\xf4\x3e\x6c\xb7\x9a\x87\xab\x04\x70\xfa\x85\x7b\x51\xfb\x94\x49\x82\xe1\x90\x74\xca\x44\xb1\xe4\x00\x82\xc1\xd0\x7b\x92\xef\xa7\xea\x55\xad\x42\xb7\xc0\x27\xe0\xb9\xe3\x37\x56\xd9\x5a\x2c\x17\x96\xa7\xc2\x06\x68\x11\xdc\x41\x85\x83\x77\xd4\xb8\x35\xc1\x68\x8d\x63\x88\x84\xcd\x2a\xd8\x97\x0b\x74\xc1\xa5\x4a\xad\xd2\x70\x64\x16\x39\x28\xa7\x79\x88\xb2\x44\x03\xaa\x85\xaf\x82\xce\xab\x6b\x72\x8e\x55\x47\x61\xaf\x71\x75\xae\xb9\x92\x15\xb7\x42\x1e\x44\x74\xc0\x4d\x21\x3e\x01\xff\x03\xe3\x52\x9b\x11\x07\x7c\xdf\x28\x96\x4b\x8c\x49\xc5\x64\x9e\x3a\x46\xfa\x0a\x09\xdc\xd5\x9d\xca\xd5\x8b\x9b\x92\x2a\x83\x21\x0a\xcd\x5e\x65\x06\x55\x31\x40\x02\x34\xf5\xe4\x0c\xdd\xcf\x98\x04\x96\x8e\x3e\x9a\xc6\xf5\xc4\x4a\xf6\x50\x01\xe1\x58\x06\x7f\xc3\xa6\x60\x50\x2d\x13\xfa\x88\x74\xfa\x93\x33\x21\x38\xd9\x60\x6b\xc4\x1b\x4c\xee\x7e\xdc\x39\xd7\x53\xda\xe1\x2a\x87\x39\x41\xbb\x35\x7f\x7e\x92\xa4\x49\x88\x47\xd6\x60\x54\x56\xcb\x8c\x0b\x42\x5a\x47\xd7\xd3\xca\x37\xe5\x4e\x90\x3a\x41\xe6\x45\x0a\x35\xeb\xe5\x23\x7c\x6f\x0c\x1b\xbb\xc1\xfd\x71\xfb\x7c\xd8\x93\xd1\x89\x85\x02\x95\xc1\x99\xb7\xd8\x8a\xf2\x6b\xc8\x54\x89\x75\xfd\xa1\x09\x9f\xfe\xfe\xe4\x2a\x52\xf3\x42\x8d\xdf\xf3\x5e\x01\x73\xd3\x33\x95\x62\x50\x7a\xc5\xd2\xc4\x5b\xbd\x2c\x19\xcf\xe8\x9b"}, +{{0x25,0xb0,0xf0,0xbb,0x3d,0xcb,0x42,0x2a,0x6f,0x3c,0x6c,0x22,0x0e,0xaa,0xdb,0x11,0xdb,0xfe,0x48,0x9c,0x2d,0x45,0x5b,0x27,0x6c,0xef,0xe8,0xcb,0xa0,0x57,0xf9,0xf3,},{0xfe,0x03,0xc9,0xc4,0x39,0x4a,0xdc,0x74,0xb1,0x3f,0x47,0x65,0x4b,0xea,0xd8,0xbc,0x85,0x59,0x58,0xb4,0x19,0x4f,0xda,0xb2,0x09,0x7a,0xc1,0xb1,0x57,0x93,0x3c,0x05,},{0xda,0x50,0xd5,0x24,0x2b,0xf5,0x1c,0x39,0x51,0x78,0x0c,0xaf,0xd9,0x26,0xd6,0x7b,0xdf,0x56,0x40,0xd5,0xd3,0xbb,0x08,0x43,0x38,0x31,0xd5,0x6e,0x48,0xe2,0x59,0x2a,0x1c,0x37,0x59,0x68,0xbb,0x4d,0x2f,0xbe,0xa5,0x61,0x45,0xab,0xf2,0xd8,0x29,0x91,0x36,0x3b,0x15,0x65,0xfa,0x1e,0xff,0xe2,0x14,0x01,0x1a,0x68,0x6e,0x39,0x95,0x0e,},"\x54\xd9\x9f\x96\x9e\xfa\x88\x70\xfc\x20\xfa\x9a\x96\x2b\xb3\x72\x61\x9c\x32\x44\x39\x72\x8a\xf3\x13\x9c\x2a\x07\xe8\xc1\xb2\x9c\x1e\x4e\xed\xc2\xd4\x0b\xa7\x22\xf6\x3c\xe3\x76\x70\x36\x2a\xf6\xf5\x20\x2a\xdd\x66\x8c\x4f\xb4\xd6\x2f\xa8\xba\xcb\xc7\xd0\x7f\xf3\xbd\x38\xc1\x5a\x01\x06\x42\x59\xcc\x34\x13\x48\x61\x63\x29\x67\x46\x05\x41\xa9\x9b\x8d\x51\x82\xbf\x59\x34\x7b\x5a\x59\x87\x9a\xa3\xb0\x91\xa1\xf3\xe0\x41\x35\xbd\x63\x01\xbe\x52\x26\xd4\x89\x5e\x5e\x9c\x2b\x15\xe4\x8e\x5e\xcd\xf4\x41\x29\xe6\x12\x28\x53\xa6\x06\xfc\x11\x84\x66\xfa\x72\x0b\x5a\xb1\x65\x63\x5c\x3b\xde\x04\xd7\x42\x89\x27\x4f\xa0\x35\x47\xac\xcb\xde\x78\x0e\x1f\xa0\xbf\x2c\x56\xf8\x43\x6a\x53\xe7\x38\x78\xa4\x24\xa2\x9a\xa9\xde\x38\x5d\xba\x41\x9a\xe6\xa5\xd1\x2e\x00\x42\x76\x15\x2b\x58\xd3\x25\xb3\x02\x40\x0a\x55\x33\x3c\x38\xcd\xe4\x90\x8a\xe1\xd0\x12\x1c\xbe\xca\x95\x08\x09\xc5\x43\x31\x42\x77\xc1\x48\x5e\x68\xd9\xf9\xc0\xa9\x62\xd1\xb1\xe0\xdd\xa1\xd4\xa5\x2b\x56\xf8\x30\x8a\x80\xb9\x2a\xcc\x9f\x4e\xbc\x3e\xd4\x5d\x91\xa1\x29\xda\x86\x75\x62\x1a\xf6\x76\x70\x3d\xef\x3b\x84\x11\x31\x83\xb2\xe3\xa8\xc5\x61\x57\xf2\x43\xf1\x39\x80\xf3\xd1\x75\x6f\xea\x76\x68\xc9\x15\x03\xd3\x5c\x83\x9a\x21\x20\xc7\x9e\xc9\x54\xfb\x54\x6d\x7b\x54\x2f\x98\x72\x89\x53\x4f\xfd\xef\x62\xd4\x7f\xd5\xec"}, +{{0xbf,0x5b,0xa5,0xd6,0xa4,0x9d,0xd5,0xef,0x7b,0x4d,0x5d,0x7d,0x3e,0x4e,0xcc,0x50,0x5c,0x01,0xf6,0xcc,0xee,0x4c,0x54,0xb5,0xef,0x7b,0x40,0xaf,0x6a,0x45,0x41,0x40,},{0x1b,0xe0,0x34,0xf8,0x13,0x01,0x7b,0x90,0x0d,0x89,0x90,0xaf,0x45,0xfa,0xd5,0xb5,0x21,0x4b,0x57,0x3b,0xd3,0x03,0xef,0x7a,0x75,0xef,0x4b,0x8c,0x5c,0x5b,0x98,0x42,},{0x27,0x9c,0xac,0xe6,0xfd,0xaf,0x39,0x45,0xe3,0x83,0x7d,0xf4,0x74,0xb2,0x86,0x46,0x14,0x37,0x47,0x63,0x2b,0xed,0xe9,0x3e,0x7a,0x66,0xf5,0xca,0x29,0x1d,0x2c,0x24,0x97,0x85,0x12,0xca,0x0c,0xb8,0x82,0x7c,0x8c,0x32,0x26,0x85,0xbd,0x60,0x55,0x03,0xa5,0xec,0x94,0xdb,0xae,0x61,0xbb,0xdc,0xae,0x1e,0x49,0x65,0x06,0x02,0xbc,0x07,},"\x16\x15\x2c\x2e\x03\x7b\x1c\x0d\x32\x19\xce\xd8\xe0\x67\x4a\xee\x6b\x57\x83\x4b\x55\x10\x6c\x53\x44\x62\x53\x22\xda\x63\x8e\xce\xa2\xfc\x9a\x42\x4a\x05\xee\x95\x12\xd4\x8f\xcf\x75\xdd\x8b\xd4\x69\x1b\x3c\x10\xc2\x8e\xc9\x8e\xe1\xaf\xa5\xb8\x63\xd1\xc3\x67\x95\xed\x18\x10\x5d\xb3\xa9\xaa\xbd\x9d\x2b\x4c\x17\x47\xad\xba\xf1\xa5\x6f\xfc\xc0\xc5\x33\xc1\xc0\xfa\xef\x33\x1c\xdb\x79\xd9\x61\xfa\x39\xf8\x80\xa1\xb8\xb1\x16\x47\x41\x82\x2e\xfb\x15\xa7\x25\x9a\x46\x5b\xef\x21\x28\x55\x75\x1f\xab\x66\xa8\x97\xbf\xa2\x11\xab\xe0\xea\x2f\x2e\x1c\xd8\xa1\x1d\x80\xe1\x42\xcd\xe1\x26\x3e\xec\x26\x7a\x31\x38\xae\x1f\xcf\x40\x99\xdb\x0a\xb5\x3d\x64\xf3\x36\xf4\xbc\xd7\xa3\x63\xf6\xdb\x11\x2c\x0a\x24\x53\x05\x1a\x00\x06\xf8\x13\xaa\xf4\xae\x94\x8a\x20\x90\x61\x93\x74\xfa\x58\x05\x24\x09\xc2\x8e\xf7\x62\x25\x68\x7d\xf3\xcb\x2d\x1b\x0b\xfb\x43\xb0\x9f\x47\xf1\x23\x2f\x79\x0e\x6d\x8d\xea\x75\x9e\x57\x94\x20\x99\xf4\xc4\xbd\x33\x90\xf2\x8a\xfc\x20\x98\x24\x49\x61\x46\x5c\x64\x3f\xc8\xb2\x97\x66\xaf\x2b\xcb\xc5\x44\x0b\x86\xe8\x36\x08\xcf\xc9\x37\xbe\x98\xbb\x48\x27\xfd\x5e\x6b\x68\x9a\xdc\x2e\x26\x51\x3d\xb5\x31\x07\x6a\x65\x64\x39\x62\x55\xa0\x99\x75\xb7\x03\x4d\xac\x06\x46\x1b\x25\x56\x42\xe3\xa7\xed\x75\xfa\x9f\xc2\x65\x01\x1f\x5f\x62\x50\x38\x2a\x84\xac\x26\x8d\x63\xba\x64"}, +{{0x65,0xde,0x29,0x7b,0x70,0xcb,0xe8,0x09,0x80,0x50,0x0a,0xf0,0x56,0x1a,0x24,0xdb,0x50,0x00,0x10,0x00,0x12,0x5f,0x44,0x90,0x36,0x6d,0x83,0x00,0xd3,0x12,0x85,0x92,},{0xba,0x8e,0x2a,0xd9,0x29,0xbd,0xce,0xa5,0x38,0x74,0x10,0x42,0xb5,0x7f,0x20,0x67,0xd3,0x15,0x37,0x07,0xa4,0x53,0x77,0x0d,0xb9,0xf3,0xc4,0xca,0x75,0x50,0x4d,0x24,},{0x7a,0x9b,0x73,0x6b,0x01,0xcc,0x92,0xa3,0x34,0x9f,0x1a,0x3c,0x32,0xdb,0xd9,0x19,0x59,0x82,0x53,0x94,0xff,0x44,0x3c,0x56,0x74,0x05,0xe8,0x99,0xc8,0x18,0x5c,0xe8,0xfa,0xd9,0x50,0x0e,0x1f,0xce,0x89,0xd9,0x5a,0x62,0x53,0xc0,0x04,0x77,0x43,0x5a,0xcf,0x04,0xbf,0xf9,0x93,0xde,0x1b,0x00,0x49,0x5d,0xef,0x08,0x34,0xee,0x1f,0x07,},"\x13\x1d\x8f\x4c\x2c\x94\xb1\x53\x56\x5b\x86\x59\x2e\x77\x0c\x98\x7a\x44\x34\x61\xb3\x9a\xa2\x40\x8b\x29\xe2\x13\xab\x05\x7a\xff\xc5\x98\xb5\x83\x73\x9d\x66\x03\xa8\x3f\xef\x0a\xfc\x51\x47\x21\xdb\x0e\x76\xf9\xbd\x1b\x72\xb9\x8c\x56\x5c\xc8\x88\x1a\xf5\x74\x7c\x0b\xa6\xf5\x8c\x53\xdd\x23\x77\xda\x6c\x0d\x3a\xa8\x05\x62\x0c\xc4\xe7\x5d\x52\xaa\xbc\xba\x1f\x9b\x28\x49\xe0\x8b\xd1\xb6\xb9\x2e\x6f\x06\x61\x5b\x81\x45\x19\x60\x6a\x02\xdc\x65\xa8\x60\x9f\x5b\x29\xe9\xc2\xaf\x5a\x89\x4f\x71\x16\xef\x28\xcf\xd1\xe7\xb7\x6b\x64\x06\x17\x32\xf7\xa5\xa3\xf8\xaa\x4c\x2e\x56\x9e\x62\x7a\x3f\x97\x49\xaa\x59\x7b\xe4\x9d\x6b\x94\x43\x6c\x35\x2d\xd5\xfa\x7b\x83\xc9\x2d\x26\x10\xfa\xa3\x20\x95\xca\x30\x21\x52\xd9\x1a\x3c\x97\x76\x75\x0e\x75\x8e\xe8\xe9\xe4\x02\xc6\xf5\x38\x5e\xaa\x5d\xf2\x38\x50\xe5\x4b\xeb\x1b\xe4\x37\xa4\x16\xc7\x11\x5e\xd6\xaa\x6d\xe1\x3b\x55\x48\x25\x32\x78\x7e\x0b\xee\x34\xb8\x3f\x30\x84\x40\x67\x65\x63\x54\x97\xc9\x31\xb6\x2a\x05\x18\xf1\xfb\xc2\xb8\x91\xdc\x72\x62\xc7\xc6\xb6\x7e\xda\x59\x4f\xa5\x30\xd7\x4c\x93\x29\xba\xd5\xbe\x94\xc2\x87\xfb\xcd\xe5\x3a\xa8\x02\x72\xb8\x33\x22\x61\x3d\x93\x68\xe5\x90\x40\x76\xfd\xbc\xc8\x8b\x2c\x0e\x59\xc1\x0b\x02\xc4\x48\xe0\x0d\x1b\x3e\x7a\x9c\x96\x40\xfe\xff\xb9\x52\x3a\x8a\x60\xe1\xd8\x3f\x04\xa4\xb8\xdf\x69\x15\x3b"}, +{{0x08,0x26,0xe7,0x33,0x33,0x24,0xe7,0xec,0x8c,0x76,0x42,0x92,0xf6,0x01,0x5d,0x46,0x70,0xe9,0xb8,0xd7,0xc4,0xa8,0x9e,0x8d,0x90,0x9e,0x8e,0xf4,0x35,0xd1,0x8d,0x15,},{0xff,0xb2,0x34,0x8c,0xa8,0xa0,0x18,0x05,0x8b,0xe7,0x1d,0x15,0x12,0xf3,0x76,0xf9,0x1e,0x8b,0x0d,0x55,0x25,0x81,0x25,0x4e,0x10,0x76,0x02,0x21,0x73,0x95,0xe6,0x62,},{0x4b,0xac,0x7f,0xab,0xec,0x87,0x24,0xd8,0x1a,0xb0,0x9a,0xe1,0x30,0x87,0x4d,0x70,0xb5,0x21,0x34,0x92,0x10,0x43,0x72,0xf6,0x01,0xae,0x5a,0xbb,0x10,0x53,0x27,0x99,0x37,0x3c,0x4d,0xad,0x21,0x58,0x76,0x44,0x1f,0x47,0x4e,0x2c,0x00,0x6b,0xe3,0x7c,0x3c,0x8f,0x5f,0x6f,0x01,0x7d,0x08,0x70,0x41,0x4f,0xd2,0x76,0xa8,0xf4,0x28,0x08,},"\x7f\x9e\x3e\x2f\x03\xc9\xdf\x3d\x21\xb9\x90\xf5\xa4\xaf\x82\x95\x73\x4a\xfe\x78\x3a\xcc\xc3\x4f\xb1\xe9\xb8\xe9\x5a\x0f\xd8\x37\xaf\x7e\x05\xc1\x3c\xda\x0d\xe8\xfa\xda\xc9\x20\x52\x65\xa0\x79\x2b\x52\x56\x3b\xdc\x2f\xee\x76\x63\x48\xbe\xfc\xc5\x6b\x88\xbb\xb9\x5f\x15\x44\x14\xfb\x18\x6e\xc4\x36\xaa\x62\xea\x6f\xca\xbb\x11\xc0\x17\xa9\xd2\xd1\x5f\x67\xe5\x95\x98\x0e\x04\xc9\x31\x3b\xc9\x4f\xbc\x8c\x11\x34\xc2\xf4\x03\x32\xbc\x7e\x31\x1a\xc1\xce\x11\xb5\x05\xf8\x57\x2a\xda\x7f\xbe\x19\x6f\xba\x82\x2d\x9a\x91\x44\x92\xfa\x71\x85\xe9\xf3\xbe\xa4\x68\x72\x00\xa5\x24\xc6\x73\xa1\xcd\xf8\x7e\xb3\xa1\x40\xdc\xdb\x6a\x88\x75\x61\x34\x88\xa2\xb0\x0a\xdf\x71\x75\x34\x1c\x1c\x25\x76\x35\xfa\x1a\x53\xa3\xe2\x1d\x60\xc2\x28\x39\x9e\xea\x09\x91\xf1\x12\xc6\x0f\x65\x3d\x71\x48\xe2\xc5\xce\xb9\x8f\x94\x08\x31\xf0\x70\xdb\x10\x84\xd7\x91\x56\xcc\x82\xc4\x6b\xc9\xb8\xe8\x84\xf3\xfa\x81\xbe\x2d\xa4\xcd\xda\x46\xbc\xaa\x24\xcc\x46\x1f\x76\xee\x64\x7b\xb0\xf0\xf8\xc1\x5a\xc5\xda\xa7\x95\xb9\x45\xe6\xf8\x5b\xb3\x10\x36\x2e\x48\xd8\x09\x5c\x78\x2c\x61\xc5\x2b\x48\x1b\x4b\x00\x2a\xd0\x6e\xa7\x4b\x8d\x30\x6e\xff\x71\xab\xf2\x1d\xb7\x10\xa8\x91\x3c\xbe\x48\x33\x2b\xe0\xa0\xb3\xf3\x1e\x0c\x7a\x6e\xba\x85\xce\x33\xf3\x57\xc7\xae\xcc\xd3\x0b\xfb\x1a\x65\x74\x40\x8b\x66\xfe\x40\x4d\x31\xc3\xc5"}, +{{0x00,0xad,0x62,0x27,0x97,0x7b,0x5f,0x38,0xcc,0xda,0x99,0x4d,0x92,0x8b,0xba,0x90,0x86,0xd2,0xda,0xeb,0x01,0x3f,0x86,0x90,0xdb,0x98,0x66,0x48,0xb9,0x0c,0x1d,0x45,},{0x91,0xa4,0xea,0x00,0x57,0x52,0xb9,0x2c,0xbe,0xbf,0x99,0xa8,0xa5,0xcb,0xec,0xd2,0x40,0xae,0x3f,0x01,0x6c,0x44,0xad,0x14,0x1b,0x2e,0x57,0xdd,0xc7,0x73,0xdc,0x8e,},{0xdc,0x50,0x1d,0xb7,0x9f,0xd7,0x82,0xbc,0x88,0xca,0xe7,0x92,0x55,0x7d,0x5d,0x27,0x3f,0x9b,0xa5,0x60,0xc7,0xd9,0x00,0x37,0xfe,0x84,0xac,0x87,0x9d,0x68,0x4f,0x61,0x2a,0x77,0x45,0x2c,0x44,0x43,0xe9,0x5c,0x07,0xb8,0xbe,0x19,0x2c,0x35,0x76,0x9b,0x17,0xbb,0xdf,0xca,0x42,0x28,0x0d,0xe7,0x96,0xd9,0x21,0x19,0xd8,0x33,0x67,0x0d,},"\xcb\x5b\xc5\xb9\x8b\x2e\xfc\xe4\x35\x43\xe9\x1d\xf0\x41\xe0\xdb\xb5\x3e\xd8\xf6\x7b\xf0\xf1\x97\xc5\x2b\x22\x11\xe7\xa4\x5e\x2e\x1e\xc8\x18\xc1\xa8\x0e\x10\xab\xf6\xa4\x35\x35\xf5\xb7\x9d\x97\x4d\x8a\xe2\x8a\x22\x95\xc0\xa6\x52\x17\x63\xb6\x07\xd5\x10\x3c\x6a\xef\x3b\x27\x86\xbd\x5a\xfd\x75\x63\x69\x56\x60\x68\x43\x37\xbc\x30\x90\x73\x9f\xb1\xcd\x53\xa9\xd6\x44\x13\x9b\x6d\x4c\xae\xc7\x5b\xda\x7f\x25\x21\xfb\xfe\x67\x6a\xb4\x5b\x98\xcb\x31\x7a\xa7\xca\x79\xfc\x54\xa3\xd7\xc5\x78\x46\x6a\x6a\xa6\x4e\x43\x4e\x92\x34\x65\xa7\xf2\x11\xaa\x0c\x61\x68\x1b\xb8\x48\x6e\x90\x20\x6a\x25\x25\x0d\x3f\xda\xe6\xfb\x03\x29\x97\x21\xe9\x9e\x2a\x91\x49\x10\xd9\x17\x60\x08\x9b\x5d\x28\x1e\x13\x1e\x6c\x83\x6b\xc2\xde\x08\xf7\xe0\x2c\x48\xd3\x23\xc6\x47\xe9\x53\x6c\x00\xec\x10\x39\x20\x1c\x03\x62\x61\x8c\x7d\x47\xaa\x8e\x7b\x97\x15\xff\xc4\x39\x98\x7a\xe1\xd3\x11\x54\xa6\x19\x8c\x5a\xa1\x1c\x12\x8f\x40\x82\xf5\x56\xc9\x9b\xaf\x10\x3e\xca\xdc\x3b\x2f\x3b\x2e\xc5\xb4\x69\x62\x3b\xc0\x3a\x53\xca\xf3\x81\x4b\x16\x30\x0a\xed\xbd\xa5\x38\xd6\x76\xd1\xf6\x07\x10\x26\x39\xdb\x2a\x62\xc4\x46\x70\x7c\xe6\x46\x9b\xd8\x73\xa0\x46\x82\x25\xbe\x88\xb0\xae\xf5\xd4\x02\x04\x59\xb9\x4b\x32\xfe\x2b\x01\x33\xe9\x2e\x7b\xa5\x4d\xd2\xa5\x39\x7e\xd8\x5f\x96\x6a\xb3\x9e\xd0\x73\x0c\xca\x8e\x7d\xac\xb8\xa3\x36"}, +{{0x15,0x21,0xc6,0xdb,0xd6,0xf7,0x24,0xde,0x73,0xea,0xf7,0xb5,0x62,0x64,0xf0,0x10,0x35,0xc0,0x4e,0x01,0xc1,0xf3,0xeb,0x3c,0xbe,0x83,0xef,0xd2,0x6c,0x43,0x9a,0xda,},{0x2f,0x61,0xa2,0x6f,0xfb,0x68,0xba,0x4f,0x6e,0x14,0x15,0x29,0xdc,0x26,0x17,0xe8,0x53,0x1c,0x71,0x51,0x40,0x48,0x08,0x09,0x3b,0x4f,0xa7,0xfe,0xda,0xea,0x25,0x5d,},{0xa8,0x17,0xed,0x23,0xec,0x39,0x8a,0x12,0x86,0x01,0xc1,0x83,0x2d,0xc6,0xaf,0x76,0x43,0xbf,0x3a,0x5f,0x51,0x7b,0xcc,0x57,0x94,0x50,0xfd,0xb4,0x75,0x90,0x28,0xf4,0x96,0x61,0x64,0x12,0x5f,0x6e,0xbd,0x0d,0x6b,0xf8,0x6f,0xf2,0x98,0xa3,0x9c,0x76,0x6d,0x0c,0x21,0xfd,0xb0,0xcb,0xfd,0xf8,0x1c,0xd0,0xeb,0x1f,0x03,0xcd,0x8a,0x08,},"\x3e\x3c\x7c\x49\x07\x88\xe4\xb1\xd4\x2f\x5c\xbc\xae\x3a\x99\x30\xbf\x61\x7e\xbd\xff\x44\x7f\x7b\xe2\xac\x2b\xa7\xcd\x5b\xcf\xc0\x15\x76\x09\x63\xe6\xfe\x5b\x95\x6f\xb7\xcd\xb3\x5b\xd5\xa1\x7f\x54\x29\xca\x66\x4f\x43\x7f\x08\x75\x3a\x74\x1c\x2b\xc8\x69\x2b\x71\xa9\x11\x5c\x58\x2a\x25\xb2\xf7\x4d\x32\x98\x54\xd6\x0b\x78\x17\xc0\x79\xb3\x52\x3a\xaf\xf8\x79\x3c\x2f\x72\xff\xf8\xcd\x10\x59\x2c\x54\xe7\x38\xdf\x1d\x64\x52\xfb\x72\xda\x13\x1c\x67\x31\xea\x5c\x95\x3c\x62\xea\x17\x7a\xc1\xf4\x73\x5e\x51\x54\x47\x73\x87\x10\x9a\xfa\xe1\x5f\x3e\xd6\xee\xb0\x86\x06\xe2\x8c\x81\xd4\x38\x6f\x03\xb9\x37\x69\x24\xb6\xef\x8d\x22\x1e\xe2\x95\x47\xf8\x2a\x7e\xde\x48\xe1\xdc\x17\x72\x3e\x3d\x42\x17\x1e\xea\xf9\x6a\xc8\x4b\xed\xc2\xa0\x1d\xd8\x6f\x4d\x08\x57\x34\xfd\x69\xf9\x1b\x52\x63\xe4\x39\x08\x3f\xf0\x31\x85\x36\xad\xff\x41\x47\x30\x8e\x3a\xaf\xd1\xb5\x8b\xb7\x4f\x6f\xb0\x21\x4a\x46\xfd\xcd\x35\x24\xf1\x8d\xf5\xa7\x19\xce\x57\x31\x9e\x79\x1b\x4e\xa6\x06\xb4\x99\xbf\xa5\x7a\x60\xe7\x07\xf9\x4e\x18\xf1\xfe\xd2\x2f\x91\xbc\x79\xe6\x36\x4a\x84\x3f\x9c\xbf\x93\x82\x5c\x46\x5e\x9c\xae\x90\x72\xbc\x9d\x3e\xc4\x47\x1f\x21\xab\x2f\x7e\x99\xa6\x33\xf5\x87\xaa\xc3\xdb\x78\xae\x96\x66\xa8\x9a\x18\x00\x8d\xd6\x1d\x60\x21\x85\x54\x41\x1a\x65\x74\x0f\xfd\x1a\xe3\xad\xc0\x65\x95\xe3\xb7\x87\x64\x07\xb6"}, +{{0x17,0xe5,0xf0,0xa8,0xf3,0x47,0x51,0xba,0xbc,0x5c,0x72,0x3e,0xcf,0x33,0x93,0x06,0x99,0x2f,0x39,0xea,0x06,0x5a,0xc1,0x40,0xfc,0xbc,0x39,0x7d,0x2d,0xd3,0x2c,0x4b,},{0x4f,0x1e,0x23,0xcc,0x0f,0x2f,0x69,0xc8,0x8e,0xf9,0x16,0x2a,0xb5,0xf8,0xc5,0x9f,0xb3,0xb8,0xab,0x20,0x96,0xb7,0x7e,0x78,0x2c,0x63,0xc0,0x7c,0x8c,0x4f,0x2b,0x60,},{0xef,0xe2,0xcb,0x63,0xfe,0x7b,0x4f,0xc9,0x89,0x46,0xdc,0x82,0xfb,0x69,0x98,0xe7,0x41,0xed,0x9c,0xe6,0xb9,0xc1,0xa9,0x3b,0xb4,0x5b,0xc0,0xa7,0xd8,0x39,0x6d,0x74,0x05,0x28,0x2b,0x43,0xfe,0x36,0x3b,0xa5,0xb2,0x35,0x89,0xf8,0xe1,0xfa,0xe1,0x30,0xe1,0x57,0xce,0x88,0x8c,0xd7,0x2d,0x05,0x3d,0x0c,0xc1,0x9d,0x25,0x7a,0x43,0x00,},"\xc0\xfa\xd7\x90\x02\x40\x19\xbd\x6f\xc0\x8a\x7a\x92\xf5\xf2\xac\x35\xcf\x64\x32\xe2\xea\xa5\x3d\x48\x2f\x6e\x12\x04\x93\x53\x36\xcb\x3a\xe6\x5a\x63\xc2\x4d\x0e\xc6\x53\x9a\x10\xee\x18\x76\x0f\x2f\x52\x05\x37\x77\x4c\xde\xc6\xe9\x6b\x55\x53\x60\x11\xda\xa8\xf8\xbc\xb9\xcd\xaf\x6d\xf5\xb3\x46\x48\x44\x8a\xc7\xd7\xcb\x7c\x6b\xd8\x0d\x67\xfb\xf3\x30\xf8\x76\x52\x97\x76\x60\x46\xa9\x25\xab\x52\x41\x1d\x16\x04\xc3\xed\x6a\x85\x17\x30\x40\x12\x56\x58\xa3\x2c\xf4\xc8\x54\xef\x28\x13\xdf\x2b\xe6\xf3\x83\x0e\x5e\xee\x5a\x61\x63\xa8\x3c\xa8\x84\x9f\x61\x29\x91\xa3\x1e\x9f\x88\x02\x8e\x50\xbf\x85\x35\xe1\x17\x55\xfa\xd0\x29\xd9\x4c\xf2\x59\x59\xf6\x69\x5d\x09\xc1\xba\x43\x15\xd4\x0f\x7c\xf5\x1b\x3f\x81\x66\xd0\x2f\xab\xa7\x51\x1e\xcd\x8b\x1d\xde\xd5\xf1\x0c\xd6\x84\x34\x55\xcf\xf7\x07\xed\x22\x53\x96\xc6\x1d\x08\x20\xd2\x0a\xda\x70\xd0\xc3\x61\x9f\xf6\x79\x42\x20\x61\xc9\xf7\xc7\x6e\x97\xd5\xa3\x7a\xf6\x1f\xd6\x22\x12\xd2\xda\xfc\x64\x7e\xbb\xb9\x79\xe6\x1d\x90\x70\xec\x03\x60\x9a\x07\xf5\xfc\x57\xd1\x19\xae\x64\xb7\xa6\xef\x92\xa5\xaf\xae\x66\x0a\x30\xed\x48\xd7\x02\xcc\x31\x28\xc6\x33\xb4\xf1\x90\x60\xa0\x57\x81\x01\x72\x9e\xe9\x79\xf7\x90\xf4\x5b\xdb\xb5\xfe\x1a\x8a\x62\xf0\x1a\x61\xa3\x1d\x61\xaf\x07\x03\x04\x50\xfa\x04\x17\x32\x3e\x94\x07\xbc\x76\xe7\x31\x30\xe7\xc6\x9d\x62\xe6\xa7"}, +{{0x0c,0xd7,0xaa,0x7d,0x60,0x5e,0x44,0xd5,0xff,0xb9,0x79,0x66,0xb2,0xcb,0x93,0xc1,0x89,0xe4,0xc5,0xa8,0x5d,0xb8,0x7f,0xad,0x7a,0xb8,0xd6,0x24,0x63,0xc5,0x9b,0x59,},{0x48,0x89,0x85,0x5f,0xe4,0x11,0x6b,0x49,0x13,0x92,0x7f,0x47,0xf2,0x27,0x3b,0xf5,0x59,0xc3,0xb3,0x94,0xa9,0x83,0x63,0x1a,0x25,0xae,0x59,0x70,0x33,0x18,0x5e,0x46,},{0xbf,0x91,0x15,0xfd,0x3d,0x02,0x70,0x6e,0x39,0x8d,0x4b,0xf3,0xb0,0x2a,0x82,0x67,0x4f,0xf3,0x04,0x15,0x08,0xfd,0x39,0xd2,0x9f,0x86,0x7e,0x50,0x16,0x34,0xb9,0x26,0x1f,0x51,0x6a,0x79,0x4f,0x98,0x73,0x8d,0x7c,0x70,0x13,0xa3,0xf2,0xf8,0x58,0xff,0xdd,0x08,0x04,0x7f,0xb6,0xbf,0x3d,0xdd,0xfb,0x4b,0x4f,0x4c,0xbe,0xef,0x30,0x03,},"\x28\xa5\x5d\xda\x6c\xd0\x84\x4b\x65\x77\xc9\xd6\xda\x07\x3a\x4d\xc3\x5c\xbc\x98\xac\x15\x8a\xb5\x4c\xf8\x8f\xd2\x0c\xc8\x7e\x83\xc4\xbb\xa2\xd7\x4d\x82\xce\x0f\x48\x54\xec\x4d\xb5\x13\xde\x40\x04\x65\xaa\xa5\xee\xe7\x90\xbc\x84\xf1\x63\x37\x07\x2d\x3a\x91\xcd\xe4\x0d\x6e\x0d\xf1\xba\x0c\xc0\x64\x5f\x5d\x5c\xbb\xb6\x42\x38\x1d\x7b\x9e\x21\x1d\x25\x26\x7a\x8a\xcf\x77\xd1\xed\xb6\x9c\x3a\x63\x0f\x5b\x13\x3d\x24\xf0\x46\xa8\x1b\xf2\x2f\xf0\x3b\x31\xd8\x44\x7e\x12\xc3\xf7\xb7\x71\x14\xa7\x0c\xbd\x20\xbb\xd0\x8b\x0b\x38\x27\xa6\xbb\xcf\x90\x40\x9e\x34\x44\x47\xa7\xfb\xc5\x9b\xdd\x97\xd7\x29\x07\x1f\x8d\x71\xdc\xc3\x3e\x6e\xf2\xcb\xab\x1d\x41\x1e\xdf\x13\x73\x4d\xb1\xdd\x97\x03\x27\x6f\x5e\xb2\xd6\xaa\x2c\xb8\x95\x2d\xd6\x71\x2b\xfa\xe8\x09\xce\x08\xc3\xaa\x50\x2b\x81\x35\x71\x3f\xac\x0a\x9c\x25\xb1\xd4\x5b\x6a\x58\x31\xe0\x24\x21\xbb\xa6\x5b\x81\xa5\x96\xef\xa2\x4b\x05\x76\xbd\x1d\xc7\xfd\xfb\x49\xbe\x76\x28\x75\xe8\x1b\xd5\x40\x72\x2b\xc0\x61\x40\xb9\xaa\x2e\xf7\xb8\x4a\x80\x1e\x41\xde\xd6\x8d\x45\x46\xac\x48\x73\xd9\xe7\xce\xd6\x49\xb6\x4f\xad\xaf\x0b\x5c\x4b\x6e\xb8\xd0\x36\x31\x52\x33\xf4\x32\x6c\xa0\x1e\x03\x39\x30\x50\xcd\x02\x7c\x24\xf6\x73\x03\xfb\x84\x6b\xd2\xc6\xb3\xdb\xa0\x6b\xed\x0d\x59\xa3\x62\x89\xd2\x4b\xd6\x48\xf7\xdb\x0b\x3a\x81\x34\x66\x12\x59\x3e\x3d\xdd\x18\xc5\x57"}, +{{0x33,0x37,0x1d,0x9e,0x89,0x2f,0x98,0x75,0x05,0x2a,0xc8,0xe3,0x25,0xba,0x50,0x5e,0x74,0x77,0xc1,0xac,0xe2,0x4b,0xa7,0x82,0x26,0x43,0xd4,0x3d,0x0a,0xce,0xf3,0xde,},{0x35,0x92,0x9b,0xde,0xd2,0x7c,0x24,0x9c,0x87,0xd8,0xb8,0xd8,0x2f,0x59,0x26,0x0a,0x57,0x53,0x27,0xb5,0x46,0xc3,0xa1,0x67,0xc6,0x9f,0x59,0x92,0xd5,0xb8,0xe0,0x06,},{0x98,0x5c,0xa4,0x46,0xdd,0xc0,0x07,0x82,0x7c,0xc8,0xf2,0x85,0x2c,0xbd,0x81,0x15,0xef,0x8c,0x59,0x75,0xe9,0xd7,0xce,0x96,0xd7,0x4d,0xfe,0xd8,0x59,0xaa,0x14,0xa4,0xc1,0x52,0x54,0x00,0x6b,0xea,0x5e,0x08,0x35,0x9e,0xfe,0x26,0x25,0xd7,0x15,0xe0,0x89,0x7e,0xe5,0xa1,0x6f,0x15,0x12,0x03,0xbe,0x50,0x10,0x41,0x86,0x37,0xde,0x05,},"\x27\xa3\x2e\xfb\xa2\x82\x04\xbe\x59\xb7\xff\x5f\xe4\x88\xca\x15\x8a\x91\xd5\x98\x60\x91\xec\xc4\x45\x8b\x49\xe0\x90\xdd\x37\xcb\xfe\xde\x7c\x0f\x46\x18\x6f\xab\xcb\xdf\xf7\x8d\x28\x44\x15\x58\x08\xef\xff\xd8\x73\xed\x9c\x92\x61\x52\x6e\x04\xe4\xf7\x05\x0b\x8d\x7b\xd2\x67\xa0\xfe\x3d\x5a\x44\x93\x78\xd5\x4a\x4f\xeb\xbd\x2f\x26\x82\x43\x38\xe2\xaa\xaf\x35\xa3\x2f\xf0\xf6\x25\x04\xbd\xa5\xc2\xe4\x4a\xbc\x63\x15\x9f\x33\x6c\xf2\x5e\x6b\xb4\x0d\xdb\x7d\x88\x25\xdf\xf1\x8f\xd5\x1f\xc0\x19\x51\xea\xed\xcd\x33\x70\x70\x07\xe1\x20\x3c\xa5\x8b\x4f\x7d\x24\x2f\x81\x66\xa9\x07\xe0\x99\x93\x2c\x00\x1b\xfb\x1e\xc9\xa6\x1e\x0e\xf2\xda\x4e\x84\x46\xaf\x20\x82\x01\x31\x5d\x69\x68\x17\x10\xd4\x25\xd2\x40\x0c\x38\x7d\x7b\x9d\xf3\x21\xa4\xae\xc6\x02\xb9\xc6\x56\xc3\xe2\x31\x0b\xff\x87\x56\xd1\x8b\x80\x21\x34\xb1\x56\x04\xf4\xed\xc1\x11\x14\x9a\x98\x79\xe3\x12\x41\xdd\x34\xf7\x02\xf4\xc3\x49\x61\x7b\x13\x52\x97\x69\xa7\x72\xf5\xe5\x2a\x89\xc0\x98\xe0\xdc\xa5\x92\x06\x67\x89\x3a\x25\x00\x61\xb1\x79\x91\x62\x6e\xb9\x31\x92\x98\x68\x5b\xe4\x6b\x6a\x8b\x68\x42\x24\x44\xfa\x5a\x36\xbc\xf3\xa6\x87\xe2\xec\xcb\x93\x22\xc8\x7d\xc8\x01\x65\xda\x89\x89\x30\x85\x0b\x98\xfc\x86\x3c\xad\xa1\xaa\x99\xc6\xd6\x1c\x45\x1b\x9c\xcf\x48\x74\xc7\xf0\xe7\x5b\x0a\x0c\x60\x2f\x04\x48\x12\xc7\x17\x65\xad\xaf\x02\x02\x53\x95\xb0"}, +{{0xbe,0xed,0xb8,0x07,0x3d,0xf5,0x8f,0x8c,0x1b,0xff,0xbd,0xbd,0x77,0xec,0x7d,0xec,0xb2,0xc8,0x2a,0x9b,0xab,0xec,0xef,0xc0,0x33,0x15,0x07,0xbd,0xc2,0xc2,0xa7,0xe7,},{0xb2,0x7e,0x90,0x8b,0x80,0x5e,0x29,0x6f,0xc3,0x0d,0x2e,0x47,0x4b,0x06,0x0c,0xd5,0x0c,0x0f,0x6f,0x52,0x0b,0x36,0x71,0x71,0x21,0x83,0xbd,0x89,0xd4,0xe7,0x33,0xe9,},{0x8c,0x89,0x0c,0xcc,0xad,0xc7,0x76,0x0e,0x1e,0x82,0xe4,0x3c,0x44,0xb3,0xdc,0x0b,0x68,0x5a,0x48,0xb4,0x79,0xae,0x13,0xcc,0x0a,0x6b,0x05,0x57,0xd0,0xfb,0x1c,0xba,0xbb,0xa6,0x3d,0x2a,0x96,0x84,0x34,0x12,0xea,0x8d,0x36,0xc5,0x0a,0xcb,0xf5,0x2b,0x92,0xcf,0xb2,0xdc,0xe4,0x9d,0xc4,0x8a,0xf6,0xdd,0xcf,0x8e,0xe4,0x7a,0x86,0x08,},"\x35\xca\x57\xf0\xf9\x15\xe5\x20\x9d\x54\xea\x4b\x87\x1f\xfb\x58\x53\x54\xdf\x1b\x4a\x4a\x17\x96\xfb\xe4\xd6\x22\x7d\x3e\x1a\xba\x51\x71\xed\x03\x91\xa7\x9e\x83\xe2\x4d\x82\xfd\xaf\xd1\x5c\x17\xb2\x8b\xf6\xc9\x4d\x61\x8c\x74\xd6\x52\x64\xe5\x8f\xaa\xac\xd2\x90\x28\x72\xfd\xd0\xef\xa2\x2e\x8d\x2d\x7c\xe8\xe3\xb8\x19\x7f\x0c\x36\x15\xb0\xa3\x85\x23\x5f\xa9\xfd\x8e\x45\x64\xee\x6e\x6b\x16\x50\xb4\xcf\xb9\x4d\x87\x2c\x80\x5c\x32\xd4\xf3\xa1\x8f\x96\x64\x61\xd3\xad\xbb\x60\x5f\xa5\x25\x88\x4f\x8e\xb1\x97\x62\x73\x96\xba\x4d\x99\x5d\x78\xac\x02\x94\x8a\x0e\xaa\xbb\x58\x51\x9b\x9a\x8e\x2e\x79\x85\xcd\x1d\xe2\xc7\x1d\x89\x18\xd9\x6a\x01\x68\x66\x0c\xe1\x7c\xdd\xf3\x64\xe3\xec\x0d\x4b\xd9\x0f\x21\x04\x75\x1a\x19\x27\xee\x1d\x23\xf3\xe7\xa6\x98\x40\xed\x04\x0b\x00\xe5\xf6\xe4\x86\x6e\xc5\x88\x13\x14\x9c\xc3\x82\xae\xbf\x61\x62\x60\x8c\x79\x57\x4d\x55\x3f\x47\x23\x0e\x92\x4a\x0e\xf1\xeb\xf5\x5d\x8e\x1a\x52\xab\xb6\x2a\x2d\x7a\xc8\x60\x27\xc7\xc0\x3c\xc8\x3f\xa1\x94\x9d\xa2\x9e\x2f\x30\x37\xab\x98\x6f\xd2\xff\xfe\x65\x0e\x31\x49\xba\xba\xe5\xa5\x0b\x1e\xe9\x69\x6f\x3b\xab\xec\x72\xe2\x96\x97\xc8\x24\x22\x81\x4d\x27\x20\x85\x50\x0f\xd8\x37\xfe\x3c\x7a\x97\x3e\xf4\xc1\x69\xaf\x12\xdd\x7f\x02\x70\x06\x20\xbb\x04\x5b\xdb\xf8\x46\x23\xf3\x26\x35\x05\x70\xb3\xca\xdb\xc9\xae\xa4\x20\x0b\x28\x28\x7e\x17\xab"}, +{{0x91,0x84,0xef,0x61,0x88,0x16,0x83,0x25,0x92,0xbc,0x8e,0xb3,0x5f,0x4f,0xfd,0x4f,0xf9,0x8d,0xfb,0xf7,0x77,0x6c,0x90,0xf2,0xaa,0xd2,0x12,0xce,0x7e,0x03,0x35,0x1e,},{0x68,0x7b,0x77,0x26,0x01,0x0d,0x9b,0xde,0x2c,0x90,0xe5,0x73,0xcd,0x2a,0x2a,0x70,0x2f,0xf2,0x8c,0x4a,0x2a,0xf7,0x0a,0xfc,0x73,0x15,0xc9,0x4d,0x57,0x56,0x01,0xe5,},{0xb3,0xc2,0x4e,0x75,0x13,0x2c,0x56,0x34,0x75,0x42,0x2d,0x5e,0xa4,0x12,0xb5,0xc1,0xe8,0xe6,0xe5,0xea,0x1c,0x08,0xea,0xd1,0x39,0x3c,0x41,0x2d,0xa1,0x34,0xc9,0xa1,0x63,0x82,0x84,0xea,0x7e,0x2c,0xa0,0x32,0xfe,0x3d,0x3e,0x32,0xa9,0x06,0x6a,0x8c,0x88,0x39,0x90,0x3f,0x6e,0xf4,0x6e,0x96,0x6b,0xb5,0xe4,0x92,0xd8,0xc2,0xaa,0x00,},"\x72\x9e\xb7\xe5\x4a\x9d\x00\xc5\x86\x17\xaf\x18\xc3\x45\xb8\xdc\x6e\x5b\x4e\x0f\x57\xde\x2f\x3c\x02\xe5\x4a\x2e\xc8\xf1\x42\x5e\xc2\xe2\x40\x77\x5b\x5a\xb0\xc1\x0f\x84\xac\x8b\xaf\xda\x45\x84\xf7\xe2\x1c\x65\x5f\xae\xcd\x80\x30\xa9\x89\x06\xbd\x68\x39\x8f\x26\xb5\xd5\x8d\x92\xb6\xcf\x04\x5e\x9b\xd9\x74\x3c\x74\xc9\xa3\x42\xec\x61\xce\x57\xf3\x7b\x98\x1e\xac\x4d\x8b\xf0\x34\x60\x88\x66\xe9\x85\xbb\x68\x68\x6a\x68\xb4\xa2\xaf\x88\xb9\x92\xa2\xa6\xd2\xdc\x8c\xe8\x8b\xfb\x0a\x36\xcf\x28\xbb\xab\x70\x24\xab\xfa\x2b\xea\x53\x31\x3b\x66\xc9\x06\xf4\xf7\xcf\x66\x97\x0f\x54\x00\x95\xbd\x01\x04\xaa\x49\x24\xdd\x82\xe1\x54\x13\xc2\x26\x79\xf8\x47\xe4\x8c\xd0\xc7\xec\x1f\x67\x7e\x00\x5f\xec\x01\x77\xfb\xd5\xc5\x59\xfc\x39\xad\xd6\x13\x99\x1f\xba\xea\xe4\xd2\x4d\x39\xd3\x09\xef\x74\x64\x7f\x81\x92\xcc\x4c\x62\xd0\x64\x20\x28\xc7\x6a\x1b\x95\x1f\x6b\xc9\x63\x9d\xeb\x91\xec\xc0\x8b\xe6\x04\x3f\x21\x09\x70\x5a\x42\xc7\xea\xe7\x12\x64\x9d\x91\xd9\x6c\xcb\xbf\xb6\x3d\x8d\x0d\xd6\xdd\x11\x21\x60\xf6\x13\x61\xec\xdc\x67\x93\x92\x9c\xa9\xae\xf9\xab\x56\x94\x4a\x6f\xa4\xa7\xdf\x1e\x27\x9e\xaf\x58\xce\x83\x23\xa9\xcf\x62\xc9\x42\x79\xff\xf7\x44\x0f\xbc\x93\x6b\xaa\x61\x48\x9c\x99\x93\x30\xba\xdc\xb9\xfc\x0e\x18\x4b\xc5\x09\x3f\x33\x0c\xbb\x24\x2f\x71\xfb\x37\x87\x38\xfe\xa1\x05\x11\xdd\x43\x83\x64\xd7\xf7\x6b\xcc"}, +{{0x35,0x4e,0x13,0x15,0x2e,0xe1,0xfe,0x74,0x8a,0x12,0x52,0x20,0x4c,0x65,0x27,0xbd,0xc1,0xb1,0xeb,0x2e,0xb5,0x36,0x78,0x15,0x0e,0x63,0x59,0x92,0x47,0x08,0xd8,0x12,},{0xd4,0x5f,0xf6,0xc5,0xfb,0x83,0xe7,0xbb,0x96,0x69,0xaa,0x89,0x60,0xde,0xb7,0xdb,0xc6,0x65,0xc9,0x88,0x43,0x9b,0x6c,0x9e,0xf6,0x72,0xc6,0x81,0x1d,0xc8,0xbc,0xf6,},{0xde,0x2b,0x46,0xe6,0x5f,0x3d,0xec,0xef,0x34,0x33,0x2e,0x50,0x0f,0x2e,0x11,0x30,0x6f,0xbd,0xcf,0x1b,0xe8,0x5a,0x1c,0x1e,0xe6,0x8b,0xa3,0x04,0x5d,0xce,0xc2,0xc7,0xbe,0x60,0x8d,0x22,0x92,0x7d,0xa1,0xf4,0x4c,0x0e,0x20,0x83,0xae,0x62,0x2c,0xf3,0xc2,0x9d,0x89,0x38,0x87,0x99,0x4e,0xfc,0xfa,0x2c,0xa5,0x94,0xf5,0x05,0x1f,0x03,},"\x8e\x5f\xcc\xf6\x6b\x1b\xa6\x16\x9c\xb6\x85\x73\x3d\x9d\x0e\x01\x90\x36\x1c\x90\xbc\xab\x95\xc1\x63\x28\x5a\x97\xfe\x35\x6d\x2b\xdc\xde\x3c\x93\x80\x26\x88\x05\xa3\x84\xd0\x63\xda\x09\xcc\xd9\x96\x9c\xc3\xff\x74\x31\xe6\x0a\x8e\x9f\x86\x9c\xd6\x2f\xaa\x0e\x35\x61\x51\xb2\x80\xbc\x52\x6e\x57\x7c\x2c\x53\x8c\x9a\x72\x4d\xc4\x8b\xf8\x8b\x70\x32\x1d\x7e\x1e\xee\xdb\x3c\x4a\xf7\x06\x74\x8c\x94\x2e\x67\xbd\xab\xdb\x41\xbe\xc2\x97\x7b\x15\x23\x06\x9e\x31\xe2\x9b\x76\x30\x02\x88\xf8\x8a\x51\xb3\x84\xb8\x0c\xc2\x52\x6f\x16\x79\x34\x0d\xde\xc3\x88\x1f\x5c\xd2\x8b\x03\x78\xd9\xcd\x0a\x81\x2b\x68\xdd\x3f\x68\xf7\xa2\x3e\x1b\x54\xbe\xe7\x46\x6a\xc7\x65\xcf\x38\xdf\x04\xd6\x74\x41\xdf\xa4\x98\xc4\xbf\xfc\x52\x04\x5f\xa6\xd2\xdb\xcd\xbf\xa3\x3d\xfa\xa7\x76\x44\xff\xcc\xef\x0d\xec\xdb\x67\x90\xc7\x0a\x0d\x73\x4e\xc2\x87\xcc\x33\x8c\xb5\xa9\x09\xc0\x05\x51\x89\x30\x11\x69\xc4\xf7\x70\x2c\x05\xc0\x91\x1a\x27\xb1\x6e\xf9\xed\x93\x4f\xa6\xa0\xca\x7b\x13\xe4\x13\x52\x34\x22\x53\x56\x47\x96\x80\x30\xed\xc4\x0c\xd7\x3e\x7d\x6b\x34\x5b\x75\x81\xf4\x38\x31\x6d\x68\xe3\xcd\x29\x2b\x84\x6d\x3f\x4f\x7c\x48\x62\xbc\x7e\x6b\x3f\xb8\x9a\x27\xf6\xf6\x0c\xd7\xdb\x2e\x34\xec\x9a\xae\x10\x13\xfe\x37\xac\xff\x8a\xd8\x88\xcb\x9a\x59\x3e\xf5\xe6\x21\xea\xe5\x18\x6c\x58\xb3\x1d\xcf\xde\x22\x87\x0e\x33\x6d\x33\xf4\x40\xf6\xb8\xd4\x9a"}, +{{0x7f,0xf6,0x2d,0x4b,0x3c,0x4d,0x99,0xd3,0x42,0xd4,0xbb,0x40,0x1d,0x72,0x6b,0x21,0xe9,0x9f,0x4e,0xf5,0x92,0x14,0x9f,0xc3,0x11,0xb6,0x87,0x61,0xf5,0x56,0x7f,0xf6,},{0x7f,0xdf,0xdb,0x9e,0xca,0x29,0xd3,0xf0,0x1d,0x94,0x86,0xd7,0xe1,0x12,0xce,0x03,0xaa,0x37,0xb9,0x13,0x26,0xa4,0x28,0x3b,0x9c,0x03,0x99,0x9c,0x5e,0xda,0x09,0x9a,},{0x05,0x8f,0x79,0x92,0x7f,0xbf,0x61,0x78,0x72,0x48,0x15,0xc7,0xb1,0x1c,0x63,0xba,0xaa,0x90,0xbc,0xc1,0x5d,0x72,0x72,0xbe,0x08,0x2f,0x8a,0x91,0x41,0x86,0x1c,0x81,0x64,0x33,0x05,0x5f,0x6c,0xf6,0x49,0x14,0x24,0x85,0x3f,0x9e,0xc7,0x8b,0xb9,0x1a,0xce,0x91,0x3a,0x93,0x41,0x1b,0x4e,0x5e,0xd5,0x8b,0xc4,0xba,0x57,0x15,0xc6,0x0a,},"\x99\xc4\x4c\x79\x65\x72\xa4\x82\x3f\xc6\xc3\x80\x77\x30\x83\x91\x73\x77\x4c\x05\xdb\xfc\x14\x92\xed\x0d\x00\x50\x9a\x95\xa1\xde\x37\x27\x4b\x31\x35\xed\x04\x56\xa1\x71\x8e\x57\x65\x97\xdc\x13\xf2\xa2\xab\x37\xa4\x5c\x06\xcb\xb4\xa2\xd2\x2a\xfa\xd4\xd5\xf3\xd9\x0a\xb3\xd8\xda\x4d\xcd\xaa\x06\xd4\x4f\x22\x19\x08\x84\x01\xc5\xdc\xee\xe2\x60\x55\xc4\x78\x2f\x78\xd7\xd6\x3a\x38\x06\x08\xe1\xbe\xf8\x9e\xee\xf3\x38\xc2\xf0\x89\x7d\xa1\x06\xfa\xfc\xe2\xfb\x2e\xbc\x5d\xb6\x69\xc7\xc1\x72\xc9\xcf\xe7\x7d\x31\x09\xd2\x39\xfe\x5d\x00\x5c\x8e\xe7\x51\x51\x1b\x5a\x88\x31\x7c\x72\x9b\x0d\x8b\x70\xb5\x2f\x6b\xd3\xcd\xa2\xfe\x86\x5c\x77\xf3\x6e\x4f\x1b\x63\x5f\x33\x6e\x03\x6b\xd7\x18\xbe\xc9\x0e\xe7\x8a\x80\x28\x11\x51\x0c\x40\x58\xc1\xba\x36\x40\x17\x25\x3a\xa8\x42\x92\x2e\x1d\xd7\xd7\xa0\xf0\xfc\x9c\x69\xe4\x3f\xc4\xea\xef\xfa\xaf\x1a\xe5\xfa\x5d\x2d\x73\xb4\x30\x79\x61\x7b\xab\xa0\x30\x92\x3f\xe5\xb1\x3d\x2c\x1c\x4f\xe6\xfa\xc3\xf2\xdb\x74\xe2\x02\x0a\x73\x4b\x61\x21\xa0\x30\x2f\xce\x82\x0b\xa0\x58\x0c\xe6\x13\x53\x48\xfd\xf0\x63\x2e\x00\x08\xdf\x03\xee\x11\x21\x68\xf5\xcf\xa0\x03\x7a\x26\xa1\xf6\x9b\x1f\x13\x17\xed\xf2\xa3\xab\x36\x74\x55\xa7\x7e\x00\x69\x12\x15\xd7\xaa\x31\x33\xc2\x15\x9d\x3d\xa2\xb1\x34\xcf\x04\xf0\xde\xfb\xf0\x7a\x60\x64\x01\x1e\x64\xdd\x14\xd4\xf8\xf0\x64\x35\x66\x55\x42\x88\x04\xc2\x77\x1a"}, +{{0x6c,0xab,0xad,0xd0,0x3f,0x8a,0x2e,0x6e,0xba,0xb9,0x6a,0x74,0xf8,0x0e,0x18,0x16,0x4e,0x4d,0x1b,0x6b,0xaa,0x67,0x8f,0x5a,0x82,0xe2,0x56,0x04,0xaf,0x98,0x9a,0xaf,},{0x2a,0x4a,0x31,0x79,0x56,0x41,0x94,0xe0,0x01,0x00,0xc1,0x8b,0xc3,0x53,0x51,0xd8,0xb1,0x35,0xbb,0xae,0x5b,0x32,0xb2,0x8f,0xce,0x1d,0x7b,0x67,0x66,0xca,0x4b,0x32,},{0x4e,0x65,0xc6,0xc1,0xd4,0x93,0x04,0x5e,0x8a,0x92,0x50,0xe3,0x97,0xc1,0xd1,0xd3,0x0f,0xfe,0xd2,0x4d,0xb6,0x6a,0x89,0x61,0xaa,0x45,0x8f,0x8f,0x0f,0xcb,0x76,0x0c,0x39,0xfe,0x86,0x57,0xd7,0xab,0x8f,0x84,0x00,0x0b,0x96,0xd5,0x19,0x71,0x7c,0xff,0x71,0xf9,0x26,0x52,0x2c,0x1e,0xfe,0xc7,0xf8,0xb2,0x62,0x4e,0xae,0x55,0xf6,0x0c,},"\x27\x9f\x78\xcf\x3b\x9c\xcf\xc6\xe1\xb0\x1e\x1a\x82\xf5\x0e\xd1\x72\xe9\xa8\xe1\xe7\x02\xbb\x15\x66\x1d\xd7\xdc\x3a\x45\x6f\xf7\xa7\xa7\xfd\xfb\x08\x1d\xb3\x86\x70\x79\x63\x0c\x7f\x70\xfd\x75\x32\x92\xec\x60\xec\xbf\x50\x63\x2e\x9a\xa4\x5b\x99\x65\x05\xc6\x6e\x6d\xc3\xc6\xae\x89\x2e\x21\xb6\xa8\x70\x5e\x4b\xba\xe8\xf1\x6a\x33\x78\x55\x4b\x31\xfd\xb0\x13\x9d\xcd\x15\xc9\x6a\x8a\x7e\x4b\x88\x75\x6a\x86\xd1\x8d\xb5\xdc\x74\xfd\x76\x91\x19\x7d\xd8\x8e\x2c\x7d\x5d\xf5\x2b\x04\x93\x44\xcd\xc4\x77\xc9\xcd\x7e\x89\xed\xa9\x9c\xcf\xb1\xd0\x08\x14\xd0\x15\x2b\x96\x54\xdf\x32\x79\x37\x2c\xa5\xf1\x8b\x1c\x94\x6f\x28\x94\xa7\x6b\x07\x9d\xdb\x1c\x3c\xd6\x1f\xbb\x96\x9a\xee\xc9\x19\x3a\x6b\x88\xfb\x7d\x13\x6c\x07\xf9\x82\x1e\x5c\x10\x74\xb4\xe9\x3b\xca\xf6\xfa\x14\xd0\xd1\xd7\xe1\x70\x75\x89\xd7\x7e\xc1\x33\x72\x06\xe5\x3a\x1f\x06\xcc\x26\x67\x2f\xf9\x5c\x13\xd5\xff\x44\x47\x66\x93\x1b\xa3\x0a\x0a\xfd\xcd\xad\xd2\x09\x8e\x9c\x41\xfd\x87\xa3\xf2\x3c\xd1\x6d\xbb\x0e\xfb\xf8\x09\x2c\xe3\x3e\x32\x7f\x42\x61\x09\x90\xe1\xce\xe6\xcb\x8e\x54\x95\x1a\xa0\x81\xe6\x97\x65\xae\x40\x09\xae\xed\x75\x8e\x76\x8d\xe5\x0c\x23\xd9\xa2\x2b\x4a\x06\xdc\x4d\x19\xfc\x8c\xbd\x0c\xde\xf4\xc9\x83\x46\x17\x55\xd0\xa3\xb5\xd6\xa9\xc1\x22\x53\xe0\x95\x68\x33\x9f\xf7\xe5\xf7\x8c\x5f\xdf\x7e\xc8\x9f\x91\x86\xa6\x21\xa8\xc0\xee\xd1\x1b\x67\x02\x2e"}, +{{0x0f,0xa0,0xc3,0x2c,0x3a,0xe3,0x4b,0xe5,0x1b,0x92,0xf9,0x19,0x45,0x40,0x59,0x81,0xa8,0xe2,0x02,0x48,0x85,0x58,0xa8,0xe2,0x20,0xc2,0x88,0xc7,0xd6,0xa5,0x53,0x2d,},{0xd6,0xae,0xe6,0x2b,0xd9,0x1f,0xc9,0x45,0x36,0x35,0xff,0xcc,0x02,0xb2,0xf3,0x8d,0xca,0xb1,0x32,0x85,0x14,0x03,0x80,0x58,0x0c,0xcd,0xff,0x08,0x65,0xdf,0x04,0x92,},{0x7e,0x9a,0xb8,0x5e,0xe9,0x4f,0xe4,0xb3,0x5d,0xcb,0x54,0x53,0x29,0xa0,0xef,0x25,0x92,0x3d,0xe5,0xc9,0xdc,0x23,0xe7,0xdf,0x1a,0x7e,0x77,0xab,0x0d,0xcf,0xb8,0x9e,0x03,0xf4,0xe7,0x85,0xca,0x64,0x29,0xcb,0x2b,0x0d,0xf5,0x0d,0xa6,0x23,0x0f,0x73,0x3f,0x00,0xf3,0x3a,0x45,0xc4,0xe5,0x76,0xcd,0x40,0xbd,0xb8,0x4f,0x1a,0xe0,0x01,},"\x53\xf4\x4b\xe0\xe5\x99\x7f\xf0\x72\x64\xcb\x64\xba\x13\x59\xe2\x80\x1d\xef\x87\x55\xe6\x4a\x23\x62\xbd\xda\xf5\x97\xe6\x72\xd0\x21\xd3\x4f\xfa\xce\x6d\x97\xe0\xf2\xb1\xf6\xae\x62\x5f\xd3\x3d\x3c\x4f\x6e\x9f\xf7\xd0\xc7\x3f\x1d\xa8\xde\xfb\x23\xf3\x24\x97\x5e\x92\x1b\xb2\x47\x32\x58\x17\x7a\x16\x61\x25\x67\xed\xf7\xd5\x76\x0f\x3f\x3e\x3a\x6d\x26\xaa\xab\xc5\xfd\xe4\xe2\x04\x3f\x73\xfa\x70\xf1\x28\x02\x09\x33\xb1\xba\x3b\x6b\xd6\x94\x98\xe9\x50\x3e\xa6\x70\xf1\xed\x88\x0d\x36\x51\xf2\xe4\xc5\x9e\x79\xca\xbc\x86\xe9\xb7\x03\x39\x42\x94\x11\x2d\x5d\x8e\x21\x3c\x31\x74\x23\xb5\x25\xa6\xdf\x70\x10\x6a\x9d\x65\x8a\x26\x20\x28\xb5\xf4\x51\x00\xcb\x77\xd1\x15\x0d\x8f\xe4\x61\xee\xd4\x34\xf2\x41\x01\x5f\x32\x76\xad\x7b\x09\xa2\x91\xb4\xa7\xf3\x5e\x3c\x30\x05\x1c\xbf\x13\xb1\xd4\xa7\xfa\x0c\x81\xa5\x0f\x93\x9e\x7c\x49\x67\x3a\xfd\xc8\x78\x83\xc9\xe3\xe6\x1f\x5a\x1d\xf0\x37\x55\x47\x0f\xda\x74\xbf\x23\xea\x88\x67\x6b\x25\x8a\x97\xa2\x80\xd5\xf9\x0b\x52\xb7\x14\xb5\x96\x03\x5b\xae\x08\xc8\xd0\xfe\x6d\x94\xf8\x94\x95\x59\xb1\xf2\x7d\x71\x16\xcf\x59\xdd\x3c\xfb\xf1\x82\x02\xa0\x9c\x13\xf5\xc4\xfb\xc8\xd9\x72\x25\x49\x28\x87\xd3\x28\x70\xc2\x29\x7e\x34\xde\xbd\x98\x76\xd6\xd0\x1a\xc2\x7a\x16\xb0\x88\xb0\x79\x07\x9f\x2b\x20\xfe\xb0\x25\x37\xcd\xa3\x14\xc4\x3c\xb2\xdc\xa3\x71\xb9\xdf\x37\xed\x11\xec\x97\xe1\xa7\xa6\x99\x3a"}, +{{0x7b,0x06,0xf8,0x80,0x26,0xfa,0x86,0xf3,0x9f,0xce,0x24,0x26,0xf6,0x7c,0xc5,0x99,0x6b,0xed,0xd0,0xcf,0xc4,0xb5,0xeb,0xb1,0xb5,0xe3,0xed,0xbb,0x47,0xe0,0x80,0xaa,},{0x3f,0x14,0x69,0xee,0x6a,0x2e,0x78,0x67,0xe2,0xe9,0x01,0x2d,0x40,0x2c,0xf5,0xa4,0x86,0x14,0x97,0xc0,0x1d,0xf8,0x79,0xa1,0xde,0xb1,0xc5,0x39,0x83,0x0b,0x58,0xde,},{0x42,0xf1,0x33,0xe3,0x4e,0x3e,0xb7,0x03,0x2a,0x13,0x3e,0xd7,0x81,0x53,0x7e,0xc6,0x2e,0x44,0xa5,0xce,0x83,0x81,0xe5,0xe0,0xbf,0x9e,0x13,0xa9,0x14,0xa4,0xb2,0xc7,0x57,0x81,0x1d,0x6d,0x3b,0x1e,0x86,0x67,0x24,0x24,0xea,0x42,0x30,0xd1,0x0f,0x7c,0x61,0x0a,0xbb,0x70,0x69,0xe6,0x1e,0x31,0x9b,0x40,0x66,0xa2,0xbd,0x7b,0xc9,0x00,},"\x71\x17\x5d\x4e\x21\x72\x12\x97\xd9\x17\x6d\x81\x7f\x4e\x78\x5d\x96\x00\xd9\x23\xf9\x87\xfe\x0b\x26\xfd\x79\xd3\x3a\x5e\xa5\xd1\xe8\x18\xb7\x1f\x0f\x92\xb8\xc7\x3a\xfd\xda\xbd\xcc\x27\xf6\xd1\x6e\x26\xaa\xfa\x87\x4c\xfd\x77\xa0\x0e\x06\xc3\x6b\x04\x14\x87\x58\x2b\xb9\x33\x76\x0f\x88\xb4\x19\x12\x73\x45\x77\x6e\xa4\x18\xf8\x35\x22\x25\x4f\xed\x33\x81\x9b\xc5\xc9\x5f\x8f\x84\x04\xcc\x14\x4e\xbf\x14\x86\xc8\x85\x15\x40\x9d\x34\x33\xaa\xf5\x19\xd9\x92\x0f\x52\x56\xe6\x29\x41\x9e\x9a\x95\x58\x0a\x35\xb0\x69\xb8\xd2\x55\x33\xdf\xcb\xc9\x8a\xd3\x64\x04\xa9\x51\x80\x8e\x01\x37\x8c\x03\x26\x63\x26\xd1\x20\x04\x69\x75\xfd\xe0\x7d\xae\xf3\x26\x6c\xaa\xcd\x82\x1c\x14\x03\x49\x9d\x7f\xdf\x17\xc0\x33\xc8\xd8\xc3\xf2\x8f\x16\x2b\x5f\x09\xdf\xda\xca\x06\x28\x5f\x00\xc6\xcb\x98\x6d\xfd\xf5\x15\x1a\xa6\x63\x96\x08\xb5\xb1\x3e\x78\xd6\x5a\x43\x68\x58\x5b\x16\x13\x87\x54\xfb\xd1\x13\x83\x5a\x68\x6c\xd0\x66\xc2\xb8\x9b\xb0\x95\x3c\x24\xd5\x0e\x77\xbf\x0f\xc4\x57\xc1\xe0\xfc\xf5\xd4\x4d\xa8\xdb\x9a\x88\xf0\x62\xbe\x3b\x68\x8d\x5c\xdc\xff\x1d\x1c\x00\xe8\x1e\xc9\xd4\x13\x88\x22\x95\xb3\x41\xfe\xe8\xfa\x42\x7d\xc1\x09\xad\xeb\x5f\x28\x4e\xec\x20\x2f\x1b\xef\x11\x5b\xf9\x6b\x17\x82\xd3\xcc\xde\xb6\x82\xb6\x9b\xf9\x2d\x17\x0c\x00\x7d\x5d\xf8\x0e\x1e\xd9\x62\xf6\x77\xdc\x24\xa1\x45\xa1\xe4\xe8\x29\xe8\xde\xc0\x10\x4e\x5f\x78\x36\x59\x44"}, +{{0xc3,0xf5,0xe1,0x49,0x96,0x8a,0x24,0xf4,0xde,0x91,0x19,0x53,0x19,0x75,0xf4,0x43,0x01,0x5c,0xcc,0xa3,0x05,0xd7,0x11,0x9e,0xd4,0x74,0x9e,0x8b,0xf6,0xd9,0x4f,0xc7,},{0x39,0xaa,0xcc,0xdb,0x94,0x8a,0x40,0x38,0x53,0x8a,0x45,0x88,0x32,0x2f,0x80,0x6b,0xb1,0x29,0xb5,0x87,0x6c,0x4b,0xec,0x51,0x27,0x1a,0xfe,0x4f,0x49,0x69,0x00,0x45,},{0x5f,0xa2,0xb5,0x31,0x67,0x7b,0x00,0xb8,0x5b,0x0a,0x31,0x3c,0xbd,0x47,0x9f,0x55,0xf4,0xab,0x3e,0xc5,0xcf,0xce,0x5e,0x45,0x4d,0x2b,0x74,0x17,0x6c,0xcc,0x33,0x99,0xc8,0x99,0xf9,0xd6,0xb5,0x1e,0xd4,0xc1,0xe7,0x61,0x85,0xac,0x9f,0xe7,0x30,0xc4,0xb4,0x01,0x40,0x44,0xf7,0x04,0x11,0x85,0xbc,0x3c,0x85,0x72,0x2e,0xb2,0xea,0x02,},"\xc4\x63\x70\xe3\x7f\x2e\x0c\xad\xcf\x93\x40\x2f\x1f\x0c\xb0\x48\xf5\x28\x81\xba\x75\x0b\x7a\x43\xf5\x6a\xb1\x1c\xe3\x48\x73\x2f\xb5\x7e\x7f\x9a\xaf\x8d\xfc\xbe\x45\x5e\x14\xe9\x83\xc2\x48\xd0\x26\xa2\x7e\x7f\x14\x8d\x5d\xb5\xa5\x3f\x94\x63\x57\x02\xb8\x95\x12\x77\x71\x04\x7a\x87\x6d\x14\x10\x73\x86\xc5\xe0\xff\x89\x33\x34\x5b\xbd\x7a\x93\x6d\x99\x0d\x33\xef\xa2\x8c\x2e\xc4\xe4\x86\x4f\xfd\x2f\xf5\x76\xf7\xc8\x8f\x95\x4c\xfc\x1c\x45\x9e\x88\x3b\xb7\x12\xda\xe3\xcd\xf6\x63\x20\x66\xf1\xf4\xd1\x3a\x50\x96\x15\xb3\x36\x0c\xad\xc5\xa3\x07\xf2\x3e\x52\xa5\x1b\x40\xa6\xfe\xeb\xe0\xb1\x8d\x0e\x9e\xe4\xe3\x48\xf3\x3c\xd8\x1a\x8d\xef\x22\x2f\x6a\x59\xb1\x28\x61\xd3\x35\xbd\x9a\xf8\x5c\xc0\x04\xbe\x46\xf1\xd3\xa4\x24\xf4\x87\x0a\xe9\xdc\x58\x7e\x5a\x4a\xde\x13\x6b\x93\x70\x64\x93\x48\xc3\x3a\xc3\xbf\x1f\xeb\xee\xbf\xfe\xa3\x70\x85\xed\x59\xca\xc9\xd9\xe6\x96\x47\x0b\x23\x46\x09\xe9\xa1\x0a\x9d\x43\x1f\xf9\x1e\x69\xcb\x51\x35\xfd\x11\x7f\xf5\x8a\x36\x53\x97\x44\xeb\xe7\x0c\xea\x69\x73\xc0\x0c\x7a\x4d\x57\xb6\x2f\x4a\x71\x36\xd7\x31\xb8\xe4\x6f\xf1\x8e\xc0\xed\x69\x07\x00\x31\x90\x50\x75\xd8\x54\x1d\x56\x8c\xfc\xe6\xee\xb7\x62\x42\xb7\x81\x9a\x7b\x6a\x93\x55\x21\x11\xbb\x88\xf1\x65\x52\x7c\xfa\x69\x66\xd3\x9f\xcb\xe0\xa7\xde\xa0\x08\xe3\x9c\x7a\x3e\x57\x7a\xb3\x07\xcd\x1d\x0e\xa3\x26\x83\x3d\x52\x65\x4e\x17\x29\x55\xf3\xfc\xd4"}, +{{0x42,0x30,0x5c,0x93,0x02,0xf4,0x5e,0xa6,0xf8,0x7e,0x26,0xe2,0x20,0x8f,0xd9,0x4b,0x3c,0x4a,0xd0,0x37,0xb1,0xb6,0xc8,0x3c,0xf6,0x67,0x7a,0xa1,0x09,0x6a,0x01,0x3c,},{0x3b,0x97,0xb1,0xf1,0x1c,0xe4,0x5b,0xa4,0x6f,0xfb,0xb2,0x5b,0x76,0xbf,0xc5,0xad,0x7b,0x77,0xf9,0x0c,0xc6,0x9e,0xd7,0x61,0x15,0xde,0xa4,0x02,0x94,0x69,0xd5,0x87,},{0x18,0xd0,0x5e,0x5d,0x01,0x66,0x8e,0x83,0xf4,0x0f,0xa3,0xbb,0xee,0x28,0xb3,0x88,0xac,0xf3,0x18,0xd1,0xb0,0xb5,0xad,0x66,0x8c,0x67,0x2f,0x34,0x5c,0x8e,0xda,0x14,0xc2,0xf8,0x84,0xcd,0x2a,0x90,0x39,0x45,0x9c,0xe0,0x81,0x0b,0xc5,0xb5,0x80,0xfe,0x70,0xd3,0x96,0x4a,0x43,0xed,0xb4,0x9e,0x73,0xa6,0xff,0x91,0x4b,0xbf,0x04,0x0c,},"\xd1\x10\x82\x8d\x44\x91\x98\xd6\x75\xe7\x4e\x8e\x39\x43\x9f\xd1\x5e\x75\xbf\x2c\xc1\xf4\x30\xab\xfb\x24\x58\x36\x88\x5b\xaf\xc4\x20\xf7\x54\xb8\x9d\x2f\xbb\xf6\xdd\x34\x90\x79\x2e\x7a\x4f\x76\x60\x73\xcf\xe3\xb3\x02\xd0\x89\x83\x1a\xce\x86\x9e\x27\x30\xfd\xe4\x5c\x21\x21\xec\x3e\xf2\x17\xaa\x9c\x43\xfa\x7c\xc7\xe9\xed\x0a\x01\xad\x9f\x1d\x2f\xc3\x61\x36\x38\xca\x9f\xc1\x93\xc9\x8b\x37\x45\x5b\xf5\xdb\xf8\xf3\x8b\x64\x70\x8d\xfd\xca\x6c\x21\xf0\x97\x5f\x10\x17\xc5\xda\x5f\x64\x34\xbd\xa9\xf0\x33\xce\xc2\xa6\x31\xab\x50\x31\x8e\x01\x7b\x17\x0b\x24\x0b\xf0\x1e\xb8\xb3\x6c\x7e\x1c\xb5\x9e\x77\x36\xac\x34\x44\x42\x08\x13\x2a\x8f\x59\xe4\xf3\x13\xd6\x5d\x84\x9c\x6a\x4f\xdf\x13\xe2\x0e\xca\xee\x38\x23\xe5\x89\xa1\x71\xb3\x9b\x24\x89\x49\x7b\x06\xe6\xff\x58\xc2\xc9\xf1\xdc\x5d\x3a\xa3\xbd\x10\xe6\x44\x3e\x22\xd4\x2d\x07\xb7\x83\xf7\x9f\xd4\x3a\x46\xe1\xcd\xe3\x14\xb6\x63\xa9\x5f\x72\x46\xde\xa1\x31\xfc\xd4\x6d\x1d\xc3\x33\xc5\x45\x4f\x86\xb2\xc4\xe2\xe4\x24\xde\xa4\x05\xcc\x22\x30\xd4\xdc\xd3\x9a\x2e\xab\x2f\x92\x84\x5c\xf6\xa7\x99\x41\x92\x06\x3f\x12\x02\x74\x9e\xf5\x2d\xcb\x96\xf2\xb7\x9e\xd6\xa9\x81\x18\xca\x0b\x99\xba\x22\x85\x49\x08\x60\xeb\x4c\x61\xab\x78\xb9\xdd\xc6\xac\xc7\xad\x88\x3f\xa5\xe9\x6f\x9d\x02\x91\x71\x22\x3a\xbf\x75\x73\xe3\x62\x30\xe0\xa8\x1f\x6c\x13\x11\x15\x14\x73\xee\x26\x4f\x4b\x84\x2e\x92\x3d\xcb\x3b"}, +{{0xc5,0x7a,0x43,0xdc,0xd7,0xba,0xb8,0x51,0x60,0x09,0x54,0x69,0x18,0xd7,0x1a,0xd4,0x59,0xb7,0x34,0x5e,0xfd,0xca,0x8d,0x4f,0x19,0x92,0x98,0x75,0xc8,0x39,0xd7,0x22,},{0x20,0x83,0xb4,0x44,0x23,0x6b,0x9a,0xb3,0x1d,0x4e,0x00,0xc8,0x9d,0x55,0xc6,0x26,0x0f,0xee,0x71,0xac,0x1a,0x47,0xc4,0xb5,0xba,0x22,0x74,0x04,0xd3,0x82,0xb8,0x2d,},{0x1e,0xde,0xf9,0xbc,0x03,0x69,0x71,0xf1,0xfa,0x88,0xed,0xf4,0x53,0x93,0xc8,0x02,0xe6,0xc1,0xa1,0x63,0x1c,0x8a,0x06,0x87,0x1a,0x09,0xa3,0x20,0x82,0x1d,0xce,0x40,0xbe,0xca,0x97,0xe5,0x3a,0x03,0x61,0xa9,0x55,0xa4,0xc6,0xd6,0x0b,0x8c,0xa8,0xe4,0x00,0xc8,0x13,0x40,0x91,0x1c,0xcb,0x4f,0x56,0x28,0x40,0x41,0xcd,0xbb,0x18,0x04,},"\xa4\xf6\xd9\xc2\x81\xcf\x81\xa2\x8a\x0b\x9e\x77\x49\x9a\xa2\x4b\xde\x96\xcc\x12\x64\x37\x44\x91\xc0\x08\x29\x4e\xe0\xaf\x6f\x6e\x4b\xbb\x68\x63\x96\xf5\x90\x68\xd3\x58\xe3\x0f\xe9\x99\x2d\xb0\xc6\xf1\x66\x80\xa1\xc7\x1e\x27\xa4\xa9\x07\xac\x60\x7d\x39\xbd\xc3\x25\x8c\x79\x56\x48\x2f\xb3\x79\x96\xf4\xbe\xb3\xe5\x05\x1b\x81\x48\x01\x9a\x1c\x25\x6e\x2e\xe9\x99\xeb\xc8\xce\x64\xc5\x4e\x07\xfe\xdb\x4f\xbd\x89\x53\xeb\xd9\x3b\x7d\x69\xce\x5a\x00\x82\xed\xd6\x20\x9d\x12\xd3\x61\x9b\x4f\xd2\xea\xe9\x16\x46\x1f\x72\xa4\xce\x72\x71\x57\x25\x1a\x19\x20\x9b\xbf\xf9\xfb\xdb\xd2\x89\x43\x6f\x3f\xca\xcc\x6b\x4e\x13\x18\x52\x1a\x47\x83\x9c\xba\x4b\x14\xf7\xd7\xa2\x1e\x7b\x5d\x6b\x6a\x75\x3d\x58\x04\xaf\xcd\x2b\x1e\xb7\x77\x9b\x92\xab\xab\x8a\xfa\x8a\xa4\xfa\x51\xca\xec\x0b\x85\xdc\xd0\xfc\x2a\x06\x76\x03\x6d\x3f\x56\x63\x0a\x83\x1f\xfe\xb5\x02\x86\x1d\xd8\x91\x61\xc7\x08\xa9\xc0\x06\xc7\x3c\x93\x0c\xe5\xb9\x47\x56\x42\x6f\xf1\x8a\xa1\x12\xfb\x4e\xb9\xa6\x85\x00\xb4\x8d\x4e\xed\xbd\x41\x67\xb6\xff\xd0\xa1\x1d\x49\x44\x3a\x17\x3c\xe9\xd9\x49\x43\x67\x48\xfc\x06\x34\xf0\x6b\xb0\x8b\x8f\x34\x23\xf4\x46\x3d\xba\x7b\x4d\x19\x9b\x64\xdf\x57\x81\x17\xf0\xa2\x64\x5f\x0b\x2a\x1e\x2a\xda\x27\xd2\x86\xf7\x67\x33\xf2\x5b\x82\xed\x1d\x48\xa5\xc3\x89\x8d\x4a\xd6\x21\xe5\x0e\xd9\x06\x0d\xaa\xd4\x0a\x39\x53\x2e\x4d\x1b\xf1\x62\xce\x36\x80\x4d\x5d\x4e\x2d"}, +{{0x2d,0xdd,0xb6,0xb8,0xfd,0x04,0xfa,0x90,0xec,0xe1,0xa7,0x09,0xf8,0x41,0x8f,0x2e,0x5d,0x0c,0x9c,0x43,0xaf,0xe7,0xcf,0xce,0x19,0xe6,0xad,0x15,0xa7,0x34,0x76,0xf7,},{0x80,0x59,0xde,0x6a,0x7c,0x47,0x76,0x48,0x9e,0xcc,0x2e,0x7d,0x70,0x7f,0xfc,0xe3,0x02,0x85,0xbf,0x30,0xa2,0x3f,0x78,0xd7,0x2d,0xb4,0x9c,0xfd,0x6e,0xd0,0xd4,0x92,},{0xc6,0x34,0xea,0x7b,0xf7,0x2e,0x89,0x5a,0x2e,0x79,0x6e,0x28,0x34,0x20,0x14,0x15,0xb8,0xb4,0x5e,0x05,0xe0,0x45,0x55,0x92,0x84,0xeb,0x90,0x52,0xc0,0xe8,0x4f,0x62,0xa5,0xa9,0xf0,0xc9,0x76,0x4f,0x75,0x76,0x78,0x8c,0x72,0x28,0xb1,0x9e,0xf5,0x17,0xc1,0x95,0x49,0x73,0x25,0xa4,0x8a,0x93,0x44,0xb1,0x47,0xc1,0x2f,0xd7,0x55,0x09,},"\x47\x4b\xaa\x59\x0a\x4c\xd7\x2d\x54\x24\xe5\x1d\x82\x57\xb3\xd4\x43\x25\xbc\x4c\x50\x63\xa0\x03\x3c\x86\xeb\xbe\x99\xed\x72\x12\x18\x4c\x19\x94\x4d\x08\x2a\x11\x53\x79\xdd\x4c\xec\xe9\x73\xfa\xa0\xbc\xa6\x48\x5b\xd2\x5f\x37\x44\xa7\x19\xe7\x0a\xa0\x29\x1e\x1b\x5a\x96\xe6\x37\xc1\x40\x61\x6a\x98\x26\x33\x57\xc7\x6b\x6e\xb0\x08\x3f\xe5\x14\x14\xe3\x86\x87\x0d\x0f\xdc\x7d\xd9\xab\xe4\xff\x6f\xb5\xbb\xf1\xe7\xb1\x5d\xac\x3e\x08\xe2\x61\x5f\x65\x5c\x31\x04\xce\xb3\x2a\x4c\xc2\xc9\xe9\xc4\x3c\xf2\x82\xd3\x46\xac\x25\x3c\xcc\x46\xb6\x35\xae\x04\x09\x73\xb4\x97\x35\x72\x0f\xfb\x89\x04\x69\xa5\x67\xc5\x82\x4e\x0c\x00\xd7\xcc\xd5\x50\x9a\x71\x80\x92\xa9\x06\x46\x1c\x4d\x61\x63\xea\xf4\x22\x41\x8f\x5f\xc6\xe0\x09\xfc\x3f\x52\x9a\xc6\x1a\x2f\x89\xbb\x8e\x0e\xd4\x5d\x94\x0c\x4c\x23\x31\xff\x8d\x8e\x1d\x6d\x58\xd4\x17\xd8\xfc\x26\x56\xa0\x2e\x87\x01\xae\xe7\x5a\xed\x91\x87\x24\xee\xbe\x4a\x2c\xf4\x74\x4c\x5c\x40\x1e\x21\x70\x23\xdf\x68\xa6\xf6\xa0\x22\x8b\xd0\x5a\x67\x9a\x69\x7d\x8d\xe7\x03\x6b\x9e\xd2\x69\x09\x0d\x3c\x65\x48\x6a\xfb\x91\xe2\x79\x54\xeb\x15\xb9\x64\x66\x5e\xde\x7a\xd0\x08\xf1\x2f\xb3\xa9\xd0\xe6\x9c\x13\xb4\x25\x4f\x43\x81\x9e\x08\x18\xa4\x19\x5f\x68\xb8\xa3\x8a\xe8\x1f\x3f\xcb\x18\x79\xc9\x5a\xb4\xcd\x0f\xfc\x38\xe3\x81\x08\x92\x60\xcc\xa9\x67\xac\xe5\xa0\x85\xb4\x57\xab\x5e\xb3\x63\x85\x21\x01\x37\x75\x70\xf9\xac\x9e\x38"}, +{{0x55,0x47,0xf1,0x00,0x4b,0xae,0xdf,0xce,0x5c,0xfc,0x08,0x50,0xb0,0x53,0x02,0x37,0x4a,0xad,0x24,0xf6,0x16,0x39,0x94,0xec,0xd7,0x51,0xdf,0x3a,0xf3,0xc1,0x06,0x20,},{0x7c,0xe6,0x20,0x78,0x73,0x85,0xee,0x19,0x51,0xac,0x49,0xa7,0x73,0x52,0xee,0x0d,0x6f,0x8c,0x5c,0xd4,0x7d,0xf7,0x4e,0x9e,0x32,0x16,0xa6,0x32,0x4f,0xc7,0xcf,0x7f,},{0x29,0xdf,0x3a,0xd5,0x89,0x00,0x9c,0x66,0x7b,0xaa,0x5e,0x72,0xda,0xbb,0x4e,0x53,0xcb,0x78,0x76,0xde,0x4e,0x7e,0xfe,0x5c,0xc2,0x1e,0xad,0x7f,0xa8,0x78,0xdb,0x57,0xf9,0x7c,0x11,0x03,0xdd,0xb3,0x9a,0x86,0x1e,0xb8,0x86,0x53,0xc1,0xd4,0xec,0x3b,0x43,0x06,0xe4,0x58,0x4b,0x47,0xb8,0xbc,0x90,0x42,0x31,0x19,0xe7,0xe4,0xaf,0x00,},"\xa6\xc1\x7e\xeb\x5b\x80\x66\xc2\xcd\x9a\x89\x66\x73\x17\xa9\x45\xa0\xc7\xc9\x69\x96\xe7\x7a\xe8\x54\xc5\x09\xc6\xcd\x06\x31\xe9\x22\xad\x04\x50\x3a\xf8\x7a\x3c\x46\x28\xad\xaf\xed\x76\x00\xd0\x71\xc0\x78\xa2\x2e\x7f\x64\xbd\xa0\x8a\x36\x2b\x38\xb2\x6c\xa1\x50\x06\xd3\x8a\xcf\x53\x2d\x0d\xed\xea\x41\x77\xa2\xd3\x3f\x06\x95\x6d\x80\xe9\x63\x84\x8e\xc7\x91\xb2\x76\x2f\xa9\x94\x49\xb4\xf1\xa1\xed\x9b\x3f\x25\x80\xbe\x3a\xc7\xd7\xf5\x2f\xb1\x44\x21\xd6\x22\x2b\xa7\x6f\x80\x77\x50\xc6\xcb\xb0\xb1\x6f\x08\x95\xfc\x73\xd9\xdf\xc5\x87\xe1\xa9\xe5\xd1\xe5\x83\x75\xfb\xab\x70\x5b\x8f\x0c\x1f\xd7\xdf\x8b\x3a\xd4\x46\xf2\xf0\x84\x59\xe7\xed\x1a\xf5\x95\x56\xfb\xc9\x66\xdc\x24\x9c\x1c\xf6\x04\xf3\xe6\x77\xc8\xa0\x9d\x43\x63\x60\x87\x74\xbf\x38\x11\xbe\xf0\x64\x27\x48\xc5\x5c\x51\x6c\x7a\x58\x0f\xa3\x49\x90\x50\xac\xb3\x0e\xed\x87\x0d\x0d\x91\x17\x4c\xb6\x23\xe9\x8c\x3a\xd1\x21\xcf\x81\xf0\x4e\x57\xd4\x9b\x00\x84\x24\xa9\x8a\x31\xee\xaa\xf5\xf3\x8e\x00\x0f\x90\x3d\x48\xd2\x15\xed\x52\xf8\x62\xd6\x36\xa5\xa7\x36\x07\xde\x85\x76\x01\x67\x26\x7e\xfe\x30\xf8\xa2\x6e\xbc\x5a\xa0\xc0\x9f\x5b\x25\x8d\x33\x61\xca\x69\xd1\xd7\xee\x07\xb5\x96\x48\x17\x9a\xb2\x17\x0e\xc5\x0c\x07\xf6\x61\x6f\x21\x68\x72\x52\x94\x21\xa6\x33\x4a\x4a\x1e\xd3\xd2\x67\x1e\xf4\x7b\xc9\xa9\x2a\xfb\x58\x31\x4e\x83\x2d\xb8\xa9\x00\x34\x08\xa0\x48\x75\x03\xfe\x4f\x67\x77\x0d\xd4\xb6"}, +{{0x3d,0xd7,0x20,0x3c,0x23,0x7a,0xef,0xe9,0xe3,0x8a,0x20,0x1f,0xf3,0x41,0x49,0x01,0x79,0x90,0x5f,0x9f,0x10,0x08,0x28,0xda,0x18,0xfc,0xbe,0x58,0x76,0x8b,0x57,0x60,},{0xf0,0x67,0xd7,0xb2,0xff,0x3a,0x95,0x7e,0x83,0x73,0xa7,0xd4,0x2e,0xf0,0x83,0x2b,0xcd,0xa8,0x4e,0xbf,0x28,0x72,0x49,0xa1,0x84,0xa2,0x12,0xa9,0x4c,0x99,0xea,0x5b,},{0x4c,0x03,0x69,0x35,0xa9,0x6a,0xbc,0x0d,0x05,0x0d,0x90,0x7b,0xed,0xbe,0x99,0x46,0xfb,0x97,0x43,0x9f,0x03,0x9c,0x74,0x2e,0x05,0x1c,0xcf,0x09,0xad,0xd7,0xdf,0x44,0xd1,0x7d,0xa9,0x8c,0x2c,0xa0,0x1b,0xdc,0x24,0x24,0xda,0x1e,0x4d,0xeb,0xf3,0x47,0xf8,0xff,0xf4,0x8a,0xc8,0x03,0x0d,0x2c,0xc0,0x7f,0x95,0x75,0xc0,0x44,0xbe,0x04,},"\xdb\x28\xed\x31\xac\x04\xb0\xc2\xde\xce\xe7\xa6\xb2\x4f\xc9\xa0\x82\xcc\x26\x2c\xa7\xcc\xf2\xa2\x47\xd6\x37\x2e\xc3\xe9\x12\x0e\xce\xdb\x45\x42\xea\x59\x3f\xea\x30\x33\x5c\x5a\xb9\xdd\x31\x8a\x3b\x4f\xd5\x83\x42\x99\xcf\x3f\x53\xd9\xef\x46\x13\x7b\x27\x3c\x39\x0e\xc3\xc2\x6a\x0b\x44\x70\xd0\xd9\x4b\x77\xd8\x2c\xae\x4b\x24\x58\x78\x37\xb1\x67\xbb\x7f\x81\x66\x71\x0b\xae\xb3\xee\x70\xaf\x79\x73\x16\xcb\x7d\x05\xfa\x57\xe4\x68\xae\x3f\x0b\xd4\x49\x40\x4d\x85\x28\x80\x8b\x41\xfc\xca\x62\xf5\xe0\xa2\xaa\x5d\x8f\x3a\xca\xb0\x08\xcc\x5f\x6e\x5a\xb0\x27\x77\xbd\xcd\xe8\x7f\x0a\x10\xef\x06\xa4\xbb\x37\xfe\x02\xc9\x48\x15\xcf\x76\xbf\xb8\xf5\xcd\xd8\x65\xcc\x26\xdc\xb5\xcf\x49\x2e\xdf\xd5\x47\xb5\x35\xe2\xe6\xa6\xd8\x54\x09\x56\xdc\xba\x62\xcf\xea\x19\xa9\x47\x44\x06\xe9\x34\x33\x7e\x45\x42\x70\xe0\x10\x36\xac\x45\x79\x3b\x6b\x8a\xce\xda\x18\x7a\x08\xd5\x6a\x2c\xe4\xe9\x8f\x42\xea\x37\x5b\x10\x1a\x6b\x9f\xcb\x42\x31\xd1\x71\xaa\x46\x3e\xeb\x43\x58\x6a\x4b\x82\xa3\x87\xbc\xdd\xaf\x71\xa8\x0f\xd5\xc1\xf7\x29\x2e\xfc\x2b\xd8\xe7\x0c\x11\xea\xa8\x17\x10\x60\x61\xb6\xc4\x61\xc4\x88\x3d\x61\x3c\xc0\x6c\x7e\x2a\x03\xf7\x3d\x90\xfc\x55\xcd\xc0\x72\x65\xee\xfd\x36\xbe\x72\x27\x03\x83\xd6\xc6\x76\xca\xe3\x7c\x93\x69\x1f\x1a\xe3\xd9\x27\xb3\xa1\xcd\x96\x3e\x42\x29\x75\x7a\xe5\x23\x1e\xea\x73\xa9\xf7\x15\x15\x62\x83\x05\x41\x0a\xc2\x59\x3b\x32\x5c\xc6\x31"}, +{{0x28,0x27,0x75,0xdf,0x9e,0xbb,0xd7,0xc5,0xa6,0x5f,0x3a,0x2b,0x09,0x6e,0x36,0xee,0x64,0xa8,0xf8,0xea,0x71,0x9d,0xa7,0x77,0x58,0x73,0x9e,0x4e,0x74,0x76,0x11,0x1d,},{0xa2,0xb4,0x96,0x46,0x03,0x3a,0x13,0x93,0x7c,0xad,0x6b,0x0e,0x91,0x4e,0x3c,0xec,0x54,0x98,0x9c,0x25,0x2c,0xa5,0x64,0x3d,0x07,0x65,0x55,0xd8,0xc5,0x5e,0x56,0xe0,},{0x15,0x76,0x39,0x73,0x85,0x94,0x02,0x90,0x7d,0x8d,0xcb,0x86,0xad,0xc2,0x4a,0x2a,0x16,0x8b,0xa3,0xab,0xf2,0x24,0x61,0x73,0xd6,0x34,0x8a,0xfe,0xd5,0x1e,0xf6,0x0b,0x0c,0x0e,0xde,0xff,0x4e,0x10,0xbc,0xef,0x4c,0x6e,0x57,0x78,0xc8,0xbc,0x1f,0x5e,0x9e,0xe0,0x23,0x73,0x73,0x44,0x5b,0x45,0x51,0x55,0xd2,0x3d,0xe1,0x27,0xa2,0x02,},"\x14\xcc\x50\xc2\x97\x3e\xa9\xd0\x18\x7a\x73\xf7\x1c\xb9\xf1\xce\x07\xe7\x39\xe0\x49\xec\x2b\x27\xe6\x61\x3c\x10\xc2\x6b\x73\xa2\xa9\x66\xe0\x1a\xc3\xbe\x8b\x50\x5a\xea\xad\x14\x85\xc1\xc2\xa3\xc6\xc2\xb0\x0f\x81\xb9\xe5\xf9\x27\xb7\x3b\xfd\x49\x86\x01\xa7\x62\x2e\x85\x44\x83\x7a\xad\x02\xe7\x2b\xf7\x21\x96\xdc\x24\x69\x02\xe5\x8a\xf2\x53\xad\x7e\x02\x5e\x36\x66\xd3\xbf\xc4\x6b\x5b\x02\xf0\xeb\x4a\x37\xc9\x55\x49\x92\xab\xc8\x65\x1d\xe1\x2f\xd8\x13\x17\x73\x79\xbb\x0c\xe1\x72\xcd\x8a\xaf\x93\x7f\x97\x96\x42\xbc\x2e\xd7\xc7\xa4\x30\xcb\x14\xc3\xcd\x31\x01\xb9\xf6\xb9\x1e\xe3\xf5\x42\xac\xdf\x01\x7f\x8c\x21\x16\x29\x7f\x45\x64\x76\x8f\x4d\xb9\x5d\xad\x8a\x9b\xcd\xc8\xda\x4d\x8f\xb1\x3e\xf6\xe2\xda\x0b\x13\x16\xd3\xc8\xc2\xf3\xed\x83\x6b\x35\xfe\x2f\xd3\x3e\xff\xb4\x09\xe3\xbc\x1b\x0f\x85\x22\x5d\x2a\x1d\xe3\xbf\xc2\xd2\x05\x63\x94\x64\x75\xc4\xd7\xca\x9f\xdd\xba\xf5\x9a\xd8\xf8\x96\x1d\x28\x7a\xe7\xdd\x80\x3e\x7a\xf1\xfa\x61\x23\x29\xb1\xbd\xc0\x4e\x22\x56\x00\xae\x73\x1b\xc0\x1a\xe0\x92\x5a\xed\x62\xac\x50\xd4\x60\x86\xf3\x64\x6c\xf4\x7b\x07\x2f\x0d\x3b\x04\x4b\x36\xf8\x5c\xec\x72\x9a\x8b\xb2\xb9\x28\x83\xca\x4d\xfb\x34\xa8\xee\x8a\x02\x73\xb3\x1a\xf5\x09\x82\xbb\x61\x31\xbf\xa1\x1d\x55\x50\x4b\x1f\x6f\x1a\x0a\x00\x43\x8c\xa2\x6d\x8a\xb4\xf4\x8b\xcd\xdc\x9d\x5a\x38\x85\x1a\xbe\xde\x41\x51\xd5\xb7\x0d\x72\x07\x32\xa0\x0a\xbe\xa2\xc8\xb9\x79"}, +{{0x47,0x30,0xa5,0xcf,0x97,0x72,0xd7,0xd6,0x66,0x5b,0xa7,0x87,0xbe,0xa4,0xc9,0x52,0x52,0xe6,0xec,0xd6,0x3e,0xc6,0x23,0x90,0x54,0x7b,0xf1,0x00,0xc0,0xa4,0x63,0x75,},{0xf9,0xf0,0x94,0xf7,0xcc,0x1d,0x40,0xf1,0x92,0x6b,0x5b,0x22,0xdc,0xe4,0x65,0x78,0x44,0x68,0xb2,0x0a,0xb3,0x49,0xbc,0x6d,0x4f,0xdf,0x78,0xd0,0x04,0x2b,0xbc,0x5b,},{0x55,0x2c,0x73,0x47,0xbd,0xfe,0x13,0x16,0x46,0xce,0x09,0x32,0xd8,0x2a,0x36,0xd2,0xc1,0xb7,0x6d,0x7c,0x30,0xee,0x89,0x0e,0x05,0x92,0xe1,0x9f,0x9d,0x18,0xb9,0xa5,0x6f,0x48,0xd7,0xa9,0xb6,0x8c,0x01,0x7d,0xa6,0xb5,0x50,0xc9,0x43,0xaf,0x4a,0x90,0x7b,0xaf,0x31,0x7e,0x41,0x9f,0xbb,0xc9,0x6f,0x6c,0xf4,0xbf,0xad,0x42,0xde,0x00,},"\xe7\x47\x6d\x2e\x66\x84\x20\xe1\xb0\xfa\xdf\xba\xa5\x42\x86\xfa\x7f\xa8\x90\xa8\x7b\x82\x80\xe2\x60\x78\x15\x22\x95\xe1\xe6\xe5\x5d\x12\x41\x43\x5c\xc4\x30\xa8\x69\x3b\xb1\x0c\xde\x46\x43\xf5\x9c\xbf\xcc\x25\x6f\x45\xf5\x09\x0c\x90\x9a\x14\xc7\xfc\x49\xd3\x7b\xfc\x25\xaf\x11\xe8\xf4\xc8\x3f\x4c\x32\xd4\xaa\xbf\x43\xb2\x0f\xa3\x82\xbb\x66\x22\xa1\x84\x8f\x8f\xfc\x4d\xff\x34\x08\xbb\x4e\xc7\xc6\x7a\x35\xb4\xcd\xae\xe5\xe2\x79\xc0\xfc\x0a\x66\x09\x3a\x9f\x36\xa6\x0f\xdd\x65\xe6\x33\x4a\x80\x4e\x84\x5c\x85\x30\xb6\xfd\xa3\x63\xb5\x64\x03\x37\xd0\x27\x24\x3c\xcf\xb3\xc1\x77\xf4\x3e\x71\x78\x96\xe4\x6e\xad\x7f\x72\xca\x06\xaa\x0f\xf1\xe7\x72\x47\x12\x1b\xaf\x48\xbe\x9a\x44\x5f\x72\x9c\xa1\x39\x0f\xc4\x61\x51\xcb\xd3\x3f\xcb\xd7\x37\x3f\x27\xa6\xba\x55\xc9\x2c\xbf\x69\x45\xb0\x9b\x44\xb9\xa4\xe5\x80\x0d\x40\x30\x70\xae\x66\x04\x89\x97\xb2\x19\x7f\x02\x18\x1a\x09\x7e\x56\x3f\x9b\x9a\xcc\x84\x11\x39\x25\x8a\x25\x8b\xc6\x10\xd3\xbd\x89\x16\x37\x35\x6b\x2e\xdc\x8c\x18\x4c\x35\xc6\x5a\xf9\x1a\xaf\x7b\x1c\x16\xd7\x4a\x5f\x5f\x86\x25\x48\x13\x92\x54\xec\xf5\x50\x63\x1d\x5f\x88\x49\xaf\xdb\x5b\x64\xcf\x36\x6f\xf2\x63\x3a\x93\xf3\xa1\x8c\x39\xb5\x15\x02\x45\xfb\x5f\x33\xc9\xe4\xe2\xd9\x4a\xf6\x96\x3a\x70\xb8\x8f\x9e\x7e\x51\x9f\x8f\xa2\xa0\xf2\xe3\x74\x9d\xe8\x83\xd0\xe6\xf0\x52\xa9\x49\xd0\xfc\x71\x53\xa8\x69\x3f\x6d\x80\x1d\x73\x52\xeb\x2f\x7a\x46\x5c\x0e"}, +{{0x27,0x70,0xaa,0xdd,0x1d,0x12,0x3e,0x95,0x47,0x83,0x2d,0xfb,0x2a,0x83,0x7e,0xba,0x08,0x91,0x79,0xef,0x4f,0x23,0xab,0xc4,0xa5,0x3f,0x2a,0x71,0x4e,0x42,0x3e,0xe2,},{0x3c,0x5f,0xbb,0x07,0x53,0x0d,0xd3,0xa2,0x0f,0xf3,0x5a,0x50,0x0e,0x37,0x08,0x92,0x63,0x10,0xfe,0xd8,0xa8,0x99,0x69,0x02,0x32,0xb4,0x2c,0x15,0xbd,0x86,0xe5,0xdc,},{0xf2,0x67,0x71,0x5e,0x9a,0x84,0xc7,0x31,0x4f,0x2d,0x58,0x69,0xef,0x4a,0xb8,0xd2,0x14,0x9a,0x13,0xf7,0xe8,0xe1,0xc7,0x28,0xc4,0x23,0x90,0x62,0x93,0xb4,0x9c,0xe6,0x28,0x34,0x54,0xdd,0x1c,0x7b,0x04,0x74,0x1d,0xf2,0xea,0xbe,0xdc,0x4d,0x6a,0xb1,0x39,0x7d,0xc9,0x5a,0x67,0x9d,0xf0,0x4d,0x2c,0x17,0xd6,0x6c,0x79,0xbb,0x76,0x01,},"\xa5\xcc\x20\x55\xeb\xa3\xcf\x6f\x0c\x63\x32\xc1\xf2\xab\x58\x54\x87\x09\x13\xb0\x3f\xf7\x09\x3b\xc9\x4f\x33\x5a\xdd\x44\x33\x22\x31\xd9\x86\x9f\x02\x7d\x82\xef\xd5\xf1\x22\x71\x44\xab\x56\xe3\x22\x2d\xc3\xdd\xcc\xf0\x62\xd9\xc1\xb0\xc1\x02\x4d\x9b\x41\x6d\xfa\x3e\xe8\xa7\x02\x79\x23\x00\x34\x65\xe0\xff\xae\xfb\x75\xb9\xf2\x9d\xc6\xbc\xf2\x13\xad\xc5\xe3\x18\xfd\x8b\xa9\x3a\x7a\xa5\xbf\xb4\x95\xde\x9d\x7c\x5e\x1a\x19\x6c\xd3\xa2\xd7\x72\x1f\x8b\xa7\x85\xaa\x90\x52\xa1\x81\x1c\x7f\xcc\x8f\x93\x93\x27\x65\x05\x9c\xab\x9c\x9b\x71\x89\x45\x89\x5e\xf2\x6f\x3a\xc0\x48\xd4\xca\xbf\x91\xa9\xe6\xaa\x83\xac\x14\xd4\x31\x56\x82\x78\x37\x91\x4e\xb7\x63\xa2\x3c\xba\x53\xf6\x0f\x15\x0f\x4b\x70\x20\x3e\xc1\x83\x3f\xf1\x05\x84\x94\x57\xa8\xda\x73\x27\x66\x1f\xb2\x3a\x55\x41\x64\xe0\x5f\xcf\x01\x46\xb1\x06\x74\x96\x4b\xe6\xf6\xaa\x0a\xcc\x94\xc4\x1a\xd5\x71\x80\xe5\x18\x0d\x19\x9b\xd9\x10\x2f\x55\xd7\x40\xe8\x17\x89\xb1\x56\x71\xbb\xd0\x67\x0e\x6d\xe5\xd9\x7e\x1a\xe6\x26\xd8\xa0\xeb\xc3\x2c\x8f\xd9\xd2\x47\x37\x27\x4e\x47\xd2\xdd\x59\x41\xa2\x72\xe7\x2a\x59\x89\x28\xad\x10\x9c\xde\x93\x7b\xf2\x48\xd5\x7f\x5d\x29\x42\x98\x3c\x51\xe2\xa8\x9f\x8f\x05\x4d\x5c\x48\xdf\xad\x8f\xcf\x1f\xfa\x97\xf7\xde\x6a\x3a\x43\xca\x15\xfc\x67\x20\xef\xae\xc6\x9f\x08\x36\xd8\x42\x23\xf9\x77\x6d\x11\x1e\xc2\xbb\xc6\x9b\x2d\xfd\x58\xbe\x8c\xa1\x2c\x07\x21\x64\xb7\x18\xcd\x7c\x24\x6d\x64"}, +{{0x4f,0xda,0xb7,0xc1,0x60,0x0e,0x70,0x11,0x4b,0x11,0xf5,0x33,0x24,0x23,0x76,0xaf,0x76,0x14,0xb4,0xd5,0xda,0x04,0x6a,0xc4,0xbe,0xde,0xa2,0x1d,0x8a,0x36,0x15,0x98,},{0xa2,0x5c,0x9a,0x94,0xd6,0xe4,0xec,0xd9,0x5a,0x4b,0xd6,0x80,0x5f,0x76,0x2e,0xb1,0xc4,0x57,0xa8,0xd4,0x5d,0x24,0x32,0x38,0xb1,0x83,0x9c,0xbb,0xa8,0xf4,0x41,0xcc,},{0x50,0x75,0xc0,0x90,0xcf,0xbe,0xb6,0xb0,0x18,0x02,0xaf,0x7f,0x4d,0xa5,0xaa,0x4f,0x43,0x4d,0x5e,0xe2,0xf3,0x53,0x0e,0xeb,0xb7,0x5c,0x85,0xe0,0x86,0x21,0xf8,0x3e,0xdc,0x08,0xaa,0x96,0x69,0x38,0x94,0xa4,0x27,0x76,0x33,0xba,0x81,0xe1,0x9e,0x9e,0x55,0xaf,0x5c,0x49,0x5d,0xaa,0x5e,0x1a,0x6f,0x8c,0xbb,0x79,0xc0,0x1c,0x72,0x07,},"\xda\x40\x58\x90\xd1\x1a\x87\x2c\x11\x9d\xab\x5e\xfc\xbf\xf6\x1e\x93\x1f\x38\xec\xcc\xa4\x57\xed\xc6\x26\xd3\xea\x29\xed\x4f\xe3\x15\x4f\xaf\xec\x14\x44\xda\x74\x34\x3c\x06\xad\x90\xac\x9d\x17\xb5\x11\xbc\xb7\x3b\xb4\x9d\x90\xba\xfb\x7c\x7e\xa8\x00\xbd\x58\x41\x1d\xf1\x27\x5c\x3c\xae\x71\xb7\x00\xa5\xda\xb4\x91\xa4\x26\x16\x78\x58\x79\x56\xaa\x4a\x21\x9e\x1a\xc6\xdd\x3f\xb2\xcb\x8c\x46\x19\x72\x18\xe7\x26\xdc\x7e\xd2\x34\x52\x6a\x6b\x01\xc0\xd7\x2c\xb9\x3a\xb3\xf4\xf3\x8a\x08\xe5\x94\x0b\x3f\x61\xa7\x2a\xd2\x78\x9a\x05\x32\x00\x0f\xac\x1d\x2d\x2e\x3a\xd6\x32\xac\x8b\x62\xbb\x3f\xf5\xb9\x9d\x53\x59\x7b\xf4\xd4\x4b\x19\x67\x49\x24\xdf\x9b\x3d\xb3\xd0\x25\x3f\x74\x62\x7c\xca\xb3\x00\x31\xc8\x5e\x29\x1c\x58\xb5\xfa\x91\x67\x52\x2a\x46\x74\x6f\xc3\x07\x03\x67\x45\xd4\xf9\x81\x77\x86\xe5\xd3\x00\xe6\xc5\xd5\x03\x12\x5f\xea\x01\xde\xc3\xe3\xfe\xdb\xf3\x86\x1c\xa2\x62\x7a\x05\x18\xfb\x2b\x24\xe5\xa7\xa0\x14\x17\x87\x19\xe9\xb3\x45\xf7\xb2\x49\xce\x3a\x41\x32\x80\xc8\xde\xb6\x74\xf5\x9a\x25\xbe\x92\xa8\xab\x64\x00\xc7\xc5\x2b\x07\x28\xae\x34\xe2\x2b\x2e\xc2\x00\xc1\xcb\xab\xa2\xcc\xd8\xaf\x29\x24\x9d\x17\xaf\x60\xc3\x60\x07\xa7\x22\xfc\x80\x25\x8a\x7b\xeb\xab\x1c\xda\xad\x74\x62\xa8\xb7\x58\x8c\x2f\x7e\x27\xc6\xd0\x7a\xfc\xf6\x01\x17\xfe\xd1\x1b\xd6\x85\x9e\x75\xe3\xb4\xfc\xee\x39\x81\x88\x1e\x95\xdd\x11\x68\x27\xdd\x4b\x36\x9a\xf0\x69\xd3\xc8\xf2\x67\x6f\x8a"}, +{{0x26,0x45,0x04,0x60,0x4e,0x70,0xd7,0x2d,0xc4,0x47,0x4d,0xbb,0x34,0x91,0x3e,0x9c,0x0f,0x80,0x6d,0xfe,0x18,0xc7,0x87,0x9a,0x41,0x76,0x2a,0x9e,0x43,0x90,0xec,0x61,},{0xeb,0x2b,0x51,0x8c,0xe7,0xdc,0x71,0xc9,0x1f,0x36,0x65,0x58,0x16,0x51,0xfd,0x03,0xaf,0x84,0xc4,0x6b,0xf1,0xfe,0xd2,0x43,0x32,0x22,0x35,0x3b,0xc7,0xec,0x51,0x1d,},{0xee,0xa4,0x39,0xa0,0x0f,0x7e,0x45,0x9b,0x40,0x2b,0x83,0x51,0x50,0xa7,0x79,0xee,0xd1,0x71,0xab,0x97,0x1b,0xd1,0xb5,0x8d,0xcc,0x7f,0x93,0x86,0xda,0xdd,0x58,0x3d,0xe8,0xdc,0x69,0xe2,0x67,0x12,0x1d,0xde,0x41,0xf0,0xf9,0x49,0x3d,0x45,0x0b,0x16,0x21,0x9c,0xdf,0x3c,0x22,0xf0,0x94,0x82,0xce,0x40,0x2f,0xe1,0x7c,0xa4,0x9e,0x08,},"\x90\x1d\x70\xe6\x7e\xd2\x42\xf2\xec\x1d\xda\x81\x3d\x4c\x05\x2c\xfb\x31\xfd\x00\xcf\xe5\x44\x6b\xf3\xb9\x3f\xdb\x95\x0f\x95\x2d\x94\xef\x9c\x99\xd1\xc2\x64\xa6\xb1\x3c\x35\x54\xa2\x64\xbe\xb9\x7e\xd2\x0e\x6b\x5d\x66\xad\x84\xdb\x5d\x8f\x1d\xe3\x5c\x49\x6f\x94\x7a\x23\x27\x09\x54\x05\x1f\x8e\x4d\xbe\x0d\x3e\xf9\xab\x30\x03\xdd\x47\xb8\x59\x35\x6c\xec\xb8\x1c\x50\xaf\xfa\x68\xc1\x5d\xad\xb5\xf8\x64\xd5\xe1\xbb\x4d\x3b\xad\xa6\xf3\xab\xa1\xc8\x3c\x43\x8d\x79\xa9\x4b\xfb\x50\xb4\x38\x79\xe9\xce\xf0\x8a\x2b\xfb\x22\xfa\xd9\x43\xdb\xf7\x68\x37\x79\x74\x6e\x31\xc4\x86\xf0\x1f\xd6\x44\x90\x50\x48\xb1\x12\xee\x25\x80\x42\x15\x3f\x46\xd1\xc7\x77\x2a\x06\x24\xbc\xd6\x94\x1e\x90\x62\xcf\xda\x75\xdc\x87\x12\x53\x3f\x40\x57\x33\x5c\x29\x80\x38\xcb\xca\x29\xeb\xdb\x56\x0a\x29\x5a\x88\x33\x96\x92\x80\x8e\xb3\x48\x1f\xd9\x73\x5e\xa4\x14\xf6\x20\xc1\x43\xb2\x13\x3f\x57\xbb\x64\xe4\x47\x78\xa8\xca\x70\x91\x82\x02\xd1\x57\x42\x61\x02\xe1\xdf\xc0\xa8\xf7\xb1\xae\x48\x7b\x74\xf0\x27\x92\x63\x31\x54\xdf\xe7\x4c\xaa\x1b\x70\x88\xfd\xa2\x2f\xa8\xb9\xbc\x35\x4c\x58\x5f\x15\x67\x70\x6e\x29\x55\x49\x38\x70\xf5\x41\x69\xe0\xd7\x69\x11\x59\xdf\x43\x89\x79\x61\xd2\x4a\x85\x2e\xa9\x70\xc5\x14\x94\x8f\x3b\x48\xf7\x1e\xe5\x86\xe7\x2e\xc7\x8d\xb8\x20\xf2\x53\xe0\x8d\xb8\x4f\x6f\x31\x2c\x43\x33\xbd\x0b\x73\x2f\xe7\x58\x83\x50\x77\x83\xe9\xa1\xfd\x4f\xba\xb8\xe5\x87\x0f\x9b\xf7\xad\x58\xaa"}, +{{0x2c,0xa7,0x44,0x7a,0x36,0x68,0xb7,0x48,0xb1,0xfd,0x3d,0x52,0xd2,0x08,0x0d,0x30,0xe3,0x4d,0x39,0x7b,0xb2,0x84,0x6c,0xaf,0x8f,0x65,0x9a,0xc1,0x68,0x78,0x8c,0xa5,},{0xab,0x33,0x1c,0xd4,0x0a,0x31,0xd0,0x17,0x3c,0x0c,0x8c,0x1c,0x17,0x00,0x25,0x32,0x80,0x7b,0xf8,0x9e,0x3e,0xdb,0x6d,0x34,0xc2,0xdd,0x82,0x94,0x63,0x2b,0x9f,0xbc,},{0xf9,0x3a,0xda,0x15,0xae,0x9c,0xd2,0xb5,0x4f,0x26,0xf8,0x6f,0x0c,0x28,0x39,0x2a,0xed,0x5e,0xb6,0xb6,0xb4,0x4d,0x01,0xa4,0xe3,0x3a,0x54,0xe7,0xda,0x37,0xc3,0x8e,0x8d,0x53,0x36,0x6f,0x73,0xfd,0x85,0xbe,0x64,0x2e,0x4e,0xc8,0x12,0x36,0xd1,0x63,0xf0,0xd0,0x25,0xe7,0x6c,0x8b,0xbd,0xd6,0x5d,0x43,0xdf,0x49,0xf0,0x9c,0x1f,0x01,},"\xa8\x2b\xcd\x94\x24\xbf\xfd\xa0\xf2\xf5\xe9\xea\xe1\x78\x35\xdb\xe4\x68\xf6\x1b\x78\x5a\xab\x82\x93\x47\x37\xa9\x1c\x5f\x60\x2c\xb7\xc6\x17\xcd\xff\xe8\x7c\xad\x72\x6a\x49\x72\xe1\x5a\x7b\x8e\xe1\x47\xf0\x62\xd2\xa5\xa4\xd8\x97\x06\xb5\x71\xfa\x8a\xa2\xb9\x59\x81\xc7\x8a\xbe\xaa\xae\x86\x20\x3f\xa2\xc0\xe0\x72\x97\x40\x6e\xa8\xc2\x71\x11\xa8\x6d\xbe\x1d\x5a\x7c\x3b\x7a\xe9\x30\x90\x4d\x98\x90\xf6\xd4\xab\xeb\xd1\x41\x2a\x73\xad\x5f\xee\xa6\x4a\xcf\x06\x5d\x3e\x63\xb5\xcb\xe2\x0c\xf2\x0b\xbd\x2d\x8b\x94\xf9\x05\x3e\xd5\xf6\x66\x33\x48\x25\x30\x12\x44\x46\x60\x59\x18\xde\x66\x45\x5e\x8c\xf4\xb1\x01\xa1\x27\x23\x3c\x4e\x27\xd5\xd5\x5b\xf9\x5b\xd3\x19\x5d\x03\x40\xd4\x35\x31\xfc\x75\xfa\xf8\xdd\xed\x52\x75\xbf\x89\x75\x0d\xe8\x38\xfd\x10\xc3\x17\x45\xbe\x4c\xa4\x1f\xa8\x71\xcb\x0f\x9b\x01\x67\x06\xa1\xa7\xe3\xc4\x4b\xb9\x0a\xc7\xa8\xad\x51\xe2\x72\x38\x92\x92\xfd\x6c\x98\xad\x7a\x06\x9e\x76\xe3\xf5\xf3\xe0\xcc\x77\x0b\x9e\x9b\x35\xa7\x65\xd0\xd9\x37\x12\xd7\xcd\xab\xd1\x7e\x5d\x01\xdd\x81\x83\xaf\x4a\xd9\x36\x5d\xb0\xa0\xfa\x41\x38\x1f\xce\x60\xa0\x81\xdf\x1c\x5a\xb0\xf8\xc1\x8f\x95\xa7\xa8\xb5\x82\xdf\xff\x7f\x14\x9e\xa5\x79\xdf\x06\x23\xb3\x3b\x75\x08\xf0\xc6\x63\xf0\x1e\x3a\x2d\xcd\x9d\xfb\xee\x51\xcc\x61\x52\x20\xfd\xaf\xfd\xab\x51\xbd\xae\x42\xcb\x9f\x7f\xa9\xe3\xb7\xc6\x9c\xc8\xad\xa5\xcc\xd6\x42\x52\x9b\xa5\x14\xfd\xc5\x4f\xcf\x27\x20\xb8\xf5\xd0\x8b\x95"}, +{{0x49,0x4e,0xa9,0xbc,0xce,0x26,0x88,0x5b,0x7d,0x17,0xd1,0xfc,0x11,0x44,0x48,0xf2,0x39,0xf0,0xce,0x46,0xe5,0xf2,0x47,0xb4,0xc9,0x99,0xfa,0x86,0x29,0x69,0x24,0x72,},{0x69,0x01,0xe5,0xef,0xae,0x57,0x53,0x6b,0xa5,0xfd,0xd9,0x6b,0x59,0x65,0x73,0x59,0x06,0x5f,0x25,0xd3,0x91,0xa1,0xaa,0x8c,0xdc,0x0d,0x38,0xbb,0x5d,0x53,0xc1,0x39,},{0x54,0x8a,0x09,0x3a,0x68,0x03,0x61,0xb7,0xdc,0x56,0xf1,0x45,0x03,0xb5,0x5e,0xee,0xc3,0xb3,0xf4,0xfd,0x4c,0xa9,0x9d,0x6a,0xed,0xce,0x08,0x30,0xf7,0xf4,0xae,0x2f,0x73,0x28,0x53,0x9b,0x34,0xc4,0x8f,0xc9,0x76,0x09,0x22,0x33,0x3d,0xae,0x9c,0x7c,0x01,0x7e,0x7d,0xb7,0x3b,0x8f,0xaa,0x6c,0x06,0xbe,0x05,0xe3,0x47,0x99,0x2b,0x06,},"\x3b\xad\xbf\xa5\xf5\xa8\xaa\x2c\xce\x0a\x60\xe6\x86\xcd\xce\x65\x4d\x24\x45\x2f\x98\xfd\x54\x87\x2e\x73\x95\xb3\x94\x64\x38\x0a\x0e\x18\x55\x57\xea\x13\x4d\x09\x57\x30\x86\x4f\x42\x54\xd3\xdd\x94\x69\x70\xc1\x0c\x80\x4f\xcc\x08\x99\xdf\xa0\x24\x20\x5b\xe0\xf8\x0b\x1c\x75\x44\x95\x23\x32\x4f\xe6\xa0\x75\x1e\x47\xb4\xff\x48\x22\xb8\xc3\x3e\x9e\xaf\x1d\x1d\x96\xe0\xde\x3d\x4a\xcd\x89\x69\x6b\x7f\xcc\x03\xd4\x9f\x92\xf8\x2b\x97\x25\x70\x0b\x35\x0d\xb1\xa8\x76\x15\x36\x95\x45\x56\x1b\x85\x99\xf5\xea\x92\x0a\x31\x0a\x8b\xaf\xc0\xe8\xd7\x46\x8c\xbf\x6f\x38\x20\xe9\x43\x59\x4a\xfd\xd5\x16\x6e\x4e\x33\x09\xdd\xdd\x76\x94\xef\x67\xe6\x94\xf3\x4f\xc6\x27\x24\xff\x96\xac\x33\x64\x17\x6f\x34\xe8\xa0\x2b\x4c\xf5\x69\xdb\x5b\x8f\x77\xd5\x85\x12\xae\xda\xbf\x0b\xcd\x1c\x2d\xf1\x2d\xb3\xa9\x47\x3f\x94\x8c\x5c\x32\x43\x30\x9a\xae\x46\xc4\x9e\xfd\x08\x8b\x60\xf3\x1a\x8a\x72\xad\x7e\x5a\x35\xac\xc5\xd8\x9f\xa6\x68\x07\xeb\x5d\x3b\xa9\xcd\xf0\x8d\x47\x53\xcb\x85\x08\x9e\xe3\x6f\x5c\x96\xb4\x32\xb6\x92\x83\x52\xaf\xad\x58\x01\x22\x25\xd6\x15\x7f\x9e\x36\x11\x42\x6d\xf9\x21\xb6\xd1\xd8\x37\x46\x28\xa6\x30\x31\xe9\xff\xb9\x0e\x42\xff\xbb\xa0\x21\xf1\x74\xf6\x85\x03\x15\x54\x30\x15\x2c\x91\x55\xdc\x98\xff\xa2\x6c\x4f\xab\x06\x5e\x1f\x8e\x46\x22\xc2\xf2\x8a\x8c\xb0\x43\x11\x0b\x61\x74\x41\x14\x0f\x8e\x20\xad\xc1\x6f\x79\x9d\x1d\x50\x96\xb1\xf5\x05\x32\xbe\x50\x42\xd2\x1b\x81\xea\x46\xc7"}, +{{0x00,0xd7,0x35,0xeb,0xae,0xe7,0x5d,0xd5,0x79,0xa4,0x0d,0xfd,0x82,0x50,0x82,0x74,0xd0,0x1a,0x15,0x72,0xdf,0x99,0xb8,0x11,0xd5,0xb0,0x11,0x90,0xd8,0x21,0x92,0xe4,},{0xba,0x02,0x51,0x7c,0x0f,0xdd,0x3e,0x26,0x14,0xb3,0xf7,0xbf,0x99,0xed,0x9b,0x49,0x2b,0x80,0xed,0xf0,0x49,0x5d,0x23,0x0f,0x88,0x17,0x30,0xea,0x45,0xbc,0x17,0xc4,},{0xdc,0xdc,0x54,0x61,0x19,0x37,0xd2,0xbd,0x06,0xca,0xcd,0x98,0x18,0xb3,0xbe,0x15,0xce,0x74,0x25,0x42,0x7a,0x75,0xf5,0x0d,0x19,0x7a,0x33,0x7a,0x3b,0x8b,0xa6,0x71,0x4e,0xf4,0x88,0x66,0xf2,0x43,0xbd,0x5a,0xc7,0x41,0x5e,0x91,0x45,0x17,0xa2,0xc1,0xc5,0xa9,0x53,0xf4,0x32,0xb9,0x9d,0xb0,0xe6,0x20,0xd6,0x4f,0x74,0xeb,0x85,0x05,},"\x59\xc0\xb6\x9a\xf9\x5d\x07\x4c\x88\xfd\xc8\xf0\x63\xbf\xdc\x31\xb5\xf4\xa9\xbc\x9c\xec\xdf\xfa\x81\x28\xe0\x1e\x7c\x19\x37\xdd\xe5\xeb\x05\x70\xb5\x1b\x7b\x5d\x0a\x67\xa3\x55\x5b\x4c\xdc\xe2\xbc\xa7\xa3\x1a\x4f\xe8\xe1\xd0\x3a\xb3\x2b\x40\x35\xe6\xda\xdb\xf1\x53\x20\x59\xee\x01\xd3\xd9\xa7\x63\x3a\x0e\x70\x6a\x11\x54\xca\xb2\x2a\x07\xcd\x74\xc0\x6a\x3c\xb6\x01\x24\x4c\xf3\xcf\x35\xa3\x5c\x31\x00\xba\x47\xf3\x13\x72\xa2\xda\x65\xdc\xff\x0d\x7a\x80\xa1\x05\x5d\x8a\xa9\x92\x12\xe8\x99\xaa\xd7\xf0\x2e\x94\x9e\x6f\xee\x4d\x3c\x9c\xef\xa8\x50\x69\xea\xff\x1f\x6a\xd0\x6f\xc3\x00\xc8\x71\xab\x82\xb2\xbe\xdb\x93\x4d\x20\x87\x5c\x2a\x26\x32\x42\xcd\xb7\xf9\xbe\x19\x2a\x87\x10\xb2\x4c\x7e\xa9\x8d\x43\xda\xec\x8b\xaa\x55\x53\xc6\x78\xa3\x8f\x0e\x0a\xdf\x7d\x3f\xf2\xdc\xc7\x99\xa1\xdb\xad\x6e\xab\x1c\x3d\x94\x58\xa9\xdb\x92\x2f\x02\xe7\x5c\xfa\xb9\xd6\x5c\x73\x36\xda\xe7\x18\x95\xd5\xbb\x15\xca\xc2\x03\xf2\xb3\x8b\x99\x96\xc4\x10\xf8\x65\x5a\xd2\x2d\x3c\x09\x1c\x20\xb7\xf9\x26\xd4\x5e\x78\x01\x28\xf1\x97\x47\x46\x2a\xbc\x5c\x58\x93\x2f\xbb\x9e\x0b\xc6\x2d\x53\x86\x88\x02\xf1\xb0\x83\xf1\x83\xb8\xa1\xf9\x43\x49\x86\xd5\xcf\x97\xc0\x4e\x2f\x3e\x14\x57\x30\xcb\xa9\x87\x79\xc7\xfe\xd0\xca\xb1\xc0\x5d\x5e\x46\x53\xc6\xc3\xf6\x73\x62\x60\xbc\x78\xee\x43\x72\x86\x2f\xfe\x9e\x90\x37\x1d\x76\x2c\x74\x32\x78\x1f\x35\xce\xd8\x84\xa4\xba\xca\x05\x65\x3e\xf2\x5f\x25\xa6\xf3\xd5\x62\x83\x08"}, +{{0x8c,0x34,0xb9,0x05,0x44,0x0b,0x61,0x91,0x1d,0x1d,0x81,0x37,0xc5,0x3d,0x46,0xa1,0xa7,0x6d,0x46,0x09,0xaf,0x97,0x3e,0x18,0xeb,0x4c,0x57,0x09,0x29,0x56,0x27,0xbb,},{0xb6,0x9a,0x8b,0x2f,0xdf,0x5c,0x20,0xe7,0x34,0xc2,0xff,0xb2,0x94,0xbc,0x8a,0xe1,0x01,0x1d,0x66,0x4f,0x11,0xaf,0xe7,0xfb,0xc4,0x71,0x92,0x5c,0xf7,0x2f,0xa9,0x9d,},{0x3e,0x0b,0x72,0x07,0x3d,0xc9,0x37,0x5e,0xed,0xcc,0xa6,0xc4,0xfc,0x1c,0xd3,0x15,0x93,0x8a,0x05,0x0c,0x92,0x71,0x6b,0xd2,0x28,0x4f,0x46,0x29,0xa9,0x62,0xbe,0xec,0x0b,0x7d,0x7c,0xf1,0x6a,0xb9,0x23,0xd5,0x8f,0x5b,0x90,0xd3,0x90,0x1a,0x8e,0x5c,0x75,0xc8,0xf1,0x7d,0xab,0x99,0x98,0xe0,0x07,0xd8,0xc4,0x95,0x11,0x97,0x3d,0x0e,},"\x30\xb5\x7a\x38\x9b\x48\xa0\xbe\xb1\xa4\x84\x32\xbf\xf6\xb3\x14\xbd\xed\x79\xc4\xa1\x76\x3a\x5a\xcb\x57\xce\xa1\xbf\xb4\xc6\xd0\x16\xcf\x09\x0f\x5b\xd0\x5b\xbd\x11\x4e\x33\xae\x7c\x17\x78\x2d\xfa\x26\x4f\x46\xc4\x5f\x8c\x59\x9c\x60\x30\x16\xfe\x9f\xf0\x5b\x6b\x5a\x99\xe9\x2f\xe7\x13\xa4\xcd\x5c\x41\xb2\x92\xed\x2b\xb2\xe9\xcf\x33\xa4\x40\x54\x2e\x82\x1e\xc8\x2c\xbf\x66\x5c\x3f\x02\xe3\xdc\x33\x7d\x7f\xdb\x58\xe3\x1b\x27\xcb\x29\x54\x54\x14\x68\x81\x46\x98\x51\x0d\xf1\x8c\x85\xc8\x1f\xad\x12\xdb\x11\xec\x6b\x96\x6f\x49\x30\xda\x56\x46\xb9\x91\xdb\x97\x44\x50\x97\xda\x30\xda\xb6\x1c\xda\x53\xa4\x10\x83\xcb\x96\xad\xd1\x9d\xe6\xc5\xee\xc3\x23\xbc\xa9\xd3\x53\x0e\x38\xc0\x0b\x35\xaf\x73\x60\x07\x76\x01\xbe\x6a\xc9\x7f\x30\x30\xf9\x30\xa2\x7b\x90\xfe\x8b\x69\x11\xba\xe3\x89\x06\x5a\xdc\x15\xe1\x88\x23\x00\xe2\xa0\x03\x27\x4d\x23\x18\x2d\x5e\xfd\x5b\xa4\xb9\x13\x0c\x07\xbd\x5c\x65\xfe\xcb\x8b\x5c\xb7\xeb\x38\x83\x6b\x31\x8b\xef\xdf\xd7\x7d\xe4\xd6\xca\x01\x81\xf7\x7a\xe5\x74\x08\x91\x68\x32\x25\xf5\x49\xdd\x84\x26\x14\x5c\x97\xc5\x81\x8c\x31\x9f\x7a\xb2\xd8\x68\xe1\xa4\x1c\xea\xb6\x4c\x08\x51\x16\x06\x98\x97\xbf\x2c\xa3\x66\x76\x52\x40\x61\x55\xed\x06\x46\x43\x1b\x6d\xe1\xcc\xc0\x3b\x42\x79\xae\x4d\x32\x66\x79\x26\x5d\xce\x82\x04\x8e\x72\x98\xe1\xf8\x7f\xce\xc0\x76\x8a\xc0\xf5\xd8\xff\x84\xf7\x21\x0b\xe5\x4d\x41\x1a\xf8\xed\xea\x72\x17\xf4\xe5\x94\x13\x12\x1e\x14\x8c\x60\xda"}, +{{0x77,0xa8,0x3e,0x18,0xc9,0xf0,0x00,0xee,0xff,0x7d,0xee,0xac,0x95,0x9e,0xcb,0xa2,0x20,0x6c,0x0a,0xa3,0x9d,0x2f,0x0e,0x2a,0xed,0x57,0x29,0x48,0x2a,0x7a,0x02,0x29,},{0x62,0xb1,0xb3,0x16,0x13,0x55,0x96,0xbf,0xbc,0xa6,0x03,0x7e,0xd8,0x47,0xc6,0x1f,0xb7,0xf0,0x9f,0xa3,0x6c,0xe9,0x0a,0xbb,0x77,0x89,0xb8,0x6f,0x76,0x8b,0x59,0xdd,},{0x1e,0xaa,0xd8,0x42,0x0a,0xc1,0x2c,0x99,0xac,0x1f,0xf4,0x47,0x66,0x78,0xe3,0xcb,0xbe,0x94,0xda,0x6a,0x79,0x7f,0x17,0x46,0x64,0xd5,0xee,0x0f,0x64,0x14,0x33,0xfb,0x1e,0x7c,0xb2,0xf5,0x61,0x3e,0x10,0x80,0x5d,0xf8,0x65,0x4c,0xd8,0xe0,0xd4,0x5d,0x96,0x23,0x09,0x32,0xbc,0x7f,0x20,0xb0,0x4e,0xae,0x83,0x64,0x35,0x13,0x43,0x09,},"\xf3\xd5\xfa\x2a\xca\xef\xd8\x58\xf1\xdf\x26\xe0\x30\x59\xcd\xcb\xc2\x46\x8a\xd7\x4a\xfc\x99\x3d\x0d\xb9\xc4\xcd\xe4\x11\x3f\x8d\x55\xc7\xda\x71\xd3\x8b\xa0\x65\x20\x53\x1c\x61\xfd\xdb\x5f\x33\xd5\xf0\x35\x3b\xe2\x37\x6e\x58\x07\x11\xbe\x45\xc0\xa3\x0b\x1f\xa0\x1b\x55\xe2\x28\xc6\xfa\x35\xe3\xf9\x5b\x67\x90\x9f\xc7\xdf\x3f\xd4\x64\xd9\x3d\x66\x1a\x92\x6f\x9d\x11\xf7\x55\x0c\x17\xfb\xcc\x34\x96\x52\x6e\x8f\x10\xe0\xc8\x91\x66\x77\xb2\xbe\x5b\x31\x9b\x68\x8f\x21\xe8\x1a\xaa\x94\x82\xe5\xc9\x3e\x64\xce\x8c\x43\x7b\x9c\x1e\x14\xfe\xfe\xd7\x0a\x3f\xee\x56\x88\x11\xdc\x31\xca\xda\xb3\xd5\xb2\x20\x25\x44\x65\x33\x6d\xc4\xd9\x7a\x3b\xd0\x96\xb5\xe0\x65\xe0\xcf\xbe\x82\x84\x9e\x2c\x19\x05\xac\xa4\x86\x53\x3f\x0d\xa7\xa6\x1f\x1e\x9a\x55\xb8\xe2\xa8\x32\x62\xde\xeb\x59\xf2\xb1\x3d\x3a\x8a\xef\x57\x00\x84\x5b\x83\xb2\x5a\xe2\x18\x3c\x0d\xda\xc0\xce\x42\xf8\xd2\x56\x74\xcb\x0d\x0d\x22\x0a\x6d\xe7\xc1\x85\x8b\xb0\x7d\x59\xa3\x37\x23\x44\xd9\x44\x60\x2a\xa4\x51\xd2\xb9\x37\xdb\x0f\xe6\xfe\xca\x0b\xeb\xa8\x17\x21\xfc\x36\x1e\xa7\x50\x9e\x2b\x6d\x39\x7e\x1c\x19\x1b\x56\xf5\x4a\xb4\x36\xd0\xd2\x7a\xb4\xc0\x61\xbd\x66\x1a\xd1\xa4\x45\x23\x87\xe8\x73\x57\x54\xd0\x7f\xa7\xef\x4d\x45\x48\xb1\x72\x58\x24\x25\xb2\x99\x04\x6e\x63\x01\xb5\xba\x6b\x91\x44\x18\xf1\x49\xcf\x72\x2e\x10\xbd\xe2\xe0\xd4\x17\x00\xf1\x2c\x84\x29\xfc\x89\x7b\x78\x19\xda\x92\x29\x22\x40\xcd\x45\x56\x54\x58\xc9\xa7\xb2\x9c\x12"}, +{{0x73,0xb0,0x33,0x73,0xef,0x1f,0xd8,0x49,0x00,0x5e,0xcd,0x62,0x70,0xdd,0x99,0x06,0xf1,0x9f,0x44,0x39,0xe4,0x03,0x76,0xcd,0xbc,0x52,0x09,0x02,0xbc,0x97,0x68,0x12,},{0x66,0x37,0x19,0xe0,0x8b,0xa3,0xba,0x16,0x66,0xf6,0x06,0x9a,0x3f,0x54,0x99,0x18,0x66,0xb1,0x8c,0xc6,0xbe,0x41,0x99,0x1b,0x02,0xeb,0x30,0x26,0xff,0x9e,0x15,0x5f,},{0xa4,0x0a,0xbe,0x98,0xfc,0x69,0xda,0x8a,0x1f,0xf9,0xff,0x5c,0x2c,0xca,0x93,0x63,0x2e,0x97,0x59,0x80,0xee,0x8b,0x82,0xc3,0xc3,0x76,0x02,0x2d,0x65,0x24,0xab,0x73,0x6d,0x01,0xb0,0x72,0xf2,0xb6,0x81,0xb5,0xf1,0xcd,0x3e,0xa0,0x67,0x01,0x2e,0xd6,0xd0,0x74,0xe9,0x49,0xc4,0x23,0x27,0xa3,0x66,0xca,0xa9,0xe4,0x75,0x0a,0x3c,0x08,},"\xd5\xc2\xde\xab\xa7\x95\xc3\x0a\xba\x32\x1b\xc7\xde\x69\x96\xf0\xd9\x0e\x4d\x05\xc7\x47\xfb\x4d\xae\x8f\x34\x51\x89\x5d\xef\x6e\x16\xe7\x2f\x38\xea\xce\x75\x6f\x36\x63\x5f\x8f\xb0\xb7\x2a\x3a\x0c\x1f\x54\x66\x38\x17\xa9\x4d\x4f\xd3\x46\xf8\x35\xab\x0e\x65\x7f\x00\x1a\x6f\x2c\xec\xb8\x6d\x08\x25\xbd\x02\x63\x92\x54\xf7\xf7\xf3\x8c\xa9\x9d\xbb\x86\xc6\x4a\x63\x3f\x73\xba\xf9\x33\xaa\xe3\x56\x32\x81\xf4\x00\x5e\x2d\x0e\x7c\xec\x9f\xbd\xe8\xe5\x88\xa9\x57\xe2\x11\x06\x8b\xe6\x5b\x3d\x3d\x35\xbf\x4e\x8d\x5b\xb3\x47\x83\x33\xdf\x9c\xed\x9b\x2a\xba\xf4\x86\x97\x99\x4a\x14\x5e\x93\x21\x49\x9f\xc5\xee\x56\x0f\x4f\xbb\x68\x49\xe1\xae\x8e\xb3\xd1\xde\x00\x83\xa2\x1a\x03\xf6\xa6\xb2\x81\x76\xf0\x13\x0d\x38\x95\xe5\x0e\x75\xe3\xd7\xd0\x94\x7a\x7b\xc2\xc5\xb9\xff\x69\x89\x5d\x27\x79\x14\x42\xba\x8d\x0f\x21\x80\x71\x2b\x56\x7f\x71\x2e\xa9\x12\xf3\xb0\xd9\x2c\x19\x34\x2e\x01\x06\xff\x1d\x87\xb4\x6a\xd3\x3a\xf3\x00\xb9\x08\x55\xba\x97\x69\xd3\x66\xe7\x94\x25\xd9\x8e\x4d\xe1\x99\x05\xa0\x45\x77\x70\x7c\xbe\x62\x5b\x84\x69\x17\x81\xcd\x26\xbf\x62\x26\x0b\x4a\x8b\xd6\x05\xf7\x7a\xf6\xf9\x70\xe1\xb3\xa1\x12\xe8\x91\x83\x44\xbd\x0d\x8d\x2e\x41\xdf\xd2\xce\x98\x95\xb0\x24\x6e\x50\x88\x7a\xa3\xa5\x77\xff\x73\xbe\x4b\x6a\xe6\x0f\xeb\x0c\xa3\x6f\x6a\x5f\x81\x71\xed\x20\x9e\x5c\x56\x65\x29\xc0\x94\x0d\x9b\x4b\xd7\x44\xcc\xee\x56\xe5\x4a\x9a\x0c\x6e\x4d\xa5\x20\xdd\x31\x5c\x28\x72\xb0\x2d\xb5\x63\x70\x3e"}, +{{0xea,0xb1,0x79,0xe4,0x1e,0xd5,0xc8,0x89,0xff,0xe6,0xaa,0xbd,0xc0,0x54,0xfa,0xf1,0x30,0x7c,0x39,0x5e,0x46,0xe3,0x13,0xe1,0x7a,0x14,0xfe,0x01,0x02,0x3f,0xfa,0x30,},{0x86,0xf3,0x47,0x46,0xd3,0xf7,0xa0,0x1d,0xdb,0xe3,0x22,0xf1,0xac,0xa5,0x6d,0x22,0x85,0x6d,0x38,0x73,0x3a,0x3a,0x69,0x00,0xbb,0x08,0xe7,0x76,0x45,0x0e,0xc8,0x03,},{0x14,0x3c,0xb2,0x80,0x27,0xc2,0xf8,0x2e,0x37,0x5e,0x5f,0x34,0x0e,0x7f,0xe6,0xe6,0x0c,0xe7,0xbd,0x51,0x00,0x0b,0x49,0xc7,0x41,0x68,0xaf,0x85,0xe2,0x6e,0xd2,0xed,0x63,0x0e,0xd2,0x67,0x20,0x90,0x16,0x4c,0xc5,0x4b,0x05,0x2d,0xa6,0x94,0xeb,0xdd,0x21,0xa2,0x1b,0x30,0x53,0xf4,0xdc,0xfd,0x78,0x95,0xea,0x5f,0x6c,0x8a,0xa8,0x0d,},"\x97\x10\x95\xce\xbe\x50\x31\x53\x02\x24\x38\x7c\x5c\x31\x96\x6e\x38\x9b\x85\x66\x39\x00\x54\xcf\x45\x26\x4b\x44\xe1\x89\x64\xb7\xbe\x52\xc3\x3c\x4f\xfb\x25\x9a\xf1\x62\x83\x43\x8f\xa1\x5d\xd6\x6b\xc7\x79\x1b\x75\x33\xef\x10\xcb\x0b\xea\xb5\x24\xa6\x43\x76\x26\xf4\xcc\x74\x51\x28\x51\xad\xcc\x2f\xb1\x29\x05\x5a\x48\x2c\x61\x10\x73\x83\xfb\x7c\x52\x41\x83\x1d\x55\x51\x63\x4e\xef\x0d\xc0\xb8\xf9\x05\x3a\x00\x97\x1a\xa8\xfa\x1a\xe0\x89\x8e\x4b\x48\x1b\x67\x07\xe9\x7c\x0f\x94\x20\x40\xb3\x39\xd9\x2f\xc1\x7b\xba\xde\x74\x67\x5a\xf2\x43\xd8\xb2\xda\xfb\x15\xb1\xdb\x55\xd1\x24\x15\xb8\x5f\x30\x37\x29\x19\x30\xab\x61\x60\x0b\xa3\x43\x1f\x8e\xb4\x25\xbe\x44\x91\x61\x47\x28\xaf\x10\x1e\x81\xc0\x91\xf3\x48\xbc\x5f\xfd\x1b\xde\x6a\xe6\xca\xd5\xc1\x5b\x3a\xa7\x35\x80\x78\xcc\x4e\xff\xb5\x4a\x86\xe7\xf0\xe0\xc5\x5e\x4c\xfe\x0a\x54\x60\x5e\xd4\x43\xfd\xf2\xaa\xba\x01\x65\x85\xda\x61\x7e\x77\x34\x1d\x52\x88\x9d\x75\xdd\x54\x0d\x39\xfe\x8b\x79\x93\xed\x70\x5c\xfd\xde\xa0\xcb\x0d\x5a\x73\x1d\x6b\xfc\xdb\x81\x6a\xfa\xff\x47\xe9\x63\xee\xde\xbd\xf2\x41\xaf\x55\x93\x35\x3d\x6d\x40\x1a\x34\xf0\x29\xa8\xcd\xeb\x19\x04\xcc\x2c\xaa\x4f\x96\x35\xcc\x2b\xa6\xb7\xb1\xa2\x9d\xa6\x25\xff\xc3\x83\xbe\x2f\x5a\x8f\x1f\xa4\xf3\x9b\x2d\x4b\x4f\x4c\x2d\x88\x38\xce\x25\x8a\x04\xd4\xa1\x20\x49\x3f\xdf\x07\xf6\x8c\x0f\xfd\x1c\x16\xb7\x68\xa3\x5c\x55\xfe\xa2\xca\xc6\x96\xb5\xc2\x0e\xfc\x10\x86\x5c\xde\x8a\x64\x62\x7d\xcd"}, +{{0xfb,0xf1,0x46,0xeb,0xd5,0x10,0x75,0x57,0x0e,0xc5,0x1a,0xc4,0x10,0xae,0x9f,0x39,0x1d,0xb7,0x5b,0x61,0x0a,0xda,0x63,0x62,0xb4,0xdb,0xd9,0x49,0x65,0x6c,0xfb,0x66,},{0xbe,0x7c,0x2f,0x5b,0x21,0xd7,0x46,0xc8,0xea,0x32,0x45,0xce,0x6f,0x26,0x8e,0x9d,0xa7,0x4e,0x00,0xfa,0x85,0xc9,0xc4,0x75,0x26,0x0c,0x68,0xfa,0x1a,0xf6,0x36,0x1f,},{0x67,0x68,0x00,0x6f,0xe0,0xf2,0x01,0xb2,0x17,0xdd,0x10,0xeb,0x05,0xd4,0xb8,0x2a,0xdc,0xfe,0xb2,0xec,0xfc,0x83,0x73,0xc3,0x30,0x8f,0x41,0x50,0x39,0x48,0x11,0xeb,0x60,0x49,0x18,0x81,0xa2,0xe5,0x3d,0x12,0x89,0xd9,0x64,0x78,0xe1,0x8a,0x64,0xc3,0x4b,0x2a,0x19,0x83,0x2c,0xdc,0xcf,0xd9,0x6a,0x2e,0x4a,0x0c,0x46,0x9f,0xdc,0x0b,},"\xcd\x7a\xd4\xf1\x7f\xcf\xf7\x3a\xcc\x40\x2d\xc1\x02\xd0\x90\x79\xb2\x9a\xaf\x2a\x0f\x4b\x27\xcf\x6b\xee\xb1\xe2\xb2\x3d\x19\xab\x47\xde\xb3\xae\x1b\xec\xd6\x88\x61\xea\x27\x9c\x46\x69\x17\x38\xf4\xff\xf4\x7c\x43\x04\x7c\x4f\x8b\x56\xb6\xbb\xcc\x3f\xde\x07\x23\xd4\x41\x20\xdc\xd3\x07\xa6\x31\x0d\xc4\xf3\x66\xb8\xf3\xcd\x52\xdb\x19\xb8\x26\x6a\x48\x7f\x78\x72\x39\x1c\x45\xfe\x0d\x32\x48\xa7\xab\xf2\xc2\x00\x22\xd3\x76\x95\x47\xf6\x83\x06\x7d\xcc\x36\x3c\xd2\x2f\xd7\xcd\xa3\xca\xdc\x15\x80\x40\x56\xf0\xe2\xaa\x2b\x79\x50\x08\xc5\x98\xbe\x7a\x96\x18\x05\xe6\xdf\x29\x1b\xa3\x04\x1c\x47\xff\x56\x40\x27\x5f\x46\xe6\xae\x82\x09\x2d\x21\xab\xcb\xcf\xba\x11\xe7\x30\x21\x60\x08\x82\x2d\xe3\xce\x46\x24\x00\x59\x6d\xa7\x9f\x7a\xe5\xd1\xdf\x83\x89\x11\x2a\xd9\x88\x68\xfa\x94\xfb\x05\x46\xbf\xe6\xa6\x7a\xa8\xd2\x8c\x4d\x32\x07\x2d\x2e\xad\xd6\x25\x62\x55\xf1\x8c\x23\x82\xe6\x62\xdf\xa9\x22\xa6\x80\xe0\x6a\x43\x62\x2c\x48\x71\xd2\x7d\x18\x07\xf7\xb2\x70\x30\x70\xc8\x3d\xb8\xdd\x92\x9c\x06\x03\x8b\x21\x83\xcb\x8e\x2b\x9e\xc4\xc7\x78\xd7\xec\xf9\xe9\xff\xac\x77\xfa\x77\x37\xb0\x55\xfe\xac\x2e\x79\x82\xae\xee\xc0\xb7\x2f\x1b\xbc\xa2\x42\x4e\x1a\x84\x4b\xba\xc7\x9c\xb2\xe7\x40\x0f\x81\xdc\x44\x9d\x05\x60\xb5\x21\xa7\xc1\x6b\xb4\x16\x7e\x66\x96\x58\x60\x58\xa9\xb8\xed\x2e\x51\x16\x69\x0b\x77\xf2\xa1\x7e\x5c\x0b\x16\xa8\x3d\xcb\xd2\xe2\x45\x52\x29\x3e\x25\x8b\x32\xba\x7f\x84\x49\x44\x37\x93\x42\x69\x86\x27"}, +{{0xdf,0xf0,0xeb,0x6b,0x42,0x6d,0xea,0x2f,0xd3,0x3c,0x1d,0x3f,0xc2,0x4d,0xf9,0xb3,0x1b,0x48,0x6f,0xac,0xb7,0xed,0xb8,0x50,0x29,0x54,0xa3,0xe8,0xda,0x99,0xd9,0xfd,},{0xc2,0x45,0x08,0x5e,0xce,0x69,0xfb,0x9a,0xa5,0x60,0xd0,0xc2,0x7f,0xdb,0x63,0x4f,0x7a,0x84,0x0d,0x41,0xd8,0x46,0x36,0x60,0xfb,0xe8,0x24,0x83,0xb0,0xf3,0xcc,0x3a,},{0x6b,0x48,0xb1,0x0f,0x54,0x5d,0xdb,0x7a,0x89,0xcd,0x58,0x29,0xf4,0xe5,0xb2,0x01,0x46,0xcf,0x6b,0xc9,0x6e,0x55,0x0d,0x06,0xf6,0x5d,0xe8,0xbd,0xae,0x7c,0xcd,0xde,0xd2,0x6c,0xd6,0x30,0xf8,0x6c,0x92,0x66,0xbc,0xcf,0x88,0xe9,0x24,0x03,0x3e,0x04,0xf8,0x3a,0x54,0xf8,0x29,0x0d,0x7f,0x73,0x4c,0xf8,0x67,0x3c,0xca,0x8f,0x97,0x03,},"\xe7\xc9\xe3\x13\xd8\x61\x60\xf4\xc7\x4a\xa0\xae\x07\x36\x9e\xe2\x2b\x27\xf8\x1b\x3f\x69\x09\x7a\xff\xae\x28\xda\xe4\x84\x83\xfb\x52\xa5\xc0\x62\x30\x6b\x59\x61\x0f\x5c\xdb\xff\x63\x32\xb1\x96\x0c\xd6\xf2\xb8\xf7\xb4\x15\x78\xc2\x0f\x0b\xc9\x63\x7a\x0f\xdf\xc7\x39\xd6\x1f\x69\x9a\x57\x3f\x1c\x1a\x0b\x49\x29\x45\x06\xcf\x44\x87\x96\x5e\x5b\xb0\x7b\xbf\x81\x80\x3c\xb3\xd5\xcb\x38\x29\xc6\x6c\x4b\xee\x7f\xc8\x00\xed\xe2\x16\x15\x09\x34\xd2\x77\xde\xa5\x0e\xdb\x09\x7b\x99\x2f\x11\xbb\x66\x9f\xdf\x14\x0b\xf6\xae\x9f\xec\x46\xc3\xea\x32\xf8\x88\xfd\xe9\xd1\x54\xea\x84\xf0\x1c\x51\x26\x5a\x7d\x3f\xef\x6e\xef\xc1\xcc\xdb\xff\xd1\xe2\xc8\x97\xf0\x55\x46\xa3\xb1\xca\x11\xd9\x51\x7c\xd6\x67\xc6\x60\xec\x39\x60\xf7\xa8\xe5\xe8\x02\x02\xa7\x8d\x3a\x38\x8b\x92\xf5\xc1\xde\xe1\x4a\xe6\xac\xf8\xe1\x7c\x84\x1c\x95\x57\xc3\x5a\x2e\xec\xed\x6e\x6a\xf6\x37\x21\x48\xe4\x83\xcc\xd0\x6c\x8f\xe3\x44\x92\x4e\x10\x19\xfb\x91\xcb\xf7\x94\x1b\x9a\x17\x6a\x07\x34\x15\x86\x72\x10\x67\x04\x10\xc5\xdb\xd0\xac\x4a\x50\xe6\xc0\xa5\x09\xdd\xfd\xc5\x55\xf6\x0d\x69\x6d\x41\xc7\x7d\xb8\xe6\xc8\x4d\x51\x81\xf8\x72\x75\x5e\x64\xa7\x21\xb0\x61\xfc\xd6\x8c\x46\x3d\xb4\xd3\x2c\x9e\x01\xea\x50\x12\x67\xde\x22\x87\x9d\x7f\xc1\x2c\x8c\xa0\x37\x9e\xdb\x45\xab\xaa\x6e\x64\xdd\xa2\xaf\x6d\x40\xcc\xf2\x4f\xbe\xba\xd7\xb5\xa8\xd3\xe5\x20\x07\x94\x5e\xcd\x3d\xdc\x1e\x3e\xfe\xb5\x22\x58\x1a\xc8\x0e\x98\xc8\x63\xba\x0c\x59\x0a\x3e\xd9\x5c\xd1"}, +{{0x9f,0x32,0x95,0x8c,0x76,0x79,0xb9,0x0f,0xd5,0x03,0x60,0x56,0xa7,0x5e,0xc2,0xeb,0x2f,0x56,0xec,0x1e,0xff,0xc7,0xc0,0x12,0x46,0x1d,0xc8,0x9a,0x3a,0x16,0x74,0x20,},{0x1d,0x72,0x69,0xdc,0xb6,0xd1,0xf5,0x84,0xe6,0x62,0xd4,0xce,0x25,0x1d,0xe0,0xab,0xa2,0x90,0xef,0x78,0xb9,0x7d,0x44,0x8a,0xfb,0x1e,0x53,0x33,0xf1,0x97,0x6d,0x26,},{0x98,0x81,0xa5,0x76,0x3b,0xdb,0x25,0x9a,0x3f,0xef,0xbb,0xa3,0xd9,0x57,0x16,0x2d,0x6c,0x70,0xb8,0x04,0xfa,0x94,0xab,0x61,0x34,0x06,0xa6,0xec,0x42,0x50,0x5b,0x87,0x89,0x46,0x5c,0xa1,0xa9,0xa3,0x3e,0x18,0x95,0x98,0x88,0x42,0x27,0x0c,0x55,0xe5,0xbd,0xd5,0x48,0x3f,0x6b,0x17,0xb3,0x17,0x81,0xb5,0x93,0x50,0x7a,0x6c,0x18,0x08,},"\xa5\x6b\xa8\x6c\x71\x36\x05\x04\x08\x7e\x74\x5c\x41\x62\x70\x92\xad\x6b\x49\xa7\x1e\x9d\xaa\x56\x40\xe1\x04\x4b\xf0\x4d\x4f\x07\x1a\xd7\x28\x77\x9e\x95\xd1\xe2\x46\x05\x84\xe6\xf0\x77\x35\x45\xda\x82\xd4\x81\x4c\x91\x89\xa1\x20\xf1\x2f\x3e\x38\x19\x81\x3e\x5b\x24\x0d\x0f\x26\x43\x6f\x70\xee\x35\x3b\x4d\x20\xce\xa5\x4a\x14\x60\xb5\xb8\xf1\x00\x8d\x6f\x95\xf3\xaa\x2d\x8f\x1e\x90\x8f\xce\xd5\x0d\x62\x4e\x3a\x09\x69\x38\xb9\x35\x38\x54\xb9\x6d\xa4\x63\xa2\x79\x8a\x5a\x31\x2e\xc7\x90\x84\x2c\x10\xc4\x46\xe3\x35\x0c\x76\x4b\xf5\xc9\x72\x59\x3b\x99\x87\xbf\x23\x25\x6d\xaa\x88\x94\xd4\x7f\x22\xe8\x5b\x97\x60\x7e\x66\xfc\x08\xa1\x2c\x78\x9c\x47\x46\x08\x03\x68\xd3\x21\xbb\x90\x15\xa1\x15\x5b\x65\x52\x3a\xd8\xe9\x9b\xb9\x89\xb4\x4e\xac\x75\x6b\x07\x34\xac\xd7\xc6\x35\x7c\x70\xb5\x97\x43\x24\x6d\x16\x52\xd9\x1b\x0f\x98\x96\x96\x51\x41\x34\x5b\x99\x45\xcf\x34\x98\x04\x52\xf3\x50\x29\x74\xed\xb7\x6b\x9c\x78\x5f\xb0\xf4\x39\x52\x66\xb0\x55\xf3\xb5\xdb\x8a\xab\x68\xe9\xd7\x10\x2a\x1c\xd9\xee\x3d\x14\x25\x04\xf0\xe8\x8b\x28\x2e\x60\x3a\x73\x8e\x05\x1d\x98\xde\x05\xd1\xfc\xc6\x5b\x5f\x7e\x99\xc4\x11\x1c\xc0\xae\xc4\x89\xab\xd0\xec\xad\x31\x1b\xfc\x13\xe7\xd1\x65\x3b\x9c\x31\xe8\x1c\x99\x80\x37\xf9\x59\xd5\xcd\x98\x08\x35\xaa\x0e\x0b\x09\xbc\xbe\xd6\x34\x39\x11\x51\xda\x02\xbc\x01\xa3\x6c\x9a\x58\x00\xaf\xb9\x84\x16\x3a\x7b\xb8\x15\xed\xbc\x02\x26\xed\xa0\x59\x5c\x72\x4c\xa9\xb3\xf8\xa7\x11\x78\xf0\xd2\x0a\x5a"}, +{{0xf8,0x6d,0x6f,0x76,0x6f,0x88,0xb0,0x07,0x17,0xb7,0xd6,0x32,0x7e,0xb2,0x6c,0xf3,0xce,0xeb,0xa5,0x38,0x51,0x84,0x42,0x6f,0x9c,0xfd,0x82,0x95,0xe2,0x42,0x1f,0xf2,},{0xcb,0x1d,0x25,0x05,0x04,0x75,0x41,0x83,0x70,0x4d,0xbe,0x21,0xc3,0x23,0xd6,0x6f,0x9f,0x90,0x11,0x75,0x8f,0x6d,0x8d,0xab,0x6f,0x59,0x7b,0x19,0x96,0x62,0x14,0x5b,},{0xec,0x61,0xc0,0xb2,0x92,0x20,0x3a,0x8f,0x1d,0x87,0x23,0x5e,0xde,0x92,0xb7,0x47,0x23,0xc8,0xd2,0x34,0x08,0x42,0x37,0x73,0xae,0x50,0xb1,0xe9,0xbc,0x44,0x64,0xe0,0x3e,0x44,0x6d,0xa9,0xdc,0xe4,0xc3,0x9f,0x6d,0xd1,0x59,0xbe,0xa2,0x6c,0x00,0x9e,0xd0,0x01,0x20,0xbc,0x36,0xd4,0xa2,0x47,0xdc,0x0d,0x24,0xbc,0xef,0xcc,0x11,0x0c,},"\xda\x84\x23\xa6\xb7\xa1\x8f\x20\xaa\x1f\x90\xed\x23\x31\xb1\x7b\x24\x06\x7c\x40\x17\x5b\xc2\x5d\x81\x09\xe2\x1d\x87\xac\x00\x52\x8e\xb3\xb2\xf6\x6a\x2b\x52\xdc\x7e\xf2\xf8\xce\xcb\x75\xc7\x60\x99\xcf\xa2\x3d\xb8\xda\x89\x70\x43\xba\x1c\xce\x31\xe2\xdf\xea\x46\x07\x5f\x5e\x07\x32\x03\xea\xeb\x3d\x62\xc8\x4c\x10\x7b\x6d\xab\x33\xa1\x4e\xaf\x14\x9a\xa6\x18\x50\xc1\x5f\x5a\x58\xd8\x8a\x15\xab\xa9\x19\x6f\x9e\x49\x5e\x8d\xbe\xcb\xcf\x7e\x84\x44\xf5\xdd\x72\xa0\x8a\x09\x9d\x7f\x62\x09\x99\x0b\x56\x29\x74\xea\x82\x9e\xf1\x1d\x29\xa9\x20\xe3\xa7\x99\xd0\xd9\x2c\xb5\x0d\x50\xf8\x17\x63\x1a\xb0\x9d\xe9\x7c\x31\xe9\xa0\x5f\x4d\x78\xd6\x49\xfc\xd9\x3a\x83\x75\x20\x78\xab\x3b\xb0\xe1\x6c\x56\x4d\x4f\xb0\x7c\xa9\x23\xc0\x37\x4b\xa5\xbf\x1e\xea\x7e\x73\x66\x8e\x13\x50\x31\xfe\xaf\xcb\xb4\x7c\xbc\x2a\xe3\x0e\xc1\x6a\x39\xb9\xc3\x37\xe0\xa6\x2e\xec\xdd\x80\xc0\xb7\xa0\x49\x24\xac\x39\x72\xda\x4f\xa9\x29\x9c\x14\xb5\xa5\x3d\x37\xb0\x8b\xf0\x22\x68\xb3\xba\xc9\xea\x93\x55\x09\x0e\xeb\x04\xad\x87\xbe\xe0\x59\x3b\xa4\xe4\x44\x3d\xda\x38\xa9\x7a\xfb\xf2\xdb\x99\x52\xdf\x63\xf1\x78\xf3\xb4\xc5\x2b\xcc\x13\x2b\xe8\xd9\xe2\x68\x81\x21\x3a\xbd\xeb\x7e\x1c\x44\xc4\x06\x15\x48\x90\x9f\x05\x20\xf0\xdd\x75\x20\xfc\x40\x8e\xa2\x8c\x2c\xeb\xc0\xf5\x30\x63\xa2\xd3\x05\x70\xe0\x53\x50\xe5\x2b\x39\x0d\xd9\xb6\x76\x62\x98\x48\x47\xbe\x9a\xd9\xb4\xcd\x50\xb0\x69\xff\xd2\x9d\xd9\xc6\x2e\xf1\x47\x01\xf8\xd0\x12\xa4\xa7\x0c\x84\x31\xcc"}, +{{0xa5,0xb3,0x4c,0xef,0xab,0x94,0x79,0xdf,0x83,0x89,0xd7,0xe6,0xf6,0xc1,0x46,0xaa,0x8a,0xff,0xb0,0xbe,0xc8,0x37,0xf7,0x8a,0xf6,0x46,0x24,0xa1,0x45,0xcc,0x34,0x4e,},{0x7b,0x0f,0x4f,0x24,0xd9,0x97,0x2b,0xc6,0xfe,0x83,0x82,0x6c,0x52,0x71,0x6a,0xd1,0xe0,0xd7,0xd1,0x9f,0x12,0x38,0x58,0xcb,0x3e,0x99,0xfa,0x63,0x6a,0xc9,0x63,0x1a,},{0x2f,0xbd,0x89,0x9d,0x72,0xb6,0xd3,0x9e,0x4f,0x45,0xb8,0xb6,0x2c,0xbb,0xd5,0xf3,0xc0,0xac,0xb1,0xad,0x85,0x40,0x91,0x3f,0xa5,0x85,0x87,0x7e,0x91,0xcc,0xfe,0xf7,0xbe,0xe5,0x0a,0x4b,0x0f,0x9f,0xed,0xf5,0xcc,0x1e,0x0d,0x19,0x53,0xad,0x39,0x9c,0x83,0x89,0xa9,0x33,0x91,0xe1,0xb7,0xc9,0x29,0xaf,0x6d,0x6f,0x3b,0x79,0x6c,0x08,},"\xe2\x1e\x98\xaf\x6c\x2b\xac\x70\x55\x7e\xb0\xe8\x64\xda\x2c\x2b\x4d\x6c\x0a\x39\xa0\x59\xd3\x47\x72\x51\xf6\x17\x8a\x39\x67\x6f\x47\x49\xe7\xfb\xea\x62\x3f\x14\x8a\x43\xa8\xb0\xfe\x06\x10\x50\x6f\xa6\x58\xab\xd2\xf5\xfa\x39\x19\x8f\x26\x36\xb7\x24\xdb\x22\xd1\xae\xbc\x2a\xb0\x7b\x2b\x6d\xbf\xfd\xee\x8c\xec\xe8\x1e\x1a\xf1\x49\x3e\xc1\x96\x4e\x16\xbf\x86\xab\x25\x8c\xa0\xfe\xb7\x7e\x3c\x87\x17\xe4\x40\x38\xab\xe1\x52\xc1\x4b\xe1\x56\x60\xbf\x93\xb2\xd4\x8d\x92\xc4\xed\x70\x74\xd2\x49\x42\x10\x62\x1b\xcf\x20\x4f\xba\x88\xc6\x54\xd5\xff\xe0\x1e\x1a\x53\xd0\x8f\x70\xbb\x23\x70\x89\xdc\x80\x72\x16\xff\x6a\x85\xdb\xec\x31\x02\x23\x7d\x42\x59\x07\x78\xac\xf6\xc1\xdc\x56\x6d\x5a\x2b\xb9\xa6\x3b\xc2\x1c\x32\x9c\x27\x2e\x59\x65\xba\xee\xb0\xfe\x89\x1d\xe3\xcc\x8c\xbf\xa8\xe5\x41\xa8\x88\x1d\xf6\x89\x42\xe7\xff\x8d\xc6\x56\xbd\x08\x57\x5f\x6a\xaf\x92\x4a\x17\x6d\x66\x3b\x1a\x1f\x43\x57\x4d\x11\x76\x8c\x70\x1b\x26\x95\x61\xe5\x54\x38\xdb\xeb\xfd\x44\x3d\x21\x15\xcb\x93\x3d\x1c\xde\x4a\x91\x5b\x54\xc3\x25\xc2\x7f\x49\x9e\xf0\x2b\xd0\x12\xff\x1f\x9a\x36\x39\x09\x22\x88\x76\x00\xfe\x71\x2b\xcd\xc2\x3e\xb5\x97\x4a\x30\x53\x72\xad\x52\x95\x1f\x83\xf0\xe5\x8c\xc4\x9e\x28\x98\x41\x62\x19\x17\xf1\xfc\xb0\x23\x51\x47\x24\x0d\xae\x4c\xf3\xb9\x9b\x6a\xc6\xd8\xde\x94\xef\xe7\xc4\x43\x67\x14\x50\x8b\xcd\x01\x14\xc5\x60\x68\xff\x1b\x7c\x16\xd5\x1b\xd9\x06\x43\x78\x74\xd6\x54\x9a\xb5\xd8\x08\x78\x96\x87\x2e\xc8\xa0\x9d\x74\x12"}, +{{0xad,0x75,0xc9,0xce,0x29,0x9c,0x4d,0x59,0x39,0x33,0x67,0xd7,0x7a,0x4c,0x9f,0x8d,0xf8,0xdc,0xec,0x76,0x5c,0x6d,0xbd,0x25,0xb5,0x27,0xfb,0x76,0x69,0x91,0x36,0x04,},{0xb9,0x91,0x05,0x48,0xfe,0x63,0x12,0xa1,0x19,0xc9,0x99,0x3e,0xeb,0xcf,0xb9,0xdc,0x90,0x03,0x0f,0xfb,0x0e,0x4d,0xe2,0xb7,0xcc,0xd2,0x3c,0xbe,0xb4,0xfe,0xf7,0x1b,},{0x6b,0x7e,0xf2,0x7b,0xcf,0xbf,0x2b,0x71,0x49,0x85,0x03,0x37,0x64,0xfc,0xcf,0xf5,0x55,0xe3,0xf5,0xbc,0x44,0x61,0x0d,0x6c,0x8c,0x62,0x11,0x7c,0xb3,0x83,0x1a,0x07,0xf4,0xa8,0xbd,0xdb,0x0e,0xae,0xd1,0xd4,0x6b,0x02,0x89,0xb1,0x5d,0xe1,0xaa,0x4d,0xcc,0x17,0xd7,0x1b,0xe9,0x6a,0x09,0xe6,0x6b,0xa4,0xdc,0x46,0x27,0xc7,0x87,0x05,},"\x62\xfc\x5a\xb6\x7d\xeb\x1f\xee\x9a\xb6\xcc\xa3\xb8\x8a\x1d\xf1\xe5\x89\xf0\xfd\x4a\x88\xf4\xaa\x77\x38\x94\x87\x61\xfe\x84\x37\x2c\x5b\x18\xe4\x65\x52\x20\xc1\xd8\x4d\x52\xac\xad\x32\xe2\x29\xa5\xc7\x56\xc2\x0f\xc6\x2f\xe4\xb4\xb4\xe5\xfd\x70\x77\xae\x4e\xd5\x39\x7a\xa7\x96\xf2\x30\x7c\xee\xdb\x65\x05\xb3\x92\x97\x85\x6f\x4a\xeb\x5e\x70\x93\x8e\x36\xee\x24\xa0\xac\x7d\x98\x68\x30\x6f\x6b\x53\x91\x06\x23\xb7\xdc\x89\xa6\x67\x2a\xd7\x38\x57\x6e\xd5\xd8\x88\x31\xdd\x33\x83\x21\xc8\x90\x2b\xc2\x06\x1f\x65\xe9\x4d\x45\x2f\xdf\xa0\xdc\x66\x5c\xef\xb9\x23\x08\xe5\x23\x01\xbd\x46\x27\x00\x6b\x36\x3d\x06\xb7\x75\xa3\x95\x91\x4d\x8c\x86\x3e\x95\xa0\x0d\x68\x93\xf3\x37\x61\x34\xc4\x29\xf5\x64\x78\x14\x5e\x44\x56\xf7\xa1\x2d\x65\xbb\x2b\x89\x65\xd7\x28\xcb\x2d\xdb\xb7\x08\xf7\x12\x5c\x23\x70\x95\xa9\x21\x95\xd9\x2f\xa7\x27\xa3\x72\xf3\x54\x5a\xe7\x01\xf3\x80\x8f\xee\x80\x2c\x89\x67\xa7\x6e\x8a\x94\x0e\x55\xfb\x2d\x81\x0b\xfb\x47\xad\xa1\x56\xf0\xed\xa1\x82\x9b\x15\x9c\xf0\x5c\x7f\x36\xcf\x38\x47\xd7\xb2\x1d\xe8\x4c\x3d\xc0\xfe\x65\x83\x47\xf7\x93\x96\xa0\x11\x39\xa5\x08\xb6\x00\x22\xdb\x1c\x0e\x5a\xee\xf4\x7e\x44\x5e\x66\xf7\x83\xe6\x2c\x96\x59\x7b\xdb\x16\xf2\x09\xc0\x8a\x91\x32\xc7\x57\x31\x36\x17\x0e\xe3\xeb\xf2\x42\x61\x26\x5a\x89\xfb\x4f\x10\x33\x33\x75\xe2\x0b\x33\xab\x74\x03\x46\x4f\x52\x49\x46\x1c\x68\x53\xc5\xfd\xdb\x9f\x58\xaf\x81\x68\x92\x91\x03\x93\xa7\x07\x7b\x79\x9f\xdc\x34\x89\x72\x09\x98\xfe\xea\x86"}, +{{0x1c,0xed,0x57,0x45,0x29,0xb9,0xb4,0x16,0x97,0x7e,0x92,0xeb,0x39,0x44,0x8a,0x87,0x17,0xca,0xc2,0x93,0x4a,0x24,0x3a,0x5c,0x44,0xfb,0x44,0xb7,0x3c,0xcc,0x16,0xda,},{0x85,0xe1,0x67,0xd5,0xf0,0x62,0xfe,0xe8,0x20,0x14,0xf3,0xc8,0xb1,0xbe,0xae,0xd8,0xee,0xfb,0x2c,0x22,0xd8,0x64,0x9c,0x42,0x4b,0x86,0xb2,0x1b,0x11,0xeb,0x8b,0xda,},{0xe0,0x30,0x3a,0xef,0xe0,0x8a,0x77,0x73,0x8d,0xcc,0x65,0x7a,0xfb,0xb9,0xb8,0x35,0xed,0x27,0x96,0x13,0xa5,0x3c,0x73,0xfd,0xc5,0xdd,0xbf,0xb3,0x50,0xe5,0xcf,0xf4,0xd6,0xc9,0xbb,0x43,0xdc,0x07,0xc9,0x5b,0xf4,0xe2,0x3b,0x64,0xc4,0x0f,0x88,0x04,0xc7,0x16,0x99,0x52,0xe3,0xc8,0xd5,0x9a,0x71,0x97,0x24,0x1b,0xfe,0xd0,0x74,0x0f,},"\x1b\x3b\x95\x3c\xce\x6d\x15\x30\x3c\x61\xca\x70\x76\x09\xf7\x0e\x72\x50\xf6\xc0\xde\xba\x56\xa8\xce\x52\x2b\x59\x86\x68\x96\x51\xcd\xb8\x48\xb8\x42\xb2\x22\x96\x61\xb8\xee\xab\xfb\x85\x70\x74\x9e\xd6\xc2\xb1\x0a\x8f\xbf\x51\x50\x53\xb5\xea\x7d\x7a\x92\x28\x34\x9e\x46\x46\xf9\x50\x5e\x19\x80\x29\xfe\xc9\xce\x0f\x38\xe4\xe0\xca\x73\x62\x58\x42\xd6\x4c\xaf\x8c\xed\x07\x0a\x6e\x29\xc7\x43\x58\x6a\xa3\xdb\x6d\x82\x99\x3a\xc7\x1f\xd3\x8b\x78\x31\x62\xd8\xfe\x04\xff\xd0\xfa\x5c\xbc\x38\x1d\x0e\x21\x9c\x91\x93\x7d\xf6\xc9\x73\x91\x2f\xc0\x2f\xda\x53\x77\x31\x24\x68\x27\x4c\x4b\xee\x6d\xca\x7f\x79\xc8\xb5\x44\x86\x1e\xd5\xba\xbc\xf5\xc5\x0e\x14\x73\x49\x1b\xe0\x17\x08\xac\x7c\x9f\xf5\x8f\x1e\x40\xf8\x55\x49\x7c\xe9\xd7\xcc\x47\xb9\x41\x0f\x2e\xdd\x00\xf6\x49\x67\x40\x24\x3b\x8d\x03\xb2\xf5\xfa\x74\x2b\x9c\x63\x08\x67\xf7\x7a\xc4\x2f\x2b\x62\xc1\x4e\x5e\xbd\xdc\x7b\x64\x7a\x05\xff\xf4\x36\x70\x74\x5f\x28\x51\xef\xf4\x90\x9f\x5d\x27\xd5\x7a\xe8\x7f\x61\xe9\x65\xee\x60\xfd\xf9\x77\x24\xc5\x92\x67\xf2\x61\x0b\x7a\xd5\xde\x91\x98\x56\xd6\x4d\x7c\x21\x26\x59\xce\x86\x56\x14\x9b\x6a\x6d\x29\xd8\xf9\x2b\x31\x2b\xe5\x0b\x6e\x2a\x43\x1d\x36\xae\x02\x2b\x00\xa6\xfe\x36\x0e\x3a\xf6\x54\x32\x89\x9c\x43\xbe\x04\x27\xe3\x6d\x21\xcf\xec\x81\xf2\x1a\xa5\x3b\x33\xdb\x5e\xd2\xc3\x7d\xa8\xf9\x6a\xc3\xe7\xdc\x67\xa1\xde\x37\x54\x6c\xf7\xde\x10\x08\xc7\xe1\xad\xbe\x0f\x34\xfa\x7e\xb2\x43\x4d\x94\xe6\xa1\x3f\x4c\xf8\x6a\x98\xd4\x97\x62\x2f"}, +{{0xf0,0x79,0x0d,0x93,0xe2,0xd3,0xb8,0x4f,0x61,0xef,0x4c,0x80,0x71,0x47,0xab,0xa4,0x10,0xe4,0x15,0xe7,0x2b,0x71,0xb0,0xd6,0x1d,0x01,0x02,0x6f,0xed,0x99,0xda,0x3d,},{0xef,0xdf,0x64,0x9f,0xb0,0x33,0xcf,0x32,0x8e,0x0b,0x28,0x77,0x96,0xf8,0xa2,0x5e,0x9c,0x6e,0x2e,0x87,0x1b,0x33,0xc2,0xc2,0x1a,0x40,0x28,0xa8,0xa2,0x5a,0x4b,0x28,},{0x08,0x77,0x3a,0x6a,0x78,0x76,0x2c,0xbb,0x1e,0x25,0xfc,0xbb,0x29,0x13,0x99,0x41,0xbd,0xf1,0x6f,0x4e,0x09,0xa1,0xfa,0x08,0xfc,0x70,0x1f,0x32,0xf9,0x33,0xed,0xd7,0x4c,0x0a,0xe9,0x83,0xc1,0x2a,0x0a,0x5b,0x02,0x0b,0x6b,0xcf,0x44,0xbb,0x71,0x9d,0xde,0x8e,0xd0,0x78,0x1a,0x82,0x98,0x26,0x56,0x40,0xe1,0x60,0x8c,0x98,0xb3,0x01,},"\x79\x73\xe9\xf3\x2d\x74\x80\x59\x92\xeb\x65\xda\x0d\x63\x73\x35\xe5\x0e\xff\x0c\xe6\x8e\xa2\xd1\xf3\xa0\x2d\xe7\x04\x49\x2b\x9c\xfb\xe7\xe7\xba\x96\xfd\xb4\x2b\xb8\x21\xa5\x13\xd7\x3f\xc6\x04\x02\xe9\x2c\x85\x5d\xea\xed\x73\xff\xea\xf7\x09\x52\x02\x90\x62\xc8\x33\xe1\x4e\xc1\xb1\x4f\x14\x4e\x22\x07\xf6\xa0\xe7\x27\xe5\xa7\xe3\xcb\xab\x27\xd5\x97\x29\x70\xf6\x95\x18\xa1\x5b\x09\x3e\x74\x0c\xc0\xce\x11\xbf\x52\x48\xf0\x82\x6b\x8a\x98\xbd\xe8\xbf\x2c\x70\x82\xc9\x7a\xff\x15\x8d\x08\x37\x11\x18\xc8\x90\x21\xcc\x39\x74\xae\x8f\x76\xd8\x66\x73\xc3\xf8\x24\xb6\x2c\x79\xc4\xb4\x1f\x40\xea\xa8\x94\x37\x38\xf0\x33\x00\xf6\x8c\xbe\x17\x54\x68\xeb\x23\x5a\x9f\xf0\xe6\x53\x7f\x87\x14\xe9\x7e\x8f\x08\xca\x44\x4e\x41\x19\x10\x63\xb5\xfa\xbd\x15\x6e\x85\xdc\xf6\x66\x06\xb8\x1d\xad\x4a\x95\x06\x55\x84\xb3\xe0\x65\x8c\x20\xa7\x06\xea\xf4\xa0\x77\x7d\xa4\xd2\xe0\xcd\x2a\x0f\xca\x60\x10\x9c\x2b\x44\x03\xdb\x3f\x03\xcd\x47\x81\xc1\xfb\xb0\x27\x22\x02\xbc\xb1\x16\x87\x80\x8c\x50\xcb\x98\xf6\x4b\x7f\x3f\xd3\xd4\x33\x33\xbb\x5a\x06\x1b\x9e\x37\x70\x90\xab\xb1\xe0\xa8\x85\xcb\x26\xb7\x3c\x16\x3e\x63\xff\x64\x51\xff\x2f\x4e\xc8\x24\x9c\x7e\x15\x2b\xd0\x39\x73\xa1\xe9\x64\xe2\xb5\xb2\x35\x28\x1a\x93\x83\x99\xa1\x12\xa2\x45\x29\xe3\x83\xa5\x60\xdc\x50\xbb\x1b\x62\x2a\xd7\x4e\xf3\x56\x58\xdc\xb1\x0f\xfe\x02\x25\x68\xac\x3f\xfa\xe5\xb4\x65\xa8\xed\x76\x43\xe8\x56\x1b\x35\x2e\xe9\x94\x4a\x35\xd8\x82\xc7\x12\xb1\x87\x78\x8a\x0a\xba\xe5\xa2\x2f"}, +{{0x4c,0xb9,0xdf,0x7c,0xe6,0xfa,0xe9,0xd6,0x2b,0xa0,0x9e,0x8e,0xb7,0x0e,0x4c,0x96,0x9b,0xde,0xaf,0xcb,0x5e,0xc7,0xd7,0x02,0x43,0x26,0xe6,0x60,0x3b,0x06,0x21,0xbf,},{0x01,0x80,0x69,0xdd,0x0e,0xb4,0x40,0x55,0xa3,0x5c,0xd8,0xc7,0x7c,0x37,0xca,0x9f,0xb1,0xad,0x24,0x17,0x27,0x13,0x85,0xe1,0x34,0xb2,0xf4,0xe8,0x1f,0x52,0x03,0x3c,},{0xe3,0x3c,0x07,0x83,0x6c,0x53,0x7d,0x6b,0xfb,0xd0,0xf4,0x59,0x2d,0x6e,0x35,0xb1,0x63,0x49,0x9b,0xa7,0x8d,0xc7,0xff,0xce,0xc5,0x65,0xd0,0x4f,0x9a,0x7d,0xb7,0x81,0x94,0x3e,0x29,0xe6,0xce,0x76,0x76,0x3e,0x9b,0xad,0xdf,0x57,0x43,0x7f,0xd9,0xc6,0xb0,0x32,0x39,0xa6,0xe6,0x85,0x0e,0x45,0x02,0xa3,0x56,0xc2,0xe1,0x2c,0x37,0x05,},"\x14\x62\x7d\x6e\xa0\xe7\x89\x54\x60\x75\x94\x76\xdc\x74\xc4\x28\x00\xce\xef\x99\x43\x27\x51\x81\x51\x49\x0d\x9d\xf2\x30\x67\x91\x4e\x44\x78\x8a\x12\x76\x8c\xcb\x25\x47\x1b\x9c\x3b\xa9\xd1\x4f\xb4\x36\xdc\xba\x38\x42\x9b\x3a\x04\x56\x87\x77\x63\xc4\x91\x75\xd0\xe0\x82\x68\x3e\x07\xa9\x05\x8f\x36\x85\xc6\x27\x93\x07\xb2\x30\x3d\x12\x21\xb9\xc2\x97\x93\xd8\xa4\x87\x7f\x6d\xf5\x15\x87\x38\x4d\xad\xf7\x51\xc5\xf7\xbf\xbd\x20\x7d\x51\x96\x22\xc3\x7b\x51\xce\xee\xe2\xc2\x0d\x82\x69\xf8\xcb\x88\xd3\xfe\x43\xd6\xd4\x34\xd5\xbb\xd0\xe2\x03\xc1\x53\x2d\x97\xba\x55\x21\x47\x22\x74\x96\xc8\x7f\x67\xb5\x0b\xb7\x61\x93\xad\xd0\x14\x4d\xf1\xc1\x76\x65\x75\x85\x40\x83\x62\xca\x2e\xd0\x4a\xd6\x2a\xcf\x1c\x25\xe3\x41\xdf\xd1\x49\x8d\x85\xb4\xb1\x34\x9a\x8b\x0b\x9b\x02\xc4\x35\x23\xc5\x58\x53\x41\x9b\xfe\xd3\x7d\x5a\x2c\xdf\x17\xdf\xbf\x1a\x3b\xd7\x75\x9d\x6a\xe1\x80\xf9\xd2\x7d\xcd\x9a\x89\x33\xe2\x9a\x7c\x0a\x30\x77\x1e\xea\x7c\x2e\x0f\xa2\x42\x92\x5d\x23\x36\xdc\xe5\x85\x62\x90\x57\xd8\x44\x32\x39\x64\xf6\xd3\xd1\x1f\xf0\xb3\xf8\x29\xa3\xbe\x8c\x9f\x04\x68\xa6\x82\x3d\x8e\x70\xab\x5a\x2d\xa2\x1e\x15\xfa\x8b\x04\x1a\x29\x81\x22\x22\xe9\xc3\x0b\x2b\xd9\xa1\x2d\x1f\xde\xe6\xf8\x78\x76\xe8\xce\x81\x00\x96\x37\xa8\xbb\x22\x36\x12\x9a\x47\xca\x74\x28\x9e\xe4\xaa\xd4\x29\xff\xe2\x9f\x47\x43\x02\x41\xca\x8c\xc3\x84\x8b\x72\x00\xfd\x6e\x14\x70\x65\x1a\x9a\x0a\x6f\x72\xc9\x03\x3e\x83\x1d\xf0\x51\x40\x8a\x62\x60\xf6\x5c\xba\xf6\xe0\x12\xb1\x8e"}, +{{0xa1,0x36,0xe0,0x09,0xd5,0x3e,0x5e,0xf5,0x9d,0x09,0x46,0xbc,0x17,0x56,0x63,0xa8,0x6b,0xc0,0xfc,0xd2,0x9e,0xad,0xd9,0x5c,0xfc,0x9d,0x26,0x60,0x37,0xb1,0xe4,0xfb,},{0x9c,0x18,0x06,0xec,0x04,0x54,0xf5,0x83,0x14,0xeb,0x83,0x97,0xd6,0x42,0x87,0xde,0xe3,0x86,0x64,0x0d,0x84,0x91,0xab,0xa3,0x64,0x60,0x76,0x88,0x84,0x17,0x15,0xa0,},{0xbc,0x09,0x4b,0xa9,0x1c,0x11,0x5d,0xee,0x15,0xd7,0x53,0x36,0x1a,0x75,0xf3,0xf0,0x3d,0x6a,0xf4,0x5c,0x92,0x15,0x7e,0x95,0xdb,0xe8,0xd3,0x21,0x94,0xb6,0xc5,0xce,0x72,0xb9,0xdc,0x66,0xf7,0x3d,0xf1,0x2d,0xca,0x0b,0x63,0x9f,0x3e,0x79,0x1d,0x47,0x86,0x16,0xa1,0xf8,0xd7,0x35,0x9a,0x42,0xc8,0xea,0xe0,0xdd,0xa1,0x6b,0x16,0x06,},"\xa4\x9d\x1c\x3d\x49\xe1\x3c\x2e\xda\x56\x86\x8a\x88\x24\xaa\x9f\x8d\x2b\xf7\x2f\x21\x95\x5e\xba\xfd\x07\xb3\xbd\xc8\xe9\x24\xde\x20\x93\x6c\xee\x51\x3d\x8a\x64\xa4\x71\x73\xa3\xbd\x65\x9e\xff\x1a\xcc\xff\x82\x44\xb2\x6a\xae\x1a\x0c\x27\xfa\x89\x1b\xf4\xd8\x5e\x8f\xb1\xb7\x6a\x6c\xab\x1e\x7f\x74\xc8\x9e\xe0\x7b\xb4\x0d\x71\x43\x26\xf0\x9b\x3f\xd4\x06\x32\xfa\xd2\x08\xea\x81\x6f\x90\x72\x02\x8c\x14\xb5\xb5\x4e\xcc\x1c\x5b\x7f\xc8\x09\xe7\xe0\x78\x6e\x2f\x11\x49\x5e\x76\x01\x7e\xb6\x2a\xa4\x56\x3f\x3d\x00\xee\x84\x34\x8d\x98\x38\xcd\x17\x64\x9f\x69\x29\xa6\xd2\x06\xf6\x0e\x6f\xc8\x2e\x0c\x34\x64\xb2\x7e\x0e\x6a\xbd\x22\xf4\x46\x9b\xdf\xd4\xcb\x54\xf7\x7e\x32\x9b\x80\xf7\x1b\xf4\x21\x29\xec\x13\xc9\xdf\xe1\x92\xad\xfa\xa4\x2e\xe3\xdd\xee\xda\x38\x58\x16\xfb\xad\x5f\x41\x19\x38\xc6\x3b\x56\x0f\x4e\xcd\x94\x53\x4b\xe7\xd9\x87\x25\xcd\x94\xc9\x9c\xe4\x92\xf0\xf0\x69\xba\x0e\xc0\x8f\x87\x7a\x78\x12\xef\x27\xae\x19\xd7\xa7\x7b\xe6\x3f\x66\xbc\xf8\xd6\xcf\x3a\x1a\x61\xfc\x9c\xfe\xf1\x04\xc7\x46\x2a\x21\xca\x7f\x03\xaf\xb5\xbb\x1a\xc8\xc7\x51\x24\xb5\x54\xe8\xd0\x44\xb8\x10\xd9\x5f\xf8\xc9\xdd\x09\xa3\x44\x84\xd8\xc4\xb6\xc9\x5f\x95\xc3\xc2\x28\x23\xf5\x2c\xe8\x44\x29\x37\x24\xd5\x25\x91\x91\xf1\xba\x09\x29\xe2\xac\xdb\xb8\xb9\xa7\xa8\xad\xf0\xc5\x2e\x78\xac\xdf\xdf\x05\x7b\x09\x85\x88\x1a\xfb\xed\x4d\xbe\xbd\xeb\xbd\xae\x0a\x2b\x63\xbd\x4e\x90\xf9\x6a\xfd\xcb\xbd\x78\xf5\x06\x30\x9f\x9b\xdb\x65\x00\x13\xcb\x73\xfa\xed\x73\x90\x4e"}, +{{0xff,0x0f,0x1c,0x57,0xdd,0x88,0x4f,0xbe,0xea,0x6e,0x29,0x17,0x28,0x2b,0x79,0xba,0x67,0xf8,0xa6,0x85,0x12,0x67,0xb9,0xf4,0x63,0x6d,0xaf,0xda,0x33,0xbd,0x2b,0x5b,},{0xfe,0xf6,0x37,0x8a,0xd1,0x2a,0x7c,0x25,0x2f,0xa6,0xeb,0x74,0x2b,0x05,0x06,0x4b,0x41,0x53,0x0f,0xf0,0x19,0xdc,0x68,0x0a,0xb5,0x44,0xc0,0x27,0xea,0x28,0x36,0xe7,},{0xd5,0x00,0x84,0x86,0x72,0x6c,0xce,0x33,0x0a,0x29,0xdd,0x7e,0x4d,0x74,0x74,0xd7,0x35,0x79,0x82,0x01,0xaf,0xd1,0x20,0x6f,0xeb,0x86,0x9a,0x11,0x2e,0x5b,0x43,0x52,0x3c,0x06,0x97,0x67,0x61,0xbe,0x3c,0xf9,0xb2,0x71,0x63,0x78,0x27,0x3c,0x94,0xf9,0x35,0x72,0xa7,0xd2,0xb8,0x98,0x26,0x34,0xe0,0x75,0x5c,0x63,0x2b,0x44,0x90,0x08,},"\x52\x2a\x5e\x5e\xff\x5b\x5e\x98\xfa\xd6\x87\x8a\x9d\x72\xdf\x6e\xb3\x18\x62\x26\x10\xa1\xe1\xa4\x81\x83\xf5\x59\x0e\xce\xf5\xa6\xdf\x67\x1b\x28\xbe\x91\xc8\x8c\xdf\x7a\xe2\x88\x11\x47\xfe\x6c\x37\xc2\x8b\x43\xf6\x4c\xf9\x81\xc4\x55\xc5\x9e\x76\x5c\xe9\x4e\x1b\x64\x91\x63\x1d\xea\xee\xf6\xd1\xda\x9e\xbc\xa8\x86\x43\xc7\x7f\x83\xea\xe2\xcf\xdd\x2d\x97\xf6\x04\xfe\x45\x08\x1d\x1b\xe5\xc4\xae\x2d\x87\x59\x96\xb8\xb6\xfe\xcd\x70\x7d\x3f\xa2\x19\xa9\x3b\xa0\x48\x8e\x55\x24\x7b\x40\x5e\x33\x0c\xfb\x97\xd3\x1a\x13\x61\xc9\xb2\x08\x4b\xdb\x13\xfb\x0c\x05\x89\x25\xdb\x8c\x3c\x64\x9c\x9a\x3e\x93\x7b\x53\x3c\xc6\x31\x0f\xa3\xb1\x61\x26\xfb\x3c\xc9\xbb\x2b\x35\xc5\xc8\x30\x00\x15\x48\x8a\x30\xfa\xdc\xa3\xc8\x87\x1f\xa7\x0d\xfd\xc7\x05\x5b\xf8\xe6\x31\xf2\x0c\x9b\x25\x28\x31\x1e\x32\x4a\x7c\x4e\xdd\x54\x62\x07\x9f\x34\x41\xc9\xec\xf5\x5f\xa9\x99\xe7\x31\x37\x23\x44\xfd\xc0\xd4\x13\xe4\x17\xaa\xa0\x01\xa1\xb2\xd3\xd9\xbc\x00\x0f\xec\x1b\x02\xbd\x7a\x88\xa8\x12\xd9\xd8\xa6\x6f\x94\x64\x76\x4c\x07\x0c\x93\x04\x1e\xef\xb1\x7c\xe7\x4e\xff\x6d\x4a\xff\x75\xf0\xcb\xf6\xa7\x89\xa9\xec\xde\x74\xab\xe3\x31\x30\xfc\xa0\xda\x85\x3a\xa7\xc3\x31\x3a\xda\x3f\x0a\xe2\xf5\x95\xc6\x79\x6a\x93\x68\x5e\x72\x9d\xd1\x8a\x66\x9d\x63\x81\x82\x5a\xb3\xf3\x6a\x39\x1e\x75\x25\xb2\xa8\x07\xa5\x2f\xa5\xec\x2a\x03\x0a\x8c\xf3\xb7\x73\x37\xac\x41\xfc\xeb\x58\x0e\x84\x5e\xed\x65\x5a\x48\xb5\x47\x23\x8c\x2e\x81\x37\xc9\x2f\x8c\x27\xe5\x85\xca\xad\x31\x06\xee\xe3\x81\x4a"}, +{{0x0b,0xc6,0xaf,0x64,0xde,0x57,0x09,0xd3,0xdb,0xc2,0x8f,0x7e,0xf6,0xd3,0xfe,0x28,0xb6,0xde,0x52,0x9f,0x08,0xf5,0x85,0x7c,0xcb,0x91,0x06,0x95,0xde,0x45,0x4f,0x56,},{0xfb,0x49,0x1f,0xc9,0x00,0x23,0x7b,0xdc,0x7e,0x9a,0x11,0x9f,0x27,0x15,0x0c,0xd9,0x11,0x93,0x5c,0xd3,0x62,0x87,0x49,0xff,0x40,0xef,0x41,0xf3,0x95,0x5b,0xc8,0xac,},{0xdb,0xc7,0x13,0x4d,0x1c,0xd6,0xb0,0x81,0x3b,0x53,0x35,0x27,0x14,0xb6,0xdf,0x93,0x94,0x98,0xe9,0x1c,0xf3,0x7c,0x32,0x43,0x37,0xd9,0xc0,0x88,0xa1,0xb9,0x98,0x34,0x7d,0x26,0x18,0x5b,0x43,0x09,0x00,0x41,0x29,0x29,0xe4,0xf6,0x3e,0x91,0x03,0x79,0xfc,0x42,0xe3,0x55,0xa4,0xe9,0x8f,0x6f,0xee,0x27,0xda,0xfa,0xd1,0x95,0x72,0x06,},"\xac\x78\x86\xe4\xf4\x17\x2a\x22\xc9\x5e\x8e\xea\x37\x43\x7b\x37\x5d\x72\xac\xce\xdc\xee\x6c\xc6\xe8\x16\x76\x33\x01\xa2\xd8\xef\x4d\x6f\x31\xa2\xc1\xd6\x35\x81\x8b\x70\x26\xa3\x95\xce\x0d\xaf\xd7\x1c\x51\x80\x89\x3a\xf7\x6b\x7e\xa0\x56\xc9\x72\xd6\x80\xec\xa0\x1d\xcb\xdb\xae\x6b\x26\xf1\xc5\xf3\x3f\xc9\x88\xb8\x24\xfb\xbe\x00\xca\xcc\x31\x64\x69\xa3\xba\xe0\x7a\xa7\xc8\x88\x5a\xf7\xf6\x5f\x42\xe7\x5c\xef\x94\xdb\xb9\xaa\xb4\x82\x51\x43\xc8\x50\x70\xe7\x71\x6b\x76\x12\xf6\x4e\xf0\xb0\x16\x60\x11\xd2\x3e\xb5\x65\x4a\xa0\x98\xb0\x2d\x8d\x71\xe5\x7c\x8f\xa1\x7b\xff\x2f\xe9\x7d\xc8\x19\x31\x77\xea\xdc\x09\xfb\x19\x2d\x80\xaa\x92\xaf\xa9\x87\x20\xd4\x61\x48\x17\xff\x3c\x39\xd3\xac\xce\x18\x90\x6f\xa3\xde\x09\x61\x89\x31\xd0\xd7\xa6\x0c\x44\x29\xcb\xfa\x20\xcf\x16\x5c\x94\x79\x29\xac\x29\x3a\xe6\xc0\x6e\x7e\x8f\x25\xf1\x26\x42\x91\xe3\xe1\xc9\x8f\x5d\x93\xe6\xec\xc2\x38\x9b\xc6\x0d\xbb\xf4\xa6\x21\xb1\x32\xc5\x52\xa9\x9c\x95\xd2\x6d\x8d\x1a\xf6\x11\x38\xb5\x70\xa0\xde\x4b\x49\x7e\xbe\x80\x51\xc7\x27\x3a\x98\xe6\xe7\x87\x6d\x0b\x32\x75\x03\xaf\x3c\xb2\xcc\x40\x91\xce\x19\x25\xcb\x2f\x29\x57\xf4\xec\x56\xee\x90\xf8\xa0\x9d\xd5\x7d\x6e\x83\x06\x7a\x35\x6a\x4c\xfe\x65\xb1\xb7\xa4\x46\x5d\xa2\xab\x13\x3b\x0e\xfb\x5e\x7d\x4d\xbb\x81\x1b\xcb\xbd\xe7\x12\xaf\xbf\x0f\x7d\xd3\xf3\x26\x22\x22\x84\xb8\xc7\x4e\xac\x7a\xd6\x25\x7f\xa8\xc6\x32\xb7\xda\x25\x59\xa6\x26\x6e\x91\xe0\xef\x90\xdb\xb0\xaa\x96\x8f\x75\x37\x6b\x69\x3f\xca\xa5\xda\x34\x22\x21"}, +{{0x2f,0x5e,0x83,0xbd,0x5b,0x41,0x2e,0x71,0xae,0x3e,0x90,0x84,0xcd,0x36,0x9e,0xfc,0xc7,0x9b,0xf6,0x03,0x7c,0x4b,0x17,0x4d,0xfd,0x6a,0x11,0xfb,0x0f,0x5d,0xa2,0x18,},{0xa2,0x2a,0x6d,0xa2,0x9a,0x5e,0xf6,0x24,0x0c,0x49,0xd8,0x89,0x6e,0x3a,0x0f,0x1a,0x42,0x81,0xa2,0x66,0xc7,0x7d,0x38,0x3e,0xe6,0xf9,0xd2,0x5f,0xfa,0xcb,0xb8,0x72,},{0x9f,0x80,0x92,0x2b,0xc8,0xdb,0x32,0xd0,0xcc,0x43,0xf9,0x93,0x6a,0xff,0xeb,0xe7,0xb2,0xbc,0x35,0xa5,0xd8,0x22,0x77,0xcd,0x18,0x7b,0x5d,0x50,0xdc,0x7f,0xc4,0xc4,0x83,0x2f,0xff,0xa3,0x4e,0x95,0x43,0x80,0x6b,0x48,0x5c,0x04,0x54,0x8e,0x7c,0x75,0x42,0x94,0x25,0xe1,0x4d,0x55,0xd9,0x1f,0xc1,0x05,0x2e,0xfd,0x86,0x67,0x43,0x0b,},"\xb7\x66\x27\x3f\x06\x0e\xf3\xb2\xae\x33\x40\x45\x4a\x39\x1b\x42\x6b\xc2\xe9\x72\x64\xf8\x67\x45\x53\xeb\x00\xdd\x6e\xcf\xdd\x59\xb6\x11\xd8\xd6\x62\x92\x9f\xec\x71\x0d\x0e\x46\x20\x20\xe1\x2c\xdb\xf9\xc1\xec\x88\x58\xe8\x56\x71\xac\xf8\xb7\xb1\x44\x24\xce\x92\x07\x9d\x7d\x80\x1e\x2a\xd9\xac\xac\x03\x6b\xc8\xd2\xdf\xaa\x72\xaa\x83\x9b\xff\x30\xc0\xaa\x7e\x41\x4a\x88\x2c\x00\xb6\x45\xff\x9d\x31\xbc\xf5\xa5\x43\x82\xde\xf4\xd0\x14\x2e\xfa\x4f\x06\xe8\x23\x25\x7f\xf1\x32\xee\x96\x8c\xdc\x67\x38\xc5\x3f\x53\xb8\x4c\x8d\xf7\x6e\x9f\x78\xdd\x50\x56\xcf\x3d\x4d\x5a\x80\xa8\xf8\x4e\x3e\xde\xc4\x85\x20\xf2\xcb\x45\x83\xe7\x08\x53\x93\x55\xef\x7a\xa8\x6f\xb5\xa0\xe8\x7a\x94\xdc\xf1\x4f\x30\xa2\xcc\xa5\x68\xf1\x39\xd9\xce\x59\xea\xf4\x59\xa5\xc5\x91\x6c\xc8\xf2\x0b\x26\xaa\xf6\xc7\xc0\x29\x37\x9a\xed\xb0\x5a\x07\xfe\x58\x5c\xca\xc6\x03\x07\xc1\xf5\x8c\xa9\xf8\x59\x15\x7d\x06\xd0\x6b\xaa\x39\x4a\xac\xe7\x9d\x51\xb8\xcb\x38\xcf\xa2\x59\x81\x41\xe2\x45\x62\x4e\x5a\xb9\xb9\xd6\x87\x31\x17\x33\x48\x90\x53\x15\xbf\x1a\x5a\xd6\x1d\x1e\x8a\xda\xeb\x81\x0e\x4e\x8a\x86\xd7\xc1\x35\x37\xb0\xbe\x86\x0a\xb2\xed\x35\xb7\x33\x99\xb8\x80\x8a\xa9\x1d\x75\x0f\x77\x94\x3f\x8a\x8b\x7e\x89\xfd\xb5\x07\x28\xaa\x3d\xbb\xd8\xa4\x1a\x6e\x00\x75\x6f\x43\x8c\x9b\x9e\x9d\x55\x87\x2d\xf5\xa9\x06\x8a\xdd\x8a\x97\x2b\x7e\x43\xed\xad\x9c\xed\x22\x37\xca\x13\x67\xbe\x4b\x7c\xdb\x66\xa5\x4e\xa1\x2e\xef\x12\x94\x71\x15\x86\x10\xea\xf2\x8f\x99\xf7\xf6\x86\x55\x7d\xcd\xf6\x44\xea"}, +{{0x72,0x2a,0x2d,0xa5,0x0e,0x42,0xc1,0x1a,0x61,0xc9,0xaf,0xac,0x7b,0xe1,0xa2,0xfe,0xd2,0x26,0x7d,0x65,0x0f,0x8f,0x7d,0x8e,0x5b,0xc7,0x06,0xb8,0x07,0xc1,0xb9,0x1d,},{0xfd,0x0b,0x96,0x45,0x62,0xf8,0x23,0x72,0x1e,0x64,0x9c,0x3f,0xed,0xb4,0x32,0xa7,0x6f,0x91,0xe0,0xae,0xad,0x7c,0x61,0xd3,0x5f,0x95,0xed,0x77,0x26,0xd7,0x85,0x89,},{0xc2,0x69,0x5a,0x57,0x17,0x2a,0xaa,0x31,0xbd,0x08,0x90,0xf2,0x31,0xca,0x8e,0xee,0xc0,0x28,0x7a,0x87,0x17,0x26,0x69,0xa8,0x99,0xad,0x08,0x91,0xce,0xa4,0xc4,0x75,0x79,0xb5,0x04,0x20,0xe7,0x91,0xcd,0xec,0x8c,0x18,0x2c,0x8a,0x0e,0x8d,0xde,0x21,0xb2,0x48,0x0b,0x0c,0xfd,0x81,0x11,0xe2,0x8e,0x56,0x03,0x34,0x7a,0x35,0x2d,0x04,},"\x17\x3e\x8b\xb8\x85\xe1\xf9\x08\x14\x04\xac\xac\x99\x90\x41\xd2\xec\xfc\xb7\x3f\x94\x5e\x0d\xb3\x6e\x63\x1d\x7c\xd1\xab\x99\x9e\xb7\x17\xf3\x4b\xf0\x78\x74\xbf\x3d\x34\xe2\x53\x0e\xb6\x08\x5f\x4a\x9f\x88\xae\x1b\x0f\x7d\x80\xf2\x21\x45\x6a\x8e\x9a\x88\x90\xb9\x1a\x50\x19\x2d\xea\xaa\xcc\x0a\x1a\x61\x5a\x87\x84\x1e\x2c\x5a\x9e\x05\x79\x57\xaf\x6e\x48\xe7\x8c\xc8\x61\x98\xe3\x2e\x7a\xa2\x4d\xcf\x6c\xff\xa3\x29\xbc\x72\x60\x6d\x65\xb1\x16\x82\xc8\xba\x73\x6c\xce\x22\xa0\x57\x85\xdf\x11\x46\x33\x1e\x41\x60\x9c\xf9\xca\x71\x1c\xf4\x64\x95\x82\x97\x13\x8b\x58\xa9\x07\x3f\x3b\xbf\x06\xad\x8a\x85\xd1\x35\xde\x66\x65\x21\x04\xd8\x8b\x49\xd2\x7a\xd4\x1e\x59\xbc\xc4\x4c\x7f\xab\x68\xf5\x3f\x05\x02\xe2\x93\xff\xca\xba\xaf\x75\x59\x27\xdf\xdf\xfb\xfd\xe3\xb3\x5c\x08\x0b\x5d\xe4\xc8\xb7\x85\xf4\xda\x64\xef\x35\x7b\xc0\xd1\x46\x6a\x6a\x96\x56\x0c\x3c\x4f\x3e\x3c\x0b\x56\x3a\x00\x3f\x5f\x95\xf2\x37\x17\x1b\xce\x1a\x00\x17\x71\xa0\x4e\xde\x7c\xdd\x9b\x8c\xa7\x70\xfd\x36\xef\x90\xe9\xfe\x00\x00\xa8\xd7\x68\x5f\xd1\x53\xcc\x72\x82\xde\x95\x92\x0a\x8f\x8f\x08\x98\xd0\x0b\xf0\xc6\xc9\x33\xfe\x5b\xb9\x65\x3f\xf1\x46\xc4\xe2\xac\xd1\xa2\xe0\xc2\x3c\x12\x44\x84\x4d\xac\xf8\x65\x27\x16\x30\x2c\x20\x32\xf9\xc1\x14\x67\x9e\xd2\x6b\x3e\xe3\xab\x4a\x7b\x18\xbc\x4e\x30\x71\xf0\x97\x7d\xb5\x7c\xd0\xac\x68\xc0\x72\x7a\x09\xb4\xf1\x25\xfb\x64\xaf\x28\x50\xb2\x6c\x8a\x48\x42\x63\x33\x4e\x2d\xa9\x02\xd7\x44\x73\x70\x44\xe7\x9a\xb1\xcf\x5b\x2f\x93\xa0\x22\xb6\x3d\x40\xcd"}, +{{0x5f,0xe9,0xc3,0x96,0x0e,0xd5,0xbd,0x37,0x4c,0xc9,0x4d,0x42,0x35,0x7e,0x6a,0x24,0xdc,0x7e,0x30,0x60,0x78,0x8f,0x72,0x63,0x65,0xde,0xfa,0xcf,0x13,0xcd,0x12,0xda,},{0x0c,0xe7,0xb1,0x55,0xc8,0xb2,0x0e,0xbd,0xaa,0xcd,0xc2,0xaa,0x23,0x62,0x7e,0x34,0xb1,0xf9,0xac,0xe9,0x80,0x65,0x0a,0x25,0x30,0xc7,0x60,0x7d,0x04,0x81,0x4e,0xb4,},{0x37,0x9f,0x9c,0x54,0xc4,0x13,0xaf,0x0d,0x19,0x2e,0x9b,0xc7,0x36,0xb2,0x9d,0xa9,0xd5,0x21,0xe7,0xba,0x78,0x41,0xd3,0x09,0xf9,0xbc,0xc1,0xe7,0x42,0xec,0x43,0x08,0xfe,0x9f,0x7b,0xa5,0x1e,0x0b,0x22,0xae,0xd4,0x87,0xcb,0x4a,0xa3,0x91,0x3b,0x9b,0xeb,0xfb,0x3a,0xac,0xd3,0x8f,0x40,0x39,0xf9,0xbb,0xbe,0xbe,0x1a,0xd8,0x00,0x02,},"\xc9\x49\x0d\x83\xd9\xc3\xa9\x37\x0f\x06\xc9\x1a\xf0\x01\x68\x5a\x02\xfe\x49\xb5\xca\x66\x77\x33\xff\xf1\x89\xee\xe8\x53\xec\x16\x67\xa6\xc1\xb6\xc7\x87\xe9\x24\x48\x12\xd2\xd5\x32\x86\x6a\xb7\x4d\xfc\x87\x0d\x6f\x14\x03\x3b\x6b\xcd\x39\x85\x2a\x39\x00\xf8\xf0\x8c\xd9\x5a\x74\xcb\x8c\xbe\x02\xb8\xb8\xb5\x1e\x99\x3a\x06\xad\xfe\xbd\x7f\xc9\x85\x4a\xe5\xd2\x9f\x4d\xf9\x64\x28\x71\xd0\xc5\xe4\x70\xd9\x03\xcf\xbc\xbd\x5a\xdb\x32\x75\x62\x8f\x28\xa8\x0b\xf8\xc0\xf0\x37\x66\x87\xda\xe6\x73\xbf\x7a\x85\x47\xe8\x0d\x4a\x98\x55\xae\x25\x72\xfc\x2b\x20\x5d\xc8\xa1\x98\x01\x6d\xdc\x9b\x50\x99\x5f\x5b\x39\xf3\x68\xf5\x40\x50\x4a\x55\x18\x03\xd6\xdd\x5f\x87\x48\x28\xe5\x54\x1d\xed\x05\x28\x94\xd9\xe2\xdc\x5e\x6a\xa3\x51\x08\x7e\x79\x0c\x0d\xd5\xd9\xc4\xde\xcb\x21\x7e\x4d\xb8\x1c\x98\xa1\x84\xb2\x64\xe6\xda\xea\xc0\xf1\x1e\x07\x4c\xae\x2b\xfc\x89\x9f\x54\xb4\x19\xc6\x5d\xcc\x22\x66\x4a\x91\x5f\xbf\xff\xac\x35\xce\xe0\xf2\x86\xeb\x7b\x14\x49\x33\xdb\x93\x3e\x16\xc4\xbc\xb6\x50\xd5\x37\x72\x24\x89\xde\x23\x63\x73\xfd\x8d\x65\xfc\x86\x11\x8b\x6d\xef\x37\xca\x46\x08\xbc\x6c\xe9\x27\xb6\x54\x36\xff\xda\x7f\x02\xbf\xbf\x88\xb0\x45\xae\x7d\x2c\x2b\x45\xa0\xb3\x0c\x8f\x2a\x04\xdf\x95\x32\x21\x08\x8c\x55\x5f\xe9\xa5\xdf\x26\x09\x82\xa3\xd6\x4d\xf1\x94\xee\x95\x2f\xa9\xa9\x8c\x31\xb9\x64\x93\xdb\x61\x80\xd1\x3d\x67\xc3\x67\x16\xf9\x5f\x8c\x0b\xd7\xa0\x39\xad\x99\x06\x67\xca\x34\xa8\x3a\xc1\xa1\x8c\x37\xdd\x7c\x77\x36\xaa\x6b\x9b\x6f\xc2\xb1\xac\x0c\xe1\x19\xef\x77"}, +{{0xec,0x2f,0xa5,0x41,0xac,0x14,0xb4,0x14,0x14,0x9c,0x38,0x25,0xea,0xa7,0x00,0x1b,0x79,0x5a,0xa1,0x95,0x7d,0x40,0x40,0xdd,0xa9,0x25,0x73,0x90,0x4a,0xfa,0x7e,0xe4,},{0x71,0xb3,0x63,0xb2,0x40,0x84,0x04,0xd7,0xbe,0xec,0xde,0xf1,0xe1,0xf5,0x11,0xbb,0x60,0x84,0x65,0x8b,0x53,0x2f,0x7e,0xa6,0x3d,0x4e,0x3f,0x5f,0x01,0xc6,0x1d,0x31,},{0x84,0xd1,0x8d,0x56,0xf9,0x64,0xe3,0x77,0x67,0x59,0xbb,0xa9,0x2c,0x51,0x0c,0x2b,0x6d,0x57,0x45,0x55,0xc3,0xcd,0xda,0xde,0x21,0x2d,0xa9,0x03,0x74,0x55,0x49,0x91,0xe7,0xd7,0x7e,0x27,0x8d,0x63,0xe3,0x46,0x93,0xe1,0x95,0x80,0x78,0xcc,0x36,0x85,0xf8,0xc4,0x1c,0x1f,0x53,0x42,0xe3,0x51,0x89,0x96,0x38,0xef,0x61,0x21,0x14,0x01,},"\x27\x49\xfc\x7c\x4a\x72\x9e\x0e\x0a\xd7\x1b\x5b\x74\xeb\x9f\x9c\x53\x4e\xbd\x02\xff\xc9\xdf\x43\x74\xd8\x13\xbd\xd1\xae\x4e\xb8\x7f\x13\x50\xd5\xfd\xc5\x63\x93\x45\x15\x77\x17\x63\xe6\xc3\x3b\x50\xe6\x4e\x0c\xd1\x14\x57\x30\x31\xd2\x18\x6b\x6e\xca\x4f\xc8\x02\xcd\xdc\x7c\xc5\x1d\x92\xa6\x13\x45\xa1\x7f\x6a\xc3\x8c\xc7\x4d\x84\x70\x7a\x51\x56\xbe\x92\x02\xde\xe3\x44\x46\x52\xe7\x9b\xae\x7f\x0d\x31\xbd\x17\x56\x79\x61\xf6\x5d\xd0\x1a\x8e\x4b\xee\x38\x33\x19\x38\xce\x4b\x2b\x55\x06\x91\xb9\x9a\x4b\xc3\xc0\x72\xd1\x86\xdf\x4b\x33\x44\xa5\xc8\xfb\xfb\xb9\xfd\x2f\x35\x5f\x61\x07\xe4\x10\xc3\xd0\xc7\x98\xb6\x8d\x3f\xb9\xc6\xf7\xab\x5f\xe2\x7e\x70\x87\x1e\x86\x76\x76\x98\xfe\x35\xb7\x7e\xad\x4e\x43\x5a\x94\x02\xcc\x9e\xd6\xa2\x65\x7b\x05\x9b\xe0\xa2\x10\x03\xc0\x48\xbb\xf5\xe0\xeb\xd9\x3c\xbb\x2e\x71\xe9\x23\xcf\x5c\x72\x8d\x17\x58\xcd\x81\x7a\xd7\x4b\x45\x4a\x88\x71\x26\xd6\x53\xb9\x5a\x7f\x25\xe5\x29\x3b\x76\x8c\x9f\xc5\xa9\xc3\x5a\x23\x72\xe3\x74\x1b\xc9\x0f\xd6\x63\x01\x42\x7b\x10\x82\x4b\xb4\xb1\xe9\x11\x0b\xfb\xa8\x4c\x21\xa4\x0e\xb8\xfe\xd4\x49\x7e\x91\xdc\x3f\xfd\x04\x38\xc5\x14\xc0\xa8\xcb\x4c\xac\x6a\xd0\x25\x6b\xf1\x1d\x5a\xa7\xa9\xc7\xc0\x0b\x66\x9b\x01\x5b\x0b\xf8\x14\x25\xa2\x14\x13\xe2\xff\xb6\xed\xc0\xbd\x78\xe3\x85\xc4\x4f\xd7\x45\x58\xe5\x11\xc2\xc2\x5f\xee\x1f\xec\x18\xd3\x99\x0b\x86\x90\x30\x0f\xa7\x11\xe9\x3d\x98\x54\x66\x8f\x01\x87\x06\x5e\x76\xe7\x11\x3a\xe7\x63\xc3\x0d\xdd\x86\x72\x0b\x55\x46\xa6\xc3\xc6\xf1\xc4\x3b\xc6\x7b\x14"}, +{{0x61,0x32,0x69,0x2a,0x5e,0xf2,0x7b,0xf4,0x76,0xb1,0xe9,0x91,0xe6,0xc4,0x31,0xa8,0xc7,0x64,0xf1,0xae,0xbd,0x47,0x02,0x82,0xdb,0x33,0x21,0xbb,0x7c,0xb0,0x9c,0x20,},{0x7a,0x2d,0x16,0x61,0x84,0xf9,0xe5,0xf7,0x3b,0xea,0x45,0x44,0x86,0xb0,0x41,0xce,0xb5,0xfc,0x23,0x14,0xa7,0xbd,0x59,0xcb,0x71,0x8e,0x79,0xf0,0xec,0x98,0x9d,0x84,},{0xeb,0x67,0x7f,0x33,0x47,0xe1,0xa1,0xea,0x92,0x9e,0xfd,0xf6,0x2b,0xf9,0x10,0x5a,0x6c,0x8f,0x49,0x93,0x03,0x3b,0x4f,0x6d,0x03,0xcb,0x0d,0xbf,0x9c,0x74,0x2b,0x27,0x07,0x04,0xe3,0x83,0xab,0x7c,0x06,0x76,0xbd,0xb1,0xad,0x0c,0xe9,0xb1,0x66,0x73,0x08,0x3c,0x96,0x02,0xec,0x10,0xae,0x1d,0xd9,0x8e,0x87,0x48,0xb3,0x36,0x44,0x0b,},"\xa9\xc0\x86\x16\x65\xd8\xc2\xde\x06\xf9\x30\x1d\xa7\x0a\xfb\x27\xb3\x02\x4b\x74\x4c\x6b\x38\xb2\x42\x59\x29\x4c\x97\xb1\xd1\xcb\x4f\x0d\xcf\x75\x75\xa8\xed\x45\x4e\x2f\x09\x80\xf5\x03\x13\xa7\x73\x63\x41\x51\x83\xfe\x96\x77\xa9\xeb\x1e\x06\xcb\x6d\x34\xa4\x67\xcb\x7b\x07\x58\xd6\xf5\x5c\x56\x4b\x5b\xa1\x56\x03\xe2\x02\xb1\x88\x56\xd8\x9e\x72\xa2\x3a\xb0\x7d\x88\x53\xff\x77\xda\x7a\xff\x1c\xae\xbd\x79\x59\xf2\xc7\x10\xef\x31\xf5\x07\x8a\x9f\x2c\xda\xe9\x26\x41\xa1\xcc\x5f\x74\xd0\xc1\x43\xec\x42\xaf\xba\xa5\xf3\x78\xa9\xe1\x0d\x5b\xf7\x45\x87\xfa\x5f\x49\xc1\x56\x23\x32\x47\xda\xfd\x39\x29\xac\xde\x88\x8d\xc6\x84\x33\x7e\x40\xcd\xc5\x93\x2e\x7e\xb7\x3f\xfc\xc9\x0b\x85\xc0\xad\x46\x04\x16\x69\x1a\xef\xbd\x7e\xfd\x07\xb6\x57\xc3\x50\x94\x6a\x0e\x36\x6b\x37\xa6\xc8\x08\x9a\xba\x5c\x5f\xe3\xbb\xca\x06\x4a\xfb\xe9\xd4\x7f\xbc\x83\x91\x4a\xf1\xcb\x43\xc2\xb2\xef\xa9\x8e\x0a\x43\xbe\x32\xba\x82\x32\x02\x00\x1d\xef\x36\x81\x72\x51\xb6\x5f\x9b\x05\x06\xce\xf6\x68\x36\x42\xa4\x6e\xd6\x12\xf8\xca\x81\xee\x97\xbb\x04\xd3\x17\xb5\x17\x34\x3a\xde\x2b\x77\x12\x6d\x1f\x02\xa8\x7b\x76\x04\xc8\x65\x3b\x67\x48\xcf\x54\x88\xfa\x6d\x43\xdf\x80\x9f\xaa\x19\xe6\x92\x92\xd3\x8c\x5d\x39\x7d\xd8\xe2\x0c\x7a\xf7\xc5\x33\x4e\xc9\x77\xf5\x01\x0a\x0f\x7c\xb5\xb8\x94\x79\xca\x06\xdb\x4d\x12\x62\x7f\x06\x7d\x6c\x42\x18\x6a\x6b\x1f\x87\x42\xf3\x6a\xe7\x09\xba\x72\x0e\x3c\xd8\x98\x11\x66\x66\xd8\x1b\x19\x0b\x9b\x9d\x2a\x72\x20\x2c\xb6\x90\xa0\x3f\x33\x10\x42\x9a\x71\xdc\x04\x8c\xde"}, +{{0xf2,0x19,0xb2,0x10,0x11,0x64,0xaa,0x97,0x23,0xbd,0xe3,0xa7,0x34,0x6f,0x68,0xa3,0x50,0x61,0xc0,0x1f,0x97,0x82,0x07,0x25,0x80,0xba,0x32,0xdf,0x90,0x3b,0xa8,0x91,},{0xf6,0x6b,0x92,0x0d,0x5a,0xa1,0xa6,0x08,0x54,0x95,0xa1,0x48,0x05,0x39,0xbe,0xba,0x01,0xff,0xe6,0x0e,0x6a,0x63,0x88,0xd1,0xb2,0xe8,0xed,0xa2,0x33,0x55,0x81,0x0e,},{0x17,0xf0,0x12,0x7c,0xa3,0xba,0xfa,0x5f,0x4e,0xe9,0x59,0xcd,0x60,0xf7,0x72,0xbe,0x87,0xa0,0x03,0x49,0x61,0x51,0x7e,0x39,0xa0,0xa1,0xd0,0xf4,0xb9,0xe2,0x6d,0xb1,0x33,0x6e,0x60,0xc8,0x2b,0x35,0x2c,0x4c,0xba,0xcd,0xbb,0xd1,0x17,0x71,0xc3,0x77,0x4f,0x8c,0xc5,0xa1,0xa7,0x95,0xd6,0xe4,0xf4,0xeb,0xd5,0x1d,0xef,0x36,0x77,0x0b,},"\x01\x55\x77\xd3\xe4\xa0\xec\x1a\xb2\x59\x30\x10\x63\x43\xff\x35\xab\x4f\x1e\x0a\x8a\x2d\x84\x4a\xad\xbb\x70\xe5\xfc\x53\x48\xcc\xb6\x79\xc2\x29\x5c\x51\xd7\x02\xaa\xae\x7f\x62\x73\xce\x70\x29\x7b\x26\xcb\x7a\x25\x3a\x3d\xb9\x43\x32\xe8\x6a\x15\xb4\xa6\x44\x91\x23\x27\x91\xf7\xa8\xb0\x82\xee\x28\x34\xaf\x30\x40\x0e\x80\x46\x47\xa5\x32\xe9\xc4\x54\xd2\xa0\xa7\x32\x01\x30\xab\x6d\x4d\x86\x00\x73\xa3\x46\x67\xac\x25\xb7\xe5\xe2\x74\x7b\xa9\xf5\xc9\x45\x94\xfb\x68\x37\x7a\xe2\x60\x36\x9c\x40\x71\x3b\x4e\x32\xf2\x31\x95\xbf\x91\xd3\xd7\xf1\xa2\x71\x9b\xf4\x08\xaa\xd8\xd8\xa3\x47\xb1\x12\xe8\x4b\x11\x88\x17\xcb\x06\x51\x33\x44\x02\x17\x63\x03\x52\x72\xa7\xdb\x72\x8a\x0c\xcd\xaa\x94\x9c\x61\x71\x5d\x07\x64\x14\x0b\x3e\x8c\x01\xd2\x0f\xf1\x59\x3c\x7f\x2d\x55\xc4\xe8\x2a\x1c\x0c\xb1\xea\x58\x44\x2b\xf8\x0a\x74\x1b\xca\x91\xf5\x8a\xb0\x58\x1b\x49\x8e\xe9\xfe\x3c\x92\xca\x65\x41\x48\xef\x75\x31\x35\x43\xd1\xaf\xf3\x82\xbe\xfe\x1a\x93\xb0\x21\x90\xce\x01\x02\x17\x51\x58\xe2\x07\x1d\x02\xba\xca\xd8\xdb\xe9\xfb\x94\x0f\xcb\x61\x0c\x10\x5a\xd5\x2c\x80\xfe\xb1\xec\x4e\x52\x4f\x4c\x0e\xc7\x98\x3e\x9c\xe6\x96\xfa\x4f\xcf\x4b\xf0\x51\x4b\x8f\x04\x32\xb1\x7d\x54\x48\xfc\x42\x6f\xea\x2b\x01\xac\x7b\x26\xc2\xae\xd7\x69\x92\x75\x34\xda\x22\x57\x6f\xc1\xbb\xa7\x26\xe9\xd6\x5b\xe0\x1b\x59\xf6\x0a\x64\x8a\xce\x2f\xc3\xe5\xe2\x75\x78\x9f\xa6\x37\xcb\xbd\x84\xbe\x3d\x6a\xc2\x44\x57\xa6\x29\x2c\xd6\x56\xc7\xb5\x69\xa5\x2f\xfe\xa7\x91\x6b\x8d\x04\xb4\xf4\xa7\x5b\xe7\xac\x95\x14\x2f"}, +{{0xfc,0x18,0x00,0x35,0xae,0xc0,0xf5,0xed,0xe7,0xbd,0xa9,0x3b,0xf7,0x7a,0xde,0x7a,0x81,0xed,0x06,0xde,0x07,0xee,0x2e,0x3a,0xa8,0x57,0x6b,0xe8,0x16,0x08,0x61,0x0a,},{0x4f,0x21,0x5e,0x94,0x8c,0xae,0x24,0x3e,0xe3,0x14,0x3b,0x80,0x28,0x2a,0xd7,0x92,0xc7,0x80,0xd2,0xa6,0xb7,0x50,0x60,0xca,0x1d,0x29,0x0c,0xa1,0xa8,0xe3,0x15,0x1f,},{0xa4,0x3a,0x71,0xc3,0xa1,0x9c,0x35,0x66,0x0d,0xae,0x6f,0x31,0xa2,0x54,0xb8,0xc0,0xea,0x35,0x93,0xfc,0x8f,0xca,0x74,0xd1,0x36,0x40,0x01,0x2b,0x9e,0x94,0x73,0xd4,0xaf,0xe0,0x70,0xdb,0x01,0xe7,0xfb,0x39,0x9b,0xf4,0xca,0x60,0x70,0xe0,0x62,0x18,0x00,0x11,0x28,0x5a,0x67,0xdd,0x68,0x58,0xb7,0x61,0xe4,0x6c,0x6b,0xd3,0x20,0x04,},"\xb5\xe8\xb0\x16\x25\x66\x4b\x22\x23\x39\xe0\xf0\x5f\x93\xa9\x90\xba\x48\xb5\x6a\xe6\x54\x39\xa1\x75\x20\x93\x2d\xf0\x11\x72\x1e\x28\x4d\xbe\x36\xf9\x86\x31\xc0\x66\x51\x00\x98\xa6\x8d\x7b\x69\x2a\x38\x63\xe9\x9d\x58\xdb\x76\xca\x56\x67\xc8\x04\x3c\xb1\x0b\xd7\xab\xba\xf5\x06\x52\x9f\xbb\x23\xa5\x16\x6b\xe0\x38\xaf\xfd\xb9\xa2\x34\xc4\xf4\xfc\xf4\x3b\xdd\xd6\xb8\xd2\xce\x77\x2d\xd6\x53\xed\x11\x5c\x09\x5e\x23\x2b\x26\x9d\xd4\x88\x8d\x23\x68\xcb\x1c\x66\xbe\x29\xdd\x38\x3f\xca\x67\xf6\x67\x65\xb2\x96\x56\x4e\x37\x55\x5f\x0c\x0e\x48\x45\x04\xc5\x91\xf0\x06\xea\x85\x33\xa1\x25\x83\xad\x2e\x48\x31\x8f\xf6\xf3\x24\xec\xaf\x80\x4b\x1b\xae\x04\xaa\x89\x67\x43\xe6\x7e\xf6\x1c\xa3\x83\xd5\x8e\x42\xac\xfc\x64\x10\xde\x30\x77\x6e\x3b\xa2\x62\x37\x3b\x9e\x14\x41\x94\x39\x55\x10\x1a\x4e\x76\x82\x31\xad\x9c\x65\x29\xef\xf6\x11\x8d\xde\x5d\xf0\x2f\x94\xb8\xd6\xdf\x2d\x99\xf2\x78\x63\xb5\x17\x24\x3a\x57\x9e\x7a\xaf\xf3\x11\xea\x3a\x02\x82\xe4\x7c\xa8\x76\xfa\xbc\x22\x80\xfc\xe7\xad\xc9\x84\xdd\x0b\x30\x88\x5b\x16\x50\xf1\x47\x1d\xfc\xb0\x52\x2d\x49\xfe\xc7\xd0\x42\xf3\x2a\x93\xbc\x36\x8f\x07\x60\x06\xea\x01\xec\x1c\x74\x12\xbf\x66\xf6\x2d\xc8\x8d\xe2\xc0\xb7\x47\x01\xa5\x61\x4e\x85\x5e\x9f\xa7\x28\xfb\x1f\x11\x71\x38\x5f\x96\xaf\xbd\xe7\x0d\xea\x02\xe9\xaa\x94\xdc\x21\x84\x8c\x26\x30\x2b\x50\xae\x91\xf9\x69\x3a\x18\x64\xe4\xe0\x95\xae\x03\xcd\xc2\x2a\xd2\x8a\x0e\xb7\xdb\x59\x67\x79\x24\x67\x12\xfa\xb5\xf5\xda\x32\x7e\xfe\xc3\xe7\x96\x12\xde\x0a\x6c\xca\xa5\x36\x75\x9b\x8e"}, +{{0xa2,0x83,0x6a,0x65,0x42,0x79,0x12,0x12,0x2d,0x25,0xdc,0xdf,0xc9,0x9d,0x70,0x46,0xfe,0x9b,0x53,0xd5,0xc1,0xbb,0x23,0x61,0x7f,0x11,0x89,0x0e,0x94,0xca,0x93,0xed,},{0x8c,0x12,0xbd,0xa2,0x14,0xc8,0xab,0xb2,0x28,0x6a,0xcf,0xfb,0xf8,0x11,0x24,0x25,0x04,0x0a,0xab,0x9f,0x4d,0x8b,0xb7,0x87,0x0b,0x98,0xda,0x01,0x59,0xe8,0x82,0xf1,},{0xe6,0xa9,0xa6,0xb4,0x36,0x55,0x9a,0x43,0x20,0xc4,0x5c,0x0c,0x2c,0x4a,0x2a,0xed,0xec,0xb9,0x0d,0x41,0x6d,0x52,0xc8,0x26,0x80,0xac,0x73,0x30,0xd0,0x62,0xae,0xbe,0xf3,0xe9,0xac,0x9f,0x2c,0x5f,0xfa,0x45,0x5c,0x9b,0xe1,0x13,0x01,0x3a,0x2b,0x28,0x2e,0x56,0x00,0xfd,0x30,0x64,0x35,0xad,0xa8,0x3b,0x1e,0x48,0xba,0x2a,0x36,0x05,},"\x81\x3d\x60\x61\xc5\x6e\xae\x0f\xf5\x30\x41\xc0\x24\x4a\xa5\xe2\x9e\x13\xec\x0f\x3f\xb4\x28\xd4\xbe\xb8\xa9\x9e\x04\xbc\xa8\xc4\x1b\xdd\xb0\xdb\x94\x5f\x48\x7e\xfe\x38\xf2\xfc\x14\xa6\x28\xfa\xfa\x24\x62\xf8\x60\xe4\xe3\x42\x50\xeb\x4e\x93\xf1\x39\xab\x1b\x74\xa2\x61\x45\x19\xe4\x1e\xe2\x40\x3b\xe4\x27\x93\x0a\xb8\xbc\x82\xec\x89\xce\xaf\xb6\x09\x05\xbd\x4d\xdb\xbd\x13\xbd\xb1\x96\x54\x31\x4f\xc9\x23\x73\x14\x0b\x96\x2e\x22\x58\xe0\x38\xd7\x1b\x9e\xc6\x6b\x84\xef\x83\x19\xe0\x35\x51\xcb\x70\x7e\x74\x7f\x6c\x40\xad\x47\x6f\xbe\xfd\xce\x71\xf3\xa7\xb6\x7a\x1a\xf1\x86\x9b\xc6\x44\x06\x86\xe7\xe0\x85\x5e\x4f\x36\x9d\x1d\x88\xb8\x09\x9f\xba\x54\x71\x46\x78\x62\x7b\xba\x1a\xff\x41\xe7\x70\x7b\xc9\x7e\xdd\xf8\x90\xb0\xc0\x8d\xce\x3e\x98\x00\xd2\x4c\x6f\x61\x09\x2c\xe2\x8d\x48\x1b\x5d\xea\x5c\x09\x6c\x55\xd7\x2f\x89\x46\x00\x91\x31\xfb\x96\x8e\x2b\xc8\xa0\x54\xd8\x25\xad\xab\x76\x74\x0d\xcf\x0d\x75\x8c\x8b\xf5\x4f\xf3\x86\x59\xe7\x1b\x32\xbf\xe2\xe6\x15\xaa\xab\xb0\xf5\x29\x30\x85\x64\x9c\xf6\x0b\x98\x47\xbc\x62\x01\x1c\xe3\x87\x8a\xf6\x28\x98\x4a\x58\x40\xa4\xad\x5d\xae\x37\x02\xdb\x36\x7d\xa0\xf8\xa1\x65\xfe\xd0\x51\x7e\xb5\xc4\x42\xb0\x14\x53\x30\x24\x1b\x97\xee\xca\x73\x3b\xa6\x68\x8b\x9c\x12\x9a\x61\xcd\x12\x36\xaf\xf0\xe2\x7b\xcf\x98\xc2\x8b\x0f\xbe\xea\x55\xa3\xd7\xc7\x19\x3d\x64\x4b\x27\x49\xf9\x86\xbd\x46\xaf\x89\x38\xe8\xfa\xae\xaf\xbd\x9c\xec\x36\x12\xab\x00\x5b\xd7\xc3\xee\xaf\xe9\xa3\x12\x79\xca\x61\x02\x56\x06\x66\xba\x16\x13\x6f\xf1\x45\x2f\x85\x0a\xdb"}, +{{0xf0,0x51,0xaf,0x42,0x6d,0x0c,0x32,0x82,0xfa,0xfc,0x8b,0xf9,0x12,0xad,0xe1,0xc2,0x42,0x11,0xa9,0x5a,0xd2,0x00,0xe1,0xee,0xf5,0x49,0x32,0x0e,0x1c,0xb1,0xa2,0x52,},{0xfa,0x87,0x95,0x5e,0x0e,0xa1,0x3d,0xde,0x49,0xd8,0x3d,0xc2,0x2e,0x63,0xa2,0xbd,0xf1,0x07,0x67,0x25,0xc2,0xcc,0x7f,0x93,0xc7,0x65,0x11,0xf2,0x8e,0x79,0x44,0xf2,},{0xb8,0xf7,0x13,0x57,0x8a,0x64,0x46,0x67,0x19,0xac,0xeb,0x43,0x2f,0xce,0x30,0x2a,0x87,0xcf,0x06,0x6b,0xf3,0xe1,0x02,0xa3,0x50,0x61,0x69,0x21,0xa8,0x40,0x96,0x4b,0xfc,0x7e,0x68,0x5d,0x8f,0xd1,0x74,0x55,0xac,0x3e,0xb4,0x86,0x1e,0xdc,0xb8,0x97,0x9d,0x35,0xe3,0xa4,0xbd,0x82,0xa0,0x78,0xcd,0x70,0x77,0x21,0xd7,0x33,0x40,0x0e,},"\xb4\x8d\x9f\x84\x76\x2b\x3b\xcc\x66\xe9\x6d\x76\xa6\x16\xfa\x8f\xe8\xe0\x16\x95\x25\x1f\x47\xcf\xc1\xb7\xb1\x7d\x60\xdc\x9f\x90\xd5\x76\xef\x64\xee\x7d\x38\x85\x04\xe2\xc9\x07\x96\x38\x16\x5a\x88\x96\x96\x47\x1c\x98\x9a\x87\x6f\x8f\x13\xb6\x3b\x58\xd5\x31\xfe\xa4\xdd\x12\x29\xfc\x63\x16\x68\xa0\x47\xbf\xae\x2d\xa2\x81\xfe\xae\x1b\x6d\xe3\xeb\xe2\x80\xab\xe0\xa8\x2e\xe0\x0f\xbf\xdc\x22\xce\x2d\x10\xe0\x6a\x04\x92\xff\x14\x04\xdf\xc0\x94\xc4\x0b\x20\x3b\xf5\x57\x21\xdd\x78\x7e\xd4\xe9\x1d\x55\x17\xaa\xf5\x8d\x3b\xdd\x35\xd4\x4a\x65\xae\x6b\xa7\x56\x19\xb3\x39\xb6\x50\x51\x8c\xef\xcc\x17\x49\x3d\xe2\x7a\x3b\x5d\x41\x78\x8f\x87\xed\xbd\xe7\x26\x10\xf1\x81\xbf\x06\xe2\x08\xe0\xeb\x7c\xdf\xe8\x81\xd9\x1a\x2d\x6c\xc7\x7a\xa1\x9c\x0f\xcf\x33\x0f\xed\xb4\x46\x75\xd8\x00\xeb\x8c\xff\x95\x05\xd8\x88\x75\x44\xa5\x03\xcb\xe3\x73\xc4\x84\x7b\x19\xe8\xf3\x99\x57\x26\xef\xd6\x64\x98\x58\x59\x5c\x57\xcc\xaf\x0c\xbc\x9e\xb2\x5d\xe8\x3b\xa0\x46\xbc\x9f\x18\x38\xac\x7b\x89\x53\xdd\x81\xb8\x1a\xc0\xf6\x8d\x0e\x93\x38\xcb\x55\x40\x25\x52\xaf\xb6\xbc\x16\x94\x93\x51\xb9\x26\xd1\x51\xa8\x2e\xfc\x69\x5e\x8d\x7d\xa0\xdd\x55\x09\x93\x66\x78\x97\x18\xcc\xbf\x36\x03\x0b\xd2\xc3\xc1\x09\x39\x9b\xe2\x6c\xdb\x8b\x9e\x2a\x15\x5f\x3b\x2c\xb1\xbf\xa7\x1a\xb6\x9a\x23\x62\x5a\x4a\xc1\x18\xfe\x91\xcb\x2c\x19\x78\x8c\xf5\x2a\x71\xd7\x30\xd5\x76\xb4\x21\xd9\x69\x82\xa5\x1a\x29\x91\xda\xec\x44\x0c\xda\x7e\x6c\xc3\x28\x2b\x83\x12\x71\x42\x78\xb8\x19\xbf\xe2\x38\x7e\xb9\x6a\xa9\x1d\x40\x17\x30\x34\xf4\x28"}, +{{0xa1,0x03,0xe9,0x26,0x72,0xc6,0x5f,0x81,0xea,0x5d,0xa1,0xff,0xf1,0xa4,0x03,0x87,0x88,0x47,0x9e,0x94,0x1d,0x50,0x3a,0x75,0x6f,0x4a,0x75,0x52,0x01,0xa5,0x7c,0x1d,},{0xee,0x63,0xa5,0xb6,0x96,0x41,0x21,0x7a,0xcb,0xaf,0x33,0x39,0xda,0x82,0x9e,0xc0,0x71,0xb9,0x93,0x1e,0x59,0x87,0x15,0x35,0x14,0xd3,0x01,0x40,0x83,0x7a,0x7a,0xf4,},{0x2a,0xa2,0x03,0x5c,0x2c,0xe5,0xb5,0xe6,0xae,0x16,0x1e,0x16,0x8f,0x3a,0xd0,0xd6,0x59,0x2b,0xcf,0x2c,0x4a,0x04,0x9d,0x3e,0xd3,0x42,0xfc,0xeb,0x56,0xbe,0x9c,0x7c,0xb3,0x72,0x02,0x75,0x73,0xae,0x01,0x78,0xe8,0x87,0x8e,0xbe,0xfc,0xa7,0xb0,0x30,0x32,0x7b,0x8a,0xad,0x41,0x85,0x7d,0xe5,0x8c,0xb7,0x8e,0x1a,0x00,0xcb,0xac,0x05,},"\xb1\x98\x4e\x9e\xec\x08\x5d\x52\x4c\x1e\xb3\xb9\x5c\x89\xc8\x4a\xe0\x85\xbe\x5d\xc6\x5c\x32\x6e\x19\x02\x5e\x12\x10\xa1\xd5\x0e\xdb\xbb\xa5\xd1\x37\x0c\xf1\x5d\x68\xd6\x87\xeb\x11\x32\x33\xe0\xfb\xa5\x0f\x94\x33\xc7\xd3\x58\x77\x39\x50\xc6\x79\x31\xdb\x82\x96\xbb\xcb\xec\xec\x88\x8e\x87\xe7\x1a\x2f\x75\x79\xfa\xd2\xfa\x16\x2b\x85\xfb\x97\x47\x3c\x45\x6b\x9a\x5c\xe2\x95\x66\x76\x96\x9c\x7b\xf4\xc4\x56\x79\x08\x5b\x62\xf2\xc2\x24\xfc\x7f\x45\x87\x94\x27\x3f\x6d\x12\xc5\xf3\xe0\xd0\x69\x51\x82\x4d\x1c\xca\x3e\x2f\x90\x45\x59\xed\x28\xe2\x86\x8b\x36\x6d\x79\xd9\x4d\xc9\x86\x67\xb9\xb5\x92\x42\x68\xf3\xe3\x9b\x12\x91\xe5\xab\xe4\xa7\x58\xf7\x70\x19\xda\xcb\xb2\x2b\xd8\x19\x6e\x0a\x83\xa5\x67\x76\x58\x83\x6e\x96\xca\x56\x35\x05\x5a\x1e\x63\xd6\x5d\x03\x6a\x68\xd8\x7a\xc2\xfd\x28\x3f\xdd\xa3\x90\x31\x99\x09\xc5\xcc\x76\x80\x36\x88\x48\x87\x3d\x59\x7f\x29\x8e\x0c\x61\x72\x30\x80\x30\xff\xd4\x52\xbb\x13\x63\x61\x7b\x31\x6e\xd7\xcd\x94\x9a\x16\x5d\xc8\xab\xb5\x3f\x99\x1a\xef\x3f\x3e\x95\x02\xc5\xdf\xe4\x75\x6b\x7c\x6b\xfd\xfe\x89\xf5\xe0\x0f\xeb\xdd\x6a\xfb\x04\x02\x81\x8f\x11\xcf\x8d\x1d\x58\x64\xfe\x9d\xa1\xb8\x6e\x39\xaa\x93\x58\x31\x50\x6c\xf2\x40\x0e\xa7\xed\x75\xbd\x95\x33\xb2\x3e\x20\x2f\xe8\x75\xd7\xd9\x63\x8c\x89\xd1\x1c\xb2\xd6\xe6\x02\x1a\xe6\xbd\x27\xc7\x75\x48\x10\xd3\x5c\xd3\xa6\x14\x94\xf2\x7b\x16\xfc\x79\x4e\x2c\xd2\xf0\xd3\x45\x3a\xda\x93\x38\x65\xdb\x78\xc5\x79\x57\x1f\x8f\xc5\xc5\xc6\xbe\x8e\xaf\xfc\xe6\xa8\x52\xe5\xb3\xb1\xc5\x24\xc4\x93\x13\xd4\x27\xab\xcb"}, +{{0xd4,0x7c,0x1b,0x4b,0x9e,0x50,0xcb,0xb7,0x1f,0xd0,0x7d,0x09,0x6d,0x91,0xd8,0x72,0x13,0xd4,0x4b,0x02,0x43,0x73,0x04,0x47,0x61,0xc4,0x82,0x2f,0x9d,0x9d,0xf8,0x80,},{0xf4,0xe1,0xcb,0x86,0xc8,0xca,0x2c,0xfe,0xe4,0x3e,0x58,0x59,0x4a,0x87,0x78,0x43,0x6d,0x3e,0xa5,0x19,0x70,0x4e,0x00,0xc1,0xbb,0xe4,0x8b,0xbb,0x1c,0x94,0x54,0xf8,},{0x62,0x7e,0x7c,0xa7,0xe3,0x4e,0xd6,0x33,0x1d,0x62,0xb9,0x54,0x1c,0x1e,0xa9,0xa9,0x29,0x2b,0xe7,0xb0,0xa6,0x5d,0x80,0x5e,0x26,0x6b,0x51,0x22,0x27,0x2a,0x82,0xdb,0x7d,0x76,0x5a,0xcc,0x7e,0x2a,0x29,0x0d,0x68,0x58,0x04,0x92,0x2f,0x91,0xed,0x04,0xa3,0xc3,0x82,0xc0,0x3f,0xf2,0x1a,0x17,0x68,0xf5,0x84,0x41,0x3c,0x4e,0x5f,0x00,},"\x88\xd7\x00\x9d\x51\xde\x3d\x33\x7e\xef\x0f\x21\x5e\xa6\x6a\xb8\x30\xec\x5a\x9e\x68\x23\x76\x1c\x3b\x92\xad\x93\xea\x34\x1d\xb9\x2e\xce\x67\xf4\xef\x4c\xeb\x84\x19\x4a\xe6\x92\x6c\x3d\x01\x4b\x2d\x59\x78\x1f\x02\xe0\xb3\x2f\x9a\x61\x12\x22\xcb\x9a\x58\x50\xc6\x95\x7c\xb8\x07\x9a\xe6\x4e\x08\x32\xa1\xf0\x5e\x5d\x1a\x3c\x57\x2f\x9d\x08\xf1\x43\x7f\x76\xbb\x3b\x83\xb5\x29\x67\xc3\xd4\x8c\x35\x76\x84\x88\x91\xc9\x65\x8d\x49\x59\xeb\x80\x65\x6d\x26\xcd\xba\x08\x10\x03\x7c\x8a\x18\x31\x8f\xf1\x22\xf8\xaa\x89\x85\xc7\x73\xcb\x31\x7e\xfa\x2f\x55\x7f\x1c\x38\x96\xbc\xb1\x62\xdf\x5d\x87\x68\x1b\xb7\x87\xe7\x81\x3a\xa2\xde\xa3\xb0\xc5\x64\xd6\x46\xa9\x28\x61\xf4\x44\xca\x14\x07\xef\xba\xc3\xd1\x24\x32\xcb\xb7\x0a\x1d\x0e\xaf\xfb\x11\x74\x1d\x37\x18\xfe\xde\xe2\xb8\x30\x36\x18\x9a\x6f\xc4\x5a\x52\xf7\x4f\xa4\x87\xc1\x8f\xd2\x64\xa7\x94\x5f\x6c\x9e\x44\xb0\x11\xf5\xd8\x66\x13\xf1\x93\x9b\x19\xf4\xf4\xfd\xf5\x32\x34\x05\x7b\xe3\xf0\x05\xad\x64\xee\xbf\x3c\x8f\xfb\x58\xcb\x40\x95\x6c\x43\x36\xdf\x01\xd4\x42\x4b\x70\x6a\x0e\x56\x1d\x60\x17\x08\xd1\x24\x85\xe2\x1b\xcb\x6d\x79\x9d\x8d\x1d\x04\x4b\x40\x00\x64\xec\x09\x44\x50\x14\x06\xe7\x02\x53\x94\x70\x06\xca\xbb\xdb\x2d\xd6\xbd\x8c\xee\x44\x97\x65\x3d\x91\x13\xa4\x4d\x4d\xe9\xb6\x8d\x4c\x52\x6f\xca\x0b\x9b\x0c\x18\xfe\x50\xfb\x91\x7f\xdd\x9a\x91\x4f\xb8\x16\x10\x8a\x73\xa6\xb3\xff\xf9\xe6\x54\xe6\x9c\x9c\xfe\x02\xb0\x5c\x6c\x1b\x9d\x15\xc4\xe6\x5c\xf3\x10\x18\xb8\x10\x0d\x78\x46\x33\xee\x18\x88\xee\xe3\x57\x2a\xaf\xa6\xf1\x89\xea\x22\xd0"}, +{{0xfc,0x0c,0x32,0xc5,0xeb,0x6c,0x71,0xea,0x08,0xdc,0x2b,0x30,0x0c,0xbc,0xef,0x18,0xfd,0xde,0x3e,0xa2,0x0f,0x68,0xf2,0x17,0x33,0x23,0x7b,0x4d,0xda,0xab,0x90,0x0e,},{0x47,0xc3,0x7d,0x8a,0x08,0x08,0x57,0xeb,0x87,0x77,0xa6,0xc0,0xa9,0xa5,0xc9,0x27,0x30,0x3f,0xaf,0x5c,0x32,0x09,0x53,0xb5,0xde,0x48,0xe4,0x62,0xe1,0x2d,0x00,0x62,},{0x68,0x87,0xc6,0xe2,0xb9,0x8a,0x82,0xaf,0x5e,0xe3,0xdf,0xa7,0xca,0x2c,0xb2,0x5d,0x9c,0x10,0x74,0x56,0x20,0xa8,0x29,0x56,0xac,0xba,0x85,0xcb,0x57,0xc8,0xec,0x24,0x27,0x9f,0xa4,0x2f,0x09,0x23,0x59,0xa1,0xb6,0xbb,0xea,0xfb,0xa0,0x50,0xf1,0x4b,0x62,0x88,0x20,0x9e,0x6e,0xf7,0xbc,0x1e,0x0a,0x2b,0x87,0x2c,0x11,0x38,0xf3,0x05,},"\xa7\xb1\xe2\xdb\x6b\xdd\x96\xb3\xd5\x14\x75\x60\x35\x37\xa7\x6b\x42\xb0\x4d\x7e\xbd\x24\xfe\x51\x5a\x88\x76\x58\xe4\xa3\x52\xe2\x21\x09\x33\x56\x39\xa5\x9e\x25\x34\x81\x1f\x47\x53\xb7\x02\x09\xd0\xe4\x69\x8e\x9d\x92\x60\x88\x82\x6c\x14\x68\x96\x81\xea\x00\xfa\x3a\x2f\xca\xa0\x04\x7c\xed\x3e\xf2\x87\xe6\x17\x25\x02\xb2\x15\xe5\x64\x97\x61\x4d\x86\xb4\xcb\x26\xbc\xd7\x7a\x2e\x17\x25\x09\x36\x0e\xe5\x88\x93\xd0\x1c\x0d\x0f\xb4\xd4\xab\xfe\x4d\xbd\x8d\x2a\x2f\x54\x19\x0f\xa2\xf7\x31\xc1\xce\xac\x68\x29\xc3\xdd\xc9\xbf\xb2\xff\xd7\x0c\x57\xba\x0c\x2b\x22\xd2\x32\x6f\xbf\xe7\x39\x0d\xb8\x80\x9f\x73\x54\x7f\xf4\x7b\x86\xc3\x6f\x2b\xf7\x45\x4e\x67\x8c\x4f\x1c\x0f\xa8\x70\xbd\x0e\x30\xbb\xf3\x27\x8e\xc8\xd0\xc5\xe9\xb6\x4a\xff\x0a\xf6\x4b\xab\xc1\x9b\x70\xf4\xcf\x9a\x41\xcb\x8f\x95\xd3\xcd\xe2\x4f\x45\x6b\xa3\x57\x1c\x8f\x02\x1d\x38\xe5\x91\xde\xc0\x5c\xb5\xd1\xca\x7b\x48\xf9\xda\x4b\xd7\x34\xb0\x69\xa9\xfd\x10\x65\x00\xc1\xf4\x08\xab\x7f\xe8\xe4\xa6\xe6\xf3\xed\x64\xda\x0e\xd2\x4b\x01\xe3\x3d\xf8\x47\x5f\x95\xfa\x9e\xd7\x1d\x04\xdd\x30\xb3\xcd\x82\x37\x55\xa3\x40\x1b\xf5\xaf\xae\x10\xee\x7e\x18\xec\x6f\xe6\x37\xc3\x79\x3f\xd4\x34\xb4\x8d\x71\x45\x13\x04\x47\xe0\x02\x99\x10\x10\x52\x55\x8b\x50\x65\x54\xec\x9c\x39\x9f\x62\x94\x1c\x3f\x41\x4c\xbc\x35\x2c\xaa\x34\x5b\x93\x0a\xde\xcf\xad\xda\xc9\x1e\xe5\x3d\x14\x51\xa6\x5e\x06\x20\x10\x26\x32\x5d\xe0\x7c\x93\x1f\x69\xbb\xa8\x68\xa7\xc8\x7e\xe2\x3c\x60\x4e\xc6\x79\x43\x32\x91\x7d\xfe\x2c\x5b\x69\x66\x9b\x65\x97\x06\x91\x7f\x71\xed\xdf\x96"}, +{{0xa8,0xd7,0x3d,0x63,0x9a,0x23,0xcc,0x6a,0x96,0x7e,0xf3,0x1b,0xca,0xbb,0x5d,0x06,0x3e,0x53,0xe1,0xea,0xb8,0xfc,0xc7,0xca,0xb9,0xbc,0x3a,0x17,0xfd,0xe9,0xc2,0xf8,},{0x8d,0xaa,0x9f,0x4c,0x8b,0x1a,0x44,0x69,0x1b,0xf4,0x45,0x21,0xf2,0xf7,0xca,0x45,0xdc,0x7f,0xc6,0x1f,0x6a,0x4c,0xe6,0xf9,0x8f,0xaa,0x41,0xc2,0xa7,0x49,0x77,0xd1,},{0xc4,0xdc,0xef,0x1a,0x24,0x53,0x93,0x9b,0x36,0x4b,0x34,0x02,0x50,0xc3,0x12,0x94,0x31,0x43,0x1d,0x5b,0xa3,0xf4,0x76,0x70,0xab,0x07,0xce,0x68,0x0c,0x69,0xbf,0x28,0xb6,0x78,0x62,0x7c,0x76,0xa6,0x36,0x0f,0xc4,0x0d,0xc1,0x09,0xaa,0x7d,0xea,0x37,0x1b,0x82,0x5e,0x46,0x13,0x4f,0x62,0x45,0x72,0x18,0x2a,0xcf,0x39,0x57,0xe7,0x0f,},"\xfd\x1f\xac\x3d\x53\x31\x3b\x11\xac\xd2\x9f\x5a\x83\xac\x11\x89\x6d\xab\x25\x30\xfa\x47\x86\x5b\x22\x95\xc0\xd9\x9d\xd6\x7c\x36\xed\x8e\x5f\xa5\x49\x15\x0c\x79\x4c\x55\x49\xef\xb5\xc1\xd6\x91\x14\xd5\xd6\x07\xb2\x32\x85\xb7\x21\x2a\xfa\xab\x57\x84\x6a\x54\xae\x67\xb9\xe8\x80\xe0\x7b\x65\x86\x60\x7c\xec\xf6\xd4\xee\xd5\x16\xa3\xa7\x55\x11\xfe\x36\x7d\x88\xeb\x87\x1e\x6d\x71\xb7\xd6\xaa\x13\x67\xa0\x14\x21\xb1\x08\x8f\xc2\xd7\x5e\x44\x95\x4b\x73\x62\x5c\x52\xda\x8a\x3a\x18\x3c\x60\xbe\x9d\xa6\x05\x0f\x59\xa4\x53\xca\xa5\x35\x20\x59\x36\x71\x72\x8d\x43\x18\x77\xbf\xaa\xc9\x13\xa7\x65\xfb\x6a\x56\xb7\x52\x90\xb2\xa8\xaa\xac\x34\xaf\xb9\x21\x7b\xa1\xb0\xd5\x85\x0b\xa0\xfd\xab\xf8\x09\x69\xde\xf0\xfe\xee\x79\x4c\xeb\x60\x61\x4e\x33\x68\xe6\x3e\xf2\x0e\x4c\x32\xd3\x41\xec\x9b\x03\x28\xea\x9f\xe1\x39\x20\x7e\xd7\xa6\x26\xff\x08\x94\x3b\x41\x52\x33\xdb\x7c\xfc\xc8\x45\xc9\xb6\x31\x21\xd4\xed\x52\xec\x37\x48\xab\x6a\x1f\x36\xb2\x10\x3c\x7d\xc7\xe9\x30\x3a\xce\xa4\xba\x8a\xf7\xa3\xe0\x71\x84\xfb\x49\x1e\x89\x1e\xde\x84\xf0\xdc\x41\xca\xdc\x39\x73\x02\x8e\x87\x9a\xcd\x20\x31\xaf\xc2\x9a\x16\x09\x28\x68\xe2\xc7\xf5\x39\xfc\x1b\x79\x2e\xda\xb1\x95\xa2\x5a\xb9\x83\x06\x61\x34\x6b\x39\xef\x53\x91\x5d\xe4\xaf\x52\xc4\x21\xea\xf1\x72\xe9\xda\x76\xa0\x8c\x28\x3a\x52\xdf\x90\x7f\x70\x5d\x7e\x85\x99\xc5\xba\xae\x0c\x2a\xf3\x80\xc1\xbb\x46\xf9\x34\x84\xa0\x3f\x28\x37\x43\x24\xb2\x78\x99\x2b\x50\xb7\xaf\xa0\x25\x52\xca\xfa\x50\x3f\x03\x4f\x8d\x86\x6e\x9b\x72\x02\x71\xdd\x68\xcc\xb6\x85\xa8\x5f\xff\xd1"}, +{{0x79,0xc7,0xdc,0xb7,0xd5,0x9a,0x8d,0xf6,0xb2,0xb2,0xba,0x04,0x13,0x05,0x9d,0x89,0x68,0x09,0x95,0xc2,0x0e,0x91,0x6d,0xa0,0x1b,0x8f,0x06,0x7d,0xc6,0x0c,0xde,0xb4,},{0x29,0x87,0x43,0xc7,0x39,0x18,0xbd,0x55,0x6b,0x28,0xf8,0xd4,0x82,0x4a,0x09,0xb8,0x14,0x75,0x2a,0x7a,0xea,0xe7,0xee,0x04,0x87,0x5c,0x53,0xf4,0xd6,0xb1,0x08,0xd9,},{0x7b,0x7c,0xbe,0x44,0xc7,0x71,0xe4,0x37,0x1b,0xae,0x13,0xb0,0x72,0x2b,0xab,0xcc,0x10,0x64,0x15,0x57,0x32,0x96,0x2f,0x40,0x7c,0xba,0x2a,0xcd,0x35,0x38,0x1d,0x42,0x21,0x0b,0xec,0xe8,0x22,0xf4,0x68,0x11,0x21,0xfd,0x4d,0xab,0x74,0x5a,0x1f,0x30,0x77,0x92,0x2f,0xba,0x1a,0x78,0x04,0x5b,0x71,0x29,0x02,0xba,0xcc,0xac,0x66,0x0e,},"\x5f\xe2\x02\xf5\xb3\x3b\x77\x88\x81\x0d\x25\x08\xa1\x3b\x31\x14\xd6\x9b\x85\x96\xe6\xea\xcd\xa0\x5a\x04\xa2\xeb\x59\x7f\xa3\x27\x9c\x20\x8b\x5a\x5b\x65\xda\xac\xb6\x99\xf1\x44\xe1\xd6\x60\xe7\x8e\x13\x9b\x57\x83\x31\xab\xec\x5c\x3c\x35\x33\x44\x54\xf0\x3e\x83\x2c\x8d\x6e\x29\x84\xdf\x5d\x45\x0e\xcb\x5d\x33\x58\x2a\x78\x80\x8a\x9c\x78\xf2\x6e\xbc\xd1\x24\x4e\xf5\x2e\x3f\xa6\xdc\xa1\x15\xc1\xf0\xcb\x56\xe3\x8e\xae\x0e\x5b\x39\xf5\xfd\x86\x3d\xff\xd0\xb2\xfb\x5b\x95\x8f\x2d\x73\x9d\xb3\x12\xfc\x66\x7a\x17\xb0\x31\xc4\xc9\xf8\xc5\xa2\xad\x57\x79\x84\xcc\x41\x46\xc4\x37\x58\x0e\xfd\x21\x52\x17\x3f\xe0\xd5\x78\x2c\xc2\xae\x98\x31\xa8\xd9\xa0\x41\x77\x25\x60\x18\xff\x76\x31\xe0\xb0\xd8\xa9\x9c\xb2\x8f\x00\x8b\x32\x04\x21\xe2\x7a\x74\xc3\x13\x59\x18\x86\x63\x45\x6d\x85\xe0\x98\xc1\xeb\xd2\x81\x70\x10\x97\xb6\xae\x5a\x87\x1e\x5c\xcc\x02\x05\x8a\x50\x14\x16\xcb\x91\xc1\x2c\xef\x5b\xe6\xf1\x91\x43\x70\xe5\x63\xf1\xa1\xb2\xaa\x41\xf4\xb8\xee\x84\xcd\x32\xa1\xd5\x09\xe5\x29\x78\x7d\x14\xa4\x45\x43\x8d\x80\x7e\xcd\x62\x0e\x2f\xa2\x6d\xe0\xda\x64\x26\x86\x47\x84\xd4\xa2\x8f\x54\x10\x3e\x60\x92\x83\xb9\x9e\xe9\xb2\xb6\x99\xc9\x80\xbb\xb7\x88\x2c\x3e\xa6\x8d\xdc\x90\x80\x2a\xc2\x32\xf2\xc8\xe8\x42\x91\x98\x7b\xf3\xc5\x24\x09\x21\xb5\x9c\xfa\x21\x49\x69\x31\x76\x73\xd0\xbe\x7f\x34\xb1\xca\x0e\x15\xea\x73\xc7\x17\x54\x01\xce\x55\x0b\xe1\x06\xb4\x9e\x62\xf8\xdb\x68\x69\x5e\x74\x0e\x0f\x3a\x35\x56\xa1\x9f\x3c\x8e\x6b\x91\xac\x1c\xc2\x3e\x86\x3f\xcd\x0f\x0d\x9e\xb7\x04\x7a\xa6\x31\xe0\xd2\xeb\x9b\xcc\x6b"}, +{{0xb9,0xce,0xd0,0x41,0x25,0x93,0xfe,0xfe,0xd9,0x5e,0x94,0xac,0x96,0x5e,0x5b,0x23,0xff,0x9d,0x4b,0x0e,0x79,0x7d,0xb0,0x2b,0xf4,0x97,0x99,0x4d,0x3b,0x79,0x3e,0x60,},{0xc1,0x62,0x9a,0x72,0x31,0x89,0x95,0x93,0x37,0xf5,0x53,0x52,0x01,0xe5,0xd3,0x95,0xba,0x0a,0x03,0xea,0x8c,0x17,0x66,0x0d,0x0f,0x8b,0x6f,0x6e,0x64,0x04,0xbb,0x12,},{0xf1,0xb7,0x97,0xde,0xd8,0xa6,0x94,0x2b,0x12,0x62,0x68,0x48,0x34,0x0f,0xb7,0x19,0xfc,0xdd,0xaf,0xd9,0x8f,0x33,0xe2,0x99,0x2d,0x35,0x7b,0xfd,0xd3,0x59,0x33,0xc7,0xac,0x56,0x1e,0x5b,0x2f,0x93,0x94,0x64,0x33,0x8c,0x56,0x66,0x85,0x4c,0xa8,0x85,0xc4,0xd0,0x46,0xeb,0x2c,0x54,0xe4,0x8a,0x1b,0x5e,0xd2,0x66,0xad,0x34,0xde,0x05,},"\x55\x5b\xb3\x9c\x18\x99\xd5\x7c\xab\xe4\x28\x06\x4c\x2d\x92\x5f\x5f\xc4\xcf\x70\x59\xb9\x5f\xb8\x9a\x8e\x9e\x3a\x7e\x42\x6c\x6c\x92\x2d\x9e\x4d\x76\x98\x4e\xa2\x38\x3c\xab\xb4\xf2\xbe\xfd\x89\xc1\xf2\x0e\xaa\x8a\x00\xdb\xe7\x87\xcf\xa7\x0a\xe2\xae\x6a\xa9\x03\x31\xcb\xbe\x58\x0f\xa5\xa0\x21\x84\xed\x05\xe6\xc8\xe8\x9d\x57\x6a\xf2\x8a\xee\xaf\x7c\x4e\x25\x00\xf3\x58\xa0\x09\x71\xa0\xa7\x59\x20\xe8\x54\x84\x9b\xf3\x32\x14\x29\x75\x40\x4f\x59\x8c\x32\xe9\x69\x82\x04\x3d\x99\x2b\xcd\x1a\x4f\xe8\x19\xbb\x56\x34\xad\x03\x46\x7a\xfc\x4c\xe0\x50\x73\xf8\x8b\xa1\xba\x4a\xe8\x65\x3a\x04\x66\x5c\xf3\xf7\x16\x90\xfe\x13\x34\x38\x85\xbc\x5e\xbc\x0e\x5e\x62\xd8\x82\xf4\x3b\x7c\x68\x90\x0a\xc9\x43\x8b\xf4\xa8\x1c\xe9\x01\x69\xec\x12\x9e\xe6\x3e\x2c\x67\x5a\x1a\x5a\x67\xe2\x7c\xc7\x98\xc4\x8c\xc2\x3f\x51\x07\x8f\x46\x3b\x3b\x7c\xc1\x4e\x3b\xcf\xd2\xe9\xb8\x2c\x75\x24\x09\x34\xcb\xdc\x50\xc4\x30\x8f\x28\x2f\x19\x31\x22\x99\x56\x06\xf4\x01\x35\x10\x0a\x29\x1c\x55\xaf\xdf\x89\x34\xeb\x8b\x61\xd8\x14\x21\x67\x41\x24\xde\xc3\xb8\x8f\x9a\x73\x11\x0a\x9e\x61\x6f\x5b\x82\x6b\x9d\x34\x3f\x3a\xc0\xe9\xd7\xbd\xf4\xfd\x8b\x64\x8b\x40\xf0\x09\x8b\x38\x97\xa3\xa1\xcd\x65\xa6\x45\x70\x05\x9b\x8b\xc5\xc6\x74\x38\x83\x07\x4c\x88\x62\x3c\x1f\x5a\x88\xc5\x89\x69\xe2\x1c\x69\x2a\xca\x23\x68\x33\xd3\x47\x0b\x3e\xb0\x98\x15\xe1\x13\x8e\x9d\x06\x50\xc3\x90\xee\xe9\x77\x42\x21\x93\xb0\x09\x18\xbe\x8a\x97\xcc\x61\x99\xb4\x51\xb0\x5b\x57\x30\xd1\xd1\x33\x58\xcf\x74\x61\x06\x78\xf7\xac\x7f\x78\x95\xcc\x2e\xfc\x45\x6e\x03\x87\x3b"}, +{{0x81,0xda,0x16,0x8f,0x02,0xd4,0x6b,0xb8,0x7c,0xda,0x84,0x5d,0xa4,0x3f,0x8a,0x6c,0xba,0x2c,0x01,0x68,0x78,0xd6,0xf4,0x9c,0x6f,0x06,0x1a,0x60,0xf1,0x55,0xa0,0x4a,},{0xaf,0xf8,0x6e,0x98,0x09,0x3c,0xa4,0xc7,0x1b,0x1b,0x80,0x4c,0x5f,0xe4,0x51,0xcf,0xdf,0x86,0x82,0x50,0xde,0xa3,0x03,0x45,0xfa,0x4b,0x89,0xbb,0x09,0xb6,0xa5,0x3b,},{0x4a,0xac,0xa9,0x47,0xe3,0xf2,0x2c,0xc8,0xb8,0x58,0x8e,0xe0,0x30,0xac,0xe8,0xf6,0xb5,0xf5,0x71,0x1c,0x29,0x74,0xf2,0x0c,0xc1,0x8c,0x3b,0x65,0x5b,0x07,0xa5,0xbc,0x13,0x66,0xb5,0x9a,0x17,0x08,0x03,0x2d,0x12,0xca,0xe0,0x1a,0xb7,0x94,0xf8,0xcb,0xcc,0x1a,0x33,0x08,0x74,0xa7,0x50,0x35,0xdb,0x1d,0x69,0x42,0x2d,0x2f,0xc0,0x0c,},"\x6b\xc6\x72\x6a\x34\xa6\x4a\xae\x76\xab\x08\xc9\x2b\x17\x9e\x54\xff\x5d\x2e\x65\xeb\x2c\x6c\x65\x9a\xe8\x70\x3c\xc2\x45\xcb\xc2\xcf\x45\xa1\x2b\x22\xc4\x68\xae\x61\xfd\x9a\x66\x27\xad\x06\x26\xc9\xb1\xe5\xaf\x41\x2c\xb4\x83\xea\xee\x1d\xb1\x1b\x29\xf0\xa5\x10\xc1\x3e\x38\x02\x0e\x09\xae\x0e\xee\x76\x25\x37\xa3\xe9\xd1\xa0\xc7\xb0\x33\xd0\x97\xfd\xc1\xf4\xf8\x26\x29\xa9\xde\x9e\xf3\x8d\xa1\xcf\x96\xa9\x40\x35\x7d\x5f\x2e\x0e\x7e\x8d\xbc\x29\xdb\x72\x8a\x1e\x6a\xad\x87\x6e\x5e\x05\x31\x13\xd0\x64\x20\x27\x2b\x87\xcf\x0c\x40\xdf\xe0\x3a\x54\x4d\xe9\x6c\x7a\xea\x13\xba\x00\x29\xb5\x7b\x48\xd9\x9d\xcc\x6a\x65\x04\x92\xd7\x8c\x4c\xdd\x1b\x28\xe1\xa1\x15\xa7\xe3\xe7\xa7\xcb\x21\x33\x3d\x4f\xf8\x08\x58\xdf\xb6\x77\x82\xc1\x63\x54\xb8\x71\x65\x96\x56\x0d\x7d\x8e\x38\x9e\xb1\x5a\x05\x2a\x0b\xf5\xd1\x6e\xb5\x4f\xb3\xe4\x97\x3a\xd4\x98\x4e\x72\xa1\x87\xf5\x34\x7d\x5b\x26\x2c\x32\xb1\x64\x7e\x42\xb6\xa5\x38\x37\x09\x6c\xc7\x8c\x2a\x05\xce\x1c\x6e\x12\x49\x3a\x03\xf1\xa6\x67\x58\x4c\xb9\x7f\x4f\xcd\x57\xee\x94\x4c\x65\xb7\xee\xd2\x5f\x7a\xe0\xf3\xf6\xce\xde\x17\x3f\xdf\xac\xf5\xaf\x1d\xb1\x43\x73\x0d\x18\x09\x66\x64\x91\x4b\xa4\xcf\xc6\x96\x6f\x39\x20\x22\x78\x1c\x66\xa9\x41\x7c\xa2\x68\x0b\x51\xf6\x3e\x4f\xba\x42\x4e\xcf\xdb\xc6\xa2\xf0\x17\x87\xd0\xe7\x48\x4f\x8a\x8a\xb3\x90\xae\xaa\x6d\x1f\x7e\xd3\x25\xd8\x2f\xea\xa1\x69\x2a\x49\x84\xfa\xe4\x3d\xa8\x73\x29\xb0\x45\xda\x8f\x0a\x4f\x56\xb6\x95\xaa\x93\x5d\xe1\x52\xce\x03\x85\x15\x37\x20\x97\x9a\x2b\x70\x06\xd4\x05\xfc\xb0\xfb\xa0\x9e\x23\xb8\x5f\xd1\x9b"}, +{{0xaf,0x2e,0x60,0xda,0x0f,0x29,0xbb,0x16,0x14,0xfc,0x3f,0x19,0x3c,0xc3,0x53,0x33,0x19,0x86,0xb7,0x3f,0x3f,0x9a,0x0a,0xec,0x94,0x21,0xb9,0x47,0x3d,0x6a,0x4b,0x6a,},{0xc8,0xbf,0xe2,0x83,0x58,0x22,0x19,0x9c,0x61,0x27,0xb8,0x06,0xfa,0xbe,0xef,0x0c,0xb9,0xff,0x59,0xf3,0xc8,0x1f,0xf0,0xcb,0x89,0xc5,0x56,0xf5,0x51,0x06,0xaf,0x6a,},{0x50,0xf9,0xf9,0x41,0xa8,0xda,0x9f,0x62,0x40,0xf7,0x6d,0x2f,0xa3,0xb0,0x6d,0xd6,0xb2,0x29,0x2e,0xd3,0x2d,0x1c,0x05,0x21,0x80,0x97,0xd3,0x4d,0x8a,0x19,0xdf,0xe5,0x53,0xf7,0x6a,0xe3,0xc6,0xb4,0xa2,0xed,0x20,0x85,0x21,0x28,0x46,0x15,0x40,0xde,0xcf,0x41,0x8f,0x52,0xd3,0x8e,0x64,0x03,0x7e,0xec,0x77,0x71,0xbd,0x1a,0xfe,0x00,},"\x7d\xbb\x77\xb8\x8b\xda\x94\xf3\x44\x41\x6a\x06\xb0\x96\x56\x6c\x6e\x8b\x39\x39\x31\xa8\x24\x3a\x6c\xab\x75\xc3\x61\xfd\xe7\xdc\x53\x6a\xec\x40\xcd\xed\x83\x29\x6a\x89\xe8\xc3\xbe\xf7\xd7\x87\xcf\xc4\x94\x01\xa7\xb9\x18\x3f\x13\x8d\x50\x00\x61\x9f\xf0\x73\xc0\x5e\x2f\x84\x1d\x60\x08\x35\x8f\x10\xa2\xda\x7d\xcf\xac\x3d\x4d\x70\xc2\x0d\x2e\xc3\x4c\x7b\x6d\x5c\xd1\xa7\x34\xd6\xbb\xb1\x1c\x5f\xd8\xd2\xbc\xe3\x2a\xc8\x10\xef\x82\xb4\x18\x8a\xa8\xea\x3c\xfc\x30\x32\x23\x3d\xc0\xe2\x60\x0e\x9d\xb6\xe1\x8b\xc2\x2b\x10\x04\x4a\x31\xc1\x5b\xac\xea\xf5\x55\x4d\xe8\x9d\x2a\x34\x66\x80\x7f\x24\x44\x14\xd0\x80\xff\x29\x63\x95\x6c\x6e\x83\xc8\xe1\x44\xed\x00\x66\x08\x8b\x47\x6d\xdc\xb5\x64\x40\x34\x47\xd9\x15\x9f\x90\x89\xab\xa2\xb4\xd5\x57\x5c\x4d\x8a\xe6\x6f\xc8\x69\x0e\x73\x49\xed\x40\x83\x2e\x63\x69\xc0\x24\x56\x3e\xc4\x93\xbf\xcc\x0f\xc9\xac\x78\x7a\xc8\x41\x39\x7f\xe1\x33\x16\x72\x83\xd8\x0c\x42\xf0\x06\xa9\x9d\x39\xe8\x29\x79\xda\x3f\xa9\x33\x4b\xd9\xed\xe0\xd1\x4b\x41\xb7\x46\x6b\xce\xbb\xe8\x17\x1b\xc8\x04\xa6\x45\xd3\x72\x32\x74\xa1\xb9\x2b\xf8\x2f\xd9\x93\x35\x87\x44\xde\x92\x44\x19\x03\xd4\x36\xfd\x47\xf2\x3d\x40\x05\x2a\x38\x29\x36\x7f\x20\x2f\x05\x53\xb5\xe4\x9b\x76\xc5\xe0\x3f\xa6\xce\x7c\x3c\xf5\xee\xb2\x1d\xe9\x67\xbe\xc4\xdd\x35\x59\x25\x38\x4e\xbf\x96\x69\x7e\x82\x37\x62\xba\xc4\xd4\x3a\x76\x7c\x24\x1a\x4c\xef\x72\x4a\x97\x0d\x00\xff\x3a\x8a\xb3\xb8\x3e\xed\x84\x00\x75\xc7\x4e\x90\xf3\x06\xe3\x30\x01\x32\x60\x96\x21\x61\xe9\xd0\x91\x0d\xe1\x83\x62\x2c\xe9\xa6\xb8\xd5\x14\x42\x80\x55\x0f\xc7"}, +{{0x60,0x5f,0x90,0xb5,0x3d,0x8e,0x4a,0x3b,0x48,0xb9,0x7d,0x74,0x54,0x39,0xf2,0xa0,0x80,0x7d,0x83,0xb8,0x50,0x2e,0x8e,0x29,0x79,0xf0,0x3e,0x8d,0x37,0x6a,0xc9,0xfe,},{0xaa,0x3f,0xae,0x4c,0xfa,0x6f,0x6b,0xfd,0x14,0xba,0x0a,0xfa,0x36,0xdc,0xb1,0xa2,0x65,0x6f,0x36,0x54,0x1a,0xd6,0xb3,0xe6,0x7f,0x17,0x94,0xb0,0x63,0x60,0xa6,0x2f,},{0xdd,0x02,0x12,0xe6,0x32,0x88,0xcb,0xe1,0x4a,0x45,0x69,0xb4,0xd8,0x91,0xda,0x3c,0x7f,0x92,0x72,0x7c,0x5e,0x7f,0x9a,0x80,0x1c,0xf9,0xd6,0x82,0x70,0x85,0xe7,0x09,0x5b,0x66,0x9d,0x7d,0x45,0xf8,0x82,0xca,0x5f,0x07,0x45,0xdc,0xcd,0x24,0xd8,0x7a,0x57,0x18,0x13,0x20,0x19,0x1e,0x5b,0x7a,0x47,0xc3,0xf7,0xf2,0xdc,0xcb,0xd7,0x07,},"\x3b\xcd\xca\xc2\x92\xac\x95\x19\x02\x4a\xae\xce\xe2\xb3\xe9\x99\xff\x5d\x34\x45\xe9\xf1\xeb\x60\x94\x0f\x06\xb9\x12\x75\xb6\xc5\xdb\x27\x22\xed\x4d\x82\xfe\x89\x60\x52\x26\x53\x0f\x3e\x6b\x07\x37\xb3\x08\xcd\xe8\x95\x61\x84\x94\x4f\x38\x8a\x80\x04\x2f\x6c\xba\x27\x4c\x0f\x7d\x11\x92\xa0\xa9\x6b\x0d\xa6\xe2\xd6\xa6\x1b\x76\x51\x8f\xbe\xe5\x55\x77\x3a\x41\x45\x90\xa9\x28\xb4\xcd\x54\x5f\xcc\xf5\x81\x72\xf3\x58\x57\x12\x0e\xb9\x6e\x75\xc5\xc8\xac\x9a\xe3\xad\xd3\x67\xd5\x1d\x34\xac\x40\x34\x46\x36\x0e\xc1\x0f\x55\x3e\xa9\xf1\x4f\xb2\xb8\xb7\x8c\xba\x18\xc3\xe5\x06\xb2\xf0\x40\x97\x06\x3a\x43\xb2\xd3\x64\x31\xcc\xe0\x2c\xaf\x11\xc5\xa4\xdb\x8c\x82\x17\x52\xe5\x29\x85\xd5\xaf\x1b\xfb\xf4\xc6\x15\x72\xe3\xfa\xda\xe3\xad\x42\x4a\xcd\x81\x66\x2e\xa5\x83\x7a\x11\x43\xb9\x66\x93\x91\xd7\xb9\xcf\xe2\x30\xcf\xfb\x3a\x7b\xb0\x3f\x65\x91\xc2\x5a\x4f\x01\xc0\xd2\xd4\xac\xa3\xe7\x4d\xb1\x99\x7d\x37\x39\xc8\x51\xf0\x32\x7d\xb9\x19\xff\x6e\x77\xf6\xc8\xa2\x0f\xdd\x3e\x15\x94\xe9\x2d\x01\x90\x1a\xb9\xae\xf1\x94\xfc\x89\x3e\x70\xd7\x8c\x8a\xe0\xf4\x80\x00\x1a\x51\x5d\x4f\x99\x23\xae\x62\x78\xe8\x92\x72\x37\xd0\x5d\xb2\x3e\x98\x4c\x92\xa6\x83\x88\x2f\x57\xb1\xf1\x88\x2a\x74\xa1\x93\xab\x69\x12\xff\x24\x1b\x9f\xfa\x66\x2a\x0d\x47\xf2\x92\x05\xf0\x84\xdb\xde\x84\x5b\xaa\xeb\x5d\xd3\x6a\xe6\x43\x9a\x43\x76\x42\xfa\x76\x3b\x57\xe8\xdb\xe8\x4e\x55\x81\x3f\x01\x51\xe9\x7e\x5b\x9d\xe7\x68\xb2\x34\xb8\xdb\x15\xc4\x96\xd4\xbf\xcf\xa1\x38\x87\x88\x97\x2b\xb5\x0c\xe0\x30\xbc\x6e\x0c\xcf\x4f\xa7\xd0\x0d\x34\x37\x82\xf6\xba\x8d\xe0"}, +{{0x9e,0x2c,0x3d,0x18,0x98,0x38,0xf4,0xdd,0x52,0xef,0x08,0x32,0x88,0x68,0x74,0xc5,0xca,0x49,0x39,0x83,0xdd,0xad,0xc0,0x7c,0xbc,0x57,0x0a,0xf2,0xee,0x9d,0x62,0x09,},{0xf6,0x8d,0x3b,0x81,0xe7,0x35,0x57,0xee,0x1f,0x08,0xbd,0x2d,0x3f,0x46,0xa4,0x71,0x82,0x56,0xa0,0xf3,0xcd,0x8d,0x2e,0x03,0xeb,0x8f,0xe8,0x82,0xaa,0xb6,0x5c,0x69,},{0x38,0xa3,0x1b,0x6b,0x46,0x50,0x84,0x73,0x82,0x62,0xa2,0x6c,0x06,0x5f,0xe5,0xd9,0xe2,0x88,0x6b,0xf9,0xdd,0x35,0xcd,0xe0,0x5d,0xf9,0xba,0xd0,0xcc,0x7d,0xb4,0x01,0xc7,0x50,0xaa,0x19,0xe6,0x60,0x90,0xbc,0xe2,0x5a,0x3c,0x72,0x12,0x01,0xe6,0x05,0x02,0xc8,0xc1,0x04,0x54,0x34,0x66,0x48,0xaf,0x06,0x5e,0xab,0x0e,0xe7,0xd8,0x0f,},"\x19\x48\x5f\x52\x38\xba\x82\xea\xdf\x5e\xff\x14\xca\x75\xcd\x42\xe5\xd5\x6f\xea\x69\xd5\x71\x8c\xfb\x5b\x1d\x40\xd7\x60\x89\x9b\x45\x0e\x66\x88\x45\x58\xf3\xf2\x5b\x7c\x3d\xe9\xaf\xc4\x73\x8d\x7a\xc0\x9d\xa5\xdd\x46\x89\xbb\xfa\xc0\x78\x36\xf5\xe0\xbe\x43\x2b\x1d\xdc\xf1\xb1\xa0\x75\xbc\x98\x15\xd0\xde\xbc\x86\x5d\x90\xbd\x5a\x0c\x5f\x56\x04\xd9\xb4\x6a\xce\x81\x6c\x57\x69\x4e\xcc\x3d\x40\xd8\xf8\x4d\xf0\xed\xe2\xbc\x4d\x57\x77\x75\xa0\x27\xf7\x25\xde\x08\x16\xf5\x63\xfa\x88\xf8\x8e\x07\x77\x20\xeb\xb6\xac\x02\x57\x46\x04\x81\x98\x24\xdb\x74\x74\xd4\xd0\xb2\x2c\xd1\xbc\x05\x76\x8e\x0f\xb8\x67\xca\x1c\x1a\x7b\x90\xb3\x4a\xb7\xa4\x1a\xfc\x66\x95\x72\x66\xac\x0c\x91\x59\x34\xaa\xf3\x1c\x0c\xf6\x92\x7a\x4f\x03\xf2\x32\x85\xe6\xf2\x4a\xfd\x58\x13\x84\x9b\xb0\x8c\x20\x3a\xc2\xd0\x33\x6d\xcb\xf8\x0d\x77\xf6\xcf\x71\x20\xed\xfb\xcd\xf1\x81\xdb\x10\x7e\xc8\xe0\x0f\x32\x44\x9c\x1d\x3f\x5c\x04\x9a\x92\x69\x4b\x4e\xa2\xc6\xeb\xe5\xe2\xb0\xf6\x4b\x5a\xe5\x0a\xd3\x37\x4d\x24\x6b\x32\x70\x05\x7e\x72\x4a\x27\xcf\x26\x3b\x63\x3a\xb6\x5e\xcb\x7f\x5c\x26\x6b\x80\x07\x61\x8b\x10\xac\x9a\xc8\x3d\xb0\xfe\xbc\x04\xfd\x86\x3d\x96\x61\xab\x6e\x58\x49\x47\x66\xf7\x1b\x9a\x86\x7c\x5a\x7a\x45\x55\xf6\x67\xc1\xaf\x2e\x54\x58\x8f\x16\x2a\x41\xce\x75\x64\x07\xcc\x41\x61\xd6\x07\xb6\xe0\x68\x29\x80\x93\x4c\xaa\x1b\xef\x03\x6f\x73\x30\xd9\xee\xf0\x1e\xcc\x55\x35\x83\xfe\xe5\x99\x4e\x53\x3a\x46\xca\x91\x6f\x60\xf8\xb9\x61\xae\x01\xd2\x0f\x7a\xbf\x0d\xf6\x14\x1b\x60\x4d\xe7\x33\xc6\x36\xb4\x20\x18\xcd\x5f\x1d\x1e\xf4\xf8\x4c\xee\x40\xfc"}, +{{0x31,0x01,0x0d,0x1d,0x67,0xeb,0x61,0x63,0x48,0xe8,0x47,0x92,0xb9,0x2d,0x5d,0xc1,0x28,0x55,0x3c,0xb5,0x2f,0x63,0x68,0x15,0x9f,0xe7,0xb8,0x16,0xcd,0x0e,0x7c,0x37,},{0x26,0x65,0x43,0xd9,0x67,0x87,0xca,0x90,0x1f,0xcf,0xf0,0x6e,0x6e,0x43,0x44,0x91,0xae,0x09,0x70,0x88,0x0a,0x5a,0x18,0x7d,0x53,0x5e,0xdb,0x19,0xdb,0x5c,0xab,0xeb,},{0x7b,0x1e,0xb6,0x77,0xc3,0xe5,0xe6,0xa8,0xb4,0xba,0x69,0xfc,0xb7,0xf6,0xb1,0x87,0x0e,0x42,0xa8,0xd5,0x89,0x58,0xa3,0x5c,0x67,0x4e,0x2d,0xb8,0x21,0x07,0x48,0x1c,0x4c,0x7b,0x37,0xf0,0xf6,0x89,0xd3,0x9d,0x9f,0x51,0xe1,0x81,0xb1,0x7b,0x11,0x08,0xc1,0x5a,0x3e,0x27,0xb2,0x9d,0xf3,0xa4,0x31,0x5d,0xcc,0x4f,0xaf,0x12,0x22,0x05,},"\x39\xf8\x9a\x5e\x7a\xa5\x30\xb5\x46\x3d\x49\x8f\x80\x35\xb9\x90\x9d\x55\xda\x52\x7c\xdb\xd4\xde\x6d\x22\x83\x79\xf0\x89\xe6\x08\xa9\x20\x7a\x2c\x5b\x9c\x42\x05\x1a\x60\xc8\xca\x3f\xb9\x7a\x1c\x06\xcd\x74\x7d\x9d\x07\x39\x97\x0c\xeb\x88\xce\x52\x6f\x97\x11\x40\xea\x2e\xc2\x1f\x09\x0b\xa0\x75\xbf\x89\x75\xfa\xa5\x08\xb1\xcc\x10\xef\xa4\x94\xdc\x17\x2e\x6d\x3d\x3f\x3f\x75\xdc\x8e\x0e\x96\xf0\x5c\x0c\xcc\xb2\xf9\x6e\x91\x1c\xfa\x7a\x2c\x82\xc9\x84\x50\x18\xbb\x1f\x9d\x75\xf8\x2e\x3d\xfe\x11\x39\x34\x7b\x2a\xc0\x58\xb0\x14\xac\x93\x76\x0c\x90\xf5\x56\x7a\xb5\xc4\xeb\xa0\x4b\x49\xfb\x09\xdd\xad\xd3\x05\xbe\x51\x1d\xfe\x05\xc9\x6e\xbc\x86\xfd\x67\xb5\xd0\xab\x57\xd8\x5f\x4f\xe5\xe2\xf0\xfa\x9d\x88\xa6\x8f\x0f\x6b\x6b\xc8\xbb\x94\x4e\xb3\xc0\xb1\x75\x57\xe5\x5d\x5e\xa1\x87\xd9\x22\xa4\x28\x13\xe6\x90\x57\xc9\xb6\xa7\xf7\x5e\x49\x92\x1b\x70\x79\xe5\x8f\x8a\x63\x71\x9e\xe3\xe1\xad\x10\xcf\x0e\x8a\x70\xc4\xf1\x54\x02\x18\xb7\x04\x94\xbd\x02\x9e\xe0\x2f\xf9\x72\x7a\x7d\x85\xd3\x77\x91\x9e\xc4\x05\x14\x79\xb7\x0f\x7c\xd6\x76\x77\x23\xfe\x42\xc1\xc7\x89\x9c\x2b\x7c\x1f\x70\x2d\xd6\xb4\xd1\x3b\x67\x2d\x48\x8f\x34\xa0\xe9\x69\xdb\x79\xcc\x2c\xb2\x52\x4a\x94\x8a\x8d\xe4\xc5\xb6\x23\xec\xd9\x0d\x6e\x82\xd9\x70\x33\xc1\x25\x63\x7d\x1c\xd8\xc8\x48\x03\xd8\xfb\xc0\x12\x84\x6f\xfe\x48\x4f\x6c\x02\x14\x92\x58\xf9\x46\x2f\xa1\xe9\x9c\x30\x7d\xd0\x06\x2f\xe0\xb6\xf1\x1e\xee\x40\xc2\x62\x9e\xf7\xc0\xf6\xa5\x10\x72\x59\xea\x5b\x9f\xfb\x6f\x29\xf1\x2c\x32\xf7\xb5\x22\x8c\xab\xc9\x86\xab\x66\x45\x0a\xf9\xdc\xc3\xda\x09\xd0\xe0\xb9\xa4"}, +{{0x8f,0xf2,0x39,0x8c,0xd5,0x1f,0x51,0xd4,0xc2,0xc5,0x78,0x69,0xa2,0x21,0x8b,0x84,0x86,0x82,0x20,0x31,0xf4,0x00,0x72,0x9f,0x4a,0xc4,0xd5,0x90,0x9c,0x48,0xba,0xfe,},{0xa5,0xa8,0x87,0x04,0xb6,0x86,0x77,0xbe,0x3d,0x16,0xc3,0xdc,0x00,0x52,0xcf,0xee,0x6e,0x2b,0x30,0xe0,0x86,0x09,0x05,0x9d,0x4c,0xba,0x52,0xc6,0xd9,0x60,0x61,0xfb,},{0x41,0x7a,0x64,0x78,0x29,0xc9,0x28,0x98,0xe5,0x20,0xff,0x53,0x11,0xda,0xa0,0xa1,0x39,0xcd,0x8f,0xff,0xcb,0x25,0xa1,0x8e,0x6d,0x9b,0x50,0xcb,0x52,0xcb,0xc3,0x54,0x24,0xc3,0x9e,0xbb,0xb5,0xd5,0xac,0x6a,0x6d,0x63,0xf1,0xf5,0x3c,0x4d,0xf2,0x12,0xf7,0x02,0x5a,0x8a,0xae,0xf8,0xe3,0x64,0x93,0xc8,0x74,0xc3,0xce,0x34,0x1a,0x0e,},"\x99\x39\x53\xe4\x7a\x34\x11\x88\xbc\x59\x29\x42\xe1\x55\x7a\xf2\x95\x46\xe4\xe9\x36\x8e\x2f\x1a\x5e\xe9\x80\x6e\x2b\xaf\x66\xb6\x19\x01\x91\xfc\x5d\x2b\x7e\x47\xde\x37\xff\x05\x4f\xb2\xbb\xb1\xf0\x31\x68\x4a\xda\x5d\x60\x7a\xdd\xa3\xd6\x54\x33\x12\x2f\xa9\x04\xe0\x45\x6f\xaa\x84\x10\x9b\xbc\x51\x7f\x8a\xd3\x96\x60\x87\x63\x82\xad\xcf\xed\x0f\x76\x20\xcf\x11\x64\x62\x2e\xac\xd9\x1e\xb3\x7a\x85\x96\x46\x2e\xbe\x9e\xbe\x26\xbd\xc1\xe3\x2c\xc3\x4a\xd4\x6f\xb1\xce\xa4\x20\xe7\x3c\x31\x21\x54\x08\xe6\xd3\x54\x25\xf4\x4a\x82\x9b\x13\x2f\x63\x1a\x3f\x6d\xd4\xb8\x73\xa0\x00\x66\x7e\x19\xeb\x22\xff\xfd\x59\x03\xaa\xa7\xd4\xc8\xfd\xf2\x19\x53\xc3\xc6\x17\x8f\x5f\x8c\xb2\xaa\x6b\xff\x92\x89\x4e\xad\x83\x58\x88\xdf\x06\x0a\x3c\x90\x43\x02\x6e\x0e\x2c\xef\x27\x54\x97\xe7\xd1\x05\xdf\x3b\x64\x4a\x98\xf2\x6b\xf0\x01\x05\xc9\x94\x13\xee\x0a\xf8\x85\x19\x54\xd6\x5c\xeb\x8d\x79\xad\x30\x71\xb8\xbb\x87\xf0\xb1\x97\x43\xd2\x55\x6f\xfd\x98\x19\x83\x0b\x6e\xeb\xf7\xec\xc7\xe0\x45\x66\x1f\x43\x57\x0c\xe9\xfd\xbb\xe2\xd2\x52\x40\x6f\xa9\x0d\x04\x23\x6f\x22\x2c\x42\x9e\xc1\x6b\x12\x87\x22\x4a\xda\x1a\x53\x21\x61\xae\x8b\x48\x1b\xca\xb8\xd4\x7a\xfb\x3e\xd0\x44\x5b\x30\x60\xfd\x67\x59\x17\x98\x56\xf4\x08\x5c\x1e\x58\x5f\xd7\xc1\x40\x97\x99\xaf\x69\x3c\xf4\x27\xbd\x1d\x3d\xc1\x0b\x5a\xe3\x44\x7a\x8d\x2a\x18\xdc\x3a\x12\xa6\x86\x0b\x22\x17\x5d\xd5\xeb\x53\xa0\x95\x04\x32\xe2\xd7\xae\xfe\xce\x8a\xf0\xad\xe3\xd8\x56\x77\x43\xde\x43\x69\x0f\x2d\x25\x37\x23\xc5\xd7\xe4\x8b\xd3\x0d\x29\x37\x59\x37\x01\xce\xcd\xe9\x15\x4b\x76\x65\xcb\x61\x1d\x7d"}, +{{0xef,0x81,0x6c,0x8f,0x5e,0xc3,0x4e,0xf4,0x1f,0x68,0x83,0x1d,0x90,0xcd,0x29,0xe5,0x2d,0xe8,0x97,0x37,0x82,0xd0,0x03,0xee,0x4e,0xda,0xda,0x2a,0xda,0x26,0x91,0xd6,},{0x47,0xf9,0xb3,0x63,0xa8,0x8a,0x45,0x05,0x3a,0x05,0xbb,0x72,0x16,0x08,0x52,0xbf,0xe8,0xf7,0xdf,0xef,0xc2,0xf3,0x72,0x83,0xde,0x34,0x67,0x52,0xca,0xf0,0x92,0xcc,},{0x65,0xc5,0xd1,0x0e,0xa7,0xbf,0xdb,0xb3,0x8d,0x55,0x36,0x4a,0x99,0x68,0xf8,0x2b,0x54,0x82,0x24,0xdf,0xf3,0x36,0x3b,0x2d,0xdc,0xf5,0x85,0x16,0x3d,0xea,0x27,0xdc,0x63,0xb0,0x56,0x3e,0xb1,0xa8,0xdf,0xbe,0xe9,0x51,0xd3,0xc9,0xb3,0x3f,0xcd,0x6b,0xbf,0x09,0x21,0xc3,0xab,0xb2,0x17,0x86,0xb2,0x29,0x06,0x9b,0xd9,0xca,0x00,0x0a,},"\x95\x93\xc3\x5c\xde\xc5\x35\xbe\xbb\x69\x65\xda\x68\xea\xb0\xb6\x46\xbf\xfc\xfb\xd0\x48\x83\xbc\x4c\xef\x90\xd5\xd0\x1f\x01\x8c\x63\xc9\xb0\xdd\xfb\x3c\xef\x5e\x78\x62\x84\xd5\x21\x8c\xaa\xaf\x06\x0e\x92\x88\x95\x2f\x16\x30\x1e\xd8\xa4\xc1\xbc\xee\x25\x63\x56\xa0\xc8\xbd\xa3\x59\xfb\xaa\x27\x82\xb1\x0c\x86\xd1\x8e\x20\xf7\xa0\xec\x99\xb2\x7a\x0b\x4d\xbe\xfc\x0a\x26\x2a\x3b\xf6\x8f\xe8\x14\x44\xdc\xae\x5f\x69\x3e\xb0\xf1\x6e\x6e\xe0\x3f\x8f\xcb\xf3\xa3\x39\x81\x46\xd2\x0e\xc4\xd2\x65\x77\x61\xfd\x03\x20\xfe\xe7\xea\x70\x3c\x49\xa6\xa5\x43\xbc\x9b\xba\x91\x1e\x79\x25\x03\x87\x10\xe8\xc3\x65\x52\xd4\x76\xd6\x02\x7f\x58\xb2\xc5\x2b\xa5\x1a\xd6\x5e\xa4\xf0\x39\xc7\x8f\x96\xb8\x89\x10\x2b\xb4\xbd\xd6\x9b\x68\xe9\xc3\xd4\x5b\x51\x76\xa2\xd8\x2b\x0b\x95\xdc\x32\x10\x16\x37\x0d\xae\x30\xc3\x93\x65\x15\xdb\x04\x64\xc4\x17\x74\x30\x1c\x74\xe4\x2d\x89\xb8\xbf\x4b\x9c\x19\xed\x55\x4b\x12\xfe\xba\xc0\xf6\x0d\xdb\x32\x19\xcc\xc5\x60\x35\x31\xdb\xf2\xeb\x5f\x29\x34\x25\xd7\x2c\xce\xfa\x0c\x7f\x14\x4a\xba\x89\x34\x7b\x29\x6b\xe8\x7f\xf1\x89\x94\xb4\xa0\xc7\x0c\x93\x0f\x05\x93\x03\xb5\xdd\x4c\x8f\xe1\xe6\xbb\xc3\xcd\x68\xc6\xc0\xd8\x42\x46\xdc\x6e\x61\x40\xa2\xab\xd1\x78\x0b\x13\xf1\x59\x4a\x60\x19\xd1\x77\x8b\x7c\xbb\x3a\x3e\x3a\x34\xbf\xae\x72\x97\xf0\xb3\xed\xc3\x76\x94\x1c\x32\x35\x2a\x4b\xe3\x14\xb8\x4a\x9d\x8d\x6d\x7f\x1f\x38\xa0\xad\x37\x98\x02\x0a\xa2\xa3\x31\xa4\x02\xbe\x9c\x70\x44\x84\x74\x4a\x73\x0c\xbd\xed\xcb\x90\x4b\x6f\xde\x70\x8f\xbd\x14\xbf\xdc\x29\xef\xd4\x61\xd1\xd0\xb5\x82\x5d\xe0\xbc\x79\x42\x2b\x69\xa2\x72\x2f"}, +{{0x45,0xeb,0x0c,0x4d,0xfa,0xfa,0x2a,0x76,0x90,0xef,0x57,0x9c,0x09,0x54,0x56,0xce,0xed,0xcd,0x32,0xf0,0xb6,0x14,0x4d,0x0c,0x38,0x0f,0x87,0xfb,0x74,0x4a,0x0b,0x1f,},{0xfc,0x85,0x63,0x2c,0x98,0x38,0x4b,0x5f,0x96,0x82,0xae,0xd9,0xcd,0x66,0x4c,0xf1,0xf4,0x8e,0x58,0x8b,0xe2,0xd5,0x68,0xe5,0xc7,0x34,0x49,0x4d,0xf4,0xc7,0x12,0xb8,},{0x55,0x85,0x1d,0xe8,0xe1,0x09,0x2f,0x78,0x94,0x4f,0x6c,0x6d,0xd9,0x5b,0xf0,0x7e,0x2d,0xbc,0x8d,0xf7,0xf5,0x7a,0xd5,0x76,0x82,0x9b,0x97,0x8e,0x3a,0xf5,0x8a,0x7a,0x8e,0x94,0xed,0x4d,0xcc,0xbc,0x01,0x82,0x46,0x7e,0xdf,0x0b,0xad,0x4b,0xae,0x7c,0xa8,0x4a,0xa9,0xa0,0xc1,0x7c,0x61,0xa9,0xe0,0xdd,0xff,0x1d,0x75,0x25,0xd7,0x04,},"\x6f\x66\xd8\x47\x40\x5a\x03\xd7\xbd\x6f\x8d\x28\x97\xdb\xdf\x04\xe7\x6d\x7d\xf2\xd9\x47\x0a\x49\x96\xb7\xdd\x6d\xb8\x85\x00\xf8\xf4\xf8\x3e\x96\x0e\x21\x9a\x24\x86\xe2\x45\x45\xad\xd1\x36\x14\x55\x04\x14\xd8\x27\xc4\x1a\x9b\x08\x31\x8d\xaf\x01\xb1\x52\x14\xc6\x4a\x42\x66\xcb\xf8\xa5\x71\x7a\xda\x3e\x62\xc2\x67\x29\x07\x3e\x16\xdd\xbd\x66\xf2\xd5\x20\xe1\xe0\x99\x35\xde\x05\xe4\xdb\x11\xc3\x96\xd4\x77\x01\x0a\xec\x66\xaa\xfb\x76\x2e\x69\x23\x8d\x0b\x9e\x76\xb4\x52\x45\x4b\xf9\xe4\x51\xe7\x6a\xc7\x9e\x69\x90\xd4\x1b\x93\x2b\xc3\x29\x17\x09\x37\x83\xc9\x1b\xc9\xcf\x0b\xbe\x3b\x51\x40\x70\xa1\xe6\x92\xff\x34\xfd\x06\xb6\x6e\xa1\x1f\x39\xe1\x0a\xf9\x33\xee\x96\xd8\xe9\xb6\x77\xcb\x03\x73\x7e\x79\x64\xee\xaa\x72\x5f\x12\x12\x07\xf9\xc1\xb2\x6a\x96\xc6\x16\xdf\x7c\xb7\xca\xef\x47\xbd\xa9\x01\x36\x8f\xf2\xea\x58\x6e\x42\x2e\x65\xbf\x21\xa6\x91\xbd\xd2\xc1\x3e\x67\xff\xf5\x8c\xfb\xfe\xd8\x17\x82\x04\x9d\xaf\xa0\xf7\x27\xdf\x88\x62\x3f\x2f\x7e\x8f\x26\x2d\xaf\x93\x95\x42\xa1\x87\xb8\x72\x0a\x9b\x6b\x2b\x09\x89\x0e\x54\x87\x6b\x28\xa4\x38\x74\xab\xbe\x3b\xfa\x98\x1f\x81\x38\xb7\x72\xc5\xd5\x17\x36\x88\x5f\x86\xac\xac\x22\x15\xa0\xb0\x10\xdf\xc2\xc6\xb1\x50\x84\x5d\x4f\x82\x96\x25\x25\x86\xa3\xe1\x15\xf3\x03\xc3\xd8\xa5\x82\xe2\x0f\xd2\xd4\x3f\x6c\x44\x6e\x5d\x00\x28\x0e\xc1\x79\x82\x3b\x7f\xb4\xc1\xb0\xfe\xb9\x4e\xb4\xef\x17\x07\xf5\x18\x4e\x3b\x52\x46\x1a\x75\x62\xd1\xf3\x07\xcb\x75\x1c\xdb\xbf\x6e\xae\x49\xff\xae\x91\x86\x23\x58\xe7\x4e\x95\x48\x82\x2b\x8a\x04\x9f\xec\x6b\xf4\xc7\xa9\x9c\xab\xbe\x09\x20\x65\x77\xb6\x57\xe3\x1f"}, +{{0x70,0x9d,0x2e,0x19,0x90,0x06,0xf5,0x36,0x9a,0x7a,0x0b,0xdd,0x34,0xe7,0x4d,0xc7,0x84,0xbe,0x33,0x88,0x0e,0xa3,0xc5,0xdd,0x10,0xed,0x5c,0x94,0x45,0x1e,0x79,0x72,},{0x06,0xf9,0x89,0x20,0x2b,0xa2,0xcb,0xc9,0xc1,0x50,0xbe,0x61,0x12,0x62,0xac,0xa0,0x0c,0x45,0xf0,0x12,0xf8,0x9f,0xba,0xf8,0x9f,0x8c,0xec,0xcb,0xa0,0xb1,0x93,0x4a,},{0x62,0x9b,0xf9,0x7b,0x0c,0x78,0xee,0x6a,0x9c,0x87,0x59,0xfb,0xea,0x28,0x22,0x4e,0x27,0xab,0xbb,0x6c,0xbe,0x4d,0xea,0x5b,0xb7,0x97,0xe6,0xe0,0xfe,0x80,0xc9,0x13,0xf9,0x53,0xe3,0xa9,0xb6,0x23,0x35,0x2d,0x13,0xac,0xf4,0xce,0x62,0x50,0xfb,0x02,0x9a,0x1e,0x19,0x8d,0x72,0xbd,0x5e,0x74,0x02,0xe6,0x0e,0x9e,0x48,0xca,0x35,0x01,},"\x62\xf0\x03\x14\x0f\xa0\x9e\x03\x87\xd1\x87\xa0\xff\x96\xc4\x56\x3d\xf9\xf4\xe2\x8c\x22\x82\xc0\x18\x3a\xc3\xee\xde\x13\x12\x35\x49\x21\xf7\x80\xfc\xa5\x36\x1d\x30\x68\xd2\x99\x49\x63\x0b\x75\x30\xcd\x59\x14\xac\xe0\x46\x8d\x01\x4b\x6f\x53\xd8\x39\xb8\x2e\x38\x81\x7d\xbf\x2d\x83\x92\xc3\xce\x34\x24\xea\xb8\x6a\x24\xd8\x04\xc7\xac\xb1\xce\x7a\xcf\xe0\xa1\xcd\xa4\x39\x39\x24\x28\x31\x05\xda\x4a\x77\x41\x19\x6e\x02\x75\x50\x04\x7f\x85\xb7\xa0\xa0\x1d\x45\x41\x24\xef\xc0\xe2\x99\xf0\xef\x9a\xd1\x43\x50\x54\x30\x53\x48\x22\x61\x52\x8b\xaa\x56\xe6\x59\x99\xac\x80\x2c\x00\xa3\x36\x26\x7c\x63\x51\x06\xb2\x64\x03\xc1\x9f\x39\x1d\x53\xbd\x82\x86\x1d\x6d\x48\xa4\x38\x0b\x30\x43\xaa\x91\xd6\x49\x53\x68\x81\x20\x4e\xcc\xb0\xde\x20\xd4\x3e\x5a\x37\x55\xb7\xf6\x00\x91\x6e\xcc\xae\x42\xa0\xc9\x05\x3b\x46\x2d\x94\x17\xa1\x3d\x67\xd7\x78\x26\x4a\x89\x6e\x8e\xaf\x90\xba\xf6\x6d\x29\xe5\x43\x8a\x71\x67\x81\x12\x3a\x89\xfa\x9b\x8b\xee\xf9\x1d\x96\x5a\xf2\xf4\xa1\xa5\xbd\x5d\x2e\x2a\xaf\x46\xd5\xc9\x4b\x77\x09\xcd\xd3\x8d\x05\xfe\xee\x4b\xfb\x76\xa3\x59\x07\x7c\x16\xbc\x4b\xe9\x11\x6e\x69\x00\x12\x71\xcd\xa5\x65\xbc\x19\xbf\x47\xd4\xf9\x86\xbd\x9c\x0d\x18\x4c\xd8\xa3\x52\x0c\xa1\xbd\xb4\xb5\x05\xaa\xf7\xcb\x4e\xc9\xf9\x47\x89\x77\x9d\x30\x71\x4e\x79\x11\x6d\xd5\x01\x9d\x59\xb2\x8b\x17\xda\xd9\x6f\x4e\x21\x55\xad\x9c\x61\x27\x4a\xdd\xc6\xb6\x38\x10\x95\x04\xe9\xed\x19\xf4\xed\xa5\x37\x77\x62\x64\x8c\x40\x98\x22\x4e\x33\x91\x04\x3e\x4c\x2a\xd5\x91\x65\x4c\x9e\x7f\x97\x4e\xfd\xf0\xb0\x50\x4b\x6f\xa5\xf6\x46\xce\xcf\x44\xcd\x37\x24\x12\x37\x25\x05"}, +{{0x51,0x51,0x61,0x74,0x21,0xaa,0xdc,0x9c,0x95,0xa4,0x42,0xb4,0x5e,0x7f,0xf6,0xde,0x06,0xa2,0xc7,0x33,0xb8,0x5b,0xd7,0x89,0xfb,0xad,0x41,0x4e,0xe3,0xc9,0x1a,0xdd,},{0x14,0x94,0x1d,0x55,0x97,0x61,0xb3,0x0a,0xb0,0xa8,0x6d,0x47,0xe0,0xf7,0xd1,0x89,0x6b,0x33,0x78,0x45,0x27,0xc8,0x0a,0xf4,0x1c,0xb8,0x48,0x10,0xcb,0xff,0x9d,0xbf,},{0xfa,0xe4,0x77,0x3b,0x33,0x44,0x60,0xc7,0x7b,0xf0,0x1e,0xc6,0x36,0x6c,0x4f,0xe6,0x1c,0x0c,0xab,0x57,0xd8,0xa4,0xb0,0x39,0x09,0xc6,0x19,0xe1,0x1e,0xe3,0x46,0x1c,0x13,0xfa,0x21,0x57,0x6f,0x63,0x87,0x0e,0x42,0x3d,0xd0,0x41,0x81,0xe4,0xa7,0x01,0x3a,0x75,0x24,0xf2,0x46,0xfe,0x33,0x85,0x3c,0x67,0x41,0x62,0xa7,0x81,0x51,0x04,},"\x21\x6e\x9d\x40\xbc\xdc\x3b\x26\x50\x18\x8d\x12\x1c\x9f\x8e\xf2\x9e\x91\x4f\xac\xd0\x22\xfe\x01\xb9\x0e\xd1\x12\x25\xf2\xeb\x93\x53\x8e\x5f\xce\xe5\xab\x80\x45\xe9\x19\x9a\xa7\x6a\x16\xbd\xd0\x61\x68\x05\x66\x0e\x24\x7f\xec\xd7\xe2\x28\x21\xb6\x9b\x1f\x8e\x8a\x58\xac\x3f\xb8\x56\x91\xd7\x5d\x59\x57\xa1\xda\xf5\x3f\xf9\xee\x64\x76\xd7\xc4\xbc\x54\x1e\x6a\xd3\x8e\x3a\x34\xea\x90\xfc\x52\xa4\x8b\x93\x99\xf9\x2d\x17\xc9\xbb\x0d\x7f\xc3\x10\x4c\x55\xd0\xef\xb4\xea\x5b\x83\x1f\xf9\x49\x0b\x3f\x79\xf4\xd9\xd6\x99\x59\x4b\x74\x15\x66\xf2\xb5\x0a\x8f\xc7\x8c\xc4\x03\xfa\x40\xf5\xab\xb6\x63\x8a\x32\xf4\x49\xa8\xb3\xef\x02\x9c\x40\x2f\x46\x93\x1a\xd2\xbd\x3e\x8e\x68\x31\x08\x71\x4c\x98\x9a\xe2\x16\x89\xe9\xc4\x44\xb9\xf5\x5b\x81\x11\x9b\xb5\x03\x5b\xcf\x73\xe9\x7c\xe4\x3a\x22\x18\xc7\xbc\x3e\x43\x0d\x1e\x81\x4f\x34\xde\xe0\x57\x26\x5d\x31\x94\xb9\xf4\x38\x75\xd8\x38\x1f\x52\x5f\x78\x57\x6e\x64\xce\x69\x25\x84\xfa\xa3\x0f\xb7\x43\xa1\x2d\x1b\x77\x61\x4d\x2e\x10\xa6\xb8\x56\xb5\x2b\xe2\x7c\xdb\x63\x0b\xa1\xf0\xd3\xa6\xf8\xea\x98\x44\x54\x2e\x58\x4e\xa0\xa2\x77\x75\x27\xd0\xc5\x2a\xca\x94\x9a\xac\xda\x45\xad\x83\xd1\x6d\x5c\x83\xd6\x63\xad\xb7\x9c\xad\x6f\x3e\x39\xe9\x90\xfe\x28\x2a\x14\xc3\x53\xaa\x23\x79\xd7\xf0\x6a\xda\xb7\x4c\xea\x02\x1b\x89\x83\xa5\x7f\x1d\x0c\xf7\x03\x29\x2e\xb0\x5e\xce\x89\xc5\x3f\x3a\x12\x65\x61\x0e\x0c\x1e\xa8\xdd\xd4\x44\xd1\xff\xd6\xbc\x3d\x03\xf0\xa6\xe4\xd0\xdf\x5c\x5b\x8d\xc1\xf9\x5d\x9f\x55\x58\xb1\x18\xaf\xe6\xbe\xa0\xf6\xc2\x93\x13\x63\xf0\x3a\xb3\x4e\x75\x7d\x49\x36\x41\x74\xf6\x58\xef\xbb\xf3\x8d\xc1\x77"}, +{{0x38,0xbe,0xd4,0x45,0x55,0x6d,0xe7,0x44,0x82,0xbf,0x5f,0xec,0x05,0x06,0xf9,0xaf,0x33,0x0b,0x15,0x1e,0x50,0xd4,0x77,0x4d,0xfe,0x85,0x91,0xd7,0xb7,0xe0,0x27,0x6b,},{0x4c,0x0f,0x9c,0x49,0xa4,0x2f,0x40,0x47,0xbf,0xe6,0x88,0x55,0x51,0xc5,0xe4,0xb8,0x56,0xcf,0x77,0x1a,0x67,0xaf,0x3f,0x89,0xdb,0xf6,0x02,0xf9,0xdb,0x92,0x20,0xf3,},{0xf7,0x02,0xd0,0xd4,0x63,0x28,0x2f,0xc7,0xfd,0x5f,0x8f,0x90,0x29,0xb8,0x9c,0x62,0x6c,0xaf,0xd8,0x34,0x50,0xc3,0xbb,0x9d,0xd8,0xf6,0x58,0x9f,0x0c,0x4b,0x4b,0x71,0xf6,0x49,0xea,0x21,0x2e,0x5e,0x33,0x48,0x7c,0x59,0xc1,0x68,0xea,0x3a,0xd8,0x31,0x50,0xf1,0xfc,0xdf,0xe8,0xc5,0x3e,0xba,0x65,0xad,0xc2,0x02,0x3c,0x25,0x83,0x0f,},"\x0f\xf0\x03\x1d\xf0\xbe\xef\xf3\x71\x0c\x6b\x76\x3f\x9b\x8e\xc8\x17\x19\xbf\xa1\x52\x8c\xe4\x65\x19\xad\xf3\xd3\x41\x2d\x93\xfb\x18\x8f\xd4\x97\xd5\xd1\x70\x91\xc0\xf0\x34\x59\x60\xdd\x0e\xb0\xc0\x9f\xc4\x00\x51\x73\x66\x5d\x4d\x97\xf9\x5c\x13\x82\x8b\xc7\x6b\x34\x92\xb8\x7a\x4b\x64\x25\x3c\x8b\x5f\xa4\x7a\xa7\x5f\xa3\xb8\x6d\x5a\xbe\xea\x8d\xe5\x95\x9a\x60\x22\x89\x13\x6f\x60\xa6\x9b\x30\x9e\x77\x3b\x22\x55\xcd\xe1\x9e\xd2\xa2\xe1\x99\xc3\x3d\xb1\x1c\x16\xad\xe0\x8a\x31\x97\x50\xb8\x51\xd9\x2c\x69\x29\x24\xfc\x98\x59\xbe\x52\x34\x31\xcb\xe7\x8e\xc0\x92\xdb\x11\x29\x21\x0e\xbb\xea\xa7\xc2\xa2\xc0\x00\xee\xb1\x05\xca\x03\x01\xa4\x8f\x3e\x45\xfd\xfb\x15\xb2\x75\xcb\xab\x83\xca\x5c\x99\xd7\x37\xa5\x85\x32\x0e\x9e\x3b\x31\x71\x79\xbd\x86\x46\x7f\xa9\x69\x4f\xcd\xb2\xac\x6a\xd3\x6e\xd7\x14\x48\x43\xdb\xc3\x4e\x42\x3d\x35\xaf\xd7\xd8\x97\x2a\x1c\x43\xc1\x99\xa1\x91\xab\xd6\xce\xba\x49\x36\xd3\x95\xc9\x95\xa3\xeb\x13\xcb\x05\x7f\x88\xa9\xdc\x94\x90\xfe\x98\x84\x5e\xe5\xd2\x6a\x89\xfb\x64\x2a\x2a\x51\x6d\xc3\x05\x6c\x54\xd3\x63\x72\x13\x36\x3a\x86\x28\xa4\x2a\x39\x5d\x94\x2b\x95\x4a\x89\xe8\xef\x7a\x74\x4d\x8a\xe5\xad\xac\x88\xc6\x16\xef\xaa\x90\xe2\x07\x72\x05\xa6\x0b\xaf\xfe\xde\x5c\x87\xbb\x14\xde\xad\x30\x62\x29\x49\x5f\x69\x8f\x3e\x49\x06\x16\x96\x6b\x16\x36\x38\x7d\x0d\x86\x18\x3f\x94\x5b\x24\xa9\xdc\xfc\xcf\x4d\x36\x72\x2c\xd1\x2e\xbb\x6b\xd8\xe7\x83\x25\x75\x2a\xfa\x2b\x1a\xbd\x13\xc4\xbd\xbc\xad\xd1\x70\x86\x91\x36\x82\x62\x42\xac\xfb\x72\x1d\xe5\xff\x27\xba\x8a\xa0\xc0\x18\xb2\x25\xed\x34\x04\x80\x3c\xe9\xfa\x2d\x50\x8d\x89\x44"}, +{{0x05,0x54,0x60,0xb3,0x2d,0xd0,0x4d,0x7f,0x4b,0x23,0x11,0xa8,0x98,0x07,0xe0,0x73,0xfd,0x55,0x65,0x65,0xa4,0x77,0x18,0x57,0xd8,0x82,0x79,0x41,0x30,0xa2,0xfe,0x5d,},{0x26,0x0f,0x8f,0xed,0x4b,0xba,0x30,0xb9,0xe1,0x2a,0xd8,0x52,0x3f,0xbb,0x6f,0x57,0xf0,0xa7,0xa8,0x82,0x55,0x00,0x61,0xf1,0xda,0x46,0xfb,0xd8,0xea,0x44,0x22,0x21,},{0x23,0xf4,0xf1,0x62,0x7f,0xba,0xbd,0x78,0x91,0xd7,0xd8,0x48,0x96,0x31,0xc7,0x23,0x1d,0x22,0xde,0x71,0x86,0x4e,0x26,0x2a,0xb4,0xda,0x84,0xea,0x8a,0x13,0xa6,0x0f,0xea,0xc4,0xdc,0xfb,0x18,0x12,0xf1,0x20,0x04,0x44,0xb7,0x75,0xf1,0x21,0xd7,0x26,0x6d,0x75,0x5c,0xe9,0xb6,0xa9,0xad,0x79,0x65,0x59,0xc0,0xa2,0x6b,0x51,0x6d,0x02,},"\x74\x07\xf9\x6e\xe3\xe7\x9c\x69\xd3\x6c\xe1\xf6\x4e\x4f\x18\x86\x55\xea\x68\xb9\x47\xe7\xe2\xbe\x97\xb0\x5e\xbc\x6d\x44\x39\xe9\x50\x27\x6e\xf3\xf0\xe6\xa0\x3d\xd4\x8b\x24\xf6\x69\x29\xb4\x9c\x15\x80\xeb\x46\x88\x07\xe1\xe7\xa2\x5e\xb9\xb9\x4d\xa3\x40\xc5\x3f\x98\x4f\x8b\x81\x60\x3e\xfb\x61\x04\x7b\xf3\xf1\x4b\x68\x6d\x97\x98\x00\x3d\x2f\x68\x58\x9a\x79\xeb\xfa\xd5\x44\x09\xc7\x1c\x90\xff\x67\xc1\x1f\xbd\x76\xcc\x72\xc2\xd1\x45\xf4\x58\xe4\x2f\x88\xb7\x5d\x25\x0e\xad\xca\xfe\x66\xbf\x37\xff\xc8\x37\xb6\x2f\xf0\x06\x68\x5b\x7f\x85\xa9\xd8\x75\xfc\x07\x8c\x82\xe6\x1f\xe3\x5d\x19\x22\x52\x7a\x55\x1d\xab\x62\xf9\xe4\x77\x49\x91\x46\xba\xd9\x12\x20\x3e\x66\x4c\x41\x7c\x36\x79\xc0\x2d\x87\x2a\xba\xc0\x03\x2f\x8c\xc7\x7f\x77\xbf\xe5\x4d\x33\x26\xfd\xee\x92\x76\xa4\x8e\xa4\xeb\x25\x13\x50\x40\x68\x82\xd0\x8c\x83\x0e\x76\x49\xfe\x68\x54\x55\x8a\x75\x13\xab\x2d\x8d\x2a\xc3\xe5\xce\xd8\xa8\x08\xd2\xae\xe4\x54\x77\x9e\xda\xbd\x1a\xa6\x3b\xb1\x9f\x71\x8f\x47\x0b\xdc\x84\x51\xcd\x9b\x29\x49\x41\xe3\x49\x70\x63\xb1\xe3\x9b\x6c\xa1\x84\x56\x2f\xe8\x38\xcb\xfe\xee\x92\x2d\xe2\x4d\xdf\xcf\x98\x82\xc5\xe6\x15\xb1\x1b\xf9\x04\x81\x7f\xbd\x64\x71\x39\xdb\x80\xb4\xe8\xfe\xb3\x7f\x11\xe1\x85\x2d\x7e\x87\x6d\xb9\xcb\x63\xc9\x4d\x7e\xe3\x41\x92\xf7\x20\x0b\x5b\xc7\x7a\x03\x11\xae\x43\xb8\x06\xeb\xd4\xc2\x89\x6c\x53\xf5\x8f\x7e\xbc\x16\x25\xcb\x20\xd7\x10\x7e\xf9\xdb\x0d\xa2\x87\x88\x52\x3d\xe9\x91\xef\x6c\x58\x66\xb1\x8d\x8d\xe8\x3a\x95\x4d\x32\x81\xe0\x6d\xbf\x27\xc4\xf2\x38\x2e\x08\xcd\x0e\x0f\x6e\xba\xe3\xf9\x61\xb7\x7f\xce\x5a\x95\xa9\xb0\x62\x1b\x75\x6f"}, +{{0xe9,0xf6,0xd3,0x1b,0x93,0x69,0x42,0xc5,0x26,0xe0,0xf9,0xec,0x4f,0x5a,0x7a,0xc2,0x5f,0xa7,0x89,0xe0,0xc4,0x34,0xbc,0xd9,0x19,0x9d,0x72,0x0c,0x74,0x3c,0x84,0xc4,},{0x32,0x12,0x6d,0x26,0xe2,0x82,0x31,0xc5,0xb5,0x85,0xb1,0x3f,0x43,0xa0,0x1c,0x6f,0xe5,0x42,0x94,0x6b,0x07,0xd3,0xa9,0x1e,0x57,0xd2,0x81,0x52,0x3f,0x5c,0xb4,0x5c,},{0x7e,0x3b,0x1c,0x4c,0x71,0x6c,0x80,0x8e,0x90,0xb9,0x74,0x45,0x89,0x15,0xf3,0xb2,0x23,0x9c,0x42,0x07,0x71,0x19,0xfe,0x27,0x07,0x88,0xfa,0xe5,0x20,0x57,0x8b,0xd7,0xda,0x64,0x88,0x04,0x41,0x32,0xe1,0xbe,0xf2,0x3e,0x3b,0x23,0xc3,0x4d,0x9c,0x18,0x62,0x74,0x4f,0x28,0xfc,0xae,0xcd,0xa6,0xca,0xc0,0xfd,0x72,0xb9,0x3b,0x6a,0x0f,},"\xe8\x81\x33\xf3\xd1\x76\x42\xd5\xc2\x27\x79\xa8\x53\x16\xba\x0d\xf3\x4c\x79\x2b\x4e\xfe\xe4\x9e\xd7\xdd\x93\xca\x33\x22\xef\x47\xc7\x2e\x5b\x2e\x45\x95\xc7\x78\x00\x43\x4b\x60\x71\x9a\xdf\x54\xe4\xc1\xa3\x4c\x89\xfa\x1e\x27\xee\x8d\x35\xa0\x92\x1f\x97\x55\xac\x4a\x77\xa6\xc1\x68\x4e\xa0\xf5\xc8\xee\x5f\x75\x9c\xe5\x9b\xfe\x83\x15\x80\x0a\x67\xaa\x6c\x64\xdd\xfa\xac\x92\xea\xbe\x6c\x2c\x61\x37\x79\x78\x4b\x3a\xff\xaf\xcc\x62\x0f\x2a\x6d\xc5\xcb\x8d\x8d\xc7\xd7\x4a\xa4\xd7\x94\x94\x67\x84\x94\xe5\xe6\x39\x4c\x43\x3c\x14\x80\x9f\xf4\x0c\x9a\x59\x2d\x0d\x69\x4a\x81\x10\x3b\x44\x53\x1e\x1f\x48\xbc\x13\x96\x5d\x15\xaf\x8b\xf3\x34\x04\x88\xf8\xcd\x58\xf0\x9a\xe1\xa6\x61\x6b\xf8\x5a\xc9\xde\x7e\x0c\x66\x96\xaa\x2f\x1b\xec\x15\xe1\x7a\x44\xda\x4a\x84\xed\xb4\xec\x6d\x77\x24\x77\x88\xba\x0d\xe3\xae\x12\xa1\x55\xcb\xed\xc0\xda\x2f\x56\x8e\xef\x0b\x75\xa8\x77\xea\x5b\x0c\x2c\x0d\x4b\xf2\xc6\x1d\x46\x8a\x46\xfa\xad\xfa\xec\xe3\x5f\xc2\x63\xa9\xbe\x99\x87\xf4\xf7\xf7\x8f\x05\xc7\x07\x78\x43\x78\xc7\xb8\xf7\xda\xf9\xac\x3a\x12\x2a\xad\x39\xa1\x67\x79\x66\xda\x9e\xf2\x86\xc9\xe0\x62\xc4\xf4\x39\xad\x0b\xdd\xea\x26\xe5\x4b\x2f\x73\x88\xe2\x38\xb2\xa6\x49\x28\x45\x0d\x34\x56\x4c\x5a\x44\x7e\x7a\xfb\xbe\xdd\x10\x85\xf1\xf2\x4c\x11\xae\x08\x43\x22\xd1\xa3\x2c\xf8\xaa\x47\x39\x41\xf0\x0d\x56\xb1\x61\x82\x13\xca\xb3\x90\x0a\xa6\x06\x46\x3d\x9f\x80\x0e\x92\x6f\x9f\x42\xd4\xb0\x82\xd8\xc5\xec\x3a\x4a\x02\x5b\x45\xf9\xaa\xdc\x8b\xcb\xd1\x70\x91\xb3\xda\x49\xe9\x45\x3d\xc5\x5e\x89\xb5\xb5\xfe\x6b\x31\xf5\xed\xda\xd1\x0b\x66\x01\x57\x25\x68\xd8\xe2\x05\xd3\x25\x1a"}, +{{0x6b,0xf4,0xca,0xaa,0xbb,0x96,0x85,0x4a,0x38,0xa5,0x72,0xf4,0xce,0x6c,0x78,0x38,0xf7,0xe7,0x50,0x11,0x8c,0x73,0xf2,0x72,0x35,0x82,0x61,0x8e,0x23,0x07,0xf8,0x38,},{0x08,0x12,0x63,0x73,0xd0,0x56,0xf0,0x0e,0x54,0xb8,0xd4,0x3d,0x77,0xc3,0x5f,0x5f,0x91,0x98,0x33,0xe9,0x0d,0x8a,0xaf,0xd6,0xc8,0x24,0x6d,0x27,0x91,0x7a,0xd0,0x91,},{0xd2,0x11,0x3f,0x80,0xd6,0xcf,0x92,0x84,0x86,0xa2,0x50,0xa6,0x79,0xd6,0xe7,0x4b,0x35,0xea,0x9d,0x26,0x06,0x1f,0xa9,0x4d,0x76,0x9e,0x1a,0x8f,0xbf,0xa0,0xa7,0x34,0x22,0x7f,0x55,0x53,0x7e,0x4e,0xbf,0xf5,0x93,0x36,0xdb,0x14,0x1c,0xf5,0xd6,0xd4,0x82,0xa0,0x71,0x1f,0x1e,0x9f,0xc7,0x2f,0xf7,0x09,0x56,0xa1,0x1b,0x4f,0xb9,0x09,},"\x47\x76\xe9\xd6\x00\x85\x48\x1f\xa5\x37\xbf\x29\x5b\xda\xbd\x8b\x1c\xf6\x32\xa8\xcd\x40\xbc\xe6\xbd\x32\x5c\x12\x9f\x97\x70\x00\xe8\x84\x68\xeb\xf2\xdc\x15\x8a\xc0\xf2\x07\x21\x2d\xb0\x0f\xb6\x0b\x8e\xc8\xba\xe2\x29\x37\x2e\x9a\x6b\x01\x53\x0a\x7e\xd1\xbc\x9d\x38\x9e\xc8\x91\x3f\x59\x03\x0d\x5b\x54\xaf\x56\xae\x1c\xcc\x28\xf3\x7c\xc9\x6a\x8e\x53\x20\x4e\x92\xa6\x77\x76\x6a\xdf\xaa\xda\x99\xb0\x28\x1f\x86\x7f\x61\xac\x9f\xf7\xd9\x72\xee\x3e\xd4\x27\xd7\x2f\xaa\xe7\x5d\x4a\xec\x01\xb5\xff\xc3\x70\x61\xb6\xf0\xf7\xe5\x71\x4c\x4c\xf3\x0d\x5b\x73\x1b\x07\x46\x06\x5f\x19\xe4\xc8\x92\x2d\xde\x64\x2f\x80\xfe\x24\xa3\xc8\xdc\xb2\xe5\xf1\xc2\x66\xe2\xaf\x6c\x37\xde\xcf\x55\xa2\xba\xa5\x4f\x0d\x5c\xf0\x83\x93\x70\xc3\xe0\xb4\xe7\x7a\x4f\x36\xbb\xb3\x16\x20\x14\x93\x3a\x4a\x4e\xbc\xae\x8c\x60\x96\x1a\xc6\xdc\xf1\x34\xf3\x08\x28\xd3\x14\x02\xae\x74\xe7\xe8\x51\x3c\x9d\x2a\xd8\xee\x46\xb7\xa9\xd5\x3a\x1f\x87\xeb\xfc\xe0\x4f\x46\x1b\xde\xd1\x74\x9b\x6f\xc4\xc4\xf2\x57\x93\x52\x56\x92\xd7\xa0\xe4\x26\xc8\x4e\x06\x08\x2c\xc3\xe6\xab\xb5\x13\x68\x37\x0c\xbb\x10\x6c\x7a\x08\x97\xf6\x6d\x92\xc9\x73\x9c\xff\x9f\x27\x06\xd6\xa2\x98\x0e\xce\xa3\xac\x49\x45\xf0\xf4\x7e\x65\x6b\xd9\x63\x77\x77\xe8\x53\xd2\xa8\x39\x10\x43\x27\xdc\x04\x9e\xbc\x34\xf0\x49\xd6\xc2\xf8\x0e\xca\x99\xdb\x7b\x41\x84\x24\xac\xef\x75\x22\x60\xd2\xd4\x27\x94\x93\x23\x99\x7c\xd9\x61\x7e\xdf\x50\xd4\x41\xd0\x08\x8b\x1d\x47\x91\x2e\x35\xcf\x54\x23\x15\x26\x58\x29\xf3\x83\xf4\x58\x60\xd3\xb4\x5e\x73\x5b\xb2\xf8\x58\x6d\xcf\x58\xdb\x4f\x2a\xcf\xb4\xa6\x88\x53\xa9\x6e\xed\x7b\x89\x76\x9d\x36\x56\x13"}, +{{0x5d,0x95,0x85,0x73,0x6a,0xb2,0x09,0xb0,0xab,0xe8,0xbf,0x74,0xac,0xa4,0xee,0xa4,0xf6,0xd1,0x65,0x0b,0x53,0x25,0x50,0xa2,0x23,0xe0,0x44,0x58,0x0f,0x8e,0x20,0xde,},{0xe7,0x77,0x29,0xed,0xfd,0x21,0x44,0xb2,0xb1,0x20,0x78,0x76,0x54,0x17,0xfa,0x21,0xf1,0x59,0x4f,0x09,0xb2,0x69,0xe9,0xb6,0x70,0x68,0x02,0xb4,0xf3,0xbd,0xfe,0x85,},{0xe7,0xb0,0x8e,0x1d,0x58,0x09,0xfd,0xd8,0x52,0x94,0x43,0xd6,0x5a,0xda,0x5d,0xd6,0x55,0xea,0x55,0xb5,0x41,0x5a,0x01,0x13,0x93,0xbe,0x70,0x71,0x67,0x64,0x86,0xd3,0x58,0xe8,0xd2,0xa4,0x60,0xeb,0xe0,0x75,0xb0,0xe7,0x01,0xb2,0x4c,0x9e,0x3a,0xb5,0xf2,0xb0,0x33,0x59,0x2d,0x4d,0xe3,0xb7,0xf3,0x7f,0xd5,0x41,0xf6,0x92,0x09,0x09,},"\x08\x69\x35\x91\xe6\xc5\x8a\x5e\xad\x9c\x85\xfe\x8e\xc5\x85\x08\xf8\x1a\x34\x67\x63\x6c\x2d\x34\xfc\xc1\xf4\x66\xe5\xc6\xda\xfd\xc3\x7c\x35\xcb\xee\x35\x58\x9c\x69\x97\xe2\xb1\x54\x48\x13\x27\x44\xe5\xa1\xe1\x31\xbb\x49\xbf\x5c\x25\x63\xf8\x7e\xad\x3e\xfe\x01\xe8\x8c\xbf\x24\xcc\x17\x69\xc7\x8c\xdf\xc1\x67\xe3\x78\x21\x5b\x15\x85\x9c\x7a\x28\xec\xe7\x0e\x18\x8f\xa3\x30\x26\x7d\x3f\xc5\x7b\x4a\xce\x6c\x15\x20\xec\x67\x87\x50\x67\xfd\x33\xbe\x86\xf4\xa1\x96\x7a\xfb\x3e\xb1\x64\xc7\x97\xcf\x28\xd8\x07\x2a\xa6\x9d\x82\xaf\xa3\x83\x74\xf8\xe5\x79\x7c\x4c\x28\x47\x1b\x7d\x69\xf5\xb9\xc7\xb4\xac\xdb\xc1\x9f\x3c\x5c\x5d\x40\x08\x08\xa9\x82\xa4\x78\x37\xae\xd1\xb3\x84\x1d\x69\x89\x0e\xeb\x31\x49\x4e\x10\xe3\xe5\x13\xd1\x2d\x0c\xa6\x86\xc7\xce\x65\x17\x78\x09\x27\x03\xfe\xf0\xdc\xc0\x21\x40\x77\xdf\xb3\x61\x25\x1b\xde\xa4\x36\x4d\xd4\x1b\x97\xbc\xeb\x0f\xb1\x47\x5a\x50\xe4\x70\x8f\x47\xf7\x87\x8c\x74\x40\x1e\x97\x71\xcc\x3f\xce\xac\xe8\x91\x69\x98\x1a\xa7\x72\x50\x85\x00\x90\xd1\x81\xd8\x35\x8e\xbb\xa6\x5e\x29\x0a\xcb\x03\x52\xbe\xce\x8c\x57\x98\x32\xa6\x01\x55\x18\x16\xd1\xc0\x56\x21\xcc\xbb\xee\x0f\xbe\x39\xea\x2f\x19\x53\x93\x19\x9e\x69\xc2\x34\xc2\xfb\x1c\x37\xe4\x74\x84\x08\x60\xce\x60\x91\x61\xfc\xfc\xe2\x86\x95\x74\xbe\x0d\x38\xf9\x5e\x20\xf4\xf8\x72\x52\x47\xb9\x62\x7b\x46\xe8\x34\x90\x51\x01\xac\x12\xb9\x34\xcb\xf8\x7c\xb2\xd1\x90\xd2\xf5\x14\x90\xa8\x2c\x4e\x81\x0e\xdd\xb8\x1f\x95\x6a\x9f\x36\xbd\xa4\x97\xbc\xa5\x06\xa4\x9e\xe9\xcd\x47\xfd\xa5\xb7\xf2\xb8\x84\xa3\x64\x8c\xad\xd1\x2a\xb6\x18\x98\xad\xa4\x6e\xcc\x97\x0f\x81\xdc\x9f\x87\x68\x45\xdb"}, +{{0x60,0xb1,0x42,0xf1,0x65,0x11,0x41,0x43,0xca,0x30,0xa6,0x04,0xfe,0xf5,0x1c,0x68,0x64,0x36,0xaa,0x1b,0x9a,0xfd,0xb2,0x66,0xb3,0xe3,0x98,0xcc,0xb3,0xc4,0xd8,0x55,},{0xea,0xf6,0xc5,0xa7,0x6c,0xa9,0x9b,0xf7,0x30,0x64,0x98,0x88,0x8c,0x3b,0x7a,0x1f,0xea,0xe9,0x8b,0xf8,0x98,0x8d,0x7f,0x2e,0x15,0x47,0xf8,0xf5,0x3a,0x45,0x28,0xaa,},{0xa6,0x21,0xf0,0x84,0xea,0x1a,0x36,0xef,0x81,0x2a,0x97,0x55,0xc9,0xaf,0xbb,0x53,0xda,0xda,0xae,0x6b,0x3a,0x53,0xfa,0x83,0x44,0xca,0x40,0xd3,0x61,0x2a,0x26,0x8a,0x35,0xfe,0xd0,0xfd,0x39,0x8a,0xb7,0x5b,0xcd,0x63,0x9c,0x54,0x79,0x37,0xc9,0x41,0x55,0xab,0x1a,0x7a,0x34,0x67,0xdd,0x4b,0xfd,0xdf,0xac,0xab,0x16,0x55,0xe9,0x08,},"\x18\x15\xde\xe1\x17\x3b\x78\x26\x47\x20\xd3\x5b\x7c\xc2\x45\x4a\x00\x0a\x65\xff\xf2\x14\xe2\x47\x3e\x20\xbc\x83\xf3\xec\xde\x9c\x04\xc1\xe0\x69\x6c\xe6\xe5\x55\x19\xdd\x2a\x75\xce\x04\x64\xbf\x60\x1a\xdc\x38\x1e\x79\x3e\xcb\x9f\x8c\xe7\xab\x87\xb6\xca\x2a\x3e\x41\x0f\x63\x90\x69\x45\x19\x78\xd1\x48\x73\xd3\x39\x0f\xab\x86\x23\x96\x97\x13\xc3\xdf\xcd\x58\xd8\x6d\x12\x40\x73\x76\x1e\xe0\x9a\x65\x2a\x48\x76\x7f\x96\x46\xcb\x72\x6a\xc4\x54\xac\x9a\x1b\xc5\xfa\xed\x30\x26\xb7\x03\x98\x2b\xc2\xb1\xe0\x75\x82\x10\xe1\xd6\x25\x19\x23\x0e\xb2\xb2\xf4\xa4\x86\xbc\x55\x16\x85\x60\xc4\x36\x3d\xf5\xff\x5a\xdf\xda\x11\xac\x7e\xf5\x1b\x18\x19\x6c\x94\x33\x7c\x07\xae\xf1\x17\x99\x0f\x77\x0c\x0f\x1e\x8c\x0f\x88\xeb\x6f\xfc\x40\xe8\xed\x7c\x3a\x80\xa6\x32\xdb\x1e\x7f\x63\xb6\x30\x96\xe2\xac\x49\xe5\x77\x92\xb3\x11\x43\xe2\xf4\xfa\xab\xce\xae\x66\xb2\x74\x71\x68\x1c\x36\xfc\x11\x39\x00\x7f\x9b\x54\x8c\xdc\x6e\x3b\x8f\xbb\xda\xba\x7a\x8a\xdb\x84\x34\x31\x23\x8b\xb4\x61\xba\x24\xf6\xe0\x9f\x62\xc7\x2d\x63\x77\xb4\x04\x8c\xb0\x13\x4c\x25\xa5\x41\x1a\x20\xbf\xcf\xc1\x3e\x48\xd8\x0e\x36\xbf\xb0\xda\x7e\x01\x85\xd3\x3f\x19\x28\x63\x6e\x15\xde\xe0\xe5\xdf\x89\x92\xa1\x65\x72\xb1\x3e\xa8\xf7\xcf\x85\xca\xe3\x2d\x52\x9f\x66\xe8\xf6\xd2\xfb\x2a\xd0\xbb\xfe\x71\x99\x16\x9b\x25\x67\xba\x00\xc7\x81\xb2\x0a\x48\xe1\xd7\x0d\xf9\xfa\x31\x19\xcd\x7e\x5b\xbe\x58\x88\x4b\x0b\x51\x21\x89\x40\xfa\x81\x5f\x85\x62\x5f\xa2\x03\x47\x1c\xee\x80\x84\x78\x0e\xb0\xb9\x35\x6f\x9f\x3d\x4f\x6d\xf7\x40\x30\x1d\x70\x7e\xf1\xff\xb3\x51\x9e\x3f\x90\xb8\x06\x4b\x98\xe7\x0f\x37\x5d\x07\x14\x26\x88\x17\x18"}, +{{0x73,0x4b,0xa4,0x70,0x33,0xc6,0x14,0x02,0x32,0xdd,0x4a,0x7a,0x14,0xf1,0xa7,0x74,0x3e,0xef,0xe9,0x07,0x0b,0xad,0x96,0x62,0x49,0x16,0x30,0xcc,0x9d,0x28,0xc1,0xf3,},{0x2f,0xa5,0xdf,0x30,0x26,0xd6,0x07,0x42,0xe2,0xaf,0xf6,0xb5,0x78,0x42,0xc7,0x12,0x68,0x46,0xc8,0xa7,0xbb,0xe9,0x26,0x6e,0xfa,0x7b,0x3f,0x23,0x98,0xc3,0x57,0xea,},{0x9b,0xd0,0x74,0xd1,0xd0,0xbd,0x28,0x00,0x1b,0xaf,0x7d,0x2d,0x4e,0x82,0x43,0x5d,0xf0,0x8c,0x42,0x64,0xd8,0xcb,0xb1,0xc3,0x81,0x18,0x3c,0x2f,0x01,0x22,0x3f,0x79,0xf9,0x49,0x23,0xca,0x17,0x8c,0xac,0x75,0x56,0x4e,0x16,0xc7,0xf5,0x60,0x79,0x08,0x8f,0x7e,0xd8,0x85,0xde,0x4d,0x50,0x9f,0xbc,0x78,0xf4,0x38,0xfb,0xa3,0xf6,0x07,},"\x5d\x3c\x65\x98\x10\xc3\xfe\xa5\x2a\x6d\xf3\x86\x1e\x5c\xdc\x5b\x70\x3c\xc1\xce\xf4\x85\x58\xc6\x1d\x8c\x51\xd0\xed\xea\x5a\x14\x79\xcf\xe5\x06\x3d\x82\xde\xd9\xca\x68\x1e\x57\x48\x88\x7c\x40\xec\xfb\x9e\x1a\x9a\x8b\x7f\x85\x09\xd1\x07\x76\x46\x1c\x39\x23\x39\x96\x93\xa7\x81\x89\x08\x91\x78\xd5\xaa\xbd\x15\xf8\xc8\x46\x64\x2b\xe4\x7d\x6d\x4c\xaf\x13\x82\x4e\xdc\xef\xb8\x09\x86\x8f\xa7\x2d\xdf\x03\x5c\x4d\xe8\xef\x0a\x9c\x83\x22\x64\xf6\x6f\x01\x27\x61\xce\x69\x55\xbc\x3c\x41\x6e\x93\xe2\x91\x88\x02\x5e\xbb\xb1\x3a\x55\x32\x58\xc1\xd7\xc4\x99\xc9\xa4\xae\xb1\x0b\xb3\x6f\x61\xd1\xbb\x4c\xec\x5a\xe5\x5d\x17\x57\x22\xb9\xa9\x69\x6d\xf8\x81\x95\x1e\x35\x20\x0b\x96\x53\xcf\x6e\xd4\xb3\xd1\x5d\xe0\x87\xa9\xd1\xc3\x19\xfc\xe8\x58\x21\x56\xbe\xbf\x3f\xc9\x1e\x0e\x61\x0f\xf7\xa1\x53\x08\xfd\x1d\x2c\x60\x69\xfb\xbb\x29\x47\xd3\x11\x07\x31\xd2\x45\xae\x29\x63\x01\x4b\xd7\x6d\xea\x42\xdb\x12\x5c\xec\xc4\x93\xc8\xe9\x09\x1a\x76\x64\x65\x77\x72\x9a\xed\x49\x66\xfc\xe9\x69\x9f\xe1\x2e\x36\x7d\x66\x5d\xf9\xe9\x5a\x91\x93\xe1\x13\x3e\x14\x3a\xf9\x2f\x82\xb6\x6a\xc7\x76\x4e\x50\x33\x17\x86\x90\x52\x18\x09\xa7\x10\x7d\x8a\xe9\xb8\x8e\x0e\xd1\xf3\x5b\x17\x19\x90\x1b\x93\x0a\xd0\xe1\xcb\xce\x7f\xb3\x02\x67\xb1\x15\x52\x04\xf6\x05\xf5\x25\xe4\x9d\xe2\x98\x8e\xa7\xf7\x4b\xe8\x81\x51\x77\xfd\x97\x6a\x1b\xcc\x12\x6d\x9c\x9c\x13\x5c\x5b\x42\x76\xd3\x80\x19\xc3\x4a\xef\xb7\xa0\x22\x0f\x7f\x5a\xef\xf3\x80\xae\xd6\x27\xb0\x70\xc2\xc9\xe2\x15\x33\xbb\x35\xc0\x8e\x39\x4c\x85\xae\x25\xe6\x86\x29\x42\x59\x9c\x65\xdb\xae\x59\x77\xa5\x84\xa8\x81\x80\xe0\xc8\xc7\x1e\x5a\x84\x09\xe0\x4e\xf7"}, +{{0x45,0xe3,0x4d,0x0e,0xf4,0xc1,0x96,0xfa,0x6d,0x57,0x2b,0x6b,0x17,0x74,0xb5,0x21,0x8f,0x7c,0x32,0x91,0x30,0x4c,0x13,0x50,0x0d,0xf7,0x07,0x0d,0x90,0xe8,0x03,0x9e,},{0x13,0xa7,0x30,0x4d,0xff,0x42,0x33,0x59,0x17,0x7a,0xba,0xfa,0x5e,0x65,0x08,0xd2,0x67,0x69,0xca,0x99,0xcf,0x8a,0xf4,0x5c,0x38,0x3f,0x3f,0xf6,0x34,0x40,0x60,0x03,},{0xb4,0x2c,0x1f,0x92,0x5f,0x4b,0xac,0xcd,0x12,0x9e,0xfb,0x10,0x9d,0xb3,0x54,0xac,0xa3,0x1c,0x68,0x98,0xf4,0xf4,0x51,0x29,0x47,0x49,0xa2,0x6a,0x6d,0xa1,0x67,0x7b,0xd3,0xa5,0xc0,0x41,0x19,0xe3,0x5f,0x47,0x31,0x9f,0x20,0xcf,0xdf,0xc0,0x8b,0xb4,0x52,0x8b,0x21,0x00,0x9e,0x00,0xbd,0x41,0xeb,0xc0,0xf4,0x68,0x63,0xbe,0xd1,0x0b,},"\x3d\x9e\xd5\xc6\x4b\x75\xe1\x35\xdf\x2f\x5e\x85\x30\x0d\x90\xf2\x1b\x36\x39\x35\xe2\x81\x75\x56\xfc\x93\x11\x75\x1b\xa7\x53\x54\x77\xde\xc8\x35\x6e\xc3\x85\xef\xb8\x2b\x41\x40\x62\xf3\x5b\xb6\xd3\xed\xea\xfd\xe3\x05\xf9\x90\x0a\x25\xe9\x81\x3c\x9e\xe0\x23\x7d\x46\x40\x96\x50\xcd\xcd\xb5\xdf\xa2\x30\x1a\x8e\x26\x47\xf8\xd3\x81\x9d\x86\xf7\xb7\xe3\x07\x0d\x33\x44\x0f\x82\xc4\x05\x4b\x1a\xb5\xed\xeb\xeb\x27\xf9\x5b\x3c\x4c\x6f\xdd\x46\x8f\x21\x60\x0f\x03\xb3\x49\x4d\xa2\x00\xba\xb9\x29\x3c\x38\xd0\x2f\xc4\x40\x48\xe5\x2f\xf5\xfd\x0f\x72\x17\xa0\x4d\x4c\xe9\x12\xa1\x80\xd1\x62\x8f\x36\x82\x80\xb6\x89\x26\x72\xe8\xff\x98\xd4\x62\x9a\xc2\x8b\x60\xc0\x2a\x30\x1e\x6c\x60\x26\xc1\xb9\xe9\xef\x21\xcf\x03\x92\xdf\x22\x50\x08\xd5\xa0\xe0\x28\x4b\x28\x26\x31\xad\x17\x10\xf8\x11\x61\x56\x97\x06\x6c\x98\x29\x65\x19\x94\x8a\x7c\xfe\xd5\xae\xeb\x45\x4e\xe7\xa6\x1c\xc2\x71\xbd\x3d\x49\x9b\xe1\x7d\xf0\x9d\x3a\x0e\x79\x0e\xe6\xb9\xbd\x99\xe1\xb9\x19\xbe\xd4\xa0\x63\xb8\xd1\xa3\x4f\x1a\xfd\x2e\x95\x2b\x9d\xfe\xfd\x77\x09\x69\xc8\xb2\xfc\x37\x97\x7a\xbb\x0f\xee\x63\x17\x25\x3a\x23\xec\xc9\x75\x78\x16\x89\x73\x33\x4c\x8f\x91\x76\x3a\xb9\x7f\x29\xc4\x9b\xae\xee\x7b\x35\xf3\xae\x7f\x5c\xd3\xa4\xa6\xe6\x97\xef\x25\x5a\x3c\x2e\xc0\xc7\x52\xa3\x39\x6f\x69\xf6\x63\xca\x1f\xc2\xb3\x32\xdf\xe6\xc0\xfa\xf7\x8a\xfe\x9c\x68\xd9\x95\x71\xe8\xe8\x96\xc5\x09\x30\x85\xe9\x86\x3a\x27\x64\x8a\x9e\x58\xf3\xa9\xa8\x4c\xbb\xfe\x2b\x41\xca\x36\x33\xdd\x5c\xf6\xe8\x2c\xb7\x7c\xec\xac\xad\x8d\x78\xb3\x53\xf4\x8d\xb4\x2d\x99\xc3\x6b\xca\xd1\x70\xea\x9e\x98\xab\xb2\x78\x8c\x33\xa3\xc7\x06\x26\x8f\x36\x31"}, +{{0x88,0x8c,0xe2,0xec,0xce,0xda,0x9c,0xa2,0xb9,0x48,0xac,0x14,0x43,0xc2,0xae,0xdd,0x75,0x95,0xaa,0xcf,0x36,0xed,0xaf,0x27,0x25,0x5b,0xde,0x7a,0x69,0x91,0xdc,0xc0,},{0x01,0x6e,0x57,0x2b,0x4f,0x98,0x41,0x7c,0x6e,0xe2,0x97,0xab,0xd7,0x84,0xea,0x48,0x22,0x6f,0xf4,0xfb,0xf0,0x05,0x0a,0x5a,0xde,0x88,0x06,0xe7,0x04,0x6d,0x3b,0xa3,},{0x99,0xd8,0x3f,0x14,0x8a,0x23,0x6e,0xbb,0xef,0x1c,0xad,0x88,0xcb,0x3c,0x76,0x94,0xf4,0x98,0x6c,0x92,0x50,0xe2,0x1c,0x36,0x03,0xa0,0xd9,0x41,0xbf,0xf1,0x99,0xcf,0x77,0xd6,0xce,0x99,0xef,0xdb,0x20,0x53,0x31,0x88,0xd6,0x8a,0xd1,0x33,0xde,0x03,0x3a,0x1f,0xb3,0x46,0x8a,0xbb,0x70,0x6d,0x2b,0x8b,0x4f,0xba,0xc0,0x8d,0xfe,0x03,},"\x5c\x80\x1a\x8e\x66\x4e\x76\x60\x76\x0a\x25\xa5\xe1\x43\x1a\x62\x15\x9f\xc3\xf3\xaa\x71\x37\x80\xae\x7c\xbc\xe2\x3b\x85\x64\x78\x27\x99\xbf\x2b\xe4\x81\x7e\xe2\x92\x19\x65\xba\xb7\xe1\xd4\x48\x33\x82\x4c\x16\x28\xd4\x2d\xce\xe3\xe4\x6a\xe4\x2b\x28\x16\xd0\xa4\x32\xa1\xab\x0b\xd2\x1f\xcf\x30\xad\xb6\x3d\x8d\xd7\x65\x69\x54\x43\x43\xd0\x03\x5c\x76\x05\x22\xca\x68\xbe\xa7\x2c\x40\x4e\xdd\xa1\xe9\x09\x5e\xc9\x0f\x33\x25\x68\x1c\x6d\xe0\xf4\xc1\x2d\x1a\xfb\xcb\xa2\xc7\x87\x1a\x1b\x1e\x1f\x19\xc3\x5b\x0b\xed\x9e\xc2\xa8\x7c\x04\x3d\x36\xd8\x19\x39\x6b\xd5\xd0\x99\xe1\xaa\x09\x03\x91\x29\x7c\x73\x3f\x65\xa8\xc5\xd2\x12\x0c\x67\x63\x53\x16\xfa\xb2\x5b\x4d\x48\x47\xa4\x5f\xc3\xf7\x6f\x2e\x24\x26\xdb\xee\x46\x29\x97\x50\x62\xfc\xe1\x4e\x21\x89\xdb\xa2\x7f\xb1\xde\xd2\x45\x3f\x00\x1d\xeb\xfa\xa8\x99\xc1\x16\x60\x61\x2d\x2c\xe2\xad\x2f\x76\x2e\xa5\xde\xe7\xe7\x1e\x58\xad\xcd\xce\xfa\x79\xe8\xe8\xb2\x7f\xc4\xcc\xf8\x9a\xab\xf1\x76\xb5\xd3\x4f\x82\xdd\x15\xd8\x89\xf9\xf0\x87\xdc\x9a\xe8\xa4\x2a\x72\xf3\xb8\x35\x83\x61\x6e\x17\x06\x37\xcd\x1a\xdf\x38\xaa\x65\x51\xcb\xac\xca\x36\x02\xbd\xc7\xae\x21\x0c\x4a\x44\x6b\x3a\xf8\xdb\x27\x20\xe5\x49\xbb\xed\xb8\xbe\xd2\x15\xae\x00\xf1\x9d\xa2\x9d\x8f\xb0\xb6\x42\xd2\x7b\x2d\x88\x57\x5f\x0e\xe8\x4f\x3d\x12\x9e\xb7\x74\xd2\x0f\x53\x7a\x1c\x0f\xdc\xf7\x17\xbd\xeb\xcf\xe4\x7f\x83\x31\xa3\x41\x86\x43\x46\xfa\x6a\x1c\x6b\xbf\xd1\x78\x81\x9e\x38\x7a\x0d\x54\x99\xa6\x8e\x81\xcc\x9f\x82\xad\x39\xe3\x1e\x4d\xfe\x71\x95\x2d\x5e\xa5\xcc\x80\x52\xa3\xce\xed\x17\x51\xf5\x9d\xc7\xec\xc9\x74\x2f\xad\x14\x4e\x18\xdd\xa8\xd0\x58\x2e\x74\xe3\x9c\xa8\xc4"}, +{{0x61,0x73,0x90,0x85,0x7d,0xc1,0x0c,0xdf,0x82,0xb5,0xc9,0x42,0x61,0xf5,0x8c,0xe2,0xd4,0x4a,0xa2,0xf5,0x7d,0x29,0x8f,0x08,0xa2,0xd6,0xc7,0x4d,0x28,0x14,0x7d,0xaf,},{0x89,0xe0,0xc3,0xe0,0xa0,0xf1,0x30,0xd1,0x91,0x6e,0x0e,0x38,0x49,0xb7,0x28,0x6f,0xa2,0xe3,0xac,0x4c,0x17,0xbd,0x1f,0x71,0x6e,0xe5,0xa7,0x2f,0x02,0x57,0xfb,0x8d,},{0x63,0xe9,0x0a,0x6a,0xfb,0xbb,0xb0,0xee,0x69,0x6b,0xfb,0x56,0xef,0xd6,0x79,0xd6,0x8a,0x98,0x51,0xa8,0x94,0x76,0x40,0xa9,0x7f,0x41,0xf6,0x8e,0xdf,0xea,0xdd,0x21,0x6e,0xd8,0x69,0x8e,0x2e,0x43,0xc8,0x20,0xc9,0x04,0x4c,0xaa,0x7a,0xda,0xab,0x5b,0x76,0x76,0x2b,0x68,0x18,0x31,0xa9,0xf7,0x60,0x47,0x6a,0x84,0x43,0xc4,0x3c,0x06,},"\x1f\xd9\xe7\x45\x3e\xaf\xfd\x7c\x9b\x54\x05\x56\x22\xdd\xe1\x70\xdd\x58\xb7\x1c\xb9\x45\xde\x75\x35\x1d\x5f\xce\xb1\xf5\x36\xbd\xe2\x51\x58\xf0\x37\x86\x15\x5f\x95\x3d\xc2\x07\xa1\x70\x8f\x90\xd9\x5b\x15\xac\xa0\xae\xe3\x09\x7f\xdc\xaa\xe8\x5e\x4a\xb1\xc2\xcd\xb7\x05\xc5\x3e\x6c\x2e\xd2\x1a\x99\x4b\x30\x4a\x75\xca\xf2\xce\x4f\xc7\xd6\x1f\x56\x1e\x74\xe2\x97\x39\x7e\x2c\xde\x5c\xc6\x90\x56\x94\x03\x43\xaa\x81\x37\x5d\x0a\xf1\x8d\x17\xd2\xf3\x4c\x0a\x71\xdc\xf1\xde\x3c\x4f\xc4\x88\xa1\x4c\x5f\xa6\xb3\x33\x7a\x31\x74\xb1\xda\x79\x58\xfb\x00\xbd\x59\x55\x14\x82\x21\x42\x7c\x60\xdb\xa0\x41\x17\xc8\x0d\x24\x88\x65\x6d\xbd\x53\x43\xde\x89\x12\x87\xb5\x0e\xf4\xdf\x98\x25\xed\xa7\x6b\x49\x77\xf3\xac\xd4\xab\x6d\x31\x02\xfa\x56\x87\x83\x06\xcd\x76\x56\x14\x91\xbc\xfd\xaa\x1d\xa5\x67\xe6\x77\xf7\xf0\x3b\xae\x5d\xbf\x44\x26\xc3\xc4\xa6\xc3\xd0\x82\xf9\x17\x8b\x2e\xfd\xd2\xbd\x49\xee\xe9\x7e\xf4\xdc\xf3\xf0\xf5\x1b\xbd\xef\xfe\x5a\xe6\x60\x1e\x28\x01\x95\x18\xf8\x27\xf0\x2e\x51\xf6\x67\x9b\x87\x15\x97\x8b\xec\x3e\x69\xd5\x77\x15\x6d\xd7\x19\x95\x93\x71\xba\xf0\x34\x21\x9f\xbb\xd1\x7a\x23\x69\xa8\x54\x14\x90\xf6\xa0\x20\x13\xe3\x3e\x74\xf4\x76\x9b\xe3\x7a\xef\xa4\xde\xfb\x6b\xfb\x3f\x35\x1c\x2a\x26\x14\x82\xc2\xfb\xec\x49\xf8\x5f\x84\x45\x45\x6e\x8f\x5a\x47\x40\x30\xcd\x72\xd0\x95\xef\x6a\x62\x20\x30\xe1\xe4\x3a\x0c\x5d\xeb\xb0\x34\x73\x1d\x2f\x5e\x8e\x4b\xa3\x99\x0f\x07\x7d\x0c\x16\x26\x49\xd1\xfa\x3e\xa4\xfe\x1e\x81\xd7\x4a\xa8\x49\xe2\x1b\x05\x9d\x96\x6c\xba\xd4\xc4\x93\xca\x10\xba\xfe\x7a\x69\x24\x3e\x3c\x0a\x6e\xbf\xd1\x3d\x69\x79\x06\x30\x33\x92\xba\x65\xd4\xfe\x06\xb6\xa5"}, +{{0x87,0x7d,0x01,0x74,0x36,0x36,0x9e,0xc2,0x45,0x3f,0xed,0x46,0xe9,0x77,0xd6,0xac,0xc3,0xa7,0xbe,0x60,0xd3,0x13,0x95,0xad,0x6e,0x7e,0xa9,0xe0,0x74,0x80,0xe4,0xc9,},{0x4e,0x65,0x42,0x2f,0xed,0x33,0x4a,0x55,0xe8,0xb6,0x73,0x89,0x3e,0xba,0x7c,0x18,0x1d,0xd7,0x24,0xdd,0xa0,0x02,0x81,0x7b,0x0b,0xae,0x28,0xac,0xdc,0x3f,0x7f,0xc0,},{0x76,0x88,0xf3,0xf2,0x40,0x1e,0xac,0xaf,0x2d,0xd8,0x8e,0x17,0x0f,0xf1,0xc4,0xd7,0xe9,0x48,0x22,0xa7,0x7f,0x6b,0x55,0x0b,0x56,0x9e,0x82,0x15,0x2b,0xbb,0xb4,0x34,0x05,0x7e,0x01,0x23,0x0b,0x05,0xce,0x58,0xee,0x1d,0xee,0x52,0x26,0xb5,0xc7,0xcd,0xbe,0x5a,0x8a,0xde,0x3b,0x94,0x65,0xf5,0x9a,0xed,0x74,0x14,0x5d,0x14,0x33,0x0c,},"\x4e\xd3\xf5\xbd\xbd\x41\xd0\xe3\xb0\xa8\xa7\xfc\x37\x52\xee\xa4\x96\xd6\x14\x16\x78\xcb\xfe\x06\x75\x7f\x61\xe1\xa1\x68\xd7\x61\xb6\xda\x83\x05\x2f\x79\x94\x95\x0d\x24\x62\x6f\x00\x4f\xbe\x9b\x8c\x95\x62\xe0\xc9\x55\xfb\x3b\x5c\x08\xfd\x2d\x3d\x25\x83\x93\xa3\x49\x03\x0c\x8e\x15\x62\x05\xb4\x04\x83\x03\x8b\xe1\x95\x9f\x1c\xba\x49\x0a\x87\xfe\x13\x89\x9e\x4f\x37\x52\x06\x3b\x68\xfe\x3e\x1c\x50\x71\xf7\xdb\x00\x02\xf0\x14\x94\xb4\xa3\xee\x2e\x07\x99\x2b\xdd\x20\x0d\xb4\x31\x66\x29\xee\x8a\x95\xca\x34\x7f\x0b\x28\xd6\x40\x2a\x6d\xa8\xb5\x3e\x6b\x32\x58\x1c\x36\x91\xe1\x1a\xe9\xb6\xe0\xf0\x49\x48\x94\xe6\x49\xa9\x2d\x03\xeb\x49\xc4\xd6\x83\x3f\xa1\xf5\x4f\x8d\xcd\x91\xd0\x69\x36\xa6\xe6\x2d\x49\x1e\x2c\xea\x46\xdd\x07\xd9\xf0\x2d\x32\x54\xb8\x50\xbc\x97\x49\xf2\x58\xa6\x1a\xd3\xb9\xcc\x24\xb0\x32\x87\x33\x1b\x85\xa2\x41\x43\xaa\xf8\xfc\xcc\xac\x5f\x18\xbf\xc7\x2d\xec\x75\xc0\x23\x35\x16\xaa\x6e\x45\x89\xc7\x8c\x66\x5a\x18\x6e\xd9\x02\x09\x1d\xf9\x7b\x0d\x04\xe8\x3a\x2d\x74\xd7\x89\x89\x1a\xea\x2c\xac\xf8\x13\xff\xfb\x5e\xfa\xf7\x8d\xbc\xd7\xaf\x54\xef\x55\xc7\x7b\x1c\x4c\x8a\xce\x9e\x92\x78\xad\xc2\x3d\x76\xc7\x79\xd6\x4b\x3b\xbb\xd1\xfb\x33\xb0\x98\x36\xea\x64\xa7\x1e\x47\x11\xe8\x9e\x8d\xa0\xf7\x09\x21\x33\x42\x17\x6a\xe2\x2c\x6e\x78\x52\xc3\x97\x3b\x60\xd9\xf9\x88\x89\xb4\x42\xaa\x48\xd7\xbf\xdf\xde\xf6\x4c\x36\xc5\x86\xc4\xfb\x2a\xd2\xe2\x7e\xbe\x47\x9f\x6d\x72\x2f\x06\x9f\xd6\x10\x6b\x0d\x08\x97\x5d\x5f\x72\x15\x47\xc3\xb9\xc5\x2f\x9f\xc5\xf4\x5b\xb4\x5b\x5b\x63\x21\x88\xe8\x06\x26\x51\x8a\x79\x05\x6b\xdc\x4e\xe1\xd2\xbe\x6c\x65\x42\xa2\x1f\xad\xea\x92\xc6\xdf\xb7\x76"}, +{{0x4f,0x0b,0x36,0x07,0xd7,0x0b,0x0f,0x26,0x98,0x32,0x7e,0xf4,0xf1,0x98,0x2c,0x5b,0x4b,0x94,0xbe,0x78,0xf5,0x0c,0x76,0xf4,0x3b,0xd6,0x42,0xf1,0xf0,0xed,0xe3,0x9b,},{0x94,0x2b,0x43,0x08,0x9f,0xd0,0x31,0xce,0xc0,0xf9,0x9e,0x5e,0x55,0x0d,0x65,0x30,0x7f,0xb6,0xc3,0xe7,0x93,0x44,0x9f,0xb3,0x90,0xff,0x73,0x0f,0xff,0xd7,0xc7,0x4b,},{0xf3,0x96,0xa1,0x1f,0x2f,0x03,0xc6,0x14,0x39,0x68,0x4f,0x79,0x00,0x1b,0xd4,0xf3,0x46,0xa3,0x48,0xdc,0xf1,0xd3,0xbe,0xb2,0xd3,0xbf,0xe3,0x3e,0xa7,0x3a,0x5a,0xd4,0xeb,0x97,0x50,0x6a,0xcf,0xbf,0xfb,0x78,0x4e,0x77,0x54,0x81,0x89,0xcd,0x59,0x9f,0x8c,0xcf,0x17,0x35,0x5d,0xde,0x80,0xe7,0x50,0x24,0xef,0x2a,0x78,0xd5,0xfa,0x03,},"\x9f\x70\x0a\x1d\x25\x60\xf6\x9d\x9b\xc1\x05\xbc\x83\xbf\xf5\x39\xe4\x25\x8c\x02\x48\x60\x20\x13\xa9\x59\xb9\x78\xa1\x9c\xc2\x73\x28\x0d\x90\xc0\x17\x80\x89\x57\x8b\x50\x51\x8e\x06\xad\x1e\xab\x79\x0f\xfe\x71\x0c\x63\xd7\x88\x87\xa9\x55\x69\x14\x4f\x3e\x58\xa8\x83\x7f\x93\xdd\x51\x6f\xcd\xdd\x22\xbc\x97\xa7\xf1\x44\x11\xd4\x24\xb2\xe8\xe9\xaa\x7c\x28\x01\x19\xad\x94\xce\x92\x53\x3f\xc7\xfe\xa6\xc6\x62\x48\x64\x4a\xc3\xe1\xbe\xef\x25\x53\xa6\xf6\x1e\x91\xb9\x37\x9b\x0f\xe0\xc6\x8b\x40\x68\x14\x55\xb3\x11\xf4\x0d\xf0\xc9\x7f\x53\xfc\x95\x42\x42\xc3\x75\xe7\x70\x8d\x61\xba\xd9\xf5\x12\x96\x24\x72\x74\xfa\x01\xa7\x32\x8f\xa5\x00\x9d\x99\x95\xf5\x01\xae\x86\x83\x55\x2b\x11\xa4\x9d\x26\x38\x11\x67\x23\xb1\x31\x94\x50\xa9\x01\x38\xd2\x78\xcd\x95\x12\xb8\x0c\xa5\x79\x2e\xd1\x6c\x68\x3b\xef\x92\xec\x87\x88\x4c\x9f\x07\xf1\x37\xdc\x47\xa1\x31\x46\xe5\x11\x06\x5c\x2e\x1b\x4b\x80\xef\xde\x88\xae\x12\xe2\x94\x31\xbe\xb7\xae\xe3\x65\xc1\x6d\x80\x50\x6b\x99\xaf\xa6\xa1\x40\x6e\xdb\x06\x17\x66\x87\x58\x32\xdb\xa4\x73\xe5\x19\xdd\x70\x18\xf4\x02\xeb\x1b\xb3\x01\x4b\x7c\xee\x4f\x02\xe9\x80\xb1\xb1\x71\x27\xe7\xd2\x5d\xfe\x0c\x16\x8c\x53\x44\xf1\xc9\x00\x44\xf8\x27\x70\x7d\xca\x03\x07\x0e\x4c\x43\xcc\x46\x00\x47\xff\x62\x87\x0f\x07\x5f\x34\x59\x18\x16\xe4\xd0\x7e\xe3\x02\xe7\xb2\xc2\xca\x92\x55\xa3\x5e\x8a\xde\xc0\x35\x30\xe8\x6a\x13\xb1\xbd\xfa\x14\x98\x81\x30\x98\xf9\xba\x59\xf8\x18\x7a\xbc\xaf\xe2\x1b\xa0\x9d\x7c\x4a\xaa\x1a\xd1\x0a\x2f\x28\x33\x4a\xb5\x39\x96\x14\x7c\x24\x59\xc0\x1b\x6a\x10\x83\x9e\x03\x01\x12\x3d\x91\xa3\x5c\xed\x7a\xf8\x9a\xfb\xac\x7d\x9c\xf8\xac\x9a\x38\xce\xeb\xef\x83"}, +{{0xb8,0xa0,0x01,0x0c,0x78,0x4d,0x8d,0x00,0x2a,0x31,0xda,0x11,0xd0,0x22,0xd3,0x01,0x88,0xa4,0x19,0x7a,0x1d,0x5f,0x14,0xea,0x4c,0x0d,0xab,0x29,0xa2,0xe4,0x06,0x68,},{0x8b,0xdc,0x63,0xe5,0x0b,0xed,0xe1,0x3c,0x91,0xa4,0x1e,0x4b,0x4b,0x78,0x57,0xb9,0xe5,0x53,0xf4,0x84,0xe3,0xc1,0xec,0x16,0x7d,0xc0,0x4c,0x28,0x1e,0xa8,0x66,0x22,},{0xb3,0xf6,0xcf,0x4c,0x0e,0x0f,0x90,0x74,0xff,0x2c,0x2c,0x47,0xe1,0x63,0x20,0x2f,0x1e,0x9d,0x6e,0xe1,0x17,0xcf,0x75,0x76,0x33,0xe4,0xab,0xe7,0x44,0x23,0xaa,0x70,0x00,0x8a,0xda,0x15,0x09,0xec,0x1d,0xc1,0x17,0xc1,0xc2,0x30,0xe9,0xb2,0x37,0x86,0xf3,0xd0,0xf2,0x9b,0x73,0xaa,0x28,0x45,0x36,0xe9,0x58,0x01,0x06,0xa8,0xa7,0x0c,},"\x5c\x6c\xcb\x29\x8b\xe2\x16\x80\x8b\x81\x1e\x56\xd9\x72\xf4\x56\xb6\x9a\xd3\x95\x94\xee\xe3\x54\x70\x1c\xa6\xb3\xe3\x8d\x1f\x41\xa3\x59\xe5\x51\x2a\xf9\x8a\x3a\x08\x73\x26\x5f\xe5\x19\x1f\x4f\x2e\xca\xf6\x6b\xee\x75\xa3\xac\x0b\x71\xa4\xdd\xf2\xa7\x59\xeb\xdd\xdb\xd8\x8a\x6a\x1c\x6f\xd0\xfc\xf7\xd7\xcb\x92\xa8\x4e\x33\x07\xb4\xa4\xf9\x8c\x71\x0a\xbf\x4f\x55\x3d\xee\x74\xf6\x52\xd2\xac\x64\xbc\x30\xf7\x2b\xf4\x35\x4e\xf7\xe8\x06\xa1\x90\x71\xa0\x51\xbc\xfc\xfb\x27\xe3\x7f\xdd\xd4\x1e\xce\xae\xc1\x75\x8e\x94\x69\x5c\x67\x0e\xf4\xc5\xa5\x90\x21\x78\x32\x9d\xb9\x58\x5c\x65\xef\x0f\xa3\xcd\x62\x44\x9b\xb2\x0b\x1f\x13\xae\xcf\xdd\x1c\x6c\xf7\x8c\x51\xf5\x68\xce\x9f\xb8\x52\x59\xaa\xd0\x5b\x38\xc6\xb4\x85\xf6\xb8\x60\x76\x92\x8d\xdb\x4e\x20\x36\xf4\x5e\x7b\x9c\x6a\x7f\xf2\x4a\xe1\x77\x60\x30\xe2\x57\x68\x25\x01\x9a\xb4\x63\xeb\xf7\x10\x3a\x33\x07\x20\x33\xea\xcb\xb5\xb5\x03\xf5\x32\x66\xaf\xb8\x2f\x9b\x24\x54\xb8\xdc\x05\x7d\x84\xf3\x0d\x9d\x2c\xb7\xc3\xa3\x1a\x7d\xbd\xfb\xa5\xb8\xe4\x92\x31\xc2\x31\x39\x6c\x47\xca\x04\x2c\x8e\x48\xa1\xa5\xe3\xec\x9a\xfe\x40\x20\x59\x53\x90\xf9\x99\x0d\xfb\x87\x4e\x08\x25\xae\x9a\xe5\xe7\x52\xaf\x63\xaf\x6f\xd3\xe7\x87\xe7\x5e\x8d\x8d\xc4\xc6\x63\x02\x27\x7a\xc0\x1b\x30\xa1\x8a\x56\xcb\x82\xc8\xa7\xeb\xdc\x91\x5b\x71\x53\x25\x5a\x1f\xed\xc4\x92\xe4\x96\x60\x26\x2b\xb2\x49\x78\x0d\x17\x3e\x1f\xd2\x0d\x18\xc4\xf6\xb0\xb6\x9a\xa2\xec\xa0\x24\xbf\x3c\x80\xd7\xd5\x96\x2c\xc4\xa1\x29\xa7\x94\x3b\x27\xf3\x3c\xc7\x99\xa3\x60\x45\x54\x12\x75\xa2\xcd\xb9\x2a\x40\xe4\x85\xba\x8b\x73\x7a\x04\xb4\x3d\x29\xc3\xe2\x5f\x76\xcb\x3d\x93\xa6\xb9\x44\x61\xf8\x8f\x56\x96"}, +{{0xef,0xc8,0x6c,0xbe,0x40,0x36,0x3a,0xbf,0xbb,0x2a,0x4b,0x1f,0xcc,0xe5,0xfd,0x60,0x84,0xda,0x96,0xe7,0xe8,0x14,0xde,0x71,0xaa,0xdf,0x9a,0x61,0x8f,0x30,0x36,0x25,},{0x22,0xf2,0x95,0xce,0xe7,0x27,0xd2,0x8d,0x2b,0x93,0x17,0x15,0x3e,0x7d,0x94,0x12,0xda,0x10,0x65,0xc1,0xb1,0x6a,0xe2,0xa2,0x51,0xdd,0x1f,0xb4,0x31,0xc6,0x2b,0x01,},{0xf8,0x81,0x83,0x10,0x22,0x8c,0xa7,0x61,0x11,0x52,0x4c,0xe9,0x4b,0xfc,0xb0,0x24,0x6e,0xa6,0x35,0x08,0xce,0xe9,0x30,0x65,0x92,0xb2,0xf7,0x75,0x48,0xed,0xef,0xcf,0x76,0xbd,0x14,0x54,0x50,0x8e,0xa7,0x15,0x04,0x2c,0xec,0x16,0x9c,0xea,0x51,0x15,0xab,0x54,0x23,0x5c,0xb1,0x09,0x7b,0x10,0x70,0x2a,0xa3,0x83,0x78,0x02,0x8e,0x0c,},"\x9e\x4f\xa4\x5d\xc0\x26\x71\x0f\x6b\xef\x4e\xd0\xf0\x7c\x54\x4b\x0b\xb0\xd8\x8f\xa7\x9e\x71\x77\xd8\x44\x8b\xc2\x09\xd7\x1c\xfe\x97\x43\xc1\x0a\xf0\xc9\x93\x7d\x72\xe1\x81\x9e\x5b\x53\x1d\x66\x1c\x58\xc6\x31\x41\xce\x86\x62\xc8\x83\x9e\x66\x4d\xb7\x9e\x16\xc5\x4d\x11\x3a\xbb\x02\xa7\x5b\xdf\x11\xb3\x45\x3d\x07\x18\x25\xbc\x41\x57\x41\xe9\x94\x83\x54\x6b\x8e\x1e\x68\x19\xde\x53\x01\x70\x92\xe4\xef\x87\x1f\x1c\xa0\xd3\x50\x8f\x93\x78\x28\xa4\x66\x7d\xb1\x1f\xff\xf9\x41\x6e\xeb\xb9\x4b\xf9\xb8\x4d\x65\x46\x03\x09\x48\x34\xa9\x9c\xa7\x0b\x90\xf5\x62\xa8\x68\x23\x62\x4d\xfe\x9c\xb2\xf9\xe8\x8c\x17\x3f\x13\x46\x4d\x4c\xe2\x55\xf2\x22\xdb\x50\xdd\x63\xab\x42\x46\x57\x34\xe7\x52\x95\xc0\x64\xb6\x4c\xc3\xf1\x5e\x62\x37\xe3\x7f\x33\xd6\x15\xf7\xc2\x43\xe4\xba\x30\x89\x60\xcf\xd4\x39\x34\x02\x52\x55\x00\xbb\x79\x02\x97\x0b\x39\x31\xd4\x8b\x35\x66\x6a\x2d\x4d\x2a\xb0\x8f\xa1\x2a\xf3\x66\xa0\x04\x34\x6c\x9d\xd9\x3d\x39\xfb\x1b\x73\x40\xf1\x04\xe5\x1f\xed\xbb\x53\x36\x05\xb5\xff\x39\xcf\x6d\x59\x51\x3f\x12\x85\x6d\xcf\xa1\x98\xd7\x93\xb0\xfc\x87\x5c\xde\xa0\x74\x1f\x14\x55\x74\x6d\x8a\x19\xc3\xe9\xd9\x28\xf0\x02\x1b\x01\xc2\x51\x31\x81\x1e\x48\xc3\xc7\x5c\x6f\x41\x42\x2a\x88\x10\xc6\xc8\x1f\x35\xb4\x54\xee\xae\x8c\xd1\x7c\xf3\xf2\xe6\xf0\xbc\xd9\xf2\x90\x98\x4f\x49\x65\x78\x62\x3a\xb8\xe2\x73\x8d\x2d\x10\x84\x0e\xb9\x1d\x10\x1c\xb4\xa2\x37\x22\xb7\x2e\x3d\xd1\x85\x44\x0c\x3b\x9f\x44\xd4\x6a\x39\x3a\x34\xc1\x87\xa2\x0d\x61\x0b\xb6\x98\xc5\x05\x31\x74\x1e\xfe\x96\x32\x35\x12\x32\x98\x00\x77\x2a\x40\x80\x65\xa7\xef\x8e\x4e\x41\x05\xeb\x1f\x5b\xf6\xd3\xfd\x6b\x21\x7f\xd8\x36\xd8\x9f\x53\xb9\x6f\x45"}, +{{0x33,0x55,0x6c,0x60,0xde,0x2f,0x2c,0x9a,0x93,0x03,0xb9,0x9a,0xdd,0x37,0x85,0x92,0x06,0x05,0x05,0xf8,0xe4,0x98,0x61,0x08,0x5a,0x4b,0x15,0xf0,0x72,0xa7,0xef,0x28,},{0x23,0x1e,0xc8,0xcd,0x84,0x58,0x59,0xf6,0x99,0x61,0x27,0x51,0x19,0xdb,0xe4,0xf7,0x15,0xe5,0xec,0x5a,0xa9,0x8b,0xb8,0x74,0x16,0x75,0xb3,0xc2,0xd0,0xc8,0x9f,0xee,},{0xe0,0x6a,0x7a,0x41,0x44,0x57,0xbb,0xbe,0xf2,0xba,0xc3,0x77,0x5c,0xca,0xd0,0x87,0xda,0xcb,0x1f,0xa4,0xbf,0x93,0x88,0x94,0xe8,0xc9,0x29,0x11,0x8e,0x09,0xe6,0x78,0xdd,0x19,0x93,0x8b,0xc8,0x8f,0x43,0xed,0x0f,0x7d,0x31,0xcc,0x6a,0x0e,0x60,0x2c,0x4e,0x4d,0x1f,0xee,0x33,0xd4,0x1e,0x74,0xa1,0x19,0xfa,0x2d,0x1e,0x4e,0x34,0x0f,},"\x96\xaf\x54\x0e\xa2\xb1\x92\x3f\x5f\xd0\xaa\xd3\x21\xac\x03\x20\x70\xc2\xd6\x5b\xa1\x3d\x16\x4e\x75\xc3\x46\x97\x58\xfc\xf3\x1b\xb3\x16\x55\xcb\x3a\x72\x1f\x9c\xb3\x4b\xe2\xc9\x0c\x77\xeb\x65\xbe\x37\xf6\x06\xd3\x2a\x91\x7a\x4c\xb9\xa7\x09\xac\x07\x05\x22\x99\x30\xef\x6e\xb6\xfd\xb0\xfa\x3c\x0f\xd3\xa9\x0c\xe1\x71\x67\x4e\xe3\xed\x06\x35\x4b\xaf\xc3\xc7\x07\x54\x67\xa5\x74\x45\xb8\x03\x85\x64\x04\x47\x90\x2b\xe3\x92\x62\x89\x4b\x1f\x64\xfe\xa5\x82\x87\xdc\x32\x2d\x19\x87\x59\x72\xa7\xc8\xbe\x91\xd3\x1f\x02\x1c\x70\xeb\x68\x2f\xdf\x11\xa1\x0f\x8f\x58\x2a\x12\x6e\x06\x47\x94\x83\x8c\x69\xfd\xf6\x4f\x5b\x6e\x8b\xa5\x9d\x48\xb4\x38\x4f\x8e\x9f\xb5\xc0\x87\xcc\x77\x38\x29\x5c\xd3\x23\x44\xba\x3b\x69\x7e\xe6\xb6\xa8\xb7\x8e\xe7\xa9\x57\x5c\x97\x97\x2a\x4d\x1b\xb1\x84\x86\xf9\x03\x7a\x0f\x3c\x6f\x47\x1a\x90\xf8\x64\x98\xdb\xc0\xdf\x52\x32\xc0\x7e\x8c\x01\xb6\x90\xbe\xe7\x53\x02\x99\x2a\x7a\x36\xfb\x44\x37\xc2\x5a\x8b\xf5\xe3\x4c\xf7\xd5\xb5\x55\x72\xc7\x00\xa0\x79\x84\x8d\x38\x13\x64\xf9\x94\x6a\x91\xeb\x16\x03\xff\x3d\xe5\xeb\xdd\x52\x3b\xd9\x25\x64\x81\x8e\x23\x7a\x53\xe8\xf5\x22\xde\xaa\x2c\x29\xb8\x97\xe9\x61\x58\x6e\x10\x0e\xd0\xfc\x0a\xd7\x0d\x16\x09\x34\xe6\x94\x02\x7e\x5c\x95\x79\x20\xbc\x05\x46\xe9\x01\xbe\x39\xa8\x45\x35\x59\x7e\x1f\x28\x0c\x22\x22\x67\xab\xe9\x7f\x41\x20\x5d\x81\x71\x82\x0d\xd2\xfa\xaf\xc0\x69\x94\x19\x32\x1a\x91\x60\xf6\x9b\x99\xfd\x41\x18\x09\x45\xb6\x2d\x2d\xd1\x05\xcc\x7b\xbe\x82\x1d\x28\x60\x5e\x09\x8e\xdf\xa8\xb2\x30\x9a\xeb\x05\x34\xe7\x56\x37\x7f\x59\x93\x7c\x67\x46\x3f\xd8\x7c\x8b\x92\xab\x58\x11\x9c\xf4\xce\x6c\x66\x5a\xf5\x72\xfb\xae\x1d\xe4\xa2\xcc\x71"}, +{{0x7a,0x5c,0x74,0x31,0x4e,0x11,0x83,0x33,0x4a,0x4b,0x62,0x26,0xb9,0xa8,0x2d,0x70,0xfc,0x2a,0x12,0x4e,0x3f,0x87,0xdb,0x6a,0x22,0x83,0xee,0x05,0xb6,0x8e,0x34,0xe0,},{0xbe,0xae,0x7d,0x3d,0xd9,0x7c,0x67,0xf6,0x27,0x3b,0xfa,0xa0,0x66,0x13,0x1f,0xed,0x8a,0xce,0x7f,0x53,0x5f,0xe6,0x46,0x4e,0x65,0x79,0x1c,0x7e,0x53,0x98,0x57,0x6c,},{0xc2,0xab,0x1f,0x6f,0x51,0x14,0xa8,0x4f,0x21,0x85,0x02,0x58,0x2c,0x56,0x7b,0x37,0xa8,0xbd,0xbc,0xdf,0x63,0x40,0xfa,0x46,0x22,0x87,0x3b,0xe8,0x91,0x06,0xf0,0xa9,0x0b,0x48,0x29,0x50,0x5f,0x72,0x12,0x9d,0xf0,0xab,0x3d,0x85,0x13,0x26,0x87,0x74,0xa3,0x4d,0xf3,0xad,0x21,0xce,0x25,0x4b,0x46,0x44,0x88,0xad,0xdd,0x6c,0x9b,0x04,},"\x98\xba\xc6\x72\x47\x55\x91\x29\x92\xad\xc2\xa4\x8b\x54\x42\x37\x6f\x2d\x92\x79\x97\xa0\x40\xfb\x98\xef\xe5\x44\xeb\x0c\x8e\x18\x66\xb9\x61\x6e\x29\x8d\x33\x60\x31\x6e\xd9\x76\xbd\x94\x6a\x41\x1f\xdd\x3a\x6b\x62\x5c\x0c\x1a\x37\xaf\x0f\x41\xcf\x65\x69\xa7\x88\x4a\xb8\x46\x74\x91\xa9\x87\xdf\x3e\xa7\xa0\xb7\xeb\xc4\x69\x25\x69\xa3\x4c\xe3\xa2\xea\x35\x03\x49\x5b\x2c\x02\xd4\x9d\x7d\x7d\xb5\x79\xd1\x3a\x82\xcf\x0c\xf7\xa9\x54\x7a\x6e\xae\xbe\x68\xe7\x26\x7d\x45\xa6\x0b\x8d\x47\x72\x45\x52\x28\xcc\xa4\x03\x6e\x28\x2e\x1a\x12\x16\xf3\x4c\xef\x7e\xa6\x8f\x93\x82\x70\xbd\xb0\x42\x93\xc8\x85\xd0\x05\xf9\xf7\xe6\x38\xa8\xb4\xea\xd2\x62\x6c\x09\x45\x17\x4f\xf2\xa3\xe2\xd6\xe1\x5a\x4c\x03\x38\xc0\x9e\x12\x60\xf0\x92\x8c\xa9\xd3\x49\x98\x24\xf3\xfe\xdc\x47\x85\xda\x49\xc5\xc3\x4a\x56\x85\x5e\x24\x1f\xac\xc6\x34\x7a\x39\x9d\xdc\xac\x43\x99\xa8\xb1\x58\x19\x8c\x15\x14\x61\xa3\xb1\x89\xe5\x8e\xc1\xf7\xef\xcf\x2a\xb2\x03\x1f\xb1\x7b\x6f\x03\x5b\xa1\xf0\x92\xe9\xee\xe2\xe9\x2c\x2d\x6c\xc2\x03\x22\x87\xf8\x54\xb4\x1e\x70\xfc\x61\xc8\xd1\x1a\x2e\x4f\x07\x08\xf0\x2e\xeb\xd0\x2e\x8c\x7e\x8c\x7b\x38\xa5\x7b\xfa\x1a\x74\x5f\x3a\x86\xc2\x39\x09\xf6\xf8\x9a\xb1\x6c\xe7\xe1\x81\x3c\x1d\x20\x14\x7f\x31\xb4\xcf\x2a\xd0\xb6\x06\xfb\x17\xe5\xac\x1a\xb5\x1e\xf4\xa7\xd8\x09\x3c\xee\x9a\x65\x5f\x47\x1d\xc5\xb1\x46\xbd\x1b\x93\xe5\x40\xa3\xd3\xd3\xe2\xde\x81\x05\x91\x1c\x10\xd6\xab\x5f\xf7\x9c\x2d\x06\x02\x7f\x7a\x54\x56\x1f\x20\x71\x41\x4b\xd3\x30\xa8\x78\x54\x42\x25\x1c\x81\x0e\x23\x2f\x83\xc3\x67\xf0\xbe\x77\x99\xa9\x3f\x52\x38\xf7\xf1\x7b\x5b\xe8\x29\xfd\x89\x12\x3c\x04\x83\x3a\xf8\xb7\x7e\x5a\x43\x63\x04\x7c\xec\xa7"}, +{{0xda,0x80,0x06,0xad,0xc4,0x92,0xca,0x5d,0xc8,0x6c,0x29,0x59,0x43,0x7a,0x75,0xde,0xb6,0x12,0x0f,0xf7,0x87,0xd2,0xec,0xb9,0xc2,0x0c,0x30,0xb5,0x2c,0x26,0xbc,0x41,},{0xff,0x11,0x3b,0xf0,0xaa,0x58,0xd5,0x46,0xf2,0x38,0x5d,0x44,0x4e,0xcb,0x78,0x88,0xf8,0xca,0xba,0x43,0xa1,0x74,0xa8,0x9f,0xd6,0x06,0x5f,0x2b,0x7d,0xc1,0x7b,0xf0,},{0x1f,0x53,0x75,0xdc,0xb3,0xad,0x2b,0xaa,0xff,0x95,0x6d,0x85,0x54,0xec,0xb4,0x24,0x17,0x6b,0xe9,0xa6,0xeb,0x9e,0xa5,0x4e,0x81,0x4e,0x0a,0x73,0xdf,0x2a,0x5d,0x84,0x8a,0xda,0x26,0xba,0x8e,0x18,0x05,0xcd,0x51,0xc5,0xe1,0x69,0x50,0xc1,0xff,0x7d,0x4d,0x27,0x64,0xda,0xa6,0xf4,0xc7,0x50,0x2f,0xb8,0x65,0xcb,0xe5,0x5a,0xaf,0x0b,},"\x3e\xb4\x32\x4d\xbc\x01\x49\xd2\xe7\xd6\xdf\x63\x2b\xb0\xcb\xe9\xa9\xf6\xdf\xa8\x3e\x22\x7f\xc0\x7b\xde\x1b\x57\x7b\x36\x11\xfb\x92\x1c\x9f\x83\x13\xf0\x68\xe6\x29\x5d\x49\x13\xa8\x19\x6b\xe5\x30\xf6\xa0\x1f\x57\xc0\x9c\x02\x84\x91\x44\x4b\x78\x47\x20\xe9\x09\xea\x1f\xb6\x9c\x1c\x1d\xd6\x30\x44\x00\x32\x7b\x77\x31\xb3\x3c\xc4\x6d\xeb\x04\x6c\xda\xb6\xad\x1b\x53\xf1\x74\x9a\x0c\x65\xcb\x9a\x7e\x37\x6f\xfa\x02\x23\x0f\x53\x65\x84\xae\xa2\x43\xc6\x39\x10\x3a\xdb\xba\x76\x43\x21\x64\x9d\x7e\x01\x26\xf8\x2e\x0b\x4f\xd9\xdc\xb8\x6c\x73\x1c\xbc\xc5\x17\xf2\x01\x68\x41\xe9\x16\xbc\xd5\xfd\xe8\x71\xdc\x09\x8c\xd9\x13\xdc\x54\x62\x84\xd1\xb2\x16\x5c\x63\xe8\x8f\x32\xa2\x78\x9a\x50\x08\x56\x37\x1b\x50\xd2\x2f\xb8\xc8\x7d\x1a\x3c\xae\xdc\xdf\xd0\x1e\xe5\xf8\x70\xa5\x3c\x28\x41\x81\xd6\x32\xec\x66\xd4\x8b\x6b\xdd\x56\x46\xac\x39\xc9\xe7\x53\x38\xa5\x20\x21\x20\x62\xbc\x34\x66\xef\x5c\x58\x76\x55\x70\xb9\x05\xf6\x3a\x93\xd0\x7f\x8f\x1b\xaa\xc3\x52\x6b\x01\x6d\xa7\x99\xf3\xe9\xe0\x3a\x4f\x7f\x81\x35\x5e\x0f\x7a\x76\xf3\x0a\x42\xb8\x07\x32\x20\x51\xb7\x1c\x62\x6a\x7a\x29\x6d\x75\xb9\xd9\xd1\xa2\x3b\xcb\x13\xc9\xef\x48\xa9\x12\xdc\x05\x73\x25\xd3\xbc\xfb\x3f\x9f\xad\xaf\x0c\x24\x9b\x10\x2a\xeb\x85\x4a\xa3\x63\x1e\x34\xf6\x9a\xd9\x0c\x2a\xb2\xed\x33\xba\xcc\x40\xb9\xed\x10\x37\xfa\xe6\x7c\xdf\x79\x9d\x5a\x9b\x43\x78\x59\x61\x12\x7d\x62\xf8\xe0\xbc\x15\x89\xfd\x1a\x06\xfc\xa2\xae\xa7\xcf\xc0\x12\xcb\xf7\xb5\xb2\x07\xdd\xc4\xe6\x77\xd8\xae\x4a\xec\x10\x00\x45\xce\x36\xc0\x0b\x74\xd1\xd2\x82\x50\x79\x12\x36\xdc\x5d\xcc\x1e\xd3\x13\xc8\xc2\x46\x17\x26\x66\xf7\x52\x17\x43\x7c\x60\x34\xac\xd6\x41\x98\xcd\x96\xdf\x2a"}, +{{0xa2,0x84,0xe2,0x6b,0x97,0xe5,0x38,0x83,0x9c,0x80,0x8d,0x45,0xbd,0xe6,0xf0,0x12,0xa3,0x54,0x45,0x4a,0xef,0x81,0xca,0xa8,0xc5,0x59,0x14,0x62,0x4f,0x2b,0x7d,0x66,},{0x5a,0xe4,0x6e,0x34,0x69,0x5e,0xfa,0xf4,0x63,0xa4,0x20,0x8f,0xc4,0xe3,0x5b,0x81,0xf2,0xc6,0x35,0x93,0x23,0x8a,0x56,0xf2,0x44,0x4b,0x85,0x0f,0x05,0x8c,0x3c,0x5c,},{0xbf,0x11,0x0e,0x2e,0x9c,0xec,0xbc,0x31,0xfa,0x3e,0x0c,0x24,0x38,0xcd,0x1f,0x43,0x21,0xf9,0x2c,0xd2,0x87,0x00,0x5a,0x48,0x52,0x8a,0xdd,0xf7,0x6c,0xad,0x8d,0x88,0xbb,0x22,0x71,0x9e,0xf9,0x1b,0x13,0x95,0x62,0xa1,0x51,0x18,0x38,0x68,0x26,0x74,0xfa,0xa9,0xff,0x7e,0x7a,0xde,0x6c,0x9d,0x57,0x3f,0x84,0x50,0x36,0xd1,0x89,0x05,},"\x9e\xbf\xe9\x10\xb5\x0a\x5c\xb7\x19\xd9\x5b\x96\x1e\x59\x05\xf0\x0e\xc7\x94\x3b\x55\x46\x8a\xb5\x95\x66\x92\x01\x76\x45\xb3\x66\x07\x1f\x8f\xbb\x77\xeb\x49\xec\x73\xea\x7d\x64\x51\x14\x05\xb9\x0d\xe2\x2d\xb9\x8c\x3e\xae\x39\xc4\x03\x9c\x7a\x13\x34\x30\xe8\x01\x0b\xdd\x39\xa0\x0f\xd1\xa5\x28\xb1\x13\xda\xe1\x49\xcf\xad\x3a\xe3\x40\xda\x27\xdc\xc5\x07\x78\x2e\xcd\x89\x29\x23\x75\x17\xaf\xe7\x46\x3e\xca\x24\x73\xc7\xac\xf6\xf7\xaa\x04\xef\xc9\xf2\x66\xae\x7b\x6d\x63\xbb\x8c\xc2\xa4\x38\xb3\x44\x82\x7f\x07\x13\xd1\xf1\x73\x6f\x0c\xbb\x65\xb9\x93\x53\xf2\x03\x55\xfa\x02\x30\xd4\xfa\x70\x73\x28\xa8\x66\x26\x54\xe8\x3a\xd0\x53\x0a\x10\xf9\xa6\x9e\x17\xc0\x99\xe1\xe2\xb5\xdb\x18\xe5\xf6\xf1\xdc\xed\xa5\x88\x3e\x8c\xab\x79\x70\x1a\x5e\x90\x89\x56\x2e\xd1\x53\xad\x08\xc6\x74\xf0\x97\xc2\x8e\x4d\x16\x63\x3e\x09\x29\x69\xa8\xf0\xbd\xac\x54\x52\x7c\x0e\xe0\x3b\xc2\x00\xe5\xbe\x61\x2e\x3d\x1e\xab\xd8\x70\x91\x10\x1b\x49\x62\xaf\xa0\x7b\x31\x08\x06\x99\x2f\x37\x30\x76\xd7\x6a\x58\x18\x51\x18\x13\x7c\x9d\x26\xee\x2c\xd4\xc6\x18\xc1\x82\x83\xdd\x19\xf0\xe7\xa0\x89\xee\x37\x30\x5b\x6b\x95\x18\xa7\x8d\x80\x98\x43\x6e\xf6\x2b\xe7\xd6\x99\x80\x8a\xce\xcf\x67\x93\x9d\x61\xb3\xe0\x29\x37\xcd\x8c\x5f\x1e\x74\x6d\x42\x74\x33\x4b\xc9\xc3\x7f\xdc\xba\x23\x4c\x16\x6f\xd7\x12\x89\x3f\x3a\x04\x08\x32\xec\x54\x25\xe5\x7d\x80\xf1\x1e\xf9\xca\x5f\xbc\xd6\xc1\x47\xfb\xbf\x5e\x2f\xae\x74\x6e\x0d\xdb\x60\x58\x67\xe3\xbd\x05\x04\x83\xc3\xcd\x13\x29\xab\xe5\x7a\x60\xbf\x88\x89\x8d\xc7\xe8\x0e\xde\x0f\x45\x17\xde\x8f\xc8\x07\xe8\x88\xb6\x21\xa0\x0f\x66\x30\x84\xff\x94\xb9\x99\x96\x62\x8f\x3b\x11\x69\x0a\x60\xf0\x91\x8c\xb5\xc9\xa7\xef"}, +{{0xcc,0x97,0xa9,0x63,0x01,0xce,0xed,0x0f,0x92,0x27,0x31,0xb6,0x85,0xba,0xd8,0xad,0x4f,0x06,0x20,0x7b,0xe3,0x40,0xf5,0xa4,0x4f,0xd1,0x87,0xf2,0x99,0x03,0xec,0x20,},{0xeb,0x56,0x3a,0x7b,0xce,0x12,0xdb,0x97,0xf1,0x89,0x1d,0x0f,0x61,0x0b,0xeb,0xd5,0x51,0x01,0xa3,0x12,0x5c,0xa8,0xdb,0xb5,0x0b,0x25,0xa6,0xb5,0x05,0x0d,0x37,0x84,},{0xff,0xbd,0xd3,0x24,0x41,0x81,0xcd,0xf6,0x03,0x4f,0x4a,0x45,0x0f,0xdd,0x95,0xde,0xe4,0x97,0x1a,0x93,0x3f,0x8b,0xe0,0x22,0xbb,0x0a,0x41,0x06,0xae,0xf3,0x9a,0xf3,0x05,0x5b,0x72,0x18,0x81,0xc9,0xb5,0x4d,0x1e,0x99,0xb9,0x40,0x90,0x96,0xfb,0xe6,0xdc,0x2c,0x99,0x66,0xe3,0x67,0x99,0x64,0xbd,0x7e,0xf4,0xc8,0x08,0xca,0xbf,0x01,},"\xb9\xea\x3b\x3d\xf7\x18\x7e\xa4\x15\xa3\xc3\x35\xe0\x83\x4e\x10\xf4\x40\x91\x5b\x2a\xd4\x1c\x71\xf2\x55\xd6\x95\x0a\x4e\x91\x20\xe4\xd4\x94\xfd\x9e\x67\x2c\xe5\x32\x06\xfd\xc4\x17\xd8\x65\x89\x7b\x47\xac\x10\x54\xe1\xca\x10\x68\x19\x52\x32\xd4\x29\x74\x35\xe4\x4e\x12\x24\xe6\x6a\x91\x2d\x9d\x7d\x18\x29\x46\xff\x5a\x9f\x08\x5b\xb8\xba\x19\xc5\x4d\x16\xb5\x86\xa9\xb3\x04\x61\xb6\x77\x3b\x93\x95\x03\x11\xe1\x61\x98\x86\xf5\xa5\xb3\xf1\x11\xaa\xad\x09\x4b\xae\x31\xc4\x8f\x19\x41\x08\x09\x68\xbd\x02\x77\xbb\x6f\xa9\x2e\xeb\xf3\x24\xb1\x92\xdf\x5c\xc9\x69\x51\x6c\x78\xc7\xb2\xd1\x21\x59\xb4\xd1\xc8\xeb\x03\x16\x0c\x4c\xd1\x90\x7f\x62\xed\x4b\x85\x4c\x56\x9e\xcc\x48\x1c\x08\xe6\x36\xf4\x4e\xd7\xc3\x90\xe5\x8b\x59\x37\xd2\x90\x6b\x28\x17\xbc\x37\x69\xda\xd9\xda\x1b\x0f\x79\x39\x1b\x55\x94\x20\x63\x05\x5d\xa0\xd6\xf2\x49\xa3\xe4\x52\xba\xdd\xaa\x03\x29\x98\xd7\xf7\x33\x98\xcc\xd0\x15\x1b\xfc\x92\xc5\xe2\xfd\xfa\x9b\x14\x85\x5e\x6b\x0d\x37\x46\xdc\xe2\x48\xe2\x19\x67\x29\x87\x25\x2e\xc7\x47\xdf\x27\x47\xfd\x3f\xbd\x8b\x71\x4c\x88\x2d\x70\x7e\xe3\x02\xa9\x04\x95\x0c\x34\x75\x4f\x85\x35\x0e\x1a\xa3\xf8\xea\x62\x93\xcf\x01\xf7\x17\xce\xfb\x6b\x83\xa2\x21\x26\xdf\x5c\x4f\x56\x98\xaa\xfd\x06\xa2\x24\x4a\xd7\xd0\x1f\x34\x01\x7c\xa0\xec\xe6\xf2\x10\x40\x04\x8a\xba\x6c\xa4\xae\xb0\x43\x25\xb9\x40\x2b\xcd\x43\xab\x13\x0a\x10\x57\x88\xac\x3d\x7b\x7d\xa0\x1e\xa9\x42\x6d\xd0\xea\x19\x33\xa8\x18\x99\x33\xa6\xc0\xc6\xcd\x64\x8e\xa3\x16\xa7\x46\x9a\x5f\xdc\x6e\x7c\x93\x4d\x91\x86\x58\x60\x97\xb5\x5d\xd5\x1a\xc4\x87\xbb\x80\xed\x11\xd4\xdf\x8d\x33\x62\x6b\xbc\xe9\x5e\x4f\x13\xbd\x49\x92\x2f\x00\xc9\x20\x22\x3f\x4c\xbf\x93\xcb"}, +{{0x67,0x9e,0x3e,0x34,0x77,0x3a,0xbe,0x4a,0xe2,0x5c,0xae,0x7d,0x07,0xcc,0xd0,0xeb,0x3b,0x0e,0xc0,0xa3,0x5d,0x57,0x02,0x57,0xd6,0x25,0x70,0xde,0x58,0xea,0x25,0x16,},{0x18,0xac,0xff,0xce,0x25,0x3b,0x27,0x25,0x95,0x79,0xed,0x99,0x24,0xf4,0x79,0xca,0xe3,0x12,0x16,0x7b,0xcd,0x87,0x6e,0xdb,0xa8,0x8b,0x5d,0x1d,0x73,0xc4,0x3d,0xbe,},{0x1a,0x51,0x02,0x26,0x28,0xcc,0xbb,0x88,0xea,0xe9,0xb2,0x17,0x73,0xc3,0xf8,0x30,0xb7,0xb6,0xe5,0xbc,0x36,0xc9,0x90,0x3c,0xe7,0x0f,0xbc,0xf4,0x59,0xd6,0xa1,0xed,0x8a,0x1d,0xce,0xff,0x5b,0x19,0x26,0x9e,0xbf,0x5a,0x6f,0xd3,0xd8,0x95,0x88,0x60,0xf5,0x54,0x46,0x1f,0x0e,0x9f,0xc0,0xe2,0x9a,0xf9,0xb1,0xfb,0x17,0x44,0xa8,0x0b,},"\xfb\x2b\x64\x8e\xbb\x16\x68\x82\x44\xf7\x8b\x2e\xe9\xa2\x73\x59\x9d\x56\xb6\x19\x89\x00\xd4\x38\xa9\xe9\x9c\x19\x14\x25\xc7\x2b\xec\x4f\x23\x58\x47\xe1\x8e\x47\xf5\x7c\x3c\xb3\x96\x65\x5f\x77\x89\x21\xf9\x08\x58\x0e\x8e\x83\xc9\x6c\x10\x8b\x20\xdd\x41\x66\x78\x02\x1b\xca\x25\x9b\x98\x51\x8f\xab\xb2\xd3\x53\x2e\x48\x51\xd9\xd5\x2a\xdd\x25\x42\xc0\xcb\x3e\xfa\x38\x57\xa1\x7e\x51\x24\x38\xbc\x0e\xc4\x76\x2e\x2f\x9b\xab\xa4\x29\xc0\x3e\x99\xbe\xc4\x03\x8e\x6b\x0c\xa4\x2b\xff\x5b\x23\x3b\x24\xc3\x33\xb4\xca\xea\xd2\xde\x37\x4a\x87\xb2\xab\x5d\x80\xd6\xe4\x9e\x44\x56\x32\x9d\x51\xae\x97\x3b\xc8\x3d\x78\x62\xf3\xd3\x15\xe5\x14\x48\x1b\x12\x85\x4a\x9d\xfc\x09\xe7\xd1\x4f\x0d\x02\x2c\x0b\xa3\x02\x25\x78\xeb\xa8\xf8\x74\xde\xba\x4a\xa8\xc8\x33\xf2\xb1\x32\x86\x1d\x4d\x51\xe5\x0f\xe9\xaa\x4b\x78\x7b\xd2\xf0\x51\xaa\xc5\x0c\x37\x53\x90\xcb\xbc\xfb\xa2\x00\x2b\x80\xad\x00\xcd\xc1\x29\x80\xf8\xba\x8b\xcb\x70\x64\xaf\xc0\x4d\x5c\x46\x82\xc1\x02\x9b\x10\xa6\xd4\x5f\xe6\xec\xd7\x04\x24\x5f\xaf\x59\x8c\x46\x59\x59\x7c\x5d\x68\xa1\x92\xcc\x1c\xd4\xfa\x45\xe8\x4b\x54\x9e\x8e\x5e\x67\xda\xa8\x79\xae\x5a\x52\x0a\x6b\x55\x50\x51\x98\x76\xa5\x62\xac\x49\xc6\xdb\x0a\xa7\x6e\xc6\x9b\xb6\x4d\xd6\xb5\xe1\xa3\xaf\x2e\x13\x1e\x72\x2e\x7c\xdd\x05\xbe\x34\xb5\xfc\xc6\x25\x9a\xa1\x24\xcc\xf8\x14\xcf\x5b\x50\x0d\x17\x6b\xe2\x8e\xbc\x40\xbb\x21\xf0\x3e\x24\xcc\xc1\x31\xe0\xf4\x1d\xaa\x1c\xa0\x2e\x6b\x00\xc9\xc5\x3f\xad\x12\x48\x61\x4e\x94\x0d\x4b\x23\x77\x60\xab\x75\x69\xa7\x67\xb7\x51\x5d\xd2\xd6\x23\xe5\x7a\x28\x41\xb7\xd2\x44\x1c\xf4\x30\x49\xe4\x69\x8d\x2f\x9c\x9e\xae\x7b\x29\x10\xf6\xad\x65\xed\xf9\xcb\x2b\xdb\xd9\xb2\x9f\x60\x6e\x0d"}, +{{0x9b,0xfa,0x60,0x92,0x3a,0x43,0xed,0x0c,0x24,0xe2,0xf1,0x2f,0x5b,0x86,0xa0,0x71,0x63,0x29,0xf9,0x3d,0x4d,0x8d,0x3e,0x06,0x23,0x80,0x02,0x89,0x32,0x78,0xc1,0x9a,},{0xfb,0x1c,0x00,0x68,0x77,0x81,0xb5,0x5b,0x89,0x3d,0x6b,0x2f,0x4f,0x49,0xcf,0x5f,0x73,0xd2,0x90,0x3c,0x31,0x6d,0x1e,0xee,0x75,0x99,0x1d,0x98,0x3a,0x18,0x68,0xc0,},{0x55,0xf2,0x02,0xef,0xb2,0xa5,0x7b,0xe8,0xb4,0xe4,0xfd,0x89,0x4d,0xcc,0x11,0xa4,0xfc,0x5f,0x82,0x76,0x61,0x8e,0xf5,0xcd,0x34,0xa4,0x49,0x5a,0xdb,0x01,0x6a,0x29,0x8e,0x64,0x80,0xa3,0x5c,0xfc,0x53,0xed,0xb2,0x5f,0xf1,0x49,0x9f,0xc5,0x32,0xa3,0x30,0x61,0xcc,0x01,0xa2,0x50,0x45,0x8a,0xa5,0xe4,0xf7,0xf1,0x6f,0x51,0x44,0x0d,},"\xa9\x90\x28\xb0\xf4\xa3\xaa\x5e\x79\xab\xef\x6c\x0d\xf4\xa7\x83\xef\x47\x0f\x1a\x29\xba\x51\xeb\xa0\x0f\x62\x14\xe8\x40\xfe\x19\xe5\xb6\xdc\x60\x21\xab\x59\x9b\xb2\xee\x36\x99\x57\x60\x15\xd7\x9a\x79\x39\xaf\x82\x35\x35\xb6\x30\xe3\x93\x8c\x72\x3f\x6e\x0b\x92\x29\xd4\x6b\xb3\x37\x9a\xcd\xba\x58\x7c\x23\x85\x67\xe3\xd8\x9b\xc3\xbd\x35\x19\xb7\x27\xfc\x69\x4f\xff\x11\x18\xbf\x22\xc8\xbc\x8b\xc8\x2c\x4d\xf7\xf5\xad\x38\xde\x05\xfe\x9f\x76\x29\x99\xec\xaa\x79\x5f\x3a\xe6\x30\xa9\xa3\x16\xd2\x6d\xce\x9f\x15\x68\xff\xa3\xf2\x2b\x02\x95\x21\x40\x20\xb3\xd3\xf5\x33\x7c\x14\x95\x68\x19\x22\x18\x13\x2a\x90\x70\x92\x79\xc0\x1d\x23\xba\xef\xa6\x69\xe1\xc4\xe4\x20\x38\x17\x3f\x13\x19\xc2\x12\xda\x14\x4f\x1c\x4e\xa4\xc5\x2c\x00\x5c\xbc\x0b\x5b\xc2\x83\xe7\x44\x83\xa0\xdc\xa6\x92\x79\xde\xb1\x7a\xe5\xb2\x9c\xfa\xfa\x7d\x00\x63\xf4\xe1\xbc\x93\x53\x7e\xfd\x93\x7e\x58\xa8\xac\xa7\x37\x22\x8f\x93\x7f\xf2\xa7\x41\x89\x0e\x96\xc5\x72\x5d\xa1\x1b\x45\xc4\x13\xa9\xbb\xb4\x18\x0a\x41\x99\x87\xbb\xf0\x46\xbf\xd3\x46\x29\x5d\x62\xf0\x81\xc7\x6d\xaf\x2b\x0e\x1e\xb4\xf6\x71\x2f\xee\xbe\x6f\x0a\x92\xe3\x58\xe7\xdd\xb8\x58\x96\x50\x7c\x34\x0a\x01\xf6\x8d\x1b\x0f\x08\x57\x78\xb7\xc4\x4b\x01\x4a\xa6\x67\x3e\x50\x17\x96\x95\x9a\x17\xa6\x88\xdb\x09\x59\x05\x84\x88\xa7\x11\x25\x72\xf2\x3c\xf9\xcd\xb5\x3b\x5e\xb4\xb4\x5f\x59\x53\xba\x0c\x0c\x69\x0f\x86\xbd\x75\xe8\x9a\x04\x7b\xeb\xaf\x84\x7c\x1d\xfc\x34\x5a\x4f\x3c\x7d\x3b\xee\xc9\x8b\x84\xb0\x21\x90\x03\xe8\x19\xf5\xc2\xad\xb4\x5f\x87\x17\x90\x3d\x1f\x5b\xd5\xd7\x19\x14\xc5\x6f\xca\xbc\x7a\x29\x0f\x9c\x41\x69\x9c\x95\x58\x4d\x6a\x3a\x16\x34\x0c\xb1\x7b\xaa\x1f\xc5\xe5\x46\x7a\xf7\xac\x32\x21"}, +{{0x6e,0x3a,0xf4,0x5e,0x66,0xe2,0x28,0x90,0xc3,0xf3,0xc9,0x34,0xf5,0x23,0xa4,0xd6,0x94,0x27,0x97,0x6e,0x6e,0x52,0x62,0x5f,0x8b,0xad,0x55,0x89,0x93,0x96,0x32,0x19,},{0xe0,0x97,0x36,0x4e,0x76,0xff,0x9f,0x2e,0x1d,0x16,0x7f,0x6b,0x20,0xc1,0xbc,0x58,0x30,0x08,0x5e,0x7e,0xc9,0x93,0xc1,0x38,0xf8,0xb1,0xb2,0x17,0x56,0x37,0xe7,0x41,},{0x26,0xba,0x56,0x2e,0x8a,0x40,0x65,0x70,0x82,0x07,0xc2,0x5e,0x23,0x9b,0x78,0x0a,0xee,0x38,0x79,0x4c,0xf9,0x83,0xa3,0x7a,0xcb,0xb9,0xd5,0x57,0xa6,0x5c,0xee,0xd3,0xc0,0xda,0x47,0xd1,0x7f,0x3e,0x8b,0x8f,0x4e,0xeb,0x1b,0x65,0xa2,0xc1,0x82,0xea,0x6f,0x29,0x62,0x3b,0x63,0xbb,0x0f,0x1c,0x72,0x59,0x26,0x83,0xb1,0x26,0xb9,0x01,},"\x5c\xfc\x2f\x4b\x55\x9f\x82\x05\xb3\x91\x02\x08\x76\x17\xf4\xd8\x6c\x7c\xe6\xcb\x25\x1e\x5f\x89\x60\x1d\xfc\x88\xed\x28\xe8\xd7\xa6\x70\xec\x00\x87\xd2\xea\x5d\x89\x30\x21\xc7\x04\x4d\xa2\x89\x9a\x22\xd7\x76\xfe\x90\x17\x0e\x51\xc2\x03\x25\x06\x90\xd3\x7a\x29\x45\x55\xe7\x4a\xf9\x23\x4c\xbf\x1a\xd8\xf2\x2c\xee\x89\x74\x82\x8a\x0d\x09\xe9\x55\x4b\x71\xee\x3b\xcf\x88\x0a\xb9\x83\x25\xf7\x06\x27\x21\x94\xeb\x2e\x80\xc7\x01\xd4\x41\xb5\xf8\x66\x85\x61\xb8\x88\x49\xf8\x27\xaf\x70\x3a\xb0\x95\x41\x05\xfd\x3c\x54\xb3\xf6\xec\x54\x93\x59\x6d\x0e\x3b\xc6\x78\x18\x04\x83\x10\xc4\xa3\xe0\xc5\x56\xbc\x80\x67\x5f\x20\x1f\x9b\xb9\xc6\x53\x8a\x41\xd9\x9a\xa4\x0c\x88\x6f\xc4\x31\x46\x72\x18\xd8\x19\xc2\x3e\x78\x49\x8a\xed\x06\x13\xfa\x6f\x97\x3e\x22\x11\xdf\x9f\xb8\x7f\x44\x11\x6f\x3f\xe4\xc2\x6d\x6c\xb2\xfa\x33\x4c\x87\xf7\x8c\x08\xca\x8c\x9b\x90\x41\xd8\x3a\x12\x30\x67\x7e\x0a\xf7\x88\x59\x8a\x42\xe4\x4c\xfd\xf6\x96\x4a\x4e\xe8\x0e\x38\x40\x2b\xa6\x7c\x73\xa5\x81\xe5\x52\xba\xa2\x28\x24\x25\xcb\x2c\xa1\x7c\xa9\x2e\xdf\xbf\x98\x29\x91\x02\xfb\xa7\x61\xb9\xb7\x1a\x54\x52\x14\x1b\xb9\xc1\x8d\xd9\x5f\xeb\xc2\xa7\x82\xde\x9c\xee\xc0\x8b\xd2\xee\x3f\x7f\x0c\x1b\xd8\x94\x6d\xba\x99\xcf\x9e\xa0\x86\xab\xaf\xd3\x7c\x9c\xa6\x02\x13\xf0\xde\x17\xc6\x1f\xf9\xc3\x91\xc9\x81\x8e\xd5\xcd\x85\x71\x77\x8b\x7d\xcc\x13\x22\x49\x62\x38\x6f\xb8\xca\x14\xf8\x61\xe9\x9f\x3b\x18\xed\xac\x8a\x5f\x13\x0f\x7b\xfc\xd4\x5d\x04\x5d\x0f\xf3\x4c\x81\x57\x2a\x51\x23\x63\xd6\x53\x0f\x93\x81\x3e\x5f\xb1\x0e\x9c\xb8\x33\x8a\x7f\x93\x80\x04\x91\x00\x6f\x44\x63\xe8\x9f\x0e\xd4\x53\x0e\x5f\x12\xdf\x67\x4f\x59\x89\x04\x78\x0a\xd0\x81\x2b\x1e\x35\x21\xfc\xd0\xf8\x3e"}, +{{0x5f,0x1f,0x27,0x18,0x44,0xd9,0xed,0x5a,0x6a,0x6f,0x20,0x9a,0x21,0x40,0x8d,0xae,0xa4,0x70,0xf6,0xfd,0x53,0xba,0x64,0x79,0xd7,0x40,0x71,0x05,0xb7,0xde,0x4d,0x65,},{0x60,0x85,0xd7,0xfb,0x5a,0x9b,0x2e,0xd8,0x06,0xc1,0xfd,0x30,0xa2,0xaf,0xde,0x76,0x09,0x61,0xf7,0xa3,0x6b,0x48,0xf4,0x87,0x52,0x46,0xe6,0x15,0xa2,0xbd,0x99,0x28,},{0x31,0x9b,0xb4,0xde,0xb2,0x17,0x81,0x12,0x24,0x1b,0x3f,0xb8,0xf4,0x6e,0x10,0x5c,0x3b,0x8e,0x4e,0xf7,0x21,0xeb,0x20,0x0d,0x76,0x2e,0xf3,0x63,0xe2,0x71,0x6f,0x2a,0x89,0xf8,0x0b,0x5b,0x9e,0x89,0x97,0x08,0x90,0xa0,0x98,0x92,0xad,0x6a,0x58,0x80,0x8b,0x47,0x7e,0x94,0x3b,0x3c,0xfa,0x77,0x77,0x4a,0x36,0x45,0xbc,0x74,0x5f,0x03,},"\xee\xd6\xb4\x47\x5d\xc2\x63\xbd\x22\x07\xfe\x9d\x41\xd4\x82\x82\xb7\x13\xf6\x80\xf2\xe0\x37\x38\x4f\x18\xb4\xbf\x22\x43\x47\xf5\xe4\xc4\xb0\x60\xb8\x08\xd4\x12\xea\xab\xcf\x73\x3d\xc3\x9a\x40\xc6\xbd\xa0\x50\x5c\xe7\x1f\xa8\x23\xbd\x1b\x17\x94\x84\x76\x78\xdc\x03\x4e\x79\x99\xc1\x63\x69\x34\x0b\xc6\x0c\x64\xd0\x9b\xb9\x18\x7b\x2e\x32\x60\x55\xa0\x53\xf8\xe5\x05\xea\x41\x96\x86\x14\x71\x62\x2d\xb0\xe4\x6f\x0f\x89\x54\xd8\xa1\xf0\x73\x32\xda\x4d\x8a\xc5\x57\x12\x62\x60\x09\x91\x2f\x8a\x15\xa9\xcd\x63\xa7\x4a\x03\xc9\x2f\x24\x6c\xb6\x3c\xc7\x3f\x92\xe5\x1d\xad\x1b\xc9\x71\x5b\x1e\xd3\xfe\x5f\x2e\x1b\x29\x59\xb9\xb7\x1e\x0e\x37\x36\x0e\xb2\x95\x36\xcf\x79\x71\x47\xfa\xb1\x08\x64\xd6\x14\x6c\x36\xb8\x23\x35\xa0\xce\x93\x14\x08\x47\x9c\x7e\xde\x48\x4f\xf7\x3e\x2d\xbf\xff\xc6\xc9\x22\x7e\x16\xd7\xa2\x3f\x4d\x90\xf1\x55\x84\x51\x4c\x39\x59\x4e\x17\xbf\xbb\x29\x5d\xe9\xd6\x2a\xda\xdb\x58\x9d\xbb\xe0\xb0\x6d\xc8\xda\xc5\xb3\xbf\x51\x7b\x24\xc1\x83\x7b\x39\x47\x2a\x6d\xd3\x89\x31\xff\xbb\xff\x5b\x76\x36\x38\x80\x5b\x4e\x22\x32\x1f\x7a\xfe\x92\xcd\xf5\x02\xfb\x63\xd1\x09\xdd\xcd\x9e\x40\x51\xad\x6f\x45\x59\x85\x32\xbe\x17\x95\x23\x71\x08\x51\xd3\x93\x1e\x88\x7d\x02\xc3\x45\xc7\x9c\x48\x9f\xc1\x06\xa4\xae\x16\x2f\x7d\xf7\x1a\xb9\x0b\x75\x1d\xa7\x03\x8a\x6d\xf7\x61\x6c\xfc\x11\x88\x7e\x21\x06\x8f\xb9\xe3\x3b\xe5\x66\x40\x2b\xe5\x04\xf3\xfc\x27\x42\xb8\x81\x50\x9b\xd4\xfe\x6a\x0f\xc7\x22\x64\x98\x83\xf8\xcb\x65\x55\x98\xa1\x5a\x1d\x4c\x22\x9d\xd8\x6b\x5c\xae\xb7\x11\xa0\x28\xde\xfd\x43\x11\x54\xbb\xa4\x6b\x48\x17\x2a\x4d\x8c\xbd\x45\xbc\x90\xaa\xf8\x74\xb6\x08\x5f\xa2\x84\xf5\xfe\xd6\x55\xad\x6f\xa1\x7d\x67\xb3\xb9\xa7\x96\xfa\x3e"}, +{{0x04,0x8a,0xc9,0xec,0x3e,0xcb,0x30,0xa3,0xb1,0xbf,0xda,0x9b,0x3b,0x79,0xa4,0x8c,0x07,0x93,0xb4,0x90,0x87,0x9e,0x3c,0x8a,0x5e,0x23,0xee,0x2b,0xab,0xcd,0x9b,0x7c,},{0x94,0x6c,0x18,0x6f,0xea,0xfc,0x35,0x80,0xa5,0x8d,0xdd,0x52,0x6f,0xf2,0x29,0xc0,0x47,0x20,0x25,0x0f,0x4c,0xf6,0xbd,0xe0,0x27,0x1e,0xef,0x9b,0x12,0xb1,0xc3,0xf3,},{0x2e,0xcf,0x5b,0x8a,0x59,0xa8,0xe2,0x7d,0x25,0x89,0x0a,0x2a,0xa3,0x2f,0x4a,0x06,0x73,0x27,0x5d,0x53,0x9b,0x17,0x4a,0xfa,0x7b,0x2c,0xeb,0xf2,0xe7,0x62,0x80,0xdf,0xfc,0x33,0x8e,0xde,0x85,0xac,0x8f,0x61,0x40,0x39,0x56,0x0e,0x28,0x06,0xd9,0xe1,0xe3,0xcf,0x9c,0xce,0x2c,0xeb,0x78,0x74,0xff,0xe1,0xa7,0xe8,0x0c,0xde,0xf4,0x0b,},"\xd6\x8b\xe8\xef\x7b\x4c\x7a\x42\x89\xf2\xb1\x8b\x16\xad\xe9\x7f\x4e\x4f\xa1\x64\x52\x97\x6a\xfb\x58\x16\x93\x38\x0c\xc5\x4d\xe3\x8a\x07\x58\x7f\x32\xe2\xd4\x54\x9f\x26\x59\x5f\xee\x23\x93\xbd\x06\x2e\x9b\x00\xba\xe7\x24\x98\xe4\x14\x8c\x8b\x88\x2a\x88\x40\xe1\x5b\x58\x5c\x82\xb5\xc0\xde\xfb\x23\x35\x18\x40\x99\x16\x61\x5d\xeb\x3a\x55\xa5\xf8\x4e\x6b\x3a\xab\x93\x84\x4d\xe3\xb1\xe4\xd8\x6e\x09\xf8\x89\xac\x71\xc3\x24\xeb\x12\xd0\xfb\xd8\x61\xcc\x31\x22\x95\x40\xe8\x43\xa3\x4f\x8d\x5b\xe4\x7c\x0e\xc0\xd2\x3d\xf4\x3e\x06\x81\x3f\xca\x30\x94\x39\x90\x4c\x16\x7d\x10\x43\xc0\xdc\xd4\x44\xb0\x04\xbe\x1f\xf2\x7b\x78\x62\xb0\x0e\xba\x94\x33\xb9\x4b\x0f\xcd\xc6\x75\x21\xda\x0c\x1d\x53\x58\x63\x6c\x78\xf5\x30\x43\x11\x64\xdd\xe2\x0a\x1c\xf1\x64\xf5\x1e\x29\xb8\xe6\x3e\xac\xde\xcc\x86\x9b\x41\x39\x2c\x66\x76\x64\xd9\x16\x80\xd9\xac\x51\x6a\xf5\x48\xf0\x9e\x60\x56\x4e\x81\x4e\x36\xe0\xb5\x63\xdb\xae\x55\xc6\x27\xff\xc1\x41\x58\xa5\x6d\x8e\xb3\x60\x9e\x17\x43\x81\xb2\x1d\xe4\xba\x82\x34\x44\x66\xdd\x57\x7f\x4d\x11\x03\xc4\x3c\x27\xfb\x83\xcb\x83\x3d\x87\xaf\xdf\x74\x12\xb4\x09\x09\x09\xb1\xdd\xe2\x64\xda\xdd\xce\x96\x7f\x49\x6b\xf6\xf1\x71\x12\xbf\x35\x1e\x41\x7d\xb5\x95\x3b\x13\xb8\xf0\xfc\xcc\xbf\x30\xf5\xbc\xf3\x76\x86\x1c\x12\xef\x20\xee\xc8\x9e\xd2\x3c\xf3\x84\xee\x78\xdc\x6e\xb4\x0f\xd5\x81\x1a\x7b\x23\x92\x7c\x13\xe7\xdc\x5d\xa3\xa9\x21\xb8\x83\xa9\xb2\xb1\x15\x59\x70\xfb\x0d\xa7\xd2\x99\x3d\xcd\xfd\x43\x43\x64\x2a\x9d\x5a\x63\x47\xe4\x3c\x19\x3b\x57\x93\xe4\x45\x3a\xc1\x53\x7a\xa3\xd0\x4d\xc9\xf7\x74\xe8\x40\x93\x48\x81\xd7\x8a\x39\xba\x25\x04\x38\xc5\x07\x25\x0e\xed\x2f\x6e\x07\xcc\x95\x3f\x78\x3d\x6b\x72\xb1\xcc\x61\x99\x81"}, +{{0x2f,0x05,0x7d,0x20,0xb1,0x67,0x85,0x31,0x61,0x1f,0x48,0xf0,0x03,0xb7,0xd2,0x2e,0xba,0x5d,0xbb,0xd7,0xe2,0xdd,0x41,0xb7,0xc7,0x9d,0x09,0x07,0x1f,0x85,0xe9,0x93,},{0x62,0x0f,0xc4,0xea,0xa3,0x4d,0x78,0x7d,0xf6,0x75,0xcc,0xbf,0x7e,0x89,0x32,0x04,0x82,0x8d,0xb9,0x2e,0xad,0x17,0xa1,0x16,0x5a,0xc7,0xfa,0x1a,0xb4,0x27,0x19,0xd8,},{0x30,0xdf,0x7b,0x0b,0x1c,0x04,0xfb,0x1e,0xfa,0x35,0x17,0xe9,0x28,0xd6,0xd5,0x7c,0x2c,0xa0,0xd0,0x7f,0x4e,0x04,0xff,0xb1,0xf0,0x8b,0x47,0x92,0xc5,0x93,0x7d,0xd2,0x71,0xcc,0xab,0xdc,0x00,0xdc,0xe8,0x50,0xaf,0xe5,0x0a,0xf5,0x99,0x0f,0x22,0x4e,0x84,0x20,0xa6,0x81,0xd9,0x5f,0x9f,0x7f,0x51,0x5a,0xfe,0xc1,0x02,0xef,0xd1,0x0e,},"\x6e\x35\xf6\xea\xa2\xbf\xee\x06\xea\x6f\x2b\x2f\x7a\xb1\x5f\xa9\x7c\x51\x80\x95\x8a\xf2\xe9\x0a\xf9\x18\xad\xfb\x3d\xb8\x32\x3f\x44\x7c\x7b\xf2\x6d\xc5\x34\x99\x7c\x38\xb7\xfc\x97\x7f\x64\x2d\xe2\x88\xcd\xf2\x53\x07\x1c\xac\xf3\x56\x4e\x3b\x8e\xd6\xdc\xe5\x7d\xdf\xba\x9f\xf7\x83\xba\xd2\xe7\x6d\xf1\x24\x82\x8f\xc1\x03\x1a\xcf\xad\xf0\x1a\x44\xd4\x1b\x42\x16\x1a\xd9\x06\x03\x01\xc1\xaf\x19\x28\xb9\xe5\xb7\x3b\x9b\xd2\x1c\xac\x60\xa8\x42\xb5\x04\xdc\x3c\xc3\x11\xc5\x22\xe3\xbb\x04\x8b\xf2\x21\x44\x4f\x53\xce\xb0\x8e\x77\xe9\x48\x59\x0e\x94\xed\x98\xf1\xb6\x04\xcb\x9e\xad\xc9\x3b\xbe\x74\x31\xc1\x14\x9b\x23\x19\x3f\xf9\x3e\x85\x69\xf1\x13\xe1\x68\x4d\x89\x76\xec\xae\x6f\x09\xe0\x10\x36\x14\xbe\x41\x8a\x47\x2e\xf5\x5b\xb8\x89\x0d\x72\xb3\x41\xcd\xd7\x50\x5b\x50\xa4\x55\x22\xab\x63\xed\x79\x1c\xe8\xf8\x2f\xed\xdd\x7a\x62\x0a\x4f\x6f\xb1\xd2\xfb\x0e\xd0\xc4\x56\x0d\x78\x44\x6d\x83\xb3\xd1\xb1\xbb\x56\xb3\x66\xd1\x96\x02\x0d\x06\x24\xb1\xfb\xdb\x75\xce\x73\x5d\xd4\x3e\x8e\x8d\xf1\x63\xc4\x4e\x23\x69\x93\xdc\xa3\x41\xf5\x13\x2d\x82\x5d\x0a\x4e\x39\x3a\x19\xd3\x8f\x61\xe1\x1e\x0c\xf3\x92\xcb\x9b\x64\x6e\xa2\x3c\x58\x09\x98\x24\xdd\x8d\x9f\xbe\x26\xa4\x9e\x33\xb2\x3d\xf8\x06\x07\xab\xf1\x97\x15\x79\x9c\x19\xac\xc7\x22\xed\x9b\xcf\x94\xa0\xc2\x9a\xd2\x4b\x78\xb0\xb0\x35\xb3\x24\x1c\x64\xcd\x86\xed\xea\xc8\x10\xe6\x67\x45\x69\x4b\x5e\xb1\x62\x50\x60\xed\xf2\xd9\x49\xde\x0d\x34\xf5\x22\xdf\x2d\xc6\x0a\xe6\x94\xa1\x93\xf3\xb8\x2c\x1d\x6f\x83\xa0\xcb\xb8\x40\xf4\x6c\x49\xa3\xd7\xd1\xcf\x06\xde\xaf\x96\xc6\x4f\x8f\x9e\x17\xbd\x9a\xd5\x12\xae\x63\x09\xc4\x86\xd9\xe2\xa7\x8d\xce\xec\xa4\x73\xa0\x42\x1d\xd1\xb6\x43\xc7\x87\x54\x27\x1b\x53\xce"}, +{{0x3a,0x3d,0x27,0x97,0x0f,0xe2,0xac,0xb6,0x95,0x1e,0xdd,0x5c,0xa9,0x0d,0xda,0x0f,0xc6,0xdd,0x22,0x9c,0x0a,0x56,0xdf,0x6e,0xb1,0x1a,0x9c,0x54,0xd2,0x42,0xdb,0xbf,},{0x56,0x4f,0x0d,0xc3,0xdc,0x47,0x20,0xe6,0x8e,0x44,0xdd,0x16,0x71,0x1e,0x04,0x9e,0x61,0x12,0x00,0x00,0x98,0xfa,0x62,0xa1,0xb9,0x8c,0x28,0x80,0x42,0xf7,0xc3,0xbd,},{0x22,0xeb,0x8e,0xa0,0x50,0x73,0x49,0xb6,0xa0,0xac,0xe2,0x5c,0xf9,0x18,0x0c,0xb0,0x8e,0x03,0x57,0xb0,0x45,0x02,0x90,0x5f,0xbe,0x69,0xb4,0xe2,0x1b,0x2b,0xd9,0x4e,0x22,0xcf,0xbd,0xb8,0x51,0xae,0x71,0x6a,0x5c,0x25,0x3c,0x70,0xd5,0xe2,0xb2,0x4e,0xa7,0x8f,0x35,0xbc,0x21,0x32,0x92,0x54,0x3d,0x94,0xe1,0x41,0x10,0xb2,0x41,0x06,},"\x43\x74\xf6\x1c\x2c\xd8\x8a\x3b\x89\x72\x24\x9b\xfa\x79\xb3\x6a\xb6\x9e\x3e\xd4\x84\xcc\x60\xe5\xd9\x54\x1f\xa7\x68\x6c\xf4\xee\xd1\x21\x0c\x5d\x0d\xcf\x42\xdd\x25\x97\x25\x01\x90\x91\x93\xca\x76\xae\x6e\xb7\xf4\x71\xd8\xbd\x0d\x5f\xb5\xa6\xb4\x31\xbc\x3d\xe0\xe0\x31\x8d\x50\x51\x45\x24\xde\x87\xc4\xb8\x30\x05\xdf\xb4\x12\x45\xfb\x1a\xf7\x9b\x84\xa9\x7b\x83\xd3\xca\xc7\xad\x7a\x53\x36\x4e\x2e\x9b\x21\xc9\x7b\x76\x9b\xdc\x57\xf0\x70\x31\x16\x16\x83\x80\xf3\xcc\x88\x36\x89\xeb\x4a\x7f\xa3\xb2\x6d\xbe\x12\xbc\x28\xf8\xc4\x03\x81\xaf\x64\xdf\x4b\x53\x61\xd1\x74\xcf\x75\xac\xbd\x46\x42\x87\x40\xb0\xd1\x32\x2d\x32\xbb\xe9\x48\x45\x21\x59\x66\xae\x58\x87\x77\xa8\xc0\x53\x36\xe3\x52\x30\x6d\x49\x27\x8d\x32\x8e\x49\x6d\xb6\x5e\x9e\xcf\x6c\xe6\x40\x5e\xd1\xc8\x93\x49\x0b\xc4\x8c\x13\xa1\x34\xe1\xfb\x6e\x80\xde\xbe\x6d\x32\xfc\xe6\xef\x74\x78\x3c\x8d\x77\x98\x0a\x44\x1a\x26\xae\xb4\xfd\x83\xcc\x85\x53\x52\xce\xdc\x18\x8f\x52\x79\xce\x21\x1f\x74\x4a\x40\xb2\x3c\xe7\xff\x24\x43\x7a\x1d\xd3\x37\x3e\xc5\xb2\x90\xda\x1f\x94\xf4\x3a\x07\xa3\xff\xea\x5b\x5f\x67\xb5\x2c\x19\x61\x85\xbc\xe9\xe9\xa8\x58\x25\x7f\xcd\x7a\x8e\xba\xf9\x04\x0e\xd0\x91\xfa\xce\x5a\x15\x5a\xa4\x47\xfa\x15\xe1\x21\x22\xd2\x5e\x8f\xc3\x6e\xae\xe2\x13\x7c\x7b\x3a\xa3\x0b\x7e\x3f\xf6\xcc\x86\xb6\xdc\xb9\xea\xf4\x9c\x95\x76\xf0\xf4\x62\x00\x84\x39\xcb\x1a\x3a\xba\x01\x3e\x89\x7a\x0f\xaf\x99\x4c\xb7\xd5\x9e\xde\x57\x74\xbb\x14\x47\x74\xf7\x3c\xa3\x0e\x64\x14\xa7\xcc\x7c\x74\xb2\x0c\x51\xa1\x40\x4d\xdc\x41\x9e\xf7\x62\x45\x93\xe9\xbc\xfb\x37\xc0\xa7\x62\xea\xb6\x8f\xac\xa5\x86\x34\x43\xe1\x6e\xdb\x75\x9d\xbc\x87\x88\x73\x2b\x9e\x4f\x59\xc1\x11\x92\xc3\xfc\xc8\x72\xaf\x55\xf3\x2d"}, +{{0x06,0xd4,0x98,0x31,0x8d,0xa4,0x56,0x24,0x2b,0x9c,0x3b,0x9a,0xb6,0xd5,0x32,0xa1,0x28,0xfc,0xe0,0x44,0xf5,0x38,0x82,0x68,0x2e,0x92,0x62,0x14,0x9c,0x16,0x52,0x88,},{0x41,0x35,0x17,0xaa,0x63,0x20,0x0a,0x17,0x17,0x32,0x09,0xa4,0xb3,0xe7,0x8a,0xb9,0x38,0x3c,0xb4,0xe3,0x9e,0xfd,0x67,0x94,0xc4,0x6a,0x2d,0x13,0xfa,0xfa,0x99,0xc0,},{0x82,0x50,0xf7,0x6d,0xc5,0x99,0xc5,0x12,0x87,0x87,0xe4,0xf6,0xd3,0xda,0x23,0x17,0x33,0x30,0xce,0x33,0x20,0xdb,0xa9,0x59,0xbd,0x71,0x4c,0xc8,0xcc,0x07,0xc6,0x79,0x45,0xd6,0x3e,0x75,0x66,0x2c,0x07,0x5e,0x26,0x74,0x60,0xab,0x7b,0xf5,0x61,0xf2,0x4f,0xaa,0xe3,0xb4,0x1d,0xbf,0x67,0x68,0x99,0x19,0x1e,0x3b,0x02,0xb5,0xaf,0x0a,},"\x3f\xe3\x0e\xcd\x55\x07\x7a\x6e\x50\xdf\x54\xbb\x1b\xf1\x24\x8b\xea\x40\x63\xe3\xfa\x75\x5f\x65\xfc\xd1\x15\x9e\xe0\x46\xef\xd0\xeb\x5f\x2f\xbb\x38\xb5\xc0\x09\x47\xc9\x7d\xc8\x79\xb3\x6b\x9e\x53\x61\x92\x28\x60\x86\xd0\xdc\x12\x05\x36\x10\x38\x61\x74\xa7\xc5\x6f\x22\xa8\x5b\x73\xff\x20\x8c\x59\x44\xf3\x93\x23\x6c\x32\x41\x58\x09\xda\x03\x6e\x73\xca\xd8\xfc\x3c\x30\x37\x80\x64\xa7\x6a\xfa\x93\x0a\x3b\xaa\xe9\xaa\x35\x70\x61\xa8\xc5\xe8\xe7\x56\xa9\xce\xcf\x94\xb7\x2d\xf4\x3f\xac\xd8\x8f\xa4\x9c\xb4\x94\x8c\x63\x68\x31\x8a\x6b\x1e\x5c\xff\x52\xe5\x87\xec\xdf\xae\xfd\xb6\x90\x81\xf2\x8c\x2d\x13\xbf\x8e\xab\x81\xdb\xaa\x5e\x37\x28\xc4\x31\x7f\xb7\x93\xdd\x19\x6b\xca\x0f\xe5\x4a\x6c\x24\x2c\xf2\x6e\x2d\x12\x9b\xa0\xd8\x2a\x2c\x3a\x45\xbc\x8d\x1d\xfd\x6f\x54\xf8\xda\x4f\x51\x89\xc9\x1a\xc2\x14\xfd\xab\xf4\xc5\x97\x38\x1b\x2e\x5c\x40\xcc\x71\xfa\x70\x51\xcf\x2e\xa9\x39\x06\xa3\x7d\x57\xdf\x12\xd5\xc7\xe5\xcd\x77\xc9\x07\xe4\x42\x56\x63\x15\xba\xe5\x1a\x22\x22\xd6\x2e\x3f\x42\xd1\x76\x78\x82\x63\x7d\x66\xa1\xd5\x30\x5a\xb4\x01\x0a\x0e\x49\xc5\x7d\xef\x69\xdc\xea\x83\x9e\x1b\x76\xa4\x11\x35\xba\x95\x2c\xc4\x24\x95\x0e\x8d\x3a\xac\x19\xe1\xd9\x3d\xe7\x75\x7c\x15\xff\x99\x97\xb3\xd2\xa8\x61\x3c\xd9\xa1\x64\x78\x1d\x1b\xe3\x31\x79\x9f\xa6\x10\x9c\xef\x61\x43\x05\xa1\x95\x8f\x62\x90\x3c\x8c\x9e\xa0\xb2\x3b\xa7\x06\xd4\x9c\x54\xba\xcc\xc1\xe6\x3c\xb4\xbf\x14\x78\x5f\xc7\xb0\x62\xa9\x80\x03\x49\xbd\xb0\xbb\x92\x72\x60\xb6\x77\xb6\x0f\x10\xe6\x2c\x87\x80\xf3\xeb\xb5\xeb\x6f\xf0\x36\x02\x63\xd4\x57\xab\x52\xfd\x11\x25\xc9\xce\x04\x6a\x95\xd8\x9d\x28\x73\x50\xc8\x04\xcf\xd4\xff\x2b\x2d\xdd\x18\xa9\xe1\x35\x19\xf2\x0b\x4d\x1e\x05\x1a\xf6\x24\x64\x0f"}, +{{0x8e,0x8e,0x1d,0xb5,0xb1,0x10,0x2e,0x22,0xa9,0x5c,0x47,0xaf,0x36,0x61,0x46,0x9f,0x00,0x0a,0x33,0xf1,0x3b,0x8b,0x87,0xb1,0x15,0xd2,0x45,0x2a,0x41,0x1f,0x6f,0x39,},{0x56,0xd7,0xb3,0x16,0x9a,0x95,0xc2,0x29,0x98,0xec,0x93,0x79,0x25,0xbd,0x7c,0xad,0x13,0xcc,0x65,0x80,0x8c,0xd5,0xd3,0x4a,0x6c,0x4d,0xa8,0x70,0xea,0xf3,0x23,0x64,},{0xf6,0xee,0x5e,0x13,0xcf,0xaa,0x36,0x2c,0x89,0x71,0xd5,0xa4,0xa8,0x79,0xa7,0xe3,0x69,0x66,0x52,0x5c,0xcd,0x86,0xc5,0xa4,0x8c,0xba,0x08,0xd9,0x13,0xec,0xe1,0xa7,0x9c,0x4c,0xd1,0x46,0xb8,0xe9,0xc6,0x51,0x25,0xfb,0xad,0xf1,0x7b,0xac,0x1c,0xab,0xcd,0xe8,0xfd,0x17,0xcf,0xd6,0x8f,0xa1,0xf9,0xc4,0x4e,0xa6,0x1c,0x08,0xa4,0x05,},"\xb2\x46\x34\xfb\xdd\x1b\x76\x61\x31\x5d\x9d\xc1\x53\xba\x90\xd6\x6a\x88\x62\x2a\x41\x58\xf8\xbc\xff\x25\xba\x9c\x29\xe6\x5f\x29\x7f\x8e\x60\x31\x18\x00\xb7\x33\x1b\x69\xfc\x20\xc9\xf8\x5b\xb7\xc1\x84\xbd\x40\x86\xb3\xa9\xf9\xa2\x71\x02\xb6\x23\x62\xbd\xb4\xfa\x5b\x20\x15\x94\x25\x0f\xc6\x28\xfd\x2e\x0e\x0d\x1b\xe0\x3d\xcf\x81\x8c\x60\x94\xc4\xc2\x91\x21\xcb\x2b\xf6\xd9\x08\xed\x8a\xab\x42\x7c\x37\x71\xc0\xc9\x5f\x0a\xc1\x46\x9a\x08\x10\xb6\x03\xa4\x70\x28\x2e\x59\x80\xa6\x07\x29\x19\x7f\xe6\xc2\x0e\xf6\x81\xcd\x1b\x96\x93\x2d\x20\x58\xf8\x96\xea\x74\x16\x42\x2a\x7e\x54\x1f\x22\x4a\x5f\x04\x25\x30\x80\x74\x1c\x5d\x4e\x3e\xb0\x39\xdb\x6b\xa0\x51\xb4\xca\x54\x17\xce\x8a\xfd\xc7\x02\x14\xba\x4d\xcc\x85\xb6\x23\xd1\x1e\x68\x1c\x60\x09\xae\xe4\xe6\x13\x0a\x83\xed\xd0\xd2\xc9\x9f\xb0\x64\x7e\x11\xed\xe7\x30\x1a\xe5\x6b\x59\x90\x4e\xf7\x02\x57\x32\xcd\xe0\x38\x80\x1e\xc7\xe8\xd9\x0a\x9a\x1b\xba\x04\x7f\xe6\x28\x35\x1b\x3b\x89\xd0\xbc\x5a\xe6\x65\xa7\x00\x89\x1f\x09\xeb\xee\xc0\x55\x91\x84\x2a\xdf\xcc\x25\xad\xc3\xc7\x1c\x1e\xbc\x4a\x31\x2e\x54\x71\xbe\x67\x25\x3b\x0e\x94\x28\xb0\xca\xe3\x76\x45\xa0\xf7\xec\xb8\x9d\xd7\x9f\xbd\x9b\xe2\x87\x54\x33\x66\x7a\xe0\x7d\x74\xa7\x98\x3c\x4c\xea\x60\x1e\x72\xe9\x75\xc2\x1d\xf9\x93\xe7\xfa\x22\xa9\xfa\xbd\x45\x45\x5d\x45\xe3\x70\x31\x55\x8e\x13\xa7\xa4\xf5\xf4\x97\xea\x78\xfb\x73\x99\xf8\x83\x8c\x0f\xd5\xde\x4e\xbb\x66\xdb\x29\x0f\x43\xa4\x86\x7d\x50\x53\x09\xf1\xc1\xbc\x27\xe9\xfa\xbc\xbb\xa7\x13\x02\xfc\x12\x04\x71\x5c\xe3\xfc\xb0\x90\x5b\xfa\x41\x1c\x9d\x1c\x9a\xb4\xa3\x99\x54\xe5\x0b\x8e\x0c\xf7\x36\xc1\x02\x89\x56\x3b\xdf\xa9\x67\x55\x3c\x36\xcd\x9e\x55\x5b\xc8\xcc\x56\xbe\x59\x48\x47\xde\x9f\x26\xf9"}, +{{0x38,0x84,0xb8,0xb7,0x9a,0xbf,0xd3,0xbe,0x6c,0x13,0x98,0x5e,0xb8,0x59,0xab,0x74,0x3f,0x15,0x7c,0xd9,0xde,0xb8,0x1b,0x2f,0xe9,0x7e,0xa4,0xd6,0x17,0x3e,0x46,0xf5,},{0xbd,0x7f,0xd9,0xa8,0xde,0xf1,0x3a,0x54,0x2e,0xd2,0xf2,0xfb,0x04,0x88,0x86,0x88,0x5b,0xa9,0xb5,0xce,0x59,0xcb,0x70,0x19,0xfb,0x54,0x66,0x79,0x86,0xee,0xbc,0x26,},{0xf4,0x20,0x6f,0xcd,0x34,0x50,0x24,0x41,0xd5,0x4a,0x73,0x32,0x3f,0x33,0xa5,0xdb,0xb4,0xc9,0x85,0x57,0x31,0x9f,0x21,0x24,0x6f,0x26,0x0f,0xfb,0xbe,0x58,0x44,0x88,0x6d,0xb5,0x67,0xf4,0xb6,0x3c,0x47,0x94,0x3d,0xbb,0x78,0xfc,0x35,0x65,0x7d,0x7c,0x04,0xd4,0xfe,0xb0,0x42,0xff,0x85,0x36,0xf6,0x72,0x92,0x5c,0x31,0x9e,0xfb,0x09,},"\x12\xad\xaf\xe3\x0e\xaf\x2b\x9c\x72\x03\xca\x5d\x44\xb9\x7f\xfe\xd4\xbf\x65\x17\xa4\x99\x88\xe4\xe6\x76\xc8\xe3\x14\xad\xbd\xbe\x23\xd8\xf2\xd3\xe2\xb0\x81\xa7\x02\x4f\xa5\x25\xab\x5a\xae\x26\xe6\x00\x57\xc1\x01\xe8\xf3\x68\xd3\xad\xdb\x93\x76\xc4\x68\x2c\x1f\x42\x24\xd7\xf1\x49\xa8\x47\x4b\xb9\xa8\xf6\x63\xef\x21\x0e\x95\x72\xce\x82\x9d\xa3\x88\xd8\xaa\xe7\x2a\x46\x71\x41\xad\xc1\x53\x47\x3b\xe3\x65\x3b\xaa\xa6\x4b\x5b\x1e\x2e\x30\x68\x3f\x6f\x06\xda\xc2\x78\x4d\x5b\xbf\x0d\x08\x2a\xab\x47\x30\x5e\xd8\xa8\xef\xd0\x88\x6c\xe6\x3a\x17\x93\x15\x22\x5d\x1e\x4d\x4f\xfc\xf1\xf2\x4a\xc2\xf4\x64\xcf\x5e\xd3\xa8\xb6\xd3\x99\x84\x54\xf1\xc0\x2c\xdb\xf0\xa4\x44\xee\x2b\x59\xdd\xbe\x0a\x17\x4a\x0d\x93\x7f\xa6\x28\x65\x08\x8a\xc6\x47\x49\x99\x57\xd2\x81\xc6\x94\x98\x03\xa5\xfb\xdf\xdd\x0d\xd9\xe9\x1b\x69\x76\x86\x1f\x3c\x5f\x21\x26\xf3\x9a\xac\x93\x5b\xe0\x9f\x4b\x97\x15\xbd\x4f\x0d\x5c\x55\xdf\x73\xa6\xb9\xf2\xc0\xad\x26\xce\x49\xd8\x22\xbf\x85\xbf\xa2\x34\x6f\x31\x65\xb0\x38\x59\xa7\x1c\x3d\x2a\x7b\x86\xdb\x6e\x9f\x2e\x5d\x7b\x16\x9a\x91\x0e\xeb\x7e\xf3\x8f\xbd\xfb\xbe\xc4\x3a\x9a\x25\xf0\x4b\xc3\xac\xfd\x3b\x06\x91\x54\x2a\xb6\xde\x9d\xb6\xf0\x30\x58\xf9\x58\x40\x24\xf9\x91\x8e\xde\xcd\x90\xfb\xb8\x57\x35\xd6\xdc\xec\x5b\xd5\x93\xae\x63\xe2\xcc\x96\x55\x35\x99\xa3\x10\xf8\xf2\x00\x9b\xa9\x53\x71\x19\x6b\x4d\x5b\x80\xe7\x55\x96\x37\xf2\x29\x26\x77\x8b\xe5\xe1\xcc\xef\x51\x26\xe2\x44\x3f\xa9\x39\xc2\xa5\x3d\xdd\xb0\x49\x61\xee\xfd\x34\xe5\x38\xcd\x8d\x7f\x0b\xec\x2b\xff\x1e\xf0\xd3\xa4\xbd\xd3\x58\x31\x76\x37\xf4\x2d\x59\x55\x38\xc1\x12\x22\x51\xa9\x4e\x96\x3d\x1f\x81\xe7\xb9\xae\xb1\x64\xf9\x5d\xa9\xa4\xed\x75\x29\xb8\x45\xeb\xc9\x61\xb2\x7b\x5c\x19"}, +{{0xec,0xd5,0x19,0xf2,0x87,0xad,0x39,0x50,0x52,0xb0,0xb3,0x0d,0xea,0xc3,0x41,0xd2,0xa9,0xdf,0x13,0xd6,0x56,0x7c,0x89,0x1c,0x81,0x3a,0x0c,0x9c,0xa5,0x2e,0x87,0x1e,},{0x8e,0xe9,0x4c,0x58,0x8e,0x0b,0x34,0x35,0x85,0xfc,0x67,0x48,0xfd,0x1b,0x54,0xb5,0x77,0x0c,0x64,0xe9,0x93,0x7a,0x56,0x35,0x7a,0x48,0xd4,0x4a,0xe2,0xf5,0x18,0x24,},{0xe8,0xf5,0x1b,0xe7,0x3f,0xc4,0xe0,0x23,0x5a,0xa1,0x53,0xa2,0xe1,0xb3,0x54,0xe9,0xc5,0xd2,0xd3,0x3a,0x11,0xae,0x0e,0x33,0x34,0x78,0xde,0x1d,0x8e,0x6c,0x44,0x56,0xd2,0xe2,0x50,0x82,0x4c,0x32,0x46,0xca,0x0e,0x8d,0x6a,0xe3,0xe1,0x66,0x77,0xa9,0x73,0x44,0x14,0x41,0x08,0xc1,0x3b,0x95,0x9e,0x1d,0xaf,0x51,0xcf,0x0f,0xe5,0x01,},"\xaa\x71\xbe\x5f\x55\x7e\x10\xc9\xfb\x5f\x09\x1a\x3a\x27\x44\x53\x94\x7c\x07\xa0\xe2\x5b\x26\xf9\x50\x92\x24\x54\x1d\xff\x76\xf4\xd9\x6e\xff\xd0\xd5\xa4\x1d\x31\x9b\xc9\x32\x1a\x86\x66\x7d\x55\xcf\x49\x43\x2f\xb5\xc3\xe7\x15\x38\x8f\x3f\x10\x6c\x91\x74\xb1\x61\x0c\x8f\x30\x75\xd5\x93\x1c\x29\x00\x99\x38\x5c\xe9\x24\x9e\x23\x51\x28\xe9\x07\xc5\x33\x90\x03\x6f\xbf\x5d\xa9\x68\xf8\xd0\x12\x33\x69\x58\xde\x90\xc5\xe8\xe6\xb1\x01\x6a\xd4\x3f\xb5\x7c\x8e\x28\x8d\xaf\xe1\x4e\x90\xe6\x4b\x63\x79\x1e\x5c\xbe\x55\x7e\x02\xdf\x8a\xc9\x37\x06\x42\xa7\x1f\xaf\x85\x10\x75\xe5\x56\x5f\x6f\x9a\x26\x7f\x4f\x6b\x45\x4c\xe4\xc5\x47\x48\x10\xb8\x04\x84\x4d\xda\x38\x39\x29\x39\x71\x97\x93\x24\x6a\xa4\x74\x54\xb9\xb0\xe8\x2e\x98\x03\xc0\x99\x35\xd0\x02\x7f\x39\x95\xcc\xa9\x71\x30\x69\xbb\x31\x02\x7f\x7b\x2a\xf1\x2f\xe5\xfe\xec\x7e\xeb\x06\x84\x3d\x82\x96\xec\x56\x82\x26\x2a\x07\xda\xe7\x47\xed\x7b\xc8\x21\xec\x17\x01\x8d\x89\x9f\xd1\x67\xb3\x6a\x7e\x37\x73\xb4\x27\x49\x9d\x99\xdc\x58\x3b\xbe\x4b\x42\x9a\xfa\x6a\x26\x59\x39\x53\xf9\x43\xe4\x67\x3b\xdd\x0d\x2a\x84\x42\x56\x13\x16\x03\xcd\x09\x03\x25\x6f\x33\x4d\x4f\x8e\xc8\x2d\xe1\x15\xb6\xca\x53\x38\xc7\x5c\x8b\xaa\x44\xb4\xba\x96\x3c\x7c\x78\x51\x0d\x8d\xe9\xb2\xa5\x85\x2f\x42\xf3\x46\x3c\x68\x5f\xb3\xa6\xda\x61\xa8\xe0\x89\x26\x62\xd6\xa2\x50\xfc\xaa\x6f\xef\x74\xd4\x50\xfc\x45\x7b\x98\x71\xd0\x8b\xb5\xbe\x30\x11\x29\x4a\xc8\x88\xfc\xe2\x15\xd5\x35\xc3\xb1\xa4\x3b\xb4\x7e\xfe\x3a\xd2\x5d\xa1\x59\x19\x1a\xed\x55\x19\x54\x69\xc5\x90\x93\xff\xb2\x4f\x65\xd6\x0c\x40\x20\xbf\xbe\x64\x7f\xf5\xdb\x7a\xb8\xa0\x1d\x5e\x48\x7b\x0b\x1b\x64\xef\x25\xda\x15\x6d\xb1\x42\xe6\xad\x87\x2a\x4d\xc1\xee\x9b\xa6\x68\x46\x52\x65\x37\x9e"}, +{{0x19,0x3f,0x3c,0x63,0x0f,0x0c,0x85,0x5b,0x52,0x9f,0x34,0xa4,0x4e,0x94,0x49,0x70,0xf4,0xa6,0x97,0x2e,0x6c,0x38,0x59,0x35,0x9c,0x2e,0x0c,0x87,0x62,0xba,0x9e,0xaf,},{0x32,0x56,0xf2,0xc8,0x2e,0x7c,0x80,0x12,0x01,0x21,0x01,0x40,0x56,0x9f,0xaf,0x18,0x50,0x7e,0x60,0x33,0x8c,0x2c,0xc4,0x11,0x8b,0xb1,0xce,0x60,0x5b,0x0e,0xbe,0x61,},{0xb1,0x25,0x10,0xac,0x5f,0x2f,0x6d,0x33,0x36,0x0c,0xdd,0xc6,0x72,0x91,0xd6,0xc2,0x70,0xfd,0x9e,0xe6,0x2d,0xc0,0x86,0xb3,0x8d,0x93,0x2d,0x26,0x47,0x3f,0xe9,0xa2,0x4e,0xfb,0xd4,0x24,0x88,0x67,0xea,0x7e,0x91,0x5a,0x30,0xc5,0xbf,0xb3,0xb8,0xb1,0x9a,0xa0,0x1a,0xa2,0xfe,0xbf,0x0d,0xac,0x6c,0xfd,0x66,0x38,0xa2,0xba,0x7e,0x0c,},"\x98\x62\x3f\x65\x16\x98\x08\x5b\xde\x02\x76\x2e\x8c\x33\x21\xf1\x4d\xa1\x61\x9b\x5c\x3f\x7c\x1a\x56\x8e\x8c\x26\xff\x0c\x62\xfd\xcc\x41\x24\x75\x91\x2e\xb8\xe8\xc4\xb0\xd3\x09\x18\xb8\xff\xee\xf3\x50\x93\x15\xe5\x8d\xa3\x59\xcd\xc2\xf2\x6b\xeb\xfb\x57\x03\x95\x3b\xe1\x6b\x8f\x3b\xeb\x1e\x54\xa1\xab\xee\x0a\xeb\xe2\x4e\x64\xdb\xe8\x73\x40\x2e\x15\x6f\x37\xdf\xc1\x68\xea\xf8\xa1\x14\xce\x08\xa6\x79\x5d\x3f\x64\xf5\x15\x1e\x9a\x8b\x82\x75\xcc\x7b\x49\xa6\xb8\xd8\xa6\x6b\x6d\x4b\x76\x32\xef\x80\x74\x0d\xc1\xc1\xb0\xa3\x8d\x1a\x28\xf7\xc1\xb2\x9f\xa4\x45\x41\xc1\xaa\xd3\x54\xd4\x59\x0c\x23\x1d\xae\x68\x7a\x2a\x8f\xed\x09\xe8\xc1\xeb\xbf\xcc\x38\xf3\x47\xbf\x06\xd9\x45\x77\xe4\x9a\xd1\x39\xf7\x10\xed\x8b\xb1\xfd\x07\x66\x3c\x03\x20\x84\x6f\xbb\x45\x5a\xb8\x37\xef\x96\x4a\xe7\xd4\xec\xee\xa4\x5f\xd7\xbd\x8d\x50\x9f\x82\x1e\x6e\xb0\x27\x49\x4e\xfd\x8d\xd8\xe9\x92\xb8\x86\x98\xee\xc2\xeb\xc5\xe0\x30\x25\xbe\x78\x9c\x18\x01\x3f\x20\x1f\x77\xaa\x2d\x34\xf5\x68\x64\x60\xe4\x3f\xb4\x89\xe0\x87\x76\xf9\x8b\xcd\xe2\xce\xeb\x9d\x4f\xaf\xdf\xfe\x03\x75\x60\x43\x71\xec\x32\xf4\x6b\x81\xfe\xc4\x74\x38\x29\x08\xe9\xd2\x50\xa0\xba\x27\x80\xa7\xd6\xdf\x40\x7b\xd2\xb1\xeb\x12\x67\x48\xd7\x25\x11\xb9\xb0\x69\xeb\x1c\xd4\x42\x70\xf2\x9f\xe8\x4b\x9a\x71\x77\x51\x83\x1d\x04\xc2\x81\x8e\x40\x8f\x22\x78\x93\x76\xc6\x1c\x2c\xa4\x5e\x32\xe7\x88\xea\xd3\xa7\x53\x6b\xf0\x9d\xa8\xaf\x47\x03\x90\x2f\x55\x16\xa0\x20\xd8\x92\x63\xe9\x37\x01\xa2\x56\x5e\xef\x12\x70\x41\x89\x25\xf3\x5a\x28\x8e\x32\x7b\xab\x62\x8a\xc2\xf0\x24\x8c\xfb\xca\x34\x82\xe2\x65\xd1\x62\x1c\xc3\x43\xc3\x1f\x65\x49\x3f\x06\x4b\xad\x0d\x76\x02\x46\x07\x15\xfa\x48\x6f\x29\x42\x63\x46\xaf\x53\xe3\x33\xb7\x5f\x59\x05"}, +{{0xa8,0x8a,0xd0,0x04,0x8d,0x38,0xc4,0x4c,0xeb,0xe7,0x35,0xea,0x38,0x02,0xca,0x57,0x6e,0x37,0x12,0x1c,0x7d,0x4d,0x76,0x0d,0xfd,0x88,0xde,0x16,0x63,0x06,0x4a,0xbb,},{0x14,0xdd,0x8b,0xb3,0x06,0x80,0x3e,0x5a,0x75,0x8e,0xd6,0x8a,0xd2,0x1d,0x07,0xd8,0x81,0x61,0xd5,0x0f,0x1c,0x74,0x71,0x37,0x77,0xda,0x12,0x09,0xaf,0xba,0xea,0x0b,},{0x13,0x41,0xa1,0x48,0xda,0x45,0x93,0xc8,0x8e,0xbc,0x5a,0x58,0x82,0x1e,0xef,0x77,0xf9,0x21,0x86,0x39,0x0f,0xf6,0x33,0xe7,0x62,0x07,0x08,0x4e,0x78,0x74,0xcc,0xf0,0xeb,0x1f,0x9e,0xc7,0x0a,0x3a,0x3f,0x96,0xb5,0x89,0x34,0xbc,0xb0,0x61,0xff,0x92,0x01,0x24,0xf7,0xe5,0x80,0xfa,0x2b,0x0b,0x27,0x95,0x83,0xad,0xf9,0x23,0x2d,0x0c,},"\x2c\xe8\xbc\xa2\x61\x78\x91\x3b\x16\x76\xe9\x0f\xfe\xfd\x94\x5b\xc5\x61\x98\x26\x60\xe2\xa7\x5d\x48\x2f\xf3\x0a\xab\xa1\xba\x43\xf8\x2d\x2e\x6b\x90\x9e\xc1\x0f\xc0\x97\x89\xff\x5c\xf3\x2a\x51\x80\xb6\x01\xea\x80\xfa\xde\xce\x6d\x7e\x7b\xae\xef\x48\x1d\xc6\x97\x9e\x2f\x65\x8a\xe0\xf6\xd8\xe4\x16\xb9\x32\x98\xf7\xd3\x40\x31\xbb\x76\xf7\x16\xed\x99\x1a\x16\xd0\x9a\x58\x2e\x58\xba\x40\x03\xac\x17\xbe\x8b\x44\x69\xe1\xa8\x89\xb2\xfb\xb2\x28\x9e\x98\xaf\x1c\x6d\x5b\xbe\xe7\x77\x56\x71\x3c\x07\x78\xb0\xdc\x44\x6a\x1f\x6c\x48\xc4\xd4\x08\x18\xec\x79\x99\x05\xf0\x69\xbc\x95\x34\x16\x57\xca\x5d\x02\xb7\xa5\x39\xa1\x3a\x02\xcd\x03\x76\xa5\x0e\x83\x43\xc0\xdc\x20\x34\x6d\xe5\x27\x5b\x1d\xcd\x4a\xd7\xaf\x72\x51\x31\xac\x75\xe9\x54\x82\x5d\x30\xea\xa5\x7a\x68\xbb\x98\xdf\xc4\x1c\xaf\xe5\x71\x05\x56\x64\x7b\x38\x7d\x9b\x7f\xd4\xe4\x76\x51\xe5\x13\x80\x50\x79\x8f\x6d\x40\xf4\xee\x71\x20\xb5\x8f\x74\xda\x94\xd7\x3c\xac\xbf\xd3\x93\xd1\x34\x73\x88\xee\x00\xb7\x9b\x8d\xbf\xeb\x57\x81\x41\x21\xbd\xda\x60\xc6\x27\xdc\xe1\x47\xd4\xd5\x68\xd7\x90\x52\xe9\x7b\x9a\x5f\x3e\xb5\x40\x7c\xc4\x64\x61\xa5\x5e\x18\xa9\x60\xd8\x09\x4a\x5f\xea\x48\xb6\x93\x75\x29\xcc\x4e\xc9\x19\xcd\xbe\xdf\x91\x85\x45\x6d\xc0\x0e\x8d\x98\xad\x15\x37\xee\x10\xa0\x57\xf4\xee\xc4\xb8\x1d\xc6\x03\x92\xfc\x91\x88\xd3\xe5\x61\x78\x59\x65\x09\x2e\x44\x31\x7f\x2a\x48\xe3\x66\x05\xfc\x58\x3f\xc1\x73\xb0\x5d\xb9\xdc\xbc\x75\x57\xd0\x64\x87\x39\x0f\xbb\xba\x77\xaf\x3a\x01\x4e\x1a\xc3\x51\x39\xca\xa1\xc5\x3a\x8d\x17\x34\x7f\x17\x8e\x1c\x54\xd0\xf5\x2b\x40\xe9\x10\x42\xc9\x3e\x7e\x48\x1d\x79\x2e\x28\x8f\xc2\x7e\x4c\x2f\xcf\x11\x1f\xe9\x7d\x9e\x23\x37\xd2\xfc\x1c\x30\x98\xf0\x66\x84\xa3\x1d\x55\xeb\xf3\x62\xc0\x27"}, +{{0x3f,0x59,0xd6,0xa0,0x18,0xf5,0x0a,0x82,0x21,0x17,0xe5,0xb4,0x73,0x60,0x9e,0x30,0xcd,0x64,0x92,0x0c,0xa1,0xc2,0x75,0x0d,0xcb,0x09,0xea,0xab,0x80,0x7a,0x3e,0xac,},{0x45,0x7d,0x0e,0x59,0xc1,0x1f,0x34,0x8f,0x3b,0xfb,0xdd,0x3f,0x32,0x7d,0xe7,0x8c,0x0a,0x75,0x77,0xc0,0xae,0xef,0x42,0xd4,0xc1,0xe5,0x67,0x00,0xd1,0x08,0x80,0x8b,},{0xd7,0x42,0x5e,0xa1,0x94,0xa6,0x71,0x5c,0x45,0x2e,0xc4,0xf6,0xd6,0xc7,0x6e,0x6d,0xd3,0x74,0xd3,0xca,0x7a,0xe7,0xa1,0x19,0x95,0xd0,0x2b,0x94,0x2d,0x4a,0x31,0x87,0x0d,0xd7,0x34,0xc1,0x2f,0xca,0x89,0xa8,0xeb,0x02,0x13,0xeb,0x13,0x9c,0x14,0xa8,0x7a,0x6a,0x33,0xe8,0x18,0x60,0x3b,0x2e,0x31,0x30,0x23,0xfa,0x58,0x73,0x7d,0x0e,},"\x7d\x10\x3a\x6c\x6b\xa2\xd0\x90\x87\xee\xf2\x25\x4c\x1c\x90\x3f\x06\x76\x95\xa5\x4c\x45\x15\xe4\xd1\x3b\xc1\xfb\xfb\x54\xd6\xe7\xa1\x67\x34\x9c\x14\x80\x99\x76\xda\x04\xa7\xe5\x8d\x96\xb4\x0a\xac\x3b\x2b\xdd\x14\xb9\xb5\x03\x22\xbb\x11\x64\x5f\x05\xe5\xe9\x78\xbc\x7f\xbd\x02\x49\x2e\xf8\x8f\x87\xd6\x68\x28\x0f\xd7\x08\x37\x32\x07\xff\x67\x0f\xcd\xa9\x7d\xf8\x48\x5d\x5e\x46\xdc\x3b\xd0\x43\x47\xf4\xd7\x52\x7e\xab\x27\x18\xf7\xd9\x3d\x13\x2b\xa7\x75\x82\x18\x89\x4e\x75\xa7\xde\xab\xe6\x93\x33\x5b\xa0\xdc\x73\xbf\x26\xc2\x88\xbf\xe9\xbe\x8a\x73\x6d\x75\xe5\xe0\xea\xa7\xbb\xe8\xd0\xb7\x7a\xbd\xd5\x14\x6e\x0f\xc9\xb3\x0d\xb9\xf0\x7c\xf4\xbf\x36\x26\x0a\x1f\x41\x41\x03\x31\xf8\xb4\x7c\x6b\x38\x33\x8c\x6d\xc9\xe8\x01\xff\xe1\xd5\x85\xf9\xb7\xfc\x31\xe9\x77\x8b\xca\x30\x27\xc2\x32\xc0\x74\xcb\x18\xe5\xb7\x29\x97\x00\x5f\xfe\xee\x4b\xf3\x7c\x8f\x87\x4b\x1b\x24\x6a\x63\x45\x41\x5d\xac\xac\xa7\x07\x5a\x60\x44\x3a\xc3\x31\x92\x36\xe2\x3c\xf6\xb7\x54\x47\x40\x80\x70\x52\x11\x49\x84\xb8\xd8\xf7\xe8\x57\xdc\xc6\xfa\xec\x88\x69\xcf\x96\xb9\x97\xdf\xa9\xaf\x91\x84\xad\x62\x3f\x1d\x90\xb8\xca\x75\x9b\x44\x8e\xab\xfc\xe1\x8c\x17\xcf\xdf\x9a\x3e\x33\x12\xe6\x3e\x5f\x08\x4c\xea\x90\x4c\x1c\x90\x99\x13\xcc\x4b\x19\xd0\x44\xa3\x72\x00\x34\x97\x3c\x73\x84\x94\x9b\xd6\xf9\xba\x92\x56\xf9\x8c\xd3\x94\xc5\x66\xda\x83\xc3\x11\x80\x10\x9f\x16\xd1\x03\x47\xb7\xe3\xe9\xdd\x6b\xe3\xbd\x3c\x77\xff\x1a\x79\x96\xa0\x78\xdc\xf8\x9d\xcd\xce\x2d\x1b\x61\x56\x95\xf4\xcc\x9f\x8f\x4f\x2a\x08\x80\x46\x41\xbc\xa8\x26\x62\xce\x88\xfa\xa5\x31\x45\xb6\xa4\x59\x55\xae\xc8\xcc\x2a\xf8\x1c\xcc\xb5\xd7\xc6\x4f\x9e\xce\x1c\x99\x83\x32\x64\x84\xa1\xe5\xec\xe4\xce\x36\x54\x4d\x63\x73\x5f\x77\x76\xf2\x1a\x20"}, +{{0xa1,0x21,0x2b,0x34,0xdb,0xca,0x63,0xb7,0x09,0x36,0x12,0xd0,0x5d,0xab,0x7b,0x4c,0xc8,0xf7,0xb6,0x76,0xa9,0x34,0xad,0x01,0xf6,0x59,0x85,0x1b,0x3b,0xb4,0x4e,0x4e,},{0xba,0x2f,0xcc,0xea,0x9a,0x08,0x05,0x91,0xbe,0x71,0x26,0x8d,0x7e,0x95,0x1f,0x25,0x0d,0xed,0xc0,0x04,0x16,0xe5,0xf3,0xf9,0x08,0xdb,0x6c,0xc5,0x71,0x25,0x49,0x25,},{0xfa,0x93,0xed,0x65,0x95,0xbc,0x95,0x8d,0xc0,0x42,0xce,0x16,0x45,0x16,0x7b,0x79,0xe8,0xf6,0x73,0x4c,0x46,0xf8,0x0f,0x63,0x1f,0xd5,0x48,0x49,0x08,0xf5,0xe5,0x1a,0x22,0x42,0x7e,0xe6,0x86,0xf5,0x64,0xff,0x98,0x2f,0x6e,0xf4,0xd2,0xca,0x1f,0x0c,0xa5,0x62,0x49,0x10,0xcd,0xd6,0x3c,0x11,0xa3,0xc2,0xb1,0x6d,0x40,0x97,0x3c,0x07,},"\x07\xc3\x7c\x46\xbe\x3c\x68\xd0\x56\x89\x57\x7a\xa6\x4a\x93\x2b\x90\x64\x46\xb2\x9b\xaf\x12\xf6\x17\x4a\x6b\x42\xbb\xae\xfd\x1f\x1f\x37\x3e\x0b\xcc\xc4\x73\xdd\xfc\xee\x1a\x7f\x21\xb9\x6a\x62\x60\xef\x0a\xa1\xf2\xd8\xb2\x95\x9e\x71\xd1\x2c\x95\x33\x58\xa2\x77\x4c\xc5\xe6\xf3\x79\xa3\x13\xe4\x35\xed\x69\xdf\xd6\xd4\xa5\x9a\xde\xe3\xcc\x7e\xc4\xba\xcb\xdb\xb3\xfe\xe5\x43\x0b\x73\xf6\x05\x1a\x60\x96\xc6\x0e\x9b\xc9\x2c\xc8\xfa\x05\x9f\xac\x2a\x93\xef\x70\x07\xd6\x4f\xbe\x50\x06\x49\x64\xd5\xa0\xad\x60\x11\x75\xcd\x9c\xab\xa4\x53\xf9\x10\x3b\x25\x48\x55\x45\xd3\x01\xf0\x3c\x5f\x9f\x94\x78\xbd\xf9\xd4\x14\xbf\x1d\xca\x3b\x1c\x1d\x9d\xaa\x99\x71\xf9\xe6\x17\xfb\xfa\xf5\xb0\x2a\x7f\xbd\x5d\x4f\xb8\x94\xc0\x97\x5c\x54\x59\x2b\x49\xa0\xfc\x85\xdd\x08\x53\xf3\x0c\x51\x50\x2d\x98\xfc\x1a\xb8\x5a\x17\xcc\x58\x96\x1a\xae\x97\x64\x57\x0b\xa5\xcb\xdb\xc9\x6d\xfc\xeb\x8d\x11\xda\x53\x36\x4b\x40\x25\xfe\x0b\x8b\xa8\xa3\x53\xad\x23\x68\x67\x20\x16\x9f\xe9\x73\x43\x2f\xfe\x29\x1a\x4b\x11\xde\xdd\xa0\xaa\xc7\x9a\x5e\x42\x62\x0a\x64\x58\x7d\x20\x59\xe7\x87\x01\x3b\x40\xce\xec\x59\x92\x08\xf6\x6e\xd0\xca\x6e\x1b\xe9\x09\x2e\xc2\x7d\xb2\x16\xee\x6d\xad\xfe\xbc\x21\x70\x5b\xc4\xa8\x5a\xee\x57\x7e\x57\xd2\x39\xaf\x58\x6e\xfe\xec\x22\xcf\x38\xd1\xcf\xb3\xcd\x74\xdd\x0d\x9a\x33\x81\xaa\x81\xe6\xa2\x97\xe3\x9b\x81\x91\x37\xad\x27\xd4\x75\xe2\xbf\x54\xaa\x42\x6d\xc2\x9c\x4c\xa8\x17\x6d\xf3\x43\x13\x7a\x2d\x79\xd1\x2e\xf9\xaa\x7b\xe1\xcf\x67\x75\xe5\xd8\xa4\x43\x0a\x85\xc3\x3d\xb6\x1c\xd2\xf3\x51\x87\xb4\xf6\xea\x9e\xbd\xd7\x53\xd1\xc4\xef\x72\x47\x11\x59\xff\x07\xb7\x78\x70\x90\x64\x96\x24\x9d\x42\x78\xe3\xf3\xca\x6b\xcb\xf3\x7a\x26\x5b\x89\x65\x39\x19\x0f\x9a\x31\xf1\xe7\xb4\xb6\x5c\xd1"}, +{{0xd9,0x68,0x20,0x86,0xfe,0x7d,0xda,0x30,0xb8,0x71,0x11,0x06,0x01,0x93,0xd8,0x47,0x56,0x6a,0xb9,0x4c,0xfd,0x9c,0x97,0xab,0x6b,0x43,0xe7,0xa8,0xd3,0xf7,0x93,0x82,},{0x8b,0x0b,0x13,0x72,0xd8,0x87,0x33,0xef,0x72,0x33,0xf6,0x37,0x97,0x90,0xd1,0xe4,0x6e,0x1e,0x07,0xe9,0xd3,0xfb,0x8b,0x0b,0xe2,0x52,0xed,0x04,0xc5,0xfa,0x16,0x3d,},{0x17,0x93,0xe4,0x97,0xeb,0x52,0x1c,0xa7,0x4e,0x35,0xd1,0x4a,0x63,0x86,0x8c,0xbe,0x94,0x99,0xda,0x2f,0x21,0xb4,0xeb,0x52,0x60,0x34,0x0f,0xca,0x3c,0x1f,0xec,0xa7,0x8d,0xbe,0x5b,0x14,0xac,0x10,0xf3,0xfa,0x76,0xfa,0x2e,0x71,0xe4,0xc9,0x14,0x61,0xaa,0x75,0x97,0x7e,0x5e,0x70,0x79,0x26,0x70,0xef,0x7f,0xf0,0xe6,0xa2,0x87,0x08,},"\xe8\x81\x4b\xe1\x24\xbe\x3c\x63\xcc\x9a\xdb\x03\xaf\x49\x3d\x44\x2f\xf2\x0d\x8b\x20\x0b\x20\xcd\x24\x93\x67\xf4\x17\xf9\xa9\xd8\x93\xfb\xbb\xe8\x5a\x64\x2b\xe2\x70\x1d\x1d\x1b\x3c\xd4\x8a\x85\xcf\x58\xf1\x59\xa1\x97\x27\x31\x43\xa5\x78\xf4\x2e\x8b\xcc\x8b\x62\x40\xf9\x32\x71\x90\x05\x38\xff\xc1\x87\xc0\xaf\xc8\xdb\xcc\x49\x2b\xcd\x67\x9b\xaa\xef\x3a\xf5\x08\x84\x34\xa9\x45\x86\xf9\x4b\x49\x97\x0b\xba\x18\xf5\xea\x0e\xbf\x0d\x27\xee\x48\x2a\xa8\x3a\xd0\xdd\x0e\xe6\x09\xdf\x59\xd3\x7f\x81\x8b\x2c\x8d\x7c\x15\xf0\xf6\xf5\x44\xdd\x4c\x7e\x7c\xb3\xa1\x67\x24\x32\x4f\x77\xd5\x89\x48\xf8\x47\x5a\x60\xd5\x3e\x5b\xd5\x10\xc1\x71\x37\xc9\x9e\x1c\xfa\x51\x5a\xf9\xbc\x85\x56\x9d\x21\x2a\x21\x19\x07\x29\xf2\x81\x7d\xe8\xc4\x69\x15\xe0\x21\xdf\x70\xff\x6d\x60\x21\x5f\x61\x4f\xc2\x11\x39\x90\x4d\xf3\xb2\x92\xb7\x49\xdc\x4d\xea\x02\x51\x8b\x62\xd1\x58\x62\xc9\x2d\x2a\x4c\x99\x67\x01\xcd\xec\xae\xd8\x4a\xb6\x28\xee\x98\x4f\xc1\x11\xee\xcb\x59\xe4\x84\x44\xef\xc0\xd4\x56\xe2\xc8\x52\x51\x84\x41\xc3\xdb\x76\x30\xdd\xd5\x15\x62\x49\xa2\x87\x30\x98\x38\x38\xae\x59\xac\x4c\xc7\x11\x0f\xd6\xde\x68\x10\x1e\xa5\xb2\xff\x69\xfd\x36\x4e\x3c\x94\x48\xde\xfe\xfe\x17\x5b\xcb\xe1\x17\xcc\x11\xb4\xff\x75\x49\xc3\x3e\x10\x25\xb6\xb5\x92\x04\x8a\x8e\x31\x96\x9e\x81\x8d\xcc\x18\x8b\xb1\x9d\x7a\x24\x40\xa3\xba\xba\x4e\xb1\xb8\x1c\x45\x67\x9d\xb4\x6b\x31\xbc\xde\x77\x76\x75\x7d\x99\x31\xec\x20\x63\xfc\x6f\x1f\xcd\x76\x1e\xcc\x57\xa7\xd0\x30\xa8\x5e\xa2\x73\xef\x18\x25\xb0\x50\x92\xab\x96\x45\x35\x9a\x44\x4f\xf7\xd1\x66\xb5\x75\xfa\xc2\x98\x30\x8d\x9f\xaa\x68\x46\x3d\x1d\x0f\x7b\x7d\xf8\xa5\x1c\x68\x15\xd3\x71\x59\xad\xc0\xb5\x93\x22\x4a\x81\x83\x21\xd7\x21\x9f\x09\x68\x6c\xfc\x95\x22\x59\x71\x8d\xfc"}, +{{0xb5,0x2b,0x24,0x9a,0x7a,0xea,0xe0,0xfb,0xd9,0x4f,0xfc,0xf9,0xa9,0xfd,0xe1,0x0d,0xe6,0x1c,0x3f,0x4c,0xbd,0xa1,0x4b,0x28,0x9f,0xe0,0x1f,0x82,0x70,0x73,0x34,0xca,},{0x73,0x51,0x63,0xbf,0xcf,0xd5,0x4f,0x9d,0x35,0x2e,0x1c,0x2f,0x3c,0x01,0x70,0xc9,0x5c,0x18,0x42,0xcc,0xc7,0x42,0x16,0x23,0xae,0x04,0x96,0x98,0x0c,0xee,0x79,0x1c,},{0x6f,0x48,0xa9,0xf7,0xf0,0xfa,0x19,0x2b,0x66,0xd1,0x21,0x75,0xa3,0x33,0x61,0x23,0x03,0xe1,0x80,0xb9,0xfa,0xb1,0x8e,0xda,0xbe,0xbc,0xdf,0x66,0x74,0xfd,0xfc,0xc5,0x36,0x07,0x08,0x9b,0xf9,0x80,0xce,0x35,0x89,0x4c,0x2f,0x9b,0xab,0xdc,0x44,0x38,0x66,0x7a,0xb3,0x29,0x7a,0x62,0x48,0xec,0x02,0x69,0xfa,0xa9,0x9c,0x72,0x48,0x07,},"\x1d\x44\x5e\x8e\xe3\x6f\x6e\x10\x64\xee\x12\x81\xe6\xb4\xa4\xce\xc5\x0a\x91\xc2\xb6\x67\xc8\x30\x5d\x1e\x9a\x5f\x7b\x73\xa3\x44\x58\x82\x58\x1f\xb0\xc1\x1e\x64\xf6\xee\x92\xe8\x11\xf9\xf2\xd6\xc5\x9c\x63\x44\xbe\x76\x91\xd1\x16\xdd\xa4\x93\xca\xde\x51\xc0\xce\x77\x37\x2b\x61\xa7\xc4\xfb\xb6\x33\x40\x13\x33\xcb\xf7\x13\x72\xad\x2f\x04\x4e\x99\x2a\xc0\x35\xf5\x87\x9c\x05\x30\x04\xf8\x22\x3f\x23\x7a\x24\xa4\x09\xb7\x89\x4f\x6a\xd5\x18\xe0\x46\xb8\xa8\x4c\x3f\x4c\x62\x60\xe6\x16\x9f\xd9\x44\xd5\x7f\xbc\xf9\xba\x27\x75\xf2\xd6\x0e\xd7\x72\xc4\x6c\xcd\x63\xc8\x50\xb8\x0d\x58\x7c\x52\x08\xdf\xb1\xa2\x58\x78\xc0\x2d\xec\xe3\xe6\x02\xe9\x63\x2f\xc3\xc2\xc7\x9b\x25\xab\x41\x03\x4c\x6e\x26\xb8\x69\x25\x53\x57\xa6\x86\x78\x1d\xfe\x6e\x64\x4b\xeb\xa9\xb6\x27\xda\x1f\xcb\x5e\xc0\xbe\x49\x7c\xf1\x88\xe1\xef\x1a\xf0\x60\x1b\xf1\x6b\x29\x11\xfd\x9f\xf3\x4f\x0e\x97\xac\x95\xa7\xfe\x2c\xf9\x0e\xa6\xce\xd3\x3c\xcb\x0e\xd1\xef\x2d\x41\x60\xef\xb0\x7c\x59\x1a\x5c\xb1\x6c\x70\xca\x16\x94\xfb\x36\xf2\xca\x19\xeb\xa5\x2b\xe3\xd4\xad\x89\x5a\xbc\xad\xa4\xb3\x6f\x02\x61\xd6\x5f\x59\xe0\xcf\xd2\xa6\x14\x8a\x88\x92\xdd\xbb\x45\x81\x0d\xb3\xbf\x4a\x9e\x26\xe9\x2c\x15\xea\x26\x18\xcf\xee\xb4\x62\xd8\x62\x8f\x25\x4f\x54\xd2\xaf\x27\x11\x3b\xab\x4f\x9a\x7d\x06\x79\x18\x11\x94\x2b\xdc\x32\xf8\x45\x92\x2d\x7b\x2d\xdb\xa9\x59\x14\x09\x28\xf8\xc2\x8d\x98\xb4\x4e\x1d\x19\xb9\x7f\xd3\x9c\xc0\xf9\xa5\x23\x6d\x34\x9f\xc8\x35\xac\x49\x21\x92\x46\x2e\x40\xac\x62\x9b\xeb\xff\xd2\xeb\xa7\x2d\x27\x88\xb2\x44\xbb\x77\x7a\xd0\xf7\xb7\xf9\x6f\x23\x41\x23\x99\xfc\x1d\x87\xa1\xd0\x87\xba\x08\x90\x27\xea\xbb\xc0\x5e\xda\xfe\xe4\x33\x79\xe8\x93\x29\x13\x31\xb4\x60\xbf\xa7\x33\x2e\x08\x42\xec\x25\x73\x39\x3d\xe9\x53\x06"}, +{{0x78,0x2a,0x93,0xef,0xe0,0xef,0x06,0xcb,0x25,0x34,0x33,0x0e,0xfd,0x0e,0x96,0x84,0xe9,0x96,0x9b,0x52,0x58,0x12,0x3e,0x49,0x02,0x39,0xbf,0x24,0xbf,0x9f,0x65,0x23,},{0x94,0x2f,0xa1,0x40,0x6e,0xe2,0x68,0x3e,0x29,0x37,0x7e,0x49,0xf7,0xba,0x75,0x7c,0xf5,0x0e,0xf0,0x72,0x37,0x07,0xd4,0x40,0x3d,0x28,0x62,0x25,0x70,0x45,0xde,0x87,},{0x93,0xe7,0x40,0x5a,0x40,0x44,0x51,0x01,0x66,0xc8,0xac,0x26,0x4c,0xe3,0xb5,0xba,0x66,0x65,0xd6,0x8b,0xad,0x45,0x87,0x12,0xdc,0x93,0xc2,0xc3,0x90,0x56,0x8d,0x74,0x02,0xef,0x7d,0x57,0xf5,0x49,0xb8,0xa1,0x04,0x2f,0x7f,0x69,0xa6,0x79,0xaa,0x85,0x5f,0x34,0xf8,0x01,0xd5,0x7d,0x79,0x89,0x5d,0xeb,0x8d,0xea,0xdb,0x35,0x23,0x08,},"\x46\xa4\xe3\x19\xa6\x70\xac\x99\x39\x94\xa5\x33\x00\xc3\xf7\x91\x44\xc2\xf7\xfe\xc1\x11\x6e\xee\xb3\x62\x1c\x76\xac\x35\xda\x79\xdb\xff\x6e\x18\x9c\xa9\xdb\xfc\x9a\xbb\xda\x05\x48\x47\xb2\x97\x1b\x02\xfa\xce\xbb\xe9\x26\xd4\x69\xeb\x0a\x86\x03\x89\xac\x74\x41\x62\xbf\x6f\xb1\x3b\x42\xcb\x9b\xb8\xc9\xd7\x26\x07\x13\x8e\x78\x00\x12\x1e\xe0\xcd\x63\x3e\xd5\x35\xc7\xae\x5f\x40\x60\xbb\xdd\x27\x1c\x9d\x11\x0a\xbf\xf5\xe0\x60\xea\x6e\xe8\x38\x90\xb1\xe9\x2a\x92\x56\xd7\xb2\xba\x98\x2a\x31\x14\xbb\x6d\xef\xfe\xe2\x69\x6f\x0a\x2f\x9c\x21\xaa\xa5\xb2\xde\xfa\x11\xaa\xb7\x07\x6d\xe6\xe5\x7e\x86\xf2\x84\xbb\x67\xf5\xa4\x9e\xe6\x85\x92\x10\x32\xc9\x5b\x74\xe7\xe3\xea\xc7\x23\xf1\x75\xaf\x08\x2c\x85\x8e\x0d\xfa\x01\x72\x8c\x38\xfb\xbb\x4c\x83\x58\x1f\x81\xac\xe6\xc6\x3c\x6b\xda\xac\x56\x20\xeb\x9a\x56\x8e\x7e\xbb\x7b\x72\xb3\xd1\xa1\x64\xef\x52\x4e\x7b\x9f\x00\x79\x9a\xb0\x86\x71\x59\x76\xc1\x4d\x0d\xf6\x5f\x7b\x96\xbf\x9e\xbc\xda\x7f\xee\xef\x11\x34\x22\x00\x1a\x03\xa7\x63\x3d\xf5\xe4\x99\x39\xa1\x21\xdb\x89\x9d\x9b\x8a\xc2\xdb\x4f\xad\x0c\x30\xcf\x0b\x8b\xdb\xc9\xe9\x80\x2a\x79\x7c\x82\x38\xe4\x65\x11\xff\x24\x06\x8c\xad\xcf\xf2\x44\x8c\xc0\xbf\xf9\x27\x69\x22\x33\x48\xd4\x5d\x6b\x6f\x2c\x8f\x15\x93\x38\x8c\x0b\xbb\xf4\x4b\x6d\xdb\x50\xb9\x8c\xd7\xf0\x9c\x73\x0f\x7d\xe4\xd0\x08\x15\x6c\xb3\xcd\xe0\xca\xb3\xad\x0a\x58\xa8\x39\x54\xe2\x34\xa0\xa8\xa0\x4b\x57\x3c\x9a\x8e\x9b\x92\x9e\xd3\x8b\x8b\x22\x8b\xf5\x5a\x3c\x6e\x2c\x6b\x51\xf6\x82\x65\x2f\xbb\x70\x8e\x74\x64\x0e\x33\x13\xe1\x7b\x46\x94\xd7\xfd\xf0\x11\x1f\x90\x60\x8c\x1b\x5a\xf4\x22\xdc\xde\xca\xd9\xdd\xb7\xf5\x0d\x1b\xf5\xbc\x63\x78\xcc\xaf\xfc\x32\x01\xe6\xc7\x87\xb4\x8c\x44\x3b\xa2\x40\xd9\xd5\x0f\xf6\xc0\xe9\xdf\x7f\x1a\x5b"}, +{{0x6f,0xe7,0xbc,0xf7,0xa6,0x84,0x42,0x3d,0xe1,0x07,0x6f,0xd7,0x6d,0xa7,0x83,0x42,0x33,0x73,0xb3,0x81,0x32,0x9e,0xfd,0x61,0x57,0x42,0x4e,0xc4,0xb2,0x65,0x5a,0x94,},{0x77,0x40,0xe9,0x1a,0xfe,0x45,0x32,0x4f,0x8b,0xb9,0x90,0xca,0x2a,0x34,0x12,0x79,0xdd,0xaf,0x23,0x2c,0x3b,0xb4,0x15,0xf1,0x78,0xb6,0x09,0x2f,0xba,0x19,0x5f,0xec,},{0x99,0x14,0xcc,0x50,0xfe,0xf0,0x93,0x5e,0xfb,0x89,0xb3,0xd6,0x4e,0x3c,0x1c,0x34,0x12,0xae,0xd6,0x59,0xb9,0x01,0x66,0x22,0x2c,0x0d,0x13,0xec,0x1c,0xe3,0xa6,0x8a,0xe6,0x28,0x1b,0x7e,0xfd,0x9d,0x4e,0xc6,0x4b,0x82,0xe7,0x3e,0x14,0x47,0x9f,0x03,0xfb,0xac,0x8f,0xa3,0xab,0xdb,0x41,0xea,0x42,0x15,0xc4,0xa4,0xd4,0x94,0x9d,0x09,},"\x0b\xaf\x0a\xd4\x40\x61\x2b\x4c\x5a\x13\x6c\x3a\x42\xbe\x1c\xa2\xb7\xc3\x19\x86\x2a\x44\xa9\xfd\x50\xc4\xee\x73\x54\x1c\x5e\x64\x57\xef\xa8\x18\x25\xb6\xdd\x4a\x72\x19\x4a\x29\x68\x68\x8b\xd4\x9e\x5a\x8f\x4c\x04\xdb\xaf\xc2\xe7\x88\x4c\x0c\x70\xc2\x08\xd4\xe9\x54\xcd\x16\x75\xda\x8e\x74\xc6\x5c\x49\x7c\xf9\xdc\x69\x42\x49\x65\xbd\xcb\xa5\xde\x52\x93\x6f\x92\x5f\x62\xe2\x01\xf9\x95\x05\xd3\x77\x7b\xeb\x3c\x2e\x08\xb2\xec\x9a\x87\x3e\x5a\x9c\x21\xfb\x4a\x2f\x3e\x86\x1f\x3c\xf4\xd6\xb5\xdc\xd1\xc8\x8b\xcd\x91\x63\x53\x9a\xc6\x2c\xd0\x65\x9f\x4e\xf2\x32\xc2\xce\x57\xfc\x77\xf9\x02\x85\xeb\x35\x01\x69\xed\xc6\xa8\x06\xff\x50\xf6\x1c\x7e\x0b\xee\xeb\xec\xec\x63\xbf\xc9\xd3\x98\x3f\x5b\xb4\xb2\x61\xc7\x46\x47\x1f\xcb\xf2\x89\x2c\x61\x08\x97\x0b\x68\xdb\x5e\x43\xc4\x50\x4d\xda\xe2\xd0\xff\xff\xa2\x8b\x67\x59\xae\x11\x28\xe1\x6f\x66\xd4\x92\xad\x61\xe3\x72\x2c\x96\x0f\x88\x69\x2b\xe8\x1a\x9f\x41\x28\x90\xff\xa3\x46\xe7\x02\xc8\x67\xdf\xa2\x59\x70\x3b\x73\xf5\x25\x07\x4f\x32\x27\xc4\x9c\xec\x1b\x64\x5a\x10\x3b\xd4\x47\x1f\x33\xf9\xf1\xba\xc3\x27\xd7\x91\x78\x61\xd0\xad\x91\xab\xee\x60\x22\x2e\xa2\xa3\xc8\xca\xc0\x52\xae\x9a\x2c\xbd\x90\x85\x5d\x73\x3d\x53\x19\x13\x3f\x95\x41\xbd\x0b\x61\xf0\x99\x52\x68\x35\x1e\x28\x63\xc1\xca\x2c\xa5\x1e\x3c\x97\x63\x83\xf5\xc4\xc1\x1f\xf4\x10\x03\x6f\xd5\x1d\x5a\xc5\x6b\x02\x3c\xe9\x02\x9c\x62\x0f\x22\x55\x70\x19\xad\x9b\x42\x64\xed\x4d\x71\xb4\x34\xf4\xa4\xd1\x7a\x7d\x57\x69\xfa\x1e\x14\xa6\x9f\x7a\xe4\x19\xcc\xf5\x94\x7f\x8c\x76\x82\x69\x71\x16\xc2\x40\x5f\x5a\x19\x59\xc5\x4b\x48\xf0\x87\x2f\x59\x6e\xd4\x59\x64\x48\x8d\xde\xc1\x2b\xdb\x63\x6d\x0b\x34\x9e\x74\x9e\xb6\x60\x92\xff\x45\x11\xfb\xa5\x9b\x59\x62\xcb\x93\xcc\x85\x51\x5c\xc8\x6a\xb0\xc6\xb2"}, +{{0xdd,0xa4,0x8a,0x0d,0x15,0xa2,0x9e,0xba,0x9a,0x76,0x30,0x5d,0x36,0x0e,0x46,0x6e,0x72,0xd8,0x04,0x0e,0xfe,0x2e,0x89,0xc0,0x4b,0x64,0x61,0x31,0x5a,0x9b,0x8b,0xf4,},{0x4f,0x5c,0xc3,0x6a,0x80,0x94,0x16,0xb5,0x8e,0x15,0xd2,0x4c,0xc5,0x79,0x68,0xcb,0x57,0x3b,0x76,0xad,0x90,0x88,0x7a,0x8e,0xf3,0x6c,0xde,0x7e,0xca,0x40,0x0f,0xcc,},{0xce,0x71,0xbc,0x82,0xd5,0x31,0xd0,0xf9,0x3b,0x57,0xbf,0xdc,0x2f,0x73,0x16,0xcf,0x40,0x4e,0xe0,0x9a,0xf8,0x8f,0x33,0xbf,0x80,0x6c,0x7c,0xad,0x6b,0x8f,0xfa,0x36,0x62,0x36,0xba,0x74,0xe7,0x5c,0x15,0x09,0x6d,0xda,0xa6,0xe3,0xa6,0x2a,0x8f,0x5e,0xb1,0xc8,0xc3,0xf6,0xb6,0xc9,0x4a,0x6a,0x34,0x9f,0xc7,0xc0,0xcb,0xfb,0x19,0x0d,},"\xf5\xac\x19\xb8\x1f\x21\x11\xa0\xdb\x0a\xe3\x0d\x15\x13\xed\x34\x3e\x7f\x57\xf7\xf7\x7d\x65\xb8\xac\x7c\xe3\xa6\x01\x17\x4b\xae\xd9\xbf\xa1\x36\x03\x59\x76\xf5\x16\xd5\xa8\x70\xf4\x5d\xb1\x91\x9f\x1e\xb1\xcb\xec\xbe\x88\xec\x32\xd1\x91\xe9\x24\x88\x21\xa7\xe7\x68\x1f\xe3\xab\xec\x11\x58\x4b\xdb\x33\xde\x1b\x4c\xa9\x48\x91\xeb\x66\xdc\xb8\x53\x9a\xc4\x11\x63\x73\x6c\xcf\xd6\x9a\xbb\x83\x81\x4d\xd3\x8c\xd6\x03\x81\x31\x87\x28\x05\x2a\x25\xcb\x66\x54\x71\x05\x86\x50\xcc\xc7\x57\x56\xdb\xee\x68\x8a\xb8\x26\xec\xad\x4a\xd5\xa7\xdb\x57\xe8\xf6\x5f\x1b\x64\xab\xff\x82\xdd\x53\x33\x4b\x79\x7a\xc4\x02\x28\xdd\x81\x7f\x23\x9d\x3e\xe8\x04\xa1\x9a\xea\xc8\xcf\xe3\x3e\xb6\x57\xec\x9c\xe9\x23\xd6\xb3\x88\x91\x4c\xfb\xa2\xe7\x2b\xfc\x2b\xc3\xd6\xf9\x85\xc0\xd9\x75\x34\xdb\x95\x8e\xed\xe5\x7b\x16\x49\x1f\xfb\x75\x5c\x1a\x58\xd7\x8a\xb3\x77\xfa\xec\x0d\x31\x18\x18\xe8\x99\x26\x0e\x3e\xbd\x1c\xcd\x29\x24\x6f\xa8\x2d\x0b\x76\x62\x2b\x2c\x4b\xc5\x2f\x54\x9f\xee\x72\xa3\x0f\x55\x4f\x33\x1f\x36\xd2\xa7\x4d\x99\x9e\xc1\x0a\x08\x29\x4f\x00\x2b\x43\x61\xe5\x90\x27\x9c\x2f\xb1\xbd\xa4\x31\x2c\xcb\x24\xd7\x52\x82\xce\x7c\x06\x1a\x0c\xa5\x52\x0c\x74\xf6\xf6\x33\x3b\x18\xc4\xb5\x41\xcb\x6c\x51\xe0\x15\x75\xba\x80\x51\x2f\xfa\x7c\xe0\xac\xcd\x22\xd1\x40\x27\xc5\x3a\xba\x1f\x74\x37\x83\x5f\x11\x14\xd6\x8e\x3a\xcf\x3f\xf8\xde\x94\xc8\xe4\xef\x6d\x3a\xb3\x12\xc9\x1d\x02\x97\x01\x57\x50\x8f\x54\xa5\x81\x6f\x46\x7a\x21\x4e\x9b\x12\x84\x30\x02\x89\xe6\x5f\x36\x5a\x61\x0a\x8e\xa2\x84\x66\x6c\xfe\x55\x18\xe4\x35\xbc\xcd\x21\x62\x75\x01\xc7\x25\xf0\xb8\xeb\x57\x25\xe0\xe0\x6e\x0c\xef\x5d\xb2\x01\xb4\x8e\xc9\x1e\xbf\x87\x8d\xd5\x7c\xe8\xda\xc7\x33\x48\x48\xa1\xbc\x82\xc1\x8b\x06\x59\x55\xe4\xf5\x9b\xe3\x39\x85\x94\xdc"}, +{{0xec,0x57,0xb9,0x41,0xad,0xf3,0xca,0x13,0xe7,0x7a,0x78,0x05,0x77,0xcf,0xd0,0xdf,0x5b,0x49,0xed,0xc8,0x53,0x51,0x05,0x2d,0xa3,0x4e,0x99,0xf8,0xa9,0xbf,0x32,0x08,},{0x28,0x59,0xc0,0x71,0x97,0x8a,0x04,0xb7,0xf5,0x40,0x7b,0x6d,0x22,0x40,0x1a,0x78,0xef,0xd0,0x39,0x4b,0xb9,0x66,0xb9,0xa0,0x4d,0xa6,0xb5,0xef,0x81,0x9d,0xe3,0xfa,},{0x11,0x8e,0x14,0x62,0x12,0x6b,0x45,0xb8,0xc6,0x80,0x35,0x23,0x75,0x5c,0x56,0xdf,0xc4,0xe1,0x23,0xe4,0xac,0xbb,0x66,0xba,0x0b,0xa6,0xfe,0x3e,0x05,0x3d,0xa4,0x11,0x9f,0x57,0x19,0x29,0x5e,0x0c,0x82,0xac,0x64,0xd7,0xc5,0xcb,0x1a,0xc8,0x98,0xdf,0x26,0x3d,0xdf,0xd3,0x60,0xf3,0x00,0x8d,0x91,0x01,0x8b,0x26,0xf6,0xa1,0x73,0x0a,},"\xd2\xbc\xbd\x1b\xc3\x61\xab\x32\xc6\x6d\x72\xfd\x48\xa8\xe2\x27\xdc\x6b\x8d\x6b\x15\x08\x48\xba\x71\x5f\xf4\x7d\xd3\x5c\x8e\x49\x38\x1b\xb4\xe2\x93\x3f\x42\xcd\x26\xb7\x5b\x14\xd9\xc0\x03\x92\x82\xb6\x2b\x85\x56\xaa\xa1\x1c\xd6\x91\xe8\x28\x38\x2b\xe3\x06\x88\x9f\xc9\x20\x51\x37\xb1\x69\xd3\xbf\x17\xb7\xf3\x76\x93\xfc\xe2\x86\x03\x9f\x03\x80\x9d\x7d\x9d\x98\xc8\xfd\xe4\x6f\x11\x01\x94\x2a\x27\x9c\x51\x67\x06\xf5\x01\x91\xa9\x11\x2f\x6a\x24\x63\x0e\x1a\x26\xc3\x21\xe4\x6c\x9c\xcc\x85\xb6\xef\x94\x2f\x35\x3a\x64\x2b\x9e\x7e\xf9\x98\xc0\xfc\xe2\xd3\xa7\x5b\x99\x9e\xeb\x77\xf3\x1f\x9b\x08\x13\xa9\x7e\x30\x14\xc3\xa8\x6e\x25\x58\x73\x46\x21\xa3\x06\x6d\xae\x35\x84\x50\x31\xe3\x56\x65\xf1\x92\x29\x07\xdb\xb7\x39\x78\x6a\x8b\x76\x58\xab\x60\x27\x6f\x2d\x92\x1d\x1a\x51\x23\x0f\xc7\x4d\x19\xe8\x01\x84\xa4\xf1\x0e\x9e\x83\x4a\xbc\x9a\x36\xc4\x29\x72\x6b\xc0\x55\xdc\x8c\x06\x3f\x0e\xca\x9c\x61\xa8\xa9\x70\xbd\x4b\xb5\xf4\x24\xee\x4d\x04\xbf\xc2\x95\xe3\xbb\x1f\x34\xbe\xcb\xd9\x92\x0f\xe2\xe7\x7f\xcf\x36\x76\x3f\x32\xfc\x9c\xfd\x5e\x46\x59\x79\xc1\x67\xca\xbf\x5a\x12\x44\xb4\x91\xfc\x06\xb8\x94\x64\x19\x04\x6b\xa5\x16\xc5\xb2\x33\xc4\x14\xdd\xef\xb6\xda\x04\xf2\xe1\x3d\xaf\xf7\xa9\xa0\xc0\x2a\x51\x8e\xde\x57\xad\x95\x21\xde\x64\xed\xdf\x6f\x49\xa9\x67\x0f\x63\x2d\x3f\x7d\x42\x42\x52\x07\xd0\x53\x60\x4f\xe3\x9d\x13\xb9\xf5\x2c\x8b\xc2\x92\xb0\x07\x6e\xa4\x2a\x56\x00\x56\xdf\x25\xde\x51\xad\x35\x88\x1d\x08\x54\x32\x24\xd7\xfa\x5d\x70\xb8\x60\x3e\xf2\x3c\xe0\x63\x39\xd6\xcd\x09\xe2\x2a\x95\x74\x9e\x50\xdf\xbd\x3b\x8a\xd6\x9f\xd3\x04\x96\xb9\x84\xd1\xc0\xa1\x99\xc8\x59\x48\x05\xf3\x8b\xa4\x46\x31\xa2\xc5\x9e\xad\xc6\x55\x4d\x19\xf9\xbc\x98\x36\x6d\xfd\xec\x2a\x12\x1d\x0e\x48\x14\xd2\xcd\x3f\x58\x71"}, +{{0xcb,0xfd,0x91,0xd7,0x69,0x5c,0x1f,0x27,0x0f,0x69,0x24,0x6a,0xb3,0xdf,0x90,0xed,0xb2,0x14,0x01,0x10,0x1c,0xa7,0xf8,0xf2,0x6c,0x6d,0x00,0xf4,0xdc,0xb7,0x23,0x3e,},{0x51,0x38,0x79,0xcf,0x79,0xd2,0xf4,0x6d,0xf4,0xb8,0x5a,0x5c,0x09,0x49,0xeb,0x21,0x16,0xab,0xf9,0x81,0x73,0x5a,0x30,0x31,0x64,0xcb,0xd8,0x5a,0xdf,0x20,0xb7,0x52,},{0xf3,0x36,0x13,0x7d,0xfe,0x6f,0x42,0xa6,0x66,0x9b,0x55,0xf7,0x4b,0x80,0xb3,0x03,0x5a,0x04,0x03,0x67,0xf9,0x06,0x56,0xfc,0xef,0x0a,0x64,0x4c,0x52,0x27,0x2d,0xdc,0x39,0x27,0x3c,0xd7,0x72,0x60,0x10,0xeb,0xcd,0x8a,0x30,0xa0,0x52,0x01,0xab,0x70,0xb8,0xff,0x97,0xd0,0x28,0x8a,0x2c,0xb9,0x4c,0xbc,0x49,0x02,0x06,0x47,0x39,0x0b,},"\x26\x4a\x93\x3f\x7d\x0a\xec\xba\xc1\x3e\xef\x64\x4b\x0b\x53\xdd\x53\xa1\x28\x09\x04\x10\x0d\xbc\x1a\xb8\x7b\x51\x14\x89\x98\xf9\xda\x0b\x3a\x0a\x63\x37\xf5\xe3\x48\x6c\x2b\x7e\x54\x8d\x21\x12\x59\x39\x7a\xaa\x19\x4e\xe4\x69\x5b\xf9\x8c\x2d\x5f\x44\x87\x69\x9f\x73\x97\xe5\xd3\xa7\xe6\xd5\xf6\x28\xfb\xd0\x54\x97\xc5\x56\xa5\x0a\x4d\x05\xe2\xb7\x12\xcd\xbc\x35\x10\x68\xe4\x2a\xf1\x95\x38\x90\x1b\x88\x25\x31\x0e\x34\x3e\x1a\x17\xa1\x86\x7d\xde\x0e\xb4\x7d\xda\xb4\x56\xd3\x16\xf3\x52\x15\x54\x93\x7b\xf8\x08\xae\x4e\x4b\xc1\xc3\xc5\xb4\x75\x6e\x4a\x16\x5a\xd9\xe8\x82\x7f\x53\x16\xf7\x48\xca\xc6\x99\x8e\xd2\xd2\x10\x4f\x26\x84\x07\xc1\x35\xe6\x2f\x26\xa9\x22\x46\x0e\xab\x6d\x85\x16\x39\xa0\x0e\x5f\x08\xb3\x47\x65\xea\x02\x44\xf4\x75\xbb\xfe\xac\x18\x3e\x3b\x5b\xd1\xaa\xb7\x98\x52\x27\x98\xa0\x8e\xc6\xbf\x22\x57\xd4\x69\x2f\x5b\x03\xcd\xd0\xa2\x13\x3d\xe9\x70\x60\x3e\x32\x51\x47\x5a\xad\x8d\x93\x4a\xf6\xb2\xbf\xc7\xa6\x50\xb9\x1b\xde\xc1\x43\xf8\xad\x25\x4c\xfa\x50\x6b\xbf\xf2\x8a\x03\xbe\xb6\x59\xef\x5e\x5d\xdf\xfe\x76\xe2\x32\x30\xc4\xcc\xd4\x63\x10\xb3\x7d\xd9\x1f\xa6\xaa\x68\x16\x7f\x62\xa5\x5c\x8a\x69\xf9\xed\x1e\xc6\xcd\xb1\x44\xdd\x81\xab\x0b\xcb\xd6\x26\x43\x42\x0b\xca\xe6\x78\x69\xf6\x4c\x0b\x16\x9f\x3c\xdf\x3c\x90\x58\x95\xb7\xd3\x5b\x6f\xaf\xda\x25\xcc\xf2\x3c\x3d\x10\xde\x32\xe7\xf2\x71\xe3\x00\xd3\x95\x97\xda\x8f\x84\x37\x22\xef\x08\x36\x4a\x5f\x7a\x10\x5b\x96\x55\x17\x2d\xf7\xc8\x2d\x73\x74\xf9\x82\x64\xc9\xcd\xcc\xb4\x96\xf2\xe1\x0f\xd8\x26\x2f\xb1\xa9\xa9\x96\x5b\x0b\x84\x1a\xc0\xd0\xe9\xc1\xa3\xd9\x49\x3e\xa7\xaa\x60\x02\x05\xb8\xf9\x00\xbe\x0d\x7a\xbb\x4d\x98\xa0\x65\x83\xd2\x29\x5c\x27\x63\x18\xbe\x28\xd4\x21\x98\x2d\xed\xd5\xbf\xc3\x3b\x88\x65\xd9\x4e\xf7\x47\xd6\x26\xaf\x99"}, +{{0x51,0xa4,0x19,0x7a,0xb7,0x68,0x6f,0x82,0xf6,0x00,0x3a,0x0c,0x32,0xf3,0x9d,0x0f,0x2e,0x47,0x55,0x5f,0x4e,0x9f,0x8d,0xee,0xe7,0x5b,0xcb,0x1b,0xd1,0xef,0x69,0xe5,},{0x06,0x38,0x6d,0xf8,0x6b,0x61,0xf1,0xf8,0xf4,0xdc,0x45,0xb7,0x3e,0xda,0xa8,0x41,0x92,0x09,0x68,0xbb,0xd1,0x31,0xcc,0x5c,0xa1,0xc5,0x29,0x4e,0xee,0xd5,0xc8,0xba,},{0x2c,0x07,0x29,0x69,0xff,0x47,0x19,0x21,0x2a,0x12,0x19,0x38,0xb5,0x06,0xc6,0x02,0x99,0x5b,0x4d,0x02,0xa2,0x2e,0x61,0x98,0xd6,0xe8,0x7d,0xd6,0xae,0x07,0x62,0x25,0xac,0x70,0xbb,0x25,0xef,0x8c,0x0e,0xe8,0x1e,0xb6,0xfe,0x95,0x3d,0xf6,0xb1,0x81,0x59,0x49,0xe8,0xed,0x05,0x06,0xcb,0x01,0x2e,0x87,0x3c,0xd3,0x6c,0xd0,0x9b,0x0a,},"\x2a\xed\xb7\xe8\x2f\x1f\xe4\xce\x46\x9a\xda\x48\x34\x5d\x00\x6d\x1b\x3b\xff\x40\xeb\x21\x86\x7f\x51\xfc\xe9\x65\x64\x0c\x40\x9e\xc1\x3a\xd4\xd5\x2f\x89\x1b\xd7\x90\x66\xd6\xb4\xd9\x44\xca\x86\x8d\x89\x86\xd2\x42\xb5\x7e\xcc\xc4\xc4\xa4\x88\x29\x1b\x15\x9c\x8d\xe4\x39\x2b\xe4\xb8\x6f\xeb\xaa\x75\xea\xc5\xd2\x2d\x3c\x4f\x8d\x6b\xef\x79\xad\xb9\xb9\x2b\x49\x14\xd5\xea\x07\xc7\xf0\x21\xe2\xc2\x9f\x58\xd0\x7b\xe8\xa0\x84\x10\x0b\xc1\x52\xd5\x1c\xa8\x97\xd7\xc1\x31\x64\x4d\x08\x95\x32\x2e\x94\x40\xa8\x33\x9e\x1a\xa3\x90\xa7\xf4\xfc\xb5\x1d\xdf\xb6\xdf\x48\xaa\xf5\x67\x63\x37\xd8\x7d\xdd\x85\xb1\xd9\x25\xe1\xa9\xc2\x9f\xe0\x81\x8f\x51\x4e\xf7\x2f\x74\x7a\x67\x49\x46\x47\x69\x07\xa7\xca\x99\xe9\xdb\x8d\x20\x96\x41\x05\x7a\x7f\x44\xa3\x17\xb9\x09\x74\xbc\x86\xf9\x61\x7a\x96\x8a\x76\xa6\xb8\x38\x7c\xf5\x85\x3e\x60\x81\x90\xc1\xa7\x9f\x1e\x1d\x68\x6e\x0d\xe2\x2d\xb6\xcd\x9a\xeb\x85\x32\xc5\xc8\x5c\xc9\x0b\x5a\x01\x85\x79\xf2\x8e\x50\x2a\x77\x0a\x4e\xc6\x75\x26\x3d\x0d\xd7\x81\xb4\xfa\x53\xc9\xdb\xf8\x09\x8d\x57\xb3\x3a\xe2\xaf\xba\xeb\x3e\x68\x26\x6a\xd9\xaa\xb7\x17\x4b\xa6\x8c\x64\x79\x88\x39\x92\x67\x0c\xcf\x3e\x5a\xc6\xa1\x7e\x65\xe3\x1e\x1f\xdc\x85\xe2\x69\xc8\x09\x35\xef\x57\x4f\x20\xd2\x39\x56\x84\x86\xe7\xd9\x4a\x4f\x72\x4a\xb7\x00\x60\x98\xb2\x4f\x3f\x61\x58\x76\x91\x43\x5c\x7f\x29\xce\x4e\x5c\xa7\x1b\x2b\x18\x74\x55\x64\x33\xa3\x58\xc8\xc5\xef\x3c\x88\x08\x43\x03\x0c\x2d\x13\xd5\x1b\x78\xc9\xbf\x1a\x88\x24\xe6\x2e\x11\x18\x44\x39\x6f\x5a\xf2\xe2\x5c\x31\x26\xef\x36\x26\xe2\x6e\xfa\xfa\xcf\x99\x83\x0a\xa4\x12\x12\x33\x2f\x37\x8a\x16\x72\x33\xa0\xb4\x22\x13\xaf\xe3\x6d\x83\xdc\x45\x82\xa7\x96\x93\xb9\xd5\x71\xa5\x77\x12\xa0\x8b\x85\x66\xd3\x61\xac\x90\x26\x47\xaf\xc8\x86\x60\x3e\x24\x28\x3e\xfb"}, +{{0xb1,0x11,0x9c,0x36,0x11,0x8b,0x7a,0x06,0x5a,0x19,0x5b,0xfb,0x8b,0x79,0xa5,0xc2,0x87,0xe0,0x9b,0xd2,0x87,0xc2,0xda,0xac,0x5e,0x6b,0x01,0x16,0x4c,0x5d,0x73,0x7f,},{0x88,0xf2,0x18,0xec,0xba,0x99,0xe7,0x70,0xed,0x21,0x4a,0x8d,0x01,0xa9,0x2a,0x10,0x40,0x0a,0xca,0xf1,0xf6,0xee,0xd4,0x20,0x06,0x7e,0x13,0x6e,0xe2,0xc0,0xc6,0x70,},{0x24,0xec,0x1e,0x54,0xfc,0x7e,0x72,0x2d,0x37,0x55,0x1d,0x02,0xcf,0x13,0x5d,0x33,0xf5,0xd3,0xff,0x53,0x57,0x73,0xe0,0x29,0x91,0xee,0x85,0xff,0xd3,0xaa,0x29,0x99,0x7f,0x9c,0x46,0x44,0x70,0x19,0x7f,0xee,0x81,0xdc,0xe1,0x10,0x60,0x9f,0x87,0x0b,0x27,0xc1,0x8d,0xfb,0xcf,0xd9,0x32,0x05,0x48,0x52,0x5e,0x93,0x14,0x8e,0x22,0x05,},"\x88\x16\xb1\xeb\x20\x6d\x5f\x6d\xcc\x2e\x4c\xc3\x91\xd2\x32\x09\x00\x6d\xe9\x35\xe3\x18\x15\x2e\x93\xfc\x8c\x2c\xf0\x8e\x26\x43\x2b\xad\x9a\xdb\x32\x03\xd8\x98\xdf\x0a\x2e\x7f\x1f\x83\xdc\x2f\x3e\xd3\x20\x5b\xec\x8e\xfc\xfd\x31\xad\xc1\xac\xa5\x75\x5d\xb9\xbd\x4e\xfe\x54\xcc\x17\x07\x30\x77\xde\x4a\x3f\xdd\x11\x99\x6e\x84\xb6\xa0\x52\xf0\x34\xb4\x10\x99\x22\x6c\x9c\x27\x2e\xae\x12\x52\x8f\x16\x58\x1b\x91\xb8\x12\x85\x0c\x20\x71\x44\xdb\xff\x3e\x85\x0c\xca\x84\x8e\xc2\xb1\xdd\x16\x47\x44\xd7\xb5\x93\x37\xd7\xe3\xef\xef\x00\x81\x62\xe6\x80\xbd\x4a\x08\x99\xce\xd6\x0b\x17\x1f\x8c\xbe\xb4\x8c\x51\x58\xdf\x6c\xbf\xdb\x26\x24\x08\x81\xbd\x58\xeb\xb8\xb6\xa0\x79\x58\x72\x79\x67\x9c\xb5\xad\x82\xf3\x71\xb5\x3c\x80\x13\x80\x4c\x35\x59\x6c\x88\x7e\x43\x6d\x23\x92\x6f\x99\x4e\x09\xd9\x8f\xbb\x8c\xe2\x70\x41\x74\xef\x38\xb6\x82\x62\xa7\xf1\xa7\x12\xda\x0e\xf0\xde\xc6\x39\x60\x68\x14\xb3\xbd\xca\xf2\x53\xff\x31\xc4\x8e\x8a\x75\x2c\x11\x1b\xd7\x10\x10\x31\xcc\x3d\x38\xef\xb0\xc9\xc7\xf1\x9c\x59\x08\x15\x84\xa0\xe0\x15\xee\x7c\x75\xb1\x0a\x4c\x51\xff\x54\x3a\x30\xe5\x2d\x5f\x94\xd8\x18\x8c\x6b\x08\xe9\xdf\x1e\x84\xa4\xe2\xc8\x07\x17\x0a\xc1\x24\xa7\x71\xb9\x94\x65\xa0\xd3\x8b\x1f\x1c\x63\x30\x40\x3c\x82\x54\x35\x82\xc5\xbb\x61\xb2\x20\xde\x1b\x9e\x0e\xf6\x9b\xda\xe2\x60\x23\x18\x1b\xa4\xcc\x07\x7a\x5f\x0d\x42\x57\x32\xac\xe1\x32\xae\x0c\x6f\xf0\xbb\x18\xba\xea\x83\xe8\x87\x7a\xfb\xe6\x50\xfe\x0b\xd0\x20\x93\xf0\x0a\x7b\x53\x65\x72\x8d\xcb\x66\xfb\xb8\x81\xf5\x92\x94\x50\x58\xa5\xb3\x50\x66\x5a\xf9\x1c\x55\x7a\x54\x72\x50\xad\x29\x5e\x68\xb4\xfb\x72\x45\x7c\xfb\x9d\x5e\xa1\xa7\xb2\xa3\x9c\x9a\xb7\xd7\xac\xe0\xaf\x5d\x51\x66\x9c\xb6\xc2\xc4\xc0\x7b\x22\x56\xd1\x0e\x5f\xfc\x6b\x97\xc6\x60\x00\x63\x13\xc4\xeb\x8d"}, +{{0xcb,0xb5,0x87,0x51,0x4e,0x0a,0x34,0xff,0xc3,0x4c,0xbc,0x04,0xf2,0x8c,0x9b,0x4f,0x64,0x65,0xf1,0xeb,0x22,0x5c,0xca,0x19,0xb8,0x64,0x87,0x6d,0xae,0xf3,0x7d,0x7f,},{0x6b,0x70,0x5d,0x46,0x77,0xd2,0xd8,0x49,0xb6,0x74,0x4b,0x1e,0xbe,0xd1,0x67,0xdb,0xcb,0xf6,0x45,0x92,0x4b,0x1f,0xf2,0xe6,0x36,0x07,0x94,0xbd,0xd0,0xe0,0x97,0x88,},{0x12,0x74,0xd6,0xf3,0x56,0xeb,0x64,0x14,0x72,0xb6,0xb9,0xe5,0xb3,0xce,0x65,0xd2,0x65,0x4e,0x6c,0xb8,0x7d,0x3a,0x83,0xfb,0x49,0xd0,0xf7,0xda,0x9c,0x44,0xbe,0x2b,0x53,0x26,0x04,0x46,0x5f,0x60,0x89,0xd6,0x80,0xd2,0xd9,0x4b,0x0e,0xdd,0x2b,0x6b,0x2b,0x80,0x5c,0x5e,0x84,0xc3,0x79,0xef,0xc0,0x59,0x67,0x3d,0x31,0x00,0x7a,0x09,},"\xbd\xf7\xd1\x7c\x70\x67\x96\xef\xd3\x48\x95\x59\xb5\x27\xb1\xc0\x58\x4b\x90\x22\xc9\xcb\xda\x3a\xac\x51\x46\xda\x34\x0d\x9c\xea\x69\xf9\x16\x03\x7c\xd2\x1b\x3e\xb1\x10\x43\x48\x88\x0f\xd5\xc5\xb7\xc6\x5f\xf8\x20\xf7\x49\x93\x46\x01\x69\x51\xcb\x71\x5d\x8d\xf2\xb4\x1c\x88\xcd\x3c\x66\x10\x54\x58\xb7\xb5\x90\xc2\x1c\x1a\xe2\xf6\xea\x9d\xde\xa7\x47\x0f\x25\xe0\x20\x27\xd1\x71\xe0\xe5\x74\xa2\xbb\x21\x64\x2f\x8f\x9d\xa5\x08\xe2\x1d\x8e\x73\x35\xb5\xac\xe5\x93\x52\x99\x40\x7b\xd1\xb0\x1b\xdd\x14\x23\x13\x3e\xf0\x45\x23\x4e\x70\x1f\x55\x54\x94\x34\xad\xe9\x4a\x60\xbe\x1e\x14\x06\xca\x5c\x75\x8c\x36\x79\x9c\xe1\x70\x30\x84\x47\x6e\x48\x4f\xb1\x74\x05\x30\xae\xe8\x42\x66\xd0\x7a\xdf\xb4\xcc\x68\x9f\x32\x65\x13\x3a\x59\xcd\xf9\x92\xfb\xb9\xa4\xb1\x2d\xef\xbe\x24\x1d\xdb\xf6\x5d\x12\xb2\xfb\xdd\xfc\x05\xaf\x0f\xb8\xde\x42\x08\x07\x75\xba\xd2\x9c\x6b\x04\x59\x84\x1c\xbb\x64\x8a\x9a\x95\xe4\x8d\x6e\x36\xac\x51\x44\x80\xa3\xde\xb4\xb3\x65\x54\xd8\xda\x62\x08\x08\xae\x9d\x47\x32\x97\x10\xd2\x0a\xaa\x6e\x5d\x7f\x54\x7d\x81\xad\x30\xf8\x4c\x0e\x3d\x23\x9c\xde\x5b\x16\x9d\x9d\xdf\x29\x48\x32\xd6\x7a\x80\x60\xba\x32\x9c\x4e\xf3\x9b\xe9\x4a\xc4\x64\x34\xdd\x21\x85\x93\x1d\x12\x31\xf9\xb6\xdf\x87\x8a\x5a\xf0\x83\x1e\x0e\x9d\x8a\x08\xd0\x80\x69\xde\xd6\xa9\x61\xef\x7f\x39\xfa\xd5\x01\xff\xd1\x7d\x6d\x9b\x7c\x65\x46\x53\xc1\xf5\x8f\xce\xe1\xa6\xcd\x80\x3d\x2a\xef\x16\x6c\x78\xef\x55\x14\xa3\x27\x6d\x69\x98\xdc\x7c\x09\xa3\xfa\x98\x2e\x42\x7c\x78\x5a\xa6\xa9\xe2\x56\xf7\xba\x72\xd5\xa6\xba\x33\xeb\x46\xf1\xf9\xfe\x9b\xe2\xbf\xc1\x41\x09\xf6\x47\x73\xc0\x0c\x06\x3b\x4d\x5c\xb4\xf4\xf8\xa0\xbe\xca\x92\xa9\xa0\x16\xc4\xf5\x40\xfe\xea\x9c\x3a\x31\xe3\x13\xbb\xcb\xc2\xff\x5e\xca\x99\x67\x85\x7f\x5f\x8a\x90\x9a\x29\xd7\xf2\x0d"}, +{{0x8b,0xde,0x3f,0xf6,0x1a,0x16,0x99,0x5a,0xb9,0xd5,0x39,0xf6,0x05,0x32,0x19,0x08,0x1b,0xca,0xea,0x1d,0x45,0x8e,0xc3,0x36,0x84,0xfc,0x1c,0x01,0xfb,0x56,0x5b,0xfa,},{0xcd,0x9d,0x78,0x2a,0x35,0x6e,0x84,0x7b,0x7a,0x04,0xc8,0x85,0xa9,0xb0,0x90,0x7c,0xc3,0x3b,0xa9,0x7a,0xd5,0x39,0x0d,0x4e,0xa5,0xfe,0xe5,0xeb,0x19,0x8d,0x08,0xb3,},{0x74,0x64,0xdf,0x0b,0x67,0xeb,0x90,0xb4,0xb7,0x3f,0xf0,0x82,0xad,0x0d,0x60,0xeb,0xfe,0x06,0x60,0xda,0xe9,0x70,0x69,0xb5,0x2c,0x37,0x27,0x22,0x3b,0xf7,0x0e,0x29,0xe4,0x87,0x11,0xa2,0xbb,0xb4,0x38,0xf5,0xf8,0xd8,0xa3,0x3b,0xb9,0xc4,0x8f,0xe7,0xb6,0x28,0xfa,0x8a,0x54,0x2f,0xf0,0xb5,0xae,0x36,0x26,0x9d,0x40,0x07,0xa5,0x05,},"\xa1\xf4\x0e\xc5\x80\x7e\x7a\x27\x06\x9a\x43\xb1\xae\xbf\xf5\x83\xef\x03\x70\x28\xc0\x2c\x85\x95\x25\xeb\x8f\xa4\xc3\xba\x95\xa9\x01\xff\x3a\xed\x78\xc4\xf8\x77\x52\xfb\x79\x55\x22\xf5\xbf\x71\x5b\xe7\xe3\xde\xfa\xc1\x0f\xcf\x17\xe3\xfa\x5c\x54\xb2\x00\x89\xa4\x72\x33\x33\x27\x25\x2e\xc9\x45\x71\x8f\xb4\x55\xe3\xf2\x7c\xcf\xde\xf8\x23\xd1\x2d\x40\x6e\x62\xa4\xae\xba\x3c\xb9\xd1\xc6\x1b\x2b\x17\xe4\x9e\x20\x0a\x84\x18\xf9\x35\xf2\x6e\xeb\x57\x60\x2c\x7a\xa3\xb3\xa2\x4f\x7e\x62\x38\xd3\xe0\x8d\x2d\x60\x9f\x2e\xad\xa0\x33\x2b\xc8\xcb\x12\x91\x6c\xb0\x3b\x0d\x4f\x9c\xd6\x02\x00\x25\x86\xd3\xe4\xcc\x7e\x0e\x03\x81\xc0\x45\xad\x2e\x1e\xe2\x82\x98\xae\x7f\xcf\x0c\x10\xf2\x12\x80\x85\x65\x29\x6f\x15\x8d\x2c\x32\xe8\xcb\x28\x15\x65\x81\xaf\x52\xbf\xc3\x47\x0c\x3c\x95\x82\x13\x8d\x22\x55\xe8\x42\x6d\x64\x8c\xa2\x37\xd7\xaa\xd2\x85\x6f\x17\x16\x38\x55\x82\x41\xd8\xae\x3f\x62\xba\x92\xdb\x59\x65\x68\xed\xee\x3e\xc0\xef\x37\x0f\x83\x62\x6a\xa0\x44\x5a\xf0\x8f\x96\x78\x63\x66\x0e\x8f\xba\x5a\x41\xc8\xe8\xed\xe1\xc9\x60\x51\x4a\x14\x68\x7a\x4a\x81\xe7\x76\xae\x0e\x8e\x77\x7f\xb0\xf2\x50\xd5\x1a\x83\xb5\x5f\x8c\x1f\xfd\xd7\x8d\xf3\xbd\xc9\x7f\xf1\x77\xaf\xec\xa0\x46\xc7\x2d\x72\xaf\x92\x4a\xd0\xd0\xab\x2b\xfc\x11\xb7\xf4\xab\xde\xd5\x1c\x39\x87\xa8\xbb\x94\xd6\x40\xc8\x71\x0e\x5f\xc9\xa4\x19\x0e\x8a\x00\x83\x63\xd7\x41\x9c\xea\x17\xc4\x0d\xea\x20\xea\x51\x56\x02\x9f\x3d\xeb\xf0\x52\x41\x91\x8f\x54\xaf\x50\x39\xe2\xc4\xcf\x2c\xa2\xe1\x39\xf6\x0e\x45\xcc\x65\x59\x5c\xdf\x54\xa6\x7d\x92\xb6\xac\x66\xfc\x0c\x5a\x29\x04\x95\xca\x57\xb0\x7e\xf5\x75\x0d\x05\xf5\x7d\x87\xd0\xc2\x28\xf7\xe4\xe1\x5a\xd0\xba\x01\x78\x73\x0f\x95\x1c\x69\x75\x83\x48\x1c\x66\xcb\xfc\xd4\x80\x32\x54\x4a\xa8\xd5\x09\x08\x30\x4b\xd8\x19\x40\x30\x87\x06"}, +{{0xda,0x59,0xbb,0xc5,0x23,0x40,0x4f,0x07,0x64,0x6a,0xdd,0x79,0x08,0x29,0x49,0x77,0xe4,0x66,0x45,0xbc,0x8a,0x38,0xba,0xd2,0x80,0x96,0x41,0xa2,0x3d,0xe3,0xb1,0x5a,},{0xb2,0x2c,0x0f,0x21,0xaa,0x1c,0x2d,0x45,0xf4,0xb2,0xe5,0x6c,0xc9,0xb5,0xe0,0x2f,0x9e,0x31,0xa2,0xea,0xa3,0x67,0xec,0xb4,0x82,0xf8,0x74,0xcb,0xd8,0xe9,0xfe,0x34,},{0x14,0x72,0x45,0x9c,0xbb,0xae,0x2c,0xf2,0x1c,0xe4,0x4a,0x15,0xba,0xe9,0xfc,0x85,0xdc,0xa4,0x0b,0x81,0x82,0xda,0x7d,0x52,0xcb,0xf5,0x6e,0xd5,0x38,0xd1,0x8e,0x03,0x47,0x7c,0x14,0x0a,0x3d,0xdd,0x0e,0xfb,0xa4,0x3c,0x96,0xaa,0x92,0xf5,0xf9,0xbc,0xdf,0x34,0x81,0x28,0x6c,0xe7,0x62,0xa7,0xe2,0xbd,0x1e,0x77,0x9b,0xa9,0x9b,0x0d,},"\x09\x71\x06\xc3\x62\x4d\x77\x4d\xde\x25\x51\xe0\xc2\x7e\x19\x50\x4e\x65\x18\xcc\x86\x36\x9a\xb2\x6f\xf8\x10\x96\x9e\x7d\xe2\x4a\xbc\x68\xb4\xb5\x3f\x11\xd9\x45\xd4\x9e\xf0\x78\xeb\x4f\x6b\xa6\xbf\x25\x7f\xf7\xb6\x08\xaf\xdc\xb3\x0a\x5c\x59\xa7\x56\xfd\x77\xa6\xc1\x24\x7f\x6f\x2a\x41\x10\x0d\x99\xfc\x52\x06\xaf\x3b\xcc\x6d\xe1\xd3\xe4\x96\x8e\x28\xfb\xa0\x12\x3f\x60\x45\xa1\xb5\x4d\x69\x3a\x42\xbd\xfa\x07\x1b\x2b\x91\x4b\x3c\x3c\x0c\x29\xb2\x59\x3d\x07\xe8\xbd\xc8\x6c\xa4\x2a\xc5\x55\xb7\xdc\xd9\x43\x9d\xf9\xfb\xd4\xbb\xec\x73\x0d\x63\x27\xbf\xae\x4f\xc4\x1e\xd4\x98\xb4\xf0\x4a\x0e\xb1\x4c\xee\x60\x82\x83\xaa\xa6\xe6\xaa\x46\x67\x6b\xc8\x8a\xed\x5d\x99\x39\x03\x7a\xad\x49\x15\x66\x1a\xf9\x4b\xb5\xf6\xe6\x53\xa2\xca\xc1\x23\x28\x70\x73\x27\x0e\x0b\x13\xfd\xa1\xdd\x48\x71\xaf\x6a\x92\xf9\x92\xf5\x39\xdf\x88\x17\x12\xfe\xfb\x03\x85\x40\xd4\x11\x91\x12\x3b\x6b\x3b\x4b\x6f\xf8\x7f\xfc\x92\x9a\x6b\xe5\x3c\x6c\xef\x02\xf4\x8f\x2f\x0c\xf2\xfe\x64\xa4\x5f\xd6\x60\x25\xcc\x2d\x7e\xe5\x5e\xbe\x23\x16\xc0\x00\x85\x56\x61\x16\x5e\x2a\x5b\xa4\x1a\xfc\x20\x97\x95\x7b\x6f\xe4\xc5\x52\x21\x20\x4b\x6f\xc1\xf3\x17\xdd\x3b\xa1\x3c\xac\x39\x92\x40\x26\xbd\xb6\x6b\xe4\x54\x22\x68\x87\x56\x31\xd2\x77\xf2\x10\x10\x7a\x33\x76\x7f\x6d\x95\x96\xe2\x57\x42\xd7\xa9\x0e\xa7\x91\xea\x4b\xc9\xee\x84\xa6\x7f\xd3\x28\xb8\x0f\x79\x1e\xde\x96\xd8\x96\x63\xe9\x37\xf0\xb7\x55\xba\xa9\xd5\x2b\xda\x21\x0c\xee\x1d\xb3\x39\xff\x1d\x3c\x4b\x00\x0b\x65\x3b\x9b\xde\x33\x80\x49\xaf\x84\x36\x4e\x21\x77\xf8\x0d\xd5\x1e\x2a\x16\x72\xee\x55\x5d\x63\x17\x58\x9f\x6f\x1d\x5a\xbe\x6c\x28\x77\x35\x8b\xf9\x4b\x0b\x80\x8f\xf8\x57\x36\x3f\xbf\xbe\x32\xe9\x73\x37\xe4\xb8\xa8\xc2\x21\xa9\xe7\x59\x62\xa8\xdc\x9b\x5a\x3d\x7c\xa5\xf9\xc9\xb6\x1c\x73\xc1\x46\x9a\x72\xbd"}, +{{0x40,0xea,0x82,0xda,0x41,0xfd,0x15,0xb0,0x6f,0xfe,0xb9,0x9c,0xd6,0x16,0xdc,0x6b,0xc8,0xc1,0xb2,0x14,0x77,0xea,0x23,0x94,0x66,0x08,0x8e,0x28,0x49,0xbf,0x10,0x16,},{0x59,0x10,0xe5,0x80,0xbf,0x41,0x2c,0x31,0xa8,0x74,0x51,0xd9,0xdd,0xf3,0x2b,0x3a,0xb7,0x13,0xf9,0xe4,0xa2,0x2c,0x59,0x0c,0x64,0x1c,0x14,0xa5,0xdf,0xbb,0xe0,0xd7,},{0xd2,0x98,0xfc,0xc9,0xa8,0xec,0xb7,0x6a,0x98,0xd4,0xa7,0x1d,0xfb,0x01,0xd2,0x76,0xab,0x2d,0x96,0x70,0xa9,0x5b,0xab,0x34,0xcf,0x1d,0x83,0x64,0x51,0x6d,0x1e,0xbd,0xb2,0x39,0x03,0x46,0x02,0x15,0x30,0x71,0x25,0xaf,0xd0,0x9c,0x75,0x8e,0x98,0x1a,0x45,0x2d,0xa9,0x5c,0x0a,0xc2,0xc0,0xb9,0x58,0xc6,0x91,0x7e,0x68,0x74,0x19,0x0d,},"\xa0\x6c\x4e\x02\xb8\x3a\xb7\xe1\x91\xad\x81\x8c\xb8\x18\x7b\x52\xa8\xda\x00\x4f\xe8\x38\xdb\x33\x3c\x4e\x02\x54\x8d\xb6\xbd\xf7\x91\x44\x46\x42\xe5\x7f\xdb\xc8\x59\x4e\x59\xd7\x02\x32\x80\xbb\xae\x82\x98\x6f\x39\x98\x05\x43\x4b\xb0\x72\xc8\xa2\x7a\x2d\xcd\x5a\xa6\x2f\x06\x5b\xc5\x8b\x06\x21\xfc\xd3\x65\xf6\xcd\xbf\x4d\x57\xd5\x77\xd9\x11\x50\x30\x1f\xa4\x8f\x18\x2f\x87\xe8\xdc\xa7\xce\x45\xa7\xd6\x48\x45\xff\x43\x4d\x1b\xab\x05\x34\xcc\xc8\x3a\xa0\x97\x4e\x88\xb3\x8f\xc2\x50\x8c\xef\xcb\xbc\x82\x13\x5b\x73\xb3\x84\xc8\x0e\xcc\xb8\xa0\x9e\x28\x73\xcc\x07\x12\x90\x21\xd8\x1c\xe1\x29\xa9\xdf\x65\xe6\x13\x41\x0a\xf9\x50\x19\x7d\xbf\x9a\xfc\x28\xed\xc4\xe6\x5c\x3e\x84\xda\x40\xd2\xef\x84\x1b\x88\x6b\xc4\x47\x19\xa5\xd5\x9d\xb2\xc6\xdc\x77\x64\x01\xc8\x95\xe2\xb3\xc8\x37\x83\xd7\x81\x7b\xba\x68\xba\xff\x59\x47\x0d\x60\x15\xbb\xa8\xd9\x75\xf0\xeb\x71\x2f\x3b\x89\x02\x91\x28\x05\x52\x3a\xa7\x1c\x90\x49\x9d\xe6\x89\xd3\x1a\xe4\x4e\x21\x0b\x84\x46\xf2\x48\x47\x27\xcc\x49\x1b\x92\xa8\xe8\xb1\x99\xd6\x28\xe1\xdf\x79\xa2\x8c\x56\x1e\x5a\x7d\x88\x2e\x30\x78\x7d\x08\xfb\x2d\x51\x96\xba\x61\x19\x63\x09\xb3\xbf\x0c\x58\x24\xa3\x54\x8c\x70\x00\x03\xfe\x99\x13\xbe\xfe\x12\x22\x31\x50\x01\x26\x85\xe9\x07\x20\xe9\xec\x6b\xc4\xdb\x60\x74\x25\xae\xc5\x31\xc4\xfa\x36\x08\x6d\x3b\x9b\xe3\x91\xa3\xf0\x46\x35\xa8\x07\x7a\x44\x7a\x16\xa6\xfd\x89\xaf\xbb\x9a\x72\xd0\xd3\x55\xcb\x0b\x22\xd5\x62\xf4\x3f\x59\xd4\xe3\x71\x28\xb3\xe2\xd9\x06\xc8\xae\x23\xd0\xaa\x59\x9c\x70\xd3\x77\x8a\x07\x6c\x1a\x39\x72\x8f\x1d\x69\x37\xbd\x48\xb9\x78\x74\x08\x50\x56\x61\x38\xd3\x48\x52\xb6\x30\x75\xe8\x9a\x8e\x22\x80\xed\xba\x6f\x4e\xe8\xf6\x15\x11\xe9\xb7\x68\xe9\x5c\x78\xd1\x97\xb6\x93\xb1\x09\xe8\x88\x18\xb4\x86\xa9\xdf\xdb\x74\xb4\xc5\x55\x0a\xcd\xfb\xd5"}, +{{0x28,0xbb,0x81,0xa1,0x7d,0x45,0x84,0x75,0x4d,0x52,0x81,0x8c,0xd0,0xf1,0xf2,0x1b,0xaa,0x77,0x7e,0x69,0x58,0x44,0xa1,0x51,0x22,0xac,0x05,0x34,0x4d,0xdd,0xc0,0x27,},{0xd5,0xf6,0x1d,0x51,0x99,0x44,0xd1,0x3b,0x84,0xbf,0xa7,0xcd,0x67,0xcb,0x0b,0xea,0x4e,0xf2,0x28,0x1e,0xfa,0x46,0x1f,0x22,0xad,0xe4,0xba,0x88,0x2d,0x11,0xb2,0x52,},{0x9c,0xe4,0x5a,0x07,0xdb,0xd2,0x8d,0x3f,0x6f,0x1b,0x35,0x63,0x0a,0x3f,0xd5,0x6f,0x1d,0x54,0x8f,0x84,0xff,0xb1,0xc6,0xae,0x64,0xb2,0x14,0x98,0xae,0x38,0xe5,0x96,0x91,0x6e,0x77,0xf7,0x99,0x05,0xe6,0x09,0xfb,0x1a,0xe0,0xda,0x36,0x13,0x8a,0x80,0xf2,0x42,0x12,0x21,0x67,0x06,0x80,0x92,0xcc,0x60,0x57,0x96,0xc5,0x66,0x9e,0x06,},"\x92\xe8\x4c\x7a\x55\xb0\xbe\xa0\x3e\x17\xcf\xb6\x5f\x70\x85\xce\x3f\x44\x5b\x15\x42\xba\xe9\x97\xde\x5f\x09\x2a\x24\xff\x24\x33\x80\x28\x6d\x13\x70\x91\xa5\x98\xf3\x5e\x6d\xae\x1a\x1c\x64\x8f\x5a\x49\x4c\x81\x9d\xfb\x24\x06\x52\xff\x90\x83\x81\xf3\x2d\x70\xbc\x51\x31\x00\xac\xa1\x6f\xe7\x22\x02\x95\xb1\xc7\x18\x35\xf1\x6d\x93\x10\xa9\xd2\x7a\x04\xa9\x80\xac\xe2\x97\xd5\xaf\x3f\x7c\xb7\xc7\x8b\x24\x99\x7c\xcb\x41\xf5\x4e\xcb\xab\x50\x7e\xb7\x3e\xa6\xa3\xed\x47\x0e\x49\x59\x05\x09\xf5\xd1\xe6\x03\x2a\x26\x05\xdb\x87\xf4\xa9\xb9\xec\x91\x60\x25\x83\xf1\x4e\x2f\xe1\xbd\xb9\x00\xec\xb8\x97\x11\x96\xb5\x5c\x0d\x43\x34\x89\xf2\x6b\xe9\xca\x15\x7c\xbd\x56\x57\x28\x87\xba\x85\x9f\x39\x67\x4a\x8e\x0c\xa0\x8f\x2d\xbb\x0f\x27\x07\x35\x51\xd0\xb1\x99\x06\x85\x17\x8b\x1a\xe9\xe7\x88\x54\x99\x14\x3d\x9d\x72\xc8\x57\x1d\x11\xe0\xd8\x5b\xf5\x8d\xf9\x4e\x2a\x74\xd9\xb6\x84\x65\x57\xf9\x12\x5c\xa0\x94\x4c\xe5\x71\x8d\x2c\xba\xe1\x67\x2b\xa0\x2b\x84\x7c\x17\xa6\xf6\xb4\x45\x63\x4d\x2f\x01\x75\xa7\x5c\xf6\x88\x3c\x62\xe5\xb5\x21\xc5\x71\x41\xf2\x18\xb2\xfb\x09\x94\xb3\x72\xa7\x16\xc4\xa2\x17\x43\x4b\xea\xb7\x57\x40\xb8\xe9\x1c\x62\x21\x87\xd0\x3c\x85\xda\x00\x1e\x00\x24\x73\x12\xa4\x65\x22\x5f\x5d\x6a\xf2\x32\x06\x4a\x42\x7d\x30\x18\x70\x0d\xed\x77\x4b\x90\x26\x77\x7a\x52\x75\xfc\x04\x75\x46\x06\xc8\x66\x00\x29\x7b\xf7\xb7\x1a\xaf\xf8\xb9\xa7\x46\x67\x7a\x36\x62\xf3\x75\x0e\x81\xb5\x01\x66\xf6\x23\x70\x00\x05\x1f\xfa\x15\x86\x8d\xef\xdf\x09\x00\x57\x72\x2a\xe2\x29\x96\x4a\x4e\xa0\x85\xe0\xdb\xc0\x4c\xe1\x99\x77\x22\xc5\xbb\x65\xd2\xb4\x7e\xcb\x74\x6f\xd8\x3a\x9f\x6a\x69\xc8\x15\x45\xa9\xb5\x02\xf5\xe7\x6d\x31\x30\xc5\xaf\xcb\x1c\x9a\xf9\x9d\x91\x87\x40\x83\x7c\xe8\x9d\x7c\xd2\x13\xfe\xf2\xfd\x06\x2c\xe8\x85\x0f\x69\x65\x9e\x4a\xd3\x27"}, +{{0x24,0xbf,0xd4,0xfc,0x45,0xd5,0x09,0x35,0x85,0x67,0x81,0x01,0xcf,0x56,0x3a,0xb8,0x01,0x1f,0xd6,0x43,0x0d,0xe1,0x55,0xf2,0xa4,0x25,0xf0,0x63,0x3e,0xe3,0xb7,0xcd,},{0x9c,0xf5,0xc5,0xfc,0x0c,0xcf,0xae,0xb2,0x8a,0x08,0xba,0x67,0x70,0x7b,0x18,0xdc,0x84,0xea,0x06,0x98,0xff,0xbd,0xbc,0x16,0x9a,0x09,0xc2,0x81,0x23,0xe6,0xc2,0xac,},{0xdc,0x93,0x5b,0x60,0xfd,0xe4,0x43,0x59,0xaf,0x8f,0x50,0xed,0x7f,0x91,0x9f,0x48,0x3c,0xe3,0xf2,0x4e,0x23,0x20,0xc5,0x5b,0xa9,0x2f,0x3e,0x76,0x17,0xc1,0x9b,0xfb,0x54,0x70,0x19,0x03,0xff,0x18,0x3b,0x42,0xcb,0xed,0xfe,0xf0,0x87,0x5f,0x42,0xb1,0x28,0x75,0xd3,0x6a,0x0a,0xee,0xc7,0x3f,0xfd,0x09,0x50,0x9d,0x92,0xb2,0x8b,0x0d,},"\xba\x54\x12\x8f\x45\xbe\x20\x01\xdb\xb0\x60\xd5\xdc\xc4\x71\x44\x99\x74\x15\xd4\x29\x4f\x6e\xba\x8d\xce\xba\x4f\x6c\xf2\x23\x46\x83\xc4\x26\x5f\x88\x03\x22\x05\x29\x6e\x9b\x27\xd6\x85\x06\x23\x2d\x57\xb6\x88\x40\x76\x48\xf8\x7c\xeb\x34\x20\x52\xbd\xe9\xd0\x06\x55\x42\xff\x17\x15\xc9\x42\x02\x7e\x67\x48\x2a\xf4\xbc\x27\x8f\xf7\x19\x66\xfb\x3f\x62\xa2\xa5\x32\x3c\xb1\xb4\xba\xe1\xe7\xb8\xfe\xdc\xbc\x73\xea\x05\xb4\x07\x64\x21\xb0\xb4\xfa\xe8\xbc\x33\x37\x41\x6a\x17\xfe\x12\x4e\x7e\xe4\x65\xeb\xb3\x8d\x87\x92\x30\x64\x29\xd8\x27\x9a\x1b\xd5\x4c\x37\xbe\xe8\xf9\xc8\x5e\xeb\xe3\xaf\xd1\xf6\x44\x89\xd4\xe5\x3a\xc5\xf5\x06\x57\xbb\x6f\xfb\x97\x12\x07\x44\xb7\x5d\x47\xc6\x22\x6d\x5a\x9c\x9c\x26\x4e\xe3\xe6\xa6\xde\xd0\x50\x62\xca\x10\x06\x66\x91\x18\x45\x45\x50\x01\x09\x19\xc2\x63\x3c\xf0\x86\x95\x03\x45\xe5\x14\xaf\x38\x43\x14\x8e\x5c\x64\x35\x2e\x69\x03\x7d\xfe\x60\xd4\xa8\xea\xb3\xeb\x8c\xb5\x4b\xd3\x9a\xf2\xf3\x53\xd5\xde\xd2\xe2\xbc\x8b\x11\xc0\x9f\x61\x2e\x12\x8c\x6e\xfa\x41\xf6\xeb\x2c\x95\x80\x87\xbe\x34\xc6\x33\x5a\x43\x00\x5d\x11\xa9\xd3\xb5\xa5\x29\xc2\xd1\xb0\x64\x2f\x77\xaf\xdd\x8c\x6b\x1d\x6f\xb2\xa9\xdc\xb6\x5f\x42\xf4\xec\xa8\xea\x9a\x05\x40\x58\xbe\x86\x13\x66\x76\x10\xe3\xee\xd8\xd1\xdf\x07\x39\xec\xa1\x71\x95\x41\x17\x98\x9d\x1b\x12\x18\x9a\xb5\x79\x04\xaa\x96\x0b\x0c\xa8\x55\x41\x74\x63\x85\xef\xa9\x85\xbe\x9d\x97\xb5\xa9\x02\x99\x89\xa9\xc7\x14\x98\xdf\xab\xdb\x81\x36\x81\xf5\x7e\x27\x6b\x64\xdb\x49\x1b\x8f\x08\x2a\x88\x51\x45\x46\x9a\x53\x1b\x7f\x9f\x04\xca\x0a\x2c\x2f\x8d\xff\x20\xcc\xb9\x9c\x28\x61\xf5\x4e\x5e\xaf\xa9\x62\xcc\x53\xea\xf1\x8d\x3d\x5e\x50\xd3\x37\xaf\x48\x5f\x19\x97\x5f\x05\x93\x07\x00\xa8\xa7\x25\x3f\x11\xf1\x84\x13\x0d\x0a\xee\x70\x96\x9d\x96\xfe\x08\xf2\x16\x95\x1d\x9d\xce\xd5\x23\x88"}, +{{0x2f,0xc2,0xf9,0xb2,0x05,0x0a,0xd7,0xd1,0x39,0x27,0x3e,0x93,0xe2,0xa0,0x45,0x1c,0x7b,0x5c,0xce,0x57,0x59,0x9a,0xa6,0xb0,0x8d,0x3e,0xdc,0x5b,0xb0,0x75,0x90,0xc8,},{0xff,0xe5,0xa1,0x78,0x80,0xd7,0x18,0xcc,0x79,0x88,0xc2,0xfd,0x98,0x25,0xb0,0x3b,0x93,0x45,0x0a,0xc1,0xde,0xb8,0xfb,0xd1,0xf1,0xbf,0x3b,0x8f,0x87,0x80,0x59,0x54,},{0x7a,0xff,0x16,0x2a,0x3c,0x0d,0x28,0xdf,0xf4,0x17,0x15,0xa9,0x74,0xaf,0x07,0xec,0xac,0x21,0x32,0xfc,0x18,0xbc,0x43,0xa1,0x98,0xfe,0x66,0x46,0x59,0x05,0x0d,0xa1,0x9a,0xe2,0x27,0x58,0xd5,0x2c,0x9c,0xbb,0x94,0xf1,0x35,0x8b,0xb0,0x26,0x10,0xa8,0xa3,0x51,0xc2,0x11,0x62,0x79,0xe7,0x24,0x5a,0xdf,0x69,0x67,0x5d,0xfd,0x36,0x0a,},"\xdc\x12\x97\x99\x0c\xc0\x27\xd5\x6d\x1f\xee\x26\x5c\x09\xbc\xf2\x07\xa9\x58\x3e\x6b\xab\x8d\x32\x47\x82\x28\xe0\xbc\x30\x5b\x98\x18\x15\x4c\x33\x8c\xee\xc3\x4b\x04\xc4\xad\xe7\xac\x61\xdc\xb0\x9b\xfa\xc8\xad\xe0\x0d\x1f\x29\xde\x31\x70\x60\xb8\xa4\xda\xf1\x98\x7d\xe4\x09\xca\x2c\x3f\xe4\x38\x00\x88\x07\x3c\xcf\x48\x5e\x9a\x69\x51\x6b\x5b\xbb\x41\x30\xf2\x0b\xe6\x9b\x2d\xd6\xa9\xb4\x65\x15\x9c\xca\x1a\xc8\x8b\x32\x8b\x80\xc5\x1b\x66\xaf\x7f\x4c\x50\xf6\x22\x87\x72\xf2\x87\x34\x69\x3c\xe4\x80\x5a\x41\x63\xdf\xf1\x4b\x4d\x03\x98\x11\xee\x3f\xce\x65\x93\x54\x44\xa6\xea\x9a\x72\xd7\x8b\x91\x5c\x9c\x3b\x76\x6c\x60\xb7\xe0\x32\x9e\x43\xc9\xc5\x7e\xde\x94\xb9\x15\x25\xce\x5a\x07\x5a\x72\x97\x21\x97\x72\xef\x3c\x02\x96\x49\xb5\x86\xa9\x5a\x73\xbb\xdf\x16\xd8\xfc\x20\x36\x8d\xe4\xba\x44\xde\x10\x64\xbe\x58\x26\xb3\x76\xbe\x31\xa8\x6c\xa4\x78\xa5\x2e\xfb\x98\xf1\xfa\x33\x31\x57\x71\x9b\xd6\xe0\xda\x80\xed\x68\xd0\xef\xea\xfe\xe5\xa1\x3b\xcc\x3b\x45\x75\x25\x25\x8f\x1f\x7e\x03\x1f\x7b\x40\x3a\x46\x15\x06\x92\x7b\x1e\x6c\x7d\x4a\x0c\x8d\x84\xb5\xf3\xdd\x0e\xb8\xbd\xb1\x3e\xdc\x2b\x51\x4a\x81\xd0\x88\xeb\x07\x7a\x52\xc8\xa8\x31\x86\x1f\xee\xe8\x11\x0e\x41\xa3\x25\xdc\xe2\x06\xb2\xd6\x7d\x25\xf9\x0e\xf5\x7e\x0f\xde\x70\x9f\x3e\x5a\x39\xc0\x4e\xed\x31\xe5\x7c\x19\x3b\x28\x3e\x2d\xa7\x27\x9e\xe3\xf1\xee\xd4\x82\xb3\xbb\xcd\x37\x39\x02\xc1\xdf\x81\x1a\xc3\x3e\x1d\xe0\x64\x29\xe8\xf8\x44\x3f\x60\x20\x19\x65\x0b\xdc\x2e\xe8\xd7\xf6\x50\x03\x6a\x7a\x22\xb8\xfd\x88\x51\x75\x11\x22\x9c\x72\x9a\x32\x69\xb3\xa3\xe8\xfc\x72\xb0\x1b\x5a\x4b\x3e\x33\xf5\x27\x2f\x3a\xd2\x16\x29\xd0\x8b\x1f\x71\x79\x35\xe9\xe1\x04\xad\xd2\xf0\xf2\x03\x34\x32\xbe\xc8\x2e\x21\x21\xd9\x8c\x9c\x1a\x58\xe0\xda\xba\x25\x53\x6a\x1b\xe8\xe5\x08\x83\x47\xf4\xa1\x4e\x48\xd8\xe3"}, +{{0x8a,0xfe,0x33,0xa0,0xc0,0x8a,0xa3,0x48,0x7a,0x97,0xdf,0x9f,0x01,0xf0,0x5b,0x23,0x27,0x7d,0xf0,0xbb,0x7e,0x4c,0xe3,0x95,0x22,0xae,0xc3,0xd1,0x78,0x16,0xe4,0x67,},{0xd0,0x04,0x37,0x0e,0x6e,0xdc,0x34,0xb3,0xe8,0x81,0x86,0x67,0x21,0x6f,0x5b,0x22,0x6b,0x0f,0xf7,0x5a,0x58,0x48,0x4c,0x86,0x16,0xe1,0xa8,0x66,0x44,0x4c,0xab,0x57,},{0x63,0xa8,0xae,0xac,0x02,0x5f,0x2d,0xde,0x9a,0x73,0x28,0x6e,0x56,0xc2,0xd6,0x2d,0xcb,0x79,0xa2,0x41,0xba,0x0b,0x2e,0x2d,0xba,0xca,0x87,0x52,0xed,0x2f,0xc8,0xcc,0x7a,0xb8,0xe6,0x60,0x0b,0x67,0x64,0x5f,0xb5,0xe8,0x18,0xa4,0xe8,0x2c,0x29,0x18,0x0a,0x6b,0x2c,0x3f,0x58,0xd0,0x99,0xcb,0x63,0x5c,0xe5,0x2b,0xdc,0x15,0x70,0x04,},"\x86\xfb\x74\x1f\x1b\x97\x08\x92\x91\x95\x03\x1a\xa1\x64\x5f\xb7\x09\xa8\xae\x32\x3f\xff\x85\xe5\x47\x01\x94\x45\x2e\x11\xb7\xb1\x27\x91\x94\xb5\xe2\x42\x7c\xe2\x3e\x1d\x74\x9c\x3d\xdf\x91\x0b\x01\x7e\x4f\x2d\xff\x86\xdb\xe4\x82\xc9\x1b\xd9\x94\xe8\x49\x3f\x2e\x68\x24\xbb\xa3\xbc\x7d\x7a\x84\x5f\x21\x7a\xe9\x76\x0b\x3c\xd0\x02\x26\xd9\xff\x26\x16\xd4\x52\x75\x1a\x90\xc3\xd0\xd3\xc3\x6d\x4a\xb4\xb2\x52\x0f\x67\x28\x81\x71\xbd\x3a\x34\xb2\xea\xca\xe8\xd4\x4c\x1e\x15\x3d\xda\x1f\x90\xbc\xd3\x59\x5d\xad\x37\x71\x3b\x8d\x34\x01\x56\xea\x90\xa4\xe1\x35\x95\x1b\xa7\x16\x9a\xc1\x75\x57\x8b\x81\xe9\x7a\x54\x1a\xb9\xbf\xb7\x63\x28\x79\x8d\x7d\x63\x1c\x14\xdf\x2a\xd6\x13\xe9\xc6\xe1\x14\x7a\x0e\x84\x06\x2d\xdb\xa0\x35\x85\x9d\x46\xba\xde\x5f\xad\xd9\xb3\x2b\x43\xda\xd4\x83\xc6\xb8\x02\x3b\x32\x39\x1e\x51\xef\x15\x20\xc6\x8c\x61\x91\x32\x6c\x49\x44\x23\x08\x0c\x62\x3d\xc4\xad\x0a\xa0\x74\x74\x8d\x82\x6c\x29\x64\x4c\x38\x98\x6a\x77\x00\x2f\x0c\xab\x90\x68\xe6\xc9\xec\x73\xcc\x2e\x0c\x58\x4b\x80\xe0\xbc\x37\x57\x21\xf7\xa8\xfc\x35\x31\x7a\x5e\x24\x0e\x8c\x66\x09\x2f\xb6\x30\x5b\x01\x2c\x70\xe1\x7a\xea\xff\x13\x38\x6d\x5e\x28\xd0\x64\x30\xca\x58\x5b\x0c\x85\xb2\x74\xe7\xfc\xbb\x63\xe3\x42\x3a\x98\x25\x79\xe5\xa6\x4a\x02\x62\xc4\x19\x08\xe5\x5d\xbe\x43\xda\xc1\xe5\xcc\x1b\xb7\x29\x8b\xe4\x28\x72\x0a\x12\xe3\xb0\x72\x55\x9e\xc2\x67\x5d\x45\x7a\xaf\x8f\x13\x25\x2e\x28\xaa\xd6\x3c\x15\x13\xf5\xf2\x39\x56\x4d\x36\x3c\x85\x05\xff\xa4\xe5\x0f\x66\x48\xc1\xcb\x82\xbb\xa8\x52\xbf\xf0\xac\xb0\x30\xcb\xe7\x3f\x05\x9d\xd8\x7b\xbd\x73\x18\xc5\x58\x6e\x70\x86\x18\xa4\xf4\xc9\xf3\xbe\xc3\xf4\xf0\x7c\x60\x9e\xeb\xb2\x4b\xa8\x78\xc6\xbf\x1e\x4f\x2d\x0f\xd1\x45\x0a\xb9\x4e\x31\x75\x52\x17\x78\x6f\xb1\x51\x82\x76\x0f\xfb\xe5\xa2\x67\xcb\xe9\x98\xa4\xff\x90\xa2"}, +{{0x6d,0xc7,0xcc,0xf3,0x29,0x37,0x8e,0x81,0x31,0xb6,0xde,0xfc,0xd8,0x93,0x70,0x30,0x10,0x68,0x94,0x63,0x36,0xb0,0xb7,0x62,0xac,0x5e,0xa5,0x14,0x87,0xdb,0xd3,0x9e,},{0x04,0xe9,0x0d,0x27,0x5e,0x79,0xdf,0x5f,0x2b,0x6e,0xf4,0xa3,0x15,0x05,0xaa,0xc0,0x5a,0x69,0x45,0x9b,0xaf,0x2c,0x58,0x1b,0x3c,0xe3,0xdb,0x29,0xf0,0xf1,0xfc,0x14,},{0x04,0x50,0x9d,0xb0,0x03,0xa1,0xa6,0xed,0x3f,0xbc,0xec,0x21,0xac,0x44,0xec,0x10,0xcc,0x06,0xd7,0x9f,0x27,0x14,0x96,0x08,0x82,0x17,0x03,0x16,0x27,0x5d,0xf8,0x04,0x23,0xa1,0xc1,0xa1,0x12,0xd8,0x81,0xfc,0x24,0xd2,0x81,0x25,0x26,0x07,0x90,0x58,0xaa,0x8b,0x60,0x8b,0xfc,0x6b,0x5e,0x57,0x63,0x22,0x40,0xc6,0x36,0xd6,0xeb,0x00,},"\x20\xce\xbb\xe9\x84\x01\xac\x89\x34\xc3\xe6\x5a\x57\x38\xcb\x0e\xc0\xcd\xc7\x5f\xdb\x09\xdc\x96\x31\x28\x94\xb1\x87\xc0\xa4\x6d\x2c\x38\xf4\x85\x5b\xe3\xee\xcc\xdc\xdc\xc5\x6d\x92\x6a\x8c\x08\xce\x6e\x74\x8e\x2a\x85\x8f\x53\x53\x2e\x7e\x5f\xc5\xf7\x01\x4c\x8c\x6f\x86\x31\x0c\xc2\x6e\xfe\xf3\x0a\xe5\x25\xa5\x15\x79\x40\xab\x53\x5e\xd8\xe4\x03\x11\x2b\x08\xe3\x5e\x2b\xb3\xdd\x91\xa9\xae\x8f\x77\x2d\x2a\xff\x37\xd8\xc4\x0d\x2b\x5c\xc8\x87\xa6\xf1\x50\x50\xa0\xf5\xbc\xf0\x36\x0c\x3a\x9d\x12\xd5\x91\x86\x55\xed\xc3\xc1\x3c\x86\xba\x6f\x4a\x2f\xa3\xbf\xcd\x40\x5e\xd3\x8f\x87\x1c\xf7\xdf\xf0\xf7\x5d\xaf\x2c\x32\x10\x84\xee\x9f\xa8\x12\x11\xad\xb1\x05\xb2\x5c\x22\x88\xf0\xf2\xf7\xf9\x3e\xf6\x56\xb2\xde\x19\x01\x22\xe7\xa4\xbf\xd4\xa1\xbd\x98\x93\xa8\x48\x5b\x50\x9f\xf0\xbc\x46\xcc\x96\x10\x51\xc1\xdb\x5a\x12\x49\x0c\x7e\x74\x19\x22\xcc\xc0\xa6\x65\x49\x64\x70\x27\x6f\x69\xc7\xb7\x70\x98\xc1\xe6\x70\xaf\x6b\x9f\x85\x12\x52\x99\x68\x75\xeb\x80\x35\xa8\x17\xfa\x9b\xe0\x7f\x2b\xe0\xbb\xb1\x20\x25\xe0\x56\x54\x14\xc8\x17\xe9\x42\x1a\xc7\x00\x37\x38\x93\x86\x2f\x24\xcb\x16\x5f\x9a\x27\x1a\x64\xfd\x23\x05\xc6\x67\x2c\x46\x76\x7f\x8f\x07\x5b\xe5\xd2\xd4\x07\x9b\xfa\xdc\x39\x56\x28\x8b\x02\x15\x60\x53\x11\xb5\xbf\x32\xf0\x03\x7b\x7c\x5a\xd5\x02\x01\x3e\x82\xae\x34\x19\xd9\xd8\xf3\x9c\x54\x5b\x58\x88\xf4\x71\x06\xc9\x4d\x5f\xd6\x08\x4d\x26\x03\x4a\x99\xf5\xdc\xbf\x26\xa8\x4e\xb4\xee\x14\x9c\x62\xa0\x41\x0d\x8c\x70\x7b\x1a\x9b\x07\x1f\x74\xed\x23\x93\x25\x85\x07\x2c\xe6\xcb\xd3\x3d\x4d\x54\xee\x91\x79\x16\xf5\xdf\xc6\x4d\x26\xa4\x98\x01\x84\x38\xb4\x55\x73\x93\x45\xdd\x60\xae\x0f\x47\x50\x62\x59\x15\xcc\x82\x9a\xb6\x82\x2d\x6f\x05\xf6\xd2\xbd\xa0\xa7\xbf\x56\x01\xe9\xa2\xed\x6d\xe9\x60\x37\x1d\x17\xe6\xf4\x37\x09\xc9\x67\x8c\xa7\x43\xad\xfb\xdb\x45"}, +{{0xcc,0xae,0x07,0xd2,0xa0,0x21,0xfe,0x3e,0x6e,0xe2,0x38,0x36,0xa7,0x11,0xb9,0x7b,0x04,0xe0,0xa4,0x41,0xf1,0x69,0x60,0x75,0x72,0x73,0x1c,0xb0,0x8c,0x26,0x94,0x88,},{0xa3,0x22,0x65,0xe5,0x32,0x8a,0x4f,0x49,0xcf,0x06,0xb4,0x67,0xa9,0x8b,0x9f,0x9d,0x5b,0x99,0x7b,0x85,0xdf,0xb7,0x52,0x3c,0xa6,0xa0,0xa1,0xd6,0x27,0xd3,0x28,0x91,},{0x0e,0xec,0x75,0x41,0x05,0x44,0x7f,0x97,0xd4,0xa9,0xcd,0x24,0x6c,0x7e,0xed,0xe3,0xfd,0x06,0x90,0x18,0xf0,0xd0,0x1a,0x41,0xdf,0xab,0xca,0x3e,0x90,0xa7,0x41,0x83,0x5e,0xa4,0xa9,0xd6,0x82,0x34,0x22,0x67,0xb2,0x50,0xfc,0x1c,0x8c,0x54,0x7c,0x89,0x63,0x2d,0x9f,0x68,0x9a,0xf5,0x36,0xc7,0x92,0x90,0x04,0xde,0xd0,0xd9,0x6f,0x09,},"\xa4\xbf\x82\x97\xd0\xdc\x5e\x4c\x92\xbd\x00\xad\x5b\x9c\x09\xb1\x23\x8b\x50\x3d\x61\x91\x16\xef\x74\x26\x03\x78\x34\x9a\x92\x82\xb4\x1f\x3f\x46\x76\xa6\x21\x5e\x3c\xe6\xd0\x22\x38\x48\x0a\x96\x04\x3b\x29\x42\xb3\xfe\xed\x12\x62\x0b\x1f\xa9\x7f\x77\x03\xb3\xeb\x68\x3c\x16\x01\xbd\x2f\x51\x82\x5c\x45\x0d\xf4\xfd\x1f\x33\xb0\xbf\x9c\x23\xc0\x32\x23\x78\x9e\x06\xe2\x4c\xf1\x36\xd3\xb5\x57\x40\x3a\x66\x98\x1f\x4b\x77\x7d\xcf\xe8\x90\xd2\xba\x96\xda\x4a\x47\x42\xae\xed\xdd\x6a\x61\x1d\x05\xfc\x21\x56\x94\xa5\xd8\x9a\x5d\xe6\x76\x0b\x1d\x94\x15\x15\x50\x44\xc0\x49\xcb\x02\x29\x1a\x15\x14\xfa\xa2\xe7\x7d\x2a\xe3\x3d\x44\x58\x5b\xda\xc6\x36\x5b\xf4\x81\xd9\xc9\x78\x33\x93\x7e\xab\x63\x6e\xd6\x57\x42\xa0\xd5\x97\x3b\x24\xd5\x40\x89\xb2\xda\xf0\x84\xd5\x41\x47\x65\x10\x5e\x4e\xca\x14\xaa\xad\xd1\x05\x33\x38\xa8\x47\x05\x05\x23\x2e\x4a\xc6\x33\x34\x5c\x5c\xde\xe1\xe4\x65\x3d\x1d\x93\x58\x3a\xf1\x18\x54\xb1\xd9\xb6\x5f\xc2\x02\x81\x83\x8c\x56\xdf\x11\x48\xf3\x5c\xcf\x9b\xfe\x2f\x3f\x80\xab\x73\xf5\xb7\x91\xcb\xed\x2d\x92\x06\x44\xcf\x03\x16\xf0\xcb\x5d\x36\x62\xb9\x12\x06\x47\xda\x56\xaf\xbe\xb4\x7a\x95\x29\x53\xbc\x1a\x37\xde\x85\x7e\x4b\x39\xfd\x92\xb6\x32\xb8\x51\x59\xf4\x6c\xd0\x5b\x6a\xbc\x23\x38\xd4\x63\x2d\x48\xe9\xa1\x78\x86\x0d\xe8\xf6\x5d\x9b\xc2\x3f\x24\x50\x7b\x7c\x56\x29\xe0\xbd\xaa\xc0\x67\xc4\x76\xc9\xc3\x94\x1d\x86\xf7\x88\x94\x4d\x74\x48\x52\xa6\x1d\xa7\x16\xf9\x5f\x3b\x04\xf0\x78\x3a\x56\x29\x41\xbc\xdd\xa4\x39\x59\x0f\xd1\x86\xb2\xa8\xeb\xf1\x9a\x5a\x7e\x4f\x4a\x3a\xaa\xb7\xa8\x7a\x43\x45\x24\xfb\xc9\x79\x9c\x99\x31\xeb\x8c\xe4\xe3\x4e\x99\xb6\x08\xca\xc9\x4a\xb7\xe7\x44\x95\x66\x8d\xf1\x36\x18\x5f\x48\x7d\x9f\xbc\xb6\x60\x5a\xd7\x25\x34\x54\x03\xec\x57\xf3\xf6\xdb\x36\x4a\x87\xf3\x8f\xea\x4b\x4c\x27\x15\x52\xe9\xf2\xe4\xa1\xbe"}, +{{0xdb,0x5d,0x5f,0x41,0xfd,0xdd,0x67,0x68,0x70,0x97,0x47,0xab,0x82,0x39,0xbb,0x4f,0x42,0xa3,0x1d,0x34,0xb4,0xfa,0x88,0x82,0x4d,0x94,0xbf,0x78,0xd3,0x14,0x92,0x64,},{0x03,0x85,0x8c,0xe6,0xb2,0xd2,0x40,0x79,0xee,0xad,0x66,0xca,0x0d,0xfe,0x77,0x2e,0xcd,0xa9,0xaf,0x4d,0x46,0xbc,0x9b,0x5e,0xdf,0xdc,0x28,0x6b,0x95,0xfe,0x97,0x16,},{0x5b,0x3d,0x0d,0xa7,0x10,0x23,0x55,0x48,0x6b,0xe4,0xd6,0x9c,0xfd,0x65,0x88,0x6c,0x9d,0x9c,0x87,0x38,0xb2,0x93,0xca,0xfb,0x23,0xb2,0x10,0x4b,0xfd,0xac,0x8d,0x7d,0x01,0x29,0x8e,0xeb,0x18,0xfd,0xe3,0xde,0xd6,0x49,0x1d,0x41,0xb4,0x19,0xcc,0x66,0x37,0x52,0xc4,0xe6,0x7d,0xbe,0x89,0x86,0x83,0x3d,0x20,0xe4,0xef,0x34,0x18,0x0b,},"\x67\xee\x03\xde\x45\xc3\xe7\x03\x0d\xb5\x24\x6e\xe5\xb5\x1b\xf2\x98\xbb\xa3\xe4\xd0\x93\x49\x37\xfc\x12\xd9\xa6\x29\x60\x4c\x53\xc0\x70\xe3\x0d\x61\x19\x99\xa9\xcd\xda\xf2\xd9\xac\xda\x6a\x9f\x67\x20\x2b\x35\x23\x69\xd4\x82\x60\xee\xbc\xe0\xe7\x8e\x4d\x5a\xe5\x4f\x67\x75\x21\xf8\x4a\x7b\xe0\x01\x7f\xab\x27\x8b\x2b\x57\x27\x5e\xfc\x5f\xa5\x7c\x61\x71\x86\xfc\x1b\xa4\x9e\xdf\xbd\x33\x08\x63\x48\x78\xd8\x64\xf2\xda\x15\x83\xca\x8d\x56\xce\x9f\xae\x77\xc4\x62\x03\x9a\xbc\x32\xd0\x53\x9c\x0a\x60\xb7\xbb\xba\x50\x29\xe9\x32\x9d\x27\x56\x83\xd9\xc4\xce\x77\xd0\xb9\x08\xad\xe9\x8b\x0e\x32\xb4\x42\x0d\x9a\xee\x2c\xc1\x0e\x4b\xe9\x22\xf9\x57\x25\x82\xdd\x89\x67\x14\x1c\x1d\x40\x2e\x21\x5f\x20\xae\xe0\xa8\x90\xe2\x36\x8e\x40\x6d\xea\x11\xbd\x11\x17\x7f\x2e\x03\x8a\xa2\xf1\xa0\xdf\xf5\x1a\x12\x8d\x95\x5d\x5e\x5f\x8d\x5d\x00\x09\xaa\xa8\x24\x40\xa9\x68\x64\xd6\xc6\x97\xf9\x10\xd1\xdf\x23\x0f\x46\x7f\x0e\x02\xa2\xe0\x2b\xf9\xe4\x5d\xa9\x5f\x25\x54\x10\xcc\x5a\xab\x8d\x85\xf4\x49\xa5\xde\x99\xaa\xbd\x44\xfd\x76\x3e\xc1\x46\x29\xf3\xdb\xab\x1a\x24\x7b\xff\xb7\x17\x46\x48\xe4\x3b\x9f\xb1\xeb\x0d\xf5\xe4\x10\x9b\x7a\x88\xe0\x55\x12\xb2\x08\x65\xba\xd3\x9f\x9e\xa7\x9d\x52\xf5\x18\x8e\x7c\xa5\x19\x44\x05\xbf\xb1\xa0\x97\x27\x61\x7f\x3f\x6c\x88\x19\x20\x08\xed\xbc\x0c\x65\x85\xdb\xf2\x61\xf1\x49\xdf\xfb\x59\x3d\x42\x71\x6e\x5a\x57\x77\xf5\x46\x2b\xee\xb1\xe9\xa5\x6a\x2c\x76\xe6\xcb\x73\x51\x17\xcc\x11\x83\xa3\x8d\x1e\x00\xb3\x03\xd1\x74\xaa\x9c\xf5\xc7\x31\xb2\xc7\x0e\xdd\x79\xcc\x5d\xc9\x6f\x40\x18\xf1\xd7\x1d\x71\x98\xbb\xb7\xd1\x34\xcd\x2f\xf8\xc1\x5f\x9a\x04\x28\x0d\xb2\x6a\x8f\xa9\x99\x7e\xb8\x6b\x13\x3c\x02\x2e\xda\x15\xd8\xad\x5e\x77\xcc\x9f\x62\x61\x59\x60\xba\xc2\xf9\xbb\xc3\xeb\xbd\x19\x8f\x72\xc5\x72\xb9\x71\x56\xfa\x7f\xa2\x29\xa9\x80\x14\xe1\x70"}, +{{0x7f,0x04,0x8d,0xfc,0xc2,0x65,0x0c,0xda,0x59,0x49,0x1d,0x4c,0xe2,0xb2,0x53,0x3a,0xec,0xc8,0x9c,0xc4,0xb3,0x36,0x88,0x51,0x94,0xb7,0xad,0x91,0x7d,0xb5,0xcd,0x14,},{0x08,0x00,0x1b,0x5d,0x40,0x95,0x8b,0xcb,0x27,0x0b,0xee,0xa9,0xba,0xba,0x33,0x87,0xe3,0xa4,0xb9,0x00,0xfc,0x42,0x27,0x56,0x57,0xc6,0xc6,0x91,0xa2,0xe2,0x64,0xf2,},{0x58,0x33,0x70,0x97,0x1d,0x24,0x65,0x2a,0xd2,0x13,0xc4,0x26,0x15,0x91,0x19,0x38,0xfa,0x9a,0xa3,0xd9,0xb7,0x19,0x69,0x40,0xe6,0xeb,0x08,0x15,0x12,0x00,0xc7,0xb6,0x72,0x9d,0x1e,0xff,0x8f,0x4f,0x09,0x04,0x07,0x4d,0xab,0x3d,0xdd,0xa6,0xaf,0x1e,0x4e,0x56,0x2b,0x7d,0x62,0x20,0xc1,0xa5,0x62,0x68,0x3b,0xea,0xb2,0x68,0xf8,0x0e,},"\x91\x75\x19\xcd\xb3\x35\x19\x68\x0b\xca\xe0\x4f\xaa\x79\x07\x71\xce\x7d\x13\x97\xc3\x45\xf1\xb0\x3d\xd7\x62\x57\x76\xf3\xf1\x95\x80\x99\x32\x61\x8b\x1c\x64\xac\xd9\x3a\xd0\x00\xea\xd0\x96\x54\xa3\x3d\x14\xf7\x48\xb4\x6b\x67\xaa\xe0\xff\x12\xdf\x3c\xc1\x63\x28\x0f\x47\xce\xdc\x16\xa8\x57\x90\x34\xe4\x98\x84\x29\x67\x72\xec\xbd\xbb\x71\xca\x29\xc1\x66\x23\x35\x33\xc8\xde\x54\x01\x2b\x41\x2c\xa1\x3c\xc2\x58\xf7\xc5\x46\x5d\x83\x42\x2f\x52\x4e\x4c\x05\xf8\x06\x31\x34\x78\x31\x9f\xd1\x43\xcf\x50\x88\xe6\x98\x37\x69\x7d\x36\x15\xd8\x0a\x7f\xa7\xe7\x44\x3f\xca\x65\xe7\x53\xac\x1b\x11\xd8\xef\xf3\x47\x66\x36\xae\x02\xd7\xa2\x0f\x4b\x23\x88\xda\xd6\x84\x00\x2f\x5c\xe9\x57\xca\xdd\xd2\x05\x3d\x0e\xd5\x33\x13\x2a\x81\xca\x19\xbb\x08\x0b\xd4\x3b\xe9\x32\x02\x8c\xb5\xf6\xb9\x64\xf0\x08\xb5\xb1\xc1\xc5\x99\x3b\xc9\xb5\x48\x5b\x22\xbb\xef\x70\x1f\x0a\x26\xa3\xe6\x75\xea\x31\x12\x2b\xba\xe9\x1d\x86\x4b\x54\xd8\x95\xaf\xdc\x79\xca\x58\xd4\xfe\x44\x92\x13\x35\x3b\x14\x9f\x31\x43\xb5\x14\x4d\x74\x7c\x5b\x46\x97\x47\x9a\xe6\x85\x28\x48\x53\x84\x04\x4a\xa2\xc9\x9b\xa4\xb1\x7b\x18\x4e\x94\x98\x22\x69\xbd\xe2\xde\x0b\x17\x70\x5d\x0b\xfc\x46\xd6\x90\x6a\x90\xed\xef\xe8\x91\x95\xde\x6b\xb8\xf3\xfb\x6a\x37\x41\x86\xc7\xcd\x08\x6d\x13\xd1\xb3\x52\x5a\x39\x94\xdc\x80\x20\xe1\xa0\x05\x54\xac\x8a\x82\xd6\x04\x7c\x5b\xff\x5e\x7f\x12\x45\x0f\x48\x65\xda\x16\x1e\x1a\x02\x1f\xd9\xbe\x8b\xd3\x3a\x32\xbb\x54\xa4\xdd\xf8\x74\x51\x2e\x74\xb5\xcf\xd3\xfc\x3c\xd9\xac\x11\xed\xd8\x78\x43\x36\x68\xe3\xfc\xc7\x82\xb9\x7b\x6d\x90\x5a\xdb\x0e\xbe\xc4\x2c\x92\x54\xac\x90\xf3\x58\x22\xc0\x0f\x97\xff\x3f\x0c\x7c\x39\xed\x3c\x7c\xb3\x92\x0f\x56\x08\xbb\x45\x83\x8b\xb2\x42\xa5\x2a\x86\x37\xd7\xce\xcd\xcf\x48\x9f\xa1\x83\xb4\x54\x51\xc6\xc9\xfc\xbb\xbf\x91\x4f\x5f\x7e\x6b\x22\x3b\xcb\x46\x75"}, +{{0x9f,0xeb,0x3d,0xf8,0x8c,0x49,0x4a,0x99,0x84,0x9c,0x6f,0xca,0x19,0x42,0x01,0x47,0x7a,0x2f,0xa7,0x56,0x4e,0x29,0xfb,0x06,0xcb,0x44,0xc1,0x15,0x4e,0x8c,0xea,0x3a,},{0xc3,0x56,0x28,0xca,0x6e,0xe2,0x8e,0xc1,0xc2,0x39,0xdd,0xc5,0xbb,0xa2,0xa9,0xe0,0x9e,0x48,0x46,0x81,0x6b,0x14,0x3c,0x74,0xdf,0xa2,0xae,0xc1,0xf6,0x25,0x51,0xb6,},{0xa1,0xc2,0x60,0x78,0x35,0xbe,0xc1,0xa1,0xd8,0x78,0x72,0xfd,0x8e,0xe4,0x88,0xd0,0xae,0x9e,0xd2,0x3d,0x49,0xfd,0x67,0x86,0xfc,0x49,0x96,0x72,0x5e,0x49,0xb3,0x26,0x21,0x18,0xba,0xbb,0x48,0x34,0x87,0x7c,0x7f,0x78,0xfb,0xea,0xc0,0x2d,0xf4,0x0a,0xb0,0x91,0xb8,0xb4,0x20,0xdc,0x99,0x51,0x38,0x1e,0x3b,0xcd,0xa0,0x67,0x05,0x02,},"\x95\xfb\x75\x81\xbd\x25\xff\xd4\x42\xc3\xae\x38\xa1\x9b\xea\x73\x49\xc7\xb7\x68\x3b\xa6\x76\x7e\x14\x8f\x0a\xfc\x15\x37\x3f\x67\xc1\x6d\x47\x17\x81\x20\x2e\x6d\xa8\x05\x4e\xd7\xfb\x9e\xe2\x04\xcc\x0f\x63\xc2\x10\xa6\x70\xa5\xf9\xce\xd4\x29\x45\x88\x19\x63\x30\xd3\x1b\x8e\x83\x92\xbe\xf6\xb4\x8f\xe3\xc9\x20\x78\xfa\xe1\x12\x84\xb4\xc3\xba\x20\xd9\x37\xe2\x71\x9d\xe7\xbf\x67\xc0\x06\x69\xad\x23\xe6\x13\x84\xeb\xdf\x8c\x6e\x60\x73\x54\x28\xc0\x84\xfe\x21\x7f\xdb\x47\x09\xcc\xb6\x08\x3f\xc0\xae\x4a\x05\x27\x3e\xef\x73\x90\x23\xd3\x4b\xb7\x3f\x66\x2d\xac\xdf\x11\x0b\x6d\xbd\x3e\x74\xfc\x14\x91\xe8\xc9\x65\x96\x07\x5f\xae\x5c\x36\xaa\xbe\x2a\x0a\x53\x05\x2b\xf7\x7c\x44\x62\x43\x80\x63\xaa\x7b\xc0\xc5\x0a\xb9\x20\xc9\xeb\x28\x86\x71\x56\x0c\xa5\xba\x7a\xf4\x4a\x53\xdb\x2e\x2f\xf4\x3c\xa5\x60\x69\xea\x55\x17\xcb\x21\x4e\x76\xfa\xa5\x3d\xbd\xa1\x00\x00\x3c\x4f\x61\x75\x41\x40\x41\xbe\x74\xde\x22\xce\x15\x5d\x22\x81\xb6\xf4\x03\x5b\xe3\x98\x41\xaf\xdb\x96\xdd\x89\xaa\x80\x8e\x68\x65\xba\xe6\x2d\x6b\xed\xd9\x19\xd3\xe8\x65\x10\xb9\xfa\x5f\xed\xd1\x97\x7c\x41\x31\xb2\xb8\x6e\x0f\x48\xd7\x21\x5e\xb1\x3d\x54\x98\xca\x5d\x23\x68\xf8\x18\x95\xed\x85\x5a\x52\x71\x24\x65\x7e\xc9\x53\x9e\xfe\x3b\x24\x99\xa3\xb0\xb3\x38\x26\x2f\x26\x34\x0e\x22\x55\x4c\x79\xf4\xfa\xd2\xb4\xe4\x19\xc7\x0b\xc1\xa2\x10\x7d\x20\x64\x56\xb6\x36\x87\x81\xbe\x4b\x5e\x2c\x54\xda\x42\xd3\x36\x04\x0f\xb7\xba\x49\xc3\x2d\x75\x23\x21\xad\xcd\x92\x98\x6e\x78\xbe\xdb\x22\x6c\xea\xc5\x02\x92\x08\x9b\xb5\x79\x02\x7f\x70\x22\x17\x74\x5a\xfe\x06\xa5\xbe\x13\x6b\x39\x98\xa3\x60\x4c\x9f\xf2\xac\xd6\xfa\x3f\x3f\x71\x63\x3d\x31\x02\xfb\xf0\x30\x47\xc5\x48\x6f\x84\xc4\xdc\x24\x47\xd8\x63\x79\x63\x83\xd5\x5f\x08\xc9\x81\xfd\x4d\xd7\xdc\x1c\xb7\x2b\x8b\xa4\x43\x5a\xf6\xab\xdd\x74\xe6\xf6\xe6\x79\x8f\x1a\xe2"}, +{{0xbf,0xf6,0x89,0x55,0xdd,0x6a,0xe0,0xe8,0xba,0x85,0xab,0x0d,0x0c,0xda,0xf0,0x4a,0x9f,0x5b,0xef,0xd5,0xef,0x60,0x14,0xf4,0x99,0x94,0xa7,0x83,0x63,0xdc,0x17,0xf7,},{0x0a,0xd9,0x49,0x3a,0xf8,0x0b,0x15,0xf0,0x7a,0x52,0x1c,0xcd,0x67,0x4f,0xe9,0xe5,0x21,0x2a,0x4a,0x28,0xc1,0x7c,0x74,0xf6,0x60,0x5f,0xfe,0xf7,0x8a,0x4a,0xed,0x72,},{0x93,0x19,0xee,0xf7,0x40,0x63,0x3a,0xda,0x1a,0xf0,0xe1,0x37,0x64,0x4c,0x61,0xfb,0x3e,0x11,0xba,0x4b,0x01,0xd3,0xc6,0xf2,0x53,0x92,0xdc,0x93,0x67,0x87,0x2a,0x23,0xbe,0x56,0x31,0x0d,0x31,0x2e,0xfc,0xb9,0x1b,0xdb,0xab,0x78,0xa7,0x5e,0x57,0x6e,0xbe,0x90,0x81,0x97,0x24,0x15,0xf5,0x62,0xdb,0x41,0xba,0xf5,0xe2,0x33,0x8b,0x07,},"\xd8\xf5\x65\x0a\xa3\x58\x1c\x4d\x39\xbd\x1b\x8a\xfc\x96\xc1\xad\x7c\x4b\xf7\x23\x42\x6f\x9d\x7f\xab\xd1\xa5\xc8\xac\x1d\x2f\xe5\x4a\x97\x1f\xac\x76\x5e\x05\xaf\x6e\x40\x7d\x72\x69\xba\xb6\x61\xb3\x43\x22\x92\xa4\x84\xf9\x52\xc1\x10\x95\xbb\xd2\x0a\x15\xd7\x7c\x41\xf8\xf3\x73\x1a\x50\x4d\x51\x8e\xe1\x0c\xd0\x06\xc9\x6e\xe5\x73\x72\xde\x5b\xea\x34\x8e\xc8\xba\x15\x91\x62\x17\x0c\x63\xe9\x70\xf1\xc7\xa3\x46\x5a\x3d\x59\x2e\x1d\x56\xc6\x54\x0f\xbd\xb6\x02\x28\xe3\x40\x90\x96\x46\x32\x0c\x95\xf2\x56\x98\xcd\x48\x96\xbd\xff\x58\xe2\x56\x1e\x3b\x3d\x9a\x73\xb8\x97\x47\x91\x2a\x1c\xf4\x67\xd6\x3e\x41\x45\x5f\xda\x77\x47\x7f\x46\xfe\x69\x37\xbb\x0e\x79\xd9\x2c\xcd\x52\xe8\x2d\xba\x90\x8a\x05\xa5\x7c\x7e\xcf\x49\x55\x4a\xb4\x4c\x0b\x71\x8e\x3b\xdd\x5f\xc0\xbf\x70\x70\xd9\xc5\x8f\x86\x05\x91\xc1\x8b\xca\x8b\x3a\x9a\x14\x8a\x06\x54\x8e\x0f\x01\x60\x2b\x1e\x6f\x68\x60\x37\xc9\x4f\xf7\x32\xe1\x55\xd5\x2d\x5b\x0b\x44\x70\x3b\x3d\x11\x16\x3e\x3f\x56\xe3\xb9\xc1\xb8\x64\x76\xe4\xdc\xbf\xc5\x3f\xa0\x59\x84\xe8\xc7\x5d\xd2\x18\x43\xcf\x96\xf9\xe4\x94\xab\xba\xe7\x18\x4a\xa4\x27\x36\x63\x3e\x38\x11\xae\xff\x40\x2b\x2f\xcb\x7d\x7f\x70\x2e\x44\x72\x41\xe2\x2a\x58\x84\x2f\xd6\xd0\xc0\x3d\x33\xff\x5b\x8c\x79\x22\x00\xe1\x73\xda\xa7\xb2\x17\xe4\xb2\xf4\x43\x3e\x6c\x02\x0a\xcc\xe5\x01\xb9\x32\x3a\xa0\x24\x11\x44\x43\x4b\x08\xe9\xd2\x46\x91\x39\xff\x67\x34\x22\x08\x90\x05\x46\x20\x0f\xd9\x71\xa6\x5d\xbd\x6d\xb6\xc2\x1e\x3e\xf9\x17\x2a\xbb\xa1\xea\x9e\xa2\xa2\x49\xad\xdf\x1a\x1e\xaa\x3c\xe1\x19\x38\xb1\x3e\x30\x91\x3c\xd0\xda\xd4\x91\xfc\xbb\x32\x85\xea\x37\x8b\x8e\xf9\x22\x7f\x3f\xa8\x0b\x58\x6e\xcf\xea\xe1\x37\x06\x6f\x84\x48\xac\xdf\xb7\x8d\x6d\x3e\x9e\xf4\xa6\xb3\x62\xdf\x42\x41\xad\x9a\xe2\x53\xb8\xe1\x59\x7d\x65\x6e\x00\x0c\xea\x44\x7a\x02\xfa\x49\x33\x32\x86\x09\xbb\xa0"}, +{{0x1b,0xa9,0x19,0xc0,0x66,0xbb,0x56,0xe6,0x40,0xc3,0x33,0x59,0x68,0xe1,0xd1,0xb5,0xbc,0xc0,0x93,0x38,0x3e,0x2d,0x7c,0xf8,0xb5,0xff,0xf5,0xc6,0x1e,0xc4,0x7a,0x77,},{0x80,0x4c,0x90,0xbd,0xc2,0xb3,0x61,0x8b,0x01,0xf0,0x75,0xe0,0x41,0xfa,0x97,0x1b,0x83,0xc5,0xb6,0xcf,0xa3,0xb6,0xb3,0x97,0x4f,0x3f,0xa4,0x35,0x99,0xbe,0xac,0xab,},{0x50,0x3e,0xb7,0xed,0x6d,0xe1,0xb7,0x76,0xc9,0x52,0xf2,0x55,0xbb,0xd4,0xbc,0xfb,0x0e,0x48,0xbc,0x70,0xc2,0xcc,0x2f,0x1f,0x72,0xbf,0x68,0x81,0x47,0x90,0x40,0xc4,0x75,0x24,0xec,0x54,0x2a,0xe1,0x3f,0x60,0x05,0xca,0x50,0x16,0xb5,0x8b,0x73,0x6a,0x50,0x89,0x8d,0xd0,0x56,0x9d,0x4d,0x38,0xad,0x29,0x86,0x30,0xd6,0x8a,0xdb,0x0b,},"\x87\xc5\xc7\x5d\x8a\xd0\x7d\x52\xac\xd7\x81\xd1\xbb\x95\xf7\x8c\x70\xe2\x1c\x2d\xd6\x6f\x7a\xa4\x42\x34\x15\x2f\x98\x23\x4d\x12\x83\x58\xa8\xae\xe9\x8e\xa9\x03\xa7\x7b\x44\x1d\xb1\x44\x7a\xe6\xff\x34\x32\xdd\xd4\x57\x0f\x7f\x58\x03\x61\x22\xc1\xfd\xcc\x93\xcb\x21\x57\x37\x39\xc1\x9c\xca\xa4\x11\x50\x8e\x08\xde\x26\x06\xf3\xd8\xf2\xdb\x89\xdf\x6a\x44\xa4\x61\x33\xd5\x70\x18\x46\x26\x27\xe2\x2f\x57\xef\x36\xd1\xde\x02\x4d\xe3\xd4\xae\x41\xb7\x52\xdf\x48\x21\x15\x59\x34\xb4\x47\xb2\xef\xfe\x51\x24\x87\x52\x1b\xe0\x35\x68\x32\xa7\x4c\xe0\xe2\xd8\x30\x1b\x79\xf9\x31\x75\xe8\xb6\xb9\x61\xb1\xdf\x63\x7d\x8a\xca\xdc\x88\x45\x43\xc6\x86\x4f\x80\x25\xec\xec\xec\x7c\x6e\x4f\xe0\xfe\xcf\xc4\x0d\xcd\x95\xe8\xd6\xab\x93\xce\x25\x59\x53\x84\x43\x6b\x59\x8b\x73\xc7\x4b\x03\xd4\x9e\xd5\x00\x2c\x0f\x85\x8c\xfd\x9d\x0d\xf6\x1e\xde\x93\x7c\xc4\x16\x59\xd6\x70\x8b\x96\xfc\x5a\xaa\xde\xe1\x09\xe2\xa6\x88\x46\xba\xf2\xc2\x46\xdf\xcf\x3d\x27\xc2\x8b\xd1\x37\x1e\x35\xfc\x94\x12\x63\x14\x42\xee\x75\xf3\x8c\x6e\x49\x58\x07\x0a\x74\xf6\xe6\xa2\x20\xf7\x5c\x72\x80\xea\xb4\x73\x7d\x97\xe3\x78\x82\xf3\x62\x48\x11\x67\x5f\x16\xca\xf6\x0c\xb9\x44\xbc\xe9\x2e\x75\x88\x4c\x56\x48\x3c\x61\xf2\x6b\x63\x71\xb1\xb5\x12\x37\x62\x1a\x06\x54\x3e\xb4\xab\xea\x7b\xec\xc4\xfc\x31\xdb\xb5\x47\x5b\x3d\xeb\x9b\xb3\xc8\x99\x23\x87\x10\x48\x30\xc6\x07\x2a\xfe\x1a\xf2\x44\xbf\x68\x1a\x40\x32\x9c\x9b\x37\x77\x2b\x09\xc5\xe8\x8e\x78\xf7\xdf\xfb\xc0\x45\x49\xff\xa1\x3b\x41\x44\xdd\xfa\x53\x8f\xc4\xb3\x30\x05\x40\xad\x83\x02\x15\xe2\x5f\x11\x44\x6d\x28\x9f\x33\x12\x2c\x2c\x88\x0d\xe3\xda\x71\xc4\x53\xd7\xe8\x8f\x7c\xa4\xea\x3d\x12\x55\xe8\x2f\x4b\xc9\xe5\x53\x3d\xc4\x01\xc3\x30\x40\xe1\x69\x40\xb2\xcf\x9c\xf2\x1f\xea\xca\x1c\x2c\x6c\x33\x33\x7c\xf7\x5e\x18\x84\xb4\x83\xbf\x80\x15\x36\xd3\x04\x08\x91\x15\xa0"}, +{{0x9b,0x36,0x24,0x7c,0x17,0x71,0x0e,0x95,0x26,0x1a,0x7d,0x70,0x2f,0x57,0xfe,0x81,0xf2,0x97,0x11,0x17,0xa5,0x0c,0x87,0x92,0x01,0x93,0xb3,0x86,0xd4,0x94,0xca,0x97,},{0x29,0xae,0x39,0xf2,0x73,0xe3,0x5f,0xb3,0xf6,0x11,0xda,0x09,0x16,0x00,0x65,0x0e,0xfb,0xc4,0xfc,0x4d,0x1e,0x7b,0x4c,0x76,0xac,0xed,0x5a,0x83,0xf8,0x26,0x34,0xf3,},{0x03,0x59,0x70,0xa6,0x72,0xe9,0x3f,0x87,0xeb,0x42,0xcc,0x39,0x6f,0x6e,0xa7,0xe1,0xb3,0xdd,0x5c,0x59,0x51,0x57,0x28,0x26,0xd1,0x07,0x5a,0x15,0xc2,0xd7,0xe4,0x54,0xdf,0x19,0x5b,0x51,0xaa,0xe8,0xdc,0x61,0xef,0x7a,0xb8,0x95,0x48,0x5f,0x64,0xe5,0x98,0x95,0x73,0xd9,0x8a,0x06,0x2e,0x67,0xae,0x73,0x56,0xfe,0x5c,0x9e,0x3b,0x0f,},"\xe8\xd9\xd5\x3b\xa2\x7e\x98\xed\xd5\x5d\xf3\xc6\xb2\x45\xea\xcd\xdc\x8a\x40\xe3\xef\xb0\x07\xbc\x91\x8e\xc5\xa8\x69\x17\x8a\x17\x0b\xb4\xa6\x35\xb7\xf8\xf7\x42\xe3\x7a\xd4\x5d\x14\xa7\x43\x44\xa6\xb5\x22\x83\x0a\x52\x21\x06\xeb\x96\x0d\xaf\x19\x2d\xc1\xe0\xfd\x70\xf1\x61\x60\xe1\x22\x51\x68\x92\xd0\xe2\xab\xd0\xd4\xae\x0f\x0d\x2e\x5a\xdc\xc9\x9a\xd5\x53\x02\xe2\x51\xb3\xe7\xa4\xd0\xcb\x33\x77\x4a\x49\x70\x49\x90\x5c\x33\xde\x1f\xbb\xc1\xad\x2b\x6c\x64\x52\x95\xfe\x41\x6b\x4d\x12\xb2\x32\xef\xe0\xa3\x3c\xd2\xad\x87\x32\xeb\xa1\xc3\xcb\x0e\xae\xb0\xb2\xa5\x7f\xa0\x3e\xc5\x67\xca\x29\x21\x0b\xf6\xff\x95\x42\xa7\x66\xf4\x96\xfe\x68\x05\x8a\xa9\x83\x80\x6c\xbe\x7a\xb1\x0a\x47\x92\x0b\xac\x82\x48\x81\x8e\x54\xa4\x15\x51\xc9\xa0\x95\x9e\x89\x94\xca\xc6\x0f\xc8\x68\xad\x48\xb5\xa2\x4d\x5f\x24\xa7\xa5\xa3\xfd\x90\xb8\x47\xe8\x17\xad\x3d\xd5\xd0\xd6\xf8\xde\x2d\x20\x4f\x64\x24\x83\xbd\x53\x58\x5a\x92\xef\x92\x54\x15\xa9\xb3\x8f\xbb\xf0\x7f\xc0\xf3\x5e\x70\x75\x69\xcf\x48\x8b\x20\x54\x53\xce\x54\x33\xeb\xa6\xfd\xe8\x78\x1a\xf7\x2b\x52\xbf\xbc\xab\x85\xea\xd3\x85\xd9\xd3\x17\x5e\x21\xad\x33\x73\xad\x53\x5c\xf0\xe3\x57\xed\x6b\x53\x83\xef\x38\x29\xa9\xd5\x09\x5b\x87\xdc\x9a\xad\xbe\x0c\xa7\xab\xad\xf3\x3e\xc3\xb6\xff\xd6\xeb\x94\xaf\xdc\xc1\x2e\x8d\x66\xa6\xfc\x05\xac\xf9\x73\x68\xdb\x0f\x69\x56\x5d\xcd\x8f\xef\x4d\x1e\x49\xd7\xdd\x4a\xc0\x53\xc2\x18\xf5\x24\x0c\x81\x2d\x4e\xbb\xa4\x40\xdc\x54\xca\xcd\xdb\x1c\x39\x32\x9e\x5b\xd0\xc3\xc8\x0d\xc3\x25\x9a\x80\xf0\x59\xf9\x46\x79\xaa\x07\x94\xca\x01\x15\xcc\x62\xaf\x25\xe1\x24\xcb\x8a\x9d\x41\x60\xea\xce\x6d\x22\xc7\xb1\xc4\x45\x44\xf8\x11\x42\xa1\x9e\xbb\x02\xa9\xbd\xa6\x42\x9c\x50\xe7\x83\xdb\x4a\x07\xf0\x21\x9e\x85\x7c\x8d\x3c\x56\x55\xa5\x82\x83\x1c\x8e\xab\xc3\xf1\x9b\x59\xad\x8d\x2c\x71\x4a\xde\xaf\x40\x39\xd5\xcf\x70"}, +{{0x6f,0xed,0xe7,0x39,0x6c,0x46,0x20,0x33,0x18,0x9a,0xcd,0x23,0xd2,0xf9,0xd0,0x2b,0x68,0x89,0x8d,0x35,0xf3,0xa0,0x1a,0x79,0x8f,0xc2,0x4d,0x48,0x8d,0xe9,0x3a,0x78,},{0xb3,0x40,0x62,0x06,0x0b,0x2c,0x20,0x07,0x6a,0x98,0xfe,0xa9,0x39,0xb3,0xb3,0xa5,0x04,0x51,0xa5,0xf4,0x9f,0x83,0x51,0xc0,0xad,0x75,0x91,0xdb,0xbe,0xbb,0x13,0x0f,},{0x88,0xa8,0x3e,0x20,0x12,0xd2,0x09,0xca,0x03,0xb8,0xeb,0xf6,0xde,0x5b,0xb7,0xef,0x4c,0xcb,0x5e,0x3d,0xf5,0xca,0xc7,0x89,0x54,0xaa,0x69,0x49,0x30,0xe4,0xde,0x82,0x54,0x4e,0xf5,0x08,0x3c,0x48,0x92,0xdb,0x9f,0x05,0xd7,0x7b,0xf6,0x3f,0x4f,0xdf,0xce,0x15,0xa4,0xd1,0xc3,0xf8,0x5b,0xae,0x80,0x77,0x06,0x2b,0xec,0x0e,0x7b,0x07,},"\x5a\xbc\xc1\x4b\x9d\x85\x78\xde\x08\x32\x1d\xe0\xd4\x15\xe3\xd4\x0e\x9d\xe3\x1e\x18\x88\x13\x74\x75\xce\x62\xbc\x6f\xbe\xe8\xfd\xd0\x3b\x9d\x47\xc7\xb8\x8b\xbc\xeb\x80\x44\x44\x49\x0b\xf6\xa3\xcc\xb7\xa2\x73\x26\x1e\x24\x00\x4e\xa6\x7c\xef\xa3\xd5\xd1\x73\x57\x6d\x01\xe3\x8f\x76\xc1\xe0\xe5\x15\x08\x3c\x97\xe7\x99\x14\xac\xf2\xbe\x41\x60\xef\x93\x60\xbb\xe9\x86\xb3\x6e\x9f\xf9\x33\x46\xb0\xe7\x06\x91\xd9\x34\xe4\x7f\x8a\x50\x3f\xa9\x33\xab\x2a\x50\x42\x69\x47\xcd\xa8\xe8\x10\xc9\xeb\xe3\xb3\x69\x82\xf0\x9a\xee\x60\x92\x73\x9f\xa2\x35\x8b\x61\x3c\x7f\x12\x9d\xb0\xdc\xbe\x36\x8b\xee\x52\xf2\xf7\xf1\xdf\xe3\xd2\x43\x46\x05\xb5\xaf\xcf\x25\x60\x71\x71\x7d\x92\x4f\xd0\x80\x3b\xbd\x0d\xd1\xf9\x55\x5c\xe8\x34\xda\xc7\x81\xdf\x4c\xc7\xaa\x19\xe7\xf1\x1d\xa9\xfb\x99\xcb\x9e\x6b\x9e\x1e\x6f\xb4\xf7\xe8\xdc\xb2\x23\x6c\x28\xae\xb6\xcb\xc5\x5a\x13\x0e\x03\xc1\xb1\x7a\x99\x1c\xca\x1b\x79\x4e\x6c\x13\x73\x2d\x5b\x0a\x66\xf6\xeb\xa8\x60\xec\xb9\x85\x55\xaa\x4c\x21\x8d\x11\x2b\x11\x6b\xce\x23\x82\x95\xde\x14\x27\x41\xf6\x87\xbe\x0b\x24\x87\xf5\x8f\xfc\x5c\x12\xa0\xa5\x19\xf1\xe2\x37\x93\x24\x2e\xf8\x57\xed\x39\x8a\x20\x69\x9d\x43\x51\x45\x3f\xc2\xf0\x92\x76\x2a\xbd\xe3\x4f\x4d\xa2\xdb\xe0\xce\x2a\xab\xaf\x6b\xc4\xc0\x15\x9f\x3f\xe1\xae\xa1\x6a\x03\x6f\x7e\xae\xcd\x62\x95\x38\xf3\xe0\xee\xd8\x3c\x9a\x4d\xc1\xab\xc2\x38\xf9\x0d\xaa\xf4\x89\xfd\x61\xb3\x4d\x93\x7b\x6f\x46\x07\xa7\x88\xba\xa8\x20\x61\x94\x3d\xba\xb2\x6c\x1d\x38\x4d\x8d\x49\xf9\x93\x48\x80\x0b\xf3\x61\xf8\x71\xf5\xd6\xcd\xa1\x8f\x68\x99\x18\xce\xc3\x1a\xd1\x58\xf1\x86\x3d\x13\xff\xac\x54\x05\xc1\x62\xc3\x2d\xe0\x6e\x32\x99\x4c\xc4\x10\x6f\x95\xbb\x4f\xff\xdb\xef\xe7\xd6\x29\xec\x77\x97\x39\x46\x09\xfd\xbf\xea\xdb\x46\x92\x73\x70\xa1\x1f\xb3\x84\x71\x54\x0f\x95\x1b\x93\xc6\xeb\x23\x86\x68\xdc\x00\x6c\x21\x66\x0b\xa2"}, +{{0xd5,0x59,0x58,0x01,0x34,0xab,0x05,0x0a,0xca,0x44,0x6e,0xa7,0x75,0x0e,0xf6,0xb3,0x71,0xd9,0x2d,0x76,0x45,0xec,0x76,0x35,0xfe,0x78,0x51,0x10,0x0b,0xc4,0xe5,0x1e,},{0xde,0x50,0x20,0xcd,0x21,0xa8,0xb3,0x23,0x39,0xde,0xcb,0xed,0xff,0x24,0x66,0x4d,0x95,0x80,0x32,0x63,0x27,0xae,0xdf,0x09,0xc5,0xec,0x6b,0x3f,0xe5,0x40,0x52,0x26,},{0x6f,0xcb,0x1a,0xc9,0x29,0x0a,0xb7,0x67,0xd5,0x9b,0x59,0x8c,0x9a,0x24,0xec,0xdb,0x6c,0x05,0xbb,0x02,0x3e,0xc3,0x60,0x14,0xa4,0x0d,0x90,0x8e,0xf0,0xdc,0x37,0x8a,0x45,0x28,0xb3,0x76,0x0d,0x88,0x9a,0x79,0x17,0x4e,0x21,0xca,0xe3,0x5d,0xf4,0x5d,0x42,0x7b,0xa6,0xea,0x81,0x2b,0xdd,0xca,0x16,0xe3,0x5a,0x69,0xb5,0xe7,0x9f,0x0a,},"\x68\x42\xe3\x19\x0a\x11\x0e\xee\x96\xc5\x07\xd4\xbc\xb4\xc5\x48\xc3\xa0\xed\x7b\x1a\x8e\xd7\x7d\xd9\x3b\x38\x61\x3b\x23\xc7\x3e\x83\x0b\x20\x5e\x62\x65\x19\x21\xad\x82\x96\xb0\x8d\x1e\x10\x08\xad\x78\xf2\x99\x6e\x3c\x7f\x38\x03\x2e\x46\x7c\xff\xec\xd7\x7b\x85\x25\xe2\x43\xce\xc0\x21\xf8\x52\x96\xaf\xd5\x45\xd7\xbe\x1a\x62\x56\x8b\xb0\xcf\xcd\xb9\x0d\x61\x4e\xd7\x98\xbf\xb7\xef\xc6\x55\x32\x68\x16\xa6\x10\x82\x25\x1d\xf0\x16\x13\xaa\xc8\x8e\xfc\xea\x1e\x0e\xa2\x96\x1b\x8f\x92\x1e\xbe\x15\x58\xde\xe8\x33\x74\xa0\x11\x3a\x78\xc5\x58\x57\xce\x20\x55\xbb\x2c\x48\xba\xdb\xd3\xd8\xf4\xcb\x19\x73\x4d\x00\xd0\x60\x4b\x61\x90\x73\x02\x0d\x72\xa9\x9a\x19\x23\xe6\x16\x0a\x09\x94\x65\x67\xfd\x4b\xda\x66\x44\x2e\xf5\xa7\x36\x07\x86\xd1\x78\xda\xe4\x49\x22\xf3\x50\xce\x2e\xdc\x6a\xf7\x3d\x1b\xd8\x0d\xc0\x3e\xc3\xca\x70\x05\xf4\x10\x9d\x10\xc6\xd4\xf7\xd8\xfa\x61\x73\x51\x10\xf8\xdb\xae\xdf\x91\xa0\xba\xd7\xd7\xfb\x5c\x04\xd7\x06\x37\x3c\x15\xc6\x45\x06\x3f\xf4\xb4\xfb\xd2\xd5\x59\xb0\xaf\xad\x43\x2d\x4c\x49\x6c\xd8\xab\xfe\xa2\x86\xfa\x67\x5d\xc0\x76\x72\x6e\xc5\x22\xb3\xa3\xc2\xf4\x7a\xec\xc5\x39\xf4\x8a\x79\x21\x69\xc4\xcc\x8c\xd4\x1c\xd2\xcb\x6b\x63\xdd\xbc\x19\x37\x3a\xc9\x69\x1c\x2b\xc2\xf7\x8f\x22\x60\x3d\x55\x13\x71\x5a\x16\xd4\x57\x4e\x7a\xcc\x4b\xea\x6d\xcd\x8c\xa7\xf1\x98\x65\xa4\x9d\x36\x64\xa2\x10\xdf\xad\x29\x07\x74\xb1\x0b\x71\x88\xf2\x55\xb3\xbe\x4d\xc8\xfa\x86\xf8\xda\x3f\x73\xa4\xe7\xc9\x29\x95\x1d\xf3\x0f\xe6\x6a\x17\xc8\xce\xe2\x3e\x4f\x2e\xd2\x06\x3f\x0b\x02\xab\x40\x37\x2c\xbe\x54\xb9\xa7\x08\xdf\x7c\x48\xa0\x65\x66\xd3\x9b\x19\x43\x4c\x6c\x76\x69\x87\xb3\xeb\xb0\x06\x75\xf4\x4c\x4b\x3c\x1e\x9f\x45\x04\xe7\xa9\x27\x05\x89\xc0\xd0\xf4\xcb\x73\x42\x35\xa5\x8e\xf0\x74\xcf\x9d\xec\xf3\x60\x1a\xee\xca\x9f\x1d\x8e\x35\x6c\xb2\xdb\x5f\xce\x79\xcb\xc3\x61\x43\xf3\x4b"}, +{{0x9d,0x4c,0xe9,0x75,0x54,0x78,0x76,0x63,0x6f,0xea,0x25,0x43,0x7c,0x28,0x80,0xc9,0xaa,0x8e,0xe6,0xb2,0x70,0xd1,0xb2,0xda,0x19,0x7c,0x8d,0x7f,0x95,0xe7,0xdc,0xcc,},{0xbd,0xe4,0x99,0x3c,0x03,0x04,0x77,0xc3,0x58,0x90,0xaa,0xe8,0x2b,0xb5,0x08,0x7e,0x91,0x4e,0x64,0xb9,0x4f,0xfc,0x64,0xe2,0xd7,0xa5,0xa7,0xc9,0x19,0xe2,0xd9,0x02,},{0xbe,0x17,0x44,0x4c,0xd4,0x65,0xa8,0x7a,0x97,0x1d,0xf8,0x4e,0xb1,0x02,0xf9,0xc7,0xa6,0x26,0xa7,0xc4,0xff,0x7a,0xea,0x51,0xd3,0x2c,0x81,0x35,0x3d,0x5d,0xbc,0x07,0x39,0x3c,0xa0,0x3d,0xb8,0x97,0xd1,0xff,0x09,0x94,0x5c,0x4d,0x91,0xd9,0x8c,0x9d,0x91,0xac,0xbd,0xc7,0xcc,0x7f,0x34,0x14,0x4d,0x4d,0x69,0xeb,0x04,0xd8,0x1f,0x0c,},"\xea\x0f\xa3\x2a\x4a\x28\x88\x11\x30\x1b\x9e\xe5\x33\xfa\x35\x1f\xdf\xbf\x6b\xc1\xd0\x55\x5a\x74\x02\x76\x7a\x3a\x91\x98\x55\x8f\x74\xbb\xa7\x03\x18\x57\x99\x5b\x9f\x32\x62\x26\xf1\xdd\x5d\xf1\x07\xb0\x63\x42\x20\x3e\xb8\xd4\x0c\x5f\x1d\xc9\x5b\x4f\x3f\x88\x97\x5a\xa2\x4a\xf8\x76\x9e\x26\x70\xc4\x66\x71\xbe\xbb\x7a\x0f\x1b\x75\x68\x72\x9a\xee\x47\x7e\x89\x88\xaf\x9c\x74\x9f\x32\x02\x70\x81\x71\xfd\x94\xb3\x37\xae\x67\xed\x21\xa6\xc4\x41\x74\x01\x4b\x0b\x0e\xb5\xba\x71\xc2\x77\x97\x8d\x48\x8c\x24\xc4\xa7\x84\x13\x09\x84\x6b\x4e\x30\xa4\xfb\xbc\xfc\x45\x07\x8d\x7e\x14\x01\x41\x14\xb1\xac\x64\xf7\xc3\x3c\x9a\xc2\x5e\xa5\x62\x6c\x2c\x81\x9f\xba\xa2\xa4\xde\x8a\x2b\xf5\xf1\x36\x5d\x6b\x70\x40\x7e\x80\x94\xf9\x91\x97\xce\x1f\x0c\x35\xe1\x1a\x98\xfb\xe3\x72\x41\x4e\xa2\x06\x4a\x3a\x12\xd1\xcd\x5c\x8d\xf8\xfc\x0e\x79\xf5\xb7\x70\xb5\x8f\x47\x7f\x91\x97\x6c\xa0\x13\x98\x95\x12\x0e\x24\x6b\xaa\xb5\xa0\x26\xf2\xd3\x9c\x68\x7d\xc0\x78\x83\x34\xb5\xc6\x26\xd5\x2c\xde\xbe\x05\xea\xf3\x08\x64\xb4\x13\xee\xbd\xc5\x58\x1e\xf0\x0d\x43\x92\x76\xe5\x2f\x47\x9c\x9c\x05\xb1\x16\x39\x58\x26\xb6\x04\x90\xb3\xce\x70\x0c\xc0\x02\x7f\x61\xe4\x6c\xa2\xf6\xfb\xc2\xc9\xde\x2e\x80\x08\x06\x55\x0a\xfb\x06\xd4\xa0\x8e\xac\x7a\x75\x8e\x24\x58\x2a\x4d\x6d\x42\x8b\x43\x3d\x36\x5f\xc3\x1d\x44\x44\x60\x7a\xfb\x64\xf1\x5e\x37\x07\x94\x00\x5a\x3a\x22\x44\xe6\x66\xd5\xd4\xc3\x8a\xd2\x00\x9c\x76\x9a\x51\xcd\xbf\x73\x8d\x23\x59\x42\xf4\x12\xd0\x7f\xee\xb7\x3b\x36\x57\xd0\xb0\xc9\x1c\xb5\x94\x0b\xad\x6a\x70\x6e\x14\xed\xcd\xc3\x42\x25\xb1\xc1\xf3\x8b\x1a\xbe\xcb\x2a\xdc\xaf\x81\x91\x55\xa9\x4f\xe1\x90\xfd\x55\x68\x22\xd5\x59\xd9\xc4\x70\x85\x4d\x3a\x43\xbf\xb8\x68\xda\xdd\x6e\x44\x3d\x98\xee\x87\xe4\xd8\x28\x4f\x5c\xf3\xa6\xda\xfa\xf2\x95\xb9\x02\x83\x6c\x64\x05\x11\xe6\x10\xae\x7d\x0c\xb1\xb1\xd3\xd6\x07\x9f\xe6"}, +{{0x02,0x73,0x86,0x82,0x32,0xf5,0xbe,0x48,0x59,0x2c,0xfa,0x05,0x13,0x4e,0x8d,0x55,0x54,0xed,0x1f,0x9a,0x57,0xbc,0x7e,0x39,0x82,0xa3,0x30,0xc5,0x7e,0x5a,0x7f,0x3a,},{0xf1,0x72,0x20,0x87,0x82,0xdb,0x66,0xd4,0x66,0xcb,0xe4,0xf4,0x41,0x7f,0x6f,0xc4,0x77,0xb7,0x34,0x9f,0x2a,0x98,0xdb,0x56,0xc0,0x3a,0x47,0x22,0x75,0x46,0xbc,0x5a,},{0x15,0xe8,0xd8,0xdc,0x7d,0x5d,0x25,0x35,0x9d,0x6a,0x10,0xd0,0x4e,0xe4,0x19,0x18,0xa9,0xc9,0xdf,0x4c,0x87,0xbe,0x26,0x9f,0xa8,0x32,0x43,0x4d,0x53,0x01,0xdb,0x02,0x24,0x81,0xbf,0xa3,0x95,0xa3,0xe3,0x46,0x6f,0x95,0x54,0xce,0xee,0x05,0x32,0xa8,0x18,0x3a,0x0d,0x05,0x50,0xe7,0xd1,0xab,0xe9,0x9f,0xc6,0x94,0xc6,0xff,0x93,0x01,},"\xf7\xa1\xd4\x61\x4c\xc6\x4a\x3b\xc4\x8f\x00\xc6\x27\x63\x04\xf3\x4d\x4d\xfd\x15\xe0\x61\x7b\x93\xcc\xef\x12\x6c\x5c\x63\x8c\x9d\x99\x53\xaa\xbb\x7d\xf4\x2d\xf4\xe0\xaa\xa7\xea\xc9\x6a\x4b\x38\xc7\xba\x75\x8d\x86\x0c\x90\xd0\x5e\x3d\x14\xe4\x79\xe5\x45\xf3\x19\xb0\xe5\xa8\x5a\xd8\xf0\x99\x1b\x43\xd6\xe4\x9c\x24\xfa\x06\x0e\x3e\x5d\xf9\x5c\x98\xd9\x45\x1a\xb8\x33\xe1\x2a\xa9\x7f\x40\x46\x11\xbb\xa3\x59\x49\x62\x65\xa6\xdb\x11\x91\x7d\x0d\xa5\xc6\xa7\x02\xd0\xb1\x02\xde\x36\xdd\x0c\x98\xdf\x5b\x54\x80\x6c\xe6\x26\xbb\x96\x37\x44\x75\xf6\x8a\x60\x60\xeb\x35\x0a\x7d\x2a\xae\x32\x04\xb3\xdf\xdf\x9f\x1e\x31\xbe\x81\xf7\x17\x0f\x8a\x1b\x93\x85\x41\x3f\xf8\xf6\x88\x1e\x10\xc1\xe8\xda\x4c\x88\xaf\xb5\x06\x39\xab\x44\x88\x7a\xca\x2a\xbe\xec\xed\xf1\x10\xd2\x95\x8c\x13\xfd\x33\x90\xd1\xb9\x6a\x76\x2d\x16\xce\x19\x69\x20\xce\x85\xf6\xc4\x15\xbe\xd5\x45\xb1\x44\x53\x02\xa6\xf0\x01\xeb\x8d\x00\xe9\x7c\x75\x18\x87\x86\x8d\x48\x1a\x0b\x1e\x4d\xfa\x04\xb6\xf7\x61\x08\x6e\xe8\xe6\x97\xb0\x19\xe0\x17\x10\x4b\xaf\xb9\x8f\xca\x24\x2e\x33\x4c\x6f\x18\xf1\xdb\x5b\x6f\x29\x5f\x05\xc5\x59\x36\x1c\x68\x31\xda\xbc\x42\xc2\x11\x07\x03\xf9\xd1\xf6\x4e\x12\xdd\xf2\x6a\x86\x79\x85\x4e\x9f\x8e\xf8\x47\x9e\x1f\x12\xc3\x54\x47\xaa\xc0\x2e\xa7\xf2\x42\xe5\x86\x32\xcf\x2f\xd0\x63\xfe\x66\x50\x70\x44\x5b\x80\xf3\xdc\x6a\x33\x03\xbb\xa9\x6e\x05\xfa\x88\xee\xc2\x01\xc5\xc2\xd0\x0c\xa8\x1b\x8d\xa6\x96\x9d\x0a\x4d\xd0\x48\x3b\x34\x77\xd3\x25\xa7\x1f\xac\xd6\xfa\x22\x09\xb4\x8c\xb4\xf6\x52\x5d\xa7\x3c\x9c\x05\xb2\xd9\x78\x9b\x01\x44\x8e\x15\x27\xe5\x6a\x09\xa9\xbc\x61\x36\xd9\x83\x72\x43\xc2\x07\x7b\x92\x5b\xbb\x93\x3f\x8f\xb1\xda\xac\x96\x33\x98\xc5\x80\x2a\xed\xa3\xbb\xca\x8a\xe3\xb8\xf4\xa9\xa8\x71\xf7\xea\x8e\x2c\x0c\xe8\x98\xc5\x66\x21\x7b\x5c\x06\xff\x55\xff\x9f\x4f\xe7\x83\x98\xae\x79\x73\x64\x1e\xaf\xb5\x21"}, +{{0x33,0x6a,0x83,0xb5,0x5a,0xbf,0x4c,0x02,0xe2,0x5e,0x54,0x03,0x29,0xb5,0x27,0x58,0x43,0xc2,0xec,0xb8,0xdf,0x69,0x39,0x5b,0x5a,0x5e,0x24,0x1b,0xd0,0xd8,0xc1,0x0d,},{0xdd,0x60,0x56,0x98,0x44,0x57,0x0c,0x9f,0x0a,0x82,0x64,0x3f,0x44,0x64,0x78,0xb5,0xac,0x6f,0xc5,0x42,0x21,0x42,0x31,0xa7,0xca,0x65,0x6a,0x92,0xb5,0xfd,0xaa,0x54,},{0xd2,0x63,0xf5,0x6d,0x59,0xcb,0x9b,0x28,0x96,0xa9,0x47,0x26,0x7c,0x2e,0xd7,0x8a,0x94,0x5b,0xac,0x5a,0xbd,0xbf,0x3c,0x14,0xdc,0x3a,0xd0,0x92,0xb2,0x30,0x8c,0xb9,0x31,0x5c,0x46,0x49,0x42,0xa0,0xa2,0x0b,0x20,0x24,0x51,0x1d,0x76,0x6e,0x85,0xc9,0x36,0x49,0x9a,0x14,0x9c,0xd0,0xbb,0xb2,0x09,0x15,0x0a,0x16,0x43,0x26,0x52,0x00,},"\x9a\xfe\xe8\xab\x48\x20\x10\xe2\x92\x64\xb4\x06\xd9\xb4\x94\x53\xd1\xce\x6d\x55\x09\x39\x07\x21\x82\x86\x3e\x46\x65\x28\x4a\xb0\x5d\x86\x25\x8e\x06\x23\xb1\x87\x54\xc4\x78\x52\x38\xf6\x97\xf0\x75\xad\xfb\x9e\x1d\x31\xa4\x2e\x85\x93\x4e\xc0\x71\xdd\xdd\xec\xc2\xe6\xc2\xf6\x13\x34\xa7\x95\x26\x78\x8b\x49\x52\x19\x07\x16\x90\x6d\xde\x17\xfb\xa5\x56\xee\xa4\xc8\xb5\x97\x27\x51\x4f\x6f\x56\x15\xa1\x9c\xa3\x6d\xa3\x58\xfa\xe6\xa6\xc5\x4f\x7f\x4b\x7a\x92\x9e\x31\xba\x7c\xc7\x1b\xde\x78\x82\xfa\x9f\xfd\x87\x30\x01\x36\x40\x9c\xaf\x3c\xa6\x4e\xef\xea\x61\x6a\xed\x58\xda\x5d\xfb\xf2\x8b\x66\x8e\xc1\xcc\xcf\xfc\xef\x6e\x2e\x14\xf8\x10\x9e\x9c\xbf\x76\xcf\xa4\x14\xf9\x1a\xc0\x0f\x48\xe9\x3e\xad\xa3\x85\xdd\x3d\x5c\x16\xe1\xa3\x9e\xa3\xdd\x55\xc7\x61\xfc\xa3\x61\xb4\x28\xf5\x16\xc0\x5e\x69\x4f\xe5\xc3\xc3\x45\xcd\x94\x45\x71\x87\xa8\xe6\x04\xb2\x00\xa1\xa0\xf9\x37\xae\x89\xf4\xd6\xb5\x42\x1d\xff\xcf\x7c\xa1\x5f\x2e\x2c\x25\x37\x8a\x41\x13\x23\x3f\x76\x13\xf4\x57\x0a\xa4\xb9\x09\xa9\x13\x5e\xae\x4c\x7b\x9e\xad\x45\x80\x07\xae\x17\x12\x6a\x11\xd1\x45\x25\x8a\xf9\x56\x3d\xb2\xf7\xe8\x92\x54\x31\x87\x8b\x0e\xec\xa8\xaf\xfc\x01\xac\x59\x13\xbf\x5b\xac\x4f\xa3\xa8\x57\xc5\x4c\xc8\x90\x6d\x6a\xf7\x7d\xe6\xb9\x32\x6b\x65\x06\x15\x10\x99\xe8\x7e\x99\xb1\xe8\x19\xc6\xfb\xe0\x82\x68\x8f\x34\xb8\x03\xd5\x88\xe4\x16\xd8\x53\x16\x97\x65\xd6\x2f\x7e\x0b\xdf\x72\xc5\xcd\x66\x66\x9a\x03\x35\x56\x23\x36\x73\x5e\x7e\xfb\x73\x4a\x2f\xad\xa3\x27\xf8\x58\xbe\xc6\x02\xd0\xda\x08\xeb\xa4\x47\x9e\x7f\x6d\xc4\xde\xf6\xe4\xeb\xdb\xb7\x30\xee\x91\xa3\x34\x45\xca\xdc\x9d\xf5\x2c\x82\x5a\xd3\x61\x49\xce\xfb\xc5\x1a\xb1\x02\x03\x35\x30\x81\x4b\xaf\xa7\xe8\x79\x61\xb0\x63\x67\xff\x89\x6f\x08\xae\x33\x4a\x9b\x1a\xad\x70\x3d\xa6\x86\x70\x6c\x11\xa0\x49\x43\xea\x75\xe1\x29\x92\xdc\xf6\x10\x6e\x37\x20\x77\xcd\x03\x11\x02\x9f"}, +{{0x88,0x40,0x91,0x72,0x61,0x8b,0x49,0x03,0x93,0xdb,0x27,0xd9,0x60,0x17,0x1c,0xbc,0x18,0x7e,0xaf,0x4d,0xd8,0xb3,0x20,0xb3,0xd2,0xf8,0x24,0x98,0x00,0x43,0x71,0x8f,},{0xce,0x2e,0x7c,0x58,0x39,0xef,0x56,0x32,0xa1,0x23,0xdc,0x37,0x3d,0xc1,0x4b,0x1f,0x05,0x05,0x76,0x6e,0x96,0x75,0x40,0x76,0x04,0xca,0x7c,0xf5,0x4e,0x8d,0x44,0xb2,},{0x93,0xb6,0xe2,0x9d,0x63,0x94,0x5d,0x5c,0x42,0x73,0x87,0xd0,0x06,0xc7,0xf0,0xb0,0x19,0x56,0xa9,0x5f,0xc0,0x43,0x6e,0xd4,0x2b,0x46,0xd0,0xf1,0x7b,0x5b,0xb1,0x93,0xea,0x8c,0x0e,0xbb,0xf3,0xd6,0xd1,0x3b,0xb5,0x39,0xe3,0x5c,0x91,0xf3,0xf0,0xf9,0xfa,0x34,0x14,0xa0,0x22,0x3c,0x90,0x60,0xba,0xc8,0x36,0x53,0xc6,0xfc,0xd9,0x06,},"\xfb\x3e\x82\xf1\x1b\xc2\x86\x26\x7e\x12\x38\x17\xad\x88\x64\xe0\x77\xd9\xf7\xa8\xe7\xa1\x63\xac\x7e\xea\xf9\x3d\x55\xdd\x11\x1d\xe8\x08\x3b\x66\xb5\x3c\xe7\xbc\x77\x1f\xc5\x07\x1a\x2d\x7a\xc2\xf8\x5d\x6f\xc6\xad\xcf\xce\xc4\x46\xe1\x6a\xa1\x04\x6d\xf3\x72\x09\xad\x7a\x29\xcf\x96\x65\xb4\x39\xa5\x4d\x6f\x8d\x94\x2f\x89\xbd\xaa\x56\xf2\xf1\x12\x60\xcc\x95\x99\x30\x38\xb0\xe8\xfb\xdb\x32\x14\xf1\x42\xe6\xc9\x0b\x61\xa1\xd2\xb1\x42\x07\x62\x06\xaf\x30\xac\x35\x78\x4a\x6d\xc1\x5a\x1e\x79\x25\x1a\x8c\x77\x31\xa1\xc5\x39\x78\x03\x8f\x8d\x76\xd7\x0c\x6c\x1c\xdf\x52\x9f\xbd\xb8\x4d\x15\x07\xdc\xff\xdd\x42\x87\x3d\xfa\x6a\x8f\xe6\xbd\x6f\x7f\xd2\x9c\x80\xe4\xb2\xf9\x33\xd2\xb6\xc9\xe6\x2c\x94\x57\xe6\x65\x47\x26\x55\x05\x9b\x63\xb6\x18\xe2\xa9\xa8\xe5\xb9\xe4\x1c\x36\x46\x17\x3a\x89\x2b\x8e\x6d\x4b\xca\xd6\xa6\x2a\x6f\xcc\xd3\x45\x58\x90\xb5\x8e\xc2\x68\x1a\x95\xcc\x97\x76\xa9\xfc\xe8\x3c\x54\xa9\xef\x31\x2a\x33\x19\x59\xc7\xef\x3f\x79\xee\x57\x6e\xb7\xb7\x94\x69\xc9\x23\x4b\x1e\xae\xf6\x09\x88\x47\x08\xfe\x4b\xb0\xef\xac\x66\x2d\xa8\x71\xba\x61\xdd\xab\xb3\xfc\xbd\xeb\x8f\x63\x56\x57\xdd\x9a\x5d\x73\x11\xe6\x39\xa8\x24\x85\x8b\x9a\x98\x68\xd3\xf9\x38\x4d\xa6\x12\xc7\xf2\xe7\x71\xa4\x6b\xd2\x62\x4c\x99\xea\x2b\x6c\xcb\xca\x99\x6c\x1d\x9c\x37\x55\x54\xf2\xa5\x51\x61\x9c\xe6\xd5\xe6\xe4\xd6\xb8\x44\xa4\xdb\xea\x83\xba\x73\x23\x31\xfc\xf4\x65\x72\xc1\xfb\x0e\x25\x7c\xe1\x04\x1b\x26\x5d\xf0\x2e\x69\x0a\x92\x81\x4b\xbf\x3b\x5e\xca\xc6\x9e\xe9\x98\x76\x6a\x02\xb0\xd2\xf9\x08\xb3\xc1\x5f\x95\x26\x99\x61\x6f\x2c\x07\xd5\x89\x19\x89\x89\xe6\x05\x6c\x16\x31\x9a\xab\x6c\xf8\x77\x19\x02\xc0\x78\x04\x6a\x88\xb2\x57\x0c\x13\xbc\x5e\xde\xba\x2e\xd1\xe3\xba\x13\x1d\xaf\x94\xe6\x89\x18\x62\xbb\x3d\xe7\xd1\x06\x3f\xe4\x05\x30\x7a\x5c\xd9\x75\x69\x3e\x9d\x58\xe1\x7c\x69\x0e\xee\xf4\xa2\x60\x3c\xaf\xc6\x8c\x2b"}, +{{0xe5,0x71,0x18,0x9b,0x5c,0xd9,0xe7,0x88,0x30,0x2d,0xe3,0x91,0x9d,0x85,0x0c,0x22,0x7d,0xcb,0xb6,0x15,0x02,0x2e,0x56,0x8b,0xda,0xeb,0x37,0xac,0x5b,0x29,0x39,0xc5,},{0xed,0xda,0x89,0x0f,0x42,0xdd,0x5f,0xbc,0x73,0x16,0xa5,0xfa,0xdf,0xbe,0xc3,0x85,0x56,0xf2,0x3f,0x51,0xb8,0xef,0xd2,0x62,0x54,0x37,0xf6,0xb5,0x06,0x9f,0x1e,0xe5,},{0x7f,0x79,0x7a,0x31,0x71,0x5d,0x7c,0x35,0x6f,0x8f,0x1f,0x78,0x37,0x00,0xaa,0x99,0x74,0xbb,0x93,0x6d,0x66,0x16,0x61,0xad,0x96,0x8c,0x7c,0xde,0x1a,0xc9,0xe7,0x67,0xbe,0x56,0xa2,0xdd,0x49,0xb9,0x23,0x0e,0x90,0x11,0x0c,0x67,0xc0,0xed,0x18,0x7c,0xb7,0xe7,0x5c,0x30,0x53,0xec,0xe8,0x44,0x98,0x4d,0x29,0x6f,0x0d,0x85,0xcb,0x07,},"\xb6\x2c\x86\x7a\xd6\x22\x74\x35\xbf\xa6\xda\xb8\x30\x68\x4e\x38\xd1\x96\xe1\xf8\x61\xaa\xde\x0f\xd6\xa7\x69\x9b\x6d\x60\x90\x1f\xef\xb2\xd7\x99\xc3\x5c\x6f\x3d\x8b\xb9\x4d\xee\xe8\x34\x40\x39\x81\x86\x6b\xab\x84\x94\x6a\xe9\x47\x6c\x75\xe9\xf1\xd3\x60\x2b\x42\xcb\x2d\xb4\x37\xbf\xf3\x3a\x77\x58\x22\xf0\xd6\xa2\x57\xd4\xb7\x54\x00\xeb\xa5\xb8\xab\xb3\x14\xb7\x1f\xc6\xb4\x6f\x8a\x34\xe8\x61\xa9\xa6\x2a\xbf\x33\xde\x84\x82\xf6\x3f\x9d\x71\x69\xe7\x73\xa2\xdc\xeb\xee\x03\x70\x5d\xac\x11\x7f\xd1\x49\x9b\x68\xe7\x41\x4f\x51\xff\x94\x37\xf2\x53\xa1\xd9\x90\x1e\xc3\xb0\xbb\xa8\x69\x65\xa1\x93\x83\x65\x54\x87\xb5\x80\x10\xf8\x04\x90\x9d\xe1\xff\xb2\x21\x2c\x02\x52\xdd\xd9\xbf\x2a\x56\xac\x46\xbd\x59\xc0\xc3\x4d\xd5\x9e\x46\x59\x8b\x6b\xab\xd4\xe5\xf3\xff\xfd\xe5\x5e\x48\xda\xb0\x39\x8c\x22\xaf\x9e\x26\xba\xdd\xf7\x72\x75\xe5\xf0\x17\xb3\x5a\x9b\x8f\x84\x35\xf9\x63\x19\x36\xb3\x91\xcb\x95\xd7\xad\xf3\x5d\x1d\x85\x45\xa0\xfd\x06\x64\x12\xd5\x08\x96\x7b\xbe\x9a\x20\x24\x5a\x26\x9e\x3b\xe2\x77\x71\x17\xe7\x5f\xba\xc1\x70\xdb\xa3\x52\xbe\x69\xb2\x54\xd3\x53\xb3\xb2\xcb\x3b\x7e\x21\xb7\x21\xaa\x9f\xe0\x44\xf8\x91\x6b\x4b\x2a\x6f\x8c\x28\xf8\xab\xe6\x6a\xc9\x2b\x91\x32\x3a\xc7\x3a\xfd\x93\xdf\xbe\xea\xee\xf2\x6d\x19\xbd\x9f\x67\xe9\x9d\x48\xcd\x2a\xd2\xd3\xe5\x5e\x45\xd2\x4d\x54\xb5\x0f\x44\xa3\x9b\x90\xe2\x42\xeb\xe9\xb4\x2b\xeb\xdb\x23\x0c\x47\x0b\xdf\xde\x1b\xc7\x72\x1c\x31\x20\x00\x84\x77\x39\x3d\xcc\x2e\x15\xfd\x22\xb2\x51\xfe\xb0\xe1\x8b\x02\x88\x3c\x07\x8a\xee\x4f\xb7\x60\x65\x5a\x67\x1d\xc7\xb8\xaa\xdb\x9a\x56\x24\x20\xa3\xc2\xef\xa2\xd3\x42\xe1\xe0\x09\x9d\x95\x1b\x42\x24\x29\x84\xf5\x94\xe6\x91\x4f\xe2\x82\xb1\xee\x12\x87\x35\x98\x4e\xf9\x3a\x66\x9e\x6e\xcb\xa2\x6c\x9f\xcb\x9f\x09\xf0\x92\x56\x64\x56\x17\xf1\x39\x2d\x35\x90\x89\x17\xcb\x8d\x29\xe0\x89\x7c\x75\x03\xcd\xdd\x5d\xe1\x95\x96\x86"}, +{{0x37,0x17,0x44,0xab,0x63,0xc1,0x15,0x61,0x39,0x29,0xa3,0x43,0x70,0x9b,0xb0,0x19,0xb7,0x35,0x7d,0xff,0x72,0xd2,0xa1,0x49,0xf1,0xd0,0xf7,0x1d,0x3a,0x20,0x1e,0xfe,},{0xe5,0x8a,0xbf,0xad,0x4a,0x13,0x85,0x9f,0x0a,0xcb,0x05,0xd0,0xe4,0x7d,0x59,0x63,0x8f,0x7b,0x1b,0x49,0x36,0x10,0x0b,0x98,0x8d,0x61,0xe6,0xe7,0x0e,0x22,0x66,0x7d,},{0x5e,0xae,0x4a,0xc7,0x2a,0xf0,0x17,0x4a,0xb2,0x56,0x52,0x7b,0x7c,0xd3,0x37,0xa0,0xe5,0x48,0x2e,0x61,0x5a,0xf0,0x68,0xdb,0x21,0xda,0xe3,0x5a,0x64,0x64,0x07,0x42,0x60,0x4d,0xf7,0x3f,0xd4,0xca,0x02,0xed,0x95,0x15,0xa5,0x60,0x8d,0x73,0x19,0x52,0x30,0xfa,0xdc,0xa7,0xb4,0x26,0xf0,0x2a,0x2f,0xbf,0xd0,0x20,0x61,0xaf,0x36,0x00,},"\xc2\x19\xde\x1e\x8d\x7a\xd8\xdf\x08\xc4\x93\x77\x39\x6f\xe7\xc1\xf2\xd5\x7b\xd2\x17\x06\x33\xa0\x0d\x70\x8f\xaa\xde\xe1\x80\xce\xba\x92\x84\x9a\x77\x78\x50\x6c\xbb\x36\x68\x75\xbf\x91\x24\x70\x18\x94\xce\xcd\xb3\x38\x51\x47\xd0\x67\x18\x43\x92\x2a\x64\x9a\xff\x7c\x43\x5e\xb5\xa9\xc7\x49\x27\x50\x30\x72\xd0\x06\x79\x78\x71\x6d\xc8\x0b\xe1\x54\x5a\x2d\xbf\x5a\x1c\x38\x53\x6e\x12\xbd\x77\x20\xc1\x96\x5d\x38\x03\xa4\xe8\xaa\x55\x76\x51\x92\xa1\x3b\x70\x5c\xa1\x05\x9d\xed\x0e\x80\x63\x62\xfc\x5b\xbe\x6c\x76\xa1\xc9\x67\x4b\xb8\x53\x79\x0f\x7e\x90\xaf\x00\x75\x3e\x00\x43\x6d\xa4\x8c\xd0\x82\xea\xd6\x4f\xdd\xb6\x89\x89\x01\x62\x08\x2f\x84\x82\x92\x4f\x33\xac\xd6\x04\x64\x0f\x69\x92\x73\x52\xb4\x3f\x64\x40\x2d\x27\xa8\x83\xfa\x6b\x72\xaa\x70\xd2\x41\xdf\xfa\xa1\x70\x1a\x25\xcf\x10\x79\x35\x82\x60\x79\x38\x75\xf7\x6a\x29\x78\xe9\xf9\xf9\xd6\x86\x34\xeb\x3f\x5f\x01\xbd\xe1\xce\x49\xe5\x92\x12\x52\xf9\x49\xf0\x82\x79\x5e\x4e\xaf\xed\x7b\xe5\xb4\x9a\x9f\x95\xed\xbb\x4a\x13\x53\x2e\x3f\x3b\x3b\xe6\x2e\x26\x52\x23\x12\x53\xa2\x0c\x1d\x54\x77\xe8\xf4\xbc\x57\xed\x76\xfa\x19\xea\xf0\x3a\x11\xbb\xa4\x29\xb6\x49\x6c\xe7\x62\x46\x17\x0e\x04\x3b\xc1\x4f\x2d\x2f\x70\x3d\x96\x8f\x1d\xeb\x09\x38\x87\x15\xc3\x7c\xb4\x75\x2d\xa8\xd4\x64\xe3\x48\xe0\x31\x3c\x89\x93\xe2\x41\x33\xa7\xc5\x45\x28\x4e\x3c\x9c\x90\x7d\x01\xb2\x60\xc4\x88\x3f\x9c\xb3\xe3\xdc\x5b\x6f\x7f\xb6\xd7\x55\x36\x36\x5f\x21\x32\xea\xed\xda\xb5\x70\xe7\x27\x3a\xfa\xc0\xbf\xf5\xc9\xfc\x0b\x82\x0f\x20\x78\xe0\x33\x60\x52\xe1\xfe\x7b\xde\xc8\x66\x74\xd0\x99\x8e\xc7\x8d\xa1\xc3\xf3\x47\x51\xf8\x86\x72\x76\x95\xf3\x5e\xca\x13\x04\xb1\x47\x34\x76\x6a\xb0\x5c\x11\x86\x30\x6d\xed\x9d\xb3\xee\xf6\x5d\x3c\x04\x56\xcd\xae\x81\x81\xaf\xee\x04\xb2\x96\xc6\x72\x2a\x88\xc7\xef\x30\x88\xd2\x6f\x7f\xe7\x4b\xc8\x9c\xf5\x28\x5c\x68\x8f\x02\x7b\x7e\x68\x60\x04\x86\xaf"}, +{{0x49,0x8b,0x6e,0xe6,0x49,0x2d,0x53,0x23,0x1b,0x35,0x32,0xd1,0x93,0x57,0x8b,0xa7,0x5d,0x6a,0x89,0x4e,0x2e,0x53,0x00,0x34,0xe2,0x1a,0xb8,0xad,0x8d,0x2c,0x0d,0x1f,},{0xd1,0x24,0x66,0x5b,0x28,0xfa,0xcd,0x2d,0x17,0x94,0x6a,0x04,0xdf,0xe3,0xd1,0x29,0xa4,0x56,0x1a,0x2b,0x24,0xeb,0x32,0x6d,0x84,0xb6,0x2b,0x42,0x2e,0x44,0xdb,0xcf,},{0x11,0x2f,0x5c,0x6d,0x3b,0xcb,0x3d,0xd9,0x93,0x46,0xd3,0x2a,0xd6,0x9c,0xbf,0xac,0x3e,0x65,0x3b,0xef,0x29,0xc6,0x8a,0x33,0xf4,0x32,0x31,0xf6,0x6c,0xea,0x1d,0x0a,0x19,0x54,0x27,0xd6,0xe1,0x0c,0x0e,0x77,0xc5,0xd5,0x5f,0xe2,0x79,0x42,0x87,0xee,0x32,0xe5,0xe2,0x2b,0xaf,0xbb,0xd8,0x05,0x2a,0xd3,0x60,0x6b,0x90,0xf9,0x45,0x05,},"\x04\x98\xa5\x9b\x87\xcd\xae\x28\x69\x55\x47\xe1\x08\x63\xbc\xe8\x04\xd9\x7d\xe0\xac\x80\x08\xf3\xd5\xfb\x65\x2c\x17\x57\x41\x9f\xdc\x9e\x0f\x97\x36\xf4\xc5\x9a\x34\xf2\x1c\xfc\x74\x59\x9f\xa7\x88\xfc\xc1\x0c\x67\x30\xc7\xdf\x8c\x3d\x2c\x1b\x6a\x78\x6d\x12\x30\xb6\x55\x85\x71\x9d\x1c\xb5\xc4\x90\x35\x9b\x94\x43\x5d\x6d\xd6\x71\xf5\x4d\x6e\x9a\x19\xb9\xb5\xaa\xad\x7e\x0f\x23\x3f\x87\x97\xdf\x99\x78\x28\xd8\x8c\xd9\x2e\xf0\x89\xef\x7d\xbf\x1e\x95\x27\x78\x94\xa2\xf7\xc2\xfd\x0c\x8e\x4d\xfd\xfa\x6d\x3d\x14\x58\x9f\xf0\x19\x16\xdb\xf9\xdd\xd8\x11\xc2\xf5\xe0\x1e\x94\x29\x89\x90\xa1\x45\xa6\xcf\xc2\x68\x95\x61\x4c\x7c\x96\x3f\xef\x30\x8a\x4e\x38\x56\xc3\x2d\xd3\xe3\x59\xbc\x56\xd2\xcc\xa4\x96\xad\x19\x9f\xf1\xa5\x68\xd6\x43\x0a\xc5\xcd\x20\x8e\x0e\x2d\x07\x80\x3c\xa5\x23\xe0\xd8\x13\xad\x37\x33\xab\x50\xbd\xca\xdc\xb9\x88\xae\xe7\x58\xea\x50\x43\x9b\xf3\x8e\xe6\x49\x99\x76\x04\xf1\x51\xc6\x02\xc8\x29\x00\xa8\x20\x5d\x8f\x6f\x67\x0c\x86\x84\xbf\x5a\xbb\x5f\x75\xff\x29\xa3\x7e\xb9\xbf\x81\x05\x19\x9f\xbb\xfb\x47\x07\xe1\x62\xe6\x4c\x71\x52\x70\xf8\x53\xe6\x48\xb0\xaa\x26\xfe\xa0\xf6\xdb\x56\x28\x96\xbf\x42\x4a\x9f\xfc\xb2\x92\xfa\xe8\x5b\x76\xce\xfb\x8b\xd5\xa4\xb3\xce\x1f\xb3\x9b\xd2\xa5\x0d\x0c\x9e\x6d\x93\x3e\x16\x7f\xf6\x29\xb8\xa4\x94\xf2\xa9\xb7\x74\xeb\x30\x3c\x78\x1e\xa0\x2a\xff\x1a\x8a\xfa\xdc\x24\x65\xcc\x61\x69\x68\x01\x5e\xd6\xa5\xa3\x3c\x31\x20\xb9\x45\xed\x53\x51\x98\x1e\x32\xfb\x9f\xb9\x6b\x22\x12\xdc\xf8\xfe\x9a\xc5\x6e\x3c\xf4\x1d\xc5\x24\xf8\x00\x63\x10\x20\xb0\x25\x91\x91\x78\xce\x07\x4e\xef\x07\x8d\x68\x42\x01\x2a\x27\x6e\xfa\x62\x8d\xb5\x40\x58\xd1\xeb\x5b\x5b\x70\x5f\x1e\x18\x18\xd2\xdf\x51\x64\xba\xab\xb0\xc6\x19\x56\xec\xdb\x8c\x70\x6e\x56\x2f\xc4\xfd\x64\x05\x28\x70\x53\x0a\xe4\x25\xb2\x21\xf8\x9d\xd6\xf9\x0d\xab\x88\x2e\x76\x3e\x7a\x7f\xfa\x14\x1b\xba\xa8\xbf\x7a\x3f\x21\xb0"}, +{{0xce,0xfc,0xfc,0xd1,0xcf,0xf4,0xd8,0x91,0x07,0x49,0x27,0x91,0x31,0x83,0x0b,0x1d,0xa1,0x9d,0xfc,0x52,0x45,0xf7,0x8c,0xa6,0x8b,0x8c,0x3c,0x1b,0x62,0x2b,0x45,0x51,},{0x1d,0x39,0x4a,0xbd,0x1b,0x4e,0xd1,0xae,0xdf,0x96,0x6a,0x60,0xef,0xd3,0xff,0x88,0x21,0x40,0xa7,0xe5,0x6b,0x42,0x83,0x74,0xec,0xb4,0x43,0x28,0x9a,0x9c,0x7f,0x00,},{0x7d,0x83,0xff,0x66,0xec,0x79,0x30,0x7b,0x1c,0x0c,0x09,0x3f,0xda,0x39,0x68,0xa9,0x6c,0xf6,0x04,0x4f,0x5c,0x80,0x28,0x88,0x58,0x40,0x18,0x84,0x5e,0x7c,0xaf,0x2a,0x13,0x5a,0xc6,0xf1,0x67,0x7e,0x84,0xd2,0x2e,0x45,0x8e,0x22,0x7e,0x4f,0x93,0x02,0x09,0x91,0x9b,0xc1,0x1b,0x12,0xf7,0xaa,0xf2,0xb8,0xc9,0x43,0x02,0xd6,0x42,0x00,},"\x5e\xc9\x4e\xd0\x6f\xc1\x25\x7a\xe9\xc1\x83\xce\x56\x27\x12\x07\xac\xa3\x7a\x23\xfd\xb4\xb0\xe7\x4a\xc9\x30\x7a\x1b\xb1\x12\xe0\x5e\xd5\xa5\xd0\x47\xc9\x31\x09\xe2\xe5\x94\x77\xb0\x33\x78\x34\x64\x22\xde\x36\x71\x4c\x29\x61\xbb\x97\x36\xa5\x13\xca\x36\x71\xc6\x03\xa6\x8c\x2b\xe7\x31\x7b\x1b\x52\xa0\x76\xda\xe2\xaf\xf7\xbc\x88\xcd\x5e\xea\x0a\xa2\x68\xfa\xaa\xda\xe5\x39\xc9\x38\xbb\x4f\xd4\xb6\x06\x9b\x19\x45\xeb\x6a\xf0\xc9\xe6\xc8\xaa\x5e\xe4\xa4\xaf\x37\xe9\x0c\x67\xe2\x48\xe8\xd2\x7b\xd7\xf9\x58\x9c\x4d\x30\xe9\x05\x65\x1b\xaf\x45\x36\x4f\xa0\x49\x95\x7e\xa5\xd9\xb7\x14\x6c\xa6\x82\x04\xe5\xe9\x73\xd0\xf1\xc9\x1a\x1c\x4b\xde\xd6\x61\x15\x02\x8a\x71\x11\x4f\x0f\x4f\x85\x1b\xd1\x15\xfa\xeb\x95\x4e\x3f\x71\xa0\x14\x70\xb2\x48\x1a\x00\x98\xd9\x9f\x9d\x74\x89\x8c\x8b\xa0\x28\x7c\xc7\x83\x41\x55\x21\x41\x73\xd1\xfc\xba\xfc\xfe\x9b\x08\x25\x03\x84\x43\x94\x76\x05\x58\x83\x83\x38\x16\xc9\x52\x4c\xfd\x57\x44\xaa\xa2\x59\xdb\x7e\xbd\x3a\x6a\xa2\x0b\x5a\x65\x46\xda\xde\xfd\x14\x06\x68\xeb\x0e\xcc\xb5\xf6\x68\xdb\x9f\xc6\x29\x83\xdf\x98\x08\x50\xc9\xd1\x98\x82\xa1\x75\x50\xd5\xdc\xa3\x54\x2c\xd3\x60\x03\xa0\xd0\x3c\xff\xb0\x45\x75\xa3\xe8\xe1\xd0\x70\x15\xc7\xb3\x0e\xca\x91\x15\xcd\x2b\x72\xe4\x6d\xfd\xdf\x6a\x4d\xda\x1f\xaa\x2d\xbd\xc8\x90\x00\xd4\x33\xf6\xec\x9a\xdc\x46\x14\x6d\x93\x9f\x32\x12\x1b\x99\xb2\x89\x83\xd9\x8b\x9d\xde\x8c\x3f\x6e\x57\x79\xf2\xb0\x70\x0c\xb0\x23\xdb\x13\xde\x65\x6e\x0a\xed\x1d\xa2\xd5\xc6\xba\x26\x52\x34\x36\x48\xad\x42\x0f\x6a\xb9\xe5\x5a\x97\x48\x2a\x1a\x22\xb3\xbc\x2e\xe5\x98\x62\x9a\xba\xd9\x54\x7e\xdb\x5f\xf7\x90\x99\x05\x64\xbd\x87\x1f\x81\xb2\x4b\x12\xf2\xbf\x8d\xbd\xfe\x7a\x88\x37\x5f\xad\x9c\xcb\xd9\xfc\x0b\xa1\xd3\xbb\xa5\xe3\xc4\x81\x3c\x18\xa0\x34\x8a\xad\x83\xfb\x1b\x82\x68\x90\x54\xd9\x9b\x46\x00\xdd\x17\x60\xd0\xdc\xce\x44\x75\x74\x67\xbe\xc1\x94\x64\x06\xd5\x30"}, +{{0xd1,0x07,0xcf,0x26,0xf5,0x27,0xdb,0x71,0xa2,0x06,0xe4,0x1d,0x17,0x95,0x53,0x21,0x01,0x32,0x25,0xbb,0x20,0xf9,0x3e,0x12,0xdf,0x3d,0xc7,0x39,0x9e,0x72,0x0c,0xa3,},{0x18,0x6b,0xf4,0x53,0xc9,0x5d,0xc0,0xa2,0xfd,0x58,0x9a,0x78,0xe2,0xc8,0x00,0x40,0xb3,0xf6,0xdd,0xf9,0xa6,0xf8,0x68,0x1d,0x14,0x60,0x36,0xcf,0x21,0x46,0xe8,0xfc,},{0x80,0x71,0xd9,0x7f,0x32,0x4f,0x10,0x35,0x8f,0x13,0xac,0x8c,0x61,0xd4,0x24,0xb4,0xf3,0x00,0xdd,0x04,0x19,0x57,0x1c,0x39,0xe4,0x0d,0x99,0xae,0xa5,0xf0,0x31,0x40,0xe6,0x2a,0xb4,0xc9,0x71,0x27,0xab,0x33,0xe9,0x82,0x69,0x96,0x6a,0xe1,0xd4,0x55,0x7e,0x45,0x9b,0xf7,0xf5,0x97,0xb3,0x13,0xf3,0x51,0xa2,0x01,0x22,0xf0,0x66,0x0e,},"\x78\xeb\x9e\x13\x78\x99\x28\xa7\x4f\x36\x01\x41\x72\x8e\xde\x98\x38\x96\x85\xc8\x36\xb9\x1f\xaf\xbf\x1a\x7e\x8c\x19\xcf\xbe\x21\xbd\x3c\x3d\x6c\x6e\xd8\x3c\x40\x9e\xf6\x93\xf1\xd7\x35\xda\x3f\xa4\x66\x49\x7e\x19\xf3\x8e\x30\xfb\xa2\xa1\x02\x37\x85\x45\x90\x70\xe6\xe9\x2c\x1c\xb7\xc9\xbd\x0c\x9b\xa6\x12\x20\x15\x78\x66\xc3\xbe\xd2\xb0\x1e\x6e\x6b\x9b\x8d\xd3\xf0\xc4\x7c\x02\xf1\x81\x34\x6a\x0a\x9b\x9b\x5d\x3d\x7e\x18\xa9\x4d\x69\x56\x85\x5e\x16\xe8\xea\xaa\xab\x71\xb1\x03\x02\xf3\x5b\xd8\xfb\x1f\x9b\x58\x47\x30\x41\x60\x32\x49\x26\x64\x5b\x05\x82\xc2\xf2\xf1\x53\x3a\x24\x28\x14\x61\x51\x42\x41\xdb\x28\x50\xef\x31\xc5\x76\x3b\x2e\x3d\x4f\xb1\x8f\xc6\xd8\xc1\xd7\xe5\x2f\x7c\x13\x39\x2c\x17\xe2\x70\x19\xff\x60\x00\x8e\x43\x1f\x17\x14\x37\x0b\xc0\xef\xd9\x45\x2a\x61\xf5\xc5\x64\x88\xd9\x1a\x18\x50\x37\xf1\xf6\x47\xf7\x2f\xa7\x85\x01\x0d\x5d\x78\xf0\xa1\x15\x87\xcc\xf6\x6b\x80\x88\xe0\xe6\x35\xff\xf3\x77\x41\x93\xb2\xed\xef\xfd\x92\xd6\xe8\xa0\x32\x11\x28\xae\x64\xcd\xb8\x62\xe6\x31\xe2\xee\x5b\xa0\xda\x44\xbb\xd5\x89\xdc\x39\x2b\x5a\x11\x3b\x86\xa7\x27\xa8\xdd\xb6\x98\xa3\x34\xcc\x66\x8b\x39\xb1\xcd\xe1\x99\xb8\x88\x37\xca\x5f\x00\xf5\x53\xf8\x9c\x62\x28\x34\x27\x36\x41\xd3\x9b\xc1\x0c\x6a\x24\xe1\xeb\x42\x58\x75\x42\xf0\x3f\xc1\x62\x75\x24\xed\x6b\x74\x93\x91\xf1\x10\x28\x70\x6c\x42\x36\x44\x25\xb2\xca\xf2\x01\x80\xe1\xb8\x02\xc7\x44\xb4\x9b\x7b\xcd\x9b\xf7\xb1\x5c\x23\xa0\xbf\x1c\x69\x65\x96\x0d\x34\x15\x54\xe1\x96\x6b\x6e\xf8\x2f\xcf\xbb\xe4\x1d\x1e\x09\xd7\x41\xe3\x09\x25\x44\x46\x77\x7f\x13\xc2\x9a\x67\xb8\xbd\xeb\xc5\xf7\xf0\x4d\x16\x0d\x60\xe3\x32\xe3\xd0\x44\x1a\x0f\x2f\x7b\x19\x2c\x3e\x2b\xdf\x6d\xad\xec\x2a\x42\x4f\x88\x66\x98\x06\x23\x6e\xe0\x4d\xea\x69\x2b\xd8\xbb\x6f\x91\xca\x06\x82\xec\xe3\x49\x14\x25\x75\x35\x8b\x9b\x7b\xe7\x06\x00\xb3\xcb\x81\xe1\x45\x6b\xa0\x79\x9f\xdc\x01\xff\xd6\x86\x23"}, +{{0xaf,0x7e,0xa8,0xe4,0x1c,0x89,0x37,0xa4,0xec,0x47,0x5a,0xd8,0x13,0x71,0xa1,0x71,0xd3,0xd0,0xf9,0xfd,0x75,0x19,0xa0,0x4c,0x75,0x1e,0xd4,0xad,0x8f,0xf8,0xfe,0xf9,},{0x15,0xdf,0xc7,0x15,0x85,0xba,0xc7,0x1e,0xf2,0x0f,0x37,0x49,0x87,0xc5,0x55,0xa3,0xf2,0xf0,0x7d,0x6b,0x9c,0x78,0x70,0x66,0xc1,0x0d,0x63,0xcf,0x06,0xe0,0x2a,0xb0,},{0xc0,0xf1,0x73,0x91,0x67,0x27,0x4b,0xf9,0x18,0x31,0xc7,0x4b,0xeb,0x64,0x5a,0xf7,0x90,0x45,0x9b,0x28,0xbb,0x3f,0x21,0x32,0x53,0x65,0x13,0x0f,0x40,0x9a,0xcb,0x66,0xdf,0x1d,0x22,0x37,0x59,0xa9,0x75,0x8e,0x08,0xfd,0x72,0x53,0x73,0x74,0x84,0xe2,0x85,0xa6,0xfb,0x47,0x40,0x4a,0xbe,0x2e,0xba,0x5e,0xf2,0x49,0xfd,0x02,0x5c,0x0a,},"\x05\xf2\x26\x3f\x02\x45\xec\xb9\xfa\xeb\x14\xe5\x7a\xca\x43\x66\x68\x30\x8c\x81\x25\xdf\x31\x16\xc4\xee\x20\x50\x1d\x0c\xde\x70\x1b\x36\x6e\x2b\x50\xa1\xc5\xed\xf4\x84\x14\x4c\xe1\x6b\xfb\x1f\x7d\x26\xdc\x42\x75\xea\x97\x32\xe2\x64\xba\x4d\x4a\x36\x2b\x40\x27\x5b\xa4\x73\x77\xdb\xc3\x32\xcb\x65\xe2\xf4\xc8\x85\x38\x94\xaa\x87\x8a\x4c\x17\x5d\xc5\xb3\xb2\xa7\x57\xff\x3c\x8d\x7d\xe6\x60\x97\x3b\x89\xda\xdf\x07\x6e\x2e\x4f\xc7\x62\x39\xb7\xbc\x75\x2a\x22\x9d\x44\xe0\x00\xce\xb6\x67\x10\x4c\xb0\x74\x6b\xfc\xf5\x9d\x69\x60\x3a\xe7\xfc\x1b\xcf\x11\xd2\xe3\x3f\x61\xdc\x49\x7e\xc1\xb0\xbd\x5e\x4f\x1d\xbe\xf4\x35\xf2\xf2\x91\xf3\x0b\x00\xa8\x5e\x83\x39\x46\xc8\xb1\x04\x84\xe4\xab\xd7\xd6\x0b\xdb\xb1\xfe\x6d\xff\x58\x07\xa5\x3b\xb8\x93\x82\x15\x30\x13\xb7\x0c\xa0\x8e\xfc\x91\xb7\xe9\xfc\x5b\x5d\xbb\xb6\xaf\x12\x3b\x57\xbe\x2e\x14\x0f\xc4\x71\xa4\x5d\x89\xfa\x82\x84\xcc\x27\xe0\xa1\xfe\x77\x1f\x55\x59\x8b\xbd\xcf\x06\x8d\x50\x6d\xad\x0a\x59\x21\x79\xce\xca\x39\xee\x95\x26\xf9\xe4\xfe\x47\xbf\x2b\xb1\x4f\xb1\x48\x6a\x67\x7d\x4d\x7b\x99\xa5\x20\x54\x56\x76\xa0\xf1\xfa\x80\x90\x49\xaa\x24\x14\xae\x7b\x81\x7d\x9a\x03\x6e\x5c\x15\x78\x86\xe8\x34\x1d\x4e\x81\x9c\x09\x2a\x3b\x48\xb3\x60\x6b\x03\xac\xb7\x27\xc6\xc2\x21\x7d\x0a\xf3\x01\x21\x54\x6a\x94\xaf\x6b\x49\xca\xa2\xa8\xc9\xb1\x78\x6f\xa0\xc2\xa5\x24\xec\x7a\x02\x3e\x92\x4b\x5f\x8a\x89\xa5\x37\x80\xc7\xf8\x78\x1c\x5b\x8e\x86\x94\x30\xca\xa0\xe6\xd0\x43\x79\x67\xe3\xae\xd4\x4f\x45\xc9\x01\xcb\xcf\x10\x26\xfb\xbd\x4e\x3d\xd9\xa0\x91\xec\xf8\xb3\x4f\x7d\xd5\x03\x8e\x54\x3d\xc7\xeb\x6a\xd5\x49\x4e\xfb\x14\x5c\xf6\x3e\xc0\xd3\x55\xbb\x8e\x17\x2f\x45\x5d\x8a\x6b\x13\xda\xca\xad\xdb\xc5\x6e\x47\xde\x3c\xf7\x62\xa1\xa7\x38\xef\x09\x2f\x14\x36\x68\x04\x67\xb5\xcd\x82\xe9\xe3\x6e\x2d\x2b\x68\x42\xb3\xbd\x5d\xce\x77\x18\x0d\xda\xf0\xb6\x43\x37\x8e\x69\x85\x99\xdd\x47\xf5\xcd\xbb"}, +{{0x0c,0x57,0xcb,0xfc,0xeb,0xde,0x10,0xed,0xe0,0x2d,0x1c,0xb0,0x1d,0xf3,0x60,0xd4,0x1f,0x2e,0x66,0xa5,0x04,0x43,0xd5,0x8b,0x5d,0x4f,0x08,0x28,0xc9,0xa1,0x8b,0xb7,},{0xc4,0xd7,0x61,0xba,0x18,0x99,0x71,0xb9,0x46,0x2c,0x61,0xbf,0x46,0xa7,0x65,0xf8,0x8e,0x2e,0xca,0xa5,0xbf,0x22,0x11,0x22,0x0a,0xfb,0x00,0xac,0x65,0x7f,0x7c,0xe5,},{0x8a,0xf7,0xbb,0xe0,0x1b,0x8a,0xb9,0x39,0x51,0xd1,0x6f,0xca,0x05,0xa9,0xc9,0x67,0xd1,0xc5,0x2c,0x97,0x4b,0xea,0x15,0x1e,0xa7,0x2e,0x4c,0xeb,0xaa,0x20,0xcc,0x78,0x3b,0xb6,0x1d,0x8d,0x69,0x38,0x5c,0xac,0x5b,0xc6,0xd7,0x2d,0xbd,0x16,0x2b,0xee,0xf1,0xfc,0xb5,0xdd,0x0e,0x0a,0x08,0xb4,0x8c,0xa0,0xb9,0xf6,0xd9,0xa9,0x88,0x0c,},"\x33\x77\x03\x24\x3a\xb5\xb4\xe4\xd3\x48\x1e\xe8\xdd\x1f\x44\x94\x50\x71\x74\x41\x26\x58\xa9\x39\x88\xb5\xc3\x04\x03\xa7\xb7\xed\x85\x22\xce\xb4\x6f\xa1\xee\x02\x75\x3a\x87\x4e\xf0\x67\x5d\x39\x7c\x57\x5d\xa0\xb0\x8c\xaa\x8c\xee\x33\x93\x78\x4d\x0f\x0d\xb8\x45\x98\x37\xaf\x90\xb9\x05\x6d\xf4\xe3\x8e\x41\x7f\x3a\xd2\xeb\x1a\x10\x0e\xf2\x07\xce\x2c\xa6\xc6\x10\x01\x80\x21\x66\x1e\x30\x70\x99\xf2\xb7\xc4\xae\x87\x59\x91\x14\x0b\xdd\x3f\x0f\x99\xad\x2c\x5d\x55\xaa\xcb\x84\xcc\x1c\xdc\xd5\x79\xe0\x80\x72\xb6\x95\x1f\xd4\x5e\xd2\x89\xac\x9f\xf7\xf0\x98\x6a\xc8\x8a\x4f\xbb\x9d\xc9\x20\x3d\x9b\xaf\x18\x0c\x90\xed\xf9\x37\x25\x8c\x9d\x0a\x6d\x48\xe2\x20\xf7\x2d\x25\x0c\x7f\x2c\x77\x7e\xaa\x7f\xb9\xfa\x11\xd5\x0a\x57\x98\x77\x2f\x9f\xd9\x76\xb0\x05\x99\xf1\xf0\x27\x6f\x3a\x2e\x4d\x98\x8a\xe9\x21\x25\x46\x7a\x8d\xed\xb7\xa1\x6f\x9e\x3a\x56\xe8\xd0\x06\x62\xb3\xeb\x67\xa3\x5b\x9b\x60\xe7\x3b\xd9\x35\x07\x7e\xe2\x38\xdf\x8f\x6e\x83\x3b\x9a\x55\x23\x38\x68\x26\xc1\xf2\x91\x7b\x1c\x3e\xc9\x8e\x0a\x5f\xde\x89\xc4\x8b\x1d\x44\x6d\xa5\xd0\xc8\x85\xfe\xf0\xe3\x74\xbf\xf3\x0a\x99\x7c\x7b\xaf\xd5\xe7\x43\xc8\x5d\x0c\x6a\xaa\x6e\xf1\x0a\x06\x12\x11\xa2\x32\x7c\x6d\x84\xeb\x74\x7a\x56\xe9\xbf\x60\xfc\xd5\xb5\x53\xb7\x98\x83\x4d\x0c\x5c\xca\xdb\x9d\x4b\x54\xe7\x23\x7d\x12\xc6\x79\xc1\x93\xa2\x87\xbb\x2f\x51\x1c\xd4\xee\x2a\x2d\x85\x49\xb4\x4b\x21\xc1\x1f\xbe\x57\x23\x38\x1c\x6c\x5f\x78\x46\x87\xfd\x90\xce\xbc\x5b\x49\x5a\xf9\xe4\x14\xf2\x96\x1b\x06\xa1\xc8\x43\x3b\x9a\xa3\x29\x2b\xcf\xf4\x24\x1c\x22\x71\x67\xf8\xd1\xde\x05\x4b\xa3\x3a\xd8\x1d\xa3\xeb\x3e\xc6\xe4\x0a\x6e\x26\x85\x4a\xf3\x49\x54\x01\x71\xb7\x5d\x75\xfb\x9a\x8d\x12\x93\x78\x27\xfd\x59\x4d\x31\x7b\x7a\x8d\x9f\x1c\x2f\xca\xbd\xa5\x63\x75\x56\x8c\x3e\x9e\x51\x4c\x2e\xff\xfc\x38\x78\x36\x3d\xcf\xad\x9f\xd9\x54\x36\xb0\x22\xe8\x77\x2a\x88\xcb\x71\xe8\x03\xbf\x90\x38\x19\x62"}, +{{0xfe,0x71,0x72,0x27,0x83,0x64,0x19,0x4b,0xcf,0xef,0xb4,0x78,0x31,0x42,0xb7,0x9f,0x59,0xd5,0xfd,0x97,0x8b,0x1e,0x47,0xc3,0x14,0xd7,0x8d,0x4c,0xb3,0xf6,0x1c,0x8a,},{0x2e,0x82,0xcc,0xe4,0x79,0x10,0xc7,0xe2,0xa7,0x9b,0xc1,0xf4,0x19,0xdc,0x3c,0x3d,0xf5,0x4f,0x23,0x29,0x1f,0xc8,0x19,0x3e,0x82,0x58,0xcc,0xd2,0xfd,0x38,0xd5,0x48,},{0xf6,0xc2,0xa4,0x29,0x6b,0x9a,0x34,0x07,0xc6,0xd7,0xa5,0x67,0x9d,0xae,0x86,0x66,0xb5,0x03,0xd1,0xa1,0x7e,0xac,0xf7,0x1d,0xf4,0x93,0x79,0x1b,0x8f,0xf0,0xc0,0xaa,0x8e,0xed,0x36,0xb3,0x27,0xa2,0x9a,0xb7,0x82,0x8f,0x46,0xf2,0x2d,0xe8,0x68,0xb6,0x28,0xb1,0xcf,0xd5,0x01,0xe8,0x59,0x9f,0xa3,0x16,0x93,0xb1,0x5f,0x61,0x08,0x0f,},"\x23\x50\x94\x51\xa0\x59\x96\x9f\x2b\x4b\xdf\xce\xe5\x38\x89\x57\xe9\x45\x6d\x1f\xc0\xcd\x85\x7e\x4f\x4d\x3c\x25\xa4\x15\x5d\x5e\xe9\x1c\x20\x53\xd5\x58\x06\x2e\xea\x68\x27\x95\x0d\xe8\x63\xbc\x9c\x3d\xf9\x67\x2c\xde\x8b\xa7\x41\x74\x4e\xbb\xdd\xb4\x5e\xc1\xf4\x28\x45\x70\xfd\x0a\xac\xd0\x7e\xa5\x8c\x58\x1b\xe2\xaf\xc9\x5a\xe4\x44\xe6\x78\xed\xc2\xa0\x24\x39\xf3\x87\xce\xc9\x82\xea\x3a\x44\x81\x4a\x8a\x30\x2b\xb3\xbf\xe8\x22\x8d\x58\xde\x03\x9d\xeb\xdf\x7c\x2a\x7e\xdd\xb4\xe7\x1c\xa4\x74\xf9\x4f\x7e\x2b\xd8\x9d\xc6\x5b\x16\x10\x73\x3c\x91\xff\xf8\x9b\xd4\x99\xf4\x01\x54\xa6\x19\x8f\xdf\x5e\xc7\xad\x37\x22\xd9\x25\xb2\x92\x19\x6c\x42\x94\x99\x07\x5b\xe0\xc5\xb6\xda\x9c\x09\x0c\x07\x91\xa7\x01\x9e\xb5\xe7\x36\x6b\xe6\xce\x58\xab\x2f\x04\xfe\xcd\x91\x27\xc4\x27\x18\x04\x7b\xf4\x70\x30\x69\x15\x21\x31\x2c\x08\x77\xaa\x3f\x36\xcc\x5f\xbc\x9c\xaa\xe0\xfd\xe3\x94\x5d\x2a\x86\x8e\xe2\x50\x2a\x38\x33\x20\x8e\xb8\x50\xa1\x63\xcf\xcb\xf6\xda\x9e\xe6\xad\x9f\xe0\x67\xfe\x24\x19\x86\xfe\x44\x36\xd6\xae\x4e\xdc\x61\x56\x19\x38\xe2\xa3\x3f\x4a\x33\xdb\x63\xf6\x9d\x3f\x1a\x88\x50\xed\x40\x02\x88\x69\x16\x41\x03\x48\x8f\xb7\x95\xcd\x82\xca\x06\x7f\xe1\xb4\x89\x7c\xaa\x49\xa7\xca\x9a\x80\xf3\xa8\x15\x1f\xd1\x3b\xbb\x7f\xf3\x50\xe8\x57\x9f\x56\x5d\xc1\xc4\xa9\xca\x93\x8d\x27\xb1\x5b\x3f\x85\x8e\xf4\x5d\x3d\xd7\x8b\x2c\x35\x86\x35\x35\x63\x15\xf5\x5a\x97\x52\x8e\xcf\xec\x5d\x11\xa5\xb7\x21\x50\x31\x07\xfa\xa4\x06\xc1\x70\x34\xe6\x01\x47\x4b\x3b\x60\xcf\x48\x69\x2e\x26\x92\x61\x15\x8f\xc3\x53\xd4\xdf\x42\x74\x38\x13\x57\x79\x0b\x77\x56\x08\x7b\x00\xcc\x79\xe3\xb9\xd2\x8a\x3f\x24\x39\xfe\xbf\x19\x9e\x64\xa8\xb3\x7c\x91\xb5\xa4\x33\x4e\x33\x54\xe8\xfa\xf3\xa3\x61\xe8\x56\xc5\x4b\xda\xa4\x3b\xfd\xcd\x6e\xe6\xc9\xf9\x67\x95\x88\xf6\x06\x99\x50\x83\x23\x48\xaa\xcb\xa2\xbf\xee\xba\xca\xa2\x07\x1d\xdc\x7d\x77\x89\x8e\xf0\xf6\x87\x93\xcd\x25"}, +{{0xa9,0x51,0xe4,0xe6,0xba,0x9f,0x1f,0x0b,0x35,0x48,0x31,0xc9,0x86,0x94,0x24,0x48,0xfa,0xed,0xe3,0x7e,0x11,0xb0,0xf2,0x47,0xda,0x27,0x06,0xdc,0xee,0xf7,0x3a,0xc7,},{0x30,0x36,0x20,0x14,0x97,0x4b,0xf7,0x5c,0x84,0x95,0xc2,0xe2,0x71,0xe7,0x13,0xd5,0x73,0x84,0x38,0x4d,0x0a,0x5d,0xa8,0x8e,0xde,0xea,0x79,0x27,0x9c,0x0c,0x58,0xec,},{0x02,0x78,0xc8,0x6a,0x15,0x20,0x8d,0x9b,0xe5,0xb1,0xe1,0x57,0x47,0x61,0x86,0x1b,0x8a,0xf7,0x2a,0xe0,0x8d,0x40,0xcd,0xcb,0xec,0x35,0x4e,0x65,0xa9,0xc3,0xd0,0xa0,0x6b,0x5f,0xcb,0xb2,0x97,0xd0,0x9b,0xef,0x39,0x74,0x62,0x39,0x59,0x86,0xc3,0x09,0x3e,0xeb,0x22,0x64,0x4c,0x00,0x3c,0x30,0x78,0x17,0x8c,0xdf,0x67,0x4e,0x99,0x0a,},"\x20\x57\x7d\xca\xc8\x91\x74\x88\x5e\xed\xb0\x62\x48\x9c\xd5\x12\xfa\x72\x86\x3e\xc5\x43\x8e\x31\xe9\x58\x78\xb7\x5c\xe2\x77\x2a\xee\x62\x90\xa0\xba\x3c\x8f\x64\x2c\x1d\x0e\xf5\x5d\xa8\xd5\xbc\x14\x84\xf8\x3b\xb9\x87\x6c\x7a\x8c\x0b\x6b\x60\x9b\x94\xd1\x12\xa0\x6f\xc8\x3c\xe8\xd2\xc1\xe0\x8e\xd6\xc7\x35\xe5\x7b\x24\x4a\xad\x6e\xcf\x70\x75\x36\x3d\x56\x5b\xa4\x78\x65\x69\x5c\x84\x23\x51\x09\x09\xe0\xa3\xdb\x4b\x61\xed\x7a\xa6\x7a\x74\x71\x33\x1e\x83\xa0\xc5\x8b\x82\x20\xa6\x24\x5f\x65\x66\x15\x49\xc1\xa1\x2d\x4c\x0d\x50\xc3\x26\xfb\x94\x91\x7c\xbd\x07\xbe\x51\xe8\x3f\xe8\xbb\x3e\x46\xca\x01\xb0\xa2\x60\xda\xaf\x1d\x6a\xbe\x37\x03\xd6\xa9\x25\x11\x3b\xb4\xd5\x7e\xa1\xa4\x8b\x4c\x7d\xbd\xaa\x03\xee\xa8\x14\xa4\xb5\xf0\x2e\x1d\xfb\x54\x5c\xc6\x23\xfe\x17\xa3\xbb\x18\xe4\x37\x3f\x5f\x7e\xc2\xfb\x52\x17\xd2\x3e\x4f\xed\x54\xa7\x72\xe1\x13\x23\xe7\x30\xaa\xd7\xef\xca\x8c\x46\x44\x00\xe7\x67\x90\x55\xfc\xc1\x25\xa8\x76\xef\x7b\x8b\x9d\xe1\x86\xe2\x29\xa7\xab\xf1\x91\xd0\xc5\x6d\x91\x81\x5f\x67\x87\x2e\x95\x7b\xfb\xc7\x63\x4a\xac\x40\x35\x76\xa5\x8f\x42\x7b\xdb\xb3\x0e\x8c\x4b\x6f\xc6\xc4\x47\x74\x10\x24\xeb\xb5\x03\xa5\xa9\x02\x51\x24\xa4\x88\x7f\x82\x5a\x43\xee\x94\x0f\x21\x0a\x1b\xd5\xae\x4f\x67\x32\xd6\x0f\x95\xf2\xb8\x32\x01\xc4\xc6\xdf\xe2\x79\x41\x2d\x75\x02\xa5\x21\x1f\x8f\x48\xf8\x00\xdb\x30\xfc\x37\x76\xc4\xed\x3a\x38\xbb\x46\x34\x82\x2c\x98\xa6\xd6\xdd\x32\x33\xbe\x60\xe4\x2c\xca\x45\xa3\x16\x3c\xc8\x4e\x9e\x8d\xa6\x47\xc0\x71\x1b\xc4\xc6\xcc\xd6\x5a\xa1\xe9\x72\xc0\x74\x04\xd1\x03\xe7\x4b\xcc\x31\xa7\xe2\xc3\xee\xa5\xac\x92\x57\xab\x42\x89\x47\xab\x3d\xd3\xfb\x15\x3d\x90\x69\x4a\x40\x73\x37\x3c\x4d\xd9\xce\xb1\x31\x15\x4f\xe8\x77\x47\x3f\xd9\x96\xf4\x24\xf3\x3e\x31\x6e\x4e\xb0\x2b\x8c\x75\x13\xbe\x69\x98\xe5\x16\xcb\xba\x54\xd9\x4c\xd0\xa4\x35\xe0\xff\xcc\x2c\x0a\x8e\xf7\x2b\x63\x0e\xc2\x47\x81\x06\x6a\xa5\xef\xb9"}, +{{0x38,0xa9,0xb2,0xd4,0x9b,0xa8,0xb8,0x2f,0x30,0x1a,0x57,0x72,0xce,0xa0,0xef,0xc2,0x21,0x84,0x55,0xc8,0xb2,0x18,0xb2,0x2c,0xba,0xa2,0xaa,0xd2,0xd7,0xad,0x3b,0x35,},{0x9d,0xf5,0xea,0x1f,0x78,0xf8,0x10,0xa5,0x21,0x77,0x46,0x02,0xbb,0xba,0x49,0x42,0xf0,0x45,0x92,0x38,0x96,0x6c,0x8b,0xcd,0x21,0x90,0x0a,0xfb,0xf3,0xd8,0x42,0x93,},{0xe1,0x9e,0x62,0xac,0x53,0x9a,0x9c,0xa2,0x51,0xd1,0x2d,0x4c,0x71,0x05,0x5b,0x0a,0x3f,0x58,0x1d,0x19,0xf2,0x68,0x2e,0x67,0x24,0x04,0xc7,0x8a,0xc1,0xf1,0x2b,0xbe,0xfc,0x91,0x51,0x92,0x76,0xa5,0xcb,0xe1,0x6f,0x52,0x0c,0xf7,0xa7,0xf6,0x87,0xa2,0x40,0xf0,0x32,0x91,0x57,0xc5,0x9f,0x50,0x02,0x6a,0x58,0xdc,0xdc,0x50,0xfc,0x08,},"\x17\x78\x16\x7c\x49\xb3\xa4\x4d\x4a\x5b\xa8\x38\xb7\x38\x85\x53\xb1\xe1\x3d\x36\xea\x4f\x86\xd3\x02\x42\xe1\xa8\x22\xa3\xbb\xaf\xf5\xce\xa6\x3e\x2a\xe2\xa4\x63\x5b\xe2\x36\xfe\xf2\xb8\x13\x5d\x14\xfb\x62\x1c\x0b\xb7\x73\xc9\xc1\x77\x53\xf8\x09\x26\xeb\x55\xd0\xf1\x15\xbd\x09\xa8\x85\xd8\x44\xb8\x18\xc9\xf0\x44\x89\xa3\x31\xbb\x5e\x03\x2b\x8e\x58\xcd\xa3\x69\x49\xc5\xa8\xd0\x8b\x55\xbb\x8d\xe9\x65\xe1\xf9\x0d\x3b\x9c\xfe\xec\xfc\x6a\xd9\xa4\xee\x5c\xb4\x04\x7e\x94\x50\xac\xdc\x64\x64\x01\x66\xa8\xc0\x69\xea\x84\x9a\xeb\xdd\xac\x1a\xe4\xaf\xec\x91\xdd\xd1\x7f\xa5\x55\x3f\xa8\x7c\x56\xf7\xe5\x1e\xc1\xcd\x6b\x5c\xc2\x33\x51\xd0\x57\xa4\xce\x4a\x89\x23\xc8\xae\x6a\xc7\xa8\xaf\xdc\xc0\x88\x1c\x0e\x74\xeb\xb0\x24\xef\x72\x96\x16\x2c\xb9\x3c\x68\xe5\x0b\xbb\x07\x4e\x65\x1a\xc8\x7d\xac\x9e\xa5\x9d\x4c\x3f\xbf\x0f\xe3\x79\xf3\xe9\x7a\x24\x56\x6e\xca\xe5\x43\x03\xbc\xfb\x6f\x0c\xc9\xf1\x5f\x66\x39\x43\x0e\x66\xb1\x9a\x42\x78\x49\xfd\xff\xf8\x33\xdf\x02\x68\x9e\x9d\xe4\x40\x06\xc9\x03\xc5\x59\x18\x34\x59\xb9\xf4\xa9\x7f\x54\xa0\xf2\xa2\x8d\xf7\xb0\xe9\xde\xed\xa8\x23\x9d\x7b\x51\x69\x77\xf5\xe7\xd6\x97\x1b\x45\x02\xe9\x88\x5f\x75\x0a\xf8\xd1\xa6\x66\x9e\x25\xe7\x7d\x5f\x32\x7c\x77\xc8\x7a\x86\xe0\xa1\x87\x2b\xc9\x6a\x76\x06\x0f\x5f\x8a\x0c\x40\xcc\x97\x3b\xfc\x7f\xe6\xed\x9b\xca\x78\xf8\x84\xe6\xa2\x82\x8b\x94\xd4\x89\xd3\x2a\x0f\xd3\x37\xe6\x9d\xb8\x3f\xb8\x78\x9a\xfd\x4e\x8e\xf5\x4c\x22\xa7\x8c\x25\x87\x46\x8b\x9a\xe0\x71\xba\xe3\xb2\x02\xd3\x18\x3a\xd5\xf0\xf8\xe8\x42\xe5\xa8\xde\x85\xbf\xff\x49\xe0\x3c\x83\x81\xbc\xa7\xfd\x42\x78\xdd\xcc\xaf\x01\x34\xfb\x55\x93\xa3\x95\xa7\x7a\x5c\xbd\x43\x45\x93\xbc\x4a\xd0\xff\x4b\x84\x00\xec\x67\x4c\x4e\xca\xf1\xd5\x77\x54\xbe\x0c\xb2\xfa\x9a\x64\x41\xa9\xab\xad\x7b\x42\x19\x7a\xd8\x2e\x50\x82\x7e\x4a\x42\x45\x57\x3a\x8f\x0e\xf8\x7f\x58\x22\x8a\x28\x67\xf4\xb3\xb8\x34\xb6\x63\x50\x37\x94\x0a"}, +{{0x9a,0x17,0x17,0x87,0x36,0x89,0xa0,0x3c,0x11,0x2d,0xd6,0xb4,0xd7,0x6a,0xe7,0x3b,0x89,0xb4,0x16,0xa5,0x98,0xce,0xec,0x20,0x9e,0x27,0x96,0x1e,0x7b,0xb1,0xee,0x8a,},{0xee,0xca,0xd1,0xe0,0xe4,0xb8,0x63,0x29,0x18,0x81,0xa8,0xc2,0x41,0xdb,0x9c,0xcf,0xff,0xe4,0xe5,0x5d,0x8b,0x5a,0x42,0xf3,0x07,0xb4,0x43,0x6a,0xcd,0x06,0x49,0xa6,},{0x1a,0xf8,0xbe,0x09,0x55,0x38,0x96,0x58,0x00,0xd8,0xef,0xf6,0xd7,0x23,0xd0,0x28,0xd6,0x5d,0x0e,0x9c,0x6e,0xb5,0xe9,0xd1,0x25,0xbb,0x3b,0x17,0x83,0xf1,0x1e,0xf7,0x07,0x9a,0x49,0xa8,0x07,0xe2,0x7e,0xf1,0x26,0x0b,0xe2,0x6a,0x3b,0x23,0x1d,0x03,0xb2,0xae,0x15,0x1e,0x49,0xf6,0xf1,0x89,0xf1,0x5b,0x1c,0x83,0xea,0xb0,0x1c,0x02,},"\xe2\x65\x80\x47\x09\x01\xa0\x7a\xb0\x93\x1a\xa2\x38\x29\x80\x2c\xe0\x4d\xa5\x9f\xdc\x2f\x77\x3b\xc5\x67\xf1\xe6\x5b\x4f\x2e\x2d\x4a\x1a\x6a\xec\x1f\x54\x15\x8a\xdf\xce\x9b\x09\x97\x90\xb5\x03\xa1\x3d\x22\x09\x7a\xe2\x3e\xbc\xcf\x92\x3f\x3b\xb1\x98\x6d\x6e\x49\x11\x1a\x8c\xf0\xd4\xeb\x82\x36\xbf\xe0\xd7\xc9\xe9\x3a\x5e\xfc\x7f\xeb\x8e\x6a\x9c\xd1\xb8\xd9\x21\xef\xa2\x1e\x44\x9f\xf4\x9e\x06\xc1\xcc\xfe\xa3\x1f\x93\xe0\x33\xc3\xc2\xa5\x4d\xdb\x0f\x65\x3a\x09\xfb\xd1\x8a\x70\xb5\x63\x15\xf1\x93\xe7\xbe\x56\xe5\x16\x8f\x59\x56\x38\x21\xd4\xbc\x3b\xbb\x0e\xaa\x20\x48\x28\x6b\xbe\xee\x5a\xa3\xf3\xe7\x53\x6c\xf2\xb7\x50\xfd\x32\x26\x02\xbb\x38\x47\xce\xca\x39\xb7\x54\x74\x32\x2d\x76\xb1\xde\x80\xfa\x2e\xad\xba\x15\x2d\x6f\x8f\x02\x0d\x4d\x93\x1c\x53\xf0\xa2\x80\x12\x24\xd3\x5d\xeb\x6e\xc1\x3b\x01\x48\x73\xe6\x89\x90\x36\x07\xde\x96\xd9\xb7\xa7\x43\xa8\x87\xd2\xf4\x8d\xaf\x2e\xd2\xee\xfb\x20\x2a\xbf\x60\x82\x79\x69\x81\x12\x3b\x96\x6e\x93\x6d\xcf\x34\x83\xe2\xd2\x4d\x69\x4e\xcb\x86\x5f\xbe\xb6\x96\x9f\x34\x70\x27\xfb\x8b\x17\x5d\x24\xa4\xc0\x45\xc0\xbb\x4a\xb5\xe0\x2d\xdc\xbe\x77\xd4\x75\x6c\x46\xd1\x37\xb0\x94\x47\x3a\x02\x30\x7a\x10\x83\x40\xac\xad\x9d\x03\xba\xe8\x40\x3a\xf1\x99\xcb\x75\xca\xe3\x16\x2f\x38\x15\x81\x3c\xc6\x8b\xf2\xa5\xe4\x99\xe5\x94\x92\x11\x49\xf3\xbb\xd2\x14\xda\x51\x37\xe7\x56\x52\x15\x59\xdc\x80\xd9\xa4\xb7\x4a\x0f\x49\x43\x02\x2c\x7c\xd5\xfc\xa4\x23\x15\xe0\xbc\xee\xae\x90\x69\x61\x5c\xe6\x7a\x04\x38\x24\x12\x31\x3a\x31\xd6\x7b\x34\x6c\x32\x9a\xd8\x2e\x74\x2c\x0a\x6c\xe0\xa6\xa0\x24\x54\xc1\x13\xe5\x20\x22\xf3\xcc\x03\xfd\xa6\x91\xeb\xdf\xe1\x4c\x53\xc8\xce\x5c\xa9\xb9\x32\xca\x1a\x38\x6e\x3e\xb4\xe9\x0a\x4d\xc6\xe8\xad\x85\x33\xb5\xaf\x1a\xae\xf5\x00\x31\x28\x65\x5c\xa6\x4f\x67\xfc\xd9\x7c\x6a\xc8\x03\x00\x24\x04\x90\x0b\xc0\xfa\xe9\x84\x63\xbc\xc3\x14\x09\xf9\x98\x17\x48\x78\x9a\xde\x2d\x07\x78\x3b\xc3\x2b"}, +{{0x43,0xbd,0x92,0x4d,0xb8,0x15,0x60,0x08,0xc6,0xb3,0x99,0x4a,0x81,0x30,0xd4,0x27,0xd5,0x14,0xdb,0x8a,0x61,0x3b,0x84,0xdf,0xb0,0xb8,0xe0,0xde,0x6a,0xc3,0x06,0x76,},{0x1b,0x34,0x61,0xc2,0x69,0xd5,0xb0,0x06,0x2d,0x5d,0xf6,0xfa,0x65,0x4a,0x25,0x86,0xf6,0x47,0xa0,0x68,0x42,0x18,0xa0,0x6e,0x5e,0x2f,0x7b,0xad,0xfb,0x39,0x41,0x31,},{0xd2,0xa0,0x5d,0x88,0xd9,0xd5,0x43,0xd9,0x4d,0x57,0xec,0x88,0xae,0x55,0x68,0x17,0x50,0xf2,0x0b,0x9b,0xe9,0xc1,0xe9,0x18,0xcd,0xaf,0x45,0x77,0x67,0xf2,0x94,0x8d,0xd6,0x29,0xe9,0x4f,0x06,0x8e,0xdc,0xf3,0xd9,0x92,0x7e,0x33,0x02,0x34,0xba,0xdc,0x3a,0x02,0xfa,0x5a,0xd3,0xd9,0xd8,0x5e,0x94,0x8c,0xb0,0xb0,0xcb,0x3c,0xd7,0x0a,},"\x61\x84\xe6\x48\x0c\x42\xe9\x6c\xc8\x77\x26\x9b\x16\x37\x15\x45\xff\x95\x23\xc4\x5e\xa8\x8e\x76\xa1\x34\x8c\x68\xae\x7f\x31\x8b\x08\x8f\xe4\x61\x09\x28\x23\x91\x85\xb6\xb5\x5b\xfa\x0f\x43\x64\x4c\x4a\x4c\x97\xc5\x6e\xd7\x7d\x08\xb1\xf4\xaa\xd2\xf4\xaa\x06\x99\x94\xab\xec\xa9\x6b\x7b\xf8\x1b\x80\x64\xea\x43\x50\xd8\xa8\xb0\x22\x97\xa5\x13\x08\xb6\x1c\x57\xc8\xf1\x87\x3c\x6f\x97\x00\x7a\xca\x31\x80\x42\x9e\x73\x0a\x66\x43\xf2\x87\x33\x54\x7b\xcf\x7b\x9a\xdf\xe3\x27\xe8\x57\x36\xbd\x04\xaf\x7f\x1d\x9f\x4f\xb8\x4a\x7f\x3a\xff\xdf\x4e\x22\xb5\x74\xec\xb4\xbc\x88\x36\xb1\x0b\x84\x53\xae\xaa\x5c\x1b\xf1\x32\x24\x8b\x82\x6c\xc5\x23\x0f\x75\xe0\x75\xfa\xc9\xf0\x37\x56\x11\x36\xe0\x06\x43\xd0\x82\x53\xe7\xad\x65\x2f\x70\x2c\x0d\x15\xb6\xd7\xd4\x8a\xa6\xf8\xe9\xb5\xf5\xcc\x14\x6e\x3f\x15\x6f\xb2\x52\x27\x51\xc3\x71\x00\x41\xbd\x92\x2f\x37\xa5\x03\x77\xe0\x28\xb0\xc4\xe4\xbc\x34\x65\xd7\xc8\x4a\xf6\xa5\xfb\x42\x7a\xcb\x3b\x41\x37\x8b\x10\x2b\xda\x46\xd8\xf6\xf2\x03\xa5\xff\xcf\x39\x5d\x43\x5e\x93\x45\x8a\x0b\x0a\x4c\x2e\x77\x82\xfa\xfe\x11\x9f\x76\x9f\x67\x05\x8c\x66\x77\xf6\xd1\x0d\x9c\xf5\xcb\x87\x48\xe1\x80\x57\x98\xed\x23\x3f\x6f\x93\x0e\xee\x0e\x50\x75\xbc\x58\xb9\x7a\xf9\x17\x7f\xda\x75\xd5\x37\x08\xbe\xb0\x4d\xc4\xf1\x9a\x43\xe7\x68\x07\x46\x09\xf1\x40\x65\xf4\x8f\xda\xd5\x07\x7c\xe1\x09\xba\xcc\x35\x71\x74\xa6\xb7\x95\x6f\x6e\x7f\x32\xe3\x84\x15\xbe\x52\x63\x70\xfa\x58\xc3\xc0\xb3\x1f\x51\xe6\xcd\x4b\x2c\xf2\x7f\x8b\xcb\xc2\x12\x59\xd9\xe5\xc3\xb5\xc2\x94\x6a\x9f\xc1\xb0\x0d\x9d\x15\xc3\xb7\xd8\x0b\xfd\x9d\x05\xdb\x91\xd2\x49\xd3\xe4\x2d\x89\x56\x68\x20\x44\x54\x8d\x83\xbd\xa8\xd5\xcc\x92\x12\x44\x2f\x30\xb4\x5c\xf4\xae\xad\x80\xcc\xe9\xb3\x51\x2c\x39\xc5\xc7\x37\xd3\xf8\xd7\x47\xaf\xba\xb2\x65\xaf\x5e\xee\xf8\xca\x93\x62\xec\x76\xe9\x43\xb0\xa0\xd7\xa3\x9f\x3d\xb1\x1e\xca\x14\x45\x8a\x7b\x59\x2e\x5e\x4f\xf2\x27\x5d\xd4\x8b\x28\x53"}, +{{0x8f,0xb0,0x86,0x20,0x6d,0xd9,0x5a,0x26,0x21,0xf5,0x98,0x56,0x0c,0xcb,0x28,0x1f,0x82,0x73,0xc8,0xfc,0x72,0xe2,0x36,0x11,0x08,0x9b,0xaa,0xc8,0x9d,0x3c,0x3c,0x78,},{0x20,0x27,0x6e,0xf4,0x79,0xf4,0xd4,0x52,0x3a,0xb7,0x74,0x20,0xd4,0x24,0xe8,0x81,0x9c,0x33,0xc8,0x37,0x79,0xed,0x80,0xc7,0xf6,0x66,0xe8,0xf4,0x40,0x3f,0x94,0xd7,},{0xa9,0x30,0x5e,0x00,0x16,0x00,0xd5,0x97,0xd0,0x5e,0xf6,0x71,0x69,0x9b,0xf0,0x9f,0x0d,0xcc,0x0c,0x44,0x47,0x5d,0x3c,0xa3,0x1e,0x7f,0xf1,0xbf,0xfe,0xdc,0x0c,0x67,0xda,0xa1,0xf3,0xb7,0x6a,0x03,0x59,0x48,0xc5,0x9c,0xd8,0x7f,0x82,0x45,0x3a,0x40,0x95,0x0a,0x1c,0x97,0x03,0xc2,0xe7,0xd9,0x28,0x0e,0x73,0x03,0x96,0x6d,0xa3,0x01,},"\xf0\x29\x03\xed\x42\x66\xe8\x49\xa4\x48\x52\x05\x95\x4f\xff\xa8\xa1\x08\xc3\x23\xb7\xe3\xf8\x43\x31\x04\x35\x14\xe4\x85\x56\xab\x01\x94\x97\x23\x3a\x5a\x12\x7b\xff\x3c\xd7\xc9\x70\x86\xbe\xce\xf5\x38\xb3\xf3\x39\xd7\xd0\x6e\x53\x2d\xc7\x32\x5e\x59\x7a\xe3\x57\xf8\x16\xde\xa4\x2a\x6a\x22\xc7\x9d\x22\x07\x4a\x2e\x1a\xd8\x02\x3c\x42\x4b\x7e\x09\x6e\x5a\xd8\x89\x7b\x05\xef\x7d\x00\xd3\x0a\x04\xaa\xf2\x98\x1e\xdd\xff\x2b\x34\x7f\x1e\x27\xe2\x0a\xab\xbe\x7e\x7a\x95\x44\x97\x8e\x09\x2b\x00\xcc\xe4\x20\xab\xa0\x61\x87\x37\x4f\xfb\xb3\x7b\x4c\x22\xd7\x5f\x04\xe5\x75\x90\xf6\x10\xa2\x73\x47\x28\x6c\x29\x83\x12\xa6\xc9\xb1\xbd\xf2\x4f\xbd\xa8\x51\x3c\x4f\x83\x56\xcc\xf7\x57\x06\x8f\xfc\x11\xbc\x65\x11\x37\x83\xa5\xdd\xe7\x72\x2f\xaf\x4c\xeb\x19\xfb\xb6\x2f\x40\x70\x2e\x2c\x6e\x6a\x8b\xb4\x9e\xf4\x04\x46\x45\x0c\x4c\x59\xa2\x99\x09\x44\xda\x47\x44\xf6\xee\x77\x0b\x93\x0c\x24\x66\x69\x81\x3c\xe5\xa9\xf5\xa4\x7d\xd8\x03\x88\x98\x1b\xfc\xc3\xa5\x6b\x5b\xe2\xc4\xc7\xe6\x59\xa2\xe9\x18\x2d\xec\x0a\xaa\xfe\x90\x31\xaa\x39\x54\xd4\xfe\x7c\x43\x11\x96\xa5\x61\xa5\xb7\x8e\xab\xa6\x4f\x3d\xb1\xb5\x86\xc5\x3b\x16\xf6\x79\xa8\x49\x21\xa6\x42\xc2\x60\xe4\x65\x3a\x61\xde\x10\x8e\xbd\xe6\xf7\x05\x3a\xfa\x2c\xb3\xf3\x66\x8e\xde\x12\x10\x20\xdd\x1b\xac\xe8\x41\x8a\xeb\xac\x3a\x5b\xd5\x14\x2f\x10\x5a\xc2\x6f\xe4\x9e\x5f\xb1\x40\xc1\x9b\x22\xd5\x4a\x62\x91\xdf\xc9\x54\x67\x02\x47\x88\x16\x46\x87\x4d\xef\xad\x81\x49\x95\x51\x9f\x62\x60\xe9\x77\x4a\x8d\x18\x5c\x37\x88\x1b\x4f\x25\x43\xc4\xb6\x3f\xbf\x19\x85\x01\x6a\xb4\x1c\x4d\x72\x8c\xbc\x90\xb3\xab\x87\x62\x67\xbe\xd4\x1d\x0c\x09\x02\xf6\xb5\x0e\x8f\xa9\x06\xfc\x47\x88\xf7\xb8\x20\x46\x73\x06\xe0\xfe\x9e\x03\x6a\x0a\x00\xf8\x04\xf9\x1c\x3c\xa7\x18\xb9\x5f\xf6\xd9\xe2\x20\x4b\xc3\x16\x1b\xf7\x0f\xcc\x17\xb2\x96\x4b\x56\xbc\x61\x2e\x29\x40\x2d\x96\xf5\x09\x86\x51\x4b\xc7\xd8\x31\xd5\x8e\x42\x79\x37\x86\xd5\x80\x6f"}, +{{0xaf,0xa1,0xb8,0x46,0xc2,0x10,0xb5,0x23,0x00,0xe9,0x76,0x96,0xf8,0x1b,0x8e,0xa7,0x74,0xd1,0xdf,0x12,0xe6,0x12,0x52,0x7c,0x55,0x74,0x7f,0x29,0xc1,0x93,0x73,0x96,},{0xb6,0x09,0x56,0x6b,0xbd,0x19,0x47,0xbd,0x7a,0xfa,0xce,0xb1,0x43,0x89,0xe8,0x36,0x22,0x71,0x69,0x21,0x5f,0xab,0x66,0x85,0x1a,0xa5,0xd7,0x0d,0x6e,0x2e,0x3b,0x89,},{0x98,0xb0,0xc6,0x31,0x3c,0xec,0xaf,0x7c,0x82,0xcb,0xde,0xb3,0xd0,0x28,0x06,0x41,0xc6,0x1a,0x06,0x0f,0x65,0xe5,0x63,0xaa,0x93,0xce,0x18,0x30,0x0a,0x9b,0x58,0x27,0x2d,0xc8,0x68,0x0b,0x48,0x5e,0x8c,0xd1,0x1c,0xf8,0x0f,0xdc,0xa8,0x68,0xfa,0xb3,0x65,0x37,0x83,0x84,0xa1,0x42,0x72,0x7f,0x2f,0x84,0x4f,0x87,0xcf,0xdf,0x19,0x05,},"\x4c\xac\x1b\x1f\x4b\xd4\x82\x84\xdc\xc9\xaf\xc8\xb5\x95\x5b\x64\xb4\x36\xdb\x70\x4b\x03\x35\xd9\x75\x5c\xc1\xf9\x74\x77\xf8\xd3\x23\xcb\x64\x10\xef\x14\x6a\xb8\xa9\xef\xb9\x52\x6d\x8b\x62\xe3\xbb\xad\x1f\x72\x95\xf4\x7b\xa9\xf0\xde\x95\x8f\x8e\xc9\xb7\x7a\xb4\x22\x32\x43\x7e\xd9\x74\x85\x64\x44\xcd\x22\xe2\x0b\xe3\x5e\x91\x81\x3b\xff\x4b\x01\x6f\x81\x0d\x0f\x61\xd8\x9f\x6b\x61\x4d\xb3\x3f\x34\xbd\x09\x98\x5b\x59\x3f\xe3\xe0\x6e\x06\x5b\x7b\xc6\xcd\x39\xd5\x5c\x2c\xfb\xec\x7b\x6d\x59\xc0\xb3\x7d\xd1\xd0\xd3\x51\x35\xab\x1d\x1b\x04\xf2\xf3\x0c\x2f\x04\xf4\xba\x2b\x36\x58\x27\x38\x08\x1c\xf5\x91\x90\xf5\x28\x36\x3d\xb9\x44\xed\x61\x29\x31\xd1\xd5\x14\xc6\x21\x4f\x9a\xb9\x2a\xbb\x18\x33\x92\x61\x83\xac\x52\xfb\xa2\xa4\x55\x1e\x20\xe4\xc0\xac\x95\x9a\x49\xdd\xb1\x67\xa3\x81\xe0\x24\x1d\x40\xc0\x86\xe9\x0e\x52\xac\xa0\x17\x25\x89\x75\xdb\xab\x2b\xa4\x51\xee\x53\x9a\x71\x8f\x07\x6a\x58\x70\x9c\x66\x97\x41\x8d\x9c\x6f\x13\xe4\xd3\x91\x36\x8b\xf0\xe8\xbd\x8f\x29\x32\xdd\x95\xce\xaf\x7a\xac\xa1\x24\x11\x47\xd3\x41\xa3\xac\xd0\x8d\xc3\x29\x05\x48\x35\x72\xb8\x9a\x80\xcc\x47\x23\x14\x68\xab\x8d\xe3\x59\xdd\x52\x5a\x62\x57\xcf\x19\x6c\x2e\xcb\x82\xfa\x8a\x78\xaa\x3a\x85\x1c\x7c\x96\xca\x25\xbf\x7c\xa3\xdc\xf3\xca\x21\x45\x3d\x0d\xfd\x33\x23\xd5\xa4\x22\xde\xc8\x43\x16\x10\x2f\x68\x4c\x35\x9f\x22\x6b\xb5\x37\x79\xc0\xb9\x95\x09\x39\x28\x1e\xf7\x9a\x58\xc0\x11\x99\x3e\xac\xe0\x85\x49\x7a\xfa\x4d\xaf\x64\xc9\x68\x7b\x0a\x11\xaa\x11\x6c\xfa\x7b\x03\x93\x62\x41\xa5\x56\x7b\x64\x6e\x7e\x42\xe9\xfb\x59\x24\x05\xb8\xfa\x3c\x0a\x82\x1f\xc3\x12\x1b\x45\xb1\x75\x3c\xec\x9a\x83\x94\x7d\x21\x1a\x45\x49\x9b\xd6\x37\x90\xb8\x7f\x01\x47\x2f\xe5\x66\xd8\x76\x96\xef\xed\xbb\x74\xed\x00\x04\x8c\x38\x4b\xa7\xf0\x27\xb3\xaa\x42\x98\xdc\x41\x10\x34\x9f\xed\xf5\x2a\x96\xcd\x05\xd0\x8b\xd6\x35\x77\x1e\xd4\x51\x07\x38\xd8\xf0\x7a\x60\x21\x24\x4d\x19\x03\x57\x9a\x3e\xa7\x39"}, +{{0xc8,0x59,0x13,0xa6,0x87,0x78,0x77,0x13,0x10,0x01,0x62,0x3c,0xcd,0xa9,0xcd,0xc1,0x2b,0x9d,0x40,0x43,0xb8,0xa8,0x37,0x93,0xc4,0x46,0x96,0x63,0x2c,0xd6,0x42,0x1c,},{0x9c,0xc6,0x7c,0x69,0x48,0xf7,0xbf,0x6e,0x55,0x6d,0x08,0x49,0xd3,0xb8,0xd2,0x03,0x45,0x7a,0x7b,0x61,0x54,0x9b,0x36,0x68,0x1d,0x75,0x4f,0x1d,0xc0,0x84,0x1e,0x96,},{0x01,0xfc,0xcf,0xdb,0x1f,0xb6,0x88,0x8b,0x03,0x10,0xa9,0x13,0x17,0x0f,0x7e,0x36,0x68,0x16,0xda,0xeb,0xe7,0x65,0x0d,0x72,0x51,0x3d,0x95,0x06,0xe6,0x6f,0x7d,0x62,0x20,0x8a,0x49,0xec,0xe0,0xaf,0x18,0x71,0x49,0x7f,0x45,0x41,0xef,0x60,0x5b,0xde,0x71,0x1c,0x9e,0x0a,0x12,0x05,0xef,0x48,0xf2,0x6c,0x03,0xdc,0x1a,0xd4,0xaf,0x03,},"\x91\xb5\x00\x9e\x83\xd0\xf6\x10\x33\x99\xc2\xd3\xfe\xec\x00\x84\x97\x3a\x30\x5b\xf4\x17\x6e\xc7\x82\x53\x75\x60\x47\x2d\xb1\x87\xa1\x1b\x4d\xcb\x4b\x2f\xfb\x7f\x06\x44\xfe\xb3\x94\xb2\x8e\x5b\xfe\x97\x24\x7c\x4a\x4a\x23\x1c\xf6\xe9\x16\xbf\x99\x34\x4c\xcd\xa8\x8a\x7f\x5d\x83\x1d\x6d\xe3\xd5\x63\xdd\x10\x2e\xae\xb1\x08\xc5\xbd\xce\x44\xe0\x63\x2d\x17\xe6\xfa\x55\xb1\x80\x67\xdf\x2f\xa8\xd2\x00\xa9\x86\x9f\x6a\xff\x92\x0c\x51\xd4\x6a\x1c\xed\x2d\x90\x3b\x1d\x9b\x6b\x07\x5f\xac\xbf\x91\xcd\x05\xeb\x41\xad\x81\x1a\x8e\xf4\x0d\x91\x18\x26\x10\x12\xc7\x2b\x89\x79\xf1\x51\x53\xdb\xb8\x56\x12\x93\xda\x9f\x8b\x77\xc8\xff\x14\xf7\x53\x87\x53\x6f\x00\x36\xd1\x71\x3a\x72\xce\x8c\x35\xb1\x06\x2f\x2c\x67\x32\xae\xbf\x32\x93\x67\x99\xb5\x1c\x2c\xbc\xd6\x57\x24\x13\xe7\xdf\xaa\xb8\x64\x1a\x02\xc1\x50\x23\x73\x81\xcf\x7a\x14\xe2\x2c\x74\xc6\xc2\x00\x09\xde\x7d\x3b\x7e\x69\xcd\x1b\x45\x84\xac\x2c\x01\xba\xba\xf9\x73\xc5\x6b\x38\x14\xbb\x00\x89\x72\x0e\x41\x96\x81\x06\xcf\x26\x50\x9d\x4a\xa5\x46\xfc\xad\x55\x34\xaf\x30\x3f\xfc\xa4\x2b\x16\xae\x6c\x93\xee\x06\xbc\x3c\xac\xe1\x2e\x4e\xc7\x18\x84\x4b\xd3\x0d\x22\x24\xcc\x48\x6d\x10\x6d\x1c\x45\x6b\xfa\x16\x5e\xa0\x12\x0f\xab\x3d\xf2\xc5\xab\x3a\x52\x3b\xbf\xa7\x89\xde\xed\x44\x03\x2a\xb0\xbe\x86\xeb\x7c\xc0\x9c\xdb\x7c\x07\xaa\x94\x8d\xd5\x27\x7c\x3d\xf1\xd9\xd1\x84\x35\x67\xde\xc8\x4f\x92\x88\xe0\x85\xb0\x5a\xe4\xb8\xaf\x2c\xea\x5d\x9a\x18\x4d\x50\xbe\xf8\x55\x50\xc8\x36\x61\x3d\x5d\x3a\xf5\xf9\xc2\x92\x8e\x6a\x89\x66\x0f\xa6\x27\x19\xeb\xff\x77\x3e\x46\xb7\x7e\x34\xbc\x04\x70\xda\x4d\x2c\xdb\xc7\x07\x1d\xa7\x58\xc4\xd3\x9f\xe6\x52\x01\xc8\x8a\xaa\x8e\x66\x03\xd0\xbb\xe7\xc3\xe9\xb2\xd9\xe4\x1b\x63\x46\x82\x09\x2f\x14\x73\x41\xad\x6d\x66\x7f\x20\xc6\x4e\x81\xa6\x8d\x62\x94\x67\xa5\x4d\xd8\x6e\x1c\xe1\x2c\x56\x0a\x6f\x9b\x64\x51\x2d\x6f\x38\x86\xcb\xb9\xf3\x7c\x37\xeb\x39\x85\xc8\xac\x38\xdd\x66\x82\xf4\x8f\xe1"}, +{{0xfa,0x1e,0x11,0xdc,0x83,0x64,0x20,0x8d,0x8e,0x1c,0xb6,0x6a,0x36,0x1b,0xe7,0xe8,0x4c,0x5e,0x36,0x81,0x66,0x58,0x7d,0x4f,0xdb,0x06,0xac,0xed,0x7f,0x62,0xe1,0x7c,},{0x4d,0x8e,0x6f,0x4b,0x34,0x15,0xdf,0x6c,0xed,0xab,0xfb,0x29,0x5c,0x19,0x84,0xfd,0x41,0x99,0x23,0xc6,0xac,0x41,0x76,0x4e,0x32,0xd2,0x2d,0xaf,0x37,0x2c,0x50,0xfc,},{0xe8,0x57,0xdb,0x08,0x7e,0x28,0xd6,0x75,0x0b,0xf5,0x4e,0x53,0x79,0x72,0x51,0xd8,0x43,0x99,0x89,0x57,0x6c,0x12,0xda,0x2d,0x9c,0x81,0x1a,0x14,0x87,0x7c,0x3b,0xd4,0x6c,0x4e,0xfa,0xb8,0x61,0xa1,0x0e,0xeb,0xe7,0xda,0x04,0xc0,0xb0,0xb4,0x45,0xc7,0xa3,0x90,0xa5,0x0c,0x13,0xde,0x36,0xf3,0xa3,0xc7,0xae,0x01,0x57,0x02,0x2c,0x0e,},"\x29\x4e\x63\xba\xcc\xcb\x80\x1b\xbf\x04\xc1\xf1\x9d\x0a\xee\x16\xf5\x65\x0a\x6e\x8e\xea\x6f\xe4\x11\x10\x66\x3e\xc0\x15\x32\xbd\x49\x60\xa5\x27\xf1\x5e\xca\x4a\xf2\xf4\xe6\xb7\xb0\xfc\x34\x0c\xf9\x7a\xa2\x34\xe9\x2c\xf7\xd6\x9d\x50\xe4\x00\x9c\x24\x96\xe3\xed\x4d\x9a\xff\x00\x0f\x9e\x18\x52\x75\xb8\x17\xd2\x6a\x0b\xab\x69\xb7\xf7\xee\x1e\xa3\x0d\xae\xc8\xbc\xee\x38\x7a\xe4\x6b\x4b\x29\x9c\x27\xbd\xc0\x6e\xea\x63\xf2\x4d\xbe\xe9\x55\xa6\xc0\x96\x90\x37\xee\xf9\x1c\x34\x32\x1e\x3c\x5c\x97\x2f\xde\x99\x31\x83\xb7\xd2\x3f\x6e\x01\x9c\x3e\x0c\xac\x75\x89\xae\x4a\x15\x21\xaf\x87\xea\x42\xdf\x8c\x22\xc2\x27\x0e\xc2\x3d\x6d\x14\x0f\x9c\xf6\xd4\xd5\x2f\xac\x1b\x9d\x6c\x89\x39\xef\x81\x31\xcb\x62\xa0\x35\xc5\x26\x15\x38\xbc\xdf\xd6\xdb\x41\x9a\x55\xef\x9f\xe5\xd7\xa5\xac\x44\x57\x9d\xe7\x00\x85\x8d\x74\xa3\x43\x48\x44\xf2\x83\x42\xc5\x65\x89\x27\x22\xe2\x7f\x40\x7d\x7f\x17\xb7\x4a\x59\x34\xbe\x91\x5b\x20\xc2\x40\x06\x43\x23\x5f\x8a\xb5\x79\x5f\x32\x4e\x33\xc5\x06\x44\xa0\x40\x33\x54\x2c\xb3\x81\x6d\x77\x0f\xa8\x99\xe7\x31\x1c\x14\x30\x1c\x1b\xd0\xf5\xaa\x60\xa2\xeb\x31\x65\x68\x0c\x72\x0e\x1e\xfa\x80\x96\xfc\x25\xd2\x77\x92\x75\xf1\x84\x2b\x2d\xb5\x3b\x4d\xa0\xad\x3e\x59\xc0\x75\x40\xc2\x84\x60\xce\xc1\xfd\xd3\xcd\xb7\xa3\x47\x8b\x91\xa9\xca\xf9\xac\x89\x1c\xdf\x3a\xea\xee\xca\x9a\x96\x56\xac\x13\x07\x25\x99\x22\xfc\xa7\x4c\x5c\xc6\x9f\x7e\x25\xc6\xbf\x58\x79\x73\xa4\xb7\xd3\xe3\xac\x06\x35\xb0\xdb\x22\xa0\x09\x3a\x79\x07\x68\x81\xc7\x17\x36\xee\x1d\x4d\x45\xf8\xed\x2d\x29\xa0\x67\x1a\x64\xe6\xca\x2f\x7a\x5e\xf4\x04\xb1\xed\xeb\x84\x20\x34\xf5\x71\xb6\x99\xbc\x59\xe5\xa3\x7d\xf0\x20\x54\xe8\x48\x2b\xf1\xe7\xb7\x7d\x8e\x83\x97\xda\x15\xd8\x9d\x73\x55\xa5\xdc\xe8\x6b\x16\x83\xa9\xac\x4e\x40\x6c\x08\xa9\x4a\x6e\xb0\x0e\x5a\xe1\x6d\x96\x72\x29\x72\xe5\xc5\x0c\x7b\xee\x4a\x84\xd0\x69\x7b\xbe\x67\xce\xb7\xef\x29\x5f\x06\xaa\xea\x5a\xbb\xa4\x44\x66\xbe\x0f\x67"}, +{{0x24,0xa9,0x14,0xce,0xb4,0x99,0xe3,0x75,0xe5,0xc6,0x67,0x77,0xc1,0xed,0x20,0x43,0xbe,0x56,0x54,0x9d,0x5e,0x50,0x2a,0x84,0x47,0x10,0x36,0x40,0x42,0xba,0x9a,0xcb,},{0x20,0xd2,0x1e,0xe7,0x64,0xb1,0xf3,0x5f,0x94,0x56,0x82,0x00,0xd6,0x3b,0xd5,0x82,0x8a,0xca,0x8c,0x5d,0x3e,0x90,0x47,0xd2,0x3f,0x47,0x8b,0x92,0x52,0x95,0xfa,0x2e,},{0x3a,0xe0,0xcc,0x7b,0xca,0x8d,0x73,0xbe,0x83,0xa9,0xb8,0x09,0xb1,0x33,0x38,0xc1,0x27,0x06,0xaa,0xef,0x75,0xc4,0xd1,0xa4,0x78,0x17,0x8f,0x9d,0xc5,0x65,0x51,0x4c,0x75,0x29,0xe2,0x98,0x04,0x3e,0xa7,0x8d,0x21,0xa5,0xa0,0x9d,0xd0,0x4f,0x10,0xae,0x87,0x44,0x1e,0x56,0x86,0xa9,0x33,0xc9,0x2c,0x75,0x54,0x84,0x27,0xad,0x3a,0x03,},"\x3f\xf9\xf6\x6f\xa2\x64\x6e\xc6\x6a\x1b\xf9\x33\xc2\xb4\xcc\x0f\xbf\x91\x2b\x4d\x6d\xb5\x05\x34\x25\x7f\x97\xd0\x1e\x69\x8d\x05\x48\x57\x47\xde\x25\x44\xe9\xf5\xa4\xa4\xa0\x75\x38\x8c\xf4\x40\x0a\xb8\x9b\x03\x53\xce\x86\x19\x82\x02\xdb\x3a\x90\x37\x67\xb8\x79\xa2\xaf\x9d\xaa\x15\x58\x43\x11\x1a\xf1\x5a\x2b\xc3\x5e\xfe\x41\xbc\xc9\x2c\x82\x07\xe0\x01\x13\xb0\x4f\x13\x03\x00\x79\x49\xff\xb6\xce\x8d\xf4\xb0\xb3\x42\x48\xfe\xdf\x5d\x9c\xb2\xce\xe9\x4b\x81\x2e\xd5\x8e\xce\x2a\x0c\xe0\x45\x4c\xf1\x4c\x20\xe4\x9e\x09\xfe\x66\x4d\x6e\x25\x76\x2e\x87\x89\x59\x32\xcd\x5c\xd3\x2e\xb6\xa3\xab\xb3\x8e\xe1\x63\x07\x8c\x13\x3e\x93\x58\x87\x91\xdb\xf6\xaf\x49\x9a\x31\xea\x44\x53\xbb\xcc\x7a\x85\xe4\x06\xc9\x84\x8a\x66\x40\x52\xf1\x11\x13\xfb\xb4\xff\xa7\x60\xde\xe4\xc2\x61\xe3\x96\x94\x24\x91\x11\x9d\xa2\x9a\x33\x58\x2f\x82\x1d\x41\x25\xe0\xb4\x16\x2f\x28\xbe\xb0\x66\x03\x1a\x65\x2d\x05\x74\x9a\xa7\x24\x4d\xd4\xf3\xd3\xbb\x15\xd2\x68\x32\x8d\x6a\x02\xfc\xe2\x50\x18\x15\x25\x7f\x8a\xd5\xaf\x4e\xcb\xe7\xcb\x8a\xe9\x66\x1e\x34\x4f\x90\x72\x31\x87\x91\xf3\xe8\x59\x09\x11\x21\xe0\x8a\xef\xca\x89\x82\xea\xaf\x66\x25\x9d\x9d\xe4\xf4\x6a\x31\xe7\x16\xdc\x03\x3d\x0f\x95\xd1\xfa\x93\x6b\x6c\x60\x79\xb1\x37\xdd\x11\x58\xd1\xde\xf1\x13\x01\x8c\x73\xf8\xeb\xb9\x80\x7e\x0f\x74\x15\x40\x4e\xa9\xc7\x85\x44\xac\xe7\xce\x46\x3c\xd1\xd1\xc5\x7e\x31\xf4\x09\x1b\xc0\x91\x80\x4c\xbc\xdd\xad\x0e\x15\xa4\x0c\xa9\x1a\xcb\xe1\xc6\x22\x4e\xd1\x3c\xaf\xb4\xdf\x2c\x84\xac\x9f\x0c\x3c\x9b\x54\x60\x07\xd9\xdd\x6e\x52\x4c\x46\x70\x72\x56\x3d\x4a\xc0\xd7\x00\xcc\x1b\xf3\x0f\xeb\xb3\x34\x31\x3d\xae\x57\x61\x74\x5e\xc0\xa5\xe9\xe8\x81\x50\x25\x95\x8f\x00\xfa\x2e\x58\x06\x0d\x7e\x9a\x5f\x2b\x72\x7f\x48\x69\x9f\x92\x9c\x84\x59\x93\x08\x92\x57\x3f\x78\x4f\xef\x56\x92\x51\x8b\x5c\xa2\x68\xe2\xa7\x3e\xbe\xad\x6e\xbd\xeb\x7e\xc2\x4e\xac\x92\xaa\x7d\xcb\x41\xb5\x98\xbd\x6e\xff\x36\x32\xd0\x69\x72\x62\x91"}, +{{0x55,0x32,0xe0,0x9b,0x93,0x7f,0xfd,0x3d,0x5f,0x4c,0x1d,0x9f,0x1f,0xfc,0xde,0xd2,0x6e,0xe7,0x4d,0x4d,0xa0,0x75,0x26,0x48,0x44,0x69,0x0b,0xd9,0xc8,0x61,0x39,0x94,},{0x50,0x93,0x96,0x9f,0x37,0x7b,0xec,0x3e,0x35,0xf5,0x9e,0xfd,0xa0,0x1a,0xb4,0x18,0x6c,0x5d,0x2a,0x36,0x74,0x0c,0xf0,0x22,0x67,0x5e,0x01,0x09,0x6b,0x1a,0x3f,0x0a,},{0xd5,0x27,0xff,0x0d,0x4a,0x21,0x9d,0x61,0xf4,0x18,0x12,0x12,0x06,0xa5,0x4a,0xe4,0x98,0x58,0x54,0xa3,0x10,0x48,0x27,0x44,0x48,0x6e,0x4d,0x13,0x0a,0x7d,0xe9,0x7c,0x31,0x9d,0xf8,0x37,0x2c,0x82,0x82,0x8c,0x93,0x6e,0x6a,0x8a,0xfd,0x9c,0x5d,0xe1,0x82,0x85,0x73,0xd8,0x26,0x1a,0xe9,0x36,0x5b,0x8f,0x23,0x76,0x76,0x18,0x24,0x02,},"\xad\xd4\xd7\xa9\xce\x3f\x63\xd1\xf9\x46\xe8\x67\x90\x65\x54\x5d\x8c\x7b\xf0\xa2\xcc\x3a\x4c\x00\xb8\xf1\x42\xf0\x94\x5a\xe3\x62\xc4\xc9\x46\x2a\x75\x76\xa4\x05\x9d\x57\x86\x16\x62\x88\x4b\xd8\x0b\x96\xd9\x0d\x27\x9a\x95\x2e\xda\x95\x2d\x37\xd4\xf9\x5c\xf0\xd7\x0d\xa9\x8f\x4f\xba\xca\x39\xe1\x69\xf9\xd9\x45\xd4\x1f\x87\x23\x97\xbb\xdd\x57\x01\x45\x43\x03\xd7\x7d\x31\xe8\x63\x48\x27\x1d\xa4\x0a\x1b\x8f\x1e\x57\xc3\x6f\xcd\x80\x3e\x14\xfa\x17\x71\x6c\x56\x31\xef\xa0\x1d\x3a\x79\x5d\xc2\x0b\x2b\xde\x36\xab\x73\xff\x6a\x2d\x53\x3b\xc1\x5c\xce\x22\x32\x87\x13\xc3\xc9\xcc\xd0\x72\xc3\xe4\x50\xd7\xf2\x2c\x0c\x9f\x94\x91\x97\x52\xcb\xfe\x45\xee\x65\x5d\x1b\x53\x67\x65\x93\xcd\xb4\x48\x70\x41\x02\x63\x1c\xaa\xa9\x76\x95\x2e\xaa\x1f\x6c\x2e\x87\x65\x64\xe4\x20\xf0\xc6\x46\xa0\xf8\x83\x65\xf7\x64\x15\xb4\x08\x5f\x60\xa3\x38\xb2\x9c\x51\x63\x3e\x54\x0f\x0b\xf3\x2d\x40\x87\xe7\xd0\xfb\x68\x5b\xe8\x8c\x75\x95\xdc\x53\x1c\x99\xb4\x89\x58\x45\x60\xad\x82\x34\xb1\x8e\x39\xa1\x07\xcf\x5d\x84\x2d\xab\xd4\x21\xe7\x7d\x26\xea\x5e\x0f\x14\x05\xce\x35\xfe\x79\x27\x14\xeb\x4e\xe1\xa8\x01\x76\x48\xac\x1a\xe7\x39\xa3\x3d\x7b\x1e\x08\x91\x05\xd1\xe5\xad\xd2\x7a\x62\xce\x64\x15\x45\x70\x34\x0a\xf9\xeb\x14\xe7\xfd\xfc\x2f\x9a\x2c\x2f\xcf\xcd\xac\x3c\xc4\x22\x77\x63\xf4\xd6\x29\x49\x74\x79\xf8\x49\x21\x6e\x5d\x90\xec\x16\xdf\xa3\x6b\x72\x51\x7f\x7b\x54\x86\xba\xee\x7f\xda\x44\x50\xc3\x52\xcf\xfb\xba\xe7\x39\x26\xc8\x43\x22\x4f\x8c\xe4\x4b\x38\xda\xe5\x3f\x3e\xad\x21\x89\x0b\x52\xa7\x80\x10\x75\x29\x16\x84\xfd\x59\x10\xed\x86\xad\x33\xe8\xa0\x07\xf6\xc3\xf8\x5c\x16\xb2\x09\x29\x37\x40\x18\x4f\x58\x90\x87\x4d\x43\x1c\xd4\xe0\xea\x40\x87\xc4\x9c\x34\x71\xd7\x89\xc8\x13\xc6\xdc\x9a\x78\x69\x93\x63\xa1\xd8\x71\x97\xd3\xb9\x2c\x02\x86\x68\x93\x11\x82\x3f\x4d\xf2\x2c\xe8\x03\x5e\x75\x73\x2c\xde\xa7\xf5\x62\x1f\x67\xdb\x0e\x2a\x4c\xa6\x61\x61\x93\x22\x1c\x0a\xa3\xd6\xde\x50\xd8\x52\x82\xee"}, +{{0xeb,0x36,0x51,0x10,0x09,0xd3,0x7a,0x9c,0x46,0xc4,0xd1,0x37,0x4d,0x0b,0xbd,0x0d,0x99,0x81,0xe7,0x8c,0xee,0x7d,0x18,0x8c,0x5a,0xab,0x98,0x3e,0xc2,0x39,0xe1,0x0c,},{0xb1,0xcc,0x21,0x2b,0x45,0x21,0xbb,0xe7,0xb1,0x9a,0x76,0x93,0x87,0x8a,0x55,0x84,0x40,0xee,0xc3,0x62,0x05,0xd8,0x43,0x9d,0x04,0x0a,0x46,0xa9,0x90,0x2f,0xbf,0x55,},{0x9f,0x58,0x37,0x24,0xde,0x55,0x2e,0xae,0x82,0xf2,0x54,0xac,0x6e,0x2e,0xd4,0x83,0xec,0x1a,0x07,0x34,0x62,0x66,0x73,0x5c,0x49,0x09,0x20,0x69,0x0c,0x1e,0x3f,0xb2,0xa9,0xe9,0xa3,0x41,0x94,0xed,0x64,0x73,0x73,0x3b,0x30,0x0d,0x4f,0x23,0xc9,0xae,0xc0,0xda,0x5a,0x20,0x22,0x05,0x4c,0xa4,0x38,0x85,0xa1,0x5a,0x29,0x84,0x32,0x0e,},"\xba\x24\x66\xe5\x6c\x1d\xf7\x7f\x22\xb6\xf0\x24\x1f\xc7\x95\x2a\xe9\xbc\x24\x75\x64\x19\xa9\x44\x6d\xd2\xb4\x9e\x2c\xb9\xdf\x59\x4e\x5b\x6c\x77\xa9\x5a\xa5\xfb\xd9\xdc\x57\xfe\xc8\x39\x62\xc7\x75\x1e\xeb\xb4\xba\x21\x82\x53\xf9\x16\xa9\x22\xa5\x13\x96\x63\xe3\x20\x3e\x3b\xe4\x82\xbe\x37\x9c\xa1\x51\xc4\x63\xd9\xad\xa2\x14\x46\x13\x5f\x35\x69\x94\xfa\x54\x49\xf0\x84\x47\x8f\x5b\xb4\xf5\xba\x61\x45\xc5\x15\x8e\xb7\xb1\xc4\x3c\x32\xeb\xea\x25\xe0\x9c\x90\x0f\x01\xef\x91\xe9\x2f\x88\xc0\x3c\x76\x50\x4a\xce\x96\x46\x01\x6f\xfc\x27\x89\x55\x9d\x0f\x3c\xc9\xd0\x0f\xb6\x1b\xdc\x6a\xf7\xd3\x94\x0f\x30\x2e\x58\x8e\x04\xf7\x9f\x7b\x3d\x4b\x91\xa5\xd1\x93\xa4\xf8\x22\x2b\xfe\xb6\x9b\xf0\x34\x7d\x98\xad\x81\xef\x99\xd1\x30\xeb\xc7\xb3\x6b\x07\x83\x39\x4e\xea\x92\xa3\x8d\xdd\x5e\x74\x80\xd2\xad\xd4\xe4\xde\xf5\x3e\xb9\x9c\x44\x9b\xff\x94\xe4\x71\x8b\x09\xf2\xea\x9b\x1f\x2b\x88\x65\x94\xa9\x5c\x33\xa6\x9e\x03\x33\x15\x4e\x44\x0a\xb3\x4b\x7b\x6c\x11\x34\xd8\x17\x9b\x6f\x0c\x56\x25\x1a\x9a\xd8\xe1\xb6\xb0\xf9\xb8\xa5\xc9\x70\x81\xa7\xf8\xfd\x05\xd0\xb0\xaf\xfc\x82\xdb\xdd\xc8\xb0\xc0\xab\x7e\x83\x3f\x30\x06\x26\xd4\xb9\x73\xb3\xf6\x0f\xea\xc5\x55\x71\xe8\x9c\xda\x0f\x2b\x44\x1e\xd2\xfa\xa6\x69\xa7\x0d\x55\x6c\xb4\x8f\x9b\x1d\x1c\xbc\xe3\x2e\xde\x5d\x16\x6b\x11\x43\xe2\x64\xb1\x1e\xa3\x27\x68\x1c\xb5\x59\xed\xd1\x3c\x36\x4b\xd2\xba\xf1\xfd\x54\xbb\x78\x18\x07\xbd\x59\xc8\x68\xb0\xe4\x79\x5a\x77\x9e\x67\xf0\xbd\x0d\x14\xb5\xa6\xb9\xe4\x40\xb5\x7a\x58\x23\x32\x8b\x59\xaf\xfb\xd0\x27\xed\xa7\xdd\x78\x50\x79\xc5\xf0\x2b\x5e\x32\x89\x0b\x03\x87\x30\x98\x6a\x39\xa5\xa9\x83\x4a\x3f\xed\x86\x8b\x6f\x45\xcb\xdd\x28\xac\xb2\x70\x9a\xff\x55\x62\x63\x86\x4f\x9a\xe1\xe7\x57\xb3\x27\x8c\x28\x8d\xbe\x29\x32\x82\x57\x12\x77\x3e\x43\x1f\x7c\x29\x32\x98\x57\xfd\xae\xa7\x98\xed\x93\x92\x08\x93\x63\x14\x02\xe6\xb1\x3b\xab\x62\xb4\x85\x54\x61\xed\xb9\x46\x20\xf2\xd1\x75\x18\x65\xf4\x45\xc4\x66"}, +{{0x7d,0xbc,0x81,0x90,0x2e,0x4e,0xaa,0xb3,0x07,0x75,0x40,0xf5,0x59,0x99,0x5c,0x38,0x74,0x03,0xca,0xc3,0x06,0xd4,0x86,0xe9,0x59,0xc5,0xeb,0x59,0xe4,0x31,0xc0,0xa8,},{0xe0,0x30,0x66,0x13,0x90,0x82,0xf6,0x13,0x44,0x8b,0xdb,0xc2,0x7f,0xe5,0x3a,0xa3,0xf8,0x89,0x94,0xc3,0x1d,0xdc,0xe0,0x02,0xe3,0x6b,0xbb,0x29,0x63,0xdf,0x3e,0xc8,},{0x5b,0x7f,0x65,0x2f,0x08,0xf2,0x29,0xfd,0xa1,0xb0,0xbd,0x75,0x93,0x77,0xb3,0xfb,0x72,0x6c,0x1b,0x9c,0x9a,0x10,0xef,0x63,0x42,0x6d,0x35,0x2d,0xd0,0x86,0x9b,0xd5,0x4d,0x87,0x6c,0x30,0x92,0xf1,0xcd,0x41,0x1c,0x37,0x57,0xd3,0xc6,0xb6,0xea,0x94,0x2a,0xa7,0x0c,0x3a,0xae,0xb4,0x21,0x7a,0x4c,0x73,0x64,0xd1,0x8e,0x76,0xe5,0x0f,},"\xdf\xf7\x98\xb1\x55\x7b\x17\x08\x5a\x06\x34\x37\x1d\xed\x5d\xdf\x7a\x5a\xcb\x99\x6e\xf9\x03\x54\x75\xe6\x82\x63\x36\xf6\x4a\xd8\xb8\x4b\x88\x2e\x30\xba\xde\xc2\xb4\xa7\x11\x99\x87\x52\xf4\xa1\x57\x4b\xc1\xf8\x9d\x43\x25\xcf\x2b\x39\x86\x10\x44\xdd\x03\x69\x1e\x71\xd0\x77\x68\xb5\x93\x3a\x30\x52\xcc\x7c\x81\xd5\x71\xa9\xde\x06\x1d\xc1\x90\x26\xc2\xf1\xe7\x01\xf2\xdc\xf2\x6a\x88\xd3\x40\x1b\xc9\x9f\xb8\x15\x59\xdc\xa7\x6d\x8a\x31\xa9\x20\x44\xa2\x73\x58\x7d\x62\x2a\x08\xd1\xcc\xe6\x1c\x8f\x94\x8a\x34\xde\xd1\xac\xb3\x18\x88\x1c\x9b\x49\xf6\xf3\x7c\x30\xa6\x5d\x49\x5b\x02\xd5\x42\x9e\x7a\xb4\x04\x0d\x8b\xeb\xeb\x78\x79\x4f\xf7\x36\xd1\x51\x10\x31\xa6\xd6\x7a\x22\xcd\xf3\x41\xb9\x80\x81\x1c\x9d\x77\x5f\xb1\x9c\x64\x78\xf0\x5e\xd9\x84\x30\x10\x3e\xa2\x4c\x0f\x41\x4d\x4c\xc0\x7d\x86\x0b\x72\xdc\x54\x2f\xf2\x2d\x83\x84\x5a\x42\xf8\xba\x45\xca\x7f\xf3\xaa\xb0\xb1\xe7\xde\x2b\x10\x94\xde\xac\x08\xd1\x6e\xee\x01\x96\x9f\x91\xbc\x16\xfe\xc2\x9c\xcc\x06\x1c\x54\xdb\x53\x45\xba\x64\x84\x2d\xac\xc9\x9e\xe7\x72\x94\x68\xd8\x0a\x3f\x09\x55\x83\xd8\xe8\x01\x24\x08\x51\x9d\x58\x2c\xc3\xff\x9a\x2e\xb7\xae\xba\xa2\x2d\xb8\x1f\xfc\x78\xee\x90\xef\x4e\xc5\x89\xdc\xce\x87\x11\x8d\xab\x31\xa6\x32\x8e\x40\x9a\xd5\x05\x9a\x51\x32\xc8\x2d\xf3\xce\xfe\x2e\x40\x14\xe4\x76\xf0\x4c\x3a\x70\x18\xe4\x52\x67\xec\x50\x18\xec\xd7\xbf\xf1\xdd\xa9\x26\x7e\x90\x66\x6b\x6b\x14\x17\xe8\x9d\xda\xcb\x50\x85\x94\x3b\xef\xc7\xad\x2f\x4d\xf5\xf1\xee\x0a\xf9\x43\x1a\xee\xb6\xb2\x4a\x55\x15\xb9\x3d\xbc\xf6\x86\x40\xf7\xda\xf8\xc9\x61\xe5\x67\xd7\x53\x49\x00\x20\x5c\x3d\xf2\x18\x4b\x6a\xc2\xda\x96\x1c\x4c\x1d\x2b\xc4\x9b\x4e\xa9\x6b\x81\x54\xff\xd4\xef\xff\xdc\x5e\x55\xa7\x11\x9c\xb8\xaf\x42\x9e\x85\x10\x5d\xff\xd4\x1f\xe4\xa2\xeb\xba\x48\x16\x8a\xa0\x5f\xa7\xdf\x27\xc4\x29\x87\x35\xff\x86\x8f\x14\x96\xbe\xb4\xb2\xed\x0b\x89\x80\xc7\x5f\xfd\x93\x9d\xdd\x1a\x17\xe4\x4a\x44\xfe\x3b\x02\x79\x53\x39\xb0\x8c\x8d"}, +{{0x91,0xb0,0x95,0xc8,0xa9,0x99,0xe0,0x3f,0x3e,0xd7,0x49,0xcd,0x9f,0x2f,0xaa,0xcc,0x00,0x76,0xc3,0xb4,0x77,0xa8,0x7a,0xb5,0xcc,0xd6,0x63,0x17,0x38,0x76,0x74,0x46,},{0xda,0xd1,0x74,0xd3,0x59,0xda,0xec,0xca,0x9c,0x6b,0x38,0x9b,0xa0,0x96,0x45,0x2a,0xb5,0xca,0x91,0xe6,0x38,0x3c,0x6d,0x04,0x2a,0x28,0x4e,0xce,0x16,0xba,0x97,0xb6,},{0x64,0xee,0x9e,0xfd,0xb0,0xc2,0x60,0x1a,0x83,0x5f,0x41,0x85,0x20,0x64,0x1e,0x43,0x6c,0x7d,0xd4,0x7c,0x33,0x3d,0x9f,0xc3,0x0c,0xfb,0xb9,0xe3,0x90,0xfe,0x76,0x45,0x30,0x65,0x47,0x08,0xb4,0x0b,0x03,0x58,0x18,0x99,0xa9,0xac,0x87,0x0e,0xfd,0x76,0x6f,0xfb,0xb4,0x63,0x71,0x52,0xf8,0xff,0x27,0x79,0x64,0xfe,0x35,0x42,0x52,0x09,},"\x9b\x0d\x8b\x00\x29\x98\x52\xd6\x8b\xbf\x49\x7f\xe6\x03\x96\x1a\x48\x54\x66\xa9\x9a\x54\x84\x00\x5d\xb7\x3d\x4e\x4b\xad\x81\x4e\x85\x74\xef\xd5\x4d\x64\x8b\xd5\xc9\x1a\xe8\x48\x3c\x54\xb2\xf9\x98\xb0\x2e\x1a\xbd\x6f\x40\x1a\x25\x52\x68\x43\xa5\xf2\xa2\x3a\x97\xbd\x58\x9d\x1f\x7e\x1a\xb1\x49\x15\xb1\xe3\x59\xa3\x96\xd3\x52\xc3\x60\xae\x65\x84\x32\x5a\xe4\xbb\x7d\x62\x4f\x61\x25\x5c\x5c\x7b\xf0\xa6\x7a\xca\xb4\x6c\x3b\x57\xb3\x45\x34\xc0\xee\x84\x31\xd2\x60\x57\x66\x06\xcb\xd8\x4d\x8d\x18\x39\xe7\x3d\xa6\xfe\x4b\x0b\x8b\x78\xf0\xf9\x58\x82\x7c\x2f\x1d\x93\xba\x7a\x34\x6d\xcc\x75\xcb\x56\x3d\xff\xde\x26\xf9\x97\x59\x8e\x8b\x5c\x2f\x16\x17\xc6\xfe\xfc\x9b\xe4\xb2\x8b\x54\x01\xb0\x00\x64\x13\xa2\x51\x69\x0d\x12\x03\xaa\xae\x4f\x6d\x8a\x3f\xb2\x1f\x24\x00\x9a\xb3\xbf\xf1\x37\x37\xa8\xa7\xe6\x64\x6c\x02\x73\x2d\x9e\xc5\xa4\xa5\x10\x46\x9e\x2d\x29\x9e\x4c\xc1\xad\x64\x80\xa4\x82\xaa\x95\x6f\x89\xdd\xcc\xcc\x64\xa1\x36\xfb\x15\xb8\x76\xb6\xec\xd8\x8c\x7c\x86\xa4\xdf\xc6\x0e\x66\x62\x07\xc6\x04\x16\x7d\x16\x34\x40\xca\x9a\xb9\xcf\x87\xa5\xe0\xf7\xbb\xc5\x51\x7d\xe4\xde\xe8\x76\xc0\x37\xf8\xcc\x9d\x95\x9c\x8f\xf5\xdb\xe9\x44\xff\x54\xcd\x91\xa7\x71\xe2\x92\x31\xf8\xb5\xf1\x7d\x61\xde\x90\x4c\x95\x5f\xe2\x02\x5d\xc5\x2e\xd4\x80\xfb\x3c\xc9\x0f\x23\x24\x59\xc6\x07\xef\x7e\x2a\xdb\x52\xc7\x48\x2b\xec\xd6\x7a\xd2\x14\x9a\x41\x28\xf9\x84\x03\x8b\x58\xaa\x90\x17\x67\x82\x39\x36\x04\xaa\xc7\x4c\x18\x20\x9a\x3d\x6a\x78\x63\x0c\x01\x95\x5a\x7c\xec\xe5\xda\x83\x84\xda\x3b\xaf\x63\xaa\x2d\xdf\x59\x63\xfa\xe0\x5b\xa3\xb8\x1c\x6a\x03\xd8\x6a\x00\xef\x78\xed\xb4\x18\x4f\xdc\x89\xb1\xd6\xbf\xeb\x31\x0f\xd1\xb5\xfc\xce\x1e\x21\x95\x24\xa3\xcf\xb2\xe9\x72\x57\x7f\x06\xb1\xdd\xde\xba\x00\x86\x5d\xae\x49\x79\x00\x0c\x00\x8a\xd9\x9f\x3b\x63\x8c\xce\xb8\xe8\xc7\xa0\xf9\x98\xd3\x4d\x92\x14\x3d\x81\xc0\xe1\xc0\x96\xa9\x25\xce\xba\x65\xc4\x30\x03\xee\x18\xd4\x94\xd0\x03\xe9\xc6\x1f\x77\xd6\x57\x59"}, +{{0x8c,0x56,0x8b,0x31,0x0a,0xce,0x7d,0x1f,0x0e,0xde,0xce,0xfd,0x60,0x3a,0x88,0x40,0x00,0x54,0x4c,0x79,0x25,0x65,0xd4,0x81,0xc3,0xd3,0xe0,0x6e,0x2d,0x82,0xca,0x96,},{0x5f,0xa6,0xe2,0x67,0xc7,0x66,0x73,0x68,0x41,0x41,0x10,0x72,0xd1,0x98,0x3d,0x19,0x00,0xac,0xf0,0x1d,0x48,0xc3,0xce,0x11,0x77,0x0b,0x26,0xf7,0x8d,0xa9,0x79,0xf7,},{0xde,0xbd,0xd8,0xe5,0xd3,0x11,0x2f,0xd7,0x7b,0x39,0x4a,0xa0,0xe3,0x6e,0x94,0x26,0xba,0xc9,0x1d,0xf1,0x26,0xfa,0x9c,0x31,0x7c,0xea,0x7c,0x9d,0x45,0x95,0x7c,0xdd,0x96,0xa4,0x5a,0xe3,0xad,0x76,0x04,0x13,0xee,0x12,0x05,0xaf,0xd7,0x1a,0x29,0xf9,0xc3,0xcb,0x58,0x6c,0xd2,0xd7,0xcd,0x1e,0x93,0xbc,0x16,0x52,0xfc,0x34,0xdc,0x04,},"\xb5\x9f\x5f\xe9\xbb\x4e\xcf\xf9\x28\x95\x94\x72\x1f\x26\x47\x04\x7b\x0d\xa5\xe0\xe4\x94\x1b\xbe\x57\xc5\xb7\x22\xb4\x76\x72\x3f\x0a\xc5\x97\x0b\x41\x11\xf8\x93\xbc\xaa\x41\x1f\x28\xfc\xeb\x4f\x58\x5a\x2a\x71\x87\x01\x8a\x90\x4b\x70\xef\x8f\xe1\xf6\x56\x9a\x54\xd0\x0a\xda\x37\xb6\x9c\xb5\xe9\xc9\xd2\x6c\x16\xa9\x03\x51\x81\x48\xe0\x4a\x1b\x93\x6a\x32\x32\x9c\x94\xee\x1a\x8f\xb6\xb5\x91\x89\x2c\x3a\xff\x00\xbf\x6e\x44\xdd\x0a\x76\x2b\xab\xe8\x9d\x70\x60\xc1\x7b\x90\x39\x0d\x23\xbf\x9d\x36\x0a\x29\x3b\x83\x08\x38\x30\x86\x91\x6e\x11\x82\xb1\xba\x43\x36\xf0\x01\xb8\xd2\x0d\xea\xe9\xa0\x29\xf7\xe8\x53\x97\xa9\xae\x5c\xf3\xca\x10\xc7\xf3\x87\x55\x88\xb8\xff\xab\xb0\x63\xc0\x0c\xa2\x6f\x58\x0f\x69\xed\xc5\x27\xa1\xac\xcf\x4f\x41\x39\x7b\x33\x76\x6b\xcf\x6d\x55\xeb\x8d\xe0\x81\xa4\x8c\x98\x1d\x05\xc0\x66\x61\x7b\x80\xd8\xf6\xf5\xe6\x0e\x59\xdd\x9b\x93\x0b\xc4\xd0\x45\x86\x40\x3b\xb8\x68\xdf\x75\x93\x3b\xdd\x86\x23\x0e\x44\x70\x36\xc1\x75\xa1\x0d\xe9\xbb\x39\x95\x3d\xcb\x19\x66\xa1\xf1\x19\x12\x07\x8e\x35\x8f\x48\xc5\xb2\x09\xa6\x36\xc7\xf7\x83\xf4\xd3\x6a\x93\xad\x2c\xc2\xe3\x24\x45\x19\x07\x8e\x99\xde\x1d\x51\x58\xb3\x96\x1e\x0f\xc5\xa4\xf2\x60\xc2\x5f\x45\xf5\xe8\x58\x5e\x60\x1d\xb0\x8b\xa0\x58\xd2\x90\x9a\x1b\xf4\x99\x5f\x48\x13\x46\x0d\x36\x95\x03\xc6\x87\x36\x85\xeb\xcd\x33\x30\xa1\x30\xb7\x5f\x23\x65\xfb\x2a\x5a\x34\xea\x63\xd9\x58\xa2\xa8\x67\xe9\x05\x52\xd2\xce\xc8\xc3\x90\x08\x4b\xe0\xc1\x08\xb0\xfd\x2d\x83\xcb\x92\x84\xdb\x5b\x84\x2c\xbb\x5d\x0c\x3f\x6f\x1e\x26\x03\xc9\xc3\x0c\x0f\x6a\x9b\x11\x8e\x1a\x14\x3a\x15\xe3\x19\xfd\x1b\x60\x71\x52\xb7\xcc\x05\x47\x49\x79\x54\xc1\xf7\x29\x19\x9d\x0b\x23\xe5\x38\x65\x40\x3b\x0a\xd6\x80\xe9\xb4\x53\x69\xa6\xaa\x38\xd6\x68\x5a\xbd\x39\x7f\x07\xfb\xca\x40\x62\x7e\xca\xf8\xd8\xd3\x01\x33\xa6\xd9\xd5\xaf\x00\x91\x92\x75\x1c\x9c\x45\xf7\x7c\x0b\xc0\x11\x26\x88\x00\xbf\x55\x25\x12\x73\x0e\x69\x97\x3c\x5b\xf3\x62\xab\x16\x48\x94\xbf"}, +{{0x3d,0x09,0xaf,0xce,0xe3,0xc4,0x32,0xfd,0xfb,0x6b,0xdc,0xea,0xd5,0x4e,0x3d,0xa5,0xb1,0xb4,0x16,0x5c,0x50,0xd6,0xd3,0x10,0xb7,0xfa,0xd7,0x87,0xb4,0x44,0xd6,0x80,},{0xb0,0xd9,0x02,0x8c,0x4d,0x14,0x87,0xd2,0x93,0xed,0x58,0x5a,0x76,0xbc,0x94,0xff,0xfb,0xaf,0xe2,0xc6,0x5d,0x98,0x0c,0x49,0x4e,0x14,0x1e,0x48,0x10,0xa3,0x5c,0xb9,},{0x89,0x73,0x9f,0xe4,0x41,0xca,0x0c,0xed,0x08,0xa6,0xeb,0x57,0x96,0xe9,0xbd,0xda,0x0e,0x74,0xfb,0x47,0x35,0x28,0xfd,0x49,0x07,0xed,0xb6,0x59,0xaa,0xb4,0x4d,0x33,0x43,0x22,0x90,0x46,0x71,0x63,0x68,0xfa,0xf8,0x8e,0x85,0xc1,0x64,0x4a,0xf6,0x6f,0xf2,0xdc,0xaf,0x0b,0x17,0xac,0x93,0xca,0x13,0x81,0x9f,0x3f,0x24,0x1d,0xd3,0x00,},"\x76\x71\x65\xca\xae\x0e\x57\x8f\x16\x53\x7e\x17\x50\xbe\x7d\xe8\x7a\x78\x9a\x51\xff\x2d\xe1\x18\x38\xf5\x64\xe2\x58\x0b\x23\x91\x36\x2d\x28\x68\xa5\xa4\x70\x8a\xf1\x5d\x2e\x2d\xb7\xb9\xbe\x39\xc1\x6a\xdc\xc1\x20\x0b\x34\xe6\xb4\xd4\x02\x7d\xdf\xfc\x1a\x2a\x35\x95\xe2\x9e\x85\x5e\xc5\x26\x1b\x20\xbd\x55\xc4\x28\xb0\x13\x09\xba\xdb\x59\xe2\xca\x3e\xdb\x96\x7f\xc2\xf4\xba\xc0\x72\x9d\xdf\x54\xfb\x6c\x20\x05\x7b\xdd\xa9\xe7\xaf\x7c\xbf\xc0\x92\xfb\xa8\x65\xfd\x32\x75\xb9\xd3\xbc\xb0\xc3\x46\xb9\x51\xd1\x70\xac\x9a\xa6\x50\xa8\x6d\xf4\x98\x55\xd4\x8a\x1b\x37\xce\x56\xc9\xf2\x73\x89\xf5\xc8\xb1\x5f\x5c\x2c\x90\x0c\x4f\x10\x7c\x06\x4f\x60\x3e\x4f\x86\x7e\xf2\xe9\xc1\x0a\x1b\x74\x21\x0e\x6b\x89\xbb\x01\x17\x93\xaa\x85\xde\xd4\x3b\x51\xb7\x49\xba\x7f\x70\x28\x7b\x6b\xc1\xb8\x94\x34\xdb\x8b\x8c\x8b\x5d\x73\xb2\x14\xb4\x1e\x36\xb5\x28\x00\x5b\xfb\xfe\x00\x2e\x21\xb1\x00\x6f\xb9\xd2\x4b\xab\xd7\x21\x06\xd0\x93\xe3\xc7\x09\x3b\x31\x38\xae\xa7\x19\xd6\x94\x79\x08\x46\x47\x49\x8c\xd6\xc9\xbb\xb7\x44\x50\x9c\xd7\xda\x8d\xd6\x1a\x62\x71\x00\xf0\x3c\x21\xe7\x50\xac\xb3\xfc\xf4\x63\x1d\x7c\x0f\x61\x81\x54\xd2\xe5\xfa\x66\x56\xfb\x76\xf7\x4c\x24\x79\x50\x47\xbb\xce\x45\x79\xeb\x11\x06\x43\xfa\x98\xe1\xf7\x76\xca\x76\xd7\xa2\xb7\xb7\xb8\x67\x81\x73\xc7\x73\xf4\xbe\x7e\x18\x2f\xd2\x4d\xd7\x62\x91\xac\x67\xd9\xf2\x6a\x28\xc5\xe3\xcb\x02\x5c\x68\x13\xa3\x78\xb3\x83\x22\x46\x42\xb4\xae\xfa\xd0\xc7\x6a\x65\x79\x51\x7b\x8f\x36\x07\x97\xdd\x22\x61\x3e\xe6\x82\xb1\x79\x38\x19\x50\xfb\x71\x60\x9a\x5f\xb5\x49\x4d\x2d\x57\xdc\xb0\x0f\x26\xd1\xe7\x29\x56\xf4\xd6\x67\x28\x30\xe0\x5c\x01\xb3\x77\x96\x77\xc0\x7e\xa0\x09\x53\xc6\xb8\xf0\xdc\x20\x4c\x8d\xbd\xcc\xb3\x81\xbc\x01\xb8\x9c\x5c\x26\x1d\xb1\x89\xab\x1f\x54\xe4\x6b\xc3\xed\xc4\xde\x5a\xd4\xf0\xeb\x29\xc0\xa1\x20\xe4\x37\xcd\x8f\x37\xac\x67\xd4\x8c\x7f\x0e\x73\x02\x78\x70\x8f\x02\xb5\x4a\xee\x62\xb7\x29\x52\xbc\x1c\x0e\xb4\x37\xca\x8b\xd5\x65\x54\x37"}, +{{0x41,0xc1,0xa2,0xdf,0x93,0x69,0xcd,0xc9,0x27,0x16,0x4a,0xa5,0xad,0xf7,0x75,0x71,0x36,0xab,0xe5,0x13,0x95,0x60,0x42,0x66,0x33,0x4c,0xc5,0x46,0x0a,0xd5,0x68,0x3e,},{0x40,0x55,0x78,0x34,0xcc,0xe8,0xe0,0x43,0x58,0x0a,0x42,0x72,0xa8,0x80,0x4d,0x4f,0x92,0x6e,0x88,0xcb,0x10,0xd1,0xdf,0x0c,0x5e,0x28,0xb9,0xb6,0x7e,0x1b,0x63,0xda,},{0xb8,0xb2,0x75,0x2a,0x09,0x71,0x96,0xc2,0x89,0x84,0x9d,0x78,0xf8,0x11,0xd9,0xa6,0x2f,0xc7,0x67,0x27,0x8f,0x0c,0x46,0x62,0x8b,0x52,0x1f,0x62,0xed,0x27,0x59,0xd7,0x44,0x62,0xa1,0x75,0xda,0x22,0x40,0x3f,0x15,0x02,0x04,0x45,0xca,0xe0,0x6d,0xa3,0xed,0x61,0xcc,0xa6,0x20,0x3b,0x70,0x06,0x36,0x2a,0x0e,0x19,0x89,0x63,0xd2,0x0e,},"\xb6\x4b\x14\xba\x77\xd2\x39\xe6\xf8\x1a\xbe\x06\x0a\xcc\xef\x85\xf0\x44\x2b\x65\x0c\x44\x01\x5e\xfc\x43\xa0\xaa\x2b\xa1\x0b\xf4\x8d\x30\x18\xb1\x95\x3d\xdf\xff\xbc\xda\x5b\xf3\xbb\xe0\xb6\xb3\xe4\xb0\xd9\xa3\x2c\x6b\x72\x5b\xbb\x23\x1e\x0a\x27\x04\x47\x1e\xe8\xbc\x1d\x59\x4f\x5c\x54\x22\x6f\x5d\xd9\xdf\xa1\x63\xcf\xc1\x45\x2c\x61\xf9\x3e\x4f\x81\x39\xab\x4c\xe4\x47\x6f\x07\xec\x93\x36\x61\xea\xe9\x1b\x6d\x50\x0b\xf5\x08\xac\x63\xe4\xba\xaf\x1f\xfc\x8f\x00\x07\xd8\x02\xe0\x05\xf1\xb4\xfc\x1c\x88\xbe\xe4\xd5\xe9\xe7\x63\x84\xf5\xa7\x04\x3b\xd6\x60\xcc\xe7\x1f\x3b\x67\xf0\x1f\x6a\xb8\x44\x29\x85\x31\xaa\xc7\x3a\x39\xd0\x45\x37\x00\x88\x85\x50\x05\xa0\x9c\x6d\x04\x23\x8e\xa4\x78\xdf\xac\xad\x1e\x6b\x22\xb2\xbe\x4c\x46\xb0\xd5\x9b\x1e\xba\x1f\x06\x0b\xf7\xda\x5d\x15\x66\xcf\x1f\xdb\x5c\x54\x3a\x33\x92\x6a\xf6\x3f\x01\xa0\xdb\x86\xe1\xa6\x71\x1c\x47\x3d\xc7\x95\xab\x28\x3c\x8d\x93\xfa\xcf\xb5\x70\x1f\xa2\xf2\xf6\xbb\x99\xf9\xb7\xe3\x74\x9b\x07\x1d\x58\x60\x7b\xe4\x4a\x70\x89\xbc\xb5\x03\xec\x14\x95\xb5\xfe\xed\xb3\x99\x96\x1f\xd3\x67\x7d\x74\x93\xea\xa3\xb3\xe9\xcc\x5e\x36\x42\xf4\x0d\x47\xde\x9b\xfe\xe7\xc2\x0b\x0e\x51\x9c\x4e\xb4\xa4\x0f\x4d\xa4\x46\xed\x6a\xc7\xaa\xca\x05\x3e\x75\x9c\x97\xda\xbe\x0a\x8e\xc2\xf5\x8e\x7f\x2f\x9b\x20\x72\x76\x2f\x9f\x79\x4a\x6a\x4e\x36\x06\x0b\x88\x72\xbd\x2c\x18\xd0\x6a\x85\xc2\xc1\x41\xa7\x82\x93\x77\x3e\xe8\xcf\xbf\x15\x4b\x99\x30\xcd\x39\xda\x31\xb4\x97\xe7\x37\xa7\x75\x0c\x90\xa1\x3f\x5a\xaa\x14\x7c\xd0\xdc\x43\x11\xf2\xe3\x49\x41\x25\x2e\xf1\x98\xb0\xc1\xf5\x08\x27\xe5\x6c\x9f\x16\xf5\x95\xac\xed\x6d\x2a\x69\x34\x65\x31\x49\x5a\x64\x99\x77\x4d\x36\x07\x66\xca\x9b\xe5\xed\x88\x81\xc0\xdb\x26\xed\x7c\x5e\x6f\xf3\xa4\xf9\xb7\x3c\xd8\xb6\x54\x64\x0d\xc9\x6b\xf4\x3b\xd4\x26\xa0\xf2\x8c\x9b\x25\xfa\x70\x4d\x62\xff\x02\x88\xfc\xce\xff\xaa\xeb\xd3\xea\x30\x97\xbc\xbb\xd7\x78\x42\x0e\xbc\x52\x0a\x41\x77\x30\xa1\xb5\xb3\xb8\xc9\x6c\xda\x9f\x4e\x17\x7d"}, +{{0xa0,0x06,0x11,0x48,0x94,0x67,0x12,0x2c,0x4c,0x16,0x4b,0xfb,0x6a,0x61,0x6e,0x6a,0x61,0x9b,0x9f,0x83,0xc4,0x36,0x72,0x06,0xb8,0x5d,0x3f,0xbe,0xc3,0x8c,0xd6,0x2c,},{0x57,0xab,0x58,0xba,0xbb,0x41,0xdc,0x0d,0xa0,0xbc,0xd5,0x06,0x05,0x9a,0xac,0x9f,0x46,0xec,0xa9,0x1c,0xd3,0x5a,0x61,0xf1,0xba,0x04,0x9a,0x9a,0xc2,0x27,0xf3,0xd9,},{0xc7,0x71,0xba,0x0a,0x3d,0x3c,0x4a,0x7b,0x06,0x4b,0xd5,0x1a,0xd0,0x5c,0x9f,0xf2,0x7f,0xd3,0x26,0x61,0x0f,0xbf,0xa0,0x91,0x83,0x03,0x9e,0x5e,0xdf,0x35,0x47,0x2d,0xde,0xd8,0xfc,0x22,0x75,0xbb,0xcc,0x5d,0xf1,0xbf,0x12,0x98,0x60,0xc0,0x1a,0x2c,0x13,0x11,0xda,0x60,0x2f,0xba,0xff,0xc8,0xb7,0x9c,0x24,0x9c,0x9c,0xc9,0x55,0x02,},"\x34\xdb\x02\xed\x75\x12\xbf\x8c\x67\xd3\x59\xe7\x20\x3a\x2e\xa4\x41\xe2\x0e\x72\x97\x66\xc1\x5a\xa0\x0f\xa2\x49\xa3\x51\x8f\xc2\x9e\xf8\x90\x5a\xa5\xb4\x67\x09\x58\xc6\xa4\x60\xd7\x7b\x3a\x80\xef\xcb\x47\x38\x59\xbb\xaf\xf8\x62\x22\x3e\xee\x52\xfe\x58\xac\xfd\x33\x15\xf1\x50\xf3\xc6\xc2\x7f\xf4\x8f\xca\x76\x55\x2f\x98\xf6\x58\x5b\x5e\x79\x33\x08\xbf\x59\x76\xba\xd6\xee\x32\x7b\x4a\x7a\x31\x32\x14\xb9\xae\x04\xb9\x65\x1b\x63\xcd\x8d\x9f\x5b\x3b\xec\x68\x9e\x0f\xd0\x00\xdd\x50\x17\x70\xdd\x0e\x99\xb8\xf9\x9e\xaf\xa0\x9c\x39\x6a\x24\x5a\x4a\x96\xe5\x68\x96\xa2\x9b\x24\x19\x0b\x1e\xf1\x10\x63\xf3\x9b\x63\xee\x3a\x58\x6b\x07\x62\x7d\xd3\x50\x0c\x4e\x17\x0b\x83\x5d\xc0\xec\x23\x6f\xa5\xa3\x5c\x44\x18\x47\x07\x56\x5c\x4a\x50\x66\x2d\x8d\xbc\xcf\xff\x7f\x9a\x7a\x68\xd0\x21\xb4\xaf\x64\xd5\x32\xb7\xc3\xd2\x74\x74\x18\xc2\xd7\x17\xbb\x6a\xca\x6b\x58\x74\x7a\xe4\xdd\x56\x41\xd8\x26\xf7\x9a\x8a\x31\x5c\x38\x21\x1a\x53\x8a\x92\x9e\x5b\x45\x1f\x62\x3f\x4f\xcb\xbc\xac\xdb\x86\xc8\x75\x2e\xa1\x3a\x61\x7a\xb4\x14\xab\x65\x3e\xb2\xe6\x8d\x54\x20\xdf\x7c\x6d\xf9\x24\x38\x16\x8d\xcf\x9c\x06\x65\x81\xdf\xe7\xb2\xc4\x68\x19\x4a\x23\x70\x7d\xe4\x65\x9b\xd6\x7e\xb6\x34\xff\x02\x47\x41\xc5\xfc\x86\x98\xfd\x4d\xc4\x1f\xe5\xdf\xc6\x29\x9b\x7a\x08\xe6\xff\xca\x37\x10\x9c\x02\x10\xc8\xf9\x4e\xa2\xd3\xdd\xc9\x77\xff\xc0\xb3\x79\x4f\xe6\xba\x43\x37\xc7\xaa\xb4\x34\xa6\x8a\xc6\x65\x48\x4e\xa8\x24\x3a\x84\xb7\x9a\xa1\x81\xee\x6a\xb5\xaa\x37\xa3\x2d\x87\x97\x25\xed\xc0\x18\xf8\x55\x21\x81\x81\x6d\x7d\x27\x2c\xa8\x81\x8a\x7b\x92\xe6\xee\x44\x54\xd1\xf7\x82\x8d\xd8\xaf\xba\x1a\x79\x03\x64\xb4\xff\x28\xd8\x4e\x02\x85\x97\x35\x3e\xbb\xef\x24\x83\x7b\xc3\x19\xe1\xae\x8f\x2b\x0b\x6a\x85\x1b\x48\x9c\x3e\x17\x0e\xef\x53\xe0\x65\xf7\x03\x26\x53\xcd\x6b\x46\xd8\xe5\x7e\x4e\x11\x1b\x78\x9b\xa9\x50\xc4\x23\x0a\xba\x35\xe5\x69\xe0\x66\x15\x40\x34\x07\xbc\xe0\x36\x9a\xaa\xb4\xea\xfa\xef\x0c\xae\x10\x9a\xc4\xcb\x83\x8f\xb6\xc1"}, +{{0xde,0x16,0x34,0xf3,0x46,0x0e,0x02,0x89,0x8d,0xb5,0x32,0x98,0xd6,0xd3,0x82,0x1c,0x60,0x85,0x3a,0xde,0xe2,0xd7,0xf3,0xe8,0xed,0xd8,0xb0,0x23,0x9a,0x48,0xcf,0xaf,},{0x9d,0xc1,0x46,0x5b,0x33,0x83,0xf3,0x7d,0xe0,0x0e,0xa2,0xd3,0xc7,0x0f,0x2c,0x8f,0xac,0x81,0x5f,0x01,0x72,0x02,0x9c,0x3f,0x57,0x95,0x79,0xc9,0x84,0xa5,0x89,0x5e,},{0xd2,0x05,0x06,0xeb,0x84,0x69,0x23,0xa0,0xb1,0x6f,0xf8,0x2f,0xb2,0xc3,0x92,0x3b,0x00,0xc1,0xb3,0xbc,0xc6,0xe2,0xf6,0x48,0x2f,0xba,0x24,0x80,0x75,0x21,0xe8,0xe0,0x22,0x3f,0x69,0x2e,0x62,0xea,0xc9,0x93,0xf4,0x98,0xf6,0x71,0x02,0xa0,0x4f,0xd1,0xac,0xf9,0xc7,0xe3,0x88,0x8d,0x85,0x7c,0x9a,0x08,0x0b,0x8a,0xf6,0x36,0x10,0x06,},"\xd1\x0c\x3e\x4d\xe7\xfa\x29\x89\xdb\xa8\x75\x37\xe0\x05\x93\xd0\xee\xd4\xd7\x5e\xe6\x58\x46\xda\xb1\x49\x8b\x47\x49\xd6\x4f\x40\xe3\x4b\x59\x11\xc5\xce\x3b\x53\xa7\xe3\x7d\x2d\x02\xbb\x0d\xae\x38\xed\x96\x2a\x4e\xdc\x86\xc0\x02\x07\xbe\xe9\xa8\xe4\x56\xec\xca\xe8\xbd\xf4\xd8\x7a\x76\x74\x60\x14\x20\x1a\xf6\xca\xff\xe1\x05\x66\xf0\x8d\x10\xda\xaf\x07\x71\x60\xf0\x11\xfe\xac\xa2\x5b\x9c\x1f\x6e\xca\x9f\xc5\x33\x14\xa8\x05\x47\x95\x17\x54\x35\x55\x25\x25\x7d\x09\xa7\xfd\xad\x5b\xc3\x21\xb7\x2a\xa2\x8d\x1e\x02\xd8\x69\x6d\x4f\x9e\xb0\xad\x3b\x21\x96\xf8\xbc\xfa\xeb\x1d\x61\x48\x28\x7a\x3f\xae\xfe\xf9\x1a\x7a\x3e\x06\x09\xc2\x8c\xe5\x9d\x0c\xa1\x4d\x0b\x30\x50\xdd\x4f\x09\x6b\x7b\xc2\x51\x39\x88\xba\x21\x21\x28\xd5\x02\x6d\xaa\xa7\x18\x88\x46\xdb\x21\xc5\xc1\xd1\x79\xab\x94\x87\xc1\xa5\xbd\x34\x65\x88\x12\x7c\x20\x39\x8d\x36\x2d\x4c\x75\x9c\xfa\xb2\xa6\x77\x75\x0b\x9e\x45\x67\x6a\x1e\x7e\x09\x2e\xf0\x2e\xdb\xf2\x78\xfb\x19\xa5\x8e\x9b\xf6\xc9\xe9\x96\xe2\x4e\xda\xd7\x3f\x3c\xe3\x1f\xa0\x4b\x6d\x85\x33\x43\x6b\xf8\x0b\x4b\x2f\x80\x5e\xd9\x1e\x7f\xcd\xa3\xbc\x2b\xab\x3b\x2b\xb1\x57\x15\x8a\xf0\xea\x8e\x3f\x07\x31\xdf\xad\x45\x9d\x2e\x79\xb6\xd3\x71\x5f\xe7\xbf\x1e\xaf\xc5\x39\x75\x93\x20\x88\x57\xe5\x7b\x7f\xeb\x2f\x73\x87\x94\x3a\x8e\x09\x13\x47\x0c\x16\x1a\xef\x4f\xe2\x05\xd3\x63\x7f\x23\x17\x7f\xf2\x63\x04\xa4\xf6\x4e\xba\x3f\xe6\xf7\xf2\x72\xd2\x34\xa6\x72\x06\xa3\x88\xdd\xd0\x36\x6e\x89\x4e\xaa\x4b\xb0\x5d\x73\xa4\x75\xf1\xb3\x4c\xa2\x22\xbb\xce\x16\x85\xb1\xb5\x6e\x03\x4e\x43\xb3\xc4\x0e\x81\xff\xf7\x96\x82\xc1\x9f\x32\xaa\x3f\x2a\x89\x5c\x07\x09\xf9\xf7\x4a\x4d\x59\xd3\xa4\x90\x29\xec\xfc\xb2\x83\x08\x2b\x06\x7f\x1a\x0d\x95\x05\x75\x0f\xd8\x67\x32\x19\x99\x48\x42\x49\xef\xa7\x25\xf5\x2c\x94\xc7\x59\x62\x06\xa9\x11\xf3\xf5\x05\xd6\x3f\x03\x13\x25\x4b\xd4\x45\xf0\x5b\xe3\x99\x6b\x58\xfe\x18\x19\xaf\x87\x35\x2e\x7f\x0a\x2c\xa3\x20\xd9\xcc\x00\xa5\xfe\x77\xad\x41\x64\x0d\x50\xbe\x84\x36"}, +{{0xc7,0x38,0xef,0x5f,0x09,0x35,0x28,0x1b,0xa6,0x25,0xfa,0x40,0x14,0xd4,0xa4,0xd0,0xbe,0x7e,0x28,0xfe,0xd7,0x79,0xa9,0xcf,0x65,0x8e,0x21,0xdb,0xa4,0x3c,0xeb,0xc1,},{0x95,0x79,0x9f,0xaf,0x70,0x6d,0x19,0x5e,0x54,0x4c,0x76,0xca,0xfd,0xdf,0x09,0xd0,0x2d,0x1b,0xea,0xfc,0x42,0xc9,0xd6,0xc9,0xea,0xd4,0xc1,0x84,0x55,0x87,0xd3,0x9e,},{0xf4,0x43,0x71,0xe6,0xc3,0x39,0x16,0x39,0xd4,0x57,0xed,0x14,0x64,0x81,0x84,0x80,0x94,0x11,0xe8,0x0a,0x32,0x01,0xf8,0x81,0x16,0x70,0xe5,0x00,0xfc,0xad,0x92,0xf3,0x00,0xaa,0xbf,0x7f,0xc6,0x8e,0x44,0x01,0x91,0xe8,0x81,0xd6,0xc3,0x47,0x4e,0xfd,0x6d,0x28,0xf0,0x9d,0xc4,0x43,0x12,0xfc,0xfc,0xb8,0x27,0x01,0xba,0x3c,0x29,0x0a,},"\x16\x8d\x0b\xc5\x59\x8b\xe0\x2f\x54\x43\xbf\xe7\xdf\xb8\x82\x99\x85\xca\x5d\x28\x2a\xf9\xcf\x1b\x14\x82\x60\x2f\x24\x3d\x48\x6b\xd8\x2b\xa0\x39\xa0\x75\x09\x09\xe9\xb3\xc7\xd4\xd5\xf8\xb8\xba\xf4\x57\x18\xaf\x03\x11\x85\x4f\x4d\x1c\x78\x37\xf3\x1d\x8e\xe6\x8d\x35\x58\xe7\xe5\x1e\x0c\x64\x6a\x4a\x63\x75\x96\xee\x90\x05\x7b\x01\xed\x0a\x17\xda\xa3\x95\x0b\x81\xab\x47\xae\x8b\x94\xc1\x7d\x40\x74\x69\x13\xc4\x6b\xa1\x47\x8b\xfc\xa5\x1b\x16\x76\x28\xfc\x3e\xe1\xe2\x2f\x2f\x19\xd6\xd8\xda\xf9\x3d\xf6\x54\x0c\xed\xb7\xa8\x59\xd1\xa2\xba\x59\x11\xba\x71\x76\x6e\x8b\x7f\xce\x0c\x0e\x86\x63\x61\x6d\x01\x80\x69\x7d\x78\xce\x30\x40\xd4\x38\x13\x19\x82\xf3\xf8\x11\x2a\xcc\xa2\x9a\xe5\x3e\x53\x9f\xf8\xc9\xec\x41\x06\xd1\x32\xf4\x02\x01\x85\x18\x30\x84\x85\xf2\xaa\x6c\x9e\x8d\x1e\x62\xfe\xd6\x0c\xb2\x49\x45\x7d\xb3\x3c\x6f\xd1\xfe\x07\x44\x53\x61\xf0\x81\x94\xa2\xb5\xa0\x57\xcb\x03\xcc\x75\x4e\x5c\x7d\x4a\x7e\xea\x53\xa7\xf7\xd2\x07\xca\xcc\xa5\xe6\x8c\xaf\xa9\x69\xa3\x52\x1d\xbb\x81\x03\x99\xa1\x7f\x32\x8e\xe7\x67\xcf\x55\x92\x6b\x2b\xd5\xf0\x29\x54\x9d\x3b\x46\x45\x79\xc4\x26\x55\x26\x53\x98\x47\x2e\x1c\x77\xcc\x8d\xd9\xaf\xf1\x87\xf7\xac\x34\xdd\x45\x6a\xce\x99\x9a\x73\x6e\xcc\xa6\xd4\x05\xd4\x92\x2c\x77\x9c\x60\x0c\x47\xb8\x4c\x9c\x1d\xf5\xe5\xf8\xed\x3b\x28\x11\xd3\x51\x33\x91\x13\xf8\x45\x3c\xca\x4c\x44\x11\x68\x8c\xb0\x38\x82\x58\xeb\xbd\x18\x72\xb8\x36\x10\x04\x22\x49\x49\x4e\xd5\x60\xd4\xcd\xa6\xa6\x84\x55\xd9\x57\xe8\x06\xdd\x0b\xdd\x83\x00\x4c\x4c\xa8\x07\x74\xb8\xa0\xa1\x66\x58\x66\xf1\x70\x85\x01\x4e\xad\xb3\xea\xe7\x38\x2f\xa8\x70\xde\xb2\x9d\xd8\xc9\x31\xb5\x30\x19\x62\x57\x40\xe2\x83\x92\xf3\x85\x75\xc0\xe2\xa9\xe5\x04\xfc\x35\xbd\x95\xdf\x56\x43\x9a\x89\x82\x30\xa2\x39\x8c\xd2\x22\x5c\x76\x6e\xf3\x6f\x12\xae\x7e\x49\xb3\x0a\x9c\x0a\xad\x46\x9d\x58\x95\xbb\xf7\x21\xcc\x0f\xf5\x1d\x84\x0c\x80\x2d\x4a\x7e\xef\xba\x84\xfe\x52\x05\xa2\xc2\xf1\x40\x11\x92\x2d\xde\x56\x14\x56\xf7\x9e\x61\x61"}, +{{0x5f,0xea,0x38,0x73,0x9c,0x61,0xca,0x83,0xbf,0x7b,0x4a,0xd1,0x75,0xa2,0x11,0x76,0x27,0xb9,0x71,0xa6,0x34,0xa3,0x05,0xa8,0x4f,0xa5,0x7f,0xec,0xb8,0x03,0x56,0x24,},{0xdd,0xd1,0x4b,0x0f,0xc0,0x67,0x68,0xd5,0x10,0x4c,0x50,0x76,0x4b,0xfd,0x3b,0x95,0x23,0x52,0xa3,0x40,0x07,0xc5,0x0d,0x5d,0xdd,0x22,0x4f,0xf5,0x1a,0xfc,0xdf,0x9c,},{0xf4,0xe2,0x74,0x82,0x3f,0x2c,0x39,0x6f,0x3a,0x32,0x94,0x86,0xaa,0x64,0x10,0xc5,0xff,0x19,0x26,0x6f,0x07,0x70,0xfd,0x04,0xfb,0x14,0xa7,0x60,0x2d,0x2b,0x69,0xa4,0xa2,0xb0,0x09,0x28,0xe9,0xe1,0xd9,0x23,0x89,0xf8,0x03,0x33,0x59,0xed,0x6f,0xb2,0x14,0x64,0x67,0xaa,0x15,0x4c,0xba,0x59,0x7d,0xec,0x6a,0x84,0x17,0x3f,0x8d,0x07,},"\x10\x13\xc6\x0a\x73\x95\x35\x49\xe5\xed\x10\x5b\xde\xa1\x50\xb9\x1e\x60\xec\x39\x20\x0d\x43\x72\x13\x04\xbf\xc8\xec\x43\x9d\x39\x60\x96\x13\xc2\xd8\x78\x04\x4a\x9d\xa0\x1b\x26\xd8\x6d\x6d\x65\xdb\x93\xd9\x1a\x13\x7e\x9c\x48\x08\xa9\x7d\x4e\xf2\x86\xa9\x03\xf3\xf1\x38\x2c\xc6\xd1\x29\x42\x16\xb9\xfa\xfc\x01\x3c\x86\xb9\xff\x68\xb5\x5a\x50\xea\x37\x66\xe6\x1d\xc1\xce\x38\x34\x8e\x91\xd6\x2c\xe7\x32\xc1\x52\xd7\x66\xb9\x33\x5c\x68\xd6\xca\xd7\x7b\xe2\xb4\xa0\xcd\x50\xb9\xa1\xec\x63\x2b\xa5\x56\x48\xa6\xe7\xe1\x1a\x14\xc0\x68\x53\xc0\x2a\xec\x48\x09\xbd\x14\x7a\x5d\xdd\x9f\xbc\x3b\xe9\xf0\xc8\x15\x8d\x84\xab\x67\x95\xd7\x71\xb4\x2b\x18\x14\xa1\x7a\x3c\x7a\x6c\xa0\xf4\xa8\xf7\xb3\xa0\xdb\x1c\x73\xba\x13\xb1\x64\x00\xdf\xec\xbd\x03\xd2\x16\x65\x0e\x4d\x69\x70\x4a\x70\x72\x46\x44\x4d\x57\x91\xfa\x27\x37\x52\xf5\x9c\xb5\xae\x9f\xd4\x16\xa5\x18\x66\x13\xd6\x6a\xfd\xbd\x1c\xe6\x91\xa8\x7b\xd7\xd8\xb6\x71\x90\xe9\xac\x68\x70\x62\xa0\x80\xd2\xec\x39\xfe\x76\xed\x83\x35\x05\x82\x51\x87\x28\x39\xe8\x5e\xb6\x2f\x18\xec\xe1\x87\xca\xba\x55\xb5\xf7\xd5\xed\xca\xde\x01\xcd\xc5\x43\xcc\x67\x7e\x50\x23\x8b\x89\xc5\x63\x5a\xd5\xc8\xfc\x22\x0f\x5e\x0b\xe1\xbc\x66\x7d\x20\x98\x97\x53\xa6\xd6\x16\xfa\x69\xf8\xb1\x29\x40\xb8\xca\x9e\x2c\x48\x57\x71\x32\xd8\x69\x1b\x05\x37\x79\xa1\x52\xcb\xac\xff\x3b\x8b\x1b\xd7\xaf\x69\x2e\x56\xc7\x3b\xba\xe4\x63\x47\x76\xcf\xc2\x13\xc9\x9b\x9a\xe4\x58\xdf\x1b\xef\xc8\xc8\x77\x74\x26\x64\xb0\xa0\xbb\x1f\x69\x15\xc8\xda\xe3\xb3\xf5\x5d\xd7\x5a\xba\x6a\x3b\xcc\x41\x76\xb4\xe3\xba\x03\xd0\xc1\xc0\x4c\x3c\x64\x08\x77\x8b\x2b\x8e\x5a\x8a\x3e\xb5\x2e\xd3\x2a\x74\x28\xc0\x0a\x98\xa5\x89\xd8\xca\x93\x90\xa2\x10\xf4\xa7\xac\x00\x4f\xa1\xfe\x4c\x6d\xa6\x94\xf1\x22\x76\xe3\x20\xb4\x1b\x0b\x59\xf7\x5d\x26\x4a\x39\x6d\x45\x0b\x63\x1a\xb3\x53\xf1\x61\x27\x09\xe7\xa2\xe6\xa5\x0d\x01\xcb\x11\x0e\x53\x04\x05\x46\xdd\x3b\x1e\x11\xd2\x57\x32\x81\x3a\xa7\x6b\xe5\xe8\x1f\xcf\x7a\x57\x73\xf6\x81\x5b\xbd"}, +{{0x60,0xf9,0xa1,0x4c,0xce,0x5d,0x43,0xfd,0x9a,0xab,0x4e,0xe8,0xcc,0x83,0x79,0xd5,0x75,0x94,0x91,0x52,0x69,0x3b,0xf2,0x9a,0x67,0x90,0xb0,0x35,0xe4,0x2a,0x44,0xde,},{0xbd,0x4a,0x70,0x74,0x0d,0x5a,0xca,0xbe,0x49,0xf9,0xa2,0x15,0x20,0x82,0xfa,0x20,0x25,0x33,0x0e,0x64,0x40,0x43,0x7f,0x1d,0x04,0x7f,0x31,0x3d,0xe4,0x90,0xdc,0xa5,},{0x72,0xf5,0x4b,0xb8,0xbd,0xd1,0x7e,0x9e,0x42,0x2c,0xd3,0x39,0x63,0x1d,0xd3,0x9f,0x57,0x35,0x50,0x15,0xd4,0xcb,0xd1,0x5a,0xca,0xb7,0x54,0x2e,0xfd,0x78,0x4a,0x32,0x1c,0x1f,0x61,0x25,0x76,0x4c,0x0d,0x15,0x40,0x45,0xb3,0x2e,0x70,0xdc,0x2e,0x03,0xfb,0xfe,0x11,0x17,0x46,0x8a,0xc3,0xe7,0x31,0x27,0xb5,0xfa,0xc8,0xd4,0x21,0x02,},"\xdd\x7f\x44\xf9\xeb\x72\x8a\xb4\x8d\xe5\x4e\xcd\xe6\xb6\x18\x4b\xd5\xdd\xd8\x70\x75\x45\xa0\x12\x9f\x2e\x90\x59\x05\xb5\x5d\x3e\x7f\xd5\x7e\x28\x48\x5d\x25\x81\x48\xf6\x60\x5e\x23\x77\xd5\xb2\x67\xd2\xea\xf4\xcd\x4b\x46\xe4\x54\x96\x22\x19\x86\x82\x32\xb6\xf4\x1f\x88\xa7\x97\xf9\xcd\xd5\xc3\x9a\xda\x51\xa6\x41\x21\x4f\xb9\xdb\x2c\x2a\x9b\x5a\x5b\x16\xe3\x03\x57\x53\x18\xb6\x25\xcc\xa9\x70\xb7\x43\x48\x72\x79\x02\xa1\xcf\x26\x8b\xd1\x6e\x10\x71\x13\x16\x1c\x8c\xbc\x99\x30\x3c\x2b\x9f\x23\x55\x41\xa7\xb3\x1e\x43\x31\x20\xfe\xba\x14\xfe\xbe\x4b\xcb\x0f\x5b\x93\x6c\x7e\xdd\xdd\x0e\xcf\xc7\x2c\x8d\x38\xf6\x4c\xdb\x6c\xfc\x29\x10\xbc\x29\xa5\x21\xc5\x0a\x51\xab\xcb\xc2\xaa\xbf\x78\x9d\xe8\x22\xcb\x04\xf5\x72\x8f\xee\x15\x3d\xd5\x50\x1b\x2d\xb5\x9c\x59\xf5\x0c\xab\x17\xc2\x92\x16\xd6\x69\x51\x01\x9e\x14\x5b\x36\xfd\x7e\x84\x1b\xfb\xb0\xa3\x28\x55\x4b\x44\xdd\x7e\xf5\x14\x68\xc3\xd5\xb7\xd3\xa1\xf7\xb9\xde\xf5\x8d\x8c\xf9\xd9\xbc\xaf\xe9\x2c\x86\xcf\x6d\x61\x19\xe9\x8d\xba\x6f\x38\xea\x57\xe3\x22\xdd\xc9\xc2\x19\x8d\x4b\xbc\x3b\x94\xea\x13\x29\xdb\x0d\x45\x8e\x01\xc7\x08\x1b\x33\x92\x5a\x3e\x28\x7f\x59\x9a\x85\x8c\x50\xc3\xa8\xf1\x8c\xc2\xaa\x63\x4d\xf6\x3e\x7f\x10\xe4\x03\xad\xea\xb2\xf4\x1d\xb5\x57\x87\x90\xc3\xb4\xf0\x41\xa8\xb7\xa4\xf6\x9c\xd6\xe0\x62\x15\xdf\x82\x01\xae\x5b\x3e\x1d\x1d\x25\xa0\xa3\x9b\xfc\x3d\x04\x1a\x2f\x98\x21\x3e\xf4\x14\x12\x45\x79\x2a\x76\xf0\x6d\x4d\xe2\x5f\x64\x67\xa0\xe5\x6f\x2f\x5c\xf6\x94\x00\xd2\x21\x17\xde\x7b\x46\x14\x95\x54\xb7\x0c\x75\xb9\xf9\x94\x84\xa4\xf6\xf0\x35\xad\x3f\x10\xe3\x75\x3c\xb1\x4f\x4f\x39\x8d\xcf\x6a\x64\xd1\x0c\xf6\xc4\xfa\xc0\x7c\x91\x19\x3c\xc0\xf5\x4f\x0d\xe5\x8c\x63\x43\xe9\xca\xaa\x6b\x4f\x47\x5e\xf9\x1a\x59\xe0\x83\xf9\xf2\x11\xf5\xbc\x8e\x7e\x45\x16\xb4\x5c\xf0\x6b\xf5\x0b\xeb\x8f\xc4\xab\x57\x9d\x86\xd4\xa4\x19\x0e\xea\xc7\x48\xd0\x6e\x08\x52\xc4\xb9\xba\x8c\xfc\x50\xdd\x0a\x03\x7a\x7b\xad\x7f\xad\x55\xaf\x30\x9a\x5f\x13\xd4\xc9\x1e\xd3\xe0"}, +{{0xa3,0x90,0x53,0xc5,0xc5,0x8b,0xf3,0x1d,0x46,0x2b,0x27,0xa6,0x20,0xb0,0xb3,0x7b,0x80,0x52,0xc6,0xb1,0xc4,0x10,0x2b,0x61,0x45,0x66,0x3a,0xa1,0x5e,0x97,0x87,0x18,},{0x36,0x42,0xac,0x2a,0x32,0x80,0xdc,0xe5,0x2a,0xd8,0xdf,0xcf,0xd3,0x70,0x94,0x36,0xed,0xc4,0xe7,0xe4,0xae,0x1b,0x45,0x2d,0x9b,0x22,0x07,0x80,0xb0,0x86,0x79,0xfa,},{0xf7,0x38,0x3e,0x96,0x6c,0xb2,0x30,0x9d,0xee,0xdf,0x86,0x01,0x00,0x18,0x3a,0xae,0xfa,0xc6,0x72,0xca,0x16,0xd5,0x41,0x9c,0xd6,0x42,0x2c,0xa7,0x0e,0x16,0xb3,0x97,0x6f,0x5f,0x16,0x5a,0xfc,0x27,0x86,0x11,0x7c,0x86,0x82,0x34,0xba,0x11,0x09,0xed,0xe0,0x31,0xf8,0x97,0x9b,0x50,0xe5,0x67,0x35,0x8b,0xd4,0xf8,0xbd,0x95,0x82,0x02,},"\xf6\x55\x40\xd3\xab\xeb\x1e\xe5\xea\x98\x70\x62\xc1\xb5\x79\x51\x6d\x3c\x29\xc3\x9c\xbc\x6b\x09\xd6\x0e\x18\xfe\x27\x4c\x2b\xef\xe0\xf5\xfe\x7d\xbd\x57\xc2\xd5\x83\x52\x29\xbb\x75\x4e\xc4\x34\x13\x94\x76\x57\x76\xd6\xa9\x17\x8c\x4e\x6a\x31\x2c\xd7\x4b\xdb\xac\xa0\xe8\x82\x70\x62\x8c\xd8\x41\x00\xf4\x72\xb0\x75\xf9\x36\x92\x83\x01\x22\xf0\x0f\x9b\xd9\x1a\xc5\x82\x83\x6c\x8b\xfa\x71\x4a\xa4\x8e\x97\x70\x03\x55\x6e\x1b\x69\x6d\xf3\x28\xef\x58\x4f\x41\x3f\x8a\xb6\x14\x76\x06\x99\xc4\xd1\x47\xc3\xee\xa1\xda\x04\x35\x83\x5c\x9b\xf7\xad\x54\x60\x6f\x02\x13\xeb\x74\xa1\xb4\x76\x14\x15\x06\xae\x2c\xd1\x24\xcd\x51\xd6\x6e\x7e\x7e\x57\x95\x60\x57\x63\x05\xc5\xfb\xe8\x43\x0b\xe3\xeb\xeb\xaa\xcb\xa3\xf9\x98\x9d\xd7\xd1\x99\xf5\xa4\x55\xa5\x0c\xdb\x37\x55\x03\x7e\x1a\x70\x67\x4a\x4f\xef\x40\xb4\xa3\xaa\xf7\xbd\x3c\x95\xb1\xab\x41\xbb\x20\x62\x11\xc3\xa1\x27\x6d\x3e\x37\xd8\xa3\xa5\xc3\xd5\xd0\xf3\x6e\xf5\xb4\xf3\xde\x26\xb7\xf2\x0f\x6b\x29\x00\x71\x6d\xcc\x22\xab\x73\x4e\xba\xf1\xe8\xd0\x00\x20\xe5\xf0\x19\x55\x16\x53\xb9\xc2\xf7\x0a\x40\x38\xdf\xb2\xf1\x2d\x25\xd6\xd8\x4e\x79\x07\x3a\x65\x48\xfe\x15\xe4\x82\x8f\xe5\xde\x83\xac\x3d\x8d\x98\xb7\xda\xf9\x27\x10\x48\x2c\x37\xf7\xbd\x24\x31\xa8\x11\x4c\x61\x37\x65\x7b\xb1\x77\x88\x2d\x8a\x3c\x76\xba\xbf\x1c\x67\x1a\x70\x55\x36\x5f\xe9\x08\x66\x16\x7a\x2d\x1d\xbc\x87\x0b\xe8\x3b\x36\x01\xf0\x9d\x4a\x31\x7a\xe2\x54\xca\xc9\xf9\x8d\xcc\x7a\xea\xd9\x22\x4c\xd9\xc9\xd8\xa2\x00\xab\xc8\x0a\x2d\xd1\x08\xaf\x28\xfd\x46\xad\x70\x80\xae\x74\x1b\x50\x05\x4b\x9b\x9a\x92\x01\xef\xb7\x83\x8b\xc4\xc5\xc2\xcc\x3d\x76\xba\x0f\xcc\x49\xc4\x6e\x79\x2c\x26\x29\x2b\x7d\x03\x12\xaf\xf9\x55\xa9\xf8\xed\xf0\xc6\x96\xa7\x0a\x61\x4f\x35\x53\xad\x38\x69\xbf\xde\x48\xd2\x6a\x4d\x36\x7b\x6c\xec\x05\x7e\x62\xa4\xe5\x48\x55\x4b\x48\xb5\x3e\xcd\xa7\x90\xba\x7a\x0a\xb2\xe3\xde\x58\x7b\xdc\x22\xb0\x2f\x59\x47\x63\x4d\x73\x09\x9f\x54\x7d\xb2\x2e\xc1\xbb\xf8\x23\x43\xf9\xa2\xca\x38\xbc\xe4\xeb\x59\xbe"}, +{{0xe0,0xc2,0x9d,0xf4,0xde,0x45,0xc4,0x75,0x39,0xe0,0x89,0x6b,0x3a,0x59,0xbc,0x3d,0xe6,0xb8,0x02,0xfd,0x14,0xdb,0xdc,0x9f,0x25,0xe7,0x17,0xac,0x82,0xc3,0x28,0xf3,},{0xa6,0x90,0x02,0xb0,0xf5,0xef,0x35,0x4c,0xe3,0xb2,0xd6,0xb8,0xd8,0xba,0x70,0xab,0x77,0x84,0x32,0xb2,0x2f,0x14,0x4d,0xc9,0xc2,0xeb,0x92,0xd9,0x9d,0x99,0xdd,0x2a,},{0xbb,0x3b,0x8c,0x5c,0x27,0x59,0x1f,0xd8,0xb9,0xc5,0xba,0x48,0x9d,0x6b,0x6e,0xe5,0xb0,0xfb,0x4a,0x7b,0x0d,0xe5,0x1f,0x16,0x39,0xaf,0xc6,0x73,0xd0,0xe5,0xf7,0x5e,0x31,0x3a,0xa7,0xe1,0xd0,0x00,0x90,0x81,0xdb,0xca,0x74,0x35,0xb6,0x87,0xcc,0xd1,0x2f,0x64,0xf7,0x4a,0x38,0x6e,0x77,0x2b,0x9e,0x24,0x78,0x1b,0x92,0x5c,0x8c,0x0c,},"\x6a\x37\xcb\x4c\x74\x9c\x58\x35\x90\xc8\xd8\x49\xbc\xe3\xfa\x65\x7f\x10\x00\x91\x90\xca\xd9\xbe\x41\xed\xe1\x9b\xf2\xfd\xb3\xc5\x62\xa6\x10\x1f\x27\xbd\x37\xf2\x23\xca\xb1\x3c\xed\x24\x5a\x1c\xed\xf8\x52\xf5\x51\xf8\x57\xaa\xd9\x72\x7f\x62\xc9\x67\xc0\xa9\x21\xdf\x11\x6f\x48\xa8\x0a\x60\x40\xb3\xc7\x23\xab\x5c\xb5\x94\xc4\x50\x7a\x3d\x20\xcd\x60\x51\x4e\x22\x16\x4a\x82\xb7\x4f\x19\xdc\xfd\xd8\x3c\x57\xbc\x36\x52\x37\x55\x17\x41\x4a\xf5\xd1\x8e\x0a\x64\xcc\xab\x36\x69\x97\x68\xd0\x7c\xf4\x0b\x70\x63\xa8\x3e\x43\xd5\xf6\x07\x96\x4b\x1b\xf0\x84\x0a\x45\xad\x50\xab\xf8\x3d\xbc\x84\x9f\x40\xe5\xb4\xcf\xb6\xa3\x34\x7b\x29\xfe\xc5\x07\x74\x04\x6a\x4b\x50\x04\x10\x32\xaa\x4d\x56\x7e\x85\x64\xb3\xee\xd1\x64\x20\x40\x68\x2d\xd8\xae\x7d\x71\x79\x28\x6c\xf6\xe1\x85\x3d\xc8\x7d\x27\xc3\xe9\xe6\x0f\xa4\x7c\xf8\xcb\x2d\xa0\x18\x1d\x53\xee\xc4\x06\x14\xb0\x73\x31\xa4\xfb\x70\x28\x08\x6d\x0b\x1c\xe2\xe1\x11\x5b\x73\xa1\x62\xc5\x27\xbd\xd7\xca\xb5\x33\x5b\x86\x3d\x10\x8b\xe0\x47\xbd\xbc\xa1\x12\xcc\x6e\x77\x6b\xb4\x53\xc3\x17\x31\x43\x88\xbb\x96\x53\xef\xb4\x44\x4b\xf5\xcf\x1e\xc8\xda\x23\xb7\x11\xba\x71\x79\x6c\x0a\xe0\x2b\xa1\xdc\xc8\x38\x45\x50\x78\xc3\x89\x7f\x07\xe9\xe1\x3b\x76\xe4\x92\x74\xc2\xe2\x07\x50\x6b\x00\xa0\xb5\x58\x88\x3a\xa1\x22\xb6\x67\xdb\x9d\x67\x05\x08\x60\x6a\x3f\x54\x32\x06\x36\xcd\x19\xf9\x73\x91\x7f\xb1\x87\x5f\x43\x63\xe2\x20\xf1\xe1\x23\x98\xcc\x6a\xfd\x79\x09\x47\x43\x33\x84\x56\x81\x3a\x58\x26\xad\x3f\x1a\xba\x7c\xd7\xbe\xab\x1f\xe1\x83\x85\x9c\x0c\xc9\xef\x40\xa5\xea\xb9\x12\xca\xf5\x15\xa8\xd4\xc3\xb9\x3d\x64\x1b\x7a\xb3\xe7\x6b\x16\xc1\x29\x71\xac\xe8\x8f\xf3\x3e\x5a\x1e\xd9\xb4\x4e\x45\xdb\x8f\x30\x85\xdb\xf0\x70\xb2\x56\xb0\xd7\x51\x2e\xe1\x06\x94\x32\x60\x3d\x73\x09\x5d\xb8\x74\x9c\xa5\x47\x96\x3b\xd7\x1a\x8a\x68\x4a\xb8\x51\x6b\x14\x6c\x41\x87\x17\x63\x86\xaf\xdf\x6c\xb1\x36\x8a\x3d\xd8\xfc\xb2\xcf\xff\x77\x05\x6a\xaf\x78\x23\xf8\x00\xb2\x66\xac\xce\x72\xbf\x64\x3c\x6d\x0c\x28\xf0\xab"}, +{{0x19,0x8b,0x5f,0xd1,0xc0,0x38,0x27,0xe0,0x99,0x4a,0xd5,0xbf,0xee,0x9b,0x5b,0x7b,0xe9,0x96,0x6c,0x9c,0x3a,0x26,0x7e,0x4d,0x74,0x30,0x34,0x37,0x67,0x40,0x3c,0x67,},{0x66,0x82,0xc6,0xf1,0xa8,0x66,0xb4,0x9b,0x2f,0x8e,0xe9,0x7f,0x2e,0x53,0x2f,0xa9,0x16,0x66,0xbf,0x38,0xda,0x1b,0x4d,0xd6,0x55,0x43,0xa1,0x77,0x77,0x94,0xcb,0xee,},{0xf4,0x54,0xf3,0x5b,0x18,0x53,0x8f,0x87,0x7e,0x5d,0x61,0x4a,0x76,0xb5,0x27,0x6a,0x27,0xfc,0x0b,0x43,0x3f,0x21,0x5d,0xc4,0xe9,0x63,0xb3,0xf0,0x47,0x69,0x4c,0x78,0x0c,0x51,0x5c,0x6e,0xf6,0xfe,0x2d,0xb4,0xb0,0x09,0x00,0x9b,0xc2,0x73,0x3a,0xec,0x4f,0xd4,0x6e,0x61,0x53,0x57,0xcc,0x0b,0xcc,0x9f,0x1f,0x7f,0xc2,0x1e,0x3c,0x02,},"\x3f\xda\xa1\x5c\x46\xf2\x51\x43\xdb\x97\x20\x79\xd7\x01\x3c\x7f\x69\xa1\x36\xf4\x5f\x3f\x6b\xa2\xce\xd8\xb8\x28\x46\x8e\xb3\xda\xa6\xb5\x0b\x4f\x8d\x33\x80\xfe\xc6\x4a\x03\x43\xbe\x11\x6f\x6f\x83\xb6\xee\x64\xcc\x4c\x1b\x1d\x08\xd5\x4f\xd4\x20\x29\xe4\x28\x5c\xfc\x6c\x6d\xd5\xcd\x18\x1a\xb5\x33\xff\xcd\x41\x1f\x23\xa1\x00\x3d\xa9\x4e\xc9\x34\x0e\x2e\xc7\x11\x99\xd6\x78\x54\x0d\x51\x82\xe1\x39\xff\xcb\xc5\x05\xa1\x70\xb8\xf0\x7f\x4a\x7e\x69\x4c\xa9\x2f\x58\x32\x0c\x0a\x07\x85\x64\xce\x9d\xe9\x9b\x0f\xa8\xe6\x6b\x0d\x82\x2e\x46\x7a\x5a\xeb\x83\x56\x79\x96\xa4\x8b\x89\xdb\x25\xca\xde\x64\x57\x79\x4e\x54\x14\xd6\x7e\x9d\x4a\xb7\xcd\x6c\xc2\x05\x8b\xb7\xa5\x13\xab\xd7\x09\xf4\xca\xf2\x4b\xb6\x7c\xe1\xc0\x3a\xb6\x2d\xbd\xfe\x30\x9e\xc7\xdb\x0f\xa3\xea\x7a\xae\x82\x36\xf2\x59\xb9\x22\xd4\x53\x61\x15\xa6\x3b\xc8\x9a\xcb\x20\x51\xd0\x9e\x73\x1c\xbb\x0d\xf1\x57\xd9\xd3\x45\xbd\x91\x09\x97\x3c\x2b\x59\x4f\x14\x8e\xfc\x6f\x33\x77\xde\x51\x63\xb7\xf6\x98\x69\xff\xef\x85\x3e\xae\xfe\xb4\x02\xe2\x35\x29\x59\x4f\xbd\x65\xca\x05\xfe\x40\x62\xc5\x29\xd8\xe3\x21\xab\xc0\x52\x00\xca\xc1\xe8\x39\xe8\x7b\x1f\xd3\xfd\xf0\x21\xd6\x8c\xbb\x3a\x41\x42\xb6\x9c\xc3\xaf\x6f\x63\x2e\xdd\x65\xb8\x3f\x5a\xa4\xcb\x17\xda\x5b\x6b\xa3\xfc\x03\xed\xb1\x7c\x2a\x3c\xb5\xb0\x48\x36\xe7\x66\x0e\x63\xc8\xa0\x48\x3e\x24\x39\x83\x37\x1d\xfa\x98\x39\xf9\x16\x4a\xd4\xda\x0d\x59\x53\x65\x5e\x3a\x95\x18\xe1\x36\xda\x74\x57\x37\xc7\x92\x43\xc3\x55\xfc\x12\x5c\xbd\xcc\x76\xae\xc9\x22\x16\x84\x6c\x45\x74\xf4\xf7\xf2\x98\xbc\xde\x54\xfd\x24\x44\xad\x30\x25\x95\x5c\x10\x03\x15\xde\x5a\x4e\x27\xc3\x33\xa0\x02\x84\xb2\xf7\x02\xfd\xd3\xde\x22\xac\x6c\x24\x0d\xbc\x14\xbf\x71\xe6\x2d\x13\x1b\x62\xf2\xdb\x99\x24\x73\xf2\xf9\x13\xf6\x0c\x91\x6e\xcf\x57\xdf\x5f\x3f\x02\x1f\xb3\x30\x83\x43\x95\xb7\x94\x72\xca\xff\x19\xfc\xfa\x0a\x27\x17\x95\xc7\x6d\x69\xb4\xdb\x3f\x85\xb8\xd2\xe5\xc3\x44\x19\x65\x48\x4d\xcc\x39\xab\xa5\x9b\x70\x12\x74\xf7\xfc\x42\x52\x46\x85\x60\x69"}, +{{0x43,0x92,0xf7,0xd4,0xfb,0xd6,0x8f,0xe1,0x54,0xe4,0xba,0x38,0xad,0x52,0x07,0x61,0x2a,0x06,0x48,0x55,0x60,0x56,0xc3,0x9a,0xc1,0x16,0xad,0x46,0x8f,0x89,0xbd,0x2d,},{0xcb,0xea,0xef,0x41,0xac,0xac,0x02,0xbf,0x1f,0x78,0x0c,0xe9,0x34,0xaa,0xbd,0x63,0x13,0x64,0xb3,0x69,0x56,0x7b,0xe1,0xbe,0x28,0xe3,0x90,0x6f,0x9d,0xb1,0x20,0xfa,},{0x86,0xe7,0xcc,0xf0,0x6e,0x79,0x36,0x2d,0x40,0xcd,0xb7,0xfb,0x75,0xa9,0x89,0x78,0xbb,0xd3,0x34,0xa1,0xdb,0x75,0x90,0x36,0x7d,0x60,0x84,0x9b,0xd5,0x3e,0x2f,0xb1,0xa4,0xbd,0xae,0x59,0x0d,0x1f,0x47,0xb5,0x49,0x0d,0x87,0x02,0xe7,0xc1,0xa8,0x72,0x68,0xb8,0xee,0x9d,0xb6,0x12,0xde,0x7b,0xdc,0x2e,0x38,0xfa,0x6d,0xeb,0x7e,0x05,},"\xcf\x17\x09\xdc\x9a\x08\x67\xee\x90\x87\x21\xb1\x36\xcb\x93\xa8\x42\x29\xe8\x3b\x46\x20\x47\x77\xca\x81\x94\xd0\x8b\x7a\x3c\xa9\xc9\x12\xeb\x24\x3e\x5b\xda\xbf\xee\xd3\x52\x34\x9d\x20\xbe\x80\x1b\x72\x2a\xf0\x89\x22\x38\xe7\x2e\xdf\x19\x0e\x63\x61\xf5\x75\x72\x78\x1a\xd3\xc2\x59\x0b\x19\x73\x57\x64\x1c\x80\x53\x83\xba\xa1\xd4\x97\x2f\x76\xc6\x54\x48\x53\x2c\x11\x08\x34\xa0\xba\xa8\xf4\x88\x63\xe1\x66\xb7\x06\x65\x37\x08\xcd\x40\x57\xd3\xa4\xf9\xfc\xb2\xce\xb4\x12\x00\x01\x27\x7d\x38\xc4\x38\x47\xd8\x22\x82\x2b\x77\x7c\x2b\xb4\xda\x40\x15\xa1\xc2\x4d\x41\x6d\x50\x62\xa8\x71\x84\x91\xd8\x55\xaa\xa5\xdb\xf5\x57\x9c\x16\x4d\x8e\x52\x4a\x9f\x2f\xa3\xf2\x2e\xb0\x98\x61\xff\xe6\xad\x65\x9f\xe3\x6e\xb4\x04\x31\x22\x2c\x22\xd7\x13\x7a\x6c\xab\xca\x8d\xb7\x86\xe3\x9d\x81\xf6\x61\xaf\xde\x4e\x39\x58\x9b\x4d\xb4\xd3\xc5\x1c\xa5\x35\x90\xa1\x4e\x11\x5d\x0a\xfc\x3a\x87\x7b\x83\x9a\x96\x38\xbe\xce\x80\xc3\x2c\x19\xe5\x1b\x75\x32\x02\x48\x45\xf7\x6c\xfe\x9b\xfb\x2a\xc0\x51\x30\xf6\x75\x8b\xf7\xfe\x99\x3a\xa9\x3a\xa2\x72\xe4\xe6\xbd\x0c\x75\xc1\x40\x99\xd4\x3e\x65\x2a\x22\x3e\x5b\xcd\x64\xc3\x62\xd4\xb8\xf4\xb9\x5e\x01\x6f\x93\x50\xc7\xfa\x74\xe6\x53\x52\x5d\x08\x01\x15\x58\xb2\xc6\xe9\xbf\x4f\xdf\x9d\xbd\x5e\xf9\xb0\x9b\xbc\x84\x6a\xfc\x2b\xcb\xc8\x6c\x4c\xcc\x31\x5f\x6d\x1c\xcd\x48\x9b\x0c\xf8\xed\x0d\x93\xf2\xf5\x32\xa4\x26\x26\x5c\x59\x0b\xa3\xa5\x90\x23\x34\x7d\x81\x9d\x9b\x28\x1e\xf8\x53\x10\xb0\x53\x16\xd4\x6c\x8a\x8c\x03\x65\xd0\x68\xa8\x70\x86\x64\xea\x4d\x77\xac\x0c\xd1\x50\xa6\x5a\x56\x58\x6b\xab\xd3\x4b\x74\x36\x5b\xb8\xfe\x3e\x61\x87\x26\x22\x84\xd6\x44\x32\xe4\xc8\x1e\xa4\xc0\xe5\x7c\x1d\x71\xae\x98\x0c\x7f\x4d\x1d\x87\x10\x32\xe1\x88\xbb\xf9\xd1\x75\x8c\xdc\x1d\xff\x98\x9f\x2d\x12\x88\xfe\xf4\xe2\x05\xe9\x9e\x7c\xbf\x2c\xc3\x24\xb8\xc9\x30\x46\xf4\x76\xc5\x9d\x3d\x0a\x59\xdb\x6f\xe3\x73\x82\xdc\x79\xc5\xec\x16\x05\x6a\xb3\x93\x4a\x52\xf7\xd2\x88\x0d\x04\x71\xa3\x77\xb6\xa8\xae\x84\xd5\x6a\xc2\x2d\x1d\x54\x55\x1c"}, +{{0x0b,0xea,0x98,0xab,0xe7,0xd6,0x3f,0x15,0x83,0x90,0xee,0x66,0x8a,0xa0,0x50,0xe8,0x4a,0x25,0xd2,0x89,0x3e,0x49,0xfc,0x83,0xf0,0x79,0xf9,0xbb,0xa6,0xa5,0x5a,0x75,},{0x22,0x19,0x2e,0xc0,0xd3,0x2e,0xf9,0x83,0x56,0x65,0xa6,0x1b,0xc8,0x8b,0xcf,0x4e,0x16,0x04,0x63,0x79,0x21,0x15,0x2c,0x11,0x6a,0xf5,0x03,0x36,0x5b,0xf6,0xbe,0x42,},{0x7e,0xb3,0x13,0x9b,0x88,0x0f,0xdf,0x66,0x37,0x6a,0x20,0x90,0x81,0x88,0x40,0x04,0x97,0x67,0xc8,0x37,0xf3,0xad,0x00,0x36,0xb1,0x41,0x66,0x70,0x52,0xb3,0x36,0x09,0x81,0x7c,0xa5,0xe2,0x40,0xed,0x8c,0xdf,0x3c,0xcf,0x3a,0xee,0x29,0x27,0x45,0x34,0x59,0x4d,0xb0,0xb4,0xcc,0xc5,0xc6,0xe5,0xbb,0xa3,0x28,0x0b,0x87,0x3f,0x29,0x01,},"\xc1\x78\xe3\x8d\x4e\x83\xed\x2b\xe5\x7c\xe1\xc3\xab\x64\x25\x3a\x81\x71\xe6\x10\x00\x81\x81\xfb\xfc\x6d\x75\x22\x69\xf7\xf1\xc5\xa9\xec\x62\xcb\x27\xf1\x9a\xd9\x9c\xe1\xf5\x11\x6a\x36\x3d\x96\xfd\xc5\xa4\x2f\x35\x8b\x6d\xbe\x7c\xab\xdf\xc9\xf6\x07\x18\xe4\x01\x2c\x1b\xb1\xf8\x42\xc5\x56\x08\x11\xba\x83\x74\xa0\x63\x77\x47\xff\x92\xea\xc2\x1c\xa6\x5d\xde\xaf\x43\xe9\x98\x9b\x7d\xe2\xd4\x32\x52\x0a\xfe\xe3\x64\xec\xfb\xa4\xda\x66\x9a\xd4\x89\x3d\x0b\xf6\x9f\x9f\x81\xe7\xdf\x69\x65\x7b\xe2\x2b\x92\x06\x97\x45\xf2\x16\xc2\x42\xcc\xd4\x6d\x02\xd3\x56\x16\xe1\x6c\x75\x5e\x0e\x37\xf9\x61\xa6\xf3\x63\x77\x52\x53\x4f\x6d\xfa\xb8\x80\x5a\xb7\x59\xa0\x32\xa4\xe7\xe4\xc8\x19\x53\x32\x5a\x2f\x68\x6b\xb6\x9a\x02\x9c\xe4\xe0\x3b\xec\xb3\x60\x56\x37\xc5\xa6\x5b\x52\xe3\x31\xc2\x6c\x92\x6e\xd4\x71\x1a\x50\x4d\x37\x33\xbb\x53\xc9\x7b\x80\xea\xfe\x4e\x75\xdd\xd9\xf4\x15\x36\x28\x88\xc3\xd4\xd3\x7b\xae\x0e\x63\xfa\x11\xbf\x75\x56\x66\x43\x7d\x72\xf5\x8c\x91\xd7\xa2\xf8\xcb\x61\x9b\x76\x20\xa0\x70\xb2\x6b\x18\xb4\xd5\x01\x84\xc5\x81\x87\x12\x11\x0e\x36\xd3\xe2\x83\x0f\x6a\x85\x76\xba\x57\xf9\xcc\xcb\x8f\xff\x40\x28\xbf\x8e\xf9\xcb\x81\x48\x25\xbb\xca\x82\x7d\x64\x95\x47\xbf\x6f\x2b\xef\x93\x17\x04\xca\x7f\x6d\xf1\x5f\x78\x01\x55\xed\x46\xea\xa7\xca\x7d\x72\xe2\x24\x34\xca\x04\x83\xbf\xb2\xf7\x90\x2d\xc7\x87\xf6\x17\xeb\x9b\xd4\x1e\xd4\x52\x0a\xdf\xd4\x30\x94\x8c\x71\x08\x05\xa7\x3c\x1b\xa5\x49\x2e\x96\x48\x4c\x4b\xaa\x7d\xa2\x4c\x74\x35\xc4\x6a\x05\x2b\xf3\x51\x5d\x33\xe4\x2d\xce\xf5\x17\xca\xa4\x5f\x36\xc8\x79\x12\x10\x78\xc6\x88\xdd\x10\xd7\x66\x56\xa1\x19\x76\x2b\x6a\x83\x41\x36\xfa\x1f\x8a\x64\x32\x24\xb9\x22\x4c\x54\x3c\xf0\x47\x0b\x3f\x8e\xe0\x17\xd6\x20\xdb\xdc\xc8\x4d\x98\x51\x54\xe9\xd1\xae\x80\xe5\xf1\x43\x87\xb8\x8a\x0f\x6a\x5c\x35\x90\x5a\xa5\x7f\xb3\xab\xeb\x0e\xa6\xec\xcd\xdb\x00\x44\x74\x63\x3c\xc4\x83\xb5\x6b\x8a\x8e\x20\xe8\xf2\xe0\x9e\x97\x9a\xa0\x98\x93\x08\x78\x75\xc6\xb1\x17\xb5\xf1\x38\x47\xad\x8f\xc0\x56\x04\xc4"}, +{{0xc2,0x58,0x78,0xb0,0xd1,0xe0,0x92,0x5c,0x8f,0x5f,0x04,0xa1,0xe5,0x79,0x90,0x80,0x96,0x3c,0x41,0x3a,0x13,0x99,0xc1,0x18,0xaf,0xb1,0x68,0x7c,0x79,0x7f,0x48,0x39,},{0x13,0xac,0x2c,0xad,0x41,0x90,0x8c,0x25,0x5f,0x67,0x1f,0x93,0x93,0x4a,0xe5,0xd7,0xbe,0x32,0x53,0x46,0x72,0x5c,0x8b,0x40,0xdc,0x39,0xea,0x80,0xd7,0x0d,0xdf,0x34,},{0x06,0xf5,0x51,0x98,0xb4,0x19,0x19,0x14,0xb7,0x43,0x06,0xf3,0x8e,0x38,0x13,0x16,0xea,0xc4,0x0b,0x5b,0x5a,0xdb,0x8a,0x31,0x24,0x64,0xf6,0x71,0x75,0xec,0xf6,0x12,0xe0,0x14,0x7b,0x1c,0xef,0x46,0xc2,0x51,0x87,0x50,0xa5,0x60,0x6b,0xb0,0x3b,0xc6,0x46,0x7b,0xb9,0x32,0x15,0x14,0xf6,0x9d,0xcb,0xeb,0xce,0x8f,0x69,0x05,0x80,0x02,},"\x68\x56\xcc\x71\x44\xb6\xbd\xdc\xc4\xb5\x89\x54\xd1\xa2\xe7\x10\x1d\x65\x84\xb5\xd5\xe7\x19\xa0\xae\xa0\xfb\xbd\xf2\x21\xc2\xa2\xaa\xcb\xac\xdc\x40\x20\xc5\xc8\xce\x68\x1f\xf7\x38\x1a\xcd\x60\x7b\x0f\x52\x39\x69\x23\x35\x70\x06\x55\xbe\x2d\x94\xc5\x3d\x7b\x51\x48\xe9\x2a\x2b\xc1\x63\x38\xc2\xf4\xc1\xa7\xd1\xc5\x95\xaf\x62\x2c\x24\x0c\xe5\x79\xa5\xe0\xf5\xb6\x51\xbf\x56\x25\x18\xce\xc8\xaa\x2c\xe4\xb4\xaa\xdb\x1f\x2f\xda\x6c\xf6\x29\x5b\xc3\x78\x03\xb5\x37\x7d\xab\x65\xc9\xb9\xa2\x94\x9f\xdd\x49\xbf\x9d\xdc\x8f\x96\xd2\x60\xff\x95\x1b\xf8\xe8\xcc\xf9\x82\x7e\x68\x69\xc4\x4b\xfd\x97\x33\x58\xce\xfd\xb0\x10\xdb\x5e\x1f\xe5\xdb\xd9\xf5\xd2\xb2\xca\x39\x3c\x17\xd4\x46\xf6\x37\x05\x9e\x69\x2d\x7a\x91\xaa\xdc\xc7\x68\x9f\x5f\x9e\x1b\x30\x52\x17\x5d\x9b\x6b\x20\x8f\x90\x26\x78\x7f\xdb\x66\x78\x3f\x45\x37\x2a\x24\x94\x6b\x1b\xd1\x68\x7b\xf0\xcf\xcc\x81\x74\xeb\xe4\xd3\x2e\x43\x28\x4f\xc7\x8d\x78\x44\xde\x0f\xa2\x2e\x20\x65\xe0\x75\x28\xba\xab\xaf\x01\x5c\xb3\x4d\x62\x9c\x35\x96\xad\x04\x0d\xe3\x1c\x56\x20\xeb\x26\x6d\xef\xa7\x53\x3a\xc0\x40\x19\x98\xe5\x67\x3a\x75\x43\x65\x04\x7d\xeb\xfc\xf7\xe1\x37\xa2\x0d\x16\xcd\xd6\xa5\x52\x19\x82\xf4\x44\xcf\xc3\x42\x93\x97\xc6\x41\xbd\x7e\x74\xa7\x70\xbb\x11\xfc\xb2\x94\x83\xe3\x37\xba\xe5\x16\x9e\xe8\x2d\xa9\xa9\x1a\xdf\x3a\xf6\x7c\xd8\x14\xc2\x82\x5d\x29\x01\x8e\xf0\x35\xea\x86\xf8\xde\x4c\x75\x63\xaa\xf6\x6e\x0c\x75\xd1\x7c\xa6\x8f\x49\xf0\x75\x8e\xc2\xd9\xc5\x17\x9d\x01\xaa\xed\x7d\x45\x15\xe9\x1a\x22\x2b\x0b\x06\xfb\xde\x4f\x07\xa7\xd9\xdf\x2d\xe3\xbc\xae\x37\xca\x2c\x84\x60\xc2\xa6\xb3\x74\x9e\x9b\xda\x36\xd0\x8e\x66\xbc\xc3\x56\xb3\x90\x43\x4b\x4a\x18\xcf\xa4\x5a\xf5\x57\xdc\xa3\xd8\x57\xff\x3a\xd3\x47\xcf\xb0\x7e\x23\x58\xc2\xac\xfd\x5c\xd5\x3b\x3b\x0e\xa2\xa4\x1e\xe5\xc0\x80\x2f\xd4\x73\xdb\x5f\x30\x52\x63\x34\xda\x41\xeb\x4b\xc7\x51\x83\x83\x89\x8a\x0b\x75\x07\xad\x4c\xa2\x89\xd6\x6c\x5e\x2e\xb7\x5c\xf2\x55\xdf\xf3\x12\xcb\x1e\x04\xee\xbe\xb4\x7f\x29\x30\xb9\x0d\x5e\x00\x2e\xb0"}, +{{0x0b,0x2e,0xc6,0x27,0x63,0xf6,0x87,0x59,0x31,0x35,0xda,0x19,0x61,0xef,0x29,0xa2,0x88,0x08,0x96,0x96,0xd9,0x44,0xb2,0x65,0xa5,0xf9,0x68,0x93,0xcd,0x2d,0x82,0x25,},{0xc1,0xe2,0x34,0xfa,0x8b,0xc9,0x6d,0x26,0x8e,0x7a,0xad,0x02,0x8b,0x03,0xf0,0xa9,0x11,0xb6,0x97,0x71,0x5d,0xb3,0xa2,0x1c,0x2f,0xc7,0xdf,0x48,0xec,0xda,0x88,0x75,},{0xff,0x70,0x1f,0x34,0xb3,0x59,0x4d,0xe3,0xb8,0x00,0x45,0xf4,0x29,0xe5,0xe3,0x2d,0xd8,0x8d,0x60,0x51,0xd4,0x19,0x5f,0x16,0x85,0xbe,0x78,0x37,0x66,0xe8,0x01,0x19,0x36,0x8f,0x56,0xb3,0x74,0x97,0x25,0xb9,0x13,0xf1,0x22,0x3f,0x87,0xfb,0x0f,0xb2,0x4d,0x9d,0xfa,0x08,0x41,0xd6,0xa0,0xe2,0xeb,0x1f,0xdd,0xf7,0x75,0xc2,0xd2,0x05,},"\xa8\x34\x34\xc6\x86\x93\xd5\xfc\xed\x91\xbd\xa1\x02\x13\xfc\xd5\x0c\x48\x92\x0b\x90\xce\xe9\xb7\x3a\x9c\x61\x08\x1a\x09\x74\x93\x3f\x4f\xdb\x0a\x67\xe6\x71\xf8\x35\x1b\x0e\xd5\xec\x0f\xe7\xb5\xfb\x0c\x87\x58\x6f\xe5\x82\xff\xb1\xbf\xa2\xdb\x5f\xce\xdd\x33\x02\x42\x82\x34\xb2\xbb\x0e\x72\x6d\xed\xf4\x5b\x13\xa7\x0c\xd3\x5a\xb3\xe2\x99\xd1\x3f\x34\x50\x35\x08\x27\x8c\x44\x58\xee\xa5\xb7\x35\x1b\x05\x83\x6b\xda\xd5\xb0\x5f\x60\xe4\x45\xfc\x65\x73\x7a\xe2\x7d\x2e\x52\xdf\x9c\x39\xe5\xda\x02\x86\x39\x2d\x08\xff\xf7\xec\xb7\x06\x68\x20\xfc\x90\xfc\x8a\x44\xd5\x61\x65\x61\xc5\x0b\x52\x71\x47\x02\x30\x2b\xca\x58\x74\xde\x85\xdb\xa0\x45\x04\x5f\x9f\x0e\x60\x4e\xb8\x6d\x6d\x7f\xbd\x77\x5f\x72\xea\x49\x3b\x2c\x4e\xf7\xc3\xbe\x16\xdb\x2c\xa7\xe4\xd8\xbd\x79\xeb\x20\xcf\xb5\xf0\xf6\xf0\x53\x36\xb7\x5c\xc8\x6d\x21\x9f\x3b\x8f\x2e\x91\xba\x7d\x52\xb6\x4f\xdd\x6a\x66\x64\xf0\x4f\x2f\xba\xb7\x58\xcd\xf9\x84\x16\x86\x91\xc3\x2f\x53\xe8\x61\x6b\x49\xf7\x6a\xb7\xb1\x92\xb9\x00\x90\x30\x82\xcc\x89\x65\x6a\x97\x05\x80\x4c\xc9\xb9\x28\x8a\x3e\x42\x17\x09\x84\xf8\xdc\x45\x4e\x08\x64\xb9\x34\x16\x72\x68\x6a\x17\x8c\x06\x00\x50\x17\x8a\x36\xc6\xd9\x06\xb2\xce\x07\x0d\x8f\xaa\xac\xd9\xa5\x8c\x79\x4a\x5e\xa4\x10\x8b\x4a\x48\x5c\x65\x81\x1c\x2d\xca\x2e\xe7\xbb\x10\xbf\xff\xf7\x5d\x45\x86\xb9\x90\xf4\x37\x63\xa1\x6f\xbc\x0b\x48\xae\x1f\xaf\xb0\x8a\x9a\x36\xfa\x43\x26\x84\x5d\xba\x5b\xa2\xfb\xd3\x2b\xbf\x66\x50\x5c\x5e\x86\x57\xed\x01\x07\xe3\xe1\x61\x44\xef\x31\xfa\x6a\xae\x72\xe7\x74\x09\x74\x83\xf5\x48\x0a\xa4\x55\x40\x56\x8f\xd0\x8c\xba\x0d\x57\x77\x68\x00\x4f\x58\xae\x9b\x95\xbe\x37\x4e\xd7\xf0\x29\x9f\xe7\x21\x27\x5e\x47\x6e\x0b\x9a\xb7\x2d\xc0\x6e\xa3\x28\x38\x4e\x39\xbf\x3a\xc3\x31\xc6\x25\x48\x43\x12\xcd\x9b\x06\xb1\x5a\x29\x54\xd3\x3e\x7a\xab\xa6\xbe\x22\x61\x88\x6c\xa8\x11\xdb\x96\xb1\x14\x3d\x06\xdd\x6e\x0f\x3c\xba\x7a\x1a\xe9\xb9\x4e\xaf\x67\x77\x1b\xb2\xd2\x4e\x2f\x94\xde\x9c\x47\x0f\xcd\xe7\xbf\xdb\x32\xf4\x10\x19\x8b\x5a\xa9\x69\x8e\x32"}, +{{0x89,0x60,0xd7,0xbe,0xe8,0xc6,0xb3,0x9c,0xa5,0x93,0x4d,0x7c,0xdd,0xd1,0x6f,0x16,0xb3,0x66,0x3e,0x6e,0x03,0xe8,0x33,0xc0,0x57,0xe2,0x18,0x1e,0x45,0x97,0xcb,0x68,},{0x43,0x40,0x90,0x95,0xd4,0xf5,0x0f,0x5e,0xdd,0xbd,0x5c,0xd4,0xd2,0x01,0x22,0x98,0xcb,0x41,0xa4,0x0e,0x99,0x49,0x2d,0x5a,0x2d,0xb0,0x8b,0xe5,0x37,0x7e,0xa1,0x83,},{0x72,0x13,0xdd,0x4a,0x79,0xfd,0x54,0xde,0xc0,0xc5,0x48,0xef,0x42,0xe6,0xca,0xe0,0x15,0xbe,0x77,0x80,0x2b,0xf5,0x15,0xcd,0x25,0x82,0x76,0x8f,0x72,0xf5,0x63,0xeb,0xb2,0xda,0x36,0xaf,0x4a,0xae,0xac,0x56,0xbb,0xff,0xc9,0x93,0x2c,0x2e,0x24,0xec,0x95,0xda,0xff,0x00,0xa5,0xf7,0xa0,0xac,0xab,0x9c,0x8b,0xd3,0xc2,0x3b,0xb4,0x0c,},"\x30\x8d\x84\xc7\xa5\xf7\x86\xe5\x63\xe5\xc1\xea\x57\xaa\xb5\xe5\x55\xc0\x09\x97\x74\x9d\x15\xae\xe3\x54\x39\xef\xa6\x45\xda\x2c\x39\x67\x70\x31\x15\xc6\xc6\x3e\xd7\xf9\x47\x85\xc5\x47\x8f\x38\x46\x7b\x86\xe7\x62\x6e\x8f\xff\xa4\xd5\x1a\x2d\xc4\x5e\x6d\xf2\xa3\x5c\xec\x99\x55\x5e\xab\xc9\xf7\xa9\x3e\x2e\x2b\x68\x94\x59\xb4\xe0\xc9\x2b\x35\x15\x62\xc4\x17\xb1\x99\x71\x13\x75\x4e\xa5\x9e\x4a\x91\x51\x07\x28\xff\x30\x71\xa2\xbb\xd1\xf4\x65\xa6\x87\xf6\x7d\xae\x95\x56\x15\x03\x1a\x8a\xd5\x51\xfe\x73\x8a\x26\x0b\xbc\x44\x6b\x48\xdc\xa1\xd9\x79\x05\x1a\xb5\x84\x08\x32\xe1\x9d\x47\x3b\x66\x62\x17\xa9\x18\x39\x80\xd6\xb2\x7e\x3d\x3c\x76\xd9\x36\x65\xba\x23\x93\xe6\xab\x1a\x42\xc3\x90\x4d\x40\x25\x93\x2d\x60\x1a\x20\x2a\x59\xa4\xc4\x9f\xdb\x77\xf0\xe0\x28\x68\x24\x7d\xe5\xaf\xdf\xaa\x1b\x89\x42\x08\xac\x00\xd7\x7c\x6b\xb5\x4c\x6b\x2a\x73\xa4\x76\x57\xe4\x4c\x85\x13\x79\x63\xb5\x75\x21\xaf\x20\x97\x62\x48\xeb\x26\x14\x82\x14\x7c\xdf\x7a\x14\x5c\x36\x43\xe2\x9e\x05\x88\xbf\xda\xe6\xa0\x82\x90\x48\x53\xce\x5a\x10\xd2\x49\x70\xeb\xdf\xb7\xf5\x9d\x5e\xfd\xd6\xa5\xe7\xe0\xd2\x87\x97\x1c\x84\x6a\xcd\x54\xd8\x4d\xd4\x54\x68\xa4\x11\x0b\xab\x6e\xf8\xd9\xa5\xb4\xb2\x42\x67\x88\x90\x0b\x7e\x1a\xdf\xe0\x62\x43\x44\xf9\x8f\xe5\x9e\xf8\xa1\xe6\xc4\x05\xb3\x44\xeb\x97\xbb\x20\x47\x73\x74\x4b\x6a\x2d\x8c\x6e\x65\xd1\x7c\xea\x07\xde\x03\xb7\xf0\xfe\x49\xf1\xa5\x5c\x33\xd5\xf1\x5c\xe5\x5d\xf7\xc9\x56\x1b\x25\x1c\x6a\xc8\x07\xa9\x25\x53\xe1\xce\x91\x70\x12\xdc\xcf\xd6\x9e\x7d\xbd\x03\x8c\x7e\xee\xca\xe9\x86\x23\xf1\x8f\xbb\x65\x0e\x22\x18\xa0\xbc\x0f\xff\x43\xa7\x5a\x11\x64\x48\xbb\x73\x62\xf5\x27\xee\x6b\xc8\xe1\x07\x61\xcc\xcf\x9b\xcf\xc0\xd0\x00\xf2\x12\x7b\x4c\xc1\x92\x11\xd0\x95\xa0\xbd\xaa\x4e\x4b\xe4\x51\x9e\x6c\x84\x45\xea\xb9\xb3\x14\x4a\x45\xca\xb9\x99\x61\x35\xbf\x7f\x75\xa7\x8d\x22\x27\x59\x00\xf4\xce\x1f\x0a\x9e\xac\x13\x63\x64\x10\x30\x62\x89\x3d\xad\x43\x90\x42\x2b\x77\xe5\xf5\xd1\xd9\x4d\x70\x29\xc6\x09\x7b\x35\xca\x64\xa7\xa4\x76\xfc\xc7"}, +{{0xef,0x6b,0x9b,0x51,0xfd,0x4f,0x85,0x86,0xca,0x62,0x65,0x8e,0x04,0x2f,0xc0,0x9a,0x83,0xb9,0x43,0x03,0x35,0x26,0xff,0xc3,0x26,0xc6,0x5e,0xb3,0xa5,0xfb,0x59,0x4b,},{0x1d,0x6e,0xec,0xe8,0x05,0xe0,0x88,0x78,0x21,0x87,0x6b,0x7e,0xd6,0xed,0x5b,0x07,0x14,0xd6,0x46,0xfb,0xec,0xda,0x38,0x76,0x4f,0x94,0xc8,0x15,0x5e,0x61,0xd0,0x04,},{0x71,0xd1,0x71,0x07,0x1c,0xd0,0xfe,0xa1,0xc6,0xa9,0xcf,0xad,0x1f,0x7f,0xd8,0x35,0xe8,0x5f,0xf9,0x06,0x77,0x8b,0xc6,0x34,0x5a,0x4d,0xec,0x43,0x13,0xec,0xc2,0xbf,0xf7,0x55,0xa7,0x17,0xeb,0xd9,0x12,0xa5,0xe0,0x28,0x40,0xac,0x07,0x38,0x42,0xf9,0xbf,0xca,0xa5,0x89,0x13,0xe2,0x60,0xe3,0xc7,0x33,0x93,0xd3,0x66,0x85,0xc7,0x0e,},"\xa8\xf3\xf1\x96\x65\xde\x23\x90\xd5\xcc\x52\xb0\x64\xb4\x85\x12\x73\x67\x74\x86\xd8\xf5\x56\x3b\xb7\xc9\x5f\xa9\x4d\xb3\x35\x61\x61\xee\x62\x22\x21\xf1\x0c\xbb\x1f\xa1\x95\xaa\xc7\x23\x1e\xa7\x16\xd7\x4b\x46\xb3\x7b\xc8\x5a\x70\xdb\xa3\xdf\xaa\x16\x75\x21\x7b\x35\x11\x99\xe7\x4a\x97\x10\x28\xf7\x29\xb7\xae\x2b\x74\xae\x8c\x6b\x3a\x06\x79\xc3\xe3\x29\x68\x02\x84\x4a\xd5\xbb\xa3\x43\xf6\xf9\xf7\xc4\x66\x1b\x4a\x29\xb4\x4f\x17\xe8\x9e\x11\x4f\xb2\x20\xe9\x84\xcd\x98\x0e\x94\xc3\xd2\xbf\x98\x73\xe0\x60\x5c\x92\x30\x17\x44\xa3\x03\x5e\xf0\x46\xba\xd2\x66\x6b\x5c\x63\xeb\xec\xf9\x3c\xc1\x40\x29\x19\x46\xc0\xfa\x17\x03\x40\xce\x39\x50\x92\xde\xed\x79\x84\x13\x52\xfb\xfe\xe0\x3a\x92\x7e\xb4\x58\xf2\xa6\x33\xed\x32\x71\x65\x2f\x5b\x0f\x99\x60\xcd\xf9\x01\x5d\x56\xfd\xab\xd8\x9e\xe7\x1e\x25\x9a\xf6\xeb\x51\x4b\x4c\x1b\xd4\xa6\x66\xf5\xb5\xa3\x5c\x90\xf3\x5b\x14\x94\x57\xaf\x29\x44\xdd\x0a\xa8\xd9\xb5\x42\x28\x3a\x7e\x54\x12\xb7\x75\xe4\x21\xd2\x12\x6f\x89\xbe\xbc\x3c\xa3\x7f\x73\x07\x16\x21\xf1\x32\x1e\xee\x52\xe9\x69\x04\x86\xa3\x3c\xd7\xff\x9c\x99\x67\xfb\x65\xee\x4e\x90\x7b\x6b\x85\x22\x11\x47\x3d\x21\xe9\xd9\x1a\x93\x36\x2a\xc7\x61\x76\x0e\x8c\x7b\xbe\xa4\x86\xc3\xd6\x05\xf9\xe1\x1b\x86\x13\x68\x19\xa7\xab\x3f\x32\xf1\x3f\xfc\xa1\x68\x17\xfe\xd1\x97\xff\x88\x0b\x4d\x6d\x9a\x80\x8f\x7f\x87\x87\x63\xa0\x45\x72\x8d\xf7\x2f\xaa\xa9\x63\xe4\xcb\x1c\x09\xcc\x2b\x2d\xa9\x20\x28\x0c\x83\x66\xb7\xd1\x8b\xf8\x97\x2d\xf1\x6c\xc2\x34\x48\xfb\xe6\xb2\xe6\xe1\x6c\xbb\xf0\x74\x51\x29\x85\x40\x53\x18\x96\x37\xce\x11\x5d\x23\x98\x43\x3c\x15\xd6\xf1\x16\xa2\x05\x33\x48\x24\xaf\x28\x2f\xa7\x58\x49\x4c\x47\x86\x8e\xa8\xf4\xdf\xad\xc7\x05\xe8\x61\xaa\xd2\xeb\x8e\xf3\xdb\xbe\xd2\xa4\x56\x9e\x15\x83\x4a\x76\x0c\xce\x0c\xbb\xc8\x4b\x28\x9e\x77\x9b\x98\x83\x46\xb9\x06\x9c\x74\x4c\x97\xab\x2b\xf4\x2b\x08\x6d\x2f\xb0\xa4\x11\xf5\xce\x99\xf0\x81\x9a\x30\x86\xb4\xfe\x9d\x96\xc7\xc9\x90\x8d\xce\x28\xdf\x1d\xdd\x30\xf3\x50\x1d\xda\xf7\x81\x10\x73\x4f\x9d\xcd\xfe\xc3"}, +{{0xba,0xd4,0x7c,0xd4,0xbd,0x89,0x84,0x90,0x67,0xcc,0xe1,0xe6,0x3c,0x3d,0x91,0xe9,0xb7,0x87,0xae,0xa8,0x58,0x4e,0xdb,0x07,0xf3,0x45,0x1e,0xf6,0x7e,0x7b,0xd7,0x9b,},{0xab,0x0c,0xe9,0xba,0x1d,0x29,0xbd,0xfb,0x85,0xa0,0xe6,0x6b,0x76,0xb5,0xe2,0xe0,0x5f,0xf7,0x32,0x56,0x9e,0x43,0x75,0xcc,0xd7,0x50,0x98,0xe9,0xe7,0x1d,0x17,0xbf,},{0xe5,0x72,0x4a,0x1d,0xd4,0x63,0xa9,0x7d,0x12,0x22,0xc5,0x18,0xc4,0x92,0x5d,0x32,0x22,0x02,0xd1,0x0f,0x04,0xcd,0x07,0x8e,0x77,0x1e,0x0f,0xb3,0x95,0x1d,0xbc,0x14,0x93,0xa2,0x34,0x46,0x07,0x54,0xc3,0xaa,0xe3,0xdf,0x93,0x00,0x8d,0xbb,0xfb,0x31,0x0c,0x99,0x59,0x2b,0xed,0xe7,0x35,0xa4,0xae,0xab,0x03,0x23,0xa1,0x21,0x0d,0x0e,},"\xb5\xa6\x1e\x19\xe4\x86\x3e\x0b\xb5\xf3\xfa\xb6\xc4\x97\x0d\x87\x85\x96\x89\x55\x21\xfa\x1e\x7f\x67\x8c\xaf\xa2\xde\x53\x32\x2f\xd4\x58\xa9\x8a\xa6\xe3\x58\x05\x42\x9f\x65\x12\x91\xb9\x5b\xd9\x95\x0e\x15\x5f\x3a\xda\x0b\x60\x91\x59\xa4\xab\xda\x59\x90\xc0\x4b\xc2\xe7\x64\x42\x2f\xb4\x9e\xf4\x2f\x12\x52\x9f\xf6\xf6\xa8\x20\x29\xff\x01\x85\x66\x2e\x65\x8f\x83\xc5\x46\xee\xd0\x9f\x06\xb5\xa6\x8e\x85\x7c\xda\xd0\xeb\x9e\xc4\xee\xcb\xfd\x88\xf3\x4b\xc8\x09\x90\xf8\x64\x4a\x9b\xfd\xde\x1d\x9f\x3a\x90\xd5\x57\xa8\xb8\x28\xd5\xce\x06\xa6\x4e\x3b\x23\x85\x82\xbb\x4c\xbe\xba\x30\xed\xc4\x9e\x81\x22\xc5\x5e\x95\xba\xdc\xf5\x02\xcc\x56\x78\x69\xc0\x9e\x9f\x46\xc6\xff\x3f\x68\x78\x98\x6b\x1d\xe0\x0b\x72\xa1\x85\x80\x46\xfc\xd3\xa6\xe9\xcd\xaf\x5b\x07\x3c\x56\xf2\x02\x50\x63\xa2\xd1\x78\xbd\x4c\x1e\x8c\xbc\x1e\x6e\x67\x1a\xa9\x7f\xb2\xcb\x4c\xc8\xa6\x2c\x20\xbe\x41\xc7\x76\x37\x2c\x8e\x7b\xe6\x3b\x48\x2e\x6c\x63\xfa\x85\xd7\xcf\xfb\xc1\xb2\x82\x0b\xae\x1f\xc1\x28\x34\x3a\x1e\x20\xfc\xf1\xbc\x35\x02\xee\xe8\x13\x58\xcc\x9a\x74\xc7\x2a\xf6\x35\x30\xf9\x6a\x25\xa6\x04\x64\x8f\xf5\x70\xdf\x1e\xb8\x9d\x1f\xdd\xba\xb2\x86\x79\xba\x2e\x9b\x41\x97\x7e\x9a\x9c\x1c\xae\xcd\xbf\xc3\x61\xa1\xdd\x05\x5e\xc5\x16\x20\xa9\xbb\xdb\xba\xf7\x18\xc9\xcc\x13\x6d\x20\x07\x71\x03\x99\x53\x6d\x13\x33\x24\x85\xec\x38\x87\x97\x85\xe0\xc9\xce\x99\x15\xa8\x02\x51\x37\x39\x90\xa5\x9b\xce\x44\x03\x26\x03\x1a\xb1\xb4\x58\xbf\xa5\xb8\xa4\x79\x3d\xa4\xee\x11\xab\x7a\xf2\x0d\xe2\xa1\x18\xc9\xae\x52\x1a\x41\x7b\x68\x20\x7f\xc8\x85\xe1\x09\xd8\x46\x3e\x9f\x02\x27\x87\xcc\x73\x0d\xb0\xb1\xfa\xae\xd2\x57\xbe\xd9\x01\x71\x08\x85\xb7\x4e\x99\x4f\x54\xf6\xf2\xae\xb6\x4f\x0f\x60\xb5\x9e\xfb\xf2\xe3\xbb\x65\x15\x42\x46\x03\xa1\x13\xc0\xb8\xa3\x1b\xa3\xc1\xe9\xa9\xb8\x11\x8c\x87\xec\x69\x49\xb7\x5f\x49\x62\x7e\xa7\xb1\x32\x88\x89\x39\x11\x04\xd4\xf4\xa3\x89\x2c\xf0\x0f\x26\xa7\x3c\xda\x2a\x40\xf9\xb7\x15\x7a\xfc\x40\x66\x7f\x4a\x04\xf6\x47\xdb\xf9\x39\x06\xb8\x4c\x9a\x35\x16\x4e\x1b\xc9\x02"}, +{{0xca,0xba,0x8e,0x05,0x33,0x11,0x3a,0x4b,0xe1,0x73,0x40,0x8b,0xa8,0x3c,0x0d,0xb7,0x42,0x60,0x80,0x2f,0x91,0x86,0xc3,0x91,0x40,0x26,0x55,0xac,0xde,0x60,0x15,0xcb,},{0x2d,0x7b,0xef,0x61,0x64,0xc2,0x79,0xfa,0x10,0x28,0xa9,0x78,0x8e,0x3e,0x8e,0xe8,0xac,0x15,0xed,0xcf,0x92,0xa5,0x85,0x50,0x62,0x95,0x23,0x10,0xb4,0x68,0x45,0x47,},{0xec,0x35,0xec,0x32,0xc8,0xa4,0x00,0x88,0x27,0xe1,0x78,0x49,0x2b,0x3b,0x8b,0xee,0x22,0xa4,0x95,0x4f,0xc6,0xb2,0x5f,0x4f,0x22,0x5d,0xd7,0xed,0x23,0x69,0x89,0x00,0xde,0x81,0x56,0x75,0x6a,0x8e,0xdc,0x35,0xc5,0x1d,0x10,0xf8,0x2b,0x83,0x0a,0x2a,0x65,0x96,0x76,0xea,0xc9,0x11,0xf9,0x60,0x24,0x47,0x66,0xe0,0xc3,0xc6,0x07,0x05,},"\x24\x13\xa3\x2b\xca\x5c\xe6\xe2\x30\xe5\x65\xeb\x85\x84\x93\xd5\xd0\x4e\x6d\x2e\x2a\x7a\xb1\xf8\x9a\x3b\x42\x33\x11\x67\x6b\xfa\x93\xc6\x7d\xaa\xfd\x1c\xfc\x71\x09\xe0\x40\xba\xc5\x2c\xbf\xe0\x7c\x28\x28\x0b\xb6\xac\xf6\xe3\xa3\x10\x73\xda\xb2\x96\x53\x78\xdd\x77\xf6\x1f\xe9\x24\x71\x35\xc1\xa6\x31\xb7\x9a\xd6\x68\xc9\xea\x1c\xd4\x11\x2d\x8d\x3a\x06\x4c\xc2\x1d\xf3\x2a\xea\xc7\xdd\x71\x8b\x09\x1f\xb6\x91\x5b\x8b\xc0\x63\xbb\x58\x15\xc3\x76\xe0\x14\x76\x31\x2a\x2e\x54\x33\x41\x7a\x7a\x93\x15\xd6\x59\x99\xb0\x2f\xf4\x64\xa4\x74\xa5\x97\xe5\x39\x88\x77\x36\x70\xec\xa4\x6a\x6e\x26\xcf\x96\xe9\x48\x8e\x9e\x63\x44\xbc\x78\x3d\xdf\xb5\x35\xe7\x6b\xb3\xb9\xa6\x03\xff\x4c\x59\xc7\xdb\xe2\xd8\xb6\x19\x8d\x5b\x24\x49\x0b\x4e\xa9\x6c\x95\x95\x9f\xfb\xf3\xd8\x21\x8e\x76\x0d\xaf\x20\xe0\x1e\x2f\x36\xc8\x4b\xb0\x97\x11\x5a\xbd\xde\xe9\x2b\xed\x82\xd1\x6b\x15\xa9\xe1\x92\xe9\x89\x3a\xc6\x38\x46\x1d\xf5\x07\x20\x7b\x0c\xf5\x95\x88\x4d\x8a\x99\xfb\x9c\x70\x45\xf9\xbf\xf7\xb7\x3f\x00\xca\x3f\xd5\x95\xa5\xce\xc2\x92\xad\xb4\x58\xbd\x94\x63\xbe\x12\x04\xd0\x16\x78\xd2\xf4\x38\x9b\x87\x20\x11\x5f\xa5\x97\xc4\x02\xb4\xff\x69\x4b\x71\xce\x4f\x3d\x33\x0d\x5e\x2f\x3c\x3a\xd6\xd9\x6a\x9b\x34\x39\x23\x0f\xc5\x3a\x44\x79\x4c\xda\x59\x55\x57\xc4\x06\xca\x15\x89\xbc\x7b\xe8\x1e\x2d\x79\x63\x60\x33\x25\x3f\xa7\xbd\xd6\x00\xc6\x7f\xc5\x59\x36\xbd\x96\xce\x04\x28\xc3\xeb\x97\xba\xd1\xde\x0a\x5f\xbb\x9b\x67\x51\x57\xde\x5f\x18\xbc\x62\xa7\xc2\x2c\x94\x83\xe2\x80\x2e\x67\x9b\x5b\x8f\x89\xdb\x0f\xc3\x7f\x7c\x71\x50\xad\x5a\xc8\x72\x2c\xeb\x99\x9b\x24\x35\xe6\x99\x72\x17\x09\x23\x36\xef\x1c\x8a\x22\x92\xda\xb9\xa4\x6f\xf8\xa9\xe1\x0d\x33\x55\x76\x5c\xac\x9d\x65\x98\x77\x0f\x4f\x01\xea\x63\x91\x25\xfd\x03\x16\x09\xdd\x1a\x50\x7d\x96\x28\x0c\x7d\x01\xa3\xee\x98\x7e\x9b\x21\x0e\xc8\x74\x4c\xd4\x8c\x74\xf8\xaf\xee\x96\x1e\x8e\xf2\x21\xf8\x26\xa1\xfe\x6e\x7d\xf0\xcb\x15\xad\x7c\x7e\xf4\xa9\x1f\x9d\x0f\x4c\x2e\x1b\xde\xa6\x35\xd2\x75\xfa\xc8\xc4\xbc\x06\x01\xf4\x90\xdb\xdb\xc7\x34"}, +{{0x9b,0xf3,0xfb,0xc7,0x30,0x8b,0x46,0xf6,0x03,0x6b,0xad,0xe0,0xc3,0xca,0x19,0x9f,0xac,0x66,0x2b,0x07,0xf1,0x03,0xbf,0x75,0x18,0x1d,0x52,0xba,0x6a,0x58,0xbe,0x05,},{0x2f,0x6a,0xc6,0xfc,0x33,0xbc,0x06,0x0c,0x1d,0xc3,0xcb,0x9d,0x1a,0x2b,0x91,0x15,0x84,0x5a,0xdd,0xb1,0x6c,0x4b,0x84,0xbe,0x37,0xed,0x33,0xad,0xb3,0xb3,0xd3,0xa8,},{0x0c,0x31,0x36,0xe0,0x1f,0x9b,0xcd,0x99,0xe1,0x0d,0x3d,0x12,0x4b,0x0c,0xdb,0x07,0x72,0xbe,0xc1,0x8a,0x86,0x4b,0xe8,0x1b,0xd1,0xda,0xa4,0x4d,0x81,0x8c,0x3d,0x47,0x0d,0xfa,0xa8,0xab,0x6e,0x9a,0x76,0x1c,0xf0,0x3f,0x93,0xef,0x9c,0xc7,0x82,0x91,0x09,0x6e,0xd6,0xd1,0x0c,0x08,0xfa,0x2f,0xba,0x3b,0xac,0x04,0xdd,0xe2,0x0f,0x0c,},"\xd6\x5e\x36\xa6\xa3\x81\x95\xec\xb9\x1d\xe3\xc8\x48\xb5\x1f\x63\x92\x45\xfa\x2b\xab\xa8\xa6\xf8\x59\x47\x15\x9d\xec\x0e\xd3\xfa\xe8\x0c\x5a\x0f\x8c\x66\xff\x24\x79\x3c\x89\xc0\xc6\x87\x54\x3b\xc6\x33\x54\x7a\x1f\x37\xf7\x30\xd9\x70\x12\xeb\xbd\xc7\xac\x33\x9c\x48\x90\xc0\x85\x6b\xbf\xe2\xba\x29\xb2\x5a\x7a\xa6\xb0\x89\xc0\x33\xfe\xcb\x76\xdb\x62\xdd\x3c\x00\xf6\x42\x1b\x9e\x76\xdd\x0e\xa3\x66\xeb\x2d\x4a\x05\x2e\xe6\xcc\x73\x6e\x38\x19\x19\x1d\x5a\xd7\xa6\x6d\x2b\xe0\x42\xcc\x65\x39\xe5\xf3\x56\x52\xb1\x55\xa7\x27\xf3\x88\x8d\x93\xf9\x3a\x91\x02\x59\x8f\x75\x38\xa9\xab\x7c\x77\x7e\xec\x79\x42\x6a\x60\x75\xd6\xf3\x8d\x64\xc4\x85\x52\x0f\x64\x13\xff\x4d\x35\x8a\x8a\x9c\xbd\xab\x01\xad\xf4\xdb\x02\xad\xae\xa2\x64\x94\xd1\xf5\xd6\x17\x63\x7f\x27\x7f\x8b\x0e\x6e\x7e\x61\xe2\xee\xcc\xdd\x33\x7d\xe2\xba\xf0\xca\x26\x4c\x14\xc8\xcb\x83\x68\x00\x0b\x9c\x71\x43\x85\xf4\x13\x73\x7d\x68\x16\xe2\x12\xca\xe2\xae\xcf\xff\xc3\x2f\xd1\x6d\x46\xc3\xec\xee\x6a\xb0\x74\xc0\xd7\x68\xbd\xfe\x99\xb8\x6c\xbb\xc8\xdf\x9c\x47\xcd\x58\x6d\x46\x58\x71\x26\x8d\x4a\x9d\x1c\x87\x72\x36\xab\x78\xf8\x85\x9c\x11\x4e\x25\x1c\xab\xc4\xbe\x0f\x8b\xc2\x5d\x14\x8c\x5f\x54\x3e\x29\x07\x45\xd1\x18\x03\xe4\x9f\x5b\x53\x19\x3f\xe3\x99\x69\xc0\x39\xb3\xf2\x49\xb3\x2f\x2b\x85\x98\xb6\xac\xf4\xed\x64\xd5\x75\x2b\xb7\x72\xff\x4e\xe0\x0c\xe0\xf8\x5e\xcb\xb4\xcf\xc4\xce\x07\xda\xf2\x80\x98\x68\xc2\x90\x3b\x78\x1e\x12\xa2\x74\x10\x5f\x06\x18\x10\x29\xe4\x7f\x2b\xfb\x21\xf4\x94\x80\xaa\x1e\x44\x47\x15\xc0\xb9\xff\x07\xea\xd8\x89\x75\xd9\x35\x85\xd2\xff\x42\x48\x32\xa9\x78\x3d\x94\x90\x6a\x60\xf8\x77\xae\x1c\x85\xff\x15\x31\x7b\xad\xca\x1e\x61\x31\x74\x33\xc7\xce\x96\x27\x9b\x67\x8e\xc9\xd1\x74\xdd\x08\x70\x08\x0b\x23\x41\x54\xf6\x26\xa5\x34\x62\xcf\xd5\x47\x84\x2e\xab\x87\x05\x60\x5b\x8e\xe8\x85\x72\x9e\xe7\x8d\x18\x33\xaa\x43\xf5\x5a\xc2\x27\x31\x98\x9f\xde\xda\x7d\xc5\xfa\x9c\x01\x98\x5f\x26\x61\xe6\xc7\x32\x6d\x34\x6e\x6d\xb2\x7e\x6f\x92\x1f\xae\x7c\x93\xa2\x17\x0e\x10\xdd\x0c\x46\x0b\xdc"}, +{{0x64,0xe8,0x93,0x04,0xa3,0x35,0xe9,0x03,0xcb,0x36,0xc0,0xbd,0xf1,0xa6,0x41,0x2e,0xf3,0x68,0x46,0x80,0x06,0xb7,0x3d,0x3d,0x2d,0x61,0xcb,0x03,0x0c,0xc5,0xf8,0xd1,},{0xa1,0x80,0xef,0x3a,0x66,0x1c,0x3c,0x47,0x9d,0x5f,0x69,0x80,0x7c,0x90,0x27,0x48,0xe3,0x5e,0x7f,0x72,0x51,0x21,0xe3,0x7a,0x5d,0x91,0xb8,0xbe,0xc8,0x8d,0x83,0xa6,},{0x92,0xeb,0x44,0x54,0x81,0x40,0x01,0xec,0xfc,0x18,0x02,0x5d,0x64,0x21,0xf6,0x46,0x45,0xa5,0xbc,0xbb,0x5c,0xb8,0xfd,0x85,0xc1,0x4d,0x77,0x26,0x17,0xc5,0x03,0xe8,0xbe,0x7d,0x3b,0xcf,0x11,0x7f,0x5e,0x68,0x01,0xd1,0xc3,0xb9,0x6f,0x90,0x90,0xa6,0x6d,0xdc,0x67,0xf8,0xcf,0x8f,0xf0,0xf1,0xc1,0x25,0xb1,0x6b,0x15,0xe2,0xce,0x07,},"\x2f\x51\x07\x4d\x98\x1b\xda\xfa\xfb\x02\xa4\x0f\xe8\x26\xc4\x5f\x31\x71\xc1\xb3\x18\x4d\x8c\x26\x0b\x82\xb8\x41\x1f\xc6\x25\xcb\x02\xcc\xfe\x75\x5d\xc2\x9d\xc7\x89\x5b\xf7\x59\xe6\x1b\x24\x50\xda\x1a\x65\x6a\x38\xd4\xf7\x0d\x2e\xe7\x48\xc5\x18\xc6\x42\x03\x06\xe5\xf0\x1e\xc7\xa0\xff\xe0\xe9\xdc\xeb\x93\xf6\xc0\x77\xb1\x26\x62\x88\x15\x84\xf9\x8c\xe6\xab\x94\x5f\x87\xfc\x6d\x12\x3c\x45\xd6\xcd\xfd\x82\x37\xa1\xce\x36\x35\xb6\x23\xa7\x9d\x02\x0d\xf4\x4c\x74\xb8\x9a\xc1\x4a\x32\x1f\xbf\x33\xa8\xc0\xa2\x55\x9f\xea\x1c\x2b\x15\x60\x76\xb8\x13\x90\x8f\x84\x2e\xbe\x4c\x2b\x94\x90\x89\xe5\x2b\x1a\xe4\x0d\xc6\xe4\xb2\xab\xbc\x43\x9a\x0b\xf7\x23\x69\x67\x9a\xab\x6f\x4c\x00\x01\x8b\xe1\x47\xf7\xc0\xa6\x7b\x96\x79\xee\x88\xa5\x38\x19\xc4\x9f\x7b\x67\x5e\x30\xa8\xb5\xaf\x39\x66\x1e\xe8\xdb\x21\x01\x04\x11\x29\x49\x68\xf8\x8e\x5d\x60\x4d\x0d\x88\xd7\x6a\x7e\x48\x64\xfa\xd3\xa5\x6f\x5f\x62\x4b\xa1\xb3\x4e\xa9\xcb\x72\x08\x50\xaa\xd3\xbd\x4f\x0a\x88\x2a\x7d\x25\xfb\xec\x2b\xb7\xca\x86\xda\x61\x6d\xa9\x6c\x15\x62\xc6\xd6\xa1\xab\xcc\x64\x1e\x1b\x58\xb2\xc1\x78\xe1\xc3\xbc\x8a\x3b\x36\xec\x9e\x14\x4d\xd2\xe7\x5b\x0b\xc8\xc0\x8c\xcb\x0d\x6e\x34\x27\xb0\x32\x2b\x3d\x6a\xb9\x3f\x3f\x60\xb9\xcc\x5b\x61\xda\xd0\x23\x85\xa1\x49\x49\xf9\xb8\x7a\x8e\x3a\xf1\xe0\xe0\xfa\xb7\xa9\xa9\x28\xc7\x53\xfc\x61\x10\x44\x4a\xf7\xcc\xaf\x80\x27\xed\x64\x1b\x9e\xd8\x7f\xa5\xd8\xe1\xf7\x6c\xae\x46\x5d\x57\xa7\x0d\xad\x9e\xbf\xdd\x3c\xe7\x57\x6a\xc4\xde\x89\xd9\x8f\x42\xe2\x82\xad\x87\xad\x6a\x50\x42\x57\x7c\xbb\xbc\x4d\x95\x1e\x2a\x86\x76\xfe\xdc\x8c\xb1\xb1\xbd\xf7\x6c\x3a\x38\x84\x63\x85\xa8\x5a\xa2\x47\x06\xc2\x0a\x8b\x38\x46\x5f\xe2\xae\x0e\x41\xf7\x8e\x61\x4b\x8e\x96\x42\xfe\x24\x71\xa9\x01\x57\x47\xdb\x97\x6e\x0c\x78\x48\xc2\x3f\xf3\xf4\x17\xcb\x05\xa8\xd5\xef\x40\x13\x0a\xdf\x85\x5c\x99\x8a\x62\x10\x4d\x7e\x2f\xb7\xc0\xf9\xaa\x2a\x49\x60\x75\x62\x3c\xed\x2c\x0f\x7e\xec\x10\x14\x7f\xf9\x60\x8a\x8a\x04\x2e\xf9\x81\x17\x45\x9b\x93\x83\x7f\xd1\xb8\xd5\xef\x03\x97\x8e\xad\xa7\x4c\xac"}, +{{0x6f,0x63,0x43,0x87,0xca,0x2c,0x0c,0xb1,0x67,0xa7,0x40,0xd6,0xaf,0xd8,0x9e,0x2a,0x28,0xf5,0x30,0x71,0x84,0xe8,0x1c,0xba,0x3c,0x03,0x70,0x46,0xa5,0xed,0xe2,0x3c,},{0x01,0x1f,0x2a,0x9a,0x11,0x1c,0x38,0xf3,0x49,0x0c,0xad,0x16,0x85,0xbe,0x78,0xec,0xee,0xdc,0x6f,0xac,0x4a,0x32,0x21,0x30,0x1c,0x69,0xc8,0x4b,0x1e,0xc7,0xb3,0xa7,},{0xfd,0x17,0xc6,0x18,0xcd,0xbb,0x5d,0x45,0x9e,0xa2,0xac,0xa8,0x86,0xf0,0x51,0x2c,0x62,0x32,0x51,0x28,0x4a,0xae,0x3a,0x83,0xeb,0x5d,0x7f,0x60,0xda,0x1d,0x9b,0x2b,0xa0,0x83,0xc4,0x55,0xa5,0xe2,0x58,0x3a,0x3c,0xba,0x73,0x6e,0x7b,0x96,0x1b,0xa1,0x9c,0x1c,0xc8,0xdd,0x90,0x74,0x5d,0xa8,0x2a,0x15,0xdf,0xc6,0x62,0xe8,0xe1,0x0d,},"\x86\x5c\x20\xa9\x4a\xc3\xf2\xe3\xbd\x5c\xb8\x5b\xec\x9d\x33\x72\x66\x71\xfe\x01\xf9\xc5\x37\x01\x7d\x59\xc8\xd5\x10\x6e\x43\x36\x0b\xf7\x6f\xc0\x61\x86\x70\x59\x80\xc8\xa8\x7b\xa3\x63\x3a\x4a\x17\x04\x26\xec\xc0\xde\xfb\x6d\xb2\x67\x0f\x5f\x59\x25\x33\x77\x4c\xda\x50\x05\x2a\xe5\x97\xd4\x8d\xea\xcc\x26\x37\x06\x3b\xfd\x51\x9f\x2e\x79\xba\xc8\x17\x75\xbe\xcc\xb1\xab\x2f\x5b\x39\x71\x2e\x2e\x82\x94\x69\xb7\x5a\x2d\x2d\xbd\x08\xaa\x6d\x24\x72\x34\x04\xb2\x5e\xb9\x48\xa4\x83\x4c\x55\x24\x6c\x80\x79\xa8\x2e\xc6\x43\x54\xe8\xc2\x38\x8f\x8c\x5a\x61\x6b\x3c\xdc\x37\x1e\x62\x63\xfa\xbc\x9f\x60\x99\x21\x9e\x86\x15\x85\xfe\x82\xa6\x7d\x61\x0d\xd1\xeb\x5c\x81\xc9\x6b\x5c\xb3\x54\xa6\x89\xfd\x8a\xac\x8d\xb7\x6c\x43\x3f\x0c\xb0\xb3\x1c\xf1\xd8\x55\xb6\xa3\x0a\x3d\x2a\x21\x2e\x9b\x4f\x7d\x7a\xfe\x61\x99\x51\xf9\x8d\x2f\x1b\xa2\xc1\x01\x08\x5b\xa8\x1f\x49\xb3\x60\x37\xcd\x64\x57\xa7\xea\xa8\xf4\xf3\xbe\xdf\x68\xd0\x9f\xc9\xfa\x25\xa9\xd7\x54\xdb\x65\x36\x02\x85\x41\x2d\x1a\x6d\xa5\x37\x88\x90\x5f\xcf\x4e\xfa\x8a\x80\xcd\x86\xca\x48\xb8\x45\x63\x3d\x8c\x31\xc2\xae\x06\xf1\x6c\x4c\x6b\xbb\xe9\xcd\x1a\xfb\x59\xe1\x01\xbe\x50\xe0\x35\x35\xdd\x8a\x65\xe4\x5b\xba\x46\xd4\x5c\xb1\x4b\xad\xfc\x8e\x93\xab\x52\x67\xf4\xe4\x92\xab\x1f\x9a\x95\xe6\x1f\xca\xb8\x1c\xbf\x2b\xd8\x67\xa3\xec\x7b\x4b\xaa\x18\x9a\x0f\x08\x56\x70\x75\x59\x61\x29\xdc\xf9\xff\x1c\x50\x2d\x32\x79\xe8\xaa\x6c\xe5\x6e\xaf\x13\x45\x82\xa9\xe4\x30\xa5\xaa\x8c\xa1\x0c\x3d\xa8\xbc\x79\x3d\x02\x56\xad\x19\xae\xa7\x14\x9f\x0e\xa7\xea\x95\xfa\xcf\xac\x1c\x5c\xfd\x29\xd7\xa3\xfe\x1a\x41\x79\x75\x73\x9e\x14\xda\x8e\xdc\x81\x99\x00\x47\x2c\xa8\xc6\x97\x16\x32\x8e\x8a\x29\x9f\x97\x4e\xdf\xf7\x41\xaa\xbc\x1c\x07\x4a\x76\x1b\x3e\xc8\x76\x1d\xda\x2e\x7e\xed\x7a\xf3\x3e\xf0\x04\x09\x84\x9d\x41\x54\x97\xc5\xed\x5d\xfa\xa2\x25\x9a\x31\xd0\x76\x39\x81\x70\xb2\xd9\xd2\x10\x20\x8b\x4a\x4c\x7d\xb8\xc6\x26\xd1\xc5\x33\x56\x2a\x1f\x95\x48\x9f\x98\x19\xe4\x98\x5f\xc4\xe1\xd1\xa7\x07\xbe\x5e\x82\xb0\x05\x48\x1d\x86\x37\x7f\x42\x4e"}, +{{0x4b,0x2e,0x1a,0xe6,0x0f,0xa5,0xd3,0x83,0xba,0xba,0x54,0xed,0xc1,0x68,0xb9,0xb0,0x5e,0x0d,0x05,0xee,0x9c,0x18,0x13,0x21,0xdb,0xfd,0xdd,0x19,0x83,0x95,0x91,0x54,},{0x36,0xc0,0x20,0xb1,0x85,0x52,0x34,0x56,0x19,0xef,0x88,0x37,0xeb,0x8d,0x54,0x94,0x84,0x0e,0x85,0xf4,0x68,0x09,0x34,0x3b,0x4d,0x6f,0x40,0x61,0x25,0xda,0x55,0x7d,},{0x22,0x20,0x11,0x9e,0x83,0xd6,0x9a,0x6a,0x3e,0xed,0x95,0xfa,0x16,0x6d,0x1d,0x11,0x28,0xa3,0xf2,0x32,0xca,0x1b,0x78,0xbc,0x94,0xb4,0xd4,0x76,0xc4,0x77,0x94,0x43,0x61,0x4b,0x87,0x72,0xaa,0x22,0x32,0xcb,0x07,0x20,0xa0,0x55,0xeb,0x71,0xd8,0x40,0x7f,0x3a,0xb1,0x9b,0xaa,0x1d,0x96,0x2c,0x05,0x2c,0x84,0xc0,0xbd,0x58,0x96,0x08,},"\xfa\xb9\x8b\x2b\xbf\x86\xae\xb0\x50\x86\x81\x2a\x4b\x00\x49\xa1\x04\x2a\xbb\x76\xdf\x9c\xd2\x90\x87\x55\x70\x63\x03\xef\xed\xb1\xad\x21\xe8\xbc\x8d\x75\x62\x34\x9e\x1e\x98\xce\x0d\x75\x2f\x4b\x3d\x99\xe6\x77\x36\x8b\xd0\x8c\x78\xfe\x74\x25\xec\x3b\x56\x0e\x38\x3b\xd4\x2a\xf6\x49\x98\x86\xc3\x5a\xdd\x80\xa5\x82\x8b\x61\xd6\x64\x4d\x7d\xc4\x43\xba\x2c\x06\xf9\xba\xd2\xec\xcb\x98\x3d\x24\x45\x8f\x6a\xda\x1b\x10\xbb\x5b\x77\x17\x2c\x5c\xdd\x56\xd2\x73\xd1\xe4\x10\x10\xb2\x5c\xf4\x8a\x7d\x58\xd7\x25\x57\x02\xac\x12\xf2\xa6\xfe\x29\x18\x46\x63\x95\xf4\x60\xd1\x52\x36\xd0\x35\xae\x94\x10\xca\x86\xc4\x60\x51\x28\x29\x9f\xaa\xf0\x90\x15\xf1\xad\xee\x77\x68\xee\x1a\x8f\x8c\xa0\x6d\x10\xdd\x7f\x95\xc4\x6f\xa1\x02\x53\x06\x5f\x9d\x6f\x90\x29\x59\x08\x80\x9f\xd7\x79\x57\x1b\xe2\x9e\x0a\xe6\x6e\x0b\xcb\xde\xb7\x91\x3d\x2b\xbb\x76\xac\x30\x2f\x34\x52\xc5\x5e\xf1\x99\xa4\x8e\xce\xb0\xe3\x59\x6c\x7b\x4c\x03\x86\xda\xe7\x10\x1e\xa2\x44\xa3\x3c\x4c\xdc\x83\x06\x72\xdf\x83\x65\x5b\x35\x33\x80\x52\x30\x7b\x94\xd2\x23\xca\xb1\xaf\x69\xe0\x7f\x78\xe5\x8c\xbb\x0c\xb3\xc5\x35\x1e\x3a\x6b\x0c\x4a\x92\x7f\x75\x62\xc5\x98\xd2\xd3\xdf\x90\x56\x9f\x61\xdb\x1a\x3c\xb0\x14\x0b\x56\xea\x02\xcf\x77\x45\xfb\xee\xc2\x02\x86\x73\xd6\x7f\x1e\xc5\xf7\xda\xf9\x71\x5f\x75\x4a\x9d\x8e\xd4\x6a\x7a\x63\xef\x72\x2e\xe0\xd5\x89\x93\x31\xb6\x3c\x97\x4f\xa8\x80\x42\x94\x35\x76\x7f\x96\x25\x4e\xf4\x6c\x99\x68\xf3\xfe\xda\xaf\xea\xf3\xe8\xf4\x56\x34\xb5\x4f\x5e\x0a\x5f\xc2\xd2\x37\x3a\xb9\xe9\x8d\x9a\xcf\xe3\x69\x7e\x64\x2a\x18\xe0\xdf\xd9\xfb\xc2\xf0\x94\x86\x6d\x40\x1f\x0a\x4c\xa2\xa4\x56\xed\xf6\xa1\xa7\x7b\x9c\x29\x6c\x39\x22\x06\x7e\xb3\xd5\xa5\xca\x0a\x77\xf4\x30\xe4\xc8\x61\x1d\x8f\x05\xa1\xba\xac\x16\x35\xef\x7b\xa8\x3d\xfc\x69\xd3\x01\x94\x98\x56\xbe\x4d\x2c\x8a\xb6\x1d\xe2\x9c\xf3\x92\x50\xc5\x79\x4c\xbf\x57\x50\xcd\xa9\x5d\x04\x68\xaf\xa2\xb7\xf2\x3d\xba\x4e\xf5\xf5\x29\x5a\x3b\xf4\x14\x00\x18\xb7\xed\x06\x18\x84\x44\x4f\x5b\xb1\xb7\xd2\x39\x31\x2d\xd7\x39\x99\x95\x36\xc6\x84\x45\x6e\xa0\x6b"}, +{{0xb2,0x16,0xce,0xbf,0x87,0x80,0x24,0xc2,0x0d,0xfc,0x86,0xce,0x4b,0x37,0xbd,0xc4,0x7a,0xa2,0x8f,0x29,0x20,0x3b,0x5b,0x44,0x92,0x50,0x65,0xd9,0x93,0xa2,0x59,0xfe,},{0xc3,0x6e,0xdb,0xb6,0x25,0x4a,0x91,0x3f,0x08,0xfe,0x25,0x9e,0x23,0x87,0x80,0x63,0x8f,0x72,0xec,0x0b,0x30,0x07,0x26,0x4b,0xcc,0x60,0xa9,0xe8,0x1e,0xe9,0x29,0x8f,},{0xb7,0x38,0x9e,0xe7,0x8d,0xd9,0x76,0x3f,0x9d,0x28,0x92,0x91,0x2e,0xdc,0xbe,0x3e,0x8a,0x23,0x6b,0x8b,0xdc,0x25,0xf4,0x4b,0x9c,0xfd,0xc8,0xc4,0x7c,0xd5,0x81,0x68,0xab,0x56,0xeb,0x04,0x02,0xa5,0xbd,0x75,0x2a,0xc8,0xf4,0x97,0x8d,0x2e,0xa2,0xb6,0x5d,0x2f,0xa8,0x52,0x65,0x96,0x6b,0x9f,0x57,0x22,0x7e,0xf4,0xa5,0x9a,0xe0,0x09,},"\x9c\x87\x17\xcc\x86\xfe\x02\x48\x0b\xfd\x9e\x92\x2b\xd7\x6b\xff\xee\x21\x70\xc4\xcb\x1b\x13\xdf\x83\x4a\xc0\x1d\x45\x00\x60\x86\x29\x7f\x1b\x8a\x26\xf2\xba\x67\x4d\x33\xe1\xd1\x62\xf1\x93\x67\xfe\xba\x97\x35\x2b\x7d\xf2\xe7\x5b\x30\x9d\x4b\x6f\x8b\x07\xcc\x0e\xb6\x77\x7e\x81\xe2\x68\xe0\x2d\x07\xf2\xa0\x8f\x8f\x39\xd5\xa8\x32\x0b\xfc\x01\xfc\x8c\x92\x27\xd2\xcf\x05\xe1\x28\x91\xff\x4d\xe8\x85\xa1\xc9\x33\x71\xa0\x91\x0b\xa5\x33\x92\xaf\xf9\xba\x2e\xed\x9a\x20\x55\x97\x7e\xc4\x15\x7b\xd6\x5b\x34\xdf\x79\x37\x2f\x4d\x50\xed\xbc\x48\x92\x43\x53\xcf\xa1\x69\x23\x19\xd8\x8a\x7a\x5b\xb7\x26\x25\x4c\x20\x92\x91\xe9\xb1\xd2\xc1\xa6\xc8\x23\x63\x98\x10\x9c\x59\xed\x42\xa0\xac\x9e\x76\x33\xc5\x20\x73\x4e\xcc\xfe\xa4\xfe\xa9\x5a\x47\xa8\xf0\xa0\x68\xb4\x27\x50\x00\x43\x9c\xc9\x7c\x57\x87\x1e\x10\x5c\xc0\x79\x0e\x9d\xcc\x9c\x25\xd5\xaf\x70\x63\xff\xd0\x5c\x4f\x37\x80\xe7\xbc\xa4\xc4\x56\xd0\x17\x0d\xa7\x09\xfc\x6c\xb3\xfa\xa7\x2b\xdc\xf5\x62\x90\x8a\xe9\x34\x0a\xef\x4d\x0c\x8b\x91\xf0\xfb\xcc\xbc\xf1\xcd\x89\x8b\x1c\x71\x6f\x4f\x14\x74\xc3\xaa\x31\x62\x42\xab\xdf\x63\x68\xe5\x7a\x24\x7f\xf2\xfd\x5c\xe2\x3d\x18\x7f\x69\x4f\x11\xe3\x8d\xfb\xfb\xc3\xd9\xdb\x20\x90\x3b\x4e\xbb\x44\x9b\x90\x49\xee\x02\x0f\x6e\x2f\x50\x8e\x8b\x2b\x16\x5b\xad\x74\x64\xdb\xdd\x17\x8c\xbd\x42\x32\x33\x76\x5d\x37\x1e\x7a\xe1\xc3\xe8\x78\xcd\xb5\xb8\x24\xb2\x0c\xb3\x09\x86\x7c\x0e\x47\x3c\x06\x7e\x67\x44\x00\x85\x27\xb6\xbc\x07\x6d\x07\x7f\x48\x67\x62\x2a\xee\xd1\xc2\x53\xdb\xde\x7c\x6a\x76\xc7\x01\x59\x62\xfb\x73\x39\x16\x98\x60\x0b\xb3\x18\xff\xa7\xb0\x13\x6e\xe4\xcc\xb0\x7d\xaa\xf0\x1f\x40\xff\x9c\x19\x4f\x98\x68\x1f\x9f\xae\xf8\xb6\xf9\xe9\x9f\x95\xdf\x00\x80\xda\x89\x66\xa8\xba\x7a\x94\x74\xc5\x37\xb9\x2d\xf9\x79\x9e\x2f\xd1\x6f\x78\x8d\xad\x7a\x7b\xcc\x74\x52\x26\xe1\xe6\x37\x1f\x52\xeb\xcd\xbd\x14\x40\x44\xdd\xfe\x63\x2d\xfc\x0a\x43\xd3\xa4\x50\x92\x31\x70\xeb\xc7\xae\x21\x9e\x50\xe0\x78\xa5\x11\xbc\x12\xef\x14\xcd\x14\xb5\x30\x9f\x38\xab\xd6\x5d\xb2\xb2\xa7\xaf\x22\x43\xb2\x29\xc9\xfd\x2e"}, +{{0xaf,0xce,0xce,0xa9,0x24,0x39,0xe4,0x4a,0x43,0xed,0x61,0xb6,0x73,0x04,0x3d,0xcb,0xc4,0xe3,0x60,0xf2,0xf3,0x0c,0xd0,0x78,0x96,0xcd,0xa2,0x0c,0xb9,0x88,0xd4,0xe3,},{0xd2,0x31,0xf6,0x92,0x35,0xa2,0xe3,0xa1,0xdd,0x5f,0x6c,0x2a,0x9a,0xaf,0x20,0xc0,0x34,0x54,0xb9,0xa2,0x9f,0x4e,0x3a,0x29,0xab,0x94,0x68,0x9d,0x0d,0x72,0x3e,0x50,},{0xa6,0x55,0x45,0xcf,0x3d,0xf4,0x56,0xb2,0x8d,0x83,0xa6,0xd9,0x4c,0x03,0x6a,0x19,0xd0,0xd2,0x9f,0xb0,0x65,0xed,0xc2,0x7e,0x5e,0x93,0xa1,0xf4,0x02,0x79,0x89,0x7e,0x1c,0x6f,0x25,0x95,0x9a,0x72,0x5a,0xba,0xbc,0x87,0xcf,0x2a,0xe7,0x27,0xf3,0x46,0x7b,0x79,0x57,0x0e,0x90,0x27,0x11,0x91,0x71,0x91,0xd9,0xcb,0x0d,0x2d,0x66,0x0c,},"\x0b\x05\xf8\x9e\xbb\x33\x97\x94\x76\x87\xaf\xbe\xf0\xed\xe8\x7c\xf3\x81\x06\x76\x27\x70\x37\x52\x1d\x95\x2a\x3b\xbb\xbd\xc8\x56\x59\x88\xa0\x95\xd8\xd4\xf6\xf5\x9b\xe5\x72\xd3\xd8\x21\xdd\x78\x99\x77\xef\x77\xa2\xfd\x71\x10\xce\xee\xd9\xf3\x75\x6e\xd8\xe1\x88\x26\x7b\x97\xa3\x0e\xf8\x95\x7c\x78\xae\xa3\xa2\x96\x3d\xec\xa6\x18\x60\x54\x5e\x0c\x40\x82\x48\x81\xeb\xb1\xdb\x10\xf6\x07\xe1\x0d\xdb\xdd\xce\x40\x0e\xa2\x36\xba\x47\x45\xaa\x99\xa0\x56\x41\x97\x67\x66\x78\x9e\xd0\xda\x7d\xb5\x5f\xda\xb4\x59\xeb\xd4\xb4\x41\xa6\x28\x2f\x7c\xfd\x5a\x20\xea\x06\xef\xfa\x33\x59\x55\xe5\xfd\x29\x18\x16\x71\xbc\x92\xc0\x00\x52\xf7\xf7\x5c\x39\x27\x7c\x9a\x43\xb7\x87\xac\x9f\xb1\x51\x6e\x99\x62\x32\xa5\x09\x77\x4d\x1d\xc2\x1d\x8c\x05\x13\xf7\x84\x4b\x0a\x5b\x5f\x18\x95\x75\x81\xf9\x90\x44\xa1\x42\x23\xcc\xda\x8a\x28\x4d\xe1\x2f\xd4\x24\x26\x5f\xe5\x7b\x27\x02\x15\xf8\xfa\x9f\xf2\xbe\xa5\x17\x93\x4e\x48\x00\xa4\x7d\x34\x6f\xb6\xc3\x61\xcf\xba\xbe\xff\xab\xd9\xc4\x16\x4f\x45\x15\x6e\x24\x5c\x97\x7e\xdb\x47\x36\x42\xc3\x94\x0b\xe5\xad\x6f\xd1\xa7\x11\x9a\x7b\x18\xe9\x8d\x6d\xc8\x43\xe0\xd2\x54\xc9\x3d\x01\x46\xd1\x8e\x5c\x62\xed\xe1\x49\x0f\x89\xa6\x05\xeb\x45\x4f\x97\x47\x78\xcf\xae\x20\x93\x2e\x95\x47\x7b\xd0\x3b\xcd\xb9\x7d\x5b\xcb\x76\x33\x59\x42\xe9\x2e\xe6\x68\xf2\x31\xe6\x9c\x57\x0a\xc5\x44\x6d\x0f\x77\x40\x66\x73\x7f\xdf\x49\xf1\x0c\xeb\x1b\x52\xd6\xd8\xa4\x63\x98\x46\xa3\x37\x3a\x7c\x6f\x3b\x4b\x31\x59\xfe\x2e\x7a\xf7\xee\xe2\xf0\xdf\x17\x2d\x94\xd2\x55\xd0\x17\x65\x1d\xa3\x00\x90\x05\xe5\xea\xc3\x17\x6c\x09\x38\x9e\xe4\x0d\x70\x38\x3b\xd3\x71\x17\xec\xa0\x83\x59\x8a\x18\x01\xf5\x92\xd0\x57\x18\x6e\x56\x8e\x24\x7c\x25\x2b\xe4\xb1\x4f\x72\x3a\xb7\xdd\xb9\x7a\xe9\x76\x8c\x26\x82\xfd\x63\xac\xc3\x00\x77\x9f\xe0\x4e\x2b\x88\x87\x47\x51\x34\x6c\x9e\x0f\x97\xa2\xa2\x16\x77\x2f\xf9\x62\x5c\x33\xbd\x7e\x29\xfe\xd8\x00\x3a\x08\xdb\xd3\x3b\x5d\x17\x89\x9c\x94\x3c\x25\xe9\x5a\xd7\x54\xfb\x63\x2e\x04\x7c\x11\x2a\xf7\xf7\xce\xba\x72\x36\x2e\x1a\x3d\xdd\x29\x35\xaa\xf7\xf8\x18\xa2\x7c"}, +{{0xb8,0x34,0xc6,0xe0,0xfa,0xcb,0xff,0x58,0x0d,0xd3,0xb2,0x37,0x53,0x95,0x9a,0x4c,0x21,0x54,0xc2,0x19,0x52,0x1b,0x3d,0x27,0x03,0x5d,0x07,0x1f,0x65,0x99,0xbd,0x02,},{0xd1,0xc3,0x84,0x71,0x5e,0x3b,0x3d,0x02,0xc1,0x3e,0x09,0x06,0x05,0x53,0x4c,0x7d,0xb7,0x40,0xda,0x2a,0xa5,0x60,0xf5,0x32,0x00,0xa3,0xce,0xd8,0xbe,0xae,0x8c,0xf8,},{0x0f,0x19,0xb7,0x06,0x6d,0x57,0x92,0x32,0x8a,0x98,0x00,0xd9,0xd4,0xf8,0xf6,0x7d,0x5b,0x08,0x9b,0x54,0x12,0x26,0xa1,0x67,0xda,0xcd,0x43,0x9f,0xa4,0x85,0xb0,0x02,0x5a,0x5d,0xc7,0xf2,0xc7,0xe2,0x3f,0xc4,0xa5,0xc6,0x86,0x9e,0x76,0x19,0xd3,0x56,0x39,0x97,0x00,0xc9,0x36,0x50,0xe8,0x9c,0xd2,0x5b,0x90,0xfb,0x99,0x25,0xe3,0x04,},"\x6c\xf1\x47\xb1\x60\x55\x28\xa3\x6b\xe7\x57\x16\xa1\x4b\x42\x0b\xcf\x06\x7c\x03\xf1\xcf\xe9\xc4\x40\x2f\x14\x98\x7f\xbf\xc9\xd3\xec\xc3\xcc\xf4\xf8\xd2\xd0\x3a\x55\x90\x0b\x8d\xc7\x9a\xf3\xb6\xe7\x74\x36\xf6\x9b\x14\x17\xad\x4b\x68\xfd\x44\xe5\xe3\x33\xed\x90\xea\x79\x43\xfb\xd1\x12\x26\x09\xec\x8f\xf6\xbb\x25\xe4\x2e\x99\x14\xf5\x92\x0f\xc7\x2c\x4d\x01\x3b\x6a\x96\x85\xc9\x96\xfb\xd8\x35\x2a\xaf\xb1\x84\xc2\x2d\x9e\x47\x87\x1a\x52\x80\xe4\xab\x7d\xd6\xa5\xcf\xd1\x0a\x59\x94\xa2\x00\xf6\x70\xe0\xb6\x22\xa9\x39\x4d\x47\x93\xd0\xa4\x20\xe7\xd8\x80\x6c\xb1\x27\xc7\xac\x69\x0d\x45\xa2\xe9\x41\x66\xce\xa6\x72\xbc\xd9\x82\xb0\xe9\xba\xad\x56\x31\x2d\x25\x70\xdd\xde\x7e\x0b\x9e\x7f\x47\x13\x6f\x04\x81\xd0\x0f\x66\xa2\xaa\xca\x4d\x1b\x09\xd7\xce\x6c\x5a\x98\xa7\x6b\x68\xcd\x97\xd5\x79\x39\x68\xd6\x67\x07\x3f\x82\x17\xf9\x05\x47\x35\x34\x0f\x9b\x14\x9c\x0d\xce\x84\x5b\x09\x9e\x88\xd0\x70\x96\x80\xf0\xf7\x76\x03\xff\x0a\x23\x31\xc5\x58\xfc\x36\xd5\xf2\x4d\xa9\xa6\x2d\x69\xaf\x51\x90\xd2\x1b\x5c\x85\x7a\x1e\x08\xf0\x14\xc6\xd4\x56\x46\x86\x65\xa7\xf8\x45\xc6\x6f\x91\x11\xf9\xc0\x98\xc6\x89\x40\xef\xcd\x87\xb6\x57\x07\x0c\xb9\x16\x4b\xc9\x74\x3a\xce\xb7\x43\x9a\x0d\x01\xc0\x06\x2a\x11\xaf\x2e\x11\x34\x93\x97\xf5\xd1\x52\x87\x2b\x13\xc5\xab\x32\xf5\x1c\xc5\x8f\x14\x75\xec\x82\xac\x67\x15\x61\xdc\xbd\x34\x3c\xfb\x3c\x5f\x78\xd0\xfc\x73\x05\x3c\x60\x04\xb0\xa4\xca\x3f\x20\x43\xff\x4b\x0c\x54\x27\x5c\x4f\xcb\x9c\xad\xc6\xba\xab\xe5\x7b\x1d\x5a\xcd\x53\x1e\x97\x2e\xf9\x33\x51\x36\xcd\x1d\x65\x51\x2b\xa1\xf5\xb6\xcc\xc4\xb6\x6b\x42\x50\xaa\xfa\x29\x67\xdd\x42\x11\xa2\x74\x2e\x0f\x17\x7d\x8f\x40\x63\x89\x9f\x61\x81\x5c\xbe\x6d\x8f\xbf\xcd\xf7\x48\x12\xbd\x40\xcc\x10\x08\x4e\x46\xa9\x9a\xc1\x28\x05\x8e\xaf\x16\xa4\x9a\x24\xb6\xae\x22\x8e\xcf\x01\x09\xc5\x2d\xfc\x06\xe3\x7d\x6a\x33\x3b\xcb\x24\xab\xa3\x12\x16\x4c\x6c\x02\x90\x48\x5d\x25\x12\x80\x53\x8c\xe9\x54\x1c\x09\x16\x64\x0e\x36\xd6\x92\x9d\xcd\x95\x88\xeb\x99\x57\x7f\x5f\x6d\x82\xbc\xbb\x19\x88\x26\x26\x7e\x49\xf5\xda\xff\x2c\x0d"}, +{{0x22,0x69,0xa5,0xd8,0xf7,0xac,0x2c,0xd9,0x04,0x8f,0x5f,0x49,0xe3,0x49,0xe5,0xc4,0x35,0xa1,0x59,0xb3,0x19,0xfe,0x3b,0x30,0xbf,0xac,0x8d,0x0d,0x50,0x59,0x43,0xf4,},{0x1c,0x81,0x79,0x43,0xdc,0x39,0xc2,0x4b,0x01,0xda,0x38,0xa4,0x87,0xb1,0x75,0x48,0x24,0x60,0xc6,0x09,0xe4,0x72,0x63,0x49,0xa9,0xaa,0x7a,0xea,0x9b,0xc0,0xfb,0x34,},{0xbe,0x0f,0xb3,0x30,0x8a,0x07,0x6a,0x61,0xa4,0xa9,0x2a,0x97,0xf6,0xac,0x55,0x32,0x71,0x90,0xe1,0x34,0x1d,0x6d,0xd4,0x10,0xd8,0x6b,0x41,0xbd,0xaf,0x2d,0x33,0x74,0x09,0x3e,0xf7,0x20,0xbd,0xb7,0x7f,0xeb,0x70,0x14,0xe0,0xf7,0x7d,0x3b,0x80,0x96,0x23,0xc7,0xca,0x53,0xe2,0xae,0x4b,0x09,0x71,0x13,0xe9,0x6d,0xb7,0x7a,0x2d,0x08,},"\x71\x53\xd4\xd9\xe6\x41\xaa\x61\x92\x0d\xb0\xff\x4b\xd5\x37\xa6\xd6\x13\x0a\x39\x65\x54\xcc\x94\x53\x76\x98\xf9\xca\xd1\x6b\x99\xee\xbe\xfa\x5f\x27\x76\xf2\xfe\xaf\xf6\xbd\x9a\x69\x04\x12\x0c\x67\xe0\x88\x3f\x6b\x96\xbb\xbb\x19\x5e\x95\xae\xc7\x53\xb6\x99\xba\xb3\xd0\x39\x44\xc1\x3c\x72\xfc\x84\xe3\xf2\xcb\xf6\x29\x6f\x64\x55\x49\x11\x1c\x93\xfa\xe1\xa7\x59\xbf\xcd\x16\xfc\x09\xe6\x0b\xb9\x78\x55\x35\xad\x27\xda\x24\x4e\xf2\xf8\x57\xf2\xde\x99\xa6\xe9\x21\x88\x89\x0e\x45\x2c\x7f\x5b\x9e\x3a\x4b\x96\x8e\x11\x74\x3b\x6f\xc7\xfa\xf1\x27\x5e\x53\x60\xa5\x46\x89\x41\x79\x78\x94\xd7\x70\xfa\x7d\xa3\x64\xa3\x37\x30\x22\x39\xfe\x83\xae\x0b\x0d\x08\x4a\xa1\x2a\xcd\xc6\x34\x62\x52\x4e\x0e\xb1\x0f\xef\xe8\x1b\xa9\x6f\x71\xf2\x75\xf3\x44\x9a\x3f\x8d\xb2\x1d\x58\x74\x9a\x38\x85\x3d\x39\xb0\xad\x8e\x69\x89\x1b\xd2\x04\xdf\xca\x8f\x6c\x23\x9d\xc9\xa0\xac\x27\xf5\x4d\xb4\x23\x8d\x47\x06\xdf\x11\xd6\x07\x36\x9d\xc7\xf7\x04\xda\x1d\x39\xf2\xe8\x2a\xf8\xc2\x83\xd2\x20\xc1\x24\x31\xf5\x6d\x80\x30\x69\xb4\xac\xb7\x70\x81\xc0\x31\xae\x33\x19\xfc\x77\xfc\xa7\x84\x50\x97\xfd\x72\x7a\xd0\xd0\x80\x89\x5b\xba\x23\xe8\x73\xd2\xde\xf8\xcd\xc2\x16\xc3\xee\xd6\x1b\x08\x76\x1b\xb9\xeb\xce\x02\x82\xcf\x50\x2a\xaf\x6c\xe7\xe8\xc0\x58\x63\x79\x58\xc3\xea\x1b\x72\xfe\x6e\x8d\xf8\xd3\x7a\xc0\x55\xdb\x69\x92\x58\x7f\xab\xbd\xc4\x67\xf5\x24\x75\x64\x4f\x91\x88\x63\xaf\x62\x04\x92\xf3\x46\x80\xf2\x05\x6c\xbc\xab\x75\xe2\x32\x36\x26\xc0\x94\x75\x9c\x0e\x0e\x99\xef\x19\x75\x95\x27\x25\x06\x46\xad\x76\x01\x20\xba\x38\x66\x99\xd5\x39\x34\xf9\x56\xb8\xbb\xc7\x39\x5b\xb4\x96\xce\xb2\xdd\x22\x3c\x7b\x50\x1b\x92\xd3\x6a\x95\xf8\xf0\xa0\x2e\xb5\xba\x4d\xdd\xf1\x66\xb9\xb9\x5b\x4a\x59\xe7\x2a\x30\xc6\x3c\xf2\x1e\x60\x85\x75\x19\x23\xd5\x4b\x30\x28\x1e\x52\xa0\x96\x18\xe6\xf0\x23\xba\x0a\x21\x67\x5e\x7f\x98\x9b\x89\x91\x58\x8c\x96\xc2\xb5\x6a\x78\xf5\xd2\x94\x5a\x7b\xae\xb6\xa0\xc1\xbb\xd5\xd9\x5a\xf3\xee\x83\x0f\x58\x09\xc7\x94\xa1\x5a\xb4\xb5\xf8\x9d\xd2\xbe\x2d\xfd\xcd\x8f\xe0\x52\x0f\xda\x2b\x3f\x02\xa1\xac\x01\x55"}, +{{0xe9,0x65,0xb3,0xf2,0x57,0x35,0x66,0x85,0xc9,0x8b,0x42,0xb9,0x64,0xa2,0x53,0xfc,0x49,0x53,0x99,0xcc,0x94,0xb0,0x99,0xc2,0x44,0x5f,0xc8,0x1c,0x75,0x9c,0x68,0xe5,},{0x68,0x9f,0x54,0x10,0xc8,0xe0,0xf4,0xd3,0x7b,0xc0,0x7c,0x85,0xd7,0xcc,0xe6,0xc9,0xb6,0x36,0x01,0xf9,0xbd,0xaf,0xec,0xaa,0x44,0x8a,0x5e,0xed,0x64,0xaf,0xc8,0xc6,},{0x8d,0x2b,0xc4,0xe1,0xcd,0x25,0x6a,0xad,0x8a,0x15,0x1d,0xec,0x01,0x0d,0xc9,0x3a,0x5e,0x5c,0xca,0x58,0x29,0x8d,0xec,0x49,0xcb,0xc9,0xc4,0x71,0x7b,0x5c,0xfb,0x54,0x60,0xd4,0x30,0xbe,0x72,0x6b,0x0f,0x30,0x2c,0xbd,0x92,0x6b,0xee,0xa1,0x9a,0xa3,0xc9,0x3a,0xeb,0x45,0x2a,0x44,0xf6,0x00,0x7a,0xf4,0x9a,0xdf,0x2f,0x05,0xbb,0x04,},"\x6f\x20\xa9\xad\x27\xe3\x0d\xac\x76\xb3\x0d\x4c\x19\xa5\xbd\x6d\xfd\x6d\x04\x92\x13\xf4\xbe\xcd\xd9\x63\xd7\x2b\x8b\x2d\xad\x68\x7b\x00\x38\x08\x20\x1d\x50\xf7\xdd\x6e\x59\x9e\xf5\x8c\xeb\x60\x68\xc5\x45\xed\x99\xb9\xe7\x63\xf9\xb0\xec\x1d\xb5\xfc\xbd\x7d\x49\x0a\x12\x1e\xce\xc6\xbb\xa1\xeb\x5e\xdb\xd6\xde\x85\x36\x47\x07\xc5\x5e\x30\x0c\x8b\x16\xbb\x25\x30\xf7\x08\x98\x13\x66\x89\xc9\x88\x59\x1d\x53\x91\xd9\xcc\x34\x7d\x79\x31\x06\x1a\x9b\x76\x96\xe2\xc9\xf3\x5b\xc0\xd3\x04\xa8\x1c\x2c\xf9\x54\xd9\xc3\xa8\x8a\x22\xe1\xd6\x7b\xbe\x0a\x85\x30\x84\x77\xf6\x29\x18\xc2\x5d\xb5\x04\xe4\x76\x2f\x0e\x3b\x42\x46\x00\x79\x08\xac\x70\x17\x79\x00\x6b\x77\xd7\x25\x10\xed\xc6\x9e\x17\xd0\xf6\x39\x4c\x77\xe5\x55\x18\x75\xa4\x46\xf8\x12\x33\x41\x5d\x0a\x91\xa0\x46\x0b\x51\xc4\x13\xd6\x44\xe8\x50\xf8\x55\x72\x81\xc4\x66\x99\xe5\x3b\x22\xa7\xc7\x3b\x06\x8e\xa3\x86\x52\xcf\xf3\xb0\xa7\xb8\xba\x30\x97\x1e\xab\x18\xfd\xbb\xd8\x73\x9e\xe1\xee\x0c\xd5\xcb\xfb\x7d\x5d\x41\x75\x7b\x63\x31\x27\x1f\xb7\x80\x97\x51\xe2\x03\x51\x3c\x99\x70\xf6\x6d\x91\xbc\x0c\xe0\x62\xf4\xfc\xb2\x8b\xe0\xa6\x99\x86\x7b\x79\x59\x4c\x64\x58\xa0\xd3\x07\xac\xac\x91\xf4\x13\xc4\x61\x58\x77\xdc\x53\xe1\xb0\x18\xda\x5c\xfc\xe1\xb6\x3f\x40\xbe\x1e\x55\x27\x4c\x43\x74\xcd\xfc\x21\x52\x44\x99\xa6\x83\xa2\x31\xad\xef\x77\x9d\x19\x21\x44\x0e\x5d\x3f\xdb\xd5\x03\x3d\xc9\x83\xcf\xc9\x31\xab\xe6\x38\xc3\x5d\x5a\x95\x86\x9e\x9f\xe3\xd9\x3e\xb9\x0b\xd1\x86\x1f\x85\x5c\xe1\xf6\x08\xb7\xbc\xad\x6b\x5e\x1b\xd9\x7e\xdc\x95\xed\x5d\xdc\xbc\xb7\x15\xd9\x19\xf5\xff\x77\xdf\x2d\xa4\x38\xf7\xa3\xa9\x82\x86\xdb\xd5\xb6\xe0\x43\xfc\x73\x72\xf6\x97\x04\xf0\x9d\x86\x55\x30\xf4\xf0\xed\xd3\x30\x0f\x18\x5b\x6d\x73\xd8\x71\x6d\x32\xd3\x2b\x1c\x9a\xc2\xdd\xf4\xf9\x02\xd3\xf2\x16\xd3\x5a\x33\xf3\x68\x09\x5d\xed\x10\xbe\x94\xbb\x53\xd6\xf2\x56\x56\x0f\xac\x2f\x4a\xf0\xed\xf5\xc5\xc7\x02\x14\x37\x77\x12\x6e\x7d\xe3\x2d\x07\x49\x39\x32\x66\x21\x29\xba\x0e\x7f\xc7\xcf\xb3\x6f\xd2\xca\x53\x16\x46\xe8\xcd\x22\x11\x85\x4f\xc5\x10\xaf\x3b\x1e\x8c\xaf\xde\x7a"}, +{{0xbc,0x3b,0x1e,0x0b,0xf8,0xd6,0x9e,0xa5,0xb4,0xcb,0xbf,0x10,0xbb,0x33,0xfc,0x95,0x5a,0xdc,0xbe,0x13,0xfc,0x20,0xaf,0x8a,0x10,0x87,0x2c,0xe9,0xdf,0x39,0xd6,0xbd,},{0xac,0xcd,0x26,0x28,0x15,0x59,0x19,0xbb,0xc7,0xf9,0xd8,0x6f,0x91,0xda,0xfe,0xc3,0x5c,0x71,0x1a,0x78,0xc7,0x9a,0xd3,0x60,0xed,0xdb,0x88,0xfa,0x8a,0x18,0x0b,0x2d,},{0x6e,0xf7,0xf0,0xe9,0x1f,0x2c,0xc6,0x71,0x5f,0x8e,0x5a,0x98,0x57,0x4b,0x44,0x00,0xc2,0x61,0xa6,0x43,0xe0,0x54,0x5f,0xf2,0x67,0x47,0xf8,0xe1,0x73,0x98,0x99,0xd7,0x66,0x40,0xb6,0x45,0x1c,0x43,0xc1,0xd0,0x3a,0x47,0x75,0xb5,0x4f,0xcf,0x9b,0xce,0x18,0xed,0x3f,0xcc,0xad,0x33,0x8b,0x77,0x64,0x02,0x4f,0xdf,0xa2,0xde,0x82,0x01,},"\x4c\x73\xe0\x4a\xbe\x08\x19\xde\x1f\x84\xd7\x05\x41\xeb\x1b\xb6\x1c\x4f\x42\x92\x0e\x1f\x2d\x1d\x9e\x62\x81\xa8\xa2\xe8\xb3\xeb\x45\x53\x7d\x83\x96\x90\x27\xf9\x9e\xf0\xea\x27\xca\x08\x5b\x13\xf9\xdb\x48\x0f\x00\xc0\x2f\x3f\xd7\x42\x9d\xd5\x67\x70\x89\x53\xbb\xf3\xb9\xe8\xe2\xc6\xac\x4d\x32\x1f\xf8\xf9\xe4\xa3\x15\x47\x23\x08\x5a\x54\xe9\xc9\x57\x3c\xc7\x35\x0c\x09\xf8\x97\x3f\x94\x8b\x08\x73\x03\x73\x59\x7a\x5f\xd0\x34\x98\x21\xae\x0a\x3c\xd6\xc8\x49\x92\xb1\x89\x12\x8f\x34\x90\x98\x7e\x1e\x9a\xd4\xf6\x57\x4c\xa5\x38\xfd\xfd\x83\x28\x4c\x1e\xb0\x95\x3f\x24\xc0\x8f\x74\x93\x2d\x43\x64\xdb\xbe\xf9\x22\x54\x24\x40\xda\xe8\x04\x24\xa9\x2e\xae\xf2\x7c\x18\x89\xbd\x08\xc4\x4f\x9d\xf0\x3a\x3a\xf3\x0d\xff\xb4\x8f\xae\x44\x5e\x62\x5f\x4d\x92\x65\xcf\x38\x7a\x1d\xa3\x5f\xe4\xc2\x31\x50\x45\x35\xdb\x72\xea\x81\xa1\x86\x80\x5f\x85\x6e\xbe\x6a\x6a\x65\x24\x14\x32\x53\x0f\xe6\xc9\x60\xc5\xf9\xbe\x6c\x22\x95\x70\x60\x30\x4e\x9d\xd8\xef\xbc\x1e\x48\x2e\x7d\xdb\xd8\xaf\x03\xbf\x23\x82\x89\x9c\x98\x6d\x91\x66\x11\xe4\xf2\x7a\xe5\x2f\x81\x7e\xf0\x1b\x6a\x14\x1f\xe4\xf6\x85\xd9\x4d\xc8\xcd\x52\x83\x00\x43\x93\x45\x87\x70\x4c\x1e\x64\x2e\x8f\xe5\x6b\xe6\xd6\xb8\x5b\xf4\xa6\xfe\xb2\xb6\x85\x8f\x1f\x00\x7f\x99\xd3\x9e\xa0\x4c\x9f\xe5\xfa\x7e\xf1\xb9\x1f\x49\x5e\xd0\xe7\xfa\x42\x13\xdd\x68\xce\xa4\x2b\x67\x29\xf9\x50\x31\x90\x7e\x27\xc4\x40\x98\x09\x43\x86\xfa\xbf\xb0\x4a\xb9\xb4\xde\x3d\x68\x61\xde\x46\x23\x12\xc5\x9b\x27\xc7\x6f\x7b\x6a\x4f\xc7\x1e\xa0\xd5\xda\xf6\xb7\x32\x05\x21\xa6\x7e\x5c\xb3\x75\x04\x97\x6a\xd7\x3d\xae\x2d\x64\x9f\xeb\x75\xe2\xea\xdd\x34\x01\xa7\xf2\xf3\x6e\x16\xdf\xbf\xbd\xb2\xaf\x57\x16\xcb\xa1\xbc\xe2\x0c\xd4\x7c\xe1\xc1\xd7\xbe\x00\x69\x70\x01\xfb\xbe\xb4\x91\x5a\xa6\xe5\x39\x3b\x5a\xb2\x0e\x0f\x31\xf5\x11\x91\x49\xa2\xcb\x4c\x4d\x45\x2c\x81\x56\x11\x3a\xc7\x82\x4f\x84\xf0\x9a\xeb\x81\x20\x2e\x8d\xd3\xda\xc0\xaa\x89\x39\x9b\x5a\x38\xb1\xe2\x18\x30\x19\x60\xa3\x7d\x52\x63\x2e\xea\xef\xe3\x68\x74\x55\x46\x42\x88\xeb\x17\xd9\xe1\x9a\x3a\x72\xed\x9d\xe3\x2c\x17\xbe\x79\xa3\xb9"}, +{{0x10,0x71,0x8f,0xa6,0xe2,0xd7,0xf6,0xed,0x38,0xfd,0x66,0xcb,0x6d,0xbf,0xa0,0x87,0xe8,0xf1,0xe8,0xa8,0xa2,0x4f,0xab,0x58,0xd7,0x9d,0x79,0x54,0xb8,0x72,0x0c,0x3e,},{0x87,0x0d,0x4f,0x66,0x6d,0x06,0xfd,0xa9,0xf9,0x51,0x1b,0x58,0x60,0x2e,0xec,0x05,0x0d,0x75,0x4e,0xa6,0xd8,0xe7,0x9c,0xdd,0x19,0xf6,0x01,0xc4,0x77,0xdf,0x1a,0xa0,},{0xe1,0x65,0x91,0x86,0xf1,0xf7,0x6f,0xe4,0x3a,0xc8,0xa1,0x17,0x03,0x36,0x0f,0xbe,0xff,0x53,0xb5,0xe5,0x7b,0x59,0x74,0xaa,0xa0,0x8e,0x25,0x75,0x57,0x9c,0x27,0x08,0x4c,0xf6,0x80,0x2e,0x7c,0x20,0x63,0x47,0x31,0x44,0x75,0xb6,0x03,0x19,0x74,0x94,0xe7,0xd6,0x1f,0xe4,0xb1,0xee,0x7b,0x78,0xe1,0x8d,0x94,0x46,0x93,0x52,0xdf,0x0c,},"\x41\x25\x9b\x6e\xef\x13\xd6\xff\xe3\x3c\xdd\xe7\x99\xb9\x95\xc4\x0b\xe7\x82\xcf\x97\x84\x40\xb6\x6b\xe5\x1c\x44\x05\x82\xab\xd4\x2f\x52\x66\x96\xbb\x3c\xb9\x22\x65\xb1\xed\x0e\x4b\xba\x76\x4c\xae\x28\x39\x83\x0a\x25\x26\x35\xdc\x80\xce\x5f\x73\xd5\x21\xb3\xd6\xff\x03\xac\x30\xe1\x98\xad\x20\x56\x7e\x75\xa3\x4f\xa8\x25\xeb\xf9\x84\x15\x08\xda\x84\xcd\x67\x42\x36\xca\x7b\x43\xde\x35\x64\xc9\x4a\xb0\x79\x40\x8f\xd9\x41\x37\xce\x3f\x90\xa5\xdd\x5d\x3a\xc3\x9a\x05\xec\x86\x71\x5a\x8f\x02\x5e\x45\x39\xa7\x64\x0a\xb8\x88\x36\xf4\xef\xba\xbd\x5e\x16\x52\xc4\x9e\xa2\x16\x13\xac\xfe\x34\x3a\x88\x0e\xe5\xa4\x2f\x2f\x91\x34\xef\x4e\x37\x16\xb1\x6d\x13\x4a\x9c\x4c\x71\xc3\x9b\x3c\x1a\x85\x7d\x3c\x89\x43\x97\x83\xee\xf1\xed\xd7\x1b\xf4\x49\x2d\x05\xfd\x18\x67\x3a\x52\x42\xff\x41\x87\xb9\xde\x47\xad\x49\x68\xda\x49\xdb\xa5\xa6\x09\x2e\x95\xea\x27\xdd\xfc\x74\x48\xdc\xf5\x97\x2d\x9d\x22\x8d\x63\xe5\x29\x1b\xa6\xe6\xfb\xd0\x7e\x32\x41\xf9\x36\x6c\xa4\x97\x6b\xb0\x4b\x22\xd0\x1f\x0d\xba\xe7\x94\xfa\x9c\x1d\x90\x29\xf8\x8a\x83\x60\x2b\x0e\x0e\xc5\x5e\x22\xc3\x7b\x20\x11\x25\xca\xdb\x53\x41\xef\x73\xf6\xda\x1a\xbb\xe2\xb1\xc4\x75\xf0\x75\x03\x45\xb1\xbe\x42\x59\xd8\xc2\x85\x31\xff\xe7\x78\x86\x67\xc4\x10\xda\xc3\x39\x91\x8c\x86\x9b\x00\xab\x80\xf2\x0b\xf7\x99\x0d\x36\x6f\x9b\x3d\x5e\x8e\xb2\xf4\x8d\x7e\xd0\xe6\x4b\x85\xdc\x9f\xe3\xbb\x99\x8b\x1e\xec\xd1\x23\x1e\x90\x2d\x2d\x15\x2e\x09\xda\x2d\x25\x92\xbd\xb3\x2c\x8c\xd2\xe2\xc4\x89\x49\x6b\x29\x80\xc0\x3d\xbb\x09\xec\x7f\x8a\x4e\xa2\xc7\x02\x0f\x2a\x0f\xaa\x65\x7c\xd6\xce\xd4\x8d\x6d\xa2\x78\x64\xcf\x5e\x97\xee\xa9\xb3\xc2\xf0\xf3\x4a\xbf\x8d\x87\xbd\x2a\xde\xb6\x0c\x72\x72\xfc\x43\x06\xd9\x55\xbd\xc8\x02\x3d\x7d\x3d\xc2\xf3\xda\xfe\x9e\xbe\x8a\x8d\x13\x89\x65\xa7\xf6\xce\x93\x51\x7c\xd2\x09\x96\x63\xf6\x7c\x34\x55\x21\x76\xdd\xb5\x95\xac\x6e\xa5\x60\x9f\xeb\xcf\x24\xc7\xd6\x9d\x41\x27\x09\xe5\x78\x67\x0a\x21\xac\x8a\xfc\xcb\x8b\xf2\xb1\x8f\xf3\xaf\x7d\xe2\x1d\xc7\x1d\x50\xd6\x0d\x37\xb6\xed\x72\x9d\xb0\x4b\xef\xf7\xd3\x4b\x29\x20\xd8\x75\x51\xce\x15"}, +{{0xc1,0xd4,0x72,0x4c,0x6c,0xb1,0xbc,0x67,0x23,0xb2,0xb4,0x30,0x34,0x27,0x8b,0x3c,0x5b,0x48,0xfe,0xd7,0xf8,0xa3,0xcc,0x23,0x18,0x03,0x3e,0x75,0x52,0x04,0x73,0x51,},{0xc2,0x7e,0x39,0x2e,0x7c,0x36,0x64,0xb9,0x06,0x1e,0xa7,0x6d,0x25,0x75,0xdd,0x7c,0x41,0xea,0xf1,0xda,0x3a,0x65,0xf3,0xa9,0x86,0xe0,0xa5,0x7f,0x6c,0x40,0xc1,0x7e,},{0xd3,0x7a,0x6e,0xc8,0x2e,0xd4,0x5c,0xa9,0xb4,0x85,0x5d,0xe9,0xcb,0x94,0x25,0x64,0xe8,0x83,0xff,0x70,0xa7,0x9b,0x8e,0x71,0x2d,0x5f,0x60,0x4e,0xc8,0x97,0x4d,0xe5,0x36,0x3a,0xc8,0x49,0xcb,0xab,0x28,0xe7,0xae,0xef,0xf2,0x8e,0xd3,0xf2,0xd1,0x4b,0x60,0x8b,0x31,0x46,0xc2,0xef,0xe0,0x73,0x5a,0xd8,0x15,0xc7,0xd7,0x5a,0x1a,0x01,},"\xde\xee\x99\xd7\xa7\x7d\x43\x00\xc1\x7a\xec\x1a\xb3\x23\xc5\x71\xc6\xe9\xe7\x3a\x43\x49\x1a\x3c\x78\x88\xb7\x6f\xc0\x3e\xc4\x3d\x07\xaf\x42\xa0\x5a\x2a\xa3\x22\xd0\x0c\x85\x60\xac\xef\x31\x41\x06\xb1\x0b\x9b\xd1\x26\x54\x35\x7f\xfa\x26\xf2\x39\x00\x50\xda\x63\xd6\x68\xc9\xe2\xdf\x54\x8f\x87\x63\x9e\x09\x6a\x35\x85\x3f\x82\xe7\x61\xfd\x71\x1d\x2a\x26\x54\x38\xf5\xd4\xdb\x5e\x32\x77\x57\x08\x15\x0d\xa6\xcb\x68\x6a\x2b\x4c\xa2\x11\xd7\xf0\x0d\xc0\xab\xcb\x2c\xa1\x50\xe7\x91\x11\x6a\x10\xa5\xef\xcf\xf3\x51\x4d\xab\x8e\xd8\x0a\x70\x92\xc3\xa0\x15\x15\x2c\xb2\x5d\x9f\x86\xec\x0d\x1c\xa6\x7d\xda\xb4\x4d\x64\xee\xb1\xf9\x31\xbf\xab\x2a\xb1\x88\x95\x6c\x74\x3d\xb4\x81\x48\x08\xc5\xcd\xe1\xb0\x74\x5b\x3e\xdd\x34\x0e\xb0\x3f\xfc\xc8\x0a\x78\xf3\xdb\x31\x0f\x4f\x5c\x20\x00\x9f\xc0\x27\x9c\x2c\x1b\xcb\x3c\xed\xf9\x90\xbd\x0e\x20\xc6\xf9\xfb\x75\x15\xad\x6e\x93\x3b\x07\xe9\x9d\xa6\xac\x32\xb9\x71\x41\x18\x7e\xf6\x3b\xdb\x10\x62\xe3\x72\x20\xa4\xdc\xd4\x19\xd6\x24\x4c\xdc\xc3\x4e\xa4\x1d\x0b\xcb\xc3\x13\x8b\x1d\x54\xae\xfc\x01\x90\xe3\x0b\x18\x7d\xb0\x73\xaa\x7d\x6c\xfe\x04\xbd\x3f\xd2\xac\x00\x31\x3e\x3d\xdd\x64\xa1\x81\x93\x5c\xa4\xb8\xb2\xa8\x5d\x36\xbc\x27\xd9\x7b\x76\x26\x76\x7b\x93\xee\x38\xde\xf8\xb6\xb2\xc8\xda\x9b\x00\x26\x36\x14\x34\x2f\xaa\x9d\x3e\x73\x8d\x27\x13\xc4\x5f\xfb\xee\xf8\xc8\x4b\xcd\xbc\x8d\xa4\x30\x9c\x84\x45\x53\x0f\x5c\x61\x7d\xc8\x66\x25\x1f\x54\x89\x50\xa1\x4f\x07\x5a\xa3\x11\x7f\x96\xe4\x1f\x89\x9d\xbe\x73\x40\xb1\xd9\x0a\x13\x52\xd3\xb8\xfb\x41\xb7\x9f\x16\xa8\x2b\xc2\xe4\xa1\x93\xb8\xa7\x23\x24\x00\x99\x6b\x73\xb1\xfc\x00\xb2\xec\x1c\x66\x75\x77\xf8\x28\x24\xd3\x9f\xb7\xf6\xe7\x69\x2d\xcd\x97\xb1\xd8\xce\x94\x08\x3c\xa1\x97\xe9\xa5\xd4\x0f\xad\xff\x0b\x9a\xc5\x7e\x9d\xe7\x61\xc1\x56\xe6\xd3\x1d\x52\xc3\x32\xd5\x13\xe9\xf5\x86\x97\xdc\xbd\xd8\x0a\x5e\x42\xc5\x51\x70\x2c\x3d\xe7\xbe\xcc\xc3\xdb\x84\x5b\x1a\x04\xc8\xcb\xd4\x16\x95\xea\x74\x28\xab\xba\x89\xe0\xdc\xe3\xe3\xd9\xe7\x02\x30\xae\x91\x47\xc2\xb8\x85\x59\xdc\x69\x5d\x68\x09\xa5\x1c\xcb\xc1\xdd\x9e\x08\x9c\x58\x5f"}, +{{0x37,0xc0,0x70,0xd4,0xa5,0x3b,0x13,0xbe,0x76,0x06,0x35,0x11,0x0d,0x1b,0xd4,0xf0,0x19,0x20,0x22,0x5a,0xfa,0xbe,0xc5,0x76,0xfa,0xae,0xc9,0x10,0xf2,0x92,0x6d,0x1a,},{0x0a,0xa8,0x5f,0x2a,0xb1,0xdf,0xf8,0x95,0xd1,0xfa,0xd0,0xc1,0x19,0xf2,0xbf,0x57,0x12,0x6a,0xab,0x60,0x1c,0x52,0x8d,0x37,0x69,0x8e,0x97,0x70,0x2d,0x35,0xf5,0x25,},{0x9d,0xa6,0x0c,0xc4,0xa6,0x4d,0x07,0xde,0xe1,0x34,0x6b,0xd3,0xd3,0x01,0x09,0x95,0xce,0x27,0x38,0x20,0x8a,0xb3,0x5b,0x34,0xc2,0xa8,0xfd,0x17,0x87,0xae,0x3a,0x1e,0x20,0x7f,0xe7,0x84,0x52,0x51,0x54,0xfa,0xe4,0xf5,0x79,0x4c,0xd8,0x50,0x30,0x45,0xfe,0xa8,0x5c,0xf7,0x7f,0xd9,0x2f,0x6a,0x70,0xcd,0x0c,0x5a,0x52,0xc0,0x81,0x0e,},"\x10\xc6\x46\x44\x7f\x81\xad\x94\xd0\x15\xd8\x6d\x0d\x98\xb2\x45\x2d\xca\x60\xa4\x7a\xb3\x52\x64\x03\x5e\x33\xa0\x94\x2b\x95\x4e\x3e\x23\xb9\x1d\x81\x23\xb8\x59\x3c\x6a\xf7\xc8\xd3\xec\xd2\x90\xe0\xe5\xee\x36\xfd\x4e\x53\xb7\xbe\x63\x3a\x6c\xf0\x27\xa5\xac\x3f\x0f\x67\x9e\xb1\xbd\xd2\x10\xa3\x8e\xa6\xe4\x8b\x05\x58\xe3\x03\x01\x0a\xf4\x74\xe7\xf6\xdf\x2a\x4e\x45\x76\x99\xfc\x38\xe3\x69\x38\xb0\x5f\xfc\xaa\x1b\x69\x4e\x32\xf3\xd1\xb2\xcc\x5d\x00\xcf\x25\x6f\x12\x18\x4c\x87\x3e\x51\x90\x89\xec\x1d\xf1\x5b\x0d\xc7\x6e\x7b\xfe\x90\x78\x0d\xf5\x81\x36\xfe\x59\x7f\xce\x89\x4c\xa5\x63\xe0\x8e\xfa\x0f\x2d\x4d\x20\x8b\xed\xe9\xa8\x74\x88\x28\x73\xd2\x51\xba\xf0\x19\xfe\x46\xd1\xd6\x50\x4b\x3b\xcd\x24\x3b\x79\x53\x51\xf3\x4d\x2e\x76\x06\xaa\x97\x55\x28\xee\x50\xd5\x9e\xfb\x6e\xe6\x99\x2a\x89\xb2\x42\x69\x56\xc2\xca\x42\x47\xe0\xdf\x01\x29\x85\x29\x83\xe9\x76\x7a\x8e\xed\x1b\xc7\x33\x5f\xfc\xa8\xd0\x28\x9f\x04\x80\x7f\x67\xca\x7d\xa9\x71\xf5\x8d\xb8\xb9\xbc\x9f\xdb\xe4\xf8\x3c\xfe\x9a\x00\xf1\xca\x58\x47\x98\xbc\x71\xd8\x51\xff\x7c\xd6\xc5\x1b\x89\x90\xaa\xba\x4d\x38\xb4\x16\xb9\x22\x40\xdf\xb7\x0e\xe3\xc1\x2b\x5e\x73\x10\x57\x76\x2e\xf9\x08\x23\xfb\xf6\x83\xca\x06\xd0\x5c\x20\xd3\xae\x2b\x97\xa8\x3e\xbe\x70\xae\x17\xaf\xff\x9d\x16\x60\x9d\x54\x6d\x8d\x3c\x74\xbc\x28\x18\x84\x89\x4f\x3d\x49\xe0\x83\xf1\x0a\xe7\xc1\x1c\x1d\xca\x0e\xff\xef\xcf\xa6\xe0\xf1\x53\x50\x81\xfa\xc3\xa2\x81\x9f\xd2\xe3\x26\x55\x27\x18\x2a\xe9\xd3\x91\xb2\x32\xbb\x75\x42\xe6\x84\x55\xcd\x26\x77\x60\xdb\x65\x2d\x19\xe2\x2f\xb2\xed\x11\xcd\x13\x05\xba\x8d\x98\xc1\xeb\xf2\xd1\x96\x9b\x24\xd6\x4f\x3e\x31\x9a\xf7\x4e\x09\x20\x06\xd2\xa3\xff\x74\x48\x72\xa2\x0e\xbf\x18\xd1\x77\x48\xab\x71\x10\x80\x50\x96\xea\x13\x6b\xce\x2f\x96\x8b\x20\x5e\x65\x0b\x80\x3c\x53\x1d\x06\x77\x5a\xe5\xce\xea\x28\xbb\x92\xe9\xa0\xed\xec\x89\x51\xce\x20\x09\xa8\x8e\xe1\xb6\x4d\x9b\x9e\x89\xf6\x90\x51\x20\x33\x84\x21\x0a\x10\x2a\x44\xd2\xd6\x70\x31\x73\xb6\x85\x07\xdc\xea\xdd\x3b\xf6\x51\x0d\xf2\xa5\xce\xfd\x9c\x80\xe4\xf3\x85\xb2\xf9\xe6\x21\x58\x13\xed\x32"}, +{{0x11,0x26,0x49,0x6a,0x58,0x2c,0xe5,0x8d,0x3d,0x61,0x8d,0xd8,0xa3,0x93,0x35,0x47,0xaa,0x7a,0x8a,0x30,0xfb,0x54,0x06,0x3b,0x8d,0xfd,0xd3,0x16,0x71,0xc6,0xc7,0x3d,},{0xe1,0x02,0x29,0xc6,0x23,0xfa,0x8a,0xd8,0x98,0x2c,0x3e,0x4c,0x36,0xff,0x52,0xdf,0x0f,0x21,0x9b,0x57,0x91,0x5b,0x6e,0x98,0x0e,0x5f,0xe7,0x2e,0xa0,0x96,0x2e,0x22,},{0xb3,0x0e,0xb5,0x6c,0xa9,0xb1,0x20,0xbf,0x84,0x9a,0x3a,0x9d,0x56,0xaf,0x03,0x3d,0xe8,0xa5,0x90,0xc9,0xe1,0x24,0x0c,0x1e,0x36,0xdb,0xc6,0xcf,0x0a,0x71,0xb7,0x8a,0x11,0xec,0x14,0x3f,0xb9,0x95,0x9a,0x8f,0x25,0xb5,0x77,0x11,0xd6,0xa9,0x0a,0x67,0xe0,0x1b,0xe3,0xa4,0xda,0x2b,0x69,0x39,0x48,0x69,0xbb,0x8d,0x64,0xb8,0x7e,0x0f,},"\x6a\x4b\x52\xd7\x30\xdd\xab\x82\x9b\x2a\x17\x95\x90\xcb\xd4\xc3\x72\x49\x8e\x9f\x43\x99\x77\xc0\xa1\x0d\xc1\x3c\x0a\xe1\x73\x6e\xaa\xff\x06\x33\x71\x43\x4f\xd0\xda\x80\x36\x0e\xc5\x89\x06\x07\xd2\xfa\xe1\xc9\xa2\xe1\xab\x0b\x7f\x3d\x66\x7f\x5b\x1b\x9c\x41\x8f\x18\xb1\x0c\x9e\x6f\xd6\x69\xd3\xeb\xec\x16\x8e\xfe\xf4\x41\x63\xe5\x77\xa2\xeb\xd0\xf2\xcb\x76\x8f\x80\xc2\x31\x88\xe8\x60\x69\xe4\xd1\x0f\x41\x03\x06\xce\xdd\x7a\x34\x1a\x61\xe0\xf4\xf3\xbc\x25\x04\x1b\xc2\xf9\x22\xed\x07\x3e\x1e\x2f\x1b\x70\x9c\x57\x9d\x10\x63\x0f\x33\x07\x17\x54\xd7\x07\x89\x4a\x1c\x62\x19\x0d\xe1\x88\x82\xc5\x64\xdc\x4c\x01\xdc\x54\x5d\xd8\x96\x64\x04\xed\x78\xfa\x32\x67\xa9\x46\x9f\x63\xb6\x12\x0a\xbb\x65\xf9\xb3\xba\x3e\xee\x28\xd7\x9c\x2e\xb4\xe7\x02\x0c\xc6\x98\x7d\xfc\x5c\x29\x67\x2f\x8c\x0f\xa3\xe6\x90\xd5\x84\xfe\x00\x0c\x64\xf3\x52\x61\x01\x79\x62\x1b\xfd\x5f\xf3\xeb\x30\xd1\x8f\x1a\x02\x50\x41\x6d\xb9\x3b\x1c\x1e\x93\xcf\x8a\x36\x46\x51\x75\x60\xd1\xcc\x8f\xff\x82\x2b\x51\xef\x27\xb2\x00\xe9\x87\xb5\x92\x39\x07\x53\x45\x3e\xf1\x38\xbd\x3d\x29\xdb\x7c\xb1\xb5\xf4\x5e\x47\x95\xb8\x9c\x53\xf4\x97\x04\x19\x27\x52\x23\x7c\x6a\xb2\x74\x84\x9f\x95\x94\xee\x97\x77\xf6\xef\xe7\x04\x83\x12\x9d\x06\x7f\x97\x19\x9d\x9a\xe3\x60\x90\x70\x38\x64\xf7\xca\x47\x50\xa6\xf3\xb6\xff\x83\x82\x4c\x91\x04\x84\x39\x4d\x1e\x2e\xce\xba\x18\x44\x6f\xe4\xe9\x94\xce\x07\x43\x3a\x74\x0d\xdd\x05\xf0\xe3\x96\xd4\x82\x89\x4e\x6f\x14\xac\xf7\xb9\x7b\xae\x6c\x7e\xb8\x87\x03\x03\x9f\xa7\x85\xd6\x0a\x3a\xf7\x8b\x13\x24\x3a\x4f\x88\xdd\xe1\xd9\x98\x61\x7f\x2e\x3f\xa7\xea\xfc\x2f\x43\x5d\xd4\xac\x1e\xa9\xc2\x38\x40\x7a\xa0\x9b\x4e\xea\x8e\xd4\x34\x92\x7b\x40\x66\x74\xac\x27\x04\x58\xcf\xb3\xbf\x29\xc3\x47\xf9\x45\x59\x61\x31\x79\xb9\x50\x21\x92\x32\x1b\x88\xe9\xaf\x0a\x90\xe9\xa4\xab\x9e\xdd\xaa\xe3\x82\xe3\x73\x4d\x14\x15\xeb\xe3\x24\x99\xc3\x4e\x6f\xde\xaf\x15\xb0\xd9\x78\x79\x85\xe0\x8d\xfe\x49\x54\x60\xc5\x4f\x67\x43\xd8\x1f\xf1\x68\x81\xe5\xe3\x0c\x51\xf4\xb0\x92\x37\x37\x83\xf1\x24\x23\xc3\xe1\xae\x85\x91\x13\x0a\x26\x99\x80\xca\xa1\xcb\x5c"}, +{{0x9c,0x16,0x7a,0xff,0x3b,0x1b,0x78,0x8f,0x13,0x3d,0x42,0x2d,0xe8,0xca,0x9a,0x64,0x31,0x64,0x09,0xf9,0xe3,0x5b,0xfe,0x22,0x03,0x2e,0xc4,0x17,0xae,0x9a,0xbc,0x6d,},{0xef,0xb5,0x34,0xf0,0xd4,0x7c,0x06,0x8e,0x77,0xb2,0x8a,0x90,0x6d,0x95,0xad,0x8d,0x21,0x3a,0x4d,0x4f,0xc1,0xc7,0x05,0x42,0xf0,0x1e,0x59,0x6d,0x57,0xb5,0xf0,0x19,},{0xc9,0xae,0x67,0xfd,0x64,0x15,0xdc,0xba,0xb2,0x92,0xfa,0xb3,0x94,0xca,0x6c,0x3b,0x7d,0x90,0xca,0x24,0x4d,0xc6,0xa7,0x76,0x4e,0x74,0xfd,0x20,0x2b,0xf4,0xb2,0x90,0x5b,0xd2,0x03,0x0e,0x6b,0xeb,0x91,0x4c,0x3c,0x23,0x8d,0xb3,0x71,0xb1,0xcb,0xa6,0xd9,0x26,0x1a,0xa3,0x92,0xec,0x87,0x1a,0x4b,0x8b,0x12,0xfe,0x9c,0x1c,0x97,0x0e,},"\x68\xac\x0f\xc2\xb6\x07\xba\x38\xe3\x77\xfa\xe8\x45\xc8\x08\xc8\xf9\xfa\x61\x4e\xb1\xf3\x11\x58\xa9\x62\x0a\x93\x7d\x3e\x30\x1e\x85\xac\xaa\x69\x14\x4b\xc3\x49\xa3\x9d\xfb\x58\x20\x41\xc4\xa1\x97\xae\x99\xb4\xd4\xd5\x9b\x7a\x2c\xa3\xd1\x62\x28\xb5\x59\x1c\xbf\x57\xc1\x8a\x78\x1e\xfd\x19\x19\x3c\x47\xb1\x6c\x60\x23\xa3\xa8\xba\x3d\x66\x8f\x05\xa3\x7f\x1e\x83\xb0\xd7\xfe\xbd\xd1\x0f\x63\xe4\x8e\xf7\xa2\x0e\x01\x5b\x1c\x67\x25\xd4\xc3\x00\xa9\x86\xc6\x0e\x3a\x11\x54\x69\xc8\xe5\x2b\xa0\x5b\x51\xc0\x5d\x0a\xf4\x0d\x89\xfd\x9e\xd7\x6f\x36\x95\x0a\xee\x3c\x78\x19\x89\x8a\x90\x3c\xfe\x03\x61\xa9\x1c\x69\x10\x0b\x49\x51\x41\xe8\x6e\xe7\x9d\x63\xd1\x74\x03\xfb\x1a\x16\x29\xef\x63\xcb\x7e\x9d\x27\x20\xcb\xff\xf0\x00\x2b\x19\x0b\xcd\xc2\x67\x94\x12\x4d\xd3\x8d\x42\xbc\xaa\x71\x75\x40\x5e\xb0\xbb\xcf\x8e\x37\xd6\x5d\x05\xa3\x71\x95\xb4\x79\x37\x1f\xa2\xbb\xbb\x16\x7d\x91\xce\xe8\x82\x35\xdd\x72\xea\x88\xfc\x73\xce\x3c\xe4\x3d\x33\xb7\x15\xf2\x5f\x19\x2e\xc2\x15\xda\xc1\x24\x89\x9c\x5e\x75\x86\xe8\x63\x40\xd8\xcb\xe5\x37\x35\xde\xfb\xe0\x2e\x4c\xc9\xfd\xe6\x9f\xb9\x79\x4d\x1d\xb7\x2b\x98\xc0\xf1\x97\x66\xee\x51\x38\xbb\xfa\x78\x90\x9a\xa2\x99\xb4\x91\x3c\x49\x9d\xea\xf5\x4b\x48\x41\xd5\x04\x48\x29\x98\x49\x36\x70\x0d\xcf\x92\xf3\x65\x42\xb2\xfc\x7e\x86\x44\x1b\x99\x25\xf5\xd0\xb7\x8c\x17\xa8\x5c\xfc\xfc\xb2\x0b\x0f\xd7\x51\x34\x9c\x27\x46\x3a\xbd\xe4\xd2\x7d\xf7\x42\x65\x28\x87\x13\xf9\x6d\xea\x01\x3b\x94\x55\x21\x80\x8b\x49\x96\xb1\xb2\xdc\x03\x38\xb6\xd2\x36\xef\xd6\xd2\xb2\x7d\xaf\xda\x46\xec\x5f\xa3\x2b\x96\x5e\x8b\xb5\xe8\xbb\x61\xbd\x96\x6e\xde\xb7\x74\x68\x1e\x0e\xa8\xc1\x7b\x8c\x99\xfa\x7d\x66\x0f\x0f\x66\xc9\xbc\x6d\x95\xcb\xd7\xdc\x09\x47\x24\x09\x8e\xb0\x51\x91\xb5\x3a\x3d\xf6\x56\x6b\x9c\x90\xe0\xd7\xdf\xf2\x94\x38\x48\xb6\x1a\x20\xd4\x8c\x22\xb6\xd3\xc9\x58\xe2\x93\xd7\x09\xc8\xf4\x81\x10\x23\x0f\xf5\x19\x18\x56\x28\x77\xda\xf6\xd9\x20\xc8\x5a\x82\xe0\x7c\x45\x1f\xe7\xae\x97\x59\xc0\xa7\x7e\x97\xbb\x29\x8b\x5d\x05\x92\xa4\x1d\x08\xf6\x7a\x4e\xd5\xa1\xbb\x41\xe9\x37\xb6\xa6\x8a\xeb\x38\xfd\x5b\xe9"}, +{{0xe9,0x94,0x88,0x05,0xeb,0x34,0x1b,0x28,0x67,0x47,0x9c,0x66,0x8f,0xd3,0x53,0x2c,0x30,0x99,0x41,0xc0,0xad,0x4c,0xb2,0xe5,0x42,0x31,0x75,0x6e,0x6a,0x1b,0xde,0xcb,},{0x54,0x47,0xa8,0xe3,0x4d,0x6a,0x64,0x00,0x02,0xd8,0xd6,0x0b,0xcf,0x1d,0xdc,0x71,0x1e,0x4c,0x46,0x5c,0x94,0xc3,0x4b,0x50,0xbd,0xef,0x35,0x89,0x60,0xff,0x81,0xf1,},{0xd3,0xdc,0x62,0xd6,0xce,0x9c,0x76,0x6f,0x2a,0xba,0xf9,0xa7,0xfb,0xe0,0x9d,0x6b,0xdb,0x07,0xa4,0x74,0x7b,0x56,0x08,0x0d,0xb0,0x9b,0xeb,0x4a,0x4e,0x80,0x4a,0x70,0xd7,0xdd,0xf4,0x11,0x94,0x75,0xc7,0xbe,0x83,0x4f,0x31,0x95,0x6f,0x4a,0x71,0xda,0xd0,0x29,0xcd,0xf2,0x36,0x3d,0xd0,0x36,0x5c,0xe2,0x2d,0xc2,0x7f,0x07,0x80,0x03,},"\x91\xcf\xfd\x7e\xb1\xcf\x6b\xd4\x75\x6b\xce\x6a\x30\xaf\x9d\xfb\xa2\x6d\xdd\x1c\xce\x03\x94\xc1\x94\xa3\xe3\x9c\xc3\xd1\xcb\xc2\x21\xb7\xeb\x70\xbe\xa1\x8d\x29\xc2\x67\x45\x71\x76\xa3\xc9\xe5\x3c\x18\xe4\x7d\x10\xa6\x7c\x46\x45\x05\x19\x77\x02\xe6\xb2\x47\x0d\x38\x86\x9d\xb5\x17\x4b\x15\x8f\x99\x92\xe4\x43\x5d\x02\x24\x6f\x54\x02\x58\xde\xdd\x3c\xe3\x3d\xf5\x82\x55\x5a\x68\x1f\xb7\x6e\xca\xcc\xb1\xc2\x98\x9b\x17\x7e\x3b\x7e\x45\x4a\xaa\x52\x9d\xe5\x9b\xf5\xa0\x31\x23\xd5\x71\xdf\x2e\x7f\x7c\xb8\x30\x80\x5c\x58\xb7\x4a\x65\x3b\xac\x0e\x5a\x88\x8e\x08\xdc\x22\x36\xd6\xcd\x49\x6a\xa0\x6d\x0d\x67\xcf\x3b\x33\x5e\x21\x8c\x49\xde\xda\xd8\x2f\xc1\xbe\x9e\xf2\x0c\xac\x61\x90\x5c\x30\xeb\x13\x2d\x73\x9b\x16\xca\x8a\x8c\x90\x66\x19\xc0\xe0\xd8\xb3\x39\x85\x32\x7e\x36\xf3\xd4\xb8\xfd\xa3\x87\xc1\x86\xcc\x50\x44\x31\x04\xdb\x76\x1f\x7f\xf9\x30\x12\x70\x20\x4a\x71\x3e\x58\x90\x21\x01\xfa\xd0\x00\xce\x93\x16\x47\xc5\x77\xfd\xec\x14\x8d\xca\x95\xcd\xc0\x89\x18\xeb\xed\x03\x7c\x60\x33\x2f\xad\xf0\x88\xf0\x36\x08\x3e\xbc\x92\xe1\x73\xb7\xdd\xcc\x30\xc4\x93\xf2\x7e\x69\xcd\x17\xa2\x0d\x30\xb7\x8f\x83\xa7\x2e\x4f\x5a\x74\x7d\x86\xd9\x6c\x5e\x1b\xb7\xa4\x38\x16\x62\x04\x01\x3e\x21\x64\xd6\xaa\xbc\x0d\x56\x2f\x54\x01\x5c\x36\x5c\x80\x44\x56\x07\x14\x5e\x56\x92\xee\x34\xf6\x35\x30\x77\xfa\xb7\x45\x2d\x88\xce\x3e\xb0\x1d\x2b\x37\x97\xdc\x91\xb3\x41\xa3\xa7\x26\x30\x15\x16\xba\xae\x18\xe8\x51\xf7\x4d\xfb\xdf\x08\x66\xbb\x23\x76\x86\x7d\xe5\x52\x31\xe3\x62\xc4\x72\xc5\x21\x16\x54\x4c\xd4\xf8\x1e\x93\x57\x1c\x4e\xc8\x20\xe7\xe6\x53\xf4\xe2\x1b\xe0\xa9\x42\x57\x6c\x9d\xe9\x1e\x7d\x12\x51\x68\x3d\x85\x9d\xe4\x48\xf8\x22\xdc\xf3\xd2\xcf\x55\xed\xe2\xf9\xc7\x1b\x60\x63\xd1\x37\x30\x61\xf8\xf5\x93\x6b\x69\x8d\x13\x84\xe6\x54\x59\xea\x2b\xc2\x6e\xc9\x67\x75\xef\x42\x52\x07\x43\x2d\xda\x0a\xc1\xfe\x28\x52\x6c\x5e\x45\x59\x34\x9c\x3d\x8d\xf9\x91\x82\x30\xf4\x04\x46\x83\xcc\x2c\x1b\x85\x8d\x14\x1a\xb8\xd0\x80\x5b\xb9\x33\x60\x67\x52\x2a\xa8\x9c\x81\x0f\x3e\xaa\x7a\xc2\xd8\xdd\x28\xc3\x75\x12\x25\xa1\x9e\xce\xc8\xbc\xca\x52\x43\x99\x46"}, +{{0xb0,0x17,0x53,0xef,0xa7,0x3b,0xb3,0xde,0x7a,0xa7,0x78,0xbe,0x7a,0xfc,0xbf,0xf6,0x6a,0x5d,0x3e,0x2c,0x2f,0x8b,0x5a,0xa2,0xb0,0x48,0x84,0x40,0x50,0x99,0x69,0x65,},{0xd0,0xcc,0x6c,0xf1,0x09,0xc9,0x99,0xfb,0xf6,0xd1,0x6f,0x47,0x1f,0xaf,0xd0,0x23,0x2b,0x0a,0x68,0xd4,0xc4,0x64,0x06,0xec,0x75,0x45,0xdb,0xab,0xa8,0x19,0x41,0x58,},{0x16,0xb7,0x42,0x12,0x27,0xae,0x09,0x13,0x06,0x85,0xcb,0xb1,0xa0,0xc6,0x0a,0xa5,0x7a,0x5e,0x1a,0xfe,0x1b,0xbe,0x6b,0xac,0xea,0x0c,0x28,0x1b,0xcc,0x89,0x98,0xe6,0x82,0x4a,0x77,0x2c,0x32,0x08,0xa6,0xb6,0xb4,0xd2,0x36,0x69,0x55,0x05,0xc9,0xbe,0x82,0x70,0x0c,0xf9,0x3a,0x78,0x39,0x85,0xa3,0x9e,0x16,0xe3,0x77,0xa7,0x41,0x0e,},"\x68\x4e\x61\x2f\x27\xee\xad\x0d\x34\x84\x4c\xc8\x1b\xa9\x11\xc2\x8a\xaf\x6d\x66\xe7\x12\x29\xe8\xcc\x34\x62\xf7\xc7\xa0\x50\xda\xa3\x0c\xb7\x44\x71\x15\x0f\x07\xda\xd4\x59\xb5\xa9\x13\x58\x47\x6c\x05\x98\x25\x5d\x8a\x64\x2d\xd7\xc0\x80\x28\x11\xbd\x88\xe4\xca\xc5\x97\xef\xe4\x1e\xbd\x96\xcd\x0f\x3b\x5c\xe7\x2d\xb4\xbe\x1a\x3d\xbd\x6b\x84\xf5\x44\x6e\x3d\xa6\x00\xd3\xb1\xd2\xb4\x60\xa0\x09\xbd\x31\xca\xcd\x98\xa9\x15\x18\xce\x33\xe9\xa7\x03\xd4\x04\x28\x87\x36\xcc\xc4\x31\x03\xfc\x69\xe6\x79\x74\xf3\x16\x52\xfa\x3d\xad\xef\x33\x37\xf6\xc8\x97\xa3\xd2\x01\x30\x3c\x8f\x03\x59\x7b\x4a\x87\xc9\x8f\x29\x1c\xcd\x58\xa3\xf1\xe8\x98\x33\x2a\xa5\x99\x3b\x47\xfc\xb5\xdd\xaa\x1c\x08\x68\xb6\x43\x74\x2d\x0e\x4a\x4b\x9c\xd4\x27\x03\x8b\x3b\x74\x99\x9b\xc8\x9a\xc3\x48\x4c\x0c\xa1\x3f\x25\xaa\xe8\xe7\x8a\xe1\xcc\xee\x62\x18\xac\xca\xb8\x1a\x4f\x69\x4f\x53\x24\xa3\x47\x62\x9d\x49\xb5\x5e\x40\x37\x50\x4a\x9a\xcc\x8d\xf5\x8c\x68\x41\xdd\xdc\xd4\xfc\x43\x47\xf7\xb6\xf1\xfd\x9d\xe0\x56\x45\x77\xe6\xf3\x29\xed\x95\x1a\x0a\x6b\x91\x24\xff\x63\xe2\x2e\xb3\x6d\x3a\x88\x63\xbc\x1b\xf6\x9c\xea\x24\xc6\x05\x96\x7e\x7d\x89\x48\x95\x3f\x27\xd5\xc4\xc7\x5f\x08\x49\xf8\x72\xa3\xe3\xd1\x6d\x42\x2f\xa5\xa1\x1e\x1b\x9a\x74\xdf\x6f\x38\xb9\x0f\x27\x7d\x81\xfc\xe8\x43\x7a\x14\xd9\x9d\x2b\xef\x18\x9d\x7c\xac\x83\xdd\xc6\x13\x77\xed\x34\x8b\x3c\x4f\xc0\x9e\xc2\xb9\x00\x59\x25\xd0\x4a\x71\xe2\x6d\x64\x16\x67\xbd\xf5\x49\x29\x43\x31\xc6\xea\x01\xcd\x5c\x0b\xd1\xb6\xa7\xec\xfd\xa2\x0b\x0f\x19\x29\x58\x2b\x74\x69\x7c\xb2\x62\xc3\x92\x7d\x6b\x22\x3f\x4b\x5f\x30\x43\xaa\x6e\xb4\x57\x1a\x78\xe9\xda\x11\xc2\xb3\x6f\x64\x55\x25\x80\xca\xa7\xb5\xfa\x6b\x90\xf9\x29\xe0\x16\x2e\x60\x8d\x12\x40\xd7\x24\x2c\xd2\xf4\x70\x25\xc0\x3d\xeb\xe0\x59\xb1\xdc\x94\x77\x02\x32\xbc\x67\x65\x14\x84\x80\xbb\x1d\x9f\x50\xda\x1e\xe6\x44\x8c\xf9\xc8\x8b\x19\xdd\x45\x99\x32\xc0\x6e\xd8\x11\xc4\xa6\x4a\x12\xd5\x93\x8b\xd1\xc7\x57\xbc\xfa\xea\xee\x89\x33\xfe\x5f\xff\x21\x76\x3d\xe7\x40\x48\x2b\xcf\x1b\xa5\x9a\xfd\xc8\xfc\xf8\x73\xc3\xd5\x07\xbb\x39\x4e\x32\xe4\x5f\x73\x65\x19"}, +{{0x4f,0x4b,0x20,0xd8,0x99,0x36,0x6f,0x2f,0x23,0xee,0x62,0x8f,0x22,0x9b,0x23,0x6c,0xf8,0x0f,0x43,0xba,0x18,0x31,0x77,0xc9,0x7e,0xe3,0x48,0x29,0x54,0x6f,0x17,0x42,},{0xc9,0x45,0x76,0x64,0x1f,0x4a,0x89,0x3c,0xdf,0xce,0xe7,0xb3,0x9f,0xc2,0x19,0x29,0xb8,0x6b,0x34,0x99,0x76,0xd7,0xb0,0xa4,0x6d,0x39,0xa5,0x88,0xbc,0xfe,0x43,0x57,},{0x0f,0x80,0xff,0x5d,0x17,0x48,0x8f,0xe2,0x6f,0x93,0xc5,0x43,0xb0,0x4e,0xd9,0x59,0xb5,0xf0,0x64,0x3f,0xc6,0x1c,0x7f,0x2c,0x3b,0xc6,0x01,0x32,0xba,0x9c,0x62,0x10,0xc8,0xb2,0x50,0xea,0x5e,0x84,0xd0,0x7b,0x01,0xde,0x68,0xbc,0x17,0x44,0x14,0xee,0xeb,0x31,0xfd,0xc2,0xba,0x68,0x23,0xe2,0x31,0xe3,0x12,0xa9,0x1e,0xde,0xdd,0x02,},"\xdb\x8e\xf0\x2e\x30\x33\xe6\xb9\x6a\x56\xca\xb0\x50\x82\xfb\x46\x95\xf4\xa1\xc9\x16\x25\x0d\xd7\x51\x73\xf4\x30\xa1\x0c\x94\x68\x81\x77\x09\xd3\x76\x23\x34\x6a\xe8\x24\x5b\x42\xbd\xa0\xda\x6b\x60\x46\x2c\xcf\xdf\xc7\x5a\x9a\xb9\x94\xe6\x6c\x9a\xb9\xfe\xcd\xd8\x59\x96\x10\x91\x0a\xff\xe4\xf1\x02\x15\xcb\x28\x0b\xf8\xf9\xf2\x70\x0a\x44\x47\x96\xda\xe9\x3e\x06\xc6\xbe\xa7\xd8\xb4\xfe\x13\x01\xba\xa7\x9c\xce\xc7\x69\x36\x8f\xeb\x24\x42\xc7\xde\x84\xf0\x95\xe6\xb3\xbf\xf6\x3d\x38\x8c\xba\xfb\x2b\x98\x09\xdc\x38\xe9\xb1\x2e\xbd\x03\x9c\x0a\x57\xf4\xd5\x22\xe9\x1e\xc8\xd1\xf2\xb8\xd2\x3a\x4a\x0a\xe0\x59\xaf\x85\x39\x3b\xb0\xa1\x5f\x74\x91\x10\xf6\x77\x4a\x1f\xd7\x31\xa6\xec\x21\x3e\x4f\xf4\x35\xda\xab\x54\x6d\x31\xed\x9e\xc3\xb6\xd8\xcc\x2e\xda\xce\xbf\x4f\xac\xc5\x56\x65\x56\xee\xa9\x2e\x5b\x3f\x25\x42\x23\x9b\x25\xe2\x80\x12\xdd\x4e\xf4\x00\x72\xee\xbf\x83\xed\x2a\x25\x51\x81\xf3\xa4\x42\x18\x9d\x68\xc6\xc6\x09\xf4\xdf\xdf\x3d\xb7\xd6\x7d\x08\x7a\x2f\xcd\x6d\x2d\xc5\x0b\xbf\xed\x8b\xfb\xbf\xcb\x74\xd3\xc4\x1f\x02\xa8\x78\x65\xb1\x3b\x8e\xfc\xf5\xc3\x58\x12\x57\xbe\x0a\xa9\x13\xf6\x0c\x37\x05\x27\xbd\xe1\x1a\x47\x5c\x13\x6a\x17\xc5\xee\xfe\xb0\x3f\x5b\xff\x28\x69\x3e\xd8\x41\xe8\xed\x1f\x7c\x29\x10\x2f\x55\x99\xdd\x44\x40\x09\xbc\xea\x6a\x92\xd5\x57\x41\x52\x45\x8e\x0c\xaf\x8a\x36\xaa\x72\xb5\xdc\x49\x08\xa6\x46\x1c\x9b\x74\x14\x53\x00\x5c\x8f\xbc\xc6\x81\x13\xae\x18\x42\x08\xee\x14\xb8\x35\x48\x0c\x6e\xfa\xfe\xd1\x8a\x76\x00\x0b\x38\xe5\x85\x82\x90\xf4\xd5\x1f\x52\xf0\x96\xcb\xe4\x90\xe1\xeb\x5c\xac\xb2\x26\xec\x49\x5a\x55\xa7\xfa\x45\x78\x43\xd5\x7f\xab\x67\xf8\xbe\x7e\x20\x93\x34\x78\x5b\xdd\x66\x5d\x7b\x63\xe4\xda\xf5\x7b\x6e\x78\x92\x8b\x60\x3c\x8c\x0f\x9b\xc8\x54\x64\x73\x3b\x61\x27\x3e\xf9\xe2\xb8\xa0\xcd\x7c\x3b\xf8\xee\x0a\x68\x72\xe3\x4d\x5a\x27\xa6\x25\xe3\x5e\xaf\x7f\xf5\x44\x0b\x8b\x14\x1a\xf7\x04\xdf\x70\xc9\xc1\x86\x23\xbd\x11\x20\x95\x13\x19\x25\x05\x10\x5c\xd7\xbc\xfa\x5f\x0d\x91\x9d\xa7\x06\x94\x8f\xbe\x1f\x76\x1f\x31\x58\x46\xaa\x3b\x48\x13\xdd\x9b\xa3\xd8\x1b\x92\x04\xe5\x40\x9c\x03\x82\xb6\xeb"}, +{{0xd2,0xe0,0x1d,0x25,0x78,0xb6,0x25,0xa7,0x06,0x0a,0xab,0xc2,0x57,0x65,0xf1,0x68,0xc6,0x80,0xce,0xf7,0x67,0xaa,0x97,0xca,0x0e,0x5e,0xb3,0xd6,0x67,0x47,0x4b,0x2a,},{0x19,0x1a,0xc2,0x23,0x57,0x54,0x24,0xaa,0x35,0x4b,0x25,0x5b,0x81,0x2d,0xd3,0x02,0x5d,0x70,0xed,0x82,0x9e,0x08,0x26,0xc0,0x16,0x29,0xf9,0xdf,0x35,0x45,0x08,0x2b,},{0x87,0xa0,0x10,0x39,0x4a,0x9f,0x2c,0x90,0x4e,0xff,0xef,0xca,0x9f,0xb4,0xd5,0xce,0x13,0x79,0x33,0x01,0xa4,0x92,0x5b,0xa5,0x1d,0xb1,0x19,0x12,0x3a,0x4d,0x73,0x0a,0xbf,0x76,0x4c,0xe0,0x65,0xe4,0x8d,0x90,0xa7,0x9d,0x90,0x7d,0x72,0x54,0xc4,0x0c,0xc3,0x58,0x98,0x7a,0x46,0x94,0x9e,0x92,0x8b,0xbb,0x3c,0xd0,0x85,0xdf,0xab,0x06,},"\x20\xd5\xdd\x69\x9b\x28\x53\x30\x2a\x68\x17\x09\x4d\x5e\xa5\x12\xbd\xf8\x53\x45\x04\xcb\x28\x9c\x60\x24\x67\x41\x07\x40\xec\x7e\xb8\xea\x64\x42\xc8\x0f\x14\x59\x35\x06\x8f\x91\x22\xfd\xf4\xa3\x9f\x20\x10\xf3\x3d\xb5\x5b\x81\x4d\x97\xbf\x2e\x58\x72\x32\x9f\x11\x26\xd4\xeb\x95\xb8\x06\xca\x19\x73\x11\x31\x65\xb1\x16\xbe\x87\x16\x37\x1f\x81\x33\x17\x79\xdc\x79\xa5\xcb\x39\x42\x08\x1a\xb5\xf2\x07\xf6\xb5\x3d\xb0\xe0\x03\x81\x07\xd6\x3c\xa9\x77\x08\x18\x19\x82\xdc\xb5\xf3\xb9\x30\x10\xec\x6e\xdf\xb2\xcf\xd3\x1c\xab\x00\x09\x0b\x3c\x38\x51\x5f\x97\x81\x76\x96\x86\xcb\x17\xab\x81\xd5\x4a\x8b\x77\x57\x54\xd4\x2f\xba\xd0\x86\xb8\x0b\x28\xd6\x36\xf7\x8b\x7e\xb7\x7e\xd9\xca\x35\xb6\x84\x3a\x51\x0f\x0a\xd0\xac\x1b\x20\x26\x7a\x00\x03\x01\xb3\xc7\x07\xa2\x0f\x02\x14\xd5\x9b\x5b\x81\x99\xc2\xf9\xee\x25\xd3\x20\x60\xac\xe3\xe0\xf2\x59\x46\x50\x41\x6a\x00\x71\x6c\xd3\xf9\x86\x04\xa5\xe1\x04\xb3\x33\x10\xfd\xae\x94\xc3\x14\x01\x3c\xdc\xa5\xba\x24\x14\x40\x9e\xb7\xf1\x90\x13\x94\xf0\x07\xd6\xfa\x0a\x29\xdb\xe8\xec\x3d\xf9\x8c\x39\x3c\x8d\x72\x69\x58\x77\xcc\x9b\xaf\x49\x1e\xf3\x0e\xf7\xdb\x33\x71\x60\x8c\xa9\x7c\xc6\x21\x56\x25\x20\xee\x58\x1d\x5d\x1c\xdb\xc7\x82\x32\xd6\xc7\xe4\x39\x37\xb2\xcc\x85\x49\xe6\xf1\xe0\x8d\xf5\xf2\xea\xc8\x44\xfe\x0f\x82\x2b\x24\x83\xad\x0a\x5d\xe3\x3b\xe6\x40\x89\x49\x0e\x77\xd6\x98\x00\xfa\xe2\x58\x9e\xe5\x87\x12\xac\x15\xa3\xf1\x9e\x6f\xfd\xbc\xa4\x2f\xe1\x89\x4e\x88\x9b\x94\xc0\x4b\x04\x24\x0d\xaf\xb0\xb2\x73\x0c\x23\x6b\x8c\xce\xb2\xcb\x97\xaf\xd1\xd5\x15\xdc\x19\xd1\x06\x7f\xd4\xab\xa8\xce\x29\x7f\xd6\xd1\x10\xb3\x5a\x21\xbd\x3c\x07\x5c\x57\x7d\x93\xfe\x1d\xf7\x7d\x64\x8f\x71\x19\x49\x20\x99\xb0\x17\xaf\x44\xeb\xa0\x9c\x80\x7f\x11\xa4\xc3\xf4\xa1\x1a\x2f\xff\x30\x6a\x72\x8b\xa7\x89\x83\x32\x3c\x92\xa2\xfd\x5f\xcc\x80\xc1\x8d\x42\x34\x26\xf8\x23\xa7\x3f\xe0\x40\x94\x95\x52\x84\x29\x3f\x5f\x6b\x3c\xa4\xff\x10\x80\xdb\xb1\xe4\xc6\xf7\x4c\x1d\x93\x5e\xd2\x1e\x30\x09\x4c\x7d\xe3\x36\xb8\x2d\xd8\x20\x0b\x0d\x65\x95\x83\xc5\xbf\xd5\x47\x0f\x9d\xb3\x42\xe7\x0e\xc4\x00\x07\x42\xc5\x64\x0a\x21\x4e\x3c\x2e"}, +{{0x7c,0xd7,0xec,0x99,0xdd,0x03,0xae,0xde,0x1f,0xf1,0x07,0x3e,0xc2,0xca,0x70,0x10,0x27,0x6e,0x94,0x7e,0x2a,0xa9,0xb0,0xe6,0x5f,0x87,0x7e,0x4c,0xcf,0x1b,0x3a,0x14,},{0xe4,0xc3,0x9d,0xbe,0x94,0x93,0x17,0x6b,0x82,0x13,0xf1,0x42,0x2a,0x9d,0xe7,0xc7,0x4f,0xb6,0xa5,0x91,0x90,0xfc,0xdb,0xf6,0x37,0xc7,0xad,0x5e,0xe1,0x65,0xc0,0x4f,},{0x6f,0x99,0x20,0x27,0x70,0x96,0x45,0x35,0xe4,0x83,0xa0,0xee,0x01,0xa5,0x29,0x44,0x2e,0xb3,0x21,0x30,0x3f,0xa8,0x05,0xd4,0x75,0x60,0x4d,0x7f,0xc7,0x28,0xa9,0x10,0x3f,0xb7,0xb5,0x58,0xb9,0x55,0xf4,0xd0,0x37,0x19,0xee,0xfa,0xa3,0xb7,0xed,0x5b,0x0d,0xa7,0x57,0x10,0xbb,0x98,0x78,0x7f,0x5c,0x22,0x82,0xed,0x66,0xe9,0xf6,0x0c,},"\xa6\x03\x4a\xa3\xc2\x48\x49\x23\xe8\x0e\x90\xe5\xa8\xe1\x74\x83\x50\xb4\xf2\xc3\xc8\x31\x9f\xaf\x1a\x2e\x32\x95\x15\x0a\x68\xe1\xee\xca\x1b\xc8\x49\x54\xcc\x89\xd4\x73\x1a\x7f\x65\x12\xaf\x01\x46\x4f\xdb\xce\x5d\xf6\x8e\xe8\x06\x6a\xd9\xa2\xfd\x21\xc0\x83\x5a\x76\x55\x9c\xa1\xc7\x44\x9a\x93\x3b\xcb\x15\xaf\x90\x22\x3d\x92\x5f\xf6\x1c\xd8\x3e\xb9\x35\x69\x83\x47\xa5\x70\x72\x70\x9a\x86\xb4\xe5\xa7\xa6\x26\xe0\x7a\x3f\x2e\x7e\x34\x1c\x77\x83\xa5\x40\xf8\x4a\xa7\x3e\x91\x7e\x86\x7b\xb8\x0b\xac\xe6\x25\x47\x05\xa9\xd1\xa1\x18\x5d\xe5\x6e\x1a\x4e\x78\xaa\xf5\x39\xe7\x49\xb8\xf7\x65\xbd\x05\x2c\x4c\xd1\x5b\x63\x8b\xf8\xec\xf8\x7d\x98\x14\x60\x6f\xed\x5a\x69\xf4\xda\xe9\xda\x47\xf3\x80\x6d\xd9\x0b\xe6\x4f\xcc\xd3\x36\x5c\xbe\x9e\x01\xc5\x88\xfe\x65\xd6\xb6\x03\x28\x07\x40\x96\x2a\xa8\xdd\xb9\x5a\x3f\x4f\x67\x4c\x03\xbc\x40\x43\x09\x2c\x54\x45\x95\x56\x82\x70\xa2\xc2\xa8\xaa\x06\xe3\xf6\x7c\x31\x99\x8c\x50\xb9\xa5\x8a\xca\xd0\x06\x90\xd3\x84\x81\x14\xcb\x19\x32\x93\xc8\xac\x21\x01\x6f\xd9\x96\xf5\xc6\x42\x14\x06\x4f\x82\x16\x7b\x2c\x92\x0c\xd8\xa8\x39\x75\x58\x52\xac\x77\xc3\xd9\x05\x26\xdd\x3a\xdb\x96\x83\x7c\xf4\xe7\x26\xf3\x4b\xd0\x29\x55\xcb\xac\x5b\x82\xc9\x2c\xf4\xaa\x8b\x54\xbb\x6e\x43\x6d\xae\x9b\xf8\x93\xef\x05\x0c\x6f\x13\x5a\x7e\x62\xfc\xd8\x34\xda\xc1\xd2\xbe\x8b\x8e\x59\xd6\x96\x13\x18\x11\x70\x1c\x43\x18\xbb\x6e\x9b\x5a\x20\xbe\xc6\x56\xfd\x2b\xa1\x92\xe2\x73\x2f\x42\x29\x63\xbe\xd4\xa4\xfd\x1e\xc9\x32\x63\x98\xdc\xe2\x90\xe0\x84\x8c\x70\xea\x23\x6c\x04\xc7\xdb\xb3\xb6\x79\x21\x44\x0c\x98\xd7\x27\x53\xf6\xa3\x32\xea\xad\x59\xfd\x0f\x57\x74\x29\x23\xfb\x62\x5f\xef\x07\x0f\x34\x22\x5e\xa0\x6c\x23\x63\xd1\x23\x66\x6b\x99\xac\x7d\x5e\x55\x0d\xa1\xe4\x04\xe5\x26\xb5\xb2\x29\xcb\x13\x0b\x84\xb1\x90\x3e\x43\x1c\xdb\x15\xb3\x37\x70\xf5\x81\x1d\x49\xfb\xd5\x0d\x60\xa3\x47\x4c\x0c\x35\xfc\x02\x1d\x86\x81\x81\x9e\xc7\x94\xcc\x32\xa6\x34\xbc\x46\xa9\x55\xaa\x02\x46\xb4\xff\x11\x24\x62\x3c\xba\xfb\x3c\xb9\xd3\xb9\x2a\x90\xfd\xe6\x48\xe4\x14\x63\x61\x92\x95\x2a\x92\x29\x1e\x5f\x86\xef\xdd\xb8\x9c\xa0\x78\xae\xa7\x71\x7f\xc7"}, +{{0xe3,0xca,0x37,0x13,0xa2,0xfd,0x41,0x2a,0xd5,0x33,0x6b,0xc3,0x56,0xb7,0x7b,0xe0,0x27,0xd5,0xb7,0x08,0x15,0xb3,0xac,0x2a,0xec,0xd8,0x34,0x0e,0xf5,0xf8,0x89,0xb1,},{0x1d,0x51,0x6c,0xb8,0xbe,0xf1,0x16,0xa0,0xc1,0xb6,0x92,0x90,0x09,0x93,0x3f,0x6e,0xb6,0x2c,0x23,0x05,0x07,0x45,0xfe,0x7e,0x8d,0x3c,0x63,0x16,0x23,0x77,0x81,0x11,},{0xb3,0x85,0x7e,0xa6,0x1b,0xaa,0x9e,0x62,0x83,0x8c,0x4e,0x3a,0x99,0x65,0x02,0xd3,0x36,0x4f,0xe1,0xec,0x59,0x42,0x58,0x35,0x50,0x73,0xdd,0x10,0xe4,0x97,0xc6,0x00,0xbe,0xfb,0x1f,0x8f,0x23,0x3f,0xd6,0xe3,0xb2,0xc8,0x7f,0x10,0xdc,0xb7,0x26,0x1a,0xaf,0x34,0x81,0xbf,0xd0,0x90,0x26,0x05,0xac,0xcc,0x90,0x0f,0xef,0x84,0xd4,0x07,},"\xdd\x99\xba\xf2\x95\xe0\x13\xee\xd1\x07\xba\x8a\xf8\x11\x21\xaa\xf1\x83\x5a\x3c\xca\x24\xf8\xe4\x64\xb4\xcf\xca\xa3\xc7\xbf\xfe\x6f\x95\x36\x01\x6d\x1c\x8c\xf3\x75\x03\x8c\x93\x27\xe8\xe2\x1b\x00\x40\x66\xf5\xea\xc0\xf7\x6a\x3e\x8e\xdf\xb0\x7b\xe8\xbd\x2f\x6b\xc7\x9c\x3b\x45\x6d\xe8\x25\x95\xe2\xc2\x10\x5b\xb1\xb0\xaa\xba\x5e\xee\xe1\xad\xef\x75\x21\x67\xd6\x33\xb3\x22\xeb\xf8\xf7\xcd\x5f\xbf\x59\x50\x8f\xdb\xdb\xec\xf2\x5e\x65\x7a\x9c\x70\x50\xaf\x26\xa8\x0a\x08\x5b\x08\x17\xc6\x21\x7e\x39\xac\xd5\x4c\xb9\xfa\x09\x54\x0f\xc7\xbd\xc5\x22\x6d\x6a\x27\x6d\x49\x2c\xc8\xa3\xdf\xfc\x2a\xbc\x6d\x0b\x9f\xb0\x8c\xbc\xcd\xd9\x43\x2e\x44\x98\x21\xa5\xdc\x98\xcf\xb3\xa4\x18\xe5\x39\xc8\x90\xfe\x5a\x04\x46\xb9\xf8\x1d\x30\x67\x00\x92\x7a\xde\x61\xcf\xdc\xc0\x62\x4f\x13\xb5\x84\x07\x48\x77\x46\x04\x80\x57\x31\xd9\x2e\x77\xd5\xde\xf6\x6b\xe4\x4c\xc8\x17\x94\x6f\x1c\xd7\x58\x19\x6c\xf4\x80\xf9\x9e\x71\x17\x83\x5c\x4c\x87\xcb\xd6\x40\x77\xa5\x62\xa8\x0c\xf1\x1d\x8c\xa6\x5b\xe7\xa9\x4d\x92\xb9\xdd\xae\xa9\x97\xe9\x3f\x14\x48\x57\x7e\xd6\xd8\x43\x6b\x2f\x31\x44\x69\x2c\x1f\xd7\xd2\x8a\x03\xe9\x27\x4b\xc9\xe8\x66\x9d\x85\x75\xf5\xde\x20\xcf\xbd\xbc\xb0\x4e\x9f\x39\xf3\x45\x1d\x70\x48\x37\x5e\x26\x98\xe7\x22\x84\x6c\xb4\xf2\xd1\x9a\x81\x0c\x53\xd4\xc1\xa6\xc3\xb7\x70\xfb\x40\x2d\xf0\x53\x0e\x7b\x29\x07\x22\x3f\xd0\x89\x9e\x00\xcb\x18\x8c\xa8\x0c\x15\x31\xb4\xe3\x7f\xba\x17\x6c\x17\xa2\xb8\xf5\xa3\xdd\xc7\xa9\x18\x8d\x48\xff\xc2\xb2\x72\xc3\xda\x9c\x9b\x89\xdf\xe5\x3f\x2f\xe7\xe3\x67\x2f\x91\xd1\x18\x18\x49\x1a\xce\x14\x0a\xdc\xae\x98\x50\x2e\x11\x4f\x4b\x35\x2b\x90\xe2\xe7\xfb\xd3\x33\xb2\x45\x9e\x7f\x15\xdd\x07\x64\xc9\xc3\x4e\x4c\xb7\xcc\x09\x55\x00\xcd\xa0\x35\xe8\xe2\xe4\xe3\xc8\xfd\x5d\xf5\xf3\xaa\x57\x9a\x73\x5d\xd8\xa9\xf1\x9e\xf3\x36\xfa\x97\x11\x14\xe4\x66\x18\x73\x4a\x4c\x13\xd3\x0c\x81\x12\x8c\xa2\x1d\xef\x47\x33\x01\x03\xd2\x3d\x80\xff\xe6\x74\x21\xa6\xcc\xf9\xf3\x6a\x93\xf0\x56\x03\xc5\x99\xee\x10\xb0\x34\x51\xf3\x6b\x21\x33\xc1\x87\xa7\x9a\xd9\xe6\xfd\xfb\xb1\x25\x95\xab\x73\xbb\x3e\x2e\x2e\x43\x03\x0f\xd3\x7e\x59\x1c\xf5\x5d"}, +{{0x29,0xa6,0x3d,0xcd,0x48,0xa3,0x51,0x77,0x14,0x11,0xfd,0xdc,0xab,0x46,0xbb,0x07,0x1e,0x91,0x49,0x85,0x76,0xe8,0xd0,0x2f,0x8b,0x60,0x44,0xf5,0xbd,0xd3,0xed,0x90,},{0x39,0x23,0xfd,0xcc,0x2a,0x9f,0xe5,0xca,0xbf,0x6e,0x99,0x32,0xe4,0x6d,0xbd,0x2b,0x7f,0x36,0x32,0x50,0x0f,0x9d,0x95,0x55,0x2d,0xb2,0xb0,0x45,0xbc,0x41,0x16,0x6f,},{0x12,0xbf,0x62,0x95,0x93,0xe2,0xca,0xad,0xc9,0x10,0xec,0x40,0xbf,0xe2,0xb7,0xa6,0x25,0x14,0x12,0x6b,0x16,0xba,0x3a,0x43,0x8d,0x88,0xe2,0xd2,0x1f,0x59,0x5a,0xae,0xe8,0xab,0xfa,0x4a,0xf2,0xec,0x87,0x03,0x61,0xd0,0xea,0x04,0xdf,0xc8,0xc6,0xa3,0x30,0xfb,0x28,0x41,0xc2,0xd8,0x21,0x1a,0x64,0xfa,0x1e,0x7e,0x7d,0x27,0x38,0x00,},"\xff\x18\xca\x0c\x20\x4c\x83\x86\xa4\xaa\x74\xec\x45\x73\xc7\xb6\x92\x16\xb3\x14\x70\xda\xed\xd9\x6a\x4f\x23\x02\x11\x6c\x79\x55\xd7\x2d\xac\xc8\x8e\x37\x14\x55\x0c\x09\xe6\xf7\xb9\xa8\x58\x62\x60\xdc\x7e\x63\xda\x4c\x63\x3b\xae\x01\x62\xe1\x16\xe5\xc1\x79\x7b\x78\xd8\x7d\x47\xff\xee\xa3\xd7\x81\x9d\xf9\xc8\x52\xf0\xff\x30\x93\x6a\x10\x5d\x3a\xf5\x53\x1a\x8f\x89\x54\x97\x11\xc1\x4c\x2d\x3e\xe1\x15\x64\xe7\xc8\x52\x5b\xd5\x88\x64\x00\x97\x62\xa0\x55\x41\xd8\xe0\x7a\xd8\x41\xa5\x5a\x6a\x9a\x00\x7e\xf2\x09\xcc\xec\x4b\x56\x40\xba\xbe\x35\x65\x1b\x61\xdf\x42\xde\x4d\x91\x0e\xe7\x3a\x93\x3c\x0b\x74\xe9\x95\x75\x7e\x84\xa9\x9e\xb0\x34\xf4\x18\x07\x18\x3c\x90\xca\x4e\xa8\xd8\x4c\xdb\xa4\x78\x61\x3c\x8e\x58\x7c\xb5\xf8\xfb\x6a\x05\x50\x81\xda\x6e\x90\x22\x0d\x5d\x86\xe3\x4e\x5f\x91\xe4\x88\xbd\x12\xc7\xa1\xa6\xb3\xc9\xfc\xe5\x30\x5e\x85\x34\x66\x58\xef\xfa\x81\x0d\x0e\x8a\x2a\x03\x9d\xb4\xa4\xc9\x49\x65\xbe\x40\x11\xf9\xd5\xe5\xda\x26\x62\x33\xe6\xc4\xe1\x8e\xd4\xf8\xa2\x5a\x57\xe4\x0a\x59\x1c\x7e\xd5\x90\xc0\xf8\xb1\xa1\x19\xc7\xc9\x74\x7f\x69\x1b\x02\x19\x6c\xd1\x8e\x69\x45\x21\x3f\x1d\x4c\x8c\x95\x79\xc6\xe0\xa2\xac\x45\x92\x41\x28\xd6\xd9\x2c\x8e\x4c\x66\x06\x53\x20\x35\x3d\x48\xd1\xd5\xe1\x31\x94\xd9\x05\xf8\x37\x07\x8f\x8d\xac\x0b\x68\xcf\x96\xae\x9e\x70\x55\x4c\x14\xb2\xfa\x29\xb1\x96\x30\xe4\xb0\xf5\xd2\xa7\x67\xe1\x90\xef\xbc\x59\x92\xc7\x09\xdc\xc9\x9a\xa0\xb5\xaa\xf4\xc4\x9d\x55\x13\xe1\x74\xfd\x60\x42\x36\xb0\x5b\x48\xfc\xfb\x55\xc9\xaf\x10\x59\x69\x27\xbc\xfa\xd3\x0b\xac\xc9\x9b\x2e\x02\x61\xf9\x7c\xf2\x97\xc1\x77\xf1\x92\x9d\xa1\xf6\x8d\xb9\xf9\x9a\xc6\x2f\xf2\xde\x3b\xb4\x0b\x18\x6a\xa7\xe8\xc5\xd6\x12\x39\x80\xd7\x59\x92\x7a\x3a\x07\xaa\x20\x8b\xee\xb7\x36\x79\x5a\xe5\xb8\x49\xd5\xda\xe5\xe3\x57\x37\x10\xaa\xa2\x4e\x96\xd5\x79\x1e\x27\x30\xd0\x27\x0f\x5b\x0a\x27\x05\xba\x51\x5d\x14\xaa\x7e\x6f\xa6\x62\x23\x75\x37\x7f\x9a\xba\x64\xd0\x25\x69\xa2\x09\xd3\x3d\xe6\x86\xe0\x89\xec\x60\x11\x8e\x48\x14\xff\xc6\xc0\x77\x8c\x64\x27\xbc\xe2\xb6\xb8\x44\xcf\xcd\x5a\x7c\xed\x0e\x35\x30\x3f\x50\xa0\xdf\xe5\xdf\x5d\xde\x1a\x2f\x23"}, +{{0xc7,0x18,0x8f,0xdd,0x80,0xf4,0xcd,0x31,0x83,0x9e,0xc9,0x58,0x67,0x1e,0x6d,0xd0,0x8b,0x21,0xf9,0xd7,0x52,0x8c,0x91,0x59,0x14,0x37,0x34,0xf9,0x4b,0x16,0x98,0x83,},{0x01,0x97,0x52,0xff,0x82,0x9b,0x68,0x59,0xb9,0x05,0x8d,0x00,0xc2,0x79,0x5e,0x83,0x56,0x55,0x44,0x06,0x75,0x75,0x3f,0x37,0xe8,0x5e,0xb7,0xbc,0x58,0x39,0xc4,0xca,},{0x35,0xc1,0x70,0xdd,0x0c,0x6d,0xc2,0x92,0x0a,0x59,0x57,0x75,0xd8,0xe2,0xdd,0x65,0x24,0x3e,0x9c,0x1b,0xf9,0x6e,0xf4,0x27,0x79,0x00,0x1e,0xd4,0x5f,0x01,0xb7,0xdf,0xeb,0xd6,0xf6,0xa7,0xdc,0x2d,0x38,0x6e,0xf4,0xd2,0xa5,0x67,0x79,0xeb,0xe7,0x7f,0x54,0xe5,0xae,0xcf,0xda,0x2d,0x54,0xa0,0x68,0x47,0x6b,0x24,0xdb,0xd7,0x8b,0x0c,},"\x4a\xf5\xdf\xe3\xfe\xaa\xbe\x7f\x8f\xcd\x38\x30\x8e\x0b\xd3\x85\xca\xd3\x81\x1c\xbd\xc7\x9c\x94\x4e\xbf\xe3\xcd\x67\x5c\xf3\xaf\xbe\xf4\x54\x2f\x54\x29\x75\xc2\xe2\xa6\xe6\x6e\x26\xb3\x2a\xc3\xd7\xe1\x9e\xf7\x4c\x39\xfa\x2a\x61\xc5\x68\x41\xc2\xd8\x21\x2e\x2b\xd7\xfb\x49\xcf\xb2\x5c\xc3\x60\x9a\x69\x3a\x6f\x2b\x9d\x4e\x22\xe2\x09\x9f\x80\xb7\x77\xd3\xd0\x5f\x33\xba\x7d\xb3\xc5\xab\x55\x76\x6c\xeb\x1a\x13\x22\xaf\x72\x6c\x56\x55\x16\xce\x56\x63\x29\xb9\x8f\xc5\xdc\x4c\xbd\x93\xce\xfb\x62\x76\x88\xc9\x77\xaf\x93\x67\xb5\xc6\x96\x59\xe4\x3c\xb7\xee\x75\x47\x11\xd6\x65\xc0\x03\x2a\xe2\x29\x34\xf4\x4c\x71\xd3\x11\x78\xef\x3d\x98\x10\x91\x28\x74\xb6\x2f\xa5\xe4\x02\x0e\x6d\x5d\x64\x58\x18\x37\x32\xc1\x9e\x2e\x89\x68\x5e\x04\x64\xe9\x1a\x9b\x1c\x8d\x52\x51\xe2\x4e\x5f\x91\x81\x3f\x50\x19\xa7\x40\xa0\x4b\x5d\x91\xcb\xb8\x30\x9e\x51\x61\xbb\xa7\x9d\xca\xb3\x82\x39\xa0\x91\xf5\x0e\x09\x9f\xf8\x19\xe3\xa7\xb5\x20\x5f\xe9\x07\xcd\xfe\x9c\x0d\xc3\xee\x85\xe3\x2d\x7b\xcd\x3c\xe0\x26\x35\xe2\x05\x83\x88\x03\x1e\x31\x7f\xbf\x22\xab\x9f\x39\xf7\xf7\xe3\xcd\x1a\x11\xa9\xc1\xf4\x5f\x4e\x1e\x42\xd2\x53\x6c\x12\x2c\x59\x18\x37\x91\x18\x47\x10\x8c\xea\xfd\x99\x08\x13\xc2\xb6\x34\x4c\xff\xc3\x4b\xe3\x71\x61\xdd\x81\x56\x26\x90\x0e\x8f\xcb\x85\xc2\x1a\xfb\x4f\x6b\xe8\xad\x01\x51\x6a\x31\xc2\xa6\x58\x03\x15\x85\x7c\x6a\x21\x67\x35\xca\x99\x10\x09\xdb\xc2\xea\x50\x34\x16\x07\x47\xa8\x69\xd5\xca\xdb\x0b\x47\xff\xbd\x5d\x3a\xc9\x7f\xdd\x05\x26\xca\xe6\xea\xa3\x5c\xff\x7a\x16\xea\xf4\xfb\x95\x0c\xa3\x15\x11\x34\x6f\xea\x61\x41\x99\x9a\x3f\x75\x4e\x62\x81\xcf\xba\x15\xe8\xa8\x26\x93\x2c\x58\x9c\x5d\x24\x7c\x90\x9d\x94\xb4\xea\xb7\xeb\xcb\x09\x07\x76\x48\xaf\x06\x5c\x2d\x86\x61\x1e\xb5\x88\x45\x3e\xd7\xc2\x47\x80\xd7\x3c\x68\x9c\x87\x44\xaf\xd5\x33\xa8\x6d\x9e\xe9\xe3\x36\x57\x32\xcb\xd0\xc3\x51\xe4\x36\xf8\x98\xb7\x04\x32\x92\x09\x7e\x03\xe6\x08\x1a\x23\xac\x86\x5e\x19\xdc\x88\x58\x96\x9b\x99\x9d\x01\xfa\x65\xef\x20\x0c\x3f\x26\x9c\x81\x8e\x30\xb9\x36\x5e\xcc\x68\x3b\xcf\xe6\x9c\x20\x3b\x4e\x0a\xb6\xfe\x0b\xb8\x71\xe8\xec\xaa\xae\x82\xd3\xac\xd3\x5d\x5b\x50"}, +{{0x38,0xba,0x06,0x21,0x70,0x4d,0x21,0x55,0xfc,0x2f,0x78,0x55,0x51,0x96,0x57,0x5d,0xe0,0x6d,0x80,0x25,0x5c,0x35,0xe9,0xdc,0x96,0x5b,0x6f,0xe9,0x6a,0x4d,0x53,0x89,},{0x43,0x88,0xf7,0xf6,0x8a,0x9e,0xff,0xbc,0x36,0x6e,0x42,0xd9,0x07,0x01,0x56,0x04,0xda,0xce,0xd1,0x72,0x7c,0xd1,0xd8,0x9d,0x74,0xad,0xcc,0x78,0x9f,0xd7,0xe6,0xe1,},{0x42,0xbe,0xd6,0xa9,0x87,0x86,0xf6,0x64,0x71,0x5f,0x39,0xbb,0x64,0x3c,0x40,0x5a,0xe1,0x75,0x00,0x56,0x46,0x0e,0x70,0x04,0x69,0xc8,0x10,0x38,0x95,0x04,0xc5,0x1c,0xff,0xd9,0xe1,0xa9,0x4c,0x38,0xf6,0x92,0xfb,0x31,0x62,0x65,0x31,0x6d,0x8f,0x4d,0xc3,0xad,0x1c,0xdd,0x8a,0x6d,0x59,0x91,0xef,0x01,0x0c,0xd1,0x48,0x9d,0x7c,0x09,},"\xed\x4c\x26\x83\xd6\x44\xb0\x5b\x39\xb0\x48\xef\x1f\x8b\x70\x25\xf2\x80\xca\x7e\x8f\xf7\x2c\xb7\xed\xa9\x93\x29\xfb\x79\x54\xb7\x00\x40\x07\x05\x27\x5f\x20\xb8\x58\xcf\x7e\x34\x9a\x35\x10\x66\x5b\x63\x06\x09\xc5\xe2\xe6\x20\x69\x26\x3a\xb9\xc5\x5e\x41\x23\xa5\x64\xdc\xa6\x34\x8c\x8a\x01\x33\x20\x75\xe7\xa5\xbe\xc9\xc2\x0a\x03\x80\x79\x57\xfe\xfa\x91\x0e\x60\xc3\x5a\xe5\x79\x77\x8c\xe2\xce\x42\xe6\xa6\x9a\x1b\x64\x76\x81\xe4\x3e\xc4\xb6\x3b\xd5\xfb\xef\xab\xb3\x17\x12\xcb\x3d\x64\x19\xea\xd7\x8d\xd4\x1c\x8a\x92\xaa\xce\xb6\x3c\xbf\xa8\x9d\x2a\xf3\x96\x06\xde\x01\x0a\x39\x7e\x30\x20\x53\xa6\x15\xc1\x6e\x5e\x95\xad\x99\x35\xc0\x79\xa0\xb8\x10\x31\x25\x78\x94\x71\xa1\xe3\x57\x4f\x42\x9b\x29\xe4\xd2\x25\xc7\x72\x3f\xbb\x3c\xf8\x8c\xbd\x73\x82\x3d\x9f\x0b\x6c\x7d\x05\xd0\x0b\xde\xb0\xfb\x0a\xd3\xd7\x13\x20\x33\x18\x3e\x21\xf6\xc1\xe8\xd8\xe4\xc0\xa3\xe4\xf5\x2f\x50\x01\xda\x68\x71\x71\x34\x5c\x6d\xc8\xb4\x2c\x42\xa6\x0d\x1f\x1f\xfa\x8f\xe3\xe7\xbc\xec\xe5\x9a\x03\x58\x78\xf9\xd4\xd8\x11\x27\xe2\x24\x96\xa4\x9b\xfc\xf6\xbf\x8b\x46\xa8\x0b\xd5\x62\xe6\x52\x55\x07\x1f\x9d\x11\xa9\xeb\x04\x81\xf4\x62\x6d\x4d\x71\xff\xc3\x8a\xfe\x6e\x35\x8a\x4b\x28\x91\x79\xcb\xce\x97\x64\xd8\x6b\x57\xac\x0a\x0c\x82\x7e\x8f\xf0\x78\x81\x33\x06\xa1\xd5\xfa\xdd\x32\xb4\x6a\x1f\xbc\xd7\x89\xff\x87\x54\x06\x3e\xec\xfe\x45\x31\x3b\xeb\x66\x01\xc3\xa3\x01\x0e\x8e\xb9\x7c\x8e\xff\xbd\x14\x0f\x1e\x68\x83\x11\x09\x2d\x27\x3c\x4d\xef\xca\x47\xda\x6f\x1f\x08\x25\x74\x46\x76\xf9\xa2\x80\xb6\xc2\xa8\x14\xfa\x47\xfa\xbc\x19\x80\xd0\xb3\x7f\x08\x7a\x53\xca\x87\x78\xf3\x9f\xfb\x47\x4f\xf5\xf1\x17\x1b\x44\x2c\x76\xdd\x00\x8d\x92\x18\x2f\x64\x4a\x71\x4a\x0f\x01\x1e\x21\x5a\x78\xb9\x7a\xf3\x7b\x33\x52\x0e\xbf\x43\x37\x2a\x5a\xb0\xcf\x70\xdc\xc1\xdc\x2f\x99\xd9\xe4\x43\x66\x58\xf8\xe0\x7c\xdf\x0b\x9e\xa4\xdd\x62\x24\xc2\x09\xe7\x52\x1b\x98\x1e\xe3\x51\xc3\xc2\xdf\x3a\x50\x04\x05\x27\xfc\xd7\x28\x04\x17\x60\x46\x40\x5d\xb7\xf6\x73\x4e\x85\xc5\xd3\x90\xf5\x20\xb0\xc0\x8d\xcb\xfa\x98\xb8\x74\x24\x80\xd5\xe4\x6f\x9b\xe8\x93\xf6\xd6\x61\x43\x40\xf8\x16\x16\x11\xd5\x05\x3d\xf4\x1c\xe4"}, +{{0xae,0x33,0x1f,0xc2,0xa1,0x47,0x59,0xb7,0x3f,0x1c,0xd9,0x65,0xe4,0x85,0x14,0xe1,0x2b,0x29,0xf6,0x3b,0x06,0xcc,0xfc,0x0a,0xd4,0x9f,0x36,0x82,0x0e,0x57,0xec,0x72,},{0x08,0x80,0x3d,0x48,0x23,0x8e,0xda,0x3f,0x9c,0xeb,0xb6,0x28,0x53,0x01,0x21,0xde,0x00,0xf0,0xf0,0x46,0x8c,0x20,0x2d,0x88,0x52,0x8b,0x8b,0xce,0xc6,0x87,0xa9,0x03,},{0x75,0xf7,0x39,0x08,0x88,0x77,0xe0,0x6d,0xc5,0x6d,0xae,0xc8,0xf1,0xe4,0xd2,0x11,0xb7,0x54,0xe3,0xc3,0xed,0xbf,0xa7,0xed,0xa4,0x44,0xf1,0x8c,0x49,0xb6,0x9c,0x5a,0x14,0x2d,0xb4,0x5a,0x0a,0x76,0x50,0xe4,0x7d,0x10,0x55,0x0b,0xa6,0x81,0xff,0x45,0xdd,0x44,0x63,0xc4,0xac,0x48,0xbf,0x44,0xb7,0x30,0x34,0xbd,0x56,0x59,0x22,0x0e,},"\x57\x16\x00\x33\x90\xe4\xf5\x21\x65\x98\xa0\x3d\x7c\x43\x0d\xbf\x49\x5e\xe3\xa7\x55\x7b\x58\x06\x32\xba\x59\xf1\x51\x98\xb6\x18\x0a\x42\x46\x9c\x23\x7d\xb5\xbc\x81\xf2\x9c\xfa\xab\x0a\xff\x3c\x99\x66\x30\x9a\xb0\x69\x58\xc9\xd7\x12\x6a\xdd\x78\xe3\xb3\x24\x59\xff\x8a\x0e\x0b\xde\xf8\x74\xb5\x8e\x60\x83\x66\x8f\x38\xad\x7d\x63\xaa\xe1\xf1\x2e\x26\xa6\x13\x34\x8f\x9f\x03\xea\x5d\x20\x5f\x04\x5d\x78\xcc\x89\x02\xd4\x7f\x81\xe8\xb5\x22\x93\xe7\x0e\x86\xc9\x80\x3d\x4d\xac\xea\x86\xc3\xb6\x74\x58\xae\x35\x79\xbc\x11\x11\x3b\x54\x90\xbc\xf3\xe1\xcd\x4e\x79\x79\xc2\x64\xd8\x35\x16\x1f\xd5\x5e\xfe\x95\x3b\x4c\x26\x39\x5d\xd9\x2c\xa4\x93\x09\x20\xe9\x04\xfa\xdc\x08\x89\xbb\x78\x22\xb1\xdf\xc4\x45\x26\x04\x84\x0d\xf0\x24\xdb\x08\x21\xd2\xd5\xe9\x67\x85\xa5\xc3\x7d\xbf\xd2\xc3\x75\x98\x32\x83\xe9\xb5\xb4\x3a\x32\x07\xa6\xa9\xb8\x33\x94\x83\x29\xd5\xde\x41\xe4\x50\x08\xbc\xba\xd4\x93\xde\x57\x54\xdd\x83\xde\xcc\x44\x0e\x51\x66\xed\xaa\xe0\x20\x8f\x00\x0c\x5f\x6d\x9c\x37\x21\x53\x20\x9e\x5b\x75\x78\x11\x6f\x89\xcf\x2f\x8b\x10\x04\xd1\x30\x7e\xa7\x9e\xd3\x74\x80\xf3\x19\x4a\x7e\x17\x98\x3a\x23\x04\x65\xcc\xc3\x0f\xcc\x1a\x62\xd2\x80\xfb\xba\xcc\xf0\x06\xdc\x4d\xee\x0e\xa7\x96\xb8\x1a\xcc\xc6\x1a\x06\x3e\x2c\x08\x3d\xae\xc0\x39\xbd\x9a\x64\xa7\x70\x24\xaf\x82\xec\x1b\x08\x98\xa3\x15\x43\x29\xfd\xf6\x16\x73\xc3\x6e\x4c\xc8\x1f\x7a\x41\x26\xe5\x62\x90\xe4\xb4\x56\x81\x9b\xde\xbf\x48\xcb\x5a\x40\x95\x5b\xab\x29\x7c\x2b\xbc\xb0\x18\xad\xbf\x24\x82\x86\x60\xa5\xd1\x2a\x06\x13\xbf\x3c\xcb\x5e\xeb\x9a\x17\xfb\x0a\x05\x47\xdb\x8d\xa2\x4d\x2e\xfb\x87\xba\x1b\x84\x31\x42\xa7\x5e\x4c\xa0\xb0\xa3\x33\xe4\xa1\x4f\xab\x35\xa6\x26\x69\x32\x9c\xa8\x75\x3f\x01\x6a\xc7\x0c\xd9\x97\xe8\xbc\x19\xee\x44\x8a\xea\xf0\xf4\xbf\x3c\xe5\x23\x05\x50\x57\x8a\xb6\x4c\x19\x01\x94\x46\xce\x2d\x9c\x01\xa0\x3d\x88\x9a\x99\x09\x86\x0a\xef\x76\xf0\x67\xc5\x0b\x61\xc3\xd0\xf1\x2c\xc8\x68\x6f\x5c\x31\xbf\x03\x2a\x84\x10\x15\xcf\xef\xf1\xcf\xda\xe9\x4f\x6b\x21\xda\xe9\x41\xb3\x35\xdc\x82\x1f\x32\x84\xce\x31\x50\x8f\x5d\xb5\xc4\x48\xff\xaa\x37\x73\xe9\xbe\x1a\x4c\x85\xa1\xc5\x8b\x00\x9f\xa3"}, +{{0x82,0x43,0x5f,0x39,0x79,0x01,0x06,0xb3,0xaf,0x72,0xf9,0x1f,0x14,0xc9,0x28,0xd2,0x46,0x5f,0x98,0xcd,0xd1,0x00,0x84,0xc4,0xa4,0x4d,0x19,0xaf,0x71,0xa1,0x92,0x7c,},{0xc5,0x2a,0x92,0x64,0x6f,0x5a,0xdb,0x21,0xc6,0xdd,0xe0,0xde,0x58,0x78,0x68,0x37,0xf8,0xa3,0x41,0x4c,0x09,0xae,0xdf,0xc2,0x7c,0x81,0x22,0x18,0xa7,0xe7,0x23,0x9e,},{0x1d,0xaa,0x44,0xef,0x06,0xd4,0xc1,0x0d,0xdb,0x48,0x67,0x84,0x23,0xc5,0xf1,0x03,0xa1,0xb5,0x68,0xd4,0x2b,0x20,0xcc,0x64,0xaf,0x11,0x0f,0xce,0x9d,0x76,0x79,0xa2,0xde,0xe4,0x12,0xb4,0x98,0x05,0x85,0xc2,0x6c,0x32,0x0d,0xba,0xa6,0x01,0xc4,0x72,0xde,0xfc,0x3c,0x85,0x41,0x5d,0xae,0xcd,0xd6,0xd2,0xd9,0xea,0xca,0xc8,0x5e,0x07,},"\xf3\xd6\xc4\x6a\xc5\x24\x8d\x53\x86\xb6\xb6\x84\x62\x59\x7d\x64\x70\x39\xf5\x44\xbb\x01\xac\x2d\x10\x67\xda\xaa\xa3\x97\xd2\xdb\xaf\x12\x5a\x1c\xf8\xfd\xf2\x80\xa6\xaf\xec\x32\x4d\x53\x11\xf5\x43\x68\x8a\x15\x6c\x84\x98\x19\xbb\x04\x6b\x91\x1c\x42\xea\x3c\xa0\x1b\x99\x80\x8c\x4d\x1f\x3b\x8b\x15\xda\x3e\xfe\x2f\x32\x52\x3e\xc3\xb0\x9c\x84\xb4\x8c\xff\xd1\x3c\x17\xc9\xe2\x6c\x91\x2d\x9c\x3e\x93\x46\xdf\xae\x3f\xd0\xc5\x6c\x88\x58\x78\x07\x82\xf6\x1a\x4c\x4d\xbf\xff\x1e\x9c\xb4\xb3\x62\xcd\x80\x01\xf9\xcd\xfe\xb1\xa7\x20\x82\xdc\xe9\xc9\xad\xe5\x2e\xff\xc9\x74\x46\x88\xac\x0b\x86\xc8\x82\x66\xb5\x3d\x89\x5c\x17\xea\xd9\xe8\x9e\xd8\xd2\x4d\x40\x64\x2f\x3a\xd3\xb9\xbf\x9b\xbc\x4d\xda\x79\x66\xef\x83\x28\x28\x9f\xb3\x1e\x17\xc8\x1f\xd0\x28\xef\x1b\xd9\xa1\xd4\xc7\x92\xe8\x6e\xc2\xdb\xdc\xe3\xf9\x37\xee\xcc\x3e\xeb\x51\x88\xd3\x25\x94\x19\x19\xbb\xf7\x5b\x43\x88\xe2\x39\x95\x07\xa3\xd7\xfb\x38\x75\x02\xa9\x5f\x42\x1c\x85\x82\x6c\x1c\x91\x76\xc9\x23\xe3\x16\x31\x0a\x4b\xa4\x5c\x8a\x5e\xf7\x55\x7c\xf8\x7b\x77\x02\x0b\x24\xf5\xba\x2b\xfd\x12\x28\x10\x95\x66\x30\x7f\xea\x65\xec\x01\x50\x19\x69\x12\x17\xbc\xe6\x9a\xee\x16\xf7\x62\x49\xc5\x8b\xb3\xe5\x21\x71\xcf\xef\xd5\x25\x4e\x5e\x0f\x39\x71\x69\x18\x6d\xc7\xcd\x9c\x1a\x85\xc8\x10\x34\xe0\x37\x18\x3d\x6e\xa2\x2a\xee\x8b\xb7\x47\x20\xd3\x4a\xc7\xa5\xaf\x1e\x92\xfb\x81\x85\xac\xe0\x1d\x9b\xf0\xf0\xf9\x00\x61\x01\xfc\xfa\xc8\xbb\xad\x17\x1b\x43\x70\x36\xef\x16\xcd\xae\x18\x81\xfc\x32\x55\xca\x35\x9b\xba\x1e\x94\xf7\x9f\x64\x55\x55\x95\x0c\x47\x83\xba\xb0\xa9\x44\xf7\xde\x8d\xf6\x92\x58\xb6\xaf\xe2\xb5\x93\x22\x17\x19\x5d\xa2\x45\xfe\xe1\x2a\xc3\x43\x82\x4a\x0b\x64\x03\xdf\xe4\x62\xd4\x3d\x28\x8d\xb3\x1f\x99\x09\x7e\xc3\xed\xc6\xe7\x65\x47\xa3\x74\x2f\x03\xc7\x77\xef\xb1\x58\xf5\x8d\x40\x53\xfa\x6c\xc8\xd6\x8b\x19\x6a\xf4\xf9\xde\x51\x6f\xd9\xfb\x7a\x6d\x5d\x9e\xe4\xa8\x9f\x9b\x9b\xce\x1e\x4d\xee\x35\x7a\x1e\x52\xc0\x54\x4c\xfb\x35\xb7\x09\x2d\x1a\xa5\xa6\xf7\xf4\xc7\x60\x26\x10\xe9\xc0\x0e\xf5\xb8\x76\x1b\xc7\x22\x79\xba\x22\x8a\x18\xb8\x40\x0b\xd7\x6d\x5b\x2b\xfd\x7c\x3c\x04\xaa\xc4\x43\x6d\xae\x2e\x98"}, +{{0x1b,0xea,0x77,0x26,0xd9,0x12,0xc5,0x5e,0xc7,0x8b,0x0c,0x16,0x1a,0x1a,0xd3,0xc9,0xdd,0x7b,0xc3,0x29,0xf8,0x5d,0x26,0xf6,0x2b,0x92,0xe3,0x1d,0x16,0xd8,0x3b,0x48,},{0xc9,0xdd,0xb4,0x21,0x06,0xcc,0xef,0x4e,0x0e,0xf4,0x79,0x45,0x51,0xd2,0x1d,0xf9,0x4a,0x63,0x06,0x87,0x2f,0x23,0x16,0x63,0xe4,0x7e,0x24,0x1f,0x77,0xcc,0x3e,0x82,},{0xf9,0xb0,0x45,0x17,0xbd,0x4f,0xd8,0xef,0x90,0xf2,0x14,0x0f,0xc9,0x5d,0xc1,0x66,0x20,0xd1,0x60,0x2a,0xb3,0x6c,0x9b,0x16,0x5f,0xff,0x3a,0xba,0x97,0x8d,0x59,0x76,0x71,0x10,0xbb,0x4e,0x07,0xa4,0x8f,0x45,0x12,0x14,0x47,0xac,0x0c,0x1a,0xba,0xc5,0x85,0xd3,0x91,0xd4,0x04,0x20,0x41,0x89,0x86,0x28,0xa2,0xd2,0xdc,0xc2,0x51,0x0d,},"\xb1\x12\x83\xb1\xf0\xce\x54\x9e\x58\x04\x73\x0a\xc3\x20\x7a\xc0\x03\x32\xd2\xaa\xcf\x9c\x31\x0d\x38\x32\xd8\x79\xf9\x63\x4b\xd8\xa5\x8a\xdf\x19\x9e\x4b\x86\x3b\xb1\x74\x81\xd2\x8a\xcb\x2d\xa0\xe1\x55\x7b\x83\x36\xa4\x00\xf6\x29\x56\x25\x03\x1d\x09\xe4\xdf\x4d\x31\x9b\xbc\x1e\x8f\x6e\x92\x32\xd2\x30\x53\xbb\x3f\xfa\xc4\xfe\x2c\x70\xce\x30\x77\xfc\x00\x60\xa5\xcb\x46\x92\xa1\xcf\x0b\x3e\x62\xfe\x45\x48\x02\xae\x10\xb8\x3d\xed\x61\xb6\xbf\x45\x4c\xa7\x5e\x4c\xda\xd5\x53\x2f\x20\xb7\x06\x54\xf1\x2b\xa9\x06\xf0\x03\xa8\xb9\xe9\x86\xf1\x5a\x39\x41\x9d\xeb\x2e\xa1\xea\xd7\x59\x82\x90\xee\xeb\xf9\x25\x2b\x0c\x27\x60\x5a\x7a\x73\xa6\xab\xeb\xb4\x22\x71\xd7\x1a\x3c\x19\x7a\x46\xbc\xc8\xdb\x11\xd9\x24\x28\x42\xf3\x78\x36\x4a\x37\xee\xca\xa3\x4e\x98\x21\x35\xbe\x34\x18\x2c\x69\xca\x8e\x6e\x3c\x8c\x90\xe1\xb4\xb2\xb4\x75\x81\x5a\x17\x83\x77\xae\x01\x65\xa7\x64\xc8\xba\x28\x89\xb5\xab\x29\x09\x49\xd8\x48\x7a\x88\xe0\xd3\xd2\xbc\x7e\x25\x20\x17\x6a\xa6\xff\x9f\xf0\xc4\x09\xff\x80\x51\x5f\x4f\x0b\x83\xc5\xe8\x2c\x23\xfd\x33\x26\xcd\xd6\xb7\x62\x52\xe7\xfd\xdc\xd6\xe4\x77\x09\x78\xcd\x50\x3e\xd2\xd6\xb4\x80\x10\x11\x67\xd3\xf1\x91\xfe\xd8\xd6\xd7\x4d\x74\xa2\x00\x7d\xb1\x09\x2e\x46\xa2\x3d\xde\xcd\xdc\xdb\x98\x46\x64\x04\x7b\x8d\xd7\xcc\x8a\x57\x6e\x1a\x80\x6f\x52\xcb\x02\x7a\x94\x80\xa9\x5c\xc4\x4b\x1e\x6f\x2e\x28\x6e\x9b\x7a\x6b\xf7\xb3\x96\xfa\x54\x96\xb7\xa5\xb1\xc0\x3d\x9c\x5c\x27\xda\x1a\x42\x99\x0d\x10\xb1\x2f\xb8\x64\x0e\x15\x96\xf2\x6b\x36\x6d\x27\x0b\xa6\x4f\x99\xaf\xff\xe3\xfe\xce\x05\xa9\xb0\x25\x4b\x20\x8c\x79\x97\xcd\xb5\x12\xfc\x77\x52\x79\x54\xa1\xcb\x50\xfd\xab\x1c\xc9\xa4\x51\x62\x74\x1f\xd6\xf9\xd3\xfd\x5f\x2e\x38\x28\x53\xd7\x33\x5d\xba\x1e\x6b\x29\x59\xdd\x86\xe1\x25\xe6\x7b\x53\xdc\x8e\x45\x3c\x81\x0b\xc0\x1b\xf2\x0b\xce\x7b\x61\x8d\xd5\xd1\xed\x78\x41\x06\xee\x06\xa3\xec\xaf\x6b\x3b\xee\x0b\x56\x83\x3b\x0b\x81\x31\x39\xc5\xa6\x96\x00\x0a\x44\x9c\x97\x90\x6a\x2f\xbd\xdc\x2d\x9d\xe9\x40\x6e\xa2\x82\xac\x4e\xe5\xef\x8b\xf3\x85\x4c\x74\xa6\xb7\x17\x3d\xd2\xf7\x9c\x7a\x12\x6f\x3c\x7b\x04\x33\xfd\x4e\xa2\x6e\x87\x7a\x14\x83\x1d\xd4\x15\xa1\x9d"}, +{{0xd0,0x1a,0x0e,0xad,0x9d,0x69,0x48,0x33,0x28,0x3b,0x9c,0xd7,0x29,0x9a,0x7b,0xd7,0x5f,0xa9,0x0b,0x1d,0x2d,0x78,0x84,0xe4,0x55,0x7b,0x33,0xc9,0x98,0x77,0x2a,0x68,},{0xa0,0xf7,0x57,0x47,0x9b,0xa6,0x27,0xef,0xef,0x95,0xd6,0xec,0x7a,0x93,0x1d,0xfa,0xc4,0x37,0x3d,0xf3,0x3d,0xaa,0xf4,0xdd,0xc4,0xec,0x68,0x94,0xc8,0x26,0x1e,0xd7,},{0x9a,0x0f,0xf7,0xf3,0x51,0x74,0xec,0x3f,0x66,0xd2,0x2a,0x6f,0x06,0xdf,0x60,0xe0,0x9c,0x8f,0x62,0x3a,0x5a,0xca,0x81,0x0e,0x23,0xa8,0x8d,0x0e,0x6a,0x31,0xcb,0x6f,0x1c,0xe1,0xc1,0xf9,0xdc,0xcc,0x9e,0x14,0x84,0xb6,0x8d,0xd0,0x04,0xac,0x53,0x59,0x7e,0x29,0xad,0x6a,0xb7,0x2e,0x8c,0xe2,0xb7,0x5a,0xd5,0xb8,0x0e,0xb8,0x48,0x03,},"\x76\x27\x53\x4e\x9a\x83\xd1\xe4\x06\xab\x94\x8d\x30\xd1\xda\x9c\x6a\x5d\xb0\x8e\x0f\xeb\x7f\xc5\xba\x5c\xbf\x76\x84\x9e\xe8\xad\xd4\x84\x7e\xf5\xca\x5a\x0d\xae\x41\x1a\xca\x09\x74\x51\xcb\x4c\x2b\x49\x8c\x94\x70\x97\x40\x70\x07\x64\x0d\xc1\x9e\xd9\x38\xe3\xb9\x1b\xf5\x1c\x95\x81\x16\x8d\xf8\x60\xbd\x94\x75\x16\x68\xda\xbd\x72\x1d\xc7\x39\x98\x40\x0b\xe2\x0c\x9a\x56\x3d\x50\x51\xef\x70\xe3\x54\x6f\xee\x67\x33\x12\xb5\x2a\x27\x40\x41\x05\x7e\x70\x84\x8e\xb7\xc5\xa2\x16\x44\xc9\x7e\x44\x8a\xbd\x76\x40\x20\x7d\x7c\xda\xfc\xf4\x5d\xa6\xdf\x34\x94\xd3\x58\x5b\x0e\x18\xac\x5a\xc9\x08\x1c\xb7\xa4\x07\xa3\x9a\x87\x77\x05\xcb\xaf\x79\xa0\x1b\x91\x5f\x73\x6e\xb0\x25\xc5\x8b\x4b\x5d\x80\x7f\xb7\xb7\x56\x6c\x59\x69\x78\x7c\x1d\x6c\xa4\xeb\xa9\x7d\x50\x9e\xf7\xfb\x35\x50\xd2\x1d\x37\x7e\xce\xff\xcf\x0e\xb6\x68\x18\x95\xad\xbd\x24\x6e\xe7\xbf\x3c\x93\x5a\x00\x64\x78\xb8\x32\xec\xe4\x6d\xe6\x11\x8b\x17\xe4\x66\xa2\x7f\xc2\xa4\x4a\x89\x6b\xaa\xe2\x72\xf9\xec\xf0\x18\xc6\x5c\xb5\x0c\xfb\xfc\x8d\x26\x09\x94\xa1\x8a\x83\x2d\x97\x19\x28\xc4\x49\x67\x57\x24\x58\x51\x31\xc8\x71\x53\x3c\x98\x97\xd8\xf8\x0f\x9c\x04\x16\xb7\x18\x78\x6b\x10\xfe\xa8\xeb\x5b\xd8\x13\xa2\x69\xa1\xb6\x77\xb7\xa2\x50\x7a\x44\xb7\x13\xd7\x05\x08\x65\x30\x99\x5e\x59\x33\x5d\xdc\x28\x55\xe8\x47\xe4\xf4\xdb\x06\xc9\x1f\x1d\x54\x02\x3d\x8a\x10\xf6\x9f\x9e\x61\xbd\xce\x4b\x68\x6f\xb6\x17\xbd\x50\x30\xe7\x55\xca\xdb\x1f\x64\x4e\x1d\xdd\x91\x61\x9b\x96\xec\xd6\x05\xb0\x01\x98\xb9\xa6\xed\xdb\x5a\x84\xeb\xd3\x69\x2b\x66\x59\x79\x76\x66\x37\xc6\x77\x37\x8c\x1c\x77\x04\x1f\xd4\xa6\xb3\x55\x5c\x1d\xc8\xa8\x3f\xe9\x01\x3b\xb6\x10\x6c\xc1\x8a\x2b\x03\x7c\x93\x77\xb7\xa1\xa5\xa5\xd0\xdc\xc5\x49\x18\xea\xad\x7e\x32\xc8\x80\x76\x7b\x26\xfd\x2e\xa2\xd6\x8b\x04\x05\xf5\xe0\x74\xf5\x5a\x19\xd8\xa3\x9f\xfb\xb7\xdc\x32\xfa\xee\x6a\x7f\x95\x32\xae\xc8\xa0\x77\x6c\x3f\xf8\x3a\xe3\xa4\x62\x77\x38\x49\x6a\x37\x1e\xb9\xe0\x90\xb7\x4e\x0e\xdd\xec\xfc\xd4\x1b\xed\x0c\x0c\xe5\x81\x27\x52\x43\x47\x2d\x26\xda\x8c\x99\x8e\x4b\x6d\x6b\x44\xfc\x88\xba\x2a\xb5\x46\x42\x22\x54\x17\x12\x02\x94\x41\x78\x05\x74\x2b\xdb\x33\xb7\xb1\x22"}, +{{0xdf,0x64,0x89,0x40,0xb5,0x78,0xbc,0x31,0xd2,0xa6,0x52,0x96,0x5f,0x30,0x39,0x1c,0xaf,0x06,0xd5,0xf2,0x51,0x59,0x9a,0x73,0x7c,0xe1,0x0b,0xe5,0x5f,0x4a,0x9d,0x0d,},{0x27,0xde,0x92,0x04,0x19,0xc1,0x86,0xb0,0x1b,0xe5,0x42,0x79,0xfb,0x8f,0x9b,0xe4,0xbb,0x4b,0x2c,0xad,0x75,0xca,0x7e,0x8f,0x79,0x2b,0xfa,0x7b,0xb9,0x7c,0x7f,0x41,},{0x62,0xbc,0x99,0x1c,0x45,0xba,0x9b,0x26,0xbf,0x44,0x01,0x16,0x26,0x41,0x62,0xc3,0x4c,0x88,0x59,0x78,0x85,0xe9,0x60,0x50,0x83,0xc6,0x04,0xb5,0xf5,0xd8,0xfa,0x6f,0x66,0x2b,0xa2,0x14,0xf7,0x6e,0x6c,0xf8,0x4e,0x5e,0xc0,0x4d,0xf1,0xbe,0xef,0xc5,0xf2,0x5d,0x3a,0x3b,0x72,0xf9,0x8b,0x50,0x69,0x83,0x19,0x16,0xa6,0x32,0x96,0x01,},"\x1a\xe5\x20\xbe\xeb\x4a\xd0\x72\x2b\x43\x06\x7f\xa7\xcd\x28\x74\xab\xcf\x34\xdd\x92\x37\xb4\x47\x8e\xae\x97\x72\xae\xa2\x97\xa6\x7f\xb7\x9b\x33\x07\x02\x04\xba\xee\x44\x0b\x9c\x87\xe2\xfb\xcb\xeb\x76\x80\x1d\xdd\xea\x5e\x45\x30\xd8\x9e\x11\x58\x31\x79\x93\x9a\x00\xa3\x2f\x81\x13\x32\xc5\x22\x91\xcc\x7a\xc9\x1e\x5a\x97\x0c\xd5\xaa\x70\x8b\x1d\xa2\x6b\xe9\xfe\x43\x2a\x9b\xbd\xa1\x31\x9e\x31\xe4\xbc\xc9\xf1\x66\x6a\x05\xb5\xc0\x5b\x87\x6b\xfd\x1f\x76\x66\x87\xcc\xea\x4e\x44\x82\xe9\x24\x32\x9a\xfa\xce\x5e\xe5\x2e\x98\x79\xfd\x69\xb7\x6e\x0f\x7e\x45\x2e\xc4\x71\x3b\xff\x21\x6d\x00\xc8\x25\x99\xd2\x7c\xa4\x81\xf7\x3a\xae\x13\x6f\x08\x75\xc8\x8a\x66\xb1\xb6\xf3\x4c\x50\x52\x3a\xb6\x02\xe9\xd4\xeb\xb7\xee\xb9\xe0\x43\xa6\x5e\x41\x89\x9d\x79\x75\x2a\x27\x9d\x2e\xd4\x69\x93\x92\x6f\x36\x21\xe7\xc3\x2c\x9a\x9b\x3b\x59\xd8\xdd\x57\xbe\xca\x39\x28\x54\x34\xde\x99\x1c\xbd\x2d\xfc\xbc\x5c\xa6\x2a\x77\x79\xf4\x75\xd0\xce\xf2\xf3\xe5\x62\xf2\x9a\xcd\x47\x4f\x3c\x99\xec\x5b\xd8\xde\x01\x10\x1b\xed\x2e\x0c\x9b\x60\xe2\xd7\x0f\xd4\x32\xc8\x92\xfc\x66\xf8\xd4\x61\x9a\x91\x1b\x56\x25\x16\x3e\x9a\x42\xbf\x9e\xa3\x85\x86\xd8\xe7\x64\x00\x15\x64\xd3\x35\x41\x12\x25\xfc\xb0\xa0\x6d\xc2\xa8\x2d\xa0\x77\x9a\x3c\x44\x4e\xb7\x86\x42\x01\xb4\x3e\xbb\x72\xb9\x21\xf3\x4d\x3c\x13\x08\x9d\xf2\xf4\xfa\xc3\x66\xff\x1e\x3c\x0b\x96\xf9\x3d\x2b\x4d\x72\x6a\x5c\xe4\xd6\x91\x6d\x82\xc7\x8b\xe3\x54\xa1\x23\x0c\x2c\xf0\x41\x8c\x78\xa1\x91\x3e\x45\x4f\x64\x8c\xc9\x2c\x8d\xd0\xe1\x84\x64\x5f\xe3\x78\x1d\x26\x3c\xff\x69\xf5\xc6\x0b\x1e\xbb\x52\x00\x5a\x8b\x78\xa5\x15\xc7\xe8\x88\x6f\xfe\x05\x4d\xab\x42\x8e\x2e\x22\x1d\x9d\x76\xaf\xf4\x26\x54\x16\x8d\x83\x3b\x88\x17\x82\x93\xe1\xfe\xdd\x15\xd4\x6c\xd6\x09\x48\x31\x29\xc4\xd2\xd8\x44\x32\xa9\x9d\x31\xff\xe9\xbd\xb5\x66\xf8\xc7\x5c\xe6\x5e\x18\x28\x8e\x4d\xf8\xc1\x67\x31\xa0\xf3\xfd\xde\x1c\xca\x6d\x8e\xde\x04\x35\xff\x74\x36\xca\x17\xd0\xae\xb8\x8e\x98\xe8\x06\x5c\xbc\xbf\xd0\xff\x83\x04\x3a\x35\x7c\xd1\xb0\x82\xd1\x70\x3d\x46\x18\x81\x87\x2c\xdf\x74\x1e\x4f\x99\xbd\x14\x67\x45\xba\x70\x39\x74\xbe\x40\xf5\x79\xbf\x5c\x4d\xba\x5b\xdb\x8c\x94\x1b\xce"}, +{{0xc8,0xac,0x23,0x45,0x58,0xaa,0x69,0x81,0x6b,0x36,0x8b,0x77,0xb7,0xcc,0xcb,0x5c,0x8d,0x2a,0x33,0xec,0x53,0xae,0xef,0x2c,0xe2,0x28,0x71,0x43,0xbd,0x98,0xc1,0x75,},{0x53,0x64,0xba,0xf1,0xfd,0xb2,0xc6,0x38,0x40,0xb3,0x0d,0x40,0x31,0xcf,0x83,0xa2,0xe1,0x8e,0x62,0x07,0x93,0xba,0xe5,0x9d,0x10,0x35,0xc0,0xed,0xe5,0x5e,0x52,0x8b,},{0x32,0x25,0x03,0x61,0xdf,0x6e,0xd2,0x83,0x48,0x5f,0x95,0xf3,0xd3,0x57,0xa4,0xf1,0xc3,0x3a,0x8c,0xf9,0x16,0x58,0x32,0x7c,0xd4,0x53,0xd4,0x9c,0x95,0x36,0x65,0x51,0x08,0x70,0xaa,0x45,0x4c,0xfa,0x3b,0x83,0x24,0x52,0x20,0xa8,0x27,0xd0,0xec,0x74,0x77,0xf9,0xec,0xeb,0x79,0xc4,0xa2,0x9f,0x30,0x1f,0x95,0x3c,0xc8,0xca,0xac,0x07,},"\xce\x48\x8d\x26\x97\x5c\x1c\x93\x28\xb4\x7f\xa9\x2e\x19\x56\x13\x30\x04\x1b\x23\xa0\xe5\x7a\x4b\x8b\xca\x89\xeb\x5f\x61\x5e\x73\xdd\x7f\xae\x69\xc2\x38\x0e\x32\x12\xf9\xb7\x33\x41\xc3\x56\xdb\x75\xa6\x25\x6d\x7a\x20\xa9\x7f\x75\x9d\x4c\xba\x71\x97\x17\x8e\xa7\x24\xdd\x93\x29\x49\x36\x0e\x96\xc5\x0a\x4b\x3b\xa5\x5a\x95\x33\x72\xc3\x97\xb0\x96\x9c\x2b\x14\xd3\x60\x9e\x0a\x85\x2d\x48\x4d\xf7\x0e\xaa\xb1\x12\x49\xeb\xeb\x32\x37\x92\x1f\x0a\x39\xa5\x5d\x7d\xcc\xfe\xf2\x05\xd9\x4e\xc8\x0d\x9e\x1f\xd6\xa2\xc1\xef\xd2\x98\x44\x10\x1d\xfe\x2c\x5f\x66\x8a\xdb\x79\x75\x91\x5d\xed\xd0\x86\x50\x0c\xee\x2c\x1e\x23\x3e\x8e\x48\x85\x5c\xc1\xa6\xf2\x87\xd6\x3d\xce\x10\xad\xdd\x13\xca\xc7\xb7\xa1\x87\xef\xe4\x7e\x12\xd1\xc3\x5b\xb3\x97\x40\x52\xb2\x3a\x73\x66\x8d\x3e\x4c\x87\xdb\x48\x41\xaf\x84\x6e\x80\x86\x72\xc4\x3d\x0a\x15\x22\xe2\x96\x5f\x08\x39\x51\xb2\xb2\xb0\xc4\x09\x54\x8e\xe6\x18\x2f\x0c\x98\x50\x51\x4c\x9e\x6c\x10\x2f\x54\xba\x41\x24\xc9\x2a\x90\x27\x4f\x40\x58\x91\xe6\x62\xf5\xeb\xb3\x77\x1b\x85\x78\x31\x56\xe9\xe5\x83\x67\x34\xd0\x9d\x1b\xaf\x5b\x21\x34\xc9\x31\x62\xee\xc4\xbe\x03\xbd\x12\xf6\x03\xcd\x27\xbe\x8b\x76\xac\xcc\x6e\x8b\x8b\xac\x02\x0c\xba\x34\x79\x65\x1c\x9f\xfa\x53\xce\x4e\xb7\x7a\x77\x31\x3b\xc1\x26\x5d\xda\xb8\x03\xef\x7a\x65\x63\xba\x6f\x79\x9d\x1e\xf3\x0e\xf5\xa0\xb4\x12\x96\x5f\xda\xc0\xb9\xda\xb8\x42\xc7\x8e\xe2\xcc\x62\x8e\x3d\x7d\x40\x61\xe3\x4e\xde\x37\x97\xe1\x54\xb0\x6e\x8c\x66\xce\xbd\xf2\xde\xd0\xf8\x1b\x60\xf9\xf5\xcd\xda\x67\x5a\x43\x52\x77\xba\x15\x24\x55\x7e\x67\xf5\xce\xfa\xfc\xe9\x29\x29\x1d\xce\x89\xec\xb0\x8a\x17\xb6\x7a\x60\xc5\x82\xb4\x87\xbf\x2f\x61\x69\x62\x66\x15\xf3\xc2\xfe\x3b\x67\x38\x8b\x71\x3d\x35\xb9\x06\x66\x69\x96\x0d\xe4\xdb\x41\x3c\xd8\x52\x8e\xe5\x6e\xd1\x73\xe9\x76\xa3\xc9\x74\xac\x63\x3a\x71\x34\xcc\xe3\x83\x19\x73\x5f\x85\x7b\x7d\x71\xba\x07\xf4\x77\xef\x85\x84\x8a\xa8\xf3\x9e\x11\x81\x18\x77\x9e\xd8\x7b\x4f\x42\xaa\x35\x8a\x89\xf7\xec\x84\x4a\x45\x1e\x7e\x8f\xc0\xaf\x41\x8b\x85\xbc\x9b\xf2\xf2\x6d\x1e\xa1\x37\xd3\x35\xec\x7e\xe7\x57\xb7\x0a\xe2\xfd\xd9\xcc\x13\x49\x32\xf0\xe5\x42\x5b\xf3\x7f\xb9\x15\xe7\x9e"}, +{{0x2c,0x47,0xf2,0xb8,0xb9,0xd2,0xce,0xe9,0xe6,0xf6,0x54,0xbc,0x24,0x65,0x8f,0x9e,0xaf,0x43,0x9c,0x23,0xbe,0xaa,0x0a,0x79,0xbf,0x35,0xcc,0x8c,0xd2,0xde,0xba,0xf4,},{0x44,0x4a,0xf2,0xf3,0x4f,0xd3,0x2e,0x5a,0x19,0xf6,0x1f,0x87,0xd0,0x3e,0x10,0x76,0x27,0xa3,0xee,0xb8,0xbd,0x94,0xd2,0xfa,0xea,0xa3,0x48,0xb0,0x5d,0xea,0x19,0x80,},{0x85,0x54,0xb0,0x1d,0x09,0xed,0x86,0xe6,0x13,0x95,0xb9,0x1a,0x2b,0x1e,0xe1,0x87,0x15,0xc4,0x2f,0x9c,0x7e,0x7f,0x07,0x00,0xd7,0x9f,0xf9,0xfb,0x57,0x81,0x29,0x3d,0x61,0xc5,0x58,0xdd,0x5b,0x43,0x1c,0x93,0x71,0x8d,0xcc,0x0f,0x98,0xfb,0x65,0x2b,0x59,0x6f,0x18,0xc3,0x0f,0x82,0x21,0x5e,0x8e,0x63,0xe4,0xf6,0x56,0x8c,0x88,0x00,},"\x04\x4c\x8f\xaa\x8c\x8a\xaf\x9f\x2b\x81\x86\xa6\xb9\xb3\x38\x47\xec\x7b\x45\x24\x23\xb2\x2a\x91\x74\x3d\x2e\x59\x7e\xcc\x1e\x1e\x22\xae\x60\x05\x3e\x9e\xe6\x23\x3b\x04\x4e\x77\x59\x20\xe4\xe3\xd6\x67\x19\x90\x13\x25\xcf\xdd\x39\xbb\x53\x2f\x8a\xa4\x69\xaa\xb4\x2e\x96\x08\xc2\x12\x60\xc0\x4c\x27\x41\x3a\x7a\x94\xe4\x66\xf6\x3c\x49\x52\xe9\x0e\xf9\x0c\x12\x81\x4b\x34\x51\xb1\xca\xd7\xda\x91\x47\xf8\x40\x92\x20\xf6\x49\x8c\xc0\xa6\x7f\xef\x4b\xc0\x4f\xc0\x6e\x1d\x89\x8a\x55\x15\x59\x1e\x8b\xe0\xc4\x3d\x75\xa6\xfe\x42\x5b\x7c\xbe\xfb\x1b\x91\xb1\xbd\x78\xb5\xbe\xc7\x82\x90\x56\x98\x2e\xfd\xc5\xbe\x24\xaf\x66\x78\x00\x6a\xdc\x6f\x04\x46\x20\x2e\x7e\xc3\xa2\xd6\x97\x9c\xb0\xdf\x7e\x25\xd7\x42\x33\x91\x4d\x9c\x58\xb8\x1c\xf5\x5b\xe0\x69\x67\xd3\xa5\x95\xc1\xb9\x67\x28\x69\x99\x4c\xfb\xa6\x71\x62\x83\x3a\x21\x43\xaa\x91\xcc\x93\xac\xda\xfa\x5b\x45\x20\x8d\xf3\xe8\x8c\xcc\x01\xa2\xa4\xd2\x20\xe3\x60\x09\x8d\x91\x54\xd2\x25\xa7\xca\x5f\x2f\x1e\x52\xb1\x00\x3d\x10\x66\x50\xa7\x7b\x28\x3b\x95\xe4\xba\xf1\xe7\x33\x6f\xa9\xa7\x47\xa2\xb3\x82\x3d\x36\x09\x10\x41\x2e\x76\xdb\x72\x5c\xe1\xab\x1e\x1d\x18\x9d\x0d\x3a\xbe\xf8\x2d\x76\x66\xbc\xf1\xb7\x66\x69\xe0\x64\x3b\x44\xf7\x4e\x90\xce\xaf\xa0\xc8\x37\x1b\x57\xc5\x8f\x3b\x37\x0a\x54\x7c\x60\x95\x8f\x0f\xcf\x46\x1b\x31\x50\xf8\x48\xc4\x70\xfa\x07\xe2\x9b\xf5\xf0\xd4\xb5\x9e\xfa\x5a\xb0\xd0\x34\x1e\x04\x51\xd0\xab\xb2\x9d\x74\x14\xcd\xdc\x46\xcc\x6d\x74\xcf\x3d\xc2\x33\xd0\xd1\x70\x73\x87\xbd\x8c\x77\x80\xff\x78\xe5\x46\xfb\x77\x29\x4d\x58\xa5\xdd\xa5\xf0\x5c\x12\x97\xe3\xd1\x77\x11\x56\xd2\x85\x63\x5b\xf7\xec\xed\xb3\x8a\x9e\x5e\x77\x44\x98\x04\xf3\x89\x9e\xa4\x6a\x50\x26\x6b\x25\x5a\xeb\x52\xd1\x8e\x0f\xa1\x36\xe5\x35\xcc\x90\x26\xf6\x78\x55\x2f\xa3\xee\x21\x46\x08\x1d\x99\x96\x85\xe2\x4b\xf7\x80\x7c\xc4\x7c\x13\x04\x36\xc5\x44\xd3\x5b\x4b\x87\x5b\xd8\xaf\xa3\x12\xce\x3a\xe1\x7c\xf1\xc7\xf5\xea\x1e\xce\xcb\x50\xf9\x53\x44\x72\x0c\xec\xf0\x88\x43\x4f\xf8\xe0\xba\x04\x4e\xc1\x9c\x98\xad\xa7\x78\x21\x16\x30\x4c\xbe\xac\x1c\x3e\x35\xf5\xa4\xf4\x43\x13\x35\x4d\xc9\xa4\x0e\xce\x5a\x0f\x9a\xd3\xa2\x02\x5a\xce\xf2\x62\xc5\x67\x9d\x64"}, +{{0x88,0x7f,0xdb,0x48,0x70,0x68,0x1d,0x4f,0xb0,0x6a,0x93,0x62,0x59,0xf7,0x5c,0xae,0x05,0x17,0xf5,0x01,0xaf,0x64,0x6b,0xc0,0x7a,0x4d,0x72,0xbe,0xe7,0xfb,0x1c,0x73,},{0xc7,0x62,0xeb,0xd4,0x8b,0x2c,0xe0,0x2d,0x06,0x38,0x4e,0x38,0x55,0x4b,0x82,0x5a,0xd3,0x22,0xeb,0xea,0x74,0xd2,0x59,0xdf,0x15,0x47,0xa4,0xd5,0x47,0xce,0x00,0x24,},{0x41,0x0a,0x5a,0xf3,0xc5,0x9b,0x7c,0x6b,0xdb,0x21,0x4b,0x16,0x6c,0xb7,0x9d,0x96,0xf8,0x30,0xcf,0x98,0xbf,0x52,0xda,0xd7,0xb6,0xff,0x29,0x79,0xc9,0x7f,0xea,0x4f,0xed,0x5e,0xf7,0xd3,0xd4,0x9f,0x03,0x09,0x72,0x79,0xb9,0xa0,0x99,0x22,0x6e,0x2a,0x08,0xdd,0x30,0xc6,0x07,0x86,0x25,0x4e,0x2d,0xa8,0xde,0xe2,0x40,0xbf,0xc3,0x08,},"\xc5\xdc\x77\x9f\x3f\x3f\xac\x06\xdd\x28\xe5\xa6\x7e\x0e\x52\x4a\xf5\xb5\xdc\x3b\x34\x40\x96\x57\xb6\x3d\xfa\xce\x94\x71\xe9\xa4\x1e\x11\x32\x17\x5a\x0b\x56\x9c\x8f\xea\x9d\x2e\xef\x2c\xf5\xd5\x96\x2c\x7e\x0b\x61\x45\xa9\xe7\xa0\xc1\xaa\x33\x77\x20\x44\xf9\xc3\x99\x8c\x5a\x8c\x48\x86\x45\x8b\x4e\x58\x6f\x93\x07\x60\x83\x61\xf5\x11\xe7\xab\x50\x92\xac\x41\xec\x76\xe0\x58\x6e\xf5\xb9\xc2\x36\xfc\xf5\xca\x2f\xc8\xdd\x6a\xae\xb7\x89\x36\x7f\x2e\x7c\x99\x09\x32\x55\x5d\xc5\x22\x61\xe4\x4e\x49\x42\x34\x98\xb5\x24\x41\x91\x83\xb6\xc1\xf1\xd4\x2c\x45\x46\x4e\xcc\xb0\xc2\xf7\xe2\x51\x77\xfe\x5c\xd4\x63\x50\x2b\x40\x3e\x06\xd5\x11\xfc\xf9\xdc\xb6\x40\x12\xe0\xf2\x0b\x34\xc2\xea\x7c\x00\x4d\x9e\x48\x4a\x7e\xd8\x1f\x32\x60\xc4\x1c\x8b\x19\x53\x52\x9f\x47\xf7\x1e\x86\x78\x43\xcc\x3c\x33\x2a\xd0\x36\x6a\x63\x81\x7e\xd1\x2d\xd4\x73\x0d\x3d\xfd\xbd\x75\x72\xb9\xff\x79\x80\x45\x94\x0d\xd1\x9f\xad\x0c\x8a\xea\x0b\x4a\xb6\x1c\x40\x16\xde\x32\x79\x9c\x73\xaa\x2b\x92\xd2\xc2\x5e\xe9\xb7\x2d\x46\xfe\x8f\x06\x93\xc5\x87\x75\xef\xb0\x5e\x9e\x17\xa5\xc3\x46\xa8\x12\x65\xd3\x5b\xe6\x9a\x22\xd0\x95\xde\x18\x60\x66\xa5\xc6\xd8\xc0\x7a\x3d\x38\xd0\x02\xa1\x0e\x5e\xfd\xb8\x66\xda\x4a\x9b\xdd\x54\xf5\x09\x26\x61\xb6\xc2\xd7\x43\xf5\xae\xaa\x4c\x6c\x31\x8f\xb5\x93\x23\x90\x30\x57\xe4\x9c\x23\x7b\x45\xf6\x75\x42\xa4\xf2\x7c\xaf\x65\xb5\x7c\xfc\xf8\x8b\x71\x20\x3d\x43\xd7\xf9\x53\x22\x16\x0f\x95\xc2\x32\xdd\x10\xab\xb1\x13\xb7\x21\xdd\xba\x22\x26\xb0\x63\x22\x9b\xb4\x41\x02\x33\x6b\x10\xbf\x16\x56\x55\x11\x61\x24\x97\x86\xd4\x54\xf4\xe0\x90\x9d\x50\x00\x17\xf6\xc7\x56\x4f\x73\x3c\x83\x1a\xf4\xe5\xec\x94\xdf\xd3\xbf\x8f\xf5\xf3\x02\x1b\x70\xa5\xca\x5d\x28\xc6\xdf\xb8\xa2\xc1\x8a\x1a\x66\x2a\x33\x35\x9f\x26\x4d\x16\x96\x98\xc1\xab\x55\x78\x3f\xac\xa7\x3b\xd6\x8c\x0f\x79\xd1\xd0\x4a\xe0\xec\xdb\x52\xae\x76\x18\x92\xc0\x24\x93\xff\x35\xf3\xd8\x4f\x66\xe2\x36\xfc\x58\x13\x4a\xd6\xa7\x7d\x92\x25\x49\x05\xd7\x73\x90\x0d\x9d\xdf\x26\x54\xc7\x0b\x46\xf3\x41\xda\xcb\x47\x93\xca\x51\xee\xde\x45\x53\x3e\xae\xeb\x6e\x33\x23\xbc\x3e\x6c\x85\xa7\x94\x06\x51\xc4\xf6\xf9\x81\x91\xc6\x18\xc8\x91\xea\x4e\x22\x0e\xa4"}, +{{0x88,0xb3,0xb4,0x63,0xdf,0xc3,0x0d,0x01,0x5e,0xef,0xbb,0xbd,0xd5,0x0e,0x24,0xa1,0xf7,0x27,0x77,0x75,0xbc,0xef,0x14,0xa6,0xbe,0x6b,0x73,0xc8,0xc5,0xc7,0x30,0x3e,},{0xf2,0xb6,0x28,0x4c,0x93,0x0d,0x4a,0xd3,0x2d,0x0a,0xc7,0x19,0x04,0x0e,0xe7,0x88,0x6b,0x34,0x72,0x2e,0xdf,0x53,0xda,0x80,0x1a,0xcb,0x5f,0x93,0x19,0x69,0xe1,0x19,},{0x82,0x5a,0xff,0x71,0xf7,0x93,0x03,0xbf,0x45,0x92,0xbd,0x8d,0xa4,0xd7,0xd9,0x43,0x7f,0xf2,0x67,0x97,0x6f,0x74,0x64,0x37,0x65,0x59,0x88,0xdd,0xcf,0x29,0x37,0x94,0x65,0xa3,0xb4,0x8c,0x9f,0xb0,0xf3,0x1c,0xef,0x03,0xe6,0x36,0x88,0x61,0xc3,0x69,0xb4,0x36,0x4f,0xb8,0xe4,0xb0,0xc7,0x2e,0x26,0xa9,0xa9,0xdd,0xed,0x1c,0x25,0x04,},"\x17\xc3\x17\xfa\x6b\xc9\x0c\x55\x32\x32\x8f\x02\xcc\xfb\x6c\x09\x9e\x6f\xe1\x00\x01\x74\xf2\xaf\x3a\x3a\x93\x09\x42\x85\x06\x71\x7c\x5c\x43\x35\xbd\xd7\xc3\x67\xff\x4e\x44\x8a\x9c\x04\x75\x03\xaf\xba\x68\xfd\x8f\x79\x87\x23\x7b\xe7\xf7\xfb\xdc\x6d\x73\xf2\x4c\x64\x21\xca\xb4\x22\xb3\xfb\x25\xf6\x7b\x2d\x71\x04\x2e\x71\x57\x0d\xf2\xaf\x37\xbf\xe5\xc1\x14\x21\x1f\xd5\x52\x4b\x6c\x1c\x6c\xc5\x2f\xab\xc3\xcd\x7f\xb4\x64\xcd\x58\x0b\xb7\x40\x71\xcb\x30\x0f\x8c\x9f\x8a\x46\x20\x8e\x5a\xa5\xdd\xfe\xa5\xfe\x90\x69\x7a\xa2\xf1\x4c\x60\x79\x50\xc9\x8f\x23\x12\xa9\xe1\x6e\xf6\x34\x6a\x8f\xd1\x29\x23\x27\x33\x82\x7e\x15\x01\xa6\x60\xc7\x7c\x29\xc5\x6d\x2f\xdd\x1c\x55\x97\xf8\xbc\x89\xaa\xef\xe3\x71\x37\x34\xfe\x82\x85\x82\x01\x89\x1a\x11\x47\xef\xaf\x1d\x78\xa4\x71\xf9\x20\xde\xfc\x88\x03\x44\x55\x3e\xb7\x16\xcc\xe3\x26\x0e\x86\xa1\xbc\x0b\xe2\x83\x73\xa6\xa0\x66\x11\x6e\x8e\xcb\x10\xa0\xc4\xa7\x0c\xa2\xb5\x36\x4e\x11\x9f\x84\xae\xc6\x0d\xec\xed\x3a\x4e\xff\x1f\xe6\x88\xc5\xe3\xe2\x51\x47\x0a\xb5\x16\xfa\x96\x4a\x4b\x6f\x28\x36\x8d\xd1\xe2\x83\x59\x79\x34\x06\x4d\xc0\xc5\xb5\x69\x10\x62\xcb\x2e\x26\x7b\xd1\x5f\xd4\x22\xbc\xfe\xfb\x83\xcc\xef\x7a\xa9\xa2\x27\x5e\xf5\x7e\x47\x31\x49\x98\x8c\x15\x78\xfd\x18\x70\x8d\x2f\xf6\x9f\x8e\x59\x80\xaa\x82\x6a\x82\xca\xb7\xd8\xb9\x2b\xb5\x3b\xdd\x46\xdb\x04\x6e\xcd\xfc\x8c\xd7\xae\x5c\xe4\x4f\x3c\x5b\x8c\x05\x65\xb5\xd3\xc0\x72\xc7\x6b\x95\xce\x90\x0a\xc3\xee\x55\x10\xdb\x0e\x75\xd3\xa4\x15\x0a\x98\xf3\xcc\xcc\xc6\x9e\x93\x0c\x6b\xa7\x41\xdb\xb0\xeb\x9f\xb3\x19\x68\x71\xba\x20\x6a\x58\xe0\xda\xe3\x9c\x8d\x6b\xb7\x2a\x82\x39\x9c\x4b\x7b\x9d\xa3\x85\x77\xac\x17\xff\x15\x24\xd6\x53\xc0\xbf\x33\x67\x93\x23\xca\x7e\xef\x4e\x92\x28\x72\x90\x31\x56\x0e\xd8\xf2\xe5\x19\x3c\x64\x0b\x2f\x5e\x60\x80\x75\xa2\xed\x61\x42\x8d\xfc\xcd\xc0\x00\x50\xba\x4b\x99\xed\x6d\x15\x36\xd5\xac\x1e\x93\x96\x74\xb4\x1d\x16\x31\x2a\xe5\xb0\x7d\xef\x1b\xf5\x35\x89\xbe\xd4\x40\x06\x02\xee\x11\xb8\x50\x33\x0f\x38\xaa\xd3\x3e\xf0\x41\x70\xa3\x90\x5c\x28\xb5\x0e\xcc\x57\xdc\xcf\x4f\x29\xd0\xc0\x0f\x71\x3d\x32\xff\xc8\x57\x95\x65\x88\xa6\x32\x6b\x95\x49\xed\xb0\xe4\xfe\x61\x85"}, +{{0x42,0x7d,0x6e,0x42,0x39,0x17,0x89,0x68,0x31,0x60,0x1b,0x8f,0x4e,0x21,0x56,0x1d,0xb6,0x10,0x85,0x71,0xbe,0x00,0x9e,0x29,0xdc,0xa4,0x9a,0x59,0x60,0xff,0x31,0x4b,},{0x8d,0x9e,0x63,0x60,0xfd,0xef,0x24,0x99,0x75,0xdf,0x27,0xb3,0x10,0x6a,0x71,0x12,0x05,0x87,0x72,0x2d,0xf3,0x27,0x0a,0x85,0xa1,0x3a,0x8c,0x3b,0xb8,0xc9,0x80,0x9e,},{0xd1,0xc9,0xa0,0x1c,0x56,0xe3,0x39,0x60,0xf4,0x9d,0xf3,0x7e,0xab,0x96,0x3b,0xc5,0xa9,0x9f,0x25,0xc6,0x00,0x44,0x6c,0xe2,0xca,0x48,0xd9,0x13,0x9d,0xa5,0x73,0x3b,0x71,0x8f,0xbf,0x1a,0x98,0x73,0x93,0xf6,0xe5,0x82,0x3c,0x2d,0x13,0x0c,0x7c,0xe6,0x0e,0xa3,0xdb,0x35,0x43,0xc8,0x85,0x4e,0xf1,0x2b,0x98,0xd3,0x3a,0xdd,0xe7,0x05,},"\x9c\x2c\xc7\xf2\x46\x2e\x09\xc4\xc5\x8c\x27\x09\xab\x42\x59\x88\x5a\x4e\x88\x7d\x9f\xa5\x31\x88\x15\x05\xaa\xf2\x03\xc1\x63\xfb\x3a\x0d\xc0\x28\xf4\xad\xa6\x06\x70\x63\x8d\x4a\x97\x27\xa3\x90\x83\xbe\xdb\xac\xed\x58\xed\xb7\x79\xe1\xce\x6c\xcd\xfb\x42\x8c\x36\x2b\xb1\xdb\x0c\x10\x53\x00\x6b\xd8\xf4\xbe\xf8\x9a\x1a\x9d\xe0\x1c\x77\x4e\x35\x7f\x91\x0e\x5c\x39\xb2\x24\x77\x55\x5e\x5f\x7c\x04\x98\xb5\xb2\x8f\x36\x9e\x5d\x3f\xa4\x2a\xb3\x60\xe4\xf4\x51\xc6\x9f\x81\xba\x0f\x3c\xce\xd4\x3a\x55\x9d\xb6\x00\x10\x42\x78\xf8\x68\x79\x6b\x2c\x91\x1b\x3b\x03\x2b\x72\x9f\x4b\x22\xac\x14\x9d\xc4\x67\xa0\xca\xe4\x8d\x19\xe9\xd9\x85\xb4\x2b\x62\x54\x9d\xe1\x71\xff\x56\x6e\x1d\x1e\x9b\xb8\xe5\x6c\xfd\x1a\xe8\xf7\xbd\xdc\xfd\x8a\x23\x41\x82\x7d\xbe\x89\xc8\x82\xab\x3e\x49\x83\x39\xff\x68\x1c\x7d\xc1\x10\x4d\xe7\x38\xb4\x80\x31\x69\x43\x10\x9f\x70\x3d\x47\x1a\xb8\x6e\x4c\xa4\x28\x7e\x4c\xd7\x4c\x31\x2f\xf7\xd0\x37\x39\x56\x06\xfb\x25\xf8\x71\xe7\x27\x70\x78\xa7\x87\xd0\x2f\x31\xcc\x9e\x81\x5b\xe8\x60\x0a\x7c\x47\xc6\xfd\xd8\x23\x31\xae\x9c\x49\x6a\x54\x7b\xdb\x23\x5b\x8a\x56\xd5\x32\x59\xe6\x29\x61\x24\xa3\x2c\x3b\x62\x5d\x20\x24\x19\xd0\x64\xb9\xa4\xe8\x3e\xfa\x87\xf1\x35\x37\xb4\xf5\x13\xb9\x16\xa8\x4f\xc8\x66\xd8\xa8\x99\x80\x4c\x78\x33\xea\xa0\x19\xe0\xd7\xe0\xe8\x07\x5b\xd6\xb5\xcb\x6f\xfc\x76\x64\x79\xf3\xf6\xe2\x0e\x48\x1e\x6a\xb2\x7b\xd8\x08\xad\x90\x6c\xdc\xc7\x82\x74\x30\xe3\x12\xf7\x40\xf2\x75\xdd\xf5\x1d\xd8\x32\x48\xfa\x05\x7c\x43\xc9\xcb\x77\x55\x7b\x2f\xd9\xc2\xd5\x28\x24\xff\x9e\x14\x6d\xea\xc1\xe6\x69\x1d\x45\x02\x13\xbc\x59\x0a\x49\xbe\xc7\x2d\x52\xe3\x8f\x6b\x4d\xc6\xcc\xa9\x51\xee\xf2\x18\x4d\x24\x25\x03\x1a\xd5\x9b\x24\x2e\xff\xa6\x8b\x6c\x72\xc5\x4c\x9d\xfd\xb4\x19\xc0\x2e\xb4\x3e\xf3\xf3\x4d\x33\x8d\x2a\x9d\xd0\x3a\x78\xcf\xdd\x01\x40\x98\xe2\x49\x25\x9e\x77\x28\x2e\x0c\x3f\xc1\x01\x0b\x02\xa6\x7f\xf8\x51\xe9\xcf\xd9\x74\x9c\x1c\xd8\xf0\x6c\xf4\x62\xe6\xad\xe9\x95\xac\x46\x6f\xab\x5c\x79\x5e\x9e\xff\x13\xe5\x5b\x43\x50\xb9\x4c\x73\x16\xaa\x49\x8d\xf9\xfd\xee\x99\x58\x04\x77\x93\xe3\xbb\xb8\x9f\xb8\x1d\xa8\x5f\x4b\x9d\x43\xe4\xb0\xd4\x3b\x38\x1b\x94\xcd\xc9\xa9\x9d\x06"}, +{{0xbe,0x93,0x52,0x09,0xf6,0x2d,0xea,0x60,0x12,0xec,0xda,0x6a,0x61,0x56,0xcd,0x16,0x6a,0x4d,0x76,0x11,0x50,0xde,0xed,0x45,0x68,0x16,0xea,0xf0,0xce,0x78,0xa7,0xf6,},{0xd3,0x9a,0x89,0xaf,0x72,0x29,0x39,0x48,0xb1,0x34,0x21,0xfb,0x88,0x3b,0xbe,0x37,0x2a,0xf9,0x08,0x9c,0x22,0x4d,0x42,0xb9,0x01,0x97,0x9f,0x7e,0x28,0x04,0xe1,0xc0,},{0x08,0xe0,0x98,0xa7,0x49,0xfc,0xe6,0xd1,0x23,0x54,0x39,0x58,0x78,0xa8,0xbe,0x35,0xfe,0x9e,0xdf,0x72,0x68,0x4d,0xd8,0x28,0x12,0x24,0x89,0x9b,0x1c,0xae,0xa4,0xed,0x68,0x77,0x85,0xdf,0xf5,0x5a,0x19,0x98,0x9e,0x03,0x63,0x6e,0x16,0x66,0x38,0x6f,0x22,0xc3,0xf4,0x43,0xec,0xf6,0xfd,0x34,0xd5,0x99,0xff,0x3e,0xc2,0xfa,0xf1,0x01,},"\x11\x7f\x42\x7c\xb6\x81\x50\xca\xfc\xfa\x46\x2c\x42\x20\x61\x41\x42\x7c\x4d\xce\xa1\xc8\xea\xcc\x2d\x30\xbe\xd1\xe9\x02\x07\xd5\xae\x30\x5e\x1f\xc1\x6c\x54\xe4\xc5\x4c\xc6\x87\x8c\xdb\xed\xc9\xf5\x1f\xe1\x84\x61\xec\x37\xc5\x57\xb1\x15\xd1\x3c\x86\x82\xc4\xe1\x5f\x50\x52\x96\xa1\x76\x0e\x1e\x75\xf5\xab\x27\xa5\xc1\x5a\x13\x57\xd2\xc8\xc4\x0d\xd5\x35\x5f\x7c\x82\xfe\xa5\xd2\x7e\x28\x87\x63\x58\xc1\x2e\x91\x13\xee\x29\x83\xea\x6f\x09\xc6\x4e\x06\xe2\x97\xdd\x96\xb3\x4d\x9b\x5e\xd4\x9f\xc4\x7a\x88\x39\x54\x9c\x66\xb0\x02\xfe\x94\x5e\x8f\x94\xe7\xd2\x31\x5c\x50\xca\x4d\xc0\x98\xbe\x4b\x32\x89\x81\x2f\xbe\xa9\x6b\x47\xce\x60\x45\x40\xbd\xe0\xe5\xab\x0b\x1b\xc0\x36\xbe\x9b\x6a\x95\xe0\x9c\x81\xe8\x98\x64\x0c\x8f\x05\xd6\x0a\xd9\x42\x18\xd0\xe6\x6c\xeb\x85\xa2\x6b\x78\x29\x22\x20\xbf\xd0\x61\xdd\x07\x35\x12\x92\x3b\x90\xc7\x9d\xcf\x5a\x19\x35\xfa\xfe\x8e\x01\xef\x8b\xf8\x1b\x4d\x37\xc5\xa5\x71\xb5\x0c\x42\x1f\x9b\xd2\x19\x4b\xef\x35\x86\xfc\xb8\x58\x48\x77\xbb\x7e\x04\x81\x65\x5b\x05\xc7\xb6\x43\xb1\xe4\x5b\x04\x03\x62\x72\x84\x18\x52\xe3\x19\x40\xef\x8f\x3b\x6d\x4f\xeb\x5d\xf0\x79\xd1\x76\xf9\x79\xc1\x8a\x11\xa6\x6d\x12\x14\xe5\x2f\x68\x7e\x90\x63\xc1\xc2\xb7\x27\x7b\x68\x5d\x5c\x72\xad\x56\x9f\x78\x73\x83\x8f\x91\x02\x57\xa0\x53\x13\x1c\x83\xeb\xce\x86\xe6\x9d\x73\x63\x62\xbe\xbc\x96\xbb\xfa\x35\xfc\xba\x1c\xb5\x27\xe7\x48\xe5\xf5\x79\x92\x9f\xd4\x0c\x56\xb1\xa5\x1a\x22\x2e\x86\x33\x02\x70\x5c\x86\xf7\xb5\x4e\xbf\xbb\x94\x82\xf7\xe2\x80\xf7\xbe\xc8\xca\xf3\xa6\xb5\x67\x1a\xc3\x0c\xd1\xbe\x52\x92\x88\x79\x7c\x01\x3c\xe5\x6b\xd1\x86\xde\x7d\xfc\x18\x28\x69\x14\x25\xc1\x47\xc5\x17\x4a\x29\x0d\x80\xcb\xd5\x9c\x19\xda\x7a\xdf\x77\x91\x88\x82\xa7\xb2\xa9\xa6\x4e\x6d\x76\xb4\x8b\x92\xf2\xa2\x66\xee\xe6\xe2\x51\xd2\xe8\x17\x65\x2b\x88\xb5\x02\xde\x73\x99\x78\x2d\x75\x29\xa8\x1d\x0a\x36\x39\x96\xb9\xdf\x68\xb1\x5a\x76\x30\x90\x4c\x8c\x24\x60\x81\xfa\x4f\x09\x29\x9f\x15\x75\x79\x58\xe0\x89\xa9\x01\xc3\x56\x46\x15\xc0\xf7\xcf\x27\x52\xb8\xb9\xe5\x21\x33\x8d\x83\x6e\x3d\xae\x4c\xe2\x37\x46\x42\x25\x3c\x4c\x98\x31\x97\x4e\x5d\x8c\x28\x42\xf4\x90\x07\xb7\x17\x75\x09\x3d\xfe\x57\xf4\x44\x92\xf0"}, +{{0x68,0x18,0xc6,0x0b,0xb6,0x43,0x9a,0xc2,0xee,0xe2,0xd4,0xe1,0x28,0xe9,0xd8,0x69,0x1d,0x4a,0xd5,0xd3,0x63,0xfe,0xd7,0xd6,0x57,0x7a,0x62,0xb6,0x56,0x99,0x94,0xa4,},{0x73,0x45,0xec,0x11,0xbc,0xcc,0x05,0x6f,0xc4,0xef,0xfa,0x3e,0x4e,0xf6,0x70,0x99,0x6a,0xa2,0x6a,0x1b,0xb1,0xb8,0x33,0x91,0xba,0xbc,0x39,0xa1,0xa5,0x96,0x01,0xf9,},{0x15,0x05,0x96,0x7a,0x27,0xb9,0xf8,0x6e,0x92,0x42,0x44,0x40,0x02,0xa1,0xe3,0x19,0x7d,0x74,0xdd,0xcd,0x89,0x65,0x9e,0xc5,0x14,0x02,0x02,0xaa,0xc7,0x94,0xb8,0xad,0xc1,0x93,0xe7,0xd3,0x0f,0x33,0x82,0x64,0x29,0x90,0xf6,0xfe,0xd7,0xa9,0x99,0xca,0xc8,0xc6,0x1e,0xaa,0x39,0xb7,0xd9,0x08,0x16,0xf1,0xd7,0x38,0x74,0x4b,0xe1,0x01,},"\xb2\xae\x65\x8b\x3c\x13\xc3\xcd\xeb\x1d\xc9\x93\xb0\xf4\x5d\x63\xa2\xea\x9a\xbd\x0b\x7a\x04\xf1\xf5\xce\x59\x32\x80\x6c\x2c\xa9\xb7\xa2\x04\xfb\xf8\xd0\x66\xb7\xf0\xfe\x6a\xe0\xd1\xda\x68\xc8\x85\xee\x11\xf6\xf6\xdb\x7e\x83\x20\xa2\xea\x65\x0b\x53\x38\x51\xcd\xd9\x9d\x90\x3a\xa0\xb3\xfa\xa3\xc9\x50\xf7\x02\xf0\x4e\x86\xb4\xee\xb3\xa1\xc7\xbc\x85\x4b\x25\x14\xfa\x5b\x47\x66\xd3\x75\xb4\xf1\xad\x61\x07\x53\x78\xdd\x92\xfd\x62\x6c\x2b\x47\xe0\x13\x83\xea\x72\x98\x79\x59\x26\x2c\x56\x28\x62\xb4\x5b\x75\x57\x67\x14\x13\xb6\x66\x14\xbc\xc9\xf7\xbd\xb9\xee\x46\xcb\xed\x89\x65\xbf\xa5\x05\x31\x50\x90\xc7\x20\x4b\xea\x89\x17\x5b\xe5\xf2\x08\x02\xe3\xde\xdd\xcb\xd8\xdd\x64\xcf\xef\x7e\xe6\xa6\xe3\x86\x0c\xe1\xe5\x79\x9d\xf5\xd8\x10\xd5\xec\xf3\x2e\x61\x5d\x16\xdf\xf8\x7a\xbd\x4a\x63\x6e\xa1\x7a\xa4\xec\xe5\xb6\xb2\xc0\x46\xb6\x5b\x5a\xf7\x49\x86\x2b\x45\x79\x0c\x39\x17\x68\x20\xb3\x69\x01\xbe\x64\x9c\xf4\x16\x9d\xf7\xe9\x23\x95\x6d\x96\x06\x49\x50\xc5\x55\xf4\x5a\xcb\x94\x50\x7c\xfd\x0c\x3b\x33\xb0\x80\x78\x5e\x35\xc0\xd2\xb0\xad\xdc\x4c\x0a\xd3\xfb\x21\x6a\xc2\xe6\x01\xc9\xc7\xe6\x17\xda\xbd\xa3\x33\xda\xe6\x03\xcc\x9d\xb1\xfc\x62\xae\x4e\x0e\x45\xe3\xcc\xdd\x16\x6a\x67\x81\xe2\x43\xb7\xda\xa1\x38\x80\x66\x32\xf5\x38\x84\x4e\xe3\xd1\x40\xb7\xa8\xbb\x2b\x54\x01\x00\x77\x8c\x45\x8e\x06\x61\x70\x70\x5e\x5f\xb2\xc8\x80\x29\x09\x8b\x99\x2c\x39\xbc\x9f\xf6\x33\x0b\xfc\xfe\x77\x52\x32\x0e\x6e\xa0\x94\x9d\x2c\x87\x1a\xed\xc1\x87\xbe\x27\xfe\xf7\xdb\x5f\x72\xa6\xa7\x73\xed\xde\x0d\xc5\x2a\xe2\xed\x93\x1c\xb2\x68\x17\xb8\x5b\x15\x45\x89\x4d\x92\x29\x8a\xaf\x87\xcc\xbc\x78\x3e\x8d\xd6\xd1\x64\x93\xf5\x6e\xad\x2b\xa8\x52\xee\x9c\x7d\x10\x07\x44\x06\x44\x0d\x2a\x27\x9a\xbc\x87\x4f\x15\x46\x8d\xd6\x6a\x71\x7b\xac\xe3\x7b\xe7\xb7\x05\x5d\xd9\x68\x1f\x8b\xe8\x13\x29\xee\x7a\xf9\x7e\x3a\xbc\x43\x4a\xc1\xc9\x3a\xec\x58\x2f\x23\xfd\x1e\xc0\xfa\x5a\xaf\xcf\x7b\xfb\xda\x00\xff\xa9\x7a\xe3\x17\xae\x91\x8d\x34\x9d\x21\xa7\xf4\x61\x91\x42\xba\x23\xda\xce\xf7\xb3\x90\xae\x26\xa1\x7e\x2e\x29\x62\xae\x27\x00\x53\x76\xb7\x2d\x4d\xa9\xe2\x97\x96\x53\xa6\x63\x25\xa1\x46\x17\x63\x8d\xbe\x1a\x55\x40\xb6\x83\xac\x00\x17"}, +{{0x6d,0x1d,0xa5,0xb4,0x83,0xe6,0x4b,0x03,0x65,0x99,0x0f,0xf0,0x93,0x81,0xfb,0x17,0x02,0xfd,0x8e,0xc3,0xa1,0xa3,0x69,0xcd,0x52,0xe4,0xc5,0x67,0x13,0xa3,0x14,0xa5,},{0x08,0x05,0x5c,0x26,0x1f,0x26,0xe0,0x2a,0x65,0x8f,0x66,0xd9,0xba,0x01,0xfc,0xde,0x53,0xe9,0xad,0xe3,0xed,0xc6,0xbf,0x81,0x5e,0x4a,0x68,0x02,0xe1,0x67,0x7a,0xb3,},{0xa5,0xb8,0xb4,0x4a,0x91,0x44,0x4c,0x64,0x37,0x4b,0x52,0x3c,0xb4,0xdc,0xb0,0xce,0xf4,0xce,0x52,0x40,0x8b,0x98,0x12,0x6d,0x7e,0x1a,0xe8,0xbd,0xc2,0x8c,0xf5,0x14,0x70,0xce,0x4e,0x25,0x3e,0x0b,0xe6,0x2b,0xd6,0x8e,0xbf,0x5f,0xa6,0xbc,0xe1,0x58,0x5e,0xcc,0xfa,0x92,0x56,0xc0,0x73,0xee,0x03,0xe5,0x4c,0x52,0x5b,0xbe,0x2d,0x0a,},"\x79\xa2\xc3\x70\x55\xf1\x89\xf3\x24\x7f\x1f\x8c\xea\x19\xb2\xea\x40\xd8\x58\xdb\x1f\x5d\x13\x92\xee\x6d\x41\x1c\x78\x02\xee\x23\xde\x52\xad\x02\x81\x17\x25\xa9\x4d\x76\x67\x5d\xa8\x9a\x96\xb5\xd0\x7a\xbc\xee\x23\x3a\x1a\x2e\x1f\xa3\x24\xff\xf9\xe7\x8a\x4c\x19\x61\x47\xf8\x57\x0b\x0b\x13\x71\x3d\x96\xaa\x5d\x75\x0a\x15\xd7\xcd\x16\x2e\x7b\xa2\xe7\x53\x33\x60\x7d\xd6\x98\xeb\x47\x73\xc7\xe9\x1f\x76\x68\xff\x8b\x62\xf0\x46\x40\xeb\x12\xec\xf1\x22\xfc\xe6\xb8\x32\xe0\xd0\xdf\x92\x8e\xef\xd2\xc2\x00\x23\x64\xaf\x6b\xb5\x52\x91\xd3\xf5\x49\x29\x08\x5b\xe3\x38\x34\x2f\x09\xda\x73\xe2\x79\xc8\x7c\x83\x24\x55\x58\x19\xed\x57\xe7\x8d\x7a\xc4\x09\x51\xd3\x3f\x65\xb9\x4a\xa1\xe5\x55\xe9\x2a\x06\x3d\x11\xf1\xff\x7b\x12\x69\x43\x41\xe3\xfe\x44\x49\x33\xd0\x1a\xa3\x67\x53\xed\x3c\xdd\xa8\x90\xbd\xf9\x5a\x82\x05\xb5\xd8\x93\x22\x19\x91\xc7\x95\xad\x0a\x4a\x94\x6f\x58\xd4\x0a\x45\x34\x51\xaf\x21\x4f\xd4\x65\xe2\x8d\x3e\x2f\x0a\x56\xaa\x56\xde\xf8\xdc\x04\xaa\xd3\x57\x13\xab\xfc\x8b\xd7\x85\x6d\x5a\x9d\xc3\xf6\x0a\x3f\x2b\xd3\xe6\x36\x6f\x1f\x24\x4e\x94\x1d\x6a\xea\x89\x2f\x6a\x88\x93\x1f\xe1\xc3\x13\xe0\x90\x78\xe9\x0b\xc6\x39\x2d\x49\x05\x33\xc9\xea\x3f\xf6\xde\xaf\x3a\xad\xfa\x8d\xfd\xc4\xe9\x0f\x64\xaf\x47\x58\x9e\xa6\x5a\x87\xac\xd2\x19\x96\x02\x35\x1d\x3a\xfc\x21\x03\x19\x6e\x03\x94\xed\x52\x3a\xa7\x99\xd3\x1e\x11\xd3\x4f\xff\x54\x6d\x44\xf4\x36\xb3\x48\x59\xf9\xcf\xbc\x9c\xe4\x03\xde\x5a\x98\x30\xec\x3d\x45\x3f\x0d\x45\x97\x0f\x57\x2c\x14\x4f\x19\x1b\x2f\xbb\x2d\x0e\xa6\xcc\x9c\x8e\x24\xd9\xc0\xb2\x18\x3b\x27\x80\x72\xeb\xb0\xbe\x2d\x70\xd0\x37\xfd\x2e\x8e\xc1\x8d\xc4\xc9\xb2\x1a\xbd\xc6\xa4\xce\x8d\x46\x68\xa2\x20\xee\xbd\x69\x34\xf0\x4b\xaf\x0e\x88\xa4\x88\xd2\xdf\xc7\x35\xa7\xc5\xa7\x0d\xbb\x01\x66\xa2\x1a\xe0\x11\xfc\x6e\x7d\xa1\x0f\xc3\x20\x33\x62\x71\xd9\xee\xad\x51\x0a\x6f\x70\x32\xf2\x29\x66\x92\xbe\x50\x80\x21\xbc\x98\xc1\x70\xbe\x42\x35\xf7\xce\x31\xf2\xbc\xd6\x34\x11\x63\x68\x33\x76\xae\x2c\x56\x62\xcb\x47\x70\xc9\x6e\x01\x8e\xf1\xbf\x47\x91\x33\x19\xc9\xa0\x9b\x9e\x96\x5a\xb5\xc3\xe9\x7b\xbc\x75\x6a\x56\x66\xb4\x56\x7f\x2c\xff\x2d\x0c\x3a\x6a\x40\x26\x15\x8c\xb9\xf9\x0f\x95\x00\x56"}, +{{0x51,0x46,0xf5,0xb7,0xf1,0xba,0xa1,0x9f,0xc8,0xcd,0x78,0x5c,0x89,0x6e,0x0f,0x90,0xf9,0xf6,0x59,0xb7,0x7b,0x1b,0x9b,0xb4,0xad,0xca,0xb5,0xa6,0x26,0x72,0x05,0xe4,},{0x68,0x8a,0x8d,0xe6,0x4e,0xff,0x33,0xba,0x6b,0xbe,0x36,0xcd,0xd6,0xa3,0x84,0xbb,0x67,0xb3,0xf4,0x26,0x36,0xdb,0x23,0x4f,0xf5,0xef,0xe0,0xb3,0x17,0x43,0xc7,0xe6,},{0x4b,0xdb,0xd7,0xc6,0x4f,0x13,0xe2,0x78,0xc2,0x39,0x69,0xe7,0xeb,0x38,0x6b,0xbe,0x49,0x9d,0xbd,0xef,0xc3,0xff,0x4e,0x30,0xcf,0xac,0x5c,0xf8,0x6f,0x21,0x6c,0x24,0xc9,0xe6,0xcd,0xe2,0x0e,0x52,0x9d,0x14,0x7f,0xb7,0xea,0x08,0xf2,0x59,0x3a,0xd5,0x09,0x03,0xb5,0xed,0xbf,0x86,0xb4,0xd2,0x8f,0x2e,0xb3,0x2e,0xf1,0x37,0xf0,0x0c,},"\x97\xbd\x99\xf5\x18\xee\x07\x88\xd5\x76\xd9\x9c\x04\x3b\x44\x9d\xfc\x24\x2a\xc5\xee\xae\xc3\x44\xa1\x94\x32\xb3\x45\x96\x2e\xc4\x12\xce\x55\x36\x2b\x3b\x85\x1d\x98\x11\x9f\xce\xb9\x32\x83\x47\xf6\xfc\xc6\x8d\xbf\x56\xa2\x81\x4d\xb0\x9e\x93\x85\x84\x3a\x93\x11\x89\xea\x3e\x72\xda\x9d\x79\xa4\x56\x93\x05\x3c\x03\x57\x01\xdc\x55\x51\x24\x0f\x95\xb3\x03\xfb\xa1\x6f\x89\xaa\x53\xa4\x38\x82\xb0\xf1\x38\x12\x02\xc7\x8f\x9c\x74\x19\x89\x9f\x23\x51\xec\xa9\x5e\x20\xbf\xee\x76\x35\x1c\x48\xd0\x04\x99\xf5\x91\xda\x56\xa9\x95\x24\xbb\x74\xfe\x1c\x83\x4e\xe9\x10\x77\x13\x9f\x1e\xdf\x67\x31\x5c\x07\xa3\xfd\x97\xf8\x0b\x7c\x27\x6b\x6c\xf6\xb5\xcc\x36\xbe\x36\x3b\x73\x12\x17\xf6\x31\x9f\x51\x29\xba\x7b\x14\xd0\x54\xc8\xd8\x1d\x8e\x3a\x3f\x3b\xe6\x2a\xc3\x1f\xf6\x2d\xf6\xa3\xb2\xee\x25\x96\x96\x9b\x99\x17\x04\xb3\x1c\x68\x99\x97\xab\x46\x28\xbc\x26\x60\xc6\x78\x72\x13\x2e\x85\xda\x0c\x4f\xcf\x56\x79\x65\xf1\x25\x4a\x8f\x43\x26\x92\xa1\x7b\xb8\x6c\xb3\xc1\xdc\xba\xac\x93\x95\x52\xf0\x9e\x50\xec\x5b\x0d\xe2\xef\x85\xe0\xac\x25\x3a\x41\x65\x65\x5d\xb5\xb5\xc4\x98\x03\x82\x1d\x85\x9c\x60\x96\x1e\x06\x1d\x58\x27\x8b\x82\x7d\xd4\xd3\xbc\x47\xf1\xc2\x2d\xe0\x94\x90\x6b\xdb\xbf\x3b\xad\xbd\xde\x22\xba\x24\x25\x58\x55\xeb\x86\xd1\xd7\xf3\x70\x82\x05\x93\x11\xdc\x07\x28\xeb\xea\xf2\x6c\x44\x73\xba\xd1\xfa\x9e\x61\x4b\x53\x3b\x81\x1b\x6b\xcb\x06\x50\xc0\x6d\x87\x9a\x52\x45\x78\x8f\x34\x01\xb4\x61\x97\x30\x07\x74\xa9\xaa\x73\xcd\x97\x8c\x05\x30\xc8\x1a\x53\xbd\xb3\xfc\x93\x24\x14\xb3\xe3\x04\x40\xdc\x12\x74\x41\xef\xf1\x60\x5e\x7f\xd9\xac\x8c\x63\x2e\x82\xbf\x1b\x45\x3d\x4f\x33\xa5\x7e\x4b\x67\xb0\xb6\xfc\xf6\xed\x55\x55\xb5\xf5\xa3\x00\xa1\x4a\x00\xd0\x38\x5a\x33\x75\x05\x25\xb0\x0e\xdb\x31\x2c\x6b\xfd\xd6\x4e\xdd\x3b\x53\x16\xd1\x9f\x95\x8c\x51\x76\x34\xf0\x13\xb0\x08\x93\x6d\x34\xe9\xb5\xe1\xe9\x28\x3a\x5f\x0f\xd7\x78\x33\x77\xc0\xe5\x09\x06\x41\xbb\x9d\x33\x8c\xf3\x13\x3a\xcd\x0b\x97\x1e\x53\x79\x04\xf1\x7a\xf9\x29\x11\xaf\xad\x72\xee\x97\xf9\xa8\x28\x3a\x16\xa7\xe2\x6a\xb4\x28\x41\x6c\x10\x17\xda\xe9\xb1\xa9\x9c\x4c\x33\x20\xad\x16\x3b\xdc\xfc\x32\x8b\xfa\xf9\xb8\xd5\xd7\xd2\x6d\x41\xd1\xef\x21\xa5\x20\x8f\x01"}, +{{0x5e,0x6f,0xda,0xc9,0x35,0x1a,0x63,0x7b,0x99,0xf3,0x3a,0x26,0x4e,0x12,0x87,0x69,0x7e,0x2a,0xba,0xb0,0xcc,0xa1,0x66,0x21,0x79,0x24,0x84,0xf5,0x60,0x6f,0x44,0xc1,},{0x57,0xe5,0xf8,0x8a,0xcd,0xdc,0x8c,0xde,0x7d,0xd0,0x7a,0x31,0x46,0xfb,0x1d,0x4f,0x7a,0x9b,0x63,0x83,0xa8,0xf6,0xb2,0xb8,0xd9,0xb0,0x7e,0xbc,0x3f,0xc4,0xdd,0x20,},{0x98,0x7e,0x32,0xe0,0x0a,0x8a,0x16,0x32,0xf4,0x7b,0x50,0x31,0x94,0x35,0x5c,0x98,0x0c,0xb2,0x2a,0xde,0xb3,0x26,0xb4,0xe3,0x11,0x5e,0xca,0xb0,0x4b,0x70,0x4d,0x18,0x6c,0xd9,0x2e,0x3c,0x3a,0xc7,0xb4,0xe2,0x93,0x6c,0xbd,0x07,0xcb,0x79,0x4e,0xc0,0xcf,0xe9,0x1a,0x97,0x87,0x2f,0xf2,0xb4,0x13,0x76,0xf5,0xf1,0x8f,0x55,0xb8,0x05,},"\x4d\x6c\xd3\xbc\x2f\x86\x26\x6b\x8b\xb1\xb6\x1d\x0e\x1c\xaa\x9b\xd2\xd4\xa1\x80\x36\x1a\xef\x3a\x18\xd3\x90\xb1\x0f\x7e\x86\x0f\x69\x7e\x24\x7e\xb6\xc3\xe5\x1d\x3b\x97\x6b\xf0\xca\x18\x3d\x01\xa6\x98\x80\xf1\x5c\x94\xb8\x75\x66\x8c\xa3\x0d\xad\xa0\x89\x5b\xed\xd4\xd7\x05\xa0\xe0\x33\x04\xd0\x63\xde\xa8\x7c\x7f\xde\xc9\x8b\x89\xc0\x6f\x13\x0d\xd5\xbd\x58\x6b\x54\xd9\xba\x73\x78\x26\xbb\x40\x5c\xd8\xac\x8b\xbc\x95\x00\xac\xda\x3c\x07\x46\x1d\x00\x94\x40\xaf\x0b\x25\x31\xe7\x2f\x3f\xf5\x01\x6a\xe2\xd8\x6d\x69\xb8\x7f\xb2\x73\xd1\xe8\xdd\x5f\x6a\x26\x4b\xee\xbb\x2f\x88\x59\x96\x74\x1f\xfd\xa2\x77\xa0\xfb\xf8\xef\x08\xf8\x1f\x22\xee\x59\x61\xd9\xd3\xfc\x93\x83\x62\xe1\xca\x12\x00\x4a\x91\xd9\xb5\xf7\xa6\x83\x3a\x6c\x22\x95\x5a\xc0\xcd\xa3\x39\x06\x71\x91\x0c\xbd\x51\xe6\x85\xfe\x09\x59\x73\xe4\x15\xfc\x2d\xb8\xad\xf1\x0b\x14\x7e\xc7\x08\x0c\x3b\x8e\xbd\x07\xd2\x1b\xb9\x55\x6d\xa8\x54\x30\xa2\x68\xee\xd8\x48\x6b\x1e\x31\xc9\x43\x13\xb0\x16\x49\xfe\x91\xb2\x22\xf8\x5a\xde\xe1\x5e\xb7\x77\x07\xd7\x8f\xfc\xb6\x60\x92\x65\x44\xd3\x3b\xe9\x99\x4a\x29\x76\x20\xdc\x7a\xed\x97\xf3\x92\x63\x90\x53\xf3\x88\xb0\xb3\xaa\x3b\xd0\xac\x5b\x03\x3c\xb4\x14\xbe\x52\x0b\x43\xdf\x68\x26\xb9\x76\x89\x0d\x0c\x53\xb9\x7b\x6c\x92\xe7\xd1\xa1\x57\x3d\x0c\x74\x94\xd7\x47\xe0\xca\xd9\xbd\x8e\xa5\x38\xd6\x2a\xd5\x98\x01\xad\x07\x16\xf1\x70\x19\x3e\x30\x09\xd9\x95\x9c\x55\xd2\xff\x64\x79\x9b\xd9\x59\x35\x9a\xbb\x94\xca\x97\x23\xb5\xff\xc2\x4c\x95\x07\xf8\xc5\xfd\x6e\x88\xea\xae\x7a\x70\xad\xd8\x4d\x74\x4c\xcf\x8b\x98\x36\x37\x88\xf0\xbf\xb1\xa0\x25\x22\x02\x57\x51\xe5\x34\x71\x0d\x40\xa2\xd3\x8a\x79\x11\x94\xeb\xa2\x93\xfd\x20\x46\xcc\x14\xdd\x38\x76\xd1\x68\xfc\x6e\x23\x6c\xbe\x14\x6d\x63\x69\xd2\x25\xbf\xa6\x7e\x53\x97\x98\x65\xf7\x88\x73\xa9\xfc\xf0\x3c\x18\x6f\xa8\x52\x1f\x0a\x55\x45\xac\xce\xe8\x0d\x1e\x55\x10\x72\x21\xe2\x1f\x0f\x22\x91\xc1\x43\xde\x02\x3e\x88\xd7\x33\x0c\xc8\x7d\x4c\x51\xff\x29\xa3\x09\x06\x05\xe9\x73\x94\x90\xc1\xdc\xee\x71\x34\x95\xf2\x31\xc2\xa3\x6b\x11\xab\x23\x55\x47\xfb\x63\x28\xf7\x47\x33\x6d\x9b\x1e\xf2\x5a\x8a\xb9\x9c\xed\xa9\x57\xb2\xdc\xce\xe4\x07\x5b\x0d\x03\x38\x1b\x94\xae\x18\xd0\x41\xea"}, +{{0xfc,0xff,0xf0,0x93,0x2d,0xc8,0x6e,0xa5,0x90,0x2a,0x8d,0x33,0x07,0x33,0x29,0x96,0x0c,0xd8,0x18,0x8a,0x07,0x5d,0xd0,0xbc,0xdf,0xa8,0x38,0x2c,0x20,0xb0,0xe7,0x8f,},{0x0c,0x92,0x05,0xa9,0x0b,0xbe,0x7f,0x2d,0x50,0x5e,0x17,0xfa,0x3d,0x08,0x0b,0x52,0x2a,0x1d,0x7a,0x15,0x2c,0xad,0x2d,0x85,0xd3,0x1b,0x34,0xa0,0x47,0x1c,0x0d,0x4c,},{0x37,0xdd,0xd8,0x3f,0x98,0xb0,0x57,0xb7,0xcb,0x32,0x08,0xa8,0x32,0xc5,0x8a,0xa9,0x06,0x94,0x56,0x3c,0x23,0x54,0x8d,0x43,0x22,0x91,0x38,0x0b,0x73,0x59,0x13,0x01,0xf2,0x74,0xb0,0x4c,0xee,0x2e,0xf7,0x8c,0x06,0xd9,0x6c,0x3d,0x9b,0x7c,0x17,0x52,0x1a,0xae,0x1a,0x8c,0xa5,0x0d,0x34,0x7c,0x09,0xc3,0xcf,0x70,0x3b,0xc8,0x83,0x0b,},"\x3d\x4b\x76\x12\x23\x73\xe2\x12\xa3\x46\xd1\x9a\x66\xbb\xfc\x4b\x62\x32\x92\x64\x9b\xd0\xce\x5c\xf6\xbb\x13\x56\x48\xbd\x01\xdb\x74\x03\xb3\xd0\xbd\xd1\x69\x7f\xf4\xe6\xe9\x08\x90\x41\x16\x75\x4d\x37\x0c\x40\xd7\x00\xcd\xb6\x64\xc4\x6a\x91\xdd\x84\xa3\x58\xb9\xd2\x38\x14\x43\xe6\x0f\x2c\x3f\x56\x40\x26\x1b\x6b\x85\x8b\xa8\xf8\x28\xb0\x97\x1f\x41\x22\xb2\x02\x88\xa2\x6b\xa2\x09\x0b\xa1\x4f\xd2\x76\x36\x0c\xc6\x86\x79\xcd\x84\x19\xae\x19\xc6\xd4\xdc\x7b\x66\x14\xc0\x6d\xf5\xe5\xc0\x51\x0e\x2c\xb6\x86\xde\x0e\xbd\x75\xe5\x21\x0a\x21\x55\x62\x58\x9b\x28\xc9\xcc\xc7\xd2\x72\xb9\x8b\xd4\xbf\x93\x49\x5e\xfe\x4f\xc5\xb7\x8d\xef\xec\xfb\xca\xa9\xfe\x12\x6b\xad\x30\xe8\x9b\x3a\x38\x9b\x42\x56\xf6\xa4\x8a\x76\xc3\x45\xde\x5a\x36\xa1\x44\x9f\x08\x34\x5b\x9a\x5e\x6a\x00\x1d\xa1\xff\x9c\xd4\x33\x70\x93\x48\xe9\xae\xfb\xc7\x8b\xa5\x2d\x3a\xb3\xb4\x69\x86\x93\x5e\xba\x8e\xcf\x81\xed\xc4\x3c\x5b\x2e\x3b\x5e\xb3\x8d\x9a\x16\x5e\x9e\x7f\x72\xf6\x17\x60\x54\x63\xbe\xdb\xa9\x73\xeb\xfd\xcd\xf2\xb0\x88\x9c\x71\x41\x2f\x8f\x85\x0c\x7a\x3b\x55\x18\xec\xd8\x9d\x2e\x25\xc0\xc1\xc3\x0f\x08\x5a\x0f\xfe\x54\x0e\xf9\xc0\xe8\x8f\xc7\xec\x4a\xf1\x94\x8a\x4e\x6f\x7a\x6e\x25\x6b\x30\x7a\x11\x27\xb7\x1b\xa6\x86\xef\xea\xdc\xa0\xe4\x86\x09\x47\xcf\x67\x4f\xce\xd6\xca\xf7\x31\x0c\xcb\xaa\x8d\x90\x47\xda\xed\x30\xfd\x55\x85\xd4\x1d\xde\xae\x4d\xf2\xfe\xd4\xb6\x22\x80\x32\xc3\xe4\xae\x23\x80\xe8\x7e\xc6\xcd\x72\xe4\xd7\x4b\x8b\x4c\x38\x13\xfb\x04\x33\x89\x39\x1e\x9c\x13\xf7\xd3\x3c\x3a\xab\x5a\x78\xfc\x4c\x6a\x63\x4c\x61\xa7\x0f\x02\xa9\x40\x54\x8d\xa1\x77\xc6\x5d\xf6\xab\x17\xcd\x96\x83\xf3\x7e\xa8\x21\xc7\x40\x88\x9d\x82\xe8\x8c\x83\x4e\x7d\x5d\xc1\x16\x62\xea\x78\xb1\x3c\x6a\x4b\x62\x18\xd3\x17\x84\x21\x9a\x47\x67\x59\x5b\x1a\x56\x21\x65\x25\xcd\x68\x93\x8b\x22\xbd\xb1\xf8\xc5\xa7\xf1\x70\x1a\xfe\xb9\x61\x88\x8e\x2e\x0e\xc0\xc8\x38\xcd\x62\x0c\xb7\xdd\x8a\x14\x93\xa0\x2c\xd5\x6b\x54\x51\x25\xe4\x70\x0c\x08\x89\xfa\x26\x44\xe6\x44\xa3\xaf\x53\x1d\x1c\xd6\xbc\x95\xe5\xdf\x91\x75\xf1\x37\xf2\x84\x08\xcb\x69\x9c\x7a\xe6\x6f\x65\xd1\xd2\x93\x0f\xac\x57\xca\x8a\x60\xe6\x31\x1a\x40\x78\x48\x8c\x9e\xa4\x04\x94\x8a\x9d\xeb\xeb\x9d\x5e\x10"}, +{{0xa1,0xe4,0xfc,0xfd,0xe0,0x44,0xf1,0xbb,0x0e,0x7b,0xbc,0x63,0x1a,0x83,0x1a,0x8d,0x07,0xe9,0x0a,0xe0,0x8a,0x96,0x6a,0xd6,0x27,0xb6,0x20,0xb1,0xe2,0x8c,0x42,0xcf,},{0x25,0x56,0x0f,0x31,0x16,0x8b,0xd4,0xb7,0x25,0x52,0xed,0xed,0xd0,0x8b,0xb6,0xbf,0x79,0xa9,0x40,0x63,0xc1,0xf1,0xe1,0xd3,0x04,0x86,0x9d,0xd1,0xce,0x04,0x9b,0x95,},{0xc8,0x00,0x15,0x27,0xbd,0x90,0x2c,0x15,0xc3,0xdd,0x5a,0xe1,0x81,0x80,0x52,0x5b,0x5e,0x82,0x02,0xbe,0x66,0x71,0x1f,0x82,0x88,0x5c,0x82,0x22,0xa1,0x5f,0x06,0x00,0x92,0xa2,0xa6,0xe2,0xf7,0xd7,0xe9,0x80,0x31,0x12,0x09,0x19,0x1b,0x32,0xb8,0xad,0xe4,0x8d,0x3e,0xa9,0x8c,0xf2,0x45,0xf0,0xfa,0xd6,0x2c,0x00,0x9c,0x5a,0x71,0x08,},"\x8c\x14\x54\xd4\xe0\x8a\x14\x01\x64\x6b\xf7\xa8\x85\x9e\x8a\x14\x5e\x85\xee\xeb\x40\xdb\x38\xff\x01\x69\x70\x96\x41\x21\x2c\x81\xb6\x73\x90\x74\x9c\x01\xa7\x98\x07\xf3\xcc\xad\xbb\xd2\x25\x6f\x36\xff\xc1\x80\xcf\x9b\xa4\x4b\xf4\xa7\x61\x2d\x44\x1c\x23\xb2\xe2\x5d\x33\xc4\x8a\x73\xe1\x6c\xe3\x57\x56\x27\x58\xad\xb0\x05\x53\xc3\x14\x2f\xb8\x17\x6b\x6a\xe8\xfb\x61\x0a\x60\xf9\x23\xb0\x91\x18\x14\xb1\x0f\x56\x79\x93\x6c\x36\x77\xb7\x0e\x84\x6e\x21\x8f\x58\x75\x67\xf2\x01\x9c\x7d\x28\x2a\x10\x7f\x3c\xc8\x47\x63\xad\xae\xc8\x89\x93\xc0\xcc\x50\x03\xe7\x7a\xf6\x0d\x67\xdb\x53\xf8\xcb\x72\x7a\xa6\x67\x2d\xe0\x04\x49\x8c\x3b\x3e\x22\x2a\xa7\x08\x2d\x91\xf9\x8a\x1a\x06\x83\x74\xc5\x10\xff\x53\xa5\xe5\x59\xcb\xe2\xd6\xc7\xc3\x44\x2d\x72\x38\x90\x7c\x81\x1d\x58\xaa\x7f\x5a\x46\xb8\x31\x12\x44\xf0\xdb\xe1\xb9\xc0\xe9\x44\xdd\xa1\xd8\x01\x08\x64\x94\x9c\x59\x39\x6c\x6b\x34\x6a\x11\xf3\xaa\x86\x6d\x6b\xce\xad\xfc\x90\x90\x38\xd2\x2e\xfb\xc8\xf1\xda\xc8\x10\xa9\xf2\xfa\xfc\xce\x7c\x03\x89\xeb\x0a\x56\xc0\xf6\x8c\xae\x24\xae\x3d\xdb\xdf\xf7\x11\x6d\x2f\xad\xeb\x9b\x0e\x75\x09\x53\x6f\xdc\x3b\x83\xe7\x13\x54\xda\x6a\x1a\xed\x16\x88\x74\x90\xdc\x2f\x4d\xf5\x7b\xba\xa7\x24\x45\x28\xfa\x30\x94\xb9\x9e\x86\x75\x81\xac\xef\x90\x62\x70\xb2\xcf\x4d\xed\xa6\xb8\xfd\x9d\xbb\x79\xad\xd7\xbe\xa8\xf8\x6f\xcb\x1f\x64\xdf\xd5\x0e\x38\x5b\x42\x09\xec\x0b\x1a\x9f\x6d\x2e\x51\x90\x68\x29\x7a\x2b\x5c\x40\x5c\x21\x6b\x4a\x2e\xd9\x83\xff\x69\xc5\x9b\x53\x0e\xff\xa6\x0c\x03\x67\x05\x12\x67\xdd\x2b\xbd\x1e\x86\xa9\xab\x5a\x11\x4d\xd4\xf6\x9b\x54\x0b\xfa\xbf\xe9\x7c\x04\x03\xb8\xfc\xbb\x27\x62\x57\x61\xed\xa3\xe2\xad\x8e\x62\x5c\xfe\x4b\x61\x5b\x70\x25\x53\x1a\x49\x89\x18\xc2\x4e\x02\xa0\x0e\x79\x7b\xba\xfd\x14\xf9\xd3\xf6\x82\x7e\x39\x00\x63\xc4\x36\x08\x06\x88\xd0\x37\xa6\xe2\x99\x3c\x56\xd3\xa8\xe9\x5f\x37\x5c\x10\x04\x0b\xf0\x4f\x03\x0c\x97\x26\x23\xd9\xe3\x80\x1c\x13\xb4\xec\x8d\x01\xcf\x18\x38\x55\xf5\x93\x5f\x10\xdd\xb2\xc5\x4c\x51\xc8\x0c\xbe\xd0\xc2\x4d\xb5\x6e\x1e\xd1\x48\x93\x1d\x89\x16\x1c\x5e\xa3\x7c\x2f\x97\x87\xf8\x8e\xf7\x33\x0e\x5d\xcd\x0e\x43\xd8\x1b\xfc\x8b\xf2\x3d\xdf\x79\x83\xcc\x1d\x73\x38\x43\xa3\x3c\xcb\x39\x5d\xfc"}, +{{0xbe,0xd1,0xbb,0xca,0xe1,0x86,0x43,0xd6,0xf6,0xaa,0xc3,0x4f,0x3d,0x9b,0x6a,0x14,0x78,0x39,0x4d,0x02,0xb9,0x31,0xcf,0xf0,0x06,0xd8,0x5f,0x21,0xb7,0xdb,0xc7,0x47,},{0x4f,0x52,0x8b,0x38,0x18,0x5a,0x42,0x4c,0x6f,0xde,0xce,0x46,0x51,0x1a,0x0c,0x29,0xb7,0xc0,0x4b,0x32,0xeb,0x04,0x83,0xab,0xb5,0x2d,0x5f,0x8e,0xb6,0xb3,0x52,0xeb,},{0x0f,0xc9,0x9d,0xd3,0xb9,0xa0,0xe8,0xb1,0xfc,0x6e,0x63,0x5a,0xf5,0xc6,0x40,0x06,0xb6,0x72,0x00,0xfe,0x95,0x8f,0x53,0xcc,0xe1,0xb9,0xb0,0x91,0xa4,0xe7,0x06,0x69,0xb5,0x93,0xf1,0x55,0x94,0xbc,0x08,0x42,0xe5,0x57,0x62,0x59,0xf9,0xa6,0x85,0x9a,0x0d,0xb2,0x2d,0x74,0x0f,0x9f,0x80,0x24,0xb5,0xba,0xf1,0xef,0x6f,0x95,0x8c,0x05,},"\xff\x7c\x64\x13\xe6\x18\xa0\x56\xde\x40\x1e\xe1\x0c\x40\xad\xe3\xd7\xc0\xe6\x86\x14\x95\xd9\x7c\x26\x89\xec\x6a\xbb\x69\xdd\x2a\xe7\x01\xfd\xca\xc8\xf0\x83\x31\xea\x5c\x5f\x5d\x80\x5b\x57\x89\xee\x5e\x24\x1f\xf4\xac\x8b\x96\x0f\x4f\x2b\x9f\xef\x6a\x72\x7f\xad\x86\xdc\xd4\x32\xde\x9f\xad\x6b\xa4\x5e\x00\xaa\x36\x87\xb0\xce\xeb\x2c\x0d\x43\x0b\x7d\x5f\xde\x63\xb4\xf6\xb9\x82\xc4\xf9\xe0\x3c\x43\x0a\xba\xd9\x04\x4d\x06\xdc\x49\xe8\x9d\xf4\x81\x40\x5d\x8f\xeb\xbb\x06\x53\xe9\x68\x69\x48\xaa\xd2\xd9\x07\x25\x44\xdf\x94\x24\xfd\x48\x7f\x4e\x24\xba\x7f\x24\x55\xdd\xec\x41\x05\x82\x8c\x39\x81\xbd\xdb\xb1\xb7\xfb\xdb\xac\x15\x59\x03\xe9\x60\xfc\xd9\x4c\x07\x16\xe7\x36\xf5\x19\x86\x7f\xbc\x52\xc5\x12\x60\xf5\x71\xd7\xed\xcb\x08\x1a\x23\x55\x0a\xd8\xc7\x0b\xb2\x68\x86\x4a\xb2\x76\xaa\x2c\xc2\xdb\xf6\x23\x83\xbb\x66\x03\x0e\xbe\x94\x35\x41\x74\xcc\xec\x2d\x2a\x90\x75\x78\x55\x64\x44\x50\x7c\xbf\x84\x88\xbb\x23\xc6\x24\x23\xa3\xa9\x8d\xa7\xcc\x96\x8f\x59\x9d\x3d\xc8\x4d\xca\x3a\xfa\xd7\xf1\x4e\xc3\x06\xe1\xdb\x53\x41\x43\x21\x6a\xa2\x2a\xd1\x80\x74\xc7\x19\x57\x08\x05\xea\x46\xbc\x86\xb7\x1a\x8f\xf5\x8e\x41\xe7\x3c\xb2\x9a\xd5\x75\x0f\xcf\xc9\xa1\xc5\x42\x92\xb6\x4b\x47\xec\x95\x38\xf5\x38\x16\xe3\x6e\xd0\xd0\xc1\xae\x5e\xad\x06\xd4\x77\xaa\x97\x5e\xce\xba\xf6\x2d\x90\x23\xb7\x7e\x50\xe7\xb6\xd4\xab\xda\xa4\x85\xea\x34\xec\x76\x6b\xeb\x1d\x9b\xa0\x3c\x9c\x06\x71\x86\xe2\xe3\x82\x66\xc6\xe2\x53\x1e\x97\x48\x02\x14\x63\x8a\x2b\xb3\x14\x31\xac\x20\x86\x79\x71\x55\xfc\x77\x5b\x3a\xad\x8d\x5a\x0b\x90\x4c\x38\x1e\xdd\x0c\x6b\xc2\x3c\x66\xa1\x90\x49\x55\xed\x45\x0a\x9c\xbd\x16\x45\x9c\x32\xf5\xca\x35\x4b\xbc\x2d\xa7\xb1\xa4\xd8\x14\xf1\xb8\x71\x0a\xad\xb2\xcc\xc4\xf3\x97\x75\x8b\x7e\x9d\x91\xf3\xa9\x1e\x58\x25\xab\x86\x82\xff\x5e\x41\x70\x2e\x07\x84\x1a\xc7\x69\x8c\x3d\xa9\xf5\x58\xed\xd0\x1f\x86\xce\x2c\x50\x6b\xf4\xc2\x14\x9a\xc9\xc1\x95\xa5\x9c\x7d\xd7\xd4\xec\xf9\x3c\x90\xb4\x42\x3b\x43\x50\x58\x8d\x41\x67\x2c\xed\xc8\x51\x0a\x7a\xd5\x3b\x4b\x7e\xdc\xaf\x23\xe4\x3e\x05\x66\x9d\x27\xa1\xfe\x97\xb7\x87\x30\xd3\xfc\x06\x0b\xd4\xed\xd9\x87\x2c\xff\xb9\x62\x85\x35\x1b\xef\x14\x8e\xf7\x83\xab\x39\x21\x16\xbd\x7b\x90\x7b\xad"}, +{{0xc7,0x18,0x82,0x3f,0x43,0xdb,0x22,0x17,0xc6,0x6a,0xb2,0x89,0x97,0x04,0x16,0x5d,0x20,0x85,0x73,0xde,0x60,0xf3,0x3b,0xc0,0xb9,0x33,0x8d,0x88,0x0f,0x19,0x3f,0xb5,},{0x29,0x40,0xb8,0x79,0xb6,0x3f,0x2c,0xb1,0xf6,0xe3,0xef,0x9c,0x9d,0x33,0x3b,0xa9,0x17,0x70,0xfe,0x18,0xcc,0x5a,0x34,0x7f,0xdf,0x12,0xb0,0xef,0xc5,0xca,0x2e,0xc9,},{0x4c,0x9c,0xdb,0x1a,0xd4,0x65,0x09,0x56,0x0d,0x87,0x1d,0x30,0x89,0xaf,0xb8,0x73,0x46,0x48,0x20,0x1b,0x10,0xac,0xc9,0x53,0xe8,0xb6,0x1f,0x2c,0xce,0x2d,0xba,0xe0,0xfb,0x9b,0x86,0x8a,0xc9,0x57,0x43,0x2b,0x72,0x22,0xdb,0xf7,0xe4,0xcf,0x0b,0xc7,0x53,0x09,0xbe,0xa3,0x60,0xb2,0x63,0xab,0xbd,0xe1,0x88,0x53,0x2d,0xda,0x25,0x04,},"\x05\x0e\x68\x77\xf6\x5e\xc7\x26\xee\xc7\x01\x86\x3f\xab\x14\x0b\x99\x4a\xa1\xe9\x2a\x48\x7d\xb1\xa1\x87\x01\x31\x20\x57\xdb\x44\xbf\xde\x70\x91\x1e\xc2\x6e\xaa\x28\x63\x2d\x03\x79\x4d\x54\x5d\xfc\xb2\xae\xd4\x34\x0c\xab\x7d\x09\x25\x95\xcd\x59\xed\x23\x99\x40\x43\xf5\x0b\xa6\x96\xe9\x80\x2b\xd6\x49\x90\x12\x13\x97\x28\x64\x57\xae\x69\xd7\x6c\xb8\xe3\x4d\x7c\x1a\xb2\x45\xcb\x07\xb1\xb4\x08\xf2\xbb\xbf\xdf\x33\xa1\xbd\xd5\x59\x63\x67\x02\xc9\x18\xf9\x82\xc2\xac\x02\x21\xf7\xf9\x4d\xb9\x1e\xde\xfc\xe2\x81\x18\x25\x9f\x89\xd9\x94\xda\xd5\xbb\x01\x3c\x67\x8c\x1c\x33\x8b\x65\x39\x6b\x15\xe8\x89\x9c\x16\x99\x21\xf2\x78\x85\x9c\xe0\xc8\x56\xd8\x89\xb8\xc6\x34\x18\xeb\xc5\x73\xd2\xd6\x25\xd5\xb5\x93\x88\x39\xf2\xb1\x69\xb6\x91\x6d\x8e\x40\xdd\xe7\x0d\x3b\x72\x88\x7a\xd2\x47\x8e\xf6\xfb\x12\x84\xfa\x0e\x4f\xc5\x24\xe3\xc6\xfa\x1d\xd2\x2b\xa6\xb8\x1d\xef\x82\x79\xf3\x82\xbc\xb4\x50\x48\x85\x1b\x17\xcd\x65\x9d\x59\x40\x9f\x57\x1f\xa8\xa9\x20\xa2\x09\x34\xd9\xdb\xe1\x02\x2d\x63\x58\x40\x96\x54\x00\x24\x0f\x87\x0a\xce\xff\xd5\xdb\x7c\x7d\xf0\x8a\xf8\x9e\x47\xe1\xb9\xe2\x0b\xb9\x9f\x96\xab\x07\x3e\xdf\x53\x69\x4c\x74\x82\x89\x0e\x36\x31\x34\x02\x17\xe6\x87\xab\x27\xc9\x84\xb6\x08\x25\x16\x94\x57\xd4\x35\xa5\x40\x9a\xd8\xe4\x2d\xa0\xaa\x63\xe2\x0c\x2b\xc6\x7b\xd8\xb9\xa2\x67\xf3\x96\x73\xa7\x7f\x7f\x31\x36\xdc\x5c\xb2\xd2\x49\x48\xdb\xe7\xbc\xd7\x12\x93\x18\xc6\x8c\x6f\xe9\x5d\xd4\xdd\x4f\xe9\x42\x28\x68\x31\xea\x53\x35\x2f\xbb\x25\x2a\x12\x88\xbc\xd8\x38\x92\x13\x56\x78\x5d\x07\x21\x34\xcb\x82\x0f\x62\x79\xcc\x71\x46\x1f\x43\x1b\xe9\xd3\x01\x47\x24\x32\x1c\x92\xfd\xc5\x76\x32\x01\x37\x70\x5c\xff\xb2\xc2\x36\x64\xb7\x05\xe9\xbe\x60\xae\x1a\x19\x0f\x3e\x34\x84\xf7\x00\x58\xe7\x02\x40\x7b\x05\x6d\x7f\xe5\xd3\x1c\xee\x9c\x2a\x6a\xc6\xea\xda\x35\x16\xab\xc5\x51\x72\x56\xdf\x12\x43\x78\x0a\x03\xbb\x00\xba\x00\xce\x24\x80\x76\xee\xca\x6f\xee\x91\xd5\xef\x9e\xb9\x07\xb8\x01\xaf\x09\x7f\x3e\x9e\xb2\x56\xbd\xcd\xe8\x1e\xfe\x4b\xaf\x81\x89\xb0\x39\x9e\x36\xf1\xea\xa3\xab\x62\x66\x17\xcf\x3b\x47\xdd\x89\xca\xf6\x9c\x64\xc5\xb8\xf6\x8b\xd9\x17\xfe\x03\xe4\x66\x85\x38\x46\x0a\x1b\xe8\x8d\x9a\x84\x6c\xef\x39\x93\x46\x27\xd4\x74\x73\x4f"}, +{{0x25,0x43,0xd1,0x66,0xc9,0xf5,0xf7,0x42,0x7f,0xf3,0x03,0x4f,0xfa,0x81,0x03,0xcb,0x11,0x7b,0xf4,0x72,0x33,0x1a,0x73,0xd9,0xa2,0xf1,0xbc,0x0a,0x02,0xa6,0xff,0x1b,},{0x42,0x67,0x8c,0xf3,0x85,0x70,0x21,0xaa,0x55,0x67,0x70,0x6d,0xb0,0x31,0xe7,0x92,0x71,0x5c,0xca,0xf8,0xab,0xb0,0x2a,0x04,0x2b,0xad,0x17,0xdb,0x3d,0x5f,0xa1,0x03,},{0x20,0xea,0x93,0x68,0xa2,0xcc,0xd0,0x8b,0xf9,0xcb,0xf4,0x8d,0x4a,0x2f,0x7d,0x03,0xf0,0xdb,0x08,0xa5,0x4b,0x87,0x67,0x9c,0xda,0x03,0xe2,0x96,0xaf,0x9e,0xf3,0x78,0xbe,0x9b,0x8f,0x04,0xb4,0x06,0x5b,0x00,0x9d,0xa6,0xdb,0x01,0x6f,0x3d,0xf9,0xdb,0x64,0x82,0x58,0x73,0xe2,0xfb,0x4d,0xe3,0x04,0x49,0x91,0x5c,0xd7,0x3c,0x46,0x09,},"\x74\x6d\x7a\xbf\x0b\xfb\x26\x62\xc2\x5a\xb5\xc5\xe4\x61\x2c\x30\x6f\x16\xd1\x3e\x44\xd0\xdb\x39\x4a\x00\x15\x67\x6c\xe6\x09\x78\x4f\x03\x23\xda\x1d\xfa\x94\xd2\xb2\xf1\xf6\xe0\x24\x44\xa9\x36\xd0\x19\xb1\x43\x02\x1f\x73\xc7\x9d\xf9\x30\x9e\x7b\xdf\xf3\x9d\xae\xec\x4c\xac\xa0\x0c\xba\x4e\xf3\x1c\x83\x10\xc1\xa0\x8e\xf4\xb3\x6f\x81\xc3\x77\x84\x6b\x5b\x90\xac\xd4\x11\xaa\x67\x1e\xd7\xaf\x27\x8a\x24\x22\x9b\x78\x93\xc1\xb4\x15\xd7\x98\x88\xd7\x63\x7f\x5c\xb5\xc9\xc6\xc6\x31\xae\x5f\xfa\x29\xf1\x34\x0e\x44\x40\x96\xab\x53\x36\x17\xfd\xcb\x80\xff\x81\xda\x0a\x7c\x6c\x14\x2e\xe0\xfe\x5e\xa8\x2f\x68\xcc\x3e\xa3\x8b\x56\xf2\x72\xb0\xd8\x0f\xd5\xf4\xf5\x5c\xa9\x34\x8c\x16\x18\x81\x43\x58\x13\xc3\xfa\x9f\xff\x66\xa2\xee\x6d\x5b\xd3\xed\xba\x0d\x2f\x9a\xa7\x4b\x1c\x44\xbf\xd0\xe6\x46\x78\xd3\x71\x51\x24\x96\x3a\xc5\x75\xff\xb0\x9e\xe1\x64\x37\xda\x48\x4b\x3b\xa5\x8e\x5a\xeb\x8e\xd8\xc5\xc0\xf4\x7b\x59\x90\x8f\xe5\x80\xf3\x7e\xc1\xde\x26\x6b\x29\x5d\x6b\xe8\x5e\x62\x35\x8e\x9b\xbd\xc7\x89\x64\xfb\x83\x7e\xea\x29\xfd\xb7\xde\x86\xcc\x56\xf4\x8b\xd9\xa3\xe6\xe2\xbe\x51\xd8\xa1\xdc\xff\x3c\xa4\xd5\x6e\xa9\x34\xc6\x82\x77\x2b\xca\xfb\x51\x49\x7b\xe5\xd0\xf2\xa2\x3d\xd4\x97\x0c\x02\xc4\x4c\x09\xad\x89\x7b\x42\x41\xac\xd7\xd6\xab\x12\xd8\xf0\x0c\x9a\xad\xc3\x34\xb4\x31\xfe\xc5\xbb\x69\xa2\x85\xb7\x55\x0a\x63\x9e\xce\x96\x95\x26\x82\xb7\x33\x4b\x68\xc6\x51\x52\xe8\x93\xb1\xc8\x10\x0c\x69\x4d\x8c\x5c\xfe\x26\xac\x03\xc1\xf3\x91\x4e\x65\xc8\x4f\x0e\x77\x72\x90\xc7\x6f\x6a\xcc\xe3\x40\xbf\xf6\x6d\xa7\x22\x0f\x73\x17\x5e\x94\xaf\x52\xf9\xf1\x9e\x61\xf8\x0d\xc1\xf3\x57\x16\xb3\xf4\x8d\xfa\x50\x25\xc9\xeb\xef\x73\x82\xe0\x55\x83\x0f\x5b\xbf\x15\xc6\xf6\xa9\x50\x32\x90\x9c\x89\x2c\x0f\x89\xc8\xc1\x5f\xc3\xea\x40\xa2\x0e\xe1\xa4\x52\x9b\x52\x19\x51\xdf\x44\xd9\xd7\x9d\x74\xe0\xc4\xc2\xe0\xfe\xd8\x49\xb8\x78\x52\x06\xdb\xe6\x2b\xfa\x2c\xa2\x10\x87\xa9\x12\xe9\xb1\x84\x55\x16\x59\xcd\x8a\x58\x7e\x95\xb0\x43\x17\x19\x25\x96\xbb\x0b\x7f\xc9\xf7\xbb\xb6\xee\x04\x9c\x8b\x02\xfd\xd7\x58\xb4\xe7\x98\x82\x07\x3b\x71\xea\xab\x18\xaa\x29\x37\x01\xc1\x7d\x55\xf9\xec\x46\xc5\x2d\xe1\xe8\x86\xb6\x75\x0f\xb0\xfb\xcd\x64\xf4\x56\x8a\x21\x0a\xe4\x51\xe9"}, +{{0x85,0xe0,0xa8,0x0f,0x3b,0x30,0xc2,0x01,0x99,0xd9,0xc1,0xec,0x66,0x2e,0x39,0x2f,0xdf,0x15,0x46,0x37,0x73,0x43,0xf1,0x24,0x71,0xdb,0x2a,0x03,0x10,0xa7,0x05,0xbd,},{0x54,0x0a,0x3a,0x1d,0x83,0x67,0x2e,0x49,0x50,0x34,0xcf,0xf4,0x08,0xe1,0xfb,0xe8,0x2e,0x53,0x8f,0x09,0x17,0xe8,0xa1,0xc7,0xd1,0x7a,0xab,0x58,0xe0,0x43,0xd3,0xc6,},{0x18,0x5e,0xf2,0x24,0x6a,0xba,0x2b,0x1a,0x56,0x80,0x32,0xc7,0xdf,0x93,0xc6,0x67,0x79,0x9b,0x8a,0x52,0x1a,0x6f,0x97,0x32,0x1e,0xad,0x58,0x66,0xb4,0xcb,0x9c,0x65,0xb6,0x4a,0x1c,0x40,0xb9,0xb6,0xa9,0x10,0xe7,0x42,0xdc,0x32,0xa7,0xe6,0x6d,0x11,0xea,0x45,0xdb,0xea,0xac,0xae,0x9f,0x09,0x51,0x1b,0x81,0x01,0xf8,0xaf,0x0c,0x0c,},"\xd2\x80\x2f\x15\x96\xf8\x38\x3b\x64\xed\xbd\xc5\x94\x06\x0b\xff\x0e\x70\x13\xd5\xb7\xc8\x5d\x83\x0f\xae\x11\xae\xb3\x4d\xd5\x94\x95\x9d\xa6\x24\xe0\x44\x47\x4c\x54\x09\xc0\x05\x96\x73\xbd\xc6\x1a\x67\x1e\xf5\xb0\xb8\xa2\x6f\x30\x10\x0b\x3b\x73\x96\x8d\x8e\x4d\x83\xa7\x2f\x25\xb5\x13\x44\x8d\x2f\x6b\x6a\x44\x75\xfd\xf8\x9e\x31\xca\x92\x68\xa3\x07\x05\xaf\x3f\x64\x9e\x3f\xe0\x1d\xde\x0c\xf4\xb2\x9e\xc2\xda\x54\x36\x44\x4a\xf0\x91\xd6\x27\x30\xac\xd4\xca\xb6\x08\xf0\xdf\x26\xf0\x88\xc6\xb9\xb9\x67\x37\x94\xf0\x74\x7d\xab\x2c\xe1\x90\xf9\x05\x92\x00\x9f\xdc\xe5\x46\x4b\x36\x61\xb7\xe8\x62\x0b\xad\x65\x50\x9a\x6c\x75\x2b\x72\x7a\x8d\xc8\xd3\xef\xa5\x84\xfd\xe0\x27\x2c\x45\x1d\x65\xa9\x3b\xec\xe4\xf5\x9d\x87\xdc\x6f\xbe\xb4\x51\x40\x1e\x3e\x2e\x00\x3c\x6a\xca\x7b\x3d\x3f\x92\x71\x91\x50\xc6\x77\x8f\x01\x5a\xff\x2a\x59\xbf\xbf\x2e\x91\xb2\x1b\x0a\xd6\x87\x75\x36\xeb\x54\x56\x70\x59\xf5\x87\xf5\x4d\x4e\x2a\x6f\xe1\xfd\xcd\xd6\xa7\xfd\xcb\x85\x15\x57\x5b\xcc\x37\x05\xd7\x78\x59\x35\x2f\xa0\xb0\x44\x16\x6e\x3c\x31\x88\x46\xa5\xdf\x33\x56\x30\x03\xcb\x20\xbc\x94\x2d\x30\x39\x10\x93\xe8\xd5\x83\xe8\xe6\x4d\xec\x57\x0e\xe1\xc4\x13\x87\x62\xf6\x48\x38\x98\xd3\x2e\x20\x32\xbd\xe9\xbb\xe0\x7e\xc2\xc3\xeb\x47\xd9\x68\x76\xf0\xfc\x0f\x02\x4d\x75\x3c\xeb\x34\xff\x84\x80\xb4\xcf\x57\x62\x30\xbb\x82\x63\xdd\x80\xee\xac\x66\x2e\xba\x31\xd8\xa6\x1f\x30\x9e\x17\x5f\x4c\x01\x43\xe2\x8a\x85\x2b\x1c\x30\x61\xce\x78\xef\xbd\x16\xa2\x87\x3d\xd2\x81\x98\xa4\x6e\xc0\xa8\x00\xb3\x0d\xc8\xa9\x3b\x8d\xbb\x81\xa7\x30\xde\x45\x0b\x86\x4d\xea\x76\x80\xe5\x09\xd8\x00\xe8\x23\x29\xc2\x61\xb0\x7e\x72\xaa\x80\xee\x16\xec\x37\x5d\xdb\xbb\x6f\xe3\xd8\xd4\x7b\x0e\x3c\x5a\x9f\x23\xc4\xd2\x0b\x72\x4c\x1d\xf5\x98\x35\xd8\x30\xdd\x22\xd1\x04\x03\xd8\xf1\x5c\x10\x2c\x4b\x37\x69\xc4\x16\x66\xc3\xab\x8c\x7e\x80\xb9\x40\xd0\xbb\xb5\x86\x52\xd1\x0a\x3f\xfe\x8d\x44\xdf\x10\x12\xa3\xdd\xc4\xe1\xc5\x18\xd4\x90\x19\xf7\xc5\xd3\xd9\xf9\x5e\xd9\x3a\x31\x97\x46\xd1\xe5\x43\xff\xa6\x9e\xdb\x49\xbb\x34\x39\xf8\xa3\x25\xac\x6a\x0c\xb4\xed\xd6\x5b\xa6\x00\x80\xa0\x44\x7c\x67\x4f\xaa\x72\xd8\xae\xbd\xb5\xd2\x54\x4f\x2f\x2d\x84\x7c\x72\xc2\xdf\xa6\x05\x7a\x69\x0a\xdc\x5c\x44\x1a"}, +{{0x82,0xa2,0xc6,0x49,0x3f,0x11,0xba,0x80,0xe4,0xb8,0xb3,0xb4,0x38,0x41,0xbe,0x97,0x0e,0x2a,0x10,0xa9,0x4d,0x22,0x49,0xd8,0xac,0x6f,0x54,0x14,0xcf,0x5a,0x3c,0xb5,},{0x4c,0x2e,0xe0,0x1c,0xde,0xa0,0x7d,0xb3,0x63,0x5f,0x5d,0x4c,0x10,0x82,0xb9,0x2f,0x29,0x8d,0xeb,0x17,0xd0,0xf9,0x05,0xdf,0x71,0xb6,0x6f,0xb2,0x27,0x4e,0xae,0x99,},{0x68,0xa9,0x1d,0x4f,0x8d,0x24,0x1c,0x1d,0xef,0xbd,0x5c,0xa9,0xe9,0xe1,0xed,0x82,0x74,0x41,0x95,0x06,0x75,0x1c,0x96,0x79,0x47,0xb1,0x0d,0x50,0x11,0x8b,0xbf,0xab,0xc7,0x65,0xff,0xd7,0xb3,0x1a,0x01,0x67,0xc4,0xfd,0x8b,0x11,0x75,0x33,0x24,0x12,0xdf,0x19,0xd8,0xaa,0x1a,0x90,0x95,0x90,0x86,0x13,0x20,0x92,0x3d,0xbc,0xb2,0x04,},"\x09\x85\x4d\x13\x68\x49\x50\x41\x9e\x0b\xb1\x64\x64\xe0\x99\x88\x90\x5c\x02\x17\x18\x3a\xa1\xe4\x8a\xdb\x14\x7b\xfc\xc2\xeb\x57\xc2\x30\x0b\x0d\xfc\x39\xd4\x89\x66\x55\xa5\x7a\xe2\x04\x15\x40\x8b\xb5\xf2\xc2\x38\x01\x39\x55\xf0\xa4\xfc\x78\x2e\x0c\x99\x3f\xe4\x2c\xb0\x8c\xd8\xcf\x41\x5c\xcb\xd6\xcf\x1c\xee\x2e\x80\x97\xf0\x4e\x8f\x09\xae\x5d\xa5\xf4\x15\xb1\x6c\x2c\xb3\x0c\xb2\xab\x66\x52\xba\x50\xeb\xbc\xae\x4a\x59\xe3\x1f\xe1\x1e\x7e\xf3\x69\x9c\xa9\x0a\xaf\xa5\x86\xbb\x24\x2c\x89\xcd\x2e\x33\x2b\x2b\xfa\x2f\x81\x42\xac\xca\xf4\x36\xf8\x9b\x64\x53\xbb\x48\x05\xa1\xe7\xf3\xab\x62\x70\xf0\xda\xf8\x93\x89\xe7\x17\xd1\xb7\x01\x75\xec\x57\x07\xc8\xf5\x12\xc4\x0a\xb9\x24\xc4\x57\xe9\xf0\x91\x47\x91\x75\x0d\xc2\x92\xbb\x27\xd6\xf6\x3b\xa8\xcc\xf5\x4b\x90\xd3\xeb\xa7\xf1\x9e\xb3\x00\xd9\xeb\x8f\x3b\x72\x03\x2b\xa9\x30\x37\xf5\x52\xb4\x09\xb5\x80\xa5\xf6\x51\x16\xfa\xff\xe0\xfd\xfd\xc6\xdb\x38\x81\x38\x6c\x3c\xbc\x16\xb6\x7e\xb2\x57\x63\xd7\xae\x3a\xac\x0b\x85\xaa\x1e\x9a\xa2\x2e\x49\x59\x60\x9d\x43\x81\xe4\xb6\xd7\x15\x9f\xf3\xe3\xb2\xd3\x7b\x64\x0f\x88\xcf\xbe\x4f\x8a\x77\xf8\x01\x64\x57\x22\x8b\xa6\xd3\xaf\x5c\x4e\x33\x12\x5d\x48\xbc\xfc\xf3\x67\x8c\x16\x3b\x69\x8e\x52\xe8\x56\x17\xab\x1a\x75\xff\x20\xc6\x90\xab\x07\x15\x5e\xe7\x57\x59\x85\x78\x07\x2d\x4a\x09\xdf\xc6\xc6\xc0\x94\xec\x04\x85\x67\xd5\x13\xce\x2b\x18\x34\xe1\x63\xdf\x15\x45\x31\x9d\x80\x61\xe0\xe5\x7f\x58\xef\x04\x1b\x7b\xff\xc4\x96\x6a\xc1\x66\x03\x31\xb9\x7a\xbb\xc9\x7b\xe2\x1a\xe2\xbc\x58\xc6\xc3\x27\x4a\x8a\xda\xd5\xfd\x2c\x3b\xc1\x6b\x92\xe1\xf8\xde\x87\x7b\x6a\x26\xf0\xc6\xab\x71\x62\xe8\xaa\xb9\x3a\xf8\xd8\x59\x18\xc1\x3d\x3e\x23\x5a\x27\x37\x48\xc6\x2f\x0d\x22\xcb\x1c\x93\xe1\x34\xa4\x95\xb1\xb5\xef\x8f\x1a\x11\x34\x51\x2d\x53\xb7\xa2\x11\x26\x31\x77\xf7\xa6\x0b\xdf\x47\x46\x91\xf2\x24\xa3\xb5\xba\xc4\x00\x6d\xb3\x45\xca\x67\x25\xf5\xee\x70\x3e\xca\x0d\xea\x10\xd7\x12\x67\x6f\x63\xef\x3e\x53\x7e\x63\xab\xd2\x60\x8c\xb4\xfb\xe2\x00\xe1\x5f\x18\x20\x91\x53\x49\x60\x72\x90\x80\x44\xc9\x5a\x4e\x9c\x53\x56\xaa\xe8\xed\x5f\x09\x59\xea\xc0\x91\xe2\x27\xa0\xb8\x1f\x58\x03\x27\x6b\x3b\x3b\xf4\xb6\x86\x5a\x55\xfc\x67\x82\xf6\x2e\xa6\xd6\x39\x90\xf9\xbe\xfe\x01"}, +{{0xe5,0x5b,0x34,0x3a,0x0f,0xa1,0xfb,0x74,0x71,0x89,0xcb,0x00,0xdb,0xc3,0xa6,0xaa,0x2d,0xcf,0x5b,0x86,0xe5,0x7d,0x76,0x93,0xf3,0x07,0x42,0x03,0x89,0x76,0x11,0x53,},{0x23,0xa1,0x44,0x60,0xea,0x98,0x3c,0xf9,0x97,0xc7,0x82,0xeb,0x45,0x82,0xab,0x3c,0x8a,0xa6,0xdd,0xe5,0x33,0x25,0xb9,0x77,0xb7,0x8e,0x33,0xd2,0xdc,0x5f,0x27,0xaa,},{0x07,0x26,0x6c,0x18,0x65,0x0e,0xcf,0x06,0x32,0xe2,0x25,0x62,0x4e,0xc4,0xc9,0x7f,0xc3,0x87,0xdc,0x37,0x46,0x87,0xa6,0x19,0x56,0xdc,0xcc,0xe7,0x28,0x94,0xee,0x13,0x8a,0xab,0xc8,0x0c,0xfc,0x90,0xc9,0xee,0xa6,0xdd,0x4c,0x59,0xaf,0x45,0x02,0xee,0x29,0x63,0x5a,0x92,0x88,0x07,0x86,0x67,0x8b,0x14,0xa3,0x93,0x1a,0x69,0xf9,0x07,},"\x36\x28\x9b\x5e\xaf\xf2\xa8\x5a\x7c\x6d\x57\x5b\xd1\x5e\xa5\x94\xb2\xfd\x85\x10\x87\x4a\x46\x9b\x52\x10\x91\x63\x69\x6d\x85\xb6\x8c\x5b\x21\x1d\x29\x64\xef\xdc\x66\xe6\x25\xab\xe8\xaa\xfe\x4c\xd9\x22\x0c\xdb\x34\x11\x07\xff\xa8\x27\x6e\xd4\xb3\x70\xfe\x37\x6c\x14\x82\x68\x71\x67\xdb\xc8\xf7\xb2\x05\xa3\xf3\x30\x1a\x16\x64\xd9\x07\x28\x77\xd9\xf9\x8b\x8f\x69\x83\x13\x01\xdf\x99\x94\x71\x7f\xc8\x89\x69\x24\x23\x91\xd9\xb0\x51\x7d\x6e\xfb\x27\x17\x01\xea\xb3\xf4\xa9\xb1\x20\x42\x13\xe8\xcd\x13\xf9\xd0\x99\x04\x8b\x82\x07\x56\x2f\x2e\x4e\xbc\x65\x3c\xc6\x5e\x9d\x55\x12\xd6\x5b\x41\x02\x2c\x79\xb4\xeb\x37\x29\x87\x69\xae\xaa\x6e\xfe\xd6\x9e\x9a\x8c\xb4\x45\xc7\x01\x22\x74\xde\x62\xf5\x09\xf4\xe4\x81\x4a\xdc\xbf\x44\x53\xb4\xfa\xb8\x5d\x7c\x8f\xd8\x45\xe0\x08\x30\xef\x5b\x7b\x1e\x63\xc6\x76\x13\x98\x4c\xae\xfe\x91\x5a\x54\x8e\x18\xe5\x05\x62\x2c\xb2\xb3\x92\x99\xf4\x27\xf4\xd8\x39\x83\xba\x2a\xa0\x0d\x53\xbe\xe1\xf5\x9a\xec\x83\x18\xc5\xea\x34\x5d\x29\x42\x52\x36\x97\x92\x76\x2a\xdd\x3e\x56\xfc\xfa\x6e\x77\x97\xf0\x28\xc7\x99\x47\x90\x45\xed\xb2\xe2\x05\xeb\x6d\xd6\xca\x04\xee\xe5\x6f\x94\x96\xd2\xbf\x26\x09\x93\x57\xc9\x73\x83\x5b\x99\x36\x02\x49\x11\xe4\x65\x5d\x3e\x22\xc8\x11\xc8\xd4\xdb\xd1\xb0\x4f\x78\x97\x3f\x07\x75\x23\xa3\x89\xb6\xf2\x8f\x6f\x54\x21\x61\x42\xcb\x93\xe3\x3d\x72\xb4\xa5\x05\x2d\x27\xe4\x91\x1e\x41\xe6\xce\xc7\xbe\xbe\x1b\x0a\x51\x13\xe6\xb7\x0b\x47\x9d\x2a\xbe\xed\xf6\x9b\x75\x64\xe5\xa5\x73\xb3\x52\xd1\x6c\xec\x89\x07\x01\xbb\x38\x3d\x3f\x66\x56\xed\xa0\x89\x2f\x8c\xcc\x70\x94\x0f\x62\xdb\xe5\x28\xa6\x5e\x31\xac\x53\x88\x26\xc1\x38\xac\x66\x52\x4e\x33\x16\x37\xba\x2d\x37\x73\x03\x58\xe6\xc7\x32\xcf\xf8\xfe\xe9\x40\xaf\xd2\x2c\x39\xae\x38\x1e\x5d\x88\x26\x73\x9b\x23\xfd\xc1\xb8\x0a\xea\x5a\x62\xa2\xcf\x0f\xf1\x52\x5e\x44\x6c\xf3\x10\x46\x19\x50\x51\xd5\x85\x03\xee\xd1\xbe\xfd\x79\x3e\xea\xe1\xd5\xd1\xb6\x2a\x5c\x98\x45\x15\x7a\x09\x5c\xdc\x08\xa1\xd7\x7b\xa4\x7e\x84\xa5\xa7\x39\x98\x0f\x0f\x5b\xe7\xaa\xec\x9a\x21\x5b\x20\x4b\x4b\xb7\xcb\x1b\x38\x6d\xed\x58\xd7\xaa\xf7\x28\x53\x41\x90\x7c\x63\x33\x6e\xe3\xe6\xef\x07\x7a\xd1\x11\xb9\x74\xe7\x50\x4b\xd9\x89\xf5\x66\xfd\xa1\xb1\xb5\x9a\xba\xa9\x1c\x78\xbb\x40"}, +{{0x39,0x73,0x03,0x8f,0xa2,0xef,0x6a,0x27,0x8d,0x3c,0x1c,0xff,0x9a,0x22,0x56,0x69,0xe4,0x65,0xa6,0x9d,0x07,0x50,0x50,0x3d,0xe7,0x48,0xc0,0x02,0xdb,0xf9,0x27,0x8a,},{0xc7,0x5e,0x77,0xc7,0x81,0x49,0xd9,0xd2,0xdb,0xc2,0x63,0xdd,0xf8,0xac,0x4d,0x65,0x4d,0x1f,0xf4,0x55,0xcb,0x18,0x97,0xe1,0xc3,0xce,0x31,0xb9,0x4c,0xfe,0x32,0x10,},{0xfc,0x0c,0x54,0x53,0x83,0x9e,0xa9,0x92,0x96,0xff,0xfa,0x50,0x1d,0x58,0x36,0x66,0x28,0xdf,0x89,0xf6,0x16,0x76,0x69,0x42,0xd5,0x04,0x0a,0x05,0x60,0x56,0xda,0xb1,0x8b,0x44,0x05,0xc0,0x4a,0xbf,0x90,0x59,0xc3,0x08,0x68,0xd7,0x9c,0x93,0x6c,0xcc,0xc8,0x4c,0x4f,0xbd,0x6f,0xd3,0x0b,0x60,0xf8,0xbc,0xbd,0x7a,0x66,0x40,0x42,0x02,},"\x33\x92\xe0\x2f\x3c\x84\x66\x1e\xaf\x81\xa5\xff\x04\x35\x7f\x21\x2e\x92\x36\x1c\x5c\x22\x07\x39\xd9\x6b\x4d\x3d\x9c\x22\xd1\x8d\xf4\x8b\xe6\xb5\x51\x26\xf5\x81\x60\x1f\xfe\x0d\xa6\x3f\x38\xe1\x9c\xbb\x12\x72\x6c\xa0\xa6\xaa\x32\x55\x67\xa0\x03\xa7\x84\x9d\x06\x78\x39\x92\xeb\x9e\xb9\x28\x53\x29\x7d\x72\x28\xdb\xa9\x80\xb2\x50\xbb\x11\x0f\x63\xd0\xb8\x46\x70\xe5\xec\xb3\x19\xcb\xfd\x61\x27\x8f\x1f\x4c\xab\xf1\xfc\xb3\xf7\x01\xf1\x2f\x6e\xf8\xd3\xcc\x42\x82\xfc\xbe\x58\x9e\xb5\x65\x95\x03\xa2\xdd\xd8\xbb\xa3\x8e\x5e\xff\x09\x2d\xfa\xf5\x39\xfd\x80\x4f\x21\xf7\x3a\x90\xad\xf5\x69\xa0\x0b\xf9\xd2\x5a\x9a\xd3\xa6\x33\x09\xcc\x60\x93\x14\x24\x71\xa4\x78\xf0\xb8\x99\x22\x86\xde\x02\x3c\x68\xef\xd4\x99\x87\xec\x27\x0b\xd9\x46\xf6\xdb\x48\xf6\x84\xf1\xc2\xad\xee\xe2\x6d\x68\xdc\xe9\x5a\x55\xe4\xcb\x27\xbc\x60\x52\x30\x80\xdf\x6b\xa2\xb1\x99\x99\x6b\x1f\x1d\xa6\x92\x0d\x15\x59\xf7\x9b\xfd\xe9\xfa\x1a\x02\xde\xae\x14\x80\xc7\x6f\x94\x7f\x9d\x21\x3f\xc4\x3b\xb2\x88\x0a\x1b\x4d\x03\xbb\x14\xf5\xb0\x44\xa0\xfd\x83\xce\x04\x92\xf4\x9c\xa3\xaf\x25\x21\x1b\x86\xfa\xa5\x73\x5a\xd7\xfe\xaf\x31\xa1\xa7\x49\x1e\x70\x8b\x41\x82\x9d\x68\xe3\x24\x14\xf6\x83\x52\xb7\x1d\x1c\xd2\x3c\x8e\x12\xfb\x02\xda\x71\x14\x84\xf6\xef\x97\x52\x8a\x00\xd2\x4f\xcf\x91\xd4\xe0\x6e\x9b\xad\xae\x9a\x44\xdb\xdb\x3f\x77\x80\x41\x76\x8d\x86\x37\x04\xd7\x36\x81\x04\x00\xe7\xf2\x93\x1e\xfb\x85\xc8\x72\x4a\x59\x34\x26\xaa\x2a\xf1\xec\x5b\x66\x4f\x85\xc2\x25\x48\x96\xfd\xcf\x31\x6d\xb0\x92\x4e\x11\xaa\xe8\xd6\x83\xe9\xa0\x21\x92\x9d\x0a\x9d\x6f\xec\xb4\x59\x4b\x1b\x3f\xbc\x16\xb1\x76\xd2\x9d\x1e\xfb\x18\x19\xa4\xa4\x23\xfb\xe0\xca\x05\x59\xc5\x7e\x9e\x54\x49\xf1\x4b\xce\x91\x36\x0d\xaf\xda\x6a\x42\x7c\xe4\xa0\x99\x3d\xd0\x30\x82\xdd\xee\x06\x65\x33\xf6\xd3\xbd\xa5\x66\x0f\x42\xfd\x77\x57\x69\x0d\x67\x05\x98\xec\x70\x96\xf4\x75\xa0\x1a\x51\x99\x50\x34\x1a\x83\x1f\xc9\xa2\x81\xc0\x94\x7a\x86\x3f\x1f\x6e\x03\xbb\xa7\x74\xde\x77\xad\xc2\x3f\xbe\x52\x5c\xae\x6c\xcc\xe4\x7a\x0e\xc4\x97\x9e\x8b\xec\x86\xf3\x32\xfc\x6a\x57\x36\xe3\xb9\x8f\xb3\x32\xe9\xe8\x24\x4e\x68\xa1\x00\x45\x5e\x64\x99\xba\x8d\xba\xe9\x8b\x92\xba\x3d\x9c\x6b\x4f\xf9\x80\x34\x3e\x4c\x8e\xf4\xd5\xa4\xaa\xcf\x8b\x1a"}, +{{0xc7,0x1c,0xc1,0x0a,0xd2,0xd4,0x43,0xe0,0x25,0xad,0x06,0x25,0x68,0x6b,0x12,0x35,0x03,0xe5,0x90,0x19,0x3a,0x2b,0xc8,0xcc,0x57,0xa7,0xb9,0xb4,0x15,0x8d,0xe6,0xcb,},{0xfc,0x06,0xac,0xaa,0xb5,0x3a,0xd0,0x8e,0x97,0x62,0xdd,0x11,0xcd,0x21,0x22,0xb3,0x15,0x99,0xbd,0x25,0x98,0xce,0x6f,0x24,0x87,0x95,0xe7,0x32,0x21,0x9c,0x2f,0xc7,},{0x2e,0xb3,0x3b,0xc2,0xd5,0xde,0xb7,0xf3,0xa2,0xdc,0xc3,0x77,0xb0,0xc6,0xa8,0x62,0x13,0x4b,0xf3,0x19,0x1e,0xc4,0x0f,0xc1,0x28,0xac,0x28,0xab,0xf2,0x31,0x6e,0xf1,0x40,0x16,0x49,0xb8,0xf4,0xcf,0xa1,0xa9,0x36,0xde,0x79,0xb5,0x32,0xdc,0x04,0x3b,0x6d,0x36,0x02,0x4b,0x4c,0x37,0xbb,0xa2,0x92,0x90,0xac,0x9f,0x44,0x9b,0xa6,0x0d,},"\x2e\x08\x46\x53\x6d\xc6\xcc\xe1\x9c\xcf\x82\xdc\x2d\x0c\xd2\x1b\xd4\xe1\xca\x7b\xc3\x17\x06\x7a\xf8\xd9\x0e\xe4\x81\x8c\x85\x18\xbc\x3e\xf9\x60\xce\x11\x2a\x41\xd2\xb9\x97\x9a\x28\x2a\xe1\x3d\x70\x6a\x00\x5e\x00\x34\xf0\x6b\x39\xff\x4b\x0a\x5a\xfa\xed\x70\xb5\x61\xbc\xce\xb1\xbb\xd2\xec\x19\xf9\x74\x48\xea\xed\x4b\xe6\x20\xe3\x6a\x96\x2d\x87\x8c\x6f\x80\x17\x2b\x9f\xad\x43\xee\xd0\x7f\xf9\x3d\xb9\xb9\xca\x22\x62\xd5\xa3\xc2\x29\xc5\x4e\x30\xa4\x5e\x73\x66\x08\x92\xf0\x48\xe3\x63\xf3\x71\x44\xed\x19\x21\xf7\x29\x92\xb4\xd0\x15\x29\x87\x0c\xfe\x37\x3b\x7e\x7c\xbe\xda\xf9\x69\x26\x9f\xb7\x0a\xa7\x83\xd1\xe7\x44\x17\xc7\xba\xe0\xfe\x03\xd9\x51\xfd\xb8\xc7\x1c\x62\xe9\xbe\x7f\xdd\x5d\x23\x3e\x39\xf4\x6f\xed\x05\x7e\x49\xb6\xf3\x40\x68\x45\x91\x48\xda\x3d\x42\x41\x61\xad\x2c\x86\x95\x08\x60\x2e\x9c\x0b\xb3\x0b\xfb\x88\xac\xd5\xf4\xdf\xdf\xfd\x47\x35\x03\xcd\xfe\xda\xbc\x44\x42\xb7\x43\xbe\x07\x5e\x7c\x6f\x61\x0e\x64\xff\xc2\xe5\x31\x87\x74\x5c\xd7\x19\x65\x8f\xc6\xe6\x2a\x5b\xe5\x18\x43\x7c\x5b\xd6\xa4\xfe\xba\x94\xae\x3f\x44\xf2\xf2\x93\x08\xe8\x31\xfe\xef\xed\x67\x69\x09\xce\x5e\x80\xc8\x4c\xbd\xca\xc4\x7e\x47\xd2\x7c\x97\x12\xa0\x1f\x6b\xc5\xda\xed\xc0\x2e\x64\x14\x40\x7e\x91\x1c\x0a\x5a\x53\xe5\x32\x8a\x5a\x5f\xd9\xf0\x40\xaa\x7f\xb7\x0b\x79\xb3\x1c\xd1\xb6\xfd\x9b\xd5\x02\x90\x40\xbd\x22\xae\x22\x2f\xd2\xf6\x87\x0d\x07\xf4\x35\x32\x26\x39\xcf\x31\x93\xca\x57\x09\xb8\x82\xb0\x7a\x58\xf9\x52\xa9\x96\x3e\x56\x8f\x8c\x5a\x58\x4a\x6b\x9e\x27\x5c\x5c\x07\x95\x7a\x4d\x2c\xda\xa9\xf1\xeb\x44\x4e\xd1\x22\x4b\xac\x65\x63\xb2\xf9\x27\x3e\x80\x30\x1d\x44\xd5\x0a\xe3\x83\xb5\x97\x21\x3b\x00\xda\x5b\xf2\x7e\x5d\x1f\xe2\x40\xcc\x3b\xb6\x5a\xa5\x03\x0d\x65\x1b\x6b\x5b\x31\x76\x1d\x53\xce\x0c\x6d\x74\xa1\x5d\xad\x54\x79\xf3\x1c\x91\x5c\xcf\x44\x66\x59\x85\x3b\x89\xa5\x1a\x28\xee\x89\x76\x85\x35\x53\xfd\x2e\x02\xfe\x72\x43\x53\x8d\x00\xb4\xed\x07\xd8\xb8\xa8\x0b\x5c\x16\x5c\xd4\x63\x41\xff\xd8\x16\x3c\x55\x57\x02\x66\x3a\x4e\x6a\xb2\x95\x2b\x7e\x74\x43\xd0\xf6\xb1\x23\xb6\x94\x67\x21\xaa\x63\xe8\x7b\x11\x55\xec\xa8\xa6\xa1\xbc\x9f\xd2\x5c\x67\x62\xe5\x27\x42\xc8\x6b\xca\x1b\xa9\xd8\x37\x04\x15\x24\x4f\x0e\xdf\xdb\xe0\x93\x2b\x5c\xa0\x61\x15\x09\xc9"}, +{{0x0a,0x4f,0x5e,0x16,0x70,0xf1,0xe2,0x4b,0xfa,0x37,0xb7,0x3c,0x99,0x43,0x30,0xb3,0x6e,0x7d,0xaa,0xf9,0x30,0x16,0x1b,0x78,0xa4,0xa8,0x48,0x66,0xff,0x25,0xe3,0xd5,},{0x9d,0xcb,0xba,0x90,0x39,0x81,0x59,0x4c,0x7b,0x67,0x7e,0xa8,0x00,0x20,0x01,0xd6,0x64,0xcf,0xf7,0xce,0x8e,0x5c,0xfa,0xe5,0x88,0x40,0xcf,0x74,0xaf,0xf0,0xd3,0xa9,},{0xdc,0xf3,0x53,0xb2,0xb9,0x9a,0x4e,0xf4,0x5f,0x3f,0xdf,0x65,0x28,0x63,0x2e,0x8a,0xbd,0xc4,0x33,0x34,0x24,0x76,0xa8,0xc2,0xb3,0x79,0x00,0x40,0x4a,0x4e,0x33,0x3d,0x38,0x78,0x14,0x23,0x57,0x57,0xef,0x7a,0xd0,0x38,0x58,0xa0,0xf3,0x5d,0x46,0x15,0xe8,0xab,0xa4,0x84,0xfd,0x64,0xf1,0x11,0x2e,0xc1,0xb1,0xae,0xd2,0xcb,0x64,0x0e,},"\xf4\xb0\x5b\x3e\xfd\xcb\x1d\x5c\x07\xda\x95\x0c\x46\x56\x55\x28\x44\x0b\xb4\x88\x35\xee\x4c\x13\xf4\x3d\x7a\x16\x18\xde\x11\x9e\xbb\xb2\x59\xea\x74\x80\xa5\x04\x81\x74\xfa\xec\xc1\x05\x5b\x32\xdc\x01\xac\x71\x56\x34\x43\x21\xe8\xeb\xa6\x98\xf3\x02\xee\x16\x43\xb5\xf0\x4b\x8e\x7e\xcc\xa6\x3b\x91\x56\x1c\xe3\x51\x4a\xbe\x78\x51\xb6\xfb\x17\xfc\x94\x3b\xdc\x94\xda\x30\x8c\x8e\x47\x69\xfe\xc2\x0f\xad\xf4\xfa\x8e\x7f\x62\xb6\xff\xb5\xf1\x70\xd6\x44\xed\x29\x35\x5e\xbd\x22\xcb\x3a\xa1\x48\x6b\x1e\x36\x7c\x72\x9d\xd3\xf7\x9b\xcd\x40\xff\xd0\x8a\xf2\x8c\xeb\xc8\xd7\x76\xe1\xa4\x83\xe9\x11\xd7\x9b\xc6\x13\xe0\x9c\xc6\x21\xca\xde\xb0\x34\xdd\x6f\x72\x37\x47\x71\x98\x51\x27\xf7\xa3\xa1\xaa\x78\x6a\x52\x3a\xe6\xe3\x4e\xe4\x33\xdc\x30\xc3\x75\x98\x7c\xff\x50\xbd\xcb\xc9\x97\xfc\xd5\x1c\x94\x56\x7a\x67\xae\xfb\x6e\xf5\xed\xf9\xbd\xd6\x59\x64\xd4\x64\xbe\x9e\xbd\xfb\x88\xc0\xe2\x31\xb0\x7f\xf6\x40\x5c\x00\xf8\x25\x31\xe9\x61\xbf\xc5\xea\xd2\x66\xbc\xc0\x87\x18\x87\x8c\xaf\xb1\xd3\x75\x36\xf1\x83\xe4\x8b\xf3\x8d\x3f\x6b\xe9\x00\x25\x2d\x1f\xb4\x19\xe6\xa2\xac\x58\x96\x03\x9f\x63\xc3\x14\x01\xff\xf9\x32\xce\x98\x14\xb0\x85\xab\x20\x41\x69\x72\xa2\xb3\x51\xc8\x15\xa6\x2d\xe5\x09\x67\x46\x28\xb0\xd3\x56\x6f\xc9\xc2\xe0\xa9\x23\x7b\x93\xf9\xbb\xb2\xde\xed\xf0\x2b\xff\x83\xbf\x6d\x86\x8b\x63\x99\x32\x6d\x48\x09\xd0\x41\x9f\x31\xb2\xf3\xa4\x81\x28\x5b\x94\x07\x8b\x47\x06\x1c\xe9\x1d\xad\x58\x3d\xd5\xb1\x3b\xd0\x10\xfb\x30\xf2\x49\x5b\xb7\x04\x20\x18\x3a\x93\x01\x59\xe4\xdb\x19\x3d\xf6\xac\xd1\x24\x42\x3e\x03\x9a\x67\xf1\x56\x88\xae\xc5\x0c\x59\x27\xfb\x27\x18\x22\xaa\xa6\x6f\x29\x4b\xc8\x05\xd3\xbc\x7c\x83\x41\x87\x8a\x54\x10\x09\xf3\x0d\xa9\x9f\xcc\x00\x85\x07\x9c\xe7\xfc\x55\xe0\x01\x16\x85\x56\x2a\xbd\xb3\xa9\x47\x1f\xfd\xe6\x17\x63\x00\xef\x5b\x31\xe0\xdf\x60\x9a\x54\xa1\xee\x66\x24\x07\x0d\xa9\x9c\x87\x76\x89\x1f\xdf\x6a\xa7\x8b\x4d\x55\xb1\xf5\xda\xdf\xc0\x61\xad\xd5\xaf\x00\xfd\x3a\xde\xdb\x44\x8c\x55\x9b\xff\xf2\x04\x06\x80\x43\xa5\xd1\xd6\x21\x47\x48\x62\x8c\x3e\xbc\x5f\x02\x24\x32\x6c\xa1\x8e\xf0\x48\x42\x5d\xa9\x30\x01\x33\xfb\x69\x5d\x4f\x26\x31\x65\xac\x22\xf3\x61\x9d\x40\x5a\xf2\x71\xa7\x1a\x9a\xfb\x19\x8b\xf6\x31\x24\x1d\x34\x59\xb9\x53\x98"}, +{{0xb8,0x55,0xc8,0x18,0x05,0xc7,0x08,0x74,0x10,0xe6,0x9f,0x96,0xb0,0x24,0x02,0x71,0xdc,0x76,0xc1,0xe4,0xad,0xe3,0x8c,0x6a,0x92,0x78,0xe3,0xc9,0x4f,0xbe,0xa2,0x56,},{0x6a,0xdb,0x02,0x5a,0x40,0x26,0x0f,0x56,0x98,0x84,0xb8,0xca,0xb3,0x75,0x2b,0x4f,0x25,0x5c,0x37,0x3e,0x2b,0x42,0x4b,0x62,0x87,0xeb,0xb5,0x10,0xfa,0x06,0xff,0xf0,},{0x3c,0xaa,0x81,0x32,0x73,0xe7,0x53,0x54,0x2f,0xfb,0xfe,0xb2,0x1b,0xc3,0xe2,0xcf,0x8c,0xa7,0xd9,0x20,0xfa,0xac,0x7c,0x49,0xdc,0x2a,0xa9,0x91,0x17,0x68,0xc7,0xad,0x43,0xb3,0x8b,0x02,0x36,0xdb,0x27,0xf3,0xee,0xae,0x0b,0x12,0x06,0x00,0x1e,0x66,0x5a,0x60,0x70,0x78,0xc5,0x22,0xed,0x7a,0x9d,0xc4,0x68,0x85,0x34,0x63,0x59,0x00,},"\x85\xa9\xbd\xb7\x0a\x6c\x75\x28\x97\xe4\x3a\x91\x10\x6e\xe9\xa9\x9c\x2c\xa9\x4f\xf7\xb4\x46\x1a\x44\xa3\x91\x74\xc1\x7e\xcd\x99\xdf\x46\xee\xcd\x81\xc3\xf5\x25\x13\xdc\x9d\x54\x7d\xad\x37\x21\xc6\xd5\xee\x1f\x8f\xac\x0b\xa5\xaf\xb3\x68\x70\x44\x73\x9e\xd5\x35\xb8\x44\x00\x87\x04\xc0\x9f\xe1\xe5\xd7\x85\xd4\xc9\xc3\xd0\xb0\x58\x89\xb9\xc2\x0f\xc3\xfd\x68\xdf\x12\xdb\xeb\x2c\x34\xf6\xf7\xec\x1c\x6f\xb7\xfa\x81\x1f\xf8\x46\xb5\xa6\x1f\xa5\xfe\x55\x37\x9e\xe6\x3a\xbc\xd3\x73\xfe\xd0\x02\x54\xeb\xd0\x6b\xc8\xb2\x2f\x7f\xbf\x2f\x72\x7a\x5f\xad\x88\x51\x41\x59\xe2\x6d\x78\xdf\xdb\x09\x57\xf6\xef\xaf\x51\xa8\xe8\x0b\x58\x5e\x83\x8b\x96\x21\xd0\x51\x07\x4a\x4f\x58\x67\xb4\xae\x2f\x2f\xf6\xd6\x2b\x85\xbc\xce\xc0\xb4\xaa\xa4\x79\x16\x37\x38\x8c\x09\x01\xfd\x49\xdc\xcc\xce\x72\x04\x85\x9f\x81\xee\xfc\x63\x9f\xed\x92\x28\x04\x56\xe6\x9a\x15\x09\xb4\xb1\xbd\x76\x24\x44\x7d\x86\x2c\x45\xa0\xc8\xb0\xc5\xbb\x2c\x4c\xa5\x12\xcb\xc0\x37\xf5\x1b\x78\x09\x82\xb1\x83\xa5\xca\xfa\x15\x29\x75\x85\xc9\x47\xa2\x5b\xe8\xc2\x24\x0e\xbf\xb6\x86\x8e\xce\x5e\xa2\xaa\xb2\xc2\x39\xc8\x37\x54\xc7\xd5\x94\xb3\x72\x5a\xce\xef\x34\x4b\xa7\xe6\xae\xf4\x9f\x7f\x31\x3b\x0a\xe8\x2c\xca\xca\xd3\x87\xa6\xe9\x33\x7f\x05\xf8\xc7\x99\xef\xe7\x82\x9b\x27\xb4\xd5\xb2\x01\xfd\x5a\xe5\x83\x43\x51\x69\x07\x59\xf3\xea\x17\x5f\xd4\x74\x1b\xe2\x28\xd8\x07\xfb\x54\xdf\x4a\x74\x10\x38\xfa\xee\x47\xed\xf1\xf5\x61\x65\x25\x98\x60\x1f\x27\x15\x5f\xc5\x0d\x9d\x50\x11\x43\x37\x11\xc1\x06\xd4\xb6\x07\x85\xa5\xcc\x93\xb3\xfd\xd1\xda\xd7\x0c\x0c\x8e\xaa\x33\xf1\x51\x2e\x35\xa5\x41\x74\x5e\x37\x6c\x15\x16\x7f\xa8\xf6\xb3\xb2\xc4\xc3\xa3\x66\xfc\x41\x49\x7d\x29\x73\x57\x81\x6a\xe7\x95\xa8\x04\xc9\x80\xe7\xcb\xfb\x0c\x74\xd8\x83\x5d\x92\x9a\xe3\xbb\x52\xba\xb1\x29\x64\x56\x6d\x74\x6b\xd2\xc1\xd1\x32\xb6\x23\x3f\xa3\x4f\x75\xe2\x68\xed\xee\x77\x5e\xb3\xce\x13\x2e\x6b\xeb\x2e\x8d\x71\xf0\xc8\x76\x29\x91\xcd\xe4\xe2\x6f\x71\x43\x9d\xfa\x83\x97\x8f\x99\x56\x03\x86\x1b\xc0\xb1\xd9\x06\x0b\xbc\xca\xcc\xf8\x6f\x87\x45\xad\x96\x99\x4d\x5d\x00\x7d\x52\xe8\x3a\xa5\xe6\x94\x12\x96\x4b\xdb\xfb\xe4\x78\x0a\xaa\x8d\xe4\x1b\xe1\x29\x8a\xbb\xe9\x89\x4c\x0d\x57\xe9\x7f\xca\xcc\x2f\x9b\xbd\x63\x15\xd3\xfc\xd0\xea\xf8\x2a"}, +{{0x95,0xb9,0xc8,0xa6,0xef,0x80,0xeb,0xd5,0xcb,0xd4,0x7a,0x04,0xca,0x54,0x38,0x73,0x73,0xdf,0x4d,0x67,0xa2,0xb4,0x75,0x59,0x77,0x65,0xac,0x89,0xfc,0xf9,0x3e,0x93,},{0xf2,0xc9,0x47,0xb1,0x8a,0xdc,0x3e,0xa6,0xa2,0x3f,0x7a,0xbc,0xa3,0x64,0xb9,0x85,0x3a,0xe8,0x5a,0x2b,0x0c,0x8c,0x26,0xf0,0xd3,0x17,0x3c,0x27,0x32,0xc3,0xc7,0xff,},{0x2c,0x8b,0xf5,0x43,0xe2,0xa3,0xe0,0x04,0x15,0xee,0x4f,0x10,0x7b,0x2f,0x5a,0x66,0x87,0x17,0x6f,0x5d,0x52,0x11,0x17,0x75,0x9c,0xeb,0x56,0x17,0x51,0xbc,0xc7,0x7d,0x9b,0x08,0xa6,0xa6,0x31,0xf6,0x44,0x7c,0xd9,0x01,0xde,0x96,0x69,0x9a,0xeb,0xb1,0x68,0xbf,0x97,0x50,0x0d,0xc5,0x4a,0x05,0x43,0xef,0x14,0xe4,0xb5,0xa0,0x81,0x06,},"\x78\x55\xbc\x39\x26\x30\xcc\xf5\x31\xd3\x06\x16\x06\xdd\xfc\x81\xa0\xfd\x92\x94\xc5\x47\x91\xb5\xf9\x55\x9b\x68\x27\x25\x4a\xa1\xf2\x5c\x54\x0b\x7d\x7d\xf3\xec\x9c\xdf\x14\x25\x66\x29\xdb\xcf\x9b\x72\x5f\xeb\x34\x12\xeb\xf3\x5f\x0e\xf9\x37\x9e\x41\x31\xcc\x77\xe0\xf0\xfb\x6f\x74\x59\xa7\x38\x36\x1a\x99\xae\x4c\xcb\x2b\x60\xa9\x9f\xe9\x2b\xd6\xc3\xa5\x3d\x6f\x45\x4e\xe9\x00\x5b\xce\xc5\xae\xdc\xfa\x82\x34\x73\x92\xef\xcf\x11\x75\xe5\x78\x39\x6a\x8d\x80\x0d\xab\xa0\xf4\xc2\xcf\x4d\x49\x13\xb0\x52\x86\x20\xe3\xba\xa0\xf6\xd8\x6e\x06\x28\xe4\x7c\x0c\xa2\x6d\xf3\xb0\xc7\x88\xc4\xe1\x65\x57\xf7\xfc\x28\xdf\x82\x0c\x12\xfb\xb6\xff\xbf\xec\xb9\x82\x9d\xdb\x65\xef\x8d\x63\xe9\x0d\x68\xfc\x71\x94\xb5\xb8\x85\x91\x3f\x08\xed\xee\x84\x56\x76\x47\xff\xa3\xf0\xd0\xd3\x25\xd0\x82\x60\x0c\xe7\x1a\x23\x45\xc7\x7d\x65\xbd\x96\x25\x20\x03\xe5\xc1\x25\xa7\x18\xa0\x73\x70\xc3\x1b\x57\x08\x07\x5c\xf1\x83\x7c\x69\x25\x63\x5c\xc6\x8d\xd1\xb7\x51\xe4\x0a\xb6\x08\xb0\xd9\xd8\x85\x2c\x18\xd3\x06\x92\x19\xef\x80\x7b\x76\xd2\x88\xf9\x2c\x29\xa9\x3e\x3d\x75\xb5\xb2\xe5\x36\x81\x67\x1d\x3a\xe0\x14\x5a\xc0\x3c\xca\xd3\x16\x2e\x44\x70\x3b\x04\x01\xd3\xeb\x16\x7c\xd8\xdd\xc1\xe1\xa5\xa3\x26\xb7\x28\xb1\xe0\xc0\x0a\x94\xd8\x6d\xe6\x13\x52\xa6\x61\xe4\x08\x97\x17\x5d\x28\xd3\x41\xe4\xd1\xd9\x96\x2e\x35\xf4\xde\x18\xa5\x40\x17\x61\x1a\xd0\x53\x59\xce\x08\xb9\x7b\xfe\xdb\xfb\xe3\x99\x2e\xd5\x8e\xd4\x0f\x51\x7a\xab\x01\xc0\xfe\xfe\x8b\x63\x64\x3d\xa1\xa4\x54\x15\x27\x30\xbf\x99\xaf\x87\x40\xad\xf9\x8a\x77\xb8\xd7\x3a\xdb\x08\xe6\x09\xe0\x0c\xe9\xb1\xcc\xdf\xef\x3e\x9a\x9b\x05\xaa\x56\xe0\xbc\x79\xb6\xbb\xba\x80\xdd\x8e\x46\x1a\xf7\xcb\x20\x28\x92\xd8\x9b\x2d\x05\xa4\x45\x8a\xb3\xfa\x54\xb4\x74\xb8\xf8\xf5\x81\x79\x5d\x6c\x27\x39\xe5\x9d\x0f\xe0\x62\x40\x0b\xae\x2d\x2d\x53\x4b\x34\x0b\xb8\xe2\x61\x57\x77\xa9\xa5\x61\x5b\xb2\xcf\x43\x7b\xa5\x25\xe0\x0e\x70\x38\xf2\x2a\x57\x88\x2a\xc5\x20\xb3\x33\xe7\x5c\x3c\x92\xa8\xb9\xf0\xe3\x7f\x67\x1c\x94\xb1\x5d\xd8\x18\x2a\x08\xd7\xc1\x43\xe9\x4e\x92\x62\xb3\xcc\x55\x44\xc2\x94\xf5\xf3\x35\xc2\xb2\x8a\xc1\x19\xfe\xa0\x0f\x96\x34\xdb\x06\x39\x93\x98\x8b\x5f\x15\x05\x79\xc7\xcc\x25\xb6\xa1\xfb\x0d\xde\x94\x80\x4f\xa6\xef\x66\xff\x79\xfb\x91\x07"}, +{{0xb7,0x86,0xcc,0xfb,0x58,0x6d,0x43,0xb8,0xc4,0x6b,0xb9,0x7b,0x96,0xc9,0x18,0x73,0x1b,0xc2,0xcc,0x11,0x92,0x77,0xf1,0x23,0x67,0x1e,0x30,0x14,0x81,0x58,0xd2,0xed,},{0x90,0xc7,0x00,0x46,0x00,0xf3,0xdc,0xe4,0x09,0xfd,0xea,0xdc,0x8e,0xd0,0x18,0xf9,0xea,0x26,0x3f,0x75,0x16,0x0a,0x74,0xab,0x54,0xf4,0xc2,0x39,0x9a,0x90,0xca,0x78,},{0x52,0xba,0x96,0x58,0xa1,0xa0,0xb3,0xe9,0x8e,0xd5,0x20,0x9e,0x39,0x3e,0x42,0x00,0x66,0xa3,0x7d,0x37,0x14,0xda,0xa7,0x3d,0x5c,0x67,0x1d,0x33,0x07,0x5a,0x5f,0x57,0x27,0xfe,0x4e,0x08,0x1e,0xe0,0xfa,0x3c,0x21,0x33,0xdc,0x95,0x3a,0x2d,0xa6,0x20,0x29,0x13,0x71,0xf0,0x0c,0xcb,0x57,0xd8,0x79,0x2e,0xb5,0x96,0xa2,0xff,0x81,0x01,},"\xba\xbf\x48\xbd\x55\xea\x91\xbd\x0c\x93\xb9\x70\x24\x1b\x52\x9d\x9d\xb4\x3d\x49\x27\xfe\xa5\xf1\xa1\xf7\x08\x2d\xd6\xcb\x50\xa5\x2b\x09\x4b\x31\x29\xfc\xd9\x03\xa4\x4f\xec\x8b\xfd\xb5\xc8\x6c\x00\x2a\x2a\x45\x28\x87\xca\x25\xa6\x0e\xce\xb5\xe1\xf9\xf5\xc9\x3d\xc5\x94\x23\xc7\xaf\xe7\x47\xc6\xbf\x40\x7c\xac\xad\xec\xcf\x5d\x78\x79\x70\xcb\x06\x17\xbb\x3c\xfe\x7f\xd1\x75\x63\xd3\xa0\xdc\x91\x63\x1f\x71\xb8\x4b\xe2\x4a\xe8\x00\x11\x37\x50\xf0\x31\xd0\x1f\xd0\x53\x64\xb4\xf2\x7f\x86\xf8\xdc\x3a\xd7\x40\x7e\x1a\xe9\xe7\x68\x15\x4e\x3d\xde\x58\xe8\x67\x12\x9e\x24\x74\x54\x7b\x40\x82\x17\x96\x48\x44\x85\x8d\x05\x6b\x31\xc3\x74\x99\x1b\x7f\x16\x1f\x52\xf0\x88\xb8\x06\xe0\xf3\x13\xd6\x8a\x15\xc5\x40\x1e\xd5\x5b\x2b\x77\xde\xea\x58\x6c\xb0\x54\xdc\xd7\x1a\xf2\xab\x6a\xb1\x1e\x84\xb3\x0c\x53\x93\x45\xde\x3e\xb4\x3f\xb7\xb3\xa3\xb4\x89\x87\xc3\xbf\xa7\x06\x55\xd5\x99\xf2\xe3\x1d\x12\xad\x23\xcc\x96\xe8\x6d\x38\x0b\xfd\xa8\x12\xfe\xff\x3d\xd3\x02\x42\x92\x91\x69\x07\x02\x28\x91\xe1\x19\xbf\xc3\xed\x9c\x25\x54\x6c\xd1\x9f\xc9\x92\xd8\xa6\x1e\x60\x59\xca\x3c\xe7\x80\x2a\xf1\x11\x87\x56\x62\x0b\x87\xa7\x24\x2b\xd8\x38\x97\xc9\x4d\xd5\xa3\x6e\xd4\x0f\xc0\xf3\x4c\x2c\x93\x11\x0b\x37\xd1\x7d\xd9\x6a\x22\x06\x25\x90\xbc\xdb\x54\x67\x42\xef\x72\x18\xad\xcc\xc5\xad\x28\xf4\xfc\xe6\xec\xf7\x05\x83\x5f\x41\x13\xd8\x2e\xa5\x33\x90\x3a\xec\x8c\x38\x20\xfe\x4b\x47\x15\xf3\x7e\x20\xce\xbc\x1e\x71\x51\x9a\xa0\xb2\x40\xb4\x84\x0a\xa4\xfd\xcf\xb5\x24\x67\xfe\xdd\x8f\x4d\x1f\x9b\xc3\x3e\xe1\x14\xf3\xef\x85\xf5\xfd\xb0\x9c\xa8\x84\xaf\x38\x8a\xd3\xad\xf8\x4c\x79\x3f\x38\x6e\xfe\x6f\xf8\xa4\x6e\xd8\x1e\x5d\x45\xa3\x7c\x25\xcd\x80\xf2\xd7\x36\x3f\x43\xae\x45\xe3\x77\x2c\x0d\xf8\x9f\x11\x44\x79\x39\x80\x6c\x09\x6e\xf9\x33\xa1\x39\x44\xf0\x89\x0d\x88\x7c\x2e\x5b\xbb\x6b\x12\xea\x95\x0b\x09\xb8\xfe\x42\x52\x89\x37\x73\x52\xf3\x5f\x84\xcc\x4d\xcd\x4d\x7a\x44\x94\x89\xfa\x92\x51\xc0\x31\x13\x48\x92\x25\x80\x9c\xdf\x3c\xb6\x34\x75\xf1\x0d\x34\x17\x09\x37\x1c\x6f\xd4\xbb\x7a\x94\x94\x83\xd1\xbc\x2b\x31\xdd\xf4\xd9\x63\xa0\x7d\xe7\xea\x5c\x3f\xee\x9a\x0e\x33\xf0\x76\x9f\x2f\xaa\x40\x61\x2a\x54\x69\x74\xbd\xe0\xb7\x33\x91\x79\xe4\x12\x4a\x44\x7b\xd4\x28\x79\xcc\xda\x5c\x8a\xd1\x81\x9c\x53"}, +{{0xdd,0x1a,0x97,0x74,0xf7,0x58,0x4d,0x85,0x89,0xb1,0x9f,0x92,0xab,0x69,0x39,0xac,0x48,0x56,0x02,0xfe,0x16,0x44,0xce,0xe2,0xf6,0xf3,0xcd,0x60,0xfb,0xd5,0x84,0x00,},{0x4b,0xea,0x7d,0x0b,0x0f,0x4b,0xd5,0x90,0xf9,0xe3,0x57,0x9f,0x0c,0x5f,0xa4,0xce,0xf4,0xd6,0x0a,0x49,0xd2,0xc4,0x37,0xa0,0xaa,0xea,0xd9,0xd4,0x3a,0x73,0xd4,0xa3,},{0x19,0x59,0xbd,0xe0,0xa6,0x97,0xa6,0x39,0x93,0xec,0x47,0xd1,0x58,0x22,0x37,0x39,0xfe,0x65,0x87,0x1f,0xa0,0x58,0x70,0xd7,0xde,0x0d,0x38,0x08,0x65,0x91,0x20,0x2a,0x51,0xb1,0x74,0xd1,0xc6,0x18,0x28,0x08,0xc6,0xce,0x62,0x63,0x1d,0x81,0xdb,0xa3,0x4e,0xbe,0xd4,0xaf,0x2f,0x29,0xb0,0x6c,0x00,0xa5,0x7a,0x3c,0xb6,0x66,0x36,0x06,},"\xe5\xdc\x3e\xd2\x6c\x1f\x69\x3c\xf8\x52\x46\x5a\x05\xe3\x04\x8b\x50\x5d\xb5\x11\x6d\x9e\x31\x59\x22\x05\xa9\xc3\xd4\x72\x0b\xc1\x0b\x6c\x20\x63\x9a\x0e\xe2\xf0\xe1\x47\x22\x5b\x5b\x19\xea\x51\x1c\xfb\xa0\xc2\x1a\xac\x10\x71\x5a\x2f\x23\x2f\x10\xc2\xc8\xaa\xd4\x11\x12\xb6\xb0\x12\xe7\x5a\x41\x55\xf8\xc6\x92\x62\x53\xca\x2b\x4d\xdb\x7b\xfe\x7f\x86\xe9\x0a\x53\xdb\xc0\xcb\xa8\x9e\x48\x5c\xec\xa8\xfd\x26\xe5\x0c\x7f\x28\x2a\x25\x35\x73\xcb\x0a\x8f\xa8\x8c\xc4\x46\x23\xe8\x2e\x8f\xa2\xed\xb6\xcb\xc7\x53\x8a\xc9\x2c\x11\xe4\xc5\xb1\xea\x5f\x68\x96\x6d\x15\xd9\x3c\x34\xf3\x96\xd2\x75\x72\xf8\x64\x38\x2a\xb7\x6a\x7b\xe6\x5a\x55\x7b\x13\x97\x66\x36\x8a\x20\x7d\x98\xbc\x0c\x20\x92\x63\x70\xde\xa2\x70\x48\x16\x03\x63\xed\x85\xf4\x09\x9e\x7c\xd6\x6d\x12\xd0\x98\x8c\xfc\x9e\x2f\x16\xaa\x56\x5f\x8f\x33\xb3\x9e\x97\x8c\x05\x87\x37\x1f\x92\xdb\x50\x56\x31\x75\x64\x41\x1b\xd8\xa3\xb6\xfe\xa0\x9d\x34\x87\xaa\xf7\x34\x03\x49\x18\xff\xed\x1c\x9f\xba\x7b\xde\xc6\xfe\x68\x87\x6f\xc7\x36\x0c\xc5\x62\x9b\x92\x10\x40\x27\xfe\x57\x59\xc5\xab\x36\x53\x54\x75\x1e\x79\x69\x11\x6c\x3b\x9a\x21\xb1\x52\x33\x0a\x96\xa9\x38\x1a\xf7\x30\xd1\x78\x22\xd7\x8a\xd6\xea\x86\x00\x06\x91\x5b\x5c\xab\x44\x7a\x75\x93\x72\xe0\x5d\x49\x5e\xbb\x32\x8e\x75\xd2\x48\xda\xa0\x2f\x5d\x2e\xb9\x78\xd2\x71\x0c\xf1\xc5\xfb\x82\x48\x76\x77\x0e\x32\xca\x6d\xe2\xc7\x30\x56\x48\x92\x41\x5b\xcb\x53\xe5\x98\x1d\x70\x7a\xdd\x96\x1c\x5f\x37\xfd\xaf\xa1\x39\x9a\xf8\xae\xa9\x60\x45\x8d\x2c\xa3\x10\x55\x3f\x7c\x98\x66\xcc\xbe\x8e\x9d\x88\xe0\x8a\x44\x68\x72\xea\x66\xfc\x30\x8c\x82\x45\x14\xb7\xda\xce\x03\x34\xdb\x73\x5e\x6f\x14\xc8\x5b\x5e\x61\x9a\x5d\x60\x56\x48\xa8\x81\xe8\x76\xc7\x8d\xbe\x06\x57\x23\x3d\x4f\x7f\x3b\xfd\xdf\x63\xb4\x45\x31\x1d\x6a\xbc\x47\x63\x47\xec\x4f\xb4\x3c\x89\x46\xf9\xd1\x7c\x36\x93\x81\xd1\xc5\x64\xff\xcf\xe2\xdc\x7b\x47\x26\xfd\x57\x38\x7f\x0b\x44\xdb\x8e\xf9\x5a\x0b\x4e\x32\xa7\xbe\xdf\x31\x9e\x53\xa9\xe7\x12\x6c\x28\x11\xf9\x82\x9d\x1f\x4a\xe9\xab\xd9\xd5\xf4\x2e\xfe\xf2\x07\x5f\x47\x05\x1c\x63\xa4\xf8\x20\x20\x40\xec\x47\x23\x68\x63\x82\xc6\x03\x31\x27\xc1\xfb\xff\xf4\xbc\x82\x37\x35\x08\x75\x2d\x43\x1d\xc4\x73\xf5\x2d\xde\xab\x03\x42\xdc\x4f\x54\x47\xf8\xf2\x57\x38\xef\x65\xd7\x85\x56"}, +{{0x66,0xf5,0xea,0x8c,0xdb,0x95,0xee,0x1a,0x75,0xe3,0x24,0x67,0xd7,0xc8,0x3c,0x59,0x44,0x77,0x42,0xc8,0x5d,0xdd,0x49,0x9c,0x43,0xc0,0x86,0x73,0xe1,0x49,0x05,0x3a,},{0xa8,0xad,0x04,0xb9,0xc1,0x44,0xb9,0x7f,0xe8,0x67,0x37,0x4d,0x4f,0xe5,0x7d,0x7e,0xc0,0xc2,0x49,0x18,0x3e,0x43,0xbd,0xfb,0x5d,0x52,0x64,0x4e,0x7f,0xbe,0x1d,0xf3,},{0xec,0x5c,0x7e,0x83,0x92,0xfa,0x8b,0x61,0xbc,0x82,0x96,0x81,0x86,0x6e,0x45,0xac,0x8b,0xe4,0xb5,0xb7,0xb6,0xa8,0x22,0xc1,0xbc,0xd0,0xf2,0xcc,0x2c,0x8c,0x44,0xc3,0x3c,0xf8,0x3f,0xa4,0x2d,0x43,0xa2,0xf1,0x88,0x41,0x41,0xb4,0xa5,0x9a,0xaf,0xf4,0x7f,0x9b,0xe0,0x7e,0x63,0x2e,0x20,0x18,0x75,0x93,0x24,0xea,0xc9,0xd1,0x49,0x00,},"\xc0\xd0\x1d\xce\xb0\xa2\xd1\x71\x91\x10\x18\x79\xab\xb0\x93\xfb\x07\x75\x71\xb5\x21\xbe\x7b\x93\xa1\x17\xc6\x96\xc0\x87\x2f\x70\xea\x11\x39\xab\x62\x83\x29\xee\x56\x55\xfc\x0a\xa7\x7e\x81\x11\xd2\xfc\x88\x47\x48\xc1\xf2\x67\xb9\xeb\x09\xdc\x26\xf5\x7f\xc4\x02\xd6\x1b\xa3\x6f\x63\xf4\xd5\x89\xaa\xe6\x3c\x76\xee\xee\x15\xbf\x0f\x9e\x2d\xcd\xe4\xe4\xe3\xe7\x8f\xc6\xc2\x9e\x3a\x93\xf3\xff\x0e\x9a\x6e\x0b\x35\x66\x45\x95\x38\x90\xde\xbf\x62\xdb\xea\xf4\x90\x51\x78\xd4\xf0\xa5\xa5\x92\xc1\x92\x94\xee\xba\x7c\x21\xcf\x8f\x1b\xb3\xf4\x51\x21\x87\x37\x6d\xe7\x2f\x11\x36\xa4\x8a\xc2\xdf\xaf\x32\xd0\xf3\x7d\xe0\x64\x59\x25\x92\xb6\xe1\xbc\x0c\x51\x2c\xf4\xd2\xd8\x5d\x16\x79\x78\x53\xa8\x09\x33\xb0\x9c\x2f\x7b\xfb\x9e\x54\xa6\x9e\x51\xa8\xe4\x23\xa9\x1c\x3e\x5f\xde\xb4\x79\x05\x33\xe8\x7a\x4b\x1c\x0e\x0e\x23\xa9\xdb\x95\x73\xac\x17\xab\x6e\xc7\x01\x4d\x8b\x7c\x44\x86\xe1\x57\x25\xf8\xd2\x64\xee\xa3\x05\x0e\x83\x5a\xe0\xac\x44\x9d\xb3\x34\x50\x2a\x6d\x97\x35\x8f\xa8\x59\x10\x6a\xd0\xf6\xf4\x29\x5f\x23\x44\x92\x0a\xdf\x93\x55\xa6\x94\x9d\x8d\x14\x5c\x25\x62\x8a\x46\xa1\x04\xca\x09\x9b\xd9\xdd\xe9\x41\x11\x9c\x83\x82\x0c\xdc\x2c\xb2\xd0\x97\x22\x69\x49\x01\x04\x3c\x37\xcf\x0a\xe8\x79\xbe\x20\x30\xd0\x37\x31\x58\xb9\xc4\xb0\x71\x82\x98\xbe\x45\xf6\x30\xf6\xfc\xdc\x19\x0f\x7b\x29\x26\xd8\x76\x55\xa1\x8b\xb7\x97\xac\x50\x75\x7f\xcd\x36\x55\xc9\xe4\x1d\x51\x63\x29\x3d\x9a\x13\xd9\x84\xf5\x91\xf7\x5b\x7e\x4e\x5c\xad\xb6\x4c\x4c\x9f\xdf\xef\x76\xca\xb6\x93\x81\xd0\xf6\x0b\x48\x3f\x80\x4b\xb3\xb3\x33\x64\xdf\x8c\xff\xac\xb3\xc9\xb1\x3f\xf4\xc8\xd8\xd4\xea\x40\x76\x6a\x7d\x42\xd8\x25\x6c\x6b\x1c\x11\xc1\x91\xda\xba\x1b\x8e\xf2\x15\x93\xe4\x7b\x18\x85\x8e\xc1\x9d\x81\x73\x58\x67\x8d\x85\x48\xff\x15\x35\xd5\xfc\xf4\x41\x4b\x6a\x11\xd3\x4a\x37\x42\xf8\xd7\x14\x9f\xa6\x81\x38\x3a\x94\x08\x88\x7f\x1c\x0a\x98\xed\x52\x1e\x72\x79\x32\x77\x82\x4d\x6f\x74\x6d\x49\xb6\x3d\x44\x4e\x31\x2e\x6d\x9b\x98\x66\x11\x25\x81\x96\xa5\xb0\x12\xb8\x8f\xaa\x29\xf9\xa6\xc6\x7e\xd2\x5d\xf8\x7b\x2d\xbf\x0d\xbd\x2d\xc3\x08\x0c\x5b\x8d\x15\xa3\x7d\x34\x72\x90\x98\xed\x0d\xe9\x2d\x75\x80\x74\x29\xb2\xca\xe5\xd7\x28\x3c\x4e\x5c\x9b\xd1\x96\xd1\xad\x43\x6c\x7c\x34\xf3\xc9\x46\x6e\x5c\xb3\x19\x6b\x44\x3f\x4b"}, +{{0xed,0x25,0x58,0xe5,0xc5,0x67,0x84,0xbc,0xfb,0x4f,0x4d,0xde,0xa3,0xc0,0xdf,0xbe,0xf8,0xd9,0x6f,0xf1,0xca,0xbf,0x15,0x8e,0xc4,0xab,0xe6,0x0a,0xff,0x66,0x99,0x9e,},{0x1e,0xdc,0x99,0x10,0x12,0xac,0x6f,0x88,0x8f,0xa7,0xe6,0x04,0x57,0x77,0xe9,0xba,0x1d,0x4c,0x03,0xc4,0x02,0x92,0xd2,0xda,0x6b,0x72,0x2b,0x4a,0xd0,0xa3,0xed,0x74,},{0xab,0x9e,0x01,0x16,0x65,0x24,0xfd,0x28,0x8e,0x5c,0x68,0x9e,0x56,0xd7,0x30,0xd4,0x98,0x30,0x00,0x55,0x10,0x30,0x49,0x33,0x34,0xa3,0x98,0x4e,0x22,0x23,0xdc,0x9f,0x7a,0x5b,0x91,0x0c,0x61,0x76,0x0c,0x61,0x57,0x99,0x0a,0x4c,0x33,0x5e,0x34,0x8e,0x3a,0x7b,0xc8,0x22,0x3e,0x09,0xc1,0x0c,0x5e,0x52,0x0c,0x8d,0x61,0xaf,0xf5,0x00,},"\x2c\x64\x33\xe9\xbf\xbf\x4c\xfd\x4e\x07\x1f\x15\xce\x6b\x12\x9d\x78\x0a\x4b\x3d\xe0\x14\xfa\xc0\x34\xe0\xd4\x4e\xf7\x72\xe2\xc8\xb0\xd6\xa3\x48\x1d\x7b\x3d\xde\xb2\x37\x63\x26\x73\x55\x33\x13\xde\xac\x1e\xfa\xfe\x37\x02\xa7\xa4\x41\x1e\x12\xbd\x34\x1e\x8d\x8e\x96\xc5\x9c\x5e\x30\xc3\x68\x07\xa8\x38\x5a\x53\x8e\x9b\x66\x90\x7d\x6a\x52\x84\x00\xbd\x9f\x95\xee\xdc\x52\x16\xb2\x8f\xd7\x43\x7d\x8f\x4a\x02\x9f\xdb\xdc\x7c\x93\x8e\x4e\xb9\x81\x2f\xec\x05\xea\x69\x32\x29\x62\x9a\xce\x6a\xcc\x7a\xf6\xba\x4c\x23\x8e\x77\x22\xf3\x12\xf7\x89\x6b\x00\x49\x22\xf7\x06\x7e\xde\x10\x6f\x8e\x70\x15\x4d\x78\x3f\xb4\x12\x91\xf3\xc7\xe2\xe4\x82\x60\x45\xb5\x74\x1b\xcb\x4a\x88\x38\xf8\x7a\x32\xe0\x04\x97\x04\xe9\xb5\x32\x34\xc2\x24\xff\x89\x8a\x75\x6e\x52\x91\x34\xc1\xa9\xbf\x50\xfd\x02\x98\x19\xb2\x23\x8b\x60\xb2\xae\xc1\x12\x8f\x34\xd2\x1f\x9d\x66\x98\x3b\xed\x39\x86\x59\xd8\x08\xb6\x7a\x2e\x50\x1b\x5a\x1f\x25\xf7\x1f\x0f\x0c\x1e\xb2\xfe\xa0\xab\x42\xd8\x2f\xf3\xbc\x93\x58\xbb\x20\xc2\x75\x20\xc1\x44\xcf\x21\x16\xf4\xa4\x9c\xbc\x61\x99\x4d\x2d\x71\x05\x46\x69\x4c\x4f\x60\x2d\xc4\x06\xe0\xb0\xc2\x7e\x5f\x5e\x64\x66\x7e\x95\xc2\xec\x9d\xf2\xd6\x52\x9c\xf5\x36\x22\xea\x10\xb9\x56\xb3\x45\xec\x55\xb6\xc3\x9a\x1e\x6e\xd8\x8a\xe6\x6e\x5b\x45\x71\x79\x42\x5d\x1a\x84\x90\x37\xb0\x7c\x46\xcf\x5f\x36\x33\x01\x09\x58\x37\xce\x81\x1b\xff\x49\x60\xbf\x9c\xbd\x15\x20\x1c\x1b\x67\x40\xbd\x70\x10\x21\x40\x74\x4c\x33\x27\xac\xa9\xd6\xd6\xd1\x54\x93\x67\x98\xac\x38\x1f\xa6\x39\xdb\x43\x6e\xe8\x16\x56\x67\xd5\x38\xa6\xc7\x4a\x23\x3c\x12\x4b\xf6\x04\xfd\xad\x51\x98\x4c\x41\x70\xb8\x20\x0d\x2d\xf7\x3c\x29\xbb\x1e\x37\x6a\xff\xc3\x14\xdd\xe3\xe8\x6a\xf9\xd2\xc2\xe6\xc3\xa6\x52\x4d\x32\x1b\xce\x93\xe2\x1f\xc9\x65\x56\x4f\xaf\x77\xd0\xcd\x1a\xcc\xb4\xd7\x62\x94\x85\xf5\x64\xc7\x9f\x4d\x8a\x2f\xde\xfb\x46\x54\x54\x02\x8c\x6d\xd1\x42\x80\x42\x80\x53\x70\x74\x33\x63\xbb\x18\x47\x6a\x3f\x23\x20\xdb\x25\x89\xc7\x21\x33\xcf\x5e\x29\xda\xfb\x7d\x07\xaa\x69\xa9\xb5\x81\xba\xb5\xa8\x3f\x40\x3e\xef\x91\x7a\xfa\x14\xb7\x64\xc3\x9a\x13\xc0\xc5\xea\x70\x19\xd2\xfd\xfb\xd7\xf3\xf7\xd4\x0e\xb6\x3b\x2a\x08\x4d\xa9\x21\x89\x5f\xe4\x8f\x4f\xd5\x94\x01\x7f\x82\x56\x9b\x46\x7a\xb9\x01\x16\x9e\xb5\xda\x9c\x40\x17\x1d\x5f"}, +{{0xb7,0x27,0x98,0xb8,0x11,0xe2,0x33,0x84,0x31,0x25,0x6d,0x24,0x80,0xfe,0x7a,0x36,0x63,0xac,0xec,0xbb,0xe6,0xe6,0xc1,0xb9,0x19,0x1e,0x9d,0x9a,0x22,0x44,0x79,0x40,},{0xce,0x49,0x1d,0xaa,0xd2,0x96,0xb5,0x57,0x27,0xb0,0x95,0x13,0xdf,0x02,0xba,0x59,0x28,0xa3,0x71,0x73,0x7c,0xd3,0x58,0x41,0xe5,0xf7,0x35,0xac,0xab,0x7c,0x5d,0xf8,},{0xdc,0xfc,0x6f,0xd4,0x77,0x99,0xfe,0xc7,0x72,0xc2,0x09,0x9b,0x3c,0x64,0x37,0x24,0x6c,0x3a,0xd0,0x72,0x29,0xfc,0x74,0x0e,0x05,0x31,0x1a,0x20,0x6b,0x18,0xb0,0x2e,0xcd,0xb0,0x26,0xc9,0x26,0xf4,0x9c,0x65,0x52,0xe3,0x47,0xfd,0x35,0xdf,0xde,0x06,0xcb,0x63,0x9a,0x79,0x7c,0x50,0x61,0x2f,0x98,0xe2,0x47,0x8a,0x92,0xaa,0xf6,0x09,},"\xa5\xd4\x62\x98\xb0\x79\x06\x10\xae\xdc\x09\x70\xfe\xa2\xa7\x07\x50\x81\x84\x72\x66\xf2\x2f\x12\x47\x8b\x93\xd7\xe6\x74\xc6\xc5\x17\xf3\xc1\x4e\xd0\x61\x26\x9d\x17\x0a\xc3\x1e\x2a\x64\xf9\x75\x4a\x56\x5b\xac\x1d\xd9\x75\x73\x22\xc1\x11\x32\xe7\xbb\xee\x5f\x32\x81\x8e\x0e\x30\x63\xab\x64\xe5\x52\xd0\x9b\x0f\xd1\x75\x76\x39\xb9\xb9\xd1\xc7\x70\x01\x6b\x67\x74\x65\x87\x2b\x66\x9d\xd4\x8b\xe0\x38\x66\x57\x51\x67\x4d\xd2\xf4\x0a\x96\x6a\x26\x74\x8f\xd3\xe5\xdb\xfd\x92\x26\x5e\xb9\x36\xf5\x5b\x09\x42\x86\xc0\x10\x62\x99\x04\x34\x7c\xb4\xc5\x26\xe3\x77\x47\x0a\xa9\x6e\x81\x69\xa6\xf2\x11\x63\x38\x07\xa5\x00\x30\xe7\xff\x68\xe3\x89\x11\xb3\x55\x5e\x72\x8e\xd8\x59\x0b\x2d\xc4\x5f\xea\x69\x94\x5c\xc0\xc9\xa3\xd3\xe6\xc9\x54\xb3\xe8\x01\x06\xa5\xc9\x1d\x3d\x22\xe8\x9e\x8c\x0e\x1d\xe9\x02\x05\x8e\x9c\xd0\xf8\xce\x80\x6e\xac\x4f\x89\x3e\xe0\x42\x99\x00\xfb\x54\x87\xb8\xfd\x36\xdb\xdc\xb3\x4f\x2d\x54\xfc\x6c\xc7\x4a\x92\x39\x51\xb8\x63\xda\x70\xf1\xb6\x92\xbf\x04\x38\x48\x43\x66\xcd\x85\xee\xb8\x80\xb2\x79\xf8\xfc\xa9\xd3\x24\x2c\x55\x83\x30\xf1\xca\x57\xc6\xa5\x86\x08\xcd\xbc\x07\x73\xe1\x60\x82\xbc\xa9\x64\xdd\xc4\x03\x47\xda\x8a\x36\xb2\xa9\x32\x8c\x2f\x46\x60\x9e\x09\x2f\xd6\x4b\x41\x34\xee\xe1\xd0\x99\x81\x3e\x12\x46\x48\x9e\x8e\xe5\xb1\x9b\x3d\x3b\x89\x1c\x28\xf3\x0b\x38\xb6\xa2\x8e\xc1\xd3\xe9\xb0\x05\xde\xc9\xc6\x3f\x8b\x98\x13\xbc\x1d\xe4\xaa\xf9\x95\xf1\x77\x9d\xde\xd1\x5c\x7a\x43\x0d\x70\xca\x46\xe7\xca\xfd\x4e\x9a\x54\x38\x04\x44\x6a\xb0\x80\x7d\x64\xf2\x55\xe2\x01\xef\x42\x8a\x47\x4d\xae\x8a\x0a\x75\x02\x1b\x62\xad\x39\x88\xff\xb8\x1c\xd8\x22\x1b\x24\x30\x85\xa0\xad\x04\x6f\xdc\x16\xc6\x7f\x17\xb9\xf8\x18\x20\x09\x59\x53\xa5\xb9\x8a\xcb\xdf\x93\xeb\xcf\x80\xbc\x9c\x99\xaf\x5f\xbf\xfa\xcb\x61\xa9\x25\x1c\x5a\xaf\xdb\x22\xb1\x12\x9b\xfc\x60\xc9\x8e\x0f\x17\x52\x63\xbd\xf9\x3d\xc9\xa0\x8b\x8e\xfc\x2e\x8c\xda\xf0\xf8\x3d\x6c\x49\xec\x90\x16\x45\xea\xc5\xa4\xff\x63\x38\x5a\x6f\x1a\xf2\x07\x18\x97\x66\x2a\x37\x22\x19\xc9\x30\x1f\x54\x5a\x2e\xbb\x8f\x59\x17\xdb\x7f\x29\xca\x13\xfc\x86\x1a\xf3\x8d\x90\xc3\x5c\x03\xac\x91\x84\xc1\x22\xe5\x7b\x05\x7c\xde\x42\x6f\xd7\x6d\xca\x79\xe2\x5e\x64\xdb\xb4\x1c\x84\x14\xa0\x45\x0d\xa4\x90\x5b\x90\x2a\xe9\x8d\x2d\xa4\xba\x79\x28\x01"}, +{{0x1f,0xe7,0x32,0x7e,0xa9,0x07,0xd3,0xff,0x17,0x9b,0x11,0x78,0x11,0xd3,0x01,0x93,0xfc,0xba,0x4c,0x34,0x7b,0x90,0x65,0x7f,0xee,0xd9,0x8d,0xee,0xec,0xda,0x9a,0xc9,},{0xee,0xf3,0x01,0xb1,0x6f,0xd7,0xbf,0x3c,0x7b,0x64,0x0b,0xf5,0xee,0x87,0x00,0xac,0x5a,0x87,0x16,0x9e,0xab,0x5f,0x56,0x01,0x5b,0x3f,0x49,0x9d,0x95,0x5e,0x07,0xeb,},{0x9c,0x7f,0xdb,0x53,0xfd,0x60,0x6b,0xc7,0xc9,0xc2,0x23,0xfe,0x94,0x31,0xe1,0xad,0x00,0x95,0x46,0xd0,0x00,0x98,0x81,0x2a,0x49,0x51,0x97,0xf2,0x54,0x1e,0x87,0xf8,0xd6,0xf5,0xda,0x22,0xec,0xef,0xcb,0xb7,0xda,0x56,0x66,0x2a,0x73,0x09,0xd1,0x0a,0x6c,0x4a,0x4f,0x7f,0x29,0x92,0x78,0xd5,0x1b,0xbd,0x11,0xe0,0xcc,0x1b,0x87,0x09,},"\x19\xa8\x32\xf2\x6f\xbb\x02\x39\xf0\xd9\xd2\x6a\x2e\xbd\xed\x24\x03\xc2\xa4\x06\xdd\x1f\x68\x31\x8d\x67\x7a\xfa\x64\xf3\x50\x43\x31\x6a\x5e\xfd\x72\x97\x83\xc7\xf9\xd1\x8c\x09\x82\x46\x14\x65\x20\x91\x88\x6c\xc9\x54\xbe\x9f\x93\x12\xd4\x58\x6b\xf3\x6f\x30\x35\xac\x70\x34\x38\xb0\xcf\xe3\xde\xc5\x07\x78\x13\xc7\x10\xd1\x44\x75\x61\xab\x61\x57\xbc\x7a\xd5\xea\xb5\xb0\xc0\xaf\xdc\xc9\xdb\x77\xe6\x6f\xa8\x07\x13\x66\x82\x9c\x50\x10\x96\xc3\xd3\xa9\x38\x21\x8a\x6e\x42\x07\x10\x9d\x1e\xb8\x1f\x7d\x88\xbd\x6f\xbb\x2a\xef\xb1\xad\xef\x35\x94\xaa\xe5\x7c\x46\xb7\xb9\x84\xdb\x94\x68\xcd\x96\x2c\x61\x84\xfb\x97\x6f\x0e\x2a\xa8\x41\x52\xde\xb1\xc7\x6a\xea\x75\xae\x48\x84\x42\x94\x3a\x80\xba\x7d\x98\xa2\x8c\xb8\x64\xb5\xe8\x7c\xdb\x28\x4a\xd6\xe8\xd7\xaa\xdc\x6b\x75\xd6\x9d\x3b\xd3\x45\x78\x3b\x3e\xbb\x67\x6f\xf9\x5d\x7b\x41\x91\xe5\x99\x85\x1c\x96\x28\x83\x5c\x7c\x01\x19\x7e\x7c\x8f\x86\xf9\xc8\xfb\x49\xfe\x3e\x28\x45\x8b\xa9\xb0\x23\x62\x19\xbd\x46\xc2\x8d\xf6\x53\x24\x96\x99\x4a\xc9\xba\x73\x3c\x01\x05\xa0\x2a\x26\x9a\x2b\xe8\xb7\xcb\x40\x07\x4b\x88\x16\x02\xef\x92\x47\x05\x2d\xe9\xd6\x37\x08\x91\x88\xbd\x4c\x18\x5c\xca\xe2\x58\xa2\xae\x98\x56\xa2\xcb\xf8\x45\x11\x17\x68\x3c\xe3\x41\xf8\x09\x6e\x1d\x91\xe8\x74\xc5\xcb\x8a\x4e\x09\x39\xeb\x77\x37\x3a\x9a\x0e\xb7\x91\x64\x5b\x8f\x54\x60\x47\x2d\x66\x9d\x80\x14\x68\x1a\x5e\x77\x87\x06\xcb\x55\x66\xbb\xd4\x72\x7d\x17\x16\xb2\x3c\x62\x0d\x22\x8b\x5d\x4d\xc2\xb3\x52\xb4\x23\x93\x1f\x8a\x7e\x8f\xb5\x9e\xda\xd8\xae\x42\x45\x87\x29\x86\x1a\x98\xe0\xc8\x50\xa7\x7e\xd6\x55\xe7\xfc\xfe\x4f\xe3\x6f\x97\x72\xdf\x1a\xc3\xc6\x43\xad\x31\xdb\x56\x30\xd5\x71\xdf\x9f\xcc\x9c\x50\xde\x76\x22\x10\x84\x11\x96\x2b\xbf\x72\xde\xfb\xf4\x9e\x99\x70\x59\xc7\x31\x1b\xd9\xdd\xd5\xb3\x38\xa9\x85\x19\x38\xd3\x7e\x7a\x26\x21\x08\xa2\x91\xe2\x01\x68\x03\xbb\xef\xf4\xf9\xc7\x76\x12\x5c\xeb\x7e\x72\x72\xb5\x1c\x7c\x33\x46\x1d\x80\x89\xf8\x40\x8d\x8d\xda\x92\x50\x6d\x50\x02\x08\x4d\x4f\x41\x4d\x8a\x4d\x28\xd3\x69\x4c\x88\x63\x0e\x31\x80\x19\x90\xd9\x52\x71\xce\xf4\x7a\xa5\xc2\x63\xf9\x7b\x7d\xac\xa1\x78\x87\x01\x43\x63\x29\xb5\xbf\xaf\x72\x65\x3c\x16\x6d\xb0\x87\x70\x81\x30\xc5\xc0\xd7\x8c\xc4\xe9\x06\x4f\x86\x06\x80\x27\x1a\xfe\x4c\x40\x98\x53\xc2\xfa\xd6\x75"}, +{{0x5f,0x9d,0xcd,0x93,0xfb,0x14,0x06,0x10,0xb0,0xe2,0x11,0xb3,0x9a,0xdd,0xb1,0xeb,0x87,0xba,0x97,0x80,0x48,0x77,0xaf,0xbc,0xc3,0x81,0x38,0x8c,0xad,0x65,0x08,0x45,},{0x18,0x2a,0x23,0x7d,0x87,0x8c,0x58,0x19,0x33,0x33,0x2b,0x41,0x78,0xb6,0x7e,0xc4,0x08,0xb3,0x19,0x4d,0x44,0xe4,0xe6,0x93,0x92,0xef,0x80,0x0b,0x26,0x7c,0x29,0x49,},{0xc1,0x91,0x5e,0x05,0x2b,0x66,0x47,0x97,0xe0,0xd5,0xfa,0xad,0xc7,0x8f,0x2a,0x00,0x9d,0x6f,0xbc,0xfd,0xe0,0x3f,0x3a,0xaa,0xd5,0x9b,0x9f,0x45,0x88,0xe7,0xfc,0x3b,0x21,0x99,0x0c,0x52,0x08,0xd3,0xd7,0x6b,0x4a,0xa9,0x5b,0xd9,0x34,0xe8,0x8d,0x3c,0x98,0xc5,0x91,0x93,0x0a,0x59,0xde,0x2a,0x05,0x67,0x01,0xd9,0xf7,0x57,0x74,0x00,},"\xc3\x8b\x87\x4d\x3f\xf0\x10\xff\xf1\xa6\x61\x3b\xfa\x13\x42\x57\xb2\x48\x33\xcb\x53\x6d\xe3\xe7\x49\x92\xc3\xcb\x01\xfe\x3b\xbd\xee\xd9\x7d\xc3\xc4\x59\x6f\xa4\x40\x61\x44\x2b\xd3\x1a\x9d\x4a\xa8\xc8\x1e\x34\xad\x98\x88\x71\x82\x06\x63\x55\x09\xb1\x33\xb1\xba\x69\xcb\x1a\xa0\xe7\x5c\x7a\x18\x93\xc0\x80\x16\x1d\x26\x15\x2a\xce\xf4\x0f\x6e\xf4\x21\x0e\x95\x2a\x49\x82\x8b\x5c\xdd\xe8\x04\xbc\xb5\x36\xcd\xc3\x49\xa8\xe8\x31\xb4\xb6\x9d\x37\x85\xa7\x6b\xd9\xfb\x27\x08\x05\x65\x97\x2d\x0b\x8f\xbd\x16\xf3\xf9\x60\xa6\xbf\x3b\xa0\xc5\xb9\xc4\x04\x96\x7e\xc1\xaf\xfe\x59\xb8\xc4\xec\xc6\x50\xfd\xde\x1c\xb0\x6b\x70\x59\x5a\xd4\xd3\x25\xda\x0f\xab\x4c\x55\x40\xa7\xa8\xd5\xeb\xea\xcc\x4e\x99\xbd\x0d\xc9\x6b\xde\x82\xf2\xbd\x7d\x95\x86\x30\x84\x65\xe5\x5b\x1c\xc3\x88\xd7\x50\x48\x6b\xdd\x5c\x72\x64\xd5\x4f\x56\x14\xd4\x87\x26\xd9\x9e\x44\xd7\x77\x8d\x9e\xd0\x32\x39\x58\xab\x98\x58\xe2\xb2\x5d\xf2\xbf\x99\x4b\xa3\xe6\x25\xe2\x80\x3b\x6c\x69\x31\xe7\xa9\x92\x6f\x1e\x61\xed\x86\x24\x03\xce\x39\x2a\xb8\x3b\x7d\x1b\x66\x08\x5d\xcc\x06\xd8\x2d\xbf\x17\x6d\x01\x6d\x9f\x44\xcd\xcb\x50\x72\xd0\x04\x59\x1e\x92\xd0\x45\x9e\xf0\x5a\x51\xb8\xf5\x4b\xa1\x72\x51\xe1\x66\x21\xeb\xb7\x53\xe5\xb1\x59\x0c\x02\xd2\x1e\x40\xf4\xb7\x5e\xee\x46\x02\x86\x0b\x97\x41\xfb\xbc\x0d\x2e\x38\x5b\x8d\xac\xa8\x3c\xce\x68\xc3\x4a\x99\xbd\xe6\xa6\x0d\x13\xba\x64\x34\x7d\x0a\x38\xd6\x4b\x2a\xde\x25\x0f\x38\x85\x2c\x4e\xda\x2e\x2e\x4f\x30\x3c\x3d\xe1\xa8\xa9\xd4\xab\x33\x00\xc9\xe6\x36\x22\x87\x9f\xc8\x53\x7f\xfc\x63\xb1\x85\x61\xfa\x1f\xff\x65\x53\x12\x41\x51\x5a\x62\xbb\x9b\x08\xb8\x0a\xf3\x76\x67\xa6\x01\xae\x04\x17\x17\x93\xcc\x83\xb1\x1a\xdf\x9c\x30\xca\x9f\x4d\xab\xc7\xb4\x01\xe1\x6a\x18\x14\xcf\xc7\x50\x24\x8c\xc2\xf7\x7e\x03\xf9\xc4\x33\x44\x65\xff\x6a\x2c\x83\xcb\xb5\x6d\xb4\xb7\x34\x75\x10\x43\x83\x2c\x40\x00\x97\x2e\xe3\x23\x2f\x92\x9f\x23\x33\x7e\xba\x5e\x65\x1e\x34\xcb\xdd\xfe\x68\xba\x21\x9b\x63\x2e\x7a\xcd\xbd\x46\x30\xa0\x31\xbf\x16\x89\xfb\xbc\x7f\xbb\xb2\x10\xdb\xf2\x5e\xe8\x7e\x2e\xf2\xb3\xcb\xaf\x8d\x9e\xbd\x8f\xc9\x2c\x3a\x58\xd3\xc0\x5b\x13\x85\xa7\x6c\x87\x79\x1d\x7c\xd3\x74\x1b\x71\xb6\xc3\x29\xde\x9a\x9d\x75\x08\xa0\xc1\x56\xa9\x52\x1a\x90\x20\x56\x30\x99\xa8\x2b\x87\x70\xae\x9a\x94\x4a\x7e\x94"}, +{{0x92,0x5e,0xbe,0x04,0xc6,0xea,0xc4,0x9b,0x26,0x73,0x8d,0x6c,0x13,0x00,0xf3,0x1f,0xd4,0x82,0x84,0x78,0xcb,0xe9,0x7d,0xab,0x18,0xbb,0x88,0x96,0x42,0xe1,0xe1,0x10,},{0xcd,0x72,0x31,0xb6,0xeb,0x74,0xe1,0xfe,0x9f,0x92,0x6f,0x00,0xd8,0xde,0x2c,0x51,0x3d,0x49,0x64,0x05,0x25,0xb0,0x79,0x5c,0xab,0x89,0x3d,0x0c,0x89,0x29,0xe3,0xe0,},{0x2c,0x4d,0x69,0xbe,0xd5,0xad,0x8b,0x95,0x84,0xd8,0x49,0xcf,0x3d,0xf2,0xba,0xc7,0x22,0x82,0xb5,0xf3,0x0d,0xe2,0x66,0xb1,0x4f,0x53,0x3c,0xa9,0x6e,0x95,0x50,0xc4,0xb8,0x54,0xc1,0x54,0xbd,0xc1,0x7a,0xa8,0x80,0xcf,0x00,0x1a,0x64,0x54,0xff,0xaf,0xaa,0x2e,0x50,0x17,0x8d,0xe2,0x12,0x16,0xed,0x12,0x6b,0x63,0xf7,0x7f,0x2d,0x02,},"\xe6\xc0\xba\xd2\x3a\x92\xae\x8b\x1d\x85\x77\x82\x88\x15\x7a\xc6\xc6\x17\xc6\x33\x63\x34\x1d\x77\x78\x70\x34\x1b\xb1\x0a\x8d\x3d\xfc\x89\xbe\x4f\x55\xad\x4f\x64\xe8\x3b\xf2\x49\x9b\x69\xfd\xf7\x21\x74\xd2\x84\x4e\x6b\xd2\x89\xda\xaa\x03\x5f\xec\x5b\xf7\xcf\x45\x52\x21\x19\xdc\x7a\x8c\x81\x1d\x79\x57\x8c\x5b\xb0\xf6\xd3\x4d\xb5\x07\xad\x1f\xb6\xdb\xff\xf9\x97\xb7\x9d\xac\xfb\x3d\xa5\x0a\x41\x5e\x35\x0c\x99\x8c\x0a\x02\x80\x0a\xa5\x0f\xfd\xfe\x5f\x42\x76\xd8\xe6\xbb\x82\xeb\xf0\x47\xfe\x48\x71\x1d\xaf\x7a\x89\x3b\xdc\x75\x37\xbd\xae\xdf\x3d\xcb\x4d\xec\x5d\x24\x58\x68\x11\xf5\x9b\x25\xb1\x9e\x83\xca\x61\xe5\x59\x2f\xed\xc0\x8c\xa5\x44\x73\xce\xa2\xec\x12\x1b\xaa\x0e\x77\xfb\x2d\x9d\x76\x56\x57\xde\x67\x98\x0e\xd5\x7f\x2f\x17\x78\x58\xb6\xde\xcf\x84\xff\x90\x21\x2d\x96\x47\xf4\x1e\xed\x9b\x9d\x0e\xa3\xd8\xd6\x21\xe4\xbb\x40\x41\xac\xc5\x14\x6e\x96\xdf\xcf\x14\xea\x96\x2d\x30\xc8\xcc\xb3\x9e\xa2\xbe\x95\x8c\x9b\x87\x74\x45\x1b\xfe\xb7\xdd\xce\x71\x6e\x94\x92\x3c\xc8\x5f\xbd\x3a\x31\x30\x78\x0e\x2b\x3b\x2b\xb7\x6d\xa5\x34\x19\x12\xa4\xe9\x94\xca\xfa\x19\xbb\xa1\x97\x32\xf2\xea\x40\x2d\x71\xd3\xd8\xa9\x69\x67\x9b\x9d\x10\x42\x43\xd9\x83\x9c\x69\xee\x9e\x95\x5e\x1c\x60\x44\x97\x88\xd1\xf4\xf6\x65\x1f\x4b\xc9\xb9\x4d\x73\x52\x2e\xc0\xcf\x72\xca\xcf\xcf\x19\xf1\xf0\x3a\xd6\x23\x21\x04\xb5\x5c\xbb\x8b\x5b\xb1\xe2\x13\x44\x71\x3d\x48\x27\x42\xd6\xab\xc5\xa9\x57\x17\x4f\x62\x3b\x84\x95\x27\x2c\xc1\xe2\xb8\x31\x5e\x5c\x80\xf9\x47\xf5\x00\xc8\x3d\x85\x44\xf7\xcd\x4f\x65\x34\x89\x49\xef\x44\x20\xd7\xfc\x83\x1f\xa4\xae\x2e\xe1\x8d\xbb\xa6\x14\x92\x5c\xe1\xd7\x67\xc1\x77\xa6\x26\xc4\x52\x7a\x81\x54\xb5\x72\x92\x18\x6b\x04\x4c\xbf\x92\x89\x42\x53\xb0\x0f\xd9\x34\x3f\x9e\x69\x7b\x14\x12\xeb\xa4\x35\x97\xeb\x72\xa6\x69\xaa\xa2\xd7\x7e\xac\xb9\x68\xc2\x0f\xe1\x95\x05\xa3\x80\x74\x15\x86\x21\xb6\x06\xf7\x7d\x97\xbc\x6e\xbe\x50\xe7\x58\x92\x93\xdb\x27\xfc\x7d\xfe\x63\x1a\x4b\xee\x83\xb2\x26\x82\xa7\x73\x28\xc3\x6d\x9d\x7d\x1d\x89\x1d\x65\x21\x7c\xc4\x78\x64\xf6\x80\xdc\x8b\x5f\xd1\xa0\x1a\x0f\x7c\x34\x43\x0f\x77\x06\x0b\x69\x1a\x1a\xd2\x13\xd2\x28\x68\xe6\x1b\xbd\x38\xf4\x3f\x0c\x8b\x4d\xa6\x8a\x58\x31\x86\x66\xc0\x99\x76\x61\x70\xc2\xdb\x76\x6a\xaf\x41\x7f\x55\x6c\xc9\xa0\xa3\x93\x4e\x9f\xce\xf1"}, +{{0x4d,0xd3,0xb4,0x78,0xeb,0xdc,0x59,0x47,0x2b,0xab,0x14,0xa8,0xcd,0xd0,0xc2,0xfd,0xac,0x57,0x23,0xee,0x04,0xdd,0x89,0x17,0xc7,0xcf,0xe7,0xa5,0x36,0x48,0x5c,0x77,},{0x5b,0xcc,0xb3,0x7e,0x68,0xc2,0x34,0xbe,0xad,0x49,0x33,0x7d,0xe2,0x08,0xaf,0xba,0xf6,0x11,0x81,0x1d,0x96,0x58,0x59,0xa0,0x6d,0x31,0x30,0x12,0x47,0xd6,0x6a,0xcf,},{0x57,0x88,0xe7,0x9e,0x84,0x3b,0xde,0x9e,0xf1,0x1a,0x9d,0xfa,0xc9,0x70,0x19,0x6a,0x56,0x7c,0x63,0x08,0xc3,0x48,0xe5,0x17,0x4b,0x38,0x77,0x95,0x04,0x6d,0x59,0x0a,0x47,0x49,0x1f,0xd7,0x1d,0x97,0xae,0xaa,0x78,0xc1,0x61,0x59,0x71,0xb8,0x34,0x90,0xe8,0x59,0x28,0x20,0xf9,0x59,0x2a,0xc7,0x62,0x69,0xb9,0xd2,0xba,0x70,0x29,0x01,},"\x1c\xdb\xd2\x85\x56\xec\x44\xe8\x70\x5a\xfd\xa9\x2b\xd5\xa5\x3f\x95\xd8\xfe\x8b\x0f\xfe\x46\x33\x73\x63\x33\x16\xc5\x22\x74\xc1\x1e\xdc\xd6\x15\x51\xe3\x19\x9e\x49\x4d\xff\x6d\x90\x6a\x73\x9e\x7b\x32\x43\x03\xfc\x47\x82\x7e\x56\xde\xf0\xbd\xcc\x46\xb8\x16\x01\x7c\x71\x23\x05\x37\x02\x63\xba\xbd\x2c\x71\xbe\x47\x8f\x41\xce\x30\xb1\xdf\x63\xbe\xdd\x3b\x2e\x6a\x51\x9c\x53\xdf\x51\x58\x52\xc4\x13\x7b\xc1\xac\xa4\x9b\xf4\xc4\x63\x1f\xd6\x56\x46\x57\xd1\x1c\xd8\x3e\xa7\x3c\xc3\xd0\xcf\x9e\x3b\x3c\x3e\x7c\xa9\x9b\x4f\x12\xa9\xc9\xb6\x7c\x87\x98\x14\x8e\x0a\x0d\xc1\xef\x8b\xf5\x86\x42\xa1\x4f\x97\xa5\x72\x13\x55\x14\xc1\x0b\x19\xaa\xbe\xc2\x5a\x9c\x6b\x35\xaa\x40\x34\xa5\x7a\xae\x1b\x6d\x05\xbd\xe2\xb6\x33\x0f\x25\x1d\x78\xdb\x09\x93\xf0\xca\x4c\x26\x38\x6e\x34\x89\xa2\x09\x28\x33\xb8\xac\xbb\xc4\xf4\x91\x7f\xd3\x09\x3d\xf5\x82\xff\xf7\x1e\xce\x21\x9d\x36\x72\x45\x55\x82\x60\x9c\x0d\xb8\xd9\x6a\x70\xfc\x8a\xed\x67\x98\xde\x54\xbf\xb2\xb3\xee\x6c\x5d\x32\x8d\xb1\x63\x59\x3f\x58\x01\x9f\x38\xf3\x39\xfd\x37\x53\xf8\x96\xa4\xa2\xcc\xa8\xc1\x40\x0a\x77\xea\x39\x19\x35\xf3\x4e\x26\x39\xc5\x60\x86\x08\x10\xbb\xbe\x4b\xe1\xd1\x6e\x01\x2c\x11\x49\x0a\xa8\x4f\x29\x64\xc8\x77\xc2\x93\xb3\x00\xf4\x3d\x37\x9f\x3e\xba\x9a\xf3\x91\xde\xe5\x10\x85\x6a\x4d\xdc\xf7\x6e\x0a\x0a\xe0\x6a\x6a\x7c\x0f\x9c\x5e\x3f\xa1\xb8\x35\x4f\xe8\x97\x7b\x4e\xa3\xb2\x06\x61\x49\x1f\xa4\x61\x3b\xa6\x2f\x55\x6d\x5d\x5d\xa8\x21\x3d\x01\x21\xde\x2c\x87\x25\xdf\x0a\xae\x04\x8a\xc8\x91\xab\xbc\x06\xbd\xce\xf3\xc3\xef\xfd\xf5\xa3\x17\x49\x47\x6f\x81\x4d\xb9\x45\x79\x45\xf0\xd9\x1e\x14\x08\x00\x56\xbe\x92\x1a\x16\xaa\x96\x4a\x92\x98\x22\x1b\x15\x75\x94\x97\x3e\x32\x96\x99\x93\x31\x0c\x87\x07\xe1\x9f\x31\x43\xab\xc4\xfd\xa7\xc8\xad\x01\x60\xac\xf0\x31\xab\xa6\x52\x80\x1a\xa8\x1a\x01\x6b\x31\x37\x03\x9e\x27\xd6\x73\x8d\x02\x80\x0a\x93\xa8\x6f\x9f\x55\x85\xc5\x18\xdf\xa9\xe7\xd8\xac\x72\x7f\x37\x43\x7e\x56\xd2\x78\x83\x86\xe1\x16\x53\xa0\x4e\x16\x51\x69\xf9\x03\x97\x2a\x01\x48\x47\x51\xe7\xcb\x38\x63\x25\x90\xec\x80\xd5\xfc\xe4\x54\x16\x01\xa0\xe0\x95\x78\x5a\x9e\xe8\xd3\x59\xed\xf2\x6b\x99\x46\xe7\x98\xda\x59\x98\xcb\xb7\x36\xf9\x4e\xb7\x13\x46\x3f\x79\xf5\x61\x75\x9b\xbc\xb4\xc4\xac\x69\x3c\xab\xf2\xe1\xe0\x36\xb2\xd0\xb0\x87\x9a"}, +{{0x07,0x4d,0x92,0x18,0xc1,0x21,0x7e,0x75,0x82,0x3c,0x90,0xe0,0x10,0x48,0x4c,0x2a,0xdb,0x88,0xec,0xcc,0xd2,0xbd,0xf0,0x12,0x0a,0xa3,0xed,0xff,0xcf,0xcb,0xd4,0xbf,},{0x37,0x35,0xad,0x19,0x19,0x03,0x3d,0x16,0x17,0xb8,0x5b,0xda,0x04,0xb1,0x61,0x21,0xda,0x1d,0x86,0x1b,0x40,0x41,0x54,0xfa,0x96,0x1d,0x49,0x46,0xe5,0x5e,0xcd,0x83,},{0xb1,0xf7,0x1c,0x3b,0xd1,0xb6,0xbe,0xc4,0x33,0x37,0xe2,0x6d,0xee,0x65,0x5a,0x8d,0x5f,0x4a,0x8d,0xad,0x84,0xa5,0x11,0x84,0xb7,0x75,0xb6,0x86,0xfa,0xd3,0x1d,0x80,0x29,0xe3,0x87,0x69,0x27,0xf9,0x57,0x6e,0x90,0xc3,0x62,0x48,0x75,0xfc,0x00,0x29,0xa5,0xc1,0x0a,0x8a,0x0a,0xf7,0x5d,0x7a,0x88,0x0c,0x68,0x44,0xa4,0xa8,0x3a,0x00,},"\x6b\x5a\xa4\x0e\x91\x67\xbf\xdb\x84\x7d\xaa\x7d\x27\x86\xe2\x8e\x75\x33\xe1\xd6\xac\x53\xbe\xb6\xf6\x9b\x59\x53\x79\x5a\x2b\xf5\x9b\xbf\x7d\x14\x19\x26\x96\x8f\x50\x96\x9b\xad\x74\x2a\x4f\xb5\x79\xd3\x25\x0f\xb1\xbe\x4c\x57\xeb\xf4\xf9\x11\x2c\x70\xcd\x9f\x72\xa0\x0d\xb1\xc8\x89\x6f\xe2\xb5\xbd\xa7\xc7\x03\x0f\x49\x7c\x0b\x00\x1e\xa2\x5b\xa0\xd4\x47\xf0\x8c\x36\xdb\x8b\x90\x7c\x2f\x2a\xbb\xbb\x62\x0d\x3e\x8a\x2c\x66\xe4\x17\x12\x85\xad\xca\xad\xd1\xc1\x4f\xe2\x39\xbc\x59\x5f\x09\x83\x96\xaa\x87\x80\xff\xb8\x0f\xe1\x44\x6a\x07\x00\x1e\xc2\x34\xd8\x2a\xbd\xcd\x81\x00\x79\x39\x15\xb0\xb3\xf8\x0d\x84\xe2\x0e\x51\xea\xbc\x79\x78\x06\xf3\xbe\x81\x08\xa4\xf4\x37\x55\x0b\x06\x69\x40\x50\xa8\x29\x31\xac\x40\xc0\xa4\x89\x77\xed\xf6\xce\xd2\x42\x8d\x7c\xfe\xa8\x20\x55\x06\xde\x86\x40\x80\x65\xd1\xa1\x98\x70\xfa\x33\xa7\x08\x10\x37\xb3\xee\x44\x91\xb6\xe7\xf3\xd1\x0b\x14\xa3\x0c\x20\x91\x59\xa1\xc8\x12\x31\xa3\x5f\x03\x65\xb4\x7d\x3e\x0d\xa0\x4a\x32\xc9\x5d\x98\x33\x3c\x44\xf5\x72\xcd\xaa\xa9\x05\xd0\x69\x19\x7f\x6e\x86\x1b\x5d\xfc\xdf\xb9\xdb\x6c\x7b\x0d\x0c\xb0\x0f\x37\xc9\x16\xa1\xc4\xc0\xb8\x98\x5b\x09\xf3\x34\x09\x5e\x12\x83\xed\xfd\xd4\xe6\x2a\x29\x41\x09\x9a\x2b\x69\x36\x96\x60\x4d\x99\x43\x11\xe3\xd5\xf6\x10\x66\x83\xe1\xd7\xa1\xc7\xe5\x3d\xf7\xb7\x90\x94\x7a\x9a\x80\x1a\x0c\xcd\x48\x43\x95\xf6\xcb\xfd\x9c\xa4\xd9\x80\x4f\x18\xd5\x2b\xb0\xf9\x46\xd1\xa8\x9f\x97\xa6\xfb\x06\x80\xa8\xc4\xc0\x57\xb6\x06\x2b\x2b\x9d\xe7\xc0\x37\x48\x79\xb8\xa6\xa6\xd2\xc1\x0a\xef\x78\x05\x08\xeb\x28\xbb\x56\x9a\x08\x35\x09\x44\xc8\x2f\x6e\xf2\x8d\xb2\x30\x4d\xb6\x97\xc3\xae\x1a\xf4\x3a\x50\x0b\x0b\x97\x48\x03\xe9\xf4\x6e\xa2\xa0\x2e\x85\xed\x27\xdd\xa6\x16\xd2\x4d\x6d\xb3\xcc\x4f\x5a\xed\x82\x40\xb1\xae\xa3\xdc\xf6\x9d\xee\x5f\x14\xf9\x5e\x6e\x72\x98\x7b\xbe\x61\x89\xbc\x20\x45\xf0\xd7\x83\xa7\xb4\x7b\xfc\x19\x83\x0b\xc7\xf4\xe7\x98\xab\xe9\x02\x45\xfb\xd4\x3f\x37\xc3\xf0\x36\xd1\xcb\xf1\xe7\x3d\xcb\x1d\x9d\xaa\x87\x37\x9b\x11\x06\x97\x34\x81\xa2\x15\xc1\xf4\xf4\x6c\x16\x03\xa5\xd5\xcd\x97\xb7\x07\x6f\x1f\x5d\xc7\x89\xaa\x6a\x71\xe7\x2e\xf5\x4e\xd3\x28\xa4\xab\x64\x34\x05\x39\xff\xd1\x64\xd0\xec\x64\x5f\x32\x2d\x1b\xc3\x71\x12\xdc\x08\xd8\xc8\x07\x9d\x19\xd3\x7a\xbb\x23\x53\xf4\x8b\x5c\x49\x2f\x80\x6e\xd2"}, +{{0xd2,0xea,0x2d,0xff,0x7a,0xf0,0xba,0x2a,0x6b,0xed,0x7f,0x6c,0xc6,0x8c,0x0d,0xf6,0x64,0xa6,0xb1,0x0c,0xe8,0x01,0xc4,0x2e,0xd5,0xbb,0xe6,0x17,0xbc,0xc8,0xb8,0x4a,},{0xab,0x44,0x70,0x63,0x44,0x02,0x6e,0xd3,0x5e,0x21,0x98,0x29,0x64,0xf7,0xb4,0xdb,0xbb,0xe2,0x07,0xfd,0x27,0xc4,0x67,0x99,0x70,0x1c,0x19,0xa4,0xd8,0x8d,0x1d,0x72,},{0x9a,0xbd,0xb9,0xdd,0x2a,0xb7,0x7b,0x6f,0x5e,0x1b,0x91,0xba,0x0b,0x61,0x3f,0x5f,0x36,0x0e,0xfb,0x50,0x0d,0x3f,0xe9,0x92,0x90,0xef,0x7c,0xa1,0x4b,0xd2,0xb3,0x30,0xf4,0x05,0xa4,0xf7,0xdc,0xda,0xef,0x49,0x23,0xd3,0x11,0x1d,0x40,0xbf,0x03,0x20,0x35,0x33,0x86,0xf6,0x34,0xb4,0x0d,0xe6,0xf0,0x4d,0xe9,0x19,0x0a,0xd5,0x1c,0x08,},"\x03\xab\x5d\xae\xbc\x6e\x70\xd3\x52\x97\x79\x32\xa0\x31\x07\x87\x9b\xd5\x5d\xaf\xd0\xc6\xba\x7a\xd9\x69\x7a\x17\xb1\x27\xb3\xa7\x4a\x3e\xae\xba\xbd\x0f\x8e\xee\xbf\xc0\x48\x3d\x63\xfe\xdd\xe5\x2d\xeb\x46\xa3\x75\x24\x49\xc9\xc4\x49\x5c\x51\xa1\xc9\x1f\x57\xe3\xad\x2e\x6d\x01\xa1\x3d\x0c\x47\x0c\x52\x91\xb8\xe9\x12\x28\x83\x40\x97\x0f\xbb\x85\x78\x7b\x8b\x37\x6d\x72\x17\x52\x50\xe8\xcd\x90\xc0\x78\x88\xbf\xef\x5e\xbf\x50\x86\xc8\xff\x2a\xbc\xdd\x12\xd2\x14\xb9\xc4\x5d\x12\x08\x73\xb4\x60\x2e\x57\xa6\xaa\xb0\xb8\x28\xd1\x08\x4d\xff\xaa\x36\x51\xee\x35\x66\x26\x95\xb7\xf3\x43\x3f\x4a\xb5\x30\xc2\x9a\xc6\xcc\x5b\xb4\x3e\xcc\xd1\xb6\x89\x8b\x9e\xf7\xae\xc6\xd5\xae\xc6\x8d\x5c\x11\x14\xbb\x5d\xf7\x82\x09\x66\x59\x4c\x99\x4d\x64\x08\x91\xb8\xf2\xdc\x5d\x25\x63\x8d\xe4\x35\x49\xd8\x6d\x34\x30\x6f\xf3\xf5\x74\x57\x51\x16\x40\x5b\x9e\x8e\x28\x6e\xe0\xcd\x97\x8a\x76\x00\x2c\x44\x35\xfe\xaa\xc6\xe8\x4e\xae\x16\x54\xf3\x39\xa5\x67\xd8\xd0\x4f\xcf\xa3\xeb\x6a\x04\xb9\xad\xc6\x66\x02\x13\x00\xe9\xee\x59\x72\xb3\xdf\x5d\x4d\x0d\xd4\xbf\x79\x21\xdc\x98\xde\x82\xce\xf2\xd1\xb1\xd6\x1b\x79\x7f\xc9\x96\x8e\x11\x84\x84\xc4\x13\x42\x41\x6d\xdc\x6a\xdc\x4e\xe5\xd6\x87\xd9\x4a\x40\xce\x57\x2f\x42\xa2\x04\x86\x68\xc1\x75\xcf\x7b\x1f\x24\xc4\xef\xd0\x20\x55\x4f\xc6\xf6\x42\xe1\x4a\x57\xba\xec\x23\xe9\x5c\x25\x14\x30\x6d\x0a\x6d\x33\x64\x88\x41\x49\x7e\xac\x48\xea\xbd\x96\xd0\x47\x31\xba\xb0\x8b\xf5\xea\x9d\x43\xe0\xcf\x9a\x37\xfa\xaf\xa7\x32\x86\x9d\x68\xe7\xd5\xfe\x69\x54\xf8\xa3\x19\xef\x55\xda\x1e\x17\x8e\x43\xe8\x4a\x3b\x9a\xa3\xad\x00\xc2\x9b\x1d\x16\x11\x63\xdf\x4b\x79\xf2\x88\xe9\x39\x1d\x70\xa2\xf8\x81\x3d\x66\x62\x2e\x8a\xc3\x33\xfa\x6a\xa5\x31\x1e\xab\xec\x38\x3b\xa4\xcc\x12\x28\x15\xde\x00\x88\x77\xef\xbe\x6e\x12\xc3\x22\xc9\x75\x43\x4a\xfa\xd1\x73\xeb\xe2\x42\x03\xd9\x16\xd5\x75\x78\xbd\x2b\xca\xcc\x78\xf6\xe2\x56\x45\x13\xf8\xd1\x13\xa8\x33\xc2\xc2\x26\xeb\x97\xba\x2e\x23\x36\x1a\x5d\x02\x66\x4a\xb3\x77\xf9\x64\xc4\x30\x0b\xe2\xd7\x7b\x62\xd9\x24\x08\x23\xa0\x98\x84\xdf\x30\x7e\xff\x3b\xe5\x66\x4d\x72\xd1\x1a\xd5\x13\xe1\xbc\x56\x10\xdb\xfd\x10\x09\xdb\x39\xf0\xcb\xfe\x47\x05\x55\xec\x1b\x56\xb8\x71\x67\x07\x93\xd3\xb7\x04\xfb\x06\xee\x95\x0b\x1a\xd2\xa4\xd7\x29\x7c\xa5\x8b\xba\xd8\x10\xc3\xfa\xd4"}, +{{0x7a,0x60,0xcd,0xf1,0x87,0x04,0x60,0xde,0x8a,0xe7,0x78,0x11,0x76,0xd5,0x12,0x7e,0x71,0x20,0x7f,0xaf,0x2f,0x21,0x0b,0xd4,0xdc,0x54,0x73,0x85,0xb6,0x67,0xf2,0xf2,},{0xea,0xd6,0x7a,0x9c,0xf3,0x4d,0x0f,0xf1,0x4e,0x79,0xaf,0xa4,0x6f,0x2d,0xc9,0x96,0xe9,0xac,0x0e,0x3e,0x07,0x63,0x22,0xfb,0xb4,0x00,0x97,0x67,0xb1,0x33,0xf0,0x1b,},{0xb2,0xe0,0x81,0x42,0xbd,0xd6,0x2b,0x78,0x65,0x92,0xc0,0x91,0xf5,0xfe,0x6a,0x9b,0x7f,0x30,0xce,0x13,0x4c,0x3b,0x23,0x6f,0xbc,0x6d,0xfe,0x67,0x34,0xf8,0x82,0x70,0xac,0x58,0xf6,0xd7,0x4b,0x4f,0xd9,0x9c,0x22,0x45,0x1c,0xa4,0x65,0xa4,0x2c,0x00,0x6d,0xb2,0x5a,0xf2,0x15,0xed,0x24,0x1a,0xf1,0x18,0x96,0x27,0xc6,0x05,0x0f,0x00,},"\x9d\xc0\x23\xa5\x25\xd0\x1b\xa3\x51\x37\x98\xb7\x38\xc7\x91\x62\x92\x6e\xbc\xcc\x0a\xdf\x1e\x57\xac\x47\xc2\x0d\xea\x6c\xe1\x37\x5c\x3d\x2a\xaa\x17\x33\xb7\xf0\xc3\xbd\x94\x5c\x33\x5f\xf3\x57\x61\x12\xbb\xdc\x10\xb6\x78\x3b\xa6\x54\xe8\xc6\x10\x47\xf2\x77\x3a\xa2\x29\xbf\x84\x69\x22\xa8\x9c\x6a\x73\xd5\xf1\x05\x1e\x8d\x96\xed\x36\xd7\xd6\x74\x7e\x06\x3a\x7a\xc6\x02\xf1\x9f\xc5\x2e\x02\x1a\x4b\xbc\x28\xb0\x35\x14\xfb\xd5\x1c\x7b\x3f\xd6\x59\xf1\x2d\x54\x7d\x05\x92\xdd\x09\xf8\x73\xc9\xec\xc6\x43\x9c\x7e\x93\x1a\xd0\xe4\x85\x6b\xe3\x1c\x60\x5d\xef\x2e\xd9\xb5\xd1\x3c\x59\x42\xb2\xf3\x25\x39\x7d\xac\x6c\x97\x60\xe9\xb1\xbb\x0c\x06\xf7\x13\xcb\x92\x0c\x23\x4b\xcc\xfe\xe9\xf0\xb8\x5d\xd0\x20\xf7\x98\x8f\x3b\xe1\xcc\x66\xe9\xe5\x1b\xab\xe2\xfe\xe2\x37\xeb\x84\xec\x7e\xff\x94\x09\xaa\x91\xc1\x94\xe3\x0d\xb1\xe0\x65\x01\x59\x55\xde\x97\x46\xbb\xa0\x3f\x7e\xdf\x9a\x58\x75\x12\x40\x9a\x41\x61\xfa\x77\xea\x62\xcc\xf4\x31\x60\x2d\xcd\xcf\x36\x5e\xd6\xbf\x0a\xed\xdd\x32\xf7\xc8\x44\xe3\xa3\x4d\x26\x6e\x28\x38\x2f\x40\x62\xfd\x4d\x6f\x82\x14\x25\x21\x04\xd6\x43\xa9\xbf\xd8\x07\x17\x16\x37\x1c\xcb\xb5\x4c\x8c\xc8\xdb\x79\xad\xd6\x5b\xcb\xce\xa0\xd0\x80\xd8\x40\x28\x03\xfe\x23\x2d\xf7\x0f\x76\x57\x72\x47\xa6\x3d\x55\x83\xbb\xd5\x64\x27\x67\xbc\x63\xf3\xc5\xa7\xbb\x3a\x47\xeb\x12\x98\x4e\x45\x41\xf4\x1f\xdb\x55\x86\x9a\x08\xfa\xde\x66\xc2\x0f\x69\xa5\xa9\xde\x25\xf6\xb3\x6b\xa1\x8a\xce\x5b\x4a\xc3\x36\xbb\x2a\x8e\xbf\x63\x0a\xd0\x3e\x8b\xb8\x73\x1d\x01\xe8\x4b\x91\xd0\x24\xd1\x17\x45\x9a\x74\x89\x2e\x93\xd5\x3b\x61\xe6\xb8\x06\x8e\x4f\x04\xb4\x18\x1f\x03\x87\xb4\x56\x7c\xcd\x45\xe1\xb8\x71\x8a\x2d\x7d\x78\x78\x72\xf3\xdc\xf8\x7a\x15\x93\x5a\xd7\xda\xaa\x74\x4e\xd6\x8a\x28\x66\x6a\x51\xa1\x0d\x39\xfc\x13\x9c\xdf\xe9\xa6\x87\x30\x76\xf7\xc4\x25\x00\x9c\x38\xfa\xee\x13\x5e\x51\x32\x07\xb0\x6e\x7b\xa3\x56\x85\xf5\x07\x2d\xa3\x4b\x60\x45\xb5\x7c\xd5\xd1\xb1\xa1\xfd\xf0\x17\xb8\xaa\x8e\xbd\x27\x52\x2b\xc9\x5e\x47\x90\x87\x34\xe4\x17\x22\xa7\x67\x90\x5c\x5e\xcc\x30\xc7\x24\x81\xb6\xc1\x2b\xf4\xac\xe9\x4d\x5b\xb3\xa3\x15\x56\x91\xb7\x07\x5b\x40\xeb\xf5\x96\x8f\xdd\x90\x3d\x8f\xd3\xcc\x50\xb8\xd6\x46\x48\x59\xb1\x0f\x75\x51\x32\xc6\xd9\xb6\xda\xd1\xd6\xf1\x4c\x41\x85\xb2\x64\xd3\x49\x7a\x4e\x54\x98\x77\xfe\x94\x6e"}, +{{0x33,0x79,0xd2,0x5c,0x11,0x17,0xcf,0x80,0x2e,0xc7,0x9c,0x06,0x57,0x5d,0x18,0xe6,0xbe,0xce,0x4c,0x70,0x93,0xdd,0x43,0xfd,0xee,0x03,0x68,0x5c,0x70,0xb2,0xfa,0x9f,},{0x85,0x25,0x15,0x6f,0xe2,0x9f,0xc2,0xfb,0xf6,0x61,0xba,0x50,0x18,0x2b,0xe2,0x0c,0x89,0x98,0xd9,0x41,0x49,0x3d,0x59,0x33,0xdc,0xa4,0xd8,0xb4,0x1f,0xb4,0x42,0xd5,},{0x4c,0x36,0xbf,0xc8,0x1e,0xef,0x00,0xb9,0xcb,0x3a,0xb5,0x14,0xc6,0xd4,0x51,0xb9,0x93,0x36,0x1e,0x09,0xa4,0xbe,0x4b,0x50,0x40,0x92,0x6f,0xeb,0x0e,0x0d,0x9b,0x52,0xf0,0x3d,0xe4,0x68,0xe7,0xba,0xd8,0x3f,0x37,0x91,0x54,0xbf,0x2c,0x43,0x7a,0x71,0xf7,0x54,0xf3,0xf4,0x07,0x98,0xee,0xeb,0xd6,0x2e,0x55,0xf2,0xbe,0x77,0x14,0x03,},"\x7a\xcd\xb3\x9f\x12\x26\xbd\x3a\xbf\xfa\x50\x35\x0a\x14\x97\xd7\x61\xf8\xf0\xaa\xef\xbf\xbb\xbb\x92\x5f\xf5\x63\xe3\x89\x76\xaa\x17\x2d\x40\x7b\x61\xff\xdf\xb1\xcd\x53\x8a\x4c\xd0\x00\xb5\x78\x18\xa0\xbc\x92\xc0\xe0\xcd\x0a\x5a\xbf\xcf\x57\x83\x00\xf5\xf4\xe6\xce\xfa\x26\x72\x75\xd1\x78\x45\xda\x70\x66\xfd\x4e\x18\x01\x00\x27\x96\x0c\xd3\x95\xe6\x82\xad\x71\xaf\x34\x9b\xbd\xad\x5e\xba\xa0\xf1\x1a\x77\x61\xe1\x9e\xa1\xbe\xf6\x61\x07\x43\x16\x4b\x17\x14\x14\x53\xb4\x72\xae\x2c\x8f\x36\xce\x6b\x08\x0f\x1c\x07\x45\x35\x24\x54\xce\x5a\xea\xe1\x1c\x9d\x75\xde\x3c\x08\x00\x42\x65\xfc\x4c\xa8\x0d\x33\xb2\x6e\xae\x14\x00\xdf\xd8\x97\x7b\xf7\x23\xa6\x16\xda\xeb\x6d\x42\x19\x90\x10\xb7\x3e\x19\x3a\xb7\x2a\x58\xbd\xd2\x48\xa7\xf4\x11\x1c\xa5\x0c\x1d\xe6\x46\xbf\xea\x7b\x4d\x5b\xaf\x0f\x93\xdd\x97\x3e\xe9\x36\x49\xe2\x1e\xc0\xc6\xc4\xfc\xca\x8c\xd6\xff\x69\xdf\x76\x16\x12\x02\x1d\x85\xff\x1f\xb2\xa9\x53\x37\xda\x48\x05\xa7\x6d\x34\x7e\xe7\x1e\xf1\x9c\x0d\xff\xb5\x9f\x15\xf6\x50\x29\x3a\xbb\x97\x21\x05\x3f\x74\x06\x90\x5a\xe6\x83\xf9\x6c\x83\xa3\xa7\x44\x7b\x1a\xfb\x14\xe1\x20\x8c\x63\x9f\x37\xa9\x75\x0b\xa2\x1d\xa5\x55\x2c\xc2\x04\xea\xc4\x53\xca\x03\x62\x82\xf7\xe0\x96\x10\x93\xc3\x9e\xc1\x18\x13\x8d\xcf\x71\xcf\x2d\x28\xfb\x96\xa2\x49\x62\xb5\x2d\x33\x93\xf8\x80\x65\x3b\xcb\xa2\xc9\xb9\xd5\x7b\x77\xc5\x22\xf4\x21\xfc\xf5\xad\x75\xfb\xa9\xcf\x33\x89\xb1\x23\xaa\x97\x52\x17\x13\xff\xf8\x84\x67\xde\xb8\xc8\x99\x1d\x4b\x57\xc1\x43\x81\x70\x53\x7c\xb5\x0c\xdc\xc6\x57\xe5\x0e\x5c\x48\x0e\x12\xc0\xd4\x49\x39\xb6\x39\x99\x44\xe7\xc7\x1e\x18\x6c\x2a\xbb\x81\xfc\x57\x34\x88\x36\xd5\xe5\x7b\x72\xb2\x24\xa6\xb7\x1b\x6c\xaf\x72\x1a\xca\x73\x47\x8c\xb6\xcf\x5f\xb8\x90\x71\xae\x3a\x39\x82\x02\xdb\xb3\x8c\x30\x81\x25\x63\xbb\x9a\x23\x40\x66\x57\xa9\x56\xd3\x05\xa3\x44\x9a\x60\xcc\x86\x41\xb6\x21\x75\xa7\x17\x0c\x23\xbd\x5a\x25\xf0\xf1\x2e\x15\xa7\xed\x91\xfa\xda\x6a\x4a\x2f\x0e\x7b\x15\x5a\x3d\x64\x85\xec\x03\xce\x6e\x34\xdf\x7e\x21\x62\x40\xbb\x28\xa2\xdd\x73\x2f\xf7\x90\xd2\x28\x6e\x20\x0b\x33\xc2\x9a\x31\xa5\xe1\x9a\xd2\xcd\x02\x97\x4b\xad\xc4\xbc\x22\xde\xb7\x50\x4c\x15\x24\x1f\xc1\x06\x0c\x8a\xce\xf4\xfb\xb2\x5e\xc7\x60\x2f\xce\x36\xa2\x7b\xb8\x7b\x6e\x64\x23\xe6\xb4\xf6\xe3\x6f\xc7\x6d\x12\x5d\xe6\xbe\x7a\xef\x5a"}, +{{0xef,0x38,0xc3,0xfc,0x74,0xf0,0x54,0xae,0x43,0xe8,0xd2,0x9d,0x6b,0xa6,0xdc,0x80,0xb5,0xaf,0x84,0x82,0x70,0xd4,0xaf,0x58,0x84,0x4d,0x24,0xbc,0xf9,0x87,0x41,0x4e,},{0x0a,0xe1,0x47,0x8b,0x05,0xfb,0x32,0x99,0x65,0xea,0x0f,0xa9,0x28,0xdc,0xbe,0x81,0xa0,0xbd,0xbb,0x6f,0xf6,0x6c,0x81,0x16,0x71,0x63,0x5e,0x43,0x88,0x88,0x80,0x51,},{0x1d,0x3a,0xc6,0xb6,0xbf,0x18,0xab,0x53,0x09,0x14,0x87,0x99,0x48,0x5b,0x27,0x6d,0x20,0x40,0x1c,0x6a,0xf5,0xf9,0xb2,0xf6,0x03,0x23,0x95,0xa3,0xc2,0xf4,0xb6,0x73,0xb7,0x14,0x0c,0x07,0xcc,0x26,0xf4,0xfc,0x56,0xa5,0xee,0x00,0xb0,0x74,0x6b,0x2a,0x80,0xda,0x6f,0xda,0xd1,0x7e,0xdd,0x11,0x49,0x20,0x10,0x1d,0x2c,0x89,0xc3,0x0e,},"\xbf\x29\x0d\xb3\xdd\xa8\x76\x39\x37\xae\x4c\x83\x74\x67\x05\x32\x72\x95\xc2\xc2\x48\x06\x8f\x5a\xb8\x5c\x8b\x5d\x75\x6f\x4e\x3e\x34\x06\x2b\x55\x49\x38\x72\x61\x47\x6b\xcb\xd1\xe7\x33\x19\x90\xf1\x19\x10\xd1\x1f\x94\x60\x7c\x2b\x71\xf6\x5b\x77\x1a\xac\xab\xdc\x10\xf4\x2a\xe9\x18\xdd\x25\x94\xac\x71\x05\x1c\x85\xb3\x30\x77\x9c\x47\xaf\x00\xa5\xb9\x81\x91\xb5\x6c\xbc\xf7\xef\xe4\x1a\x27\xe8\x7c\x67\x71\x68\xc8\xab\xe9\x49\x6e\xb2\xe7\xab\xbd\x0b\x16\x04\x28\x6e\xd1\xa1\xb1\x8d\x26\x4d\x73\x3d\xe8\x7d\x0d\x3f\x80\x55\x52\x8c\x4d\x42\x6d\x7f\x8e\x6e\xd0\x24\xa7\x41\x40\xab\xd3\x54\x00\x79\x62\xa2\xa9\x7a\x5c\x2f\xf9\x76\x54\x6a\x8d\x1a\xc4\x92\x4c\x09\x22\x3d\x34\x8d\xdc\xd8\x71\x0a\x37\x99\xf9\x1b\xb8\x70\xb3\xf4\x6d\x51\xf1\xe7\xf6\x89\x2d\x6b\x08\xb9\x91\x74\x8a\x03\x7a\x86\x7e\xcc\x39\xee\x8d\x64\x62\xa7\x61\x44\x88\xed\xd3\xc2\xba\x61\x5c\xa2\xe3\x78\x54\x88\x94\x41\xb1\x3d\xc8\x35\xc3\x6b\x38\x65\x3f\x65\x98\x61\x6f\x35\x78\x3e\x2e\x15\x83\x84\xbb\x93\x1c\x90\x1b\x70\x3a\xcb\x39\x91\xfb\x7a\xa5\xba\x69\xd9\xa5\xbd\x05\x70\x24\x29\x61\xa7\x1a\x52\x47\x03\x15\xe9\x82\xe3\x41\xa6\x1c\x64\xa6\x19\xbd\x16\xfe\x81\x19\xaa\xe0\xd7\x50\x3c\xe7\xd7\xe9\x26\x14\x6b\x91\xc2\x89\x2f\x13\x16\x69\xd1\xe3\x9e\x5b\x75\xe9\xc7\x24\x52\x61\x80\x99\xa5\x7d\xc2\xee\x37\x7b\xe6\x58\x75\xee\x01\xbb\x88\xed\x52\x6f\xc3\x94\xe2\xf5\xc8\x12\x7a\x5f\x69\x12\x5e\x67\x38\x5e\xf9\x4b\x1f\x33\xad\x52\x62\x9d\x72\x0e\x31\xc0\x2a\xe0\xb5\x82\x33\x9f\xf0\xf0\xbb\x07\xff\x2b\x03\x0f\x48\xfa\x7b\x69\x27\x16\x50\x1a\xd7\x77\x3a\xd3\x15\x12\x04\xa2\xa5\x40\xfa\x94\x36\xbd\xd4\x20\x2a\x15\x73\x09\xec\x36\xce\xcb\xe5\x8b\x33\xef\xf5\x57\xfd\x33\xe0\x3f\xd3\xeb\x19\x00\x9b\xd7\xa2\xde\xa9\xef\xee\xf8\x78\x55\x67\xaa\xb2\xa4\xc9\x8b\xd1\xf2\xa8\x10\x11\xb3\x43\xa9\xf2\x0c\x44\xc5\x77\xa4\x52\xfd\x54\xba\x21\x02\x9d\x47\x06\x81\x3b\x29\x87\xc7\x6b\xb2\x42\xab\x26\x20\x84\x3c\x22\x60\xb6\x69\xad\x35\x8e\xfe\xe7\xf9\x83\x0d\xc9\xc7\xd4\x78\xa2\xde\x4a\x2c\xf8\xc4\x3d\xa7\x70\xe2\x88\xe2\xed\xbb\x6d\x73\xbc\xf2\xec\xb0\x23\xde\x6b\x2d\xcc\x6b\x16\x6e\x87\xa3\x85\xeb\x0a\xdc\x30\x56\x65\xc5\xbf\xa5\x7f\x25\x0f\xe2\x23\xad\x7f\xf4\x51\x8d\xe3\x9c\x79\xe8\x7d\xc1\x01\xa9\xfa\xa6\x82\x1a\x74\x44\x2b\xfc\xfd\xf0\xa9\xe6\x3a\x50\x9e\x2a\x2e\x76"}, +{{0x7e,0x7b,0x39,0xaf,0x69,0x38,0x0c,0xf4,0x46,0x60,0xe2,0xc1,0xff,0x30,0x83,0x34,0xe8,0x25,0x0f,0xee,0xb8,0x8b,0xe0,0xd4,0x3a,0xab,0xe5,0xe6,0x8b,0x8e,0xf1,0x71,},{0xcc,0xef,0x9d,0xae,0xd9,0x25,0x23,0x53,0x3d,0x4a,0x2d,0xab,0x6d,0x24,0x19,0xf6,0xd0,0x86,0x04,0xdb,0x64,0xce,0x37,0xe3,0x29,0x04,0xac,0x77,0xb9,0xb4,0xa0,0x1c,},{0x10,0x62,0xa2,0xdc,0x9c,0xd5,0x37,0x96,0x75,0xc0,0x4f,0x5e,0x21,0x33,0x8d,0xcf,0xb7,0x7d,0xfb,0xab,0xce,0xdd,0x62,0xb2,0x60,0x71,0x00,0xd7,0x64,0x9a,0x05,0xe8,0x08,0x71,0xe9,0x61,0x23,0x21,0x4f,0x80,0xf4,0xf7,0x3b,0x0d,0x9b,0x06,0xe2,0xd3,0x1f,0x56,0x11,0x9c,0xea,0x69,0xda,0x23,0x47,0xda,0x84,0xa2,0x75,0xb7,0xb2,0x07,},"\xd4\xa3\x97\x6d\xbf\x83\x20\x18\x56\x67\xb5\xa8\x23\x66\x40\xf2\xeb\xc9\xe4\x5e\x6d\x5f\x2a\x8d\x92\x99\x79\x27\xdd\x9b\xc5\xdb\x95\xf4\x46\x34\xbd\x65\x4e\xef\xec\xe1\x0d\x99\xd9\x2b\x46\x71\x57\x91\x64\x50\x04\xac\xcc\x6d\x14\x0f\x32\xa1\xc8\x72\xe5\x4a\xa9\xa7\x49\x3a\xf9\x45\x88\xb7\xbb\x40\x0d\x94\xd4\x58\xd4\x32\x92\x30\x7c\x5a\x1a\x38\x82\xa1\xc8\xa6\xa7\x8d\x9a\x94\x5f\x79\xd6\x4b\x32\x94\xa2\x8c\x3d\x59\xd8\x20\x22\xb0\x09\xcc\x4d\x2d\xa9\x3a\x16\xb0\x71\xc9\xab\x8e\xe9\xa3\x66\x3d\x72\xed\x34\x4f\x15\x1d\x68\xc6\x66\xa4\xb4\x96\x52\xd9\x7a\x46\xd1\x42\xa4\x74\x11\x27\xf3\xc5\x7f\x15\x51\xc4\x09\x76\xcd\x13\x81\xa8\x2a\xea\xe7\xbc\x5a\xdb\x39\x87\x20\xeb\x43\x3f\x08\x99\x48\x7e\xd2\x37\x84\x46\xb1\xa8\xdc\x6a\x33\xfc\xd4\x53\x7a\x05\xfb\x60\x3e\xc0\xa9\x0a\x27\x53\x23\x00\x24\x2b\x20\x00\x10\x86\x21\xb6\x5a\xb0\x00\xbc\x06\x38\x15\x30\xf6\x90\xd7\xe5\x6f\x81\x60\x4d\xac\xff\x19\x10\x71\x50\x40\x41\x0a\xa1\xf9\x44\xc9\x2d\xd9\xbb\xaa\x5b\xd0\x8e\xa0\x0c\x84\x42\xdf\x94\xf0\x85\xeb\x3d\xe9\x73\x35\xb6\x00\x5e\x6f\x84\xf8\x23\xd4\x34\x70\xab\x1c\x67\xda\x12\xad\x44\x99\x36\xc6\xb5\x5f\x9f\xfd\x20\x3d\xfd\x6e\x3f\x33\x30\x9e\x8a\x99\x45\xa5\x93\x20\xe6\x67\x34\xc7\x9c\x48\x14\xdb\xa5\xa1\xc1\x40\x95\xc6\x29\x25\xa1\xe1\x73\x3e\xfd\x94\x81\x7a\x25\xef\x9e\x47\x9d\xd9\xcc\xde\x6c\xa8\xad\xb7\xa8\x05\x3c\x1b\x55\x13\x46\x97\x50\x4a\xf8\x05\x3d\x59\x5b\x84\x46\x40\xb6\x1e\x93\x16\x80\x75\x46\x84\x50\xeb\x5d\xe0\x35\x86\x97\xc1\x04\xaf\xa6\xa3\x79\x6a\x50\x9c\x26\xb4\xc2\x77\xc2\x3f\xff\x42\xdf\x14\x6d\xe5\x5e\x95\xd0\xd4\xb8\x0a\x7a\xa1\x77\xd9\x92\x27\xec\xb2\xa0\x59\x4d\xee\xde\xbb\x9c\xaf\xb1\xa4\x58\xac\xa8\x07\x2c\xc7\xd7\x7c\x71\x75\xf6\x10\xca\x30\x0e\xfd\x7a\xf9\x38\x83\x46\x49\x8c\x22\x99\x15\x64\x50\x0e\x0b\x0a\xa4\xd2\x94\x6f\x18\xe6\xf5\x37\x5a\x84\x82\x86\xf3\x69\x54\xc1\xca\x22\x68\x4c\x69\x28\xc2\xa2\x5c\x7f\xe2\x1a\xba\x4a\x71\x11\xd7\xe0\x5b\xc8\xd7\x0b\x3d\xcb\x4f\x6a\xae\xc0\x64\x84\x5e\xef\x55\x25\xf8\x50\x24\xc2\x57\x0f\x3b\x78\x69\x8c\x4b\xce\xc0\xd7\x1a\xad\x53\x78\xd8\x81\x9e\x1f\xac\x44\xee\x41\x63\x70\x21\x2d\xba\xaa\xe5\x4d\x2a\xf2\x93\x9b\x82\xcb\xaa\xe7\xf4\x2f\xf4\x85\xd4\x5b\x3a\xcc\x21\x09\x0f\x5b\xa4\x1e\xc0\xda\x30\x9e\x52\xef\x28\x38\xd1\xde\x47\x1e\x0b\x7c\xf9\x85"}, +{{0xa9,0x04,0x8a,0xf0,0xc2,0x0a,0x12,0x5f,0x5d,0x39,0xc5,0x0f,0x22,0xb8,0x05,0xae,0x74,0x2c,0xf6,0x4f,0x1f,0xe8,0xdf,0xbe,0x8d,0xfd,0xaa,0x51,0x1a,0xaa,0x57,0x6f,},{0x15,0x86,0x55,0xdb,0x94,0xb1,0x5c,0xa7,0x29,0x83,0x87,0x7b,0x6d,0xb2,0x31,0xa5,0x84,0x3d,0xf5,0xdb,0xca,0x28,0x10,0xa7,0xe4,0x96,0xfb,0x59,0xab,0x71,0x04,0xca,},{0x18,0xa3,0x12,0xb2,0x0d,0x86,0xac,0x33,0x9a,0x58,0xef,0x2b,0x85,0x2d,0x46,0x7c,0x23,0xbb,0x2c,0xb1,0x22,0x7c,0xb1,0x53,0x38,0xaf,0x07,0xfd,0x04,0xb9,0xa7,0x11,0xe8,0x56,0xee,0x5b,0x2c,0x82,0xe3,0x66,0xc1,0x7f,0x86,0x17,0x13,0xd1,0x08,0x8c,0x1b,0x21,0x44,0xd1,0xc3,0x7d,0x05,0xbd,0xc0,0x0d,0x73,0x96,0x73,0x85,0x20,0x00,},"\x8e\xef\x2d\x9f\x5d\x59\x70\x99\x59\xc9\x24\xf8\x7c\x22\x78\x97\x67\x39\x3a\x15\x5d\x5c\x87\xde\x48\x8c\xef\x50\xb7\xbf\x7d\xa8\x70\xe3\xad\xc3\x00\xae\xe6\x60\x3b\x2e\xf0\x87\x64\xd9\x9d\x9e\x77\x51\xe5\xdc\xe9\x2a\xaa\x71\xaa\x18\xa6\x9c\xc8\x23\x13\x4e\x85\x52\xd9\x59\xa0\xdb\xb4\x11\x17\xe0\xa5\x93\xc3\x18\x33\xb6\xec\x21\x72\xdd\xaf\xaf\x78\x48\xdd\xd1\x8d\x28\xd0\xd4\xed\x33\x23\x7e\xc8\x04\xf6\x59\x38\xae\xd8\xe8\xa3\x28\x0d\x42\xe3\x53\xd0\x1b\xe0\x18\x7b\x13\x01\xf8\x3d\x89\x84\x90\x67\xb0\x4a\x90\x31\xf7\xe0\xf3\x3e\x34\x16\x24\x0c\x53\xd9\x26\x5e\xd0\x66\x39\x59\x97\x1f\x41\x7c\xb5\xf2\x10\xcd\xc5\xae\xbc\xb5\xe1\xdb\x7d\xfb\x82\xdf\x43\x58\x76\xa6\xe9\x8f\x41\x5b\x0d\xf8\x69\xf0\xd8\x85\x15\x35\x37\x56\x45\xee\xf7\x0f\xae\xc7\x44\xee\x0d\xc3\xac\xbc\xb0\x40\xf6\x8d\x50\x2c\x2c\x62\xc8\xdb\x45\xeb\xe5\x48\x54\xa4\xb3\x6f\x43\xfe\xb4\x9a\x6d\x1c\x2c\x2e\xa7\x99\x14\xa7\xc2\x3c\x60\xba\xaa\x67\xcb\x47\xb2\x17\x8e\x12\xdc\xe7\x6b\x00\x4c\x87\xb7\xb8\x34\x6e\xfa\xdf\x38\x0b\x9e\x1e\x41\xf6\x31\x48\xda\x51\x78\x1d\x75\xce\xc0\x40\xe4\x26\x88\x20\x21\x1f\x3c\x46\x25\x01\xd8\x08\x99\x89\x4e\x79\xd6\x18\xde\x42\x46\x1d\x78\x5a\xea\xce\x53\xae\x14\xb7\x9d\x33\x50\x1e\xd5\x62\x9b\xbd\xd0\x71\x28\x15\x6d\xb0\x72\x5f\x5b\x4b\xed\x59\x3a\x95\x29\x47\x83\x03\x84\xf6\x1d\xf0\x0e\xe0\xaa\x09\x90\x99\xc3\xcd\x97\x65\xa9\xc1\xc7\xe8\xa6\xa8\x34\x30\xb8\xd9\x86\x7c\x8e\x17\x92\x0a\xd0\xff\x64\xd8\xcd\x2f\xf5\xf1\x14\x38\x8c\xe6\xd4\x3e\xec\x17\x15\xd0\x35\xf0\x22\xfa\x97\x96\x9e\x1a\x5d\xd9\xf5\x8d\x89\x6b\x17\xc1\x22\x1c\x9e\x6c\x85\x55\x59\x72\x35\xee\xda\x6e\xc4\x1b\x0c\x11\x76\x12\xb0\x0c\x5f\x0e\xd1\x81\x6b\x05\x73\x63\x58\x27\x07\xa8\xaa\x0d\x98\xd4\xd4\xbe\x5e\x8f\xa3\x2d\x6c\x9d\x27\x82\x21\xef\x30\x67\xb8\xba\x15\x16\xd9\xe0\x51\xd2\xf6\x8b\x7d\x1b\x15\x1f\x74\xa3\x53\x4e\x78\x12\xc0\x51\xe5\xf2\xb6\x3b\x30\x35\xf8\xe5\x70\x3b\x5f\x68\xfd\x2d\x65\xbb\x75\x65\xe8\xaa\x67\xbf\xd2\xa1\x2c\xaf\x0b\xc5\x48\x11\x97\xa9\xff\x89\xd7\x7d\xf7\xa0\xe9\x65\x5e\xf0\x29\xb4\x3d\xd9\x06\xd0\xb8\x88\xe3\x13\xae\x9d\x1c\x7e\x93\x68\xa0\x13\x52\xd0\x0c\x66\x80\xdd\x0f\x1f\x57\x4a\x58\x77\x34\x8a\x7e\xa2\xc0\xb9\xe8\xe2\x72\x75\x10\xbf\x0c\x9e\xf7\x44\xf3\x69\xeb\x3c\x6c\x4f\xc1\x6a\xde\xb6\xe1\x94\x5b\xe8\x28\x7d\x0f\x30"}, +{{0xf8,0xc9,0x18,0x3f,0x23,0x10,0x5f,0xad,0x0c,0x6e,0x51,0x03,0x35,0x8b,0x58,0x32,0x88,0xf9,0xff,0x6c,0x7d,0xfc,0x91,0x10,0x6d,0x07,0x98,0x7f,0xf6,0x9c,0xe1,0xeb,},{0x4c,0x79,0x62,0x8c,0x95,0x8c,0xde,0x0c,0xc3,0xcf,0x68,0x60,0x95,0xb8,0xa2,0xf4,0x4b,0x71,0x93,0xc6,0x16,0xf5,0x1b,0x21,0xb6,0x70,0xb0,0x38,0xce,0x6f,0x67,0xff,},{0xc6,0xa8,0xbc,0x7a,0x0d,0x5c,0x61,0x85,0xb6,0xec,0xd6,0x03,0x3e,0x42,0x32,0x1d,0x5c,0x87,0x1b,0xf8,0x89,0xbe,0x72,0xbd,0x54,0xcc,0x00,0x83,0xed,0x60,0xa4,0x70,0xb2,0xcc,0x0f,0xb4,0x68,0x2c,0x89,0x4c,0x75,0xb0,0xdf,0x95,0xf1,0xec,0xfb,0xba,0x2d,0x5a,0xce,0xf3,0xe1,0xaa,0xfe,0x54,0xb9,0xf7,0xe8,0x03,0xa1,0xd0,0x15,0x0a,},"\xb1\xd6\x05\x95\x32\x3f\xf3\xc8\x44\x87\x41\x90\xe1\x83\x6e\x41\x01\x40\x9c\xbc\xea\xe2\x8d\x5d\xa8\x1f\xad\x29\x8f\xe4\x7f\x6b\xdf\x44\x74\x5b\x7c\xd0\xd3\x71\x31\xc3\xec\x36\x5b\x92\xf5\xa1\xa6\x9c\x09\xfe\x2d\x9e\x81\xda\x10\xcf\x19\xd8\x5f\xf5\xff\x26\xf9\xe7\xdb\x9f\x07\x93\xb2\x5a\xb2\x6e\x6a\x74\xf4\x4e\xb8\xc4\xf0\x78\xeb\x7a\xd1\x8e\x65\xa1\x62\x10\xd5\xc8\x44\xd3\xce\xf7\x5f\x1d\xaf\x44\xee\xe5\x58\xf9\x0e\x52\x4a\x03\x2b\x6c\xae\x6c\x8d\x23\x36\x7c\x28\xce\x1c\x75\xfc\x25\xac\x87\x43\x39\x77\xd5\x97\x53\x3c\x92\xae\x65\xf2\x91\x3a\x18\x90\x7a\xc7\xd9\x54\x3d\xf2\x41\x27\x74\x39\x43\xfe\xfd\x9c\xf8\x3e\xd8\x33\xf6\x3e\xc8\x36\x72\x33\xd8\x97\xbf\xa1\x2d\x46\x6d\x2c\x4a\x9a\xd7\x0d\x5a\x67\x2f\xc1\x07\x75\xea\x2d\x20\x4e\x63\x6d\xe7\x01\x07\x88\xda\x27\x1d\xf0\x38\x81\xa2\x5c\x8d\xfa\x5a\xf7\x3e\xe5\x59\xf8\x1b\x52\x9b\x35\xaa\x12\x7f\xdc\x0e\xe8\xfd\x36\x9c\x7a\x04\x36\x62\x39\x86\xaa\x64\x07\xfa\x67\xa1\x42\x0c\x46\xf3\x21\x1a\xb8\x4f\x84\x46\x6d\xd5\x8b\xb7\x95\x08\xa1\xfe\xb0\xa5\xa5\xdc\x3b\xb0\xc1\xb2\x48\x09\x82\x62\xa0\x64\xf3\x7b\xb2\xf0\x19\xe2\x90\xc6\x0a\xfa\xa1\x20\x66\x51\xa2\x69\x7c\xaa\xcc\x3e\xcc\x02\xec\xfc\x07\x7f\x27\x2e\x8f\x75\xce\xa7\x1c\x3b\xc3\x35\x6d\x2b\x58\x07\x27\x6f\x19\x55\x00\x1c\xfe\x10\xa6\x17\x16\xb4\x08\x2b\xd6\xf8\x4c\xae\x4b\xb0\xd9\xa4\xb7\x5a\x4b\x57\x62\xf8\x10\x79\xf1\x9d\x7d\x19\xea\xff\x86\x31\xc9\x24\x88\x5b\xd3\xa6\x4e\x12\x9f\x4c\xf6\xb7\x9c\x7a\x98\x29\x66\x55\x11\xe9\xd8\x5c\x74\x5e\xb2\x2c\x1b\x7c\xb2\xa1\x7a\x49\xb6\x28\x5c\xce\x37\xb3\xde\x41\x59\x40\x32\x83\x23\xef\xe2\x4a\x1a\x07\xee\x87\x46\x8f\x65\x10\xe4\x2d\xd2\x06\xfe\x7f\x09\xe3\xd4\x33\xfb\x52\x15\x6a\xe3\x48\x38\x31\x15\x64\x88\x63\xe4\x5b\xf6\xa3\x71\xb1\x7e\x70\xe1\x9f\x96\x27\xd7\xf0\xa5\x8b\x95\xc6\xa4\x78\x8d\x5f\xd7\x86\x2f\x16\x12\xc0\x34\x73\x25\xb7\x97\x65\x1b\xe3\x0c\x3e\x1e\x60\xea\x4a\xe6\x0b\x57\x45\xa3\x8b\x6a\x9d\x4e\xb4\x93\x5d\x6f\x3c\xb8\xd7\x1a\xd3\xf3\x9a\xdd\xa5\xe4\x2e\x22\x19\xde\x0d\x38\x19\x09\xc9\xcd\x31\x7d\xd4\x37\x94\x21\xa2\xa8\x42\x68\xa7\xea\x71\x80\xa6\x4c\x12\x9b\xe1\xe5\xe8\xfc\xbb\xf5\xed\x65\x9e\x9f\x7e\x76\x3c\xe8\x4f\x63\x0d\x54\x07\x95\x4f\x9f\x75\x57\x50\xa6\xdb\xf9\xf7\x66\x07\x17\xde\x8e\x2a\xdc\x1e\x9a\xc9\xee\x31\x65\x4d\x18\x37\xce\xe3\x97\x95"}, +{{0x16,0x08,0x9a,0x1b,0x93,0x2f,0x8d,0x14,0x99,0x56,0x88,0xb4,0x8d,0xd8,0x41,0xed,0xae,0x3d,0xa5,0xcf,0xd2,0xcb,0x16,0x55,0x53,0x06,0xf3,0xfe,0x8b,0xd3,0xed,0xb9,},{0x9e,0xcd,0x9f,0xdd,0x7e,0x0b,0x92,0x3d,0xef,0xf5,0xd8,0x87,0xb2,0x42,0x58,0x5d,0x9d,0x41,0xcd,0x2c,0x7c,0x10,0xf9,0xc3,0x45,0xb3,0x9f,0x63,0x3f,0x4a,0xb9,0x03,},{0x78,0x78,0xab,0x74,0x1e,0xba,0xe2,0x74,0x7c,0x78,0x97,0xcb,0xb1,0xd1,0x05,0x48,0x2f,0x37,0xbe,0x2f,0x5f,0x91,0x79,0x52,0x32,0xcd,0xfb,0xcc,0xc5,0x26,0x60,0x89,0x18,0xe2,0x75,0x6d,0xdb,0x75,0x36,0xb3,0x68,0x0c,0x16,0x2c,0xf8,0xa1,0xef,0x38,0xa3,0x41,0xb9,0x36,0x2b,0xfe,0x5d,0x46,0x8b,0x4b,0xce,0x21,0xdf,0x23,0x4f,0x0f,},"\x58\x50\x02\x32\x38\x8d\x9a\xa4\xb5\xfa\xf8\x5b\x02\x33\x24\x7e\x71\x7f\xd1\x68\x40\xde\x9b\xfd\x0e\xf8\x6e\x01\xe6\x13\x02\x77\x55\x13\xe2\x24\x12\x5e\x0d\x20\x42\x0e\xa9\x49\xf6\xc2\x64\x25\xf7\x00\x77\x91\x1f\x97\x11\x31\x0c\xd6\xfd\x8b\xff\x27\xcd\xea\x11\x48\x0c\x73\xe8\xf8\xb3\xc3\x76\x41\xe7\xe8\xdd\x86\x07\xc1\x64\x02\x18\xfe\xc8\x0a\x02\x09\x28\xb9\x3d\x4d\x55\x7e\xbe\x82\xec\x0b\xb1\x75\x38\x86\x7d\x2c\xb1\x4d\x44\xd3\xea\x72\x7f\xdd\x52\x82\x0b\x0d\xa9\x44\xde\x21\xcd\x5d\xa3\x03\xd7\x76\xfe\x99\xcb\xc2\x64\x83\x65\xe6\xa0\xa9\x8d\x4d\xb1\x50\x84\x26\x61\x76\x8b\xe8\x4c\x68\x50\x7a\x5c\x45\xd2\x07\x84\x0b\x03\x35\x37\x78\x6c\xb2\x1d\xad\xad\x5f\xba\xb9\xc5\xcf\xc1\xe3\x54\x7d\xe5\x50\xd3\x13\x63\x1d\xd4\xfb\xb7\xca\x8f\x71\x93\x86\x27\x60\x8d\x2e\xbf\x65\x5d\xb4\x32\x5a\xbf\x3e\xd5\x04\xdc\x18\x30\x58\xf9\xde\x1e\x44\x93\x12\xd9\x04\xc8\x46\xa1\x84\xa0\x28\xf3\x64\xc0\x28\xb2\x7e\xb4\x94\x64\x27\xe3\x1c\x21\xe1\x05\x1d\xf3\x64\xd4\x99\xf4\x77\xbf\x51\xe7\xa8\x89\x31\x83\xe5\xec\xf7\x7d\x51\x3a\x1a\x76\xb1\xa6\xfd\xfb\x16\xbe\x90\xd7\x4b\xe4\xc4\x34\x5a\x4f\x9f\x87\xee\x44\x1a\x10\x22\xd6\x7e\xe8\x44\x78\x9f\x21\xb0\xc3\x1a\xdc\xc0\xd9\x56\x63\xcd\xfb\x40\xa8\x95\xb9\x22\xdc\xe8\x06\x9b\x93\x2c\x80\x2f\xd3\xab\x1e\xf0\xce\x6b\xff\xdc\xc5\x65\x3b\x1c\xd5\x25\x7e\x19\xa0\x95\x16\x87\xe5\x45\xfa\xf4\xaa\x66\x06\x5a\x55\xc4\xb4\x19\x1e\x34\xe8\x04\x7d\x6a\x4a\xb5\x2d\x1b\x06\xc3\x69\xa4\x26\xca\x2d\x16\xb5\x1a\x02\x71\xf2\x7f\x8d\x74\x4c\x71\x1f\xce\x3a\xad\x9d\x4a\xc0\x38\xee\x70\x0e\x4e\x97\x1b\x21\xca\x48\x9f\xf2\xb8\xc7\x78\xa3\x72\x1a\xdf\x47\xc1\xae\x5a\x41\xb9\xa2\x7f\xa7\x42\xfd\x0f\x18\x16\x4e\xf3\xc2\x6b\x8a\xe7\xd1\xfa\x29\xb7\xc0\xcc\x46\x83\xbe\x65\x02\x5c\x96\x53\x7a\x12\xd5\xfc\xeb\xbd\x05\xe9\x30\xc3\x69\x3e\xbb\xba\x0a\x78\xad\xf5\x9d\x8a\x3b\x59\x8a\x34\x8e\xaa\x9f\x47\xca\xf5\x31\xfe\x44\x96\x52\xdb\x5b\x20\xd6\x89\x94\xe3\x5a\xfe\xc2\xc2\x57\x09\x05\x5a\x1d\xe2\x60\x82\xe3\x91\x2d\x49\x7c\x64\x77\x20\xa3\xf8\x73\x62\x14\x56\xe6\xa5\xb9\xeb\x61\x3a\xcb\x43\xb6\x6d\x47\xd0\xb9\x54\xc6\x9e\x8f\xbf\x2c\x5e\x63\x4c\x48\x6e\x57\x24\x93\x0e\x0b\x56\xa5\x16\x94\x0c\x8c\xb0\xe7\x75\x27\x4d\xef\xf9\x7c\xbb\x77\x59\xce\x90\xa2\xb9\x3e\x9e\xfa\xa6\x24\xe6\xb3\x8a\x39\x84\x9d\xca\x1d\xf6\x12\x73\x6f"}, +{{0x94,0xd5,0x09,0x15,0x14,0x4c,0x7e,0x7d,0xd0,0xf8,0x5f,0xef,0x87,0xed,0xdc,0x22,0x06,0xc1,0x56,0x9e,0xd1,0x43,0x1c,0x8c,0x5a,0x15,0x3e,0x32,0xe1,0xcb,0x2f,0xb7,},{0x3b,0xb0,0x98,0xcf,0x16,0x0f,0x3a,0xec,0x31,0x70,0xb5,0x7d,0x6a,0xdd,0x4f,0x56,0x73,0x92,0x70,0xe4,0xb3,0xa8,0xef,0x79,0x66,0xec,0x30,0x61,0x9b,0x29,0x91,0x02,},{0x59,0xa1,0xce,0x55,0xf5,0xa6,0xba,0xdc,0x1b,0x93,0x91,0x26,0x36,0x20,0x54,0x2c,0xfc,0xae,0x87,0xa0,0xf2,0xb9,0x50,0x22,0x50,0xcf,0xe4,0xbd,0xcb,0xf7,0x6c,0x46,0x19,0x77,0xc3,0x34,0xa4,0x8d,0x91,0x6e,0xde,0xbd,0x56,0xc2,0x1c,0xe2,0x17,0xc3,0x5a,0x64,0x44,0xcf,0xbf,0xd3,0xb1,0x1a,0x3d,0x48,0xfa,0x2e,0xdb,0x6e,0xb4,0x0f,},"\x4d\x91\x5f\x27\x33\x2d\xd7\x50\x51\x71\x9a\x24\xae\x8d\x0e\x9c\x30\xda\x79\x09\x99\xe2\x2d\x9b\x58\x7e\xf2\x03\x21\xbe\xe4\xc0\x7d\x0a\x12\x49\x4f\xfe\x59\x9f\x47\xf9\x69\x25\xf5\xd9\x25\x17\xfc\x3e\x5f\x04\x1d\x0c\x70\x9f\x2a\x97\x83\x12\x5e\xec\xa6\x65\x29\x97\x20\x1c\x42\x9a\xa6\xf1\xce\x2f\x07\xa0\xd4\xa0\xa1\x8c\xf2\x0b\x3e\x9a\x4f\x76\x63\xea\x52\x62\xca\xd8\xf9\x49\x41\x1b\x05\xff\x5c\x5e\xdd\x7b\x30\xb2\x17\xd7\x5d\x8c\x86\xc9\x4e\x5f\x92\xc1\x67\x34\x37\x4e\x8c\xea\xd6\x1b\x0b\x27\xbb\x4b\xf5\xf4\x3a\x31\x3c\x1d\xd5\xb8\x3e\x0e\xa9\x33\xb6\xca\xdf\xed\xd7\xa6\x4a\xa5\xdd\x5b\x5d\x02\xc6\x95\xea\x20\xe0\x91\xfd\xaa\x72\xef\x4e\x7c\xa4\x0f\x38\x39\x5b\xe8\xbf\x7a\x25\x5c\x6d\x06\xa6\x32\xd7\xd7\x85\xd9\xe0\x47\xf2\x32\xaa\x50\xfa\x14\x52\x9f\x98\x6f\x9e\xf9\xd7\xb5\x80\xa0\x39\x65\xb0\x15\x47\x88\x82\x2a\x22\x5b\xb5\xab\x34\x38\xb8\x9a\x5c\x28\x74\x4a\xb0\xbc\x0b\x20\x14\xe5\x79\x6a\xcb\x49\x35\xa8\x1b\x02\xa0\x46\x32\xac\xb8\x8c\xaa\x7e\x39\xe0\x69\xc7\xc8\xe1\x75\x82\x91\x09\x4a\x53\xe3\x62\xfc\xed\xaa\xa5\x83\xec\xa7\x66\xef\xeb\xf6\x9b\x38\xe8\xcd\xe9\xce\x58\xe0\x12\xc6\x0e\xc8\x8e\x8c\x42\xbe\xad\xfa\x83\x8c\xfe\x44\x0f\xa0\xc0\x1d\x65\x9c\x96\x34\x57\x6d\x7d\x7a\x2d\x3a\x04\x4f\x99\xc6\xe4\x26\x3d\x4c\x0b\x37\x4a\x38\x8a\x2a\xcf\x38\xef\xf2\x9c\x77\x7e\x9d\xaa\x60\xd5\x98\x03\x5a\x7d\x9e\xdf\x67\xa5\x02\xc3\xf5\x73\x20\x7b\x11\x9c\xac\xac\x3f\xa7\x1e\x2a\x02\x07\xc6\x01\xcc\x0d\xd6\x37\xef\x56\x2b\xac\xc3\x5c\x57\x04\x27\x38\xf1\xf5\x58\x15\xa5\x26\x80\x82\xcd\x6a\x50\x82\x92\xfa\x29\xe3\x4e\x96\x45\xd8\x7a\x1a\x2b\x6e\x58\xad\xb7\xf4\xa5\x7f\xbb\x53\xe9\x21\x3e\xf3\xdc\x87\x3f\x29\x39\x62\x58\xa1\xea\x54\x6f\xb5\x95\x2c\xe3\x43\xce\xe9\xbb\xb9\x0c\x1c\xda\x72\xc6\x5a\x7c\x8e\x40\x31\x2b\x32\x8e\x23\x19\x20\xc2\x33\x07\x7d\xca\x34\xd0\x4f\x9d\x89\xda\xa9\xa2\xf4\x34\x59\x16\x5f\xd1\x02\xff\x56\x43\xc7\x17\x52\x30\xb3\x9e\xc7\xc3\xc4\x75\x65\x0e\xf1\x31\x60\x9d\x32\x20\xf5\xa2\x94\xa4\x03\xb1\xe1\xc4\x2c\xfa\x16\x2c\xd4\x26\xf0\xae\x43\xfd\x6b\x7a\xb5\x47\xa6\x2b\x7d\x5f\x84\x74\x03\xc4\xe5\x98\x79\x53\x87\x71\x58\xcf\xde\xe2\x3c\x04\xf7\x51\xc7\xc8\x6d\x07\x8e\x82\x4c\xa6\x3b\x5e\x65\x54\x3e\x97\x8b\x6b\x0c\xc6\x89\xef\x66\x44\x12\xb0\x1b\x8f\xf1\x65\xe7\xdb\xde\x3c\x09\x9b\xf4\xf3\x4e\xbd\xdc\xb4\xc4"}, +{{0x0d,0x81,0x92,0x6f,0x51,0x3d,0xb4,0xb2,0x5d,0xfa,0x1e,0x52,0xb5,0xdc,0xa6,0x78,0xf8,0x28,0xa6,0x1c,0x7c,0x91,0x3c,0x82,0x82,0x47,0xc2,0xeb,0x04,0x22,0xb7,0xd1,},{0x0f,0x32,0x41,0x1e,0xf9,0x1d,0x4e,0x4b,0x69,0x41,0xdf,0xca,0xab,0x14,0x2e,0xf3,0xbe,0xc1,0x60,0x98,0x39,0x93,0xa5,0x26,0x2c,0xcf,0x27,0xfa,0xdd,0x2a,0xf8,0x90,},{0xe0,0xcb,0x6c,0x71,0xeb,0xf8,0xd7,0x05,0xe5,0x0c,0xad,0x9f,0x0b,0x8c,0xba,0x3e,0xcf,0x4b,0x9e,0x37,0x93,0x40,0x00,0x92,0xaa,0x5b,0x12,0x1e,0x7d,0xbb,0xc8,0xbe,0xa7,0x1d,0xf2,0x95,0x28,0xca,0x9b,0x47,0xab,0xf8,0x7c,0x19,0x8a,0x8d,0xc4,0xe1,0x4d,0x51,0x80,0xce,0x93,0x2d,0xd2,0x11,0x4a,0x3c,0xda,0xa5,0x55,0x2c,0xc2,0x05,},"\xa9\x38\x37\x52\x2f\x7e\xc2\xe9\x3a\x2e\x4b\x4c\x8b\x46\xde\x92\x6a\x81\xad\xa2\xd2\x48\xbc\xd3\x3b\x39\xb6\xc9\x5f\xb6\x2a\x61\xdb\xbe\xda\x1a\xa8\x5a\x21\xd9\xb9\x6a\x08\x51\x0d\x8d\x3a\x65\x8c\xf3\x20\xa1\x09\x28\x69\x59\x99\xd2\xc0\xd6\x05\xc7\xf9\x5a\x12\xf5\x6a\x87\x18\x50\x7d\xb0\xf4\x97\xe3\xea\xd6\x13\x13\x2a\xb0\x92\xcb\xf1\x9d\x22\x60\x35\x86\x30\x35\x8d\x9b\x26\xe6\x8d\x50\xdd\xae\x37\xc8\xaf\x0b\xb7\xd2\x74\x1f\xd2\x92\x9c\x21\x27\x9a\x78\xd1\x0e\x2c\x5f\x3c\x5b\xf4\xa4\x2a\x36\x17\x03\x6d\x54\x74\x36\x47\x76\x5a\xfd\x8c\xd9\x10\xf8\x1b\x38\xce\xd7\x23\x90\x63\x0e\xe6\x89\x44\xa3\x7d\x29\xc2\xfe\xca\xda\x1c\xc5\x9e\xc5\x44\x07\x5b\xdb\xc1\x4c\x63\xc6\x23\x4b\x88\x40\x49\x00\x0c\x27\xc7\x34\x06\x03\x56\x04\xfc\xa8\x76\x0b\x49\xa5\xe2\x10\x9e\xf9\x12\x85\xad\xc4\xec\x48\xc8\x19\xd6\x2d\x94\x8f\xac\xa9\x0f\x62\xcf\xae\xf0\xb0\x7d\x6f\xe5\x76\xd7\x62\xbf\xd0\xee\xf9\x4c\xf6\xb5\x33\x2c\x4d\x42\x25\x11\x60\x7f\x2f\xac\xc7\xac\x04\x6a\x59\xb9\x61\x7e\x83\x83\xd1\x02\x9c\xc9\x1a\xc5\x92\xb5\x20\x84\x41\x30\x32\xbe\x84\x1b\xaa\x9b\xf9\x62\x51\xa6\xbd\xa6\x71\xd4\xcd\x4b\x12\x5d\xa6\x58\xa4\xe5\xa5\x0f\x44\x28\xee\xbf\x26\x14\xfb\x0c\xe5\xfe\xbe\x80\xf7\x21\xa5\xf4\xc0\x32\x55\x06\xd2\x7a\x8d\x31\xe3\x3d\x86\x25\x38\x70\xdd\x63\xc0\x8e\xdc\x73\x02\xb2\x80\xe9\xb9\xbd\xc2\x8b\xee\xf0\x5c\x7d\xcb\x30\xd4\xc1\x62\xe9\xbe\x83\x2e\x1c\x78\x5e\x37\x55\x12\x18\x42\x1e\xec\x85\x2c\x42\x98\x21\x3b\x2f\x27\xf8\xf8\xc7\x06\xd3\x91\xb9\xc6\x9a\x56\xdb\x7c\xe5\xd8\x15\x48\xfc\xa5\xfe\xd4\x56\xf2\xd8\xaf\xd0\xb7\x5f\x79\xf8\x58\x68\x31\x6f\x4a\x09\x21\xf0\xc6\x63\x99\x26\x51\x6b\x3c\x3e\x52\xa9\xcb\x22\x55\x45\x46\xef\x70\xe1\x4c\x77\xec\xbd\xcd\x5c\x0d\x59\xa8\x17\x69\xb3\x0d\x5d\x13\x1f\x2f\xb4\x49\xc9\x96\xb8\xde\x8a\xc7\xf8\x08\x4f\x84\x99\xe1\xa5\x6f\x7c\xd2\x9d\xb6\xaa\xef\xcc\xae\x8a\x60\xe7\x56\x16\xa1\xf7\x02\xc3\xbc\x8d\xea\xa1\x00\x4a\x8d\xae\x03\x92\xa5\x9c\xee\x54\x81\x0c\x6e\x94\x0e\xee\x25\xfb\x2e\x5d\x57\x32\x67\x04\x4b\x89\x3f\xfd\xe3\x78\xfe\x75\xac\x26\x13\x37\x3d\x84\xa0\xca\x81\x87\xaf\x4a\x33\x58\xe5\x0a\x99\x4e\xd0\x33\x67\xde\x64\x5e\x10\x39\x0f\xea\x4c\x33\xbb\x1a\x6c\x0c\x39\x85\x8b\x8d\xb4\xa6\x9f\xe8\x94\xa4\x22\x3d\x45\xaf\x69\xb3\x6c\x61\x17\xc4\xdc\x25\xde\x49\xa6\x30\x17\x00\x2b\xa9\xae\x55\x1e\xf9"}, +{{0x6c,0x8c,0x53,0xb5,0x6b,0xbc,0xb4,0xc0,0xa2,0x5d,0xc4,0x0c,0x18,0x24,0x0b,0x6a,0x5c,0x75,0x76,0xb8,0x9d,0xde,0x45,0xef,0x13,0xfb,0x15,0x8e,0xa1,0x7f,0x8e,0xd9,},{0x23,0x8e,0x51,0xd6,0xa4,0x4f,0xa7,0xac,0x64,0x26,0x88,0x01,0x26,0x1e,0xa3,0x5b,0x62,0x63,0x8a,0x00,0x6c,0xc4,0x52,0xbd,0xdb,0x9f,0x16,0xfc,0x58,0x03,0x06,0x0c,},{0x4b,0xf1,0xe7,0xd4,0x9c,0xd4,0xd5,0xc3,0xc1,0xfd,0x4a,0x4b,0xc4,0x8f,0xf6,0xb6,0xe5,0x2f,0xd9,0x51,0x0a,0x41,0x18,0x12,0x29,0x69,0x96,0xe4,0xfe,0xc5,0x6b,0xe4,0x45,0x14,0xc5,0x67,0xd1,0xd3,0x34,0x77,0xbd,0x5d,0xc0,0x83,0xc3,0x95,0x8b,0xd9,0x5b,0xfe,0x59,0x9c,0x15,0x3f,0x21,0xae,0x26,0x25,0x29,0x67,0xb7,0x32,0x60,0x03,},"\xb6\x0d\xf2\x94\x4b\xa0\x15\x75\x98\x02\xd3\xc5\x87\xbc\xfe\xbe\x52\x1a\x7e\x77\xb9\x98\x5b\x76\x1c\x96\x76\x45\x4d\x24\xa6\x64\xaf\x0b\x0d\x44\x22\x5a\x55\x75\x12\xe1\xc1\xcd\x7d\xd8\x33\x5c\x8f\x6a\xdf\x92\x8e\x18\xf8\x9f\xd5\xee\xdf\x6f\x41\x1d\xcd\xaf\x99\x69\x12\xe8\xc3\xe2\x3d\x1c\xb9\x5e\xca\x4b\x9e\x24\xe7\x53\x9c\x3b\x98\xbf\x3d\x07\xec\x25\x13\x92\x09\x6c\x19\xac\x53\x74\xdc\xba\x52\x61\x32\xb6\xd9\xbb\x8f\x6c\x85\x9c\xe9\x85\xd5\x84\xc7\xbb\xa5\xb0\x2a\x81\x03\x4b\x6d\x8b\x52\x1b\xd2\x80\xe5\x0d\x77\xda\xa2\xb2\x41\x3e\xd6\x79\x83\x4f\x81\x61\xd5\xd0\x57\x3b\xdd\x47\x6a\xc3\xcd\x0a\x3a\x7d\x8d\xb4\x53\x34\xe8\x9c\x00\xab\x66\xbc\x36\x8a\x07\xb4\x23\xe2\x46\x43\x46\x36\x27\x2a\xa4\xe4\x63\x7a\x53\x06\xb2\xc3\x39\x79\x92\x78\x1f\x30\x23\x8d\xe7\x9e\xc1\x04\xac\xc7\x20\x0d\xef\xad\x96\x08\x83\xd3\x91\x44\x3e\x70\xef\xbd\x22\xf1\xcf\xce\xec\x51\x12\xfe\x9e\x8e\x13\xbb\x94\x1c\x08\x34\x68\xdd\x71\xff\xca\x97\x6c\xd5\x1c\xe1\x61\x79\x31\x10\xef\x00\xaf\xf5\xee\x2c\xcb\x77\x06\xa5\x12\xb8\x5b\xeb\x94\xac\x49\xd1\x9a\xfb\x63\x33\x65\x5c\xf3\xae\xa5\x35\xa6\xf9\xc7\x5e\x03\x48\x41\xe7\x63\xc5\xa2\x49\xb4\x70\x4e\x1b\xe7\x8b\x0e\xca\xc6\x80\x2c\x34\x3c\x1b\x7e\x7b\x57\x70\xde\x4c\x93\xa3\xa7\x9c\x46\xe6\x83\x5d\xa8\xae\x5d\xb3\x83\x8e\x17\x96\xb5\x64\xa4\x80\xa4\xf2\x90\xb6\x0a\x1c\x63\xa7\x25\xff\x3f\xef\x43\x4d\x2a\x0b\x3d\x89\x31\x97\x87\x42\xb5\x25\xc8\x3b\xae\x67\x94\xae\x64\x19\x37\x94\xb3\x70\xc2\x89\xba\x35\xed\x79\xd3\x70\x72\xa8\xdc\xfc\xad\xb4\x6d\x5f\xfa\xee\xba\x1b\xfd\x4f\x87\xd7\x66\xb5\x04\xe6\x2b\x4a\xcd\xd7\x74\x46\xe7\x9b\xa9\x94\xd6\xdb\xf4\x76\x5e\xbd\x74\xb0\x36\x51\x00\xda\x56\x16\x2c\x36\xfe\x5a\x95\x07\x7f\x6b\x42\x65\xe8\x17\x96\xb4\xa5\x74\x43\x78\x29\x70\xb9\x6c\xb4\x56\x9b\xa9\x85\xc5\x5f\xe3\xa7\x18\x38\x0b\xca\x39\xf1\x66\x24\xf8\xe4\x7c\xc6\x3c\x1b\x6f\xa1\xbd\xe1\xae\xba\x9c\x51\xf9\x4b\x70\x2b\x13\x10\x8c\xc1\x48\x1d\x42\xe6\xfa\x98\x1e\x3e\xbf\xe0\x64\xd2\xdc\xa7\x42\x0c\x74\x59\x57\x92\x31\x2a\xe3\xfb\x91\x01\xd4\xb6\x6d\x99\x16\xdf\xd6\xc1\x3a\xe8\x83\xe6\x61\xc6\x28\x22\x8b\xe9\x79\x4c\xf6\x03\x45\x07\x6d\xb2\x61\x84\xb6\x17\xe2\x72\x29\x8c\xd4\x18\x3f\x27\xbd\x52\xd4\x05\x10\xbb\x01\x5d\x20\x97\xd4\xcc\x76\xe7\x6c\x0a\x62\xbb\xfd\xaf\x53\xc7\x26\x87\x75\xbb\xfb\xdb\x88\x70\xeb\x9b\xab"}, +{{0x69,0xb3,0x20,0xfb,0xd4,0x77,0x40,0x30,0xa2,0x97,0x67,0xa0,0xcc,0x15,0x50,0xd1,0x0b,0x74,0x9b,0x44,0xd6,0x19,0xd4,0x1d,0xce,0x11,0x46,0xf7,0xac,0x80,0xa7,0x55,},{0xdc,0x50,0x8a,0x79,0xc6,0xb8,0xab,0x86,0x6c,0xd1,0x17,0xa5,0xa8,0x4d,0xd9,0xd9,0x31,0xfd,0xa4,0x50,0xbe,0xc2,0x93,0x35,0x34,0x4d,0x0d,0x21,0x92,0x16,0xd6,0x5e,},{0x69,0x7d,0x4d,0x89,0x7e,0x0e,0x2c,0xc0,0x2b,0xc1,0xc2,0xdd,0xa5,0x7f,0x0d,0xda,0x62,0x0b,0x37,0xe8,0x61,0x82,0x2b,0xb7,0xf1,0xa7,0x01,0x93,0x5e,0x95,0x9e,0xa0,0xd8,0x45,0x3f,0x74,0x6f,0xb9,0x2c,0x08,0x7e,0xd6,0x5d,0x98,0x0e,0xea,0x1d,0x6f,0xdb,0xf2,0x3e,0x99,0xb2,0x89,0xaa,0xe0,0xdc,0xbb,0x12,0x8e,0xf8,0x36,0x64,0x0a,},"\x21\x7e\x33\xf8\x86\x22\xc9\x6f\x8d\x09\x2c\x9e\x26\x66\x4f\xe9\xef\xc0\xd8\xd2\xeb\x59\xa0\x36\xfa\x46\x4c\xee\x65\xce\x44\x89\xca\xf9\x03\xdc\xe1\x7a\xfa\xfb\xc4\xf1\x8d\xc9\xbb\xfd\x6c\x1a\x4b\xe7\xb8\x34\x85\xa6\xca\x94\x7d\xef\xb1\xd3\x51\x25\xd0\x77\x39\x62\xa3\x44\xa3\x8b\x6d\xca\x9a\x40\xc3\x1c\x1c\x4e\xb2\xd7\xf6\x81\x8f\x97\x8e\x57\x3d\x66\xb9\x90\x92\x1b\x92\xb7\x77\x47\x1a\x4f\x6f\x05\x47\x7e\xbc\x35\x3a\xce\x1d\x86\xb0\x0c\xc2\x51\x77\x7a\xaf\x6a\xf3\xaa\x11\x79\xbf\xf7\x8d\xf5\x04\x8e\x5e\xf2\x99\x68\x67\x0e\x53\x54\x83\x56\x8d\x6b\xb1\x6d\xa8\x29\x56\x8f\x81\xc7\x99\xb9\xaf\xd4\xaa\xd6\xef\x08\x52\x52\xc0\xce\x3a\xc0\x1a\xc2\x1a\x9e\xa6\x9b\xd5\x8e\xad\xc6\x69\x68\xf5\x5d\xee\x38\x6b\x65\x3f\x33\x34\xef\xc3\x98\xef\x3c\x37\xa3\x8c\xe9\x3b\x21\xf1\x07\xcc\x54\xde\xc2\x6f\x53\xfe\xe5\x60\x4e\xb0\x9a\x36\xaf\xe6\xb6\x65\xb6\x32\x4a\x84\xc7\xda\x7b\x7d\xd0\x1d\x92\x78\xe4\x72\xf1\x5a\x5c\xe9\xff\x0f\xd9\x3d\x0a\xa0\x60\x4d\xd2\xdf\x8d\x5b\xf6\xa9\x12\x73\x4e\xc5\x1d\xe7\x7f\x0c\xe0\x99\xba\x11\x67\x02\x10\xa6\xa2\x06\x10\x6b\x0e\xde\x2d\xed\x85\x8a\x6b\xc4\x11\xe7\x61\x3e\x6f\x80\xe1\xaa\x52\xc3\x23\xe3\x0f\xa8\x49\x95\x1c\xc9\xb7\x76\xe4\xcc\x58\xc9\x0c\xfc\x8f\x44\x2d\xf6\x41\x51\xa7\xfd\x4a\x3d\xd6\x1a\x43\x36\xda\x21\xd0\x39\x44\x63\x5d\x3f\xd6\x67\xbe\x74\x1e\xf4\x5b\x1f\x7c\xb2\x76\xd9\xf4\xde\x81\x07\xde\x64\x58\x2f\x79\x17\xc6\xea\xb3\x8e\x0a\x88\x90\xa4\xbe\xe4\x8b\xc9\x26\x17\xa3\x61\xcc\x7b\x1d\x25\xe0\x89\x45\x3c\xe0\xa5\x25\x44\xf8\x68\xdc\xb3\x24\x9d\xe7\x61\xe7\x9d\xf6\x3e\xfa\x07\x94\xe3\xc4\x61\x8c\x55\x47\x53\xee\x28\x1c\x52\xac\x8a\xd7\x8d\x53\x38\xf0\xda\xc3\x60\xa7\x69\x38\x1b\xb4\xa3\x9f\x19\x0b\x88\x7b\x47\x23\x80\x6a\xc4\xa4\xf2\xff\x30\x4b\xc6\xf9\x33\x7a\xb5\x4c\x86\x6e\x6b\xa5\x1d\xf5\x0c\x43\xea\xb5\x2e\x2b\x39\x79\x4c\x99\x17\xe0\xc3\x14\x33\xf0\x36\x81\xd2\xf1\xd9\x3a\x04\x36\x01\x8c\xaa\xae\x20\x20\x6a\x34\x58\xad\x6c\x03\x7a\xcb\x51\x1e\xf1\x28\xf6\xdc\xd0\x53\x05\xf0\x70\x49\xa1\x3b\x6c\x6c\x3c\x5b\x81\x70\xf1\x58\xc8\xf1\x2d\x46\xe1\x60\x93\x1b\xa1\x8b\xd5\x9a\xe1\x29\xec\x07\xa0\x65\x5f\xa4\x82\xeb\xbd\x3b\x85\x0d\x36\xb8\x32\xbb\xb7\x75\xf5\x38\xe3\xc1\xb3\xa4\x3e\xcf\x94\xca\x63\x0c\xa1\x5d\x50\x28\x13\xee\xd3\xe3\x5e\x8f\xd2\x3d\x2a\xb6\x38\x60\x04\x27\xd1\x59\x7c\xb2\x9d\xa2\xa5"}, +{{0x66,0xda,0x8b,0x25,0x4a,0x37,0x06,0x73,0x78,0xf6,0x81,0x38,0xaf,0xed,0xd6,0x64,0x96,0x59,0x6a,0x05,0x85,0x52,0x4c,0x71,0x6b,0xde,0x2b,0x31,0x24,0xc3,0xe7,0xd1,},{0x85,0xbd,0xe2,0x8a,0x92,0x2a,0xb5,0xee,0xaa,0x4a,0x62,0x94,0x52,0x1a,0x2c,0xca,0xc0,0xef,0x23,0x03,0xdc,0xdf,0x8c,0x7f,0xee,0x22,0x8f,0xb4,0x55,0x20,0x12,0xe7,},{0x40,0x82,0xa5,0xbc,0x73,0x0f,0xb5,0x4b,0x6b,0xd0,0xbc,0xd2,0xa0,0x44,0xed,0x5d,0x3d,0x32,0x7d,0xc1,0x9c,0xea,0xc8,0x82,0x5e,0x62,0x9b,0x9e,0x64,0x23,0xcb,0x1c,0x61,0x42,0x36,0xf0,0x97,0xa6,0xb7,0x3d,0x47,0x39,0x47,0xcb,0x81,0xc4,0xe2,0x70,0x85,0x2e,0xe5,0xf1,0x3a,0x5b,0x03,0xdc,0x18,0xe1,0xc9,0xc2,0x7a,0x9a,0x68,0x02,},"\x3f\xae\x36\x63\x88\x37\xd0\xed\xc8\xdc\xee\x51\x7e\x43\xc4\x88\xed\x57\xfa\x6c\x98\x53\xa7\x45\xaa\xed\xfb\x10\x9e\xc1\x40\x9f\xb8\xa2\xfe\x51\xd2\x3e\x0d\xd9\xfb\xfd\x94\xf9\x1c\x18\xe6\x11\x4d\x80\x89\x01\xbf\x61\x7d\x26\x67\xce\xeb\xd2\x05\xc5\xc6\x6f\x5d\x75\x34\xfd\x2e\xc3\x3d\xbf\xe5\x80\xad\x91\x9f\x50\x42\x04\xea\xf2\x42\xaf\x87\x00\xb1\x38\xcf\xbe\x0f\x37\x29\x19\xc0\x6b\x86\x1a\x27\xd7\x20\xd0\x9d\xf2\x0f\x4f\xb7\xb7\x48\xe7\x18\xb0\xfc\x48\x6d\xbd\xfc\xb6\x94\xcb\x3f\x14\x20\x03\x5a\xc1\xbe\x55\xd3\x1f\x30\xf9\x97\xa0\x43\xd0\x47\x08\xa5\xc5\x42\xee\x37\xc0\xf7\xfe\x0b\x32\x11\xd1\x8a\x87\x03\x3d\xcb\x15\xc7\x9e\x66\x81\xc4\x97\x05\x93\xd3\x2a\x13\xc4\x8f\x0a\x3a\xf8\xbf\xc1\x36\xe0\xf9\xb5\x6a\x12\x3b\x86\xc4\xc6\x40\xb6\x50\xcb\x7d\xee\x9a\x89\xe8\x2a\xee\xee\x77\x3b\x5c\xb0\x32\xfc\xa4\x1c\x20\xc4\x07\x32\x8b\xfe\xd2\x92\x44\xe4\x60\x55\xa8\x31\x14\x61\x4d\x3d\xb5\x65\x81\x60\x4b\x11\x5f\xba\x14\xf6\x18\xe1\x02\xa1\xe1\x6c\xb0\x36\xea\x69\xdf\x92\x75\xb9\x77\xa0\x85\x81\x18\xc9\x1a\x34\xb9\xa8\x51\x9b\xd0\xda\xc3\xb6\x14\x34\xea\x08\x8f\x38\x1b\xa0\x8b\xc1\x58\x31\x89\xa4\xa7\xc8\xb6\xad\x18\xf7\x32\xd7\x4e\xff\x3a\xce\xf4\xb6\x90\x4d\xf5\x8c\x64\x69\x43\x21\x51\x37\x2d\xf9\x32\x7a\xe7\x1a\x0f\x35\x6c\x94\x46\x8d\xcf\xc2\xe4\xa5\xc0\xe4\xec\x0b\x16\x6d\x90\xcd\x46\x5f\x92\x60\xeb\xd6\xa7\xa6\x2c\xe6\xc7\x15\xbc\xc7\x15\xbe\x0c\x7e\x1f\x28\xc4\x45\x60\x12\xd3\x31\x77\xa7\xd4\x11\x3c\x9a\x5a\x22\xac\xfa\xf2\xd6\xb6\x33\x09\x07\x8f\xc1\xb1\xba\xa8\xf3\x6c\x7e\x86\x6c\x1f\x97\x2a\x65\x00\xa5\xee\xa7\x92\x01\x65\x1a\x73\x05\x20\x8b\x6c\x93\xc4\x92\xbc\x77\xca\xcb\xc9\x9c\x9c\xde\xd1\x79\xe6\x64\xa2\xf4\xe1\x69\x38\xcc\x26\xfc\xa8\xb4\x33\xeb\x80\x12\xf7\xb3\xad\x19\xba\x1f\xb8\x58\xfe\x4a\x00\xfb\x3d\x1f\x8f\xd0\xed\xdf\x0c\x37\xdc\xdb\x2e\x5d\x35\xc2\x54\x6f\x22\xe8\xc0\xf8\xce\x90\xe2\xdf\x8a\xbf\x24\x82\x7a\x01\x9b\x2c\x33\xfc\x59\x0b\xbe\x71\x2f\x01\x92\x87\x00\x2b\xc2\x21\x7c\x0d\xc0\x93\x1d\xc8\xed\x8f\x50\xbb\x44\x2f\x8b\x2d\xe2\x78\x57\x36\x2c\xe5\xa9\xfd\x97\xf0\xfd\x1b\x2b\x92\x51\xca\xd2\xa4\xac\xa1\xa9\x4d\xe2\xe9\x53\x90\x2d\x72\x28\x14\x24\x07\x44\x3b\x1d\x51\x71\x07\x64\x8a\x7b\xab\x83\x07\x49\x87\xd0\x97\x8b\xc6\x1d\x41\x9b\xc8\x45\x91\xc9\x69\xc3\xd6\xf4\xe8\x6f\xc4\x73\x87\x37\xbc\x05\x58\x75\x5c\x11\x0a"}, +{{0x27,0x65,0x48,0x29,0x0f,0x3e,0x0f,0x90,0x05,0x15,0xdc,0x63,0x36,0x6c,0x03,0xfe,0x0f,0xc6,0xee,0x13,0x0c,0x21,0xfb,0x60,0xa4,0xdf,0x9c,0xf4,0x64,0x79,0x7c,0xda,},{0x7e,0x2a,0x35,0x78,0x00,0x0a,0x08,0x7e,0xdc,0xc9,0xe9,0x4f,0xde,0x50,0x9f,0xc4,0xbe,0x05,0xca,0x0d,0xd0,0x90,0xdf,0x01,0xae,0x11,0x21,0x12,0x35,0x36,0xf7,0x2a,},{0x88,0xa1,0x46,0x26,0x1a,0xd1,0x11,0xc8,0x0f,0xa4,0x29,0x95,0x77,0xe7,0x10,0xf6,0x85,0x9c,0xf0,0xd1,0xca,0x80,0xe5,0x12,0xa5,0x52,0xc7,0x25,0xb8,0x38,0x40,0x37,0xee,0xcf,0x64,0x65,0xce,0x97,0x58,0x5c,0x9d,0x66,0x0a,0x41,0xab,0x91,0x04,0xe5,0xf7,0xc9,0xb2,0xf8,0xec,0x6f,0xb2,0x1f,0x1d,0xdd,0x50,0xd6,0x5b,0x9b,0x66,0x0e,},"\xf0\xdb\x44\x2d\xe2\x9a\x7a\x1d\xed\x55\x0d\x12\x00\x02\xcc\x12\xab\xff\xf9\x8b\x1f\x57\x6d\x65\xbd\xe1\x6d\xea\xba\x68\x7e\x4e\x0b\x0d\x5a\x87\x48\xd7\x50\x3d\xa2\x96\x9c\x64\xd6\xa7\xc2\x8d\x27\xb6\xc9\x3a\xd2\x57\xce\x32\xec\xda\xee\x37\x5f\x43\xff\xf9\x7c\x43\x2d\x45\x3f\x71\x96\xc7\x09\xc3\xbd\xfb\x73\x88\xd4\xd8\xea\xf1\x39\xf1\x82\x94\x0c\xe1\x7b\x45\x52\xe2\xd2\x0a\xed\x55\x57\xba\x4d\x2a\xcb\xf8\x45\x73\x0c\x0a\x66\xb4\x5b\x40\x95\x0b\xaf\x6a\x94\x64\x37\xaf\x6c\x9e\x3b\x33\xa7\x9e\x04\xdc\xea\xe5\x7c\x2a\x54\x95\x42\xea\xbd\x21\x6b\xf1\x39\x48\xd4\x1f\xfb\x94\x83\xfe\x29\x80\x1f\xc8\xc1\x78\x28\x40\xde\xeb\x3f\xb4\xda\x31\x92\x78\x5b\xca\x13\xed\x0a\x9e\xff\x57\xd6\x13\x6b\xaf\xbf\x9d\xec\x69\x7b\x83\x24\x47\xb2\xb6\xe7\x30\xfa\x7f\x99\x95\xba\xc6\xb7\x83\x2e\xaa\x09\x90\x5e\xe4\x9d\x46\x5a\x5e\xe4\x50\xf5\x2d\x1a\x6d\x36\x4c\x61\x81\x44\xe8\x86\xe8\xef\x63\x3d\xc7\x9d\x0a\xf8\x93\xd1\x6b\x3e\xed\xa0\xfe\xfe\xfd\x87\x59\xf2\xa0\xda\x19\x30\x17\x0d\xd1\x9e\xb7\x8f\x0d\x7a\x7b\x74\x51\x54\x03\x37\x5a\x95\xbd\xbc\xce\x01\x8b\xc1\xed\xb0\x8d\x89\x7b\xb7\x98\xa9\x5e\x7e\x86\xa5\x2a\xf3\xd9\xb8\xa4\xa1\x4b\x03\x71\xd6\x34\x98\xdc\xb2\x01\x62\x48\xeb\xd0\xbe\x80\x0e\x9f\x21\xd5\x49\xe5\xe0\xe7\xb4\x89\x5c\xa5\xcb\x72\x5a\x0c\xab\x27\xda\x8a\x8b\x12\x99\xbe\x38\xa4\x26\x09\x00\xae\x10\xdf\x5b\xab\xa1\x1a\xe2\xba\xb7\x17\x9d\xd8\x45\x39\x69\x42\x9c\xcc\x4d\x41\x60\x55\xf2\xbc\xb9\x3c\x1c\xac\x6d\x7e\x80\x4c\xf8\x12\xdf\x14\x62\xf2\x2e\xe9\xe8\x33\xa9\x76\x9e\x8e\x67\x75\x50\x40\x2c\x40\x94\xdf\x21\x2f\xd2\xc5\xfc\xc0\x9a\x72\xc7\xce\x00\x77\x51\x00\x73\x09\x0d\x0e\x63\xdb\x63\x7d\x43\xd4\xc2\x1f\x86\x19\xd3\x4d\xa5\xdb\x08\x03\x3f\x68\x6c\xe8\xb8\xa0\x82\x12\x22\xf9\x54\x34\xac\x4e\x6f\x70\x30\x94\xed\xde\xd6\xfb\x1b\x84\x6e\x97\x96\x50\x97\x9d\x3c\x77\x45\x3f\x40\xf7\xfe\xe7\xc3\xe8\x8a\x96\xfd\x1d\x70\x2e\x81\xc2\xa4\xf3\xf3\x75\x3c\x79\x64\x84\x2d\xfd\x9d\x39\x58\xa7\x43\xda\x06\x3d\x1d\x64\x8e\x51\xb2\x10\xa2\x8e\xd2\x48\x7f\x14\xd5\xf1\xbc\x6f\x33\x9b\x2d\xd1\x7a\x66\x1c\x39\x73\x6d\xa9\x9e\x4a\x4f\x07\x36\x03\x42\xd2\x37\xe3\x81\x3e\xa3\x99\x8d\x66\xeb\x31\xa2\xd7\x08\xaf\x06\x5c\x32\xb9\x27\xf7\x57\xc3\x7a\x80\x06\x60\x67\x4e\x97\x17\xba\x58\xf2\x80\xeb\x2a\xa4\x64\xfa\x74\x40\x21\x08\xa5\xd5\x66\x2e\x8d\x0f\xea\xf3\x29\x68\x7a"}, +{{0x97,0x2c,0x06,0x16,0x55,0x6e,0xf2,0x2c,0x21,0x48,0x68,0xfd,0xd8,0x22,0xc5,0x57,0x39,0xe1,0xf9,0x6a,0x93,0xae,0x83,0x51,0x2a,0xfd,0xa9,0xca,0x7a,0xa7,0x4c,0xd2,},{0x9e,0x1c,0x6d,0x41,0x07,0xf8,0xab,0x81,0x61,0xc5,0xdb,0x5b,0x88,0xa3,0x7c,0xa1,0xde,0x9f,0x4e,0x29,0x13,0x67,0xab,0xb1,0xef,0xc8,0x4f,0x83,0xf7,0x07,0x69,0x53,},{0x54,0xdd,0x06,0xfb,0xb3,0xd7,0xc6,0x3f,0x8c,0xda,0xf7,0x83,0xc2,0xd7,0xba,0xc1,0x6b,0x4c,0x82,0x6e,0x2d,0x1b,0x18,0x07,0xc8,0x4e,0x04,0x9f,0x64,0xe2,0x71,0xb2,0x1c,0xfa,0x3e,0x37,0xc3,0x44,0x26,0x02,0x87,0x80,0x5d,0x71,0x88,0x06,0xb6,0x2c,0x56,0xb4,0x7f,0x6d,0x5c,0x50,0x81,0x25,0xc9,0xfb,0x5d,0x5e,0xa3,0x5f,0xd5,0x01,},"\x86\x89\xe2\xf9\x5c\x8f\xd5\x0d\xc4\x46\x64\xa1\x8f\xb1\xa9\xf2\xc8\xf3\xee\x73\xc0\xf9\x58\x7e\xe2\x8b\xfa\x35\xc9\x23\x1c\x75\xbf\xd3\xd9\x53\x41\x74\xe5\xad\x3f\xa9\xf0\x92\xf2\x59\x94\x2a\x0f\xf0\xba\x2c\xa2\xcb\x59\x04\x3d\x19\x2c\xa8\xe3\xc8\x86\x9b\xed\xd2\x35\x4c\xbc\x5a\xc7\x82\xd7\x27\xc0\xb6\x94\x07\xf6\x8d\x13\x26\xdf\x65\xa6\x0c\x4d\x32\xf8\x7f\x19\xa1\x0f\x3d\x76\x5f\xf9\x23\x43\x4f\x55\x11\xd1\x34\xd3\x97\xc4\xfe\xf6\xbb\x19\x53\xab\xfc\xe6\x08\x27\xc3\x59\xaa\x4b\x54\xf9\x12\xaa\x8b\x17\xb8\x3d\xcc\x7e\x3b\xcb\xc5\x05\xba\x04\x6f\xe5\x7c\x16\xda\xcf\x4e\xe2\xfa\xd5\x38\xbc\x06\x81\x7c\x9b\x9d\x8d\xbc\x5f\x9d\x9b\xbf\x9f\x4a\x93\x4f\x14\xa4\x2c\x29\xe0\xe2\xf3\xa4\x9f\x46\xb2\x0e\xe7\x6c\xfe\x20\xde\xa1\xe9\x74\x50\xeb\x6a\x8f\xda\x04\x81\x68\xdd\x82\x78\x10\x20\x7f\x00\x5a\x3c\xaa\x93\xca\x11\xf4\xee\x60\x8a\x7a\x93\x55\x49\x43\x13\xae\xc8\xd7\x07\x5a\xfc\x94\xc7\xcc\xcc\x75\xc2\x31\x9b\xb4\x58\xc0\xce\x37\x3e\x9d\x00\x7f\x75\x3b\x33\xb5\x27\x93\xd5\x84\x96\xb2\xd2\x5c\xd1\xdc\xd7\x83\x2a\xac\x5d\xdb\x38\xf4\xdb\x19\xc4\x27\x21\x9e\x1a\x04\x20\xea\xd4\x7b\xa9\x5a\xb6\xd8\x9c\x65\x93\x90\x41\xcc\x73\x4c\x08\xeb\x6b\x47\x6c\xaf\x7f\xc7\x6c\x59\x8d\x94\x7f\xf4\x44\xb1\x07\x70\xf6\x29\x45\xae\x65\x04\x4f\x78\x09\x82\x99\xe2\x62\x6b\x63\x8a\x73\x28\xd1\xb7\xda\xa5\x88\x9e\x8d\xb9\x4b\xbf\xf2\xde\xd6\x2e\x14\x46\x37\x60\x22\x7c\x3f\x32\x6e\xd4\x93\x56\x5d\xdf\x0a\x17\x61\xb8\xe4\xbb\x7d\x24\x10\xfa\x0f\xdb\xf3\x56\x84\x39\x7e\xef\xea\x95\x89\x58\x89\xa0\xa9\xdf\xfc\x5e\x02\xc0\x92\x38\x3b\x7c\xe7\x4d\x2d\x90\x93\x99\x16\xf2\x6b\x71\xaf\xd2\x65\xf8\xbe\xc7\x4f\x0d\xe2\x47\xc9\x64\x39\x05\x58\x3d\xf3\xce\xe2\x35\x37\xd6\xb5\x68\xc8\x33\x8c\xe5\xfe\xe4\x2f\x7d\xd1\x5d\xad\x52\x47\xf0\x09\xac\xbf\xd5\xd7\x69\xb6\x36\x69\x59\xcd\x0a\xe1\x50\xf5\x8f\x7c\x80\xfa\x10\xd9\x89\xed\x90\x11\x93\x72\xe5\xfe\xa5\xda\x48\xa4\xe8\xea\x9c\x72\x78\x75\xdc\x4a\x20\x05\xb0\xdc\x2e\x3f\x69\x7c\x0c\xe0\xa4\xbd\xb2\xf7\x50\xc0\x4f\xbc\x0c\x27\xd0\x2d\xd8\x28\x6e\x54\xc9\xc3\x95\x9b\x6f\xfb\xdb\x1d\xe2\xaf\xfe\x9e\x78\x26\x51\xe5\x16\x8a\x50\x0a\xfe\xd0\x37\xb3\xe1\x79\x0d\xdd\x59\x38\x51\xa6\xa6\xcc\xca\x9f\xff\xb4\xa9\x9e\x27\xdf\x43\x81\x88\x71\x53\x6a\xb0\x4f\x14\xa0\x6a\x1c\x7c\xb4\x7b\xed\x62\x41\xce\x74\x30\xad\x3e\x64\x0a\x72\x67\x52\xfa\x06\xa9"}, +{{0xe0,0x40,0x5d,0x37,0x89,0x3e,0x89,0xf5,0x38,0x11,0xd6,0xd4,0x46,0xe1,0xf1,0x93,0xf5,0x1a,0xfa,0x1b,0xbb,0xa7,0x25,0xf9,0x5e,0xb4,0x80,0x33,0x42,0x4a,0x25,0x09,},{0x45,0x10,0x4d,0x59,0x5e,0x44,0x3e,0x8c,0xe6,0x54,0xde,0x9d,0x65,0x50,0x54,0xbf,0x0a,0x99,0xd3,0x56,0x13,0xd7,0x7d,0x57,0x45,0x4c,0xa2,0xd1,0xc8,0x99,0xb5,0x17,},{0x77,0xdd,0xd4,0x91,0xca,0x66,0x2e,0xbf,0xfb,0x12,0xf7,0xf4,0x92,0xd7,0xfb,0xc1,0xa1,0xb4,0x47,0xf6,0xc8,0x59,0x98,0xf2,0xf7,0xcc,0x9a,0xdc,0xe6,0x7d,0xe6,0x3b,0x6e,0xeb,0xd0,0x81,0x17,0x84,0x5a,0x03,0x02,0xf7,0x34,0x97,0x14,0xba,0x9d,0xb2,0xaf,0x58,0x04,0x8b,0x85,0x83,0x7d,0x76,0x60,0xec,0x3d,0xeb,0xee,0xe2,0xd0,0x0f,},"\xdf\x58\xc4\xfd\x07\x02\xa2\x0f\xaf\xa3\xd1\xd4\xfe\x7d\x85\x93\x8b\x12\x0f\xc1\x1e\x8d\x41\xb6\x01\xf0\xe6\x0e\x42\x23\x6a\x49\xf1\x26\x81\x3b\xd5\x12\xee\x71\x35\x90\x61\xe1\x3e\xb3\x14\xd4\x17\xf5\x6d\x6d\x56\x02\x85\xfa\x89\x91\x21\x32\x84\xc4\x2b\xc2\xce\xf2\xdc\x93\x7b\xdc\x0b\x5e\x9d\xc2\x26\x9a\xfa\xb3\x2d\xb3\x0e\x68\x49\x85\x59\x51\xcf\xbc\x53\xec\xfa\x01\x64\x38\x63\xe0\x32\x89\x95\xfe\x85\x0c\x0d\xb5\x54\x21\xbf\xa5\x64\x60\x1b\x8c\x9d\xb7\x55\x2c\x7e\x6a\xa7\xad\xfa\x15\xa5\x80\x21\xa8\x42\x66\xe9\x59\x5c\x65\xfc\xa4\xa1\x5f\xa7\x0f\x55\xf5\xd2\x12\xc9\xe2\x77\xff\xb8\x30\xf4\xca\xd1\x86\x1f\x3f\x49\x5a\x9d\x67\x2f\x56\x91\x31\x06\x39\xc1\x2d\xcd\x07\xe3\xef\x17\xa2\x37\x50\xbc\xb4\x6b\x7a\xd7\xea\xc4\x62\xeb\x51\x22\x25\xf3\xbe\x7e\x32\xf8\xf4\x98\x7a\x11\xdf\x34\x11\x66\x06\x2b\x43\xc6\x3a\xb8\x58\xa6\x00\x49\x76\x67\xfb\xb8\x8e\x93\xc7\xe2\xe0\xaa\xb4\x1c\x09\xc0\x23\xeb\x90\x2e\xc3\xba\xf6\x79\xe2\x5b\x96\xe1\x06\x92\x1a\x91\x4f\xd5\xde\x20\x0a\x47\x88\x9d\xe2\x3e\x7b\x65\xd0\xcc\xdf\x0c\x29\x03\x64\x67\xa1\x21\x0c\x00\x30\x30\x9a\x2d\x04\xec\x25\x6d\x5a\x4d\x8b\x97\xd4\x6a\x3e\x15\xf3\x45\xb6\x67\x17\x08\x03\xcd\xac\xf6\xcb\x48\xad\xd0\xa1\x34\x62\xdd\x30\xfa\x06\x2b\xd4\x56\x66\x41\xda\x07\xd7\xf6\x1e\x06\x36\x86\xed\xd9\x6b\xfe\x8f\x97\xb9\x86\xb7\xc0\xe4\x42\x49\xcd\x2d\x73\x17\x47\x29\x99\xb8\xee\x4e\xa8\x0c\x90\x2f\x3b\x18\x89\x36\x71\x2e\x89\xd8\xbf\x02\xce\x8a\xe7\x7b\x6b\x31\xab\xb0\x63\x20\x65\x45\x5d\xdd\x9f\x9d\x1c\xd9\x53\xa4\xa4\x9a\xac\x1a\x15\x16\x9e\x68\x7d\x4f\xd3\xf7\xc2\xed\xfb\x3a\xab\xc3\xb6\x61\x55\xf7\xd3\x15\xf8\xa2\x94\xfa\xdd\xff\xdb\x49\x51\x36\x7a\x0c\xb8\x70\x75\x9e\x85\xa8\x38\xaf\x66\xba\x3f\xc1\x03\xda\x2b\xab\xc3\xf3\x81\x69\x6e\xf8\x88\x2d\x85\xa8\x27\x8d\x5f\xac\x3a\x72\xf1\x6e\xb1\x19\xee\x99\x00\xb1\xfd\x98\x6c\x2a\x9f\x94\xee\xd8\xe0\xd4\xf2\x73\x69\x7e\x43\x63\xa9\x75\xff\x6a\x7b\x80\xd5\xb4\xec\x53\x55\xbf\x63\xb4\x2b\x71\xcd\x48\x42\x40\x1d\x38\xb5\xe0\x0c\xc9\x7b\xfd\xa4\x0e\x45\x66\x53\x68\x3b\xc8\xe6\xda\xde\x7d\xcf\x98\x5a\x97\xb0\xb5\x77\x6c\x4d\x72\xca\x13\xa1\x47\x4e\x4e\xb2\xec\xcf\xcd\x42\x87\x86\xdd\xd0\x24\x6d\x73\xa6\x37\x7a\x79\xcb\x8d\xa7\x20\xe2\x26\xc1\x94\x89\xbd\x10\xce\xdd\xe7\x4b\x49\xfa\xc2\xcf\xa2\x07\x12\x9c\x6a\x10\x8a\xa1\x64\xbe\x9d\x80\x9c\x4d\x31\x14\x73\x60"}, +{{0x57,0x56,0xe7,0x52,0xdf,0xf6,0x9e,0x3e,0xed,0x84,0x8e,0x4a,0x49,0xc7,0xa8,0xba,0xca,0x12,0x15,0x4f,0x94,0x31,0xde,0xc3,0x56,0x26,0xef,0x8d,0x75,0xa4,0x45,0x14,},{0x59,0x10,0xef,0x00,0xa5,0xb3,0x54,0x14,0x3c,0x46,0x56,0x1d,0xa6,0x2c,0x41,0xaa,0x13,0xd2,0x9c,0x18,0xdc,0x61,0x53,0xbf,0x8e,0x50,0x2e,0x01,0x14,0x00,0x77,0x28,},{0x81,0x57,0xd8,0x33,0x4d,0xed,0x1a,0x32,0x69,0x9b,0x35,0x0a,0xc0,0xd4,0x12,0x00,0x28,0xcd,0x8e,0xf8,0x18,0x94,0x48,0x93,0x48,0x50,0xe5,0x0e,0xe4,0x99,0x9d,0x8f,0xa2,0xcd,0x25,0x76,0x46,0xd9,0x2f,0xba,0x5d,0x66,0x2a,0x82,0x3e,0x62,0x20,0x8a,0xb4,0xfb,0xe0,0x17,0x14,0xa8,0x48,0xa0,0xb9,0x0b,0x55,0xad,0xcd,0x24,0x69,0x02,},"\xeb\x21\x90\xa3\x21\x9c\x79\x2b\x66\x66\xb2\x75\x27\x33\xad\x9f\x86\xfc\x39\x01\x55\xc4\xb4\x38\xbe\x19\x69\x59\x38\x3b\x25\xf3\xa7\x49\x53\x0d\x5a\x4b\x15\xeb\xe2\xc1\x8d\x99\x17\x8e\x6d\x45\xbb\x4a\xa2\x12\x0f\x95\xa3\x52\xe0\x40\x6c\x63\xac\x86\x72\x48\xd9\xef\xba\x12\x42\x31\x06\x48\x73\xc8\x2f\xe9\x95\xdd\x03\x1c\x7c\xbc\x7d\x15\xec\x19\x1f\xbb\x6c\x47\x4d\xc4\xc7\x77\xe8\xf4\x57\x84\x1e\xb4\x62\x48\x41\xc1\x52\xd1\x5e\xde\x26\xe7\x84\x79\xa6\xa2\x5f\xfa\x33\x55\x63\xf1\x06\x4e\xf0\x95\x58\xb9\x10\xe2\x60\x84\x18\x82\x0f\x49\x55\x4b\x67\x0c\x6b\xab\x34\xd1\xd6\x09\x84\xde\xa5\x0e\xd6\xa3\x75\xf4\x5a\x74\xbe\xad\xfb\x04\xbd\x93\x00\xbd\x59\x4e\x2e\x20\xea\x5d\x30\x52\xbb\x7d\xdc\x51\xa9\x49\xa0\x04\x79\x72\x68\x2e\xbe\x66\xd3\x8a\xac\x62\x92\x72\x70\xde\x42\x15\x0d\x58\x22\x1d\x03\xb8\xac\xe3\x58\x99\x33\x48\x7b\xf2\x3d\x29\xc5\xc2\xc8\x43\xae\xfa\x2e\x1c\xa2\x2f\x9d\x16\x80\xf8\x0c\x76\x6d\x14\x3c\xe5\xec\xef\x25\x3a\x74\x5c\xb7\x1e\x72\xf6\x50\x4a\xd9\x11\xf7\xcb\x4a\x81\x9c\xd0\x74\x86\x3a\x92\x70\x69\x29\xa3\x14\x2f\x8d\xb7\xac\x16\x41\x02\xac\x2c\xa0\xd2\xe1\x9a\x72\x5e\x1b\x5f\x81\xf4\x43\xc7\x3e\x04\x84\xf2\x6a\x45\xa3\xae\xf8\x4f\x1f\x3f\xa0\x4a\x4a\xc6\x95\xd2\xda\xb6\xef\xba\x45\x6a\x28\x1a\x39\x73\xcc\x18\x6e\x68\x0a\x66\xdf\x52\x1a\x4d\x1f\x9e\xdf\x4d\xfb\x27\x4a\x42\x70\x97\xbf\x86\x32\x81\xcf\xb0\xed\x80\xf8\xd7\x67\x66\x38\xd6\xcd\xac\x93\x78\x43\xef\xbc\xfc\xe9\x1d\xe1\xdf\x6c\x52\xb5\x94\x57\x1b\x93\x15\x60\x0e\x4b\x65\x52\xde\xfb\x84\x37\xa8\x07\xba\x21\x29\x8e\x3d\x97\x22\x12\xba\x31\x46\x92\x91\x7f\x40\x07\x53\x11\xac\xd0\x09\x39\x52\x41\xb9\xf1\xb2\x56\xc5\x15\x73\x5d\xc6\x74\xf8\xe8\x66\xd1\xee\xb4\xc3\x28\x54\x8a\xee\x71\x23\x1c\x4c\x9d\x5b\xd2\x2e\x39\xde\x88\xd1\x9f\xab\xf4\x9f\x0b\x98\x69\xcb\xf8\x35\x21\x4b\x15\x52\x2a\x93\xd3\xa5\x00\x7b\x11\xf0\xb5\x0e\x52\x28\xd4\xee\xbb\x45\x71\xb3\x5d\xa8\x4f\x4f\x68\x7e\x3f\x43\x79\x3d\x54\xf3\x82\x5b\x37\xa5\x09\xea\x56\x4b\xdf\x21\x7f\xf4\xad\xf6\x84\x7b\xbe\xa4\x31\x6a\x1d\xbc\xc7\x44\x8e\xcd\x53\x63\xea\xab\xc1\x28\xde\xcf\x05\x4e\xe1\xa0\xee\x2d\x87\x19\x79\xf8\xa6\x3b\x26\x92\xb0\x9f\x6e\x98\x6a\x13\x8e\x7f\x68\xf6\x0a\xa4\x26\xa1\xc9\xb0\x1a\x49\x02\xe1\x3b\x17\xbc\x83\x12\x41\x0c\x28\xbe\xd2\x9b\x60\x1b\x0f\xc9\xf3\xbc\x2d\x22\x3f\x87\x52\x51\x10\x0f\x86\x9c\x6b\x58\x44"}, +{{0xb9,0x04,0xac,0xb1,0x9e,0x5c,0xf8,0x72,0xd3,0x64,0x0c,0xd1,0x8d,0xdf,0x3c,0x0b,0x66,0x57,0xe0,0x11,0x7c,0xe6,0x59,0xdb,0xf5,0x02,0x59,0x01,0x5d,0x3f,0xbf,0x32,},{0xe0,0x4a,0x8a,0xa5,0x6d,0x18,0x18,0x48,0x3b,0x10,0xd0,0xa7,0xc9,0x19,0xe1,0xd5,0xd8,0x00,0x1e,0x35,0x51,0x0e,0x1e,0xc6,0x2f,0x71,0x14,0xdb,0xe8,0x1a,0xe0,0xbe,},{0x9a,0xaf,0x8a,0xc9,0x71,0x40,0xd5,0x50,0x8d,0x58,0xf5,0xac,0x82,0xb7,0xfd,0x47,0xe6,0xb1,0xf6,0x8a,0x7c,0x78,0xa2,0xac,0x06,0xf0,0x41,0x6e,0xf8,0xe9,0x91,0x95,0x3f,0x62,0xc4,0x7f,0xd5,0xfb,0xc6,0xc1,0xe0,0x1b,0xae,0x1c,0x92,0xa3,0x3e,0xf5,0x2b,0x7e,0xfa,0x5f,0x17,0xbb,0x86,0x33,0xbd,0xc1,0xae,0xeb,0xce,0x31,0x8f,0x0f,},"\x83\xf4\x12\x4d\x5a\xf9\x55\x13\x9b\x1b\xc5\x44\x1e\x97\xc5\xfa\xc4\x91\xb4\xea\x91\x14\x07\xe1\x54\x20\xa0\x34\x7e\xd7\xfa\x1f\x88\x19\xe3\x6c\x8e\xd5\x74\x0c\x99\xd4\x50\x5a\x78\xb6\x19\xd5\x60\x74\x9a\xf5\x0b\x05\x73\x51\x08\x16\xd6\x13\x22\xcd\xa9\x76\xa5\xd4\xca\x32\x05\xf5\xf0\xe6\x0e\x75\x9a\x5d\xf1\xa0\xbd\xf3\x6d\xfe\x97\x17\x90\x6a\xc5\x7c\xbf\xc9\x70\xab\x43\xb6\xfa\x18\xe6\xc0\x00\x6c\x84\xfc\x72\x54\x47\x0a\x0b\x77\x47\x27\xbf\x5f\x8e\x67\x94\x23\xa5\x31\xe4\x1c\xb5\x31\x0f\x9b\xcb\xf5\xa5\x44\x5e\xbc\x39\xfb\xd9\x09\xce\x11\xe9\x7b\xc2\xf6\x6a\x4a\x1b\xb6\xc2\xf1\x67\xf2\xc6\xe8\x0e\xb9\xb8\xb7\x2d\xf3\xe8\xcf\xd4\xe5\x14\x48\xdc\x14\xc0\xb8\x37\xf2\x94\x96\x93\xd1\xd0\x54\xc8\xf9\x5b\xff\x7f\x1e\x36\x45\x67\xd0\x34\xf2\x22\x3e\x15\x94\x77\x2a\x43\xdc\xfe\x05\x97\xfd\x6d\x13\x3b\x3f\x2e\x96\xff\xc5\x66\x7d\xd5\x92\x8f\x23\xec\x3c\x75\x0f\x84\x59\x93\xa3\x4e\x97\x76\x15\x9a\x68\x30\xd6\xfd\x90\x13\xee\x7a\xea\xa1\xfc\xcd\x69\xb9\x6d\xf2\x84\x70\x4f\xd0\x88\x88\xb1\x5b\x64\xe2\xe9\x0d\x57\x8c\x5c\xfc\x0f\x95\x69\x3f\x6a\xb6\x5c\x69\x47\x44\x6a\x85\x7c\x02\x9c\x7c\xa6\x60\x80\xb7\x54\xc7\x73\x4b\x78\x99\x8a\xbe\x9b\x7c\xc6\xef\xd0\x9a\x44\x18\x19\x4d\x88\xb3\x4e\xc6\xc3\x3a\xf6\x30\xdb\x81\xde\x5b\x99\xfe\x65\xaa\xc8\xb7\x33\x62\x37\x91\x19\xc7\x00\xd1\x07\xed\xfc\x19\xf2\x70\x76\x04\x68\xee\x8e\x5f\x15\x5d\x9a\x34\x7e\x57\xb5\x93\x0f\x32\x7a\x8d\x11\xc6\x67\x4d\xdd\x02\x0f\x9e\x7d\x9b\x76\x1d\xba\x5b\x83\xa8\x73\x02\xf1\x83\x3e\x5a\xbd\x49\x52\x6d\x66\x39\x1e\x5b\xf0\xe3\x5b\x44\x53\xd6\x30\xbf\x7d\x0a\xdb\xfe\x50\x1a\xef\x81\xe6\xc5\x93\x8f\x92\xcb\x75\x2f\x5f\x14\xd2\x80\x6f\x90\xae\x15\x46\x05\x1c\xcc\x7f\x91\x3c\x5d\x6a\x38\xff\x3b\x7b\x9a\x23\x66\x2e\xf1\xf0\x08\x08\xed\xb2\xfa\x31\xec\xba\x5c\x8d\x33\x87\xe8\x75\x41\xcd\x06\x16\xed\xbf\x3a\xaa\x35\xa5\x37\x92\x28\x61\xf4\x4c\xbd\x9f\x99\x2b\x82\x46\xd9\xc6\x4c\x41\x98\x81\x70\x1a\xb4\x3f\x7f\xd4\x64\x21\x0d\x80\x2b\xa6\x56\xd9\x5c\x0f\x24\xa3\x45\x99\xb2\x0b\x1e\xc2\x00\x11\x48\x5c\xfc\xb3\x18\x6b\x7b\xcf\x69\xd7\x45\x81\xa7\xa3\xee\xd6\x13\x4c\x4e\xec\xd6\x55\x74\xa4\x32\x0d\x9c\x57\xa8\x49\xc4\xe7\x8c\x8a\x5c\xe8\x25\x05\x00\x4a\x54\xf1\x9d\x4b\xdc\x82\x23\x40\x1b\x34\x94\x6b\x7d\x66\xe4\x7e\x63\xcf\x9d\x0f\x57\xd0\x94\x54\x91\x38\x4b\xc6\x86\x8c\x4b\x47\x86\x90\xe5\x50\x02\x1d\xf1"}, +{{0x8a,0x35,0x01,0xb7,0x69,0x53,0x60,0x3c,0x90,0x33,0xe3,0xbc,0xbf,0x3e,0xc3,0x78,0xd2,0x57,0x01,0x1a,0x6c,0x50,0xb8,0x97,0x62,0xd4,0x91,0xea,0xa7,0x2c,0x5e,0x0d,},{0x77,0x8f,0x20,0x19,0xdc,0xd8,0xdb,0xb8,0x6c,0x67,0x37,0xcc,0x8d,0xc1,0x90,0xc5,0xa0,0x4c,0x50,0xb5,0xbf,0x45,0x88,0xbc,0x29,0xfa,0x2a,0x47,0xaf,0x25,0x26,0x72,},{0xa8,0xa3,0x09,0xba,0x52,0x12,0x5e,0x76,0xa4,0xa6,0x1e,0xb4,0x3f,0xd4,0x13,0x5c,0x41,0xab,0x11,0x79,0x9b,0x91,0xcc,0x54,0xff,0xc9,0xc6,0xa2,0x0f,0x05,0x0c,0xc5,0x95,0xb2,0x81,0x43,0xc8,0x74,0xbd,0xb9,0x28,0xbe,0xed,0x26,0x1d,0x9c,0x0f,0x12,0xaa,0x19,0x2e,0x66,0x40,0xbf,0xda,0xd5,0x4b,0xa0,0xd4,0x78,0x42,0x6b,0xce,0x09,},"\xe6\x09\xf1\x22\x4a\x6a\x45\x11\x40\xcb\xc0\x25\x4d\x43\x2c\xe5\xfd\xdd\x08\xa8\xe9\x12\xf8\x1c\x41\x2f\xdf\xd5\x18\x2f\xf6\xac\x2f\x13\xc5\x76\xc8\x14\x5b\x15\xf2\x5b\x40\x9d\x85\x3f\x91\x44\x09\xe4\xe0\x2c\xef\xc3\x9d\x9b\xef\x4a\x2a\x06\x04\x98\x57\x0b\x2d\x3a\x28\x38\xc9\xb0\xb8\xe3\xaf\x4f\xc3\x7e\x19\x15\xf8\x04\xa8\x01\x88\x58\x5b\x30\xb6\x8a\x3f\xfb\x2e\x96\x0c\x73\x20\xe8\x27\xd2\xfe\x36\xe6\xa3\x28\xcc\x6e\x78\x06\x34\x8a\xdb\x0b\x77\x3b\x78\x4d\xe5\x29\xbb\x6f\x64\x75\x1b\x21\x05\x85\x94\x94\xfd\x49\xdb\x0b\xc7\xf6\x2d\xf4\x6b\x9d\x7c\xe6\x76\x97\x5c\xc5\xf4\x38\x56\x49\x84\x36\x81\x2e\x04\xf2\x6f\xb8\xb8\xab\x7e\xba\x12\xf1\xd5\x67\x22\xeb\x82\xeb\xfa\xfa\x47\x35\x97\x7a\x26\x68\x1c\xb0\x3f\xa4\xbc\x69\x51\xab\x9c\xbd\xf7\x87\xe3\x27\x8f\x2f\x57\xf2\x9e\x12\x09\x5f\x8c\xa2\xa1\x78\xcf\xa7\x57\x13\x37\xf0\x27\x42\x37\x66\x9f\x97\x65\x7d\x4b\xad\xb3\x94\x36\xd7\x86\x49\x25\x80\xfd\x55\xd8\x6b\xe3\xa0\xcd\x17\xd1\x60\x57\x01\x7b\xaa\xae\xa0\x0c\x1e\x14\x55\x21\x59\xbc\xab\xc0\xe6\x66\xba\xd3\x41\x8e\x4e\xc1\x3b\xfe\x16\x3b\xe2\x56\xf0\xc8\x9b\xc2\x34\x4a\x8d\xdf\x99\xca\x81\x60\xb1\x89\x87\x5a\xd3\x22\xd9\x0f\x58\x13\x25\x28\x1d\x53\x89\x96\x5c\x0a\x7b\x7b\xca\xe2\x29\x4a\x3c\xbe\x35\xa4\xe4\xe8\x3b\x54\xc4\x27\x63\x53\x96\x0f\xad\x11\x85\x32\xd4\x9b\x70\x76\xf2\x5a\xd1\x90\xab\x56\x94\x91\x4f\x71\x08\xb0\xab\x69\x69\xa1\x91\x28\xfb\x0a\xef\x00\xe6\x5a\x04\xfc\x83\x2d\x07\x69\x61\x67\xb9\x34\x2b\x35\x5e\xc5\x77\x37\xca\x37\xcb\xff\x3b\xb3\x19\x31\xcb\x58\x71\x2a\x4c\x46\x89\x52\xc6\x45\x9d\x56\x7a\x26\xe7\x95\x01\xe4\xe3\x1b\x1b\x09\x53\x53\x76\x32\x02\x9e\x9b\x49\x0f\x72\xe5\xa6\xe0\x57\xdd\xb4\xb3\x17\x56\xfd\x97\x04\x21\x8b\x1b\x8f\x4d\xcb\x54\x30\xc0\x25\x04\x2f\x47\x16\x9b\xfc\x7c\x80\xd7\x1c\xab\x8c\xa0\x7f\x34\x0a\xfa\x00\x8a\xbb\xe2\xe3\xa0\xab\xe1\x41\xda\x8d\x41\xca\x6b\xd6\x9d\x36\xfd\xb1\x1a\x41\xce\x0b\x72\xfa\xbc\x00\xd9\x7e\xa6\x05\x27\x00\x10\xb2\x59\xdf\x8e\x10\xdd\x22\xdc\x17\xc1\x39\x90\xa0\x5f\x02\x33\xe3\xca\x85\x6b\x40\x97\x1c\xb3\xe2\x1c\x8b\x39\x50\xb1\x3f\xc8\x4e\x1f\x26\x6c\x2a\x6f\xbe\xce\x88\xd5\x97\x25\xc3\xcf\xb2\x22\x5d\xbc\x1e\xe9\x5b\x68\x6d\xb7\x04\xfc\x93\x7b\x76\x6f\x0a\x9b\xfe\x95\xa4\x2b\x90\x10\xf1\x22\x9c\x61\x0d\x7e\xde\x09\x57\x12\xc8\xf0\xf1\xfb\x00\x47\xc0\x40\xa8\x70\x30\x6c\xd8\xdc\x74\xc4\xda\x51\xbf"}, +{{0x42,0xb5,0x36,0x52,0xd0,0x8b,0x5d,0x76,0x6e,0x66,0xad,0x8f,0x3e,0xbf,0x69,0x3c,0xfd,0x77,0x90,0x7c,0xad,0xd9,0x8b,0x54,0x66,0xdf,0x77,0xdf,0xa2,0xc6,0x37,0xad,},{0x88,0x46,0x3b,0xb8,0xa4,0xb6,0x38,0x8d,0x92,0x4c,0xb8,0x62,0x09,0x83,0x41,0x95,0x43,0x5d,0x79,0xd7,0x7f,0x8c,0x02,0xf4,0x6b,0xbd,0x16,0xd8,0x2e,0xfe,0x42,0xb3,},{0x30,0xc4,0xb9,0x9e,0x68,0xec,0x33,0x51,0x30,0x8f,0xbc,0x76,0xd9,0xca,0xf0,0xaf,0x62,0x21,0xb5,0x96,0xb7,0x01,0x7f,0xe1,0x0c,0xc6,0x33,0x02,0x3b,0xa9,0x7f,0x02,0x38,0x96,0xfe,0x32,0x2b,0xaa,0x34,0x76,0x60,0x61,0x0e,0x05,0xfa,0x49,0x3d,0x21,0x8f,0xa3,0x60,0xf1,0x8d,0x93,0xe2,0x75,0xd1,0xef,0xf6,0x66,0xb6,0x3d,0xb2,0x04,},"\x9e\xe9\x13\xc7\x4e\xe3\xc5\xe8\xc9\x0d\x64\xb8\xae\x3a\x60\x04\x9f\xc7\x65\xe1\x76\x06\x0b\xcd\x1c\xd0\x9f\x0e\xda\x60\xbf\x23\xba\xdb\x8a\x1c\xaa\xc3\xd6\x6e\xbc\x52\x68\x14\x6e\xe4\xa5\x4e\x1e\xb2\x31\xed\x25\xef\xf9\x5b\x90\xa6\xe9\x83\x37\xa5\x40\xa3\xf4\x84\x49\x79\x4a\x48\x73\xbf\xc2\xe8\x47\x28\x96\x6b\xb7\xc6\xff\x67\x6a\x2f\xf5\x73\x11\xc1\xc2\x5e\x15\xfb\xf3\xd4\x0e\x9f\x25\xab\x5d\xb9\x1f\xdd\xb7\xa0\xae\x43\x6c\x8e\xc0\x70\x75\x4b\x6d\x74\x3a\xa1\xd6\x04\x8f\xb5\xbd\x7f\x5b\x8e\x4c\xca\xd2\x03\x28\x38\x95\x30\xf1\x13\x74\xa4\x89\xb1\xd5\x05\x31\xa3\x9c\x9b\x32\xb4\x03\x69\x62\x60\x06\xd2\x64\xa9\x9e\xec\x4f\xac\x13\x41\xf4\xe7\x46\x79\x45\x7b\x41\x8e\x6b\xbf\xba\x23\x3f\x1c\xa1\x58\xf7\xb2\x9d\x40\xd5\x03\x01\xf9\xd9\x25\x36\xfd\xc5\xc2\x3f\xe5\xde\xe4\xd6\xdf\x0e\xbf\x13\xdf\xa3\x75\x4a\x14\xc8\x56\x00\x9a\xde\xa1\xdd\xa4\x09\x30\x4c\x1f\x60\xd2\x53\x30\xfb\x10\x95\x79\x47\xa0\x05\x08\xf2\xfd\x76\x42\x2e\xac\x69\x4c\xc3\x9f\xa8\xae\x7f\xcc\x77\xa0\x2f\xd9\xee\x5f\x91\x0d\x93\xe8\xaa\xc6\x8f\x14\x5d\xd8\x78\x87\x6b\xa8\xed\xa0\xa4\x9f\xcb\x20\x9c\x34\xea\x22\x0d\x4d\x06\x05\x54\x6f\xc4\xa8\x09\xba\xf0\x10\xd5\x33\xe4\x5d\x17\xb0\xe1\x6a\x46\xe9\x1e\xa6\xfe\xc2\xcd\xc5\xa8\xb3\xec\x50\x14\xb2\x5e\x92\xd8\xe5\xc9\x28\xab\x06\x99\x3d\x4f\xe2\x3a\xc8\xd4\x5c\x89\x03\x78\xdd\x13\x3f\x00\xed\xb9\x37\xc0\x71\xf7\x5c\xfc\x13\xa4\x02\xe3\xe4\x29\xa8\x48\x65\x2a\x17\x5c\x9b\x6f\x6e\xac\x86\xf6\x18\x8a\x44\x48\xa9\x6c\xe2\x87\x2e\x5f\x65\xf9\xbd\xb8\x71\x66\xc9\xb8\x7a\x7e\x95\x8e\x80\xbb\x65\x66\xe3\xfc\xf8\x71\x19\x0c\xf4\xa8\x67\xe6\x12\xcf\xc1\xe4\x37\x1d\x2b\x73\xd2\xa0\xad\x0a\xa4\x00\xba\x69\xe6\x63\x36\x23\x3b\x0f\x3c\x52\xb8\xa6\x8b\xca\x05\x12\x56\x01\x25\x50\x46\xe6\xf4\x9d\x68\x8d\x2d\xb8\x5c\x7b\x82\x12\x70\x51\x6e\x3c\x06\x13\xf3\xf2\x3f\x9c\x57\xcb\x4c\x87\x14\x28\x5c\xdf\x95\xe1\x06\xa3\xb5\xaf\xca\xeb\x81\xb7\x2f\x34\x3e\x87\xbd\x92\xf1\x58\x1d\xcf\x9a\xa9\x0a\x02\x4f\xa4\xa1\x04\x80\x59\xe3\x0d\xe8\xff\x0d\x16\x79\x4d\xcd\x74\x5d\x2b\x2d\x53\x4c\x52\x0f\x82\x78\x53\x86\x74\xa9\x34\xc6\xf1\x4a\x84\x28\xe3\xda\x01\x8a\x36\xe4\x5a\xa5\x82\x7c\xf4\xb1\x52\x84\x34\x6f\xd6\x93\x63\x14\x92\x19\xbb\x0d\x1b\xc9\x27\xd8\xd1\x93\xc4\x82\x69\x2f\x97\xdc\x88\xd8\xed\x33\x7d\x0c\x9d\xc9\x9c\x7a\x5e\x11\x1d\xce\xd4\x22\x50\xd5\x80\xe2\x06\x92\xbb\x7b\x88"}, +{{0x14,0xcf,0xe0,0x0f,0xa7,0x19,0x0a,0xe8,0x10,0x88,0x8a,0xe2,0xbb,0xd0,0xff,0x64,0x12,0xcf,0x1f,0xd4,0x08,0xa3,0x08,0x29,0x43,0x83,0xa1,0x94,0x53,0xb5,0x90,0x73,},{0x4e,0x61,0xaf,0xe8,0xc1,0x74,0xb6,0xee,0x1a,0x29,0xfa,0x09,0xcf,0x87,0xb4,0x00,0x81,0x39,0xf1,0x07,0x0b,0xc8,0x53,0x1b,0x6d,0x06,0xf5,0x4c,0x95,0x62,0xa4,0xf3,},{0xf7,0x85,0xa4,0x6f,0x69,0xbb,0xd0,0x99,0xfa,0x01,0x11,0x24,0xba,0x90,0x32,0xc1,0x89,0x74,0x2c,0x9e,0x00,0x1d,0xbb,0x87,0x81,0xd8,0x22,0x33,0x45,0xa9,0x56,0x9d,0xc1,0x44,0xca,0x69,0x4d,0x90,0x24,0x5e,0x0e,0x51,0x3e,0x88,0xab,0x02,0x3f,0x7f,0x0f,0x99,0xb7,0x41,0x61,0x59,0x75,0x8d,0xd0,0x34,0xe7,0xa8,0x9c,0xff,0x36,0x00,},"\xbc\x66\xf8\x01\xda\xa8\x29\x85\x8e\x74\x02\x93\xd4\xd2\x18\x7b\x8e\x1a\x5a\xfb\xa5\xfd\x67\xb1\x09\x56\xc6\x53\x46\xac\xa9\x44\x29\xd3\x2e\x4c\xfb\x35\x84\xab\x0e\x00\x5d\x0d\xd7\x42\x78\x1d\x47\xe8\x94\x47\xc4\xe1\xd8\x1b\xf7\xe6\x15\x4f\x8f\x73\xaf\x03\x36\x1a\xd5\x6e\xa3\xc0\x60\x00\x75\x4b\x9f\x32\x7d\x4e\xde\xac\xc4\xd3\x48\xaf\xb5\x48\x23\xe1\xc9\xd4\x9c\xd8\xff\x2b\x19\xf4\x20\x21\xb4\x0d\x58\x0c\x39\xce\x3d\x24\x36\x61\xb8\x54\x21\xfe\xc9\x15\xba\x9d\xd2\x76\x2f\x85\x0b\xd2\x08\xfd\xbf\x20\xff\xab\xa5\x6a\x46\x86\x60\xf1\x7c\x00\xfb\x1c\x0f\x4e\x85\x27\xa5\x09\xdd\x4e\xec\x13\x36\x0c\xf6\xe3\xca\xc5\x42\xb8\x75\x18\x2f\x2a\x7c\xe7\xbe\x0a\x33\x30\x2f\xe2\x6d\x36\x29\x62\x93\x84\xe3\x5c\x06\x78\x9d\xe6\x34\xe9\x0e\x96\x4f\xbd\xa8\xcb\xba\x98\x11\x1e\x22\xe8\xd0\x76\x26\x84\x26\x6a\xab\x76\xae\xba\x4a\x38\x07\x78\x69\x68\x14\xa1\xe3\x11\x94\x3c\xb3\x50\x58\x92\x64\x0c\x44\xe3\xaa\xc4\x53\x0c\x50\xac\x60\x4a\x8d\x2c\xcc\x7c\xea\xbf\xfe\xa4\xaa\x3d\x7f\x48\xa6\x6d\xcd\x75\x88\xb8\x02\x09\xdb\xc1\x73\xf0\xc6\x63\xe8\xfc\x87\xa3\x6e\x89\x2e\xc9\xa3\xff\x8f\x60\xd2\xe0\xd8\x70\x4e\x5b\x6c\xbb\x87\x32\x75\x15\x1a\xd4\xcc\x00\x57\x16\x50\x31\x90\x50\x39\x65\x1c\xa1\x0a\x95\xc6\xfd\xa3\xb2\x78\x27\xa6\x57\xef\x9a\x5f\xc3\xeb\x5b\x53\xca\xc6\x1d\xda\xf5\xa4\x17\x04\xc8\x78\x57\x0c\xbc\x3c\x41\xc4\x75\xb1\x17\xc0\x5e\xab\x0b\xb1\x96\xbc\xb7\xc4\x33\x34\xde\xbd\x64\xb9\xe3\x74\x50\xd2\x3f\x5c\x10\x16\x1e\xc5\xab\x4f\xcc\xd7\xcf\x30\x8e\x2a\x99\x95\xcc\x9e\x57\x8b\x85\xe8\x28\x5a\x52\x08\xb9\xef\xd4\x2a\xf9\xcf\x2a\xc2\xb3\xb7\x46\x42\x54\x88\x9a\x21\x87\x31\x7e\x32\x49\x97\x09\xb9\x13\x95\x3a\xd4\x6f\x1c\x23\xe1\xb6\xb5\x6f\x02\x4c\x4a\x7d\x48\x46\x11\x92\xc0\x1c\x56\xc5\x4c\x56\x47\x91\xec\x0a\x67\xb6\x1a\xcb\xf9\x57\xe6\xd0\xd7\xda\x80\x53\xed\x13\xa4\x18\x93\xd7\x67\xfc\x57\x37\xcd\x19\x55\x53\xda\x5d\x5b\x07\x06\x5f\x47\xd7\x2a\x35\xc4\x2b\x00\x1e\xb6\xdb\xd0\xf8\xe7\x7a\x4b\x76\xa6\x26\x61\x92\x64\x7f\x41\x55\xea\x11\xbd\x12\x37\xba\x77\xc8\x7c\x62\xbf\x4b\x01\x14\x9f\xc5\x8b\xc2\x8f\x0b\x5a\x28\x64\x85\xd3\x71\x7d\x32\x39\x64\x04\x62\x18\xe7\x0c\x7e\x38\xb7\xd5\xe7\x4b\xa6\xb1\x2b\x02\x2f\x18\x19\x7d\x92\xc1\x3b\xca\x89\x33\x5c\x85\x6c\xbc\x57\x56\xaa\x3b\x64\xec\x1f\x46\xe3\x96\xb1\x16\x1c\x87\x1c\xd2\xdf\xde\xd1\xa4\xec\x91\x92\x74\x29\x37\xc0\x70\x45\x31\xc7"}, +{{0xac,0x0f,0x7f,0x04,0x18,0xde,0x67,0xe3,0x48,0xfa,0x6d,0x56,0x86,0xc4,0x6d,0x21,0xca,0x72,0x62,0x2e,0xe6,0x9e,0xaa,0xbe,0x00,0xd5,0xc9,0x07,0x5a,0x34,0xf1,0x79,},{0xfe,0xab,0xde,0x08,0xf0,0x0a,0x2b,0x68,0x2b,0xce,0x9d,0x45,0x99,0x0b,0xf4,0x5a,0xfc,0x95,0x83,0x39,0xdc,0x44,0x10,0x6d,0xad,0x33,0xb2,0xc4,0x90,0xef,0x70,0x90,},{0x75,0x91,0xcf,0x82,0x57,0xbe,0xad,0x39,0xa1,0xad,0x3b,0xa1,0x91,0x8d,0x51,0x8e,0x67,0x24,0x35,0x6b,0xf6,0x25,0xa5,0x73,0xea,0xe5,0x01,0xd1,0xaf,0x94,0x6c,0x13,0xc2,0x90,0xcb,0x63,0x15,0x6e,0xc9,0xd3,0x62,0x72,0x6e,0xe5,0x0b,0x39,0xfc,0x0a,0x7a,0x2b,0xbd,0x69,0xd4,0xa8,0x1b,0x75,0x93,0x2a,0x90,0xf8,0xc7,0xac,0x7d,0x03,},"\xe8\xd0\xe8\x32\x53\x35\xe0\xf3\x5a\x85\x46\x7b\xee\xd1\xe1\x1c\x6a\x20\x78\xc3\x5a\xe4\xa4\xa1\x05\x43\xed\xe4\x0c\x17\x12\xbc\x95\x20\x12\xd2\xf8\xfe\xc1\x05\xae\xf7\xc6\xc6\x5b\x36\x34\xb4\xa7\x4b\x22\xb4\x98\xb9\x13\x50\x7d\x1f\x6c\xfd\xe8\x38\x58\xe6\x83\x0c\x0a\xf4\xf4\x64\xa6\x89\x9d\x5c\x4e\x27\x9a\xff\x36\x75\x4c\x21\xda\x80\xa1\xbb\xd1\xdc\xf4\x62\x20\x37\x5b\x1e\x11\x2a\x5a\x72\xf1\xab\x6e\x8f\x64\x19\x42\xf6\x6d\x9b\xbd\xbb\x17\x9c\xf0\x13\x9e\xa8\xde\xb0\xf4\xb8\x14\xf5\x0c\x51\x33\x29\xa1\xa0\xe2\x67\xc4\x43\x3a\x23\x31\x82\xbc\x4a\x2a\xcb\x2c\x6d\x4f\x00\xb2\x40\x94\xd3\xbd\xc0\xeb\x81\xcf\x37\xd3\x82\x60\xc2\x10\x7d\xd9\x49\x06\x13\xd2\x76\xee\x1f\x72\x26\x6c\x6e\x4a\xcc\xa5\x24\x98\x11\xa0\xf8\xa7\xda\xe6\x6a\xed\xb7\x5c\x3d\xf4\xc8\xca\x3c\xb5\xd9\xc5\x67\xba\x54\x1e\xe5\xa9\x14\x0c\x50\x58\x72\x72\xaf\x34\x53\x0a\xb8\xb0\x8b\x9e\xc0\x32\xea\xc0\x60\x39\xe6\x92\x63\x0e\x2d\x55\x4d\xf7\x7c\x1a\x03\x88\xb3\xca\xaa\x3b\xe3\x75\x4a\x84\x96\x1f\xb2\x99\xe4\x02\x22\x71\x58\xce\x36\x3e\xac\x26\x47\x8d\x47\x97\x75\xe5\x68\x5a\xdb\xf8\x28\xbb\x35\x5e\x3c\x89\xcc\xe2\x41\x50\x3c\x15\x36\x64\x32\xba\x94\xcd\x3c\xd9\x54\x79\x14\x4b\x63\x6e\x0d\xe7\x0b\x3f\x16\xd1\xa3\xca\x51\x8e\x39\x90\x09\xa4\xc2\x47\xa7\xf9\x63\x67\xc7\x14\x66\x08\xaa\xcc\x00\x14\xfc\x35\xb8\x4a\xf9\x93\x3f\x09\xba\xbb\x89\x93\x7a\xbb\x8c\xed\x11\x18\x91\x34\x3d\xdb\x79\xf6\x0b\x78\x89\x8a\xb5\x93\x8f\x8b\xa3\x81\x4b\xd8\x00\x26\x05\xb1\xdf\xd2\x97\xfa\x07\xc4\x75\xa0\xd4\xf8\xf4\x45\x1a\xcd\x70\x7d\xe8\xaf\x6c\x0e\x88\x18\x83\x3a\x3a\xbe\x5c\x96\xd1\xa8\xc6\xc9\x6e\x2c\xb6\x33\x28\xeb\xa4\x4d\xd1\xd3\x46\x84\xe4\x12\xf2\x88\xe0\x65\x20\x9d\x11\xeb\x80\x94\xd2\x2e\x4c\xc8\x02\x62\x9c\xcb\xa3\x39\x26\xbf\x1a\xd3\x6a\x62\x85\x13\x8a\xbe\xe0\x5c\x5a\x39\xa4\x75\xf3\xfd\xd0\xb3\xec\x8c\x37\x0c\xd9\x57\xa8\x37\x9e\xc2\xcd\xaf\x03\xe8\x95\xc1\xba\x12\xb4\x49\xd6\xcd\x8b\xe0\xf3\x5d\x99\xe2\xb7\xfb\xaa\x92\xdd\x54\xe6\x4e\x7c\x35\xce\xb8\x8a\x71\xa6\x80\x52\x7c\xb3\x73\xaf\xe1\x4c\xdd\x15\x8a\x0b\x90\xbf\x2d\xae\xc8\x0d\x2e\xdb\xdc\x31\x28\xcd\x6b\x63\xfa\x53\x2a\x1c\x27\x8c\xdf\xe0\xf8\xeb\xb4\xab\xba\x5e\x1a\x82\xbc\x5c\x3f\xed\x15\xc5\x79\x5b\xd9\xff\xb5\x76\x08\x2c\xc4\x79\xfa\x1b\x04\xc5\xc5\xaf\xca\xd2\x69\xa0\xf1\xad\xdf\xe7\x60\x42\xc3\xa8\xf1\xf2\x53\x77\xb6\xcb\x72\xec\x16\x14\xeb\x63\x83"}, +{{0xb5,0xa7,0xc7,0x67,0x93,0x63,0x80,0xb3,0xe9,0x87,0x51,0xca,0xfd,0x3e,0xa8,0x9b,0x38,0x8a,0x32,0xcf,0x82,0x8b,0x32,0x1c,0x5b,0xd0,0xcc,0x8d,0xd8,0x5b,0xaf,0x00,},{0xbe,0x7f,0xa6,0x5f,0x1f,0x6b,0xe5,0x10,0x27,0xf8,0xb8,0x48,0xdb,0x7a,0x8c,0x40,0x49,0x61,0xbf,0x1e,0x21,0xa2,0x3d,0xf2,0x3b,0xb8,0xce,0x05,0x85,0x0c,0xda,0xa1,},{0x60,0xe4,0xd2,0x3f,0x1f,0x08,0xfc,0xe4,0x66,0xc9,0x91,0x5d,0xde,0xd9,0x32,0x56,0xb5,0x2b,0x32,0x7e,0x5f,0x81,0xfb,0xb3,0x1d,0x1d,0x10,0xd3,0x21,0xc3,0x90,0x36,0x6e,0xf0,0x01,0xfd,0x75,0x9a,0xa9,0xd0,0xa5,0x51,0x62,0xd5,0x36,0x4d,0x91,0x8b,0x48,0xc7,0x32,0x7e,0x77,0xcf,0x53,0x58,0xbc,0x43,0x19,0xe3,0x25,0xcd,0xd6,0x08,},"\x6b\x67\xc7\x95\xd6\x6f\xac\x7b\xac\x84\x42\xa6\xc0\x99\x2c\xb5\x75\x88\x43\xb3\xe3\x93\x9e\x3c\x27\x6c\x6e\x90\x08\xda\x82\x00\x76\x77\xbf\x9e\x67\xe9\xac\x5a\x1a\x0f\x48\x6b\xea\xc0\xd8\x56\x19\x1f\xae\x25\xa1\x27\x39\x2b\xed\x46\x9b\xc7\x8d\xeb\x0c\x4b\x89\x3f\x67\xf1\x71\x6d\x83\x50\x90\x77\xe4\xa1\xbf\xd4\x13\x6d\x03\x15\x2d\xcc\x3b\x76\xd9\x52\x49\x40\xa6\x06\x4c\x66\x9f\xbf\x51\xf6\xb9\x10\x34\xb6\xd5\xf2\x89\x86\x78\xa1\x3a\x24\x70\xf6\x64\x1e\xc8\x02\x45\x7c\x01\x02\xc3\xeb\xf6\x34\x5c\x32\x7e\x74\x1b\x80\x64\x4b\x3a\x99\xbf\x72\xb5\x9a\xb8\x01\x6f\x35\xd2\x51\x88\xa0\x85\x75\x0d\xc0\x60\xe5\xa8\xd5\x24\xae\x21\x3f\x07\x8f\x28\x8c\x7b\x34\xbc\x41\xf3\xce\x35\x6b\xf2\xda\xfd\xd2\xe0\xdb\x4f\xb8\xd7\xc2\xc3\x19\xf9\x90\x60\x05\x97\x17\x02\xe4\x9c\xa6\x2e\x80\x50\x54\x0d\x41\x21\xd2\x42\xf2\xee\xab\x1b\xd1\x34\xe6\x0b\xf1\x1b\x3e\xc7\x1f\x77\x65\xa9\x7c\x0e\x09\x84\x55\xe5\x9d\x22\x35\xd6\xb3\x7e\x7c\x9f\x5b\x21\xfa\x11\x2c\x3b\xa3\x9e\x4e\xa2\x00\x61\x4f\x58\xdf\xb3\xeb\x7b\x83\x6f\x0b\xec\x1d\xdd\x43\x8d\x14\x22\x45\x0a\xe7\xde\xd1\xdf\x9d\x71\xe5\xd9\xbc\x8f\xa3\xb6\xe6\xf7\x84\x46\xce\x7c\x79\xd0\xbc\xfb\x1c\x2d\x26\xc6\xfe\xce\x68\x68\x2d\xff\xc6\x0a\x9c\x6e\x0a\xd0\x5f\x2a\x09\xf2\x1d\x75\x23\x25\x1c\xb0\xc3\xd0\x8e\xfb\xbf\x8a\xc1\x63\x39\xd7\x17\x02\x4d\x67\x60\x24\xc1\xee\x3c\x1f\x62\xc5\xae\xab\x7f\xff\x93\x7c\x57\x45\x4d\xf7\xbd\x96\xf9\x84\x4a\x2a\x39\x99\x58\x41\x8a\xaa\x6f\x18\x48\xbe\xbf\x7b\xf1\x29\x2c\x24\xeb\x5c\xd8\xea\x56\x34\x0c\x5b\xeb\x26\x88\x02\x4a\x69\x53\x27\x5b\xe6\xef\xd1\xb7\x1b\xa8\xbe\x6e\xb7\x7f\x0c\x65\xa7\xc5\x11\x1b\x96\xc4\xc1\xf3\x9c\xb7\xaa\xf8\x3f\xda\xae\x8d\x14\x8d\x7a\x8a\xf4\x0a\xe9\xe6\x51\x91\x9f\x7c\xe2\x8c\x8b\x2b\x6e\x45\xe4\xd3\xd5\x6f\xdd\x54\xd0\x0c\x24\x12\x79\x0c\xbd\x6f\x80\xe1\x08\x19\xe0\xb8\xf3\x7c\x84\xfa\x00\x49\x88\xad\xaf\xcc\xbb\xc2\x1c\x63\xd6\xbf\x2e\x73\x2d\x9d\xd6\x3b\xd4\x9b\x04\x12\xb9\x67\x4e\x1e\x88\xf6\x14\x2f\x7f\x86\x7f\x1f\x26\x89\x1b\x22\x43\x04\x23\xce\xc4\xdb\x91\xb6\x1c\x2a\xbc\x5c\x8f\xbd\x46\xb8\xb9\x35\x96\xfc\x51\x60\x68\x31\x36\xe2\x11\x29\x82\x27\x96\xeb\x5e\xa0\x88\xe0\xa7\xd8\x12\x1b\x25\x57\x2e\x3e\xc3\x77\x43\xd1\xff\x6d\x8d\x1c\x35\x36\x43\x9a\x10\xe8\x4a\x66\x5f\x2c\x75\xee\x73\xcd\xc6\xff\xac\x4c\xc2\x87\x24\x46\x9f\x79\x70\xb4\x75\x07\xdf\x3e\x1b\x14\xd4\x77\xae\xc2\xbb\x20"}, +{{0xe1,0x36,0xf3,0x98,0xa6,0x05,0xd1,0x34,0x57,0x84,0x8c,0xea,0xd0,0x7c,0x72,0x86,0xf4,0x2e,0x2f,0x28,0xdf,0x8c,0x12,0x8a,0x3d,0x0b,0xb7,0x2b,0x29,0xaa,0xcc,0x19,},{0x6a,0xa5,0x04,0x5a,0x66,0xf7,0x72,0xa5,0x71,0xfe,0x3e,0x42,0xd1,0x17,0xef,0xcd,0xf6,0xc4,0x95,0x91,0x99,0x61,0x86,0x01,0x2f,0xa9,0x8f,0x7c,0x48,0xe0,0xcd,0xa7,},{0x75,0xa4,0x5c,0x6b,0x95,0x66,0x89,0x98,0x29,0xb4,0x1e,0xe5,0x17,0xb7,0x04,0x5a,0x47,0x3a,0x4f,0x7a,0x26,0x41,0x43,0x9b,0x5d,0x7c,0x56,0x73,0xe0,0x0d,0x8f,0x5c,0x06,0x6f,0x12,0x91,0xf8,0x5d,0xea,0xda,0x05,0x02,0xbd,0x16,0xe9,0x70,0x9f,0x82,0x7d,0x47,0x51,0xf2,0x87,0x38,0x62,0xe8,0x21,0x9e,0x57,0x74,0x6a,0x19,0xa9,0x00,},"\xd3\x28\x57\x9d\xe4\xc5\x37\x2f\x3b\x38\x2c\x48\x01\x1b\x2d\x4c\x60\x29\xf9\x04\xf3\xa3\x3e\x07\xd0\x83\xd7\xe2\xb0\x37\x56\xaf\x2c\x4c\x97\xa2\xd6\x6c\x10\xec\x41\x54\xd8\x74\x79\x20\x42\xb6\x46\xe4\xaa\xe5\x10\x1d\x50\x1b\xd1\xbf\x6f\x51\x17\x51\xd0\xaa\xf8\x21\xcd\x7c\x0b\x3e\xe6\xd0\xd7\xc6\x90\xa2\x77\x7f\xe1\x6b\xdc\x7e\x49\xb7\xda\x4b\xbb\x4c\xce\x3b\x61\x8e\xe9\xb6\xf2\xe3\xa1\x92\x40\xcd\xb7\x07\x33\xb9\x84\xb1\xc9\x40\xec\x66\x96\x0b\x72\x8c\xbb\x87\x4b\x80\x64\x31\x23\x72\x2d\xb9\xdb\xbe\x88\x32\x20\x08\x93\x1b\x1c\x89\x4e\xf5\xd2\x10\x99\xe6\x3e\x7c\x65\x00\x7a\xcd\x61\x78\x4d\xb4\x99\x4a\x2f\xb4\x0c\x3e\xfe\x9c\x47\xfa\xd6\x37\x63\xdd\xe0\x6f\xa0\x17\xa2\x6b\x82\xe7\x1b\x9d\xaa\xbc\x4f\xf0\xf6\xc7\x9b\x8c\xa7\xcc\xb4\xdc\x20\x31\xbe\xf1\x08\x73\x67\xc7\x08\x69\x74\xa0\x05\x66\xde\x41\xa7\x1e\x11\xd9\x93\xab\xe4\x33\x56\x98\x92\xb8\xf7\x5d\x76\x37\x99\x32\x45\xc8\x84\x47\x8a\xbe\x3f\x95\xf4\x4b\x0a\x4b\xbe\xde\xfe\xf8\x90\x6b\x75\xe0\xd3\x40\x20\xae\x53\x64\x55\xb0\xe0\x6f\x9b\xfe\xe1\x1e\xc9\xb8\x60\x4b\xac\x2c\xc6\xeb\xe0\x8c\x8f\xd5\xf5\xcc\xcc\xcb\xc1\x61\x7b\x7c\xf6\x9a\x3c\x51\x2e\x1f\x0b\xdb\x58\x5d\xf5\xe1\x27\x43\x06\x1f\x7c\x20\x53\xbc\x37\x14\x43\x61\xc0\xb3\x5f\xd3\x9d\x56\xb1\xef\xaf\x92\xc6\x10\x36\x01\x93\xec\x20\x59\x8b\x82\x85\x80\x50\xa6\xd9\x9e\x08\x2b\xce\xfd\xbd\x53\x18\xee\x5e\xfb\x3b\x26\x0f\x32\x76\xf3\xc7\x3f\x9c\x24\xce\x0c\xda\x33\xc7\xac\xc5\x0c\xa5\xdd\x61\xbd\xb8\x5d\x79\x38\x25\xf6\x73\x2a\x6e\x33\x0c\xe6\x72\xac\x44\xfe\x6b\x2b\x9a\xfe\x6e\x2e\x96\x5c\x02\xd2\xa1\xfe\x0b\x57\xcb\x1b\x31\x7c\x1d\x31\x3e\xfd\xc3\x56\x49\x2f\xe8\x96\xfd\x14\x9d\xae\x51\xc9\x5c\xcd\xbb\x7d\x11\xf7\xd6\x10\xe0\xc6\xe2\xfd\x3e\x57\xfc\xfe\xf1\xc5\x7c\x71\x19\xa0\xaf\x6c\x78\x21\xfe\xcd\xb8\x9d\x80\x30\x2b\x49\xfa\xd4\x17\x43\xf3\xd2\xd7\xa0\x75\x15\x4b\x31\x43\xe5\x1a\xeb\x94\x7d\x4b\x5e\x8b\x7e\x4c\xa8\x6f\xec\x3e\x80\xbd\x9a\x78\x6e\x4e\x46\xed\x1e\x6e\x9f\x7e\x0b\x63\x52\x66\xd9\xfa\x09\x7a\xa9\xe2\x0f\x32\xe3\xd2\x77\x2d\x7c\x1f\x00\x8b\xcd\xd3\xf9\x2c\x72\x83\xc5\x77\x90\xc3\x62\x2c\xba\xd3\xca\x35\x80\x3c\x45\xc8\x69\xdc\x37\x7f\xf3\x6b\xd7\xc0\xe6\xf1\xbb\x89\x2f\x73\x29\xa6\xe0\x8d\xf1\xdb\xeb\xc8\x1d\xc7\xb1\x15\xf8\x52\xe3\x6a\xe5\xd9\x28\x72\x5f\xa7\xc6\xfb\x9f\x28\xb0\xfb\x39\x4f\x9e\x38\xfd\x87\x62\x5c\x5f\xa2\x3a\xab\xa4\x70\x54\xe8\xcf\xea"}, +{{0x97,0xb6,0x70,0x2e,0x24,0x68,0x05,0xdb,0xcf,0xc7,0xfa,0x42,0x4a,0x8c,0xaa,0xbc,0xf2,0x62,0xd4,0x66,0xa0,0x5e,0x0d,0xd2,0xd4,0xe7,0xc3,0x74,0xd5,0x7d,0x52,0x51,},{0xa7,0x16,0xc3,0xd5,0xce,0x78,0xf4,0xd9,0xc5,0xbe,0xe3,0x44,0x7d,0xda,0xf4,0x88,0x1c,0x98,0x6e,0xfd,0xf6,0x67,0xac,0x89,0x77,0xb4,0xfb,0x69,0xb5,0xa7,0x11,0x0a,},{0x90,0x00,0x55,0x41,0xdc,0xc1,0xd7,0xab,0x83,0x7f,0x4d,0xe5,0x39,0x3f,0xad,0xd6,0xa9,0x2b,0x26,0xa7,0xd9,0x3a,0xf3,0xf6,0x69,0xe0,0xf1,0xbf,0xd6,0x21,0xcb,0xd0,0x0c,0x8a,0x23,0x05,0x6d,0x2d,0xa6,0x78,0x65,0x57,0xc8,0x28,0xa4,0x9b,0xe1,0xe4,0x02,0x1d,0x99,0x31,0x12,0x35,0xac,0x0d,0x4d,0x56,0xee,0xfc,0x7c,0x95,0x36,0x05,},"\xea\xa8\x6c\xf7\x6f\xcb\x65\xc6\xf9\xfc\x20\x8a\xc3\x6f\x28\xb2\x00\xd3\xb4\x03\xac\xa7\x32\x07\x46\x1d\x8d\x96\xaf\xa2\x46\xd7\xc6\x9d\x17\xa7\xa9\xbf\x77\xf0\x55\x43\x56\x3a\x7d\x3e\xca\x1d\x40\x79\xe2\x29\x38\xab\xa1\xf6\xe9\xe0\x4b\x49\xfb\xc8\xed\x6f\x63\xb5\x99\x73\x0d\xe9\x97\x98\x31\xc0\x2f\x8c\xba\x61\xe5\x55\x60\xd7\x11\x0d\x4c\x6e\x61\x67\x97\x06\xa7\x15\x5d\x5a\x67\x3c\x54\xd1\x6f\xe4\xd2\x28\xc2\xec\xa7\x54\x6f\xaa\x13\x39\xf2\x6d\x7a\x0b\xb4\xee\x33\x96\x11\xaf\xde\xc9\xa6\x8f\x5f\xf5\xb5\xd2\x03\xb6\x00\x53\x3a\xd5\xa3\xb3\x68\xc8\x5d\xa1\x15\x63\xf0\x98\xcc\x26\x87\x1e\x7f\xa9\x9a\xef\xd3\x8c\xc2\x61\x51\xdb\x3b\x0b\xae\x38\xdb\x6a\x87\xb6\x78\x9e\x58\x40\xb1\x08\x84\xaf\x51\x1f\x3e\xcb\x3e\xcb\xf9\x4f\xf8\x6f\xdb\x90\x55\x05\xa8\xc3\x4b\x2a\xa6\x1f\xf2\xec\x9e\xc8\xfe\xbd\x1d\xfe\xd0\x96\x5b\x6f\xc5\xb9\xf8\x86\x9d\xc3\xa4\x75\x59\x97\x4a\x88\x22\x99\x67\x06\xda\xef\xbc\x6c\x5b\xf9\x84\xce\x06\xb0\xd3\x2b\x31\xcf\x9d\x8a\xd1\x36\xae\xd4\xb0\x52\x58\x6d\xce\x70\x73\xb7\x67\xb2\x34\xe4\xa3\x7b\xeb\xbc\x39\x3d\xd2\xe0\xf7\xd1\x55\x17\x35\x48\xc3\x8a\x15\x83\xef\x94\xe0\xaa\x84\xe7\xfc\xe0\x4f\xcc\x9b\x4e\x30\x0a\xd0\x99\x44\x9a\x49\x23\x2a\xbd\xcf\x3d\x1a\x6e\x6f\xca\xb6\x96\xf5\x99\x6f\x9b\xd1\xb9\x48\x5d\x07\x47\x55\xac\x5b\x42\x97\xfe\xe3\x12\x4c\x7c\x03\x97\x6a\x40\xd5\x70\xbe\xae\xc2\xfa\xc9\x92\x33\x9f\x88\x5f\x74\xd4\x0e\xd4\xac\x87\xa4\xf4\x0c\xef\xbc\x48\x64\xf4\x4c\x36\x83\xaa\x8f\x10\x26\xe2\xc3\x7a\xef\xfc\xeb\xfd\xfe\x24\xdd\x0b\x01\x9c\x36\xa7\x98\x88\x20\x30\x04\xb2\xad\x83\xe8\x92\x21\xf3\xf6\x36\xf4\x55\xbb\x64\xe1\x7d\x17\x54\xc7\xc6\xdd\x7f\xc0\x9a\x0d\x65\xdd\xdd\xed\x46\x22\xfc\x4f\x9f\xba\x07\x2b\x45\x10\x34\x35\xe1\x02\x20\xa5\x86\xf1\x52\x26\xd2\xeb\x37\x7f\x40\x64\xd3\xff\x37\xcb\xb4\x70\x5a\x1f\xaa\xf5\xb3\x48\xf8\xc0\xef\x7f\xd1\x56\x4d\x42\x86\x88\xf5\x8f\x33\x92\x96\x7c\xf3\x96\xa8\xff\x2f\xd9\xe7\xb5\x17\xb7\xd6\xa5\xed\xe7\x44\x03\x73\xd8\xcc\x1a\x83\x99\x00\xe8\x4d\x42\x25\x42\x83\xd9\x69\x9c\x7c\xa3\x7e\x47\x76\x92\xa3\x49\x40\x08\xb8\x04\x44\xc5\xcf\x61\x4c\xbb\xc1\x69\xbf\xb9\x29\x63\x03\xc6\x45\xe2\xce\x28\xd1\x68\xdc\x6c\xba\xef\xae\x9c\x73\x19\x1f\x57\x15\x1a\xa4\x73\x00\x9d\x29\xe1\x80\x0b\x10\xf4\xc4\x98\x60\x9b\xa1\x15\x20\x98\x5c\x78\x09\x20\x58\x69\x6f\xdb\xca\x9c\x02\x0e\x2d\xfb\x8a\x04\x3a\x3d\xe8\xe4\x52\xd5\x8c\xd1\xad"}, +{{0xd1,0x52,0x8c,0x14,0x06,0xa6,0xe4,0x94,0xa0,0x2f,0x63,0x53,0x05,0xfa,0x74,0xd7,0x45,0xc6,0x93,0x27,0xfd,0x31,0xb7,0xd2,0xc2,0x62,0x3d,0xe2,0xc0,0x30,0xed,0x85,},{0x0c,0xfe,0x36,0x9c,0xf9,0x3d,0xaf,0x6d,0x53,0xef,0x02,0x8d,0xdb,0x9f,0x00,0x04,0x43,0xb0,0x97,0x2f,0xe2,0x53,0x2f,0x83,0xa4,0x1c,0xe6,0x57,0xc1,0x83,0x6c,0xa3,},{0xb8,0x39,0x9b,0xc3,0x32,0x6c,0xba,0x0a,0x93,0xa4,0x24,0x97,0x16,0x8b,0xf5,0x7f,0x91,0x06,0xee,0x43,0xd3,0x9b,0xf0,0xfc,0x86,0x68,0x51,0x99,0xdc,0x6e,0x0a,0x13,0xb9,0xc7,0x24,0xef,0x17,0xe7,0x88,0x2a,0xf8,0xc2,0xeb,0x70,0xf6,0xc9,0xe4,0x2d,0xfa,0x2f,0xbf,0x0c,0x1c,0xb5,0x00,0x2b,0x58,0xf1,0x08,0x66,0x19,0x73,0x3e,0x02,},"\xab\xb3\x67\x3f\x3f\xa1\x7a\x33\xa7\xaf\xf7\x6e\xac\x54\xe7\x68\x7c\x04\xbc\x84\xf7\x66\x65\x1a\x8b\x24\xba\x22\x94\x79\x08\xb0\x4c\xa4\x59\xfe\xb9\x8a\xce\x7c\xab\x1e\x74\x33\xa6\xa6\xbe\xff\xd8\xd9\x50\x4e\x29\x91\xda\xa0\x64\x4d\x61\xb8\xb2\xe4\x54\x48\xf5\x4d\xf8\x81\x3f\x50\xc4\x18\xb4\x8f\x49\xe1\x03\x4e\x85\x1c\xbe\xc3\xef\x0a\x18\x50\xef\x72\x67\x33\xaf\xaf\x68\xe1\xa4\x61\x04\x16\x51\xc1\x38\xd5\x4e\x4e\xf7\x81\x87\xaf\x9a\x73\x42\xf7\x12\x87\x27\xf9\x03\xbf\x4f\xc5\xef\x3e\x40\xc6\x4e\xc2\x6f\x89\x2f\x59\xad\xd9\x8f\xe3\x94\x76\x5a\xaa\x7d\x09\xca\xe8\x1b\x9f\x69\x9a\x9d\xd8\xbf\x2e\x2f\xe8\xe1\xec\x78\xfc\x88\x4e\xaa\x0d\x2d\xbd\xbf\xb8\xc1\x68\x83\x3e\xe0\xd2\x18\x03\xcc\x35\xdc\x62\x8d\x7c\x07\xe0\x44\x04\xfb\x60\xe8\xc4\x90\xa8\xdd\x34\xed\xbc\xba\xaf\x80\xcc\xda\xe3\xf7\xd3\x73\x9e\x0e\x89\x70\x23\xee\xb5\xb1\xa8\xc0\x0a\x96\x73\xc5\x92\x58\x24\x0d\xdd\x44\x20\x65\x0f\xe5\x77\x1f\x7e\x28\xcb\x23\x99\xf5\xe1\xe0\x2a\xd0\xb6\x43\x2d\x9b\x49\x60\x8f\xcf\x0b\x1c\x0d\x7c\x41\x2a\x44\x52\x55\xb8\xba\xdc\x53\x21\xc2\x4c\x1a\xc9\x2c\x79\xa0\xba\xcc\xb9\xde\xff\xed\x02\xd1\x2f\x55\x36\xcd\x59\x5d\xc6\x60\x83\xb3\x3a\x36\x03\xa9\xd1\x6e\xce\xa2\xbf\x38\xc4\xf2\xaa\xf5\x70\xf3\x0d\x21\x16\x2b\x2e\xfd\x7e\x4d\x5e\xbf\x1e\xca\xe9\x58\x8e\xee\x36\xdd\x9d\x3d\x8e\x3b\xe7\xbc\x6d\x4b\xc2\x18\x56\x22\xf1\x1d\x1d\xa7\xc4\x9c\x93\xe6\x23\xac\x56\xfe\xe7\xe3\x70\x6d\xb8\x31\x3c\xf9\x26\xbe\x92\xe5\xc8\xa5\x39\xfd\x16\xb0\xf4\x38\xda\x8e\x51\xa5\x1f\x2d\x27\x64\x03\x56\x12\x4e\xf7\xbe\x2f\x91\xff\xa1\x79\x6a\x91\xb1\x23\x01\x93\x4d\xde\xf0\xc7\x93\x8a\x7a\x45\xf3\x6f\x53\xb6\x32\x2d\x9c\x8f\x9d\x27\x5e\x1c\xd2\xc0\xf1\x29\xf8\xab\x8d\x74\x15\x5b\x5d\x9e\x5c\x15\xc0\x15\xb0\xb0\x00\x03\xb2\xbd\xdf\xa0\xbc\xfc\xc6\x93\xa1\xdf\xcb\x4f\x53\xda\xec\x12\x6d\x16\x69\xf3\x3f\x39\xad\x05\x51\x9e\xf7\xc5\xce\x40\xe6\xf4\x57\x3c\x24\x7a\x32\xc4\xa0\x16\x28\x31\x35\x2f\x6d\x55\x8f\xf5\x83\x6a\x53\x17\xdb\xc4\x51\x5b\x3d\xf2\x69\xa8\xac\x76\xd6\x43\x6f\x26\x4b\x64\x56\x1e\x79\x68\xb5\x82\x21\x08\x48\x7b\x04\x5c\x92\xd6\xc6\x14\x2a\x1c\x28\x55\xb3\x8b\xee\xbd\x64\x25\x65\x12\x3c\xc8\x27\xcb\x18\x31\x19\x9e\x6f\x12\xa7\xe4\x23\x68\x56\xb9\x4d\xad\x73\x8f\x69\xd1\x10\x6e\x77\x35\xd7\x11\xf7\xc6\xa3\xa3\x37\x80\x41\xfc\x7a\x21\x10\x3b\xbf\x86\x69\x07\xd4\xed\xdd\xaf\xa0\xe7\xf1\xbb\x5f\xfd\x41\xa6\x0d\x64"}, +{{0x51,0x23,0x40,0xf9,0x61,0xf1,0x42,0xd1,0x91,0x5e,0x85,0xfe,0x4f,0xa0,0xf5,0x51,0xf8,0x08,0x92,0xe7,0x5a,0xcc,0xce,0x7c,0xd1,0x86,0x9e,0x6e,0x2c,0x9e,0x80,0x15,},{0x0c,0xa0,0x26,0x04,0xfa,0x87,0xe2,0xc2,0x05,0x06,0x25,0x1f,0x07,0x92,0xcd,0x21,0x25,0x85,0x6f,0x0a,0xb1,0x6d,0x66,0x3f,0x28,0x11,0x96,0x3b,0x1f,0x2d,0x81,0x72,},{0x6b,0xb4,0xd9,0x75,0xaf,0xae,0xf4,0x1e,0xa9,0xef,0x08,0x5a,0x68,0xc5,0x68,0xa0,0x5d,0xa3,0x7e,0xf2,0x1d,0xad,0x46,0x4e,0xd8,0x6a,0xc0,0xd4,0x08,0x0e,0x7d,0x01,0x29,0xfb,0x02,0x31,0x31,0xec,0xa5,0xf7,0xad,0xb2,0x58,0x6a,0x18,0xbe,0x40,0x56,0x2f,0xa2,0x76,0x4c,0xa8,0x07,0xe6,0x70,0xa0,0x59,0x6a,0x5c,0x54,0x7b,0xc0,0x01,},"\xaf\x37\xb2\xc7\x58\x7a\x8d\x5b\xc8\x95\xcd\x35\x77\x46\xab\x03\x55\x2a\x0a\x56\x1a\x29\x3d\xc7\x16\x4e\x39\xb6\xa1\x33\x3a\x92\x0b\xb6\xda\xca\x60\x06\x67\x6e\x99\xbb\x7e\x92\x8f\x9e\xa3\x91\xe5\x48\x02\xa8\xd3\x15\x96\x28\x9f\xb9\xbf\xe3\x00\x00\xcf\x52\xeb\xf0\xc1\x24\xa5\x89\x5b\xce\x33\x98\xc1\xbf\x53\x56\xbe\x82\x61\x9b\x8d\xdc\x15\xa7\x7c\xa9\x22\x49\x4b\xdb\x04\xf5\xc2\xe1\xb6\xe8\xff\x77\xae\x74\x9f\xaf\x2b\x8a\x41\xd8\x22\xc1\x7c\x06\xdf\xb7\xa5\xf9\x43\x4d\x8b\xd7\x15\xec\x87\x78\xe8\x0b\x81\xd2\xe8\xd0\x62\x98\x74\x86\x90\xc6\x55\x52\x83\xc9\x8b\xb9\xb1\x9b\x92\x46\x66\x7b\xc4\x10\x46\xff\x98\xc2\xc3\x5d\x16\x1e\x1f\x4d\x69\xd2\x54\xec\x5a\x07\x6f\x25\xbd\x5c\x7e\x2c\x98\xca\x3c\x09\xd8\x08\x33\x96\x2c\xf9\x66\x02\x87\x88\x40\x96\xeb\x30\xc4\x6c\x54\x17\x41\x06\xaf\x4e\x29\x79\xa1\x12\xf3\xe8\x94\x4e\xaa\xf7\x66\x9c\x40\xd5\xaf\xb9\x1a\x02\x4a\xbb\xeb\x14\x66\x4e\x30\x89\x03\xe4\xd2\x6d\x70\x09\x44\x6e\xe2\xe8\x30\xab\x5e\xca\x0d\xbb\xc5\x13\xfb\x4e\x04\x35\x1d\xf2\xf6\x74\x18\x64\xfb\x23\x71\xb2\x50\x2b\xe4\x3d\xc1\x5f\xc0\x44\x31\xff\xf5\xeb\x8d\x4b\x68\xd7\x24\x62\xae\x32\x2e\x57\xba\x2d\x4a\xdd\xdf\x15\xa1\x90\x2c\x21\x13\xae\xbd\x3b\x5d\x61\x29\x17\xc1\xbb\x73\xe7\x08\xad\x54\x18\xe7\xd4\x5e\x4b\x72\x80\xfc\x88\x96\xab\x80\x85\x3f\xf5\xf8\xe9\x8f\x26\x55\x3f\xc7\x8e\x30\xb3\xb0\xd7\x27\xbf\x6d\x06\x4a\x8f\x32\x88\x87\x68\xc5\x1e\xbb\x61\xb2\xc6\x00\xb4\x02\x8a\x77\x06\x0f\xeb\xbb\x02\xeb\x3d\x20\x17\x80\xe7\x45\x66\xc8\x6a\x34\x03\x18\x36\xbc\xe9\xea\xda\x81\xe5\xd0\xf3\x39\x60\xcb\x2d\xf0\x8a\xff\x3c\x97\x49\x21\xfc\x9b\x7d\x3a\xa7\xc8\x1e\x9c\x67\x1e\xd6\xd3\x3e\x7a\xe5\xed\x03\xa5\x41\x7d\x7e\x5c\xd6\xfa\xac\x91\xb5\x4b\x8f\x79\x2f\x48\x28\x3c\x60\x64\x7d\xe3\xda\x81\x6c\xa9\x75\x6c\x5b\xfe\x1b\xb8\xb5\x97\x9e\x57\x54\x01\xbd\xa3\x4e\x9c\xbc\x4d\x77\xe7\x11\xd6\xb7\x3b\x82\xda\x19\xda\x47\x3b\x55\xe8\xe7\x2d\x34\x1b\x2d\x85\x03\xe4\x86\x09\xbe\x0f\xe2\x91\x44\x4c\x28\x36\x69\xe5\xde\xad\xea\xf5\x2a\xa8\xec\x48\xda\x83\xf5\x32\x8c\xc0\x99\xfb\x41\xf8\x2b\xec\xdd\x58\xd0\x4b\x1d\x66\x20\x3d\x73\x7b\xed\x06\xcf\x21\xc9\x78\x19\xac\x13\xed\x71\x1c\xa2\x17\xa5\x7c\xf7\xd8\x0f\xf0\x82\xaa\x1a\x1c\xf8\xfe\xa5\x55\xcd\x2e\x47\xe4\xdd\xab\x5e\x3f\x99\x41\xad\x4f\x77\x5f\x49\x41\x9d\xca\xdb\x5b\x00\x4b\x68\xca\xf4\x5b\x27\xef\x49\xba\x14\xfb\x52\xb0\x9f\x1b\x18\x5b\xe9\xf9\xc7"}, +{{0xb1,0xb6,0x36,0xe9,0x57,0x57,0x4c,0x21,0xa9,0x57,0xa4,0x5b,0xd1,0x95,0xc6,0xf9,0xfe,0x4c,0xc1,0xc5,0x7e,0x84,0x13,0x4d,0x39,0xb4,0x2e,0x1a,0x84,0x32,0x9e,0xdb,},{0x95,0xe7,0x7b,0x15,0xdd,0xa4,0x7c,0xaf,0x69,0xb7,0x28,0x88,0xdd,0x69,0x96,0x1b,0xac,0xbe,0xc3,0xbc,0x75,0x35,0x30,0x03,0xe8,0xbf,0xf0,0xa4,0x3d,0xdf,0x4b,0x7a,},{0x76,0x3c,0x7d,0x0d,0x46,0x87,0x8e,0x5c,0x7e,0xcf,0x71,0x04,0xfc,0x1f,0x22,0x30,0xe4,0x61,0x78,0xa2,0x7c,0x75,0xf1,0x96,0x16,0x9c,0x02,0x79,0xed,0xb0,0x1c,0x28,0xfc,0xde,0x3b,0x0d,0x5b,0x86,0x35,0xcf,0xe3,0x39,0xfb,0x23,0x27,0x74,0xb2,0x20,0x6d,0xab,0x8a,0x46,0x0c,0xe4,0x17,0xab,0xf4,0x90,0xbb,0xfa,0x78,0x5c,0x02,0x05,},"\xe2\x5d\x32\x9c\xad\x83\x64\xd2\xde\xc2\x43\x73\xe9\x2d\x9d\x50\xfc\x7a\xbe\x8f\xdc\x3d\x0b\x4e\xe5\x7e\x1c\xfa\x5b\x7c\xd5\x8c\x23\xbe\x91\x8f\x05\x17\x9b\xa8\x41\xb6\x1e\x18\x00\x34\xca\x7e\x74\xd4\x9b\x0a\x1a\x2c\xeb\xb4\xbe\x65\x34\x4c\x91\x3c\x46\xd3\x26\x52\x33\x6e\x6b\xda\x4e\xfa\x3f\x58\x73\x0d\x39\xa6\x33\xa1\x4c\xa3\xd9\xa6\x2a\xbb\x0a\x73\x98\xcc\x29\xaf\xf9\x16\xee\xea\x2e\x7c\xaa\xc8\x08\x45\x56\x2f\x73\xd4\x03\x0f\x9c\xab\x0b\xf1\xc6\x40\x7f\x54\x01\x51\x3e\xf8\x7f\xe6\xdc\x09\x9d\xbc\x5d\xfc\x33\x52\x91\x1c\x07\xaf\x6c\x52\x3b\xef\x4c\xca\x78\x37\x96\x59\xe8\x80\x3f\x58\x59\x04\xee\x6e\xf6\xfd\xe7\x73\x66\xd9\x6d\x2c\xcf\x24\x8a\x53\x20\xd9\xb8\x29\x8b\x2a\x73\x36\x38\x79\x10\x7a\x02\xb4\x7f\x57\x21\x3a\x85\x20\x3a\xbb\xca\x5a\x41\x95\xf8\xaf\x3e\x35\x93\xed\x2f\xa3\x50\x4b\xb7\x6a\x3e\x1b\xe2\x4b\x66\xd3\x55\x66\x29\x32\xcb\x67\xdc\x88\x50\x3a\xfa\xf7\x62\xbf\xf7\x41\xba\x1c\xac\xe9\x7a\xc5\x8b\xaf\xad\x5d\x36\xc3\xaa\x02\xe0\xcb\xe2\x0e\x5f\x3d\xc8\x09\x2c\x51\x2e\xaa\x9c\x49\x43\x47\x4a\xad\x41\x99\x00\x76\x72\x1a\xd3\xf5\x3f\xb0\x8a\xc2\x29\x82\xed\x9b\x15\xc7\x51\xa9\xe2\x33\x82\xf6\xa6\x9c\x72\xe6\xe2\x44\xe0\xeb\x68\x1e\x6d\xd2\x28\xd3\x77\x4f\xcc\xb3\x7e\xb6\x23\x2f\x82\x5d\x16\x9a\x2a\xc8\xb7\xe1\x8a\x42\xcd\xaa\x4f\x2c\xf0\x58\x90\xbb\x0c\x59\x8c\xf8\xc3\x1f\x82\x9e\xf8\xca\x24\x35\xbd\xcc\xeb\x0e\x61\x93\xad\xa7\x84\x1e\xe6\x92\xf3\x0a\xed\xf8\x8b\x62\x73\x11\xb1\x38\xac\x78\xb3\x91\x3e\x06\xf7\xc3\x21\xca\xfb\x39\xd9\x01\xdf\xe1\x74\x30\xb1\xa2\x0b\xc4\x37\xa5\x55\xa5\x78\xfa\x31\xe4\xb6\x80\x79\x54\x45\x6b\xd4\xb0\x4d\x5d\x88\x79\x87\xbd\xf0\x4e\x0f\x14\xaf\x31\x41\xb2\x4c\x3a\x7b\x9a\xc7\x5a\xa3\x2e\x2f\xcd\x21\x71\xa1\x26\x09\xe1\x5e\x73\x09\x4f\xd0\x92\x21\xb4\xd2\x70\x90\xe7\x32\x19\xb6\x48\xbc\xaa\xbf\x38\x07\xc9\x28\x0b\x6c\x4a\xd7\x50\xa4\x68\xbe\x0e\x1a\xd3\xe6\xe6\x30\x16\xcb\x5c\xec\x3a\xad\xdc\x56\x89\xc2\x95\x5a\x2a\x8d\x5b\x89\x84\xd7\xc4\x43\x76\xfd\xd9\x4d\x3f\x5f\xf1\x29\x8f\x78\x17\x2b\x56\x59\x13\x70\x4e\x90\xe5\xac\x03\x8c\xb1\x72\x0e\x19\xb0\x80\xf8\x1b\x53\xd6\xa4\x5d\x45\x28\x53\x07\x11\xb6\x3d\xfe\x1e\x47\x81\xc2\x4d\x74\xae\xb2\xbd\x8a\x73\xfd\x2a\x99\x3c\x5b\x08\x91\x39\x21\x96\xac\x32\xc5\x23\x69\x99\x60\xd8\xb2\x3e\x01\x66\x4c\xf9\x02\x1d\x93\x92\x80\x50\xca\xf9\x7f\xb9\x85\x55\x45\x80\xe3\x33\x36\xa4\x56\x32\x47\xdf\x59\xef\x6c\xae\x53"}, +{{0x10,0xca,0x41,0x3d,0x70,0xeb,0x3d,0xb6,0xe3,0x37,0xf0,0xf1,0x1a,0xbc,0x07,0x5c,0x95,0x85,0x9e,0x82,0x5f,0x87,0x61,0x76,0x07,0x69,0x52,0xd2,0xf1,0x88,0x80,0x30,},{0x50,0x28,0xba,0x38,0xaf,0xec,0xc2,0x42,0x63,0x5f,0x6e,0x35,0x3d,0x5f,0x4a,0xfd,0x12,0x3f,0x86,0x0a,0x04,0x25,0x22,0x0e,0x96,0x65,0x52,0xa0,0x57,0x88,0x08,0x23,},{0x6a,0xec,0x02,0xdc,0x6b,0xdf,0xcb,0x67,0xf0,0xef,0xc1,0xfd,0x31,0xe2,0x3e,0x69,0xe3,0x71,0xab,0x38,0x02,0x50,0x5b,0x32,0x01,0xa9,0x5d,0xd5,0x25,0x41,0x7e,0xd1,0xa1,0x28,0xdb,0x4e,0x18,0x2c,0xb3,0x7c,0x28,0xf6,0x28,0x06,0x66,0x70,0x99,0xa8,0xad,0x48,0x0b,0x0a,0xc9,0xe9,0x4c,0x2a,0x7d,0x5a,0x0e,0x96,0xe2,0xa7,0x36,0x0d,},"\xea\x7f\xaf\x79\xf6\xff\x5d\x78\xa8\x23\xa7\x54\x34\x71\x34\xf1\xb3\xc3\xe9\x1c\xe5\x18\xfd\xd6\x33\xfe\xb4\xf0\x5d\x12\x5f\x05\xcb\x54\x33\x6e\xf5\x60\xe9\x2d\xeb\x68\x51\x12\xa5\xff\xcd\x3d\xfd\x39\x64\xb2\x75\x8c\xe4\x78\x5f\x6a\x34\xbf\xeb\x39\x78\x4f\x0a\xee\x55\x95\x5a\xeb\xd1\x2d\xdd\xa6\x41\xd0\x57\x69\xf7\x44\x02\xf7\x06\xda\xd2\x01\xc4\x4c\x91\x08\x1c\x7d\x7f\x65\xe7\xaa\x42\x46\xde\x6d\xc3\xed\x64\x96\xd1\x0f\x4a\x41\x20\x60\xd4\x93\xba\xc9\xae\xd5\xbe\x4f\x6d\x74\x22\x9e\x3c\x55\xeb\x68\x76\xe3\xbb\x2e\xd4\x1f\xa4\x50\x4b\x66\x70\xdd\xa8\xc7\x98\xf6\xda\xa2\x80\xd1\xaa\x72\x02\x11\x74\xf6\xc0\x1a\xec\x49\xb3\x21\xd8\x7f\x53\xac\xbc\xad\xcc\x46\x07\xd5\xb1\xe4\x5d\x63\xfc\x48\x1a\x6d\x90\x57\x6c\x87\xc1\x88\x0b\x2e\x8f\xf3\xe5\x90\xa9\x6b\xee\xe1\x80\x47\x68\xc7\x56\xbe\xb8\x6b\xf1\xde\x8a\xdc\x40\x8b\x1b\x8d\x66\x6f\x74\xba\x28\x63\x08\x22\xf9\x2d\x18\xb0\x56\xae\x37\xce\x02\x93\xee\x61\xb9\xe8\x0f\x33\xac\x26\x96\x71\xbd\x62\xa4\x05\x9b\x24\xf7\xc1\xa4\x40\x80\x74\x40\xd5\xd5\x38\xa6\x54\x58\xad\xc8\x15\x87\x24\xb2\x5c\x12\x12\x7a\xa0\x34\x9e\x55\xf6\xe5\x5b\xc9\x20\x78\xfd\x1e\xf2\x74\xc2\xaa\x79\x19\x05\x76\x6b\xe3\x94\xa2\x62\x8f\x7b\xbd\x1a\x32\xda\x5e\x48\x74\x46\xbb\xef\xae\x88\xfa\x6c\xf3\xf7\xb4\x99\xf1\x31\xfa\x19\x31\x3d\x13\xb2\x80\xad\xca\x50\xf7\x78\x02\xd1\x73\x31\xb3\x81\x68\x3b\x5e\x7e\xda\xb9\x94\x73\xed\xd3\x1d\x77\x44\x34\x88\x21\x41\x35\xfd\x6f\x26\x44\x50\x93\xe9\xe2\xaf\xf7\xd7\xe8\x92\x33\x7f\xdc\x87\x79\x06\x5d\x4d\x97\xd6\xd6\x73\x57\x67\x94\x95\x8d\xbf\xa6\xc5\x0b\x1b\x13\xac\x39\x60\x7c\x1e\x66\xef\x96\x29\x76\x10\x71\x15\x5f\xbc\xa6\xf3\x6e\xb0\x2c\xee\xae\x16\x36\x7f\xea\xc0\x74\x76\x90\x8c\x84\x7c\x9a\x53\x3e\xf6\x8c\x94\x31\x1f\xa0\x89\xff\x28\xfb\xd8\x78\x09\xb0\xd3\x87\x6b\x43\x1d\x9a\x18\xb2\x02\xf9\xa4\x04\x9a\x05\x77\xb8\x17\x76\x10\xdd\x02\xe5\xc5\x20\xec\xa9\x55\xe8\x03\xc3\xad\x4f\x50\x97\x6f\x7c\x2e\xa8\xaa\x3e\xe4\x83\x6a\x19\x85\xdf\x0a\x4f\x16\xef\x46\x98\x15\x95\x41\x98\x97\x99\x35\x60\xaf\x82\x65\x1c\x2b\x49\x4e\x68\x0b\x37\x80\x2e\x75\x37\xef\x68\xa5\x75\xc3\x4f\x85\x88\x06\x3e\xe0\x19\x72\x06\xd9\xa3\x2b\xb4\x89\x0e\x7c\x21\x6a\x4d\x33\xfe\xca\x36\xb5\x49\xe5\x32\xfe\xa6\x85\x56\xe7\x54\x0a\x4f\xb1\x69\xd4\x9f\xc5\x53\xb2\xe6\x70\x0a\xe4\x2d\x9a\x51\x6e\x68\x16\x0a\xcf\x6b\x27\x0c\x77\xca\x5e\xc2\x6e\x5a\xd5\xdc\x75\xc2\xc3\x93\xe2\x99"}, +{{0x1f,0x0a,0x10,0xa2,0xcb,0x11,0x19,0x17,0xb9,0xa6,0x7a,0x2a,0x1f,0x38,0xfb,0x86,0xf8,0xed,0x52,0x60,0x7d,0x1d,0x65,0x3a,0x45,0x7d,0x7f,0x47,0x18,0xd9,0xa7,0xde,},{0x70,0xc0,0x75,0xb2,0xe9,0x4c,0x4c,0x02,0xf4,0x5e,0x73,0x04,0x4f,0x24,0x39,0x97,0x41,0xb1,0x61,0xfe,0xb6,0xf6,0x9e,0xab,0x63,0x54,0x17,0x28,0x2a,0x4a,0x93,0x68,},{0xa4,0x24,0x5a,0xa3,0x39,0x5e,0x7b,0xad,0xa2,0xbc,0xdf,0x16,0x03,0x14,0x7c,0xc5,0xf3,0xf0,0xba,0x91,0xf4,0x0f,0xda,0xd8,0xf6,0xd3,0x71,0xc3,0xeb,0xef,0xb4,0xc1,0x50,0x1d,0x07,0x87,0x5b,0x57,0x6f,0x40,0x79,0x78,0x06,0xa4,0x84,0xc7,0xa3,0xf7,0x05,0x69,0xe2,0x32,0xb0,0xc9,0x9d,0x29,0xca,0x23,0xa2,0x33,0xb6,0x8e,0xdb,0x0c,},"\x4f\x6a\x43\x4b\xd5\xfc\x77\xf0\xf1\xb7\x04\x9c\x91\x85\x3c\xcb\xd8\x94\x39\x96\x2a\x60\x78\xa6\x74\xb8\x67\x54\x3b\x6b\x7d\x10\x55\x2e\xc1\x75\x8c\x52\x83\x04\x2b\xd6\xb4\xce\xa8\x8c\x95\x20\xdb\x04\x74\x6f\x08\x9c\xf3\xa2\x60\xfb\x0f\x33\x85\x8e\xfd\x6f\x68\x0d\xe5\xb7\x2d\x98\x76\x32\x4b\xa5\x90\x29\x91\x38\xf8\x5a\x76\xf5\xbe\x0e\x05\xe8\x85\x9c\x02\xb2\x35\x12\x55\x9c\x8b\xea\xfc\x9c\xfe\x90\x1b\x28\x3e\x15\xd1\x6c\x79\x2e\xb0\x3b\x92\x88\x0f\x6f\xf9\x7a\xa3\x8e\xee\xad\x3f\x4f\xd6\xc0\xa9\x21\x43\x23\xaa\x39\xa1\xc1\x65\x15\xe3\x0d\xbd\x08\xb8\x33\xee\x40\xa8\x14\xa2\x88\x09\xc8\x70\xe1\xd0\xa6\x2c\x37\x93\x2d\x54\x08\xfc\x6a\xfc\x63\xe7\x9a\x65\x5c\x5f\xe3\xd4\x02\x6e\xf0\x9e\x02\x99\xfb\xde\x5a\xb3\x4f\xce\xab\x14\x13\x0d\xc4\xbe\x00\x7e\x8e\x64\x44\xd7\xaa\xae\xc6\x2c\x87\x3d\xf7\x7e\x80\x10\x74\x3c\x31\xe8\x75\x7f\x1e\xae\x9e\xdb\x55\x97\xa1\xb5\xd8\x4b\xd7\x7a\xe7\x64\x2e\x1a\xca\x99\x87\x3a\x15\x2f\xfd\xe0\x68\xa8\xe4\xad\x92\x40\xb9\x03\x33\x27\x95\xe4\x0b\xb3\x28\x65\xe5\xce\x03\x43\x07\xa6\xc9\xfe\x33\x9a\x1c\x93\x77\x0d\xf5\xca\x46\x32\x9f\x6b\x09\x41\x97\x85\xcb\xf2\x84\x7b\x0c\x68\x32\x83\x71\x23\x85\x3a\xd9\x52\x65\x32\x65\xc5\xb5\x74\x0d\x19\x4e\x00\xf2\x3f\x9e\x96\x67\x91\xf0\x05\xf8\xbf\x55\xc3\x88\xc2\xbe\x9e\x21\x53\x89\x25\xf8\x55\x5e\x0d\xbd\x83\xbe\x07\x3d\xf7\x65\xaf\x49\x40\xe5\x9a\x37\x90\xb9\x83\x6b\xab\x79\x09\xe5\x67\x6f\xbf\x1c\x21\x26\xfe\x22\x6d\x78\x1a\x44\x33\x0c\xc0\x1d\x32\x83\x0f\xf8\xae\x00\xb9\x79\x2e\x39\x8c\x2c\xbb\x4f\xb8\x3a\x10\x05\xc2\x45\x54\x9a\x89\x06\x3f\xbe\x06\xc6\x2a\x48\xda\xc4\x3c\x51\x01\x24\x99\x94\xe9\x5e\x37\xf2\x4c\x1d\x8b\x3b\xc6\x73\x53\x8c\x46\x05\x5f\x80\x0d\xb1\xc0\xf9\x56\x86\x9b\x6b\x29\x7d\x99\x0f\x44\xf0\x5b\x50\xc7\xad\x6b\x85\x6f\x46\x21\x28\x58\x47\x1d\xd0\xd3\x93\x72\xb0\xdb\x75\x15\x73\xdd\xb6\xb5\xb5\x6b\xa0\x1e\x37\x1c\x78\xfe\x58\xdc\xd1\xbe\x53\x11\x2a\x6a\x73\xda\x9a\x6b\xac\x75\xd3\xc3\x9a\x1a\x70\x5a\x36\xf6\x40\xfc\xfa\xd8\xcd\x04\x07\x75\x94\xd5\x96\x85\xf6\xe3\x0d\xe7\x1d\xfd\x4a\x44\xc4\xe7\xc0\x4d\x6e\xc7\xc2\xe8\xbe\x12\x78\x5b\xb0\x5b\x29\xb3\x91\x51\xd3\x29\xf5\x87\xfd\xc3\x81\xc2\xdf\x0c\xef\x73\xfe\x0e\x3f\xd9\x20\x8d\x7c\xcb\x6e\x08\xd0\x2f\x42\xd1\xfe\xed\x27\x56\x1d\x5e\x32\x3a\xa1\x48\x62\x4e\x55\x2a\xbe\x87\x53\x2d\xe1\x5b\x7f\x42\xc2\x2c\x98\xe4\x05\x25\xb1\x74\x7c\xbd\x75\x8b\xfb\x26\xfd\x3e\xed\x3b"}, +{{0x7f,0x05,0xba,0xac,0xf1,0x67,0x58,0x3c,0xf2,0xfe,0x95,0x62,0xa5,0x06,0x99,0x1e,0xd9,0x87,0xf6,0x8f,0xfb,0x71,0x56,0x7c,0x7c,0xcc,0xe3,0xfc,0xc5,0x9b,0x78,0xb0,},{0x0d,0xec,0x39,0x52,0x85,0x2b,0x96,0xfd,0x75,0x58,0x7e,0x97,0x74,0x3f,0x9e,0x41,0xc0,0x9f,0xbe,0x6b,0xa9,0x81,0xbf,0xce,0xb4,0xeb,0xb8,0x89,0x2d,0x98,0x6a,0x16,},{0x0d,0xee,0xd2,0xdf,0x82,0xac,0xf4,0x52,0x9c,0x40,0x8a,0x02,0x93,0x1f,0x67,0x6b,0xec,0x5c,0xb7,0xad,0xe8,0x4e,0xbd,0xcd,0x57,0x8f,0x70,0xf9,0x71,0x38,0x2c,0xf3,0x11,0xbb,0x83,0x09,0x73,0x00,0x45,0x6a,0x55,0x8b,0xc4,0xc0,0x9d,0x89,0x83,0xff,0x13,0x49,0x3f,0xd6,0x11,0xeb,0x66,0xc0,0x43,0xbf,0x01,0x9b,0xad,0x6f,0x33,0x02,},"\xa2\x7d\x1e\xab\x05\x15\x09\x20\xde\xd1\xb1\xc2\x57\x8a\xf5\x82\xb2\x94\xf7\x83\x7f\xe4\xfb\x1a\x31\x69\xc2\x5e\xfb\x70\x63\x4b\xa6\x6c\x7e\x29\x91\xb3\xe7\x5c\xc5\x12\x48\x26\xa0\x3e\x05\x72\x59\xb5\xcb\x70\x62\x28\x78\x0c\xbc\x82\x75\xc3\x39\xf8\x34\x0e\x40\x2a\x66\x50\x32\xa4\xab\x65\x78\x27\xb1\xc3\x48\x1f\x75\x66\xd3\x69\x73\x5b\x82\xdb\x76\x28\xc0\x22\xb2\x12\x73\x0d\xb1\xe4\x7c\x9b\x2d\x9b\xc4\xd8\x1b\x23\x42\xd8\x9c\x6e\xaf\xc3\xe0\xb6\xde\x50\xd4\x84\xcc\xef\x11\x23\x8c\x8e\x2d\x24\x0d\xd5\x95\xdc\xef\x8b\x2f\xc5\x7b\x54\xff\x9a\x8a\x74\x11\x1f\x61\xf8\xa6\x52\xf2\x0e\xa0\x12\xc1\xad\xe3\xe2\x80\xec\xde\x29\x4c\x0e\x35\x71\x71\x90\x16\x2e\xc6\xa2\x26\x5e\x7e\x6f\x3f\x07\x04\xcf\x8a\xb1\xa0\x3e\x5c\xc9\x53\xe2\x92\x62\x91\xcc\xd4\xb0\x59\x0d\x5c\x20\x56\x8f\x94\xf9\xff\x0f\xe2\xab\x78\xcf\x9a\xe2\xc3\x8b\xcd\x49\x1e\x51\x8f\x23\xe9\xb6\x36\xf8\x80\x61\x5f\xc5\x60\x78\xe5\x12\xd7\x57\x7e\x09\x49\x7c\x11\x83\x45\x3d\x50\x81\xfd\x47\x37\xf2\x80\xec\x5e\x26\x7c\x45\x86\xb7\x8b\x70\xff\xfd\xfd\x73\x0d\x80\x9d\xf5\x60\xf2\xe3\x77\x21\x91\x84\x7b\xbc\x3f\x60\x4f\xb7\xf8\xca\x49\xee\xd3\x18\xb5\xe7\xd1\xf2\xb8\x3a\x10\xda\x0c\x85\x94\xb3\x39\xb6\x87\x1a\x57\x72\xdd\x64\x16\x8e\xcc\x27\xe2\x40\xa4\x5c\x76\x72\x5e\x7d\x55\xbe\xf3\x7e\x13\x5e\x3d\x9e\x0e\x34\xe3\x6c\x16\xe3\x4d\x77\x45\x9a\x55\x2f\x40\x74\xd0\x67\xa3\x1a\x3e\xd2\xa4\x8c\xde\xa4\x89\x5b\x10\xbd\xf1\x65\x6f\x4b\x7a\x41\x3c\x6a\x08\x8c\x64\x9f\xc9\xd7\xbc\x56\xab\xf6\x44\x35\x49\x12\x14\x19\x2a\x66\x70\xcb\x8b\x9c\x91\x7f\x8e\x1b\xc7\xb2\xcf\xce\x78\xd2\x8f\xbc\x3a\xfc\x2a\x50\xe9\x82\x13\xe7\xe0\x26\x37\x8e\x4e\xa7\x11\xd1\x51\xad\xaa\xa7\x19\xbe\xb8\x97\x46\x56\xc1\x0e\xbc\x7d\xe4\x6b\x19\xec\x82\x95\x1e\xf4\x6a\x8c\x68\xe7\xf4\x36\xe1\xb3\xeb\xed\xb2\xd0\x9b\x05\x75\xc9\x91\x4e\xad\x27\x96\xb5\x3e\x00\x61\xe2\x12\x99\x4a\xc5\x02\x6a\xea\x81\xec\x37\xc8\x13\x78\xf4\xcc\xfc\x46\x77\x00\x08\x79\x68\x59\x7d\xa3\x8f\xed\x52\xfa\x48\x09\x3a\xe4\xba\x10\x66\xc3\x1e\x3c\x7d\x85\x08\x09\x5b\xb4\x5c\x28\x01\x20\xf4\xaa\x69\xa2\x4f\x3e\xfe\xf1\xf7\x67\x98\x5a\xa1\xa3\x0e\x14\x08\x56\xf7\x6d\x15\x20\x73\x28\x78\x48\x7b\xe5\x3f\x71\x2d\xbd\x7d\x77\x9e\x31\x51\x01\x58\x8f\xd7\xdb\xdb\x13\x2f\x92\xc2\x75\x75\xac\x14\x86\xf1\x76\xc7\x90\x66\x1b\x01\x48\x39\x4e\x92\xff\xa3\xae\x6f\x8a\xfb\x2f\xaa\x2b\x7f\x4f\xbd\x0a\xd9\x1e\x75\x9a\x70\x2b\x3c\x70\x2b\x4d"}, +{{0xd0,0x0c,0x21,0x64,0x26,0x71,0x0d,0x19,0x4a,0x3d,0x11,0xcf,0xc9,0x0a,0x17,0xa8,0x62,0x12,0xe7,0xa0,0xe5,0x4b,0xaa,0x49,0xb0,0x16,0x9e,0x57,0xff,0xf8,0x3d,0x61,},{0xcf,0xe6,0xae,0x89,0x03,0xc6,0xc7,0x01,0xaa,0x30,0x46,0x95,0xc6,0x51,0xbf,0xd8,0x50,0x33,0x1f,0x9a,0xd4,0x81,0x63,0x3a,0xe3,0x70,0xc8,0x6d,0x7b,0xd1,0x3f,0xb9,},{0x15,0xc4,0x5c,0x19,0x42,0x97,0xe8,0x87,0x02,0x9f,0x49,0xd8,0xbd,0xf9,0xd6,0x10,0xdd,0x8c,0x34,0x79,0x9e,0x1e,0x92,0x30,0x26,0x9e,0x7a,0x58,0x92,0x89,0x38,0xcf,0x39,0x6a,0x02,0xcd,0x42,0x20,0x54,0x90,0x39,0x1e,0x1c,0x64,0x35,0x3f,0xb0,0x6b,0x9f,0x8e,0x9b,0x81,0x8a,0x9a,0x36,0x1c,0x20,0x4a,0x38,0x69,0x95,0xbf,0x3b,0x03,},"\x82\xf9\x78\x41\xb3\xba\x22\xdd\x9a\x44\x50\x83\x7e\xa7\xbf\x8d\x27\xa9\x73\x14\x70\xca\xbb\x0c\x20\x78\x03\x4b\xf2\x4e\x4c\x1a\x62\x90\xc0\x3f\x40\x02\xb8\x6f\xa0\x9f\x07\xb5\x20\x9f\x1f\x53\xd0\xec\xf4\xd9\xe9\x22\x3b\xec\x12\x5a\x95\x45\x51\xfe\x8b\xff\x71\x8f\x5e\x26\x48\x68\xe2\x07\xf7\x01\x19\x4e\x41\xde\x39\x97\x1f\xd3\x85\xf4\x9a\x4b\x4a\xdd\xa9\x11\xeb\xa5\x52\x59\xfc\x68\x36\x65\x32\x73\xf6\x56\xf4\xaf\x60\xb2\x06\x64\x95\x6d\x4f\x21\x35\xd9\x0d\x09\xe9\x03\x7d\x53\x66\xa0\x25\x34\x44\xe0\x22\xc7\x21\x2a\xf5\xfd\x4f\xcc\xd7\x42\x37\xd2\x88\x53\x38\xe2\xfd\x72\x15\x22\xde\x67\x63\xc2\x54\x90\x28\xc6\x23\xb9\xcf\x38\x7d\x23\x4a\xb5\xe7\xfc\xbe\x5a\x47\xc6\x85\xb7\x9e\x75\xa5\x7b\x09\x57\x40\x82\xa0\x22\x21\xdf\x64\xa2\xe8\x41\x61\x80\x87\xe7\x22\xa2\x1b\xac\x1b\xa4\xf0\xd7\xd8\x7b\xdc\x51\x0a\xaa\x8f\xbd\x10\x75\x7f\x6c\x02\x9c\xa8\x20\x37\x1f\xc7\x4c\x3b\xc5\x0b\xd8\x98\xc5\x5d\x81\x67\xf7\x3a\xda\x37\x7a\xec\xc9\x16\x29\xd6\x4c\x36\x0c\x2c\x24\x1c\x5c\xb4\x2e\x3a\x51\x8c\x5d\xab\xf0\xf4\x18\xb2\xa7\xf3\xd8\x2e\xef\xd9\x20\x26\xd3\x1e\x8b\x81\x60\x35\x8e\xae\x82\x1f\x73\x0e\xca\xfe\x7a\xce\x64\x7b\xff\x87\x41\xde\x2f\x6a\x13\x1d\x11\xc9\x69\xe9\x78\x7c\xfe\x6a\x2f\xab\x37\xbf\x8d\x1c\x7f\x4a\x2f\x36\x4d\x2f\x1a\x76\xef\x04\x6c\x18\x43\xe6\x3e\xc0\x0c\xf7\x92\x0f\xfa\xae\x56\x1e\x73\x70\xb7\x19\xfc\x16\xfc\xeb\xca\x3c\xfd\xfa\xba\x43\xf4\xf0\x90\xc4\x6f\x47\x73\x03\xa6\x60\xee\x88\xdd\x4e\x89\xbf\x14\xb9\xf8\x04\xb6\xfd\x49\x5c\xb1\x41\x27\x53\x47\x4a\x05\x6a\x0d\x89\x31\xcd\x9c\xcb\xd6\x4f\x8f\xcc\x7a\x31\x23\x46\x7c\x5d\x47\xf6\x90\x67\x9e\x88\x71\x28\x80\x93\x73\x4f\xd6\xa1\x32\x60\x38\x65\x81\x56\x41\x36\x96\x59\x4c\x13\x4d\x73\x88\x7f\x34\xee\x67\x60\x9a\xe8\xff\xb3\x26\x6c\x16\xd8\x7f\x15\x34\x5a\x47\x6f\x72\x95\x0c\x15\x87\x96\xa8\x8b\xbb\x44\x4f\x1a\xa8\x09\xca\xd8\x75\xb8\x5f\xb9\x15\x1a\x0e\x2e\xef\x2e\x00\xe8\x0d\x6b\x7a\x9b\xa4\x06\xc0\x51\x9e\xff\xdd\x94\x12\x62\x32\xfd\xf6\xf1\xe7\xb9\xbb\xc0\x36\x2a\xa7\x75\x16\xfd\xf9\x39\xe7\x90\x6a\xab\x01\x30\x71\x28\xcf\x82\x4c\x10\x2c\x09\xb9\x29\xc9\xb2\xd7\xaf\x8f\x85\xb7\xd7\xf9\xa8\x38\xb2\xae\xd0\xc6\x97\xe8\xbd\xfe\xe6\x6e\xe0\x16\xbb\x1b\xf3\x5e\xff\x6b\x2f\x7e\xf4\xb9\x1b\x1f\xc0\x4f\xac\x9f\x11\x6e\x2e\xdf\xf4\x0f\x95\xc1\x5b\x77\xc3\x1e\xe5\x22\xf3\x93\x7c\x7f\xa0\x04\x7d\x62\x25\xe0\xc8\xe5\x5e\x27\x8c\x81\x03\x91\x1f\xea\xb2\xb7\xf4"}, +{{0xdd,0x12,0x39,0x72,0xe6,0x28,0x58,0x4a,0xcc,0x46,0x29,0x3b,0x8e,0x4c,0xe2,0xb2,0xdd,0x46,0x9c,0xc4,0xed,0xe1,0x4e,0xf3,0x95,0x21,0xcf,0x08,0x37,0x35,0x85,0xb3,},{0x35,0x22,0xf7,0xae,0x59,0x6e,0xed,0xb2,0x17,0x03,0x5d,0x95,0x39,0x5e,0x44,0x8d,0xbd,0x6f,0xfb,0xf4,0x25,0x85,0xea,0xeb,0x30,0x70,0x26,0x54,0x1c,0x78,0xa6,0x51,},{0x89,0x65,0xa8,0x89,0xd5,0x4c,0xd8,0x07,0x6d,0x35,0xbc,0x2e,0x12,0xb0,0x09,0xd5,0x6b,0x07,0x04,0xc8,0x94,0xf9,0x12,0xa0,0xd1,0xd3,0x07,0x20,0xc2,0x32,0xfe,0x44,0x04,0xbf,0x30,0x09,0x54,0x1e,0x8f,0x32,0x83,0xe8,0x9e,0xa8,0x6f,0x67,0x8a,0xfb,0xdf,0x1c,0x21,0xc9,0x24,0xb2,0x3a,0x52,0xb4,0xca,0x6d,0x63,0xf4,0x8f,0xc2,0x03,},"\x2b\x28\x57\xf4\x52\x80\x17\x3e\x2e\x0e\xf9\xd5\x94\xe6\x08\x3f\x1d\xc7\xa6\x54\x92\x97\x5b\x83\x7d\xef\x6c\xad\xd8\xc8\x54\x50\x31\xee\x9d\x68\x36\x9a\x93\x93\xcc\x7b\x79\x2f\xeb\x98\x04\x0b\x21\xf1\xeb\x84\x66\x5f\x87\x85\x37\xce\x41\x2e\x9d\xb6\x80\xd2\x9f\xbd\x8f\xfc\x77\x31\xea\xe9\x1a\x20\xb4\x75\x48\x99\x62\x04\xfb\x06\xad\x74\x0e\x78\xf0\xfc\x59\x0b\x67\x91\xdc\x7a\x0f\x26\x59\x28\x6c\xc1\x6d\x02\xc5\x11\x7b\x56\x58\x36\xb4\xb8\x73\x8c\xf4\x0e\x28\x5c\x69\xc5\x0e\x41\x29\x11\x29\x23\x67\x35\x2d\xfd\xae\xd9\x98\x2d\x0f\x89\x9a\x23\xc0\xab\x51\x81\x2b\x3e\xc6\x78\xf6\x88\x2e\xa4\x27\xcd\xc9\x3a\xb4\xb2\x48\x24\x37\x70\x54\xaa\x25\xd8\x22\x46\x65\x33\x40\x07\x8c\xf1\x1d\x14\xa5\x1f\x0e\x68\x6d\x7e\x01\x8b\x36\x74\x16\x68\xfc\xe7\x45\x8d\x16\x92\x93\x36\x1d\xd1\x6b\x3d\xeb\xbe\xd1\x9e\x1b\xef\x7c\x36\x93\x4e\x20\xf3\x3a\x09\xad\x3e\x82\xb5\x3a\xb4\xe9\x4c\x25\x5d\x04\x18\x98\xb9\x77\x37\xdf\x99\x58\x4a\xf1\x4e\x40\x40\x58\xd0\xc9\x3b\xca\xe7\xbb\xbc\x06\x39\x5a\x2a\xef\xbd\xef\xa7\xb2\xed\x17\xce\xbd\x15\x13\xfa\x39\x0f\xe9\xa9\xb0\xce\x68\xce\xcc\x2b\x9e\x12\x9b\x7a\x29\xf4\x9b\x6d\x18\xc2\x8b\xac\xd3\xaf\x39\xdc\x39\xca\x97\x2f\x0e\x0d\x06\x85\x5d\x57\xc2\xb5\xfc\xac\x2f\x79\xcb\x8c\x05\x79\x9e\x4f\x65\x73\x46\x68\xda\xd6\xaa\x7a\x43\xa1\x18\x56\xe2\x3b\x1e\x73\x2d\x00\xe5\xfe\x38\x85\xb7\xda\xd4\x2e\xc1\x8a\xc8\xe0\x96\xa0\x80\xf7\xd5\x50\x70\xfd\xcf\xf6\x07\xbc\x0b\x85\x2d\x8a\x08\x0d\x2a\x74\x05\xd5\x94\x14\x69\x5f\x2e\xb7\xfb\x0a\xca\x23\xc8\x63\x57\x42\xf8\xae\x57\xf1\x37\x80\x31\x6e\x28\x08\x72\x37\x4e\x69\x29\x59\x8d\x02\x8a\x33\xc0\x5d\x83\x1c\xda\xbd\x02\x94\x93\xc3\xcc\x85\x9f\xff\x1a\x67\xd5\x62\x16\xf0\x2a\x22\x95\x66\x53\x65\x88\x7a\x35\x0a\x80\xaf\xaa\x0c\x36\x7a\x74\xd3\x70\x1a\xe8\x8f\x59\xd8\xa9\xd3\xa1\xdc\xe0\xcf\xd2\xea\xbe\x2a\xf5\x06\x5a\x1c\x7f\xca\x4a\xad\xcf\x8e\x51\xe7\x56\x12\xa1\x37\x1b\x4d\xc8\xff\xc0\xc0\xb9\xc4\xfa\xdb\x2f\x08\x1e\x2e\x03\x2d\x96\x81\x8e\x55\x73\x7a\xdd\xe3\xe1\xac\x12\x1f\x56\xcc\x86\xfb\x58\xa0\xa5\x82\x69\x2f\x62\xce\x58\xac\xce\x17\xaa\xfe\xc7\xbc\xb7\xe4\x4f\x83\x92\x58\xcd\x4a\x85\x1f\xc0\x13\x44\xee\x9f\x1b\xd0\x3e\xb9\x43\x44\xf4\x77\x86\x93\xc1\x71\xdd\x28\x92\xb2\x42\x6a\x88\x29\xab\x0c\xfe\x33\xa7\xd4\xa3\x6e\xb4\x01\x7f\x7f\xcf\xd2\x41\x34\xab\x8a\x45\xf2\x37\x17\xcd\x13\x8a\xa6\x00\x01\x72\xe3\x7b\x40\x64\xdc\x9b\x6d\x1e\x1e\xf3\xaf\x84\x97\x1d"}, +{{0x33,0x35,0xea,0x92,0x81,0x17,0xcf,0xee,0xfb,0xee,0xae,0x14,0x60,0x03,0x88,0x1b,0xdc,0x88,0x89,0xd6,0x58,0x0e,0xed,0x13,0x52,0x37,0x08,0x20,0xad,0x1f,0x58,0x4f,},{0xcb,0x20,0xd4,0xfd,0x75,0x61,0x84,0x80,0x13,0x11,0x1c,0x3e,0x97,0x61,0x7f,0x34,0x18,0x1d,0x2e,0x7f,0xbc,0xf1,0xbb,0x2a,0x2c,0xd2,0xe8,0xc1,0x77,0x5b,0x8b,0x03,},{0xf7,0xc3,0x9f,0x92,0x47,0xd2,0x2f,0x01,0x89,0x99,0x24,0x7f,0x0e,0x00,0x05,0xcd,0x63,0x07,0x6c,0xcf,0x2f,0xee,0x41,0x63,0x42,0x1f,0x86,0x40,0x7a,0x41,0x69,0x8c,0x40,0x58,0x16,0x64,0x73,0x51,0xc0,0x4e,0x93,0xb5,0x44,0x15,0xb6,0x2f,0xc0,0x3f,0xc8,0xc2,0x5e,0x20,0xf7,0x54,0x1d,0xab,0x03,0x19,0x7d,0xc9,0x00,0xb2,0x9c,0x0c,},"\x0f\xa7\xf6\xa6\xfc\xa9\x81\x42\x9b\x57\x2a\x67\x04\x87\x1b\xed\x14\x0d\xab\x93\xee\x19\x92\x00\x6e\x9a\x3b\xb2\xe6\xcc\x9a\x09\xd4\xc9\xcf\x17\x06\x6b\x32\xff\x7e\xf5\xb6\xb2\xe7\x91\x11\x78\xed\x74\x62\xc4\xc1\x75\x60\x31\x71\xca\x61\x36\x68\xb3\xbe\x19\x3d\x94\xc3\x52\x1e\x58\x89\x13\xb5\x94\x8b\x55\x0b\xe9\x9d\x82\xd9\x66\x19\x7d\x71\x0a\xcf\xd9\x59\x14\xcf\x3e\x19\x75\x36\xe8\x3e\x68\x23\x0d\xc3\xd6\x7e\x67\xdc\xdb\xde\xe0\x4f\x0d\x9c\x48\x02\x37\xec\xd2\x8f\x74\x33\x8d\xb5\xf3\xf6\x97\xd3\xd0\x7f\xf3\x36\x13\xbb\xce\x54\x2a\xcc\x9a\x7f\xed\x5d\x12\x49\x0b\x9b\xfe\x1d\x10\x95\x40\xf8\x63\x80\x0d\xd3\x56\xda\x84\x1a\x45\xa3\xcd\x8a\x08\xa9\x45\xbf\xa3\xaa\x98\xe1\x71\x23\x12\xc4\xc0\xf0\xd9\xdd\x64\xf6\xef\xcf\x73\x6b\xd9\x7d\xea\xfc\xa9\xdc\xaa\x3f\x06\xd8\x7f\x2e\xd7\x2a\xeb\x6a\x94\xf3\x28\x00\x00\xc4\xbf\x72\x8a\x01\xc1\x86\x2d\xaf\xd9\xfc\x5c\x7d\x5a\x46\xec\x7d\x3a\x87\xaf\x59\xa1\x1d\x87\xf7\xff\x84\x40\x7d\x37\x01\x0e\x1d\x94\x6c\xf2\x25\xd6\xb3\xb1\xed\xee\x2e\x8b\xbf\x1e\x07\x9e\x47\xfb\x1f\x66\x66\x93\x94\xfb\xf2\xfa\x68\xfc\x56\xfc\x89\x82\x0a\x68\x09\xc2\x51\xdd\x62\xf5\xb8\x65\xc5\x47\xb1\x4f\xbd\x3a\x19\x50\x42\x44\xff\xbc\x7e\x52\x40\xf8\x8d\x43\x60\xf9\xca\xca\xaf\x5f\x82\x43\x3d\x33\x44\xfc\xae\xe0\xac\xde\xb7\xbe\xb9\xc0\xb3\xc7\x69\xea\xc9\x20\xef\x4f\x09\xab\xc2\xa2\x09\x55\x12\x04\x59\x43\xec\xcc\x53\xb1\xc0\x3e\xd2\x4e\x56\x7f\x3d\x7a\x71\x97\x7c\xab\x98\x40\xce\x89\x8e\xe5\x8e\xd5\xc7\x3f\x6a\xde\xa8\x23\x39\x4c\x5c\x8e\x36\x58\xa6\xbf\x5a\xcb\xbf\x00\x55\x99\x2c\x31\x2c\x26\xc7\x9c\x5c\xfb\xea\x38\x60\xb8\x76\x4a\x6d\x8f\xfe\x44\x91\xf8\xa5\xb8\xa2\x15\xe0\x11\x7a\x9a\x68\x16\x4a\xee\x25\xf8\xc0\xbb\x38\x11\x95\xb2\x40\x0b\xcb\x46\x44\xeb\xce\x1c\xde\x5a\x9a\x26\x58\x2c\xab\x9d\xc7\xf4\x3c\x33\xea\xe3\x50\xdb\x65\xaa\x7d\xd2\x2a\x07\x9b\xdd\xdc\xf5\x6d\x84\x8d\xeb\x0c\xfa\x50\xb3\xbd\x73\x2d\x9d\xa9\xe8\xd8\xab\x79\xe9\x34\x69\xde\x58\x02\xb6\xdf\xf5\xac\x2a\xa8\x48\x2b\xb0\xb0\x36\xd8\xf9\xd5\x95\xb8\xea\xd9\x4b\xb8\xd7\x41\x8e\x2e\xa4\x31\x92\xef\xcb\xfc\x05\xc4\x67\xbd\xe0\xa8\x68\xa5\x16\xa7\xc1\x4a\x88\x9b\x72\xc5\xb7\x3e\x7d\x85\xc2\xba\xe9\x02\xe4\xe6\x8d\x1f\x3c\xea\xb2\xb2\x77\x3a\xf5\xbb\xae\xe6\xa0\x0d\x08\x06\x3e\x78\x33\xcd\x4e\x29\x53\x47\xe5\x8f\x5d\x1b\x33\x97\xf6\x40\xc1\x59\xcc\x60\xa6\x74\xa2\x27\xb4\xcd\x8c\x10\xf1\xdb\xae\xd5\x16\xcc\xac\xdd\x29\x5f\x11\xb0\x81\x47"}, +{{0x32,0xa1,0x88,0x3e,0xff,0x57,0xa3,0xa7,0xec,0xdb,0x31,0x02,0x21,0xee,0x83,0xc4,0xde,0x92,0xb7,0x22,0x15,0x96,0x13,0xec,0xf8,0x16,0xe3,0x82,0x43,0x7b,0x60,0xb9,},{0x82,0xdd,0x1a,0x03,0xe5,0x85,0x20,0x62,0xba,0x4a,0x8b,0x6b,0x3b,0x93,0xc5,0xe9,0xc4,0x3f,0xf6,0x99,0x5b,0xd2,0xaa,0xc7,0x26,0x06,0xfa,0xc8,0x58,0x02,0xc6,0x82,},{0x83,0x09,0xcb,0xe7,0x2f,0x80,0x4b,0xd9,0x52,0x1d,0xef,0x5d,0xad,0x4d,0x8b,0xc1,0x38,0x86,0xb1,0xd4,0xf6,0x62,0xc9,0xbb,0x5b,0x97,0xba,0x47,0x90,0xf4,0x4b,0x80,0x1f,0x31,0x95,0xea,0xd0,0xd4,0xdd,0xb6,0x60,0x81,0x8e,0xcb,0xf9,0xa6,0x83,0xca,0xcf,0x85,0xf1,0xdc,0xc9,0xe8,0x2c,0x09,0x11,0x6d,0x73,0x36,0x58,0x09,0x1a,0x00,},"\xed\x2b\x12\x3b\x5d\xd7\xf5\xe7\x18\xe0\x26\xc7\x9c\xfa\x61\x11\x92\x49\x02\xd1\x89\xa4\x06\xef\x2b\x2e\x56\xa9\xee\x55\x73\xa7\x6d\xdd\x1d\x06\x29\xeb\xcd\xec\xf2\xaa\xa7\x4e\x84\xfc\xd0\x20\x8f\x14\xee\xa2\xe1\x71\xe7\xc8\x60\x8b\x81\x8f\xef\xf4\xdb\xea\x52\xdb\x35\x42\x27\xd0\x23\x25\x0b\x1f\x01\xcb\x4c\xc8\xc5\x21\x32\xa9\x8d\x4a\xcf\x55\xa5\x4f\xee\x81\xe0\x94\xae\xd6\x6f\xa0\xd6\xb6\xa2\x00\xb6\xb8\x74\x14\x40\x22\x78\x53\x8b\x90\x52\x9a\x8c\x60\x3d\x92\x7e\xdd\xda\x97\xbc\x4b\x8c\xb9\x5d\x04\xb5\x33\x7f\xa2\x2c\xea\xfc\x8b\x34\x0c\x46\xfe\xf6\x71\x98\xd1\xfd\x98\xd8\x9c\x65\xcd\x08\x9e\x23\xf5\x3d\xbd\xca\x96\x77\x98\xb5\xcd\x92\x32\x05\xad\x51\x1e\xdf\x70\x6f\x12\x25\xf4\x64\x8c\x98\x5e\x00\x9e\xf8\xa2\xf6\xa0\x11\x7c\xdb\xe1\x4e\x75\x31\x2d\x8a\xc1\xf0\x3d\x04\x6b\x37\xcd\xee\x7d\x69\xc0\xf2\x5c\xcf\x18\x14\x5a\x68\x8a\x8b\x3c\xa8\x87\x5f\xe8\xd9\x0b\xaf\x86\xd4\x39\x69\xe4\xd6\x10\x21\x4f\x1a\xc5\xdb\xba\x87\xa1\xef\x10\x37\x7e\x40\xd7\x80\x6f\xd9\xd2\x34\x57\xfc\x9d\xf2\x98\x99\x23\x9f\xd1\xd2\x78\x84\x96\x81\xa9\x43\xad\x9c\x91\xfd\x1b\xbd\x92\xb7\x3c\xb1\x77\xa8\x78\xf9\x05\x9e\xe0\x7a\xf7\xa8\x73\x16\x13\xe3\x3d\x59\xdf\x3d\x97\x79\x60\x79\xd5\x63\x1e\xd8\x5e\xb2\x24\x51\x06\xa5\xff\x6a\x2b\xca\x40\xdf\x5c\x6e\x87\x47\x3b\x2c\x08\xc2\x21\x2f\x56\xfc\x29\x33\xa9\x69\xa3\xc9\x58\xd3\x7c\x53\x43\xba\x27\x60\xc8\x13\xa7\xa5\x16\x5d\x23\x1c\x5f\xea\xae\x62\xb7\x55\xdf\x49\xfe\xca\x80\x04\x1a\x65\x35\xf7\xe0\x3b\xc4\x8e\x5f\x27\xf9\xbe\x26\xef\x53\x67\x3e\xb7\xc3\x7a\x2b\x64\x74\x4a\x6c\xf1\x7e\x88\x77\x34\xae\x01\x0b\xf4\x0e\xea\x03\xcd\xa2\x12\xf5\x12\xfb\xa0\x58\x59\x47\x17\x96\x40\xbc\xc4\x54\x4b\x8d\xeb\x4e\xad\x12\x9b\xc3\x32\x28\x00\xad\xf9\x88\x18\xf9\x95\x74\xbe\xfd\x9b\x00\x16\xd4\xee\xc8\x1a\x8e\x78\xdc\x3a\x2a\xf1\x3c\xab\x01\x64\x9a\xe2\xe3\x3d\x51\x6b\x9d\x42\x08\xad\x66\x13\xd8\xe2\x78\xc3\x93\xba\xa8\x82\x34\x0e\xf4\x61\xff\x4f\x94\x42\x3d\x55\xcf\x3c\xed\xd2\xa6\xb5\x6e\x88\x36\x55\x31\xdd\x29\xd6\x82\x73\xad\xbf\xe3\x69\x40\x2e\x6a\x7c\xee\x05\x3d\xa1\xf1\x00\x54\x00\x91\xa0\x09\x29\x25\x29\x83\x44\x90\x24\xb1\xc3\x39\x11\x10\x65\x00\x82\xf0\xe7\xdf\xdd\xb8\xed\xc2\x04\x2f\x3c\x17\x13\xc6\x94\x4b\xa5\x14\xee\x74\x07\xd3\x2b\xf0\x6c\x85\x8e\xfe\xc4\x2a\x78\xbe\xe9\x77\x46\xe5\xb4\x87\x91\x41\xa1\x3d\x9f\xc5\xcb\x12\x3b\x78\x32\x73\xb8\x4d\x57\xad\x35\x26\xb7\xda\x3c\x68\xb8\x39\xef\xd2\x3f\x5f"}, +{{0x22,0xec,0xef,0x6d,0xab,0xe5,0x8c,0x06,0x69,0xb8,0x04,0x66,0x49,0x73,0xe4,0x57,0xc0,0x5e,0x47,0x77,0xf7,0x81,0xc5,0x25,0x22,0xaf,0x76,0xb9,0x54,0x81,0xa9,0x14,},{0xd4,0x78,0x40,0x10,0xef,0x04,0x03,0xed,0xdc,0x5a,0x62,0xd5,0xd4,0x5b,0xb2,0x43,0xb8,0x0b,0x4b,0x9d,0x69,0xc3,0x9c,0xa3,0x87,0xc6,0xf5,0xcb,0xa0,0x28,0x64,0x0f,},{0x5d,0x0d,0x2a,0xf6,0x78,0xb3,0xd1,0xb6,0x77,0x51,0x6d,0x08,0xa7,0x9a,0xaf,0xd3,0x6e,0xc6,0x7c,0x14,0xca,0xf5,0xbc,0xda,0xae,0xaa,0xcc,0x51,0xa1,0x4f,0xb8,0x05,0xcf,0x29,0x04,0xe8,0x72,0x1d,0xb2,0x71,0xb2,0x0d,0xf7,0x09,0xbe,0xe1,0xa4,0xfb,0xfe,0x62,0x56,0x50,0x73,0xb2,0xa7,0xe9,0x42,0x72,0x44,0x61,0xf9,0x27,0x93,0x0d,},"\xc5\x35\xc1\x3d\x77\x9f\xc0\x98\x59\x73\xd6\xbc\xd5\x52\xd8\x17\x34\xe9\x2b\xdf\x10\x99\x4b\x00\xcd\x4d\x53\xce\x36\x5f\xad\x8c\x7c\xfa\x96\x20\x6a\xdb\x62\xd4\x56\x7b\xe5\xe4\x66\x31\x32\x38\x53\xe3\x8c\xe4\xbd\xc1\x6d\x7b\x8f\x63\x2a\x3a\xd9\xe0\x26\x19\xef\xf3\x71\x74\xea\xc3\xf0\xbf\x2f\x7a\x75\x17\xd4\xb8\x2d\xe6\xaa\x1a\xf0\x06\x38\x19\xd5\xe1\xf9\x27\x8f\xb4\xf2\x4c\x8c\xc0\x02\xaf\xb1\x5f\x33\x4c\x04\xfa\xdb\x00\x30\x30\x13\xc0\x16\x67\xf4\x93\x2a\x6c\x4b\x97\xd3\x9c\xd4\xa4\x59\x85\x06\xc0\xbd\x74\x0e\xa9\xf1\x16\x96\x35\x7d\x7d\x17\xfe\x4d\x75\xf9\xd7\x42\x41\xa7\xaf\x71\xf9\xd8\x69\xef\x6c\xd6\x95\x68\x7c\x03\xfc\x34\xad\x65\xa6\x8a\x48\x88\xa1\xa7\x41\x26\xcb\x55\xcf\x7d\xa9\xcb\x4a\x67\x17\xf6\xeb\x88\x48\x40\x89\xd2\xc5\x18\x9a\xe3\x81\xf2\x5e\x7b\x3b\xc3\xb2\x3d\x0c\x9d\x9f\x9c\xdb\xbe\xec\xfd\x1e\x72\xa0\x5e\x67\xbb\x48\x3a\x97\x64\xd9\xfc\x75\xad\x69\xe4\xab\x12\x70\xfb\x40\xf3\x95\x8f\xea\x4d\xa5\x59\xb4\x39\x80\xb2\x46\x81\x31\x3e\x85\x91\xe6\x85\x46\xa3\xbf\x76\xee\x34\xb3\x39\x70\x92\x95\xa8\xd4\x6f\xb2\x43\x2d\xda\x2f\x22\x18\x12\xdf\x69\x28\x95\xe6\x7c\xb2\x9c\xbf\x6f\xf4\x50\x2b\x43\x9a\x4e\x9e\x43\x63\x9e\xc0\x67\xbc\x90\xae\x81\x4a\x29\x3a\x7b\xd4\x69\x68\xe6\x56\x78\x76\x42\x30\x0a\x0f\xf2\x69\x7e\x33\x13\xf6\xa4\x18\xd3\xd1\x2a\x5f\x7c\x51\xa4\xc5\x7b\x63\x38\x5f\x2d\x2a\x21\xd5\xd1\xd7\x63\xfc\x8d\x1b\x93\xc1\x34\x35\xf9\xe4\x7e\xe7\xa4\x25\x98\x0a\x6a\xe6\xf1\xa9\xd0\x07\x60\x74\x76\x78\x3c\x6d\x0c\x78\x87\x38\x0f\x86\x8c\x65\xb3\x82\xd4\xcc\x8c\x04\x47\x8b\xbd\x79\xa1\xd9\xa9\x64\xb7\x81\x71\xd6\xbc\xf0\xb8\xee\xc5\x0a\x06\xa4\xea\x23\x4d\x1c\x23\x46\x5d\x3e\x75\xb8\x8b\xc5\x40\xda\xde\x74\xed\x42\x67\x5b\x07\xf7\xcf\x07\x82\x11\xe9\x07\xf8\x6d\x0d\xc4\xb9\x78\x62\x3d\x9f\x08\x73\x8a\xf9\x28\x69\x5e\x54\x2e\xc2\x98\x0e\x55\xa1\xde\x49\xe2\x52\x47\xfa\x0a\x09\x67\x81\x18\xe3\x93\x0b\xc4\xd2\x4b\x32\x14\xd6\xdc\xfb\x6e\xbd\xf4\x90\x6c\x92\x8d\xeb\x37\xbb\x9b\xa2\x9c\x8d\xe1\xbb\x94\x18\xdb\x71\x8b\x28\x53\xba\x57\xad\x8c\xae\x46\x77\xad\xdf\xd1\x8b\x6c\x7e\x8c\x24\x26\x21\xb3\x5c\x7f\x0e\xfe\x8d\xd5\xeb\x26\xff\x75\xfd\x57\x48\xb1\xd7\x83\xf6\xd6\x8a\x7d\x9d\x56\xda\x2c\x1a\x97\x8a\xc2\x5f\x84\xfb\xb2\xbe\x55\x68\xd9\x1e\x70\x93\x82\x21\xc1\x02\xae\xe6\x04\x09\xbc\xbe\xc0\xc8\x2e\x12\xdd\xb4\x25\xee\xb6\xec\xd1\x15\x51\xec\xd1\xd3\x3d\xda\xe8\x71\xae\x0c\x8f\x24\xd0\xd1\x80\x18\x73\x2b\x5e\x0e"}, +{{0x8d,0xe8,0x63,0x30,0xb2,0x56,0x09,0x5e,0x11,0x14,0xb6,0x52,0x9b,0xed,0xce,0x18,0x2c,0x16,0x6f,0x67,0xa9,0x15,0x39,0xce,0xbc,0x4b,0xec,0x25,0xad,0xd7,0xa4,0xa9,},{0x33,0xcb,0x05,0x4b,0x55,0xbb,0x79,0x0a,0xc0,0xf3,0xaf,0xdd,0x9a,0x6e,0x7c,0x05,0x0e,0xfe,0x90,0x06,0xc2,0x4f,0x60,0xb8,0x04,0x4f,0xd0,0x8a,0x5c,0x10,0x6c,0x11,},{0x6d,0x01,0xd2,0x37,0xdd,0x2b,0xb4,0x18,0x8d,0x29,0xbf,0xde,0xc3,0x87,0x97,0x6a,0x71,0xbe,0x7a,0xdf,0xbf,0x9e,0x23,0x63,0x9b,0x21,0x6d,0x0a,0xa0,0xc1,0x19,0x32,0x23,0x5e,0xdc,0xcb,0x3b,0x42,0xad,0xcd,0xb6,0x29,0x1a,0x0d,0x29,0x9a,0xed,0x64,0x8d,0xe8,0xb1,0x95,0x79,0x49,0xb9,0xd1,0xcf,0x2e,0x50,0x49,0x30,0x30,0xa4,0x0f,},"\x39\xe6\x1e\x0e\xcc\xec\x92\x9c\x87\xb8\xb2\x2d\x4f\xd1\x8a\xea\xbf\x42\xe9\xce\x7b\x01\x5f\x2a\x8c\xac\x92\xa5\x24\x48\xa4\x2f\xed\x4c\xba\xdc\x08\x5b\xbb\x4c\x03\x71\x2a\xe7\x2c\xfc\xb8\x00\xb9\x78\x35\x06\x69\xb0\x99\x00\x84\xf2\xda\xb7\x6e\xca\x60\x6d\x1a\x49\xfc\x55\xc5\x29\xe1\xe7\xda\xdf\x39\x12\x2d\xd5\xbd\x73\x38\x93\x85\x8b\x05\x23\xef\x62\xdf\x4f\x13\x4c\xf6\xc2\x6e\xed\x02\xfd\xbc\xb3\x0c\xe4\x74\xb1\xad\xa3\xf0\x60\x76\x9f\x93\x4b\xbe\x68\x6c\xce\xbd\x60\x88\x3e\xce\xc9\xce\x3f\xfb\x8a\xc4\xa0\x67\x8c\xdc\x5b\x00\x5a\xe3\xdb\xa7\xe4\xfe\x8b\xc0\x45\x73\x99\x57\xd8\x49\xf6\x9c\x14\x74\x05\x7b\x42\x8c\x54\x25\xf3\xcc\x25\x16\xe8\xbb\xe3\xbe\x81\xaf\xd4\xe7\xb5\x75\xab\xe8\x8c\x87\xf2\xf0\x3b\x56\xf6\x9f\x9e\x3b\x61\xb3\x78\x81\x20\xda\xa4\x95\xef\x0e\x50\xeb\x97\x0a\x64\x5c\x13\xd2\x13\xc7\xcf\xb7\xd0\xad\x55\x5c\x92\x0a\x1e\x5d\xbc\xb4\x67\x97\xd9\x39\xfe\x04\x01\xf5\x47\xbf\xd1\x75\x43\x22\x1a\x53\x01\x0d\xe0\x1f\x25\xb6\x45\x19\xc8\xf0\x39\x63\xe4\xb9\xca\x58\xb0\x11\x36\x27\xc0\x5b\x96\x08\xee\xaa\x7b\x9a\xe6\x30\x5c\x96\x18\x81\x60\x00\x0e\xe3\xa7\xad\xe9\x6e\x0b\x4b\xde\x9d\x0e\xd6\xa0\xce\xd7\x65\xd7\x86\x84\x0a\x48\x17\x5a\x6e\x09\x0a\x38\xaf\x6a\xde\xaa\x14\x86\xa9\xcb\x5c\x8c\x8c\x92\x23\xee\x0a\xe4\xc6\xc0\x26\x91\xa3\x54\x7e\x32\x58\x2a\x5b\x70\x59\xd2\xee\x66\xfa\x9c\xd9\x65\x61\x5c\x31\x5b\x47\x6f\xd8\x61\x27\x9c\xd1\xdd\x76\x07\x74\x3f\xc5\x56\x12\x96\x31\x2f\x11\xe4\x65\xca\x40\xbc\xe3\xcf\x0b\x1f\x1d\x5a\x30\xaf\x60\x87\xde\x4d\xe9\x6c\xe4\x39\x65\xa4\x6c\x4f\xcc\xa1\x5f\x28\x11\x49\xb5\xc1\xa0\xc8\x8f\xdb\xf2\x74\x09\xa1\x34\xed\x4f\x1f\xb7\x30\xfa\x19\x18\x16\xea\x78\x4d\x98\x6c\xc9\xec\x4b\x69\x44\x02\xde\x1d\xcc\xa9\xcc\xc6\x4f\xbd\x07\xb0\x7e\x54\xe9\x31\xde\x82\x7a\x84\x24\x60\xca\x0b\xf6\xb0\x4e\xbb\x57\x1f\xa7\x77\x87\xe3\x88\x4b\xe2\x2f\x1e\x40\x2c\xf2\xb8\xa9\x6a\x5d\x39\x77\x0e\xc4\xa8\x43\x03\x61\x42\xa0\xbe\x97\x0b\xb1\xab\x16\x5a\x63\x74\xdc\xf4\x3d\xeb\x8b\x98\x30\xb2\xc4\x9d\xb9\xcd\xfe\x4b\x52\x42\xe3\x6f\x95\xe0\xc3\xe0\x77\xe8\xd2\x38\xfa\x6a\x8a\xc0\xd5\x86\xbf\x61\xb8\x24\x8f\xb3\xa7\x9a\x27\x0a\xb2\x2b\xe8\xa9\xda\x05\x5f\xf3\xd5\xbb\x2d\x1c\xa9\xbc\x25\xf7\x01\x4b\x96\x40\x77\x19\xde\x34\x4c\x3e\x73\xb8\xc1\x14\xf7\x92\x07\x5a\x5c\x22\xfd\xd4\x16\x15\x4d\x34\x94\xec\x3f\x02\xfb\x11\x2e\xe5\x73\x7f\x70\x70\x4c\x1b\x6b\x07\xea\xcb\xf9\x45\x62\xca\x7b\x90\xdd\x84\xd9\x8c\x3e\xdf"}, +{{0xba,0xb5,0xfa,0x49,0x18,0x7d,0xa1,0xca,0xb1,0xd2,0x91,0x90,0x00,0x19,0xe6,0xcb,0xaf,0xec,0xcd,0x27,0xbf,0x7e,0xcb,0xf1,0x26,0x2a,0x70,0x05,0x16,0xe7,0xc2,0x9f,},{0xf6,0xfb,0x19,0x85,0xec,0x59,0x1f,0x69,0xe3,0xba,0xc8,0x07,0xb2,0xea,0xbf,0x26,0x39,0x90,0xcd,0xfa,0x09,0xb1,0x78,0x09,0xe4,0x8e,0x38,0x5d,0xa0,0x65,0xec,0x21,},{0xe3,0x16,0x03,0x8d,0x6a,0xa1,0x5b,0x1c,0x1b,0x61,0xc1,0xa1,0x6b,0x36,0x90,0x4f,0xe8,0xa2,0x89,0xc8,0xd6,0x02,0xbe,0xcc,0x51,0x4d,0x99,0x22,0x00,0x86,0xb2,0x67,0x85,0x9f,0x5b,0xf6,0xe9,0xc0,0x86,0x35,0x59,0xac,0x62,0x3a,0x56,0xd7,0x53,0x23,0x44,0xe8,0xd2,0xf2,0x8b,0x3f,0x9d,0xf9,0x20,0x89,0x70,0x8b,0x1b,0x05,0x90,0x08,},"\x5c\xf8\xff\x58\x7e\x52\xcc\xcd\x29\x84\xf3\x47\x91\xee\x68\x43\xe7\x70\x17\xc3\xb5\x5a\xd4\x5c\x44\x45\x09\x65\xb7\x5d\x83\x6e\x78\xfb\xd7\xa1\xd1\x72\x9e\xff\x6d\x6d\x34\x0a\x90\x3f\x3c\xf1\x7d\x9e\x2a\xec\xaa\xff\x2a\x32\x1f\xcd\xde\x0a\xbc\xfb\xbc\xbc\xc0\x9f\x40\x86\xf8\x12\xc4\x6e\xfb\x01\xb7\x83\x43\xaf\xbe\x48\x30\x9f\x91\x74\x78\x45\x5f\x32\x00\x0c\x6a\x69\xf7\x9f\xe2\x11\xb9\x9f\x03\x7f\x59\x56\xd7\x22\x75\xa7\xfe\x7b\x45\x29\x6b\x5f\x73\x9a\xa4\x51\xff\x05\x75\xbc\x70\x58\x85\xaa\x56\x31\xb0\xd0\x85\x0b\xc2\xb1\x2c\x41\x92\x43\x5a\xe5\xd2\xf5\x2b\xc5\x43\x86\x49\x7c\x4a\x24\xb8\xb6\xdb\x51\x6b\xe0\x9d\x8c\xcf\x1e\xca\x78\x5b\xde\x97\xe9\xbe\x1a\xc0\x64\xf0\x94\xe2\xaf\xcc\x30\x7c\x0e\x06\xb4\xc5\x64\xcd\x9a\x9a\x95\x30\x5b\x37\xb8\x1f\x43\x46\x11\xdc\xa5\x5c\xaa\xa0\x31\xe8\x84\x95\xd5\xdc\x5a\x04\xff\x5f\xaf\xdf\x0a\x82\xa0\xc0\x3a\xff\x1b\xfb\xf4\xff\xeb\xae\x71\x82\x4e\x35\xe7\x51\xb0\x92\x70\x00\x76\x69\x86\x0b\x58\x00\x35\x65\x9e\x23\xac\xe7\x6b\x3b\x36\x9f\xa3\x06\xf2\xbe\xd9\x57\x99\xfa\xfa\xbc\x2e\x69\xc1\x41\xbe\xb0\xba\xca\xc7\xea\xa3\x47\xe7\x7b\xe5\xaf\x3f\xcd\xbe\x7b\x36\x4a\x7f\x9a\x66\xd5\xe1\x7a\x07\xdf\x62\x02\xfd\x98\xc1\x4b\xfe\xe2\xca\x6f\x07\x45\x65\x1f\x0c\x85\x50\xf9\xff\xff\xca\xfb\x96\xff\xb3\xf1\x03\xe6\x52\xe7\x8f\x53\x91\x6c\xd6\xf1\xdd\x05\xb3\xfe\x99\xb3\x42\x01\xb0\x7e\xac\x26\x52\xf5\x25\x35\x71\xfd\x38\x22\xc6\x95\xd2\x65\xc7\xdf\xdd\x6c\x6b\x14\xa8\x0b\x6e\x87\x18\x3e\x6e\x03\x2e\x5f\x24\x01\xcd\x23\x8c\xdd\x37\x69\xbb\x6e\x39\x08\x23\x43\x8f\x56\x73\xea\x9a\x47\x9e\x5c\x63\xfe\x07\xa0\x7f\x4e\x14\xf5\x77\x57\xc4\xd7\xd2\x2b\x35\xd7\x1c\x44\xea\xad\x48\x73\xc8\xec\xa6\xf6\xb2\x1d\xcf\xa9\x55\x20\xff\x96\x14\xab\xf7\xa0\xe1\x88\x53\x09\xf2\xce\xd3\xbc\xdf\xc3\x19\x36\x3a\x2d\xa4\x6d\xed\x79\xa5\xcc\x7b\x6f\x69\x38\x3f\x94\xab\x35\xc2\x50\x62\x9c\xb9\x15\xd6\x67\xb6\x28\x11\x86\x75\x48\x95\x80\x3e\x4b\x95\xe7\x41\x82\x89\xa6\xac\x3b\xcd\xb6\xe1\xe7\xf6\xf1\xdc\x38\xe7\x7d\x28\x19\x14\xcc\x40\x4f\x97\xcf\xf1\x4f\xb2\xc4\xfd\x81\x41\x2d\x10\x1c\x1b\xfb\x36\x8c\xe5\x93\x11\xe8\x92\xa8\xb9\xcd\xca\x86\x93\x6f\x3b\xca\x7e\xc7\x91\x63\xed\xdf\x1c\xee\x68\xf4\x9f\x1e\xba\xa2\x7e\xc5\x0f\x49\x0d\x61\x60\x1c\xa3\x5f\x8d\x6e\xd2\x66\x05\x4a\xeb\x9b\x19\x9f\x93\x3b\xff\xd6\xe0\x05\x0f\x26\x1b\x4e\x13\xd5\xeb\xfe\x2c\xaa\x65\x57\xc3\x2d\xde\xae\xeb\xc2\xa1\x1f\x0a\xa2\x33\x24\x0d\xa1\xc7\xe4\x0f\x76"}, +{{0x74,0xca,0x12,0x2a,0xb6,0x0d,0xe5,0x0c,0xdc,0x04,0xa8,0xe2,0xed,0xa4,0x5d,0x96,0x31,0x06,0x1b,0xf1,0x87,0xd3,0x16,0xbe,0x5b,0x7c,0xc0,0x6f,0x02,0x0c,0x48,0x3e,},{0x78,0x7d,0xef,0xd4,0xfb,0x24,0xa3,0x99,0xbd,0x2a,0x4e,0x76,0xdf,0xf7,0xd6,0x03,0xed,0x0a,0xcb,0x32,0x69,0x81,0x3e,0x4d,0xf6,0x90,0xbb,0xf5,0xb2,0xbc,0x69,0x6e,},{0xbc,0xb4,0xb8,0x50,0x69,0x60,0x11,0x99,0x7e,0xb5,0xdf,0xe1,0x43,0xf1,0xa3,0xd5,0x62,0x8e,0xf1,0xa5,0x40,0x76,0x91,0xee,0x48,0xc7,0x9d,0x69,0xab,0xe4,0xd5,0x33,0xf8,0x17,0xad,0x73,0x13,0xb5,0x79,0x5e,0x46,0xe5,0x95,0xf3,0xae,0x3a,0x91,0x65,0xb1,0xb6,0xfd,0xda,0xe8,0x61,0x64,0xff,0xcb,0xa3,0x76,0x24,0x98,0x37,0xf6,0x09,},"\xa8\x0b\x46\x07\x9f\xa7\x75\xf8\xc1\xa1\x9f\xa0\x82\x9b\xe6\x66\xbd\xfd\xca\x07\x9c\xad\x43\xd7\x0e\x08\x42\x18\x3b\xc0\xdb\x95\x46\x8a\x53\x9f\x0d\xb2\xae\xa3\xab\x9c\x70\x73\xb4\x5d\x22\x8a\x9b\xde\x23\x28\x97\xa6\xeb\x6f\xc9\xed\xf7\x36\x5e\x71\x01\xba\x97\xc4\x46\xa5\x19\xa3\x64\x9c\xf5\x27\xc8\xa6\xde\x72\x51\xb9\x28\x06\x81\x5a\xc2\xfa\x00\x82\xef\xf7\x5e\x25\x82\xcb\xca\x7e\x1e\x4d\xa2\xa4\x46\xea\x23\x3e\x7c\xf7\xce\xdf\xb0\xe2\x39\x8e\xb6\xe1\x1b\xba\xef\xe3\xf7\xec\x89\xf5\xd7\x3d\xd3\x4b\xd4\x7f\xbc\xb4\xd7\xb2\x2f\x2a\xae\xe3\x73\x78\x56\x51\x84\x11\x35\xcd\x86\x61\xa7\x01\xb2\x10\x84\xa3\x16\xde\xac\x30\x74\xe2\x4a\x2e\x35\xa0\x33\x0f\x7d\x14\x79\xb9\x32\xf2\x85\x27\x7c\x18\xa4\x41\x78\x72\x24\xfb\xbe\x46\xc6\x2e\x83\x4a\x18\x51\xed\x23\x79\x98\xd4\x8d\xce\x20\xba\x11\x4d\x11\xe9\x41\xbe\x29\xd5\x6d\x02\xf7\x37\x0c\x8f\x6d\x6d\x7e\x50\x24\x8d\xcd\x8e\xc8\x9d\x3b\x22\xf4\xf5\x87\x78\x12\x9f\xaf\xd4\xbb\x92\xed\xe1\x77\x14\xbf\x02\x2a\x5b\xf9\x2b\xe4\x79\xf1\x8e\x63\x85\x2e\xcd\xcf\x8c\x42\x11\xf5\x30\xdd\x30\xf7\x9c\xbf\x4b\xfa\x57\x37\xf0\xba\xd3\xb0\x10\x60\x67\xf4\x13\x27\xc3\x18\x9e\x6f\x20\x6f\x0d\x4f\x3c\x70\x4b\xf2\xbd\x0b\x16\x1f\x01\x8f\xd2\x1c\xdd\xfb\x41\x8b\xac\x4d\x52\xef\x02\xc4\x1c\x87\x92\xe4\x13\xb0\x4f\x08\x36\xce\xa1\xf8\x6c\x92\xe5\xd5\x70\x3b\xee\x2b\x5c\x58\x99\xe2\x85\x99\x20\x24\xf6\x4e\x0d\x16\xc6\x0a\xd0\xfd\x92\x54\x79\x32\xd0\xc5\xcb\x98\xd8\xda\x22\xfe\xeb\xdb\xba\x8d\x1d\xe1\xe7\xe9\xbb\x21\x9a\x92\xeb\x6c\x1c\x69\x8d\x3b\x33\xa3\x7f\x9b\x81\x97\xd2\x6b\x55\x0f\xeb\xd2\x60\x1e\x7a\x64\x3e\xa7\xe1\xd9\xe4\x48\xae\x03\x7f\x62\x9a\x30\x6c\xe4\x17\xae\xb7\x9f\x2e\x3c\xa4\x4d\x8d\xb3\x84\x8a\x81\x1f\x18\x46\x81\x1c\xbc\xb8\x74\xf8\xaf\x09\xe0\xfd\x01\x73\xcf\x17\x5f\x30\x41\x15\x47\x6b\xf2\xc6\xc2\xd2\xf3\x32\xeb\xa5\x34\xf4\x6a\xae\x80\x1c\x26\x92\xc2\xd2\xfa\xdd\xfe\xac\xc0\xf1\xda\xce\x44\x0a\xbc\x2a\xe5\xe5\xa4\x9d\x57\x8f\xd7\xf9\xde\x2a\x84\x1a\xd6\xb6\x76\x9c\x32\xb1\x44\xce\xea\x16\xd0\xf3\xc0\xcb\x3a\x8e\xe6\x94\xc3\x8c\x28\x07\x35\x95\x09\x6c\x81\x37\x62\xcc\x2c\x5e\xc4\xb0\xd8\xd7\x23\xdd\x66\x08\x53\x27\x8f\xc7\x2f\xd6\xbd\x9d\x12\x72\x93\x3d\xd2\xa3\x8e\xd9\xd0\x4b\x13\x90\xff\xe4\xb2\x94\xa6\xff\xfa\x72\x1e\xe3\xbb\xa3\x3a\x03\xa1\x49\xc4\xa0\x34\x52\x65\xc0\x1c\xe0\x15\xe9\x4d\xb4\x19\xcf\xf7\x04\x98\x52\xee\x00\x00\x48\xa8\x57\x58\xf6\xd7\xb1\xc5\x9c\x50\x89\xee\x01\x8e\xd0\x9b\x52"}, +{{0x65,0xee,0xa9,0xff,0xb7,0x56,0x12,0xbd,0xe1,0xd9,0xba,0x3e,0xa4,0xfb,0x5e,0xda,0x0a,0xa6,0xf2,0x55,0x6a,0xb1,0x5b,0xf1,0x81,0x7c,0xee,0x3b,0x95,0xbb,0xba,0x12,},{0x5b,0x39,0x36,0xdc,0x74,0x9b,0x6b,0x92,0x39,0xf1,0x57,0x98,0xac,0xca,0xfd,0x88,0x4c,0x36,0x59,0xee,0x01,0xb2,0xd1,0x7d,0x74,0xfc,0x7d,0xa7,0x82,0x74,0xe7,0xe6,},{0xba,0xa7,0x11,0x31,0x55,0x35,0x8c,0x92,0x4f,0xed,0x57,0x48,0x8a,0x65,0x67,0xf8,0x72,0x38,0x50,0xa9,0xf5,0xc0,0x3a,0x0d,0x7d,0xe8,0x5f,0xcc,0xd8,0xfb,0x4d,0x17,0xd7,0x75,0x35,0x23,0xb0,0x0c,0x0d,0x8a,0xdb,0x88,0x4d,0xc0,0xc8,0xa7,0xa4,0x4d,0xc2,0xa6,0x00,0x83,0xaa,0x5b,0x3c,0x5b,0x94,0xa8,0xd8,0x80,0xf2,0xa9,0x4d,0x09,},"\xc0\x69\x36\x32\x3c\xe3\x25\x3c\xac\x5a\xb4\xf6\xb8\x32\x70\xcd\x4c\xfe\x85\xd0\xbf\x8b\xac\x1e\x1b\x8d\x5f\x0b\x15\x3f\x54\x1c\x8e\x8e\xd9\x5f\x28\xd5\xc8\x5a\x23\x15\xcd\x93\x1b\x7c\xf3\xed\xae\x50\xf9\x28\x30\x59\x91\x62\x80\x4b\x13\x63\xd3\xac\x0d\xa0\xab\xd0\x97\x51\x02\x3b\xdd\xc1\x62\x88\x94\x4e\x61\x6d\x21\xd9\x12\x71\x97\x8b\xb7\x82\xd3\xeb\xed\x7f\xa6\x12\x84\xc7\x49\x0d\x27\x59\x3c\xa8\xa3\xd5\xb4\x75\x62\x33\x07\x01\x0a\xbc\x1f\xbf\x79\x3a\x81\x6a\xaa\xb5\xe0\x92\x4d\xec\x79\xd6\x04\x98\x96\x5c\xf7\xf8\x0a\xb5\x9f\xc0\x29\xf7\x82\x16\x67\x55\xb7\x2b\x86\x90\x75\x43\x4a\xb6\x06\xcc\x87\x0a\x7c\x0b\xc8\xbf\x29\xae\xe0\x33\xfa\x9c\xc1\x22\xed\x7c\x8e\x06\x9b\x54\x7d\xba\xe2\x59\x01\xb9\xe2\x49\xb4\x1f\xea\x0b\xf8\xda\xf3\x82\x68\x66\xbc\xae\xd2\x75\x3b\x5e\x91\xae\x93\x7e\x71\x7b\x50\x8a\x0a\xcf\x4c\x3b\x06\x1f\xf0\xcb\x9c\xfd\x38\x0e\x24\x94\x50\x09\x51\xa6\x62\xfd\x49\x28\xfc\x5f\xca\xf6\xc1\x8e\x84\xb1\xd3\x78\xe4\x9b\xd9\xd5\x96\x86\xd0\x87\xeb\xd5\x52\xd0\x7f\xa9\xba\x81\x6f\xa5\x40\x2c\xa9\xe7\x25\x2a\x64\x8d\x10\x6c\xfe\x6c\x43\x1c\xc2\xa0\x53\xe2\x29\x46\x37\xcd\xb9\x9d\x96\xab\xe6\x89\xed\xab\xc5\xca\x07\x0f\x77\xc1\xec\xd1\xd5\x2d\x53\x85\x28\x9f\x17\xce\xd7\x68\xc3\x97\x16\x71\xb9\xc0\xb2\xf8\x55\xb8\x46\x1c\x1e\x74\x6c\x7b\x38\xf7\x78\x96\xb8\x5a\xfb\xbe\xdd\x08\x37\x5f\xe9\x22\x98\x46\x14\xdd\x84\x9f\xe2\xcb\x89\xae\x71\x49\xdc\xd1\xd3\x7f\x49\x36\xe6\x7b\x14\x40\xbe\x72\xe0\x09\x39\x8b\xe6\xf0\x83\xbf\x96\x11\x48\x0b\x59\x2f\xe2\xf0\x11\x8e\x25\x3d\xb5\xd2\xe9\xe4\xb4\x54\x1c\x11\xda\x00\xf7\x16\x1a\x73\x6e\x5f\x0b\xb9\x34\x20\x8e\x3e\xf4\xe0\xb9\xa5\x22\x58\x20\x3f\x06\x0d\x18\xa1\x95\x15\x9e\x5e\x26\x8a\xa2\x80\x53\xc8\x34\xf7\xbd\x5d\xb9\xbd\x71\xf5\x07\xd9\x13\x70\xb3\xff\xca\xbb\xd4\xac\xb3\x07\x1d\x3f\x6d\x52\xc3\x49\xac\xf3\x50\x95\x34\x8c\xeb\xf5\xa8\x6f\x8c\x59\xdd\xc9\x65\xef\xf6\x10\xac\x42\x58\x04\xc0\xe2\xf6\xbe\x42\x85\x3f\x5b\x46\x43\x4a\x2c\x31\xd9\xac\x99\x53\x9b\xfd\xc0\x4e\xcf\x2f\xef\xd0\x45\x98\xfa\x63\xc1\x39\xff\x6c\x6d\x88\x41\x0e\x73\xbd\x32\x8c\xc4\x34\x9a\xb4\xbb\x86\xf2\xe2\xed\x7c\x73\xde\x96\x52\x0e\xf7\x73\x0e\xf3\x83\x45\xe0\xf9\x72\xa8\x4c\x53\x88\x10\x36\x87\xe6\x8c\x50\xf9\xd8\xc9\xaf\x90\x3b\xc6\x32\xd4\x32\x04\x06\x2a\x4f\x50\x2e\x21\x4c\x07\x05\x9c\x2c\xbe\xf7\x2a\x54\x11\x0d\xbf\x73\xe4\x25\x40\x2d\x17\xe9\x78\xec\x19\x9b\x51\x8c\xec\x03\x10\xbf\xbf\x7d\x9a\xd3\x00\x43\x4a\x4a"}, +{{0x08,0xda,0xbd,0x4e,0x5c,0x11,0x9e,0xa9,0x07,0xce,0x45,0xf0,0xa7,0xaf,0x9e,0x62,0xc0,0xc3,0xf1,0xc9,0xec,0x61,0xad,0x10,0x56,0x7d,0x79,0x36,0x28,0x54,0xc5,0x57,},{0x94,0x54,0x06,0xb8,0x5d,0x7b,0x32,0xe0,0xb1,0xab,0x12,0x00,0xb9,0x42,0x22,0xde,0x1a,0xaa,0x68,0x62,0x4c,0x60,0xbb,0x47,0x16,0xb0,0xbc,0xe9,0xdf,0x00,0x57,0x71,},{0x33,0xad,0xbf,0xcd,0x4e,0xd4,0xfa,0x67,0xc5,0x8b,0x5c,0xb5,0x9e,0x16,0x98,0x71,0x48,0x69,0x78,0x12,0x66,0x0b,0x35,0x31,0xff,0x6a,0x21,0xc7,0x49,0xb9,0x60,0x16,0x60,0xba,0xee,0xe2,0x48,0x9b,0x82,0xb4,0xcd,0xe1,0x32,0xb6,0xe6,0x2f,0x2f,0x90,0xd8,0xf9,0x92,0x78,0x60,0xaa,0xad,0x25,0x28,0x1d,0x03,0xeb,0x17,0xa9,0x52,0x0f,},"\x6c\x47\x19\xa5\xa2\xa6\x89\x48\x35\xc4\xac\x1e\xd6\x91\x59\xe5\xeb\xb5\x69\x2a\xd8\xea\xad\xa4\x39\xf7\x9e\x96\x68\x4b\x36\xce\xcf\xb4\x4b\x89\x01\x56\x31\x66\x3e\x06\x44\xf6\xc7\xab\x71\x39\x89\xd7\x42\xda\x27\x42\x72\x53\x31\x8a\x52\x43\x2d\xfa\xb2\x12\x1d\x1e\x92\x33\xea\xd7\x19\xe2\xc8\x6a\x6b\xe0\x73\x63\xd0\x02\x17\x3f\x20\x54\x46\xca\x95\xfc\x17\xb2\x46\x35\x82\x7f\xe3\x15\xf2\x22\x40\x8e\x45\xe8\x33\xf2\x9f\xf0\x8f\xf3\x1d\xac\x58\x3a\x4b\xec\x70\x76\xd5\xcc\x78\xcf\xc9\x44\x51\xcb\xf4\xf7\xe2\xfc\x5b\x5e\xd8\x07\x0f\x4e\xf8\x08\xbe\x1d\x8a\x68\x0e\xcd\xff\x59\x01\x0f\x39\xb1\xde\x80\xbe\xf1\x71\x9f\x1e\x21\x8e\x0c\xe0\xa1\xe3\x93\xa5\x66\xc5\x17\x64\xd2\x37\x0d\x95\xa6\x11\x91\xd8\xf7\xaf\x74\x0d\xc2\x08\xfa\x78\x31\xb2\x10\x67\x05\x12\xcd\x73\x76\x6e\x60\x9e\x9b\x78\x00\x21\xeb\xb2\x0c\xc8\x79\x0d\x8d\xa5\xf1\x0f\x5b\x6a\x11\x4a\x1d\xb8\x8f\x66\x76\x65\x01\x80\x2d\x9c\x36\x6e\xa3\xfa\x6f\x1b\x1e\x1e\x8b\x04\x20\x94\x34\x13\xcc\x6f\xea\xb2\x8c\x6b\x68\x3c\xd2\xb3\x33\x06\x9c\x89\x51\xbc\x45\xe8\xa1\x3b\xd5\x22\x57\x83\x51\xc8\x82\xf7\xc3\x42\xfe\x43\x31\xb9\x21\xf5\x33\xc9\x2e\xc0\x4a\x49\xb2\x92\xbc\x56\x9d\xdc\xef\xca\xb5\x72\x7f\x9b\x56\x25\xb1\x67\xa9\x02\xdc\x89\x6d\x8b\xc7\xd8\xe9\x99\x20\xf5\xdb\x8d\xd7\x67\x83\x9c\x43\xe3\xcd\xf9\x47\x08\x0d\xec\x95\x42\x14\xa6\xfb\xbe\x04\x87\xa2\xf3\x2c\xd1\x7a\x6b\x00\x03\x70\xbd\x41\x44\x84\xfb\x73\xc5\x10\xea\x01\x24\xc6\xcf\x0f\xe5\x6c\x08\x46\xa7\x9b\xfc\x59\x77\x9d\x3b\x07\xa1\xbd\x2c\x7f\xb7\xe2\xd0\x03\x9f\x0b\xd2\x1c\x8a\x30\x8f\xb0\xf5\x8f\xdb\xf9\x4e\xfa\x08\x57\xac\x3b\xdd\xdd\x86\xd5\x76\x3e\x20\x5e\xe1\xb2\x21\xf0\x60\xce\xdb\x8b\xc0\x5f\x03\x1b\x60\x6c\xc7\x4d\xad\xc5\xdb\x04\x23\x27\x48\x86\x5a\x73\xd6\xcc\xdd\xb4\xd5\xe9\x30\xd5\x28\x34\x8c\x5b\xe9\x08\x8b\xfe\x34\x45\x84\x87\xa6\x7b\x19\xa1\x8e\xca\x25\xc0\xd3\xfb\xe2\x19\x5e\xb9\x17\x07\xb6\x5d\x91\x61\xea\x93\xed\xdd\x64\xa6\x34\xb2\x32\x80\x19\x5f\xdb\x0d\x13\x88\xf6\x99\x8e\x18\x58\xa4\x5b\x88\x69\x99\xb8\x44\xe6\x79\x5d\x83\xd3\x18\x37\xe4\x41\x1f\x71\x69\x92\x26\xde\x1b\xa0\x24\x56\x08\x00\x0d\xcf\x22\x3d\xd1\x83\x59\xb7\xc6\xd4\x59\xa6\x5d\xbe\x66\xc9\x0f\x5c\xb8\xc0\x91\x22\x18\x7a\x30\x46\xa1\x6d\xd1\x79\xc3\xf4\x37\x3e\x57\xcf\x5e\xe0\xea\xb6\xa2\x12\xcc\x9e\xd8\xb5\x4b\xf3\x7f\x1d\x27\xfb\xd7\x98\x48\xe4\xec\x1f\x56\x72\x43\xab\x87\x40\xa0\x51\x49\xd9\x60\x2e\xad\xa9\x20\xa4\x6d\x61\x0d\x3c\xc8\x23\xb5\x64\x98"}, +{{0xe0,0xf7,0xd0,0x08,0x24,0xc5,0xf3,0x70,0x1e,0x55,0x17,0xa4,0xab,0xc1,0x3e,0x2f,0x2c,0x0b,0x13,0x8c,0x83,0x69,0x77,0x84,0x3b,0xbd,0x1e,0xef,0xfa,0xbd,0x96,0x8a,},{0x52,0xfd,0xda,0xe3,0xe0,0x18,0xa6,0x84,0x73,0xb3,0x16,0x8d,0x07,0x64,0xcf,0xe2,0x74,0xdc,0xc8,0x34,0xc9,0x0a,0x91,0xfb,0x4f,0xe7,0x4b,0x93,0x9d,0xd2,0x38,0xb1,},{0xcc,0xdf,0xe1,0x8a,0xd6,0xd0,0xb6,0x5d,0x08,0x6d,0x63,0x2f,0x83,0xcc,0x46,0xff,0x3b,0x3f,0x2c,0x07,0xbb,0x8e,0x76,0x9d,0x0f,0xb4,0xe8,0x2d,0xf8,0xa3,0x87,0x3f,0x9a,0xee,0x35,0xfd,0xd1,0x8a,0x57,0x83,0x60,0x31,0x80,0xa9,0x5c,0x9f,0x74,0xce,0xd9,0xdb,0x51,0x46,0xaf,0xcf,0xbb,0xdd,0x40,0xdf,0x29,0xe0,0x42,0x01,0x20,0x0c,},"\xb3\x9e\x3a\xc7\x5a\x22\x1a\xdc\xce\xd0\x9a\x85\x91\xac\x5e\x2f\xe1\x5d\xfe\xd5\xb9\x19\xcb\xaf\x14\xc6\x5e\xb7\xcd\x93\x08\x6d\xde\xe3\xf7\x47\x25\x47\xe6\x6d\xdc\x70\x06\x2b\x97\x62\x97\xd1\xa3\xc1\x70\xee\x52\x5c\x9c\x53\xba\x93\xa4\xc4\xfd\xb2\x35\x72\xb7\xca\x6e\xd1\x38\x53\xe7\x0d\xb1\xd7\x2e\xde\xb9\x94\x4b\xbc\x35\x4a\x52\x0e\x77\xae\x59\x1f\x31\x80\x92\xef\xd5\xe6\x6d\x9c\x09\x81\xc4\xa4\xbd\xa9\x8a\xa4\xe5\x90\x45\xff\x9c\x4b\x4c\xa3\xac\xb2\xff\xd8\x93\x20\x1c\x70\xb3\x4a\x77\xf2\x4e\xda\x54\x54\x9d\xc8\x4a\xd1\x34\xa3\x55\x32\x55\x38\x15\x88\x8a\xe3\xdd\x9e\x24\x1e\xc4\xeb\xbf\xf8\x6f\x8c\x1e\x8a\xdb\xaa\xc4\xb9\x1a\xfd\x18\x22\x8c\xbb\xd5\xdd\x80\x5a\xca\xbf\x0a\x1e\x29\x0c\xe5\xdd\xa0\x25\x1a\xdf\xb3\x7c\xb7\x14\xc1\x39\xb5\xa3\x24\x2d\x88\xc6\x44\x84\xa3\x76\x55\xcc\x8f\xcb\xec\xff\xa9\x7f\xbd\x14\xd6\x4d\x51\x2b\xf8\xf6\x30\x5f\x89\xc5\x09\x22\xde\x54\x16\x92\x15\x8f\xb5\x47\xfd\x53\x9f\x1e\x58\x77\xcc\x64\x94\x95\x16\x63\x32\xea\x2b\x68\x5c\xfa\x3f\x60\x20\x19\xdf\x2a\xb2\xc2\x5e\xd9\x6b\x68\x74\x5e\x9a\xe8\x9c\x94\x8d\xa1\x1a\xd8\xa8\x30\xdf\x8b\x00\xf2\xe6\x68\x19\x2d\xad\xf2\xc5\x62\x0d\x35\xc6\xe8\x1a\x28\x53\xf8\x41\xe3\x75\xa0\xd9\xfc\xa2\xd2\x96\xef\xce\x2a\xc3\x8d\x40\xb0\x30\xb5\x75\x60\xae\x6e\x83\x41\x33\x9b\x3d\x3c\x2d\x06\x11\x64\x12\x43\x19\x59\x86\x88\xfc\xa6\x18\xfc\x64\xc9\xe8\xf5\xf8\x31\x09\x7a\x05\x3a\xf1\x9d\x7d\xbd\x61\x21\x8d\x92\x67\x42\xc2\xe9\xa4\x2a\x79\xcc\x1b\x14\x89\x12\x72\x2d\x8c\xd5\xca\x79\x3a\x1a\xd7\x3b\x5f\x14\x1b\x41\x80\x9c\x2f\xc0\x53\x0b\x76\x30\xe8\x03\x90\xc6\xb3\x38\xc7\x18\x68\xda\xcc\x59\xbf\x46\x3f\xfc\x48\x90\x16\xbf\x67\xf9\xc9\xd5\x55\x3c\x1e\xde\x17\x15\x28\x13\xfe\x0b\x26\x4b\x65\xdc\xa1\xb2\xb3\x8e\x4b\x80\x9f\x8c\x97\x25\xac\x5b\x1d\x8d\x2e\x56\xbe\xc9\x64\x9f\xe5\x5c\x75\x83\xff\x23\xb0\x43\xd6\xf3\x76\x86\x28\xf1\xf0\x51\x63\x37\x82\x4a\x5a\x56\xb4\x09\x52\x0a\x6a\x6c\xb7\x7e\x4f\x5f\xc2\x0b\x9f\x68\x99\xe0\x0a\xb2\x2d\xb1\x0d\x18\x2f\x09\xb8\x1e\x94\xf3\xad\x56\x8a\x0b\x81\x24\x4d\xf3\xf1\x85\x5c\x6e\xf2\x22\xa4\x1a\x51\xb6\x2a\x46\x49\xbb\x82\x69\x0a\xb6\x5f\xac\xac\x0d\x81\xd6\xfe\x02\x60\x11\x70\xa8\xdb\x62\xcb\xc5\xec\x99\x55\xd7\x71\x1a\x1c\x39\x65\x6a\x9f\x6e\x1f\xb6\xbc\x18\x3d\x9b\xea\x15\x03\x53\x1f\x17\x36\x27\x68\xbb\x84\x1f\x9d\x21\xf1\x3a\x2c\x99\x1e\x55\xdf\xf7\xf2\xb3\x36\xe2\x9e\xb2\x95\x07\x63\x8b\xdc\xad\x7b\xb3\x1c\x69\xe9\x09\x20\x7e\xba\xbc\xc6\x53\xff"}, +{{0x6a,0xcd,0x93,0x9e,0x42,0x22,0x26,0xcc,0x54,0x43,0xd4,0xaa,0xbf,0x58,0xc1,0x1a,0xf6,0x50,0xcb,0x40,0xb9,0x64,0x8b,0x4d,0xa3,0x8b,0x92,0x7b,0xff,0x9a,0x58,0xdb,},{0x4c,0x0b,0x91,0x75,0x6b,0x9e,0x20,0x6f,0x78,0x63,0xb1,0x55,0xff,0xc5,0x50,0x9b,0xb5,0x24,0x77,0xce,0xac,0xd0,0x1c,0xa0,0x11,0x43,0x51,0x53,0x67,0x86,0x46,0xcc,},{0x79,0x99,0x58,0x77,0xed,0x24,0xc7,0x91,0x68,0x4f,0x29,0x84,0xbd,0xf9,0x60,0x9c,0x3f,0x7b,0x57,0x6c,0x57,0xd1,0x62,0xee,0x62,0x2d,0x4c,0xe8,0xf3,0x6d,0x9c,0x55,0x73,0x16,0x9d,0x88,0x01,0x21,0x6f,0x1c,0x46,0xff,0xe2,0xf6,0xe2,0xc0,0x90,0x48,0xe4,0x7d,0x4b,0xeb,0x99,0x7e,0x9a,0xbc,0x4a,0xbb,0x12,0x9f,0x9b,0x79,0x69,0x0a,},"\x82\x50\xd5\x31\xcf\x2b\x66\xaa\xc2\xb3\x78\xd5\x4b\xc5\x7f\xd3\x29\xad\x5a\x41\x4a\x59\x92\x55\x89\x8b\x3c\x3b\x45\xbf\x9c\x0d\x2c\x77\x54\x75\x66\xb6\x60\xee\xcc\x76\xa6\x95\xa2\xd6\x08\xab\xf1\x1a\x5f\x6d\xb3\xe6\x07\xfd\x5a\x21\x71\x4b\x0f\xad\x5d\x81\x4c\x01\x5e\xbf\x48\xbb\x73\xad\x75\xda\x9c\x03\xc4\xaf\x54\x89\xe7\x82\xb6\xbf\x79\x08\xa1\xbd\x52\x8d\x7c\xe7\x88\xa1\x8b\xa3\x52\x8e\x35\x37\xaa\x7b\xbf\x75\xf6\x52\x4b\xbd\x19\xa5\x30\x4b\xa2\xa4\xa3\xee\x58\xc4\x1f\xec\x31\x32\xee\x65\x01\x64\x12\x15\xef\xf7\x46\xd7\x80\x0c\x4d\x33\xf5\x2b\xe8\x35\x7e\x0e\xe7\x58\x04\x1d\x91\xcf\xe4\x3c\x60\xc3\xce\xdc\x09\xb0\xd4\x6d\x4c\xfb\x9a\xe2\xa0\x23\x9b\x6f\x33\xc6\x94\x1c\xff\x35\x37\x26\x70\xee\xf5\xc8\x85\x9a\xb6\x5b\x6e\x9f\x7e\xbc\xe3\x2f\xa1\x5a\x9a\x47\x7a\xec\xdc\x96\x83\xa1\xe3\x3a\x1e\xdc\xdc\x90\xd4\x20\xa3\x1e\x78\xc1\x53\xd2\x60\x20\x87\x1d\xaa\x4f\xff\x28\xac\xc3\xf1\x1a\x72\x06\x78\x88\x06\xb6\xfa\x02\x34\x68\xea\x5a\x3d\x18\x6d\x10\xf0\xdd\x56\x77\x96\x66\x3b\xa3\x7c\x83\x2f\xe7\x5a\xae\x7d\xcc\xeb\xf3\x19\xf9\x36\x00\xc4\x6a\x22\xf5\x72\x23\x81\x2d\xdd\x0a\x68\xd7\x6b\xaf\x5e\x27\xa9\xfc\x8b\xd6\x8c\xc1\x0b\x5b\x51\x51\xd6\x2b\x41\xf9\x34\x8e\x21\xb7\x15\x35\x2f\x26\x30\xb6\x17\xf8\x13\xb0\xc2\x89\x96\x28\x59\x04\xcf\x29\x4e\x9c\x28\x56\xb1\x7b\xa3\x5f\x9a\x82\x19\x8b\x82\x14\xa0\x35\xe2\x89\x6d\x65\x68\xbe\x42\x39\x2c\xce\xf3\x2c\xd4\xeb\xfe\xeb\xf1\x2b\xe0\x12\x52\x06\xbb\xe8\x93\x36\xd3\xe7\x62\x99\x1d\xfa\xb6\x8f\xc9\x9d\xc1\x64\x9b\x89\x13\x83\xdb\x31\xfa\xb6\x49\xe6\x28\x82\x3f\x45\x98\xcb\x63\x6a\x38\xfe\x1d\xf7\x3e\x68\xd7\x42\x5f\xc5\xd2\xeb\x55\xa0\xfd\x1b\xc9\xf5\xce\xaa\xbd\x6d\xd4\x1f\x23\xe4\xf0\x86\xc6\x92\x63\x3d\xc3\xc4\x61\x9a\x97\xab\x0e\xad\xa1\x71\xf8\x4a\xdf\x20\xec\xc8\xec\xd4\x7c\x51\xcc\xa3\xe5\x9d\xd8\x09\xb0\xae\xaa\x73\x0d\xf9\x4b\xe3\xba\xcf\xd8\xee\x88\x8b\xba\x9d\x57\x08\x50\x65\x2c\xd4\xd5\xe6\xc5\x52\xa5\x7e\x9f\x48\xa2\xb0\x6a\xac\xdc\x70\x8d\x84\xa3\x76\xfb\xc6\xc9\x4b\xa6\xbf\x64\xa5\xf0\x18\x80\x0a\x7c\xc8\x51\x24\x5a\xed\xb2\x03\x78\xb3\x29\xac\xeb\xb2\x97\x7c\x13\x98\x08\x2b\x3a\x0e\x5e\x2a\x9c\x24\x84\xfa\x30\x1d\x30\x37\xa8\x22\x4d\xdc\xc0\x95\xb1\xdb\xd8\xa2\x31\x5b\x55\xbf\x33\x18\xc2\x78\x10\xef\xc3\xd8\xe2\x5f\xa7\xa8\x78\x9b\x73\xa4\xf5\x50\x59\x08\x0b\x08\xab\xb3\x69\x9b\x7b\x86\x26\xcb\x2a\x78\x0d\x97\xcc\x1c\xa8\x03\x28\x51\xba\xf4\xed\x8b\x64\xfc\x43\x30\x86\x5f\x84\xcc\xb1\x2a\x3d\xae"}, +{{0x4d,0xef,0xf6,0x47,0xcb,0xc4,0x5e,0xca,0xed,0xc3,0xf7,0xdd,0xf2,0x2c,0x16,0x7a,0xf2,0x4e,0x3d,0x63,0xda,0x22,0xb0,0xe6,0xa5,0xb8,0x43,0x9c,0x0f,0x3b,0x19,0x34,},{0x0c,0x27,0xc9,0xd7,0x7a,0xc8,0xc7,0x25,0xbb,0x06,0x63,0x93,0x3a,0xb3,0x0d,0x1a,0xad,0x09,0xcb,0xcf,0x2c,0xd7,0x11,0x6c,0x60,0x85,0xa8,0x49,0x9f,0x70,0x14,0x02,},{0xdd,0x54,0x89,0xfd,0xe4,0xba,0x87,0xd1,0x17,0x3d,0x4c,0xee,0x06,0x82,0xaf,0xdd,0x4b,0xad,0x80,0xdd,0x77,0x0e,0xa7,0xd0,0xdc,0xeb,0xaf,0x21,0xac,0xc6,0x1d,0xd6,0x32,0x4a,0xca,0x29,0x5e,0xd0,0xe2,0x3a,0x91,0x5e,0xcf,0xda,0xd5,0x0f,0x17,0x5e,0xbc,0x51,0x6f,0x1b,0xe5,0xb6,0xd8,0x7d,0x90,0xbb,0xe3,0x86,0x22,0x49,0x53,0x02,},"\xd6\x20\x1e\xbc\x21\xce\xc1\xe9\xbc\x28\xf9\x57\xc9\xd0\x29\xcc\x38\xf9\xe8\x5e\x06\xdf\xc9\x0b\xf2\x97\xe6\x1f\x2b\x73\xb4\x07\xd9\x82\xa6\x6b\x91\xe9\x4a\x24\xe9\x1d\x06\xab\x8a\x5c\x07\x9d\x0f\x69\xbe\x57\x88\xea\x8f\xea\xce\xbd\x91\x72\x91\x19\x22\x33\x86\x2e\x6a\xcd\xa1\xe8\xcf\x9a\x48\xbf\xfb\x54\x91\xdd\x65\xaf\x54\x1b\x6c\x72\xaf\x68\x1a\x81\x82\x3d\x98\xa0\xab\xee\xb6\xba\x9f\x95\x46\x5b\x84\x11\xf9\x9e\x11\x9c\xd2\x84\x79\xda\x98\x42\x59\xbd\xf8\x6c\x9f\xef\x3c\xca\x34\xe2\x24\x69\x1f\x18\x3c\xf0\x95\x03\x77\x27\xda\x9c\xad\x29\xf2\x42\xf8\x3e\xb4\xf7\x36\xe2\x7f\xdf\x67\x01\x8d\x71\x1b\x74\xc4\x5b\x29\x55\xa6\xa7\x6e\xc1\x53\x30\xdf\x5b\xad\x80\x30\xc6\xb3\xa8\x8d\x72\xf2\x84\x47\x65\x2a\xc8\x90\x2b\x5b\x76\xcb\xf6\xb9\x45\xce\xab\xfe\xc0\x4a\x9b\x8c\xb3\x0f\x43\xd9\xeb\x77\x3e\x67\x05\x59\x4f\x0d\xe1\xb7\x0f\x1a\x20\xc9\x9f\xc4\xb1\x22\x1f\x8c\x81\xb0\xbc\x30\xda\x12\xcd\x5d\xea\x8f\x4d\x90\xf1\x3a\x81\x1a\x2c\xc1\x1a\x96\x84\x6a\xaf\xb4\xc4\x2a\x00\xe9\xae\x7d\xa2\x56\xa0\xd2\x2b\x19\x8a\xfc\x25\xcc\x10\x41\xd2\x4e\x05\x6c\xf3\x87\x60\x1d\x7b\xf7\xeb\x31\x82\xd6\x05\xfe\x5e\x63\xb1\x8d\x53\x1a\x5f\x84\xe5\xdb\xd0\x18\x4a\x76\xc6\xc4\x67\xa8\x26\x3a\x98\xb5\xc0\x05\xfc\xb2\xaa\xf9\x89\xf5\xcb\xd0\xa9\xd9\x03\xfc\xfc\x60\x9d\x6e\x57\xd9\xc4\x39\x02\x1c\xea\x93\xe4\xc4\xe9\x91\xf1\x93\xca\xf3\x24\x37\x70\xb3\x25\x78\x74\x80\x76\xb7\xf4\xcb\x97\xf1\x7c\x17\xa7\x9b\x82\x25\x3c\x24\x23\xdb\x69\x8c\xd0\xa3\x3a\xb3\x3b\xb0\x9b\x0b\x08\xcb\x8c\xea\xdc\xa1\xe2\x9c\x5d\xe2\xfc\x12\xb2\x40\x7b\x6c\xc5\xaf\x5a\xe9\x76\xdd\x3e\xc6\x30\xd8\x33\x9b\x7d\xd1\x1f\xa3\x4c\xaa\xc1\x50\xc7\xc4\x79\x1d\x8c\x42\x7b\x0a\xd9\x2e\x05\x29\x06\x7a\x88\xd5\x20\x11\xe1\xe0\xa1\x82\x99\xb9\x69\x89\x6f\x8b\x83\x60\xf7\x5c\x45\xc4\x96\xda\x47\xb0\x9b\x45\x0f\x98\x22\xbc\xbc\xd4\x3f\x42\x93\xc5\x16\x80\x2b\xf7\x47\xc4\xab\xee\xdf\xaa\x3e\x79\xcb\x91\x03\xd3\x77\x0f\x56\x07\xb7\x75\x16\xe5\xb1\xce\x0f\x64\xb6\xee\xc7\xbe\xc3\xc6\x47\xc0\x06\x95\x6d\xc5\x5b\x6c\x79\xf6\xaf\xb3\x9d\x1f\xc3\xec\xf1\x1b\x97\x4b\x44\xae\xdb\x72\xae\xd1\x31\x66\x35\x08\x3c\x21\x24\x50\x2e\x5c\x72\xd8\x6e\xca\xb6\xac\x90\x24\x3e\xb3\x9a\x6a\xa9\xcb\x94\x80\xda\x38\xe1\xed\xb8\xd2\x8f\xf9\x09\x24\xc0\x5d\x5d\x21\xaf\x5a\xf9\x59\x57\xb8\x02\x07\x81\x37\x87\x11\xa2\x9d\x09\x20\xac\xad\x8c\xcb\x39\xa3\x11\x69\x32\x78\xc9\x90\x0b\x47\x0d\xa2\xbd\x4c\x12\xa0\x1d\x73\x96\x26\x44\x01\x7b\x60\x34\x71\x3b\x2a"}, +{{0x5a,0x19,0xbf,0x6c,0x94,0x1f,0x39,0x4e,0x93,0xbd,0x36,0x25,0xfb,0x81,0xcd,0x9d,0xa8,0x1c,0x90,0x20,0xb1,0xc5,0x31,0x25,0x7a,0x7b,0x59,0x57,0xbb,0x07,0x92,0x11,},{0x20,0xe8,0x69,0x9d,0x08,0x7c,0xe5,0xe8,0x15,0x1d,0x28,0x05,0x3d,0xce,0x66,0xc2,0x3f,0x28,0x08,0x1f,0x35,0xbd,0x26,0x81,0x9b,0xbe,0x85,0xd3,0x8a,0x09,0xd7,0x02,},{0x2a,0x2f,0xd6,0x05,0x4e,0xf4,0xe7,0x9b,0x72,0x19,0x1a,0x0c,0xcb,0xd2,0xb1,0x8a,0xeb,0xab,0xe8,0xb9,0xa7,0x18,0x61,0xde,0xd9,0x8b,0x7c,0xdc,0xb6,0xa6,0x25,0x53,0x28,0xbc,0x1a,0xec,0xb0,0xc9,0x33,0x57,0x21,0xa9,0xa9,0x6e,0xe4,0xb5,0xb4,0x3f,0x90,0xd3,0x22,0xec,0xf8,0x35,0xf7,0x8b,0x26,0x4d,0xae,0x6e,0x38,0x7b,0xfb,0x04,},"\xf7\x21\xca\x3a\x32\xc1\xe8\x1c\x9c\x6f\x46\xd5\xe1\xfb\x50\xe7\xce\x2f\x4e\x70\x93\x33\xca\x2b\x55\x0d\x52\x13\xb6\x77\x3d\x67\x0c\xa5\x9a\x2b\x50\x86\xa4\x43\x84\x3a\xc5\x08\x13\xb2\x44\xc9\xc9\xfa\xc6\xd1\x19\x69\x89\x27\x81\x35\x12\xc8\x4f\xe3\x0a\x89\x55\x30\x10\x13\x8f\x91\xe8\x17\x6f\x5c\xf2\x57\x89\xd7\x28\x1d\xdb\x83\xa2\x46\x70\x5d\xcc\xb9\x99\xc4\xcd\x0a\xe2\x19\xc6\x45\xf6\xd7\x1d\x45\x1a\xe1\xf8\xd2\xf9\x89\x1a\xf8\xcc\xce\x03\xf4\x38\x55\x9f\xb8\x36\x67\xb8\x07\x7f\xbe\x43\x5a\x74\x4a\xf0\x19\xd6\xd1\x39\x9f\xd2\x13\x7f\x5a\xfb\x8e\xf3\xf4\x7b\xcf\x73\x5e\x7c\x9e\xd8\xa5\x4b\xa0\xc1\xc6\x56\xb6\x65\x0b\xb3\x0a\xdb\x1d\x57\xec\xd2\x07\x46\x39\x49\x42\x31\xa2\xe9\xe2\xf9\x85\xed\x84\x22\xee\x03\xcb\x3f\xd7\x38\xc7\x35\xa1\xb8\x28\x06\x04\x74\x60\xed\x84\xf7\x46\x8c\x3c\x64\xb3\x5d\xb0\x6b\xc5\x8d\xe4\xbb\xa4\x63\xe6\x38\xa9\x41\x33\xdf\x10\x6a\xc4\xf4\x70\x36\x1c\xcd\xe4\x41\x57\x29\x9d\x22\x5b\x17\x79\x88\x91\xba\xf5\x92\x19\x86\xa2\xba\xe3\x26\xdd\xa0\xb8\x96\x17\xc6\x77\xbd\x14\x08\xba\x27\x48\xba\xa6\x7c\x8a\x2c\x5a\x96\x9b\xc0\x0c\xb4\x0d\xbf\x49\x0e\x07\xe2\x2c\x91\x3a\xfd\xde\x63\x04\xa0\x7f\xc9\xe6\x08\x46\x99\x24\x56\xbf\xb0\x66\x3a\x09\xde\xf6\x8d\xef\x67\xa1\x6d\x29\xe9\x8c\x7b\x55\x35\x18\x48\xa8\xcf\x92\x31\x0c\x74\x63\xc4\x75\xf2\x49\xc6\xf7\x55\x7f\xd0\xd7\x55\xca\x88\xf8\x77\x84\x7f\xe0\x76\x57\x56\xac\x34\xa2\x3f\x78\x40\xd9\x5c\x3d\x29\x4e\x66\x3b\xb1\x51\x8b\x75\x92\x7c\x41\x07\x57\xe0\xf5\xc0\x7c\x5a\x7f\xb2\x15\xdc\x72\x07\x43\x3e\xbf\x79\x1e\xdf\xce\xc9\x0e\x93\x0f\x8e\x3b\xa9\xdb\xbb\x98\x54\x13\xc2\x23\xbe\x87\x87\x3b\xd3\x23\x99\x75\x81\x80\x4d\x88\x96\xda\x38\x6a\x6e\x91\x20\x05\x0a\x0e\xae\xd3\x12\x40\xaa\x17\xc7\xb6\x69\x4c\x30\xcb\xcc\x3c\x69\x56\xa6\x82\x0f\xc9\xab\x21\x87\x55\x33\x96\x3d\xc3\xb0\xd8\x83\x58\x27\x12\x76\xc6\x05\x65\x28\x91\x0d\xd9\x89\xae\x0c\x33\x0d\x17\x98\xf7\xd8\xe7\xd1\x18\x4b\x84\xa8\x14\x34\x32\x5b\x8c\x30\x2e\xdf\x60\x1d\xc5\xe6\xf8\x47\xfb\xac\xbd\xee\xff\x78\xc6\x62\x1d\x1d\xaf\xdc\x23\x9b\x18\xb8\xc1\xaf\xdc\xb4\xb9\xda\xbd\x5d\x3a\x92\xa9\x32\xea\x15\x99\x54\x6e\x62\x5f\x96\xd6\xec\x6f\xb1\xcc\xcb\x76\xb4\x76\xb3\x30\xac\x59\x25\x9c\x63\x4f\xac\x9b\x3f\xa7\xde\x7a\xe7\x05\x37\x73\xb5\xbe\xfa\x00\x1b\x04\x92\x9f\x74\xb7\x12\x41\xe1\xb2\x57\x69\x6d\x65\xa2\x6c\x1b\x4a\xc8\x6b\x7b\x1f\xbd\x69\x57\xfb\x9b\x95\x08\x4c\xe7\xd7\x00\x90\xf5\x5d\x44\x53\x46\x94\x30\x5e\x91\x76\x9a\x82\x94\x13\x04"}, +{{0xb5,0x06,0xc0,0x1d,0x69,0x74,0x6e,0xb4,0xbc,0x63,0x58,0x72,0x0e,0x43,0x8a,0xd3,0x30,0xc8,0x8b,0x60,0x5a,0xad,0x65,0x2f,0x47,0x99,0x57,0x3a,0xb0,0xa1,0xaa,0xf9,},{0x7a,0xc8,0xb6,0x88,0x63,0xbd,0x69,0x15,0x15,0x83,0x78,0x9d,0x86,0x4a,0x73,0x57,0xe3,0xa0,0x45,0xfa,0x86,0x52,0x2a,0x9d,0xaa,0x6e,0x26,0xfb,0x79,0xed,0x6d,0x23,},{0x17,0xa1,0x9d,0x26,0x91,0xb7,0xb0,0x46,0xd7,0xb1,0x96,0x69,0xad,0x73,0x14,0x0d,0xb9,0x2f,0x0c,0x97,0x8c,0x7f,0x61,0xbc,0x38,0x67,0xd9,0x2c,0xa9,0xd4,0x75,0x80,0xa0,0x38,0x0b,0x59,0x01,0xba,0xd8,0x2a,0xf4,0x5f,0x67,0x6f,0x74,0x28,0x73,0x01,0x98,0x0f,0x71,0x87,0x1a,0x42,0x26,0x1d,0xbe,0x08,0x02,0x95,0x03,0x36,0xe6,0x0b,},"\xf7\xfc\x18\x06\x6e\xd0\x4b\x30\xe6\x33\xd9\x86\x5d\xa3\x21\x4b\xec\xa6\x0b\xd7\x96\x01\x9c\xd7\xec\xc9\x18\x66\xf9\xef\x24\x46\xc1\xfa\xb0\x6d\x86\x51\xbe\x7f\x10\x1a\xec\x7b\xb8\x4e\xe2\x1e\x71\xad\x02\x02\x15\xfc\xfb\x36\xf2\xd1\x1e\x45\x79\xac\x39\xf8\xe2\xb1\x29\x0e\x38\x96\xd5\x22\xbc\xf5\x13\xaa\xa0\x67\x71\xf8\x6e\xe2\x28\xcf\xf3\xa2\x0a\x1f\x10\xc5\x64\x33\x95\x89\xbb\xa9\x60\x53\x44\xc0\xa6\xe6\x82\xad\x5b\xa4\x0d\x10\x41\x94\x1b\xc4\x6f\x98\xb9\xd0\x9c\xa1\x7f\x8f\x04\x4e\x98\x3b\x8a\x49\x08\x93\x3d\xf2\x26\x3c\xf7\x88\x11\xc2\x4c\x8f\x48\x14\x35\x4f\x6f\x4c\x68\xb7\xee\x7b\x78\x30\x82\x93\xbf\x78\xfd\x0f\xf1\x22\xf0\x95\xc1\x4a\x73\xa5\x97\x97\x17\x2a\xe0\x5c\xfc\xec\x19\x56\x3e\xb1\x8d\x2b\xc5\x30\x0e\xd4\xbf\x6b\xdc\x44\x3e\xa9\xb8\xbc\x1c\xbe\xde\x94\xca\xb9\x05\xed\xa5\xa6\xa9\x31\x59\x7d\xe4\x02\x14\x6f\xac\x9c\xf8\xcd\x6a\x8d\x10\x46\x69\xf9\x13\xfa\x83\x40\x01\xca\x4d\x09\x0f\xb7\x94\x9d\x31\x09\xa6\x3c\x05\x49\xb0\x3f\x15\x1b\x71\x17\xc4\xf4\x69\x74\xba\x59\xc6\x82\x96\xed\xfd\xde\x76\x92\xee\x43\x2a\xce\xf7\x61\x06\x47\xe0\x95\x78\x65\xe6\x2c\x1a\x0c\xf0\x56\x59\x82\x3a\x55\x45\x2d\xd5\xe4\x71\xb3\x1c\x5a\x49\xab\x05\xb5\xaa\xfd\x5a\x0e\x53\x0e\x89\x6b\x58\xcc\x52\x2e\xcf\x19\xe5\x2e\xc8\x2f\xa1\x47\xf9\xe3\x85\x17\x4c\x7e\xc3\x3d\x1d\x9b\x86\x93\x4a\xeb\x4f\x6c\x57\x00\xf7\xd5\xeb\x33\xff\x73\xc9\xfc\x6a\xa4\x7d\xf5\x1e\x09\x22\x9e\x6a\xe8\x94\xe8\x6c\x81\x8b\xef\x06\x5f\x82\x59\x71\xa4\xcb\x90\xad\xfe\xfb\x31\xeb\xd9\xd1\xb7\x94\x22\xdc\x98\x68\xf9\xf7\x4e\x7a\x32\xcd\x40\x71\xef\xb6\x9b\x27\x23\x3e\x6e\x5c\x60\xde\xdc\xd5\x32\x1c\x03\x0a\x46\xcd\x26\xf5\x60\x2c\xac\x74\x7e\xe4\xb5\x22\xd8\x57\xa3\x32\x1a\x03\xf4\x03\xa6\x00\x62\x50\x40\x63\x61\xe4\x88\x15\xaf\xba\x77\xce\x08\x90\x34\x41\x84\x5b\xa8\x72\x25\xd8\xb2\x40\x46\x74\x5d\x40\x65\x64\x5a\x1b\x98\x41\x0c\xac\x48\xd1\x37\xcb\xbb\x8a\xb1\xeb\xa5\x0d\xa9\xc2\x31\xe9\xac\xf3\x22\xa6\xdb\xec\x0e\xf4\x16\xa4\x46\xc3\xb6\x10\xd9\x35\x69\xfd\xf4\x5a\xa6\xcd\xc1\xb6\x40\xd8\xf3\x01\xd7\x86\x93\xb2\x82\x6c\xc6\xed\x46\x85\x68\xad\x9a\x0f\x94\xaa\x9b\x9f\xb9\x2f\x7e\x78\xd4\x84\xfd\xf5\xd8\xd4\x5c\x99\x1e\x28\x07\x4d\xcd\xd6\x80\xd3\xb1\xf1\x89\xef\x6b\xdc\x32\x0e\xe6\xe6\x4d\xd1\xf8\x0d\x92\x64\xd8\x30\x42\xd2\xc4\x3d\x83\x58\x1e\xf0\x39\x4b\x1b\x5d\x1f\x69\xf3\xbb\xbf\x04\xb7\xc8\x08\xba\x34\xc1\x58\x0f\x16\xf7\x65\x37\xb6\xa7\xeb\xd0\xa1\x90\x8b\xe9\x49\x4d\x3f\xca\xa9\x87\x1d\xb1\x57\x50"}, +{{0xe1,0xcc,0xb8,0x0a,0x26,0x2f,0xf8,0xaf,0x1e,0xda,0x07,0x5c,0x97,0x2c,0x8e,0x94,0x1e,0x77,0xce,0xf5,0x7b,0xdb,0x0a,0x82,0x57,0x2c,0x28,0x20,0x0b,0x49,0x3c,0xa3,},{0x3d,0x37,0xe2,0xa5,0x02,0x7e,0xff,0xde,0xe0,0x7f,0xa5,0x11,0xe4,0x23,0xb2,0xbc,0x56,0xed,0xce,0xa0,0x75,0xb4,0x16,0x49,0x76,0x67,0x25,0xc6,0xb3,0x0a,0x10,0xf4,},{0xfd,0xa3,0x4b,0x65,0x2b,0x79,0x74,0x6f,0x89,0x7e,0x22,0x2d,0x37,0xb7,0x7a,0xa2,0x50,0xd0,0x2c,0x52,0x7c,0x48,0x33,0xdf,0x80,0xea,0x41,0xd5,0x21,0x89,0xd5,0x07,0x00,0xe1,0x28,0xb7,0x8e,0xe8,0x14,0x9c,0x9b,0x19,0xf3,0xab,0xf7,0x55,0xac,0xef,0x53,0x48,0xf5,0xfb,0xaf,0x1c,0xeb,0x41,0xc0,0x38,0x90,0x6a,0xc5,0x94,0x60,0x01,},"\xcf\xdc\x54\x97\xb0\x23\xaf\xa6\x2a\x7f\xe5\x92\xca\xa9\x2b\x87\x5c\x77\x05\x74\x78\x34\x00\x2f\x77\x84\xff\x16\x61\x89\x39\x88\x15\xd4\xe8\xa7\xa0\x03\x8e\x1f\xda\xdd\xde\xba\x51\x05\x73\x27\xad\x19\x60\xe8\x59\xce\xe5\x65\x26\xbb\xb4\x12\x7b\x6a\x5f\x90\xd0\x4d\x08\xb1\x5e\xee\x66\xc9\xcc\xf8\x8b\x4b\x7d\x1e\xe9\xd3\xb8\xb8\xc6\xf4\x2d\xb3\xc3\x4e\x59\x04\x8a\x15\xc6\x04\x1f\x14\x2c\x40\x79\x36\x8b\x7b\x11\xe2\x99\x70\x11\x8b\x99\xe5\x67\x0a\xe3\x1f\xcc\xfd\xff\x13\x99\x14\x2e\xe0\x6b\x2e\x3e\x2b\x3c\x97\x07\xdd\x64\x11\x97\x86\xe2\xfa\xb4\x7e\x0b\xad\x2c\xc8\xb5\x58\xd9\x63\xbb\x48\xa4\x9a\xd2\xc6\x37\xdd\x35\xb2\x5d\xb5\x4b\xc5\xa2\x63\x02\x22\xfa\x2a\xce\xce\x9c\xe1\x2a\xb0\x81\x30\x77\xf7\x65\x9f\x50\x74\x42\x9c\xa6\xb4\x94\x33\x10\x32\xae\x79\x2a\x59\x9c\x42\x5e\xe2\x97\x45\x1d\xcf\x5e\xe1\x95\x29\x03\x12\x74\x2e\x64\x7a\x77\x95\xb8\x4d\xcc\x66\x4d\xda\xe2\xa1\xfb\xf8\xc4\x54\x8a\x37\xfd\x82\xd8\x10\xe2\x14\x5f\x01\xdf\x1a\x6d\x3b\xcc\x42\xa9\x1a\x10\x76\x8e\x09\x1f\x3d\x69\x32\x9a\x7b\xad\x6c\x07\x2c\xac\x6d\x89\xaf\xa3\x1c\x02\x90\x56\xd6\xb6\x22\x12\x16\x5c\xeb\xcd\x49\xac\x67\x2e\x38\x30\x26\x7a\xf9\xf2\x8e\xa3\x19\xbd\x04\x2f\x6c\x59\xde\x47\x01\xe5\x82\x48\x73\x6c\x8d\x97\x6a\xcf\x93\xb9\x9d\x2f\x46\x47\xa5\x47\xd3\x92\x44\x7a\x48\xda\xc1\x11\x81\xe1\x6b\x15\x01\xa9\x4c\x93\x16\xe5\xa6\x7c\x99\x0b\x35\x81\x0b\x4c\xda\x04\x73\xa6\xa4\xe5\x76\x14\x21\x58\x68\xe2\xe0\x02\xc6\x05\x8b\x42\xe4\xee\xec\x84\x13\x9d\xc1\x9e\xdf\x5f\x80\xae\xef\xfa\x4f\x5b\x07\xe8\xfd\x23\x13\x9e\xdd\xa3\x18\x99\xeb\xe6\xfe\xe7\x86\x43\xce\x68\x6b\x29\x63\xa3\x20\x72\xbd\x3b\x3b\xba\x68\x48\x5a\x05\xc2\xcc\x04\x56\xc3\xda\x50\xc7\xc8\xc6\x51\xa3\x06\x6d\x13\xa3\x66\x0b\xd4\x7a\xb6\xdf\xec\x49\xe0\x15\x57\xa6\x74\x28\x96\xaa\x4b\xc6\x36\x3a\x79\x7d\xba\xd1\xa4\x09\xcd\x4a\x50\x91\x1e\x70\xea\x00\x7a\xf8\xe9\xb1\xbb\x7e\x3a\xb5\x62\x15\xa5\x75\xc9\x0f\x73\x9c\x2d\x48\xb3\xb3\x46\x94\xb5\xac\xdf\x07\x98\x0a\xe5\x28\xde\x06\x21\xed\xfa\xc8\xb8\xfa\x84\x95\x4d\x56\xdb\xb4\xd0\x30\x82\xb9\x84\xf1\x3e\x5d\xbe\x9c\x71\x12\xff\x97\x16\xf5\x50\x53\x06\x46\x62\xce\x0f\xb8\x1e\xa3\x5f\x98\xfd\x2c\xd5\x11\x37\xa4\x6f\x64\xe0\xc1\xca\xf4\x4e\x54\x07\xdc\x96\x17\x60\xb2\x59\x7f\x7f\x92\x00\x61\x7d\x47\x13\x40\xcf\x15\x17\x6c\x3d\xa8\x80\xfe\x4e\x0e\x93\xa7\x2f\xb9\x49\x26\xfa\xed\x86\x5d\xfd\xc7\x72\xe1\x85\x29\x2c\x1e\x36\xb1\x21\x17\x81\xc3\xe9\x38\xe3\xd4\xf2\x4e\x29\xaf\x51\x7a\x37\x96\x83"}, +{{0x4f,0xc5,0x12,0xef,0xd8,0x6e,0x3a,0x63,0xb3,0x95,0xea,0xff,0x1b,0xa0,0x11,0xe1,0x59,0x0f,0xb9,0x32,0x6a,0xd3,0xff,0xed,0xe7,0x87,0x6d,0xcc,0x3e,0x9f,0xab,0xdc,},{0x26,0xc2,0xa2,0x2f,0x9b,0xfa,0xd9,0x06,0x06,0xdc,0x61,0x3f,0xf1,0x07,0x02,0x1f,0xcd,0xdb,0xec,0x72,0x37,0x06,0x66,0x60,0xb4,0x88,0x96,0x43,0x49,0xe0,0xc8,0x28,},{0x82,0xc8,0x24,0xa7,0xd1,0x13,0x9e,0xc7,0x3a,0xe1,0xd0,0x23,0xad,0xf6,0x28,0x11,0x44,0x1e,0x96,0x82,0x87,0xf1,0xa5,0x80,0xb8,0x59,0xcd,0x66,0xcb,0x33,0xb5,0x8e,0x40,0x9b,0xde,0xb2,0xa8,0x74,0xbf,0x4c,0x23,0x61,0x0b,0xd4,0x4f,0x69,0x31,0x47,0xf2,0xf7,0xc2,0x9d,0x44,0x3a,0x90,0x50,0x84,0xf3,0xea,0xaf,0xd9,0x33,0x0e,0x04,},"\x07\xcd\x1e\x9b\xfa\x38\xa7\xd8\x85\x34\x65\xa9\x3c\x77\xab\x4f\x30\xfa\xf9\x14\xe4\x8b\xc4\x76\x3b\xa0\x7b\xf9\x6b\xa8\x08\xc1\xf5\x9a\xd4\xce\x9b\x7d\x92\x1f\xbb\xc7\x79\x65\x9d\x7c\xa3\x6e\xdb\x7d\xd3\xac\xf7\xa2\x94\x52\xa8\x45\xb4\x9f\xb6\x54\x3a\x3b\x6c\x5c\x1c\x29\x3a\xff\x61\x84\x85\xa1\x0e\xea\x60\xee\x96\x49\xac\x9d\x48\x1e\x69\x49\x96\x7d\x39\x38\xb5\x2f\xe0\x9c\x36\xb9\xad\xe0\x75\x81\xdb\x4e\xb5\x42\xa9\x7f\x5a\xc8\xac\x73\xd3\xee\xa1\x84\x72\x25\x56\x76\x0c\xf4\x83\x09\x05\x64\x55\x30\x61\xb9\x0a\x0b\x6d\x2d\xff\x47\x07\xbe\x76\x39\x37\xa1\x05\x94\xa8\x2b\x76\x6b\xb2\xcf\x6d\xaa\x52\xfa\x8d\x7b\x48\xf3\x21\x27\xc4\x31\xad\x9a\xae\xd3\xbf\xde\xb9\x9a\xd4\x21\x18\xa1\xb4\xde\x7b\x99\x21\x34\xed\x9c\xda\xd0\xb5\x29\x6d\x19\x7a\x48\x5e\x49\x3e\xcf\xec\xa3\x65\x3a\xd2\xce\x0f\x92\x41\xaa\xbc\x09\x6d\x7c\x4b\xa6\x03\xba\x7d\xdd\x07\xa8\xb2\x57\xfe\x52\x32\x76\x41\x70\x73\xa6\x5f\xa4\x43\x42\x56\xfd\x1f\x23\x9e\xc1\xde\x5d\xa1\xa0\xa8\xc5\xe6\x86\xee\x14\xd9\xdf\xa4\x38\xc5\x3b\x99\xc9\x54\xaf\xab\x2f\x79\xe6\x0b\x71\x26\xf2\xcb\x58\xa2\x6e\x29\x0d\xa1\xdc\xcf\xc3\x01\xf2\x39\x74\x8e\xde\x7b\xcf\x1b\xb7\xcc\xb4\x72\x0e\x69\x2f\x57\xe5\x3e\x6f\x59\x07\x53\x99\xe1\x08\x0a\xc8\xaa\x9a\x61\xa5\x68\xc4\xc5\x69\xd3\x6e\x76\xa2\xd7\x27\x1f\x2c\x44\xde\x4e\x36\x3a\x8c\x91\x6a\x4e\x44\x6b\x02\x7b\x64\x39\x2e\x90\xce\xab\xf6\xb6\x07\x1b\xc4\x7a\x13\x79\xb6\xaa\x63\x44\x76\x3b\x2a\x0e\x7f\xf7\xc4\xa2\x7b\xff\x31\x06\x72\x1c\x25\x3e\x4c\x1d\x67\xc3\x7f\xa3\xd7\xc1\xec\xd0\x55\xb8\xe9\x29\xd5\x2a\x8e\x45\xed\x89\xfb\x18\x0f\x74\xb5\x52\xfe\x06\xf0\x66\xc7\xe4\x31\x8c\xa2\xf9\x15\x94\x6e\x83\x20\xd5\x80\x65\x61\x47\x2f\xb8\xff\x7f\xa8\x07\x2d\x8e\x6f\xd1\xce\x63\xcf\x87\x38\x2f\x7b\x94\x04\x54\x0c\x1d\x40\x6c\x70\xb2\x26\x85\x36\x77\x09\x26\x45\xce\x99\x69\x22\xe7\x34\x5d\xc0\x7f\xb7\x33\x9f\x9a\x54\xff\x07\x35\x2d\xd2\xb9\x93\x06\x3c\x2c\x83\xd1\x28\x1a\x4f\xd1\x78\xe5\xa5\xf8\x0a\x5b\x33\xc2\x29\xd0\x57\x83\x67\xd4\x41\x92\xe9\xa4\xd2\x1e\x97\x34\xd3\xbd\xa0\x83\xb7\x0f\x47\x10\x3f\xd1\x25\x17\x70\x21\xdf\x3e\x53\xd7\x99\x86\xef\xea\x2d\xc0\x4f\x02\xc0\xac\x27\x87\x88\x31\x9e\xf3\xa9\x13\x2e\x62\x32\xea\x6d\xb3\x9c\xa5\x87\x08\x55\xf9\x59\x2f\xff\x6c\x20\x9a\xd2\xf1\xc2\x9d\xd1\x68\x55\x28\x98\x97\x9e\xcf\xf8\xc8\x11\x27\x24\x8f\x83\x10\x51\x53\x00\x65\x61\x29\xd9\xb7\xac\xbb\x7e\xd1\xe4\x6b\xc9\x8c\x04\xd1\xa3\x5b\x18\x91\x37\x38\xe9\xdd\xe4\xd2\xb0\x65\xf4\x18\x42\x42\xd8"}, +{{0x0b,0x7d,0xfa,0xd0,0x5b,0xa6,0x65,0x11,0x1e,0x16,0x81,0xbd,0xc0,0xbc,0x8b,0xa9,0x73,0x76,0x7c,0xb8,0x58,0x77,0x02,0x0a,0x2d,0xbf,0x91,0x83,0x25,0x57,0x1d,0x9f,},{0x95,0x05,0xd9,0xe8,0x6d,0xce,0xf5,0x6c,0x9d,0xb7,0x6f,0x28,0x62,0xb9,0x0e,0x1f,0x27,0x73,0x20,0x2f,0x17,0x50,0x40,0x5e,0x7e,0xe5,0xae,0xd0,0xfc,0x54,0xf8,0xb9,},{0x41,0x5a,0xdb,0xb2,0xf2,0xb9,0x84,0x05,0x77,0xfd,0x18,0x41,0xf9,0xaa,0xe2,0x52,0xaf,0xe8,0xf5,0xa7,0x22,0x36,0x01,0x7d,0x50,0xdb,0x22,0xd2,0x28,0xcd,0xee,0x9f,0x5b,0x3e,0x8f,0xe9,0xa1,0x7a,0x4d,0x4e,0x98,0xb7,0x34,0x13,0x81,0xe8,0xd8,0x62,0x5c,0xdc,0xea,0x95,0x6d,0x25,0x3b,0x74,0xe0,0x2d,0xac,0xb8,0x49,0x20,0xa0,0x09,},"\xc4\x3f\xd3\x4b\xb1\x42\x4c\xca\x4e\x4d\xfb\xa7\x5c\x28\xbe\x80\x18\x44\x44\x6c\xa0\x89\x02\x08\x85\xc7\x48\x38\x25\x47\x16\x4a\x9d\x4a\x7f\x95\x70\xd3\xd1\x71\xad\x69\x81\xab\x50\xee\xee\x08\xa4\xa6\xc6\x6d\x76\x99\xd2\x3e\xdb\xe1\xfa\xaf\x44\x66\x0c\x72\xf4\x55\x2d\x87\xd2\x65\xac\xe8\x79\x28\x23\x47\x4b\x90\xa5\xd7\xf7\x40\x1d\xeb\x93\x77\x62\x7f\x60\xb0\x36\xb3\x6e\x04\x4e\xb7\x6b\xf1\x32\xfd\xdf\xcc\x0e\xf5\x70\x4a\x63\x3d\x84\x5e\x96\x2b\x47\x51\x7f\x0b\xaa\x34\xd3\xd6\xe9\xa8\xb9\xf8\x16\x8b\xcd\xc8\x4c\x6d\x2b\x30\xc6\xf3\x43\xe7\x53\x57\xf7\xf2\xc0\x03\x9b\xd2\x54\xb2\x44\xd3\x6c\xd6\x16\x75\x58\x1f\xb8\x34\x57\x0e\xd4\x11\x3a\x78\xe6\x06\xf1\x45\xa1\x11\x99\x2c\x2c\x6b\x61\xc4\x26\x76\x28\xec\x87\xcd\x88\xc3\x6a\x3c\x84\x70\x6e\x44\xae\x96\xa9\x6e\x0c\x84\x80\x31\x85\x46\xd6\xea\x6a\x6d\xf1\x8a\x2b\x4f\x19\xf8\x36\x0c\xfb\xce\x4e\x9d\x1c\xf1\x01\x1f\xfe\xa5\x63\x3a\x66\x61\x9a\xa4\xa6\x5c\xf6\x9b\xe4\x45\x96\x17\x94\x5e\x43\x59\xa9\xd4\x32\x60\xca\x1a\x20\xf4\xed\x7c\x1a\xe5\xff\xff\x3b\xd9\x22\x94\xea\x70\xab\xba\xe0\x38\x5b\x09\x35\xcd\x1c\x0e\xb5\x18\x30\x29\xc5\x85\xa0\x29\x4b\x79\x99\xe3\x2e\xf7\xa2\x90\xfc\xb0\x95\x67\x5d\xc4\xf6\x01\xe8\xf2\xc9\x6f\x35\xb7\x34\x9a\x37\x05\x75\x09\xf4\xec\x70\xc9\xf5\x0f\x60\x11\xf1\xf5\xe6\xb0\x61\xc0\x91\xd1\x1c\x0e\xd5\xde\xc8\xec\xe8\x81\xaa\x34\x05\x08\xf6\x96\xd9\xe9\xcc\x72\x98\xe6\xbc\xcd\x7c\x21\x0e\x2c\xe0\xde\xd8\x35\x92\xa3\xcf\xa1\x3e\x80\x78\xfd\xb3\x25\x8b\x39\xf1\xd1\x1c\xdf\xe0\x96\x70\xc1\xe6\x0a\x39\x10\xa4\xff\xf5\x1c\x6c\x7f\x7d\x66\x24\xf4\xc9\x3d\xf8\x88\x8c\x52\x6f\x48\x4f\x9b\x13\xe0\xa7\xf6\x29\x64\x78\x39\x78\x68\x4e\x29\x26\x79\x80\x0e\xd5\xeb\x28\x0e\x28\x7c\x7e\x63\x9e\x85\xfa\xa5\x3f\xba\x2f\xa2\x04\x5c\xe2\x7d\x8f\xb3\x08\x36\x07\x26\x55\x0d\xf9\x75\x2d\xb3\x05\xf8\xf0\x66\x47\x97\x0d\x01\x46\x91\x99\x9a\xfa\x97\xb6\x19\x3f\xfc\xc6\xd5\x32\xf4\xfa\x69\xe1\x33\xa1\xd1\x0f\x30\x47\xfc\x00\x38\x1f\x49\x97\xbb\x84\xe5\xb6\xcd\x60\x28\xc6\x21\x32\xcf\xc0\x24\xbf\xeb\x98\x03\x01\xf2\x95\x12\xbb\xd1\x09\xd0\x89\xac\xe1\x82\xcf\x9c\x2f\xfa\xb1\xb1\x7e\xb0\x0b\x6e\xb4\x6a\xe1\x98\xda\x99\x3f\x5e\xfe\x7c\x1d\xc2\x2d\x25\x04\x7c\x1e\xe5\x24\x65\x17\xe7\xf5\x75\x8f\x99\x6a\xbd\x83\xf1\x3d\xa2\x2c\x13\xdd\x20\x5e\xe1\x91\xb5\x5a\xfd\x48\x31\xef\x07\x8b\xb6\xea\x07\x3a\x62\x5b\xc9\x7c\x81\x29\x61\x60\xbb\xf2\x55\x9b\x27\x5c\xc3\x7c\xcf\x01\xb9\x1f\xd8\x7d\x4d\x99\xa3\x67\xaa\x99\x78\xda\xdd\x06\x89\xf8\xa6"}, +{{0x78,0x18,0x8d,0xf8,0xc7,0x54,0x78,0x56,0x21,0xe2,0x7a,0xe5,0x8e,0x10,0x0d,0x50,0x80,0xe1,0x6e,0x0a,0x15,0xe2,0x77,0x05,0x1f,0x95,0xf0,0x80,0x90,0x0e,0xc0,0xd3,},{0xa1,0xbd,0xee,0xe9,0x8b,0x07,0x57,0xba,0x9c,0x2d,0x84,0x09,0xb8,0x74,0x24,0xe6,0x4e,0x42,0xf9,0x93,0x2a,0xcf,0xa9,0xbc,0x71,0xfb,0x3f,0x8c,0xa0,0xe1,0x1d,0x52,},{0xb9,0x41,0x14,0xed,0xa4,0x6c,0xcf,0xc2,0x2a,0x44,0x71,0xa6,0x4d,0x79,0x08,0x92,0xe5,0x9c,0x5d,0x50,0x56,0x18,0xeb,0x0e,0x70,0x13,0x92,0xc7,0x09,0x61,0x3e,0x2d,0x50,0x3a,0x5c,0x2b,0x66,0x60,0x1e,0x63,0x6a,0x3c,0x1c,0x7d,0x49,0xb1,0xac,0x79,0x8d,0x90,0x89,0xb0,0xf9,0xcc,0xd0,0x57,0x9b,0xb9,0x06,0x34,0xd0,0xbd,0x75,0x0e,},"\xcf\x70\xcc\xa5\x7f\xeb\x1b\xee\xfe\x98\x5a\xd5\xaf\x9d\x43\x48\xd3\xa4\x6a\x63\xde\x10\x75\x38\x1f\xb3\x63\x9a\x04\x4f\xd6\xe6\x09\x1f\x5d\xb9\xc9\x4d\x39\xbe\x0f\x13\xad\xe6\xd9\xa0\x74\xe6\x7b\xa7\x06\xb3\xa8\x80\x62\x95\xf6\xb6\x54\x86\x57\x28\xc5\x8c\xa6\xe9\x41\x9d\x5d\x04\x3f\x21\x10\x81\x4b\xbf\x36\xfc\x40\x70\xe4\xd9\x45\x49\x65\xc2\x51\x20\x2c\xa3\x95\xef\xe3\xfd\xbd\x54\x4f\xeb\x18\x7e\x34\xca\x3c\x80\x79\x51\x79\x55\x2f\xce\x9a\xa8\x04\x43\x0e\x5b\x6c\x86\x85\x34\x1e\x91\xd5\x88\x9f\xbf\x3f\x98\x19\x04\x62\x0f\xfe\x70\x13\xf5\x3b\x93\x9e\x17\x44\x3d\x61\x4e\x7e\x6b\xb5\x7a\xd6\x74\xf3\xb4\xb0\x01\x63\x05\x26\xcf\x73\x02\xa7\xd0\xaf\xe7\xdc\x24\xd6\xda\xde\xf6\xfe\xba\x3f\x96\x97\x3a\xa5\xb8\xd6\x27\x52\x62\xe4\x30\xa8\x2f\x67\x86\x96\x97\x1a\x8b\x60\xe3\x8d\x3b\x2b\xcc\x17\x0d\x5b\xc2\x03\x02\xa3\x9c\x59\x6d\x27\xfe\xe3\x9e\x5d\xa5\xb1\x0e\xa9\xf3\x82\x29\x9e\x19\x81\x97\x17\xa7\x18\xd3\x7d\x15\x5f\x13\x92\x31\x82\xb5\xb7\xa1\xc5\x4c\xa1\x09\xb2\x2c\xa8\xe8\xb2\x6c\xa5\xca\x3f\x3b\x90\x62\x21\x94\x61\xba\xce\x97\xe8\x90\xc9\x4e\x41\xca\x3d\x84\x58\x7f\xbd\xf6\xe2\x40\xc3\x5c\xca\xb7\x1d\x58\x47\x7d\x28\x16\x8e\x93\x37\x26\x86\xd4\x2a\xad\x32\x4a\x3f\x16\xaf\xe0\xe9\xb8\x9e\xe2\x0e\x48\x5f\xe6\xc8\x64\xb5\x01\x3b\xa8\x83\x99\xee\xaa\x15\x98\x35\xa8\xb2\xbb\x2f\x25\xf5\x79\xca\x3b\xae\x67\x5c\x63\xda\x1b\x50\xd9\x9d\x4e\xd9\x78\x69\x2e\x56\x00\x23\x3f\x38\xab\x7e\x7a\x5a\xe0\xfb\xf8\xc0\xb6\x9c\xc3\x8b\xd3\x0e\xab\xd9\x77\xef\xa0\x5e\xe2\xc8\x35\x14\x30\x2b\xd4\x0c\x4b\xdc\xe7\xa4\x11\x0a\xfb\xb6\x57\x9c\x62\x0e\x97\xf8\xcf\x2e\x9b\xab\x2d\xcc\x7c\x33\xf1\x96\xe5\x7f\xe7\x61\xa0\x50\x12\x28\x94\xb7\xa7\x5a\x92\x95\x31\x99\x6d\xda\xad\x78\xde\x1d\x4d\x92\x4c\xd9\x3a\x61\xdf\x22\x77\x76\xbc\x1c\x39\xfb\xb8\xde\x1c\x44\x38\x86\x8b\x6a\x3a\x2c\xd9\x4c\x07\xb2\x9e\x3f\x6b\x23\xcc\x7e\x0b\x63\x68\x90\x09\xd9\xd0\xba\xe1\x60\x6b\xaf\xc7\xa8\x08\xf2\xd2\xfa\x25\x62\xb8\xdc\x09\x38\x42\xc0\x1f\xdb\x84\x0d\xa4\x86\x0a\xce\xd3\xfc\x52\x5c\xa3\x34\xed\xcf\x65\x94\x8b\xc4\x16\xf9\x8c\x45\x0f\x00\x12\xa6\x10\x7d\xd7\xf8\xed\xe4\x0e\x1c\x48\xc9\xe8\xa5\x65\xa8\x10\xb9\xcf\xd2\x03\x56\xdb\x19\xf1\xdb\xde\x59\x89\x21\x33\x2e\x0d\x81\x3f\x0c\xb8\x76\x84\x37\x03\x88\x77\x2f\xf3\xcb\xfc\xbf\xa2\x99\xc1\x98\xc9\x7b\xfb\x96\x17\x76\x8a\x05\x16\x1f\x41\x69\xff\x5d\xe5\xd9\xf4\x00\x62\x09\x0f\xb8\x82\x98\x4d\x9d\x5c\x7a\xa7\x8e\xdd\xcb\x96\x34\xe4\x66\xb8\x85\x3d\x51\x2b\x4a\x54\x6d\x74\x23"}, +{{0x73,0xcb,0x02,0xb0,0xbf,0x26,0xa0,0x15,0xda,0x1d,0xc3,0x01,0xfc,0x12,0x5d,0x7e,0x6c,0x30,0xb6,0x3c,0x9e,0x6e,0xee,0x9e,0x06,0x5d,0x4e,0x84,0x71,0x32,0xc3,0x25,},{0xac,0x9e,0x3d,0xd2,0xce,0xb9,0xb2,0x3e,0x74,0x8c,0x04,0xba,0x75,0x77,0xfe,0xdf,0x7c,0xea,0xb9,0xed,0x87,0xdc,0x43,0x0b,0x5f,0xe2,0x2e,0xac,0x50,0x95,0x0e,0x0d,},{0x1a,0x5d,0xd4,0xc8,0x91,0xc8,0xe1,0x32,0x57,0x01,0x87,0xc2,0x3b,0x9a,0x1e,0x4b,0x26,0xf0,0x54,0x60,0xe8,0x75,0x67,0x38,0x19,0x39,0x6d,0xf5,0x61,0xc8,0xaf,0x0e,0x48,0x33,0x3b,0x62,0xc7,0x77,0x29,0xd4,0x9f,0xc4,0x0e,0x17,0x4a,0x7f,0x3c,0x21,0xf8,0x5e,0xf4,0xd3,0x39,0xce,0xb8,0x0b,0xd2,0xe0,0x37,0xd8,0x03,0xaf,0x56,0x0e,},"\x0a\x2b\x61\xba\x35\xe9\x6e\x58\x19\xb8\x8b\xfd\xb2\x8b\x7c\xe0\x2e\x64\xae\x9c\xf5\x72\xb2\x1f\x13\x55\x2c\x0d\xb1\x0f\x39\x60\xd4\x4b\xa3\x47\x2f\x43\xab\xc4\xe6\x29\x5b\xdf\x79\x0b\xd9\x33\xba\x39\x75\xfd\x44\x65\xfa\x3e\x2f\xe2\xdb\x02\xb6\x37\x77\x52\x22\x3d\xec\x98\xfc\xb2\x40\x4f\x3a\xba\x43\x26\x5a\x6f\xa7\x97\x6b\x6c\x6c\xb6\x86\x8b\x88\x1b\xd6\xf3\xd2\x5c\xd9\xd6\xf7\x0e\x51\x2f\x80\x89\xc8\xef\x26\xfd\x58\x24\x50\x53\x77\x9e\x59\xc4\x72\x5a\xef\xa2\x64\x67\xc9\xf5\x00\xe1\x7f\x3e\x15\x73\xf1\xa8\x55\xe9\xb8\xb2\x19\x25\xea\x05\x27\xf3\xce\x8d\x88\xfb\x54\xa4\x7a\xbe\xed\x14\xf3\x99\xcc\x2d\x9f\x1f\xe5\x46\x65\xfa\xe0\xa8\xf0\xc6\x88\x72\xa6\x00\x04\x6d\x1d\xc3\x63\x97\xd3\x10\xce\x39\x3f\xce\xaf\xe8\x7c\x17\xeb\xe1\x22\xfd\xb5\x43\xae\xa7\x10\x85\xba\xec\x98\x27\x3f\x41\xac\x96\x69\x8c\x15\x0c\xf9\x11\xd0\xe5\xde\x23\x92\xd8\x48\x41\xd0\x12\x76\xae\xfb\xfe\x99\x95\xe1\x0a\x6d\x46\xef\xdc\x26\x78\xd4\x56\xc9\xf3\x6b\x2e\x10\x11\x4d\x11\x87\xe7\xac\xa7\x39\x03\x7e\xa5\x1f\x85\xfd\x62\xa2\x94\x29\xba\x52\x9c\xdd\x8a\xd9\x13\x47\x49\x74\x87\xed\x7e\x87\x09\xd4\x77\x6e\xf6\x86\x70\x79\x2d\x06\x15\xbc\x96\xda\x51\x78\xd6\x06\xdb\x63\xe4\xe5\xcb\x17\x2a\xcf\xbc\x1c\xbe\x20\x26\x93\x50\xf1\xb6\x05\xf3\x5d\xcd\x47\x91\x35\xbd\x30\xfb\x4b\x5a\x39\x17\x6c\xff\x74\x4d\xdb\xb3\x06\xc9\xe7\xb4\x16\x7d\xe0\x37\x9a\x61\x66\xbe\x5a\xaa\x74\xd7\x15\x7f\xac\x95\x7d\x88\xdc\x57\x59\x7c\xfe\xf2\x3e\xb5\x10\x8b\x3c\xe5\x3f\xc6\x32\xda\xd1\xb9\x72\xa2\x9d\xa5\xde\x32\xd2\x0d\x8e\xce\xde\x67\xff\x00\xda\x4a\x08\xa0\xcc\x1a\x98\xbe\xe7\xa9\x4e\x3c\xb3\x2f\xee\x94\xae\x25\xa4\x13\x54\x47\x02\xc3\x7b\x3e\x17\x78\xa0\x70\xcd\xd4\x84\x0b\xd3\x9f\x5f\x45\x79\x51\x92\xa8\x67\x86\x38\x76\xed\x0d\x13\x0d\x46\xe2\x91\x39\x35\x08\x28\x09\xf7\xe1\x5a\x49\x67\x10\xf2\x55\xd7\x83\xda\x3d\x01\x6a\x65\x4c\x15\xff\x5d\xf9\x07\xa3\xcc\xaf\x37\xcf\xe1\x1c\x8c\x3d\x49\x65\x07\xd6\x76\x0c\x05\x38\x20\xf0\xf5\x94\xc3\xd0\x1c\xa2\x69\x17\x8a\xca\x52\x5a\xb2\x82\x1e\xf5\x5f\x92\xd8\x5f\xe6\x85\xea\x34\x47\x2e\xd1\x39\x81\x71\x06\x4d\x74\xa4\x22\xec\x91\xd1\xa6\x70\x61\x8f\xc9\xf3\x24\x24\xbc\xb1\x1a\x77\xf6\xfb\x4e\x2f\xef\xd2\xc4\xe8\xa7\x3c\x45\x28\x86\xe9\x31\x66\x4d\x1a\x83\xbd\x92\x73\x29\xc0\x4d\x25\x0b\x83\x52\x1d\x7d\xc1\x3c\x91\xce\xe1\xec\x05\x0e\x11\xd4\x2a\x4b\x0c\x8c\x06\x9b\x61\xc4\x42\x2d\x3a\x49\xc0\x7e\xff\x29\x05\xb7\xbc\x7f\x4a\x5b\x43\xe6\xb0\xd6\x1d\xfb\x50\xe4\xee\xa2\xe9\x0d\x29\x8a\x78\x1d\x05"}, +{{0xdb,0x05,0x60,0x63,0x56,0xba,0xcf,0x23,0xaf,0xf6,0xcd,0xdd,0x42,0xb2,0xc6,0x94,0x35,0x2b,0x5a,0x0f,0xec,0x56,0x0a,0xff,0x54,0xd9,0xbd,0x97,0x10,0xef,0xe0,0x6a,},{0x32,0xa5,0xc7,0xcc,0x49,0x09,0x78,0x6b,0x48,0xa5,0x3f,0x31,0x09,0x3f,0x54,0x9a,0x9f,0x17,0x30,0xca,0x66,0x90,0x38,0x3f,0xdb,0x5f,0x14,0xc2,0x66,0x6e,0x31,0x32,},{0x53,0x09,0x9b,0x76,0x6a,0xdf,0x29,0x44,0xb6,0x82,0x13,0x74,0x84,0x2c,0x25,0xd6,0xe6,0x7b,0x0c,0xcd,0xe9,0xc6,0x37,0xfe,0xcb,0x11,0xb8,0xb8,0xb0,0x72,0x03,0xe3,0x07,0x57,0x32,0x80,0x5f,0x4f,0x14,0xae,0xae,0x73,0xbd,0x62,0xe3,0x08,0xb5,0x88,0x7d,0x68,0x9e,0x29,0xcd,0x89,0xb2,0x3a,0x47,0x69,0x43,0x11,0x07,0x17,0xb1,0x00,},"\x1b\xc9\xc2\x83\x3f\x37\xcd\xf1\x35\x6f\xad\x16\x67\x68\x64\x27\x17\x70\x1b\x38\xa0\xab\x0c\x2f\x58\x1a\x26\xd2\x22\xd6\x5c\xce\xe4\xbf\x0f\x6d\xfe\x64\xd3\x3b\xc0\x23\x9f\x71\xd4\xb8\x26\x44\xb0\x16\x25\xa1\xa3\x5f\xe7\x98\x67\x62\x39\xe0\xca\x77\x9e\xf2\x31\x38\xee\xbe\x3b\xd1\x9d\xe2\xd8\xf7\xc1\x5b\x4d\x96\xf1\x3e\x51\xbc\x63\x3b\xea\x5d\x61\x22\x5b\xca\x1d\x63\x39\xba\x53\xe8\x1f\x7d\x8d\x24\xc5\xd6\x0f\x04\xce\x8c\x72\x67\x61\xd2\x64\x58\x4f\x1c\x7e\x5b\x5b\x69\x92\x45\x6c\x1c\x76\x89\x2d\x63\x52\x11\x1e\x3b\x92\x6f\xe0\x25\xc0\x00\x9d\xb6\x7c\xe0\xdd\xc7\xf7\x64\xe0\xc9\xad\xb0\x48\x1b\xc2\x79\x54\x84\xd9\x63\x73\xa9\x62\xa7\xb7\x4a\x55\x96\xf5\x27\xa7\x34\x76\x49\x8c\x78\x23\xdf\xfa\x6c\x85\x43\xb0\x79\x71\xb5\xaa\x27\x1c\x12\x25\x5e\x09\x18\xdd\x73\xf5\x0c\x30\xc9\xa8\x5a\xc7\xc2\x99\x3d\xd6\x55\xda\x59\x43\x12\x63\xf5\x91\x4b\xe7\x06\x37\x4b\xe9\xc0\x75\x85\xc2\x87\x13\x28\xb4\xdb\xc3\x94\x01\xc9\x57\x07\x38\x7e\x6e\x06\x9d\x44\xb9\xd8\xfb\x05\x8f\x22\xe3\x15\xaa\x0d\x5b\x4f\x11\x68\xfc\x10\x79\x62\xb0\x64\xf7\xd8\x45\xaf\x8e\x21\x31\x95\x1d\x1c\xd6\x6d\xc8\x4d\xba\x46\xd2\x00\xaf\x4f\x4c\x5f\x51\x22\x1b\xc9\xb2\x19\x69\x42\xf8\xb4\x0e\x7d\xdb\xc9\xae\xb3\xd9\xaf\xc0\x71\x25\x95\x13\x13\x5a\x01\x6f\x28\x66\x09\x9f\xa1\x0f\x4c\x3b\x73\x50\x0b\xd5\x5c\x47\x7b\x24\x15\xe1\x0a\x27\x9b\xa1\x10\xd2\x94\xf3\xdd\x18\x42\x17\x7d\x0b\x4b\xfb\x17\x34\xdd\x0c\xcb\x7e\x39\x4b\x43\xd1\x6f\x0b\x75\x48\x36\x22\x80\xf4\x34\x76\x4d\xa5\x7f\x19\xed\x3e\x30\x2e\x53\x70\xfb\xa4\x96\x64\xc2\x30\x05\x74\x33\xcc\x64\x7e\xb2\x7c\xd2\xc7\xc1\x8c\x7d\x66\x90\x6f\x08\x82\x46\xc2\x2f\x7f\x79\x03\x99\xde\xb4\xc5\xfb\xb9\x06\x18\x17\x69\xbe\xf5\xaf\xbe\x8a\xd1\xf5\xde\x55\xbe\x58\x8f\x52\xf6\x9c\x54\xd4\xef\x5a\x96\x9a\x0d\x99\x5c\x27\x40\x7b\x23\xed\xd9\x24\x3d\x24\x99\xfd\xf2\x94\x73\xb1\x95\x5c\x84\xb3\xf7\xcb\xdc\xd8\x1b\x76\x56\xec\x0b\xe9\xe0\xfd\xb3\x38\x13\x56\x96\x0f\xd0\xca\x70\xe7\xea\x74\xb6\x46\xfc\xd3\x13\x94\x8e\x6d\xdb\x47\x60\x94\x76\xfb\x6f\xa4\x84\x2f\xa7\x88\xa0\xd5\x7b\xe3\xb0\xa6\xca\x18\x19\xf7\x16\x14\x76\x00\x43\xec\x49\x04\x88\x19\x39\x96\x8a\x43\xb5\xd1\x92\x8f\x84\xa5\x91\x90\x93\xbc\x38\x41\x58\x81\x71\xa9\xcd\x39\x0f\x8f\xcd\x61\x53\x8b\x54\xe6\xef\x99\x77\x05\x73\xe1\x98\x6d\x15\x0f\xa9\x6b\x7a\x07\xe1\xd1\x94\xaf\x1c\x0b\x40\x55\x00\xac\xb3\xd1\x0e\x3b\xe6\x47\xc8\x98\x62\x00\x6f\xa7\x85\x83\xe7\x61\x66\x84\x29\x20\x16\x0e\xb5\x7f\x0b\x2a\x6e\xdf\x19\x3c\x44\xc5\xee\xac\xf4"}, +{{0x1d,0x13,0x9b,0x1a,0xd0,0xc3,0xaf,0x1d,0x5b,0x8b,0xe3,0x1a,0x4e,0xcb,0x87,0x8e,0xc6,0x67,0x73,0x6f,0x7d,0x4f,0xa8,0x36,0x3a,0x98,0x09,0xb6,0xd1,0xda,0xbf,0xe3,},{0x24,0x28,0xcf,0x1d,0xeb,0x20,0xfb,0xad,0x1f,0xdc,0x66,0x5d,0x82,0x5b,0x61,0x41,0x22,0xdf,0x10,0x1f,0xbe,0x14,0x73,0xa7,0x99,0x96,0xba,0xf6,0x96,0x74,0x34,0xb8,},{0xdd,0x64,0x5e,0x51,0xed,0xab,0x04,0xdb,0x31,0xe3,0x31,0x72,0xcf,0x27,0xac,0xee,0xed,0xcc,0x04,0x63,0xa9,0x63,0x91,0x4a,0x0e,0xac,0x8e,0xfd,0x5a,0x34,0x34,0x1f,0x6b,0xbc,0x52,0xe0,0x42,0xba,0xaf,0x3b,0x40,0xc8,0x9a,0x57,0xef,0xb6,0x45,0x74,0xe6,0x96,0x77,0xfc,0xe9,0x55,0x24,0x6c,0x1f,0xc0,0xf2,0x69,0xef,0x81,0x90,0x00,},"\x8d\xf2\xd2\xdf\x9b\x98\x4d\xa8\x44\x33\x48\x6a\x81\x3c\x98\xc5\x97\x3a\x69\x6c\x11\x62\x46\x10\xb2\x3a\xa4\x38\x08\x34\x64\xf6\x5a\x76\x79\x66\x15\xb7\x28\xc2\xed\x4e\x60\x71\x58\x55\xaf\xc2\x39\x45\x0d\x5b\xc0\x91\x1f\xf2\xa8\x52\x30\x20\x5c\x6f\x13\x49\xba\x5b\xd8\x7e\xa6\xf7\x20\xdb\x6b\xa7\x0b\x77\x42\x17\x88\xe0\xc6\x54\xae\xbc\x23\x07\x4c\x5f\x41\xd2\x29\x07\x72\x14\x0d\x98\x1a\x6b\xc4\xfe\x70\x9a\x26\x8e\x64\x17\x2a\x02\x6b\x27\x01\x18\xb4\xdb\x51\xab\x6a\x13\xc9\x9b\x06\x31\x86\xd8\xd5\xb3\x38\xe9\x77\xed\xdc\x6b\xb5\xfd\x7d\xd5\x7d\x98\x45\xa3\xc3\xfe\x76\x17\x7d\x57\x38\xdc\xa1\x6a\x8f\x91\x02\x85\x75\x00\x17\x4f\x23\xff\x4c\x3b\xf3\xc8\x53\x6f\x11\x58\x0e\xf8\x51\x4a\x40\x9f\x5b\xbc\x9c\x02\x96\xf1\x2e\x34\x78\xd4\x08\x7f\x95\xef\xaa\x6c\x63\x60\x71\xd2\x11\x57\xbf\x11\x77\x4b\xbf\xe7\x69\x33\x06\xca\x72\x13\xda\x47\x13\xeb\xaa\xab\x35\x54\xed\xf0\x80\x11\xa5\xff\x73\xda\x12\x03\x75\xae\xd1\x96\x28\x67\x0f\x28\xab\x24\xb6\xf5\xd5\xa1\xd5\x70\x48\x0f\x65\xd3\xc1\x52\xbf\xf1\xb4\x7b\xf0\x66\x69\x29\xcb\x7c\x99\xd9\x03\x3f\xaa\xe8\x53\x4f\xc3\x5d\xa7\x30\xb8\x11\xeb\xcc\x25\xae\x10\xa1\x95\xaa\xb1\x2c\x32\x6a\xa4\x5b\xf8\x05\xc6\x2d\xd4\xcd\x5f\x86\x86\x23\xc0\x4a\x8e\x1c\x6a\xa7\x2f\x1e\xa4\x40\x0c\x60\x86\x7d\xff\x62\x2f\x31\x64\x34\xf1\xec\x89\x50\x3c\x6f\x9f\x65\xc1\x37\xb4\x94\x4c\xbc\xb3\x5f\x08\x6c\x74\xcc\xea\xfa\x22\x42\xac\xca\x6f\xfe\x61\x1c\x4b\x55\x87\xf5\xb7\x5f\xfa\xd3\x49\xf0\x0b\xf9\x6e\x4a\x58\x0a\x87\x5b\x92\x65\x40\x69\xb6\x2e\xea\xc0\xbf\x78\xe5\xae\xdd\x71\x86\x9e\xe0\x5b\x9a\x94\xe1\xc9\x8e\x35\xa9\x78\x00\xa4\xa2\x12\x20\xb0\x39\xcd\x5e\xbb\xb7\x56\xd4\x0b\x40\x42\xe2\xc8\x4a\x2a\xe9\x81\x82\x51\x1d\xae\x8e\xd3\xb8\x9f\x4f\xa0\x0f\xb8\xed\x94\x63\x16\x45\x97\x10\x05\x2a\xd4\xc0\x2f\x63\xdf\x05\xd3\xbb\x1a\xce\x33\x67\x21\x51\xbd\xf5\xda\xb4\x6c\x7b\x58\x3d\xb3\x73\x89\x9d\x4f\x03\x5b\x6c\x11\x12\x58\xb4\xe5\xa9\xe7\x07\xa1\x1d\x21\x5e\x44\xe6\x8e\xf1\xa6\xf0\x53\x80\x9a\xa5\x1b\xd9\x02\xe1\x3c\xa9\x9c\x1b\x1c\xec\xc8\x3b\x9c\x23\x5c\x71\x0e\x79\x7d\x2b\x1a\x24\x9b\x2e\xa0\x79\xb5\xc1\x67\x4e\xd7\x16\x9f\x1b\x6e\x67\xf1\xac\x77\xf8\x6b\x74\x32\x98\x96\x93\x35\xa7\x72\x44\x0f\x7f\xbf\xa7\x25\x13\x50\x0d\x84\x16\x61\x14\xa8\xfd\x54\x13\x94\x64\xd4\x2b\x99\x55\x30\xd3\x23\x70\xb6\x9b\xff\xc7\x58\x9d\x6d\xcc\x97\xe0\xbf\x17\x85\x6c\xc3\xbf\x41\x64\xdb\xec\xcc\x8a\x88\x1d\x41\x4d\x6a\x62\x02\x92\x76\xc5\xf8\x13\x7c\x0b\x3c\x68\xbc\x8f\x4b\xd4\xe7\xcf\xf6\x5e\xf2"}, +{{0x4d,0x22,0xe3,0x31,0xe0,0xcf,0x6f,0x6a,0x27,0x2d,0xb4,0xd2,0x06,0x87,0xff,0xb0,0x59,0xf1,0x22,0x5d,0x81,0xe4,0x11,0x23,0xb8,0xc8,0x9b,0x07,0x4d,0xe7,0x6a,0x3b,},{0xb1,0xe4,0xcf,0xae,0xad,0xd6,0x7b,0x12,0xd7,0xb9,0xdb,0xfc,0x0f,0x88,0xed,0xd0,0x37,0x3f,0x9a,0x88,0xc7,0xfa,0x33,0xfb,0x7f,0x2b,0x1e,0x47,0x5e,0xcc,0xb6,0x1b,},{0xc3,0x66,0xb8,0x02,0xf6,0x82,0xfc,0xd7,0x05,0x25,0x26,0x4f,0xb1,0xa3,0xcb,0xcd,0x0e,0xe3,0x5e,0xcf,0xf5,0x97,0x7c,0x2a,0x55,0x4d,0xa9,0x39,0x22,0x9f,0x17,0x81,0x9a,0x96,0x1e,0xa7,0x4c,0x3d,0x7a,0x78,0x81,0xac,0x5c,0x1f,0xa1,0x6b,0xf9,0x84,0xd9,0x45,0x6a,0x13,0x88,0xd3,0x46,0x3c,0x44,0x94,0x42,0x9b,0x1d,0xc4,0x54,0x02,},"\x9c\x8e\x3f\x5b\x4d\x70\x40\x30\xe1\xba\x71\xf0\x2e\xfc\x4b\x87\xd6\xff\xfb\x55\xbc\x3d\x8d\x03\x81\x8f\x91\x56\x24\xfc\xf7\x01\xc5\x4a\xdf\xaf\xa2\xb6\x94\xb8\x77\x51\xcb\x9f\x69\x91\x8c\x0f\x05\x0f\x4c\x10\x5d\x5c\xcb\x40\x10\x0b\x28\xdf\xd4\xf4\x11\xd5\x91\xc1\x20\x19\x17\x6a\xc2\x01\x6b\xfb\xfd\xf0\xdd\xf1\x1d\xb8\xa7\xe3\x9a\xa7\xb9\xe2\x16\xf6\x67\xc0\xa1\x5f\xb9\x77\xea\xa9\xba\x3b\xc4\x55\xcc\x58\x94\x5f\x3e\x94\x4b\x8a\xc2\xfb\xf4\xd2\x4f\xe7\xe1\xe6\x19\xcd\xbe\xee\x3e\x5e\x12\xa9\xa5\x27\xd2\x8f\x5f\xd7\xcf\xd9\x22\x0f\x13\x08\xd8\x97\xb6\xd4\x31\x4a\x5a\x01\x87\x86\x4a\x2d\x62\x1c\xf1\xb2\x84\x42\x61\x24\x7b\xf5\x20\xba\xfa\x9b\xf2\x26\xe1\x15\x68\x1e\xcd\x77\x42\x79\x80\xcd\x12\xb0\x8c\x35\x9c\xec\xd1\xde\x3f\x55\x45\xf8\x07\xf8\x1e\xd7\x63\x02\xff\xd6\x47\x7f\x89\xb9\x58\xcd\xf1\x29\x54\xcf\x70\xc1\x42\x53\x29\x93\x83\x16\x47\xea\xca\xb0\xb4\x80\x7b\xfd\xad\xb4\x38\x9d\x7d\xff\x2c\x4e\xf0\xef\x5a\x5c\x61\xd0\xdf\x76\x2e\x2e\x90\x80\xa7\x18\x1c\xec\xd0\x6a\x53\x19\x9f\x0d\xfe\xf7\x02\x62\x7a\xde\xcf\x5f\xcd\x9b\x3e\x68\xc7\x23\x33\x16\x17\x27\xf8\x71\xc7\xd1\xc4\x30\x51\xff\x1c\x92\x1f\xd5\x3b\x64\x22\x38\xb9\x78\x80\xd6\x4e\x25\xfa\xc5\x12\xab\x95\x4b\xed\xbc\xa5\x40\xf5\xb2\x00\x91\xec\x72\xe6\x7f\x88\x77\x0a\xfc\x32\xf2\x12\x5c\xa0\xda\x4f\xe8\x7b\x56\xaa\xc9\x17\x7f\x1f\x4f\x67\xc8\x51\x72\x5c\x5e\x8a\xfe\x64\xf6\x64\x79\x98\x33\xfd\x79\x10\x0b\x77\xea\xd2\x58\x38\x87\x9f\xff\x47\x47\xaa\x0d\x56\x72\xec\x0a\x94\x34\x81\x34\xbd\xbd\x4b\xb3\x9b\x0c\x67\xa0\xcd\x30\x60\x2e\xdf\x4f\xec\x6f\x7a\xf0\xcc\x2b\xda\xe1\x26\xce\xa8\x42\xdf\xaa\x43\x91\xdc\x5d\xde\xa9\x38\xe1\x79\x21\x68\x24\x0c\x2d\x8b\x25\x35\x2f\x9f\x3a\x64\x42\x35\xce\x36\xfe\xfe\xb6\x99\x2a\xd8\x8e\x28\x7a\xd2\xd8\x5b\xd8\x50\x39\x6f\xc2\xe5\x17\xa1\x52\x09\xf5\x92\x0a\xc9\x8c\x53\x2b\x1f\x4d\x86\x9b\xeb\x08\xbb\x03\xcf\x7c\x91\xaf\x3f\xfc\xed\x68\xd5\xfb\xfe\xf8\x6f\xf9\x4e\xce\x6e\x2e\xad\x34\x84\xce\x08\x0d\xb1\x7b\xbe\x40\xf1\xdb\x43\x2e\xc1\x65\x0e\xd2\x4f\xdd\x25\x0f\x33\x45\x74\x5c\x9b\x7b\x91\x98\xc9\x10\x9a\x37\x26\x1f\xc5\xec\xbb\xb1\x2f\x83\xa0\xe1\x22\x0a\x18\x67\xd4\x5f\xdd\xfe\xa8\x1d\xcf\x75\xf4\xec\x7f\xdb\x52\x50\xe5\x77\x54\xd6\xde\xa2\x70\xb6\x28\xa7\x95\x30\xec\x28\xb6\x19\xbc\xa9\x49\x3e\x63\x05\xcf\xc4\x41\x4c\x1c\x1d\xe3\x38\x9e\x89\x01\x97\xc8\x5f\x28\x40\x4f\x3f\xa9\x6a\x1e\x2f\xd9\x20\x6b\x47\x2e\x8a\x0a\x0d\x32\xaf\x55\x60\x6b\xb0\x83\xf7\x6a\x19\xb8\xea\xe3\x47\x9a\xe5\x1d\x98\xa9\x9a\x62"}, +{{0xa5,0x22,0x8f,0xf9,0xbb,0xb6,0xf2,0x32,0x32,0x7e,0xb8,0xd8,0x79,0xd7,0xf8,0xb2,0x77,0xca,0x72,0xba,0xe1,0xf9,0xa9,0xd0,0xe2,0x60,0xdd,0x90,0x57,0x1d,0xb4,0xf9,},{0xd8,0x2f,0x6a,0x69,0x74,0xf5,0x1c,0x88,0x08,0xd9,0xd6,0x17,0xf4,0xce,0xc2,0xd8,0xa3,0x7e,0xb1,0x1a,0x14,0x23,0x7c,0x9a,0xb9,0xcf,0x11,0xeb,0xc8,0x0f,0xf6,0xc0,},{0x97,0x65,0x0f,0xae,0x3f,0x59,0xca,0x76,0x47,0x7f,0x25,0x47,0x16,0x77,0x49,0xc5,0x83,0x02,0x48,0x88,0x32,0x25,0xe3,0x54,0xff,0x46,0xc7,0xe3,0x81,0x96,0x52,0x20,0xd9,0xbe,0xf2,0xc2,0x05,0x7c,0x7d,0x19,0x90,0xf0,0x8b,0xca,0x4c,0xfd,0xe8,0x77,0xff,0xf2,0xb4,0xaa,0x81,0x3d,0x9c,0x4b,0x84,0xfb,0x79,0xec,0xed,0x81,0xef,0x05,},"\x1d\xf7\xa6\x83\x5e\x33\x10\x98\x3e\xe7\xec\x73\x11\x25\xf5\xb5\xcf\x11\x7a\xf0\xe3\x6b\x36\x85\xbf\x54\xac\xe1\xc4\x8c\x46\x30\x05\x60\xa4\x5e\x9f\x9b\xdd\x96\xa0\xbc\x4d\x14\xe8\x9d\x4b\x57\x21\xa2\xca\xff\x66\x18\xb1\x82\xed\xb1\x20\x2f\x3d\x0c\x5d\x11\x8d\x09\xb6\x18\x12\xc0\x10\xe8\xb1\x96\x34\x45\x41\xcd\xee\xfe\x5f\xd1\xf9\x61\xc5\xdd\x75\x45\x95\x55\xab\x72\xef\x2a\xa7\xa7\x59\xa4\xf3\xad\x3c\xae\xd4\x4f\x4c\x9a\x8e\xf9\x5b\x76\xed\x9a\x99\xb5\x5d\xd8\xa2\x60\xba\x08\x01\x0d\x29\xff\x81\x9f\x2a\xf3\x51\x3c\x1a\x64\x0d\x6c\xcd\xde\x49\x99\x20\x5f\x9f\xca\x88\x57\x11\x5d\x8b\x5d\xb9\xf7\x0a\x62\xe5\xee\xa0\xd5\xaf\x06\x5d\xe1\x53\xf2\xed\xed\xee\xc6\x3e\x15\xc8\xe0\x9a\x92\x58\x21\x82\xac\x07\xd8\x1c\xa6\x3c\xa4\xaa\x59\x7a\x22\x20\xe7\x04\x81\x95\x7d\x41\x52\x64\xe2\x58\xbc\x26\x3e\x1c\xc3\x6e\x53\x47\x8a\xac\x5c\xa0\x16\x94\xcc\xb0\x9b\x4f\xfd\x84\x73\x99\x72\xc7\xdc\xcf\x3d\xef\xea\xfd\xed\xe1\x62\xab\x6c\x58\xa1\xdf\x27\x37\x1e\x3f\x54\x93\x06\x7f\xc9\xe2\x06\x7e\x57\x96\x23\xc0\x09\xfc\x82\x5e\xef\x0e\x01\x0f\xd1\xcc\xf2\xa8\xd3\xfb\xbb\x31\x56\xf9\xdf\xde\x0c\x7c\xbb\xaf\x84\x33\x09\x85\x17\x49\x1b\x78\xdb\x96\x98\x61\x4e\xa4\x0e\x0b\x1e\x6a\x1e\x36\xb9\x00\x45\x3a\x16\xea\x27\x6f\x34\x42\xbb\xd2\x7a\x7e\xcb\x98\x15\x11\xf5\xc9\x20\x9e\xb0\x96\xe2\x85\x88\xb6\x5b\x96\xb5\x01\x88\xc0\x38\x1f\xf7\x12\xbc\x06\xb2\xc6\x55\xcc\xa0\x75\x1c\x09\x5d\x80\x16\x25\x15\x85\x85\x1e\x67\x74\x34\xdc\x3e\xfd\x08\x7a\x12\x68\x0f\xc2\x2e\x5b\x83\x10\xa1\x0e\x32\xca\xac\x9b\x71\xc8\x76\xee\xd3\x1e\xf0\x9f\x7f\xa0\x12\xba\x08\xdf\xd2\xad\x68\xc1\xe1\x47\xf5\x05\x98\xe5\x50\x46\x7e\xf9\x9f\x29\x5a\x31\x8f\xaa\x50\x7e\xbe\x77\x6c\xe5\x5c\x4d\xa1\x64\x32\x3c\x30\xa5\xe7\x2d\xbe\x02\x7c\x3c\xcf\x96\xc7\x01\x97\xa6\xfb\x1b\x74\xaf\x13\x3a\x8b\xe2\xb0\x3c\x1b\x99\xfd\x25\xb3\xce\xd5\x1f\xe3\x88\x20\x21\xa3\xaf\xd9\x22\x9f\x64\x1b\xc6\xca\xd4\xe1\xd3\xcb\x6e\xd9\xb6\xb6\x8a\x25\xf1\xe1\x39\x72\x89\x98\x1f\x78\x92\x4b\xff\x24\xc8\xde\xe6\xa1\x8a\x04\x21\xfa\x32\xae\x3a\xb6\x0a\x0d\x93\x3a\x6a\xf4\xff\x70\x48\x74\xb0\x9b\x07\x39\xe2\xf2\x9d\x8f\x25\x2d\x79\x05\x5f\x89\xd3\xbf\xf1\x0a\x22\xc5\x4a\xc3\xd8\xaf\xee\xce\x81\x83\x53\xa6\xab\xe2\xb7\xfb\x8e\x8e\x0d\xa5\xb7\xac\x1c\xfc\x98\x5d\xf9\x75\x80\xb1\x82\x11\xa4\xe3\xed\xff\x95\xaf\xdd\xa0\x61\x54\x7d\x3a\xe0\x40\x6d\x32\x86\xcd\x30\x5b\xdf\xd2\xc3\xab\xf8\xf7\x4a\xf9\xa0\x34\x20\xe5\xb0\x3f\x82\x5e\x9c\x53\x90\x7e\x13\xa5\x81\x21\x74\xbe\x42\x89\x86\x45\x14\x9d"}, +{{0xc0,0x4d,0xc0,0x9f,0x11,0x9d,0x67,0x0f,0xb1,0xea,0xe0,0x13,0x6f,0xcc,0x06,0x08,0x5f,0x29,0x0f,0x4a,0xd1,0xaa,0x1f,0xfc,0x9c,0x16,0x0e,0xa5,0xcf,0x47,0xf0,0x9d,},{0xff,0x49,0x8c,0xe8,0xc9,0xdb,0x78,0x67,0xf6,0xd0,0x27,0x64,0x52,0xa4,0x66,0x72,0x48,0x87,0xe6,0x17,0x2f,0x66,0x81,0x67,0x1b,0x8a,0xe0,0x35,0xf5,0x86,0x5e,0xa3,},{0x4b,0xd1,0x9f,0x3d,0x9c,0x51,0x16,0xec,0x6a,0xe0,0x02,0x4d,0x0f,0x24,0x6d,0x2c,0xe2,0x50,0xd9,0xe0,0x63,0x4a,0x23,0x2b,0xa0,0x6f,0xd3,0x56,0x6a,0xed,0x55,0xcb,0xe5,0x9f,0x12,0x33,0x2c,0xba,0xd6,0x5d,0x43,0x49,0xa9,0xd2,0x2e,0x7d,0x6e,0x46,0xd2,0xfb,0xdc,0x71,0xd5,0xc8,0xf9,0xda,0x15,0xdf,0xbf,0x17,0xba,0x22,0x51,0x07,},"\x1e\x42\x29\x7f\x8a\xee\xf2\x9a\x84\x2e\x0e\x21\xf5\xdb\xae\x06\x8e\x2c\x9d\xda\xa6\xfd\x34\x8e\x48\x88\x1f\x0d\x42\xc5\x0b\xf0\xec\xf1\x70\x6b\x94\xa5\xd1\x98\x17\xca\x02\xd8\x3e\x9a\xb2\xf9\x9d\x8b\xfa\xaa\x5c\x85\xad\x39\xa1\x50\xb2\x25\xad\x3e\xaf\xa0\x67\x81\x5b\x74\x67\x2f\xe0\x26\xc3\xcc\xc6\x77\x25\x54\x40\xb6\x84\xa7\x6e\x12\x8c\xa2\xcc\xc4\x29\xf1\x52\x57\x7d\x25\xb6\x9f\x40\xdb\x58\x2d\x49\x47\x9a\xfa\xe6\x80\x71\x2d\xc0\xfd\x1f\xe1\x41\x88\x39\x68\x7c\xa6\x0c\xdd\xe9\x74\x14\x04\x62\xf9\x61\x48\x29\x5d\xf1\xce\x43\xa9\x77\x35\x1c\x77\xf2\xf0\xb0\x9a\x6b\x26\xd6\xfe\x96\x5f\xce\xae\x17\xd7\xb8\x62\x03\x71\x40\x24\x28\x54\x4f\xdf\x91\x69\x0b\x44\xe9\xaf\xc2\xe9\x08\x8c\x83\xca\x48\xdc\x85\x76\xf6\x28\x72\x47\x98\xdc\x90\x32\x31\x74\xc4\x49\x96\x59\x65\x02\xa3\x5d\xf8\xb9\x82\xc5\x70\xa6\xcb\x51\xb9\xa1\x97\xd4\x31\xaf\x33\xf0\x2b\x80\x01\x15\x67\xfe\x50\xcf\x45\xac\x11\x1b\x3d\x55\x6f\x8c\x8c\xe5\xae\x8c\x99\x72\xf2\xa9\x93\x6b\x1a\x01\x2b\x9c\x33\x9e\x30\xc9\x73\x12\xb6\x5e\xa5\x9c\x10\x0f\x79\xd7\x95\xb8\xa2\x4b\x31\xa0\xa9\x7d\xc2\x5c\xce\xd6\xb8\xff\x5a\xe1\x45\x33\x9a\x04\x8c\xa1\x2a\x57\x90\x17\xfa\xe8\xd5\xcb\xcb\x61\xd5\x2e\x31\x4d\xd7\xc2\xe7\x20\x10\xc4\x72\x17\xb1\xd0\x68\x78\xbf\x28\x18\xca\x18\x8e\x8e\x30\x79\x60\xc1\x68\x9d\x7d\xfc\x02\x02\x97\x3c\xd2\x9f\x2f\x7b\xa7\x43\x46\x9e\x68\x5e\x0e\x70\x4b\x04\xba\xca\x4f\xab\x54\x88\x44\x8a\x92\x2e\xab\xf4\x0b\xe5\x81\xc1\x99\x4d\x74\xd1\x3a\x36\x6c\xe8\x57\xfb\x40\xa6\xe0\x5d\xa8\x55\x36\x94\x17\x2c\xc3\xfd\x28\x06\x2f\x53\x82\x50\xaa\x8c\x11\xf6\x81\x39\xe7\x9c\xd1\x19\x1b\xa3\x31\x4b\x5c\xea\x08\x64\x43\x7e\xd2\xe4\xb6\xfb\xd7\x5b\x9d\xed\x09\x87\xb4\x1c\x20\x2a\x58\xec\x02\x54\xd9\xd3\x71\xa7\x95\xf1\xdb\xec\xdd\xac\x11\x2b\xe8\xd0\x9e\x2d\x7b\x9c\xa5\x75\x2f\x40\x6c\xff\xb9\x11\xca\x36\x45\x0b\xc0\x5f\x1e\xc1\xca\x3c\xa8\xd3\x51\x24\xd1\x28\x6c\x55\xf1\x0f\x61\x33\x4e\x46\xec\xe4\x18\x3b\x92\x21\x9a\x9d\xcd\x0e\x5e\x78\xef\x2a\x76\xcf\xe9\xa9\xab\x37\x95\xdf\xdc\xb4\x4f\x63\xd4\x5f\x5f\x48\xff\xb4\x15\x61\x33\xad\x2e\x99\x50\x88\x4c\x5b\xbd\x2c\x1c\xb8\x72\x9e\x40\xa8\x78\x7f\x78\x49\x69\xfa\x88\x0c\x07\xff\xcc\x97\xd5\xc0\xd2\xd4\x88\x08\x5e\x91\x16\xd7\x10\x7c\xd5\xdb\x16\xce\xcc\xde\xad\x55\x02\x5e\xea\x2e\xde\xe9\x3c\x1b\x10\x64\x27\x61\x8e\xe0\x9d\xc3\xda\xd1\xe0\x56\x76\xa2\x36\x80\x69\xc8\x04\x5c\x3e\xbc\x6c\x67\xaf\xa5\x2d\x59\x39\x82\x48\xef\xcf\x15\xe9\x04\xc7\x14\x23\x04\xff\x61\x97\x1f\x4d\x9b\xf6\x46\x0c\x1d\x64\x17"}, +{{0x67,0x91,0xbd,0x74,0xd3,0xb4,0x62,0x0e,0xf5,0xf1,0xff,0x56,0x40,0x64,0x32,0xc2,0x6a,0xb6,0x46,0xf6,0xd5,0xe9,0xdd,0xa6,0x84,0x2e,0xd6,0x90,0x52,0x27,0x53,0x92,},{0xda,0x99,0x15,0xa7,0x55,0x2f,0x11,0x0f,0xae,0xa1,0x2d,0x47,0x92,0x0a,0x09,0x60,0x14,0x43,0xd4,0x00,0x0a,0x9c,0x7e,0x21,0x8d,0x5b,0xa7,0x2b,0x74,0x98,0x9f,0xa6,},{0xb1,0xe8,0xd4,0x81,0x06,0x5b,0xd5,0x12,0x1b,0xb3,0xbf,0x56,0x96,0x00,0xbc,0xc2,0x6d,0xf4,0x0c,0x49,0x9f,0xba,0xa9,0x54,0xb3,0x9a,0x61,0x9d,0xc4,0x0b,0x95,0x90,0xc3,0x17,0x56,0xb8,0xb6,0x3f,0x86,0x01,0x51,0x69,0x4b,0x95,0x76,0x5d,0x69,0x7b,0x2e,0x1a,0xde,0x08,0x06,0xe9,0x2a,0x06,0xc4,0xa5,0x59,0xe9,0x0f,0xcf,0xa5,0x06,},"\x36\xa2\x0e\x66\xbb\x29\x15\x51\x61\xad\x85\xee\xfe\x89\x3b\x53\xac\x5a\xde\x16\x5f\x08\x9a\x77\x19\x0b\x0c\x23\x9d\xec\x8a\x20\x16\x85\xb0\x76\xb4\xde\xd4\xa1\x0a\xa4\x59\xb9\x80\xa8\xcc\xa4\x7d\x5f\x8d\xe4\xd2\xa6\x62\xe4\x46\xd5\xf7\xfb\x70\xed\x9b\xe0\x5d\xb1\xcc\xea\xdd\x13\x0b\x33\x46\xd9\x40\x9f\x9d\x6e\xf5\x28\x24\xc7\x64\xac\x6f\xb1\xcd\x15\x6d\xbd\x6a\x47\x3a\xe7\x22\xd0\xeb\xb2\x56\x38\xc5\x12\x65\xa2\x2f\xeb\xbb\x14\x96\x7d\x6d\xd8\x25\x3c\x1d\x03\x88\x95\xc6\x73\x7f\x06\x7c\x8f\x73\xc3\xc1\xcb\xe6\xcd\xa4\x36\x96\x32\xd7\xf4\xc9\xac\xeb\xe8\x7d\x05\x71\xc8\x1a\x58\xcf\xd7\x2c\xce\x4a\x5c\xf5\x3a\x1e\x75\x25\x9f\x4c\x99\x3e\x67\xef\xc8\xd9\xc3\x57\x6c\x43\xaf\x04\xa5\xca\xf3\x3d\x85\x6f\x7f\x27\x55\xd3\xa9\x75\xab\x2b\x68\x5c\x6f\x65\x68\x0c\xba\x9a\xc8\x79\xf3\xa8\xc9\xa4\x76\x5b\x87\x9c\x0a\xde\x1e\x4b\xd0\xd4\xa7\x0b\xb6\xf9\x2b\x24\xd4\x29\xdc\x74\x6c\xc7\x8f\x84\x81\x1f\x07\x6f\x32\xc6\x1e\x35\x85\xcc\x8a\xad\xe9\xb0\xca\x15\x22\x4b\xfb\xfe\x18\xbe\x10\xa3\x36\x43\x60\x0f\x66\x12\xbf\x01\x3f\x0e\xfc\xca\x83\x72\x46\xa0\xee\x5b\x03\xc0\x2f\x15\x73\x62\x4c\x4a\x44\xa9\x0f\x9e\x42\x3d\x4e\x56\x06\x1a\x71\xd0\x14\x4f\x5a\x88\x7a\x8c\xd4\xa9\xd6\xf2\x47\x90\x4e\x26\x79\x59\x51\x95\x9d\xa1\x21\xc8\x3c\x6c\x94\x1e\x2b\x6b\x9a\xb7\x62\x09\xff\xe9\x17\x85\x91\xea\xd6\x82\x30\xb9\x4a\xe9\x7d\xf5\x8f\x9f\x17\x24\x28\xc9\x50\x67\x59\x8a\xc5\x82\xff\xb9\x50\x84\x0d\x82\x66\x30\xc4\x62\x5f\x5d\xea\xdd\xec\x13\x05\x20\x3b\x4d\xb6\xb9\x45\xf9\x91\xed\x7c\xd3\xd6\xfa\xbc\xa5\x1e\x21\x66\xad\xad\x0a\xad\x51\x17\x33\x6d\x52\xd5\x94\x22\xf0\x13\x5c\x8f\xa8\xcd\xd0\x88\x4b\xe7\x35\x86\xbf\x28\x4e\x5d\xdd\xdb\xcb\x95\xb4\x11\xf9\x85\x68\x52\x6f\xbe\x71\xa5\x59\x2b\x56\xad\x5a\x73\x45\xf2\x87\x4d\xb1\xd5\x7b\xea\xb4\x3e\x8c\xc6\x95\x47\x52\x06\x29\xf0\xee\x76\xdb\xf4\x32\xa3\x76\xfa\xd2\x8b\xfc\x77\xe1\x4d\x84\x0f\x0c\x02\xd4\x78\xf1\xe2\x33\x7c\x23\xb8\x9e\x73\xe5\x27\x91\x08\xb5\x60\x9b\x18\xe8\x0d\xb0\xde\x11\xcf\xa9\x4e\xcf\x72\x39\xbc\xff\x59\xc5\x41\x18\xe4\xed\xe4\xfb\xfc\x08\x23\xae\x54\x60\x16\xf7\x74\xc5\x21\x98\xa9\x63\xb5\x54\x5a\x34\x89\xb8\x9d\xf7\x62\x6f\xd1\x1e\xd4\x65\x8d\x71\x5a\x46\x57\x99\x40\x35\xd4\x03\xb3\x37\x0d\x14\xee\xd9\x71\x8d\x59\x8d\xb6\x75\xf0\x42\x59\x2f\xea\x89\x05\x65\x44\xb3\x2e\x5b\x9c\x80\x62\x82\x8a\xaa\x3c\xf5\x9c\xb4\x76\xad\x36\xdb\x1d\xaa\x24\x82\x22\x7a\x9b\x7a\xfb\xc1\x53\xce\x93\x25\x3d\x1b\x39\xda\x95\xeb\x96\xf8\x31\x28\xff\x25\x54\xa5\x47\xe3\x4e\xea\x4a\x00\x00"}, +{{0x23,0x4c,0xe4,0xd3,0x9b,0x5e,0xba,0xbe,0x9a,0x2c,0x1e,0x71,0x97,0x0d,0x71,0x81,0x38,0xdc,0xb5,0x30,0xcf,0xd2,0x96,0x02,0x34,0x27,0xd8,0x92,0xbf,0x88,0xf8,0xa4,},{0xcb,0x73,0x93,0x0d,0xb4,0x21,0xf6,0xd2,0x45,0x36,0x83,0x7b,0xd0,0xbf,0xf6,0xfa,0x75,0xbb,0xd1,0x41,0xc9,0x8a,0x40,0x5d,0x42,0x44,0xa3,0xc4,0x24,0x55,0x07,0x79,},{0xf6,0xd0,0x60,0xed,0x7d,0x18,0x27,0x3f,0x18,0xf7,0xa6,0x9c,0xd1,0xd8,0x12,0x6e,0x47,0x8e,0x88,0xa1,0xd7,0x29,0x4f,0xf6,0x04,0x08,0x46,0xd4,0x61,0x07,0xc3,0xe4,0x1a,0x42,0x3b,0xab,0xb2,0x41,0x71,0x39,0xfe,0x58,0x7d,0x29,0x10,0x27,0x1a,0x35,0x7f,0xe5,0xbf,0x57,0xc9,0x2e,0xe3,0xa7,0xb7,0x75,0x33,0x72,0x9d,0x0a,0xc2,0x0d,},"\x77\x73\x0c\xf8\xc8\xf9\x6b\x91\x87\x90\x2a\xcf\xf9\xff\x0b\x21\x74\x6c\xca\xf0\xa3\x82\xa7\xb3\x43\xd1\xc7\x20\x27\xae\x3c\x31\x68\xa7\x3a\x6b\x8f\x49\xbc\x87\x98\x14\x1e\x15\xc2\x73\x2b\x6a\x6b\x3f\x75\x7f\x8a\x8e\x86\xc7\xa4\xba\xcb\x39\x55\x1c\x54\x87\x4d\x6b\xf7\x16\x89\x7e\xe4\xaf\x13\x25\x3a\xa5\xbb\x79\xa1\x92\x10\x4f\x44\xdc\xb3\xde\x96\x07\x45\xa8\xe6\xaa\x98\x80\x52\x4a\x62\x9f\xb5\x10\xa4\xce\x4c\xbd\xa7\xe2\x95\x7d\xff\x1d\x62\xe7\x05\x60\x6a\x2c\xc8\x4f\x91\x85\x0b\xea\xac\x5e\x58\x46\xe1\x42\x0b\xc9\x1d\xcd\xd2\x42\x7b\x69\xcf\xa4\x6a\xe3\x8a\x4f\xef\x41\x46\xea\xe3\x5f\x9c\x22\xe9\x67\xcb\x14\xa1\xaf\x9c\xab\xf8\x3b\x18\x04\x65\xbe\xd6\xef\x2c\xda\x38\x2a\x84\xd9\x99\x4a\xad\x65\x5d\x89\x52\xe0\xfb\xb0\xf9\x6f\xc8\x08\x9f\x2e\x74\x89\x49\x7f\xac\xdc\xd6\x56\xa8\xa4\x51\xb9\x28\xc1\x1e\x7a\x40\x75\x07\x2a\xaf\xbf\x17\xd8\xf1\x05\x4c\x91\x96\x28\x8d\xed\x3a\xe2\x1f\x9a\xfd\x58\x10\xa1\x00\xd8\xe4\xd8\x4c\x4a\x35\xa9\x8b\x30\xd3\xe1\x85\x24\x43\x8d\xd4\x40\x2d\xfd\x8e\x76\x75\xf0\x9d\x08\x0c\xd9\x15\xf1\x4a\xf4\x37\x2f\x7c\xe5\x83\x84\x97\x2d\x5d\x11\x10\x79\x65\x1b\x2a\xcf\x39\xd2\xa1\x67\xc6\xa0\x0b\x2b\x17\xce\x0b\x26\x87\x91\xbd\x2b\xe5\x17\x8f\xe0\xf8\x2d\x64\xda\xcd\xde\x37\x7a\x1e\x8b\xe9\xe7\xd8\xdf\xc8\x2b\x08\x64\x45\x37\xbd\xc8\x70\xc5\x81\x92\x86\xfd\x51\xf6\x79\x2d\xc5\xf6\x7b\x54\xbe\x33\x6d\x44\xd5\x4f\xeb\xf8\x1b\x8d\xf8\xde\xc5\xd8\x68\x6d\xb1\x2f\x16\x4d\x0e\x8f\xf1\xaa\x2c\x16\xba\xcc\x98\x06\x01\x0e\xc8\xe9\x11\x96\x59\x7e\xf0\x6a\x4c\xf1\x70\x7d\xef\x50\x67\xa0\x48\x89\xd8\xe4\x8a\x9b\xc2\xc0\xbe\xf6\x64\xf5\xac\xd1\xb4\xf5\xbc\x2d\xa7\xda\x43\xdc\xb5\xf9\x63\x24\x5b\xa5\x52\xfd\x49\x30\x01\xd8\x70\xa9\x51\x7a\x17\x9c\x2f\x0d\xe8\x5b\xe0\xc6\x82\xd0\x57\x48\x8e\x35\xc7\x81\x6f\xf4\xba\x52\x9a\xef\xd7\xc6\x60\x91\xf2\x06\xf5\xf4\xd7\x5c\xac\x8b\xd2\x09\xec\x2f\xa5\x5b\xe7\x4a\xf2\x31\xe2\xf3\x89\xdc\xc2\xd6\x68\xbf\x69\x5e\xd2\x67\xc3\x59\x4b\xad\x9e\xfc\x00\x21\x7c\x7a\x0e\x9e\x7b\x6a\x56\xa3\x30\x79\xa3\x0e\x73\xc3\x73\x3f\x2d\x24\xef\xec\xdd\xe8\x7f\x72\xf9\x48\xd2\x77\xd6\xb6\xd5\xb0\x35\xb4\xc5\x31\x80\xd2\x3d\x66\xcc\x0f\xf1\x7c\x15\xdd\x46\x85\x85\xe3\x89\xd9\x1a\x4c\x97\xfd\x80\x11\x0b\x21\x8a\x0b\xf7\xa5\xe0\x35\x3f\x46\x09\xd2\xcf\x01\x8a\x06\x55\x71\x00\x1c\x78\x88\x55\x5e\xed\xbd\x36\x22\xc3\xb1\x76\x9c\xd1\x3f\x33\x37\x47\x72\xaa\x6c\x8a\x8f\x58\x81\x02\x01\x7d\x4e\xe4\xe5\x0d\xcb\xbd\xb1\xd6\x10\xc3\x26\x70\x93\x4a\x6d\x9e\x6d\x9b\x78\x4b\xbf\xe7\x18\x62\xbb\x38"}, +{{0x10,0x3d,0x11,0x8c,0x7d,0xd6,0x5d,0x07,0xe8,0xd5,0x58,0x2e,0x45,0x04,0x2a,0x75,0x79,0x24,0x17,0xc6,0x92,0x00,0x1e,0xe6,0xbd,0x9a,0x92,0x7b,0x2b,0x3d,0x90,0x16,},{0xb4,0x5c,0xc9,0x45,0x14,0xa6,0xad,0x67,0x24,0x96,0xcd,0x4e,0xb9,0xfd,0xaf,0xc1,0xd4,0xa1,0x67,0x07,0x2c,0x68,0x74,0xdc,0x8f,0xf1,0x6d,0x76,0x1f,0xb6,0x69,0x86,},{0x2f,0xaf,0xc1,0x3c,0x43,0xaf,0xe5,0x05,0x43,0x72,0xb9,0x23,0xd2,0x4f,0x29,0x2b,0x28,0x3a,0xfc,0xa3,0xac,0xa3,0xb3,0xe4,0x32,0x38,0x06,0x84,0x96,0x17,0x13,0xc8,0xd2,0x3e,0x86,0xb3,0x58,0x04,0x95,0xdf,0xba,0xe4,0x24,0xb7,0x67,0xe4,0x79,0x5a,0x0f,0x92,0x2f,0x71,0xb5,0x0f,0x5d,0x7a,0x36,0x9a,0xb8,0xc6,0xe8,0x80,0x42,0x0c,},"\x5a\x8e\xe0\x79\x18\x6b\x51\xcf\x46\x29\x83\x4d\xe0\xc6\xbd\x73\x34\x85\x50\x39\xa7\x63\x1d\x68\x87\x65\x2a\x77\x28\x99\x59\x72\xe3\x62\xc1\xc4\x09\xf0\x84\xf5\xaa\xf2\x98\x6a\xe3\xf5\x36\xbe\x00\x70\xc4\xba\xf4\x59\xef\x60\xa0\x15\xef\x9d\x70\xdf\xa3\xea\x96\x71\x1c\xbb\x18\xe9\x2a\xf5\x0c\x52\x7d\x7e\xd4\x57\x87\x7a\x07\xab\x83\x72\x15\x18\xc8\x9f\x7a\x86\x41\x91\xb1\xe9\x74\x33\xb7\xc6\xcd\x63\x4a\x83\x2e\x19\x89\x1e\x76\xc6\x21\x22\xa4\x9d\xbf\xfd\x83\x49\x8a\xa4\x16\xac\xcc\xb7\x73\x7f\xe7\x5f\x4f\xb2\xc3\x53\x28\xe6\xf6\xec\xec\xaa\xa4\x2e\x43\xdb\xa5\xbc\x96\x89\x67\x3d\xab\x96\xf0\xbe\xfa\x3c\x83\xeb\x41\xd4\xd8\x87\xb3\xa1\x17\xd0\x55\xe3\x0b\xb8\x7f\xbe\x7c\x71\x94\x72\xf6\xc7\xa4\xcc\x45\xf6\x28\xf5\xfa\xdd\xc4\x8c\xa3\x44\xf7\x7b\x73\x3c\x0e\x3b\x9f\x50\x79\xdb\xd0\x7a\xf3\xa3\x84\x7a\xf1\x41\x71\x9c\xca\x2f\x6a\x76\x65\x52\xb4\x5d\x0f\xdc\xdb\x98\x68\xf2\xc7\x62\xb6\xd4\x93\x3b\xa1\x08\x36\xf9\x5b\xff\x71\xcb\x88\x04\x00\x24\xc9\x05\x34\xc4\xd7\xa9\x5a\x23\x03\xb0\x4c\x29\x61\x01\x2a\xf5\x8b\xc7\x84\xa9\x63\x27\xbb\xfe\xd0\x39\xd0\x80\x2a\x05\x26\x2d\x8e\x66\x3b\x78\x50\x8e\x92\x50\x8b\xc1\xf2\xea\x2b\x9b\xe7\x58\x0b\xde\x10\xa4\xd6\x63\xd0\xd2\x5b\x0e\x97\x3b\x8c\x5d\xed\x59\xde\xbf\x19\xbb\x04\x4a\xff\x1c\x60\xc7\x0e\xa1\xae\xfe\x85\xf6\xd1\x5c\x2c\x1b\x84\x75\x3b\x59\x57\x6a\x49\x47\x3d\x65\xaf\x3e\xd9\x41\xa3\xd5\x14\xb5\xc4\x52\x2c\x14\x1b\xdb\xee\xd9\xcb\x33\x96\x95\xb2\xe0\x2d\xc0\x70\x00\x86\x7f\x1b\xf8\xed\x8c\xfd\x3b\x1a\xfe\x68\x8f\xbc\xa8\x0e\x2f\x9b\xa5\xc0\xb1\x88\xa1\x9a\xda\xff\x66\x86\xca\x0f\xf0\xed\xd4\x44\x66\x12\x91\xfa\x27\xca\x1f\xc5\x29\x42\x9a\x5d\x8f\xf7\x9e\xd2\x02\x7c\x60\xff\xe3\xb2\xc0\x3f\xb8\xa6\x6a\x39\x85\x41\x7b\xa4\xac\xe7\xd1\x4f\xd0\xe2\x37\x1e\xdf\x5d\x71\xbc\x02\xb9\x05\x27\x67\xc7\xf7\x2c\x4e\x6f\x3f\x30\xe0\x63\x82\x76\xb9\xc4\x20\xaa\x43\x33\x09\x5d\x31\x31\x30\x33\x09\x05\x82\xe3\xac\x4d\x9f\xd3\x20\x31\x20\xba\x25\x14\x97\x3a\xb9\xd1\xc7\xfc\x42\x29\x01\x16\xb5\x1d\xae\x9f\xd5\x79\x41\x0a\xe0\x78\xed\x32\x0a\x5a\x1b\x49\xaa\x7b\x5f\xef\xcd\x75\x63\x95\x21\x3a\xf8\x64\x1e\x29\xb0\xeb\xb5\xb8\x3e\x37\x80\xe5\xd1\x0e\x9d\x3d\x11\x99\x81\x48\xf6\xc6\xf8\x6c\x4d\x4e\xb2\x52\xe2\x8c\x70\xfa\x3a\x55\xc4\x3d\x4d\x7f\xaa\xfc\xbc\xdd\x45\xad\x26\x37\xf2\x15\xe8\x15\x49\xeb\x8a\x4c\xde\x47\x15\xb7\x10\x72\x07\x50\x3a\x79\x59\x50\x60\xb8\x3a\xce\x8f\xeb\x67\x3b\x99\x79\x68\x46\x9d\xd9\xb4\xad\x6a\x7e\xa8\x1c\x6e\x61\x81\x00\x33\xf3\xed\xfc\x13\x7d\x97\x42\x09\x57\x5c"}, +{{0x47,0xee,0xe2,0x02,0x4d,0xbe,0x09,0x95,0x3e,0x98,0x1f,0x69,0x86,0x52,0x0f,0x66,0x60,0x82,0xaa,0x9e,0xf4,0x89,0x2d,0xfd,0xfb,0xdb,0xd2,0x50,0xd2,0xa1,0xdf,0x28,},{0x9f,0x13,0xcd,0x8e,0xbf,0x50,0x80,0x34,0x79,0x75,0x15,0x9f,0x36,0x02,0x96,0xa7,0x16,0x40,0x14,0xd8,0xd0,0x69,0xe8,0x31,0xda,0xb0,0x33,0x26,0x07,0x99,0x7c,0xde,},{0x5d,0xef,0xae,0x0e,0x17,0x3e,0xcc,0x18,0xd5,0xf0,0x1e,0xc9,0x29,0x1b,0xe1,0x60,0xd5,0xea,0xbf,0xf6,0x3f,0xd5,0x42,0x3f,0x2b,0xc6,0x6e,0x3f,0x64,0x08,0xc1,0x96,0x35,0x35,0x02,0xdc,0xef,0x21,0xef,0xfa,0x4b,0x9c,0x14,0xbf,0x27,0xb6,0x87,0xd1,0xb6,0xe8,0x6b,0x2a,0x20,0x5a,0x89,0xeb,0x35,0xc3,0x76,0xa3,0xa3,0x25,0x69,0x0d,},"\xc1\x33\xf0\x33\xcf\x3b\xec\x6c\xd1\x92\x12\xea\x47\xdb\xec\xb1\x3f\x2c\x60\x18\xf9\xe0\x87\x8a\xc8\x84\xbf\xb5\x75\xc0\xf5\xd3\xfc\x5b\x49\x99\x58\x0e\xb8\xac\xbc\xaa\xc8\x3a\xe9\xac\x9b\x44\x3e\x6d\x1c\xff\x44\x9c\x36\x89\xb4\x33\xd5\x09\x00\xb2\xe8\xb7\x1d\x00\xe1\x19\xc8\xb8\x75\x09\x4b\xda\xb9\x16\xad\xaa\xb7\x5b\xcc\x85\x29\x59\xd8\xd7\x59\x79\x5b\xbd\x6b\x36\x0e\xe4\x84\xaf\xe4\x7b\x1a\xd2\x83\x91\xf2\x5a\xfb\x8d\x4e\x3a\xfe\x0c\x5b\x60\x04\x98\xa1\x28\x33\xfe\x2a\x1a\x54\x83\xdf\x94\x0b\x17\x3b\xa0\xd9\xd8\xc4\xd1\x32\x1f\xa4\xb7\x33\x33\x4b\x0f\x6d\x87\x8a\x0e\x5a\x76\xf4\xf1\x80\xac\x11\x9a\x82\x08\x2a\xcb\x14\x88\xe4\x9b\xbc\xa7\xa0\x36\x9c\x19\x1b\xd6\xd0\xc5\xd4\x45\x65\x68\x21\xa9\x9c\xcb\xc9\x45\x94\x9e\xca\x81\x36\xcc\x6e\x12\x7d\x9d\xe9\x2e\xf6\x4f\x17\x4a\x6c\x04\xc8\xb5\xe5\x24\x95\xf0\xdd\x67\x4b\xb5\xca\x12\x8a\x92\x09\x96\x8f\xd4\x50\xdc\xe3\x19\x91\x3f\xd6\xa3\x0c\x33\x82\x79\x81\x63\xe6\x58\x5f\x58\xef\x20\x8b\xe4\xd0\xc6\xa2\x51\x3a\x75\x23\x88\x39\x7a\x4a\xe4\x44\x83\x8c\x84\x66\xdb\xc3\x6f\xbc\x36\xae\x08\xbe\xc8\x8e\xed\xa1\x31\xc1\x4d\x06\x36\x6b\x67\x31\x51\x45\x41\x00\xde\xa1\x11\x81\x50\xfb\xe4\x41\xb1\xe7\x82\x6e\x54\x5d\x98\x68\x24\x2e\x89\x9f\x5e\xa5\x3e\x43\x4c\x37\x93\x6c\xe6\xfd\x06\x14\x62\x83\xe8\xfb\xd5\x36\x48\x0d\xe5\x5a\x16\x10\x2c\x44\x75\x4b\xc5\x54\xd5\xbc\x2d\xe2\xf2\x5e\x19\xe5\x67\xa0\x23\xdf\x46\x40\xe7\x4f\xf3\xa4\x9e\x4d\xd3\x0e\x0e\x25\x58\xb3\xdb\xc2\xaa\xb9\x2f\xdd\x5e\x79\x42\x5e\xcb\xc4\xc6\x99\xfe\x1f\x16\x19\x65\xf1\xd0\xb4\x5d\x8b\xda\xb5\x2e\xc9\xbf\x7a\x69\xd8\xaa\x0b\xd1\x71\xe7\x55\xce\x7b\x8d\x07\x18\xf7\x26\x7a\xfb\x73\x3e\xfc\xa5\x4b\x21\x3e\x6f\x5a\xda\xb4\xc9\xd7\x6c\x86\x7f\xcb\x69\xae\x05\xc7\x4b\xd2\x15\x16\xcf\x34\x2c\x61\x61\xf6\xfc\x9e\xcc\xac\xf9\x70\xeb\xce\x54\x0c\xd8\x92\xbc\x10\x6c\x6b\xd5\x63\x61\x02\x98\xb7\x09\x68\xf0\x91\xbc\xc6\xe1\xf7\xab\x4a\x5b\x2c\x63\x74\xa1\x90\x3f\x4d\x3a\xd5\xe1\xbd\x86\x43\xa9\xc2\xf8\x78\xc3\xd7\xa4\xdc\x49\xef\x31\x97\xed\xbc\xda\x7b\xb9\x1e\x7e\x06\x60\x60\x87\xd4\xe9\x81\xbf\xab\x93\xa6\x02\x49\x77\x96\x2e\x45\x26\x25\x17\xf3\x38\xb6\x85\x7e\xec\x21\x58\xa2\x97\xb2\xaa\x91\x52\x4b\x67\x7a\x21\xaa\xc5\x7b\xe0\xb6\x3a\x80\x74\xfe\x54\xe7\xa9\xdc\x70\xc5\xa5\xc3\xde\x72\x8b\x9c\x17\xec\x12\x12\xab\x11\x30\xeb\x17\x62\x2c\xd7\xb2\x2a\xb6\xeb\xa9\x18\x5e\x8d\x67\xbe\x6c\x47\xa2\xe5\xad\xc6\x63\xd4\x64\x2c\xc1\x20\x22\x2e\x29\x9f\xe1\x34\xfd\x7f\xcd\x00\xad\xab\xcf\xaa\x64\x2f\xe2\xe0\x8d\xd5\x2e\x2c\x3f\x32"}, +{{0xb6,0xc8,0x8b,0x4c,0x90,0xfd,0x19,0xa1,0x49,0xd3,0x81,0x67,0x19,0x53,0xb9,0xb1,0x6d,0x42,0x8f,0x63,0x61,0xcf,0x50,0x3a,0x11,0x04,0x77,0xe2,0x97,0xf8,0xd2,0xf8,},{0x8e,0xbf,0xb0,0x84,0xf9,0x97,0xb2,0xea,0x79,0x32,0xa2,0x35,0x3b,0x2c,0x8b,0x16,0xbd,0x82,0x5e,0x1a,0xf5,0x87,0xa8,0xeb,0xc5,0x1a,0x6c,0x45,0xae,0xa3,0x43,0xae,},{0x74,0x47,0xa2,0x01,0x81,0xb0,0x2c,0xf1,0xb6,0xad,0x52,0x95,0x69,0xce,0x43,0x7c,0x2a,0x05,0x08,0x11,0x6f,0x50,0x20,0x5c,0x41,0xe6,0x37,0x8b,0x74,0xfe,0x2f,0xc5,0x36,0x30,0xaa,0x0d,0xc4,0xb8,0x0c,0x31,0xcb,0x26,0xc8,0xf0,0x9b,0xf8,0xfa,0xb2,0x7e,0x3a,0xbc,0x8f,0x1f,0x60,0x4a,0x5e,0xc0,0x66,0x31,0xa8,0x4f,0x6f,0x2e,0x06,},"\x7f\x4b\xf4\xf5\x21\x73\xef\xf0\x72\xf8\x18\xd0\xaa\x97\xe6\x93\x5d\x8b\xac\xcf\x48\x39\x66\x32\x53\xb2\x41\x4f\xe6\xb1\xf3\x4c\xf4\x3a\xb1\x20\x15\x5a\x1a\x3a\xea\x7b\x48\x19\xdd\xd1\x03\x16\x73\xb8\xa7\xa6\xbd\x0b\x9d\xda\x4a\xde\xfe\x69\x2a\x56\x16\x2c\x64\x61\x80\x79\x42\x64\xc5\x12\x21\x15\xeb\x90\xa6\xd3\x05\x4f\x08\x43\x02\xdc\xe3\xd8\x36\xac\x3d\xe8\x20\x63\x8b\xd8\x9a\x86\xbf\x0a\x4c\x01\x54\x7c\xfd\xc5\x43\xd6\x76\xfe\x16\x39\xef\x72\xc5\xb8\x45\xc4\x94\xe0\x78\x14\xce\xc8\xa4\x7d\x03\xdf\x73\xbe\x4e\x33\xc0\x5a\xfe\x9a\x19\x0d\xda\x04\x33\x60\x49\x6b\xe4\xcf\x3a\x63\x19\xda\x9a\xb0\x64\x81\x67\x7f\x1a\x43\x74\xd6\x0d\x3d\x3b\x63\x94\xf8\x84\x3c\x86\x9b\x0f\x41\xa1\xe8\x1c\x2b\x1a\x54\xbf\x5a\xac\xbd\x98\x20\x7c\x8d\xba\xcb\x36\x42\x2a\x3a\xa0\x13\xd5\xe8\x49\xe0\x44\xaf\x92\x85\x45\xc0\x46\x09\x7c\xaf\x14\x9d\x97\x02\x15\x11\x5d\xea\x0b\x5a\x85\x40\x1f\xf6\x72\xe0\x2e\xd4\x0b\xd0\xf5\xa4\x40\xcd\x56\x49\x40\x53\xc8\x96\xc3\xbd\x32\x60\x63\x49\xf7\xcb\xe7\xec\xe2\xa2\x23\x0c\xf2\x36\xda\xc5\x9f\x78\x17\x96\x5f\x3f\xa8\x0f\xb4\x8a\xa3\x0b\x0b\x19\xef\xa9\xa9\x65\x91\x64\x6b\xd2\x5e\x67\xc1\x85\xf7\x7e\x21\xd6\x63\x0b\x28\x8d\x4e\x55\x14\x6b\x2a\xbc\x15\xe9\x50\x88\xd9\x36\x08\x07\x75\x61\x81\x54\xbb\xdd\xa1\x15\x70\x2a\x2a\xfd\x6f\xd5\xf5\x6b\x92\x3e\x18\x88\x33\xec\x44\x89\x44\xd3\x02\x83\xe3\x37\x25\x42\x42\xc5\x81\x2d\x72\x45\xa4\xe9\x26\x70\xbc\xe3\x54\x6e\xfa\xed\x22\xd2\x74\xe1\xe6\x04\x8b\x5a\x0f\x01\xef\xbf\x89\x5d\xc4\x24\x94\xba\xf1\x74\x71\x85\xcb\x1a\x4b\x88\xfd\xf1\xe6\x09\x9b\xaa\xbc\x6a\x5a\xb5\xa2\x72\x7b\x1e\x24\x87\x89\xd1\x70\xca\xa2\x44\x96\x71\xa8\xf6\xe0\x94\xc1\x13\x32\xea\x0a\xc2\xaf\xe8\x81\x32\xc6\x44\xff\x88\x3d\x0c\x49\x9a\xd7\x6a\x93\xdf\x47\x2f\xa0\x13\xea\xa2\x7a\xb4\xda\xd6\x79\xd2\x51\x1b\x50\x49\xc4\xe9\x8b\xaa\x2e\x7b\x00\xa5\x34\x89\x1e\x29\x02\x65\xed\xb0\x76\xf7\xdc\xa8\xe6\xfe\xf3\xf4\x33\x03\x4a\x16\x57\x5f\x0e\x53\xda\x45\x77\xe6\xb1\x3f\x0c\xb0\xd7\x85\x87\x0d\x0d\x09\x8d\x5d\x80\xf4\x13\xa2\x68\xba\x84\xe0\x43\x1a\x78\x69\x23\x77\x13\x78\xcd\x57\xb8\x19\x22\x58\xe2\x63\x3c\xdb\xe0\x3c\xc3\x16\xa0\x95\x09\x70\x52\x6f\xd3\xe0\x93\x76\xbc\xef\x0d\x03\xb7\x07\x4e\x59\xa5\xa8\x4f\xc6\x4e\x79\x5a\x81\x21\x56\xd9\x60\x56\x76\x50\xbb\x1e\x14\x24\xb3\xcc\x9a\x4d\x99\xd5\x7b\xa8\x58\xdd\x1a\x0c\xad\x35\x32\xe9\x98\x14\x6e\x79\x26\x40\x45\xe2\x8e\xbb\xfd\x75\xa4\x26\xb0\xbb\x85\x1a\x24\x4a\xd6\xbe\x7b\xd5\x76\x5a\xf4\x93\xdf\xc4\x4e\xe3\x78\xcd\x04\xda\xf3\x91\x7e\xef\x2a\x62\x06"}, +{{0x79,0x49,0xa9,0x47,0x2f,0x72,0x5c,0xe7,0xc6,0x8d,0x7e,0xa8,0xfc,0x16,0xe1,0x3d,0x9e,0x0e,0x0a,0x58,0xf5,0x8c,0x24,0xf9,0x22,0x8c,0x88,0xe8,0x02,0x64,0x09,0x0d,},{0xa3,0x70,0xf8,0x28,0x33,0xf8,0x8b,0x4f,0x5f,0x53,0x10,0xb9,0x18,0xe6,0xaf,0x93,0xbb,0x72,0x4b,0xfb,0xdf,0x3c,0x02,0xc5,0x03,0x78,0x0b,0x2c,0x83,0xab,0x6c,0xc6,},{0xe0,0x28,0x98,0xcc,0x7c,0x30,0xee,0x01,0x64,0x82,0x47,0x49,0x7b,0xe8,0xa9,0xc6,0x37,0x85,0x93,0xdc,0x88,0x20,0xbf,0x7c,0x17,0xff,0xcd,0x18,0x11,0x8a,0xf0,0x98,0x79,0xa7,0x69,0xf5,0x39,0xdd,0x92,0x37,0xe9,0x68,0x21,0x16,0x66,0x34,0x99,0x8f,0x94,0x6d,0xa6,0x5e,0x6d,0xba,0xd8,0x27,0x15,0x11,0x66,0x9e,0x2d,0x6c,0xad,0x02,},"\x95\x53\x86\xb9\x2d\xd6\xbf\x92\x60\x1b\xf8\x1e\x84\xd2\x51\x44\xb5\xfc\x0b\xcd\x7d\x23\xc7\x6e\x7d\xeb\x5f\x5b\xa6\x31\x6b\xb6\x1a\x5d\x8e\x74\x18\x5b\x01\x29\x67\xf0\xa4\x43\x8b\x53\x16\x96\xde\xb4\xb8\x10\x10\x89\xe0\xc0\x48\x2a\xdf\x13\xc0\x61\x31\x91\xb9\x77\xf7\x7b\x04\x19\x81\x41\x47\xf5\xda\x64\xa1\xd3\xbe\xb1\x27\x5b\x98\x49\xd1\x29\x7b\xa8\x53\x2a\xe0\xa6\x47\xa8\xac\xe3\x95\xae\x0e\xd0\x0f\x67\x34\x8c\x5e\xe5\xea\x19\xb5\xf1\xc5\xbd\x2e\x62\x28\x18\xe8\xad\xcb\xa3\xc1\x7c\x27\x98\x7e\x4e\x3d\x6d\x91\x0a\x56\xc7\xe5\x14\x9d\x3f\x55\x74\xfc\x06\x00\x9b\xf4\xdd\x3e\x37\xcf\xe3\xeb\xda\x2c\x21\x16\xd3\x66\xdd\x88\xce\x5e\xa7\x2a\xb3\x87\x49\x05\x85\x44\x3b\x08\x6e\x8a\xa3\x8d\x11\xd3\x82\x0b\x72\xc6\x58\xe4\x63\xcd\xb5\x9c\x53\x93\x01\x1d\x4a\x8f\x4c\xb6\xa1\x95\x22\x93\x04\xe7\x62\x39\xfa\x5e\x8c\x2c\xbe\x0f\x39\xdc\xad\x13\x8a\x0e\xcb\x3c\x51\x57\x9e\xc9\xa1\x20\xa5\x16\x07\xee\xfe\xbf\xa5\x9a\x44\x62\x0e\xa5\xb1\x91\x60\x87\xea\x33\x85\x33\xfc\x13\x2f\xf2\xe4\xa4\x3d\x05\x2f\xd0\x8b\x6b\x1b\x24\xfb\x67\x2f\x73\xc9\xb9\xba\x20\xb7\xc1\xc4\x1e\xa2\x4d\x91\x2d\xe9\xb5\x55\xb6\xe5\x68\x2b\x97\x06\x08\xff\x22\x9a\xd3\x08\x6f\x43\x1f\x9b\xe1\x90\xec\x39\x22\x4b\xa2\xed\x8a\xcb\x4c\x8e\xac\x85\x82\xe2\x3a\xaa\x79\x82\x7c\x44\xe2\x48\xc5\xba\x09\x2d\xda\xc0\xf2\xf7\x96\x84\xaa\x93\xfc\x06\x10\x73\xe1\x82\x1a\x56\xaf\xb9\xbf\xec\x95\x2d\xf2\x71\x9a\x9c\x7a\x40\x3e\x6a\x93\xf7\xa6\x56\xd7\x4b\x61\xc1\xd1\x90\x83\xf8\xd3\xf1\x9e\x65\x9f\xa2\xb7\x18\xe0\xbd\x04\xb6\x93\xd6\x3d\xaf\xb8\x6a\xdb\xee\x5d\x87\xc7\x5b\x7d\x12\x91\x22\xf1\x78\xa0\xe6\x69\xeb\x03\x5c\xa4\xd8\xeb\x45\x39\x7f\x18\x51\x26\x4e\x2c\xf0\xa0\xcd\xd3\x07\x20\xc5\xe1\x39\xcd\x6a\x57\x3f\x1f\xa2\x41\xca\xe9\x42\x58\x05\xac\x79\x60\x3e\x8d\xe3\x50\xef\xdb\x0b\x9b\xc9\x5b\xa7\xb0\x85\xc1\xed\x92\xc1\x2a\xcf\x53\xf5\xd4\xa1\x13\x75\x98\x00\x8f\x2a\x36\x72\xc8\x4e\x5f\x76\x9a\x25\xc7\xa4\xa1\x65\x79\xd8\x62\x88\x77\x49\x72\x60\x6e\x4e\x7d\x85\x26\x3a\xd2\x17\xe0\xdb\xcf\x34\x3f\xe5\x54\xc1\x09\xc5\xd9\x40\x9b\x79\x39\x07\x3a\xc5\x5a\x03\x42\x0f\xec\x28\x9b\x11\x4a\x5c\x54\xc2\x0b\x45\xea\x69\x93\x85\x33\xad\xe7\xb3\xae\x85\xe1\xa7\x83\xdd\x97\x89\x7c\x3a\xe8\x25\x41\x83\xcc\x54\x04\x5c\x2a\x18\xec\xbe\x52\x16\x91\xf2\x61\x9d\x9b\x8f\x1f\xb3\x47\xca\x05\x5a\x7b\x0b\x4c\x24\xf6\x4d\x17\x73\xe0\x14\x16\x44\x1e\xfe\x15\x99\x23\x21\x7a\x84\x87\x4b\x9c\x4e\xc2\x65\xcd\xaa\xb6\x43\x90\x80\x68\x49\x78\x12\xc1\xaf\x15\xc1\x88\x07\x1e\x78\xf5\x97\xfe\xdf\xce\x91\xc5\xd4\xc6"}, +{{0xd6,0x8a,0x5e,0x3c,0x47,0xee,0xdb,0x30,0x99,0xdf,0xfc,0x80,0x4c,0xf1,0x9c,0x5e,0x74,0xbf,0x7b,0xf5,0xf0,0x1f,0x54,0xd4,0xd9,0x1d,0x75,0x74,0xf3,0xd3,0xdc,0x7c,},{0x46,0x46,0x7f,0xe9,0xce,0x3a,0xcf,0xd0,0xd7,0x43,0x46,0xbe,0x21,0xc4,0x62,0x16,0xdb,0x81,0xae,0xce,0x6c,0xe0,0x30,0x8f,0xb8,0xdc,0x63,0x86,0xfc,0x34,0x46,0xcf,},{0x89,0x6f,0xc3,0xca,0xba,0x7f,0xd3,0xfc,0x28,0x5d,0x5e,0xdd,0xdd,0xc0,0x12,0x0c,0xd4,0x6d,0xa7,0xc6,0xef,0xab,0xe6,0x6b,0x15,0x0b,0x00,0x27,0x60,0xb8,0x41,0x4a,0x89,0xac,0x9e,0x7f,0x1f,0x7b,0x7c,0x7b,0x33,0x59,0x8f,0x61,0xf4,0x57,0x18,0xe4,0xff,0x4a,0xc3,0x68,0xff,0x12,0x96,0x14,0xb4,0xfe,0x92,0x19,0xf2,0x37,0xb0,0x09,},"\x59\x6c\x03\xd0\x87\x3f\x57\x2f\x45\xc3\xb1\x6f\x0e\xf4\xb5\x2a\xd2\xbf\x59\xec\x76\xd3\xc0\xe5\x34\xd6\x2c\x1f\x84\x16\x4d\xda\xa4\x25\xfb\x85\xc9\x54\x84\x85\xb7\x06\x46\x77\xe9\x9d\x04\xc3\x9b\x6e\xba\x04\xc9\x66\x39\x7b\xa6\xa5\xf4\xeb\xaa\x69\xa2\x41\xdf\x95\xa6\xe4\x45\x02\x50\x9d\x63\x50\x55\x7e\xbf\xea\x60\x26\x4b\x62\xad\x7f\x74\xd1\x6e\x5d\x25\xd4\x59\x70\xcf\xeb\xeb\x33\xe7\xb1\xba\xc3\x34\x8d\xd0\x3a\x8e\x99\x13\x3b\x26\xbb\xfd\x7a\xa7\x22\xc2\x58\x7f\x72\xd5\x52\x6e\x98\x0d\xa9\xee\xbd\xf1\x08\x21\x1d\xae\x50\xbb\xe8\xc6\x5f\x9a\xbe\xe6\x9a\x1b\xbf\x84\xc0\x3e\x40\x44\x8b\xab\xad\x03\xd3\xcf\x3b\x7d\xe4\x88\x7d\x2b\x47\x73\x77\x02\x79\x64\x82\xd2\x26\x5c\x56\x6b\x0f\x62\x3b\x53\xc8\x67\x1b\xd3\x71\x9e\xde\xc0\xff\xd5\xf4\x9b\x49\xb0\x72\xc1\x56\x4a\x57\xf9\xba\xb6\xb9\x2d\x1f\x06\x8d\x75\x66\x39\xa4\x33\x14\x52\xe6\x1a\xa7\xb2\x18\xa8\x8b\x9d\xb7\x7a\x19\xfb\x82\xf1\x3e\x98\x68\xed\xb7\x98\xd5\xbe\xec\xa5\x5d\x1a\xb0\x95\xb3\x16\x22\x5f\x3f\x63\x90\xf8\x95\x78\xf0\x16\x04\x28\x74\x7b\xcd\x21\xbe\x6a\xe1\xd8\x69\x91\xb4\x8e\xf8\x0d\x56\x92\x50\x85\x8f\xeb\xf3\x27\x6b\xd5\xde\x3d\xb6\x5a\x24\x5c\x8b\xdc\xf1\x48\x8c\x48\x25\x96\x89\x45\x78\x6b\xed\x63\xf3\xd1\x3f\x14\x09\x36\x3b\x94\x85\x60\x47\x68\x58\xb3\x96\xbc\xe5\x88\xe4\x0b\x31\x1d\xdf\xc2\x2a\xd6\x22\xca\x7d\x1e\x69\x56\x14\x64\xdd\xa5\x00\x9e\x63\x8a\xa5\xec\x9f\x4c\x03\x92\x93\xaa\xec\x75\x00\x1f\xfc\x68\xa7\xcb\x3a\xe0\x18\x74\xdc\x7f\x39\xd7\x50\x27\xf5\x9a\x28\x96\x5f\xc1\x95\x30\xc0\x75\x2f\xe9\x9b\x15\x3d\xa7\xc0\xe5\x42\xbd\xa7\x6c\xa1\xe1\x0b\x7e\xa1\x58\xef\xb4\xd8\x21\xfb\xc6\x5e\x72\x71\xad\x99\x41\x09\x53\x15\x44\x7a\xbc\xad\x08\x80\xa0\x07\x5d\xd0\x4b\x13\x25\xc7\x26\x33\xac\xbc\xb2\x61\xfc\xb4\x07\xc2\x64\xa3\x4d\x70\xbf\x1f\x04\x4f\xee\xad\x06\x9a\xf5\xa8\x7d\xd3\x52\xf4\xbd\x81\x10\xfa\x17\x8a\xdb\xd8\xdb\xf2\x3c\x6b\x57\x5c\xdd\x5d\xf2\x2c\xc9\xa5\xcd\xd3\x7d\x9c\x8f\xaa\xb8\x1a\x4c\xb3\xfb\x5c\x4f\xe7\xff\x62\x9d\xba\xa9\xfc\x06\xb8\x0c\x1f\xb6\x91\xc2\x86\x55\x95\x5c\xfe\x5c\xa4\x41\x49\xb1\x50\xb3\xcf\x14\x0d\x9a\xca\xcb\x14\x31\x3a\x72\xc8\x40\x98\xde\x72\xba\xcc\x02\x72\xd7\x9e\xd6\x61\x7f\x72\xde\xc8\x8e\x19\xb8\x44\x25\x49\x2a\x42\x9e\xc6\xd2\xec\x08\xb8\x63\x46\xdf\xbf\x20\xea\x2a\x36\x19\xe7\x7b\x6a\xc6\x42\x30\xeb\xe2\x5f\xa0\x06\x7a\xbb\x5f\x33\xee\x49\xad\xc7\xc4\x4b\xda\x70\x46\xd7\xf2\x24\xf2\xe7\xa4\x89\x56\x83\xfc\xa8\x68\x4e\xd6\xa0\x31\x84\x4f\x57\x86\xbc\xda\x48\xb5\x04\x23\x94\x48\x7b\x52\x40\x2a\x09\x90\x77\x88\xa1\xe1\x40"}, +{{0x31,0xe8,0x2b,0xc1,0xcc,0x5c,0xed,0x21,0xcd,0xc8,0xbf,0xc2,0xdb,0xbb,0x97,0x6b,0x08,0x78,0x0a,0xfc,0x69,0x44,0xaf,0x7e,0x88,0xe5,0x0e,0x67,0x87,0x4d,0x84,0xf1,},{0x8d,0xf9,0x77,0xe2,0xb0,0x40,0xac,0xeb,0xd3,0xda,0xfd,0x67,0xb8,0x7f,0x92,0x16,0xe8,0xc3,0x71,0xbe,0xce,0xd6,0x18,0xfe,0xf3,0xa4,0x96,0xd6,0x51,0xa5,0xd7,0xb5,},{0x24,0x07,0x02,0xac,0x6c,0x68,0xd5,0x97,0xd2,0x22,0xda,0x94,0x9d,0x0c,0x47,0xd1,0x6b,0x39,0x0a,0x47,0x7d,0x1f,0xb5,0x79,0xe9,0xd8,0x94,0x8a,0xdf,0x9b,0x3b,0x6a,0x7f,0xd4,0x45,0x8a,0xe6,0x38,0x5b,0x7e,0x2b,0x68,0x4a,0x05,0xb5,0x5c,0x63,0xfa,0x6c,0xd0,0x87,0xbb,0x90,0x11,0x3c,0xba,0xb8,0xe4,0xaf,0x14,0x2f,0xcf,0x81,0x0e,},"\x69\xd4\x61\xb6\xb7\xa8\x66\xe9\x4c\xd5\x9a\x5a\x23\xbb\xa4\xa1\x27\x66\x02\xf0\x42\xba\xa8\x50\xd5\xb2\x92\x49\xd6\x74\x3a\xda\x04\xd3\xd9\x38\x21\x9a\xbb\xc2\x2a\xda\x66\xa1\x77\x81\x97\xf7\x0b\xf8\x0b\x59\x7a\x8b\x4a\xe0\x0b\xdb\x87\x68\x12\xd3\xab\x4e\xc0\x11\xdf\x73\x34\x1c\x85\x05\x3e\xeb\xcc\x2d\xf0\xac\xfc\x21\x54\x82\x83\xb5\x53\xec\xde\x01\x54\x82\x8e\xd5\xaf\x47\x57\x19\x85\xf8\x97\x67\xb0\x05\xb6\x22\xc9\xe7\xc0\x79\xdd\xe6\x94\xe4\x9d\xc0\x55\x0c\x79\x18\xcc\x51\x5c\x27\x4d\xbd\x9c\x54\x69\xd2\xf1\x8e\xcd\x90\xde\x66\x4e\x03\xca\x41\xe5\x3b\xe2\x0b\x96\xe2\x5a\xf4\x0c\x54\xab\x0f\x7c\xbe\x9e\x05\xca\x3f\xa5\xa3\x7c\x1a\xa8\xeb\xfb\x64\x44\xa3\x2c\x49\x6e\xfc\x68\x15\x7c\x69\xf3\x58\xc1\x5f\x6a\xc0\x9d\x46\xef\xef\x9a\x68\x5d\xf7\xe8\xdd\x63\xb3\x04\xbd\x3c\x63\x8c\xcf\x53\x2f\xe9\x01\xf1\x1c\xf9\x7c\x5b\x1c\xbe\xd3\x3c\x70\x63\x7c\x72\x1b\x02\x89\xad\xf6\xbb\x6d\x87\xc3\x04\x79\xfa\x92\x6e\x04\x30\x74\x30\x2b\x76\xf1\x15\x7d\x0a\x81\xde\xc4\x93\xe8\x7a\x3c\x64\x3e\x7a\x20\xb7\xa4\x15\x25\xa3\x8d\xb0\x4e\x78\xda\xe5\xe7\x79\x70\x66\xbf\xae\x2c\xf4\x48\xa4\x47\xe9\x00\x4c\xce\x8e\x41\xf0\x98\x79\x91\xfa\xd3\x03\x11\xdd\xaa\x45\x9a\x26\x44\xf4\xb9\x41\xc0\x68\xc0\xd6\xc0\x77\x1a\xfc\xf4\x2b\xf9\x13\x9a\x68\x4d\xa2\x98\x48\x6e\xcf\x67\x52\x3b\xf8\x50\x9a\x45\xba\x5c\xb8\xb3\x86\x4a\xd2\x2c\x0c\x6a\x82\x8c\x6d\xb7\x2e\x37\x1d\xe4\x10\xb4\x7d\xac\x49\xae\x9d\x3b\x57\x02\xb1\x73\x9b\x8d\x76\x0c\xe9\x86\x11\xc0\x7d\x88\xdf\x5f\x04\x68\x38\x08\xa2\x1a\xfc\x2e\x61\x71\x3f\xc2\xc0\x25\xcb\x25\xfc\xc4\xee\x94\x18\x41\x08\x3b\x22\xf6\x1e\x26\x56\xfb\x3b\x8d\xad\x41\xc2\x62\xc8\x9d\x2f\x17\x61\x03\x09\xf2\xd5\xc2\x95\x89\xa2\xdf\x61\xe5\x51\x49\x89\x50\x32\xca\x98\x1e\x45\x57\xe1\x30\xa2\x37\xfc\x08\x26\xfc\x87\x25\x29\x86\x1b\xbb\x83\x28\xd6\x73\xf3\x9b\x58\xb7\x3d\x06\x0e\xc5\x96\xbf\x22\xe7\xee\x08\x1f\x44\xe9\x2c\x02\xa5\x67\x76\x79\x52\x0e\x2a\x2b\x4d\x22\xc7\x7f\x2b\x21\x2d\x5a\xaf\x05\x0b\xf2\xc1\x41\xe3\xe2\x8b\x85\x71\xd4\x32\x19\x37\x42\x62\x35\xc7\xa6\x46\xd6\x47\xe3\xef\xe1\x83\xc2\x7b\x74\x92\x56\x5e\xca\xcd\x7f\x43\xc6\x7a\x74\x45\x3f\x47\x80\xe8\x87\x11\xba\x2d\xd4\xa3\x94\x1b\x12\xdd\xd3\x90\x92\x70\xfb\x3d\xeb\xd4\x22\x43\x6a\xb6\x16\x6f\x08\xc9\x9c\x88\x6c\xc0\xe8\xe3\xce\xcd\x06\x42\xe4\x42\x85\xb8\x86\x4a\xa4\x16\x94\x3c\x5a\x18\x69\x74\xf4\x64\x53\x5a\x87\x0a\x01\x28\x61\xbc\x2e\x58\x71\x49\xca\xe9\x71\x62\x4e\x61\xc3\x1d\x8a\x50\x7e\x3a\xd8\x27\x73\xe7\x23\xbc\xb7\x5d\xf5\x4b\xef\x84\x7a\x40\x7b\xcb\x7b\x1d\x57"}, +{{0xcc,0x56,0xbc,0x7c,0xdf,0xa6,0x11,0x92,0x4e,0x72,0xb0,0x7f,0x68,0xab,0xc6,0xca,0x5b,0x85,0xff,0x8b,0xba,0xcd,0xff,0x40,0x6e,0x51,0xba,0x72,0x0d,0x09,0xa8,0x66,},{0x5f,0xfe,0xe2,0x21,0xab,0x4d,0x0f,0xe6,0xf4,0xc9,0x34,0x6c,0x5e,0x5a,0x4b,0x8a,0x63,0x6a,0x6a,0x0b,0xad,0xce,0x96,0x67,0xbe,0x73,0x9f,0x4c,0x9e,0x67,0x33,0xc1,},{0x9b,0x86,0xa1,0x92,0xb6,0x4f,0x4f,0x04,0x4f,0xfb,0xf8,0x7b,0x41,0xc7,0xee,0x52,0xf7,0xa7,0x21,0xaa,0x32,0x0e,0x7b,0xad,0x64,0x25,0x99,0x59,0x90,0x31,0x5c,0xdd,0x50,0x2b,0xe4,0xe1,0x11,0x60,0x19,0xd1,0x31,0xa9,0x21,0x8d,0x19,0x61,0x4a,0xd9,0x55,0x43,0xb1,0x88,0x9a,0xf0,0xa9,0x7e,0xd4,0xd2,0x56,0xdc,0x33,0xd7,0x6e,0x08,},"\x08\x83\x04\xf2\x2e\x1a\x28\x60\x62\xde\xfb\xeb\xb1\x82\x7a\x64\xb7\x6a\x14\xe8\x70\x15\xe7\xf6\x46\x17\x87\x77\xab\xa7\x97\x04\x68\x8d\x7b\xf3\x2e\x1e\xfa\xc9\x7a\x9f\xc3\x39\x81\x0e\xbd\x3d\xf9\x3e\x4e\xa0\x24\x68\x69\x53\xed\x91\xfa\x6d\x2a\xb6\xe0\x7e\xc7\x81\x1a\x6d\x91\xca\x91\xb0\x98\xdb\x47\x25\xdf\x65\x84\x6a\x95\xb8\x08\x63\x5a\x8d\x0c\x5f\xe5\xac\xe2\x5f\x07\x80\xe8\x96\x17\x7b\xc1\xbb\xa1\xcd\xb4\x44\x92\x51\xc0\x1b\x48\x2f\x02\x38\x62\xf8\x8e\x07\x2e\x79\xcd\xe5\xdb\xd6\xc1\xd9\xad\x9c\x07\xc6\x06\xf5\xdf\x85\xa6\xec\xa2\x96\x6c\xbf\xe0\xa1\x67\x39\x68\x11\x2f\x26\xa3\x17\x05\x3f\x16\x7f\x61\x1a\xf2\x97\xef\xa8\x02\xe0\xa9\x4b\x3e\x1f\x33\xa2\x7b\x73\xe5\x59\x7a\xbb\x22\x41\x15\xeb\xe7\x5e\x29\x4a\x1b\xcd\xcd\x97\x92\x55\xb0\xa8\x02\x65\xc0\x89\xaa\xa7\xd6\xbe\xd2\xe3\xd0\xc9\x18\xf5\x6f\x4a\x55\xf4\x48\xd8\x63\x36\x5c\x6c\x58\x46\xfb\x9b\x2b\x9b\xb5\x5f\x6b\x7c\x6d\xff\x58\x47\xb7\x1b\xfd\xd4\xbb\x5b\x9b\xb2\xe4\x24\x9b\xc0\x24\x3a\x02\xab\x4d\x22\xba\x78\xa4\x3d\x18\x21\x95\xae\xd7\x8f\xec\xe8\x4c\xb1\xdd\xae\xb9\xef\xf6\x81\x56\x04\x5b\x29\x32\xe6\x38\xd7\x73\x1d\x0e\x8b\x4c\x9c\x8c\x38\x3b\x0d\x6d\x39\x2d\x21\xfc\x64\x07\x62\xc8\x7d\x36\x92\xb1\x81\x0b\xcc\x4a\x42\x39\x2f\xf1\x3d\x45\x16\x9e\xcb\xf0\x13\x50\x55\x09\x31\x05\x09\x8c\x86\x9b\x68\x88\x7e\x93\x4e\x2b\x9d\xa5\x23\x2a\xc6\xc9\x37\x38\x00\xf7\x0b\x64\xec\x64\xa4\xaa\x0c\xa0\x44\xc0\x77\x7c\xa3\xa3\xac\xaa\x13\x8c\x14\x24\x96\x72\xa5\x5b\x24\xdd\xfe\x4d\xc3\x57\x57\x32\x41\xe1\x4a\xd0\xac\x16\x47\x5a\x8e\x38\x67\x88\x6d\x41\xee\xa3\x5f\xe7\x93\x2b\xa9\xae\xaa\x0c\x86\xc9\xeb\x6d\xb7\x80\x80\x49\xad\xe7\xb5\xcc\x1a\x40\x82\x2c\x66\xde\xa9\x3a\xd2\x2d\x44\xb9\xe4\x29\x04\xb5\xb8\x36\x84\xae\x29\x31\xfe\x36\xc6\x08\xff\x70\x96\xf1\xb0\x9f\x81\x1b\x02\x67\x28\x04\x40\x6e\x08\xed\x9e\x77\x45\x67\x6c\xe0\x47\xf0\xf7\xf6\x47\x08\xe4\x9b\xb7\x87\x54\x72\x0b\x8a\xa2\x26\xf5\x55\x6a\xbf\x05\xb5\x65\x84\x64\x52\x92\xda\xd0\x8e\x24\x73\x63\x9a\x8c\xe5\x47\x5e\x0c\xe9\x19\x2f\x8b\xa2\xdd\x32\xce\x14\xc9\x19\x75\xab\x60\x2f\x7c\x13\x53\x8c\x52\x95\x2d\x03\x96\x15\x8c\x7c\xc6\xb9\x42\xbe\x7d\x92\x3e\xeb\x52\x3a\x73\xb5\xb4\x11\x96\x6d\x14\xac\x96\xe5\xb0\x96\xa5\x29\x32\xa4\x16\x29\x2e\xcc\xdd\xb9\x10\x71\xc8\x85\x60\xe7\x0e\xcd\x4f\xe2\xfe\x24\xd5\x23\xfa\xfc\xb9\x8e\x40\x21\x50\x2f\x41\x90\xa0\x51\x5e\xdc\xb2\x40\x19\xea\xca\x09\xec\x26\x15\xa9\xbf\xde\xb6\x0e\xb3\x54\xc8\x4a\x1f\x3c\xec\x7f\xfd\x7e\x65\xa5\x51\x5d\x47\x95\x9a\x4c\x4e\xc4\x8d\x80\x21\xb1\x75\x4a\xe2\xbf\x84"}, +{{0x7a,0x57,0xf2,0xdd,0xa0,0xad,0x03,0x38,0xab,0x9a,0x13,0xc9,0xa3,0x49,0x7e,0x9c,0x75,0x23,0x8c,0x15,0x31,0x58,0x97,0x89,0x22,0x7c,0xd2,0x74,0x9b,0xc6,0xe9,0x50,},{0x6f,0x73,0x8d,0xc5,0xe7,0xd9,0xe2,0x40,0xc9,0xf4,0xd0,0xc0,0x6a,0x5e,0x02,0x17,0x47,0x56,0x8b,0x69,0xa7,0x5d,0x50,0x7a,0x2e,0x0b,0xe7,0xea,0x61,0x35,0x26,0xc5,},{0x98,0x91,0x23,0x76,0x1d,0x93,0x56,0x32,0x78,0xfd,0x0a,0x78,0xae,0xd6,0x4e,0x2d,0xe6,0xf4,0xa7,0x00,0xfc,0x9a,0x70,0xd2,0x18,0x77,0x48,0xac,0x06,0xd9,0xc2,0xc3,0x77,0xd1,0x99,0x5f,0x89,0xc7,0x72,0x7f,0xe2,0xf1,0x20,0x78,0x4e,0x41,0x71,0xc4,0x2d,0x63,0x53,0xac,0x3d,0x4e,0x3f,0x62,0x0c,0x63,0x9c,0x75,0x78,0x6c,0x46,0x0a,},"\x8c\x85\x75\xa1\x1d\x2f\xf2\xc2\x38\xe4\x19\xcc\xb0\x06\x33\xd0\x4e\x8b\x8b\xd7\x74\x29\x01\xd5\x88\xdd\x6a\x2f\x00\xaa\x12\xf0\x8a\xe4\x1d\xca\xa9\x33\x8f\x8c\x47\xe9\x53\x12\x19\x2c\xf6\xb2\x45\xa0\x0c\xe6\x88\xa0\x29\xda\x56\xdd\x1b\x1d\xeb\x0d\x34\xb5\x41\x4f\xe1\xc2\x1d\x6b\x63\xd0\x6b\x85\x34\xac\xe8\xe8\x66\xc9\x33\xfd\x7c\x5a\x65\xed\xa9\x5a\x17\x37\xa9\xec\xdb\x17\x85\x91\x49\xac\x69\x69\x51\xb8\x2c\x23\x0e\x82\x75\xe9\x6d\xd0\x2f\xd4\x55\xea\x67\x53\x79\xe6\x7b\xa6\x34\x84\xb6\x28\x38\x31\xfe\x3f\xfe\x52\xd6\xec\x49\xb7\x09\x10\x67\x05\xc9\xd1\x9b\x85\x9d\xe9\xfd\x20\x08\x87\xcb\x44\xd8\xfd\xfe\x69\x61\xfa\x4c\xa2\x34\x09\x44\xc7\x64\xc7\x04\x49\x12\x08\x25\x7e\x73\x54\x82\xaf\x8c\xb6\x90\x41\xdd\xe6\x85\x24\x1d\x3f\xbf\x46\xfd\xa0\x57\x24\x8b\x89\x87\xbe\x1f\x80\xb5\x4e\xb5\x40\x09\xf3\x24\xdc\x45\x0e\x88\x6e\x79\xf9\x12\x58\x5b\x91\xc9\xdf\xaf\xe9\x01\x22\x62\xc4\x71\x40\x3b\x1e\x8b\x5c\x31\xfc\x53\x75\xa1\xdd\xf9\x9b\x68\xed\xf9\xed\x70\xaf\x85\x94\xf7\xd8\x4b\x2c\xc4\x91\x1f\xe9\x05\x00\xc6\xee\xbf\xba\xc0\x85\x55\x35\x50\xe3\x5b\xd2\xe5\x25\x14\xe9\x79\xe7\x24\x1e\x9f\x8e\x34\xcd\xf8\x51\x3a\xbe\x72\x51\x0d\xff\x3c\xfe\xc7\xe2\xbc\x64\x88\x64\x1c\xfd\x0a\x65\xae\x0e\x09\xeb\xe9\x9b\x15\xb2\x9d\x45\xea\x67\xa5\x7a\xad\x55\x4d\x4f\x8b\xfc\xe1\x38\x6a\xce\x22\x88\x39\xe3\xa8\xa5\x34\x14\x0e\xec\x3d\x37\xd5\x1b\xe3\x61\xf5\xea\x18\x83\x73\x9f\x56\x61\x5f\x75\xb0\x55\xa0\x6a\x91\x47\x1b\xe9\x8b\xc9\x45\x37\x83\xc3\x58\x38\x2b\xd0\x55\x5a\xe9\xeb\x0b\xdc\xd6\x66\x29\xa6\x11\xfc\x1a\x11\xc6\x53\xc8\x22\x14\x58\x7d\xec\x12\xba\x12\x0e\x25\x13\x07\x0f\xe6\x9e\x98\x2f\x7a\x80\xad\x15\x9f\x6a\x32\x5d\x97\x7d\x01\xd0\x50\xd1\x16\xa6\x2a\x4f\x8a\xca\xb6\xc3\xd6\x9f\xf6\xc8\x78\x21\x3c\x60\xa9\x48\x45\xca\xe1\x06\xde\x6c\x5d\x6f\xe2\x50\x8d\x94\x56\x5b\x7b\xa7\x5d\x58\xd1\xad\x47\xd7\x6a\x20\xde\xfa\x75\x68\xcb\x7f\xd6\x6f\x57\xcf\x37\x74\xa2\x1d\x3f\xfa\x7d\x8a\xa6\xd8\x6d\xc2\x84\xb7\x0e\x0f\x17\xe7\x63\x0b\xfc\x10\xcd\x1f\xc9\xa8\xd9\xc5\x92\xd3\x9f\x24\xa7\xb5\xc8\xe8\xaf\xf3\x53\x57\x7e\x6a\xc9\x00\x86\x90\xc7\xa1\x59\xa7\xe8\x3b\xe5\xa6\xae\x8f\xca\x96\x44\xbd\xdf\xa3\x7a\x92\xb0\x70\x55\xf9\xfa\xc9\xfa\x97\xfb\x3e\x8f\x5f\x4d\x91\x7d\xda\x5c\x6d\xc6\xea\x34\xb6\x4d\x30\x24\x05\xbc\x38\x06\x2e\x07\xce\x93\xa1\xa8\x8a\xed\x5f\xba\xf9\x95\xa0\x9b\x45\xb2\x8a\xd4\xa6\xb2\x73\xde\xc1\x41\x3c\x54\x04\x52\x9d\x82\x5b\x5e\xdc\x2e\x27\xa3\x90\xeb\x7e\x8c\x2b\x43\x90\x5e\x11\x6d\x88\x7a\xb5\xfb\x99\x3d\xfe\x15\x0e\xbd\xcf\x81\x7a\xe6\x2e\x03"}, +{{0x32,0xef,0x6d,0x78,0x9a,0x1e,0xa3,0x93,0xf1,0xbf,0x9f,0x11,0xde,0x34,0xf5,0x7d,0x65,0x3c,0x4e,0x77,0xd5,0x1e,0x60,0x50,0xfe,0xf4,0xe8,0xd7,0xbf,0x18,0x3d,0xb5,},{0xc1,0xaa,0x18,0x1e,0x62,0x0f,0x60,0x52,0x5c,0x2b,0x17,0xda,0x8d,0x29,0x0b,0xae,0x5d,0x33,0x9e,0x17,0xea,0xbc,0xea,0xb5,0x8c,0xd7,0x6a,0xe0,0x66,0xf4,0x11,0x79,},{0x88,0xf3,0xa6,0xe0,0xbb,0xaa,0x3e,0x06,0x0b,0xc9,0xd9,0x1f,0xe2,0x96,0x8c,0x61,0x12,0x6b,0x20,0x31,0x7f,0x59,0x84,0x2e,0x4a,0xe4,0x87,0x11,0xcd,0xba,0xf6,0x2c,0x6c,0x02,0x07,0x40,0x5d,0x1c,0x48,0x49,0x95,0x02,0x71,0xf0,0xaa,0xa7,0x59,0x30,0x91,0x10,0x9e,0x47,0x8d,0x13,0xf3,0x56,0x96,0x4f,0x7d,0xba,0xb7,0x29,0xaf,0x00,},"\x11\xa9\xc3\xc1\xba\x7c\xfb\x61\xad\x10\x33\x05\xc2\x58\x86\xde\x9f\x88\x15\xc6\xc2\x1f\x17\xa8\x73\x3a\x02\x4f\x94\x97\xda\x05\x40\xdb\x36\x03\xa6\x71\xaa\xe8\x37\xdb\xbb\xa1\x9e\x19\xf8\x2d\xdf\xc8\xaf\x85\x59\x80\xa7\x01\x25\xfc\x61\xcd\x7f\xfd\x10\x77\x7e\x36\x6e\x5e\x95\x69\x92\x7a\xf0\xf2\x45\xd4\xf3\x9b\x3f\xd0\xf4\x58\x79\xc2\x53\x40\x14\x12\x85\x5e\x57\x61\x90\x5e\xd6\xef\x31\x8b\x6a\x06\xea\x6e\x9f\x90\x6f\x9b\xd0\x16\xbc\xb6\x94\xa0\xdf\x65\xa0\x16\xbd\xfe\x84\x5a\x09\xf2\x3e\x50\x86\xc5\xaa\xf3\x75\xef\xeb\x86\xda\x51\x23\x9d\xdc\x35\x0b\xac\x0c\xdb\x03\xb8\x74\xdb\x15\x07\xe6\xad\x4e\x2c\x9f\x46\x02\x8c\xa2\x38\x83\x63\x54\x14\x93\xb6\xcb\x92\xc1\xdf\xca\xa3\xef\xd6\x8c\x6b\x4e\x91\xef\xb4\x67\x51\xd2\x3f\x4c\x48\xa9\x73\xf0\xa5\xc7\xc6\xfe\x2a\x12\x69\xd2\xa6\x9e\x9f\xc4\xab\x8b\xa3\xb9\x2f\x79\x64\x49\xba\x3d\xc7\x02\x45\xed\x50\x5c\xc0\xee\xee\x16\x36\x64\x7a\x68\xc7\x67\x9d\x0b\x6d\x65\x1b\xba\x35\xc2\x9b\x81\x47\x8d\x17\xca\x36\x85\x70\x7a\xd6\x16\xe6\xe5\x60\x43\x81\xf8\x4e\xe5\x2b\x25\xad\x02\xfc\x0d\xfb\x85\x43\x2e\xfb\x1f\xec\xd0\x90\xc0\x2a\xd0\x02\xc1\x85\x7f\xce\xd8\x8f\xdf\xb2\xff\x26\xdd\x0f\x50\x18\xfb\x47\xd8\x13\x58\x1f\x65\x08\xca\x63\x7c\x73\x65\x17\x7c\x51\x3d\x1e\xe0\x58\x79\xa6\x5c\x5b\x67\x6b\x3a\xa8\x73\xa1\x93\x5c\x54\x37\xea\xdc\xb6\x6d\xfb\x05\x2a\x5e\x7c\x3e\x81\xd4\x4b\x3d\xaf\x69\x8f\x42\x24\x4e\xe2\xee\x4b\x6e\xd2\xb7\xe6\xe5\x6e\x61\xff\x9c\xb4\x5e\x71\x9f\xd7\x46\x19\x8b\xf2\xa7\xde\x6d\x25\xaf\x3b\xc6\xc7\xb0\xed\x8a\xbe\x3c\xb3\x89\xaf\xd8\x4f\xfa\x2a\x23\x0d\x93\xbc\x0c\x29\xd5\xa9\x41\x9c\xbf\xf1\x1b\x78\x83\x32\x99\x21\x48\x0b\x58\x44\x65\x5d\x99\x6c\x7c\xab\x29\xdf\xb2\xa3\x92\x7b\x82\xba\x7c\x30\x6c\x45\x77\xb6\xf8\xb5\xdb\xe2\xaf\xaf\x9b\xf1\x4a\x8f\x95\x54\xcd\x01\xa6\x9a\x99\x1b\xf2\x12\x82\x8d\xe1\xe6\x31\x72\xe8\x33\xde\x06\x69\x8c\xdb\x3b\x28\x71\x63\x80\x31\x45\x72\xbf\x5b\xcf\xd3\x4e\xf5\x2a\x6f\xad\xda\x87\xba\xbe\x6b\xac\xdb\x20\xce\x63\xc7\x25\xcb\x0f\xf6\x1f\xe3\x0c\x1b\x51\xdb\xda\x2c\x26\x25\xf9\x9d\xfe\xb0\x29\xa3\xe5\x8c\xba\x7d\x01\x90\x51\x11\xca\xf4\x2f\x27\x02\x5e\x72\x0e\x18\xee\xb0\x7d\xae\x91\x55\xc5\x5a\xa3\x00\xe2\x2e\xb5\xe9\x4d\xc7\xa0\xa8\x4e\xe6\x7d\x91\xa9\x60\xae\x08\xca\x63\x2d\xbb\x17\x37\xfc\x9a\x43\xdb\xcf\xb3\xa8\x79\xeb\x9f\xbf\xfd\x72\x99\x33\x8e\x26\x4b\xc1\x23\x7a\xb6\xa5\xbc\x2a\x26\x3c\xfa\x99\xe8\x54\x44\x39\xd9\x63\x31\x63\x9f\xe9\x40\x8e\x54\xa3\x50\x61\x0f\xf0\x1d\xe3\xf8\x57\x99\xad\xeb\x73\xd8\x2b\xe9\x38\x07\x4d\xea\x85\x8e\xa6\x36\xb6\x3a\xbd"}, +{{0x0a,0x55,0x25,0xa4,0x59,0x8f,0x60,0x99,0x2f,0x86,0xba,0x1a,0xb9,0xee,0xe6,0xe2,0x67,0x56,0x22,0xf9,0x43,0x28,0x4f,0xc0,0x55,0x3e,0x44,0x46,0xac,0x5a,0x4c,0x53,},{0xdb,0x60,0xd7,0xea,0x29,0xf8,0xd6,0x0d,0xad,0x33,0xd0,0x2e,0xc5,0xf4,0x22,0x32,0x05,0x7b,0xd1,0xc4,0xbd,0x61,0x80,0xa2,0x42,0xcb,0x7a,0xb6,0xf4,0x42,0x67,0x81,},{0x8f,0xa6,0xb0,0xae,0xac,0x71,0x13,0x2a,0xd8,0x82,0x97,0x58,0x68,0xf1,0xbd,0xb8,0xc1,0x1f,0x1a,0x6c,0x1b,0x9c,0x54,0x59,0x4e,0x0e,0x46,0x28,0x6e,0xa6,0xc9,0xa5,0xd6,0xd5,0xb0,0xea,0xea,0xca,0x9a,0xe3,0xaf,0x74,0xe7,0x23,0x26,0xb3,0xb6,0xf2,0xea,0xa8,0x93,0xc0,0xec,0x42,0xa4,0x9c,0x56,0xef,0x51,0x4f,0x75,0xc7,0x7f,0x01,},"\xf7\x87\x32\x1b\x42\xc0\x8d\x40\x52\x44\x9a\x48\x85\x93\xd8\x85\xb4\xe0\xc3\x4a\x5d\x64\x14\x9f\xa8\xb9\xc8\x5e\xe5\x4b\xcb\xec\xb5\x09\x09\xb2\xa8\x6b\x88\x25\x8a\x10\xe0\x7e\x8f\x8c\x2d\x06\x8a\x89\xfb\x16\x5a\x6a\xce\x7e\x64\x99\x8b\xa5\x7d\x89\xd9\xbf\x2b\x8b\x38\xa1\xf6\xd8\x36\x4a\xee\x05\xce\x33\x48\xbe\xd4\x8b\x88\xc2\x47\x3b\xf5\xf2\x66\x5f\x51\xca\x07\x3a\x53\x05\x35\x8e\xaa\xd4\x36\x5d\x58\xb8\x3b\xc9\x81\x4e\x25\xf5\x4c\x37\xcd\x9b\x68\xa8\x08\xa5\x7d\x6c\x2d\x7d\x7b\x6d\xeb\x5f\xe2\x0f\x4f\x96\xfe\x72\x5f\x8d\xe6\x5c\x29\xa4\xf1\xcc\xef\xd7\xc2\xc6\xf2\xfc\x01\x16\xd5\x86\x76\xac\xbc\x58\x69\x1c\x79\xc2\xb0\x06\x78\x5a\x09\x75\xa3\x1d\x8d\x3c\x94\x91\x61\x59\x6a\x06\x8a\xaf\x22\x26\xab\x84\x25\x50\xe9\xc0\xb2\x61\x0a\x29\x53\x1d\x1f\x3f\x7f\x00\x82\x6b\xb6\xc7\xdb\xe0\x4e\x28\xae\x1b\x9f\xf6\xf8\x88\xa4\x9d\x82\x81\x2f\x45\x2e\x1b\x32\x74\x0b\x23\x4d\xdd\x96\x42\xe1\x8f\x32\xad\x9a\x9a\xf7\xf8\x95\x25\x28\x67\x4a\x2c\xda\x25\xb4\xf7\xba\x86\x70\x07\xff\xa7\xf7\x8f\x16\x3d\xb8\xf3\x69\x14\x95\x6b\xfa\xec\xd5\x0f\x6d\x1a\xf4\xee\x13\x32\x75\xa8\xea\xab\x94\xbb\xc0\xae\x52\xb6\xd9\xb2\x83\x26\x34\x23\x2e\xc0\xe8\xb5\xf8\x02\x2d\x3e\xf1\xea\xd9\xb7\x9e\xf9\xa1\x65\x64\x27\x71\x94\xf2\x38\x0d\x90\x21\xe1\xf1\x7b\x18\x4b\x8d\x3a\x7a\x34\xd1\x51\x39\xa3\x9c\x77\x28\xc2\x2e\x1a\x3a\x67\xa2\x7a\x6c\xa4\xb8\xa8\xa0\x63\x6c\x60\x54\xd0\xf7\x41\xf0\x46\x67\x36\x19\xfc\x6b\x07\x0e\x62\xff\x48\x62\xf5\x9d\x26\x90\x07\xf3\x43\x13\x39\x63\x7a\x89\xf5\x64\xc0\xdb\x3d\x9b\xcf\xcd\x19\xfc\x25\x13\x8a\xc6\x6d\x47\x4d\x80\xf4\xad\x79\xf6\xd1\xe7\x84\x44\x08\xe8\x80\x34\xee\xaf\xf4\xa7\x90\x33\x8d\x54\x6b\xfc\xd7\x42\x4c\x11\x9e\x21\x1f\x36\x3c\xb8\x9c\x88\x87\x49\x34\x6a\x89\xd3\x2f\x02\x3b\xb6\xb0\x36\x6a\x1e\xde\x43\x25\x03\x2a\xa3\x5f\x52\xe9\xdf\x93\x8a\x50\x27\xeb\xee\x96\x88\xae\x48\x0d\xde\x1a\x9c\x9b\x42\xd1\xa9\xc0\x8f\x71\x92\x23\xdf\xae\x1c\xfc\xd4\x9d\xd1\x05\x3a\xaa\x38\x1c\x24\xcc\x9c\x7a\xbf\xcf\x8f\x6d\x86\xd6\xaf\x72\xee\xf0\x53\x04\x41\x2f\x3d\xb2\x58\x5a\xa9\xe0\xf3\xa4\xf1\xb6\xd7\x10\xd0\x2a\xb1\x1d\xb1\xfc\x90\xad\x4d\xe2\x5d\x04\x29\x9f\x31\x29\xc2\x12\xe9\xcb\x73\xc0\x04\x79\x53\x45\x5b\xf9\x8e\xc8\xfd\x26\x74\xe4\x7b\x94\x99\x57\xde\xed\xa0\x18\xba\xdc\x9f\x2f\x68\xa1\xb1\x8e\xf5\xc5\x83\xb0\x95\xe0\x8d\xd9\x06\xda\x5f\x22\x0d\xa0\x29\xb9\xc4\x00\xe3\xca\x91\xc7\xcb\xd8\x7f\x34\x30\xc7\x42\x33\x7f\x61\xcf\x54\x74\x5b\x06\x22\xbc\xb9\x07\x62\xc6\xba\xfe\xf8\x7e\x1e\xc8\x88\xc3\x64\xfa\xd6\x46\xc3\x3a\xcc\x22\xaf\x54\x38\xb8\x4c\xd5"}, +{{0x2d,0x5d,0xdf,0xfa,0x2e,0x58,0xc9,0x04,0x51,0xea,0x05,0xde,0x47,0xb8,0xc4,0x92,0x34,0xe2,0x6c,0xed,0x54,0x85,0x4e,0x3a,0xce,0xf1,0x1d,0x8e,0xe6,0x85,0x2d,0xa7,},{0x7b,0xfd,0x1c,0x8a,0x4a,0x0b,0xbb,0x46,0x06,0xd2,0xe5,0xbc,0x09,0x0f,0x56,0xb2,0x0d,0x58,0xf2,0x20,0x4b,0x6a,0xed,0x83,0x1d,0x3d,0xf4,0xd4,0x06,0xb4,0x76,0x05,},{0xce,0xd9,0xd6,0x10,0x10,0x33,0x9c,0x47,0x1d,0xdf,0x9f,0xef,0xca,0xa8,0x2d,0x1e,0xab,0x3a,0x2e,0x0e,0x60,0x27,0x85,0x53,0xb4,0xdd,0x9f,0x39,0x5b,0xe5,0x81,0x49,0xc9,0x15,0x94,0xe5,0x61,0x8b,0x0b,0x10,0xbf,0x3a,0xab,0x94,0xf1,0x59,0xb5,0x30,0xf6,0x44,0x63,0xee,0xd6,0x6f,0xa2,0xac,0xe5,0x4f,0xd9,0x25,0x72,0xa0,0x6a,0x0e,},"\x4f\x1c\x5b\x4e\x6f\xac\x3b\xaa\x3e\x90\x10\xf3\xbf\x29\x3c\x77\x9e\x61\xfd\x7b\xbe\x05\xa5\x86\xf5\xaa\xf0\x80\x26\x37\x16\x27\xa2\x09\xac\xd1\x88\xaf\xb2\xdb\xe0\x31\x15\x47\x94\x05\x59\x71\x16\x40\xf7\x8a\xea\x9a\x62\x81\x89\x62\xf4\x45\xa8\xe7\xed\x6f\xe6\xc5\xf4\x91\x62\xe7\x43\x5d\x1b\x62\x5b\x88\xba\x39\xda\xb0\xad\x56\xfd\x2c\x0a\xd6\x51\x26\x61\x36\x2b\xf7\x8a\xfe\x5a\x14\x16\xb6\x47\xf3\xb8\x8a\x05\x6c\x9e\x72\x89\xc9\xb0\xcc\x3a\xfb\x43\x40\x21\x98\x56\x34\x93\xe7\x37\xb1\xda\x05\x25\x06\xb6\xc9\x30\x6d\x75\xad\x66\x93\xdb\x6d\x15\x71\xf9\x6f\x6f\x52\x99\x0c\x4d\xf1\x96\x65\xa6\xbb\x63\x07\x3f\xdd\x9f\x55\x59\x68\x96\xa2\xe9\xc2\x62\x2f\x2b\x0c\x2c\xc9\x9d\xdd\x1b\x64\x9f\xb0\x31\x80\x58\xd7\x47\x94\xe3\x8e\xc6\x57\xeb\xc8\x2a\xbd\x5b\xed\xf8\xb3\xf4\xbb\xa3\xbb\x6c\x99\x35\xfd\xf6\x82\x65\x02\xb7\x69\x04\x6b\x36\xd9\x6d\xc6\x95\xd7\xc8\x54\x04\x28\x4d\x2a\x2a\xb7\xfc\xf3\xb0\x2f\x68\xa1\x49\x3d\xd3\x83\xca\x63\x39\xfa\xc1\xcd\xe4\x7f\x53\xc5\xe0\x26\xd0\x86\x9f\xaf\xfe\x40\xab\xdb\x98\x19\x52\x30\xf1\x7d\x0c\xfa\xa5\x33\x31\x5a\xfd\xbf\xe7\xd1\xaf\xc3\xa6\x15\xb4\xf7\x50\x90\x23\x3a\x50\x3f\x88\x61\xe3\x23\x74\xe1\xea\x95\x57\x67\x42\x31\xd9\xd7\x37\xd4\x77\xb3\x3f\xf8\x2a\xc0\xb2\xc0\xba\x93\xc1\x1f\xb5\x23\xe6\x13\x61\x8e\xd3\x70\x52\x4a\x60\xf4\xd4\xc8\x36\x94\xc0\x33\x60\x6d\x1d\x06\x9d\x54\x4d\xcc\xd3\x90\x0c\x37\xa3\xb3\x36\x3e\xfb\xcf\x66\x97\xf9\xf7\x62\xb3\x3b\x12\x94\x58\x39\x53\xfc\x53\x77\x3e\xf5\x67\x26\xee\xb4\x70\xeb\xe9\x21\x49\xb7\x36\x48\xa1\x61\x61\xd4\x94\x12\x0a\x31\x8b\xfb\x08\x0c\xc3\x8e\x49\x96\xf4\xb2\x63\xff\xe7\x8c\x78\x77\xfe\x13\xc2\xfc\x55\x21\x9f\x44\x26\x0e\x8f\x25\x3b\xdd\x37\x9d\x87\x0e\x6c\x91\x04\x8b\x1d\x8d\x4e\x88\xb8\x82\x18\xb2\xb0\x49\xfe\xf5\x3b\x2a\xe1\xf8\xc9\x21\xed\x2b\xcb\x43\x46\x69\xe3\x97\x5d\xcc\x3f\xe4\x52\x0c\xa8\x02\x48\x42\xf7\xff\x2b\xa1\xe2\x2c\xfe\xb5\xd4\xc9\xe4\x35\xea\xda\x60\x1f\xf1\x83\xb2\x63\x64\xee\xe1\xfa\xa5\x9d\x19\xe6\xaa\x4f\x09\x75\x23\x84\x96\xa7\x09\xe4\x6b\xf6\x83\x36\xb0\x68\xbd\x80\xb3\x46\xf1\x1f\xaa\x38\x17\xa0\x7d\x1c\xbd\x84\x38\x2b\x21\x02\x98\x6f\x29\x5a\x13\x98\x07\x7b\xa2\x91\xd6\xb5\xf5\xbd\x86\x0e\xc6\x17\x72\x73\x46\x8f\x0e\xe0\xf2\x59\x1b\x57\x5c\x43\x66\xe1\x89\xb2\x24\xe9\xff\xa3\x5b\xc7\x8a\x4a\xa8\xc0\x69\x54\xfe\x33\xd0\x80\xff\xc0\xb2\x3e\x20\x9f\xd0\xe7\x94\x21\xf1\xbd\xe8\x18\xa8\x68\x90\xcf\x17\x22\x36\xdb\x21\x16\x57\xd1\x00\x31\x19\xfe\x91\xd4\xe2\x7c\x52\x4c\xcc\x11\xfa\xde\x0a\x25\xf5\x7a\x7a\x1d\x67\x7e\x1d\xa0\xb9\xc0\x43\xd0\x2f\xca\x38"}, +{{0x4d,0xf5,0xe1,0x1d,0xec,0x80,0xec,0xd8,0x82,0x83,0x75,0x54,0xfa,0x31,0x35,0xb9,0xd5,0x02,0x9d,0xf4,0x20,0x27,0xaa,0x3b,0x3c,0x92,0x92,0x46,0x32,0x9f,0xee,0x96,},{0xef,0xd9,0x28,0x89,0x8f,0xa1,0x44,0xc2,0xd1,0xc8,0x33,0x4f,0xa2,0xe6,0xb5,0xb6,0xa3,0x25,0xa7,0x10,0x2a,0x2c,0x34,0x4a,0x14,0x55,0x41,0xee,0x9a,0x6c,0x04,0x6d,},{0x62,0x54,0x5e,0x6c,0x07,0x80,0x1f,0xde,0x95,0xb4,0x61,0xe2,0xe7,0x53,0xc4,0xb6,0xc8,0x4c,0x25,0x12,0x4e,0xb3,0x30,0xa2,0x72,0x59,0x89,0xd5,0xe3,0x40,0xdc,0xef,0x0c,0x74,0x56,0xd4,0xc7,0xc6,0xa1,0x78,0xa2,0x21,0xb6,0x32,0x83,0x48,0x25,0x3d,0xb7,0x87,0xa9,0xe5,0x51,0x0a,0xb9,0xcc,0x27,0x85,0x15,0xae,0x3e,0x58,0xfb,0x01,},"\xfb\xd6\xf3\x71\xb4\xc8\xb1\x52\xc9\xce\x0c\x63\x96\xa7\x7c\x0f\xe4\x80\xbc\x02\x00\x7f\x33\x6a\xc5\x8f\xd4\xad\xdd\xa9\xd6\x98\x55\xac\x9e\x93\xa4\x5d\x3e\x35\x0f\x41\xff\x50\x2a\xa1\xd8\xfe\x15\x9c\xe8\x9b\x06\x48\x02\xa0\xa1\x89\x0f\x6a\x40\xa7\xef\x57\xc6\xe5\xe5\xed\x04\x02\x80\xdf\x07\xe7\xf4\x8f\xe8\x19\xbe\x63\x17\x67\x10\x75\x7c\xb6\xe4\x40\xb4\xf7\x8b\x57\x59\xdc\xe0\x28\xbf\x58\x5b\x3c\x3f\xec\xa1\xcf\x59\x81\xda\xda\xdf\xd2\x7e\xa1\x24\xaf\x45\xef\x63\x85\x42\xa8\x61\x7f\xf4\x9f\x94\x70\xac\x22\x85\x94\x3c\x7c\x3b\x11\x63\xb9\x03\x95\x5a\xb9\x9b\x6e\xab\x17\xf4\xd4\x9f\xfa\x87\x20\x7a\xbb\xfc\x11\x1c\x4b\x91\xf5\x41\x3d\xfc\x9b\xea\x31\x84\x3d\x11\x5d\xde\xb1\xda\x40\xb4\x5f\x58\xf4\x7c\x41\x7b\x5e\x77\xd5\x81\x89\x34\xe7\x30\xeb\xa9\xc4\x55\x7b\xbf\x48\xcb\x7f\xd4\xe6\x64\x55\x8a\xf4\xfb\x44\xee\x3d\x94\xc1\x6e\x88\x36\x31\xf3\x84\x76\xf4\x83\x7d\xb9\x4d\x54\x12\x2f\xa1\x34\xca\x51\xa5\x25\xaa\xd5\xe2\x4b\x76\x01\x8f\xee\x9a\x2e\x8f\x60\xe2\xbb\x48\xd2\x4a\xb8\xb1\x46\xf8\x4f\xfa\x98\x20\x12\x0e\x7c\x50\xd4\x5c\x0c\xfb\xe3\x5c\x8c\x31\x41\x9b\x07\x8e\x90\x71\x2c\xfe\x93\x4c\x3b\xe3\xa9\x4f\xf2\x15\x88\x73\xae\xfe\x34\xdc\x6e\x36\x90\x2b\x16\x75\xe1\xa4\x7c\xb6\x08\xdf\xe9\x60\xfb\x4d\xa8\xd2\xa8\x49\x0c\xc3\x8e\xba\xdc\x73\xa1\x00\x3c\x49\x41\xfd\xa8\xfa\xe9\x44\xa1\xde\x8e\x3b\x10\xef\x6d\x9e\x67\xce\xec\x74\x59\x77\xd3\x33\xac\x9e\x71\x21\x41\x21\xed\xe8\x89\x22\x95\xe2\x77\x99\xf2\x06\x67\x5a\x9d\x54\xac\x12\x15\x9d\x3a\x1f\x95\x4f\xd0\xee\xff\xbd\x30\xa3\x19\x04\xfb\x2e\xee\x77\xa8\xaa\x9d\xc4\xcc\xbb\xe2\x85\x10\x96\x14\x6a\x4c\xe0\xe8\x1f\xb9\xc6\x24\x98\xdb\xd8\x3b\xf8\x3b\x55\x02\x9a\x5e\x90\x00\x86\xb9\x53\x1c\xe3\x24\x7a\x98\xf8\x65\x4e\xfd\x8f\xe7\xa8\x36\x43\x1f\x75\xda\xf0\x86\x8f\x01\x08\x32\x6e\x23\x02\x6d\x2d\xb4\xa7\x21\x24\xec\x4e\x39\xd4\xbb\xf3\xd8\x46\xc9\xf5\x1c\xa3\xcc\x31\xeb\x1d\x02\xc2\xba\x32\x1e\x46\x19\xf2\xb6\x59\xc0\xbf\x0f\xe5\xc1\x9b\x21\x3f\x3c\x79\x12\x4f\x36\x43\xf7\x4d\xd0\xff\x9c\xe5\xd2\x77\x27\xbe\x6c\x69\x58\x15\x9c\x16\x44\x04\xf4\x33\x01\xfe\x17\x42\xe2\x79\xde\x9e\xfd\x44\x1e\x73\xe4\xea\x7a\x84\x25\x87\xa7\x9d\x11\x5d\x36\xec\xa9\xc0\x3c\x90\xff\x0d\x14\x74\x74\x10\x9f\xc2\x0a\x91\xd7\xb3\xcc\x22\xeb\xcb\xb8\xc7\xf7\x1b\xd6\x1e\x8c\xae\x47\xc5\x05\x0c\xec\x1d\x48\x49\xa1\xd4\xa8\xe7\xa6\xf8\x45\x54\x84\x37\x70\x6c\x25\x33\x1c\x9e\x57\xc2\xcc\x6d\xa1\x17\xf2\xe5\xa0\xf4\xb3\x68\xc4\xcb\x20\x62\x65\xc4\x17\x8e\x06\x55\xff\x67\x5f\xfc\x1d\x4c\x58\xec\xeb\x9e\xdb\x4d\xa3\xad\x2c\x5f\x62\xcd\x13\xab\x48"}, +{{0x85,0xd3,0x23,0x30,0xe2,0xe0,0x73,0xa4,0x60,0x30,0xca,0x0e,0xe2,0xdf,0x2f,0x8e,0xb8,0x74,0xa9,0xfd,0xdf,0x56,0x24,0xc8,0x03,0x17,0x75,0x11,0x1f,0x11,0xee,0xa2,},{0x6e,0xa7,0xde,0x2e,0xd5,0xea,0x5c,0xdf,0x50,0xbf,0xff,0xee,0x77,0xf7,0xbd,0x2f,0xcc,0x21,0xd4,0x86,0x66,0xbb,0x1f,0x48,0x90,0xc7,0x6a,0x69,0xcc,0x7b,0xa4,0xe8,},{0x41,0x43,0x63,0xfe,0xad,0x6e,0x59,0xa3,0x43,0x8c,0xe5,0xa3,0xa2,0x77,0xd6,0x2b,0xdd,0x00,0xfa,0x2e,0xfa,0xc6,0x46,0x3d,0xd1,0x3f,0xcd,0xde,0xd9,0x3a,0x7f,0x10,0x8a,0xe1,0xf5,0x28,0xff,0xc8,0xff,0x4e,0xca,0x33,0x1d,0xab,0x91,0xae,0x5b,0x14,0x16,0xe2,0xdd,0xb7,0x3b,0x6d,0xaf,0x85,0x3b,0x03,0xc8,0x1e,0x99,0x36,0x56,0x0a,},"\xae\x61\x07\xf3\x8f\xf9\x4e\xd0\x32\x79\x03\xcb\xaf\x6c\x3e\x3a\x34\x98\xc4\x7a\xbb\x29\x89\xa8\xb3\x7b\x3a\x19\xdf\x88\xc6\xde\x79\x0a\xcc\xb4\xb7\x25\x81\x77\xb9\x15\x1d\x1f\xe0\x40\x63\x57\x7d\x3c\x3a\xcd\xb4\xc9\x29\x96\x8a\xfd\xad\x6f\x25\x2a\x67\xed\x4c\xa8\x9d\x06\x0f\x1a\x46\x53\x98\x3f\x7a\xb5\x8d\xdb\x93\xe2\x87\x8f\xba\xb0\x63\x7d\xbb\xeb\x95\xd2\x5c\x59\x86\x83\x9d\xe2\x74\x8d\x9f\x34\x02\x7a\xee\xbf\x1d\x9e\xb9\x36\xcb\x67\x70\xe0\x8d\x45\xb8\x09\x5b\xac\x9c\xbb\x71\xdb\x14\xe8\xa3\x42\x22\xb1\xf2\x23\x7b\x9f\x0b\xc9\x76\x6a\x23\x1a\x6d\x10\x27\x99\xf7\xc0\x81\xd5\x00\xfb\xea\xde\x60\x3c\xdc\xdd\x7d\x5b\x96\x5f\xba\xce\x4b\xe5\xc2\xcd\x93\x2d\xcf\x5f\x6e\xd3\x17\x22\xf4\x1d\x5a\x36\x3b\x34\xba\xbf\x3f\x63\x6f\xb3\x03\x82\x4a\xa7\x01\xdf\xe1\xd3\xe4\x12\x63\x07\x8c\x1e\xbb\xdc\xb1\xf7\x3f\x12\x45\xb8\x3e\x3f\xa7\x0a\xb8\xe3\xf1\x41\x3e\x6b\x06\xbd\xae\x02\x2b\x71\x4d\x60\xa4\x01\xd5\x74\x80\xdc\x64\xe7\xaa\xc6\xd3\xde\x85\xfc\x94\xd8\x53\xca\x13\xb7\xe6\x74\x15\x57\x9d\x5c\x67\x21\x23\xa5\xaf\x19\x4b\xee\x14\xae\x35\xdc\x27\x24\xff\x20\x9f\x11\x66\x63\x86\x61\xf8\x81\xb1\x19\x4a\xa4\xe3\x1b\x42\xa5\x27\x96\x47\x81\x59\x15\x04\xba\x76\x10\x3f\x97\xb7\xf5\x52\x03\x15\x47\x3e\xc9\x4b\xb0\x17\xa1\x66\x67\xb2\x2a\x85\x76\xa7\xcc\x2a\xc0\xb7\x75\x63\x03\xc7\x56\xf0\xdd\xaa\xe9\xd0\x18\x9e\x6c\x8d\xe3\x49\xf9\x19\x57\xc7\x2a\x52\x9e\x9f\x7e\x9b\x94\x56\x52\x48\x40\xba\x02\x34\x4f\x55\xad\x3c\x11\xa0\xb2\x59\x90\x14\x39\xf2\x65\x5a\xb9\xf8\xc6\xc8\xe8\xe9\x60\xc0\x57\xd9\xc7\xda\xfe\x42\x5c\x75\xd4\xa3\x3b\x80\x1d\x45\x47\xcd\x05\x51\xa6\x80\x2a\x80\x05\xdd\x72\x42\x47\x64\xdc\xf5\x7e\x4a\xa2\x22\x90\xea\x4f\x5b\xaa\xc5\x1d\x79\x39\xc0\x53\x42\x88\x2e\xe1\x43\x80\xef\x2d\x47\x04\xb4\x19\x49\xb2\x28\x2a\x1e\x1a\x3f\xa7\xdd\xea\x9f\xe8\x3b\x9f\xc5\x1d\x4e\xef\xa2\xeb\xac\x72\x2e\x4c\x0a\x7c\x59\x9b\x69\x25\xf0\x1b\x8a\x20\x66\xdc\x0c\x26\xf9\x21\x96\xf4\xf5\x03\xe8\x87\xc1\xe6\xef\xb0\x93\xf1\x53\x13\x87\xbd\x88\xc6\x91\x99\x7b\x9b\x89\xe3\xcd\xf7\xda\x12\xd3\x73\x41\x83\xa4\xb6\x12\x6b\xe9\xe0\x77\x47\x04\xb5\x29\x65\x9b\x55\x48\xf1\xb8\x75\x12\xcc\x18\x78\xca\x4e\xf5\x59\x90\xb4\x83\xc9\xaf\x6a\xa9\x76\x35\xf4\xf0\x79\x49\x72\x70\x65\xab\xf2\x1e\x21\xe3\x29\x90\xb1\xa7\xd0\x7d\x74\xe0\x2d\x9b\x07\xec\x63\x99\x31\xbf\x9e\x2c\xa3\x94\x1f\x2b\xa6\xb5\xef\x14\xdc\xc2\xa2\x47\xd2\x11\x7e\x9c\xb4\x1e\xfa\x3f\xcc\xa2\x47\x16\x64\x14\x52\xbe\xed\x2f\x92\x65\x7c\x2f\xb7\x31\xf0\xb9\x4e\x8c\x89\x2a\x81\xbb\xa9\x1f\x63\x9d\xf4\x37\x96\xac\xd3\x01\x3a\xc0\x44\xf6\x08"}, +{{0x66,0x59,0x0d,0x36,0x99,0x84,0xc6,0xf5,0xad,0x3a,0x89,0xc7,0x8d,0xdf,0xca,0x10,0xa0,0xa7,0x65,0x79,0x95,0xdc,0x01,0x88,0xb6,0xb5,0x7a,0xc3,0x16,0x47,0x31,0xa4,},{0x98,0x87,0x3a,0xb1,0x33,0x46,0xee,0x48,0x67,0x7c,0x4f,0x86,0x12,0xdb,0x31,0xeb,0xd1,0x3d,0xb5,0x8b,0x2b,0x03,0x4f,0xd1,0x55,0xaf,0xa8,0x72,0x0f,0x4e,0x93,0xe8,},{0xf0,0xdb,0x63,0xa1,0xbc,0x76,0x24,0x16,0x1c,0xa0,0x06,0x38,0x53,0xb2,0xde,0xe4,0x5f,0xcc,0xd2,0x24,0x71,0xe0,0x12,0x36,0x6f,0x86,0x8a,0x4a,0x9c,0x74,0x65,0x4e,0x13,0xf1,0xa3,0x15,0xad,0x83,0x91,0x6e,0xbf,0xb8,0xdc,0x31,0xa4,0x20,0xf8,0x3c,0xf6,0x45,0xc4,0xc9,0xd1,0x6b,0xb4,0xd5,0xd9,0x9d,0x23,0xc7,0xb4,0x3e,0x23,0x00,},"\x2e\xc1\xc6\xb0\x82\x97\x37\x83\x2c\x9c\x79\x8a\x92\xeb\x49\x0b\x23\xd3\x34\xc3\xbb\xe6\x27\xcb\x58\x2d\x17\xa9\xe4\x29\x60\xef\xcd\xc7\xd3\x47\x50\xe0\xb4\xaa\x86\x4c\x20\x4f\xb8\xd6\x2b\x47\x99\x2e\x91\xdb\xfc\xfd\x69\xf5\x1d\x93\x7d\xc0\x6c\x48\xc0\xad\x43\xe8\x59\x83\x71\xcd\x0e\x3b\xbc\xe4\x16\xbf\xd4\x4b\x09\x44\xb9\x93\xaa\x29\x93\xfd\xea\x48\x71\x34\xcd\xe4\x22\x77\x72\x3e\x06\x83\xec\x98\xe6\x95\x95\xe9\xb7\xb1\x4c\x8c\xf9\x61\x7a\x1e\x30\xdd\xb8\x06\x0e\xac\xba\x48\xd8\x82\x53\xb1\x65\x33\x61\x08\xde\x0c\xb0\x2f\xf2\x0f\x54\x24\xb5\x67\x83\x08\x69\xc9\xb4\x32\x9c\x99\x45\xf0\xbf\x2f\x3c\x7a\xcd\x1e\x77\x43\x58\x93\x0c\xd8\x90\xfd\x9c\xb8\x64\xd9\x50\x93\x5a\xd8\xa4\xa3\xbe\xcc\xae\x8f\x83\x3f\x63\x56\x19\x13\x71\xc3\x26\x33\xdc\xf8\x82\x70\x9b\x0d\x98\xbd\x80\x7b\x38\x3a\xed\x8d\x7b\xb0\x97\xb6\xe2\x62\xef\x70\x0c\x9d\x76\x8f\x4b\x56\x90\xe3\xa1\xa8\xf2\x17\x55\xd6\x58\xdb\x2d\x1b\xfd\x2f\x70\x71\xe0\xca\xec\x7c\x2c\x53\x81\xc5\xef\x5c\x2c\x22\x81\xc6\xbc\xed\xc8\x67\x39\x0b\x90\xf3\xb2\x7b\x0f\x0f\x64\xa3\x36\x58\x57\x8a\x5c\x0d\x66\xe2\x11\xe6\xff\xf6\xe8\x64\x88\xac\xf8\x2b\xc0\xf5\xe2\x66\x4b\x83\x69\x90\x46\x03\x7c\x0d\x33\xd3\x40\xff\x98\xed\x62\x63\x35\x4c\x24\x27\x31\x36\xff\x0e\x4f\x0f\x23\x3a\x6c\x82\x54\xfc\x0c\x90\x76\x43\x30\xe3\xb1\x05\x7b\x1e\x66\x6d\x5e\xcd\x5a\x2e\xfe\xaa\x6a\x10\x5b\xfc\x85\x84\x31\xb8\x8e\xd7\xfe\x55\x1e\xb3\x2a\xc0\xaf\x27\xc6\x6a\x98\x03\xa3\xbc\xf8\x76\x34\xc6\x6c\x70\x66\xdd\x01\x97\xa3\xcb\xd2\xd6\xf4\xe6\x5c\xfd\xb8\xf3\xda\xf9\xf3\xca\x5c\x4f\x4e\x0a\xdd\x45\xf5\x54\x1a\xa1\x8d\x04\x1f\x70\x6e\x4f\xa8\x7c\x34\xe9\xa2\x23\xd8\x85\x72\xeb\x50\x08\x3e\xe8\xc7\xc4\x75\xdf\x56\x8b\xc7\x3b\xd0\x8c\x0f\x0d\xea\xa3\x74\xaf\xb1\xc1\x78\xd0\xdd\xdb\x23\x6e\x15\xa8\xbc\x23\x85\xed\x3f\x52\xb8\x76\x1e\x63\x78\x87\x40\x7a\x20\xae\xc3\xe9\x9e\xc8\x30\xda\xe3\x16\x7e\xf0\xcd\xb3\xf3\xff\xd2\x00\xd8\x3b\x75\xb7\x49\x69\x0b\x9e\x25\xe2\x17\x1d\x07\x2c\xa5\x6f\x71\xba\xec\xd2\x1f\x7d\x45\xa1\x2c\x91\xb2\xc0\xfb\x3f\xea\x3b\x15\x8e\x54\x64\x82\x84\xbb\x00\x95\xb3\x62\x44\xb0\xb1\x21\xf9\xf1\x38\x4c\xe9\x00\x43\x65\xe7\x77\x2f\xa3\x08\x28\x25\x0f\x51\x98\x5f\x1b\x17\xb2\xd2\xf8\x0a\x33\xe8\xfc\x6d\x85\x65\xea\x15\xcd\xaa\xcd\x42\xa8\x7b\xd7\xc9\x40\x8b\x1f\xe1\xc7\x70\x66\x5b\xdd\xed\x75\x4b\xc2\xff\x2e\xf9\x1b\x97\x3a\x86\xb9\x9f\x10\x59\xc6\xf2\x27\x24\x6a\x69\x8b\x38\x54\x15\x09\xdd\x54\x49\xfc\xe6\x0d\x38\x62\x24\x18\x3b\x7d\xce\x1b\x38\x84\xf7\xba\xe1\xc2\xe4\xeb\x59\x45\x10\xb5\xca\x58\x52\x79\xd9\x04\x1d\xf8\x81\x7b\x06\x19"}, +{{0x41,0xcf,0x07,0x1f,0x48,0x42,0xec,0xd4,0x94,0x19,0x1b,0x8c,0xf2,0x8c,0xc0,0x92,0x31,0x85,0xef,0x1b,0x07,0x45,0x8a,0x79,0xa5,0x9a,0x29,0x6d,0x35,0x49,0x82,0x2e,},{0x6d,0xc8,0xe4,0x46,0xdb,0x1d,0xa3,0x53,0xb5,0x8d,0x0c,0x45,0xd8,0xb4,0xd8,0x16,0xba,0x59,0xe2,0x5b,0xb6,0x80,0x71,0x2d,0x62,0xd6,0xd3,0xdb,0xf7,0x8d,0x06,0x98,},{0x41,0x05,0x2b,0xc4,0x17,0xb2,0x4d,0xc4,0x83,0x83,0x96,0x6a,0xf0,0x14,0x3f,0x9c,0x0b,0xa8,0x5b,0xbe,0xfb,0xda,0xf7,0x91,0xb1,0x6a,0x4d,0xad,0x1f,0x57,0x0e,0xb8,0x07,0x03,0xc0,0xa2,0xcd,0xeb,0x2f,0x7a,0xd6,0xdc,0xd3,0xfa,0x7b,0xdb,0x5c,0x22,0x5e,0x86,0x9c,0xd8,0xfb,0x27,0x8d,0xff,0x06,0x67,0xd3,0x8a,0xcc,0xf3,0xdb,0x08,},"\xda\xeb\x5f\x0e\x84\xf1\x59\x0b\xca\x2b\x9d\x97\x19\xef\x5d\x1c\xfa\x79\xe0\x58\x34\x46\x33\x2f\x18\xe9\xe4\xfe\xb0\xb1\xf1\x53\x40\x29\x7a\xc9\xad\x67\x24\xc8\x5b\xb1\x65\x58\xea\x54\xeb\x5d\x70\x2a\x47\x24\x8b\xad\xc6\x25\x2a\x80\x43\x71\xb7\x4c\xfe\x10\x62\xd1\xdb\xa1\xec\x68\xfd\x1d\x4d\xd0\x29\xcb\x55\x03\x4b\xbf\x61\x06\x82\x51\xef\xf3\x98\x36\x36\xf6\xde\xbd\x57\x27\xbe\x91\x99\x3b\x3e\x4d\x0a\xbc\x96\xec\x19\x64\x21\xa4\x7b\x78\x93\xf8\x39\x86\xd6\xc0\x32\x3f\x0d\x19\xaa\xf2\xcd\xe9\xd3\x56\x5c\x10\x4c\x9d\x31\x76\xec\xb5\xed\x5e\x17\x3f\xee\x52\xb5\xa0\xc4\x2b\x6a\xb2\xfc\xb1\xcc\xba\x96\x49\xc2\xc6\x7c\x52\x0e\x9b\x96\xce\xa6\x93\xdf\x3e\x58\x60\x9a\xd6\xa0\xbd\x52\x2e\xfa\xaf\x03\x85\x8d\x24\x5d\xd0\xa3\x8f\x84\xa2\xfb\x10\x20\xf4\xdd\x97\xc3\xae\xef\x0e\x24\x47\x7d\x30\xd2\x56\x70\x1e\x90\x0b\xef\x26\xa8\xa6\x26\x9a\xb6\x60\xd7\x42\x93\xa2\xbf\x1d\x20\xc2\xcf\xae\xbb\x7c\x28\x20\xf5\xf5\xb0\x74\x53\xbb\x69\xee\x76\x9b\x52\x39\x15\x39\xf0\xc6\x06\xd2\x2e\xb3\x92\x3e\xe6\xf5\xa1\xd4\x60\x50\xaf\x90\xf0\x11\xf8\x51\xac\xe7\x63\x27\xd3\xd1\x8c\x48\x17\x0a\x9a\x25\xb0\x4b\x77\x0f\xd9\x38\xef\x8a\x30\xb7\xbd\x03\x39\x1d\xd3\x6c\x51\x6b\x62\xf0\xcb\x78\x67\x07\x40\xe0\x0e\x69\x59\x5c\x41\x8d\x96\x72\x53\x82\x0b\x75\x4c\x4f\xd6\x66\xe3\xcc\xe1\x6e\xe0\xc9\x41\x83\xbb\xea\x70\x6f\xe2\x98\xe1\xc9\x9d\xdb\x82\x12\x17\xed\x90\x08\xcc\x8e\x8b\x83\xbc\x8b\x81\x99\x15\xb0\x7b\x14\x6f\xe7\x45\x02\x4a\xc3\xc4\x61\x16\xcb\x4c\xce\x5e\x32\xec\x5d\x75\x24\xa2\x38\x8d\x9f\xe2\x97\xeb\x02\x81\x1a\xf4\x54\x6f\xcd\x58\x60\xe1\x4c\x0d\x13\xf0\x3d\xd7\x5a\x42\x49\x61\x59\x00\x07\x8a\x3c\x35\x8c\x53\x42\x96\x2b\xc1\xbe\xac\xf6\x8c\x24\x68\x21\xa4\x59\xab\x53\x21\xec\x9f\x57\x4f\x49\xd1\x03\x89\xf4\x0f\x14\xdd\xfc\x85\x13\xff\xe3\xde\xaa\x73\x36\x03\x5a\x67\x5f\xa5\x85\x8b\x49\x0c\x5d\x24\x77\x80\x06\x4a\xdb\xaf\x75\xa7\x63\x35\xee\xc9\xab\x91\x87\x71\xb0\xb1\xdf\x51\x47\x64\x2a\xef\x4a\x16\x6a\xb1\x72\xed\x60\x1f\xed\x21\x0f\x6c\x0c\xff\xd9\x18\x69\xf7\x49\x0b\x57\xe7\xc6\x52\x41\x86\x3e\x7e\x8c\x0a\x26\xeb\xa6\x3b\x53\x42\xd0\xfd\x82\x14\xac\x73\x1e\x1c\x43\x8d\x01\x77\x11\x5f\x6a\x19\xe0\x93\x5c\x7a\xf6\xbc\x7d\xbe\xb7\x55\x11\xd9\xbd\x8e\x63\xe3\xe2\xf4\x7a\xb0\xdd\x1c\xed\xd7\xb1\x80\xd7\x4a\x4b\x44\xd4\x61\x19\x7a\xef\xdd\x36\x20\x46\x51\x66\xa3\x9b\x45\x39\x50\x43\xce\x88\x74\xcd\xd7\x2c\x60\x2b\xd3\xd2\xee\xcb\xad\x34\x66\xb5\xcb\x1a\xa4\x1a\xe9\x2a\x8a\xfe\xf2\xd7\x64\xce\xc0\xc4\x49\xd2\x7e\xfa\xc4\x37\x93\x8f\x28\x0b\xea\x9c\x50\xa5\x82\xe5\x7c\x27\xf9\xb3\xde\x87\x2f\x0c"}, +{{0xa2,0xc8,0xe1,0x61,0xa8,0xd9,0xd6,0xe8,0x88,0xc3,0xd0,0x9b,0x0b,0x97,0x27,0x37,0x30,0x7a,0x2c,0xbd,0x2a,0xcd,0x7c,0xcd,0x80,0x4d,0x24,0x31,0xac,0x6c,0x58,0xd2,},{0x3a,0x32,0x57,0x75,0x88,0x67,0x32,0xde,0xca,0x40,0x68,0x57,0xa8,0x05,0x60,0x10,0xaa,0xea,0x28,0x75,0x54,0x5b,0xa6,0xf3,0xdf,0x30,0x75,0x45,0x71,0x38,0x69,0x92,},{0x56,0x0d,0x01,0xb9,0x4d,0xf1,0x1d,0x83,0x34,0x77,0x52,0xff,0x51,0xb3,0x54,0x5e,0xf5,0x5c,0x56,0x32,0xae,0x7c,0x8e,0xfb,0x11,0xaa,0xdd,0x83,0x12,0xde,0xf7,0x25,0x62,0xe8,0xf5,0xd7,0x5e,0xce,0x10,0xad,0x46,0xbc,0x96,0xc8,0x60,0xde,0xec,0xe3,0x9e,0x63,0x4a,0x5f,0x50,0x65,0x4d,0x4c,0xdb,0xa8,0x4a,0x8e,0x6f,0x70,0x24,0x0a,},"\x83\xa3\xbe\xbc\xac\x5f\x28\xc5\x43\x3e\x3c\x4f\x1e\x7b\xf5\xd2\xe4\xdc\xd2\xf5\xe5\x9d\xbe\xe0\xa8\x3b\x07\x02\x57\x15\x35\x07\x46\xf8\x56\x75\xf1\xdf\xea\x37\x4a\xa7\xd7\x94\x28\x7b\x89\x2e\xf9\x09\x7f\xf6\xd2\xe1\x22\xf0\xa6\x56\xfb\xa0\x79\x8c\xdc\xfc\xb3\x64\x5d\xfc\xfd\x78\x8c\x74\x0c\x0f\xd0\x45\x20\xe7\xa0\x6a\x02\xa0\x58\x29\x63\x0a\x2b\xf0\xcd\xfe\x2e\xcc\xa0\x09\xec\x44\x04\x99\x46\xbb\x1d\x23\x26\xdd\xd6\x1d\x7e\xc6\x40\xbf\x69\xeb\x44\xfb\x23\xcc\x1f\xf4\x78\xc5\x70\xc7\x5d\xb7\xe7\x66\xe3\x5b\x7c\x43\xdb\x73\x68\x0d\x14\x07\xa9\x43\x99\xfb\x62\x1b\xaf\x38\x45\x74\x5c\x1c\x4e\xd0\xb9\xf0\xb4\x85\xbe\x2d\x53\xc5\x68\x54\x5d\xdf\x18\x77\x5a\x83\x7a\x05\xd9\xc9\x15\x7b\x08\x4e\x8c\xd0\x1f\xc3\x24\xf0\x7f\x11\x68\x77\xe4\x07\x5d\xba\x24\x32\xc8\xa7\x75\x2e\x9e\x93\x95\x86\xad\x93\xf0\xc0\xaa\x5e\xda\xc9\x4b\x8d\x82\xe5\x44\x99\x97\xb1\x5b\x8c\x89\x61\x58\x9c\x44\x28\x21\xaa\x83\xb6\x02\x39\xec\x5f\x15\x8c\x3f\x5e\x9e\xc5\xbe\xa5\x11\x5d\x5f\xed\x61\x91\x8e\x8f\xcd\x5b\xce\x61\xc7\x77\xf2\x0b\x6b\xfe\x80\x3a\x69\xc6\xfc\x79\x4a\xb8\xc5\x7d\xf2\x71\xda\x86\x38\x72\xa6\x13\x35\xb1\xfa\x29\xf4\x60\x8f\xf0\x37\xf7\x12\x06\x98\x09\xca\x64\x2a\x03\x07\xc7\x9a\xa9\x2e\x10\xcb\x89\x3a\x29\xd1\x72\x01\xa0\xb6\xd1\xb4\x6a\x72\x12\xb3\xba\xec\x97\x03\xc0\xb0\x39\x2b\xa6\xb7\x6e\x5c\x9c\x10\xf8\x35\x99\xb8\x1e\xa2\x22\x83\xf9\x54\x7a\xac\xda\xa7\xf3\x08\x96\xd1\xff\x73\x1e\x11\xfb\x9e\x56\xad\x06\x03\x04\x17\x11\x98\x05\xba\xb6\x35\x21\x49\x6c\x3b\xb9\x2a\x12\xf5\xe5\x5a\xfc\xf6\x0e\xd4\x21\x77\x37\xf3\x04\x6b\x16\xca\x50\x66\x57\xa6\xd6\x96\xd7\x5a\x6d\x8e\x18\xe9\xef\xe2\xb0\x8c\x8b\x1f\xa0\x72\x82\x38\xe2\x7c\xfb\x32\x21\x66\xee\xe4\xee\x76\x96\x8b\x77\x7b\x50\xee\x6a\x2b\x80\x4e\x1e\x9b\x46\x01\x66\x20\x13\x2b\x65\x88\x71\x8d\x97\x8c\xa2\xc0\x02\x69\x79\xc4\x00\xd3\xc5\x33\x67\x51\x21\x0f\x0b\x00\xd2\x69\xec\x8f\x4e\x2f\x95\x59\xe1\x80\x33\x2d\xd2\x70\xe5\x0c\xc9\x46\x5c\x55\x58\x93\x63\x55\x52\x1b\xc3\xc9\x56\x0f\xc1\x9e\xc1\x42\x42\x12\x1e\x6b\xb2\xff\xf8\xf5\x03\x37\xfc\x26\x4a\xcf\x1a\xc1\x70\x43\x28\x33\x4b\x3b\x52\xcb\xa9\x6d\x93\x03\xb1\xb5\xdb\x85\x9d\xae\x31\xd8\x0f\x17\x11\xfb\xa2\x51\xe1\x0b\x4d\x12\x21\x28\xf9\xfa\xff\x68\x72\xd0\xc0\xb8\x1e\xef\x59\x54\x1f\x83\x2b\x0a\x9d\xf3\xa4\xcd\xd5\x91\xc8\x77\x36\xb1\xae\xcf\x24\x2c\x27\x5a\x10\xc3\xfd\x67\x83\x9d\xad\x4e\xf3\x99\xb9\x49\x4e\xcd\x77\xf7\xba\x5b\x5d\x4f\x2c\xa3\x04\xe5\xb2\x29\x21\x30\x7c\xb1\x8f\xa6\x4a\xa3\xd0\x1c\x44\x11\xc8\x36\x9c\xce\xde\x46\x5e\xe3\x69\xee\x63\x7d\x43\xd2\x88\x26\xbf\x60\xdd\xde"}, +{{0xd3,0xd1,0x88,0xb3,0x90,0xba,0xcc,0xd9,0x50,0x24,0x52,0x61,0x46,0xb8,0x2b,0x91,0x84,0xe1,0x97,0xe4,0x6a,0x93,0x40,0xa0,0xe6,0xec,0x18,0xbf,0x75,0xbe,0x7f,0xc5,},{0xd8,0xf7,0x94,0x94,0x8a,0xa6,0x98,0x61,0x00,0x21,0x4e,0x9b,0x7b,0x90,0x24,0x42,0x08,0x06,0xb4,0xc6,0x78,0x46,0xd5,0xbd,0x50,0x61,0x13,0xb3,0x53,0xa2,0xea,0x3d,},{0x16,0x97,0x6b,0x26,0x7d,0xe9,0x6e,0x38,0xdd,0xdc,0x84,0x78,0x07,0x5f,0x6b,0xdd,0x71,0x59,0xe5,0x63,0x34,0xb2,0xd2,0xd1,0x92,0x09,0x46,0x29,0x4f,0x33,0xcd,0x6b,0x7f,0x9c,0x50,0xf8,0x05,0x7f,0x49,0x6c,0xab,0x5d,0x94,0xbb,0x4d,0xca,0x26,0x2f,0x9f,0x0f,0xdf,0x9b,0x1b,0x64,0x74,0x1f,0x4b,0x72,0x2d,0x32,0xef,0xa8,0x22,0x03,},"\x5e\x65\x65\x8e\x42\x03\x75\x43\x3f\xd7\xc1\xf6\xbe\x67\x88\x41\xe5\x81\x04\xf1\x0b\x4c\x67\x63\x59\xd8\x4f\xce\x79\x92\xf5\xc5\x75\x57\xd7\x38\xf8\x30\xb5\x05\xfa\x0c\x2b\x9e\xab\xf8\xd1\xa9\xf8\x1f\xe8\xf3\x15\xd6\x62\xe2\xb8\x4c\xe9\x52\x99\xeb\xf4\xe5\x03\xb5\xe1\xf7\xf8\xcd\xb6\x68\xae\x73\x3f\x3d\x0c\xdd\x4c\x74\x2a\xb5\xf2\x72\xbe\xa4\xf1\x8d\x18\x3e\x89\x23\x84\x76\x62\xf9\xa3\x9c\xd4\xb1\x4e\xc7\x6d\x11\x03\x2f\xe5\x73\xc2\x62\x01\xae\xf6\x66\x01\xce\xc6\x83\xe3\x4b\x89\xaf\xd9\x64\xe9\x87\x80\x1c\x70\x6a\x85\xe2\x7b\xab\x33\x70\x1c\xd1\x09\xbc\xf0\x7b\x27\xca\x67\xf0\x22\xc4\x94\xa0\x4c\xbe\x5a\x9c\x6d\x63\xaa\xd9\x36\xcd\xf1\xa1\x80\xfd\x05\x86\x51\x98\xb9\x6f\x06\xa7\x8d\xa9\x57\x99\xd3\xaa\x4d\xf3\xb1\x70\x03\x3c\x69\xe8\xfb\x04\x28\x8c\x35\x46\x55\x3b\x57\x9c\x0a\xe3\x93\x80\x62\xd3\xd8\x42\x1c\xfa\x66\x26\x85\x29\xbe\xc0\x27\x1e\x53\xb4\xee\x7d\x09\x9e\x71\x48\xa8\x02\xdf\x80\xfe\x5e\xed\xee\x1c\x90\x3a\xe8\xed\x4d\x64\x0e\xad\x76\x12\x62\xdd\x40\x14\xf2\x5f\x93\x97\xba\x3f\x1c\x08\xd8\x3a\x3c\x48\x5c\xfb\x55\xf8\x99\x19\xaa\x97\x2d\x6b\x7e\x77\x11\xbe\x9e\x30\xc1\xeb\x96\xa0\xc3\x84\x53\x09\xfb\x23\xdb\xc7\x5b\x69\x91\xdd\x6e\x48\xcd\xde\x90\xe0\x4f\x22\x8e\x8c\xcf\x3b\xa2\x3f\x27\x47\xcf\xb9\xd3\x38\x1a\x93\x05\xf8\x16\xf2\x6c\xdd\xe4\x1c\x02\x20\xfa\xd2\x28\xff\x6a\x8b\x09\x5c\x77\xb6\xba\xe8\xfa\x33\x68\x14\x27\x24\xbf\x1f\x5e\x0f\x6f\xbc\xa5\x32\x0c\x21\x5b\x6b\xa8\x6b\x91\xe3\xa8\xac\xf7\x50\xe9\x3f\xa7\xea\xa6\x5c\x4f\x78\x5e\xf8\x42\x1a\x19\xc1\xe2\x7b\xc2\x4b\x42\x8e\x08\xa9\x02\x42\xab\xac\x9b\xd4\xaa\x03\xc6\x56\xf8\xf4\x6d\xc4\x0b\x36\x15\x2c\x1b\xd0\xde\xf1\xac\xfc\x0d\xa1\x0a\x2f\xa1\xdc\x3d\xa7\xac\xe5\xa8\xfd\x76\x22\x7b\xb1\xa6\x02\x39\x0f\xe5\x7a\xfd\x32\xef\xe2\x81\xf2\xea\x6b\x2e\x4d\x25\x45\xcb\x88\xd2\x30\x8d\x72\x69\x1c\x9a\x52\xb4\xca\x25\x23\x1a\x01\x07\xf2\x5d\x11\x7c\xc9\x35\x39\x76\x21\xc6\x83\xbd\xc8\xf2\x2e\x81\x03\x40\xf2\xcb\xac\x4c\xea\xa3\x46\x86\x65\x26\x18\x79\xf0\x07\x42\x00\x74\x3e\x0d\xe5\xf3\xe5\x83\x08\xb9\x8b\x04\xb8\xc7\x14\x8a\x4e\x00\x4e\x66\x7e\x83\x2b\x00\x84\xb5\xf2\xbd\xc6\xfd\xc9\x59\xf2\xfc\x28\xa8\xd3\x1d\x9a\x9e\x78\xe5\xd5\xf9\xc0\xb1\x19\xe5\xff\x1f\x68\xf7\xc0\xda\xf0\xc0\xf1\x69\x47\xcc\xa5\xb7\xce\xd0\x96\x01\xe2\xeb\xed\x28\x2e\xf2\xbf\x8f\xe9\xa2\x7e\xd2\x7f\xc5\xbc\xda\x8a\xed\x6c\x71\xbe\xe3\xe7\x75\x10\x04\x47\x26\x89\xbb\xf6\xd9\xd0\x79\x52\xa2\x42\xff\x87\x0d\x7c\x3f\x5e\x1f\xfc\x2c\x1f\x40\xfc\x9a\xb7\x57\x9b\x39\x2b\x55\x4f\x3d\xc5\x88\xc0\x3a\xb9\x57\x43\x1f\xe5\xd0\x2c\xbc\x71\x1a\xd4\x89\xfe"}, +{{0x61,0x91,0x7a,0x97,0x5c,0xb7,0xec,0x56,0x4c,0x70,0x8a,0x56,0x53,0x88,0xc5,0x72,0x36,0xa6,0x6b,0x69,0x7d,0xcd,0x5a,0x7f,0x10,0xba,0xe6,0x71,0x57,0x2a,0xc7,0xf0,},{0xec,0xc0,0xf0,0xb9,0x92,0x76,0xe5,0x28,0xf8,0x2b,0x42,0xf2,0xef,0xce,0x85,0x79,0xf8,0x3e,0x63,0x8c,0x6a,0xce,0xfd,0x07,0x28,0x28,0xc0,0x4e,0x43,0x4f,0x55,0xaf,},{0x6a,0xbb,0x3e,0x37,0x7b,0x5c,0x80,0xb7,0x4f,0x77,0x21,0x9c,0x1a,0x9e,0x09,0x6f,0xba,0x0e,0xb6,0x89,0x90,0x81,0x7a,0xcf,0xf1,0x2d,0xba,0x7f,0x61,0xc7,0x7c,0xcf,0x59,0x5f,0xb6,0x60,0x85,0x52,0x00,0x3c,0xea,0xd0,0x6c,0xa1,0x31,0x7c,0x9c,0xd5,0x1a,0xc4,0x72,0x4b,0x29,0xf4,0x09,0x21,0xfb,0x92,0x84,0x33,0x76,0x87,0x64,0x01,},"\x6e\x97\x0e\x0b\x1c\x92\xa7\xf4\x96\xa8\x2d\x8a\xe8\x0c\xfd\x0c\xce\xf1\xd2\xc7\x99\xd4\x17\x28\xf3\x5d\xdc\xd6\x03\xb4\x21\xc2\xa5\xab\x3b\x48\x9e\x78\xf4\xb6\x22\x97\xde\x43\x7c\x5a\xd1\xa9\x68\x3f\xf8\x7f\xa2\x8e\xb3\xcc\x38\xce\x24\x2a\xf5\x94\x19\xf9\xfd\x43\xfc\xaa\x54\xfc\x39\x89\x92\xf8\xc8\xe3\x1f\x2b\x33\xdc\xcc\xd0\xee\x11\xba\x7b\x38\x8e\x8d\x2a\x36\xea\xd0\x67\xc6\xbe\xce\xd5\x89\x0a\xb7\xd4\xa9\x4f\x55\xda\xb9\x21\x28\xa0\xf8\x14\xc0\xe6\x89\x71\xdf\x57\xbd\x50\x78\xa7\x40\x31\x75\xc7\xc2\xfd\xd4\xa5\x24\x47\x15\x3a\xb3\x74\x56\x72\x9a\xee\x33\xe5\xfc\x93\xdb\x8e\x7f\x48\x03\x09\x87\x5e\xcf\x6d\xb0\x7c\xe7\xf3\xca\xc5\xde\x49\xe3\x61\x27\x5c\xa5\x0b\x6b\x71\x9f\x4b\x71\x5b\x3e\x30\x86\x3c\xbb\x3b\x71\x64\xba\x9e\xb9\x6e\xf3\x30\x4b\x19\xad\x4d\x74\xdc\xe4\xbd\x25\xe7\x7b\xbb\xbe\xff\x1e\xe7\xd1\xfb\x55\xb9\xc4\xf7\xfc\x4c\xd9\xbd\x55\x10\x8a\xfc\xf9\x9c\x1a\x41\xcd\x6f\x6b\x1a\xdb\x29\x7b\x10\x6c\x8b\xa2\x4e\x31\x34\xf8\x7d\xd8\xef\xe5\xcf\x85\x49\x22\x91\xb9\x4d\x66\x00\x95\x8c\x28\xb9\x12\x2f\xe6\xe0\x1b\xd3\xe3\x29\xe4\x2d\x19\x26\xb8\x9f\x7a\x8c\x40\xa4\x98\x67\xe5\xaa\x3a\xd7\x49\xbd\x98\xda\xe7\xd0\x06\xb4\x53\x60\x9e\x7d\xae\x26\x36\x4d\x91\x72\xbe\x72\x83\x33\x01\x21\xed\x2b\x40\x27\xe0\x88\x51\x18\x74\x3a\x6e\xa0\xcb\x7d\xc2\x74\x09\xa9\xb2\x82\x0b\xcc\x24\x2e\xa1\x0a\x00\x93\x7b\xf8\x49\x20\x1e\x0f\xb6\x19\x94\x21\xf1\x63\xe9\x79\x4f\x2d\xd4\xb3\x32\x01\x4a\x09\xd3\xee\x80\x71\xda\x78\x77\x47\xf9\x90\xf5\x17\x99\x19\x02\x7d\xdf\xf7\xca\xb0\xf5\x5e\x9a\xfa\x8e\xcc\xb1\x6c\xc2\xdd\x3c\xbb\xea\xd7\xff\x7e\xc8\x18\xc2\x53\x39\x3f\x74\x87\x41\xf5\x54\x07\xf7\x40\x8e\xe3\x3a\x42\xae\x2d\x6e\xcb\x3f\xb6\x00\xa7\x1f\x30\xab\x63\x06\x06\xe5\x53\xb4\x36\x78\xe5\x98\x54\xf3\xa2\x94\x7b\xcf\x4e\xa0\xfc\xfe\xdc\x31\x4d\x83\x70\xd1\x26\x63\x95\xfd\xa3\xc9\x10\x5e\x97\x59\x52\xf6\x0e\x30\x86\xbb\x82\x48\x15\x13\xd6\xfe\x8a\xdb\x4f\x95\xef\xb9\xa9\x5b\x66\xd4\x80\xd2\xbb\x17\x10\x78\xcf\x40\x68\x4a\xc6\x9a\x78\x9c\x7f\xb7\xfa\x42\x53\x33\xd7\x05\xdb\x00\x06\x67\x55\xdf\x72\x8d\xe0\x2d\xf2\x5b\xae\x34\xf1\xd7\xd4\x9c\xaf\xfc\x51\xe9\xba\x2b\x10\xb9\x8f\xe4\xcd\x9d\x22\xb7\x76\x4e\xd9\x31\xed\xb5\xf0\xb5\x54\x49\x6e\x99\x53\x91\xe0\xaf\x0b\x8d\x1c\x7a\x82\x95\xa8\xd1\x5a\x7c\x65\x56\xd2\x9c\xb1\x9e\x08\x55\xca\x50\x5a\xd0\x1d\x2a\xa3\x09\x28\xa8\x4b\xc4\x89\x59\x57\x6d\x81\x2d\x9b\x27\xb8\xe8\x88\x79\xfa\xa2\x80\x6c\x08\x41\x36\x0e\xcd\x0f\xe8\x3f\x5b\x84\x8f\xc1\x2f\x65\x8f\x1e\x7f\x40\xe5\x61\xc2\xe7\x8d\x3b\x01\x25\x21\x0a\x92\x06\x1c\x2d\xb2\x1b\xa6\x60\xe8\x60\x8f\xf5"}, +{{0x7b,0xa2,0x5f,0x27,0x97,0xa2,0x83,0x6f,0x37,0x9d,0x6b,0xbc,0xbe,0x9a,0xbf,0x4f,0x2d,0xef,0x5e,0x52,0xf7,0x2b,0xd9,0xe0,0xb0,0x06,0x57,0x10,0x22,0xfa,0xc2,0xf3,},{0x6c,0x2e,0xd4,0xe8,0xc0,0x12,0x4d,0x5d,0x05,0x40,0x79,0x6d,0x39,0x45,0xd1,0xde,0x71,0xaa,0x69,0x69,0xe6,0xab,0xea,0x0f,0x1b,0x0e,0x6f,0xc4,0x29,0xc7,0x04,0x6f,},{0xf1,0xf5,0x90,0xa9,0x07,0xba,0x98,0x0e,0xb0,0xd6,0x48,0xab,0x4d,0xed,0x5f,0x92,0xfa,0xf7,0xcb,0x85,0x1d,0x81,0xd8,0x58,0xa7,0x8f,0xa6,0xb7,0x7c,0xbb,0xe1,0x2f,0x64,0xd2,0x0d,0xf5,0x27,0x71,0xa7,0xd5,0xe5,0x39,0xa1,0x52,0xd7,0x31,0xe1,0x90,0x3d,0x42,0x11,0xfd,0xcf,0xef,0x9a,0x48,0xb4,0x6c,0x8f,0xd5,0x39,0x4c,0xa0,0x09,},"\x17\x1a\x34\x09\x87\x80\x97\xb3\xb2\x2b\x2c\x00\x66\x0b\x46\xe5\x42\xc2\x16\x4c\x00\xbb\xee\x54\x55\x48\x37\x94\x0e\x70\xf0\x3d\xa9\x91\x6a\x40\xf9\xbd\xe8\x28\x8f\x45\xe4\x7b\xef\x7f\xfe\x4e\x55\x7c\xd4\x47\x40\x45\xe7\x40\xfd\x95\x9d\x98\x4f\x4e\xc8\x1d\xa8\x8d\x44\xa3\x73\xc1\xed\xa0\xcf\xc6\xb0\x8e\x35\x13\x73\xd3\xb8\x2a\xb0\x90\x2d\xf8\x06\x3f\xd9\x08\xe7\x03\xe0\xcb\xec\x41\x0a\xb5\xcd\xfe\xaa\xe0\x01\x88\xce\x2a\xd4\x2b\x8b\xf0\x4f\x7d\xaa\x5f\x0e\xe3\x33\xa6\xf9\x31\x1b\x4a\xd9\x81\x09\x52\xd5\xd5\xa6\x4b\x20\xf3\x7e\x84\x54\x15\xfc\x3c\xdd\x61\x6f\xeb\xec\x50\xdb\x29\x6f\xb3\xf3\xbb\x7f\x6b\x36\x6b\xbe\x52\xe4\x89\x7a\x05\x61\x7b\xf7\xc9\x81\xa6\x2e\xdc\xbb\xbe\x5d\xa4\xc3\x9c\xaf\xa8\x69\xaa\x2b\x27\x34\xe6\xcf\xed\x90\xed\x8b\xe7\x59\x49\x39\x0e\xe4\x45\x66\x89\x24\x55\xb8\x90\xcf\x56\x8b\x94\x5a\xab\xb7\x58\xd3\x85\x4b\xe6\x53\x9f\x3b\x86\xbf\x01\xd1\x88\xe4\x8c\xf2\x62\x6a\x0d\x7d\x38\x17\x03\xbe\x6e\xd1\x29\x0d\xfb\x94\x7b\xc2\xe0\xf8\x3d\xbc\x58\x70\x30\x80\xd7\xf5\xb9\xef\x19\xae\xf9\x30\x90\x8f\x68\xf0\xc8\x00\x10\xa9\x40\x1b\x30\x3a\x9f\x6d\xa8\x05\xbb\x8a\x0e\xd0\xf3\x94\x13\xee\xfe\xdf\x91\x9f\xfd\x8e\xa6\x39\x1b\xf9\x5d\x42\x29\x60\x4e\x49\x45\x7b\x8e\x23\xbe\xc6\x11\x48\x4c\xc7\xf9\x83\x2d\xd9\x5b\xdc\x3a\xd1\x77\xc0\x50\xf4\xab\x63\x3d\xcd\xb3\xe6\x91\xf5\x90\x28\x73\xb3\x8c\xb0\x72\x0b\x91\x13\x35\x7f\xe0\xcf\xb9\x8a\x68\xcc\xcb\x5d\x5f\x08\x09\xd5\x9a\x37\x5c\xf7\xb5\xa2\x75\xd4\x3c\x4c\x34\xff\x68\xe4\x48\x52\x6e\x8e\x1a\xad\x44\xe2\x00\x08\xa2\x32\xaf\xbc\xf5\x32\xa4\x2b\x50\xa0\x25\xa1\xb2\xee\x4e\x07\x7e\xb0\x12\x5a\x59\x3d\x51\xa2\x00\xec\x20\xd8\x72\xc0\x58\x38\xad\x36\xaa\xae\xec\xcc\x3e\xd9\xef\x41\xf6\xd1\x22\x67\x02\x17\xd5\xc0\x8f\x6e\x13\xc1\x72\x19\x45\x89\xac\xc3\xc5\x9f\x7e\xf7\x90\xc7\xc8\x5a\xa6\xd5\xeb\x69\xd4\xc8\x9a\x72\xf5\xe7\xc9\x24\x69\x85\xc1\xac\x0c\x5d\x19\x7f\x76\xa7\x3e\x37\x74\x83\x9d\x4a\xa2\x09\x6a\xca\x19\x0a\x30\xf4\xaa\xc5\x40\x57\xb6\x4f\x35\x8e\x0e\x06\x40\x0c\x0d\xf2\xf8\x76\x41\x2d\x34\x48\x4c\x43\x44\xf4\xd7\xc8\x66\x51\x7d\x3e\xfb\xa4\xa9\x0f\xa7\x14\x4c\x9b\xa5\xdb\x33\x61\xdb\x57\x69\x40\x3e\xc8\x16\x26\xa5\x11\xf9\x3e\x30\xf8\x58\x6e\xad\xfc\xaf\xd9\xa3\x6e\xcf\xf8\xd2\x4b\x42\x07\x9a\xda\x8e\x57\x9a\xc3\x08\x51\x17\x7b\xce\x90\x38\xb0\xe1\x30\x00\x72\xd6\x8e\xfd\xd7\x23\xf6\x35\x50\x64\x84\x32\x75\x81\x5a\x66\xb9\xd7\x3a\x12\x99\xaa\x59\xa1\x81\x2f\x64\x52\xfb\x41\x15\xea\x2b\x1f\x9f\xf4\xa9\x96\x90\x59\x6e\x3f\x20\x22\xd8\x1e\xd8\x74\xdd\x67\xe6\x18\x9c\xa0\xe6\x8b\x93\x04\xe9\x93\xa9\x5b\x66\x66\x5e\x0d\x07\x4c"}, +{{0xd1,0xe1,0xb2,0x2d,0xe5,0xe0,0x4c,0x9b,0xe4,0x65,0x1d,0xd7,0x39,0x95,0xa3,0x66,0x6c,0xb5,0x35,0x2c,0x65,0xac,0x7b,0x70,0x51,0xb3,0x66,0xfe,0x1a,0xc0,0xc3,0x10,},{0x12,0xfe,0x56,0xf1,0x01,0x2d,0x5c,0x12,0xf1,0x35,0xed,0x59,0x82,0xf3,0x82,0xae,0x5f,0x11,0x43,0xbc,0x90,0xe8,0xcb,0x8c,0x93,0x05,0x17,0x54,0x55,0x1e,0xe9,0x0a,},{0xab,0xaa,0xb4,0xfa,0x6a,0xeb,0x0a,0x0b,0x34,0xee,0x0d,0x61,0x3a,0x0a,0xf0,0x49,0xed,0xb4,0xce,0xdb,0xfe,0x9d,0x3b,0xeb,0xe9,0xc0,0x06,0x18,0xb1,0x15,0xb9,0xd1,0xfa,0x52,0x4e,0xc3,0x49,0x5e,0x13,0x30,0xb0,0x93,0x61,0x81,0xea,0xbb,0x14,0x29,0x9f,0xac,0xcc,0x40,0xea,0xa8,0xcc,0xa5,0x7e,0xd3,0x24,0xb7,0xa6,0x42,0x0c,0x0e,},"\xc7\xf2\x18\xb5\xaa\x7a\xae\x17\x99\x62\x5a\x56\xc4\xd7\xd7\xb0\x26\x37\xe5\x72\xf1\x41\x1a\x61\x22\xf1\x13\x79\x1a\xa3\xc6\x28\xe8\x19\x60\x2f\xb4\xf0\x33\x5a\x61\x23\x01\x3f\xa6\x4e\x9f\xdc\x4e\x4a\xe4\x97\xbd\x16\x9c\x2f\xa7\x7b\xc2\x36\x12\x97\x17\xf4\x62\x88\x6b\x41\x08\x93\xfa\x78\x09\xcb\xfd\xc8\x92\x22\x3b\x40\xee\x04\x1e\xbd\x4e\xc7\xdd\xab\x55\xbe\x60\x81\xa1\x64\x66\x43\xa9\x12\x0b\xaa\x46\x28\x9a\xcb\xa1\x5b\x3b\x48\xaf\x3b\x7a\xde\xcd\x69\xf4\x3e\xed\xe7\x9d\x9b\x19\x57\xe1\xd8\xc3\x12\x9e\x0f\xa0\x57\x9d\x3d\x39\x53\x70\x46\x1b\x0e\x12\x55\xc9\xca\xa9\x4e\x47\x25\x60\x1c\xb9\xd0\xe2\xd6\x02\x44\xd1\x5b\x64\xe1\xf7\xbc\x90\x15\x59\x0a\xd0\x99\x1f\x12\xf8\x26\x73\x11\x20\x6e\x9e\xb5\xd1\x6a\xdd\x0b\xa5\x21\x8f\xce\x5f\xff\xe1\xc9\xce\x5f\xfe\x1f\x73\x11\x32\xf4\xb1\x2c\xac\xb0\x2f\x97\x45\x17\x10\x84\x6b\x7f\x82\x4f\x4f\xa9\xe0\x89\x19\x26\x64\x69\x78\x9c\x00\xce\x0d\x94\xd3\x8f\xa8\xfe\xc3\xf5\x1f\x2f\x88\x6e\x9d\xb0\x9b\x80\x44\x70\xb1\x9e\xc9\xe8\x06\x63\xf1\x55\xb4\x98\x4d\x2b\xbd\x0b\x2c\xe9\x93\x02\xe0\x6c\x64\x44\x4b\x69\x6e\x31\x29\xfc\xef\x34\xc3\xdd\x00\xf7\xab\x5b\xed\xa7\x47\xa3\xfc\x63\x39\x19\x2b\x74\x0f\x35\x69\xb6\x7d\xbd\x6f\xfa\x39\xe2\x71\xfa\xa4\x00\xd9\x61\x6b\xff\x86\xec\x49\xa6\x59\xde\xf2\xe7\xf5\xd4\x51\xf2\xa2\xb3\x5e\x66\x2a\x6e\x7c\xc2\x2f\x1e\x5c\xdc\xde\x8a\x59\x98\x81\x35\xb7\xe7\x65\x62\x74\x3c\x1e\x6a\x09\x99\x01\xb3\xef\x97\xcb\xff\x23\xf2\x09\xbd\x70\x88\xc2\xf0\x32\x45\x27\x9a\x1d\xc7\x8d\xdd\xc1\xbb\x0c\x1d\x35\x10\x03\x57\x88\x21\x26\xb3\x28\xd3\xd9\x4e\x08\x71\xb6\x0b\xe2\x53\xfd\x1b\x6e\xcf\x03\xc1\xdb\x73\x1d\x9e\xed\x0e\xdf\x2b\x26\x43\x23\x07\x80\xa4\xd6\x6e\x99\x17\x9a\xad\x1b\x82\x40\x2e\x55\xf6\xd7\x85\xeb\xc8\x0f\x8d\xd2\xfd\x2b\xeb\x09\xf3\x10\x35\xdf\x62\xc1\x7f\x42\x8e\xd0\xb2\xd5\x65\x08\xdb\x31\xe6\xd2\xdd\x5f\xb6\x9e\xbe\xee\xa3\x25\x70\x70\xcf\x2f\xe6\x7d\x42\xd2\x88\x16\xa5\x5d\xba\xe0\xb1\x85\xdb\x44\x21\xbb\xfd\xae\xfc\x79\xc0\x8c\xdc\x1a\xcc\xf7\x16\x42\x56\x2e\xc7\x00\x36\xda\x2b\xba\xfa\x4a\x89\x19\x54\xc4\xee\x40\x49\xb5\x5c\x64\x0e\x91\x93\x0e\x39\xe3\xef\x10\x18\xdc\x16\x47\xf2\x69\x42\xc6\xdb\xdf\x4d\x56\xe4\x1e\xb2\xc8\x98\xc8\x21\xfa\xc1\x7c\xc2\x73\xe8\xe4\xaa\x56\x08\xa8\x12\xcf\x4b\x82\xf9\x60\x19\xc2\x52\xd5\x6e\x78\x05\x29\x8c\xcb\xe8\xce\x40\xb0\xbd\x0f\x93\x3b\x88\x4c\x0f\xaf\x97\xa9\x58\xb2\x04\x08\xb8\xa5\x29\x7c\xce\x55\x27\xb2\xca\x21\x28\x06\xe7\x2a\x32\x64\x45\x7a\x7f\xac\x86\x62\xb8\x2c\xa2\x33\xe1\xc7\x75\x8d\xc6\xe4\xf1\xb9\x99\x58\x63\xf2\x5f\x74\x7b\xce\xe4\x3b\x63\x9b\x1f\x8f\x20\x26\xd2\xd2"}, +{{0xdf,0x29,0x4e,0x47,0x7b,0x1b,0x91,0xc5,0xac,0x5b,0x98,0xc3,0x30,0xd2,0x22,0xd7,0xcd,0x2d,0x53,0xe7,0xd0,0xbc,0x0c,0xa4,0x03,0xdf,0x4e,0xc7,0x53,0x27,0xa2,0x74,},{0x5f,0x0b,0xd2,0x2f,0x2f,0x18,0x96,0xd1,0x56,0x3b,0x4f,0x69,0x40,0xc7,0xdf,0x89,0xef,0xc2,0x58,0xc0,0xff,0x6c,0x2f,0xcd,0x67,0x4d,0xaf,0x4f,0x59,0xfc,0xdb,0x60,},{0x99,0x45,0xab,0x73,0xb5,0x85,0x62,0xb3,0x55,0xda,0xbc,0x4e,0x2b,0x6b,0xe7,0xe0,0x5f,0x37,0xf8,0x95,0x71,0x44,0x0c,0xcc,0x32,0xc1,0xa9,0x47,0x37,0x09,0x5b,0x78,0x66,0x74,0x7d,0x21,0x00,0x70,0x00,0xa0,0xf0,0xe3,0x51,0x11,0x4b,0x88,0xe0,0x13,0x8b,0x55,0xdf,0x44,0xfe,0x72,0xeb,0xe9,0x59,0x14,0x10,0xe7,0x07,0xfa,0x9d,0x02,},"\x3e\x42\xd6\x68\x40\x96\x30\xcb\xb8\x48\x12\xac\x7f\xf1\x15\x4f\x70\xfc\xa8\xbd\xff\x3f\x1a\x04\x0f\xa3\xaf\x86\x8a\xa1\xc4\xe9\x15\x08\xb1\xae\xfd\xf5\xc3\xa8\xb4\xb0\x77\xa4\xd1\x62\xd2\xc0\x5b\xd3\x64\xfb\xbe\x8c\x5a\x08\x31\x4c\x2e\x07\xdf\xfb\xd6\xe8\xdd\x2e\x08\xa0\xdc\xc9\x6e\xa9\x2d\xdd\x4c\x97\xf7\x9d\xb9\x42\x5a\x6c\x6b\x34\xc4\x60\x43\xd0\x9a\x68\xb7\x68\x72\x36\xa9\x18\xd2\x1a\x56\x16\x10\xa1\x3a\xc5\xe4\x46\xe0\x88\x1b\xb2\x6c\xc8\xe2\x8a\xad\x16\x54\xf8\x67\xad\x82\xae\x33\xf8\xf7\xa7\x8a\x65\xbe\x57\x69\x94\x75\x51\x6a\x1a\x87\x46\x84\x3e\x93\xa1\xa2\x94\x35\x46\x24\xfa\xc0\x4d\x45\x2c\xcf\xbe\x4f\xdd\x92\xa9\x51\xaa\xa0\x7d\x26\x67\x6d\x5c\xb0\x77\xa5\x00\x0d\x43\x9c\x12\x42\x76\xc0\xdb\xcf\x86\xe7\xaa\x15\x3c\xc2\x4b\x5a\xff\x67\x7c\x6b\xad\xc2\x61\xc2\x89\xf4\xa4\xae\x51\x9b\x2e\x2f\xff\x31\x2f\xbf\x0f\x5b\x4c\x46\x98\xf6\xae\xdd\x8f\xcb\x1d\x23\x48\x94\x2d\xe3\xfb\x73\xba\x27\xf6\xdb\x14\xc2\xf0\x91\x80\x35\x6e\x5f\xca\xe1\xad\xf6\x5e\x22\x42\x5f\x8c\x27\xf1\x9e\x98\x94\x83\x50\x6e\x5d\xf5\x7a\x1b\x61\x3a\x22\xe3\x45\x03\x8b\x3e\xa9\x1c\x0f\x78\xff\xff\x46\x38\x3f\x38\xc7\x22\x25\x35\x8a\x34\x57\x0d\x6f\x66\x4a\x17\x45\x4a\x15\x16\x13\xf0\x1c\xba\x77\x7f\x62\xec\x83\x18\x75\xec\x5e\x27\xd2\x57\xf1\x80\xb6\x36\x6c\xb1\x83\x10\x7c\x40\xf5\x0b\x01\xb2\xb9\xbf\x91\xb3\xb5\x54\x9e\xd9\x31\xa3\x53\x7a\xa4\x16\x89\xf7\x2b\x25\x7a\x6a\xa3\x9c\xdc\x6f\xce\xdf\x14\x39\x83\xbe\x5b\xff\xe3\xae\x2b\x29\xf8\x2f\x88\x21\x22\xd6\x6a\x79\x25\xf5\xa7\x10\x82\x6c\x0d\xad\xb7\xe4\xfa\x4e\xc0\x79\xba\x2e\x76\xda\xda\x43\x3f\x30\x77\xcb\x1e\xf7\x46\x13\xfc\x5d\xbf\x82\x58\xb6\xda\x7c\x73\xc8\x66\x37\x24\x57\xed\x50\x0f\x97\xf9\x90\x7e\x1f\xc2\x63\x53\xc7\x0b\xa3\xbd\x9c\x36\x15\x1d\x46\x86\x5d\x2c\x65\x98\x65\x62\x48\x5c\xf8\x42\x1f\xeb\xbe\x77\x7c\x73\xe6\xcd\x00\x26\xd6\x6d\x35\x12\x8b\x9f\x8f\x33\x26\x4a\xeb\x56\xbd\x3e\x4b\x8d\x1f\x52\x66\x41\x1e\xf3\xb2\x3b\x76\xb3\x6d\x4c\x9d\xf3\xc5\x12\xfd\x56\x0c\x2b\xe5\x2a\xc5\x23\xc1\x93\x77\xad\x2a\xdc\x0e\x8c\x30\x9c\xf5\xbb\xf7\x2d\x9e\xb8\x5d\x65\xa9\x48\x47\xd4\x97\xd8\xd1\x02\x42\x4f\xb8\x43\x81\x66\x6e\xcb\x1c\x35\xa3\x72\x5d\x7d\x9e\x92\x84\xfd\xeb\xb6\xb3\x62\xaa\x6a\x9c\x6f\xb3\x7a\xba\x87\x35\x7f\x57\x4c\x0e\x63\xb4\x49\x7d\x49\x8f\xfb\xb7\xd0\x69\x2d\x78\x4b\x4b\x18\xce\x9f\x91\x50\xc1\x46\xd3\xd1\x8c\x38\x2e\xda\x04\x93\x8c\x69\xd0\x77\x8f\x29\x02\xd5\x23\x5a\x56\x52\xb9\x7c\xef\x6d\x5f\x60\xda\x6b\xd7\xed\x4f\xf9\x7c\xd9\x4d\x49\x39\xca\xca\x3b\x6b\xaa\x3c\xfd\xac\x04\xcd\xa9\x55\x96\xf4\x67\xcb\xc6\xcb\xcd\x92\x64\x16\x77\x43\xea\xc1"}, +{{0x70,0xc6,0x85,0x9f,0x08,0xcf,0x42,0xb4,0xbd,0xa9,0xeb,0x62,0x97,0x9d,0xff,0xb7,0xcb,0x08,0xeb,0x3d,0xab,0xe9,0x3f,0xe9,0x4b,0x01,0x38,0x46,0x17,0xcf,0x67,0x30,},{0x40,0x1c,0x9e,0x20,0x33,0xe2,0x25,0x9f,0xb6,0x38,0x3b,0x3e,0x8b,0x9e,0x17,0xb3,0xf2,0x06,0x27,0x46,0xbb,0xe6,0x48,0xcf,0x48,0x45,0x16,0xdb,0x0f,0x2f,0x1b,0x06,},{0x0f,0x03,0xa4,0xf1,0x5c,0x33,0x9b,0x4f,0x7b,0x88,0xb4,0xe2,0x1a,0xd9,0xe3,0xd6,0xbb,0xf3,0xef,0xfb,0x7b,0x67,0x8f,0xfa,0x50,0x0d,0x47,0x38,0x3b,0x71,0xa7,0x45,0x4f,0x62,0x90,0x7b,0x56,0xf5,0x9f,0x9b,0x9a,0xf6,0xd5,0xb2,0xa0,0xfc,0x1c,0x73,0x7a,0x64,0x10,0x51,0x95,0x08,0x98,0x99,0xf5,0x7a,0x2c,0x9d,0xba,0x50,0x9e,0x0a,},"\xdd\x06\x09\xea\x15\x99\x21\x39\x5d\x11\xfb\x2d\xa8\xea\x4f\x74\x7d\x7f\x74\xb5\x80\x52\xe0\x1c\xad\x40\xa2\x71\xfa\x0b\xbe\xed\x91\x02\x0f\x4f\x0c\x08\x46\xc4\xf0\x77\x78\xa6\xaa\x76\x8e\xb5\x17\x12\x29\x4e\x9e\x1f\x32\xa6\x02\xb1\x52\x51\x4f\x5e\x6d\x39\xf9\xe0\x8f\x7a\x78\x12\xbd\x90\x0c\x10\xa9\x14\x69\xe4\x7e\x8a\x78\xe5\x4c\xd4\xbd\x7c\xfe\xde\xde\xc1\x71\xef\x37\x3f\x1c\x4f\x9b\xbc\x2c\x81\x40\x2f\xb1\x4e\xd0\xbf\xac\x8d\x04\x3f\x11\x7d\x61\x24\x52\x1a\xfa\xe0\x91\x6a\x51\x0d\x56\x8a\xcf\xa3\xaa\x33\x01\xbc\x97\x9a\xc2\x8d\x55\x1d\xbb\xea\x6c\xea\xc4\xc2\x12\xaa\x8c\x84\x92\xb3\x61\x3a\xe7\x39\x5d\xd4\x12\x5f\xc4\xc2\x5d\x5b\x4d\x99\x23\x08\x21\xd4\xb1\x7e\xc2\xee\x6b\xe7\xd6\x04\x19\x5a\x21\x54\x33\x3b\x97\x35\x26\x58\x0c\xa7\xef\x9e\x30\xc6\xc1\xdd\x42\xef\x2a\xfe\x42\xb1\x1b\x1a\xa4\x9b\x9c\xca\xba\xca\x17\x09\x1e\xeb\x38\x0e\xc5\xe3\x4a\xd1\xe3\x82\x7c\xc6\x0d\xac\xf1\x44\x28\x6c\x78\x92\x59\x0b\xd2\x67\x1a\x8d\xc5\xf3\xa7\x02\xc1\xde\x7c\xd3\xb4\x2c\x1b\x15\x0b\x09\xc3\xe5\x8e\xf6\x94\x3b\x45\xd8\x9d\x41\xdf\x36\x1f\x1d\x5c\x25\x56\x55\x91\xb6\xac\x8d\xea\xa7\x36\x76\x53\x1f\x6e\x5a\xbe\x58\x04\xb0\x09\x7f\x8d\x45\xea\x29\x39\x17\x73\x33\xca\xce\xf1\x2e\x4b\x71\xfe\x49\x36\xba\xfe\x00\x74\x7a\x89\x30\xbc\xea\x55\xb8\xfd\x84\xa0\x1f\x6d\xf8\x4e\x7a\xcb\x93\x1f\xc7\xc0\x1d\xdf\xd6\x3d\xee\xc3\xad\x3e\x69\xdf\xa2\xb7\x35\x50\x58\x3d\x57\x47\xee\xe9\x6c\x55\x36\x36\x87\x97\xe2\x47\xf2\x3f\x53\x7d\x79\x07\x9a\xb6\xda\x31\x41\x02\xc7\x44\x3d\x41\x96\x0e\x3a\x3d\x8c\x35\x9c\x4a\x4e\xc6\x26\xfc\xc4\x4e\x11\x0e\xa7\x44\xd4\x17\xaa\x85\x0d\xb8\xec\xdb\xfe\x34\x0a\x96\x2d\xb0\xd8\xc5\x7d\xc5\x17\xbe\x8b\x40\xd1\x4d\xe9\x7b\x1e\x9e\x04\x26\x44\x7f\xde\x0a\x04\xe5\x06\x79\xc5\x3b\xa1\xaa\x3c\xdc\x38\xc7\xed\xe6\xdb\x6c\x05\x4b\x1e\x9c\xe7\xde\xad\xaf\x93\xeb\xdd\x47\x07\x91\x53\x5f\x3e\xcf\xab\xf3\x41\x63\x55\xf7\xa1\x8a\x38\xaf\xe6\xbf\xe5\x07\xef\x08\xc4\x37\x3a\x4a\x69\xde\xe1\xfc\xb6\x5b\x16\x31\xa0\xde\x14\x88\x64\x9d\x0b\xb2\x67\x9a\x9a\x45\xf6\x78\x20\xb2\xa4\xa1\xe5\xa5\x48\x07\x2d\xa7\x03\x2d\x17\x25\x55\xe7\x88\xcc\x98\x60\xeb\xb3\xc0\xc3\x59\x49\x37\x51\xb0\xc2\xc9\x50\xa7\xfc\xf4\x80\x3c\x14\x7f\x93\x40\xfc\x93\xd8\x5f\x1e\xfa\x57\xb3\x90\x81\xb9\x2d\x93\x47\x3f\xd2\x35\x16\xc4\x95\x0e\xd4\xb2\x9a\x2e\xd3\xa0\x42\xae\x3d\x92\xa1\xe5\x2c\xb7\x09\x63\x6f\xc7\x27\x2f\xd7\x47\x20\x8b\xee\x2b\x16\xd1\x91\xe4\xc6\xde\xb2\x76\x72\xaa\x34\xe4\x39\x14\xcf\xf2\x05\x5c\xa4\xee\x8b\xa3\xe1\xdc\x58\xa6\x79\xc7\xf7\xde\xe2\xc1\xd5\x3e\x28\x75\x09\x70\xf5\x7d\x85\xea\xb1\xc2\x6b\x89\xbb\x73\xe0\xb1"}, +{{0xc5,0x96,0x29,0x61,0x81,0x5b,0x57,0xcd,0x16,0x24,0x03,0xce,0x08,0xe4,0x10,0x5d,0xdb,0x8a,0xae,0x2d,0x3f,0x53,0x3f,0xb4,0x9c,0xc2,0x36,0xb5,0xff,0x50,0x4d,0x6e,},{0xdb,0xad,0xe7,0x22,0x36,0xba,0x12,0xd4,0x97,0x7b,0xa4,0x6c,0x36,0x4b,0xb6,0x9a,0x88,0x7f,0xf4,0x02,0xde,0x91,0xd4,0x7a,0xfa,0x9b,0x93,0xc9,0x5b,0xe7,0x1e,0x7e,},{0x81,0x01,0xba,0xef,0x00,0x4e,0xb6,0xf5,0xad,0x4d,0xe0,0x97,0x9f,0xf3,0x6d,0x34,0x39,0xb8,0x21,0x2b,0xdc,0x92,0x89,0x42,0xe4,0x31,0x91,0x5b,0x3f,0xd1,0x8b,0xc2,0xad,0x67,0xb2,0x6f,0x18,0x94,0x1d,0xcb,0x16,0xd2,0xc2,0x91,0x91,0x42,0x1e,0x77,0x9f,0xed,0x62,0x2f,0xd9,0xf5,0x82,0x64,0x4e,0xaa,0xdb,0x3f,0xe5,0xc0,0x98,0x03,},"\x4a\xe4\x14\x8d\x79\xca\x94\x25\x59\x2a\xa2\x40\xbd\x15\x34\x24\xa3\xbf\x4a\xe2\x73\x95\x87\x2c\xe5\x72\x8a\xc7\x61\x35\x96\xa7\x7d\x5c\xe8\x56\x5d\x8d\x6e\x1b\x59\x35\xb3\x90\x6c\xaf\xe1\xff\x88\x8e\xbc\x98\x15\xe0\x4a\x62\x4d\xfc\x4c\x69\x07\xb8\x5f\x6f\x1a\x0d\xbd\xdf\xf6\x2e\x91\x51\x22\x0d\x47\x44\x62\xcb\x9f\x13\xd8\x9d\x3a\x93\xa0\x0b\xa2\xb6\x0f\x7e\x7c\xa6\x3d\xa1\x7a\x63\x79\xd6\x73\x55\x1e\x79\x0b\x59\x11\x72\x7c\x90\x6d\xc9\x4f\x86\xd8\x27\x75\x46\xc1\x56\x4a\x45\x57\x3a\x77\x43\xbb\x8a\x13\x8c\xde\x87\xb3\xb2\xf2\x8e\x5e\x24\x59\x40\xa5\x1e\x7c\x45\x8c\xf8\xc5\xf0\xa7\x02\x75\x96\x25\x53\xe0\xd2\x39\x0d\x17\x1d\xb4\x4c\x2f\x7a\x5c\x9e\x9f\x93\xb9\x0f\x7a\x5f\x54\xf1\x91\xb0\xd8\x75\xba\xd7\xe0\xbe\xb9\x80\xc2\xa3\x36\x5c\xd7\xb9\x20\x87\x24\xf4\x65\x44\x18\x11\x7e\x16\xef\x71\x34\xe3\xe2\x79\x4b\x6f\x9e\x80\xec\xab\xec\xa3\x25\x4e\x70\x4c\x21\xb7\xad\x30\xc5\xde\xe0\x17\xea\x25\x33\xfc\xd9\x42\x51\xe5\x5a\xe7\x5a\x8c\xc6\xdb\x66\x74\xb3\x9c\x88\xca\x42\x00\x60\x43\xd6\xbd\x9b\x00\xec\xf6\x4c\xea\xfe\xeb\x40\x2b\x1f\x22\xfd\x89\x1f\x2d\x11\xc5\x15\xc1\xab\xa6\xa2\xd4\xc0\xbd\x21\x81\xa4\x8e\x43\xfd\x1c\x0a\xf9\x1f\x9b\x7b\x7d\x37\xf3\xdc\xd9\xe4\xc0\xa7\x59\x74\x84\x67\xd3\x48\xa8\xb1\x16\xdf\x6a\x4e\xac\xf1\x78\xae\xcc\xcd\x30\x66\xe9\x2d\xca\x45\xda\x7a\x3e\x31\x9f\x37\x71\xeb\x34\x90\x02\x21\x93\xc5\xb6\x52\xf0\x45\x68\x7e\x17\x05\xf2\xe5\x69\x1c\x13\x4b\xe4\x00\x63\x53\xd7\xec\xd0\xe9\x18\xd5\xde\x0f\x3b\x87\x80\x9f\xca\x4a\xcf\xab\x94\xe1\x14\x8f\xf7\xcf\x07\xf7\xcf\xd0\xc7\x45\xdd\x2b\xe0\x1a\x24\xa5\xe0\x69\x28\x06\x98\xbc\x3f\x54\x00\xa6\xdc\xd0\x8e\x44\x59\x5c\x03\x88\xe4\x48\x33\x76\x8f\xc4\x91\x04\xee\x11\x5b\xdc\xb0\x2b\xfb\xda\x17\x9d\x16\x4c\xe9\x69\x93\x66\x29\xf2\x33\x56\x01\xb5\x6f\xe8\xf7\x85\xcc\xa3\x80\x5f\x04\x03\x87\x2c\x62\xf7\x3c\x3c\xe8\x05\x63\xd0\x70\xe9\x76\xd8\xec\xc5\x11\x24\xe2\xca\xce\x7e\xe1\x86\x99\x04\x7c\xb0\xf8\xfb\x8d\x9c\x59\xb8\xa6\x0d\x12\xc0\x8a\x09\xfc\xe5\x8f\xd9\x2c\xd3\x6d\xb6\xa8\xe8\x9d\x11\x8c\xf8\x8a\x92\xdc\x8a\x26\x00\xbd\x95\xf5\xa8\xe8\x5d\xb5\xcd\xbb\x24\x9c\xa8\x12\xca\x20\x9c\x76\x18\x05\x1c\x45\x64\xa3\xa0\xe1\x92\xb7\xe4\x59\x92\x45\x6c\x87\xd1\x74\x12\xc1\x1a\xde\xad\x52\x6a\xb8\xdb\x21\x45\x2f\x74\x71\xd1\x7f\x2e\xbc\x90\x01\x54\x50\xed\xf4\xf0\xa4\x4f\xb2\xf4\x90\x5f\x74\xd7\x02\x75\xcc\xd8\x9b\x93\xa6\x50\x47\x3c\x02\xa7\xda\x0c\xbc\x67\x91\x5c\xeb\x7a\x1e\xa5\x9f\xa8\x88\x44\x72\xdc\x91\x7e\xe9\xd2\x46\x33\x9c\x59\x26\x84\x3e\xcf\x53\xfa\xfd\xc5\x6a\x69\x56\x01\xa2\x76\xc2\x3a\x84\x3e\x4d\x30\xf8\x9c\x97\xc9\xee\xe6\xdf\xc7"}, +{{0xde,0xe6,0x86,0x6c,0x78,0x74,0xc1,0x27,0x02,0x9e,0x96,0xe0,0x25,0xbf,0xfd,0x35,0xfc,0xfd,0xf4,0xdc,0x36,0x96,0x6c,0x15,0xee,0x62,0x93,0x36,0x80,0x13,0xd3,0x79,},{0x08,0xc9,0x4d,0xa3,0x51,0xbb,0x2b,0xee,0x72,0xe6,0xe1,0x96,0xbe,0x74,0x88,0x07,0x58,0x37,0x62,0xc5,0x29,0x6e,0x05,0xb1,0xe5,0x29,0xc4,0x7c,0x6b,0xba,0xce,0xc6,},{0xb7,0x8e,0xbd,0x6d,0x65,0xb1,0x75,0xd4,0xbb,0xd3,0xd9,0xa2,0x08,0x2a,0x0e,0xfe,0x6e,0x99,0x1c,0xb2,0xe4,0x03,0x52,0x1e,0xec,0xe0,0x0f,0x41,0x8f,0x2e,0x95,0x6b,0x66,0x90,0x78,0x80,0x65,0x8b,0x9e,0x8e,0x47,0x69,0x96,0x53,0xd1,0x59,0x13,0x23,0x80,0xd9,0xce,0x11,0x09,0xaf,0x9c,0x27,0x57,0xda,0xf4,0xcd,0xf1,0x8c,0x9c,0x0a,},"\xf1\xaa\x19\x77\xf5\x31\x1b\x53\x8b\x94\x0a\xe4\x42\xa3\xab\xc8\x9a\xac\xcd\xcd\x0a\x79\x38\x0a\x24\x25\x8d\x4a\x9f\x1c\xe6\x38\xfc\x2f\x5b\xa2\xe5\x3f\x8e\x1f\xa6\x17\x6f\x17\x8d\x90\x24\xa7\x78\x94\xc2\x8c\xad\x42\xd6\x29\xc7\x93\xd6\x8a\x02\xbe\x94\x11\xb5\x27\xac\xad\xae\x7e\x5c\x38\x51\xba\xbb\x45\xb5\xfe\xce\x32\x9e\x29\x03\x4c\xd4\x25\x71\x08\x37\x27\xf3\x5a\xec\xad\x7c\x9b\xe5\x95\x4e\xc6\x4e\x8f\x6e\xca\xb7\xcc\x05\x90\xe5\x41\x56\xa4\xe1\xa4\x53\x03\x84\x9f\x78\x97\xe7\x2c\xf2\xfb\xcd\x84\xf5\x6c\x72\xf9\x41\xdb\xb0\xb0\x9a\x32\xe6\x38\x6f\xbe\x18\xa4\x3b\xb9\xbd\x8b\x79\x3e\x4b\x9e\xdd\x53\x21\x03\xea\xb5\x4d\x62\x71\x17\xd2\x81\x39\xb6\x4e\x60\xfb\x0b\x81\xd0\x90\x01\xbb\x24\x04\xd9\x25\xe2\x65\xba\xbd\xc6\x9f\x96\xb1\x35\xe9\xe6\xab\x7f\xeb\xb1\xed\x30\x75\xd6\xaa\x2a\xbd\x2b\xbf\x9b\x65\xfa\x9b\x3b\x71\x91\xef\x37\xb6\x33\x60\x59\x10\xee\x88\xf6\x6e\xad\xa7\x9f\x00\xf5\x36\xd3\x80\xb8\x2f\x2f\x4b\x59\x85\x11\x2d\xe0\x04\xa5\x66\x03\xf4\x43\x6d\x8f\xf3\x00\xf4\x2b\xf5\xac\xdc\x7a\x4b\xf1\xea\x9d\x41\x96\xc4\x80\x49\x5b\xac\xb0\x06\x76\x30\xfc\xc0\x00\xb4\xf2\x79\xdd\x3f\x30\xf3\x53\x27\x60\x92\xd1\x52\xc3\xf4\x3e\xfd\xc0\x41\xde\xaa\x0b\xc5\xaa\xab\xa7\xf8\xbb\xd8\x5e\x69\xc1\x37\x42\xd6\x78\xdb\xb6\x53\x60\xaa\xf7\xb5\x48\xa0\x44\xc0\xec\x60\xa5\x7a\xf6\x50\xbc\x31\x97\x3f\x83\x2f\x96\x12\x65\xbc\x23\x18\xf8\x07\x75\xaf\xd5\x1f\x55\x19\x4c\x42\x42\x3f\x7b\xf4\xe0\x05\x2f\x98\xcb\x20\x69\x13\xff\xea\x48\x86\xec\xd2\x7a\x41\x79\xb1\x37\x73\xf9\x47\x50\x2e\x18\x1b\xf1\xa1\xf2\xc6\x2c\x6f\x08\xc2\x03\x59\xf0\x6d\xf2\xb1\x81\x27\x04\x3b\x10\x70\xd0\x19\x4e\xf5\xe5\xbf\xd3\x7d\x22\x79\x84\xcf\xb1\x09\x89\xf2\x1c\x71\xad\x0f\xe3\xb8\x12\x27\xd3\xa7\x17\x89\x45\x5e\xda\x38\x3c\x22\xf4\xd2\xfc\xc7\x25\x79\xf4\x65\xe0\x66\xf3\xd3\x8b\xef\xc0\x24\xef\xef\x6c\x2e\x32\x96\x49\xce\x43\x4d\x62\x73\x67\xa9\x00\xd0\x7f\xe6\x23\x42\x35\xc8\x46\x56\xea\xc5\xdd\x0d\x78\x8c\xf4\xcb\x31\x87\x18\x24\xd6\x6a\xe4\xbc\x89\xed\xeb\xa1\xb3\x67\x01\x29\x84\x53\xe8\xda\x1e\x69\xcf\xb8\x68\x09\x5c\x3b\xe6\xed\x21\x82\xda\x1c\xff\x49\x05\xaf\xd2\x07\x31\xac\x1e\xd9\x84\x16\x47\x37\x90\x3c\x7d\x8b\xb0\xad\x16\xae\xcf\x2f\xae\x33\x74\x04\xfe\x35\x66\x45\x15\xd9\x3b\x70\x1e\x2f\x87\x86\x64\x45\x4c\x0d\xec\xd1\xc6\x55\x8a\xda\xce\x3c\xdb\x22\x75\x07\xa5\x16\x06\xf0\xa5\x4d\xf8\xdf\xaa\x42\x02\x05\xdd\x57\xc6\x52\x42\xff\x24\xa4\x05\xef\x85\xc9\x2d\x60\x28\x86\x93\x2b\x35\xfa\xbe\x9c\x3b\xce\xbf\xc6\x23\x56\x39\xe8\x73\xfc\x2d\xd0\x84\xc5\x2c\xd6\xa7\x41\x3b\x83\x1d\x1c\xc9\x99\x31\x37\x3a\xab\xd8\x47\x62\x0e\xb6\x9b\xb0\xfa"}, +{{0x52,0x36,0x23,0x55,0x59,0x95,0xba,0xaf,0x2a,0x27,0xad,0xcb,0x1e,0xba,0xfa,0xa8,0x02,0xd2,0x3e,0xf7,0xab,0xfa,0x97,0x75,0xf2,0xc9,0xbf,0xa0,0x7d,0x64,0xe0,0xac,},{0xd3,0x4d,0xea,0xe6,0x52,0x3e,0x61,0x9d,0xd1,0xbf,0xc8,0xf3,0xc4,0xca,0x4b,0x78,0xb3,0x68,0xc0,0xf7,0x20,0x03,0x5e,0x14,0x4c,0x3f,0x2f,0xc1,0x05,0xd4,0xce,0x21,},{0xb1,0x87,0x17,0x29,0xfe,0xc8,0x3a,0xea,0x0a,0xaa,0x47,0x2b,0x70,0x0a,0xcd,0x09,0x48,0x13,0xfb,0x7d,0x57,0xb9,0x09,0xe0,0xea,0xaf,0x21,0xee,0x93,0x18,0x47,0xad,0xde,0xdd,0x2b,0xe8,0x53,0x3d,0x0c,0x30,0x5c,0xb9,0xcf,0xe5,0x08,0x0e,0x76,0xc2,0x80,0x8b,0x6e,0x51,0xc9,0x82,0x62,0x90,0xdd,0xb7,0xb9,0x4b,0x6f,0x7d,0x58,0x0b,},"\x05\x53\xe6\x9e\xf2\x11\x65\x2d\x62\xbf\x28\x1b\xfb\xdd\x37\xbe\x22\x76\x9d\x81\x97\x46\x36\x1c\x7d\x65\xdd\xd0\xfa\xd6\x77\xcc\x04\x38\xb3\x01\xd1\x51\x45\x78\xe0\xda\x58\xe5\x5f\x72\x9f\xa8\xe6\x6d\xde\xb7\xf9\x73\xa8\x18\xd2\x4e\xd8\xfe\x02\x7b\x84\x91\x17\x9d\x07\x77\x3f\xb5\xd2\xbb\x96\xaa\x85\xd6\xb3\x75\x04\x54\xe5\x0d\xe9\x1f\x9b\x88\xae\xe8\xaa\x68\xe6\xbb\x53\xed\xc6\x66\x77\xb4\x1e\x60\x1a\x46\xab\x4b\xb1\xe6\x56\xe7\xfa\x5f\x01\x79\x93\x36\x80\xa6\xec\x95\x04\x27\x5e\x7a\xdf\x7a\x32\x48\xe6\x3a\x0f\xc9\xc1\xea\x5a\xe9\x6c\xd0\xc6\x5a\x89\xa7\x7c\xec\x2b\x1f\xd8\xf4\x53\x7e\x82\xc1\xc4\x88\xa6\x9a\x0e\xf6\x4f\x58\x73\x4d\x9e\x73\x47\x8e\x1d\x1f\x12\x31\x14\xef\x66\x08\x5e\x0b\xa3\x19\xcb\x81\x0b\x66\xaf\x96\xd1\x30\x8b\x1a\x2b\xd9\x2b\xa2\xc2\x65\xaa\x30\x9e\xcd\x55\x57\xd4\x02\xc3\x80\x2c\xae\x8d\x7e\x95\x00\x7f\xe6\x10\xc2\xaa\x75\xfc\x66\x19\x6c\x3f\xad\xfe\x99\x7d\x6d\x59\x98\xe1\x8d\x26\x0e\x9d\xa3\x1d\xa9\x21\x8c\xba\xd1\x03\xcb\xfc\x2c\x75\x47\x76\x5d\x67\xe8\x1f\x24\xac\x83\x02\x2e\xf5\x1c\x6c\xc5\x08\x64\x36\x6a\x35\xf6\xb9\xb9\xaf\x94\xe8\x4c\xaa\x9f\xd3\xd7\x67\xc8\x31\xf0\x96\x7a\x61\x46\x2f\xbc\xfc\xc8\x03\xf1\x2e\x37\x39\x03\x9a\xcd\x5d\xbe\x93\x66\xf0\x5a\x33\xdb\xea\xf3\x60\xe2\xdd\xcb\xe5\xc4\x43\xf8\x0e\xf2\xad\x62\xe0\x3c\x1d\x5b\x70\xcd\xea\xb4\xa7\xdd\x41\x55\x30\x64\xc8\xd1\x52\x70\x9d\xef\xf8\x20\x76\xb9\x07\x11\x92\x37\x6f\x51\xd4\xc2\xc7\x1a\x84\xe8\x9f\x2d\x94\x01\x32\x0c\x2e\x45\x9b\x3e\x24\x3c\xca\x7c\x26\xfd\x09\x8c\x26\x4a\xc8\x8e\xf6\x38\x92\x1d\x98\x0b\x0a\xe9\xe5\x12\xd3\x72\x03\x7d\x81\xad\xc4\x81\x26\xd7\xc9\xe4\xb5\xaf\xa5\x7e\xc2\x65\xd4\x01\xb9\x65\x3e\x92\x8a\xfb\x7d\xff\x9b\x48\xe2\x95\xe4\x70\xd6\xb5\x2e\x88\xb3\x9d\x0a\x40\xcb\x8e\xba\x24\x9f\x8b\x13\xd8\x11\x13\xdb\x1d\x3e\x01\xef\x75\xc7\x22\xf2\x69\x48\x8e\x96\x3c\xc8\x18\x27\x04\xf8\xca\x01\x8e\x73\xdc\x07\x14\xe9\xa9\xfc\x79\xbc\x43\x63\xc2\x8c\xb3\x98\x43\x74\xf7\x3b\x2a\xa8\x78\x6e\x74\xe0\x15\x95\x07\xa2\x98\x83\xfe\x0e\xd1\xc6\x00\xf5\x25\x88\x5f\x2f\x10\xea\x00\x6c\x39\xe5\x9b\x92\x5b\x76\x5b\x1e\xde\x53\x42\x57\xa1\xf4\x0f\x28\x46\x58\x4f\x06\x97\x46\xb5\x2f\x56\x00\x43\x0a\x28\x63\xd7\x93\x60\x95\xfb\xc2\x2a\x6a\xda\x67\x4d\x41\xb3\x74\xe2\xb8\xb9\xa1\x9f\xa7\x12\xb5\x94\x45\x33\xbb\x6d\x6e\xc4\x3b\x89\xd4\x97\x1b\x70\x20\x5a\x6a\xcd\x72\xa8\x99\xda\x12\x61\x82\x04\xdb\x0c\x3e\x82\x67\xb8\x45\x79\x16\x93\xe0\xae\x6a\x35\xf1\x4d\xa1\xf8\xf4\xdd\x17\x4b\xce\x03\x18\xfb\x5a\x00\xf6\x72\xed\xe4\x23\x04\xcf\x04\xa6\x27\x60\x57\x75\x90\xf2\x7e\x2d\xfa\x6e\x5e\x27\x95\xd6\x60\x53\xb3\x0a\xf7\xf1\xbf"}, +{{0x57,0x5f,0x8f,0xb6,0xc7,0x46,0x5e,0x92,0xc2,0x50,0xca,0xee,0xc1,0x78,0x62,0x24,0xbc,0x3e,0xed,0x72,0x9e,0x46,0x39,0x53,0xa3,0x94,0xc9,0x84,0x9c,0xba,0x90,0x8f,},{0x71,0xbf,0xa9,0x8f,0x5b,0xea,0x79,0x0f,0xf1,0x83,0xd9,0x24,0xe6,0x65,0x5c,0xea,0x08,0xd0,0xaa,0xfb,0x61,0x7f,0x46,0xd2,0x3a,0x17,0xa6,0x57,0xf0,0xa9,0xb8,0xb2,},{0x90,0x3b,0x48,0x4c,0xb2,0x4b,0xc5,0x03,0xcd,0xce,0xd8,0x44,0x61,0x40,0x73,0x25,0x6c,0x6d,0x5a,0xa4,0x5f,0x1f,0x9f,0x62,0xc7,0xf2,0x2e,0x56,0x49,0x21,0x2b,0xc1,0xd6,0xef,0x9e,0xaa,0x61,0x7b,0x6b,0x83,0x5a,0x6d,0xe2,0xbe,0xff,0x2f,0xaa,0xc8,0x3d,0x37,0xa4,0xa5,0xfc,0x5c,0xc3,0xb5,0x56,0xf5,0x6e,0xdd,0xe2,0x65,0x1f,0x02,},"\x2c\xc3\x72\xe2\x5e\x53\xa1\x38\x79\x30\x64\x61\x0e\x7e\xf2\x5d\x9d\x74\x22\xe1\x8e\x24\x96\x75\xa7\x2e\x79\x16\x7f\x43\xba\xf4\x52\xcb\xac\xb5\x01\x82\xfa\xf8\x07\x98\xcc\x38\x59\x7a\x44\xb3\x07\xa5\x36\x36\x0b\x0b\xc1\x03\x0f\x83\x97\xb9\x4c\xbf\x14\x73\x53\xdd\x2d\x67\x1c\xb8\xca\xb2\x19\xa2\xd7\xb9\xeb\x82\x8e\x96\x35\xd2\xea\xb6\xeb\x08\x18\x2c\xb0\x35\x57\x78\x3f\xd2\x82\xaa\xf7\xb4\x71\x74\x7c\x84\xac\xf7\x2d\xeb\xe4\x51\x45\x24\xf8\x44\x7b\xaf\xcc\xcc\xec\x0a\x84\x0f\xec\xa9\x75\x5f\xf9\xad\xb6\x03\x01\xc2\xf2\x5d\x4e\x3b\xa6\x21\xdf\x5a\xd7\x21\x00\xc4\x5d\x7a\x4b\x91\x55\x9c\x72\x5a\xb5\x6b\xb2\x98\x30\xe3\x5f\x5a\x6f\xaf\x87\xdb\x23\x00\x1f\x11\xff\xba\x9c\x0c\x15\x44\x03\x02\x06\x58\x27\xa7\xd7\xaa\xae\xab\x7b\x44\x6a\xbc\xe3\x33\xc0\xd3\x0c\x3e\xae\x9c\x9d\xa6\x3e\xb1\xc0\x39\x1d\x42\x69\xb1\x2c\x45\xb6\x60\x29\x06\x11\xac\x29\xc9\x1d\xbd\x80\xdc\x6e\xd3\x02\xa4\xd1\x91\xf2\x92\x39\x22\xf0\x32\xab\x1a\xc1\x0c\xa7\x32\x3b\x52\x41\xc5\x75\x1c\x3c\x00\x4a\xc3\x9e\xb1\x26\x7a\xa1\x00\x17\xed\x2d\xac\x6c\x93\x4a\x25\x0d\xda\x8c\xb0\x6d\x5b\xe9\xf5\x63\xb8\x27\xbf\x3c\x8d\x95\xfd\x7d\x2a\x7e\x7c\xc3\xac\xbe\xe9\x25\x38\xbd\x7d\xdf\xba\x3a\xb2\xdc\x9f\x79\x1f\xac\x76\xcd\xf9\xcd\x6a\x69\x23\x53\x4c\xf3\xe0\x67\x10\x8f\x6a\xa0\x3e\x32\x0d\x95\x40\x85\xc2\x18\x03\x8a\x70\xcc\x76\x8b\x97\x2e\x49\x95\x2b\x9f\xe1\x71\xee\x1b\xe2\xa5\x2c\xd4\x69\xb8\xd3\x6b\x84\xee\x90\x2c\xd9\x41\x0d\xb2\x77\x71\x92\xe9\x00\x70\xd2\xe7\xc5\x6c\xb6\xa4\x5f\x0a\x83\x9c\x78\xc2\x19\x20\x3b\x6f\x1b\x33\xcb\x45\x04\xc6\xa7\x99\x64\x27\x74\x1e\x68\x74\xcf\x45\xc5\xfa\x5a\x38\x76\x5a\x1e\xbf\x17\x96\xce\x16\xe6\x3e\xe5\x09\x61\x2c\x40\xf0\x88\xcb\xce\xff\xa3\xaf\xfb\xc1\x3b\x75\xa1\xb9\xc0\x2c\x61\xa1\x80\xa7\xe8\x3b\x17\x88\x4f\xe0\xec\x0f\x2f\xe5\x7c\x47\xe7\x3a\x22\xf7\x53\xea\xf5\x0f\xca\x65\x5e\xbb\x19\x89\x6b\x82\x7a\x34\x74\x91\x1c\x67\x85\x3c\x58\xb4\xa7\x8f\xd0\x85\xa2\x32\x39\xb9\x73\x7e\xf8\xa7\xba\xff\x11\xdd\xce\x5f\x2c\xae\x05\x43\xf8\xb4\x5d\x14\x4a\xe6\x91\x8b\x9a\x75\x29\x3e\xc7\x8e\xa6\x18\xcd\x2c\xd0\x8c\x97\x13\x01\xcd\xfa\x0a\x92\x75\xc1\xbf\x44\x1d\x4c\x1f\x87\x8a\x2e\x73\x3c\xe0\xa3\x3b\x6e\xcd\xac\xbb\xf0\xbd\xb5\xc3\x64\x3f\xa4\x5a\x01\x39\x79\xcd\x01\x39\x69\x62\x89\x74\x21\x12\x9a\x88\x75\x7c\x0d\x88\xb5\xac\x7e\x44\xfd\xbd\x93\x8b\xa4\xbc\x37\xde\x49\x29\xd5\x37\x51\xfb\xb4\x3d\x4e\x09\xa8\x0e\x73\x52\x44\xac\xad\xa8\xe6\x74\x9f\x77\x78\x7f\x33\x76\x3c\x74\x72\xdf\x52\x93\x45\x91\x59\x1f\xb2\x26\xc5\x03\xc8\xbe\x61\xa9\x20\xa7\xd3\x7e\xb1\x68\x6b\x62\x21\x69\x57\x84\x4c\x43\xc4\x84\xe5\x87\x45\x77\x55\x53"}, +{{0x03,0x74,0x9c,0xa2,0x04,0x58,0xa3,0x5a,0x37,0xa8,0xd7,0xa2,0x6f,0x95,0x9f,0x0d,0x59,0xf6,0xdc,0x99,0x73,0xfa,0x36,0x3c,0x1f,0xf8,0xca,0x4e,0x63,0x8c,0x2c,0xd3,},{0xea,0xeb,0x94,0xf4,0x06,0xbd,0xe6,0xa7,0xcf,0x8b,0xde,0x2a,0xdf,0x30,0x81,0xf8,0x37,0x5b,0x87,0xd9,0x33,0x5d,0x49,0x6c,0x71,0xd0,0x42,0xcd,0x2e,0xaa,0x16,0x6c,},{0x78,0xa3,0x87,0x7e,0x02,0xbd,0xfd,0x01,0x5e,0x7f,0x86,0xa3,0x27,0xa4,0x8c,0xc3,0xa5,0x23,0x0b,0xbd,0xb1,0x24,0x3f,0x1a,0x8c,0xf2,0x27,0xf7,0x8a,0xb5,0xe7,0x68,0x0d,0xe3,0x01,0xa9,0x15,0xdc,0x11,0xb3,0x36,0xfb,0x5f,0x65,0x66,0x84,0x8b,0x42,0x50,0x0a,0xdb,0x5d,0x67,0x39,0x69,0x12,0x2b,0xa8,0xf0,0x05,0x3c,0xd3,0x06,0x0b,},"\xee\xf5\xce\xeb\xd0\x44\x5e\x9c\x91\x81\xaf\xf9\xc6\xf2\x66\x01\x28\xfc\xfb\x63\x69\x1a\x42\xcf\xa4\x43\xd6\xa6\x49\xef\xc5\xfa\xd8\xc2\x08\x03\x76\x3e\xe9\x7d\x1d\xba\x08\xe6\x3e\x08\xa2\x61\x6d\xa0\x50\x77\x48\x9f\x2f\xa2\xc5\x6b\x75\x34\xf9\x40\x26\x19\x25\x1f\xdf\x9c\x32\x0d\xe7\xaf\x10\x9e\x2f\xd8\xb2\x56\x5c\xe8\xa7\x52\x4c\x94\x05\xec\x0f\x8f\xca\xa7\x14\x9a\x6d\x21\x0e\xfd\xe8\x3b\x11\x1c\xf8\x2d\xc0\x83\x5c\xf9\x4f\x20\xcd\xb0\x21\xb7\x3b\xd2\x62\x66\x65\x55\xe6\xd6\x27\x07\xb4\x6e\xe4\x2f\xa9\x00\xb4\xf4\xf7\x05\xde\x33\xd3\xdb\xdc\x68\xa8\x8d\x1a\x4d\x0a\xe9\x33\x56\x6d\xb6\xc6\x23\x7e\xc8\xab\xe1\x02\x4d\xac\x4b\x7f\x46\xd4\x07\xbe\x16\x59\x4d\x90\x46\xc7\x31\x2d\xda\x66\x14\xd9\xbc\xdb\x01\xfb\x83\x24\xfc\x62\xb8\xee\xaf\x0a\xbc\x23\xcd\x57\x0e\x30\x4f\xca\x08\xe8\x8c\x73\x5e\x5d\x31\x59\x24\x09\xce\xb5\x83\x86\x2e\x6b\x0a\x76\x77\x29\xf7\x55\x6f\xa2\xc0\x53\x64\x4d\x36\xc8\x33\x7c\x02\x74\xe7\x49\x20\x29\x82\xfb\x4a\x17\x1a\xca\xc1\x96\xc0\x2b\x7f\x16\xa8\xda\x49\x07\x1c\x8a\xb8\x07\x6d\xd5\xd3\xab\xad\xfe\x3a\xf8\x2c\xa8\x5d\xa0\x2d\xcc\x1c\x4a\x6f\x2e\x19\x30\xbe\xe2\x00\x9e\xee\x0d\x97\x1e\x40\xdd\x12\x17\x5c\x8d\x00\x69\x4f\x03\x25\xa3\xb3\x13\x3c\x0d\x0b\xd3\x82\xa5\x19\x4f\xb2\x14\x22\xce\x67\xc7\x8a\x5a\x6e\x15\x37\xe3\xb9\x7d\x5e\x20\x4e\x5d\x19\x56\x96\x39\x0f\x77\xd1\x90\x24\xc1\xbf\x6b\x51\x25\xa0\xcd\xbf\x7b\x98\x80\x03\x61\x81\xc9\x8e\x1a\xc2\xe5\x16\x5b\xd4\x96\xcf\x99\x74\x51\xa1\xc1\x21\x02\xe6\x69\x46\xb1\x67\x6a\xbd\x4c\xbd\xd2\xc1\x16\x73\xf4\xf2\xcd\x5f\x3c\x9a\x43\x4d\x74\x7f\xa0\x5b\x40\xfb\xc7\x22\x68\xb4\xeb\x28\x42\xe4\x74\x1f\x51\xb7\x70\x9b\x6a\xcc\xc4\x7f\xca\xf7\x0d\x9c\x1c\x4c\x35\x86\x71\x19\xd8\x1c\xb3\xff\x1f\x16\x08\x11\x33\xf1\x65\x9a\xed\x85\xf6\x3b\xc9\x01\x98\x9e\x26\x17\xfc\xce\x15\x3c\x29\x78\xd7\x08\xfd\x02\x44\x9a\xe4\xd5\x38\xd1\x22\xdd\xb8\x52\x7c\x0a\x76\xa1\x02\xee\xff\x6e\xdb\x65\xdb\xa2\x98\xd3\xc2\x17\xf6\x55\x18\x14\xed\xde\xec\xe1\xae\xf5\xf3\x71\xa5\x4f\x12\xbf\xfd\x6b\x49\x61\x81\x9a\x0f\x24\x4f\xf0\xd7\xd8\x69\x4c\x14\x42\x2d\xe9\x82\x2c\x13\x17\x9e\x4e\xeb\x81\x59\x50\x79\xb9\xdd\x2a\xd1\xe7\xc3\x9b\xd3\x03\xcc\x44\xae\x3f\x36\x34\x88\x15\x77\xa2\x66\xfd\x6b\xb7\x91\x78\x12\xb9\x99\xdc\x80\x9d\xc0\x9c\x3d\x70\x19\xda\xcd\x28\xe4\x30\x13\xa2\xf9\xe4\xf9\x4b\xb0\xbf\x71\x24\xef\x09\x17\x83\xf7\x96\x39\x7f\x64\x63\xbf\x1e\xfb\x39\xcd\x46\xf3\x79\x0a\x1d\x9b\x6a\x7c\x30\xf1\x49\xb5\xe6\x6c\x29\x37\xe3\x9c\xb9\x74\x4d\xdc\x66\xab\x56\x1b\xad\x4e\x6f\xa8\x53\x4d\x69\x88\x38\x22\x64\x3d\x63\xd8\xbd\x7b\x18\x16\x21\xa2\x67\xe9\x55\xe7\x58\xd1\x79\x2b\x44"}, +{{0x53,0xcb,0xd6,0xf6,0x8c,0xee,0x27,0xb9,0xf7,0xbc,0x05,0x9b,0x80,0x3b,0x44,0x79,0x49,0xbb,0xc9,0xc5,0xd5,0xa3,0x86,0x52,0xd7,0x78,0x9c,0xa1,0x54,0x20,0xde,0xa1,},{0x61,0x16,0x99,0x0b,0x53,0x31,0xe2,0x16,0x5f,0x82,0x74,0x3f,0x01,0xd8,0xe7,0xbd,0x5d,0x70,0x88,0xb3,0x01,0x59,0x83,0x3f,0xa7,0xb9,0x39,0xcf,0xb1,0xcc,0x04,0xd7,},{0xd8,0x25,0x04,0x40,0x5f,0xf1,0x6b,0xa6,0x44,0x3d,0xc4,0x82,0x36,0x72,0x63,0xa8,0xe2,0x00,0x36,0x0a,0xca,0xaa,0x83,0xfc,0x4e,0x4b,0x72,0xbd,0x24,0x9f,0x16,0x10,0x3e,0xc7,0xe5,0xa7,0xe9,0xca,0x17,0x19,0x8f,0x88,0x8e,0xac,0xa1,0x6b,0x74,0x0c,0xc3,0xf5,0xc3,0xb7,0xb6,0x17,0xa3,0x4b,0x94,0x91,0xc3,0xed,0x76,0xaa,0xb3,0x0d,},"\x30\x6f\x8e\x1d\xf0\xa4\xca\x78\xbd\x77\xe8\xe1\x19\x1c\x94\xde\xaa\x82\x64\x83\x55\xc2\xae\xcb\x7e\x82\xfc\x56\xd6\x4c\x50\x46\x19\x24\x7e\x7c\xf8\x94\x33\x28\xd1\x1f\x3d\xb4\xb1\xdc\x14\x8e\x8e\xf6\xf6\xc3\xbc\x35\x59\x69\x66\x2a\x28\x1a\x65\x57\x63\x91\x24\x2b\x7b\xd5\xa6\x2f\x8f\xa7\xac\xb6\x04\xe3\xa3\x44\xae\x1a\x9d\x73\x2a\x25\x43\x15\xf3\x1a\x04\x64\xc1\xe6\x58\x74\x62\xd2\x92\x12\xc4\x0e\x5e\xcf\x06\x1e\x26\x9a\xa0\xb9\x03\x90\xba\x41\x04\x07\x21\x68\x4b\xf2\xaa\x95\x82\xd8\x30\x66\x22\x1d\xb6\x0d\x0f\x7a\xe2\xf1\x49\xa3\x6e\x16\x95\x27\x04\xfb\x1f\x3a\x98\x2e\xac\x6b\x45\x83\x66\x5c\x63\xe5\xa8\x99\x6f\x24\xa5\x66\xdd\x50\x6a\x33\xd4\xec\x8a\x02\xb2\xbd\x34\xb7\x14\xc7\x45\x00\x0c\x01\x28\xa3\xc8\x9d\x94\x25\x06\xd1\x2f\x4b\xeb\x90\x0e\x29\x03\xcd\xb3\x4b\x35\xca\x9b\x6d\x3a\xd9\xb3\x50\xac\x99\xf4\x1d\xb3\xac\xfe\x7f\xe5\x5a\x28\xc0\xf0\x06\xb8\x44\xc9\xdc\x48\x53\xfd\x98\x53\x5a\xda\x79\x41\x6d\xca\x5f\xee\x58\x03\xa2\xd9\xf5\xd6\x8e\x6b\x80\x53\x9f\xf3\x02\xe9\x73\xf2\x4e\x9b\xc8\x8b\x7c\x41\x94\x11\x7d\xdb\x9f\x93\x2b\x32\xd5\xec\x74\x86\x8a\x13\x63\x1e\xce\x68\x81\x4b\x93\x14\x21\xdc\x89\x02\x49\x57\x03\x41\xf4\xb4\x23\xe8\x6e\x8e\xe0\x81\xb2\x27\x02\xf6\x49\xa6\xc7\xa0\xb7\xbd\xf5\xfb\x75\x62\x02\xbd\x10\xb0\xbb\x22\x15\xc7\xd6\x59\x7e\xff\xd8\x52\xf0\xb8\x9a\xbe\xc1\x5e\xa8\x22\x57\x68\x9d\xf8\x1e\x33\x82\x54\xf9\x3e\x81\xcb\xf0\x61\x72\x9d\x48\x3e\xb5\xcf\x64\x98\x05\xd7\x8e\xd8\x92\xdd\x0b\xd2\x48\xca\x1e\x25\x2b\xea\x51\x84\x7e\x1e\x82\xd3\x9a\xf5\x80\x50\xdc\x4a\xfb\xf9\x11\x5a\x3a\x60\x49\x3e\x8c\x0b\xa2\xe8\x6e\x08\x98\xcd\x0d\x43\x08\x91\xb9\xeb\x0a\x40\xf8\x74\x31\xe2\x5f\x41\x53\x8a\x03\x0f\x88\x4f\xab\x36\xad\x11\x16\x5d\x26\x7e\x8d\xd9\x4d\xcb\x05\xb9\x3a\x5a\xe7\x79\x69\x43\x0e\x18\x10\x13\x4e\x15\x72\x51\xb9\x82\xdf\x34\x3d\xff\xae\x61\x23\xa9\x9a\xa0\x56\x2d\x5d\xf7\x24\x08\xf1\xa6\xe2\x9c\x40\x59\xa5\xa8\xaa\xa4\xe6\x21\x52\x8f\xc6\x3a\x9c\xbe\x1f\x4c\x0f\xef\x25\xfe\x3f\x8e\x18\x15\x77\x74\x09\x7a\x9d\x91\x02\x0a\x90\x06\xb6\xc8\x60\xec\x1e\xe1\x0d\x52\x1d\x20\x3a\x1f\x8b\xb8\x25\x61\x29\x6f\xaa\xd4\xb2\x20\x3d\xa5\x3b\x20\x7a\x45\x9b\x29\xc1\x8b\xc0\x64\x93\x32\xb1\x80\x7c\x13\xca\x61\xac\xfa\xf9\x07\x79\xfe\xbb\xc7\xf3\x24\x21\x64\x79\x7e\x6f\x57\x2c\xb1\x5a\x9b\xe5\x88\x73\x43\x45\x5e\x26\xb9\x10\xc8\xbe\xfe\xe4\x2a\xeb\x04\x7f\x9a\xbe\x6b\x37\x50\xdb\xd7\xde\x99\x20\x2a\x0b\xb5\x76\xce\x14\x89\xe6\x1c\x1f\x5d\x27\xc6\x79\x2e\x63\x21\x8e\xdb\xfd\xb9\xb3\xdc\x51\x5b\x42\x54\xd8\x2c\x85\x9e\x52\xce\x6b\xd7\xad\x29\x6d\xd0\xe3\x70\x9d\x4c\x46\x63\x62\xf9\x02\x65\xe9\x9d\xa7\xd0\xb7\x01"}, +{{0x8b,0x65,0x74,0xf6,0xd7,0x39,0x69,0x81,0xe2,0x23,0xa4,0x83,0x7b,0xc3,0x39,0xc3,0xfd,0x65,0x94,0x19,0x84,0x5a,0x21,0x21,0xbf,0x85,0xbe,0x2e,0x69,0x5d,0x86,0x0d,},{0xe3,0x81,0x1a,0xca,0x70,0x63,0x4f,0x5a,0x9c,0xe4,0xb5,0x92,0xa1,0x7b,0xb5,0xcf,0xda,0x53,0x44,0x24,0x22,0xe2,0x03,0xcd,0xa9,0x50,0x4c,0x9d,0x65,0xb2,0x63,0xe8,},{0x2f,0xd0,0x90,0x54,0x75,0xa2,0xce,0xc3,0xe7,0x6f,0x99,0x09,0xb8,0xaf,0xd8,0x3b,0xeb,0x8d,0xae,0xfa,0x77,0xaf,0xcd,0xa3,0x4c,0xb4,0xf1,0x17,0x28,0xef,0x15,0xfc,0x9c,0x1d,0x7f,0x6f,0x6a,0xff,0xfc,0x28,0xf3,0x87,0x4f,0x91,0x3e,0x17,0x98,0x0f,0x0e,0x8e,0x3d,0x5a,0xd2,0x39,0x51,0xdf,0x2b,0x32,0xef,0xaf,0x62,0x19,0xce,0x0d,},"\xa4\x8a\xac\xc0\x49\x5f\xa0\xf1\x25\x9b\x27\x86\x5d\x3d\x75\xdc\x52\xc2\xc8\x28\xea\x8c\x4c\x2a\xd7\x85\x77\x07\x2f\xef\x72\x70\xf6\xa4\xd5\x82\xbb\x7b\x96\x2f\x4c\x3f\xd1\x49\xa6\x0a\x06\xbc\x8e\xfd\x29\x70\xef\x03\x14\x8d\xdf\x61\x98\xb9\xb6\x95\xa6\x9f\xad\xb5\x34\x09\x51\xcb\x75\x39\x8a\xc5\x1a\x4f\xd5\x54\x30\x37\x8c\xd5\xda\x88\x85\x21\x0b\xfd\x21\x46\xf9\x5c\x62\x76\x32\xfe\x8b\xe0\x6d\xe0\x1a\x7c\x27\xb8\x9d\xee\xfd\x67\xef\xc6\x9c\x9b\x5c\x62\xb3\x81\x08\xf7\x76\x22\x91\x43\xda\xe6\x60\xc1\x0c\xbe\xa3\xcd\x4f\x7e\xe5\x3d\xc3\x69\x2e\xd0\x11\x77\xe4\xa6\xf7\xe4\x24\xb5\x66\x6f\x7f\x49\x5f\x2a\x65\x60\x2c\x7d\x08\xc5\xd5\x72\x23\x4a\x56\x7c\xb6\xc3\x8a\xfd\x79\xca\xb5\xc4\x03\x6d\x62\x63\x7a\xef\xab\x55\x88\x76\x9a\x44\x8a\xb4\xc6\x5e\x24\x55\x4b\xd4\x15\x80\x50\xe0\x9e\xb5\x8f\x99\xab\x40\x77\x7b\x03\x56\x70\x9b\x7c\x02\x5a\xe5\xae\x54\x22\xac\xf8\x74\x44\x93\x1a\xe4\xd9\xa8\xb3\xd9\x44\x76\x88\x11\x28\xba\x1e\xb7\x32\x8f\xaf\xc7\x5f\x6b\x9d\xac\xc9\x6d\x3b\x64\x87\xdd\xef\x7c\x59\x26\x2d\xca\xda\x42\x6a\xac\xb1\x39\x22\x93\x54\x11\x56\x62\x35\xe0\x58\x37\x26\x22\xd8\x85\xbd\x0c\xc0\x49\x58\xdc\xfb\x17\xe0\x8f\xcd\x7f\x14\x7e\x20\x15\x6c\x8e\x26\xaf\x85\x53\x0f\x55\x11\xa6\x8d\xb4\x3d\xaf\xc4\xe6\xa2\x3f\x66\x7d\xf3\x74\x3e\xed\xd7\x1a\x3f\x07\xf7\x6f\x94\xd1\x68\x8a\xfc\x84\x63\xbf\xa5\xa4\x39\xae\x31\x14\x69\x94\x8e\x74\x47\x06\x4f\x0b\x05\x06\xf3\x67\x19\xc1\x34\x66\xa1\xb9\x87\x76\xd9\x67\xec\x58\x20\x8b\xa6\x74\x03\x73\x03\xdf\xc6\x19\x0d\xa7\x83\xff\x27\x30\x3b\x86\xb5\xfc\x32\x11\xf0\x1c\x91\x5e\x83\xa6\xad\x01\x21\x44\x79\x11\xcb\xe1\xcf\x69\x6f\x61\x8f\x60\x23\x66\x43\xf2\xe9\x4e\x15\x5d\xb6\x57\x18\x29\x44\xc1\xa4\x3b\xdc\x7b\xd5\xea\xf3\x48\x1f\xe1\x28\x40\x92\xcb\x37\x89\xa8\x92\xbd\x79\xa1\x11\xfd\x41\x01\x43\xcf\x91\xae\x33\x28\x60\xb1\xd2\x9a\xa0\x41\xd1\x77\xb5\x0d\x6c\xc2\xb9\x66\x0d\x32\x8c\x0f\x23\x0a\x35\x15\xe6\xa0\xd6\x88\x70\x9c\x0c\xd3\x47\xad\x2f\xf3\x2d\x61\xd1\xe1\xe9\xba\x76\xf8\x1e\x87\x3a\x6c\x42\x0f\x17\x07\xf3\x84\x1d\xb5\x19\x6c\xb5\x3f\x50\x6f\x00\x06\x35\x2c\x7c\x44\xc0\x80\xf3\x09\x68\x01\xa5\x7a\x49\xcf\xe8\x42\x05\xbd\xd7\xa9\x80\x1f\x84\x3c\xf2\x6b\x95\x58\xa2\xdb\x78\x8e\xf1\xb2\x37\x91\x5d\x58\x7b\x9b\xa9\x77\x98\x90\xf6\x1f\xdc\x91\xe0\x3e\x4f\x4c\xdb\xef\xe4\x17\xcc\x22\xd5\x22\xa8\x6a\xdd\xdb\x53\xf3\x74\x74\x50\xab\x62\xb5\x76\x56\x5d\xb3\x2e\x0c\xd4\x42\x76\x54\x7d\x9a\x16\x65\x3c\x27\x96\x59\xdd\x4d\x17\xec\x04\x82\x7c\x53\x3e\x33\x39\x0f\xe9\x4f\x79\x35\x09\x25\x6d\xb6\x75\x31\x73\x6a\xb3\xfc\xee\x2a\x30\x1a\xc3\xf0\xa2\x4d\x3b\x10\x8d\x7e\x75\xc3\x2a\x5a\xba\x36\xd6"}, +{{0x29,0xb2,0x88,0x1b,0x8c,0xaa,0xdb,0x33,0x6e,0x78,0x80,0xc5,0x10,0xb8,0x00,0x85,0xf4,0xb1,0x22,0x18,0x60,0xb3,0x01,0xeb,0x45,0x25,0x65,0x07,0x52,0xa6,0xd2,0x89,},{0x0c,0x5c,0x44,0xed,0x29,0xd2,0x1b,0xca,0xde,0xe2,0x1c,0xbd,0xe6,0x1a,0x9c,0xdb,0x6d,0x59,0x36,0x00,0x9b,0xa2,0xf5,0xb2,0xe7,0x77,0xc9,0x24,0xdd,0xfb,0x67,0x51,},{0x99,0xe9,0x96,0xe8,0x5a,0x49,0x4f,0x19,0x80,0xcb,0x07,0xde,0x9c,0xa6,0x16,0x5e,0x7d,0xe1,0x04,0xd3,0x9f,0xe3,0xc3,0x22,0x67,0x35,0xc5,0xda,0xa5,0x69,0x51,0x6f,0xca,0xf1,0xb6,0xe4,0xdf,0xad,0x0d,0x38,0x9b,0x6d,0xb0,0xec,0x8a,0x8f,0x20,0xdd,0x2c,0x60,0x26,0x56,0xb5,0xe7,0x61,0xc8,0xf3,0xa6,0x55,0x83,0x82,0x15,0x19,0x09,},"\x19\x74\xa2\xe2\xb4\x79\x49\xf4\x67\xa9\x31\xd1\xd9\xdd\x5c\xe1\x16\xe9\xf5\x03\x0a\xd0\x9a\x8c\xc7\x28\xd1\xae\xb1\x48\xbb\xf9\xac\xf5\x98\x74\xda\x80\xe7\x08\xd5\x3c\x66\x8f\x2f\x14\xd7\x52\x20\x71\xe9\x09\x80\x84\x27\xb2\xab\x5a\x05\xf8\xb9\x4f\x21\x50\x5c\xd2\x6a\xbc\x53\x45\x89\x78\xc7\x84\xd4\x79\xea\x6d\xab\x10\x5c\x4f\x79\x84\xa0\xfb\x97\x90\xe5\x06\x24\xf4\x73\x4b\x55\x19\x05\xaa\x5f\xfa\x60\x18\x4c\xd2\x01\xcf\x2b\x26\xc9\x79\x5d\xa6\xe7\xe0\x8d\x6a\x0b\xc7\x72\x24\x00\xfe\xf9\x4f\xc2\x10\x38\xbe\x89\xd3\x4b\xcd\x14\xc4\x27\xb8\x5b\x68\x66\x73\x71\x96\x15\x2d\x4e\xeb\x66\xd0\x5b\x24\x5a\xe8\x4b\xdc\x77\x87\xc1\x4a\x8b\xec\x2e\xea\x53\x60\xf0\x42\x43\x3d\x70\x79\x44\x67\xd4\x73\x93\xb9\x37\x57\xf3\x31\xcf\x2b\x53\xc6\x60\xd7\x1c\x29\x58\x2a\xee\xa7\x9b\x12\x52\x7a\x28\xb0\xc5\xe1\x10\xdf\x6f\x85\x4e\xea\xd9\xa2\xb0\x0d\x42\x54\x2c\xa8\x27\x6b\xb8\xbf\x98\x8b\xaa\xb8\x56\x59\x96\xfe\xe5\x0c\xf3\x1b\x24\x59\xc4\xc5\x0a\xb4\x75\x26\x5e\x83\xe2\x28\x5d\x43\xfe\x1f\x75\x2a\x55\xb2\xdb\xc4\x9f\xca\x04\xa8\x10\xf0\x41\x3b\xf6\xbd\x81\xb7\x9a\xc6\x4e\xe1\xf8\x9b\x97\xbd\x7d\x26\xd6\x25\x12\x27\x3e\x24\xa6\xba\xb2\xd5\xf7\xd2\x22\x6b\xaa\xab\x7b\x11\x12\x09\xbb\x03\x73\x3d\x8a\x60\xdf\xa3\x1a\x51\x6f\x4a\x8c\x76\x99\xd8\x28\x5c\x10\x65\x15\x9a\x6c\x73\x31\xc1\xde\xfb\x47\xa3\x0e\xf5\x85\x8c\x50\xb7\xd0\x45\x12\x4a\x09\x81\x3d\x1c\xfd\xa5\xc9\xcc\x3b\xb5\xbf\xae\x73\xc9\x84\x19\x7f\x8f\x85\x7f\x18\x6c\x41\xab\x87\xfb\x79\x62\xb6\x31\xf4\xd0\x07\xcf\xbe\xe2\x21\xfc\x65\x72\x78\x4a\x55\x11\x94\xc1\x97\x77\xb0\x8e\x6b\x59\x67\x57\xe7\xcb\xa7\xa0\xe2\x7f\xe4\x53\xf9\x0d\xc5\x9c\xc0\x8c\x64\x72\x43\x1c\x02\x0e\x8d\xd0\x91\x75\x90\xe7\x9c\x1f\x20\x73\x83\xaf\xb3\x90\x76\xad\x24\xda\x8e\xe5\x24\x86\x73\x94\x53\xa2\x59\x0e\x51\xbf\xc8\x9b\x13\xc2\x03\x3c\xfa\x5f\x89\x03\xcb\xe9\x96\x1a\x85\x98\xba\x55\x62\x32\x86\x9d\xfa\xb4\xd5\x6e\xdf\x4f\x05\xe8\xb7\x7d\x05\x87\x18\x95\xe6\x3b\x53\x51\xf7\x6c\xb2\xd2\xc8\x38\x5c\x10\x9d\x73\x06\x19\x2a\x25\x44\x6e\x4d\x62\xdc\x7d\x62\x4f\x0c\x66\x73\x98\x6b\xe0\x62\x8b\x2c\x2d\x73\xeb\x94\x1d\x35\xa3\x43\x30\x90\xf5\x9b\x28\xa5\x97\x9d\x56\xdb\xc9\xfd\x69\x73\xf6\x36\x47\x64\x2c\xd9\x03\xb0\xcf\x7a\x6a\xcd\x33\x0d\x87\xe2\x29\x27\x10\xde\x99\xe0\xc1\x79\xca\x78\x92\x9c\xca\xec\xfa\xed\xbf\x27\x42\x41\x4f\x17\x6b\x60\x90\xc0\xd5\x9a\x9d\xb7\x81\xc9\x96\x7e\x28\xfa\x4e\x77\xd2\xa0\x82\xe4\x2f\x52\x16\x91\x67\xe9\x2d\x4f\xdd\x82\xe2\xcc\x05\xdd\x91\x84\xc7\xdf\xee\x49\x0a\x23\x7f\xda\xd4\xdf\xeb\xc0\x18\x68\xe0\xa4\x35\x3a\x29\x54\xd0\x90\x92\x84\x61\x82\x1a\x7a\x84\x8d\x1b\x60\x81\x7f\xc3\xbd\xef\xa1"}, +{{0x42,0xaf,0xe8,0x9d,0xac,0x83,0xe7,0xd3,0x89,0x96,0xc0,0xdb,0xce,0x0c,0x98,0x74,0xc0,0x09,0x27,0xba,0xbd,0x77,0xca,0x8c,0xea,0xc3,0x4e,0x56,0x44,0x74,0x28,0x2b,},{0xa4,0xc5,0xf5,0xe3,0x80,0x3f,0x0a,0x03,0xd5,0xc1,0xc9,0x06,0xca,0xec,0x9c,0xc6,0xd2,0x85,0x14,0x07,0xf1,0xca,0x29,0xf7,0x2a,0x45,0xf2,0x33,0xe6,0x65,0x62,0x44,},{0x4f,0xba,0x2d,0x6c,0xc1,0xb7,0x19,0x3d,0x35,0x62,0xf8,0xc8,0xbf,0xe6,0x90,0x5c,0x82,0x9d,0xb2,0x65,0xa5,0x42,0x7c,0x5c,0x26,0x57,0x14,0x78,0x5b,0x83,0xf6,0x95,0x14,0xc5,0xe3,0x0e,0x28,0xb5,0x66,0x84,0xc8,0x2d,0xae,0x26,0x37,0x58,0x1b,0xf3,0xf4,0xef,0x27,0x14,0x20,0xbc,0x7e,0x60,0x10,0x61,0x3a,0x38,0xfa,0x10,0x1a,0x0d,},"\xe7\x10\xa1\x63\xad\x28\x85\xae\xb7\x65\x8e\xb3\x74\xf1\x18\xb7\x68\x42\xec\x36\xef\x3b\x01\x0c\x3c\x6b\x95\x59\xe8\xb1\x60\xc2\x62\x8d\xed\x0b\x85\x11\xeb\x49\x07\x18\x0d\xa4\xb6\x21\xe9\xaa\x4a\x32\x22\x88\x88\x8a\x1c\x09\x13\x0f\x69\xf8\x90\x59\x7a\x92\x93\xe7\x4f\x92\x89\xbd\xaa\x5c\x91\xb6\xfd\x24\xaa\x04\x4a\xb9\xfc\xb3\x40\x2f\x7a\xbc\x48\xd2\xab\x7b\x38\x80\xa0\x48\xda\xa4\x48\x64\x5a\xd2\xec\xb5\x5b\x3c\xae\xe2\xd6\x8a\x8b\xed\xb5\xd1\x86\x5d\x5e\x21\x1d\xe3\x9b\x0e\xaf\x22\xe5\xda\xf1\x0f\x71\x68\x20\x3a\xa1\x5b\x85\xaa\x47\xbb\xd3\xcc\x41\x69\xcb\xc1\xfe\x80\xb4\x70\x0b\x62\x58\x71\xed\xab\xcd\x4f\xe7\x4a\x3e\x96\x55\x69\xce\x24\x5c\xfc\xde\x42\x09\xcc\x8a\xbc\xd6\x79\x7d\x44\x18\x5b\x4f\x96\xc0\x18\x1b\xbd\x27\x00\x87\x83\xe9\x35\x8a\x53\x94\xfe\x3a\x34\xa0\x68\x71\xd3\x79\xda\x35\xb2\x0b\xb5\x7e\xef\x9e\x55\x24\xee\x79\x12\xa6\xf4\x1b\x4a\x1f\x68\x4c\x39\x19\xcf\xcd\xc0\x0f\x45\x80\xba\xf9\xe0\x9d\x31\x6c\xef\xa0\xf4\x65\xdc\xa5\xd8\xee\xc5\x14\xe9\x5e\x5a\x57\xbb\xcd\x27\xe4\x1f\x81\x19\xb2\x64\xae\x14\xa3\x19\xd8\xc3\x85\x9b\xab\xf1\xf4\xa6\xb6\xb7\x7e\x44\x2c\x86\x1d\x6e\xe2\x8a\xd1\x2b\x82\x36\x2e\x90\xdb\x0c\x36\x72\xb0\xe0\xd9\xff\x58\x14\x6f\xd1\x59\xaa\x8f\xa9\x9d\xc7\x55\xfc\x85\xb9\x0c\xf9\x41\x92\x79\xc0\x62\x4b\x93\xe7\x5e\xda\x0e\xf7\xc0\x96\x95\xae\x93\xbd\x72\x82\x41\x93\x77\xb7\x6c\xa8\xbd\xc0\x52\x1c\xfe\xe6\xf6\xd7\x29\xc3\xad\xff\x89\x46\x87\xb1\x77\xef\x19\x52\x9a\x6b\xda\xce\x70\xb6\x85\xc6\xd7\xa5\xd7\x4a\x08\xe2\xa9\xe7\x24\x03\x59\x75\xc8\x0d\x18\xcb\x36\x94\x70\xde\x72\x99\xcb\xd6\xb0\xa2\x7c\x92\x32\xc7\xea\xba\xc8\x6d\x50\x93\xa6\x5f\xfe\x0b\x40\xd4\x0b\xef\xe8\x0b\x68\xcd\x9d\xce\x1e\xa1\xe6\x57\xe4\x5e\x9c\x49\x9d\x0b\x69\x0f\x74\x45\x5f\xb4\x70\x96\xed\x8c\x18\xd1\x51\x7f\x90\x44\x29\x01\xa6\xc4\x10\xb7\xf6\x41\x5f\x20\xae\x48\xc5\x8a\xde\x8d\x67\x5b\x6c\x05\x8d\xf1\x6a\xe7\x69\x8f\xce\xae\x95\xaa\x77\x1b\x4c\xd8\x8a\x0b\x3f\x22\xc5\x1f\x98\xc7\x1c\x1e\xb4\x6b\x26\x4b\xf9\x7a\x30\x0e\xcb\x1f\xd2\x62\x26\xad\x8e\x87\xa0\x58\xcf\x3e\x70\x8e\x26\x0f\x56\x6b\x68\x53\x14\x04\x51\x33\xf4\xa5\xe8\xfb\xc3\x45\x61\xb9\xa0\xf1\xff\x93\x39\xf5\x52\x31\x07\x6b\x73\x6b\x6e\x11\x52\x43\x19\xa2\x72\xbd\x44\x53\xa0\xaf\x14\x93\xda\xa0\x91\x67\xe8\x46\x43\xd2\x07\xa0\x2f\xee\x98\xfb\x22\x3b\x01\xa9\x9a\xa5\xce\xf2\xb7\x00\x1e\x47\x0f\x6f\x94\xa5\xdc\x20\x8e\xdf\xc0\xcb\x8c\xf3\x11\x4a\x91\x96\x00\xf0\x61\x17\x2f\x0e\xfe\x03\x90\x36\xbf\x4d\xdd\xbf\xd0\xd4\x5f\x91\x44\x3b\xf2\x6f\x8e\x15\xed\x7d\xb8\xe5\x5f\x08\x6a\x4a\x45\x83\xf4\xbd\xa0\xf5\x56\x28\x4d\xcf\x71\x29\x2f\xe7\x0f\xca\xa8\x25\x9b\x9f\xaf\xf3"}, +{{0x10,0xf0,0x09,0xaa,0x88,0x7d,0x91,0xce,0xd8,0x09,0xaf,0xe1,0x92,0xd7,0x8e,0x47,0x99,0xd9,0x03,0x77,0x62,0xf4,0xa9,0xd3,0xa4,0x29,0xfd,0xe0,0xf3,0x9f,0x7b,0x7a,},{0xcf,0x51,0x16,0xb9,0x21,0x21,0x2e,0x9b,0x78,0x82,0x9a,0x02,0x63,0x46,0x36,0x91,0xc6,0xfb,0xcc,0xdc,0x0c,0x11,0x8b,0xe1,0x41,0xc9,0x6f,0x8c,0x88,0x05,0x3d,0xd3,},{0xc3,0x7b,0xb7,0xb7,0x3b,0x11,0x05,0xbe,0x08,0x6f,0xf3,0x07,0x69,0x72,0x07,0x72,0x62,0xdf,0x4d,0x73,0x32,0xf6,0x08,0xc7,0xb2,0xb9,0xd9,0x78,0xd4,0x74,0xcb,0xbc,0x27,0x10,0x46,0x08,0x00,0x35,0xf3,0x96,0xee,0x36,0x47,0x9b,0x7a,0x67,0x11,0xc6,0x8e,0x25,0x61,0xc7,0x41,0xc0,0xec,0x5f,0xc9,0xec,0xa1,0x73,0x4e,0x81,0x1f,0x04,},"\x2e\xdf\x14\xd6\xcd\x56\x89\x6e\xea\xa7\x70\x21\x1c\x49\x84\xbe\xd8\x0e\xca\x8d\x65\x34\xd5\xd5\x10\x88\x4f\x55\xf1\x1f\x99\xff\xa9\xf8\x9b\x58\x6f\xfe\x7b\x1e\xc7\xea\xab\x6a\x9d\xc1\xa2\x4a\x3e\xe3\xc7\xa6\xab\x44\xad\xe9\x91\x78\x83\x26\x4e\xde\x2f\x13\x61\xbe\x7d\x7a\x38\x17\xf2\x9d\xec\x95\x81\xc3\x19\xf1\x8f\x95\xd5\xbe\x26\xd9\x11\x8b\xe6\x78\x34\x00\x37\xa6\x8a\xbf\xc5\xef\xbb\x9a\x3f\x3f\x38\x78\xaa\xe3\x72\x1f\xfe\xf5\xbb\x6a\x26\xc7\xb1\xa3\xa5\x6d\x2b\xda\x6c\x6e\x86\x0e\xb4\x1f\xd8\xd8\x37\x11\x74\xd9\x1c\x74\xc5\xeb\x67\xc3\x85\x5c\x63\x0d\x64\x1d\x2e\x57\x1a\x9a\x51\xc6\x40\x2c\xfe\x18\x42\xce\xf3\x89\x80\xcb\x8d\x0a\x64\xbc\xc8\x9b\xe3\x18\x9e\x68\x11\xf4\x7e\x8f\x4d\x00\x63\xa5\xb1\x60\x1f\x44\xfd\xa2\x0c\x1c\x4c\x2f\xc4\x9c\xbe\x27\xa4\x13\x7d\xc4\x63\x8c\x2a\xd2\xd0\xa5\x47\x47\x47\x22\x9c\x56\x8e\x38\x05\x43\x1f\xa3\x6e\xeb\xa7\x85\xf7\xb9\x78\x44\xb5\xe3\x19\xfa\x6a\x09\xcc\x5a\xe8\x40\x34\x74\xbb\x91\xdd\x89\x6c\x1e\xc2\xba\xc7\x3d\x2e\x50\x5e\xfc\x62\xbd\x50\x2b\x5c\xeb\x08\xd1\x6e\x83\x2e\xc5\xdc\x4f\x98\xb5\x1b\x9d\x07\x38\xb9\xfb\x28\xf3\xab\xe8\x96\x6b\xf2\x23\x75\xa0\xb2\x2c\x47\x1a\x9e\x58\xe3\xfd\x70\x0d\xe1\x5c\x52\x96\x37\x3c\x1b\xc9\xd4\x64\x0e\xb7\x81\x6e\x1d\xc9\xc8\xce\x86\x19\xa8\x11\x83\x00\x9e\xc9\x74\x87\x1e\x8f\x0a\x97\x72\xed\xe0\xa6\x38\xb3\x57\x4b\xf7\x5d\x8f\x55\x98\x7f\x3c\xfa\x6f\xec\x68\x97\x0b\xfe\x00\xb2\x3b\x59\xfb\x5b\xf4\x99\x6e\xa5\xd7\x70\x4f\xcf\x2e\xff\xcc\x0f\xd7\xf3\xd8\xe6\x05\x60\x08\x09\x7f\x26\xca\xff\xd5\x41\x5a\x28\x2a\x27\x6a\x9b\x26\x45\xe5\xca\xb1\x29\x68\x87\x2e\xb0\x52\xf4\xd7\xc1\x0c\xc7\xc2\x1d\x51\x61\x81\x8b\xb4\x4c\xc8\x56\xb0\xde\x76\x9d\x55\x9c\x55\xdf\x64\xad\x9a\xdc\x16\xc0\xac\x65\x83\x8f\x66\x0d\xa8\x13\x86\xb7\x0b\x93\x52\x5e\xc2\xf4\x0f\x6f\x63\xf8\xea\x5d\x48\x30\xb9\x64\x6c\x46\x18\x3b\xb4\xe6\xf2\x70\x47\xbd\xa2\xa5\x46\xbd\x34\xbd\x4d\xb5\xfb\x88\xfd\x8a\xb7\xc7\x5f\x65\x2e\x15\xd5\xaa\xa6\xb4\x6a\x8a\xcf\x6e\x44\x8b\xf2\xdd\x64\xde\xe3\xc1\x05\x64\x7c\x7f\x83\xad\x20\x0d\x80\x97\xc4\x44\xa1\x58\xd8\x5a\x54\xf0\xe5\xdb\xb1\x2b\x43\xde\x94\x3a\xf1\xa8\x18\x56\xac\x96\x9f\x52\xa0\xbd\x45\x43\x81\xbd\x26\x50\x41\xa2\x69\x1d\x1a\x4a\x0d\x81\x9f\xa7\x90\x92\xc8\x80\x35\x21\xfa\x53\x68\x9a\xb8\x52\xf1\xfb\xab\xe0\x0c\x94\xb7\xf6\x82\xd1\x21\xcf\xf5\x43\x91\x32\x25\x29\xc8\xd5\xad\x7b\xbb\x98\xea\xfe\x30\x0a\xb9\x22\xf1\xc8\x92\x40\xa1\xe6\x33\xcf\x56\xa7\xb0\x2f\x74\xa2\x92\x14\xe5\x69\xa0\x57\xbd\x58\x5e\x40\x4d\x7c\xd5\x35\x20\x41\x45\x6e\x6c\xf9\x0c\x15\x34\x2e\x02\x56\x70\xf4\xfc\xcd\xf9\x87\x83\xb6\x85\x32\x14\xca\xc3\xfa\x80\x8a\x66\xc2\x7b\x65\x3c"}, +{{0x45,0x78,0xc6,0x5a,0x7c,0xa4,0x8f,0x27,0x74,0x05,0x0a,0x7b,0x0c,0xe7,0xa4,0xfd,0x5a,0xd4,0xe6,0x96,0xb2,0xb8,0xaf,0x23,0x96,0x16,0x4a,0x1c,0x7e,0x1b,0x7b,0xd7,},{0x15,0xbf,0x9d,0xbd,0x3b,0x81,0x73,0xe6,0xf0,0x3d,0xcf,0xd5,0x75,0xd9,0x09,0x84,0x5f,0x03,0x8e,0xaa,0x09,0xc5,0xd9,0x08,0xfe,0xf9,0x08,0xa9,0x74,0x58,0xb3,0xef,},{0xa1,0xc2,0x42,0xb4,0x5e,0x94,0xfd,0x18,0x0f,0x05,0x4c,0x71,0x01,0xe5,0x5b,0x39,0x65,0x68,0xf4,0x83,0xdb,0x6f,0x0d,0xfc,0x41,0x68,0xb6,0x9b,0x59,0xd3,0x85,0x81,0x4c,0x19,0xeb,0x30,0x75,0x23,0x7d,0x1f,0xbb,0x1f,0xee,0xbb,0xfe,0xa5,0x0c,0x56,0x81,0x3c,0x8c,0x39,0xc2,0x27,0x52,0xe0,0x2d,0xb7,0xe5,0x7f,0x3e,0x3f,0xbf,0x0d,},"\x50\x6f\x32\xb9\x68\x14\x24\x3e\x4d\xd8\x87\x0a\x8f\xd6\x0d\xde\xf0\x9b\xb8\xc5\x63\x15\x10\x70\xd9\xbc\xb2\xb1\x60\xa3\xea\xbd\x71\xa0\x44\xd7\x1e\xc9\x3f\xba\x95\x28\x8e\xd6\xfe\x1a\x7b\x92\x16\x51\x60\x43\x07\xd6\x5a\x45\xec\x5d\x3f\x26\x31\xac\xe4\x0e\x58\xd5\x3c\x72\xe5\x26\x88\x6e\x16\x97\x2f\x6e\x0d\xb9\x4d\x57\xb5\x56\x34\xfd\x39\xd5\x5e\x9b\xb7\xf2\x12\xaf\xab\x00\xf7\x74\x64\x09\x26\x7e\x8d\x56\x5f\xf5\xc2\x25\x73\x33\xc3\xd0\x41\x52\x17\x4f\xe1\x2d\xe6\xa5\x7b\xea\x05\x7d\xc2\x19\xe2\xfb\xa5\xf1\x91\xed\x81\x41\xc0\x18\x96\x9d\xe1\x94\x72\xd6\xaa\xf7\x63\xf1\x9e\xc5\x54\x70\x2b\xb3\xdc\xbe\x13\xca\x9b\x23\xb2\x41\x8c\x99\xe7\x18\x38\xa8\x8c\xf4\x54\x72\x8c\xf9\x20\x8a\x16\xc8\x4e\xa3\x98\x29\xb4\xba\x9b\x4c\x77\xe1\x76\x11\x2b\xfe\x1b\xf3\x5f\x95\xc4\x02\x8c\x7d\xb8\x0b\x36\xfa\xa2\x9d\x2b\x89\xe9\xe8\x62\xf3\x10\x00\x06\x5f\x13\x9b\x3d\xa7\x7d\x9d\x86\x85\x30\x57\x4b\x7e\x39\x1e\xd9\x7b\x34\xf8\x78\x16\x4f\x6b\x8d\x87\xb4\x06\xc7\xdc\x78\x60\xa5\x17\x5f\x92\x0e\x5a\x62\xdc\x1f\xc8\x2e\xd8\x45\x25\x43\xb1\x07\x36\x0d\x35\xd2\xb4\xc4\x23\x9e\xab\x46\x6d\x32\xbf\xda\x34\xf5\x10\x37\xa6\xfa\xe7\x6f\x6d\x8b\x83\xe8\xf7\xf4\x89\xdd\x4c\x1b\x49\xc3\x8f\x53\x57\x6e\x62\x17\x2c\x17\xde\xe3\x66\x5f\xde\x8c\xbf\x01\x5a\xf9\x66\x5b\x0f\x1d\xa2\xfb\x77\xb1\x34\xf0\x4b\xe2\x71\xe4\x02\xf3\x15\x37\xc2\xfc\x05\xc2\xf9\xb6\xfc\x3f\xfe\x47\xde\x33\x69\x13\x38\x67\xc6\x9d\x10\xe7\xf5\x37\xba\xe4\x56\x7d\x46\x8e\x0f\x2e\xd8\x06\xfe\x33\x5f\x93\x9c\x75\x99\x4f\x36\x3c\xe3\xb7\x0d\xaa\x7d\x5b\xd2\x31\x7c\x83\x38\x51\xfd\x8c\xc9\x72\x51\xec\x41\x90\x23\xd9\xd0\x17\x4d\x84\xd5\x60\x9a\x69\x18\xa1\x74\x0e\xb1\xe3\x09\xbd\x12\x73\x66\xde\xb9\xc5\xab\x12\x99\x2e\x99\x02\xe0\x15\xfe\x58\xd6\xad\xbf\x52\xd2\x2a\x76\x0a\xcd\x63\xe1\xed\xd8\xf1\x38\xe9\xfb\x01\x37\x18\x86\x01\xe1\x97\x8e\x7d\x04\xfb\x2a\xda\x2b\x2a\xee\x12\xf4\x9f\x28\x36\xc6\x84\x2d\x88\xcf\x48\xc8\x66\xe3\xd3\x3f\xcd\x26\x9c\x27\x5c\x89\xc2\x5e\x36\x69\xca\x90\xde\x7b\x67\xa7\xe7\xa3\x82\xcb\x7e\xfa\x47\xe9\xc2\xbf\x76\x57\x1c\x79\xa2\x50\x85\xef\x02\x04\x87\x15\x2f\x06\xbf\xa1\x33\x01\x5a\x1b\x8f\x1c\x0f\x6a\x9f\x0e\xae\x1b\xa6\x2b\xf1\x04\xf1\xc1\x6a\xc1\x4e\x1e\x96\xc4\xeb\xdf\x06\x1e\x0c\xc7\x10\x1d\x38\xda\x7e\x9e\x09\x94\xda\xf0\xf3\x22\xaa\x3c\xfe\xf9\x1b\x61\x6c\x2d\x00\x06\x89\xab\x18\xed\x45\x26\x8d\xcd\x27\x50\x94\xf6\x56\xba\x3c\xf5\x15\x26\x10\x24\x74\x1f\x74\x44\xab\x7f\xc4\xde\xcc\xe1\x67\x56\x03\x2a\x1b\xe2\x70\xff\x0b\x03\x17\x54\x2b\xa0\x26\x62\x26\x0a\x37\x6f\xc9\x12\xcb\xb0\x29\xca\xc5\x45\x15\xf5\xa5\x51\x36\x4f\x6a\x99\xff\xad\x0b\x9c\xbc\xd0\xe6\x93\xb7\xa5\x21\xcb"}, +{{0xc2,0x1e,0x70,0xc4,0x6e,0xde,0x66,0xe6,0x8a,0x88,0x73,0xbb,0xc6,0x4b,0xa5,0x12,0x09,0x30,0x3a,0x0a,0xc4,0xfc,0x49,0xb1,0xd8,0x3e,0x81,0x93,0xad,0x46,0xc0,0x37,},{0x9f,0xbf,0x80,0xa4,0x25,0x05,0xd2,0xc9,0x52,0xf8,0x9f,0x45,0x58,0xc3,0xe6,0xd1,0x87,0xa7,0xbc,0x1e,0xf4,0x46,0xb2,0xe3,0x73,0x23,0x43,0xc1,0x3b,0x33,0xd2,0x00,},{0x0a,0xe3,0x43,0xbb,0x84,0xe3,0xa2,0x99,0x07,0x8e,0x24,0x34,0xba,0x22,0x00,0x22,0xf3,0x16,0x0f,0x96,0x8a,0xc0,0x44,0x82,0xbf,0x8c,0xad,0x13,0xb4,0x23,0xf2,0x67,0x0f,0x01,0xfb,0x5f,0x7b,0x32,0xc5,0x97,0x52,0x0f,0x84,0x60,0x7e,0x0f,0x79,0xc0,0x75,0xfa,0x70,0x78,0xe6,0xe6,0x9d,0x3c,0xec,0x31,0x92,0x65,0xd4,0x66,0x08,0x0b,},"\xf5\x5a\xa5\x70\xce\x4f\xc9\x5f\x73\xf5\x17\x20\xd2\x54\xe4\x69\x5f\xcd\xc8\x1a\xaa\x04\x01\x30\xc7\x68\x7f\x03\x9b\x8b\xa5\x9e\xd8\x57\xce\xb2\x9c\x12\x10\x25\xa8\x57\xfe\xac\xb4\xa0\x1f\x38\xe0\x11\x78\x31\x0a\xe6\xe3\x5c\x99\x8e\xbf\x89\xdd\x79\x05\x7b\x4a\xfc\x6d\xb3\x40\x60\x1c\x81\x70\x3c\x87\xa8\xc4\x0e\x5c\xeb\xb0\x44\x1d\xf7\x8a\x6d\xe1\x3a\x44\x7c\xb0\x16\xc6\x5e\x74\x1b\xb7\xdf\x30\x4d\x83\x05\x6b\x72\xc6\x82\xc7\x31\xfa\xc0\xa0\xc7\x0b\x78\x11\xca\x14\xa5\x01\x54\x61\x30\x99\xc2\xc4\x37\x52\x1c\x40\x4b\x63\x61\xde\x36\x21\xf8\xea\x56\xb0\x8e\xbf\xdb\x07\xb4\xf2\xbb\x8b\xa2\xec\xc1\x64\x33\x6d\xa8\xef\xc9\x42\x76\x6e\xf0\xc7\x4d\xfd\x3b\x49\xe0\x87\xe9\xa2\x7a\xe5\x4a\x7a\x2b\x98\x28\x1b\x9a\xf9\x3d\xc1\x1a\xa2\xf0\x92\x24\xab\x5a\x73\x0f\x02\x18\xf4\xa6\xe1\xea\x48\x85\xa7\x7f\xbd\x93\xa1\xc5\x82\x77\xd9\xe0\x1b\xe7\x3a\x25\xcd\xa9\x18\xfc\x27\xdd\xdb\x45\x3a\x5d\xa6\x90\x2a\xd0\x2b\xa0\x57\x75\xc6\x7e\x07\xbe\xa4\xdf\x86\x91\x34\x66\x74\x43\x65\xc1\x32\x6e\x0a\xb5\xe1\x25\x4c\x17\x96\x74\x47\xd5\x91\xba\x5e\xd1\xb6\x3a\x42\x54\x3b\x87\xfe\xd4\x14\x59\xa0\x89\xbc\xea\xff\x21\x98\x02\xa8\x7a\x87\x2a\x76\x3e\x69\x23\x33\xce\x1c\xc7\x39\x78\x25\x08\x4b\x2b\x83\x1e\x93\xd8\x0d\x67\x37\xf3\x29\x80\xf2\xf3\xae\x82\xc6\x21\x90\xfe\x3f\xa7\x00\xc5\xb7\x32\x9d\x6d\x50\x04\x2b\xdf\x83\x1f\x37\x54\x8f\xcc\x80\xb1\x1f\x57\xcf\x20\xf6\x7a\x3b\xb6\x51\xa7\xbe\xff\xcc\x48\xb7\x0d\x17\xeb\x60\xf7\x25\x9c\xc5\x3b\xf7\xff\x60\x80\xeb\x2b\xd0\x92\x3b\x04\x83\xaa\x30\x65\xa8\x95\x5f\x01\xd2\x3b\xa8\x09\x51\xe0\xae\xfd\x2a\x93\x72\x19\x15\x72\xbc\x52\x91\x6a\xa2\x2a\x2a\xec\x39\x37\x67\xfa\xfd\x08\x68\x39\xe2\x36\xfe\x04\x60\xce\x6d\x63\x9c\x7c\xe6\x9f\xe7\xf9\xd3\xaa\xd2\x13\x05\x73\x44\x35\x70\x44\x3b\xe6\xba\xb9\x3a\x06\xa5\x4b\x8a\xc2\x9b\xf3\x3f\xf9\x94\x9b\xc9\x21\x58\xe6\x92\x4b\x6b\x68\xec\xda\x5f\x6f\x3a\xaf\x42\xb3\xd2\x2d\xf6\xd5\xe6\x7d\x5c\xb3\xab\x71\xeb\x8e\xe0\xb0\xe6\x67\x32\xe1\xda\xca\x6c\xd6\x0d\x9a\xa7\x43\x05\xfc\xd5\x70\x07\x6d\x22\x8d\x44\x6d\x5e\xe5\x42\xb1\x04\x88\xbf\x8a\xa9\x88\xf4\x51\xfa\xeb\xe7\x4a\xb6\x69\xd6\x04\xd9\xdd\xb1\x51\x06\x62\x0e\xa0\x2e\x8d\xb3\x8c\xe6\x39\xb5\x74\x78\x12\xbb\x90\x48\xee\x8b\xf7\x2b\x1a\x95\x1a\x05\xdf\xfa\xc9\x54\x17\xcb\x43\xb0\x6d\xce\x61\xee\x3d\xa6\xf2\x83\x2e\xe8\x3b\x2e\x72\x88\xdd\xd6\x2e\xeb\x58\x93\xf7\xf2\xf6\xc8\x09\x0d\x99\xe3\x36\xc9\xf9\x06\x9e\x18\x15\x98\x58\x41\xbd\xd5\x05\xb5\xf8\x3d\x89\x5e\x87\x95\x93\xda\xde\xe7\x2c\xeb\x97\x65\x69\x9b\xf8\x0b\xd0\x6a\x5c\x55\x33\x1b\x25\x45\x52\x7d\x0c\x7c\xae\xce\x96\x58\x4c\xe3\xec\x7f\xe0\x22\x60\xf2\x0b\x8a\x1c\x06\x35\x76\x3f\xf4"}, +{{0xf2,0xc1,0x05,0x77,0xf7,0xdf,0x77,0xf0,0xc1,0x15,0x7a,0x8c,0x33,0x1a,0x7b,0xd2,0xae,0x63,0x86,0x67,0x0e,0xb6,0x5f,0x0f,0xae,0x12,0x23,0x31,0x69,0x0f,0x82,0x8a,},{0x0d,0x4c,0x34,0x0f,0xc2,0x31,0xaa,0xfb,0x3b,0x6f,0x74,0xb8,0x9b,0xce,0xf7,0xee,0xaa,0x0b,0x04,0xf2,0x93,0xec,0x85,0x44,0x24,0x7b,0xfc,0x3f,0x2d,0x57,0xc1,0xe0,},{0x60,0xb7,0x03,0x11,0x5a,0x32,0x2a,0xb8,0x92,0xc2,0x76,0xbf,0xd1,0x8f,0x70,0xa9,0xeb,0x0c,0x73,0x23,0xe2,0xc0,0xa6,0xeb,0x5f,0xc7,0xe3,0x30,0xb0,0xbc,0x3b,0x07,0xa5,0x78,0xa0,0x82,0x84,0x62,0x64,0xf0,0x32,0xc6,0x19,0x1d,0x04,0x0b,0xd9,0x8e,0x5d,0x5a,0x4d,0x4f,0x07,0x6f,0xb9,0x06,0x2a,0xcd,0x36,0xbe,0xa4,0x0c,0x91,0x02,},"\x38\xea\x1e\x02\x8a\x49\x3d\x1c\x60\xec\x70\x74\x9f\x14\xd4\x36\xeb\x3a\x2b\x2d\xe5\x4f\x21\x3d\x01\xa6\x45\xb5\x80\x43\x0e\xcd\x8e\xce\x6b\x55\x69\xcc\x01\x7a\x49\x43\xe5\x59\x5c\x5e\xd6\xe4\x8c\x94\x43\xf2\xfa\x5e\xb2\x22\x7f\xfe\x56\xd2\x11\xf2\x69\xbc\x8f\x6f\xa9\xee\x8c\xd5\x6f\x6b\x84\x70\x53\x92\x08\xaf\xe2\x9a\xb0\xa1\x95\x04\x4d\x95\x7b\x31\xf9\x3e\x18\x4a\x9c\xbe\xf1\xa1\x4e\x14\xf8\x08\xbb\xf5\x89\xac\x77\x70\x08\x4f\x99\x8e\x1b\x25\x4d\xa5\x9c\xa6\xd3\xe6\x2e\x7b\xe1\x79\x07\x16\xd2\x56\x0f\x01\x5f\x39\x9c\xbb\xce\x48\xcf\xd0\x39\x1e\xad\x19\x93\x44\x6f\x6b\x24\x93\x97\x7d\x93\xd7\xb0\x9a\x07\xa7\x9a\x59\xce\x15\xdc\xe7\xa1\xda\x9c\x64\x6f\x45\xaf\x2c\xca\xd5\x5b\xa1\x58\xe6\x38\xc4\xa3\x0c\x5d\x30\xe9\xac\x6e\x3a\x33\x39\xc2\x43\x42\x6d\x86\x49\x1b\x2d\x92\xda\xc1\x47\x8e\x8d\x74\xff\x0b\xf1\x49\xbd\xb5\xe0\x9e\x3f\xb6\xb8\x26\x2e\xb0\x68\x79\x81\x55\x4a\xe2\xcb\x47\x19\x63\x39\x07\x9d\xa0\xa1\xa5\x72\x39\xc1\x9b\xf7\x81\xf6\x2f\xda\xf4\xe3\x15\x60\xa8\x43\x17\xef\x03\x04\x92\xcf\x1b\xb1\x30\x5b\xa8\x51\x8e\xba\xf2\xb4\x34\xd3\x64\x16\x72\xc8\xf6\xea\x2d\xef\xa6\x96\xdc\x7e\x4f\x39\xef\xc0\x8d\x28\x8d\x1c\x96\x6a\x6c\x71\x48\xc0\x12\xee\xc4\x39\xf7\xe1\x2d\xba\xb5\xb8\x7c\xfa\x44\xc9\xae\x19\x00\xf8\x38\x6f\x24\x44\x4e\x10\x92\xb2\x3a\x27\x4c\x13\x8e\x95\xc6\x61\xe9\x37\x7e\x8a\xd2\xd1\xfc\xaf\x19\x39\xec\x9a\x63\x2a\x87\x3f\x7e\xad\xbe\x68\x7b\x4a\x03\x3b\x92\xa4\x77\xf2\xe0\x2e\x9e\xd9\x2c\xe4\xf9\x5c\xf1\x70\xb3\x90\x15\x18\xa0\x62\x14\x3e\x56\xdb\x05\x4d\xf4\xe4\x43\x15\x44\x78\x5a\x6d\xfa\x24\xee\xc0\xf0\xde\x7a\x69\x9c\xcf\x28\x6d\xad\xfa\xd8\x59\x03\x61\x22\x50\x76\x4f\x25\xcd\xea\x81\x27\xd0\x07\x8d\x55\x48\x25\xea\x6e\x73\x71\xc4\x38\xbc\x46\xf2\x9f\xb8\x93\x7f\x8d\x9a\x39\xcf\x88\x49\x05\x2d\x43\xec\xbf\xf6\xc4\xa3\x76\x2a\x5f\x40\x0c\x15\x14\xe8\x5e\x91\x38\x4f\xef\x9b\x40\xf4\x31\x4e\x22\x3a\x9d\x68\xc5\x26\xac\xc7\x02\x27\xd6\x2b\x8b\x63\x7a\x34\x2d\xf1\x13\xd3\x18\x20\x2c\x51\xed\xd3\xc1\xef\xd1\xff\x20\xb1\xff\x07\x8b\x32\x06\x8e\x79\x4d\x92\x81\x33\x03\x7f\x1e\x3a\x34\x68\x9e\x62\x9e\x43\xfd\x2b\x8e\x88\xea\xb5\x0d\x7e\x7a\xb0\x64\x70\x14\xab\x5e\x4a\xd5\x82\x00\x65\x67\xef\xf7\x2b\x5a\xf2\xda\xc5\x36\x89\x2c\xcc\x87\x1f\x8a\x80\xb5\xcb\x79\xd9\x0b\xcc\x6b\x77\xd4\xcd\x08\xf8\x76\x18\x4e\xf5\x8c\x06\x4a\xe4\x30\xbb\x79\xa6\xb9\xe9\x6b\x0a\xd8\x73\x68\xaa\x83\x8a\x8d\xcc\xff\xac\x0c\xd8\xce\x9e\xa0\xd0\xec\x4c\x4b\x0f\x42\x67\x34\x16\x65\x9c\x98\x49\x92\xcf\x53\xb1\xe4\x45\x43\x10\x07\x64\x0d\x47\xec\xe2\x6d\xee\x4a\x29\x43\xaa\x70\x97\xdd\x35\x6c\xff\x47\x54\xf2\x1a\xc0\x7f\x6b\x3f\x73\xc4\x69\x05\x55\x12\xf3\x7a\xba"}, +{{0x04,0x1a,0x97,0x90,0x6b,0x59,0x56,0xb9,0xd3,0x40,0xf2,0xe0,0xd7,0xa1,0xdc,0xbf,0xef,0xe6,0x63,0xe9,0xbb,0x40,0x26,0xf8,0xcc,0x1a,0xe7,0xe2,0xa1,0x4d,0xe2,0x7e,},{0xf3,0x82,0xd3,0x2e,0x88,0xc3,0xa7,0x2c,0x7c,0xad,0xda,0xfc,0xf8,0xaa,0x69,0x9e,0x21,0xdb,0x7a,0x6b,0xf4,0xed,0xd6,0xe4,0x9a,0x00,0x5a,0xad,0x70,0x2e,0x6a,0x79,},{0xa2,0x3f,0x03,0x2e,0x66,0x92,0xa0,0xe8,0xbf,0xee,0x5b,0x2d,0x30,0xb4,0x14,0xcb,0x16,0xc3,0x5a,0xd0,0x8d,0xa3,0x1f,0x69,0x6d,0x46,0x1a,0x02,0x85,0x78,0x22,0xc4,0xef,0x35,0x7f,0x0c,0xcf,0x31,0x02,0x5a,0x4d,0xc9,0x5c,0xed,0x30,0xa9,0x94,0xf4,0x1e,0xdd,0x1d,0x08,0x7a,0xfc,0xaa,0xf3,0xe8,0xe8,0x75,0x70,0x83,0x20,0xf8,0x0c,},"\x71\xa7\x59\x57\x41\x15\x44\x97\x5a\x48\xcf\x10\x3a\xa1\xf8\xe2\xad\x15\x24\x44\x59\xcd\xc0\xe3\x36\x96\x6e\xb8\xb2\x6c\x97\xf2\x16\x9e\x5d\x78\x53\x70\x37\xef\xc0\x77\xe8\x6f\x06\xe0\x5e\x9c\x1d\xc3\x41\x82\x88\xc0\xa2\xbe\x6b\xa3\x4b\x3a\x04\xab\x20\xba\xe7\xf3\x62\x10\x94\xb8\x7d\x78\xa7\xea\xcb\x86\x4d\x40\x78\xcb\x4e\xfc\xba\xc5\xad\xd9\x37\xa2\xc6\x01\x2e\xe1\xa8\xb2\x56\xcc\x27\x6b\x65\xd5\xe9\x2b\x4d\x00\xb9\xb1\x1f\xad\x88\x49\x91\xde\xc4\xc1\xcb\x9d\xce\x18\x63\xc8\xb0\xa2\x10\x16\x1a\xe6\xb3\xf8\xbf\x9c\xc4\xdc\xe4\xad\xfd\xc8\xed\x57\xd8\x3e\x95\xab\x9d\xd2\xd9\x26\x58\xdf\xbd\x3a\xfa\x99\xe3\xf8\x95\x1e\x2a\xd7\x4a\x14\x8f\x6f\x59\x7e\xb2\xc9\x45\xc1\xf1\xb9\x44\x61\xae\x07\x45\x48\x1f\xd0\xed\xf8\x38\xc6\x28\x60\x35\xe3\x6f\x01\x12\x38\x87\x5d\xbb\xa2\x28\x9d\x3d\x6a\x39\x42\xa7\xf9\x55\x4c\x64\x43\x05\x24\x4d\xdb\x77\xc1\x17\xcb\x4b\x56\x23\x77\x29\xdd\xe4\x28\xb8\xbb\x42\xdf\x9c\xe2\x9e\x14\x4d\xfc\x96\xcf\x6c\x67\x67\xb1\xee\x6d\x05\x3c\xe4\xf8\xbb\x20\x56\xab\x78\x10\xaa\x13\x68\xa8\x91\x0f\x2f\x69\xe0\x61\xc1\x9d\x88\x47\x18\x4f\xed\x53\x4f\x98\x75\x8d\x70\x3a\x76\x88\x5f\x91\xeb\x75\x2a\x21\x95\x4a\x10\xc6\xf6\xb4\xda\x10\x46\x4d\xed\x36\xb0\x00\x89\xf6\x62\x91\x54\x21\xbf\xda\xd4\x96\x75\x36\x89\xcc\xd0\x3b\x62\x40\x21\x08\x07\x61\xe6\x81\x76\xb1\x06\x97\xda\xc8\x78\xe4\xc3\xdb\x2f\xd0\xb2\x8c\x65\x53\x35\xd9\x80\x16\xf1\x9f\x26\x5b\xb0\xb2\x43\x4c\xb4\x63\x78\x44\xd9\x1e\xd0\xce\x05\xed\x25\x91\xfd\x99\x89\x65\xf8\x3f\x31\x97\xd1\x0e\xef\x44\x88\x50\xe7\x92\x03\x27\x24\x70\x1d\xa3\x05\xcb\x6d\x79\x46\x69\x48\x3f\xc3\xdc\x6f\x68\x6b\x18\x3e\x29\x99\x13\x0c\x8f\xc0\x05\x8d\xca\xbb\xc9\x18\x8f\x26\xb2\xd6\x3e\xbd\x6c\xb1\xe1\x8a\x09\x7c\x77\x04\xa5\x9b\x5e\x18\x7e\x01\x42\x59\x3b\x70\x83\xf7\x40\x0a\xfa\x9b\x1b\xf0\xc1\xcc\x6c\x35\x6b\xc4\x33\x4a\xf7\x72\xe6\x71\x53\xb4\x5b\x33\x1b\x99\x09\x20\xc2\x4e\xed\xe2\xc6\xe3\x23\x70\x3f\x52\xec\xd6\x07\x35\xb2\x3b\xf2\x2b\x81\xee\x77\x59\x27\xc3\x7e\x53\xda\xd7\x59\x6e\xa6\x5a\x73\xbb\x96\x77\x5f\x3b\x87\xc8\xb3\xc0\x88\xec\x69\x5b\xc3\xa7\x50\x2c\x0c\x51\x0f\x02\x0b\xf9\xac\xa3\xcb\xb7\xa2\xc0\x11\xc6\x7f\xf2\x7d\x63\x4c\xaf\x1d\xcf\xc5\x8e\x5e\x39\x7e\x66\x58\x25\x22\x72\x01\x1c\x8f\xfd\xd6\x42\x30\xa9\x32\x41\xff\xf6\x83\x72\xc4\xba\x85\x38\x2b\xbb\x22\x93\x09\x65\x29\x22\xdb\x68\x83\x66\x31\xe5\x5b\xe6\x9a\xb6\xad\xb8\xe4\x33\x53\x57\xfc\x92\x3e\xfe\x15\x4a\xfc\xc2\x22\xd6\x0d\x07\xf5\x69\x90\xa3\xe5\xa2\x14\xb2\x27\xae\xcf\xf2\xcd\x1b\xb6\xf0\xc7\x9f\xf5\x45\xf7\x0a\x61\x61\x41\xa9\xd5\x3f\x92\x2a\x02\x44\x3f\x7d\x2a\x46\x89\xc3\x5b\x09\x5d\xd3\x94\xd5\x0b\xf4\x9f\x96\x80\xa5\xf7\xd9"}, +{{0x4b,0xc5,0xe0,0x5a,0xa0,0x03,0xa4,0x49,0x2f,0x4b,0xad,0x10,0x2a,0x53,0x90,0xf7,0xce,0xba,0xb3,0xd3,0xec,0xa9,0x15,0x21,0x42,0xad,0x5e,0xf7,0xd8,0x40,0x30,0xae,},{0x67,0x51,0xd3,0xad,0x8b,0xb6,0xc6,0x4d,0x6a,0x17,0xd7,0xe4,0x47,0xa2,0x7d,0xa2,0x2f,0x5f,0x04,0x03,0xf4,0x37,0xba,0xc9,0x44,0x9f,0x13,0xcc,0x85,0x3d,0xd8,0x40,},{0xa2,0x4f,0xee,0x11,0xf7,0xec,0x6d,0xa3,0xe9,0xdf,0xaf,0x6c,0x85,0x8a,0xc0,0x04,0xb4,0x53,0x1a,0xbd,0x1c,0x9d,0x3b,0xb6,0x4f,0x40,0xdd,0x24,0x7f,0x00,0x35,0x93,0x50,0xe4,0x3b,0x2d,0x4b,0x8f,0xbe,0xc5,0xf6,0xb2,0x41,0xec,0xf9,0xf1,0x10,0x14,0x85,0xcf,0x41,0x87,0x35,0xb0,0x5f,0x71,0x20,0x18,0x33,0x5b,0x20,0x06,0x83,0x08,},"\xa8\xf7\x94\xdb\x17\x95\x66\x7d\x28\xd2\x4b\x70\xac\x22\x00\xa6\x23\x9a\x34\xe2\x43\x8c\xed\x1d\x03\xf9\x7e\xd4\x8b\xeb\x4d\x6b\xea\x67\xc1\x43\x38\xf7\x73\x64\x19\xdc\xd2\xa2\xa7\x97\x37\x26\x57\x2e\x6a\xfe\x7e\xdf\xef\x22\xc9\x9b\xe8\xb0\x69\xf0\x4f\x6d\xc6\x1a\x13\xb3\x43\xc6\xe5\x85\xab\xad\x22\x14\xd8\x5c\x36\xf0\x29\x96\xfa\xbb\x46\xbb\x91\xb5\x17\x6a\xc7\x08\xe4\x9a\x0b\x05\x30\x17\x04\x8f\xbb\x55\x45\x3f\x2b\x82\x08\xd6\x67\x8d\x1a\x8c\xf6\xa1\xee\x9a\xd7\xa9\x1e\x38\x03\x25\x63\x5d\x1e\x23\x6a\x6c\xa1\xd6\xcc\x7f\x6b\x59\xf2\xa2\xbf\x18\x4f\x5e\xe4\x51\xd6\x79\x9f\x69\xba\x11\xa0\xcd\x6b\xc0\x4b\xe8\xa3\x51\xa8\x0e\x72\x5b\x5f\xc4\x56\x3e\x45\xbd\x47\x49\xec\xbc\x45\x20\x52\x29\x10\x5b\x9d\xe7\x32\x61\x49\x85\x27\xf3\xd4\xec\xfb\xb5\x83\xff\x53\x27\x53\xd0\x7c\x38\x52\x6b\xb4\x82\xd1\x71\xa2\x61\xb9\xcf\x89\x90\x6a\x7d\xea\x8c\xbd\x7e\x72\x6b\xa3\x1e\xa6\x88\x03\xa6\xb0\x04\xf6\xdc\xd1\x9e\x67\x19\x50\x46\x37\x38\xcc\xa7\x8b\xb0\xdf\xfa\x3d\x64\x57\xe4\xae\xca\x65\x7e\xc6\x49\xb9\x7e\xe3\x0e\x97\xc8\xcb\xe6\xce\x43\xc2\xaa\x9a\x69\x95\x8e\x9d\xc8\x81\xe4\xaa\x7b\x32\x78\x07\x4e\x78\x7a\xce\x5f\xb6\x01\xd7\xfa\xf7\xca\x51\x03\xec\xbb\xd3\xbd\x55\x4e\xb1\xb0\x66\xf8\x29\x6d\x2c\xc5\x7e\x8c\x8a\x32\xe9\xc0\xe6\xa9\x26\x96\x4d\x6d\xf2\xd8\x64\x58\x64\xb3\x22\xc3\x22\xf1\xca\x80\x73\xce\xdf\x2b\x55\x67\x11\xa7\xa2\x0b\x77\xc0\xa1\xed\x27\x7a\x9a\x6c\xa2\xc0\x71\x54\xe8\x63\xfe\xf5\xa4\x04\xe3\xe8\x9f\x0d\x7f\x30\xf2\x18\xec\x4d\xe7\xa5\x3a\xeb\x9c\x41\xee\xaa\xf6\xce\x74\x96\x49\xc9\x99\x8f\xd6\x2b\xcb\xa2\x87\x23\x38\xe1\x9c\x94\xe5\x9d\xd5\xe2\xdd\x77\x6f\x53\x71\x9d\x21\x74\x69\x76\x93\x2e\xf1\x1a\xbf\x7a\x32\xae\x6b\x07\x44\x66\x5d\x0e\x0c\xe5\x13\x95\x5a\x9e\x68\x53\x1d\x8e\xe4\xde\x9a\x8d\x35\xdd\xfb\x88\xeb\x5a\x48\x6a\xd6\x31\x37\xe8\x89\x2f\xd7\xc6\x89\xd4\xf9\xe7\x02\x1b\x11\x73\xbb\x37\x52\xa5\xee\xcf\x29\x92\xe3\xfd\x46\x42\x26\x3c\x7b\x3d\x81\x5c\x29\xb4\x66\xab\x69\x28\x5f\xfe\x4b\x8d\xaf\xcb\xf3\xd0\x1d\x63\x55\x53\xab\x75\x75\xa7\xa3\x47\x1e\xdc\x7b\xe4\x12\xd3\xd0\x1e\x6f\xe8\xe3\xcd\xc3\xfa\x04\xd2\xa7\x59\x93\x81\xe2\x2b\xba\x49\xc5\x53\x9d\x79\xc6\x2b\x52\xbb\x0e\xca\x33\xf7\x42\x55\xe4\x1a\x95\x26\xa8\x92\x89\xb1\x5f\x18\x50\xd9\xaf\xa8\x7e\x6b\x6f\xa1\x27\x10\x1c\x1a\x6d\x88\xd4\x33\xe0\xc8\x6a\xa6\x0b\xba\x8f\xe7\x10\x0e\xd6\x1d\x5a\x9d\x00\xa0\x07\x64\x51\x3e\xb1\xc7\xf5\xf5\xc3\xb3\xef\xc4\x53\x2a\x36\xb4\x07\xfe\x2d\x17\xcf\xb4\xe6\xfc\xd6\x04\x9c\xff\x3a\x35\x56\x23\xa3\xa4\x13\x90\xea\x48\xf4\x21\x20\xd8\x97\x94\x91\x11\xbe\x3d\x16\x9b\x2d\x2e\xf4\x5b\xdb\x89\x4f\xe2\x0b\x1a\x95\xef\x66\x14\x94\x27\xa9\xd8\xf8\x0a\x9b\x2e"}, +{{0xa3,0xbe,0xd9,0xfe,0x23,0x54,0xbd,0x28,0x60,0x14,0x9a,0x3d,0xb7,0x5a,0x85,0xb1,0x29,0xcf,0x83,0xe9,0xd7,0x3e,0x63,0x17,0xba,0x70,0x54,0x52,0x19,0x33,0xf8,0x96,},{0x5a,0xc0,0x3b,0x4f,0x13,0xd9,0x1d,0x06,0x6b,0x2c,0xe3,0x59,0xe9,0xbb,0x1d,0xfb,0x6b,0xfa,0x5a,0xfa,0x38,0x2f,0xd1,0xcc,0xd7,0x2a,0xef,0x11,0x76,0x07,0x9f,0x89,},{0x33,0xbc,0x1e,0x0b,0xf1,0xb4,0x93,0xe0,0xcf,0xb7,0xea,0x40,0x48,0x0a,0x14,0x23,0xe0,0x91,0xf7,0x14,0x57,0x45,0x01,0x31,0x73,0x78,0x7d,0xf4,0x7a,0x10,0xdb,0x24,0xc1,0x65,0xd0,0x05,0x96,0xfa,0xb7,0x0e,0x68,0xc9,0x4c,0x10,0x4e,0x8a,0x74,0x07,0xcf,0x69,0x5c,0xd3,0xfb,0xe5,0x85,0xb5,0xb1,0x76,0xb8,0x5c,0xcc,0xa4,0xfd,0x08,},"\xdb\x85\x38\x08\x68\x6d\x6d\x21\xf4\xc5\x7b\x54\x1e\x5a\xd6\x33\x94\xd4\x65\xe6\x00\x78\x64\x3c\xab\x1e\x06\x5c\x9f\x30\x6c\x50\x00\x78\xf0\xcc\x41\xef\x0f\x95\x42\xb5\xfe\x35\x6a\xec\x47\x77\xef\x8a\x95\x55\x4c\x97\xb6\xa4\x40\x99\xe9\xbd\x64\x04\xfb\x0b\x2e\x41\xf9\x19\x14\xb0\x74\xd1\x22\x37\xcd\x44\x2e\xbd\x40\xb5\x1b\x8b\xc8\xbb\xe4\x37\xa2\xc5\x33\x32\xd2\xbe\xb2\x28\x1b\xf7\x32\x4a\x0c\xf5\xb7\x41\xbb\xf9\x8d\x1e\xb9\x85\x8b\xe9\x26\xe9\x15\xa7\x8e\x8d\x31\x4b\x41\x44\xf3\xd2\x0d\xfc\x6c\xb7\xf4\x8c\x23\xaf\x90\xf8\x71\xc6\xcd\xa9\x08\x45\xa4\x1a\xff\x17\x07\xa8\x7b\x4e\x55\x16\xf1\x8e\x8b\xd7\x68\x3c\xfd\x74\x07\x08\x03\xe8\x88\x33\x8c\x9a\x18\xf7\x92\xc8\xd3\xa7\x04\x17\x0f\xf9\x82\xbf\xfc\x9e\x8e\xc9\xea\x5d\x1a\x62\x59\x2f\x16\x88\xd4\xf2\xb0\x1e\x11\xf9\xf8\x87\x74\xc4\x7a\xc1\xd5\x8f\x69\x0b\xcf\x28\x8c\xf8\xa4\x73\xd3\x50\xa8\x23\x9d\xf9\xd3\xa6\x28\x81\xda\xdd\x33\x85\x31\xfd\xce\x76\x15\x80\x7c\xe9\x65\x49\x6d\x6f\x35\xd6\xc0\x42\xf0\xce\x7f\x21\xef\xe5\xce\x64\x25\x18\x59\x41\xed\x56\x36\xb8\xae\x91\x3a\x75\xd2\x1a\xb9\xdb\xdb\x3c\x3b\x66\x87\xa4\x5e\x04\x49\x38\xa9\xf1\xc1\x3a\x33\x0e\xa9\x76\x1e\x28\x3e\x61\xd4\xa3\x20\xe1\xf5\x59\x88\x2f\x34\xb6\x07\xfe\xfe\x32\xc3\x43\x17\x4a\xbc\xdc\x77\xb0\x65\xa9\x29\x04\xb4\x2d\x96\x1d\xb8\xed\x91\x6c\x01\x46\x4f\xfd\x43\xf9\x3c\x10\x77\xf1\xdf\x7e\xe6\x50\x31\xcf\xe0\x5d\x78\x0d\x01\xd0\x8e\xe0\x36\xf2\x2a\x2b\x05\x12\x19\x3b\x0c\x0f\x38\x01\xe0\xa0\x20\x8e\xef\x24\x5c\x9e\x51\x93\x52\xd2\xb0\x09\x63\x82\xf2\xcb\xa0\x6e\xb2\xa0\x1d\xac\xf6\x19\xea\xbb\xc8\x83\xc5\xd4\xf2\xfd\x7c\x34\x23\x17\x9c\x0f\x5f\xfd\xaf\x8c\xaf\xff\x5c\x46\xb3\x4a\x09\xc3\xc5\x0e\x29\x49\xc0\x60\x00\x20\x7d\x70\xd3\x7d\x65\xa7\x43\x07\x5f\xdc\x2b\xe6\x2d\x41\x2a\xa6\x3e\x36\x37\x06\xca\x90\xe6\xef\x44\xe1\x52\xea\x4d\xc5\xc2\x89\x3e\xcd\x08\xd7\x96\xd4\x1f\x17\x22\x54\xc3\xd1\xd1\x4b\xb0\x67\xb5\x3a\x08\x97\xbb\xd7\x3c\x99\x54\xd9\x64\x8b\x2a\xf1\x0d\x9c\x27\x03\xe3\x8b\x6c\x62\x46\x9f\x6f\x95\x8a\x1c\xa0\xa3\x20\xc1\x23\x39\xe9\x0c\xf7\x68\xc8\x7b\x47\x38\xc2\x19\xf8\x09\x3b\xff\x4c\x2c\xfd\x29\x45\x9f\x6d\x32\x81\x34\x93\x78\xe9\x15\xa3\xb0\xe7\x24\xc7\x4d\x2b\xd7\xa8\x51\xac\x7c\x6b\x48\xe8\xaf\xc7\x12\x4f\xdc\xbc\xab\x5f\xf8\x0d\x1d\xee\x30\xa6\xc0\x24\xcb\x43\x31\x97\x23\x66\xeb\xab\x26\xbb\xb9\xf6\x08\xca\xac\x7e\x51\x91\x4d\xf0\x58\xb9\xb3\x74\x5d\x98\xc5\xd2\x7e\x97\x10\x54\x75\xec\x01\x73\x77\xe6\x31\x61\x98\xec\xe4\xec\x59\x09\xf0\x4f\xc2\x7e\x7b\x38\x2e\x66\xad\xb6\x2a\xc8\xa9\x77\xf3\x76\xfd\x5d\xae\x43\x4f\xb5\x51\x75\x24\x9c\xa1\xab\x6b\xb0\x2d\xec\x06\x96\xf0\x89\xbe\x34\x54\x88\x7a\x0c\x32\x36\x1d\x17\x2b\xd2"}, +{{0x88,0xa2,0x4f,0x0d,0xf3,0xae,0x29,0x14,0xdf,0x79,0xda,0x50,0xec,0xf8,0xec,0xb4,0x2f,0x68,0xc7,0xba,0xad,0x3b,0x6c,0x3a,0x2e,0x0c,0xc9,0xc2,0x5d,0x09,0xd1,0x42,},{0x12,0xe6,0x60,0x3f,0x71,0x3b,0x23,0x05,0x35,0x85,0x68,0x71,0x00,0x18,0x68,0x5e,0x14,0x15,0x53,0xc4,0x75,0x91,0x39,0x6f,0xb4,0x25,0x9e,0x42,0xdc,0x53,0xb9,0xc9,},{0x17,0x07,0xcc,0x00,0x91,0x86,0xbf,0x3f,0x03,0xf7,0xbb,0x9e,0x3c,0xd4,0xcf,0x6b,0x73,0x7b,0x7a,0x6b,0xaa,0xde,0x7f,0xc6,0xc3,0xff,0x5c,0x12,0x25,0xdb,0xb2,0xba,0xf5,0x4f,0x47,0xc8,0x5e,0xaf,0xa1,0x32,0xc3,0x1e,0xac,0xa0,0x3e,0x6a,0xec,0x14,0x47,0x73,0x3f,0xac,0xd3,0x71,0x49,0xb7,0xc6,0xcf,0x0c,0xd4,0x1f,0x61,0x14,0x04,},"\x65\x4e\x9e\xdc\x69\xfe\x63\x4c\x23\x08\xba\x8c\x46\xa9\x55\xe8\x82\x45\x62\x86\xea\xe3\x59\x3c\xae\x73\x9c\x44\x86\x6c\x0d\xe9\xed\xcb\xbf\x0d\xb1\xc4\x41\x49\x66\x84\x67\x70\x9d\xc9\x70\x62\x98\xdd\x2e\xac\x33\x01\xda\xba\xd5\xbd\x8e\x93\xc5\xe8\xa9\x3f\x19\x4e\x0f\xc1\xd9\xf3\x76\xc1\x44\xc2\x93\xae\xfd\xa0\x86\xb2\x21\x8f\x2e\x9d\xfd\x7c\x2d\xc5\x2b\xa3\x3e\xb2\x29\xdc\xf7\xbb\x68\xce\x0f\x87\x6c\x5f\xd4\xe8\x1a\xfd\x80\x16\x9f\x73\xcf\x26\x4e\x5d\xc0\xce\x16\xe1\xb8\x76\xcd\x11\xc7\xad\x89\x05\x8e\xe0\x82\x0c\x40\x00\x5d\x01\xf1\x19\xf8\xbe\x6f\x1a\xfb\xe2\x4c\xa4\xae\xdc\x18\xe9\x78\x96\x82\x7c\x3e\xd6\x7f\xc4\x56\x30\xe7\x90\x3b\x7f\xee\x9c\x99\x0e\x36\x19\x37\xbf\x4e\xa0\xa4\xd8\xd1\x6c\xf6\xd9\xcf\x03\x81\xe9\x06\x5e\x36\x25\x14\x8f\x8a\xe0\x49\x1a\x03\x41\xd0\xff\x9f\x72\x7b\xe1\xf3\x10\xca\x1e\xc3\xf0\x10\x4a\xa0\x54\x32\x17\x84\xdd\x24\xd5\x3c\x98\x5b\x28\xd4\x40\x82\xf8\xe1\xc1\x08\xa4\x41\x09\x63\x8f\xf5\x11\x6e\xdd\x85\xae\xb8\x6b\x6e\xa5\x12\xa1\x9b\x60\x2e\xdd\x9d\x21\x10\x70\xd0\x44\xaf\x5b\xed\xb6\xc8\x52\x7b\xa3\x49\x1e\x34\x5b\xac\xc1\x30\xb3\x69\x60\x28\x2a\xe7\x37\xb8\x5c\x76\x92\x74\xf0\xf7\xc5\x88\xf4\x0e\x66\x25\xb2\x36\xbd\xc1\xa3\xb8\x73\x20\x46\x0e\xee\xad\xa2\x78\x12\x4b\x56\x68\x87\x4f\x39\xf5\x9c\x2e\x6a\xa2\x08\xc3\xb6\xa9\xb8\x45\xc4\xd0\xa2\x7a\x05\x46\x78\x6f\xa1\x3e\x51\xcc\x98\xb7\x3f\xd7\xee\x32\x7b\x62\x15\xec\x6b\x62\x9f\x4c\xc7\xe4\xbd\x3c\x0a\x3d\xb7\x8a\x21\xff\xfe\x24\xc7\x04\x38\x71\x6b\xc3\x7b\x8d\xa7\xc5\xff\x7c\x36\x88\xa9\x03\x39\xc2\x2e\xb5\x0b\x7c\x2c\xd3\x6b\x68\x83\x1f\xd5\x93\x91\x75\x68\x9b\xd3\xe2\x2c\x38\x81\xaf\x33\x7e\xe1\x44\x35\x70\x9e\x35\x10\x40\xef\x3d\xa9\x55\x72\x4e\x51\xc2\x4a\x5e\x2c\x09\xf8\x91\x80\x83\x93\xfb\xf8\xef\x7f\x1f\x5f\x02\x98\xde\xeb\xdc\xd8\xd6\x66\xcb\xcf\x3e\x86\x6c\x71\x89\x99\xab\x6b\x1f\xee\xc9\xc4\x7e\x02\xe7\xd6\x35\x40\xf8\x99\x63\xd5\x42\xc5\xd0\x1f\xb6\xfc\x30\x76\x89\x68\xae\x81\xb2\x0c\x35\x4b\x40\x00\xc1\x32\x77\x47\x64\xd6\xd4\x43\xad\xd6\x4f\x6d\xd7\x48\xf5\xfb\x5b\x7f\x6e\xba\x40\x1d\xb4\x31\x8b\xe9\x93\x98\x9f\xcc\x25\x77\x96\x1f\xa5\xad\x31\xf6\xa2\xa9\xd6\xa7\x55\x28\x58\x65\xcd\x5d\xc3\xa8\x8c\xfb\x5a\xba\x7d\x92\x3b\xaf\x78\xb5\xd1\x31\xb4\xc2\x14\xdf\x55\xb6\x17\x1f\x45\x20\x9e\x21\xca\x66\x45\x49\x0d\x3a\x36\x44\xdd\xa6\xdc\x92\x9c\x7c\x40\x95\x76\xd3\x71\x64\x75\x5e\xf8\xaa\xf3\xdc\xd4\xd2\x27\x75\xee\x7d\xea\x0e\x56\x5b\xd5\x47\x27\x92\x1c\x64\x9b\xc5\x1f\x20\xc1\xf6\x8c\x1f\xde\xac\x45\x5c\x67\xd7\x1a\x1c\xb8\x83\x7f\x46\x91\x44\x8b\xf0\xbf\x04\x4a\x46\xf1\x68\x5f\xbe\x22\xb1\xe0\x18\x77\xf7\x47\x7d\x34\x99\x40\x8c\x4c\x31\x65\x10\xce\x2e\x55\xb9\x80\x05"}, +{{0x18,0x4d,0x0c,0xe2,0xe9,0xdb,0x7f,0x25,0x7a,0x8b,0xf4,0x64,0x6d,0x16,0xd2,0xc5,0xef,0xc2,0x70,0x2c,0xed,0x02,0x6b,0x69,0x06,0xd3,0xc8,0xc0,0x11,0x8f,0x22,0x61,},{0xe9,0xda,0xb8,0xfd,0x9d,0x94,0xdc,0x9b,0x24,0xcc,0x79,0xc6,0x35,0xcc,0x57,0xce,0x66,0x51,0x89,0x82,0xba,0x3e,0x24,0x47,0x24,0x07,0x41,0xba,0xc0,0x73,0x0e,0xc5,},{0xb1,0xe3,0xbf,0x5f,0xa7,0x4d,0x7e,0x44,0x2c,0xed,0x9a,0x98,0xd9,0x27,0xd8,0xc4,0x5e,0x0e,0x64,0xd8,0x74,0xf8,0xea,0x59,0x20,0xa3,0x60,0xa4,0xbf,0x42,0xd8,0x3c,0xe1,0x8a,0x92,0x4a,0xc7,0x96,0xe1,0xa7,0x7d,0x1b,0x02,0x08,0x29,0x4b,0x50,0xf8,0x22,0x17,0x7f,0xdb,0xdd,0x45,0x8c,0x74,0x35,0x6f,0xcf,0x6b,0xd7,0x94,0x51,0x06,},"\x6a\x9b\x87\x6b\x0b\xf4\x18\x9b\x3c\xc1\x5f\x9e\xb4\xfb\xe7\x93\x2b\x55\x77\x89\x2a\x22\x20\x0c\xe1\x07\x15\x68\x53\xd6\xd3\xca\x36\x3f\x02\x5a\xd7\xa2\xd8\x62\xaa\xdc\x74\x2d\x94\x15\xbd\x8d\x1f\xca\x13\xc9\xdc\xa3\x58\x60\x44\xe5\x5a\x8c\xf5\xde\xe1\xce\x56\x45\x76\xe3\xe8\xe3\x65\x54\x05\x46\x50\x1b\x34\xca\x67\x5c\xf2\x00\xe0\x77\x1a\x81\x8c\x73\xd3\x7f\xcd\xa8\xcb\x15\xe4\x8d\x5a\x0b\x9e\xa3\xbe\xec\x0f\xf6\x61\x0b\x2a\x8a\x21\x4c\xa4\xf7\xef\xac\x0e\x71\x38\x10\x52\xd9\xbf\x3c\x00\xc3\x29\x59\x34\x74\xeb\xd0\xa6\x87\xa0\xb4\x1d\x14\x4b\x5e\x7a\xb1\x41\x2b\x97\x0a\x74\xba\xba\x4d\x27\x4b\xb0\xdb\xfd\xb0\x2b\x11\xf7\xf6\x39\x64\xba\x6f\x3b\xa0\xad\x23\x34\x1d\x08\x3b\x91\xa4\x30\x82\x39\xe3\x3d\x50\x82\x43\x96\x12\x65\x88\xde\x72\xa2\x39\x0c\x1c\x0f\xc0\x67\x47\xc2\x87\x72\xf6\x30\xbf\x4d\x14\x3f\x7a\x11\x59\xf0\x28\xc0\x93\x40\x48\x94\xe6\xd1\x6f\x63\x46\x35\xd4\xfc\x33\x0f\x3d\x7a\x73\x13\xef\x75\x6f\x5d\x49\xd8\xf6\x20\x5e\xb1\xc7\x92\xa9\x49\x5d\xa1\x31\xb4\x33\x45\xa0\x09\x0c\x12\xca\x56\xe6\xad\xac\x5b\xe0\xcb\xca\xc3\x60\x9d\x69\xf7\x24\x15\xf6\xc3\x7f\x3c\xfb\x2c\xf7\x6b\x3e\x65\xf3\xc9\x3a\xc9\x2b\x63\xf2\xba\xa4\x66\x24\x90\x75\xbc\xa6\x9d\x4c\x1d\x1f\x3a\xde\x24\xab\x31\xef\xfc\xb9\x04\x69\xc2\x4b\xb4\x10\xab\x47\x23\xe1\xb7\xe1\xc8\x8b\x3a\x36\x43\x35\x63\xf7\x1a\x99\xaa\xd5\x8f\xe8\x05\x68\xf9\xc1\x02\xda\x89\xba\xd9\x79\x63\xe7\x7d\x66\x22\x48\x31\x66\xf3\xae\x26\x1f\x32\xa5\x2a\x86\x10\x1e\xbd\x64\x5f\x61\x42\xc9\x82\xe2\xcd\x36\x25\xcf\x8b\x46\xb9\xb2\x89\x12\x46\x92\x0f\x69\x7f\xca\xed\x39\x7c\xb9\x22\xc2\x74\x94\x51\x67\xa0\xe6\x19\xb0\xb5\x06\x37\x76\x06\xdb\x04\x57\x83\xb0\xb8\x8e\xa0\x4e\x93\x2d\x21\xff\xc0\x64\xa1\x2a\x40\xeb\xe9\xb4\x80\xf1\xa2\xc7\xdd\xd3\x95\xa9\xb1\x5e\xfd\xc4\x95\xc9\x71\x4f\x36\xfa\x99\x6f\x79\xf8\xeb\x8e\xfa\x52\xd9\x9a\x24\xab\xfe\xf4\x3b\x32\xa2\x37\xc5\xbc\x00\x18\xda\x3b\x16\x2f\x59\xb8\xd3\xd4\x74\xe2\xce\x08\xfa\x80\x24\xc5\x8a\xcc\x0a\x99\xff\x61\x4e\x6c\xd7\xfd\xd9\xca\x4e\x8f\x41\xa1\x44\x9a\xa6\x18\xd0\x33\x37\xe8\xa3\x74\xd5\x60\x55\xb2\x07\xa9\xdb\xe6\x9f\x59\x48\xf9\x01\xca\x7d\xb0\x41\x0f\x01\xaa\x37\x3d\x9e\x02\x27\x62\x35\x99\xbc\x21\x28\x45\xb0\x06\xe9\x42\xfa\xbc\x58\x2c\xd7\x26\xdb\x5c\x44\x3e\xb2\xdf\xfb\xc9\xe3\xe7\xf0\xe5\xcb\x67\x44\xf7\xad\x71\x60\x50\xfd\xf2\xc6\x0c\x7c\x77\xc2\x53\xab\x74\x5d\xb9\xc8\x55\x26\x55\x68\x3e\xa7\xea\x68\x0a\xa4\xaf\x34\xdf\x13\x25\xc2\x9b\x88\x74\xb6\x1b\xe2\x3d\xe4\xff\xba\x25\x42\x4f\x46\x19\xec\x68\x2c\x26\xb3\xa6\x7b\xda\x9b\xc4\xc9\x4b\x79\xa9\xfc\x4d\x82\xd3\x40\x49\x5b\x43\x7a\x1c\xbd\x6b\x60\x30\x7c\xfc\xb1\x00\x26\xf9\x64\xa0\x17\x62\x3e\x33\xdb\xf2\x33"}, +{{0xd0,0x2b,0xbf,0x70,0xd5,0x13,0x51,0xe3,0xb4,0x7a,0xd8,0xe5,0xed,0x26,0x3d,0xbf,0x55,0x6d,0x14,0x98,0xfa,0x9b,0xd5,0xdb,0xd9,0x9f,0xb4,0x26,0x90,0x09,0xdc,0xed,},{0x8c,0xe4,0xb5,0x9f,0x94,0xce,0xd6,0xec,0x96,0x14,0xd6,0x7d,0x30,0x66,0xd9,0xd3,0xa0,0xdf,0x7a,0x46,0xb3,0x7b,0x4c,0x17,0x25,0xef,0x1e,0x57,0xbc,0x68,0xa0,0xd1,},{0x6e,0x7c,0x66,0xac,0xc9,0x54,0xff,0xd9,0xdd,0x4c,0x1c,0x63,0x35,0xab,0x4f,0xe7,0x9d,0xbb,0xed,0x78,0x2c,0x4a,0x47,0xec,0x30,0xd8,0x48,0xd8,0xbb,0x2b,0x4f,0x10,0x69,0xdc,0x62,0xe5,0x22,0xa1,0xe8,0x01,0x7f,0x54,0xa6,0x34,0x5e,0x17,0x28,0xc0,0x73,0xaf,0x64,0x47,0x85,0x6d,0x8c,0x1e,0xd3,0x58,0x78,0xb5,0x71,0xe5,0x23,0x0d,},"\x55\x45\x60\xf7\xa7\xfd\x1a\xe7\x75\x8a\x2f\xce\x7d\x78\x0f\x6b\x3f\x04\x3d\x3a\xf8\x9d\x4f\x19\xef\x57\x3c\x34\x99\x75\x54\xdf\x24\x3f\xaf\x2a\xaa\xb6\x5b\x2a\xfd\xd2\x86\x10\xd4\xa5\x1e\x9a\x4b\x46\x4d\xb6\xdb\x09\xeb\xf7\x3b\x7d\x24\x05\x4c\xc9\xb1\x28\x14\xbb\x29\xee\x99\xe1\xa7\x3b\xd6\x03\x89\x83\x60\xf9\xdc\xf0\x1e\x67\x08\x36\x28\x6f\x82\x36\xed\x8c\xef\x07\x5f\x3d\x56\x33\x12\xc1\x6c\x73\xfc\x37\xee\xdf\x25\x2f\x8f\x42\xd3\x0a\x13\xe7\xfb\xa3\xb1\x65\x23\x8c\x7f\x81\xea\xae\xb5\x31\x90\xf3\xec\x3b\x5d\x63\xf0\xee\x03\xe3\x98\x7e\x39\x0d\x1d\x81\xe8\x27\x7e\x9f\x6c\x1e\xe6\xec\x4e\xc3\xfa\x0d\x72\x0e\x9f\x53\xf9\xc2\x6f\x04\xaa\x2e\xd2\xb5\xef\x31\x60\x89\x59\x99\xea\xce\x29\xcf\x5d\xc2\x54\xad\x71\x10\x6b\xb7\xe8\xbc\x29\xa5\xb1\xd2\x41\x25\x93\xd0\x81\x94\xe8\x8e\x16\x59\xa7\x31\x59\xa2\xa2\x20\x33\xab\x06\x6e\x8d\x3d\x8c\x3b\xc8\x6b\x7b\x01\xde\x81\xa8\xc6\x60\x47\xb0\x7f\xe2\x4e\xd2\x40\x31\x8b\xa3\x7b\xa3\xef\xb6\xcf\x63\x26\x04\xca\x4f\x44\x6a\x75\xfd\x8e\x70\xc4\x53\xf0\xc6\x0e\xe1\x6e\xca\xf5\x24\xe7\x03\xf4\x7d\xf5\xc2\x82\xca\x32\x89\xb3\xaf\x61\xde\xe4\x70\x9e\xe0\x85\x32\x3b\x1e\x5c\x8a\x6b\xc0\x76\x62\x01\xc6\x35\x03\x14\x46\x89\x1f\x34\x94\xe9\xdb\x20\xdd\x4e\x9e\x08\x38\x24\x9a\x67\xe1\x38\xd1\x3e\xe2\xc9\x6f\x61\xe7\x71\x06\x15\x42\xaa\x16\xef\x20\xd8\x1e\x3a\x0f\x4e\x45\x21\xa6\xcd\x6c\x92\xfc\x26\xfe\xef\x03\xb6\x6c\x70\xe0\x35\xca\xfc\xc1\x9c\x96\xfb\x9d\x82\x91\x8f\xe1\x97\x78\x0e\xff\x0e\xda\x6e\x25\x12\xc5\x6e\x2a\x73\xd7\x70\x32\xb7\x68\x91\x9b\xea\x97\x72\xf5\x98\x9c\x8b\x6c\x65\xc3\xd1\xe9\x7a\x21\x80\xcc\x3a\x37\x57\x9d\xa7\x0c\xe9\x80\x6a\xc1\x28\x5a\x3e\xab\x41\x5c\x06\x07\xd8\x8c\xb8\x65\x42\xea\xb9\x0b\x9d\x2d\x67\xfa\xff\xfc\xad\x23\xa7\x14\x00\x0e\xe5\x9e\xd6\x8c\x95\x6e\x81\xc4\x45\x42\x88\x82\xf9\x7a\xf7\x4d\xb3\x62\xe4\x5c\x0d\x1b\xd8\x85\x6e\xed\x16\x6e\x4a\xec\x4b\xfd\xf9\x5e\xad\xb2\x51\xe2\xa1\xef\x80\x48\x52\xa9\xea\x77\xd3\x45\x77\xfe\x70\x83\x1a\x92\x8b\x10\x1b\x60\xac\x61\x3e\x7b\xa2\xe6\xba\x0a\x94\x01\x3a\x64\xc2\xf8\x21\x9f\xd3\x0b\xff\x40\x90\x99\x66\x7a\x78\x6f\x99\x32\x7b\xb0\x3e\x2f\x21\x87\xf4\x45\xb4\x6b\xee\xda\xb6\xd3\x25\xaf\xd9\x04\xe3\x95\x43\xe9\x3f\x4b\x6c\x54\x43\x24\x9d\x74\x4b\x2d\x1a\x43\xe1\x41\xe4\x76\x8b\xd4\x0a\xab\xe4\x05\x72\x44\xe1\xea\xdd\x9d\xae\xc1\x75\x71\x9e\x51\xa0\x93\xac\xe3\x2f\xe8\x2b\x2e\xac\xb5\xec\xb0\xda\x6c\x1f\xfe\x98\xc8\xce\xe7\x88\x6e\x30\x16\x70\xdf\xf8\x71\x13\xef\xed\x42\x82\x47\x1a\xfb\x6b\x8a\x0f\xdb\x50\x5e\x2e\x8e\x7d\xbc\x1a\x08\xa2\x2e\x96\x80\xbd\x09\x8b\xf1\x27\x58\x02\xbd\xb4\x59\x41\x3a\x3b\x23\x7d\x77\x13\xa1\xbb\xf5\x97\xe6\xad\xf2\xb6\x0e\xaf\x82\x37\x91\xb3"}, +{{0xaa,0x0f,0xda,0xe2,0xa5,0xa4,0xc9,0xc0,0x45,0x21,0x91,0x30,0x04,0xcd,0x89,0xef,0xbc,0x88,0xb2,0xda,0xdf,0x5a,0xbb,0x24,0x6f,0x3c,0xa7,0xf6,0x92,0x35,0x44,0xaf,},{0xbf,0xfc,0xb1,0x7c,0x35,0xc1,0x30,0x4c,0xdd,0x9d,0x62,0x4f,0xf6,0x9b,0xee,0x60,0xec,0x7c,0x9e,0xc3,0x27,0xd1,0x23,0x50,0xd7,0x0f,0xac,0x12,0xb4,0x7c,0xc2,0x5c,},{0xf9,0x37,0x29,0x89,0x69,0xca,0x34,0xd9,0x75,0x84,0x44,0x89,0x07,0x35,0x8b,0x0f,0x47,0x84,0x1f,0x30,0x23,0xaf,0xc7,0xef,0x76,0x81,0x52,0x1c,0x5b,0xe0,0xf5,0xe5,0x62,0x8a,0x8f,0x60,0x7e,0x2f,0x31,0x63,0x6e,0xf6,0x36,0x46,0xb0,0xe9,0x89,0x8a,0x72,0xad,0x35,0x57,0x06,0xd2,0xc8,0x06,0x0f,0xbc,0x64,0x0e,0xfb,0x3d,0x66,0x05,},"\xb1\x41\x84\xcf\xdc\x4a\x5f\x0c\x7f\x83\xf9\x4a\x83\x2f\x58\x85\x07\xe2\xd7\x2a\x89\x32\x98\x70\x07\x85\x71\xd2\x08\xa0\xc4\x96\x0c\x2f\xdc\x4c\x23\x6c\xf8\x82\x29\x98\x1d\x12\xb1\x0a\x1b\x68\x84\xc8\x65\x0d\xda\xf1\xd4\xb2\xeb\x98\x15\x75\xb1\xe0\x19\xfe\x3f\x60\x42\x36\x76\xf8\x85\x6a\x99\x2c\xce\x36\xd6\xd0\xa3\xd0\x26\x63\x1c\x8c\x1e\x1f\xfe\x34\x13\x4b\x29\x6f\x40\x84\x2b\x6d\xf4\xf8\x6f\x83\x3e\x01\x75\xba\xe5\x0e\x86\xbf\x85\x6d\x1e\xe7\x99\x25\xf4\x34\xb8\xbf\x2c\x84\x51\x9f\x1f\x5d\x25\x38\x60\x49\xce\x3c\xa6\x17\x77\xe3\x0b\x70\x0a\x60\x2d\x39\x52\x50\xb6\x0f\xc6\x4a\xc6\xf8\xdb\x02\x7e\x8d\xa8\xb9\x55\x0f\x24\xed\x11\xa1\x1d\x9f\x9f\x9c\x5e\x0a\xf1\x45\xb8\x65\x97\x51\xac\x6b\x55\x86\x1f\x63\x88\xa6\x43\x36\xb3\x1e\xfe\x45\xc0\x80\x2d\x76\xa5\x34\x86\xa8\x1e\xba\x07\x31\x4b\x4d\x96\x1c\x14\x1a\xb3\x4e\x2f\x76\xed\xac\x0e\x6d\xe3\x14\x22\xdf\x79\x2a\xf0\x81\xe7\x69\xc7\xed\x05\xda\x9a\x5a\xf2\xfd\xf3\x6f\x14\x17\x69\x90\x8b\x70\x09\x37\xf0\xe1\x06\x8c\x13\x1f\x17\x6e\xb9\x6c\x67\xaf\xdb\xe7\x8f\x40\xd8\x60\x07\xfb\xcd\x47\xe4\x9e\x2e\x4c\x4c\xe0\x49\x93\x6a\xdf\xf1\xce\x3e\xac\x42\xb9\x6b\x34\x29\xb5\x62\x6b\x1a\xa6\x2a\xcd\xe0\x7f\x45\xa1\x3c\xe1\xbd\x21\x1f\x32\xbd\x7e\xfe\x47\x90\xc8\x37\x1e\xbf\x87\xc1\x64\x47\x7a\x5c\x9f\xa3\xe7\x8c\x2f\x88\x07\x7b\x09\x73\x44\xcf\xfa\x03\x1c\x44\x29\xc7\xf4\x2d\xca\x07\x73\x78\x50\xee\x7a\x76\x9b\x36\xd0\xf0\x62\x5a\xdf\x12\x0e\xa2\x3f\xf4\xe3\x93\xa4\xfd\xcb\x65\x58\xdb\xf9\xb2\x66\xa0\x32\xe3\xb0\x59\x9b\x9d\x66\x92\xfc\xeb\xd8\x15\xa3\x89\x76\x07\x85\x63\x25\xfc\xd0\x11\x5d\xc3\x10\xdb\x3a\x87\x92\xfb\xeb\xd3\x99\x49\x4c\x83\x71\xe5\x85\x72\x7b\x3d\x63\x24\x14\x49\x68\x93\xd0\x38\x13\xba\x1f\x99\x66\x1b\xce\xb9\xdc\x18\xec\x5d\xc2\x7f\x52\x67\x03\x18\x68\x77\x69\xfc\x67\x8d\xdc\x7e\x40\x22\x7c\x20\x05\x22\x01\x3f\x5c\x0e\xec\x0e\x47\x81\xe6\xfc\x15\x3a\x0c\x2f\x4f\x3f\x95\xe5\x17\xc8\x41\x99\x24\xab\x39\x99\x2a\xf8\xc1\x94\x65\x05\x7f\x13\x44\x86\x69\x6b\xa7\xfd\x46\x51\x76\x8b\x4e\x74\x9e\xf3\x6f\x02\x44\x46\x17\xcf\x97\xf0\xa4\x23\xe4\xc1\x3b\x7b\x66\xba\x2b\x6c\x45\x68\x78\xb0\xb5\x0c\xe2\xee\x5e\xc5\x64\xed\x88\x54\xf7\x82\xaa\x1d\x1c\x6a\xa7\x60\xf2\x52\x2c\x7d\x97\xb9\xb1\xab\xe0\xba\x81\x09\x59\xd7\xaa\x40\x3a\x99\x37\x5a\xa3\xe3\x9a\x11\x5d\x1f\xc6\xfe\xdd\x00\x2f\x38\x30\xa5\x0a\x83\x7d\xc7\x20\x32\x9e\xc0\xc7\x3d\x5b\xfd\x50\x03\x85\xc7\x36\x83\x82\x87\xe1\x92\x01\x52\x5d\x18\x9c\x3a\x08\x4c\xd5\xa3\xf3\x59\x87\x5e\x3b\x83\x25\x28\x9c\xed\x18\xb6\x3b\x00\xff\x9c\xd0\x70\xc3\xe6\x74\x44\xbd\x3d\x83\x46\x17\x40\x85\xcc\x45\x13\x5c\xaa\x0c\x67\xb3\x22\x6e\x4a\x52\xe9\xa1\xc5\x5a\xed\x7e\xc5\xfa\xde\x6b\xf1\x6c\x19"}, +{{0x71,0x62,0xfe,0xf0,0xac,0xa4,0x97,0x4b,0x09,0x4a,0x6a,0x08,0x05,0x43,0x95,0xf8,0x77,0xff,0x94,0x33,0xf1,0xe3,0x3e,0x20,0xe8,0x8e,0xaa,0x90,0xf9,0x38,0x99,0x7d,},{0xa2,0x80,0x64,0x0f,0x13,0x9f,0x45,0xc3,0x5a,0x48,0x71,0x53,0x7e,0xef,0xe6,0xef,0x9d,0xb0,0x2d,0xe7,0x85,0xee,0x9f,0xd5,0x4f,0x80,0x5f,0xb5,0x7d,0x37,0x46,0xef,},{0xae,0x16,0x1c,0xce,0x95,0x40,0x33,0x84,0xb6,0x5c,0x6b,0xc9,0xb3,0x93,0xeb,0x07,0x25,0x64,0xc3,0x5f,0x3a,0x6c,0x04,0xfa,0x51,0x7a,0xb0,0x68,0xbc,0xd2,0x37,0x67,0xcc,0x0c,0x8e,0xdd,0x92,0xb1,0xa1,0x3a,0xe9,0xa9,0xce,0x48,0x64,0x13,0x7f,0xb8,0x9c,0x1f,0x37,0xb7,0x48,0xcf,0xc9,0x13,0x4b,0x67,0x41,0xba,0x1b,0x22,0x28,0x0d,},"\xc9\x0f\x45\x0b\xda\x1c\x6e\xfd\x8d\x12\x78\xde\xbd\x7a\xe0\x3e\x2e\xac\x27\x40\xa5\xa9\x63\xfc\xf9\x6c\x50\x4e\x31\xd4\xd6\xfc\xc5\xe2\xb5\x2a\x25\x18\xd2\x74\x1c\x55\xe9\x59\x18\x67\xb2\x42\x32\x28\xf9\xc1\x9f\x33\xc6\xf3\x87\x05\xc6\x20\x36\xd4\x80\xff\x53\xdf\x12\x07\x7e\x38\xfd\xb0\x73\xc6\x73\x10\x5d\xa1\xe1\x16\x19\xba\x53\x21\xa7\x1b\x5f\x49\x93\x23\x4a\x11\x94\x8e\xa1\x10\xcf\xa2\x42\xbc\x23\xfa\xc9\xaa\xe4\x62\x60\x6e\x39\x64\x1c\xa7\x14\x7e\xeb\xba\x1e\xec\x55\x3f\xce\x94\xe5\x3e\x4e\x01\xb0\x73\xdd\x78\x0a\x2f\xf6\x78\xb3\x15\x72\xca\x11\xee\x08\x77\xe7\x56\xbc\xdb\x66\x53\xe5\xe1\xb4\xcb\xfb\x56\x9a\x9d\x60\xe3\xee\x33\x61\x82\xdc\xb9\xb2\x5d\x1b\xe6\xdb\xf9\xb5\xc7\x14\x6d\x77\x55\x85\x83\x4c\xab\xde\x02\x78\xae\xe5\xd5\x7c\x85\xe9\x83\xf8\x4d\x88\x33\xa9\xe1\x5b\xcc\x11\x19\x8e\x1c\x1d\xa6\xba\x59\x28\x21\x29\xf1\xdb\x96\x6f\x54\x60\xc8\xfb\x65\x30\xfb\xc3\xa9\x8a\x31\xfc\x0f\x4e\x9b\x33\x73\x66\xee\xc1\xdc\xe1\x08\xc8\x26\xd4\x90\x45\xab\xfa\x12\xee\x88\x79\x7f\x08\xf0\x68\x3f\xef\x77\xed\xaa\x35\x43\xb9\x1c\xb1\x18\xe4\x24\xd9\xc4\x08\xda\x54\x74\x31\x12\x51\x07\xd9\xb0\x74\x4c\x24\x43\xce\x99\x17\xe1\xe3\x28\xd8\x18\x50\xba\xbb\xc9\x4d\x92\x0a\x1d\x06\xe5\x24\xdb\xb6\xc2\x3d\xd8\x2e\x17\x87\x82\x2d\x71\xc4\xcd\xc4\x09\xae\x85\xba\x4d\xeb\x58\x1f\x93\x47\x48\xf7\x5e\x7a\x76\x9b\x9d\x68\xc4\x58\x9e\x59\x4e\x65\xcb\x6c\x8f\x49\x03\xff\xba\xbd\x5a\x32\x6e\x89\x44\x1a\x54\x2f\x8a\xc2\x64\xcc\xc6\x4e\x95\xa8\x98\x2a\x71\x0b\x6c\x56\xff\x7d\x10\x91\x6a\xfc\x40\x9e\xa8\xa4\x1b\x74\x67\x9d\xd6\xa7\x66\xf5\x9c\x52\xb9\x30\x5b\xa7\x33\xb1\x3c\x9e\x81\x1e\xe1\x30\x83\x92\x5f\x42\x00\x68\x2b\xd0\x5d\xea\x33\x95\x32\x52\x29\x70\xaa\x14\x9d\x00\x4a\x2e\xa2\x0f\xf4\x61\xe9\xec\x0f\x3b\x62\x56\x5c\x1a\x10\x62\x59\xc8\x36\x60\x5c\xc2\x7c\xad\xc9\x51\x5c\xb9\x97\x9e\x89\xaf\x28\x7c\x02\x7d\x75\xed\xbf\x87\xd5\xcf\xf6\x3a\x7f\xec\x9b\xd1\x0e\x78\x77\xab\x9b\xf8\x68\xd7\x34\xbd\x3a\x23\x74\xce\xf7\x02\x5c\xc4\xda\xb7\x10\xe2\x54\x80\x66\x85\xa1\x36\xec\xd0\x3e\x36\x77\x03\x46\x51\x3a\x15\x14\x5b\x89\x0e\xee\xf4\x7b\x80\xea\x08\xe4\x6c\x81\xd2\x02\xe5\x33\xe9\xa0\x6a\x38\xa6\xf7\x6e\xf5\x7a\x9c\x73\x6e\xc7\x8d\x00\xb8\x08\xe3\xff\xd9\xc7\x9b\x9d\xc7\xa2\xe5\x89\x90\x76\x56\xc9\x32\xab\x8a\x8b\x57\xda\x1a\x49\x5b\xa7\x45\x20\x15\xe7\x92\x4b\x52\x69\xab\x1f\x67\xbd\xb4\x3a\x35\x83\x14\x87\xab\x90\x02\xf5\x2d\x78\xb1\x34\xcd\x37\x51\x92\x5a\xaa\xb0\xb4\x5c\x8e\x6b\x0f\x2b\xf0\xcc\x9a\x46\x59\x31\x71\x08\xfb\xa9\x13\x6a\xab\xb0\x92\x1a\x58\xfb\xb9\xb5\x0e\x51\x24\x3f\x9b\x53\x18\x47\xdc\x96\x57\xe9\x6f\xba\xf7\xaa\x69\x8f\xe6\xfe\x44\xf9\x05\x90\x14\x4c\x70\x33\x72\x50\xc5\x8b\xc5\xdd"}, +{{0xde,0xa1,0x80,0xc9,0x1b,0x53,0x3a,0xaf,0x73,0x6b,0xc5,0xd3,0xc8,0xe4,0x74,0xd5,0xe5,0xd4,0x75,0xb7,0x5b,0x92,0xcd,0xe6,0xbd,0x1d,0x10,0xf3,0xb8,0xf5,0x5a,0xd4,},{0x30,0xb2,0x0f,0xb3,0x20,0xb0,0x0e,0x77,0xc4,0xe0,0xa8,0xeb,0x37,0x30,0xaf,0x3c,0x0b,0x1c,0x5f,0x5e,0xd9,0xee,0x2b,0x05,0x62,0x70,0x7e,0x4f,0x55,0xc4,0x93,0x8b,},{0xd0,0x83,0x33,0x3f,0xb8,0x4e,0x79,0xc9,0xb3,0x3e,0x55,0xe8,0x19,0x2d,0x57,0x1f,0xfc,0x8d,0xc5,0x07,0x45,0xb6,0xb5,0xfd,0xd8,0xc4,0x4d,0x92,0xa6,0x3f,0xd1,0x78,0xc4,0xe5,0x7c,0x2a,0xb3,0xa1,0x21,0x1c,0x0b,0xa2,0xd3,0x9d,0xa3,0x0b,0x06,0x62,0x9d,0x8d,0x1c,0xc1,0xd9,0xf2,0x59,0x32,0x63,0xd5,0x24,0xfa,0x5a,0x2e,0xbc,0x03,},"\x60\x61\x44\xb7\xd4\xf9\x6b\xef\x7f\x11\x2b\x6d\x41\xbc\xb5\x00\xd2\x13\x6c\x13\x4c\xed\xa2\x20\xe2\x4d\x0f\x15\x24\xec\xa1\x2c\x30\xf2\xb1\x02\xc7\xf3\x78\xd6\xbb\xa2\x59\xc5\xb4\xa5\xef\x8e\xc9\x30\x9d\x5c\x8d\xa7\xe8\xd2\xde\xd3\x79\x2a\xee\xea\x21\x08\xf7\x7d\x66\xb2\x30\x45\x93\x8e\xd6\x47\x51\xf2\x0d\x48\x32\x6b\xe2\xfb\x99\x62\x8c\xfb\x18\x73\xd7\xdd\x27\x58\x1c\x10\x5e\xc1\x32\x49\xa9\x52\xa5\x07\x84\xb8\xb3\x4c\xb3\xb2\xc1\xa0\x04\xfa\x8b\x62\x8a\x07\x67\xfa\x9a\xbf\x05\x8d\x95\x5d\xf8\x5d\x13\x4a\x0f\xc7\xf4\xb7\xd7\xfb\x0c\x8d\x31\xbc\xe3\x45\xdd\x0a\x42\x82\x14\x5a\xfb\x2f\xf1\x97\x51\xf2\xcc\x3a\x1c\xae\xa2\x42\xba\xaf\x53\x87\x49\xbf\x38\x80\x00\xe3\xdc\x1d\x73\x93\x59\xdf\xeb\xae\x64\xae\x1e\x10\xfb\x6f\xc1\x7c\xc9\xfb\x95\x05\x35\xc2\xde\x12\x95\x87\xa8\x68\x59\xb7\xbe\x36\xdf\xe9\xb6\xc1\x14\x1b\x25\xe0\x91\x5c\x8d\x4a\xa1\xcc\xea\xe7\x04\x6b\x3d\x7c\xfa\x94\x0b\xc9\x8d\x4d\x69\xfc\x5a\x30\xdd\xe1\xde\xe4\x2f\xb5\x27\x22\x81\xbf\x8f\x8e\x7f\x3e\x1a\x04\x39\x7f\xb4\xf3\xad\xef\xc5\x75\x32\xdd\xbd\xe3\x68\x33\xa6\x76\xe6\xf3\x9c\x82\xaf\xf6\xbf\x48\x32\xec\x97\x1e\x03\xbe\x38\x29\xc0\x2a\x20\x3c\x82\xd9\xeb\x8c\x16\x30\xee\x96\x93\xf4\x5d\x26\xf5\xf5\x1a\x31\x03\xca\x64\xd4\x68\xec\xea\xc1\xb2\x9a\xf4\xc4\x2e\xb2\x16\xd7\x6e\xc8\x99\x48\x36\xb4\xbe\xc7\x64\x89\xca\x50\x70\x68\x0c\x2c\x2e\xb4\x57\x21\x0a\x77\xc4\x7f\xdc\xbf\x60\x01\x72\x07\x3a\x53\xf1\x45\x3b\xb5\xc8\x04\x39\xc8\x82\xf0\x73\x6d\xe4\x06\x37\xb4\xf5\xab\x1f\x76\x1f\xf3\x55\xc6\xe9\xbd\x4a\xbd\xe7\x56\x0d\x5f\xc1\x13\xc8\x30\x15\x9a\x1b\x77\xc4\xe8\x7b\xc2\xc6\x98\x80\xa4\x0c\x58\x05\xec\xc8\xaa\xaf\x57\x57\x5b\xcc\xd8\x17\x7f\xc6\xb8\x35\x69\x23\x3c\x0f\x5c\xa2\x23\xac\x40\x13\xca\x10\x6c\xac\x28\x54\x70\x6a\xea\xd7\x14\xfa\x29\xf2\x86\x0a\x5f\x97\x53\x26\x8a\x36\x71\xd9\xf5\x9c\xde\x60\x48\xcf\x0b\x89\x86\x05\x0f\x7f\x54\x9e\x4f\xd7\x55\x7f\x2f\xc3\xfc\xdc\xcd\xdc\xef\xda\x58\x6a\x64\xb3\x00\x6e\x58\x25\xf2\x7c\xa3\x16\x87\xca\xf6\x63\xbd\x90\xa0\x5b\x11\x52\xd7\xc8\x8d\x7f\x10\x51\xa9\xd7\x91\x74\x86\x51\xd8\x88\xa6\xa1\x2f\x22\xd6\xc8\xc3\xf7\x8c\x2b\x86\xea\xf5\x39\x4b\x4e\xf7\xee\xfb\x89\x79\x7b\x25\xe5\x42\xdc\x93\x10\x2d\x02\x1a\x1d\x0b\xed\x6a\x7d\xcd\xd8\x10\x2b\x8f\x04\x30\xa0\xbc\x21\xd9\x04\xa3\xc9\x34\x6c\x01\x83\x43\xdd\x99\x37\xcb\x35\x25\x00\x07\xa2\x84\x82\x5d\xb0\x8e\x9a\x11\xfe\xe3\x1c\xff\x7a\x31\x4c\x48\xc4\x2d\x8b\x31\x4a\xcc\x27\x82\x2a\xf0\x3d\x19\x54\xc7\xcc\x8b\xf9\xad\x4e\x9e\x98\xf4\xad\x4e\xfb\x35\x52\x88\xda\xa8\xc9\x0d\xe9\x03\x7e\x64\xa7\x86\x1f\x5e\xe4\x3a\xda\x9f\x0f\xcc\xde\x34\xd0\xbc\xf5\x02\x88\x55\x0f\x70\x0f\x21\x5a\x79\x44\xa5\x38\x0e\x2a\x8e\x3f\x04\xf2\xb4\xf5"}, +{{0x9d,0xaf,0x6d,0xbb,0x7f,0x76,0x29,0x66,0xe7,0xa5,0x7c,0x2e,0xc1,0x99,0x6e,0x9f,0x5b,0x55,0x5b,0x98,0x66,0xb8,0xe3,0x1d,0xea,0xab,0x43,0x56,0xeb,0x13,0x81,0x6e,},{0xf0,0x21,0xb5,0x5a,0x36,0xd9,0xfb,0xfb,0xf2,0x97,0x8b,0xc0,0xdf,0x73,0x6b,0x28,0x9c,0x82,0x41,0xd6,0x43,0x53,0x09,0x84,0x1a,0x13,0x4b,0x07,0xd4,0x7c,0xe4,0xed,},{0x49,0xb6,0xbc,0x46,0xb7,0xab,0xb5,0x69,0x4d,0xa9,0x42,0x15,0xef,0xc4,0xb3,0x0e,0xea,0x04,0xae,0x2e,0x73,0xeb,0x2d,0xa8,0xe8,0xc9,0xef,0x9b,0xe2,0x22,0x24,0x98,0xb1,0x7e,0x13,0x93,0x96,0x46,0xc2,0x9e,0x32,0xd6,0x45,0x58,0x46,0x40,0x64,0x15,0x90,0xb1,0xbb,0xdb,0xfe,0x24,0xf3,0x6c,0x6f,0x69,0x4b,0xf8,0x72,0x38,0xee,0x04,},"\x54\x45\x23\x90\x0d\xaa\x67\x78\xc0\x39\x1a\xe4\x04\x4a\x51\xc0\xc4\xa5\xe4\x44\x13\x3f\xbd\x77\x47\xd5\x39\xa7\x44\xfa\x60\xab\x5d\xc5\x4e\x18\x19\xdc\x8e\x56\x89\x9c\x56\xef\xd7\xef\x3d\xa3\x41\x79\x0e\xcc\x49\x64\x5e\xf3\x25\xc6\x56\x8a\xe9\x71\xd3\x0d\x21\xbb\x7f\x23\x46\x4f\x46\xa2\x4b\x80\xd4\x9b\xb9\x3c\x6e\x91\xde\x79\xb2\x43\x31\xd0\x70\x7f\x43\xd0\x66\x5d\x01\x97\x74\x3a\xdf\xf6\x90\xd6\x15\xa1\xc9\x25\x87\x77\xfc\x47\xd0\x21\x71\x42\x42\x6a\x47\x34\x89\x2e\xb6\x22\xab\x8e\x50\xbb\x12\x8e\xc3\xa8\x95\x26\x6a\x38\x61\xa3\x97\x68\xbc\x76\x09\x6f\x58\x1f\xd0\x82\xdf\x9b\x72\x23\xe8\x5a\x8a\xfb\xdb\x5c\xaa\x49\x22\xaf\x2a\x01\x4b\xf8\xa5\xcd\x11\xe5\xc5\xea\x93\xe9\x1c\xd4\x6d\x5a\x1b\x99\xb8\x5a\x26\x70\xe3\x21\xde\x2e\x32\x25\x5a\xfd\x67\xfe\x2c\x37\xfd\x93\x2c\xac\xa2\x2d\x24\x1f\xaf\x4c\xce\xfe\xff\x58\xd6\xbd\x04\xcf\xaf\x11\xde\xdd\x29\xc8\x71\x9f\xfc\xb0\x2e\xf6\x5c\x5d\x3e\xb7\x8b\x4f\xc0\xd1\x70\xa2\xe3\x43\x2c\xc8\x12\xf0\xd0\x41\xd9\x76\x0c\x13\xc1\x2f\x7c\x7f\x2f\x84\xfe\x5e\x0f\x70\x0c\x10\xb1\xa6\x9c\xa4\x66\xa7\x0b\xde\xff\x8d\xbe\xc7\xd3\x18\xfb\x09\xdd\xd8\x27\xef\x61\xca\xa6\x91\x0b\xbc\x06\x1c\xbd\xa2\xb5\x27\xef\x2e\x59\xed\x4c\x17\x22\x99\x72\xf8\x95\x67\xd7\x05\xde\x92\x31\x92\x4b\x41\xbb\x6e\x7c\x01\xfe\x85\x42\x64\x47\x4f\xa7\x6b\x1f\x88\xcd\x57\xea\xc3\x11\x17\x1a\xf1\x03\xd2\x30\x78\x42\x4a\x12\x67\x5f\x2f\xa3\x6c\x2d\xe0\xbf\x53\xc2\x95\xfe\xeb\x31\x57\xde\x95\x89\x22\x98\x6e\x32\x51\x3d\xfa\x33\xb3\x5e\x15\xc3\x94\xa1\x1c\x0f\xcc\x55\xb8\x2d\x6d\xd0\x59\x7c\xdd\xd2\x7e\xde\x7d\xe1\x29\x85\xa6\x16\xe6\x40\x26\xbe\xfb\x5d\x69\x04\x82\xb3\xff\x22\xc0\xdd\x21\xf2\x7a\x08\x6d\x37\xa0\x49\x9e\xa3\x6f\xe2\xc4\xb5\xa9\x59\xd1\x0e\x9a\x61\x0c\xab\x1f\xe0\xd2\x8c\xf1\x01\x3d\xca\xe6\x3d\x8f\xde\xe0\xec\xbd\x8b\x4e\x19\xd5\xd0\x40\xe2\xfa\xd7\xd0\x41\x3a\x38\xe8\xc4\xe7\x35\x52\xad\x46\x04\x7b\x5b\xbd\xd1\x5c\x09\xcc\x0d\x34\xe4\x8b\x91\xfd\xba\xe2\xa9\xd1\x62\xd4\xb2\x1e\xe2\x0a\x1e\xf5\x35\xea\x88\x35\x95\xbc\x49\x51\x69\x2a\x67\x16\x34\x54\xc7\x36\x7f\x13\x4b\xf6\x45\xd4\x8f\x99\x69\xe3\xd4\xf0\xf9\xea\xf4\x14\x4c\xe9\x80\xa0\xa2\xe3\x34\x2c\x74\x6c\x2b\xdc\x3c\xcd\xc2\xf8\xa7\xda\x57\xa0\xe8\x02\x87\x82\xd3\x0a\xf5\x85\x7d\x9e\xfb\x37\x66\x6d\xf6\x5d\x7c\xc3\x84\x71\x66\x61\xe6\x1f\xf5\xc0\x97\x52\x59\x5e\x94\x11\x2c\xa1\xa8\x40\xd6\xe4\xf6\xec\x0e\x55\x49\x4c\x5b\x44\xf7\xc0\xf0\xd4\xa9\x9c\xd7\x09\x05\xbf\x84\x85\x56\x17\x48\xf4\xdc\x0f\xd7\xa4\x4a\x1b\x13\x91\x13\xc3\x8a\x1e\x8e\xb5\xc7\xa2\x0f\x3e\x95\x2e\xae\xa8\xce\x38\xb2\x07\xc2\x8e\xd9\x72\x71\x8f\x03\x1f\x47\x7c\x62\x07\xce\x43\x3c\x51\x5f\x5a\xc2\x84\x0f\x49\x74\xf1\xf1\x69\x89\x62\x6c\x76\xbc\x98"}, +{{0x71,0x86,0xf8,0xd1,0x68,0xd9,0xdd,0xf1,0x7e,0xdb,0xaf,0x0e,0x7b,0x1a,0xbc,0xb2,0x6d,0xa3,0xe4,0xc0,0x27,0x2d,0x98,0x79,0xc7,0xfd,0xff,0x64,0x21,0xc4,0xea,0x50,},{0x96,0xb4,0xa6,0x56,0x23,0x20,0x29,0xfc,0x1b,0x83,0x64,0x70,0x3c,0xbe,0xa7,0xa5,0xd7,0x38,0x75,0x18,0xa8,0x8c,0xed,0x1a,0x91,0x5e,0xc8,0xd8,0x86,0x84,0x81,0x32,},{0xa9,0xc0,0x49,0x9f,0xc2,0x16,0xa1,0x45,0x32,0xd7,0x36,0x36,0x5c,0x63,0x55,0xf9,0x38,0xf8,0xd8,0x19,0x4f,0xa1,0x13,0x28,0x48,0xf8,0x3e,0x49,0x04,0x54,0xd4,0xbb,0xf6,0x92,0x69,0xf1,0x22,0x59,0xfc,0x6c,0x07,0x4c,0x10,0x15,0xe4,0x25,0xe4,0xf4,0xf2,0x7c,0x02,0x9c,0x93,0x33,0x49,0x51,0x36,0x1a,0x35,0xad,0x11,0x76,0x54,0x0e,},"\xa3\xe6\xcb\x6b\x84\xcc\x5c\xf1\xfb\x1a\x84\x8b\x4b\x8e\xa7\xcb\x7c\x87\xe0\x44\x57\x50\xc6\x1f\x9a\xa5\xd7\x7d\xed\xdf\x94\x94\x63\xec\xd3\x9b\xfc\x71\xf2\x61\x0c\x2a\x94\x24\x84\x7f\xb7\x6f\x84\xc5\xda\x1f\xa1\x0e\xf7\x18\xa3\x45\x66\xce\xc1\xb3\xe8\x99\xe7\x25\x2e\x8d\x4d\x34\x60\x16\x49\x8f\xf1\x19\x97\x27\x50\x06\x16\x60\xba\xed\x31\x28\x27\x58\x31\x81\x07\x3d\x1d\xc7\x4b\x76\xc4\x30\xca\x30\xd4\x09\xe4\xe8\x43\x9c\x0f\xc4\x8c\x00\x68\x06\x29\xd4\x3a\xe2\xa7\x7d\x69\x22\x8f\x7f\x8a\x12\x53\xaf\x15\xbd\x2c\xb6\xbb\x1c\x16\x96\x55\x0c\x4c\x79\x0f\x44\x98\x69\x63\x0a\xb9\x2b\x9c\x11\xcd\xe1\xf9\x61\xaa\x21\x03\xec\x23\xf7\xd9\xf0\xfe\x9c\x3c\x41\x32\x58\x2e\xfa\x79\xa6\x6a\xe3\x42\x6e\x51\x05\xb8\x0b\xfe\x5e\x04\xdc\x8b\xb1\xe3\x8a\x31\x10\xcd\x72\x98\x4b\x3e\xf0\x2a\x0c\xa6\x2a\xb6\x38\xcb\xcf\xbc\x8a\x6b\x59\x3d\x26\x13\xdc\x06\xec\x86\xfe\xe3\x4f\x65\x18\xd4\xa3\xfb\xdc\x15\x72\x37\x17\x45\x64\xda\xeb\x66\x74\xcd\xc3\x4f\x4d\x65\x37\xcf\x81\xd8\xaa\x9b\xdd\xbf\x3a\xed\xa3\x12\xda\xae\xee\x33\x6f\x9e\xd8\xbf\xf8\x1e\x29\x4b\xc7\xd4\x4d\x25\xcd\x78\x70\x72\xe6\xcb\x41\x4b\x65\xfb\x7a\x84\x6f\xc0\x65\x36\x7b\xa8\xe3\x7b\xef\xfd\xf0\xb7\xba\x8f\x98\xcd\xf1\xeb\x87\x0f\x4e\x8b\x71\x30\xfa\x34\x29\xd2\xe2\x4b\xce\x59\x94\xda\xf1\xaa\x65\xe5\xf6\x03\xb6\x31\x05\x3d\xc5\x10\xb2\xf0\x97\xe8\x6e\x9b\x9b\x55\x23\x02\x75\x79\x68\xd0\x13\x6e\xe6\x75\x4c\x42\xa3\x2c\x99\x0a\xdd\x9c\xb5\x29\xbc\x89\x75\x1d\xfa\x4e\x5e\x3a\x0b\xad\xaf\x4c\xc4\x0b\x6a\x09\x50\x7f\x9f\xcd\x24\xc3\xca\x72\x25\x95\x99\xc6\xee\x58\xd8\x57\xb3\xa1\x89\xe0\x48\x90\x2e\x88\x5a\x36\x07\x42\x60\x93\xcb\x0f\xab\x43\x7c\x0f\xb0\xed\x2f\x1e\x96\xe9\x44\x1a\x7e\x95\x4f\xe3\xef\x76\x46\xe2\x6a\x39\xa0\x70\x33\xd0\xa1\x55\x5d\xfe\xed\x9a\x6f\x57\x79\x4a\xf3\xa2\xab\xf0\x05\x7e\x9f\x85\x3a\xe5\xc3\x01\x38\xfd\x80\xe2\xf2\x9c\x2f\x4a\x93\xad\x31\x45\xda\x10\xa3\xe3\x1c\xe9\xff\x97\x86\xac\x65\xd8\x60\x37\xd9\x8b\x7a\xa6\xd1\x1d\xe8\x80\x00\x10\xe1\x33\x86\x9e\xb6\x7a\x50\x39\xb9\xb8\xfe\xb6\xef\x90\x3d\x0c\xc7\x46\x41\x26\x07\xda\x72\x5c\xe2\xdc\x6a\x35\x21\x09\xdb\xc6\xa5\xe4\x0b\x17\x0c\x23\x05\x0b\xc4\xfb\x1e\xfa\x0c\x34\xfe\xc0\x0e\xae\x32\x19\xc2\x90\x40\xe8\xf5\x97\x8c\x93\x84\xee\x91\x5d\x8c\x93\x98\xdd\x12\x0d\x5c\x3c\xba\x38\xf8\x52\x6b\x06\x19\x7c\xb2\xc2\x61\xde\xc7\xd7\x26\xae\x13\x0f\x9b\xee\x17\x26\x17\x00\xe9\x99\x31\xfa\xc4\xb4\xdc\xa0\xf7\x58\x70\x1a\xcb\xf3\x70\x7d\x47\xdf\x53\x21\x13\x0e\xc1\x0b\xb3\xb1\x30\x78\xc4\xdc\x5d\xe3\x47\x0f\x15\x8b\x57\xdb\xeb\x87\x8b\x3a\x85\x24\xe0\xed\x2c\x95\x47\x54\x5f\x0f\xdd\xf1\x31\x25\xe4\x5b\xb2\x3d\x6a\x7b\x38\x3a\x18\x7f\x4c\x5d\x54\xa7\xb4\xc8\x3d\x59\x57\xf2\xcd\x7e\x6f\xbc"}, +{{0xe8,0x6e,0x8c,0x62,0x56,0x6e,0x15,0x75,0x3b,0xd5,0x57,0x7e,0xaa,0xe7,0xf2,0x41,0x05,0xb7,0x40,0x55,0xa2,0x56,0x29,0x58,0x07,0x08,0xbf,0xc8,0x3a,0xeb,0xf0,0x6c,},{0x8c,0x8c,0xe8,0x82,0xd5,0xf7,0x65,0x86,0xd8,0xdd,0xcc,0xc5,0x57,0x9b,0xcc,0x1c,0xdf,0x4c,0xfd,0x71,0x62,0x30,0x4c,0xb1,0x0e,0x76,0x96,0x02,0x6e,0x70,0x7f,0x17,},{0x54,0xd2,0xfd,0x44,0xac,0xf9,0xe2,0x09,0xbc,0x7e,0x43,0x33,0x72,0xbd,0x73,0x07,0x4d,0x07,0x80,0x6a,0x77,0xc6,0xce,0x22,0x8e,0x9b,0xe9,0x94,0x41,0x8b,0x00,0xc7,0xec,0xbc,0xb7,0xac,0x00,0x6c,0x29,0x4a,0xec,0x9d,0xe6,0x68,0x57,0x2a,0xdd,0x51,0x7c,0x06,0xb4,0xeb,0x4f,0xe2,0xff,0x35,0x23,0xbf,0x04,0x3d,0xf4,0x4d,0x3d,0x0d,},"\x12\xfa\x63\x1b\x0e\x48\x2e\x9b\x9d\x63\x3e\x94\xb8\x2d\x8a\xb4\x36\xfe\x54\x8e\x5b\x95\xda\x92\x62\x46\x23\xd1\x3f\x2c\x70\xda\x77\x5b\xa1\x36\xc5\x22\x9c\x16\xa0\xc7\xa6\xfa\x91\x4b\x2f\xed\xa5\x64\xe1\x72\x19\xe4\x73\x70\xf9\x51\x5b\xb1\xd5\x9d\xe6\xe9\x58\x62\x04\xd9\x43\xdc\x56\x0d\x73\xe2\xe7\x57\xf7\xeb\x39\xbb\xc7\x11\x1b\xb4\x6b\xc6\x43\xc1\x3f\x60\x21\x12\x73\x9b\xec\x77\x8d\x7d\x4f\x49\xd0\x92\x56\x3d\x68\xf5\x77\x6e\x43\x0e\x3b\x0b\xf2\xdc\x1b\x01\xbe\xb3\x04\x01\x96\xda\x63\x02\x90\x8b\xfe\x91\xe0\xfc\x38\xe0\x4c\x15\x0e\xf9\x07\xdc\x73\x6c\x44\x5f\xf2\x1f\xdb\xd2\xdc\x1e\xac\x0a\x0f\x5d\x00\xa3\x0a\xf0\x28\xaf\xe2\xff\x61\x16\x2b\x75\x8c\x7d\xa9\xa7\x76\x66\x6a\x11\x23\x59\x43\x1c\x48\x85\x6a\x87\xca\x82\xd3\xdd\x1c\x8a\xf3\x76\x59\x86\x35\x43\x2b\xf8\x91\xbe\xcb\xc3\x3a\x8f\xda\x44\xce\x88\x3e\xa8\xaf\x4a\xd8\xb9\x1a\x92\x61\xce\x76\xb9\xe9\x39\xc4\x61\xfa\xc5\x3a\xe0\xf0\x76\xe8\x2d\x87\x9a\xac\xe8\xf3\x8f\x12\x0b\xc9\xb0\x4d\x81\x25\xed\x24\xbc\xd7\x79\xd9\xd2\x43\x86\xb1\xdd\x20\x17\xeb\xee\x81\x97\x37\x6e\x8c\x36\xfa\x3a\xef\x8c\x1e\x71\x3e\x2b\x8b\xce\x49\x66\xd8\x48\x88\x68\x1b\xa7\x84\x95\xfb\xd1\xd6\xcc\xa5\x86\x26\xe6\x85\x4c\xda\x60\x6b\x83\xd6\x29\x3d\x01\xe8\xe3\xe1\x3b\xbf\x4a\xac\x85\x1d\x9a\x1e\x00\xd0\x02\x4e\x26\x99\x3b\x0b\x30\x91\xbe\x7e\x80\x61\xbc\xbb\x3c\xbb\x23\x02\xce\xab\x96\x89\x7a\x8e\x1f\xf3\x67\xec\x86\x25\x69\x3c\xf3\x15\x34\x12\x4a\x9d\x5d\x72\x5b\xca\xe0\x01\xd6\x7b\xc2\x11\x1d\x0a\xb8\x11\x1f\xa1\xd2\x4e\x4e\xd0\x6d\x63\x58\x3c\xe6\x90\xf2\xa0\x46\x26\xd7\x91\xd2\x9e\x3e\x31\x5a\x41\x5b\xf2\xe8\x53\xa5\xf2\x97\x4c\x83\x3a\x3f\xe2\xe2\x90\x9c\xf6\x69\xc7\x3c\x1f\x59\x39\x2d\x30\xc3\x7f\x3b\x9c\x5a\x3d\xdc\xfd\x75\x62\x1f\xda\x36\xe4\xba\x2f\x16\x14\x78\x58\xf6\xf2\x06\xb9\xa1\x40\xf1\xdd\xc1\x46\x6c\x9a\x53\xed\x73\xf8\x24\x90\xbc\x95\x32\x2c\x95\x5f\x61\xd1\x1c\xb5\x1d\x5e\x8a\x58\xc6\xb3\xcb\x0f\xdf\x04\x19\x76\x32\x01\xbe\xea\x93\xa8\x51\x2b\x14\x05\x24\x5b\xfc\x38\x41\x55\xad\xc5\xce\x77\x8a\xa7\x4d\x00\xa3\x22\x72\x64\x65\x11\x9a\xf7\x95\x01\xf0\x40\xdd\x0a\x7a\x84\x06\x00\x01\xca\x89\xd2\xfe\x5e\x9c\xf9\x77\x9a\x54\x7e\x3e\xbd\x3b\xf8\x64\x29\x90\xa3\x69\x0e\x2b\x2c\x3e\x54\xcb\x7e\xee\xea\xbc\x24\x2b\x4d\xd9\x92\x74\xc4\x25\xa8\x67\x93\x1c\x92\x9c\xa7\x08\x08\x60\x1c\x39\x08\xcf\xd7\x88\x86\x7d\x68\x7d\xc3\x66\xe9\x76\x35\x0c\x9e\x70\x58\x4b\xd3\x90\xd6\x7e\xeb\x7c\xfe\xa2\x6c\x42\x68\x6d\x3d\x96\x20\xf6\x2f\x64\x10\x4e\xf4\x1e\xd1\xd1\x30\xd7\x9e\x32\x59\x38\x48\x62\x96\xb7\xab\x2d\x2a\xdb\x78\x52\x67\x43\xe4\x00\xac\xb2\xb7\xaf\x09\x62\x8d\x68\xcf\x94\x75\x10\x16\x25\xc2\x0e\x1d\xc0\x51\xd7\x3c\x99\x7c\x95\x2e\x12\x81\x2c\x80\x5b\x68\xff"}, +{{0xa5,0xca,0xb2,0x72,0x7e,0x2f,0x13,0x1a,0x4d,0x63,0xfa,0xce,0xe7,0x99,0x33,0x66,0x63,0x93,0x0a,0xa0,0x7a,0xfd,0xa6,0xbd,0x5a,0x8e,0x98,0x5a,0x02,0xde,0xb1,0xea,},{0xac,0x35,0x5f,0x95,0x26,0x0f,0xbf,0xea,0x77,0x8c,0x55,0xb5,0xaf,0x8b,0x3f,0xd1,0xf2,0x4d,0x26,0x93,0xda,0x35,0xde,0x4e,0xe5,0x08,0xa2,0x7e,0xd3,0x50,0x39,0x1f,},{0x13,0x8c,0x7a,0x8e,0xca,0x5b,0x5c,0x37,0x15,0x88,0x13,0x84,0x3c,0x9a,0x90,0x4e,0x5f,0x53,0x0a,0xd9,0x71,0xee,0x43,0x2a,0x44,0xf3,0x44,0xf8,0xc6,0x4b,0xbf,0xaf,0x10,0x2f,0xf4,0x1d,0xaa,0x5c,0xf7,0x22,0xa4,0xbc,0x66,0x40,0x58,0x87,0x59,0xb8,0xf3,0x6f,0x9c,0x05,0x9e,0xab,0x93,0x6c,0xc4,0x5e,0xd4,0x79,0x63,0x94,0xa0,0x02,},"\x48\x34\x39\x15\x4d\xd5\xe5\xd1\x09\x85\x7c\x24\xd1\xc4\xe7\xfb\xbe\xfd\x2f\x38\x65\x1d\xa8\x12\x89\xf2\xad\x3d\x61\x54\x30\x65\x38\xb8\x2a\xc7\xdb\xa9\x21\x0e\x74\x07\x76\xed\xe4\xcc\xf5\x1d\x4f\x63\x09\x4b\x03\xe4\x6a\xd3\xaa\x3c\x31\x94\x7d\x8c\x36\xce\x6f\x94\xe8\x52\x96\xbd\xed\xcc\x1e\xad\x62\xea\xa1\x44\x1e\xcd\xe0\xa2\x25\xd0\xbf\x02\xed\xca\xcf\x86\x50\x14\x89\x9a\xf6\x6d\x98\x08\x04\x0c\x2d\x02\x00\x0a\x0f\x5c\xe4\xf1\x68\x3c\x1a\x49\x52\x76\xd9\xc4\xd7\x28\xc9\xec\xd6\xf0\x78\xdb\x8a\x0c\xfc\x26\x71\x87\x23\x85\x62\xab\x1a\x1e\xa2\x81\x3f\xb4\xf1\x2e\x87\x8e\x1b\xa1\x43\xf4\xd0\x6a\x3b\xc8\x10\x0c\x35\x50\x11\x8d\x69\xda\xe6\x7b\x55\xed\x69\x2a\xcf\x94\x44\xda\xa5\xc3\xe3\xc0\xa9\x8e\xe2\x8c\xf1\x72\xde\x0c\x58\x4c\x9f\x2e\xc9\xbb\x6e\x9b\x57\xf5\x72\xa8\x6f\xf8\x72\x9f\x65\xf4\xc6\x5b\x7f\xea\xcc\xaa\x21\x72\x0e\xd7\x9e\x90\x61\x8b\xca\xfb\xfd\x95\x33\xda\x85\x23\x2b\x45\x08\x83\xaa\x91\x9f\x82\x7f\x04\xc4\xa9\x7b\xf5\x13\x90\xd4\xf8\x56\x9c\x19\x17\x26\xf4\x4f\x7e\x39\xfb\x3d\xb7\x3b\xfc\x41\x5b\x6f\xfc\xa8\xb9\x1a\xca\xad\x69\x23\x85\x72\xf1\x4b\x49\x98\x5e\xa0\x3c\x98\xd7\xb1\xd4\x4b\x3a\x65\x54\x76\x5b\x19\xab\xf9\xb2\x52\x74\xe9\x7e\x46\x34\xe4\xb0\xf9\xe8\x02\xeb\x6f\x74\x3f\xff\x95\x07\x57\xee\x01\x3a\x69\x88\x22\x18\x81\xa7\x44\x3f\x1f\x32\xbc\xcb\x00\x7e\x99\x37\x9c\x7c\xa4\xf9\x06\xd5\xfe\x11\xcb\x12\xf6\x6b\x53\xa3\xd2\x1a\xc9\x47\xbe\x0c\x81\x50\xbc\xd0\x4f\x1c\x81\x6b\x3f\x0c\x07\xc5\xfb\xc0\x90\x5a\x71\x36\x95\x68\x49\xda\x03\x83\x6d\xae\xc2\x5c\x3e\x1a\x06\xec\x3a\xeb\x20\x56\x48\x17\x6f\x89\xf4\xa2\x91\xfa\xc4\xf1\xd3\x89\x9f\x56\xc9\x06\x5e\xeb\xb8\x76\x8b\x84\xb3\x1b\x7c\xc0\x31\x08\xbd\x08\x88\x33\x8d\x17\x74\x99\x49\x70\x29\x2d\x93\x50\x31\xfe\xa3\x35\xd9\xe7\x90\x8f\xe0\x25\x48\x89\xc0\xb1\x71\xcf\xe0\xaf\x2e\x6f\xde\x7a\x5e\xa3\xde\x1f\xdc\xda\xe5\x37\xb6\x31\x31\x19\xc2\x7f\x77\x20\x24\xef\x36\xe4\x5c\x8b\x89\xf2\x6c\x93\xd9\xee\xa1\x37\x25\xe1\x2d\x81\x0c\xf9\x82\x4a\xea\x04\xcb\x80\x2d\xa7\xe4\x58\xe8\x42\xca\x37\x5e\x36\x71\x34\x6e\x00\x89\xde\xc5\x71\xbe\x16\x9b\x0d\x90\x96\x6b\xf3\x68\xfe\x36\x98\xfd\x3e\x72\xbf\x16\x24\x9d\xd9\x00\xaf\x6d\x29\xff\xa4\x83\x51\x36\x0f\x12\x24\x17\x14\x58\x5f\x7a\x9b\x4c\x7b\xaf\xc9\x52\x22\x67\x35\xde\x14\x62\x74\x3d\x78\xab\xad\x0f\x67\x11\xf2\x49\x5f\x33\x13\xad\x4e\x0b\xa2\x16\xb0\xde\xa5\xdc\x15\x16\xa9\x54\x9f\x7d\xfc\xfe\xb9\x3e\x59\x1a\xbe\xda\x5e\xa3\xc7\x04\x59\x06\x52\x3b\x40\x86\x8c\xa5\x73\x5d\x6a\x33\x71\xc3\xc2\x94\xc1\x11\x26\xd0\x97\xf4\xc7\x08\xe9\x04\x64\xc1\xad\x91\x42\xfa\x0b\xed\xf0\x7d\xfc\x5f\x4c\xb6\x7d\x6e\xd8\x0f\x1b\xfe\x72\x68\x3c\xfb\x2a\xd6\x65\x30\xdc\x43\xd7\x02\x3f\x37\x90\xff\x42\xd9\x5b\xd8"}, +{{0xcb,0x63,0x19,0x61,0x37,0x79,0xa4,0xef,0x66,0xbe,0x14,0x14,0x4b,0x28,0x40,0xad,0x01,0x67,0xc0,0x3f,0x3b,0x8d,0x04,0xff,0x59,0x2c,0xd1,0xd2,0xd7,0x22,0xe3,0x30,},{0x18,0xeb,0x03,0xf0,0xa3,0x34,0xb0,0x80,0xe1,0xaf,0x43,0x99,0xd8,0x37,0x6d,0x83,0xc5,0x33,0x31,0x6d,0xc6,0x87,0xcf,0x34,0x1f,0x0a,0xfa,0xb4,0x50,0x96,0x52,0x99,},{0xc1,0xb3,0x99,0xcd,0xc1,0x98,0xe9,0xa1,0x59,0xe6,0x84,0xfc,0x26,0x68,0x6d,0xe6,0x60,0xda,0x54,0xcf,0xe3,0x12,0xca,0x73,0x45,0xdf,0x0c,0x7d,0x15,0xa3,0x57,0x43,0x01,0x44,0x10,0xbd,0x2f,0x6c,0xd1,0x1e,0xef,0x33,0xa8,0x9b,0x3d,0x15,0xcb,0xc1,0x7c,0x7a,0x35,0x89,0x37,0xfd,0x99,0x72,0x05,0x05,0x1f,0x92,0x57,0xc2,0x56,0x09,},"\x87\x4a\x6c\x81\xd6\xdb\x71\x33\xa7\x91\x69\x76\x0c\x84\xd3\x6e\xea\x3d\x42\xea\x08\x92\xb7\xc8\xdd\xe8\x44\xa3\xa6\xb6\x0a\xa9\xf2\x66\x07\x26\xc9\xc4\xdd\x26\xa0\x1f\x4e\xd0\xdc\x1c\x53\xba\x60\x05\x46\x3f\x7e\xa6\x4a\x1e\xc6\x39\x53\xbc\x3d\x81\x05\x2a\x2f\x10\x84\x38\x9a\x77\x06\xdf\x74\xed\x41\x36\x08\x2a\xb5\xc6\xe8\xc7\xf4\x11\xdf\x9d\x3a\x0f\x3c\x40\xf5\xa6\x0e\x2d\x21\xa8\x54\x8e\x7a\x25\xde\xe3\x40\x30\xb3\xc3\xe7\x5c\xaa\x93\xdd\xaa\x9c\x19\x0c\xb6\xde\xda\x24\x13\xd5\x4e\x37\x3d\x43\x53\xdb\xa4\x3d\x39\x49\x1a\x2f\x56\xc8\xb3\x6d\x45\x01\x6f\x77\xd7\x47\x16\x91\x63\x45\x39\xe7\x6c\x4f\xb4\x19\x13\x47\x2b\x0a\x23\x05\x4f\x54\x8f\x54\xb1\xe7\x10\x9c\x8b\x65\x21\xb5\x7a\xe9\x81\xd0\x50\x31\x6a\x33\xc4\x9c\x71\x16\x26\x8d\xcc\x4b\x78\xc2\xba\xe5\x3a\x3a\xe4\xdd\x17\x8b\xb8\xb7\x6b\xb3\xbe\xfe\x19\xe4\x1a\x2c\xf1\x2c\xeb\xb7\x11\x68\xf9\x71\xf2\x02\x46\x1c\x63\xf7\xd6\xee\xf1\x07\xf5\xb1\x03\x0e\xdd\x4e\x75\x00\x9e\x91\x16\xc3\xcd\x0e\x8b\xdd\xc2\x99\xb4\x1f\x1a\x45\xe7\x84\xef\xa6\x46\xda\xda\x64\x06\x8e\x92\x48\xec\x98\x8f\x23\x26\x34\xad\x3d\x5a\xab\x19\x56\x0e\x83\x0a\x5b\xd6\x65\x45\x7c\x94\x29\x5e\x1a\xf0\x16\x0f\xbc\xe2\x72\xef\x48\x45\xdd\xf0\xc4\xf2\x4d\x97\x6f\x51\x86\x90\xea\x1f\x82\xff\x4d\xfa\x48\x13\x64\x1a\x67\x59\x8e\xa9\x84\x01\xe0\xff\x10\xa0\xe5\x82\xe2\xb9\x08\x67\xb4\xe6\x23\x2c\x34\xea\x49\x9c\x16\x99\x09\xa4\x41\x26\xf3\x77\xd8\xcc\x1c\x11\x90\x58\x66\x34\x0e\xfd\x1e\x7b\x07\x7d\xc7\x45\x6d\x59\xc9\xb9\x6a\x12\x4a\xac\x3b\x33\xbb\x22\x74\x41\xbb\x7a\x52\xe6\xc3\x14\x0d\x7a\x4f\x67\xca\x05\xbb\xc9\x3c\x93\x77\x5b\x92\x91\x19\xa2\x24\xed\x8f\x39\x00\x58\x20\xf4\x20\xcc\x6c\x53\x0e\x61\xe2\x0a\xdc\xa0\x1e\x93\x9c\xc0\x31\xdf\x49\xcd\xb1\xec\x8f\xf4\x93\xc9\xef\xbc\xad\x34\xc5\x71\x08\xef\xd7\x64\x55\x89\x66\xfb\x14\x70\xb0\x74\x5e\x69\x66\x19\x1a\x9a\x9e\x44\x58\x1b\x09\xfa\xf4\x69\xf9\x51\x53\x72\x03\xd9\x26\xbc\x8a\x55\xd0\x80\xa8\x05\x18\x1d\xd7\x29\x6e\xd2\x0a\x81\x82\x68\xf7\x55\xea\xa6\x6b\x08\x22\x42\xf4\xd0\x20\xf7\xcd\x67\x20\x89\x04\x84\xc0\x1c\x75\x7f\xe3\x5d\x87\xb5\xbc\x90\x6d\xea\xcc\x2e\x30\x71\xde\x46\x01\xbc\xf0\xdd\x6b\x83\x7c\x43\x31\x06\x04\x7f\xd8\xec\x9b\xd0\xe9\x8c\x9e\xe8\x06\xf7\xec\x8c\x5a\x10\xea\x21\x36\xf1\xf9\x0f\x90\x0b\x85\x3f\x95\x3f\x00\xb0\x76\xbd\x1e\xbd\x92\x9d\x08\xa3\x8b\xec\x68\xd8\x66\x43\x50\x47\xbc\xb6\x72\x1e\x06\xb6\x40\x85\xdc\x05\x58\xc1\xfa\x85\xa2\xc8\x3b\x0c\xaf\x4c\x81\x60\x84\xf1\x0a\x4c\x58\x85\x29\x5b\xca\x15\xff\x7c\x18\xe5\x96\xc6\x2c\x92\xee\x99\x21\xa2\x7c\x29\xd1\x95\xbd\x28\x22\x13\xff\x36\x60\xb6\xe7\x54\x6b\x4e\xaa\x77\x7c\xe3\x9f\xc5\xd2\x04\x84\xc7\x1e\xd6\xca\x06\xf9\xb7\x7a\xb1\xd8\x72\x39\x3a\xb2\xd1\x02\x55"}, +{{0xb2,0x98,0xad,0xf3,0x8a,0x67,0x08,0xf8,0xd1,0x8f,0xf1,0xed,0x96,0xbf,0xba,0xb4,0x21,0x54,0x0d,0x09,0x6c,0x4e,0x43,0x51,0xb9,0x22,0x09,0xb5,0xe6,0xaa,0xab,0x65,},{0x77,0x0e,0xdf,0x42,0xb8,0xa0,0x39,0xc6,0xca,0xb9,0xba,0x65,0xeb,0xfb,0x13,0x5a,0xbc,0x2d,0xa3,0x14,0xa4,0xc3,0x09,0xf4,0x6a,0x8f,0x32,0x5b,0x52,0xd0,0x65,0x93,},{0xe5,0x5f,0x8d,0x30,0x41,0x22,0xdc,0x17,0x5c,0xf0,0x27,0x46,0x74,0xfc,0x9d,0xed,0xfe,0xc2,0xb5,0xf8,0xa2,0xee,0xb1,0xe3,0xe7,0xf8,0xe0,0xdf,0xba,0x0d,0xac,0x2d,0x32,0xf4,0xe7,0x04,0xce,0x91,0xcd,0x59,0x91,0x84,0x13,0x3c,0x3b,0xf1,0x06,0x3d,0x2f,0xae,0x63,0xd7,0x3a,0xcc,0x57,0x72,0xd7,0x18,0xd8,0x11,0x83,0x31,0x86,0x02,},"\x9d\xf4\xd5\xd7\x56\x5d\x2c\x05\x22\x62\xdd\x34\xd6\x00\x7d\x86\xd9\xc0\xf0\x7c\x70\x89\xaf\x61\x19\xe3\x04\xf4\xd8\x01\x1d\x7e\xaa\xd7\x7b\x3e\xf7\x0c\xc2\x80\x84\x7d\x59\xf2\x97\x20\x2b\x7e\x18\x61\xae\xf3\x34\xbf\x38\xde\x14\x74\x0e\x80\x73\xc9\x55\xa8\x51\xd2\xcf\x3d\xad\xc3\xed\xce\x15\xbe\x49\x0e\xaa\x84\x5b\xa5\x53\xfc\x6e\x87\x46\xe5\x29\x15\xe6\x55\xaf\x4b\x86\xc6\x29\xd4\xc5\x22\x78\x36\x35\xd4\x64\xa2\x82\x57\x77\xd8\x9d\x70\x97\x67\x7e\xf0\xe5\xee\xae\x38\x53\x7e\xcb\x65\x6e\x3b\x28\xdd\x07\x35\x8f\xd9\xfb\x2c\xd4\x62\x51\x72\x86\x65\x9a\xef\xc7\x9d\x37\x4d\x1d\x13\xed\x93\x96\x7c\x53\x0c\xde\xa4\xf3\x14\xa0\xf9\x1d\x62\x89\xb4\xc7\xa4\x27\x9b\x6f\x4c\x4a\xbc\xa3\x33\x57\xf6\x9e\xd8\x4b\x91\x19\x63\x7a\xdb\x7c\x18\xe6\x94\xcb\x3c\x56\xe7\x36\x37\xda\x91\x07\x35\xd4\x3c\x38\xaa\x80\x86\x67\x5a\x06\xad\x37\x0e\x57\x26\x88\x1d\xa5\xe1\xa1\xdc\x61\x44\xd6\xa6\x2a\xff\x7f\xb0\xc3\x52\xd8\x8d\xc9\x71\xa3\xd7\x2d\x30\x71\xe1\x4b\x47\x42\x53\x56\xaf\x1b\x01\x92\x33\x53\x82\x61\x45\x1a\x99\xa6\xcf\x4a\x07\xce\x9a\xb1\xc3\x99\x0d\xe6\xab\x8d\xe2\x11\x6c\x75\x61\x05\xc5\x12\xb7\xa3\xee\xb3\x15\x7b\x15\x8b\x32\x1e\x44\x4e\x80\x6d\x89\x0b\x38\x90\xed\x9d\xdc\x86\x9f\x17\x11\x72\x3b\xb9\x9a\x72\xbd\xb9\x23\xd1\x31\xba\x4e\xdb\xfb\xb6\xda\xe9\x9a\x5c\x7b\x32\x8d\x31\x0d\xf9\xa6\xd1\xdc\xd8\x59\x18\x96\x28\x33\xe8\x9e\x20\xf5\xc5\xe6\x33\x3a\xc8\x61\x09\x4a\xe9\xe7\x99\xc8\x64\x1b\x9b\xae\xa1\x1a\x2e\x0e\xc2\x34\xbe\x59\x30\xe0\x28\x80\x85\x9c\xde\xc0\xd9\x78\x23\x7c\xbe\xa5\xc7\xc3\x2c\x11\x1b\xaf\xdd\x4b\xfb\xff\xe4\xfb\x34\x85\xef\xfe\xcd\x51\xbd\x19\x5a\x71\x40\x4c\xa5\xb5\x9a\xfa\x25\x2d\x7b\x5f\xf9\xd0\x30\xf4\x8c\x6f\xaa\xdb\xdb\xa9\x18\xf2\x1a\x0c\xd3\x9a\xf5\x69\x66\xdc\xcf\xa2\x5f\xb5\xa5\xcf\x9a\x4b\x26\xa7\xf5\x44\x1d\xf6\xe3\x20\xe3\x4b\x27\x39\x3d\xe2\xec\xfb\xd6\x9a\x15\x94\x90\x9a\x6c\x68\x5e\xc6\x45\xfc\xf3\x04\x8d\x01\x48\xfa\x38\xd3\xe8\xa6\x4d\xc3\xc2\x1a\xe4\x4d\xa7\xe4\x6a\x5e\xa7\x93\x6c\x2b\xa0\x83\x68\x9a\x78\xca\x3a\xc6\x0b\x87\xbe\x6d\x23\xea\x40\xf5\x96\x15\x83\x74\x28\x42\xe3\x75\x25\xa4\x9c\x5f\xe8\xfd\x15\xd7\xb0\xc9\xe8\xfc\xcd\x07\x93\x6d\x19\x53\x82\x12\xf7\x37\x3d\xbb\xf3\xdf\x7d\x46\xad\xf9\xd9\xf5\xdb\x09\x52\x4c\x65\xb8\x83\xae\x6f\x6c\xef\xa2\x4b\x19\xec\x48\xce\x28\xcf\xa7\x34\xd9\xbd\x6e\x77\x83\x7d\x1a\x14\xd6\xa1\x9d\x34\x5b\xfb\xea\x55\x9e\x7e\x6b\xfb\x71\xdd\xad\x83\xcd\x8d\xee\xab\x68\x7f\xe7\x3c\x05\x74\x88\xf8\xf2\xb3\xe2\xe2\x6d\x13\x00\x9f\x4d\x23\xe6\x61\x9a\x23\xc0\x69\x2a\xf7\x66\x69\x21\x7d\x5e\xbd\x46\x08\x5b\x39\x88\x90\xe5\xc9\x1f\xdb\x4d\xb5\xba\x40\xe7\x77\x3d\x51\x8d\x3c\xf0\x0c\x0a\x5b\x5a\x4b\x0f\x1b\x85\xd6\x29\x16\xa5\x9e\x56\x07\xb7\xb1\xeb\x80"}, +{{0xe9,0xcf,0x16,0xd6,0x96,0xf6,0x3b,0x59,0xe5,0xe2,0x5c,0x9e,0xe2,0xd7,0x5b,0xb0,0x5e,0xd2,0xba,0xa5,0x91,0xa7,0x55,0x7f,0x9f,0xb1,0x29,0xcf,0x98,0x3d,0xe0,0xba,},{0x6d,0x1a,0xe3,0x85,0xe8,0x0a,0x39,0x55,0xe8,0xd0,0xc5,0x93,0xa8,0x1f,0x43,0x1c,0xd4,0x32,0x67,0x1e,0x78,0xcd,0xba,0xfe,0x83,0xfe,0x58,0xdb,0xcd,0xb9,0x85,0x60,},{0x81,0x12,0xac,0x37,0xea,0xfb,0x74,0x9d,0x3f,0x4a,0x1e,0xa1,0x48,0x43,0x79,0xdf,0x3e,0x38,0x3b,0x01,0x9c,0x12,0xde,0x85,0x15,0xe3,0x49,0xe4,0xf6,0xf9,0x98,0x63,0x2e,0x30,0x96,0x83,0x47,0xa1,0xd1,0x5b,0x09,0xda,0x2e,0xb8,0x00,0xb0,0x3d,0x81,0x9d,0x20,0x2b,0xd1,0x0a,0x6a,0x46,0x3b,0xb0,0x2b,0x36,0x6d,0x68,0x55,0xfe,0x0e,},"\xa1\x0f\xea\x8f\xc9\x3e\xcc\xfe\x2a\x6b\x78\x26\x07\x95\x63\xad\xf8\xaa\x9a\x66\x64\x44\x93\x22\x00\xcc\xa9\x44\x7d\xd0\x27\xc5\xc7\x20\x4e\xa6\x2b\xf8\xf5\xe2\xe3\x91\x45\xac\x39\x48\xab\x3f\x31\x86\x88\x7b\x30\xbc\x60\x23\x30\x24\xb4\x83\xf3\xf5\x19\x03\x6a\x3e\x94\xc8\xd7\x51\x0a\x85\x3a\xc6\xe2\x0c\x6e\x52\x6e\xe3\xcd\xb7\x6d\xe6\x63\xf6\x73\x05\xad\x80\xdf\x23\x42\xc8\x50\x1b\x4f\x4a\x8e\xe3\x66\x5a\x79\x8f\xc4\x37\xdd\x81\x4e\x4e\x47\xe7\xa4\x66\x89\x0e\x0f\xfa\x8f\x51\x0f\x3e\x6e\x19\xc9\xc9\x69\xf7\x0a\x76\xe5\xcf\x30\x54\xd1\x7d\xe4\x59\xac\x8e\xe9\x95\x50\xbd\x38\x31\x9f\x36\xe4\x33\x43\x4a\x92\x6a\xd6\x8b\x96\x1e\x0c\xa1\x0a\xdd\x4b\xa9\x92\xb3\x65\x06\x60\xa2\xc3\xc2\x6f\x5d\x74\x0a\x31\xaf\xb7\x76\x3f\x54\x2f\x72\x3b\x8a\x3c\x92\xd8\xae\x92\xa5\x67\x76\x4e\xfc\x70\x53\x03\x12\xba\xab\xdd\x3f\xbb\xd5\x27\xfe\x0f\xcb\xca\x3f\x6a\x70\x64\xcd\xde\x18\x56\xe9\x7a\xb7\x86\xaf\x7d\x70\x22\xa9\xd4\x6a\x33\x8e\x8e\x17\x54\xaf\xd9\xad\xac\x85\x6a\x38\xde\x2a\x4c\x97\x66\xde\xe8\xdb\xc7\x09\xb0\x67\x1a\x6a\x6e\x6e\x1e\x5d\x12\x07\x4d\x22\x24\x5c\xd7\x3b\xee\xeb\x1b\xd8\xec\xfc\x1e\x85\xa2\x1b\xde\x25\x3f\x7c\x46\x5a\xbc\x1f\xea\xa9\x61\xc0\xff\x5c\xff\x2d\x89\x64\x72\xae\x17\xab\x84\x88\xe3\x3f\xfe\xfd\xb7\x2c\x10\x5e\x20\x4f\x94\x4a\xda\x51\xee\x13\x98\x1a\x13\x6c\x0f\x38\x42\x6e\x3e\x49\xb0\xe9\x18\x41\xc3\x27\x94\xd5\x2f\x13\x35\xdf\xa6\x37\xf1\x51\xc7\xe4\x0f\x9b\x83\x0a\xed\x53\x9a\xc5\x73\x1b\x81\xcd\xe3\x26\x4d\x22\xbe\xad\x31\xa6\xcc\x68\xd1\xa7\x31\x43\xb5\xba\x48\x16\x13\x92\x32\xf3\xf7\xf9\x79\x83\xf4\xec\xba\x64\xc4\x95\x53\xbe\x9d\x6d\x94\x3f\x91\xdf\xe0\x3d\x1e\xe8\x61\x8c\xd4\x0d\x2f\xb7\x23\x8a\x31\xd1\xbc\x38\xe7\x6a\x55\x1f\x9e\xee\x22\xe7\x3a\x27\xd7\xa4\x8b\x40\x87\x72\xea\x72\xc3\xed\x63\x7b\xb4\xb1\x68\xf9\xd7\xae\xad\x94\xea\x03\xbc\x11\x10\x99\x01\xc8\x89\x92\x7d\x51\xcd\xac\xf9\x62\x12\x59\x62\x55\x99\x79\xd3\xe4\xc8\xe3\xb5\xae\x58\x2f\x2d\xba\xd4\x99\x88\x02\x85\x6c\x4d\xf6\x9e\x8f\xb5\x49\x17\xe2\xf3\x6b\xb6\x7a\x19\xa2\x6e\x9a\x9a\x94\x85\xbc\xe9\x8d\xbf\xff\x0d\x2b\x02\xb9\x37\x7a\x91\x37\xa7\x34\xe5\x7b\x5c\xe6\x65\x05\x30\x17\xe9\x92\x67\x7a\x1a\xa0\x79\x24\x0d\x2c\xf9\x63\xcd\xf9\xbf\xea\x8d\x46\x00\x91\x23\x2d\xaf\x89\x80\x1f\xd7\x51\x71\xa6\x19\x5a\x5c\x04\x68\x15\x91\x4b\xe1\xf6\x28\x68\x78\x3d\x6f\x2c\xf2\x8a\xf9\x37\x8d\x6c\x68\x93\xe7\x5d\xe6\x41\x11\x1c\x68\x47\x27\xef\xfa\x31\xb8\xbc\x9b\x0a\x01\xdb\x9c\x9e\x81\xcc\xd8\xf4\xd4\xe8\x75\xd4\xbd\x90\xd2\x53\xf5\x89\x89\xa8\xa5\x2a\x20\x3a\x77\xa4\x96\xd6\x97\x98\x6b\x03\x1e\x9f\x69\x9b\xc6\xa1\x6c\xd5\xf9\xc3\x60\x18\xeb\xda\xa3\x6b\xad\x0e\x01\x4f\x4c\xf3\xb4\xb7\x46\x17\x1b\xf8\x93\x14\xe8\xb7\x2c\xbd\x47\xcc\x61\x6a"}, +{{0x23,0x8a,0x6d,0x49,0x79,0x32,0x1a,0x14,0xa9,0x97,0x23,0x6f,0x45,0x85,0x04,0x6c,0xf7,0xa0,0x5c,0x0a,0xdc,0x6b,0xa1,0xfd,0xb1,0x9e,0xc2,0xa3,0x2f,0x62,0xbe,0xeb,},{0x0b,0x4b,0xa6,0x74,0xe4,0x01,0x66,0x5b,0x67,0x90,0xcf,0xda,0x08,0x07,0x04,0xcd,0x90,0xe2,0xf3,0xd3,0xef,0xab,0x25,0x3e,0xd8,0xdc,0xfb,0xd1,0x8e,0x40,0x67,0x89,},{0x29,0x42,0xf7,0x08,0xc0,0xed,0xe4,0xcb,0x0d,0xde,0xf1,0x3b,0x85,0xd7,0x1d,0x72,0x13,0xe0,0x38,0x3d,0xd2,0x94,0xf5,0x34,0x13,0x5f,0xd6,0x9c,0xaf,0xbc,0xfc,0x0e,0x33,0x09,0x0a,0x2a,0x0c,0xa3,0xfa,0x57,0x2c,0x72,0xcd,0xf5,0x59,0x2d,0xe9,0x03,0xb1,0x58,0x44,0x95,0xab,0x63,0x99,0x81,0x50,0xf2,0xb3,0x93,0xa3,0xb3,0x40,0x0c,},"\x97\xcd\x61\x9a\x22\x51\xed\xa9\x16\x64\x64\x31\xd4\xcd\x15\x98\xc2\xd4\x4d\x06\xaf\x3e\x48\xbd\x18\xe3\xde\x7f\xb4\xbd\x4f\x78\xe0\x0a\x69\xee\xab\xde\x3f\x82\x06\x5c\xfe\xe6\xcd\x71\x1f\x07\xd2\x26\x37\x16\x1f\xf6\x85\xf6\x5a\x7d\xdf\x54\x55\x31\x97\xfd\x31\xc5\xc6\xb7\x1d\x9e\x36\x5a\x94\x1d\xce\x4c\x3e\x22\x5d\x19\xcc\x63\x3a\x7e\x12\x86\x2c\xd2\x3e\xbb\x7c\x74\xa7\x04\x85\x0f\x76\x1a\xc0\x24\x1b\xe5\x17\xce\x7c\x36\x09\x36\xce\x07\x25\x0d\x9f\x2e\xb2\x78\x71\x15\xee\xc3\x77\xe1\x13\x4d\xc0\x8f\x44\xeb\x0a\x2a\x2a\x27\x16\xf0\x01\x44\xa4\x9f\x01\x2a\x57\xb3\xcd\x06\xef\xeb\x3f\xae\x92\x0f\x28\x5c\xff\xd9\xa4\x01\xa0\xb9\x86\x59\x4e\x17\xb2\xc9\xc8\xfd\xab\x83\x5d\x9f\x3f\x5d\x47\x4b\xe7\x33\xc1\x92\x5e\xe6\xf0\x93\x86\x71\x10\x66\xc3\xfc\xd6\x45\xee\xb0\xfb\xe7\x05\x41\x69\xeb\x70\x9d\x4a\x3f\x0d\x16\xf2\x8a\x1f\xf5\x06\x6c\x84\x2b\xc6\x3e\x35\x9e\x92\x48\x5b\x38\x75\x7f\xf4\x6c\x27\xf7\x9d\x0c\xdc\xf0\xe1\x6e\x97\xe3\xc7\xb7\xe2\x17\x8d\xff\xd2\x70\x28\x2d\xd6\x12\x05\xd5\x85\x4d\x84\x1f\x0e\x3f\xc0\xe4\x82\xcc\x1e\xe4\x85\x52\xcf\xe6\x58\x93\x5b\x54\x27\xc3\x66\x23\x0a\xef\x79\xae\xf4\x02\x1d\x6f\xab\x5f\x18\x75\xcc\x84\x9e\x32\x1a\x75\x50\x0e\x9e\x1b\xa5\xdd\x59\x6b\x43\x8c\xf8\x8b\x23\x5b\x01\xa6\x76\x25\xc4\xbf\x84\xd0\x72\x4a\xe6\x88\x0a\x37\x85\xe3\x3b\xd9\x23\x5f\xd0\xf5\x98\x18\x04\xd2\x1c\xbd\x63\x3c\xb1\x80\xf3\x44\x56\x46\x02\x07\xa2\x90\xa2\x54\xd9\xfe\x61\x06\x3d\x40\x63\x4c\xa3\x87\x2f\x09\x35\xfa\x28\x32\x87\x95\xca\x41\xb0\x06\xa2\x11\x1f\xc5\x93\x2b\x1e\x77\x9c\xe9\x66\xcc\x47\xad\xb7\xc0\xdd\x98\x73\x33\xba\x75\x29\xa1\xa4\x99\x6c\xe9\xf5\x6e\x05\x19\x81\xfe\x1f\x55\x3e\x57\x8f\x43\xc3\xba\x94\xbe\xac\xc9\x3c\x3e\x73\x96\x67\xc7\xa7\xc6\xfa\x27\xe1\xe0\x81\x69\x5d\x20\xba\x70\x5c\x3f\x10\xb2\x0d\xf5\x30\xcb\xb0\xec\xb8\x74\x56\x50\x11\x09\x68\x70\x19\x31\x84\x52\x78\x5d\x38\xe7\x66\xb3\xcd\x35\xb0\x07\xd7\xe3\xcf\xe0\xb2\xcc\xa8\xaa\x6e\xf7\x39\x55\x99\xdc\xb9\xc4\xd2\x8b\xcc\x35\xc7\x6d\xfc\x35\x34\x3c\xb1\x34\x8b\xa3\xe9\x62\xf1\x0e\xe8\x6f\x86\xf5\xb6\xd4\xca\xe2\xe8\xc2\xb1\x85\xe3\xea\xa1\xae\xb8\x7b\xcf\xcf\x2f\xb7\x6c\xc7\xfc\xc6\x89\x50\x71\xb1\x68\xe8\xb7\xf6\xca\xa0\xfd\x63\x98\xe7\x78\xcc\x07\x91\x2f\xf5\xd6\xe6\x10\x21\xa8\xa5\x9a\xe0\x35\x21\x60\xf5\x6d\x54\x88\xfe\x2f\x2a\xcc\x94\x03\xda\x9a\x9f\xfc\x66\x1c\x1e\x9d\xc5\xbe\x88\xc4\x20\xdb\x0f\xd7\x7d\x84\x5d\xc8\xdd\x9d\x8e\x58\xf9\x96\x1b\x79\xaf\xc6\x86\x24\xba\xa8\x6a\xa6\x43\xa8\xa3\xc7\xed\xf7\x1d\x55\x3c\xc0\xd3\x22\x4a\x60\x69\xec\x67\x4f\x52\xda\x29\xa1\xcb\x60\xc4\x19\x23\x01\xa2\x43\x47\xa8\xaa\x83\x26\x26\x9e\x0a\x14\x78\x0c\x95\x83\xcd\xff\x51\x59\x27\xfd\x5b\xef\x52\x8f\x9d\x23\x78\x7a\xeb\x80\x3d\x70\xeb\x91\x6b"}, +{{0x59,0xd5,0x01,0x39,0x3d,0xc5,0x99,0x97,0x23,0x81,0x07,0x06,0xfa,0xd7,0xd6,0xef,0xd1,0x63,0xc4,0x47,0x10,0xc7,0x41,0xc1,0x85,0xc2,0x7e,0x04,0x25,0xe3,0xc0,0x5b,},{0x82,0x65,0xd4,0x3c,0xfb,0x07,0x35,0xb5,0xd7,0x25,0x0f,0xcf,0x0f,0xcb,0xd1,0x54,0xbf,0xc0,0xee,0xcb,0x13,0xb7,0xad,0x93,0xb6,0xb0,0x29,0x40,0x58,0x8b,0x84,0x3b,},{0xe6,0x46,0xf1,0x64,0xcf,0xed,0x8c,0x2e,0x06,0x07,0x10,0xdc,0xfb,0xc3,0xe9,0xfa,0x5e,0xb3,0x96,0x37,0x68,0x13,0x19,0x01,0x84,0xe3,0x46,0xf5,0x2b,0xb0,0xba,0x57,0x46,0xcc,0xb6,0xb5,0x95,0x22,0xb1,0xaf,0xf9,0x83,0x0f,0x2f,0x98,0xb9,0xe5,0xda,0xfc,0xd8,0x32,0x07,0x78,0x83,0xc4,0x4e,0x8a,0x35,0x38,0x8f,0x71,0x8b,0xf4,0x0c,},"\x56\x4e\xd2\x2c\x17\x2f\x5c\x3a\xfb\xb0\xb9\x5a\xd2\xfc\x64\xe4\xbe\x6d\x4d\xb1\xeb\xb8\xd3\x99\xc4\x3a\x5e\x16\x04\x8e\x7f\x87\x32\x18\x1e\x5d\x0e\xed\x8e\x63\x8e\xf2\xa5\x5a\xa0\xd7\xb6\x81\xfe\x02\xbb\x54\x23\xaf\x94\xbd\x35\x2d\x3c\x2d\xde\xc0\xf8\x47\x60\xa4\x11\x2b\x4f\xe0\x17\xcf\xbc\x50\x2f\x95\x43\xcf\xa4\x1f\xb2\xaa\xe7\x5a\x3a\x08\x1f\x8c\x49\x90\x33\xd1\xfa\xe5\xd9\xc5\x0c\xb4\x4d\xbc\x63\x60\x5a\x54\x39\x8f\xbf\x07\x98\x52\xeb\xa8\x6f\x2f\xdf\xc2\x72\xd0\xc4\x17\x9d\x7c\x13\xcb\xc1\xc2\xa3\xda\x0b\x82\x84\x5c\xf1\xa4\x6e\xbb\xe3\x1e\x79\xb6\x00\x97\x33\xc7\xbf\xe7\xaa\x4f\x9f\xfd\x71\x9c\x77\xdc\x7d\x74\x8e\x49\x2e\x14\xee\x5e\x41\x79\xbf\xa9\xe6\x49\xcf\x0d\x89\x53\x41\x86\x38\x5e\xe9\x94\x10\x05\x1d\x66\x56\xe6\x23\x43\x8c\xc7\xb2\xe7\x07\xe4\x8c\x84\x91\x55\x49\xae\x8d\x67\xa3\x06\xc6\x7b\x10\x6b\x7a\x25\xf4\x5f\x8e\x10\xdd\x7d\xd3\xea\xac\x31\xf1\x05\x22\x57\xeb\x6a\x75\x76\xb6\x85\xcb\x9e\x6c\x1c\xd0\xd7\x3c\x7a\x3c\xed\x5a\x8d\xd2\x73\x08\xae\x00\xf9\x5e\xab\xda\xe9\xd1\xc4\xaa\x89\x34\xe2\x42\x4c\x93\x28\xa5\x22\x8f\x4f\x82\xdd\x4a\x66\x55\x6d\x82\x17\xc5\xa2\x2b\x2b\xeb\x86\xa2\xa4\x34\x13\xee\x5e\x10\xf8\x83\xf2\xcd\x6c\x2e\x87\x49\xb5\x50\x88\x42\xec\xae\x5f\xfc\xcb\x79\x6d\x96\x33\xe8\x7e\xf4\xa9\x6c\x0d\xf7\xef\x47\xb2\x83\xd0\x96\x72\x3b\xa3\x13\x5b\xad\x75\xb2\xe1\x9e\xc0\x4f\x70\xa4\x78\x42\x8a\xd5\xd0\xaa\xc0\xdd\x2a\xb9\x90\x59\x13\xe7\xe5\xad\xe4\x08\x80\x1d\x5d\x3c\x54\xd9\xcf\x7b\x8f\x0f\x0c\x5e\xb0\x54\xc1\x47\x5c\xc2\x10\xa2\xc7\x98\xd8\xbd\x89\x93\x2f\xf9\xf3\x60\x42\x18\x58\x05\x3a\x70\x7b\x8b\xbd\x32\x05\x5c\x44\xb2\x07\x12\xa2\x67\x8a\x9a\x6a\xf9\xe3\x6d\x04\xdc\xff\x44\xf4\x31\xcf\x19\x30\xcd\x18\xfc\x93\x5d\x22\x67\x77\x5c\x69\x09\x67\x25\xed\x89\xa2\x91\xdd\x60\xe2\x1a\xc0\xb0\x12\x87\x34\x07\x29\x92\x82\x3e\xf8\x7b\x5e\xfa\x6c\xc5\xb0\x50\x17\x7f\x55\xf4\xce\xc9\x2a\x08\xa6\x5b\xca\xdc\xab\x9a\x41\xc3\x60\x86\x37\x0b\x7b\x9d\xd6\x29\x8a\xc7\xb0\xae\x6a\x09\xc9\x71\x0a\xbb\x46\x76\xa8\xfc\x87\xa3\x65\x12\x90\x14\x4b\x6b\x30\xef\x4f\x6f\xbe\x5b\x9a\xd2\x52\x37\xfe\x06\x05\xe3\xb9\xf1\x8a\x77\x18\xac\x9f\xca\x6f\x32\x5e\xa5\x5f\x49\xa8\x07\xfb\x80\xa2\x40\x2a\xe1\x34\x23\x08\x0d\x32\x77\x58\x64\x90\x23\x79\x8d\x57\x28\xe0\xdc\x64\xac\x88\xa6\xe2\x94\x5d\xbb\x3e\x3f\xfa\x9f\xdb\x4c\x7b\x58\xfb\xa3\xf5\xfb\xd6\x7c\x68\x6b\x29\x71\xbb\xd8\xba\x4d\x27\x5d\x57\x3e\xb7\x96\xeb\x91\x46\x77\x5d\x8c\xdc\xd5\xfd\x3e\xb5\xa8\x8e\xa5\xa9\x30\xec\x32\x44\xe6\xa3\x7c\x81\xf6\xa2\x55\x4e\x5b\xa7\x87\xf0\xe4\x53\x19\xfe\x4b\x8a\x2f\xfb\xfe\xd5\x07\x70\xe7\x82\x7b\x3e\x7b\xc2\xb4\x4c\xe5\x12\xae\x60\x51\xb6\xf9\xf1\x39\x31\xea\x6a\xcc\x09\x6b\x8d\xcb\x01\x96\xbe\x42\x24\x84\xdb\x5f\xcb\x29\x9d"}, +{{0x83,0x9f,0xb1,0x32,0xe6,0x92,0x50,0xca,0x1a,0xd9,0x45,0x10,0x08,0x7f,0x92,0xce,0x06,0x87,0x69,0x21,0x3a,0x19,0xb2,0xa6,0xc8,0x94,0x90,0xf1,0xf5,0x78,0x80,0x7a,},{0xeb,0x58,0x66,0x19,0xb4,0x4a,0x15,0x37,0x9a,0xcc,0x46,0x21,0xa2,0xac,0x71,0xea,0x58,0x97,0x00,0x26,0xc2,0x8e,0x24,0x09,0xfc,0x1b,0xa2,0xbd,0x8b,0x23,0x6d,0x1d,},{0x66,0x43,0x7b,0x6b,0xc0,0x5e,0x75,0xdd,0x16,0x26,0xc3,0xc4,0xff,0x1f,0x72,0xe6,0xdb,0x38,0x1b,0xa1,0x59,0x09,0x48,0xf8,0xf1,0x6a,0xd4,0xd6,0x6e,0x59,0x91,0x65,0x9a,0xa8,0x44,0x05,0x56,0x8c,0xfb,0xc0,0xa7,0x7c,0x02,0x5e,0x59,0xe4,0x3f,0xd5,0x3a,0xb9,0xff,0xab,0xba,0x7b,0x25,0x8f,0x78,0x79,0x62,0x39,0xf9,0x0d,0x45,0x01,},"\xc5\x72\x32\xfe\x32\xf1\x1e\x89\x4b\x43\x7d\x40\x45\x62\x07\xcc\x30\x6d\xb4\x81\x69\xb2\x0e\x07\x81\x10\x3a\xff\xe8\x02\xf5\xaa\xbe\x85\x82\x95\x2c\xa8\xe9\x57\x45\xe9\x94\x0d\x53\x5e\x00\xff\x65\xab\x3c\x64\xbe\xd3\xd1\x17\x3a\x0f\x3d\x70\xce\x4e\xbe\x2b\x50\xd0\x48\xbb\x47\x16\x4d\x2a\x2c\xd9\xd9\x5a\x10\xcf\x0d\x07\x3e\xd1\xc4\x1b\x3d\xe3\x33\x52\x8e\xe3\x29\x68\x22\x3a\x0d\x84\x7c\xad\xbb\x5b\x69\xf3\x82\x16\x4e\x9a\x28\xd2\x3e\xc9\xbd\xe9\xa8\x28\xe8\x77\x1c\x9e\xb4\x92\x20\xaf\x54\x18\x55\x08\xaa\x07\x3a\x83\x91\x95\xf1\x03\xbc\x2f\x32\xfe\x04\xf9\x51\xca\x45\xbf\xbf\x30\xd2\xfb\x81\x14\x05\x6a\x73\x6a\xdd\xf2\x7e\xcd\x9a\xf0\xf6\xe5\xe9\x7e\x57\x73\xc4\xfa\x90\x22\x68\xc3\x2a\x15\x14\x10\x95\x5f\x3c\x76\xaa\xe2\x55\x54\x9e\x0f\x03\x3f\x89\xe1\xa7\x8f\x26\x5c\xba\xb6\xbe\xb7\x51\x6d\x4b\xad\xc4\x9c\xda\x45\x88\x31\x62\x25\xb4\xc8\x5e\xa9\xfa\x99\xc7\xd6\x76\x6e\x94\x90\xc4\x9d\xe5\x9d\xa7\x17\xf6\x67\x65\x35\x30\x07\x1d\xd2\xf0\xc5\x3e\x31\xd8\x76\x81\x56\xfe\xb0\x8f\xaf\x00\xdb\x0a\x04\x53\x3d\xf9\x79\x57\xa8\x4a\xa4\x6a\xeb\x7e\x36\xc0\xb0\xbe\x69\x01\x89\x46\xf1\x53\x8a\x6a\xea\x71\xdf\x53\x6f\x14\x42\xc2\x44\x4a\x43\xa0\x43\xd0\x46\xab\xde\x1a\x78\x2b\x0f\x4f\x5c\x6a\xa7\x20\xaa\x60\xaf\xed\x94\x7c\x0c\xee\x47\x7d\xbe\xc0\x05\x57\xb3\x72\x12\xd9\x33\x57\xca\x2b\x6b\x6f\x82\x71\x5b\xa0\xe4\x84\xf6\xda\xf2\xd0\xb7\xa9\x8c\x03\x35\x19\xce\x38\x26\x35\x86\x79\x6d\x5d\x31\xcb\x2b\xc3\xd1\x12\x5b\xc0\xcc\xd3\x29\xa5\xc2\x1f\xd2\x7a\x21\x8d\xed\x60\x7a\x0e\x75\x15\xb5\x71\xf1\x92\xc3\x3f\x5f\xba\x51\x4a\xfe\x4d\x45\x81\x00\xf3\xcc\xba\x3f\x38\xeb\x43\x0b\x4f\xc8\x8f\xae\xf9\x99\xfa\x71\xee\xe4\x88\x22\x89\x03\xbe\x29\xf2\x4d\xf8\x1d\xc9\x11\x04\x4e\x92\x4c\xda\xa0\x17\xcc\x7d\x87\xe5\x6a\x6c\xba\x87\x60\x85\x9b\xd6\x3d\xd2\xd4\xf5\x81\xb9\x55\xec\x92\x4a\x49\xaf\xb4\x7c\xa0\xd6\x3e\x78\x26\xfd\xc7\x12\xb4\x94\x3b\x73\x9e\x18\x57\x75\x5a\x33\xc6\x50\x36\x75\xfd\xde\xae\x06\x27\x06\xe3\x4f\x74\x4f\xd9\x32\x64\x8a\x56\x08\xce\x60\x8a\x61\x99\x57\x83\xf3\x33\x9c\xa3\xfe\x10\x7e\x19\x72\x74\x4b\xf6\xd4\xed\xaf\xbf\x47\xce\x02\x1e\x05\x82\x1f\xb1\x24\xc7\x08\x39\x30\xe6\x8e\x6f\x5c\x32\xd2\xd9\xfc\x4a\x88\x4c\x0b\xc8\x84\x04\xe4\xcf\xe3\xc1\xa2\x42\x0d\x41\x82\x3a\x38\x5f\xb3\x28\x8d\xb6\x5c\x89\x54\x5f\x6e\x73\xf0\xd8\x00\x4b\x2b\xa1\x2a\x4e\x07\x72\x75\x23\xef\x08\x56\x70\xda\xff\xaf\x41\xc2\x8a\x4c\x11\x57\xbd\xd2\x45\xe6\x87\x50\xdd\x20\x0e\x02\x3a\xf9\x0c\x67\x56\x1e\x0f\xe4\xba\x34\x0c\x43\x3f\x75\x5e\xef\xab\xd4\xb0\x39\xbf\xc3\x23\xdc\x11\xad\xb7\x5a\xec\xc4\x48\xa8\x69\xc7\xf2\xa5\x8b\x9d\x86\x17\xc6\x4b\x8f\x89\xfc\x58\x3f\x8c\x94\x8e\x2d\xf0\x25\x1a\x6c\x7d\x8c\x73\x8c\x3b\x5a\x42\xb7\x49\xad\x5e\x8e\x98\x6b\xd8"}, +{{0xad,0xc1,0xe5,0x6c,0x3a,0xc9,0x4e,0x6c,0xda,0x04,0x11,0xcb,0xc3,0xce,0x2a,0xf1,0x28,0xd1,0x85,0xa2,0xa2,0x73,0xbd,0xb2,0xaf,0x8d,0x7e,0x50,0xfb,0x96,0xb5,0x26,},{0x5d,0xcf,0xec,0x1f,0x91,0x12,0x75,0x15,0x64,0xec,0xb6,0x07,0x15,0xeb,0xb2,0xc5,0x17,0xb5,0xec,0x37,0xb2,0x53,0x4f,0xd6,0x32,0x99,0x24,0x42,0x9b,0x7f,0xd5,0xc5,},{0xf0,0x2e,0x5d,0xbc,0xb6,0x87,0x04,0xaf,0xad,0x03,0xac,0xa8,0x10,0x61,0xdb,0xdb,0x99,0x85,0x70,0x04,0x9f,0x10,0xce,0x65,0x0e,0xc7,0xa2,0xef,0xf1,0x5c,0x79,0x3d,0xdf,0x5a,0x27,0x2c,0xb6,0x83,0xc2,0x2c,0x87,0x25,0x7c,0x59,0xbd,0xef,0x39,0xef,0xea,0x79,0xbd,0x67,0x95,0x56,0xea,0x15,0x05,0xed,0x00,0x36,0xcb,0x46,0x04,0x0c,},"\xd4\xf9\x59\x47\x4e\x0b\x89\xe2\xdc\xd0\x20\x66\x98\x4f\x88\xd7\x39\xdd\x11\x34\xa3\x33\x09\xf0\xa8\xb7\x80\x2e\xaf\x01\x33\x03\xc1\x35\x15\xdf\xeb\x46\x1e\xa3\xd2\x48\xe9\x98\xb9\xa4\xe5\x4d\xae\x5b\x00\x19\x0a\x45\xe7\x0d\xc6\x7e\x98\xf3\xd4\xcf\x90\x6c\x21\x4d\x4f\x63\x6d\x29\x52\x92\x5e\x22\xb1\xa8\x6a\x1a\xab\xb3\xa8\x92\xa9\xf8\xed\x45\x4f\x39\xc6\x3d\x35\xb7\x1e\x87\xa2\xda\x55\xa8\xe1\x67\xac\x83\xa8\x66\xad\x16\x7a\x17\xae\xd1\x83\xc0\x85\x18\xc1\x5e\x6b\xe3\x48\x58\xb4\xce\xe2\xb8\x42\x73\x14\x76\x0f\xff\xdd\xd5\x92\x38\x54\xb1\x74\x7f\x79\x6e\x1a\x52\x49\xfb\x30\x44\x89\x4e\xd6\x46\x82\x9f\x65\x43\x16\xee\x52\xf4\x01\x0c\x8d\xd3\x21\xfa\x1d\xec\x39\x7e\x50\x14\x5e\xd9\xe3\x16\x86\xfd\x52\x03\xf7\x23\x3b\x8d\xa7\x80\xac\xaa\x91\xee\x0b\x5b\x47\x20\x78\x66\xaa\xd8\x5f\x83\x7e\x03\xb4\xe6\xf6\xde\x8c\x04\xac\xaf\xd7\x07\xbd\xc1\xdd\x45\x50\x0a\xb5\x64\x80\x1b\xee\x9a\x58\xec\xe3\x60\xd0\x04\x82\x8b\xaa\xf5\x23\xe2\xf5\xab\x69\x32\x6a\x03\xaa\xbe\x01\x08\x78\xfd\x43\xff\xaa\x56\x87\x22\x44\xd7\x68\x1f\x16\x18\xe6\x23\xe3\xd4\x74\xc7\x3a\xf8\xb0\x80\xa6\x18\x21\xa5\x74\xef\x2f\xd7\x52\xd2\x3b\x60\x5e\xc5\x21\xc1\x9c\x15\x50\xde\x98\x0c\x09\x4d\x05\xe0\x23\x8f\x3e\x00\x8e\x6b\x19\x5a\xbf\xdd\x40\x28\xee\x1e\xe1\xd6\xc6\x6a\x76\xf1\x78\xf0\xb4\x31\xe4\xaf\x44\xdd\xcc\xfc\x52\x90\xed\xff\x36\xec\xe6\x3e\x83\x85\x56\x70\x13\xf4\x3a\x2a\xeb\xb6\x7e\x3e\xf4\x06\x30\x8c\x20\x48\x8a\x76\xd5\x8a\x21\x4f\x31\x39\xd9\x83\xb1\x9a\xfb\x12\xe3\x28\x36\x07\xfd\x75\x10\x7b\xd3\x1f\xeb\x62\x56\x17\x4b\x7a\x18\xae\xca\xc9\xf8\x56\x25\x82\x01\x8b\x0e\x6d\xe4\x05\x35\xe3\x5b\xef\x2b\x56\x25\x53\x88\x51\x29\x39\x75\x62\x90\x0d\x34\x17\xf9\x8c\xdd\x1e\x29\xd7\x31\xff\x48\x93\x3f\x29\x52\x95\x81\x63\xba\x67\xd5\x95\x61\x81\x1b\x83\x77\x2b\xd0\x57\x10\xb6\xe3\xcc\x04\x34\x60\x99\x37\x50\x72\x23\xab\xb7\x1a\x6a\x8c\x83\x8f\xec\xdb\x1d\x2d\x37\xc9\x5d\xc8\x06\xf6\x5f\x3f\x96\x63\xd9\x9f\x06\xe6\xc0\xf3\xc3\x2e\x95\xaf\x1d\xd7\x08\xe8\x11\x08\x63\x6a\x26\xb9\x68\xe9\x83\x39\xc7\x41\x28\xb6\xcf\x67\x13\x35\x88\x4a\xc7\x2f\x75\xb6\x37\x19\x5e\xa9\xec\xa0\x53\x60\x89\x96\xc3\x2e\xd4\x45\x41\x0f\x67\xfa\x10\x4b\x39\xf0\xfd\xf3\xc9\xb5\xc6\x15\x7b\x76\x80\x37\x56\xb2\x7f\x4c\x3b\xa1\xb4\x7f\x32\x85\x76\x24\x8e\x9b\xc5\x3e\x7b\x8a\xb0\xb2\xed\x97\xc2\xf9\x99\x8b\xcc\x7d\xfe\x39\xe2\x64\xaa\xd3\x0c\x6c\xfe\xf2\xb5\x55\x3f\xfb\x5a\x69\x9a\xa4\xbd\x0e\xab\xe4\x38\xce\x05\x22\xcc\x91\xfe\x4e\x72\xbf\x7e\xac\xba\x47\x71\xcc\xf6\x3a\x37\xaa\xfc\xad\xbf\xbf\x99\xdd\x76\xb8\x5b\x80\xee\x07\x5d\x3a\x7d\x1a\x90\xa5\x5b\x77\x29\xa5\x41\x6e\x5b\xe6\x96\xbf\x9f\xb7\xf3\x15\x8c\xfd\xb5\xcf\xda\xcd\xde\x81\x72\xee\x1a\xb9\x48\x6e\x24\xcc\xea\xd2\x9b\x45\x7a\xcf\x43"}, +{{0xdb,0x89,0xdf,0x6a,0x23,0xd8,0x90,0xb7,0xf0,0x02,0x60,0xe8,0x1f,0x4a,0xd9,0x8f,0xd0,0x94,0x40,0x36,0x51,0x31,0xe8,0x5e,0x22,0xc7,0x95,0x1a,0x18,0x7b,0x02,0x18,},{0xc9,0x67,0x63,0x67,0x2e,0xe4,0xa2,0xcc,0x5a,0x93,0xb6,0xa6,0x83,0xdf,0x9b,0x5d,0xe4,0xd9,0x38,0x6a,0x79,0x08,0x35,0x68,0x1d,0x12,0x17,0xd1,0x92,0x96,0xbd,0xc8,},{0x80,0xb7,0xfc,0x8b,0x6a,0xe6,0xee,0xce,0x81,0x66,0xb7,0xea,0x53,0x4c,0xb5,0xb2,0x14,0xc9,0xea,0x99,0x73,0x92,0x1e,0xd0,0x5d,0xe4,0x0c,0x78,0xe1,0x4f,0x16,0x2b,0x09,0xe9,0x78,0xca,0x6d,0x86,0xee,0x43,0x4d,0x98,0x4b,0x8b,0x00,0x70,0x40,0x9d,0xd2,0xad,0x11,0xb5,0x31,0x78,0xe2,0x39,0xda,0xb5,0xbc,0x39,0xc7,0xba,0x46,0x0d,},"\x54\xc1\xc5\x11\x1e\x08\xc9\x82\x45\xba\x4f\x13\x18\xba\x1d\xb1\xdc\xc7\x4d\x14\xa5\xc9\x8a\xb9\x68\x9c\xba\x1c\x80\x2c\x68\xbc\xfc\x81\xfd\x87\xff\xc6\x1c\xaa\x94\x2f\x66\xd7\xe5\x15\x7f\x65\x53\x8c\x7e\x7b\x33\x17\x04\x84\xb4\xb6\x54\x3f\x36\x20\xff\x29\x63\x8b\x64\xd4\xda\xe7\xb0\x22\x21\xcf\x77\x83\xf1\x87\xec\x42\x31\xe6\xb6\x94\x6d\x82\x76\x20\x74\xf0\x9c\x32\x78\x1c\x2f\x38\x46\xde\x3e\x82\x17\xf6\xe1\xb6\xe0\xd2\xb5\x59\x5d\x74\x2e\x2c\x4e\x32\x5a\x28\x41\x92\x40\x44\xdf\xcf\x12\xb4\x79\xeb\x69\xf1\xbb\xd4\x0e\xab\xdd\xd1\xff\x54\xa9\x18\x4d\x36\x6d\xff\x9d\x8f\x2d\x86\x3e\x37\x8a\x41\xf1\x0c\xd1\xda\xe9\x22\xcd\x7f\xbb\x2a\x54\x4e\x47\xea\xbf\x47\xca\x0a\x38\xab\xba\x34\x45\x49\x19\xbb\x9a\x4e\xf0\x44\xbf\xb9\x7b\x70\x8c\x2f\x74\x28\xd6\x8f\x9c\x57\xc0\xee\x7e\x79\x25\xf7\xa2\xb5\xc6\xe7\xdf\x82\xbb\x26\x80\xc8\x62\xdc\x7c\xc6\x8b\x0f\x54\x53\x0e\x64\xaf\xe2\x76\x3d\x9c\x7b\xaf\x45\xcc\x6f\xe6\x12\xd1\xf7\x82\x77\x39\xc4\x41\x13\x98\x88\x8f\x73\x67\xc3\xd4\x37\x79\x07\xac\xc0\x6a\x06\xf9\x3f\x88\x72\x26\x79\x8f\x48\xaa\x54\x64\xf6\x01\xc2\xc1\xed\xda\x77\xed\xfe\xb9\xb9\xb5\xd5\xf9\xcb\x6f\xed\x37\x90\x05\x47\x47\x7f\xca\x1d\x09\xab\x52\xd6\x3e\x49\x1f\xeb\x12\xfd\x6d\xc8\x05\xa7\x8c\xee\x3b\xaa\xde\x43\x52\x98\x20\x61\xde\xa5\xa2\x65\x3d\xb8\xe7\x60\x77\x72\xe8\x34\xb3\xa5\x05\xc1\x6d\xd6\xe7\xc7\x1b\x91\x1e\x84\x2e\xba\x92\x5d\x77\xa3\x3c\x5c\x57\xce\x11\x84\x09\x80\x78\xca\x2e\x6a\x3f\x69\xaa\x6a\x14\x63\x9d\xc9\x7b\x4b\x30\xc9\x9d\xc4\xfa\x3e\x2c\xf6\x3c\x70\x1c\x30\x6c\x5e\x25\x3c\x51\x13\x85\x4c\x18\x5e\xbc\x8b\x47\x98\xf6\x8d\x1f\xd7\x80\x05\x4d\x3e\xed\x2f\x39\x4c\x45\x43\x04\x96\x6b\xdd\xbd\x12\x28\x08\x34\xec\x9b\x40\xc1\xe9\x8b\xc2\xd9\x8f\x48\x45\xf6\xeb\x44\xf2\x53\x15\xee\xdb\x3b\x79\xff\xca\x41\x80\xc1\xbd\xdd\x97\xd0\xc9\xaf\xfb\xac\x58\x81\x49\x37\x68\x26\x80\x07\x6f\xe5\xa3\xba\xbb\x65\xd2\x8f\x25\x17\x03\x6c\x0c\xfb\x42\xf0\x29\x3e\xb2\xac\xb1\x39\x49\xfe\x91\xe0\xad\x06\x78\xaa\x24\x3d\x77\x34\xa8\x9d\x99\x78\x70\xbf\x9a\x6a\x58\x4e\xd6\xe6\x28\x16\x3e\x39\xd8\xaa\x61\x0d\x46\xb9\x28\x5b\x9e\x1d\xd7\xe8\xf8\x07\xfd\xf5\xca\x2b\xbf\x6d\xe5\xe5\xe6\x8a\xf7\xcb\x7e\xbd\x43\xec\xce\x22\x7c\xd7\x0c\x7b\xf4\xee\x14\x33\xed\xfc\xfe\x88\x66\x14\x67\x0c\xdd\x19\x63\x43\xfb\x91\xe1\x54\x16\xd2\xf6\xac\xba\xe3\xea\xdc\x03\x02\x31\xee\x9d\x2e\xcc\x52\xa8\x8c\xe8\xdc\x7d\x09\x8e\x7f\xac\x77\x68\x5b\x4e\xb5\x40\xe3\x01\x93\x07\x14\x32\x21\xb8\xef\x77\xf3\x63\x2c\x89\x3d\x55\x6e\x0b\xb7\x43\xa1\x96\x3e\xc1\x58\x86\xc8\x54\x5e\x87\xc9\x5c\xc8\x25\xf2\x00\xd0\xf3\xcf\x4f\x55\xa3\xd6\x60\xa5\x36\xa2\x3a\xef\xcc\x42\x8a\x43\x20\x34\x85\xee\x84\x34\x2f\x5c\x00\x1e\xe8\x40\x4e\x75\x90\x17\x00\x62\x82\xab\x8b\xa8\x90\x3e"}, +{{0x00,0xe6,0xbb,0x17,0xaf,0x3c,0x2d,0xf6,0x52,0xb3,0x4f,0x9a,0xbe,0x19,0xf9,0x90,0x19,0x07,0x42,0x33,0x68,0x6c,0x71,0x14,0xe3,0xa0,0xed,0xf0,0x83,0x09,0x93,0x4f,},{0x7b,0x82,0x32,0xa6,0x6c,0xec,0x2f,0x91,0x5a,0xaa,0x79,0x51,0xd2,0x9d,0x2b,0x9e,0xe9,0x3d,0x32,0x1d,0x15,0xb2,0x03,0xc5,0x1e,0x61,0xe8,0xce,0x83,0xd1,0x87,0xf8,},{0x04,0xb3,0xb8,0x50,0x1e,0x39,0x6c,0x4a,0x78,0x8e,0x14,0xac,0x49,0xf6,0x17,0x4c,0xdb,0x5c,0x85,0x5e,0x65,0x12,0x03,0xcf,0x68,0xd1,0xef,0xa8,0x9a,0xa5,0x86,0x78,0xd4,0xd1,0xf3,0x03,0xa9,0x87,0x7a,0x37,0x86,0xd2,0x03,0xc3,0x55,0xb0,0x9d,0x52,0x86,0xc1,0xca,0x0d,0xf0,0x4a,0x89,0xaa,0x06,0xcc,0x3f,0x9d,0x0f,0xd3,0x05,0x04,},"\x06\x32\x81\xe4\x1e\x8b\xa9\x70\x3e\xd0\x9e\xf3\xbf\x0e\xa4\x6e\x4c\xab\xdd\x6e\xbd\x76\x9d\x05\xdc\x04\x5d\x4f\x99\x0d\x69\xfc\x55\x41\x30\xa4\xe6\x1a\xa2\x1e\x2d\xe4\xc9\x2d\xb4\x8a\x20\xa3\x7b\x17\x47\xa7\xea\xc5\xeb\xb2\x73\x5a\x89\x38\x19\x7f\x13\x9f\xad\x14\x97\xb3\x51\xad\x06\x4c\x0f\x18\xf8\xfa\xf1\xfe\x11\xf6\x39\x79\xa6\x99\x68\xe2\x4c\xf9\x1e\x58\xa3\xab\x03\x26\x69\xe4\xef\xee\x27\x4f\x96\xb5\x8b\xe7\xd9\xe3\x91\xf3\x6f\xcf\x07\x09\xb2\xcb\x2d\x22\x69\x4a\x6c\xeb\x17\x24\x69\x45\xeb\xb3\xbc\x7f\x0f\x03\xbf\x0b\x08\xdc\x96\x26\xe3\xe7\x15\xc9\x91\x67\x1d\x53\xeb\xb9\xae\x83\xa7\xd0\x8d\x44\xf6\x36\x35\xc4\x0f\x8d\x48\x17\xf5\x8d\xe9\xeb\x77\xcb\x25\xb2\xac\xd6\xde\xf9\x69\xab\x56\x9e\x97\x4a\x8a\xda\xc1\x1a\x86\xb5\x8f\xe6\xc1\x00\x67\x49\x9f\xc9\x14\xdf\xf5\x69\x02\xcb\xc3\x93\xa7\x1c\xc2\x5e\x8f\x05\xc0\x3c\x94\xf1\x3b\x84\xa2\xb0\x1a\x58\xc1\x0d\xbc\xbb\x60\xeb\xce\xe4\x87\xf5\x29\x17\x74\x66\x29\x99\x25\xda\x50\xe2\xda\x5b\x55\x57\xf0\xae\xee\x3f\xd7\xf4\x7b\x5c\x2e\x3f\x84\xce\xfa\xb4\x67\x96\x91\x39\x4d\xd1\x22\x30\x3b\xb7\x69\xaf\xb3\xad\xfe\x83\x58\xb0\x2b\x67\x92\x73\xb3\x5a\xbd\xc6\x40\x25\x76\xcc\xce\x5e\x10\x44\x2a\x13\x7e\xf9\x45\x69\x39\xb2\x89\xef\x4e\x41\x7b\x1c\xc6\x23\x9f\x7c\xee\xdd\x68\xf1\xa8\x26\x41\x80\xe0\x68\xb4\x96\x6f\xd6\x7f\x2b\xad\x6e\xdd\x8b\x4a\x1e\x8d\x2b\x54\x2d\xaf\x26\xdb\x83\x1f\x1f\xb5\x1e\xb8\x6f\xfa\xde\xcc\xd9\xac\x3d\x66\x4f\x34\x6e\x7d\x04\x6c\x33\xa5\x72\x84\x1e\xa8\x33\x4e\x7f\x2f\x41\x7a\x05\x71\x2a\x9e\x33\x4e\x48\x7f\xd3\xae\x17\x54\x55\x16\x2f\xe8\xf4\x9c\xc0\x26\xa6\x40\xc6\xcf\x93\xcf\x58\x87\x50\x52\xf4\x1c\xc9\x82\x06\x15\x65\x3e\xa2\xd0\x84\xc8\x96\xea\xfe\x5a\xd4\x72\x55\x79\x65\x30\x84\x99\x4f\x95\x6d\x5c\x94\x59\x0a\x24\x09\x58\x1b\x6f\xc8\x6e\x40\xaa\x58\xbf\x6e\x60\x57\xa6\xf9\x0a\xf3\xb8\x7a\xea\xf3\x29\x94\xa5\x5a\x54\xf7\x9b\xdf\x3d\xbb\xf5\xce\x0f\xf8\x12\xe4\x86\xb0\x54\x5d\x9e\x9c\x2b\x0b\xce\x0d\x4c\x36\x47\xb1\x82\x72\x62\x49\x88\x34\xe1\x98\xa3\xec\x70\xf3\xb0\x3d\x6a\xad\x2c\x49\xeb\x80\xb5\xe2\x05\x14\x39\x22\x5f\xd9\xce\x94\x68\xd6\x9a\xf7\x0a\x26\x2e\xe3\xb8\xb6\x2a\x8e\x5b\x41\x34\x6d\xa3\x01\x2f\xfb\x45\x81\x6b\x7b\xec\xb0\xe7\x9a\x60\xbf\xf7\x16\x36\xa3\xe4\xbb\x1b\x35\xca\xf1\x95\xf5\x51\x17\x28\x0f\x78\x72\x17\xb3\xca\xa2\xe7\x93\x72\x6f\xc5\xa7\x4d\x11\x60\xdc\xad\x86\x89\x04\xc1\x97\x38\x11\x34\xed\x8c\x3d\xb3\x75\x0b\x75\x56\xf6\x9c\xcc\xe1\x8b\x77\x38\x8b\x58\xc5\xb8\x11\x3e\x59\x0a\xd6\xea\xc5\xb9\x1e\xce\x5a\x67\x05\x02\x5c\x80\x35\x3c\xeb\x1e\xd8\x4a\xaa\x1c\xc4\x8a\x41\x6b\xc0\x16\xae\xf1\x73\xbb\x80\xb2\xba\x28\xc5\x79\x60\xc6\xb0\x11\xb6\xb4\x95\xa3\xf3\x31\x1e\x79\xfe\x46\xbd\xb6\xa4\xc3\x81\xfb\x9d\xc4\x62\x8b\x0a\x83\x02\x35\x58\xf1"}, +{{0xfb,0xdd,0xf6,0xe6,0x1e,0x20,0xd8,0x06,0xe5,0x59,0x17,0x75,0x6d,0xe6,0x0d,0x0c,0x9a,0x99,0x97,0x6f,0x64,0x67,0x16,0xff,0x2f,0xf1,0x31,0x2c,0x54,0xdd,0x97,0x1d,},{0xac,0x53,0x8f,0xab,0xad,0x43,0x80,0xe6,0x0e,0x97,0x71,0x26,0xe7,0x69,0x5e,0xed,0xa5,0x41,0x7d,0x85,0xf7,0xd2,0x3d,0xb2,0x1b,0xd0,0xad,0x11,0x11,0x16,0xf0,0x5d,},{0x8c,0x9b,0x77,0xaa,0x0f,0x1c,0xf5,0x2e,0x8f,0x7a,0x91,0x8b,0x21,0xb4,0x68,0xe6,0x23,0x35,0x91,0x1b,0xc5,0x93,0x06,0xb3,0x0c,0xe7,0x7b,0xf6,0x92,0xc1,0x10,0x59,0xb0,0xee,0x9c,0x5d,0xaa,0xf6,0x83,0x9b,0xb8,0x13,0x73,0xc6,0x1d,0x28,0xd0,0x72,0x70,0x2b,0x59,0x5e,0x4d,0xce,0x28,0xcb,0x99,0x38,0x22,0xb2,0x48,0x13,0x04,0x0b,},"\x3e\x99\x53\xca\x55\xd0\xcd\x23\x3b\x98\x83\x3e\xb1\xbc\x79\xd3\xb5\x5f\x18\xc8\xfa\x1c\x42\x02\x7b\xca\x25\x57\x91\x53\xb5\x5d\xa0\xc5\xa1\x78\xb8\x38\x69\x56\xd9\xa5\x41\x83\xb2\x4c\x91\xdc\x4b\xe9\x94\x84\x72\x37\xd3\x66\x6a\x0a\x01\x30\xfe\x19\x92\x4b\xc0\xee\x50\x89\x6c\x35\xa2\xe1\x6a\x29\xe2\xe2\xac\xf1\x80\xbd\xd9\x37\x93\x54\x68\x7f\x0e\xce\x68\x82\xd2\x6e\x98\x0e\x68\x66\x98\x04\x3b\xb1\xb0\x12\x13\xaa\x64\x4a\x4f\x8d\x61\xf9\xb6\x13\xe6\x2e\xaa\x35\x76\xce\xa0\xb0\xb8\x3f\x05\xce\x25\x58\xff\x63\x56\x49\x5c\x45\xed\xe4\xa8\xf6\x5b\x81\x4a\xb8\xa7\x30\x94\x03\xdf\xd4\x3c\xbe\xa9\x08\x93\x93\x9b\x78\x00\xaa\x00\x23\x2b\x5f\x6b\x77\x14\xeb\xdc\xd8\xbc\xf3\x4a\x5a\x7e\x82\x2a\xc7\xb1\xb0\x99\xac\x61\x5f\x13\x5f\x8c\x35\x1d\xc4\x1a\xe5\xf6\x6d\x5f\x9c\x26\x00\x45\x4c\xa0\x1c\x00\x9b\xa6\xde\x04\x16\x2a\xe5\xf1\xf2\x70\x89\x3c\xa3\x90\x7a\xff\x7f\x78\xe0\x33\x96\xe3\x2b\x62\x2f\xf3\x40\x53\x7b\xf1\x23\xe5\x59\x95\xe9\x20\x96\x09\x33\x0b\x2e\xee\x51\x12\x74\x84\xa4\x0e\x25\x07\x00\x82\x3f\xeb\x0b\xc9\x7b\xb5\x09\xff\x73\x26\x75\xde\xc3\x2e\xcb\x63\x5e\xd9\x2c\x7d\x78\xfe\x30\x50\x20\x0c\xf1\xd9\x41\xd6\xb3\x88\x80\x0a\x84\x19\xd9\x6a\x59\x5e\xce\xd5\xec\x4e\xfd\xcb\x6f\x98\x7f\x54\x72\xa5\xc4\x30\x58\xd3\xa3\xa7\xbb\x56\xd7\x98\x03\x65\xed\x43\xdb\xc2\xbe\x48\xf1\xd1\x8c\xe7\x6a\x89\x18\x54\x26\xfd\x5c\x69\xdf\x7e\x92\x91\xab\x78\x23\xc2\x3a\x76\x94\x1e\xd3\x83\x6a\xac\x7b\x58\xc0\xd5\xfb\x6b\x63\x6c\x42\x47\x1a\x4d\x17\x03\x51\x6f\x03\xe9\x35\xf3\x1f\x19\x54\x50\xe5\x37\xb2\xa0\x7d\x54\x5b\xa4\xb6\x8a\xfb\x06\x38\xc6\x5b\xb0\xff\xaa\x0c\xfd\x69\xd7\x10\x48\x19\x79\x66\x19\xd4\x83\xa0\x24\x5b\x4f\xd9\x01\x7f\x62\xa7\xd3\xa5\xfc\x3b\x72\x89\xd7\x57\x35\xf2\x87\xca\x0a\x95\x1a\xd5\x83\x44\xb2\xab\x7d\x7d\xf8\xdb\xd7\x92\x2a\x5a\xbb\x8d\x7c\x2e\x79\x14\x7e\x6d\x36\xee\x31\xf9\x30\x47\x3b\x07\x27\xdc\xfd\x58\xd6\x44\xd7\xd7\x0a\x0e\xd3\x1c\xa6\xa1\x3e\xd9\xdb\xd2\x24\x49\x2e\xfd\xa1\x9e\x4f\x8e\xed\x46\x18\x0f\xe7\x50\xf0\x7b\xbe\x8e\x99\x85\x4d\x13\xf5\x8b\xa9\x68\xce\x38\x59\xd6\x11\x89\xcd\x2b\x66\x7f\x3b\x2d\x06\x65\xb5\x74\xc4\xba\xc1\x9d\x9e\x37\xe5\xb7\xa8\x0e\xb3\x34\xe3\x68\x10\x53\x0a\xa5\xd1\x76\x63\x93\xf8\x11\x5a\x52\x09\x0c\x91\x82\x34\x28\xc8\x97\xa5\xf3\x5e\x12\xa8\xaf\x2c\xd4\xfb\x13\x90\x7c\xa6\x60\x3a\x4f\x76\xf5\xc2\xe0\x23\x74\xa8\xdc\x3a\x47\xc1\xbe\x6f\x1d\x1c\x8e\xbc\x59\xb3\x6d\x1c\xfa\x0a\xb2\x3e\x9b\x0a\xe9\xb0\xe6\x37\xee\xed\xb9\xc6\x6b\xea\x62\xdc\x63\x0c\xde\xfa\x71\x82\x39\x61\x7e\x31\x18\xe5\xb6\xde\xb7\xc2\x94\x47\x52\x82\xe8\xab\xe2\x4f\xd5\xa5\x4b\x78\x6f\xff\x90\x28\xc5\xa0\x33\x38\x4e\x4b\xc8\x01\x4d\xec\x8d\xa1\x00\xa9\x4b\x17\x8e\xf8\x8e\xc3\x57\xb6\x6d\x2b\x90\x98\xab\x64\x79\x16\x96\xb1\xa6\x6b"}, +{{0x8a,0x55,0xe7,0x7b,0xb0,0xc8,0x74,0x0b,0x8c,0x2e,0x8d,0xdf,0xdf,0xdb,0x40,0xf2,0x7e,0x45,0xfe,0x81,0xfe,0x45,0x71,0x11,0xbf,0x1c,0x87,0x30,0xea,0xb6,0x16,0xb4,},{0x9f,0xf1,0xfd,0x0c,0x50,0xeb,0x24,0xf9,0x9f,0xe2,0xf7,0x71,0x1d,0x52,0x87,0x2d,0xfc,0x90,0x03,0x80,0xdd,0xdc,0xdb,0x86,0xfe,0x6f,0x4a,0x5f,0x35,0x0a,0x87,0x43,},{0x8a,0xae,0xba,0x53,0x5c,0x51,0x1c,0x31,0xd3,0xf8,0xe9,0x5c,0xb0,0x77,0xa9,0xa7,0xec,0x7d,0x08,0x44,0x1e,0x53,0x42,0xa6,0xab,0xe0,0xbf,0x2a,0x5d,0x7f,0xc9,0x30,0xb4,0x3d,0xac,0x3d,0x1e,0x8e,0xf2,0xcb,0x03,0x45,0x52,0xeb,0x4d,0x08,0x39,0xbc,0x8b,0xf2,0x94,0x55,0x1d,0xd2,0xd8,0x0c,0x53,0xfd,0x62,0x79,0x35,0x1a,0xc2,0x0c,},"\x20\xfb\x41\x4e\x26\x4a\x95\x47\x84\xf1\x12\xba\xce\x7e\x04\x74\xb3\x9c\xb3\xc9\xe5\x3d\xee\x0a\x21\xf4\xcf\x6d\x4a\x99\xb9\x34\x7d\xdf\xfb\xe2\x81\xa6\xc2\x30\xa7\x5d\x63\xa7\x2f\xd0\x5f\x6d\xb5\x3e\xa7\x01\x4e\xf7\x70\x9d\x18\xff\x97\x0f\x48\x5f\xe8\x3b\xa1\xd3\x71\x47\x33\x8a\xde\xd6\xda\x4c\xfd\xac\xc1\xe6\x9d\x2f\x3e\x0e\xf3\x62\xf4\x7b\x5b\xcf\xb7\x8a\x1e\x17\x9e\xb5\xc5\xb1\x06\xc8\xd8\x2a\x0a\x0b\x29\x0d\xf0\x75\xab\x27\x43\x69\x29\xcd\xe6\x56\xf0\x23\x09\xf9\x57\x50\xeb\x67\x65\x83\x26\x2e\x5f\x2f\x69\xf0\xff\x72\xa8\xe0\x57\x26\x63\x82\x26\x92\x05\x31\x87\x40\xbf\xe0\x6b\xf5\xc2\xcb\x45\x33\x90\x8e\xf9\xf9\xf2\x86\x9a\x75\xb9\x53\x35\x79\x82\x0e\x3b\xc0\xca\xff\xd6\x46\x17\x1c\x82\x86\xc3\xa4\xab\xa1\xff\x09\x15\xd9\x36\x11\x20\x5e\x23\x0f\x39\xff\x4c\x4c\xaf\x3f\x33\x3e\x75\x3f\xce\x2b\x71\x21\x3e\x53\xd6\x08\x41\x5e\xe1\x7f\xd4\x82\x12\xee\xdd\x88\x40\xf3\x37\x10\x1e\xf0\xd0\xb6\xf7\xbe\x4b\xff\xc0\x6e\xee\xfe\x80\x66\xdd\x27\xa0\x54\x1a\x46\x88\x31\xac\xdd\xc4\x90\x2e\x2f\xef\xef\xbe\xd1\x9c\x30\x8e\x56\x21\xe0\xbf\x46\xbc\xd5\x38\xaa\x13\xfa\xf0\x4d\x38\x07\x59\xc0\xe1\x07\xe9\x12\x00\x18\x39\xdf\xd0\xb6\x35\x44\x0e\x96\x38\xf5\x37\x7c\xa8\x45\x0f\x35\x0c\x01\x12\x9e\xe3\x37\x64\x41\x5c\x53\xcb\x2f\xfb\xf9\x68\xdf\x78\xb7\x42\xfd\x06\x65\xe7\x8a\x34\xab\xf4\xde\xcd\x1f\xd3\x86\x28\x9a\x13\x64\xe6\x45\x55\xee\xc5\x8b\x0a\xf9\xa4\xcd\x6b\x36\xd1\xd5\xc6\x11\xa2\x84\x6d\xfb\x55\x89\x34\x4b\xbb\xb0\x25\x60\x24\x1b\x74\xb9\x93\xa2\x5b\xef\x50\xfb\x1e\x73\x19\x08\x6e\x6a\x23\x98\x63\x00\x83\x4e\xd2\xdb\xa9\x8a\x16\x87\x21\xc2\xf7\x84\xdf\xb8\xd3\x80\x0d\x06\xa0\x54\xae\xf1\x4d\x17\x72\xb6\xc5\x74\xaf\x25\x63\xd1\x93\xef\x2e\x51\xbd\xc6\x2d\x2a\xbc\xe2\xee\xbe\xad\xa7\x92\x03\x49\x8e\x66\x86\xc2\x87\xf3\x7b\xd8\x8a\xeb\x16\x6f\x7d\xff\xc3\xe6\xad\x02\x94\x11\x7e\xf6\xee\x9d\xa8\x47\x9e\xd8\xa1\x6f\xe9\xbe\x24\x6d\x26\x68\x04\xf2\x96\x58\xdb\x75\xe7\xa0\x87\x3b\xe7\x1d\xc7\xd4\x07\xe3\x9f\xab\xd6\x6f\x98\x8b\x45\x74\x77\x42\x7f\xad\x81\x30\xf0\x9a\xb6\x65\xf1\x59\x7c\x90\x46\xe7\x37\x3a\xf9\xa8\x35\x2a\x86\x83\x0c\xb9\x2a\x80\x44\x88\x70\x0f\xe6\x89\x19\x24\xfe\x2a\x72\x01\x73\x3d\x95\xe5\x91\xee\x0a\x1f\xef\x1c\x26\x36\x07\x8d\x37\x0e\x7a\xd3\xb6\xa9\x44\xfe\xd2\xcf\x2b\x30\xab\xa2\xd5\x6f\x34\x95\xb2\x84\x9c\x03\xbb\x61\x4f\x48\xbc\x4e\x50\x7c\x39\x5a\x6c\x35\xd3\xee\xd4\xc7\xbe\x8e\x68\x0f\x2d\x45\xa3\x10\xb1\x87\xeb\x88\xcf\x0e\x8e\xd4\xde\x7d\x37\x24\x6a\x50\xa6\x36\x7b\x97\xee\x37\x84\x32\x2c\x0b\x71\x13\x1a\x28\x31\x98\xda\x48\x04\xde\x75\x1d\xcf\x70\xc4\xba\xd0\x0d\xd9\x8d\x87\x3a\x69\xdd\x1a\x09\xcf\x69\xdd\xfa\xd7\xae\x60\x35\x00\xb6\xa4\x62\x25\x80\x98\xd8\xb6\x6b\x85\x29\x35\x94\xe2\x08\x82\x9b\x52\x28\xfa\xe2\xfa\xfc\x39"}, +{{0x16,0x3b,0x0c,0xb6,0xa1,0x2e,0x8f,0x07,0xb0,0xc2,0x9d,0x6a,0x63,0xf6,0xa6,0x52,0xce,0x49,0x72,0x70,0xb5,0xe4,0x6f,0xcf,0x83,0x3c,0x99,0xbd,0x84,0x3f,0x8c,0x64,},{0x68,0xa3,0x5d,0xe4,0xba,0x6f,0x0f,0x82,0xec,0xf4,0xb1,0xe0,0xdf,0x8e,0x24,0xcb,0x4f,0x18,0xf2,0x10,0x3f,0xf0,0x4d,0xc1,0xb5,0x33,0x39,0x91,0xb6,0xd3,0x14,0xba,},{0x17,0x73,0x8f,0x57,0x26,0x55,0x07,0x80,0x65,0x1d,0x60,0x19,0x9f,0xda,0x39,0xd9,0xc4,0x76,0x8d,0xb5,0x91,0x7e,0x32,0x39,0x36,0x31,0xc5,0x4a,0x41,0x9d,0x59,0xf1,0x8e,0xf9,0x60,0xdd,0xd4,0x39,0x38,0x0d,0xab,0xc3,0x14,0x76,0x1b,0xd0,0xcd,0xb5,0x7c,0xce,0x48,0x1e,0x61,0x09,0xfe,0xd0,0x95,0xde,0xa6,0xe8,0x65,0xaa,0x67,0x0b,},"\x56\xa1\x60\x3f\x72\x5b\xe0\x76\x13\x05\x8c\xdb\x3a\xcd\xc5\x23\x54\xe3\xbb\x1f\xf2\xbe\xd1\x3f\x89\x51\x75\xb1\x5c\x8c\x5a\x90\xff\xbe\x46\xb1\x1a\x06\xcf\xe3\x62\xda\xdf\x73\x23\xc9\x40\x41\x72\x55\xaa\x7a\xa5\x43\x12\x10\x3e\x71\x46\x3d\xaa\x0b\x5c\xda\xeb\xd0\xbe\x72\x3c\x73\x22\x73\xe3\xc3\xf5\xbf\x7a\xa3\x51\x9d\x69\xdf\x6f\x47\x70\xda\xa1\xdf\x82\x80\xbb\x3c\xd2\xc7\x14\xac\x03\x02\x00\x54\x65\x79\xf5\x6c\x60\xb9\x1a\xe1\x1f\x4c\xf8\x74\xa3\x5f\xc5\x9b\x35\x4b\xed\x80\xf5\x6e\x11\xa6\xcd\x62\xa8\x8c\xe6\xb4\xf6\xbf\x39\xd6\x4c\xe3\xd8\x04\x09\x82\x5f\x90\x16\x2c\x3d\x96\xd1\x0e\x47\x86\x07\x36\x5f\x7a\x24\x1e\x71\xaf\x98\x00\x42\xfe\xc2\xd6\x88\x91\xe0\xc8\xa3\x7c\x58\xec\x4e\x60\x0f\xd5\x81\xe7\x90\xb0\xaa\xe8\xe0\x9f\x35\xd4\xcc\x18\x76\xdf\x43\x4b\x80\xee\xe0\x53\x69\xf8\x48\xfc\x49\x30\x57\x7d\x16\x84\x27\x58\x88\xf3\x25\x9c\xb4\x73\x76\xc5\x16\x9c\x99\x37\xf8\x55\xa9\x6a\x9e\x74\x8a\xd0\xa6\x9a\xe4\xab\x2f\x2f\x17\x44\xa3\x92\xf9\xac\xc6\x20\x99\x75\xb7\x84\x98\x4c\xb1\x2f\x98\x29\x2c\x36\xa5\x32\x21\x99\x4a\xbc\x56\xf9\xa6\x6d\xae\x45\x60\xb7\x93\x56\xff\x47\xe1\x28\xc0\x79\x6a\x7f\xb0\xe0\xbb\xc9\x60\x0a\xf4\x8e\x49\xea\xa9\x42\x7c\xf6\xeb\x66\x20\xb1\x0c\xd2\xc0\x85\xb0\xb3\x42\x00\x4d\x5b\x0d\x3e\xdc\x11\xd2\x92\x42\xa4\x63\x87\x80\x76\x2c\x9d\xc6\x06\x9b\x66\xbd\x84\x97\x3b\x50\x11\x96\x1c\xe5\x6d\xb5\x8b\xda\xf4\x8e\x6b\xe1\x2a\xb9\xad\x24\x41\x62\x97\x00\x4d\x02\x91\x4b\x95\x9f\x54\xe0\x92\xf8\xcd\x43\x65\xfa\x6a\xb7\x8d\xdb\xff\x4c\xe8\xda\xd4\xe2\xf5\x3a\x05\xc0\xcc\x49\x9b\xfb\x47\x81\x4a\x27\x13\x55\x1d\xcd\x19\xd4\x47\xf6\x27\x57\x6e\xa4\xea\x4b\xbd\xa8\xba\xe1\x8a\x64\x65\xce\xd7\x47\xea\x17\x18\x0b\x00\x9f\x01\x21\x21\x60\x48\x2b\x04\x33\xaa\xc6\x8e\x67\x64\x4d\x00\xf4\x1f\xdf\x99\x90\xb9\xe1\x11\x17\x63\x4d\xeb\x13\x9b\x1a\x40\xad\x3f\xce\x42\x99\xa1\x7f\xe1\xdd\x22\x53\x01\xc7\xf8\xd8\x01\x0a\x79\x6d\xc7\x9c\x13\x30\x7d\x3f\xf9\x92\xa8\x8b\xe6\x64\xd4\xc8\x86\xd6\x8c\xa9\xe4\x47\x0c\xfb\xe6\x3e\xbf\xfc\x42\x40\x10\xe3\x72\xb6\x92\x2a\xa9\x5c\x80\x1d\x1e\x94\x06\xda\x4b\xc1\x88\xca\x82\x06\x64\x05\xbc\xdb\x3e\xaf\xc9\x37\x62\x9b\x32\x63\xdc\x7d\x50\xee\x52\x78\xcc\xec\x6f\x11\xd5\x51\x7f\x56\xbc\x26\x9c\x87\x36\x91\xe7\xeb\x53\xfa\xef\xf0\x75\x64\xab\x46\xb4\x03\xf1\x5d\x9e\x0e\x69\x24\x86\xee\x09\x8e\x7b\x51\xb4\x28\x13\x46\x9b\x82\x35\x04\x22\x33\xca\x3f\x9c\x4f\x8f\xf2\x4a\x57\x1f\x47\xe0\xad\xf9\x14\x4a\xea\x48\x8a\x2d\x2d\xd0\x01\xe3\x1f\xc9\x61\xe0\x5c\x3e\x85\xf0\xd9\x81\x40\x7c\x87\x31\x58\xbb\x0d\x35\xba\xfe\x4b\x60\x42\x2e\x67\x55\x1e\x97\x01\x65\xce\x3f\xc5\x99\xd0\xfc\xc9\x2b\x16\xac\x36\xa9\x2b\x2c\x1d\xc6\xb3\xf0\x33\xfe\x31\x0c\xd1\x96\xda\x04\xa4\xe6\x39\x03\x11\x77\xcd\x27\xd7\xc2\xfb\xec\x65\xa0\x0b"}, +{{0x8c,0x83,0x93,0x81,0xb6,0xa7,0xce,0x26,0x49,0xc1,0xea,0x46,0x4a,0xe3,0xc2,0xd3,0xfd,0xb1,0xec,0x66,0x6d,0x7b,0x4b,0xe4,0xe2,0xa9,0x41,0xab,0x6d,0x65,0x57,0xa7,},{0x5c,0x72,0x4a,0x30,0xc6,0xfb,0x32,0x81,0x53,0x43,0xa8,0x0d,0xde,0xe6,0xee,0xe5,0x44,0x51,0x64,0x18,0xea,0x95,0xe1,0xba,0xc8,0x0a,0xfc,0x80,0x40,0xd6,0x3f,0xc6,},{0x5d,0x21,0x10,0xd1,0xd2,0xf3,0xed,0xd6,0x83,0xbd,0xfd,0xbe,0xa3,0xff,0xa7,0xcf,0x55,0x28,0xa4,0x0b,0x8b,0x3d,0x8d,0x8c,0x9b,0xfd,0x22,0xae,0xac,0x28,0xba,0xd4,0x71,0x66,0x6e,0x06,0x2f,0x7d,0x38,0xce,0xda,0x8b,0xb3,0x73,0x97,0xa1,0xc5,0xc3,0xf7,0x33,0xb5,0x37,0x96,0x70,0x45,0x70,0x64,0x78,0x43,0x7d,0x4d,0x18,0x7a,0x0a,},"\xcb\xcf\x89\xc3\x54\x89\x64\xc3\x8d\x70\xfd\x8f\x68\xe8\xec\xe3\x6c\xc3\x97\x55\xc9\x71\xd1\x4d\x7e\x05\x6f\x39\xb0\x23\xef\x16\x6d\x17\xf2\x43\x85\x22\xf0\x10\xd6\xd8\x35\xd8\x86\xe7\x1f\x47\x4c\x67\x27\xa4\x22\x1f\xd0\x3a\x75\x74\x57\x82\x89\xed\x54\x93\xac\x4c\x09\x47\xe3\xf4\x28\xd8\xfe\x06\x40\x06\xa2\x56\xce\xf2\x18\x11\xd7\x26\x78\xf5\xdf\xc6\xba\x66\xac\x29\xec\xd1\xb3\x2f\xf5\x55\x7c\xb0\x8c\x5f\x13\x05\x59\x21\x7a\x04\x13\xb7\x59\xc2\x4d\x83\x38\x8a\x2b\xb9\xb2\x9b\x6b\x91\xd1\xf3\x10\x1e\xd6\x25\x21\x1e\x4d\x73\x80\x51\x93\x47\x8c\xf9\x95\x39\x6c\x10\xb1\xc5\xaf\xfa\xcb\x00\x89\x9d\xa0\x4e\x3c\xce\x19\x3b\x49\x4e\x2a\x93\x3c\x4e\xeb\xe0\xa3\x7b\xfb\x8f\x1b\x83\x71\xbd\xe5\xfd\xa0\x9e\x80\x4e\x94\x0f\x34\x48\x96\xa5\x29\x46\x7a\xde\xe4\x5a\x8f\xeb\xf8\x5a\xb0\x36\xca\xb8\x80\x14\x3b\xe4\xf5\x9b\x77\x41\xd8\xe4\x50\x27\x8b\x06\x36\x55\x78\xd4\x0b\x19\xdc\xec\xc6\xe1\xee\x3d\xa3\x4a\xb2\x90\x13\xfa\x3a\xf7\x72\x92\x72\x96\x21\x10\xe3\x85\xab\x9a\x02\x2f\xae\x41\x46\xf8\x97\x16\xf7\xba\xb9\xd3\xdc\x68\x2f\x4f\xac\x77\x36\xd3\xe0\x89\x73\xc6\x85\xbb\xb2\x75\xbb\xf8\xf2\x17\x41\x9e\x5c\xae\x02\x19\xeb\xa5\x16\x6a\x5d\xe1\xb1\x1e\x3f\x9a\x90\x8b\x8a\xc7\xe6\x5b\xcd\x62\x3f\x8c\x18\xbb\x02\x4f\x60\x5d\xcb\xac\xda\x79\x0d\x83\x62\x95\x74\x44\xa9\x5c\x13\x0a\x37\xee\x9d\x56\x3d\x0c\xbb\x4c\xb2\xb0\xff\x71\x59\x1d\x93\x90\xb6\xc8\xfc\x28\x75\x3a\x0e\x40\x2d\x64\x87\xcf\xac\x60\x71\x35\x92\x7d\x89\x26\x75\x12\xb3\x4f\x87\x70\x57\xd9\x27\x1b\xcc\xc0\x24\xdf\xed\xcc\xc6\xc3\x2e\xdf\x75\xc8\xb7\x55\x1c\xdf\x80\x15\x4e\xe8\xe0\x8a\x0c\xc4\x30\x44\xe1\x03\x6b\xae\x01\x7e\xb4\x8b\x65\x02\xc7\xa9\xd6\x0c\x8b\x37\x0c\xf3\x79\x9c\x46\x4f\x96\x4a\x69\xee\x65\x95\x01\x22\x3e\x78\x9a\x64\x97\xb6\x34\x96\xdf\x1a\xda\x2e\x80\x8d\x24\x34\xfc\x8b\xb9\x79\x4e\x5e\x2a\x20\xbb\xf4\xd6\x92\x5c\xb3\xc5\xbb\x14\x84\x2f\x19\x20\x09\x05\xba\x93\x54\xe0\x0d\xc3\x3c\xff\x5b\x42\xd4\xe9\xd9\x66\x8b\x34\xe6\x61\xd4\x4b\xef\x76\xfe\xfe\x2e\xd5\x1f\x94\x42\x3a\x93\x3a\xc9\x4f\x15\x23\xbf\x37\x82\x3a\x23\x8d\x61\x6c\x6b\x17\x97\x34\x41\xe3\x5f\x94\x05\xa0\x4d\x99\xea\xa8\xf5\x04\x53\x4c\x8b\x5f\xa5\xe8\xe3\x35\xc7\x43\xbc\xf2\x1f\x5d\x49\x2b\x71\x12\xe0\x0f\xd8\x64\x2c\xb1\x2b\xfe\xc8\x49\xdf\x62\x12\x0d\xbb\x06\xbf\xc2\x94\x6a\x56\x01\xe2\x5b\xe7\x50\x11\xc6\xf0\x0c\x65\xd3\x5f\x44\xa4\x6a\xf9\xe4\xf7\x80\x9e\x57\x89\xa3\xa6\x1b\xa0\xa3\xb2\x13\x89\x04\x97\x29\x6c\x81\xe4\x2e\x88\xf0\xec\x0f\x5d\xef\xc1\xf5\xd3\x9f\xf2\xa4\x8b\x7e\x30\x26\xc9\xe5\x47\x20\x2e\xdc\x7e\xb7\x38\xc3\x4a\xd3\xa1\x5d\x37\x3e\xf8\x2a\x4c\x1d\x18\x1f\x28\x5a\x98\xbd\x33\x14\xc2\xc1\x94\x7c\x9e\x2c\x60\xac\xa5\x17\x50\xee\x7f\x94\x3c\xaf\x0c\x4e\x1e\x5c\x7d\xf7\x29\x1e\x97\x3b\x1f\x93\x6b\x73\x70\x76\x19"}, +{{0xaa,0xbb,0xb2,0xef,0xed,0xb5,0x99,0x42,0x4a,0x5f,0x3e,0x08,0xf9,0x0f,0xa8,0x82,0x6c,0x5c,0x92,0x17,0x0b,0xe5,0x01,0xa1,0x18,0x1f,0xe8,0xe8,0xdf,0x97,0x4e,0x0e,},{0xce,0x73,0x19,0xef,0x88,0xb2,0x42,0x42,0x06,0x66,0xca,0x69,0x7b,0xa8,0x50,0x1d,0x27,0x4e,0xc4,0xa5,0xdc,0xf8,0x44,0x59,0x66,0x08,0xb9,0xdd,0x5a,0x8a,0x3a,0xcd,},{0xa0,0xb1,0x9c,0xfa,0x6c,0x80,0xde,0x77,0xbf,0xcd,0x32,0x10,0x30,0xbf,0x8c,0x03,0x89,0x3e,0x2b,0x21,0xac,0xe6,0xc6,0xba,0x1f,0xf7,0x40,0x8e,0x6f,0xf0,0x7d,0x84,0x7e,0x6b,0x2b,0x68,0x8d,0x4f,0xd5,0x1a,0xa9,0x32,0x70,0x1d,0xb6,0x40,0x2e,0xf2,0x23,0x22,0xe6,0xe9,0xfc,0x7e,0x32,0x0a,0xbb,0x4d,0x24,0xe1,0xac,0xc6,0xcf,0x06,},"\xfc\xc1\x5c\xc5\x79\x70\x56\x9e\x9c\xcf\xa5\xa7\x78\xfc\x7a\xed\x71\x97\x8a\x3f\x56\x24\x57\x7b\x6f\x57\xfa\x3f\x16\x7e\xa2\x23\xef\x31\x76\x4c\x48\x8d\x05\x9d\x06\x53\x1d\x01\x6b\xcb\x17\xd5\x44\xd4\x69\x77\xaa\x24\x1f\x8e\x07\xaf\x47\x87\xa0\x81\x0f\x98\xd7\x66\x46\x0c\x08\x41\xad\x81\xb8\x8f\x4d\x5d\x81\x64\x48\x5a\x12\x58\xa9\x46\x22\xc5\x49\x24\x28\xd6\xd5\x75\x94\x37\x15\x76\x6c\x2b\x0a\x86\x5b\xed\xba\x16\x7d\x5d\x34\x0e\xdb\x57\x9c\x47\xaa\x32\x45\x9b\x8f\xc9\x8a\x79\xbb\x0b\xed\x1c\x96\x0b\x4c\xcb\x7f\x2d\x4b\x56\x81\xa2\xa7\x0d\x50\x5b\x85\xb8\x1e\x3d\x99\x67\x27\x14\xe4\xea\xb4\x1f\x3a\xb0\xca\x87\x4f\x41\x71\x86\xfe\xb6\x9e\xd1\x3f\xb9\x11\xf4\x9d\x15\x84\x75\x8b\x2d\x18\xb4\x67\x3e\xdf\xae\x49\x5e\x68\xda\xd5\x13\xa7\xac\x0d\x47\xb2\x75\x3c\xb4\xed\xa7\x8f\xb4\x31\xf0\x4d\xda\x8f\xe8\x03\x0d\x7b\xb4\xe8\xdb\xcc\xb9\x69\xd7\xf5\x80\xd9\xc1\xef\x93\x5d\x07\x4d\x7a\x41\xd1\xf8\xb9\xdc\x45\xc9\xa2\xe4\x10\x6a\x55\x29\xa9\x8b\x95\x52\x9a\xb0\xed\xea\x0b\x57\x22\xdd\x68\x6f\x5a\x7f\x3c\xd8\xfb\x26\x24\xab\x26\xc4\x2d\xf1\x1f\x51\x0a\x10\x3d\x8a\x92\x98\x30\xad\x85\xf5\x21\x24\xe3\xd5\x82\x7b\xa6\x0b\xfb\xcd\x73\x6c\xb6\xc5\x90\xee\x77\x7e\xad\x7a\xa2\x22\x4d\x7a\xe4\x6d\x25\x7a\x90\x40\x72\x47\x96\x0c\x9c\xb0\x38\x60\xae\xaa\x7f\x54\xc1\xa8\xe1\x11\x60\xd1\x1b\xb4\x73\x06\x5e\x19\xb7\x07\x21\xc8\xf0\x72\xe1\x90\x9d\x53\x9e\x9a\xc9\x41\x85\x90\x4b\xbb\xfe\x54\x87\x37\x54\xae\x1c\xa7\xbc\xed\x6f\x40\x56\x1a\xf4\xb5\x05\xf0\x3a\xc9\x72\xa6\xf0\xbf\xa7\x3b\x5f\x83\x2f\xe2\x3b\x89\x8b\x2b\xbb\x05\x74\xa6\x66\x2e\xe9\x3b\x3b\x36\x0d\xa1\xec\x7e\x83\x8e\xb2\xc7\x7c\x7c\xb7\xfc\x16\x4f\x7c\x46\x27\x01\x04\x89\xc8\x58\x90\x07\x52\xc9\x2d\x9d\x75\xad\x54\x71\x67\xe4\xbd\xd1\x1a\x07\xd2\x8b\x65\x1a\xa3\x0f\x16\xa8\x50\xe0\x60\xdd\x28\x82\xfb\x82\x09\x19\xa3\x98\xe8\x05\xeb\x63\x69\x9f\x4f\xf5\x95\xf9\x91\x52\x47\x31\x64\x1e\xce\x25\xfb\x3f\x8e\x89\xad\xa5\x01\x19\x2b\x1e\xdd\xae\xcb\xac\xc8\xb8\x98\x52\x8f\x2d\x5b\x33\x12\x69\x4f\x5e\xc2\xdc\x91\x42\xe1\x51\x3f\x77\x7a\x5c\x83\x34\x09\xc1\x71\x63\x3f\xf9\xfa\x26\x09\xd0\x49\x7f\x5d\xf4\xfb\xf4\x8e\xf2\xb7\x7d\x55\xe2\x55\x19\xd2\xee\x79\xb5\xfe\x9d\x8f\xa4\x60\x00\xde\xcd\xb4\xf2\x5d\xfb\x3f\x2b\xaf\xb1\x9f\xbe\x2c\xbd\xac\x00\x2a\x35\x9a\x95\x4b\xc6\x9b\xdf\xe2\xfb\x36\xad\xfd\x9a\x15\x09\xf3\xe3\xa4\xc6\xb1\xf3\xf3\x6e\x7c\xf8\x0d\x58\x3d\x44\x0f\xf2\xa1\x44\x64\x30\x98\x97\x4d\x71\x49\x3e\xcb\x64\x17\xc0\xb8\x06\x5b\xd2\xc2\x1c\x1e\x34\xaf\x09\x24\x3f\xb4\x9e\x9d\x35\x29\x7e\xb0\xa5\x2d\x56\xdd\x27\x0f\xea\x6d\xc5\xc0\x80\xa0\x55\x99\xf7\x85\x81\xe9\x0f\xd8\xcc\x4c\xd1\x1a\x50\x5e\xdd\xe8\x4b\x89\x2d\x89\x53\xbd\xbb\x23\x79\xd3\x3a\xad\x64\x65\x8a\xe2\x06\x07\xdd\x35\xb0\xbf\x3a\x26\x37\xd2\x0c\x3f\x86"}, +{{0xc2,0xe0,0x74,0xfa,0xa2,0x34,0xe9,0x9a,0xb2,0x0a,0xdb,0xbe,0xae,0x11,0xb8,0x10,0x97,0x23,0xb7,0x08,0xc5,0x45,0x86,0xdf,0x65,0x2b,0x40,0x2c,0x35,0xcd,0xd1,0x27,},{0x5e,0x52,0x4e,0xce,0x1c,0x69,0x6e,0x70,0x5a,0x35,0x14,0xdd,0x00,0x82,0xb8,0x40,0x79,0x5a,0x59,0xc3,0x6a,0x96,0xcb,0xc4,0x82,0xbf,0xf5,0xab,0x4e,0xf5,0x15,0xd1,},{0x65,0x7c,0x38,0x26,0xb3,0x48,0x3f,0xd4,0x2a,0xb6,0xdf,0x86,0x9d,0x1b,0x77,0xa8,0xc4,0xdf,0x67,0xa6,0xa5,0x90,0xc7,0xc6,0x77,0x29,0x69,0xe3,0xdf,0x33,0x12,0xae,0x06,0x54,0xfb,0x83,0x84,0x7a,0xf2,0x21,0x93,0x5a,0x05,0x12,0x29,0x16,0x36,0xec,0x05,0x95,0x70,0x08,0x79,0xeb,0xdb,0xa8,0xa1,0x46,0x7c,0x53,0xd4,0x0c,0x23,0x06,},"\x31\x29\x03\x38\xe4\x6d\x1c\xc2\x5c\xe9\x9c\xba\xcc\x40\x16\x03\x41\xb7\x85\x82\x3c\x82\x3c\x4a\xb9\xba\xee\x3b\x61\x25\x79\xf1\xc0\x11\x71\x67\x96\xe5\x6e\x26\x93\xf6\xdd\xad\x43\x92\x2a\xa7\x84\x7c\xbb\x41\x48\x10\x16\x51\xbb\xe6\x2d\x50\xbe\x90\x82\x5e\x8e\xab\x77\x7a\xa4\xb8\x02\x6d\xc5\x38\x5a\x97\xd3\xdf\x76\x16\x01\x91\xf9\x22\xcd\xd2\xf0\x7b\xa5\xf8\x5e\x95\xf4\x5d\xb2\x29\x28\xf9\x07\x34\xff\x52\x0c\x44\xdc\x8f\xe3\x90\x3b\x4c\x51\xcd\x23\xe0\x64\xf0\x1c\x82\x9e\xc7\x4f\xbf\xfe\x25\xfd\x0d\x36\x9d\x27\x65\x74\x0f\x43\x85\x6b\xd7\x39\x8a\x19\x11\xad\x74\x98\x36\x16\x0f\xd9\x8d\x04\xb2\x8e\xe8\x7e\x11\x1d\x40\x71\x8b\x5a\x16\x6f\x05\xc9\xa4\x71\xa4\x15\x66\x55\x70\x69\xf7\xa1\x4d\xe9\x88\xbb\xbf\x67\x77\x52\x1f\xcb\xa6\xdd\x65\xde\x4c\x06\x67\x4a\x11\x85\x3a\xf8\x3a\xcc\xb7\x0f\xb3\x28\xdd\x8f\xd6\x10\x5a\x7d\xf5\x26\x9c\x9f\xae\xc8\xd9\x00\x14\x7e\x92\x8d\x97\x0c\x36\xcd\x83\x4b\xd6\x05\x4f\x70\x65\x0d\xfa\xce\x94\xb7\x62\x9d\x16\xe3\x70\x3d\x76\x6c\xe7\x63\x8d\x0a\xd1\xe1\x7b\x77\x46\x9b\x95\x8d\x2b\xa2\xa1\xe6\x31\xa1\x63\x5e\xfd\xcb\x00\x6e\xbc\x6e\x5d\x8b\x9f\xaf\x7e\x5f\xb9\x89\xdc\x08\x96\xc5\x61\xa2\x6f\x3c\x25\xf0\x55\x71\x6b\x36\x71\x38\xea\x5d\xa1\xf8\x1d\xc7\x2c\xff\x7a\x55\xaf\xae\xe5\x83\x9e\xf5\xaa\x82\x2b\x29\x70\xaa\x18\xa8\x98\x21\x63\xbf\x5e\xed\x1b\x67\x7c\xca\xac\x12\x24\xff\x6c\x6c\xf2\x56\x37\x47\x80\xae\x65\x80\x3b\xf5\xc6\xe2\x3c\x80\xba\xcd\x76\xec\x3e\x2d\xdd\x3a\xb7\x19\x97\x50\x64\x48\xe1\x9d\xb1\x98\xef\xad\xc9\xf7\x57\x49\x1f\x1b\x09\x72\xc8\x2d\xb2\x94\x10\xe1\xe8\xbb\x67\xbb\xb2\x3d\x53\x56\x3b\x88\x07\xe5\xe0\xc2\xe3\x2e\xe5\x96\xb5\xb4\x40\x23\x28\xf9\xe1\x79\xe9\xce\x85\x6d\x3b\xd1\x99\xd5\x8d\xe6\xc5\xc2\x52\xe7\xa6\x12\x4d\x81\xfc\x9e\xea\xf2\x3d\x34\x7d\x2a\xb8\x89\x17\xaa\x68\x44\x50\xdd\x58\x30\x35\x16\xc1\xa4\xd2\xbd\xcd\xde\x22\x0c\x9a\xe3\x79\x0f\x29\x8d\x7d\x38\x4b\x70\xc2\xfe\x25\x88\x07\x84\x8f\xc3\x53\x20\xb5\x78\xb3\x35\x03\xb7\x5f\x38\xa1\xdf\x63\x0b\xd3\x3e\x6a\x85\xa4\xdd\x4d\xf9\xf6\xe5\x5a\x6e\x68\x67\xc7\x38\x01\xe5\x93\xe1\xd5\x91\xdb\x89\xba\x9a\x9a\xf0\xfc\x29\x2e\x06\xfb\x51\x5a\xc8\xa5\xe8\xe3\x43\xa8\x21\x33\x55\x75\xba\x48\xfb\xaa\xe3\xfb\x12\xde\xea\xae\xe6\x0f\x4b\x3d\x31\x7e\xc0\xa5\x54\xdd\xd4\x25\xc8\x49\x32\xc2\x7a\x7a\x12\xf2\x9d\x63\x71\x51\x07\x83\xbd\x75\xe6\x0e\x2f\x6d\xa2\x00\x52\x06\x9e\xd7\x1e\x69\x5a\x94\x31\x82\x19\x3c\xb6\x85\x1a\x7d\x2f\xa3\xc6\x66\xc1\x93\x02\x80\x15\xac\x8b\x7e\x7d\xaa\x6c\x52\x04\xf7\x7a\x62\x32\xb8\x8b\x4a\xbf\xfc\x53\x62\xfd\xe7\xde\xc3\x6b\x9d\x45\x48\x80\x84\x92\x83\xb1\x15\x63\x39\xea\x2e\x8c\x3b\x10\xe5\x1b\xfa\xbd\xf7\x25\x78\xc7\x26\x41\x9a\x38\x54\x2c\xf8\x64\x9d\xf9\xa0\x90\x9f\x58\x2d\xeb\xad\x5f\xd8\x9d\x8c\x81\xf8\x3d\x9e\x42\x3e\x75\x03"}, +{{0xb9,0xda,0x4e,0x6a,0xf0,0x7e,0x39,0x8a,0xb4,0xd2,0x17,0x52,0xa3,0x2c,0x8f,0xfa,0x9b,0xe0,0xc3,0x10,0xd3,0x50,0x59,0xfb,0x66,0x1b,0xd7,0x3a,0xfa,0x97,0xe2,0xa8,},{0xf8,0x62,0x80,0x3c,0x96,0xcc,0x42,0xad,0xc8,0x25,0x28,0x84,0x54,0x72,0x30,0xb9,0x70,0x04,0x7b,0x7e,0x5d,0xa9,0x96,0x26,0x0c,0xcc,0x02,0x40,0xab,0x71,0xa6,0xec,},{0x62,0x5e,0x1f,0x42,0xc8,0x74,0x34,0xa2,0x5d,0x62,0x2d,0x80,0xd1,0x25,0x32,0x80,0x6a,0xfb,0x25,0x09,0x33,0x24,0x49,0xe6,0x96,0xb6,0x5e,0x1e,0x58,0x88,0x50,0x8f,0x11,0xc4,0xac,0x25,0xf5,0x9b,0x8d,0x94,0xd0,0xbf,0x27,0xe4,0xc8,0xd1,0x86,0x70,0x07,0xc4,0x08,0xda,0x57,0x30,0x82,0xdc,0xf1,0x9d,0x15,0xa9,0xd5,0xcc,0xcb,0x0c,},"\x6b\x95\xaf\x0e\xeb\xb6\xa0\x8a\xfa\xda\xa1\x96\x21\xf7\x6a\x83\x9b\xe8\x08\x51\xc6\xdd\x31\x5e\x82\x76\xf5\x01\x99\x5d\x4c\xe6\xd1\x34\xdf\x5e\x79\x8e\xd5\x17\xa2\xf0\xe6\x2a\xa1\xd6\xc9\x8c\x36\xef\x14\xbb\x1e\x5d\xdf\xc9\x8d\x5a\x7f\xcc\x81\x14\x0a\x13\xc2\x0d\x2c\xa0\xc4\xb4\x0e\x6e\x6a\x03\xee\xd8\xc8\x99\xf9\xd1\xf7\x92\x46\x81\x52\x19\x9f\x4b\x95\xa4\x32\x66\x89\x47\xa5\x1d\x7b\x8e\x10\x4d\x8d\x1f\x12\xaa\xcd\x96\x7e\x08\xb0\x8c\x41\xc3\xc8\xca\x3f\xee\xda\xa5\xb8\xb6\x3b\xce\xc0\x61\x38\x64\xd9\x53\xd8\x11\x43\xec\x81\x42\x5b\xde\x29\x16\x4a\x08\x76\xf2\x3f\x37\xac\x9a\xc9\x47\x36\x72\xce\x11\xa0\x8b\xd5\x47\x6f\x6f\x66\xd6\x65\xe9\xad\x61\x7e\x34\xeb\x32\xee\x56\xff\xa4\x59\xf2\x0d\x1b\x93\x53\xd7\x82\x12\x98\x54\x57\x50\xc6\xef\xf3\xe7\xd4\x07\x3d\xc3\x18\x5e\xde\x03\x91\xcc\xe0\x57\x5f\x8b\xa6\x37\xd8\x00\x06\x8d\x9d\x7e\x54\x03\xba\x70\x38\xd2\xdb\x77\xda\x14\x47\x84\xf2\xe8\xea\x76\xae\xdf\xe5\x21\xe7\xdc\x6a\x67\x4e\xde\x35\x57\x95\x95\x99\x3f\xb2\x0d\x44\xb4\x05\x27\x83\xf5\x6c\x8c\x0b\xbd\x04\x40\xb6\x9e\xab\xde\x84\x46\x8d\xd1\x3c\x67\x1f\xb1\xbb\xd5\xcb\x02\x2c\x2a\x4f\xcf\x35\x42\xd8\xb3\xbb\x51\x8e\x5a\xde\xbd\xdc\x84\xe7\x14\xb1\x3b\xe5\x2c\x56\xb2\x82\xb4\x2a\xc0\x89\x2a\x54\x59\x28\x1b\xe7\x16\x07\x29\xf4\x11\x2c\x7d\x99\xdf\x9b\xe5\x43\x4f\x82\x3a\x9c\xe0\x50\x17\x89\xde\x1d\x55\x0a\xd5\x0b\xb1\x8c\x8d\x89\xa3\x36\x68\x27\x0b\xff\x7b\x91\xff\x11\x8f\x5c\xd9\x90\x9a\xdd\xde\x90\xc0\x24\xa3\xad\x71\x39\x15\x17\x46\x74\xf2\x8a\xaa\x9f\x94\xa3\x22\xba\xa5\x43\x73\x8e\xda\xb4\x97\x33\x12\xb5\xbf\xa1\x21\x55\xde\xbc\xee\x16\x3c\xfe\x2b\x04\xac\x9c\x12\x2a\xc8\xa4\xe1\xbc\x41\x8c\x14\x95\x5d\x96\x10\x45\x5b\xd9\x45\xe9\x79\x3b\x91\x62\x67\xc9\xc5\xf9\xe5\x3a\xc0\x45\x18\x92\x6e\xc9\x8e\xcb\x84\xa4\xf0\x44\x5d\xcb\x12\x36\xc7\x6c\x3a\x67\x8c\x69\xab\xe4\xe9\x2c\x22\x97\x1d\x62\x21\x72\x01\xa1\xbd\xf0\x5c\x04\xdf\x84\x20\xa3\xde\x6a\x91\x7a\x85\xe7\x1e\x2b\x97\x25\xe7\x7b\x52\x29\x15\xd4\xc9\x94\x60\x77\x63\x7c\x2d\x88\x13\xf0\x10\xb9\x49\x1c\xf0\xed\xdc\x3d\x46\x68\xcc\x0f\x8b\xc8\xa6\x83\x57\x9b\xe5\x43\x93\x4d\xa2\x85\x3a\x16\xf5\x71\x57\x24\xf7\x79\x81\x9f\x44\x43\x9e\x1d\xeb\xca\xa4\x27\x0d\x9b\x85\x94\xba\x4c\x86\xe1\x06\x3b\x3c\xe4\x79\xd7\x1a\x54\x09\xbe\xf2\x7e\xf4\xe5\xc1\xd1\xc9\x6e\x8b\xe1\x38\x65\xaf\x7b\xb4\x3f\x09\x16\x2c\xcb\xc8\x3a\x2c\xa9\xe9\xb8\xa2\x32\x4e\x6d\x99\x65\x75\xee\xfe\xd3\x7e\xf4\x99\x08\x18\x57\x38\xb8\xea\xe4\x3f\x8a\xdc\xa3\x30\xc9\x9b\xc6\x6c\xc1\xfd\x52\xc5\x30\xd7\x37\x1c\x60\x86\x9c\xe4\x2c\x19\x7d\xca\x0a\xd1\x28\xb8\x5f\x61\xc8\x75\x8f\x0d\x54\x2f\x3d\x32\x98\xb6\x5e\x93\xc6\xe8\xa6\x8f\xa0\xe9\xa1\xd5\xe8\xc5\xfe\xc8\x05\xb8\x3a\xff\x43\x90\xe1\x15\xeb\x64\xf3\xf0\x78\xa0\xb9\xb6\x6c\x27\x38\x43\xfc\x6c"}, +{{0x14,0x3f,0x7b,0x42,0x47,0xd5,0x49,0xf6,0xb7,0xc0,0x91,0x72,0x66,0xc5,0x0f,0x96,0x2c,0x28,0xa2,0xea,0x24,0x76,0x2f,0x53,0x7a,0xa0,0x6a,0xd1,0x5e,0x40,0xb3,0x5a,},{0xc9,0x95,0x9f,0x90,0xa2,0xd5,0xfe,0xac,0xba,0xe2,0xc4,0xc8,0x03,0xde,0xd5,0xde,0xab,0x86,0x98,0x76,0x37,0x06,0x43,0x37,0xaa,0x2a,0x0b,0x0d,0xde,0xf2,0xfd,0x86,},{0xc1,0xcf,0xae,0x58,0x51,0x57,0x13,0xea,0x72,0x8c,0xfa,0x09,0x09,0x0e,0x89,0x42,0xf8,0xdf,0x18,0x62,0x1b,0xa7,0x09,0x0e,0x3a,0x33,0x76,0xc3,0x80,0x27,0x75,0xa1,0xec,0xaf,0x43,0x6b,0x18,0x49,0x78,0x04,0x1e,0xbb,0x75,0x22,0x6f,0x97,0x0d,0xf7,0x1d,0x6a,0xd3,0x53,0xc0,0xfb,0x46,0x50,0x23,0xf9,0xe2,0x98,0xf6,0x4a,0x70,0x02,},"\xe2\x74\x20\x23\x47\xa0\xd0\x57\xa4\x8b\xf2\xa1\xf6\xe9\xf6\xcb\x42\x56\x07\x9d\x80\x03\x74\x09\x3c\x02\x0c\xbf\x52\x0e\x5f\xa2\x7f\xe9\x96\xff\x07\xf3\x3a\xd3\xb2\x1f\x74\xab\x0c\xd9\x3c\x86\x47\x5f\xf3\x7c\xf6\x22\xd3\xf9\xfa\x4d\x13\xbc\x99\xf0\x13\xe8\x50\x2b\x24\xe4\x6c\xc8\x7c\x47\xe6\xb2\xc3\x66\x2b\x50\xe9\x79\xa0\xf3\x45\xb7\x84\xff\x21\xa8\xa4\xd9\x2a\xdc\x65\xe8\x6e\x33\xb4\xdb\xe1\x7f\x52\x8c\xcd\xf5\xb4\x86\x46\x64\xba\x94\xff\xdb\x7c\x7d\x24\x12\xb4\x38\xe6\xe4\x3f\xa9\x66\x81\x47\xee\x33\x28\x22\x4d\x1f\x52\xa3\xf5\xb5\x43\x59\xb4\xf7\xfe\xf6\x9a\xf8\xf8\x67\xb4\x78\xf1\x30\xa1\x47\xbe\xa4\x2e\xd3\x98\x03\xbc\xbc\x25\x57\xbc\xa8\xc3\x99\x9f\x1d\x24\xf0\xa6\xb0\x3c\x98\x84\x60\x11\xf9\xec\x74\xf6\x66\x41\x7b\x95\x02\x0e\xb1\xfb\x2f\xb8\x8b\x63\x12\xe5\x00\x8c\xff\x03\xe2\xd7\x7a\x26\xaa\x53\x2d\x17\x80\xb5\x07\x7f\x9e\x8b\x82\x86\x74\x45\x5d\x6b\xc9\x57\x97\x5f\x7b\x2a\x50\xe7\xfd\x7c\x16\x12\xce\x02\x36\x2e\xfa\x4c\x55\x5a\x1e\xef\x68\xec\x34\xa5\xc0\x06\xa6\xda\x00\x8a\x31\xd4\x19\x3d\xc2\xcc\x64\x76\x85\xad\x3c\xfa\x3b\xd7\xc5\x60\xb7\xae\xd4\x5f\x0f\x1a\x3d\x1b\x5b\x36\x22\x68\xde\x53\x28\x57\x05\x5a\xb9\xd1\xd5\xd8\x58\xd9\xae\x9a\x75\x9a\x51\xbb\x94\x78\xe8\xf0\xee\x93\xc9\x84\xb5\x76\xb8\xb4\xab\x46\x02\x80\xbe\x3d\xe2\x05\xa3\x2f\x1d\xc3\xd5\x72\x92\x3f\xb2\x13\xac\x15\x12\xd8\x0e\xb5\xad\x5c\x18\x94\x4b\xe7\x7f\xc1\x7d\xef\x13\xa6\x1b\xbd\x31\xbc\x71\xac\xc2\x3d\x25\x0e\xc5\x89\x4e\xbc\x21\x4c\xfe\xc0\xc1\xb9\x06\x51\x6d\x32\xd8\x36\xad\xc8\x38\x80\x2e\x8d\xe3\x0d\xd7\x6d\xf6\xe6\x1c\x1b\xc4\x38\xb6\x8d\x2b\x02\x5a\x84\xf2\x11\xfa\xcf\x3f\x13\x84\xd2\x61\x2d\x0f\xae\xf5\xd1\x71\x31\xcf\xe0\xcf\xe8\x33\xfe\x95\x0e\x47\x9b\xc2\x9c\xbe\x7f\xd6\xda\x0c\xce\x30\x7c\xf0\xb1\xbd\x92\xc8\x0e\x87\x8e\x43\x2f\x63\x6e\xa0\xcd\x42\x48\x0c\x07\xe8\xb8\xe5\x7e\x69\xb2\xf9\x38\xb7\x81\x20\xf6\xaf\x4a\xbe\xbf\x7d\x4b\x05\xca\xcd\x6e\xed\x85\x44\x91\xc0\x29\x75\x5c\x4e\x66\x33\x89\x93\xed\x2a\xc2\x5d\x19\xa0\xc5\xb4\x0f\x5e\x32\xc8\xa8\xb1\xbc\xe3\x69\x71\x81\x86\xc9\x1d\x60\xed\xff\x24\xa8\x37\x7a\x99\x69\x75\x75\x99\x06\x7d\xd3\x12\x63\xa0\x6d\x6a\x61\x15\x47\x81\xf2\x96\x11\xab\x81\x2f\xf8\x2e\x81\x37\x39\x64\x62\x63\x70\x4c\xd6\x04\x63\x57\xa2\x3c\x04\x5e\x24\x07\xb7\xa8\x95\x08\x25\x93\x91\x31\x4f\x2f\xbe\xe4\x9a\xef\x08\x55\xc6\xe5\xe6\x3d\x91\x2a\x19\xdf\x15\xb1\x1e\xce\x34\xe2\x76\xdc\xb8\x8b\xf2\xf2\xe4\x75\x63\x58\xf3\x4a\x0e\xe3\x95\x2b\x68\x6f\xcd\x17\x57\x8a\x88\x41\x76\xd3\x4e\xa2\x91\x6c\x5d\x9f\xcd\x00\xeb\x9e\x0a\xa9\xf2\xcf\x0f\x16\xe2\x56\x4b\xfd\x28\xb6\xab\x59\x68\xb8\x44\x8f\x06\x83\x20\xe4\x18\x71\x60\xf8\x66\x57\x81\xb1\xe2\xed\x9d\x04\x9e\x1b\x54\xa7\xd7\x27\x20\xff\x9d\x4f\x07\x30\x51\x99\x6a\x9d\xb6\xf0\xc6\x82\x1c\x42\x4f\xa5\x1d"}, +{{0x0d,0x1f,0xe9,0xd8,0xb9,0xa2,0xf0,0x4c,0x22,0xbb,0xb0,0xed,0xea,0x38,0x33,0xa0,0xce,0x43,0x33,0x93,0x47,0x53,0x1f,0xdb,0x67,0xed,0x51,0x3a,0x13,0xd3,0x6b,0x39,},{0x67,0xc4,0x9f,0x41,0x0f,0x48,0x53,0x29,0x3d,0x0c,0x4d,0x39,0xf4,0xc1,0xb3,0xd6,0xc6,0x10,0x3c,0x5c,0xfe,0x20,0xa9,0xa5,0x9b,0x53,0x93,0x20,0x43,0x51,0x73,0x69,},{0xb0,0x57,0x25,0xe7,0x37,0x1e,0xd0,0xa9,0x1e,0xbc,0x89,0xf3,0xc3,0x0b,0xaa,0x99,0x18,0x37,0x63,0xed,0xb4,0xce,0x34,0xfe,0x90,0x1a,0xf3,0x73,0x1e,0x00,0x1c,0xc5,0x4f,0x28,0x71,0x18,0x91,0x5e,0x90,0x36,0x5d,0x91,0xac,0xa8,0xfe,0xb1,0x70,0x87,0x69,0xf9,0xf1,0xd6,0xee,0xf5,0xaa,0x11,0x3b,0xee,0x00,0xb5,0xef,0xab,0x27,0x04,},"\x64\x21\x7a\xc8\x41\xfd\x4d\x64\x59\xbf\xc4\xa4\x9b\x88\x01\xd6\x92\x9b\xf1\x9b\x40\x8e\x8a\x53\x79\x0c\xeb\x51\xec\x34\x1f\x9b\x46\xa3\x51\xe8\xc2\xe5\x9d\x88\x7e\x1e\xac\xcb\x91\x42\x31\xcd\xca\x1d\x3e\x5c\x47\xd1\x66\xb4\xcd\xb9\xb5\x8c\x01\x3c\x59\xa3\xbd\x28\x3a\xd1\x0f\x6b\xd6\x2c\x0f\x15\xf7\x64\xce\x14\xf3\xb2\x65\xf5\x37\xc6\x3e\x73\xb6\xc4\xfa\x65\xe0\x6c\xe1\xe1\xf4\xae\x0d\x11\x48\x9d\xd2\x60\x2f\x95\xfc\x40\x2b\x77\x12\x05\x2a\xbc\x84\xbd\xc7\x78\xc1\x9f\x10\x00\x1b\x4e\x0d\x5f\xbe\x46\x30\x90\xe8\x3e\xf4\x38\xfe\x06\x8f\x3b\xb6\xfb\xc2\xc1\x39\xaf\x06\x78\xed\x2a\x11\xfa\xa1\xb9\xe4\x9a\xaa\x46\x20\xab\xfc\x08\x43\x9f\xbf\xe2\xc6\x18\x40\x76\x9e\x5f\xda\x26\x77\xf8\xe2\xf0\xa1\x45\x64\xf9\xf5\x04\x23\x2a\x9f\xc0\xd9\xda\x47\x1e\x67\xfb\xc5\x74\xc3\xd5\x6d\x2a\xeb\x93\x7a\x58\x6e\xd5\x58\x35\x56\x30\x8a\x99\x8e\xb1\xdc\x47\x6a\x01\x4f\x5a\x08\x22\x8d\xbe\xd9\x5a\x12\x08\xbc\x1d\x1f\x5d\x76\xb4\xe8\xd0\xb2\x43\x4b\x99\x5a\xd4\x58\xe4\x29\xee\x61\x42\xa0\xc9\x71\x76\x8c\xc4\x0c\x40\xbc\xb0\x8e\x96\x03\xf0\x96\x11\x47\x44\x71\xb3\x85\x9d\x7f\xd5\x84\x21\x9f\x02\x65\x7b\x43\x0e\x9e\x56\x95\x5b\x34\x67\xac\x56\xff\x2e\xab\x22\xcc\x49\x84\x89\x03\x6a\x57\x41\x20\xe2\xdb\x76\x9a\x3b\x21\x50\x03\x89\x14\x2c\x78\xa8\x7d\x06\x9f\x0e\x25\x76\xca\xfd\xa8\xcd\xdd\x79\x15\xa9\x22\x87\x73\xd2\xac\x9a\x07\x5c\xb3\x87\xf2\xa8\x98\x61\x72\x13\xb2\xcc\x50\x59\xd1\x19\x41\xbc\x4f\xe5\x86\x41\xe7\xc1\x75\x02\x67\xe5\x3e\x99\xc4\x21\xcb\x4c\xf2\x1d\x09\x8c\xa2\xd1\xf4\x16\x44\xf7\x90\x89\x83\xeb\x17\x4a\x23\xa7\x81\xcf\x15\xef\x38\xeb\x91\x16\xed\xa4\x12\x3a\x15\x22\xf5\x3b\x81\xfb\x73\x68\xe8\x07\x5f\xb8\x38\x59\xd2\xcf\x98\xd9\x21\x53\x5a\x70\x9f\xaf\xa9\x87\x3c\x4a\x03\x9a\xae\x68\x2f\x7e\x62\x86\xb8\x99\x25\x7c\x09\x24\x01\x6c\xa5\xbf\x6d\x31\x69\x09\x92\x11\xa9\xa4\xa6\x74\x5c\xdd\x31\x98\xf1\x33\x7f\x60\x92\x82\x27\xce\x3c\x7d\x60\x96\x0b\x53\xde\xdf\x01\x1a\x89\x40\xf5\xc4\x68\x20\x7a\x38\x94\xbb\x08\x72\xb3\x33\xcc\xde\xc9\xd5\xec\xd9\x11\xec\xbb\xb9\x6c\x9b\xc4\xbd\x48\x75\x32\x0e\x4d\x3e\x9c\x02\xd9\xdc\x76\x10\x9e\xc4\x5e\x61\xd1\xcf\x5a\xc7\x29\xf2\xe3\x4a\x96\x47\xb9\x5b\xce\x70\xb0\xc6\x33\x17\x1a\xda\xf0\xdf\xdb\x5a\xfb\xa4\x03\x5b\x3c\xce\x8c\xb7\x14\x1a\xd1\x42\xbb\x7a\xdd\x4f\xc3\xf9\x61\xd4\x2d\x72\x03\x75\x4a\x4e\x31\x32\x21\xd4\x87\x83\x1e\x32\x94\x7d\xa9\x11\x38\xab\x64\x8b\x59\x52\xef\x69\x56\xe2\x7a\xa5\xd2\xc1\x75\x79\x4b\xf8\x1e\xf2\x77\xfa\xa6\xb9\x05\xe1\x45\x02\x86\x68\x87\xd8\x78\x80\x60\x6e\x81\xb2\x7a\xf0\x1b\xb2\x63\xec\xf2\xc5\x82\x05\x85\xea\x6c\xe8\xd8\xb3\x91\xd8\x6f\xce\xda\xdc\xd1\x1f\xdb\xb5\x66\xfd\xf1\x47\xf4\x02\x01\x0f\xc3\x5f\x51\x57\xe0\x36\x14\x6b\x37\x36\xc8\xa4\x33\x59\x12\x7c\x26\x1f\x6b\xf0\xca\xd3\xbd\x8a\x34\xcb\x15\x09\xf7"}, +{{0xc1,0x0b,0x5a,0xc6,0x05,0x5a,0x1d,0xdb,0xca,0x28,0x55,0x2e,0x5c,0x72,0xeb,0xd0,0x52,0x78,0xc9,0x22,0x39,0xb2,0xfc,0xd0,0xc1,0x35,0x36,0x51,0xa8,0xe5,0x59,0xa0,},{0xb2,0x18,0x3e,0x1b,0x00,0x81,0x6d,0x29,0x30,0x5f,0x74,0x68,0xe7,0xe4,0x5e,0xed,0x3f,0xd8,0xf2,0x3c,0x15,0xb3,0x05,0xf9,0xfd,0xa9,0x3e,0x81,0x2d,0x65,0xbc,0x27,},{0x8a,0x9a,0x32,0x17,0xfd,0xf0,0x64,0x3a,0xaa,0xa5,0xc8,0xfb,0x2a,0x88,0xa5,0x56,0x39,0x88,0x59,0xb8,0xfe,0xef,0xbc,0xb4,0x8c,0xcd,0x88,0xe5,0x85,0xa1,0x67,0xc9,0x4d,0xbb,0x5c,0x0c,0xad,0x24,0xd1,0x5b,0xca,0xbb,0xc1,0xed,0xb2,0x1f,0x02,0xa8,0xc4,0x57,0xc5,0x61,0x20,0xa3,0x23,0x4a,0xc3,0x35,0x77,0xb9,0xaf,0x2d,0xdc,0x01,},"\x35\x94\x90\x5f\x9e\xa4\x64\x61\x5f\x41\xb8\x7a\xbb\x9d\x16\x73\x37\xf2\x9d\x45\xd9\x7f\x7a\x14\x64\xec\x9f\x2e\xe5\x0f\x90\xf2\xe6\x73\x39\x87\x4d\x3f\x20\x93\xbe\x92\x26\x10\x77\x01\xec\x1a\xab\x94\x1c\x4e\x05\x9f\x1b\xb2\x6c\xe8\x6e\x14\x8d\x1d\x9f\x0d\xa2\xa2\xa0\xf9\x82\x9a\x36\x4f\xb4\xf1\x3f\x58\xb9\x60\xd0\xf8\xd7\x23\x23\x28\x3c\x44\x90\xef\xdf\x57\x87\x86\x45\x89\x0f\xf7\xbc\x50\x65\xda\xd6\xe5\x1d\xd1\xe5\xb9\xa5\x07\x51\x50\x97\x8b\x33\x67\xf1\xba\x84\xe4\x5f\xf1\xf1\x27\x6c\x57\x6e\x4b\xc7\x2b\xe8\xaa\x8e\x40\x5f\xc2\xb2\x7f\x81\x46\xb9\x99\x84\x5f\xaa\xa0\x59\x5d\x3c\xb7\x0e\x5d\x37\x12\xed\x54\xa0\xfb\x3e\x32\x2d\x45\x38\x0b\x5d\xe3\x60\x9b\x96\x7b\x95\x9b\xca\x5a\x58\x3c\xc5\x20\xcd\xcb\x7b\xcb\xb8\x29\xaa\x25\xd7\x93\x20\x95\xec\xb3\x03\x92\x3c\x25\x60\xaf\xc3\xfd\x73\x24\xb7\xb7\xac\xd0\x89\xa9\xf0\x0c\x03\xa7\x3d\x04\x3d\xc0\xcf\x0b\xa0\xd8\x41\x1e\x2b\x1b\x18\xd2\x1d\x2a\x32\xa7\x26\xa5\x30\x59\x14\x0f\x78\x4f\x7c\xed\xf2\xf3\x3c\xec\x66\xfe\x4a\xd5\xcc\x9e\xac\xcb\xe4\xae\x10\x03\x6a\xc3\x52\x3b\xac\x70\x0a\x11\x3a\x98\xb5\x98\xe6\xdf\x03\x04\xc6\xfa\x32\x12\xac\xc0\x4c\x4e\x3c\x7f\x66\x87\x36\x2e\xf8\x6d\x61\x7c\x6d\xd4\x83\xf8\xd8\x0c\xea\x66\xd1\x95\x11\x27\x42\x8a\x61\xc1\xe1\x55\xa6\x85\x0b\xb2\xaf\xb7\xf9\x1c\x82\xd7\x3e\xb2\xb0\x54\x3e\xe8\xfc\x1f\x38\xe1\xdc\xdb\x3c\x50\x3d\xdc\x9b\xa0\x81\x24\x56\xa5\xce\x2e\x11\xd5\x56\x48\x7a\x64\x69\x74\xa7\xbb\xf8\x6e\x80\x6c\x58\xc6\x8c\x42\x69\xa7\xc9\xbb\xca\xc0\xff\xef\x98\x35\xb3\x3d\xc4\x49\xa7\x54\x79\xec\xd2\x3f\x6d\x14\x9c\x1e\x5e\xa8\xb6\x92\x08\xff\x36\xe5\xfb\xd6\x82\x95\x55\x03\x18\xbf\xa0\xd3\xb1\xd6\xc1\xad\x42\x70\xbc\xab\x09\x04\xae\x53\x49\x1f\x9b\x1c\xa5\x02\xe0\x12\xee\xd7\x7c\x42\x7d\x49\xa0\x96\x2f\x10\x55\x12\x5d\xd7\xb5\x37\x33\xd8\x52\x89\x34\xb5\x58\x0d\xd5\xfd\x5b\xbe\x85\x49\x78\xba\xe3\xd2\x5b\xb4\xae\x94\x4e\x90\x65\xe8\xe2\xe0\x79\x46\x51\x8a\x6f\x54\x8e\x36\xe0\x56\xbe\x82\x4d\x9e\x02\xa7\xa3\xea\xad\xd3\x79\x29\xf5\x81\x01\xcb\x18\x53\xbe\x3d\x75\x47\xf5\x8f\x49\xe3\x8b\x01\x8a\x74\x8d\x3f\x19\xc4\x85\x82\xab\xbd\xbe\x95\x3a\x8a\x25\xba\x9d\x36\x5d\xea\x83\x59\x35\x89\x9c\x19\xfb\x0b\x51\x90\x6a\xa9\x72\xc5\xac\x45\xe9\x9c\x40\xb3\xb7\x6e\x35\xd3\x27\xe3\x21\xe8\xae\x23\x06\xa6\xeb\x3d\x8c\xb6\xec\x2f\xa5\x39\x9a\xdd\x19\xea\x00\x28\xa0\x17\x92\xc0\x8e\x27\xc1\x6c\xf4\xf8\x5a\xaa\xae\x72\xf9\x86\xb0\x99\xf9\xeb\xe4\xad\x0b\x25\xd0\x6d\x3d\xe4\x4a\x8b\xfa\x52\x84\x4b\xe4\xa9\x39\x44\x83\x3c\xe2\xad\xd5\x1b\xb5\x54\xb3\x56\xa7\xdc\x49\x74\x8d\xd4\x5a\xe7\xec\x9e\x8d\xb4\x26\xc9\x7a\x25\xda\x5e\xdd\x3b\x62\x1e\x4a\xdb\xde\x48\x19\x7a\x33\x14\xde\x1c\x50\xf4\xd6\x00\x20\x27\xdd\x75\x19\xdd\xe3\xe1\x57\x29\xe4\x86\x95\x5a\xc4\x0d\x9d\x66\x87\x6f\x90\x66\x8c\x68\x9d\x8a\xb5\x98"}, +{{0x06,0x1b,0xdd,0xab,0x28,0x0b,0x0f,0xdc,0xb2,0x6b,0xfd,0x9a,0x0f,0xc7,0x21,0xf6,0x8f,0x88,0x34,0x3b,0x5d,0x39,0x83,0xa1,0x6b,0x6d,0xfa,0xa5,0xe7,0x69,0x69,0xf3,},{0x81,0x55,0x78,0xbb,0xa6,0xe7,0x07,0x0e,0xbd,0xec,0xa1,0x17,0x56,0x8b,0xd7,0x7e,0xbf,0xf9,0xe1,0x4c,0xb8,0xbc,0x20,0x0c,0x32,0xbd,0x87,0xdb,0x1f,0xb3,0x7d,0x6c,},{0xb8,0x32,0x97,0xcc,0xdd,0x6d,0x00,0x98,0xeb,0xf5,0xd1,0x32,0xd1,0x74,0xde,0x19,0x58,0x31,0x1a,0x76,0x6b,0xcc,0x4d,0xa1,0x5f,0x86,0x4d,0x80,0x1f,0x38,0xe0,0x9d,0x61,0x3e,0x7a,0xa8,0xc3,0x36,0x30,0x27,0x35,0xd7,0x5b,0xe4,0x16,0x6d,0x73,0xb0,0x18,0x4b,0x0e,0x0b,0xc5,0xef,0x39,0xed,0xbc,0xcb,0x6e,0x0e,0x61,0xaf,0xeb,0x0c,},"\xee\x76\xb4\x0c\xd4\x29\xea\xc7\xbc\x12\x83\x9c\xa2\xf7\xcd\x31\xf1\xe0\x09\x8a\x39\xc5\xfc\x19\x80\x5b\xe0\x33\x1f\x44\x79\x9e\x31\x8d\x12\x57\x1f\x06\xe2\x99\x37\x53\xa3\x68\x5c\xd2\xa9\x6b\x23\x01\xe2\x00\x24\x20\x9a\xdc\x5a\xdf\x74\x79\xff\x90\xc4\x77\xc3\x69\x5a\xbb\x99\xbd\x28\x57\x9d\xbc\x78\x31\xa1\x92\xbe\xed\x0c\xe1\x7b\x03\x8b\x20\x76\x48\x00\x65\x3a\xf7\xaf\x02\x4e\x2a\x10\x4e\xd0\xf3\xe5\x2d\x4b\xbd\x3e\x10\x9c\xf1\x26\x29\x1f\x49\xb0\xa2\x1b\xe4\x33\xc1\xc5\xa2\x58\x9e\xa5\x72\x99\x7f\x63\xd2\xbb\x39\x72\xd5\x32\xbe\x35\xa0\x47\x1e\xf0\x57\x3d\x79\x5c\x07\x2b\x6a\x86\x85\xb9\x5e\x47\xb0\x9e\xa9\xf4\x75\xd9\x3b\xf1\x2b\xbd\x77\xb7\xd2\xbf\x5d\x5b\xdd\xf0\xae\x02\x37\x53\x71\xd1\xd7\x99\xea\x92\x04\xbe\x38\x9e\x6a\x8e\x5d\xee\xdc\xd4\x92\x02\xe9\x2d\xf7\xc3\xe7\x61\xf9\x2e\xf8\xd7\x9f\xa7\x38\xd2\xc5\xbc\x28\x0e\xd3\x28\x79\x83\x2f\xf2\xb0\x26\x42\x45\x89\xcd\xbd\x52\xd1\x5b\x60\xf2\xaa\x35\x26\xb8\x98\x84\x9a\x34\xa8\x5f\xf1\xc4\x7d\xc6\x55\x4b\x85\xac\x76\xaa\x79\x35\xcb\xf3\xf7\xbc\x80\xad\x00\x91\x92\xa8\x75\xca\x20\x9b\x40\xfe\xb0\x47\xcc\x44\x69\x68\xf9\x70\xda\x47\xb8\xcd\x67\xda\x7e\xb4\xe5\x4a\x0e\x5a\xb2\x0c\xb3\x5b\xc6\xfb\x7f\x13\x30\x7c\xe6\x7e\xb6\x20\x4a\x67\xce\x9b\xb1\xd1\x39\xc1\xb4\xbd\x5d\xbe\xd5\x80\x10\xc8\x7b\xf8\x31\xe6\x52\x2e\xe1\x82\xda\xd9\x45\x80\x4b\x76\x7c\x4d\xf2\x55\x4f\x15\xb9\xe9\xaf\xd2\x59\x9e\xf2\x58\xc6\x7a\x22\xca\xeb\x92\xa5\x79\x88\x00\x6b\xbc\x72\xc1\x04\xfa\xc7\xe5\x41\x3c\xd3\xd3\xb8\x02\xc8\x3e\x63\x9e\xaf\xe2\x12\xa3\x8b\xb7\xef\x77\x9a\xf1\xa9\x4e\xe1\x37\xf6\xc6\x06\x67\xbc\x48\xf2\x7b\xf4\xa2\x22\x41\xbc\x44\xbb\x60\x33\x83\x62\x39\xbd\x6e\xaf\x3e\x2e\x22\x31\x87\x84\x1e\x46\x41\xb0\xf4\xe9\xff\x8d\x5a\x41\xdd\xbe\xab\xb4\x13\x8f\x6b\x58\x5a\xce\x0f\xb6\xb5\x3d\xc3\xc9\xed\xc0\x37\x3b\x60\x47\xf2\x7d\x83\x5e\x8e\x24\x66\x44\xfd\x83\x2c\xcf\xe0\xdf\x25\xc3\xd7\xda\x18\x7c\x9f\xa0\x54\x20\xd4\x34\x55\xf2\xd0\x8b\x57\x19\x29\x38\x6b\x59\xc6\xe0\xe1\x0a\x35\x60\x1d\xa8\x99\xb1\xb4\xdc\x3d\x95\xb6\x7d\xd9\xa8\x38\x18\xb0\xa3\x18\xbf\xdd\xa0\x64\x64\xb4\xa4\x2d\x3c\xb9\x85\xf3\x0e\xc9\x7d\x6a\x2a\xf1\x32\x91\x15\x5d\x60\xce\xc5\x7c\xbd\x58\xd5\xcf\xcb\x35\xc1\x85\x35\xe8\xd2\x99\xb5\xb0\x07\x59\x08\x92\xea\x94\x9d\x1b\x13\x7a\x62\xb3\x9a\x43\x6c\xd7\xe5\xb9\xf8\xd1\xb6\x93\x8d\xba\xa6\x2c\x22\x68\xd4\x59\xc6\x22\x0a\x3e\x6f\xcb\xf8\x0b\xa0\x11\x8a\xcd\x23\x42\x56\x3f\xbd\xbc\x1f\x7c\x9d\xba\x7e\xa2\xc0\x72\xaf\xc8\xae\x21\x28\xe3\xeb\xca\x06\x44\xff\xd8\x16\x3e\x80\xa1\xa5\x57\xd9\xd3\x90\x34\xcc\xd9\xdb\xd1\x2c\x88\x55\xa6\xf9\x16\x5b\x08\x01\x83\x9c\xf6\xe0\x7a\x9f\xba\x4c\x64\xd9\xc0\x99\xe1\x54\x10\xe2\x90\xe6\x77\x03\x1b\x65\xcf\x7d\xeb\x00\x79\xbd\xad\xc5\x73\xcc\x05\x6d\x76\x66\xd9\x5d\x03\x3a\x0b\x6b\xdb\xa7\xec"}, +{{0x2c,0xab,0x5b,0xf5,0x5f,0xfa,0x91,0x4e,0x9a,0xd0,0x76,0x22,0x19,0x0d,0x34,0x3e,0xc5,0x5c,0x13,0xcd,0x91,0xb3,0x88,0xcb,0x75,0x00,0xff,0xe0,0x6d,0xf7,0xc1,0x80,},{0xb6,0x1e,0x43,0x2b,0xb9,0x7c,0xba,0xe3,0x88,0xa2,0x57,0x8a,0x74,0x84,0x99,0x8e,0x00,0xe9,0xad,0x3d,0xdf,0xd6,0xca,0xb8,0xd3,0xa5,0xfc,0x5b,0xa0,0x43,0x07,0xc8,},{0x4c,0xf0,0x8f,0x4f,0xab,0xbd,0x06,0xdc,0xcb,0xcc,0xe2,0xa7,0xa5,0x94,0x1f,0xe9,0xaf,0xdd,0xc4,0xd2,0xd0,0xbc,0x80,0x80,0x2e,0x93,0xb1,0x2c,0xb1,0x35,0xd3,0xac,0xf6,0x51,0x1e,0x0f,0xe4,0x11,0x3c,0x5e,0x3c,0x55,0x41,0xb2,0x7d,0x3a,0x21,0x50,0xa7,0x57,0x74,0x2a,0xc6,0x5f,0x95,0xa9,0xce,0x66,0x73,0xff,0x0c,0xd2,0x1c,0x0f,},"\x2c\x2d\x04\xdc\x3a\xd1\x98\x23\x59\xec\xd5\xbc\x3e\xe0\x35\xf3\x49\x8e\xed\xff\x61\x04\xa9\x3c\x60\x2a\xf2\x17\x9a\xeb\x2c\xb1\xf4\x1c\x5c\xdb\x0a\x77\xb1\x24\xf9\x46\xaa\x8a\x82\x4a\xa3\x07\x6c\x2e\x1a\xcf\xd4\x8f\x68\x07\x0b\x26\x27\x6a\x65\x6b\x4a\x47\x58\xab\x15\x1a\x6a\x9c\x41\xbd\x74\xe0\x9b\xbd\x9a\xdc\xce\x1e\x87\xa0\xa8\x0d\x17\xfd\x92\xe8\x5e\x4b\xda\x47\x2c\x98\x8b\x6b\xb1\x18\x3b\x7e\xe5\x9a\x09\xd8\x05\x70\x46\x6d\xb9\x0d\xd3\x74\x95\x79\xc4\xeb\x19\xab\x75\xfc\x15\x2e\xcd\xcd\x68\xcd\x10\x78\xef\x06\xe5\x93\xc7\x35\x16\xfa\x82\x91\x48\x1a\x66\x7d\x3f\x95\xbf\xeb\x14\x4b\xab\x59\xd6\xdd\xc7\x3a\x27\x95\xc1\x01\x7e\x09\x53\x6b\x31\x62\xe4\xbc\x58\xf8\xea\xd3\x89\x57\x01\x8c\xfe\xc7\x2b\xad\xbf\x22\x81\x9a\xb0\xb4\x06\xc6\x47\x30\xfc\x73\xfd\x9e\xe6\x1f\x74\x18\x7e\xda\x91\xed\x4e\x79\x93\xe6\x68\x84\xaf\x43\xef\x4c\x6b\xf7\xf7\xc3\x79\xe8\xf0\xf6\x3d\xcb\x80\x41\xe2\x6b\x8b\x82\x92\xb6\xb6\xd1\x90\xe4\xad\xf4\x30\xfa\x82\xdd\x74\xc5\x73\x85\xb9\x19\xc4\x46\xdb\x37\xb5\xe8\x76\x7e\x4a\x0c\x95\x01\x3b\xe8\x9b\x2b\xc4\xe9\xfd\x62\x75\x4a\x84\x44\x18\x40\x09\x68\xae\xd2\xdd\x32\x8d\x7b\x1d\xc9\x1e\x1a\x2b\x30\x09\xdc\x7a\xd1\x40\xa0\x68\x6f\x67\x31\x68\xa6\x0e\x88\xd8\x0c\x52\x0f\xc2\xdc\xfc\x56\xca\x9d\x4b\x0c\x88\x85\x90\x99\x23\x07\x14\xde\xc8\x3d\x26\xb4\x63\x05\x54\xdc\xb9\xc4\x90\x18\x95\xf7\x8f\x38\x34\xb0\x97\x66\xb6\x7a\x46\x5d\xe8\xc9\x49\x00\x65\xbf\x56\x83\x39\x24\x33\x99\xfd\xc9\xd5\x10\x03\x24\x66\x7c\x5a\xb2\x8f\x35\xc0\x0f\x61\x25\x63\x8e\x61\xda\xb7\x0d\x1e\xec\x48\x95\x1d\xe0\xfb\x3f\x7b\x23\xd3\xcd\x98\x24\x37\xc6\x34\x73\x41\x5b\xef\x37\x4a\x66\x32\x96\xf2\x98\x6b\x1a\xe9\x57\x9b\x9f\xfc\xe7\x1e\xc3\x5e\xec\xa1\x16\xd1\x94\xf8\xfb\xa9\xa4\x5a\x91\xba\xe2\x7a\xc4\x55\xdb\x71\xa6\xb0\x1a\x72\x9d\x0c\x13\x5f\xcd\xcb\xc2\x3e\x50\x4a\x29\x43\xc0\x0a\xa4\x20\x70\x51\x9d\x9c\xd7\x7a\xe6\x75\x4f\x31\xeb\x46\xa3\xe5\xbe\x9e\xeb\x3f\xc8\xd3\x1f\xf1\x82\xda\x9b\x08\x7b\xe3\x46\x2c\x84\x59\x12\x6e\x86\x29\x09\x23\x2f\xd5\xf2\xd8\x9c\x01\x81\x59\x57\x61\x1e\x6a\xe7\xca\xa9\x8b\x60\x53\x77\x6a\x77\x15\xc2\xf9\x3c\xcf\x03\x08\x87\x03\x0c\x56\xc2\xb8\x22\x6d\xae\x29\x77\x99\x5a\x6d\x3f\x1e\x9d\x79\x11\xa9\xc9\xd2\xa3\x03\xf0\xe0\x1f\x32\x33\x8e\xfd\xaf\x8e\xe6\x3f\xc4\x1b\x25\x39\x9c\xff\xd0\xb3\x5f\x7e\xe5\x67\x6b\xd8\xfd\x3d\xa2\xcb\xee\x4a\xe2\xea\x98\x08\xd7\xe7\x35\x83\xd9\x94\x33\x99\x31\x46\x67\x4a\x40\x40\xf4\x2f\x63\xd1\xb3\x13\x5c\xc7\x97\xa8\xd8\xf0\xb8\x85\x73\xa3\x28\x90\x69\x6c\xac\x94\x39\xd1\xe1\x5d\x19\x6d\x90\x90\xb6\x2b\x6d\xb7\xe6\x3c\x96\x47\x2d\x94\x6e\x66\x8c\xbd\xa1\xf4\xdb\x88\x93\x00\xcd\xcc\x25\xe8\x4c\x9f\x38\x57\xd1\xd9\xe5\x32\x41\xcf\x62\x5f\x39\x09\xaf\x1c\x8a\xaf\xf4\x30\x9f\x68\xf6\x54\xb7\xa1\x5b\x67\x71\x1c\x5b\x7f\x9d\xe7\x67\x75"}, +{{0xdd,0x7b,0x59,0xa3,0x3d,0x97,0x0b,0xef,0x62,0xe0,0xe2,0x1a,0x7b,0x6e,0x4c,0x30,0x96,0x06,0x86,0xf1,0x7f,0x49,0xaf,0xdb,0x4a,0x9f,0x4e,0x80,0x8e,0x35,0x5c,0x7f,},{0x53,0xa0,0xe5,0x72,0x77,0xd9,0xbb,0xee,0xcf,0x99,0xc4,0xd1,0x38,0xfd,0x66,0xfa,0xfc,0xae,0xc7,0xbc,0x5f,0x56,0x7f,0x83,0x20,0x80,0x0c,0x4e,0x58,0x4f,0xf8,0x2e,},{0x87,0x29,0x4d,0x22,0xd4,0xad,0x0d,0x08,0x14,0xe2,0xd6,0xd5,0xfa,0xf5,0x57,0x49,0xe9,0xb3,0x98,0x03,0xb4,0xd4,0xb7,0x87,0x9e,0x60,0xb7,0x77,0xc1,0xfc,0x41,0x58,0x4f,0xe1,0x51,0x35,0xba,0x11,0x23,0xff,0x5f,0x20,0x0d,0xb3,0x5a,0x34,0x68,0xdd,0x4d,0x58,0xda,0xd7,0x7b,0xd9,0x6e,0xe2,0xb8,0x88,0xa5,0xa8,0xb1,0x8c,0x32,0x04,},"\x75\x58\x03\x67\x93\x05\x18\x16\x8b\x0a\x76\x4d\x09\x58\xbe\xc4\xfc\x46\xcf\x59\x19\x99\xeb\x37\x37\xe4\x2a\x02\xea\x72\xd2\x10\xda\xad\x53\xe5\x4a\x7c\x2c\x13\x4a\x6d\x47\x83\x37\xd2\x63\x33\x68\x54\x81\x70\xed\xef\x0d\x85\x17\x9f\x30\x23\xe1\x50\x38\x68\xa6\xe5\xe2\x77\x5e\x41\x2a\xc0\x5f\x05\x89\xd4\x2a\x37\x7e\x75\xaa\x6b\x8f\x52\x20\xa7\x69\x9a\xe8\xaf\xf0\x10\x94\xec\x46\x9d\x63\x61\xd3\xe8\xf3\x86\x15\xed\xcd\xa4\xd2\xd5\x28\x9a\xcf\x73\xdb\x64\x56\x98\x57\x80\xc9\x2e\x07\xf6\x2c\x77\xa9\x09\xfb\x6e\xf5\x98\x82\x20\x62\xbd\x57\x2b\xf7\x05\x8d\xcb\x83\x5e\xf3\x44\x3d\x3e\x47\xb5\xc6\x03\xd9\x27\x36\xdd\x1d\xf2\x6b\xe4\xb9\x28\x3b\x76\xe3\x21\xd5\x5c\xe2\xb6\x38\xcd\xe2\x25\x77\xca\x59\xc9\x63\xc2\x47\x95\x56\xc5\x75\xcc\xb0\xd6\xd1\x8c\x80\x4e\x2e\xb0\x1f\xf5\x35\x81\xeb\x04\x0f\xfd\x2c\xc4\x67\x60\x73\x7a\x74\x67\x2e\xa6\xbf\x78\x05\x8a\x6a\x0a\x1f\x5e\xbf\x56\xde\xcb\xf9\x4b\x54\xaf\xb2\x3c\x11\xd3\x41\x79\xbf\x09\x76\xb4\x15\x80\x17\xd4\x07\xc9\x5a\x40\x1f\xa6\xf9\x62\x4d\x77\x13\x5e\xae\x81\x41\xeb\xea\x9f\x35\xd5\xf5\x1b\x3d\xed\x99\x5c\x7f\x70\xc0\x25\xb0\x94\xad\xef\x2b\x07\x1f\x97\x11\x55\xd7\x79\x6d\x61\x3a\x55\x0d\x09\xe7\xf4\xdf\xc3\x45\x17\xb3\xf8\xfa\x43\x93\x28\x6a\x2b\x22\x80\x17\xda\xf2\xe0\x15\x38\x7e\x13\x52\x7f\x63\x66\x1d\x3c\x13\xe7\x8e\x90\xfb\x29\x55\xee\xe3\x45\x73\x91\x19\xb7\x91\xf0\x5b\x07\xc8\xf4\x2a\x43\x6e\xfc\xad\x1e\xc5\xea\x10\xf3\x08\xf8\xe2\x3c\xa9\x8b\xc6\x5a\x5f\xd9\x39\x3e\xfa\xaf\xe5\xcd\xef\xba\x81\x05\x81\x70\xcc\x54\x93\xc0\x0c\xed\xf2\x54\x09\x74\x35\xd2\xe2\xfd\xe5\x5f\x86\x6b\xb8\x2d\xbd\xfb\x91\x54\x34\x49\x74\x86\x63\x59\x16\x7b\x46\x6c\xaa\x90\x9b\x91\x53\x0c\x9c\x7e\xe8\xc5\x3f\xa9\x01\x64\xbb\xd0\xb1\xfa\xdb\xdc\xd0\x81\x27\xf1\x9b\xe5\x03\x30\x71\x51\x8d\x3c\xf1\x0a\xe6\xbd\x6f\x98\x27\xe1\x20\x6f\x5e\xc0\x95\xc1\x98\x61\x70\xe8\xd5\xd8\xe7\x2e\x57\xd4\x22\x87\x01\xdf\x2a\x48\xc9\x54\x87\x30\x56\xcf\xdf\xba\xaf\xb1\x0e\x46\xa0\xc1\xf1\x44\xb1\xa0\xea\xcd\xd2\xcb\x66\xbb\x91\x2a\xc4\x71\x78\x7d\xab\xe4\x83\x53\x85\x91\x20\xb0\x34\x03\x56\x7c\x41\x5d\xdb\x88\xfc\x0d\x7f\xba\x40\x69\xbb\xfe\xf4\x06\xee\xd7\x24\xa1\x1a\xbc\x04\x1e\x8e\x7b\xeb\x66\x3d\x0d\xc9\x9d\xce\xf3\xac\x6a\x14\x90\x07\xb4\x2d\xd1\xf2\x2a\x77\xdd\x52\x90\x18\x14\x32\x51\x72\x22\x4a\x27\x78\xf3\x66\xfb\x9e\xb0\x2c\x81\x2b\x84\x2a\x42\x84\x25\x61\xc6\x8f\x2a\xc2\x31\xc2\x6c\xe9\xe8\xb1\x9a\xe9\x1e\xbf\xad\x3c\x0e\x9f\x66\x36\x3a\x13\xec\xd8\xb8\x97\xa3\xd0\x0a\x26\xd2\x57\x64\x8d\x56\xc6\x74\x74\x41\xca\x1c\x6e\xe9\x9f\x08\xdd\xad\x25\xd1\x16\xdf\xad\xab\x03\x83\x00\x0d\x3d\x72\x25\xcf\x2e\xff\x70\x76\xb2\xad\xab\x95\x22\x29\x25\x55\xf3\x19\x32\x06\x78\x60\x00\xd4\x2c\xa3\x4d\x70\x8d\xc0\x42\x84\xa9\x4d\x17\x4c\xc9\x2f\x10\x2e\xfd\xdf\x31\x48\xc2\x99\x69\x16\xd4"}, +{{0xd8,0x80,0xd2,0xfb,0x06,0x26,0x2f,0x57,0xab,0x87,0x78,0xe3,0x3d,0x16,0xb4,0x73,0x06,0x09,0x78,0xa6,0x54,0x9c,0xdb,0xcd,0x55,0x86,0xba,0x81,0x05,0xf5,0xac,0xa8,},{0x0d,0xe4,0x86,0xd2,0x11,0x5f,0xaf,0x2d,0x54,0x72,0x66,0x77,0x2e,0x43,0x0f,0xd9,0x72,0x7b,0xdc,0xac,0xe6,0xec,0xbf,0x2f,0xe2,0x3a,0xb6,0x0f,0x7b,0x52,0x54,0xb1,},{0x4c,0x00,0xa7,0x16,0x68,0xd3,0x21,0x3c,0x29,0xc7,0x04,0x1c,0x5a,0x03,0x7e,0xdf,0x13,0xc6,0x51,0x4b,0xd0,0xeb,0xc8,0x80,0xc9,0x09,0xca,0xff,0x15,0x06,0xa4,0x5d,0x27,0x80,0x9f,0xb7,0x4e,0x66,0x02,0xea,0x2a,0xad,0x0f,0x84,0x28,0x31,0xb7,0x4f,0xb3,0xd6,0x90,0x0c,0xcc,0x52,0x06,0x52,0xda,0x28,0x36,0x8f,0xd9,0x0c,0xa3,0x0e,},"\x11\x47\x43\xe8\x2a\x09\x93\xce\xc9\x70\x50\x67\xab\xd7\x7c\x16\x8b\x53\x67\x7e\xde\x5c\x15\x9f\xad\x36\xf0\x6f\xc1\xa1\x4a\xcd\x77\xf8\x83\x79\x9e\xd9\x88\x3f\x99\x15\xae\xa6\x38\xec\x17\x41\xf3\xf4\x21\x58\x55\xfb\x5b\x07\xdf\x37\x93\xbb\xe5\xb5\x68\xeb\x35\x94\x39\x1a\x9e\xf5\x72\x7f\xab\x93\xe5\x74\x69\xb3\x7d\xe1\x25\xb1\xe9\xf2\xe6\xfe\x2c\x3d\x1a\x10\xec\xf8\x7b\x6c\x0a\x66\x5c\x6d\x46\x0a\x17\x0e\xef\xb9\xbf\x71\x6c\xd8\xfa\xea\x97\x64\xf5\x79\xff\x34\xeb\xfa\x9c\x4c\xfb\x34\x70\x6d\x8d\xd7\xc9\xeb\x1d\x10\xb2\xdf\x46\x0a\x46\xbb\x57\x89\x43\x0b\xf4\x49\x15\x8b\x58\x24\xf2\xa3\xa7\xb9\x18\xb3\x3a\xcf\x2d\x9e\xbe\x90\x21\x6d\x1b\x7c\xbf\x4a\xf7\x70\xc5\xdb\x95\xfc\x62\xff\x3a\x3c\x38\x5c\x3a\x82\x17\x85\x3b\x73\x46\x63\x4a\xaf\x30\x60\x72\x88\xdb\x0c\x48\x3b\xd4\xc2\x22\xeb\x33\x2c\xb8\x9d\xc4\xa2\x17\xe6\x33\x4a\x26\x84\x13\xa3\x90\xbb\x37\x1a\xec\x35\x5f\xbe\x4c\x73\x6f\x7d\xa7\x5f\x9c\x88\x75\x41\xa2\xb7\xd0\xda\xc0\x18\xb6\x13\x8f\x02\x1e\x77\x26\x6d\xde\xce\x84\x68\x45\x2a\xda\x39\xf5\xe6\x3d\x02\x09\xb9\xd6\xda\xbf\x97\x54\x13\x25\x6d\xca\xa1\x5a\xc1\x4b\x60\x68\xe1\x77\x05\x6c\x7b\xf0\xf0\xf7\xc8\x84\xa3\x40\x20\x32\x29\x8c\xd5\x59\xa6\x31\x20\x39\x40\x06\x32\x32\x7f\x9c\x0e\x76\x3e\x52\x79\x8c\xb1\x77\xda\x44\x75\xe4\xb2\x40\x5c\x15\x7c\xa4\x27\x74\x11\x08\xd3\x3e\xd0\xb7\xa3\xf5\x34\x38\xce\x6b\x72\x5c\x6d\xd5\x81\x4a\xf5\x1c\xfa\x45\xdb\xce\xd5\x57\xf7\x26\xdb\x13\x0d\x55\xcd\xe7\x53\x3b\xc2\x09\x2d\x6b\x69\x9c\x2c\x87\x0a\xf2\x82\x73\x1e\x18\xd6\x51\xae\x85\xb3\xdb\x4b\xa0\x28\x53\xf8\xc8\x7f\xd5\xe3\xab\x69\xbc\x57\xb0\x8b\x81\xf8\x3c\x23\x9c\xcf\x22\xe8\x17\xe2\xad\xa4\xd0\xad\x14\x48\x7e\xd1\x46\x12\xc8\xb0\x97\x3e\xc0\x65\x0a\x55\xf6\xbf\x9a\xf4\xae\x92\x56\xad\x35\x46\xa3\xf6\x7d\xd3\x5d\x98\x7e\xf2\x19\x09\xa9\x4c\x50\xf0\xef\x06\x40\xe7\x55\xb1\xc4\xe1\xa0\x12\xaf\x0d\x31\x76\x6e\xeb\x5d\xf3\x1c\xd1\x04\xc6\x4e\xb6\x2e\xb4\xef\xb1\x39\xcf\x30\x57\x69\x40\x1d\x21\x3f\x96\xa4\x88\xd5\xee\x7e\x3c\xe3\x2b\x01\x92\xee\x8f\x08\x31\xbf\xbe\x8f\xe9\x5d\xe9\x56\x88\x6b\x52\x4d\x33\x19\xb7\x3f\xd5\x6d\xc6\x0e\x9f\x1c\x72\xd7\x81\x55\xa9\x7c\x6f\x43\x69\x7b\x20\x46\x6b\x3e\x7a\xeb\xd3\x57\xb9\x16\x96\xe7\x34\x8f\x45\x99\xb3\x4f\x35\x91\xed\xdf\xce\x2a\x7b\xd8\x49\xab\x16\xf7\xb4\x3e\xbb\x16\xe2\x3d\x6f\x52\x10\xef\xa3\x0a\xb3\xba\x8d\x32\xc4\x06\x62\xb8\x66\x2f\xd9\x11\x54\x4b\xc2\x45\x8c\x65\x69\xef\x75\xa9\xb9\xdf\x6a\x0f\x6d\x80\xd6\x58\xba\x86\xb2\x41\xca\x19\xce\x9a\x6f\xcf\x01\xd3\xda\xa9\x5a\xfb\x59\xc3\xd8\x9a\x18\xb9\x48\x62\x13\x94\x32\x7f\xc5\xe9\x20\xa7\x5f\x98\xf5\xe2\xb3\xd6\xc9\x5f\xd8\x52\xad\xf5\x67\xb6\xd3\x7c\x54\xd2\x97\x08\x56\xa5\x99\xf7\x49\xe2\xc5\x5d\xac\x7c\x23\xe3\xfb\x1a\x63\xbb\x4c\xc4\x7b\x8b\x94\xf3\xd5\x89\xac\x4b\xee\xf0\xaa\xd4\xe6\x29\x2f"}, +{{0x58,0x58,0x71,0x94,0x1c,0xc2,0x82,0xe3,0x33,0xd5,0x7b,0xbf,0xc3,0xd4,0xae,0xda,0x86,0x2c,0xfa,0x0a,0x37,0x50,0x30,0xcd,0x59,0x4b,0x36,0x92,0x84,0x8c,0x5f,0x00,},{0x4f,0x34,0x38,0x16,0xcd,0x48,0x05,0x0b,0x67,0x8d,0x3a,0xdf,0x70,0x00,0x88,0x77,0xc9,0xfc,0xf5,0xcb,0x66,0x2c,0xc4,0xad,0x2b,0x93,0x86,0x4c,0x02,0x09,0x07,0x07,},{0x29,0x88,0x56,0xe5,0x70,0x18,0x8a,0xef,0xca,0xd8,0x1b,0xb9,0x70,0xf0,0x76,0x96,0x57,0x70,0xc2,0x67,0x62,0xfe,0x29,0xe6,0x55,0x4d,0xc7,0xaf,0xcd,0xb8,0x01,0x72,0x3b,0xf6,0xc7,0x63,0xb4,0xcc,0xd6,0x5f,0x4e,0x15,0xd7,0xd8,0xea,0x38,0xfc,0xf6,0x7e,0xa9,0xd2,0x85,0x90,0xc7,0x92,0x55,0xc1,0xcf,0xeb,0xa7,0xb5,0xe4,0x5a,0x00,},"\x65\x1c\x10\x1b\x3e\x2d\xfe\xf0\x78\x3c\xe9\xf6\x1b\xd0\xa8\xbd\xc9\x30\x7a\xc0\x48\x8b\x9d\xd7\x0c\xd9\x0a\x7e\xd8\xf1\x79\xa7\x89\x35\x55\x62\x95\xb9\x1c\xc2\xb9\x72\x11\xe3\xb9\x81\xb8\xda\xfc\xb3\xd0\x6b\x76\xd0\xb6\xed\xa7\xfc\x61\x94\x5c\x0e\xe2\x65\x2c\x5a\xc4\x54\x25\x64\x96\xcb\x82\xf9\x8c\xc1\xcc\x92\xd8\x18\x93\xb1\x08\x2b\x31\xb4\x7e\x6d\x22\xa2\xde\x60\x9d\xe4\xce\x8d\x7c\xc4\xf4\xa1\x52\xc4\x7f\x41\x0d\x7f\xc3\x7d\x38\xcc\xd6\x29\xa4\xb3\x3e\x62\x21\x89\x60\x81\x79\x7d\x07\x53\xdd\x4f\xaa\x8a\x8b\x44\xd6\xc4\x67\x71\x66\xdf\xb4\xd5\x21\x54\x46\x36\x0a\x3c\x28\xd8\xf6\x8e\x38\xab\x54\x60\x8b\x98\x82\x1b\x83\xc1\x87\xb5\x39\x3a\xd8\x74\xa7\x6f\x4f\x5d\x72\x94\x93\xa1\xfd\x74\xcc\x77\x19\xca\xea\x99\x1d\x22\x9c\x5d\x0c\x8c\x4c\x5f\x89\xd8\xe4\x34\x5f\x4f\x52\x21\x43\x13\x41\x0b\x8c\x06\xb3\x31\x5f\x45\xed\x0c\x2f\x91\x38\xab\x96\x6a\xec\x0a\x64\x5b\x6d\xba\x76\x38\x0a\x53\x91\x23\xe0\xf3\x3b\x97\xf3\xd0\x60\x39\x4a\x30\x53\x58\x1f\xfd\xef\x3e\x6d\x36\x53\x11\x66\xb5\x53\xa9\xdd\xe0\x31\x05\xc0\x4a\xf6\x97\xd9\x5e\x95\x21\x7f\xd6\xdc\x96\x8b\xf3\xb4\x48\xd5\xf3\xa8\xe4\xf5\xae\x7e\xdc\x30\xec\x78\xb1\xae\xa4\xf0\xdb\x18\x9a\x94\x9a\x12\x21\x38\xcd\xfb\x5f\x96\x93\xdb\x00\x4b\xae\xd1\xa4\x21\xdc\x44\x12\x2f\x32\x72\x87\xf7\x27\xcf\x98\x9f\xca\xe3\xcf\x3b\xe3\xe3\xdd\x9b\x9f\x53\x50\x2c\xf5\xd9\xfb\x18\x6d\xe7\x91\xd3\x10\xd1\x22\x86\x9c\x9f\xc3\xb6\x95\xde\xc1\x60\x74\x77\xf3\xe1\x49\xe5\x2b\x63\xcf\xdf\xb0\xd9\x83\xe8\x9a\xf2\xf7\x5a\x8f\x48\x98\x43\xec\x05\xc5\xea\x5f\x0e\x72\x1a\xca\xb3\x87\xc6\x80\x25\xf2\x0a\xbe\x0d\x27\xb4\xce\x29\xf4\xa6\x4f\xb7\xf8\xe8\xa3\x32\x87\x3d\x3e\xd1\x21\xfb\x49\x34\x14\xb8\xcb\x0c\x00\xad\x3a\xb6\x16\xc5\xbe\x52\x41\x47\x1a\xde\xe9\xf8\xf4\x69\x74\xea\xe8\x4a\x4a\x8c\xe6\xfa\xbb\x7f\x5d\x9a\x6b\x75\xa7\xe6\x70\x45\x6f\xcd\xcd\x1d\x98\x2e\x8f\x82\x7a\x4b\xbb\x69\xde\xc7\xe3\x05\x3d\xfe\x83\x5b\x70\x30\x1b\x7b\x76\x3f\x00\x04\xbc\x90\x6e\x14\x55\x42\xf4\x87\xb4\xdb\xa2\xed\x56\x1b\xd1\xa2\x03\x06\x23\x6a\xf4\xb3\x6e\x40\x68\xe8\xc0\x07\xb9\x45\x4f\x87\x41\xa5\xf8\xf0\x79\xec\x1d\xb8\x83\x5e\xb6\x54\x42\x90\xd6\xad\xb5\x2a\x70\xd7\x67\x5d\x85\xdf\x4a\x9a\x12\x55\xbf\xd9\x36\xc3\x31\xfe\x51\xc0\x97\x7d\x12\x4b\x5a\x50\x6d\x29\xc6\xee\xc3\x3c\xaa\x25\xd8\xeb\x28\x95\x2d\x6f\xfb\x9d\x6e\x3d\xa8\x90\x38\x2d\x88\x87\x96\xd3\x74\x60\x7f\x66\x43\xb8\x9e\x73\x26\xd9\xed\xc4\x9a\x0f\x53\xbd\xcb\x8c\xc7\x6f\xfd\x39\x3a\x77\x06\x52\x2d\x04\x17\x00\x36\xcc\xb6\x63\x30\xdb\xac\x9d\xa7\xe6\x16\x8c\xaa\x88\xcb\x62\x18\x1e\x55\xa7\xb6\xd5\x21\xa2\x11\x5e\x23\xe2\x02\xee\x24\x80\xb5\x87\xbe\x45\x01\x44\x79\x79\xa8\xd7\x36\xf9\x01\x2e\xcf\x00\xe6\x7b\x31\xe8\x10\x4f\x6e\x7d\xf0\x8a\x96\x83\xcd\xc8\x9c\x03\xa4\xe3\x7e\xe2\x29\x28\xd4\x5f\xa1\x90\x94\xe0\xd6\xe7\xb4\x0b"}, +{{0x05,0x88,0xac,0xd4,0xe0,0x9b,0xa9,0x02,0x74,0xc8,0xf3,0xd1,0x57,0x5b,0x2b,0xf3,0x64,0xa7,0x76,0x88,0x4a,0x9a,0xeb,0x41,0x03,0x41,0x5e,0x16,0x3b,0xa0,0xbf,0x81,},{0x3e,0xca,0xe6,0x97,0xb4,0x25,0xd8,0x7e,0x34,0xa1,0xd9,0x44,0x09,0x8e,0x3d,0x32,0xe2,0xc1,0xec,0x56,0xc3,0x62,0x7d,0xf8,0x0b,0xa2,0xb8,0xa4,0x3d,0xdc,0x19,0x03,},{0xa1,0x11,0xb9,0x70,0x6d,0x24,0x2c,0xd3,0x6d,0x6e,0x87,0x41,0xcb,0xb0,0x97,0xb9,0xe2,0xff,0xfa,0x40,0xf4,0x3f,0xd6,0xf2,0xd3,0xd9,0x16,0x93,0x66,0x73,0x32,0xb5,0xf2,0xdb,0x5e,0xe3,0xea,0x20,0xb8,0x32,0x91,0xb8,0x40,0x57,0x95,0xb7,0x4d,0x63,0x3d,0x46,0xf4,0x75,0xab,0x7c,0x47,0x61,0x71,0x18,0x53,0x5b,0x80,0x51,0xd9,0x07,},"\xf8\x28\xf8\xc9\xda\xd2\x98\xc5\xb7\x19\xda\xa8\x52\xb1\x7e\x76\x25\x98\xa7\x0f\x4e\xcd\x16\xa2\xfc\x59\x6e\xb0\x26\x38\x99\xe9\x83\xd4\x4e\xdc\xc7\xbd\x24\x0c\xb0\x76\x10\x60\x0a\xe9\x6a\xac\x0d\xfc\x3b\xe3\x87\xb6\x16\x85\x08\x99\xb5\xcf\x44\xe1\x76\x7f\xfa\xca\x3d\xf3\x81\x58\x59\x84\x24\xf8\x07\x14\x14\xc7\x04\xe6\x0b\x42\x2a\xd7\x73\x77\xfa\x7f\x6a\x8c\x5d\x0e\xbc\x02\x35\xe2\xd4\x3a\x98\x4f\x3a\xdf\x75\x9e\xb1\x04\x47\xf3\xc2\xf6\xb8\x0d\x5a\x11\xef\x41\xd3\xa0\x98\x52\xc0\x93\x2a\x1b\x9a\xc2\x3e\x6f\x40\xa1\x67\xde\x21\x04\x1b\xec\x88\x85\xf9\x43\x3e\xb8\x0b\x95\xc9\x78\x59\x58\x04\x6c\xdb\x7b\xf1\x47\xa7\x99\x47\x82\x3b\x41\x49\xae\x05\x21\xd7\xe5\xaa\xbc\x15\x64\xfa\x40\x44\x10\x6e\x2e\x39\x2e\x9c\x34\x44\x57\xe9\x92\x93\x76\xea\x9b\x42\x29\xc6\xe7\x73\x8f\xe7\x90\x08\xd5\x54\xc4\x29\x39\x69\x14\xc3\x63\x87\xf5\x79\xb4\x6b\xab\x14\x6f\x6a\x95\x10\xeb\x6f\x8c\x85\x55\x1c\xbd\x84\xc7\xdc\x0d\x0b\x1c\x01\x0c\xcb\xa5\x96\x3a\x7f\x39\xf1\x81\xe4\x4d\xbc\x98\xe4\x95\xaa\x63\xc0\x10\x59\xcb\xe6\xa9\x9b\x07\xb4\x49\xe7\x75\x9c\x9a\xf9\xe0\xf8\xd9\x05\x4a\x67\xa3\x48\xfa\x19\xd7\xf9\x1e\xc0\xa4\xd4\xf2\xc7\x02\x6c\x3b\x84\x92\x59\xa3\x50\x41\x7f\xd8\x6c\xab\x21\x42\xe4\xcf\xe3\xc0\xaf\xbf\x25\x18\x2a\x2d\x52\xbd\x2e\x0b\xc9\x20\xe8\x50\x80\x83\x2b\x91\xb9\x27\xb6\x29\x48\xa6\x7c\x31\x7e\xb0\x90\x91\x46\x1d\x49\x3e\xea\x5f\xfc\x47\xbf\x08\x55\x82\x96\x82\x58\xa3\xc8\xdd\x81\xa8\x58\x27\x0b\xdd\xaf\xe7\x92\x56\x84\xa1\x5f\xfb\x51\xbc\xfa\xab\x93\x1a\xfa\x46\x5e\x30\x90\xe8\x6b\xe4\x1e\x35\x47\xcb\xa2\x34\xb8\x5f\xe7\xdb\x70\x04\x96\xa5\x05\x00\x2d\xf3\xca\x4e\xae\xc7\xb9\x62\x78\xc7\xd1\xa7\x7d\xb8\x34\xa9\x17\x97\xbb\xb8\x26\xd0\x92\xaa\x28\xb4\x95\x45\xed\x3b\x1e\xda\x23\xbe\x11\xa3\xf5\x28\xb9\x55\xcb\x0c\x4f\xa6\x6e\x16\xe9\x57\xe5\x70\x4c\xf3\x19\xe5\xf7\x9c\xc0\x9f\x2d\x05\x4e\x6d\xaf\x19\xe2\x92\x6b\x11\xe1\xe4\x13\xff\x82\x2c\xa1\x41\xf7\xc3\xd3\x85\xae\x95\xdd\x20\xb3\x46\xe5\x83\xcf\xb0\xc2\x29\xec\x39\xcf\x88\x9a\x54\x19\xcd\x37\xbc\x18\x4e\xf5\xfb\x14\x46\x22\x08\x0a\x30\x2d\x9d\x77\x45\xc4\x51\xf7\xd8\x82\x42\xcc\x26\xb9\x16\xa3\x56\x9a\xbc\x7d\x1f\x21\x6d\x57\x79\x7a\x47\x2b\xc6\x21\x76\x17\x58\xe8\x40\xeb\x8e\x29\xbc\x8e\xfc\xb7\xaa\xfc\x7c\xf8\xf4\xe5\x93\x30\xd3\x5e\xe1\x07\x49\x6d\xec\x6e\x71\x4b\x1f\xa4\x30\x98\x37\xbb\x47\xeb\x3a\x06\xb4\x60\x4d\xd2\x07\x33\xcc\x0e\xaa\xc2\x64\x9e\x18\xc0\x73\x42\xef\x55\xd1\x9b\x8d\x03\x95\x91\xac\x28\x69\xac\xc3\x4b\x6c\x3c\x1c\xa3\xcf\x26\x3f\xf8\x4c\xa4\x3a\x5f\x64\x65\xba\x34\x88\x8c\x10\x90\x13\xb3\x2b\xfc\x0d\x0d\x15\xf5\xa7\x6c\xec\x27\x0a\xb3\xac\x9a\x10\x63\x31\x31\x2f\x5a\x0a\x84\x28\x2c\x3a\x3d\x4a\xea\x1e\x7c\xf5\x3d\xbf\x8b\x24\x0b\xdd\x11\x1c\x34\xd2\xa9\x3d\xfd\x12\x58\xfe\x92\x67\x13\x3f\x75\x54\xdc\xc2\x1a\x8f\x43\x9c\x16\x5d"}, +{{0x7d,0x14,0x02,0x3e,0xb4,0x8b,0xbd,0x43,0x76,0x49,0xa2,0x41,0x87,0x79,0x05,0xa3,0xc9,0x32,0xf1,0x46,0x40,0xf2,0x9a,0x0f,0xb1,0x34,0x11,0x4e,0x8f,0x33,0xf5,0x82,},{0xea,0x5c,0x11,0xb4,0xb2,0xc5,0xef,0x4a,0xb7,0x06,0xcc,0xa3,0x47,0x50,0x43,0xc9,0x58,0x18,0xeb,0x56,0x5a,0x79,0x7e,0x33,0x68,0x8a,0xfe,0xac,0xd6,0x8a,0xdc,0xca,},{0x31,0x33,0x9d,0xce,0x23,0x33,0x6d,0xf5,0xb2,0xb1,0x93,0x52,0x2a,0xa3,0xdd,0x2d,0x41,0x14,0xa6,0x6a,0xf1,0x65,0x62,0x89,0xc9,0x52,0xbc,0x11,0xc9,0xb2,0x10,0xf7,0x7a,0x54,0xd4,0x61,0x61,0xf4,0xe0,0xc5,0x2b,0x30,0x13,0xe4,0x0b,0x9e,0x9e,0x84,0x27,0xd8,0x51,0x32,0x5b,0xd7,0x1c,0x4d,0x99,0x35,0x3e,0xee,0xd7,0x51,0x08,0x0d,},"\x90\x01\xdb\x31\xf2\x79\xbe\x50\x53\x19\xb8\xe7\x2b\xde\x11\x99\x51\x29\x80\xdf\x65\xf0\xd8\xa9\xb4\x93\x04\x67\x41\x3a\x99\x7b\x97\xa3\x62\xb5\x72\xa4\xb4\x4b\xc9\x40\x48\x7f\x18\xb2\x08\xce\x6a\xc5\xc6\x87\x16\xd3\xaf\x1b\xce\xf1\x70\x38\x3b\x5c\x4b\x5c\x47\xe4\x47\x37\x72\x6f\x93\x83\xbc\x4f\x14\x47\x68\xbf\x5c\xaf\xb4\xe9\xdf\xe3\x97\x61\xe6\xed\x47\x89\x71\xd1\xc7\x0e\x6d\xab\x2f\xd0\x49\x9d\xff\x92\x93\xb2\x39\xd1\x6c\x96\x02\x61\xc6\x82\x18\xb9\xf5\xb1\xbe\xe6\x90\xf0\xd2\x40\xc1\xb3\xdb\x71\x1f\x9e\x82\x1f\x08\x09\xbb\xeb\x9a\xaf\x24\x9c\xcb\x16\x8c\x67\xd9\x65\x56\x2d\x24\xf8\x48\x51\x61\x40\xbf\xd9\xfc\x05\x0d\x4f\x20\xda\x5a\x17\x94\x46\x8a\x9c\x07\x25\xea\x5c\x66\x9d\x5c\x63\x0d\x93\x10\xe5\x74\x51\x07\xda\xd3\x72\x61\xb5\xd9\x1e\x38\xe0\x85\x12\xe6\xf3\x73\xec\x5d\xca\xd5\xca\x09\x07\x29\x07\xc8\xfb\x7b\xf3\xb9\x26\xc3\x33\x94\x90\xb3\xf5\x1f\x76\x44\xe7\x3a\xe2\xec\x01\xd6\x1b\xe7\xc6\x52\x65\x36\xb4\xff\xd1\xab\x68\x49\xfe\x0c\x2f\x40\xd3\xbd\xa2\xa4\x9e\x55\x50\xb8\xdf\x97\x90\x81\xda\x85\x16\x8d\x0f\x71\x58\x2b\x90\x36\x77\x52\x6d\x1f\x1b\x15\x11\xe1\x38\xb6\x84\xfc\x46\xaa\xc8\xbd\x80\xc3\xde\xf7\xee\x81\x38\x19\x04\x61\x80\x7c\x55\x36\x12\x5c\xb0\xe2\xc3\xd0\x83\xa1\x87\xc7\x26\x9c\xb5\x31\xec\x36\x78\x78\x7b\x32\x55\x5c\xf0\x4a\xb0\x93\xc9\x00\x2e\x7d\x79\x2b\x4d\x93\x3f\x2e\x30\x70\xf3\x9a\xc8\xcc\xf8\xd5\xf5\x45\x5f\x12\x10\x9d\x8a\x8a\xeb\x4e\x21\x2f\xad\x4a\x70\xb1\x47\xc0\x4a\x7b\x91\x84\x60\xb1\x31\x63\x76\xe6\x40\x20\x85\x95\x17\xeb\x7e\xe3\x0c\x29\x0b\xe8\xb8\xd6\xf9\x67\x39\x15\x25\x6c\x3b\x04\xb9\xd9\x05\x4b\x52\x33\x8e\x0d\x36\x07\x85\xe4\x6a\x18\x28\x44\xc5\xc3\x76\x6a\xea\x8e\xd3\x11\xb2\xd4\x81\xc0\xb7\xb2\x11\x4e\x41\x8e\xd1\x7f\x8d\xeb\xf0\x1a\x83\xff\x37\x51\x70\x24\xee\x9e\x28\xe0\xc9\x0d\xce\x6d\x05\x9f\xfe\xe4\x13\xd2\x7c\xd6\x27\x83\xa8\xb8\xb5\x01\x6a\xd2\x76\xe3\x9d\xfd\x8f\x8f\x3d\xdf\xc4\x28\x10\x18\x18\xce\x50\x7f\x00\x3e\xb5\x8c\x9a\x5c\xc8\xb1\xaf\xf0\x5a\xab\x8f\x0d\x7f\x1d\x1f\x6d\x4b\x87\x1d\xbc\xed\x1f\x3d\x28\x66\x23\x97\x52\xfb\x13\xf6\xe1\x80\x34\xbb\x2b\x5a\x66\x35\xca\xa6\xec\xc4\x62\xe0\x58\xeb\xe2\xfa\x65\x1d\x3d\x0f\x36\xe2\x0a\x31\xf7\x65\xe4\xb9\x58\x27\x0b\xd8\x25\xc6\x81\x8a\xac\x1a\xd7\x56\x31\x35\xae\xed\xf1\x4a\x2b\x6d\x39\x8b\x6e\x34\x00\x84\x01\xb2\x18\x46\x18\x20\x07\x1c\x5a\xf7\x78\x46\xcb\x9c\x32\x81\x90\xc0\x61\xd5\xaa\x6e\x0e\xcd\xe7\xef\x58\x56\xb0\xe6\x81\x4f\x83\x3f\x70\x40\x96\xdf\x08\x25\xfa\x4b\x46\xdc\xda\xcf\xa2\x7c\xd8\x7b\xd7\xbf\xef\xf7\xf8\xca\xe1\x66\xa3\xa0\x4d\x43\x7c\x7b\xe7\x16\xc4\x90\x45\xc7\xbd\x3d\x13\x49\x62\x7c\x9c\xbd\x04\xc1\x5f\x00\xa6\x96\xe3\xcf\xfb\xb4\x5a\xf2\x91\x22\x62\x7e\x7e\xd3\x3b\x42\x49\x91\x3b\xec\x00\xf0\xe2\x8a\xa1\x12\x98\xcc\xe8\xb6\x49\x08\x1f\xe3\xb1\x69\xb4\xaa\xea\xca\x48\x5b\xda"}, +{{0xe8,0x30,0x6b,0xad,0xa6,0xd5,0x5e,0xb1,0x88,0xd9,0xf7,0x5c,0x81,0x5c,0xc9,0x14,0xe9,0x3c,0x9c,0x72,0x22,0x39,0x1c,0x15,0xbb,0xae,0xaf,0x93,0x54,0x43,0x79,0x35,},{0xbf,0x27,0x98,0xb8,0xe5,0x54,0xf5,0x1e,0x22,0x86,0xc3,0x03,0x4a,0x88,0xe5,0x77,0xff,0x23,0xfa,0x32,0xa6,0x72,0x44,0xea,0x82,0x45,0x91,0x2e,0x8b,0xf4,0x6d,0xa4,},{0xcc,0x66,0x27,0x30,0x8e,0x2f,0x42,0x43,0x83,0xfa,0x70,0x59,0x4f,0x57,0x57,0x91,0x60,0x05,0x40,0x02,0x7a,0x27,0x51,0x61,0x9b,0x28,0x3a,0xff,0xea,0xeb,0xc9,0xc9,0xd2,0x9a,0xc6,0xdb,0x28,0x6d,0xd2,0xc1,0xb5,0x96,0x58,0x7b,0x87,0x8d,0x1d,0xf4,0x78,0x1d,0x43,0x6b,0xb5,0x70,0xc1,0xc0,0xf0,0xd3,0x33,0x68,0xdc,0x66,0x52,0x0b,},"\xd7\x04\x38\x09\xc3\xe3\xdc\x00\xb1\x7e\xfd\x52\xc9\x13\x0b\x11\xb7\x86\xf1\xe2\x57\xb5\xe2\x2f\x81\xa7\xfa\xae\x60\x0b\xbc\xdf\xd5\x18\x53\x7f\xe8\x52\xc6\x42\x35\x97\x62\xfb\x75\xe8\xad\x85\x92\x49\xe6\xab\x49\xce\x1b\xb0\x4f\x24\x92\xf2\xaa\xc3\x54\x46\xba\x6e\xb0\x3e\x76\xde\x3a\xbd\x2d\x5f\xc7\xe6\x14\x68\x43\xad\xd0\x42\x86\x0a\x4a\x16\xb5\x9b\xdd\x7d\x03\x83\x78\xa3\x5e\x1a\x04\xb1\x21\x7a\x55\x71\x0d\x93\x7e\x2c\x90\x32\x23\x2e\xa2\xcd\xd1\xd2\x5a\x0b\xff\x71\xef\x5d\x3e\x0c\x05\x6b\x29\xcb\x92\xf6\xdf\x69\x2b\xde\x14\xdf\xa5\x0e\x13\x2b\xeb\xd8\x9e\x9f\x18\x33\x88\x0b\x65\x7a\x78\x1e\x94\xec\xb6\x03\x04\x17\x56\xe5\x51\x7d\x44\x23\xc5\x6f\xad\xc1\x3e\x2b\x31\x80\x88\xfe\xdd\xf3\xb5\xc8\x3c\x20\xb4\x6f\xdd\xbb\xa9\x23\x05\xe4\x86\x06\xda\xb7\x48\xce\x38\x48\xb8\x43\xf4\x71\x1f\x37\x0c\x3e\xc7\xd5\xe1\x9a\xb4\xc0\xac\x1a\xe1\x5a\xaa\xf2\x3d\x65\xfe\xce\xda\xbc\x08\x04\x9b\x9e\x29\x11\x3e\x57\x61\xed\x9d\x1c\x62\xeb\x07\x5c\xab\xb2\x67\x4c\xdb\xe1\xe3\xa8\x89\xba\xe4\xb1\xdd\x31\xb6\xa5\xb2\xea\x1b\x8d\xed\xcc\x3c\x51\x5e\xdc\x44\x67\xc3\x02\x31\x17\x6c\xd4\x4b\xec\x8a\x05\x79\x51\xab\x5c\xd3\x9a\x96\x23\xf8\xaf\x84\x73\xcd\x27\xd9\x33\x02\xbf\x8a\xa6\x24\xc9\xc3\xc5\x79\x9d\xa1\xdc\x49\x44\x94\xef\x8f\xf1\xdb\xe0\x18\x7e\xa5\x16\x26\x70\xb8\xd0\x98\xc3\xa9\x49\x19\x39\x8d\xad\xf7\x9e\x6c\x24\x91\xc4\x44\x39\x2c\x29\xcd\x50\xd5\x74\x35\x06\x32\x90\x84\x2b\xfa\x0e\x85\x30\xfa\xeb\xc0\x06\xd6\xea\x78\x01\x11\x7e\x0a\x3f\x01\x9e\xe2\x8f\xb3\x79\x22\x35\x40\x2e\x2f\x69\xb8\x7a\x43\xdc\x22\x7f\x9d\xe3\x16\x02\x97\x56\xc3\x16\x7d\x64\xa3\xa3\xf6\xd7\x31\x60\x33\x1d\x5a\x18\xee\xe5\xb0\xe6\xe2\x2a\x66\x3e\xfd\xcc\x8d\x67\xaf\x3b\xce\xd0\x41\xea\x84\x3a\x56\x41\x60\x3e\xc7\x2e\xfd\x64\x4e\x17\x3d\x19\x9a\x8c\x83\x0b\x2e\xa5\xfe\xc0\x37\x80\x27\xc3\x72\x25\xaf\xcb\x60\x4c\x4c\xdc\xf4\x09\xbe\x1c\x50\x9c\x9a\x37\x7b\xe0\xd0\x52\x41\x07\xc6\xd9\x2b\x5f\x09\xa2\x9e\xfb\x71\x09\x29\x56\x70\xbb\x1a\x1d\xd3\xea\x00\x8b\xb7\x91\x85\xf0\x9b\x98\xf0\x20\xc4\x3f\x14\x39\x68\x5b\x96\xf6\x19\x93\x11\xa0\x90\x87\x0f\x0d\x9b\x10\xd4\x95\xcd\x41\x0a\xa9\x5b\x7e\x53\x74\x9b\xe3\xa6\xc0\xfb\xc7\x29\xf9\x6c\xf8\x56\x43\x97\xb0\x9c\x13\x51\x40\x16\x82\x5f\x72\xf1\x4e\xb9\x32\x94\xd7\x01\x0a\xcc\xfd\x11\xf1\x7a\x6a\xc8\xf5\x44\x26\x3d\x60\x38\xd5\xc7\xdb\x29\x48\x62\x91\xb3\x0e\xa4\x9b\x6b\x54\xcf\x88\x82\x6d\xd2\x52\xcd\x9d\xbb\x57\xd8\x41\xb5\xa4\xcf\x70\x2a\x32\x64\xfa\xa4\xdc\xcc\x86\xab\x14\xda\xf1\x24\xef\x3d\x53\x35\xa6\x87\x8d\x06\x5c\x6b\xa2\x99\x91\x04\x57\x65\xee\x55\x42\xcc\x9f\x5d\x9f\x35\x4d\xcd\x2c\x6e\x0c\xf7\xff\x3a\x30\xf6\x49\xb5\x91\x2d\x97\x1d\x63\x35\x78\xf1\xe9\xf2\x63\x87\x4d\x05\x65\xc2\x47\x30\x1d\xcb\xd1\x5d\x76\x21\x1a\xe2\xd3\xd5\x06\xfc\x64\xde\xb7\xe0\x42\x56\x5d\x43\x8e\x2b\xfb\x24\x92\x43\xb7"}, +{{0x36,0x3c,0x1e,0xa7,0xc3,0x2e,0xa3,0x28,0xa0,0x55,0xaf,0x7b,0xd8,0xb3,0xbf,0xd2,0x04,0xfb,0x0b,0xbd,0x4b,0xf4,0x2f,0xfe,0x26,0x2f,0x3a,0x5e,0xbd,0x54,0xda,0x55,},{0x7a,0x83,0xec,0xca,0x51,0xef,0x6e,0x5a,0xa0,0x43,0xa5,0xce,0x04,0xd9,0x28,0x8a,0xdd,0x49,0xa2,0x77,0x54,0x8b,0xd3,0x01,0x6b,0x69,0x3f,0xfa,0x79,0xa2,0x2e,0xdc,},{0x5f,0xd1,0xe5,0xf9,0x92,0x2a,0x12,0xf6,0x36,0xb7,0x2a,0x7d,0x62,0x17,0x09,0x1f,0x94,0x8a,0x55,0xbc,0xb1,0x82,0x6b,0x8f,0xca,0xf9,0x9d,0x26,0x41,0x6c,0x7a,0xb1,0x35,0x1c,0x10,0xf4,0x09,0x3f,0xfd,0x8a,0x2a,0xf8,0x69,0x14,0xa0,0xa9,0x81,0x84,0xec,0x7e,0x06,0xd2,0xde,0xe8,0x7f,0xdc,0x0f,0x4a,0x47,0xf8,0xc6,0x3c,0xf5,0x01,},"\xc4\x1c\x1e\x1f\xb7\x59\x54\xa0\xae\x0e\xbc\x29\x09\x0b\x9f\xc5\x33\xe6\x93\xe7\xc7\x10\x5c\xfe\x40\xef\x52\x6e\x4e\x12\xa7\x40\x52\x21\xf2\x18\xc7\xac\x01\x9e\x1d\x4c\x92\xda\x28\x53\xf2\xd7\x26\xaa\x62\x27\x79\x24\xdf\x0c\x34\x3f\xc3\xd4\x7c\xd5\xa9\x9a\x3e\x27\x9b\x26\xa1\xb1\x3b\x1f\x2a\xa3\x6f\x7c\xcb\x4b\x54\xfb\xef\x18\xbd\x87\xa5\x5f\x1b\xc4\x0c\xe7\xb2\x02\x91\x45\xee\x7a\xab\x39\x17\x95\xac\x68\xde\x61\x99\xf5\x05\x94\xfc\x79\x61\x1b\x85\x13\x1c\x14\x30\x21\xf2\x6f\xa3\x58\xda\x0c\x7c\x6a\x65\xdd\xe0\x76\xda\xb4\x88\x67\x5b\x72\x23\x09\xe5\xed\x97\x46\xd1\x8a\x89\x30\x99\x06\xa7\xa9\xdf\x23\x7d\xd2\x7b\xd5\x90\xcc\xc7\x7c\x40\x2e\xf6\xe1\x9c\xa6\x3c\xc8\x6b\x85\x16\x03\x30\xee\x6e\x1f\x1f\x47\xa2\xff\x80\x7e\xef\xad\xc0\x09\x63\x52\x0a\x1c\x60\x0a\x3e\x45\xaa\x7f\xb2\x55\x4f\x47\xd8\x97\xbd\x86\xd8\x1c\x3b\x08\x77\x10\x12\x22\xfa\x78\x50\xb8\x0c\xe3\xbc\x06\xc9\xe5\x8c\x0c\x96\xe3\x2f\xec\x85\x30\xc9\xfa\x1e\x41\x63\xf0\xef\x84\x56\x95\x2b\xf6\xdd\x58\x04\x5a\x36\x3d\x61\x88\x0e\x9a\xc9\x76\xa3\x60\x3e\xf7\x7a\x4c\x39\x5e\x6a\x07\xe3\x42\xf6\x02\x3b\x8a\xf1\x02\x25\xcf\xf2\x40\xef\xc0\x36\x6a\x79\x9f\xd8\x6e\x9d\x06\x20\x60\xd8\x72\x40\x33\xbd\xf6\x75\x88\xcd\x73\xac\x28\x4d\xe4\xc6\x94\x3c\xf4\x5e\xe4\xf7\x5f\x59\x37\xd9\x7d\x78\x10\x5f\x0b\xbe\xce\x04\xd3\xdc\xb5\xe4\x24\xef\xf8\x9b\x77\x3e\x5d\x6b\x4f\x37\xef\xa9\xa0\x65\x4c\xb3\xef\x34\x52\x78\xa6\x2d\x87\x6c\xfe\xf9\xa3\xdc\xdc\xeb\x70\x81\x44\x18\x77\xeb\xd5\xfa\x30\xc9\xd9\x54\xe3\x68\x4f\xa4\x76\xa4\xf4\x85\xd4\x26\xfd\x3c\x8c\x32\xbe\xa0\xf9\xcc\x20\xb1\x5e\x8f\xdf\xc3\xca\x4b\x30\x2c\x07\x4f\x50\x81\x32\xd1\x5d\xe6\x25\xc1\x0a\xe0\x73\x78\x11\x46\x3d\xcc\x55\xfc\xc4\x01\x4b\x20\x20\x8f\xff\xce\xfa\x9d\xd4\x52\x11\x9b\x16\x52\xde\x41\x34\x8f\x69\xf2\xc4\x88\xf5\xcc\x18\x56\xd6\xe7\x8a\x5c\xbe\x3e\x37\x3d\xd4\x59\x8e\x2d\x39\xf8\x76\xeb\x94\xe0\xb0\x1b\x21\xfa\x91\x29\xef\x41\xb6\x39\xf4\xe0\x5e\x69\xde\xb1\x83\x5e\xd4\x4b\x91\x12\xa6\x86\x2a\x5b\xce\xa0\x72\xc6\xe1\xb8\xf0\xf0\x58\xf4\x6b\xac\x2a\x84\x5a\x58\x2d\x14\x8f\x17\x76\x0b\x9e\x0a\x2b\xa6\x0b\xbb\xf3\x88\x4a\xf9\x4d\xd4\xc7\xec\x9d\xb0\x8e\x9a\x5b\xcc\x6d\xde\x13\x46\x44\x2e\xe1\xf4\x70\x7d\x1f\x79\xb6\x9b\xa8\x67\xf4\x18\xdc\x27\x91\x73\xf7\x7a\xdb\xc5\x8a\xb8\x5e\xa3\x93\xb9\xdc\x68\x26\x19\x00\xc1\xca\xa8\x2d\x2f\x50\x47\x4c\x42\xae\xc9\x11\x31\x42\x78\xc0\xaf\xfa\x2a\x6b\x6c\x36\xd1\xff\x88\xf3\xb4\x9f\xb2\xb7\xc3\x39\xd2\xa7\xc2\xb3\x04\x9f\x8c\x0a\x08\xd1\x6a\x9e\x8d\xf9\x3d\x13\x0d\xa4\x84\xbd\xba\x6d\xbe\xc5\x34\xcd\x51\x09\x7a\x04\x82\x21\x10\x6b\xab\x48\xd6\x7f\x95\x1b\x75\x05\xa1\x48\x48\x92\xb8\x57\x79\xc5\xa3\x11\x17\x02\x12\x4d\x95\x7a\xcf\x2d\xc3\x52\xef\x9b\xa2\x47\xbc\x80\xe2\xce\x96\x26\x9c\xe8\x5e\x78\xb9\xeb\xda\x98\x90\x76\xdd\x5f\xf7\x3e\x1e\xb2\x75\xe5\xd7"}, +{{0xdb,0x22,0x28,0xff,0xff,0xa9,0xd2,0x53,0x4a,0xef,0x91,0x8f,0xb8,0x5b,0x82,0x1a,0xd3,0x60,0xe2,0xd3,0x9d,0xec,0x5a,0xeb,0x2d,0xb0,0xdf,0x02,0x49,0x7f,0x94,0x16,},{0x6d,0x01,0x95,0x77,0x7f,0x81,0x05,0xff,0x52,0x3b,0x79,0xc5,0x9e,0x3c,0x30,0x81,0xfe,0x89,0xdb,0x6f,0x87,0x03,0x3f,0x09,0x4f,0xa5,0xa9,0x40,0xce,0xf8,0x4b,0xb4,},{0x82,0x18,0x9d,0x34,0x0b,0xc1,0x1c,0xea,0xa4,0x00,0x41,0x0e,0x08,0xba,0xe9,0xd9,0x01,0xaf,0x05,0x91,0x25,0xe9,0x53,0x78,0x6f,0x8a,0x04,0x3d,0xdf,0x11,0xf7,0xb2,0xf8,0xe3,0xb6,0x17,0xac,0xcd,0x78,0xe2,0x93,0x9a,0xdf,0xab,0xf2,0xd2,0x47,0x1f,0xaf,0xd6,0xf5,0xbc,0x45,0xb1,0x40,0x75,0xb3,0x28,0xe3,0x4d,0x80,0x75,0xb2,0x07,},"\xfc\x07\xcd\x99\x04\x0f\x13\xe5\xa8\x4f\x94\x74\x6d\x6b\xb8\x68\xf7\x52\xb4\x48\xb6\x2d\x99\x59\x3e\xf2\x9e\x43\xcc\x82\x45\xf0\x47\x0f\x65\x55\x2d\x64\x32\x20\xf6\x71\x92\x85\xe1\x5c\x37\xa6\xd1\x74\xae\xf7\x60\x88\xcc\xda\x5f\x88\x68\x5b\x52\xda\xe2\x84\xc6\x5b\x38\x0d\xa3\x45\xa2\xe1\xaf\x2e\xd7\x64\x80\xd2\x69\xcb\x93\x4b\x43\x17\x62\x0b\x79\x2e\xbb\x39\xb2\xa6\x78\x24\x7d\x6d\x81\x5f\x2a\x5c\xb9\xaa\x56\x0e\x4b\xf6\xde\xba\x4c\x0a\x0d\xdc\x82\xd0\xe5\xa5\xa6\x5a\xcb\xc4\x78\xe1\xec\x6b\x06\x4d\x7b\xb7\x38\x8a\x73\xf6\xed\xa3\x0b\x0b\x6b\x73\xdd\x8f\x87\x92\x63\xad\x1a\x03\x48\x67\x1d\xcf\x21\x1c\xb9\x6e\xd0\x8e\xd5\x2f\x33\x17\xda\x68\x18\x5d\x6b\xb2\x58\x9d\xc1\x1d\x75\x5d\x47\xa3\xb6\xf6\xa0\x38\x6a\x85\x94\xd9\x57\x0b\x2e\x9b\x0d\x4b\x5e\x13\xdc\xcd\x9b\xb7\xac\xbe\xf0\xab\x27\x6a\x7a\xeb\xe1\x29\x31\xbe\x67\xf1\x0d\xe2\x67\xa0\x29\x89\x53\x01\xf5\x66\x25\x30\xad\x8a\xb3\xd2\x30\xb3\xb6\xd7\x09\x3a\xcd\xfb\xf2\x74\x75\x7a\x90\x78\xe2\x0c\x23\xbc\x82\x2d\xef\xfa\x61\x00\x54\x86\x10\x2c\x01\xab\x82\xbd\xc8\xcd\xcf\x1b\xb3\x7f\x9b\x56\xd3\x9e\x50\xfd\x5a\x68\x95\x41\x6e\x76\x7f\x4e\x36\xc1\xa4\x17\x78\x90\x81\x25\xb5\xca\x3f\x92\xa9\x0d\xa9\xad\xdf\xf1\x55\xfb\x1f\xd7\x76\x88\x08\xa8\x0f\x20\x3e\xd7\x37\xef\x00\x77\x63\xbd\x2f\xea\x9f\xf2\x8c\x84\xb4\x35\x51\xc9\xfc\x43\x8f\xfc\x47\xfc\xfc\xf6\x4d\xc7\x70\x06\x13\xaa\x8b\x3a\xf8\x63\x3a\xe8\xb6\x98\x74\x37\xc0\xaa\x47\x81\xbe\x1e\x82\x13\x96\xc5\x36\xcb\x30\x05\xd0\x55\x49\xb1\xcb\xa7\x01\x35\xaf\xb7\xfe\x30\x68\x96\x1c\xad\x3a\x14\x63\xcc\x0b\x55\x60\x68\x4e\x27\xbb\xa7\x7a\xef\x41\x9d\x82\x38\x68\xe0\xce\xba\xd1\xf1\xce\x0a\xe9\x02\x74\x4a\x15\x2d\xd2\x94\x51\xa1\x7e\x28\xa8\x9a\x71\x58\xa1\x83\x6e\xfc\xe4\xa3\xe5\xc7\xd1\xfa\xa4\xc3\x87\x5b\xc4\x6c\x4d\x9b\xe2\x2d\x66\xd3\x66\xac\x6f\x59\x53\x8a\x00\xb2\x75\xb0\x2f\xac\x6d\xa7\x55\xa8\x54\x08\x19\x97\xd5\xd1\xd0\xe6\xe5\x68\xa5\x95\x8c\xf3\x34\xc5\x18\xcd\x51\x7a\xb9\xd7\x3c\x48\xd6\xcb\xc4\xae\x4e\xea\x43\x53\x11\x3e\x7e\x4a\x7c\x05\x92\x0e\x68\x6b\xf0\x7a\xfb\xfb\x8d\xd2\xec\x4f\x18\xfa\x71\x38\xe5\x7d\x33\x2c\xd7\xa4\x22\x8f\xea\x73\xbc\x09\x25\x2f\x24\x42\x72\x94\xeb\xd3\x64\x5e\xe0\x99\x6c\x2e\x85\x1a\x8a\xa5\x1a\x7c\xd9\xfc\x2e\xab\x47\xc0\xab\x21\x3f\x4f\x51\xd2\x16\x09\x1e\xd0\x89\xe4\x59\x2e\x9b\xb0\x82\x8b\x85\x8f\x84\xf6\x0b\x93\xad\x84\xa0\xa2\x28\x27\xcb\xd2\x74\x14\xb7\x81\x32\x2a\x04\xd3\x96\x08\x28\xf6\x38\xdf\x28\x34\xc7\xf7\x83\x9d\x70\xdb\x12\x6b\xee\x5a\xf2\xee\x75\x59\xa8\xac\x4c\x01\xa6\xc3\x91\x39\x6a\xf9\x3f\xa0\x60\x89\x40\x29\x7d\xdf\x89\x00\xc5\xdd\xb4\x66\x34\x0a\xe5\x1c\x60\xc7\xea\xd7\x62\x44\x7e\x76\xd8\xbc\xcb\x57\x39\x97\xcf\x66\x14\xd1\x88\xa0\xb9\xa2\xf5\x6e\xed\x9b\x0f\x9d\x46\x3a\x19\x78\x7f\x40\x92\x58\x1a\x65\xc6\xbf\x78\x1b\x93\xc5\x60\x87\xe5\x4e\xe1\x34\x3a\xab"}, +{{0x66,0xb5,0x0f,0x69,0x2e,0x39,0x5e,0xb8,0x33,0x86,0xe0,0x27,0xc8,0x2c,0xe3,0xfd,0xee,0x3b,0xd8,0x99,0xb0,0xd3,0x17,0x9d,0xb0,0x86,0xfb,0xf5,0x24,0xf5,0x74,0x59,},{0x44,0x85,0x36,0xe9,0x82,0x40,0x84,0x37,0xce,0x89,0x67,0x40,0x53,0xe3,0xc5,0x89,0xc9,0x8c,0x09,0x5c,0x60,0x02,0x1a,0x11,0x81,0x78,0xc6,0x26,0x1d,0x88,0x10,0xfe,},{0xbd,0x13,0xf6,0x36,0x2c,0x07,0x07,0x89,0x22,0xf3,0x0c,0x63,0x30,0x75,0x1b,0xf6,0xe7,0xcf,0x42,0xa7,0x69,0x16,0xee,0x65,0x3e,0xb1,0x7a,0xcc,0xff,0x1f,0xbb,0xca,0x35,0x25,0x8c,0x4c,0xbc,0x58,0x2a,0x5e,0x8c,0xc9,0x4f,0xd2,0xc7,0xed,0xeb,0x53,0x76,0x2f,0x1f,0xc2,0x31,0x23,0xd7,0xf4,0xf1,0x45,0x40,0x9b,0x31,0xcd,0x38,0x02,},"\x74\x28\xa9\x64\x21\x2b\xcb\xe8\xdf\x7d\x59\xe4\x8e\x92\x34\x80\xaa\x0e\xe0\x9b\x91\x0d\x04\xef\xb6\x90\x36\x62\xef\xc3\x10\x7a\xc8\xfd\xc0\xc5\xf3\x92\x72\x74\x0c\xd8\x77\xe1\x6c\xd7\x1c\x54\x92\x38\xc3\x37\x22\x0c\xe2\xf6\xb5\xa1\xfc\x6f\x7b\x0a\x1c\xd4\xed\x21\xd9\x38\x89\x08\x1e\x34\xfb\x7f\xde\xcf\x41\x78\xbb\xd4\x31\xe6\x11\xe5\x39\xd9\x00\xc3\xd0\xac\x3d\xc7\x10\x7b\x36\xb4\x1d\x6d\x0d\x5d\x32\xc1\x97\x27\xf9\x08\xb6\xeb\x36\x7f\xeb\xb3\x52\xa4\x93\x58\x1f\xf1\x28\xb5\x6c\x4c\xaf\x6f\xb8\xe0\x99\x81\xf0\xd3\x79\x57\xd1\x28\x20\x17\xfb\xb8\x07\x61\x4c\x20\xf4\x65\xdc\x02\xb0\xcd\x96\x99\x83\xbd\x5a\xe1\xeb\xf6\x57\x8d\x7f\xf3\xce\xff\x32\x0e\x25\x56\x21\x99\xde\xe9\x34\x75\x7c\xc1\xf5\x8d\x55\x40\xc4\x1a\xac\x1c\xe4\xf2\x11\xf0\xb8\xec\x41\x07\x17\x40\x30\xe7\x02\xbc\x6a\x8a\x9c\x85\xc5\x05\xc9\x31\x6a\xef\xea\x3e\x43\x72\x24\x2d\xe0\x19\xb3\x5e\x2b\xd3\xc5\xa9\x56\x52\x19\x71\xc1\x06\xa3\xad\xbb\xc1\x3c\xdc\x4f\x7f\x9d\x3c\x58\xb9\x6a\x34\x4b\x4a\xc3\xef\x6b\xd8\xac\xa6\xed\x98\x76\xb4\x3e\x64\x97\xfa\xf7\xfa\x4c\xf2\x7f\xbc\xb6\x65\x73\x0c\x09\x1e\x13\xaa\xf7\xe9\xef\xe7\xdd\x10\xe1\x4e\xb1\x9a\x92\x00\x42\x42\x10\xec\x8b\x8f\xba\x7e\x69\x44\x4c\xe1\xa9\xe3\xa7\xb2\x6c\x11\xf6\xb7\x14\x5b\x69\x83\xa7\x80\x57\x76\x48\x40\x31\xbf\xf5\x2e\x81\xae\x76\x9b\x70\xa2\x82\xb0\x94\xff\xb5\xfb\x55\x25\xdc\x1a\x87\x2e\x20\x7e\x82\x7a\x2e\x11\xf4\xec\xf7\xb5\x30\x8c\x74\x8a\x92\x78\xea\x7b\xd6\x61\x88\x19\x44\x00\x43\x0c\x8c\xd5\x96\xeb\xb8\x72\x21\xe5\x36\xf6\xaf\xe1\xf1\x50\x5d\x6a\x59\xf4\x1d\x16\xa2\xf0\x14\xe1\xcf\xa5\x13\xf7\xa6\x97\x31\xd7\xbf\xdb\x2a\xff\xce\xfe\x05\x37\xd4\x2c\x79\x6e\x3f\xd2\x7e\x41\xb7\xca\x72\x05\x1b\xef\x28\xbb\x7b\xde\x70\x10\xdc\xfe\xd8\xaa\x16\xef\x67\x6d\xb6\xe5\x20\xc3\xce\xf8\xd6\xf5\x8a\x9a\x28\x13\xcf\xf0\xf7\x04\x1f\x87\xfb\xfb\x84\x31\xe0\x20\xed\xe1\xd4\xea\xf1\x9e\x23\xb9\x83\x44\x5c\x59\x15\xb5\x4a\xdf\xb5\x57\xfc\x20\xd0\x05\x8f\x40\xf5\xe0\x98\x25\xdb\xa8\xd8\xf2\x0c\x00\xf4\x3b\x3a\xee\xbb\x61\x57\xbe\x32\xec\x54\x62\x7d\x5d\x42\xab\x81\x3c\xf9\x7f\x09\x5d\x26\xdb\x80\x36\xc1\x2e\x82\xcb\x96\x3e\x80\x01\x16\x7e\x61\xab\x39\x3b\x4c\xca\x75\x5e\xce\xa8\x69\x95\x4e\x32\x3f\xa5\x26\x2c\x5f\xda\x3e\x0b\xe9\xa5\x1e\x5a\xf5\x1f\xa6\x44\x48\x24\xfb\x83\x7c\xc6\x7b\xe5\x37\xa8\x75\x69\xc3\x0c\xf0\x11\x4d\x39\xa0\x39\x42\xde\x4e\x1c\xd5\x23\x35\x5d\xab\x1a\xf3\x60\x80\xa9\xa9\xa5\x48\xbe\x1c\x2a\x7f\xbe\x54\x33\x77\x23\x15\xd2\x83\xe5\x15\x6d\xf6\x48\xbe\xe4\xb7\xdc\xda\x74\xf1\x59\x05\xd5\x42\xbe\x54\x87\x3c\x15\xc5\x3f\xf4\x2a\xca\xbf\x8c\x56\xf2\x57\xd7\x64\x72\x2d\xb4\xe9\xc7\x18\xe1\x20\x98\xa3\x45\x74\x86\xa6\xc9\x47\xac\x2d\xe0\xaf\x53\xe8\x2c\xf9\x50\xbb\x37\xca\x29\xc8\xda\xdf\xa3\x64\x6d\xb4\x98\x2a\xf5\x72\xd3\x9b\x26\x8c\x7f\x96\xb0\x3e\xf6\xb6\x53\xc8\x79\x45\xf2\x9b\xc5"}, +{{0x55,0x32,0x8b,0xe4,0xb3,0x70,0x82,0x27,0x33,0xff,0x39,0x89,0xa6,0xa3,0x28,0x2d,0x65,0xfe,0x8f,0x20,0x7a,0xb7,0x27,0x0d,0x7c,0x2e,0x72,0x7c,0xa3,0xcf,0xaa,0xc4,},{0x51,0x8e,0x02,0xee,0xf5,0x2f,0x5a,0xae,0xbd,0xe3,0xd1,0x08,0xea,0x79,0xec,0xad,0xfc,0x4d,0x99,0x4c,0xe1,0x95,0x36,0x21,0xe5,0x4b,0x7b,0x3b,0x12,0x1f,0xf8,0xff,},{0xf5,0x8d,0xb1,0x9f,0xd8,0x34,0xe1,0x51,0x94,0xc3,0xc0,0xf8,0xa6,0xa5,0x0e,0xbc,0x4c,0xf0,0x74,0xe8,0x0e,0xa2,0xe7,0x0c,0xda,0xf1,0xe1,0x69,0xbd,0x51,0xeb,0xd0,0x99,0x0b,0xad,0x77,0xc4,0xfa,0x20,0x8b,0x8d,0xd1,0xe2,0xc8,0x57,0x4c,0x01,0xb5,0xf5,0x96,0xc8,0xdf,0xa6,0xbb,0x8e,0x6a,0xe3,0xa4,0x7f,0xf4,0x12,0xe7,0xe2,0x09,},"\x6c\x24\xc9\xaf\xbb\xf1\x2d\xca\xee\x6f\x10\xe4\x08\x92\x52\xf2\xc6\x0b\x2a\xb9\x3a\x02\xc1\x60\x2f\xb5\xde\x4c\xe3\xbd\x92\x3e\xb0\x2f\xe1\x03\x9f\xdc\x15\x99\x6a\x44\x69\x15\xe7\x67\xde\xe0\x17\x6d\xdd\xb7\x8e\x9d\x6b\xbf\x06\x96\x75\x77\x5a\x82\x9d\xd8\x08\xd3\x76\xb0\xcf\x79\x20\xbf\x1a\x66\xe1\x30\x3b\xa5\x24\x19\x78\x5f\x25\xf2\x8b\xb3\x38\x99\xeb\xde\x84\x0c\x0a\xb1\x4b\x91\x9a\x65\x80\xcb\xaa\xc3\xa8\x05\x62\x7b\x9c\x4a\x77\xba\xa1\x6f\x82\x5a\x9e\xac\x2d\x6d\x36\x41\x65\x14\x93\x37\x0e\x50\xee\xe9\x4c\x74\x04\x97\x64\x36\x56\x05\xab\x4d\xac\x1a\x03\x02\x27\xa3\x30\xaa\x17\x8f\x2f\x8d\xa3\x77\xaf\x73\xf0\xbb\x04\x0b\xac\x12\x36\x6e\x65\xe0\x59\x10\x55\xf9\xf2\x3e\xac\xa3\x5e\x96\x88\xd8\x37\xa3\xc0\xd9\x9c\x16\x8f\xd8\x86\xac\xc9\x22\xcf\x37\xa7\x11\x8e\xf8\xa4\x4b\xb0\xa4\xfa\x42\x88\x04\x93\x09\xa7\xdc\x1b\xed\x80\x62\x1e\x10\x63\xe3\xe5\x92\xc0\xfb\xa4\x2d\x73\x98\xeb\x15\xf7\x40\x28\xac\x15\xd7\xed\x65\xa6\x36\x8a\x13\xb7\xf9\x56\xd1\x95\x47\xeb\x50\x6c\xe7\xec\x90\x73\x4e\xb9\x49\xcf\xf1\xd9\x8c\xe4\x14\xf1\x0a\xdc\xba\x8c\x00\x73\x20\x01\x87\x50\xa7\x1b\xd3\x6d\x3b\x6b\xfd\x61\x27\x05\x45\x08\xe3\xef\x65\xd9\x98\x48\x51\x4d\x33\xd6\x8b\x58\xe3\xa4\xb2\x24\xf7\x9b\x6e\x34\xdd\x48\x03\x40\x46\x7f\xe7\xf0\x25\xcc\x88\x21\x3d\x80\x8f\xbb\x5b\x91\xe2\xe4\x3c\xf9\xd9\x50\x64\x07\x98\x65\x92\x73\xd4\x7a\x25\xf1\xf0\x13\x2f\x68\x82\xfa\xad\xba\xfb\xa2\x8f\xee\x5f\xa1\x72\x72\xc1\xa9\x00\x11\x72\xb3\xab\x6f\xf2\xc3\x15\xf2\x6c\x07\x73\x44\x05\xb5\xee\x8b\x5e\x4f\x08\xe1\xe3\xb8\xae\xa0\x19\x46\x7f\xb0\x71\x88\x7f\x19\x19\x01\xa2\x1c\x59\x76\xc1\xca\x8a\xaf\x0a\x1d\x4a\x2e\x69\x8e\x76\x23\xe9\xbb\xe9\xca\x2a\x67\xa1\x53\xa1\x6f\x89\x5e\x6d\xd9\xea\x92\x44\x41\xb4\xbd\x0b\x67\x45\x52\xe3\x98\xb8\xd9\x70\x34\x3a\x9b\xc7\x76\xa3\xa3\xfc\x1a\x86\x60\xc5\x62\x5d\x60\x81\xb5\xd8\x7f\x0f\x8a\xc9\xf0\x7a\xb5\xab\xe7\x7c\xdb\x8e\x30\xd2\xfd\x1f\x6f\x46\x52\x5c\x75\xdd\x0d\xd1\xca\x32\x81\xcc\x89\x34\x6f\xb3\xe6\xd7\x38\x8e\xbe\xe1\x54\xcb\x59\xbd\x9e\x95\xed\x6a\x41\xd5\xdf\x66\x8b\x59\xea\x13\x78\x68\xeb\x12\x0b\x8a\x2c\xfd\xf4\x67\x44\x14\xfd\x27\x96\x99\xf2\x8b\x5a\x5c\xcc\x2e\x2f\xc8\x02\xa4\xc9\xe0\xb8\x5b\x76\xf2\x0f\x6b\xce\x2a\x49\x54\x88\x6f\xc4\x02\x67\x0a\x71\xef\xd2\x61\xf5\xdd\x7b\xca\x16\x88\x4a\x28\x7c\x62\x2f\xd4\x45\xf6\x8d\x44\x15\x1c\xc0\x13\x4b\x22\x9d\xa3\x8d\xaa\xab\x81\xb5\xc9\x60\xd5\x77\x00\xca\x92\xb2\x6d\x0b\x14\x21\x34\xce\x94\xb7\xbe\x6c\x18\x61\x0e\xa2\x13\x6f\x8b\xa8\x32\x9a\x2e\x8c\x00\x0b\x8f\x02\xfe\x05\xbc\xf7\x2c\xb7\x1f\x8c\x72\x53\x5f\xfc\xd8\x18\xe3\x8e\x79\x92\xa8\xf0\xc3\x2a\xc6\x21\x77\xd1\x52\x2a\xe5\x52\xc6\x0c\x1e\xe6\x16\xb7\x5e\x4b\x34\x42\xe7\x96\x57\xe4\xa3\x33\xc0\xb3\xd7\x44\xea\xf2\x60\xd0\xc3\x36\x93\x16\x86\xa6\xd6\x68\xc6\x4f\xef\x44\x00\x52\x35\x2c\x2b\x25\x8c\xfb\x65"}, +{{0x7d,0xa0,0x5f,0x04,0xe5,0xd3,0x8b,0x98,0x9b,0x83,0xf7,0x2f,0x7a,0xb2,0x6c,0x13,0x87,0x76,0x75,0x8f,0x4f,0x57,0x7e,0x49,0xdc,0x73,0xd6,0x01,0x3f,0xf4,0x37,0x59,},{0xb1,0xde,0x51,0x67,0xf4,0xd3,0x30,0x80,0x4e,0xec,0x9e,0xb5,0x65,0xef,0x40,0x55,0xf1,0xb6,0x4d,0xd9,0x5e,0x1c,0x9b,0x27,0xc6,0x7f,0xfe,0xf9,0x14,0x82,0xcc,0xa8,},{0x05,0xf1,0x17,0xf9,0xbc,0x3e,0xa5,0x5d,0x45,0x5e,0x9e,0xf1,0x35,0xe9,0x2e,0x76,0x65,0xd1,0x80,0x70,0xd8,0xf5,0xe3,0x75,0xdf,0x67,0xbe,0x18,0x17,0xce,0x14,0x35,0x7a,0x55,0xe7,0x01,0x66,0xf3,0x26,0xb7,0x7d,0x85,0x24,0x32,0x27,0xcf,0x67,0xd8,0xf2,0xe0,0xbf,0x84,0x40,0xca,0xbf,0xb0,0x52,0x75,0xb3,0x73,0xf1,0xe1,0x19,0x0e,},"\xa6\xa8\x61\xd8\x94\x7c\x5c\xd6\xad\x08\x19\x60\x2e\x32\xea\x76\x81\xc8\xf7\x30\x10\xee\xe5\x53\xe5\xde\xfb\xf7\x98\x20\x98\xb5\xf7\xb3\x99\x24\xbb\x79\x59\xad\x64\xc3\x03\x26\xbe\xd5\x60\xbf\x51\xe9\x98\x3c\xda\x5d\xff\x4f\x31\x1e\xea\x24\xcb\xe6\x8c\x61\x06\xce\xac\x9b\x84\x3a\xa4\xe2\xad\x1b\x6f\x8a\xe1\xe4\xf9\x68\x71\xfc\x02\x5b\xe4\xa6\x16\x38\x5f\xf2\xd4\xb7\xf5\x68\x29\xab\xef\xaf\x6a\xac\xbb\x78\x0d\x6c\xbb\xc9\x51\xb6\xe0\x5a\x78\x7f\x88\x5e\x33\x25\x61\x16\x65\xec\xc9\x24\x27\x4a\xa5\x31\xbc\x13\x3f\x62\xc7\x6c\xb3\xad\x14\x8f\x3c\x95\x79\xa8\x15\xa1\x42\x00\xb7\x64\x8d\xae\x0b\x07\xb3\x27\xd3\xbf\xcc\xdb\x6f\xe3\xb6\xcb\xd7\x0e\xa6\x5e\x6c\x0c\xc2\x51\x6a\x89\x66\x96\xd0\x7b\x2e\x77\x71\x3b\x0b\xee\x3b\x92\xfb\x1b\x6f\x75\xb0\x82\x0a\x5c\xb6\x2c\x5f\xe6\x20\x40\x03\x94\x3e\x24\x85\x71\x66\xfb\xdf\x57\x1f\x11\x5d\x45\xf4\x2e\x75\x90\x1d\xf8\xb1\x2c\x32\x61\x8a\xac\xb0\xd2\x42\x86\xc8\xd3\x03\x96\x05\x1f\xc2\x72\xaa\x17\xf4\xd2\xd4\x74\x61\x15\x2a\xac\xd3\xfa\xa2\xb7\xb2\x08\x31\x22\x78\xe8\x09\x24\x05\x92\xd1\xd1\xaa\x58\x5c\x56\x28\x0e\x66\xff\xd9\x2b\x57\x17\xd0\xcd\x1e\xb9\xfb\x74\x01\xde\xf8\x79\x48\x7c\x37\x4e\x5c\x53\x0b\x6f\xeb\xf9\x11\x12\x25\x74\xd2\x4f\xe1\x04\xb4\xf4\x5c\x7c\x60\x1e\x6c\x91\x7d\x3c\x18\x82\xc1\xad\x3c\x55\x5d\x8f\x2c\xe9\x55\xb5\xa1\x0d\xb0\xd5\xa8\xb8\xac\x7a\x62\x66\xb2\xe6\xb2\x7a\xd0\xee\x34\xf4\x7a\xd8\x57\x36\x7d\x52\xf7\x09\x6d\x4b\xac\xef\x0e\x46\x72\x54\x88\x42\x4b\x93\xb8\x9a\xcd\x42\x9f\xfb\x5e\xf3\x3a\x0b\x08\x1d\xd0\x94\x79\x67\x91\x96\x02\x3c\x39\x67\xf4\x4a\xd4\x1e\xb1\xa2\x39\x55\x27\xfd\x3b\x79\x76\x8f\x1b\x88\x5f\x04\x29\xb4\x95\xab\x60\x52\x56\x91\xbe\x84\x65\x06\x32\xa2\xf6\x6c\xb6\x3a\xd5\xbf\x2f\x6a\xe7\x0b\x66\x8c\x5a\x19\x3f\x74\x99\xfc\x4f\xc4\x2c\xf8\xcb\x30\x8c\xe5\x02\x9a\x50\x27\xba\xbe\xf5\x5d\x19\x25\xec\xfb\xa9\xf2\x7e\xb6\x08\x16\x19\xed\x0d\xf8\x56\x9f\xd8\x0e\x9d\xa1\x04\xdb\x39\xb5\xb8\x14\x0b\xfe\xbe\xbd\x29\x08\x54\x40\x06\x58\x19\xde\xba\x8d\x46\x9a\xe8\xb3\xea\x6d\x3b\xac\x58\x91\xf9\xa4\xdd\xfb\x7f\x1f\x06\xd1\x3c\x31\xa0\x7e\xe5\x3f\xb5\x4b\xc9\x7b\xd0\x86\x96\x39\x4c\x38\xe7\xf3\x68\x0c\x0f\x02\xf9\x75\xf4\x69\x92\x11\x47\xa4\x09\x85\x90\x97\x81\x3b\x4c\x3f\xa4\x3d\x17\x4a\xc4\x02\xf1\xa5\x28\xcb\x5f\xc4\xb8\x07\x51\x84\x32\xef\xf3\x34\x07\xa1\x11\xca\x3a\x3d\x7e\x9e\x84\x13\x5a\xba\xc8\xa8\xf5\x2e\xa6\x31\xc8\x6d\x74\xa1\xc6\xe5\x74\x9e\xdd\x14\x91\xc0\x02\x4e\x7d\xe7\xfe\x52\x85\x68\x29\xb7\x2f\xd1\x3d\xa6\x3a\x1a\x23\x43\x34\x9d\xf6\x62\xab\x31\x63\x53\x60\x32\x34\x6e\x53\x47\xf0\x43\xff\xf5\x28\xbf\x67\x15\x09\x22\xff\xf2\x02\x6b\xab\x74\x2d\xb9\xca\xe7\xcb\x2e\x3c\x74\x58\x07\x19\x65\x2c\x28\x44\x7c\x5e\x20\x98\x23\x17\x97\xee\x6e\xf1\x23\x1f\x57\x92\x05\x4b\xc3\x35\x9a\x32\xc8\x6d\x2f\x94\xf8\x5f\xa7\xd4\xa7\x41\x9d\xd2\x41\xff\x66\x2a"}, +{{0x1b,0x8e,0xc6,0x58,0x80,0xed,0xbf,0x03,0x9a,0x13,0xe9,0x70,0xb1,0x5a,0xa6,0x7e,0x19,0x2a,0xa0,0x2c,0xa6,0x5c,0xff,0x9a,0xda,0x17,0xd4,0x55,0x8f,0x40,0x13,0x7d,},{0x12,0xc1,0x19,0x1e,0x4d,0xe3,0xbd,0x44,0xd0,0x39,0x07,0x01,0x53,0xad,0xb7,0xb5,0x81,0xf6,0x00,0xe9,0xa1,0xdd,0x69,0xaa,0x89,0xf2,0x77,0xc7,0x06,0x9e,0x76,0xf8,},{0xbf,0xf2,0x69,0xa3,0x5d,0x6c,0x8e,0x55,0x2c,0xe7,0x16,0xd1,0x63,0x81,0x81,0xce,0x85,0x83,0xb4,0x5c,0x0e,0xc5,0x93,0xb4,0xe5,0x8c,0x40,0xac,0x76,0xe7,0xf8,0x5c,0xa1,0xda,0xff,0xfd,0x68,0x54,0x1e,0x62,0x3a,0x1e,0x35,0xa7,0xc0,0x97,0x26,0x88,0xb2,0x5e,0xed,0x72,0xf4,0xda,0x57,0xec,0xa1,0x68,0x57,0xa8,0x26,0x3c,0xaa,0x0b,},"\x37\xf1\x8b\x7f\x64\xc5\x13\x34\x79\xd6\xda\xe3\xbe\xf6\x79\xcd\xc2\x1e\xce\x3f\x5b\x57\x9a\x6a\x9c\x3f\xa2\xe5\x9e\x9b\xe8\x7d\x20\x09\xf7\x4e\x1c\xfd\xac\xcb\x1c\xe3\x7d\x00\x70\x23\x69\xbd\x16\x9d\x94\xfd\xcf\x85\xaf\x9f\xa3\x21\x7d\x27\xe6\xed\x6d\x1d\x8e\x5d\xf7\x61\x5e\x8e\x37\xea\x55\xde\x1f\xd0\xb0\x6d\x77\xb4\xc8\x3b\x92\x9d\x80\x58\x6f\xa0\x69\x4b\xe7\x2e\xc8\xb3\x65\xad\x2c\xbc\xdd\x2b\x1a\xd8\xcf\x7f\x03\x6d\xfa\x4d\xaa\x1a\x90\x36\xcd\xb1\x20\x43\x22\x27\xb1\xf0\x7b\x88\x66\xb1\x22\x12\x03\x09\xeb\x91\x4a\xb8\x4c\xdd\xeb\xa1\xde\xc4\x8a\xb9\x26\x36\x72\x85\x88\xfe\xdb\x3a\xaa\xd7\xe7\xdb\xb2\xac\x30\xe6\x3c\x6f\x5f\x90\xfc\x6c\xe6\x2d\x6d\x3b\xd8\x8b\x0d\x5a\xac\xfa\x61\xde\x9f\x32\x67\xb3\x00\x91\x7b\x57\xa4\x80\x36\xab\x20\xc9\xa0\x54\x46\xb8\x76\x74\x94\xaf\x24\x9e\x7d\xe7\xbc\x50\x7a\x22\x07\xcc\x95\x6f\x71\x84\x55\x5a\x7d\x5d\x88\x83\xbb\x4b\x3e\x93\xf2\xdc\xfc\x57\xb0\xda\x86\x38\x65\x8d\xcd\xce\x88\x5d\x44\xd9\xcc\x68\xb1\xd8\x17\x0a\x36\x77\xcc\x5e\x50\xcb\xf3\x3d\x54\x3e\xba\xe4\x47\x7d\x92\x39\xcf\x83\x38\x4e\xc5\x9b\x42\x33\xe8\xff\x33\x43\xf0\x6f\x30\x18\x77\x72\x9a\x53\xd4\x20\xbf\x01\xc6\x2e\x66\xab\x7f\xe5\x5d\xd8\x7e\xe8\x23\xa5\x8f\xcb\x87\x87\x0e\x1f\x52\xe8\x79\x17\x7c\xd4\x39\xc5\x33\xf5\xa2\x23\xe5\xa3\x43\x6f\xe9\xd6\x42\x65\x48\xda\xcf\xc8\x6a\x08\x46\xd3\xed\x23\xac\x04\x25\x63\xe8\x87\xff\x46\xaa\xd0\x05\xf4\xe1\xde\xe3\xee\x0e\xe4\xc2\x7a\x72\x51\x70\x9a\xe4\x0a\xbc\x5e\x25\x68\x64\xe4\x78\x5a\x4e\xdd\x8b\x2a\xdf\x1b\xc5\xb4\x01\x8e\x28\xd0\xb1\x75\x86\x7b\x02\xd0\x52\xa6\xe1\x7e\x41\x1a\x3d\x8b\xeb\x2a\x42\x08\xb7\x6c\xc6\x21\xfd\x18\xbe\x14\x8e\x23\x5d\x55\xaa\x71\x27\x70\x65\x57\xde\xc0\x53\xa1\x3f\x1a\x47\xdf\xda\x40\x5b\x3f\xe5\xbd\x28\xef\x5d\x34\x86\x19\xf5\x1e\x59\x5e\xf5\x05\x5f\x83\x9e\xfa\xf1\x10\xe4\x90\x16\x31\xac\x31\xa0\x2f\x4f\x7e\xe4\x24\xa3\xa2\xc3\xe0\x0d\x26\x02\xd2\xcc\x1e\x49\x29\x06\xee\xa4\x20\xa9\x26\x82\x38\xac\x66\x22\xa0\x89\x74\xe5\x73\x02\x92\xe6\xed\x51\x02\x56\xef\xde\x66\x7e\x0d\x9a\x0f\xf2\x21\x3f\x54\x12\x0c\xcd\x81\xff\xaa\x6b\x7c\xc4\x81\x41\xa2\xb7\x29\x85\x2a\xf5\x83\xd2\x6a\xa5\x1f\xbd\xe6\x7b\xe4\xdf\x14\xe5\x20\xc2\x25\x7a\x73\xc5\xc2\xe3\xc3\xd8\x7d\xfb\x25\x36\x11\x75\xfd\x18\xab\xd7\xe9\x9a\xa0\x9b\x85\xf8\x8f\x19\xc8\xd8\x2d\x45\x85\x8f\x31\x44\xc5\xdf\xb7\xa4\x9e\xde\x45\xb4\xef\xd8\x71\x05\x92\xa3\x72\x06\x36\xe7\xe8\x89\xc7\xe2\x2a\xd1\x3b\x2d\x44\xbb\x7e\x2b\x47\xb2\x96\x3a\x5f\xa3\xf2\x55\x7b\x85\xbc\x0c\x69\x3d\xe3\xd2\x2e\xf9\x46\x4f\x7b\x81\x4a\x20\xa4\x67\x6a\xd2\x6f\xca\xa0\x35\x44\xc6\xaa\xd4\x12\x83\x09\x5f\xcd\x12\x10\xaa\x8c\xc0\x29\xff\x5a\x26\x00\x5a\x89\x12\x26\xc2\x98\xe9\x4a\x52\xaa\x71\x33\x91\x3e\xc9\xd2\x2a\x5b\x2a\xc0\xbc\x6f\x15\xb2\x51\xd0\xb9\x38\x89\x21\x3c\xd1\xb1\xe5\xc6\xfd\x08\xf1\xa8\xf5\xcb\xd4\x21\x53\x29\xa3"}, +{{0xe7,0x53,0x88,0x02,0x6a,0x6a,0x6d,0x6c,0x6d,0x19,0x9e,0x36,0x29,0x93,0xa5,0xb1,0x04,0x49,0x01,0xe1,0x8a,0x76,0xc2,0xfa,0xc7,0x26,0x1a,0x6d,0x1c,0x19,0xa4,0xf3,},{0xb9,0xce,0x14,0x25,0x1c,0x0c,0xdf,0x3b,0xdd,0xb2,0x06,0xdc,0x6b,0x8b,0x2b,0x7f,0x5b,0x7e,0x4d,0xd1,0xbe,0x2c,0xe1,0x86,0x3f,0xf1,0x88,0x06,0xae,0x00,0xf1,0xee,},{0x6d,0x0f,0x83,0xd9,0xc5,0x5d,0x84,0xbc,0xf9,0xa8,0x61,0x47,0xd9,0xb6,0xba,0x9a,0xd5,0x37,0x83,0x2f,0xd0,0xf9,0x9d,0xae,0x7e,0x72,0xc8,0x13,0x9a,0xfc,0xb3,0x0c,0x7b,0x24,0xf6,0xb2,0x92,0xe3,0x2f,0x98,0x47,0x09,0x75,0x51,0xb7,0xfb,0xfd,0x51,0x0c,0x84,0xe8,0x9b,0xe9,0x82,0x54,0x44,0x14,0x57,0xbd,0x08,0xe5,0xf0,0x53,0x02,},"\xb9\x9c\xdc\x84\x72\x11\xc0\x66\x42\xdd\x11\x1b\xc5\xe0\xbe\xca\x53\xa7\x4f\xfb\xa2\xe3\xac\x93\xaf\xb4\xb0\x94\x75\x18\xe8\x32\x35\x27\x33\x0a\x4e\xfe\xfb\xe4\xba\xfa\x00\xba\xfe\xcb\x43\x4a\xb1\xe5\xb7\xce\x65\x65\x6f\x7a\x4f\xd8\x56\xaa\x6c\x38\x5e\xd8\xd7\xbd\x62\x85\x58\x0d\x7d\xd6\x08\x82\xe6\x9c\x19\xda\x07\x69\x09\xd6\x47\xde\x09\x5a\x80\xe9\x8a\xd8\x9b\x81\x4a\xad\xcb\xbf\x6f\x03\x3c\x49\x20\x2f\x65\x6c\x09\x10\x50\x39\x59\xcf\x97\xcd\x0f\xa8\x2d\x5f\x6d\x22\xfb\xa3\x38\x99\x51\x29\x4c\x4f\x7c\xdc\x21\xeb\x82\x44\xbd\x65\x60\x63\x7a\x5e\xca\x62\xa8\xeb\xa1\xf4\xa9\x33\xd1\x87\xa7\x5f\x86\x71\x16\x43\xaf\x35\x88\x31\xc8\xc1\x6a\x9a\x0f\x09\xe2\x53\xb2\x39\x5e\x9c\xb3\x71\x61\x1e\xec\xdd\x66\xb4\xab\x52\x1a\xa9\x4b\x3f\x20\x23\x7e\xae\x41\xcd\x10\xc5\xe2\x1a\x45\x2d\x48\xe7\x48\x18\x7f\x35\x4a\x67\xad\xf6\x81\xb0\xfe\x61\xcd\xae\xc9\x4a\x5e\xaf\x01\x26\x9f\xce\xb5\x70\xd5\x14\xff\x3c\x55\xff\x1d\xba\x2f\xd2\xdf\x17\xf8\x6a\x8a\xeb\x74\x78\x38\x11\x3d\xee\x94\xa4\x3b\x13\x84\xcb\xe1\x33\xcd\xf6\x42\x7e\x8d\x12\x2e\x4e\x93\x37\x04\xda\x6e\x26\xcf\xce\xe9\x7f\xe3\xf6\x29\xb6\x0b\x91\xb2\xdd\x86\x38\x67\xfa\x79\x80\x1e\x2b\x91\x6e\xc4\xc0\xfb\x62\xe0\x71\x59\x42\x1e\x65\x79\x74\x30\x7a\x1d\x02\xf7\xf2\xed\x47\x24\xa8\xb5\x21\xa8\x61\xf5\x5f\x35\x52\x1e\x8b\x2e\x1a\x84\x90\x4c\x42\x8c\xfc\x5b\x60\x14\xbb\x0f\x8b\xa8\x43\x4c\x22\x09\xbd\x40\xac\xa3\x11\x30\xdb\x97\x74\x33\x33\x59\x7d\x23\x51\xd5\xf6\x81\x17\x41\xf6\x26\x88\x97\x3b\xd7\x73\xd3\x02\x66\xfd\x1e\xfb\xd8\x9d\x47\xa9\x64\xf9\xd0\x19\x97\x15\x3d\x08\x7d\x92\x69\x66\x16\xdd\x10\x3a\x93\x4c\xcb\xac\x4c\x1d\x14\x2f\x20\x75\xd4\xe2\x2c\x3d\xa4\xa0\xe9\x73\xb2\x38\x63\x19\x62\x87\xb7\x91\x74\xfa\x29\x75\x5f\xc6\xd9\xb5\xe1\x00\xac\xe0\xa4\x59\x75\xe5\x03\xb2\x54\xd3\xf1\x95\xc2\x61\x71\x09\x10\xfe\xf1\x06\x89\x2c\x08\xbb\x29\x6d\x23\x0c\xde\xa9\xf5\xa1\x1f\x91\xac\xaa\x6e\x7c\x05\xe9\x2c\x28\x1d\x2b\x31\x55\xfe\x44\x80\xb0\xaa\x5e\x0d\xb4\x1d\x10\xe0\x5c\xfd\xef\xa4\x36\x40\x51\xcb\x75\x5d\xc7\x2f\xfa\x97\x8c\x00\xb9\x4a\x5f\x21\x2d\xc6\x91\xf8\x39\xb4\x9d\xe9\x7e\x01\x39\xd6\x5e\x8d\x73\xb2\xb2\x89\xb2\x6a\x12\xc6\xcc\xd8\xed\xc0\x4a\xdb\x45\x2a\xf7\xff\x09\x4a\xa9\x01\xea\xf5\x76\x51\xeb\x1b\x87\xb8\x33\xd0\xa0\x9b\x4a\x4a\x64\x62\xf4\x06\x64\x62\x37\x69\xe9\x50\x79\xf3\xc9\x62\x85\x0c\xc3\xb4\x01\xbb\x00\x58\xb8\x47\x5b\x10\xc8\x62\xf3\x2f\x30\x0a\x2b\x14\x3b\x3d\xea\x26\x9d\xdc\xbe\xa7\xbe\x7d\xd2\x42\x6d\x0d\x42\x04\xeb\x66\xa3\x9f\x13\x18\x82\x2d\xcb\x9c\x56\x13\x98\x63\x7f\x4a\xb8\xde\x19\x67\x68\xac\xe7\x4f\x34\x8c\x01\x2d\xd1\xba\xbe\xc1\x7f\x53\x00\xff\xe0\xd7\xaa\xae\xaf\xef\x7d\xb6\x50\xa8\xf2\xf3\x09\xa9\x79\x3f\x52\xc6\x85\xc7\xe1\xd5\x13\x32\x74\x91\x57\x84\x89\x9c\x48\x1d\x48\x5c\x9b\xd3\x0e\x99\xfc\xdc\x97\xd9\x6e\xf0\x74\x87\xda\x66\x3b\xef\xe6\x82\x99\xdf"}, +{{0x5b,0x32,0x3f,0xc0,0x1a,0x16,0xc4,0x5d,0x10,0x64,0x66,0x7d,0x2e,0xa4,0xa7,0xea,0x59,0xd2,0x03,0x42,0x56,0x2d,0x12,0xfb,0xc5,0x98,0xd5,0xaa,0x73,0x00,0x68,0x8e,},{0xd4,0x14,0x1b,0x45,0x5d,0x30,0x16,0x42,0xba,0xda,0x28,0x14,0xaf,0xcb,0x16,0x20,0xd5,0xeb,0x56,0xd9,0x2b,0x11,0x85,0xfe,0x5d,0xad,0xef,0x55,0x96,0x25,0xfa,0x71,},{0xe2,0xef,0xf6,0x07,0xf0,0x22,0x7a,0x29,0xd5,0x82,0xd6,0x9f,0x34,0x58,0xac,0xad,0xd3,0x22,0x6f,0xce,0xaa,0xc0,0xab,0xbd,0xae,0xd5,0x26,0x75,0xc5,0x16,0x30,0x07,0x3c,0xd3,0xa9,0x01,0x70,0x7e,0xcf,0x05,0xe8,0x93,0xf2,0xc3,0x6d,0xaa,0xf0,0xcc,0x49,0x01,0x11,0x69,0x46,0xb5,0x77,0x0d,0xc0,0x38,0x12,0x5f,0x6d,0x13,0x1b,0x09,},"\xad\x24\x66\x9e\xf5\x5c\x54\x0a\x8e\xd1\x62\xce\x1d\x28\xf0\x17\x60\xa6\x07\x19\xa0\x37\x73\x36\xeb\x00\xb1\xec\xbe\x6f\x61\x60\x1c\xd5\x64\xf9\x2c\x95\x68\x04\xf9\xbe\xd4\xe1\x47\x6b\x94\xe5\xea\x8c\xca\x80\xcb\x49\xa3\x04\xef\x85\x1f\x7f\x67\x5a\xbe\x58\xe6\x68\x1d\xc0\x12\xad\x55\xe5\x1b\x02\x1d\x98\x28\x56\x9d\x0b\xcc\x9e\x05\x27\xa3\xfc\x03\xc8\x91\xd1\x7a\x90\xe6\x33\x7a\x1e\xa6\x7f\x2f\x08\x81\x05\x87\x69\x38\x37\x08\x1e\x4c\x08\xa3\xd7\x2c\x53\x6c\x21\x40\xda\x20\x0b\xa4\x56\xc3\x76\xf6\x1d\x05\x65\x1f\x0c\x5f\x39\x57\x11\xf4\x1c\x0d\x6e\xae\x98\xc9\x06\x76\x4d\x1e\xbe\xf3\xf9\x04\x6c\xb7\xc8\x62\x26\x40\xfc\xaf\xaf\xbf\xb8\xf6\x2e\x1c\xd3\x2c\x66\xee\x1c\x55\x50\x94\x89\xa5\x38\xab\x61\x29\x99\xe7\x99\x7b\x77\x9c\x64\x22\xef\xf1\x09\xda\x4d\xf8\x29\x20\x93\x0d\x8d\x36\x3d\x78\x30\x90\x87\x95\xa3\x88\x8f\x25\xd6\x67\xe1\x4d\x15\x5e\xd4\x45\x81\xbe\x43\x0f\x79\x73\xb5\x74\xe2\xbc\x0b\x13\x4c\xf1\x39\xfb\x4b\xb0\x1d\xbd\xa4\x1b\x67\xb9\x81\x47\xd8\x01\x2f\x40\x67\x7f\x4b\x80\xce\x4a\x53\x4c\x90\xad\xea\xbf\x48\x4b\x21\xfa\x99\x4b\x7a\x17\x5f\x8a\x8b\x8a\x40\x75\x56\x44\x78\xdd\xb0\x50\x24\x58\x0b\xab\x03\x8c\xd9\xea\xa1\xdf\xda\x55\x2f\xb3\x12\x29\x42\x9b\x61\x4f\xa1\xd8\x0c\x52\x61\x4e\x84\xfa\xa2\x21\x7f\x26\x0f\xf7\xcc\xea\x8c\x7b\x06\xe3\xd7\x7f\xf8\x74\xeb\x81\xfc\x85\x97\xe5\xfc\xdc\xec\x95\x1b\x5f\xe6\x4a\x1a\xf8\x6e\x73\x19\x3a\x88\x24\x69\xeb\x3b\xa3\xc3\x82\x73\x4b\x28\x87\xb4\x19\x31\x6e\xa4\x48\xaf\xc2\x82\x47\x8c\x25\xf7\xbc\xa1\x84\x29\xcb\xbf\xfd\x88\x71\x17\x7c\x5e\xcc\x7d\x8a\xa9\xa1\xb9\xec\x87\x19\x2d\x29\xa5\x25\x39\xc0\x81\xc3\x59\x33\x32\x44\x4c\xbe\x66\x87\x2c\xf3\xd0\xe1\x97\x29\x2b\x82\xb0\xbe\x5f\xcd\x85\x8c\xd6\xca\x48\xb5\x3e\xe5\xb6\x16\x41\xbc\xaa\xf3\x1d\x81\x9c\x7e\x1c\xed\xaf\x9e\xe6\xb0\x7e\x09\xca\xed\xfb\x30\xb9\x20\x4a\x1d\x4d\xdb\x70\x56\x0c\xbe\x1e\xb0\xc0\xec\x43\xf1\xd1\x78\x20\x1b\x29\x08\x19\xfc\xdc\x92\xc6\x3e\x0d\xb6\x0f\xb8\x7d\xff\x00\xe5\x12\x64\x8c\x89\x58\xa8\x47\xef\xc3\x63\x46\x07\x3f\x1a\x4f\x1f\x23\x17\x06\x0f\x1c\x54\x3e\x6f\x01\xb4\x24\x85\xbe\xeb\x56\xca\xb3\xba\xb2\x6e\x6a\x0c\xa6\x93\x58\x02\xc7\x62\xb7\x99\x15\x9e\x32\x0f\x36\xb5\xe8\x3d\x4a\xca\x89\x62\xaa\x2c\x3c\x2b\x7a\x38\x70\xe9\xe0\x47\x31\xf3\x94\x8c\xf9\x41\xe2\x1d\x50\x96\x4e\x5d\x63\x5a\x35\xa5\x3e\x29\x98\x11\xb8\xca\xdf\xcb\x44\x16\xc5\x75\x98\xa3\xfd\x05\x41\x09\x10\xdb\xc0\xea\x2c\x78\xfd\xb9\x25\x74\x99\x7d\x58\x79\x62\x79\xea\xaa\x78\xb3\x6d\xce\xf1\xc9\xa1\x29\xee\xff\x82\x39\x9a\x26\xd0\x08\xff\xa3\xbf\x04\x18\xff\x7d\x39\xb6\x42\x7f\x34\x18\x95\x02\x4d\x16\xe2\x2a\x0c\x62\xa8\x2b\xeb\xa2\xe2\xba\xc2\x3d\xee\x18\xcf\xcd\x5d\xb2\x39\x7f\x37\x8c\x53\x67\x30\x90\x82\xc4\x4e\xb4\x3c\xed\xc1\x52\x20\x25\x3a\x62\x32\x03\x99\x66\x5f\x71\x34\x9c\xc1\xb9\x44\xf5\x8c\x73\xa1\x0a\x0b\xbf\xd4\xca\xf1\x28\x91\xe3"}, +{{0xbe,0x1c,0x11,0x2f,0x78,0xcf,0x13,0xae,0xfc,0x5c,0xe7,0xe3,0x37,0x64,0xac,0xa4,0x48,0x1f,0x9f,0x88,0xb0,0x18,0xe1,0x22,0xdb,0x9f,0x8d,0xac,0x14,0x62,0x46,0x05,},{0xae,0x38,0x99,0x36,0xbb,0xf6,0xd1,0x6e,0x3c,0x1e,0xeb,0x64,0x74,0x29,0x89,0x70,0x86,0x6e,0x12,0xec,0x9c,0x1d,0x6a,0xea,0x2f,0xd9,0xdb,0x6b,0x56,0xaa,0x59,0xc4,},{0xf5,0xfc,0x5a,0xcb,0x17,0xe9,0x95,0x7e,0xa3,0x04,0xf1,0x23,0xb6,0x50,0xe1,0x44,0xc9,0xe4,0x37,0x72,0x83,0x50,0x9d,0x43,0x1d,0xa6,0xa2,0xbb,0xd5,0x27,0xbe,0xb3,0x82,0xc9,0xf5,0x87,0x45,0xa3,0xe5,0x6d,0xcc,0x65,0x5b,0xd2,0xeb,0xb7,0xae,0xef,0xc9,0x3e,0xdc,0x3f,0x20,0xd8,0xd3,0xc3,0x79,0x23,0x03,0x1e,0xec,0x0c,0xb4,0x07,},"\xd7\x7f\x9a\xee\xa0\xfe\x98\xed\x7f\xb7\x4d\x58\x2a\x40\x2b\xcb\x79\x31\x47\x4b\x4a\x95\xd5\x23\xf3\xfb\x76\x9f\xb7\x09\x7d\x2b\xe4\xc6\xec\x10\x52\x14\x01\x63\x22\x25\x53\xaa\x8f\x4f\x89\xe4\x21\x73\x00\x14\xec\x73\x46\x97\x20\xce\xa9\x67\xf8\x8b\x6a\x48\xd0\x2a\x2d\xdc\x1a\x12\x1f\xdf\xfb\x8a\xe1\x27\x73\x8e\x29\x3c\x4d\x6b\x1b\x74\xad\x03\x84\x4d\xe6\xbf\xe8\x21\x50\x6b\x3a\x7a\x81\xd1\x9c\x37\xa7\xf0\x1c\xa4\x81\x47\x12\x19\xef\xe2\xa7\xb9\x2c\x4b\xd2\xac\x07\x74\x3b\x49\x75\x69\x64\x41\x71\x4b\x84\xd6\x3c\x54\x9d\x7a\x6f\xb6\x1f\x16\xfb\xcd\xb7\x2b\x91\x4d\x78\x82\xd0\x91\xf9\x70\x6d\xa3\x8c\x1a\x81\xa1\xc6\xa4\x0f\xbe\xc0\xd8\xe2\x38\xb5\xd5\x6d\x46\x0e\x90\x9f\x85\x47\x9f\x7a\xd8\xb1\x19\xf3\x54\x55\xe3\x40\x10\xca\xa7\xe5\xd0\x1f\x38\xe3\x01\xad\x37\xe8\x00\x5f\x6e\xd2\x9e\x4a\x10\x2d\xb3\xf6\x1d\x84\x09\x3f\x78\xc4\x9a\x96\x48\xc9\x77\xbf\x4d\x5b\x68\x9f\x71\xf4\x06\xf8\xad\x7b\x9a\xeb\x1a\xe2\x21\x33\xa8\x4c\xe1\xb2\x78\xb2\xcd\xde\x46\x59\x01\xb2\x3a\x17\x9d\x07\x2a\x80\x87\x9d\x0a\x24\xd2\xaf\x19\x7b\x32\x2a\x07\xbf\x5d\x40\xee\xab\x3a\xf1\x21\x17\xf1\x30\x21\xdf\xc1\x68\x1a\xba\x5c\x08\x3f\x25\x96\xe3\x7f\x11\x23\x42\x2b\xbd\xca\x3b\x2c\x32\xcb\x59\x4f\x56\xc3\x25\xe0\xc5\x64\xa1\x73\x32\x88\x05\x34\x59\xc6\x24\x88\x92\x5c\xd8\x0e\x7c\x94\x4d\xb9\x98\xc3\xc7\xbe\x54\x6b\xf8\x9d\x7a\x51\x1c\xcd\xba\x4b\x80\x9e\xee\x0f\xc2\x87\x3d\xad\x72\xb4\xcf\x3b\xa0\x51\x28\x9b\xb3\xf4\xe9\x92\x57\x32\xe4\x5a\xe7\x74\x10\x58\xc8\xfd\x11\x59\x9d\xd8\x43\x92\x7e\x3d\x14\x59\x8b\xb8\x30\x52\xd3\x35\x69\xcf\xb0\x2a\xf0\xc8\x8f\xa7\xae\xa4\xbb\x46\x84\x1c\xd2\xdd\xbd\xf5\x98\x8f\xcf\x32\x5f\xf1\x04\xa5\xdf\xc4\xa3\x0d\x26\x9d\x2a\x94\x97\x30\xc3\x61\x3b\xdd\xd3\x67\x3b\x42\xf6\x09\x0e\x6a\x60\xe4\xa2\x53\x06\x24\x63\xa6\x5d\x7e\x7f\xc0\x03\x0b\xba\x76\x9c\xa3\x44\xbf\xa9\xac\x82\x3f\x58\xcb\x5c\xee\x8a\x5f\xc0\xca\x37\x22\x8d\xe5\xa4\xd9\x3e\x0e\xcf\x7f\x10\x82\x16\x59\xa2\x26\x1f\x7e\xf1\x59\x6e\xda\x4e\x41\x1c\xf3\xc9\x66\x9d\x81\xde\x74\x54\x7c\xe4\xbf\x83\x3e\xb4\x32\xf3\x85\xce\x90\x38\xfe\x84\x8a\x8c\x96\xda\x7f\x01\xfd\x95\xbe\xa0\x6d\x1d\x74\x7c\x8a\xe7\x36\x49\x5b\xba\x22\x85\xbe\x5c\x32\xaf\xea\x44\x95\x20\xcf\xe8\xe1\xce\x25\xf9\x07\x7e\xd0\xec\x0f\x65\x98\xa9\xb8\xf7\x38\x6f\x15\x35\x81\x70\xcc\xef\xc3\xd5\xff\xb0\x09\x28\x81\x54\xde\x87\x7c\x24\x09\xae\x5f\xd8\xfe\xf0\x09\x3f\x1c\x36\xb3\xa8\xf5\x47\x43\x2c\xd0\xf6\x2c\x40\x33\x24\x2a\xd9\x92\x1a\x8f\x11\xc0\x0f\x36\x6d\xa9\x39\x69\x30\xa8\x0c\x99\x7d\xf4\x29\xa4\xf5\xf4\xe4\x5c\x7a\x6d\x7e\x02\xaf\x03\x31\x86\x75\x7c\x73\xcb\xe6\x4d\x2d\x4e\x78\xea\xaf\xe2\x75\x39\x52\x80\x35\xf2\xcf\xcf\x8e\xaf\x0a\x42\xbd\x25\xf8\x8b\x2f\xc6\x9e\x42\x66\x8f\xae\x66\x77\xc9\xac\x90\x91\xd9\xd1\x5a\x41\xf3\xac\xe6\x5d\x90\xa0\x22\x98\x73\xdc\xf2\x54\x25\x6c\xca\x44\x9e\xd4\xc1\x7d\x54\x35\xba\xe4"}, +{{0xbd,0x85,0x23,0xed,0xa8,0x99,0xb9,0x84,0x23,0x0e,0x32,0x88,0x75,0xb9,0x67,0x2e,0xdc,0x9f,0xcd,0x24,0xea,0x5c,0xc1,0x2d,0x7b,0x57,0x2d,0xa4,0xbe,0x01,0xfb,0x7b,},{0x02,0xb7,0x34,0xeb,0xbe,0x88,0xc1,0x3b,0xfa,0x95,0xa5,0xd9,0x64,0xfc,0x7e,0xf9,0xd3,0x95,0xbd,0x63,0x03,0xf0,0x65,0xdc,0x4e,0xe1,0x7b,0x3a,0xc1,0x54,0x8b,0x7b,},{0xfc,0xfc,0xdb,0x08,0x8d,0xcb,0xd0,0xa5,0x1b,0xd3,0x01,0xe3,0xe1,0x56,0x16,0x71,0x93,0x5d,0x8b,0x6f,0x71,0x9c,0x5d,0x92,0x69,0x06,0x40,0xd3,0xc9,0x1e,0x77,0x5b,0xf4,0x05,0x41,0x32,0xef,0xc0,0x5a,0x21,0x22,0xfc,0x20,0x9d,0xb3,0xc3,0x34,0x32,0x33,0xff,0x8a,0xec,0xeb,0xd5,0x2d,0xaa,0x2b,0x3b,0x21,0xee,0xb1,0x5f,0xd1,0x02,},"\x16\xc2\x16\xc9\xbe\x9f\x0d\x4b\x11\x54\x10\xbd\xfd\x15\x93\xc8\xe2\x62\x22\x1a\xb9\x7a\x2a\x39\x5a\x12\x19\x8f\x95\xc3\x02\x05\xb0\x89\x62\xd4\x89\x31\x18\xba\x9f\xf9\x9a\xb1\xc7\xa6\xe1\xf2\xf1\x75\x19\x10\x70\xac\x94\x53\x27\xad\x6c\x47\x0b\xab\xf7\x92\x8b\x07\xdd\x78\x8c\x85\xb6\x4b\x71\x2e\x0a\xae\x6c\x0e\xa2\x02\x81\xe4\x2f\xd5\x61\xe8\x3e\x3f\xba\xc6\x7f\x14\x00\x0e\xe5\x6d\x98\x1d\x2a\x2f\x0b\x9c\xa0\x0a\x9e\xa4\x7c\xa2\xf6\xfc\x8d\xca\x10\x35\xfc\xeb\x14\x2c\x3f\x26\xf2\x0e\x3c\x73\x22\x07\xff\xff\x11\xb7\x96\x95\xbd\xaf\xa4\x15\x21\x4a\x44\x99\x30\x23\x26\x60\x5c\xf0\xb8\xc8\x2f\x2b\x11\x39\x2e\xcc\x90\xcd\x74\xa7\xb4\x11\xb6\xd9\x07\xa3\xd5\xc1\x30\xc8\x79\xb7\xcf\x88\x0f\x22\xbb\xd7\xf0\xe9\x59\x33\x71\x8e\x96\xd7\xd1\x6c\xae\xa9\xf2\xc3\x9e\x89\xb1\x3c\xd5\x22\x66\x27\x36\x04\xa9\x6b\x51\xd6\xe3\x4f\x70\x67\x35\xdd\xd9\xfc\xa4\x4d\x09\xcd\x86\xbb\x72\x17\x60\x0e\x0d\x34\xd4\x16\xac\x24\x9f\x2e\x41\xbd\x0f\x4a\xbc\xbd\x25\x80\xad\xae\x21\xd7\xeb\xa5\xfa\x44\xf3\x9d\x78\x0f\x17\xeb\x85\xcc\xbe\xf5\x8f\xef\x90\x3a\x28\x0d\x95\xf8\xf3\x21\x07\x89\xfa\x12\xe1\x20\xe2\x1b\x6e\x8c\xad\x91\x78\x35\xbb\xdc\xc3\xb0\x7e\x84\x69\x39\x54\xe2\x3a\x94\xf9\x9f\x93\x7d\xdb\x0d\x4a\x18\xd4\x2c\x3e\xa8\xfc\xa7\xd1\xea\x6e\xd5\x3a\x00\x24\x6f\x99\xea\x52\x0e\x64\x05\xbd\x2a\xa5\x49\xb0\x6e\x7d\xa7\x22\xc1\xba\x74\xaa\x1c\x13\x6e\x8e\xa5\x8b\xaa\xf8\xd3\x76\x58\x69\x3f\x3e\x0b\x44\xf6\x31\xdd\x6d\x08\xff\xdf\x4f\x09\x18\x9d\x30\x35\xa3\xf0\x34\x68\xe2\x96\x96\xef\x05\xe0\x2c\xc1\xaa\xbf\xec\xbd\xa2\x30\x1b\x54\x0c\xb0\xeb\x0a\x75\xbc\xce\x73\xdb\x92\x73\xa9\x16\x1a\x98\xad\x89\x8f\xcd\x65\x79\xfb\x7e\x4b\x32\x79\x54\x4f\x2e\x0b\xd7\x74\xdd\x1a\x81\x57\xda\xa8\x8a\x70\x32\x11\x67\x70\x3c\x60\xa6\x08\xa4\xb5\x42\x16\x59\x03\x75\xe5\x97\xfe\x21\xae\xa9\x7b\x52\x18\x5d\x0e\x37\xa5\x3b\x63\x88\xa7\x07\xa2\xbc\x24\xac\xf9\x44\x25\xf8\x4f\x3d\x56\xbc\x9f\x7e\xe7\x41\x2a\x9e\x18\x33\xad\x55\xb7\xea\xe6\xda\x58\x16\x98\x16\x63\x83\xa2\xeb\xa8\xb6\xf5\x39\x20\xf5\x17\xa5\xc8\x0b\xd3\xe0\x3f\xaa\xd4\x08\x7e\x3e\xe8\xfe\xc9\xa7\x9a\x01\xc7\x79\x51\x21\x33\xd7\xb6\xe5\xf1\xde\xc7\x66\x30\x0d\xc4\x05\xcc\x21\xa8\xc5\x83\xfb\x73\xbc\x90\xcf\x24\x38\x5b\x08\x60\x49\xd3\xbf\x20\xc3\x00\x98\x3c\x0b\x35\x15\x38\xdc\xcb\x22\x7a\x14\xfa\xfd\x23\xac\x4b\x26\xbe\x81\xa2\xb1\x20\xcf\x21\x6f\xc5\x83\x54\xf9\xdc\xbf\x05\xf6\x63\x39\xad\x6d\xdc\x2c\xac\x14\x67\x7b\x90\xe2\x47\xeb\xb6\xc5\xc2\x29\x00\x7d\xc6\x0f\x37\x4a\x06\xd4\x04\xeb\x23\xeb\x1e\xc4\x99\x07\xc6\xe8\x81\x62\x9e\x18\x67\x26\x8c\xa6\xff\xfa\x59\xaa\x3c\xa8\xf6\xc2\x95\x16\x2b\x95\x36\xc2\xbe\x22\xbb\xe3\xb7\x23\x80\xef\x11\xb6\x1b\x35\x7a\x62\x53\x10\x0e\x30\xa5\x86\x81\x8b\xa0\x03\xfa\x3f\xfd\x1f\xc9\x19\x88\x1c\x05\x02\x2f\x94\x84\x85\x98\xf2\x17\xfe\xa2\x22\x50\x72\x20\xd1\x08\xa2\x8f\xc7\xbc\x39\xa8\xa1\x1c"}, +{{0x33,0xa8,0x5a,0xe1,0x50,0xbb,0xf5,0x52,0xf4,0x16,0x63,0xb2,0x15,0x21,0xc2,0x96,0xd2,0x46,0xdd,0x6c,0xf8,0x19,0x5d,0xf8,0x51,0xc6,0x95,0xbd,0x15,0xf4,0xa5,0x02,},{0xc8,0xc9,0xc4,0x25,0x21,0x00,0x8d,0x5e,0xff,0xf5,0x76,0xc7,0xe4,0xa5,0x60,0x83,0xce,0xd9,0xa9,0x28,0xda,0x6f,0xd5,0xcf,0x93,0xfd,0xa5,0x72,0xa5,0xa2,0xd0,0xc0,},{0xbb,0xe4,0xcd,0x63,0x67,0x6e,0x26,0xd6,0x75,0xa1,0x91,0x15,0x1d,0x30,0xdb,0x72,0xb5,0xb8,0x4d,0x46,0x1e,0xec,0x65,0x64,0xaf,0x86,0x7a,0xb4,0x1b,0xae,0x99,0x31,0x14,0x78,0x85,0x51,0x9e,0xc9,0xd7,0xe6,0xc8,0x18,0x74,0x3c,0x8e,0xf6,0xd5,0x16,0x7b,0x35,0xb4,0x21,0x36,0x3c,0x09,0xb3,0x57,0x36,0x7f,0xe8,0xde,0x44,0x3a,0x06,},"\x93\x7e\x05\xf2\xf1\xfd\xbd\x41\x73\x15\x53\xe7\x7c\xf1\x81\xb5\x07\x97\x58\x94\x0a\xee\x8e\x92\x62\x3f\xb1\xd5\xf0\x71\x28\xb7\xd7\xf1\x7e\x48\x42\x70\x7a\x56\x2c\x45\xba\x69\x26\x4c\x0f\x73\x0a\x82\x1c\x7d\xb6\xbf\x82\x99\x0d\xc6\x51\x26\x9b\x29\x6c\x33\x51\x79\x11\x30\x53\xd6\xf8\x5b\xb0\x96\xb2\x91\x11\x65\xfa\x39\x00\xcb\x10\x24\x16\x48\x7b\xa8\x07\x86\x79\xc6\xb3\x36\xdf\xf3\x87\x63\xc0\x8d\xcd\x20\xfa\x66\xdd\xa4\x5c\x57\x5d\xf1\x50\xd8\x51\x16\x5a\x48\x04\x97\x38\x30\xf4\x36\xdf\x60\xb8\x13\x19\xf9\xcf\xb5\x64\xc0\x65\x28\x96\xed\x5f\x18\x49\xcb\x33\x54\xf5\x0f\x00\x12\xf2\x86\xe8\xa3\x0c\x21\x35\x28\x69\x34\x74\x00\x4e\x85\x04\x01\x2b\x94\x55\x60\xc0\x74\xa6\xa1\x63\x43\x2c\xf4\xac\x4b\xa7\x17\x5c\xf2\x60\x05\xdb\x71\x99\xee\x96\xd8\x93\xcd\x1a\xad\x3f\xdf\x5d\x57\x46\x0e\xf0\x2d\xda\x6d\x3a\x14\x08\x25\x19\x6f\x3f\x8e\x2f\x37\xda\x36\xb6\xfd\xad\x18\x4f\x27\x40\xf1\x16\xde\x75\x8a\x92\x91\x70\x30\xc5\xfb\x80\xf0\x26\x24\x96\xd2\xdf\x93\xc7\xe2\x76\xf2\x5d\xa7\xdb\xed\x8e\xb8\xdd\x4c\x56\x3a\xba\x55\xb8\x2a\xf6\xba\x3a\x70\xca\x5f\x85\x8b\x44\xa0\x33\xcf\xb7\x95\x60\x4d\xde\xe7\x46\xe7\xc8\xae\x79\xd2\x72\xfb\x9a\x23\x41\xa2\xa2\x02\xdf\x5e\xac\x08\xde\x75\xad\x80\xc6\x58\x0d\x92\xb1\x69\xf2\xe1\x31\x88\x57\xb1\xb1\x42\x1c\x30\xf3\xdd\x46\x10\x93\xde\x2d\x34\x5e\xde\x74\x04\xb7\x2a\x45\x0d\xe0\x7b\x16\xee\xe6\x8c\xe6\x28\x87\xb6\xea\xa4\x36\xee\xe6\x84\xbe\x75\xce\x0e\x1f\x96\x26\x3e\x8d\x87\x36\xf9\xba\x00\x0d\x88\xe9\xe5\x86\x0f\x32\x8a\xe1\xe2\xdc\x73\x09\x9d\x32\xfc\xeb\x1b\xd2\xc0\x12\x36\x98\xa4\x9b\xea\xd1\x90\xa0\x0e\xc9\xa6\xf8\x71\x33\xed\xdd\x45\x31\x6f\x65\xeb\x0d\x32\x9b\x07\xb9\xa6\x6b\xb9\xfe\x42\x58\x8b\xf7\xb8\xd0\x6e\xfe\xc1\x98\x6b\x82\xa0\x81\xed\x3f\x68\x02\xe9\xbe\x73\x46\x47\x84\x55\x9a\x4f\x2c\x09\x7b\xa1\x4b\x0b\xfd\x5d\x7e\x0a\xff\x65\xcb\x69\xab\xd0\x3f\x86\x16\xcd\x7e\xdf\x7e\xc3\x68\x21\x9e\xdc\xf8\x93\xe9\xee\x71\xda\xd9\xf1\x8d\x79\xe5\x68\x26\x5d\xdc\x67\x16\x22\x32\x13\x23\x5b\xb9\x28\xe9\x08\xde\xa8\x27\x78\x4c\xd1\xaf\x39\x6d\x59\x0c\x81\xf4\xea\xcd\xfc\xf8\x9c\x5c\xac\x96\xfa\x05\x00\x64\xa2\x28\x41\xea\x71\x5f\x8c\x89\xd6\xd5\xaf\xbf\x59\x7a\x4d\x00\x5d\xbc\x6b\x13\x85\x6d\x33\x5b\x42\xa9\xa8\x2e\xdc\xb9\x49\x83\x5c\xca\x20\xb0\xa2\x3d\xe5\x1c\xc3\xae\xc3\x55\x66\xef\xf0\xc5\xae\x1a\xb3\x75\x13\x20\xd2\xc3\x10\x49\x52\x38\xed\xa3\x83\xc3\x8a\x41\x63\x15\x2b\x88\x15\x69\x0b\x8f\xf0\x15\x03\x5d\x1d\x00\xea\x4a\x0d\x6c\xaf\x32\x4b\xb7\x1a\x66\x4a\x1b\xed\x31\x48\x07\x84\xa6\x8f\x43\x8c\xaa\x35\x9e\x8d\x26\x73\xc8\x57\xd4\xb8\xc0\xb6\xc6\x95\x84\x7b\x86\x80\x0e\xa3\xd7\x34\xb5\xec\xc4\xd5\x2b\x50\x7a\xc6\x9b\x3a\x67\x78\x91\x60\x16\xeb\xc2\x31\x5f\x44\xc9\x0b\xf0\xc3\xe7\xda\xe0\x1d\x49\xcb\xc3\x03\x40\x2b\xbc\x63\x4a\xe1\x19\x1f\x3f\x6f\xd6\x3d\x30\x3b\x0c\x0b\xe0\x33\xa4\x7b\x90\xf8\xd3\xa7\x7f\x0a\x44"}, +{{0xba,0x9e,0x68,0x62,0x04,0x97,0x5c,0x3b,0xde,0xd4,0xc1,0xe9,0xf7,0x4c,0x7e,0x4c,0x7a,0x7e,0x3c,0x99,0x81,0xd0,0x1b,0xfc,0xa0,0xad,0x01,0x15,0xc3,0xf0,0xf5,0xc3,},{0x49,0x90,0xfc,0xe6,0x95,0x2e,0x8b,0x7d,0x0a,0xfc,0xf4,0xbf,0x9d,0xba,0x9b,0xce,0x1b,0xc4,0x81,0x5e,0x37,0x51,0x1d,0xa7,0xc2,0xad,0x48,0x92,0x58,0x1d,0xe0,0x3a,},{0xc7,0xd2,0x3a,0x58,0xe2,0xfb,0x2a,0x8d,0x4b,0x8e,0xd1,0xe9,0xea,0xe9,0x1e,0x11,0x29,0xc2,0xaf,0x8b,0xd0,0x5f,0x0b,0xd5,0x72,0xab,0xeb,0xbe,0x0f,0x30,0x82,0x59,0x25,0xf0,0xdf,0x71,0xcf,0xb7,0x21,0x8c,0x68,0x6e,0x55,0x48,0xd9,0x42,0x77,0x10,0xa6,0x90,0x36,0x6b,0xa8,0x55,0x41,0xc7,0x91,0x01,0xa5,0x8a,0x10,0xe8,0xaf,0x0a,},"\x46\xbb\x48\x95\x2a\xe5\x8f\x2b\xf5\x8f\x5b\xe8\xdf\x4f\x31\x6b\x50\xf3\x63\xec\x84\xee\xd8\xf8\x2f\xf4\xc0\x4b\x06\x92\xd0\x3a\xef\x26\xe8\xe1\xe6\xc9\x54\x9a\x22\x47\xd5\x40\xa6\xe2\x2f\xeb\x11\xe5\x7f\x4b\x80\x8a\x20\x97\xe8\xa7\xb6\xb3\xb7\xaf\x37\x69\xe6\xd8\x1d\x64\x88\x6e\x69\x62\x37\x2f\x4f\x39\xe4\x9c\xd4\x6c\x1b\x5f\x73\x5f\x38\x0f\x7c\x27\x7d\x09\x97\x76\xed\x1a\xea\xa5\x7a\x35\x9c\x0a\xa8\xc7\x2f\x40\xeb\x91\xa1\xbf\x07\xea\x15\x7f\x5d\xdb\x30\x40\x9d\x6e\x3a\xf9\x89\x90\xce\x7f\x30\xaf\xfd\xac\x5e\x22\x01\x06\x46\xdc\xa9\x6a\x54\x00\x60\xfc\x90\x8a\x31\x25\xb0\x00\xad\x1e\xd3\xa0\xf2\x55\xcd\x34\xf1\x5d\x7d\xd1\xfd\x68\x1c\x3c\x35\xa1\xcd\x65\x20\x56\xec\xc5\x26\x4d\x39\xaa\xf7\x2a\x9b\xb8\x3a\x55\x1c\xc9\x34\x88\x7a\xe1\x07\xaf\xdf\xef\x06\x32\x17\x27\x0d\x95\x96\x89\x14\x18\xbd\x46\x1b\xba\x63\xde\x65\xbe\x06\x7b\x1b\x78\x64\xfe\x46\x48\x4c\x7c\x9e\x96\x34\x9a\x7c\x03\xa8\x0f\xa0\x55\x05\x0a\xa1\x8a\xce\x2a\x44\xb4\xa0\x3c\x94\x78\x24\x17\x2b\x30\xe2\x10\x11\x15\x94\x43\xca\x3c\xef\xaf\x69\x6a\x7a\xa8\xf9\x80\x11\x26\x0c\x94\x36\xbf\x48\x99\x1f\x41\xd4\xd5\x07\xb9\x6c\xe7\x32\x3e\x53\x1a\xdc\xf6\x63\x47\xc5\x5c\x88\x55\x67\x3a\x9f\x2e\xc8\x9b\x5c\x80\x24\x46\x06\x17\xec\x72\x71\x77\x3b\x36\xd6\x4f\xc1\x4e\xb5\xd8\x26\x52\xc5\x3a\x30\x31\x45\x72\x27\x09\x3d\x11\x8f\xd8\xeb\x93\x84\xe8\x02\x29\x04\x1a\x96\xa6\x49\x34\x50\xf9\x7e\x67\x36\x26\x3a\xbf\x1e\xcd\x9e\x9f\xb9\xa4\xf0\xf6\xd6\x67\xfa\x82\x41\x51\x48\x5e\xdc\x37\xb3\x4a\xcf\x3d\x8c\x35\xf9\xc1\xbe\x48\xb5\xe9\x6a\x12\xaf\x8e\x2d\x35\xc2\x3a\x03\x58\x0f\x21\x1d\xa6\x31\x6b\x34\xc5\x6b\xee\x87\x2d\x47\x64\x1b\xca\x77\xda\x64\x0f\xdb\xba\xd5\xa9\xad\x8a\xb9\xdc\x79\x57\x91\x3d\xa7\x34\xad\x37\x49\x2b\xa4\xde\x8c\xf1\x36\xcc\xcd\xeb\x6b\xa3\xf1\xbd\x3f\x00\x3b\xe7\x26\x3c\x4f\x2a\x40\xc3\x3f\x24\xca\x33\x39\x59\x6e\x6c\x34\x28\x33\x81\x00\xeb\xcc\x07\x22\xd4\xf5\x0d\x30\xb3\x3b\x91\x2d\x4e\x7c\x1a\x9f\xe6\x5f\x66\x58\xa6\xf2\x39\x14\x0a\x62\xc3\x26\x1e\x10\x39\x2e\xd1\x93\x0a\xa9\x17\x65\x2d\x3b\xd2\xbe\x4e\x8a\x08\xab\x97\xe1\x45\xb9\x20\xab\xb3\x1e\xe4\xbc\xd5\xa0\xd7\x1f\x63\x81\x80\xf6\x1c\x24\x58\x23\xa3\x99\xa7\x34\xa4\xdc\xde\x09\x97\x88\x02\x45\xed\x71\xeb\x9b\xc6\x5e\x3c\x6f\xc9\x5a\xb9\x20\xb8\x02\x4c\x17\xd4\x4c\xed\x00\x37\xd0\x4a\x13\x3c\x26\x41\x78\x2f\x1d\x62\x2d\xf4\x52\x69\xb4\x91\xd3\xfa\x2a\x12\x27\x57\x9e\xaa\x38\x6d\xe3\xe7\xde\x7b\xc4\x55\xc6\xa1\x54\xee\xe5\x72\x7f\xff\x04\x37\xa2\x00\x76\xc5\xc3\xb0\x57\x7c\xac\x5b\x4b\x69\x34\xe2\x69\x38\x02\x22\x46\x1a\x60\xf9\x54\xe4\x89\x79\xc0\x67\x12\x17\xf1\x6f\x70\x27\x98\x30\x34\x12\x10\x93\x18\x6c\x78\x70\x5f\xc2\x7d\xc9\x2e\x2e\xda\x41\x16\xa6\xbf\x7d\x23\xe0\x54\x8d\x62\xb6\x7b\x25\xc4\x1e\xd0\x61\x92\xbc\x26\xef\x13\x97\xbf\x16\x01\xf3\xa6\xe2\xa0\xe7\xf6\x61\xfb\x05\x05\xee\x38\x2f\x27\xae\xc2\x80\x5a\x3e\x21\x17"}, +{{0x59,0x07,0xa8,0xc0,0x84,0x04,0x38,0x75,0x23,0x8e,0xdb,0xdc,0xb7,0x83,0x2f,0xbb,0xa4,0xc0,0x5e,0xa3,0xc5,0xf8,0x8a,0x96,0xf1,0xfb,0xf9,0x50,0x40,0x1e,0xc1,0x64,},{0xe2,0xf4,0x95,0x09,0xd1,0x00,0x7f,0x61,0x8e,0xfe,0x4f,0x1f,0xd6,0x7e,0xaa,0x6e,0x2a,0xb1,0x8a,0xfb,0x2d,0xec,0xce,0xd5,0xa0,0xb2,0xba,0x83,0x63,0x78,0x92,0x60,},{0x8c,0x49,0x12,0xc0,0xf8,0x85,0xd7,0x6c,0x91,0x40,0x59,0x50,0x53,0x73,0xa6,0x4b,0xdd,0xd6,0x7d,0xd4,0x68,0x36,0x9a,0xb9,0x18,0xf2,0x3e,0xa2,0x8e,0x04,0xc1,0x91,0x77,0xa8,0xd4,0x61,0x14,0x4f,0x0a,0x8b,0x51,0xd2,0x15,0x17,0x6c,0xb0,0x8b,0xd6,0x53,0x01,0xc3,0xc4,0x62,0x37,0xb6,0x1b,0xb1,0x49,0x8c,0xa7,0x9d,0x4b,0xe7,0x0e,},"\x43\x3b\x24\x78\xe1\x8f\xad\x5c\xb8\x10\x67\x06\x1d\x22\x55\x28\x22\x97\x78\x30\x78\x85\x47\x54\x60\xfb\xe3\x13\x7a\x5b\x44\x02\x48\x94\xdd\xbe\x56\xfa\x6e\xd0\x21\x49\x6f\x07\x86\xe4\x2b\xc6\xc2\xd2\x79\x7e\xa0\xa6\xbf\x35\x5e\x88\x11\x5f\xaa\x55\xcd\x92\xed\x42\x13\x3d\x9d\xcd\xa6\xb9\xeb\xf6\x3c\xe4\xa9\x94\xd1\xa8\x2d\x2a\x49\x26\x75\x58\xbe\x54\x18\x2a\x6f\x85\x11\x2b\xd1\x2b\x24\x7a\xda\xcf\x14\x05\xfc\x7e\xc7\xa0\x15\xd4\x3a\xb4\x0b\x82\xc6\x77\xf7\xf8\x5a\x0e\x48\x19\x7c\x5b\x96\x57\x61\x99\xf4\xc3\x34\x3f\xf7\x65\x4d\x52\x3a\x30\xc4\x3a\x05\x4c\x3e\x46\x44\x51\x27\x80\x34\xb7\xf1\x96\xc3\x66\x76\x8c\x62\x8a\xf9\x4f\xc0\xcc\xfc\x9a\x29\x55\xf9\xd3\x23\x38\xb9\x44\x78\x0f\x8e\x32\x70\x85\xb1\x03\x78\x18\x68\xe4\xfb\x79\xd5\x61\x22\xd7\xf3\xf5\xab\x30\x9e\x5d\x63\x4a\xdd\x15\xda\x38\x2c\x0d\x23\x58\xe6\x47\x18\x2b\xe4\xde\x6e\x9a\x9e\x43\xe6\xa3\xa3\xb8\x21\x5b\x20\x4d\x95\x07\x61\x0d\x46\x16\x21\x00\x0f\xb1\x89\x37\x07\xaf\x7d\x25\x95\xbf\xef\x8a\x8c\x5c\x5c\xd0\x8f\x30\x9a\x5f\xb5\x5e\x45\x51\x9a\xea\x9b\x84\x74\x8c\xa5\xc6\x72\xbf\xec\xd3\x0d\x25\x65\x12\x34\xa3\xcc\x31\x9b\x43\xdf\xce\xfc\x1a\x07\xb5\x5b\x4a\xca\x71\x4c\x2e\x7e\xf9\x63\x8f\xe7\x88\x4a\x77\xb2\x22\x53\xa0\x1a\x22\x29\x50\x0e\x9c\xe1\x0f\xda\x73\xa8\x43\xc1\x9c\xc0\x96\x26\xd2\x45\x6c\x22\xa9\xc9\x01\x88\x1d\x52\x1f\x4b\x15\xd2\xf6\x13\xcb\x46\x9d\x30\x4d\x57\x92\x23\xbc\x5f\xf7\x38\x04\xdf\x63\x71\x51\x7e\xba\xa5\xb6\x77\xea\x91\x0f\xf1\xa0\x2a\x26\xfa\xfe\x48\xfe\xf4\x69\xed\x79\x9b\xed\x6d\x56\xce\x96\x18\x34\xa2\xed\xc2\xe2\x3c\x0d\x94\x26\xec\xcd\xcc\x93\x4f\x4c\x22\x0e\x37\x81\x5f\x7c\x33\x4b\x73\x83\x60\x7d\x43\x05\x20\x94\x6a\x88\x1a\x08\x32\x5b\x41\x64\x97\x9d\x5e\x82\xcd\x81\x34\xd7\x8c\xec\x48\x61\xc0\x19\xf6\xde\x30\x1c\x1b\x9a\xec\x52\xbb\x98\x20\x33\xfb\x79\xb2\xe9\x73\x1b\xab\x29\x68\xbc\x3f\x93\xfa\x56\x04\xb8\x93\xc6\x02\x8c\x20\x4c\x36\xbb\x8c\x6b\x07\x4b\xe2\x8c\x96\x4d\x28\x49\xb5\xbb\x19\xd7\xe0\xba\x24\xe2\x2a\x20\x4d\x4f\xda\x83\xb1\x01\x31\xd3\x83\xf1\x0b\x13\x6b\xd0\xdb\xa3\x9e\xc2\x6a\xf3\x0e\x3f\xfb\x4d\xbc\x0c\x92\x1f\x0c\xc9\x91\x07\x15\xd5\x1c\x81\xfe\x4c\x62\x95\x0e\x85\x55\x49\xa1\x7c\xd7\x3a\x09\xac\x91\xe0\x6d\x46\x15\x18\x37\x6d\x0f\xcf\xa1\x23\xdf\x0a\x83\x71\x03\x45\x8d\x9c\xe2\x21\x80\x8d\x1f\x9e\xf2\xed\xc5\xcd\x2e\x68\x23\x14\x5b\x52\x48\x94\xea\x48\x52\x6d\x98\x5e\xef\xd3\xf6\x06\x79\x39\x95\x48\xe1\xed\xea\xdb\x53\x95\xb4\x3d\x87\x04\x4b\x2b\xfe\x7c\x60\x37\x02\x9b\x34\x6a\x40\x22\x27\xea\xb8\x1f\x33\x3e\x10\xe7\x7f\x1d\xbc\x06\xa2\x11\xd4\x3b\x82\x55\x86\x76\xc2\xdc\xff\x90\x82\xb1\xdd\x53\x36\x8d\xf0\x02\xde\x13\x29\xaf\x30\x00\xb1\x71\xa6\x91\x43\x89\xbb\x80\xec\x0c\x9f\x3e\x41\x2a\x44\x1b\x80\x0a\xfc\xeb\x04\x86\x70\x9a\xda\xc6\x6c\xaf\xee\xf2\x48\x83\x93\x31\xf5\xd8\x92\x19\x7e\x25\x42\x0f\x1e\x37\xd7\xc0\x24\x7f\x66\x9f\x5f\xcb\xf0"}, +{{0x60,0x20,0xae,0x27,0x3e,0x0e,0x05,0x37,0xba,0xc8,0x81,0xd7,0x54,0x9d,0x92,0x3e,0xb1,0xcc,0x20,0x0d,0x49,0xca,0x65,0xd4,0xbe,0x63,0x5e,0x39,0x17,0x3d,0xf9,0xda,},{0xda,0xaf,0x0e,0x69,0x9a,0x12,0xa9,0x2c,0x16,0xe0,0xde,0xd3,0xeb,0x34,0x50,0xa3,0x63,0x11,0x82,0x45,0x77,0xe3,0x61,0xf0,0x56,0x96,0x60,0x33,0x00,0x16,0x62,0x97,},{0xb1,0xba,0x88,0xfe,0xd7,0xe5,0xf4,0xb7,0x57,0xf3,0xfa,0x4d,0x1e,0xd9,0xb1,0x9e,0x49,0x8e,0x5d,0x2f,0x5e,0x6c,0xd4,0x6e,0x42,0x6f,0xe8,0xf0,0x39,0x88,0x2f,0x1b,0xe7,0x7a,0xc9,0xe5,0xa9,0x26,0x5c,0xbf,0x7e,0x3c,0xd2,0xa9,0xe9,0x92,0x6c,0x18,0x19,0x91,0x43,0x79,0x8d,0xa5,0xbe,0x47,0xa4,0x08,0x64,0x40,0x49,0x6b,0xa0,0x0f,},"\x6a\x80\x11\xde\x09\xaa\xc0\x0d\xb1\x6f\xf7\xe5\x5c\x2d\xe6\x7d\x8c\x98\x83\xfc\xb2\x04\x0d\xed\xbc\x1e\x32\x1c\xab\xa7\xbb\x03\x69\x71\x53\x01\x76\xd1\xdb\xba\xa9\x27\x52\x0b\xdf\xcc\xbe\xd8\x84\x01\x26\x04\x3e\xdc\x44\xcb\xb7\xfa\x35\x28\x68\x0e\x5f\x1b\x56\x64\x95\x1d\xc9\x01\x09\xae\xa4\xb9\xc3\x36\xca\x04\x3d\x82\x21\xa4\xc8\xd2\x01\x16\x56\xbf\x94\x4e\xfd\x36\xba\x0a\x10\xa4\xb3\x89\x19\x60\x55\x75\x0b\x0e\x38\x8f\xb5\x28\x70\xbb\xec\x8c\x55\x19\x81\x31\x44\x39\x45\xc0\x9f\x3a\xac\xe3\xe6\x91\x50\x14\x37\x40\x73\x26\x6f\x34\x88\x74\x42\xd7\x4f\x46\x8f\x8d\x70\x78\xbb\xa0\xbd\x81\x4c\xd6\xdd\x42\x3c\x97\xb5\x69\x05\x58\x7b\x15\x2d\x1f\xcf\xba\x0e\xb9\xfd\xe2\x11\x26\x91\xda\xfa\xf4\xf9\x21\x56\x2f\x24\x1b\x62\x84\x10\x01\x83\x4f\x6c\xe3\x66\x85\xf8\x2a\x8f\xaa\x3b\x7a\xfa\xd7\x3a\x5e\x59\xbf\x5f\x9e\x71\x3e\x59\x16\x3f\x31\xdb\xe6\x96\x11\x8a\xf3\x35\x06\xd2\xff\xea\x3d\x9c\x15\x56\xfb\x15\x2f\xd2\xb3\x21\xc3\x17\x57\xd0\xc3\xc0\xf6\x0e\xe1\x13\xed\xac\x02\xd6\x7e\xfb\xb3\x03\xdc\xe6\xfa\x88\xf7\xb9\x74\x6c\xa1\x10\xe6\xa0\xcd\x09\x9c\x08\x31\xf5\x3c\x55\xc2\x8b\x6c\x82\xaf\x44\x64\x56\xb8\x42\xb2\xc9\x50\xa5\x53\xee\x2c\x76\x5e\x97\x29\xe6\xb0\xc5\x46\xbf\xc2\x6b\xd6\xd4\x2d\x06\xb2\xed\x5d\x4c\x8c\xbb\xc7\x5f\x2a\x3a\xd8\x12\x93\x95\x79\x3d\x97\x9c\x03\x1f\xce\x7e\x20\xb3\x8b\xd8\x9c\x9b\x62\x47\x48\xb2\x01\x34\x23\xce\xba\xda\x02\xcd\xe2\x05\x2d\xa5\x66\x4c\x6c\x64\x26\xcb\xfc\x88\xf8\x4f\xf6\x02\xe2\xe2\x0d\xf9\x67\x8f\xbb\xa5\x77\xa4\xc1\x34\x51\x7e\xe0\x50\x68\x11\x51\x58\x0f\x7c\x5c\x97\x87\xb9\x6e\x55\xc4\x07\x5a\x26\xf4\xf8\xcc\xff\xbb\xb6\xea\x18\xde\x1b\x2c\xc8\xc4\x49\x6b\x16\x04\x27\x70\xb7\xec\x6e\xb5\x42\x9e\x7a\xc1\x89\x12\x32\xaa\x4e\x47\x46\x7f\x4e\x9a\x98\x5d\x80\x54\x7e\xcc\x4c\x6f\xd9\xf5\x97\x63\xed\xe9\x16\x71\xf2\xaa\x57\x36\xa5\xd1\x48\xe3\xa8\xff\xc8\x8e\x61\x25\x3a\x85\xb0\x95\x36\x54\x95\x8e\xb2\xd6\x94\x01\xcb\xea\xe7\x75\xf8\xcb\x8c\x3c\xa4\x2d\x21\x69\x3e\xbe\x29\x88\x38\xdf\x94\xc1\xd7\x7b\x12\x6a\x12\x05\xcc\x47\xd5\x0d\x53\x67\xb6\xf2\x76\xec\x8d\xb6\xb9\x53\x24\xa3\x1e\x8f\xd2\xed\x2e\x43\x42\x0c\x4a\xd0\x2e\xa2\x77\xdd\x94\x8a\x55\x19\x3d\x0f\x0b\x4d\x1c\xf2\x83\x86\xc7\x25\x97\x5c\xe5\xc1\x2d\x2a\x6f\x35\x67\x3c\xc2\x2a\x06\x94\xcc\xa4\xda\xf6\xaf\xbf\xd3\x26\xd8\x8c\x18\x50\xf8\x34\xc4\x2f\xf0\xe2\x92\xba\x4f\x13\xe5\xef\x07\x74\xa5\x96\xd3\x39\x04\xc0\x26\x2d\x31\xdf\x2c\x58\x4a\x0a\x4f\x45\x3f\x6a\xe4\xa8\x8a\x27\x5f\x7d\xe7\x9c\x13\xae\x1a\x73\x11\x5b\xe0\x2f\x42\x5c\x6f\x17\x7a\x1e\xc4\x63\x9c\x42\xa7\x92\x80\x9a\x2b\x09\x19\xeb\xd3\x21\xe3\x16\x00\x1d\x5b\x2f\x84\x89\x4f\xce\xbd\x50\xa1\xdc\xf4\x4d\x70\x2b\x92\x45\x32\xfc\x0e\x4d\x3f\x9f\xf8\x48\x6c\x0e\xd1\x80\xee\xcc\x3e\x09\xe2\x27\x2a\x94\xdc\x7d\x24\xa4\xe8\x7a\x93\x1f\xe2\x49\x5c\xbf\x99\x2c\x0a\xae\x92\x01\xe0\x79\x62\x98\xf9\x36\x3d\xba\xc4\x75\xe8\xed"}, +{{0x93,0x2a,0x20,0x0e,0xce,0xe7,0x22,0x3f,0x24,0x14,0x62,0x83,0xa4,0x04,0x8c,0x67,0xa6,0xa2,0xd2,0xfc,0x4b,0xa0,0xf9,0x24,0x8b,0xdf,0xfd,0x82,0xc6,0xcc,0xe3,0xcb,},{0xec,0x9b,0xfb,0x7a,0x6d,0x04,0xe7,0x26,0xfc,0x1e,0xa0,0xc4,0x24,0x61,0x0d,0xcb,0x79,0x67,0xbf,0x15,0xd6,0xd6,0x62,0x68,0x58,0xd4,0x11,0x19,0x8d,0x40,0xe2,0x39,},{0xcd,0x1e,0x4b,0xdf,0x4a,0x3e,0x4a,0x31,0xd6,0x52,0x54,0x33,0x3c,0x8c,0xc4,0x08,0x7e,0x4c,0xc4,0x0b,0x02,0xe2,0xa3,0x47,0xd0,0x9a,0x3d,0xde,0x69,0x84,0x90,0xc0,0x87,0xd7,0x10,0x9a,0xd0,0x20,0x9c,0x53,0xe9,0x87,0x58,0x9c,0xbf,0x3c,0xe2,0x64,0x12,0xa2,0xb0,0x2c,0xb8,0xa3,0xbc,0x93,0xfe,0xc7,0x5a,0xb5,0xd2,0xc3,0x87,0x03,},"\xdf\x95\x32\x07\x04\x82\x13\xaf\xb8\xe2\xaf\x45\x2c\x88\x9a\x21\xca\x13\x6a\x68\xc9\x29\xbd\xc8\x24\xf9\xa8\x9a\xc5\x96\xdc\xb9\x00\x19\xa4\x6f\xb6\x82\xbc\xfd\x96\x2f\xcc\xb2\x7d\x00\xba\xf8\xec\xca\xf9\xd9\xa7\xd8\x18\x3c\xab\xd7\xdf\xa5\x06\xf7\xba\xfb\x49\x35\xab\x04\x59\x31\xff\x8f\xae\xb7\x16\x31\xf9\xed\x6b\xb8\xf8\x47\x3a\xd6\x29\x0d\x7c\xf5\x19\xdb\x31\x0a\x44\x42\xc4\x61\x11\x8f\x67\xd1\xa6\xd1\x03\xba\xe6\xf2\x69\x7c\x94\xb7\x42\x6d\x9e\x02\xe3\xcb\x95\x22\xfd\x0b\x44\xae\xf6\x00\xc9\x62\xfe\xff\x58\x73\xd9\x8c\x27\x90\x88\x7b\x8e\x88\xd1\x60\x82\x4f\x1b\xba\x22\x01\x76\x39\xf8\xdc\xe6\x8f\x74\x34\x80\xde\xea\x1f\x92\xaa\x1f\xd4\x13\x5d\xd0\x64\x57\xa6\x0f\x36\xb7\xd7\xf5\x17\xd4\x0c\x94\xc0\xdd\xdc\x2e\x46\x58\x47\xd9\x09\xb9\xf6\x82\x45\xff\x2b\x42\x1d\x59\x19\x00\x1a\xae\x5a\xef\x24\xe0\x2c\x00\x2d\xa9\x07\xe8\x60\x5f\x16\x0e\xa6\x09\x6b\x58\x0b\x75\xce\xa0\x22\xd4\x02\xf7\xf5\xfd\xc4\x64\xf8\x7f\x78\xc7\x90\x6a\x01\xe8\xe4\x8f\xb5\xb3\x51\x74\x61\x2b\x48\xac\x8b\xc7\x50\xe0\xf3\xae\xb0\xa1\x2f\x7d\xfc\x09\xb0\x84\x2c\x17\x80\xa5\xfd\x9c\x54\xaf\xb9\x39\x9b\x94\x08\xba\xac\xcd\xa2\x0a\xfb\xe3\xd6\x82\x24\x8d\x7b\xf1\xef\xde\xf4\x90\x5a\x31\x9b\x0f\xfb\x10\x8b\x75\x3b\x71\xcc\x97\xe9\xe2\x1e\xc9\xb3\xdd\x28\xce\xe0\x39\xd9\x41\x8a\x11\x35\xf0\xad\xd0\x92\xaa\x66\x31\x2e\xa2\x91\x33\x00\xd1\xcc\x89\x16\x52\x43\x02\xbd\x3d\x1b\x09\xe6\xb2\x9c\x68\x57\xcb\xdc\x56\xef\x4b\x3f\x35\xd8\xee\x67\x72\x08\xef\xfa\x84\x6f\xdb\x06\x6b\x05\xeb\x71\x7b\x4d\x45\x12\x0c\xab\x72\xa7\xdb\x7a\x7c\xa8\x46\xe8\x7b\x16\xb6\x90\x47\xeb\x76\xd8\xf1\x8d\xa8\xe1\x39\x9e\xc0\xa8\xc9\xc3\x28\xcb\xe6\x0e\x0b\xf4\x20\x44\xd2\xeb\xf2\x81\x8b\x3c\x04\x75\x88\x45\x2f\xcd\x2b\x3e\xfc\x1e\x10\x09\xae\x07\x68\x87\x27\xdb\x8f\xb6\xdf\x2a\x2f\xe7\x5d\x1c\xf2\x2f\x32\xba\xc0\x9c\x82\xa6\xa3\xd7\xee\xd7\xd0\x05\x08\xcb\xe5\xb7\x24\x60\xec\xfc\xdd\x3e\xe9\x11\xef\xe5\x89\x8d\xbd\x8e\x4c\xe8\x59\x13\x26\xdd\x15\x22\xf9\xd2\x55\xda\x86\x1b\xf9\xeb\x2a\x1d\x57\x25\xd7\xd5\xd4\x27\x34\x03\x41\x94\x5e\x7b\xca\x8c\xf2\xff\x8a\x99\x74\x50\x95\x3e\x77\xd2\x03\x68\x3e\x4b\x0d\xaf\xc3\x30\xe0\x56\x72\xd2\xec\xd1\x3a\x3f\x44\x2d\xf1\x37\x04\x4e\x0f\x55\x6f\xfb\xce\xff\xea\x26\xcb\xae\x26\xcb\xa6\xf2\x56\x8c\xf3\x9f\x90\x84\x89\xe1\xa9\x2e\x76\xaf\xbf\x29\x79\x95\xda\x4b\x2c\xb1\xab\xc9\xee\x1f\xe4\xdc\xa5\xaa\x83\x8b\x2f\xbd\xc1\x09\xe8\x9b\xef\x3c\xe5\xa3\x6e\x5b\x2f\x71\x2a\xc4\xc8\x89\x43\x82\x48\xfa\x5a\x21\x50\xca\xc6\xc9\x77\xb5\xe0\x54\x3f\x40\x10\xb7\x31\x47\x32\xfd\x18\xe7\xfd\x59\x82\xe8\x32\x76\x51\x9e\x78\x72\x5e\x5a\x5e\xeb\x86\xf4\x89\x20\x84\xae\x52\xda\x38\x49\xc2\x28\xc8\x09\xed\xbf\x69\xa2\xcc\x47\xc4\x78\xd1\x87\x19\xf1\x11\xd7\x37\x88\x7c\x7a\x2e\xb3\x25\x08\x98\xdb\x34\xe5\xe5\x07\x6f\xab\x9f\x4a\x9e\x6e\x19\x29\xa3\x48\x08\x36\xde\xa0\x7b\xa4\xd6\x3f\xce\xfc\xe5\x54\x34\x30\xa8"}, +{{0x5c,0x48,0x3e,0x83,0x7e,0xb0,0x1e,0xd5,0xa4,0xad,0x5d,0xb3,0x79,0x26,0x99,0x82,0x4d,0xf1,0x3e,0x57,0x6b,0xe9,0x67,0xd1,0x21,0x15,0xc8,0x5e,0x02,0x86,0xe6,0x28,},{0xfe,0x1a,0xa8,0xb0,0x69,0xda,0x56,0xe6,0x76,0xef,0x3a,0x57,0xd9,0xbb,0xa8,0x83,0x05,0xea,0x03,0x28,0x08,0xee,0x63,0x52,0x73,0xb3,0x7c,0x5c,0x63,0x5d,0xef,0x4e,},{0xc1,0x7c,0x2f,0xbf,0x8c,0x00,0xbc,0xea,0x30,0x35,0xbf,0x0a,0x62,0xd3,0x02,0x29,0xdb,0x74,0x2c,0xab,0x11,0x99,0x67,0x7c,0x7e,0xb4,0xeb,0x0e,0xf5,0xc7,0xb5,0x1a,0xd4,0x87,0xa4,0x97,0x1b,0x63,0x1e,0x79,0x4a,0x58,0xbb,0x08,0x23,0xcc,0x0f,0xe6,0x26,0x10,0xfd,0xa6,0xa9,0xe0,0x3f,0x8c,0x4c,0x33,0x81,0xcb,0x15,0x4c,0xef,0x0b,},"\x58\xd5\xe2\xcd\x89\x9b\xa9\x85\x37\x8b\x3e\xc3\x3e\x9a\x86\x98\x22\xb2\x3d\x5d\x89\x6a\x28\xf4\x24\xfc\xd6\xe4\xcc\x28\xb8\x0d\x4a\xaf\x2d\xe8\x04\x36\x7e\xfd\xf5\xe4\x23\xb1\x23\x4d\x82\x1d\x63\xac\x05\xea\xed\x12\xc7\x3e\x8e\x36\x08\xaf\x0d\xdc\xcc\x83\x86\xb7\xd8\x42\xb1\x2e\x60\xd3\x0c\xed\xe3\x25\x53\x94\x5e\x78\x29\xe9\xb2\x3f\x5c\xcc\x2e\x71\x03\xa0\x8f\x2c\xdd\x9e\x75\xa7\xb3\x6f\x5e\x63\x72\x0e\xf0\xd4\x9b\x25\x92\xbe\xf3\x74\x02\x68\xc8\x9c\x86\xa6\xcb\xdf\xe2\x01\xde\x0d\xb9\x98\x5c\xeb\x19\x39\x9c\x9a\x1d\x5b\xb0\x58\x6a\xf3\xc8\xcd\xf2\x71\x32\x99\xeb\x04\x43\xa5\x41\xa4\x73\x84\x60\x72\x43\xc5\x4a\x05\x91\x50\x58\x36\x7d\x3f\x2d\xb3\x80\xed\x31\x7a\x8c\x12\xc7\xa6\x3e\x80\x9c\x2e\x84\xd4\xac\xb9\xd9\xee\xf5\x4c\x6f\x5a\xf7\xab\x59\xcb\x91\x68\xb1\x06\x8f\x9d\x2c\xcd\x97\x8f\xe7\x21\xba\xd6\x8a\x66\x9f\xfe\xde\xa3\xe9\x2c\x76\xb3\x2e\x31\x66\x65\x8e\xe3\xbd\x0d\xeb\x1b\x08\x41\x94\xce\x35\xd9\xa7\x41\xc5\x7f\xc2\x24\x1e\x68\xef\xaa\x65\x32\x0b\x23\xa1\xdd\x19\xea\x8b\x7e\xc8\x1e\x76\xf1\xe9\x16\x3f\x95\x92\xee\xee\x5a\xf8\xec\xed\x02\x72\xf3\x35\x12\xd0\xd4\xca\x06\x7f\x05\x55\x1b\x26\x53\x96\xe1\x00\x14\x78\x3c\xac\xac\x79\x43\x7b\x19\x84\x2d\xe6\xab\x91\xb9\xd9\x23\xbb\xeb\x50\x33\x25\xbc\x54\x86\x9f\x66\x3e\x6e\xa4\xae\x68\x97\x70\x1b\xe7\xe1\x1d\x16\xcd\xfa\xe0\xee\xe8\x61\x86\x20\x00\xe7\xa4\x16\x07\x81\x54\x7e\x42\x52\x6a\xf5\x1b\xa9\x69\x8d\x23\x4a\xaf\x51\x0d\xa8\x1a\x0d\xbf\x26\x43\x66\x15\x3d\x7a\x6d\x5e\xb3\xfb\x08\xb9\xbb\x5e\xa0\x65\xc2\xf5\xe5\xb6\xbb\x67\x9d\x2e\x21\x0b\x5b\x40\xe2\xbc\x82\xf7\x8d\xc9\xab\x58\x24\xb7\x4a\xad\xad\xd8\x9b\xf8\xa8\xb7\x3a\x0a\x2f\x43\xac\x74\x83\x78\x92\x1a\x73\xa2\x52\x70\x4a\x4a\xdb\xf7\x40\xcb\x99\xc1\xe1\x59\x4c\x37\xac\x9a\xcc\x19\xf5\x23\x15\xc6\xa8\x46\xa5\x7b\x36\x12\x8c\x64\xd7\x67\xaf\x44\xe9\xc8\x63\x05\xbf\x18\xba\x7c\xd5\x26\x80\x52\x3a\x3b\x10\x2f\xba\x6f\xe5\x55\x67\x06\x9d\x20\x47\xcb\xdd\x96\x05\xea\x12\xc8\x87\x7d\x39\x9c\x1e\x66\xe3\x38\x17\x73\x1f\x50\xb8\x4f\x81\x7d\x1f\x07\x60\xa4\x0f\x97\x46\x86\x18\x93\x41\x05\xeb\x00\xec\x50\xc7\x6d\xb3\xc5\x3f\xcf\x43\xfe\x17\x02\x90\x7d\x9a\x75\x6b\xcf\x43\x9f\x88\x31\xd0\xbf\xac\x92\xe7\x05\x8f\xb1\x57\xbe\x3e\x59\x1d\x37\xeb\x34\x16\x5e\x3c\x6f\xc6\x0e\x72\x29\x4c\x08\x3e\x47\x76\x26\xf9\x00\x1c\x1d\x73\x7c\x29\x03\x77\xdf\xa5\x8e\xa4\xea\xd3\x02\x8f\xc7\x62\xce\x8a\x3a\xfe\xc2\xe6\xe1\x32\xc6\x62\xdf\x60\x34\xab\x55\x4f\x93\xef\xac\x65\x7a\xd3\x4f\x61\x07\xd3\x47\xfc\x5c\x5e\x53\xf3\x73\x3e\x17\x8b\x76\x01\x4d\x2f\x9b\xbd\x06\xef\x2d\xfe\x60\xe2\x08\x3d\x88\x65\xf7\xf5\xb2\xac\xc0\x25\xd9\x12\xe5\xcf\x6c\xda\x6e\x79\x81\x43\xe9\xdb\xbc\x70\xa0\x21\x1d\x8e\x40\x03\xd7\x8b\x38\x3d\x66\xa6\xad\x29\x71\x7c\xa2\x4e\xdd\xef\x7d\xf7\xcd\x3a\x7e\xf6\x52\xab\xa5\x48\x7a\xfe\x5d\x02\x6c\x9b\x10\x28\x07\x29\x4e\xb2\x7d\x98\x24\xee\xb6\xb4\x0f\x08\x3d\xe7"}, +{{0xb0,0xd0,0xab,0xdd,0x84,0x44,0xe1,0x0f,0x29,0x37,0x54,0xac,0x9f,0x16,0xe3,0x1b,0xdc,0xdd,0x97,0xb7,0x06,0x71,0x28,0xaa,0xe8,0xe4,0xd7,0xf1,0x12,0x89,0xe2,0xcd,},{0x1c,0x78,0xcc,0x01,0xbe,0xa1,0x53,0x52,0xb6,0x3c,0x56,0x97,0xf1,0xcf,0xe1,0x2f,0xfd,0xd1,0x6d,0xdc,0x1d,0x59,0xe7,0x79,0x51,0xb6,0xe9,0x40,0x8e,0xe2,0x28,0xad,},{0x64,0x40,0x8b,0xdd,0x2d,0x0f,0xc8,0x92,0xa5,0xb6,0x2b,0x5a,0xcf,0x8e,0x3b,0x3c,0x73,0xc0,0xb5,0xc4,0xfa,0x2a,0x72,0xe3,0x9d,0xd6,0x08,0xd4,0x93,0x7f,0x93,0x32,0xf7,0x3e,0x14,0xd0,0x8b,0xad,0xc6,0x27,0x01,0x14,0xd1,0xf1,0xa5,0x56,0xcc,0x6e,0xe8,0x48,0x8a,0xbb,0x90,0x7f,0x79,0xae,0x17,0x5c,0x35,0x2e,0x9f,0x11,0xee,0x05,},"\xaa\x27\x6c\xc5\x43\xfc\xc6\x2d\x70\xa7\x04\x60\x8d\x98\xce\x51\xb6\x45\xb5\xc2\x4a\x64\x0a\x5d\xf1\x0a\x55\x91\x41\x7d\x10\x89\x26\xdf\x3f\x0c\xe1\xb9\x21\x03\x33\x09\xeb\x8d\x86\x59\xf4\x89\xfd\x6f\x79\xaa\x1b\xf4\x88\x2d\x72\xac\x69\xcc\x58\xd3\xbc\xe0\xfa\x89\xb1\x64\x11\xe9\x75\x3e\xb4\x0c\x6c\x4d\x59\x8d\xc8\xf4\xab\xb0\xbc\x48\xf1\x37\x03\x71\x32\x6c\x9a\x86\xbb\xc2\xac\x62\x14\x47\x8e\x78\xa3\x84\x08\xbd\xda\xfa\xa9\x59\x26\x00\xc4\x9a\x12\x9c\x05\x39\x2f\x8a\x7d\x64\x2b\x49\x13\x7a\x20\xf3\xfe\x9f\x11\xee\x17\xcf\xa3\xaf\xd2\xaf\x71\x56\x5e\x9c\x40\x08\x0b\x60\xcd\x0d\xbc\x37\x8e\xda\x06\x2c\x7c\xbc\x7f\xe9\x72\xbd\xe4\x50\x9a\x1d\xe9\x5f\x14\xdf\x48\x2f\x48\xaa\xcc\x46\x3c\xd5\x94\xf6\x6d\x64\x8d\x37\x94\x73\x8a\xd6\xab\x49\x6e\x2d\xa5\x0b\x0d\xb2\xba\x7b\x65\x91\x85\xe4\x58\x7f\x18\x2e\x83\x3d\xe7\x50\xfa\xac\xdd\xf2\x1a\xf5\xe0\xcf\x4c\x9a\xf3\x85\xb0\x4f\x7b\xe2\x31\x49\x8a\xd0\xb7\x42\xd5\xa8\x7c\x06\x11\x5d\xb2\x30\x97\x3a\x51\x42\x7f\x20\x2f\xa3\x9a\xfb\x98\x28\xb5\xf0\x3f\xa3\x27\xcb\xd5\x2d\xfe\xc6\x6d\x71\xea\x31\x98\x65\xdc\xf6\x81\x0f\x18\x58\x47\x2d\x8b\xea\x3e\x44\x7a\xdf\xb4\xb6\x07\x58\xe8\x6b\x48\x13\x37\x09\x73\x2d\x2b\xcf\x51\xc7\x6c\xaa\x84\x7b\x65\x37\xfc\xb0\x5b\xb8\xc8\x7d\xc5\xe9\xfb\x02\x2b\x32\x60\xc1\xd7\x1b\x14\x98\x59\xc9\x66\x3d\xbd\xae\x6a\x7b\xbf\xd6\xde\xb9\xd1\x23\x80\x9c\x24\x14\x01\xaf\x10\x71\x9c\xf9\x1a\x6b\xed\x16\x08\x4c\x44\x46\x07\x35\x9e\xd8\xf0\x18\xdb\x11\x15\x11\x89\x2b\x46\xbd\xac\x6c\x9c\x61\x38\x41\xde\xd8\x86\xb9\xde\xc0\x6c\x01\xe8\x04\x87\xe4\x8f\xbe\x77\x8e\x9e\x97\x50\x8f\xfd\xa0\x57\x78\x53\xaa\xbd\xca\xca\x8b\x0b\xab\x6c\xe4\x15\x57\xaa\xb9\x63\x1c\x96\xd6\x09\x77\xe3\x57\x18\xb6\x05\x95\x27\x3f\xdb\xa1\x40\xf5\x50\x0a\x8d\x35\x76\xf5\xa9\xfc\x8f\x3c\xa4\xc0\x2c\x16\x7a\xf2\xe0\x3d\x25\x75\x0b\x42\xad\xb0\x3b\x14\x17\xf2\xb6\xd2\x19\xbe\x5f\x84\x29\x33\x1a\x26\xa4\x49\xb5\xd4\xdb\x2b\x1a\x09\x15\x2e\xea\x2b\x25\xd2\xdf\x7e\xf6\xfe\x0a\x32\xe2\x5f\xae\x79\x36\x0a\x9a\xee\x15\x11\xfd\xa8\x06\x45\x50\x93\x7a\x71\x30\x97\x19\x30\xc6\x73\xbb\x35\x8e\x5f\x55\x95\x1f\x50\xb1\x46\xd8\x5d\x38\x3f\x3e\x01\xc1\x51\xec\xe6\xc0\x6d\x83\x67\x01\x25\x32\x80\xfd\xcf\xf4\xe1\x39\xd3\x31\x9a\xb2\xe2\xca\x71\xbc\xc3\xfa\x0f\xaf\x7c\x70\x2c\x9c\x60\x4e\x56\x51\xde\x4a\xf5\x70\x0e\x9e\xde\x72\x58\xb9\xbc\x14\x8d\x55\x95\xcd\x34\x17\x0e\x3e\x5c\xf2\x92\x82\x83\x90\x90\x8f\xda\x96\x1f\x22\x30\xac\x0b\x8c\xac\x64\x73\x97\x32\x70\x6c\xe2\xd5\xe5\x9a\xbd\x6d\x5e\x20\x7b\xda\xfe\xa7\x4d\x28\xd7\xa7\x58\xf2\x20\x0e\x4e\x00\xa0\xbc\xf0\x30\x6a\x3c\xab\xda\x47\x02\x4f\xab\xea\xe4\x88\xab\x5c\x32\x37\x15\xcf\x3c\xa7\x72\x0a\xf9\xeb\xbf\x85\x82\xe1\x15\x8a\x09\x9d\x73\x6b\x56\x9b\x9d\x40\x29\x58\x17\xea\x25\x54\x06\x8b\xef\x32\x44\x2c\x11\x1e\xc8\x14\xc6\xed\x41\x59\x19\xba\x73\x52\x63\x34\xdf\x30\xba\xc6\x66\x08\x4e\x56\x01\xc2\x28\x1c"}, +{{0x49,0x84,0x97,0xfd,0xcc,0x6a,0x10,0x58,0x91,0xe0,0x23,0xff,0x32,0xd7,0x5f,0x7c,0x37,0x48,0xd8,0xc5,0x2d,0x87,0xdd,0x3b,0x27,0x75,0xae,0xfd,0x81,0x60,0xa1,0x43,},{0x2d,0x79,0xae,0x9c,0xee,0x4a,0xc6,0x27,0x5b,0x05,0x74,0x9c,0x43,0x8e,0xbe,0x55,0x2b,0x41,0x3d,0x87,0x3c,0xc0,0x7f,0x14,0xf5,0xfa,0x13,0x01,0x77,0x21,0x4c,0x54,},{0xb0,0xa3,0x6a,0x2c,0x93,0x47,0x56,0x34,0x8e,0xb4,0x7c,0x25,0xa3,0x2c,0x3f,0x2a,0x5d,0xdb,0xd5,0x8f,0xcc,0x72,0xa0,0x8c,0x3c,0xea,0xd1,0xa2,0xd9,0x00,0x33,0x5c,0x30,0x01,0xe3,0x5b,0xfe,0x1f,0x3f,0xb5,0xa5,0x55,0x00,0x9b,0xa8,0xe9,0x68,0x74,0x49,0x4b,0x97,0xe8,0xb0,0x97,0x00,0xed,0xcb,0x1f,0x25,0x84,0xb9,0xd0,0xfe,0x03,},"\xbe\x38\xbc\x8c\xdf\x46\x19\x0e\x30\x4a\xb5\x3d\xd2\x9c\x2b\xc4\x09\x54\xfd\x4c\x6d\x2b\xb9\x90\xf9\x3b\x2b\x5c\x69\x1f\xdf\x05\x27\xc2\x60\xf5\x06\x61\x87\xf2\xd0\xf3\x1f\x43\xa0\x8b\x36\x0e\xa1\xed\x82\x00\x65\x17\x64\xb8\xfa\x49\x59\x5a\x15\x94\x10\x9e\x49\x67\x59\xab\x66\x23\xfa\x33\x37\x8d\x80\x0e\x61\x17\xe0\x79\xe1\x3f\xe8\x5c\x81\xb6\x3e\xbe\x24\x7b\x3d\xf6\xc1\x58\x4b\xc7\xcf\xfb\xdf\xa4\x5f\x2a\x2c\xe7\xc2\x37\xaa\xaf\xef\x8c\xbc\xa7\x0b\xca\xbc\xe0\xb8\x47\xd5\x51\xf4\x6a\x7d\x15\xce\x2a\x0d\x3d\x54\x5a\xba\xcc\x59\x30\x01\x0c\x53\x64\x88\x87\xd4\x76\xe0\xd1\x3a\x34\xfc\x1c\x54\xdf\x09\xd1\x06\xed\x75\x8d\xee\xdc\x76\x1d\x55\x7a\x73\xb2\xbc\xdd\xde\xfb\xa4\xed\x00\x59\x97\xb1\x92\x79\xb9\xd2\xde\x37\xd0\x41\xfe\x01\x3e\xef\x05\xa2\xe1\x1c\x9a\x23\x4e\x87\xcc\x0e\x16\xc0\xc6\xda\x42\xaa\xa5\xbf\x99\x64\x17\xbf\x64\xe5\xb7\x85\xd6\x7d\xc3\x25\x47\xc1\xf0\x52\x17\x8d\x69\x4c\xf2\x0f\x16\x98\x58\x9e\x7e\xd4\x9b\xe2\x9d\xd5\x9f\xd5\xc0\x1b\xa1\xd9\xf5\xfb\x06\xa7\x58\x95\xb7\xb1\xe1\x58\x95\x09\x7e\xbd\xe8\x4c\xad\x63\x03\xaa\x0a\x86\xdb\xc3\x24\x74\x7d\x97\x24\x5d\x70\xc5\x20\x3b\xe0\x1b\x06\xcb\xde\x06\xae\x03\x72\x04\xd2\x37\x30\xcd\x69\x61\x89\xf7\xac\x26\x7c\xf2\x02\x17\x99\x29\xce\x54\x10\xe0\xe3\xad\xe5\x13\xd2\x20\x1b\xfd\x20\xfe\xfa\x40\xb4\x47\x6f\x27\xbf\x90\x7c\x76\x2e\xb7\x26\x2a\x5b\xe1\x3c\xfc\x04\x7a\x84\x6d\x20\xa9\xf2\x31\x1b\x64\x69\xb0\x6a\xb5\x45\xf0\xec\x9f\xc4\x46\xea\x25\x0c\xd3\xb7\x3a\x7b\x6b\x96\x0c\x10\xca\x4c\x2d\x6c\x64\xa1\x56\xa1\x8c\x9f\xb8\x10\xe4\x9a\xfd\x0c\x36\xda\xab\x8b\x8b\x85\x66\x43\xa4\xcc\xaf\xa9\xad\x88\x6e\x91\xe5\x44\x53\x5b\x8e\xdd\xa2\x7c\x90\xc0\x6a\xb6\xbc\xc5\x36\x28\xbe\x18\xd7\xd6\x36\x9c\xa1\x80\x1f\x91\xc2\xe0\xb9\x5f\x36\xd7\x02\xf7\x72\x34\xb4\x10\x07\x19\xc0\x59\x95\x1e\x45\xb1\xf9\x16\x98\x39\x34\xe3\x2b\x4d\x4d\x8f\x29\xc0\xa3\x73\xf8\xd8\xf0\x91\x8b\x96\x78\x65\xcd\x0e\x4b\xec\xa0\x13\x27\xc9\x9d\x5f\xde\xd4\xc1\xa6\x9a\xc2\xd4\xd9\xb7\x8f\xfb\x83\x05\x67\x00\x21\x04\x02\x50\xcc\x27\x73\x7e\x75\xdf\x75\x76\x0f\xec\x8b\x8d\x30\xb2\x45\x65\x4f\x3c\x12\xf1\xf7\xce\xa0\xbc\xe7\x8a\xb3\x69\x35\x78\xaf\x3e\xa6\x1f\xfc\xcd\xf9\xba\xf7\xc3\xea\x65\xb8\x8f\xc8\x54\x12\x81\x26\x47\x67\x96\x89\x2c\x66\x3b\xd1\x45\x18\xc9\x91\x86\x29\xa1\x09\x5f\x61\x4e\x04\x92\x44\x6c\x3d\x84\xb1\x6e\xc9\x4f\x7e\xca\xda\xeb\x6b\x65\x9b\xbb\x48\x67\xb5\x79\x06\x17\x14\xfd\x5b\xb0\xfa\xa4\xad\x6b\xe0\xff\xb3\x88\x8b\xea\x44\x7e\x4e\x34\x38\xc8\xf0\xea\xe6\x44\xfb\xd4\x5a\x38\x02\xdc\x40\xec\x45\x1b\x21\x2b\xd5\x92\xda\xcd\x4d\xa9\x66\x86\xdc\x8b\x20\x24\x25\x7f\x25\xe9\xc8\x30\xbf\xf7\x95\xee\xe8\x5d\x87\xa0\x90\xc1\xa4\x23\x21\xe7\x10\x55\x57\x64\xed\x82\x57\xc9\x41\x5c\x7f\x22\x4b\x53\x75\x58\xce\xfd\xc6\x15\x12\x9f\x28\x35\x02\x67\xc0\x1b\xa0\x40\x3e\x07\xf5\xc6\x06\x7f\x91\xc8\x5a\x2c\x50\xc8\x66\xdc\x43\x88\xaf\x38\xd2\x16\x02\x03"}, +{{0xd9,0x62,0xa6,0x71,0x9e,0x5c,0xc7,0x72,0x4c,0xa4,0xa1,0xd5,0x59,0x53,0x68,0x12,0xb4,0xe2,0x2a,0xa7,0xbc,0xb1,0x3e,0x4f,0xb1,0x72,0x2d,0x28,0xe0,0x45,0x21,0x7c,},{0xa9,0x44,0x59,0x2d,0xbc,0x7d,0x77,0x03,0x9d,0x72,0x02,0x56,0xc3,0xfd,0x34,0x0d,0x34,0xdb,0x89,0x2a,0xb1,0x3e,0x48,0x12,0xd6,0x62,0xe2,0x84,0x0c,0x28,0xb6,0xd0,},{0xdf,0xb9,0xb6,0x35,0xac,0x0e,0xdf,0x83,0xb7,0xb5,0x9d,0x0b,0x84,0x09,0xaf,0x47,0x5f,0x66,0xfc,0x99,0x46,0xaf,0x0b,0x7c,0x63,0xab,0x8c,0xf5,0x92,0x9d,0x47,0x01,0xa1,0xbf,0x66,0x95,0x9c,0xde,0x62,0xfb,0xcf,0x59,0xa4,0x8a,0xb3,0xbb,0xaf,0x0b,0x9a,0x61,0xb6,0xe0,0x0b,0x21,0x81,0xeb,0x93,0x42,0x82,0x07,0x0a,0x5d,0x53,0x00,},"\xa6\xaa\x7a\x19\x0d\x00\x3a\xb1\x75\x33\x2b\x8f\x58\xe7\xca\xeb\x69\x08\x54\xd9\xdb\x56\xdb\xb6\x95\x7b\x3f\xb6\x54\xe2\xe0\xda\x99\x1f\x31\x54\x21\x42\x04\x13\x5d\xf1\xe1\x10\x43\x17\xc9\xe3\xc5\x8e\xed\xff\x1f\xc6\x1a\xba\x57\x74\x4c\x0c\x7e\xf4\x86\x00\x0a\x70\xb2\xc1\x42\xeb\xad\xdc\x07\xab\x06\x5e\x2a\x85\x5d\xaf\x19\x8a\x68\x03\xac\x24\xef\x37\x24\x48\x7c\x13\x51\xdd\xed\xa0\x51\x39\x13\x45\x7d\x76\x86\x0d\x78\xa9\xb6\xbc\x3d\xba\x66\xc4\x0e\x5f\xc3\x49\xa8\x73\xad\x60\x65\xce\x7d\x7f\xdc\x2c\xc4\x83\xb3\xae\xfb\xf2\xf0\x3d\xd6\x69\xbd\x9c\xb8\xf6\x3c\xee\x47\x78\x5c\xac\xb0\x9d\x87\x2c\x9a\xeb\x83\xe9\x86\x84\x05\x25\x43\x24\x03\x79\x82\xe0\x86\x13\x45\x5d\x95\x21\xd8\x8e\xa2\xfd\xa0\x20\xbe\x73\x0c\xfc\x8c\x07\xcb\x0b\x37\x61\x4c\xcb\xa2\xfa\x3e\xc4\x98\xb8\x15\xbb\x5a\xdb\x99\x6e\x84\x8b\x38\xc0\x15\xa6\xa5\xc7\x52\xeb\xda\xc7\xb9\xee\xd8\xb6\x96\x19\xd8\xc8\x46\xb6\x6f\x78\x16\xd1\xdf\x1e\xbc\x21\x07\x1c\xef\x0b\x25\x1e\x2e\xab\x59\x82\x7f\x6d\x60\x55\x08\x43\x70\xfd\x27\xc2\x03\xe8\x6a\x18\x9f\x1e\xe1\x1e\x84\x03\xab\xdc\xbd\x1f\x45\x34\x1a\x82\x05\x25\xd8\x63\x7d\xc4\x84\xa5\x18\x5d\x65\x51\xcb\x88\x2a\x96\xb9\x98\x1a\x5f\x1a\x82\x1f\x27\xb6\x56\xff\xf9\x0e\x7f\x69\xbf\x28\x6f\x75\x2f\x97\x0f\xfc\xa5\xc5\x3e\x08\x50\xb2\x0b\x94\xf9\x43\x16\x27\x09\x4a\xce\xa9\x12\xa8\x80\xb7\x49\xa6\xf8\x0b\xb2\x06\xcc\xaa\x74\x6f\xa7\x0c\x83\x3c\x9f\x32\x30\x89\xce\x05\x58\xc9\xdc\x20\x0d\x57\x39\xd1\xe4\x99\x63\x4f\x2c\x16\xe5\x4b\x7f\x6d\x78\x19\xc4\x70\x71\xb6\x0b\xd5\x4d\xd0\xf2\x73\xa3\x19\x75\x0f\xd3\xc5\x10\xa4\x9a\xb5\x6f\x63\x0c\x7c\xe6\xd8\x02\x3d\x97\x86\x23\x46\x85\x9b\xc0\xb4\xd6\x05\x22\x49\x69\x70\x89\x03\x76\x03\x01\x40\x9c\x60\xab\x25\x17\x56\x11\xf0\xbe\x98\xb2\x3a\x8c\xd8\xac\x53\x5e\x35\x13\xbc\x77\xe1\x45\x21\x93\xda\xdf\x44\x35\xe6\x3c\x36\x29\xb6\x66\xa5\xea\x4c\x4b\xad\x36\xea\xca\xd2\x60\x14\x04\xea\xbd\x8d\x9a\x07\x95\x6e\xc2\xb4\xb7\xbb\x63\x36\xed\x75\xb8\xdf\x8f\x16\xde\x42\xc0\xfc\xae\x93\x65\x2e\x3c\x40\x7c\xbd\x45\xe8\xd4\x13\xef\x51\xe8\x54\x2d\xf6\x25\x12\xee\x79\x3e\x41\x35\x8a\x1d\xe1\x92\x46\xc6\x58\x6b\x3c\x14\x07\x41\x04\x21\xf6\xe8\x65\xc7\x5a\x9f\x4a\x6a\x47\x88\xf8\x4a\x9c\x78\x1d\x8f\x80\x24\xbf\xdb\xe2\x5b\xdc\x7d\x4b\x69\xcb\xaa\x77\x19\x62\x8c\x0b\x07\xec\x2c\x4a\x23\x4f\xff\x4a\xc3\xd4\x93\x5b\x9c\xe4\xc8\xa1\x69\x47\xab\xe7\x95\x1f\xf8\xd9\xac\x92\x15\xe3\x38\xfa\x0f\xe9\x12\x41\x76\xd1\x7b\xac\x1e\x05\x59\x2c\x43\x98\x68\xae\x5a\x4f\x75\xfd\x1e\xa8\x2a\xa4\x54\xc2\x0a\x93\x9d\xed\xa7\x29\xa0\xe1\x96\x46\xce\xbd\x82\x20\x49\xc8\x25\xc7\xe3\x1c\x6e\xfa\xd4\x5e\x30\x6f\x2d\x9f\x05\x69\xe0\x71\x73\x31\xf4\x80\x04\xc2\x6e\xbf\xe6\x8f\x38\x43\xe9\x0f\x80\x67\x03\x2d\x21\xe7\x86\xc8\x53\x9e\x01\xbe\x3c\xea\xc5\x95\x4a\x05\x46\xc8\x4b\x73\x4d\x99\x94\x56\xa7\xc4\x5f\x8c\xeb\xaa\x47\x8e\x54\x80\x07\xf9\xd3\xaf\x83\x6f\x75\x4d\xe4\x12\x3f\x2f"}, +{{0xe1,0xd1,0x41,0x65,0x18,0x92,0x1d,0x07,0xc8,0xc3,0x9e,0x29,0x73,0xd8,0xea,0x12,0x49,0xca,0xa8,0xbf,0x65,0x9c,0xc3,0x6c,0x79,0x37,0xf8,0x4e,0xce,0x7a,0xd4,0xfc,},{0x48,0xbd,0xcc,0x3f,0x1a,0x5b,0x80,0x58,0xed,0x9a,0x32,0xef,0x1c,0xc4,0x8c,0xf7,0xa8,0xab,0x76,0xa6,0xe4,0x51,0x9e,0x5a,0x82,0x85,0x52,0x41,0xad,0x6f,0xff,0x8a,},{0x42,0x32,0xd2,0xa4,0x81,0x08,0x4d,0x11,0x96,0xdb,0x62,0xf2,0x2d,0xc7,0x4c,0xf2,0xea,0xf2,0xdb,0x0d,0xf0,0x5a,0xd7,0xcd,0xde,0x67,0xbf,0xc2,0x9b,0xff,0x56,0xcd,0xe0,0x19,0xac,0x9f,0x03,0xd8,0x1f,0x18,0x27,0xeb,0x1e,0x3b,0x0a,0xbe,0x02,0x04,0xca,0x7f,0x77,0xfa,0x87,0x4a,0xb5,0x26,0x83,0x54,0xff,0x08,0xbb,0x7f,0x48,0x00,},"\x3d\x26\x3d\xe1\xab\x91\xe8\xdd\x7b\x31\x7f\x7a\x27\xfb\x60\xa6\xe1\x83\x8c\x0c\x79\x3b\x03\xab\xbe\x70\x82\xb6\xbd\xa0\xc7\xc4\x60\x62\x26\x21\x92\xc8\x8b\x65\xc0\x26\xc1\x74\x58\x4d\x29\x64\x97\x10\x42\x9a\xe4\x4a\x46\x14\x0b\x4c\x82\xc8\xa0\xb7\x4d\x56\xa0\x04\xf8\xe2\xf5\xc1\x8f\x84\xf0\x46\x41\x53\x77\x2f\x83\x12\x63\x3f\xc6\xad\x28\xa7\xd9\xfb\x55\xf7\xd7\x8c\xd6\x48\x8c\xa5\x81\x17\xea\xf9\x23\xfa\x28\x87\x5e\x2b\x31\x89\x89\x31\x85\xaa\x3c\xcd\x04\x4d\x3f\x11\x0e\x2e\x7c\xab\xdf\x6f\x81\x4b\x9f\xdd\x67\x33\xbd\x5f\x30\x7a\x87\xbc\x73\xb6\x25\x0d\x58\x83\x93\x6d\xeb\x1d\xb0\xe0\xaf\x1b\xe7\xab\x32\x9b\x5c\x6b\xd9\x35\xbd\x8f\x8d\xc8\x88\xf0\xd1\xc4\x64\xed\xbc\x02\x3c\xbc\x08\x07\x53\xee\x8f\x79\x9f\x10\x72\xba\xd1\x14\x4d\xfa\xa6\x15\xa5\x9e\x2a\xed\xc6\x62\xe8\x3c\xb1\xf8\xe5\x20\x96\xa7\xee\x48\x3b\xf8\x73\xb2\x5a\x0c\x04\xc1\x85\x1a\x0e\x87\x37\x50\x63\xaa\x1a\x94\xfa\x83\x5c\x05\x26\x40\x36\x6b\x79\xf7\x35\xd3\x28\x61\x97\xab\x32\xeb\xdb\x51\x23\xf6\xb4\x7a\xd3\xf4\x42\xc4\x4c\x53\x0a\x68\xf8\x51\x27\x59\xe9\xcf\x38\x6f\xba\x07\xb8\x06\x4b\xc8\xfe\x83\xe2\x45\x49\x5e\xc4\x5f\x89\x38\xf8\x25\x9d\xc8\x01\x62\x05\xf7\x8d\x39\x54\x44\x2e\xc1\xb4\x45\xd8\x3d\x95\xad\x18\x05\xa5\xe0\xe8\xb3\xd5\x6b\x87\x0a\x20\xda\x18\xd7\x4f\x26\xf5\x50\xa9\xc7\x53\x4a\x41\x44\xdc\xbc\x1c\x3c\xdb\xbe\x47\x0c\xc1\x53\x90\x50\x43\x08\x8f\xac\xf1\xd3\x03\x55\x9d\xe4\x1e\x96\xc0\xab\x40\x9b\xb3\x6d\xcf\x38\xcc\x90\x38\xa6\xa4\x90\x8d\xea\x82\xa6\x53\x19\x5c\x16\xf2\x90\xa7\xc3\xac\x48\x76\x36\xcc\x5b\xcb\x18\xd1\x5a\x14\xac\x62\x4c\x70\xb6\xf6\x46\x2b\xf2\x49\xe0\x00\xce\xe9\x24\x01\x8b\xdf\x7d\xde\x39\x11\x4c\xb4\xf6\x52\xe1\x22\xe8\x74\x4d\xa2\x8b\x05\x89\xe1\x28\x4d\x70\xd9\xf1\x06\xde\x16\xd0\x73\x64\x80\x80\xe6\x43\x7f\xf3\x84\xe6\x81\x77\xd5\xcb\x71\x8e\x2c\xe3\xf1\x7b\xa1\xe9\x90\xae\x3c\xe9\x40\x66\x01\x30\xe9\x37\x50\xb8\x2e\x2f\xb4\x1a\xa3\x69\x77\x45\x68\xd7\xcf\x28\x67\x25\xe3\xc5\x8f\x63\xe7\x3f\x86\x97\xae\xec\xc7\x17\xc5\xcf\x1a\xf7\xad\x74\xf4\x46\x29\x2c\x90\x5d\x84\xe2\x2b\x23\xd4\xe0\xd2\x60\x4b\xff\x48\xfe\xfc\x40\xc6\x20\x4b\x5e\x34\xc0\x42\x29\x2e\x53\xbe\xc9\x36\x01\x59\xa5\xcd\x97\xb2\xdf\x57\x86\xb8\xf5\xa2\x92\xc0\xb3\x9d\x14\xa8\x70\xa4\x58\x8e\x67\xbd\x12\xb2\xc2\xf7\xa4\x40\x84\x62\x85\x1d\x2a\xa7\x87\x97\x1d\x93\x15\x19\x0f\x42\xcc\x58\x8a\xf0\xd2\xdc\xd9\x1f\x31\xbb\x71\x5e\x92\x50\xf1\x19\x28\x14\xf7\xb8\xa2\x1f\xef\x45\x17\xb0\xcf\x8b\xb8\xa1\xa1\xa5\xf5\x00\xee\x21\x9d\xfb\x46\x13\x2e\xfe\x8e\x90\xbc\x49\x09\x3a\x55\x59\xf9\x68\x1b\x4f\xb5\x9e\x5b\xa9\xef\x3f\x05\xd3\x4e\xed\x03\x4c\x14\xd7\x7e\xe9\x5e\xbd\x76\xff\xa5\xaf\x0b\xef\xcb\xa1\x8f\xdf\x93\x2a\xf4\x85\x45\x10\xb7\x5d\xb0\x0a\x72\x57\xb2\x34\x88\x7d\x49\x60\x7d\xfd\x16\x18\x0d\xb5\x16\xc7\xa2\x0c\xcf\xca\xed\xa6\xae\xdf\xb6\xa2\x37\x7f\xbf\x31\xe6\x7b\x51\x76\x55\xdb\x73\xca\x29\xe1\x18\x62\x4d\x60\x80"}, +{{0x2b,0xf7,0x4f,0x00,0x4d,0x7d,0x0a,0xf7,0x3a,0x83,0xea,0x20,0x8c,0xc2,0x06,0x72,0x3d,0x18,0x8f,0x4c,0xf6,0x07,0xbc,0xad,0x4b,0x69,0x80,0x26,0x8f,0xf2,0x1f,0xa7,},{0x8f,0xdc,0xd9,0x93,0x52,0x43,0x8b,0xeb,0x52,0xf0,0xd1,0x74,0x2b,0xae,0x71,0x84,0x45,0x12,0xdd,0x06,0x85,0xaa,0xf1,0xc9,0x09,0xe3,0x8f,0xc4,0xb5,0xaa,0xb6,0xcc,},{0x3e,0xb5,0xb3,0x39,0xe1,0x91,0xa3,0xb6,0x16,0x85,0x45,0xda,0x5f,0xb0,0xca,0x9b,0xe2,0x09,0x04,0x39,0x19,0xb9,0xc7,0x0a,0x07,0xb4,0xa7,0xa3,0xbf,0x64,0xb1,0x02,0xf6,0xff,0xd6,0xd2,0xb0,0x25,0x59,0xdc,0x68,0x1e,0xd3,0xb9,0xc8,0x22,0x97,0xb2,0x01,0xdc,0x25,0xc4,0x97,0x38,0x80,0xe1,0x55,0xe1,0x3a,0x29,0x42,0x6e,0xb4,0x0d,},"\x89\x8e\x43\x03\xea\x5b\xeb\xd2\x00\xa5\xf7\x56\x2b\xe5\xf5\x03\x26\x40\xa3\xf5\xcc\xfa\x76\x42\x92\x04\x5a\x1a\x36\x8d\x02\xaa\x59\x10\x77\xd8\xf3\x04\xf7\x4d\xbd\xfc\x28\x07\x34\x45\x4e\xd8\xc2\x72\x7a\xff\x39\x2c\x10\x8c\x52\x6e\x52\x7e\x67\x2c\x53\x97\xb2\xd7\x7c\x01\xf7\x74\x1e\xf8\xdc\xc2\x51\x0e\xe8\x41\xb5\x9d\xd1\x0f\x4e\x1d\x3a\xc5\x01\xaf\x7c\xbd\xb8\x5b\xa3\x11\x29\xc2\x62\xfd\xe1\xa0\xc8\xbc\x83\xd6\xff\x94\x4b\x6b\xae\x3f\xa7\xfb\x62\x58\x7c\x68\x1d\x8e\x34\x29\x65\xc5\x70\x5f\xd1\xa6\xab\x39\xe5\xa0\x77\x0e\xe7\x79\x8d\x9f\xb6\xc0\x01\x8a\x51\x4d\x53\xaf\x84\x8d\xb6\x04\x7c\xd0\x2d\xb3\x52\xd5\x56\x3b\x53\x66\x23\x73\xb9\x71\x93\x5a\x1a\xc2\xb7\xb6\x36\x1d\xac\x67\x48\x77\x18\x13\xf7\x74\x93\x16\x69\x49\x61\xb9\x40\xff\x38\x05\x81\x1a\x49\xfa\x27\xa9\xba\x45\x7a\xd2\x88\x48\xc6\x97\x05\x0e\x01\x88\xd0\x77\x3e\x17\xfb\x52\x19\x4e\x19\x0a\x78\x72\xa3\x98\xf3\x1c\x0f\x0a\xe0\x65\x37\xa2\x73\xff\xb5\x0c\x2c\x81\x64\x45\xab\x88\x28\x11\x92\x2c\x06\x21\x55\x6c\x46\xa3\xa0\xec\x40\xbf\xed\xb4\x11\xe9\x0b\x6d\xb1\xdd\xd4\xbb\xeb\xb5\x7d\x10\xdf\x56\x6a\x63\xd7\x26\xa3\x33\x08\x51\x4c\xe3\xb4\x99\xd5\xe5\x26\xc2\x2b\x95\x6d\x8b\x99\x91\x3d\xcb\x13\xe4\x37\xe9\x47\xb6\x66\xc4\x1c\x54\xd8\xb3\xae\x23\x56\x64\x7e\x80\x17\xab\x67\x83\x86\xc9\x27\x21\x9a\xe7\xbd\xdc\x0d\x82\x12\x65\xf9\xdc\x4f\xf3\xf8\xce\x5b\xe6\x0f\x8e\x9d\xef\xc5\xca\x33\x50\x68\xee\x29\xfe\x83\x04\x91\x7b\x78\x87\x84\xa2\x38\x8a\x32\x01\x92\xf9\x32\x5d\x0e\x6c\xff\xfe\xa2\x1e\x6e\xaa\x29\xe7\x70\x7f\x63\xa9\xea\x4f\xbb\x25\x58\xe3\xd0\x83\x5b\xab\x1f\x52\x36\x10\x37\xae\x59\xe5\x03\xee\x96\xb9\xd7\x08\xa4\x7a\x3a\xe4\xba\xd1\x13\xe2\xa4\x60\xa2\x69\xcc\xf2\x5a\x00\x03\xcb\x3e\x68\xa5\x51\x86\x4e\x59\x84\x09\x14\x79\x11\x26\xf9\x54\x78\x8b\x25\xb5\xaf\x5a\xaf\x58\x6e\xbb\x87\xfa\x5f\x37\x7b\x4d\x7d\x7f\x84\xc0\x00\xdd\x2c\xb4\x40\xe2\x14\xd3\x8d\x5e\xcf\x70\xf2\x0e\x98\x81\x82\x8e\xda\xa1\xdb\xec\x37\x09\x3d\xb9\x60\x68\x6c\xa1\x23\xf1\xec\xba\x63\x36\xb3\x7f\x46\xcf\x76\x5b\xe2\x81\x4b\x9e\x67\x05\xbc\x9d\x6a\x49\x31\x81\x18\xc7\x52\x9b\x37\xc8\x4e\xc8\x8d\x58\xa8\x45\x3d\xcb\x69\x2c\x9a\x36\x01\x6b\x94\x8e\xbe\x6f\xb2\xc1\xd0\xad\xf5\xf1\x98\xee\x30\x97\xa6\xff\x0b\x8e\xeb\xba\xd8\xb0\x76\x93\x30\xb1\x86\x89\x51\x6b\xc0\xfe\x66\x8b\x0d\x05\xe3\xa5\x84\xfc\xf8\x9c\x49\xdb\x50\x1d\x61\xc2\xde\xf7\xed\x37\x22\x07\x01\x93\xa5\xb6\x83\xc5\x08\x7e\xf2\x74\xce\x6a\x19\x3d\xd4\xa3\x03\x53\x6c\x67\x93\x4b\x46\x60\xa8\x41\xee\x1b\x44\x6a\x68\x92\xb1\x4d\x0b\x0a\xa3\xe9\x8f\xdf\xfd\x43\xc7\x97\xad\xd3\x65\x83\xf7\x4c\x94\xd0\xe2\xd6\x8e\x2d\xe8\x18\xd9\xaf\x20\x05\x98\xf0\xb2\xbe\xae\x16\x9c\x8d\xfb\xc4\xd3\x97\xe6\xd1\xce\xb6\xda\xa6\xc9\xf6\xbb\xf4\xf8\x31\x1b\xa2\x6f\xfb\x19\x4d\x44\x21\x6c\x51\x30\x52\x67\x07\x4e\x85\x6a\x1d\x6e\x92\x27\x80\xf4\x79\x8e\x2f\x22\x02\x23\xff\xf1\xdc\x37\x0c\x8e\x34\x51\x4a\xba\x42\xdf\x51"}, +{{0xf5,0xf7,0xd5,0xb7,0x3c,0x5a,0x65,0x30,0x1b,0x5b,0x4c,0x67,0x10,0xed,0x12,0xc1,0x6e,0x79,0x03,0x17,0x7d,0xb7,0x92,0xca,0x71,0x5e,0x23,0x38,0x9d,0x05,0xd8,0x3e,},{0x7c,0x47,0x62,0xe9,0x79,0xf0,0xc7,0xe2,0x07,0xbe,0x18,0x43,0xe2,0x66,0x6a,0xca,0x27,0xea,0x89,0xbf,0xf5,0xb6,0x1d,0x57,0x3c,0x98,0x5f,0xc7,0x02,0x5e,0x1e,0x28,},{0x58,0xfb,0x39,0x2f,0x82,0xd5,0xe5,0x2f,0xf0,0x72,0xcc,0x77,0xef,0xe0,0x48,0xf2,0x23,0x52,0x50,0xc7,0x11,0x25,0xee,0x82,0x1c,0x5f,0x3b,0x39,0x3b,0xcf,0x2f,0xa4,0x6b,0xe4,0xc5,0xd8,0xca,0xf1,0x3c,0xb5,0x19,0xef,0xe0,0xc2,0xfa,0xd9,0xee,0x23,0x1a,0xe9,0xb6,0xfd,0x1f,0xd5,0x09,0xc9,0x8c,0x69,0xc2,0xd3,0x6c,0x75,0x3e,0x0e,},"\x7c\x93\x18\xd5\x6e\x63\xf1\x65\x35\x43\x6f\xa4\x5a\xfe\x27\x8e\x74\xe6\x18\x81\xbb\x46\x89\x97\xd0\x41\x8b\xc7\x20\xb6\x30\xda\xdb\x81\x28\xb4\xb6\x5c\xa6\xe9\x21\xe5\x01\x81\x3d\xf9\xfe\x03\xb4\xef\x0a\xae\x80\x35\xdd\x08\xc5\xf8\x20\xce\x5d\xf1\x2e\xe1\x18\xd9\xc3\x6d\x3b\x15\x1a\x52\xc3\xf9\x6a\xe1\xca\x4c\x82\xfd\x19\xda\x66\x9d\xdb\xa9\x4f\xeb\xf8\xea\xc8\xc4\x2b\x44\x7b\xab\xc8\xa6\x0b\x36\xe8\x03\x62\x4f\x7d\x20\x47\xbd\x8d\x8a\x15\x36\x87\xf1\x0d\xc1\xca\x82\x10\x0b\x7c\x87\xd3\x23\x70\xec\x8f\x26\x71\xed\x7d\x06\x7c\xc8\x05\x87\xca\xb8\xdb\x3a\x71\xce\x5e\x40\x63\x27\xf7\x63\xec\x1b\x3c\x16\x67\x70\xa7\x55\x36\x63\x0c\x81\x5f\xd8\x26\x75\x82\xd1\xb5\x05\x1f\x0f\x82\x1c\x02\x15\x0b\x2e\xef\x34\x9b\x50\x59\x03\x14\xaa\x25\x70\x79\x3f\xa6\x4a\x76\xed\x2e\xd8\x3d\x2b\xa1\xf9\xb9\xf1\x16\x31\x54\x61\x2b\x49\xa6\x4a\xd8\xd5\x57\x3c\x25\xb1\xcd\x37\xc4\x1a\x44\xe3\xdf\x78\xf1\x05\x3d\x90\xb0\x68\xf0\xd3\x7a\xe0\x0c\x4a\x32\xb1\xa3\xff\x87\x4c\x41\xda\x4a\x70\x43\x39\x2f\x18\xef\xe5\x51\x8d\x76\xe8\x8b\x41\xce\xd6\x9e\x6f\x4c\x01\x4f\x06\xeb\xc5\x14\x6e\x61\xe8\x2f\xae\x1c\x49\xc3\x7c\x39\x4f\xea\x34\x19\x9a\xb8\x6c\x11\xa4\x46\x7a\x37\x4e\x40\x25\x5a\x05\xd4\x26\x97\x14\x30\xd5\x6c\xdb\xa2\x5a\x21\xad\x77\x9c\xc7\xf6\x2d\x22\xcd\x87\xb6\x0f\x08\x91\xbd\x85\x6a\x51\x7e\x14\xb7\x2a\x9a\xc7\x67\x2e\x4e\x8f\xb3\x74\xa9\x75\x8a\xb0\xc4\xe5\x96\x4a\xae\x03\x22\x89\x73\xf1\x73\xa5\xd4\x2a\xef\x9d\xb3\x37\x36\xc3\xe1\x8d\x8e\xec\x20\x4a\x1a\x17\xb9\xd0\x45\x93\xde\xa4\xd8\x04\xcb\xc8\x1b\x9a\xc5\x45\x80\x50\x49\x55\x39\x99\x9a\x99\x85\x48\x7e\x7c\xa1\x1c\x37\x58\x2e\xf8\x5c\x84\x1e\x8f\x06\x5e\xa9\x8f\xdd\x6b\x1c\x60\xde\xa1\xec\x28\x83\x52\x15\x68\x85\x6a\x6e\xbb\x27\x49\xf2\x07\x2e\xb4\x34\x48\xbe\x07\x05\xed\x47\x7c\xf4\xb2\x00\x48\x65\x21\x7d\xe5\xfa\xdb\xe2\xa0\xf9\xd6\xb8\x4b\x3f\xe7\xf7\xbf\x6c\x77\x53\x74\x96\x24\x6e\xc7\x96\xb8\xef\x2c\x04\xf6\x8a\xb5\xb1\x4f\xce\x0c\x6d\x28\x7b\x83\x62\x27\xd9\xf0\x8f\xa0\xee\x19\x72\x2f\x67\x98\xa5\xd8\x28\x0d\x10\x7c\xfc\x1b\xd5\x92\xd9\xdd\xc7\x24\xea\x86\xfc\x39\xdc\x94\xa3\x94\x01\x9e\x3a\x3d\xe9\xe0\xd1\xc7\x35\xe8\x62\xde\x2b\xb9\x52\x5b\x5f\xb4\xbd\x12\x12\x12\xbf\xaf\xf9\xff\x58\x6a\xc3\xc7\x5c\x5a\xce\x74\x6d\x9c\xa3\x07\xf7\x95\xff\x26\x97\xf2\xb4\x1a\x63\x46\xed\x23\x39\x7e\xb3\x88\x98\x69\x1e\x6f\x66\x84\x16\x37\xd0\xab\x0d\x96\x83\x09\xe0\x19\x40\x02\x30\x90\x15\x41\x6e\x74\x47\x2f\xe3\x24\x25\xd4\x5f\x07\xc7\x71\x19\x18\xb1\xe5\x79\x0f\x57\x2c\xe4\x44\x10\x42\xd4\x26\x03\x37\x92\x29\x7b\x5f\x81\xe0\x80\x9b\xd9\x69\x1f\x0a\x50\x5e\x32\x59\xfc\x03\xc9\xff\x10\x7e\xb9\xb4\x87\x95\xf4\x9f\xb0\x9c\x1b\xab\x56\x59\xd3\x9f\xfe\xcb\xdc\xc4\x03\xe3\x80\x3d\xc0\x12\x43\x8c\x2f\xb3\x6f\x68\x30\x15\xc5\xdf\x04\x82\xcb\x7d\x7f\xc5\x75\x73\x64\xa0\xa3\xc1\x0d\x0e\x12\x59\xc0\x1f\xcc\x4d\xd5\x49\x4b\x52\x90\xa6\x94\xae\xa3\xf6\xfa\xe5\x47\xac\x57\x6f"}, +{{0x43,0xd4,0xbe,0x6d,0xe9,0xcb,0x00,0x89,0x8e,0x99,0xdd,0xcc,0x2e,0x15,0x30,0x11,0x0f,0xa2,0xcb,0xc4,0x37,0x6c,0x48,0x5e,0x9c,0xa5,0x7f,0xd6,0x55,0x86,0xd8,0xa3,},{0x36,0x32,0xad,0x38,0x9b,0xe2,0xfa,0xb3,0xfb,0xa0,0xd8,0x04,0xbf,0x63,0x45,0xcd,0x32,0x2e,0xdd,0xd6,0xa7,0x5d,0x8c,0x37,0xfd,0x4b,0x5b,0xa1,0xc9,0xc2,0x5e,0x8f,},{0x86,0xae,0x93,0x25,0xf8,0x0b,0x98,0x86,0xc8,0x38,0x1f,0x96,0xa1,0x8c,0x21,0x20,0xe6,0xdb,0x01,0x6a,0x0d,0x6c,0xa2,0x82,0xed,0x93,0xba,0x9b,0x61,0xca,0xec,0x02,0xde,0x88,0xef,0xca,0x8b,0x8e,0x91,0x6a,0x4b,0x16,0xa5,0x85,0x25,0xa2,0xf6,0x8d,0x21,0xe5,0xfb,0xe6,0x7d,0xb4,0xc4,0xd6,0x20,0x95,0x95,0xc4,0xab,0xc3,0x2b,0x09,},"\xd9\xd5\x5d\xab\x0f\xa6\xda\x76\xb6\x8e\x84\x1c\x24\xd9\x71\xba\xc1\xf7\x9a\xf5\x13\xd8\x34\xe4\x26\xa5\xd0\x81\x14\xce\x8b\x54\xce\x8b\x7a\xfe\x01\x6b\x0f\xad\x03\xee\x74\x50\xc6\xc3\x09\x71\x73\x68\x1a\x4b\x2e\xb9\xf9\xc1\x79\xa8\x8e\x7c\xc3\x68\x13\xf2\xf5\xd1\x5f\x79\x98\xaf\xa9\xfd\x4e\x54\x6c\x73\xbb\x42\xe7\xf9\x52\x2b\xe6\xaf\xab\xca\x8c\x7b\x64\xfe\xd0\xe2\x92\xe4\x37\x5f\x3e\x1e\x5f\xd9\xfc\xb5\x39\xf4\xe5\xe5\x43\xfb\x6a\x11\xa0\xdf\x32\x1e\x70\x08\x4a\xaa\xbb\x70\xa9\x95\x0c\xee\xe3\xd8\x79\xc3\x86\xef\xca\x1e\x59\xc3\xcb\x7c\x45\xb5\x60\x09\x5e\x7a\xf0\x0f\xf5\x2f\x8a\x1a\xaa\x9c\xcf\x09\x2f\x0b\xb8\x06\xd9\x76\x10\x74\x2a\xc5\x82\xa3\xab\xbe\xdd\xf3\x9f\x49\xd2\x29\xd3\x2a\x11\x86\xd0\x21\x51\x8d\x74\x72\x8d\x13\xd9\x62\x63\x5d\x63\xba\xa6\x74\x3b\x12\x6b\xf4\x58\xfa\x2a\xc7\x56\xfb\xf8\x80\x96\xc8\xd3\x34\x0c\x62\x23\x90\x53\x4a\x74\x3f\x18\x64\xd5\x4d\xea\xb5\xe5\x53\x63\x72\xce\x5a\xc9\x37\x62\x28\x74\x14\xea\xe1\x58\xa7\x6b\xf8\x1d\xf5\x41\x7c\xf4\xc0\x47\xbe\x3a\xc1\x47\x5c\x51\x7e\xbd\x3a\xc1\xd1\xd1\xbd\xda\x11\xb3\xf9\x9c\x18\x17\x3e\x03\x0a\xcd\x51\xd2\xb5\xcf\x79\x51\x65\x09\x41\x54\x05\x07\x75\x11\xbd\xd9\xcb\xe1\x7d\x04\xf4\x78\x05\xe9\x8d\x0d\x14\x5e\x60\xa5\xd0\xe0\xf4\x53\xcd\x9b\x5c\x1a\x24\xf1\x2b\x75\xe8\xcc\x34\xd5\xe0\x06\x91\xff\xac\xbf\xf7\x88\xfe\xa8\x34\xd9\xd7\x79\xc1\xe6\x10\x29\x4d\xce\x19\x17\x0d\x28\x16\x0c\xff\x90\x9b\xea\x5a\x0a\xa7\x49\x40\x17\x40\xea\x3a\xf5\x1e\x48\xb2\x7c\x2b\x09\xf0\x25\x44\x42\x76\xc1\x88\xc0\x67\x1a\x6d\xa9\x4b\x43\xd1\xe5\x25\xe6\xa4\xa8\xa1\xa7\x3d\xfe\xdf\x12\x40\x18\x46\xba\x43\x06\x8a\x04\x09\x2b\x12\x91\x22\x70\xd2\xb6\x0d\xf6\x09\x97\x79\x75\x6b\x8b\xbb\x49\xec\xe8\x2d\x55\xf0\xf8\xdb\x1b\x80\xfb\x4b\x59\xbb\xa8\x60\xbd\x18\xc7\x5d\x6c\x83\x4d\x69\x44\x2a\xe0\x31\x4c\xf2\x39\x9f\x53\x92\xa3\xc6\x72\x8c\x63\xe5\xc5\x16\xc4\x22\x2a\xac\x60\xf9\x16\xdd\x63\xd1\xd0\x51\x7e\x8e\xb1\x0b\xd0\xe1\x5e\xb9\x06\x14\xde\xb2\x96\x40\x3a\xd1\x5b\x8c\x12\xb9\xe9\x71\xef\x2f\x01\xe5\x9f\xc3\x5d\x90\xc5\x5a\x8e\x20\xe9\x43\x7d\xd4\x34\xb2\x6d\x5c\x2c\x6e\xc2\xd5\x3a\xce\xc1\x7e\x81\xe4\x78\x31\xdc\x2d\xe8\x21\x83\xd7\x13\xb5\x9a\x4d\x1f\x46\x96\x9d\xdc\xdd\xaf\x27\xf4\x4e\x5a\x31\x1a\xaa\xc3\x9c\x3d\x5a\x97\xbc\x90\xca\xd7\x12\xf4\x6f\x85\xe6\xc8\xfb\xf5\xd5\x8d\x8b\xc3\xec\x27\xd3\x10\xa9\xea\xf2\xc3\x69\xcb\x00\x64\x97\x70\x39\x0a\x3f\x98\x8f\x36\x2e\xfc\x15\x5f\x56\xa1\x46\xa6\x26\x50\x54\x7e\x91\x53\x25\x07\x01\xee\xad\x1b\xd0\x1c\x89\x46\x22\x72\xdf\xaf\x0a\x43\x1a\xf4\xbd\x7c\x3d\xb4\x51\xad\xa6\x03\x23\x3f\xda\xd3\xaa\x89\x99\xaa\x21\xe2\xd3\xa4\x3b\x0b\x56\xfc\x6a\x91\x24\xd3\x35\x98\xb3\x73\x7f\x4e\x5c\xb2\x58\xbe\xda\x75\x6a\xd2\xe1\x7d\x06\x91\xd1\x5d\x41\x6b\xb7\xcb\x07\xec\x8d\x8c\x7a\xf5\xde\x80\xe5\xb9\x39\x4e\x32\x0c\x4c\x6e\x43\xef\xaa\xe6\x84\xad\x00\xf6\xdd\x20\xa8\x75\x0e\x95\x9c\x2f\x04\x20\x6f\xc0\x23\xaa\x19\x0c"}, +{{0x7d,0x01,0x0d,0x76,0x0f,0x24,0xe5,0xa2,0xde,0x34,0x08,0x9c,0x9f,0xdb,0x19,0xc3,0x3b,0x15,0x5b,0x0a,0x37,0xca,0x45,0x5a,0x5e,0x5b,0x1d,0xae,0x7a,0x07,0x31,0x76,},{0x4c,0x87,0x7b,0x3c,0x49,0x71,0xfb,0xb5,0x51,0x16,0x6e,0x21,0x4d,0x1c,0x76,0x24,0xc5,0x22,0x77,0x90,0x3c,0x59,0xa5,0x62,0xa8,0x0b,0x91,0xa8,0x54,0x83,0xfb,0x47,},{0x55,0x70,0x61,0x38,0x79,0xae,0x22,0x77,0x8b,0xd5,0x4f,0x14,0xfb,0x6e,0x8c,0x02,0x56,0xa7,0x1f,0x3d,0x79,0xc3,0xe5,0xcd,0x8e,0x41,0xae,0xa8,0xcf,0x77,0x3e,0x24,0xd2,0x9f,0x1f,0x1b,0x24,0xf8,0xc8,0x0d,0x29,0x49,0xe8,0x20,0x14,0x65,0xdb,0xde,0x89,0x40,0xb1,0xfa,0xb6,0x48,0x3b,0x08,0x5d,0x41,0x8e,0x25,0x10,0x14,0x20,0x0c,},"\x86\xe2\x11\x55\x72\xbf\x4c\x01\x3e\x6b\x4b\x04\xd0\xb0\x3e\x60\x6e\xe7\x0d\x92\x9c\xb8\xec\x36\xf4\xe2\xf3\x55\xdb\x3b\x5e\x15\x73\xd6\x58\xd1\x7b\xb1\xa3\x10\xc1\x69\x89\xa1\x6b\x95\x58\x92\x2e\xe4\x93\xf3\x59\x04\x21\x03\xc4\xdc\x1b\x40\xdf\xf7\x70\x99\x01\xfd\x58\x30\x13\x3f\x42\xc4\x65\x1e\xca\x00\x8b\x49\x9e\xe4\xf8\x4c\xd4\xec\x1e\xda\xa7\x82\x56\xed\xb6\x2f\x24\x02\x1a\x00\x76\x25\x69\x19\xe4\xe2\xce\x0a\x5a\x20\xf9\x21\xc2\x78\xcc\x29\x91\x59\x64\x4b\x5e\x3a\x3b\xbd\x08\x9d\xcb\xbe\xba\xd3\x76\x6a\xea\x77\xe9\xf0\x8e\xe5\xf7\xd4\xc1\x9d\x81\x70\xbc\x3d\xe1\xba\x77\x9a\x76\x99\x14\xf9\x65\xdb\xde\x2b\x61\xba\xd2\x14\xc5\x08\x18\x60\x41\xf7\x6c\x25\xbe\x95\x76\x56\xf5\xcf\xb7\x33\x4e\xb8\x38\xa3\xcf\xbc\x55\xcf\xba\xb6\x7a\xdf\x15\x52\x61\x99\x41\xb8\x35\xcd\x3e\x34\x10\x3b\x18\xb4\x91\x31\xe8\x20\x96\xf0\x5f\x57\x0b\x89\x98\x04\xba\xb8\xb6\xcb\xad\xdb\xbc\x02\xf9\xf3\xb5\x59\x73\x6d\x99\xca\x7b\x02\xd3\x26\x8f\xa2\x73\x99\x6f\xcf\x05\x71\x97\x7d\x1c\xc3\x00\x8c\x4e\xf8\x48\x97\x0e\xe3\x50\xb1\x58\xc4\x7e\xc2\x77\xad\xd4\x74\x2f\xa2\xbc\xbe\xa9\xbd\x55\x49\xc7\xbc\xa0\x38\x02\x0e\xce\x68\xf1\x88\xc1\xea\x3a\x62\xdd\x9a\x07\x3d\x4c\x13\x8c\xa8\xa9\xac\x04\x08\xdc\xfd\x46\xe3\x6b\xdf\xf7\x39\x88\xa5\x8b\x96\x17\xca\xa0\x8b\xd4\x1b\xf3\xe8\x12\xe7\x82\x4f\x0f\x7e\x81\x46\xa4\x44\xf3\x6b\xf5\x3a\x1c\xd8\x92\x03\x9c\xcd\x33\x5f\x5a\x2e\x79\x74\x5e\xac\x96\x14\x8c\x2a\x29\x99\x47\xf1\xb2\xe3\x28\xa3\x78\x9b\xf1\x3c\x6d\x73\x50\x6f\x3b\xdc\x68\xea\x48\xab\xf0\x02\x27\x0f\xe4\xee\x9e\xf9\xed\x6b\x10\xc2\xfb\xb4\xff\x12\x75\xb9\xd7\xdd\x35\xd8\xa5\x2e\x37\x17\x58\x57\x4c\xb4\x66\xc5\x7b\x5a\xbc\x24\x29\x76\xbe\xfc\x8d\x98\xa0\x13\x1b\x9b\xb8\x46\xb2\x19\xe4\x66\x91\x86\xa8\x3c\x05\x6c\xd8\x08\x06\x61\xde\x16\xb5\x1c\xe5\x76\x7b\x22\xe9\xa9\x32\x42\xbf\x8d\x32\x05\xc6\x6a\x67\x3c\xe7\x83\xd1\xc0\xd3\x7b\x63\x00\xfb\xf0\xd6\x12\x79\x40\xf8\x8f\x18\x19\xc4\x50\xdc\xc9\x05\x43\xed\x79\x4f\x1f\xd4\x4e\x65\x39\xfe\xba\xf1\x9a\x4c\xc9\x88\x70\x01\x4d\x7c\xca\xd7\x4d\x18\x76\xa1\x23\xec\xd1\x45\x51\x6c\x74\x3b\x4b\xba\x62\xd8\x21\xca\x9a\x79\x51\xe0\xdf\xb2\x3f\x38\xd9\xe3\xa3\x65\xfd\x83\x22\xf2\xee\x47\x99\xe9\xff\x11\xe1\xc5\xc3\x0b\x55\xa3\x55\xc8\xa5\xde\xea\x81\xa5\x45\xe3\x47\x05\xab\x56\xd1\x7b\x1f\xa0\x6e\xd7\x64\x15\x55\x67\x02\xf3\x64\x80\x82\x46\xf8\x63\xc3\x19\xf7\x5c\xdf\x6b\xd7\x48\x43\x8d\x1a\x2e\xaf\x42\x06\xc5\x60\xbf\xaf\xc2\x35\x67\x9a\xd6\x04\x9c\x1a\x01\x52\x6f\xcb\x9a\x3c\xe1\xb1\xd3\x9b\xe4\xdf\x18\xb1\x5f\xa0\xea\x55\x27\x2b\x17\xeb\xde\xdf\x6c\x30\x49\x8a\x8a\x14\xf2\x04\x2b\xe1\xc2\xcd\xb0\x9e\x9e\xf3\x84\x6d\x66\x59\xa9\xf6\xd6\x73\xdf\x9a\xfb\x7e\xde\xd0\x4b\x79\x3d\x97\x31\xf0\xac\xcc\x41\x46\x8d\xc1\xf3\x23\x6c\x99\xac\xad\xee\x62\x39\xc3\x61\xb8\xbd\x7e\x2d\x0c\xfe\x8b\xb7\xc0\x66\x87\xe0\x8e\x76\xb7\x1a\xd5\x7a\x03\x61\x79\xf2\x91\xd0\x96\xae\x2f\xa0\x81\x8e\xf4\xbf\x48\x66"}, +{{0xaa,0xaa,0xbb,0x7c,0xe4,0xff,0xfe,0x4d,0xc3,0x57,0x47,0xba,0xea,0x2b,0xc5,0xf0,0x50,0xbe,0xf0,0x6e,0xe0,0xc1,0xfd,0x63,0x2a,0x06,0x7f,0xec,0xe1,0xef,0x4f,0xb5,},{0x82,0x0a,0x24,0x42,0xd5,0xf4,0x5f,0x3c,0x79,0x14,0x78,0xe0,0x98,0xfb,0x3b,0x06,0x8d,0xa5,0x2e,0xc4,0xe8,0xda,0xde,0xc8,0x50,0x65,0xc3,0x56,0x59,0xf4,0x37,0xe0,},{0x05,0x0a,0xe8,0xae,0xce,0xec,0x96,0x27,0xb8,0x01,0x37,0x35,0x7a,0x22,0x96,0x2a,0xc8,0xb4,0x50,0x48,0x66,0x17,0x08,0xd3,0x94,0xd0,0xa5,0x1a,0xad,0xc3,0x81,0xfe,0x85,0x35,0x02,0x3d,0x6e,0x1b,0xda,0x0e,0x72,0xb3,0x49,0xb5,0x0b,0x26,0xda,0x7c,0x3a,0x30,0x85,0xe8,0x1e,0x9d,0xd6,0xcf,0x12,0x78,0x68,0xfc,0x5b,0xae,0xab,0x01,},"\xf9\xd2\x85\x97\xa3\xe2\xb6\x4b\xa3\x27\xac\x5c\xd2\x9f\x08\x1e\x74\xbf\x46\x1b\x2e\xb2\xd3\xcf\xd9\xd5\xe9\x21\x58\xd2\x1d\x1d\x2a\x47\xab\x50\x98\x1c\xb1\x9f\xe3\xf8\xc6\xfe\x48\x82\x49\xb1\xc4\x9f\xb8\x97\xa0\xfe\x21\xab\x54\x04\x41\x4f\xd9\x14\x87\x5c\x22\x0f\x1c\xbc\x12\xf5\xc3\x8c\xfb\xa7\x9f\x7a\xc3\x03\xa5\x23\x1a\x37\x2b\x02\xfa\xd6\xc8\x46\x2f\x8c\xc4\x9f\x0f\x64\x96\x5b\x65\x1d\xcc\xef\x0b\xb9\x60\x82\x15\x09\x08\x49\x17\x7b\xe4\x7b\x2d\x30\x72\x94\x4d\x36\xe8\x56\xda\x18\x5c\x7b\x3a\x68\x9f\x7e\xde\xf9\x88\x33\x8e\x09\x63\xed\x31\xa6\xb0\xa8\x0d\x5c\xb0\xb1\xcc\xcf\x6f\x39\x48\x37\xaa\x6f\x8b\x2f\x3d\xa5\xef\xbd\xf4\xd3\x60\xd4\xbf\x4d\xd7\x08\xce\x64\x45\x58\x7d\x94\x2b\x79\x76\x1c\xe9\x51\xb1\xbb\x4d\x90\x50\x70\x36\x18\xa6\xd9\x30\xa8\x0c\x69\x57\x6f\xc4\xaf\x30\x6a\x2a\x56\xdb\xd8\x84\xa0\x5a\x1e\x4e\x9f\x31\x36\xcd\x0b\x55\xae\x47\x4b\xb5\xd3\xd0\xfb\xc9\xb0\x33\x9c\xec\x34\x4f\xdd\x08\x5c\x19\x28\x10\x14\x81\xc6\x87\x94\xf5\xc8\x90\x13\x71\x08\xce\xa7\x91\xd2\x1f\x81\x68\x3d\x3e\x1a\x9e\xec\x66\xac\xe5\xc0\x14\xd8\x9e\x69\x80\x8e\x5f\xa8\x3d\x38\x12\xee\x68\x0f\x5a\x99\x71\x68\x1b\x8a\xdc\xd4\xa1\x6e\x9a\x4c\x16\x5b\x5e\xf9\x93\x2c\x5e\xd8\x25\x23\x7f\xd5\x03\x7b\xcb\xef\xe4\xcb\x11\x56\x4f\xa7\x07\xc8\xa9\x32\x90\x75\x14\x14\x89\x1b\x1e\xdd\x33\x13\xc6\x5f\x8b\x91\xc2\xe9\x25\xa3\xc1\x2a\x9d\x3a\xa4\x5f\xd5\xa6\x67\xb7\x83\x93\xc3\xe3\x9d\xf8\x8a\x8f\x0d\x11\x48\xb5\x31\x1e\x3d\x87\xc4\xa9\x2e\x0a\x3f\xb9\x15\xbc\x90\xd5\x55\x8d\x05\xb4\x75\xa8\x83\x47\x78\xaa\x94\x3e\xa3\x9b\x8e\xaa\x95\xad\x18\x32\xe5\x91\x6e\xa3\x10\x2d\x7d\xe0\xb8\x36\xcd\xe8\xf3\x75\x9d\xbb\x3b\x9d\x56\xea\x81\x7b\x3e\x49\xc9\x83\x21\x02\x77\xc2\xc7\xc5\xb0\xdb\x18\x74\x22\x53\x2f\xca\x98\xa2\x8b\x3b\x65\x9c\x6b\x81\x5a\xc1\x26\xfa\xdb\xe2\xf4\x00\xc7\x3e\x9d\x2d\xed\xcb\xbd\x2d\x3a\x36\x5f\xfa\xd7\xe6\x66\xc8\x96\xe3\x1e\x61\xb3\x84\xed\x3a\x9f\xcf\x12\x90\x53\x8d\xf1\x1b\x94\x74\xc6\x28\x1c\xc5\x92\xc7\x1c\x88\x08\x86\x8b\x42\x92\xc1\x7e\xce\x6b\x3e\xdf\x5e\x35\x42\xa7\x0b\x91\x15\x93\xe9\x3f\x35\xec\xd9\x72\x9b\xd8\x88\x0a\x24\xea\xf4\x1f\xbc\x65\x74\xdf\xe1\x67\xec\x2d\x0e\x7a\xb3\xdf\x5e\xc3\x4b\x8b\x55\xd5\x48\xab\x93\x73\x8a\x2e\xea\xf2\x1c\x88\x4c\x5c\x85\x51\xdb\x2e\xdf\x2b\x04\x9f\x1a\x2a\x84\xfa\x72\xac\x89\x78\xa4\xc2\x78\x09\xf2\x09\xc1\xb2\x19\x5a\xff\x50\x4f\x69\x98\x56\xcc\x4f\x22\xd4\x4e\xbd\xd0\xfe\x50\x37\x44\x68\xd0\xb1\x79\x2e\x57\x4b\x51\x10\xa1\xf4\xcd\x0e\x22\x1e\x82\x4a\x78\xdd\xc4\x84\x5f\xeb\x46\xd6\x6d\x63\x3d\x23\xcd\x23\xf4\xb6\xfb\xe4\xc8\xce\x16\xcd\x1a\xf6\x15\x36\xda\x5f\xa6\x7b\x10\xac\x75\x55\xa6\x8c\x0e\x0b\xdb\xf2\xf8\xd7\x23\x09\xd9\x95\x51\x6b\x81\x18\xbf\x43\x83\x5d\x0a\x01\xc0\x8f\xfe\xba\x3e\xa3\xed\x05\xcd\x2d\x54\xf0\xea\xbc\xda\x05\xd0\x03\x7d\x52\xca\xed\x3b\x19\x37\x4f\xaf\x73\x99\x90\x94\xf7\x90\x55\x92\x4b\xea\x9a\xec\x44\x70\x13\x5f\x5e\x8b\xf1\x83\xc9\xd1\xc9"}, +{{0xe9,0x5c,0xc2,0xa4,0xd1,0x19,0x3b,0x75,0x39,0xfc,0xbb,0xea,0xae,0xed,0x98,0x5b,0x6f,0xb9,0x02,0xdd,0x0e,0xfb,0xd6,0x38,0x74,0x57,0x55,0x0d,0x0d,0x6a,0x2f,0xea,},{0x72,0xa1,0xff,0x1e,0x9b,0xb1,0x1c,0x8d,0x88,0x96,0x8a,0x7b,0x16,0x96,0x37,0xad,0xee,0x43,0x8e,0x22,0x63,0xf0,0x06,0xdc,0xa4,0xfe,0x02,0xfe,0x06,0x6c,0xba,0xd3,},{0x1b,0x8d,0x7c,0xc2,0xad,0xf3,0x6c,0xae,0x16,0x31,0x25,0x0c,0x82,0x43,0x1b,0xd8,0x84,0x37,0x16,0x3a,0x63,0x49,0xad,0x96,0xe7,0xa8,0x64,0x44,0x7e,0x9f,0xee,0x75,0x3a,0xc3,0x65,0x5c,0x98,0x35,0xb4,0xd1,0xec,0xbb,0x30,0x6c,0x63,0x8b,0xa5,0x40,0x2a,0xd0,0x2b,0xa6,0xd2,0x25,0xd9,0x68,0x82,0x88,0x9f,0xe8,0xd2,0x04,0xa6,0x04,},"\x84\x26\x74\x39\x20\x1b\x05\x91\xdb\x60\xc0\xf1\x7a\x9c\x15\xe4\x54\x09\x29\x56\x52\xd5\xf5\x5b\x87\xfb\x35\x19\x67\xc8\x46\xa5\x67\xf5\xce\xba\xae\xd1\x76\x2b\xff\x54\x85\xf0\x48\x53\xca\x92\x69\xf4\x64\x09\x4e\x51\x2d\xf1\xf0\x2e\x13\xe5\x17\xb1\xda\xa5\x8d\x34\xca\xa2\xd5\xff\x9f\x9e\x79\xbc\xaf\xb4\xce\x96\xe8\xa0\x89\x25\x8a\xd6\x13\x43\xb4\x46\x62\x8e\xbc\x4f\x5b\x2a\x84\xd0\x3b\x72\xef\x3f\x73\x85\x89\xfa\x13\xc4\x25\x19\xa8\x28\x29\x9a\x3f\xae\xc0\x35\x03\x7b\xc1\x0b\x44\xe3\xbd\xfe\xd9\xe0\x87\x07\x17\xcb\xaf\x31\xbe\xf8\xb2\x2c\x4e\xa1\x6e\x81\x57\xfc\xbc\x63\xee\xfa\x39\xed\x82\x2e\xfd\x42\x15\xc2\x47\xdd\xa4\x87\x86\x27\x7e\xc0\x30\xa8\x6c\x0e\xf4\x85\x1d\x67\x3c\xfe\x75\x2d\x06\x77\x88\x3c\x2c\x45\x20\x38\x97\x0c\x09\xbd\x48\x17\x14\xbc\x3f\xbe\xcf\xa4\xff\x2a\x3c\x24\x56\x95\xd7\xec\xc2\xf4\xde\xc7\xf5\xed\xe0\x4f\xf6\xdb\x43\xe2\xbb\x91\xc0\x66\xb6\x49\xef\x73\xfd\x3b\xe8\x60\xcb\x83\xfa\x80\xb0\x74\x14\x9f\x43\x1e\xeb\xb9\x17\xec\x84\x78\xda\x87\x0c\x11\xe3\x17\x70\x38\x59\xf9\xf2\xf4\x00\x8a\x6c\x7c\x75\x4b\x06\xe1\xf7\xd2\x47\x96\x89\xda\x84\xe8\x89\x22\xf3\x82\x74\x98\x5e\x11\xce\x13\xcd\xbd\xb0\xf2\xec\xe6\x8f\xb6\x02\xad\xe0\x3d\xd5\x49\xa3\x62\x49\x1f\x4a\x20\x3f\xf8\x07\x44\xf6\x63\xc5\x23\xa0\x26\xb4\x31\xaa\xd4\x5c\x58\x29\xe0\x29\xad\x62\x56\xd1\x27\x6f\xd7\xb7\xa1\x2d\xdb\xf1\x72\x7d\x9e\x23\x3f\xb5\x34\x45\x73\x70\xa4\x26\xe5\x6f\xb3\x9c\xf4\x04\xa3\xec\xbf\x0c\x4b\x50\xbb\x52\x2d\xce\x98\x1e\x08\x30\xfd\x84\x06\xe6\xd9\x72\x5c\xeb\x1d\xdd\x3a\x19\x47\x93\x7d\x90\xe0\x4d\x76\x8a\xe1\xd1\x26\xe2\xae\xac\x21\xb8\xc9\xef\xc5\x4c\x40\x96\x1b\x7f\x4e\x9e\x88\x02\x5f\x7e\x0b\x9d\xe9\x01\xeb\xf0\x04\x9e\x74\x1b\x79\x79\x97\xd8\xdb\x78\xe9\x28\x3b\xbb\x5f\x90\xf3\x5a\x2c\x4d\xee\x27\x31\x42\xec\x25\x8c\x02\xad\x0e\xcc\x61\xcc\x5c\x9f\x12\x13\x2d\xb2\x8a\xf4\x1c\x1f\xb7\x8e\x52\x4b\xe5\x32\x7b\x5f\xfc\x35\x96\x27\x79\xfb\x11\xff\x0c\x5d\x3e\xe0\xa3\x1f\xf4\x7e\x73\xb1\x72\x9d\xfa\x46\xe8\x98\x6b\x1b\x89\xab\xc8\x8a\xd0\x6a\xbd\x5b\x6f\x76\x6d\x23\xab\xf6\x42\x25\x78\x94\xeb\xdf\xa7\x9e\x63\x09\xf1\x27\x23\x74\xee\x94\x33\x67\x7b\xa1\x3e\x45\x1b\xaa\x95\x33\x0e\x66\x0c\x80\x52\xae\x87\x2e\x0e\x32\xe2\xb2\xd1\x28\x6d\x01\xa0\xab\x58\x10\x42\x4e\xd8\xb9\x40\x54\x65\xbd\xeb\xa0\x3b\x69\x83\x84\x67\x6f\xe5\xea\x46\x4a\x03\x44\x6c\x4f\x7c\xd7\xb4\x33\x12\xec\xf1\x51\x36\x04\x64\x57\x1a\xd2\x86\x10\x58\x1f\xba\xdb\x94\x5a\x1d\x68\x18\x1d\xeb\x40\x3a\xa5\x6e\xba\x0b\xb8\x40\x32\x8e\xee\x36\x10\x3c\x7d\xe0\x73\xa6\x87\x9c\x94\x1c\x75\x54\xc6\xf6\xf2\xa0\x80\x80\x9e\xb0\xe5\xbd\x0e\x13\x0f\x29\xa2\x29\xe9\x30\xdb\x01\xfe\xca\xc2\xe0\x36\xbd\xf0\xe0\x01\xe2\xa8\xea\x32\x64\xf8\x64\x9d\x5b\x60\xc2\x91\x03\xf0\xb4\x9c\x24\xc9\x7f\xac\xaf\x7e\x81\x06\x9a\x2b\x26\xab\x3f\x93\x3f\x42\x7d\x81\x27\x2c\x6c\x8b\x7c\xd0\xdf\xb7\xc6\xbb\xe9\xc0\xea\xab\x32\xbb\xda\x22\x18\xb9\x62\x3a\x21\x19\xaa\xb1\xf3\xeb"}, +{{0x77,0xad,0x0f,0x94,0x2c,0x37,0xf0,0x31,0x3e,0x6b,0x04,0x56,0xda,0xba,0xec,0x81,0xb2,0xd6,0x1f,0x6c,0x11,0x8d,0xdb,0x29,0xea,0xf3,0xac,0x5b,0xf1,0x95,0x04,0xd4,},{0x69,0x2d,0x2d,0xa5,0xa9,0x5f,0x48,0x61,0x1a,0x6d,0xa8,0x9c,0xfb,0x3b,0x35,0x40,0xf6,0xaa,0x0c,0x85,0x0d,0x6d,0x98,0xde,0xea,0x87,0x0e,0x39,0x7f,0xed,0xe3,0x28,},{0x69,0x6b,0xd5,0x52,0xdd,0x01,0xdb,0x80,0xb3,0xd6,0x7d,0x61,0xee,0xb7,0xec,0xc5,0x68,0x78,0x40,0x4a,0xb1,0x19,0x44,0x2a,0x1c,0x74,0x22,0x99,0x2c,0xfa,0x35,0xae,0xa9,0x20,0x82,0x5d,0x2d,0xaf,0xd8,0x92,0xad,0x7e,0xb6,0x82,0x5a,0xd9,0x99,0xae,0xe5,0xc8,0x3b,0x7b,0x50,0x79,0x06,0x53,0x4f,0x91,0xac,0xe7,0x59,0xc5,0x51,0x0c,},"\x87\xe6\xde\xad\x2c\x85\x54\x9e\x3d\x8d\x25\x88\xa0\xa3\x36\x06\x03\xa6\x24\xfb\x65\xae\xbb\xc1\x01\xbf\x7f\x1f\xec\x18\xd0\xb2\x8f\xbd\x5d\xba\xee\xd3\x87\x52\xcd\xf6\x35\x5c\xe8\xdc\x84\xe1\x8a\xc1\xa4\x39\x3d\x2a\xb8\x88\x88\x2c\x4f\xf1\xc9\xc8\x13\x7f\x83\xbe\xe3\x63\x36\xbc\xbf\xbb\x72\xd5\x04\x9e\x0a\x40\x08\x74\x51\x4f\xdc\x36\x33\x04\x6e\x89\x38\x3d\xde\xd9\x3c\xa3\x1f\xde\x0d\x89\x8e\x11\xe9\x26\x8d\x3d\x5c\x24\x06\x66\xed\x55\x27\x61\x3d\xa7\x9f\xb7\xe4\x96\x25\xb4\x4c\xde\x78\xb4\x1c\x67\x90\x2e\xb0\x21\x6b\x3a\x7a\x3e\x56\x0e\x26\x1d\x71\xd7\x64\xaa\xcf\x15\x95\x9c\x17\xfc\xd6\x17\x6f\xb2\x5e\x24\x9e\xe6\xbb\x1b\x3b\xd7\xbd\x90\xf6\x0b\x0b\x0f\xfa\x03\x15\xa0\x65\xa2\x4b\xba\xe8\xf2\x55\xbf\x29\x8d\x7e\x4d\x44\xf0\xb4\x30\xc4\x15\xb4\xfb\x36\xcf\xa6\x62\x6a\x83\xf4\x9a\x25\x67\xf6\x24\x4f\x40\xe9\x23\xad\xd1\xd4\x9a\x72\xf5\x7b\x15\x30\xf5\xb3\x79\xde\x3a\x91\xc2\xe9\xa1\xac\x79\xab\x37\xbc\x3b\x9b\xa7\x3d\x88\x28\x13\x6b\xcc\x87\xd2\xc0\x11\x90\xde\x54\x57\xfa\xcd\x90\xf3\x69\x55\x3f\x7a\xc5\x21\xc5\x67\x2b\x08\x67\xdf\xa8\xda\x3b\x95\x2a\xd9\x5b\x67\xda\xb9\x9b\x48\x20\x57\x2f\x2d\x4a\x29\x8e\x95\x18\x63\x77\x79\x28\x9c\x03\x1b\x79\x3d\xee\x85\x9c\xde\x7b\x24\xad\xd6\x49\xff\xf8\x71\x24\x8a\x66\x02\xd2\x51\x62\x79\xda\x60\x58\xcb\xb6\x96\xfa\x8b\x1d\x89\xa2\x0d\x20\x99\xe6\x46\x44\x32\x10\x48\x3e\x5d\x41\x34\xe9\x28\xfa\xeb\x38\xa3\xb5\x08\x19\x9e\x0d\x69\xbb\x55\xee\x34\x77\x42\x05\xc0\xa6\x12\x05\xb5\x0b\x08\xfe\xbe\xaa\x40\x1e\x6e\x3a\x51\xa2\xbf\x98\xef\xac\x78\xb7\xae\x2b\x85\x2c\x53\x95\xa1\x2c\x40\xe2\xc7\xdd\x1b\x20\x25\x04\xb5\xa7\xd2\xf7\xe4\xfd\x4f\x86\x10\x93\x0d\x28\x68\xcb\xa8\x86\x43\x39\xe0\x41\xda\x21\xc0\x71\x5f\x41\xb2\xb2\x3d\x14\xd0\xb5\x45\x48\x0b\xc3\xbd\x7d\x72\x15\xcf\x2f\x81\x6a\x33\x32\x08\x1e\xca\xa0\x8c\x0f\x8b\x99\x52\x52\x51\xf5\x72\x31\xb6\x75\x0c\x2d\xbd\x11\x09\xac\x41\x60\x48\x6b\x76\x83\x24\xb6\xba\xc8\x7e\xf5\xa2\x26\x44\x8c\x43\x12\x40\x32\x8f\x42\xcc\xa5\x86\xbe\x7a\xff\x3c\xbe\x76\x05\xfa\x34\x15\x14\xfc\xcf\xb9\x66\xaf\x3d\x45\x30\xe8\xcd\x90\x37\xa1\x1c\xe5\x93\xc2\xd3\x83\xe1\x03\x5a\x0c\x2e\xda\x09\x8d\xe9\x0d\x50\xc5\x18\x4a\x9c\x01\xb5\x7f\x26\xb9\x4d\xed\xd1\x45\x4c\x34\x06\x37\xec\xcc\xee\x70\x62\x57\x54\xa3\x28\xc6\x5f\x42\x64\x5b\x5e\x1a\x56\x55\xee\xf9\x7d\xfb\x1c\x63\x08\xed\xf4\x9f\xa3\x68\xd1\x7d\x17\xe0\x6a\xdc\x51\x2b\x39\x73\xea\x65\x2a\xc4\x0a\x99\x78\xe1\xbb\x1b\x2f\x86\xc5\xa9\xff\xbf\x60\xdc\xc4\xf6\xbb\xc9\x8a\x64\xf4\xde\x65\xe7\xec\x61\x72\x1e\xde\xb0\xe5\x23\x84\x56\xf7\x61\xd2\xd1\x29\x3a\xf0\xde\x9f\x79\x3b\x11\xd8\xca\xdf\x01\xa9\x43\x19\xa0\x2a\x42\x73\xff\xc4\xd3\xff\xa7\xb3\x4d\x74\xfd\x2e\x0b\x10\x0f\xca\x58\xb5\x32\x5f\x90\x7a\x74\x91\x93\xe7\x51\xd6\xc1\x16\x68\x7a\xee\x37\x47\xb5\x94\x60\xd4\xef\x15\x6e\x72\x47\x6e\xae\x1b\x84\x55\xd7\x6e\x71\xb3\x06\xb9\x81\x29\xb7\x2f\xe1\xcb\x5e\xb4\x05\xa7\xc2\xf4\x32\x7f\x38\x62\xd4"}, +{{0x29,0x32,0x14,0x69,0xee,0x9f,0x2b,0xb1,0x65,0xa0,0x69,0x64,0x03,0x32,0xb4,0x89,0xbf,0x5c,0x3f,0xab,0x68,0x2e,0x93,0xda,0xe9,0xd8,0x63,0x17,0xbf,0x50,0xc5,0x2c,},{0x96,0xf7,0x30,0xf8,0xef,0x89,0x70,0x26,0x8d,0xba,0x0f,0x75,0x70,0x41,0x0b,0x61,0x88,0xa1,0xa3,0xc8,0x63,0x97,0x74,0x09,0x13,0xd5,0x3a,0xda,0x26,0x2a,0xb8,0x7e,},{0x4e,0x1a,0xff,0x84,0x63,0xbc,0xa1,0xb7,0xde,0xb1,0xd3,0x77,0x3d,0xf2,0xe7,0xa0,0x68,0x64,0x11,0x1b,0x6d,0xc4,0x2a,0x62,0xae,0x98,0xde,0xb2,0x31,0x39,0x43,0xb3,0x15,0x3e,0xe4,0x66,0x96,0xb1,0x5c,0x24,0xef,0xc2,0xa8,0x08,0xaa,0xba,0x81,0xc7,0x8e,0x3d,0xfa,0x4d,0xfb,0x50,0xca,0x9f,0xe8,0x44,0x45,0xea,0x68,0xbc,0x8e,0x0a,},"\x9c\x71\x2c\x83\xd5\x4f\x2e\x99\x3c\xa6\x8a\x96\x32\x84\x60\x04\x49\x9c\x51\x95\x44\x8d\xdc\x49\x1c\x3a\x0d\x2e\x3a\x66\x6d\x6b\x33\x09\x8e\x48\x64\xfd\xf8\x6e\x61\x9d\x50\xf1\x0b\x7c\xc6\xc3\x9b\x3f\xf2\x80\x1a\x94\x91\xf6\xfa\x97\xc5\xf1\xc4\xaf\xa7\xae\xff\x31\xd7\x38\xf9\xa7\x68\xa7\x9c\x73\xb2\x55\x77\x31\x0f\xb0\xad\x4f\xaf\x85\x43\xa0\x98\xf8\x59\x57\x1b\x61\x48\xe8\xb5\x29\x26\x44\x57\x57\xd5\x54\x9f\xd2\x5a\x26\x51\x85\x31\x56\x63\x79\xd1\xc2\x74\xe6\xc6\xa9\xd6\x41\x32\xe4\xac\x25\xac\x9a\xf9\x38\x1b\xcb\x88\x53\x32\x11\x3f\x43\x01\x4a\x13\x9a\x81\xf8\xd4\x3c\x8a\x6a\xb5\x4c\x11\xa5\xc9\x2e\x06\x19\x1c\x1e\x51\xb7\x57\xac\x9f\x11\xe3\xdc\x15\xdb\x44\x86\xd1\x67\xff\x9f\x2d\x65\xe2\x3e\x6c\x96\x22\x3d\x9a\xff\x8d\x10\xd1\x50\x2c\xf3\xdb\xce\x5e\x35\x7e\x6b\x12\xdb\xe9\xb7\xe9\x97\xc3\xd0\xa5\x07\xd3\xba\xe3\xcf\xef\x1f\xfc\x8d\x05\x6e\xf7\xdc\x72\xdd\xc1\xc8\x1e\x31\x0a\xd2\x05\xbe\x16\xe7\x7f\x27\x38\x35\x4b\x10\xb4\x84\xd3\x07\x6c\x27\xe6\xb4\xf1\x66\x38\x85\x81\xf3\x50\xbe\xfe\x22\xfb\xb0\x82\xb5\x41\x21\xee\x59\xec\xc7\xae\x5d\xec\xe8\x98\x82\xac\xf2\x6c\xb7\x47\xff\xaa\x3e\x2d\x05\xa6\x96\xf6\x0f\xd9\xe8\x29\xc7\x09\xd8\xf0\x2d\xaf\x53\x7b\x23\x69\xb8\x91\xfe\x6c\xcb\xf8\xdf\xcd\xd7\xf4\xa3\x64\xb1\x99\x85\xbe\x7e\xde\xc6\x7d\xdc\x1d\xb7\x13\xc0\xa9\x0f\xaf\xa4\x88\x37\x77\x25\x62\xde\xac\xc2\xd2\xa0\xe7\x89\xe1\x8a\x8b\x5b\x3b\xd9\xe0\x83\xea\x92\xff\xfc\x31\x83\xd5\xd4\x14\x15\x32\x59\xb3\x3a\x43\x29\xcf\xc8\x08\x24\xeb\xcb\xe0\x44\xa7\xe3\x3a\xb8\xa2\x4f\xde\x54\xbd\x95\x20\xae\xa2\x84\xb0\xc4\xc4\xfa\x94\x27\xd2\x51\xc0\xdd\xd0\x13\xec\xdd\x82\x90\xef\x55\x65\xf6\x08\x50\x8e\x36\x35\x89\xe5\x29\xd8\x4f\xf0\xf2\x6f\x9e\xcb\x03\x05\x2d\x58\x97\xfa\xbc\x91\x7e\x56\xe6\x01\xb6\x4a\xbf\xe5\xa1\x7c\x39\x50\x28\x9d\x0c\xdc\xaf\x1f\x60\x05\xa9\xf8\x10\x6f\x43\xe1\x7a\xdc\xaa\x2d\x1e\x26\x91\x66\x76\x2f\x80\x54\xde\x05\x13\x5d\x5d\x13\x93\xd7\x00\x0a\x15\xb8\x7b\xd6\x88\x46\xa8\x9d\x5b\xc2\x28\x63\x32\x51\x51\xaa\xc8\x43\xf7\x22\x78\xae\x6f\x4a\xf7\x2a\x4e\x44\x9a\xdb\x7e\xae\x6d\x43\x6a\x1e\xc7\xe5\x8e\x59\xb7\xb8\xbb\x9e\xf0\xdd\xaa\xa0\x01\x82\x6f\x8d\xcb\x44\x64\x79\xde\xaf\xd8\xb8\xd5\x42\x04\x1c\x19\xa0\x5b\x1e\x0e\xe4\x7b\x46\x40\x91\x0c\x31\x93\x0c\xa4\xe2\x0b\x10\x57\x58\xec\x75\xf1\x95\x03\x56\x94\x7f\x62\x61\xd0\x03\x7f\xe3\x07\x73\xa3\xec\xe6\xa9\x6c\x8d\x54\x33\x33\x3d\x82\x2c\x27\x77\xef\x7f\xf8\xbe\x60\x33\x34\x5b\x50\x55\xd5\x8f\x5e\xb3\x72\x9a\xf5\xae\x88\x24\xf3\x31\xee\x07\x31\xc8\x9b\x20\xac\x11\x8f\x55\x04\x27\xcd\x95\x8a\x55\xf6\xb1\xa2\x88\x8a\x08\x7b\xb7\xdb\x55\xbf\xc7\x3b\x29\x42\x9b\x44\x48\xdb\xe9\x11\x9c\x45\xa8\x73\x39\xb4\x49\x7a\x69\xa4\xcf\x83\x3e\x8f\x37\x70\xcc\xe5\xe0\x1f\xaf\x5e\x73\xbb\xaf\x62\x76\x83\xc0\xa2\x8c\x73\x05\x2f\xbe\xce\x20\x30\x43\x38\x9d\xfb\xfd\x45\x49\x5e\x51\xda\xb8\x6a\x25\x2e\x5b\xc1\xb4\xb7\xfe\x28\x07\xe3\xd0\xe2\x36\x3b\xea\xb5\x1c\x67\xfb\x31"}, +{{0x04,0x65,0x77,0x50,0x49,0x7e,0x68,0x15,0x2c,0x43,0xce,0x34,0xa5,0x8d,0x21,0x06,0xe6,0x4c,0x55,0x7c,0xd7,0xa8,0x4e,0xf0,0x5d,0x9e,0xb8,0x2e,0x6b,0xcb,0x05,0xf5,},{0x3b,0x3a,0x19,0x47,0xb4,0xcb,0xf6,0x0b,0x82,0x6d,0x60,0x9f,0x19,0x2d,0xc2,0x30,0xaa,0x9b,0x9b,0xaf,0x4c,0xd6,0xa6,0x09,0x2e,0x49,0x5f,0x1d,0x2e,0x47,0xad,0x62,},{0x7e,0x2e,0xae,0x5a,0x29,0x3f,0x41,0x83,0x91,0xf6,0xd8,0x5a,0x79,0x94,0xb0,0x7c,0x45,0x22,0x80,0x01,0x7e,0xe6,0x53,0xbf,0x61,0x7a,0x8d,0x5b,0xe2,0x4c,0xbb,0x5d,0x0e,0xfd,0xfb,0x7f,0x7f,0x00,0x13,0x12,0x26,0x0f,0x34,0x4e,0x6f,0xb9,0x15,0xad,0x8d,0x7d,0xe9,0xc0,0x51,0x98,0x27,0xc0,0x57,0x26,0xf9,0xce,0x25,0x45,0xdd,0x0b,},"\x29\x48\x22\x7a\x89\x0f\x6f\x84\x5b\x77\x5e\x62\xc5\x3a\xf3\x80\x50\x64\xa1\x57\x64\x46\xf0\x85\xd9\x0f\x8b\x9a\x5e\xd6\x8d\xf1\xea\x39\x3c\xe4\x79\xc4\x41\x41\x49\xa9\xec\x5a\x17\x10\x36\x42\x4d\xff\x03\x44\xb4\x95\x8f\x61\x32\x29\x8d\x0e\x24\xc9\x26\xd2\x8a\xd9\xd7\x9f\x98\xc6\xe6\xbc\xf1\xc5\x76\x76\x06\xec\xd2\x91\xc6\xad\x47\xb4\xf9\xfb\x2b\x02\x01\x15\x5a\xda\x62\x7b\x7a\x1f\xd5\xb0\x74\x19\x87\x40\x83\x05\x9e\xb5\x2b\x2f\x6e\xc2\x28\x18\xb7\x82\x46\x22\x8f\x3f\xe6\x35\x5d\xfd\xa7\x0e\xbb\x9b\xbe\x73\x22\x93\x78\x73\x63\x99\x55\x7c\xe2\x4b\x30\xbf\x64\x5a\x14\xe2\x25\x6f\x70\x01\x9b\x33\x36\xb2\x03\xfb\x77\xc6\xec\x94\xa7\xa2\x63\x48\x88\xfe\xea\xd4\xd7\x2c\x23\x91\xe9\x9e\x8c\x8d\x53\x3f\xd8\xa4\x2b\x08\xc1\x1f\x88\x7a\xb2\xde\xb6\xeb\xbf\xe3\xd2\x51\xde\x63\x53\x6c\x36\xcd\x53\x42\x23\x98\xe5\x44\xcf\xf8\x7b\x07\xa6\x33\x49\xfc\x50\x85\xdd\xe9\x3a\x1b\xfd\x71\x71\x13\x3a\x20\x43\x98\x1f\x60\x75\x22\xc8\x13\x3c\x63\x42\x8d\x1b\x92\x62\x6c\x79\xb7\x35\x8e\x70\x21\xcf\x1f\x41\x2a\x78\xaf\xa7\xcb\x3f\x59\xff\xef\x92\x79\x88\x5a\x5b\xdb\x24\x66\xac\xd3\x4c\xd5\x15\x80\x83\x0b\x83\x51\xeb\xd4\x40\xa9\x66\x23\x90\x7a\xd1\xf4\xb5\x62\x03\xf5\xe1\x59\xa4\x29\xe3\x54\x6e\xad\x0c\x01\x1d\xbe\xd0\x90\x28\x71\x7e\x3c\x3d\xfe\xd3\x91\x97\x76\x4d\x4d\x24\x5e\xf2\x28\xb9\x80\x44\x71\x8e\xf4\xd8\x82\x2f\x21\xb2\xc5\x68\x50\x38\x47\x3b\xf9\x3d\xc0\x93\x74\x51\xeb\x02\xd3\x1a\x46\xc8\xdc\x7e\x94\xc3\xe8\x67\x8c\x83\xb9\x8a\x43\x81\x8f\x12\x5b\x52\x8b\x47\x6a\xad\x31\xd1\x58\x4f\xfd\x48\xf1\x49\xe5\x73\x6e\x58\xf9\x42\x05\xd3\x88\x9e\x56\x7e\x4d\xd1\xea\xc2\xfa\xc1\xf8\xf4\xdc\x54\x0e\x53\x22\x46\x0f\xb9\x40\xe1\x2e\x93\xc4\xc9\x8d\xed\x19\x41\xc1\x90\x4f\x96\x7f\xb4\x64\x36\x84\xc1\x9a\x4d\x5c\x44\x1d\x60\xb0\xe9\xf4\x08\x55\xe5\x23\xfe\x7f\x99\x10\x76\x57\xa6\x80\x76\x27\x5b\xf8\x4b\x7c\x69\xa3\xf2\xb3\x85\x5b\xc8\x02\x6b\xa9\xb0\x0b\xc6\xfe\x34\xb9\x9d\xa0\x63\x17\x00\xa6\x7f\x52\xb3\x4e\x17\x96\x33\x98\x87\xa4\x83\x05\x12\x1d\x53\xab\x44\x40\xfc\x4b\x5c\x9b\xf7\x23\x94\xd5\xed\x37\x2f\xf1\x8c\xa3\xf0\x07\xbd\x02\xdf\x65\x1d\xc3\xac\x43\x82\x75\xf1\xa3\xe5\x24\x22\xb8\x6c\x45\x86\x76\x6a\x21\xcd\x89\xf8\x05\x80\x5d\xbb\x44\xfd\x89\xfe\x24\xfb\x2c\x0b\x40\xd1\xb7\x54\xc3\x35\xdb\xaf\xfc\x3b\x3b\xb8\xbb\x46\xc7\x4c\x36\x37\x45\x04\x04\x2d\x86\x78\x92\x27\x59\x98\x62\x31\x2e\x99\xca\x89\xeb\x50\x4c\xc3\xd7\x5d\x19\x49\x5a\xa8\x6b\x20\xb2\x73\x6b\x12\x1b\xb2\x07\x5c\x88\xed\x4a\x3f\xbd\xaa\x6b\x2c\x3f\x76\xd1\xff\x55\x25\xd3\xa2\x86\x3e\x4d\x83\xc7\x2b\xfe\x01\xe1\x02\x78\x80\x94\x74\xe1\x82\x2d\xe2\xd9\x62\x83\x48\x93\x20\x02\x96\x11\xaa\x9d\xff\xc4\x82\x9d\x66\x86\x9e\x63\x49\x4f\x9a\xad\xe7\x0b\x77\xa7\xb8\x0f\xbc\x93\xe3\xde\x4d\x93\x59\x13\x75\x2d\x04\x5e\x13\xb3\x12\xc5\xd0\x82\xf6\x24\x2d\x49\x85\xb0\x53\xb3\x78\x3e\xb0\x2c\x66\x14\x96\x3d\xc0\xd5\x5d\x4c\xbe\x88\x7b\xae\x29\xcc\x18\x97\x9e\x5e\x2e\xa9\x45\xbc\xd4\x0d\x89"}, +{{0x8b,0xd9,0x90,0x70,0xc5,0x0a,0x9f,0xa4,0x18,0xef,0x7f,0x75,0xc0,0x01,0x29,0x91,0x6a,0x41,0xc8,0x60,0x70,0x96,0x1c,0xcb,0x2b,0x20,0x2b,0xe1,0x8c,0x2d,0x10,0xd7,},{0xdd,0xd7,0x33,0x08,0xfc,0xe8,0xca,0x65,0x52,0xd0,0x39,0x42,0x8c,0x7a,0x1a,0x94,0x92,0x33,0x20,0xa3,0x1c,0x0f,0x58,0x0d,0x3c,0x23,0x52,0x80,0xf0,0x3c,0x18,0x30,},{0xb1,0x4a,0x7b,0x26,0x20,0x12,0xc5,0x90,0x9e,0x21,0xd5,0x87,0xfb,0x4f,0x29,0xa9,0x09,0x3c,0x8e,0x1c,0x29,0x99,0x81,0x6a,0x82,0x11,0x8f,0xef,0xbf,0x10,0xe6,0x8e,0xa8,0x98,0xbf,0x0d,0xa1,0x8e,0xbf,0xd0,0x34,0x1e,0xa8,0xf8,0x2a,0x18,0x44,0xc8,0xe0,0xdd,0x53,0x06,0xe5,0x09,0xb9,0xd0,0xc3,0x5b,0x47,0x3a,0x7d,0x20,0x95,0x07,},"\x48\x5f\x8d\x68\x0f\x79\xee\x2d\x82\x8b\xe7\xd0\x18\xa6\x5e\x0b\x64\xb0\xf0\x18\x48\x19\x86\x3e\x71\x10\xee\xa8\xf2\x99\xa7\x2c\x4d\xc8\x7f\x8e\xe8\xa8\xae\xaa\x81\xaf\x91\xdc\x71\xad\xea\x79\xfc\x97\x97\x42\x1c\xcc\x64\x6e\x6c\xd5\xdd\x48\xb4\xde\xc1\xde\x96\x86\x93\xfb\xce\x0d\x00\x21\xa3\xd9\x8d\x38\xa8\xbb\xc5\x81\x95\xe6\xdf\xc3\xb5\xe1\x46\x1b\x2a\x59\x41\x03\xe8\x0a\x29\x44\x1d\x5a\xaa\xf8\x89\xe3\x1c\xc8\x65\x14\x1f\x0c\x6b\x2c\x8c\x81\xf7\x21\x67\x9e\xa2\x39\x4e\xc6\xe4\x08\x1e\xc2\x03\xc2\xea\x39\x7d\x94\x84\x75\x7a\x7a\x0e\xcd\x53\xe6\x52\xdb\x9d\xf1\x7b\xea\x0e\x32\xfe\x8b\x2c\xbc\xe0\xd1\xd9\x7b\x96\x1e\xd7\x4e\x8e\x62\x2b\xcd\xd3\x55\x8b\x7c\x48\x69\x5a\xdf\x18\xaa\xe6\x11\x0e\xa9\xa3\x39\xb9\xda\x40\x7a\x9e\xda\xf2\xab\x08\x1a\x68\x1e\x18\x32\xcc\x21\x5b\x1f\x08\xa6\x7d\x55\x9a\x47\x44\xaf\x7c\xd5\x03\x18\xc2\x06\xee\x91\x15\x75\x82\xf8\x2e\xb6\xc0\xfc\x29\x02\x7b\x44\x61\xc3\x07\x33\xb8\x16\x9d\x14\x81\x32\x2c\x48\x60\x50\x9b\xa0\x96\xba\xcb\x71\xa5\x79\x24\x67\x51\xd5\x67\x54\x0e\x41\x43\x1e\x14\xf1\xb4\x6e\xf1\x6e\xba\x27\x61\x04\xbc\x01\x65\x0d\x5c\x49\x26\xe4\x7c\x9c\x60\x40\x78\x4b\x04\x3c\xd0\xaa\x48\x54\xef\xe8\x79\x7f\xd0\x46\x2d\x45\x39\xf3\x80\x35\xae\xf0\x8b\x45\x77\xc1\xa9\x11\x8d\x00\x4b\x6d\x01\x86\x2f\x52\x76\x77\x6d\xfe\xf1\x37\x18\x64\xf1\x55\xac\x0f\x07\x83\x89\xc2\x05\xcf\x05\x38\xd8\x5f\xa3\x48\x24\x4d\x7a\x42\x29\x11\x31\x0f\xf6\xc1\x01\x32\xb1\x59\x8b\xb4\x45\xc7\xe2\x07\x7b\x76\x3c\x47\x3d\x1e\x7a\x61\xa3\x8b\x64\x92\x9a\x64\x8b\x60\xb2\xe5\x43\x54\x37\x39\x22\x4b\x40\xfb\xf6\xd8\x7f\x10\x79\xc3\x0b\xc8\x73\xac\x38\x99\x1d\x51\xb8\x9e\x9d\x26\x1c\x4b\xcc\xb3\x75\x35\x5c\x07\x2c\x1e\xa2\x0e\x4f\xf9\x1d\x55\xd9\xf7\x54\x4e\x90\xd1\xc6\x64\x6c\x59\xaf\x72\x42\x4d\x8a\xaa\x8e\x0a\xed\x07\xb3\x88\x9d\x4e\x45\x0c\x12\x09\x68\x4c\xe1\x38\xd0\xc9\xda\x07\x95\x25\xf5\xaa\x02\x05\x0a\xf5\x70\xe4\x31\x5c\x2f\xa8\xb0\x99\xb7\x76\x5b\xfb\xb8\x94\xfa\xd3\x59\xb8\xe2\x48\x04\xec\xe0\x52\xac\x22\xa1\x91\x70\x53\x35\xe9\x88\x40\xa6\x24\xe4\xcb\xf3\xa1\xa1\xa3\x27\x81\x27\x85\xb2\xc0\xf5\xd6\x38\x14\x57\xb7\x2f\xdb\x63\x3e\x81\x93\x8b\xbb\x54\xb8\xc3\x7c\xcc\xb5\xd5\x9c\x58\x27\xc7\x68\x3a\x52\x47\x54\x49\x77\xe9\x84\x44\x21\x78\xd0\x85\x29\x06\xca\x6f\x94\x5c\x42\x29\xeb\x08\xad\x27\xe6\xc2\x75\xd7\xb4\xec\x8d\xc2\x5f\xb2\x81\x93\x37\xe5\x3e\xad\x6c\x7a\xa7\x87\xf9\x1a\x7d\xc6\xdd\xaf\xd5\x36\xee\xfc\xbd\xec\x2c\x50\x16\x7b\xe3\x43\x06\xa8\x2e\x16\xd5\xd5\x2b\x3b\x1b\xe0\x08\xa7\xa6\x11\x27\x4c\xe2\xcf\x8d\x62\xe3\xb9\x00\xc0\x99\x43\xbe\x70\xcc\xc7\x7b\x07\x06\x37\xc2\x50\x61\xd6\x1b\xe9\x10\xee\xf5\x0d\xf1\x87\x44\xc3\x3e\x76\xf6\x70\x1e\x0a\x8f\xf6\x29\x7f\xa6\x7e\x4b\x41\x08\xc1\x37\x56\x72\x7a\x9d\x74\xbc\x9e\x17\x98\x3e\xec\x08\xf8\x66\xb7\xc7\xff\xb3\x7f\x3c\xcb\x01\x41\xa8\x0f\xef\xf6\x32\x2b\x2a\xc6\x2b\x84\xce\x27\x97\xfd\x98\xd6\xff\x26\x9a\x41\xa0\xc3\x84\x82\xdb\x67\x98\x62\xa3\x8c\xd2"}, +{{0x1a,0xf4,0xcf,0x6d,0x24,0xab,0x37,0x82,0x86,0x7d,0x96,0xa1,0xc2,0x75,0xce,0xeb,0x02,0x2c,0x69,0x1a,0x30,0x8e,0x62,0x45,0x66,0x5d,0x61,0x6b,0xf6,0x7c,0x2c,0x32,},{0x19,0xd3,0x17,0xea,0x98,0xd3,0x5b,0xa5,0xfa,0x67,0xc1,0x2e,0xcf,0xb3,0x27,0x50,0xdf,0x27,0x5d,0x7a,0x45,0xb8,0xe2,0x11,0xa7,0xac,0x47,0xed,0xe7,0x71,0x2d,0x9f,},{0x7e,0xb4,0x6c,0xd0,0xde,0x31,0x55,0xb4,0x37,0x47,0xd7,0x32,0xf1,0x04,0x5d,0x8e,0xf7,0x44,0x92,0xad,0x82,0x7a,0x22,0x45,0xbd,0x17,0x10,0x28,0x28,0x44,0x2e,0x43,0xa0,0xce,0x7e,0x8b,0x26,0x8e,0xd7,0xfd,0x8d,0x3e,0x7b,0x28,0xf0,0x72,0x79,0x5d,0xa3,0xe0,0x70,0xf1,0x2b,0xc4,0xe2,0x3e,0xae,0xf5,0x7b,0x85,0x3c,0xee,0x88,0x0a,},"\xf4\x45\xfd\xcf\xe2\x8c\x17\xbd\x44\x27\xae\xa5\x67\x6c\x0e\x12\x80\x84\x15\x97\xe9\xd6\x6d\xe7\xd7\xa7\x17\x23\x11\x09\x39\xbe\xd0\x0f\x4e\xba\xf9\x60\x3d\x53\xc9\xcb\xf6\x27\x1b\xe5\x47\xaf\x29\xb2\xa0\x45\xec\x41\x28\x8a\x7b\xb7\x9d\x66\x2d\xc2\x10\xe2\x15\x95\x7f\xa8\x46\x88\xc9\x16\x54\x3e\x56\x17\xf5\x60\xe4\xd3\x8f\x73\xba\xef\xc3\x7e\x11\x91\x4e\x47\xc5\x15\x06\x78\x51\xe8\xed\x21\x39\x3e\x13\xdd\x19\xed\x9b\x73\xd9\x89\x45\xfc\x82\x6a\x25\x8e\x95\x7d\xc0\x83\xdd\x8e\x53\x5c\x30\xa5\x4b\x42\x66\xdd\x71\xd1\x13\xce\x85\x6b\x46\x28\x2a\x18\x03\x36\x27\xa9\x8e\x64\x72\xcc\xb4\x63\xed\x3d\x96\xfa\x7b\x35\x5d\x3b\x2c\x2a\x2b\x60\x10\xdd\x14\xf4\xea\x39\x65\xdd\x87\xbe\x1c\x42\x9b\xde\xa8\x30\x0b\x4b\x0b\x44\x45\x86\x35\xb4\x97\x9f\x5e\x3e\x8e\xb5\xc6\x18\xd4\xe1\x3e\x1d\x68\x8b\xf8\x8c\x7e\x4a\x3d\x93\x8e\x84\x33\x6d\x67\xbe\x68\xdf\x34\x35\xc5\xc9\x90\x86\x32\x1c\x02\xe1\x3b\x4a\x12\x52\x4b\x34\xe4\x6a\x0b\x4d\x27\xf3\x0d\x7e\xd4\xf5\xce\xcb\x36\xde\xad\xf0\x9e\x7e\xfc\xc7\x55\xca\x66\x75\x68\x29\x79\x14\xc6\xbc\x24\x06\x27\xd9\xd0\x9a\xac\xf8\x54\x15\x41\x2c\x06\x35\x62\x34\x53\x27\x8d\x9b\xf0\xe1\x0e\xec\x65\xfc\x72\xaf\xff\xfa\x93\x92\xdc\x78\x81\xd1\xe5\xc7\x60\xa4\x02\x80\xf1\x6b\x14\x75\x12\x7b\x91\xb6\x9c\xcb\x65\xdc\x4b\x35\xde\x10\xf9\x43\x25\xc0\xcb\xe1\xc4\x70\x19\xa2\xea\xf2\xb4\xba\x92\xd7\x85\x22\x9a\xac\xfa\xd1\x82\x6e\xbb\xde\xbe\xfb\x7d\xad\x4b\x05\xf8\x82\x43\xe1\x5f\x27\x97\x66\xe3\x32\x1d\xd8\xdb\xa6\x50\x44\x4d\x81\xfb\x08\x78\x76\x7a\x9c\x63\x53\x4b\xb4\xba\x21\x28\x5a\x24\x16\xcb\x8f\x85\x6d\x11\xa9\x6e\x0a\x8c\x8d\xe1\xe1\xa7\x51\x32\xf1\x56\x4c\xd9\x94\x99\x56\x90\xbb\xed\x2e\xe1\x54\x53\x7f\xb6\xf2\x79\xfb\x09\xc8\xde\xa6\xf6\xaf\xab\xc6\x28\x56\xe3\xd1\x28\xfd\xfa\x79\xfc\x49\x76\x19\x3b\xb9\xb3\x36\x86\x1e\x47\xb5\x6d\xc2\x58\x23\x93\xd2\xe5\x44\x65\x1a\xc8\x5b\xc5\x8e\x9e\x6a\x94\xdc\x4c\x39\xc4\xef\x72\x53\x8a\x14\xf8\x56\xcd\x95\xc3\xe2\x79\x0a\xde\xe0\x3a\xb2\xe5\x2c\xa0\xae\x47\x1d\xe5\x02\xcb\x19\xe6\x76\xaf\x35\xf5\xf9\x3d\x84\x0f\xef\x96\x06\xcb\xe9\x2d\x8b\xc2\x50\x06\x10\x5d\x92\x34\x45\x88\x83\x88\x42\xc3\xbe\x50\x5c\x73\x50\xe3\x51\xb7\x35\xe6\xcc\x6f\xb7\x92\x75\xb2\x7b\xd9\xeb\xd3\x6b\xa4\xd0\x60\xac\xee\x73\xb5\xa3\x15\xce\xff\xab\x86\xd0\x6f\x21\x68\xa6\x70\x65\x57\x81\x96\xa0\xed\x04\xa4\xdd\x71\xd6\x73\x48\x37\xdb\x08\x38\x57\xab\x1e\xb5\xe0\xee\xc4\xff\xba\xc9\x54\x4f\x4e\xc1\x9b\xde\x19\x4d\xf8\x4b\x1c\x84\x83\x41\x57\x4b\xf1\x0d\xae\xe8\x5b\x81\x78\x19\x6f\xb6\x08\x12\x3a\x80\x81\x71\xd7\x3c\xe4\x20\x6a\xd6\x52\x16\xad\x1a\x5c\xbd\xe4\x0b\x19\xd6\xae\x7f\x40\xdf\x97\xab\x84\x32\xe2\xc5\x3a\x50\x4e\xd1\x22\xe2\x5f\xb7\xa5\x1c\x14\x35\x4a\xb3\x92\x8e\xde\xb3\x9c\x29\xeb\x24\x6b\x74\xa0\x76\xf8\x9d\x03\x50\x4f\x40\x1b\xd1\x76\xb5\xcf\xfe\xe4\xb9\xdb\x09\x7c\x45\x76\x4f\x51\xaa\x37\x67\x04\xb5\xa7\xf2\x10\xb3\xf1\xa9\x05\xe2\x5d\x67\x00\x2f\x65\x57\xeb\xb7\x49\x73\x7c\xda\x31"}, +{{0x2a,0xac,0xc8,0x19,0x7f,0xf8,0xfa,0xe1,0xc1,0xcf,0x38,0x62,0xe3,0xc0,0x4a,0x21,0x78,0x29,0x51,0xf8,0xe4,0x8e,0x40,0xb5,0x88,0xf8,0xbc,0x74,0x60,0xc3,0x0a,0x03,},{0x9a,0x1b,0x01,0xe2,0x15,0x4f,0x1c,0x36,0xa8,0xe1,0x6b,0x79,0xee,0x7d,0x2d,0x05,0xb8,0x71,0x2e,0x0d,0x27,0xa0,0x61,0xa6,0xd4,0x1d,0x47,0x57,0x78,0xb0,0xdf,0x8c,},{0x64,0x7c,0xdd,0x6c,0x1a,0x67,0x29,0x0e,0x57,0x67,0x6a,0x78,0x11,0x3a,0xaa,0xdc,0xa6,0x9a,0xc5,0x7b,0x99,0x77,0x15,0xc5,0x09,0x89,0x5b,0x8c,0x5c,0x94,0xe8,0x2c,0x0b,0x6a,0xce,0xcc,0xf3,0xba,0x8b,0xd7,0xcf,0x61,0x75,0x2b,0x1b,0x19,0xd1,0x3b,0x49,0xf1,0x5f,0x8b,0xfa,0x04,0x6e,0xb4,0x42,0xa5,0x5c,0xd5,0xba,0xb1,0x42,0x02,},"\x5d\x82\x75\x2c\xe5\xda\x31\x80\xfa\xf4\x78\x7a\xed\xfb\x19\x29\x4b\x43\x48\xa1\xd9\x20\x2c\x85\x39\x83\x31\x32\x3e\x0f\x42\xb0\x83\x52\x27\xe6\x8e\x11\x56\xf2\xd4\xba\x2f\xe4\x50\xe6\xd6\xef\x2b\x92\xd8\x9b\xbb\xe4\x09\x6e\x12\xca\x83\x97\xeb\x2f\x45\xe6\x76\xf1\x67\x3a\xa4\x1c\x95\x9f\xcd\x30\xd5\x57\x88\x53\xb5\xdb\xd1\xc0\xd5\xb3\xa0\xf0\xd8\x70\xec\xa7\x1e\xa1\x33\x90\x11\x1b\x25\x8f\x65\x48\xb3\x2f\x37\xa0\x5e\x97\x44\xa6\x56\xfd\x77\x8d\x65\x72\x19\x65\xc6\xd9\xb3\x28\x60\x0b\x45\x70\x47\x70\xe0\x4b\x09\x97\x90\xaa\x78\x84\xf0\x0d\x7b\xb7\x65\x9e\x33\x72\x10\xbd\xc2\x3e\xaa\x71\xd7\xb0\x16\x03\x0a\xca\x62\x23\xb5\x56\x9b\xdf\xc2\x90\x81\x1a\xac\x40\x95\x24\xdc\xcb\xf9\xba\xbc\xbe\x4b\xf2\x09\x46\xb5\x44\x31\x7c\xa6\xf2\xf9\x18\x31\xc7\x9f\xb2\x73\xb6\x40\x4e\xb4\xe6\x1e\x1f\x7b\x10\x6e\xbd\x0d\xb9\xf2\xb1\x97\x4d\x2f\x03\x1b\xce\x25\x80\x36\x06\x55\x2c\x34\x41\x65\x5e\xfc\xf2\xc7\xea\x52\xad\xcb\x30\x99\x3d\x85\xf2\xdd\xa7\x96\x03\xe9\x41\x5a\x02\x32\x45\xa6\x6c\x07\xa9\x56\x93\x31\x46\xf5\x3c\x99\x3c\x08\x89\x18\x08\xb8\x16\x6b\x30\x72\x1f\xbd\x1f\x8a\x1b\x93\x7d\x14\x07\x0d\x78\x6e\x9e\xb4\x51\xf2\xab\x51\x42\xf8\x3a\x60\xf3\x5d\x76\xad\x8b\x81\xd6\xa5\x7c\xf3\x68\xfc\x6f\xca\xcc\x0c\x47\x58\x44\x0d\x9c\xd5\x95\xb1\xb0\x94\x2a\x36\x55\xe2\x50\xda\x98\x3b\x72\x41\x54\x6d\xcf\xbe\x0a\xe8\x10\x77\x65\x02\x95\x40\x9f\xf9\xe9\x09\x77\xfb\x99\x60\xcb\xf4\x0a\x2a\xf5\x17\x74\x02\xba\x2f\xaf\x50\xdb\x6f\x1a\x73\x65\xcf\x99\xe9\x92\x42\x9e\x38\xdb\x43\xea\x83\xfd\xdc\x95\xa6\x48\x67\x6c\x0b\x16\xbc\x95\x2b\x15\xde\x99\xd5\x2f\x6b\x52\x33\xda\x4e\xae\x19\x78\xe8\xba\x25\xe6\x23\x5a\xfb\xc5\x11\xc7\x6c\x4c\x87\x4c\x92\x37\x92\x2b\x1c\xef\x08\x47\xd0\x7a\x80\x20\x0c\xba\xe3\xc7\xc8\x1f\xcb\xd0\xd1\x72\x52\xed\x8c\x61\xad\x19\x54\xfc\x86\x2e\x1e\x04\x44\x4c\x32\x08\x6f\xee\x38\x0d\x1c\x17\x54\x13\x22\xb9\xa6\x0d\xa6\x62\x35\x2e\x21\x0e\x9a\xe2\x15\xe3\x53\x29\x6d\xb9\x22\x33\x9a\xa1\x7d\x21\x73\xec\x31\xf1\xc5\x30\xa2\x4b\x1f\x34\x8a\x31\x57\x2e\x14\x69\xca\xac\x80\x8f\x9c\x76\xec\x27\x31\x87\x3b\x80\x3e\xad\x3e\x54\xea\x24\xbc\x24\x49\x9b\x97\x04\xb3\xbd\xce\x81\x38\x9b\x9d\x14\xd4\x95\x27\xc0\x4b\x3b\xb9\xe3\xba\x6d\x94\x6c\xea\x58\xcf\x78\x6d\x4d\x28\xb8\x9b\x41\xc5\x82\x74\x03\x5a\x86\x90\x5a\xd9\x57\x58\xc3\x16\x13\x66\xab\x93\xda\x81\xe6\xb4\xc8\x08\x36\x4e\x08\x7d\xae\xea\x4c\x4c\x5c\x2a\xa6\x87\x19\x37\xc5\xfe\xab\xa2\x14\x9f\x01\xf7\x38\xf4\x53\x96\xe6\x6e\xa8\x06\x32\x21\xe1\xc8\x1c\x05\x25\x5b\xa5\x64\xad\x44\x0c\xb5\xd0\x7c\xbd\x4b\xab\x94\x1e\xa5\x93\x24\x49\x30\xbc\x5c\x28\x9b\x31\x65\xd3\xec\x88\x47\xeb\xc4\xb6\x74\xc0\xa4\x9f\x91\x69\xad\xef\x78\x6d\x77\x67\xbc\x8f\x21\x3d\xb7\xd9\x5c\x06\xe9\x9b\xc1\x1e\x20\x00\x55\xb6\x5e\xb7\x9a\xda\xa0\x1b\xcd\x2c\x85\xda\x43\xce\x63\x70\xe1\x2e\x34\x9b\xf6\xd4\x75\x48\x7a\xff\xdf\x92\xe2\x0a\x3a\xcd\xed\x1d\x76\xf9\xe8\x3e\x91\x9e\x98\xde\xf1\x95\x07\x2a\x50\xd0\xc5\x71\xdd\x25"}, +{{0xff,0x86,0x21,0x56,0xc7,0xea,0xb6,0x81,0xc9,0x5e,0xff,0xf8,0x00,0x3e,0x00,0xa1,0x4f,0x1f,0x0d,0x50,0x5d,0x55,0x07,0xe6,0xe5,0xb3,0x91,0x79,0xdf,0x9b,0x1c,0xda,},{0xe1,0xb8,0x9f,0xb3,0x11,0x14,0xea,0x46,0x10,0x7f,0xfd,0x03,0x29,0xf1,0x06,0x64,0x28,0xde,0x54,0x70,0x8e,0xdb,0xec,0xf3,0xed,0x9d,0x47,0x08,0xcd,0x14,0x3f,0xe2,},{0x4b,0x81,0x37,0x04,0x2d,0x67,0x84,0x75,0x7d,0x4a,0x9c,0x06,0xbc,0x74,0x32,0xf4,0x80,0x9b,0x1c,0x6a,0x90,0x35,0x42,0x73,0x6d,0x9a,0x57,0x66,0x8c,0x20,0x84,0x5c,0x17,0xd4,0x68,0x55,0x70,0x85,0xc5,0x7f,0xb6,0x32,0x13,0xda,0xd3,0xbe,0x0f,0xa3,0x6a,0x11,0x8f,0x7c,0x1a,0xef,0xf2,0x56,0x2f,0xf4,0xb8,0x88,0x8c,0x26,0x90,0x0e,},"\xb3\xd1\xdb\x72\xa6\xa9\x85\xec\xd7\x0a\x2c\xff\x6c\x18\xc1\x79\xe2\x17\xd4\xf4\x10\xfd\x39\x34\x96\x96\x85\x90\x1b\xd0\x71\xbc\xe6\xc2\xfb\x67\x63\xe1\x0c\x6f\xa1\x6e\x75\xa1\x17\x60\x66\xb8\xec\x81\xae\x3a\x80\x39\xe7\x1d\xc2\xcd\xc6\x4a\x40\xfd\x62\xb7\xce\xe7\xbe\x4b\xa0\x33\x2f\xe4\x5d\x0b\x60\x15\x86\x52\xe3\x3f\x8d\x3a\xff\x3c\xb4\xd6\xb0\x21\x74\x4d\x0d\xd1\x78\xb1\xbf\x0a\x1c\xc1\xd3\xfe\x93\x21\xbe\x28\x42\x1e\xb8\x82\x63\xa1\x24\xf4\x97\x92\xd0\x79\x47\x5a\x8c\x55\x5f\xf5\x69\x08\x73\x51\x4b\x5d\x48\x3e\x53\x21\x7e\x0c\xbb\x12\x86\x2b\x85\x0f\xe3\x90\xc8\xf8\x30\x08\x08\x6e\x64\x9a\xc9\x04\xb0\x18\x35\x0a\xb4\x91\x57\xee\x9b\xca\xe6\xc0\x7a\x4b\x87\x8b\x48\xe2\x5e\x98\x4f\xbb\x4d\x36\xb6\x1d\x68\x9b\x13\x46\x8a\x28\xd1\xe3\x87\xe0\xe8\x86\x57\xf8\xc8\xac\x95\x86\xa6\xe2\x6c\xf9\x4d\xff\x6f\x82\x64\xe3\xff\x62\x58\x86\x5c\x6d\xcf\x85\x7b\x00\x14\x78\x86\xe1\x75\xdf\x04\x32\xe3\x2f\x04\x40\x0e\x29\x9f\x21\x18\x83\x12\xb3\x2d\xfc\x05\x0e\x7b\x7e\x87\xee\xaa\x0c\xba\xac\x6b\xe9\x93\x7a\x5e\x0c\xc3\x11\x13\xde\x7c\x8b\x23\x3e\x1c\xe8\xe5\xd9\xc5\x64\xfb\xe9\xf3\x7b\xbd\x41\x1d\xf7\xa5\xe4\x4e\x6c\x7e\xbb\x67\x6d\x85\x89\x4d\xcc\xf4\x86\x5e\x4d\xda\x0c\xad\xef\x2b\xbc\x55\x00\x0b\x3a\x29\xf1\xf7\x1e\xf4\x46\x1d\xdc\x3b\x33\x1d\x91\x56\x65\x34\xc5\xd6\xd8\x4c\x73\x13\x76\x29\x53\x20\xf8\x0a\xdc\x90\x28\x8f\x99\x53\x55\x4f\xcd\xf9\x21\x3d\xe6\xa9\x05\x21\x0d\x4c\x80\x64\xaf\x91\xcd\x98\x32\x5e\xf9\x18\x98\xd3\x3d\x70\x03\x82\x02\xe3\x2f\xb6\x70\x9c\xa3\xd7\x88\xfe\xcb\xd1\xb8\x41\xfa\x4e\x5e\x90\x62\xd6\x42\x67\xc3\x5c\xfd\x44\x4f\xb6\x9e\x2f\x60\x47\xf5\x8b\x1c\x2a\xf4\xcc\x7e\x4c\xac\x2f\x89\x08\x88\x36\x05\x92\x11\x3e\x96\xad\x3a\x85\x7e\xd0\x5e\xaa\xba\x6f\x91\x53\xef\x89\xb9\x3e\x00\xe8\x74\x37\x33\xec\x47\x2d\x9b\x0e\xec\x1c\xd8\xfa\x52\x42\x5c\x4a\x26\xbd\x7d\xf7\x3a\x27\x12\xbe\xbe\x51\xae\x3b\x25\xeb\x78\xdb\x82\x14\x90\x31\xfe\x7b\x28\x1a\xf6\xcb\x77\x14\xed\xf8\x9d\xe9\x15\xf3\x47\x0f\x15\x3e\xed\x7f\x45\x62\x43\xbb\x90\x34\x2e\x19\x0e\x64\x7f\x39\xe0\x46\x88\x3c\xe2\x8a\x89\x20\x03\x31\x5e\xa3\x79\x42\x9e\x95\x82\xa9\x35\xeb\x78\x96\x33\x96\xd1\x36\x84\x5f\x86\xc4\x66\xe8\xfa\xf2\x27\x2f\x43\xff\xef\xc2\xad\xa5\x60\x1f\x8a\x6b\x2a\xc4\xcc\x6b\x92\x82\x09\x17\xf2\xe0\x39\x3c\x8f\xaf\x98\x2d\x6c\x5f\x4f\x23\x0e\x27\xce\x22\x78\xa7\x23\x77\x47\xfa\x85\xa9\xc8\x57\xbf\x18\x02\xc3\xea\xe0\xd2\x35\xb5\xad\x58\x49\x7d\x66\xa0\xd3\xa9\xba\xeb\xcc\x41\x7f\x18\x33\xe9\xcc\x44\x60\xf9\x75\xd7\x28\x58\xcd\x11\x8d\x7a\xaf\xaf\x1c\x87\x82\x97\xca\xcf\x71\xac\x75\x67\x6d\xc1\xb4\xfb\x51\xc1\x77\x58\x10\xd0\x35\x37\xf2\xd7\x66\x27\x8b\x99\x71\xbb\x97\xd3\xc4\x9b\x51\xfe\xb2\x6d\x37\x5e\x0c\xb9\x10\x95\x74\xa8\x16\xf8\x4e\x76\xfc\x7e\xf0\x72\xd5\x79\x3c\x2f\x65\xab\x2e\xfd\x90\x52\xe6\xb8\x56\x9f\x28\x05\x86\x1c\x31\xa7\x34\x4a\x3c\x44\x06\x9a\x94\x32\x0d\x27\x4e\x27\x12\x71\xea\xfa\x3b\xfe\x64\xde\x75\x37\x84\x6a\x01\xe5\x1f\xda\xe0"}, +{{0x58,0x26,0x19,0xab,0x3c,0xf5,0xa3,0xae,0x77,0x66,0x88,0xbf,0x6d,0xba,0xcb,0x36,0x33,0x0a,0x35,0xad,0x75,0x24,0xe4,0x9e,0xf6,0x63,0x68,0x77,0x64,0xcf,0x6e,0xc7,},{0x20,0x02,0xea,0x0a,0x38,0xa3,0x27,0xe0,0x38,0x4a,0xea,0xe4,0x68,0xdb,0x0f,0x6c,0x85,0x16,0xa6,0x96,0x09,0xaf,0x9e,0xee,0x93,0xe9,0xec,0xb9,0x4b,0x44,0x9c,0x66,},{0xfe,0x97,0x01,0xda,0x1a,0xa8,0x1c,0x55,0xba,0xc3,0x36,0x38,0xf7,0x75,0x54,0x2b,0x80,0x44,0x80,0xf3,0x4b,0x7b,0xfc,0x78,0xda,0x99,0x16,0xe5,0x24,0x6a,0x60,0x4d,0x39,0x0b,0xf9,0x20,0xc8,0x72,0xa7,0x79,0x24,0x24,0x6e,0xe8,0xd0,0x39,0x3b,0x20,0x2e,0x7b,0x25,0xb2,0x48,0x4f,0x65,0x4a,0xc3,0x67,0xcb,0x09,0x25,0xec,0xe3,0x05,},"\xca\x74\x28\x4f\x11\xc5\x6e\x25\x98\xd7\x8a\x4e\xcd\x03\xb4\x0e\x01\x7a\x55\x81\x76\x01\x2b\x26\xfd\xf6\x95\xc3\xde\x98\xa7\x4f\x8f\x40\xa4\x7d\x79\x78\xed\xc2\x4e\xe8\x09\x2b\xfe\x5e\x61\x59\x68\x34\xde\xed\x1d\x9d\x34\xa0\xf5\xcd\xae\xbe\x34\x21\xaa\x19\xe0\x12\xde\x86\x5b\x9e\xe1\xb7\x34\x79\xb2\xbd\x1a\xc9\x82\xf9\x7e\xd9\xc7\xcd\x20\x45\x9c\x60\xfb\xb1\x1e\x1e\x2b\x4e\xac\x5d\xb6\x84\x4c\x71\xd7\x29\x49\x50\x2b\xba\x50\x3a\xce\xc9\x05\xad\xba\x25\xf6\xb1\x19\xea\xf9\x63\x9f\xa8\xab\xb3\x02\xdf\xf9\x93\x2d\x85\x0c\xc4\x4c\x57\xcf\x90\xb2\xe5\x8a\x8b\x52\x51\xc1\x26\xa9\xe2\x8f\x5c\x76\x1b\x62\x80\xe2\xcd\xdd\x79\xcb\xd6\x8e\x53\xff\x4a\x62\x26\xd3\xbd\x4c\x96\x1b\x9b\x9e\x43\x45\xa2\x54\x58\x62\xc7\x97\x38\x66\xf0\x42\x0b\x89\x8e\x7b\xae\xa9\x0e\xa4\xee\x00\x40\x42\xef\x38\xa1\xfd\x95\x6a\x72\xfd\xf6\xfd\x43\x25\x7d\xa9\xfd\xb9\x66\x80\xef\x4f\xdf\x9e\x94\x3d\x26\x5c\xdc\xf2\xe5\x2e\x32\x01\xd5\x40\x8b\xc6\xce\x10\xe5\x70\x0a\xdf\x12\xb5\x5b\xa1\x4a\xa8\x29\xd8\x69\x1c\x31\xf2\x4f\xc4\xa5\x1c\xe6\xfa\xa1\xf3\xef\x2e\xad\x78\xe5\xe7\x53\x44\x6a\xd3\xfa\x4a\x84\xc1\x93\x97\x9a\xeb\xc8\x30\x9b\xad\x60\x81\x4f\x48\x59\xb9\x31\xd7\x04\x14\x76\x44\x91\xc6\xc9\xed\x8d\xb6\x73\xc5\x43\xd3\x51\x85\xcd\x28\x88\xaa\x21\xc1\xa9\x20\x34\x27\xe0\xac\x0b\x1f\xe3\x4c\x0e\x4a\x40\x01\xe0\x95\x6c\x13\xcb\x59\xa3\xba\xf8\x7c\x21\x09\xa8\x88\xa4\xc9\xe7\xaa\x48\x17\x67\xd8\x02\x0f\xf3\x5d\xd7\xc5\xcc\xec\x7c\x08\xe9\x71\xa7\xe2\x18\x13\x8c\x90\x54\x6a\x7d\xdf\x36\xad\x11\x4b\xe5\x85\x57\x43\x2c\x2d\xdf\x34\xce\xd3\x37\x9f\x70\xd4\x40\x7e\x58\x79\xf9\x84\x2f\x38\x17\x17\x05\x1b\x16\x85\xaa\x7a\xb0\xad\x38\x54\x1e\xc1\x68\xf5\x1c\xb6\x88\xf3\xcd\x1a\x01\x9a\x33\x6c\x9f\x4f\x3f\x82\xde\x78\x5c\x07\x48\x67\xfd\xc8\x80\x0f\xc7\x6f\xba\x04\xc8\xad\x8d\xe1\x0d\x2e\x9b\x43\x05\x81\xbe\x44\xc4\x1e\xcc\x8f\xc8\xa6\x16\x31\x43\x99\xd1\x8c\x64\x79\xf5\x7e\x57\x3b\x22\xa6\xee\x5c\xe2\xdc\xc0\x89\x48\xa0\xde\x1f\x0d\xd2\x5b\x65\x71\x5a\xb1\x8c\x70\xc7\x62\xfc\x3d\x7d\x60\x0c\xad\x63\x22\x60\x38\x50\x9c\x19\xab\x35\xb5\x49\x3e\xee\x73\xa7\x03\x73\x1e\xc5\x35\xc9\x0c\x6f\x06\xd9\x4d\x3e\x5f\x7e\x51\xa0\x9f\x9f\x8f\x42\xc5\x01\xb8\x50\x46\x86\x36\x5c\xee\xe9\xe0\xfe\x00\x13\x29\xf3\x03\x52\x21\x46\x71\x7c\x6a\x12\x58\xd0\xf1\x57\xcb\xea\x4b\x5a\x5e\x3d\x13\xbc\x90\x7e\x95\xfd\x6e\x8a\x71\x89\x6a\x02\xc3\x10\x6b\xd2\x6a\x51\x00\x51\xf1\xb3\x02\x58\xab\x27\xf8\x75\x67\x3b\x13\x37\xee\x36\xb7\x1a\x37\x6e\x0f\x9e\x78\x09\xa6\x7c\x67\xd9\xac\xc1\x6c\x25\x1d\xcb\x8c\x92\x6c\x8e\x93\x25\x16\xd3\x8b\x72\x33\xea\xc6\x15\x9c\x59\xca\xd0\x30\x7c\x59\x0e\x71\x31\xb6\x22\x19\x14\x5a\xaa\x35\x5b\xfb\x4a\xcb\x6a\xf0\xa5\x50\x00\x06\xcd\xd8\xb8\x13\xfe\x19\x08\x60\x2e\x08\x74\xc9\x62\x2b\xb3\x76\x73\xba\x1a\xcb\xa4\x14\x23\x16\x67\xbc\xc4\x90\x7a\xc8\x71\xf8\x7e\x6c\xe3\xf5\x91\xc1\x91\x71\x05\x7a\x9f\x45\x7f\x53\x62\xae\xda\x10\x5d\x18\xfb\x84\xf7\xd0\xf0\xa7\xda\x7e\xf8\xda\x91\x14"}, +{{0x2b,0xbd,0x83,0x0c,0xe7,0xde,0xf3,0xfe,0xce,0xa1,0xec,0xd6,0xea,0x0a,0xe9,0xc9,0xf4,0xfa,0x8f,0xfc,0x3b,0x1f,0x19,0x38,0xc5,0x05,0x05,0x1b,0xab,0x40,0xcf,0x7a,},{0x0f,0xdf,0xed,0x8d,0xe3,0xc1,0xea,0xf8,0x91,0xce,0x37,0xe3,0x4c,0xb4,0xa2,0x44,0x1c,0xbb,0xae,0x08,0x83,0x38,0x3d,0x70,0xde,0x24,0x64,0x85,0x0b,0x4a,0x64,0x2a,},{0x13,0xeb,0xc9,0x79,0xa8,0x87,0x10,0xe3,0xc5,0xf3,0x45,0xcf,0xbb,0x82,0x48,0x13,0xb3,0x08,0xa9,0xd5,0xc6,0xde,0xe3,0x28,0xbf,0xd2,0x35,0xa9,0x7d,0xe7,0xb3,0x26,0xde,0x6c,0x73,0x8f,0x96,0xf6,0x98,0x31,0x94,0x92,0x09,0x99,0x68,0x52,0xdd,0x9c,0x09,0x8d,0x58,0x08,0x41,0x87,0x09,0xf2,0xbf,0x51,0x0d,0x46,0xb7,0xf0,0x36,0x06,},"\x5f\x1e\xde\xaa\x3c\x0b\x2a\x63\x31\x1d\x97\xf1\xc5\x4e\x7e\x2f\x68\x71\x70\xe6\xb4\x6e\x21\x69\xcb\xf5\x6c\x66\xf2\x31\xbf\xc4\xa5\x76\xbd\x2b\x84\x20\xbf\x35\x7d\x3a\x90\xf8\xf3\x2e\xa1\xad\x99\x39\xb4\x67\x25\x4b\x66\xa1\xdf\x1f\x5b\x4c\xba\xc6\x3a\x5c\x27\x24\x26\x0d\x24\xd8\xdf\x8e\xdb\x58\xae\x24\x7a\x25\x91\xe9\x20\xb1\xa4\x20\xcf\x8d\x85\x39\xea\x57\xdb\x0d\xad\xff\x1a\xd3\xe9\x8c\x31\x72\xd0\x33\x16\x3c\xb4\x34\xa7\x66\xb0\xc1\x18\xa5\x6a\xbd\xcc\xe7\x9c\x82\xaf\x7b\xac\x74\xed\x0e\xa0\x24\xac\x4c\xe0\x22\x2d\x0a\xa9\x14\xf4\x32\x09\x2b\x1b\x51\x78\x04\xdb\x59\x18\xa8\x45\xe9\xcc\xa5\x5a\x87\xdb\x7c\x28\x52\xf7\xdd\x2e\x48\x36\x01\x85\xcc\x44\x2c\x79\x30\xaf\xe1\x5d\xd6\x22\xcc\x02\xbc\xd1\xee\x77\x8b\x59\x70\x5f\x14\x33\x32\x41\x58\x8a\x52\x2d\xe2\x44\x07\xe8\xe6\xe1\x0d\x5e\xf3\xa8\x8e\x3a\x3c\x44\x38\xc1\x7f\x75\x04\x67\x4f\xd7\xe4\x18\xcb\x2f\x77\xad\x0a\x56\xd2\x38\x67\x03\x15\x5e\x9a\x40\x1c\x43\xdd\xb5\x1e\xad\x55\x20\xaa\x7b\xa0\x38\xe7\xde\x53\x31\x41\x8a\xd5\x52\xbd\xcd\x18\x5f\x50\x3a\x85\x48\xf5\x5b\x63\x86\xe4\x68\x7c\xa5\x15\xf7\xc0\xee\xa5\x70\x98\x3b\xfb\x24\xbe\x16\xf7\xb3\x00\x3f\xb7\x56\xe3\x26\x56\x2f\x2a\x32\xfe\x65\xff\x84\x4c\x39\x84\xc7\x2e\x40\xdd\x49\xe4\xf3\xae\x8c\x0f\x81\x9a\x79\x39\xb2\xe7\x36\xe3\x81\xf5\x82\x3c\xbc\x61\xb2\xed\x01\xd9\xb0\x5c\xf8\xb1\x46\x48\xa4\x8b\x0d\x7c\xbe\x88\x2a\xc1\x6c\xad\xd8\xc4\x2a\xa2\xc7\x02\x46\x34\x7b\x4d\x84\x95\x36\xa7\xac\x22\xc7\x20\xda\x3c\xf1\x78\x72\x5e\xe5\x57\xa9\x2c\x25\xb1\x2b\x8b\x95\x6d\x3b\xf4\x80\x2e\x9e\x8a\x15\xb5\xab\x75\x42\x35\xcc\xa0\xe5\xb7\xe5\x5e\x4a\xec\xe4\x5a\x47\xe0\x84\xce\x14\x47\x44\x05\x98\xef\x5d\x4f\x5f\xdc\x2c\x98\xa5\xad\x13\x6c\xff\xbf\x87\xd3\xcf\x52\xf6\x73\x8c\xca\x79\x48\x35\x60\x92\x07\x8f\xdf\x25\x45\x77\xf5\x59\x69\xa0\xc6\x52\x46\xda\xc8\x09\xa2\xfc\xa1\xf6\x0a\x1d\x92\x98\x77\xb9\xa6\x54\x0e\x88\xa9\xe6\xe9\x15\x59\x38\xd2\x2c\x68\x7e\x63\xb3\x87\x53\x4d\x38\x5e\x89\x61\xe5\x88\x67\x43\xf9\x5f\x4a\x70\x80\xd9\x16\x62\x45\x17\xb1\x53\x36\x03\x0a\x46\x71\x4b\x16\x8b\x83\xd6\xf9\xcc\xe0\x60\x66\x49\xc0\x1f\x0a\x1d\x0a\x2a\x53\xf5\xe3\x78\xf6\xaa\x98\xc3\x84\xaa\xfb\x3e\xef\xdb\x34\x21\xfa\x3a\xc9\x8a\x0d\x3a\x9c\x02\x9c\x23\x00\xae\x02\x41\x06\x7d\x1a\x4f\xc9\x2e\x43\x86\x88\xea\x88\x9f\xcb\x1a\x1a\x9e\x86\x34\xb9\x16\xc6\x0b\xaa\x0c\x18\xbf\xcd\x13\x9b\xfe\x30\x17\xbf\xbe\x16\x29\x13\x43\xce\x86\x05\xbb\x78\x72\x55\x8c\x6b\x5f\xd5\x6d\xfd\x22\x15\x77\xed\xcf\xfa\xa8\xbd\xa3\x4d\x7a\x11\xab\x8c\xb2\x78\x28\x8e\x58\x34\x84\x26\x76\xfc\xcf\xfa\xa9\x11\x1b\xce\xd2\xb3\x57\x5f\xdd\x49\x62\x1b\x76\xe8\xd1\x29\xb6\x17\x00\xee\xab\x03\x14\xef\x94\xd5\x50\x50\x6a\x4b\x8d\x1e\xe6\x55\x08\xd8\x9d\x0e\x99\xe9\x33\x6b\x41\xd9\xf7\x4a\xa4\xd7\x22\x11\x4d\xe0\xf3\x1e\xcf\x00\xb0\x97\xf5\x3c\x9a\xca\x9c\x7a\x28\x5b\x58\xa3\x5d\x70\x29\x8c\x5c\x34\xf7\x4b\x4a\x70\x53\x08\x03\x31\x00\x34\x9f\x0c\x62\xf9\xc2\xeb\xf7\xde\xad\x0a\x77\xb2\x98\xeb"}, +{{0x1a,0x7a,0x3c,0x2f,0x54,0x81,0x13,0x1b,0xe5,0xf8,0x68,0x45,0x6a,0xa2,0xfa,0x90,0xe5,0x6d,0x52,0xcb,0x72,0x1c,0x71,0x84,0xeb,0xff,0x06,0xfe,0xd2,0xfe,0x68,0x5d,},{0x7c,0x2a,0xd0,0xf2,0xa5,0x70,0x55,0x03,0x26,0xfb,0x50,0xa8,0x50,0x83,0x58,0x21,0x67,0x6d,0xe1,0xde,0x12,0x7f,0x6d,0xe1,0x67,0x02,0x99,0xd8,0x14,0xf6,0xe3,0xce,},{0x97,0x61,0x60,0xfb,0x5b,0xbd,0xab,0xe5,0xc8,0x96,0x2f,0x23,0xba,0xba,0xcf,0x0b,0x0a,0xb4,0x1c,0x2b,0xb1,0x3e,0x9c,0x0d,0x44,0x90,0x67,0xb7,0xde,0xcc,0x7d,0xb4,0xe9,0x4e,0x76,0xa7,0x1b,0x9c,0x0a,0xc4,0xd6,0xaf,0x38,0x7a,0x72,0xa8,0xcd,0x73,0xe3,0xbc,0x63,0xb7,0xed,0x65,0x0b,0xee,0xbf,0x17,0x42,0x4c,0x49,0x0b,0xd6,0x0d,},"\xc6\x28\x34\xd9\xd5\x5d\x1a\x44\x03\xe9\x25\xd0\xa5\xb5\x52\xda\x17\x4c\x02\xf4\xe9\x45\xde\xc3\x38\xc1\xbb\xb2\xae\xb4\xff\x40\x02\x0e\xf7\x0f\xf5\x05\x20\x5c\xf8\x81\xb6\x29\x96\x0a\xbd\x62\x76\x4e\x5a\x54\xf2\xb5\x10\x56\x67\xb1\x1c\x7d\x5b\x7a\x4c\xcc\x3f\x48\x8b\xdd\xdb\x95\x8a\x7b\xe9\x54\x62\x07\xe6\xc4\x67\x18\x97\xc0\x53\x50\x8e\x1f\xd8\x32\x22\x13\x0a\x79\x33\x97\x6d\x2b\xec\x61\x4e\xd8\xf9\xb6\xa6\xb9\xf4\xef\xb2\xa5\x8b\x9d\x00\x5b\x94\x3e\x42\xf1\x71\xb7\x09\xa7\x31\x30\x70\xcb\x2e\x06\x8d\xa3\x9c\xf9\x99\x22\xb6\x9e\x28\x5c\x82\xad\x97\xf2\xd6\xc7\x79\x22\xca\xe2\xb5\xe3\x20\xe8\x35\x77\xc0\xd0\x88\x76\x1e\xc8\x81\x52\xc2\x97\x49\x29\x78\xa9\xd7\xa3\xff\x67\xed\xe4\x4c\x2a\x70\x7c\xf3\xe2\x35\x2e\x23\x2f\x53\xc8\x78\x2b\xa4\x89\x28\xa9\x7f\x8a\x36\xb2\x0a\x41\x68\x16\xe9\x45\x79\xb9\xd7\x25\x0a\x29\xdc\x84\x70\xf6\x3a\x70\x58\xe2\xd2\xa9\x9d\x6f\x0c\xcb\x53\x0d\xf5\x96\x95\x05\xef\x5c\x78\x44\xeb\x16\x7d\x20\xf4\x12\xa5\x08\xfa\xb1\xf8\xcd\x9c\x20\xc5\xeb\x9a\x41\x7a\x54\x12\xb5\xda\x6a\x57\x13\x57\x59\xfa\xb1\x7f\x63\x14\xf6\x8d\xf3\x5b\x17\x72\x42\x14\x43\x67\x6f\x31\x25\x79\xaf\x6b\x14\x11\x53\x5a\xda\x8f\x76\x01\x2b\x69\xbb\xeb\x60\xb2\x89\x7e\xe6\x60\x7c\xb3\x69\xcd\xf5\x2f\x4f\x6d\xdf\x88\xcd\xb2\x63\x0d\x78\x89\x6f\x13\x61\xfe\xa2\x2a\xe6\x34\x21\x76\x96\xff\x11\x4f\xb4\x2d\xbe\x4f\x43\x46\xf1\xbe\x5b\x57\xad\xb3\x84\xae\x7e\x49\xb4\x1f\x74\xb3\x1b\x9a\x62\xbc\x69\xdc\xa1\x65\x89\xc6\x34\xeb\x9d\x7c\x6c\x94\xf8\xec\xe4\x4b\x60\x62\x8f\x98\xe1\x02\x4c\xf3\x2e\x3e\x3d\xd6\xdc\xe5\x5a\x12\x22\x53\x2f\x49\x0d\x63\xe6\xa2\x75\x28\x1c\x0f\x3a\x6c\x10\x18\x91\xb8\xd5\x7a\x45\xde\x11\xde\x35\xeb\xb1\x51\xc0\xdc\xd7\x5e\x6c\x05\x0b\x3c\xd8\xba\xba\xe8\x45\xc3\x9f\x66\xc3\x6c\x77\xcd\xe0\x5b\x68\x3e\x4f\xb0\x10\x3d\x93\xe7\x65\x93\x35\xc8\x7f\xc0\xe3\x23\x5b\x2e\x82\x48\x8c\xda\xbe\xb5\xc5\xc8\x75\x80\x87\x45\xee\xa9\x2d\xe8\x6b\x8e\xfc\xb6\x3e\x16\xd0\x82\x91\x9a\xee\x2e\x92\x89\x9c\xb0\xbc\xf1\xc1\x42\x15\x77\xa4\xa0\xd9\xdb\x09\xee\x1f\x9f\xeb\x92\xa5\x38\x21\x03\xcf\x7c\x32\xcf\xe4\x63\x72\x5a\xe4\x86\x6d\xaa\xfe\xda\x05\x34\xc1\x69\xf8\xf9\xbe\x40\x4f\x3b\xaa\xe1\x23\xfa\x76\x8a\xce\x46\x17\x8d\x4b\x9b\xbc\x5b\xd7\xae\xec\x79\x03\xb0\xa5\xbc\x57\x53\x89\x86\xee\x09\xe0\x7e\x32\x07\x7b\x3b\x9d\xe5\x0d\xd1\x96\x7a\x37\x2c\x38\x5a\xc8\x86\x28\x7c\x18\x45\x1a\x64\xef\xb3\x7d\x05\x6f\x9f\x41\x94\xc0\x8b\x1e\x3e\xc9\x70\x22\x26\x7b\xf0\x04\x3c\x13\xd2\x6b\x9c\xe1\xf5\x39\x05\xf6\xe4\x1b\x3d\x99\xdc\x81\xb3\x31\x90\x9b\x72\x26\x66\xef\x24\x32\xe6\xaf\x8a\x45\x31\x07\x53\x12\x30\xce\x4a\x1a\xf8\xee\xd6\x26\xda\x22\x3d\xa7\x6b\x46\x50\x7e\x33\xd7\xcd\xbd\xe0\x2d\x41\x10\x40\xc8\x9a\x11\xd9\x51\x56\xed\x4a\xc2\x60\x5b\x82\x69\x39\xc6\xcf\x87\x7b\x4e\xe7\x36\xc5\xda\x77\xcf\x46\x50\xa9\x99\x7a\x3b\x9c\xf4\x6a\x82\xba\x2b\xc0\x13\x33\xc0\x44\x78\xb5\xc9\x2e\x24\x98\xbd\x00\x2f\x01\x31\x40\xae\xdb\x30\x1b\x95\x99\x3d\x1d\x75\x08\x70\xd9\x88"}, +{{0x19,0x1a,0x1d,0x90,0x32,0x1c,0x7f,0x4e,0x74,0x94,0xbb,0x98,0x29,0x09,0xa9,0xeb,0x40,0xc3,0x34,0x1d,0xd3,0x2a,0xe4,0xd9,0x67,0x50,0xb7,0xd0,0x29,0x66,0xb4,0x0f,},{0x95,0x62,0xd9,0xe2,0x13,0xf1,0x45,0xc4,0x56,0x93,0x5b,0x70,0x31,0xc6,0x80,0x66,0x9f,0x8b,0xbd,0x31,0xa4,0xc2,0xed,0x3c,0x91,0xc4,0x00,0x2a,0x56,0x29,0xe9,0x7b,},{0x74,0xcb,0x02,0x8d,0xc6,0xb7,0x5b,0x37,0xa1,0xda,0xea,0x1c,0xf8,0x84,0x65,0xdb,0x83,0xa0,0x09,0x3f,0xec,0xb2,0x2d,0x99,0xba,0x85,0x5e,0x9a,0xb5,0x9d,0x05,0xcb,0x22,0xc8,0x7d,0x0b,0x09,0xdf,0x7c,0x11,0x62,0x13,0xba,0xa8,0xf1,0x89,0xb2,0x70,0x3f,0xf9,0x53,0xcd,0x20,0x2e,0xb9,0xde,0xa3,0x97,0x6e,0xe8,0x8f,0x5f,0xa7,0x03,},"\x85\x89\x0d\xb4\xe2\xfb\xce\x09\x3d\xde\x5a\x80\xbf\x8f\xe0\x9a\x98\x4b\x83\xa4\x9b\x7c\xcb\x5d\x4b\x06\xcd\xaf\xdd\xd3\x82\xe4\xb8\xa8\xa5\x05\x30\xe8\x2c\x20\x06\x12\xc9\xd7\xd8\xa0\x89\xbc\x8a\xa8\x45\xc3\xcf\xcc\x38\xa6\x19\x5d\x21\xc2\x61\x8c\x3d\xba\x2b\x57\x09\x20\xec\xcf\xcd\x23\x6f\x17\xf0\x8d\x81\x42\x68\xf8\x82\x24\x2d\xdf\x07\x02\xda\x87\x85\xf4\x07\xaa\x8f\x86\xfe\xcf\xa9\x03\xc4\x8d\xa8\x3f\x83\x97\x77\xeb\x6b\x4a\x2b\xbf\x5d\xf7\xa4\xda\x53\x47\x5a\xf1\xff\xe4\x4b\x5f\xe0\x07\x2b\x8f\xbf\x3d\x26\xe6\xd8\x9e\xa6\x7d\x8a\xc8\x45\x94\x92\x89\x0a\xda\x65\x7e\xb3\xdc\x24\x92\xb8\x8d\xe1\x75\xb4\xbb\xa1\xa5\x08\x06\x4d\x61\x96\x74\xaa\xae\x2a\xf0\x9d\x31\xa5\xc2\x7c\x8d\x5d\x5a\x29\xb0\x37\x79\xf4\x28\x6b\x89\x66\xce\x40\x7e\x6f\xf6\x92\xfb\x94\x25\x20\xa9\x93\x8d\x69\xcc\x70\xac\xb0\x6b\x01\x4b\x6d\xfc\x19\x83\x42\x06\xcf\x1a\xc6\xc4\x48\xae\x6f\x07\x80\x25\xb5\x5f\x3d\x82\x72\x01\x26\x8a\x92\xad\xd9\xad\x17\x8e\xf7\x6a\x29\x89\xfe\xdc\x6e\x39\xf4\xeb\xb9\xf9\x6c\x9b\x83\x52\x69\x4f\xa5\x4f\xa0\x22\x01\x9c\x0e\xc0\x01\x2d\x0d\x76\x9e\x23\x67\x80\x3f\x92\x5f\x17\x5f\x9f\xb9\xcb\xec\x4a\x0c\x9c\x1e\x2c\x83\xea\x57\xe6\xa9\x2a\x17\xf5\x55\xca\xb9\x34\x27\x1e\x72\xc8\xcc\x32\x15\xfc\xb8\x7c\x20\x53\x9b\xf1\x42\x77\xb1\xbf\xbd\x6e\x58\x80\xef\x95\x3f\xc7\x5f\x23\xc0\xdd\x4f\xcc\x1e\x0b\xe3\x40\xaf\x94\x7d\xe0\x2e\x87\x7f\xd5\xc7\x7d\xd1\xdf\x7b\x41\x4b\x5c\x0b\x40\xc7\x49\x56\xa5\x45\xa1\x15\xb0\xc6\x99\x3a\xb2\x33\xb7\xe7\x2c\x82\x2b\x6b\x33\x81\xbb\x1f\xc1\x08\x75\xbf\xfe\x3e\x2e\xd1\x19\x0f\xa3\x3f\xc1\x5d\xa0\x83\x79\x4f\xcc\x2c\x5b\xf5\xa0\x79\x09\x06\x3c\xb2\x89\xa0\x8a\x2c\x8a\x33\xd3\x43\x84\x2c\x2d\x6a\x3c\xfa\x2a\x16\xca\x2e\xaf\xca\xb7\xea\x10\x0d\x1c\x71\x4b\xaa\xbb\x71\x49\xf0\x7e\x25\xde\xe3\x23\xe7\x80\x75\x7d\xfa\x80\x16\xfa\xa7\xc0\x62\x62\x22\xc3\x65\xf8\xf2\xf6\x68\x7d\x1d\xed\x23\x4f\x79\x9c\xc5\x0d\x1c\xd2\x6b\x4c\xfa\x40\x45\x91\x70\x56\xfc\x79\xc3\xb8\x8b\x2b\x19\x08\xe3\x72\xdf\x66\xda\xc8\x73\x46\x31\x64\x83\x49\xbc\x37\xfa\x34\xb2\x5f\xff\x3b\x07\x47\xb6\xbc\x16\xb9\x4e\x3e\x58\x95\xe4\xbb\xd9\x3d\x47\x8a\x6c\x1f\x75\xe4\xfa\x30\xfa\xa9\x22\x04\x9e\xd4\xc5\x0f\x12\xf4\xb3\x12\xa8\x97\x4d\x0f\xed\x8d\x44\x25\x5d\xcb\x2b\xf0\xfe\xbe\x47\xfb\x3f\xb8\xed\x99\x03\xb5\xba\x4c\xa1\x8e\x3c\xc6\x76\x2c\xfa\x1e\xaf\x04\xdf\xa9\x44\xd4\x96\xe0\xfe\x8b\xb7\xdc\x04\x54\x51\x39\x6b\xfa\xba\x54\x85\xd9\xd5\xf3\x91\xa9\x54\xc3\x71\x42\x53\xcc\xd9\xb1\x99\x64\xd4\x28\x06\x80\x72\x07\x83\x03\x6b\x3a\xbf\xaf\x28\x84\x58\x3e\xa5\xbd\xbc\xf6\x9d\x08\x89\x7a\xb2\x88\x31\x46\x35\xab\xb4\xc2\x96\x4b\x71\xad\x92\x91\xfe\xb5\xb6\x1f\x80\xe9\xb0\xcc\x07\xf9\x12\xa8\xe5\x59\x8d\x55\x48\xde\xfe\x0e\xea\x1c\x44\x85\x73\x71\x0a\xac\xdd\xb1\x52\xf9\x3c\x7c\x6f\xd3\xf7\xe4\xed\x9f\x74\x42\xa6\xb9\x00\xf2\x3c\x3c\x54\x4c\xe5\xc9\xba\x5f\x5e\x92\xaa\xfd\x11\xc9\xff\x5f\x79\xc0\x8b\x9d\x04\x5f\xef\x07\x97\x06\x25\xf6\x2e\x2f\x43\x34\xa4\xd6\x64\xca\xf7"}, +{{0x62,0x85,0x63,0xaa,0x3e,0xe2,0xfc,0x61,0x1b,0xcf,0xf7,0x8b,0xfb,0x2a,0x75,0xe9,0xfd,0x87,0x80,0xe8,0x7a,0x93,0x94,0x99,0xa6,0x1b,0xea,0xa6,0xa4,0xb7,0x19,0x13,},{0xda,0x20,0x61,0x6e,0xe4,0xa4,0x1c,0x2e,0xbf,0xdc,0x50,0xab,0x54,0x95,0x3b,0x6d,0x38,0x7b,0x06,0xc6,0xde,0xf7,0x57,0x96,0xb0,0x88,0x09,0x56,0x5c,0x6c,0xf8,0x05,},{0xc9,0xa6,0xaa,0xa9,0xb4,0xe1,0xcc,0xe1,0xb5,0x84,0x45,0x72,0x5f,0x61,0xf5,0x52,0xc8,0xfb,0x45,0x83,0x1f,0x03,0x48,0x27,0x98,0xf0,0x1f,0x66,0x3e,0x99,0x83,0xdb,0x1a,0x82,0xfd,0x33,0xab,0xa3,0xec,0xcb,0x96,0x22,0x64,0x26,0xd5,0x0a,0xe1,0x7c,0xc5,0x12,0x74,0xce,0x18,0xa3,0x88,0x60,0xf4,0x0b,0x2f,0x82,0x36,0x1b,0x5c,0x03,},"\x05\x6f\xb9\x54\xfb\xe6\xa6\x01\x4f\xad\xac\x1e\x1a\x9f\x56\xcc\x08\xaf\x37\x34\x8e\xba\xf6\x92\x06\x83\x38\x4e\xfa\x47\x62\x6c\xcd\xdf\xea\xd2\xd5\xe9\xe8\xcf\xff\x45\xf7\xac\x63\xde\x63\xf6\x9d\x12\x84\x8c\xe3\xc0\xef\x1f\x53\x0a\xde\x43\x0f\x0a\xfd\x5d\x8e\xcf\xd9\xff\xd6\x0a\x79\x74\x6a\x2c\x5b\xee\xdd\x3e\x67\x24\x99\x82\xf8\xb6\x09\x2e\xe2\xd3\x40\x47\xaf\x88\xa8\x1f\xea\xb5\xd5\x2b\x47\xd5\xb3\xf7\x6c\x20\x41\x72\x5f\x6f\x81\x32\x93\x05\x0a\xaa\x83\x4b\x01\xa3\xa5\x8f\x69\xaa\x4a\x8c\xa6\x1f\x5b\x74\x6f\x60\x0f\x3d\x45\x2c\x62\x82\xff\xdc\xa4\x42\x9b\x93\x38\x96\x7b\xa3\xa7\x26\x66\x90\xae\xc7\x5e\xbf\xbf\x7b\xe9\x8d\x99\x9b\x03\xed\xdc\x72\x92\x58\x1b\x0d\x69\xe3\x0a\x03\x51\xa1\x51\xdb\x70\x41\x2b\x0b\xfd\x43\xd3\xba\xa9\xd4\x56\xcb\x3e\x0b\x4f\xc1\x9c\xb0\x9e\x6c\xad\xcb\x6d\x3f\x3b\xe5\x13\x7c\xc7\xa8\xd3\x21\x9e\xc2\x03\x6e\xc6\x70\xed\x7e\xc5\x23\xb1\xb1\xc6\x87\xb5\x46\x53\x07\x88\x2f\xe3\x8d\x74\x72\xd0\xba\x87\xa4\x71\x86\x83\x09\xd2\xf7\x73\xff\x24\xc8\x7d\x39\xc1\x6b\x70\x8a\x4e\xd9\xaf\x43\xf7\x4c\x8d\x85\xcf\xe8\xab\x54\x06\x90\x7e\x94\x1a\x14\x97\x0e\x20\x9c\x29\xff\x7e\xd8\xa2\xf9\x35\xae\x41\x70\x9f\x27\x0d\x0d\x08\x55\x5e\xf7\xaf\x2e\xdf\xe4\x0d\xf3\x99\x22\x3c\x78\x5a\x43\xe7\xf3\x69\x15\x89\xe2\xea\x4c\x03\x6f\x11\xd0\x3d\x7d\x1e\xea\x14\xf6\x20\x03\x53\x25\xcf\x2b\x33\xba\xf3\x86\x39\x3e\x8a\x97\x2a\x7a\xf6\xcd\x9b\x85\x43\xb3\x2e\x25\x33\xd1\xfc\xc3\x17\x7f\xd9\x6d\x1e\x13\xbf\x8b\x68\xde\xb2\x22\xf9\x44\x97\x26\x5d\x3c\xcb\x34\x57\x51\xbd\x5b\x66\x90\x78\x08\x19\x98\xd6\x08\xca\x5f\xdc\x13\x48\x39\xd4\xed\x2b\xeb\xb2\x95\x2f\xea\x5a\x39\xc6\xf0\x33\xc1\x55\x8f\x69\x8c\xe4\x94\x6e\x4f\x6c\x08\xaf\x87\x4f\x27\x35\x7f\x87\x0e\xbe\xeb\x21\x99\x97\x6f\xfa\xef\xac\x95\x1f\x8e\x17\xfe\x7d\x08\x21\xe1\xb9\x2a\x90\xaa\x4e\x9d\xef\xd3\xfa\xfd\xa0\x52\xa4\x44\x47\x6d\xb1\xce\x38\xa9\xe1\x76\xe8\x41\x18\x9a\xbd\x8f\xec\xde\x0f\xbc\x5c\xb5\x5f\x51\x1f\x5f\xde\x07\xea\x97\xde\xb3\x9b\x7a\xa8\xdc\x84\xa3\x94\x6a\x6c\xf9\x26\xd3\x9b\x95\xc1\x1a\xf9\xd6\x4d\x98\xb8\x07\xf4\x70\x4d\x0a\x2b\xda\x97\xda\xd9\x88\x1a\xda\x1b\xf6\x63\x63\x66\xe6\x0a\x52\x2b\x48\x21\x04\x78\x61\xc7\xaa\xe2\x14\x6a\x02\xee\xf6\xb2\x5d\x51\x37\x1a\x0f\x17\xd2\x4b\xc1\x87\xdc\xdd\x05\xd5\x41\xc2\xf7\x22\x01\x42\x79\x15\xa3\x92\x8c\xd3\x78\x68\x91\x03\xac\x50\xb3\x3f\x87\xa4\x7e\x8c\xdf\xa6\x87\xa5\xf0\xaf\x8a\x56\x73\x1d\xab\xe6\x62\xf4\xf2\x83\x6d\xe0\xba\x8f\xaf\xd8\x6a\x38\x54\xbc\xa0\x12\xd7\x08\x8a\x00\xb9\x85\x4c\x2d\x3c\x70\x8d\xdf\x58\xfa\xa3\x55\xa8\x9a\xfc\x2c\x80\xf3\xf5\x33\x6d\xa0\x1d\x72\xa2\x77\x1a\x05\x58\x13\xfb\x35\x33\x0f\x7d\x2e\x01\xb1\xd1\x2d\xaa\x95\xed\x55\xd3\xbd\xc5\xdf\x77\x39\xcb\xc3\xca\x09\x7a\x41\xb6\xb2\xbd\x7f\x0f\xf9\xdd\x1d\x86\x58\x98\x3b\xa3\xff\x79\x20\xc1\x5f\x29\x2a\x1e\xf9\xfc\xad\xa1\xc6\x07\xec\xb4\x5d\x3a\x73\xc9\xff\xd4\x2f\x3e\x16\x02\x2f\xdf\xe1\x27\x44\x92\x63\x95\xf7\x4f\xb3\x11\x17\x93\xfa\x92\x81\x82\x1a\x66\xa0\x1d"}, +{{0x91,0x41,0xf7,0x9e,0xd3,0x0b,0xf6,0x00,0x61,0x1a,0x13,0xf3,0x67,0xb4,0x03,0x96,0xf2,0xec,0x83,0x9c,0x56,0x12,0xbb,0xf1,0xe6,0xe4,0x97,0xf8,0x39,0x54,0xbc,0x88,},{0xf1,0x4e,0xda,0x96,0x26,0x40,0xbe,0xcb,0x66,0xc4,0xd1,0xf1,0xa0,0x21,0x11,0x02,0x51,0x91,0x7b,0x8b,0x1d,0x34,0x82,0x82,0x98,0xd3,0x21,0x45,0xba,0xf6,0xe5,0xd9,},{0xcf,0x20,0x2d,0x7f,0x2f,0x9e,0xd1,0x17,0xf4,0x29,0x50,0x2b,0x2a,0x5a,0xff,0x54,0xa7,0xf7,0x51,0xd2,0x17,0x15,0x15,0xa4,0xd2,0x03,0x75,0x34,0x46,0xdf,0x0e,0xba,0xc8,0x69,0x84,0xc8,0x8b,0xd4,0x2b,0xd1,0xfb,0x8d,0xcb,0x40,0x87,0x76,0x72,0x2a,0x38,0xf3,0x2c,0xce,0xb2,0x5f,0x32,0xa2,0x5d,0x73,0x93,0xf1,0x38,0xee,0xdf,0x0a,},"\x8f\xec\xaa\x7a\xe9\xa3\xd4\xa4\x85\x1a\x66\x36\x2b\x36\x6e\x16\x7b\x9f\x43\x00\xfd\xab\x20\x56\x54\x75\x19\x87\xf0\x85\xde\x61\xbe\xc9\x34\x4a\xa8\x6f\x5e\x5c\x64\x77\x51\x4c\x28\x04\xce\xd7\xac\x0c\xd0\x62\x85\x29\xa3\xa1\x59\x92\x36\xed\x67\xbe\xbe\x1f\x2e\x95\xaa\x15\x1f\xe0\xf3\xb3\x01\x1a\x1d\x4b\xe9\x90\x1c\xaf\xab\x2f\x18\x91\x90\x4d\x4b\xff\x01\x28\xc1\xd3\x5e\xce\xcb\x32\x2b\x3c\xc0\x1d\xac\xc5\xae\x3d\xca\x69\x14\xa7\xd3\x4d\xa8\xc9\x65\x7b\x95\x0f\x89\xd1\xd6\xae\xc3\x29\x9b\xb6\x90\x11\x10\x71\xfa\x87\x28\x27\x74\x94\x3d\x96\xa4\xab\x7c\x3d\x6d\xe7\xd1\xbf\x11\x93\x63\x06\x8c\xc8\x2d\x45\xe4\xb7\x64\x54\xc6\x08\xbc\x35\x66\xb7\xf9\xb3\x85\xcc\x7e\xb3\x8e\xe4\x29\xaf\xc2\xda\x99\x66\x9f\xc5\xc1\xbe\x82\x16\x1a\x1b\x0c\x33\xf7\xba\x9a\xd4\x41\x9d\x20\x62\x97\x19\x01\xdb\x00\x3b\xfa\x23\xc4\x47\x14\x99\x5c\xb0\x6b\xfa\x96\x6e\x50\x23\xaa\x93\x46\xfd\x37\x5a\xe2\xa1\xe8\x40\x84\x31\x4d\xf3\xf0\x8c\xe2\x08\x00\xc2\xc2\xad\xfb\xb8\x13\x66\xf6\xb1\x04\x24\x3d\x62\xd5\x04\x1e\x72\x73\x43\x3f\x17\x58\x1b\xf9\x3f\x4c\x61\x46\xfa\x96\x6f\x63\x8a\xb0\x7e\xa1\x66\x94\xa7\xce\x30\x5c\xc6\x09\xa6\xe1\x06\x23\xff\x7f\x6c\x79\x16\xb6\xe4\xdb\xde\xbb\x7b\x52\xec\xa7\xf0\xd5\x18\x7f\xf6\x64\xd7\xc3\x70\xed\x22\x88\x6a\xa2\x67\x13\x29\xd9\x28\xe0\xa3\xbe\xa3\xb4\x71\x1a\x12\x8b\x9a\xab\x90\x26\x6f\x86\x51\xd2\x20\xb9\xcc\x1c\xbf\x5b\x1c\xe7\x26\x59\x31\x80\x36\x90\xd3\x29\x1c\x01\xea\xd4\xdb\xc3\x32\x9a\x97\xe8\x5c\x4f\xe1\xd3\x56\x60\x8c\xc9\xe6\x0b\x05\xbc\x14\x83\x8a\x86\x08\x27\x9a\x00\x61\xde\x28\xff\x7b\x8e\x81\xf5\x9c\x8a\x8c\x55\x23\x92\x4c\x4c\x48\x5e\x6e\xa8\x0a\xc8\x17\x50\xbb\x0e\x41\x9e\xfc\x78\x58\xcd\x4a\xf5\x0c\x8b\x8c\x80\x65\x0f\xac\xab\x4d\x82\x58\xf9\xca\xfa\x03\x10\xa0\x07\xcc\xcb\xc4\x18\x5c\x82\xfd\x14\x6d\xf1\xd8\x11\x87\x9d\xa3\x65\x0d\x57\x16\xf1\x00\x4b\x71\xd2\xc7\xf2\xbd\x65\x03\xc3\x54\x58\x9f\x86\x02\xc9\x50\xa1\xf5\x13\x9f\x81\x14\x60\x75\x28\x80\xa3\x41\x11\x66\x30\xe4\xff\x84\x94\x8e\x74\xa9\xeb\x35\x0d\x64\xd8\x29\x30\x02\x20\x02\x33\xf2\x09\xb1\x7d\x78\x89\x7c\x7c\xe6\xce\x29\xe2\x9f\x82\xd4\xad\x6c\x61\xeb\x79\xf5\x73\x9c\xb6\x68\xb2\x1a\x74\x55\x55\xc9\x6e\x19\x52\x68\x45\xe8\x2c\x6e\xd2\xb1\xc6\xbd\xd6\x36\x4b\x8f\xc7\x9b\xa9\xa3\x2d\xbd\x3f\x8b\x97\x5e\xb9\x23\x62\x39\x58\xae\x0d\xaa\x4f\xfa\x13\x92\x17\xc0\x0e\x02\x1f\x93\x7e\x9b\x79\x1c\x37\x99\x1a\x35\xe5\x23\x1a\x19\x14\xc0\x45\xa7\x87\x43\x2f\x97\xb8\xe2\x06\x3d\xb1\x05\xe1\x4d\xa9\x79\xc1\xc4\xcb\xa7\x85\x21\x0e\xb0\x20\x11\x33\x4b\x23\x0c\xfb\x68\x31\x99\x8c\xcc\xe2\x53\x86\xf4\xf3\xba\x0d\xce\x20\x06\xe9\xc3\x94\x0b\x4d\x5a\x56\xaa\xcc\xdc\xab\x02\x71\x86\x89\x81\x63\x60\xf1\x88\x52\xfd\x19\x98\xa9\x9f\xce\x9a\x04\xda\x3f\x5e\x23\xaf\x94\xc6\xe8\xa5\xba\xdf\xd3\x93\x04\xb9\xe2\xa3\x76\xa1\xf9\xba\xc0\x9a\x85\xbd\x04\x24\x76\xe2\x6b\x58\xec\x73\xf1\x23\x6d\x41\xab\x4b\x4e\x7a\x54\xde\xf9\xd6\x6a\x38\xf8\xe5\x46\xde\x7b\x38\x8e\x1e\x7d\x66\x81\xe5\xe2\xa0\x96\xf1\x60"}, +{{0x69,0x5c,0x96,0x0b,0xbb,0x0d,0xd5,0x7f,0xfa,0x36,0x15,0x1c,0x85,0xde,0x73,0x51,0x54,0xfe,0x5a,0xd5,0xf5,0xfc,0x77,0xd0,0x05,0xa0,0xa3,0x20,0x11,0xde,0xb3,0x0c,},{0x34,0x12,0x5e,0x4e,0x21,0xf7,0x89,0xed,0x0e,0x11,0x80,0xc1,0xf6,0x36,0x9c,0x72,0x1d,0xca,0xe9,0x85,0x9b,0x6f,0x7b,0x04,0xf9,0x57,0xe5,0x10,0x01,0xee,0xde,0x8a,},{0x4a,0xf4,0x1c,0x55,0x4d,0x99,0x08,0x12,0x68,0x6c,0x32,0x9a,0x87,0x5c,0x41,0xee,0x24,0xb4,0xa7,0xfd,0x7b,0x3d,0x4f,0x8c,0x8d,0x52,0x75,0xf2,0xe7,0xcb,0x24,0x2b,0x25,0x8b,0x58,0x58,0xa4,0x66,0xde,0x59,0x5c,0xe2,0xa2,0x17,0x7e,0x35,0x1c,0x7f,0x08,0xc7,0xfc,0x4e,0x0b,0xf9,0x7e,0xc5,0xfb,0x2d,0xcb,0x82,0x52,0xd2,0xc9,0x0a,},"\x37\x06\x69\x6c\x7a\x90\x66\x90\xd0\xd3\xb7\x1e\x7e\x21\x1c\x7b\x06\x71\x68\xf3\xa8\xf1\xed\x98\x4a\x0a\x5e\x60\x78\x59\x76\x62\xe4\xe7\x88\x9d\x52\xdb\x0f\x78\xe0\xd5\xef\x0e\x5f\x7a\x0a\x0f\x42\x63\xb6\x84\x8b\x07\x25\xca\xa4\xb1\xce\xa6\x98\x74\x09\x51\x1c\x8e\x5e\x98\x2d\x3f\x5b\x82\xbb\x56\xa4\xa7\x94\x71\x21\x93\x7f\x8e\x10\x5c\x5a\x14\xb5\x3e\x6c\x37\xcc\x71\x6b\x1e\xba\x92\x24\x21\x82\x8b\x04\x6f\x68\x56\xc4\x4f\xab\xf1\x3a\x75\x16\xc6\x2a\x5f\xf9\x85\x68\x45\x0c\xee\x78\xb1\x40\x33\x50\x47\xbf\x1c\xa7\x7e\x15\x49\xa8\x94\xfe\xeb\x07\x80\x45\xe4\x64\x18\x32\x25\x3b\xf6\x95\x48\x54\x52\xec\x36\x90\x65\xa6\x00\x29\xa6\xc9\x07\x7a\x37\x9d\xb2\x04\x85\xea\x2e\xdb\x6c\x96\x95\x47\xbb\x26\x53\x28\x9b\xc6\xe8\x1f\xfc\xb8\x4b\xdb\xf7\x73\xdd\xea\x4b\x37\x50\xe9\xa7\x23\x95\xd1\x17\xf6\x44\xb0\xe2\x20\x61\xd4\xf3\xbb\x7c\x5b\x61\x2e\x4b\x70\x39\x5e\x07\x79\x51\x6b\x46\x65\x91\x16\x90\x2f\xd0\xfb\xcd\x23\x40\xee\xa4\x5e\x9c\x23\xdb\x25\x64\xa5\xe1\x1d\xc7\x9e\x8f\x4b\x33\x2a\x44\x3e\xc3\x5a\xad\x96\x04\xfe\x79\x12\x52\x08\x82\x95\xe8\x4f\x65\xa3\x07\x31\x25\x50\xd9\xeb\xf6\x1f\x36\x7e\x4a\x0f\x2b\x56\x23\xe5\x3e\xf6\xbc\x13\x28\x25\xfc\x24\xeb\xee\x4e\xbf\x33\x8c\xbf\xb5\xdf\x69\xb3\x2d\x03\x0d\x44\x7c\x44\xf3\x13\xba\x96\xfe\x07\xbb\xfe\x5b\x01\x66\xea\xec\xbc\x61\x9b\xb6\xb2\xe5\x92\x40\x10\xba\x3e\xc1\x50\xff\x6a\x69\xfe\xc4\xde\xd9\xc4\x42\xf9\x8c\x15\xe7\x7f\x31\x9b\x48\x43\xb3\xb7\x48\xb5\xd2\x60\x89\xa7\x6c\x2b\x83\x4f\xf9\x3c\x41\x3e\x04\xca\x95\x50\xcd\x21\x1c\xe2\xd6\xa5\x83\xd7\x82\x57\x50\x66\xdb\x6d\xd3\x3e\x8d\x5e\x83\x74\x35\x5d\x06\x8a\x5e\xb9\x6f\x8b\x3d\xa8\xdd\xdf\xb5\xba\xf5\xc5\x96\xda\xaf\x55\x6a\x8f\x2c\xb5\x78\x1e\x50\x42\x32\x7f\x92\xae\x06\x21\xea\xe0\x88\xb5\xf0\x13\x59\x2e\x77\x87\x3a\x81\xd7\xe0\x68\xd7\xb8\x33\x7d\xb9\xf1\x09\xa8\x35\xb4\x75\xe5\xca\xf7\xce\xa5\xaf\x3b\x4a\xd6\xd9\x0b\xaa\xf1\xc7\x36\x55\xec\x67\x67\x47\xfc\xdd\x41\x77\x5b\x4f\xbe\x39\x24\xc3\xf4\x1d\x8a\x73\x75\x28\xd1\x2d\x61\x56\x65\x3a\x22\x35\x8c\x68\x21\x42\x6b\x2c\x0a\x33\xe1\x63\x4c\x62\xc7\xc8\x38\x56\x49\xbc\x23\x3e\x7d\xaf\x94\x39\xf0\x9d\xb9\xbd\x11\xea\x01\xe2\x8b\x77\xec\xbb\xc4\x59\x0e\x29\xfd\xcf\x0f\xdd\xe1\x52\xf6\x47\x81\x32\xfe\x4c\x3a\x5b\x45\xa7\x30\x5a\xf6\xe3\x81\xca\xdd\x72\x49\x6e\x66\xbb\xb8\x66\xce\xa4\x7f\x7e\x7d\x7e\x63\x34\x16\x00\xaf\x3f\x49\xce\x9c\x9e\x4e\x37\x39\x4d\xf5\xdf\x71\xdc\x10\xcd\x39\x1f\xdc\xb8\xa1\x93\xdc\x98\xfc\x19\x05\x9f\xa3\xac\x23\x0e\xc5\x47\x6b\xf9\x4d\x85\x55\x6a\xce\x6e\x1b\xa3\x24\x21\xbf\x59\xdc\xbe\x05\xc5\xe1\x5d\x34\xc6\x64\x4e\x27\xd0\xa0\x2b\xe9\x7f\xa8\x38\x7e\xe0\x37\x06\xf2\x2a\x8f\x4b\x3b\x40\x40\xad\x7d\x3f\x8a\x86\x97\x1a\x20\xa0\x9e\xc8\x1b\x76\x96\xd8\x34\xc5\x26\xb8\xe5\x1c\xb9\x7d\x27\x64\x3f\x9a\xbf\x5e\x29\xff\xd0\x33\x3f\x95\xde\x15\xd1\x10\xc2\x06\x4c\xa4\x94\x67\xc1\x4e\xf2\x27\xf4\xba\xbf\x1a\x55\xe7\xb1\xcd\xa0\x42\x9c\xff\x25\x6b\xe3\x1c\xf1\x16\x71\x9a\x81\xb9\xc5\xfb\x75\xfd\xf6\x4e"}, +{{0x25,0xcb,0x17,0xfc,0x33,0xd2,0xbf,0x83,0x84,0xae,0x4d,0xf2,0x0c,0x1f,0xad,0x5c,0x35,0xfd,0x76,0x5a,0xff,0xde,0x04,0xb5,0x25,0x6d,0x4d,0xe0,0x1c,0xa8,0xde,0x14,},{0xb8,0x6c,0xa3,0x12,0xfe,0x59,0x85,0x20,0xc6,0x4b,0xe5,0xc7,0x2f,0x5b,0x23,0x81,0x65,0x07,0xf6,0x9e,0x07,0x0f,0x82,0x8e,0x02,0xd2,0xaf,0xcf,0xe1,0x1b,0xfa,0x01,},{0x8c,0xcb,0x0d,0xbc,0xf7,0xcc,0x03,0xe8,0x3e,0x21,0xc5,0x74,0x74,0xaf,0xd3,0xad,0x88,0x98,0x09,0x7b,0x97,0x2e,0xde,0x17,0x5a,0xca,0xae,0x48,0xe3,0xec,0x17,0xb2,0xdb,0x06,0xfc,0x82,0x77,0x6b,0x07,0x51,0xc0,0xf9,0x56,0xfd,0x71,0x96,0xf3,0xd1,0xc9,0x63,0x21,0xa6,0xcf,0x3d,0x89,0x24,0x15,0xd8,0xf8,0xee,0xb4,0xa1,0x41,0x08,},"\x4b\x4a\x71\xcb\xf8\xcb\xaf\x57\xa7\x7d\x4e\xa1\x88\xa6\xf9\x64\x84\x0f\x0d\x71\x4a\x5f\x38\xa0\x95\xa1\x3b\x4e\x57\x12\x97\xa8\x8b\x79\x24\x17\xd1\x61\x84\x42\x7f\x90\xe0\x43\xdd\x8a\x55\xb7\xf1\xc1\x3e\x00\xdf\xa6\x05\x16\x44\x5c\xbe\x77\x06\x8c\x79\xc8\xc3\x5e\xbe\xac\x33\x0c\x33\xf1\x12\x1d\x05\x73\x1a\x8f\x51\x32\xd6\x48\x00\x73\x27\x46\x41\x19\x5a\x75\x20\x21\x16\xff\xf1\xc3\x18\x81\x71\x78\xfd\xd7\x68\xbb\xdf\x10\x5f\xa0\x69\xc7\xa3\xd1\x43\xfd\xf5\xd1\x7b\xfa\xd7\xc0\x62\x4e\x52\x92\x06\x8f\xd7\xbb\x6d\x30\x3b\x4a\x27\xcb\x20\xa4\xe6\x18\x75\x07\x67\x87\xd1\x9f\xa6\xf7\x29\xc9\x4d\xc0\xba\x9b\x8c\x0b\xfd\x98\x66\xda\x5c\xb2\xe7\xa2\xcd\x2e\xdb\xdc\x95\xac\x34\x9e\x5e\x5c\x21\x72\xe5\xa4\xcf\x7b\xd9\x0c\xab\xe2\xc6\xe2\x24\x59\x80\xbd\x72\xd0\xf6\xf5\x47\x98\x81\xe8\xc4\xc3\x54\xf6\x8a\xa7\x28\x41\xd0\xc7\x3b\x98\x6b\xa5\x10\x21\x20\x31\x61\x02\x6e\xe3\xd7\x29\xdd\xf1\xa0\x49\xff\xe9\xeb\x25\x43\x98\x02\xf0\x30\x11\xd1\x44\xe5\x0b\x02\xbd\x4a\xca\x5e\x55\x06\xd3\x2f\xcf\x69\xe3\x2f\x54\x25\x44\x79\x8f\x4e\x87\xf7\x2b\xdf\x24\x33\xb1\xff\x32\x59\x29\x2e\x1d\x90\x81\x2c\xff\xd7\x9f\x6a\x54\x32\x70\xba\xf2\x4a\x3c\x39\xdd\x35\x98\xe1\xc6\x61\x61\x29\x22\x52\x2f\x38\x7d\x51\x59\x76\x92\xf3\x14\xc4\xd5\xac\x4b\xf1\x88\x3a\x61\x46\x36\x33\x6a\x55\x44\xd5\x9f\xf4\x1d\x1e\x0d\xbc\xf8\xe6\x62\x7e\x7c\x80\x85\x64\x63\x22\xdf\xc2\x0c\x33\x2c\xbd\xf3\x53\x70\xd4\x7d\xca\xbb\x80\x2e\x17\xca\x84\x78\x0e\xec\x66\x1c\x90\x4d\x5b\xfb\xc2\x40\xad\x6a\x14\xa7\x53\x3f\x71\xa2\x75\x00\xc6\x1d\xd3\xe4\x73\x98\x38\x87\xa8\x68\x35\x18\x7a\xbb\x0d\xf0\x8f\xa6\x2c\xda\x69\xdc\xe8\x6e\x21\xfa\x5a\xe9\x54\xc2\x2e\xdd\xb6\x0e\xe3\x13\x15\x04\xa6\x9b\x50\x48\x6a\x17\x76\x70\x91\x88\x37\x60\x63\x8a\x29\xc3\x80\x30\xe1\xe0\x5f\xdb\x28\xe1\x58\x63\x30\x10\x38\x5a\x62\x06\x13\xcc\x10\xd5\xa5\xf3\x50\x95\x5f\x4a\x34\x7c\x65\xed\xdd\xb7\xe2\x51\x59\xda\x8d\xcc\x26\x55\x92\x8a\xd6\xf6\xd8\xc4\xc1\xab\xb8\x17\xd7\xfe\xf3\xba\xe5\xde\x04\x02\xed\xde\xe7\xb5\x15\x21\xce\x28\x0a\x66\xb7\x96\x14\x0f\x56\xaf\x9b\xc2\x0e\x46\x58\x75\xce\x26\x28\xa8\xa1\x04\x77\xce\x9b\x2e\xac\xc7\xd8\x6f\x88\x27\x24\x57\xbf\xd4\x43\xe7\x12\x52\x69\x96\x25\x43\x80\xf0\x13\x52\x27\xe9\xfc\x15\x1c\x86\x95\xe9\xcc\x64\xd2\x72\xb2\x56\xab\x95\xc9\xa9\xf5\x68\xe9\x37\x16\xe0\xe5\x3d\x29\x88\x2e\x3c\xe7\x42\x61\x25\x7a\x02\xcd\x49\x7c\x37\xd7\x64\xd9\x0f\x7f\xd4\x78\xa1\x7a\x89\x0a\x8b\x2e\xa6\x1a\xb8\x1f\x68\x69\xb1\x20\xa2\xf6\x48\x4a\x88\xc1\x51\x95\x33\x91\xec\xa4\x45\x01\x53\x77\xb3\xa5\xdf\xfe\x4c\xfb\xac\xfb\x5b\xab\x2c\x47\xf6\x54\xf7\x2a\x9d\x19\xcb\xc4\xd2\x95\x37\x19\x84\x05\xe3\xa0\x4b\x4b\xfe\x11\xbc\xdb\x5c\x1f\x30\xd9\xac\x02\xf5\x48\x49\xc5\x7a\xa9\x6f\x7b\x56\x63\x61\x16\xf2\xbb\x6f\x25\x83\xd9\xaf\x94\xc8\x6a\xff\x5c\x13\x7f\x63\xce\x54\xe8\xf0\xc2\x1b\x6c\x25\xc1\xf0\x47\x2a\x22\x9c\x90\x81\x7e\x61\x62\xea\xc7\x1c\xcd\xa3\x09\xa1\x64\x3b\xd6\x31\x2a\x52\x63\xa2\xef\xe6\x46\xdf\xfe\x79\xeb\xd8\x15\x7a\x28"}, +{{0x49,0xe2,0x4d,0x16,0x99,0x83,0x37,0x26,0xb1,0x8c,0x78,0xea,0x65,0x68,0x40,0x1a,0x97,0x1e,0x1c,0xa3,0x9d,0xd0,0x6d,0x75,0x63,0xac,0x8b,0x42,0x50,0xd4,0xa9,0xf5,},{0x71,0xcf,0x05,0xe9,0x0d,0x30,0x1a,0x6d,0x9f,0xad,0x7f,0x0b,0x38,0xec,0x8b,0xb0,0x44,0xfc,0xfd,0x97,0xc8,0x49,0xb0,0x4c,0x00,0x36,0x25,0xde,0x29,0xbe,0x86,0xbb,},{0xa0,0xb6,0xa2,0xaf,0x15,0xb6,0xbe,0x9e,0x95,0x1e,0xf3,0xf3,0x2c,0xbd,0x1c,0x67,0x02,0xe8,0xe0,0x17,0xfb,0xd3,0x15,0xa3,0xf2,0x59,0x9c,0x3f,0x1a,0x11,0x86,0x5d,0x46,0xe7,0x84,0x59,0xa0,0xd7,0xf7,0xbe,0x04,0x6a,0xae,0x29,0x3c,0xad,0x09,0x13,0x7e,0xc8,0x47,0xe2,0x69,0x28,0x10,0x6d,0x9a,0xa3,0x5e,0x09,0x82,0xb9,0x92,0x02,},"\x6d\x26\x05\xf6\x1e\x1a\x04\xb6\xae\x18\xc2\xc2\x5a\xe1\x00\xdd\x42\xa6\x1e\x66\x4e\x2d\xb5\xc3\x4d\x7a\xd1\xf8\x4a\xc5\x07\x55\x2b\x74\x1c\x20\x86\xc1\x7c\x85\x2b\xab\xe0\x7a\x91\xe1\x29\xa5\x06\xee\x59\xed\xb9\xce\x73\xbe\x1b\x1d\x06\xd1\x20\xec\x36\xa1\xe9\x4c\x62\x81\x05\x4e\x78\xce\xb1\xbd\xef\xfb\xcb\xf4\xf0\x10\x51\xed\x38\x1b\xfc\x8a\xd1\x76\x9f\x41\xe2\x40\xbf\x60\x59\xd9\x70\x4c\xac\xec\x66\x66\x11\xf4\x1e\x4d\xd4\x38\xb7\xf5\x02\x42\xea\x86\x75\x6b\xb1\xf8\x1e\x59\x42\xc0\x92\x12\x9f\xbc\x6d\xe4\x95\x5d\x28\xdf\xf3\x52\x37\xdb\x30\xe4\xa5\x03\x6a\x99\x14\xc9\xf8\x4d\xbd\x8c\xcf\x82\xba\x2b\x1b\x3b\x55\x54\xa2\xb7\xa7\x4c\xb0\xb2\xa1\xe1\x96\x33\x45\x28\x6e\x25\x8d\xc8\xe7\xd5\x67\x18\x03\x5f\x95\xf3\x13\x81\x1c\xfb\xd8\x52\xa0\xf8\xf4\x9a\x29\xef\x93\x3e\x7c\xda\x7e\xd9\xc7\xe8\xb1\x62\xcd\xba\x1a\x82\x26\x2c\xd4\xdf\x7c\xf8\xea\x4b\x58\x6d\xb4\x3d\xcc\x1e\x37\x64\x59\x8e\x9c\xa4\x66\x73\x82\x2b\xaa\x2a\xd8\x7f\xb1\x4b\x6f\xdb\x9e\x20\x32\xd0\xca\x51\xc2\x6c\x5e\xf3\xd9\xf7\x97\x85\xfa\xc2\x49\x1c\xdb\xf7\xc3\x99\xf3\xcd\x17\x74\xc1\xa6\xb1\xe4\xa6\x7f\x54\x36\xd8\x0d\xb0\x25\xf8\xfb\x64\x09\xe2\x75\xbd\x0e\xd5\x08\xb5\xe0\x39\xed\x2e\x4e\xec\x8b\x0f\x4d\x5b\xe9\x9d\xca\xfa\x6a\x14\x01\x25\x27\x32\xa6\x5b\x37\xc9\x43\xc0\x7e\xf3\xac\xbc\xfb\xb3\xdc\x06\xda\xd0\xa8\x8f\x2f\x5e\xb5\x51\xa3\x99\x7a\xd6\xc6\xee\xd9\x5e\xdd\x9a\x0a\xf4\xa2\x88\xd5\xe4\x32\x86\xb2\xac\x07\x29\x77\xc4\x36\xb7\xc5\xff\x7a\xb6\x1c\x94\x84\xf2\x57\xf5\x8e\x01\x0c\x9b\x6a\xd4\x15\x81\xd7\x42\xcd\x19\x75\x2c\xde\x54\xd2\xb4\x20\xd6\x43\x65\x4e\x90\x96\xa8\x1e\xb9\xdc\xf8\x04\xc7\xc2\xed\x0e\x38\xd1\x3a\x5c\xe3\x99\x78\xcd\xd0\x2b\x25\x35\x09\x45\xde\x78\xfe\xec\xc0\xc2\xc2\x2f\xfd\x70\x5c\x3b\xa8\x11\x32\x65\xc7\xb9\xa7\xc8\xdd\xb5\x91\x78\xbd\x21\xd7\xf6\xc3\x1c\x6b\xe2\xc3\x67\x49\xee\x0f\x9a\xb8\xbc\x1d\xcf\x5d\xa5\xcb\x2d\x2d\x59\x62\x35\x8f\x71\xf9\x6a\xb3\x79\x2a\x25\x2a\x51\x9e\x41\x53\x51\xf4\x3e\x7e\x12\x03\x5b\x03\x28\xf2\x82\x08\xcf\x4b\xe5\x29\xd2\x99\xaa\x5c\x12\x8c\x9d\x5e\xd5\x75\xbf\x90\xc5\x35\x05\x69\xea\xa6\xf2\xd5\x52\x1d\xe1\x18\x03\x09\xf6\x86\xc9\x7e\x9a\xd6\xfa\x1e\xc1\xdd\x86\x27\xae\x89\x51\x58\x1c\xf6\x04\xb8\xb9\x17\xc5\xba\x43\x4a\x63\x7b\xe1\xbc\x8b\x79\xf4\xac\xaf\x77\x95\xf4\xe5\x1a\xab\xdb\x88\x50\x77\xbc\x4f\x3c\x68\xfc\x33\x18\xde\x58\x23\xd7\xe0\x80\x4e\xe9\x95\xb7\x03\x87\x95\x0f\x79\x93\x53\x68\x23\x00\xd4\xe7\x97\xf3\xca\xd6\x11\xb4\xc5\x62\xc8\x64\x0f\xf2\xb3\xfe\x29\x29\x16\xa9\x70\xfb\x98\xc1\x47\x5c\x1f\x4e\x27\xb9\xb3\x3c\xfe\x0d\x3a\xd9\x32\xa1\xeb\xe6\xa2\x7f\xc3\xb4\x46\x62\x29\x54\xae\xe1\x68\x36\x68\xc8\xbd\x4a\x3f\x90\x3b\xe5\xc7\x7d\xfd\xb8\xe8\x91\x4c\xed\xc5\x1f\x65\xfe\xd2\xd9\xc4\xd0\x3e\x13\xa6\x68\xd4\xc7\xea\x5e\x31\x88\x3e\x1b\x3d\xb6\x43\x63\xe2\xac\x5c\xc5\x4b\x54\xce\x69\xc6\xad\x52\xf8\x74\x99\x9b\x5d\xd2\xc5\x78\x2f\x03\xc3\xd5\x15\x05\xdf\x53\x6a\x1f\xe0\xd8\x60\xd3\x3e\xab\xed\x64\x1a\x94\x00\x89\xf1\x29\x7d\xd0\xf5\x7f"}, +{{0xf8,0xff,0x97,0x03,0x2a,0x34,0xcf,0x99,0x99,0x08,0x80,0x58,0xaf,0x56,0xff,0x70,0xb6,0xac,0xb2,0xed,0xf7,0x59,0xe1,0x31,0xfa,0xec,0x84,0x40,0xfd,0xec,0xf6,0xc4,},{0x54,0x38,0xb4,0xe3,0x3f,0x1c,0x5e,0xa1,0x12,0xfb,0x1b,0xaf,0xef,0x40,0x59,0xbf,0x09,0x5a,0x11,0x40,0x9b,0x64,0xd4,0x6b,0xfb,0x4d,0x25,0x47,0x3c,0x1c,0x08,0x74,},{0x50,0x9e,0x9e,0xad,0xfe,0x8d,0xde,0x79,0x14,0xac,0x20,0xca,0xfc,0x0b,0x0a,0xf2,0x2b,0x84,0xdd,0x8a,0x21,0x0a,0x48,0x12,0xcd,0x8c,0xae,0x39,0xb0,0xa2,0x72,0xe5,0x3e,0x02,0x24,0x6d,0xc8,0x93,0x9e,0x92,0x26,0x92,0x03,0x36,0xe1,0x40,0xb3,0x15,0x32,0xd0,0x68,0x13,0x7a,0x34,0x16,0x1e,0x59,0x9a,0x86,0x94,0xa9,0x5d,0xdf,0x01,},"\xdf\xb4\x1f\xb9\xd5\x37\x02\xcb\x2b\x9e\x3f\xfc\xad\x4e\xa6\x02\x71\x6f\x71\x8a\x7e\xa3\x3e\x21\x84\x3e\x2a\x6c\x05\x2c\x70\xc6\xc5\x14\x85\xd7\x2b\x53\xa5\xbb\x4e\x34\xe0\x3e\x3e\x1d\x1a\x52\x51\x8e\xb3\xe7\xf1\x8f\x2a\x1e\x1c\xaf\x78\xac\xb2\x11\x60\x89\xbe\xd4\xc6\x17\x13\x8e\x71\x6a\x91\x43\x1f\x2c\xf6\x44\xa1\x21\x0f\x6d\x19\x20\xd2\x85\x99\x42\x64\xd6\x46\x6b\x0d\x8d\x2c\x62\x63\x80\x44\x61\x6f\x57\x6e\xdc\x7d\x0d\x93\xcb\x66\x01\x31\xd4\xbb\x50\x87\x5e\x15\x36\x40\x12\x3a\x96\xf1\x5b\x75\xa5\xbc\xee\x46\xd5\xcc\x5e\xb1\xa4\x31\xc5\x9d\x2e\xad\xdf\xd5\x53\x15\x02\xfe\xb1\x55\x1b\xf7\x79\x1c\xd5\x98\x9d\x17\xd1\x02\x96\xd0\x1b\xa3\xae\x3e\x38\x4c\x67\x45\x26\xca\xb6\x2a\x7c\x24\xc0\xff\x67\x7d\xe7\x1c\xa1\x72\x62\x1a\x28\xa8\x5e\x01\xee\xfe\x07\xf6\xee\xf9\xc3\xec\xfd\x7f\x94\x98\xac\x42\xf4\x6a\x43\x71\x6f\x61\x53\x18\xa3\xb2\x87\x57\xc3\xa1\x5f\x4f\x1c\x38\x22\xae\x7a\x75\xc2\x03\xa2\x98\x25\x8d\x75\x36\x38\xcf\x42\x5e\x15\xbb\xc4\x62\x02\xb0\x93\xb8\xe4\xf3\xe6\x70\xfb\xb6\x63\xdb\x2b\x69\xc8\xfb\x0f\x62\x50\x74\xd8\x5a\x44\xd3\x50\xe0\x42\xbb\x1b\x74\x02\x1d\x19\x29\x97\xa2\xc2\x7d\xd6\xc8\x63\x48\x41\xd1\x00\xa0\x34\x4b\xae\xd7\x50\xa3\x9f\xf5\xdc\xd9\x84\x8d\xfc\xf0\x9e\x5c\x8c\x47\x96\x7b\x96\x55\x6e\x23\x32\xca\x17\xd8\xe4\x2d\xd8\xf3\x93\xa5\x44\x5a\x37\x22\x44\x60\x0b\x30\x01\xb8\xfe\x86\xc4\x5e\xaf\xc6\xe7\x38\xaa\x7e\x11\x7b\x4a\x79\xfa\x2e\x6b\x00\xf4\x64\x92\x8d\x18\x56\xc8\x3e\xcf\xe8\x7d\xd3\x4d\x15\x8f\x5c\xb4\xe4\xf4\xd6\x10\xf5\x97\x17\xec\x79\x0b\xd3\xff\x87\x20\x40\xb6\x7e\x8d\x39\x39\xe8\x04\xe3\xb5\xdb\x98\x5a\x09\x56\x21\xcb\xcc\xd6\x86\xc0\x93\x4e\xce\x3e\x27\xab\x2c\x6c\xe3\x3f\xb5\x2b\x11\x1f\x48\xe4\xf2\x74\xbd\xf3\x20\xd0\xb0\x23\x84\xc8\x3c\x49\xe1\xa0\x41\xbd\x23\x19\x10\x9c\x85\xa0\x6d\x80\x48\xa9\x93\x35\x7a\xbf\xd8\x11\xac\x2f\x38\x05\x9d\x07\x7a\xcb\xc3\x6a\xa9\x66\xc0\x28\x90\x37\x48\x62\x5f\x92\xe8\xf7\x9d\x51\xbd\xa1\x0f\x78\x52\x29\x77\xf7\x6e\xc4\xe8\x85\xe4\x9a\x46\xc6\x8d\xe0\x9f\x3d\xa8\xf8\x6b\x71\xae\x64\x23\xbd\x29\xde\xef\x1c\xc6\xa1\x13\xea\xc1\x15\xa6\xcd\xe2\xcc\xd0\x11\xfc\x1c\x0f\x0e\x34\x27\xf4\x3c\x3e\x96\xfc\x41\x56\xed\xf6\x2d\xdf\xb7\xb0\x83\x6b\x88\x8b\xab\x3c\x43\x45\x05\x5a\x6c\x41\x78\xe9\xe2\x28\x29\xfd\x8c\xfc\xe3\x9b\x0b\x84\x44\xeb\x26\x48\x7c\xc9\xdc\x82\x60\x6f\xea\xad\xaf\x49\x78\x69\x4e\x65\x64\xf2\x72\x9c\x1b\x13\xab\x37\xc9\x07\x2d\xb4\xe9\xde\x94\x0e\xe5\xf1\xd0\x58\x84\xae\x7f\xd9\xd9\xec\x9c\xb7\xde\x56\x34\x76\x00\xa8\x8d\xea\x92\x08\xa6\x34\x19\xfc\xe2\x9e\xe5\x00\x55\xa3\x74\xa8\xf2\x2f\x9a\xe2\xbe\x98\x05\xa9\xf4\x76\x15\xaa\x59\x57\x6b\x44\x04\x2f\xf1\x26\xa8\x98\x24\xe3\x6a\xd6\xbc\x58\xe0\x6b\xb9\x0f\xbe\xef\xba\xe5\xd6\xd7\xd6\x24\x30\xf3\x73\xb6\x29\x6f\xbf\xcd\x4d\x66\x20\x16\x83\x53\x58\x3f\xbd\x3d\x5a\x29\x2b\x95\x72\x51\x75\x34\xe2\xfb\x0b\xee\xf2\xfa\x98\xa4\x64\xe5\x91\x03\xe7\xa0\x42\x87\xf1\x5d\xad\x0f\xac\x54\x97\x0e\x77\x15\x07\x8d\x63\xec\x26\x36\x2f\x6f\xba\xbc\xdd\xea\xf7"}, +{{0x2e,0x4c,0x39,0x21,0x9f,0xc9,0x2a,0x53,0x8e,0x48,0xe9,0x5f,0xbf,0xcf,0xef,0x30,0xf5,0xa2,0x1b,0x78,0x94,0x0b,0x81,0x05,0x3b,0xda,0xd4,0x60,0x2b,0x4c,0x96,0x90,},{0xf8,0xee,0xd8,0x92,0x17,0x66,0x20,0x43,0x4c,0x7f,0x0e,0xc5,0x3d,0xcf,0xf3,0x98,0x63,0x10,0x9e,0x7c,0xa4,0xd0,0xb3,0xc6,0xc4,0xb5,0x64,0x10,0xbe,0x01,0xe5,0x37,},{0x39,0x45,0x20,0x12,0x2b,0xb0,0xa5,0x64,0x64,0x8a,0x7a,0x8b,0xc8,0xdc,0x73,0x63,0x6c,0x51,0x77,0x46,0xa3,0xc8,0xa0,0x5b,0x90,0x1e,0x72,0x52,0xfe,0xf0,0xe5,0x02,0x3d,0x90,0x99,0x1e,0x31,0x1b,0x53,0x82,0xd4,0x91,0x00,0xe5,0x26,0x33,0xc7,0x0f,0xe9,0xc2,0x6c,0x14,0x50,0xe0,0x60,0x3e,0x6d,0x45,0x22,0x99,0xaf,0x4d,0xae,0x07,},"\xc8\x7d\x1f\xba\x9d\x94\xa6\xa5\x40\x89\x80\xfc\x80\x83\x98\x0f\xd2\xd2\x52\xfa\xe5\x40\xf6\xee\xc1\x9e\xd6\x74\x6c\x29\xe3\x39\xa1\xc2\x9f\x6f\x53\xbc\x23\xfd\x6b\xfa\x43\x85\x07\xef\xf5\xda\xf9\x03\x40\x3c\xda\x70\x7b\x4d\xc5\xe8\x44\x80\x5d\x6b\x1c\xeb\x4a\xff\xf4\xb2\x32\xe8\xe6\x9d\x7d\x27\x1f\x3c\x06\x7c\x48\x54\xf3\xd9\x4f\x27\xfe\x32\x55\x81\xfa\xca\x79\xd1\xf0\x2a\x26\x29\x0a\xd2\x3a\xf7\x11\x00\xc1\x2c\x09\x15\x76\x47\xca\x9d\xa4\x3d\x76\x90\xdd\xcd\x94\xdb\x65\xe0\x00\x98\x9c\x87\x8b\x75\xa0\xff\x22\xd2\xc7\x09\x62\x59\x4c\x9b\x08\x08\xf2\x78\x46\xcc\xac\x85\x67\xbc\xe5\xd2\xe3\xb7\x60\x28\x09\xf2\x3b\x59\xcd\x71\x8a\x08\x05\xd1\x08\xf3\x1a\x63\x2a\x05\xb8\xdf\xa5\x03\x5a\xb9\x46\x1a\xeb\xa4\x16\x00\x9d\x74\xfd\xf9\xe0\x07\x20\x28\x56\x89\x0d\x2c\xff\x80\xfa\x24\x0b\x97\x8a\x48\x27\x0f\xcb\x2f\x47\x36\x97\xbc\xba\x8e\x73\x0a\x55\xc2\x87\x61\x91\x9a\x23\xbe\x41\xda\x27\xff\xea\x09\xe3\x55\x9c\xaa\xab\xf9\x51\x9e\xc0\x8e\x1f\xfa\x86\x81\x7a\xa3\xe8\x87\x4f\xa8\x16\xe7\x71\x8c\x5b\x2f\x34\x49\x67\xba\x1b\xc2\x81\x9c\x4f\x04\x5a\x97\xb4\x05\x44\xea\x61\xd7\x17\x08\x3c\xca\xf1\x1e\x9d\xdc\x04\xa3\x59\x8e\xf1\x81\xe7\xbe\xf4\xac\xef\x45\xb6\x55\x1b\x47\x8a\x0d\x77\x31\xc4\xf0\x8c\xe5\x80\x2f\x78\x25\x8d\x41\x90\x17\x66\x10\x76\xd7\xd6\xd2\xef\x39\xe5\x7c\xf9\xcd\x93\x97\xdc\xc5\xde\xbf\x64\xab\x82\xb6\x61\x59\xf5\x78\x31\x6e\x74\xcd\x49\xf5\xad\x2c\x6f\xef\x83\xcf\x08\x68\x3b\x95\x70\xa9\x46\xad\x49\x03\xdf\x4e\x96\xec\x00\x8e\x14\xa5\x01\xfa\x93\x86\xbd\xaf\x2a\x63\x99\x3c\x6c\x9b\xdf\x23\x1f\xd0\x9e\xa6\xf9\x6e\xf4\xd4\xe2\x9a\x3a\x33\x27\xcb\xf7\x4e\xa8\x31\x05\x4e\x66\xca\x86\x68\x0c\x6c\xe5\x3b\x66\xf9\x46\x5d\x06\xb3\xfa\x07\x98\xbb\x69\x05\xae\x38\x45\x59\x34\xf2\xfb\x7e\x0b\xa4\x72\x32\x89\x89\xf0\x01\x30\x86\x71\xcc\xcb\x56\x6d\x22\x2c\x72\x16\x5b\xb3\xa7\x44\xfb\x98\xe2\x21\x0f\x96\x20\x68\x0d\xf3\xe3\xcd\x14\xa8\xbd\x94\xb5\x74\x5c\x00\x16\xdd\xa7\x7f\x05\x9f\x26\x05\x3b\x64\xcf\x45\x23\xc3\xd4\x29\x11\x2f\xb6\xb3\x28\x39\x8b\xc6\x30\xa2\xe9\x06\xb9\x5a\x6c\x57\x80\xcf\xdc\x06\x41\xbe\x47\x51\xbe\xbd\xdf\x77\x24\xdc\x9c\x27\xe7\x8d\x60\xed\x0f\xd7\x36\xd5\xab\xd8\x89\x29\xc1\x79\x5d\x47\x3a\xbd\x2b\x03\x20\xc5\x40\x47\x57\x28\x82\x18\x67\xa4\x09\xa2\xff\x13\xcc\x44\xce\x35\xe5\x98\x1e\x9f\x6b\x87\xa2\x8d\x4f\xa8\xb8\x67\x5e\x50\x3f\xae\xfc\xa7\xc1\xd7\x98\x47\x37\x87\x1f\xe9\x19\xac\x41\x4e\xea\x26\x5e\xe3\x1f\x9f\x78\xf5\x21\xf3\xf4\xf8\xd0\x0c\x3f\xb7\x91\x71\xf3\xc6\xa5\xdb\xf5\xe1\xac\x8b\xf6\x3b\x4c\x3d\x8d\x8b\xc1\x21\x03\x6e\x9e\x55\xbb\x70\x2e\xa6\xc8\x6e\x92\x5e\xc0\xb9\x84\xde\xd2\xc7\x1f\x3b\xfd\x49\x32\xe6\xc4\x1b\x58\x2f\xd0\x2c\xa5\x9f\x53\xce\x29\x74\x45\x78\x5c\xc4\xca\xc2\x47\xb0\xb8\x4e\x7f\xa0\xbc\xdc\xf7\x9b\x3e\x4a\x15\x5f\x98\x78\xc1\xf6\x43\xbe\x9c\x42\xf7\xa4\xf2\x72\x60\x44\x45\x05\xc1\x84\x5b\xd5\x3b\x55\x0a\x31\xd7\x95\x3c\xc7\x38\x86\x1f\x46\xbd\xf4\x87\x0f\x3a\x77\xac\xe1\x91\xab\xd6\x3c\x45\xad\xb1\x53\x90\x9f\xb5\x9a\xb5\xdb\x9b"}, +{{0xf0,0x92,0xe6,0xbe,0x8d,0x2d,0x9a,0xd0,0x69,0xa3,0xe2,0xb9,0x76,0xd2,0x44,0xe3,0x4c,0x15,0xc2,0x8c,0x48,0xd3,0x2f,0x55,0x60,0xa5,0x41,0x85,0xd1,0x50,0x15,0x02,},{0xcf,0xeb,0x3e,0x74,0xe4,0xb5,0xc8,0x35,0x6a,0x81,0x75,0x7b,0x8f,0x1b,0xe4,0xb4,0x29,0xfc,0x18,0xfc,0xaf,0x49,0x7c,0xbf,0x8d,0x8b,0xc0,0x48,0x0f,0xf9,0x78,0xf9,},{0x63,0xcd,0x4c,0x0b,0xa3,0xbe,0x93,0x97,0xcc,0x0f,0x3c,0x1a,0xf3,0x48,0xec,0x4b,0x8a,0x91,0xe4,0x2f,0xee,0x67,0x5d,0xa1,0xd0,0x59,0x00,0xb9,0xa8,0x6c,0x13,0x8f,0x91,0x74,0xeb,0x99,0x6b,0xbd,0xf3,0x1c,0x42,0x95,0xe0,0xc5,0x78,0xac,0x0f,0x9d,0x53,0x76,0x41,0xa2,0xaf,0xd5,0xdf,0xf9,0x3a,0x39,0xc5,0xcd,0x9d,0x3c,0x48,0x0b,},"\x2c\x25\x5f\xb2\x5d\x45\xb0\x86\xc0\x71\xe0\x3e\x52\x5b\x4d\x72\x85\x78\xfb\xb6\xb0\xc6\x0d\xa9\x41\xe6\xbf\x2a\x48\x98\xb2\xd5\xb6\x98\x8c\x53\x30\x27\x85\xab\x7a\x3b\xc4\xbb\x2c\x20\x5a\xcd\x27\xd6\xa4\xcb\xdd\x1a\x0c\x08\x89\xde\xd7\x84\x26\x4c\xb7\xc0\x28\x89\xc5\xc7\x11\x3f\xc9\x0b\xbb\xcd\x31\xff\x00\x14\x32\xc0\x53\xf9\x71\x07\x3c\xf6\x71\x2f\x66\x7f\xce\x46\x98\x77\x6b\x98\xcc\x54\x44\xc6\x92\xab\xd1\x28\x81\x98\xbe\x5a\xd5\x67\x46\x09\xf7\xe1\x39\xad\x1b\x9c\xcb\x94\x3f\x8d\xfd\x9d\x12\xc5\x4e\xce\xe2\x78\x34\x1b\x2e\xe1\x27\x79\x91\xca\x62\xcd\x3b\xfe\x12\x8d\x13\x92\x96\x4e\x95\x88\xe2\xf9\x7c\x32\x17\x04\xa3\xde\x10\x61\x88\xc5\xeb\x33\x5a\xa5\xa1\x9a\xcc\x90\x67\xb4\xa9\x41\x29\xb9\xd1\xa6\x16\x7c\x4b\xbf\xb5\x6f\xb9\x76\x84\xcb\xbd\x72\x0c\x86\x86\x9e\x00\x20\xab\x07\x76\xcd\xc9\x95\x4f\xeb\xa8\x62\x12\x4b\x07\x3f\xba\x8d\xe9\xea\x9a\x38\xea\xcf\xa0\x03\xae\x4f\x1c\xdc\xbf\x15\xc3\x2f\xb6\xb9\x70\xc7\x31\x15\xdd\xff\xcd\x4f\xa3\xb7\x18\x46\x11\x0e\xde\xc2\x57\xfc\xae\xd6\x11\x36\x04\xf7\x19\x25\x72\x57\x72\x64\xb9\x90\x5c\xa6\xae\xd8\xda\xec\x13\x84\x03\xca\x41\xaa\x95\x42\x78\xa5\x72\x0b\x26\x7b\x90\xca\x16\x3a\x9b\xdf\x44\x7e\xad\xe8\xde\xb7\x69\xa3\xb4\x92\x37\xa7\x35\x16\x97\x7c\x28\x73\x45\x55\xdd\x23\x4c\xa7\xde\x49\x99\x26\x1b\xc7\x96\x0f\x53\x6b\xa8\xa3\x5a\xd3\xd0\x2c\x75\xf1\xc2\xbe\xa0\xa0\x61\x2e\x7d\x49\xc4\x03\x97\xdd\x6a\xf5\xff\x58\xba\xe6\xa6\x4b\x6a\x77\xe9\x81\xf9\x2d\x15\x9e\x0b\x2b\xd2\x05\xab\x15\x70\x52\xf4\x70\x17\xa3\xe1\x8a\xec\x94\x4d\x04\x65\xee\x00\x17\xe9\x61\x48\xa6\x12\x9f\x74\xd3\xcc\xb4\x89\xfe\xa1\x3a\x15\xa9\xb9\xac\xed\x58\xc6\xee\x0e\x6e\x84\xe0\x5f\xda\xdf\xae\x07\xb3\x34\xa9\x8f\xc3\x7f\x7e\x51\x1c\xd5\xa4\x4e\x9c\x74\xe4\x78\xd3\x49\xe3\x0e\x29\xae\xb4\x6a\x4d\xf0\x1e\x43\x07\xfe\x65\xe1\x39\x4a\x75\x8f\x6a\xda\x2f\xb1\x20\x22\x5c\xcd\x50\xa4\x90\x13\xe6\xc9\xf1\x75\xaf\x90\xf3\xfc\x8c\x57\xe7\xa6\xa9\x69\xa9\x16\xc3\xf1\xaa\xcc\x22\xf3\xe0\x1a\x07\x0c\xc4\x8e\x6f\xd8\x78\xe2\xbd\x07\x3d\xf9\xee\x6f\x05\x9b\x98\x56\x84\x04\xfc\x7e\xae\x7d\x4b\xf6\xfa\x16\xc0\xc8\x03\xc6\xbe\x84\xe8\xb7\x9c\x67\xaf\xfc\x8c\x88\xca\xbd\xee\xbc\x11\x34\xbb\x23\x86\xe2\x2b\xa4\xd2\xe9\xe0\xf3\xe1\xab\x3a\x0d\xac\x7c\x80\xdd\xee\xd7\x73\xcd\xa0\xc4\x1d\xc9\xde\xfa\x67\xfe\xa3\x77\x69\xcb\x4a\x1e\x15\x22\xd7\xe0\xb3\xd7\xc4\x63\x8b\xcd\x98\x31\x53\xd4\x78\xbe\x5e\xcf\x2b\x6a\xb1\xb4\x01\x24\xe4\x22\x2b\x8c\xaa\x46\x47\xbd\x50\xd7\x4d\x20\x39\x43\xab\x20\x93\x8d\x5f\x27\xd9\x08\xa6\x73\x67\x40\x46\xce\x2e\xf1\x8e\x85\x8b\x0a\x01\xa7\xe7\x53\x0d\xed\x0f\x8c\xc8\x9e\xf0\x9b\x73\xca\x59\x7c\xf7\x3a\xfb\xc9\xa2\x71\xa4\xd2\x3c\x92\xfe\x59\x18\x83\xc4\x40\x10\x9c\x4e\xf4\x16\x67\x0b\x7f\x2c\x59\x05\xb7\x7f\x65\xf5\x6d\x09\xd4\x02\x50\x35\x6f\x9b\x1d\xbc\xaf\x1e\xe2\xc0\xb6\x36\x96\xf8\x4d\x68\xdd\xbe\xa1\x60\x08\x51\x51\xa9\x52\x62\x74\xd7\xb8\x46\xcc\xeb\x6c\x43\x48\x09\x84\x84\xde\x3b\xb7\x23\xae\x5e\x85\x27\x6d\xf4\x9f\x56\x34\x13\x0f\xf9\x05\x75\x4f"}, +{{0x01,0xa2,0x47,0x94,0x3a,0xfe,0x83,0xf0,0x36,0xb6,0xb6,0x0f,0x23,0xd9,0x77,0x74,0xfd,0x23,0x20,0x8e,0xdc,0x31,0xcf,0x3d,0x88,0x20,0xe9,0xdc,0x63,0x66,0x11,0x03,},{0x8c,0x97,0xa5,0x8b,0xe0,0xe8,0x47,0xc4,0x8a,0x6a,0x39,0x87,0xcf,0xe2,0x50,0xa8,0xd7,0xb0,0x7d,0x97,0xf9,0x61,0xf6,0xb7,0xb7,0x9e,0x7d,0x80,0x42,0xb8,0xbd,0x7b,},{0xed,0x2c,0xed,0x1a,0x4f,0xdd,0xb3,0x44,0x2a,0x63,0x73,0x48,0x17,0x9a,0x6a,0x5b,0xee,0xdc,0xb4,0x4c,0x8e,0x98,0x8c,0xa2,0x6f,0x78,0x93,0x6d,0x2c,0x8d,0xb5,0xc5,0x16,0xd5,0x4b,0x8c,0x4f,0x08,0xd9,0x1d,0xd7,0x04,0x2a,0xb6,0xab,0x26,0xd8,0x7f,0x23,0x0e,0xb2,0xb2,0x15,0x6f,0x3c,0xe2,0x99,0x4f,0xce,0x7c,0x2b,0x0f,0x10,0x0e,},"\x08\xd8\x14\x95\xda\x77\xf4\x07\x25\x5c\xc4\x1a\x81\x8e\xef\xa7\x27\xe2\xc4\x7a\xe4\x11\xf4\xb5\x41\xf0\x1f\x81\x1d\x90\x6d\x55\xfb\x1e\x3c\x9c\x48\x4d\xf3\x05\x65\x36\x4d\xe9\xdc\xb9\xfe\xa0\xaf\x66\x11\x2f\xe7\x5f\xd1\x1a\xe8\x1d\x26\x41\xb5\x47\x58\x9f\x8b\x97\x4a\x97\xe7\x97\x6e\xd6\x92\xaa\xd6\x40\xed\xd2\x88\xbd\x86\x3d\x11\xc4\xca\x98\x36\xf9\xd7\xc1\x15\xc3\xd9\x88\x30\xd6\x42\x47\xcb\x6f\x8f\xb6\x03\xc6\x98\x11\x33\x55\x2a\x32\x04\x04\x19\x61\xbd\xd8\x3e\x2f\x9d\xeb\xa7\x70\xc0\x39\x4f\x9b\x60\x2a\x45\x35\x51\x07\x49\x21\xa3\xde\x28\x32\x13\x69\xd7\xf8\xca\x64\x0c\x45\x10\x9e\x8f\x52\x2c\x97\xed\x9f\x35\xb9\x27\x7a\x35\x0e\x29\x59\x31\xb4\x2e\x01\x35\xe9\x4a\x92\xfe\xd3\x63\xd6\xca\xe3\x92\xf7\xc4\x51\x99\x32\x7e\x24\xb4\xcf\xa5\x89\x8a\xb5\x99\xae\x7b\xd5\x0b\xd3\xa0\x0c\x0d\x00\x7e\x95\xfa\xf8\xf2\xae\x10\x38\x02\xca\x7e\x53\xb2\x79\x18\x4d\x06\x90\x5f\x57\x48\xca\x8b\xe1\xf7\x2e\x66\x8c\xb8\x32\x83\xdd\x00\x40\x64\x91\xf8\xb9\xb4\xe5\xa9\xd4\xa5\x43\x8b\x2f\xa4\x37\x1e\x0b\x05\x68\x6f\x87\x57\x5b\xaa\x79\x6e\x30\x2f\x08\xff\xc4\x25\x66\x27\x50\xa3\x3a\x0c\x9c\xfa\xa4\xb4\xd7\x04\x1f\x92\x64\xfe\xd7\xbe\x4f\x9f\xde\x2c\xac\x68\xa2\x15\x82\x36\xf6\xac\x43\x04\x7e\x91\x1f\x4c\x4e\x8b\xc6\x63\xfd\xd5\x05\x17\xdf\xaa\x8f\xbc\xd2\x19\xdd\x7a\x0e\x93\x69\xf4\x3d\x0d\xd2\x5b\x4f\x0c\xf9\x30\xf2\x0b\x7b\x7c\x6d\xb9\xd5\xbe\x0c\x6e\x19\x60\x94\x1a\x3e\x04\xd1\x41\xc0\x3e\x59\x61\xaa\x33\xe9\x02\x44\x77\xd5\x33\xc9\x95\x37\x87\x96\xbf\x22\x92\xad\xe9\x22\x69\x5b\x14\x56\x9f\xc3\x39\xb3\xd9\x08\x5c\x63\xfc\x6e\x5b\xef\x4d\x99\x0c\x80\x33\x3a\x6b\x57\xaf\x47\x8f\x93\x8e\x3e\xe7\x38\xb1\xd1\x29\xbd\x97\x6a\xfe\x68\x61\x28\xbc\xac\x08\xcc\xbe\xb0\x34\x9b\x9b\x53\x73\x13\xbc\x7b\xf5\x91\xc6\x5d\x4a\x71\x23\xad\x30\xbd\xbe\x14\x86\xb4\x28\x08\x47\x48\xb6\x50\x7f\x6f\x5e\xf6\x7c\x26\xca\x86\x2c\xf7\x26\xaa\xc1\x40\xb8\x61\xae\x0d\xc7\x4b\xb3\xc0\xb4\x89\x78\x9f\x17\x14\x5e\x9a\x85\x5a\x3e\x2b\x5d\xaa\xc4\x18\xd8\x35\x37\x33\x23\x9e\xf6\x9c\x7b\x56\x5b\x53\x03\xeb\x87\xbd\x7f\x64\x9a\xbf\x40\xa2\xf1\x35\xa2\x9e\xd2\x7e\x3b\xe4\xc1\x2c\xd6\xdd\xd2\xe5\x41\x8a\x99\x97\x43\x83\x66\x3f\x58\x49\xbf\x3c\xe5\x53\x2b\xf6\x4a\x80\xaa\x52\x11\x91\xd2\x53\x90\xbc\x19\xa4\x5e\xed\x1d\x3f\xec\xa1\xd9\xfc\xc0\xdb\x03\x1b\xfb\x48\xe4\x50\xbe\x3d\x45\x93\x35\x6d\x5b\xa0\xf3\x10\x47\xb4\x57\x74\x5f\x21\xe3\x2e\xbe\xa3\xca\x6c\x35\xf0\x5d\x78\xd8\xc3\x16\x40\xb0\xfe\xcb\x94\x01\x16\x56\x75\xc7\xf9\xcb\xb1\x9b\xc4\xb5\x67\x7c\x2c\xce\xdc\x4e\x7a\xaf\xb8\x41\x84\xc1\x91\x99\xac\xa0\xdb\x21\xcf\x50\x67\xdc\x3a\xf7\x69\xbc\xc6\x29\x35\x5f\xf7\x25\x7a\x9e\xfd\x71\xa6\xa9\x2d\x13\x0d\x35\xab\xee\x6e\x70\x60\x5b\x5c\xab\x93\xc0\x28\xfa\xc3\xaa\x23\x44\xba\x86\x1a\xc1\xe8\xce\x9a\x4b\x07\x0c\x3d\xf7\x40\xd2\x8c\x5e\xce\x0f\x1b\xc3\x1c\x2d\x7d\x1e\x5e\xcc\x76\x10\x44\x80\x93\x91\x33\xa1\x86\x60\xe4\xa3\xe4\x84\x6b\x25\x17\xbe\x3b\x8e\x7a\xfa\xfe\x07\x83\x91\xd8\xaa\x8e\x5c\x30\x13\x7e\x85\xd9\x4d\x64\xa2\x79\xfb\xee"}, +{{0x91,0xfd,0xef,0xcd,0xbc,0x99,0x0d,0x3e,0x8e,0xeb,0x60,0x17,0x04,0x34,0xda,0x10,0x83,0x1b,0x03,0x08,0x1f,0x6a,0xfd,0x0d,0x7e,0x12,0xb1,0x00,0x11,0xe0,0x2a,0xef,},{0xc5,0x8d,0x3e,0x20,0xb8,0xd4,0x7b,0xa4,0x55,0xb9,0x12,0x57,0x2d,0xc8,0x40,0x81,0x5e,0x3d,0x88,0x5f,0xa5,0x91,0x7d,0x1d,0xa4,0x84,0x08,0xb9,0xa9,0x56,0x40,0x98,},{0x51,0x01,0x12,0x22,0x3b,0x33,0xa5,0xab,0x15,0x64,0xf7,0x53,0x71,0x91,0xcd,0x29,0x2a,0x9d,0xbd,0x5a,0x32,0x3d,0x7a,0xdd,0x05,0x84,0xc1,0xb0,0xad,0x00,0xd0,0xac,0x71,0x99,0xc3,0xfb,0x75,0x8e,0x91,0x3f,0xf3,0xd7,0x16,0xc2,0xe9,0x0d,0xd9,0x0d,0x4e,0x8f,0x59,0x95,0x1e,0x87,0xef,0x8b,0x78,0x21,0x4a,0x51,0x75,0xc4,0xe6,0x08,},"\x5b\x0c\x1a\x3a\x95\xe0\xba\x74\x74\x76\x6c\x9b\xad\xfa\xe3\x4a\xb8\x60\xe0\xa6\xc0\x33\xa2\x2f\xba\x72\x11\x27\xf5\xbb\xee\xe8\xe2\xcb\xde\x1a\x1d\xfe\xb1\x8d\x55\x1c\x95\x99\x4d\x21\xe3\xeb\xc6\x8a\xfa\xe6\x85\x44\x4a\x3a\x41\x95\xbc\x75\x55\x38\x90\x3a\xcf\xa6\x71\x55\x92\xdd\xe2\x56\xe7\xa1\xb4\xc3\x63\xec\xa7\x1e\xf0\xf3\xa4\x8a\xe3\x44\x2d\x50\xd5\x66\x1b\x39\x40\x96\xb7\xec\x27\xbb\xf5\x29\x53\xf3\x04\x0c\xd2\x5b\x78\xce\x47\x55\x27\xe0\xcc\x59\xf1\xef\x9a\xe2\xe0\x59\x04\x31\x58\x2b\x2d\xf8\x14\x14\x99\x82\x9a\x2c\x5f\x7b\xbe\x35\x98\xe4\xc9\x6c\xc0\x1e\xde\x2f\x43\xb6\x56\x05\xb4\x88\x59\x37\x09\xc0\x94\xb5\xa0\x42\xb2\x85\x55\xfb\x52\x27\xa6\xd1\x56\x37\x6f\x3f\xf0\x7b\xd5\xc8\xbc\x68\x04\xd3\x9a\x32\x82\xac\x59\x70\xba\x08\xae\xbf\x75\x42\xb8\x45\xf6\xb5\xc2\x38\xc2\xce\x20\x44\x3f\x7f\x77\x55\xd7\x5f\xe4\xfa\x16\xb9\x64\x4c\xa3\xe2\x1d\x91\xa9\xa8\x7c\x68\x61\x15\x74\x8a\x16\xc0\xae\x4a\xe4\xe1\x6d\x1c\x71\xae\x60\x0b\x39\xcd\x25\xe5\x63\x3b\x39\x9f\xee\x7f\xf2\xe3\x62\xbe\xd2\x51\x25\xc6\xfd\x5c\x7f\x5f\xfa\x2d\xa2\x35\x3f\xd3\x5b\x78\x4a\x1b\x1b\x03\x19\x77\x47\x58\xb7\x39\x0c\x44\xdc\xc9\x2f\xca\x42\x01\xdf\xe1\xa3\x75\x69\xde\x05\xf0\x66\x4d\x08\xb9\x0d\x6e\x2b\xad\xc2\x1b\x92\xf9\xce\x87\x21\x42\x35\x7b\x96\x15\x08\x0a\xb7\x65\x9a\x24\x6f\xf0\x85\x2a\xdb\x17\xdf\xda\x70\xcf\x17\x54\x15\x7b\x13\xbc\x03\x2b\x4c\x5d\xeb\x8e\x10\x68\xb4\x69\x2b\x93\x16\x5d\xa3\x5e\xfc\x9d\xa8\x6a\xcb\xe6\xf8\x0f\x01\xbb\xc2\x6f\x57\x5e\xc5\xaf\x5b\x05\x0e\x98\x28\xaf\xde\x6c\x3b\x78\xe7\x33\xeb\x5a\x91\x24\x92\xf7\x65\xbc\xad\x73\x1b\x95\xe3\xab\x88\x96\xb6\x17\x58\xbf\x91\x3b\x9a\x15\x68\xf9\xc5\xb4\x60\x33\xcf\x45\xdc\xc1\x75\x0d\xa2\x06\x6c\x60\x8d\xc3\xd3\x43\x73\x8e\x84\x8d\xc3\x90\xcd\x47\x44\x32\xe9\x91\xd7\xaa\x2c\x5b\x27\x81\x42\x1e\xfe\x55\xe3\x6b\x0b\x42\xc1\xf4\x9a\xe2\x77\x48\x0b\x0f\xc5\xff\x68\x5b\xb5\xa3\x1b\xe3\xa0\xfa\x44\x82\x38\x16\x07\x70\x37\x54\x8a\x5c\x9b\x0e\x1c\xc6\xc6\x35\x04\xa4\x07\x57\x9a\x36\x32\xb3\xc9\x6f\xcd\x0d\xe5\xea\x1e\x4d\x6e\x87\xc0\xca\xf7\xb6\xca\xe3\x12\x0d\xb8\xb1\xf4\x61\x5c\xe6\xa7\x5a\x81\x65\x4f\x39\x04\x28\xb6\x4c\x21\x3e\x72\x7e\xec\x3a\xe7\xf9\xf4\x2d\xb9\x06\xf4\xde\x1f\xda\xdd\x34\xa3\xda\x2a\xeb\x12\xb4\xd9\xa1\x85\xf4\xa6\x0c\xb0\xc2\x67\x45\xf5\x30\xb4\x81\xfc\x97\x6a\x09\x3c\xe2\x4a\x30\x91\x6a\xf6\x05\xee\x94\xb0\x87\x85\x19\x3a\x94\x9d\x56\x9c\x4b\x7e\xf5\x96\x03\xbb\x62\x43\x60\xe7\xb4\x08\xd9\x8c\xa5\x09\xda\xf5\xa9\x2a\x6d\x40\x15\xbd\xb6\xf9\x7a\xd4\xff\x0c\xf0\x5c\x8f\x0c\xd5\x47\x6a\x93\x44\x26\xa0\x59\xf2\x44\x44\x46\xe5\x86\x4f\x08\x9e\x0f\x06\x75\x61\x59\x10\x66\x2d\x7c\x1e\x79\xa6\xc7\x5f\xa3\x14\xb7\xba\x2c\x64\x3b\x0d\x37\x65\x3e\xef\xe5\x93\x17\x2d\x1d\x33\x2c\x8d\xd6\x44\x92\xea\xf1\x04\xfb\x19\x57\xba\xa5\x20\x49\x44\x2d\x10\xb5\x6a\xf8\xea\xe8\xff\x82\xcd\x8f\x46\xa0\x49\x4b\xec\x2f\xcb\x9f\xad\xf1\x0c\xf7\x1a\x6e\xec\xd0\x54\x7d\xaf\xdc\x7a\xdb\xaa\x45\x03\x78\x3f\x94\x3a\x46\xb4\xad\x0e\x6d\xd7\xf2\xca\xb5\x56\x17"}, +{{0xef,0x00,0xb3,0xc1,0x81,0xf6,0x32,0x7d,0x02,0x25,0x67,0x51,0xcb,0x51,0xc2,0xc3,0x6c,0x0c,0x0a,0x78,0x07,0x63,0x40,0x54,0x8f,0x5b,0xc0,0x70,0xd8,0x6d,0x9e,0x26,},{0xdb,0x14,0xcd,0x32,0x58,0x8f,0xd7,0x41,0xe8,0xf4,0x2e,0x51,0x21,0xcc,0x81,0x1a,0xd4,0x50,0x63,0xf2,0x81,0x41,0xe8,0x3c,0x66,0x8f,0x07,0xd9,0x12,0x28,0xf0,0x49,},{0x13,0x9f,0x9c,0xb9,0x9b,0x99,0x5b,0xe6,0x58,0x8c,0xdd,0xb5,0x05,0x16,0x94,0x83,0x8f,0x9d,0x82,0xa6,0x07,0x61,0xfd,0xe3,0x04,0xb0,0x02,0x7f,0xf8,0x65,0x84,0xbf,0x65,0xc7,0x3c,0xc6,0xd2,0x53,0xe5,0x60,0xf6,0x55,0x25,0xdf,0x04,0xbf,0xe1,0x46,0xc8,0x3b,0x42,0x26,0x9c,0xf3,0x78,0x0f,0x8b,0xc3,0x92,0x43,0x78,0x94,0xae,0x01,},"\x7d\x6a\xbe\xc7\xa1\x1a\xf6\x73\x24\xce\x17\xb1\xd2\x0b\xb4\x0c\x66\x8a\x21\x9b\xc9\x5d\xf0\x5e\x32\x5d\x86\xf8\x87\x95\xe2\x64\xd4\x54\xfc\x5f\xa7\xd9\xc8\xaa\xfe\x77\xe9\x0a\x6a\xf6\xb5\x74\x53\xd8\x5b\x97\x0b\x55\x2a\x85\x6b\xa6\x59\xab\x31\xbd\x8a\x66\x0e\xb7\xd3\x58\x7b\x45\x3e\x5c\x5f\xc6\xb7\x94\x72\xb2\x6e\x8f\xf7\xdd\x6d\xb6\xbe\x35\x72\x54\x8b\x0d\x75\x4e\xd4\xd9\x85\xb8\xd9\x96\x5f\x88\xb9\x52\xfc\x4f\xa3\xb7\x61\xcc\xff\xc3\x53\x54\xdb\x0e\xb9\xc5\xa1\x71\x71\x8a\x8a\x55\x92\x87\x02\x13\x82\x7d\x36\x91\xba\xe7\xfd\x9c\x63\xf2\x05\x03\xe0\x43\x19\xb5\xe9\x53\x57\x9d\xe4\x7e\x3e\xf8\xe1\x62\x85\x49\x50\x3c\xb4\xf6\x87\x1b\xa2\x5d\xb8\x73\x47\x08\x0e\x53\x1a\x51\x7a\x8b\x72\x21\xe6\xad\x84\xdf\xf8\x32\x56\xd9\xab\x9a\x43\x3d\xe8\x71\xb9\xcb\x9c\x50\x44\x58\x9e\x67\x20\x6b\x31\x7a\x52\x06\xae\xba\x96\xc9\x2f\xd6\x09\x40\x71\xc6\x44\xfe\x52\x65\x8d\xed\x92\x20\xcf\x6a\xbd\x50\xe2\x30\x5a\x1c\x90\xfd\x66\xaa\xcf\xb3\x8e\xb0\x5e\xaf\xf6\xca\x5f\x85\xf4\x29\xcd\x57\x71\x6e\xb8\x77\x39\xa0\x2b\x64\xcf\xfa\x08\xc4\xf6\x85\xb0\x03\x10\xb5\xb4\x84\x49\x20\xdf\x21\x5a\x9f\x24\xa1\x76\x13\xae\xf8\x5f\xec\x94\xf5\x11\xdc\x8a\x42\x94\xed\xdc\xea\x11\xc0\x8c\x0b\x39\x9a\x23\xd9\x16\x38\x3e\x29\xad\xeb\x98\xc6\x5d\x41\xc7\x05\xa5\x7f\x84\x05\x20\xfa\x80\x8d\x7f\xd2\x5f\xdc\xe1\x59\xf7\xa0\x84\xd0\x62\x97\x4b\x30\x13\x2a\x57\x12\x42\xba\xff\x41\x96\x24\x6d\x6d\x75\x7b\x31\x2e\x9d\x60\x85\x53\xd2\xdc\x53\xb6\x23\xb2\xe9\x5c\x75\x38\xfb\xc5\xde\xb6\x2b\xa7\x37\x76\xd8\x5e\x51\x18\xfa\x1a\x30\x2d\x4d\x07\x6d\x99\xe1\x00\xf0\xdf\x11\x9c\x33\xfc\x66\xcd\xfe\x6f\xd4\x4d\x71\x99\x7b\x78\xc8\xf7\x89\x0c\x70\x73\x46\x05\x62\x20\xd1\xe9\xde\x88\xbc\x17\x3c\xf0\xb7\x6c\xb3\x02\x87\x7e\xc1\x6a\xf4\x6e\x4c\x31\x63\x9f\x54\xee\xdc\x16\xda\x9d\x9e\xb0\xad\x95\xbd\xa5\x45\xdf\xc4\xa7\x32\xb6\xda\x98\x14\x13\x6a\xb1\xb9\x39\x2a\x07\x1b\x02\x24\x73\xb3\x49\x05\x57\x69\x8b\x77\xe7\x44\x7a\xc8\x59\x0d\xca\xf4\xf2\x42\xad\x3d\xfb\xc0\xdf\x71\x6c\xc0\xea\x75\x36\x26\x97\x3d\xf0\x8d\x93\x5d\x17\x8e\x33\x12\xfb\xe2\xa7\xba\x9c\x50\x93\xc5\x3b\x92\x55\xea\xca\x29\xb7\x25\x78\xe3\xba\x1b\xdf\xaf\x0c\x9e\xce\x21\xa5\xdf\xf6\xea\x42\x15\x24\xf7\x0f\xc1\x90\x4e\x9a\x2c\xf7\xc5\x18\xbf\xcc\x7e\x36\x73\xee\x87\xff\x27\xe1\xca\x2a\xc3\x2b\xcb\x40\x91\xcb\x34\xa8\x2a\x71\x56\x3f\xf6\xa6\xa1\x5d\xa0\xeb\xd5\xbd\x10\x25\x6c\xe9\x60\xf4\xea\xa7\xfe\x35\xe1\x28\x88\x60\x50\xd0\x49\xfe\xc3\xa4\xab\x16\xd5\xb0\xc1\x07\x26\x7e\xae\x1a\xb8\x01\xea\x5b\x91\x98\x38\x39\xda\x1c\x48\x8c\x12\xf8\x64\xd7\xc3\xa7\x7f\x2b\x6a\xe2\x7d\x54\x01\x09\xf6\x8d\x78\x36\x4b\xb6\x27\x18\x3b\xd5\x03\x91\x75\x47\xaa\xf3\xb3\xa1\x80\x9d\xa0\x25\x77\xb3\xf0\x3a\x9a\x3f\x5a\xf4\x8c\x88\x02\xe2\x97\xc8\xbb\x63\xdb\x6a\x86\xd3\xea\x72\x7a\x6d\x71\x48\xb3\xaa\x44\x4b\x8d\x16\x8f\x38\xc6\xc8\xf2\x40\x88\xa4\x9a\xf3\x31\x77\xa3\x44\xad\xab\x2c\xf6\xe0\x8e\x0c\xb0\x37\x1e\xd5\x2b\xde\xad\x13\x2f\x77\xe7\xae\x3e\xe5\xd8\xfb\x17\xaf\xc0\xa0\xbb\x73\x11\xb9\x56\x0b\x67"}, +{{0xd0,0x71,0xd8,0xc5,0x57,0x8d,0x02,0x59,0x49,0x93,0x2a,0xa6,0xbf,0x6a,0x80,0xb1,0xcc,0x41,0x2f,0x10,0x6f,0x91,0x57,0x4e,0xe2,0x46,0x54,0xb4,0x45,0xee,0x9a,0x97,},{0x9b,0xcb,0xf7,0xd2,0x21,0x2f,0xb6,0x2c,0xcc,0xf8,0xb6,0xc7,0x68,0x03,0xa5,0xea,0x24,0x40,0x9d,0xa6,0x28,0x7e,0xfb,0xb8,0xb1,0xf0,0xc7,0xb3,0x0e,0xbd,0xd9,0x3e,},{0x0c,0x29,0x7a,0xbe,0x0f,0xd8,0xeb,0xcc,0x6b,0x77,0x19,0x98,0x75,0x5e,0x2c,0x6b,0xe0,0x7c,0x81,0x2b,0x5a,0x80,0x54,0x49,0x57,0x06,0x31,0x70,0xca,0x69,0x43,0x2e,0x72,0xb6,0x0d,0xaa,0xe3,0x22,0x95,0x8a,0x22,0x38,0xcd,0x6a,0x46,0x28,0x94,0xa3,0x87,0xee,0xf6,0x5b,0xf9,0x6f,0x63,0xf5,0x4c,0x08,0x56,0x87,0xa5,0x02,0x75,0x0e,},"\x3e\x8e\xe7\x0e\x51\xe5\x6e\xf5\x7f\x6e\x66\xb3\xa8\x84\xaa\x04\xa7\xb4\xd4\x59\x9f\xb9\xb4\x39\x96\xb3\x93\xa8\x68\x09\x35\x12\xea\x74\x1a\x0c\x6a\x94\xf4\x0c\xe4\x98\x62\xd2\xfd\x1f\x75\x51\xf4\x64\x7a\xbd\x80\x75\xbc\x1b\x74\x2a\xd4\x0e\x29\xa6\x04\x61\x30\x12\x24\xfe\x8f\x76\x92\xb1\x47\x72\x78\x2b\x4e\x89\x6b\x63\xfe\x05\xab\xd5\xff\x53\x14\xf9\xec\x80\x75\xf2\x8d\x90\x8c\xca\xaa\xce\x5e\x90\x5e\xa7\xf5\x7a\x49\x1b\x99\xb3\x59\x1e\xea\x54\xa6\xb7\x81\x91\x67\x74\x9d\x38\xa0\x47\x62\x06\x76\xa1\xa7\xaf\x11\xf4\x85\xa5\x5b\x7c\x87\x9e\x68\x50\x38\x08\x58\xc8\xf4\x5c\x0c\x1c\xcb\xd7\x40\x6e\xd0\x99\xd8\x4a\x74\x71\xb9\x35\x0c\x4d\xdb\x28\x47\x0b\xf5\xbf\x32\x7d\x5b\x3c\x22\xd8\x99\xb4\xc6\x60\x83\x9e\x10\x4a\x06\x22\xae\x85\xc8\x4a\xa9\xfc\x7f\x0a\x2c\x7c\xeb\x6e\x69\x1c\x49\xc0\x64\xb5\x31\x34\x99\x68\x3e\x8e\x03\xb2\x11\x5e\xda\x7d\xda\xd5\x5a\x49\xf9\xfb\xe6\x25\x44\xf9\x14\x51\x1c\xfb\xec\x6b\x84\xdb\xde\x7e\x80\x90\x9b\x45\xfb\x10\x50\x2e\x2c\xaa\xa7\x21\x24\xfd\x94\x56\xa3\x87\x2f\x95\x92\x70\x7e\x9a\x4c\x50\x12\xda\xa9\x72\xea\xf6\x5f\xab\xe5\x53\xde\xbe\x82\x57\x01\xef\xef\x5c\x75\x6b\xb4\x65\xe9\x66\xab\x68\xdd\x52\xf3\xdd\x00\xa4\x5c\xf6\xdc\x3f\x19\xb8\x6b\xb0\xdb\x4a\x86\xe4\x66\x98\x85\xa0\x74\x69\x6a\x67\xd8\xea\x21\x18\xc7\x66\xef\x62\x5f\x8a\x98\x02\x6f\x9f\x4a\x3c\x5c\xcc\xf9\x84\x6f\xdc\x90\xed\x93\xec\x7c\x1f\x3c\x70\x86\x95\x4f\xa2\xf0\xa4\xca\x96\xd4\x01\x84\xaa\x57\x54\x55\x27\xa1\xf9\x65\xc1\x1d\x84\x3c\x90\xc5\xa5\xe0\x8d\x7c\x11\xf2\xd5\x61\x00\x4e\x90\x57\x48\x52\xeb\x50\x46\xaa\x1e\xa7\xb6\x10\x09\xfd\x5d\xd7\xd6\x24\x2a\x8d\xf5\x8a\x9e\x8e\x55\x5c\x7f\x4c\xdc\x13\x0d\x69\x01\xbf\xe6\x79\x7f\xdc\x6c\x39\xbe\xec\xfb\xba\xb6\x62\x5b\x2e\x4f\xb9\xd8\x00\x02\x76\xd4\xa9\x4f\xc6\xfc\x10\x51\xfe\xff\xf5\xad\xeb\x72\x4b\x87\x09\x0d\xb0\xa2\xc6\x97\xd0\x56\x66\x4d\x99\x1f\xad\x80\xdc\x80\xfa\xb7\x00\xb1\xf1\xf2\xee\x27\x73\x4e\xbc\x26\xb2\xa6\x41\xc3\x2a\x0c\x91\x1b\x27\x0a\xc7\x6b\x0d\xa5\xc0\x89\x14\x97\x1c\x91\x12\x46\x3a\x70\x70\x9c\x0d\xda\xc7\x91\x00\x16\xf9\x13\xf6\x21\x00\x86\xd7\x25\x5c\xef\x11\x95\x57\x10\xf6\x51\x88\x9c\x83\x62\x1d\xd8\xa4\xfc\xd5\x36\x63\x02\xd6\xc9\xb5\x6e\xef\xcf\xac\x85\xc1\x4a\x94\x78\xb6\xd7\x18\x07\x54\x28\x80\x07\x60\x51\x5c\xab\x5f\x3d\x44\x55\xe2\xb9\x70\xdf\x9f\xe4\xbe\x83\x83\xd7\x04\x83\xbb\xdd\x75\x60\x71\xf5\x3b\x2f\x9c\x27\x5c\x7c\x85\x12\xd1\x63\x51\x8f\xe5\x55\x83\x75\x14\xc8\x67\x76\xc9\x47\xf2\x9a\x77\x57\x02\x87\x44\x6b\x69\xbe\x40\xc8\xd4\xab\xbd\x65\xef\x25\x07\x24\x9b\x5a\xec\x33\xac\xb7\xb8\xbd\x3f\x35\xbc\x85\x9b\xa4\xe3\x7b\xdb\x49\xcf\x91\x3d\x93\x98\x9c\x44\x38\xd2\xab\xcf\xa3\x88\xcc\x89\xd7\x8a\xc0\x62\x70\x65\x64\x92\xe7\x52\x8f\x29\xbd\xfe\x8c\xbb\x9b\xfa\x9e\x73\xc1\xda\x01\x3f\xc3\xce\x21\x05\x65\x76\x13\xff\x62\xbb\x0c\x3b\xf4\xde\xe3\xb0\xd2\x65\x9c\x72\x6e\x7b\xcd\x9e\x97\xec\xce\x92\x47\xd4\x60\x0d\xfe\xaf\x60\x44\x4e\xd8\x62\xb0\x0b\xa1\x1e\x70\xea\x88\xd4\xf0\xb6\xb5\x39\xfc\x9f\x36\xbb\x2a\x1a\x9e\xd2\xb3"}, +{{0xe9,0xd4,0x86,0xc2,0x9a,0xe8,0x11,0xb9,0x42,0xe1,0x0d,0x81,0xf0,0xa6,0x71,0x63,0x17,0xb8,0x42,0xc2,0xc5,0xbf,0xde,0xf5,0x5c,0xc4,0x32,0xb7,0xfc,0xae,0xb8,0x18,},{0x43,0xa5,0x2d,0x15,0xb9,0xf7,0x31,0xd7,0x37,0xb1,0xc4,0xdb,0xc3,0x22,0x27,0xa4,0x80,0x96,0x30,0x91,0xd2,0xc6,0x28,0x6f,0x48,0x2e,0xf1,0xe8,0x36,0x70,0x54,0xe5,},{0x65,0x19,0x1a,0xa8,0x85,0xdd,0xab,0x9f,0x67,0x27,0x18,0x79,0x95,0x2f,0xc6,0xaf,0xfe,0x41,0xca,0x20,0xeb,0x3b,0xcd,0x86,0x67,0x31,0x61,0xb0,0x3b,0x53,0x26,0x94,0xd6,0xdd,0x88,0x90,0x8e,0xb1,0xb1,0xee,0xc0,0x03,0xcf,0xcb,0xe6,0x14,0x6b,0x45,0x38,0xe2,0x1d,0xf5,0x59,0x69,0x91,0x2a,0x0d,0x7d,0x88,0x18,0xad,0x79,0x59,0x0d,},"\x14\xfe\x1e\xd5\xbb\xbd\x76\xcc\x73\xdc\x56\x50\xbd\xa9\x2d\xe8\x63\x26\xe2\x4d\x2f\x1f\x62\x24\xba\x85\x68\x94\x4d\x6f\xe3\x44\x26\x75\xdb\x96\xf1\xd8\x49\x8f\x16\x34\xff\x9b\x6e\x50\xcb\xa9\xdb\x4e\xb0\xb0\xb0\x21\xb2\xbe\xcf\xce\x4b\xef\x33\xc4\xce\x0e\x32\xc8\xa9\x83\x89\xec\xa9\xe0\x59\xa6\x62\xd6\xf0\x37\xc5\x4a\xa4\x0c\x76\xcd\xee\xe8\x56\x50\xf0\x89\xea\x56\xe1\x38\x3a\xb0\xf5\xc3\x6f\x6d\x66\x45\xff\x7e\x87\x66\x73\x01\xf9\x44\xfd\xc2\xed\x35\xb0\xd2\xc3\x5c\xb2\xe4\xb4\x56\x36\xe7\x49\x8e\x92\x7f\x58\x46\xb3\xe1\xed\xfb\xd1\x60\xa4\xae\xf3\x32\x0c\x34\x28\x49\x6b\xda\xaf\x7d\x3e\xd5\x6e\xf0\xb7\x25\x4a\xc5\x97\xbe\x58\x9a\x70\x58\x44\x16\x30\x0c\x1a\xdc\xfb\xa4\xf2\x2c\xfd\x4c\xd6\x61\xe1\xf5\x0f\x15\x5d\x17\x2f\xa5\x74\x8d\x29\x6b\x29\xcd\xd7\xeb\x81\x21\x48\x3f\xf1\xd9\xfe\x95\x3f\x94\x51\xc7\xc7\xa5\x42\x00\x72\x85\xee\x72\x46\xbc\x0f\xde\xa9\x38\x81\x40\x29\xab\xce\x05\x7a\x0e\xcb\x97\x4b\x12\xd3\x60\xea\xb6\xaf\xd3\x07\x97\xd6\x14\x45\xad\x2b\xac\x7e\x52\xbc\xe4\x34\x63\x15\xf7\x8e\xb8\x75\x42\xd5\x95\x28\xb2\xf6\xc5\x6d\x66\x24\x1c\xb4\x42\x03\x3f\x64\x3d\x3d\x2a\x67\xcb\x63\x7d\x8d\xa9\x5d\x4f\xd1\x23\x4b\x03\x1a\x3e\x51\x72\x3a\x1d\x26\xe6\xf5\xca\x07\x98\x73\x21\xad\x11\xa9\x0f\xcc\x1d\x4e\x2b\x0b\x89\x66\x50\xc3\xa7\x51\x8d\x56\x55\x29\xbe\xa8\x06\xa0\x5d\x44\x7e\x08\xd2\xa6\xa3\xdb\xf1\xa3\x69\x15\xb2\x95\x7c\xa5\xb4\x0e\x58\xb9\x7a\xd0\x36\x97\x35\xc4\x28\xbd\x6d\x69\xbd\x21\x00\x44\xb6\x51\x41\x8d\x98\xb0\x59\xd9\x0c\x83\xe4\x60\x11\xf4\x1c\x03\x2c\x56\x55\xa5\xef\x21\xac\x2c\x8c\x2b\xc9\x4b\xe0\x7e\x45\x42\x6a\x7a\xe5\xd4\x7b\x45\xf2\x7c\xf4\x28\x9c\xa4\xdd\xab\xe0\x8a\x12\xb9\x10\x20\x7d\xab\xb3\x4a\x46\xab\x75\xce\x69\xb5\x8e\x7e\x17\x66\x4b\xf3\x35\x9a\x8f\xb6\x8e\xb0\x32\xc9\xea\xa6\xdf\x87\x38\x29\xf0\xe0\x84\x85\x53\xf7\x32\xe1\xc3\xc0\x84\xb3\x2b\x7a\xf7\x50\x74\xe7\xbb\xaa\x4e\xb5\xd7\xea\xd7\xaf\xf9\x75\x80\x10\x9b\x60\xf4\xc7\x92\xf9\xe2\xa6\x51\x37\xb0\xaa\x48\x17\x5b\x81\x15\xd9\x13\x05\xf4\xc7\x7e\x2d\x08\xe7\xe8\xd7\xe7\x78\x5c\x96\x68\x42\xc2\xe3\x50\xfe\xd4\xf9\xe3\x3b\xf6\xe1\x84\xc5\x50\xb4\xb0\x6e\x95\x74\x14\xed\xf5\x2f\xa0\x79\xe8\x19\x73\x45\x84\x61\xfb\xb9\xb7\xd7\xd3\x4b\xef\x15\x03\x57\xf4\x32\xca\xac\x3a\xe9\xf3\xdc\x96\xeb\x5a\x2d\x12\x3e\x09\xed\xa1\x70\x2e\x1d\x10\x70\x17\x7b\xb2\x20\xc4\x23\xc0\x96\xec\x24\x42\x43\x85\xc6\x79\xbe\x02\xef\x84\xd0\x9e\xd1\x02\xf4\x9c\xad\x3b\x1f\xd6\x70\x67\x9a\x39\x71\x4f\xf1\xd6\xe4\x22\x8d\x8d\x7d\x0e\x19\xed\x0e\xba\x13\x2f\x21\x28\xd4\x7b\xaa\x56\x9a\x8e\xcb\x7b\xd4\x8a\x82\x62\x82\xf9\xcf\xcb\xf6\x0d\xde\xce\xaf\x1d\x02\x13\x2c\x8a\xff\xed\x3a\x03\xd2\x34\x0d\xeb\x78\x7c\xd6\x49\xc5\x1c\x6e\xcb\x9f\xf7\x5d\x7a\x7b\x4e\xf9\xb1\x51\x39\xcf\xea\x27\x62\xab\x18\x61\x51\x97\xa6\xb5\x1f\x6e\x75\xdb\xd0\x45\x73\xa2\x44\x80\x94\xd0\xcd\xeb\x0f\xe4\x58\x58\x83\xff\x9b\x68\x82\x4a\x04\xb8\x3e\xc9\x1c\xf8\x4a\xcd\x6a\x74\x46\xcb\x1f\x5e\xe3\x7d\x5d\xf8\x0f\x17\xcb\x2b\xdc\x3f\x31\x22\xa8\xfa\xf7\x6e\xbd\x06\xcf\xe8\x17"}, +{{0xe6,0xfa,0x10,0xdb,0xb4,0x78,0xe1,0xe3,0x6b,0x35,0xdf,0xeb,0x02,0x50,0xf6,0x3c,0x08,0x51,0x50,0x70,0xae,0x79,0xb2,0x2f,0x04,0x7e,0x27,0x17,0x08,0xd6,0x4f,0x5c,},{0xe0,0x2e,0x1f,0x2b,0xd8,0x79,0x2e,0xf4,0x83,0x48,0x1c,0x6d,0x11,0xf7,0xc7,0xc9,0xdb,0xde,0xec,0xc9,0x85,0x94,0x32,0xe7,0xf2,0x79,0xe9,0xd1,0x73,0xd3,0x11,0x64,},{0xc0,0x3c,0x47,0x03,0x59,0x12,0x7e,0x9d,0xe3,0xaf,0x0e,0x0e,0xd7,0xd3,0xb1,0x9f,0xae,0xe0,0xec,0x14,0x0b,0x79,0xc2,0x99,0xe2,0xcb,0x6d,0xac,0x0a,0x3e,0x7e,0x31,0x41,0x41,0xcc,0x85,0x4b,0x45,0x96,0xce,0x4c,0x51,0xc7,0xb0,0xde,0xc8,0xa5,0xc8,0xcf,0x09,0x36,0x20,0x53,0x61,0xd5,0x36,0x5f,0x4b,0xcc,0x07,0xc4,0x28,0x7c,0x07,},"\xad\x31\x60\x75\x8d\x8c\x08\xa6\x61\x52\x5c\x95\x28\x0a\x37\x18\x87\x49\x69\x85\x9f\x1c\xc9\x18\xe3\x4f\xec\x00\x8a\xcf\x23\xb8\x89\x6e\x8d\x50\xc3\xc0\x51\x23\x31\xdc\x89\x78\x0f\x8b\x10\xfc\x34\x9c\x67\x5c\x4c\xd8\x2a\x5d\xf8\x58\x6b\x43\xc8\x64\x44\x8f\xac\x00\xb8\x47\xb9\xc9\x80\x54\xab\x79\x3f\x63\xc7\x1a\xa5\xe5\x24\x8e\x22\xd0\x69\xbd\x3f\x85\x2a\x3b\x8c\x6e\x2a\xc8\xef\x86\x1d\x90\xbc\xd9\x84\xbf\xca\x87\x58\x3e\x59\xe9\xa7\x46\x8f\x29\xb8\x08\xdc\x2f\xe5\x30\x2a\x98\x9d\x6f\x2e\xcd\xe7\x58\x5c\xd9\xbe\x4e\x4c\x76\x1c\x4d\x4b\x3e\xea\xf4\x69\x9f\x65\x56\xef\x03\x9a\xf2\xb8\x0f\x94\x07\x60\x5a\xc3\x97\x35\x1d\xd8\x55\x95\x58\x44\x95\xba\xa1\x77\xb0\x8c\x88\xd2\xec\x1f\xc4\xe3\x2d\x1c\x0b\x8d\x7e\x7a\xc5\x83\x9d\xfb\x92\x3f\x09\xb3\x23\xe7\x8e\xce\xb7\xe9\x6c\x06\x04\xb0\x1a\x19\xe4\x9c\x9b\xea\xf4\xf2\x5e\xc4\xa8\x4c\x1a\x08\xf2\x38\x0e\xdd\xc3\xa7\xf0\x12\x18\x49\x59\xcc\xd1\x9e\xcb\xba\xc6\x5e\xac\xa1\x55\xce\xe9\xec\xfe\xc1\x1e\x7f\xee\x05\x8e\x17\x4f\xc4\xed\x7c\x67\x9f\x2c\x15\x63\x1d\x4e\x15\x27\xbc\xdb\x0e\x3b\xb0\x81\x5f\xfd\xff\xc0\xc8\x56\xbe\xf0\xdc\x0f\x5c\x82\x37\xf7\x09\x8e\x26\xbd\xb6\x9e\x87\x82\xd1\xca\x51\x11\xec\x3c\x7e\xdb\x42\x5d\xff\x80\x32\x02\x6c\xba\x3d\x2e\x08\x1b\x71\x31\x0d\xb9\xba\xda\xd1\xad\x02\xf1\xec\xcc\x53\x7d\x87\x4c\xd1\x8c\x6b\xb0\x12\x21\xf7\x1e\xe6\x62\x50\xd9\x4c\xf8\xec\xce\xaa\x96\xd3\xc5\x7e\xea\x2b\x0a\x8e\xc7\x24\x29\xd7\x60\x64\x88\xbd\xf1\x9e\xc3\xbb\x16\xe5\x08\x67\xc7\x93\x7d\xef\x09\xfc\x78\x3f\x20\xa2\xa5\xec\x99\x25\x3d\x6b\x24\x0d\xf4\x67\x7d\xd2\xd5\x27\x7b\x01\xc5\xb8\xe5\xbd\x6c\x7d\xf0\x87\x42\x05\xbc\x8c\x2f\xff\xdb\xa1\x31\x46\x74\xd3\x1c\x9b\x2c\x91\x99\x22\x8e\x19\xe0\x42\x18\x34\xc1\x65\x7d\x06\x98\x28\x69\x16\xc7\xe3\x92\xf0\xab\xd5\x54\x5b\x96\x3a\xc1\xff\xa9\x97\x21\x61\x6c\x23\x79\x6f\x85\xc3\x4a\x5c\x66\x4a\xe8\x1d\x16\xb2\x16\xa5\xb0\xcf\x5b\xc6\xb5\xa9\x08\x29\x72\x85\xd6\x16\x44\x12\x8f\x88\x6f\x38\xaf\x9e\xdd\x25\x19\x3d\x7e\xcc\x77\xa7\x99\x94\x27\x8d\xa0\x71\xf5\x44\x95\x93\x7f\xee\xf5\xa5\x19\x57\x52\x7c\x3e\xec\x7c\xb0\xb4\xe8\xaa\x7a\x4e\x85\x6d\xef\xd5\x7d\xd9\x23\x34\x15\x1b\x98\x6a\xa6\x9c\xa6\x92\x60\xd1\xe2\xd7\xb5\x3c\x05\x67\x7e\xe0\xd2\x16\xb2\x8d\x03\x62\x52\xdd\x30\x06\xde\xbe\x1b\x65\x74\xa2\x5e\x6b\x19\xdf\xb4\x8f\xa6\x43\x16\xaf\x8f\xd6\x8d\x78\x93\xb3\x97\xe7\xdb\x57\x80\xab\x27\xbf\x87\x26\xff\xf6\x05\xd3\xb4\x6d\x80\x05\x95\xb4\x62\x4b\xee\x30\x2c\x96\x43\x26\x03\x4b\x52\x34\xd1\x75\xdf\xdc\xc2\xce\x88\x2e\x65\xb3\xd9\x3a\x04\x38\xf6\x92\xe9\x69\x5d\xe1\xf2\x4c\x70\xa7\x9b\xee\xd2\x54\x15\xec\x5a\xae\xcf\x33\x91\x95\x3b\x2f\xfd\x45\x3a\x8f\x04\x67\x56\x1a\x4a\x47\xee\x14\x4a\x43\xfd\xff\x83\xdf\x2b\xea\x5f\x66\xa7\x22\xb5\x2a\xbe\x86\x13\xf2\x0c\x59\x4a\xf0\x98\x2e\xb3\xf0\x45\x05\xa5\x24\x61\xdd\x03\x4d\xa8\x6c\x36\xca\x16\x21\x77\x05\xc0\x48\x23\x91\x1d\x72\xa2\x47\x69\x51\x76\x33\x56\x28\x86\xf2\x50\xf2\xcf\x78\x8b\x8f\x32\x86\x4a\x94\x74\xf5\x7e\x62\xe5\x7d\xe8\xfd\xaf\x95\x9a\x6b\x72\x28\x74\x40\xa8"}, +{{0x05,0x8e,0x36,0x80,0xb8,0xfc,0xc0,0xaa,0x14,0x90,0x08,0x9c,0x11,0x24,0x67,0x7f,0x98,0xd7,0x4b,0x1b,0xfb,0x71,0xee,0x86,0x63,0xf0,0x25,0xf0,0xd9,0x46,0xcd,0x20,},{0xec,0x72,0xce,0x0e,0x82,0xc6,0xa3,0xb2,0x12,0x43,0xd2,0xf0,0x0e,0x9e,0x88,0x3a,0xdb,0xc5,0xcb,0x63,0xb3,0xd9,0x36,0xef,0xa5,0x0c,0x07,0xcb,0x92,0x91,0x48,0xe2,},{0x57,0x34,0xec,0x50,0xa7,0xf8,0x2e,0x48,0x53,0x6b,0xdc,0x43,0x70,0xcf,0xef,0x2e,0x15,0x0a,0x63,0x1d,0xab,0xaf,0x89,0xed,0xcf,0x0f,0xda,0xbe,0x4f,0x58,0x39,0xf4,0xf5,0xfb,0xd8,0xdf,0x8e,0xc4,0xa3,0xac,0xd4,0x0a,0x8b,0xfb,0x96,0x3d,0x18,0x55,0xff,0x92,0x74,0xdb,0xc3,0x31,0x65,0xb5,0xe6,0xd3,0x7a,0x23,0x9d,0xac,0xe9,0x03,},"\xe6\x3d\x14\xf5\xbe\xa7\xa1\xab\xb8\xfe\xe6\x97\x74\x6c\x22\x80\xdf\xd0\x62\x2d\xe7\x35\x72\x26\xcc\x07\x42\x72\x2a\x32\x29\xbe\x12\x6b\x08\x3e\x86\x8a\xea\xf0\x7d\x2f\xc9\x7a\xdc\x33\x42\x70\x96\x74\x19\x3c\xa2\x81\x74\x4e\x85\x0e\xa1\x54\x40\x05\x0a\xec\x93\x0e\x45\xd7\xa8\x7b\x8a\xc8\x01\x5c\x89\x67\xc2\x00\x33\xa5\x32\xd2\x95\x91\xb1\x35\x58\x6c\xe0\xfd\xd2\xe6\x68\xb5\xc8\x64\xb3\xbd\xe7\x0c\x7e\x71\x9a\xd2\x41\x93\x12\x51\x86\x19\x33\xff\xbf\xa9\x64\x83\xff\x82\x85\x67\x48\xc5\x6d\xc2\x6e\x25\x7d\x69\x2e\x51\x34\xd8\x2f\xc7\x19\x1c\x11\x0d\x95\x90\xd3\xfc\x75\x1c\xd6\x36\xb0\xc4\x6f\x44\xf8\x80\x3e\x59\xe2\xf9\x3f\xa0\xcb\xe2\x47\xa1\xa6\x25\xb4\xbc\x2c\x7b\x1f\xdc\xeb\x5a\x2b\x22\x59\x1f\xa6\x13\x7c\x54\x04\xdf\xec\x6a\x69\x63\x9e\x3f\x63\x2b\x59\x76\xab\x9f\xe1\xc6\x3a\xa3\xda\x9d\x52\xb0\x44\x00\x8f\x3a\xe4\x4b\x7c\x36\x4f\x08\x56\x64\x32\x3a\x88\xeb\x45\x83\xe8\x71\x40\xf7\x63\x78\x2b\xff\x88\x19\xcf\x74\x1a\x87\x5d\x50\x6c\x92\x9d\x34\xbb\xd4\x30\x07\xde\x4b\x18\xf6\x87\xa7\x58\x11\x11\x28\xb1\xdb\x86\xfc\x5a\xd2\xfb\x9f\xca\xd1\x2c\x9d\xd2\x8f\xee\x5a\xd1\x0d\xe0\x73\x9f\x8e\xfd\x9b\xff\x66\xf8\x40\xb1\x1b\x3f\x91\xc5\xe0\x7c\x21\x45\x2c\xab\x24\x24\x2b\x6e\x32\x16\x5c\xd1\xe6\x95\x72\xbf\x21\x6e\x86\x04\x53\xda\xd2\xfd\x12\x9c\x33\x37\x58\x58\x0b\xb7\xd0\xf1\x95\x09\x74\x5e\x85\x14\x63\xd1\x27\xa5\xf9\xbe\x21\xfe\x54\x9c\xae\x55\xd5\x6b\x8b\xea\x80\xbf\xaf\xda\xc1\x0a\xcd\x83\x8e\xa8\xaf\x31\xc0\x07\xdc\x32\xbf\xd7\x40\x82\xd9\x11\x0a\x3e\x91\xe6\x1e\x03\x57\x58\x7e\x4e\xd3\x28\x27\xad\xe9\xb6\x91\x0a\x98\x8c\x1d\x3b\x2d\xd2\x2c\x0e\xe7\x6e\xf3\x5f\xe1\x5e\x09\x94\x04\xa4\x5d\x4b\x2a\xca\xb9\x12\x3e\xcc\x45\x55\x0a\x40\xfa\xf8\x33\x6b\x46\xc6\x30\xa9\x08\x03\x58\xff\x8b\x8e\x58\xaf\x0b\xcc\xbd\x35\x01\x0c\x1e\xcc\x12\x81\x66\x55\xa5\xec\xeb\xa9\x5a\xd3\xf5\x03\xa1\x8e\xc5\xbe\xce\x3a\x33\xf4\x69\xdf\xe9\x17\xe1\xc5\x5e\xf1\xd8\x1e\x5a\x75\x56\x1e\x6b\xbd\x99\xc6\x53\xa6\xd0\x95\xb9\xf3\x87\x91\x1e\x40\x33\x2f\x62\x16\xf9\x56\xa3\x5c\xf7\xd9\x9a\x9f\xdd\x0c\x44\xc5\x1e\x90\xa5\x64\xf1\xc3\x6b\xf3\xd4\x0a\x7f\xaf\x4b\xa2\x8b\x1a\x12\x0b\x32\x05\xfb\xac\x1a\x98\x56\x92\x90\xbe\x37\xc5\x8b\xbd\x74\x5c\xe0\xfb\x74\x83\x52\x70\xab\xa2\x25\x2a\xda\xec\x15\x7d\xc4\x24\x61\x22\x1a\x2c\xff\x68\x7b\x9e\x65\xce\xb5\x7c\x2d\x77\x70\x0a\xea\x63\x20\x48\x6c\x5b\x1b\xec\x9c\xc5\x3e\x7e\xf9\xe4\x8f\xcd\x1b\x77\x83\xac\xbe\x75\xa6\xbe\x02\x67\x27\x88\x12\xdb\xf3\xd2\x57\x6c\xf7\xad\x39\x11\x27\x1a\xce\xbe\x0f\x2c\x04\x60\x2a\x08\x0c\x8b\x96\xc1\x20\xfd\x86\xfd\xa2\x82\xaa\x4e\x1c\x13\x1f\xe9\x7c\x90\x7c\x15\x85\x5f\x87\x75\x5f\x51\x1c\x03\x7b\xef\xad\x0f\x56\xb3\x9f\x32\xa2\x13\x3a\x22\xf3\xd5\xa9\xbe\xc3\x44\x3f\x29\xa6\x94\xe9\x7f\xe0\x5e\x10\xfb\x8e\xf9\x99\x13\x02\xb9\xe0\xd8\x4d\x92\x9a\x19\xeb\x03\x47\x1f\x3a\x86\x13\xd3\x93\x68\xe1\x58\x83\xa7\xe4\x97\x0b\x53\xcb\xaf\x29\x29\xd8\xde\x43\x1b\x48\xb4\x35\xd7\x53\x3c\xaa\x2e\x36\xce\xab\x6c\xdd\xb3\x46\xe5\x35\xe5\x15\xc4\xb3\xdb\x76\xde\x07\xd9\x85\x54\x14"}, +{{0x51,0xba,0x3a,0x4f,0x3d,0x85,0xd1,0x54,0x8c,0x2f,0x24,0x94,0xa3,0x51,0x1f,0x3b,0x95,0x15,0x66,0x3d,0x7e,0x85,0x37,0x0f,0xb6,0x15,0x02,0x37,0xe9,0xbc,0x98,0x0b,},{0x77,0x49,0xde,0x02,0x10,0xbc,0xe0,0x6d,0x48,0xf5,0x9b,0x95,0xae,0xb1,0x52,0x8f,0xd9,0xb4,0xe5,0x2c,0xdd,0xe2,0x2f,0xb8,0x19,0x3b,0xed,0xd5,0xdf,0x12,0x81,0x7c,},{0x16,0xfb,0x29,0x0c,0x91,0x3b,0x20,0xeb,0x1c,0x3d,0x7b,0x79,0x82,0x49,0xeb,0x84,0x59,0xd4,0xbe,0xe8,0x12,0x5d,0xb2,0xb3,0xf1,0xda,0xab,0x8a,0xf9,0xd9,0xa7,0x00,0xed,0x79,0x8a,0xdd,0xd8,0x02,0xdf,0xcd,0x29,0x7a,0x41,0x25,0x93,0xcd,0xa7,0xbe,0x99,0x79,0xa1,0xf0,0x93,0x50,0xe8,0x6f,0x69,0x8a,0xc3,0x38,0x0e,0x34,0x1d,0x07,},"\xd1\x8d\x0c\xbf\xc1\x6d\x0f\x9b\x67\xf2\x53\x9a\xd6\x20\x7c\xd9\x21\x7a\xd5\xed\x03\x33\xcd\xdb\x10\x41\xe0\xac\x2b\xdd\x92\x02\x76\x62\x96\x52\xb4\x9c\xbc\x98\x02\x59\x3e\xc3\x64\xea\x79\x5a\xbc\xd1\x58\x20\x85\xf5\x5b\xc6\x6c\x48\xfd\x3e\xed\xe6\x18\xd6\x36\x96\x17\x10\x0e\xae\xcc\xc1\x5f\x24\x9d\x6e\xee\x5b\xb2\xc4\x3c\x01\xb0\x62\x3f\xe6\x03\xce\xee\xe4\x9b\x40\xfb\x7c\x53\xfc\x68\x47\x36\x73\xc0\x9b\x1a\xc7\x7e\xa9\xbe\xb7\xe8\x53\x03\x79\xa8\x6d\x69\xec\xd1\xff\x11\x81\x3f\xbb\x88\xf6\x92\xf0\x5e\xf1\x32\x07\x42\xb4\xfe\x7e\x06\xd5\xba\x71\x65\x66\x46\xcd\x75\x00\xde\x19\xbb\x93\xd8\x44\x53\x66\x03\xf4\x0b\xd4\xae\xea\xf0\xc4\xdb\xc0\xac\xfd\x20\x2b\x28\x6b\x64\xaf\xb8\x3d\x4a\x37\x8d\xd4\x5e\xe3\xc1\xdf\x6b\x3e\xf1\x6b\x8b\x1a\xcc\xbc\x04\x06\x32\x50\xec\x47\xb8\x6a\xe5\xa7\x1d\x1d\xab\x38\xb5\xeb\x80\xd6\x63\xfa\xa7\x88\xf8\xb5\x9a\x75\x4c\x0f\x9c\x9f\x6d\x90\x62\x52\xaf\x46\xab\x1f\xff\xed\x27\x6d\x23\x88\xdb\xe7\x0d\x96\xba\x67\x47\xd1\xfe\xd4\xfc\x0b\x55\x29\x3d\x5f\x78\x7b\xda\x0c\x0d\xf4\x6a\x73\xf4\xaa\x7d\x29\xe1\xc9\xcc\x85\xcd\x04\x3e\x3d\xff\xe0\x57\x46\x2c\xa5\xfe\x5c\x64\x70\xe7\x39\x27\x6f\x8b\x53\x4c\x01\x72\xe4\x60\xf3\x40\x48\x7a\x56\x94\x68\xaa\x58\x90\xcc\x14\xf2\x0d\x67\xd7\x9c\x66\x1e\x87\xfe\xba\xc6\x27\x59\x71\xc3\x73\x08\x07\xeb\xf1\x75\xe0\xde\x10\x49\xbe\xe6\x7c\x89\x5e\x57\xb7\x1a\xb8\xa2\xf3\xcf\x36\x41\xfd\x54\x8d\x09\x41\x4f\x5f\xc3\x02\x6a\x0a\x35\xf6\xba\x95\x16\x73\x94\x49\x41\xcb\x23\x6f\x3d\x19\x76\xdc\x69\x07\x7d\x95\x14\x50\xe7\x66\x03\x16\x98\x8f\x6f\x2a\x6f\xbb\xff\x3b\x37\xce\xaa\x02\xfd\x6f\x02\x73\xbd\x80\x31\x85\xa1\x09\x03\x9c\x63\xf2\x51\x9b\x98\x3d\xaf\x65\x54\x25\x3b\xed\x54\x97\xc0\xb0\xbd\xaa\x0b\xd4\xa1\xfa\xc9\x00\x26\xad\xe3\xe4\x0c\x55\x4c\xff\x2c\xcb\x36\x99\x0e\x71\x55\x67\x08\xc5\xc4\x03\x92\x56\xff\xc7\x33\x7e\x5f\xea\x11\xf5\xe9\x0d\x3e\x4d\x93\x35\x91\x79\x11\x6a\x85\xc2\x41\x36\xca\x34\x83\x5c\xd3\x40\x12\xe4\xd7\xdd\xc7\xb7\x21\xc2\x46\xc7\x37\x00\xe2\x76\xdc\x2f\xf9\xf2\x77\x0b\x43\xc8\xe8\x0a\x17\xf0\x1d\x32\x68\x0b\xae\x22\x8e\x64\x23\xa8\x80\xc3\xfb\x99\x6a\xb8\xd2\x21\xbc\x62\x74\xac\x5f\xa7\x70\xd2\x05\xfc\x87\x8f\xba\x9b\xbd\x77\x6a\x3d\x79\xed\x77\x04\x89\x50\xf3\x6d\xc0\xaa\x3c\xcd\x28\xe4\x75\x6a\x99\x19\x04\xae\x05\x1b\x8a\x4b\x7d\xe3\xa1\xf2\xad\x0f\xb4\x5a\x33\xd0\xc6\x82\x25\x84\x1f\x8e\xb6\x5b\x6a\x16\xe9\x5f\x89\x35\x91\xe1\xaa\x73\xa6\x4f\x0d\x2e\xe9\x38\xab\x69\xad\xcc\x8c\x59\x51\x8b\xec\x50\x1c\x39\xf1\x39\x17\x4b\xbb\x00\x69\x9e\x1a\x0f\x0e\x0d\x88\x9a\xae\x54\x3a\x55\xe6\xac\x56\xd5\x20\x4c\x1a\xde\x1f\x27\xd8\x2a\x6a\x95\xe1\x4b\x2d\x69\x09\xdd\xa7\xbf\xaa\x7f\x48\x7f\xb6\x19\x59\x01\x4b\x78\x79\x5c\xb4\x63\x9f\x09\xf0\xd3\x29\xfe\xb3\x5c\xcf\x52\xed\xc2\xdb\x72\x19\x14\xe4\x23\x30\x68\x89\xa4\x83\xfe\xe8\x76\x36\x0e\xe3\x26\x33\x53\x19\x07\x0c\x56\x4f\x3a\x8b\x95\x3f\x52\xf4\x15\x13\xa2\x26\x08\x83\xc3\x8d\xd9\x78\xa2\x48\x60\x4a\x41\xbd\x4b\xfc\x9e\x84\x18\x4d\xc9\xe8\x4d\x25\x89\xf4\xaf\xff\x84\x17\x82\x4c\xe5\xad\xba"}, +{{0x7d,0xde,0xc5,0x26,0xa4,0x97,0x1d,0x89,0x12,0xa6,0xbd,0x43,0xc6,0x9f,0x92,0xed,0x86,0x44,0x2b,0x15,0xf4,0x2f,0xba,0xbb,0xf2,0xd1,0x7e,0xff,0x98,0x99,0x31,0x61,},{0x0d,0xfe,0xff,0xb2,0x76,0x23,0x09,0xb4,0x73,0x4e,0x4c,0xe2,0x52,0x3c,0xf1,0x86,0x31,0x49,0xf7,0xe1,0x9a,0x7c,0x14,0x7e,0xc0,0x89,0x9e,0x11,0x0c,0xa9,0xd8,0x7d,},{0x9e,0x60,0x3b,0x01,0x5f,0x42,0x87,0x1b,0x78,0xeb,0x27,0x52,0x3f,0xbb,0x7c,0xe9,0x62,0xfc,0xa3,0x2a,0xe2,0x70,0xe8,0xe1,0x2d,0xca,0xdd,0x25,0xaa,0x85,0x2b,0x89,0x1f,0x6f,0xef,0x77,0xb5,0x9a,0x54,0x6c,0x9a,0x7a,0x7c,0xac,0xb5,0x5e,0x1d,0x32,0xad,0xc8,0x05,0xae,0x5f,0x61,0xa6,0x9e,0x67,0x64,0xc7,0xc0,0x82,0x92,0xeb,0x03,},"\xe8\x77\x4a\x45\xd4\xd8\xf8\x6d\xda\x5c\x08\x80\x2b\xa2\x47\x2e\xf3\xc8\xd3\x6c\x7f\x38\x3a\xc0\x46\x12\xa4\x64\x38\x2e\x9d\x6c\x07\xd8\xd3\x58\x22\xc5\x3f\x43\x88\xf5\x15\x36\x14\xfe\xfa\xf4\x63\x74\x74\x7b\x9d\x4f\xd4\x46\xa8\x64\x76\x9a\x4c\xad\xe8\x43\xc1\xea\xb8\x57\x43\x19\x11\x2f\x01\x79\xd2\xea\x9e\x3c\x19\x5d\xc0\x68\xf0\x69\x74\x62\xb9\xe0\x7c\x87\x94\x87\x0f\x8f\xb8\xff\xc0\x81\xe4\x58\x6a\xfb\xcd\xba\x7a\x4f\x59\x25\xe9\xfd\x9e\xc9\x42\xd8\x43\x47\x33\xc2\xdd\xd5\xe2\x9b\xbd\xfc\x73\x42\xb9\x28\x68\x71\x9b\x54\x40\x88\xa4\x8e\xba\x4c\x82\xf1\x87\xdd\xca\x8f\x47\x46\x25\xa7\x1c\xf6\xb7\xaa\x5f\x08\x1c\x74\xf7\x40\x8f\x53\xb7\x81\x63\x6e\x7e\x9d\x29\xb0\x7f\xdb\x6d\x9c\x35\xe5\xeb\x38\x2d\xb7\xa3\x1a\x8b\xa5\x16\x91\x5d\xf8\xde\xe9\xe1\xad\x3f\x18\x28\x43\x68\x3e\x8d\x1d\xc5\xd8\x66\x9d\xbf\xcf\x09\x54\x1a\x43\xc0\xa0\x46\x13\x38\x1a\x5b\x5e\x4e\x71\xb2\x3c\x5a\xd0\x9b\x8e\xaa\x51\xcb\x93\x8d\x0c\x75\x2c\xc3\xd3\xa1\x0f\x10\xb4\x2b\xe8\xee\x7f\x6b\xda\xc8\x07\x85\x68\x43\x49\x46\xbb\xf5\x6d\xa7\x0e\x7d\x54\x15\x7a\x6e\xfd\x48\x46\xeb\x15\x52\x78\xc9\x4c\x38\x88\x65\x8a\x7a\x2f\x8e\xa3\xba\xc1\x47\xaa\x89\x16\x92\xae\x8b\x23\xf1\xaf\xe7\x1e\xcf\xde\xca\xa6\xc1\x13\xb5\xca\xaa\xa1\x93\x98\xc7\xdf\xe7\x3f\xac\xb4\x15\x5f\xd6\xba\xc1\x8d\x5d\xf2\x12\x9e\x8b\x29\x07\xec\xee\x15\x1b\xdd\x14\x7a\x7c\x3e\x46\xea\x72\x75\x4d\xe3\x2c\xeb\x06\x6d\x9d\xb1\xc2\x6e\x80\xdf\x36\x31\x29\x2b\x16\x17\x4c\xfa\x6f\x1d\x9c\x08\x28\xb8\x49\xc2\x2d\x29\x65\x1a\x73\xe9\x10\xd9\x27\x58\x77\xf4\x64\xce\x93\x26\xc6\xe4\xed\x6b\x07\xdc\xb3\xa3\x53\x63\xc1\xaa\x64\x72\xe0\x2c\x5c\xd8\x55\xe3\x8a\xab\xe9\x65\xac\xe9\xf3\xf5\xa4\xf5\xde\x03\x00\x86\x94\xcb\x90\xaf\xe4\x16\xc9\xd4\x86\x88\xde\x7f\x75\xcf\xe2\x43\xff\x7f\x41\xe0\x59\x31\x09\x34\x90\x3d\xb5\x68\x84\x45\x08\x26\x2c\x89\x9d\xfa\x75\x0c\xd6\xa2\x82\x98\x24\xba\x02\x7a\xea\x1b\x6d\x01\x77\x72\x6a\x34\x3a\xdd\x4e\xcd\xc5\xf7\xe6\xe9\x09\xab\x7d\xe6\x15\xef\x28\x07\xf9\xe7\xd7\x1c\xe2\xf7\x8a\xcf\xf5\x7e\xba\x79\xc3\xf5\xe0\x7c\x8b\x66\x1c\x1e\x30\x27\xf8\x17\x6d\x28\xbf\xef\x76\x7d\xd6\x8d\x4e\x5d\x62\x8f\xec\x0b\xfe\x88\x79\x93\x41\xf3\x06\x12\x87\x34\xfa\xd2\x02\xaa\xfc\x9f\x11\x12\x3f\xb3\xe3\x63\xd1\x0a\xee\x0d\xb5\xe2\x7a\x15\x70\xdf\xae\xe4\x7e\x24\xda\x47\x3b\x07\xfe\xe5\x9a\x6c\x93\xf0\x98\x1d\xbe\x32\x5c\xd8\xcc\x2d\x2e\xd7\xdc\x17\x16\x6b\x26\x7c\x1b\x11\x05\x36\xf2\x63\x6b\xba\x34\x75\x1a\x78\xf7\xf6\x29\x81\x82\x44\x2d\x83\xc1\x23\xbb\xee\x4f\x50\xc5\xb0\xfa\xcf\xf0\x3e\x7c\x55\x6e\xd9\xe6\x4c\xa2\x7c\x4b\xca\x5a\xb0\xde\x0d\x5f\x9c\x2c\xbb\x54\xcc\x2d\x94\x73\xa3\x2d\xf9\x99\x39\x0a\xc2\xff\xee\xd3\xd4\xcb\xa3\x49\x73\xdc\xec\x3f\xba\xba\xfc\x4d\x54\xca\xe4\xe7\xe8\x5d\x4a\x6e\x8a\xfe\x45\xca\xcd\x71\xe0\xf2\xe6\xd0\x4b\x4f\x9d\x3b\xcf\x43\xd3\xfa\x41\xe9\x98\xcc\xbe\xd0\xf1\x50\xd5\xca\x1d\x52\x72\x93\x2d\x93\xec\xa1\x04\x95\xc6\x83\x34\xfa\x32\x68\xf3\x1d\xe5\x22\xcb\x12\xa7\x44\x9f\xfb\x5c\xb5\xe8\xf1\x46\x2c\xd9\xb5\x17\x70\xcc\xaf\x58\xb1\xe0\xd8\x2e\xf9\x29"}, +{{0x0b,0x65,0x90,0xdd,0x7c,0x2f,0x15,0xf9,0x4a,0x56,0xe2,0x40,0x16,0x93,0x63,0xc2,0x67,0x32,0x30,0x2b,0x9d,0x44,0x0b,0x53,0x27,0x23,0x00,0x2e,0x15,0x5d,0x02,0xd9,},{0xcd,0x18,0xe0,0x32,0x57,0x7c,0x55,0x76,0xf2,0x23,0xf3,0xe3,0xd8,0xa1,0xfa,0x8e,0x9a,0x87,0x0f,0xef,0x09,0xe9,0x40,0x9f,0xaf,0x40,0xd7,0x14,0x3e,0x52,0xfc,0x44,},{0x64,0x2d,0x81,0xac,0xf3,0x8c,0xf0,0x99,0xa8,0x33,0xa7,0x4f,0x2d,0x80,0xb8,0x54,0x48,0xec,0x2b,0x1a,0x5d,0xdc,0x64,0x47,0x0b,0x21,0x3d,0x54,0xb7,0xbe,0x61,0x33,0x68,0x9a,0x71,0x94,0xf5,0xd8,0x97,0x92,0xe1,0x6e,0x5d,0xf7,0x55,0xa4,0xfd,0x9e,0xf4,0x68,0x9e,0xa9,0x52,0x92,0x6e,0x0e,0x4e,0xcb,0x3b,0xd4,0x81,0xfd,0x91,0x02,},"\x71\xfe\x0f\xd5\x5d\x5e\xd1\x20\x6f\x28\xee\x16\xe4\x19\xfa\xb6\xfa\x66\xa2\x51\xfa\x6b\x06\x01\xda\x26\x1e\x42\x9f\x55\xb8\xd5\xae\x3f\x3c\x52\xa1\x7f\xe1\xec\x73\x4b\x81\x0a\xb6\x3a\xad\xe4\x44\x70\x39\xca\x0a\xe4\x68\x7c\x24\x35\xf5\x61\xe4\x6c\x5b\x30\x97\x17\xab\x31\xe0\xf6\x40\x76\xb2\x16\x92\x11\x57\x2b\x74\xe1\x8a\x1f\x45\x25\xa6\x4f\xa7\x17\xa5\xed\xf1\x49\x75\x81\x29\xcb\x04\x03\x5e\x7e\x20\xba\x40\x05\xb7\x48\x09\xde\xc6\x44\x50\x4c\x24\x54\xa7\x7f\x99\xb2\x0c\x53\x74\xf3\xce\xe7\xd8\xc6\xb6\x8b\x24\x3c\xaf\xb3\x00\x98\xdc\xe9\x04\x90\xfd\xc3\xb9\x2f\x54\x94\x8f\x42\x46\x39\xe1\x9f\x8f\x20\x20\xd1\x55\x13\xda\xef\xad\xd9\xe9\xb1\x2a\x84\x76\x1e\x5e\xce\xa0\x88\xad\x56\x1f\x06\x20\x9f\xd4\x42\x3f\xcd\x00\x3f\xbc\xd1\x87\x3e\xa5\x49\x63\xa2\xfa\x07\xc7\x47\x6b\x13\x88\xf9\x01\x5d\x9e\xac\x30\x5b\xea\x5a\x3d\xe1\x94\xf5\x5a\x17\xb4\x2d\x59\x9e\x5c\xe6\x2c\x8b\x7c\x19\xe7\xe7\x09\x61\x37\xb9\xd0\xa6\x5e\x63\xc1\xa3\xb8\x45\x38\xca\x65\x36\x9a\x20\xe8\x82\x2f\xff\x5e\xcb\x57\xfc\x09\xb4\xe6\x84\x5b\x4f\x24\xd4\x88\x69\x71\xac\x1a\xc2\x8c\x77\x58\x0e\xa5\x67\x2a\xd1\x4c\xe4\x44\x17\x19\xc2\x14\x54\x6d\x07\x36\xcb\x7a\xd0\xbd\x9f\xb5\xb2\x6c\x6d\x9c\x53\x6b\xf8\xc8\x57\xae\x42\x57\x7b\x36\x34\x1d\x39\x2b\x43\x32\x3b\xda\xe7\xdf\xaa\x49\x19\x86\x87\x2a\x23\xd8\x27\xc6\xef\x8b\x57\xe7\xd0\x0f\xea\xe3\x83\x4c\x46\x64\x00\xaa\xd1\xd3\x67\x82\x39\x84\xaa\x02\xd2\xef\x49\x29\x14\xae\x11\x27\xe7\x55\x1b\x81\x25\x59\x37\x83\x05\xe4\xfd\x52\xd8\xbc\x7e\x41\x57\xec\xca\x45\x1f\x43\xee\x9f\x54\xc8\x21\x53\xc7\xdb\xfa\xf7\xec\x35\x23\x87\x73\x05\x1b\x4e\x58\x7d\xb1\x36\x95\x7e\xc5\x71\x38\x2b\x90\x59\x0b\x5d\x10\x26\x02\x45\x80\x96\x6b\x72\x52\xd2\xcd\x3f\x4f\x16\x25\xc4\x85\xba\x90\x6b\xff\x17\x59\x92\x18\x89\x78\xf2\xd6\x27\x4f\x3a\x03\x17\x49\xba\x7e\x70\x2f\x56\x54\x7e\xdc\x96\xec\x26\x7b\x84\x89\x28\x80\xd7\x50\xd7\x31\x0e\xbf\x6d\xb2\x41\x25\x3c\xab\xe4\xb2\x5a\x97\x74\x58\xc6\xff\xc9\xe3\x53\xe6\x2a\xdf\x05\xe6\xef\xc0\xfc\x1e\xbe\x89\xf5\x27\x70\x5b\xcc\x26\xb7\x01\x28\x56\x10\xd9\x8a\xa3\xbf\x23\x87\x2b\x69\x96\xd3\xde\x48\x0e\x8d\x09\xd7\x83\xc4\xa0\x8c\xd3\x83\xc9\x01\x26\x35\xaa\x68\x97\x8b\x50\x06\x81\x8b\xbd\xe4\x4f\x29\x87\x47\x9b\xcb\x2b\x71\x1c\x1b\xee\xed\x27\xcf\x09\x97\x0a\x16\x4e\x45\x4f\x71\x08\x22\xee\xf5\x55\xc1\xc7\xbf\x9f\x76\xd5\x25\x4c\xe2\x20\xc9\xaa\xa7\x16\x84\x7a\x24\x94\x88\xf9\xcd\xb4\x4c\x48\xf4\x52\xab\x52\xc4\x0f\x6d\x03\xad\xc8\xbf\x3f\x19\x7b\x25\xe3\xd1\x27\x83\x0e\x74\xfd\x81\xeb\x14\xf7\x54\x20\x5b\x3a\x48\x44\xc5\x96\xb6\xe3\xa9\x93\x6a\xd6\xfd\x9e\x80\xa1\x63\x20\xb3\x81\xc3\xff\xc7\xb6\x9e\xab\x54\x53\x6f\x55\xab\xe2\x2c\x91\xd8\x98\x40\x8e\x88\x0c\x6d\xbf\x0f\xa5\x64\x8d\x51\x77\x72\xca\xa5\x35\x3b\x25\xdb\x60\x50\xd7\x53\xfa\xf1\x98\xec\x1d\x37\x5d\xe0\xfa\x72\x18\x0a\x93\xba\xb0\x3d\xed\x77\x16\xcb\x87\x50\x5b\x68\xac\x6a\x35\xe7\x3d\x0f\xcf\x34\x45\x7e\xff\x82\x17\x89\x52\x14\x2c\x7b\xac\x9d\xfd\x87\x2a\x9a\x82\xf8\x5b\x24\xb8\x8f\xa4\x2d\x4b\xe0\xa0\xca\x0b\x2c\x70\xf4\xc6\x22"}, +{{0xc6,0xd9,0xac,0xc5,0x17,0x5f,0xa2,0xb8,0x96,0x5c,0x15,0x8c,0x56,0xba,0x0a,0x5a,0x66,0x6a,0xd2,0xc7,0x40,0xcd,0x5b,0xb6,0x79,0xbb,0xa9,0xb1,0xdc,0x50,0x92,0x84,},{0xf5,0xcf,0xca,0x21,0x1b,0x02,0xfb,0xa7,0x72,0x03,0x47,0x70,0x3b,0xf1,0x63,0x1c,0xb3,0x08,0xfa,0xbc,0xda,0xa6,0x74,0x29,0x52,0x7c,0x5b,0x7b,0x67,0x6d,0xba,0xef,},{0x4d,0x2c,0xe7,0x07,0x09,0x0b,0x0f,0x3f,0x41,0x46,0x2f,0xd7,0x5b,0xd6,0x09,0xa2,0x72,0x4f,0xad,0xfe,0x5c,0xa3,0x90,0xe3,0x13,0xa4,0x2c,0xab,0x42,0x86,0x8e,0xd6,0xe9,0xa8,0x91,0x4d,0xc1,0x39,0x09,0xc0,0xd6,0xf6,0x1e,0x63,0x71,0x29,0x57,0xc7,0x6f,0x3b,0xd8,0xb7,0xf5,0x53,0x49,0x71,0x5a,0x3a,0x31,0x75,0x15,0xc0,0x71,0x08,},"\xf2\x45\x10\x0c\xd2\xd3\x16\x48\xf5\xf3\x51\xbd\xa5\x64\xc9\xdb\x4a\x35\x82\x0c\xc3\x0e\xf6\x51\x33\x7c\x4c\xd8\x88\x07\x05\x69\xd1\x17\xa9\x34\xb9\xc9\x18\xe5\xdf\x8b\x37\x44\xdd\x66\x20\xcc\xbc\x49\xf6\xb3\xe5\x78\x2a\x30\x33\x9d\xbb\x9c\xbe\xd0\x5d\xd2\xb3\xb8\xc5\xbf\x15\x46\xe7\x0a\xf6\x36\xe6\x61\x5c\x48\xb2\xc3\xc2\xd1\x9f\xe3\x54\x20\xdf\x53\x14\xf6\x3c\x48\x12\xb5\x8e\x82\xa2\xa6\x0b\x18\x02\xf3\x8e\x50\x5c\xe7\x48\x01\x7a\xfa\x97\x7d\x3f\x9b\x1b\x6b\xea\x21\x92\xac\xec\x73\xbd\xce\x12\xd6\x5e\x68\x4d\xa4\xd8\xb4\x1f\xa9\xa8\x6f\x11\x08\x6e\xdc\x2d\x52\x96\xf6\x7e\xfc\x53\xac\x84\x07\x0f\xde\x13\x69\x3e\xb2\x31\x8f\x5a\x8c\x3b\x11\x7c\x23\x34\x22\xad\xcd\xd3\x52\xf3\x28\xf0\xec\x69\x9a\x46\x50\xc9\x3f\x9b\x4a\x7d\x79\x5d\x7f\xc2\x62\x2a\x03\xd9\x9b\x64\xf7\xb3\xdc\x31\x94\xf6\xc3\xb1\xb6\x9d\x99\x07\xce\x09\x24\x01\x07\x3f\x47\xa2\x8f\x47\x99\xd2\x29\x09\x2a\x1b\x07\x41\x29\x95\x4b\xe8\x0c\xa4\xa3\xe6\x58\x2e\xe0\x5c\x30\x2c\xac\xb7\x43\x1d\x1c\xa6\xa4\x51\xaa\xed\x72\x78\xab\xc7\xf7\x85\x75\x24\x1c\x2a\x2e\xea\x2e\x84\xcb\xf9\xa3\x34\xdf\x40\x21\x09\xc0\x28\xe3\x45\x47\x3a\x13\xaf\x9b\x00\x8e\x20\xbc\x8c\xf0\xbc\xef\xbb\x7a\xa7\x27\xec\x85\x6e\x99\x25\xb4\xdd\xd9\x9d\xeb\xa8\xf2\x52\x91\x1a\x59\x01\x54\xb5\x79\xa8\xaa\xa3\x1f\x07\xdd\x50\x25\xdf\x5c\xd8\xa0\x9f\x74\x29\x64\xcc\x8c\x36\x5d\x8a\xff\x4e\xb1\xd7\x9f\x6e\x5a\x07\xda\xc5\xf4\xed\xe9\x2b\x4e\x2e\x61\xd3\x4c\xc2\xd4\xf0\xaa\xaa\xb0\x37\xad\x5f\xdb\x95\xde\x6c\xd5\x98\x4e\xba\xf7\xcc\xe7\xf0\x8d\x0c\xa0\xdb\xbe\x48\x3c\xe3\xcb\x35\xcd\x79\x0c\xa0\x42\x70\x65\xa3\x4d\xf7\xf4\xc2\xaf\x86\xef\xe9\xb7\x65\x71\x3a\xff\x25\x7f\x5c\x1d\x54\x70\x95\x27\xad\x18\xac\x33\xab\xcd\xee\xdb\x20\x80\x64\xeb\xae\xa4\x83\x5b\xe4\x94\x2b\x8f\xc6\x66\xad\x1b\x79\xb6\x65\x13\x09\xe5\xea\x1d\xa3\x02\xd7\xfb\xa2\xe9\x9f\x0e\x63\x19\xe8\x2b\x99\x05\xa1\xea\x48\x2b\xa0\x43\xb6\x80\x0b\x33\x0d\xc4\x8b\x33\x13\xf5\x9b\xb2\xf9\xe8\xa7\xf0\x7e\xb1\x80\x0a\x70\x27\x45\xdb\x14\xc6\x29\x9a\x98\x2d\xad\x89\x79\x54\x44\x5b\x7d\x98\xeb\x58\x37\xfd\x70\xbf\x19\x0c\x64\x95\x52\xc8\xe8\x6f\xeb\x7f\xf5\xb3\xed\x8e\x0a\x06\x70\x4d\x45\x53\xa3\xc2\xdd\x74\xf1\x8e\xa8\x23\x3a\xe0\xa5\x0d\x91\x4f\xe0\x8f\xbc\xd3\xa1\x43\x5f\xed\x56\xa9\xf3\xa7\xef\xfa\x14\x0f\xb5\x52\xdd\xd2\x1d\xff\xff\x7f\xa4\x73\x32\xdd\xfc\x1e\x53\x17\xf4\x17\x7d\x5e\x2f\x11\xa0\x6e\xc8\x4c\xcf\xb8\x9b\x65\x4e\xa8\x1b\xd4\x2d\x7e\x07\xa3\x87\x30\x1d\x0f\x40\x26\x4a\xbb\xf9\xf9\x10\x7b\x30\xed\xe8\x64\xcc\x76\x90\xc0\x6d\x2e\x24\x7a\x06\x0b\xb2\x24\x4a\xd7\x8e\xd5\xc5\x51\x5a\x1a\x2a\x61\x2d\x61\xe3\xd9\x31\xe2\x8b\xc9\x39\xb4\xd3\x43\x5e\xee\x4f\x73\x31\xb1\xf0\xf8\x53\x75\xd8\x2a\xc9\xa7\x7c\x43\x74\x00\x32\x05\x17\x46\xdc\x92\x69\x45\x8c\x14\x7d\x18\x8d\x84\x40\x19\x54\xa4\x89\xcb\x4f\xbf\x9b\xf8\x4b\xa7\xd8\xf1\x00\x90\x3c\xe6\x78\x31\xb4\x05\x4d\x0f\x58\xcd\x88\x3d\x54\x2c\x49\x33\x10\x3f\xf0\x70\xcd\xfc\x9d\xbb\x0f\xcc\x31\xef\xca\x46\x6e\x77\xa3\x3f\x1a\x81\x3d\xa6\xdc\x0c\x7c\x31\x58\x5e\x8f\x4f\xef\x1e\xbf\x42\xfb\xd1"}, +{{0x7d,0xfa,0xe4,0x16,0x41,0x9d,0x7b,0x0d,0x4f,0xc1,0xf8,0x23,0x84,0x0c,0x3e,0x4b,0xd4,0xad,0xcd,0x4d,0xc2,0xdc,0x17,0xb3,0x86,0x37,0xac,0xed,0xac,0xbd,0xbb,0x45,},{0xbc,0x51,0xd7,0x74,0x59,0x31,0x31,0x7e,0x1e,0x34,0x6e,0x2e,0x7c,0x92,0x03,0x91,0x81,0xb6,0xbf,0x38,0xee,0x2f,0x5a,0x44,0xfb,0xe2,0x33,0x9c,0x4f,0x95,0x2a,0xb9,},{0xda,0x34,0xb1,0x98,0x3e,0x8c,0x55,0xe4,0x1f,0xda,0x8e,0xc8,0xab,0xf2,0x3b,0x36,0x7a,0x0d,0xa6,0x06,0xc8,0xcd,0xbb,0x1e,0x8b,0x57,0xe0,0x34,0x3c,0x05,0x57,0xa5,0xf0,0xe8,0x15,0xe7,0xf2,0x2f,0x86,0x05,0xae,0x93,0xb2,0x7d,0x03,0x77,0x6a,0xc1,0xf7,0xde,0x3d,0x79,0x2e,0xa2,0x93,0x3a,0xc2,0x2d,0x2d,0xc2,0x3b,0x32,0x3d,0x0c,},"\xec\x84\x3d\xc4\xdd\xa6\xe9\x02\xe9\xbe\x31\xb7\x0f\x11\x76\x3b\x75\x7a\xb6\xce\x73\x34\xdc\x00\x76\x4b\x2d\x08\x4e\x9d\xaf\x24\x84\x48\x59\x84\xee\x28\xa2\x83\x0f\xcb\x94\xc5\x41\xcb\x46\x94\x40\x03\x67\x31\xde\x80\xff\x56\x0f\x53\x0c\x9d\x9e\x6e\x1f\x7d\x9c\x4c\x5b\xdf\x50\xb0\x4f\x54\x03\xc2\x9f\x76\xd7\xe3\x6e\x00\xbb\xea\x35\xdb\x1c\xc6\x0d\xa8\xd7\x76\x52\x62\x66\xc3\x32\x4c\xe7\xef\xec\x64\x50\x85\x96\x09\x26\x68\x56\xd7\x01\xa4\x7a\x48\xde\xe8\xbf\x37\x40\x95\x65\xc7\xfb\xfa\x99\xa2\x04\xe5\x53\x0c\x97\x1c\x60\x5b\x44\x30\x5d\x5c\x74\x67\x89\x41\x14\x25\x3c\xf4\x3c\xdd\xf1\x8b\x62\x96\xdd\x25\x4a\x4d\x96\xac\x70\x00\x91\x81\x86\xdf\xd4\xbf\x45\x4e\xd3\x09\x74\xc5\x53\xd0\xae\x15\x1a\xd4\xcf\x54\x0c\xec\xaa\xa0\xb5\x94\x8b\x09\x85\xa9\xc7\xb6\xe7\x81\x59\x32\xba\xc1\x17\x32\xfc\x7d\x10\x26\x7f\x6b\xf8\xf1\xe7\xc0\x8d\x65\x0e\x56\x7b\x4e\xdd\x15\xae\x79\x58\x41\x0e\x42\xf1\xf5\x37\xfa\x73\x2f\x72\x7a\x26\x83\x88\x32\x1d\x53\x44\xc4\xe7\x8b\xb9\xa7\x4e\xab\x9d\x6a\xbf\x96\x89\x65\xc6\x66\x93\xd5\xf1\x12\xdd\x4c\x14\xfd\xfd\xd9\x60\x05\xea\xa6\x75\x7f\xa2\xcc\x10\x13\xfe\x43\x27\xab\x09\x99\xd1\x17\xf3\xdb\xf3\x25\xb0\x7c\xd4\x54\xd4\xb1\x41\x99\x1e\xf7\xe2\x3d\xb5\xee\x24\xbe\xda\x35\x88\x4a\xa3\x70\x48\x08\x64\x8a\xa4\x3c\xd6\x25\x62\x59\xf7\xd3\xdb\x5e\x05\x53\x11\xf2\x53\xe8\xb5\x7a\x4c\xda\x5a\xfe\x0b\x0a\xdf\xc3\x64\xe1\x60\xca\x37\xe8\xde\xc6\xb9\x5a\xa6\x15\x2e\x5d\x5d\xa6\xeb\x91\xbe\x0e\x44\xff\xe8\xe4\x95\x33\x26\x7b\x7e\xb7\x95\xf5\xf8\xe0\xb2\xc3\x5b\x29\xdf\xbc\x87\x58\x5f\x22\xbd\x5b\x90\x9d\xfd\x6a\x5e\xdc\x0e\x3a\x9d\x97\xb0\xc4\xf3\xad\xc5\x1e\x96\x99\x37\xc0\x8f\xd6\x5f\x53\x7a\xac\xda\x8f\x11\x27\x5a\xf0\x2c\x33\x54\x54\x26\x30\xf3\x92\x0c\x39\x3f\x5c\x42\xb9\xfc\x63\x3d\xe9\xd9\x4c\x72\xe3\xf2\x00\x02\x34\x9a\xd0\x41\x80\x35\xb3\xf2\x5f\x02\xca\x92\x8e\x5b\x2d\x40\xa7\x7a\x1c\x3e\x56\x22\x1f\x4b\x9d\xb0\xc2\x5b\x09\x6d\x6e\x5d\x0f\xe7\x58\xda\x2c\x69\x05\x3e\x8d\x08\x6d\xef\x4e\xdc\x6e\x34\x53\x78\x3f\xfc\x63\xa4\x96\x01\x22\xd9\x23\x67\x1a\x90\x60\x08\xba\xc1\x05\x61\xae\x62\x19\xd2\xb5\x1d\x53\x67\xbf\x13\xcc\xab\xf5\x93\x1b\x9f\x18\x6e\xb1\x09\xba\xcd\xe4\x0e\x1a\xf2\xb5\x64\x81\xe0\xc6\xdc\x6f\x5c\x54\x73\xf8\x00\x1c\xf3\x71\x91\x9a\xcb\x40\xce\xc5\xb9\x62\xeb\xba\x80\xe3\x2d\x6e\xba\xc4\x80\x6d\x04\xd2\x47\x68\xc2\xad\x2e\x3f\x92\xa8\xcb\xe4\x77\x54\xf9\xbf\x61\x59\x53\x52\x2b\x26\x3d\xc2\x49\x37\xfb\xd9\x32\xc8\xc4\x59\xeb\x8b\x10\x94\x43\xaf\x6c\x19\x5a\x59\xfd\x27\x21\xb0\x12\x56\x28\xf2\xb8\x14\x3c\xf3\xc1\x28\xbc\xec\x13\x92\xef\xd1\x6b\x73\x4c\x10\x71\x6d\x96\xba\x7d\x1f\x41\x39\x17\xcc\xaf\xa5\xbf\x5f\x83\xf5\x24\xfe\x84\x06\xa1\x52\x11\x5e\xa7\x70\xe1\x74\x5e\x82\xe8\xb5\x1d\x75\x2b\x8b\xd7\x85\xdf\x48\xbf\xc1\x20\x41\xbf\x87\x4f\xc7\x3a\xfb\x42\xca\x5d\x69\xc6\x41\x64\x79\xce\xb4\xaa\xa0\x49\x2b\x6f\xf2\x1e\xe1\x2d\xb2\x21\x3a\x42\x86\xfd\x56\x05\xc9\x3a\x7b\xb8\xa3\xb0\x71\xb0\xb2\x5f\xb0\x1d\x77\xab\xbc\x87\x71\x48\x94\x70\xa1\x07\xaa\xda\xe9\xf6\x40\xc2\x4d\xfd\x53\x28\xf6\x0f\x4b\x7d"}, +{{0x70,0x94,0x16,0x07,0x49,0x97,0xb9,0xc9,0xaf,0x4d,0x37,0xa0,0x11,0x39,0xe8,0xa3,0xf9,0xf2,0xce,0x5d,0x72,0xa5,0x7d,0x80,0x5e,0x82,0x2a,0x81,0x18,0x6d,0x01,0x7e,},{0xae,0xe1,0x10,0xf1,0xf4,0xd4,0x6e,0xa6,0x06,0x49,0xd7,0x86,0xb1,0x50,0x05,0x2e,0x28,0x7a,0x9d,0xa6,0x01,0x22,0xc4,0x7b,0x09,0x08,0xfa,0x8b,0x2c,0xa2,0x8a,0x80,},{0x8e,0x4b,0x41,0xf0,0x97,0xd8,0x36,0x14,0x18,0x4b,0xa7,0xf5,0x2b,0xa2,0xfd,0x9f,0x05,0x65,0xf8,0xa6,0x37,0x21,0xef,0x55,0xf9,0x31,0x62,0x82,0x6b,0x9f,0x0a,0xc0,0x70,0xc0,0xe2,0x86,0x4b,0x5f,0xfd,0x8e,0xcc,0xc1,0x8e,0xfa,0xd1,0x8b,0x2c,0xe8,0x4b,0xe5,0x7c,0x0b,0x4a,0x41,0xc5,0x2e,0x20,0xef,0x37,0x72,0x23,0x77,0xc6,0x0f,},"\xed\xda\xa3\x69\xc0\xe3\x1a\x1f\xcc\x1d\xa4\x6f\x65\x36\x24\x42\xa0\xcc\x21\xc7\xdc\xdd\x5c\xd9\x0e\x0a\x2e\xe9\xf2\x51\x10\x81\x2b\xa1\x14\x93\x1c\x86\x8a\x70\x86\x07\xac\x16\x08\x4d\x79\x71\x5d\x13\xb3\x38\xc0\x5c\x6a\xef\x73\x43\xe7\xda\xd2\x82\xf9\x6f\xe2\x81\x93\x18\x8f\x0c\xc8\x93\xc7\xdc\xe8\x05\xfd\x3a\x7c\xd2\x68\xb7\x28\x94\x16\x0b\x52\x45\xfe\xd9\xfa\x99\x43\xb7\xc8\x0a\xdb\x3c\x2d\x1a\x35\x3d\x8f\x12\xdf\x25\xa3\x1d\xde\x7f\xa3\x85\xbb\xec\x35\x1d\xa6\x6f\x15\x30\x32\xe1\x77\x56\x27\x3f\x8d\x54\xe9\xa3\xb9\xea\x25\xae\x67\xd1\xe9\xc1\x8c\xc6\x8b\xe6\x01\xe3\xd6\x82\x82\x81\x8c\xe0\xe7\xcf\x88\xa4\xd1\x33\x64\x53\x02\x17\x32\xf0\x8d\x9e\x76\xcd\x23\x63\x79\x29\xb0\x91\x1d\x5f\x86\x14\xf4\x84\x2e\x67\x0c\x14\x28\x60\xaf\xc2\x65\xc5\x01\x72\xb1\x3b\xfd\x35\xad\x8f\xc5\x4b\x28\x65\x7d\xa3\x2b\xac\x15\x3b\xa9\xaf\xfc\x89\x7a\xfb\x3c\x72\x1f\x48\xca\xa4\x62\x40\x58\x57\x10\xb0\xf2\xd2\x4d\x5f\xf4\x96\x5d\x1d\x10\xf1\xa0\x7b\x06\xab\xea\x6a\x08\xe1\xd6\xf1\x50\x0d\xa1\x2c\x43\x4a\x6d\x77\x8c\x94\x10\x67\x10\x80\x00\x47\x5c\xe8\x31\xbc\xfe\x2d\x0a\xfe\x40\xb7\x41\x9d\x07\x05\x9b\xc0\xcd\x8d\xce\x4b\xe9\x58\x7f\xf2\x9a\xd8\xbf\x0b\x26\x8a\xe2\x3c\xe0\xda\x5b\xb5\xbf\x74\xff\x0b\x2b\x31\xb8\x21\x12\xa9\xfd\x5a\xbd\x9b\xfd\x0a\x90\xe6\xf4\x72\x35\x48\xc6\xbb\x2f\x99\xdc\x06\x1b\xa3\x2e\xba\x2d\x53\xe6\xbc\x79\xbf\x44\x1b\x23\xfb\x74\x60\xde\x04\xe8\xe8\xef\xbc\xd4\xd4\xcc\x73\x55\xde\x9e\x3b\x08\x61\xa6\x81\xb9\x83\x83\x9d\x44\x88\xe5\x51\x75\x1f\x23\xe9\xa6\xe2\xe4\xd4\x43\x27\x3b\x9e\x0f\xe6\x4d\x8a\xcd\x1c\x74\x8b\x55\x59\x43\x82\x23\xdd\x21\xb5\x18\x31\x89\xe0\xf3\xc0\xe8\xed\x41\x4c\x03\x56\xba\xb7\x7a\x65\x4d\xe1\xa5\x77\x14\x62\xef\x14\x34\x49\x70\xa4\x91\x51\x1a\x72\x29\x14\xf4\xa8\x9f\x4f\x1a\x82\x7e\x18\xcd\x84\x47\x9c\xc9\x25\x92\xea\xdf\x8d\xe2\xdf\x82\x4b\x97\x6d\xcb\xd2\x84\xa3\xba\x64\xbc\xdb\x0d\xf1\x5e\x8f\x41\xc0\xb2\x47\x15\x86\xb2\x6a\x06\x35\x3d\x90\x50\x28\x23\x5c\x1c\x6e\x5c\x45\x87\x22\x27\x25\xaf\x08\x3e\x11\xe7\x9c\x94\x3a\xa4\x44\xd4\xaa\x41\x21\x8d\x3e\x97\x43\x36\xe3\x72\x81\x3e\x99\xe2\xb0\xc5\xf0\xae\x81\x0f\xfe\xd9\xa7\xa3\xd6\xcb\x74\xc5\x47\x3d\x99\x0a\x59\x11\x32\x9b\x8e\x82\xec\x6b\xf2\xbd\x43\x21\xbb\x48\x73\x70\xf8\x73\x9e\x7a\x2a\x4a\x53\x43\x08\x33\xd4\x5b\x9f\xe3\xde\xb9\x3f\x79\xfc\x6a\x51\xd5\x63\x69\x5e\xcd\xb9\x78\x58\xd2\x13\xda\x58\x44\x34\xb7\xc7\x15\x46\xaa\xe8\xd9\x67\xe1\xc6\xd0\x08\x2b\x10\xd4\xa7\x2d\xe1\x74\x2e\x53\xc4\xb2\xf9\x2e\xb8\xb5\xc8\xc3\x5a\xb6\x53\x5e\xa8\x10\x0b\x37\x92\x4a\x0a\x91\xd2\xa7\x28\xd0\xf5\x64\x24\x37\xaa\x66\xc8\x2a\xb7\x4b\x5d\x07\x45\xec\x08\xf7\x70\x5c\xb8\x1f\xa0\x79\xd8\x9e\xcd\xc9\xaa\x1f\x8d\x7d\x82\xdc\x77\x46\xd3\x46\x15\x34\x3a\x69\x25\xdc\x31\x8f\x35\x2a\x2b\x45\x01\x24\x38\x42\x4f\x90\x98\xfd\xdf\x6e\x61\xfd\x1f\x8f\xb4\x9d\xa4\x0b\x3e\xec\xe8\x9a\x1a\xf1\x99\x6d\xe7\x0c\xd1\x69\x6c\xbf\xd9\xe3\x01\xea\x5f\x44\x37\xc7\x1a\xc2\xa0\x32\x25\x4c\x14\x0a\x90\xe8\x5f\xb8\xff\xc4\x66\x7f\xa1\x39\xc1\xee\x9b\xbf\x12\xee\xd9\x06\xa9\x67\xbc\x09\x21"}, +{{0x3d,0xcb,0x7a,0xe7,0xd9,0xf0,0xf1,0x41,0xf1,0xd9,0xf0,0x78,0x83,0x63,0x5b,0x91,0x3e,0xd2,0x9f,0xb6,0x1d,0x0f,0x74,0x1c,0x9a,0xfd,0x05,0xa2,0x7b,0x04,0x5b,0x06,},{0xae,0x62,0xb7,0xee,0x1b,0x8d,0xb5,0x76,0x4d,0xaf,0xdd,0xd9,0x72,0x4a,0xcc,0x10,0x6d,0x6c,0x0a,0x4d,0x1e,0x85,0xd8,0x90,0x6f,0x75,0x84,0xb5,0x58,0xf5,0x77,0xdf,},{0x09,0xa1,0xe6,0xfe,0xdf,0x97,0x1b,0x3e,0xdb,0xfa,0xef,0xbe,0xb8,0x9a,0xa5,0x39,0xca,0x0b,0x02,0xb3,0x7e,0x7a,0xc4,0xea,0x89,0x20,0xd6,0xd4,0x34,0x8e,0xe0,0xcf,0x9a,0x2d,0x5e,0x96,0xfc,0xe5,0x17,0xc6,0x65,0xe7,0xc3,0x83,0x68,0xba,0xf2,0x49,0x79,0x24,0x9a,0x95,0xb7,0x0e,0xa7,0x43,0x6c,0x00,0x78,0x5f,0x16,0xa3,0xae,0x09,},"\x38\x11\x6a\x57\x26\x69\x07\x0d\xd5\x86\x32\x18\xc9\x1a\x77\xa4\xab\x47\x55\x36\x88\x48\x8c\x79\x28\x38\x50\x9e\x9a\xba\x25\x06\x7a\xdb\x7e\xa4\x24\x98\x48\x00\x9d\x91\x4a\xe9\x87\xa6\x03\x23\x48\xc1\xc0\x68\x1c\xf9\x77\xa9\x55\x2d\xd6\xbb\xf4\xe6\xff\x32\xac\xc9\xfa\x61\xcb\xee\x25\xa3\x93\x07\x65\x0f\x8b\xa6\xa7\xce\x42\x1e\xf2\xf7\x1b\xcc\xc0\x95\x81\x38\xf9\x32\x4c\x86\xbf\x2e\x52\x8f\xa3\xe4\xd1\xb1\x9f\x9f\x2c\xa5\x26\x84\x09\xb8\xcc\x19\xc6\x2d\xd9\x79\xb8\x96\x97\xe4\x57\xed\x2d\x98\xbd\x20\x96\xf6\x2d\x3d\x9e\x24\x73\x88\x79\x59\x27\x80\x3e\x79\xab\x71\xd4\xf7\x2f\x56\x8e\x94\x5a\x8a\x16\x21\x59\xd9\xb8\x48\x36\xe4\x58\x56\x44\xd4\x97\x9f\x61\x4a\xad\xa7\x3a\xd4\x13\xa8\x33\x91\xe9\xcf\x88\x0c\x42\xac\x2a\x98\x34\x3b\x6a\x82\xcd\x2b\x61\x58\x14\x56\xf6\xde\x5c\xeb\x24\xfe\x46\xb7\x62\x5d\x52\xab\x2c\x2c\x32\x4a\xc7\x47\x03\xd1\x5e\x15\xf1\xae\xff\x80\x55\xd2\xf7\x39\xf7\x36\x3e\x16\xec\x1d\x78\xbe\x2c\x62\x99\x43\x6c\x8c\x8d\x33\x6b\xd2\x92\x71\xa8\x97\xa6\xec\x93\x2e\xd0\x87\x25\xbe\x21\xb2\x8f\x9a\xa1\x4e\xaf\x4f\x71\x85\x31\x54\xdb\x14\x58\x7c\x93\x0a\xb3\xeb\x02\x27\xad\x7f\xfb\x45\xb3\xba\xa6\xa9\x99\x49\x9c\xc8\xa6\xe4\x5b\x1a\xb4\xd0\xb3\x39\x78\x2b\xcd\x9c\xfb\xcf\x88\xcf\x7e\xae\x89\x1c\xc8\x41\xe9\xc8\x8a\x1f\x6a\x69\x1f\x39\x48\xa6\xbc\x85\xba\x7f\x46\x11\x64\x2e\x84\x22\x3c\x3b\x17\x89\x46\xdd\xbe\xdd\xcf\xcd\xef\x4a\xe4\xc4\xe1\xa8\x14\xb9\xb1\xf0\x2b\x1e\xaa\x82\x4d\xb9\x3f\x44\xb2\x7d\x14\x20\x6b\x34\x04\x65\xa1\xce\xfc\xf5\x35\xc6\x3e\x55\xc4\x28\x72\x24\x26\x27\x33\xd9\x8a\xaa\xa1\x54\xf3\xad\x42\xcd\x85\x46\xa4\x61\xce\x0d\x46\xd8\x86\xd3\x46\x1a\x21\x50\xcb\x45\xdb\xe5\x64\x73\xff\x63\xd3\xdc\x7a\x2b\x95\x7b\x82\x39\x69\xf1\x9b\x59\x68\xe8\xb4\x24\xc8\x79\x74\x19\x26\xd8\x2c\x63\x86\x75\x3b\x0f\xa1\xf0\x80\x28\x4e\x55\x78\x94\x23\x63\xaa\xde\xb2\x1f\x8e\x1e\x89\x09\xfa\x6c\x38\x07\x64\x14\x9b\xc9\x15\xb2\x28\x60\x4e\xfc\x56\xd9\x2e\x4b\xeb\x72\x0e\xdc\x74\xc4\xd7\x8f\x92\x5d\x6c\xfd\xf7\xba\x2f\x14\xb5\x62\x37\x75\x81\x0d\x2d\x07\xbd\x38\x8c\x57\x3e\x36\x52\x3f\x21\x57\x38\xe6\x91\x14\xdc\xf8\xd8\x0f\x17\x0b\xfa\x67\x6e\x31\xfb\x62\x6a\x7d\x44\x9e\xd9\x66\x47\x36\x34\x75\x97\x0c\x8c\x47\x80\x97\x09\xbc\xb5\xe7\x20\x0f\x2a\x22\x7c\x7c\x8e\x7b\x00\x0f\x30\xc0\xbd\xe6\x1d\x67\xbd\x68\x95\x36\x16\x29\xa3\x6c\x8f\xdd\x5a\x56\xb8\x1e\xfb\xac\xf1\x5c\x1b\x35\x30\xa0\x8c\xde\xd5\xb1\xfd\x45\x7f\xbd\x2f\x03\x04\x2f\x56\xf1\xb3\x7e\xd1\x5c\xdb\x91\x2f\xa0\x29\x8c\x27\x67\x25\x08\x7e\xe2\x7d\x3c\xf2\x55\x0f\xe6\xe8\xa0\x33\x0a\xf4\x17\xf4\xf5\xba\xf0\x36\x27\xed\x67\xc5\xf8\x32\x33\x63\xab\xac\x5a\x1f\xe3\x48\x23\x18\x0e\x3e\x0e\x20\x80\xf7\x5b\xfd\x91\xc2\x07\xcf\x6b\xaa\x9a\x22\x9c\xf4\x43\xdd\x44\x2c\x59\x02\xe0\x67\x3f\x32\x52\xb8\x52\x63\x46\x58\x58\x72\xf6\xcd\x36\x60\x25\xa5\x69\x92\xb7\x0e\xde\x39\xbc\x8d\x32\x2f\x9c\x22\xa1\xdc\x59\x9e\x9f\x0d\x52\x4c\xb6\xd2\xea\x5a\xe2\x87\x8e\xf6\xbe\xd4\xb7\x02\x80\x7f\x1e\x1e\x73\xeb\xf2\x90\xeb\x6c\x0e\xeb\x85\xc1\x37\x16\xf6\x26\xaa\x90\xd3\x64\xb4\x90\x48\x37\xce\x05"}, +{{0x29,0x73,0x11,0xdd,0xef,0xfe,0xc9,0xd2,0xbe,0x68,0xef,0x7b,0x2a,0x20,0xfe,0x2d,0x27,0x7e,0x1d,0x8e,0x51,0x64,0x8b,0x03,0x57,0x2a,0xda,0x27,0xec,0x1f,0x9f,0x43,},{0x6a,0x6c,0x28,0xe7,0x61,0x64,0x0c,0x40,0x08,0x33,0x3a,0xae,0x5a,0x33,0x66,0x30,0x2e,0x2f,0x46,0x77,0xa9,0x53,0xba,0x48,0x2a,0xb6,0xfb,0x4a,0x1d,0x70,0xb4,0x47,},{0x4b,0xf0,0xb9,0x2c,0x6e,0xe4,0xea,0xce,0x5e,0x8e,0xb1,0x03,0x70,0xff,0x9d,0x9c,0x68,0xa5,0x74,0x9d,0x59,0x89,0x9d,0x04,0x32,0x7a,0xaa,0x38,0xf8,0xf8,0x25,0xe0,0x32,0xe5,0x97,0x42,0xb3,0x7d,0xe2,0x31,0x07,0xa3,0xec,0xdd,0x3f,0x7a,0x0d,0x08,0x12,0x26,0x14,0xb7,0x8f,0xdd,0x37,0x29,0x3c,0x8d,0x05,0xe2,0x8f,0x5f,0x71,0x08,},"\x26\x52\xac\xfc\x3b\xdf\x09\xa5\x99\xec\x67\x86\xbb\xd9\x4f\xe5\x77\xcf\x57\x8e\x02\x63\xcc\x68\xd9\xf5\x7a\x6c\x83\x45\x8f\x80\xac\xd8\xa7\x5e\xf0\x30\x40\xa6\x35\x67\x2b\x96\x8f\xf2\xaf\xdb\x28\x8d\x28\xb9\x99\x6f\x64\x15\xb2\xf3\x17\x5e\x9e\xa3\x7a\xeb\x05\xdf\x81\x81\x2e\x38\xa4\xc9\x76\xeb\x92\x85\x6c\xed\xb9\x1a\x26\x9a\x46\xfc\xa5\xdf\x9b\xd7\x30\xfd\x84\x45\x2b\x4b\xd9\x35\x77\xc6\x1f\x42\xc1\x41\x13\x97\x98\x82\xa8\x6a\x9f\xe6\x32\xe4\x75\x6a\xfd\x89\x81\x6f\xc4\x67\x0a\x31\x05\x03\xfd\xaa\xd2\xdb\x76\x4c\x37\x21\x21\x3c\x3e\x60\xf2\x9c\x26\x68\xd4\xde\x8f\x42\xb0\x87\xf2\x5c\xd5\x6c\x69\xa4\xe4\x8f\x13\x4f\x55\x98\xcf\x14\x5b\xe6\x38\xa5\xc2\x31\x88\x63\x32\x90\x61\x72\x9a\xac\x91\xda\x6a\x19\x1f\xd7\x74\x88\x0c\xf9\xcb\x55\x5e\xec\x15\xb0\x04\x4f\x10\xe5\x43\x3f\xb4\x6a\x9b\x88\x92\xda\x8f\x6d\x24\xf1\x42\x58\x8b\x70\xff\x0b\x49\x20\x0c\x50\x6b\x88\xbe\xd4\x49\xad\x10\xd3\xf9\x2c\x2b\xae\xda\x6b\xbf\x58\x67\x6c\x5b\xbc\x67\xd3\x1f\x64\xfb\x12\xe8\xd5\xe7\x88\x76\xd5\xc8\x49\xfc\x31\x4b\x2c\xf8\x01\x0c\x51\x02\x04\xc8\x63\x3d\x0c\xc3\x18\x56\xec\x6a\x11\x4e\xa8\xa8\x9c\x48\x92\x7b\x07\xa3\x1a\xb8\x42\xc9\xb8\x35\x2d\x93\x67\x34\x51\x41\xa9\x9b\x40\x04\x9d\x5c\x48\xe7\xd2\x7c\xab\x42\x7a\xde\xfd\x1f\x0f\xc1\x13\x6b\x35\x3c\xb0\x1c\x3d\xef\x91\xff\xfe\xe8\xad\x91\xe8\x8f\x4b\xb7\xd2\x61\x5c\x0d\xcc\x95\x34\x4c\xd0\x19\x50\x93\x8e\xcb\x14\xb8\x44\x6b\x56\xa0\x6b\xf2\xf2\xf6\x5f\xb8\x73\x5e\x8a\x7b\xc9\x6b\xb4\x6c\xe9\xca\xc7\x1a\x88\xeb\x8f\xda\x5e\x69\xd6\x9e\xb2\x9a\xa4\x2a\x01\x6b\x85\x83\x89\x3e\x9d\x72\x77\xcb\x13\x59\xc5\x68\x7e\xed\xcd\x59\x9d\x8a\x46\xe6\xc1\x49\x63\x63\x7d\xb0\x4a\x92\x9f\x4b\xc7\x93\x04\xac\x2d\xae\x73\x3b\x3a\x83\x9e\xb7\x4f\xbe\x3d\xe5\x04\x2f\xd6\x55\xea\xec\xb1\x5f\x39\xb2\xfe\x16\xda\xd8\xa6\xff\x8d\xbc\x05\x4f\xed\x51\x28\x2a\x85\x6e\x9d\xa6\x31\x6f\xac\x6d\xb5\xd5\x6f\x77\xf1\x8d\xa8\x41\x2e\xb3\x77\xe5\xb1\xb8\xf4\xcb\x13\x54\xec\xfe\x8f\xe8\xfd\x54\xe6\x2d\x76\x7a\x80\xde\x04\xcb\x76\x20\x22\x9a\x88\x31\xdb\xc9\xec\xd4\x57\x8f\xfa\x2f\xf0\x6b\x54\x45\xe4\x40\xd6\x9a\xab\xc9\x4c\x47\xbd\x17\xf2\x2b\x69\xf5\x2e\xea\xe5\xcf\xcd\x01\xa5\xca\xfe\x05\x80\x07\x2a\xe9\x16\x6b\x95\x74\x3d\x68\xc3\x56\x4c\x5a\x7e\x46\xf2\x4b\xc4\x8a\x89\x8a\x1a\xb2\xeb\xe6\x3f\x36\x85\x1d\x2a\xac\xfa\x0c\x4f\x32\xd9\x93\x77\x1d\x31\x4e\x72\x5a\x43\xd9\x80\x5d\x13\x71\xcf\x72\x3e\xf1\x61\xd4\x2e\x63\xff\xca\x68\x8d\x7f\x0e\x21\xef\x5b\x3f\x9a\x56\x1a\x62\x10\x70\x2b\x85\xfb\xd1\xf8\xca\x75\x38\x9c\xc7\xa2\x27\x39\xba\xe4\xde\xd9\x37\x57\xf1\x52\x0d\xc3\x88\x44\xa1\xa8\x8b\xe8\xe0\x96\x45\x05\x91\x48\x80\x7b\x93\x37\x70\x87\x8c\xb8\xa9\xad\x92\x11\x31\x71\x31\xe6\x93\x24\x53\x2f\xd0\x27\x9b\x83\x18\x5b\x62\x8f\xc2\xf9\xe2\x15\x00\x38\x46\x93\xfa\x29\xf2\x6b\xd1\xb9\xc3\x01\x60\x13\x67\x66\x5f\x05\xf3\x72\xda\xb4\xe3\x10\x77\x26\xcd\x3f\x63\x9c\xa6\x2b\xf6\x3a\x75\xf7\x7e\xaa\x75\xf7\x13\x61\x57\xad\xa2\x37\x4e\x65\xfb\x4f\xd3\x49\xb4\x5e\x25\x44\x1f\xd2\x1b\x13\xe6\x91\x13\x66\xb9\x7c\xfb\x4d\x6a\xd5\x22\xb8\x50\xad\xf4\x0c"}, +{{0x4d,0xb2,0xb5,0x81,0x44,0xa8,0xd2,0xd0,0xec,0x03,0xbb,0x9b,0xc2,0x9b,0x4c,0xa8,0x93,0x85,0x4c,0x80,0xb6,0x4a,0xfa,0x4a,0xf7,0xa9,0xc9,0x36,0x93,0x5e,0xcb,0x04,},{0xfc,0x5c,0xd7,0x50,0xe1,0x74,0xed,0x71,0x8b,0xd9,0x38,0xfa,0x8e,0xd9,0x9a,0x1b,0x9d,0x55,0x6b,0xa7,0x67,0x0f,0x2a,0x77,0xda,0xf1,0xc7,0x20,0x11,0x37,0x32,0xa5,},{0x42,0x45,0x17,0xaa,0xdd,0x85,0x3c,0xe3,0x98,0x57,0x59,0xa3,0x27,0xe7,0x76,0x0d,0x91,0x56,0xd3,0xb2,0x73,0x45,0x38,0x3f,0x0e,0x4a,0xd6,0x66,0x1e,0xe4,0xa3,0x72,0x4d,0x18,0xd8,0x20,0xf6,0xc5,0x57,0xf8,0x27,0x97,0xbe,0xb6,0x2d,0x2f,0x08,0x54,0x33,0x74,0x4f,0x89,0xa2,0xd8,0x52,0x93,0x79,0x64,0x81,0x86,0x2e,0xf8,0xa4,0x0f,},"\xc8\xd1\xdb\xc9\x36\x91\x1e\x12\x2c\xee\x18\xf9\x2b\x16\xa3\x9a\x2e\xef\x08\x23\xb2\x27\xf8\x98\xcd\xf5\x84\x2b\x93\xd5\x9f\xc0\x02\xed\xb5\x49\x8a\x20\x87\x2e\x19\x55\x4e\xf7\x39\x99\xeb\x3a\x7b\x3e\x2f\xdd\x90\x70\xe1\xef\xa9\x22\x8e\x9e\x93\xb2\x9a\x86\x8a\xe3\x79\x9e\x4e\x57\x23\x24\x83\x6b\x1a\xd5\xaa\x81\x2b\xf0\x0f\x84\x5b\xc2\x17\xeb\xbc\x3f\xab\xdc\x4e\x1b\x6e\x51\xef\x9e\xfa\xc2\x77\x0a\xa0\xa4\xa1\x1e\xe5\x2a\xb9\x56\xac\x64\x48\xaa\x26\x29\xcb\x61\xdb\xb1\xf1\xed\xb3\xbd\xe9\x9b\x48\x76\xda\x39\x2a\x6e\x0b\x9a\x0c\x31\x84\x9a\x58\x90\xae\xa9\x52\x2f\x56\xd0\x15\xa1\x93\x50\x15\xb9\x1b\xf4\xc6\xa0\x01\x1d\x23\x77\xd6\x71\xc3\xd0\xd7\x53\xc2\x7f\x8c\x76\xe4\x05\xd0\x23\x0f\x1f\x4b\x9b\x88\xfc\xeb\xba\x1e\xaf\x13\x77\x72\x35\xe5\x53\x24\xb7\xd3\xf8\x1e\x68\x61\x09\xd9\x1c\xe6\x89\x53\x0b\x90\xd2\xc5\xc7\x1d\xd1\x87\x72\xb3\x85\xd6\x2c\xcb\xfd\x2e\x08\x9a\x1b\x67\x09\x83\xf6\x0c\x21\xc4\x45\x5c\xb9\xd1\xa0\xdc\xaa\x74\xc8\x74\xe3\x52\x11\xf8\x22\x7f\xf7\xc2\x34\xdf\xf8\x5e\xc0\xb0\x7e\x36\x8c\xfa\x50\xa3\x43\x57\x83\x95\xa1\x4c\x68\xf1\xf8\x9b\xd4\xec\xbc\x17\x2e\xf8\x05\xe5\x83\x1e\xc8\x94\x75\xfc\xc8\xd6\x85\xca\x92\x55\xa7\x7e\x3b\xa3\xc1\x47\x50\x8e\xc9\x2d\x7b\xcc\xe8\x79\xaf\x0a\xbd\xd2\x41\x6b\x67\xb5\xf5\x05\x07\x33\x79\x14\xf3\x90\xbb\xe0\xb4\x50\xb6\xa2\xf1\x15\x93\x72\xc4\xbc\xce\xa3\x82\xce\x3d\x6d\x9f\xb2\x51\x5e\xcf\x79\x30\x05\x9a\x05\x52\xb7\x5f\x97\x88\x62\xbf\x97\xe8\x32\x5a\xf2\x4d\x1b\x8c\xe9\x51\x2b\xfc\x7c\xef\x88\x42\x32\x04\x23\x41\xd8\x2f\x9b\x5d\xad\x2e\x50\x2a\xc6\xac\x79\x5f\x99\xda\xc7\xfc\x60\xe3\xb8\x63\x9d\x0e\x15\x00\xde\xad\x4e\x78\xac\xa1\x09\x95\x7d\x57\x7a\x13\xc1\x92\x5d\x74\x03\xc1\xac\xf9\x89\xa9\xde\x67\x11\xe2\x3c\x67\xbf\x87\x22\xf5\x51\xb7\x74\xca\xda\x93\x1b\x5f\xd9\x73\x43\x4e\x3b\x71\x72\x81\x98\x83\xe7\x0c\x52\x78\x5e\x3b\x49\xd3\x23\xd0\x56\x36\x64\x11\x58\x64\x0d\xcf\x6a\x4c\x20\x0e\xb2\xc1\x3b\x1b\xee\xb2\xdc\x36\x03\x52\x47\x0d\x15\x38\x6e\x59\xe6\xfa\x60\x36\x7e\x5e\x7f\x17\x2b\x21\x15\x9d\x5e\xe7\xca\xb0\xd7\xf5\x86\x82\x39\x85\x8e\x2a\x93\x55\x04\x80\xfe\x8f\xb4\xdc\xaf\x4f\x22\x4c\x4b\x2a\xd5\x44\x87\x91\x63\x2d\xf3\x0e\x8e\x5f\xb9\x98\xb3\x5e\xa9\xae\xc8\xc9\x34\xa4\x40\x3a\xef\x82\x18\x7c\xa1\xab\xf8\x2a\x34\x4d\x00\xff\xb9\x93\xd9\xff\x34\x61\xd6\xfe\xcd\xaf\x5d\x3b\x48\x1e\x0d\x31\x15\x3d\xbf\x6a\xed\x28\x8c\x8a\xdd\x06\x4e\x83\x31\x55\x01\x41\xbd\x5f\x7a\x7e\x04\x7b\x86\x07\xd8\x46\xa6\xbf\xb7\x2d\x68\x34\x46\xa4\x45\x11\x46\x06\x25\x0d\x8d\x2d\x3a\x8b\x95\x08\xbb\x07\xd4\x62\x3c\xdf\x17\x88\xb5\x49\x9e\x9c\xb9\xa1\x37\x98\x49\xbf\xa1\x9c\x9a\x9f\x4c\xd3\xd9\x25\x3a\xdf\xfd\xa2\x5f\x47\xc8\x11\xbe\x83\x3b\x02\xf3\x32\x7e\xbb\xa8\x37\x30\x19\x5d\x61\x4b\xae\x6f\xe4\xe7\xa3\x83\x08\x15\xd2\xaf\x40\x0d\x20\xa9\x41\x7a\x09\x5e\x7e\x8e\xea\x10\x44\x91\x7c\xbe\x51\x2c\x40\x18\xd6\x56\xe2\xdb\x67\xbb\x98\x9c\x00\xe1\xe5\x07\x62\x3e\x82\x78\xd7\x29\x92\x5b\x84\xfb\x5c\x18\x6a\x7b\xac\x18\x9e\x6d\x6a\xb1\x4f\xd7\xb6\x2f\xdc\x63\x2b\xeb\xb5\xf7\x7c\xb5\xcc\x2f\x70\x7d\xf4\x05\x30\x99"}, +{{0xc8,0x20,0x41,0x3c,0x24,0x56,0x74,0x71,0x04,0x66,0x2e,0xf4,0xdf,0xf3,0xac,0x23,0x3a,0xc4,0xb9,0x1a,0x76,0xd3,0xc4,0xea,0x75,0x44,0x90,0xbc,0x9b,0x1e,0x29,0x1f,},{0x89,0x93,0xce,0xa2,0xf7,0xf2,0x80,0x6c,0x77,0xb3,0x98,0x1b,0x54,0xbf,0xa9,0xbf,0x17,0x62,0x15,0x1b,0x41,0x8e,0x5e,0x72,0x53,0x71,0xca,0x2c,0x04,0xd2,0x23,0xee,},{0x7e,0xf7,0x0e,0x4a,0x14,0x95,0x4d,0x50,0x9f,0x11,0x7f,0x4b,0xd0,0x1b,0x22,0x0b,0xcc,0x19,0x2d,0x3b,0x5f,0xdf,0xc3,0x48,0x2f,0xbb,0xc3,0xb6,0x9d,0xc0,0x68,0xa7,0xc4,0x76,0x1d,0x1b,0xeb,0xc2,0x31,0x7d,0x6d,0xb7,0x4f,0x90,0x6a,0x15,0x56,0x42,0xb0,0xa3,0xc6,0x59,0x2b,0xdc,0x72,0xe6,0x4e,0xac,0x6f,0x20,0x3f,0xb7,0x4e,0x02,},"\xd2\x99\x2f\x83\x92\x4a\x59\x48\x87\xe6\xef\x13\xf2\xae\x80\x8f\xc8\x63\x9c\x7b\x2c\x99\x4f\xaf\x0f\x79\x5e\x36\x01\x6d\xab\x77\x00\xa0\xee\x53\x01\x70\xf0\xb9\xfe\x98\xab\x75\x88\xce\x03\xbc\x50\xc2\xba\xe6\x5e\x05\x26\x47\xe7\x56\x73\x5b\x35\xd0\xb5\x9c\x96\x4e\x91\x7d\x8c\x83\xe2\xf9\xfe\xcc\x4c\xb0\x55\x64\x28\x7f\x0e\x34\xc9\x49\x40\x05\xe2\x5b\x1a\x8b\x1b\x94\x2b\x54\xd8\x90\x35\xf1\xb1\xc3\xc9\x45\xfc\xc8\x4e\x4a\x39\xef\xa2\xca\x50\x95\x9b\x45\x9a\xf7\x4d\x21\xb6\x24\x2e\x2f\x56\x51\x8f\x70\xe8\x67\x92\x57\xc0\x89\xd2\x6c\x3b\xb7\x92\x68\x7c\x92\x33\x55\xb2\xc1\x8e\xe2\x13\x6d\x40\xcb\xa4\x5a\xcb\x64\x24\x0d\x96\x67\xf3\x9d\xba\x36\x39\xb6\x51\x6d\x4c\x49\x47\x57\x3e\xf4\xce\xd8\x76\xb5\xb2\xea\x34\x89\xea\xea\x53\x9f\x55\x7f\x58\xda\x20\x46\x91\xa7\x6e\x29\xc9\x4b\x8b\x05\x38\x23\x2c\x5f\x7d\x0b\xb0\xfd\xd0\x16\x91\x04\x31\x35\x4b\x3e\x1e\x7c\xe6\x2a\xd4\x36\x91\x7c\xd5\xc3\x15\xa5\xbe\x9b\x97\x1c\x80\xf9\x7b\xc9\xd5\xc1\x56\xff\xd6\x4f\xd4\xe3\x1d\xa5\x60\x83\xe0\x2a\x0c\x8f\xce\x55\x4d\xb6\x86\x74\xcb\x62\x70\x0b\xa9\x51\x75\x2b\x82\x9b\x03\xc5\x42\x32\x74\x12\xee\xc9\xcc\xc6\xa5\x0a\xdf\x47\xbb\xee\x15\x44\x66\x82\xda\x2f\xea\x42\x04\x89\x36\xd7\x63\x06\x0c\xd8\xf5\x39\x65\x26\x16\xdf\xa8\x08\xd6\x23\xff\x77\x7b\x41\x13\x65\x2e\x78\x9e\xc0\x25\xb8\x5e\x04\xef\xe8\xad\x4c\x96\x0b\x19\x0b\xf4\xa5\xa6\x32\x4d\x6f\x57\xc1\xad\x22\x01\x8c\x83\xcd\x7e\x7e\x09\x7f\xc6\x7b\x80\x26\x9c\x13\xb4\xdd\x97\x01\xca\x98\xf9\x87\x69\x58\xba\x76\x89\xc6\xf6\xf1\x0a\x73\x2a\x64\xbe\xf2\x2e\x8b\x98\xbd\x30\x4d\x5d\xbf\x4f\xb1\xf9\xe4\xca\x53\x9a\x5c\x4a\xa6\x19\xc4\x4d\x6f\x58\xf8\x24\xb2\xdb\xae\x77\xb7\xe8\x3b\x56\xdb\x5e\x5a\xa7\xb0\xae\x9c\xe1\xcd\x10\xa6\x9f\x04\xa8\x0f\x13\x79\xeb\x0c\x47\x4e\x47\x82\xdf\x0e\x3b\xa6\xa1\x48\x22\x6b\xd1\xa6\x62\xd9\x5e\xe2\xd6\x7c\x52\x07\x33\x3c\xb1\xd5\x41\x76\xd9\xe5\x06\x45\x94\x79\x02\x9f\x31\xdc\xac\xe2\x69\x93\x8f\x6b\xc5\x62\x78\x78\x41\xdc\xfe\x10\x1f\x4d\xb6\x0b\xd6\x60\x16\xe1\xee\xbb\x6b\xfb\xd9\xcd\x83\x04\x2d\xd1\x37\x9a\x46\x4f\x40\x5a\xaa\xe3\xc1\x18\x07\x84\x8c\xc4\xf9\x5c\x3c\xc6\xfa\x92\xab\x4e\xa5\x30\x58\x34\xeb\x86\xb8\x73\xfa\x30\xed\x1f\x7f\x47\x0b\xf6\x63\xf1\xa7\x0c\xf9\xe6\x0a\xb6\x80\xcd\x1d\xbb\xd0\x3a\xc0\x43\x3b\x3d\x4b\xb4\x82\xf8\xb3\x44\xd4\x6b\x3a\xa9\x34\xb8\x63\x3f\x57\x09\x0b\xea\x5f\xcc\xca\x64\x88\x79\x98\x35\xf1\x33\xf8\xbc\xf6\xe8\x87\xca\x59\xd1\x90\x76\xd6\xca\x19\xd4\xe2\x83\x49\x05\x1e\x01\x6b\x03\xe9\xa9\x20\xf4\x12\x0f\xb5\x23\xd1\x37\x1d\x0e\x38\x46\x73\x19\x54\x3f\x12\x7e\xd9\x14\xb4\x3a\xd0\x62\x22\x6a\x53\x65\x82\xdb\x72\x8c\xcd\x76\xe9\x83\xf1\x17\x66\xa8\x86\x3c\x2f\x42\x4f\x65\x50\x8d\xcb\x26\xfe\x0c\x5a\x80\x0c\x35\x09\x39\x60\xa1\x21\x97\x6e\x30\x51\xe2\xef\x1a\x2a\x99\xc1\x2f\xb7\xbd\x8b\xc0\x37\xa4\x39\x68\x68\x06\xeb\x72\x01\x7a\x07\x1a\x91\xb3\xe3\x9c\x90\xe8\x6b\xc3\x35\xf9\xbb\x54\x3b\x12\x7c\x98\x86\x73\x8c\xb5\x38\x06\xb9\xcb\x3c\x25\x94\xc7\xef\xfc\x2a\x59\x20\xaa\x83\x4b\xe6\x5c\x49\xf4\x79\x64\xe8\x9e\xec\x74\x72\x8d\xe7\x71\xf3\xd6\x75\xde\x9d\x1e"}, +{{0x67,0x69,0xcc,0x8e,0x12,0x56,0x17,0xc2,0x2c,0xe5,0x72,0x37,0xa4,0xfc,0xa1,0x50,0x7f,0x94,0x12,0x34,0x66,0x1d,0xf7,0x43,0x28,0xd0,0x4a,0xb6,0x2e,0xf8,0x6c,0x47,},{0x05,0x11,0x2c,0xa6,0x0b,0xaf,0xf7,0x9b,0x49,0x16,0xc1,0xbe,0xe2,0xb9,0x39,0x0c,0x04,0x7a,0xf0,0x8c,0x35,0xeb,0xb3,0xc3,0x81,0xb9,0x74,0x8d,0x1d,0xd4,0xc4,0xfd,},{0xd3,0x9d,0x85,0x3d,0x2c,0x2c,0x5d,0x21,0xb5,0x87,0x1e,0xa5,0xa7,0x5c,0x04,0x10,0x48,0xd9,0x3a,0x47,0xdc,0x59,0x9a,0x5f,0xdd,0xc0,0x85,0x62,0x85,0xce,0x63,0x6f,0xcd,0xfd,0x85,0x64,0x08,0x3d,0x06,0xff,0x28,0x4a,0x52,0x4b,0xc6,0x33,0xcf,0xdf,0xc3,0xb0,0x37,0x16,0x3d,0x67,0x4c,0xb9,0xbb,0x5b,0xa3,0xbc,0x25,0xbe,0xd0,0x0e,},"\x68\x54\x89\x73\x9b\x98\x56\x47\x49\x58\x7f\xf1\xac\x96\xba\x68\x2d\xa3\x0b\x40\xa4\xde\x24\xf5\x4e\xc8\xb0\x83\xdd\xa4\x53\x33\x16\x21\x67\xcb\x3f\x97\xb2\xc7\x31\x4c\xe7\xa3\xf3\xf3\xd3\x19\xcc\xc3\x5b\xb6\xa9\xf0\x07\x7d\x56\x31\x61\xe2\x81\x46\x9c\xf0\x89\x68\xd9\xdc\xf7\xae\x5f\xff\x83\x0a\x5d\xb0\x0b\xc3\x80\x10\xe6\x66\x2d\x49\x4f\x3c\x86\x47\xc4\xf7\x0c\xe2\xd2\x9a\x9d\xa8\x46\x10\xa0\x80\xb5\x75\x9a\x3b\x58\x20\x52\xdf\xde\x66\xe4\xa7\xfa\x5f\xb2\x7f\x06\x50\x73\xfe\x72\x3d\x83\x70\x1d\x5b\xac\x06\xca\x43\xb4\x6d\x1e\x58\x09\x76\x70\xc1\x94\xa1\x3a\xf8\xb5\x73\xa3\x79\x1a\x96\x61\x55\x7c\xbc\x04\x27\x57\xab\x8a\xdd\x0e\xf7\xcf\x4f\x35\x43\x5a\x42\x12\x35\x3f\xcb\x3c\x20\x3c\x73\xdb\xc9\xd2\x68\x52\xd0\xe9\x17\x32\xe3\x62\x1c\xe8\x28\x92\x9c\xdc\xa4\xd9\x19\x20\x48\x75\x19\x22\xed\x22\x5e\xab\x29\x00\xcf\xf9\x71\xa2\xa2\xd3\x42\x46\x36\x48\xbb\xb1\x94\x43\x19\xa8\xef\x6d\x43\xdb\x62\x48\x0f\xbf\x1d\x72\x57\xd2\x26\x94\x53\x97\x93\xf2\x5c\x92\x79\x17\xca\xab\x25\xc1\x19\x3a\x2d\x2b\x23\xbb\x5c\xb8\x56\x9a\xef\xff\x4f\x0c\xa4\x23\xd1\x9b\xbd\x46\xfc\x5e\xf7\x52\x4f\xf8\xcb\x70\x6f\xfc\x47\x07\x65\x09\xc0\x5a\x81\x58\xaf\x77\xf9\x8d\xf6\xa9\xb5\xcb\x32\x44\xab\xa4\xb5\xc5\xf9\xce\x59\x7e\x7d\x29\xba\x07\x01\x3d\xca\xc1\x91\x1b\x6d\xe7\x11\x3c\x73\x6a\x40\x05\xc4\x59\x99\x29\x79\x01\x9a\x45\xb2\xdd\x80\x2a\x07\x66\x09\x09\xeb\x4c\xe2\x05\x40\x81\x70\xd8\x25\x45\xda\xcb\xa8\x68\x6d\xbd\xe9\x27\xdb\xc9\xc7\xd9\x62\x05\x8e\x9a\x95\xea\x66\xb8\xdf\xd3\xea\x43\x53\x57\xa9\x3c\x73\x94\x8c\xd3\x55\xf6\xac\x65\x52\x32\x3f\x17\xc2\xa6\x78\x66\x2b\xc0\xe9\x72\x6a\xd5\xa5\x25\x1d\xd2\x76\x47\x40\x4c\xbf\xe6\x1c\xea\xaf\xdc\xfc\x08\xa4\x75\xff\xd8\x7c\xb7\xf5\x97\xe5\x6a\xc1\x67\x04\x09\xdd\x94\x08\xae\x47\x70\x42\x0c\x6e\x5e\x6d\xd8\xe7\x48\xfe\x03\xa7\x2d\xc1\x28\x03\xd0\x27\x71\xd9\x2f\x47\xe6\xe7\x17\xcc\xc1\x44\xfc\x03\x72\x75\xb6\xf7\x45\xdd\x30\xda\x1a\x45\xd2\x9d\xb6\xd9\x07\x3e\xee\x50\x09\xcf\xd5\x46\x27\x33\x41\x4a\x49\x5f\x34\x9d\xb0\xb6\xdb\xf2\xce\xa9\xcc\xd5\x72\x38\xed\x5e\xe9\x1a\xd8\xbc\x86\x17\x9a\xd5\x69\x5a\x85\xa5\x04\x84\xe6\x17\x75\x1d\xe5\xef\x7a\x7d\x8a\x8d\xb9\x50\xa9\x8a\x6b\x7f\x7d\xee\x9d\x42\xa5\xdf\x69\x2f\xcc\xf5\x55\xc9\x40\xdc\x39\xcf\x2e\xac\x48\xcb\x9d\x15\xcd\xa1\x4d\xd2\xa7\xec\xc0\xb7\x6e\xbe\xc6\x8a\xd4\x17\x7d\x11\x17\xe0\x77\x66\xc4\x85\x90\xd4\x3c\xa7\x66\x28\x68\xeb\x97\x90\xac\x29\xf4\xf2\x39\x2b\x9a\x93\xf8\x97\x59\xe7\xba\x54\x6b\x92\x5b\xd8\x6f\x80\x7d\x8d\x16\xc7\xe6\x37\xdc\xc6\x66\xe9\x05\x90\xbf\x43\x0d\x98\x6a\x67\xf1\xb0\xc7\xc2\xc9\x49\x30\x84\x58\x69\xed\x8d\x8a\xdd\xe1\x8f\xc1\x88\x74\x56\x88\x1b\x4b\x26\xb5\x3d\xcb\xa7\xa5\x26\xf0\xec\xa1\x4e\x8b\xb6\x89\xd6\x6f\x0a\xa1\xb2\x53\xc3\xdc\xfc\xf5\x95\x40\xd5\xd2\xf5\xad\x61\x7f\x52\xc3\x09\x38\xa5\xa9\x2e\xa3\x85\x07\x7d\x75\xaa\x4a\xc0\x7a\xfc\x2b\x35\xfb\x8c\x1d\x5e\x78\xeb\x29\x5f\xc2\x0f\xe3\x7c\x41\xac\x06\x95\x9d\x3a\x17\x97\x84\x3a\xd7\x05\x6c\x1b\x41\x2d\xd0\xb4\x80\xaa\x3b\x39\xbc\xc2\x05\x87\xd9\xa0\xfe\xf9\x2c\x6c\x95\x0e\xbc\x5b\xb8\xe1\x42"}, +{{0x1d,0xf7,0xac,0xfb,0x96,0x33,0x04,0xe5,0x1e,0xc4,0x71,0xca,0xf1,0x81,0x10,0x25,0x56,0x78,0x3c,0xb7,0xd9,0x1e,0xad,0x30,0xbd,0xc2,0x53,0x4d,0x07,0x8a,0x14,0x88,},{0x05,0xa3,0x1f,0xfc,0x70,0xe4,0xe3,0x56,0x9f,0xc2,0xbe,0x11,0x0c,0x64,0x3a,0xd5,0xf0,0x87,0x91,0x3c,0x7a,0xa4,0x76,0xdc,0xd8,0xd6,0xe4,0xbc,0x7e,0xc2,0x2d,0x24,},{0xb1,0x81,0x93,0x8d,0xe1,0x01,0x42,0xf3,0x24,0x07,0xb4,0xe7,0x86,0xcd,0xdd,0xe9,0x32,0xeb,0x11,0xdb,0xc0,0xbf,0x0e,0x5a,0xc5,0x09,0xfa,0xe7,0xa5,0xbc,0xc3,0x29,0x61,0xfe,0x34,0x48,0xf9,0x12,0xc8,0x50,0x0f,0xc6,0xdb,0x4e,0x1d,0x32,0x62,0xa8,0x3c,0x9d,0xbe,0x76,0x9b,0xb8,0xc3,0xa7,0x61,0x00,0x0f,0xe3,0x6c,0x0d,0x71,0x04,},"\xb0\xc3\xee\xb5\x7f\x14\x60\x6a\xb7\xab\xea\xb2\xee\x05\x73\x84\x3c\xa2\x2e\x6d\xb2\xfd\xf2\xc9\x06\x4c\xea\x51\x98\xdc\x58\x30\xeb\x15\x8d\xa8\xe2\xda\xa8\x88\x57\xaf\x8b\x8e\xef\xcc\xf0\xc2\x6c\x3e\xc0\xf3\x30\xe9\x2c\xff\x06\xbc\x05\xa2\x9b\xfc\x99\xf9\x40\xb6\x1f\x3c\xfb\x29\x64\xb3\x37\x09\x7a\x65\x50\xa3\xe9\xa3\x28\xc8\x5b\xe6\xf1\x60\xd2\xc0\xa5\x7f\xf6\xf1\xb3\xc5\xff\xcc\xa8\x90\x89\x42\x5a\xb6\xbe\x01\x72\xe1\x75\xba\xf4\x0c\xf1\x2b\x24\xa8\x15\xf7\x0f\x29\xa3\xa4\xcd\x0a\x6a\x13\x2f\x12\x00\x97\x75\x2f\x4b\xc7\x43\xed\xe0\x8f\x5f\x21\xd4\x2f\x28\x2f\x76\x71\xf7\x78\x3e\x27\xb2\xa8\xe2\xc1\x46\x92\xf1\xe0\xe5\xde\x82\x85\x5d\xab\xf9\x8a\x1a\x63\x97\x60\x06\xff\xbf\xe5\xf5\xa5\x79\xb4\x60\xe2\x6d\x06\xbd\x54\x28\x42\xa5\xf9\x26\x1b\xbf\x26\x04\x51\xd2\x32\x1c\x50\x89\x32\x01\x3c\xc6\xe9\x04\xf7\x9b\x5e\x46\x86\xd0\x33\xe1\x2c\x7b\xbd\x7e\xb1\xc9\x23\x79\xc5\xec\x34\x1b\xf6\x45\x7a\x3f\x17\x26\x4a\x7c\x27\x8b\x27\x50\x1e\xca\xed\xc3\x61\xeb\xa8\x44\x44\x23\x42\xb4\xb1\x0f\xa9\x4d\x26\x58\x65\x11\x6a\xcf\x43\xfc\xbe\xc9\x65\xd2\xab\x4b\xbb\xe6\x14\xc4\xf9\x0a\xb6\xb3\xe0\xd5\x38\x3f\xa0\x49\x88\xbf\xbb\x26\x03\x07\xdd\xe2\x2d\x84\x09\x8b\x63\x31\xd1\x55\x14\x1a\x92\x7b\xb7\x8d\x66\x4b\x34\x1d\x2f\x2a\x93\xe2\x91\xcf\x79\xba\xae\xcd\x26\x12\xf6\xb1\x04\xf3\xfc\x81\x37\x3a\x7c\x6a\x04\x5b\x59\x24\xbf\x95\x0c\xd5\x42\xf7\xb7\xac\xce\xf3\xaa\x7d\x72\x5d\xe0\x53\x05\x5d\x95\x1b\xd7\x68\x11\x13\x92\x59\x66\x38\xae\x09\x71\x70\xf4\x49\x2b\xa5\x0a\x46\x8f\x8e\x34\x77\x63\xdb\x61\x2d\x3c\x7d\xe7\xe5\x64\x59\xb2\x6e\xe0\x29\xc6\x30\x82\x7a\x35\x3a\xee\x73\xde\x68\xd6\xd7\x2b\x27\xaf\xd7\x5d\x22\x16\x45\x27\x94\x5c\x72\x26\x84\x4f\xab\x15\xb8\xdc\xc9\x14\x34\x9e\x31\x41\xc6\x13\x16\xad\xc8\x94\xde\xdc\xdc\x84\x39\x84\xd9\xc7\xfe\xae\x39\xdb\x33\x2d\xc3\x93\xe9\xe8\x96\x1b\xbd\xe0\x71\xc3\xd2\x85\x8b\x3c\xb5\xf3\x3b\x16\x4a\x15\x61\x6c\x6f\xe1\xbb\xc2\x4a\x35\xf2\x13\x36\xd2\x61\xc5\xd8\xcf\x75\x9e\x27\xe2\x2c\x91\x01\xc4\xae\xbd\xe3\xe1\x26\xcf\x64\x6c\xa7\xb2\xe0\x31\x28\x09\x5c\x59\x76\xbf\x3f\x6e\x49\x1a\xf0\xf0\xb6\x40\xc7\x31\x09\x66\xac\x59\xc5\x9f\xbc\x5b\xfe\x05\x48\xf8\x8e\xe6\x1a\xd9\xec\x40\xc1\xc0\x6d\xd2\x9d\x79\x4c\x44\xa3\xea\x22\xc3\xd4\x76\x26\x22\xec\x1e\x8b\x33\x3e\x45\x07\x4d\xb9\x37\x41\xfd\xa1\x93\xc9\x11\xf6\xdb\x58\x79\xe5\x5e\xe3\x6e\xf6\x02\x61\x4a\xe6\x4a\x5c\xde\x9d\x83\x06\xd2\x2f\xbc\x4a\xe9\xc8\x81\xa5\x94\xbd\xe6\x79\x61\x25\xfc\xb6\x28\xb9\xf3\xb6\xfb\x3f\xfd\x51\x1b\x35\x3f\x14\x6a\x27\x27\x2a\xfd\x3e\x5d\x28\xb7\x7f\x58\xa6\x7f\x1f\xd2\x72\x85\xc2\x5e\xcc\x1c\xcf\x64\xe3\x8d\x21\xf3\xb9\xff\x22\xe0\x0e\xe9\x00\x62\x9e\xf1\xa6\x3e\x71\x3f\x25\x88\x83\xdd\x91\x1f\x30\xc0\xd3\x98\xb7\x4b\xd7\x97\x14\x9b\xe5\xe2\x69\x67\x22\xda\x09\xd5\x2d\x4e\xbf\x3c\x67\x39\x29\xd2\x98\xaa\xc3\x4c\xe0\x5b\xea\x08\xea\x9a\x42\x4e\x93\x45\x9c\x2e\xb8\xfc\x22\x22\xc3\x1c\xc1\x3d\x80\x3b\x90\xa8\xa7\x0b\xcd\x0a\x30\xc2\x09\x21\x1d\xc2\xcc\xc8\x5b\x0b\xcd\x45\x82\xc6\x95\xf5\x8d\x80\xbf\x6e\xc4\x71\xa2\x50\x5f\x68\x84\x7a\x75\xf6\xe9\x11\xfd\x87"}, +{{0x7e,0xd8,0x7c,0x36,0xdf,0xdb,0xae,0x60,0xc9,0x40,0xa3,0xb3,0x25,0xc1,0x9f,0xde,0xd8,0x14,0xd7,0x6a,0x54,0x48,0x20,0xa3,0x2f,0x28,0x6a,0x5c,0x0a,0xd7,0x1d,0x72,},{0x3c,0x4a,0xc5,0x10,0xb3,0x62,0x22,0xc2,0x52,0xa2,0xdc,0x1a,0xfc,0xb4,0x0f,0xb0,0xeb,0x85,0xbc,0xa9,0x03,0x91,0x19,0x6a,0x58,0x83,0xaa,0x2c,0xc9,0x12,0xb2,0xdf,},{0x57,0x9b,0x38,0x12,0x4b,0xd0,0x59,0x1a,0x59,0x7c,0xc9,0xa3,0x89,0x12,0x7c,0xea,0xf5,0x51,0x56,0x07,0x73,0x63,0xed,0xb8,0x11,0xd0,0xb6,0x55,0x52,0xac,0xfc,0xc6,0x77,0xb2,0x72,0x94,0x21,0x99,0xca,0x25,0xab,0x79,0x0d,0xe6,0xe0,0x84,0x60,0x3a,0xd1,0x05,0x2e,0xc2,0x10,0xcf,0x6f,0xcb,0x14,0x17,0x28,0x90,0x67,0xce,0x3c,0x08,},"\x62\xd3\x13\x91\x2a\xbb\xb0\x06\xb7\x77\x4a\x67\x37\x71\x4a\x34\x99\x70\xce\x04\x21\x11\x2f\x40\x04\x63\xd3\xdb\x0e\x2f\x7f\x12\x8d\x7b\x96\x93\x9f\x43\xc1\xe7\x10\x7b\x51\x18\xa7\x7c\x11\x96\x83\xd8\x66\xb7\xe3\xd7\x2a\xc2\x1f\x6b\x42\x72\xb4\xbe\x92\x89\xb6\x55\x6f\xe3\x1b\x60\x51\xa0\xb4\x2e\xd5\xea\x0c\xf3\x47\x69\x6d\x30\xfb\x8b\xff\x6b\x8b\x57\x27\x19\xde\x19\xa2\x31\xcc\x85\x45\x9a\x99\x0c\x37\x80\x1f\x08\x37\x18\x6c\xef\xbb\x55\x21\x56\x96\x66\x96\x7c\xd4\x24\x3d\x73\x07\xf1\xb0\xb2\x4c\x8e\x2b\x9b\x69\x23\x17\x30\x4f\xbe\x3d\xd0\xa2\x63\x65\x01\x91\xb3\x52\x16\xf5\x29\x16\x57\x3a\xf9\x05\x24\xf9\x1d\xb1\xa9\x24\x71\xd7\x58\xc9\x2d\xc6\xd1\x4d\x1a\x4b\x26\xf4\x1b\x40\x40\x3c\xa8\x7d\xcf\xab\xdc\xa4\x7b\x9f\xc2\x53\x35\x78\xf1\x61\xf3\xb0\x19\x9b\x5c\x69\x8e\x08\x07\x04\xb2\x1c\x9e\x61\x52\x69\xfc\xd0\xd4\x04\x39\xed\x8b\xc3\xbd\xfb\xc9\xaf\xb4\x4c\x11\xfa\x89\x27\x5f\x0e\xaa\xa5\xd0\x8f\xa9\x59\xd6\x37\x8d\x0d\xb8\x99\x10\xd4\x8f\x2d\x86\xa1\xeb\xfc\x5c\xbf\x10\xeb\x2d\x5a\xad\xf5\x1b\xbd\x83\x44\xff\x8b\xbb\x5b\x8a\xfe\x05\xa4\x50\x11\xb5\xe4\xb7\x2e\xb8\x64\xad\x26\x3e\x8a\x03\xa6\xc7\xf9\x8a\xee\xb3\x54\xf7\x30\xa3\x18\xaa\x30\xfb\x56\xd3\x3d\x80\x74\x8c\x98\xeb\xec\x15\x87\x8c\xcf\x3c\xe8\x22\xf6\x9d\x34\x56\x84\x3c\x40\x0d\xc5\x6b\x48\x1a\x95\xe6\x88\xb8\xa4\x73\x5b\xf3\x84\x3f\x58\x33\xdd\xa0\xef\xe0\x9e\x71\x75\xb5\x67\xc6\x61\x38\x7a\xfd\x2e\xbc\x07\x9a\x48\xe3\x49\x67\xec\x97\xb9\x27\xdf\xa5\x81\x88\x8f\x23\x1a\x98\xa7\xed\x33\x10\x3b\xfa\x8e\x8f\x9b\xa6\x51\x35\x27\x90\x0b\x39\xb8\x62\x31\xda\x79\x11\xa2\xfc\x93\x58\x88\xa7\x5f\x11\x29\x58\x4a\xff\xf2\x02\x52\x49\xc4\x18\x8f\x09\x05\x2f\x85\x68\x77\x06\xd0\x5e\x29\x91\x44\xd4\x0d\xe8\x89\x8b\x7c\x8b\x2d\xfe\xf0\xc3\x70\x85\x73\xd8\xb0\x56\x3a\x6b\xd0\xa5\x04\xc0\xb6\x74\x57\x02\xb1\xb5\x71\x21\xc6\xf0\x40\xaf\xf2\x71\x98\x94\x8b\xa6\x9c\x21\x25\x3a\x28\xd3\x9e\xba\x72\x62\x19\xbe\xda\x1f\x82\x09\xfb\x83\xe9\xad\xb0\x7a\xd4\x09\xfb\xd6\xd2\x55\x65\x88\x9a\xb4\x51\x23\xf9\xd9\x45\xec\xd7\xd9\xca\x70\x28\xec\xe0\x92\xe3\x5f\xbb\x7c\xb3\xf3\x28\x12\x6e\xfd\xda\xc5\xd8\x59\xf2\xb2\xc6\xeb\x09\x01\x33\x69\x0e\x20\xc1\x7d\xea\xf3\x88\x26\x85\xf0\x7e\x9e\xd2\x65\x3b\x80\x3b\x9b\x38\x3b\x70\x74\x8a\x1f\xa9\x2c\x86\xf8\x6d\x6c\x47\xea\x87\xb1\x0b\x12\xe3\x63\xba\x50\x80\x60\xf4\x7c\xe2\xa2\xf3\xb6\xa3\xee\xfc\xd4\xda\xcf\xc7\x1c\x41\xf4\x36\xfe\x0c\x2b\xc3\x4d\x4b\xaa\xd4\x95\x74\xe7\x44\x3c\x12\x6a\x58\x9f\x6e\xf7\xbc\xa4\x49\x54\xf0\xbb\x28\xec\x71\x51\xb0\x51\x1c\x23\xc6\xbc\x42\xd5\xe8\x59\x83\xec\x16\xbb\x5f\x50\xa3\x82\xd6\x88\x15\x0a\x49\x60\x9c\xbd\xe5\x69\x8e\x86\xdc\xbf\x02\x12\xc2\x29\x22\x99\xdc\x4d\xcf\x87\x42\x9f\x6c\xd2\xee\xc8\x09\x48\xce\x86\x7e\x25\xc9\x45\x84\xcd\xc6\x4b\x09\x90\x29\xeb\x85\x4e\xdc\x26\xea\x21\x42\x1e\xff\x48\xcf\x4e\x41\xf4\x9e\x2d\x89\x47\x8d\xef\x06\xc4\x2b\xea\x22\x0a\x13\x3e\x50\xf5\xc7\x44\x64\xc7\xe7\x3f\xb1\xc1\xa7\x7c\x50\x7c\xf6\xcd\xa8\x5b\xe4\x02\xb7\xe6\xd6\xd2\x1e\x81\x0d\x6d\x0b\x59\x72\xb9\xfe\x77\xe5\x4e\x74\xae\xe1\xf3\xbb\xfd\x6e\x7d\xe6\xb5\xc0"}, +{{0x6a,0x29,0xf8,0x1b,0x8d,0x9a,0xa4,0x8a,0x1b,0x23,0x36,0x4e,0xac,0x8f,0x6a,0x4b,0xdd,0x60,0x7a,0x84,0xcf,0xe8,0xe8,0x8d,0x90,0x17,0x5d,0x80,0x64,0x3a,0x58,0xa8,},{0x4c,0x3b,0xe3,0xa2,0xa8,0x42,0x5f,0xf3,0x1c,0x3a,0x0d,0xb4,0xa5,0x2a,0x0c,0xb1,0x41,0x6c,0xeb,0x48,0xcc,0x3e,0x4c,0x28,0xa4,0xf2,0x28,0x4a,0xb3,0x46,0x07,0x15,},{0xdf,0x09,0xcb,0x9b,0x87,0x8d,0x3d,0xc9,0xe5,0x42,0xdb,0xac,0x28,0x94,0x3e,0x28,0xe4,0x1d,0xce,0xcb,0x92,0xcb,0x7e,0xa4,0x40,0x09,0x88,0x5e,0x46,0x49,0x97,0x43,0x33,0x05,0x61,0xba,0x1d,0x36,0xae,0xdd,0x46,0x76,0x75,0xfd,0xca,0x2b,0xaa,0xa4,0x70,0x1b,0x6f,0xad,0x97,0x9f,0xd8,0x39,0xc4,0x70,0xd1,0x3c,0x82,0xda,0xa9,0x05,},"\x78\x76\xa3\xf4\xeb\x69\xbb\x7e\x54\xe9\xff\x95\x4e\xbd\x3b\x10\xb9\x3a\x4c\x1a\xfe\xae\x92\xfa\x03\xc1\x03\xcb\x63\x13\xa2\x01\xc5\xb3\x3a\x9a\x72\x23\x75\x5c\xb5\x10\xe2\x5e\xc5\x82\xb5\x4e\x81\xb8\x49\x56\xf6\xc5\x3f\x1f\x08\xa6\x3b\xf0\xc4\xa2\x61\xaf\x45\x0e\x52\x3f\xe8\xf6\x1d\xdb\x3c\x0e\xea\xb8\x75\x10\x72\x68\x88\x01\xb2\xa4\x73\xb7\x1a\x2e\x38\x70\x8d\xa6\x8c\x2f\x37\x92\x5c\xb0\x5a\x20\xc4\x28\x3b\x3a\xf9\x7b\x6f\x0b\xa6\x5a\x54\x03\x55\x43\x75\xe2\x15\xd9\xe3\xaa\x1b\x0f\x9f\xdb\x0f\x84\x99\x23\xed\xbd\xaa\x0a\xb4\x81\xc5\x45\xa5\xdf\x8f\x51\xd1\xf6\x8b\x22\x35\x07\xea\x0e\xcc\xfa\xeb\xb5\xfc\xcf\x5e\x3d\xfa\x65\xa4\x4e\xea\x50\x45\x68\xa8\x81\x80\xa0\x60\xbb\x06\xc5\x15\x57\xb8\x1e\x66\x7b\x4b\x04\xe3\x21\x0f\xa4\xc3\x79\x87\x6c\x49\xf3\xe5\x6b\xf2\xbe\x1c\xf5\x19\xa7\x41\x83\x93\xd2\x40\xdc\x8a\x22\x4c\x6c\x38\xac\x2a\xb9\xd8\xfa\xdf\xc5\x36\x20\x30\xc7\x93\x0c\x3c\xe7\x79\x5b\x14\x7c\x26\xc8\xa2\x8c\x65\x34\x29\xd9\x0a\x17\x3a\x86\xa8\xb1\x8a\x00\x9e\x62\xae\xf6\xec\xa9\x5d\x39\xbd\xbe\x45\x64\x77\x78\xa2\x53\x2a\x41\x5a\xe1\x9b\xad\x23\x11\x29\x12\x78\x42\xfe\x1d\x0f\x11\xfa\xb4\xa1\xcf\x0b\x17\xe4\x98\xcd\x59\x52\xc9\x39\xe0\x90\x09\x02\x87\xb1\x44\x89\x5d\xff\x00\xce\xc8\xd6\xae\xda\xf6\x24\x81\xa4\x17\x83\xe0\x21\x08\x2c\xe3\x52\x06\x3e\x62\x81\x1f\xd9\x99\x90\x10\x4d\x8a\x46\xcd\xca\xee\x2b\xab\x45\x8e\x52\x47\xfb\x02\x3e\x92\x33\x30\xa4\x28\xc7\xbc\xfd\x20\xb0\x8f\x52\x0e\x89\x46\xdd\x65\x83\x47\x35\x2a\xe0\xc4\xbe\x73\xc3\xd5\xec\xcd\x11\x14\x9f\x3a\xb7\xb8\x05\x2c\xfd\x95\xc3\x5d\x41\x64\x54\x6f\x5d\x8f\x37\x75\x17\xa7\xf4\x32\xc0\xd5\x56\x3a\x7b\xcc\x7b\xd1\x19\xd3\x42\x1d\xfe\xba\xae\x84\x45\x99\xb2\x9b\x38\x3b\xb8\xd5\xdb\xf1\x40\xd9\xbd\x47\xa0\x78\xb7\xae\x7c\x6a\xa8\x7b\x1e\x29\x23\x6c\x9f\xcf\xd6\x54\xb7\xf8\x09\x79\x4c\xcc\xb2\x61\x58\x8e\x18\xde\xc6\xc4\x04\x6a\x93\x40\x67\xd0\xdf\xa0\x37\x91\xd0\x3d\x83\xb7\x18\xac\x4d\x24\xdc\xe7\x85\xa3\x02\x8d\xe0\xc9\x59\x2d\xba\x7c\x5c\x58\x45\x18\x4a\xfc\x9c\x0d\xfc\xf9\x40\x95\x86\x0f\x0e\xb8\x02\xeb\xea\x20\x17\x8e\x78\xb5\x64\x2e\x5d\xd6\x1c\x33\xb3\x97\x69\x05\x2d\x9d\x85\x4d\xce\x90\x2f\x47\x6e\x21\xf9\x6c\x65\x0b\x46\x3b\x7b\xc3\xd0\xff\x29\x96\xb6\x5c\x57\x83\x1f\x8b\x7c\x0f\xb9\x15\xf4\xdd\x72\x26\xac\x95\x5c\xbc\x7d\xfb\x03\xf9\xb7\x58\xdd\x3e\x0d\xfc\xe2\xe0\xe5\x80\xc9\x1a\x30\xc7\x83\xff\x56\x7b\x17\xf1\x2d\xfd\x5d\x31\x37\x64\x6e\x20\x01\x1c\xdc\xaa\xe1\x11\x02\xdc\x71\x68\x86\xcb\xf1\x23\xc0\x94\x88\xb1\x73\x63\x6a\xbd\x54\xe9\x62\xca\xee\xc9\x7d\x5e\xb9\x40\x68\x2e\x70\x3b\x73\x0f\x61\x56\x2c\xd1\x4b\x9e\x65\x61\xb5\xe9\x3f\x60\xcd\x0e\x1e\x86\xd1\xa1\xb4\x71\x9c\x5b\x50\x82\x42\xbd\x6b\x2d\x9a\x54\x8f\x59\xbb\xb8\x75\x07\x59\x69\xef\x20\x32\xf3\x19\x6b\x8a\xec\xcc\x45\xa4\x4d\x9d\xbd\xaf\x87\x8e\xd1\x6f\x1d\x85\x5e\x89\x18\xed\x65\xa4\x5e\xe5\xc7\xfa\x32\xa1\xec\x69\x32\xa1\x59\xcf\xb5\x0f\xfc\x87\xbe\x06\xdf\xcf\x72\x28\xae\x88\x70\xcc\xd3\x57\xfc\x65\x6e\x33\xfa\x4b\x6b\x8b\x7d\x1a\x72\x15\x55\x3c\xab\xac\xc7\x0a\x39\xc9\x80\xb9\x71\xe5\x1a\x17\xed\x63\x18\xb4\x3b\x29\xbb"}, +{{0xef,0x12,0xdf,0x47,0x9d,0x98,0x3a,0xd9,0x6e,0x8b,0xa6,0x53,0x30,0xb3,0x6d,0x49,0xaa,0xdb,0x98,0x31,0x64,0xe1,0xc0,0xb4,0x52,0xb5,0x60,0xde,0xd1,0xd0,0x8d,0x60,},{0xf7,0x61,0xcf,0x28,0x26,0x92,0x7a,0x7c,0xda,0x8c,0xb0,0x4f,0xaa,0x2c,0x59,0xf8,0x42,0x5a,0x8f,0x7d,0x39,0x8f,0x76,0xe8,0x67,0x02,0x1c,0x95,0x1f,0x07,0x38,0x09,},{0x4c,0x80,0x10,0x86,0x6d,0x91,0x15,0xf0,0x52,0x93,0xb9,0x34,0xca,0xc6,0x81,0x04,0xcc,0x2c,0x34,0x37,0x56,0x8c,0xb9,0xd5,0xc5,0x70,0xb1,0xa8,0xbe,0xe7,0x06,0x60,0x30,0x75,0x53,0x70,0x33,0xbd,0x70,0x8a,0x9c,0x9f,0x3d,0x1e,0x25,0x19,0xa9,0x15,0xb1,0xc4,0xae,0x4c,0xcd,0xdf,0xcf,0x0e,0xd0,0xc0,0x49,0xd3,0x42,0xa0,0x2e,0x02,},"\xe5\x8f\x34\xda\xea\x75\x5a\xc4\xe4\x13\x33\xd6\xf0\xed\x01\x35\xf7\xdb\xce\x50\x30\x9b\xb1\x95\x6b\xc7\x1a\xcb\x12\xc7\x70\x67\xa6\x47\xff\xd8\x6a\xa5\x87\x0c\x0c\x00\x07\xe8\xf9\x95\xa2\x2b\x88\xc4\x67\xde\x22\x54\x44\x54\x42\x01\xc5\x57\x49\x5e\x25\x3e\x33\x19\xcc\x5c\xa3\x76\xd3\xe7\xcc\x1e\xb4\x67\x34\x6e\x52\xad\x95\x6a\x6f\xa7\x33\x72\x0b\x17\x11\x7b\x5b\x75\x85\xe4\xd5\x59\x40\x9a\xae\xfa\x95\x58\x0f\x91\xe5\x02\x01\x5f\x49\x7c\x5c\xdc\xb7\xd4\xd5\x61\xf5\x44\xef\xa3\x5c\x1e\x2a\x53\xb7\x2b\xdd\xec\xee\xc2\xd1\x05\x0f\x17\x7d\x48\x0f\x68\x74\x05\x66\x4d\xfd\xde\xc0\x6e\xee\x4b\xd1\x47\xa9\x12\xfd\xbf\x74\xf2\xa9\x5d\x1f\xd1\xe1\x12\x68\x69\x4c\xe4\xd4\xec\x4f\xff\xd6\xdd\xb3\x25\x4d\x36\x0f\x23\x6f\xab\x4d\x1a\x17\xf8\xd0\xd1\xa5\x11\xf9\x44\x69\x2f\x23\x96\x39\xae\x03\xd6\x4f\xac\xec\x65\x38\x42\x7a\xb7\x1f\x71\x27\xf4\xa2\x76\xf9\xbc\x45\xbb\xa6\x11\xdf\xcc\xe6\x44\x6c\xc1\x39\x68\x97\x6c\x8b\xb6\xd6\xfe\x21\x06\xd7\x05\x92\x2d\xca\xc9\x56\x96\x6a\x76\xd4\x8f\x2a\xff\x4b\x86\x51\x4e\x39\xa6\x7e\x16\x43\xfc\xc3\x21\x85\x80\x24\xe6\x93\x18\x98\x33\xc8\xad\x59\xb4\xb6\x25\x29\x8e\xba\xfe\x64\x62\x6b\x48\x0f\x32\x6f\x13\x40\x72\x3c\xb3\xd3\x83\xf4\xfc\xcb\xfc\x23\x7a\x3f\x4c\x4f\x7e\xcf\x0b\xa4\x36\xb3\x2c\x2f\xe3\x51\x79\xda\x93\x11\x1b\x48\xcc\x9e\xa2\x42\x02\xbd\xc1\xb2\xfb\x60\xa4\x31\x9d\xfd\x98\x64\x47\x0f\x73\xf5\x41\x37\x20\x6e\x0b\xf0\x07\xf5\xae\x88\xa8\x87\x47\x00\x8a\x60\xf4\x78\x9a\xd1\x67\x72\x4f\x17\x9c\x02\xb6\x3a\xed\x00\x25\x73\xd2\x8a\x6b\xcf\x88\xe0\x7c\xe8\xda\xea\x5d\x5f\x1a\xcf\x48\x7b\x4c\x5c\x16\xc2\xbf\xe1\x12\x31\xea\x5e\xa7\x63\xe8\xf3\x32\xcc\x73\xda\x1b\x2f\x8c\x19\x8e\xa8\x17\x3f\xd3\x3d\x4b\x2a\xe6\x9e\x5d\x4d\x1a\xad\xdd\xf2\xfd\x82\x1b\x85\xbe\x45\x15\x19\x62\xd1\xf9\x9d\xf8\x13\x08\x61\x88\x52\xad\x7c\xf4\x1d\x72\xda\x08\xa1\xb3\x9d\xf7\xd8\xb9\x94\xb4\xdd\xff\x37\xf9\xdf\xe8\xf3\x8c\xe3\x0e\x91\x06\x1d\x95\xd5\x8f\x7a\xe8\x26\xb0\x23\x85\x27\x2e\xc0\x9f\x01\xa7\xb3\xe4\xb3\x91\xd0\x9b\xce\xd6\x65\xda\xd6\x95\x05\xb4\x19\xda\x84\x81\xbc\x37\x92\xbf\x8b\x8e\x7a\xd6\x4b\x63\xf2\x45\x66\x6c\x8c\x32\xfd\x5c\x1b\x1b\x48\xc9\x95\x1e\x1c\x21\xa1\xeb\x5f\x50\x7c\xff\x13\x7c\xfb\x86\x2c\x2c\xc9\x87\x66\xe8\x78\xc9\x30\xa0\x83\x82\x8c\x9d\x8d\xb1\x8b\xf1\x67\x16\x68\x5f\x39\xd6\x57\x2a\x8c\xa8\xb2\xa5\x14\xf7\x70\x03\xd4\xe7\x5b\xc1\x54\xae\xbf\x14\x10\x37\x78\xf3\x65\xb1\xc3\xf0\x35\x41\xdd\xbd\x07\xd6\xe2\x3e\x56\x76\x2d\x97\x1e\xb0\x29\x83\xe9\x3c\x4e\x01\xba\x4b\x8a\x21\x78\x92\x8c\x43\x37\xd3\x02\xf3\x1c\x9c\xcb\x75\xb2\x49\xa8\x2d\xc9\x68\x21\xe9\x5a\x03\xab\x6b\x77\x0d\xf2\xc3\xdf\xdb\xf1\xfe\x97\x73\xf8\xbc\x1b\xc5\xb3\xaf\xa0\x44\x0b\x10\x25\x78\xf3\xd2\x13\xc8\xd0\x19\xcf\xf1\x24\xf7\x5c\xe4\xac\xcc\x8c\x66\x7f\xeb\x27\xc7\x51\xa6\x12\x00\x74\x81\x31\x04\xe0\xcd\x07\x0c\x9f\x5e\x45\x1d\xcc\xff\x4c\x80\xd7\x11\x07\xc9\x75\xab\xfa\xc0\x7d\x4d\x27\x0c\x72\x7d\x8a\x2f\xec\x34\x9b\x53\x39\x68\xe2\x71\x89\x2d\x2b\x62\xc1\x25\xfb\x79\x74\x60\x3c\x30\x5e\xa3\xbf\xa3\x0f\xb6\x10\xfc\x5a\x23\xeb\x68\xa8\x40\x64\x44\x39\x1a\x52\x13\x37"}, +{{0xf7,0x31,0x31,0x7c,0xf5,0xaf,0xfe,0x58,0x70,0x4c,0x4d,0x94,0x97,0xae,0x86,0x0b,0xbf,0x73,0x9d,0x0f,0xd9,0x6b,0x7c,0x02,0xef,0xb6,0x77,0x7b,0x3c,0x85,0x8a,0x19,},{0xd7,0xd6,0x38,0xae,0xcc,0xe1,0x46,0x1e,0x31,0x42,0x55,0xaa,0x29,0xd9,0xa6,0xb4,0x88,0xae,0xa1,0x39,0x6e,0x96,0x82,0x69,0x5a,0x47,0x0e,0xff,0x23,0xf3,0xed,0x84,},{0x2a,0x4f,0xea,0x98,0xf9,0x24,0x01,0x71,0xa1,0x82,0x3f,0x2f,0x69,0x35,0x20,0x62,0x67,0x2e,0x6c,0x6e,0x66,0x52,0xd3,0x88,0xa8,0x77,0x14,0xd6,0x47,0x99,0x5d,0xf7,0x5b,0x6e,0x1e,0xd1,0x74,0x6a,0xf2,0xad,0xf4,0xe8,0x06,0x13,0x5d,0x60,0x75,0x4e,0x60,0xfe,0xa0,0x32,0x12,0x8e,0x35,0xab,0xc1,0xf1,0x61,0x51,0x81,0x12,0x5f,0x0b,},"\x16\xf5\x1c\x59\xe9\xae\xfc\x26\xb0\xda\x5e\x00\x85\xeb\x2e\x2f\x1f\x85\x6d\xef\x97\x25\x76\x9e\x3a\xf1\x2f\x86\x09\x05\xae\x13\x3f\x65\x07\x4d\xa7\x6d\xbf\x25\xc6\x7f\x62\x57\xd2\xdc\x66\xc0\x5f\x9b\x31\xae\x17\x7b\x69\x92\x9f\xc1\x83\xb5\x88\xc5\x19\xbc\xa1\x47\x96\xa0\x89\x6d\x29\x05\xfd\x94\x2d\x7a\xb4\xa3\xfd\x95\x41\xa5\x52\x9f\x72\x9c\x58\x51\x41\x9b\x5f\xbe\xf7\xb1\x34\xd6\x76\x2e\xb9\x7e\x8a\x95\x1a\x8f\xf5\x2a\xa0\xd7\xe6\x74\x44\xd0\x6b\x07\xaa\x55\xe4\xeb\x9a\xb8\x92\xf4\x7b\xfd\x11\x1d\xf5\xb6\x2f\x6f\x3f\xd1\xa5\xed\x84\x12\x5f\xee\xbb\x77\xda\x63\x7c\x05\xd5\x26\x5c\xed\x11\x3d\xfe\x87\x82\xdb\xd1\xce\xcd\x2c\x6c\x03\x2b\x8f\xa8\x85\x5b\x3a\xe7\x8d\xe7\x4f\xaa\x5a\xa2\x0a\x76\x14\x63\xc2\xa3\x0b\xe6\x6b\xd3\x8c\xde\xc7\x5f\x89\x57\xcb\x94\xc1\x13\xa4\x5d\x54\x6d\xaf\x47\x5d\x89\xaa\x14\x82\xf8\xd2\x80\x3a\x23\xc9\x39\x20\x20\x15\xa0\x8e\x94\xb1\x32\x72\x8f\xbe\x8f\x60\x19\xd7\x16\x8a\x08\xa5\x93\x01\x70\xe5\x63\x9d\x11\x0e\x47\x39\xdb\x85\xe6\x1e\x64\x49\x59\x44\xb5\x42\x3a\x74\xad\x5a\x8a\x0a\x51\x06\x12\xec\xe6\x55\xce\x18\x86\x40\x51\x52\x5b\x90\x8e\x0b\x19\x29\x0a\xbe\x8b\x11\x82\xc4\x8c\x70\x0d\x35\x05\x15\xfd\x34\x99\x56\xe8\x08\x73\x27\xf3\x0b\x6f\xc3\xf1\x31\xc2\x14\x4a\xbb\x3f\x0e\x9c\xa3\x31\x17\x2b\x35\x06\x4a\x82\x81\x1a\x68\xe2\xcf\x36\xb4\x3e\x3a\xd2\xe8\xdf\xa5\xb1\xce\xf5\x0e\x2a\x60\x29\x3f\xc5\xf6\x35\xc9\xa9\x99\x8d\x8c\x1a\xd2\x96\xe7\xc7\x8f\xc0\x58\x20\x22\xd6\x30\x67\x18\x6b\x65\xe7\x64\x82\x8c\xc0\xf5\xf7\x63\x2d\x5e\xef\x86\x3e\x6c\x6d\x90\xe3\x8c\xcc\x87\xd7\xb7\x47\xfa\xc8\x49\x1d\x63\x2c\xf7\xf5\x4b\x9a\x9e\xed\x16\xee\xbe\xc0\x1b\x6c\xc3\x3d\x24\x63\xf7\xf9\x50\xd8\x28\xb5\x5e\xe3\xf7\x7c\xbe\x97\x4f\x48\x94\x8e\xb7\x57\xae\xd4\xe0\xdb\xb0\x0a\xd9\x5e\xe0\x13\x23\x48\x6e\xba\x3c\x8d\xa8\x86\xed\x7f\x57\xbb\x40\x0d\x63\xa1\xb2\xeb\xea\xa2\xe7\x0a\xdf\x03\x79\xe3\x39\x30\x01\xba\x62\x6c\x0d\xd5\x4b\x7f\x0c\x9a\x25\xaa\xe6\xc9\x87\x5d\x4e\x76\x22\xf3\xed\x42\x8f\xb3\x12\x4b\x29\xc5\xdb\x9a\x7e\xf1\x6e\xbd\xdd\x68\x05\xf0\x95\xf5\xe7\x69\x82\x3c\x43\xf2\x62\x86\x8f\xf4\x3e\x3e\x05\x25\x74\x6d\x94\x97\xaf\x12\x4a\x01\xdf\xf6\x1e\xc7\x18\xaf\x3b\x5b\xb7\x46\xfc\xc0\x8a\xeb\xd1\x66\x84\xd4\x56\xae\x79\x32\xff\x5e\xd7\xd6\xb0\xf1\xb2\x5c\x7a\xde\xef\x59\x8b\x5d\x58\x87\x75\x90\xac\x1d\xc0\x59\x75\x15\x67\x96\x99\x87\x74\x08\x1e\x5b\x66\x82\x2a\x94\xa6\xa8\x02\xc3\xa2\xcd\x9f\x48\x9e\x16\x28\xaa\xf4\x65\x2b\xe1\x18\x4b\x0f\xc7\xc5\xee\x7f\x97\xce\x08\xb9\x23\x3b\x4b\x83\xd9\x36\x7b\xe5\xf4\xaa\xe9\x78\x25\x93\xa3\x52\x65\x15\x4d\xea\x4c\x37\x5c\x16\xf0\xca\xf6\xdc\x45\x94\xd2\xbd\xbf\xc3\x37\x5b\xb2\xa0\x43\x2c\x48\x2f\x13\x94\x1c\xe2\xaa\xab\x4d\x83\xe7\x4d\x11\x6f\x5d\xe4\xab\x28\xf8\xdc\x3d\x1c\xd1\x9d\x27\x1e\x56\xe1\x03\x98\xbd\x1d\xf5\xc8\x70\xfc\xbf\x93\xa7\xd1\xdf\x39\x39\x54\x7c\x10\x7b\xfd\x90\x64\x3f\x6f\x50\x01\xae\x7e\x06\x39\x7a\xe1\xa2\x71\xbb\x82\xa1\xf3\x8e\x09\x7b\xec\x66\x74\x66\xb8\x0e\xe3\xe5\x0d\xd4\xfc\x9d\x5d\x54\xf1\x8f\xaf\x7a\x5b\x55\xa8\x83\x45\x94\xef\x0c\xb7\xe5\x08\xbb\xd2\x8f\x71\xfd\x34\x23\x5b\xbf\xd3"}, +{{0x49,0x8e,0x5a,0x21,0xa9,0xb0,0xc3,0x47,0xba,0x83,0xa4,0x7a,0xc1,0x00,0x69,0x45,0x7f,0x57,0x83,0xc2,0xe1,0xe6,0xe4,0x64,0x00,0x45,0xe5,0x94,0xb1,0xc6,0x93,0x32,},{0xfb,0x39,0x48,0xc8,0x11,0x99,0x56,0x91,0x05,0xcc,0x1b,0x7d,0x9c,0xeb,0x3b,0x41,0xa3,0x43,0xbb,0x00,0x57,0x55,0x38,0x59,0x2e,0x09,0x84,0xf4,0xf4,0x71,0x0a,0xbe,},{0x28,0x60,0x83,0x0c,0xcd,0x1d,0x41,0xd9,0x50,0x76,0x81,0x6a,0x39,0x84,0x24,0xf7,0xb7,0x39,0xc4,0x9f,0xda,0xcf,0x56,0x54,0x52,0x9d,0xa8,0x5f,0xe3,0x56,0x55,0x84,0xf6,0xaa,0xc2,0x61,0x4c,0x63,0xf7,0x74,0xb6,0x1d,0xb9,0x08,0x1f,0x14,0x10,0xfb,0xa8,0xe5,0x0a,0xb3,0xb4,0xc3,0x9d,0xc0,0x63,0x14,0x24,0x3f,0x3f,0x0d,0x8e,0x0f,},"\xe4\xfb\xea\x86\x4a\xa5\x11\x90\x82\x66\x45\xd2\xf7\x72\xcb\x0f\x9e\xdd\xd3\x03\x44\x73\xfa\x31\x77\xc7\xaf\x9a\x5d\x41\xe1\xa7\x3a\xd5\x78\x4c\x70\x96\x55\x9f\xcd\xdb\x7b\x7c\x85\x89\x1c\xf2\x4e\x82\xc5\x88\xd7\x47\x74\xff\xca\xc0\xc6\xb4\xee\xbc\x2f\x3f\xa4\x3e\x9d\x45\xf2\x59\xd6\x75\x64\x03\x0c\xfe\xea\xb9\x23\x6c\x66\x5b\x65\x0a\xf0\xc9\x2c\x87\x51\x89\xf5\xf9\x38\x35\x04\xb1\x53\x60\xa0\xb9\xa5\xa0\x0d\xa3\x1f\x63\x5b\x96\xf6\xc7\x3e\xf4\x7b\x6b\x06\xf0\x28\x11\xd1\xd1\x9c\x2e\x8e\x53\x55\x0c\xe2\x2e\x42\xec\x50\xa1\xeb\x2e\xa2\xf4\xcd\x03\xc4\x42\xd4\xaa\x43\x68\x94\x23\x8c\xeb\x18\x35\xfe\x99\xb2\x40\x35\x8a\xa0\x56\x2c\x24\x96\x98\xa3\xf1\x23\xc2\xc1\x7e\x59\x10\x10\xbd\x6f\xdf\xcb\xd7\xdb\xe7\x0b\x04\x52\x05\x02\xec\xe3\x7a\x9a\x1d\xfa\x1a\xe3\x37\x04\x17\xb0\x04\x21\x7a\x5b\x8f\xe9\x90\x3c\x9a\x3b\x9f\x4b\x6d\x5c\x46\xc0\xed\x0c\x53\x8c\xec\x22\xf2\xdf\xcb\x2a\x28\x0a\x42\xad\xc4\x89\xcf\x2e\x06\x29\x12\xbe\x99\x28\xf0\xc0\x60\x89\x1e\x43\x20\x91\x17\x75\x26\xf1\xb3\xa9\x68\x06\x9d\x4a\x57\xad\xe8\x28\x55\x98\x10\xae\x03\x60\x68\x1f\xf9\x93\x29\xfa\x0f\x59\xe7\xe5\x9c\xdf\x87\xf9\xf3\x3c\x40\xe9\x70\x31\xb9\xf8\x1d\x48\xfc\x12\x28\x6e\xfb\xb3\xd4\xe5\xa6\x2e\xf5\x7b\xc0\xd5\x2d\x53\x3b\x99\xc5\x10\x6a\xa7\x9c\xfe\x17\x93\xa9\x08\x51\x85\x96\xc3\x83\x48\x3e\xc4\x9f\xf9\x8e\xc5\x57\xbf\xff\x74\x90\xa4\x6d\xaf\x67\x14\xf2\xc2\xc3\x2f\x57\x93\x2c\xa0\xd7\x30\xf0\x3f\x38\x1d\x69\xde\xcd\xbd\x9a\x7a\x6d\x4a\xfc\x62\x40\x65\x43\xc8\xeb\xe9\x0a\xc7\x6e\x6a\xfa\xbd\xb8\x24\x92\xa2\x06\xa3\x69\xe0\x42\x86\xd3\x13\xe1\x11\x07\xd8\xcd\x9b\x4b\xf6\x8f\x81\x5d\xba\x4e\x99\x0b\x04\x9d\x79\x21\x6d\x36\x53\x13\x83\x42\xcd\x11\x8b\x13\x0f\x66\xb0\x06\xf3\xd8\x9a\xc3\xcf\x89\x83\x70\x48\xb0\xf8\xa6\x2d\x94\x05\x1d\x2e\xab\x89\x1a\xc5\xf4\x78\x88\x87\x9d\x88\xe5\x46\x67\x6d\x1d\xae\xeb\x4d\x17\x5d\x3f\x04\xa9\xd7\x4f\xfc\xdd\x47\x74\x60\x16\xf8\x4a\xd0\xd1\x12\xaf\xb5\x9a\xd1\x21\x87\xe9\x4f\x22\x53\x5d\x77\xe9\xe0\x51\x6f\xa4\x21\x85\xc1\x97\xba\x77\x4b\x39\x32\x27\xf7\x41\xfe\x68\x27\x3f\x42\x3f\xb0\xe0\xe0\x47\x4b\xfd\xaf\x2d\xa7\x8a\xeb\x1c\xd5\xb9\x8c\x1d\xc0\x83\x21\x24\x74\x2a\x47\x54\x12\x5f\xc7\x8b\x19\xc5\x59\xa5\xb3\xf7\x71\x1e\x06\x8c\x44\x0c\xc0\x46\x9a\x1c\xfa\x5c\x18\x64\xbe\x18\x73\x5a\xa8\xbc\xd4\x06\xc4\x37\x1e\xb8\x57\x75\x4d\x90\x8b\xf3\x79\xb9\x1f\xcb\x24\xe3\x43\x96\xbf\x87\xc1\x9a\x04\xa8\x3d\x59\xda\xe7\x1f\x3f\x38\x39\x82\x9d\x06\x22\x13\x01\xef\x59\x56\x96\xe7\x19\xd5\x6b\x79\x52\x0a\x0e\x50\x99\x29\x83\x3b\x1d\x80\x4a\x6a\x0e\xa4\x04\x00\xbb\x45\x02\x8c\xe5\xd3\x69\x33\x88\x3e\x17\x40\x6e\x27\xa8\x10\x90\x57\xb1\xa1\xa5\xe5\xda\x21\x0a\x69\x21\x99\x4f\x46\x7a\xb4\x1a\xa8\xf0\xd8\x87\x75\xa8\xa8\xeb\xb4\xec\x77\xd7\xc8\x0e\x45\xa7\xbb\x42\x2a\x4c\x00\xc9\x05\x83\x91\x14\x65\xe6\xb5\xf0\xfd\xcd\xea\xb7\x28\x71\xca\x54\x2e\x1d\x1a\x2c\xa9\x4d\xf4\xed\x2e\xab\xf9\x0d\xed\x00\x45\x29\x03\x24\xa9\xff\xfb\x30\x14\x54\x70\x20\x9f\x38\x26\x58\x09\x89\x34\x91\x99\xdc\x5a\xb8\xd4\xa2\x5d\xf7\xa0\x52\x9c\xf9\x14\x71\xe3\x08\x42\xab\xfa\xcd\x44\xab\x78\x1d\xfc\x13\x95"}, +{{0xc2,0x4c,0xbf,0x40,0x1a,0xd0,0x3b,0xd8,0x8d,0xcc,0x7b,0x51,0x9e,0xcf,0x62,0x4d,0xb2,0x22,0x3e,0x99,0x02,0x89,0x30,0x9e,0x1e,0x9f,0x1f,0x8f,0x61,0x27,0xc6,0xc9,},{0xa7,0x46,0x66,0xf3,0x57,0x20,0x9f,0x71,0x89,0x90,0x37,0x88,0xf1,0x07,0x56,0x3e,0x50,0xc0,0x51,0xc3,0xd4,0x0c,0x3f,0x3d,0xad,0x10,0xd3,0xc3,0xcf,0xf1,0xe6,0x78,},{0x58,0x1e,0x6c,0x85,0xae,0xc6,0x23,0xb6,0x2b,0x3d,0x4c,0x9b,0xc9,0xc7,0x77,0x59,0xd5,0x49,0x27,0x22,0xe2,0x52,0xd4,0x4c,0x1f,0x8a,0xda,0x9d,0xa2,0xec,0xc6,0x7c,0x17,0x08,0x32,0x73,0xaa,0x09,0x1b,0xba,0xc0,0x46,0xae,0x63,0xc7,0x88,0x93,0x15,0x2e,0x14,0xd9,0x26,0xc4,0x1a,0xe3,0x5f,0x0e,0x6e,0x39,0x59,0x49,0x6b,0x13,0x06,},"\xe7\xfa\x35\x9e\x6a\x09\xb2\xc5\x4a\xab\xed\x3b\xba\xbf\xb7\x28\x53\xa8\x05\xaa\xbc\xf4\xd1\x8d\xda\xd3\x9f\x03\xf3\x46\x01\xe5\x5b\x6c\xe2\x63\xc9\xa3\xca\x6a\x3e\x5f\x14\x25\xc8\x21\x92\x8c\x61\xe7\xf7\x50\x91\x9b\xd3\xaf\x32\xbc\xb7\xb9\x4d\x45\x9a\x7a\x9a\x35\xf6\x1c\x94\x17\x92\xe2\xcc\x2e\x43\x27\xbe\xb3\x44\xa8\x41\xa0\x7f\x32\x06\x8a\xf1\x02\xb3\xde\x61\xea\xb6\x4e\xf6\xd5\xe6\x90\x62\xe3\x93\xab\x5e\xdf\x6a\xc9\xef\x7b\x38\xd4\x9a\x01\xbe\xf0\x00\x3f\x42\x11\x74\xc8\x88\x59\x75\xc0\x18\x32\x89\x9c\x31\x35\xe7\xa8\x6e\x5b\x55\xd9\xb1\x32\x8b\xb4\x28\x9b\x5c\x40\x20\x0f\x49\xe5\x52\x3b\x3c\x46\x1d\xc7\x17\x5e\x14\x65\x02\x22\x97\xc3\xd3\x80\xf2\xb1\xfe\xf3\x9c\xb8\x2c\x00\xfd\x16\x0f\x44\x7e\xb5\x12\x63\xfa\x25\xb4\xdf\x0f\xca\x41\xec\x0c\xa2\xec\xe7\x47\x22\x01\xaf\x86\xc3\x03\x8c\x49\xdf\x09\x9a\x9a\xef\xa1\xf8\x8d\x0e\xdf\xd1\x7c\x0b\x3c\x86\x04\x66\x29\xc0\x94\x54\x05\x4a\xa0\xfb\x2c\x69\x49\xdd\x9c\x13\x01\x85\xdf\xa5\xd9\x03\x89\x1e\x08\x74\x2c\xd0\x42\x94\x03\xf5\x7f\x40\x52\x15\x8b\x2f\x40\x1d\xa4\x75\x68\x54\xe4\xaa\xf0\x24\x22\x1e\x37\x51\x3c\xf6\x77\xee\x6a\x0b\x15\x9f\x50\x1d\x37\x7e\xa3\x2e\xb7\x1e\x77\x80\x04\xf2\x72\x03\xcd\x6d\x55\x3f\xda\x5d\x65\xe1\x87\x94\x77\x04\x6f\x3e\xa3\xd1\xd7\x5c\x9d\x0d\x30\x31\x14\x56\x70\x9c\xc7\xf6\xab\x68\xc7\xb0\xd5\x2b\xe4\x0f\x04\xcf\x65\x56\x55\x32\x32\x85\x31\x83\x29\xe8\x4c\x6a\x5b\x07\xe0\xce\xed\x5f\x78\xf7\xf1\xfa\x62\x29\xbe\xf8\x78\x79\x3c\x58\x47\x28\xab\xf4\x51\x0b\x7f\x27\x79\x4b\x59\x42\x91\x62\x54\xc5\x89\xa0\x9c\x8e\x91\x1f\x0b\x95\x42\x11\xa6\x36\x99\xa7\x52\x14\x7f\x2a\x4e\x1a\x18\x95\x66\x44\xbe\xa2\xca\x26\x92\xba\x18\x22\x80\xe0\x4a\x72\xdd\x89\xb0\xd1\x26\x85\x00\x93\x8f\x34\x7b\xf4\x3f\x2a\x24\x2e\xe9\xb9\xa6\xba\xac\x9b\x35\x0d\x65\x6f\xb1\x9e\xc8\x34\xab\xe3\x16\x44\x40\xf2\xd2\x07\x1f\xe5\xe3\x2c\x8e\x4c\xf9\x05\x53\x9b\x83\x9c\xee\xca\x26\x20\xfc\xb2\xa0\x87\xf7\x80\xe6\xc7\xf5\xe0\x5c\x50\x68\x88\x25\x0e\xa7\xc8\x56\xfb\x30\x98\x32\x00\xaa\x8f\x78\xfc\x17\x71\x05\x4a\xda\x0f\x3f\xac\x38\xae\x2f\x33\xdc\x4a\x4f\x85\x1b\x76\xed\x74\x0c\x09\x62\xa7\x6a\x4d\xe4\x40\x80\xdc\x62\x0a\x44\xad\x8f\x23\xd3\x46\x2b\x79\x2a\xb3\xaf\xb1\x9c\xb8\xa9\xf4\xd9\xe5\x9a\xd7\x65\xa7\x71\x89\x9d\xa8\xcb\xec\x89\xe5\x07\x7e\x85\xc0\xc9\x31\x26\x37\x6c\x94\x1b\xef\x1f\x8b\xb9\x92\xd3\xa3\x5f\x27\x07\x25\x84\x6f\xb2\x52\xf8\xb5\xfb\xb7\x56\x7e\x40\x6a\x1b\x53\xb6\x19\x76\x9e\x63\x2b\x2b\x40\x87\xcd\x4c\x27\x6e\x5d\x58\xff\x2b\x56\xe8\x9e\xde\xc4\x8c\xe5\x3a\x52\xe3\x29\xca\x15\x59\x53\x8f\x10\x90\x2c\x01\xa8\x5f\xbb\x3c\xd7\x2e\x6b\x82\x91\xe5\xfe\x63\x9b\xee\x9d\x47\xd3\x4c\x24\x9a\x7a\x07\xd7\xa1\x42\x7a\x01\xf6\x3d\x60\x98\x4c\x45\x0b\xef\x81\x9b\x19\xf6\x5e\x26\x14\xfd\x9c\x2f\xae\x7b\x92\x31\xa0\xbc\xa4\x14\xed\x94\xa5\xee\x7e\x66\x32\x7d\x2a\x99\xc8\x48\x78\xb7\xbe\xe0\x87\xe8\x91\xf2\x53\xfa\x1f\xec\xe3\x13\x64\x8c\x06\xc4\x5d\xb2\xd9\xf3\xbc\x85\x99\x93\x7b\x75\x2d\x38\xce\x50\x63\xd0\xed\x9a\x43\xec\x9d\x40\x15\x89\x3d\x43\xbf\x5b\x2d\x1c\x60\x47\x85\x10\x46\x89\x68\xb7\x96\xf0\x15\x37\x89\x59\x54\x41\x72\x2a"}, +{{0x8b,0x3d,0xcd,0xe4,0xab,0xbf,0x4e,0x62,0x11,0xc4,0xa5,0x1c,0x4b,0x02,0x68,0x00,0xa8,0xa2,0xa0,0x61,0xcb,0x38,0xa2,0xec,0xc7,0xc9,0xcf,0x11,0x3f,0x92,0x70,0xbf,},{0x51,0x45,0x35,0x58,0x0f,0x0d,0xe3,0x59,0xbb,0x0d,0x41,0xf2,0xef,0xdd,0xaa,0x04,0xc2,0xec,0x95,0x01,0x19,0xf3,0x16,0x34,0xb2,0xc1,0xa3,0x2f,0x19,0x5f,0x69,0x68,},{0x4f,0x3d,0x4d,0x22,0x85,0x03,0x01,0x7e,0x74,0xa6,0xbb,0x58,0xaa,0xfa,0xe3,0x5c,0x3f,0x37,0xbd,0xee,0x4f,0xf6,0xbe,0x2e,0x62,0x40,0xb5,0x08,0x2f,0xed,0xdb,0x22,0x27,0x35,0xe1,0x2f,0x31,0xe0,0x56,0xfa,0x68,0x54,0x47,0xe5,0x38,0x48,0x03,0x00,0x7e,0xa7,0x91,0x0e,0x60,0x5c,0x1b,0x78,0x11,0x8c,0xd5,0xac,0xc5,0x87,0xa6,0x06,},"\x48\x14\x25\x02\x7d\xa6\x72\xb6\xf2\x6c\x91\xb8\x0e\x55\x58\x2c\xae\xf4\x7b\xb1\x5a\x2d\xe8\xfc\xa8\x52\x22\x17\x85\x18\x0b\x20\xa7\xfd\x6d\x49\x07\xb5\x88\x1c\xc1\xd6\xe3\x9a\xb9\x61\x2c\xc7\x4d\x69\x77\xe9\x14\x1f\x70\x87\xbb\x27\xab\x30\x84\xa2\x62\x85\x58\x6f\x84\x11\xdb\x1f\x50\x3a\xdf\x52\xdc\xb2\x5a\xb8\xff\xfd\x2e\xc1\x50\x4c\x17\x77\xb9\xd6\xdd\x4a\x29\xe2\x01\x9e\x5c\xba\xe1\xb7\xeb\x26\xf9\x5b\xbe\x07\xd9\x0c\x2f\x6f\xb0\x88\x4a\x59\xa8\xd5\x8d\xde\x51\x16\xed\xc3\xbc\x34\x9d\x37\xc1\x60\xb2\x7b\xef\xbe\x5a\x5c\x18\x1c\xe7\x25\x63\x92\x35\x4d\x22\x1b\x58\xc4\x7e\xb0\xbb\x10\x92\x9e\x74\x21\x79\x5f\x4b\x7a\x7c\x27\x5e\xdd\x08\xc0\x88\x56\x87\x72\xe9\x93\x21\x8d\xd6\xf3\xc2\xcb\x4a\xc6\x57\xa0\xa3\xf9\x1f\x31\x26\xb9\x91\xad\xf6\xcb\xe7\xd1\xb1\x9b\x8c\xd8\x3b\xe3\x60\x2e\xd1\x8f\x03\x96\x33\xfb\xd2\x38\x7b\xda\x69\xe2\xcf\x03\x87\xd8\x64\x4d\x97\xb3\x03\xfb\x00\x63\x9a\xee\xe7\xae\x46\x3f\x6f\xe1\xa2\xc4\xb8\x9a\xeb\xa3\xe9\x09\x4c\x11\xfc\x29\x11\x4b\x20\x28\x3f\x28\x7c\x6d\xd2\x8c\xb0\x98\xda\xe8\xda\xbc\x48\xe8\x5b\xb5\x9c\x0d\xc6\xe7\x8c\x95\x66\x05\xcb\x7c\xf0\x69\x42\x35\x3e\x7a\x22\xe9\x6f\x80\xa3\x7a\x66\xf7\x18\xd9\xe4\xdb\x8c\x52\x45\x2a\xa0\xa3\x57\x72\xe8\x1b\xa2\xb3\x03\x20\x5b\x41\x2d\xd2\xbf\xc1\x5c\xe9\xb4\x36\xf9\x9f\xbb\x32\x12\x6b\x63\xce\x9c\xb4\x31\x99\xf1\x57\xd8\x17\x51\xa7\xc4\x93\x7d\x13\xaf\x4c\x58\x29\x52\xb5\xd6\x06\xb5\x55\xb0\x46\xbf\x1d\xe0\x6c\xf3\x9b\x63\xa8\x02\x87\x37\x18\x03\x60\x9a\x38\x7e\xe8\x0f\x3a\x5d\x88\xb9\xd6\x21\x96\x50\xed\x17\xd3\xcc\x18\x3b\x2c\x70\xd5\xeb\x94\xe3\xbc\x52\xae\xa7\xaa\x7f\x53\xbe\x0e\x20\xb8\x97\x2f\x14\x3d\x8e\x20\x16\x2e\x80\x3e\xdb\x4a\xa8\x3d\x55\x53\xfd\xd5\x53\x39\x8b\x0f\xa1\x76\xb9\x59\xcb\xa1\x40\xd6\xe9\x80\xc9\x25\x1b\x0f\xa0\xb6\x5e\x90\x84\x17\xf8\x2f\x45\x1f\xf9\xf2\xde\x6b\x9c\xa5\xe3\xb5\xf4\x1b\xa4\x0d\x05\xa5\x4f\x3d\xab\x48\x86\xaa\xcc\xa0\x5c\x9c\x27\x98\x13\x9a\x4c\xb3\x3e\x96\xa9\x14\x94\x74\x99\x10\xa1\x7c\xe8\xb3\x92\xfc\x0f\xc7\x76\x29\x74\xd7\x9d\x33\xdb\x92\x4b\xfe\xf8\x65\x5a\x72\x37\x76\xff\x87\xf9\x50\xfd\xc5\x68\xb1\xe5\x26\x53\x45\x41\xf5\x72\x72\x3b\x84\x06\x63\xc1\x91\x88\xc4\x24\xf7\xc4\x89\x23\x5a\x42\x4b\x09\xfe\x25\xc3\x07\x27\xea\x1c\xb0\x49\x53\xd7\x06\xd6\x8b\xfe\x12\x10\x0e\xf6\xf6\x4c\x35\xc6\xb8\xde\x67\xed\xf0\xe3\xad\x01\x4a\x40\x0e\x82\x1e\xa3\x40\x24\x32\x19\x99\x86\x7b\x43\xc8\x2c\x45\x01\x84\xb7\x8f\x74\x25\xce\xbd\x73\x19\xdc\x6f\x65\xd3\x60\x66\x5d\xfb\xe7\xc3\x66\x74\xda\xc3\xa5\x4e\x96\xda\x91\x0c\x02\xd3\x64\x07\x80\xb2\x2d\x51\x2c\xa0\xe3\xca\x35\x87\xb9\x4e\xa9\xfc\xd7\xa3\x1b\x4a\xf6\x9f\xd6\x20\x7c\x68\xfe\xd2\x5f\x89\x92\x1c\x1c\xdc\xde\xfd\x1c\x09\x02\x04\x49\x2b\xff\x9b\xbb\x52\xe0\x88\x85\x82\x9d\x01\x2b\xc2\xdf\xb4\xfe\x8c\x35\xe5\x9c\xd1\x3b\xcb\x8e\xad\x34\x19\x3c\x40\xb0\x3e\xe4\xd8\x25\xee\x13\x22\xff\x4e\xf0\x71\x27\x95\x74\xcb\xae\xe7\xc0\x7f\x14\xbe\x60\x6b\x9c\xd0\xe2\x61\x11\x1e\xf2\x0d\x96\x81\xd7\x6c\xf7\x8c\x89\xa8\xc3\x97\xd6\xb8\xdc\x77\x8f\x49\x84\x16\x6a\xd5\xdf\x3a\x81\xaa\xf2\xe6\xde\x09\xf7\x00\x19\x5a\xe2\xc1\xd4\x60\x96\x47"}, +{{0xd4,0xa7,0xa9,0x52,0x4d,0x30,0xa6,0x33,0x7c,0x0a,0x0b,0xe9,0x5c,0xa9,0x05,0x91,0xde,0x98,0x88,0x03,0x8e,0x3e,0x59,0xe1,0xb2,0x5a,0x41,0x81,0xef,0x94,0x66,0x29,},{0x9f,0xc3,0xeb,0xd1,0x39,0xcc,0x5b,0x7c,0x0e,0x05,0xaf,0x47,0xbf,0xf6,0x61,0x9b,0x81,0x28,0x15,0xbb,0x01,0xce,0xec,0x39,0x2a,0x3f,0xf0,0xae,0xc3,0x81,0x1d,0x2c,},{0xd1,0x57,0x88,0xbc,0xd8,0x8d,0x1d,0x81,0xb9,0xe6,0x1d,0x4f,0xe2,0x6e,0xa4,0x9e,0x66,0x81,0x9a,0x59,0xd2,0xae,0x48,0x32,0x32,0x1b,0x81,0x4d,0x50,0x62,0xfa,0xdb,0x87,0x80,0x7d,0xb6,0x85,0x2e,0x1d,0x82,0x95,0xe3,0x1a,0x29,0x1b,0x1e,0x78,0x5d,0x01,0xd8,0x34,0x89,0x5f,0x88,0xf4,0x00,0xdf,0x88,0x32,0xc1,0x60,0x7b,0x5b,0x0c,},"\x17\x19\x80\xc0\x3f\xdf\x7a\x72\x7b\xd5\xba\xb3\xba\x09\x45\xe6\xad\x5f\xaf\x0a\x7f\x50\x6a\x56\xd1\xd0\xed\xd9\xa3\x06\xb3\x15\x8d\x84\x32\x66\xd3\x09\x1f\xc1\xe4\x22\x81\xdf\x97\x55\x9a\x22\x01\xf5\xbd\xdd\xfe\x68\x3d\x0e\x10\x28\xd1\xd9\x5b\x2f\x31\x3b\x48\x4c\x39\x2f\xfd\xb1\xcd\xf8\x85\x08\xaf\xde\x3d\x6f\xd2\xa1\x28\x88\xba\xce\xde\xb7\x9f\xf3\xdb\x40\xc9\xac\x0e\xc3\xfb\x90\x1b\x22\x86\x98\xad\xf8\xd8\x45\xff\x4f\xce\x10\xde\x55\xd4\x24\x36\xdc\xe9\x30\x97\x3a\x34\xbe\x05\xd1\x40\x1f\x33\x4d\x4c\xe8\xe3\xa7\x93\x79\x9e\xaf\xdb\x94\xd0\xf2\xab\x09\x50\xb0\x79\xe6\x65\x3e\xeb\x49\x9f\xc7\x44\x7c\xcb\xee\xed\x8d\xbd\x54\x56\x80\x8c\xd7\xa3\x8f\x9a\x15\xa2\xa9\xc7\x38\xd6\x13\x34\xca\xb8\xce\xeb\xbb\xf4\xa4\x81\x4d\x94\xc6\x18\x59\x17\x87\x84\x60\x4e\x0c\x21\x54\x59\x7e\x72\xcf\x58\x7c\xd1\xf5\xda\xfe\x59\x22\x05\x18\x90\xe7\x6d\x61\x6d\x8c\xd5\xb0\x5d\x64\x78\xd0\x62\x6e\xa8\x3c\xe8\x08\xc4\x61\x43\xe6\xfb\x06\xb4\x18\x2d\x22\x8d\xa8\xf6\xd4\x13\x9e\xca\x5b\x8f\x3b\x1b\x98\xaf\x68\xc5\x9b\x4b\x5a\x53\xc1\x36\xee\x90\x43\x2a\xca\x2b\xb9\x15\x52\x9d\x26\x36\x79\x49\x82\x62\x33\xb4\x3e\x55\x80\x4b\x55\xfc\x9f\x21\x5e\xb0\xb0\xb7\x92\x91\x46\x5b\xb3\x4e\xda\xea\xdf\xfa\xbf\xe6\xcf\x41\xbc\x07\xb5\xdd\x4d\x01\x42\xf0\x36\x1f\x05\x8e\xe1\xb3\xb9\xfc\xc1\x96\xeb\x9b\x35\xb1\x34\xbe\x3d\x1d\x23\x20\x04\x48\x9e\x8f\x69\x93\xf6\x25\xa6\x30\x15\xbc\xd3\xf1\xe8\x75\x88\x32\x48\x58\xcc\xfb\x77\x0d\xdd\xd8\x94\xbf\x29\x7b\xd7\x63\xef\x58\x28\xe2\x1f\x5c\x89\xaa\x98\xcf\xbc\x1c\x08\x2d\xd7\xfb\xaa\x43\x07\xbd\xa4\x0b\x4a\x75\x8c\xa8\xf3\x9f\x4e\x4a\xae\xd3\x09\x04\x12\x68\xdb\xcf\x0a\xf3\x2d\xe0\xd7\xfa\x90\xa5\x23\x96\x3b\x78\x0b\x6a\x93\x2c\xf8\x94\x99\x02\x5f\x0e\x0d\x04\x74\xc7\x43\x48\x94\x75\x10\xe6\xc5\xec\x7c\x9e\x05\x06\x6e\xeb\x4a\x73\x52\x0c\x3d\x92\x7c\x39\xac\x26\xad\x75\x96\x32\x5b\x2c\xc4\x7c\x5e\x82\xa7\x75\x45\x5b\x7a\xf0\x31\x20\xb1\xcf\xbf\xd6\xec\x3f\xc0\xc3\xbe\x60\x78\xb0\x0c\xfd\xf8\x34\x2a\xe8\xbf\x14\x71\x59\xf5\x0e\x9d\x56\x4e\x2f\x68\x30\x6d\xae\x3c\xae\xdd\x10\x19\xf3\x23\xc4\x78\xa1\xe1\xf6\x75\x98\xdd\x83\x4b\xd1\xd1\xa8\x73\x3f\xd7\xfd\xd8\xa8\x76\x52\x6c\x53\x15\x18\x93\x6e\xdb\x72\xd0\x16\x56\xb3\x44\xc7\xd6\x5a\xc1\xce\xe3\x7c\xe5\x99\x7b\xa4\x8d\x3f\x4d\x06\x4d\x88\x05\x7e\xfe\x9a\x48\x2d\x9e\x00\xab\x5c\xae\xb5\xac\xa2\xd6\x60\xe3\x37\xbd\x15\x48\x73\x65\x69\x79\x56\xa5\xe4\x7b\x02\xab\xdc\x30\xd8\xe3\x53\xfe\xd4\xe1\xac\x41\xd2\xbc\x21\x20\x02\x11\x43\x63\x59\x35\xc6\x20\x18\x6a\x52\x2b\xde\x54\xbe\x04\x46\xfb\xd2\xdc\x88\xb5\x63\x04\xb3\xa6\x42\x27\xd0\xac\xd5\xf8\x5a\x6b\x67\x87\xa3\xad\xcf\x2d\x7c\xfc\x86\xc6\x34\xb4\xd7\xab\x43\x15\xb9\x7d\xe9\xe6\x66\xcf\xf3\xff\x1b\x88\xf3\x29\x5e\x7b\xab\x9e\x9f\xd4\x6f\xaf\xdd\xb4\xf5\xfa\xc5\x1c\xc0\x17\x01\x29\xc6\x51\xb4\xef\x4d\x39\x50\xd6\x94\x2f\xf0\x20\xd1\x66\x8a\x52\x8b\xde\x1d\xa9\x36\xc0\xec\x1a\xe0\x9e\x84\xf8\x20\x58\x61\xff\xf4\x91\x50\x2a\x87\x2c\x81\x54\xa9\x6e\x7e\xa2\x5e\xda\x95\x5a\x7f\xd2\xe4\xb4\xc7\xa8\xd2\x73\xf6\x0b\xc7\x4f\xab\x7b\x49\x68\xca\x6f\x75\xda\xea\x50\x40\xf8\x39\xfd\x56\xc2\xa9\x80"}, +{{0xd0,0x8f,0x4b,0xab,0xba,0x3b,0x53,0x65,0xfa,0xf7,0x38,0x79,0x5c,0x9d,0xa4,0x5d,0xb1,0x86,0x2c,0xb2,0x8b,0x93,0xeb,0x66,0x35,0xd1,0x32,0x0d,0xa0,0xf4,0xd9,0x37,},{0xef,0x31,0xb4,0x54,0xf7,0x34,0xe5,0x2b,0x34,0x38,0xee,0x2f,0x1c,0xbc,0x35,0x63,0x1b,0x19,0x69,0xde,0x54,0xac,0x98,0xfe,0x46,0x33,0xf2,0xf5,0x00,0xac,0x87,0x12,},{0xac,0xeb,0xe4,0xc8,0x6f,0xa9,0xfe,0x2c,0x1a,0x5c,0x57,0x6a,0xc0,0x50,0x1e,0x8a,0xb0,0xf6,0x40,0xfa,0x40,0x38,0x05,0x36,0xfc,0xf9,0x50,0x59,0xd5,0x3d,0x4a,0x35,0x55,0xd2,0x20,0xac,0x36,0x35,0x87,0x17,0x5e,0x4b,0xde,0x16,0x3c,0x0d,0x00,0x65,0x0a,0x12,0x96,0x3d,0x46,0x76,0x6c,0x99,0xbb,0x62,0xbf,0x75,0x73,0xe2,0x87,0x0c,},"\xa3\x94\xd8\x85\x4c\xeb\x5c\x43\xaf\xee\x1a\x48\x92\x6b\xbd\x66\x85\xaa\x8a\xec\xfd\xcf\x85\x41\x33\x33\x39\x74\xd6\x24\xbf\x2f\x1f\x9c\x30\xf0\x05\xbb\xf3\x4c\xee\x3a\xfe\x2b\x29\x06\x00\xee\xae\x6f\x1d\xd1\x2a\x0c\x34\x6f\xbb\x2a\xb9\xc9\x16\xc5\xd5\xd8\x0d\xcd\x87\x88\x78\x75\xa0\xac\x84\x76\x78\x03\x9f\xdc\xd3\xa9\x79\x35\x41\xf5\xd6\x75\x14\x3a\x6a\xba\xdc\x3b\x18\xf0\xfe\xf5\x10\x8c\x19\xc2\xdb\xfb\x59\x71\x0e\xef\x98\x66\xa4\xf3\xf2\x97\xa0\x9e\xe4\x8c\x68\x03\x00\x7d\xd6\xba\x8f\xd4\xbe\x84\x1c\xfb\x10\xff\x05\x14\xc3\x0f\xc4\xdd\x49\xa3\xcd\x43\xbb\xd1\x6e\x46\x04\x43\xa1\x1a\xfe\x64\x9e\x90\x1d\x63\xd8\x9a\xf5\x98\xaa\x68\x6b\x2f\x60\x7e\xc1\x1f\x35\xe1\x7a\x79\x8a\x42\x13\xb7\x5a\x38\x78\x8d\xa4\xf2\x7c\xf2\xb0\x2c\xad\xdf\xe6\x1c\x37\x29\xa8\x7e\xc6\xe6\xb0\x98\xf6\x8e\x7a\xed\x28\xa8\x00\xc4\x84\xdf\xa0\x13\x04\x01\x20\x8f\x98\x6d\x79\x2f\x54\x63\x5a\xdd\x28\x48\xe1\x51\x26\x2a\x36\x5e\xb2\x1e\x27\x27\x19\x1e\x1f\x70\x0f\x3b\xf5\xc7\x3b\x0f\xb4\xc5\x46\xd0\x04\x8a\x15\x5c\x18\x71\x79\x20\xfc\x04\x25\xc8\xc8\xfa\x8f\x16\x7c\x43\xa2\x77\xbb\x36\x6e\x0a\xd7\x02\xc8\x9b\xc5\xaa\x06\xfd\x47\x09\x43\xbe\x05\xcb\x9e\x32\x59\x78\x72\x29\x71\x4c\x30\xa4\xe8\x7b\x00\xa6\x33\xaa\xf7\xbe\x6b\x58\x75\x01\x0d\x12\xe1\x07\xc9\xa5\x26\x1c\xa5\x62\xd6\x70\x25\xbe\xa0\xfe\x22\x34\x63\xed\xb9\x2e\xa0\x1c\xca\x92\xc4\x4f\xf2\x4d\xa9\xd8\xa8\x0a\x64\x21\xf3\xd4\x13\x5d\x64\x7d\x1b\xb0\xfd\x98\x8c\x46\xc8\xa1\x70\xce\xb4\xf3\x3f\xff\x9c\x0f\xfb\x6a\xba\xd1\x09\x2c\x84\xdf\xad\x82\x90\x89\x8b\x24\x95\x16\xa2\x92\xe8\xda\x96\xfd\x51\xa8\x10\x05\xee\xcf\xde\xbb\x05\x93\x30\x99\x27\x7d\x07\x3a\x48\x0c\x3f\x9e\xb8\xaa\x11\x96\x8c\x4d\x8d\xc0\x78\x7a\x9a\xec\x3e\x05\x27\xb7\xfe\x4c\x06\x35\x41\x13\x35\xa1\x81\x16\x89\xe8\x8f\x6d\x5c\xed\x0d\x40\xd6\xb4\x8b\x7f\x2d\x99\x29\x52\x93\x48\x94\x15\x30\x76\xa8\xd3\x73\x72\xfa\x00\xd9\xce\xfc\x5c\xf8\xc2\x6a\xdb\x5a\xcf\x32\x5a\x01\xcd\x00\x5a\xb8\xd4\x74\xa5\x2d\x67\x11\x40\x78\xc6\x51\x6a\xef\x80\x4b\xba\x19\xb8\x87\xa2\x8e\xd5\xe4\x6e\xe9\x99\x5e\x5a\xd3\xa8\x2f\xb9\xcd\x93\x28\x34\x33\x68\x09\x21\x11\x4b\x4d\x9a\xf8\xfc\xb6\xb2\xb5\x35\x83\x9c\x36\xde\x8d\xf1\x2b\x17\xea\x6d\xdc\xfc\xb3\x33\x4f\xf4\x0e\x6c\xf0\x4c\xcd\x5c\xa6\x40\x3b\xa0\xb6\x2b\x4c\xb7\x1b\xbd\xe9\x1d\x8b\xab\xda\x69\x15\x2c\x9c\x93\xae\x76\x9b\x55\x29\xc8\xd5\x2f\xd9\xa6\x90\x9a\x15\xe1\xa0\x60\x1a\x71\x46\x49\xc9\x6e\xc9\x96\xc1\x70\x6d\x10\x21\xb9\x74\x87\x98\x0d\x7b\x2c\x2a\x39\xbb\xb0\xe4\x70\xd8\xe4\x6a\xc4\xaa\x60\x9a\x09\x22\xc9\xbd\xc0\x16\x12\xea\xde\xac\xcd\x5f\xa5\x23\xb2\xa8\xd0\xe6\x2f\xfe\x56\x28\x16\x47\xd6\x1f\xff\xbb\xc8\x40\x53\x57\x45\xd1\x44\x25\x9c\xc8\x13\x00\xfe\x99\xdf\xbf\xfe\xa6\xb0\xb9\xbc\xd2\x84\x73\x98\x2d\x32\xe9\x3e\xd4\x66\x34\xa9\x98\x79\x06\xd6\xf4\x89\x39\xd8\xdf\xbf\xb3\x7d\x33\xb8\x88\xdb\x60\x8c\xb2\xff\xe3\x9a\x8c\xf6\x7b\x72\x64\x46\x11\xc7\xd3\x2a\x4a\x8d\xf6\x12\x46\x8c\xd5\xe5\xd7\x5f\xbb\xa7\x9e\x63\x8a\xa1\xda\xa2\x8c\x4e\x0e\xeb\x9a\x63\x7f\xf8\xa0\x8b\x65\xf7\xa7\x61\x24\x14\xdf\x76\xbc\x7b\x0b\x56\xb5\x53\x7d\x66\x6f\xac\xfd\xda\xf6\x5a\xf1"}, +{{0x8f,0x47,0x4f,0x88,0xcf,0x86,0x3c,0x48,0x54,0x56,0xa5,0xa2,0x15,0x52,0x81,0xff,0x27,0xb2,0x84,0x59,0xf6,0x3b,0xc4,0xf1,0xdb,0x00,0xe0,0x03,0x10,0x64,0xf6,0x49,},{0x43,0x14,0x4a,0x32,0x9d,0x75,0x1d,0x04,0xe0,0x71,0x69,0xb7,0x79,0xee,0x92,0x0d,0xd0,0x29,0xcb,0x44,0x5b,0xf3,0x76,0xba,0x3a,0x66,0x85,0x72,0x18,0x23,0x44,0xa3,},{0xf6,0x1f,0x78,0x07,0xc3,0x3e,0x19,0x6d,0x0f,0xe1,0x82,0xef,0xa4,0xd4,0x51,0x6a,0x98,0x15,0xdd,0xd4,0x49,0x53,0x8b,0xba,0xa6,0xb8,0x6b,0x69,0x01,0xa0,0x5f,0x5d,0xdd,0xa0,0x60,0x1e,0xc9,0x0f,0x39,0xf1,0x55,0x47,0x79,0xdb,0x7a,0x09,0xa6,0x05,0x72,0xef,0xfd,0x4d,0x12,0x8d,0x0d,0x3c,0x2d,0xd4,0xe8,0x83,0x57,0x4b,0xc6,0x0b,},"\x84\x08\x91\xd9\x48\xec\x19\xc8\xc7\xf7\xc9\xd3\xc4\x77\x53\x62\xa5\x44\xa0\xec\x97\x45\x7a\xb5\xd1\x4e\x12\x5d\xc5\x4b\x59\xc8\xdc\x9a\x63\x5e\x7b\xad\xb6\xbe\x73\xc3\xa5\x8d\xc0\xe9\x92\x9f\x2b\x42\x0d\x83\x56\xd6\x17\xc3\xd4\x1b\xfe\x69\xb4\xe1\x58\xd4\xbf\x08\xfb\x17\xe6\x88\xd3\xcf\x3c\x94\x8b\x69\xb3\x5f\x0b\x6d\xb6\x62\x72\xa8\xeb\x2b\xd4\x10\xd6\x50\x9f\x6c\x82\x8b\x6a\x20\xd6\x58\x6e\xaf\x85\x76\x01\xed\x9d\x60\x54\x79\x9c\x25\x32\x0e\xba\x80\x77\xfe\x1a\xe2\x26\x71\xb3\x3a\x15\x88\xff\x2b\x23\x5d\x3c\x71\xa2\x7c\xe5\xc6\xc6\x6e\x18\x88\x91\x98\xd1\x16\x93\x36\x76\xbc\x4f\xb0\x71\x0d\xb7\xff\x1a\xc2\xf2\x0c\xe3\x69\xbe\xf5\x6b\x43\xcd\x1d\x40\x6c\xef\xda\xcf\x00\xf1\xf3\x48\xb8\xca\x7a\xa6\x14\xdb\x11\xa3\xa6\x40\xfd\xb5\x93\x89\xd1\xa6\xa3\x94\x75\x5c\x13\x3f\x1b\x01\x9c\x83\x08\xca\x5a\x95\x1e\x73\xb8\x10\xa1\x80\xf6\xff\x25\xb2\x9d\xbb\xcc\xef\x4c\x13\xa9\x75\x03\x39\x39\x07\xa2\xdb\xa0\x96\xa8\xce\x5c\x86\xc0\xee\x6f\x97\xc1\x44\x1b\x8d\x63\x31\xcb\xa5\x3b\x19\x60\x6b\x42\x1a\xf5\x2f\x65\xf9\xc6\x63\xe6\x3d\x39\x82\x71\x8f\x94\x8c\x6b\xae\x96\x1b\x8e\x4b\xf8\xcd\x9e\x31\xcd\x09\x92\x8e\x4e\x80\x61\x65\x97\xcc\xfa\xdc\xb8\xa6\x14\x15\x49\x33\xbc\x37\x58\x9c\x85\xc7\x76\xe3\x4e\x5a\x90\x66\x0f\x59\xa6\x5b\x5e\x93\xad\x43\x88\x42\xf9\x82\xd0\x2b\x04\x1e\x6d\xbd\xdf\x17\x10\x99\xf8\xdb\x70\x99\x57\x31\xa0\xdb\x8c\x46\x25\xc9\xbc\xa7\x10\x80\x59\x61\xfb\x17\x6d\xae\x81\x97\x68\xfc\xad\x7f\xf9\xbf\xce\x36\x40\x3c\xa7\xf7\x83\xe7\x61\x37\x26\xd7\xdc\x59\xf2\x4e\x24\x7c\xf1\x50\x68\xff\x3b\x19\xc7\x25\xfa\xd6\x5e\xa8\xe8\xa7\xf7\x22\xd5\x28\xc9\x5f\xce\xf1\xc0\xcc\x79\xd1\x8e\xf0\x7c\xee\x8b\x01\x1e\xea\xbd\x99\x21\x63\x4d\x76\xa6\x1a\x8a\x3c\x89\x31\xb8\x27\xe8\x18\x98\x81\xf8\x1f\x7a\x17\x5f\x21\xfb\x03\x78\xb8\x18\x8e\x58\xbd\xb2\x01\x7b\xef\x39\x0f\x18\x00\xd9\xd7\x4f\x26\x3a\x81\xdf\x8e\x67\x52\x2d\x09\x2e\x77\x5d\x01\xe0\x04\xe7\xf8\xd8\x28\x1a\xe2\xc2\xfd\xf8\xc3\xa4\x45\xf9\xef\xf7\xfd\xf1\x3f\x26\x1a\x77\x3d\xdf\x2d\xd9\xcc\x6b\xa5\x58\x5d\x99\x0c\x99\x5e\x6e\xb8\x9d\xff\xd9\xff\x0a\x9d\xbb\x76\xce\x5e\x10\xdd\x02\x72\xd5\x00\x14\x97\x88\x13\x66\xf5\xd6\x36\xa9\xcc\xea\xa2\x83\x22\x8d\x3a\xc6\x14\xdb\x21\x7a\xb8\x91\xd6\x68\x9d\xbe\xb9\x50\xe1\x20\x0c\x3d\xe5\x3b\xc5\xda\x07\xf1\xd3\x63\xda\xe9\xbe\x6e\xc3\x6e\xda\x6e\x68\x7d\x26\x29\x0f\x7a\xbc\xa2\x68\xa7\xfa\x03\xd9\x31\x88\x64\xed\xa9\xa1\x1e\x3b\x26\x14\x06\x05\x92\x0a\xc1\x3a\xde\xc1\xb5\x54\x8c\x9a\x7a\x32\x15\xa5\x87\x6b\x7e\x94\x1a\xfa\x1c\xb5\xd7\xf7\xf0\xc1\x16\x30\xcd\x42\x9f\x3b\x2b\x37\xdc\x76\xc6\xcb\xea\x4f\x3b\x72\x6a\xa8\xa5\xf8\xb9\xf7\x05\xb0\x5d\x7e\x94\x51\x95\x6f\x8a\xf1\x3c\xe0\xa8\x59\x55\xc7\x13\x5d\x64\xad\xe5\x49\x6e\xa5\x42\xe7\x0f\x8d\xa5\xb5\x73\xaa\xf1\x37\x08\x5d\xc9\x6c\x69\x27\x09\x96\x95\x67\x26\x68\xb3\xc7\xc6\xf9\x3c\x97\x7a\x4e\x8e\x9e\x77\x02\x95\xf2\x0d\x52\xdf\xf1\x87\xf8\xdb\xb2\x5e\xe7\xe7\x74\x02\x4e\xb9\xbe\x08\x12\x1e\xd7\x4b\x6d\x54\x62\xf4\xbb\x7d\xc2\x00\x38\x74\xca\xa3\x1b\xb7\x59\x5c\xd9\x3a\x99\xeb\xe1\xef\xf9\x28\xbb\x5f\xcb\x9e\x9c\x89\xdd\x31\xd4\x87\xfc\x0e\x20\xbb\xe1\x50"}, +{{0xe4,0x2b,0x30,0xd4,0x9c,0x43,0xc4,0xfa,0xd8,0x3d,0xd5,0x1f,0xdc,0x2a,0x4a,0xc5,0x90,0x13,0x27,0xad,0xd8,0x00,0xb6,0x69,0x72,0xc8,0xc7,0x0b,0xde,0x18,0x0a,0xdc,},{0xf7,0x34,0xaa,0xfa,0xa4,0xdb,0xaf,0x31,0x5c,0x25,0x8c,0xca,0x8b,0xbc,0x1d,0x4f,0x34,0xe8,0x36,0x01,0x10,0x98,0x74,0x22,0x2a,0xa0,0x55,0x89,0xf3,0xa6,0x63,0x5f,},{0xff,0x8e,0x07,0x6e,0x34,0x3c,0x8b,0x73,0xaa,0x45,0x3b,0xfe,0xe9,0xb2,0xba,0xb6,0xd5,0xc2,0xf7,0x4c,0x35,0xe1,0xba,0xd1,0xe5,0x2a,0xe7,0x77,0xd6,0x9f,0x79,0x76,0x40,0x83,0xf9,0x94,0x36,0x8a,0x1a,0xc8,0x51,0xa6,0x41,0xcd,0x24,0x70,0x08,0xa3,0x4f,0x3b,0x60,0x89,0x62,0xf4,0xdd,0x51,0x09,0xac,0x71,0xcc,0xe9,0x78,0xec,0x02,},"\x0d\x49\x70\x51\x86\x1e\x22\xd8\xa9\xc6\x0e\x5f\x7d\xe6\xc8\x95\xcb\xa3\x35\xb2\xe8\x2e\x60\x21\x18\xad\x83\x42\xb4\xd4\xed\xaa\x80\xf9\x5e\xfb\xb5\x9c\xfd\xa1\xfc\xc0\x29\x17\x25\x70\x0e\x8a\x81\xbb\x12\xa0\xb8\x62\x3b\x1f\xe2\x89\x1b\x8d\x98\xf7\xa8\x4c\x59\xfd\x92\xf8\xa7\xad\xfc\x06\x50\x42\xf7\xf4\xfd\x7e\x1a\x79\xf5\x5a\x1d\x4d\x5e\x54\xe0\x4e\x67\x2f\x1c\x9e\x4c\x4c\xd8\xd0\x00\x3f\x3c\xd5\x4b\x76\xe2\x16\x3d\xd7\x37\xac\xb2\xde\x5c\x26\x3a\xc1\x02\xa4\x8f\x69\x6b\x60\xca\xf9\xbe\x39\xc6\x65\xcc\xe1\xe0\xf3\xd4\x98\x55\x3f\x57\x90\x61\x88\x9a\x5e\xc5\x60\x3e\x4d\x14\x1c\xfd\xed\xe8\xe7\x31\x75\x72\xcf\xe7\x6a\x0f\x48\xe4\xae\x06\x06\x2c\x91\x57\xb5\xea\xac\x34\x68\x93\x81\x92\xdb\x4b\x16\x10\x5c\x73\x64\xa9\x44\x32\xb2\x15\xa7\x17\x97\xfe\xe1\x4c\x3c\x9c\xe2\xf7\x46\xed\x79\x03\x02\xfc\x41\xdc\x49\x2d\x37\xd9\xef\x02\x4a\xb5\x1d\xa3\xbd\xaf\x0f\x81\xd9\xa9\x30\xaa\x0e\x02\x5c\x04\xfd\x71\x02\x6b\x6a\xfe\xb7\xed\x01\xa9\x1a\x1e\xfd\x6c\x39\xf5\xe4\x47\xc6\x6d\xd3\x8a\x76\x56\xc6\x13\xd0\x21\x26\xf3\x58\x5d\xfa\xa0\x2d\xf9\x30\x25\x3f\x83\xbd\x42\x19\x64\x63\xeb\xc5\x0f\x8c\xfc\x94\x9e\xd3\x50\x39\x2e\x61\xce\xec\x13\x09\xda\x15\xa4\x32\xf8\x0d\xfe\x94\x8e\x26\x1c\xe6\xd8\x42\x1c\x54\x59\xcd\x21\xf3\xff\xa2\xed\xb5\x00\x98\x2b\x2a\xbf\xa5\x2e\x82\x43\x7c\xa2\x30\xf6\x09\x11\x63\x20\xd9\x89\x3e\xb8\x2a\x14\xdf\x72\xb7\x73\x66\x67\x51\x6f\xc0\x12\xb2\x8a\x03\xc9\xdd\x88\xea\x43\x08\xd8\xce\xea\x44\xcc\x60\x44\x54\xcd\xfa\x2c\x79\x76\x15\xbc\x0a\x6b\x3e\x00\x89\xaf\x0a\x81\xbe\x54\xd1\xb1\x10\xa1\x3a\xb9\x11\xb4\x52\xc3\x42\x80\x0c\xee\x2a\xd2\x39\xa2\xb1\x88\xa7\xfa\x87\x5e\x94\x1d\xaa\xeb\xcf\xc8\x8b\x70\xae\x4b\x1c\x57\x5c\xdb\x6e\x6d\x89\x44\x81\x36\xf6\x0e\xe8\x1c\x70\x3c\x47\x82\x2d\x2c\x0e\x50\xc7\xf1\xe8\xb7\xfc\x7e\xbd\x80\x78\x9f\xcd\x7e\x06\xc7\xe5\x0b\x5f\xc8\xb7\x76\xe8\xb9\xa4\xcd\x59\x05\xa2\x90\x69\xbc\x3a\x55\x8d\x7c\xab\xce\x2a\xf4\xf3\x10\x76\x7d\x5b\x11\x7e\x30\x76\xb3\xa0\xd5\x27\x17\x55\x43\xb2\xcc\xea\x28\xd5\xf7\x16\xfa\xc3\x2e\xfe\xd3\xd2\xe0\x27\x6b\xe4\x4a\x89\x56\xfc\x82\x40\xf2\xdb\x33\x97\x61\x4f\x2f\x2d\xa0\x21\x66\x69\x4e\xc6\xa7\xfe\xec\x6e\xce\x39\xd7\x2b\x64\xbb\xc6\xb4\x76\xa4\xf8\x4f\x8d\x87\x93\x80\xa3\x84\x88\xe4\xd6\xe5\x8c\xac\x03\x90\xae\x25\xa5\xfc\xb7\x3d\x47\x41\x4b\x4c\x26\xbb\xb9\xb4\xcc\x66\xe4\x25\x94\xbd\x56\xd8\x41\xa3\x60\x92\x34\x91\xd1\x17\xbe\x2c\x6e\xb2\x32\x0f\x3c\x61\x75\xe4\x4e\x27\xb6\x65\x3c\x5d\xac\x6f\xae\x73\x60\x0b\x67\x96\x0d\xca\x50\xaa\x85\x5a\x89\xe0\xff\x51\x1e\xa0\x4f\x14\x3e\x89\xf1\xda\x02\x84\x76\xbe\x4b\xf6\xd9\x4c\x80\xff\x72\x63\x39\xe8\xbc\xfb\x7d\xd9\xf8\xcf\x20\x22\x59\xc0\xac\xb6\x27\x6c\x28\x1e\x38\x47\xc2\xcc\x8d\x2f\xba\x84\x43\x8d\x2d\x3c\x60\x31\xf2\xa7\xb9\x5c\x1d\x8f\x9f\x3c\xc8\x6a\x5e\xff\x65\xcc\x01\x1d\xe9\x5a\xd8\x96\x85\x8e\x1f\x7f\x6d\x6b\x94\xbf\x49\xdf\xff\x5d\xe2\xd7\xfd\x71\xef\x10\x81\x34\x28\x5f\x61\xae\x47\x54\x83\x44\x2d\xc9\x0b\xf0\x13\xfa\xed\xf3\x77\x1c\x47\xc5\xb9\x6d\xc3\xcf\x8e\x48\x51\x00\x60\xad\x8d\x45\xfd\x54\x61\x62\x27\x80\xd8\x69\xd4\x61\x7b\x57\xfe\x3c\xb5\xcc\x02\x03\x15\x3a\xae"}, +{{0x5c,0xb5,0x14,0x21,0x74,0x82,0xbf,0x42,0xf6,0x11,0xfc,0xec,0x36,0xa5,0x28,0x68,0x07,0xc2,0xbd,0xbb,0x56,0x96,0x76,0x91,0x35,0x3f,0x54,0x31,0x0e,0x1a,0xd5,0x53,},{0x28,0x06,0x99,0x00,0x3d,0x5d,0x3e,0x1c,0x05,0xad,0x10,0xfb,0x10,0x95,0x9b,0xbc,0x59,0x5c,0xfe,0x21,0x30,0x69,0x96,0x5c,0xd8,0xcf,0x39,0xdd,0x42,0x6a,0x05,0x68,},{0xd5,0x3e,0xe2,0xe0,0xf0,0xfd,0x65,0x7b,0x20,0x52,0x47,0x8f,0xd1,0x5d,0xf1,0xd3,0x8f,0xe0,0xe9,0x3a,0x54,0x83,0xeb,0x4a,0x6e,0x7d,0xe9,0x3d,0x02,0xa4,0xcd,0x54,0x4d,0x8f,0xdd,0xdc,0xea,0x82,0x2b,0x71,0x57,0x6e,0xd0,0x28,0x53,0xd9,0xa6,0xb1,0x4e,0x1a,0x54,0x8a,0xef,0xe9,0x0d,0x92,0xf8,0x83,0x79,0x2b,0x7f,0x1d,0x86,0x09,},"\x2f\x57\x25\x8c\xca\x79\x32\xe5\x8b\xed\x54\x6c\xb0\x04\x11\x15\xbb\xad\x23\xd1\x83\x46\xef\x7a\xb5\xe3\x11\x00\x82\xb3\xa9\x71\x2f\x6c\xbe\x12\x70\xe6\xdc\x0c\xea\x33\x64\xa0\x6a\x5f\x2f\x28\x3e\xc3\x9b\x63\x05\x8d\x34\xd5\x99\x79\x07\x2f\xcb\xbd\x7a\x5d\x0f\x44\x2b\xbd\xf0\x82\xd5\xbf\xe2\x99\x8a\xeb\x51\xbd\x26\x12\x78\x03\xe5\xc7\x96\xc3\x88\x43\x20\x0a\xe2\xf6\xe6\x05\xaf\x31\x2f\x54\xfd\xff\x17\xed\x1d\xfa\xa8\x9d\x28\xfa\x67\xdc\xe4\x62\xde\x4f\xe2\x52\x68\x21\x2b\x28\x2e\x22\x2a\x44\x3e\x2f\x31\xe2\x69\x05\x41\x71\xaa\x73\xc7\x19\xa8\x96\xcd\xb7\xa5\x39\xdf\xd1\xd4\x29\x91\x97\x81\x97\xd7\xc4\xf2\xd3\x0a\x64\x1b\xe3\x4b\xf1\x38\x0a\x4f\x4d\xc6\xd9\xb1\x01\x63\x66\x36\xa4\x96\xbe\xb3\x57\xe3\x47\xc1\x66\x65\x16\xdf\x8e\xb5\x60\xa0\xe0\xd1\xe1\x52\x9c\xe3\x6a\x60\xe0\x0e\xd2\x78\xda\x38\x02\xbe\x19\x23\x42\x98\x9b\xb6\x11\xb4\xe3\xcb\xd9\xc3\x7e\x8c\xce\x07\xef\xc1\x2d\x29\xbe\xfd\x7e\x2f\x3a\xdb\x13\xd2\x8f\x70\x8d\x97\xb6\x3e\x10\x74\x82\xc8\x62\x95\x6d\x7c\xe8\xdf\xc2\xaf\x5c\xac\x8d\x51\x65\x92\x67\xb0\xbb\xed\xdd\x5e\xfa\x41\x4d\xde\xab\xd1\x7b\x23\xca\x6e\x84\x3f\xf4\x9e\xff\xc8\x2a\x5d\x07\xe3\x6a\x83\xb6\x7c\x2a\xd7\xe4\x8e\xb9\x99\x0b\x42\x1c\x55\x58\x00\x9b\xd6\x93\x4e\x86\xd5\x4a\x8a\x6a\xc4\x07\x87\x96\xe3\x05\xc7\xcc\x81\x0d\x3f\x66\xea\x6b\x95\x04\xfe\x0a\xe6\x75\x7c\x50\x4c\x55\x52\x53\x0a\x6f\x8b\xbb\x52\x40\x9b\xe0\x79\xd8\xe4\xa2\x8a\x6f\xd7\xdc\x89\x35\xf8\xeb\x94\x98\xad\xc0\xf2\x3d\x08\x07\xec\x86\x29\x5f\x48\x98\xf5\xd0\x5e\x15\x0b\xdc\x43\xaa\x8b\x7b\xdc\x89\x3a\x0a\x68\x4c\x30\x63\x89\x8b\x6c\x95\xe7\xd5\x6a\x4c\x10\x26\x90\x43\x8e\x9d\xf9\x97\x58\xa9\x0f\x47\xc6\x08\xda\xcc\x4c\xa2\x40\x26\x6f\xab\xa3\x5f\xa1\xeb\x2e\xaa\xbe\x28\x8d\x2c\x2a\xd5\x0b\x6c\xbf\x10\x7c\x00\x25\x75\xe9\x1f\xf4\x72\xa4\x41\x79\x40\x66\x7b\xe8\x18\x01\x73\x85\x4c\x93\xdf\x84\x46\x4b\xcd\x31\x2b\x7a\x7a\xe4\xdc\x2b\x90\x59\xfb\xe6\xf8\x3f\x53\x80\x64\x25\xbd\xff\x03\x1c\x6a\xed\x6e\xfa\xfd\x9d\xe8\xdc\xd0\xdf\xab\xea\x8e\x6f\xa6\x81\xe9\x91\x93\xfb\x3c\x64\x7e\x44\x21\x12\xc9\xa2\x3f\x59\x6e\x65\x41\x1d\x8d\x6b\xfc\x39\x23\x00\x4e\xce\x91\xea\x6d\xeb\x88\x11\x11\xb1\xdc\x29\x94\x3f\x57\x89\x81\xee\x8c\x3b\xce\x85\x25\xf7\x85\x65\xf3\x4b\x85\xff\x20\x01\x5f\xea\xe8\x46\xf9\x5b\x18\x70\x0b\xc5\xcd\xf1\x4b\x2d\xb6\xca\xc6\x98\x14\xd6\x3d\x74\xbf\x20\x32\x93\x03\xe5\xca\x9f\x04\x73\x1f\x68\x81\xce\xc6\xd3\xab\xf8\x7f\x5e\xac\x08\x73\x4f\xaa\x34\xcf\xf4\xd3\xcd\x9a\x4a\x11\xd7\xb1\x2f\x73\x25\x3b\x4d\xd0\xa4\x31\x78\xf0\xd3\xc1\x9c\x0c\x40\xd9\xed\x91\x8d\xd1\x76\x46\xf6\x16\xaf\x79\xfd\xf6\x19\x42\x62\xf0\xfa\x4f\x71\xb3\x18\x7d\xed\xca\x48\xd9\xcb\xcc\x19\x93\x1a\x15\x19\x67\x74\x56\x25\x6e\xd3\x83\x54\x56\x7c\x3a\x67\x57\x1c\xdf\x82\x17\x0a\x2c\x85\xbd\x2c\x5e\x68\xe0\x5a\x0f\x3b\x93\x90\x3f\x19\x1b\x89\x4f\x84\x94\x6f\x89\x00\x05\x68\x05\x4c\x1c\xea\x9f\xd0\xb8\xbb\x55\x01\x95\x06\xc5\x43\x41\xc2\x49\x31\x98\x45\x48\xba\x45\x8a\x4d\x81\x30\x89\x89\x6e\x86\xa2\xdc\x33\xd9\x46\x04\x00\x3f\x35\x4a\x7c\xc9\x41\xc7\x54\xaa\xea\x24\x25\x3c\xbe\x4c\xf2\x14\x7f\xfe\xc5\xe7\xb9\x50\xcb\xf2\x8e\x28\x44\x81"}, +{{0x87,0xd3,0xba,0x95,0xc4,0x0d,0xf8,0x00,0x69,0xb1,0x79,0x7d,0xdf,0x68,0xe8,0x66,0xe6,0x6d,0x46,0xc5,0x1f,0xde,0x60,0xe7,0x68,0xa9,0xdb,0xc5,0xc9,0x2f,0x57,0xa9,},{0x2b,0x81,0x2b,0x2c,0x9b,0x60,0xff,0x31,0x97,0x5c,0x42,0x9a,0x86,0x73,0x6d,0xcc,0x17,0xa5,0x8d,0x3d,0xc1,0xda,0xa3,0x46,0x23,0xa4,0xbb,0xcb,0xe2,0xcc,0x05,0x81,},{0xfa,0x0d,0x12,0xcd,0x53,0x23,0x6c,0x41,0x08,0x6b,0xea,0x8c,0x0c,0xc6,0x0b,0x77,0x64,0xa3,0xed,0x72,0xbd,0xeb,0x9d,0x1a,0xe5,0xee,0xac,0xb4,0x88,0x11,0xfe,0x52,0x97,0x62,0xa2,0xc6,0xf2,0xbb,0x06,0xd9,0xb3,0x18,0x21,0x8d,0x96,0x8f,0x64,0x44,0x35,0x49,0x7a,0x1b,0xd0,0xd0,0xd8,0xc1,0x61,0x2a,0xb8,0x99,0x6d,0x98,0xd7,0x07,},"\xe1\x12\x56\xf8\x2a\xd7\x6f\x3f\x4a\x49\xd7\xba\xd3\xce\xd8\x71\x8d\x36\xd2\xf2\xbb\x3d\x31\xbb\x61\xed\xd1\xec\xbc\xee\x66\x21\xfd\x2e\xee\xd3\xe3\xde\xb5\x97\xb1\x49\xff\x71\xb8\x51\xf6\x1c\x8c\x68\x19\xe1\x31\xf9\xa2\xaf\x76\x73\xc3\xf2\x07\x02\xac\xfd\xc8\xb8\xf9\x06\x4b\x41\x5c\x9a\x3e\x35\x56\x8e\x37\x1d\x74\x0a\x38\x12\x7c\x1f\x27\xb3\x91\xb4\x5d\x07\x04\x5a\xea\xf0\x0a\x54\xe5\xb7\xfa\x54\x8a\xfb\x5f\x96\xfe\xb5\xf5\xb4\x4f\x60\xcd\x17\x07\xe8\xfa\x95\x67\xf7\x80\x6e\x15\xf6\xa0\x1a\xa0\x20\x77\x73\x3f\xe7\x38\xb0\x8f\x21\xef\xbc\xf9\x8c\x19\xd5\xb9\x70\xe6\x16\x3e\x5f\xe8\xf4\x80\x0e\xf9\xed\x22\xa0\xf9\xb5\x12\x6f\xf1\xeb\x1c\x7d\x65\x01\x9c\x8b\x44\x03\x91\x92\x70\x29\xb8\x13\xda\xb7\xc7\xe8\x63\xd4\x82\x29\xf8\xdf\x85\x39\x43\x45\xfc\xc8\x8a\x30\x0f\x60\xa8\xd5\x16\xd8\x77\xa5\xa3\xa7\xe3\xc4\x9a\x9e\xb0\x6c\xd9\xf2\x66\x5c\xe2\xa8\x90\x22\x96\x2b\x1d\x49\x59\x2b\x09\xc7\x54\x3d\xa8\x35\xce\x63\xbc\x9a\xbb\x82\x21\x45\x76\x2b\x71\xcb\xe1\x50\x29\x2c\xe5\xc8\x70\x4e\x5a\xd3\x4f\xb4\x59\x2f\x97\x20\x44\xe4\x3e\x69\xf0\xe1\x67\x2d\x6c\x83\xcf\x25\xaa\xc6\x8e\xfe\x3d\x27\xaf\x2a\xd3\x42\x74\xb9\xd2\xb7\x77\x42\xd9\xc6\xdf\xbd\x57\xf9\x2f\xf6\x4d\x3e\x4c\x67\xc5\x41\xd8\x50\x2a\x7d\x03\x18\x95\xaf\x85\x31\x9a\x4e\xae\x2d\x25\x43\x35\x83\x5e\xff\x11\xe7\xa3\x67\x1a\x6a\x0d\x21\xb7\x2c\xe1\xfc\x2a\xcb\xa1\xa9\x20\x18\x38\x34\xbc\x0a\x4b\x73\xf6\x39\xff\xcb\x0f\x6b\x81\xcd\x92\x0f\x2e\x94\x20\xd6\x12\x16\x6d\x56\x82\xa0\x60\x60\xea\x0b\x6f\xa6\x95\xfe\xcc\x77\x04\xbb\xe4\xb0\x52\xaa\x3e\xc8\xf7\x20\xf7\xd4\xf3\x2e\x8a\xff\x86\xb8\x0b\x8c\x1c\xc1\x27\x64\xa0\x48\x74\x03\x7c\x31\x03\xe9\xdf\xec\xb8\xf7\xab\xcb\x0e\x07\x3b\x23\xe6\x7c\xa0\xa9\xb1\xfc\x72\x99\x3a\xbf\x31\xdb\xc2\x4a\x8f\xee\x09\x5b\x32\x51\xc2\x26\x26\xaf\x5d\xd1\xb6\xd3\x4b\xe5\xea\x06\xa0\x2a\xe1\x76\xc7\xb8\xcb\x9d\x06\x35\x01\xbe\x6f\x61\x20\x82\x88\x9f\xdb\xdc\xbf\xad\xc3\x3a\x0d\x31\x1b\x08\x0b\x8d\x64\xe4\x9f\x16\xb1\x6d\xd8\xed\xd3\xb2\xed\x11\x93\xa7\x4e\x5b\xe5\x07\x60\x9b\x04\x27\x27\xcc\xf0\x8a\xfb\x05\xcc\x6c\x50\x52\x4e\xf0\xe2\x66\x46\x21\xdc\x8b\x05\xb1\x5f\xfa\x81\xab\x6f\x7e\x3c\x8a\x5b\xb3\xea\xb1\xf6\x8e\x36\x56\xc1\x19\xd9\x69\xe4\x14\x4c\xf3\x28\x5a\xf2\x3c\x04\xdb\xec\xc0\x38\xae\xfd\x91\x83\xc4\xe7\x24\x47\xb2\xaa\xa8\x31\x5f\x46\x96\xce\x6d\x1e\xf4\x29\xba\x0e\x5c\x3d\x5f\xfa\x7f\x05\x0b\xe3\x9c\x7f\x61\x2f\x4e\x10\xf8\xef\x07\x0d\xf7\x2f\x8a\xdd\xbe\xaf\x33\x39\xc1\xad\x8b\x5f\xc3\x9a\x2e\xcf\x29\xa8\x7f\x82\xe2\x9a\x01\x17\xba\xac\x66\x25\xad\x5c\x80\xcf\xe7\x59\xfa\x1d\xbc\xfa\xa1\x2b\x37\x44\x77\xd8\x0b\xfc\xf0\x67\x96\xc3\x0f\x2c\x39\xcf\x03\x03\xd0\x0d\xc5\x6a\x32\xd1\xd0\x39\x59\x2d\xdb\x06\xc2\x2a\xa0\x68\x84\x1c\x0b\x46\xfd\x48\xdf\x8f\xbb\x74\x92\xcc\xbc\x59\x0c\x56\x3c\x8f\xec\xce\x42\x63\xc8\xc7\x53\x92\x18\xbb\x97\xb3\x57\x11\x53\x7e\x98\x81\x95\xdb\xf5\xbc\xd5\xcc\xaf\x06\xfa\xf5\x08\x47\x09\x77\xa5\x35\x8e\x6f\x02\x60\x83\x49\xfb\xb9\x9a\x23\xfb\xe3\x6b\x8c\x97\x15\x5a\xdc\x24\x6a\xd7\xd9\x3a\x8c\x20\x3f\x75\x44\x6c\x83\xc4\x34\x2c\x35\xba\x10\x4e\xcc\x67\xe6\x69\xdb\x4a\x95\x46\x6e\xe6\x8f\x45\x8a"}, +{{0x7c,0x27,0xae,0x47,0x07,0x2b,0x0c,0x9b,0x9c,0x2c,0x35,0x1f,0x13,0x27,0x89,0x98,0x95,0xef,0xa5,0x36,0xc9,0xc0,0x67,0xd0,0xe0,0xce,0x8e,0x82,0xe6,0x29,0x27,0x93,},{0xf9,0xfe,0xbd,0x12,0x1e,0x17,0xdb,0x72,0x29,0xb5,0x67,0x09,0x02,0x18,0x49,0xc3,0x5d,0x69,0xfa,0x08,0xb5,0x06,0x20,0xe6,0x67,0xf8,0x42,0xec,0x7a,0xc7,0x82,0xdc,},{0x32,0x71,0x96,0xdd,0xd4,0x3b,0xb6,0x02,0xd0,0x4d,0x19,0x64,0xcc,0xc0,0x59,0xed,0x62,0x7c,0xef,0x0a,0x88,0xd8,0xad,0x91,0xbe,0x49,0x31,0xf1,0x7c,0x25,0x0d,0x55,0x29,0xf5,0x52,0x79,0x4a,0x3e,0x26,0x9d,0x17,0xa6,0x3b,0xd3,0x29,0x33,0xeb,0x5e,0x51,0x9c,0x1d,0x50,0x65,0x74,0x77,0x0a,0xe4,0xa7,0x29,0x64,0xe0,0x6f,0x7d,0x00,},"\x15\x47\x87\x6a\x98\x8d\x1b\xe7\x14\xa4\x2f\xb9\x1c\xb0\x37\x63\xf1\x91\x3a\x89\x2e\xcb\xd4\xde\x2c\xcf\x83\x44\xd2\x07\x58\xb7\xb6\xd0\x02\x59\x10\x1f\xe9\x72\x25\xb2\x97\xf8\x7b\xfe\x22\x20\x04\x32\x5d\xb7\xf6\x32\xce\xaf\xfb\xd1\x34\xc9\x6c\xbd\x57\xe9\x85\xbe\xc8\x43\x4f\x81\xa4\xee\x6a\xf8\x5c\x3f\xad\xe5\x0e\x4c\x4e\xf2\x0c\xb0\x39\x35\x45\xe4\xd4\xa8\x6e\x1f\xa3\x9a\xaf\x33\x3f\xe4\xde\xd0\x54\xbf\xc0\x50\xa8\x98\x3a\x03\xdd\x1e\xcf\x2b\x5e\x95\x17\xba\xf9\xe1\x15\x21\x29\xa8\xa7\x59\x35\x71\x1e\xdb\x20\xaf\x5c\x8c\xf9\xc6\x94\xa3\x3c\xee\x45\x1c\xd9\x50\xb2\xff\xf0\x8e\x31\x58\xc5\xcf\xb7\xb1\x5c\xb3\xe9\x0d\x46\xf4\x94\xb6\xa1\x08\xd8\x88\x8d\x5e\xc2\x9a\x33\xc0\x66\x02\x3b\x49\x77\x09\xb2\xd9\x40\x1f\xea\xf2\xe7\x4f\xf2\x6c\x16\xd3\x6c\x39\xe6\x51\x7f\xf9\x54\xbd\x98\xbc\xe7\x70\x06\x71\x98\x8f\x66\xe8\x51\x07\x64\x4b\xa2\xea\x00\x7a\x13\x01\x8c\x1c\x14\x4e\x3c\x5b\xb8\x0d\xb9\x51\x1f\xcc\xa4\x10\x1b\xf4\x9f\x8c\x80\xff\x3c\xa7\xd2\x98\x25\x7c\xbf\xea\x62\x9f\x83\xd5\xe0\x66\x39\xd3\x1f\x63\x9d\xb4\xb8\x72\x6c\xbe\x22\x4d\x75\x88\x29\xba\xb1\x09\x05\x17\x1c\x9c\x0e\xc3\x70\xd5\x80\x31\xef\xe4\xcc\x5a\xe7\x2a\x49\x5a\xcf\xf6\xcb\x2e\xd9\xee\xc6\x58\xba\x11\x70\x88\xdd\x3c\x6e\xd1\xdf\x8f\x9c\xb1\x0b\xd4\xfe\x0e\x5e\x8a\xd9\xf5\x03\x4e\x34\x65\x2d\x98\x66\x8d\xb1\x5c\x85\x33\x39\x3a\x6e\x9e\xc0\x87\x0c\x35\x66\x6c\xe5\x4e\xfe\x2b\xcb\x45\xc3\x4a\x72\x30\xe6\xa7\x00\x67\x63\x49\xc7\xb3\xab\xf3\x1d\xe7\xb7\xb0\x52\x1f\x89\xb3\x0a\xc4\x03\x4c\x2a\x4b\xa8\x21\x8e\xef\xdf\x8d\x2a\x5c\x1f\x8e\xd9\xb7\x01\x57\x9e\x47\xaf\x8a\x52\x9a\x95\xa1\xff\x64\xd8\xfd\xb8\x85\xc3\x68\x39\xb4\xc5\xf6\xd7\x2a\x99\x25\x7e\x86\x78\xdc\xcf\x31\x27\x54\xb9\xd4\x61\x9b\xee\xce\xb8\x25\x52\x6d\xe6\x22\xbd\x96\x76\xfd\x5f\x35\x76\x93\xab\xab\x07\x8b\x9e\x03\xae\x21\xe8\x7c\xa1\x61\xe7\x78\xaf\x77\x09\x6e\xaa\xc2\xd2\xd3\x2b\xfe\xc8\xec\x94\xaf\x79\x65\xf6\x1d\x68\xef\x66\xa4\x52\x3c\x1c\xc7\x0c\x95\x19\xb0\x75\x0b\x3c\x9e\xed\x5a\xeb\xa9\xf0\xa9\xb7\xef\x52\xcd\x4a\x2d\xe2\x9b\x39\x5b\x70\x5f\xa5\x3f\x02\x8f\xa7\x66\x15\x9f\x20\xe7\x5f\x4d\x38\x4e\xc4\xfd\x66\xdf\x06\xe7\x44\xc9\x9a\xc8\x8c\xb8\x49\xc2\x85\x75\x7c\xc5\x57\xe2\xee\xdd\x86\x95\x9d\xa2\xc1\xb8\x1f\x5b\x27\x15\xa6\x51\x98\x48\x90\x1a\xe4\xf8\x9d\x09\x13\xc8\xde\x57\xc5\x3d\xad\xf2\xe5\xe1\xaa\x2a\x9c\x5f\x46\x4f\xc7\x61\x0e\x8e\xf5\xf5\xcd\xd8\x20\x3a\x67\xa9\x3c\x33\xa0\x6d\xab\x35\x8d\xc5\xae\x23\xed\xfe\xe6\x33\x42\x62\xf4\x7b\x19\xb1\x13\xd6\xca\xfe\xda\xc1\xb4\x39\x02\x53\x9d\x74\xfb\xa2\x9a\xaa\x7b\xce\x68\x88\x4b\x72\x61\x6a\x05\x42\xc9\xfc\x69\x54\x7c\xd1\x9a\xe1\xdf\x01\x72\x3a\xbd\xda\x65\xe9\xbf\xac\x5d\xa0\xd0\x42\x40\xc6\xa2\x17\x5c\x00\x62\xe4\xe1\xed\x8a\x5b\x39\x7a\xfc\xd4\xde\x38\xe8\x62\x09\x27\x2c\x7a\x42\x4b\x5a\xe8\xd5\xa4\x0b\x48\x4c\xe1\xb4\x70\x4a\xf2\x83\x16\x09\xad\x0f\x36\xe9\x0e\x07\xb2\xaf\xed\x01\xdc\x05\x57\x4a\xd3\x97\x17\x23\xc5\xb5\xc1\xdd\xd4\xfc\x8b\xd2\x63\xbc\xdf\x56\x8a\xf7\x5e\x73\xd8\xab\xd1\x00\x8c\x9e\xc7\x12\xf8\x0f\xfc\x65\xac\x34\xe2\xa7\x93\x04\xea\xde\x1d\x2a\x1d\xff\xec\x0e\x4c\x98\xc3\x58\x24\x68\xf3\x20\xbf\x8f\x66"}, +{{0x08,0xed,0xdc,0xb5,0x62,0x5a,0xe1,0x9f,0xfe,0x7b,0x49,0xa7,0xdc,0x82,0x9c,0x89,0x3c,0x75,0x38,0xb0,0x88,0x5e,0x18,0xf9,0x8d,0xb7,0x8c,0x8b,0xeb,0x56,0x9c,0x26,},{0x83,0x47,0x8b,0x1c,0x58,0x57,0x6a,0x0d,0x18,0x34,0xb2,0x8d,0x46,0xfb,0x80,0x51,0x6d,0x6f,0xb6,0xf9,0xf5,0x91,0x69,0x4b,0x44,0x35,0x2e,0xec,0xd1,0xe7,0xe8,0x9a,},{0xec,0xe7,0x53,0x22,0x99,0x51,0x54,0xb2,0x92,0x43,0x7e,0x47,0xd3,0x8a,0x6a,0x70,0xaf,0x37,0xe2,0x02,0x07,0x16,0xfd,0xe4,0x6b,0xfd,0x39,0x3b,0x3d,0x36,0x9b,0xdd,0xb5,0x32,0x53,0xb5,0x56,0x62,0x1c,0xfb,0x34,0xc8,0xa9,0x02,0x54,0xe1,0x32,0xfd,0x28,0xec,0xd0,0x98,0x43,0x34,0x13,0xa2,0x1b,0xd3,0xa9,0x79,0x8c,0xa1,0xf3,0x09,},"\x01\x5b\x1d\x3e\xeb\x00\x92\x9e\xa8\x0b\xd8\x68\x7d\x18\x28\x6f\x0a\xdf\xe6\x45\xcc\xf2\x5a\x22\xb5\x06\x19\x21\xe2\xa0\x30\xfc\x76\xd0\x33\xfb\x53\xd0\x93\x7c\x69\xb3\x1c\x5b\xe4\x99\x13\xca\x1f\x2c\x3d\xca\x12\x1b\x2b\x87\xc5\x9b\x3c\x84\xc7\xae\x52\xaf\x19\xc6\xb9\xfa\x1b\xd6\x75\xfb\x6d\xd8\xb3\x29\xd5\x66\x87\x86\xdc\x78\x83\xe2\xd2\xe8\x58\x6f\xf4\x12\x8b\x90\xde\xe8\x4b\xe0\xab\x54\xd6\x81\x3f\x7a\x8c\x61\x34\x75\x71\x73\x98\x17\x75\xde\x84\xc4\xdd\x39\xe3\x36\xf8\xa4\xef\x8d\xca\xde\xc9\x43\xe9\x0d\x42\x1b\x22\x9c\x11\x78\x5f\xcd\x3f\xe9\x63\x03\x74\x58\xe7\x6c\x82\x0b\x3b\xc2\xc9\x47\x60\x01\x26\x2b\x26\x1d\x28\xb6\x5b\x48\x9d\x76\xb4\xbe\x23\x65\xe4\xa8\x0f\xa8\x71\xb0\xa5\x3b\x6a\x5f\xb2\x43\x68\x82\x35\xac\xc5\xf4\x77\x4d\xb1\x5d\x47\xb4\x2d\xd6\xc8\xd9\xe1\x2d\xcb\x0b\x5d\x98\x0d\xab\x0f\x3a\xd8\xa4\x96\xf7\x6e\x50\x06\xc2\xca\x82\x67\x5f\xf1\x94\xca\xf8\x07\x0d\x04\xbd\x38\x4f\x97\xe5\x83\xe7\x3c\xbc\x4f\x7f\x25\x73\x10\xa6\x1b\x1c\x80\x62\x32\x2d\xce\x81\x15\xf6\xdd\x93\xee\xe8\xa9\x3f\xfa\x5c\xab\x66\x34\x11\x6e\x1a\xb7\x05\xfa\x86\xc4\xa8\xea\xa5\x56\xc6\xc8\x9d\xbc\xad\x01\x04\x36\xbf\xfe\x45\x18\x22\x49\x1f\x1e\xa8\x6c\x20\x20\x7e\x4d\x12\xdf\xa3\x62\x61\x6c\x58\x9f\x97\x10\x7e\xa5\xd8\xbd\x8a\x72\x15\xc6\x00\xff\xc7\x0b\x80\xe2\xab\xb1\x5a\xcb\xe4\xbe\xcc\xa2\x0d\x72\x15\x5a\xbc\x3d\xbe\x8e\x37\xcf\xd7\x3f\x74\x20\xf2\x1c\x9b\xcd\x0c\x32\x73\x51\x3b\x50\x49\x67\x08\x74\xd5\x51\x9b\x3b\xc1\xdb\x52\x3c\x1d\x7e\x90\xc1\x65\x96\x7c\x4c\xb2\x84\x5a\x2e\x8b\x47\xb5\x88\x92\x54\xf5\x8a\x9b\xbb\x82\x6f\x94\x52\x1c\xdb\xd0\x41\x6f\x5f\x18\xff\x78\xa3\xfd\x0d\x7a\xb8\x97\x90\x62\x64\x48\x3c\xde\x64\x2d\x8e\x70\x3f\xd8\x2e\x5a\xe7\x0a\x9f\x97\x8f\x64\xee\x80\x52\x05\x54\x85\x05\x28\x58\x1c\xa9\xa0\xb3\x8c\x19\x6f\xd1\x66\xda\xe5\x87\x9b\x3f\x72\xf5\x9c\xde\x91\xcc\xa2\xc8\xbf\xaa\x47\x8b\x98\xd6\x24\xcd\x34\x72\x44\x02\xde\x57\x8e\x57\x54\x82\x5c\xe2\x27\xd2\x87\x1b\x45\xa5\x11\x71\x49\x51\x5b\xff\x81\xa9\x23\x24\x6f\x3b\x72\xd0\x7b\xd4\x58\x12\x5c\x70\xa1\x4d\x87\xc3\xfd\x13\x39\x2a\x3b\xda\x65\x53\x01\x6e\x8b\x2d\x07\xbd\xe9\x03\xcf\x68\x7b\x44\x5c\xfd\x6f\x76\x14\x92\xeb\xa4\x65\x22\xad\xa8\x4a\x96\x15\xd8\xda\x34\x98\xb2\x58\x06\x72\x69\xb7\x88\xe5\x59\xb6\x59\xd4\xb4\x8a\x87\xd8\x80\xd6\x37\x8b\xe6\xa8\x87\x46\xf3\x5b\x32\x2b\x04\x78\x45\xaa\xdc\x52\x3b\xea\xff\x30\x70\xf7\x21\xc3\xc0\x71\xea\xa3\x19\xb7\xa4\x7c\x1b\x20\xd3\x00\xdc\x03\x21\x90\x9b\x66\x9e\x57\xd3\x9a\x1c\xe2\xfd\xbe\xaa\xfa\xc2\x13\x50\xec\x2d\x6e\x6d\x5b\x88\x01\x86\xc0\x28\xa8\x61\x47\x4d\x50\x76\xa4\xad\xc5\x03\x2f\xec\x91\x40\x78\x7c\x36\x80\x6e\xf7\x9c\x72\xe3\xa1\x9d\x8c\x8b\x70\xbd\xaf\x20\x72\x95\x54\x2d\x96\x82\x5a\x5d\xe7\xdf\xe1\x08\xef\x57\x45\x99\xb8\xf1\x84\xc6\x3a\x5a\x13\x1d\xb1\x9b\x3b\xe5\x3f\x69\x9c\x10\xfc\x4c\xa7\xc6\x3f\x35\x00\x21\x1b\x35\x6a\x0a\xc6\x64\xdd\xfc\x1a\x92\x52\x59\x00\x26\x39\x5b\x47\x9b\xe9\xa5\xe4\x75\x84\x23\x56\x0b\x65\xbb\xce\x5b\xba\xde\x49\x3b\x13\xd0\x0c\xf8\xc1\xd3\xb7\xe9\x22\x13\x67\xe8\xf0\xea\xda\xb6\xe6\xd1\xb5\xff\xfd\xe7\xb2\xd7\x41\xfc\x2c\x83\x02\x24\xff\xf7\xff\x14\xae\x5c\x07"}, +{{0x22,0x73,0x94,0x2d,0xb3,0xe5,0xd3,0x22,0x1e,0x80,0xd9,0x94,0xfd,0x5e,0x11,0x63,0xaf,0x55,0xf5,0x45,0x5a,0x8e,0x52,0xbe,0x85,0x2d,0xd3,0xad,0xf7,0x62,0xb4,0x40,},{0xbc,0x58,0x67,0x4e,0x99,0x6b,0x6f,0x3e,0x32,0x20,0xb3,0xe9,0x4f,0x00,0x67,0xbb,0x0e,0x9b,0x0d,0x97,0xd9,0xe1,0x05,0x9c,0xf1,0x39,0x97,0xa1,0x93,0xac,0x03,0x2a,},{0x87,0x4d,0xde,0xce,0x08,0xf3,0x0b,0x30,0xf0,0xd4,0xc8,0xb3,0xed,0x7c,0x61,0x51,0x49,0xb8,0xaa,0x74,0x0d,0xaa,0x34,0x7b,0x55,0x95,0x8f,0x1e,0x21,0x19,0x04,0x4f,0x69,0x5a,0x21,0x06,0x96,0x90,0x50,0x64,0x48,0xd8,0xe7,0x35,0x2b,0x90,0x46,0x51,0x1d,0x7f,0x39,0xa5,0x41,0x5b,0xb9,0xc5,0x70,0x50,0xfc,0x17,0x05,0x5c,0x38,0x08,},"\x8a\xa0\x50\x9e\x4b\x91\x41\x86\xff\xff\x07\xae\xb9\x7a\x04\xb5\x46\x27\x2d\xa2\xf9\xea\x7b\xfa\x65\x9a\x24\xcb\x50\x96\x6c\x23\xeb\x65\x42\xe4\xf2\x2d\xeb\xe3\x3b\x65\x76\x92\x45\xc4\xd1\xb5\xdc\xf3\xe6\x99\xc7\x0c\x5c\x2b\xaa\xd9\x73\x4e\x9d\x1e\xfe\x54\x48\xab\x71\xc8\x94\x6a\xec\xce\x52\x68\xd2\x6f\x19\xcf\x60\x5e\xb3\xbf\x38\xb0\xb3\x32\x26\x94\xac\x0d\xcb\x76\xb0\xf9\x46\x84\x2f\x6c\x5c\x68\xd7\x63\xfc\xe7\x47\x01\xbd\x6b\x78\xe7\x1c\x8c\x31\x42\xad\xd4\xed\x46\xe0\x96\x9b\xb9\x55\x5b\xe0\x36\x02\xd5\x62\xe4\xc8\x9f\x3a\x91\x99\x40\xe8\x83\xa9\x69\x40\x54\x2f\x27\x79\xfb\xf9\xec\x0a\x28\x5d\x9d\x8a\x72\x36\x01\x46\xe3\xff\xbd\xb7\x8d\x21\x03\x16\x03\x8d\x95\xd6\xab\x75\x71\x65\xaa\x94\x3c\x03\x3e\xeb\xb3\x21\xc0\x5a\x39\x95\x69\xbc\xf6\x6b\x4d\xdb\x0b\x2e\x0e\x33\xc4\x79\x3d\x81\x7c\xcf\xf5\x7f\x99\xb3\x18\x9c\x60\xd5\xd7\xb9\x41\x9d\x1e\xbc\x94\x3a\x79\xd4\xd8\xc3\x94\x56\x61\x80\x59\x4f\x55\x9a\x80\x52\x9c\xc1\xba\x28\x87\x7a\xf8\xf5\xc0\x50\x3e\x94\x3c\xd3\xaa\xd9\x98\x11\x64\x52\x72\xda\xfb\x49\xb9\xb3\xe6\x10\x7e\xb5\xe5\x18\x6e\x16\x08\x75\x71\x26\x05\x3d\xeb\xce\xc7\x5d\xd9\x56\x5c\xee\xa0\x6a\x13\x91\xa8\x22\x6d\x1f\x45\x93\x79\x22\x40\xcc\xd9\x7c\x67\xa6\xc2\xb1\x34\x4c\x22\xc9\x1f\x42\x03\x3a\xde\xf5\x28\x61\xf3\x2a\x4e\x07\x12\xa9\x17\x87\x9a\x0b\x05\x18\xb5\x42\x4b\xcd\xc0\x54\xb4\x4e\x97\x2e\xd2\x4d\x01\x68\x9f\x4f\x27\xf5\xf1\x76\xf0\xa5\x78\xab\x2d\x3c\x08\x78\x27\x2e\x8c\x08\xc2\x15\x82\x11\x86\x54\x12\x4d\xca\x39\x58\x53\x37\xc1\x3c\x18\x65\x81\x4c\xaf\x09\x96\xca\xdf\xa6\x5b\xe5\x80\xde\xe3\x22\xeb\xcc\xda\x70\x4b\x22\x80\x58\x26\x04\x06\x7d\xc3\xc6\xb1\xf7\xd8\xa2\x69\x78\xa6\x5c\xff\xd1\xed\x31\x96\xa2\xb0\x65\xfb\x3c\xaa\x79\xe6\xb5\xb6\x6c\x13\xd7\xbd\x7d\x0e\xc1\x4a\x3a\x4d\x58\x41\x3f\x21\x2f\x47\x1e\xca\xad\x3a\x84\xaf\x35\xe5\x98\xa8\x9f\xb3\x44\x7d\x33\x24\xf0\x20\xfb\xf1\xb7\x3e\x2a\x98\x6e\x0d\xa1\x6c\x01\x83\xbf\x92\xa3\x98\xc4\x19\xa0\xf9\xf3\x05\x37\xbe\xa0\xdf\x8d\xf2\xdc\x53\xc1\x54\xe8\xea\x16\x06\x89\xe7\xbb\x4d\x72\x9d\xd8\xab\x90\x03\x14\x27\xaa\x39\x45\x86\x3a\x85\xe8\x96\x52\xb9\x35\x38\x05\x16\x6f\x7c\x0a\x18\xc9\x39\x95\x4b\x27\x87\xc3\x70\x94\xf9\x25\x12\x72\x2e\x52\xb0\xc9\x76\xb9\xe4\x2a\xf4\x03\x9d\x2c\x05\x78\xff\x14\xfa\xe1\xd8\xc2\xd1\x39\x6b\xeb\x2d\x6a\xa6\xeb\xd5\x54\x74\xa9\x34\x98\x67\xa0\x3f\x3a\x99\xd7\x87\x80\x63\x4a\xb4\xb3\x5c\xfe\x1b\x87\xa9\x13\x32\x52\xa6\x98\xbc\x40\x7d\x63\x84\x28\x70\xe2\x2c\xcf\x39\x33\x62\x0a\xc0\x42\x3c\x3d\x1f\x68\x1d\xd7\x3c\x01\xd0\x6c\x3b\x94\x15\x06\xc9\x8e\xed\x9b\x78\x68\xe0\x17\xb7\xf9\x97\x16\xb0\xb7\x7f\x11\x32\x1e\x5a\xb2\x3d\xbf\xcf\xca\x93\x50\x84\x5e\xe1\x80\x44\x4c\x50\xff\x0a\x9c\x96\x5f\xcb\xf7\x77\x70\x8e\x4f\x34\xcc\xc6\x37\xc6\xa0\x8d\x85\x43\x84\xf8\xd3\xe2\x51\x69\x56\xc1\x51\xd0\x31\xbb\x1c\xbe\x71\x2a\x5e\xf9\xee\x16\x61\x92\x28\xbd\x29\x6f\x2a\xfe\x58\x2d\x99\x53\xd5\x90\xd1\x8b\xb2\x05\xf7\x0f\x84\x4c\x16\xc0\xa2\xd8\x31\x80\x37\xd4\x3d\xd8\x0f\x65\xc6\xa7\x53\xf2\xa8\xe2\x7c\x89\xc8\x3e\x7e\xd7\x0c\x52\xf7\x06\x2d\xfb\xb1\xf5\x44\xaa\x23\x6b\x5c\x70\x4e\x7b\x39\xce\x0a\x55\xfd\x46\x52\x80\x83\xca\x61"}, +{{0xdb,0xfa,0x45,0xab,0xaa,0x55,0x41,0x52,0x38,0xb1,0x28,0x76,0x34,0xd5,0xee,0xc4,0x02,0xda,0xdf,0x62,0x2e,0x27,0x0c,0x04,0xa8,0x91,0x4c,0xed,0x27,0x0a,0x72,0xbe,},{0xc0,0xfe,0x32,0x35,0x81,0xea,0x29,0x67,0x50,0x79,0x7e,0xb5,0x50,0x8c,0xa1,0x9a,0x58,0x3b,0x53,0x7f,0xa7,0xdf,0x45,0x29,0xf0,0x80,0x4a,0x33,0xc1,0xa4,0xbe,0xf4,},{0xa4,0x62,0xa9,0xba,0xa5,0x6d,0xc0,0xf7,0xa7,0x1b,0xf8,0x7b,0x95,0xf4,0x8d,0x64,0x20,0x22,0xd9,0xd1,0x73,0x3e,0xe3,0x68,0x37,0x77,0xa3,0x78,0x22,0x28,0xac,0x85,0xfc,0xd8,0x30,0x26,0xbe,0x4c,0xa9,0x7a,0x34,0x5b,0x08,0x4f,0x50,0x87,0x4e,0x91,0x24,0xe1,0x6b,0xa1,0x7d,0xea,0xd4,0xad,0x85,0xc0,0xe5,0x6f,0x16,0xef,0x18,0x04,},"\xe2\x6e\x8d\xcb\x44\xe6\x41\xfc\x20\x08\x0e\x95\x47\x4b\xd3\x9d\x71\x6c\x5a\xfe\x5a\x1f\xfb\x05\x6d\x1e\xaa\xb0\xc4\x9f\x85\x70\x71\x7d\xb6\x43\x7a\x03\x22\x8a\x9a\xd9\xf4\xbb\x0b\x34\x3b\x95\xe1\x60\x23\xc0\x80\x7e\xb2\xa1\x51\x06\xa6\xeb\x12\xdc\x76\x68\x3e\x69\xdd\xa3\x36\x31\x48\xc5\xd7\xdd\x97\x13\xaf\x6f\x87\xa0\x94\x10\xea\x8f\x76\xb6\xb7\x8a\x11\x44\x29\xbc\x85\xf7\x84\x81\x2f\xca\x31\xac\xb0\x30\x95\x52\xcc\x18\x8c\x6e\x96\x97\x09\x3c\xf4\x04\xc6\xf0\xf4\xab\xe8\xa1\x60\x86\x73\xfd\xfa\x5e\xb7\x8f\x65\xfc\x1d\x49\xcd\xec\x40\x94\xb1\xbd\x23\x4a\x46\xe0\xec\x62\xa4\xb6\xd3\x1b\x82\x96\x11\x54\x01\x27\x87\x6b\xff\x4c\x17\x3d\xe0\x58\xcf\x61\x00\x4b\x01\x4a\x7b\xdf\x79\x3d\xfd\x6b\x63\xc5\x07\xd2\xb2\x3e\x0f\x56\xbc\x2f\xe6\xba\xf6\x37\xce\xe4\x0d\x18\x99\x22\x95\xd8\x48\xef\x49\x8f\x8a\x16\x1b\xd8\x7e\x60\xc9\x1f\x97\xa9\x1e\x9e\xf3\xf6\xd9\x7f\x2b\x2d\x21\x04\xba\x6f\xdd\xd6\xc6\x80\x70\x62\x73\xda\xe8\x7e\x6e\xec\x1a\xf2\xa4\x59\x84\x98\x50\x69\xe8\x09\xe8\xde\x32\xc1\x28\x89\x29\x9a\x32\xd4\x0f\x38\x77\x45\x99\xac\x33\x24\xb7\xcb\x0a\x4e\xa6\x32\xc5\xf9\x10\xad\x87\xf5\xad\xbf\xa5\xc3\xbb\x20\x49\x82\x79\xfd\x53\xc1\xc2\x67\xfe\x0a\x84\x77\x30\x85\xda\x26\x6b\x25\x3c\xd8\x53\xdf\x7e\x96\x35\x58\xcb\x06\x88\x07\x80\x97\x34\x23\xc5\x64\xcd\x0b\xcd\x6b\x93\x33\x4c\x19\x59\x53\xd7\xcd\x89\x9f\x8a\x54\x7d\x1a\x1a\x0a\x8d\xef\xf1\x38\x1b\x43\x21\x57\x47\x28\xcf\x71\xb9\x6f\xf2\x09\xe8\x99\xda\xa8\xf1\x3f\x41\xb2\x30\xe1\x7b\xff\xdf\xdd\x2a\x89\x43\xaa\x5d\x21\xe5\xf3\x6e\x1d\xa0\x7e\xdd\x6c\xee\x92\xdc\x48\xb5\xb2\xa7\x58\x01\x46\xa9\xba\xf7\x13\x95\x0c\xe6\x76\x25\x5a\x89\xe3\x4f\x87\x87\x54\x7d\x62\x86\x8d\xb1\x4b\xa4\x65\x94\xda\x31\x0d\x7e\x2d\x9e\x7c\x7d\xbe\x17\xdb\xd7\x1e\xb4\x7c\x56\xc5\x72\x1d\xc9\x6d\x69\x64\x70\x57\x37\x94\x80\x94\x11\xcd\xfa\x27\x6b\x05\x9d\x00\x07\xc2\x5d\x74\xb2\xa6\x7d\x38\x24\x6d\xe1\x1e\xf4\x6d\xfe\x26\x70\x92\x6f\xe4\xb6\x36\x56\x23\x1b\xc7\x26\x8b\xba\x23\xf3\x78\xe8\x4a\x42\x8c\x3c\xbf\x45\xcc\x53\x96\x78\xfd\x46\x7c\xd3\x3d\xd0\x75\x7c\xfa\x02\x4e\x54\xda\x1f\xf5\x4c\xe8\x20\x22\x9b\x77\x8b\x18\x4b\xe1\xfa\x2e\x84\x68\xcc\x19\x95\x59\x40\x73\x5e\xaa\xa8\x84\x02\x2f\x64\x18\xb0\xb1\xf2\x6b\xcc\xf1\x69\xf1\xbc\xac\x7d\x82\xa3\x5a\xb6\xef\x84\x7e\x1d\xba\x53\x7d\xca\xff\x57\x25\x0a\x8d\x1c\x71\xfa\xcb\x13\x4c\xd0\x6b\x01\xc4\x53\x19\x13\x27\x45\xdc\x48\x88\x88\xa1\xd7\x76\x1b\x84\x86\xa3\x7e\x69\x88\xa1\x12\x0b\xcc\x16\x82\xdb\xfc\x89\x14\x3f\xc3\x5b\x46\x93\x5d\x8a\xcf\x6e\xf3\xc4\x2f\x0f\x4b\xf6\x79\xdf\xd6\xff\x44\xb6\xad\xa2\x6b\x01\xa9\xf8\x9f\x37\x4c\x7d\x2e\xe4\x8d\xfe\x1a\x41\x0e\x89\x7c\xdf\xd9\x7f\x62\x6d\x26\x68\x50\x28\x14\x40\x07\x93\xb3\xb0\x7c\x87\x20\xbb\xdd\xc5\x9c\xb0\xf9\xde\x96\x4a\xe0\x75\xb4\xaf\x3d\xd4\xba\xf6\xd0\xe4\xf9\x4f\x29\x4e\x81\x09\xd6\x57\x7c\x4f\x8a\x9c\x7a\x5f\x7d\x69\x4b\xf8\x8f\x1a\x5e\xa7\xeb\xa0\xa6\x6d\xa6\xc7\x70\xc0\x8b\x3a\xbf\xfc\x53\x4d\xf2\x19\xdc\x3e\x33\x23\xb0\x22\xe9\x6c\xc8\x60\x02\xb1\x89\x18\x1a\x1d\x2b\x52\x7d\x27\x95\x0b\x7f\x42\x5a\x47\xda\x40\x13\x77\x8b\xd0\x0b\x71\x10\x59\x22\x20\x49\x21\xe9\xdc\x69\x2c\x23\x3f\x7b\xaa\x04"}, +{{0xef,0x64,0xe1,0x7a,0x53,0xf7,0xfb,0xca,0xfe,0x3e,0xa4,0x68,0x76,0x84,0xa0,0xda,0xdb,0x18,0xd0,0x37,0x35,0xa4,0x0a,0x53,0xb3,0xed,0xb0,0x49,0x07,0xee,0x61,0x62,},{0x91,0x86,0xe6,0xbc,0x14,0x29,0x61,0xc4,0xd3,0xeb,0x36,0x9e,0x9e,0x11,0x57,0x82,0x92,0xde,0x5b,0x6a,0xf5,0x34,0xd4,0x23,0xff,0x24,0x0f,0xa2,0x6e,0x21,0xa7,0x81,},{0xf5,0x8f,0x39,0x6b,0xa2,0x7e,0x06,0x7a,0x5f,0xe0,0x03,0xe3,0x85,0x58,0x2a,0xe3,0x49,0x0e,0x05,0x95,0x77,0x15,0xd7,0x04,0xda,0x0d,0xa6,0x3a,0x64,0x19,0xd2,0xe4,0xf6,0xdc,0x66,0xb7,0xe8,0x8e,0x42,0x8a,0x6f,0x21,0xb9,0xea,0x20,0x22,0x99,0xa3,0xc3,0x6b,0x24,0x2b,0x0e,0xa0,0x64,0x76,0xff,0x12,0xd0,0xb6,0x58,0x0c,0x04,0x03,},"\x68\x82\x45\x6c\xc3\xd1\xad\x0d\xaa\x9b\x88\xef\xf0\x96\x9f\x15\xe9\x7b\x48\xd0\x51\x96\x7e\x13\x90\x84\x72\x25\xf2\x6a\xc2\x55\x59\xf0\x24\x6b\xf7\xd6\x83\xfa\x28\xec\xed\xad\x21\x49\x1d\x77\xbd\x26\x96\xfa\x83\x5d\x0f\xd1\x19\x88\x4f\xec\xe9\xd8\x03\x69\x1b\x2f\xd3\xde\x17\xee\x08\x7c\x74\x00\x7a\x7d\xe9\xbc\x65\x34\xbb\xfe\x95\xfd\x32\xe9\x7c\x37\x5f\x4c\xb6\x57\x31\xaa\x1e\x83\x46\xbe\xa2\x1b\xe9\xf2\xc3\xdc\x87\x4a\xf0\x43\x19\x06\xcc\xbc\x2c\x60\x01\x27\xf4\xd3\xb0\x69\xeb\x09\x1d\x16\x5e\xc4\x53\xe6\x72\xe9\x3c\xae\x8b\x72\xf0\x33\x71\xd8\xb8\xa8\x24\x4e\xc4\xec\x2e\x09\xf3\x1d\xf4\x02\x06\xa2\xb1\xc8\x4c\xaa\x1b\x99\x3c\xc6\x75\xfd\xe1\xc7\x9b\xd4\xa7\xd1\x59\x74\xfa\x29\xce\x2e\x89\x2c\x28\x99\xcf\x48\x2c\x3d\x96\x63\xf6\xd2\xa7\x97\x84\xf4\x1c\x1f\x58\x66\xd3\x7c\x85\x46\xf3\x57\xd5\x64\xd3\xc4\x21\x8d\xfa\x6d\x20\xb6\xc2\x82\xb4\x00\xfe\xdd\xe5\x24\x39\xd4\x72\x21\x2c\x57\x67\xa3\x5d\xa5\x20\x10\x32\xda\x87\x30\x96\x8b\x07\x20\xe8\xa6\x04\xde\x6c\x1b\xaa\x3f\x4e\x89\x6a\xc2\x61\x4f\xb1\xab\x6e\x3f\x6c\xf3\x87\xa8\xeb\x2f\xf8\xa9\x21\x47\xab\x34\x92\x38\x43\x2e\x50\x9d\x82\x9c\xb7\x5b\x2c\x17\x65\xc5\x12\x21\x84\x8e\x25\xaf\xff\x5f\x16\xe4\xdd\x0c\xd5\xc9\xf7\x13\xc4\xaa\xab\x2c\xe8\x36\xf8\x49\x45\x06\xb5\x30\x9d\xc2\xb0\xae\x74\x5b\xb9\xc4\x79\x80\x98\xfb\x86\x41\xd5\x20\xa0\x8b\x02\xf7\x5a\xd8\x0d\xbc\x2c\xe2\x9e\x89\x0b\x4d\x72\xa3\xff\xb2\xa1\xcb\xd5\x38\xe1\x22\x9f\x57\x9c\x29\xae\x66\xbc\xa8\x5e\x0f\xa0\x8c\x86\x47\xa1\xab\xcf\xe8\xa4\x9f\x5e\x50\x8d\x4d\x24\x95\x55\x66\x23\xd9\x26\xce\x49\xef\xa4\x35\x0a\xaa\xab\x5c\xec\x2c\xd8\x85\xbe\x1d\x63\x47\x5e\x3b\xab\x7c\x7c\xdc\x8d\x65\x61\x73\xb8\xd4\x56\x02\xf4\xb3\xd2\x81\x24\x1d\x17\x19\x03\x27\xb2\x4c\x38\x36\xb1\x93\x11\xa1\x93\xaf\x86\xa6\x76\x8f\x04\x85\x2a\xb0\x6e\x67\xc8\xea\xd5\x91\xcd\xcb\xf3\x78\x9c\x61\x32\x09\xcf\xe0\x3f\x58\xc0\x30\x5f\x63\x20\x3b\x48\x7f\x7c\x5f\xc0\x98\x87\x7e\xc9\x8a\x68\x9c\x9d\x35\xaf\x81\xe8\x40\x78\xd6\x6f\xe9\xe4\xec\xcb\xb1\xcc\x6c\x71\x99\x1c\x03\x01\x7b\xb8\x11\xf4\x1f\x07\xde\x68\xfa\xd1\x94\x14\x60\x61\x32\x4f\x3d\x0e\xf2\x17\xa5\x4c\xf3\x8f\x7a\x62\x5a\x38\x86\x9f\x67\xd0\xb7\x43\x1d\xf9\x37\xcd\xe3\x49\xc1\x75\xce\x8b\x26\xac\x88\xd3\x9a\x43\xe2\x79\xb0\x18\x76\x4e\xfa\x4d\xd6\x27\xcb\xf5\x91\xf6\x20\x9c\x4a\x5b\xb1\x9e\xbf\xa7\xc7\x13\x55\x92\xd0\x2e\x50\x1c\xae\x5e\x6b\x31\xc9\x0e\x72\xfa\xab\x47\xf7\xdc\xed\x2c\x48\xad\xf8\x84\x43\xb3\xed\xe6\x0c\xef\xb0\xd6\x37\x9d\x69\x22\xec\x43\x7f\x08\x6b\xad\x62\x17\xd4\xd4\xff\xef\x18\xe2\x25\x23\x66\x4b\xf4\xe9\xca\x1e\x65\xa2\x8c\x2a\x7a\x60\xc5\xf6\xbc\x90\x6b\x73\x7c\x29\x93\x5f\x90\x97\x46\x30\x48\x57\x5b\xef\xd1\xa2\x54\x9d\xc4\x74\xb1\x3e\x68\xae\xec\xf1\x66\x04\x3e\x07\x5a\xac\x51\x55\x40\xf8\x31\xb4\x30\x66\xce\xf9\x32\xe6\x3d\xcd\x5b\x37\xb6\x15\x78\xc3\x5b\x09\xe4\x5c\xc2\xa8\xde\xf5\x71\x03\xed\xfc\x5f\x64\x98\x31\xa8\x96\x1f\xe4\xa4\xb3\x72\x1f\x1d\x6d\xf4\xea\x9f\x03\x38\x81\xb4\x74\x30\x0e\x0f\x12\xcb\x9c\xd3\xba\xbd\xcf\xfb\xb9\x18\xdd\x9b\xb0\xe2\xf5\xb2\x10\x33\xe4\x30\x23\xa0\xd2\xe6\x6d\xa3\xab\x0f\x07\xee\x98\x8b\x16\x88\x9c\xa5\xd5\x1a\xbd\xc0\x5f\xde"}, +{{0x33,0x47,0xdc,0x47,0xbb,0x3d,0x2e,0x5d,0x02,0x86,0xac,0x06,0xa5,0x4f,0xd9,0x21,0xc9,0xe9,0x6b,0x68,0x99,0x86,0x2a,0x54,0xe5,0xcc,0x81,0x15,0xd3,0xd0,0xba,0x99,},{0xd0,0x0b,0x64,0x5d,0x86,0xdb,0xb7,0xe5,0x24,0x75,0x7e,0xc7,0x78,0xc6,0x2b,0x7e,0x60,0xd0,0xb6,0x57,0x68,0x83,0x33,0x8c,0x9b,0x67,0xc2,0xc7,0xe4,0x50,0x92,0x68,},{0x9a,0xb4,0x29,0x9b,0x17,0x72,0x93,0x44,0x75,0x0b,0x69,0xdc,0x60,0x37,0x36,0x8c,0x98,0xf4,0x7b,0xe6,0x27,0xfb,0xd9,0xad,0xfd,0x8d,0xb3,0x9f,0x99,0x64,0xdd,0xb7,0xbc,0x92,0xd6,0x74,0xc7,0xbe,0x74,0x07,0x56,0x39,0x6b,0xaa,0xee,0xac,0xbf,0x74,0x94,0x7b,0x61,0x91,0xc6,0xed,0x1f,0x5d,0x32,0xa6,0x3d,0xf3,0x6d,0x54,0x26,0x01,},"\xe2\xf4\x8e\xdf\x9d\x64\x33\x20\xab\x99\x1c\x8f\xf9\xf6\xaa\x75\xfe\x06\x6e\x7d\x88\xff\x1e\x47\x2a\x5a\xc9\xc5\x18\xde\x1f\xb6\x29\x83\xb1\x00\x7f\x64\x22\x80\x91\x17\xbd\xbe\x8a\x0e\x57\x87\xf6\x6b\xb0\x57\xd2\x7f\x12\x9a\x20\x0b\x40\x57\x6e\x17\x19\xcf\x9e\x98\xfc\xb7\x2a\xf9\x4b\xb8\x2e\xe7\x0f\x37\x19\xa2\xe2\xcd\x9b\x64\x77\x7c\xea\x5e\x44\x64\x59\x87\x4b\x74\xbf\xbf\x56\xb2\xd2\x52\x64\x00\x59\x2a\x9b\x45\xa5\xcb\x79\x80\x92\xb6\x0a\x81\xb7\x1d\x82\xf0\x68\x5f\xae\x7f\x81\x0b\x52\xd2\x26\xad\xac\x7a\xd8\xa9\x18\x3f\x09\xfe\xbe\xe9\xd2\x50\x46\xc0\xfe\x30\x66\x81\xac\xe2\xbf\xf9\x1b\x34\x82\xb0\xbc\x30\xb2\x02\x1c\x43\x41\x64\x5d\x67\x51\x34\xfe\x30\x81\xc5\x1e\x5c\x59\xe4\x0b\x37\x5a\x14\x34\xf6\x3b\x42\x6e\x30\x53\x0d\xa9\x35\x3b\xb2\xa9\x42\x32\x20\x43\x4a\xe5\x9d\x7b\x6f\xdc\x14\x3f\x49\x82\xeb\x8c\xfa\x77\x51\xb7\x5b\xf3\xe9\xc9\x13\xc7\x3b\x76\x0b\x07\xd3\x95\x31\x0c\x59\xf3\xb7\x7e\xbf\x12\xed\x2d\x7b\x03\x59\x0d\x33\x17\xaf\x17\xdf\x42\x1e\x78\xb0\x84\x9f\xd5\x6d\x94\x5c\x56\x96\xa0\x40\xfc\xaa\x78\xa9\x3e\xcc\x16\xd5\xac\x34\x45\x06\x36\x11\xf3\x01\x3e\x9a\x3a\xe2\xe1\xc2\x70\xdd\x01\xa8\xff\xe3\xe6\x12\x6b\xc1\xe4\xc9\x5f\x65\x47\xa8\x65\x1f\x26\xb6\x40\x4e\x39\xee\x4c\xe7\x61\x89\x18\xf3\xf9\x37\xa5\x25\x73\xec\x27\x7b\x77\x1e\x91\xad\x09\x6f\xa1\x5c\x7a\x34\x0a\x80\x9b\x47\x03\x18\xa4\x63\x64\x23\xeb\x48\x88\xa1\x21\x60\xc4\x66\x3f\xce\x29\x96\xd6\x38\x89\x6c\x83\x9b\x2c\x7a\xd4\xb3\xa9\xb2\xe6\xcb\x71\xe9\x12\xfe\x39\xb8\x43\xc6\xe0\x83\x2e\xca\x22\xde\x93\x8b\x50\xae\x86\x3e\x48\x58\x2c\x10\x85\x12\x32\xf7\x5e\x52\x25\xb8\x89\x6b\x5a\x47\x0f\x81\x8b\x6f\xa3\x9e\xb7\xbb\x59\x03\x57\x67\x86\x12\xd2\x5f\xe1\xa4\x0e\xa1\xb9\xd7\x1d\x88\x09\x09\xc1\xbd\x4a\xd1\x76\xcc\x0c\xef\xfd\xce\xe7\x09\x9e\x78\x82\xa7\xc9\x07\xe4\xbe\xc7\x98\x30\xc6\x77\x1a\xcb\x89\x94\x4b\xd5\x4a\x51\x65\xb3\x18\x70\x91\x69\x21\xb1\x98\xac\xd4\x43\x2e\x7e\xed\x8c\xe1\xde\xb3\x45\xb1\x07\xed\xa7\x60\x26\x6f\xcb\xda\x3b\xa5\x22\x94\x00\xa3\x03\x60\xa4\x64\x5c\xa8\xdb\x38\xc3\xd5\xf4\xa8\xde\xf1\x57\xbb\xdb\xbf\x2c\x1f\xa1\xdc\x6b\x05\x14\xa4\xf5\xa0\x36\x4f\x92\x83\x81\xb4\x0f\x95\x57\x9a\x26\x46\x7f\x22\x82\xa8\xa2\x55\x75\x84\x02\xac\x9c\xa8\x0e\x89\xb9\xcc\x68\x60\xa3\x4b\xb3\xf9\x0c\x32\x37\x65\x7c\x21\x29\xea\x48\xc8\x52\xb9\x25\x69\xe8\x11\x06\xbc\xe4\x61\xe2\x02\x44\x54\x82\x1a\x91\x75\x92\xd1\x99\x1b\x5b\x69\xf2\x7b\xbe\x01\x99\x77\x52\x8a\x2f\xc0\x11\x92\xc5\x6b\x4a\xea\x87\x3c\xf8\xc5\x8d\xfd\x7c\xb4\xb0\xe9\x17\xe8\x7a\x87\x04\xc9\x92\x82\x0f\x98\xd7\x74\x04\xd3\xf1\xd2\x05\x0c\x67\x43\xf6\xe9\x3c\xdb\x51\xa6\x1a\xa6\xf4\x5b\x35\x1b\x26\x46\x1d\x13\x29\xf3\x15\x12\x72\xac\x39\x62\x34\xd0\xd6\x7c\x17\x8a\xcf\x91\xfc\x51\x0d\x86\x42\x9c\x69\xa8\x7f\xdf\x10\x11\x55\xda\x8d\x94\xde\x67\x22\x23\x8a\x6f\xb1\x70\x16\x86\x2b\x11\xd5\x02\xc6\x67\xee\x9c\xa0\xaa\xbe\x1c\x20\xb9\x77\x89\xf1\x86\x7a\xdd\x78\xb8\xb8\x7e\x9a\xb5\x19\x34\xc0\xb4\xa1\x6c\x2c\xbc\x4d\x2e\xfe\xdb\x79\xc0\x5b\x23\xe0\xcf\x78\x92\x01\xac\x75\xfe\x07\x6d\x31\x5f\xcb\xac\x20\xba\x0d\x31\xe4\xdc\x61\x69\x27\xd6\xea\xb1\xb1\xc8\x7a\x1c\x9c\x77\x8e\x4b\xd2\x85\x29\x58\x74"}, +{{0xff,0x15,0xd6,0xe7,0x4e,0x28,0xe4,0x1d,0x05,0xa8,0x66,0x3a,0x70,0x2f,0x03,0x8d,0x5b,0x85,0x78,0xc4,0x27,0x5e,0x77,0x2b,0x73,0xba,0x44,0x0b,0xc5,0xf5,0x5a,0x06,},{0x47,0x47,0xe2,0xe9,0xb8,0x26,0x37,0xb3,0x84,0x4b,0x85,0xf7,0x5b,0x59,0xf7,0x13,0x6b,0x7f,0xdb,0x1a,0x62,0xe7,0xb7,0x0d,0x6a,0xac,0x17,0xb3,0xc5,0x75,0x2f,0x2f,},{0x42,0xc1,0x29,0x5f,0xaf,0xe2,0x6d,0xe3,0xea,0x34,0x92,0x6b,0xf1,0xef,0x80,0xbc,0xaf,0xe4,0x7b,0x21,0xb9,0x0e,0xae,0xd1,0x96,0x35,0xed,0x75,0x38,0xd7,0x67,0xcb,0xf3,0xa1,0xe5,0xde,0xda,0xab,0x82,0xad,0xf7,0x51,0x20,0x37,0x3e,0x92,0x32,0x02,0xf7,0xfd,0xa0,0x82,0x67,0x84,0x29,0x2e,0xba,0x8b,0x23,0x8b,0x6c,0xb8,0x83,0x04,},"\xce\x7b\xf9\x72\x84\x4f\x51\x84\xae\x8e\xac\x87\xb1\x2b\xe9\x20\x2c\x72\x39\x96\x1d\xc2\x3c\xd4\x1f\xf5\x5b\x9b\xfa\xac\x0c\xc0\x6f\x3f\x1d\xec\xfa\x95\x71\x09\x5c\x8e\x82\xb4\xeb\x6f\x8a\x1c\x52\xc8\xd3\xde\xaa\x61\xa9\xaa\x94\xe2\xec\xd9\xab\x5b\x80\x63\xf2\xda\x6d\x80\x15\xdf\x0a\x51\x44\xfa\x3a\x48\xe3\x05\xad\x9f\x41\xea\xa1\x1c\x4d\x74\x85\x43\x74\xec\xbf\x38\x2e\x30\x02\x57\x9a\x9a\x24\x9e\xfa\x1e\x1c\xa0\x4d\x33\x84\x47\xd7\xf2\x20\x67\x03\xe6\xca\xbf\x5b\xbd\x33\x2b\x42\x57\x3b\xcb\xd3\xb6\xf7\x1b\x7c\x3b\xf7\x3d\x4c\x77\x4a\xa0\x1e\x86\x68\x41\x43\x28\x29\xd0\x7f\x96\xe1\xf6\x1a\x20\x21\x6d\x96\x8c\x90\xe3\xed\x11\xf6\x63\xf7\xd6\x27\x16\x22\xfe\xfc\xf3\xab\x68\xf3\x44\x32\x85\x15\xd5\xcc\xe2\xce\x85\xe8\xbf\x3d\x1d\x09\x04\x36\x92\xe1\xfb\x8b\xbd\xdc\x07\xa4\xab\x0a\x3e\xef\x8c\xa6\xa4\x20\xe7\x4b\xff\x8d\x3d\x71\x55\x96\xaa\x82\x16\x82\x95\x4f\xe8\x96\x29\xae\x27\xc1\xbb\x03\xb6\xaa\x09\xf3\x6a\x39\xa3\xe3\x7b\xa9\x81\x32\xf4\xe2\x38\x88\xf9\xf3\x35\xe7\xbe\xaa\x2c\xb2\x72\x7a\xcc\x3d\x27\x77\x30\x9b\x85\x29\x52\x32\xe5\x4d\xa8\x8e\xbb\x6f\x10\x53\xd6\xde\x79\xac\x66\x09\x85\x2e\xb9\x3a\x0a\x35\xbc\x1a\x7b\xdc\x22\xd6\x28\xbc\x86\x12\x4d\x69\x6c\x3f\x98\x28\xb6\xf8\xb9\xaa\xde\x1a\x65\x21\x61\x77\x48\x6c\x25\x2a\x4b\x42\xd9\x0a\x4e\x0f\xea\x20\x93\x48\x9e\x24\x4d\x80\x8e\xf7\x02\x1a\x97\xd5\x60\x8c\x0a\xe1\xd6\x63\xc7\x75\xe8\xbb\x9e\x9a\x73\x15\xf1\xfe\xb6\xd1\x29\xb5\xa5\x41\xea\x59\x29\xa2\xc6\x33\xb6\xd8\xc3\xc4\x54\x41\x71\x79\x46\xcf\x87\x3e\x9b\x4c\x51\x21\x80\x13\x5d\x54\xf0\x53\xab\xe4\x4c\x6d\xf3\x9b\x7b\x06\x2e\xf7\x24\x01\x62\xcb\xd0\xb8\x51\xaf\xe5\xf9\x15\x36\xa9\x49\x94\x18\xe8\xbf\xf4\x99\x64\x73\xd8\x05\xeb\xc1\xae\x48\xda\x2d\x0b\x12\x9e\x8e\x82\x52\xf1\xd5\x3c\x32\x8f\x32\xdb\x25\x2d\xe3\xbe\xfb\xe5\xf3\x12\x80\x12\x11\x43\xa8\x00\x4a\x4c\xae\x63\x1c\x82\x74\x09\xe5\x20\xe3\x94\xcd\x0f\x89\x50\xcd\x4c\x3c\xf3\xf3\xdb\xd4\x95\x2a\x4d\xfe\x69\x87\x5f\x56\x53\x89\x06\x1a\xd0\xa0\xce\xe6\xb6\xaf\xf0\x9c\xec\xa2\x6d\x99\x0e\x89\x6a\x2a\xba\x9f\x3b\x26\x01\x5b\x63\x42\x37\x68\x68\x4c\x03\xed\x0d\xe6\xce\xe7\xac\x5b\xbd\xf9\xf4\x85\xc2\x27\x5c\xd1\x2a\xef\xa8\xf9\x07\xb8\x51\xa0\x2d\x51\xc3\x4f\x12\x1b\x77\xf3\xa5\x6a\x9e\xbd\x1d\x65\xff\xe8\x9b\xee\x38\x1f\xf2\xa7\x48\x0e\x89\x68\xcf\xf2\x5a\xc8\xd0\x4e\x14\x9a\x9d\x50\x27\xd1\x4b\x88\xf8\xae\x26\x04\xd2\xac\x22\xac\x67\xd1\x3e\x90\xad\xa6\x20\xc2\x04\x6d\x28\x29\x93\x84\xd0\x95\x9f\xb7\x6e\x22\x58\x87\x96\xce\x42\x7a\xae\xaf\x4e\x2a\x8a\xae\xc3\xe8\x7f\x84\xcc\xd0\x82\x52\x4c\x96\xd7\x66\xee\xc6\x6f\x0b\xec\x3e\x79\x95\x58\x14\x5f\x09\xd3\x30\x13\x4f\x1c\x63\xf3\x70\x53\xcd\x4b\xdc\x1c\x37\xfd\xe9\x72\x91\x85\x75\x51\xf5\x0a\xc8\xe1\x5f\x06\xac\x1c\x73\xda\xa1\xe8\xc5\xbc\x92\x77\xe3\xd6\x9c\xb4\x4a\x32\x37\xec\x57\xdb\xbc\xcf\xdf\x66\x85\xad\xa2\x0b\x74\xa1\xbc\x6b\x74\xab\x05\x69\x0e\xaf\x9b\xd0\xc4\xbe\x17\x04\x2f\x5c\xd3\x20\xcd\xd6\x13\xdc\x08\xd2\x9a\xf3\x46\xaa\x41\x91\xce\x0b\x4f\x85\xbb\x2a\xd7\xf3\xba\xc7\x38\xa9\x37\x7e\xc6\xb8\x40\x62\xcc\x70\xfc\xa9\xec\xfb\xe1\xf5\x7f\xe5\xb2\xce\x7a\x4f\x73\x9c\x81\xca\xbc\xde\x04\x64\x51\xdd\x61\xce\x1d\xbc"}, +{{0x1e,0xd3,0x7b,0x61,0x0b,0x8b,0x35,0x41,0x7d,0x04,0xe5,0x9a,0xaa,0xda,0xc6,0x88,0xff,0x81,0xf1,0xe5,0x07,0xc8,0x9b,0x4f,0x40,0x01,0x60,0x94,0x19,0x08,0xcb,0x8c,},{0x48,0xe8,0xcb,0xeb,0x12,0x40,0xbd,0xeb,0xf0,0xa2,0xd9,0x29,0x53,0xaa,0x89,0xb2,0x82,0xc4,0x9a,0xab,0x2c,0x38,0xae,0x69,0x04,0x4c,0x51,0x51,0x5c,0x33,0x00,0xd5,},{0x86,0x08,0x81,0x5e,0x10,0x59,0x0d,0x55,0x04,0x87,0x4d,0x89,0x99,0xfd,0x6f,0x09,0x62,0x6f,0x95,0x0b,0xe2,0x0c,0x91,0x2c,0x27,0xc9,0xde,0x6e,0x79,0xb0,0xfa,0xf7,0x77,0xa5,0x33,0xbd,0x5b,0xb6,0x67,0xab,0x51,0x3a,0x49,0x45,0x8e,0xcd,0x67,0x87,0xa0,0x9e,0xc0,0xdf,0x6c,0x9c,0x9d,0x63,0x33,0xc5,0xe3,0xae,0x61,0xea,0x37,0x0a,},"\x1e\x67\x67\xdf\x97\xdb\x1c\xfb\x40\x88\xda\x7b\x20\x0d\x9f\x59\xec\x8d\xd4\x53\x3b\x83\xbe\x30\x9f\x37\x65\x00\x31\x06\x57\x27\xcd\x52\x02\xce\xf4\x84\x26\xa5\xf3\xa1\x1d\x50\xb3\x81\xf8\xbc\x22\xff\x10\x18\x27\x35\x9f\x2d\x0a\x61\x0a\x4f\x75\x54\x64\xa0\xc8\x91\xcb\xd9\x8d\x2d\xcb\x41\xd9\x77\x9d\x28\x8f\xcf\x1f\xea\x62\xe5\x21\x63\xae\x67\xe9\x04\x28\xb8\x63\x98\xef\xa2\x18\xf1\xb9\x82\x08\x1f\xc5\x13\x30\x5f\xd3\xe8\xec\xe7\xf9\xac\xb0\xe1\x0e\x00\x1d\x2e\xd2\x99\xa4\x8a\x80\x87\x0b\x3d\x5d\x8a\xb9\x00\x63\x09\xb3\x15\x91\xca\xf0\x58\x33\x80\x07\x3a\x2d\xb6\x1f\x45\x25\x4a\xb9\x65\xb5\xe4\x67\x2c\x4b\xfa\xa8\x6e\x33\x6c\x49\x27\x85\x52\x72\x9f\xb2\xda\x76\xff\xe5\x02\xec\x61\xe1\x69\x6c\x7f\xc9\xef\x19\xf7\xcc\x2a\x27\x75\xb2\x97\x00\xcb\x38\x42\x94\x06\x3a\x17\xfe\xd4\xfc\x63\x5b\xc1\x32\x82\xa9\x0d\xad\x0c\x00\xaa\xdb\xcd\x56\x9f\x15\x6a\x85\x4f\x8b\xa9\xe7\xd6\x07\xd2\x0f\x2e\x9e\x53\x37\x98\x11\x61\xd8\x04\x64\x46\x68\xd0\x64\xfa\x63\xdc\xeb\x9f\x58\x01\x35\x3d\x0a\xb9\xf4\x1d\x1d\x8b\xdc\x76\xc1\x3a\xb2\xf0\x23\xea\x01\xad\xbc\x4c\x81\x68\xd9\x39\xe9\x8f\x64\xfd\x89\x19\x38\x4a\xbe\x76\x70\x92\x63\xc0\xcd\x7c\x3e\xfa\xdc\x28\x01\xcc\x4a\xbd\x80\xa0\x9b\xb3\xed\x6b\xb7\x8c\xd6\x20\x96\x9c\xd3\x5c\x6a\x3a\x5d\x01\x48\x5e\xad\x4c\x45\xeb\xb6\xac\x6a\x83\x21\x2a\x7c\x76\x67\x54\x27\xb2\x1d\xa8\xa7\xa5\x04\x7b\x30\xa6\x10\x0c\xda\x02\x47\x6c\x18\x6e\x6c\xe4\x0d\x27\x68\xa9\x42\xc9\xf8\x73\x05\xe9\xd3\x63\xb5\x24\xc0\x09\x4a\x9e\x2e\x29\xf5\x85\x89\x4c\x0a\xdb\xfc\xd6\x06\x90\xfc\x7f\xb0\xa9\xc7\x17\xcf\x43\xb4\x84\xfd\x45\x15\x1b\x13\x04\x16\x9c\x26\x92\x1d\xb2\x27\x6e\xc0\x5a\xd2\x2a\xd1\x66\x85\x4f\xd2\xf9\x40\x85\x77\x8c\x47\x0d\xc4\x52\xe5\xcf\xa4\xae\xe0\x4f\xac\xb7\x70\x52\x6e\x1f\x24\x8d\x3d\x15\xc2\x72\x80\xfd\xfa\x1f\xd2\xc1\x04\x4b\xcb\xc8\x81\xc3\xd9\x98\x15\xc9\x7f\xbe\xa4\x61\x10\xbe\x02\xda\xb7\x74\xf3\xa6\x10\xe5\x80\x2a\xbf\x36\xa4\x98\x75\xc6\x82\x63\x8e\x0a\xe4\xcc\x82\x77\xc5\xe9\xaa\x73\x07\x44\x5e\x6b\xbc\xbe\x54\x9e\xec\x2a\x45\xb1\x59\x7f\x74\x47\x10\x7b\x62\xe2\xce\xe0\xa5\xfc\x51\xbe\xae\x3e\x1f\xe9\xbe\xfb\x18\x85\xd9\xb3\x0f\x9b\x4f\x1f\x56\x20\x6d\xee\x0d\x67\x77\x9c\x57\xf4\x84\xc8\xc3\xc8\x99\xa5\x15\xa9\xd1\xc1\x0f\x60\x59\x84\x0c\x1c\x73\xd3\xf0\x5b\xcb\x88\x59\x0c\x52\xf7\xda\x39\x18\x38\xdc\x2e\x73\x22\x8f\x09\x81\xc2\x89\xa4\xc2\x7f\x0c\x75\x7f\xaf\x7b\x3b\x89\x14\x6e\x33\xda\xfa\x49\x0d\x9e\x0f\x92\x75\xb0\xcf\xa6\xa7\x71\x0a\x73\x83\x14\x59\x59\x5b\xf7\x32\x11\x2b\x62\xfc\x86\x4c\xa4\xc8\x29\x78\x4a\x3f\x16\xee\xc4\xe1\x8f\x93\x69\x18\xa7\xb9\x89\x16\x69\xe9\x33\x22\x3f\x74\x5f\xda\x56\x2b\xc0\xa4\xe6\x1e\x3d\x14\xea\x45\xdf\xc3\x27\xe2\xfc\x0c\xdf\xe6\xf2\xf9\x75\x46\xc9\x0f\xce\x82\xf5\x22\x29\x14\x80\x11\x1a\x1e\x6b\x93\x88\x27\x2c\x0b\xe2\x8d\x20\xed\x84\xbb\x84\xd4\x9b\xc1\x99\xcd\x59\x99\x48\xb8\xf2\x03\x9d\x07\x82\x7a\x3f\x40\x75\xd3\xa6\x7e\xe5\x72\xa0\x13\x79\xa3\x62\x13\xfe\x11\x6e\x76\x8b\x41\x14\xe8\xa4\xb3\x13\x4c\x38\x18\x96\x07\x72\xd7\x27\xb0\xca\x6f\x7c\x99\x7c\xa9\x98\x43\xb7\xeb\x02\xff\xc0\x13\x97\x1c\xbe\x0e\x6e\x60\xd4\x97\x73\xf1\xe8\xc0\xb3\x06\x06\x13\x1c\xb1\x0c\x3e\x04"}, +{{0x84,0x36,0x44,0x78,0xec,0x94,0xbd,0x25,0xc4,0xbd,0xb8,0x2d,0x29,0x62,0x29,0xe6,0xda,0xce,0x2b,0x13,0x59,0xd6,0xd2,0x1b,0xe2,0xb3,0xaf,0xcd,0x7b,0xda,0x19,0xc7,},{0xa1,0x81,0x4f,0x8c,0xe0,0xfc,0x3b,0x23,0x60,0x93,0xa5,0x0f,0x46,0x8c,0x13,0x16,0x21,0x1f,0xe6,0xc5,0x2e,0x23,0x45,0xd9,0xf0,0x76,0x6b,0x36,0x88,0xa0,0x3c,0xad,},{0xb4,0xc2,0x32,0x1a,0xde,0x3c,0x19,0xed,0x4e,0xd4,0xc6,0x39,0xd5,0xa4,0xd6,0xf2,0xbe,0x8e,0x2f,0xb1,0x3b,0xb7,0xbd,0x62,0x5a,0xd6,0xdc,0x87,0xe2,0xc2,0x0f,0x93,0xad,0x6b,0xe7,0xb7,0xe4,0x27,0x11,0xa8,0x78,0xdb,0x9d,0x76,0x05,0x4b,0xfd,0x7b,0xc2,0x5e,0x37,0x74,0xa9,0x3d,0xa1,0x54,0x3c,0x9b,0x4f,0x66,0x33,0xb0,0xbe,0x09,},"\x7b\xb7\x29\x3d\xe5\x5f\x05\x8f\xb2\xec\x22\xb6\x87\x26\x05\x43\xdc\xaa\x90\xf1\x40\xb9\xf4\x5e\xdd\xd4\xbc\x22\xe4\x09\x77\xe0\x0e\xd3\x3c\xd1\xef\x1b\xba\x13\xc1\xd0\x99\x08\x59\x00\x55\x69\xa8\x07\x67\xe4\x86\x4a\x2c\xd2\x88\xc8\x13\x93\xe0\x4a\xd9\x71\x78\x2e\x2b\xc4\x93\x10\x8c\xbe\x80\xda\xcf\x0b\x7b\x9c\xd5\x34\x98\x84\x07\xa4\xf9\x32\x7e\xc8\xe9\xc4\x04\x32\x84\xef\x6e\xe5\xa2\x6a\x5b\x41\x77\x65\xd3\xea\xbb\x48\xa0\x07\xe7\xc7\xf3\x29\x87\xd7\x0a\x13\x9a\xc4\x16\x78\xcd\xf7\xa5\x5c\xb8\x0c\xf9\xdb\x5e\xaa\x45\xf3\xde\x0f\xbf\xba\xdf\xfc\x40\x99\x63\x70\xe4\x8b\x1f\xf5\xed\xd9\x79\x40\xe7\x50\x79\x21\x64\x83\x6a\x4a\x5a\xc2\xe3\xff\x53\xe4\x8a\x1e\x55\x6d\xb9\xad\x0c\x5c\x0b\x94\x4f\x4a\xee\x51\x9a\x2b\x0a\x88\xbb\x1c\x1f\xc7\x45\x45\x24\xcd\x57\xaa\x53\x50\x98\x62\x43\xd3\x4f\xc5\x8e\x24\xe8\x19\xec\x0b\x85\x45\xd8\xdf\xcf\x6b\x20\x31\x14\x41\xd3\xa3\x5d\x3e\x71\xb3\xe3\xec\xd7\x88\x4d\xda\x84\x33\xa4\x05\xe3\xd9\x96\x90\x00\xc8\x20\xa8\x9b\x95\xd1\x97\x84\x1d\x98\xae\x73\x4a\x2e\x81\xda\xf6\xa7\xdc\xf5\x6c\xb2\xfc\x26\xf2\x16\x5a\x5f\x42\xb8\x6c\x7e\x9e\x5b\x11\x16\x17\x00\xa1\xab\x98\x31\xf3\xfa\xe5\x8e\x14\x20\x8b\xe1\xbf\x33\xb5\x8e\xcc\xe8\x1b\x0c\x6b\x7e\x02\xf8\x8a\xdf\x9a\xb0\x30\x26\x3e\x2c\xc9\xb6\xe3\x3e\xbc\xa3\xf4\x95\x49\x2e\x32\xbf\xe3\x72\x53\x7d\xe6\xc6\xb8\x76\x44\x82\x8f\x74\x94\x2a\x02\xb0\x07\xf1\x4c\x3f\xc5\xdb\xde\x76\x33\x3d\x36\xd0\x76\x31\xb7\xa9\x92\x4f\x71\x75\x50\x04\x06\x97\x92\x3f\xa7\xb9\x54\x6b\xfb\x02\x17\x02\x4e\xa3\xf2\x52\xb5\x15\xb5\xd6\x4a\x62\xc4\x8e\x02\x7c\xef\x67\x50\xbe\xda\x49\xa0\x24\x47\x03\x9b\x25\x0a\x0b\xda\x07\xdc\x06\x24\x91\xa6\x62\xe2\x68\x74\xc8\xd0\x0f\x80\xe6\xcf\xc8\xb3\x0f\x2c\x3b\xf7\x72\x0b\x57\xf2\x61\x5f\xc4\x78\xfe\xfa\xa6\xd3\x17\x05\xb4\x3c\x5a\x54\xf7\x58\x66\x6b\x30\x2a\x8d\x34\x95\x31\x31\x94\x1b\x79\x57\x73\x04\x76\x79\x4d\x0b\xd9\xd2\xdf\xa7\x2f\xd2\x03\xf2\x2d\xf5\xec\x6b\xba\xac\xe8\xb9\x39\x4b\xeb\xda\xea\xa5\x61\x46\x10\x11\xb4\xfc\xa6\x18\x5c\x9a\x38\x28\x3f\x54\x03\xfd\xac\x32\x6d\x1f\x73\x4c\x6a\x5d\xed\x67\x24\xd9\xf3\x84\xae\xbd\x6c\xab\xfc\xbe\xc1\x2a\xba\xb9\x82\x0d\x08\x07\x32\x51\x5e\x05\x00\xcf\x5d\x3e\x2f\x9e\xf8\x0a\x4d\x76\x46\xa7\xda\x9e\xff\x41\x0f\x50\x7c\x69\x87\x3b\x32\xd5\x40\xec\x32\xb2\x83\xef\x31\x79\xa4\xc6\x32\xb3\x66\x57\x6d\xff\x05\x8f\xaf\x8c\x8c\x70\xbc\x69\xbe\x80\x89\x82\xec\x14\x97\xae\x89\x11\xb0\x01\x65\xa6\x66\x95\xf4\xd3\xb9\x87\xe7\x39\x0b\x5c\xf8\x78\xe3\x5e\x67\x65\x41\x28\x5e\x4e\x13\xdf\xae\xb2\xf3\x68\xcb\x51\x1b\x77\x8b\x10\x6a\x42\x87\x78\xa1\xb8\xf2\xa7\xd2\xe0\x93\x51\x9b\xc9\xb5\x18\x8e\x38\xc6\x79\x3e\x96\xbd\x0d\x30\xe2\xa3\xdb\x9e\xe1\x46\x8c\x3d\xc8\x7c\xc3\x65\xc8\x10\xf9\xdb\xdf\x01\xa4\xb5\x14\x21\xf6\xfc\x8d\xfd\xa3\xa1\x6e\x2d\xa7\xca\x71\x59\xb6\x86\xa5\xe1\x67\x33\x89\x37\x88\x2f\xf7\x15\xd3\xe7\x50\xd9\x58\xfc\x9e\x4b\x1f\x05\x53\x12\x92\x99\xaa\x84\x30\x18\x3e\x50\x6c\xd7\xf2\xb2\x79\x07\x6e\x0e\x1c\xca\x97\x49\xcf\x12\x3c\xe5\x07\xfe\x07\xdd\xbb\xc4\xdc\xca\x6c\xdb\x9e\xf1\xb8\x33\xf6\x1d\x4b\xff\x00\xbe\xc0\x12\x15\x8f\x43\x2c\xeb\x75\xb4\xf2\xed\xb1\xbb\x84\xe5\xeb\xb9\x25\x9e\x09\xf9\x62\x5c\xe3"}, +{{0x00,0xdb,0x37,0xad,0x2a,0x19,0x5f,0x08,0xa0,0x84,0x40,0xd0,0x59,0x25,0x9e,0x53,0x9f,0xeb,0x40,0xb4,0x74,0x92,0x82,0x55,0xe7,0xc9,0x4e,0xbc,0x3b,0x05,0x03,0x8c,},{0x04,0xf8,0x8b,0xf6,0x39,0xe0,0xf7,0x1a,0x57,0xd0,0xd0,0xaf,0xff,0x5f,0xe9,0x7d,0xde,0x38,0x09,0xff,0x28,0xec,0x68,0xeb,0x6f,0xc4,0x23,0xf4,0xfa,0xff,0x43,0x90,},{0xf4,0xd1,0xc8,0x0f,0x5e,0x7b,0x91,0xc5,0xc7,0xa8,0x2a,0x68,0x2d,0x49,0xba,0x6f,0xb1,0x9d,0x40,0x0a,0x29,0x97,0x48,0xa0,0xc9,0x69,0xbb,0x99,0x81,0x69,0x98,0xbe,0x63,0x4e,0x84,0xda,0x78,0x58,0x1b,0x06,0xe3,0x47,0x0e,0xfe,0xc3,0x98,0x04,0xfe,0xd9,0x3d,0x29,0x73,0x9f,0x04,0x39,0xa8,0x09,0x5a,0xc4,0x0d,0x9d,0x38,0x5e,0x04,},"\x5a\x94\xf7\x29\xd3\x0d\xd8\xaa\xe2\xa5\xc8\xc2\x85\x47\xbf\x45\x06\x29\x5d\xc6\x1b\xfe\xad\x97\x27\x74\x60\x82\xd4\x3b\x0f\x81\x14\xc8\xc1\x8c\x5e\xda\xf2\xfe\xc7\xca\xe8\x19\x35\x63\x38\xf0\xbf\x11\x5a\x17\xb0\x38\xac\xfd\x7c\x96\xba\x62\x62\xca\xbd\x57\x10\xfc\x0e\xfb\x43\xd1\x3d\xf4\x06\x5b\xec\xbf\x1b\x9e\x27\x9c\x03\xec\x9b\xbf\xed\x54\xd9\xa1\x3f\xe0\x6a\x55\xa3\xbd\x05\xc8\x07\x85\x8b\x41\xe1\x8d\xbd\xe1\x3b\x09\x07\xd4\x03\x41\x32\x26\x2d\x9c\x2f\x4d\x2d\x37\x6e\x16\x09\xad\x28\x0d\xe2\x0b\xa7\x09\x84\x4d\xbd\x12\x95\x02\x57\xf1\xb0\x7e\xf8\xcc\x33\x37\xc0\x1a\x70\x26\x93\xfb\x4d\x92\xd0\x47\xe6\x98\xc3\xa6\xdd\x46\xc4\xa9\x2a\x10\xd4\xc7\x80\xe5\x2e\x50\x25\xe0\x9d\x56\x53\x5d\x7e\xeb\x9f\xe7\xf0\x33\xe6\xe9\x26\x0a\x68\xf9\xd5\x4b\x6f\x37\xcc\x06\x96\x56\xe3\xbc\xee\x06\x92\x2b\x34\x96\x81\xa8\xe7\x75\x1c\xde\xcb\xe1\xec\xb6\x63\xfb\xc6\xf7\xc8\x61\xf8\x53\xdc\x31\x0f\x33\xde\xfa\x98\xee\x34\x3a\x68\x63\x2e\xc2\x2c\xaf\xec\xb7\xf3\x21\x2f\x81\xe7\x0b\x71\x84\x3b\x9f\xe8\xc8\x6a\x68\xb5\xc8\x6f\x03\x22\xd3\x48\xa7\x6d\xa7\xf1\xba\x0c\xa3\xcd\x7b\x6f\xd1\x5f\xf8\x92\x92\xb3\xf6\x36\xcd\x08\xcf\x62\x5c\x74\xd5\x10\x2c\xab\xb5\x71\xa3\xdb\xa8\x6a\x1c\x92\xf4\x1c\x72\x03\xb4\x49\x42\xf5\xa2\x46\x25\xac\x37\xd7\x7e\x49\xa5\x7f\x11\x82\x38\x69\x9d\x80\x7c\x25\x0d\x5b\xf4\x6f\x7a\x3c\xec\x57\x79\xa6\xe5\xae\x1a\x6c\xa1\x60\xcf\xf3\x7f\xb3\xb7\x83\x88\xfe\x9c\x03\x0c\x40\xe7\x15\x46\x01\x08\x1a\x51\x7f\xc0\xaa\x18\x02\xcd\x3b\x84\x5b\x94\x6e\xfe\x94\xaa\x8b\x9e\x03\xf6\x8a\x80\xde\xd0\xdf\xbf\xad\x4d\xae\xe4\x0f\xa8\x38\xc1\x33\x84\x1a\xe8\xa3\xce\x0d\x79\xfa\x8a\x2b\x94\x34\xba\xc5\xe1\xda\x6e\x0c\x71\x93\xe8\xde\xa4\x35\xa0\x3a\x85\xf7\x61\x84\xf7\xeb\xe2\xaa\x74\x9b\xe9\x41\x31\x04\xa1\x78\x68\x9b\xa6\xd2\x7e\x94\xfc\xcf\x61\xeb\x3a\xba\x0e\x6a\x5a\x63\xaf\x0c\xa8\xf0\x5a\x35\xcb\x63\x70\x51\x94\xe4\x4d\x92\x93\xde\x39\x29\xb0\xd9\x2b\xe6\xf8\xe6\x27\xc3\x50\xa8\x3f\xc9\x00\x0a\xa9\x5b\x93\x82\x0b\xe9\x79\x5c\x80\xb5\x66\x2c\xd7\xb3\x48\x22\x32\x80\x61\x35\x6d\xc5\x80\x57\x8d\x1a\x35\xb1\x01\x40\xdc\xd2\x48\xe4\x85\x31\x04\xd2\xc5\xb2\xc1\x3f\xf6\x83\xdd\x5c\x30\x79\x4b\xe4\xa7\x68\x58\xaf\x1c\x0d\x9a\xf3\x47\xce\x1d\xcd\x97\x2e\xe4\x9a\xac\x12\xbb\xcd\x89\x9c\x93\x29\x87\x1d\x3e\x7a\x06\x83\xd1\x75\x77\x9a\xfe\x35\xf2\x6a\x2d\x24\x8f\xd7\x80\xea\x85\x1d\xc4\xba\x6d\x21\xf8\xa1\x71\xaa\x6c\xb8\x69\x7d\x9d\x11\x21\x61\x54\x03\x07\xcd\x54\xf9\x31\x77\x5d\x70\xb3\x3d\x3b\x6d\xe1\x09\x1f\xc1\x75\x05\x31\xc0\x8f\xa7\x0f\x7b\xe3\x8a\xa1\x10\xd6\x74\x6b\xb5\x65\xdb\x7b\x47\x0f\x90\x08\x50\xfb\xbf\x1c\x66\x2f\xd6\x13\xe4\xf3\xa5\x68\x95\x49\xe3\x10\x7e\x9b\x0f\x17\xde\xf7\xa5\xbd\x7f\xd7\x59\x6c\x4d\x04\xc7\xf4\x8c\x77\x9f\xc3\x5e\x09\x33\x5e\x1d\xf7\x84\x08\x4e\x55\xd8\x55\x1d\x1f\xf4\x9d\xe5\xb3\x11\xcd\x35\x0f\x34\x7a\x0b\xd2\x86\x3a\x2a\x30\xe6\xea\x18\x3a\xd2\xe3\xee\xde\xbc\x18\xdd\x28\xc6\xa5\x96\xe6\x93\xdc\x33\x89\xf7\xd9\x0b\x71\x3e\x3a\x85\xa6\x25\x16\x30\x5a\x70\x66\x7f\xc1\xfb\x3c\xb1\x0e\x8a\x95\x57\x50\x27\x39\x43\xc5\x68\xe1\x07\x69\xce\xf7\x81\x99\xdf\x44\x50\xdb\xc4\x90\xfe\xf1\xb3\x04\xb0\x52\x22\x1b\x2d\xb9\xc4\x4f\xe0\x03\x45"}, +{{0x6c,0xa1,0xa1,0x48,0x2a,0x07,0xf2,0xa6,0xc5,0x7f,0x04,0x11,0x97,0xb3,0x4a,0x51,0x19,0xe6,0x89,0x03,0xcf,0x6d,0xfb,0x51,0x71,0x1d,0x95,0x50,0x97,0x31,0x63,0xc0,},{0x80,0x34,0xa5,0x5e,0x3b,0x6e,0xd7,0x99,0xf4,0x9e,0x2e,0x70,0x3a,0x81,0xf4,0xac,0x02,0x57,0x3c,0x44,0x5d,0x76,0x5e,0x30,0x69,0xbe,0x42,0xf0,0x9c,0xbd,0x18,0xad,},{0xdd,0x9b,0xdb,0xad,0xd9,0xfd,0xc8,0x1c,0xe2,0x30,0x28,0x8c,0x4a,0x06,0x8d,0xf0,0x7e,0x18,0xb4,0xc7,0xcc,0x51,0xc0,0xca,0x48,0x11,0xdf,0xbd,0x04,0x76,0x5c,0x56,0xbc,0x88,0x32,0x40,0xe4,0x6e,0x3a,0x42,0xc0,0x1d,0x8d,0x24,0x24,0xfb,0xc3,0x32,0xb7,0xc5,0xa1,0x7b,0xce,0xb1,0xf6,0xe8,0xda,0xd0,0xbf,0xe5,0x62,0xca,0xd3,0x02,},"\x08\xfd\x84\x87\x50\x3c\x3f\x32\x96\xb6\xf1\xb6\x4d\x6e\x85\x90\x6f\xd5\x98\x6c\xf9\xc5\xd9\xfa\x8a\x59\xd9\x2f\x44\xe6\x47\x0a\xf3\x4b\xcd\xef\x33\x6f\xfd\xc8\x64\x56\xec\x7a\x7b\x57\x61\xf1\xad\xea\x02\x73\x26\x63\x0e\x68\xab\xc6\xb8\xcd\x5d\xdf\x40\xb6\x41\xa2\x59\xad\x02\x43\x21\xbf\x3e\xf9\x8e\x76\x32\x79\x71\x49\xc4\x92\xd5\x35\x94\x75\x2c\x55\x0d\xfb\xc4\xfa\x6b\xf4\x71\x76\xf4\x23\xa2\x70\x56\x93\x94\x7a\xa9\x0d\x68\xdd\xc8\xef\xb6\xcb\x9d\xbe\xca\xfd\x28\x30\xd0\x4f\xd9\x3b\x1e\x9e\x7c\x12\xb9\x3e\x0d\x0f\x3e\x26\x34\x90\x0f\x25\x86\x0d\xda\xdb\xae\xce\x17\x80\xff\x2d\x3f\x3d\x9f\xb8\x38\xfd\x0d\x5d\x66\xf8\xaf\xb3\x05\xff\x1a\x1a\xed\xca\x2b\x97\x4b\x63\xe4\x3f\x5b\x3c\xc9\xdf\xed\x1b\xcf\x11\x99\x91\x76\xed\x95\x85\xac\x82\x9b\xc6\x79\x4e\xf3\xac\xd8\x72\xe8\xd2\xe9\x26\x08\xb3\x20\xf8\x94\x99\x6a\x56\x2e\x1e\xb1\x77\xe2\x1b\xe5\x7c\x22\xc4\x1e\xc2\x59\xa3\xdf\xf9\xc7\xc9\x49\x1d\xb8\x38\xd7\x6c\xf9\xb0\x38\x31\x11\x59\x8e\x35\x7f\x44\xba\xbe\xbf\x12\x1b\xdb\x24\xee\x9d\x55\x7b\x7d\x5a\xf4\x91\xa0\xa0\x36\x5c\x90\x36\x1f\xe4\xf7\xe3\xd1\x3a\x17\xda\x3a\x39\xfd\x43\xf6\x90\xdf\xb0\xb2\xd8\x60\xca\xb4\x19\xf7\x75\xab\x71\x52\xcd\xc8\xf2\xaf\xdc\x50\xe8\xd5\xda\x5d\xa0\x17\x06\xee\xa2\xa2\xff\xad\x4b\xab\xee\x8b\x03\xda\x33\x6a\x4d\x84\x3d\x9d\x7e\x0a\x93\xf3\x6a\x92\xe6\x61\x0a\x36\x8b\x63\x13\x3f\x05\xa3\xfd\xc5\x5e\x3e\x1a\x44\x0b\x0f\x87\xa5\x33\x64\xc1\xd3\x72\x42\xc5\x7a\x10\x9e\x6d\xf6\x93\x45\xb0\x1c\x21\xc1\x08\x9e\x79\x0a\x66\xf4\xf3\x38\x0d\x3b\x76\xff\xb4\x20\xdf\xe1\xe6\x20\x0e\xac\xe5\x79\x26\x5a\x42\x7f\xbd\x35\x55\x14\xef\x95\x3e\x1a\x6e\x96\x8e\x37\x02\x1b\x3c\x6a\x29\x0d\xcd\x02\x93\xda\x67\x68\xda\xd7\xc6\x63\x11\x63\x30\x51\xc0\xac\xcb\x0b\x91\x65\x46\x4d\xfd\xdf\xde\xd2\x3b\xd1\x3e\xf9\x08\x74\x4f\x9c\x21\x11\xdc\x15\x31\x42\xd2\xf1\x05\x34\xd8\x93\xfe\x0b\x54\x5f\xec\x53\xfd\xb3\xb3\x5b\x51\x83\x98\xb0\x2a\xb2\x17\x91\xfa\x97\x7e\x30\xcf\x4b\x40\x4e\x7a\x29\x9d\x37\x87\x10\x8b\x83\x6a\xa0\xd5\x9c\x11\x4f\x1f\x36\x71\x9a\x7a\xcf\x85\xac\x99\x4d\x9c\xb7\x23\x06\xf2\x58\xf7\x8a\xc0\xa3\xb6\xc0\x53\x43\xe0\xb7\xa9\xaa\x72\x6e\x52\x26\x7e\xdf\x97\xf4\x97\x2f\x76\x64\xf4\x37\x20\xad\x33\xce\x6e\x61\x54\x40\xe3\x65\x37\xcb\xc5\x69\xbd\x6f\xf9\x4f\xfd\xae\xa5\x1e\x06\x02\x9d\xae\x78\xc5\xb9\x15\xc5\x37\xca\xea\x6f\x15\x04\x14\x79\x79\xb8\xaa\xae\x0b\xcd\x96\x18\x43\x7e\xbe\xd0\xb5\x5e\xfa\xec\x32\x0e\x84\xc7\x59\x59\xa3\x7a\x26\x0a\x02\xd4\xef\x1b\xb6\x26\x41\x52\x0f\x1a\x03\xdd\xea\x8c\x4c\x1d\xe8\xd7\xfa\xc5\x8d\xa4\x08\xb0\xab\x47\x57\xa1\x35\xf1\xd0\x75\xc9\xf7\xc9\x9f\xb9\x9d\xb9\x42\x7c\xe9\xb0\xd6\x26\xcb\x1a\xc1\x89\xad\x86\x63\xd7\xa7\x14\xfb\x5c\xd1\x58\x5c\x3b\xf9\x9a\x0a\xa4\x6d\x76\x39\x78\xd0\xb1\x2d\x65\xc4\x38\xbb\xb7\x3f\xea\xa5\x1b\xa2\x6a\x45\x9e\x7b\xea\x25\x43\x94\x66\xc0\x86\x13\xe4\x25\x40\xc8\xc6\xd5\x43\x67\xf2\x21\xfc\xce\x0c\x5e\xb6\xaf\x2f\xaa\x18\x1e\xa2\x15\x21\x80\x9b\xe7\x56\x49\xcf\x8d\xee\x76\x71\xdb\x7f\x94\x8f\x34\x6c\xbd\x03\x02\xbf\x9a\x06\xea\xbc\x72\xe2\xe5\x12\xb3\xdf\x88\x5f\x6d\xaa\x39\x8f\x93\xe3\x6d\xae\x2d\x6a\x04\x47\x81\x21\xf9\x77\x87\xd4\xce\xdf\xf6\xdb\x09\xaa\xf1\x0f\x27\xb1"}, +{{0x27,0x84,0xdf,0x91,0xfe,0xa1,0xb2,0xd2,0x1d,0x71,0x3d,0xe2,0xed,0xc6,0x65,0x24,0x51,0xa0,0xc1,0x59,0x54,0xb8,0x65,0x60,0x62,0xea,0x1d,0xed,0xc2,0x44,0x5b,0x2a,},{0x95,0x56,0xdb,0x53,0x70,0xf8,0xfb,0x3c,0x74,0x78,0xde,0x03,0xd2,0x3d,0xf1,0xcd,0xa9,0x6f,0x27,0x40,0x11,0x8e,0xfd,0xd3,0xd1,0xa9,0xfa,0x4c,0x3b,0xfe,0x88,0x49,},{0x17,0xd1,0x71,0xd9,0x46,0xde,0x35,0x16,0x15,0x84,0x07,0xe1,0x32,0xcc,0x1a,0xce,0xca,0xef,0xd6,0xd0,0x92,0x11,0x2b,0xe6,0x53,0x99,0x95,0x23,0xe2,0x0b,0xd4,0x95,0xf7,0xb7,0xf6,0x00,0xe8,0xd5,0xa6,0x71,0x33,0x0d,0x32,0x69,0x3d,0x60,0x19,0xc0,0x8d,0x2d,0x00,0x3b,0x17,0x6e,0x63,0x19,0xc3,0x53,0x94,0x20,0x0e,0x02,0x7d,0x0e,},"\x2e\x3b\xc5\x4d\xf4\x16\x74\x1d\xbe\x79\x16\xad\x25\xf0\x4e\x48\xd5\xa9\xd7\x7a\x62\x3e\x57\xf9\xcd\x61\xec\xb4\x4f\x09\xf7\x68\x33\xeb\x2a\x3e\x9a\xb7\xaa\x89\xff\x5d\x2d\x56\x0c\x07\x17\x7d\x85\x4d\x7c\x49\xcb\xef\x49\x2b\x7f\x4f\x7e\x56\x7d\xe1\x27\x51\x24\xe1\x6c\xa4\xa7\x98\x01\x62\xfa\x0f\xd1\x62\xa8\xe5\xfd\x6f\x35\x61\x70\x07\x03\x4b\xce\xec\x57\xc8\xfa\xf7\x66\x4f\x4b\x3b\xaf\xfd\xea\x8d\x8f\xc2\xba\x22\xd5\x85\xe9\xe2\xd7\x39\xf5\xff\xc9\x9b\x4e\x0d\xbe\x9c\x36\x86\x54\x7e\xa0\x48\x15\xa5\x9c\x4a\x25\xb5\xf2\x39\x06\x68\xe4\x18\xba\x0f\xcb\xdf\x4c\x4a\x51\xf3\x39\x05\xc7\x4f\xbb\x83\x0a\x19\xf9\xbc\x86\x36\xdb\xaa\xff\x20\x99\x95\x44\x79\x96\xd2\xe5\xb1\xc3\x77\xb4\xcb\x87\xa4\xe1\xef\xe1\x2d\xe3\x4d\x33\x59\x9f\xf3\x97\xb7\x40\x17\xd7\x11\xed\xd3\xe7\x72\x15\x5b\xe5\xa4\x40\x6e\x74\xcb\xe2\x93\x1e\xf5\x13\x59\xaf\xd5\x1b\x5b\x1a\x7b\x3e\xa2\x2e\xe8\xed\xa8\x14\x76\xbc\xc1\x7e\xa7\x68\x0f\x6f\x31\x04\x70\x3b\x9f\x2a\x35\xcf\x26\x27\xeb\x74\x1d\x1a\x30\xaa\x4b\xee\xf6\x57\x9e\xc7\xd0\xb0\x7a\x4e\xf3\x2a\xbc\xb4\xd7\x56\x97\x0f\x70\xa3\x67\x8e\x17\xe6\xe5\x73\x18\x90\xae\xbc\x8c\x92\xb9\x56\xd4\xb3\xb5\xfe\x2a\xdf\xd7\x9b\x21\x1a\x18\x83\xdf\xc8\xc9\xa4\xb1\xb9\xc8\xc1\xbb\x26\x5e\x1f\x3d\xd3\x92\x44\x5e\xa5\x9b\x59\x0a\x01\x95\x51\xf8\x12\x18\x49\xf4\x35\xb3\xac\x1b\x29\x90\x2f\xc8\x39\x25\x54\x05\x6b\x93\x90\x3d\x5f\x26\x3b\x3d\x54\x08\x43\xd6\xaf\xa7\x5a\x2a\xd8\x30\x4b\x76\x90\xde\x99\xa7\x34\xc3\xd1\x30\xb6\x95\x47\xb1\x8b\x09\xe9\x8c\xbf\x25\x27\x30\xe4\xae\xdb\x6d\xc4\xb5\x8b\x22\x43\xfe\x55\xe8\x09\x39\xd3\x7b\x0a\x59\xd7\x22\x26\xd8\xa2\xcc\x51\x53\x09\x5e\x15\x99\x4a\xd6\x21\x95\xaa\x31\x0f\x2a\x64\x26\x67\x6b\x66\x1e\x47\xb9\xfc\xff\xfa\x04\xd6\xdc\x62\x5f\x29\xf4\x4c\x7c\xf6\x20\xb3\x78\xa6\x5d\x23\x83\x44\xb3\x80\x44\x8c\xd1\x19\xcc\x7f\x37\x3f\x62\xcd\xfa\xd6\x41\x49\x90\x63\x53\xf3\xa5\x41\x07\xc5\xdb\xa6\x5e\x3c\xc4\x94\xb0\x53\x1f\x4d\x64\x74\x93\x63\xf2\x30\x73\x8b\x2c\xfe\xed\x98\x35\x20\x22\x7d\xd5\xbc\x43\xbe\x59\xb3\x26\x8e\x28\x32\x16\xf6\xe9\xc7\x5e\x0c\x1c\x71\x27\x2e\x54\xfd\xb2\x9c\x78\x58\xd2\x87\xd1\xef\xa1\x91\x7b\xe3\x7c\x8e\xea\xb5\xe4\x4c\x3a\xd7\xb3\x6e\x8a\xc9\xf6\x69\x91\xeb\x82\xa5\x14\x8e\x59\x72\x03\x4a\xd0\x1c\x62\x61\x5a\x45\x15\x45\x79\xfa\x50\x86\x9e\x7b\xe9\x87\x6b\x56\x56\xea\xad\x2e\x43\x02\x5a\x62\xdd\x13\x4b\x61\x2d\x8f\x4d\x5e\xbc\xf8\x05\x6e\x19\x8b\x71\x34\x38\xe8\xe0\xe3\x47\xca\xfb\xfc\xb8\x9e\x39\x4a\xa3\x30\xd4\xc7\x88\xd4\x9c\x65\x8f\xcf\xc8\x0b\x3e\x00\x78\xf0\xe8\xe1\x9a\xa9\xb8\xfe\x8e\xb0\xba\xb9\x3d\xe7\x85\xd0\x43\xe0\xf4\x75\xae\xb6\x0d\x62\xe3\x8f\xb1\xf8\x38\x4a\x00\xb7\xa9\x02\xda\xee\x13\xd2\x13\x62\x69\xe5\x08\x01\xb8\x0a\x65\xb2\xf9\x13\xcf\xe3\xff\xb3\x65\xd9\xaa\x2f\xd1\x93\x72\xa0\xb0\x22\x56\x95\x44\x4e\x4b\xc5\x48\x71\xd1\x08\xe0\x9c\x7e\x1c\x2b\x42\xdc\xbb\xac\xce\x24\xea\x5b\xd5\xbf\x1f\xcf\x4a\xc6\x97\xa3\xfe\x09\xa5\x46\x77\xb7\xa8\xdc\x8d\x5e\xec\xb8\x6c\xc7\x92\xee\x9b\x6f\xea\x2d\xe1\x6a\x47\x32\x69\xfd\xc6\x5d\xbb\x73\xc2\x58\xc8\x21\x44\x04\x07\xc6\x42\xf7\xd3\xd3\xf5\xc7\x08\xd5\x53\x32\xda\x83\x43\x10\x6c\x19\xb2\x30\xa5\x14\x27\xf3\xb7\x71\x91\x6a\xe3\x68\x8b"}, +{{0x4b,0xb7,0x92,0x36,0xfa,0xda,0x31,0x44,0xb6,0x82,0x96,0x49,0x9b,0xa4,0x4a,0xe5,0x34,0x07,0x4c,0xa9,0x4d,0x4b,0x58,0x1e,0x5e,0xdc,0xff,0xfe,0x13,0xb3,0xad,0x19,},{0x0a,0x83,0x99,0xf1,0xe5,0xa4,0x23,0xdc,0xf7,0xb2,0x5b,0x2f,0xb0,0xac,0x9e,0x1e,0x95,0x48,0x14,0x8b,0xea,0x84,0xd0,0x21,0xe0,0x42,0x87,0x60,0xe0,0x5d,0x58,0xbf,},{0x69,0x8f,0xab,0x68,0x51,0x0d,0xb8,0x12,0x1a,0x46,0x5d,0xb7,0x7e,0x4f,0x8b,0x58,0x6a,0xee,0x89,0x58,0x16,0xe6,0x3b,0xbf,0x0b,0xeb,0x24,0x2d,0xb4,0xe8,0x4c,0x15,0x7f,0x4b,0xe2,0x01,0xae,0x65,0x64,0x51,0x7a,0x87,0x0d,0x17,0xf6,0x0c,0x85,0x83,0x70,0xc0,0x1c,0xca,0x17,0x18,0x9c,0xb4,0x18,0x9e,0x81,0x43,0x91,0xd1,0x50,0x0d,},"\xad\x81\xab\xf6\x93\x7a\x7a\xcd\x7f\x18\x37\xf0\x4d\x3f\x10\xe7\x08\xc6\x1a\x5f\xbe\xde\xee\x4d\xb7\x6e\x15\x98\x57\x03\x84\xe6\xef\xec\xe9\x7c\x92\x5d\x2e\x5c\x34\x88\xca\xb1\x0b\x5b\x52\xb8\xa5\x48\x6e\x99\xd8\xff\xe8\x6c\x19\x81\xa1\xf1\xd5\x32\xdc\xd4\xd4\x89\xe5\x54\x6d\x86\x65\x32\x98\xe7\xa5\xf9\x6e\x81\x44\x55\x2d\xda\x8a\x18\xe7\x5b\x5f\x73\x55\xb1\x35\x41\x62\x11\x06\xe4\x97\xe5\x1a\x56\xd8\x65\x9d\x19\x8f\xe1\x00\x37\xe2\x21\x28\xaf\xc2\x71\x4a\x2c\xb5\xa1\x2c\xc5\xdb\x09\x68\xa3\x43\xef\x91\x8e\x87\x69\xdd\x6a\x3e\x5b\x9e\x32\xaa\xb6\x6c\xb0\x23\x9e\xbe\x4c\x17\xf1\x82\x18\xe2\x52\xeb\xa6\x16\x2e\x97\x70\x49\xeb\xac\x0b\x38\x04\x8b\x3a\xaf\xb7\xd4\xd7\x22\x63\xe9\x21\x28\x99\xa3\xbf\xe0\xa6\x9c\x99\xe2\x2a\xc6\x1c\x5e\x96\x12\x45\x63\x03\xd9\x24\x58\xb5\xc5\x02\x91\x6c\x34\xa8\xee\x5c\xd9\xa5\x82\xa5\x25\x76\xb6\xdc\x9d\x7d\x4c\x64\x2f\x21\x29\x98\xbf\x33\x58\xd4\xa8\xc2\xea\x67\x68\x6e\x55\xd4\x89\xf6\xa7\x6e\x6b\x07\x0e\x6e\x99\x5a\x74\x53\x26\xc9\xaa\x63\x63\x0a\x00\x33\xad\x30\x72\x1a\xa6\x5f\xac\x60\x4a\x6e\x58\xc7\x50\x72\x1a\x56\xca\x67\x60\xc9\x41\x34\xd6\x11\xfa\xb4\xd3\x54\xe4\xf6\x6a\x29\x67\x7b\x1a\x66\x66\x01\xe9\xda\x79\xf2\x13\xf5\x82\x03\x74\x33\xc0\x7f\x94\xd5\xf0\xde\x6a\xa9\xfa\xa0\xb3\x2f\x7b\x02\x3f\xb9\xfc\x13\x5a\x26\xf9\x70\x52\xac\x80\xb3\x9b\x30\x6a\xed\x13\x92\x6c\x28\x54\x19\xa2\x9b\x20\xe2\x37\x0d\x8a\x09\x5b\x32\x25\x8f\xa9\x89\x34\x89\xee\x21\x08\x9c\x75\x2e\xc0\x62\xe1\x20\x35\x9e\x2f\x35\x15\x12\x82\x54\xc8\x09\x8c\xca\x65\xa9\x1a\x02\x2d\xd0\x57\xa2\xc2\xa1\xb6\xb8\x5d\x13\x7c\x3c\x96\x7d\xcb\x70\xaa\x17\xa2\xff\x4b\x37\x67\x8b\x38\x29\x02\xf0\xf9\x31\xee\x74\x3f\xc3\x98\xac\x1b\x8c\x10\x46\x98\x67\x30\x84\x79\xe4\x0d\x7f\x2f\x04\xa4\xb0\x4c\x44\x89\x15\x84\x88\xdd\xb7\xbe\xc5\xa4\x7f\x20\xff\x35\x6d\x99\xa1\xb3\xe9\xd0\xb7\xfe\x9b\x0a\xd9\x49\xf2\x98\x96\x0e\xfa\x4d\x97\x28\xf8\x10\x1c\xf5\x3d\xa3\xbf\xfd\xd9\x52\x4b\xf4\x40\xa5\x8b\x32\x73\x8d\x0b\x62\x93\xe8\x53\xf4\x66\xff\xd4\x2c\x56\x07\xac\x9e\x35\x3b\xa0\x3e\xfb\x57\x8c\xc9\x96\x3d\x8a\xaa\x9d\x2e\x26\x6d\x1d\x2a\xe9\x29\x6f\x30\xc9\xef\x44\xec\x69\x10\x30\xd5\x96\xa4\x01\xb6\xce\xe7\x2a\x54\x0e\xf3\xc4\x2e\xc0\x17\x42\x66\xba\x54\x01\xf3\x54\xad\xc8\xe2\x54\x04\x43\x7e\x88\x8b\x08\x28\x69\x39\xbe\xde\x30\x8a\xcd\x30\x32\x7e\xbf\xf0\x62\x70\x09\x7c\xc2\x94\xf0\xa0\xf3\x9f\x9a\xa3\xc6\x65\x85\xca\x47\xe6\x0c\x4b\x8e\xa3\x60\x89\xeb\x8a\x90\x88\xbb\x18\xb0\x34\x31\x35\xbb\x6a\x45\x6d\x2f\x6a\x3b\xf3\x90\x72\x3e\x78\xb4\x2c\x03\x7c\x2d\xe2\xe1\x43\x2c\xaa\xd3\xa5\x94\x02\x12\x94\xd4\x3f\x5b\x15\xa2\xe8\x19\xdc\x74\x8e\x45\x1d\xe4\x00\x68\xc8\xf0\x32\xf1\x3b\x47\x11\x37\x70\x12\xed\xcd\x4f\x11\xde\xc1\x11\x1b\x12\xeb\x6e\x1b\x00\x63\x38\x18\x70\x6d\x71\x32\xd9\x91\xce\x20\xdf\x3b\x92\x1d\xb2\x18\x5e\xe2\x5b\xb6\xf5\x82\x75\x76\xec\x01\xad\x89\x0f\x79\x79\x3b\xaa\x35\x8c\x2b\xbf\xb6\xfa\xad\x11\xd8\xcb\x0d\x0d\x2d\x2b\x29\x81\xfb\xf4\xe3\x72\x34\x9f\xc6\xa0\x1c\x36\x07\x7b\x59\x32\x5f\x70\x2b\x38\x00\x59\xa6\x5c\xf2\xf5\xea\x98\xd6\xbd\xc8\x15\x20\x53\xb8\x5b\x28\xc8\x1e\x41\x3c\x4c\xac\x7e\x22\x6c\x13\xdb\x32\x67\xd2\x18\x30\xf0\xe5\x43\x11\x02\x91\x70\x05"}, +{{0xaf,0xd7,0x65,0xe6,0xaa,0xc0,0x14,0x6d,0x48,0x11,0xef,0x95,0x97,0xbc,0x3f,0x44,0x76,0x3f,0x03,0x37,0x8b,0x7b,0xe0,0x33,0xd6,0xe6,0x4c,0xa2,0x9d,0xec,0xae,0xf9,},{0x6b,0xb7,0x61,0x23,0xd9,0x25,0x89,0x22,0x68,0x6c,0x53,0xfb,0x69,0x17,0xb9,0xa4,0x59,0xca,0xbd,0x30,0xbe,0x8c,0x43,0x97,0x0d,0x80,0xf5,0x35,0x0c,0x2d,0x98,0xef,},{0x3d,0xc9,0x19,0x4d,0x50,0x81,0x14,0x19,0x04,0x9e,0xaa,0x07,0xb6,0x55,0xb7,0xd4,0x06,0x4b,0xcb,0x0e,0x7f,0xb5,0xf9,0xe5,0x32,0x6b,0x5f,0xc8,0x56,0xfc,0x0a,0xb8,0x70,0x59,0x73,0xae,0x10,0x01,0xdf,0x55,0x37,0x39,0x77,0xdd,0xe2,0xd9,0xb8,0x10,0x79,0x55,0x14,0x14,0xad,0xc7,0x1c,0xc8,0x52,0xd4,0x99,0xb0,0xcf,0x82,0x4f,0x07,},"\x18\x3b\x10\x92\xc7\x90\x4e\x47\xa1\x42\x03\x17\xa2\x5d\x0f\x59\x11\x0a\xa8\x4d\x6b\x34\x19\xad\x45\x68\x65\xc4\x3b\x29\xe9\xd1\xda\xcf\x75\x5d\x9e\x5c\xf9\x4c\x55\x91\xd5\xd9\x12\xd0\x5c\xa9\xa5\x2d\x01\x5d\x6e\x8f\x5d\xc9\x4e\xfd\xce\x0d\x7c\xf5\x65\x12\x03\xb1\x1e\x54\x27\xa9\xf6\x79\x42\x9e\x00\x41\x4a\x48\xea\xb1\x3f\xd8\xe5\x8b\x87\xeb\xa3\x9d\x10\x25\xd6\xa1\x8b\x2c\xdc\xbe\x14\x74\x36\xdb\xf3\x8a\x1c\xe8\x64\x13\xae\x31\x87\x65\xe1\xbb\x1d\xf7\xe2\xb3\xbe\x97\xe9\x04\x08\xb1\x17\x17\xcf\x45\x9b\xcd\x0f\x3c\xac\x58\xb4\xa0\xd3\x5b\xff\xb5\x33\xe2\x0d\xf3\x74\x51\xc1\x14\x01\xce\x1d\xab\x02\x05\x5c\x7e\x08\xc5\xec\x46\x39\x0c\xd6\x17\xa6\xb5\xf2\x2f\x65\x18\x30\xa1\x11\x2a\x06\xed\xe4\xc4\x0a\xb7\x95\x78\x51\xd6\xc6\x6f\x17\x1c\xd1\x62\x41\x59\x09\x00\xb8\x52\xa3\xd0\x19\x95\x7b\xe1\xb7\xbb\x7a\xcb\x89\x23\xf2\xa3\x57\xc3\x26\x44\x56\xcf\xca\x9b\x42\x9d\x71\xfe\xcb\x7e\xda\xe3\x9b\x25\x2b\x4e\xb6\x10\xe8\xc7\x18\x83\x56\x99\x75\x4b\x8d\x41\x24\xb4\x92\x48\x8e\xde\x62\x61\x0c\xce\x44\xb5\x92\x18\x66\x3b\x6c\x96\x46\xa1\x4a\x84\x17\xed\xdb\xb6\xf4\xfb\xe5\xa4\xbb\xbb\x48\x2b\x37\xa4\x45\xe3\xc1\x6b\x65\xa1\x41\xcd\x3e\x12\xa5\xb2\xc0\x48\x1d\x61\x4d\x6d\x20\x84\x79\xb9\xb2\x09\xb8\x28\x85\x4d\xae\x0e\xa1\xed\xed\x50\x65\x55\xfe\x18\xe1\x85\x40\x05\xcf\x00\x1a\x80\x77\x08\x34\x98\xd2\x7f\xad\xf1\x18\x28\x6b\x53\xb8\x97\x4d\x69\xfa\x28\x25\xbe\x8c\xa3\xd6\x03\x6a\x92\xca\x52\xf9\x1d\xde\x6d\x5b\x1f\xfe\x28\x88\xf4\xd6\x07\x79\xfa\xd1\xfb\x41\xd8\xc0\x71\x40\x49\xaf\x68\x1b\x75\x5f\x2d\x42\x04\xee\xcd\x09\xe0\x77\x21\x0a\x48\xa1\x95\xe7\x2c\x80\xe1\x27\xc3\xd4\x87\x50\x95\xc6\x57\x0a\x1f\x78\x09\x59\x07\x52\x8c\xf7\x74\x6f\x31\xd9\x71\x11\xc6\xf4\xcb\x25\xb3\x74\x12\x99\xa7\x57\x48\x22\xd4\x6b\x6e\x79\xed\x23\xc2\xfe\x05\x7b\x3a\xc7\x29\x0b\x46\x0b\x16\x6e\xe9\x0a\x45\x56\x2e\xff\xed\xcc\x6b\xa8\xf4\x79\x5f\x73\x95\x81\x8d\xb5\x6b\x6e\xdd\x59\xca\x2c\xc4\xae\xa1\x84\x1f\xd9\x56\x5b\xec\xd6\xc0\x81\x04\xcd\xee\x26\xba\x9d\xe2\x00\x77\x3d\x09\x1b\xc7\x7a\x57\xc5\x47\xf1\xa6\xba\x0a\x2c\xd7\x17\xab\x32\x56\x1d\x74\x22\xea\x72\x35\xad\xb0\xcb\x36\xbf\x5c\xbd\xf8\x8f\xca\xe0\x66\x30\xa1\x56\x47\xd9\xa3\x57\xb4\xe0\xe5\x02\xd2\x73\xf3\x79\x6a\x51\xe0\xbc\x3f\xed\xbf\x7a\x1e\x64\xaa\xd7\x22\xaa\xc5\xfd\x02\x2f\xa7\x9d\x60\xfc\x70\x73\x25\xf1\x27\xeb\x1f\x03\x86\x87\x95\xcc\xdc\x0b\x4c\xb2\x6f\x20\x23\xd1\x52\x15\x3a\x97\xa2\x60\xbf\xf1\x17\x45\xd2\xe2\xcc\x0b\xf8\x60\xd4\xa6\xe3\x58\xa6\xd8\x17\x6d\x2a\xc1\x78\xa9\xae\x1a\x2d\xc7\x5e\x8b\x49\x04\x08\xff\x7c\xdf\x99\x13\x29\xf3\x3c\xb0\xc0\x5e\x1e\x35\x69\x25\x08\x7e\x0b\x8d\x96\xa5\x23\x51\xd1\xd1\x77\x68\xeb\x13\x4c\xdb\x21\xa1\x54\x6a\xae\xdc\xc6\x87\xdf\xa1\xb2\x2e\x92\xfb\x52\x41\xa8\x36\x77\xa1\x53\x44\x5b\x77\xd5\xe7\x03\x50\x8e\x2a\xbc\x58\x8a\x9f\x42\xe5\xbc\x71\x06\x73\xe4\xdd\x8a\xd7\x03\xfa\xb2\xd7\xdb\x1e\xb8\x42\x26\xc8\x9d\x87\x62\xa7\x09\xe3\xe9\x13\x8a\x1f\xa7\x90\xf2\x92\x9b\xff\x61\xbc\x1e\xa6\xe8\xaa\x1a\xd0\xe3\x88\x7d\x70\xa5\x6d\x4e\x65\x47\xfc\x60\x6a\x50\xd3\xbe\x3b\xd6\xdb\x03\x66\x3e\x00\xca\x9e\x4f\x24\xfe\x8c\xbf\xd7\xd8\xc9\x73\x8d\x63\x67\x55\x4b\x7b\x60\x1f\x74\x19\x0b\x59\x70\xa3\x98"}, +{{0xeb,0x34,0x71,0x45,0xf3,0x39,0xed,0xd8,0x02,0x78,0x5b,0x6f,0xbe,0xcd,0x5c,0xb8,0x08,0x89,0xac,0x7c,0xe4,0xeb,0xad,0x2f,0x67,0x07,0x67,0x65,0xdb,0x93,0x9b,0xca,},{0x99,0x4a,0x45,0x6e,0xad,0xa0,0x30,0x20,0x92,0x1c,0x3d,0x10,0x9c,0x13,0x5e,0xb9,0x61,0xfc,0xd4,0xa0,0xa4,0x00,0xba,0xfd,0x32,0xca,0x06,0x1b,0xbc,0x86,0x25,0x43,},{0xfd,0xbd,0x15,0xe1,0xe6,0x46,0x9d,0xf7,0x20,0xd9,0x55,0x2c,0xb5,0xdd,0x17,0x7b,0xcb,0xd2,0x92,0xfc,0xda,0x83,0xcd,0x93,0xc8,0x8d,0x01,0x14,0x91,0x2d,0xc8,0x70,0x31,0x09,0xba,0xc0,0xd4,0x59,0xac,0xe9,0x95,0x7d,0xf2,0x29,0x3a,0xc1,0x6d,0x40,0xd5,0x14,0x89,0x35,0x56,0x85,0x32,0x99,0xb9,0x7b,0x4f,0xd4,0x13,0x7a,0x3d,0x00,},"\x5b\x8b\x31\xba\xf8\x84\x83\xf0\x95\xb5\xd0\x2e\x17\xd8\xb7\xb4\x6c\xf4\x64\x60\xe6\x4c\x6b\x02\xc5\x6d\x8d\xaf\xe3\x48\x23\x70\x6c\xb5\xc1\x5f\x33\x8a\xd9\xb5\x65\x86\xa9\x49\x71\x1a\xa7\x31\x2c\xc9\x34\x50\xd2\xfb\x9a\xf4\x61\x3f\xc3\x07\x93\xa6\x31\xa5\x5c\x14\xe5\x3c\x0c\xb1\x5f\x06\x11\x63\x99\x39\x8c\x8d\xd6\x18\x76\xc6\x29\x15\xf9\xf9\xe4\xcd\xf8\xf7\xd8\x9a\xde\x12\x9e\x6d\xde\x7d\x63\x67\x1a\x18\x63\xf5\xda\x8f\x42\xea\x64\xc0\x79\xec\xb9\xa2\xc1\xb1\xdd\x9a\xda\xe6\x0e\x96\xb9\xcb\xbc\x76\x24\x53\x2a\xa1\x79\x75\xeb\xa1\x7a\x7a\xf0\x2b\xfb\x21\x9a\xac\x02\xb3\xd4\x30\x6c\xd3\x89\x33\xa8\x50\x60\xcd\x62\xab\x51\x3a\x39\x65\xb0\x91\x50\xa4\x88\xc9\x2b\xf7\xca\xb0\x48\x2e\xee\x56\x46\x3f\x01\x39\x00\x9b\x9f\xbb\x3f\xf4\xec\xae\x21\x1f\x42\x8b\x5b\xfb\x88\x76\xf0\x04\x98\x3b\x90\xc4\x47\x84\x6c\xa4\xb7\x45\x66\xe9\x79\xbc\x30\xc9\x5e\x99\xfa\xab\x69\xa3\xeb\xbf\xe4\xda\x60\x34\xc8\x2d\x63\xe9\xc5\xcc\xaf\x84\x86\xaf\x3b\x5e\x0d\x38\x14\x22\x93\x8b\x0c\x22\xf5\x16\x95\x5b\xdc\x36\x94\x31\x73\xf5\x83\x27\x08\xa3\x3c\xf5\x2d\x88\x75\xd9\x7f\xde\x58\x5b\x49\x17\xe4\xad\xec\xdd\x1e\x79\x85\x67\x62\x03\x3a\xf2\x2f\x25\x4b\x50\xce\x9d\x0c\x70\x0e\x77\xa7\x31\x55\x4f\xa0\x11\x3a\x0c\x66\x66\x83\xf3\xfd\xb1\x9e\x3a\x42\x63\x02\x23\x0b\x63\xe3\x3a\x78\x5e\xf2\x4a\x92\x89\x45\x5b\x3b\x8f\xc6\x18\xff\xfe\xf4\x9c\x2c\x6e\x48\xfd\x4b\xb4\x22\xf5\x04\x14\x9d\xe2\xb4\xc0\x35\x5c\x36\x34\x08\xe6\x6d\xa8\x1c\xbb\x58\x15\x52\xa4\x11\xe3\x64\xfe\x3e\x4c\xa9\x6d\x70\x72\xab\x07\x2e\x75\x68\xc1\x3d\x35\xe4\x1c\x78\x25\xa1\x3a\x5c\x68\xfb\x9f\xb5\x98\x8b\xbb\xfb\x9a\x0b\x51\x16\x57\x64\x66\x0c\xdf\xa2\x41\x1f\x3d\x42\x16\x5d\xa1\x87\xc5\x8e\xde\xf0\x10\x5a\x6d\xb1\x77\x42\x05\x43\xe9\x58\xd5\xd5\xe8\xa3\x71\xf7\x98\x70\x51\xc4\xe1\x78\x6d\x01\x8e\xb3\xd7\x32\xc2\x10\xa8\x61\xac\xaf\x67\x1b\xe9\x5b\xb6\x3f\xbc\x88\xbf\x8b\xe7\xbe\x53\x90\x93\x9c\xd9\xfb\x2a\xcf\x39\x81\xdd\xa6\x1b\x78\x7a\x7b\xbd\x78\x46\x8e\x1d\x32\xca\x46\xaf\x8f\xb3\x2a\x18\x46\x3c\x18\x0f\x52\x4b\xe1\xda\x91\x0d\xa5\x50\x8d\x42\xa0\x05\x17\x41\x22\x7c\x9b\x62\xde\x6d\x19\xb3\x3c\x0b\xd4\x80\x67\xb0\x35\x85\x9a\xd9\xbd\xc2\xdd\xd9\x7b\xef\xca\x31\xe6\x5a\x88\x6c\xfc\x75\x3a\xfc\x4f\xf2\xa7\x21\x2a\x89\xd3\x7c\x04\x6c\xdf\x39\x99\xc0\x51\xff\x13\x96\xbd\x99\xcb\x54\x94\x56\x39\xeb\x64\x62\xdb\x9e\xce\x84\x07\x7b\x0b\x3d\x6b\x3d\xf3\x95\x2d\xd3\x67\x56\xc6\xda\xb2\xab\xc2\x5a\x51\xbf\x32\xc1\xe9\xcd\xd0\xa7\x28\xa7\x98\x5f\x7b\x7e\x0d\x9c\x1a\x6f\x66\xce\x12\x16\x37\x3d\x25\x2d\xaf\x59\x58\xf2\xe8\x97\x3f\xd2\x68\xfa\xd0\xef\xe2\x51\xce\x76\xfe\x47\xbd\x0a\x4d\x0c\x4f\x10\x17\x94\x9d\x4c\x2b\x16\x71\x72\x18\xe1\x49\x15\x4e\xd6\xfb\xe5\x6f\x86\xd8\x2e\x19\xef\x0a\x91\x63\x19\x12\xf2\xa8\xf3\xde\xbb\x00\x76\x6b\x61\x77\x80\x2f\x4b\x2e\x79\xf6\xe7\xbf\xa9\xc6\x2c\xfa\x2f\x75\xcd\xb6\x04\x92\x63\x0a\x85\xc9\xb4\x31\x77\xd2\xdd\x9b\xa8\xd0\x54\x8a\xbe\x24\x92\x3a\xe8\x44\x3e\xea\xdc\xd0\xf5\x8a\x7b\x82\xdf\xf5\x0d\x88\x40\x03\x88\x9c\xb5\x60\xf7\xac\x53\xe7\x10\xa7\x55\x75\x36\x24\x64\xb1\xaa\x43\xd2\xa9\xb2\x2f\x2b\xd2\x16\x2d\x30\x2f\xaa\x74\x52\x34\x4c\xe7\xad\xe9\x98\x36\x87\xb6\xc6\x8e\xca\x47\xdd\xdb\x28\x9b\x15"}, +{{0x32,0x08,0x83,0x7d,0x15,0x54,0xb6,0x51,0x1a,0xdd,0xa0,0x9c,0xba,0xe5,0x65,0xda,0x78,0x43,0x9a,0x47,0x2a,0x5d,0x1b,0x10,0x7c,0xe0,0xa9,0xb1,0xd7,0x75,0x7d,0xb7,},{0x9b,0x52,0x5e,0x35,0x36,0x8a,0x92,0x1e,0x3a,0x2e,0x9a,0x35,0xa4,0xde,0x9e,0xa4,0xc4,0x36,0xca,0xba,0x27,0x12,0x3e,0x5c,0x36,0x9e,0x2a,0x6c,0xf5,0xc9,0x0a,0xb6,},{0x70,0x9d,0x1c,0xa9,0xca,0x2f,0x74,0x2a,0xb9,0xdd,0x0b,0x04,0x93,0x35,0xf5,0x44,0xcf,0xfb,0x2f,0x1a,0x36,0x93,0xd5,0xf5,0x3f,0x8b,0xa0,0x83,0xb9,0xb0,0xd8,0x6e,0x52,0x08,0xfa,0x8e,0x1e,0x81,0x56,0xc9,0xcc,0x22,0x42,0x77,0x5a,0xbb,0x7e,0x15,0xaf,0x30,0x85,0x86,0x8e,0xf4,0x57,0x63,0x4e,0x99,0x26,0xc4,0x04,0xec,0xf3,0x0f,},"\x43\x6a\x3c\x31\x76\x3f\x93\xd4\xd5\x46\xc6\xd1\xec\xfb\x7a\xe4\x59\x16\xaf\x75\x4f\x83\x9d\xcf\xe9\x6d\x6b\x69\xc6\x12\x14\xd0\x16\xfc\x84\x2f\x56\x46\x2a\x3f\x07\xf6\x61\xb2\xe2\x50\x5a\xcf\xaf\x48\x2a\x0b\x0f\x4f\x55\x01\xee\xc4\xb2\xd2\xd7\xd4\x44\x54\x4d\xe0\x00\xb9\x90\xf4\x36\x3d\x3f\x98\x3f\x5d\x4e\x09\x30\x97\x52\xff\x57\x9c\x73\x20\xc9\x15\x95\x1c\xc3\xa1\xe3\x23\x8c\x1b\xa7\xa1\x91\x30\xea\xbf\x6a\x37\xf5\xf0\xbc\x56\xe2\x52\x42\xf7\x52\x06\x1f\x3c\x63\xac\xad\x99\x2a\x75\x01\xe9\x67\xde\xb9\x25\xb3\x0e\xd1\x05\x43\x1e\x58\x21\x02\xfa\x4f\x30\x8c\x2f\x06\x83\x61\x2b\x56\x68\x6d\x52\xda\xed\x69\x43\xa7\x21\x9f\x3b\xee\xa2\xe0\xa2\x92\x42\xe8\x6d\x55\x62\xff\xab\x83\xb5\x6b\x26\x33\x26\x66\x4e\x02\x9e\x96\x1e\x70\x17\xd8\xe8\x9f\x5e\x3e\x1d\x10\xf5\x93\x28\x54\x55\x0c\xe6\xe5\xcd\x76\x97\x1f\xd2\x35\xcf\x9c\x00\x27\xd0\xcf\xed\x33\x15\xc2\xcb\xf1\x85\x08\x62\x4d\x8a\xcf\x04\x7f\x9b\x96\x8f\x90\x7d\x9e\x6f\x4c\xfa\x5e\x45\xc8\x0a\x27\x2c\x2d\xbb\x62\xc5\xd4\x19\x45\x80\xdf\xab\xed\xd8\x2c\xb4\xd7\x64\x92\x34\x4b\xe9\x6c\xcf\x5d\xaa\xf6\x1e\x6b\x2b\x55\xef\xdb\x3f\x65\x21\x0a\x3d\x6e\x1f\x36\x98\x87\xca\x0e\xa0\xd5\x8c\x3d\x14\x6a\xe3\xcf\x9b\x00\x00\x76\x88\x41\x15\xfa\x51\xb5\xfd\x66\xbe\xc0\xcc\xbf\x0d\x29\x20\x19\x6a\x7d\x7a\x38\x44\x5f\xbe\xd2\x2d\xfc\x75\x64\xdc\x56\xf6\x0d\x6e\x29\xe5\x92\x48\x53\x74\xc6\xbd\x1e\x5b\x15\x93\x1b\x69\xca\x6e\xe6\xb3\xaa\x25\x25\xc2\x35\x85\xf0\x92\x9f\x31\xcb\xd1\x1f\xb1\xa5\x33\x02\x16\xb9\x0a\xe5\xa6\x56\xdf\x7a\x07\x4c\xec\x64\xe5\x98\x18\x4f\x50\x3f\xb2\x3c\xc0\x5e\x65\xda\x9a\xe7\xe8\x44\x1f\x40\xe2\xdc\x26\xb8\xb5\x6d\x2c\xb5\x23\xa7\xc6\x35\xdc\x08\x47\xd1\xcd\x49\x8a\xbf\x75\x6f\x5a\x13\xea\x14\xf8\xfa\xb2\xc4\x10\xb1\xa4\x70\xf4\x9a\xa8\xdc\xa4\xac\x02\x56\xb1\x18\x00\xde\x0d\xd0\xec\x42\xb1\x42\xc5\x61\x12\x8d\x35\x7e\x78\x3b\x12\xf6\x1c\x66\x8f\x5e\x6e\x06\xb7\xb4\x8b\x7b\x22\x54\xde\x5b\xdc\x18\x04\xb7\x23\xd5\xfd\x6a\x0f\x4b\xc7\xc5\x9e\x7c\x50\x54\x18\x26\x13\xbb\xd2\xfa\x92\xb4\xc1\xda\x16\xbc\x8c\x97\xe1\x6b\xcb\x0d\xbf\x8c\x92\xb7\x48\x99\xb3\x7f\x31\x87\x57\x14\x0b\x6c\x4f\xd5\x35\xe2\xe1\xe0\x57\x0a\x50\x81\x8c\xf7\x8f\xb9\x88\xe1\xf4\xce\x40\xe7\x6e\x8f\xe3\xd6\x97\xd7\xa4\x58\x50\xf2\x93\xce\x17\x0f\xd8\xab\x07\xcf\x15\x34\xea\x5f\xfa\xd3\x4f\x6f\xcf\xa4\x2d\x0d\x21\xa9\x1d\xfb\xfe\x05\x97\xc7\x3f\xd9\xb9\x76\x76\x14\xeb\xdf\xd0\x2c\x3a\xc0\xc4\x9a\xd1\x0c\x94\xbe\x59\x69\xee\x08\x08\xc0\xa3\x0b\x2a\x1e\xaa\x90\xea\x43\xb8\x57\x5c\x30\x56\xf4\x23\xcd\x4b\x6f\x34\xae\x51\xc2\x22\x37\x65\xa9\xea\x21\xf6\x45\x73\xc1\xa1\x39\x61\x32\x12\x46\xe3\xb5\x34\x9e\xe0\x48\xfb\x62\xd5\xfb\x61\xb1\x71\x43\x91\x18\x25\x62\xb9\x15\x98\x36\x0e\x5f\x9b\xf4\xac\x80\xdb\x24\x64\x32\xaf\xb3\xa4\x3d\x34\x96\x50\xde\x03\xd3\x43\xc2\xe9\x7a\x8e\xef\xd1\xbf\x30\xc1\x0c\x25\x86\x7f\x53\x26\x6b\xd1\xf0\xdc\x14\xae\x1a\x6b\xe9\xef\xde\xcf\xf6\x7e\x7d\x29\x2c\x6c\xdf\xc9\x0d\x80\xb8\x86\x66\x8f\x04\xc2\xa0\xf5\xad\x7f\xa1\x7c\x17\x8b\x6e\x9b\x45\xa1\x1f\x4d\xdf\xe2\xd6\x69\x60\xa3\xf7\x51\x35\xad\x5e\xd1\x54\xe5\x13\xe1\xa5\xd1\x38\xe7\x37\x1e\x84\xd7\xc9\x24\x53\xe6\xc6\x2d\xc5\x9b\x8e\x1f\xa9\x3d\x77\x3a\x25\x40\xd9\x1c\x25\x7c"}, +{{0x4e,0xc6,0x82,0x9b,0x43,0x99,0x70,0x56,0xd9,0x96,0x85,0x38,0x9b,0xd5,0x3c,0x52,0x8d,0xe7,0xe5,0xff,0x27,0x15,0xd6,0x5c,0x95,0x66,0x19,0x82,0x6e,0x3f,0xb5,0xb5,},{0x7d,0x92,0x2d,0x57,0xfd,0xb1,0x27,0x92,0x87,0x9a,0xec,0x4e,0x8c,0x65,0x14,0x63,0xec,0xe0,0x64,0x49,0x2c,0x72,0x17,0x53,0xd2,0x2e,0x11,0x55,0x09,0xfe,0xd7,0x06,},{0x15,0x9c,0xa4,0x04,0xf7,0xf7,0x41,0x17,0xc5,0x16,0x3c,0xf4,0x04,0x11,0x09,0x49,0xeb,0x57,0xae,0x2d,0x76,0x62,0xb1,0xff,0x41,0x78,0xcc,0x67,0x56,0xe9,0x0a,0xda,0xea,0xb7,0x1b,0x06,0x4c,0xe1,0xdf,0xf4,0x57,0xb2,0xdb,0xa7,0xe2,0xdc,0x13,0xc2,0x17,0xbc,0xae,0x8a,0x61,0xfc,0xf8,0xce,0x14,0x87,0xa6,0x49,0xc2,0x57,0xff,0x07,},"\xed\x26\xb4\x13\x0d\x4e\xbf\x3f\x38\x61\x49\x1a\xa3\xdd\x96\xa4\xeb\x69\x75\x21\x73\xfa\x6c\x84\xca\x65\xdf\xc9\x91\xc7\xfe\x44\xe0\x2b\xd6\x16\x50\x25\x2a\x1d\x23\x78\x66\x82\xec\x38\xc1\xfe\xe8\x2c\xc3\x50\xdb\x7c\x3c\x39\x49\xa1\xc9\x35\xff\xeb\xd7\xba\xa2\x4f\x35\xa3\x93\xfb\xd2\x7e\x7c\x34\xc2\xf9\xff\xda\x60\xa1\x8d\xf6\x6c\x3e\x46\x5d\x90\xed\x48\xfb\xba\xd3\xfa\x79\x47\xde\xe7\xe6\x59\xa3\xee\xad\xb8\x87\xf0\x96\x3f\x6b\xdd\x76\xc3\x6c\x11\xae\x46\xd0\x88\xee\x50\xbc\xa8\x18\x7a\x0a\x88\x32\xdb\x79\x84\xb7\xe2\x7c\xbe\x6a\xbf\x12\xd2\xc9\x4f\x33\x7e\xc7\x8c\xb3\x8b\x26\x24\x1b\xd1\xa3\xd2\xf5\xfa\x44\x07\xfd\xd8\x02\x27\xd2\xb1\x70\x14\x4b\x41\x59\x78\xe3\x72\x01\xd0\xfc\xf4\x31\x74\xb9\xd7\xb2\x11\x5d\x5e\xb8\xbc\xec\x27\x6a\x77\x5a\xea\x93\xf2\x34\x0d\x44\x25\xd3\x4d\x20\x47\x49\x4d\x91\x7e\x0d\xbe\x37\x85\x7e\x6c\x99\x85\x9b\x71\xc9\x14\xaa\xd5\xe5\x4f\x7b\x2b\x03\x3e\x59\x4e\x27\x2c\xc5\xcf\xe9\x19\xf8\x88\xe5\x5c\xb6\x15\x7a\xff\xcf\x35\x72\x46\xd0\x0b\x53\x2c\xc4\x71\xb9\x2e\xae\x0e\xf7\xf1\xe9\x15\x94\x4c\x65\x27\x93\x15\x72\x98\x53\xda\x57\x2c\x80\x9a\xa0\x9d\x40\x36\x5f\x90\x87\x5a\x50\xd3\x1c\xa3\x90\x0d\xa7\x70\x47\xc9\x57\xc8\xf8\xbf\x20\xec\x86\xbd\x56\xf9\xa9\x54\xd9\x98\x8e\x20\x6b\x44\x4c\xa5\xa4\x43\x45\x21\xbf\xc9\xc5\xf3\xa8\xa0\x61\x47\xeb\x07\xd1\x1d\xfe\x11\x71\xec\x31\xff\x55\x77\x15\x88\xb3\x33\xee\xe6\x21\x5d\x21\x6c\x47\xa8\x56\x6f\xbb\x2b\x18\x97\x46\x46\xac\x5a\x92\xc6\x99\xd7\x75\x84\xc0\xde\xfe\xfd\x2d\xfa\x58\xfc\xa2\x71\x99\xe4\x1e\xc5\x8a\x24\x63\x20\xb3\x5f\xaa\xb7\x5b\x97\x95\x19\x24\x22\x6d\xa4\xab\x28\xf0\x1b\x47\x07\x8e\x71\x2e\x4f\xd9\xf7\x7b\x25\x1c\x96\x67\x85\x8c\x28\xe3\x2e\xf1\xcd\x01\xfc\xbe\x43\x5c\x54\x2d\xba\xd0\xa8\x4a\x13\xcd\xbb\x57\x75\xe6\x2d\x81\x1d\xc6\x90\xd9\x55\x5c\x37\xf1\x5f\x91\x76\x7a\x56\x13\x57\xdf\x10\x6e\xef\xe0\x56\xe7\x36\x06\x70\x65\x0f\xb8\x18\xfc\x6a\xdc\x59\x97\x3e\x9a\xd5\xcd\xcd\x80\x98\x07\xab\x56\x39\x7f\x3c\x13\x94\x87\x32\xd9\x8d\x67\x6f\x4a\x44\x70\xa9\x5d\x8b\x51\x82\x37\xe2\x26\xf0\xcc\x5f\x47\x65\x16\x4a\x5c\x3e\xf0\x50\x71\x4b\xe0\x2a\x12\x6b\xe8\xf6\x65\x46\x48\x15\x81\xb9\xe9\x4a\x26\xaa\xd2\x4c\x69\x3b\x7f\xdb\xc1\x8a\xcd\x3e\xd7\xcf\xc4\x7d\x8a\xb2\x67\x45\xd7\x8e\x70\x1d\x0c\xf0\x5d\xd8\x44\xb5\xb3\x45\xa2\x9d\xab\x68\x4c\xbc\x50\x92\xba\x02\x2e\x3c\x58\x2d\xfc\x04\x4c\x31\x00\xad\x02\x75\x66\x97\xa8\x49\x82\x29\x15\xa1\x6e\x2a\x2b\x81\x0e\x68\x15\xf5\x44\x21\xd2\xf3\xa6\xff\xf5\x88\xc0\xd9\x01\x3c\x76\xf3\x3e\x09\xbe\xae\xef\x60\xd8\x77\x42\x30\xe8\xce\x71\x31\x28\x9a\xef\x2a\x40\x68\x6c\x81\x9f\xb2\x04\x0b\x06\x12\x4d\x3d\x9a\xa4\x19\xd5\x67\x88\xf1\x7f\xa7\xed\x9b\x9b\x57\xce\xaa\xd1\x33\x7a\x01\x01\xbe\xa0\x44\x0c\xff\x74\x5d\xdd\x97\x22\x05\x5d\x1f\x9b\xcf\xb0\x09\xce\x2c\x2f\x41\xa9\xe7\xe8\x68\x06\xb8\x72\xcd\xc2\x05\x9b\xc8\xec\x68\xf5\xee\x56\xc4\xba\xcf\x4b\xbd\x30\xea\x4c\x71\x55\x86\x4d\x60\x0c\x0e\x2e\xee\x73\xb3\x19\xbd\xa4\x37\x2e\x9c\x60\x3c\x77\x2c\x25\x89\x0c\x76\x10\x48\x99\x89\x47\x5d\x37\xa7\x7a\x45\x74\xa2\xba\x55\xbf\xd9\xc9\xcf\xd1\x46\xfb\x97\xe6\x16\x5d\xcc\x19\x55\x9f\x4f\x85\xdf\xca\x2f\x97\xf3\x70\x2e\xd8\xfa\x6b\x3c\x2a\x97\x41\x97\x4a\xa0\x7a\xb6"}, +{{0xb1,0x50,0xa7,0x89,0x29,0xed,0x1e,0xb9,0x32,0x69,0x21,0x3e,0x1e,0xbc,0x22,0xe2,0xe4,0x0a,0x60,0x1b,0xdb,0x00,0x54,0x99,0xb7,0xbe,0xb0,0x58,0x91,0x7c,0x53,0x40,},{0x28,0x86,0x6b,0x6d,0x1c,0x39,0x3c,0xb0,0x8e,0x46,0x4c,0xf5,0x57,0x14,0x40,0xa6,0x49,0xe5,0x06,0x42,0x38,0x0d,0xdf,0x4f,0xfb,0x7a,0xd1,0x50,0x48,0x5c,0x10,0x8e,},{0x27,0x6d,0xd0,0x96,0x2e,0x6e,0xe6,0x4f,0x05,0x92,0x44,0x1a,0x8a,0xf0,0xe5,0xef,0x8f,0x93,0xbf,0x0b,0xae,0xba,0x20,0x50,0x4b,0x9d,0xb4,0xf9,0x5a,0x00,0xb9,0x39,0xea,0x38,0xde,0xf1,0xc7,0x97,0x86,0x28,0x98,0xca,0xbe,0x9d,0xc4,0x64,0x4f,0x0e,0x67,0x7e,0x87,0xc0,0xa3,0x3b,0x87,0xb6,0xa4,0xd2,0x2a,0x80,0x7d,0x0e,0x1e,0x02,},"\x1b\xf5\x5d\x27\xf9\xdd\xe6\xc4\xf1\xc0\xdd\xd3\x60\xa2\x5d\x94\x93\xc0\xff\xdc\xa7\x4a\x7e\xd5\xe5\xa5\x14\xe9\x55\x15\xcd\xa4\xaa\xd8\xf4\x5c\xd6\xed\x79\x01\xf8\xf2\x24\xa6\x3b\x38\x12\x1c\xbe\xac\x2f\x56\xda\xe2\x10\xdd\x05\x37\x50\xcb\x20\x75\x14\xa8\x89\x1e\x24\x5a\x5d\x07\xe7\xde\x78\xa2\xe3\x81\x44\x63\xf1\x48\xd2\xac\xb7\xdc\x71\xf9\x95\xc9\x29\x9a\xd0\xd6\x26\x6c\xfe\xfc\x94\x26\x96\x57\xfd\x47\xcf\x53\x12\xb9\x2a\xf2\x75\x06\x51\xc4\x79\x63\x6c\x9d\x36\xae\xf0\x8f\x7d\x11\x95\xe7\xfa\x1b\xa3\xab\xb5\xdc\xb9\x01\x36\xb0\xfb\x9a\x37\x66\x8b\x87\xa2\xdb\x88\xd1\xe2\xb6\x44\x0d\x3e\x6e\x60\x1e\x6d\x4b\xc1\x0c\xf1\xcb\xdf\x1d\x61\x69\xc0\xdc\x2c\x4a\xec\xde\xb6\xcd\xd4\x56\x7d\x42\x50\xb2\xaf\xa7\x15\xb1\x66\xc9\x46\x7f\x90\x7d\x3f\xa5\xa6\xda\xf2\x00\xb3\x09\xc1\x09\x37\x68\x30\x49\x9c\xaf\x31\x49\x00\x1c\xf3\x33\x94\x48\xca\x3d\x76\x52\x25\xd6\xb3\xc1\xcd\x26\x7c\xba\x93\x6e\x7a\xa4\x83\x25\x39\x46\x6f\xd2\x0c\xbb\x38\x32\x3c\xbb\x22\x28\xa2\x71\xf2\xd2\x82\x56\x1c\x73\xed\x79\xa1\xad\x04\x69\x8e\x27\xef\xe3\x93\x23\x5f\x34\x56\xc2\x95\x40\x7d\xa0\x96\x0f\x00\x34\xd8\xde\xef\xd1\xc1\x85\x73\x6f\xd3\xea\xf1\xf9\xa1\xe3\x2f\x09\x17\x4c\x1f\xe1\x27\x20\xb7\xc9\x6f\xeb\xdb\x33\xe0\x1b\x1b\x6a\x1c\x63\x71\x50\x19\x4b\xe4\xff\xab\x15\x9e\x45\xb2\x45\x85\x57\x68\x46\xbb\x64\x27\x4e\xca\x7b\x39\xa3\xed\x93\x57\xde\x7b\x08\x42\x13\x02\x4a\x9e\x85\x89\x26\x36\x00\xa2\x86\x7c\x2a\x7c\xf8\xb9\x90\x76\xa1\x2a\x07\xbd\x7d\xf8\xd5\x27\x7b\xb0\x4a\xd7\x2e\x63\x9b\x77\xea\xca\x1e\xc5\x8e\xf9\x63\x7e\x9a\x23\x76\xba\x87\x8a\x45\x72\x35\xa0\x6f\x78\xfd\xf0\xe0\xd9\x25\xcb\x2f\xd2\xa3\x8c\x77\x18\x8f\x60\x37\x2e\xf6\x00\x97\x92\x42\x43\x99\xc9\xb6\x79\x28\xda\x2e\x3b\xa9\x1c\xbd\xe4\x07\xe7\xe8\x76\xba\x98\x13\x9e\xd2\x2c\xa3\xb9\x83\xbe\xde\x00\x00\x52\x87\x96\x44\x8e\x4a\x10\x55\xac\xb2\xde\xaa\x56\xbc\x30\x82\x54\xc5\xbd\x49\x8c\x27\x5e\xce\xdc\x13\x57\xef\xe1\xfd\xa0\x1d\x34\xd9\x16\xdd\x4d\x86\x47\xe5\x77\x19\x95\xa6\x53\xe0\xf8\xa5\x28\x4c\xc7\xbf\x73\x15\x7b\x33\x49\xd5\x9e\x6f\x92\x0c\xad\x6c\xdd\x17\x19\xf0\x38\x02\x5c\x43\x00\xe0\x21\x0c\xe2\x49\xfa\xf3\xc8\x2d\xe1\xfd\x1c\xda\xbe\x61\xc1\x4e\xcb\x1d\xf0\x0c\x5c\x46\x6a\xa6\xa0\x12\xa9\xc1\x0d\xcf\xe5\x9b\x7e\x9d\x3b\x15\x5d\xab\x6c\x7b\x7c\x16\x08\xc1\xed\xd5\x1d\xbd\xad\xf6\xba\x58\x76\xb5\xe6\x0f\xdf\x7f\x19\xe6\xef\x71\x2c\xd1\xa7\xdd\x3a\x06\x2a\x65\x74\xa7\x43\x6b\x31\x9e\xfb\x94\x4e\x42\x23\xf5\x42\xb2\x50\x2c\x1b\xa9\x76\xbe\x91\xe0\x5b\x0f\x85\xa0\x9f\xd7\x93\xbe\xca\x88\x33\x75\xfb\x67\xcd\x13\x3f\x52\x84\xd8\x99\x84\xff\x3c\xaf\xa7\xe1\x1a\x9d\x85\xe7\x89\x32\x32\xa5\x24\xec\x54\xb2\x0f\x97\x5d\x3c\x0a\x11\x43\xa0\xef\x41\x17\x6b\x70\x51\xea\x91\xd4\x0c\x5f\x44\xfd\x9e\x10\x05\x58\xbf\x12\x12\xa7\xb8\x91\xe6\x8b\x55\xca\x61\xf4\xbe\x94\x52\x66\xd9\xa1\x00\x7a\x14\xaa\xeb\x68\xc4\x8e\x25\x7f\x0f\x46\x31\x0a\xd1\x64\x81\x46\x7e\xc1\x77\x35\x35\xd5\xfc\x08\x49\x15\xf5\xd0\x04\xba\x0d\xc7\x59\x1d\x21\x23\xc6\x22\x07\x90\x9d\x84\xf2\xb3\x82\xf5\xef\x12\x75\x9a\x95\xcd\x3f\x51\x89\x80\x6e\x27\x39\x60\xae\xe1\x62\xc0\x0f\x73\xe7\xfa\x59\x36\x39\x57\x65\x4b\xb1\x91\x6b\x57\x09\xbb\x0a\x9d\x04\x05\x14\xae\x52\x84\x95\x1e\x6b"}, +{{0x9f,0xc7,0xc4,0x9c,0xb8,0xc4,0xf0,0x97,0x2d,0x6e,0xd9,0x70,0xae,0x2c,0x6a,0xc3,0x37,0xe6,0x75,0x42,0x5c,0xc8,0xdc,0xe7,0x30,0xfc,0x41,0x44,0x43,0x02,0x93,0x5d,},{0x47,0x82,0x52,0x0b,0x06,0xf9,0x33,0x44,0xaa,0x76,0x67,0x80,0xe5,0x44,0x01,0x36,0x3d,0xfd,0x7d,0x96,0x7c,0xc3,0xbf,0x06,0x48,0x8a,0xf9,0x09,0x20,0xa3,0x0f,0x85,},{0x5c,0x78,0x3a,0x86,0x0a,0xa6,0x68,0x18,0x4d,0xd2,0x2c,0x4f,0x9a,0x54,0x6b,0x5e,0xc9,0x6e,0xba,0xd2,0xe4,0xaf,0x00,0xf9,0x68,0xc6,0x88,0x67,0x13,0x54,0xe0,0xcc,0x9b,0x57,0x2c,0x73,0xbc,0x6f,0x19,0x93,0x7a,0x05,0xf1,0xba,0xf3,0x43,0x47,0x63,0x96,0x5c,0x96,0xe1,0x03,0x40,0x7f,0x0e,0xb6,0x42,0xc5,0x64,0x41,0x54,0x29,0x0b,},"\x82\xbc\x2c\x70\x0d\xb2\x22\xa4\xac\x91\x4a\xa2\xbe\x8f\xa2\x8e\x42\x20\x67\xf9\x4f\x33\x44\xf5\x36\x2b\xeb\xaa\xbe\xd7\x61\x2b\x0e\x46\x4a\x73\xa6\xc4\x56\x90\x35\x64\xb1\x53\x93\x48\x51\x40\xdd\x0f\x3a\xff\x90\xaa\x6e\x16\x61\xdd\xf6\x82\x85\x0d\x04\x90\xaf\xc3\xd7\x35\xde\xa0\x5b\xa4\x7c\x85\xd9\x7e\x83\x35\x33\x51\x4c\x19\x8b\x4c\xf6\xe6\x6d\x36\x0e\xe5\xbf\x00\xe1\x4a\x3a\xab\x1a\xd0\xe7\xb8\xab\x2a\xac\xc9\x64\xd4\x28\x30\xc7\x84\x53\xdf\x19\x55\xbb\xed\x1c\xd6\x8a\xda\x3d\xb0\xec\xdb\x60\x1a\xd7\x66\x7d\x5c\x5e\x2f\xd4\x9e\x36\xf7\x32\x8e\xaa\x33\x7d\xbd\x6f\xf7\x0e\x78\x98\xa3\xf9\x8c\x15\x9d\x04\x5a\x24\x27\xad\xe5\x33\x3c\x88\xfc\x4a\xfd\x38\x19\xdc\x82\xf4\xda\xa3\xc5\x23\xcb\x57\xe3\x5a\x2a\x5a\x72\x5d\x63\xd4\x02\xba\xef\x51\xe5\x1f\x1e\xf4\xf8\xf9\xa5\x95\xc9\x37\x9c\x9a\xba\x87\x3f\xb4\xe7\x65\xa9\x31\xda\x09\x14\x8a\xba\x6e\xc5\xb4\x48\x59\xb0\xe8\x1f\xf9\xfc\x22\x95\x98\xac\x9f\xbd\xb0\xbd\xbd\xdb\x56\x92\xa5\x22\x22\xdf\x52\xea\x38\x7b\xbb\xf3\x6a\xd6\x4d\x19\x46\xbd\x28\x2e\x32\x3f\xf4\x82\x2a\xd9\xda\x89\x7f\xf7\x3f\x01\xb3\x90\xcf\xe2\xe6\x4d\xe4\x92\xd5\x5d\xe7\x7f\x5d\x7d\x00\x60\xa6\x87\x2a\x01\x83\xcc\xba\x61\x0f\x53\x27\x4c\xcb\x29\xce\x6d\xce\x6a\x03\x6c\x53\x17\xa1\xed\x2a\x7c\x10\x68\xc1\xb2\x46\xfc\x1d\x58\x81\xd0\x0d\xe0\x6e\xb4\x01\xcf\xf9\x5e\x6b\x69\x14\x86\x99\xdb\x13\xe9\x4b\xb5\xb2\x80\x21\x2d\xff\x54\xc7\x0e\x56\xde\x23\x5a\x5f\x14\x00\xb5\xbe\xa5\x67\x72\xd0\x60\x17\x0f\x1d\x06\x57\x32\x15\x61\xe4\xb4\x91\x07\xeb\x96\xd9\xb3\xbc\x5a\xdf\x45\x1c\x2a\x52\x4e\xba\x4d\xb0\x03\xb7\x7b\x63\x2a\x5d\x89\x82\x7a\x62\x24\xcc\x79\x8e\x09\x6b\xa2\x7f\xb3\x3b\xf6\x1e\x3b\x8e\xaf\x18\xd0\x01\xae\x8e\xb5\x2f\x85\xc9\x0d\x9e\x12\x54\x48\x03\xe6\x7f\xf0\x20\x47\xe0\xd2\x3c\x22\xe7\xf8\xb9\x80\xc0\x1c\x3d\x48\x24\xb2\xa9\xa1\x4a\x2e\x8f\x67\x2a\x7b\x0c\xe0\x3b\xdb\xb3\xbd\x56\xd7\x54\xa0\x96\x4d\xb0\x1c\xa8\x99\xd4\x88\x00\x15\x08\x65\x7b\x7b\x02\x2c\xcf\x04\x2c\x38\xfc\x19\x49\xd0\xe0\x0a\xf4\xd3\x01\xd4\xf0\x0c\x3d\xea\x20\xe3\x08\xa0\xf9\xdc\xac\xb4\x32\x22\xb3\x82\x41\x44\xaf\x77\xbe\x18\xa5\x04\xaa\x8d\x26\x8b\x8a\x56\x00\x72\x5e\x7c\xc5\xf3\xa2\xe6\x25\x6a\x80\x74\xd1\xae\xbc\xa1\x23\xea\x53\xa0\x76\x7a\x92\xe1\x78\x3a\x49\x83\xc5\xef\x3d\x7d\xd7\xf0\x2a\xa9\xd1\xf4\xf9\xaa\xc6\xce\x25\x45\x93\xf0\x87\x92\x01\x4f\xb8\x67\xea\xf8\x79\xb8\x8a\x4e\xfb\x18\xe8\x9b\xa1\x10\x06\xad\x09\xd8\x54\x31\xcc\x26\x57\x5b\x53\x8d\x8e\x78\x90\x64\x6c\x59\x88\x64\x7c\xc1\x05\xd5\x82\x90\x7a\xe6\x25\xe0\x9c\xd0\x89\xf4\x72\x49\xe8\x18\x14\xda\x14\x04\x4c\x70\x14\xe8\x0e\x7a\x8e\x61\x9c\x7b\x73\x5f\x70\x16\x16\xb6\xa3\xc6\xf4\x92\xcd\xc6\xed\x46\x3e\x71\xa3\xd2\x22\x91\x48\x2d\x90\xa1\xde\x6f\x09\x7c\x4a\xe2\x54\x87\x61\x84\xc5\x62\xb1\x65\x75\xb9\xd0\xd1\x93\x13\xed\x98\x86\x4f\x49\xfe\x2e\x1d\x07\x4a\x21\x21\x1b\x2b\x2a\x6d\x27\xdd\xb2\x86\x11\x52\x0d\x5f\x71\x23\x05\x8f\xd0\x07\xbb\x01\x00\x1d\xef\x07\xb7\x92\xbb\x05\xbb\x74\x1c\x12\x9c\x6a\x36\x37\x6c\x38\x53\xb8\xbb\x4f\x66\xb5\x76\x0c\x8e\xb4\xec\xc7\x30\x6b\xa3\xa9\x0c\x70\xda\x47\xc9\x65\xf6\xdc\xcb\xdb\x61\xa7\xfd\xa1\x8e\xe9\x67\xcf\x8c\x5f\x05\x03\x11\x09\x2d\x0f\xde\xea\xed\xd1\x26\x5d\xef\xdd\x66\x0a\xbe\x70"}, +{{0x08,0xbf,0x05,0x9b,0x4d,0xa9,0xaa,0x7f,0xfc,0x70,0x2f,0x5b,0x23,0x04,0xc4,0xf9,0x6c,0xa4,0x9b,0x7d,0xab,0xb6,0xaf,0xb4,0x1d,0xc9,0x1c,0x0f,0x00,0xc6,0x5b,0x78,},{0xa6,0x28,0x9b,0xa2,0x8e,0x80,0xe8,0xd1,0xa3,0x19,0x22,0x3e,0x41,0x65,0xdc,0x0b,0xce,0x73,0x52,0xaa,0xf2,0x42,0xf7,0x0c,0xc9,0x68,0xd2,0x1d,0x77,0x75,0x28,0x32,},{0xe2,0x47,0x65,0x86,0x01,0x37,0x68,0x9a,0xad,0x50,0xeb,0xee,0xfc,0x8d,0x6d,0xb8,0xe9,0x36,0xa4,0xcb,0xa6,0x2c,0xe8,0x7a,0x7f,0x58,0x02,0x09,0x38,0x4a,0x9d,0x7e,0xec,0x90,0x70,0x90,0x5f,0x60,0xad,0x63,0xa7,0xbe,0xfd,0x7c,0x70,0xf0,0xae,0x7c,0x81,0x09,0x16,0x9a,0xee,0x4e,0x51,0x8f,0xce,0xbf,0xac,0xa7,0x23,0xc5,0xb2,0x07,},"\xbd\x4f\xb2\x8a\x1d\xd0\x8b\x07\xba\x66\xe1\x7f\x0c\x4f\x21\x85\x3f\xef\xef\x1c\x9d\x20\xba\x79\x77\xf1\x54\x64\x1e\xa1\xa1\x8b\xec\xf6\xbb\xb8\x03\x88\x88\x62\x94\xe0\x75\x6a\x3c\x50\x8f\xfd\xfe\x90\xb5\x1e\x13\x56\xd1\x12\xd8\xcd\xe5\xee\x2c\xc6\x33\x2e\x61\xd1\x69\xcc\xc8\xcc\x93\x49\x94\xf1\xbb\x56\x0f\xa4\x66\x0c\x0b\x0f\xd4\xe8\x14\x9a\x22\x5e\xd4\x88\x3e\x68\xfb\xb6\x9d\xa7\xaf\x8a\x52\x4b\x17\x14\x1c\xcb\x76\xb5\x0c\xd8\xe1\xb6\x7d\x3c\xe0\x37\xde\xd7\xdf\xa5\x9b\xc7\xc2\x67\x42\x26\xec\x7e\x07\xb7\x8e\xa3\xf7\x82\xfd\xa3\xe5\xf1\xe9\xca\xea\xb6\x08\xca\x38\x7c\x30\x46\x54\xf8\x01\xd0\x0e\x10\xa7\xc2\x9f\x4b\x0d\xa3\xe5\xf8\x95\x13\xa9\x80\x37\x71\x9a\x1a\xef\x4c\x25\x06\xc1\x77\xaf\x54\x51\xa0\x07\x57\xa5\x9f\x16\x22\x9c\x4f\x44\x14\xdf\x51\x58\x0d\x48\x21\x0d\xab\xc9\x37\x73\x70\xb6\x06\x8a\x88\xe8\x1d\x3a\xd1\xbe\xd4\x98\x51\x55\xc3\x60\x0f\xf4\x87\x68\xb9\x03\x02\x2f\xe0\x2a\xe4\x80\xf2\xe6\x32\x9f\x0b\xcc\x91\xd7\x5f\x5c\x6a\x09\xfd\xf7\x7b\xde\x90\x49\x9f\x3c\xa3\x95\xcb\x20\x06\x2a\x09\x84\xad\x6a\x01\x41\xfd\x01\xc2\xd5\x4d\xfb\xb1\xee\x58\x46\x10\x64\x07\x73\x43\x9a\x16\x58\xd2\xc9\xf8\x62\xf1\x83\xbf\xef\xb0\x33\xa3\xbe\x27\x18\x12\xf1\x3c\x78\x70\x46\x57\xe7\xfb\x4f\x85\x01\x75\xfc\xd6\x3d\x3e\x44\x05\xd1\x92\x24\x2c\x21\xf2\x7c\x51\x47\x7f\x32\x11\xa9\xce\x24\x8e\x89\x2b\x42\xfb\x6d\x85\x82\x0f\x41\xb8\x97\x83\x6f\x20\xf8\x5a\x13\x11\x53\x4b\x5c\x40\x4f\x8b\x7a\x4a\x03\x19\xbc\x6c\xec\xaa\x57\xfe\x4d\x4f\x20\x60\x7c\x99\xc2\xdf\x22\xfa\x06\x76\xf9\x9d\x1b\xd8\x78\x86\xc9\x28\xc4\x98\x8c\x6e\x78\xc5\x7d\x75\x83\x30\xe6\x92\x2c\xbe\x03\xc1\x03\x40\x25\x3d\x0d\xd4\x83\x79\x2c\xe7\x5e\x6c\xd0\x9d\x12\xfb\xbb\x04\x1f\x02\x05\xe6\x5a\xd2\x5c\xe7\xc1\xb2\x4e\x77\xee\x8d\x6f\x91\x5e\x3b\xc3\xe1\x0d\x09\xfb\xd3\x87\xa8\x4b\xda\xab\xfd\x1c\xed\xb5\x2c\x0b\x17\x33\xb5\xf4\x70\x88\xc0\xd3\x5e\x0e\xf4\x58\xc8\x54\x14\xc2\xb0\x4c\x2d\x29\xf6\x3f\x77\x58\x61\x31\xee\x65\x53\x0f\x20\x9b\x51\x8a\x0f\x25\x7a\x07\x46\xbb\xd5\xfe\x0a\x2e\x0c\x38\x8a\x6c\x48\x0e\x1b\x60\x71\x4f\xee\x1c\x59\x41\xbb\x4e\x13\xf7\x07\xea\xc4\x87\xa9\x66\x6a\x72\x3b\x57\x93\x13\x4a\x26\x8b\x77\x59\x77\x86\xc3\xa3\x19\x3b\x46\xd3\x55\xdd\x08\x95\xfc\x62\x16\xc5\x36\xa5\x42\xff\xd7\xd7\xb0\x80\x10\xc8\x6f\x54\x7a\x5d\xaa\x38\x33\x5a\x8b\xfa\x26\x55\xd5\xf7\x1b\x4d\x88\x07\xf5\x0c\x85\x45\xc5\x83\xdd\x0b\x69\x00\x22\xee\x65\x87\x3a\xea\x3e\x8f\x1a\x56\x5f\x3b\x0e\x4e\x02\x95\xfb\x0d\x32\x1f\x5c\x0b\x39\x7f\x2f\xd0\x52\x8f\x86\xa0\xd1\xb7\x07\xf7\x37\xb1\x75\xc6\x9e\x9e\x7a\xe3\xc8\x4d\x4b\x2c\xf3\xa3\x8a\x63\x1a\xa8\x03\x2b\x3e\x65\xbb\x45\x28\xf6\x6d\x0b\xfd\x34\x47\x3e\xd0\x10\x1d\x2a\x61\x25\x5b\x21\x5b\xc1\xcb\xab\x9a\x26\xd2\xb9\x69\x32\x4b\x77\xc8\xa5\x46\x4e\x5b\x23\xdf\x6c\x51\x12\xf9\xd1\x7c\x58\x7d\x95\x55\x9d\xe2\x12\xad\x24\x1d\x8b\x12\x60\x50\xe5\xfd\xdf\xcc\x83\x9a\x7e\x5a\xa2\xfd\xa1\xca\x20\xc0\x91\x0d\x86\x34\x18\xf1\x95\xb3\x8a\xdf\xcc\x36\xe9\x2f\x23\x96\xac\x31\x44\xb5\x37\xb3\x0f\xbe\x4d\xde\x61\x49\x02\xf8\x99\x78\xb7\xfb\x42\xcd\x99\xf1\x3d\x99\xc4\x5c\x73\x4f\xb8\x2c\x32\x59\xf9\x0b\x88\xfd\x52\xbd\xcb\x88\xf7\xee\xec\xdd\xe4\xc2\x43\xd8\x80\xba\xc7\x61\x4e\x15\xcf\x8d\xb5\x99\x3f\xfa"}, +{{0xdb,0xbd,0x0f,0x7e,0xcb,0x64,0x82,0xcb,0x01,0xc4,0xdb,0xdc,0x38,0x93,0xc0,0xdb,0x81,0xe8,0x31,0x35,0x3a,0x5b,0x01,0xcc,0x75,0xd3,0xb1,0x1f,0x2f,0xf3,0xc5,0x9c,},{0x2d,0x4e,0x58,0x8d,0x31,0xa3,0x84,0xb1,0x78,0x58,0xc0,0xd7,0x84,0xf6,0x71,0x2b,0xaf,0xd0,0xb4,0x12,0x04,0xcf,0x8f,0x0d,0x57,0x97,0x3e,0x59,0xc7,0x70,0xd3,0xda,},{0x96,0xc0,0x03,0x61,0xfb,0x71,0xc5,0x23,0x05,0xe1,0xab,0x77,0x07,0xe0,0x46,0x52,0x03,0xeb,0x13,0xdf,0x3e,0x06,0x55,0xf0,0x95,0xfb,0x33,0x19,0x42,0xa4,0x0b,0x15,0x58,0x41,0x43,0xb3,0x70,0xa7,0xdd,0x57,0x61,0xfb,0x03,0xc0,0x75,0xd0,0x4a,0x83,0x48,0x66,0x1c,0xce,0xa9,0xad,0xa5,0x33,0x65,0xb5,0x00,0x08,0x7d,0x57,0xec,0x0c,},"\xe0\xff\xf3\x59\x75\xeb\xa7\x8d\xa2\xb0\xff\xcc\x5c\x1b\x66\x36\x00\x88\x8e\x82\x55\xcd\x20\x8f\x6d\xce\x7e\x88\x95\x3b\x71\x42\x93\x73\x89\xa3\x37\xae\x82\xf4\xcf\xe3\x2f\xcb\x34\xf5\x52\xa4\x8f\xa8\x89\x9e\x1a\x65\x9e\x3e\xd3\xd3\xd2\x90\xef\xc9\xa0\xf7\xde\xdf\x33\xe2\x1d\x04\x8d\x8d\x91\x07\x57\x03\x7b\x76\xe8\xa7\xee\x9e\x4e\xca\x30\xf5\x29\xdd\xc0\x2c\xef\xfc\x26\xd6\x4f\xda\x73\x03\xcc\x0d\x89\x40\xe9\xef\x59\xdc\x98\x3c\x12\xcc\xd1\xd2\x71\x7e\x64\xd3\x00\x6a\xf8\x2a\xb1\x5b\xb8\x78\xbb\x89\xd1\x75\x8b\xe4\x43\x10\x42\x06\x38\xb9\x6a\x0b\x5e\x1e\x65\x00\x9d\x69\x39\x5d\x02\x7a\x5d\xa4\xa8\x5e\x90\x1b\xe9\xaa\x2c\x0b\x3a\xcc\x50\x8e\xe1\x85\x74\xc1\xb2\xfa\x9b\xd5\xd7\xae\x7c\x7d\x83\x07\x12\xda\x5c\xbf\x26\xbe\x09\xa3\x12\x84\x70\xa1\x2a\x14\x90\x9a\x80\xa2\x66\x65\x9b\xef\xda\x54\x8f\xd2\xb2\x2f\x24\xc5\xfd\xc2\x06\xed\x3a\x4e\x75\xf5\x32\x06\x82\xed\x0e\x4c\xe8\x17\xd6\x3d\x5c\x7f\x1e\xe2\xb4\x40\x64\x33\x55\xbe\x65\x42\xf5\x9d\xc6\xc4\x5a\xb1\x57\x72\xf2\x21\x9a\x81\x2e\xf7\x52\x76\x42\x01\x5b\xc7\x5f\xe4\x5b\xa9\x69\xe8\x10\x0c\x26\x8e\x24\xce\xef\x92\x05\xa8\x3a\x3f\x7b\x5a\xe8\x00\xad\x06\xe0\x95\xb9\xb1\x39\x21\x94\x89\x79\x3a\x7b\xce\x84\xeb\xeb\x65\x4a\xb6\x66\x9e\x28\x55\xcc\xbe\xb6\x94\xdd\x48\x65\x15\x05\xb9\x59\xd3\x2a\x77\x02\x0b\x86\x95\x33\xe3\x25\x6d\x40\x68\x5a\x61\x20\xba\xb7\x94\x48\x5b\x32\xe1\x16\x92\x56\xfb\x18\x8f\xe7\x6e\x04\xe9\xef\xa6\xd1\x0d\x28\x6a\xe8\x6d\x6f\x1c\x87\xe8\xfc\x73\xad\x9b\x59\xfe\x0c\x27\xee\x92\xa4\x64\x15\xb3\x9d\x78\x6d\x66\x32\x5d\x7f\xa6\xfd\xa7\x12\xf1\x99\xda\x55\x4f\xc1\xc8\x99\x44\xa4\xe8\x4c\x19\x6e\x97\x9a\x80\x75\x53\x71\x8c\xb8\x1c\x07\x6e\x51\x1e\x60\x9d\x5c\xac\x23\xd8\xf4\x5b\x38\xb9\x4b\xcf\xcf\x15\x8d\x0d\x61\x60\x22\x38\xd5\x2e\x3a\xe8\x4c\x81\x53\x22\xf5\x34\xf2\x54\xe6\x33\x89\xae\x15\x5d\xee\x2f\xa9\x33\x96\xf0\xea\x49\x9d\x5d\x08\xc2\x47\x59\x08\xc6\x48\xbd\xdc\xee\x59\x1e\x13\x37\xe9\x42\x1d\xc5\xa2\x57\xce\x89\xcc\xce\x4c\xee\xa8\x09\xd7\xe8\x71\x34\xe0\x39\xdb\x1b\xe5\x98\x19\x6d\x30\x89\xfd\xcf\xa8\x97\x8e\x02\xc1\x55\x58\x32\xda\x0a\x72\xb0\x8a\xd0\x7c\xdd\x07\x26\x27\x40\x9c\x87\x39\x37\xb0\xe8\x35\x71\x5b\xaa\xf2\x60\x8b\x23\x95\x32\x74\x67\xcf\x69\xa1\xcd\xcc\xe6\x37\x24\x18\x38\x3e\x7b\x89\xc8\xdf\x4d\x53\x1f\x58\x51\x49\x50\x9e\xad\x1e\x41\xb6\x62\x7f\xea\x81\xc7\x95\x8c\xb4\x9d\x2d\x3c\x3e\x2f\xc6\x91\xe0\xb8\xcf\x72\x67\x9c\x08\xb8\x90\x46\x54\x53\x1b\xc4\x36\x8f\xb6\x17\xac\x75\x57\xd9\xdb\x8d\x32\x9d\x77\xe4\x8d\x8f\xb4\xde\x73\xab\xe7\xcb\x93\x88\x27\x4a\xf5\x85\xf8\x75\xc0\xda\xb7\x93\xe4\x35\x35\x18\xbb\x24\x69\x53\x42\xaf\x0f\x5d\xf5\xbe\x4e\x9c\x7a\xd2\x15\xbe\x90\xe2\x55\x40\xda\x34\x89\x71\x7d\xd3\xd2\x92\x54\x58\x5a\x45\xc1\x3e\x6d\xcc\x7e\x9c\x8a\x3a\x79\xff\x75\x5c\xbe\x46\x5b\x25\xe2\x3a\x1d\xa6\x08\xe1\x08\x4f\xec\x83\xbf\xf8\x0c\xfb\x74\x42\xb1\x46\x01\x87\x30\x7a\xcd\x75\xe3\xf2\xd1\x28\x43\xa7\x70\x94\xac\xc3\x28\x88\xfb\xe5\xf1\xfc\x24\xc6\x15\xd1\x9a\x06\x53\x91\xd4\x17\x64\x74\x64\x42\x46\xb5\x34\x3d\xa7\x76\x26\xa2\xd4\x83\xfe\x20\x4f\x83\x93\x28\x77\x5b\x71\xa4\xcb\x56\x72\x73\xe1\x69\x64\x0a\xf9\x3d\xde\x3e\xca\x91\x16\xf4\x00\xe2\x3a\x7a\xd3\xd8\xfc\x3a\x28\xe5\x65\xf1\x25\xd6"}, +{{0x74,0x8b,0xb3,0xcd,0x47,0x71,0x37,0xbc,0x88,0x0e,0xa7,0xc6,0x1d,0xf2,0x5c,0x1d,0xac,0x6e,0xbe,0xc9,0xe6,0xc3,0x19,0x3d,0x81,0xff,0xa6,0xf7,0xa8,0x1e,0xc6,0x67,},{0x10,0x6f,0x28,0xcf,0xed,0xf0,0x96,0x45,0x42,0x26,0xb3,0xb0,0x1f,0xc2,0x4a,0xb1,0xc9,0xbb,0xd7,0xf2,0xb0,0x97,0x3e,0x56,0xfe,0x2f,0x4c,0x56,0xa0,0xb1,0x47,0x5b,},{0xe1,0x3c,0xa8,0xe5,0xce,0x7c,0x26,0x80,0x90,0x90,0x8d,0x61,0xcf,0x2f,0x0a,0x3e,0x45,0x72,0x41,0x2b,0xf5,0xad,0xfc,0x5a,0xdd,0xfe,0x88,0x55,0x6f,0x14,0x8b,0x5f,0xcb,0xe3,0xe1,0xbc,0x65,0xff,0x16,0x11,0x7d,0x35,0xc9,0xd5,0xdc,0x3b,0x11,0x71,0x98,0xf8,0x84,0x92,0x5b,0x40,0x35,0xb2,0xc0,0xde,0x6c,0x40,0x2e,0xd4,0x7a,0x01,},"\x00\xde\x6d\x99\x0c\x84\x33\x8a\x39\x8f\xda\x5f\x4a\x2c\xca\x73\x3c\x56\xb2\xa2\xea\x39\x6c\x2f\xe6\x67\xc2\x68\xe3\x81\x45\x87\x85\x39\xbd\x41\xbc\x14\x0a\x2c\xdf\xe7\xe1\x83\x60\x41\x10\x48\xcc\xa6\x0f\x35\xce\x51\x09\x91\xdf\x26\x1c\xbf\x66\x90\x39\xd9\xd2\x56\x87\xa0\x7f\xc0\x47\x6a\x41\xf5\x0e\xcc\xf3\x81\x53\xee\x6a\xe9\xff\xd3\x92\xb2\xbe\xc0\xcc\x67\x10\x1e\xc3\x69\x6d\x7a\x2e\xc8\xcb\xd4\x47\xb6\xa6\xea\x06\x3d\x33\xec\x12\x8a\xe8\xb5\x75\x77\xde\xe1\x7b\x97\x16\x25\x63\xf1\x5e\x42\xb5\x5c\xa4\xbe\xdb\xdf\xb6\x31\xa9\xf6\x26\x2f\x94\xae\x35\xbb\x35\xf7\x95\xc3\x5a\x01\xde\xdb\x46\x45\xa7\x3c\xfa\x6e\xd9\xee\x52\x1e\x46\x31\xfb\x17\xbb\xc0\x6e\xe5\x73\x16\xbe\x52\x74\x27\xc8\xaa\x55\xc6\x31\x18\x74\x62\xd4\xb2\xc8\x82\x2c\xa4\xe1\x8b\x7a\x5d\x4c\x11\x4c\x11\xdc\x22\x06\x9b\xc8\x32\x65\x6d\x5f\x4d\x39\x54\x87\x18\xc5\x1f\x5e\x4f\xc8\x28\xf6\x0e\x37\xf0\x13\x07\x50\x52\x65\xac\xb2\x2d\x5e\x8d\x76\x7b\x9a\xa7\xb8\x66\xa1\x57\xc6\x43\x87\x3e\x09\x08\x4a\x1a\x40\x4a\x7b\xb5\x8c\xcc\x4b\x5a\x39\x0f\xd3\x06\x01\xc8\x96\x93\x5e\x35\x56\xf6\x0d\x2d\xc6\xbd\xff\xe4\x7d\xa0\xa6\x87\xc8\xec\xe1\x24\x1f\xf6\xc0\x7d\x77\x61\x11\xca\x65\x98\xfc\xa9\x68\xcb\x6a\xfa\x0a\x14\xa3\x4a\xb8\xf5\x4b\x95\xd3\xd8\x47\x3a\x17\x4b\xc7\x25\x52\x3f\x86\x74\xdf\xb2\xb1\x0f\x87\x42\x07\xfe\xe1\xb0\x8b\x42\xda\x1f\x58\x65\x53\x05\xa3\x59\x75\x7a\xa0\x25\x1f\x14\x13\x8e\xed\xbc\x28\x0c\xbd\x38\x5b\xf4\xbb\xf5\x53\x01\x14\xcc\x43\xb0\x47\x47\x79\xe2\x04\x96\x2f\x85\x60\xd4\xaa\x42\x3e\x17\xe6\xae\xca\xce\x66\xc8\x13\x78\x4f\x6c\x89\x8b\x5b\x9c\xb7\x46\xa9\xe0\x1f\xbc\x6b\xb5\xc6\x60\xf3\xe1\x38\x57\x4f\x59\xb9\x74\x54\x45\x48\x6c\x42\x2b\xc0\x6a\x10\xcc\x8c\xc9\xbc\x56\x45\x8e\xf8\x5e\x0e\x8a\x02\x7c\xb0\x61\x7d\x03\x37\xdd\xda\x50\x22\x0b\x22\xc5\xc3\x98\xf5\xce\x05\xec\x32\xf0\x9b\x09\x0f\x7c\xf6\xc6\x0f\x81\x8c\x6b\x4c\x68\x30\x98\x3e\x91\xc6\xea\xdf\x1e\xae\x4d\x54\xbd\xe7\x54\xf7\x5d\x45\x0a\xe7\x31\x29\xf6\xc4\xff\x5c\x4c\x60\x6f\x7c\xad\xbf\x4f\x78\xa1\x8d\xb2\x96\x1c\xc8\xc8\xdd\xab\x05\x78\xcf\xed\xfc\xf9\x5e\xf0\x88\x8a\xfd\x38\x55\x37\xd1\xd0\xa0\x76\x48\xa5\xce\x25\x22\xd0\x63\x35\x07\xd7\x75\x93\xe1\xa0\x36\x6d\x1e\xce\x84\x3d\xe6\x98\x67\xd7\xac\x44\x2b\xa7\xda\xd2\xa9\x0b\x59\xd8\x98\x4e\x4a\x94\x6b\xbe\x5f\x17\x2d\xa4\x27\x63\x8b\x2b\x61\x20\x90\x41\xff\xf5\x0e\x60\xec\x02\xec\x2c\x0b\x1d\xc4\xbe\x2e\xdd\x13\xe8\x7b\x64\xd1\xd1\x66\x31\x14\x57\x3c\xf5\x8a\x17\x73\x9f\x46\x3a\x1c\x3d\x6b\x21\x23\x39\x01\x83\xb5\x05\xc8\xee\xff\xb2\x05\x39\xbd\xfe\xeb\x40\x77\x6d\x20\xc4\x59\xba\xc4\x56\x99\x68\xfc\xaf\xe4\x4e\xa4\xcd\x62\x4a\x84\xbf\xcc\xd7\x87\x6d\xd7\xbf\x55\xf8\x3a\xc7\x04\x0e\x30\xf3\x26\xdc\xe3\x25\x58\x8e\x1b\xa5\xbc\x07\x90\x26\x5d\xfd\xba\x09\x83\x9e\xef\x57\x16\x41\xe8\xa1\x23\x4b\x6c\xfc\x3a\x36\xa8\x66\xbd\x6b\x92\xcd\x71\xec\x74\xe0\xd4\xde\xb9\xe7\x4d\x15\x82\x01\xaa\x50\x2f\x07\xc8\xba\x34\x8a\xc2\x6a\xaf\x9b\x3d\x07\x0c\x9a\x40\xb5\x2a\x44\xe9\x32\x55\x2b\x67\xa2\xdf\x05\xa7\xf0\xf0\x3c\x61\x7b\x48\xdc\x27\x82\x36\x6a\x23\x1e\x0c\x4e\x39\x38\xa4\x27\x4b\x36\xaa\x94\x50\xff\x93\x6b\xe1\x32\xdc\xb6\x92\x83\x8d\x65\x4c\x94\x54\x2c\x6e\x04\x7a\x7f\x78\xba\x71\x19\x19\xf9\x08\xa1\x5b\x30\xb9"}, +{{0x39,0x3d,0x44,0xdd,0x0d,0xed,0x71,0xfc,0x08,0x47,0x7b,0xd2,0x5e,0xd0,0xe6,0x62,0x9f,0xa7,0xf8,0x8f,0x08,0x2e,0xbc,0xef,0x09,0x18,0x98,0xe5,0xc9,0xe3,0xd5,0xb8,},{0xc5,0x2a,0x99,0x3b,0x80,0x2d,0x84,0x54,0x0d,0x27,0x54,0x79,0xa1,0xaf,0x5e,0x28,0x7d,0x19,0xea,0x13,0xb3,0x80,0xfa,0x30,0x68,0xd2,0xf2,0xc6,0x8e,0xb9,0x7a,0x09,},{0x84,0xc7,0x16,0xe6,0x0d,0xe6,0x7b,0x02,0x0c,0xc1,0xa6,0xa2,0x4e,0x65,0x49,0xfe,0x56,0xc6,0xd9,0x41,0xa8,0xed,0xea,0xe4,0x07,0x62,0x66,0x66,0xc3,0x1c,0xb6,0x0d,0xee,0x6b,0xe5,0xa7,0x1e,0xbd,0x76,0xba,0xf7,0x1b,0x75,0x11,0x4b,0xcc,0xfd,0x37,0xd1,0x63,0xa9,0x68,0xbb,0xee,0xc1,0xf7,0x69,0x72,0x15,0x12,0x96,0xc4,0x7e,0x07,},"\x14\x2b\x6e\x82\x50\x13\x62\xd5\x5a\x04\xb8\x9d\x54\x1a\x79\x68\x63\xd7\x78\x38\x40\xd3\x4c\xbd\xfc\x51\x6a\x3c\x84\x77\x2f\x92\x44\x6f\x5f\x0d\xf4\xc4\x5c\x6e\x0d\xc8\xec\x1e\x9b\xb0\xff\x7e\xc1\x69\x6a\x09\xcd\x7a\xe3\x4c\x10\xf8\xe6\x1a\x9a\xca\xbd\x43\x03\xf0\xa9\x24\x72\x37\x62\x1c\x49\x0e\x8d\x9d\x0f\xe4\x44\x82\xc5\x60\xd0\x51\xb8\x2b\x07\x4a\xc3\xd8\xe4\x9b\xb2\xac\x71\x5a\xc4\xcd\xe3\xd4\x70\x9d\x0e\xa3\xaf\xc5\x1b\xfd\xef\x4b\x65\x67\x71\xfb\xd5\x5f\x89\xda\x9f\xa6\xdc\xaa\x62\xcb\xae\x56\x12\x08\xd9\x8c\xfa\x24\xcb\x81\x25\x2b\x89\x5f\x6a\x4a\x92\xc8\xe4\x07\xaf\x6c\x1f\x1e\xf4\x9d\x8d\xde\x15\x4f\xbc\xb1\xca\x45\x7a\x20\x4b\x5e\xa5\x43\x2e\x4d\x71\xfb\x7e\xb2\x4d\x43\xf6\xfe\x25\xe7\xb4\xc6\x59\xb0\xee\xbc\x4c\xbc\xc8\xb3\xcf\xde\x07\xc8\xf0\x7b\x18\xa5\x15\x70\xe7\x16\x3e\x33\xb3\x17\xb6\x13\x60\xf9\xce\x08\xd9\x5d\xe2\xc3\x15\x6a\xf1\xcc\xc9\xb5\x5b\xcf\x81\xea\xbf\x3c\x40\x43\x40\x46\xbb\xe8\x2e\x02\x99\x2a\x2a\xc8\xb3\xb4\x25\x68\x0a\x23\xd9\x34\x72\x6c\xb1\xb7\xbf\x26\xce\xb5\x2a\x39\x02\x2c\x00\xac\xf4\x25\x25\x71\x67\xb8\x21\x18\x5f\x68\xe3\xed\x17\x90\x3d\x8d\x22\x27\x54\x98\xc3\x9a\x9e\x8d\xf8\x84\xec\x00\x55\x8d\xcf\xa4\x3b\x8a\x11\x9c\x2e\x85\x3b\x9a\x03\x18\xbb\xea\x08\x7f\x9c\xec\x17\xca\x49\xb7\x08\x17\xb8\xd7\xc1\x70\xa8\x90\x6f\x3e\xe9\xe8\xf8\xcb\x27\xa1\xd0\xf5\x75\xab\xfa\x62\x7e\x88\xf0\x8c\xa4\xb9\x3c\x32\x97\xc4\xf3\x17\x07\x2f\x42\x1c\x5e\x60\x2e\x2f\x83\x1d\xfb\x82\x55\x1b\xdc\xe8\xd7\x12\x16\xf0\x5c\xf9\xa2\x77\x3b\x90\xfc\x93\xb9\xd8\x55\xa9\x1e\x35\xad\xe3\x32\xa5\x06\x1f\xdb\x82\xb3\x09\xba\xb4\xf5\x6e\x2d\x58\x6a\x84\xc6\x74\x81\xd1\x90\x2c\x26\x1b\x3f\x97\xdc\x30\xb1\x84\x61\x9d\xf9\xfd\xfc\x7a\x32\x9d\x06\x1a\x41\xdf\x33\x22\x02\x13\x3d\x8e\xae\xed\xdb\x4c\xfc\xee\x53\x53\x6e\x07\xaa\xd1\x15\x53\xdc\xf5\xed\x1e\x94\x9d\x45\x35\x5f\x9e\xf4\x2c\x78\x32\xb0\xde\x7c\x2f\x15\x26\xfb\xef\x86\xb6\x36\x49\xb6\xb8\x5a\xe5\xca\x86\xf0\xce\xa6\xdf\x9c\x12\x6c\x1d\x79\x48\x9c\xc3\xbf\xc6\xe8\xbf\x03\x46\xeb\x30\xd0\x16\x43\xc0\x10\x15\x0c\x5c\x8d\x0e\xb5\x01\x0a\x46\x11\x22\x15\x13\x79\x91\x08\x5e\x57\x49\x3b\x22\xe8\x35\x26\xb7\xb1\x72\xc6\xc7\x34\x1c\x40\x32\x1e\x9c\xeb\x7c\x82\xbf\xba\xa4\x8f\x3b\xd8\xf5\x13\x72\xd9\x6d\x47\x44\x4f\xf0\xd8\xbb\x2e\x5f\xd2\x65\x14\xeb\x63\x91\x05\xe3\x38\x95\xfd\xc4\x1f\x6d\xf1\xfb\xfd\xcb\x08\x46\x6e\xc2\xd2\x17\xfc\x99\xfb\x01\x2f\xe6\x54\x0c\x0c\x5a\x59\x66\xed\x3e\x66\xfa\xb1\x20\x2a\xb9\xda\xff\xe8\xe2\x7e\x8f\x74\x62\x82\x8d\x66\x26\x59\xea\x3b\x2c\x60\x8c\xf6\x8e\x30\xdb\xac\x62\xff\xd8\x22\x9f\x4a\x53\xf5\x9a\xe1\x68\x33\xb8\x1a\x15\x91\x61\xf1\x93\x69\xf6\x0f\x51\xc4\x3a\x21\x7e\xfc\x5e\xfd\x6a\xb7\xa9\x1f\xe2\x49\xc7\xb8\xa0\xc1\x4e\x9f\xae\xa5\x33\xde\x13\x38\x49\xa9\x24\x47\x67\x6f\x6c\xc1\x8b\xef\x4f\xec\x7f\x37\x31\x97\x59\xce\x80\xea\x3e\xac\x18\xfa\x2d\x9f\xa0\x23\x09\xe1\xce\x93\xac\x6c\xf4\xcd\x2c\xb2\xc9\x5f\x1e\x2a\xff\x7b\x2a\x88\x56\x40\x5a\x7b\x8e\xba\xbe\xb4\x90\x6d\x9b\x97\x34\xda\x9f\xb5\xe5\xd3\xf3\x22\xbb\x5b\x55\x9f\xa6\x1e\xc8\xf5\x15\xdb\x90\x65\xab\x4b\x91\xa7\xa3\x1d\x5c\x62\x50\x61\xc2\xfd\x2b\xcf\xe1\x7f\x94\xbb\xde\x47\x76\x30\x2b\x8a\xef\x3d\x5b\x52\xdb\x3b\xc7\x3a\xe4\xa3\x0c\xc4\x41\x7a\xcb"}, +{{0x71,0x19,0x36,0x40,0xa0,0xa2,0xb2,0x2f,0xb2,0x2d,0x00,0xa8,0x0b,0x33,0xa5,0x51,0x4f,0x3d,0x10,0x00,0x03,0x4f,0xcc,0xd8,0x85,0xd8,0xea,0x86,0x38,0xf0,0xb0,0xf8,},{0xb1,0xd3,0x6f,0x72,0x3b,0x70,0x86,0xd9,0x23,0x11,0x9f,0x46,0x75,0x9b,0x39,0xfa,0x1e,0x40,0x38,0xc6,0x41,0x8c,0x37,0x9b,0xa9,0x8b,0x58,0x40,0xc7,0xea,0x50,0x68,},{0xa9,0x70,0x2a,0x33,0x95,0xac,0xd2,0x0d,0x75,0x43,0x73,0x09,0x5d,0xc6,0x14,0x45,0x58,0x4d,0x8e,0x57,0x10,0x80,0xe1,0x79,0xad,0xcb,0xa3,0x10,0x6b,0xb0,0x6a,0x7c,0xe4,0xd4,0x60,0xf1,0x26,0x1a,0xef,0x86,0x43,0xab,0x16,0x34,0xf4,0x7c,0x94,0x14,0xa3,0x2e,0x18,0x3a,0x32,0x76,0x91,0xe6,0x58,0x43,0xdd,0x6c,0x05,0x50,0x72,0x07,},"\xe0\x28\x79\x48\xbb\x85\xa3\x98\xe6\xaf\xfa\x2d\x25\xfc\xff\x8b\xdb\x93\x26\xf5\xd1\x4f\xde\xb6\x05\x49\xf5\xfb\xf0\xc1\x81\x6f\x11\xcb\xdd\x4e\x90\xfe\xa0\x39\xdc\xa6\x0f\xaa\xd1\x69\x60\x03\xf9\x15\x15\xc9\xb2\x72\x88\x2c\x95\xc9\xa4\xab\x6e\x27\x77\xbd\x92\x7e\x7d\x84\x42\xae\xa6\xce\xa6\x19\xc9\xb1\x52\x55\xfe\xd6\x12\xb5\xcc\x31\x58\xfc\x70\x5b\xb7\xa5\x06\xf4\xaf\xec\xf4\xe3\x4e\xd5\x17\xb2\xc1\x2b\x83\x62\x61\x0e\x5e\xa2\x70\x48\x5c\xcc\xb3\xc9\xaa\x97\xec\xd6\xcb\x19\x63\x09\x00\xf0\x7d\x94\xcb\x29\x3c\xb6\xe0\x89\xa9\xa7\x7c\x01\x94\x07\x3a\x7f\x71\x77\xb0\x23\x0d\x25\x76\x3a\x2e\xf9\x8d\x47\x70\x4c\xb2\xc3\xaf\x4c\x3c\x1b\x49\x56\x31\xb4\xa5\xb2\x1b\x2e\x56\xbf\xf2\xed\xe0\x3e\xa4\xfe\x7c\xf8\x29\x17\x34\x7e\x3a\x9d\x4d\xbe\xef\x37\xd1\xcf\x17\x61\x5a\xda\xa0\xfd\x17\x05\x79\x69\x91\x7d\x47\x8d\x03\xcc\xd8\xf8\xb8\x8e\x5e\x5a\xca\xe6\x73\x2a\x81\x61\xdf\xb5\xf7\xd0\x21\x23\xc8\xd5\xa5\x65\xcf\x4d\xd9\x8d\xfc\x9a\xaf\x5a\x33\x50\x58\xa9\x41\xca\x43\x07\x3f\x26\x59\x61\x5a\x72\xfe\x78\xc1\x01\xc4\x1a\xed\x07\xf3\xbc\xf9\x80\xb0\xa5\xb3\xfb\xaf\xdb\xbe\xa9\x2f\xd8\x89\xcf\xd5\x3d\x40\x32\x78\xbc\x15\xa5\x9a\xa1\x40\xc2\xd7\x73\xb8\x88\x9b\x96\x3d\xce\xa3\x65\x36\x2e\x42\x6e\xf4\x60\x98\x45\xc9\xbc\xe9\xf8\xae\xb5\x91\xd1\xa4\x69\xb0\x72\xb4\x12\x09\xf5\xa8\xb6\xdc\x23\x95\xad\x90\x60\xeb\x2e\x37\x09\x78\xae\x33\x11\xd1\xcf\x0a\x8f\x20\x51\x42\xd4\x36\xba\xb6\xb9\x59\x43\xa9\x7c\x23\xe6\x1b\xd1\x4b\x2d\x95\x67\x2c\xb9\x32\x5e\x9a\xb1\xfc\x9e\xee\xaa\xcc\xd5\x8b\x9f\x4a\xc1\x55\x0b\xde\xc8\x44\x9b\x03\x60\x39\x49\x6c\x5f\x07\xa5\xed\x64\xd5\xd8\x51\x71\x69\x01\x44\xdb\x5c\x81\xc8\x1c\xbc\x4c\x16\x71\x8d\x52\xc4\xdf\xd1\x95\x8c\xa5\xc9\xc8\xba\x58\x2c\xd9\xd7\x06\xf2\x7a\x74\x74\x4c\x3a\x05\xbf\x1c\xcd\x51\xf1\x09\x20\x10\xd3\x6f\x15\x78\xb5\x78\xae\x0e\x9f\xfa\x47\x07\x90\x55\xef\x94\xfa\xbc\x9f\xf7\x2f\x73\x8b\xef\x68\x46\x1e\xb3\x40\x4c\xce\xe9\x53\xf5\xee\x86\x4c\x97\x4c\xe7\x0e\x90\x37\xe3\x38\x8f\xba\xf2\x88\x9e\x13\x66\xca\xa0\xf6\x51\xe2\x1b\x33\x9e\x3d\x56\xb9\xd9\x5a\xc3\x0b\x35\x92\xa9\x48\x91\x2c\x90\xbf\x54\x47\x3c\xeb\xc4\x67\xb0\x9a\x39\x43\xdc\xac\x48\x68\xac\xb5\xb3\x5e\xa6\x91\xef\xf4\xd8\xcc\x1c\xda\x0c\x6c\x0a\x9c\x16\x9a\x4e\xe1\x00\x41\xf3\x5f\x43\x3f\xb5\x3d\x26\x06\x7b\x29\x10\x56\xb1\xda\x69\xff\x46\xfb\xea\x1c\xa7\x21\x36\x59\xa9\x90\xd5\xd5\xdf\x14\x06\xb0\x93\xda\x2a\x33\xc8\xdf\x95\xab\x3c\xe8\x11\xaf\xb9\xc9\x8c\x5b\xfd\x7c\x4e\x98\x1b\x3e\xa9\x4e\xef\xd2\xe2\xfe\x95\x70\x7d\x89\xf3\x07\xfa\x76\x82\x8b\x5c\x67\x74\x95\x0a\xee\x80\x62\x67\x14\x25\x6e\x19\x7d\xc7\xda\x97\x21\x58\xc7\x68\xbb\xee\x7f\xbd\x16\x9e\xc1\x5b\x4b\xb7\xbe\x72\x97\x6d\xbe\xd3\xe5\x12\x76\x6e\xf2\x2e\xf3\xb8\x12\xbc\xac\x4a\xa3\x11\x5a\xfe\x83\xd3\x12\x84\xaf\x8e\xac\xea\x4e\xe4\x9a\xfd\x42\xd9\xc4\x4f\xff\x2d\x86\x1c\x08\x62\x9b\x55\xda\xe0\x0f\xf6\x74\xfb\x02\x8e\x73\x8b\x05\xdc\xb3\x8a\xea\xa6\x96\x3c\xc3\xfa\xaf\xc7\xb6\x92\x45\xa2\xa1\x22\xa9\x6d\xd2\xf0\x3a\x82\x4d\x72\xb0\xfe\x0d\xd7\x98\xdf\x5c\x4b\xb7\x5a\x87\x32\x4e\x76\x4a\x50\xa5\xff\x52\x54\x7a\xda\x8f\x8f\x88\xe6\xf3\x8a\xee\x49\xd5\x8d\xdb\x01\x26\x48\x85\x4c\xd5\x9d\x0e\xc9\x7b\xc3\xd5\x8d\x0a\xd4\x49\x1f\x08\x59\x07\x67\xce\xb1"}, +{{0xbf,0xc9,0x62,0x6c,0x91,0xf3,0x48,0xfd,0xaf,0x46,0x9d,0xef,0x23,0x02,0xe9,0xe3,0x8f,0x90,0x51,0xe7,0x34,0x9e,0x48,0xf8,0x50,0xcf,0x35,0x2a,0x83,0x31,0xa2,0x8b,},{0x4e,0x81,0x93,0x06,0x1c,0x9d,0x65,0xa8,0x2b,0xcb,0x25,0xda,0x08,0x9b,0x4a,0x80,0xba,0x41,0xb3,0xdd,0x2f,0x8e,0xd1,0xdc,0x81,0xe1,0xcf,0xd0,0x3c,0x84,0x91,0x15,},{0x66,0x02,0x42,0xc1,0xdc,0xf3,0x29,0x13,0x69,0xc6,0x5c,0x9d,0x7f,0x89,0x87,0x2e,0xab,0x48,0x22,0x00,0xe3,0x44,0xb2,0x96,0xe3,0x36,0xa0,0xa2,0xe6,0x31,0xfa,0x79,0x60,0x24,0xb6,0xe1,0x11,0x9c,0x27,0xd5,0x22,0x64,0xa4,0x98,0x15,0xdd,0x78,0x19,0x27,0xa7,0xdf,0x46,0x7e,0x88,0xb8,0x01,0xe6,0x84,0xfc,0x60,0x22,0x96,0x25,0x0e,},"\x2f\x11\xf4\x0b\x2a\x19\xf6\x40\xc0\x04\x4c\x7b\x13\x96\x80\xc3\xc3\xb6\x9f\x00\xff\x9f\x6a\x41\x86\xfd\x7d\xed\x56\x9c\x1d\x8c\x57\x20\xf1\x9d\xd3\x5c\x78\x16\xd0\x8a\x94\xc0\x82\x04\xe4\x76\x43\xe2\x64\xd4\x25\xe2\x1c\xef\xb8\x31\x29\xc9\x09\xa3\xd7\x8c\xaf\x72\xc4\x6b\xf1\xa7\x29\x76\x5e\xf4\xb8\xca\x80\x3f\xda\xf8\x05\x2f\xfc\x6c\xc4\xa6\xb5\x79\xa1\x60\xb7\x03\xb1\x53\x55\xc6\xfc\xd3\xb9\xa2\xec\xbc\x26\x7e\x60\xdd\x59\xf6\xa2\xb1\x94\x20\xe5\x57\x27\xa8\x0b\x0b\xb6\x41\x67\xc8\x3b\xa0\xc8\x05\xde\xed\x49\x1d\x93\xe7\x23\xf3\xb4\x32\x63\xd1\x74\x20\xb8\x5b\xe8\x6c\x16\x5c\x55\x27\x79\xdb\x96\x0e\x0a\xa9\xeb\x4d\x9f\x3a\x16\x4a\x5a\x21\xfa\xb3\xf5\x09\xa8\xf0\x19\x9a\x69\x43\xc4\xb2\x23\xcf\x9d\xac\xa7\xe1\x10\xe0\x56\xa8\x1d\x9c\xe0\xe0\xc0\x2a\xc2\x65\xee\xac\x05\xec\xd8\x44\x48\x46\x8a\x4d\x12\x2b\x87\xa3\xe0\x4c\x28\x37\xe4\x3d\x21\x27\x04\xfd\x41\xe7\xf3\xd1\x98\xa2\xe7\x6b\xec\xa0\xe7\x02\x9c\x43\x2a\x06\x54\xec\xd4\x4f\x98\x4c\x5d\xf0\x67\x41\x96\x4d\x83\x72\xc8\x6e\x16\x2a\x8c\x54\x18\x84\x9b\x41\xe5\x71\xfe\xb8\x3e\xb4\x2f\xbb\xcd\xdb\x8a\x08\x21\x43\x90\x9e\xaa\x50\x12\xb9\x79\x93\x1d\xc7\xe3\xcc\xcb\x44\xc7\x91\xe0\x4b\x80\x65\xee\x63\xf0\x56\x1d\xa1\xbb\xf3\x7b\xf6\x50\x34\x77\x87\x9c\xfb\xaf\x6d\x9d\x7d\x9a\x74\x75\x55\x3f\x53\x53\x5f\x84\x7a\x76\xdc\x3b\x2b\x7a\x3d\x1d\x47\x0b\xbe\x17\x12\x4a\x88\xe0\x3f\xe9\x94\xba\x10\xc2\x42\x21\xe3\x9e\x3d\x0f\xf5\x3c\x79\xe2\xfa\xaf\xa1\x90\x12\xd5\xef\x19\x2b\xc6\xd5\x26\x0b\x66\xf9\x97\xb6\x44\xcf\x48\xd9\x9f\x38\x99\xd7\xc4\x85\xe6\x84\xaa\x1e\x6e\x30\x85\x5c\xf7\x5c\x2d\x80\xc7\xa3\xee\x43\x54\xfe\x13\xc6\x76\x09\x1c\x86\x67\x37\x3d\x30\xe6\x0f\xf8\xe0\x9f\xed\xef\x17\x5a\x1a\x87\x39\x5f\xef\xa0\x72\x2b\xf6\xc0\x1c\x65\x55\xcf\xf0\x68\x89\x2a\xfe\x94\x86\xcb\x1f\xcc\x5f\xb6\x64\x1e\x82\xd8\x70\x79\xba\x5d\x7a\x9c\x13\x93\x55\xd6\xc1\x4c\x50\x7d\xbd\x59\x47\x24\xb5\x53\x51\x10\x09\x65\xbe\x9e\x5d\xbf\xa7\x70\x88\x78\xc4\xb2\x9f\x4d\x54\xc2\x17\x74\x6e\x32\x6a\xb2\xa5\x4f\x99\xb8\x81\xd7\xda\x5b\x11\xed\xb0\x8a\x6d\x79\xd8\x85\x69\x1b\x1f\x70\x85\x51\x73\x10\xb3\x09\xcf\x9b\x1b\x71\x4a\xab\xc5\xc1\x7a\x50\x9b\x14\x0b\x89\xb3\xf9\xdc\xee\x50\xca\xb4\x41\xbf\x5a\xd3\xbb\xc2\x99\x90\xf6\x27\x40\x61\x70\xa7\xa1\x0f\x2d\x47\xdf\xc9\x25\x61\x54\xf9\x62\x30\x8e\x76\x9a\x2a\xb1\xb2\xa0\x0e\x27\xe3\x27\xf0\xd1\xfa\x16\x4d\x1e\x38\xea\xd5\xce\xaa\xe2\x38\xba\x52\x6f\x54\xb8\x1b\x45\xde\xa6\xc8\x97\x41\x86\xb1\xb6\x72\x5f\xa4\xc8\x3e\x62\xf3\xe2\x54\xf7\x29\x87\x1b\xda\x4d\xc4\x44\xbc\xe7\x8f\x09\x03\xfa\x31\x8e\xaa\xc8\x22\xa9\x55\x32\xab\x01\x9e\x9c\xfc\x56\x19\xe2\xc2\x06\x7f\x25\x8f\x43\x75\xd2\xe0\x22\x2e\xa5\xbf\x96\xa2\x53\xa2\xa3\xfa\x9e\xea\x02\xc3\xee\xcc\xb0\x28\xc7\x6b\xc6\x0d\x38\x29\x8b\x95\xb9\xaf\xe6\x60\x31\xb1\xa2\xa2\x61\x52\xfd\xaa\x7e\xf4\xf8\x37\xab\xb5\x11\x85\xdf\x8b\x2e\xf8\x5a\xd2\xc9\xbe\x6d\xfb\xa7\x5e\x37\xdc\x7d\x12\xe1\x78\x7f\xc5\x5f\x86\x6f\xd0\x66\xf1\x22\x91\xdf\xf1\x97\x6a\xfc\x10\xda\x91\x31\x01\xe7\x04\x95\xd8\x78\x33\x48\xd6\x11\xb0\x11\xec\x67\x1c\x0d\xa7\x37\xbf\x96\x2c\xdc\xc9\xe4\xa8\x00\xb5\x13\x93\x5a\x56\xd0\x84\xea\x64\xa7\xd4\xe8\xe9\x9e\xe9\x44\x0a\x73\x61\x32\xe4\x2c\x90\x95\x03\xc2\x22\x4a\x14\x1b\x25\xce"}, +{{0x39,0x3b,0x76,0x94,0x82,0x37,0x5b,0x82,0x14,0x27,0xa6,0x6d,0x16,0xe4,0xf5,0x51,0x85,0xb7,0xa3,0xb7,0x33,0x8f,0x1a,0x06,0xf6,0x7c,0xdf,0xa7,0xe3,0x5c,0x54,0x1c,},{0x84,0xaf,0xd7,0x06,0x78,0xff,0xa8,0x5a,0x9f,0x65,0x74,0xcb,0xcf,0xe3,0xb1,0x5d,0x04,0xa9,0xfd,0x15,0x01,0x6f,0xf8,0x55,0x0a,0x98,0x7c,0x4b,0x95,0x1c,0x71,0x22,},{0x31,0xf9,0x8c,0x0a,0x08,0xfd,0xa8,0xe7,0x35,0xb5,0x73,0x66,0xaa,0x1b,0x83,0xb9,0x3d,0xae,0x63,0xb5,0x81,0x0c,0x82,0x1d,0x99,0xcb,0x39,0xdf,0x52,0x1f,0xea,0xc0,0x7f,0x3c,0x41,0x0b,0x27,0xba,0x33,0x07,0x75,0x7d,0x60,0x49,0xf2,0x24,0x54,0xfb,0x6d,0xe9,0xe2,0xc3,0xc2,0x43,0x8d,0x68,0x31,0x90,0x97,0xd1,0x12,0xcf,0xdb,0x07,},"\x8a\xe8\x05\x3e\x03\xbe\xbe\xae\x54\x40\x43\xb8\x41\x4b\x38\x53\x64\xad\xd1\x67\x37\x37\xcf\x8a\xb2\x01\x93\xd4\xaa\xbc\x8a\x78\xe1\xd6\x9b\x9c\x7e\x52\x72\x9e\x69\x30\x78\x06\xe9\x27\xce\x38\x07\xb0\x7c\x68\xc8\x33\xc4\xfc\xf1\x6d\xb1\x5e\x7d\xce\x60\x4d\x17\x98\x91\x5f\xd4\x21\x16\x89\xb4\x86\x46\x42\x50\x2d\x38\xe9\x1b\x19\x97\xb7\x18\x23\x31\x8b\x69\xab\xe5\xbe\xd6\xf5\xe3\x01\x5b\xfb\x22\xdf\x30\xdb\x37\x1f\x22\x60\xc5\xc2\x2e\xba\x60\xdf\x39\xb3\xed\xd3\xc4\xd7\xa1\xe1\x11\xcd\x9b\x8a\xa4\x6f\x67\xbd\x0c\xf3\xa7\x17\xaf\x06\xec\x0c\xe5\x67\x02\x8e\x06\xe4\x79\x79\x34\xad\x69\xb1\xf5\xbe\x44\x0f\xf3\x7a\x8a\x03\x4b\x15\x33\xfa\x94\x64\x24\xac\x59\x54\x00\xad\x27\xd3\xbe\x76\xdc\x89\xba\x9d\x6c\x49\x93\x9a\x09\xf2\xe4\x01\xc8\xf2\x0f\x7f\x7b\x4b\x9e\x63\xb9\xd5\x52\x01\x53\x4a\xb4\xcc\x7b\xe8\x85\xf0\x43\x2a\x2c\x66\x73\xd2\xe7\x65\x19\x4d\xff\xd9\xb6\x09\x6d\xd2\xb2\x84\x39\x18\x75\x09\x59\xa8\xdd\xe4\xa3\xab\x40\x7e\xb2\xf7\xe1\xa4\x9c\x25\x97\xe3\x08\x05\xf8\x48\x0d\xd0\xcc\x82\x72\xa3\x20\xc0\x0a\xa2\xb2\x10\xf5\x76\xe4\x25\x77\xd3\xaa\x41\x97\x03\x69\x7c\xa4\x06\xd4\x3a\x1a\x4f\x99\xb0\x73\x36\x64\xf6\xd6\xb2\x40\x3c\xba\x1b\xdc\xc5\x1f\x54\x1c\xf2\x42\x36\x07\x05\x70\x54\x07\x55\xc7\xa8\x63\x1f\xcc\x2f\x18\x93\x8f\xa1\x1b\xc2\x91\x15\x5b\x39\xd7\xa7\x62\xa1\xff\x4d\xca\x97\xb4\x48\xf7\x0e\x2d\x3d\xe4\x47\xcb\x08\xf9\x18\xea\x20\xcb\x43\x3f\xa1\x15\xe3\x08\x80\xc9\x6c\x8c\xf5\xf0\xeb\xbc\xf4\x82\x30\x9d\xb6\xdc\x1f\xb6\x4e\x17\xc0\x4d\x7c\xdf\x7a\x90\xf4\x01\x4d\x15\xae\x76\x96\xb4\x44\x23\xb0\xba\x08\x4e\xed\x4d\x3f\xb2\x8c\x1e\xfb\x39\x82\x8a\xca\x2f\x40\xca\x6d\xf3\x42\xc2\x0e\x95\xf8\x00\x6b\x27\x67\xa8\x3f\x50\xc3\x1f\xcc\x15\x81\xa0\x97\x53\xe7\x82\x91\xf0\xd9\x93\x1d\x99\x2a\xd3\x60\x44\x73\xce\xb8\x85\xec\xbe\x78\x57\xcc\x52\xad\x55\x85\x33\x4d\x14\x85\xd0\x22\xe1\x06\xb7\x1c\x29\xbd\xfc\xf2\x3e\xe8\xa4\x75\xdf\x2c\x09\x05\x32\x35\x6a\x6f\xfc\x02\x23\x23\x17\x98\x8a\x2c\xbc\xfb\xc2\xa3\x6b\x4b\x48\x3c\xb4\x45\x10\xe8\x55\x99\xb6\x12\x59\x6b\x62\x65\x72\xb0\x99\x6d\x8a\x61\xc0\xee\x3e\xff\xf1\xf7\xc7\x1c\x05\xfb\x5a\x8d\x8c\x5d\x09\xd9\x24\xeb\xaa\xc8\x80\x04\x51\xc9\xdb\x24\x56\x71\x0a\x27\x9d\xfe\x2d\x22\xf6\xae\xa9\xde\x31\x80\x1d\xc7\x42\x53\x43\x62\xb0\xe8\x10\xe9\x9e\x84\x1d\xbb\x7f\x0c\xf9\xaf\x1a\xef\x54\x2a\x52\xc7\x76\xcc\x51\xf2\x87\x36\x8f\xbe\x6a\xd6\x51\xfa\xd5\x78\x7e\xf7\x7c\x73\x53\x5f\x3d\xfb\x36\x18\xcc\x8f\x0d\xbb\x54\x9d\xdc\xa9\xb9\xbf\x91\x13\x5a\x34\x56\x00\x1a\x46\x21\x5a\xde\x38\x8e\x7c\xeb\x9f\xcd\xfd\x0d\x2d\x0a\x03\x56\xaf\xbe\x2c\xec\x1c\x2e\x78\xb4\xd9\x98\xd4\x55\x4f\x46\x21\xf1\x15\x1d\xd3\xff\xd3\xba\x4c\x0b\xc8\x52\xf3\x11\x75\x8c\x5d\xca\x42\x5d\x18\xba\x15\xa8\xd6\x7c\xa4\x01\xd0\xe6\xcf\x28\x0c\xb8\x83\x84\xa2\xda\xd4\x9f\xae\x39\xba\x2a\x77\xb4\x67\xb3\x23\x8a\xa2\x8c\xfd\x13\x7e\x5c\x5c\x0f\xf9\x00\x0f\x8b\x06\xa2\x19\x2e\x16\x29\x20\x69\x22\x65\xdb\x24\xab\x6a\xed\xe5\x35\xe3\x1c\x20\x93\xbe\x57\xeb\xf8\x80\x5d\xf1\x78\x89\x14\xf3\xa8\x84\xf8\x84\x17\x90\x15\x80\x8d\xb4\xd3\x02\x0f\x3e\x78\xbc\x34\x28\x5d\x23\x37\x62\xe8\x99\xeb\xff\x28\x42\x82\x15\xe2\x44\x40\x4d\xe2\x91\x72\x8f\xbf\x41\x24\xce\x5b\x24\x35\x26\x0a\x8e\x34\x11\x80\x07\x5a\x56\x51\xe6"}, +{{0x26,0xcb,0xc2,0x51,0x0e,0xe6,0xea,0x39,0x0a,0x2c,0xb9,0x48,0xa0,0x15,0xd1,0x31,0xab,0xf4,0xc0,0x95,0x49,0x15,0x62,0x0b,0x78,0x16,0xae,0xcf,0x4e,0x11,0xda,0x6d,},{0x14,0x5e,0x8d,0xd2,0x2b,0x44,0x00,0x28,0x9d,0xaf,0xb6,0x26,0xd9,0x5a,0x94,0xc2,0xf3,0xb6,0x9c,0x65,0x19,0x77,0x17,0xcb,0xdc,0xd8,0x50,0x98,0xc5,0x49,0x21,0x07,},{0x67,0x10,0xd0,0xdd,0x00,0x54,0x5b,0x44,0x4c,0xf7,0x14,0xb7,0x91,0x44,0xfe,0x79,0xf3,0x8c,0xb1,0xc0,0xf5,0xb7,0x42,0x48,0xd4,0xf0,0x1f,0xe3,0x60,0x11,0x7a,0x26,0xff,0xed,0x4a,0x3b,0xf2,0x13,0x23,0xb2,0x8a,0x39,0x3a,0xe9,0xde,0xe0,0x7d,0x69,0xe5,0x83,0xe3,0x16,0xc6,0xa5,0x73,0xd3,0x7c,0x64,0x4a,0x8d,0x62,0xc4,0x05,0x06,},"\x9c\xeb\xe2\x4b\x4f\x8a\xde\x86\x43\x0e\x27\x9a\x3c\x43\x3e\x4a\xe1\x7e\x00\x88\x52\xa2\x4f\x08\x69\x0c\xbc\x3d\x75\xe3\xb7\xf2\x00\xda\x89\x7c\x25\xf7\x48\x3b\x37\x63\x7d\x4b\xc1\x10\x08\xd9\x22\x4c\xd5\x81\xfb\xc0\x38\xad\xad\xa0\x2d\x27\x1e\xd2\xa5\xd2\x85\xd8\x43\xa0\xf8\xb7\x9e\x37\x94\x5d\xc3\x5b\xc2\x64\xbe\xcd\x80\x43\x07\xe1\xd4\x42\x18\xa6\x43\xe4\xb5\x9a\x93\x11\xde\x98\x5d\x24\xb4\xc2\x6f\xb1\x46\x03\xbe\x5d\xba\x18\x39\xee\x0c\x8d\x2e\xde\x6c\xb5\x0a\xf6\x7c\x80\x45\x19\x03\x7b\x1b\x16\x63\x31\x8c\xfc\x6e\x75\xd0\xf0\x51\xdb\xb5\xd3\xea\xf3\xaa\xd1\xf7\x8e\xf0\xcf\xf4\x8d\x5c\x55\xb2\xfd\x25\xdb\x15\x39\xd0\xf0\x2d\xae\x9f\x25\x14\x8a\x8d\x33\x8b\x97\x87\x9b\xbd\x39\xdf\x96\x1a\xa2\xc3\x96\x31\x5a\x2a\x86\xcc\x78\x35\x81\xe6\x7e\xa8\x44\xac\xfe\x86\x45\x42\x8a\x27\xb8\xd3\x2e\xa3\x06\x4e\x3b\xf6\x2d\xcf\x58\x01\x0e\xc4\x34\x88\x62\xfa\xc2\x5e\x3d\x9f\xcd\x4e\x5d\x65\xbe\x59\x90\x5d\x81\x6d\xfb\x96\x49\x92\xba\x7a\xce\xef\x8c\x20\x75\xa3\x12\xe5\xff\xc4\xf9\x53\x0e\xa2\x0f\x77\xf9\x3e\x81\xcf\x8a\x01\x9d\xc3\x94\x56\x34\x36\x4b\xab\xf7\x97\x72\x04\x5a\x0d\xba\xa7\x7c\x47\xa2\x2b\x77\x22\x3b\x70\x4d\xeb\xd2\xd0\x03\xf6\xa5\xc7\xbf\x6b\x19\xcd\x2c\x49\xb6\x14\xfd\x4d\x47\xfd\x25\x1f\xe6\x22\xcb\x98\x17\x85\xc1\x46\xbd\xb7\xc1\xd2\xea\x02\xb1\x16\x92\x3b\xf9\x8a\x1a\xfb\xb7\x85\x8a\xdf\x2d\xf9\x38\xa7\x90\xec\x1f\x90\x74\xad\xb8\xd1\xaf\xb5\x63\x3f\xa9\x61\xa8\x47\x64\x01\x0d\x3b\xde\xd1\xc0\x33\xd2\x5a\xbd\xb4\xb0\x0f\xb0\x5e\xd7\x64\x0f\xae\x61\x87\x9d\xf8\x8f\x0b\x09\xe3\xab\xd0\x57\xb9\xa5\x21\x08\xa9\xbc\x98\x5f\xb7\x3a\x5f\x29\xd8\x4d\x1c\xa6\x92\x1b\x62\xf1\xb7\x03\xc7\xee\xb4\x81\x5d\x9d\xd6\xd0\x66\x73\x8d\xb1\x18\xba\xf6\x1b\x04\x22\xf3\x88\xf1\xbf\xc9\xe3\xa9\xbe\xd8\x3a\x1a\x72\x7d\xcc\x26\x6a\x99\x88\x36\x48\x46\x80\x7f\x4d\x55\x18\xbc\x2e\xdd\x0e\xcb\x34\x13\xc2\x6f\xd0\xc7\x9b\x75\xd8\xcb\x5b\xcd\x85\xc0\x6f\xcc\xea\x4d\x03\xfb\x89\x88\xdf\xf3\xed\x0c\xc9\xdb\xae\x78\xd6\xae\x8d\x5f\xc4\x02\x46\x17\xa2\x3f\x52\xbd\x61\x53\x85\xd4\xee\xe0\x8f\x91\x34\xeb\x3b\x25\x0c\x8f\x82\x2b\x47\xd9\x1e\x8c\x4d\x4c\x29\x29\x80\x16\xe6\xfc\x81\xf1\xf1\x09\x92\x53\xd7\x94\x5e\x07\x98\x95\x5d\xa0\xdd\xe1\x4e\xbb\x93\x4e\xcf\xae\xea\xba\xe8\x78\x83\xe1\xcc\x39\x80\x67\x40\x0f\xe4\x62\xa2\xc4\xe9\xf2\x32\xdb\x5c\xdd\x61\xeb\xa9\x49\x18\x8c\xf0\x1b\x23\x8b\xe7\xad\xa9\x38\xf0\x02\xdc\x3a\xe3\x1f\xdf\xd4\x25\xc8\xd4\x6e\xa0\x32\x32\x3a\xaf\x20\xdd\x3d\xe2\x50\x7d\x36\xbb\x45\xfb\xb9\x1c\x40\x96\x9a\x9e\x5d\xa2\x0f\x7f\x93\x6b\x0f\x4b\x13\x7b\x62\xfe\x2b\xa3\xa6\x67\xbc\x03\x62\xd9\x3f\xc5\x0d\x3f\x22\x95\xe1\x67\xfc\xba\xb0\xfb\x3a\x39\xb7\xcb\x02\x4b\x57\x8f\x94\x90\xf7\x34\xb2\x8c\x9c\xcf\x71\x92\xf1\x83\x94\x7d\x5a\x51\x3e\xfa\x49\x16\xe4\xd8\x2b\x2a\xb4\xba\x7e\xc2\xff\xba\x21\x3c\xe8\x2a\xd6\xed\x3b\x10\xe4\x85\x53\xe7\x33\xc9\x40\xaa\x9b\x9c\xe7\x13\x37\xc6\xc2\x80\x5d\xfb\x8d\xd6\x61\x8b\x6d\x40\x90\xa3\xd6\xcc\x96\x3e\xce\xa2\x6d\x1c\xdc\x2b\xf5\xac\x99\x9c\x11\x27\x61\x68\xa9\x31\xd8\x16\x46\x9d\x79\x08\x3c\x24\x08\x1a\x50\xdc\xbd\x22\x27\x52\x38\x52\x67\xce\x1b\xfc\x1d\xb7\x6b\x15\x54\xad\x57\xe3\x47\x52\xb7\xf8\x98\x31\x47\xc1\x16\xd4\xa3\xfa\xe6\xf6\xd5\x7e\x65\x4f\xed\xd7\x37\x8d\x2b\x49\x89\xea"}, +{{0xb1,0xf5,0x9e,0x3c,0x23,0x80,0xd7,0xaa,0x41,0x4d,0x0b,0xf9,0x08,0x93,0xa3,0x8d,0xdd,0xfc,0x29,0x38,0x59,0x30,0x3d,0x16,0xf0,0x0d,0x9e,0xae,0x6c,0xb3,0x45,0x0e,},{0x84,0xe3,0xf5,0xf7,0x2f,0x19,0x09,0x5b,0x0f,0x53,0x38,0x48,0xa5,0xa9,0x1d,0x0f,0x07,0x43,0xb8,0xe3,0xa3,0xe2,0xf5,0x2f,0xcb,0xd7,0xeb,0xe7,0xc5,0xb5,0xa9,0x98,},{0x60,0xaf,0xc1,0xe9,0x91,0xfd,0xd2,0x7c,0xc4,0x72,0xb9,0xac,0xc9,0xd4,0x05,0xb4,0xd2,0xb9,0x13,0x08,0x92,0x90,0xb3,0x11,0xc4,0xfa,0x89,0x1a,0xe2,0xee,0xa0,0x56,0x71,0xfd,0xe7,0xa0,0xef,0x86,0x55,0x7b,0xd8,0x67,0xd1,0xc0,0xb7,0x47,0xca,0xf3,0x52,0x29,0xd6,0xef,0x52,0x8f,0xe3,0xe0,0xd0,0xbc,0xf6,0x30,0x38,0x0e,0xa9,0x0e,},"\xc6\x17\x4c\x9a\xd3\x68\x5d\xd6\x48\x63\x60\x17\x83\x7b\x8d\x99\x22\x00\x31\x9e\x9a\x5a\x0d\x26\xd9\x4d\x2d\xa7\x5e\x2c\x3a\xff\x46\xf4\x2d\x7b\x3a\xba\x47\x2b\x7f\x86\x0b\x0f\xe1\xf6\x95\x52\x97\x31\xfd\xc8\xcf\x0d\xa7\x05\xd1\xd0\x9a\xca\xd0\x4f\x01\x08\x37\xec\xef\x41\x9d\x57\xe9\xea\x6c\xac\xf1\x68\xc5\x21\x56\x96\xf4\x71\xf3\xca\xa8\x97\x60\x7c\x62\x9d\x44\x3d\xe0\x99\xd3\x17\x53\xc2\x46\x77\xd8\xd7\x5f\x4b\xf1\x72\x46\x81\x8b\x58\xad\xc0\x42\x4b\x76\x2a\x19\x1e\xf3\x9a\x70\x76\xa5\xad\x12\x61\x4c\xf5\x4c\x47\xeb\x09\x08\xbb\x86\x65\x18\xc5\xfa\xc1\xca\x2d\x2e\x5b\x65\x75\x20\xa2\xb3\x69\x5c\x6f\xb3\x60\xf1\x6f\x4a\xb3\x57\x99\x8e\x4c\x0e\x97\x23\x1d\x6f\x89\xc9\x68\xdc\x29\xec\xc1\xaa\x91\xfa\x0d\x75\x43\xb5\xd2\x24\x7b\x0d\x85\xe4\x87\x43\xab\x7c\xc8\x15\xcf\xda\xa8\x2b\xf6\x8c\xa6\xd3\xe2\x25\x0b\xfd\xa2\x70\x24\xd6\x1b\x47\x4c\x6b\x81\x54\xac\x8d\x1b\x5a\x36\x20\x97\x82\x51\x5c\x16\x46\x68\x0d\x37\x06\x9b\x8b\x44\x12\xf9\x51\xb0\x25\xa4\xd5\x43\x62\x5d\xd0\x22\x90\xbf\x03\xc6\x73\x46\x13\xf9\x9b\x7a\x4c\x3a\xf5\xc5\xf9\xe9\xac\x34\x74\x46\x5e\x64\x84\x23\x01\x8d\x40\xa6\xad\xbe\x88\xa3\x30\x1d\x3d\x25\x9b\x04\xee\x44\xcc\x05\x62\xee\x0d\xed\x4f\x5e\x26\xad\x97\x7a\xb5\x63\x1f\x85\x76\x8d\xbc\xe5\x3f\x61\x6c\x02\x9a\x8b\x8f\x93\x3e\x2a\x92\x64\xb1\xc8\x1f\x51\x7e\x9f\xf5\x8a\xb9\xf4\x5a\x23\xee\xed\x42\x04\x35\x8f\x8f\xff\x0c\x8f\x97\x5e\xf1\xdf\xa5\x77\x6a\x5f\x77\x93\xba\xe2\xf2\x81\xd7\xb0\xcb\xef\x24\x0b\x3f\xc6\xbe\x05\x88\x21\xea\x2b\x80\x0f\xff\xe5\x5a\x7d\xe0\xaf\xc9\x3e\xde\x9c\x60\xc8\xde\x00\x5a\xbb\x9a\x2c\x88\xf4\xe6\x1e\x8d\xeb\x31\x70\xf1\x07\x8a\x36\xe2\xd8\xf2\xa5\x82\x39\xbd\xee\x49\x6e\x90\xd1\x37\xd2\x11\x0f\x0a\xd8\x57\xa8\x8b\x35\x27\x66\x4f\x78\x19\x39\xe0\xb2\xf7\x66\x34\xff\x9f\x6c\x57\xe1\xc4\x3f\x58\x24\x31\x71\xcd\x86\x2e\xf4\x28\x45\x76\x17\x2a\xf1\xf6\xc3\xbd\x37\xd5\xd7\x4b\x28\xa7\xa9\x86\x98\xbd\x74\xe5\x7b\xbc\x14\x2e\x67\xf7\x03\xf9\xd6\x2c\xde\x76\x1a\x02\x26\x8f\xec\xb3\x43\xfc\x01\x41\x88\x36\x41\x4f\x12\x22\xca\x24\xbc\xdd\x69\xd0\x05\x90\x1d\xa2\xa0\xf9\x44\x65\xe4\xd4\xba\x68\x89\x88\x16\xbf\x7e\x3e\x4b\xb7\x9c\x8c\xa5\x99\x7f\xba\x9a\x8d\xf8\x4f\xaa\x2d\x24\xb0\x44\xc4\xea\x61\x02\x9a\x46\xcb\xa7\x03\x42\x1e\x36\x1d\xfa\x52\xca\xaf\xf3\xbb\xaa\xb7\xfd\x75\x3f\x28\x56\xd7\xc0\x83\xae\xb9\x76\x8d\xa1\x1d\x82\x1e\x2d\x30\x9f\x7a\x73\x5c\x39\x96\x92\xda\xc2\xf2\x62\x84\x6b\x89\x1b\xf6\x46\x1a\xf2\x3c\x8c\x7c\xe1\xd4\xd9\x03\x2c\x3c\x14\x0f\x73\x9e\x55\x84\xc3\x6f\x05\xea\xf4\x34\x9f\xf4\x54\x5f\x28\x3a\x4e\x0f\xea\x49\x43\x0a\x1b\x18\x0d\x08\x71\xe3\x74\x2b\x88\xcc\xb5\x91\x12\x4f\xc4\x27\xed\x67\x3b\x5f\x27\xb0\xb0\xa6\xf5\x4a\xf2\x2b\xa4\xa6\xd1\xc6\xc1\xdb\x2a\x1f\xca\xa6\xd8\xa0\x30\x8b\x77\xef\x2d\x0c\x61\xbb\xf5\x1b\x95\xf1\xe8\xb6\xab\xc5\x04\x1d\x97\xb6\xb6\xf1\xb5\x69\xb3\xf6\x3c\xec\x05\xcb\x56\x7a\xae\xa1\x06\x72\x70\x96\xee\x8a\x9e\xa8\x7b\x88\x04\x90\x1f\x7e\x88\xa7\x40\x9c\x66\xf1\x52\xde\x9d\xbf\xcb\xe3\x19\x52\xe6\xfd\x83\xb2\x87\x7a\x77\x5f\xae\x42\x5b\x38\x51\xe0\xef\xf8\x79\x2f\xfb\x38\x48\xf8\x4a\x65\xcc\x31\x72\x53\xb2\x72\x47\x5e\x71\x7e\x49\xe9\xc6\xff\x6b\x78\x59\xd1\x1b\xba\x7c\x44\x28\xc8\x2d\x17\x89\xe0\xdc\xa5\xbc\xad\xca\x2f\xdb\x25\x9e\x98"}, +{{0xdb,0x46,0x1b,0x9f,0x70,0x7e,0xb2,0xcd,0x77,0x48,0xc4,0x4c,0x99,0x56,0x2f,0x13,0x02,0x39,0x74,0x89,0x35,0x3d,0xf5,0xf3,0x03,0x79,0x7f,0xe0,0xd0,0xb5,0x8d,0xe1,},{0x63,0x51,0x16,0xda,0x8b,0xa5,0xa3,0x6a,0x37,0x77,0x28,0xe2,0x86,0x18,0xe7,0x5c,0x55,0x92,0xae,0xcc,0x18,0xe3,0x40,0x11,0xc4,0xc4,0x25,0x91,0x97,0x0b,0x73,0x66,},{0xdd,0x04,0x9c,0xa7,0x9b,0xeb,0x9e,0xac,0x32,0x5a,0xcf,0x44,0x67,0x2f,0xf5,0x78,0xa9,0x68,0x50,0x2f,0xe1,0xbc,0xf5,0xea,0x19,0xd5,0x2c,0x0f,0x67,0x78,0xc7,0xf1,0xc7,0xbb,0xf7,0x42,0x74,0x79,0x07,0x78,0x6e,0x60,0x81,0x23,0x91,0x1a,0x92,0x07,0x78,0xd2,0xf9,0x59,0x6f,0xe2,0x9b,0xe7,0xcc,0x28,0xfd,0x00,0x9d,0x7c,0x44,0x0e,},"\x1a\x2a\xc8\xc1\xb9\xea\x09\x9b\x83\x1a\x68\x12\xd2\xb4\x26\x13\x09\x05\x8e\xa5\x88\x3d\x70\xb1\xc6\x07\xb9\xcd\x3f\xdf\xdb\x86\xe7\x99\x02\xb0\xfe\x89\xe8\x0e\xa7\xc4\x78\x20\x76\x74\xb2\xd8\x03\xb0\xb9\xca\x14\x7f\xfe\x62\xe5\x94\xf5\x06\xc7\x96\xd6\x89\x97\xce\x48\x2b\x51\xa4\x6e\x49\xb4\xa5\xd8\x58\xcd\xea\xe2\xc6\xec\x9b\x69\x41\x98\xe6\x82\x2f\x0e\x33\xed\x57\xbe\xdb\x03\x35\xc7\x89\x0a\x72\xa7\xee\x3c\x23\x82\x3b\xe7\x9b\x7f\x94\x71\xe0\x33\xc7\x9a\xee\xd5\x2e\x57\x60\xfb\x0c\xcb\xb9\xd3\x8f\xde\xd8\xb4\x73\x83\xc1\x91\x03\xce\x44\x70\x58\x34\xc5\x9d\xdd\x86\xf7\x03\x39\x48\x61\x2d\x66\x62\xf5\x16\xce\x4e\x39\x9f\xf2\x03\x63\xcc\x72\x81\xa6\x9b\x2d\x5c\x30\x7b\x10\xb7\x04\x15\x01\x84\xec\xe3\x2f\x39\x0d\x77\x2c\xcf\xa7\x84\x83\xbb\x77\xa9\xfb\xa8\x44\x25\x36\x69\x84\x17\x1c\xc2\xbb\x60\xb0\xec\x6c\x62\x8d\x4e\x90\x30\x74\x6d\xac\x1c\xab\xca\x60\xf0\x56\x83\x81\x33\x46\xa1\xa5\xbc\x14\x72\x75\x49\x79\x5c\x1c\x92\x68\x69\xe1\xaa\x25\x09\x3d\x59\x1b\x43\xe0\x86\xe4\x3a\x04\xd1\x70\xd9\x42\xc4\x16\x5e\x1c\x5c\xe7\x6c\x3e\x64\x97\x3d\x91\x36\xf9\x32\x5b\xee\x82\x16\x82\xf1\x04\x3e\x95\x1b\x02\x76\x7f\x3f\xb4\x58\xd0\x24\x49\xad\xd3\xe8\xa6\x6e\x51\x6f\xdb\x1e\xd5\x80\xe0\x56\xe0\xf7\x8e\xe3\x3f\xd9\xee\x32\x80\x91\x2f\xae\x07\xfe\x1e\xa0\x25\x27\xcd\x00\x1d\x6f\x6f\x2f\x89\xee\x64\x9f\x51\x74\x14\xd5\x6f\x57\x35\x9a\x84\x68\x91\xf0\x22\x2c\x32\x1d\x7e\x70\x81\x79\x95\xa8\xcd\x8e\x94\x76\x0b\x6e\x74\x83\x2b\xab\x68\xd5\x5b\xc4\x64\x18\x84\x22\x1f\xd2\x9f\x12\x2d\x87\xa9\xa8\x68\xb6\xa6\x06\x0c\x87\xb2\x38\x2c\xf7\xbb\xdd\xa4\xcd\x6a\xaa\x1b\xbc\x8e\x6d\x63\x4a\xb5\x80\xc8\x65\xf5\xad\xd6\xa1\xd5\x4e\x61\xa6\x07\xdc\x2c\x37\xb0\x8a\x8c\xba\x6e\x61\x0c\x12\xcf\xeb\xef\x9c\x98\x9e\xef\x3b\x78\x2a\xcb\xd1\xbc\xec\x5f\x04\xe8\x35\xca\x10\x12\x98\xb5\xe9\xbd\xd8\x81\x3a\x71\xb0\xd4\x69\xfc\xf1\x27\x27\xd3\xde\x1c\x3f\x97\xdd\xbc\x6a\xb2\x65\x84\x40\xdd\x64\x21\x01\x9b\xc6\x8f\x35\x6d\x6f\x25\x53\x68\x65\x85\x1d\x92\xd9\x0f\xe9\x96\x9c\x3b\x7c\x35\xa2\xe8\x8c\xe1\x53\x47\x6e\xc3\x97\x3a\xf9\x35\x9f\x16\x77\xa4\xca\xf1\xcc\x48\x1c\x71\xbd\x90\x22\x8f\xf5\xfc\x6d\xd8\x3b\x8a\x69\x9f\xfe\x51\x49\x29\xf5\xc9\x5c\xb4\xf0\x4b\x00\xdd\x18\xa2\x87\x2c\x41\x86\x8d\x3b\xeb\x76\x49\x8d\xdc\x92\x34\xb6\x3f\x59\x9d\x70\x71\x80\x1d\xb2\xc2\x87\x8f\x7b\xef\x4f\xfd\xdd\x81\x32\x26\xf0\x6d\xb8\x4e\xb3\x02\x17\xa7\x18\x30\x82\xe3\xc1\x24\x2b\xb6\xd0\x1c\xd3\xa6\xce\x27\xbf\xf1\x6b\xfb\xfd\xd7\x5b\x7e\x51\x04\x31\x2c\x49\xc4\x3a\xad\xfc\xd5\xb4\xed\xba\x0f\xf5\x0d\x28\x90\xca\x3c\xd9\xcc\xa3\x3e\x4f\xc6\x94\xc0\x57\xc4\x7e\xbe\x1c\x20\xa4\xad\x11\x5f\x98\x5d\xc7\x44\x2c\x6f\x6d\xa7\xbe\x53\x0b\x69\x02\x28\x9c\xab\x9c\xa1\x39\xc6\xb2\x4c\xb8\x0f\xfd\xd7\x82\x32\x4e\x60\x2c\x45\x91\x0d\xb6\x3d\x8b\x5c\x44\xca\x29\xd2\x7f\x56\xdb\xf0\x01\x86\xba\x58\x3c\x34\xe1\x60\x31\xdf\x35\x75\x46\xb3\xab\x9a\x3d\xd6\x5e\x91\xd7\x12\x8c\x93\x91\x95\xe6\x46\xa0\xf0\xb8\x9b\xf5\xdf\x04\xba\x23\x3d\x6a\x12\xa2\x71\xf7\xe0\x4a\xa4\x5c\xda\x99\xb4\xa5\x5a\x21\xcb\xbb\x73\x85\x15\xe3\x2c\x56\xaa\xc2\x49\x62\x32\xb1\x00\x8a\x67\x61\xc8\x04\x5a\x1f\xe0\xf9\xa3\x64\x40\x47\xb5\x96\x6a\x58\xa6\x00\x46\x6c\x1b\x1d\x11\xdd\xad\x5a\xa5\x73\xc4\x3e\xbd\xa8\x87\xe1\x6a\x05"}, +{{0xf5,0xc0,0xa7,0xf8,0xf6,0x58,0x4c,0x5d,0x2f,0x2e,0x1d,0x08,0x10,0xe8,0xe8,0x61,0x03,0xe4,0xe2,0xd4,0x5c,0xf9,0xa7,0x21,0xd8,0xc4,0x7f,0x67,0x49,0x33,0x96,0xa4,},{0x3c,0x6d,0x6c,0xce,0x49,0x63,0x31,0x41,0x07,0x86,0x96,0x13,0x1a,0x8d,0x84,0xed,0x82,0x3f,0x30,0x66,0x4b,0x28,0x9a,0xf9,0xdd,0x30,0xc6,0x40,0x7f,0x6f,0x03,0x13,},{0xd4,0xc3,0x0a,0x48,0xc4,0x52,0x3b,0x1f,0x84,0xb1,0x4b,0x65,0x7a,0xf8,0xf8,0x59,0x75,0x5b,0xba,0x63,0x59,0x98,0x8b,0x67,0x5c,0x6d,0x85,0xdd,0xf3,0x54,0x62,0x82,0x0d,0xa4,0x76,0xd8,0x4f,0x6c,0x40,0x2e,0x65,0xb0,0x20,0xd9,0xe8,0xa2,0xc2,0x85,0xc1,0x67,0x08,0xae,0x58,0xd1,0xf8,0xdb,0xc6,0x57,0x82,0xa8,0x98,0xa6,0x65,0x08,},"\xd6\x8a\xbc\x60\x9a\x7a\x0c\xe2\x56\x69\x9e\xb1\x70\x43\xde\xfe\x1e\xb8\x22\xc9\x70\x8f\x65\x71\x8a\x06\x58\x1f\xab\x21\x10\xec\x2d\xb0\x92\x13\xbb\x9e\x0f\x36\x12\xce\x4a\x3f\x8f\xdb\xe7\x57\xa9\xf0\xeb\x2c\x3e\xba\x43\x8a\x90\x88\xb1\x8f\x6c\x5c\xaa\xbb\xe5\xc8\x2f\x7a\x9a\xb2\xfe\xcf\x0f\x58\x59\xd1\x75\xe1\x39\x26\x30\x33\x74\x24\x58\xf8\x2a\x6f\x38\x75\x6c\xd5\xbc\xdf\x9e\x07\x36\xdb\x2c\xab\x20\xa0\xcd\x3f\x0f\x1c\xdb\xea\x85\x56\xd8\x49\x09\x35\x8d\xd8\xf6\x9f\x0d\xac\xd4\x9a\xbf\x8a\xc1\xbf\xe7\x59\x40\xd6\x93\x9e\x6a\x55\x38\x5b\x5a\xce\x7c\xe1\xfd\xe1\x20\x67\x9a\xb6\xea\x7a\x89\xd1\x42\x68\xd2\x9f\xfb\x46\xdf\x10\x5b\xf3\x90\x92\x42\xc6\x60\x5f\x3e\x3e\x2a\xb7\x44\x89\x37\xd6\xdb\x2b\xa0\x54\xc7\xb1\x4f\x43\x2d\xb4\x1d\xc1\x8a\x5b\x95\x73\x36\xb7\xf5\x2d\x97\x8e\xc0\x3e\x7d\x57\x64\xe9\xbd\x2f\x4b\x68\x95\x8d\x93\x7b\xf2\x98\x23\xb2\x7e\xfb\x31\xe2\x5b\x43\x92\x5c\x4d\xac\xbe\x67\x18\xa6\x0f\xea\x3b\x32\x70\xe7\xb7\x6b\x0d\xe0\xe7\x0f\x7f\xa3\xc1\x2c\x21\x5e\xf7\x2b\x95\xdc\x1b\x52\x76\x23\x81\x79\xdf\xc5\x2f\xc4\x88\x59\x64\x9f\xa5\x82\xd0\x5a\x60\xdf\x68\x59\x9a\x1c\xee\xa6\x4f\x64\x12\xd3\xf8\x49\x8a\xe2\xce\xdb\x12\x42\x45\x88\x3a\x24\x0b\xc0\x85\x1f\x0e\x32\x49\x65\xbe\x12\x04\x86\xe1\xea\x89\xa0\x18\x2d\xfa\x8e\xab\xd3\xb8\xfa\x66\xa9\x9c\x51\x49\x13\x89\xf3\xc8\x3a\x3c\xdb\x42\x67\xf3\xe4\xdb\xc9\x8f\x0c\x44\x85\x6b\x04\x4d\xc8\x8d\x90\xee\xee\x84\x15\xbf\x73\xde\x17\x1a\xfe\x84\xbe\x90\x35\xe0\xdc\x4c\x80\xcf\x04\x22\x46\x9f\xe0\xc9\xbd\x1c\x6a\xa6\x54\xa5\x9b\x5e\x34\xee\xd3\x51\xcd\xa2\x87\x12\x69\xac\x47\x8e\x8d\x38\x2e\x74\x0e\x9a\xc7\xab\x4d\xdc\x4c\x0d\xef\x0a\xea\xb7\x97\xb6\xf1\xa4\x27\xb8\xe4\xa8\x49\x7a\x0b\x97\x97\xda\xdc\xd3\x5c\x41\x4f\xd5\x5b\x78\x31\x30\xf6\xcd\xed\x38\xa4\x4c\x1a\x89\x28\x83\x07\xeb\x84\x25\x48\x41\x37\xa8\xae\xdb\x03\x0d\x54\xb6\x16\xa8\x2e\x3c\x5a\xcf\xfb\x08\xd6\xcc\x1a\x61\x74\x5c\x29\xaf\xc6\x8a\x0c\x18\x38\xb1\x39\x15\x9c\x5f\xa6\x67\x4d\x66\xb9\xe3\x38\x11\x5a\xad\x4b\x1b\x47\x10\xaa\x5d\x95\x17\xbc\xf7\xe1\xcb\x12\xd4\xe6\xa5\x1c\x11\x78\x9f\xdc\xae\x9d\x9b\xbe\x78\xf6\x9a\x33\xe5\x2d\xf1\x83\x3c\x87\x6b\x02\x68\x7a\x40\x4f\xac\xad\x32\x84\x1c\xb2\xd5\x25\x54\xe7\xb8\xe2\x20\x9e\x3f\x88\xfd\x94\x8c\x1e\xcf\x83\x95\x7c\x96\xf4\x3b\x03\x4b\xed\xa6\xc4\x76\x09\x6b\xcb\x09\x30\x1a\xd6\x1f\x83\x67\xcc\x43\xe1\x56\x13\x18\x62\xb4\x2e\xce\x28\x5b\xec\x2d\xcc\x2d\x02\xd0\x94\xd0\x42\xa1\x60\x72\xeb\x22\xab\x98\x88\x01\x3b\xe8\x23\x71\x56\x94\x00\xec\x1f\x8e\xc7\xe7\x91\x08\xc4\x1b\x85\x33\x65\x26\x8f\xa4\xcf\xbc\x62\xc4\xac\x12\xcc\x98\xd2\xec\x38\xa8\x7d\x60\x85\x85\x95\x67\xc0\xf2\x7d\x6d\x43\x1a\x04\x6e\x88\xa9\x81\x55\x58\x66\x07\x05\xfd\x05\xeb\x06\xc6\xc0\x5e\x5b\x7d\x62\x34\x7c\xee\xe2\x7d\xff\xed\x71\x41\x54\x0d\x60\x8c\xb9\x75\x07\x5a\x96\x44\xac\xc6\x32\x84\x39\xf9\xfa\x68\x2b\x22\x6b\x18\x61\x54\x54\x90\x11\xc3\xb0\xf0\xff\x4f\x74\xca\xa7\x1c\x19\x44\xe4\xcb\x83\x6c\xe8\x51\xd9\xb5\xd9\xe7\x27\xc5\x53\xe3\xc7\x23\xcf\x98\xc2\x73\xe5\x67\x5c\xab\x89\x9b\xb6\x6f\x46\x33\xa7\x6d\xea\x35\x73\x41\xf9\x83\xc5\x3d\x91\x58\xad\x31\x9a\xda\x75\x40\x8b\x41\xc0\x6f\x26\xb7\x43\x5b\x80\xdc\x3b\xc0\xaa\xf2\x2a\x83\x3d\xde\xdc\xd6\x78\x5c\x87\xd1\x96\xb0\xaf\x2c\x9a\x43\xd1"}, +{{0x1a,0xb9,0x46,0xc0,0xc1,0xae,0xbf,0x9c,0xa3,0x7c,0x2f,0x4e,0x2a,0x4b,0x33,0x7d,0x5b,0x1e,0xbc,0xcd,0x24,0x73,0x4c,0x9c,0xb2,0xa1,0x60,0x8c,0x88,0x1e,0x57,0x57,},{0x9a,0xfc,0x63,0xdf,0xce,0x0d,0x48,0x9b,0x40,0x90,0x7a,0xee,0xd6,0xdf,0xfe,0x4c,0xd8,0xef,0x5a,0x6f,0xfa,0x22,0x98,0x95,0x56,0x44,0x5c,0xbf,0x9b,0x35,0x19,0xc2,},{0xbf,0xab,0xde,0xa4,0x18,0x10,0xa5,0x3f,0x8e,0x52,0x7a,0xcd,0x66,0xec,0x10,0x6c,0xe2,0xae,0x1a,0x67,0xff,0x6a,0x9b,0x52,0x2e,0x0f,0x08,0xfb,0xbf,0x12,0x52,0x68,0x2c,0xb3,0xa1,0xdc,0xc8,0x75,0x60,0x19,0x44,0xcb,0x88,0x00,0x0f,0x72,0xe1,0x39,0x07,0x00,0x79,0x03,0xa7,0x7c,0xd0,0xdb,0x03,0x16,0xd4,0x19,0xac,0x38,0xc2,0x04,},"\x9b\xb0\x71\xb6\x2c\x04\x06\x4b\x0c\x96\xe2\x43\xdd\x19\x8c\x39\x71\x7b\x25\xc9\x94\x48\xc2\xc0\x02\xb8\x4a\x99\x20\x4c\x5a\x6e\x23\xb4\xb9\x12\x02\x86\x75\xbf\xdc\x4d\xf9\x3c\x5b\x2f\xb8\x08\x81\xa2\x3e\x0d\x44\xba\x18\xbd\xe9\x91\x21\xee\xe8\x6a\xdc\x6f\x84\x28\x19\xd6\xeb\xc7\xa2\x88\x99\x2d\xa3\x28\x58\x05\xa8\xb8\xb6\xfb\xcd\x22\x67\xb6\x86\xb3\xe1\xbf\x79\x60\xb4\x5f\x24\x4f\x85\x2e\x82\x49\x29\x44\xe3\xd6\x18\xbc\xc4\x51\x4c\x17\xf7\x22\xba\x49\xac\xa7\xf2\xf3\xbb\x4e\x91\xf9\x40\xe9\xce\xf0\x15\x65\x0c\x3e\x40\xb0\xc8\x55\xa1\x7c\x42\xf1\x1e\x3a\x34\xac\xc8\x52\x87\xdb\xe0\xf9\x09\x3c\x00\x37\x3d\x50\xc0\xb3\x06\x4a\x5a\x5f\x2b\x1e\x89\x20\x65\x17\x52\x82\x95\xfd\x87\x17\x03\xa8\xe7\x62\xb5\xe7\x6f\xb9\xb7\x47\x3d\x21\x49\xb8\x5b\x94\x61\xf5\x58\x7e\xd7\xe7\xfc\x8b\x50\xaa\x09\x87\x6d\xee\xb6\xe2\x37\x07\x85\x02\x14\x2c\xec\x6b\xdd\xc7\x01\x40\xfe\x1d\x1f\x16\x58\xd5\xd3\xe9\x10\xfd\x70\x36\xa2\xf9\x24\xb4\x99\xdb\x17\x56\xf7\xc8\xce\x0d\x5f\x0d\x04\x5b\x39\xbc\x81\xc5\xc2\xf1\xa7\x61\xf5\x2f\xf3\x93\xe0\x64\x9b\x8d\xb0\xbd\x88\x54\xbd\x02\x6b\xe2\xc7\xc3\xcd\x63\x52\x6b\xa5\xa8\x0d\x48\x33\x5f\x03\x38\x32\xd6\x33\x76\x07\x1b\x63\x08\xf0\x59\x60\xcb\x3f\xc9\xfa\xc9\x32\xed\xd8\x37\x6d\xae\x51\xf2\xc6\x61\xf7\x5b\x7c\x6f\x4a\xc8\x56\x75\x3a\xca\x62\x06\x28\x77\x60\x9f\xc4\xa0\xff\x60\x67\x02\x82\xc0\x5e\x88\x2d\x1a\x03\x5b\xf9\x89\x0c\xab\x29\x6a\xc7\xa8\xdf\x24\x4c\x56\xf4\x90\x25\x0f\x02\x00\x54\xb8\xaf\x51\xbe\x4f\xc3\x18\xbe\xba\x50\x62\x32\xbf\x45\xe1\x7f\x5c\x74\x0c\xf0\x9d\x37\x51\x5a\x8b\xc8\x94\xbc\x95\x5c\x8a\x46\x08\x77\xc7\x85\x4f\x8b\xe3\x63\xb2\x19\x33\xe1\x62\x87\xae\x0c\xb7\x0f\x22\x2d\x4e\x36\xb8\xb4\x24\x97\x55\x59\xbb\x4b\xfc\x8d\xd1\xd5\x1b\x3c\x0f\xaf\x4a\x53\xe3\x02\x19\x6f\x9f\xed\xb5\x32\x87\xd0\x93\x15\xdf\xff\xa2\xbc\x4b\x3a\xcf\xf1\x37\xf9\xa7\x6d\x68\x56\x21\x7f\x79\xcb\xb2\x54\x33\xfc\x97\x89\x9f\xd6\x54\x0f\x18\x08\x8e\x84\x41\x7e\x48\x33\xe4\xa9\x1a\xab\xa4\x65\x8a\xe9\xad\x7f\x76\x0d\xd9\xc5\xb7\x19\x1a\x0d\x3c\x05\x54\x1b\x83\xc0\x25\xa7\x99\x21\x38\xe6\xd1\x08\x0d\xa1\x4c\x2c\x88\x7c\x6d\x67\x0a\xab\x37\x4d\x43\x6c\x27\x2f\x9e\x96\xf8\x5a\x9c\x42\x33\x79\xc0\xd4\x7c\x46\xdf\x6d\xe3\x34\xea\x20\x57\x15\x8d\x33\x23\x1e\x14\x26\xa6\x6d\x3c\x70\x82\x7a\xad\x55\x11\xb8\x46\xe0\x3b\x94\x92\x3d\x5f\x94\xba\xf1\xf8\xcf\x11\xa8\x61\x37\x3a\x5b\x80\xad\x5e\x31\x7e\xc2\xa5\x29\xe9\x4e\x63\x6c\xdc\x3a\xa2\x9e\x5d\xac\x20\x5a\x0c\x13\xf6\x8f\xb1\x98\xcf\x94\x56\xe6\x39\x0a\xea\xd4\xd9\x78\x2a\x10\x38\xf6\x47\x8d\x33\x9a\x81\xba\xe7\xaf\x2a\x04\x15\x1c\x2f\x22\xe8\xd3\x9f\xe0\x71\xe1\xa5\x21\x68\xd5\x7c\x84\xc3\x62\x93\x41\x3f\x8e\x6f\xf6\x93\x4f\x05\xe7\xef\xad\x6f\xa1\x20\xc8\xc1\xc3\x8a\xd1\x88\x6a\x3d\x00\xbf\xc3\x06\x45\x92\x03\xc0\x2c\xdf\x4f\x06\x65\x2b\xc8\xfa\x0e\x8b\x9c\xc7\x79\xd4\x3f\xbb\x78\x9e\x7d\xad\x5d\xc9\x9f\x41\xd4\xcc\x58\x8c\x1b\x65\x42\x6a\x4e\x77\x38\x9e\xdd\x04\x97\x75\x78\xf8\xf3\x16\xbc\xdd\x94\x61\xd6\x66\x47\x2c\xdd\x27\x6a\xa5\x69\x72\x1c\x65\x23\x22\x56\xba\x1c\xf0\xe7\xf5\xea\x55\x32\x17\x29\xbb\x0e\x03\x86\xa7\x7b\x86\x55\x32\x02\x46\x96\xed\xde\xf4\x85\xb7\xd7\xb2\x8c\x15\x73\xb9\x34\x7e\x41\x4d\x42\x61\x99\x54\x82\xe3\xb3\x12\xde\x13\x31\xf8\x4e\x75\x48\x60\x7a\x84"}, +{{0x04,0xbb,0x88,0x7a,0x8a,0x31,0x84,0xff,0xc7,0xea,0x09,0xc9,0xbc,0x7c,0x1f,0x7c,0x34,0x11,0x55,0x6a,0x7c,0x7c,0x39,0x8c,0xb8,0xb2,0xd9,0x8f,0xfd,0x9e,0xe8,0x66,},{0x6a,0xb1,0xe4,0xae,0x4a,0xa0,0xd3,0x89,0x89,0xae,0xef,0xa8,0x05,0xb5,0x78,0x80,0x6e,0x2e,0x97,0x1a,0xc7,0xac,0x05,0x40,0x99,0x58,0xbf,0xe6,0x00,0x71,0xf4,0xa7,},{0xcd,0x84,0xf5,0x5e,0x5e,0xf4,0x53,0x19,0x24,0xc5,0xa2,0x18,0x1e,0xc8,0x7a,0x64,0x54,0x13,0x88,0xc1,0x05,0x94,0x06,0xbc,0x07,0xd5,0x31,0x57,0xa1,0x68,0xe2,0x03,0xcc,0x8a,0xa0,0xf0,0x06,0x9d,0x53,0xff,0x58,0xa9,0x5b,0x8a,0x8c,0xaa,0xfd,0xad,0x26,0x36,0x3c,0x7d,0x0f,0x80,0x45,0xc4,0x35,0x9e,0x97,0xb4,0x36,0x02,0xc6,0x06,},"\xb7\xab\x0c\x81\x63\xf4\x78\xc6\xca\xbf\x2b\xbd\x7c\xa3\x7c\xb0\x24\x56\xd7\x6e\x52\x7e\xea\x1b\x0d\x26\xdb\x24\x2e\x37\x87\x76\x32\x98\x5a\x3e\x3c\xa4\x1b\x52\xe2\x1d\x79\x01\x7b\xff\x81\xee\x55\x1a\xd7\x2a\xf2\x77\xb4\x10\xe4\x2a\xf8\x22\xc6\x08\xcd\x69\xd0\x0b\xf4\x40\xb7\x5b\x78\x7a\x8c\x91\x5d\x70\xb6\xc6\x37\x6c\x3f\x67\xfa\x64\xd6\x12\xa1\xb4\x49\xa7\xe2\x13\x4d\x9c\x23\x23\x01\x57\xd5\x76\xe0\x6a\x66\xa8\x42\x2a\x61\x1e\x2a\x0f\x09\x72\x86\xc1\x99\xea\x2a\x16\x28\x61\x86\x4b\xd0\x35\x07\x6a\xb2\x0b\xba\xe2\xb4\x40\x8a\x2c\x64\x33\xcb\x23\x43\x3a\x88\x9f\xe6\x59\x8f\x47\xbe\x53\xbb\xd2\xc8\x0f\x07\xa8\xfc\xcb\x8a\xae\x51\x11\x61\xe6\x09\xda\x4d\x18\x0a\xce\xa5\x44\x81\x1e\x94\x49\xc5\xdc\x22\x50\xe3\xe5\xa0\xcd\x41\xda\x33\xa2\xda\x63\x2e\x60\x38\xbd\x86\xf1\x6d\x5b\x7c\x1b\xe4\x9f\xc6\xdb\x49\x90\x76\xca\x91\xf7\xaa\x02\x8f\xe3\x85\x29\x70\x0b\x21\xd0\x72\xd2\xb7\x5d\xcc\x8b\x43\x78\x1d\x4b\xc4\xd3\xbb\x58\x4d\x9d\xa0\x1c\x3e\xcc\x85\xb1\xe9\x3f\xce\x04\x5d\xad\xce\xea\x51\x06\x46\x8b\xdf\xe5\xf7\x0d\x66\xa4\xfa\xd6\x0e\x4f\xb8\x64\xec\x15\xea\x50\xf6\xcb\x79\x72\x23\xc8\xc7\x56\xf7\xa1\x93\x1a\x39\x46\x4e\xbb\xb9\x67\x9f\x6b\x01\x68\x7c\x17\x4e\xaa\x32\xb9\x68\xb9\xcf\xac\xe8\xc1\x67\x12\x0a\xa7\xbd\x02\x42\xf0\x03\xa0\xc3\x77\x70\x25\x51\xb3\x0d\xa2\x48\x8e\xb2\x94\x40\x52\x93\x4a\xef\x4b\xfe\x11\x5f\x0a\xb7\x40\x5a\x3d\x5f\xa9\xbd\x79\x6b\x37\x17\x42\xbc\x11\x4a\x9b\xf2\x8c\x5b\xd2\x56\x26\x29\x5c\xe2\x61\xa6\xa8\x3e\xf6\x0b\x77\xd2\xd3\x2d\xd7\x10\x5f\xc8\x36\x64\xaa\x89\x76\x5b\x3f\x81\x91\xee\xee\xd8\x78\xf2\xeb\xff\x2f\xb9\x76\x63\xa6\x18\x77\xc0\x93\x93\x3b\xbd\x07\x31\xe6\x37\x57\x57\x1b\x0e\x37\xca\xc9\x9e\xd0\x1f\xd2\x14\xcb\xd4\xfe\xb9\x77\xe8\x56\xe0\xa1\xa7\xef\x0c\x40\x8c\x20\xe0\xdd\xaf\x1f\xd8\xf0\x28\xcf\xa0\x8c\x85\x0f\xa7\x09\x0d\xca\x8c\xdd\xe0\xcb\x69\x03\xda\x18\xc6\x29\x0c\x66\xa1\xc0\xae\x0a\x08\x4b\xf2\x50\xc5\x1a\x9d\x03\x5e\x5b\x16\xec\x61\x66\x36\xaf\xb9\xb5\xbc\xe3\x6a\x77\x5f\xe2\x17\x5b\xcc\x2e\xe0\x72\x20\x83\x4e\xeb\x31\xca\xee\x50\xe9\xf8\x06\x3f\xb1\xfc\x84\x68\xae\x25\xe3\x96\x67\x89\xa6\xd8\xdf\xfe\x08\xa6\xf7\xa1\xe6\x72\x6f\x93\xae\x74\x82\xde\x02\x62\xbb\x1f\x8d\xe0\xc9\x5a\x99\xec\xb9\x56\x84\xd4\x4b\x3f\x1a\x33\x2a\x18\xd2\xcd\x3d\xcf\x25\x3c\x33\xd7\x35\x52\x2f\x79\x6b\x65\x1c\x9a\x63\x3a\x8e\xbe\x95\xd0\x2b\xc0\x46\x58\x25\xee\x54\x1a\x7d\x92\x7b\xb5\xb9\x0a\x6d\xb5\x49\x9f\x8d\x99\x3a\xb4\x04\xb1\x65\x0b\x75\xe7\x92\xa7\xc8\x34\xeb\x41\xf0\x47\x01\x38\xb0\xf5\x78\xa0\x4c\x9b\xa5\xad\x95\x0a\xc7\xc9\xb5\xd3\x28\xf3\x40\x8b\x64\x5a\xd9\xc6\xbf\x19\x6d\xd9\x61\x44\x55\x96\xbc\x78\xf2\x84\xb8\x91\x4b\x2a\x8c\xf9\xb7\xbd\x3a\x71\x6d\x8f\x14\x4b\xb6\xb1\x5d\x83\x10\x23\x71\x3b\x5e\x41\xfd\xa9\xb5\x87\xff\x9d\x6c\xc4\x3c\x08\xd3\x5a\x70\x7f\x49\x52\x83\xe1\xac\xe9\x60\x48\x7e\x7f\x02\xb7\x54\x3b\x68\xa7\x31\xa2\x9b\xf3\xbe\x14\xb6\xe9\xc3\x71\x74\xa9\xf4\x6f\x56\x11\x99\xdb\xd2\x7b\x46\xbf\xe6\x22\x43\xe0\xc1\x1c\x0e\xdf\x13\xb6\x4f\x41\x1c\x8e\x8e\xce\xd3\x5d\x84\x28\xf7\x9f\x10\xea\xcf\xfb\x72\x34\xe5\x46\x41\x3d\x1e\xb0\xfa\xd8\x8c\x0e\x93\x85\x93\xb4\x3b\x5e\xe0\xe4\x28\x5d\x4d\xdd\xf5\x29\x5d\xbf\x1a\x3d\xdb\xe9\xf4\x13\x4d\xd7\x6d\x3d\xe7\x04\x62\xc2\xf0\x4f\xe0\xae\xbd\xf5\x9a"}, +{{0x97,0x76,0xa4,0x67,0xfa,0x14,0x00,0x73,0x54,0x12,0xa7,0x9b,0x49,0x5f,0x9f,0xca,0x07,0x8c,0xe1,0xd8,0x7a,0x85,0x30,0xd8,0x5c,0x26,0x05,0x5d,0x3a,0x39,0x44,0x88,},{0xc7,0xdb,0xe0,0xe4,0x1c,0x0a,0x31,0xc0,0x94,0x27,0x93,0xff,0xd1,0x42,0xd8,0xb9,0x5c,0xc8,0x2e,0x5c,0xaa,0x92,0xa3,0x79,0xba,0x23,0xf6,0x44,0xed,0xf2,0x24,0xda,},{0xe1,0x31,0x7b,0xa2,0xa1,0x23,0xae,0x3b,0x29,0xe7,0xb6,0x0e,0x8e,0x93,0xbe,0xed,0xd7,0xa0,0x84,0x51,0xa0,0x13,0x69,0x5b,0x6d,0xcf,0x35,0x8e,0x40,0x34,0x02,0x6d,0xc7,0x40,0x37,0xaf,0xbd,0xd2,0x17,0xff,0x4b,0x14,0x8b,0x02,0x91,0x38,0xf4,0xbc,0xc8,0xf9,0x83,0x6a,0xbb,0xae,0x7e,0x62,0x76,0xe9,0xe7,0x69,0xdb,0xd8,0xf0,0x07,},"\xd7\x85\x53\xa1\xb7\x05\x5b\x58\xb2\x13\x10\x1b\x1c\x84\xc5\x3e\x16\x4e\x39\xc6\xe9\xd3\x6d\xb4\x3f\x30\xe1\x9e\x2a\x12\x5a\x9a\x67\x70\x9e\xaf\xef\x96\x4f\xa5\xba\xb7\x26\x1d\xdb\x3a\x8a\x01\x88\x45\x7d\xfb\xf5\x15\x9c\x40\xe5\x1d\xa8\x20\x84\x83\x24\x57\x81\xd7\x13\x1e\x23\xa8\xbe\xe5\xe5\x06\x33\x18\x16\xb9\xde\xee\xfe\x6e\x55\x6e\x3f\x0c\x95\xc6\x68\xd1\xbe\xdb\x7d\xa6\x35\x06\x54\x58\xad\x20\x46\x70\x12\xf5\x9f\x17\x13\x52\x06\x80\x20\xce\x3c\x75\x87\x86\x93\xf6\x43\x7b\xc4\xa0\x9f\x13\xb9\xb0\xf0\xcd\xda\xf1\x69\x1b\x87\x2f\x82\x00\x80\x93\xeb\xfb\xe2\x33\xd0\x31\x3e\x72\xc8\x63\x2d\x7d\x17\x93\xf0\xb8\x1c\x76\x88\xf5\x44\x70\x33\x0f\x04\xe6\x48\x60\xe6\x44\x6b\xfc\x6d\x96\xc8\x75\x69\xbf\x18\x2f\x0f\x43\x85\xaf\x48\x5d\x42\x99\xca\xc0\x4e\x06\xba\x47\x34\x65\x56\x6c\x47\x7f\x07\xb9\xdb\x27\x7a\xb4\xa9\xde\x2f\xb2\xde\xd0\xa5\x01\x1c\xd0\x6d\x67\x5c\x08\x00\xb3\x4f\x55\xbc\xf3\xec\x72\xd2\x1c\xa1\x50\xc8\xbf\x23\x61\x28\x7b\xe8\x1e\xfa\xbb\x96\xd8\x68\x8a\x1d\xee\x3f\x43\x0f\x06\xf6\x37\xdf\xd0\x6f\x15\x14\x64\xa0\x5c\x95\xf5\xfe\x76\xaf\x2e\x06\xd0\x12\x3f\x69\x48\xa2\x6b\x3b\xe8\x35\x04\x5a\xa2\x68\xcc\x1b\xe9\x76\x69\x71\x07\x77\x02\x08\xa7\x56\x8f\x02\x5c\x2d\x53\xc7\x19\xe5\x24\xcc\x36\x9d\x9b\x4a\x33\x7d\x8f\xd1\xef\x34\x5b\x9b\xca\x57\xfb\xd7\xb6\x5a\x6b\x99\x7c\xad\x3f\xce\x4c\xf0\x6f\x2c\xa4\x3e\xbe\x29\x86\xd0\x96\x82\xd4\x7c\x92\x2b\x2c\xb7\x56\x9d\x98\xde\x97\xa6\x16\x4f\x54\x70\xee\xc7\x1c\xed\xa5\x20\xcc\xec\x77\x32\xbd\x01\x68\x9e\xf8\x16\x56\xe9\xf6\xd0\xc5\x8a\x89\x55\x58\xae\xe8\x63\xf5\x46\x9e\x7a\xb9\x79\x15\xbf\xe0\xb8\x0a\x06\x4c\x65\x9b\x18\x30\x31\xf7\xf1\xa8\x6f\xb1\x1a\x9d\x52\x8c\x28\x15\xdc\xaa\x2f\x0d\xec\x3d\x21\xa8\x82\xe1\x06\xe2\x04\x93\xee\x0a\xcb\x77\x08\xea\xa2\x91\x25\x74\xae\x97\xbb\x28\x8b\x41\xfc\x09\x25\x05\x3a\x29\xb0\xbf\xbc\x0e\xba\xe8\xd6\x3c\xc0\xb4\x6e\x37\x38\x04\x6c\x5a\x20\x25\x30\xbc\xb1\x5b\x18\x7a\x72\x85\x4a\xa2\xd8\xa7\xa7\x6c\x89\xa8\x9a\x5d\xb4\x60\x32\x07\x4e\x1b\xd7\xde\x77\xef\x20\x65\xa0\x8f\x38\x9d\x78\x3c\xf7\x59\xeb\xd5\xa6\x3a\x44\xd9\x19\xf9\x48\xf5\x60\xc3\xe9\x4c\x42\x39\xe2\x74\xe0\x51\xa2\x04\x85\xa4\x30\xcb\xd5\x29\xf3\x13\xd9\xf7\xed\x67\x9a\x34\x18\x7b\x24\xf8\x41\x30\x87\xa9\x02\x1e\x47\x31\x73\x0f\x5f\x46\x1f\xc5\xaa\xd6\x65\x4d\xfa\x1c\x05\x04\xd2\x61\x24\x70\x7e\x63\xee\x57\xf9\x31\xb2\x78\x59\x08\xf8\x6b\x10\x4b\x3e\xcb\x96\x00\x02\x51\xd0\x6c\xe1\xfa\x45\xe4\xcd\x6d\xf9\x1a\xc1\x5b\xbf\x7c\xa3\xc3\xeb\x8e\xe0\x82\x76\x12\xa2\x9e\xcb\x7a\x36\xd5\x47\x0c\x40\x50\x51\x82\xfa\x9a\xc9\x13\x57\x0d\x0c\x10\x50\xd9\xa4\x34\x55\xcb\x7b\xdc\x17\xd1\x69\x80\x5f\x01\x89\x56\xf8\x54\xf8\x91\x9b\xbf\xb7\x19\xe1\x86\x7b\x36\xa6\x4a\xab\xcd\xb8\x07\xf4\x8d\xcc\xc0\x67\x2f\x67\x88\x74\x50\xb3\xf3\xe9\x58\xd7\x84\x99\xe0\xd1\xab\x36\x8a\xa4\x94\x42\xe5\xe8\xa3\x32\xbf\xfd\x44\xc1\x69\xea\x67\x62\x9c\x85\x72\x4d\xb6\xf1\x58\x6b\x6c\x6b\x5b\xe4\x86\x4d\xfd\x53\xda\x7c\x0f\x7b\x8b\xb3\x57\x31\x16\xbe\x50\x77\xd3\x32\xbd\x12\xa6\x30\x0f\x3a\x68\xa8\x98\x66\xb4\x79\xec\x2b\xaa\x27\x7f\x9f\x56\xf6\xe1\xd4\x9d\x74\x1e\xb3\x22\x03\x5f\xf8\xcb\x1d\xe8\x5c\x8d\xc8\x7a\xc8\xe6\xe4\xc5\xd2\x0b\xfb\x6d\x31\x7a\xb1\x25\x93\x0c\x42\x60\x9b\xe3\xae\x82\x24\x2a\x9e\xf0\x56\x88\x58\xd8"}, +{{0x09,0xd8,0x12,0x26,0x97,0x12,0x6d,0xfc,0x7e,0x11,0x68,0x5a,0x04,0x12,0x3f,0xdf,0xb4,0x7c,0xcd,0xdb,0x44,0x99,0xd8,0xa3,0xae,0xf4,0x18,0xcb,0x65,0xae,0xd7,0xa7,},{0xf8,0xdd,0xb1,0xc0,0x0f,0x6e,0x0f,0x4b,0xea,0xa6,0xfc,0x38,0xe5,0xd0,0xa5,0x77,0x5e,0xe2,0x8c,0x80,0xdb,0xde,0x3f,0x0c,0x79,0x30,0xa3,0x3a,0xad,0x71,0x50,0xf3,},{0x18,0xcf,0xaf,0x6d,0xc8,0xe4,0xe8,0x58,0x2b,0xce,0xfe,0x0c,0xdc,0x6f,0xce,0xfe,0x6a,0x4a,0x87,0xea,0x62,0x95,0x85,0xf3,0x7d,0x2f,0xba,0x44,0x6b,0x3a,0xeb,0xd4,0x52,0x42,0x63,0x82,0xda,0x0d,0x49,0x1c,0x39,0xcb,0x7d,0x54,0xd2,0x73,0x00,0x5d,0xc1,0x32,0x12,0x15,0x68,0xd2,0xab,0x67,0x45,0x20,0xad,0xda,0x75,0x23,0x84,0x0d,},"\xa0\xd8\xd8\x79\x8e\xba\x22\xf5\x67\x60\xc3\x06\x43\xe9\xfc\x67\x95\x54\x7e\xa5\xf2\xf2\xbb\xd1\x1c\x03\x92\xb2\xeb\xf7\x11\xac\xa2\x2f\x08\x24\x19\x9f\xc3\x18\x8a\x45\xbd\xff\xde\x70\xec\xe9\xab\x15\xa5\xea\x89\x62\x2a\x58\x71\xe0\xef\x76\x85\xd1\x0f\x12\x74\xcc\x19\x5b\x4f\xda\x81\xf8\x79\xd1\xe9\xbf\x42\xf8\x73\xb2\x0a\x85\x9c\x23\x3f\x9e\x49\xad\xbf\x05\x77\x31\xe1\x13\x35\xe9\xb6\xd8\xed\x0e\x06\x9e\x13\x4e\xc4\x61\xca\x88\x90\xd7\xb0\x47\x3c\x40\x5e\x8a\x9d\x95\xd1\x57\x11\xb1\x24\x76\x10\x37\x62\xc6\x26\xd9\xf2\xaa\x5d\xd5\x19\xbd\x82\x5b\x60\xb3\x23\x4e\xbf\x65\x1e\x0d\x19\x33\x37\x1c\x52\xbf\xd8\xce\x33\xfc\x36\xbb\xa3\x28\xf7\xf3\xf2\xcc\xc0\x10\x00\xa8\x99\x04\xaf\x37\xe4\xe1\xe9\xe1\x5f\xff\xab\x5c\x2b\x0c\x47\xf3\x7c\xdc\xb0\x68\xdb\x33\xac\x36\xa5\xf0\xd6\xde\x12\x03\xfb\xf8\x94\x93\x24\xbd\x3e\xfd\xa0\xf9\x88\x9d\xb0\x0d\xa2\x31\x7b\x49\xfd\x18\x69\x99\xdf\x7f\xcd\xc3\xcb\x4e\x1d\x18\xfa\xa2\x54\x56\x1c\x25\x11\x78\xb8\xd3\x3f\xdc\x9d\xcc\xd8\xd2\xd7\x21\xb9\x3a\x53\x6c\xcd\x3c\x0e\x9c\x85\x63\x37\xf1\x95\xee\xe7\xda\x9a\x7f\x6b\x0a\x42\xb7\xc5\x41\xc6\xa6\x8c\x59\x5b\xf3\x47\x04\xd9\xfe\x3a\x56\xd2\xec\x84\x81\xd5\x77\xc9\x6e\xcc\x08\xb8\xe4\x0a\xcd\xbf\x05\x0e\x20\xc6\x83\xf3\x9c\x41\x4e\x8c\xbf\xcf\x4a\x01\x52\x31\x4c\x05\x98\x7a\x83\xbd\xe3\x02\x5b\x73\x5c\xca\x30\x23\xab\xc5\xfe\xb7\xe0\x0d\x02\x36\xb4\xf2\x4b\x15\xe6\x79\xdb\x05\x2c\x8d\x2f\xdd\xb3\xbe\xf8\x66\x3a\x6d\xf8\x19\xa9\x81\x55\x27\xa1\xa2\xf6\x0a\x0f\xa4\xe5\x07\x8d\xdc\x6d\x43\x5f\xe8\x92\x87\xb3\x0f\xfd\xeb\x5d\x9a\xe0\x5d\x1a\x86\x90\xfb\xc7\x59\x0a\xad\x57\xd4\x3d\x22\xc1\x2a\xce\x2c\x81\x96\x88\x8e\x35\x4e\x9f\x78\x2f\x5d\xbb\x44\x14\x9e\x83\xfb\x8b\xbc\x9d\xa6\xd8\x9c\xe2\x06\xc1\xe2\xb6\xb2\xb2\x8f\x93\x3f\x3e\x5f\xf1\x17\x5a\x31\xa8\xff\x5d\x31\xe6\x5c\x8b\x00\xc5\xba\x46\x22\x24\xa1\xe0\x9d\x4f\x09\xcb\x40\xfc\x87\xc3\x6e\x7d\x28\x5c\x77\x4a\x96\x97\x62\x03\x65\x18\x28\xe7\x83\x62\x88\x47\xac\x51\x2e\x5d\x1c\x35\xb3\x5b\x03\x01\x71\xf9\x23\x96\xf5\xff\xaf\xf5\x85\xce\xad\x04\xb6\xae\x21\x0d\x80\x70\x7c\xc6\x83\x2d\x98\xa2\x0d\x3a\x94\x76\x48\xda\x26\x04\x93\x7f\xef\xd2\x5a\x9f\xe0\xfc\x5c\xac\x08\x3d\xdd\x7d\x20\x75\x30\x7f\x4f\x38\x26\x64\xf6\x87\xdc\xe8\xc6\x55\xde\xd9\xc1\x2d\x48\xff\x76\x01\xdf\x2a\x48\xd3\x7f\xe2\x14\x97\x08\x44\xc0\x75\xf2\xea\xb0\x02\x05\x9f\xc2\x27\x1e\x61\x7c\x96\x57\xa0\x1b\xec\x1d\xd3\x8f\x6c\x28\xba\x8a\x61\x7b\xd3\x08\x51\xe3\xf9\xdb\xac\x90\x44\x18\xdf\x1d\x02\x15\xad\x45\xdf\xc9\xf0\x2b\x5c\x5e\x9f\x9b\xbc\x6d\xe8\xb0\x7a\xf0\xbd\x1f\x7f\xa8\x92\x25\x44\xf1\x2d\x2a\x3e\x1a\xad\xff\x7e\x9c\x6b\x93\x32\x0c\x3a\x61\xef\x33\xda\x07\xeb\x87\xb1\x61\x7f\x9e\x77\xd7\x70\x2e\x55\x8b\xc7\xd8\x12\x2e\x0d\xfe\x2a\xe8\x3e\x83\x6c\x5b\x1a\x62\xaa\x58\x5c\x0d\xff\xe7\x16\xf7\x46\x3c\x0b\x33\xda\x5b\x1e\xda\x55\x6a\x1e\xf1\xe4\x50\x42\xc7\x9b\xdd\x3e\xc3\xcb\x88\x63\xa7\xbc\x1b\x0f\x7e\x1c\x05\xbd\x99\x20\xf0\x5b\x4e\xda\x86\x51\x77\x05\xed\x07\xf6\xdc\xa7\xbb\x00\xae\x04\x56\xe6\x78\x7d\x9f\xae\x8e\xde\x4e\xcd\x0b\xc5\x72\xeb\x5c\xc6\xd1\x9e\x89\x1f\x1b\xcb\x22\x9e\x94\x09\xe0\x65\x74\xc7\xdf\x05\x81\x73\xcb\x58\xc3\xfd\xf2\x0f\x3f\xf1\x7c\x37\x05\xaf\x62\xd9\xb7\x22\x5c\x57\x43\xf6\x00\x60\x7f\x77\xcb\xe7\xd6\xe7\x61\x8a\xbc\x79"}, +{{0x10,0x20,0x1b,0xf0,0x08,0x43,0x67,0x59,0x0d,0xe6,0x74,0xcc,0x0e,0xd2,0x64,0x8e,0xc2,0x5d,0x3b,0xa8,0xdb,0x40,0xd0,0x0e,0xde,0x15,0x33,0x98,0x50,0x8b,0xc1,0x26,},{0xba,0xdb,0xd0,0x5e,0x5f,0x79,0xe3,0x11,0x69,0xf7,0x40,0xba,0x46,0xa5,0x89,0x10,0xa1,0xb7,0x77,0x05,0xaf,0x45,0x71,0x7b,0x2a,0xf8,0x08,0x56,0x45,0x7c,0x58,0xc9,},{0xf1,0xd9,0x96,0x58,0x8b,0x29,0x8f,0x27,0x1e,0x97,0x0c,0xeb,0xd2,0xa1,0xb3,0x39,0x97,0x9c,0xd2,0x9d,0xdd,0xee,0x36,0x45,0xd0,0x7f,0xab,0x8a,0xb4,0x65,0xdd,0xe3,0xe9,0x86,0x67,0xec,0x01,0xad,0x7f,0x1c,0x0a,0x65,0x92,0xe0,0x69,0x7e,0x66,0x5c,0x72,0xfd,0x38,0x14,0xdb,0xe1,0x89,0xed,0x5f,0x4e,0x76,0xc7,0x94,0xe5,0x38,0x09,},"\x7b\xb1\x47\x06\x17\xd1\x1e\x45\xeb\x60\x2a\x82\x9a\xd7\x73\xee\x2b\xb7\xe6\xb8\x8d\xa4\xc0\x4a\x72\x16\xa4\x50\xf8\x49\x93\xa4\x98\xcb\xd3\xb9\x25\x40\x28\xf2\xf9\x9f\xc2\x1a\x23\x28\x8b\xdc\x1e\x15\x1a\x72\xa9\x13\x0c\x3d\xed\xda\x1b\xbb\xcc\xd4\xe6\xc0\xf4\x8a\xe9\xf3\x53\x18\xcb\xef\xc9\x59\xf4\x05\x04\x5e\x6e\x0b\x5f\xb2\xe7\x38\xf2\xb7\x65\xbe\x11\xb1\xb6\xa0\xf1\xe8\x31\x95\x49\xd9\x5f\xa8\xd1\xdf\x81\x67\xcd\x4a\x77\x17\xae\x16\x36\xa9\xdf\x54\xd9\x6e\xaf\x2d\x63\x23\x69\x00\xfd\x11\x33\x82\x52\xa5\x00\x8d\x5d\x48\x0e\x2b\x1e\x98\x61\xd1\xf7\x06\x88\xc4\x7e\xae\x46\x89\xda\x01\xa4\x7d\xa3\xdf\xb6\xd2\xba\xb3\xcd\xf5\x05\xee\x5d\x80\x1a\x15\x2c\x26\x70\x93\xd1\x7e\x9b\xf7\x13\x7a\x6e\xe7\xb8\x34\xd0\x08\x55\x00\xe4\x01\xc1\x7f\x32\x86\xc1\x57\x5d\x1c\x01\x00\xfa\x98\x07\x63\x0c\x4a\x99\x06\x54\xc1\xe7\x1a\x8b\x71\x56\x27\xbb\x13\xd4\x42\xc8\x4a\x44\x98\x44\xc4\x04\xb8\x72\xbf\xba\xc7\x18\xa4\x8d\x0e\xa0\x94\x5c\x77\x16\x6a\x53\x13\x9b\x0f\xf0\x09\x81\x34\x76\x4f\x9e\xcd\xb8\x8e\xab\xe0\x7c\xcb\x2c\xce\xd4\x95\x5e\x08\x24\x9b\x2f\x57\x70\xad\x41\xfc\xcd\x7b\x5b\xb3\x72\xe6\xc3\x37\x67\xe0\x7f\x5b\xe7\xd1\x07\x12\xde\x81\x84\x1b\x13\x4e\x19\x3d\xf0\x77\x6a\x0f\xc1\x56\xff\x5d\x0e\x96\xf4\x0a\x70\x47\x53\xe1\x14\x5e\x9f\xa0\x83\xc4\xdd\xee\xf4\x41\x62\x34\xf6\xe1\xa2\x38\x2c\x8e\x5b\x3a\xd4\x05\x45\x8e\x89\xd2\xf4\x93\xa4\xd7\xc2\x9a\x23\xde\x21\x07\x48\x5b\x7f\x56\x35\x01\x24\xe7\xe0\xd6\x95\xc5\x22\xb6\xde\x7a\x92\x47\xa2\x92\x4c\xe6\xf2\x86\x32\x36\xc1\x0c\xc2\x12\x64\xad\x54\x59\x0d\x31\x47\x63\xea\x1a\x19\xaf\xac\xd9\x0e\xba\x95\x58\x70\x40\x7e\x8c\x63\x65\xa1\x43\xa5\xc1\xb9\xa8\xbe\x5e\x4a\x4d\xca\xdb\x72\xe0\xd4\x76\x49\xbd\x53\xab\xd4\x6b\x5c\x69\x60\xea\xe2\xca\xb7\x73\x75\x3c\xc0\xe0\x4e\x99\x41\x4b\xc2\xcb\x30\xf4\x8b\xb5\x41\x39\xd0\x66\xe4\x3e\x2f\x0e\x1a\x4a\xe9\x63\x85\x8b\xef\x96\x7d\xf8\xc8\x41\x40\xd2\xd0\x92\x02\xb4\x06\xd5\xd8\x5c\xb7\xa9\x6c\xc5\x7f\x23\x3e\xb2\x18\x7f\xfd\x02\xf9\x4e\x92\x29\x7b\x5e\x69\xd9\x69\xd3\xa5\x93\x6e\xfe\x49\x29\x14\x4f\x25\x8b\xfb\x39\xdd\x0c\xe2\x63\x59\xc4\x54\x9f\xc2\x18\xa0\xaa\x54\xf3\x1b\xd5\x51\xb8\x78\x1a\xcb\xbf\x61\xcb\x3f\x73\x2c\xda\xf6\x22\xc6\xa6\x91\x88\xcf\x55\x7a\x3a\x92\xed\x15\x3e\x69\x12\x5a\x40\x90\xac\x45\x15\x36\xa0\xe9\xa6\x3a\x41\x78\x29\x10\xff\xcc\xb4\xe8\x50\x02\x11\x23\xff\xd1\xf3\xbf\x39\xc7\x34\x60\xa6\x5c\xcf\xe4\xdb\xa9\xbd\xef\xb5\xd5\xf4\xda\x6c\x46\x9a\xa1\x32\x2f\xa2\x70\x43\x23\x83\x63\xee\x72\x91\x86\x88\xd7\xca\x1c\x4c\x29\x52\xe4\x30\xd5\x63\x25\x6b\xb8\x6d\x35\x0a\x35\xee\x82\xe0\x15\x04\x74\x7f\x31\xd0\x2e\x03\xae\xdd\xa5\x46\xd0\xf1\xb2\xf4\x51\xb8\x70\x82\x16\x02\xd0\x0e\x81\x90\x36\xad\xe5\xa7\xc7\xfc\xd2\x1a\x6d\xe6\xaf\x35\xb1\xf9\x63\x2a\x70\xaf\x65\xdf\x64\x45\xf6\xfa\xdf\xbc\x0f\x41\x67\x55\xc8\x24\x66\x40\xe5\x6b\x85\x6b\x66\xdd\xd9\x2a\x60\xc0\x35\x38\x22\x1d\xc8\xfb\x14\x2c\xe2\xdb\xac\xdb\x74\x25\xf3\x3c\xb8\x5d\x85\x0c\xc0\x2c\x31\x5c\xfc\x11\x1f\x6f\x65\x1d\xde\x1b\xdb\x67\xfb\x20\x8e\x1f\x6b\xde\x78\x4d\xdc\xf7\xbd\x18\xc8\x05\x1a\x2e\x0b\xbf\x10\x18\xb8\xf3\x95\x36\xc5\x89\xde\x65\xea\xdc\x6c\xf3\x79\xb7\x7c\xad\x13\xf9\x08\x9c\xb3\x23\xfb\x2e\x94\x3d\x06\xcd\xd1\x07\x05\xc1\x21\x13\x4c\x65\x48\xdc\x53\x41\x5f\x8c\x37\x0e\xc6\x90"}, +{{0xc4,0xaa,0x42,0x52,0x46,0xb5,0x17,0x3f,0x5e,0xf8,0x98,0x15,0x2e,0xca,0x3d,0x09,0x2b,0xb4,0xc2,0xdd,0x02,0x85,0x3f,0xcf,0xc7,0x17,0x83,0x99,0xf4,0xe2,0xf7,0x58,},{0x29,0xb7,0x7a,0x30,0x75,0xf4,0x19,0x24,0x3c,0x0c,0x1b,0xc3,0x96,0x59,0xd7,0x31,0x17,0xac,0x00,0xe5,0x5e,0x8d,0xe3,0x8f,0xe9,0x82,0x9a,0x87,0x9c,0xc5,0xb8,0xa0,},{0x5d,0x85,0x45,0xa4,0xbe,0x3f,0xd6,0xda,0x25,0x78,0xc2,0xec,0xcb,0x64,0x8d,0x83,0xfc,0xfe,0x58,0x71,0x33,0xfa,0x7a,0xe4,0xa1,0xcf,0xca,0x9a,0xe6,0xda,0xa4,0x92,0x59,0xc9,0x52,0x04,0x4a,0x85,0xa2,0x0b,0x6f,0x53,0x24,0xf8,0x27,0xdb,0xa2,0xd1,0xa8,0x38,0x8c,0x40,0xa9,0x28,0xb9,0x50,0x91,0x3c,0x63,0x4f,0xb3,0x09,0x27,0x07,},"\x7d\xf9\x78\xa1\xf4\x97\x68\x38\xff\xed\x74\x49\xa4\xdc\x13\x8b\x60\x4f\x4b\x2a\x4a\xe6\x89\xce\x75\x01\x8e\xbc\xcd\xab\x2e\xaa\x0b\x60\x76\x8f\x72\x08\x25\x7f\x2b\x28\xe7\xaa\x09\xbf\x6c\x05\x88\x8d\xa4\x6f\xd3\x96\xd1\xc8\x03\x01\x17\x50\xe3\x0e\xb4\x84\x87\x0c\x88\x06\x97\x76\x96\xf1\x2e\xbb\x9f\xee\xb4\xca\xf9\x2a\x02\xdb\xaa\x22\xbb\xff\x63\xf8\x42\xc3\xba\x14\x7b\xca\x7c\x00\x31\x42\x78\xac\xd0\xdb\x17\x35\x69\xf4\xe3\x65\x27\x95\x8e\xf6\xf1\x00\x2b\xd3\xcd\x01\xf4\x07\xa8\x65\x31\xed\xcb\xd9\xf3\x1b\x3a\x4a\xb8\x80\xa4\xf5\xb5\x2b\x42\xd0\xd4\xa1\xba\x66\xa2\x09\x86\x51\xae\x3e\x6c\x91\x51\xf4\x02\x73\x28\x5f\x7f\x6a\x4e\x81\x60\x6b\xf9\x80\xf6\x89\x50\x4b\x42\x08\x0f\xdb\x97\xc7\x28\x46\xfb\xa9\x04\x7c\x7e\x66\x0b\xa5\xc6\xbf\x12\x6a\x9a\x59\x9e\x25\x71\xfa\x13\x50\x5a\xf7\x58\x1b\xfe\xbc\x16\x51\x3f\x5c\x94\xdc\x71\x93\x7e\x6e\x61\xb3\xea\x10\x93\x9b\x02\xea\x10\x85\x9f\x32\xd7\x91\x2b\x9e\x38\x06\xab\xef\x61\x85\xfc\xff\xa6\x88\x21\x47\x80\x05\xcb\xfc\x1d\x63\x7d\xd0\x20\x42\x56\x20\xa3\x18\x07\x48\x98\xbd\xc3\x09\x31\xc5\x9a\xc0\xc6\x6c\x4d\x12\x38\xb0\x97\xcd\x5b\x17\x0f\x08\x44\x35\xd4\xba\xe4\x8a\x03\xd9\x2f\xd4\x8f\xc2\xca\xa4\xff\xc5\x05\xf1\xbc\xa5\x16\xfb\xd6\xe4\xf8\x88\xcc\xed\x98\x2a\xe0\xdd\xb8\x8f\xc2\x8a\xa6\x97\xb7\x07\x1d\x01\x5b\x0a\xcb\x28\x09\xb0\x1d\x1d\x9c\x7e\x7b\x53\xee\xe6\x82\x4c\xc3\x7c\xce\x5b\x69\x93\xd8\x8d\x83\xea\xfc\x2e\x92\x8a\x6f\x14\x7d\xb6\xeb\x80\xb1\xa6\x9f\x01\x60\x5b\x04\x6b\xd2\xfd\x1d\x92\xc5\x45\x9d\x6d\x33\x98\xa9\xca\xa2\x99\xdd\xd0\xc3\xba\x2e\x08\x94\x13\x07\xb1\x20\xcc\x13\x99\x2f\x70\x03\xac\xed\x14\xa4\xa4\xd9\x23\xbb\xb1\x2f\xc3\x93\xff\xcf\x92\x0b\x9f\x6d\x47\x75\xe9\x4d\x4a\x51\x22\x67\xfd\x26\xa6\x99\x7c\x60\x62\xb4\xc9\x90\x0f\x98\x62\xb9\xea\x0c\x8d\x7d\xf1\x9f\x05\xc2\xb6\x04\xaf\x5b\x98\x64\xfb\x27\x54\xa8\x07\x3b\xbb\xfb\x18\x23\x3e\x6e\x15\x0f\x72\xa5\x25\xe3\xa5\x76\x0f\xcd\xa7\xd3\x2a\x60\x03\x4f\x95\x6e\x3c\xbd\x34\x36\xc2\x00\x83\x0b\x3e\x7a\x14\x57\x12\x20\xbc\xb6\x27\xd5\xa4\xbe\x72\xc2\x0b\x23\x35\x1b\x2d\x92\x06\x02\xa5\x1c\x3e\xb3\x2c\x12\x37\x03\x9d\xfb\xff\x43\xc9\x87\xfd\x85\x63\x77\x7f\x0e\x5a\x39\xf8\x14\x6c\x16\x4b\xdf\xfc\xe4\x4f\x3b\x13\xee\x74\xd6\x4b\xfd\xcf\x98\x03\xf0\x3d\xd0\x17\x2a\xc4\xfa\x4b\xf6\xc7\x83\x9c\xb1\x1f\x3d\x34\xba\xef\x0e\x32\xb5\x49\x42\xfc\x4f\xa3\x8f\x47\x3e\x29\x66\xf4\x91\x1c\x0e\x80\xd7\x69\x37\xb2\x5b\x76\x32\x27\x5b\xa8\x83\x09\x63\x5a\x60\xdf\x13\x54\x89\x20\x8d\x3e\x73\x4b\x67\x2e\xda\x7d\x2b\xa2\x15\x79\xab\xa8\xd8\x86\x0e\xa7\x64\xfd\x67\xea\xf9\xc3\x8e\xa7\x63\x7d\x1b\xad\x57\xb2\xf3\xd7\x82\xb9\x1e\x1d\x5d\x92\xac\x30\x0b\xdb\xa7\xab\x91\x13\xce\x91\x3d\x0c\x79\x3c\x12\xa9\xa7\x26\xe3\xfc\xab\x05\xcb\x47\x99\x77\x87\x16\x40\x63\x0d\x45\x9e\x69\xe8\x1c\xa5\xcf\x56\xdd\xb2\xa0\x61\x1d\x61\xd4\x81\xc1\xb8\xce\xf3\x80\x4b\xd4\xe5\x75\x4a\x61\xeb\x49\xb1\x7e\xf2\xb0\x3c\x83\x05\x7b\x5d\x20\xd8\x82\x05\x8c\x00\xf5\x4b\x6c\xca\x86\xbe\x95\x35\x0d\xd7\xbc\xb2\x5e\x4c\x1c\x46\x58\xf4\x52\x29\xc8\xbb\x9f\x5c\xdf\xcc\x44\x79\x5c\x97\x8e\x33\x88\xd3\x25\x76\x01\x06\xe5\x2b\xe9\x83\x4b\xd8\x1f\xfc\x5c\x62\x48\x6b\x6f\x33\xc2\x74\x59\xdf\x17\x8e\xb9\x46\xe7\xa8\x2d\xb9\xce\x0d\x29\x5b\x92\x5b\xb6\x12\x6d\xd5\x5c\x31\xf4\x9a\x68\xdc\xef\xc7"}, +{{0xf1,0x3c,0xaf,0xde,0x6f,0x39,0xb9,0x63,0xdc,0xa9,0x66,0x26,0x86,0x2f,0x4f,0xbc,0x5c,0x2e,0x00,0xdd,0xf0,0x8b,0xec,0xea,0xc7,0xa6,0xe2,0xfc,0xa9,0xe1,0xcc,0xf7,},{0xc1,0xb0,0x1a,0x91,0xe8,0xee,0x0b,0x9f,0x19,0xa7,0x2e,0x5e,0x7e,0x0a,0xef,0xcf,0xdc,0x44,0xa1,0x57,0x47,0x4e,0x99,0xfe,0xeb,0xd0,0xff,0x55,0x2d,0x73,0xb2,0xac,},{0x6c,0xa9,0xf8,0x0a,0x62,0x50,0x1f,0xaf,0x31,0x9f,0xb8,0x4a,0xf4,0x71,0xf6,0x76,0xae,0x3f,0xff,0x85,0x56,0x5c,0x97,0x98,0x1f,0x14,0x57,0xcb,0xb8,0xc4,0x9f,0x97,0xb2,0x66,0x31,0x6a,0x99,0x2d,0xb0,0xd4,0x2b,0xc5,0x02,0xf0,0x95,0xa5,0xf2,0xd9,0xa4,0xe1,0xcf,0xac,0x0c,0xc9,0x35,0xd3,0x88,0x2c,0x8a,0x3a,0x0e,0xa6,0xe1,0x0e,},"\x2b\xee\x73\xb7\x4f\x1b\x76\x22\xeb\x09\x6a\x28\xd8\x3a\x81\x9b\xce\xc2\x2d\x99\x99\xa3\x20\x62\x10\x3d\x60\x4a\xe6\xd7\x8e\xdf\x8f\x89\x38\x95\xd2\x22\x0a\xb7\x56\x90\x41\x0c\x58\xaa\xb5\x90\xa9\x8d\xdf\xf2\x3a\x94\xd2\x35\x0f\x88\x9e\x53\x46\x42\x00\xa5\x27\xd5\x4d\x62\x57\x11\x07\xb2\x7e\x57\x4f\x54\x2e\xba\xc2\x49\xb8\xe2\xe3\xce\x08\xd1\xbd\x27\xbd\x8d\x29\xf2\xe6\x12\x43\xde\xef\x0e\x69\x38\xe5\x2e\xe2\x99\x2f\xf2\x18\x7d\x7a\x7f\x52\x82\xed\xd9\x8f\xc4\x98\x5b\x61\x9a\xcb\x80\xaa\x9d\x03\xd6\xcb\x84\xb8\x21\x10\x6f\x40\xd6\xe5\xf4\xc3\x87\xab\x0a\xf6\xf2\x06\x61\x5d\x0a\x17\x5f\x7e\x60\xee\x27\x55\xae\xa3\x46\x75\xfd\xd8\x23\xeb\x24\x10\x9a\x9b\xd8\x18\xea\x2d\x9d\x9b\xd1\x99\xcf\x8d\xfe\x79\x62\x4b\x03\x72\xae\x85\xe9\x8c\x60\x20\x02\x34\xbd\x41\x3f\x4a\x62\xce\x68\xa4\x7b\x6c\x9b\x12\x85\x7c\x0d\x39\x9a\x44\x8e\x5a\x52\x80\xe9\xf2\x2f\x9b\x12\xea\x2c\xd3\xc6\x87\x13\xe7\x7d\x0a\x11\xf3\x62\x8d\x8e\xc5\xe0\x60\x63\x90\x31\xd3\xb6\x40\x02\x1c\x9c\x38\x80\x9d\xc5\xf4\x2d\x2e\x1c\x2e\x23\x46\xc8\x6e\x24\xee\xdc\x59\x84\xa1\x15\xa4\x2d\xe8\xde\x7e\x35\xc9\x91\x75\x39\xe8\x98\x85\xca\x91\x6e\x07\x2a\xfd\x5d\x46\x84\x6b\x2a\x93\x59\x61\xc2\xfe\x28\xe9\xeb\x3c\x8f\x89\x6b\x86\xfc\x12\x0c\xbd\x3a\xf2\xaa\x13\x9c\x49\x9d\x29\xcf\xc3\x69\x9d\xb7\x9c\x14\x48\x4e\x9e\xc2\x57\xa5\xf6\x43\x44\xb7\xad\x1e\x3d\xfb\x34\xee\xe7\x65\x4c\x6b\xf1\x2f\xd3\x8f\xbb\xa8\x0f\xe1\x76\x2a\xab\x57\x11\x2b\x3a\x94\xe2\xbe\xe7\x90\x41\xd1\xe8\x84\x40\xf8\x5f\xb7\x2d\xde\x68\xd4\x9e\x84\xbc\xed\x99\x8a\x2f\x63\x35\x44\x6e\x4a\x83\x5e\x70\xc5\xf8\x27\xfb\x3a\xd7\x82\x3d\x5f\xbe\x3b\xe5\xf6\xec\x7e\x43\x4e\xe5\x24\xcc\xd9\xff\x5b\x7e\x72\xa3\x2d\x09\x1a\x7e\x17\xc8\xb1\xae\x41\xa1\xaf\x31\x79\x3c\xce\x91\xd8\x4c\x36\x22\x67\x89\x69\xc8\xf5\x17\xdc\x26\xe3\xcd\x61\xd2\x44\x69\x12\x28\x3f\x93\x53\xbb\x5a\xd0\x3c\x11\x1c\x62\x33\xde\x31\x4c\x61\xb8\x31\xcb\xf3\x8b\x04\xfe\x58\xcf\x44\xf1\xd2\xd0\xb4\x5f\x25\xa6\xb4\xe0\x25\x68\x59\xcd\x5d\x83\x0f\xac\x5e\xc3\xc8\xd7\x63\x98\x55\x9e\x9b\x26\x01\x0f\x5e\x1d\xa5\xf2\x5d\x22\x00\x93\x54\x53\xff\xac\x5a\xea\x51\xf7\xe8\x1e\x72\xec\x8e\x5f\x04\xd2\xf8\x85\xc7\xb4\x5c\x63\xf6\x44\x56\xcf\xe2\x31\xb8\xcb\x24\xaa\x16\x20\xa9\x02\x63\x9c\xa7\x8d\xd3\x91\xaa\x4a\x3d\x03\xe1\x19\x75\xc8\x90\x7f\x96\x4f\xd5\x5d\xf9\xbb\xb1\x40\xe3\x8d\x6d\xb9\x32\x56\xb4\xb3\x9c\x2b\x7b\xcb\xe3\x5b\x11\x82\x6b\xbf\x8c\x08\xf1\xdc\xb4\x8e\xdc\x4b\xfb\x70\x46\x2a\x35\xea\x8c\xd8\xcb\xa7\x9f\xab\x8b\x4c\x44\xe7\x3b\xe7\xec\xfa\x11\x21\x66\xf6\xdc\xab\x70\xd8\xbb\x55\xd8\xb8\x42\x8c\x2d\xa7\x1a\xac\xa2\xfc\x3d\x90\xf3\xcc\x5e\xd0\x15\x51\x35\x8d\x60\x78\x9b\x9d\x57\x1e\xfe\x10\x89\x20\x27\xfa\x37\x40\x4a\xaf\x59\xec\x1c\x2d\x71\x11\xec\xc3\x59\x24\x67\xed\x1d\x9b\x8a\xba\x8e\x22\x9e\x32\xd2\xa0\x0c\x19\xdb\x71\x87\xfb\xcb\x12\x20\x61\x96\x1c\x1f\xda\xca\x30\x7e\x9c\x9c\x9d\xe9\x72\xad\x51\x40\x2f\xa6\x7d\xc1\xc2\xa4\x03\xb3\xc5\xe8\xb1\xe2\x46\x86\x2d\x6a\xd6\xa4\x98\xdb\x6d\x76\x1f\xb5\x66\xf6\x06\x59\x42\xb6\x0a\xd4\xb4\x30\x9d\x18\x2b\xc5\x15\x4c\xfc\x36\x86\x31\x85\xa8\x7e\x23\xab\xaa\x1d\x54\x1a\xb7\x63\xa4\xa1\x06\x6c\x0a\x7a\x8c\x3d\x82\x1a\xe3\x2f\xd3\x1c\x88\x92\x40\x10\x46\xd0\xa2\x0e\x91\xa6\x47\x79\xf4\xbd\xa8\x11\x20\xaf\x3f\xb3\x48\x6d\x3f\xc0\xa7"}, +{{0xc8,0x46,0x34,0x42,0x61,0xa3,0x48,0x65,0x39,0x38,0x34,0xbf,0xaa,0x3a,0x15,0xa3,0xf5,0x3a,0xc9,0xe1,0x38,0x33,0xb0,0xb2,0x87,0x12,0x27,0x81,0xb7,0x9d,0xe3,0x92,},{0xeb,0xad,0xe0,0x22,0x61,0x95,0xae,0x25,0x4b,0x61,0x15,0xe2,0x16,0x96,0xa9,0xc6,0x5a,0x19,0xd5,0xe0,0x40,0x44,0x31,0x31,0xc2,0x2b,0x89,0xf0,0x2f,0x69,0xab,0x78,},{0xd5,0xe4,0x1b,0x47,0xad,0x0f,0x34,0x00,0x70,0x97,0x70,0xed,0x43,0x91,0x9b,0xaf,0xdf,0x24,0x38,0x1b,0x66,0x15,0x44,0xe5,0x1d,0x8b,0x5c,0xee,0x9e,0x97,0xb3,0x67,0x6a,0x4c,0x0f,0xfa,0xeb,0xb2,0xcb,0xd2,0xdb,0x79,0x85,0x32,0xb6,0x5c,0xf6,0x54,0xa5,0xb6,0xc1,0x66,0xef,0x88,0x6c,0xb0,0xfb,0xbf,0x4a,0x4f,0x84,0x4c,0x44,0x0b,},"\x5a\xbd\x13\xe9\x5b\x6e\xe1\xd5\x51\x47\x68\x28\x22\x00\xa1\x4f\x7d\x1a\x57\x1f\x34\x68\xe2\x2e\xfe\xc9\x93\x46\x30\x66\xa3\x7a\xec\x83\x73\xe5\xfb\x49\x95\x64\x19\x1f\x32\x94\xa9\xb3\x0a\xfb\x5f\x1a\x34\xd4\xd8\x8a\xbc\x3e\x9b\xc3\x03\xc1\xab\xa0\x5b\xd8\xfa\xca\x90\xee\x35\xd9\x7a\xc3\xdd\x91\x06\xf6\xfa\x3c\xa8\x1a\x38\x10\xec\xce\xfa\x6a\x20\x9e\xa3\xf3\xfc\x30\x49\xdc\xb1\xb0\x03\xc7\x28\xf7\xf6\x37\x4c\xa9\x8c\x58\x2d\xe6\xdb\x1a\xf7\x60\xf0\xa0\x21\x33\xca\x4a\x01\x03\x24\x30\x4d\x26\xa0\xe5\x0a\xf0\xd1\x3c\x13\x4d\xa3\x4a\x03\xa4\x1e\x83\xec\x8f\x10\xea\x5b\x85\x9b\xec\x1f\x51\xb0\x1c\xab\xb2\xd1\x6c\x1f\xc5\x2b\x05\x8f\x8e\x5d\xef\xae\xde\x12\x81\x71\xc2\xe0\x26\x90\x23\x16\xf8\x71\xb3\x5e\x32\x92\x65\x6f\x0e\x5b\x39\xbb\xbc\x81\xd0\xc0\x83\x0e\x6a\xc0\x1f\xac\x9b\x45\x39\xf4\x7f\x9a\xcf\xbd\x58\xb7\xab\x9f\x5a\x12\x56\x00\xf2\x51\xa2\x71\xd7\xbf\x16\x7f\x29\x54\xca\x8e\x1e\x0c\x96\xe1\x6b\x06\xe8\x30\x7d\xf8\x8b\xb8\xe9\xd5\x7d\x5b\xa0\x44\xf2\x7f\x3e\xaf\xf8\x1d\x9f\x15\x05\x54\xaa\x71\x22\xfd\x10\xd1\x1f\x35\xd2\xbe\x2b\x16\x24\xe3\xe1\xa1\xd7\x7f\xea\x4c\x5c\x7f\x8b\x98\x3e\x94\x5b\xa8\xc0\x8d\xc1\x54\x5b\x3e\x6b\x29\x73\xad\x04\x1c\x44\xd0\x61\x7e\xcc\xc8\x71\xa3\x82\x1a\x9f\xfe\xa9\xdb\x7c\x2b\x0d\x05\x5d\xa5\x5d\xe0\xb3\x50\x63\xe4\x22\x5a\xee\x6b\x22\x5a\xb2\xa7\x90\x6a\x8e\xe3\x29\xd1\xb3\x97\x2e\x0d\x1f\x70\x81\x7c\x50\xcc\xfe\x94\x03\xd1\x2a\xd6\x2c\x94\x92\x3b\x9a\xa2\xd7\xf8\x5a\x8d\xda\x47\xbe\x4d\xce\xc0\xdc\x2b\x0b\x58\xf7\xac\x19\x0a\xe0\x57\x9b\x9b\x13\xbb\xb8\xb1\x6a\x31\xb0\xab\x4d\x6f\x27\x91\x25\x3a\xb4\x75\x1b\x53\x6b\x88\xd3\xb4\x93\x7c\xc3\xa1\x10\xaa\x82\xa6\xff\xed\x68\x53\x52\x4b\x66\xb3\xef\xfc\xd2\xf6\x3c\x6f\x96\x45\xce\xa1\x3a\xa2\x3c\xd1\xc9\x9d\x9f\xfd\xa4\xcd\x3a\x9c\x5d\xf4\x5e\xc7\x47\x26\xc3\x47\x11\x28\xb7\x08\x9f\xbd\x82\x69\x4d\x2d\x3f\x08\xdc\x93\x06\xc0\xfc\x9c\xe7\xc8\x01\x13\x8e\xb1\xec\xb7\x56\xe5\x71\xe9\x05\x9b\x75\xed\x03\xf9\x2a\x31\x50\x2f\xbe\xb5\xfe\xc5\x1d\xe9\x35\x90\x10\xc4\x39\x7d\x28\xb6\x5e\x35\x6e\x38\x00\x1d\x0d\x51\xac\x96\x00\x72\x8c\x78\xb5\x76\x6e\x0f\x21\x79\x38\xb4\x10\xe7\x85\xb4\xc0\x1e\x86\xa3\x45\x2b\xcb\x38\x84\xac\xa4\x75\x40\x85\x9c\xc4\x9b\x00\x0f\x0b\x61\xfd\xbe\x72\x75\x25\x74\xb2\x7a\x22\xd4\xc4\x04\x13\xa4\x3b\x31\x09\x24\xb1\xbb\x14\x0f\xc9\xfd\xaa\xe2\x66\xd6\x59\x30\xe3\xf2\x34\xfe\x84\x1d\x82\xb2\x61\x76\xff\x86\xc5\xd2\xbd\x8d\x96\x5c\x52\xd7\x28\x06\x4e\xbd\xf6\x8d\xc8\xe4\x83\x49\x41\x80\x1c\xca\x0b\x2f\x25\x6d\x4f\x6c\x3d\xd1\x9d\x35\xd5\x36\x2b\xbf\x9b\x8a\x3a\x1c\x86\x3e\x09\x26\x89\xdd\x28\x52\xad\xd4\x88\xbf\x42\x68\x5b\x11\xe1\xe1\xad\x57\x45\xd0\x75\x62\x8d\x73\x1f\x91\xcf\xd7\x49\x15\x9e\x2e\x1c\x83\x7f\x4e\xf8\x3d\x80\xea\x1d\xd9\xbd\xed\x5f\x88\x01\x8c\xe1\xd4\xb3\x37\x1f\x95\x43\x53\xf3\xd8\x94\x37\x00\x62\xc0\x96\x5d\x67\x98\x6d\xbc\x48\x17\x15\xf4\x2d\xd2\xc9\x16\x07\xab\x8b\x5f\x0d\x89\xf6\x6e\x68\xd7\x3d\x50\xd6\x40\x52\x4d\x72\xe6\x91\x34\xb8\x87\x29\x8e\x5c\xd8\xc4\xb9\x05\xba\x5e\xfa\x0e\x9d\x68\x52\x14\xb8\x42\xf5\x0a\x2a\x39\x83\xa1\xaf\x58\x5a\xf2\xca\x43\xdb\xcf\x02\xc4\x08\x97\xae\x2e\x1a\xb5\x1d\xbc\xe5\x70\x34\x5e\x8e\x13\x5f\xb7\xb4\xeb\x0a\x1d\x6a\x0b\xb5\xa8\xa1\x80\x7e\x42\x5b\x2d\x62\x83\x60\x76\x80\x58\xe6\x1a\xd1\xcf\xaa\x20\x99"}, +{{0xfa,0xaf,0x55,0xd3,0xc2,0x97,0x14,0xb6,0x5c,0x22,0x81,0xe2,0xc2,0x2d,0x61,0x34,0x97,0x1a,0x2e,0x74,0x00,0x8f,0xb9,0x40,0x89,0xa7,0x73,0xee,0xeb,0x44,0x83,0xa6,},{0x39,0x86,0x2e,0xac,0x6d,0xd5,0x2e,0x38,0x1b,0xb3,0x4d,0xc1,0x96,0xba,0x8a,0x37,0x4d,0xcb,0x7d,0xf6,0xcb,0x14,0x0f,0xd0,0xcf,0xa6,0xcf,0xa3,0x9b,0x8c,0x75,0x3f,},{0x5b,0x00,0x83,0xf7,0xa8,0x20,0x61,0xc6,0x5c,0xf6,0xc7,0x56,0x40,0xc8,0x1c,0x28,0xe8,0xd6,0xd2,0xe8,0x7f,0x6d,0x57,0x95,0xc9,0xaa,0x3b,0xb3,0xe3,0x90,0xe9,0x19,0x90,0xe8,0x2d,0xb6,0xf0,0x7e,0x61,0x4f,0x50,0x7a,0x56,0x0a,0xba,0xa1,0xec,0xa6,0x56,0xc6,0x78,0xdd,0xca,0xe8,0x19,0x82,0x51,0xe6,0xaf,0x0b,0x76,0xb8,0x8d,0x0d,},"\x94\xe6\x61\xc2\x52\x40\xa8\x9e\x82\x3d\x7f\x5d\xc0\xe6\x92\xed\xdd\x13\x70\xc3\x5a\xc4\x4d\x5a\x8c\x87\x98\xd0\xc9\xaa\xfd\xf0\xbb\xfb\x54\x92\x60\x56\x8d\xba\x1c\x69\x08\x6b\xee\x63\x6b\xe8\xed\xcc\xd3\xcb\xb2\x70\x16\x24\x4d\x54\xd7\xed\x2f\xeb\x7f\xa6\x46\x14\xd4\x54\x49\xd7\xe0\x58\xe7\x1b\x30\x6c\x22\xe6\x91\x1c\x2a\xc7\x42\x07\xba\xe5\xa8\x4d\x0f\xc2\x47\xbe\x49\xd3\x56\xe5\xd4\x35\x3b\xa5\x58\x6b\x6e\x4b\x2b\x97\xce\x9e\x23\x77\xb6\xee\xd9\x2c\x84\x9e\x67\x69\x44\xae\x90\xdc\x42\x08\xe3\x00\xe1\x9c\xc9\x1d\xc2\x6b\xbd\xd5\xa3\x0c\xfa\x92\x81\xa1\x5e\xfd\x87\x30\x66\xf8\x5a\xf3\xa2\x6f\x31\x06\x23\xe0\x09\x80\x48\x53\xcc\x68\x55\x90\x3e\xa6\x4a\x90\x98\x97\xe3\x15\xe7\x3d\x31\x29\x48\x98\x0e\xf6\x28\x9d\xb2\x1a\x5e\xbb\xec\x8c\x8e\xfe\x20\xd1\xd5\x3d\xfa\xad\x6d\x9f\x42\x96\x53\x2e\x88\x7c\x37\x35\x01\x05\xa6\x33\xab\xc7\x73\x18\x87\x51\xb2\x8c\x3a\x08\xf1\xb5\xee\x04\x72\xde\x46\x27\xe6\xb6\x1b\x68\x27\x8d\xd5\x1c\xed\x6a\x61\xec\xf3\x88\x86\xe4\x53\x39\xdc\x6c\x60\xc3\x1e\x85\x0e\xf8\x29\x6a\xe8\x0f\x9d\x31\x70\x17\x76\xeb\x9a\xf2\x16\x93\xf4\xc5\x2e\xc0\x62\x62\x57\x38\xd4\xe3\xaf\xbf\x71\xd1\xc8\x1f\xc4\x84\x63\x60\x36\x3e\xa5\x41\xa9\x76\x62\x3a\x5e\x4e\x6b\x6a\x67\x23\x7e\x92\x37\x17\x3f\x1a\x1d\x54\x33\x02\x85\x88\x85\x71\x4c\x2a\x59\x1d\x0a\x78\x62\x82\xa0\x28\x5a\x37\x11\xf7\xbc\x2b\x63\xca\x79\x87\xe9\xae\x7d\x02\x03\x55\x55\xcf\x3b\x6a\xd6\xf7\x1c\xa9\x8a\xa9\x28\x88\x3b\xf8\x1d\xd6\xf8\x64\x93\xea\xab\x56\x37\xb4\xdd\x56\x9d\x1e\xe8\xde\x6a\x44\xbc\xed\xb6\x2b\x97\x06\xb1\xdb\x89\xe3\xf0\x5d\xf1\x63\x10\x01\x7d\x89\xef\x3e\x4b\xc0\x99\xb7\x21\xa5\xc8\xd3\x80\x43\xd6\xe4\xa2\x2c\xf0\x40\x09\xc0\xfc\xee\x6b\xe6\x99\x37\x82\x99\x54\x94\x1b\x8b\x4a\x1e\xbf\x4d\xae\xa0\xd7\x74\xd0\x78\x2b\xe1\x76\xc8\xe5\x91\x90\x77\x56\xc2\xcf\x75\xde\xa6\xf7\x87\x7d\xd6\x87\x5b\x8f\xe1\x01\x2f\x30\x50\xcf\xb1\x28\x9c\xf0\x88\x66\x7e\x15\x22\xee\xed\xc9\x27\xac\x86\xbf\xe2\xc4\x07\x43\x2b\x4a\x81\x3a\x6a\x7a\x55\x04\xe9\x99\x20\x6d\xb1\x82\x7e\x25\xfa\xfd\x70\xce\xd3\x6d\xb3\xb2\x81\xb6\xf7\xb1\x4e\xd5\xba\xa0\x57\x23\x15\xa9\x39\xc5\xbf\x4a\xbb\x13\x3d\x2e\x7b\x16\xd5\x2d\xe2\x08\x17\xaf\x05\x5d\xf5\xf1\x41\x20\x77\x34\x61\x0a\x0c\x6e\xeb\xed\xaf\xff\xd9\xcc\x9f\x06\x9b\x67\xf9\xa1\xc0\x45\x4b\xe4\x1d\x54\xc1\x38\xbe\x54\x2e\x5e\x38\xcf\xe2\xf2\x93\xf7\xd2\xd3\xdf\x66\x97\x7a\xcb\x36\x6a\x42\xc1\x9b\x31\x85\xac\xfa\x1b\x36\x3c\x61\x31\xa4\xa8\x11\x1c\x3b\x1f\x4f\xd7\xac\x40\x6d\x0e\x69\x10\x3b\xa1\x5b\x8c\x4b\xf2\x9b\xc2\xed\x9c\x45\xcf\xd1\xd2\x79\xd8\xd9\x31\x44\x4b\x2b\x18\x49\x25\x2b\x8a\x70\xee\xd8\x0f\xd2\x60\xed\xf5\xa3\xc0\x1b\x96\x90\x16\x0d\x23\x11\x85\x1d\x21\xc9\x30\x2d\x98\x59\x86\xea\xee\xb3\xae\x2c\x07\xc7\xc7\x67\x20\x94\xf9\x1d\xb0\xbd\x50\xbe\x37\x7e\x4d\x1e\xb0\x7e\xe7\x6a\xf4\x9d\xc1\x36\xa1\x45\xa1\x1b\x17\x2f\x08\x11\xfe\x73\xd6\x25\x9b\xe3\x70\xc4\xdf\xca\xb6\xf1\x9e\x4a\x64\xb1\x51\xd0\xa6\xdb\x80\x50\xc3\xde\x2c\xc3\x25\xf5\xc5\xf6\x59\x4c\xf6\x24\x8e\xb0\x81\x20\x95\x39\xe0\x8c\xa3\x42\x29\x84\xe7\xbf\x80\x3d\xe3\xa4\x19\xb1\x44\x23\xf1\xe5\xa5\x42\x24\x04\x2c\xe4\xf0\x54\x88\xa6\x04\x4f\x40\x42\xbd\x64\x9b\x1a\x08\xce\x10\xc2\x00\x6e\xa7\x6e\xfa\xb4\x64\x1f\xef\x28\x97\xef\xd7\x24\xe6\x05\x4a\x3b\xd1\xa6\x9e\x39\xa4\xa5\xe2\xd5\x02"}, +{{0x6d,0x78,0x55,0xe3,0x0f,0x7a,0x13,0xe2,0x37,0xb0,0x67,0x14,0x43,0x46,0x43,0x4b,0xb4,0xb0,0x51,0x78,0xc7,0xd8,0x8d,0x49,0x2e,0x79,0x02,0x7c,0x4b,0x0f,0x3c,0xdd,},{0x72,0x73,0x29,0x38,0x28,0xef,0xa3,0x49,0x82,0x23,0x92,0xdb,0xba,0xb0,0x78,0x79,0x57,0x7e,0x1a,0x77,0xa6,0xfd,0x6a,0xfe,0x33,0x75,0x3a,0x9e,0xec,0x88,0xc4,0xaf,},{0x0f,0xe2,0x8e,0xad,0xd9,0xe5,0xdd,0x57,0x4b,0x3f,0xaa,0xea,0x81,0x0d,0x44,0x52,0x2c,0x8b,0x1b,0xfb,0xb3,0xe3,0xd5,0x7e,0xd8,0x89,0xfa,0xed,0xec,0x91,0xd0,0xe1,0x4a,0x86,0xb9,0x14,0xc4,0xc7,0x66,0xf1,0xbf,0x9b,0x8f,0x18,0xb0,0xdb,0x89,0x0d,0xb6,0xc1,0xb1,0x25,0xd5,0x78,0x04,0x33,0x36,0x19,0xb1,0xe0,0x72,0x0a,0x33,0x00,},"\xf8\xb9\x36\xe7\x93\xb0\x17\x58\x0c\xc0\xe9\xcb\xda\x2a\xcb\x64\x74\x50\x7f\x4b\xca\x3a\xfc\x87\x83\xec\x46\xee\xb8\x2c\xcd\x4d\xd2\x52\x56\x76\xaa\x6a\xb5\xc0\xdc\xf7\xd7\x5f\x7e\x03\x11\xe6\xfe\x6b\xf2\x72\x63\xf8\x57\x8f\xeb\x55\xc5\x61\x2d\x1f\x28\xe8\x88\xb7\x66\x56\xc4\x1c\xcd\x8a\x70\xb9\xbc\x60\x4b\x42\x72\x4f\xa2\xbc\x41\x1d\x44\xc3\x1a\xb6\x8c\xe8\x4f\x83\x93\x39\x9e\x34\xd5\x40\x85\x79\xc2\xba\x29\x21\xf2\xf8\xd1\x14\x87\xaa\x7e\x52\x55\x7f\xee\xd9\x67\x57\x19\x9d\x3a\xae\x63\x77\x77\x01\x54\xb1\x7f\x35\x77\xc7\xac\x3d\x8c\x76\xcf\x74\x61\xb5\xe8\xd4\x2a\x71\x85\x07\x8e\xd4\xf8\x62\xfc\x57\x50\x2f\x61\x50\x75\x30\x7b\x6e\x10\x3c\x77\xc1\xf6\xc8\xbd\xa7\xaa\x17\xe4\x35\xe2\x1b\x94\x9a\xf4\x4d\xff\x5a\xa3\x0a\x62\xda\x71\x2f\xa9\x96\x6a\x61\x2f\xfc\xa1\x48\x71\xfd\x6f\x86\x0b\x4a\x96\x14\x01\x2c\x53\x69\x91\x0e\x0f\xfd\x6f\x0f\xbd\x88\x9a\x9c\x25\x7c\x32\xbd\xcf\x90\xbb\x80\x62\x7c\xb2\x72\xec\xd4\x59\x98\x97\x55\x59\x55\xe1\xfe\x08\xcd\x7e\xbb\x21\xc0\x71\xbe\x0f\x48\x98\x96\x96\xcb\x39\xaa\x82\xad\x11\xba\xa5\xd4\xac\x61\x3a\xbf\x1b\x6d\xb8\xa2\x0e\x68\x68\x36\x22\x28\x33\xf8\xb6\xdd\x2f\x00\x06\x22\x7b\xe4\x8e\x85\x80\xdc\xc8\xde\x62\x0d\xac\xb2\xf6\x5a\x69\x36\x75\xd6\xcb\x45\xba\x5d\xd1\xaa\x70\xdb\x76\xbc\x64\x1d\x4f\xb5\x67\xec\xbc\x71\x11\x44\x2e\x29\x41\x58\xbe\x57\x5c\x71\xdd\xc2\x6e\x94\xf4\x12\x66\xa2\xfd\x3a\x0d\x43\x57\x81\xfc\x09\x46\x48\xfa\xdf\x5f\x17\xcd\x41\xab\x89\x58\x21\x89\x4e\xc0\x80\x6b\x26\x2c\x39\x35\x34\xfe\x66\xf2\x1e\x37\x83\xc1\x4a\x96\xc8\x8f\x2e\x06\x53\xfe\x32\xe7\x5d\xce\x8a\x46\x3b\xb9\x7e\xed\x6c\x16\xf3\xf3\x22\x81\x69\xab\xb5\xb4\xbf\x9e\xa3\x27\x8c\x1f\xf0\xf8\x6e\xae\x71\x38\x9b\x64\x33\xac\xd0\x97\xee\xfa\x9e\x6e\x05\xf4\x95\x5c\xd5\x17\x83\x0b\x8d\x98\x70\xcc\xb5\x22\x74\x15\xe5\x0f\x23\xf6\x47\x32\x17\xa7\x45\x09\x64\x70\xdc\xa9\x3d\x2b\x34\x67\x3c\x5d\x6a\x57\xed\x02\xc8\xe0\xca\xe1\x19\xb3\xf3\x29\xd8\xab\x64\x98\x49\x4c\x29\x21\xbb\x6f\x49\x6d\xd0\x83\x81\xe7\xd3\x9f\x2d\xb5\x76\x3b\x14\xa2\x82\x1b\xef\xcc\xa0\xa9\xfd\x31\x25\x45\xde\x68\xab\xf2\x06\xd1\x2d\x8e\x02\xe7\x3b\xc7\xe3\xcb\x79\x6e\x7e\xe2\x6c\xc6\x3d\x74\x1e\xfa\xfc\x53\x45\xf8\x13\x29\x51\xbc\xfb\xfd\xdf\x63\x1f\xb7\xcb\x43\xef\x35\xb9\x45\x3c\x93\x90\xeb\x23\xb1\xf9\xd8\xb1\xc7\x2d\xeb\xd2\x4f\x09\xa0\x1a\x9d\xc6\x0e\xe6\x81\x53\x06\x18\x83\x57\x78\x1a\xf6\xe1\x82\x0a\xa3\x5e\x4e\xc1\x21\xb7\xca\x34\xd7\xde\x76\x11\xb2\x46\xa3\xe7\x03\xed\x48\xc7\xeb\x03\xa6\xfe\x8f\x85\x2e\xe7\xd3\x25\x45\xc9\xd8\x52\xd6\x4d\x5d\x75\x93\x0e\x5f\x1e\xbe\x21\xa3\x07\xef\xa7\x62\x2e\xda\xce\xd6\xd8\x79\x02\x6f\x0f\x85\xa9\x11\x20\x12\x80\x37\x05\x58\x22\x69\xd3\x9f\x14\x32\x34\xdf\x89\x09\xab\x3d\x94\x8e\x76\xd3\xda\xaa\x24\x22\x6d\x9a\xc6\x01\xee\xf2\x77\xfd\x2c\xfc\x4a\x19\xae\xdf\x43\x87\xa2\x16\x17\xb0\x3e\xc3\xd3\x84\x5a\x38\x55\x4f\x5e\x97\x03\x6e\x56\xec\x1c\xe6\x60\xdf\x9c\x06\x2c\x2c\x99\x3b\x77\xc5\xba\x6a\x6d\x05\x23\x1d\xae\x37\x64\x18\x3c\x3e\x96\xaa\x53\x9c\xfb\x34\x15\xfb\x16\x3c\x64\x5b\x23\x03\xb2\xd6\xd4\xbd\xa8\xca\x6c\x72\xbc\x03\xd5\x30\x5f\x9b\x11\x8e\x92\x5e\x27\xd2\x9a\xb7\xdc\xb1\x96\x47\x0e\x63\x39\x63\x1b\x23\x80\x74\x4c\x04\xd1\xda\x34\x8f\xc0\xfe\x27\x42\x77\xf8\x2f\x95\xbd\xfb\x0b\x64\xb4\xcf\x3b\x51\xe5\x71\xc0\xdd\xb3\xb5\x3c\xa6"}, +{{0x7e,0xe4,0xe7,0xe9,0x8c,0x6a,0x40,0xf0,0xe7,0x44,0x13,0xf2,0x40,0x39,0xbd,0x22,0x0d,0xf1,0xf8,0xc7,0xf0,0x15,0x52,0x8d,0xbf,0x52,0x84,0xab,0x9f,0x7c,0x82,0xe2,},{0x4d,0x5a,0x80,0x0f,0x9b,0x22,0x07,0x0e,0x01,0x6e,0xe2,0x3a,0xf8,0xa3,0x10,0x90,0x2b,0x36,0x9d,0x58,0x9a,0x84,0x7f,0x34,0x5c,0x2e,0xa2,0x96,0x8d,0x6d,0x09,0x24,},{0xac,0x3b,0xfe,0x3a,0xdf,0x94,0x1c,0x93,0x4d,0x33,0x49,0xc4,0x92,0xde,0x70,0xd5,0x16,0x6b,0xe3,0x89,0xf9,0x55,0xbe,0x87,0xc2,0x88,0x3f,0x41,0xf2,0xda,0x14,0x6c,0x91,0x06,0x51,0xa3,0xb4,0x52,0xc2,0xd7,0x39,0xdc,0x9b,0x53,0x1c,0x57,0x45,0x56,0x5e,0x69,0xd9,0x83,0x59,0xf1,0xd7,0xd9,0x3e,0xbd,0x36,0xd7,0x0a,0xbb,0xf0,0x0d,},"\x8f\xb0\x13\x73\xc4\x2e\x69\x61\x4a\xea\x99\xaf\x49\x32\x37\x85\xf3\x38\x61\xb9\x4e\x90\xf5\x65\x38\x9e\xbf\x70\xe2\x19\xf5\xde\xc7\x32\xe0\x01\x0b\x58\xf7\x29\x05\x30\xdf\x22\x2a\xc9\xc7\x3e\x1c\x2e\x92\xa5\xe6\x06\x1d\xe5\x59\x0c\xaf\x9c\x0d\x50\x21\xd7\x29\xea\xa1\x15\x41\xfa\x1d\x08\x21\x60\xbe\xaf\x61\x1e\x7c\xfd\xc0\xeb\xb3\x15\xd3\x88\xe5\x38\xb4\xb5\x02\x8f\x9b\x30\xd3\xd9\x73\x34\x7f\xfd\x44\x26\x3e\xef\x08\x3b\x81\xb2\x1b\x82\xec\xa5\x75\x6a\x49\x4b\x1d\x81\xc0\x7d\xe8\x49\x50\x6d\x3e\x3b\x66\x87\x97\xa5\xc5\x44\x25\x4d\x4e\xbe\x5c\xf8\x17\x1b\x39\xf8\x72\x4c\xbc\x41\x89\x29\x1b\x3c\x53\xc2\x1e\xce\x49\xa1\xd7\x39\x56\x3c\x65\xb4\x90\x25\x93\x56\x47\xa7\x30\x3a\xe0\xef\x7f\x6d\x24\x55\x46\x45\xa4\x28\xdb\xbb\x42\x44\x9f\x53\x99\xe3\x6d\xc7\x87\xb7\xd6\x95\x8a\x02\xee\xbb\xb8\x36\xe5\xe5\x3e\x26\xe4\x87\x23\x9d\xe9\x4d\x1d\x25\x0e\x79\x43\xac\x0e\x22\xd9\x27\x50\xa0\xcf\x34\x73\xbe\x1a\x62\x25\xcb\xe7\x95\x45\x04\x82\x69\xf6\x23\x7e\xc9\xf9\xec\x30\x7e\x8a\x34\xb7\xbb\x34\xcd\x49\x06\xe4\x31\x62\xa3\x70\x8f\x32\x9c\x5b\x98\x9d\x7a\x7f\xcd\xe1\x09\x9a\x54\x25\x46\xfe\x9c\x33\x18\x2b\xa5\x1b\x84\x3e\x96\xd1\x1c\x79\xe9\x1a\xd2\x1f\x71\x70\xe2\x57\xfd\xc2\x81\x8e\x12\xf9\x16\x8a\x97\x4c\x96\x8a\x4d\x27\x3f\xa3\xff\xa9\xf3\x5f\xf9\x05\x98\x0e\xaa\xd3\x72\x1c\xae\x80\x2b\xee\x36\x21\x0b\x40\xb9\x93\x19\xbb\x66\x99\x82\xe9\x43\xb2\x70\xa4\xc4\xd0\xa9\x2e\xcb\x5b\xba\x2d\xd8\xb4\x0a\xc3\xd2\xf0\x32\x5c\x46\x9d\x5e\x9d\x48\x3f\x52\x41\x97\x40\x10\xc5\xc0\xda\x33\x5f\x16\xe9\x62\x19\x6c\x2e\xf1\x4e\xb2\x4a\xaf\xbb\x31\x1b\xfd\x5f\xa8\xdc\x8d\x2d\x61\xe6\x87\x8a\xd2\xcc\xe0\xdc\x99\x39\xe4\x45\x22\x72\x3d\x42\x7e\xf3\x2f\xb4\x3b\x96\x7f\x5e\x44\xfc\x66\x57\x92\x79\x6f\x8c\xf9\x34\xf0\x1c\x32\x5d\x63\xd5\x83\xdc\x3c\xa9\xd4\xfc\xc7\x57\xd9\x17\x85\x80\xda\xef\x53\xaa\x3a\xb2\x1d\x2c\xe4\x35\x95\x5d\x1c\x6d\x47\x63\x8c\x5e\xdb\x62\xff\x55\x61\x69\x3d\x1c\xbd\x10\xec\x9e\x39\x9a\x71\xbf\x9d\xb1\xc9\x96\x9f\xd5\x9e\x4e\xeb\x31\xaa\x59\xbf\x39\xe9\xf1\x84\x17\x8d\xef\x72\x46\xed\x4b\x8f\x4b\xe5\xba\xda\xa5\xdb\x4a\xf8\x67\xf4\xf2\xec\x39\xa1\x37\x04\x20\x2c\x87\x84\xfa\x16\x8c\xe9\x6f\x9c\xfa\xc7\x10\x17\x23\x62\x75\xfd\x85\x7c\xc3\xc5\x1a\x9c\x7a\xc2\x56\x21\x5e\x14\xb8\x43\xf7\x21\x4d\xc9\xf8\x24\xb9\x1d\x1a\x51\x70\xd0\xef\x1d\x37\x69\x6f\x93\xee\x96\x6a\x2b\x7d\xec\xe2\x2b\x4f\x3a\xfd\x39\xc1\x6d\x60\x1e\x5f\xf8\x40\x8d\x45\xc1\xa6\xce\x71\xf0\x60\x97\x6c\x5b\xe4\xc0\x42\xb1\xb7\x38\xdf\x95\x80\xba\x5a\xe7\x78\x80\xa7\x0c\x0b\x94\xf0\xe1\xc9\xf9\xaa\x34\xc0\x90\xd6\x12\xd5\x7a\x9b\x93\x1f\x50\xa1\x25\xfa\x35\xce\x40\xa2\xcb\x7f\xaa\xd5\x30\xf8\x09\x08\xc7\x3c\xb7\x82\x58\xaf\xd2\x63\x13\x90\x04\x1d\x92\x61\x7e\x9b\xf6\x4c\xe9\x6e\x8e\x4a\xc7\xf3\x12\x6d\x8a\xf8\xa0\x4c\x75\xff\xd4\x38\x76\x9d\xe0\x6f\x74\xc2\xfc\x20\xcc\x81\x92\xda\x35\x3e\x79\x06\x12\x83\xbb\xa0\x8a\x8d\x24\xe6\xe4\xe2\xe8\x3b\xa5\xb0\x8e\x42\x75\x22\x60\x62\x14\x8d\x8a\x02\xaf\xad\x65\xb6\xf6\x27\xcf\xbd\x29\xb7\x1c\xa1\x8a\xee\x5b\x1f\x97\x16\x9b\xf0\x22\x8b\x37\x6f\x41\x06\xb5\x0f\xd9\x1a\x38\xa6\x62\x11\xd6\x9e\xbb\x4a\x7a\xf0\xe1\xc2\x21\x7f\x1b\xa0\x14\xd1\xe0\xcd\x17\x50\x8d\x58\x15\x5d\x16\x3d\xd9\xde\x2f\xe1\xc6\x4c\x7f\x88\xd5\xb5\x53\xe9\xba\x1e\x1f\x25\x43\x0d\x7e\x12\x5b\x07\xa8\xc2\xed"}, +{{0x1f,0x28,0xd9,0x09,0x1d,0x19,0x6c,0xba,0x3d,0x45,0x52,0xe5,0xa3,0x37,0xa4,0xd8,0xaf,0x3f,0x29,0x5e,0x62,0x9e,0x4b,0xa6,0xfe,0x99,0x70,0x31,0x20,0xae,0x41,0xe0,},{0x81,0x4d,0x34,0xbf,0x28,0xee,0x6d,0x90,0xf0,0x39,0x59,0x90,0x41,0xdb,0x81,0x0f,0x7c,0x9d,0xaa,0x91,0x8e,0x03,0xe9,0x61,0x97,0x41,0x4b,0xc9,0xaa,0x31,0xec,0xdc,},{0x5b,0xe5,0x52,0xfa,0x73,0x1e,0x83,0x67,0x93,0xf6,0xdd,0xa8,0x95,0xdc,0x9b,0x1e,0x2c,0xcd,0x66,0x9d,0xe1,0xc8,0x43,0xe0,0x0e,0xa6,0xfa,0x3c,0x5e,0xbf,0x97,0xa3,0x4b,0x26,0xf1,0xf3,0xac,0x7f,0xf2,0x22,0x5e,0xe4,0xa7,0xe4,0x30,0x07,0x2c,0x13,0xda,0x40,0x66,0xdc,0xdc,0xc0,0x5b,0xa2,0xb5,0xf6,0x1a,0x6e,0x8d,0x21,0x07,0x09,},"\xa6\x94\x68\xbc\x33\xeb\xfe\xf0\x61\x5c\x64\x3c\x49\xda\xc6\xe0\x4f\xdb\x6c\xfb\x8e\xc4\x58\x57\xbb\xb7\xa2\x7e\x52\x8f\xd6\x31\xfc\x34\x11\xba\xee\x65\xcc\x1f\x94\xfc\xc9\x4a\xed\x4a\x43\x32\xfa\x68\x61\xe0\x65\xe0\x61\x63\x54\x17\x09\xd7\x97\x28\xe0\x1b\xe2\xb1\x40\xa0\x22\xc8\x3e\x7b\x23\xb9\xed\x2a\xd2\x83\x21\x69\xdf\xc9\x56\x90\x91\x3c\xf3\x72\x01\x30\x65\x70\x80\xc9\xd5\xa7\x82\x7e\x56\x60\x75\x74\x52\xc5\xfc\x3d\xcd\x80\xcc\x6b\xe0\x98\xc6\x29\x22\x6d\x54\x66\xe0\x2b\x97\x12\x6b\xe7\x4a\x14\x52\xee\x16\x81\x50\x95\xde\xb4\x2b\xf0\x65\x66\x71\x50\x28\xc1\x18\x25\x82\x0a\x8a\x23\xc6\x0d\xa2\xb6\x8d\xd9\xa5\x5d\xad\x2a\x29\xa4\x96\x44\x43\x81\x7c\x07\xd7\x76\xb2\x44\xb1\x51\x86\x81\x9a\x3b\xbe\xd4\x14\xab\xf4\x57\x9a\x3e\xce\x3a\x3d\xc7\xb1\x05\xd0\xa9\xdb\xa3\x7b\x9e\xaa\x78\xbe\x8e\x46\xe1\x69\x8b\x59\xb0\x94\x0b\x01\xf3\x8b\x28\x3c\x33\xa9\xa4\xb1\xd4\xf8\x14\x4b\x16\xee\xb5\xfc\x0a\x7a\xf0\xd0\x81\x69\x66\x45\xa1\xea\xb3\xa7\x87\xcb\xcf\x88\xfa\xd9\x3d\xd6\xcd\x46\xd2\x95\xa8\x79\xa1\x77\x50\x33\xa9\x85\x63\x82\x2e\xf1\xf6\xb6\x9a\x58\x1e\x49\x73\x6c\x8d\x70\x1b\x44\x53\x96\x93\x40\x52\x1e\x4a\xd4\xbf\x94\xb9\x11\xb0\xe2\xd8\x6f\x34\xee\xce\x4a\x63\x85\xff\x1f\xe6\x32\x20\xcd\x3c\xc5\x92\xf3\x6d\x6c\x49\x1f\xa1\x8f\x7c\x14\x04\x36\x0d\x2a\x77\x53\xfe\x07\x3e\x09\xa2\xfc\x42\xa4\xbb\xea\x55\xbc\x96\xd7\xf0\x5c\x98\xae\xd2\xcc\x4a\x9f\xae\x8f\xd4\xa0\x19\x7f\xf0\x1f\xa7\xf0\x04\x6e\x3c\x3e\xb5\x9a\xaa\xbc\xa3\x13\xa4\xdd\xaa\x5d\x20\xd2\x7c\x2c\x5f\x1a\xc6\xd8\x7f\xd3\xcb\x4b\xd3\x5a\x1e\xc7\x5d\x10\x4f\x7c\x36\x73\x31\xa3\xe2\x95\xe5\x3c\x4e\x80\xba\xe1\x4b\x97\x92\xd0\xd5\x26\xf7\x40\xd4\xff\x03\x6f\xaf\x54\x87\x96\x7f\xfa\xbe\x8e\x88\x3d\x3f\xb0\xd1\x6f\xaa\xdb\x28\xe1\x28\x5d\xed\x41\x57\x0c\x0b\x07\xc2\x55\x9b\x53\x1e\x0f\x92\x54\xef\x88\xe5\xb1\x0f\x64\xf4\x83\x9a\x9a\x0b\x6c\x3c\x7f\x1b\x78\x50\xf4\xad\x9b\xf0\x99\x9a\x7f\x2a\xe7\xc4\x5a\x65\x8e\xa5\x30\x36\xfc\x70\x19\x98\x42\xb8\xe4\x9e\x60\xf9\x67\xde\x1f\xf3\xab\xff\xf6\xcd\x73\x5b\x7c\xd8\xb8\xf9\xe2\x48\xf1\x56\xf6\xc6\x54\x38\x69\xeb\x99\x82\x3d\xae\xa8\x8d\xeb\xaf\x79\xf0\x1e\x65\x21\xec\x63\xfe\x72\x72\x4e\xe3\xc8\x22\xb8\x8b\x39\x68\xb2\x48\x52\x09\x15\x83\xc4\x9a\xb3\xc1\x5f\xa1\xf7\x9b\x18\xd9\x8f\x04\xd9\xb6\x84\x1c\x9a\x7c\xa0\xde\x2f\xcc\x02\xf9\x5d\xd6\x49\x49\x2e\x8b\x56\xa3\x1e\xc1\xe2\x44\x33\x7a\xf6\xaa\xae\xde\x8b\xf9\x9f\xc8\x14\xef\x57\xc0\xd5\xe0\x8c\x3c\x7e\xcc\x18\x97\x98\x0a\xa1\x69\xa9\x92\x6d\x20\x69\x8d\xf6\x93\x0e\x21\x10\xcb\x46\x0f\x49\x39\x01\x00\x74\x10\x95\xf8\xed\x00\x41\x2a\xe6\x96\xd9\x8e\xfe\xfd\x29\x0d\xa5\xf7\xd0\xb7\x28\xd2\x0a\x1e\xbf\xa6\xbd\x7d\x27\x0f\x28\x1a\x98\xc7\xb1\xe4\x08\x43\x51\x25\xaa\x48\x3c\x6b\x7d\x63\x3f\xf7\x58\x8a\x94\x16\x58\xf6\x12\x95\x44\xd6\x29\x45\xb9\xb8\xaf\x71\xa8\xc6\x2c\x0a\x50\x07\x6c\xb8\x54\x1b\xa7\xe4\xbd\xe4\xed\xe4\x41\x72\x2c\x6e\xb9\xdf\x8c\xfd\x06\x56\x33\x9e\x86\xd2\x26\xab\xae\xa0\x5e\xa0\x47\xf6\xb8\x30\x77\x01\xf6\xc9\xa4\x4c\xc9\xcb\x83\x7b\x8e\xb6\x24\x45\x92\x5e\x8a\x88\x81\xd2\x53\x8f\xcb\x2b\x24\x9e\x4e\xe8\xb6\x86\xec\xfb\x49\xc4\xdf\x86\x40\x1d\x24\x9a\xac\x35\x84\x1e\x91\x40\x04\xf9\x45\x5d\x3f\xde\x37\x5d\x20\xa0\x1f\xba\x27\xb1\x97\xa6\x98\xd3\x84\xc7\x65\x05\x10\x68\x01\x62\x7e\x83\x36\xbd\x2d\x76\xd7\x61\xa8"}, +{{0xc6,0x4d,0xd2,0x0d,0x42,0x62,0x75,0x26,0x19,0x8a,0x22,0x64,0x76,0x90,0xc8,0x95,0xb5,0xb4,0x5b,0x69,0x8f,0x57,0xa6,0x9d,0xfb,0xe4,0x8d,0xbd,0x42,0x6a,0xa4,0x70,},{0x2e,0x01,0xd4,0x04,0x16,0xf7,0x8a,0xcd,0xdb,0x34,0xb8,0x44,0x5e,0xa4,0xfd,0x0a,0xb3,0xfa,0x9e,0x66,0x43,0x04,0x47,0x52,0x21,0x3f,0x07,0xc7,0xf0,0xff,0x43,0xa0,},{0xde,0xac,0xc8,0xc2,0x32,0x18,0x72,0x76,0x76,0xd5,0x40,0xa2,0x3b,0xda,0xd7,0x81,0x02,0x11,0xe6,0xd5,0x7a,0xd2,0x94,0xc3,0x7d,0x4b,0x1c,0x9a,0xf6,0xb3,0x37,0xa5,0x3f,0x78,0x80,0xd2,0xba,0xfa,0x73,0xb3,0x05,0x08,0xc0,0x08,0x42,0x6b,0xf8,0xd7,0xc9,0x65,0xa1,0xf4,0xa4,0x22,0xa1,0xbc,0x7d,0x6a,0xd6,0x22,0x6f,0xd1,0x97,0x06,},"\x82\x1b\x9f\x7c\x16\x10\x4b\x53\x3b\xd1\x27\x18\x4f\xd7\x2a\xde\x09\x2b\x13\xbb\xd9\xac\xee\xd2\x9b\x8d\x10\xf1\x66\x88\x92\x2d\x16\x5f\x89\x31\xd5\x3d\xf5\x90\xfb\x71\x3b\x67\x4d\x80\x5c\xe0\xc9\xd6\xce\x6c\x43\xba\x69\x68\x19\x1d\x12\xbf\xa0\x8a\x8c\xe2\x2e\x8f\x33\x6b\x2b\x49\x1a\xf2\x5d\x1b\x16\x06\xf9\x30\xca\xeb\xe5\x22\x39\x2a\x87\xd4\x2c\xe7\xbc\x16\x7a\xa7\xb6\x10\x59\x72\x20\xaf\x31\xa6\x65\x35\x30\x71\xe8\xd9\xe5\xf4\x20\x78\xb9\xc3\x88\xbf\x04\x02\x58\xe2\x1f\x9c\x3a\xb3\x8c\x04\x27\x61\x8b\x2c\x28\xd3\x43\x0d\xf2\x79\x21\xbf\xc5\x84\x87\xb3\x46\x19\x78\xbf\xa8\xbf\x58\x6c\xfe\x83\x58\xe0\x92\xf8\xf4\x74\x66\xe7\x62\x45\x1d\x50\x16\x4a\x0d\x74\x36\x0f\x66\xb4\xcd\x3a\x35\x75\xda\x01\xda\x23\x75\x24\x30\xc0\x35\xda\x85\x9f\x57\x7d\xe2\x22\x90\xaa\xb4\xed\x7f\x34\xd2\x67\x40\x6a\xb5\x47\xeb\x44\x5c\xc6\x4d\xf5\x30\x19\x42\x7f\x4e\xb7\x2b\xca\x55\x39\x71\x53\xd0\x1c\xcf\x7e\xc9\x7d\x7a\x96\x7d\x9a\xff\x46\x23\x1d\x2e\x20\x27\xb3\x8f\x3b\x41\xbd\x2c\xb1\xb7\x98\xa4\xae\x88\xab\xf4\x89\x62\x16\xd3\x15\xbd\x53\x83\x02\x42\x59\xe5\x97\x42\x80\x2a\x91\x1b\xad\xcf\x84\x73\xdb\x91\xaf\x31\x97\x33\x32\x0c\xb9\x52\x1e\xf9\xce\x43\x72\x67\xb6\xea\x17\xbc\xaf\xe5\xd0\x90\x3b\x12\x3a\x35\xc9\x88\xf4\x98\x34\xf6\x1d\xd5\x52\x64\x0a\x32\x76\xda\x26\xaf\x17\xec\x21\xa2\x02\x96\x58\x6d\xd6\xf4\xb3\x6c\x7a\x4f\x0b\x89\x9d\x70\xb4\x2a\xf8\x9e\x29\x37\x01\x32\xed\xfb\x72\xd6\x83\x41\x94\xa1\x60\x93\x60\xb1\xf1\xfe\xab\x89\xb9\x6b\x8e\x8f\x0f\x68\x98\x7c\x57\xcc\xe0\xba\xb7\x68\x11\x37\x18\xfb\x17\x09\xde\x2d\xf3\x21\x77\xd4\x40\x85\xda\x5e\xfd\x9d\xa7\x0e\x1a\x85\x8c\x92\xf2\x45\xac\xfe\xe6\x4b\x71\xf3\xeb\x16\xe0\x4f\xc1\x39\x89\xe6\x93\x37\x99\x97\x01\xdd\x73\xab\xc2\x66\xc9\xfd\x4c\xff\x91\xa0\xfd\x04\xfb\xd8\xb1\x3b\x12\xe6\xf4\x50\x38\x57\x15\x84\x8e\x00\x7f\xa0\xd4\x63\x11\x9f\xd7\xde\x63\x25\xb6\x40\x04\x2b\x65\x42\x12\xe0\xdb\x8d\xa1\xad\xeb\xd2\xa7\x58\x9f\x77\xee\x4f\x75\x2d\x28\x2c\xa1\x11\x9c\x43\x1b\x17\xad\x0a\x02\x1e\xf2\xbf\x95\xe5\xac\x47\x04\xe6\x2d\x70\x39\xd0\xe6\x51\xe4\x56\xd6\x0e\x63\xba\xde\x40\x1c\xca\x77\xc9\xa8\x91\x63\x17\x4d\x50\x22\xd7\x45\xab\xdc\x76\xb9\xff\xe2\x54\x41\x55\x23\x5e\x30\x63\xe6\xe4\xae\xec\x44\xed\x5d\x8a\xb4\x08\xd9\x66\xfe\xc1\x20\x16\xc1\x30\x73\x0b\xbc\x55\x87\x32\x06\x5d\xa8\x00\xa7\x0c\xbf\xb0\xfc\xcc\xa4\x5d\x00\x28\xcb\xfd\x96\x32\xdd\xb2\xf0\xed\x12\xed\xae\x7b\x93\x0b\x10\x6c\x9d\x12\x85\xa4\xb8\x70\xde\x75\x07\x99\x9c\x74\x79\x3d\xd4\x97\x40\x87\x19\xc8\x98\xab\xe4\x9f\x7f\x33\xa3\x3e\x69\xb5\x0f\xa5\xaf\x94\x80\x06\x85\x66\xd1\xfd\xdf\x44\x82\xd7\x97\x04\xad\x8e\xf1\x1b\x88\xb4\x2c\xc6\x9f\xce\x8a\x55\x7b\x5b\xa5\x10\xe7\x08\xb9\x37\x51\x23\x03\x85\x68\x27\x0d\xe4\x07\x23\x2e\x95\x62\x1e\x2d\x04\x57\x0b\xec\x2c\x41\xec\xcf\xd8\x55\xb2\x1f\x0c\x9b\xba\xa2\x3b\x5c\x58\x15\xfc\x88\x8f\x7f\xbe\xd4\x82\xc3\x20\xff\xa1\xe0\x63\xe8\x7b\x55\xbc\x8f\x7e\xee\xa3\x74\x06\x3a\x9b\xe6\x5f\x7e\xd9\x22\x5b\xf6\xca\x34\xcf\xa3\x11\xb7\x9f\x3a\x25\x8c\x25\x2e\x63\x45\xed\x6a\xc8\x47\x48\xf4\x68\x07\xa5\x5d\x4b\xa4\x12\x66\x16\x9c\xd2\x62\xd4\xf7\x22\x79\xef\x0c\xaa\x77\xff\x44\x93\x35\x32\xbd\x13\x74\x75\x6c\x23\xec\x85\xf5\x5e\xfe\x9f\xc2\x33\x1f\x26\xf8\x81\x62\x9f\x80\xc2\x69\x2f\x7f\x53\xe4\xbc\x6f\x22\xef\xb4\x54\x57\xa2\x23\xf0\xd1\xc4"}, +{{0x0f,0x8e,0x9f,0x35,0x26,0xb4,0xfa,0xea,0x92,0x76,0xf2,0x2a,0x17,0x79,0xe6,0xf8,0x27,0x09,0x80,0x8f,0x6d,0x0c,0x61,0x2a,0xdf,0xe3,0x2a,0x6e,0x8a,0x06,0x10,0x05,},{0xd4,0x8c,0x3f,0x0f,0xde,0xf3,0x82,0xd1,0xd8,0x03,0x13,0xe8,0x46,0xfc,0xa9,0x5e,0x41,0x81,0x76,0xbb,0x5d,0xfa,0x9d,0x39,0x8c,0x1d,0x21,0x24,0x77,0x6f,0x69,0x0a,},{0x2f,0x59,0xa2,0x93,0x60,0x73,0x91,0x38,0x34,0xeb,0x15,0xa0,0xe0,0xbc,0xb9,0xaa,0x80,0x40,0x89,0x46,0x8f,0x24,0xdd,0x1b,0x2d,0x37,0xa1,0x93,0x4a,0xe9,0xba,0x10,0x20,0xff,0x64,0xb7,0x2e,0xec,0x03,0x26,0x8d,0x0a,0x7c,0x01,0x2c,0x4e,0x79,0x63,0x00,0xf6,0xdf,0x7a,0xdd,0xa0,0x1c,0x8b,0xc5,0xe9,0x01,0x5c,0xcd,0xee,0x1a,0x00,},"\x0c\xcd\x37\xc4\xcf\xd8\xe7\x0c\xa3\xbb\x39\x46\xd0\x9d\x70\xd0\xf6\xa4\xb8\x1d\x6d\xfb\x07\x9d\x78\x73\x74\x80\x71\x58\x98\x80\x92\x73\x82\xf7\x43\x6a\x6e\xf8\xf5\x1c\x25\x54\x73\xdd\x01\xfe\xb5\x2c\x8e\xdb\xe4\xd3\x25\x57\x13\xe6\x8d\x64\x0f\x3d\xcf\x15\x8f\x2b\xfb\x9f\xbe\xcf\x71\xf0\x71\x9d\xfe\x8c\xe6\xb6\x01\x28\x1b\xa6\xc2\x0a\x56\xb4\xf8\xe7\xca\xa4\xaa\x9f\x86\x8f\xbf\xc5\xe4\x32\x1c\x22\xd6\x5f\x03\x82\xc4\x89\x6b\xf9\xbe\xbe\x35\x46\x94\x9e\x81\x85\xa4\xd8\x17\xe4\x5b\x5d\x12\x93\x95\x38\x21\xbd\xd9\x8e\xc2\x59\xf6\x4a\x3d\xe5\x38\x65\xb1\x49\xea\x01\xc8\xf6\x83\xec\xda\x61\xda\x5d\xc1\x0e\x7e\xbd\xdd\xfe\x74\x84\xf5\xeb\x10\x31\xb7\x91\x65\x87\xca\xa3\x99\xa0\x6b\x6f\xea\x4c\x5e\x6e\x0b\xe6\x50\xfb\xdf\x06\xc1\x03\x6d\xf2\xcc\x35\xf6\x2e\xa0\xea\x71\x3f\x52\x80\x9d\x77\xf4\x7c\x2e\x55\xc9\x23\x92\x48\x16\x80\xb6\x33\x20\x56\x22\x69\x13\xb0\xce\x88\xa6\xc5\x5a\x26\xbd\xb5\xb8\xba\xb3\xcf\x46\x95\xa8\xc5\x22\x30\x2c\x4e\xba\x37\xd3\x1f\xf7\x7e\x58\x30\x1b\xcc\xfc\x7c\x7b\xe8\x58\x0c\x63\x42\x68\x79\x95\xf4\x4a\xcd\x19\x09\x65\xae\x0d\x7b\xf0\x66\x95\x92\xb6\xad\x88\x74\x3e\xbb\x36\x0c\x73\xe0\x48\x4a\x23\xd2\xf9\xe9\x9e\x9e\xb0\x38\xdc\xbd\x87\xca\x9b\x1a\x49\x8f\x1b\x2d\x35\xfe\xdd\x7f\x8e\x1f\x7f\xd8\xca\x52\x64\x86\x91\x1e\x07\x6a\xea\xb4\x87\x7b\xba\xcf\x37\x8a\x28\x55\xf9\xc5\xac\x03\x91\x30\xdc\x69\x0e\x17\x7d\x67\xb2\x44\xcc\x8a\xd0\x32\x37\x9e\xf7\x1f\xe0\x5e\x9c\x86\x13\xd8\xf5\xd6\xea\x3d\x4e\x3e\x47\x22\x20\x29\xcc\x00\x42\x53\xbe\x47\xf8\x7f\xb5\xe3\x31\x4c\x48\x98\x13\x4b\x87\xac\xf1\x0b\x25\x38\xba\xd8\x97\xbd\xc5\x01\x2d\x8f\x97\x62\xc8\x71\xb6\x53\xd4\x00\xfe\xe0\xce\xed\x5e\xf6\xbd\xd1\x6f\xaf\x3f\x0a\xbd\xbd\x72\xcd\x0a\x12\x94\x05\x46\xf0\x99\x5f\xf1\x4b\x0f\x1b\xd5\x48\x56\xff\x74\xc3\x6e\xb4\xf2\x2d\x72\x87\xae\xfd\xc6\x09\x99\x8c\x1f\x41\xbc\xc3\xbb\x3a\x5f\xa4\x92\x34\xf4\xfa\x8e\x92\x9c\xd0\xf5\x54\xb3\x15\x39\x5d\xae\x87\x3c\x61\xca\x70\xe0\x41\x0c\x2f\xd5\xa1\x15\xd2\xa6\xff\x1f\x1c\x94\xb2\x7b\xa4\x50\xb8\x19\x4b\x21\xf0\x95\xc6\x1a\x5f\x21\x5e\x3c\x84\xf5\xd4\x3f\x0e\x73\x62\x86\xd3\x3b\x8c\x47\x81\x4d\xb9\x79\xf9\xdc\x00\x91\x98\x46\xbe\xe6\x85\x33\x7d\x99\x55\x5a\x24\x47\x2e\x6b\x00\xb3\xf4\xa1\x43\x11\xa6\xc7\xc9\x04\xba\x58\x89\xda\x6c\x1d\xdc\xc1\x11\x75\x80\xf5\xfb\xc4\x1f\x2b\x8a\x42\x68\xcf\x0e\x9f\xa5\xbf\x41\x25\x34\xc9\xe4\x05\x2a\xac\xb5\x04\xcb\x86\xe2\x14\x7a\xb8\x02\x3d\x58\x80\x0b\x76\x3f\x9a\xbf\x9d\x04\x40\x78\x8a\x51\xdf\xe5\xcb\xd4\x42\x30\xba\x52\x28\xf1\xf5\x96\x0e\xa3\xa4\xe4\x04\x4d\x36\xda\xf8\x11\xcb\xdb\xec\x5d\x69\x64\x63\xd8\xe9\x41\xf2\x72\x17\x56\x3b\xb4\x4a\x21\x18\xa4\xf5\xac\xd6\xe7\x94\xde\x17\xe0\x28\xcb\xde\xef\xde\xf2\xcb\xf0\x3d\xd3\x2e\x78\x99\xe6\x5a\x1c\xf8\x39\xf5\xd9\x0e\x1f\x8c\x36\x4b\x57\x7f\xe3\x10\x53\x53\xf6\x67\x68\xdb\xf7\xaf\x0c\x52\x1a\xa8\xa4\x9f\x7a\x22\x08\x2d\x88\xf9\x01\x49\x8c\x90\xb9\xd7\x77\x7e\xd2\xf9\xf0\xe8\xa5\x52\xd8\xa1\xfa\x5e\x96\x32\xed\x85\x32\x58\xc9\xc2\x15\xb6\xdb\xb4\x11\x1d\xcf\xca\x55\x4b\xfb\xc9\xbb\xa2\x2f\x88\xbc\x55\x55\x2c\x6d\x86\x25\x56\xd7\x41\xda\xd5\x9f\x21\x5e\x37\x28\x83\x46\xca\x7d\x7f\xd8\xc6\x5a\x38\x0d\x72\x0c\xaf\xf9\xef\xa1\x49\xf3\xfd\xa2\x32\xda\xa5\xb1\x2e\xf1\x1c\x0a\xf0\x86\x2b\xd0\x22\x9e\x07\x5a\x3c\x6b\x60\xef\x0b\xbb\x3d\xad\x7f\x29\x08"}, +{{0xfe,0x7c,0xdc,0x79,0x66,0xd0,0xff,0xb9,0xc7,0x6f,0x4a,0x18,0xe7,0xf0,0xbf,0x90,0x69,0x0e,0xb7,0x6d,0xc3,0xd3,0xd5,0x08,0x84,0x64,0x8e,0x2e,0x39,0x37,0xd0,0x20,},{0xa1,0x2e,0xe9,0x81,0x2d,0x6a,0xf6,0xaa,0x48,0x79,0xfa,0x72,0xbc,0x0a,0x69,0x80,0x4e,0xa1,0xa8,0x5f,0x9b,0xc4,0xa2,0x6a,0x5b,0xa7,0xcf,0xbb,0x91,0x4d,0x0d,0xd9,},{0xb5,0x2d,0x03,0xfd,0xeb,0xcd,0x42,0x97,0x37,0xef,0x70,0x92,0x06,0x87,0x21,0x1f,0xbb,0x4c,0x04,0xf8,0x1e,0x35,0x5c,0xec,0x70,0x72,0xc5,0x05,0x41,0x75,0xd2,0xed,0x77,0xf3,0x8f,0x46,0x6f,0x00,0x14,0x22,0xda,0x8f,0xcd,0xf0,0x67,0xdb,0x14,0x51,0x00,0x7c,0xab,0x60,0x7f,0x04,0x9c,0x2e,0x26,0x07,0xb5,0x7d,0x44,0x71,0x3c,0x04,},"\xdc\xb9\x1c\xf1\x55\x46\x1a\x60\xdf\x07\xee\xc2\x9d\x98\x61\x6e\xd1\x72\x8b\x34\xef\xa9\xe1\xf7\x44\x5a\x91\x58\xa8\xf8\x8d\x7f\xaa\xae\x0e\x24\x72\x5a\xef\xf2\x63\xc3\xf7\x4f\x0c\x68\x4f\x18\x58\xf0\x5b\x69\x95\xd2\x84\x6b\x6a\x83\x2f\x67\x08\x5a\x42\x76\xd8\x66\x1a\xeb\xd3\xbf\xcc\x73\x18\x1f\x1f\x51\x02\x93\xb6\xde\x5e\x4b\xb2\x3f\xf2\xdc\xa1\xdf\x60\x8c\xb1\x4a\xe5\x22\xac\x4b\x51\xe1\xf9\xb9\x73\xab\x8b\xaf\xcd\x53\x4e\x71\xc5\x71\x81\xb1\x18\x96\xee\x10\x61\xfb\x36\x9c\xa4\xd2\x93\x9d\x1e\x57\x06\x0d\x9f\x4d\xb0\xa5\xc0\xb0\x7d\x52\x68\x7f\x15\x78\x17\xe6\x3e\x2f\xe7\xeb\xcc\x3e\x7c\x95\xef\xe0\x5b\x85\x99\x10\xc9\x5e\xed\xe8\x6d\x14\x39\x9e\x61\x62\x48\xa2\x8c\x24\xc4\x14\xdb\xb6\x93\xaf\x9b\xe4\x35\xa3\xa9\xcd\xc3\x3e\x0e\x2a\x58\x69\x18\xd9\x1b\x8a\x85\xce\xdd\x16\x12\xd7\xc1\xa2\x17\x92\xbd\xd4\x3a\x91\x5b\x15\x7e\x04\xbb\x3a\x44\xec\xbe\x23\xfa\x49\xcc\x55\xda\xab\xbe\xaa\x15\x5a\x73\x7f\x76\x5b\x8d\xdb\x0f\x3b\x15\xd4\xec\xf2\xce\xf7\x05\x4c\xa7\x3e\xc8\x7d\x91\x75\x2c\x2e\x99\x19\x5c\xdb\x19\x58\x84\x4f\x14\x4e\xda\xb8\x2a\x97\x54\x9f\xc9\xce\xc0\x8e\x87\x11\xcf\xf8\x63\xb6\x3f\xc2\x31\xa7\x7f\x76\x2e\x5c\xd9\xda\x9d\x59\x40\x92\x52\xe9\x9a\xb0\x4c\x42\xbc\x57\x09\x7e\x46\x4e\x3c\x6a\x48\xd8\x02\x41\xe6\x32\x5e\x3e\x40\x94\x98\x9b\x34\xc0\xe8\xb3\x2b\x1a\x78\x29\xd5\x4d\xf3\x2a\x05\x0e\xe8\x7d\x8f\x7c\x4f\xe3\xe4\xf4\xf7\x04\x9d\x1f\xee\xcd\xbe\xa6\x71\x08\x35\x0d\xb4\xe8\xed\xbe\x3c\x3f\xf8\xab\x2a\x25\xd1\x47\xb1\xc1\xc5\x82\x1b\x0f\x8c\x21\x04\x2d\x65\x5d\xb8\x31\x69\x1f\x59\x98\x3f\x27\xd2\xed\x1d\x49\x06\xc5\x44\xe2\x4e\x79\xbe\x68\x65\x3c\x9b\x22\x9a\x7f\xb6\x1e\xf5\x45\xba\xb1\x6e\x98\x81\xcb\x4d\x92\x65\xe2\x93\x59\x0a\x0b\xc2\xdc\x86\xba\xd2\x30\x07\xff\x40\xc9\x58\x61\x92\x3b\x49\x82\x41\xc1\x0d\x26\xbf\x48\x48\xf6\x2b\xa7\x38\x3f\x64\x9d\xc3\x8a\xf1\x84\x0d\x0d\xe9\x28\xa9\xbf\xee\x5e\x11\xb5\x14\x34\x16\x3a\x7a\xb1\xed\x53\x74\x15\xf1\xe9\x32\x85\xe3\x69\x92\x05\x72\x01\x58\xf9\x55\x7d\x86\x41\xed\x2b\xf4\x85\xb8\x21\x2c\x8f\x82\x66\x8b\xac\x3c\x22\x8e\x69\x24\xc1\x7d\x0d\x98\xf2\xe6\xd9\x23\x43\x71\xc4\x42\x5e\xb7\x58\x68\x9f\xdb\x0d\xc1\xce\xa1\x39\x4a\x28\x62\xe8\x7b\xb3\x8e\x62\x4c\x34\x79\x91\x68\x61\x32\x78\x22\x5f\xb5\xe1\x9c\x92\x47\xad\xa3\x55\x54\xf2\xc4\xad\xdb\xb6\x1d\x5a\x50\x2a\x70\x81\x27\xd6\xef\xbc\xa8\xf7\x35\x09\x0b\xdf\xdd\x88\xdb\x29\xfb\xd1\x4b\x69\xab\x12\x62\xf0\xc3\xe2\x6d\x26\x3a\x59\xc5\xae\x46\x39\x06\x53\x83\xd5\x25\x0b\x54\xcf\x59\x2b\xb7\xad\xfe\xaa\xe0\xd2\xfe\x81\x6b\x63\x81\xe8\x6e\xa2\xd1\xc7\x18\x13\xcb\xc3\xd8\xfe\x2d\x31\xde\x7b\x30\xfb\x6e\xc2\x29\x4f\xe4\x53\x6a\x36\xc6\xa1\x83\x5a\x71\x62\xab\x4b\xf8\x9d\x19\x46\x61\x19\x65\x7b\x0e\x46\x45\xae\xf5\x03\x50\x5b\x4d\x55\xdf\x97\x7b\xd2\xc9\x0c\x64\x40\x6f\x49\x70\xd5\xcf\xf2\x45\xb8\x35\x32\x2a\x6f\xbe\x23\x4e\x5e\xfb\xb5\xea\x45\xe8\xf0\xd3\x97\x3b\xe4\xaa\xa2\xaa\xda\xab\x07\x7d\x6c\x9b\x25\xbd\x44\x94\x40\x9e\x93\x47\x9d\x2d\x15\x07\xf6\x6b\xc8\xbe\xf8\x29\x99\xa1\x3c\x79\x43\xb4\x72\xb9\xe6\x1e\xc2\x9d\xeb\xef\xbf\x22\x41\x42\x3e\x0f\xaa\x42\xc1\xa3\x38\xa7\xa6\x13\x1d\xed\x93\x5b\xa0\x3a\x28\x66\x2e\x68\x59\x33\x68\xdd\xe5\x4b\x46\x2f\x2a\x5f\xb7\x46\x18\x5f\xf5\x50\x3e\x69\xba\x36\xbf\x16\xf7\x14\x58\xcd\xd0\x57\xe5\xc1\x72\x67\xf6\x74\x98\xd6\x52\x86\x0b\x46\x5e"}, +{{0xf6,0xc9,0xab,0x5e,0xa7,0x5f,0x29,0x4e,0x8e,0x0c,0x07,0xc4,0xc0,0x9e,0xd8,0xee,0xa3,0x11,0x3b,0xdf,0xc2,0xef,0x75,0x9e,0x20,0xa2,0x64,0x57,0x16,0x04,0x10,0x8d,},{0xb1,0x2f,0xf5,0x5b,0xd3,0xec,0x42,0x61,0x0e,0xac,0xea,0x28,0xb3,0x13,0xa1,0x6e,0x19,0xc9,0xe8,0xb4,0x7c,0x2b,0x15,0x17,0x09,0x91,0xbe,0x08,0x8d,0x65,0xcf,0x63,},{0xa7,0xf9,0xd0,0x8b,0xa1,0x41,0x83,0xef,0x24,0x7f,0x2c,0x25,0xfe,0xcc,0x2b,0x83,0xed,0xa6,0xde,0x58,0x02,0x2e,0x46,0x6c,0xe7,0x8f,0xcf,0x50,0xf7,0x1c,0xe2,0x61,0x62,0x44,0x65,0x62,0xee,0xa4,0x5d,0x63,0xa2,0x1c,0x3b,0x22,0x56,0x1f,0xd4,0x68,0x00,0x58,0xac,0xb8,0x25,0x40,0x7a,0x15,0x40,0x8f,0x27,0x13,0x61,0xa1,0x46,0x0f,},"\x71\x62\x3b\x39\x74\x3e\x39\xc7\xe0\x86\x38\x80\x6d\x46\x8a\x1a\x8a\x6f\x35\xc2\xae\x38\x8e\xef\xc2\x73\x74\xbb\x52\x53\x88\x14\xc4\xb3\x6c\x9b\x8e\x38\x9a\xd8\x31\x83\xde\x02\xa1\xbb\xd0\x32\x57\x34\xe4\x61\x87\x54\x09\x23\x37\xd3\xe7\xdc\x12\x56\x92\x8e\x35\x28\x87\x0c\xa7\xf0\x06\x13\xa2\x5b\x71\xbb\x15\xd1\xd9\xea\xaf\xf9\xf2\x26\x9b\x71\xc1\x97\x69\xe0\x03\xce\x84\x56\x14\xb2\xec\x95\xed\x28\xca\x85\x5b\x52\x21\xd4\xcb\x80\xa6\xca\x94\x66\xaa\x33\xe2\x51\x0d\xdf\xf7\xdc\xe1\x86\x15\x9d\xa7\x0f\xc8\xb1\xfb\xac\x12\xa2\x6e\x1f\xc0\x94\x22\x76\x89\x2a\xd6\xe9\xb0\x03\xf5\x69\x59\xbd\x31\x3a\xf2\x89\xe7\xa0\x53\x2a\x66\x4b\x76\xb9\x6b\x91\x98\x54\xe0\x65\x0c\xb8\xc5\x2e\xc4\xc5\xfb\x50\x53\xaf\x2f\x0c\xf8\xc0\xf2\x2a\x52\x3f\x9e\x2c\x64\x19\xdf\x8d\x0b\x71\x4e\xe3\x77\x68\x00\xeb\xfa\x70\x77\x60\x84\x66\x7d\x6d\xcf\x54\x1f\x14\xcf\x16\x62\x62\xe0\xf6\x4c\x42\x76\xae\x28\x88\x5e\x6c\xfd\x09\x7b\x70\xc0\xd6\x18\x6e\xa5\xdb\xd0\x33\x32\x3c\x98\x76\x13\xda\x08\x64\x5d\xe0\x72\x08\xba\xe1\x2a\x17\x8d\x8f\x7f\x65\x0a\x25\xaf\xbd\x70\x1c\x85\xa1\xba\x63\x9e\xf9\xf1\x21\xc4\x0c\x5c\x12\x9a\x47\x37\x34\x33\x86\xa4\x81\x83\xff\x3c\x59\x13\x89\xd8\x9e\xcd\xa5\x26\xcf\xfb\x26\x74\xf1\x7b\xb1\xc2\x30\x90\x55\x4b\x13\x40\x84\x97\x96\xa6\xd4\x44\x46\x0b\xb4\x19\x42\x7e\x93\xe6\x58\x5b\x0f\x4f\x06\x5a\xd8\x7e\xe6\xed\xf5\x4b\xe6\x18\x8a\x1d\xd5\xac\xe1\x36\x4d\xef\xa5\x61\xf7\x4e\x26\x76\x9c\x9b\x29\x1e\xe7\x55\x52\x76\x50\x1c\x6a\x49\x08\x0d\xa0\x92\x4f\x37\x92\xc2\xa7\x28\xa5\x20\x07\xb1\xc0\x7c\x95\x57\x8f\xed\xaf\x40\x39\x96\x23\x9e\x9c\x55\xa9\xa4\x4c\x3d\xfc\xc3\x7c\xdf\x03\xfb\x48\x5d\xb5\xa0\x8d\xff\x15\xa7\xa4\xf7\xb7\xf1\x54\x74\x2e\x84\x31\x56\x4d\xc1\x7d\xbd\x43\x2e\x10\x33\x7c\x22\x76\xfc\xfd\x9d\x70\xf7\xc3\xd5\x70\x39\x3a\x0c\x19\xf6\x40\x51\xc7\x3a\x87\x0e\x20\x55\x84\x10\x65\x31\xd1\xfd\x2a\x1d\xd1\xc9\xd0\xfc\xe1\x4f\xfa\xaa\x07\x7b\xb7\xe2\x60\x25\x1e\xed\x6c\x62\xbc\x6e\xdc\x24\x22\x51\x94\x40\xc2\x24\x4e\xba\x38\x40\x46\xb0\xed\xda\xa6\xcf\x2c\x1c\x7e\xee\xbf\xcd\x78\xfc\xae\x18\xb8\x22\x90\x55\x2b\x59\xc0\x46\x3d\xc4\x50\x61\x8b\xa6\x7c\x77\x0d\xec\x0e\x22\x9b\x84\x60\x93\x6c\xa8\x19\x56\x2b\xcb\x36\x96\x9c\x8f\xf7\x0b\xf1\x13\xc1\x16\x71\xe0\x0b\x94\x13\x55\xbf\x01\xad\x54\xb0\x5c\xfe\x2a\x04\x8b\x38\x72\x8c\xbd\xd1\xb4\x98\x09\xe1\xf2\x07\xac\xa3\x09\x8d\x99\x42\xee\xc4\x7d\x6c\x9d\x41\x3b\x37\xc9\x14\xfe\xdd\x38\xac\xd5\xff\xe4\x96\xca\xc7\x57\xc2\xef\x8b\x77\xbd\x84\x03\xd1\x4b\x1f\xc9\x8a\x90\x3f\xe2\xb9\x79\x46\x82\x33\xa7\xf2\xae\xd6\xf8\xd5\x09\xd8\x74\xe1\xdc\xe0\x51\x49\xaf\x9d\xf3\xfe\x45\x95\xc7\x1e\x8b\xc4\x63\xde\xe9\x38\x4d\x5e\x05\x05\xd2\xa6\xb0\xa2\xb8\xa1\xed\x62\x16\xaa\xae\x9d\xcc\x76\x02\x48\x7a\x4c\x08\x51\xfd\xf0\x96\x29\xc1\xe9\x91\x18\x80\x9a\x95\x44\xa6\x57\x7a\xf9\xf9\x15\xd1\xe6\x5d\x81\x62\x20\xc4\x8c\x84\x90\xfa\x9b\x70\xda\x42\x2a\xd6\x80\x02\x23\xd6\xd8\xc3\x40\xf9\xea\xb2\xcc\x7e\x14\x93\x62\x12\x4a\x30\x0b\x40\xcb\xb8\xc0\xa6\x5d\xa3\x01\xdb\xba\x93\x1b\xa5\x64\xf3\x59\x73\xca\x8b\xf2\xd1\xed\xb5\x6c\x19\x46\x61\x95\x5b\x3b\x68\x38\x1f\xa1\x5d\x4b\x8d\xc6\xad\xa1\xa5\xce\xbd\xa3\xa4\xcc\xc5\x51\x23\xe0\x05\x7f\x4f\x82\x10\x41\x93\x7d\xd5\x49\x20\x9c\x82\xe1\x16\x57\x0b\xc9\x08\xa2\x8e\x32\x99\xa9\x44\x14\x43\x49\x8f\x74\xb3\xcc\x88\xe1\xa6\x2d"}, +{{0x43,0x10,0x3d,0xf0,0x1a,0x48,0xa0,0x3c,0x57,0xf3,0x2f,0x52,0xd7,0x0c,0x68,0x49,0xee,0x44,0x58,0x0b,0x2a,0xb4,0xee,0x72,0xd5,0x48,0xd8,0x48,0x13,0x4f,0x7c,0xeb,},{0xa3,0xcb,0xe0,0xd6,0x4b,0x05,0x60,0xbc,0xb5,0xae,0x00,0x90,0x01,0xe3,0x14,0xd9,0xec,0x90,0x79,0x01,0xdd,0x74,0xa8,0x04,0xa0,0x05,0x90,0x22,0xed,0x9c,0x6d,0x04,},{0x19,0x54,0x47,0xbe,0xb1,0xde,0x4a,0x7e,0x36,0xea,0x89,0xa6,0xce,0x3c,0x99,0xbc,0xc8,0x94,0x11,0xdf,0x5e,0x0b,0x15,0xf7,0xba,0x0b,0x1d,0x11,0x0c,0x45,0x6a,0xbc,0x6b,0x3f,0x5f,0x1d,0xa6,0x10,0x6e,0xd8,0x87,0x86,0x4b,0xa5,0x6a,0xab,0x46,0x6a,0x8a,0x63,0xb3,0x35,0xcf,0xcf,0x4c,0x64,0xd6,0x5c,0x0e,0x6f,0xb4,0x80,0xb4,0x01,},"\x73\x8c\xbf\x06\xd0\x0d\x4d\xcd\x5e\x5f\x24\x3a\x1c\x18\xdd\x5e\xc2\x02\x78\x88\x46\x95\xa1\xcf\x3b\xea\x67\xbb\x5b\x05\xdd\x7e\x60\xa2\xa2\x4f\xd3\x25\xbe\x6b\xf4\x6b\x46\x28\x73\xec\x90\x7f\x9d\xe8\x8d\xc2\xc7\x62\x62\x0b\x7e\x0e\xf7\x27\x65\xd4\xbd\xa6\x62\x45\x49\x93\xc8\x28\xa1\x74\x6e\x9e\xd8\xd1\x9d\xff\x43\xc4\xc4\x85\x27\xac\x84\x5f\x21\x86\xa4\xad\x7c\x1d\x99\x2a\x16\x24\x5c\xd5\x73\x07\x3e\x09\x40\xdc\xee\xd3\x68\x11\x0b\xb5\xfd\x0a\x4c\x88\x34\xce\x88\xa7\x71\x25\xb9\x14\x73\x93\xc8\xb5\x8c\xb1\x6e\x5e\xbd\xc1\x82\x44\xeb\xfa\x48\xba\xba\x46\x97\x3f\xdc\xd4\x85\xb1\xb2\xe5\xf3\xb0\xe7\x09\x92\xcf\x19\x99\x58\x06\x38\xd8\x7f\x1f\x5b\x27\xc4\xd7\xf9\x1d\xec\xf3\x7d\xe2\xe7\x34\xe3\x19\x55\x35\xc6\x31\x08\x2b\x3e\xba\xa8\xce\x30\xa9\xc2\xc2\xdb\x01\x6d\x7d\x35\x47\xe6\x21\x61\x88\x50\xe2\x20\x40\x03\x8d\x0f\xe0\xfa\xea\x2f\x9b\xf5\x10\xb6\x82\xc4\xfd\x14\x75\x0e\x89\xb4\xc1\x99\xef\x0c\x99\x05\x00\x54\x3e\xee\xab\x5f\x0b\x50\x7a\x31\x31\x99\xc2\xa2\xa0\x26\x2d\x6d\x81\x4c\xbc\x09\x33\xc5\x92\xe2\x56\xc3\xe2\x9d\x52\x4b\x06\x6e\xa5\xa4\x54\x33\x61\xa1\x04\x50\xe0\xaa\x67\x5c\x61\x40\x8f\x30\x7f\x26\xee\x58\x96\x9d\x63\x27\x8f\x13\x5b\x7d\xcb\x66\x6b\x93\xf2\xca\xcf\xd8\x38\x73\x47\x1e\x97\x4a\x28\x6b\x09\x02\x3f\x50\x15\xfa\x1a\xaf\x18\xbf\xbf\xa5\xf7\x43\x85\xd0\xdf\x6b\x9a\xdd\x51\x6f\xfc\x0c\x31\x13\xe3\x7e\x09\x78\x38\x64\x6a\xc9\x30\x54\xff\x4d\x96\x02\x06\x67\x44\xba\x33\x96\x95\x3f\xd7\x81\x68\x13\x01\x70\xbb\x27\x5c\x15\x2b\xdd\x36\x6f\x73\x06\x5c\x0a\x7a\xd7\xad\x00\x75\x8c\xb9\x9a\x7a\xc1\xb7\x80\x9d\x26\xdf\xaa\xc7\x58\x46\x82\x01\xee\xb6\x0d\xea\x36\x8c\x33\xf2\x57\xaf\xe2\xf1\xb4\xc0\x2e\x37\xba\xfe\x40\xf5\xd7\xfd\x40\xc8\x7d\x1c\x56\xa0\xcb\x28\xe9\xd2\x83\x69\xa3\x92\x4b\xce\xf8\xb6\xd9\x99\xdc\xf4\x29\x4d\xd8\xc4\x14\x3d\x75\xc6\xc2\x5b\x5a\x45\x44\x48\x8d\xde\x72\x52\x48\xc7\x8d\x93\xc1\x5b\x81\x5b\x01\xcb\xd0\xf3\x1d\x1b\x00\xac\x04\x83\x7e\xf8\x5b\x40\x03\xfc\x96\xd4\x45\x7a\xc5\xa0\x23\x62\x3e\x67\xb6\x6d\xa4\x70\x0a\x08\x59\xf8\x3f\xdc\xcd\x3c\x7a\xae\x09\xde\x09\xa0\x57\xe0\x0d\xb4\x4a\x2a\x6a\xac\xaa\x21\x74\x6a\x49\xb8\x22\x46\x89\xa5\xcc\x18\x54\xba\x3d\xc4\xaa\x2a\xa3\x45\x24\xe7\xa5\xa8\x9d\x11\xee\xa3\x56\xaa\xea\x5e\xf5\xfb\xf5\x42\xc9\x9f\x54\x4d\xb9\x40\xf5\x08\x68\x38\xee\x2a\xb2\x18\xb8\xd3\xf2\xe1\x07\xd0\xb2\x9d\x4b\x04\x83\x0e\xed\x79\xc0\x76\x8e\x02\xc2\x84\x4b\x3c\xba\x32\x68\x95\xf4\xab\x38\xa3\x99\x4b\x83\xab\x30\x60\x0f\xf5\x11\xcc\xb5\x95\x99\x2f\x8c\xc0\xd2\x95\x48\x07\x97\x2d\xa3\x65\xb0\x6f\xbd\xab\x53\x9b\x2e\x03\x59\x8b\x34\xe5\x3c\xfc\xf9\x39\x90\xb9\x7a\xac\x1d\x32\x97\x83\x36\x6d\x45\x1f\x97\x2b\x8d\x8a\x00\xb6\xb8\xec\xdb\x37\x27\x96\x44\xce\xc1\x44\x7c\x09\x98\xee\x4f\x70\x90\xf3\x4c\x9c\xc8\x53\x05\x90\xca\xe7\x65\x36\x0a\xad\xb0\xab\x31\x35\x00\x49\x41\xc9\x23\x02\xcb\xb2\xb3\x50\xa1\x4e\x8f\x30\xaf\x53\x25\xc2\xb4\x38\x00\x5e\x3a\x9d\x45\x85\xe6\x32\x65\xc3\x27\xba\x72\x57\x54\xb3\x32\x56\x91\x7f\xb9\x65\xae\x9f\x02\xed\x21\x26\xb4\x81\x47\x3d\xc0\xe9\x31\xc2\x52\x2b\xf0\x0f\xe6\xa2\xec\x95\xc7\x92\x24\x7b\x1e\x03\x39\x61\x12\xf7\x83\x07\x0e\x2f\xe6\xc2\xcb\x98\x22\x50\xd1\x3f\x2d\x54\x60\xc7\x44\xfd\xe4\x53\x23\xe6\x31\xcc\xcb\x54\x0c\xd7\x25\xf2\xc5\x5a\x70\x58\xf2\x30\xe8\x2b\x79\xf3\x66\xaf\xcb\xb0\x25\xb4\x92\x55\x43\x95"}, +{{0xf9,0x13,0x9e,0x57,0x9f,0xa9,0x6e,0xbd,0x62,0x87,0xdb,0x3b,0xab,0xcd,0xa6,0x0f,0x92,0xe7,0x31,0x53,0x56,0x6f,0x92,0x4c,0xb5,0xde,0x04,0xde,0x44,0x93,0x48,0x1e,},{0xc0,0x6c,0xe3,0x35,0x53,0x3a,0xf8,0xd8,0xf3,0x37,0xf2,0xb3,0x8e,0x0a,0xaf,0xa2,0xce,0x9b,0x27,0x22,0x3c,0xd9,0xdd,0xc5,0xef,0x32,0x02,0x7f,0x04,0x88,0x9b,0x7f,},{0x05,0x1d,0x8d,0x7f,0x0b,0x68,0xd2,0xee,0xc7,0x2c,0x81,0xad,0xfc,0xfb,0x31,0xae,0x85,0x58,0xf6,0x0a,0xb6,0x3c,0x9f,0x56,0x52,0xa8,0xdf,0x63,0x8f,0x66,0x6f,0x1e,0xbc,0x0c,0x6e,0x0b,0x41,0x19,0x53,0xbc,0xda,0x6b,0x51,0x51,0xb2,0xb9,0x3a,0x39,0xe3,0xc5,0x33,0x0a,0x85,0x73,0xe1,0x68,0x79,0x22,0x72,0xab,0xd3,0x6c,0x81,0x0a,},"\xb3\x30\x76\x4d\xdc\x62\x8e\x4a\xd6\x7a\xa4\x98\x2a\xe8\x6d\x45\x81\x07\x1c\x19\x3e\xc3\xc5\x8f\x81\x3d\x79\x21\xb8\x4d\x2a\x54\x56\x2b\xd8\x74\x17\xae\x1d\xe5\x90\xa1\xa4\x8c\x4e\xc7\xd5\x56\xad\x93\x1d\x65\xc0\x54\x3f\xdf\x06\x07\xc7\x49\x85\x9e\xe1\x2f\x99\x52\x02\x0c\x19\x5c\xf8\x74\x60\x95\xe1\x08\x7c\xc6\xc3\xc8\xef\x9d\x24\x05\x25\x60\xce\x81\x3d\x61\x39\xb7\xa7\x5c\x8f\x4b\x8e\xa3\x0a\x9c\x4a\xb8\x88\xd0\xa6\x34\x1c\x99\xab\xd3\x5e\x09\x03\xbf\xe5\x6c\x93\x15\x23\x40\xc4\x12\x76\xd7\xf2\x4e\x09\x12\xb1\x2a\x4d\xb3\xd7\xee\x44\x84\xdf\xa5\x3a\xfc\x0b\x1a\xea\x14\x09\xd1\xe0\x32\x8a\xa1\xc8\x60\x41\x27\xca\x2e\xb1\xa5\xe8\x1b\xf3\x1f\x8c\x7a\x51\xc6\x05\x2c\x53\x4e\xfe\x6b\x3d\x0e\xe7\x4f\xf5\xa9\xb1\x1c\x61\x57\xe3\x64\x77\xef\xa9\x38\x2f\x57\x51\xbe\x8c\x8c\x64\x54\xc4\x46\xd6\xf8\xdc\x7e\x92\x95\x25\xcc\x3d\xe7\x8c\xb1\xba\x4a\xba\x9b\xd4\xbe\x15\x26\x10\x43\x75\x82\xc9\x65\xee\xa4\x8c\xbd\x4c\xaa\x6f\x30\x8f\x85\xf4\xf8\xd0\x06\xa0\x42\xf6\x19\x20\x07\x62\xe1\xbb\x9b\xa4\x22\xe6\x54\x75\xb3\x3a\x94\x94\x29\x8c\xfb\xb7\x5a\x15\x2b\x36\xd2\xa0\x55\x01\x80\x77\x05\xb9\x52\x76\x53\x50\xcd\x14\x14\x1d\x35\xd4\x98\x66\x92\xd6\xc3\xbc\xfc\x6d\x61\xdf\x00\x52\xa6\x20\xaa\xb8\xcc\x13\x20\x5e\x75\x4c\x16\xf9\x3e\xca\x79\x20\xbb\xea\x51\x57\xef\x11\x2f\x0b\x64\xc1\x05\x4f\x90\xa5\xdd\xc1\x75\xa8\x9e\x29\x24\x2f\x57\x64\x6e\x74\xcc\x88\x5e\x81\xa1\xcc\x14\x4c\x3d\x78\x2d\x11\x52\xa9\xe4\xcf\xe7\x6c\xb3\xff\xab\xe7\xdb\xe6\x03\xfb\x38\x69\xec\xa8\x69\x96\x98\x70\x9c\xc8\x7f\xc9\x61\xc1\xe2\x99\xcf\xca\x22\xe3\x24\x2e\xae\x78\x8c\xff\x11\xbf\xca\x61\x02\x67\x45\xf4\x97\x62\x25\xb2\x6e\xe2\x00\xc4\xf1\x91\x0c\x4b\x83\xdf\x5c\xe4\x6e\xf4\x87\xd7\x48\xd9\xc4\xc5\x02\x14\x1b\x78\x74\xca\xf4\x1e\x5a\x29\x7b\x24\x8c\x2b\xac\x69\x90\xa1\x5b\x07\xb4\xcf\x81\x0e\x59\x28\x74\x42\xd9\xa3\x69\x6c\x02\xe8\xd7\x32\x4d\x3c\xf7\x30\xdd\xa5\x40\x53\x6b\xeb\x13\xcf\xde\xae\x61\x80\xdd\x74\x84\x83\x2d\xfa\x94\xe9\x4a\xa6\xcb\xa1\x17\xaa\xe1\x72\x70\xf4\x8f\x93\xb2\xf9\x8a\xe9\x58\x17\x18\x16\x3f\x44\x63\x54\x6c\x0a\xe0\xf2\x79\xc3\x6b\x92\xbe\xe6\x6f\x1c\xa2\xd6\xa4\xf7\x26\xd2\xdf\xee\x0b\xc1\x1c\x1d\x8a\x1f\xa6\x2c\x3c\xc8\xab\xa2\x66\xb9\x87\x59\x28\x6c\x10\x68\x48\x3b\x23\x76\xb4\x03\xc8\x87\xfb\xb6\x57\xdc\x0f\x25\x5d\xea\x90\xdb\xd2\x33\x08\xf7\xe0\xe8\x42\xb4\x98\xa8\xdf\xc7\xc9\xcd\x5a\xef\x0e\x87\xd5\x6b\xe4\x0d\x50\xfc\x1d\xd4\xc0\xaa\x7d\xee\x55\xae\xbe\x4d\x6b\x6a\x52\x05\x39\x62\xb8\x7b\x0f\x2e\xe0\x9a\x90\x81\x61\x55\x33\x3d\x5c\x57\xa1\x47\x24\xe0\x01\xbc\x3d\xed\x17\x84\x3b\x76\xe2\xc4\x7a\x17\x63\x39\xc8\xde\xfc\x54\xb5\x5b\x23\x58\xae\x7d\x01\xb0\xf6\xe0\x8f\x31\x21\x6a\xe9\x03\x40\x69\x41\x68\xa5\xa7\x9e\xe8\x83\xea\x78\x58\x00\x7d\x17\xc3\x73\x59\xc9\x9d\x65\x97\xef\xe4\x60\xc1\xa2\xf7\x73\x8a\xc3\x2c\x5e\xb5\xe3\x9e\x50\x0c\x49\xc0\xdf\xf9\xc4\x65\x9e\x8c\x50\xcc\x5c\xa7\x9d\x8b\xa4\xe5\x97\x2d\x67\x22\x54\x68\xfb\xa6\x41\x67\xa6\xb2\xc6\xf3\x68\x93\x5c\x7a\x04\x9d\x35\xd3\x55\xc7\x67\x25\x20\xd3\xc9\xe4\xe4\x3c\x67\x1c\x3c\xb8\xde\xe2\x59\x04\x74\x95\xde\x0f\x56\xdd\x71\x91\xd5\xbd\x4b\xbd\x29\x51\x7e\x36\x47\x92\xff\x89\xd3\x37\x99\xb6\xe7\x81\xc2\x01\x93\xf5\xa3\x16\xfb\x40\xde\x74\xfe\xe2\xac\xc2\x5e\x47\xf5\x12\x21\x4d\xe3\xb1\xe9\xb3\x82\xa8\x69\x29\xc1\x57\x3d\x37\x24\xc2\x50\x17\xc0\xe5"}, +{{0xc8,0xee,0x95,0x4d,0xb5,0xa1,0x1b,0x29,0x2e,0xd9,0x77,0x64,0xfa,0xe6,0xb2,0x83,0x05,0x1d,0xb5,0x7d,0xcd,0xc0,0xaa,0x0d,0xf5,0x39,0x3b,0xb6,0x0c,0x11,0x2e,0xd3,},{0x5c,0x2f,0x81,0x82,0x4e,0x99,0x75,0xdd,0x7e,0xa3,0x53,0xbc,0x66,0x80,0x7d,0xed,0xc7,0x61,0x03,0x49,0x79,0x4e,0x2f,0xc0,0x8e,0x5a,0x31,0xe0,0x02,0xe3,0xfe,0x07,},{0xf3,0x07,0x7a,0x75,0x10,0x1e,0x12,0x1e,0x5c,0x3e,0x77,0xd8,0xed,0x97,0xb5,0x78,0xd2,0x39,0xbd,0x42,0x18,0x03,0xd3,0x45,0x5b,0x56,0x54,0x40,0x5a,0x4c,0x58,0x6a,0x60,0x92,0xe1,0x3a,0x85,0x29,0xba,0xce,0x46,0x8a,0x30,0x57,0x84,0xb3,0x73,0xe4,0x33,0xfe,0xe4,0xa3,0xdf,0x89,0x56,0xbe,0xfa,0x01,0x2f,0xd8,0xa8,0xee,0xd1,0x0c,},"\x7b\xa3\xfb\x56\x83\x15\xaa\x81\xe2\x1f\x19\x77\x80\xed\xc2\xc6\xea\x26\xd8\xd0\x6a\x43\x78\x91\x2f\xca\x23\x01\xcf\x1e\xab\x3d\x80\x3c\x84\x69\xde\xdd\xf3\x76\x70\x3d\xdb\x7c\xe0\x6a\x77\xda\xb2\x0e\x02\x34\x4f\xad\xcc\x50\x02\x2a\xb3\xc7\x13\xcd\x03\xc1\xda\xa9\x3f\x1c\x7e\xa5\x72\x62\x9f\x61\x0b\x5e\x3c\x51\x41\x1b\xb8\xc1\x96\x94\xbb\xce\x90\x3c\xac\x47\x05\xf9\xb5\xdd\x0f\x47\xbc\x5d\x0a\xa3\x25\x3f\x90\x88\x70\x29\x90\x27\xff\xbd\x34\x49\xee\xba\xd4\x53\x32\xb5\xd0\xc4\xf5\x33\xdb\xed\x18\xa9\x9a\x24\x98\xb9\x16\x4e\x24\x5f\xb6\x5c\x0a\xfa\x0b\x05\x37\x03\xa0\xcf\x95\x94\x0a\xc7\xa0\x19\x5d\x4f\x70\x46\x60\x9c\xf0\x43\x71\x33\x87\x06\xb9\xb1\x98\x6c\x0f\x11\x81\x75\xd2\xcd\xfc\xe7\x4a\x6f\x88\x65\x98\x25\x85\x4e\x94\xec\xe5\x8f\x51\x57\x63\x6d\x62\x35\xb7\x6d\x32\x74\x5a\x2a\x81\xa9\x67\x1a\x8f\x86\x02\x7b\xa9\xe0\x17\x63\x88\x8f\xc1\x71\xce\xf7\xc4\x51\xc3\x60\x72\xbc\x74\x99\x83\x9d\x43\x1c\xf1\x8c\xd7\xc6\xc9\xfb\xa3\xaa\x71\x2a\x05\x43\x28\xcc\xd6\x2b\xe4\x82\x0a\xbd\x5e\x78\x21\x62\x76\x46\x11\xd4\x53\x9b\xa2\xce\xbd\xc2\x09\xb3\xf4\xe4\xb6\x9c\x3d\x64\x07\x3e\x92\x0d\x21\x52\x14\xfb\x0f\xda\x44\x18\x5a\xad\xa5\xc3\x61\x27\xa1\x5b\xa1\x5c\xa2\x8a\x3a\xd0\x86\xe9\xd0\x33\x66\x86\x9c\x60\xc3\xfb\xce\xbd\x86\x9d\x2e\x40\x64\x3e\x83\x3f\x89\x48\x03\xf9\x80\xa2\xda\x7e\xa4\xe5\x9c\xe4\xd7\xc0\x6f\xd2\xaf\xf0\x87\xee\x7b\xcf\xdd\xaa\x3b\x32\x81\x7c\xe6\x3a\x63\x58\x7d\xba\xfe\xf3\x80\x01\x3a\x6f\x1e\xe3\x73\x4b\x94\xca\x3d\xf9\x64\x4d\xd0\x43\x43\x02\xec\xb3\x24\xaf\xe3\x5f\x46\x5c\x9c\x1c\x93\x1b\x27\x29\x4f\xc6\xee\x02\x72\xde\x22\x42\xae\x90\xd7\xf2\xe0\x67\x02\x7e\xf8\x64\x2e\x8f\x17\x1e\xd8\x80\xff\xab\xce\x8a\x20\xa1\xb3\xe3\x39\xad\x4e\x3f\x1a\x90\x01\xf2\x0f\x90\x02\x61\x88\xfd\xe3\x4b\x21\x7a\x6e\x26\xaa\xff\x18\x42\x2b\x7f\x84\x3d\x0f\xdd\xa3\x21\xc3\x19\xc7\x78\xf2\x31\x37\xf2\x0c\xcc\x1b\xda\x18\x90\xe5\xbc\x91\x6a\x54\x56\xd0\x68\xd3\x7b\x5a\xcc\x63\x47\x72\x0c\x56\xa5\xa4\x91\xbc\x34\x8d\x6c\x84\x8a\x9c\x8f\xec\xfe\x58\xc9\x2b\x1f\x30\x2f\xe1\x49\x19\x71\x8c\xd5\xe7\x8b\x7f\xd6\x01\xd0\x9d\xc0\x1e\x69\x04\x86\x1e\x8d\x68\xb3\xc5\x75\x35\xb6\x13\x66\x76\xcb\xc6\xe8\x39\xaf\x0d\xd7\x39\xdb\x89\xa7\xab\xd9\x13\xfd\xf6\xb0\x0e\x9c\xa0\x26\x02\xde\x6c\xa0\xaf\xd0\x91\x3d\x99\x2f\xba\xa8\xff\x82\x2b\x9d\x9b\x09\xdd\xa7\xa2\x9b\xe9\x19\x10\xd8\xfa\x3c\xaa\x2a\x5e\x51\x83\x46\xc1\x67\xc9\xf5\x19\x41\xcf\x73\x53\xf3\xf3\x4c\x1d\xab\x33\x48\x5d\x0a\x8c\x19\xda\xf9\x51\xfd\x3e\xf2\x0d\x0b\x11\x9d\x80\x38\xdf\x90\xc1\x14\xa2\x5a\x5b\x93\xae\x40\xec\x44\xb9\xa5\xd2\xbc\x1c\x65\x17\xc6\x82\x50\x0d\x4c\xdc\x19\x71\x42\xbe\xc3\xaf\x82\x32\xc0\x71\x42\x8d\xc5\x4c\x0d\x30\x45\x42\x72\xe7\x33\x6b\x0b\x58\x88\xa6\xe8\xfe\xcd\xe8\x59\xe2\xac\xcb\x7f\xb0\x94\xac\xc5\x4f\xfa\x48\x1f\x76\x23\xd9\x44\x69\x1f\x04\xfb\x36\x13\xa9\x95\x49\x80\xf1\x7e\x2a\xd2\x17\x3d\x68\xcf\x0e\xc1\xb6\x7d\x8a\x91\xd6\xec\x82\x94\x6b\xcf\x05\xcb\x90\x68\x1a\x71\x62\x7b\x59\x02\x38\x33\x4e\x3d\x5a\xb9\xda\x6a\x08\x9b\xd7\x26\x24\xdf\x90\x74\xcd\xd2\x30\x9e\x04\xdf\xca\xe0\x32\x81\x2f\xe8\x4f\x9d\xb8\x82\xcd\xea\xae\x69\xee\x5d\xaa\x5a\x66\xff\x42\x7f\xc4\x52\xed\xd0\x76\x9b\x6a\xab\xcc\x13\x9d\x0f\x70\xaf\x8b\x97\x43\x0e\x64\x4f\x58\xa4\x12\x87\xa9\x3f\x63\x1d\xed\xa8\x2c\xa0\x71\x6d\x79\x75\x4c\x5c\x50\x3e\x52\xa6\x65\xda"}, +{{0x6d,0xbc,0x55,0x9e,0x4a,0xb1,0x93,0xee,0xbf,0x70,0xc5,0xc3,0x2d,0x79,0x7b,0xe0,0x0b,0x73,0x11,0xe8,0xe6,0x69,0x1d,0xa9,0xaf,0xcc,0x18,0x72,0x91,0xf2,0x50,0x1c,},{0x38,0xa7,0x03,0x44,0x76,0xfb,0x93,0x82,0xf1,0x41,0x77,0x68,0xc4,0x21,0x62,0x95,0x1a,0x26,0x36,0x90,0x2c,0x38,0x98,0xc0,0x29,0xbe,0x27,0x8a,0xb4,0xc3,0x1f,0x31,},{0x31,0xf1,0x6a,0x7c,0xaf,0x2b,0x74,0xf6,0x5e,0x05,0x7c,0x93,0x33,0xa1,0xa2,0x63,0x3d,0xac,0x73,0x46,0x33,0x8f,0x79,0x85,0x10,0x73,0x0e,0xb8,0xd5,0xd3,0x25,0xfc,0x10,0x80,0xdd,0x5a,0xad,0x5f,0xce,0x05,0x34,0xe9,0x54,0x3f,0x3c,0x93,0x58,0x68,0x04,0x46,0x4a,0xf5,0x88,0x6e,0x86,0x44,0x12,0x9c,0x77,0xeb,0xaa,0x48,0x5f,0x01,},"\x88\xee\x23\x65\xf7\xcf\x9d\xe3\x3a\xcd\x53\x56\x49\x68\xb2\xdc\x7f\x73\x70\xb7\xe7\x03\x3f\x4c\x66\x3a\x88\xc2\x5f\x60\xf7\xf7\x11\xd6\x19\x08\xeb\xf1\xf5\xbb\x72\x83\x55\x53\xc8\xaa\x8c\x8e\x4f\xcd\xec\xd3\x79\x78\x23\x82\x89\xbf\x6c\xa8\x48\x76\xd2\x28\x21\x7a\x28\xd8\x1b\x0b\x45\x7c\x92\x2e\x91\xec\xba\x8d\x3e\x1d\x2e\x66\x59\xc2\xb0\xae\xa0\x51\xb9\xc2\xe0\x9c\x7d\xfe\xb5\x1d\x30\xed\xe7\x67\x57\x03\x41\xff\xac\x1e\xcf\x0d\xe2\x0c\x82\xd1\xe9\xed\x07\x75\xde\xac\x72\xda\x7c\x2d\xec\x23\x48\x65\xde\xc8\x3f\x67\x15\xe1\xc3\xc5\x9d\xe2\x03\x3c\xc2\x4d\x86\xbc\x2d\x31\xaa\x16\x64\x96\x86\xed\xe0\xdb\xbd\x89\x64\xc3\xa6\x4a\x3d\xca\x55\x88\xd7\x24\x8b\x1f\x24\xdf\x8d\x75\xf0\x9a\xac\x62\xc0\x78\x28\xca\x43\x1a\x3a\x2d\x77\xa6\x0c\xc9\x3c\xfa\x34\x95\xca\xbe\xb1\x90\x4e\xd5\xb5\x63\x98\x4e\x8c\x20\x77\x7b\xac\x87\x74\x10\x8a\x64\xed\xa5\x8f\xb3\x20\x24\x4a\x3a\xdd\x3e\x3e\x7a\x76\xcd\x13\x7c\xfa\x4a\x09\xb6\xe6\xe9\x30\x11\xea\x0a\xe6\x51\x71\xaf\x13\x07\x11\x76\x6c\xd2\x5b\x3c\x74\xec\x54\xc0\xbd\xfa\x02\xb3\x12\x0a\xc2\x90\x87\xeb\xac\x98\x37\xfc\xa6\x5b\xa9\x71\xbc\x42\x81\xdd\x55\x7c\x50\x0e\x22\x5e\xa6\x6c\x3c\x3f\xd5\x22\x06\xc1\x9a\x9f\x93\x95\x46\x31\x69\xf8\xc7\xa8\x46\xbd\x9f\x83\x4d\x7f\x33\x7d\x0b\x61\xfb\x30\xbc\xe2\x94\xf4\x78\xae\x1f\x1d\x97\x7e\x45\x4e\x43\x3e\xe8\x72\x9f\xb0\x65\xcc\xe0\x3f\xb2\xe4\x35\xdc\xbc\xbf\xba\x01\x53\x7e\x7a\x67\x62\xe5\x5e\x7e\xd2\x25\x28\x30\x37\x04\xbe\xb5\xae\x38\x1f\x2e\x18\x10\x56\xf2\x51\x33\x27\x3c\xf1\x7d\xdf\x2b\x06\xe2\xd9\x47\x7f\x2c\x09\x75\x5f\xc8\xd9\xc7\x3c\xb3\x31\x00\x46\x8c\x64\x13\x1c\x68\x6c\xac\x79\xfd\x38\x45\x01\xe5\x0f\x8b\x0b\xee\x28\xba\x39\x58\x3f\x42\xe4\xfd\x37\x99\xe2\x4f\x60\xda\x5f\xd3\xc7\x79\xaa\xbf\x69\x9f\xfd\x23\x21\xed\x04\x5a\x85\xbc\x64\x24\xf6\x0f\xdc\xc4\x9c\x1c\xb3\x1f\x24\x9a\x42\x36\xc0\x94\x91\x76\x81\x81\xb9\x21\xf5\x86\x02\xfd\x41\x5c\x1e\xde\xb2\x6f\x39\x32\x4a\xdd\xff\x14\x77\x13\x24\x73\x7c\x67\x20\xcc\x92\x39\x1b\x94\x9d\xcb\x42\x12\xbd\x69\x31\xd4\xde\x51\x40\x1e\x7f\x95\x3b\x7b\x03\x6b\x22\x3f\x0a\xf7\xa8\xe4\x08\xb0\x4e\xa6\x35\xa2\x3f\xa0\x70\x9b\xa0\x42\xa5\xd9\x92\x95\x4c\x09\xd8\x58\x1d\xcc\xcf\x52\x56\x8a\xd2\x7a\x1c\xc7\x1d\x18\xaa\x27\x40\xf6\x21\x21\x2e\x7f\x4c\x5e\x5e\x5e\x5e\x45\x32\xd9\xa6\x7e\xc2\x77\x3a\xc2\x1c\x8a\x4b\x00\x2d\x65\x24\xf6\x18\x2d\xd3\x71\x73\x5d\x2c\x2a\xbe\x6c\x95\xc2\x81\xc6\xfb\x1e\x97\x6b\xc1\x7e\x38\x3f\xd5\x2a\xea\xaa\x9f\xbd\x4a\xbb\x82\xa2\xcc\x65\x39\x5f\x8c\x2c\xc7\xd8\x18\x2a\x0d\x25\x0c\x68\x5c\xfc\xba\x93\xa9\x51\xee\x7c\x50\x3c\x6e\x3e\xec\x23\x6c\xe3\x3e\x08\x6c\x61\x07\x28\x73\x7c\x1c\x3b\x3a\x24\x25\x2d\xa7\xf2\x16\x72\xd9\x28\xeb\xda\x99\x3a\x94\xc4\x58\xab\x99\x0f\x5d\x19\xd8\x00\x23\xc3\x6a\xa1\x6e\xaf\xca\xb1\x43\xf3\x52\xe9\x7d\x64\x09\xf3\x24\x99\x41\x11\x9b\xfd\x9f\x5f\x90\x84\x72\x4d\x9e\xba\xd3\x83\xb1\x0f\x34\xd3\x3a\xc8\x30\xcc\xe9\xe5\xcb\x8a\xec\xee\x6f\x40\x30\x1c\xbb\xe3\x09\xfd\x06\x15\x34\xa7\xd0\xc3\xed\xaa\xea\x02\xa1\x71\xd8\xb2\x34\x9d\xbe\xec\x62\x85\x20\xac\x33\x4a\x5b\xfe\x28\xa9\xd5\xf4\xc0\xd7\x40\xf7\xc7\x2d\x4d\x72\xd8\x9a\x97\x32\x6a\x03\x00\x2d\x1e\xf3\x85\x22\xbc\xd3\x7b\x42\x84\x7a\x31\x4b\xd8\x43\xec\x88\xd1\xf2\xf9\xd3\x9f\x57\xf2\xf1\xa1\x3d\x01\x40\xa8\x84\x74\x50\x44\x8c\x88\x0b\x3a\xe7\x65\x31\xe9\x5c\x43\x92\x97\x32\x50"}, +{{0xc9,0xd4,0x16,0x83,0x0a,0xe2,0x02,0x8f,0x21,0x75,0xd2,0x2b,0x61,0x4c,0x79,0x19,0x8c,0x67,0x0c,0xfa,0xa0,0xe7,0xa3,0x61,0x50,0xef,0x0f,0xee,0x21,0xa9,0x5c,0xe6,},{0x6e,0x3e,0xb4,0xd0,0x18,0x73,0x07,0x2d,0xf9,0x46,0xf1,0x79,0x2f,0x71,0x06,0x33,0x08,0x95,0xe7,0xa7,0x6d,0xd9,0xae,0x27,0xf8,0xa9,0x88,0x03,0x94,0x90,0xfd,0x4b,},{0x47,0xfa,0xad,0x4e,0x65,0x52,0x93,0xed,0xa1,0x56,0xb2,0xa1,0xfa,0xbb,0xfb,0x7e,0x00,0x9f,0xc2,0x90,0xaa,0xfe,0xdb,0xd5,0x65,0x21,0x14,0xa4,0x78,0x53,0xbc,0x77,0xa8,0x23,0x3a,0x2b,0x17,0x9f,0x60,0x54,0x77,0xd7,0x87,0x87,0x8c,0xbb,0x15,0xea,0x61,0x24,0xdf,0x8d,0xc5,0x7b,0x2c,0xe7,0xbe,0x7d,0x18,0xb7,0x16,0x2f,0xb5,0x0d,},"\xff\x9a\xd4\x83\x7c\xd0\xbb\x77\xd6\x21\x0f\xdd\xdc\x75\x5e\x6c\x0f\x1a\x73\xc2\xbc\xd0\x3f\x7a\x58\x69\xe7\x34\x2c\xfd\x73\xcf\x70\x86\xf8\x65\x56\x15\x60\x27\x7b\xf6\xc3\x42\x1a\x91\x2d\x67\x65\x8b\x1f\xa9\x70\x57\xc4\x96\xf4\xbe\x8e\xdc\xbe\x18\xb5\xec\xd0\x8a\x1e\x7d\xb2\x52\x23\xab\xda\x20\x8f\xa5\x31\xf4\xb2\x80\xaa\x03\xb0\x4b\x60\x60\x34\x11\xd3\x74\xba\x7c\xbb\x02\x0b\xb9\xa8\xce\x4c\x0e\x45\xa7\xe1\x32\x14\x48\x43\xc3\x1f\x8b\x45\xc5\x8e\xb3\xea\x85\x3c\x2c\xeb\x61\x37\x6e\x9d\xf8\x1d\x97\x78\xe7\x21\xad\xac\x77\xb5\x03\x54\x93\x7f\x34\x37\x2f\xcc\xd5\x75\xe8\x8d\x9d\x05\x8e\x43\xdf\x94\x2f\x2c\x43\xb5\x23\xc8\x09\x8e\x6d\xd9\xe6\xbd\x21\xd5\xa6\x49\xb4\x72\xd4\x1e\x34\x5f\xcd\x5e\xfd\xdd\x49\xea\xb3\x02\x70\xcd\x87\x88\x40\x4f\x28\x51\x6e\x09\xd3\xac\xc4\x00\x48\xb3\x9d\x32\x46\xf7\x57\xe4\x82\xe1\x45\x9c\x62\x6b\x79\x9e\x04\xd0\x67\x27\x13\x73\x71\xe1\x20\xaf\xb9\xfe\xc3\x9a\x25\xf4\xe6\x76\x4b\xf9\x79\x2f\xe4\x92\xee\x0f\x21\x0b\x57\xdb\x9e\xbb\x9e\x8e\xf4\x1b\x02\xc7\xfe\xe9\xed\xd4\xb6\x17\x4c\x57\x0d\xe0\x20\xa3\x91\x28\x71\x33\xfe\x8c\xcb\x41\xa8\x3f\x91\xbd\x22\x38\x2b\x21\xe1\xd7\xeb\xc2\xc7\xe5\x01\x8e\xf5\x14\x2d\x82\x63\x7d\x02\x62\x0f\xbc\x05\x69\xcc\x09\xc4\x4e\x91\x11\x12\xbb\xae\x99\x06\x4d\x68\xd1\xc6\x9e\x77\xc9\x93\x0b\x0d\xe0\x30\xc8\xc1\xd7\x48\xc4\x14\x05\x9d\x5e\x29\x9b\x7e\xdc\x08\x94\x06\x51\x89\x4b\x30\x3a\x2b\x32\xdd\x2c\x36\x5a\x06\x7c\x97\x23\x58\x55\x94\x64\x4d\x3e\xe8\xde\x1a\x51\xfa\xea\x0e\x65\x0f\x21\x24\x88\x5a\x94\xcb\x99\xeb\x90\x3b\x7d\x45\x79\xbd\xe5\x91\x49\x7d\x95\x39\x30\xd3\x63\xdd\xdb\xda\xc6\x27\xb9\x7a\x91\xf4\x96\x82\xdf\x8e\x72\x50\xa7\x07\x3d\x38\x3a\x7a\x22\xcf\x11\x3f\x28\x58\xce\x6b\x63\x2a\x28\x92\xc4\xe8\x8a\xa9\xa0\xd2\x89\xeb\x57\x62\x9b\x00\x8d\x3b\x1b\x60\x81\xe6\xfe\x5d\x3c\x0a\x6c\x80\x21\x89\xb5\xf1\x08\xe7\x66\x31\x9e\x15\xb3\x3e\xaa\x5b\x8c\xed\x40\x27\xea\xec\x83\xb4\xac\x68\xb1\x4b\x82\x98\xbc\x51\xcd\x8e\xb3\x80\x9b\x7a\x2d\x68\x4f\xe3\x2b\xbd\x9f\xab\x5c\x91\x8e\xeb\x17\xcc\x44\x4d\x73\xf7\x30\xd4\xc8\xcc\x05\x7b\xd3\xa2\xf1\xf0\xae\xbb\x61\x63\x29\x34\xe6\x17\x02\x16\x88\x29\xcd\x7e\x91\xde\x81\x50\x96\x29\xd0\x1a\x8c\xde\xfe\x0d\x1a\xc4\x9e\x21\xf0\xc5\xfb\xe1\xb2\x24\x48\x27\x26\x8a\x0a\x27\x35\x7e\x15\x8b\xd7\x68\x84\xa2\x1e\x7f\x1f\xac\x1b\x62\x72\x16\x6d\x5a\x9f\x64\xf9\xb6\x72\x98\x9a\x87\x62\xf5\x12\xbf\x1d\xf4\xb2\xab\x69\x97\x65\xf2\xcd\x83\x96\xf4\x76\xe7\xf5\x99\x95\xde\xe7\xd8\x90\x20\x7e\xff\x0f\xd2\x72\x63\xec\x23\x2e\x37\xcf\xed\xfe\x7c\x44\x05\x55\xd4\xca\x74\xe5\x2d\xa2\x46\xc4\xb8\x37\x57\xbe\xaf\xd2\xab\x2a\x51\xef\xe1\x60\xbb\x02\xb9\x8c\x26\xd6\xb2\xc3\xf0\xc1\xaa\xcb\x2f\x3c\x34\xa5\xb2\xa3\xb6\x6f\xee\x17\x5b\x78\x75\x48\x07\x3d\x8b\x57\x77\xc6\xbe\x88\x0b\xdc\x19\x6b\x33\x74\xa2\x15\x4f\x94\xd9\x36\x0f\x77\x55\xac\x68\x15\xa2\x8a\xf2\x96\x27\x1e\x22\xa8\xf2\x35\x43\xc7\x49\x55\xa6\x09\x12\x5b\x02\xa5\x69\x21\x80\x11\x42\x02\x95\xcc\xf0\xd7\x35\x69\x99\xa5\xb8\x95\xcc\x88\x48\x3f\xad\xf7\x97\x0c\xec\x6c\x64\x24\x0f\x70\x79\xfd\xb1\x5f\xfc\x5c\x42\x27\xe5\x39\x26\xd2\x78\xba\x0f\xed\x3c\x39\x93\xbc\x86\x82\x28\x23\xdd\x58\x1a\x32\xab\x2e\x3a\x07\xf7\x94\x30\x22\x4b\x27\x4e\xad\xd8\x45\x59\x8a\x7d\x1d\x89\x67\x6a\xaf\x23\x67\x77\x74\xb7\xb0\x58\x3b\xcc\x83\x59\x9d\x15\x5d\x14\xb0\x9a\xdc\xf4\x9e\xd5\x05\xe8"}, +{{0x2d,0x27,0x7d,0xd5,0x5f,0x57,0x19,0x5e,0xc0,0x72,0xb4,0x7c,0xb1,0x44,0x8c,0xb5,0x82,0xc8,0x35,0x73,0x9e,0x6c,0x98,0xba,0x71,0xab,0x12,0x8f,0x70,0xce,0x6b,0x79,},{0xdf,0xa9,0x25,0x93,0xef,0x0f,0x0d,0x97,0x4a,0x11,0x37,0x83,0x0a,0xd1,0x38,0x48,0xaf,0xef,0x3b,0x81,0x0c,0x2a,0x21,0xbf,0x77,0x91,0x78,0xce,0x4b,0x3a,0xb9,0x74,},{0x73,0xc1,0x06,0x06,0x49,0xa7,0xc0,0x14,0xed,0x01,0x94,0x58,0x51,0xb5,0x3e,0x28,0x53,0x24,0xe6,0x0d,0x06,0x1c,0x83,0x1d,0xda,0x41,0xf0,0x33,0xb5,0x65,0x83,0x06,0xa1,0xf1,0x12,0x32,0x7a,0xfe,0x93,0xca,0xa9,0x21,0x02,0x07,0x30,0xaa,0xe0,0x06,0x9c,0x9a,0x2b,0x45,0xee,0xf5,0x5c,0xbb,0x4a,0x5a,0x9c,0xd4,0x6c,0xda,0x80,0x08,},"\x14\x54\x9e\xdd\xd5\xf2\xb7\x90\x5d\xda\x19\xd7\x4a\xb2\x07\xaa\xc6\xfb\x3e\x3d\xf3\x29\x5d\x84\x52\x31\xef\x3a\xea\x6e\x1f\x04\xee\x03\x3c\x90\x38\xdc\xb4\xbd\x3d\x5e\x45\x2c\x54\x83\x4d\x0f\xf2\xb7\xde\x3f\x32\x2e\x56\x26\x94\x9c\xd6\x1d\x6e\x89\x01\x38\xff\x0e\xa8\xad\x84\x6e\x8f\xe8\x87\xae\xe1\x5f\xc4\x8b\xbe\x4f\xba\x42\x45\x5f\x5c\x17\x45\x7a\xe7\x89\xb4\x05\xaf\x85\x96\x11\xfe\x1f\x87\x46\x18\x5a\x65\xae\xf2\x13\x4e\xa4\xd8\xf3\x98\xd4\x8d\xf7\xc1\xbb\xa4\x30\x44\x08\xae\x7e\xfb\x35\x29\x24\x09\xd5\x08\xdd\x55\xce\x21\xde\x8c\x28\x16\x0d\xc9\xe8\x77\x70\x0c\x76\x3d\x06\xb0\x1b\x85\x42\x05\x2d\x7d\xdb\x63\x35\x54\xe3\x58\x42\x79\xc7\x96\x93\x70\x23\xc8\xea\xc3\x72\x77\xbe\x2b\x82\x04\xff\x3e\x0e\x10\x31\x19\x0a\x01\x01\x4c\xf5\xf5\xb4\xd7\xad\x99\x67\x27\xf9\x75\x31\xe0\x35\x5b\x87\xc9\xe6\x11\x52\x5a\xad\x07\x99\x58\xe9\xaf\xe2\xab\x10\xe4\xa3\xe7\xa1\xb6\xba\x0a\xff\x81\x5d\xa2\xcd\x81\xea\x9e\xb9\xf5\x36\x98\x66\x33\xf3\x16\xdd\x06\xc2\x50\x3c\x6b\x19\x8d\xc5\x93\x04\x80\x7b\x98\xb4\x29\x35\xf5\x1f\x63\x7d\xdb\x59\xe2\x33\xfe\xd5\x66\x43\x9c\x1f\xe9\x6c\xda\xaf\xa4\x9f\x44\x12\xd0\xc1\xe6\x54\xd8\xc6\x90\x42\x47\x0b\x3a\x59\xac\xb6\xbf\x67\xe4\x0b\x38\xa7\x70\x67\xd5\x99\x7b\x8d\x35\xed\x61\xd6\xeb\x3c\xc7\x8b\x8b\xdc\xb9\x57\x4b\x1c\xed\x9f\x6f\x33\x9e\x9e\x38\xf9\x41\x46\xef\x63\xf0\x49\xe6\xb8\x02\xbf\xed\x2a\x51\xab\x42\xe7\xd4\x89\xf3\x16\xff\x4d\x1c\xd8\x98\xbc\xf8\x50\x56\x51\x68\x74\x40\x74\x9c\x0f\xb7\xa5\x7d\xbe\xff\x72\xe6\x46\x89\xfa\xa4\x1c\x07\xb4\xad\xe5\x99\x33\xd2\xfa\xc6\xd5\x73\xde\xb7\x39\x54\x9e\xb7\x5f\x1e\x6f\x73\x85\xd8\xc6\x14\x28\x94\x97\x3e\xd6\x85\xeb\x8e\xd0\x80\xc2\xa4\x9f\x3a\xc6\x57\x11\x61\xaf\x96\x63\x5a\xd0\x57\xdf\x14\x86\xd3\x96\x77\x3a\xc8\x98\x32\x10\x97\x89\x86\xe1\xbf\x21\xa2\x08\x06\xd6\x67\xa4\x8a\x55\x5a\x96\x32\x21\xd5\x06\x14\xa8\x97\x6b\x2e\xec\x97\x51\x2d\xb1\x1a\x35\x81\x94\x49\x2a\xb5\x45\x58\x01\xba\xa1\x4a\x51\x1b\x26\xeb\x0c\x68\x28\x9d\x79\x05\x23\x71\x2f\x2f\xf8\x70\x98\x92\x69\x5c\x4d\xb9\xad\x31\x0d\xf8\xc6\xee\x7b\xd8\x3c\x87\x1f\x05\xae\xc3\x3b\x7a\xd3\x26\xf4\x46\x69\x2a\x42\xf7\x22\x23\x76\x24\x6d\x53\x6a\x32\x6c\x4d\x73\xeb\x57\x2f\xea\xda\x11\xb8\xac\x71\x14\xf6\xcb\x44\x4c\xa2\x78\xfc\xf0\x7b\x97\x0d\x2a\xd4\x65\x37\x2a\x68\x7d\x36\xb7\xda\xac\x47\x87\x48\xec\x6a\x93\x2d\xa2\x08\x43\x94\x8e\xfa\x39\x30\x97\x81\x42\x72\xe5\xca\x1c\x73\xe7\x11\x97\x3a\x52\x68\x3f\x98\xc0\x1e\x55\x24\x1c\x15\x4d\x28\xe3\x8d\x3e\xdf\xad\xe2\x30\x3a\x4e\x7c\x45\xc2\xa7\xa1\xc9\x96\xee\x11\x37\xaf\x86\x4a\x98\xb6\x98\x09\xfc\x92\x14\xee\xa8\xcf\x3a\xfe\x84\x2f\xee\x3e\xb9\xa9\x32\x2c\x3b\x82\xfd\xdb\x05\xd4\xd1\xa2\xde\x09\xc1\xce\x72\x73\x44\x53\xa8\xdd\x3a\x89\x20\xd0\xd0\xac\x96\xef\x77\x8b\x9e\x02\xc6\xa3\xf1\x28\x72\xe1\x7d\x3a\x81\xba\x75\xfd\x23\x3b\xaa\xdb\xe2\x16\xea\x0a\x58\xe9\xdd\xa0\x08\x40\x87\x02\x08\xae\x41\x35\x40\x03\x0b\x3c\x05\xe5\xd0\xb8\x32\xdf\x87\xc8\xee\x7f\x15\x34\x87\xaa\x11\xba\xd9\xf1\x39\xc7\xdd\x4b\xcf\x41\x8f\x4b\xcb\x95\xbe\xe8\x57\xd0\xe9\x60\x84\x47\x23\x87\xcb\x39\x12\x7a\x94\x71\x34\x50\x19\x63\xa7\x07\x1b\xdb\x34\xde\x69\x61\xbe\x2b\x6b\x06\xe4\x03\xe7\x59\x18\xe6\xf6\x9d\x08\x02\x1c\xf2\xa8\xac\xb8\x0a\x01\x11\xf4\xd5\x06\x10\xc1\x52\xd3\x9c\x66\x21\xc0\x57\x8a\xc6\x89\x95\x9b\x1c\xe6\xf3\x76\xf4\x3d\x18\xaf\x06\x2e\x4a"}, +{{0x42,0x80,0x66,0xc5,0x24,0x45,0x72,0x6d,0x0e,0xa2,0x00,0x7e,0x50,0x46,0x37,0x27,0x4d,0x84,0xee,0x23,0x23,0x25,0xb5,0x05,0xf2,0xc5,0x16,0x35,0x7f,0x80,0x75,0x83,},{0xdd,0x40,0xfe,0x8f,0x67,0xc6,0x65,0x61,0x3b,0x3c,0x45,0x9f,0x6a,0xce,0x8d,0xc2,0x8d,0x34,0xe0,0xe7,0x7e,0x2f,0x6a,0xa0,0x60,0x59,0x28,0x19,0xbe,0x6a,0x9d,0x68,},{0xc9,0x38,0x82,0x9f,0x59,0x8b,0x1f,0xf1,0xb8,0x18,0x33,0x60,0xd2,0x23,0xf4,0x3c,0x59,0x47,0x30,0x60,0x68,0x76,0xa9,0x9a,0x3f,0x31,0xb2,0x06,0x5d,0x04,0xe6,0xf0,0x75,0xd1,0x39,0x6b,0x3c,0x8c,0xff,0xb0,0xe1,0xe2,0xea,0xab,0xda,0x7d,0xa5,0xe7,0x89,0xcc,0xd1,0xc0,0x20,0x83,0x5f,0xe3,0xa7,0x1d,0xcd,0xb6,0xaf,0x03,0x96,0x0c,},"\xe2\x79\x6c\x50\xd9\x3d\xf8\x12\xbc\xa4\x1b\xf2\xa1\xe1\xdd\x73\x7d\x8c\xf6\xf6\xb4\xf7\x62\x42\xe3\x91\x78\x18\x67\x58\xcb\xae\x08\x84\xe6\x0c\x6b\x4a\xaa\xdd\xae\xc9\xa8\x99\xa9\x12\xe5\xc5\xb9\x80\x4d\x7b\x04\x97\xba\xb4\x45\x8c\x58\x5d\x4f\x25\x92\x22\x49\x8c\xe9\xe8\x0e\xb6\xa7\x97\x9b\xbe\xd6\xd5\x2c\xc3\x80\x72\xf7\x45\xcb\x2c\x63\xe6\x63\xbc\x3b\x9d\x6c\xaf\x01\x2a\x60\x7f\x6d\x3b\x70\x6e\x15\x57\x57\x87\x17\xec\xbb\x97\x1a\xeb\x7c\x48\xe1\xdf\x95\x71\x1c\x55\x0e\x00\x69\x93\xbf\xfb\xa9\x11\xcb\x64\xad\x52\xd5\x17\xed\x18\xbe\x82\x36\x9e\x81\x58\x19\xd3\x17\x59\x47\xd4\xa3\x5b\x2c\xc7\xb9\xdc\x6c\x10\x05\x13\x26\xb3\xf1\xdc\x1e\xdb\x1b\x68\xba\x01\x5f\xf7\xca\x1d\xc3\x61\xd8\x96\x7a\xbc\xff\xd3\xc3\x1f\x7d\x6b\x0c\xb1\x39\x6a\xe5\x41\xf2\x97\x59\xc4\x13\x0b\xe5\x2e\xcc\x11\xd9\x92\x61\xc3\x65\xbf\x7c\xde\xc7\x81\x49\x4c\x5f\xa0\x52\x6d\xb4\xdb\xbe\x66\x0a\x43\x2b\xe5\x60\x43\xc6\x6e\xa0\x7c\x25\x62\x7a\x5f\x72\xb7\x81\x23\xdc\xf9\x86\xff\x71\xed\x1a\xff\xd1\x65\x9b\x13\x93\xd9\x62\x1f\x71\x1d\xfa\x63\xea\xda\x38\x34\x30\x79\x70\x58\xf1\x56\x6a\x00\x05\x2d\x67\xba\x53\xc1\x23\x7b\x56\x91\xde\x3b\x03\x9f\xd4\x47\x6f\x11\x51\xe5\xed\x5f\x5a\x98\x67\x2f\xa3\x3a\x1d\x85\x4f\xa0\x15\x66\xb3\x32\x31\xd4\x6a\xcd\x7f\x34\xb8\x03\x44\x79\x98\x18\x53\x76\x4d\xab\x87\xf4\x98\x44\xcb\x62\xc6\x3d\x53\x6f\xac\xa9\x20\x44\x7d\x8c\xd1\xe8\x11\x3e\xdb\xc8\x3e\x4a\x6b\x78\x15\xe1\x80\xcd\x78\xb9\x33\xd9\x68\x7f\xd5\xbe\x99\xd0\x51\x8a\x44\x66\x29\x89\xbc\x64\x01\x11\x24\xf1\x87\xd4\x39\x79\x99\x4a\x95\xe0\xc9\x03\xa0\x06\xc1\xc0\xbe\xf1\xc0\xf3\xdf\x1e\xb7\x00\xf9\x80\xc2\x8c\x3c\x1e\x99\x7d\x0c\x56\xd1\x13\xda\xe1\x96\x88\x2b\x05\x01\x8f\xca\xb3\x14\xd8\x11\x7f\xaf\xba\xbe\x77\x00\xb9\x32\xd4\x7c\x57\x36\x2b\x20\x35\xed\xdc\xe2\xd2\xef\x33\x64\x1e\xa9\x0c\x3e\xa3\xfe\xc6\xea\x5b\x87\xe1\x61\x01\x4c\x4f\x82\x14\xfd\x03\xce\xbf\x94\xab\xe1\x22\x53\x7a\x98\x70\x32\x39\xdf\x58\x21\xc5\xab\x63\x3f\x98\x36\x5c\xc6\x36\xe3\xf1\xd2\xf7\x4e\x0f\xf8\xf1\xfe\xe0\x6a\x3f\x73\x90\x7e\xe5\x04\xb3\x10\xfd\x52\x24\xad\x4d\x05\xcd\x23\xc3\x56\xdf\x8b\x34\x64\x72\x98\xc4\x98\x28\x72\x5b\xa5\xfd\x60\x61\x1e\x82\x9b\x63\x37\xbc\xc9\xdc\xf8\xe8\x97\x1c\xab\x3e\xe9\xc2\x63\x37\xd3\x8d\xfd\xfa\x03\x6b\xf6\x09\x6b\x63\x5a\xc1\xbd\x55\x25\xec\xd3\x77\xa1\x52\x72\xa8\xac\x9b\xbe\xf1\x33\x10\x7a\x42\x25\x8d\x8b\x19\xec\x69\xdc\x42\x61\xbe\x53\x00\xa2\xd2\xd5\xca\x99\xf3\x1e\xfd\xf2\x59\xf9\xd0\x79\x86\x9a\x34\x41\x37\x79\xf3\x02\x88\x24\xd7\x47\x68\x6c\x46\x0f\xfc\x49\x6f\x20\x10\xf4\x03\xe9\x03\xe2\x7a\x87\xdd\x07\x5a\xe0\xa7\xf1\x68\x94\x16\xd3\x1b\xcc\x15\xf4\x90\xca\xf9\x75\xc4\x0e\x71\x5d\x54\x99\x03\xe8\xbc\x0f\x7d\x91\x41\xe0\x20\xf4\x10\xf3\xca\x2b\x2c\x07\x97\xca\x0d\xc8\xd7\x39\x2b\xff\x24\x35\x28\xc7\xf3\xbe\x13\x89\x97\x18\x5a\x4b\x36\xf4\x53\x76\xd9\xfd\x70\xba\x20\x98\x9d\x2d\x1a\x91\x1d\x4b\x98\xd1\x60\xd2\xb8\xde\x59\x2d\xe2\xf4\xc0\x4f\x35\x86\x0d\xf3\x20\xc5\x48\x44\x0d\x5e\x3a\x34\x6a\x14\xd3\xa6\x3f\xe4\x85\xc2\x88\x91\x26\xb7\xf4\x1d\x55\xa6\xeb\x23\xd5\x62\x0b\xab\xf8\x56\x4a\xa7\x9d\x15\x6e\x98\x3f\x36\xd9\xed\x49\x8d\xa9\xca\x88\x8d\x94\x6b\x53\xcc\x47\x68\xa5\x89\x2d\x52\xd5\x41\x52\x69\x60\x28\x25\x24\xba\x61\x94\xda\x65\x94\x1d\x1e\xa3\x0f\x80\x6b\xb6\xd9\x7c\x74\x88\xb9\x3f\xd0\xa7\x70\xa9\xb1\x5e\xfc\xd1\x2c\x5c\x46\x94"}, +{{0x31,0x45,0xbc,0x68,0xd8,0x29,0x79,0x40,0x8e,0x46,0x57,0xb7,0x75,0xf1,0x50,0xc6,0xd2,0x8a,0x32,0x4d,0x74,0x6e,0xa6,0xde,0x90,0xfd,0x72,0xb1,0x7a,0x25,0x79,0x82,},{0xc7,0x76,0x18,0x6c,0xe4,0x7f,0x30,0xad,0x08,0xfa,0x1d,0x2c,0x61,0x6a,0x36,0x44,0x66,0x5b,0xa5,0x4f,0xf7,0x30,0xfc,0x2f,0x4d,0xb1,0xdb,0xa3,0x8d,0xde,0xed,0xca,},{0x24,0xa4,0x33,0x33,0x76,0x83,0xbc,0x71,0xa6,0xca,0x3b,0xcc,0xd8,0xcc,0x24,0x00,0xc2,0x44,0x64,0xfa,0x67,0x71,0x4b,0x46,0x51,0x5f,0x2a,0x14,0x32,0x71,0x27,0x05,0xd5,0x70,0x61,0x4d,0xb6,0xd2,0x6b,0xbb,0xd3,0xf0,0x26,0x7c,0x14,0x27,0xca,0x1c,0x2f,0x40,0xdc,0x9a,0x6f,0x1f,0xb0,0xf0,0xfc,0x71,0x4a,0x02,0xe2,0x4b,0x47,0x08,},"\x2e\xa8\xdc\xe1\x48\x7f\x45\xd6\xff\x8e\xb8\x3c\x54\xfb\x7e\xdd\x76\xad\x6e\x60\x8b\xb8\xda\xf1\xa1\x82\x3d\xa4\xf4\xe4\xe9\x86\x31\x73\x89\x7c\x19\x7a\xc6\x58\x04\x82\x3b\xca\x95\x09\x1f\x59\xe8\x6d\x63\xc1\x8d\xbc\xdb\x85\x74\x3f\x88\x93\xee\x69\x4d\x81\x56\x01\xf8\xf2\x2f\x4d\x7d\xf0\x87\xf0\x11\x4b\xb2\x6c\x37\x95\xe1\xfe\x4b\x7f\x4a\x8f\xa3\x1f\xd9\xf4\xff\x10\xfe\x5d\xd4\x52\xc5\x4c\x55\x78\xc7\x52\xf8\x88\x21\x30\x76\xbe\x46\x7b\xa3\x0d\x2e\x2f\xbb\xee\x87\x7c\x4b\xe9\xb6\xec\x4f\x04\x02\x1c\x00\x6f\x92\x66\x31\x19\x43\xca\xb7\xce\xa9\x9a\x2a\xce\xbb\x69\xee\xc3\xe6\x18\xc1\x31\xf9\x74\x30\x07\x5f\x79\x75\xe3\x9f\x26\xd5\x31\x51\x78\xb6\x9a\x1d\xdf\x73\x17\x61\x05\x1b\x93\xfb\x8d\xf7\xe0\xe8\xb4\x1e\x82\xe7\xf4\xf7\x5e\x91\xd6\xc8\x90\xb1\x4c\xa5\x33\xe0\x94\xeb\x8e\xa4\x48\x6d\x38\x71\x85\x96\x6c\x98\x29\x5d\x3f\x58\xb1\x7e\xef\x6c\xc3\xb4\xd0\x7e\x93\xa3\xd9\xf4\x77\x2e\xe5\x2f\x18\xa5\xbb\x30\xaa\x39\x72\x85\x0e\x65\x81\x70\xbd\xdb\x67\x6f\x33\x26\x6c\x9f\xd1\x0f\x59\x90\xba\xd8\x91\xf0\xce\xb7\x82\x73\x6b\x40\xf0\x1b\xd8\x65\x09\xb0\x63\x04\xa9\x6d\x93\xda\x23\x3d\xbe\xd1\x8a\xfa\x18\x18\xaa\xf5\x7a\xf9\xbd\xbc\x86\x7b\x39\x7f\xf2\x35\xa8\x3e\x85\x72\x24\xb1\x50\x65\x22\x5e\xec\x03\x9d\xd4\xe2\xd6\x9a\x04\xee\x10\xbe\xa0\x69\x50\x41\xed\xa5\x9b\x05\x8e\xc0\x5f\x49\x04\x8e\xe3\x24\xd1\x6c\x4d\x61\x07\xb6\xec\xd0\x48\x75\xeb\x74\x4e\x93\x65\x47\x1b\x4c\x5f\xe6\x61\x1b\x26\x18\x93\xf9\xd2\xb1\x28\xe1\x35\xf9\x2e\x47\x41\x56\xb2\x71\xb3\xc8\x2e\x9a\x76\x63\xda\xd4\x95\x3d\x30\xe1\x0e\xda\x08\x62\x60\x7d\xec\x33\x72\xb3\x99\x70\xf2\xa8\x4b\x12\xf6\x0e\x6d\xae\x7f\x31\x79\x90\x86\xd3\x8a\x7e\x34\x94\x84\x19\xc1\xb0\x7f\x44\xc2\x15\x9c\x86\xb8\xc0\xcf\xe8\x74\x7f\xc2\xba\xd5\xbf\x47\x53\x56\xcf\xe6\x9d\xe2\xdc\x6a\xd5\xa5\x19\xfd\x65\xc1\x25\x64\x70\x1c\x05\xf7\xc2\x77\xec\xaf\xcf\x4c\x87\xb1\x48\xdf\x1f\x98\x79\xa9\xae\x44\x3c\x55\xae\xa5\x21\x38\xc6\xfa\x01\xef\x0c\x3a\xbb\x5f\x2d\xf9\x0a\x57\xab\x66\x24\x17\x8c\x73\x7b\x54\x91\x5b\x7a\xa2\x9e\xa7\x8e\x8e\x49\xef\x5a\x81\x6d\x8a\x92\xc2\xf8\x1b\x8a\x19\x63\x27\x79\xc8\x92\xd6\x6f\x75\x3d\x51\x8c\x41\xcc\xcc\x9e\x59\x3e\x50\x74\x26\x25\xbc\xaf\xa4\x68\x80\x5c\x37\xa2\x1f\x8e\x29\xa6\x96\x0d\xdf\x5c\x5e\x5c\xa1\x4a\x7b\x05\x2a\x7b\x60\x15\x69\x7a\x02\x10\xed\x6f\x01\x43\xe6\xb4\x84\xc3\xf5\xb3\xb4\x72\x6c\x60\x7d\x07\xbf\xb3\xd5\x4a\x09\xc9\x80\x43\xf2\x1d\xcc\x5c\xc2\x0b\xb4\x75\x4e\x2e\x5a\x73\xb2\xf8\x06\xc2\x20\x4b\x72\xf3\x6a\xb9\xe9\x6a\x62\xc6\x27\x7c\x0a\xd6\x6b\xe7\xab\xff\xc1\x63\xb4\xe8\xfa\xfc\xef\xf5\xe2\x02\xe5\x94\x3f\x4f\x0e\x6b\x92\xb4\xdd\xb9\x53\xcb\xb7\x91\xf8\x31\x66\x03\x69\x38\xe6\xc4\x4a\xd9\x1a\x59\x6a\x55\x73\x44\x0f\xb3\x07\x41\xe6\x60\xb6\xcd\x5f\x86\xff\xa7\x46\xe6\xe9\x72\xb8\x05\xc1\x0b\x7b\x7b\x9a\x63\xc0\x55\x1d\xb8\xeb\x4f\x84\x00\xcd\xe2\x86\x8c\x0d\x0d\x4e\xb4\xcf\x11\x7f\x8e\xc4\xab\x97\x44\xfc\x58\x79\xde\xa7\xf0\xef\x16\xc2\x91\xd5\x5c\x17\xf0\x8b\x73\x1b\x7c\x65\xd0\xc4\x41\xb6\x3b\xc8\xff\x5e\x94\x90\x4c\x02\x6a\x13\x61\xda\xcc\x80\xa9\x3a\x9b\x9f\xba\x3b\x40\x36\x17\xae\xb9\x4a\x56\x85\x41\x84\x80\x11\x95\x42\x34\xae\xad\x70\x0f\x03\x4c\x47\xc7\xde\xf8\x77\x90\x52\x55\xf1\x8b\xdb\x9a\x25\x7c\xe5\xbd\xcf\x0e\x17\x67\x0c\xda\xaf\x13\xb1\xc7\xe0\x9d\x58\xf9\x2a\x96\x63\xaf\x23\x9e\x22\x07\x8e\x18\x0a\x23\xcc\xb6\xf6\x4d\x64"}, +{{0x5a,0x25,0xea,0x5e,0x18,0x2d,0x9b,0xf8,0xe9,0x30,0xa2,0x0b,0x6c,0xf5,0x5e,0x24,0xe8,0x38,0x62,0x78,0x9b,0x38,0x39,0xb1,0xce,0x9a,0x71,0xe9,0x38,0xc4,0x2d,0x37,},{0xc9,0x81,0xfc,0x36,0xf1,0xa6,0xd5,0xf7,0xd4,0x51,0xcd,0x5e,0xf3,0x9c,0xd3,0xab,0x02,0x08,0x7f,0xcc,0x6a,0xf2,0x7d,0xd7,0x8e,0xa8,0x27,0x49,0x7e,0x77,0x9e,0x21,},{0xa4,0xf3,0x5b,0x49,0xd7,0xe1,0x98,0xe5,0xd3,0x26,0xe3,0x53,0xfb,0xb0,0x1f,0xa1,0x3b,0x6a,0xe2,0x60,0xd1,0xe4,0x8e,0x30,0xc1,0xb9,0x67,0x73,0x7a,0x5e,0x79,0x93,0x6c,0x97,0xca,0x2b,0xa7,0x99,0xca,0x34,0xe5,0xe7,0x88,0xce,0xa5,0xac,0x8e,0xd1,0x0d,0x5c,0xd1,0x5d,0xae,0x53,0xe4,0x24,0x32,0x32,0x1c,0xc2,0x6d,0xc9,0x98,0x09,},"\x21\x4d\xd1\x92\x7f\x2c\xac\xd9\x88\x87\x14\x24\x9b\x85\x43\x46\x02\xac\x78\x45\x3b\x4a\xf5\x38\x6e\xee\x39\x29\x5d\x3d\x5a\x22\x67\x80\x6e\xb0\xcf\xf2\xc1\x32\xd3\x64\xc2\x42\x0d\x04\xe3\xf6\xcc\x0a\x96\x7b\xf0\x5a\x10\xff\xcf\x12\x17\xbb\xf3\x15\xe7\x5b\x98\x06\x0f\xd4\x58\xd6\x7e\xba\xad\x93\x80\xf4\xad\xc4\xdb\xdf\x74\xcb\xf1\xc6\x47\x92\x02\xbd\xd7\xfe\xd3\xa9\x46\x69\x7d\xc3\x84\x44\xd8\x8b\xfe\x51\xd4\x1d\x7a\x9b\x38\xda\x60\xb8\x50\xc5\x6b\x48\xba\x98\x4f\x6a\x18\x89\x51\x49\x55\xc0\xda\xdb\x69\xa8\xc7\x36\xcc\x76\xcd\xc4\x9f\x13\xf8\x5a\x8b\xfb\x79\x28\xff\x0a\x0c\x0c\x03\xf1\x7c\x74\xb5\xe1\x06\x2d\x75\x53\xfb\xeb\x9d\xd3\xd5\x08\x1d\xe1\xdf\xd8\xa6\xa9\x97\x66\x97\xc6\xa2\x59\xbc\xf7\xd4\xbe\xf1\xc2\x1e\x0a\xaf\x32\x98\xb0\x42\x1b\x91\x9f\xdd\xfc\x1d\xcb\x3e\xc6\x83\xd8\x6f\xf3\xd4\x23\xd7\x1c\x8f\x2d\x72\x3a\x42\xff\x68\xd8\x2e\x9f\x39\x17\x49\xb8\x29\x98\xdc\xfa\x11\x21\x60\xf5\x2a\x41\x3a\x23\xd9\x5f\xc4\x2c\x3b\xd2\x23\x84\xba\xd7\x77\x54\xa7\x10\xd8\xb9\xf8\x4a\xe0\xa8\x02\xfc\x46\x50\x9e\x7f\x2b\x07\x07\x90\x12\xb4\x3b\xfe\xea\xb7\x19\xbd\xe5\x6f\x00\xe5\x9b\x8e\xdf\x1c\x47\x28\x83\xb1\x98\x5b\x2f\xa6\x99\xa1\xae\x90\xcf\x45\xd7\xac\x58\x0c\xeb\x5f\x27\x97\xde\xf5\xb8\xbf\x4f\x2b\x9b\x35\x19\xa7\x27\xb9\xf2\xcd\x12\x56\xa2\xf0\x76\xed\x22\x96\x49\x5b\x5c\x2d\xf7\x88\x7f\xf8\x9e\x88\xe2\x36\xa1\x4c\xde\x63\x24\xf4\x3d\x68\xd9\x01\x72\xb0\xb8\x8b\xd2\x88\x03\xe9\x99\xdb\xed\xcc\x50\x1d\xb6\x54\x54\x4e\x17\x1e\xc1\xf9\xf3\x2d\x4d\x33\x21\xd5\x89\x39\x2e\x03\xca\x65\x9f\x96\x75\x2e\x1f\x08\xa5\x5d\xb5\x53\xd8\x66\x98\x55\x41\xf5\xbe\xf8\x4c\xe2\xee\x32\x3e\x17\xd1\xf7\xdc\x16\x4b\x50\x51\x5a\x28\x7d\x53\x05\xfc\x28\xc5\x98\x3b\x9e\x53\x98\xb2\x40\x7a\xe4\x72\x96\xfe\x4a\x48\x1d\x22\xff\xb4\xb8\x65\xa6\x6b\x97\xa6\xc2\x79\x35\xdd\x8e\xb8\x69\x94\xb7\x9d\x36\x83\x63\x71\x3f\x10\x1d\xc3\x7f\x42\x9e\xee\x0f\xee\x24\x41\xc2\xdc\x17\xbf\x43\x92\x4f\x0c\x04\x4f\x14\x32\x90\xea\xf3\xf9\xee\x4d\x94\x6d\xbe\x45\x83\x1a\x0d\x83\xc0\x76\xe7\x51\xc1\x4f\x3b\x1a\x72\x67\xf5\x44\x6c\x18\x86\x98\xd2\xb4\x6d\x87\xe6\xf3\xb2\x0b\xb3\xfd\xaf\xe2\x4c\xc0\x96\xbc\x31\x2d\x86\x78\xb3\x8a\x80\xc3\xf0\x52\xa0\xc9\x6d\x5a\xd8\x7a\x5d\xd8\xc1\x33\xcc\x9a\x15\xbe\x33\x57\x4c\xd9\x43\x08\xc2\x4d\xec\x1a\x9b\xdf\x18\x9b\xa6\x87\x19\x9f\x72\xef\x67\x09\x87\x8e\x10\xf8\x7b\xd8\xa0\x3d\xc8\x4c\x8f\xa9\x64\x20\x28\x58\x98\xca\x32\x11\xd8\xb0\xcc\xef\x64\x01\x1e\xc2\x4f\x38\xe5\x74\xda\x34\xda\xb9\xd2\xf0\x02\x10\x52\x27\x89\x0f\x92\x48\x8c\x62\x1e\x57\x13\xe4\x7d\xbc\xb1\xa8\x2a\x6d\xa6\x0d\x8b\x22\x01\xeb\x29\xd4\x94\x49\x33\x60\xed\x5a\x3f\x4b\x52\x25\xea\xe7\x70\x7e\xe0\xb4\xc0\x40\x73\x05\xc1\x67\x54\xc7\xf6\x30\xfc\x85\xc1\x3e\x49\x17\x04\x7b\xcf\xf3\xb2\xa2\x93\xfe\x95\x55\x06\xc7\x26\x4e\xa6\x5b\xf3\xa9\xb2\x5a\xcf\x34\x36\x00\xd8\xfa\x0c\x7c\x1a\x29\x0d\x02\x71\x10\x1b\x7f\x40\xb9\x6e\x7f\xda\xf2\x9d\xef\x9d\x93\x27\xa5\xae\x05\x44\x6c\xb5\xa6\xd3\x22\x45\x3a\x8b\x09\x8b\xcf\x3a\xee\x1f\x70\x4e\x14\xd0\x0b\xe3\x42\xb8\x93\x4d\x19\xe5\x29\x21\x88\x72\xea\x3a\x2f\xb2\x12\x4b\x52\x66\x7c\x01\xfc\xa5\x84\x1c\x66\xe1\xe6\x4a\x1e\x68\x0e\x09\xba\x18\x6e\x04\xd1\x05\x18\x6c\xf6\xeb\x72\x8b\x9d\x50\x2a\x66\xb8\x29\xfb\xc9\x92\xa3\x88\x10\x04\xec\xdc\x80\xad\xfd\x04\x4e\xda\x88\x0f\x8a\xf7\x2a\x14\xfb\x55\x0d\x7c\xc7\x41\x94\xa9\x45\x20\x7d"}, +{{0x42,0x33,0x5c,0x30,0xb3,0xf6,0xb3,0x59,0xce,0xf5,0xaa,0xb6,0xa3,0xce,0x28,0x58,0xa1,0x51,0xb7,0xa4,0xfd,0x78,0xd2,0xfd,0x3e,0xe3,0x6f,0xc2,0x9d,0x24,0x94,0x04,},{0x30,0x1c,0x51,0x5a,0x02,0xa4,0xc6,0x6b,0xc6,0x40,0x10,0x80,0xc6,0xca,0x79,0x23,0xb7,0x83,0x1e,0x3c,0x9a,0x72,0xb5,0x5b,0x14,0x02,0x7e,0xb2,0xe7,0xb3,0xb1,0x52,},{0x67,0xb0,0xf1,0x74,0x49,0x03,0x9e,0x8c,0x79,0x7b,0xf9,0x13,0xaa,0xe6,0xe4,0xf0,0xbb,0x99,0xc7,0x4d,0x6d,0x10,0xc9,0x73,0xb9,0x90,0xff,0xe0,0x3e,0x7e,0xe4,0xab,0x5b,0x35,0x80,0x6d,0xb1,0x5a,0x98,0xc0,0x84,0x6a,0x82,0x7e,0x7b,0xcd,0x53,0x9c,0xd3,0xbc,0x09,0xdd,0x11,0x8a,0xb3,0xe5,0x26,0x63,0xa3,0x57,0xb1,0x29,0x91,0x07,},"\x6d\xa2\x25\x1e\x6f\x55\x95\x36\xb0\x9b\xfa\xfb\x81\x60\xa2\xe8\x10\x2d\x31\xf8\xb5\x93\x24\x08\x3e\x52\x27\xb2\x0c\x3e\x5c\x3a\x06\xe2\x39\x67\x68\xdc\xa3\xec\x76\xdc\x7f\xc0\xeb\x3d\x14\x5e\x62\xed\x07\xfc\x1a\x8b\x1b\x2e\x34\x70\x13\xa0\x52\x72\x74\xd0\xb2\x34\xfe\x72\x50\x26\xa9\xd1\x28\xf8\xdf\x20\xdb\xfa\x3b\x65\x03\x81\x8e\xde\xbd\x7f\x24\x93\x40\x80\x94\x5a\x7e\x1e\xa0\x22\x73\xfe\x48\xb6\xed\x1e\x83\xfd\x16\x8d\x79\x73\xfb\xb7\x94\x1b\x40\x37\xd3\xcd\xa5\x55\xe0\xe8\x9c\x2b\x94\x3f\xb1\xe2\x07\x65\xac\x7d\x4f\xa3\x77\x7f\x35\xa0\xa8\xbc\x11\x8f\x59\x9c\x84\x7b\xe3\xfd\xb2\xd8\xe2\x01\xae\x12\xa3\x0b\xde\xfb\x03\x4f\xf2\x4e\x3e\x2e\x70\x1a\x0d\x17\x33\x73\x40\x78\xbd\x1f\x9a\x69\xbb\xc6\x67\xe4\x61\x21\x1f\x2c\x76\x9d\x29\xdb\x7c\x4d\x62\xd6\xb1\xb9\x2b\x56\xf5\xf1\x8a\x93\x1a\x92\x60\x64\xb7\x8d\xa1\x46\xe1\x8b\x48\x13\x9b\x9b\x39\x86\x2a\xec\x37\xbc\xce\x12\xcb\x78\x94\x29\xe6\x8e\xa3\x81\x12\xd0\xb5\xcc\xe3\x0b\xd2\xd2\x6c\x5f\x7f\xd4\x15\xda\xf7\xca\x31\x7b\x33\x68\xb7\x61\x7d\x45\x25\xe5\xbc\x97\xd9\x46\x1d\x5d\x64\xf6\xb5\xd3\x18\xd0\xbc\x3b\x76\xf2\x5b\x06\x05\x42\x69\x09\xf2\xaa\x0c\xd6\x67\xa4\xf0\xe0\x75\xb9\xa9\xfb\x2e\x9a\x6c\x82\x70\x4d\x8a\x9f\x16\x66\x84\x4e\xdc\x32\xf6\x3a\x3d\x4e\x0f\xd9\xfd\xba\x30\xb5\x1b\x33\x36\xb9\x6e\x9e\xae\x39\x2a\x34\x2d\xe4\x9e\x9b\x5f\xa0\xf9\xb9\x01\x71\xbd\xe0\x9c\xf1\xe9\x46\x49\x91\x40\x00\x81\x59\xeb\x18\x65\x56\x3c\x28\x39\x4b\x03\xa8\xd7\xa5\x52\x27\x1b\x28\x76\x68\x75\x66\xb8\x0f\xd3\xbe\x2b\x66\x33\x2f\xca\xd1\x96\xca\xb8\x52\x7c\x56\xe2\x15\x36\xa1\x41\x65\x2c\xdc\x7f\xa7\x45\xb2\x6a\x33\x1d\x78\x7b\x93\xe5\xe8\x16\xd8\xd8\x51\xa5\x8f\x6a\xc0\x7a\x58\x27\xfc\xdf\x47\x2e\x86\x85\x43\x3a\x40\xca\xc0\xc4\x9a\xa5\x69\x31\x9a\x2e\x57\xb4\x1c\x99\x98\x16\x5e\x69\x72\x3b\xa7\x7e\x5c\x04\x23\xc4\xb4\xca\x07\x18\x7b\xb7\x44\x2e\x7d\x31\xca\xac\xb2\x77\x00\xc7\x1a\xe4\x8c\xd0\x55\xed\x2f\xe4\xda\x36\x3f\x44\x82\x11\x24\xcc\xa1\xbf\x2e\x63\xd9\xb8\xab\xd2\xfa\x41\xb1\x42\x2f\x52\xd5\x58\xbc\x5f\x11\x0c\x86\x3c\xc6\x00\x86\x49\x84\xed\x25\x9b\x73\xcd\xdd\x57\x96\xb3\x29\x79\xed\xdf\x76\xa0\x7b\xc5\x9b\x73\x68\xc4\x8e\x12\x9e\xcc\x0d\x45\x35\xdc\xce\xe2\xc3\xb8\xe5\x6d\xe5\x0e\x6f\x5c\xc6\xea\x51\x5c\xd6\xa0\xeb\xdf\x1c\xa7\x9a\xa2\x79\x48\x21\xad\x2e\x10\x9e\xdd\xa4\x50\xc9\xfc\x3c\x84\xd8\xc9\x6b\xc3\x8d\x4b\x43\x7a\x73\x8f\x81\x8b\x4d\xdc\xb6\x84\x38\x3c\x09\xb1\x1b\x36\x05\x2e\x9d\x2f\x76\xa6\x1e\xb4\xd6\x20\x49\xce\xd5\xf6\x16\x62\xc4\xb9\xec\xd2\x4a\x67\xf4\x51\x9d\x46\x52\x8c\x5b\x2e\xb2\x10\x05\xf4\x9c\x73\xa3\x37\x0c\x68\xe3\x7a\xc2\xb1\x8d\x48\x1f\xa1\x0f\x96\x71\x4f\xe0\x5c\x16\x8d\xf1\x1c\xda\x54\xf1\x4f\x49\x37\xe9\xfc\xe1\xf5\x16\xc0\x37\x1b\x36\xa2\xc0\xa0\x50\xba\xc7\xfa\x51\x22\xa6\xe3\x5e\xc9\xc4\x04\x36\x58\x5f\x31\x6e\x6c\x91\x1b\xdf\xd7\xdb\x4b\x80\xb4\x30\x64\x79\xb8\x2a\x2b\x24\x3a\x52\xb2\xd2\xb6\x27\x42\xed\x11\x28\x27\x90\xcf\x6f\xdc\x7c\x9c\x82\x43\x64\xcf\x25\x63\x6a\x85\x51\x50\xbd\xdb\xdf\x7e\x64\x0f\x9f\x95\x2a\x94\x7e\xc7\x97\x49\x25\xe8\x24\x50\x68\xb2\x92\x10\x1b\x1f\x4b\x20\x18\xe8\x5d\x07\x8c\x2f\xee\xf4\x49\x23\x49\x72\x9a\xd4\xac\xb3\x8f\x1c\x7c\x02\x70\xb6\x1d\x3d\xfd\x76\x36\xc6\xcb\xf1\x81\xe4\xc8\xa0\xe6\x4f\xa0\x61\x32\x55\x3c\x2b\x9d\xb7\x01\x9e\x3b\x3c\x48\x5d\x8d\x5b\x7d\xfd\x5f\x51\x5e\x4d\x71\xed\xe5\x35\xae\x7f\x2a\xae\xdc\x23"}, +{{0xbe,0x6b,0x2b,0xab,0xdd,0xd2,0xdc,0xa1,0xb0,0xe1,0x0d,0x12,0xd2,0x0a,0x9c,0xe2,0x9c,0x67,0x85,0xda,0xc1,0xd6,0x0f,0x2e,0xdf,0xa9,0x4a,0xc2,0x78,0x4b,0xa7,0x66,},{0x39,0x8f,0x22,0xf0,0xef,0xbf,0x8c,0x38,0x35,0x5e,0x47,0x91,0xbf,0x67,0x08,0x98,0x95,0x1f,0xbb,0xd5,0x51,0x8f,0x0e,0x2a,0x60,0x5d,0x46,0x00,0x23,0xf6,0x13,0xf0,},{0x70,0x2a,0xb9,0xac,0xbf,0xa7,0x5e,0xa2,0xad,0xbe,0x4b,0xe2,0xb6,0x84,0x76,0x25,0xae,0xb4,0x09,0xee,0xf9,0x59,0x6f,0xab,0xe3,0x9d,0x2c,0x53,0x3a,0x03,0x43,0x1e,0x5e,0x57,0x95,0x52,0xe8,0xa6,0x4f,0xc4,0xfb,0x7d,0x92,0x6a,0xa8,0xff,0xfe,0x06,0x40,0x69,0x84,0x64,0xc4,0x45,0x4c,0xe3,0x5f,0xe8,0x3f,0xf2,0x63,0x05,0x1a,0x01,},"\x5c\x92\x95\x88\x1b\x7a\x67\x06\x69\xb0\x4c\xbe\x0d\xab\xd8\x96\x93\xb7\x7f\x7c\xce\x0d\x4a\x33\xf5\x2e\x02\xeb\x26\x95\x9e\x71\x3d\x9a\xef\x5f\x95\x44\x2b\xdf\x91\x72\x83\x83\x32\x52\x02\xaa\xcc\xc0\x37\x47\x7e\x36\x66\xfa\xca\xf2\x4e\xac\x95\x34\x87\x9a\xa3\xef\xe1\x8f\xfc\x1a\x5c\x54\xe3\x9c\x76\x87\xd0\x93\x7b\x24\x71\xba\xb3\x89\xb6\x46\xcb\xe6\xb3\xe5\xd5\x96\x1e\xa6\x3b\xd4\x52\xb4\x74\x33\x44\xce\x4c\x79\x33\x74\x52\x37\x95\xc7\x81\xee\x84\xd5\x11\xe2\x94\x11\x19\xba\xd1\xf4\xa7\x46\xed\x9d\xba\x89\xc8\xd0\x75\x1a\x64\x02\x71\x86\x35\xf6\xe3\x1d\x9e\x18\x68\x1c\x69\x56\xc5\x37\x32\x51\xd3\x5f\x53\xba\xa1\x98\x7c\xd4\x48\xc9\x03\x1a\x07\xf3\x2c\x80\x29\x11\x9d\xe3\xa9\x16\x31\xde\xde\x1d\x93\x3e\x0f\xa3\x26\x29\xaf\xe1\xb4\x2e\xb5\x91\xc2\x2f\x87\x33\x1e\x93\xcc\x08\x3c\x23\xf6\x4a\x6e\x5e\x58\x6f\xf3\x1c\xc0\x4e\x42\x3c\x56\xae\x3f\x6a\x73\x94\x6c\x48\xde\x4d\x85\xab\x00\x17\xba\x24\x45\x6d\x69\xb5\x9d\xca\x6d\x40\x3b\x64\xb0\x7c\x40\xd3\xb9\x0e\x12\x23\x21\x5e\x3f\x7e\x87\x6c\x67\x01\x11\x1e\x37\xe5\x17\x77\x08\x87\x31\x0c\xa8\x56\xf0\x09\xa0\xd6\x06\x54\x83\x5d\x94\xe6\x58\x7a\x43\x9d\xa5\xdb\x0a\x0c\x37\xd7\xc9\xd3\x7c\xa1\xd7\x03\xe1\xb3\x22\x76\x31\xad\xac\xaa\x79\x42\x1a\x1c\x43\x9d\x60\x34\x9a\xe5\x77\x41\xb7\xa8\xad\x09\xec\x29\x31\x23\x03\x0b\xf6\xba\xc0\x68\x9e\x53\x1c\xa7\xe7\x27\x18\x22\x3f\x9e\xa4\x3b\xec\xb0\xee\x9d\x9c\x1a\xb8\x45\xed\x1c\xae\x44\x3e\x3c\x5d\x4a\x9b\x1e\xde\x6d\xb3\x41\x7c\x3a\xce\x28\x11\x43\xf4\x2d\x85\xf5\x99\xb3\xb9\xd3\xd0\x5f\xa0\xed\x07\xc1\xec\x35\xff\xab\x03\x05\x16\x8b\x4e\x56\xe5\x8a\xfa\x06\x17\xf9\xa8\x6b\x1b\x5b\x20\x1d\xcc\xb0\x72\xb4\xce\xf0\xbb\x7b\x95\xc5\x2d\xae\xef\x9d\x9e\x74\x24\xa5\xc0\xf1\x48\xf9\xff\xe6\x0a\x5b\x23\xe0\xff\x82\xc7\x30\x99\x2a\xc9\xc1\x7f\x97\xf0\x65\xcf\x0a\xd5\x37\x7e\xac\xcb\x31\xd8\xbb\x92\x3b\xd2\x60\xea\x11\x9e\x6f\xa9\xbd\x69\x83\x48\x2d\x70\xd9\x21\x91\x02\x40\x2d\xc6\xa3\x49\x91\x93\xd0\xc1\xcd\x3e\xd2\xa6\x69\x21\xa9\x8d\xf6\x9b\x79\x14\x13\xf4\x97\x0b\xbc\xe0\x4f\x63\x9a\xf9\x09\xc6\x4f\x45\x60\xdb\x0a\xf6\x00\x3d\xc4\x62\x19\xe8\xad\x2b\x37\x2f\x8b\x5f\x81\xcf\xaa\x04\x1a\xb7\x1a\x34\x8c\x93\x1e\x8d\xfd\xbc\x40\x9c\x22\xd7\xee\x6e\x07\x62\x6e\x10\x4e\xc6\xcc\x7c\x6a\x41\x16\x17\x7f\x93\xaf\x16\xf1\x24\xf1\x96\xda\xb6\x19\xb6\xf6\x98\xc2\xd1\x91\x85\x8e\x96\x0c\x2e\x94\x7b\x51\xf3\xac\x48\x38\x75\x9c\x21\xfe\xf7\xeb\xae\x35\xda\x24\xf5\x5e\xbd\xa9\xb9\x87\x9a\xea\x17\xa6\xd8\xd9\x27\xde\x48\x7b\x17\x5f\xd7\xfa\xa2\x14\x38\xa2\x09\x23\xdd\xbb\xca\x72\xe6\x72\x69\x34\xbd\x6c\x21\xe8\x11\x80\x19\xf6\x5b\x38\x10\xa0\x7f\xa2\x7b\x1c\xba\x64\xd0\xf3\x9f\x0b\xfd\x49\xdc\xfa\xfd\xef\xe3\x79\xbd\xea\x82\xf3\x1a\x9c\x39\xf7\xe8\x1d\x29\x43\x37\xd1\x0f\x1e\x9d\x8b\x50\xeb\xa4\x58\xce\x7b\x75\x3d\x36\x96\x85\x38\x51\x3e\xdd\xb0\xe8\x45\x34\x41\x1c\x4a\xf3\xf0\x21\x46\x10\xee\x39\x01\xa0\xeb\xf3\x16\x17\x3c\xca\xf1\x5c\xd7\xee\x49\x6d\xbf\xc2\x46\x5e\xb8\x34\xdf\x62\x02\x9d\x62\x1f\xe9\x11\x82\x4d\x79\x87\xdf\x2d\x46\x34\x6b\x4d\xce\x1e\xce\x7d\x19\xd5\x51\x18\xc0\x37\xc9\x95\x51\x11\xd0\x7f\x1f\xc3\x62\xc7\x39\xf1\xea\x5b\x27\x5c\x71\xc0\xae\xbf\x59\x65\x5e\x2d\xef\x16\xe1\x23\xb3\xeb\x25\x26\xc3\xca\x5e\x83\xcb\x24\xd5\xb6\x8d\x7a\xc4\x0a\x67\x59\x33\x84\xc5\x63\xaf\xe0\xb5\x52\xad\xaf\x60\x80\x50\x35\xbe\x97\xb8\x06\x76\xad\xeb\x15\x76\x52\x08\x33"}, +{{0xb1,0xe4,0x7c,0xa3,0x1c,0x64,0xb6,0x8a,0xaf,0xaf,0xb4,0x43,0x51,0x2e,0x66,0x78,0x7c,0x65,0x92,0xf3,0x34,0xaa,0x78,0xfa,0x21,0x9a,0x3d,0x93,0xc3,0x3a,0x4a,0xb3,},{0x58,0x11,0x9b,0x38,0xe6,0xa1,0x48,0xa9,0x36,0xbc,0x5f,0x92,0xf4,0xf2,0x9b,0x98,0x2f,0xf2,0xcc,0xa6,0x4a,0x5a,0xff,0xa1,0x4c,0xa1,0xb6,0xa6,0x2f,0xe3,0x28,0xc4,},{0xdf,0xac,0x86,0xdf,0x58,0x6e,0xc3,0x4c,0x7c,0xfe,0xa5,0xd5,0xa6,0xcd,0x11,0x40,0xe5,0x0b,0x6b,0xf0,0x50,0xf8,0xe4,0x1a,0x19,0x0e,0xbf,0xd3,0xb1,0x43,0x2b,0x95,0xa5,0x7d,0x56,0x52,0xdb,0xae,0x8f,0x53,0xe0,0x37,0xae,0x32,0x6e,0x7f,0x18,0xcf,0xef,0x7c,0x77,0x9f,0x40,0x34,0x6f,0x7c,0x0d,0x86,0x44,0x61,0x05,0x93,0xf2,0x09,},"\x76\x7e\xc1\xb3\xda\xf2\x04\x38\x7f\x3f\xd3\xb2\x00\x10\x78\x1a\xfb\x1f\x38\xf6\x14\x47\x42\x13\x28\x7f\xff\x11\x30\x7f\x5f\xf5\xae\x7e\xc9\x45\xa2\xb9\xb4\x87\x00\x49\xd4\x53\x2f\x8f\x61\xc1\xa7\xb5\xf2\x11\xfc\xa2\xe6\x7c\x37\x4d\x96\x21\x9d\x8e\xa9\xde\x73\xf0\xe3\x87\x04\xfc\x94\xc0\xe9\xe7\x2f\x2e\x15\xda\xba\x3f\x88\xf7\x49\xb1\xed\x70\x26\x60\xdb\x1a\x35\x2a\x26\x67\xd4\xdf\xd4\xe0\x0a\x18\xef\xa4\xc6\x60\x9e\xe9\xc9\xa8\x8a\xda\xcb\xbb\x98\x5d\x3d\xe8\xdd\xd1\x7d\x4e\x4e\xb7\xcf\x74\xa1\xda\x91\xed\xb3\x90\x85\x2e\xa4\xcb\x9a\x42\x4f\x7f\xa2\x22\x9e\x08\x30\x33\xa3\x40\x59\x11\x7e\x5e\xfa\x7b\x66\x13\xd7\x5e\x58\xb7\x02\xc6\xce\xe5\xd0\x04\xe8\x59\x9b\x97\x50\x3a\x5f\x10\xc4\xc4\xe5\xb9\x57\x73\x71\xd3\xd0\x5b\x2d\xfb\xf7\xcb\xef\xe6\xd0\x92\xd6\x5c\xbd\x40\x51\x38\xd9\xb0\x4c\x51\x86\x23\x59\x83\xfa\xb6\xd4\xce\x85\xb6\x36\x27\x62\x06\xd7\x4a\x2e\xe7\xdb\x61\x64\xda\xc4\x7c\xce\x78\xf5\x0d\xb9\x9a\xf6\xac\x6e\x70\x64\xc1\x3a\xab\x79\x3b\xe8\x7e\x66\x28\x9c\x94\xa0\x9f\xb0\xa3\x1d\x97\x97\x1e\xdd\x74\xea\x9c\x0c\xe8\x74\xd2\xb7\xd6\xc4\xab\xae\xff\x07\xf8\x70\x22\x51\x51\x94\x6a\x5c\x47\x6f\x6b\x97\x89\x96\xb8\x7d\x8c\x98\x46\x06\xc7\x91\x28\x7d\xa6\xba\xd0\xaa\x44\xb0\x13\x0b\xe8\x86\x71\xa5\x56\xe2\xde\x35\xc4\xcb\x03\x8e\xe7\x81\x27\x35\x30\xac\xe0\xa1\x04\xc2\x78\x09\xae\xe0\x33\xc8\xbf\x90\x29\xd9\x0f\xe7\xba\x06\xaa\xa9\x4e\x16\xa5\x2c\x64\x3d\xfd\x92\xa7\x62\x4f\xbb\xee\x77\xa7\x15\x8b\x2c\xc1\x51\xbd\x3f\x61\xa1\xa7\x6f\x32\xb2\x84\x89\x30\x7a\xcf\x0d\xd8\xc2\x6c\xc4\xad\xbb\xb8\xde\x43\x0d\xb4\xe4\xf5\x83\x08\xb6\xab\x90\x45\x61\x11\xde\xac\x29\x78\x17\x2f\xe1\xfc\x0c\xe4\x98\x08\x8a\xdd\x4c\x31\xc2\x1f\x24\x27\x90\x25\xfe\xb4\x8c\xbb\x7a\x92\x0c\xff\x2d\x28\x71\x05\x87\xaf\x52\xc8\x44\xdb\x8a\x7a\xeb\x7d\xf1\x0d\x43\x41\x1a\x3c\x8e\xee\xbb\x40\x6d\x6e\xfc\xb1\x92\x48\x88\x7d\x45\x0b\x57\x3d\x90\x30\x5e\x1f\x23\x75\x3e\x89\x05\x11\xdc\xc7\x7c\x74\x0e\x31\x6a\xd7\xf5\x2d\x49\x02\x07\x3d\xb3\x99\x8e\x4e\x4a\xcc\x4e\x01\x88\x5b\xd1\x18\x8e\xcd\x61\x65\xae\xde\xd1\xe7\x78\x70\x2b\x6a\x6a\x79\xa9\x49\x99\x10\x2d\xf7\x20\x18\xf7\x92\xf8\xf1\x62\x00\x7e\x81\x2a\xef\x8f\x95\x6e\x12\x32\x82\xbb\xdb\xd0\xc3\x56\x12\xc2\xd3\x47\x3f\x94\x4c\x6d\x76\xbe\x9e\x86\xff\xfa\x46\xcc\xb1\xae\x13\x50\x5a\x4a\x81\xf3\x1b\x84\x26\xb8\xb6\x0d\xe8\xe8\xa7\xc1\x6d\x1e\x16\x65\xb2\x71\x43\x46\x65\xc4\x42\xa9\xc6\xa9\x77\xce\x98\x6f\x69\x93\xb7\x43\x9a\xf0\x3b\x40\x2e\xea\xff\xf1\x45\x6d\x15\x15\x26\xd9\xc5\x8f\x51\x5f\xd2\x48\x5e\x0c\xbb\x32\x4a\x50\x3a\x8d\x49\x13\x44\xcd\xb2\xaf\xf4\xc4\x1a\xa8\xe2\xed\x66\xe5\x80\x83\xbf\x0d\x2f\xbf\x48\x77\xc8\x5a\x4b\xcd\x6b\x9c\xbb\x82\x12\x42\xc9\x41\x47\xe5\xfd\x8b\x7d\xd7\x92\xad\x0a\x28\xd4\x9d\x41\x10\x0b\x43\x1b\xb4\xd8\xc7\x83\x3d\x85\x05\xdd\x9e\x26\x49\xf9\xca\x70\x51\xbe\x68\x71\x2e\xf3\x63\x71\x02\x03\x6b\x00\x26\x49\x47\x3c\xe2\x59\x67\x7d\x82\xc6\x06\x28\x95\xe1\x61\x92\x8b\x75\x2f\x13\xc9\x1a\x45\x95\x5e\x80\xf0\x07\xde\x69\x0e\xdf\x8a\x0e\x5e\xee\x44\x22\xe1\x62\xb9\xd2\xb4\xa9\x21\xd3\xa6\x48\x45\x79\x3a\xa2\x22\x9e\x9c\x23\x9e\x57\xa6\xb1\xa9\x0a\x52\x54\xc3\x51\x2f\x99\x34\x53\x15\xac\x7d\x34\x57\xf9\x15\x42\x96\xc6\x68\x22\xab\xe1\x84\xd6\x4e\x57\x2b\x9c\x38\x49\x29\x58\xe2\x1b\x02\x92\x67\x54\x10\xe7\x34\x8b\x2b\x71\x8a\x0b\x75\x92\xca\xee\x94\x58\x1a\x94\x8d\x2f\x41\xfa\x03\xc6\x1e"}, +{{0xfb,0xd5,0x5f,0xa7,0x43,0xc3,0xa5,0x91,0x0b,0x38,0x57,0xdd,0x0b,0x6a,0xa5,0x84,0xf3,0xb2,0x38,0xde,0x05,0x6b,0x76,0xab,0x76,0x17,0xae,0xb5,0x26,0x38,0xfe,0xf6,},{0xa7,0xa1,0x63,0xc4,0x18,0x3b,0xd8,0x4b,0x75,0x6d,0xf3,0xc8,0xaf,0xdf,0xb9,0xcd,0x5b,0x24,0x23,0x52,0xd9,0x49,0x9e,0xbd,0xab,0x90,0x78,0x5c,0x3b,0xd6,0xdb,0x2d,},{0xef,0xfb,0x29,0xda,0x69,0x85,0x97,0x1c,0x20,0x2e,0x24,0x50,0x30,0x1d,0x49,0x71,0x1b,0xed,0x25,0xfa,0xd8,0x5f,0x61,0x99,0xd1,0xeb,0x1e,0x71,0x91,0x4d,0x96,0x4c,0xbe,0x18,0xe3,0x4c,0xc3,0xe3,0x28,0x72,0xcd,0xec,0x02,0x6b,0xd1,0x19,0xa4,0x1c,0x1c,0x07,0xca,0x41,0xe8,0x2a,0xcb,0xa6,0x2f,0xb0,0xa7,0xc8,0x2a,0xed,0x80,0x0c,},"\xbf\x52\x52\xb2\xae\xca\x11\x63\x77\x1f\x76\x62\x78\x76\x80\x66\xf2\x19\x71\x35\x7e\xa7\x99\x61\x58\xa8\xd6\xe9\x08\xdd\x59\xb5\x99\x71\x34\x9f\xa1\x78\x82\xcb\x92\x24\xb9\x72\xd0\xff\xab\xe8\x55\x10\xdc\xf2\x5a\x9f\x9f\x9b\xde\xfa\xd2\xf4\xca\xdf\xbb\xda\xcc\x1f\xca\x9d\x94\x8c\xb5\x41\x2f\x47\x4c\xad\x23\xb5\xb9\x19\x9b\xf3\xc7\x37\x06\x41\x33\x9b\x75\x0e\x1f\x78\xc2\xad\xb4\x60\xaa\x5b\x21\xb1\xfa\x8f\x97\x71\x4a\xbb\x4e\xd5\xe9\xcb\x51\xd6\xde\x55\x81\x66\x18\xab\xd3\xfd\x2b\x28\x6b\xc1\x1c\x67\xba\x01\x12\x93\x73\xd4\x35\xb3\xe7\xe3\x91\xba\x37\x26\x14\xda\x83\x22\x87\x5e\x46\xa6\x75\xb6\x45\x15\x60\x24\xca\xd2\xdd\x13\xf9\xa0\x81\x61\x6b\xf1\x31\xa2\x43\x58\x89\x4e\x0e\xfa\x1d\x56\x64\x8f\xfb\x42\xef\xb5\x40\x31\xda\x7f\x37\xd1\x97\x61\x51\x55\xae\xdb\x69\xc4\xe7\x09\xc8\xbb\xbe\x7f\xbf\xcb\x59\x83\x47\xac\x5d\x0c\x63\x84\x07\x84\x7b\x28\x1c\xf1\x16\x43\x30\x97\xf5\x66\x21\x58\x71\x9f\xcd\xd3\x7b\xeb\x48\x92\x68\xce\x71\xde\x7d\x70\xed\x92\x5f\x74\x3f\xc6\x3a\x71\x5f\x7e\xee\x75\x49\xfd\xb9\x09\xcc\x45\x4c\x98\x8b\x30\xae\x4d\x77\xd6\x2f\x65\xa0\x7e\x2c\x8f\x93\x62\x38\x5d\x02\x8a\x60\x31\x08\xc9\x45\x87\x2f\x5e\x1a\x97\x41\x98\x78\xed\x49\x54\x2e\x28\x8e\xf0\x7b\x5c\x90\xf5\xc4\x15\x9e\x16\x23\x03\xd0\x80\xf6\xac\x2b\x05\x8d\xdc\xac\x60\x74\x6f\x9e\x1c\x9e\xc1\xdf\x8e\xda\x42\xd6\x27\x38\x58\x6d\x3f\xdd\x65\xdf\x55\xf4\x37\x4f\x32\x94\xe0\x86\x8d\x41\xef\x0b\xb1\xfd\x55\xe0\xcb\xf1\x95\xbb\xfc\xfc\xde\x5b\xdb\x41\xfa\xd9\xa0\x47\x7e\x4c\x90\xca\x27\xfa\x8c\xf5\x03\x36\x2a\x33\xfd\xec\xa5\xa4\xf0\xff\xea\x26\xe8\xd7\xe1\x34\xfa\xd3\xb1\xec\x3d\x05\x60\x55\xbb\xa5\xe6\x5d\x81\x15\x3e\xe8\x31\x87\x3b\x93\x8d\xf7\xd2\xc8\x3c\x2a\x52\xb3\xc2\x21\x82\x7f\x96\x1b\xd0\x08\x36\x22\x32\xd8\x82\xa0\x41\x2a\x04\x7a\xfd\xfb\x85\x97\xc8\x65\xa2\xaa\x2c\x2c\xf5\x18\x99\x34\xa8\x3e\xe6\xb7\x52\xa6\x26\x94\x1e\xdc\xe0\xc2\x0b\x6f\x7a\x69\xf1\xcf\x12\xf9\xa3\x31\xcd\xfa\x9e\xda\x24\xc8\xde\xfa\x76\x9c\xcc\xe2\xef\x74\x6c\x30\x7d\x8b\xb0\x48\x91\xfc\xef\xd4\x9a\xf3\xe6\xf9\x69\x91\xa7\xa2\x0f\x27\xb6\xc0\xaf\x12\x18\xbe\x31\x79\x1d\x1d\x02\x93\xe0\x81\xb9\x0a\xf3\xb9\x2e\xcb\x17\x5e\xc8\xc7\x89\xf7\xa8\x64\x2e\x04\x1e\xc3\xa6\x1a\xae\xfe\xf6\x2a\x80\x7d\x1a\x50\x54\xad\xf8\x32\x3b\xed\x94\x22\x41\x62\x37\x32\xa2\x05\x1d\xc0\x1f\x9a\x20\xa2\x9a\xa4\x8b\x3f\xdf\x26\x5d\x0b\xa6\xc1\x38\xfb\x57\x93\xe2\x87\x50\x02\xe7\xde\x3f\x5c\x3f\xf7\xe8\x3a\xd2\x7d\x11\x1c\x84\x8b\x7e\x6e\x2e\x5a\xd5\xf2\x8e\xb7\xc3\x63\xf9\x5f\x96\x0c\xbc\x42\x13\x36\xce\x98\x5f\x94\x6b\x05\x15\xb1\xbd\xd3\xa8\x32\xc3\xfe\x90\x3f\x7b\x44\xe2\x0c\x92\xea\x80\x82\x6f\xbf\x97\xe2\xa4\xfc\xaf\x2d\xb1\xa0\x86\x98\xdd\x62\xed\xd0\xa8\x45\x89\xd7\x46\x2c\x44\x7b\x4a\x89\x6f\xe0\x08\x60\x04\x24\x96\xbd\x51\xb1\x92\x5c\xb7\x9c\xc3\xb8\x29\x01\x6a\x4c\x7e\x62\x79\x0f\x80\x58\xc5\x46\xf2\x14\x5a\xaa\xef\x4d\x4b\x1e\x27\x3f\xf6\x13\x00\xf8\x00\x8e\x94\x6b\x62\x2f\x60\xe5\x05\xf5\xf6\x29\x0d\x51\xeb\x99\x7d\x20\xfc\x3f\xbb\x3e\x99\xed\xd6\x8f\xf5\xcc\xe9\xe8\xc2\x83\x88\x1c\x36\x4f\xf2\x15\xcb\x50\x04\x5e\x60\xf4\xa7\xee\x45\xb6\xc9\xd8\x64\x47\xf3\x81\x41\xd3\x42\xdb\xc5\x30\x8f\x8c\x66\xef\xc4\x7f\x7c\x45\xf6\xd2\x5e\x65\x64\x30\x9a\x86\x2d\xb9\x0f\x4d\xf3\x31\x78\x7e\xcd\xd8\x9d\x3a\xaa\x46\x05\x3e\x29\xf1\x02\x62\x4d\xdf\xe8\x0e\x8a\x3f\x99\x28\x7c\xec\x19\xfa\x83\xe4\x4d\x55\x7c\x04\x41"}, +{{0x5d,0x66,0xce,0xb7,0xc6,0xe5,0x8c,0xac,0x91,0xe2,0x88,0x27,0x91,0x70,0xe8,0x18,0xe7,0x87,0x18,0x0c,0x6b,0x42,0xdf,0xa1,0x68,0x78,0x7d,0xd0,0x7f,0x80,0x9f,0xa4,},{0xef,0xc9,0xb3,0x5d,0xb8,0x1f,0x34,0x61,0x98,0xa7,0xac,0xc6,0x9f,0x65,0xfd,0xfb,0xf4,0xc2,0x2e,0x68,0xdd,0x76,0x12,0xe3,0xb8,0xec,0x68,0xd3,0x78,0x55,0x3b,0x8d,},{0x6e,0xf2,0x64,0xab,0xf8,0xb0,0xe5,0xc2,0xd7,0x93,0xb2,0xc7,0x52,0x79,0x61,0x4a,0x39,0xc7,0x75,0xeb,0x2b,0xcc,0x08,0x91,0x06,0x7a,0xbc,0x61,0xf6,0xd6,0x44,0xa6,0x9f,0xf8,0xf8,0x14,0xa3,0x05,0x22,0xcc,0xa9,0x05,0x36,0xf0,0x12,0xc6,0x28,0x3a,0x76,0xc3,0x2b,0x89,0xee,0xe1,0xbd,0x9a,0x43,0x36,0xf4,0xfd,0xda,0xc8,0xdc,0x0b,},"\x94\xd7\x2f\x6d\xec\x4f\x7c\x92\x06\xb4\x15\x10\xce\x71\xa0\x29\x55\x60\x4f\x3c\x5d\xe8\xe4\x47\xd5\x87\x18\x65\xa7\x58\x98\xa4\xd2\x07\xa2\x6c\xf3\x3d\x10\xca\xf0\x5a\x0b\x6e\xd0\xd3\x89\xfe\xe9\xed\x49\x27\x50\x98\xa8\x8e\x1c\x0d\x83\x04\xe8\x1b\x40\x74\x21\x4c\x7a\x5c\xe1\x57\xeb\x26\x17\xef\x04\xe1\x32\x4b\xa9\x42\x12\x9f\xaf\x32\xc3\x1c\xb4\xaa\xe4\xa5\x91\x6c\x75\x08\x08\x72\x68\x56\xf7\x18\x0e\x57\x97\xed\xe4\x43\x62\xd7\x47\xd7\x0c\xec\x15\x9d\x3b\x6a\xce\xc6\x3a\x51\x4c\x7e\xf3\x1b\x2e\xcd\x16\xdb\x7f\xe6\x8e\xa9\xc5\xea\xd9\xd8\x70\x92\x18\x00\x34\x8f\x69\x54\x12\xf3\x09\x3e\x61\x98\x5a\x31\xea\xdb\x79\xb5\x9d\x91\xdd\x9a\x37\xf8\xd4\xef\x7a\x5d\xdf\x22\x3d\x4b\x24\x77\x4c\x2e\x44\xe3\xf2\x71\xff\xb8\x50\x0d\x59\x53\x81\xb3\xdf\x2e\x8e\x6b\x79\xee\x65\x53\x5a\x51\x9a\x43\xea\xa5\xe5\x2b\x25\x6c\x26\x43\x30\x5e\x31\x70\xcb\xe5\x76\x06\xa0\x54\x5f\x85\x86\x56\x5c\xfb\x75\xbf\x5e\x95\x64\xc6\x2a\xf0\x5f\x15\xee\x6e\x62\xaf\xee\xf8\xc2\xc7\xa9\xda\xe2\x35\xc9\xed\xd1\xd7\xc2\x5c\xf4\x9a\xdc\x03\x3e\xe7\xb5\x83\xf5\x18\xbc\x16\x8e\xa4\x88\x36\xb5\x0f\xfe\xdd\x20\x32\xb3\xf6\x30\xcc\x56\xda\xad\xd5\x13\xeb\xda\x86\x48\x23\x61\x0f\xc6\x7a\x72\xb9\xa7\xd8\x11\x71\x05\xc1\xc7\x1d\x85\xa9\x6b\x1d\x27\xa4\x41\xfa\x1e\x7c\x6c\xf8\x02\x33\xa4\x9f\xe0\xe7\x6a\x40\x27\x8d\x06\xe3\x43\x47\xd8\x7b\xe7\x7b\x98\xde\xd5\xe2\xa3\xea\x1a\xfb\x13\xbe\xe1\xe6\xcd\x6c\xa6\x3b\xe5\x4f\xcf\x88\xa2\x0c\xcb\x7a\x9f\xc3\x24\xbf\x61\x43\x20\x1b\x44\x48\x3b\xcc\x96\x40\x33\xda\xb7\x1c\xf8\xf2\xa5\x91\xfc\x05\x0d\x57\x24\xe9\x5a\xa5\x0d\x32\x89\x6e\xec\x0f\x3b\x34\x31\x1d\x2a\x99\x34\xe9\xf8\x52\x97\x7e\x25\x3f\x15\x30\x4c\xae\x24\x16\xc2\xc4\xfc\xd8\xf1\xfe\xcc\x3f\x1f\x64\xbb\x79\x75\x99\x29\xab\xb0\xe8\xe8\xf5\xf7\x29\x3d\x69\x1a\xf2\x2a\xbd\x3b\x2a\x67\x70\xb0\xcf\x14\x46\x08\xf2\xd6\x2c\xc7\xe5\x2b\xfe\x33\x3b\x2e\xd2\xde\x39\xb9\x9a\xfd\x37\xe3\xac\xf0\x7e\xda\x37\xdd\xf0\xdf\x02\x9b\xff\x2e\xc2\x25\x44\xb6\x0b\xd7\xdb\x23\x8d\xf1\x97\x5f\xfa\x00\x75\xa8\x2a\xbd\x8d\x6b\x05\xb2\x67\x18\x0b\x87\x0e\x21\xab\xf3\x69\x81\xae\x77\x68\xde\x53\x99\x3b\x30\x4f\x1c\x54\x53\x87\x2f\xdf\xa8\xed\xad\x45\xf8\x00\x1a\xa0\xe7\x34\x2b\x3b\x58\xec\x0f\x38\x9d\xcb\xc2\x71\xfb\x0f\x90\x00\x62\x87\x57\xab\xba\x58\xc0\x57\xe1\xa0\x89\x9f\x6f\xaf\x15\xf3\x74\x0f\x31\x43\xf5\xc0\xb7\xa9\x15\x96\x80\xde\x8c\x55\x72\x66\x44\x1b\x3b\x01\xca\xac\x12\xec\x27\x8f\x5a\x10\x25\xdf\x53\xed\xb6\x13\x4c\x96\x66\x3a\x96\x66\xae\x3b\xaa\x90\xfc\x83\x51\x11\xef\x05\x1b\xd9\x12\xf6\x79\x67\x44\x91\x13\xb6\xa8\x5f\x71\xdf\x8c\x60\x37\x72\x4e\xb8\xfc\x7d\x83\x19\xbc\x03\x85\xbe\x9b\x0e\x99\xe9\x5f\x9a\xed\xca\xe8\xd4\x5a\x51\x44\x76\xf0\x5b\xcd\x72\x35\xc0\x13\xeb\xc3\xae\xa9\x12\x3c\x67\xaa\x6f\x3b\x79\xc8\x5e\xa5\xdb\x15\x9e\xef\xad\xfb\x75\xa5\x0a\xc6\xb9\x5b\x49\x6b\x55\x72\x58\x1a\x76\x11\x2f\xf6\xdb\x26\x3f\xc1\x4c\x58\x18\xaa\xd5\xbc\xa3\xb2\xcb\x3a\xc8\x11\x6d\x42\x94\x82\x78\x1e\x06\xf6\x1e\x75\x63\xe6\x50\x5e\x51\xc8\xff\x99\x8b\xf8\x4a\xed\xb5\x20\x2e\x2f\x9f\xf4\xc2\x68\x98\x20\x29\x6c\xc6\x96\x03\x09\x1b\x8b\x81\x8f\xbe\xb2\xaf\x5f\x4c\x57\x06\x0d\x98\xc1\xa9\x04\x84\x3a\x70\xbf\x97\x5b\x3c\x3c\xa6\x03\x1a\x4c\xad\x5b\x4b\xbf\xba\x7e\x9b\x47\x49\x1a\xb7\x40\xd9\xeb\xe4\x1d\x76\x88\x10\xcb\x8c\xc5\x1a\x93\x7f\x7e\x3b\x22\xe3\xcf\x07\xce\xae\x0c\xe2\x08\x31\x49\x5a\xfc\xdd\x8c\x1a\x98"}, +{{0x62,0xed,0x86,0x82,0xbd,0x3a,0xb3,0x96,0x6e,0xba,0x3b,0xff,0xb7,0x75,0xa3,0x18,0xa0,0x3d,0x99,0x93,0x19,0x79,0xe9,0x9f,0xeb,0x2d,0xdb,0xd6,0x94,0x55,0xa0,0xef,},{0xd3,0x2a,0xda,0x17,0x8b,0x3e,0xc7,0x70,0x0c,0x47,0xdd,0x6d,0x36,0x53,0x22,0x03,0x3f,0xe4,0x31,0xc3,0x02,0xb4,0x6f,0x8d,0x58,0x79,0x8e,0xd8,0x33,0x71,0x56,0x6b,},{0x3d,0xa8,0xd1,0x4d,0xc4,0xe7,0x1f,0xe6,0xc3,0x2e,0xde,0x46,0x37,0x88,0xe4,0x1b,0x82,0x6b,0x4e,0x21,0x60,0xba,0x10,0xc9,0x5f,0x1c,0x8a,0x27,0x49,0xaa,0xd8,0xf1,0x2e,0x98,0xae,0x24,0x68,0x30,0x3b,0xaf,0x69,0x08,0xbd,0xb3,0x5e,0xf3,0x8a,0x5e,0xcd,0x77,0x74,0x1e,0x72,0xee,0x3a,0x42,0x7f,0xd9,0x04,0xda,0xe6,0x6f,0xcf,0x03,},"\x9e\xb1\x3b\xc7\xfa\xcf\x51\xa1\x80\x54\x1e\xc1\xdc\x5f\x5a\xcb\x14\x8c\x8d\x5e\xad\xcd\x2c\x4e\xf0\x68\xbc\xdd\x11\xb3\x49\x25\xea\xbf\xaf\xab\xfe\x82\xa2\x84\xbc\xba\xee\x13\x81\x15\x2a\xf8\xe5\xe0\x9f\x03\x7c\xf1\xbb\x64\x84\xac\x18\xe3\x73\x59\xbf\xaa\x4c\x87\xaa\x07\xd3\xd1\x4e\xd0\x89\xb0\x53\x91\x0d\x1f\xa4\x73\xf7\xbc\xe1\x43\xe2\xa5\x9c\x4d\xaf\x99\xb6\xc6\xe4\xe9\x29\x1d\x97\xc8\x64\x71\x2a\xf3\xea\xba\x53\xce\x25\x17\xa4\xf7\x5c\xd7\xec\xf2\x78\xf3\x4e\x22\xb7\xdf\xfd\x08\x8f\xa5\xec\xad\xc0\xdd\x22\x13\x5e\x42\xa5\x36\xc6\x84\xf2\x19\x5d\x31\x5f\x69\x24\x57\x1e\x46\x3f\x5c\xfc\x11\xb9\xf9\xd0\x5a\x7e\xa1\x1b\x98\xa1\x69\xa1\xe3\x93\x60\x97\x3c\x50\xad\x45\xc7\x49\x1b\x57\x13\x8e\xc0\x50\xf4\x3c\xbd\x5d\x17\xeb\x3f\xe0\x01\x3e\x3d\x28\xd5\x26\x05\x4e\x07\x63\x31\x52\x24\x6f\x16\x55\x4f\x30\x54\x74\x9e\xea\x68\x7b\x9c\x37\x1b\x40\x9c\xd3\xec\xef\xb1\x11\xa1\xd6\x00\x40\x73\x44\xe6\xd6\xec\x38\xc6\x0f\x6e\x54\x5a\x92\x38\x2e\x46\xc4\xd1\x13\x12\x5d\xbe\x5b\x98\x26\xe1\x27\xf1\x01\x81\xa3\x5a\xcf\xff\x28\xab\x37\x64\xca\x7f\x23\x8f\xf4\x79\xfd\xbc\x45\xb7\xa2\xad\x0f\xf5\x38\xc8\xac\xd0\x01\x8d\x44\x70\xfe\xbc\xc6\xa3\x07\x65\x1c\xb5\x83\x2f\x32\x6b\x19\x24\x1b\xe9\x86\x7e\x4e\xca\x6a\xe3\x6f\x0e\x2d\x83\xfd\x77\xb9\x72\x02\xb3\x64\x71\x6e\x36\xd1\x89\x5a\x36\x85\x3e\x7e\x76\xe8\x8f\x62\xdb\xbf\x77\x26\xc2\x18\x05\x69\xc6\x66\x73\x83\x7a\xd7\x2f\xf9\x36\xcf\x0e\x2f\xdb\x9e\xc6\xaf\xcc\x79\xf8\x82\x9e\x15\x7f\x95\x22\x88\xf4\xe0\x0d\x04\x10\xa7\x22\x53\xbf\x60\x5e\xdd\xce\xb0\x14\x40\xde\xe5\xdd\x32\xb5\xa8\x03\x43\x9f\x03\x8c\x06\xaf\x1c\x90\xb2\x7b\x5f\xe9\x84\x3c\x27\xae\x76\x60\x9c\xbf\x83\x28\x35\xc0\xe3\xc4\xbb\x59\x97\x6c\xce\xde\x44\x87\x86\xd9\x1e\x43\x8e\x07\x75\xc0\x6a\x92\xd0\xf0\xb8\xdc\x0e\xf6\x82\x60\xf7\xdd\x9e\x68\x71\xc4\xd0\xc0\xc0\x94\x63\x85\x26\x15\x21\x85\x16\xf4\xa6\xde\xbf\xdb\x46\x27\x3b\x28\x33\x82\xcd\x9c\xa7\x44\xab\xf9\xfd\x43\x91\x94\xb8\xcf\x1b\xdb\xb3\x17\x5c\xa9\xc5\x7a\x1c\x37\x3c\x41\xfc\xe9\x2b\xd5\xfc\x01\x2b\x19\xa0\x69\x8a\xef\x37\xba\xf8\x06\xae\x09\xad\xd8\xcb\x97\x2a\x9e\xf9\xa7\xa5\xa9\xb1\xfd\x9a\x41\xd8\x54\xc3\x0c\xca\x13\x96\x14\x0e\x20\xc2\xb9\x86\x54\xfe\x6e\x51\x1b\x62\x6a\x43\x91\x5b\x22\xfb\x2d\xad\x74\x7b\xa7\xfe\x74\x60\xd8\xce\xbb\x20\x06\xfe\xa1\x9b\x32\x84\xb0\x9c\x06\xa6\xf5\x2f\x17\x9a\x32\xbe\xb5\x63\x57\xb9\x29\xa6\x59\xf0\xfe\x6a\x26\xb6\x97\x03\x3d\xef\x58\xba\x60\x3f\x43\x0f\x74\xaa\x35\x07\x09\x81\xdb\x74\xcc\xf1\x91\x90\xa1\xfb\x05\x14\x4e\xc0\xa0\x9a\x51\xe5\x47\x65\x06\x97\x30\xb0\x9a\x7a\x23\x31\xff\xb3\xde\x2a\x7e\x02\xc5\xe1\x84\xda\x40\x13\xdf\xe9\x37\xc3\x71\x11\x75\x24\xf7\xb2\x10\xba\x60\xe2\x69\x2d\xcd\xce\xf3\x6a\xb2\x27\xb4\xc4\xf0\x2a\x9f\x48\x89\x72\xb8\x47\xf0\xd6\xb5\x9d\x02\xee\x54\xfe\xde\x88\x21\xdb\x6c\xf7\x31\xcc\x8a\xc8\x95\x35\x0a\xc5\xcd\x4d\x6b\xaa\x3a\xd0\x36\xf0\x6f\x20\xd1\x0a\x14\x0c\x4a\xd3\xd1\x0c\xa9\x85\x53\x2e\x31\x60\x46\x27\x73\x38\x5a\x2e\xb5\xe4\x64\xd5\x28\xe1\xe5\x9c\x29\xf6\x6b\x3d\xe5\x9e\x9e\xa2\x8a\xf3\xf9\x7b\xfc\x55\x89\x03\x57\x52\xa5\xa5\x52\x3d\xec\xd2\xdf\xf0\x1f\xc0\x0f\xf3\x1b\x30\x15\x2f\xf5\xda\xfa\x33\x1c\x6a\xb1\x58\x73\xaf\x41\xaa\x96\x0a\xac\xe7\xd2\xcb\x4f\x95\xc2\x3d\xf4\x4b\x9e\x6c\x6e\x2f\x86\x78\x8a\x87\x2f\xd3\xa5\xcb\xe4\xac\xc9\x58\x10\xda\xa0\x9d\xcc\x1d\xf9\x33\x46\x5e\xf0\x40\xc5\x3d\x9d\x95\x9f\x9d\xad"}, +{{0x4e,0x57,0xf0,0x31,0x1f,0xff,0x0e,0x5d,0x53,0x88,0x49,0xb1,0x21,0x6f,0x69,0x5b,0x1a,0x52,0x77,0x94,0x17,0x08,0x20,0x4d,0xb2,0xf0,0xc1,0x5b,0x3c,0x73,0xc8,0x2a,},{0xe3,0x37,0x1f,0xe2,0x36,0xad,0x2f,0x6f,0x42,0xf9,0xe1,0xfa,0x4e,0x1e,0xda,0x2c,0x3e,0x29,0xc3,0x6c,0x8a,0xd2,0x21,0x8a,0x3c,0x03,0x79,0x82,0xf0,0xb5,0x79,0xec,},{0x4f,0xdc,0x7b,0x6e,0x28,0x27,0xf6,0x4b,0xa3,0xc0,0x33,0xc7,0xfb,0x6d,0x1b,0x35,0xdd,0x68,0x0f,0x53,0x29,0x99,0xa0,0xd7,0x7a,0xeb,0x27,0x6c,0x31,0xbd,0x9e,0x39,0xc6,0x70,0x97,0x8b,0xe4,0x72,0x43,0xc1,0x13,0x22,0x3a,0x57,0xaa,0x10,0x23,0x31,0x50,0x67,0x8b,0x40,0xdb,0x78,0x59,0x1c,0x04,0xd0,0x8d,0xf5,0x7a,0x70,0xa2,0x09,},"\x05\x2a\x1f\x41\xeb\xfd\x4b\xf6\x5e\xfb\x0e\xc8\xe7\x4d\xd7\xb3\x06\x5e\x9c\x48\x2c\x49\xb9\x92\x62\xe6\xdf\xa8\x40\x7d\x9e\x31\xed\x34\xd2\x29\xba\x41\xfc\x49\xa9\x4a\x13\x09\xf9\x90\xa9\x9c\xb9\x90\x2f\xb8\x4f\x4e\xde\x91\xbb\x64\x71\x45\x64\xa9\x13\xd5\x74\xd4\xa3\xc2\x86\xf0\xa1\x92\xa7\x8c\xe2\xd5\x5a\xae\x5c\x9f\xb0\x57\xff\x36\x12\x00\x18\xb2\xa8\xb5\x4d\x98\x08\x55\x37\xea\x64\xae\xa9\x99\xd5\x32\x1c\x78\x80\xb3\x6a\xb4\x30\x18\xea\x2c\x92\xa5\xe6\x83\x50\xd3\xde\x85\x26\xe2\xc8\xbc\x91\x41\xf4\x34\x9a\x18\xa3\x4f\x21\xde\x0a\xbb\xf2\x93\x09\x87\x56\x7f\x0a\xaf\x8e\xb1\x91\x45\x58\x0d\x71\x30\x6c\xe8\xa6\x9e\x79\xf8\xee\xa2\x6c\xfa\x0b\x8b\xeb\x49\xcc\x5a\xa2\xbc\x77\xb7\x97\xd4\xf8\xd5\x03\x26\xff\xb9\x37\x39\x9e\x94\xfd\xec\x85\xe1\x92\xf1\x27\x2a\x80\xe9\xa0\xeb\xba\xf5\xd0\x1f\x1b\x97\x06\x08\x02\xbd\x4a\xf3\x4c\x0f\x7d\x7e\x98\x54\x3f\x9d\x66\xd6\x0e\x0e\x6b\xc0\xbf\x9c\x99\x0b\xe3\x1e\xea\x19\x78\xff\xd1\x67\x33\xa8\xab\xe4\x95\x58\xb3\xad\xd0\xdc\xe6\xde\xfd\x64\xdc\x04\x3f\x15\x19\xb1\xe9\xbe\x66\xe0\x6e\x41\xec\xab\x16\x8c\x83\x39\xa8\x5e\x0b\x91\x38\x18\x64\x4e\xa7\xc5\x33\x44\x68\xfd\x71\x96\xa0\x1e\x1d\x4c\xe8\xdd\x1e\x7e\xe3\x13\xdd\x53\x50\xb8\xdc\xe4\xf5\xd7\xa6\xac\x09\x85\x7c\x4d\x3d\x0f\x10\xa3\xd9\x06\x26\x09\x75\x45\x92\xad\x10\x77\xb2\xe2\x09\x6f\xc9\xe5\xb1\x97\x8c\x98\xb5\x66\x0d\xdf\x51\xb4\x6e\xde\x9f\x9d\xcd\x41\xb2\xef\x44\xe7\x9f\x6d\xaf\xf7\xd3\x62\x68\x70\xe2\x24\x3c\xaf\xb2\xf4\x36\x79\x39\x10\x9e\xd9\xc0\x14\x84\xb7\x9e\xaa\x30\xa1\x89\x1e\xa1\x8f\x98\x4e\x16\x1d\xcd\xd1\xbd\xa3\x71\x34\xbf\x67\x35\xd2\xb2\x14\x9b\x48\x98\xda\xcb\xfd\xa6\x1e\x60\x02\xd7\x2a\x6f\xc5\xd2\x1f\x10\x98\x21\x32\x31\x13\x2d\x56\xdf\x68\xd6\xa9\xbf\xdf\x4e\xdd\xc0\x52\x4d\xb8\xfd\x8f\x24\x88\x52\x04\x9a\x68\x25\xa5\xed\xd2\x36\x0c\x00\x9a\xf2\x4f\x0a\x94\xc5\x07\x9d\xdf\x6f\xe7\x96\x94\x5f\xf9\x84\xaa\xc3\x64\x11\xce\x80\xd9\x87\xc6\xed\x67\xb6\xb0\xdd\xb6\xd4\x17\xf6\xe8\x09\x99\x1e\x72\x9d\x14\x7d\xd0\xd2\x1a\x09\x32\x41\x36\x3c\xf4\xef\x3b\x8e\x3b\xa0\x2d\x48\x66\x33\xb6\xb2\x17\xf5\x49\x3e\x2e\x43\x2b\x8c\x2e\x27\xd0\x0c\x5b\x56\xc9\xb6\x5f\x9a\xed\x49\xce\x93\xd7\x7e\x7d\x0b\xf5\xf9\x2f\x92\xf5\xbb\x4b\x59\x5d\x66\xf8\x87\xa4\x88\x01\x33\xf9\x70\x46\x3a\xb8\xb7\xf3\xd8\xc7\x94\xc0\x40\x6e\x88\xe3\xea\xb9\xae\x65\xf1\xa1\x85\xd6\xe3\x9e\x2d\xd6\xab\xb8\xa9\x3d\x2a\xc4\xb9\x20\x83\x98\xda\xb8\x9d\xbc\x07\xa4\x1a\x50\x26\x40\x26\x41\x2d\xa0\x22\xb5\x8f\x48\x9d\x4d\xba\x31\xfb\x88\x2f\xec\xb1\xff\x8c\xa1\x82\x0d\xda\x18\x65\xaf\x15\x51\xe4\x6c\xd6\x18\xb4\x4c\x4e\x6e\xb3\x03\x7a\x93\x33\xfd\xcc\xef\x4b\x89\x51\x89\xe4\x39\x0e\x93\x14\x5d\x26\x4c\xa5\xf4\x52\x02\xa3\xeb\x28\x53\x59\x3f\xee\xd6\xc6\x6d\xbb\x28\x8f\xf3\xa3\xc0\xfa\x83\x2b\x2a\xa7\xe5\x29\xb5\x56\x88\x97\xb3\x14\x94\x02\xa9\x07\xe7\x41\xe1\x01\x1c\xe0\x73\x1c\x91\x5f\x91\x44\x6a\xa0\xd5\xca\xf0\x59\x5f\x18\x16\x43\x4f\xa4\x57\x6d\xb3\xbc\x31\xe1\x0c\xc2\xaf\x33\xf6\x13\xf0\x3c\xa7\xb9\x49\x1a\x0a\x34\x05\x25\x27\x1a\xb5\x37\xf6\x2a\x11\xa8\x4d\xa0\x1c\x7f\x55\x81\xad\x57\x38\xc3\x72\xb5\x33\x5b\xab\x9b\x2b\x9d\xc2\xfe\x91\xe9\x33\x30\x4d\x94\x01\xba\x8e\x1c\xe8\xdc\x55\xc4\xfb\x46\x6b\x3a\x8e\xd7\xf5\x3a\x12\x2b\x83\x81\xd8\xf2\x90\x47\xd7\x26\x4d\x06\xfb\x51\xec\x3e\x70\x07\x1f\x27\x36\xa4\xe7\xe1\x53\x7a\x52\xfa\x25\x6a\x04\xee\x86\xfa\xd2\x7a\xd2\xd2\x8a\x9b\x36\x29"}, +{{0x39,0xf0,0x55,0x6b,0x1c,0x5d,0xca,0xb3,0x87,0x10,0x41,0x81,0xbb,0x30,0x4d,0xe0,0xcf,0x81,0x59,0x20,0xb9,0x72,0xe8,0x71,0xd5,0xf0,0xfb,0x41,0x6d,0x8e,0x61,0x6a,},{0xd8,0x5f,0xb7,0x6e,0x78,0xc3,0xd5,0xbb,0x7c,0xa6,0xb0,0x5b,0x31,0x01,0x91,0x82,0x1a,0x4a,0x7d,0x2d,0x9b,0xdf,0x02,0x29,0x2c,0xc7,0xae,0xa5,0x64,0x2e,0x48,0x19,},{0x01,0x66,0xaf,0xed,0x5a,0x8f,0x7c,0x3f,0x7a,0xd6,0xf3,0xfd,0xd2,0x93,0x8e,0xff,0x00,0x89,0x8e,0xab,0x81,0x5c,0x54,0x55,0xac,0x90,0xfb,0x51,0xf6,0xe1,0x85,0x4f,0x0c,0x07,0x53,0x19,0x4b,0x76,0x29,0x59,0x4c,0xc1,0x27,0x1b,0x00,0x34,0x31,0x22,0x1c,0x57,0x4b,0x0c,0x0d,0x19,0x08,0x2f,0xee,0xda,0x51,0xb0,0x84,0xae,0x5e,0x03,},"\xa8\xd0\x34\xe1\x70\xfc\x22\xb5\x7a\x44\xaa\x62\x69\xed\x1f\x01\xcb\xa8\x01\xf3\x98\xdf\x1a\xdf\xe7\xdf\x04\x4d\x5f\xa4\x68\xbb\xfa\x8a\xf4\x74\x9a\xb5\x0d\x24\xd6\x2e\x31\x3a\xc0\xe7\x3a\x64\xb4\x28\x2b\x74\x62\x6a\xf2\xb4\xa4\xb5\x4c\x27\x4e\x5a\x6b\xc2\x80\xb6\xdc\x25\xdc\xfe\x07\x81\x4c\x9c\x81\x6d\x2f\x9e\x36\xc0\x5b\x9b\xfe\xdf\xf7\xc6\xb0\x3c\xdd\xeb\xd4\x73\x5e\x09\x93\xd3\xc3\xfd\xc6\x54\x04\x43\xc6\x00\x5e\x90\x0b\x40\x35\xe1\x40\x8a\x85\x01\x6a\xa1\xb8\x92\x02\x99\x0e\x5d\x84\xed\x99\x81\xc2\x9b\x77\x20\x6d\x7c\x11\x30\x52\xa2\x02\x98\x12\xc6\xea\x13\xaa\xe8\xbe\x0a\xca\x7a\x33\x06\xbf\x61\x72\x42\x29\x8e\x68\xbe\xcd\x0d\x5d\x16\xc8\x88\x7f\xd1\x95\x0b\x77\x85\xa4\x6b\xb0\x22\xb3\x9f\x76\x07\xcd\x89\x13\x71\x8b\x30\x17\xfc\x3f\x86\xd6\x93\x3f\x75\xee\xc5\x19\x1a\xd1\xf1\x98\x9a\x8d\x26\x17\x86\xf5\x6b\xe4\xa9\x88\x37\x0d\xb8\x29\x61\xa9\xfc\xc9\x53\x54\x2e\x51\xc2\xe0\x86\xdb\x0e\x02\xb4\xfc\x34\x66\x94\xab\xd9\x05\x9d\x5b\x11\x72\x26\x47\x66\x9e\x7f\x17\xb7\x45\xa6\x0b\x02\xf7\x33\x9f\xcc\x99\xbc\x35\xd5\x9f\xd0\xb9\x8b\x60\xc3\x14\xab\xd4\xbf\x8a\xa4\xb7\xea\xe0\x9d\xd0\x09\x7a\xcb\x91\x89\xf0\x2c\xf8\x5a\x25\x1a\xc9\x2a\xaf\x69\x1b\x15\xcd\x4a\x33\xb5\x8d\x76\x63\xab\xd0\xb0\x44\x43\x33\x04\x4a\xf5\xce\x20\xfd\x71\xcb\xaf\xfc\x0d\x29\x83\x58\x19\xf4\x92\x93\xfc\x26\xe7\xf9\x78\x7f\xc3\x68\xc4\xd3\x5c\xae\x92\x74\x7f\x21\xca\x1f\x3e\xfd\x87\xa0\xd8\x10\x41\x99\x41\x64\x82\xd0\x7b\xfe\xc1\x28\x1c\x66\xf5\x65\x28\x5b\xf6\x72\xd5\xe7\x48\x64\x00\x66\x0c\x01\x75\x55\xe9\xfa\x2b\xf6\xa4\xe7\x02\x7f\x0e\x7e\x5f\x44\x3e\xd6\x58\xb7\x5b\x59\x06\x12\xab\xde\x0d\x80\xd1\xa2\x6c\xb8\xbd\xe7\x6b\x99\x6e\xff\x6a\x74\xe3\xda\xfc\x59\xeb\x1b\x58\x4f\x45\x97\xa2\x39\xcd\x83\x9f\xa1\xf1\xb7\xbd\xa1\xa2\x4d\x15\x0c\x4e\x24\xb9\x1c\xec\x01\xee\x53\xa3\xac\x85\x2a\x91\x2d\xe1\x95\xa3\xc2\x9d\xd7\x07\x9a\xa7\xe8\x8a\xa8\x1e\x9d\x31\xb8\xfc\xcd\x43\x5e\xda\x11\x3c\x3f\x82\x45\x8b\x7f\x79\x33\x57\x2b\x77\x67\x53\xc9\x22\x40\xcc\x03\x61\x58\xa4\xba\x0e\x56\xef\xed\x53\xec\xb5\x3f\xc0\x93\xfe\xad\x14\x34\x34\x85\xae\x5d\x91\x05\xbb\x16\x3f\x26\x25\x14\xe4\x8b\xe7\x41\x59\xc9\xfa\xbc\xb7\x1d\x1a\x42\x80\xd9\xed\x70\xd7\xe4\x2b\x75\xf7\xfd\xad\xd0\x2d\x69\x19\x8f\x5f\x46\x5b\xf6\x04\xcb\x42\x54\x41\x7b\xac\x37\x14\xb3\xa9\x9e\x6f\x1a\xce\xc9\xe3\xb3\xd0\x97\xf9\x72\xfb\xc3\x6f\x2e\xda\x39\x26\xd5\x61\x12\xd4\xe9\x09\x7d\x89\xbd\xc3\x59\x37\xb9\xa3\x15\x8e\x7c\xdd\x5d\xa4\x01\xe1\x80\xd3\xed\xe6\xb1\xff\x02\x86\x41\x92\xeb\x72\x97\x81\x53\x4f\x49\x64\xdd\xf2\xaf\x11\x80\x0d\x8b\x5b\x6d\x01\xb2\x09\xaa\x33\x69\x36\x6c\x19\xa2\x8c\x79\xa8\x7d\x21\x74\xec\x22\xfb\x14\x89\xa6\x75\x5c\x34\x8a\x99\x6d\x0a\xa5\x6e\x0f\x60\xd5\x8e\x26\xbe\xfa\x23\xa8\x6b\xef\x4e\x35\x29\x51\x2e\x30\xa9\xd1\xc5\xe4\x88\x50\x18\xcb\x97\xae\xb7\xc9\x3c\x5c\x41\xca\xa3\x42\x36\x57\x5c\x22\x6f\x3b\x23\x5e\xdd\xba\x36\x4e\x28\x5b\x6e\x35\x27\x07\xbb\xb3\xb3\x39\xbb\xf2\xa6\x3a\x9c\xb9\xbd\x33\x3a\x77\xe7\x9b\xd5\x8a\x48\xe1\x4c\xe5\x88\x6e\xd0\xcd\x07\xc2\xd1\x65\xa8\x1b\x5e\x6a\x31\xa8\xae\x78\x06\xbc\xf2\xe0\xc4\xec\x29\xa9\x67\x72\x5e\x57\x7f\x17\x41\xee\x68\xf3\x45\xf5\xf7\xab\x0f\xad\x31\xc8\xb4\xb1\x8b\x43\x1c\x49\x77\xd5\xc5\x84\x00\x4b\x45\xf7\xcd\x19\x61\xaf\xfe\x87\x38\xe2\x4c\x38\x26\x10\xef\xe9\x98\x35\x3d\x7e\xba\xf9\x19\xb2\x79\xbb\xb6\x91\xc3\x05\x2b\x8b\x2c\x5f\x09\x80\x8e\xf3\xa6"}, +{{0xba,0xb3,0xff,0x7a,0x44,0x48,0xd8,0xa0,0x3d,0x8a,0xcf,0xdb,0x91,0x3f,0x77,0xfe,0x77,0x80,0x43,0x95,0xc3,0xe5,0x4e,0xc2,0x35,0x11,0x79,0x27,0xe3,0x2b,0x50,0xd5,},{0x54,0x97,0x5e,0x35,0xe5,0xb1,0xd0,0x32,0x3f,0x2d,0x6f,0xb5,0xc6,0x15,0x8b,0xf6,0x65,0x4b,0x08,0x4f,0x76,0xbb,0xdc,0xfd,0x72,0x34,0x92,0x29,0xe8,0xe4,0xa6,0xe8,},{0xd6,0xb4,0x13,0x5f,0xc7,0xac,0xb3,0xd7,0xcd,0xf9,0x87,0x89,0x6d,0x91,0xb8,0xa9,0x0d,0xb5,0x84,0xd8,0x93,0x3a,0x6f,0x30,0x29,0xe3,0x26,0x1e,0xc1,0xc3,0x90,0xcb,0xac,0xfa,0xaf,0xef,0xf4,0x43,0xb6,0xda,0x4f,0xdb,0x1d,0x84,0xc6,0x4a,0x54,0x56,0x0f,0xef,0xfa,0x2f,0x1c,0x7a,0x91,0xbd,0xe9,0x73,0x02,0x22,0x92,0x3b,0x67,0x03,},"\xb6\x47\xb6\x7c\xf0\x1c\x2c\xac\xc3\x9d\xe5\x96\x9e\x19\x9b\xe6\xd9\x32\x01\x67\xa4\xce\xbb\xf1\x62\x59\x50\xb1\xe6\xb7\xad\xf5\xca\x24\xd1\x34\x95\x68\x86\x5f\xbb\xfd\x90\xf5\x13\xf0\x5f\x79\xf7\x0a\x63\xa2\x38\x73\xdc\x7a\x19\x5d\x4b\x28\x5a\x08\xf3\x0e\xe0\x61\xd0\xb8\xe6\xb4\xd6\xbf\x9b\x2e\xcf\x2c\x69\xf3\xd5\xa0\x7a\x67\x30\x53\x7c\xca\x4a\x4e\x4c\x7e\xe6\x84\x70\x2b\xff\x88\x3f\xab\x8b\xca\xf8\x93\x11\xc5\x49\x8b\xcc\xb5\xa0\xf7\xc8\xd4\x9b\x54\xf4\x82\xff\xfb\xca\x6e\x7d\xa2\x62\x45\x2b\xa5\x9a\x57\xa6\x87\x9d\x81\xb7\x3c\xd7\xad\xf7\x2a\x3b\xe2\x8a\x37\x3c\xd6\x33\x10\x40\x84\x61\xc2\x1b\x90\x7f\x63\xe0\x86\xb2\x92\xff\x02\x83\x3e\x8a\x2f\x46\xad\xbd\x67\x1d\x02\xb0\x3a\x69\xac\xa2\xe1\x1d\x28\x7c\x52\x2a\x95\x45\x20\x44\x2e\xce\xfa\xa9\x05\xdb\xfc\xc8\x25\x4c\x58\xc3\x95\x4a\x89\xbf\x56\xcb\xe0\x1a\xd5\x63\x19\x71\xeb\x39\xeb\x43\x2a\x85\x4e\x69\x19\x29\xdf\x7e\x48\xb9\x00\xca\x6e\x74\x0a\xcc\xf5\x78\xb3\x17\x95\xb4\x9a\x6c\xa7\x74\xbd\x8b\x99\x31\x06\xa9\xc4\x94\x8c\x18\x71\x49\x48\x31\x59\x90\xa5\xf1\x91\x69\x24\x20\xf2\x89\x32\x8a\xb7\x13\xec\x19\xb7\xea\x89\x4d\x16\xe6\x47\x61\x00\x87\x1c\xf3\x16\x8e\x4f\x93\x5b\x55\x05\xd1\xed\x5b\x0a\xa2\x9b\xe3\x6f\xa3\xa3\x46\xac\x3e\x76\xf1\x43\xc4\x6c\xa6\x91\x23\xb7\x9c\x36\x39\x9a\x0d\x2e\xd3\x02\x77\x24\x94\xad\xf4\x42\xbb\xaf\xbc\x4d\x01\x53\x26\x92\xc7\x85\x9d\xf0\x4d\x2c\xa7\x8b\xa5\x5d\x77\xfd\xf3\xe5\xad\x99\x37\x86\xa2\x4c\xff\x21\x99\xbb\x49\x38\x78\x73\xcc\x41\x4b\x4c\xf1\x13\x7a\xbb\x7e\x94\xae\x3d\xdb\xf9\x7f\x53\x4a\x18\xfc\x5a\xe5\x85\x23\xa3\xcc\x52\x28\x3d\xc7\xb0\x16\xf3\x1c\xd6\x55\x79\x81\xc5\x07\x6c\x77\x4f\x30\x3a\x47\xc4\x27\x87\x0e\x20\x7e\xd8\xbd\x66\x64\x0f\xf0\x92\xdb\x50\x3f\xa1\x24\xbf\xdc\xf0\x20\x05\x1d\xad\xd1\x06\xdd\x24\x58\x40\xb3\x19\x10\xb8\xa9\x06\x0d\x59\x86\xf0\x2b\x60\xaa\x5e\x33\xb4\xd7\x55\x09\x12\xcd\xc5\x77\x6c\x77\x2a\xac\x93\xae\x19\xc7\x3b\x7e\xcf\xca\x38\x9e\x62\x76\x81\xa8\x78\x1e\xb4\x7d\x84\xe9\x34\x60\xba\x89\x1d\x3f\xf6\xea\xdf\x8f\x2a\x90\x3c\x38\x34\x74\xbe\xaa\x42\xb9\x0e\x03\x22\x36\xdc\xd8\x98\xd0\x2a\x40\xef\xb4\x4e\x47\xea\xd5\x2b\x75\xb0\x9c\x7d\xa1\xcd\x6a\x2d\xfd\x4d\x1c\x04\x52\xde\x69\xf6\xac\xac\x1a\x68\xdd\x78\xda\xf9\x72\xae\x26\x08\x21\xe2\xec\x52\x2f\xb5\x74\x9b\xeb\xe0\xad\xb4\x52\xbf\xa4\xfa\xa1\xe9\x79\x11\xc1\x29\x9f\x16\x56\x8d\x68\xee\xf4\x05\xf4\xb1\xcd\xac\xab\xed\x59\xf7\xb0\xfb\xce\xab\x71\x9a\x34\xb2\x99\xf5\x8a\x4a\xe8\x15\x4f\x98\xf4\xd9\xf4\xf1\x40\xb1\xf0\x85\x00\x69\x46\x72\x5e\x7c\x29\xbb\x0b\xc6\xcc\xf2\x53\x44\x97\xc6\x1d\x4c\x16\x12\x62\x4a\x61\xd7\x0d\x26\xc3\xef\xb7\xd7\xc3\x51\x84\x86\x57\xf7\xf8\xee\xbf\x8b\x99\x07\x47\x74\x0e\x6f\x91\x0c\x97\xce\xf1\x50\x37\x57\x65\xc8\xc0\xb3\xb4\x49\xc0\xd0\x9d\x66\xf0\x08\xe6\x7c\xfa\x76\xea\x2b\x68\x08\xb6\xfe\x63\x2e\xaf\xe0\x58\x7f\x37\xe3\x6b\xe9\x8d\xcb\x17\xa3\xf4\xa1\x5b\x65\xa9\xf6\xfc\xf9\x64\x2b\x52\x52\x20\x77\xb1\xfb\x4c\xc3\xc0\x8d\xf4\xb4\x67\xca\x71\x6d\xb1\x6b\x73\x7f\x78\x2c\xdf\x38\x71\x70\xa5\xf1\xf6\xa7\xae\x0a\xb3\xf5\xb7\xc5\x85\xe3\xb0\x65\x5a\x64\x56\xa5\x03\x59\x5c\xe8\xea\xea\x25\x37\x85\x5e\x7f\x0d\x50\x61\xbc\x29\xb4\xe6\x7d\xaa\x82\x46\x3c\x19\x0e\x9f\xdd\xd5\x2f\x83\x22\xdd\xb4\xe0\xf2\x6b\x68\x77\x82\x28\xeb\x57\xe1\xa1\x85\xb7\x02\x5d\xa1\x49\x87\xd4\x4b\xaa\x76\x7b\x22\xee\x7f\x4c\x84\x59\x10\x32\xe8\x8e\xc1\x2e\xb8\xc5\xa4\xb9\xe1\x57\xec"}, +{{0x48,0x6c,0x7b,0x43,0x6c,0x1d,0x43,0xd6,0xb7,0x03,0x51,0x22,0x83,0xc1,0x66,0xdc,0x86,0x3e,0x5a,0x33,0x80,0x2f,0x4e,0xa6,0x5f,0xc7,0x38,0x77,0x89,0x02,0xd0,0x14,},{0xb5,0xdc,0x94,0x7d,0x64,0x33,0x7c,0xae,0x82,0x12,0x2b,0xd6,0x8c,0xc8,0x08,0x40,0x59,0x6d,0xe3,0xbe,0x56,0xcb,0xd0,0xc8,0x33,0xaf,0x3f,0xaa,0x3a,0xdc,0x37,0x76,},{0x31,0xf9,0x5c,0xbb,0x74,0x63,0xb8,0x75,0x28,0x65,0x42,0x27,0xbb,0x13,0x97,0xbf,0x10,0x65,0xb4,0xf5,0x76,0x80,0x80,0x78,0x20,0x7d,0xfa,0xf0,0x6d,0x12,0x4b,0x41,0xf4,0xc3,0x18,0xf4,0xa9,0x31,0x5a,0x66,0x08,0x5b,0x9e,0x56,0x8a,0x71,0xe4,0x14,0xed,0x94,0x14,0x51,0x73,0x10,0xc6,0x99,0x94,0x6d,0xb0,0xc9,0x76,0x28,0x52,0x07,},"\xaf\x03\x60\x53\x67\x2d\xcf\x3a\xa2\x6e\x28\xec\x6a\xa6\x42\xce\x28\x4b\x89\x6c\x69\x88\x7d\xfd\xcf\x08\x24\x51\x5e\xb0\x84\x8d\x9d\x97\x0c\xa2\x72\xdf\x77\xa8\x6b\x3f\xf6\xdd\xaf\x3c\xba\xdd\x3a\xb6\x28\x3b\xc3\x7c\xdf\x7a\x56\x07\xd5\xdf\xc7\xcf\x96\x32\x92\x99\xcc\x53\xed\xbb\xe6\x57\xfd\xfa\x2c\xa2\x44\x67\x05\x0a\x0a\xeb\x8c\xff\xd7\xd3\x3d\x54\x3e\xc2\xc1\x91\xcc\x0b\xce\x89\xac\x37\xd3\x32\x93\xb1\x88\x8c\xcb\x76\xc2\x8a\xdc\x67\x1a\x49\x35\xa8\x46\xd9\x07\xe4\xad\xd0\x11\x0f\xeb\xbe\xe5\xae\xc8\x0f\x9d\x2f\xf7\x4e\x2a\xf4\xfd\xbe\xbb\xcf\x49\x10\x5a\x64\x69\xd7\x38\x00\x06\xb2\xca\x44\x36\x48\x14\x45\x4e\x44\x5e\x36\xdc\x00\x12\xf3\x39\xc9\x68\x54\xf8\x36\x44\x2a\x05\xa5\x0b\xec\x90\x73\x27\xf7\x4b\xa9\xf6\xfd\x79\x0f\xf0\xad\x37\x83\xd2\x97\xbd\xcc\xa7\x64\x60\x78\x37\x03\xeb\x5f\x2b\x1f\x51\xb0\xa7\x40\xce\x7a\x8f\x00\xa3\x87\xe3\x63\x62\x70\xa9\x71\xfa\x8f\x15\xb4\x49\x67\x30\xd8\x8a\xdd\x80\x7a\x7f\x7e\x98\x7c\xd4\x15\x95\xa2\xe7\x43\x5d\xf5\x19\x55\x76\xa3\x5f\x5e\x91\xb2\xfc\xfa\xc9\x4e\xd5\xd7\x76\x63\x78\x3b\x61\xe6\x67\x1d\x34\x83\x8b\x6b\x56\x44\xfb\xc1\xc5\x39\xfe\x15\x9b\x77\x92\xdb\x96\x7e\x83\x52\x61\x8d\xda\xca\x0c\xde\x73\x43\x7b\x59\xe7\x80\x1b\x49\xeb\x46\x09\xb1\x05\x77\xca\x26\x92\xdd\x6f\x9d\x5e\x9d\x4b\x5e\x5e\x62\xc5\x91\x3e\x7b\x87\xe6\xb3\x47\xbe\x61\x53\xb1\x71\x99\xc9\x16\xa1\x3f\x8a\x88\x5b\x37\x8e\xf0\x9e\x13\xca\xe4\xd8\xb0\x79\xd7\xd5\xcb\x90\x94\x19\x9b\x0f\x20\x53\x3c\x90\x08\x3b\xc3\xac\xb2\x66\x76\x97\xee\xd2\x2e\x36\x70\xab\xb4\xa5\x53\xe9\x95\xc9\xdd\x95\x94\xe5\x92\x39\x1a\x00\x04\xb6\x55\x65\x44\xf3\x56\x12\xc4\x97\x13\x59\x57\x7c\x47\x63\x82\xca\x53\xb3\xf2\x62\xa5\xe3\x3e\xd2\x6e\xec\x80\x9f\x4f\xdb\xa4\x89\x8a\x11\x36\x75\xcb\x6a\xf7\x17\xdb\x62\x57\x9f\x39\x80\xb2\x14\x63\xbe\x02\x9c\xb4\x16\x0f\xe5\xd2\x57\xc4\x6c\xd6\x66\x4f\x98\x61\xac\x50\xfe\x05\xc1\x44\x05\x7d\xce\x2f\x8d\xf1\x53\x2a\xa7\xaf\x58\x9f\x41\x27\x06\x01\xce\xf0\x6b\xbe\x4f\x35\xc3\x1c\x78\x2b\xb3\xcf\xff\x7d\x5a\xb6\x4a\x14\xec\x41\x73\x61\xf1\xd3\x2c\xbd\x38\xb6\xbd\x0e\x02\x50\x5d\x14\x16\x30\x2b\x85\x05\xae\x2a\x96\xe8\xd5\x33\x9c\x34\x6c\x2b\x06\x62\xd3\x50\x25\x9c\x50\xc5\xe4\x87\x95\x91\x4e\x6f\x88\xe9\x7c\x81\x1c\x39\x3b\xdf\x9a\xec\x7e\xf8\x20\x47\xca\x28\xee\x97\x1c\x17\x5c\x27\xe3\x6e\x10\x97\x27\x96\x0d\xdf\x1a\x1b\x97\x6a\xb4\x4f\x48\x51\x60\x7b\xd9\x66\x80\x8a\xc4\x6d\x54\x00\x31\x28\x29\x7f\x5f\x44\x87\x10\x8d\x6a\x02\xe7\xa1\x64\x13\xd2\xb7\x5e\xcb\x42\xfd\xdf\xb6\x69\xc8\x01\xd2\x3d\xe5\x0a\x6f\x7b\xf6\x58\xf7\x53\xc6\xb2\xb3\xb4\x7c\x06\x40\x10\x5d\x0a\x80\x1b\x32\xa1\x94\x3c\xdc\x15\xc8\x86\x55\x5e\xb7\x5b\xb7\x92\x7b\x93\xc3\x5c\x5b\xe1\xf9\x8b\x19\x6c\xaa\xc2\xda\xd9\x91\xb1\x04\x4e\xa8\x63\x94\x4d\x54\xd8\x83\xab\xc3\xc6\xde\x66\xed\x86\x8e\xe8\x4b\xcf\x9c\x34\xcc\xdb\x80\xfc\xd9\xcc\x04\x02\x74\x77\x32\xcd\x63\x0b\xbf\xa3\xbb\xe8\xb0\x38\xdc\x1d\xbd\xaf\x43\x6d\x9a\xc0\x0c\x02\xd5\x28\xec\xe2\xe7\x91\xee\x31\x2a\x86\x8f\xeb\x2f\x58\x7c\xa4\x4d\xb5\x73\x13\x84\xfa\x18\x31\x14\x20\x61\xb2\xea\xd2\xb8\x0c\x66\xbd\x2f\xa5\xdc\xca\xbe\x6a\x25\xf2\xa4\x93\xfe\xaa\xcd\x23\x1d\x2f\x40\x96\x46\xb9\x42\xa5\x78\x54\x5e\xa4\xfe\xea\x9a\x73\x47\x3f\x79\xdc\xf1\x3e\x0c\x9f\x1b\x49\xfd\x89\x12\xec\x48\x73\x28\x04\x5b\xd0\xfa\x22\x89\x22\xee\x6e\x97\x3e\x61\xf6\xe9\x33\x65\x29\x65\x78\xdc\xc2\x1c\x36\x14\x79\xee\x2d\x24\x87\x9f\x2e\x9b"}, +{{0xa6,0xe6,0xad,0x2c,0x37,0x9c,0x6f,0xcc,0xad,0xb4,0xa4,0x9b,0x23,0x2a,0x91,0x42,0x61,0x8e,0xa3,0x01,0x03,0xc3,0x3c,0x22,0x6f,0xf6,0x28,0xbc,0xfd,0x81,0xf4,0x26,},{0xf7,0xc4,0x32,0x3f,0x5c,0x41,0x9d,0x9b,0x3f,0x34,0xa8,0xeb,0x42,0xae,0x7f,0x1f,0xaa,0x23,0x33,0x07,0x90,0x30,0xc5,0xd6,0x4f,0x9f,0xfb,0x1e,0x9b,0x16,0x00,0x2d,},{0x07,0xd9,0xfc,0x24,0x4f,0xda,0xb0,0x01,0x59,0xeb,0xec,0xc5,0xa0,0x08,0x83,0x45,0x3f,0x08,0x31,0x01,0x71,0x76,0x9d,0x29,0x70,0x01,0xe8,0x77,0x01,0x0e,0x3e,0xce,0xd9,0xfb,0x60,0xec,0x91,0xcb,0x4d,0x88,0xe7,0xba,0x40,0xc5,0x30,0xb1,0xf9,0x23,0x79,0x78,0xcc,0xd9,0x6d,0x5c,0xba,0x9e,0x4f,0xa2,0x7e,0x2a,0x0a,0xd9,0xd6,0x0c,},"\x2e\x85\x76\x76\xa5\xbb\x1c\x6e\x9e\x94\x50\x7f\x83\xc6\x0a\x67\xf5\x47\xc5\xde\x9e\x94\x56\x6b\x19\x7a\x6a\xf6\xcf\x47\x52\xe9\x3d\xbd\xef\x6b\x9f\x66\xd1\xfe\xbd\x95\x7e\x42\xa7\xf5\xad\x64\xef\x1d\xbc\xc4\xfe\x69\xae\x95\x25\xd1\xa4\xde\x67\x05\x4c\x88\xf2\x9c\x06\x47\xba\xcf\x8b\x82\xf3\x21\xff\x99\xfe\x9e\xed\xc9\x92\xed\x34\xc1\x17\x7f\xc5\x42\x12\x27\xcc\xac\x10\xfe\xb9\xce\xd4\x08\x2f\x56\x58\xda\x63\x71\x47\x23\x97\x97\x37\xe7\xdc\xbf\xe2\xe8\xb5\xd5\x0f\x91\xdf\xca\x83\xe7\xf9\x5f\x35\xd1\xad\x8d\xd5\x11\x44\x50\x2f\x3d\xf6\x72\x43\x26\x11\xf0\xe7\x66\xa9\x0d\xcc\x2a\x57\x39\xc8\x05\xd9\x5f\xe5\xb0\x41\xde\x9d\x7f\xb4\x7b\x44\x04\xaf\xc8\x03\xa3\xbd\x48\x04\xc7\x81\x7e\xbc\x5b\xdf\xef\x8a\xdd\x9e\x25\x0b\x50\x96\x6c\xa8\x93\x9b\x22\xb3\xc6\xff\x93\x6e\xaa\x65\x9a\x24\x0c\x0c\x84\x8b\x81\x0a\xce\xcf\x61\x81\xe0\xe4\xdb\x8e\x4c\xf8\xfc\xce\x7d\xe5\x59\xcb\xe8\xaf\xa9\xdb\x84\x99\x57\x09\x11\xa3\x88\x7e\x85\x0e\x50\x9c\xdb\x70\xde\xbc\x34\x77\xd1\x21\x75\x01\x4f\x79\xf8\x1b\xa1\x13\xd0\xb7\xb3\x35\x11\x8f\x85\xcf\x59\x99\x6f\x80\x67\x58\xeb\x90\x3c\xc4\x50\xf5\x2f\xee\x10\x2e\xfc\x01\x44\x1e\x9a\xe5\xfa\xe7\x4c\x23\x1d\xfd\x85\xeb\x6b\xad\x17\xd6\xb7\x0e\x93\x85\x84\xfa\xcb\x21\x72\xcb\x03\xbd\x5e\xa0\x7b\x7f\x0d\x37\x1f\xfa\x35\x1c\x0e\xe4\xef\xe9\xba\x4a\x3f\xd5\x43\x87\x46\x55\xe7\xd3\x9c\x53\xae\x86\x32\x98\x02\xe5\xc3\x85\xe9\x28\x3a\x29\x73\xca\xb8\xcf\x7a\xc7\xff\x0f\x91\xd1\xd4\x8b\x58\xab\xfd\xad\x65\x8d\x81\x2f\x07\x88\x16\x76\xbd\x22\x6b\xfe\x95\x7d\x7d\xf3\x0c\x41\x30\xa4\x48\x35\x4a\x6b\x94\x40\x5a\x41\x16\x50\xa9\xc8\xfc\x85\x11\x55\xec\x5a\x8a\x3e\x3b\x67\xae\x0c\x4b\x5c\xb8\x9b\xb7\x3f\xc8\x29\x74\xbe\x62\xda\x73\xf0\xe2\x30\x92\x93\x7d\x40\x5b\xa4\xaf\x6c\xab\x94\x65\xea\x43\xa6\x25\x3f\x44\x57\x08\x2a\x06\xac\x12\xb7\x5e\x88\xec\x68\x44\x87\xf9\x07\x63\x73\xfa\xb8\x89\x28\x59\xd8\xe8\xba\x43\x14\x23\xaa\x80\x5a\x22\x0c\xbf\xda\x43\x1b\x32\xb1\xe0\x31\x21\xf7\xfd\x4d\xe1\x85\x91\xf2\x50\x5c\xc0\xf5\xb2\xb1\xa7\x60\x5f\xbc\xc6\x37\x57\xb0\x7e\x29\x9f\xef\x5a\x2b\x73\x65\x23\x0c\x2e\x92\xa2\x59\x62\xc2\xe8\x01\x2a\xd3\xfa\x9e\xe9\x48\x82\x70\x96\x25\xba\x68\xc7\xb2\x13\x66\x4a\xe2\x53\x2b\x60\x9d\x7c\x9a\xa0\xe8\x3d\x49\x3d\xbc\xe7\x63\x2f\x35\x58\x0e\x06\xd3\x11\x1c\xed\x32\x0d\xd0\x19\x04\x41\xf6\x2d\x9e\x35\xf5\x0d\xe5\x9c\x27\x2f\xb0\x0f\x56\x8a\x00\xb0\x74\x6c\x33\xa9\xbd\x24\x90\xc0\x74\xb9\x1c\xdd\xc4\x87\xef\x2e\x45\xa0\xf0\x30\xe0\x8f\xdc\x18\x17\xbc\xa8\xa9\xce\x29\xd2\x92\x79\xe7\x55\xde\xbc\x28\xdf\xad\xc3\xc4\xd1\xb4\x58\x48\x6e\x3c\x8d\x0c\x43\x18\xe7\xe6\xf9\xeb\x5a\x36\x53\xb3\xf7\xc4\x95\x07\x07\x7c\xd5\xeb\x81\xf1\x0b\x88\x10\x7c\xc0\xf9\x31\x69\x32\xab\xe9\xb6\x4e\x88\x86\xd0\x68\x56\xa8\x5b\xe6\x3b\x0c\x2b\x47\x5c\x0a\xfc\xb0\x69\x44\x26\x86\x0f\xb2\x4b\x5c\x17\xab\x6a\xb7\x73\x3d\x5e\x64\x1b\xe7\x4f\xd5\xf6\xa1\xff\x18\xd2\xf9\xa4\x27\x70\xfb\x30\x75\x0f\x56\xf4\x85\x4e\x38\xd5\x8a\xef\x18\xa2\xa6\x1c\xbf\xb4\x9e\xe5\x76\xed\x97\x73\x7b\xc2\x8d\xf3\x26\x8a\x33\x41\x75\x51\x3d\x97\xaf\x00\x9c\xbb\xcf\xdf\xad\x50\x39\xd6\x9b\xb4\x6f\x70\x88\x67\xd9\xb3\xce\x0b\xf2\xf5\x69\xe3\xcf\xbc\xf6\x13\x6f\x88\x70\xd2\x52\x08\xb2\x1a\x3e\xdc\xb7\x33\x93\xdf\xcd\x41\x72\xc1\x40\x2c\x41\xf3\x6e\x3f\x82\xa4\xea\x6d\xcd\x89\x16\x86\xba\x66\xe1\x43\x20\xaa\x0e\x22\xba\x0c\x1e\xf0\x33\xd6\x62\xcd\xb8\x60\xcd\xfa\x3a\x40\xf6\xcc\x53\x2a\x08"}, +{{0x9b,0x6d,0x7e,0x28,0xeb,0x05,0x15,0x97,0x32,0x4d,0xce,0xb7,0xa1,0x89,0x41,0x24,0x67,0x25,0xe8,0x8d,0x53,0xab,0x2c,0x34,0x77,0x11,0x05,0x33,0x0c,0xf1,0xf4,0xae,},{0x88,0x72,0xa5,0x0b,0x5f,0xe3,0x62,0xf8,0xea,0xd1,0xd4,0x0e,0x20,0x45,0xf0,0xd4,0x0b,0x2e,0x7b,0x50,0xb5,0x9d,0x80,0x90,0xbc,0x47,0xad,0x68,0xeb,0xee,0x09,0xed,},{0xc6,0xdc,0x5c,0xa1,0xe8,0x56,0x00,0x15,0xb4,0x93,0xaf,0xe2,0x66,0x6c,0xcf,0x6f,0xef,0xa8,0x03,0xd8,0x52,0x6c,0x83,0x7f,0xe7,0xf1,0x23,0xc7,0x99,0x14,0x27,0xab,0x03,0x0d,0x7c,0x77,0x0e,0x45,0xf6,0xde,0x84,0x81,0x52,0x3b,0x94,0xec,0xe9,0x7f,0x3f,0x16,0x1c,0xf5,0xb8,0xc7,0xae,0xa3,0x9f,0x5a,0xd8,0x26,0xbf,0x8d,0x0a,0x02,},"\xd1\xe1\x98\x7b\xff\x65\xf6\x2a\xd6\x76\x24\xc6\x65\x79\x24\xf5\xd6\x73\xb7\x82\x4e\xbe\x40\x40\x26\xc0\x56\x2d\xed\x31\x43\x44\x0b\xe6\x37\xf9\x8c\x9e\x01\xa6\xaf\xdf\xa9\xa4\x7d\xd4\x9c\x7c\xba\x6e\x3f\xd2\x3e\x45\x52\xf7\x63\x2b\x14\x38\x0b\x27\xcd\x3e\x96\x06\xcc\xe3\x50\xf1\x52\xab\x12\x6b\xea\xd0\xa5\xd3\xbc\xe4\xd4\x20\x92\xd9\x34\xc8\xca\x33\x7e\x98\x7e\x11\xd8\x6c\xfb\xfb\xd2\xac\xc3\x22\x3b\xd1\x67\x44\xa9\x27\x72\x8f\x48\x53\x72\x17\x5c\xc6\x94\xdf\x30\xa7\x3f\x9d\x33\x76\x5f\xf0\x14\xef\x00\x8d\x58\x63\x21\x03\x38\xcc\x34\x82\xcc\x27\xea\x31\x7e\xec\x92\x1b\x0c\x56\x8c\x38\xab\x27\xc4\xa5\x64\xe8\x02\xb1\xb9\x46\x68\xc6\x51\xe2\x0a\x0b\x55\xf3\xa7\x9d\x21\x5f\xc3\xa0\xd0\x49\x04\x01\x09\x32\xc4\xcc\x68\xc2\xa9\xe7\xd0\x0e\x5d\x38\xd8\x2d\xf5\x52\x06\xba\xb9\x5c\xf6\x97\xbe\xbc\x72\x06\xee\xde\xf6\xfd\x18\xd9\xa2\x0c\x2c\xbb\x28\x5b\x00\xef\xa7\x69\xa0\x8d\xab\x2b\x3a\xba\xdf\x00\xd1\x98\xb4\xf1\x92\xdd\x44\xbc\xb9\x14\x31\x82\x3a\xe6\xfd\xf9\x84\x58\xec\xa3\x9c\xd2\x92\x63\xf0\x99\x93\x03\xe7\x0d\xc6\x94\xfe\x01\xc5\x3a\x11\xc1\xd1\xc3\x4c\x1e\xe5\x06\x8a\x20\x1d\xbe\x7e\x10\x08\xd7\x64\x35\x89\x68\xb4\x02\xaa\x39\x85\x49\x50\x7f\x7b\xd1\x85\x08\x00\xe4\x11\xb1\xc4\xe2\x8d\xdc\x04\xa8\x59\xe1\x79\xbe\x8a\xd7\xe6\x67\x0e\x50\x9d\xb0\x27\xad\x7e\x51\x7e\x44\x25\x95\x4f\x5a\x80\x74\x14\xa6\xda\x26\x7a\x76\x4e\x71\x2a\x99\x84\x65\x06\x49\x82\xd8\x51\xa2\x65\xea\x3c\x4d\xfb\x74\xf9\x92\xa7\xcc\xcd\x9a\x82\x68\x7f\xa6\x1c\x32\x2c\x4f\x58\x9e\x86\xb8\x82\x52\x13\xbf\xa9\x51\xda\xe6\xaf\x35\x4a\xce\x18\xf0\x73\x99\x5a\xdc\x95\x83\x9d\xac\x01\x65\x51\x1d\x61\x75\x37\x91\xa5\x3e\x48\xe3\xa8\x27\x3d\x44\x82\x3d\x25\x96\xf2\xa2\xdb\x2e\x5f\x1a\xe5\x97\x22\x1b\xa7\xf3\xeb\xaf\x4a\x7b\x28\x88\x39\x50\x02\xbd\xaf\xf5\x1f\xa5\x4b\xfb\x97\x9d\xe1\x03\x14\x04\xca\x77\x89\xfe\x09\x5d\x4d\x17\xf0\x7a\x35\x55\x6b\x10\xfe\x8e\x14\x17\xc8\xa6\xa6\x31\xc2\xed\x36\xcb\x7a\x0e\x61\x81\x77\x62\x89\xc3\x44\x81\x4d\x42\x13\x1a\x73\xb1\x2f\xaa\x35\xd7\x78\x14\xc6\x81\xa6\x01\x37\x4b\xa7\x1c\xb9\xad\x53\x15\xfa\xd4\x2d\x3a\xcf\xc7\xc1\xd6\x28\x81\x02\x56\xda\xf7\xd8\xc3\xc9\xa2\xe5\xbd\xcf\xb7\x70\x08\x2f\xa6\x38\x16\x89\x58\x52\x3a\x1c\x3b\x03\x5d\xbc\x6d\x5a\xdf\x26\xdf\x89\xa7\xcc\xab\xed\x3e\x7d\xd3\x77\xc1\x6d\xa8\x41\xf1\x3c\x68\x94\xd4\x3c\xeb\xb4\xe3\x90\x22\xf1\xcc\xec\x22\x74\x44\x5c\x78\xb3\xad\xc7\xbb\xf7\x0d\x89\x0b\x80\x23\x6c\xc4\x46\x8f\x95\x69\xc5\x9a\x7e\x33\xb5\x70\xe6\x70\x38\x0d\x24\x4e\x4e\x31\x0e\x11\xc3\x92\xf1\xe3\x34\x05\x4b\x92\xc8\x38\x6c\x16\x1c\xe0\x41\x09\xb0\x37\xbd\x62\x8d\x91\x9d\xcb\x62\xda\x14\x35\xbf\x94\xe8\x8b\x0a\x88\x46\xd4\x86\xd1\x67\x78\xf7\xa3\xb8\x80\xe6\x60\xf4\x41\xfd\xf8\x6e\x56\xb8\xaa\x06\x61\xf5\x5a\xae\xce\x27\xf9\xdd\xaa\x0e\x2a\x22\xc2\x15\xb0\x40\x53\x97\x26\xb9\x85\x39\x15\xa1\x59\x2d\xff\xea\xe3\x2d\x7b\x5b\x67\xeb\x62\x05\xbb\x0b\xd7\x27\x9f\x78\x8d\x5f\x83\x3c\x40\x66\x78\x0c\xa0\xa4\x2d\x3e\x4e\x1a\xa2\x2b\xd0\x6b\xb5\xee\xd8\x9b\x94\x13\x77\x1e\xca\xb6\x44\xca\x72\xd1\x29\x1d\x00\xf7\x40\x90\x1a\x73\x11\xdc\x03\x67\x15\xd2\x3e\xbd\x9a\x59\x89\x16\x28\xf0\xd8\x7e\xd4\x89\x50\x2f\x06\xd7\x5b\xbd\x11\xcd\x16\x02\xa3\x5e\xe7\xe1\x33\x35\xd6\xa1\x44\xb0\x88\x30\xe6\x69\xc0\x2e\x65\x2f\x3f\x10\x0d\x39\x3e\xf9\xb4\xac\x05\x32\x14\x39\xbc\xe6\xce\x36\xff\xc5\xab\xca\x89\x0b\x87\x96\xcc\xb5\xe1\x63\x03\x55\x9c\x5d\x91\x17\xf0\xf3\x1d"}, +{{0x70,0x09,0xed,0xd0,0x79,0x50,0x96,0xed,0xc4,0xfe,0xd5,0x5a,0x17,0xcc,0xf4,0x84,0x13,0x1e,0x60,0x8c,0x6d,0x5d,0x66,0x96,0xbf,0x33,0x76,0xe2,0x69,0x24,0x95,0x9b,},{0x77,0x57,0x4b,0xf0,0x69,0x52,0x71,0x45,0xe7,0x2d,0x3e,0x85,0xce,0x7d,0x4f,0xcd,0x67,0x1a,0x33,0xe0,0xa7,0x1e,0x6b,0xf0,0xda,0x7e,0xa4,0x71,0xdd,0x6e,0x86,0xa4,},{0xb7,0x01,0xb8,0xf9,0xa4,0x34,0xe0,0x6d,0x71,0x9a,0xd2,0x5d,0xcc,0x54,0x06,0x0c,0x79,0x86,0x64,0x7f,0x44,0xf3,0x88,0x4b,0xcb,0x6e,0x5e,0xe1,0xd7,0xa4,0x46,0xcc,0x26,0x5c,0xec,0x02,0x9b,0x53,0x7d,0xa7,0xf2,0x52,0x33,0x26,0x55,0x8a,0xc9,0xba,0x34,0xf4,0xcc,0x2a,0x97,0xcc,0xa3,0x45,0x2e,0x70,0x56,0x2e,0x7a,0x8f,0x55,0x04,},"\xb1\x2c\x12\x47\x05\x39\x54\x7c\x2d\xe6\xbc\x4e\xea\xc7\xb6\x3e\x50\x8e\xd7\x10\xf3\x56\x37\xd9\xfd\xd2\xdc\xca\x32\x2a\x7a\x50\x71\xda\xb2\xb2\x84\x5e\x30\x79\x28\x06\x03\x5c\x9f\xcd\xaf\xe2\x78\x3e\x3b\x67\x7d\x6b\xe5\xaa\xc7\x0b\x33\x91\x0a\x2b\x95\xe8\xb5\xd5\x9b\xda\x61\x59\x35\xa4\x17\xb7\xae\x19\xa7\x85\x37\x74\xe8\x9a\x12\xaa\x54\x7b\x41\x92\x97\x9a\x01\xef\x6e\xf3\x2a\x40\xde\x79\xd6\x80\x05\x7a\x83\xa0\x74\x61\x7c\xa6\x50\x1f\x59\xe7\x35\x64\x92\x7c\x38\xb5\x8c\x19\x58\x5a\x2c\x03\x65\x9c\x02\x6e\x4d\xe3\x80\x6d\x6c\x1c\xa8\x95\x8d\xee\x47\xbc\xb8\x89\xe7\x6d\x2c\x3a\x9a\xb5\xb8\xb6\xaf\xb2\xe8\x42\x29\x80\x56\x56\x7b\xf9\xb5\x89\x57\x41\x54\x83\x33\x62\x33\xef\x49\x20\xfa\x57\xf4\x96\xe1\xf0\x34\x8c\xca\x20\x36\x64\x96\xfa\xb3\xa7\x5b\xf4\x21\x4e\xce\x47\xa4\x5f\xea\xa1\x39\x2d\xb3\xf2\x54\xd9\x6a\x7f\x37\x40\x2c\x98\x11\x14\x0d\x73\x58\xb4\xef\x8f\x20\xa2\x98\xee\xef\x90\x4e\x37\xd6\x8f\x37\x8d\x33\xcb\x96\xd0\x0c\x03\x10\x9f\xc8\x3f\xd0\x6a\x87\x6c\x92\x48\x2f\x61\xab\x79\x14\xeb\x7c\x2e\x5e\x84\x06\x6e\x0e\x91\xe2\x1e\x42\xe9\xbe\x23\xdf\x12\xb5\xc7\x47\x97\x3c\xb8\x64\x42\xc3\x22\x91\xd3\xd1\xae\x71\x9b\x36\xa6\x2f\xaf\x3a\xba\xa2\x05\x3a\x31\x3f\x62\x5d\x85\xc5\x1a\x51\x98\x57\x19\x15\xef\x8a\x2b\x19\x9b\xa3\x7d\x25\x88\x45\x75\xba\x1b\x72\x84\x4c\xab\x43\x28\xb5\x7f\xab\x1e\xc9\x74\xee\x8e\xa1\xdf\x7c\xa9\xc7\x8a\x4d\x3a\x03\xbc\xb0\xab\x41\x69\xbf\x06\xa3\xa4\x38\xd9\x56\x6c\x6c\x50\x1d\x8d\x9c\xcc\xcb\x1a\xc2\x6b\x4d\xa4\xae\x1a\x9d\x8e\x8b\x9d\xf6\x62\x82\x1a\xd9\x75\xc9\xb0\x15\xfe\x26\xf6\x89\x8d\x22\xab\x91\x2f\x0e\x40\x5a\x5b\x27\xcf\xd3\x9d\x65\x7d\xcd\x92\xcd\xeb\xe6\x79\x19\x02\x71\x34\x84\x40\x6d\xdd\xce\x71\x18\x87\x31\xe4\x43\x19\x38\x1a\xf2\x7d\xaf\x76\x79\x22\x73\xb8\xc3\x52\x51\xd1\x1b\x83\x6a\xfe\x8b\x3c\xe9\xb4\x02\x73\xf6\x91\x5e\xbe\x6b\xc9\x5a\x75\xbb\x94\x1a\x42\x92\x09\x86\x7f\xba\x87\x64\xbf\x6c\x40\xdb\x6e\xec\xb4\xf2\x17\x47\x83\x7c\xf6\xae\x7f\xbf\xe3\x6d\x50\x23\xdf\x7f\xce\x2c\x0c\x3c\x57\xaf\x28\x98\x88\x53\x13\xc5\xc4\xbd\xa3\x5c\x7d\xa6\xcb\x29\x93\x2f\xb1\x99\x1f\x62\xbb\xb0\x80\xb3\x2e\x20\x50\x61\x93\x11\xae\x69\xab\xb3\x02\x2d\x91\x3f\xa9\xea\xbd\x5d\x5c\xb4\xdc\x54\xd7\x5d\xca\x63\x8c\xda\x9a\xf3\x31\xc0\xcf\x4d\x20\x07\xb6\xca\x39\xf6\x55\xa6\x1c\x01\x03\x9f\x12\xa4\xb9\x78\x2b\xc3\x9a\xec\x4d\x22\xef\x00\x93\x38\x8d\xd7\xd5\xb5\x6d\xfb\x8a\x7f\x9d\x86\x69\x00\x4e\x28\x78\xdd\x8a\x6d\x76\x85\x7c\x08\x45\x24\x50\x68\xfe\xe1\xc5\x31\x96\x31\xe7\x8d\x37\x85\x16\x5c\x70\xaf\xd6\x52\x99\x30\x13\x78\x55\x1e\xbf\x61\x35\x84\xc6\xa7\x62\x0a\x0e\x3b\x67\x79\xf3\x8c\x09\x40\x06\x24\x97\x00\x8e\xb2\x33\x87\x08\x68\xc2\x1c\xcc\xac\x23\x95\x01\xb6\x3b\x74\x9a\x85\x60\x2c\x28\xa0\x95\xca\xfc\x74\x9b\x05\x11\xa6\xc8\x78\xed\xb3\xb7\x80\xea\x17\x4d\x07\xb1\x21\xe3\x15\xa8\x26\xdd\xa6\xec\x8d\xc5\x43\x63\xe2\xcd\x2e\x63\x05\xa1\x94\x82\x5c\x0e\xa9\x0e\xfd\x7a\x9f\xd8\x9c\xd9\x7b\x99\xc4\x30\x0b\xd3\xbf\x93\x53\xd8\x2f\xbc\xce\xea\x71\xb4\xee\x3f\x1a\xae\x95\x39\xb4\xcc\xe9\x0c\xa4\x77\x59\x7c\x17\x4e\xf2\x0f\x4b\x9f\x4e\x62\xd0\x9a\x57\x0d\x31\x35\xaa\xbe\xe9\x55\x1f\xa6\x09\x83\x95\x8c\x0b\x7b\x8c\x37\x44\x55\x3e\xe1\x4e\x7f\x3c\xd1\x03\xa1\x92\x51\xc9\x9b\xf6\x38\x4a\xbb\x60\xa7\x6a\xfc\x66\x58\xb8\x0d\xfc\x51\x10\xad\xc4\xc7\x32\xfe\x0e\xe3\x29\x33\xfb\x28\x48\x28\xe0\x08\x88\x7a\xef\x80\xf6\xf8\x13\x34\x04\x46\xc0\x21\x7c\x12\xee"}, +{{0x12,0xfe,0x8e,0x5c,0xe2,0x0c,0xaf,0xaa,0x32,0x79,0xda,0x7b,0x34,0xaa,0x87,0x75,0x2e,0xad,0x67,0x9f,0x15,0x61,0x28,0xaa,0xef,0xb4,0xaf,0xa5,0xdb,0x4f,0x2a,0x6f,},{0xe7,0x7f,0x44,0x20,0x6b,0xb0,0xc4,0xc5,0x9a,0x28,0x70,0xcf,0xc2,0xec,0xac,0x63,0x36,0x2d,0xee,0xcb,0xe8,0x11,0x5d,0xe5,0xcb,0x1a,0xfc,0x2d,0x9a,0x3d,0x47,0xf1,},{0x04,0xea,0xf9,0x00,0x96,0x6e,0x09,0x92,0xd3,0x6e,0x3c,0x22,0x0a,0x4b,0xd4,0xd8,0x2b,0xcc,0x6e,0xb9,0x98,0xed,0x05,0x1d,0xbc,0xb9,0x16,0x0b,0xcd,0x35,0x74,0x09,0x73,0x6b,0xcf,0xf7,0xe6,0x63,0x0e,0x96,0xf5,0x53,0x8a,0xec,0xa6,0xab,0x8b,0x0d,0x0b,0xd8,0x2c,0x0c,0xd7,0xc4,0x54,0x99,0x17,0xfe,0xbb,0x9c,0xba,0xda,0x08,0x0c,},"\x6b\x80\xcc\x6f\xbb\xd3\x32\xf8\xc6\x19\x7c\xdf\x2e\x6d\xc1\x9a\x21\x30\xfa\xa2\xec\x93\x8e\xf5\x58\xb8\x84\xba\x4f\xa5\xe1\x13\xe5\xb3\xe4\xb1\xaa\xf5\x1b\x69\x5f\x13\xef\xfe\x13\xf7\x7d\x39\xca\xb3\xc0\x7d\x04\xd6\x6d\x43\x0d\x99\x74\xb1\xda\x3d\x39\xdf\x12\x78\xc0\x0d\x6b\xcb\xfd\x4b\xae\x75\xb8\xc0\x76\x40\x4d\xbb\xb8\x34\x48\xfb\x49\x3d\xf6\x70\x00\xf9\x7d\x24\x7e\x8f\x23\xdc\x08\x1f\xce\x99\x2b\x65\xa2\x1b\x35\xd7\xbd\x7f\xa7\xdc\xcc\x54\xa5\x60\xaf\xd1\x4b\x1e\xc4\x36\xc1\x09\x46\xf6\xaa\x59\xea\xe1\xbe\x3e\xcf\x31\x1d\xef\x51\xe4\x6b\x6b\x4d\x1d\x08\x0d\x17\x84\xb2\x33\x4b\x80\xcf\xba\x72\xcd\x93\x1f\x55\xec\xd2\x98\xb0\x5d\xc8\x36\xab\x12\xd0\xad\x8b\x5d\x6e\x9b\x1e\x3c\xea\x3d\x84\x33\x68\xee\xf1\x9f\x5c\x14\xc6\xbb\xad\x94\x14\xcc\x7a\x4d\xb6\xa7\x26\xe4\xfc\xae\xd4\x44\x40\xa0\x19\xfe\x12\xa6\x05\x73\x40\x3c\x0e\x66\x2d\xc9\x02\xd1\xc8\x73\xff\x30\xc9\x31\xba\x7e\x43\xa3\xb3\xbf\x71\xd5\xb0\x94\xea\x50\x49\x71\x64\x7c\xa9\x43\x56\xf0\xa5\x3e\x44\x4b\x4c\x00\x8e\xe5\x97\x72\x04\x22\x1b\x40\x0d\xee\xc3\x7f\xc2\x73\x45\x25\x45\xf8\xf2\x18\xbe\x98\x87\x25\xbc\x38\xc8\x5d\xf2\x12\xea\x73\xdc\x0b\xc7\xcb\xba\xc9\x07\x98\x2f\xef\xad\x68\x0f\xbd\x97\x5c\x20\x93\xa7\xfe\x8e\x6b\x37\xc1\xcc\xed\x87\xf8\x1d\xaa\x57\x29\x1a\x5a\x18\x47\x6d\x11\xa1\x8e\xc4\xb5\xcb\xce\x5d\x55\xac\x9b\x62\x4b\x04\x84\x30\xf2\x54\xf6\x71\x07\x85\x06\xe6\x98\x9d\xf7\xc0\x92\x56\x52\x50\x39\x08\x5a\xb7\xc1\x30\xc2\x40\x00\x4a\xbb\xb3\xaf\x6b\x48\x1c\xc1\xa0\x61\x7e\x57\xe3\x88\xee\x4b\x1f\x05\x2f\x34\xa0\x03\xfe\x6b\xb2\x02\xcb\x87\xd2\x74\x1b\xd8\xe3\x45\x4c\xa7\x3d\x2f\x61\x20\x11\xec\xc7\x4d\x88\x34\x35\x10\xa6\x3c\x93\x13\xdd\xc3\x6c\x25\xd3\xfb\x03\xe1\x88\xf5\x60\xbd\x02\x9c\x80\x15\x85\xce\x55\x29\x88\xdc\x55\xb7\xd8\x52\x2a\x33\x96\xc0\x1d\x5e\x71\x5a\xe2\x6c\x62\x2c\x64\xfe\xd5\xb9\x8e\x9c\x55\x9e\x4a\xa7\x8d\x1e\xd3\xb7\xb8\x90\xd4\x77\xec\x8c\x50\xa0\xff\x10\x7a\x3f\x83\xb0\x7b\xd3\x5e\x9c\xe9\xa0\x8b\xcf\xc0\xf1\x68\xee\xc7\xaa\x31\x1f\x71\xc6\x6a\x71\xce\xb9\xd5\xa2\x19\x9a\x14\xbe\x36\x86\x5c\xa8\xd0\x7e\x18\x6b\x13\x92\xb9\x29\x0c\x57\x80\x04\xd5\x84\xf1\x91\xc8\x2a\x53\xd8\x50\x89\x0b\xcc\x0d\x12\xdf\xf8\x40\xe0\x43\xdd\xdc\x2e\x67\x0c\x83\x60\x20\x92\x4f\x58\xc0\x44\xb2\x18\x76\x3c\xa6\x19\x82\xbc\x33\x2d\x24\x7b\x2a\x00\x8a\xb5\x70\xb6\x56\x5a\x06\x89\x2a\x26\xcf\xb0\x85\x3d\x79\xda\x28\xef\x8b\x91\x0a\x93\x29\x54\x4b\x79\x2a\xe4\x45\x6b\xa7\x76\x50\x66\xb9\xd1\xb4\xa3\x00\x21\x04\x48\x66\x0a\xe4\x8b\x50\x44\x41\x01\x7c\xdd\xd1\xf6\xf0\x09\x38\xb1\x07\x2c\x8a\xb8\x24\xad\xfe\x8a\xe3\x49\x23\xc8\x2e\xec\x75\x4b\xee\x1a\x65\x50\xab\x1d\x3d\xa0\x86\xe3\xae\xbb\xf2\x11\x69\xc4\x44\x69\xe0\x3b\xba\xe0\xd7\x2c\xe8\x63\x45\x77\x84\xcf\xe1\xdf\xc2\x76\xf1\xaf\xad\x9e\xe5\x3e\xba\xb5\xa3\xc6\x57\x2e\xb1\xca\xe0\x99\xa4\xa5\xfe\x19\x31\x92\x90\xe6\xa1\xb8\xb0\xe7\x54\x1e\xd7\x35\xb3\xf2\x1b\x1e\x2c\x75\x09\xf8\x7f\xd1\xfe\xd0\x00\x07\x47\x9b\x3c\x1b\xb7\x84\x32\x46\x63\x02\xd2\x46\xd8\xd0\x31\x99\x63\x07\x26\x0a\x0c\x41\xa0\xe3\xec\xd1\xe7\xfd\x83\x4d\xac\x11\xa1\x3e\xb0\x36\xb3\x9c\x36\x99\x66\xfd\xef\x39\x4c\x18\x3e\x54\xe7\xb0\xcb\x3d\x0c\xeb\x19\x8b\xd0\xe6\x6c\x00\xd3\x8d\xb7\x03\xaa\xce\x30\xcb\xbd\xab\x36\x9d\xfd\x1d\x9e\x51\x4d\x09\x68\xf1\x00\xc9\xf0\x7c\x31\x50\x89\xad\xb3\xad\x02\xe5\x9c\x04\xb9\xbe\x46\xe9\x9f\xbf\x5a\x62\xc6\xbb\xec\xdf\xf5\xb3\x81\xe5\x51\x27\x82\x4d\xdb\x18"}, +{{0xee,0x9b,0x6c,0x2e,0x0c,0x9b,0x01,0x47,0x2c,0xe3,0x2d,0x54,0xd1,0x76,0x2a,0xb0,0x30,0x33,0x17,0xd7,0x6d,0x3a,0xa7,0x8f,0x5e,0x08,0xa9,0x02,0x4c,0xa1,0xe0,0x83,},{0x01,0x6d,0xf0,0xf7,0x17,0xbc,0xb7,0xad,0xf6,0x26,0x95,0x8d,0x83,0xbf,0x8a,0xa3,0x25,0xc7,0x05,0x18,0xc6,0x8b,0xc7,0xef,0xd8,0x42,0x53,0xb7,0x5d,0xb0,0x87,0x88,},{0x4b,0x00,0x1d,0x96,0x42,0x83,0x5d,0x72,0x13,0x8d,0x68,0x01,0x98,0xe6,0xaf,0x70,0xb5,0xde,0x7a,0xf0,0x15,0x13,0x1e,0xa7,0x26,0xf4,0xe5,0x1b,0x5e,0x8b,0x6d,0x48,0xc2,0xa6,0xca,0x8e,0x87,0x09,0xcc,0x82,0x22,0xa5,0x04,0x7c,0x09,0xa6,0x6e,0x51,0x8a,0xc5,0xe8,0xb6,0xe5,0x35,0x48,0x94,0x82,0x61,0xf0,0x70,0x1f,0x68,0x73,0x08,},"\x77\x2c\xc2\x5c\x3b\x69\xbb\x3f\xf5\x65\x56\x64\xef\xa4\x78\xac\x41\x4a\xdf\xae\xa7\x0a\xc4\xa2\xa8\x87\xed\x39\x68\xc5\x4d\x34\xdb\xf1\xbe\x32\xcc\x9a\x9b\x54\x20\xa4\xad\x3c\x9a\x87\x7b\xc8\xcc\xec\x94\xad\x47\x3a\xa7\xa3\xc7\xde\x08\xa0\xfd\xb5\xed\x1e\x89\x87\x2b\xe7\x81\x70\xbe\x22\x1d\x27\x97\x76\xbb\xc6\xed\x9c\x5a\x67\x16\x89\x80\xd5\xea\xf8\x95\xe1\x34\x0f\x5d\xfa\xa3\xdf\x62\x2d\x65\x44\xb3\x99\xd7\x49\x45\xfd\x13\xbb\x11\x73\x62\x1e\x05\x61\x51\x46\x40\x13\x7a\xa7\xbc\x9c\xb7\xde\xbe\xff\x2c\x62\x69\x77\xd4\x47\x26\x3b\x7e\x57\xd4\x3d\x69\xef\xb2\x30\xcd\x25\x86\x5e\x4d\x92\x48\x28\xf5\xe3\x6f\x96\x4e\x40\x3e\x34\x93\xf3\x0d\x6d\xfe\xa6\xca\x3b\x78\x10\x75\xb5\xe3\xb2\x5c\x05\xac\x50\xe5\x55\xf1\x5b\xa1\x2b\x0e\x05\x9b\xff\x99\x64\x84\x12\x9d\xb6\xea\xfd\x88\x99\x3d\x6f\x0b\x7e\xcd\x15\xdc\xe2\xfc\x99\xf8\xb8\xe4\x35\x16\x35\x2d\xdb\x46\x1a\x04\xb9\xff\x34\x86\x45\x2e\x6a\xa6\xa5\x4b\x2d\x10\x62\xa7\x71\x42\x50\xcd\x2a\x88\xff\x6c\x4c\x17\xb6\xcc\x66\x52\xd8\xc5\xac\x27\xd4\x44\x3a\xeb\xf3\xd5\xfb\xaa\xee\x45\x21\xec\x76\xf0\x41\x3d\xb6\x44\x21\xec\x8d\x69\x49\x62\x67\x25\xfe\x56\x16\x0a\xb3\x07\xc0\xe7\x39\x06\xc4\x51\x55\xef\xab\xb4\x72\x22\x02\x1f\x22\x0d\x32\xbd\x3d\xb0\x71\x2a\xbd\xe2\x59\x9e\xa4\xff\x79\x97\x17\x81\x1d\xcd\xf8\x18\x2d\xf6\x71\x6d\x2a\x03\x8a\xee\x15\xd7\x78\xda\x55\xac\x20\xf0\x1f\x25\x30\x9c\xea\xd5\xb5\xb7\xb2\x23\x22\xe1\x82\x8e\xa7\xc9\x1a\xe6\x66\xf2\xdc\xd6\x84\x07\x31\x48\xe3\x1b\xb2\x24\x7d\x5f\x93\x50\x6e\xa8\x08\x52\x27\xad\xc9\xae\x19\x82\xe9\x50\xf0\x06\xa9\xda\x15\x8b\x9c\xec\xff\x89\x29\x76\x1c\x84\xf9\xd9\x76\xfd\xcd\x31\x7f\xfe\xd3\x6c\xbf\x6a\xcd\xa3\xe5\x0c\x9b\x73\xbd\x2c\x80\x85\x40\x9d\x11\x9b\x64\xce\xd7\x34\x9a\x26\x74\x26\x2a\x83\x2b\xec\xb0\x3c\x2e\xdc\xca\xc0\xec\x54\x12\x4e\x82\xf8\x10\x18\x17\x92\xda\x49\xea\x10\xbd\x94\x1f\x98\x95\xa0\x69\x59\xfd\xe0\xd3\xb0\xae\x84\xc3\x9d\xf0\x53\x90\xab\x33\xc3\x6c\x79\xca\x22\xe6\x59\x4d\x7f\xc6\xe3\xf8\x69\x22\xd7\x8e\xb7\xf5\xc2\x54\x95\xd8\x22\xa3\xb4\x10\x51\xb2\x4e\x57\xa7\x6f\xcf\xc1\x65\xcd\xe6\xd0\x96\xcc\x7b\x7e\x9d\x05\x5f\xe8\x64\xd5\x29\x42\xd6\x29\xa8\xac\x26\x1b\xe1\xdc\xd3\xa2\x1f\x89\x5f\x49\xb6\x7e\xe4\x7e\xab\x7c\xf1\x64\x4d\x57\x1d\x5f\xf3\x8c\x17\x9f\x5c\x6a\x54\xa3\x61\x2f\xb3\x47\x53\x41\x2a\x1b\x95\xbf\x62\xff\x31\x79\x80\x4f\xfb\xb9\x90\x51\xf2\xb0\x80\x56\x3a\x4a\xe0\xf2\x7c\xf9\x96\xea\x8b\xe3\xba\xe0\xa4\x33\x9d\xcc\xdf\xf6\xb6\x67\x15\x59\x26\x6e\xaf\xf4\xef\xf6\x82\xb8\xde\xe8\x9c\x9d\x2d\x45\xac\xdb\xec\x4a\xa6\xce\xcd\xbd\xb1\xd2\x84\x60\x9e\x65\xef\xb7\x7b\xb8\xf1\xa5\x1f\xc4\xd4\x56\x8a\x70\x5f\xb9\xc9\x7b\x23\x03\xc1\x46\x7d\xff\x8c\x8c\x5e\xe2\x75\x59\xb9\x3a\xd1\xc5\xb9\xc5\xc6\xc7\xc5\x29\xfa\x8c\x55\xc7\x5e\xbb\x59\xb2\xa8\x18\xaa\x9b\xda\x1e\x9e\x79\xbc\x66\x02\x97\x72\xf8\xae\xa1\x1b\xad\xd3\x22\x65\x65\xd5\x4f\xd0\x1b\xda\x8c\xb2\x70\xe7\x0d\xc9\x33\x9b\x46\x90\x0b\x58\x18\xe9\x32\x07\x5b\xe6\xc2\x8e\x73\xa1\x91\xd0\x2c\xbd\xc7\x45\x4b\xe1\x23\x87\xb0\xd4\x7a\x1a\xb1\x42\x32\xd2\x34\x2a\x6f\x15\x18\xea\x97\x09\x8b\x81\x5a\x1c\xa3\xf9\xc7\x0b\x25\x72\x2b\x1b\xcd\x7d\xac\xda\x63\x56\x22\xfc\x8e\x72\x95\x9f\x57\xf7\x67\xea\x56\x3d\xa4\xc1\x58\xee\xf7\x20\x01\x09\xf6\x14\x16\xc2\xe7\x04\x39\x92\x30\x62\x43\x7b\x1d\x08\x2a\x8c\x7f\x43\x94\x71\x3c\x1b\x7b\xa0\x58\x7b\x84\x1c\x11\x44\x75\xee\x3f\xf0\x59\xdf\x8c\xfa\x12\xa3\x21\xd9\x01\xcb\x47\xf5"}, +{{0xa3,0xd2,0x35,0x05,0xd0,0x7c,0x5f,0x93,0x7f,0x13,0x63,0x9d,0xbd,0x81,0x8e,0x85,0x14,0x52,0x34,0xee,0x70,0x17,0xec,0xee,0x86,0x36,0xc7,0xba,0x76,0xeb,0xef,0x5b,},{0xfd,0x7f,0xdb,0x3d,0x02,0x2b,0xa3,0x6e,0xad,0xfe,0xd0,0xda,0xaa,0xe5,0xbf,0xf0,0x45,0x05,0x40,0x3f,0x17,0x14,0x73,0xe4,0xd3,0x61,0xee,0x8d,0x15,0x0a,0x0e,0xb4,},{0x67,0xa6,0x67,0xee,0x0d,0x62,0x54,0xca,0x0a,0x8f,0x21,0x25,0x82,0xc0,0xcb,0x8b,0x6e,0xd9,0x7c,0xc9,0x67,0xdb,0x02,0x12,0x96,0xad,0x6a,0xa9,0x9f,0x0a,0xd3,0xa9,0x44,0x97,0x8c,0xfd,0xaf,0xf1,0x3f,0xe5,0xf8,0xc6,0xe8,0x8c,0xbd,0x83,0x1a,0x54,0x73,0xd0,0x74,0x2e,0x37,0x34,0xb3,0xe2,0xdf,0x00,0xff,0x32,0x40,0xa5,0xde,0x02,},"\xbc\x29\x8e\xd6\x98\x92\x90\x40\x28\x72\x5e\x21\xb1\x14\x46\x2d\x89\xd8\xc0\x06\xdc\x88\x4b\x17\x87\x56\x83\x8a\xf4\x95\x4f\xf0\xf1\xb7\x95\x17\x30\x7a\x25\x8a\x0e\x76\x81\xe8\x79\xac\x47\xd7\x92\x02\x30\xb0\xcc\x1d\x66\x17\x1e\xb2\x14\xd7\x7c\xd9\x7f\x61\x7c\x40\x5e\x6c\x21\x72\xfc\x58\x9f\x16\x25\xcc\x5e\x1b\x59\x31\x10\x53\x1f\x6e\xb5\x3f\x1e\x6f\x48\x6d\x19\x64\x61\x24\x47\x75\x0a\x04\x1f\xe5\x1b\x33\x2e\xb3\xfb\xc7\x11\x61\x6c\xe3\x5f\x04\x04\x42\xb4\x31\x63\xb8\x0b\x75\x1e\x21\xec\x12\x45\xf1\x2e\x48\x83\xc7\x9d\x3b\x41\x32\x82\xc6\x9b\xfc\x6a\x46\x5d\x1e\x78\x96\xba\xb0\x38\xdc\x89\xb4\xcf\xc0\x32\xfc\xcd\xfc\x87\xb0\x7f\x06\x11\x0e\x1f\x50\x6a\xcc\xa8\x15\x7a\x32\x25\x43\xbf\x1e\xd8\x90\x67\x27\xf2\x8d\x0d\x68\x9b\xcd\x7d\xd3\xdf\x85\x93\x52\x04\xa9\x04\xab\x3f\x7a\x0d\x99\xc1\x6e\x5a\x54\x2c\xc2\xbc\xde\xbf\x5b\x50\x2d\xba\xbe\x33\xb9\x72\x48\x0e\x02\xe7\x1a\x43\x8a\x19\x80\xa8\x76\x6f\x10\x8b\xd8\xad\x51\x10\x42\x23\x99\x4d\x9b\xfb\x3c\x3a\x4b\x7a\x59\x23\x8c\xe2\xef\x7d\x72\x88\x38\x3f\xfb\xf2\x91\xe1\x60\x2b\x38\x4a\xf6\x07\x00\xd7\xda\xf0\xe8\xfe\x60\xf8\xca\xed\xe4\x3d\xb0\x6b\x3f\x4c\x8c\xff\xf7\x49\xae\xaf\xa4\x6f\xc6\x1c\x49\xb2\xd5\xa4\x12\x04\xcf\x86\xf0\x49\x25\x4d\x80\x9e\x94\x98\xaa\x9d\x4c\xfd\xb9\x4a\xcb\x2b\xab\xfc\xf7\x86\xdd\xfb\x03\x69\x15\x16\xb3\x83\x8b\x0d\x4f\x20\x1c\xb2\x59\x1e\xdb\xb0\xb0\xf6\x74\xe1\xe2\x82\x03\x16\xb7\x2e\x81\xb4\x8c\xc5\xa6\xb2\x93\x38\xbc\x36\x68\x1f\x8f\x7d\xca\x43\xee\x6c\x0b\xd2\xe4\x02\xaf\xbf\x96\x77\x97\x51\x64\x53\xbc\x01\xbe\x86\xbf\x42\x29\x9d\x1b\x73\x6a\x0d\x97\xbb\xc9\x22\xf5\xa7\x8a\xf2\xdf\x42\xe6\xf8\xc2\x8e\x95\x3f\x2c\xea\xda\xff\xc5\xe9\x30\x64\x04\x1e\x42\x5a\xd6\x97\x5f\x88\xc7\xaa\xdf\x81\xc3\x68\x69\x1a\x58\x1e\x88\x5f\x2a\x6b\xa7\x2e\xd6\x8b\x8f\xef\xbc\xd6\xce\x36\x86\x26\xd4\x48\x92\xa2\x02\x70\xb5\xf7\x09\xc2\xe3\x4b\x83\x35\xd4\x2e\xeb\xd6\x7a\x24\xdf\x73\xf4\x54\x55\xc4\x19\x44\x18\x7b\x66\x92\xf0\x54\xb2\xfc\x95\x91\x37\x3f\x19\xfc\x71\xaa\x7f\xa2\x7d\xf6\x00\x6a\x1d\x54\x9b\xbf\xae\x7d\x3c\x3e\xb3\x6e\x5a\xb2\xaa\xa1\x0a\xa5\x53\x8d\xa7\xef\x36\xc8\xff\x35\x4b\x60\x58\x13\x40\x04\xd6\x60\xa4\x03\x63\x21\xca\xad\x00\xa3\x0b\x1c\x49\x8b\xa3\xd8\x08\xc4\x40\x5e\xf7\x96\x18\xfc\x22\x12\xa7\xb8\x33\x96\xa3\xd7\xce\xdc\xeb\x86\x3c\x66\x37\x4d\xc4\x69\xae\x18\x3c\x7e\xd7\x4b\x3e\x70\xd6\x37\x4a\x06\x2d\xe0\x37\x9b\x21\xcf\x25\xd3\xc4\xc5\x76\x21\x15\xcd\xfe\x75\x55\x45\xe8\x9a\xd4\x05\x2b\xb0\x27\x9d\x93\x8e\x90\xde\x3a\xbf\x50\x44\x10\xca\xad\x72\xb7\xc2\x9f\x53\xd0\x1d\x9d\xd7\xf2\xec\x5e\x45\x9a\x04\x59\x2b\xdd\x66\x41\x66\x13\xe6\xed\xd0\x04\x56\x9e\x0e\x6c\x98\x82\x7b\x8c\x1d\x70\x02\xa6\xd1\xbf\x30\x3e\x18\x25\x95\x01\xdd\x89\xf6\xee\x94\x76\x6d\x18\xaf\x81\x04\x63\xeb\x13\xb2\xef\xdd\xf1\x72\x3a\xf7\x35\xa8\x87\x16\xe1\xfc\xb4\xb7\xb4\x3c\xb9\x7e\x1c\xc9\x03\xb2\x40\x8e\xf4\x53\xad\xa4\x16\x47\x86\xf0\x08\x45\xfb\xfa\x1f\xfc\xa5\xcc\x3e\x1c\x4b\xd9\x94\x0e\x7d\x99\xae\xf9\x19\x16\x6d\x05\x8b\x51\x45\x3c\x9c\x14\xfb\x9f\x32\x51\xec\x5f\xe4\xf1\x53\xc7\x0a\x44\x92\xdc\x34\x96\x29\x61\x86\xf2\x3a\xd4\x7e\xba\xd1\x3c\x66\xe6\x87\x27\xce\x50\xba\x94\x87\xf1\x80\x18\x90\xb6\x93\xef\xeb\xfc\x37\xbb\x5d\x95\xf8\xaf\x54\x8e\xc8\xd6\x49\x82\x89\xe5\x5f\x98\x83\xfc\x5b\xe8\x4c\x25\x6d\x2b\xc5\x48\x49\x38\xc7\x09\x82\x0d\x9b\x6b\x80\x59\xc0\xaa\x42\x67\xdd\xe6\x90\x78\xe4\x87\xc8\x86\x5c\x0b\x13\x0a\x0c\xa8\xca"}, +{{0x6e,0x26,0x51,0x05,0xee,0x71,0x71,0xd1,0xbd,0x79,0x3e,0xff,0xd8,0x7d,0x1e,0x2c,0x79,0x45,0x0d,0x5e,0x18,0x8b,0x57,0xbe,0x3a,0xa1,0x62,0xe2,0xa5,0x25,0x28,0xad,},{0x1f,0x40,0x3c,0x7a,0x75,0x50,0x31,0xc1,0x3c,0xa6,0x3a,0xf5,0x76,0x35,0xdc,0x6e,0x2c,0x4f,0x23,0xbd,0x6b,0x1d,0x67,0xca,0x65,0xda,0x68,0xb0,0x99,0x43,0xc5,0x54,},{0xb5,0xa8,0x3a,0x11,0x7a,0x60,0x34,0x5a,0x67,0xe4,0xa6,0x65,0xf3,0x7d,0xe7,0x22,0xa6,0xec,0x03,0x91,0x38,0x29,0x38,0x99,0x59,0xf3,0x76,0xee,0x62,0x64,0x77,0xe6,0x54,0xac,0x8d,0x72,0x0f,0xc7,0x27,0xd4,0xbb,0x8f,0xe1,0x54,0x4f,0x5d,0x0b,0x0b,0x85,0x05,0x14,0x29,0x0b,0x24,0x27,0x3c,0x4c,0xd4,0xb7,0x3a,0xca,0x4a,0x53,0x00,},"\xf8\xb9\xd4\xb0\x27\xeb\xb1\x0e\xe5\x11\x81\x9e\x6e\x56\xfb\x1b\xa9\x58\x40\x18\x41\x8d\x82\x88\x5a\x38\xa4\x49\x08\x60\x07\xb8\x78\x5b\x51\x05\xca\xf7\x82\xbf\x9b\x36\xda\x03\x9c\xc6\x0e\x22\x7c\x7e\x16\x14\xf2\x9b\x64\x0b\x1e\x9b\x22\x74\x7e\xea\x7a\x67\x25\x61\x4e\x89\xe0\x78\x3e\xbe\xbb\xb7\xee\x55\x7e\xf3\x6b\x2b\x46\xcf\x64\x61\xe5\xbe\x2a\xd1\xd7\xa7\xc2\x71\x1a\x47\x5c\xa4\xfb\xc3\x30\x92\xba\x42\x56\x67\xe3\x4d\x09\x00\x60\x51\x8f\x2f\xec\x63\x6b\x04\x91\x23\x87\x6a\xb2\x1c\x8b\xd9\xc5\x0d\xcc\xb9\x84\xca\x01\x1a\x02\xee\xa0\x20\x56\x4f\xa8\x21\xfc\x36\x2b\xfe\x39\x2a\xab\x50\xc2\x73\xfc\x7b\x5a\x04\x21\x88\xe3\x31\x62\x1b\x9d\x2f\x74\x3e\x5c\x8c\xf3\xab\x1f\xaf\xfa\xfe\x2a\x00\x04\xc8\xef\x7c\xdf\x5e\x6d\xbb\x5e\xb5\x44\xe4\x28\x9f\x71\xa6\xfd\x15\xc6\x38\xce\x29\xd2\x8e\xfb\x9c\x03\x9e\x47\x74\x29\xa3\x49\x7a\x83\x82\x7e\x76\xce\x77\xa4\x98\x16\xd9\x0b\x41\xa8\xe1\x52\xf3\x7a\x09\xe6\x34\x0d\xfe\x06\x9a\x4a\xc6\xf2\x7d\xd2\xea\xc7\x47\xfd\x21\xe3\x15\x20\x88\xc1\xb1\xec\xd3\x2a\xc6\x79\x92\x74\x90\x75\x04\x88\xc2\x91\x78\x51\x47\xb6\x3b\x0b\x8f\xf1\x1d\x18\x9b\x90\x49\xb8\xa3\x96\xb6\x93\x2f\x85\xbd\x6a\x15\xef\xf9\xf0\xce\x18\x08\x41\x1a\xf0\xf9\xc8\xe6\xe9\x7b\x81\x4f\x11\x0b\xd4\xdf\x13\x86\xa9\x79\x7d\xc5\x11\xf0\xaa\xb6\xab\x65\x07\x1d\x9e\xa8\x36\x53\x2c\xec\x51\xb9\x2c\xa7\xfb\xdb\x8d\xe1\xc8\x43\x66\x58\xde\x2e\xb6\x5e\xdd\x86\x04\x4f\x6c\x1a\xba\x31\x78\x64\x7a\xd6\x78\x61\x2e\xe7\x4f\x04\x6c\xa3\xc7\xfe\x2f\x39\xc0\x9d\xd2\xe0\x7d\xf2\xb4\x22\x70\x85\xfe\x93\x6e\x79\x4d\x22\xfd\x5f\x40\xa2\x5f\x08\x77\x15\x80\xac\x80\x1d\x98\x89\xf5\xa7\x6a\xea\xe1\xf0\xcc\x4a\x9e\x1e\xdb\xdd\xa3\x75\x0c\x74\xc8\x50\x52\x4b\x32\xf4\x49\x33\xfd\x88\x3b\x53\x72\xbf\xb7\xe7\x61\xe0\x69\xfe\x7c\x1c\x0e\x7f\xbd\x4a\x7f\x58\x46\x7e\xa6\x88\x3f\x9d\x5b\x7f\x66\xd3\x86\xb0\x49\x9b\xb6\xfb\x5e\xad\x89\xc9\xa1\xfd\x2c\xce\xb9\x73\xe2\x87\x9b\x5d\x03\xea\xa4\x52\xe1\x60\x22\xd5\x96\x17\xda\xa0\x48\x6f\x4d\x4c\x11\x78\x07\xfd\xa8\x49\x9d\xfb\x7a\x28\x6f\xd2\xf7\x1a\x8e\xb5\xfe\x64\x06\x5c\x41\xe4\xe1\xe2\x36\x2a\xb4\xe4\x77\x96\x9e\x3a\x40\x8a\x24\x7e\x3a\x56\xfc\x86\xf2\xb0\x1e\xf8\xd3\xcd\xda\x87\x25\x82\x34\xbc\x7f\x25\xb6\x69\x07\xf3\x64\xb3\x7b\x62\x45\x29\x6c\x4f\xdf\x49\x9f\x20\x23\x7f\x48\x64\x85\x2f\xc5\xd8\xcd\x5d\x05\x41\x8b\xe8\xb1\x38\x59\xee\x9a\x43\xe1\x7e\x1f\x57\xa4\xc3\x5e\xa2\x82\xed\x68\xeb\xcd\xa6\x82\x81\x74\x24\x5a\x49\xc6\xcb\x65\x90\xeb\x1f\x2d\xcf\xb0\x07\xbf\xa1\xc3\x20\x77\x95\x6d\xa9\xac\xbe\x3e\xf0\x72\x37\x99\xfd\xb8\x69\xd8\xde\x30\x70\x6a\x9c\x02\x68\x14\xd1\x6a\x01\xe0\x33\xc9\x1b\x59\x07\x0d\xfe\x44\x5c\x5b\x84\x8a\x51\x66\x12\xe5\x13\x1f\xe8\x48\x69\x21\xe3\x6b\x8e\x7e\xf1\x57\xa8\x88\x22\x88\x6c\x68\x1b\x5d\xa7\x1f\xea\x94\xd9\x57\xda\xfe\xc2\x6f\x41\x47\xa3\xb2\xac\x38\x3a\x5f\x47\xc8\x58\x5e\xb1\x7a\x8a\xc6\x57\x90\x64\x1b\x42\x18\xd7\x55\xf8\xbe\xa4\xd9\x7a\xe2\xa4\x5b\xdc\xdc\x23\x23\x62\x94\xd8\x52\xc9\x5d\x08\x40\x6d\x2e\x9b\xd3\x0c\x32\x64\x52\x53\x8c\x1f\x5e\x50\x04\xd4\xa1\xa8\x27\x20\xda\x32\xe5\x9d\xc3\xab\x18\xea\x08\xa0\x58\xf7\x91\xd2\x44\x18\x55\x60\x86\xc1\xe4\xed\xce\x89\x82\xaa\x23\xb1\x18\xfb\x26\x6e\x60\xb5\x42\x78\x0a\x69\x33\xad\xd9\x13\x26\x55\x12\xc0\x7b\x11\x49\x78\xd4\x4a\xf7\x3b\x20\x30\xec\x47\xb0\x6f\xd0\x9d\xda\x8c\x4f\x1d\x4e\x31\x37\x75\x46\x8c\x45\x1f\x9e\xe6\x11\xe9\xcd\x4c\x08\x45\xc2\x50\x19\x48\xa7\xb1\x4e\xf1\xd4\xb5\xcf"}, +{{0xc4,0x37,0x0d,0x2a,0xaf,0x35,0xac,0xd1,0x58,0xfc,0x0d,0x16,0x22,0xa3,0x99,0xc9,0x9f,0x41,0xb9,0xda,0x4e,0x97,0x0b,0x35,0x4e,0x5b,0xa0,0x5c,0xbe,0x84,0x4c,0xa8,},{0x35,0x45,0xd7,0xd4,0xc9,0x5c,0x3d,0xb6,0xa5,0x45,0x30,0x53,0x7a,0xfa,0xfa,0x4d,0x86,0xdd,0xec,0xf9,0xcc,0x7e,0x66,0xc3,0x19,0xba,0x9f,0x7d,0xd7,0xd0,0x7e,0xe7,},{0x9f,0xeb,0xab,0x5a,0xe1,0x61,0xd6,0x92,0xa6,0xa3,0x94,0x50,0x0a,0x28,0x90,0xd2,0x1c,0x7f,0x0e,0xe2,0x6f,0x46,0x40,0xaa,0xba,0x4f,0xe6,0x6b,0x90,0xb8,0x9e,0xdc,0xb8,0x0e,0xa4,0xcd,0xca,0xbb,0x4d,0x2c,0x3a,0x5c,0x41,0x54,0xe8,0xff,0x20,0xd0,0xe2,0x37,0xfe,0xfd,0x00,0xc7,0xba,0x97,0x82,0xe1,0x74,0x8f,0x64,0x88,0xac,0x01,},"\x61\x9f\x57\xde\x2b\x1d\xba\xee\x20\x9a\x82\x5d\x8c\xa9\x7f\x84\xee\x49\xeb\x12\xa0\xb1\x3d\xcd\xd2\xb3\xa4\xee\x45\xe0\x17\x6d\x47\x4c\xf0\x94\x60\xc8\x31\xa8\xae\x1d\x3f\x39\xbe\xeb\xd0\x88\x08\xb3\xed\x17\x61\x21\x3b\xa9\x53\x42\x18\x60\xcc\x07\xe2\xdb\x31\x2e\x68\x0d\xf0\x3e\x60\xa6\x87\x02\x64\xab\xca\x8f\xd5\x13\x01\xe1\xc1\x56\x20\x23\xd8\x02\xcc\xd5\xc7\xd1\x96\xdb\x39\xfb\xb8\x30\x4b\x0e\x59\xe3\x33\x16\x41\x92\xec\xc3\x33\x38\x7e\xef\x69\xc7\xa7\x8a\x5d\x11\x25\x88\x62\xd6\xc2\x81\xb1\x9c\x0b\xd3\x36\xcd\x3e\xdb\x2f\x9f\xaa\xd4\x02\x1a\xc2\xf2\x05\xc1\x68\x14\xb3\x85\x48\x43\x3f\xf9\xed\xdf\xd6\x11\x33\x77\x97\x69\xdc\x69\xaf\xac\x65\x8a\xfc\x1d\x1b\x41\x6d\x39\x0a\xd5\xb4\x5a\x1a\xd5\xcc\x4b\x00\xb4\xb2\x78\xfb\xe4\xb5\x9d\x52\xe6\x1a\x6a\x5f\xd0\x02\x41\xc6\xcb\xc3\x82\xd2\xd6\x21\xa3\xde\xd0\x02\x01\x9b\x33\x05\x60\xe3\x61\xfa\xab\x28\xf4\x1d\x1a\xf9\xc9\xc0\x02\x0f\x2b\xaf\x99\xe8\xd8\xee\x58\xe3\x12\x22\x02\x14\x7c\x0a\xdc\x57\xd6\x70\xc5\xb3\x80\xaf\x59\x4c\xc7\xed\x57\xb8\x7e\xc6\x67\x4a\xb6\x3f\x3a\x98\x49\x75\x3b\x94\x62\xaa\xb5\xde\x88\xc9\x48\xa8\xb1\x09\xaf\x4d\x49\x54\x92\x7a\xac\x58\xbe\xe9\x53\xbe\x0d\x8d\x7d\x71\xaa\x11\xd1\x1f\x1a\x87\xb1\x47\x7b\x91\x70\xbd\x73\x5c\xfc\x24\x49\xf0\x51\xb8\x2b\xc5\x9b\x0b\xee\x76\xa1\x72\xe8\xd3\x26\x70\xf5\x1d\xdd\xdb\x80\x4a\xd1\x10\xa5\x65\xe3\x84\xcd\xb7\x6f\xad\x04\xcf\xf6\x78\x93\x09\x1e\x41\xe6\x9c\xfd\xf7\x0e\xa9\x26\xc2\x63\x69\xa5\xb6\x19\x3b\x19\xab\x0a\x62\x55\x8d\xa5\x5f\xfa\xfe\xb8\x78\x97\x57\x71\x06\x44\xaa\x19\xf4\x74\xbe\x4a\xda\x9d\xc1\x84\x9b\x07\xd5\xe1\x7b\x85\xf9\x21\xe1\x01\x6a\x54\xaa\x60\x95\x77\x72\x53\xa7\x34\x26\xfc\x78\x64\xb9\x95\x5f\x04\x90\x70\x23\xdb\x20\x7f\x85\xdd\x21\xa6\x51\x06\xcf\x0d\x62\x23\x85\x87\x0c\x34\xc2\xda\x9a\x11\xe4\x72\x63\x95\x12\x1e\x4a\x67\x61\xfb\x52\x22\x29\xd9\xe5\xcc\x9d\xab\x35\xae\xb8\x7d\x0d\x79\x69\x3c\x00\x6f\xde\x1c\xfa\xf1\x16\x20\x8b\xba\x96\x20\x59\xcf\xc0\xd2\xd6\x37\x0a\xac\x77\x48\x36\x2e\xe6\xa0\xa3\xca\x7b\xf1\x33\xeb\xcf\xa2\x0f\x1c\x4e\xd8\x30\x7f\x80\x0c\xca\x7e\x6c\x4b\xea\xa3\xfb\x2a\xb0\x86\x12\x53\x64\x28\x5c\x44\xed\x1a\x73\x7a\x67\xcb\xf3\xb7\x63\xc9\xf8\xb1\x42\x7e\x89\xdf\xa9\x6d\x29\x0e\x9d\x48\x42\xfe\x63\x16\xaf\xef\x83\x4c\xd8\xcd\x1f\xdc\x1f\x12\x4c\xa3\xfe\x26\x26\x6d\xa6\x2e\x27\x5c\x0b\xf7\xfc\xc8\xe5\xf9\xbb\xa6\xc0\xd3\x8e\x23\xfa\xfa\xb1\xe0\x49\x48\x17\x94\xc1\x4f\x4a\x8c\x53\xbe\x1c\x96\xf7\x69\xc9\xb1\x3e\xac\xa3\x9a\x0e\x49\x36\x6d\x2c\x9f\xfe\x8f\x20\x63\x60\xa9\xd5\x03\xde\xc5\x98\x62\x11\x12\xe3\x77\x67\x13\xe7\xfc\x06\x49\x43\x3e\x25\x7e\x50\x3a\x54\x60\x59\xa9\x89\xda\x89\x15\x7d\x76\x47\x60\x05\xfd\x90\xe4\xb0\x7a\xaf\x0d\xb0\xbc\x0b\xc0\xb6\x7d\xb8\xdc\xba\xdf\xf3\x93\x74\xe1\xaf\xae\x55\x16\x34\xe0\xe3\x28\x31\xad\x0e\x5f\xa7\xd5\x21\x6f\xa7\xc6\x44\xf7\x3e\x1e\x8e\x07\x23\x83\x94\xa4\x16\xc1\x69\xaa\x9d\x53\x03\xf4\x69\xa5\xd4\x07\x43\x08\x72\x1f\xfd\xde\xff\x65\x59\xe5\xad\xf0\xc2\x77\x3b\x3f\x52\x64\xe7\xaa\xa8\xc2\xdb\x88\x8e\x28\xe8\x15\xc7\x10\x69\xc3\xb4\xce\x6c\x29\x03\x4c\x0a\xb3\xb5\xc1\x9a\x80\xa9\xd8\xc2\xe8\x74\x81\x35\x31\xc4\x22\x75\x2a\xd6\x2b\x3c\x5a\x1a\x3d\x6c\x5a\x5d\xb5\x87\x27\x06\x93\xaa\x75\xd5\xf1\x72\xee\xdd\xf4\xeb\x83\x9b\xd7\x93\xaf\xfb\x1c\x79\x6a\x1d\xf0\xe4\x42\xdd\xf9\x9b\x78\x0a\xa4\x1e\xea\x0f\xe6\xf8\x65\xbb\x53\x9c\xa5\x3a\xa4\x5d\xb9\xa8\x56\xcb\x75\xd0\x15\x1d\x35\xed\xea\x80\xf2\x94\x6d"}, +{{0xbd,0x3d,0xe1,0xa1,0xd1,0x64,0xbd,0x6e,0x9b,0xe0,0xa6,0xd1,0x07,0xf7,0x03,0xa6,0xdd,0x91,0x4c,0x86,0x67,0xcd,0x34,0x1d,0x13,0x9f,0x19,0x57,0x8d,0x93,0x3b,0x16,},{0x9b,0x02,0x49,0x64,0xbd,0xfa,0x85,0x2e,0xb2,0xd4,0x14,0x4f,0x35,0xb7,0xcd,0xc2,0x67,0x81,0x14,0x3c,0x2b,0xd7,0xf6,0x60,0x23,0x3f,0x8b,0x8a,0xa3,0x60,0x71,0xee,},{0x13,0xcc,0x15,0x8f,0xd0,0x61,0x79,0x2f,0xce,0xd1,0x56,0x87,0x95,0x98,0x25,0x1d,0xd0,0x1d,0x57,0x5b,0x40,0x0f,0xe3,0xe3,0x9a,0x70,0x08,0x63,0xaa,0xe8,0xdb,0x1f,0x91,0x97,0xfa,0x50,0x1c,0x0c,0xf9,0x93,0xe4,0x4d,0x6a,0xc5,0x51,0x80,0xb8,0x69,0x83,0x8e,0x8a,0xe2,0x4b,0x21,0x4f,0xa3,0x5e,0x24,0x4b,0x7a,0x6c,0xff,0x6d,0x0d,},"\x17\x69\xfc\xdb\xf5\x12\x47\xed\x4c\x83\xa0\x0b\xbb\xf0\x2f\x44\x28\xda\x6f\xce\xdd\xd0\x16\x1a\x02\xfc\xcd\x15\x00\x97\x06\x65\xe1\xc7\x63\x0a\xd2\x2e\x3d\x97\x49\xc7\x92\xe7\x1a\x26\x0c\xff\xf6\x05\x32\x56\xe0\x2f\x5b\x47\xbb\xa1\x4b\x76\x1a\xe5\x3c\xa7\x21\x9e\xd2\x80\x1d\x2d\x78\x8e\x26\x41\x9f\x36\xc8\x1e\xf9\x2c\x23\x03\x68\x37\x35\xc8\xa1\x75\x6a\xda\xb6\xa4\x87\x92\x31\x53\xe4\x35\x60\x3c\x96\xb2\x39\x55\x3e\xdf\xde\xb0\x93\x29\x8f\x7a\xe7\xdc\x90\xf1\x6a\x7e\x56\x64\xb9\xe4\xc0\x2b\xa7\x31\xa2\x3c\xf2\x23\x4e\x25\x0a\xc9\x74\x26\x33\xa9\x32\xa9\x48\xbb\x83\xdc\x3d\x79\x4d\x05\x9f\xed\xf4\xec\x86\x18\xc7\x43\x3c\x5d\x8f\xe5\xe6\x2c\xf0\x7b\x57\x68\xc4\xd9\xb2\x61\xc7\x15\x36\x80\x4f\xe2\xe7\xca\x70\x98\x87\x65\x21\xd5\x76\x77\x36\x14\x24\xe4\x7f\x1b\x95\x92\x37\xf9\x07\x10\x42\x1f\x5b\xc4\xf1\x09\xf7\xd4\x89\xc7\x55\xe9\x4e\xef\xdf\xb3\xc8\x5b\x90\xec\x01\x31\x81\xa2\x3b\xb9\x53\x5f\xee\xa4\x94\x1d\x0a\x06\xa5\x40\xbd\x6b\x58\x8e\x55\xb7\xf3\x57\x57\x14\x9c\xa3\xe6\x40\x96\x5e\x1a\x0f\xf7\xf3\xc8\x25\x92\x59\x95\x7f\xf5\xda\xb9\xfb\x87\x32\xea\xe7\x19\xb6\x24\xa4\x49\x28\x78\x17\x9b\x5a\x83\xab\xe5\x1c\xaf\x02\x08\x3d\x73\x7c\xeb\x4f\xcf\x04\x2f\x2e\x60\xba\x02\x97\xac\x72\xb8\x7f\xe3\xe1\x4b\xa5\xfb\xc5\x4b\x48\x09\x10\x73\x89\x68\x23\xbf\xa2\x89\xce\x8e\x16\x87\x3b\x48\x81\x2c\x32\xbf\xea\x5f\xf6\xbb\x22\x1d\x1e\xa5\x46\x3d\x32\x5b\xbe\x31\x1e\x7f\xd1\xe7\x83\xde\x65\x0b\x79\x52\xea\xe4\x61\xd6\x3b\xc7\x47\x05\x22\xaf\x5b\x77\x89\xf8\xfc\x2e\xb1\x92\xd2\xcf\x77\x6c\x5c\x24\xb4\x4e\x29\xcd\xb0\xcc\xcb\x1d\x90\x36\x14\x38\xe4\x95\x0f\xf3\x4d\xbc\xb3\xcb\x0e\x81\xcc\x45\xf8\xd0\xff\x57\x09\x49\xf7\x80\x84\xe1\x06\x0f\xf5\x59\x4a\xd5\x16\xf5\x0f\x1c\xb0\xa7\x65\xe1\xc0\xe0\x38\xd5\x94\x3b\x93\x6e\x4a\x8b\x49\x33\x54\xe7\x9a\xbc\x91\x7b\xb9\x27\x12\x66\xee\xba\x77\xa9\x3a\x65\x7f\x9a\xd8\x7b\x29\x1a\xc7\xea\x38\x6f\x5d\x4f\xcb\xc5\x82\xe7\x2d\x5c\x23\xd9\x2b\xa9\x44\xb0\x06\x4c\x20\xe3\xe2\xdc\xf5\x04\xbc\xc7\xc6\x96\x6c\x63\xf2\x08\x08\x43\x60\x0b\xa3\x13\xec\x27\xcb\xa9\x5e\x7e\xf3\x18\x16\x8c\x90\x67\xdc\xe8\x6c\x1e\xf0\xd5\xd9\xeb\x7a\x61\x58\x48\x9d\xf3\x2e\xd5\x8b\x69\x31\x03\x08\x18\xf0\x07\x05\xa0\xdc\x55\xd3\xdb\xf8\x00\x6a\x85\x46\x64\x1b\x18\x65\xd9\x19\xbc\x24\x22\x02\xcb\x3a\xe3\x00\xbf\x86\x53\xe3\xb3\x78\x94\xc3\xdc\x0e\x47\x7b\x9d\x7c\x41\xba\xf8\xd3\x88\x7c\x2e\xb5\x9b\x1e\x4d\x50\xbb\xb6\xf1\x79\x2a\x1c\x93\x67\xc6\x5c\xdb\x45\x0c\x2d\xfa\x21\x45\xe6\x11\xa9\x7a\xd8\x1c\xff\x1f\xd8\x3c\x6c\xf7\x23\x09\x47\xea\xff\x4c\x21\xdc\x1b\xaf\xb7\x1e\xc4\x1e\x5b\xc7\x2b\x37\x45\xec\x3e\x38\xbf\x59\x30\xc1\x26\xd0\x60\xf0\xc5\x0a\x89\x5f\x00\x9a\xa1\x8e\x87\xf2\x17\x4f\x58\xab\x53\x79\xa7\x21\xfd\x83\xaa\xd5\x51\x7f\xd9\x9d\xff\x14\x6e\xde\xea\x61\x52\x12\x35\xe2\xf1\xa1\x6e\xe5\x83\x03\xe0\x91\xbe\x8d\x57\x90\x94\xc1\xd8\xa2\x0b\xc7\x4a\x55\x0d\x77\xc0\x0d\x08\x75\x71\x51\x7a\x63\xcd\x41\x26\x93\x3a\x4f\x09\xa0\x70\xbf\x8e\xa4\xff\xb8\x46\xa9\x78\x0e\x97\x34\x04\x3b\xac\x4c\x0f\xf4\x7b\x1a\xfc\xcf\x52\x93\xac\x14\xbc\x73\xeb\xf6\x71\x29\x65\x7e\x4b\x8a\x8b\x33\xdd\xac\x7b\x0f\x4d\x71\x9d\x2d\xc6\x5d\xf6\xea\x0a\x3f\x24\xcf\x44\xc8\x33\x8e\xd6\x01\xa3\x93\x9c\xa3\x58\xfc\x4b\xe1\x3e\x8e\xde\x02\x75\x39\x71\x2c\xa2\x3e\x3f\xfb\xa7\x06\xe8\xfd\xd6\x2a\x07\x4e\xe0\xad\x74\x20\xf7\x80\x60\xcc\x96\xfb\x2a\xbf\x30\xe9\xea\xa2\x41\xc0\xf8\x7e\xbb\xe3\xec\x73\x51\x75\x96\xf7\xc3\xc5\xa8\x0c"}, +{{0xf6,0xae,0x51,0x6a,0x51,0x29,0x6f,0xc5,0x23,0xce,0xa5,0xf0,0x08,0xcf,0xbd,0x09,0xe7,0x3f,0x78,0xb6,0xfd,0xd3,0xb6,0x94,0x26,0x12,0x80,0x41,0xa5,0x60,0x4c,0xf9,},{0x37,0x6c,0x82,0xba,0x7b,0x87,0xaa,0x77,0x41,0x87,0x27,0xdb,0x33,0xd3,0x26,0xae,0x75,0x8b,0xf7,0xa1,0x35,0xc1,0x04,0x60,0xcd,0x8b,0xf8,0xfe,0xb8,0x3c,0x2b,0x10,},{0x0f,0xe4,0xdd,0x7e,0x1f,0x60,0x8e,0xe8,0x2b,0x7f,0xe8,0x63,0xd1,0xb0,0x3a,0x81,0x84,0x3c,0xe2,0x0c,0x76,0x2c,0xd8,0xbb,0x24,0xef,0xd4,0x6b,0xa0,0x25,0xff,0xf3,0x33,0x1d,0x87,0x57,0x52,0xca,0x72,0x20,0xc5,0x3d,0xd3,0xc7,0x1f,0x2b,0xc1,0xe2,0xc6,0x4a,0x2f,0x9c,0x58,0x86,0x5a,0x2a,0x24,0x48,0x09,0xf4,0x13,0x4e,0x53,0x07,},"\x83\x42\xf2\x5a\xc4\xb1\x7e\xba\xd6\xf7\x9b\x9a\x03\x31\x75\xc7\xf2\x8a\xf0\x9e\x65\x8e\x8c\xb9\x8c\x29\x4f\x15\xc3\xc8\x34\x26\x29\xcb\x2a\x32\x47\xdf\xc8\x75\xb8\x2f\x5b\x38\x0c\x5d\x11\x42\x6a\x2e\xeb\x62\x45\x0b\xd8\x85\x65\x01\x07\xc6\x83\x62\xa3\xb7\x2c\xe8\x23\xf2\xd1\x59\x42\xb7\xdd\xa3\x01\xd2\xfb\x63\x8f\x30\x2a\xa9\x57\x0b\x47\x91\x1d\xad\xd3\xbd\xdb\xfe\xd5\x54\xc1\xc8\x0b\xd7\x18\x07\x8b\x8b\xd2\xc9\xc3\x14\xa5\x16\x6f\x26\x5e\x82\x66\xee\x2d\xb3\x57\x56\x1a\x55\x85\xc4\x14\xa7\x84\x0b\xfa\xe6\x09\xd7\xcd\xdd\xe1\xfa\xde\x85\x56\x0f\x23\xd6\x38\xef\x3d\x52\xe5\x1f\x5c\xf3\x13\xa0\x72\xc5\xea\x0f\x81\x7f\x72\x81\xe2\xcb\xa5\xc5\xc8\xd2\x6c\x92\x85\x92\xb8\x1f\x0f\xf8\xcd\x18\xdb\x5a\x2c\x41\xd8\x80\xd7\x44\x73\x86\x3c\x7b\xbd\x00\x56\xfa\x4d\x4a\xfa\xbd\x17\xa3\xb8\x9d\x97\xd3\xfe\x5d\xc0\x6b\x0f\x61\x2a\x1d\x66\x42\x39\x23\xba\x8d\xfb\xb8\xec\x82\x46\x62\x4d\x83\x78\x4e\xba\x4f\x57\x36\xba\x38\x5e\x44\x22\x96\xc8\xcb\x0f\x1b\x68\xe0\x33\x42\xb2\xc6\xc1\x03\x34\x6f\x6d\xd7\x40\xe2\x6c\x3d\x13\xca\xef\x80\x1d\x1b\x26\x21\xd8\x9f\x06\x93\x91\xa0\x78\xd4\x3a\xe6\xff\x12\xee\xca\x66\xbc\x32\x63\x7b\x45\xf0\xac\x62\x7c\x2d\x7b\xbf\x8a\x49\xd9\x46\x81\x75\xe2\x68\x85\xe0\x28\x21\xd3\xa3\xba\xa2\xc3\xe3\xa6\xbb\x96\xb5\x75\x26\xe2\x24\xcf\x3d\x85\x9f\x66\x95\x73\xcb\xd5\xc8\x73\x93\x74\x61\x56\xf3\xd1\xc7\xa8\x03\x08\xdc\x1f\x24\x05\xbf\x0d\x40\xbe\x1c\xa7\x3b\x76\x7d\xed\xf4\x03\x13\x37\xc0\x81\xbf\xa3\xae\x6e\x54\xf6\x02\x3f\x42\xf0\xcb\xd8\x77\x62\xdb\x55\x91\x3c\x70\x72\x06\x03\x40\x10\xdf\x2a\xa8\x75\x3d\x03\x0f\x03\xc2\x67\xe7\x1a\x9d\xd2\xc6\xc1\x9d\xe3\xe1\x85\x1a\xbf\xac\xbb\xd5\xdd\x5b\xf8\x96\xfa\xb8\xe4\x15\x31\x7b\x49\xf1\xe4\x09\x6e\x3d\xa9\x9a\x5b\x5d\x0a\x3c\x42\xda\xf9\xde\x94\x84\x7c\x1e\x53\xc8\x81\x8a\x5b\x84\x33\x23\xf5\x01\xe3\xa7\xfa\x68\xdf\x89\xa5\xf4\x1f\x2c\x62\xc3\x8d\x17\xf2\x50\xb0\x2a\x67\xfa\xe4\x7d\xaf\x06\x3f\x55\x89\x42\x37\x7e\xf8\xa8\x90\x52\xf1\xa2\x15\xd7\x68\xf7\x91\x3a\x7e\xc1\x4e\x98\xb8\x1e\x4b\x2c\xcf\x26\xba\xca\xd6\xf3\x96\x64\xaf\xc0\xe9\x1a\x3c\xad\x69\x1d\xb2\xbf\x56\xa7\xab\x66\x77\xb4\x95\x96\xdb\x88\x7c\x97\xde\xf4\x35\x08\xa7\xa2\xec\x2a\xb7\x55\xec\x36\x8e\x2e\x53\xd1\xe1\x6b\x60\xff\xf0\x9c\x3b\x52\x26\x3f\x0f\x7c\x1e\xa9\xcc\x35\x37\x31\x97\xe9\x5c\x11\xe6\xd2\x2f\xa9\xd8\x29\x9c\x42\x37\x36\xf5\x81\x4f\x1e\x79\x8d\x22\x75\x18\x60\x0d\xf6\xa7\x90\x35\x8d\xea\xe3\x8d\x56\x39\xe1\x98\x3f\xe0\x18\x43\x6e\xa5\x8b\xa8\x46\x75\x48\xc9\x29\xef\xbb\x16\xdf\xea\x41\x02\x25\x3a\x35\x0f\xb8\x4d\x98\x31\xc4\xc2\xcb\xcb\x76\xe1\x8d\x7f\x3e\x95\x36\x41\xad\xa4\x14\x21\x39\x30\x91\xe6\x3d\xfe\x66\xde\x24\xc9\x92\x32\xc7\xd6\xa2\x83\x7a\x48\x98\x3c\xf5\xb1\x63\x31\xce\x00\x05\x0d\x1c\x71\x39\x58\xff\xce\x5f\x2e\x93\x48\xc5\x2f\x53\x12\x05\x79\xa7\xc9\xa1\x60\x08\xd1\x34\x83\x8e\x59\x61\x29\xc7\x02\xfc\xd2\x11\x48\xbd\xf9\x17\x4d\x48\xe2\xda\x0a\x8a\x66\x35\x9e\xde\xe0\x1c\x50\x09\xef\x67\x42\xfe\xc4\x1c\x1a\xce\xcd\x03\xef\xe1\xcc\xc9\xb1\x30\xd6\xe5\xac\x92\x57\x6a\x85\xcc\xb7\xcf\xc7\xd0\xe4\x23\x31\x06\x17\x29\x31\xa0\x86\x99\x79\x0b\xc4\x1a\xcf\xbb\x73\x1a\xdb\xb2\x6d\x56\xb3\x9a\xaa\x5b\x33\x3b\xc1\xa1\x0e\x2c\x70\x64\xca\x86\x11\x9d\x8c\x71\x71\x48\xf9\x24\x41\xaf\x24\xcd\x2a\xa8\xf5\x7c\x86\xba\x38\xa5\x9a\x10\x0b\x92\x76\xdf\x38\x27\xec\x7f\xb4\xd3\xfa\xf5\x8b\xe3\x1c\x6e\xca\xfd\x69\xcf\x1c\x64\x10\xa4\x9c\xd7\x08\x1f\xf6\xe9\xfc\x39\x7c\x2d\x20"}, +{{0x83,0xf7,0x89,0x90,0x0f,0x04,0x0d,0xc6,0x2f,0x4d,0x18,0x78,0x4c,0xb6,0x4b,0x63,0xc8,0x8e,0x8d,0x18,0x00,0x16,0x96,0xbb,0xeb,0x47,0x07,0xc4,0x69,0xd1,0x1a,0x5b,},{0xed,0xfc,0x2b,0xab,0x7e,0x79,0xf4,0x00,0x37,0xfe,0x4d,0x90,0x41,0xde,0x48,0xda,0x9a,0xee,0x8f,0x97,0x80,0x98,0xd7,0xb0,0xae,0x17,0x92,0x90,0x25,0xe4,0x27,0x3d,},{0xea,0x65,0x82,0xcc,0x23,0xe0,0x46,0x09,0x17,0xf7,0x82,0xd9,0x64,0xe3,0xbb,0x6d,0xcd,0xe0,0xae,0xea,0xc4,0x2c,0xc1,0x49,0x19,0xd3,0x6c,0xe7,0x8a,0xa0,0xaf,0xd9,0x80,0x72,0xf5,0x4c,0x79,0x5f,0xbf,0xd7,0xa4,0x1d,0x99,0xd7,0x06,0x06,0xc2,0x8a,0x5d,0xcf,0x19,0xbe,0x38,0xa0,0xce,0x2d,0x09,0xbb,0x8f,0x84,0x4c,0x31,0xbf,0x00,},"\x6c\x11\x2a\x20\xd3\x06\x57\xab\x5f\x8c\x5c\x04\x47\x8d\x6c\x42\xd1\xc6\xbd\xef\x38\xcd\x4f\xe0\x06\xac\x2a\x57\xe2\x90\xff\x29\x28\x78\x96\xee\xa8\xc3\x0a\x01\x39\xc1\x8f\xc8\xc9\x75\x64\x56\x3e\x86\xc8\xd3\x40\x56\xa6\x71\x9b\xfe\x47\x9d\x9e\x87\xe8\x1b\x19\x45\x23\x31\xbf\xa1\x54\x80\x68\x82\xe5\x03\x9a\x20\xc9\xe9\x54\xb1\xfc\x7c\x01\x5d\xcf\x58\x15\xbd\x7c\xf7\xb6\x35\x7d\xf9\x28\x0b\x9b\xd4\x3f\x89\xff\xc9\x19\x45\x32\x3b\x5a\xcb\x2a\xe0\x02\x54\xd4\x16\x28\x68\xd1\xc8\x3e\xc6\xe0\xfc\xbe\x7a\x8a\xb9\x25\x41\x92\x14\x9c\x6b\xc9\xe5\xfe\x35\x06\x94\x16\x5d\x66\x38\x33\x1e\xb2\x4e\x3b\x13\x90\xc6\x98\xc4\x83\x83\x78\xc0\x1b\x2c\x61\xa3\xeb\xe2\xc0\x60\xb9\x8b\xa6\xee\x02\xb5\x19\xb4\xea\xc1\xe0\xbc\xc0\x9b\x23\x24\xcc\xf5\xb1\xa7\xfe\x8f\xd0\xb1\x54\x5a\x94\x27\x83\x2a\xbb\x25\x74\x4e\xeb\x36\x32\x6b\xe6\x4e\xfe\xd3\xa7\xb0\x7d\x63\x0a\x21\xc3\x08\x1b\x55\x26\x1c\x35\x32\x87\xc6\x6c\x57\x66\x3a\x99\xdb\x46\x6a\x5d\xee\x22\x74\x6b\x81\xc7\x50\xef\x85\xbe\x51\x14\x3e\x22\x1e\xcd\xf1\x14\xfe\xf1\xb3\x08\x2f\xf5\x4f\xd0\x44\xbc\x88\x4b\xfb\x3c\xc5\xc5\x33\x59\x97\x00\x98\x67\xce\x94\x91\xa8\x0f\xe6\x96\x82\x5f\x99\x42\x6d\xef\xab\x6a\x49\xba\xdc\xde\x40\x3f\x58\xe8\x31\x79\x66\x21\x07\x47\xb5\x67\x75\x4d\xe5\x30\x76\xb3\xec\xbf\x65\x34\x6c\xb8\x39\x05\x83\x2e\x16\xd0\x1b\x50\xb9\x3d\x37\xeb\x9b\xfe\x20\x17\x2a\x31\x63\x0d\x25\xf3\x21\x7d\x87\xd9\x34\x65\xfd\x8a\xc5\x54\xcb\xbb\x39\xd9\x82\xea\xd7\x21\x93\x91\x23\x4c\x88\x9f\x0b\x92\xa2\xe0\x41\x3d\x86\x6c\xac\x08\x7d\x62\x8c\xe3\x1c\x61\xc6\x32\x3e\xcb\x8e\x68\x95\x55\xaf\x10\xde\x2b\x65\x6e\x6a\xea\x2c\xde\x93\x2e\x24\x1f\x6d\x1f\x8a\x9e\x33\x16\xcf\x13\xf1\x35\xac\xef\x83\xa0\xc0\xcf\x22\xf9\x5c\xa8\x18\xe6\x1f\x92\x76\x87\x74\xc6\x30\xe0\x92\x5b\xe9\x9d\xbd\x32\xb4\x99\xc0\xfe\x7d\x84\xa4\x2e\x39\x32\x87\xf6\xf5\xce\x3d\x0b\x27\x1f\x17\x00\x45\xa6\xd4\x8e\xab\x31\x6f\xe1\x7b\x18\x58\xb1\xff\xee\xe9\x08\x88\xf3\xa3\x7a\x24\x80\xdf\xd0\x4a\x4a\x86\x29\xf8\x68\xb5\xc0\xa8\x0e\xe1\xf0\x37\x19\xf3\xa4\x7d\x40\x95\xbe\xf1\x0e\x02\x34\xfc\x30\x0e\x2a\xf4\x82\x28\x5d\x78\x93\x79\x68\x31\x9d\xa9\x4b\xeb\x6c\x40\xe0\x78\x57\x7c\x02\x4f\x3a\x5c\xda\x00\x84\xe2\xf8\x55\xa9\x39\x6a\xaa\x9e\xe9\xbf\xaf\x2c\xc7\x71\xfe\x68\xc4\x0b\x62\x9e\x8d\xcf\x11\x5e\xf0\x3e\x75\x7a\x2a\xc9\xee\xf0\x73\xf1\xbd\xf9\xc5\xa4\x41\x00\x31\x55\x8a\x6d\x38\x2b\x5f\x16\x02\x4b\x15\x1b\x1c\x01\xee\x78\x17\x41\x3a\x3c\x4d\xe9\xdd\x64\x78\x78\x5b\x81\x10\x1d\xf5\x52\x24\x30\x05\x87\x80\x20\x7e\x79\x0f\x61\x2d\x78\xe5\x70\x5c\xee\xd4\x6b\x0e\xc0\x75\xe7\xc1\xdc\x07\x3b\x17\xb2\xb4\x3d\x72\x53\x59\x27\xbf\xd2\x71\xe9\x2e\x3c\x93\x63\x8e\x40\xa9\x60\x1d\xc2\xc1\xab\x76\xd9\x1a\x41\x03\xdf\x65\x7d\x91\x1c\x82\x9e\xe8\xa5\xf7\x47\xf7\x64\x2f\x5a\x91\x5a\x5f\x40\xf6\x30\xb4\x30\x39\xc7\xd4\xbd\x2a\xd2\xb3\x21\x29\xd9\x4e\x5b\x2f\x03\xad\x4a\x3d\x45\x57\x7e\xb8\x1f\x36\x9c\x9e\x3e\x2a\x4f\x6a\x8e\x41\xac\xf8\x28\x3b\xe5\x84\x25\xea\x99\x3b\x8e\x98\xee\xa6\x33\x05\x56\x64\x86\x18\xda\xd9\x8f\xa2\x55\x62\x0d\x83\x6d\x3c\x7f\x29\xb9\x07\x89\x58\x49\x28\x61\x67\xc7\x18\x1e\x2c\xaf\x55\xc2\xc1\x84\xa9\xa9\x11\xf8\xe4\x1c\xb0\x42\xe2\xcd\x48\xb0\x54\x4e\xa7\x9f\xe2\xef\x38\x1e\xbc\x5b\x15\xe3\x9a\x9b\x5c\x6d\x99\x8f\xae\xaa\xa7\x77\x3c\xfe\xc0\x84\xc0\xbf\xae\xd1\xbc\xab\x96\x3a\x4e\xf3\xd9\x4d\xbb\x3d\xfe\x72\x4c\x04\x0c\xe4\xd1\xe2\xee\x7f\xc2\xda\x4b\x25\x12\x7c\xe3\xa5\xdf\x69\x3f\xcf\x5a\x6e\xd1"}, +{{0x43,0xbf,0xf3,0xcd,0xd5,0x30,0x7e,0xd7,0xd2,0x5c,0xf9,0x6f,0xdb,0xba,0x64,0xab,0x18,0x11,0xc8,0xbb,0x93,0x4e,0x21,0x87,0xea,0x7f,0xfc,0x01,0x8d,0x85,0xe0,0xf2,},{0x00,0xf1,0xb5,0xd3,0xca,0xc6,0xe5,0x6c,0xa5,0xf8,0x94,0xd4,0xcd,0xbf,0x9b,0xeb,0xd9,0x68,0xd2,0x4d,0x5e,0xff,0xa5,0x05,0x8b,0x0e,0x20,0xbb,0x08,0x98,0xf6,0xf1,},{0xa6,0xb5,0x6b,0x76,0x86,0xdf,0x1d,0xc5,0xf4,0xed,0x54,0x4a,0x4d,0x97,0xe6,0x70,0x36,0x19,0x5a,0x32,0xb2,0x2e,0xcd,0x5d,0x31,0xea,0x17,0x30,0xe6,0xed,0x8f,0x81,0x0d,0x25,0x8b,0x44,0xc0,0x8e,0xa4,0x5f,0x03,0x2b,0x93,0x74,0x41,0xb7,0x2c,0xd0,0xdc,0x37,0x55,0x6f,0xd7,0x87,0x4e,0x9f,0xe6,0x4f,0x15,0x76,0x5c,0x52,0x10,0x03,},"\x64\x6f\x8b\x34\x18\x2d\x5e\x60\x2b\x51\xca\x73\x29\x34\x7c\x0e\x19\x8c\xb7\x47\xe4\xda\x0a\x6b\x80\xf3\xf6\xf9\xf3\x36\xf6\x70\x8d\x85\xcb\x42\x9a\xb2\xd6\xbe\xd3\x5d\x50\x13\x12\x9c\xd1\x00\x14\x2c\xdd\xce\xe8\x63\x51\x79\x02\x1b\x3e\x24\x92\x2b\x81\xae\xf1\x3c\x13\x70\x28\x69\x39\xd6\x3d\x6b\x6a\x41\x95\xed\xa1\xd8\x12\xca\x51\x82\x04\x76\x8f\x87\x34\x8c\x68\x89\x55\x2c\x63\xd1\x37\x2c\xde\x6a\x5e\x9d\xaa\x7f\x84\x45\xec\x8d\x61\x30\xa3\xf5\xae\xf0\xed\xea\xce\x01\x0b\x6c\x7f\x0b\x9d\x24\x16\x2a\x8d\x04\x45\x4b\x81\xd4\x8e\xa9\x09\x7b\xd8\xdf\x09\x34\x59\x71\x9c\xcb\x54\xaa\x10\xf5\x1c\x24\x6a\xa9\x9c\x58\x0b\xea\xf9\xc9\xc5\xbc\x60\xfa\xf0\xae\x5c\xec\x7f\x51\x37\xf6\xc5\xc1\x44\xdf\x45\xd1\x2e\xe9\x95\xad\xcc\xf2\x5a\x9d\xb8\x1b\x85\x58\xbd\xfb\x65\x83\x01\x86\xe7\xb9\xd4\xee\xd9\xf6\xb4\xd7\x32\xb1\xb5\x82\x2d\x03\xeb\x01\x7c\x07\x24\xf4\x8f\x87\xba\xaa\xe1\x04\x5d\x6f\xdb\x12\x5c\x91\x34\x06\x4f\xaf\x18\xdb\xed\x58\xd8\xfb\xac\xea\xcd\x4f\x09\x7d\xf9\xb3\x42\xe5\xc4\xa5\xbc\x85\xb2\x95\x97\xd4\xb6\x40\xf1\x55\x1c\x5b\x62\x4a\xb2\x1b\x48\xe9\x4a\x90\x30\x04\x9b\xe1\xf0\x5a\xa8\x51\xd0\x82\x7e\xaf\x87\x00\xdf\xe1\x47\xfd\xcd\xee\xdb\xc9\x8c\x4f\x15\x77\x4f\x01\x20\xfb\x59\x70\xa2\xf8\xb2\x17\x94\x34\x0b\x62\x83\x79\xa8\x02\xb9\xf7\xc0\x68\xb0\xdf\x63\x19\x3e\x51\x0f\xc7\xb2\xaf\x97\xee\x38\xde\x47\x92\x97\x85\x53\x55\x28\xd3\x50\xd8\x86\x20\x61\x0c\xfd\xb5\x5d\x24\x9e\x38\xfb\x73\xc8\x28\x71\x13\x91\x9c\xe3\x32\x67\xd7\xdb\x92\x4e\x49\x19\xa4\x4e\x6e\x29\xa9\x0d\xbe\x3b\x7b\x0d\x39\x21\x16\x3f\xeb\x5a\xc1\x05\x62\x4e\xd8\x52\xbe\xce\x35\x38\xe9\x91\x93\x30\x0c\x89\x33\x45\x69\x93\x50\xa8\xf9\x9e\x8c\x6a\x41\x09\x5f\xc9\xfc\x08\xda\x07\xf7\x57\x11\xf7\xdf\x03\x44\x06\xde\x14\xed\xd8\xe2\x2a\x63\x3a\x86\xe4\xa5\xa5\xc9\x75\xac\x5d\x34\x89\x1c\xcc\xfc\x85\x43\x77\x1f\xfa\x08\x0e\x0b\x45\xd6\x5a\xb8\x30\xa3\x61\xac\x4c\x42\x62\x94\xd3\x68\x5e\xa8\xc2\x60\x39\xc7\x1c\x90\xfc\x3f\xb5\x12\xbe\x9f\xc9\x48\x07\xd7\x6d\xbd\xaf\x8f\xfa\xa4\xfb\xf9\x84\x9d\x68\xe8\xa5\x7d\x30\xc4\xa0\xb9\x73\x5c\x23\xf0\x8e\xf2\xe2\x84\x45\x84\x67\xe1\x5d\x66\x53\x62\xcb\x64\x6f\xde\x69\x37\xec\xba\x53\x09\x12\x64\x63\x83\x57\xa7\x22\x42\x5b\xc6\x2d\x1e\x30\xec\x5f\x0d\xd8\xfe\xa2\x6b\x2e\xa4\xa8\x49\x00\x35\xde\x43\xf2\x74\x84\x6f\xb0\xcf\x02\x09\xec\x74\x37\xf3\xc3\xd0\xa5\x60\x37\x3d\x03\x4e\x5f\xd7\x9e\x25\xb6\x42\x4d\x9b\x2c\x17\x61\x63\x2b\x35\xa1\x21\x32\x52\x18\x27\x34\x5c\x55\xe4\xe7\x14\x2d\xd6\xfe\x94\xd6\x20\xfe\x51\x5c\x15\x3e\x83\x95\xb5\xd1\x30\xc7\x44\x13\x9b\x6a\x92\xef\xd3\x7f\x22\xba\x13\xfe\x4c\x09\x53\x73\x55\x0e\x2e\x4f\xcb\xa0\x32\x5b\x3e\xa3\xb9\xfe\x25\xcc\x7d\xd9\x2c\xbf\x42\xe1\x5f\x45\x54\xb7\x7a\xc2\x7a\x4a\x34\x63\x82\xff\x61\x00\x45\x15\x08\xd6\x02\xcf\x64\x3f\x60\xb6\xca\x42\x86\x35\x6f\x21\xa3\x11\x0d\x4e\x2c\x8a\x89\x62\xa7\x80\xfc\xff\x43\x9b\x3a\xa8\x04\x99\xdf\x27\x0f\xc3\xe6\xca\xd8\x89\x33\x48\x87\x2f\x0f\x70\x2f\x93\x90\x00\x0c\x7f\x6e\x06\x27\xd2\xbb\xb7\xb7\xce\xf5\xc4\xda\x25\xda\xdf\xea\x80\x32\xe5\x02\x32\x97\xa7\x0a\x65\x8e\x9a\xe7\x3b\xdd\xc3\xb2\x27\xa1\xc1\x17\x41\x13\x3f\x01\x2f\x0f\x48\xfe\x26\x44\x6f\xa6\x7e\x64\x72\x0f\xc8\xdc\x97\xf3\x0d\x0d\xd0\x26\xf6\xdc\x21\x64\xea\xd8\x57\x82\x4a\x0a\x7a\xeb\x20\xf1\x15\xd5\x0d\x1b\x65\xdd\x5d\x82\xe0\x9a\xbe\x83\x4e\x8c\xa8\x89\x57\xe3\x99\x84\x82\x49\x55\xa1\xa1\x3e\x3b\x94\xa0\x01\x57\x18\x6d\xcd\xc2\x89\xe3\x4b\x67\x8c\x91\xcb\x2a\x1a"}, +{{0x06,0x3b,0x90,0x25,0xe3,0x21,0xe9,0x72,0xd6,0x53,0xa0,0x62,0xbe,0x34,0xf9,0x93,0x65,0xaf,0xfd,0xcc,0x98,0xec,0x9f,0xf4,0x3e,0xf4,0x22,0xbe,0x0f,0x80,0x44,0x60,},{0x10,0xd0,0x1a,0x63,0x01,0x2a,0xc0,0x99,0x56,0xba,0x9e,0xd6,0x1d,0xf3,0x5b,0xb7,0xaf,0xe3,0x65,0x8b,0xb3,0x00,0x48,0x52,0xe4,0x71,0x74,0xbd,0x07,0xdd,0x4d,0xe7,},{0x85,0xc8,0x1d,0x6b,0x0d,0x85,0x78,0xfa,0x58,0xe1,0x3a,0xb3,0x91,0x00,0x15,0x28,0xb4,0x6a,0x1d,0x63,0xa0,0x32,0x7c,0x7a,0x4a,0x04,0x08,0x7f,0xc6,0x68,0x75,0x8a,0xa6,0x5c,0x01,0xd5,0xa1,0x50,0xf9,0x35,0x67,0x4e,0xf3,0x07,0x50,0x7e,0x6f,0x4c,0x91,0xe1,0xfc,0x35,0x00,0xb2,0x6f,0x64,0x9b,0xee,0xa8,0x7d,0x27,0x56,0x37,0x04,},"\xa7\xee\xd2\x96\x52\x84\x4e\xe0\x04\x9b\xaf\xb2\xcf\x63\x40\x29\x71\x02\x0d\x7e\x65\xc1\x0b\x91\xac\x57\x26\xee\xa8\x6f\x40\xdb\xc5\x3c\x3f\x0a\xbe\xde\xba\xf6\xcc\x44\x9b\x4f\xea\x48\xc0\x15\xfe\x4d\x90\x7b\x3e\x55\x05\xcf\xf5\x0a\x12\x18\x19\xa2\xe4\xa8\xa2\x96\xd5\x75\x10\x15\xbb\xcd\x7e\xf6\xfb\x7c\x27\x27\xbb\x00\x0b\xe1\x34\x2a\x7d\x14\xbc\xa9\x79\x04\xed\xfe\x8b\x18\xdd\xb6\x39\x33\x41\x83\x27\xa5\xaf\x81\x7e\x95\xba\xd7\x4e\xb7\x90\x20\x36\x15\xd0\x82\xe7\x14\x93\xea\xd4\x7c\xcc\x09\x01\xa2\xca\x9f\x50\x13\x3c\x44\xef\x85\x08\xd5\x1f\xb7\x3c\x61\x6f\x01\x47\x53\x22\x45\x82\x2d\xd1\x02\xb3\x37\xa1\xb2\xaa\xe2\xef\xc7\x2d\xca\x7a\x94\x19\xd5\x98\xa6\x47\x52\x33\xdc\x1a\x4e\xe0\xec\x6d\x05\xda\x12\xa2\xb2\x87\xcb\x77\xff\xaf\xdd\xe2\xd0\xac\xc2\x81\x99\x93\x3e\x66\x21\xee\xc1\x6a\xb4\x24\x51\x70\xcf\x02\xda\x80\xd4\x92\x26\x31\xa2\x32\x72\x91\x51\x65\xad\x88\x72\x27\x50\x03\x5d\x2a\x09\x77\xbc\x79\x1d\x14\xfb\x3d\x8c\xb0\x2b\xc7\x7f\x7c\x71\xbe\x52\x42\x62\x9a\x4c\x9a\x58\x8d\xfd\xde\x95\x78\x49\x4d\x8b\xaa\x4e\x68\xf5\x19\x4b\x80\x02\xc8\xe3\x78\xa0\xe8\x33\xb7\xc1\xa9\x69\x81\xc4\xfb\x05\xe4\x57\xff\x48\x26\x0b\x72\x49\x3c\xbc\xb8\x2a\xe1\x16\x73\xd1\x4c\xee\x85\x28\x8f\x63\x70\xbd\x4b\xca\x92\x51\xa7\xe2\x14\xc3\xeb\x79\xe7\xbb\x6f\xce\xbb\x16\xc9\xe0\x56\xf2\x9b\x62\x72\x74\x3e\xfa\x6f\xe8\xbf\xd2\x55\x97\xce\x86\x89\x8a\xb3\x05\x9e\xb0\x23\x1c\x73\xb5\x30\x59\x03\xfd\x13\x19\xbd\xf4\x9e\x59\x9d\x8b\xbc\xd7\x4a\x8b\x97\x67\x30\x8b\x61\x56\x3c\xcb\xac\xd3\x8f\xc5\x0c\x83\xab\x44\xca\x75\x9d\xc9\xb6\x5b\x2a\x4b\x54\x7c\x50\x97\xf2\x20\xc1\xc8\x8b\x2b\x0a\x48\xf6\x5f\x91\xfe\x78\xb1\x50\x12\x78\xe1\xe3\x04\xde\x58\xb4\xc8\x2a\x5c\x39\x99\x81\x09\x8a\x17\x84\xeb\x90\x42\x50\x18\x59\xf2\xa9\x3f\x31\x7e\x41\x77\x2f\xd5\x2f\x97\x2e\x51\xb0\x7e\xd9\x4d\x31\x4e\x1d\x1a\xf4\xed\x82\x90\x9a\x0b\xef\x67\x1f\x54\xb5\x5d\xb7\xb7\x0d\xa1\xf7\x18\xc8\xe6\x48\xae\xdd\x6d\xa6\x4b\x05\x77\x05\x26\xf1\x2b\xc4\x3f\x68\xb9\x55\x48\xda\xc5\x08\x09\xa6\x87\xdb\x97\xd7\x3f\x06\xf4\x7e\xd0\x88\x31\xb6\x0a\x28\xe9\x82\x92\x06\x32\x05\x8f\x0e\x6c\x90\xc0\x18\x7f\xf4\x45\x64\xf8\x1e\xfd\x8f\xd9\x3e\x32\x7b\xc6\xd8\x0b\x49\x0e\x08\x8b\x9a\x10\x03\x6c\x80\xdc\xda\xd4\x9d\x2b\xe0\x74\xfb\xba\x31\xe0\x6f\x71\x80\xe5\xad\x1c\x88\x23\xd6\x09\x66\xa9\xce\x15\x50\x3c\xe6\x0d\xd4\x0e\x91\xee\xf2\x35\x9d\x83\xd7\x0d\x98\x40\x1d\xde\x7b\xe3\xc6\xb0\x7e\x57\xd4\xe4\x7d\x04\x21\x76\x33\xd8\xe2\x63\xca\x34\x8f\x81\xfb\xe9\xa4\xa6\x2f\x45\xd7\x7c\x84\x3b\x6b\x1a\xd2\x84\x66\xd9\xda\xfb\x1b\x91\x0b\x34\x8e\xd8\x7c\x68\x6c\xab\x29\x2d\x48\x0c\x19\x1d\x18\x7b\x40\x4a\x9b\x1d\x13\x2b\xa4\xe2\x93\xd3\xad\xa9\x91\x72\xac\xc1\x21\xfe\x66\xb8\x45\xb9\x8b\x16\x0c\x58\x23\xf6\x01\xc7\x75\x8f\xb2\x6c\xae\xe8\x57\x01\x59\x5b\x2d\x52\xca\xa2\xf5\x68\x8a\xa2\xbf\x2f\x6c\x4b\xb6\x37\xf8\xe0\x0f\x49\xab\x6c\x26\xbc\x6a\xd8\x9e\x13\x67\xfd\x28\xe4\x91\x7d\x25\x08\x93\xa7\xb3\x2d\x39\x66\x0b\xde\x8d\xb4\x9f\x08\x6f\xb7\x39\xe5\x60\x12\xc3\x6b\xea\x0b\x26\xcf\x6d\x93\x57\x94\x0b\x00\xd5\xa4\x52\x8f\x90\x59\xaa\xf0\x86\x69\xe5\xf4\x6c\x99\x5e\x60\xf8\x87\xb5\xc4\xab\x88\xac\x74\x42\xed\x01\xa1\x4c\x6a\x42\x00\x6b\xaf\x1f\x34\x3f\xef\xe3\xe4\xac\xa8\x43\xa3\x24\xe1\x76\xb2\xfe\x7e\xc7\x88\x3d\x1c\xbd\x06\x8b\xc2\xfc\x96\x2f\xfa\x60\x24\x4f\x65\x4c\x77\xac\x56\x50\x81\x7d\xc0\x84\x46\x55\x45\xa9\x23\x0a\x74\x82\x6b\x0c\x50\xeb\x85\x25\x2a\x88\x6f\xf2\xb1\xaf\xea\xf8"}, +{{0x88,0x3c,0xc1,0x38,0x17,0x57,0xb0,0xfe,0x04,0x55,0xb7,0x7b,0xc9,0xcd,0x0d,0xd4,0x64,0xd2,0xb4,0xbf,0x0c,0x7a,0x3c,0x0c,0x2d,0xc7,0x75,0xfb,0x78,0xaa,0x37,0x32,},{0x83,0xa8,0xb6,0x69,0xcc,0xd0,0x12,0x45,0xce,0x3b,0x81,0x8d,0xcb,0x1b,0x58,0x8f,0x86,0x53,0x58,0x50,0xe6,0xc7,0x10,0xc7,0x92,0x17,0xfe,0x43,0x98,0x24,0xf3,0xfa,},{0xc7,0xcf,0xd5,0xc9,0xfe,0x93,0x0d,0x15,0xa1,0x1e,0xbb,0x34,0xe3,0x43,0x1f,0x48,0x9d,0xa0,0x10,0xeb,0x19,0x3e,0xdb,0xfa,0x6f,0x23,0xd5,0xd1,0x4d,0xd8,0xfe,0xab,0xd7,0x88,0x0d,0x2d,0x5a,0x56,0x00,0xd3,0x85,0x46,0xce,0x3b,0xc6,0x4a,0x86,0x29,0x1a,0x1c,0xe3,0x1f,0x27,0x2f,0xf0,0x20,0xdf,0x8c,0xb6,0xa0,0xfd,0x4d,0x3a,0x0d,},"\xff\xec\x29\x3d\x12\xea\x63\x6c\xa4\xc4\xa0\xa5\xe2\xdb\x15\x34\x26\x39\xc4\x76\x67\x4d\x2e\xbd\xab\x4a\xef\xd4\x04\x6b\x5d\xdb\x56\xae\xb2\x10\xc1\x19\xaf\xdf\xb8\xa8\x91\x28\xa3\x4f\x6d\x77\xf2\x61\xed\xea\x07\x72\xa2\xf8\xdb\x14\x0a\x26\x40\xfd\x8e\xca\xdb\x0b\x47\x92\x16\x9b\x6b\x28\x10\xae\xe2\xc5\xcd\x83\x52\x88\xbf\xf4\x93\xbc\xeb\xee\xea\x28\xa7\xa2\x48\xc3\x61\x16\x54\x0f\xa7\x17\x36\xd6\x6b\x0a\x47\x5b\x5f\xa9\x2c\x0d\x46\x00\x2f\xca\x7a\x1e\x69\xd1\xb5\x9e\x81\xa3\xa6\xd4\xf3\x39\x76\x9d\xae\xb2\x0b\x5f\x9d\x75\xc4\xc2\x8f\x69\x21\x32\xd2\x8d\x3c\x56\x4c\x09\xfe\x3d\xcc\xa0\x35\x9c\x3c\x63\xec\x37\x7a\x33\xf9\xee\x87\x4d\x8a\x78\x9d\x77\xc9\x6a\xc0\x5f\xdf\x3a\xb3\x8b\x2c\x82\x74\xa9\x02\xef\x8b\xb7\xf4\x67\xfc\x7e\x07\x3c\x77\xb1\xdb\x5f\xc8\xef\x96\x6c\x12\x0c\x4d\xae\x3f\xb7\xf5\xb7\x4a\xbb\x99\x01\x66\xc8\x12\xa5\x25\xd1\x23\xf7\x6e\xd5\x12\x12\x50\x80\xa1\x53\x4f\x3d\x8b\xdc\xcc\x54\x1f\xc9\x75\x90\x28\x75\x46\x09\x6f\xc8\x80\xbf\xcf\xdd\x00\xe6\x5c\x0e\xbf\x4a\x09\xfd\x64\x76\xce\x1b\x7c\x8f\xaa\xa5\xa1\xcc\x27\x86\x71\x9a\x30\xd8\x25\x58\x11\x18\x47\x52\xa8\x8b\x08\xac\x9f\x0f\xf1\xd6\x26\x2f\x25\x86\x94\x0a\xfe\x1f\xe4\x5e\x0b\x56\x34\x48\xa5\x5f\x30\x30\xe4\xc3\x9c\x1f\x3f\x86\xa7\x33\x67\x03\x80\xea\xb0\x88\xe3\x93\xde\x09\xd1\xf5\x08\xd2\xfb\xca\xfc\x64\x9a\xea\xe6\xb8\xc3\x0e\x32\x9e\xc3\xfd\x28\x29\xbe\x6d\xb0\xab\x8e\x63\x7e\xa1\x09\x5b\xdc\x3d\xf3\xac\xc2\x3d\x3c\xf7\x05\xa9\x54\x2c\x19\xe5\x90\x92\xec\x41\x3a\x4e\x2b\xd5\xde\xd2\x8c\xd3\x4d\xdb\x3d\x32\x94\x9a\xa4\x87\xf1\xc3\x37\xd6\x97\x9c\xf5\x12\x62\x2d\xbf\xb7\xda\x1c\xbb\x1c\x7e\x5a\xbe\xea\x70\x09\xe2\x94\x3f\xfb\xa2\x25\x2e\x1d\x86\xec\xa9\xd6\xd5\xc2\x46\xcd\x2e\x13\x4a\x3e\x5d\xad\x37\xef\xef\x71\xce\x39\x7a\xda\xfb\xd9\xe7\x2b\x3f\x9a\x86\xff\x0f\x5d\x81\x2c\x46\x22\x5b\xeb\xd0\x70\x3b\xc5\xcc\xe9\xc6\x45\x82\x00\x8f\x7e\x55\x8c\x40\xa3\xb3\x52\x20\x96\xd1\xaa\x2b\x61\xbc\x90\xcd\x88\xc6\x28\x5d\x94\x20\x87\xd8\xa4\x66\x5a\x0e\x64\xd3\x57\x2f\x74\x68\x9b\x4f\x24\xef\x40\x0d\x74\x1b\x57\x14\x06\x13\x47\x14\x44\xde\xcc\x65\x4a\xf0\xff\xb2\xed\xfd\xf9\xfd\xd0\x75\x09\x81\x90\xb3\x4c\xde\x28\xdd\x16\x68\x72\xc6\x08\x65\x67\xa6\x87\x61\xce\xf2\x5d\xa4\x0b\xd4\xc3\xd3\x4f\xdd\xd7\x2e\xe5\x65\xb0\xb9\x37\x67\x8e\xe8\x43\x49\xd1\x16\x0f\x5f\x07\x05\xf8\x95\xd0\xf1\x41\xce\x8f\x51\xa1\xe4\xfd\x2d\xc4\x70\x4b\x52\x7a\x40\x25\xa9\x39\xcb\x2b\xb7\x88\x57\xeb\x18\xd7\x88\x72\xed\xc9\xee\x70\xe6\x0b\x2a\x42\x70\x0a\x19\x8f\x4f\xff\x6c\x31\x92\x51\x68\xbe\x07\x7d\xc2\x3c\x32\x2a\xbb\xca\x97\x36\x1f\xec\xaa\x3f\xcb\x19\x6e\x65\x6c\x12\x8f\x39\x82\xfe\x11\xe5\x51\xa4\xa0\x88\x5d\xa6\x0d\x39\x7d\x0e\x40\xd0\xd8\x97\x26\x2f\x1b\x4b\x67\x2f\x78\xa2\xd2\xad\xfc\xdd\x6e\x15\x25\xc2\x6e\x71\x95\xfb\x9a\xc6\x06\xbb\x1b\xa4\xa9\x89\x08\x03\xb4\xbd\x84\x34\x6a\xe8\xd8\xc7\x19\x6c\x90\xae\xcc\xb2\x96\xa4\xc3\xeb\x4e\xfa\xcb\xfc\xb6\x2e\x38\x3b\x8a\x49\x4a\xc7\x23\x56\x2d\x0d\x8c\x37\x91\x87\xa9\x2e\x3b\xda\x6b\x15\x69\x47\x6a\xed\x21\xae\xd7\xa0\x56\xb4\xa5\x82\x67\x44\x01\x7c\xc0\x06\x0b\x4d\x55\xfa\x87\x72\xb5\xb1\xc1\x5f\x57\x48\xad\x72\x98\x00\x5a\xec\xbc\xbd\x90\xa3\xe5\xc6\x15\x9a\x86\x74\xab\xbb\xa3\x79\x14\x41\x50\x02\xb5\xa6\xef\x5d\xf3\xc6\x49\x42\x6e\xa1\x27\x5a\x01\xd8\x0a\xdf\x49\x0a\xc5\x46\x06\x2d\x93\x99\x9a\x6d\xcc\xac\xb9\x6a\x09\x04\xad\x33\xd9\x05\x76\xdc\x6a\x21\xb6\x72\xe8\xff\xb0\x66\x13\xfb\x3f\x14\xe6\xcb\xdd\xe8\x8c\x24\x37\xc9"}, +{{0x5e,0x40,0xa7,0xaa,0xbb,0xb0,0x83,0x0a,0x9a,0xb0,0xfd,0x79,0x69,0x0e,0xe0,0x43,0x39,0x01,0xc6,0xcb,0x06,0x76,0xab,0xe4,0xbb,0xa0,0x6f,0x5b,0xbe,0x58,0xfa,0xc2,},{0x4d,0x4f,0x28,0xfe,0x09,0xc4,0xaa,0xbf,0xca,0x01,0xef,0x6e,0xe7,0xfd,0x63,0x72,0xfb,0x62,0xdb,0x61,0xaa,0xee,0x82,0x7c,0x43,0xfd,0x1a,0x6d,0x1c,0x25,0x90,0x32,},{0x59,0x76,0x72,0xab,0x8d,0x3a,0x60,0xde,0x54,0x56,0xfc,0xc9,0xc3,0x82,0x53,0xf5,0xf3,0x7b,0x80,0xe7,0x4a,0x00,0x7c,0x9f,0x6d,0xb9,0x09,0xd2,0x7d,0x0e,0xad,0x16,0x27,0x89,0x24,0x49,0x94,0xf3,0x5b,0x80,0xd6,0x1b,0xe1,0x99,0xc4,0x17,0xc7,0xea,0x90,0x1b,0x98,0xcc,0x63,0xfe,0x3c,0x50,0xfc,0x3c,0x63,0x38,0x49,0x0f,0xa2,0x06,},"\xfd\x4e\xc8\xb3\x4f\xc6\xb7\x43\x81\x3f\x59\xe2\xfd\x1f\xef\xa8\x70\xf5\xa9\x70\xe2\xeb\x75\x16\xef\x7c\x30\x6f\x4b\x82\x3f\xfe\xe9\x2d\x60\x1f\x76\x5d\x79\xca\x14\x6a\xba\x8b\xc6\xe7\x98\x44\x55\x99\x35\xcd\xdc\x24\x26\x49\xc0\x59\xec\xf2\xdb\x84\xfd\xc2\x19\x36\x66\x88\xa8\x8f\xc2\x5b\x85\x1c\x36\x61\xe5\x19\x88\xc2\xbf\x73\xbb\x8e\x3d\xc1\x6d\x22\x41\x5a\xb1\xa7\xb3\x55\x79\xda\xac\x73\x25\xe3\x19\x15\x7d\x7d\xa5\xfe\xe8\x7c\x93\xa4\xdf\xcb\xaf\xc9\x2f\xba\x7e\x17\xcc\x68\xe3\x90\x37\x33\xc6\xc8\x01\x57\x2d\x90\x73\x20\xb2\xfe\xb5\x17\x10\xe8\x56\xa1\xf7\x6f\x85\xa7\xee\x1a\x11\xe6\x2d\x2e\x45\xa3\x52\x93\x8d\xd8\xcf\xc2\xbc\xcb\x90\x2d\xea\x44\x4f\xaa\xae\x6d\x84\xc5\xf3\x91\xe1\x0a\xef\x76\x92\x8a\x45\x15\x3d\xb6\xcd\x25\xa2\xbf\x35\x3d\x80\xd9\x7b\xf4\xb3\x80\x86\x05\xe8\x98\x00\xd2\x98\x40\xea\x60\x97\x8d\x9e\xc9\xb2\xc3\x02\x74\x98\x88\xf9\xde\xbc\x84\xdd\x1e\x2a\x79\xaa\x0b\x6b\xa0\x2a\x03\x91\x93\x08\x1b\xdb\xff\x05\x99\xa1\x4d\x91\x8c\x0c\x8d\xea\xc4\xf6\x0b\x6e\x99\x47\x4a\xb5\x30\x11\x74\x10\x34\xfe\x2a\x20\xcf\xf4\xe0\xf0\x23\x42\x4c\x8e\x57\x97\x76\x8a\xd5\x3d\xf6\xd0\x1a\x24\x01\x1f\xa9\x0f\x0b\xb1\xd5\x06\x9c\xdb\x36\xb4\x50\xf4\x33\x11\x0c\x2c\x56\xf3\x4a\x1d\xe4\x26\x09\x14\xcd\x46\x96\xb1\x4a\x09\xc0\x26\x8b\x2a\xe2\xe9\x8e\x6b\x4e\x99\x2b\x91\x25\xf8\x78\xf1\xac\x09\x82\x31\x70\x62\x83\x88\xf0\xf6\xe2\x56\x25\x9c\xa7\x86\xbb\xe1\x44\x88\x4c\xb2\x98\xcc\x04\x3d\x02\xf5\xc3\xdc\x68\x4f\x78\x7f\xaf\x16\xc1\x0f\xdd\x84\x37\xa8\xc3\x09\x74\x63\xbd\xb9\x9b\x78\x03\x0f\x94\x74\xfc\x5c\x99\x51\xdc\x75\x26\x49\x05\x86\xfe\x1c\x2d\xb0\x54\x11\x34\x14\x60\x23\x9d\x5e\x8b\xc5\x30\x65\x90\x2b\x95\xfb\xa2\x82\xc2\x76\x65\xe8\x69\xa1\x9d\xae\x84\x60\x6d\x17\x26\x67\x51\x55\xd3\x80\x39\xb9\xe5\x5d\xb4\xd5\xce\xec\x95\xcd\x6d\x87\xf8\x5e\x99\xdd\xe5\x4a\x04\x76\x1e\x6e\xad\xa6\x61\x9d\xa8\x95\xb6\x54\xfe\x38\x45\xe8\xa6\x0f\x3a\x3b\x32\x48\x3d\x6d\x27\x97\x8a\xf5\x45\x02\xb2\x20\xe4\x78\xdb\x78\xcf\xf7\x7a\x9c\x97\xfb\x79\xfb\x5a\xcf\x56\x28\x9f\x38\x1a\xcb\x10\xde\x64\xc3\xf2\x38\x42\xb1\x2b\xf5\xf1\xb2\x83\xbd\x25\xd4\x8d\x09\x12\x8f\xb5\x5d\xda\xe2\x55\xbe\xb7\xc6\x6a\x74\xcf\x6f\x06\x95\xa4\xf8\x28\xcb\x29\xe4\xaf\xdb\xb3\xb4\x2a\x23\x5d\x4f\xdb\x66\xb9\x63\xac\x8f\x68\xe8\x2b\x00\xa1\xc4\x50\x08\x63\x29\x62\x47\x17\x8c\xfd\xef\x80\x3b\xb7\xb1\x14\xf0\xc0\x32\x76\xf6\x71\x66\x9a\x08\x7d\x92\x28\xa3\x7a\xe7\xb9\x9b\x06\x15\x49\xc1\xcf\x8e\xc1\x72\x46\xea\x1e\xe0\x3d\xbc\x88\xbf\x42\x64\x16\xd5\x86\x57\x2f\xf1\x0a\x31\x45\x60\x6f\x27\x84\xe4\x35\x7b\xe4\xed\xee\xc6\xc3\xa7\xbf\x11\xbb\x5b\x0e\x90\xcf\x50\xed\xaf\x89\x1e\x51\xd2\x63\x57\xbf\xc8\x53\xce\x23\xb2\x99\x15\x5c\x82\xc1\x03\x1d\xfa\x64\x07\x4d\x72\xa0\x9d\x29\x72\x0e\xad\x6e\xbb\xbf\x75\xd5\x73\x8e\x32\xcd\xa6\xb6\x46\x6a\x8d\xef\x6b\x50\xa1\xed\x9b\x86\x5a\x9a\x88\xa0\x80\x18\xac\xb5\x01\xa4\xde\x9d\xb5\x4d\x05\x22\xce\x9c\xec\x7a\x06\xbd\x9a\x5f\x86\xb0\xb4\x6c\x07\xbf\x3e\x7f\x5a\x42\x6f\xf6\xb4\xbb\xe1\xe0\x03\x13\xa5\xac\x27\x19\xa9\x59\xed\x44\xee\x0a\x44\xbd\x97\xda\x6d\xb2\xcb\x97\x1b\xd6\x83\x34\x90\x89\x49\xed\x85\x0f\xbf\x73\xd0\xe0\x20\x49\xda\x18\x1c\xce\x9c\x2d\x9c\xa1\xb6\x24\xc8\xd8\x7c\xf9\x04\xeb\x82\x1d\xc7\x95\x92\x95\xda\x57\x77\x92\x06\x60\xb4\x3c\xcc\x25\xcd\x38\x9f\x15\x7f\x67\xfa\x03\x90\xfe\xac\x97\xa7\x52\xc1\xac\x20\x4c\x21\xdf\x56\xbb\x0f\x4f\xc0\x16\x41\xb4\x80\xaf\x2b\x89\xb5\xd1\x6d\x4a\x0b\xcb\x0a\x50\xb8\x2b\x0e\x04\x84"}, +{{0x3a,0x34,0x13,0x6a,0x97,0x34,0x80,0xd9,0x70,0x06,0xdc,0x27,0x93,0x58,0xe6,0x60,0x62,0x93,0xd8,0xcb,0xc1,0xa4,0x4e,0xe5,0x52,0x33,0xaf,0x2b,0x52,0x64,0xb9,0x0c,},{0xe5,0xef,0xfd,0x92,0x1b,0xe8,0xee,0xc5,0x30,0x75,0x2f,0xcc,0xc5,0x76,0xef,0x0d,0x9b,0xcd,0xe4,0xb3,0x2c,0xc6,0x49,0xd3,0xf7,0x95,0x47,0x17,0x56,0x28,0x60,0xcc,},{0x42,0x5f,0x27,0x22,0x12,0x83,0x57,0x55,0xad,0xcc,0x05,0x22,0xc6,0xf6,0xe0,0x5f,0x68,0x00,0x8a,0x3b,0xe9,0xba,0x59,0x74,0xe4,0x20,0xc4,0xc5,0xcb,0x56,0xe6,0xc5,0x5d,0xec,0x0d,0xe3,0x47,0xb1,0x6c,0xae,0xf8,0xbd,0x33,0xb7,0x1b,0x44,0xc8,0x35,0x7d,0x05,0xb6,0x32,0x1d,0x7b,0xf4,0x93,0xd2,0x58,0x61,0xdb,0x48,0x7b,0xd6,0x03,},"\x98\x1c\x8e\x10\x90\xe3\x96\x95\x1b\x07\x2e\xf8\x49\x70\x62\x02\x08\x97\xbf\x7d\xd7\xad\x50\x5b\x4d\x6d\xc1\x1b\x3e\x1d\xbc\xb0\xda\x24\x99\x84\xa1\x40\xe1\x64\xfc\x2e\x02\xb3\x1d\xa3\x98\x46\x55\x4a\xa8\x90\x5b\xc8\xb3\xdf\x8a\x76\xbf\x60\xeb\x5f\xfc\xf2\x2c\x97\xb6\x71\x22\x7d\x24\x90\x71\xda\x8f\xf6\xbb\xa7\x5b\x2f\x76\x68\xce\xc1\x9a\x89\xe6\x47\x5a\x12\x46\x3d\xab\xf3\x68\xb3\xca\x24\x45\xbb\x30\x35\xcc\x00\xfa\xe8\x5b\x70\x72\xfb\xcf\x59\x54\x01\x75\x5b\x80\x51\xe6\x09\x70\x65\xae\x42\x9f\x18\xee\xb1\x3f\xfa\x6d\xde\x59\xdf\x6f\x3c\x20\x6b\xfd\x9c\xe1\xf8\xa8\x00\xc8\x59\x0a\x40\x21\xd1\x60\xf6\x6d\x67\x40\xa3\x69\xae\x83\x56\x17\x53\x8b\x58\x90\x23\x1f\x13\xc5\x66\x7b\xaf\x51\x0a\x60\x6b\xda\xa8\x4b\x8d\x10\xee\x60\x15\xe1\x2a\x4c\x1e\xc0\xbd\x04\x21\xa2\x94\xc5\x1c\xf6\x3b\x5d\x1f\x05\x8e\x11\x53\xdc\x42\x5d\x10\xce\xe8\xb1\xb0\x84\xd6\xc2\x93\x47\xe9\x6f\x0f\x31\xb8\x39\x60\x7d\x07\x8b\x79\xa9\x0c\xa3\xd1\xf0\x63\x80\x7a\x46\x3b\x7c\x32\xf4\x5a\x53\x44\x98\xd7\x1d\x47\xed\xc3\xb1\x7a\x4d\xff\x27\xfe\xdc\xff\xab\x30\x1f\x34\xf1\xa6\x4c\x02\x78\xa5\x35\x89\x34\x9a\x23\x3a\xf3\x0b\x1e\xc1\xae\x41\x0f\x7b\x16\x30\xc7\x14\x5c\xa4\x2c\x96\x63\xf5\x12\xe8\xa5\x78\x26\x7d\xc9\x5e\x83\x28\x9c\x17\x03\x2e\x09\x78\x2e\x2f\xe8\xe1\x6e\xfb\x87\xf0\x3c\xa0\x3b\x11\x95\x61\x4f\x89\x96\x1c\xa3\x93\x9d\x3b\xdf\x73\x72\x21\xa2\x2d\x7a\x18\xec\x30\xfc\x12\x6d\x0c\xa6\x63\xe8\x8d\x60\x60\xd0\x4c\x6a\x44\xe5\x61\x6e\x55\x6e\x07\xd6\xd4\xa8\x47\xf1\x71\x1c\xf4\x37\x17\x81\x0c\x70\xaa\x4b\xe7\x30\x27\x8b\x3b\xd6\x55\x5c\x95\x4d\xc6\xed\xb0\x9d\xb0\x8f\x0e\x21\x18\x03\x59\x62\x80\xf3\xc7\x86\x8d\x23\x42\xcc\x23\x08\xea\xae\x4d\xa1\x91\x35\x14\x66\x4b\x1d\xb9\x62\xe9\x9c\x8a\x8c\xff\xe5\x79\x31\xf5\xdf\xcd\xdb\xc1\xcb\xb3\x6c\xe1\xc8\x42\xe2\xdd\xde\xad\xfd\x7e\x7d\x0a\x50\x48\xcd\xcb\x96\x1b\x14\xf3\x5f\x43\x5e\x73\xa6\x83\xc8\xce\x25\xc8\x16\x81\x25\x66\xfd\xf8\x17\xe0\xd3\x36\xae\x0b\xd2\x47\x32\x85\x12\xb2\xa8\x56\x76\x32\xbf\x20\x55\x3d\x9b\xd6\xfe\x15\x7f\x22\x0f\xfb\x0b\x46\xeb\xae\x89\xa7\x04\x59\x72\x8a\x57\xee\xd1\x79\x62\x56\xf1\xbd\x50\xb6\xd5\x47\xea\x3e\x25\xfa\x59\x13\xd3\x89\xa2\x25\x83\xe9\x15\xeb\x49\xde\x35\xa9\x7b\x5a\xcc\x52\x1d\xb0\xd0\x05\xc2\x95\x75\xe1\x66\x11\xa7\x55\xf2\x1a\x3a\x5a\x82\xa2\x0a\xa9\x00\xa7\x07\xce\x36\x82\x54\x92\xc3\xca\x15\x39\x5f\x17\x00\xb4\xaf\xab\x94\xda\xa7\xa0\x2f\x14\x53\xb1\xf9\xa6\xbd\x36\xef\xb2\x04\xd9\x28\xee\x1f\x4d\xcc\x86\x0f\x3a\x85\x9b\xad\xc0\x06\xfb\x30\x5f\xa1\x23\xd4\xc7\x9b\x23\xa2\x0e\x32\x29\x5d\x04\x0a\x7f\x8f\x6c\xac\xa2\x5d\x83\xf7\x1c\x62\xe3\xaf\x78\x36\xef\x76\xb9\x3a\x83\xd3\xc3\xb4\x93\xaf\x14\x17\x53\xda\x19\xe4\xcd\xcb\xa5\x66\x17\x27\x10\x34\xb4\xf4\xf3\x94\xc7\xc6\xb7\xd7\x96\x66\xf3\xaf\xb6\x92\x24\x4f\x06\x1c\x69\xa8\x88\x1d\x1b\x52\xb8\x84\x9f\xb5\x34\x99\x0a\xc2\x39\x19\x09\x47\x1e\xbb\xb7\x28\xe2\x9c\xd2\x0f\x42\x23\x54\xc4\x30\x97\x17\xeb\xff\x3e\xfd\x18\x33\x37\x08\x06\xd5\xbf\xb5\x3c\xa2\xda\x31\x6d\xac\xb5\x0a\xb7\xfb\x73\x96\x73\x23\x5a\x1d\xc5\x3a\xa8\x89\x30\x72\xd5\xb9\x1c\x9f\x6d\xb8\x3f\xc4\xea\x41\xd1\xee\xf4\x9a\xc2\x8a\xfc\x1c\xed\x8f\x36\x18\x90\xab\x9f\x77\x9d\x19\x30\x82\x83\x1c\xb8\xc4\x2f\xb2\x79\x2b\xee\x3b\x26\x29\x6b\x62\x95\xeb\x78\xa8\xd8\x53\x11\x76\x61\x62\x4e\x11\xf7\xf5\x7a\xfd\x60\x85\xa7\xb9\x12\x36\x79\xfd\xac\xa1\xcf\x2a\x78\xd3\x80\xbc\x4c\x36\x0a\xa7\xc3\xcb\xfd\xe0\xc0\x09\x1f\xe5\x3e\x22\x19\xc0\x70\xf2\xf0\x2f\x14\x83"}, +{{0xcf,0x33,0xe7,0x97,0x4d,0x8f,0x0b,0xf8,0x99,0xac,0x5b,0x83,0x4c,0x7c,0xf9,0x64,0x79,0xce,0x1c,0xfd,0x45,0x3a,0xf0,0x7f,0x97,0x05,0x27,0xf3,0x6a,0xa8,0x5c,0x1f,},{0x57,0x8f,0x60,0x33,0x8b,0x1f,0x04,0x1a,0x97,0xd3,0x19,0xfe,0xcf,0xa3,0x0c,0xfa,0xed,0x36,0x93,0x03,0xcc,0x00,0xb3,0xec,0x8c,0x5c,0x99,0x04,0x11,0x58,0xe2,0x0c,},{0x97,0xa5,0xb6,0xd2,0x68,0xa5,0xb4,0x17,0x5f,0xb0,0x6f,0x1f,0x37,0xd0,0xa6,0x33,0x51,0x92,0x96,0xed,0xc3,0x00,0x11,0xc9,0x54,0xd8,0xf0,0xb9,0xbb,0xe2,0x64,0x18,0x00,0x39,0x6c,0x4b,0x35,0xd4,0xb0,0xd7,0xd2,0xa1,0xd1,0x7c,0xbb,0xeb,0xdc,0x55,0xa8,0x09,0x46,0x2d,0x6c,0xc1,0x9a,0x6f,0xad,0xbe,0x1b,0xd1,0xba,0xe8,0x8a,0x01,},"\xe8\x13\x14\x4b\xd1\x16\xf6\xac\x36\x38\x92\x17\xb5\x17\x1a\x90\x2f\x06\xb7\xdd\x7b\x14\x4d\xf4\xf9\x09\x15\x53\xc7\xc7\x83\x57\x53\xa2\x96\xcb\xb0\xd7\xfa\xb9\x9c\xef\x77\xb6\x1f\x34\xa0\x4c\x8a\xf0\x4e\x7d\x5d\x1f\x96\x13\x02\xde\x89\xe2\x00\x5f\x29\x9f\x5a\x4a\xa1\x79\x24\x61\x7d\x00\x66\x93\x93\x77\x45\x53\x9c\x30\x48\xee\x36\xb8\xc2\x3a\xfe\xc0\xaf\x9f\xea\xa0\x06\x6c\x8a\xf8\xe0\xa7\xf0\x90\x93\x49\x82\x10\xf6\xd8\xdc\xc0\xaa\xad\xa5\x66\x87\x86\x91\x0f\xf7\xc5\xb3\x48\xd4\xcc\xd6\xee\xef\xfa\x3a\xcd\x18\x16\xd9\x01\x1a\x4c\x40\x25\xf6\xc2\xfd\x2c\x02\x0a\x10\x59\x36\x27\x52\x0d\x4d\xd9\x9e\x07\xc6\x2d\x2d\xbe\xbe\x84\x13\x9e\x1c\x7d\x86\x7c\x09\x35\x74\xfa\x60\x1e\x4e\xe3\x07\xac\x92\x6e\x5d\x36\xb6\x2d\x7e\xd8\x4a\x26\x15\x88\xb7\xe2\x88\x3c\x79\x26\x61\x2b\x4c\xc6\x7e\x2b\xb7\x25\x44\xa1\x0d\x6b\x49\x29\xc8\x8e\xf6\xc4\x7c\x26\x25\xd2\xf6\x81\x6b\xd7\x3c\x3b\xae\x89\xd2\xe0\xc8\x61\x71\xac\x4b\xd0\x80\xae\x55\x5d\x62\x74\x0d\x1d\x2a\x76\x1c\xed\x86\xdf\xc3\x28\xec\xc2\x7e\xe3\xdb\x6d\x40\x41\x08\xef\x4e\x0b\x64\x90\x62\x53\xb4\xc0\xa7\x71\xad\xef\xed\xc8\xa2\xc5\xb5\x3c\x42\x5a\x70\xcd\x6f\x63\x95\x6f\x7a\x0a\x61\x9f\xdf\xbf\xd0\x0a\xa0\x78\x41\x8e\xb4\x65\x2f\x8b\xc6\xf3\xc2\x53\xbe\xec\x98\x38\xb7\x7f\x9c\xbe\x2e\xf2\xb8\x05\x5c\x57\x73\x53\x9e\x35\x6b\xd8\x19\x26\x06\xec\x10\x1e\x3f\x60\x58\xb1\xdd\x08\xa6\x8f\xdb\xc5\x49\xdf\xe6\xb7\x72\x5d\xc2\x54\x9e\x8e\x3f\x90\xdc\x5b\xe3\xcc\xfb\x0a\x38\xba\xf9\x37\x7c\xb3\xf6\x50\x1d\x2e\x15\xcc\xb3\x55\x6a\x89\x5c\xcb\x23\xf0\xb6\xdf\x9f\xe5\x93\x11\xcf\xf5\x53\x74\xc3\xfb\x3a\x32\x98\x1c\xa2\x6a\xb4\x26\xf3\x66\x3d\x04\xe3\x16\x7e\x53\xa5\x37\xb7\x58\x9a\x9f\xb7\x36\x79\x09\x0a\x20\x55\x32\xc1\x32\x90\x66\x34\x33\x4a\x7e\x87\x49\x79\x3f\x8c\x59\x3f\x3f\xd6\x27\x8c\xe0\x05\x03\x83\x48\x7f\x3b\x24\x50\x67\xaf\x94\x88\x1a\xa1\xae\x96\x8d\x0c\xae\xba\x5f\xa5\xc7\xbe\x5f\x4e\x4b\x72\x57\x51\x86\x95\xd8\x9b\xcc\xde\xc5\x07\xb9\x67\xb4\xfd\x64\xb6\x89\x3b\x3e\xe7\x80\x3c\x1d\x36\xea\x8a\x02\xfc\x42\x6f\x9a\xfc\x8e\x9f\x24\x32\x15\x27\xec\x98\x44\xbc\x3c\x54\xa0\xf7\x66\x7e\x03\x43\x00\xbb\xb4\xfb\x02\x0f\x6d\x5b\xb9\x54\xe7\xb5\xa3\xa7\x06\xa4\x93\x9d\xb3\x3c\x15\x48\x92\x64\x34\x76\xa2\x91\xd4\x7d\xc1\xe6\xf7\x2c\xe9\x1d\x13\x6f\x11\xdb\x26\xb9\xc9\xba\x73\x6e\x40\xdf\x0a\x15\xc1\xa8\x91\x49\x99\x6b\x25\x1d\xd9\x88\xb3\x90\x04\xe6\xef\x41\xbd\xc0\x61\xdb\x58\x0b\x7b\x74\xde\x2a\x65\x18\x10\xbd\x89\x17\x53\xb9\x73\x86\xd7\xf8\xcb\xdb\xb6\xec\x38\x6f\xa2\xc3\x42\xf5\xef\x20\xe6\xe3\xa8\xbb\x4d\x51\x49\xa7\xd4\xde\x12\x24\xdf\xf1\xd1\x72\xc8\x75\x70\xf7\x76\xd5\xef\x45\x95\x9b\xe0\x93\x8a\xd7\x9f\x5d\x33\x95\xcb\x27\x21\x62\x71\x22\x88\x7b\xd7\xa8\x98\x3b\x64\x77\x97\xbd\x41\xd8\x82\x64\x1c\x81\x43\x1c\xe8\xd9\xb3\x06\x7a\xde\xc4\xcd\xe9\x26\xc5\x13\x13\xf0\xcf\x84\xc5\x29\x25\x62\xdd\x49\x08\x64\x2d\xd2\x45\x28\x84\x84\xc5\x56\x8a\x78\x7d\x0c\xed\x36\xa3\x52\xf0\x32\xda\x4f\x7e\x4d\xe0\x6b\x11\x47\x3f\x65\x0e\xec\x65\xdd\xa9\x96\x39\xaf\x2d\x42\xd8\x4e\xe2\x30\xf4\xf8\x36\x23\xd9\xc9\xaa\xa3\xb1\x6b\xda\x10\xdd\xaa\xd2\x5a\xf5\xc1\xc1\x0f\x81\xc8\xc5\x1c\x81\x1a\x3a\xa3\xe3\xdb\x58\xa7\x02\x5e\x43\x80\xe2\x85\xda\x47\x4a\x61\xba\x59\x17\x3f\xf0\x42\xa4\x6a\x79\xab\x18\x4b\x07\x01\x08\x41\x6f\x9d\x61\x58\xcf\x96\xd0\xe6\xdb\x44\x76\x14\xa0\xd9\x08\x9e\xbb\x6a\xee\x4e\xf1\x07\xbe\x45\x93\xd7\x1e\x79\xf6\x79\x86\x68\xa7\x40\xae\x4b\xac\x5a\xc7\x59\x4e\xcb\xd5\xdc\x82\xe7\xd0\xf9\xcb"}, +{{0x51,0xb1,0xad,0x0f,0xfc,0x21,0x49,0x7a,0x33,0xdb,0xdb,0x85,0xea,0x2b,0xc1,0xce,0x3d,0x0c,0x2d,0x95,0xd9,0x46,0x1a,0x39,0x09,0x73,0xfe,0xe3,0x77,0xfc,0x75,0xf4,},{0xba,0xd0,0x41,0x25,0x75,0xd3,0x80,0x13,0x01,0xed,0xee,0x6b,0xc0,0xf2,0x76,0xe7,0x87,0x35,0x7b,0x41,0x22,0xf5,0x2d,0xe9,0x81,0x88,0x58,0x51,0x88,0x42,0x49,0xcb,},{0xcf,0xb6,0x5b,0x6f,0xf0,0x37,0x7c,0xef,0x51,0x1f,0xd9,0x7b,0x90,0xc3,0xec,0xb8,0x08,0x33,0xf1,0x42,0xa7,0xcf,0x50,0x22,0xce,0xd3,0x0b,0x3f,0xb7,0x86,0x20,0x86,0xd0,0x13,0x39,0xb8,0x86,0x6a,0x23,0x8c,0xb0,0x70,0x27,0x6e,0x19,0x44,0xb5,0xfe,0x32,0xcc,0x40,0x99,0x47,0xcb,0x91,0xde,0xb1,0x43,0x2c,0x29,0x1b,0x60,0xfb,0x0d,},"\x78\x82\xe8\x6e\xf3\x40\x2f\x6d\xbc\x65\xcc\xe8\x31\x5b\x39\x76\x5f\xaa\x4b\x1f\xc8\x76\xfa\xd5\xf8\x22\x0c\xb2\x2a\x7d\xf2\xe3\x58\x0e\xab\x3a\x7e\x8f\xa7\xfb\xb6\xb5\x94\x82\xca\x0e\x36\x4a\x13\x13\x96\xdf\x79\x2a\x32\x41\xa0\x60\xe4\x41\x43\xb6\x76\x74\x93\xc6\xbf\x75\xf1\x87\xa9\x64\x3a\xa1\x1e\x11\xeb\xa7\xb0\xa8\x0f\x0a\x68\xb9\xf1\xb7\x9f\x75\xb6\x6c\xc5\x9d\x9d\xa7\x79\x55\xfd\x7e\x87\x99\xf9\x9d\x6e\xb0\x8f\x90\xd3\x18\xf4\xef\xcb\xfe\x71\x15\x9b\x10\xa8\x3a\xa5\xfd\x69\xbb\x75\x33\x6f\x5d\xf2\x96\xea\x06\x0a\x42\x6c\x95\x45\xdf\x94\x0b\xc1\x45\x4e\xfc\x1f\x9d\xc9\x65\xf1\xf2\x2d\x94\x73\x03\xfb\x8e\xc1\x24\x07\xff\xf6\xb1\xdb\xe4\x7e\x34\x21\xc3\x17\x64\xfd\x90\xc8\x3a\xc7\x11\xd1\x99\x26\xe2\x29\xa0\x64\xc6\x1f\xe3\x67\x6a\xf3\x00\xa1\x71\x6f\xab\xe4\xe3\x84\x22\x64\xad\xb3\x2e\x0d\x9c\x9f\x5d\x4a\x65\xd0\xd7\xb5\xc3\x77\x0d\x73\x7e\xe1\x3c\xbe\xd2\x1d\x7a\x1d\xa3\x6a\xaf\x7e\xc0\xf3\x6f\xcc\x47\x6f\x65\x96\x81\xe5\x16\x0a\x5a\x1f\x49\xe7\x59\xb9\xd0\xfc\xd4\xfd\xb8\x54\xec\xcd\x99\x17\x2a\x47\xd2\xc4\xef\xbe\x0b\x37\x57\x63\x1d\xf1\xba\xe1\x75\xf0\xfa\x74\xdd\x04\x8b\xb6\xa5\xfe\xd8\x43\x02\x84\x34\x9d\xa3\xd6\x7d\xf2\xa6\xf7\xe8\x26\x9b\xc7\x9f\xb2\xc5\xd5\xed\x60\x84\xe9\x07\x6f\x45\x5a\xb6\x38\x91\x90\x46\x36\x9a\x44\x6d\x57\xfc\xad\xa7\x01\x1c\xc7\x71\xbf\x6d\x87\x4a\x8e\x5d\x23\xc6\x87\x74\x7d\xe4\x1d\xd0\x4b\xff\xc7\x17\xd6\x12\x81\x83\x84\x6e\xb5\x94\xb3\xcb\x1c\x1a\x8a\xa0\x4f\x0d\x7e\xba\x53\xaf\x39\xcb\x1d\x4e\x6f\xec\xf3\x11\x3b\xd8\x42\x24\x16\xf4\xc4\x40\x37\xae\xee\x9e\x0f\xdc\x51\x7c\x48\x73\x1f\xd0\x4e\xe9\xc9\x9f\x5d\xbc\xa3\xd5\x74\x50\x9d\x7b\xaf\x32\x88\xf2\xc2\x30\xa0\x2d\x17\x03\xbd\xb1\x61\x1c\xde\x2a\x76\x6d\xac\x19\x3d\xe1\x67\x44\x3d\x20\x09\x0d\xc3\x4d\x29\x27\x7a\x86\xb1\xe9\x98\xb2\x45\x64\x51\x17\xe5\x11\x1f\x12\xf1\x46\x06\xc5\x54\x46\xdd\x91\x2d\x34\x75\xc1\x98\x76\xe1\x9a\xc5\x36\xd3\x17\x87\x6c\x4b\x0a\x2e\x0f\x98\x61\x61\x29\xa5\x68\x37\x32\xa4\x23\x17\xc5\xe8\x09\xdc\xa9\x56\xb2\xab\xb4\x84\xad\xa8\x10\xa1\x5c\x81\xcc\x85\x62\xb5\x55\xda\x94\x58\xf9\xb4\x43\x38\x49\x02\x30\xc7\x40\x4f\x3d\x48\x61\x1f\x84\x12\x7e\x73\xe2\x77\xd8\x8c\x62\x21\x2d\x2a\x3a\x35\x1f\xc6\x76\x65\xb1\x8d\x77\x21\x62\x30\x63\x2c\xbc\x78\x12\x88\xe1\x5c\xeb\xf3\xec\x33\xa7\x20\x5e\xb2\x2b\x9a\xbe\x4c\xdb\xc7\xdd\xba\xaa\x53\x64\x08\x75\xeb\x76\x3f\x52\x2c\x36\xcf\xff\x2e\xb2\x3e\xe5\x86\xd7\x75\x28\x62\x59\xfa\x94\xa4\x4f\xa7\xec\x01\x50\x96\xa2\xa4\x46\xb6\x73\x2b\x80\x02\x42\x67\xfe\x3d\x5d\x39\xd1\xc4\x85\x09\xb3\xec\xaa\x2e\x24\xe5\x4d\xe4\xd6\x1c\x09\x7b\x70\xf7\x53\xb5\xaf\x9a\x6d\xb6\xf9\x75\xd2\x5f\x4f\x83\xd0\x6f\x87\x9e\x17\xef\x7c\x50\x9a\x54\x14\x44\xba\x3e\xb6\x86\x78\x38\x09\x0e\x22\xda\xfd\xbb\x0e\xb3\xb0\x56\x5b\xe1\x57\x9c\xee\xcd\xed\x20\xf5\x44\x25\x6c\x7c\x4e\xde\x3b\x62\x84\x3c\x65\xb0\x46\x6b\xe6\xb7\xe2\x73\x05\xb9\x63\xca\x91\x4e\x3b\x7d\x21\x73\x61\x18\xed\xb3\xd6\x58\xd9\xd7\x6f\x50\x9d\xb3\xb9\xca\x2e\xae\x28\x96\x4a\x4b\x3b\x3c\x38\x4a\x81\xa4\x89\x0e\xe9\x6f\xbe\x93\x4a\x6f\x2a\xec\x8e\xeb\x6c\xfe\x59\xac\x9d\x3b\xbc\x16\x46\xba\x32\xa1\x14\x2f\xee\x59\xfe\xd6\xfb\x7b\xbc\x04\x98\xcc\x27\xde\xad\x41\x3b\x7b\x43\x51\xec\x20\x63\x43\xc0\xab\x89\xfc\xf8\x72\x43\xb1\xab\x45\x0e\x58\xff\x11\xa1\x14\x0a\x38\x3f\x19\x6a\xa3\x97\x6c\xe1\x7c\xf3\x45\x30\xf0\x49\xa1\xde\x90\xe3\x17\x53\xcd\x85\xe7\xf1\xfd\x5c\xf2\x04\x26\xc9\x37\x9f\xeb\x8c\x31\xb4\xbf\xec\x35\xea\x5a\x78\x95\x3d\x75\xc5\xcf"}, +{{0xfa,0x2f,0x46,0x1c,0xe8,0xc7,0x12,0x62,0x18,0xc4,0x7c,0x91,0x56,0x9e,0x87,0x99,0x79,0x7c,0x83,0x36,0x8f,0xc8,0x42,0xb6,0xe1,0xc2,0x2f,0xd5,0x2a,0xec,0x70,0xbf,},{0x6b,0x89,0xb2,0x3f,0x1e,0x11,0xa7,0x5a,0x53,0xf9,0x92,0xf6,0xca,0x57,0x75,0x00,0x8c,0x6e,0x9e,0x7e,0x49,0xc0,0xd8,0x51,0x0b,0x0e,0x83,0x69,0xb7,0xa2,0x0b,0xcc,},{0x84,0xf7,0x9d,0x9e,0x8f,0x30,0xe5,0xbb,0x63,0x62,0x23,0x97,0x14,0x55,0x6b,0x04,0x73,0x6f,0xa4,0x44,0x65,0xca,0xba,0xad,0x23,0xbe,0xaf,0x5a,0x99,0xfc,0x45,0x1a,0xd4,0xae,0x5a,0x18,0xc7,0xf6,0xf9,0x64,0xfa,0x41,0x03,0x92,0x16,0x01,0x8e,0xc5,0xa2,0xac,0xca,0xe1,0x07,0x5a,0x6b,0xb3,0xa6,0xec,0xbc,0x1f,0xca,0x02,0xb9,0x04,},"\x79\x9b\x39\x80\x2a\x18\x27\xe4\x5c\x41\x12\xfe\xe0\x26\x03\x4c\x0e\x59\x8a\xff\xce\x2c\x55\x0c\x19\x3f\xee\x73\xf1\xdf\x8c\x30\xc8\xd3\x87\x33\x40\x08\x8c\xe8\x59\xde\x34\x71\xe9\xd0\x57\x68\x6c\x82\x9b\x54\x08\x79\x5e\x08\xb3\xdc\x7a\xa3\xb6\x37\xc7\xde\x9d\x21\x72\xad\x03\x33\xc1\xbe\xa8\x61\xa6\x23\x2f\x47\xf0\x5a\x10\xbf\x5d\xf8\x08\x15\xa2\x71\x25\x6e\x37\xe8\x08\xa0\xe6\x2f\x1f\x07\xd9\xe1\x0e\xbb\x94\x7d\x3e\xfa\xbf\x8a\x28\xfa\x9d\xcc\xd9\xa1\xd5\x99\xf5\xfd\x61\x65\x50\x8e\xfd\x67\x9c\xf3\x56\x01\x50\x58\xbf\x4b\x34\x11\x8f\x83\xaa\x3e\x5b\xc2\xce\x19\xec\xa8\x4f\x71\x83\x98\xad\xbc\x0a\x52\x76\xcf\x9d\x8c\xaf\xfc\x27\xe3\xe6\xab\xbe\x34\x5b\x0e\x9e\xcf\x89\xc6\x77\x1b\x0e\x75\xd4\x08\xba\x2f\xbb\x90\xfc\xfd\x70\xc5\x3f\x2e\x4d\x52\xba\x54\xd9\x78\x4c\xf7\x1c\x34\x9e\xf6\xf1\x4a\xe4\x97\x0d\xef\x6e\xfb\x5f\x30\xe9\x84\xd6\x01\x6a\x19\x6d\xea\xec\x7e\x04\xb4\x76\x19\xc4\x8b\xf4\x9d\xc0\x2f\x7f\xef\x3e\x13\xb7\x56\x17\x4e\x90\xd0\x5f\xcb\xdd\x5e\x13\xf0\xe4\x34\xef\xd5\x42\x1b\x09\x1d\x51\x79\x00\xed\x0d\x57\x85\x96\x88\x62\xb4\xbf\xe5\x09\x3a\xb6\x72\x17\x18\x0d\x97\x55\x4c\xcd\x9c\xc3\x14\x29\x32\x6c\xab\x42\xf3\xf8\x39\x80\x60\xc1\x9d\xb4\x88\xb5\xd1\xc8\x0b\x29\x09\x0a\xfd\x1c\x6b\xac\x36\x42\x26\x48\x00\x21\x1b\xc2\x78\xfc\xb9\x9d\xae\x9d\xbf\x49\xda\xf1\xb2\x4a\xb5\x69\xdc\xbb\x87\xd4\xd3\x54\x73\x35\xe3\x5d\xb9\x84\x00\xcd\xfc\xe6\x79\x06\x82\xe9\x36\x00\x22\x0e\xc4\x99\x24\x5f\xa4\xee\x15\xd8\x43\x83\x1b\x56\xcc\x26\x41\x80\x25\xbf\x87\x00\x16\x05\xc6\x69\x1c\xa6\xbd\x40\xa4\xe2\x48\xc3\x09\x80\x1b\x76\xa7\x95\xed\xe8\xad\x53\x08\xbc\xb6\xd1\x75\x4a\xb3\x37\x1f\x00\x03\xbb\x8c\x4e\x4e\x47\x19\x54\xe2\x8b\x1e\x98\x66\x37\x9f\x82\xe1\xfb\xac\xb7\x9d\x50\xad\xdd\xad\x5b\x97\x78\xb5\x58\xcd\xdb\xb0\x03\x8a\x5f\xf3\xd5\xc9\x55\x7b\x96\x5d\xe3\xa7\x08\x2c\x45\xa8\xec\xf3\xe7\x72\x1e\xb6\x90\xb6\xc7\x1f\x3d\x89\x75\xd5\x30\x0f\x67\xc4\xdc\x4a\x73\x68\x46\xe4\xcc\xd2\x6f\x93\x46\x3d\x5b\xc6\xf4\x6e\xdc\x48\x86\x64\xbe\x96\x96\xbe\x12\xb0\x2d\xd1\x04\xd1\x0c\xc6\xb1\xd8\x2e\x81\x17\x81\x12\x14\xa6\x48\x7d\x17\x36\x7e\x39\x5a\xde\x2e\xf6\xb2\x6a\x17\x83\xa7\xe2\xf2\x45\x21\x3b\xc0\x3a\x75\x5d\xf3\xee\x8e\xf9\xf1\xef\xf9\x72\xc6\x91\x90\x65\xcb\x7b\x75\x66\x78\xd4\xdd\xfd\x19\x3e\xdd\xc0\xb4\x2e\x86\x89\x61\x36\x43\x14\x6d\x74\x28\xca\x37\xbf\x31\xbd\xf1\x4e\x31\x86\x78\x58\xf3\x9d\x23\x23\x70\x9e\xb3\xb7\xd7\xf4\xe3\x97\x02\x23\x78\x42\x4b\xde\xe9\xbc\xb7\x4e\x9d\x5d\xfd\x37\x1f\x47\x34\x99\x8f\xc1\x8d\xf4\xcd\xfb\x4b\x5c\x21\xc2\xe5\x0f\x8d\x6c\x15\xbc\x14\xbf\x4f\xda\x6c\xeb\x9d\x80\x82\xca\xe4\x32\xdf\xc9\x8b\xfb\x3e\xcd\x16\xb8\xd7\x4f\x83\x0b\x64\x2b\x04\x28\x75\xe9\x21\xb0\x54\xbd\x1a\xaa\x58\x1f\x60\xd7\x18\xdf\x66\x9f\x56\xdc\x2f\x10\xd4\x78\x99\x77\x22\x16\x2e\x83\x94\x0e\x61\xa1\xb6\xe4\x2d\xf2\xa4\xa3\xa7\xcb\xcd\xd6\x11\xce\x96\xcb\xcf\xb5\xa9\x5c\xc4\x73\x23\x1c\xa1\x3c\x06\x09\xd0\xce\x1a\xe5\xdd\xb5\x46\x6d\x6d\x65\xee\xfa\xd9\xda\xf2\xa3\x69\x01\xbc\xc9\x45\x84\x7d\xa1\xed\x6e\x2e\x24\x0e\x84\x8b\x23\x1b\x7d\x0e\x1a\xcd\x06\x54\x3e\xc9\x3e\x76\x8e\x59\x98\x5d\x7e\x96\xc8\xc3\x1f\xcd\x12\x10\xf0\x96\x42\x71\xe2\x18\x77\x52\x5c\xb1\x34\xbc\x35\x36\x25\x7d\xbb\x11\xd3\x0a\x3c\x4f\x94\x9f\xb8\x2a\xe0\xc3\x1c\xcd\xfe\x41\x94\x32\x51\xe5\x0a\xa4\x35\x53\x92\xac\x30\x9e\xf6\x0f\xc1\x74\x32\xa2\xbe\x4b\xdb\x2f\xcb\x28\x60\x7c\xc4\x5a\x52\xb6\x00\x16\xbb\x1d\x2e\x23\x97\x2f\xf2\xc2\xa2\x47\xd7\x25\x58\x5b\x1e\xf2\xb1\x5f"}, +{{0x1b,0xe2,0x94,0x9d,0x51,0xe7,0x20,0x81,0x75,0x82,0x62,0x13,0xee,0x6a,0xe3,0xc0,0x91,0x17,0x27,0x42,0xe8,0x8c,0xaa,0x02,0xed,0x0f,0x31,0x3e,0xcb,0xe5,0xd9,0x10,},{0xd7,0xbf,0x47,0x48,0xd6,0xdd,0xed,0x5b,0x57,0xa2,0xab,0xf7,0x97,0xfa,0xcc,0x56,0x0b,0x48,0x56,0x3d,0xfd,0x9d,0xcf,0xf4,0xbe,0x52,0x2c,0x71,0x7a,0x6c,0xfd,0xa9,},{0xf4,0x1f,0x2e,0xf6,0x59,0x5f,0x17,0x66,0x0b,0xb2,0xfe,0x93,0xe5,0x1f,0xc6,0xfa,0x9c,0x31,0xda,0xdc,0x9d,0xb9,0x0c,0x3f,0x46,0x60,0x7a,0x7f,0xb4,0x80,0x0b,0xb7,0x5a,0xd9,0x63,0x25,0xdc,0x7e,0xab,0x78,0x24,0x72,0xb0,0x4d,0xa6,0xd8,0xe6,0xfe,0x64,0x65,0x5d,0xea,0x55,0x1f,0xbd,0x50,0x49,0xe8,0x76,0xce,0x5a,0x40,0x5f,0x02,},"\x04\x5e\x2b\x0e\xc7\xbb\x20\x3a\x49\xbd\xcb\xa9\x41\xe2\xb7\x3c\x23\xc1\xfe\x59\xa1\x7d\x21\xa0\x12\x4e\xa2\x4b\x33\x7f\x92\xab\x9c\x92\x3a\x20\x57\x6b\x62\xd5\xd0\xf6\x24\xe7\x93\x2c\x11\x5b\x54\x74\xe0\xa4\x6a\x4d\xc9\xec\x51\xf6\xa0\xce\x8d\x54\x74\x4d\x1d\x52\x09\x33\x20\xe3\x9b\xe2\x03\xf7\x4a\x0f\x5d\xfa\xc5\x2c\xf0\xf9\x95\xc6\x6d\xf2\x91\x4b\x68\xad\x87\x1f\xbe\x81\x52\x5a\xd2\xd8\x8a\xc6\x99\x33\xa7\x5a\xea\x74\xac\xe4\xe3\x63\x43\xdd\xc0\x6d\x32\x08\xf1\x6d\x80\x5f\x5d\xd7\x86\xb4\xda\xaa\x16\x67\x48\xcf\xee\xc5\x71\x4c\x85\xc1\x04\x78\xb5\x97\xac\x7f\x6a\xe2\xc9\x88\x91\xe3\x8f\xd4\x14\xaa\x81\x1b\x76\x21\xd8\x05\xeb\x8f\xcc\x46\xcf\x4d\x56\x8a\x8a\x92\x58\x7c\xbb\xc1\xae\xcc\x12\xf1\x0d\x90\xac\x1e\x01\xae\x98\x6d\x14\xfe\x82\x95\x1c\x68\x2c\xea\xc8\xc9\x25\xfc\x66\x54\xd8\x38\xac\x93\x53\xae\x2f\x93\xf3\xc8\x8b\xf7\xb8\x2c\xbc\x43\xb1\xe4\x9e\x5c\xeb\xfb\x19\x49\xad\xe4\xb2\x2e\x4b\xcf\x1b\x40\x0c\x0a\x8f\xa8\xa6\xfe\x76\x70\xf6\x9f\xc3\xfa\xec\xd4\x80\x5b\x8c\x95\x4c\x01\xa5\x40\xd1\xa1\xe7\x88\x43\x6e\xae\x07\x3a\xe9\x56\xda\xe3\x17\x69\x05\xa8\xf0\xa3\xc6\x0f\xd9\x80\xda\xb4\x19\xd4\x1e\xc0\x6e\x52\x73\xfb\xb1\x3d\xb9\x38\x1f\x89\xb6\x63\xcc\xc4\xbd\x75\x3f\xd9\x0f\x14\xa7\x7b\x3d\x81\xc4\x5d\xd3\x56\x1c\xd1\xfa\x0e\x94\xd2\x34\xce\xf9\xd7\x85\x9a\x2e\xc9\x42\xbf\xc1\x88\x49\xd7\xf2\xad\xa3\xa5\xd6\x57\xbc\x19\x3d\x2e\x14\x91\x68\x2f\x16\x65\xa5\x34\xb1\xac\x20\x83\xb7\x38\xbe\x8f\x9e\x96\x3f\x59\x41\xed\x48\x3c\x6a\xcc\x82\xe9\x59\xb8\x1b\x8a\xf0\x2f\x47\x1c\x08\xf5\xf8\xb1\x2e\x10\xe0\x08\x19\x28\x98\xa4\x45\x02\x02\xaf\x73\x15\x92\xe7\x4e\xfe\x2a\x94\x8e\x51\xd0\x6e\x44\xde\x9b\x95\x6b\x7b\xc9\xa6\x9b\x6e\x74\x68\x7a\xb2\x06\xde\xc4\xd3\x5b\x31\x73\xfb\xc4\x38\x82\x9d\x50\x64\xbf\xbc\xf7\x43\xc1\xe2\xd4\x6f\x62\x8f\x2e\x51\xc6\x26\xd8\xe4\x16\xd7\xbe\x6e\x55\x5a\x24\x96\x91\xab\xb1\x67\xf1\xd9\x2f\x4f\xa3\x39\x2f\xde\x24\xe9\x93\xce\x7f\xf5\xc1\xb8\xe1\x57\x7a\x7c\x0e\x73\x02\x5c\xc6\xfc\xd7\x27\xa8\x2e\xf0\xc1\x29\xe9\x1e\x55\x33\xe0\x21\xa3\xcd\xbb\x99\xd5\x4b\xf7\xcd\xcd\x3f\xf1\x19\x15\x4f\x3f\xad\x92\x42\xb6\xed\x35\x0d\x10\x37\x2c\x97\x6f\xf3\xa4\x37\xd0\x97\x86\x7d\x9b\xfb\xa9\x1d\x84\xbd\xa5\x5a\x6b\xcd\x6e\x36\x41\xb2\x13\xa2\x18\xb3\x04\x15\x89\xc5\x5a\xfb\xb3\x44\xde\x6e\x97\xd8\xc3\x5b\x5c\x86\xcf\x3b\xe0\x63\xf9\x01\xff\xee\xa8\xcc\x91\x06\x99\x67\xd2\x34\x60\x35\xa9\x1e\xb5\x70\x6a\x3b\x53\xf6\xd1\xc3\x4d\x4d\x21\x16\x70\x6b\x65\xc2\x98\xec\x57\xde\x82\xab\xc4\x00\x3c\xe8\xcc\x5e\x0b\x88\xff\x71\x0d\xda\x1d\xce\xf6\xf1\x54\x27\x71\x06\xb8\x3e\xb4\x6c\x04\x5b\x08\x2d\x11\x3b\x36\x1d\x6a\x62\x58\x08\xc9\x13\x05\x84\xdf\xc9\x67\x07\xef\x89\x55\x90\x7b\xaa\x61\xcf\x88\xc6\x6b\x6d\x1f\x60\x58\x11\x19\xcb\x62\x17\xa8\x52\x15\x73\x36\x17\x8c\x68\x5e\x6e\xd4\x85\x26\xed\x5c\x4e\x3b\x79\x67\xd5\x1f\x99\xdf\x68\x76\xa1\xac\xfb\x84\x5c\x57\x1b\x89\x86\x56\xe5\xe3\xbc\x73\x98\x0b\x9b\xed\x11\x98\x86\x63\x59\xc9\xe9\xb1\xef\xa9\x15\xf8\x10\xd1\xef\x8a\xd6\xcb\x3f\xc2\x1f\xbf\xe6\x54\x30\x6d\xe6\xca\x13\xa3\xa6\xa4\x8e\x7a\x13\xed\x87\x46\xac\xbd\x07\xf4\x8e\xb0\x0c\x36\x37\x4b\x1e\xb4\xf3\xf0\x1c\x19\xe2\xe8\xd3\x7e\x9f\xc0\x64\xb3\x3c\x0d\x66\x9b\xba\x55\x4d\xdc\x68\x21\xa7\x7b\x40\x89\xca\xbd\xca\xfc\x97\xf6\x0e\x60\x50\xbc\xa4\x44\xae\x8c\xfc\x44\xd9\x3c\x40\xef\x53\x18\xbe\xe6\xf8\xcf\x0c\x06\x7b\x85\xcd\xdd\xc4\x59\x74\xa4\xea\xcf\xc3\xef\x51\x31\x5b\xa0\xf3\xf6\x29\x68\xc7\x00\x3a\x7f\xf4\x44\x61\x24\x00\xb1\x59"}, +{{0x3b,0x6b,0xa6,0xd5,0xcc,0x9c,0xd6,0x24,0x1d,0x8b,0x00,0x97,0xa3,0x72,0x2e,0x4d,0x06,0x6f,0xea,0x3d,0x56,0x0a,0xea,0xb4,0x67,0x3e,0x86,0xf1,0xf8,0xec,0x60,0x26,},{0x8c,0xa6,0x52,0x07,0x17,0xcf,0x36,0x3c,0x4c,0xef,0xfa,0x76,0x32,0x8a,0x0a,0x16,0x6f,0xf8,0x3e,0x45,0xca,0x7d,0x19,0x1c,0xc8,0xef,0x6c,0xa6,0xe5,0x24,0x33,0x67,},{0x78,0x8c,0x9f,0x45,0x54,0xdd,0xba,0x5c,0x7d,0x64,0xba,0x75,0x9e,0xc4,0x56,0x94,0xec,0x79,0xfb,0x85,0xe8,0x23,0x68,0xa0,0x74,0xbd,0xd8,0xdf,0x34,0x42,0x13,0xa5,0x6d,0xd0,0x9f,0x33,0x4c,0xd9,0xac,0xb9,0x41,0xbe,0x28,0x3d,0x98,0xc4,0xb1,0x5d,0xcf,0xec,0xd1,0x4e,0x93,0xf6,0xa2,0xe3,0xcb,0x0c,0x1a,0xa2,0xde,0xe7,0xd9,0x0b,},"\x36\xde\x93\x0c\xc8\xe1\x88\x60\x83\x6a\x0c\x82\x9d\x89\xe9\x63\xa5\x8b\xdd\x9c\x6b\x6e\xf5\xbc\x61\xf7\x59\x92\xd2\x07\x52\x42\xdc\xa2\x3e\x28\xde\x20\x5a\x33\xdf\xea\x86\x1f\xc4\x4a\x32\x62\x8e\x8e\x7c\xdd\x3e\xd7\xff\x49\xea\x6a\x70\x97\xe0\x09\x0c\xfd\x9f\xf5\xec\xab\x1d\xe8\x22\xfc\x0a\x4c\x37\x76\xdd\x56\xc1\x91\x92\x04\x51\x6a\x94\xce\xc5\x63\x8d\xa1\xd9\x9e\x52\xb8\x66\xf5\xec\x41\x62\xa9\x12\xed\xb4\x1c\x1e\x92\xed\xfc\x35\x3f\x67\x05\xe1\xc1\x2c\xd4\x1c\xb6\x2d\xed\x4a\xd8\x15\x79\x40\x05\x9b\xfc\xf5\x07\x19\xd3\xf2\xad\x00\x84\x85\x40\xce\x89\xf3\xf9\xaf\xa6\x10\xcc\xba\x5e\xcc\x37\xe3\xe2\xc1\x53\x4f\xcb\x38\xfc\xd3\x9a\x2d\x14\xd5\xb5\xda\x6f\xea\x24\xe0\x06\x65\x4e\x30\x90\x47\xa2\x9c\xad\x0a\xe4\xda\x8e\x70\x8f\x97\xa1\x8c\xad\x5f\xbd\xc9\xac\x84\x40\x0c\x53\x2c\xed\x54\x88\x86\x53\x9e\xdd\x6c\x54\x10\x74\x79\x0a\xe4\x50\x2f\xdf\xe9\xf3\x27\x3a\x87\x6a\x21\x86\x23\xa2\x57\x06\xa1\x52\x5e\x67\xe5\x7a\x16\xd2\x2c\x21\xb6\xa4\x5e\x23\x84\xe2\x87\xac\x44\x52\xae\xc4\xe0\x63\x05\x6b\x4c\x17\x8a\xb0\xe5\xb2\xa5\xba\xd3\xf4\x63\xc4\x72\xc4\xea\x1f\x9c\x1a\x66\xe5\x27\x04\x73\xa8\x35\x09\x4e\x8f\x0e\xef\x68\x0c\xd7\xb2\x0d\x0e\x70\xf4\xd6\xc9\x58\xfe\xe0\x8a\x93\x60\xaa\x60\x66\x88\x8f\x4d\xd7\xce\x5e\xc2\x22\x59\xfa\x0b\x53\xfe\x92\x71\xc0\x83\xc6\xfc\xdb\x72\x83\xb0\x90\x61\x08\x8c\x52\xf7\x1b\xfd\xd2\x77\x7c\xe0\x80\x1f\x41\xa6\xc4\xce\x90\xef\x13\x1d\xe1\xe1\x83\xcb\x89\x49\xce\x32\x3c\x9e\xb1\x3a\x4b\x0c\xac\xf9\x9d\xef\xdf\xdb\x68\xd5\xed\x1f\x68\x91\xb4\x8e\x21\x04\x76\x68\xd6\x9d\xe8\xa8\x0f\x8e\x56\x34\xde\xd0\x87\x36\xa4\xfb\x54\x10\xcd\xea\x9c\x72\x59\x6e\x36\xdf\x68\x41\xf2\xee\xa4\x68\x50\xc8\x74\x73\xc8\x95\x54\x02\x05\xb0\x92\x19\x60\xff\xa5\xd9\xd8\xff\xb8\xe2\x9c\xde\x96\xa3\xed\xe0\x15\xac\xbc\x26\x97\x40\x04\xd3\xe4\x38\xa8\x5b\x2e\x33\x85\xf6\x4d\x18\x14\x00\x39\x41\xff\xd3\x63\x99\x2d\x39\x40\xc6\xe6\xd8\x1f\xf8\xe4\x5f\xce\xd6\xd3\x6c\xe1\x98\xd8\xcc\xbe\xfe\xe4\x32\xa7\x7d\x8f\xca\xdd\x73\xfb\x79\x9f\x6b\xaf\xef\xb5\x1a\x2d\xa7\x98\x72\x1c\x3d\x46\x5b\x16\x3e\xf1\x3e\x6e\xcc\x65\xe6\x03\xb2\x89\x3e\xe4\xcc\x9e\x1c\x6d\x1d\xe7\xa6\x5c\xab\x5c\xbd\xf5\x36\x85\x5e\x28\x8c\x3c\xcd\xa8\xd2\xfa\x3c\xe1\x0c\xf4\x93\x58\xa2\xef\x4e\xf0\x76\xe5\xbf\xa9\x1b\xbc\xf3\xd9\x66\xdf\xa3\xdc\x6e\x71\x2f\x19\x56\xd4\xe5\x8a\xa3\x6e\x71\x2d\xd3\x34\x71\x69\xb1\x9c\x8d\x44\xbe\xc5\xbc\xb7\x30\x77\x8f\xcc\xcc\x58\x9e\xd5\xd3\x50\xd4\x4c\x17\xbd\xe2\xee\xbb\x6f\x5e\xc5\x9f\xb2\x40\xd6\x7d\x81\xae\xa9\x26\x7f\x34\xf1\x5e\xee\x2d\xe3\xf4\xfa\x67\x39\x14\x79\xbd\xbb\x43\x0f\x48\x43\x70\xfb\x0e\x08\x95\xb9\xae\x06\x5b\xbd\xd4\x3e\x23\x0c\x62\xac\x07\x18\x4e\x8b\x06\xb2\x4b\x8b\x97\xec\x02\xdc\x6f\x37\xef\x61\x64\x1e\xd5\x6e\x3f\x5e\xb8\xd2\x08\x0b\x51\x44\xef\x76\x0b\x51\x87\x52\xe1\x97\x54\x79\x2e\x19\x34\x3a\x38\x55\xe1\xe2\xf7\xa7\xdc\x62\x35\x17\xee\xd2\xf5\xd2\x65\x48\xa6\x8e\xb8\xff\xd7\xbf\x70\xf7\x8f\xd1\x86\xdb\x63\x49\x28\xbb\x98\x13\x8f\x2b\x8f\xe8\x44\x81\xcc\x53\xf5\xaa\x35\xe2\x66\x6c\x63\x25\xe1\xd2\xb8\xac\x5e\x2d\xf2\x93\x5b\x7f\x64\x13\x95\x2d\x10\xd6\x07\x6f\xfc\x75\xbb\x6a\xf6\x3b\x29\xb0\xb9\x66\x3b\xec\x37\x24\x7b\x66\xb5\x08\xdd\xe4\x1f\x2f\x11\xb8\x43\x33\x55\x9d\xfa\xc7\x3f\x76\x1b\xcd\xa8\x4a\x48\xd2\x66\x07\x3a\xef\x16\x38\x46\x08\x49\xe7\xa1\x72\x06\xa2\x5f\x68\x00\x77\x0b\x91\x4c\xc0\x26\xba\xf9\xe3\x25\x59\x14\xe1\x32\x58\x44\x1c\xef\x35\xad\x1d\x66\x83\x3e\x98\x7e\xbe\x44\x31\xe6\xa6\xbb\x22\x2c\xbb\x65\xaf"}, +{{0xdd,0x99,0x87,0xb1,0x8f,0x9a,0x92,0x2c,0x0f,0x6f,0xea,0x18,0xeb,0x00,0xb8,0x96,0xc7,0xa2,0xd3,0x09,0x3d,0xb3,0xea,0x31,0xd3,0x84,0x21,0xda,0x0d,0xe5,0x12,0x31,},{0x57,0x39,0x21,0xa9,0x55,0xfe,0xb6,0xdd,0xe4,0x1b,0x05,0x5c,0x8d,0xac,0xac,0xcd,0x1d,0xb7,0xfe,0x9e,0x36,0xb5,0x09,0xd3,0xc9,0xe3,0x6f,0x97,0x35,0x75,0x23,0x24,},{0x3e,0x9f,0x2b,0x00,0x7c,0x0e,0x29,0xec,0x87,0x59,0x95,0xa6,0x30,0x9b,0x97,0x3d,0xeb,0x8b,0xaf,0x11,0x3d,0xed,0x13,0xf1,0xe0,0x00,0x3e,0x9b,0x9b,0xf9,0x39,0x16,0xa4,0xdf,0xe4,0x79,0x37,0xda,0xdf,0xc7,0x8a,0xa6,0x63,0xc5,0x5f,0x67,0x4e,0xc3,0x5c,0x38,0x46,0x25,0x8f,0x18,0xe7,0xbb,0x93,0xfb,0xba,0x3e,0x82,0x6a,0x1f,0x0d,},"\x48\x16\x2f\xdc\x3a\xbf\x73\x19\xc6\xca\xab\x60\xcb\x8d\x05\x20\x87\x5c\xb4\xee\x8a\x07\x09\x27\x83\x16\x7d\x47\x33\xff\xe5\x20\x4e\x5f\xeb\xe7\xd2\x91\xe9\x53\x6b\xde\xa3\xdf\x06\x37\x15\x9a\x65\x3e\x09\xfd\x99\xaf\x66\x1d\x83\x00\xae\x74\x1a\x3e\x91\xa8\xbd\x85\xea\xd0\x5d\xc7\xd9\xe6\xf9\x29\x32\x33\x16\xed\xc4\xca\x62\x4e\xa7\x81\x8b\x25\xbd\xc0\x61\xf7\x14\x92\xfd\x22\xd4\x65\xab\x22\x6f\xd9\xa1\x0d\x8b\xab\xfc\x07\x4c\x68\x6c\x43\x6c\x24\xa3\xa5\x3f\x8f\xf3\x89\xce\x9c\xa1\xdb\xc8\x90\x74\x45\x88\x92\x41\xf8\xfd\xa3\xa7\xa3\xf5\x02\x4f\xa8\xcb\x0d\x04\x4b\xda\xf6\x71\x6d\x98\x3a\x6d\x83\x98\x14\xff\xe7\x0d\xdc\x55\xbb\xba\x11\xac\x97\x88\x7b\xdb\x4d\xad\xa9\x65\x65\xbb\x07\x5d\x5f\xc1\xd3\xc5\x24\x4b\x9f\xff\x77\xde\x58\x72\x9a\x05\x9a\x91\x1f\xb3\xe0\xeb\x16\x4f\xb8\x42\x9e\x26\x56\x85\xd1\x4a\x63\x23\x30\x46\xd2\x0e\xcf\x28\x9c\x55\x72\x31\x69\xa9\xd6\x3d\xda\x0d\x52\x55\x15\x3d\x9e\xf4\xa6\x1b\x92\x12\xf4\xb8\x20\x69\x7a\xe7\xc3\x08\xcf\xab\x40\x3b\x2c\x34\x31\x90\x62\x26\xe4\x5c\xe2\x19\x20\xdf\x52\x01\x60\x9d\xaf\x83\x0f\x28\xad\x79\x60\x05\xa9\xbd\x8e\xba\x62\x0c\xf8\x39\xc3\xba\x22\x7b\x96\x3c\x7b\xd0\x91\x48\x22\xdf\x2c\xa0\x3c\x22\x54\xd0\xcb\x8a\xca\xe0\xd5\x9e\x4c\x3e\x0e\xc2\x15\xc8\x36\x96\x9d\xcd\x1d\x49\xbf\xe1\x97\xe2\xf3\xee\xa3\xfa\x8a\x37\x3b\x55\x8d\x0f\xb9\x06\x3c\xf1\x56\x8e\x73\x9a\xad\x8f\x09\xfb\x43\x7c\xaf\xb5\xa2\x72\x37\x5f\x43\x60\x64\xee\xe1\x1b\xd9\x03\xd3\xaa\xea\xb4\xe3\xfd\xcd\x36\xbd\x20\x76\xee\xa1\x79\xa4\xf0\xd4\xfb\xc8\xdf\x42\xbf\x26\x60\xf0\x8d\xe7\xd5\xc6\x39\x7c\xae\x10\xb7\x27\x74\x58\xaa\x6c\xfa\x01\xe8\xa6\x73\x7e\xb1\x26\x22\x78\x56\x64\x66\x91\x68\x1c\x10\x6a\x15\x7a\x26\xae\xd2\x1b\x1a\xaf\x0e\xd2\x76\x64\x21\xcf\xc3\xd1\xc7\xdd\xfb\x72\xfc\xdf\x4b\x8b\x49\x0f\xc0\x9a\xce\x49\xae\xdd\x77\x12\xb2\x1a\xc5\x6f\x86\x01\xf6\x25\x56\x3c\x78\x43\x06\xf3\xb9\x17\x4a\xdd\xf7\x64\xe0\x51\xaa\xdf\xe1\x28\x31\xaf\x96\x69\xe6\x2c\xab\x12\x1c\x74\xdf\x34\x37\x24\x42\x9d\x6c\x26\x66\x02\x71\xc3\x2f\x40\xcf\x7c\x2d\x08\xbd\x0a\xfc\xc7\x28\xde\xf4\x13\x5d\x4e\xb5\x5b\x6a\x3e\x76\x29\xd8\x06\x86\x4a\x85\xb3\x6a\x32\xb9\xb2\x1a\xc0\xd3\x96\x80\xa2\xae\x4e\xc4\x18\x97\x09\x17\x8e\x34\x94\x97\xf3\x93\x99\xfb\xc7\x8b\x3c\x6c\xfa\xca\x6e\xde\xa7\xc3\x3d\xda\x3c\xc1\x1e\x43\x84\xf1\x58\x3d\x6c\xfc\x6b\x58\xf4\xea\xa2\xbc\x56\xab\xa4\x2f\x73\x8a\x42\x9b\x93\x58\x08\x50\xde\xe3\xfd\x25\x39\x94\xf8\xb0\xfa\x66\xee\x8e\x27\x3d\xec\xab\xd5\x32\x09\x5f\xb0\x4a\x4a\x3c\x34\x0a\xf0\xe5\x5b\x57\xef\xab\x43\x63\x0f\xc0\x2e\xf2\x0b\x42\x5c\xa2\x18\x7e\x3c\x6c\x5e\x10\xf1\x2d\x61\x8f\xd2\x43\xa2\x24\xf6\x50\x1e\xbe\xb9\xd3\x21\xc6\x38\x5b\x81\x27\xef\x9c\xdc\xd0\x97\xce\x7f\xa0\x21\xcf\x40\xd2\x1c\x39\x91\x23\x43\xf6\x7a\xcc\xe1\x82\x5e\x3a\x51\xb8\xa7\x18\xe8\xc3\x40\x62\x2f\xff\x65\xfe\x00\x53\xd2\x4a\xa3\x35\x1b\x6a\x24\x00\x18\x5d\x7a\xeb\x88\xe8\x7a\xc4\xa1\xd3\x94\x90\x9d\x49\x41\x4a\xef\xc2\x2b\xa0\x09\xaf\xf6\x96\x2c\x92\x17\xd7\x55\x69\x4e\x4d\x6a\xa8\xa5\xd6\xa8\x03\xce\xbb\x15\xde\x8f\x54\x16\x34\xb6\xfc\xeb\x0c\xac\x79\xdd\xa8\xa1\x8e\xef\xbb\x53\x7e\x70\xff\xe9\xaa\x5a\x6a\x6a\xaf\x92\x40\xfa\xc2\xea\xcb\xfb\xef\x01\xad\x6b\xdf\x50\x75\x87\x80\xf8\x6a\x4e\x48\x89\x85\x36\x2d\x58\x25\x01\x1f\x5e\x8b\x66\x42\x5a\x61\x6b\x7e\x10\x4e\xb2\x3f\xe8\xf1\x00\xcb\x02\x49\x82\x36\x62\xbd\xa3\xda\x47\xa4\xc3\xc1\xca\x2f\x91\x4b\x25\xb9\x73\x85\x34\x02\x60\x47\xdf\x6d\x7f\xf6\x31\xdf\x2c\x41\x31\xf6\x80\xe1\x37\x43\xc9\xcc\xf2"}, +{{0x38,0xd2,0xef,0x50,0x9f,0x93,0x05,0x1f,0x14,0x51,0x67,0x73,0x7c,0x22,0xe1,0xa5,0xbf,0xe8,0xf4,0xa9,0x1e,0xba,0x0b,0xb8,0x7c,0x39,0xce,0x04,0xa8,0x9b,0xae,0xc6,},{0x01,0x11,0x5f,0x6d,0x89,0xa5,0xda,0xab,0x54,0xf8,0x92,0xbb,0x4a,0x4b,0xda,0x1c,0xe5,0xd8,0xf6,0xc9,0xc8,0x8a,0x50,0xce,0xe8,0x3b,0xd9,0x87,0xa2,0xc0,0xdd,0xf7,},{0xde,0xc4,0x62,0x53,0x50,0x9b,0x11,0xe4,0xb5,0x2a,0x6a,0xe4,0xf3,0x66,0xb6,0x80,0xdf,0xfc,0x28,0x0d,0x0a,0x04,0x4f,0xc0,0xcb,0x79,0x0b,0x6e,0x75,0x13,0x81,0x46,0x1e,0x1e,0x60,0x2a,0x89,0xe3,0xb3,0xd3,0x06,0x4c,0x40,0x7f,0x60,0x2f,0x1c,0x22,0x40,0x4b,0x68,0x23,0xbd,0x24,0x67,0x54,0x93,0x14,0xa0,0x00,0x01,0x66,0x4a,0x08,},"\x42\x7b\x5a\x01\xe8\x59\x7f\x04\xfd\x42\x2f\x0a\x66\x2d\x0b\xe2\xdf\xa8\x53\xed\x5f\x9d\x3f\x60\xff\x90\xf2\xc5\xee\x08\xbb\x59\xfd\x03\xd4\x02\xb7\x54\xca\xf5\x4d\x00\x58\xf5\xa2\xcf\x87\xaf\x4f\xef\x21\x77\xd5\x9e\x18\x22\x62\x93\xfd\x2a\xf3\x76\xbc\x98\x7b\xf7\xb3\x20\xb9\xd1\xe2\x49\xab\x9e\xfb\x75\x07\x8e\x6d\x3d\xf2\x9e\x03\x50\x47\x76\x35\x43\x44\xaa\x69\xe7\x2e\x1e\xbc\x52\xa3\xc3\x8a\x4c\x2a\x16\x73\xb4\xe9\x74\xa2\xe4\xe1\x2a\x2e\x78\xea\x3e\x3f\xe5\x0c\x53\x63\x0d\x09\x6d\xa3\xe2\xfe\x82\x99\xf7\x1a\x1b\x44\x1b\x4c\xf0\xca\xeb\x93\x7a\xfa\x4a\x0e\x39\x15\xcc\xab\x39\x96\xc9\xf6\xa8\xf4\xfd\x37\x54\x3e\x8f\x75\x90\x0c\xfd\x47\x17\x53\x70\xef\xb8\x52\xa5\xf6\x9d\x67\x36\x83\xf9\x98\xfd\xcf\xf8\x5f\xf8\xf3\x2b\xaa\x80\x70\x66\x60\x44\x22\x02\x7d\x51\xa4\x35\xdd\xf9\x88\xed\x2f\xd8\xeb\x19\x1f\x10\xb4\x68\x07\x42\x00\x08\x75\x6e\xb4\xe3\x00\xc4\x09\x9c\x2d\x64\x50\xbc\xc6\xa4\xe7\xd0\x67\x31\x56\xb8\x37\xf0\x50\x63\x38\xf3\xd1\xb5\x73\x4b\x16\x6c\xa5\xcc\x2f\x24\xa4\xef\x02\x6c\xda\x2c\x4a\xe3\x10\x5b\x63\xca\x85\x70\xd1\x85\x46\xcf\xac\xb8\x60\x42\x96\x6a\x00\xef\x52\xc7\x29\x90\x19\xf6\x8a\x2d\xf0\x8c\x8b\x70\x4e\x85\xe7\x13\xc3\x48\xd7\xf1\x67\x76\x60\xe1\x8e\xba\xb5\x9b\xf4\xe1\x2e\x6f\xf2\xd7\x83\xd8\xd5\xd4\x2a\xab\x6e\xf0\x17\xb7\xa1\x96\x6a\xee\x8d\xc1\x4d\xda\xbe\xd4\x9b\x4b\x64\x3d\xf4\xe9\xb0\xb6\x03\x83\xc7\xd8\xb4\xb8\x8c\x65\xa8\x98\xc1\xc7\x7d\x43\xd6\xbd\x68\xb2\xa5\x74\x3f\x1f\xed\xd6\x54\xdc\x84\x49\x6d\xa0\x2c\xeb\x69\xb9\xb4\xd3\xa8\xe0\x0c\xcd\x72\xe7\xc7\x5f\xc5\x0a\x8d\xd0\x87\xe1\x83\xe6\xc1\xf5\x79\xba\xeb\xc5\xc6\x3f\x28\x07\x93\x67\x91\xb5\xfe\x48\x47\xcd\xcf\x15\x17\x74\x23\x52\x05\xcd\x2d\x7b\x8b\xf4\xae\x88\x19\x22\x5e\xa7\x08\xb7\xba\xac\x66\x99\x8f\x0c\xba\xb2\xc7\xdd\xf2\x51\xf3\xb1\xde\x10\x17\xd3\x97\x69\x22\x05\xee\xa6\x39\xf1\x2d\x77\xbe\xef\x6c\x13\xbb\x12\x10\x0f\xf8\x90\x64\x70\xbc\x7b\x21\x29\x80\x53\xbe\x1a\x61\xb7\xb3\xa4\x99\xed\xc3\x10\x99\x6c\x8b\xc0\x87\x19\x07\xca\x46\x8e\x89\xed\x31\x1a\xdc\xa2\xe2\xb8\x29\x30\x97\x5b\x3e\xfb\xbf\xc0\x3c\xdd\xf4\xd9\x48\xc4\x76\x5e\x8c\x10\x59\x08\x82\x16\x9a\xcd\xdb\x8f\x8c\x36\xd8\x4c\x2d\xac\x3b\x79\x8e\x7a\xbf\x84\x47\x12\xfa\x45\x8d\x27\x7c\x24\xe8\x14\x04\x7d\x74\x23\x19\xa8\x34\xdd\x9f\x92\x7a\x2b\x44\x85\xef\x13\x74\x5f\x7a\x60\xdd\x6b\xb3\x37\x93\x63\x04\xc9\x7d\x3f\x9f\x14\x4e\xb2\x9b\xb6\x95\xb8\xdc\x31\xb9\xd8\x49\x10\x61\x1d\x28\xd5\x81\xca\xa9\x36\x5d\x6d\xff\x52\xd4\x10\xa4\xad\x52\xbd\x12\x17\x29\xff\xf5\x28\x88\xf4\xda\xae\x17\x07\xf6\xf5\x6d\xac\x61\xff\xb9\x96\x1c\xda\x71\x76\xaf\x44\x60\xa6\xd5\x54\x2a\x20\x44\x6f\xb5\x14\x7f\xce\x72\x72\x04\xce\xc6\x89\x9b\x9a\x3d\x4f\xf6\x22\x6b\xb8\xa1\xc7\x8e\x36\xfc\xdd\x9e\x50\xc0\x40\xd7\x2d\x0f\x40\x07\xd3\xfa\x9a\xa7\x67\xe4\xab\xd0\xad\xd6\x2f\xdb\xcc\xde\xff\x67\x21\xeb\x25\x9e\x00\xa7\x21\x63\x20\x06\xbe\xde\x0d\x17\x3d\x38\x34\x4d\xea\x44\xf9\x6b\x67\xd9\xa2\xee\xa1\xd2\xaf\x5f\x74\x8e\x8e\xbd\xb4\x41\xbf\xb4\xe5\x8e\x2d\x42\xfe\xc7\x40\x56\x6a\xcf\x73\xa3\x03\x35\x8f\x7d\x89\xc8\x15\x8c\xf2\x1f\xe8\x5b\x0d\x4a\x41\x7e\xbd\xc8\x6d\x04\x69\xf6\xb9\x1c\x24\xad\x61\x0d\x48\x6d\xed\xc2\x18\xb2\xce\x7a\x8b\x96\x75\x47\x23\x15\x1f\x0d\x00\x76\xff\xf9\xf1\x9d\x11\x2d\x9c\x05\x92\xfb\x8d\x92\xc9\x9d\xcb\x8d\xdf\xaa\x46\xfb\xe0\xd9\x2d\xf4\x6b\x8c\x00\xca\x43\x45\xad\xb6\x9a\x5a\xca\x69\x4a\x86\xcf\x30\x64\x64\x51\xbb\x17\xba\x6e\x60\x7a\x91\x2b\xf1\x09\xd5\xfc\x2d\x3e\x27\xd0\x0d\x94\x56\x00\xa8\xa5\x7c"}, +{{0x43,0xbf,0xb3,0xdb,0xe4,0xd9,0xbd,0xaa,0x82,0xb3,0x54,0xdd,0x59,0x63,0x34,0xe6,0x60,0xd7,0x6f,0xc0,0xb2,0xeb,0x69,0x89,0x93,0xae,0xf3,0x76,0x7f,0x1c,0x7c,0x7f,},{0xd0,0x0a,0xec,0xef,0xf0,0xce,0xb8,0x32,0xc2,0x51,0xd1,0xfe,0x6b,0xcb,0xea,0xea,0xcb,0xb4,0x11,0x3f,0x52,0x81,0xba,0xba,0x4e,0x87,0x8f,0x7b,0x95,0xf9,0x3f,0x07,},{0xa9,0x99,0x55,0x23,0x02,0x0a,0x0d,0x22,0x2b,0xc4,0x8f,0x98,0xd0,0x55,0x04,0xe3,0x06,0x8f,0x30,0x4a,0x6d,0x19,0x70,0x06,0xcc,0x9c,0x03,0x5e,0xea,0xde,0x09,0x9e,0x7a,0xa9,0x7e,0x90,0x89,0x4e,0xad,0x17,0xe8,0xc3,0x0b,0x0a,0xa4,0xa9,0x80,0x88,0xf0,0x38,0xb9,0x22,0x44,0xc4,0xb2,0x0f,0xde,0x96,0x4f,0x85,0x34,0xe8,0xfb,0x03,},"\x3f\x3e\xed\xdc\xae\xf4\xe1\x66\x2a\xdb\x66\xbb\x1b\x20\x7d\x79\x3f\xcb\xef\x81\x50\x05\xe8\x26\x43\xed\x70\xc9\x85\x54\x03\xda\xc2\x8b\x52\x07\x27\xa9\x01\xa5\x32\xd2\x8b\x9b\xd1\x34\x8d\xb2\xf8\x96\x7b\xbb\x8c\x90\x98\xb0\x7f\x57\x0a\x2e\xae\x1e\xe4\x82\x64\x0c\x0b\x67\xa5\x2a\x38\x61\x21\x33\xa1\x5e\x25\x8e\xde\x38\xcd\xa8\x78\xff\x36\xed\x32\x1d\xff\x87\xcc\x6a\x01\x38\x3b\xa8\x40\x67\xd6\x0a\xf4\x17\x76\xac\xf8\x0a\x8a\x4e\xac\x77\xf7\xd8\x7c\x37\xa7\x04\xa3\xe2\xac\xa1\xe8\x81\x5e\x49\xfb\xca\xb7\x97\xc8\x56\x52\x95\x38\xbe\x07\xd5\x16\x96\x32\x1f\x69\xb0\x9b\x5d\xc5\xa1\x5e\x5f\x0e\x4c\x22\xd2\x28\x37\xf6\x2e\xe4\xc8\xbc\x7f\x25\xa9\x48\x7b\x96\x2c\xc2\x0f\x13\x3f\xcb\x87\x0e\xd1\x25\xcc\xa5\x85\xd1\x81\xbd\x39\xf9\xdf\xa6\x61\xf1\x9b\xe7\x6d\xa7\xf6\x5f\x22\xfb\xbc\x80\x75\x2a\xeb\x39\xe8\xd5\x9e\xd9\x6e\x14\xf5\x95\xd0\x49\x29\x40\x2b\x50\x29\xc6\x0c\xee\x37\xc0\x21\x7b\xc5\x31\xd8\x0d\xb3\x41\xda\xce\x3c\xce\x76\xe6\x43\xaa\xc5\x38\x87\x47\x3e\xdc\x6e\x19\xcb\x39\xfe\xcf\x6a\xf4\x24\xa2\x06\x63\x93\xd1\xc3\x3f\xc7\xb9\x36\x76\xd7\xe6\x10\x5b\x9b\xfc\x96\x7d\x1e\x29\xaf\xdc\x4c\xf1\x5b\xca\xfa\x09\xc2\x95\xa6\xf9\xde\xee\x33\x1a\xb3\xb0\xd4\x93\x12\x6e\x2b\x2f\xff\xb4\x2a\x6b\x68\xe7\x9e\x13\x8d\xb5\x50\x82\x72\x62\xe4\x87\xa8\x3f\x37\xf0\x1d\xd7\x92\x2b\xe7\x5e\x92\xfc\xf5\xd9\xd4\x80\x3b\x3a\xc2\xf3\x5d\xa2\x10\xfb\x38\xb2\x63\xb0\xff\xb6\xc2\x70\x8d\x4b\x55\xb7\x57\xaf\x52\x07\x7a\x7e\x31\x84\xd0\x1e\x82\xf6\x4d\x32\xcc\xe4\xfd\xee\x0f\x8d\x4e\x36\x4b\xcf\xb9\x58\xeb\xbf\xdb\xb6\x22\xb3\x8b\x51\xe9\x30\x27\x1c\x7b\x1b\x70\xaa\x9d\x4b\xb3\xaa\x4b\x99\x7c\x52\x14\x4d\x3a\xa6\x21\x62\x57\x3a\x3a\x1d\x9c\xe4\x6c\xdb\xee\xb8\x44\x9f\x12\x25\xc4\x49\x63\x1e\x88\x97\x52\x1c\xd0\xf6\x37\xb7\x21\xa1\x25\x2b\x8a\x10\xab\x0b\xe8\x70\xaf\xbc\xd8\x9d\x58\xb2\xeb\xb6\x32\x11\x95\x0c\xad\x7a\xb8\x2c\x81\x95\x02\x6b\x50\xea\x8b\x77\xb9\xe9\x0e\xd5\x59\xaf\x44\x84\x30\x88\x51\xa3\xa1\x56\x71\x68\x53\xa8\xac\x4e\xcb\x8c\x5c\xc7\xd9\x35\xb0\xf4\x66\x12\x41\x43\xb1\x17\x7f\x05\xd0\x8b\x97\xd1\xad\x54\x2e\xd2\xc2\x46\x5a\xf1\x85\xe7\xdb\x42\xb6\x9c\xb8\x02\xa7\x17\x94\xa3\x13\x98\x83\x02\x96\x70\xc9\x56\x74\x2a\xaa\xd7\x90\x7a\x71\xd9\x59\x85\xfc\x1d\x45\xb6\x59\x97\xb4\xec\x6c\xe8\x25\x5d\xe9\x59\x27\x0a\xfa\x7d\xe9\x0f\x29\x29\xde\x63\xf9\xb1\x72\x11\xd7\xf1\xae\x82\x0a\xda\x9c\xe3\xe4\x86\x49\x17\x9d\x60\xb0\x14\x94\x93\x48\x1f\x01\xd4\x59\xdb\x7d\xad\x05\x26\xb5\xbd\x9f\x4b\x33\x80\xd2\x5b\xa2\xc5\x02\xba\x8f\xa3\xc4\xd4\x13\x1b\x46\x62\xad\xde\xfb\x41\x82\x7f\x75\x9f\xa7\x1d\x44\x7d\x5f\x02\x92\x45\xf4\x8c\x62\x2e\xb7\xc6\x8c\x8e\x71\x08\x1f\x7f\x78\x9d\xe7\xa2\x83\xd2\xed\xa8\x3a\x7d\x17\x22\xa0\x5f\xb7\x2e\x17\x60\xc2\x40\x40\xc4\xd8\x34\xde\xf5\xdf\x5f\x74\x2e\x02\xb3\x04\x51\xc8\x93\xbc\xf7\xd7\x71\xdb\x78\x4c\xbb\xda\xec\x87\x6d\x8a\xc8\x67\x43\xb5\x29\xa2\x92\x00\x7a\xc7\x53\xc9\x9a\x57\x99\xcc\x32\x4f\xe5\xeb\xb5\x44\x8a\xb5\x54\xb1\x0d\x41\x36\x97\x4a\x12\x54\x2d\x25\xc6\x14\x7c\x67\xc5\xd2\x33\x6c\x9d\xb7\x5c\xba\x2f\xd6\x08\xcd\x43\xab\x95\xbe\xac\xd0\x43\xa1\x34\x9c\xef\xa8\x28\xe2\x3b\x5f\x0b\x6e\x0e\x29\x51\xf3\x35\x3b\xb9\x2b\xfd\x1f\x0a\x49\xc3\x3f\xb3\xcf\x37\x99\xa0\xb5\x43\x19\x8a\xd5\xd0\x3d\x26\x3c\x1a\x06\xc3\x5a\x26\xad\xe1\x51\x84\x91\xc8\xc1\xd2\x7a\x2d\xb0\x33\x80\x89\x32\xcd\x1c\x47\xb5\xa1\x26\x98\x5a\xcb\x8d\x88\x83\x60\xee\xcc\xfe\xb3\xbf\x51\xb0\xd1\x89\xb4\x19\x04\x40\x40\x4d\x12\xfb\xa6\x5d\x0a\x7a\x14\xc6\x20\xc5\x55\xf8\x22"}, +{{0x51,0x4e,0x07,0x0b,0x01,0x90,0xd1,0x8c,0xbe,0x98,0x1a,0x5a,0x15,0x1e,0x77,0x53,0x39,0x8a,0x27,0x2b,0xcf,0x01,0x48,0x13,0xad,0x37,0x97,0x22,0xc3,0x6e,0x13,0x3d,},{0x6f,0xbd,0xe0,0x47,0x4c,0xc4,0x81,0x0e,0xff,0xa5,0x0a,0x07,0x82,0x0c,0x96,0x5a,0xa0,0x03,0x95,0xff,0x3a,0x5b,0x3e,0x2e,0xdd,0x7d,0x35,0x6b,0x7d,0x6a,0xef,0x2b,},{0xb6,0xc3,0x55,0xc9,0x58,0xb5,0xba,0xa7,0xeb,0xe9,0x77,0xa9,0x3f,0xcf,0x53,0x95,0x89,0xa3,0x66,0xd4,0x01,0x60,0xe4,0xe0,0x31,0xb8,0x8a,0xb9,0x64,0x02,0xc7,0xbd,0x57,0x7f,0xf6,0x35,0xfc,0x07,0x78,0x24,0x23,0x59,0x8d,0xca,0x43,0x66,0x81,0x24,0xa8,0xb2,0x87,0x51,0x0e,0x2c,0xfd,0x07,0xa1,0xe8,0xf6,0x19,0xf6,0xc8,0x54,0x0a,},"\x83\x14\x55\x76\x2a\x5d\x80\x09\x7b\xb2\x84\x50\x42\xf4\xc8\x76\xe7\x10\x85\x35\xbe\xd6\x83\xe8\xc4\x46\x19\xd0\x81\x54\xa2\x29\x44\x4b\x10\x1e\x3e\xd7\xc0\x15\x07\xe8\x70\x94\x14\x46\xaf\x97\x8c\x0f\x53\x41\xd1\xac\x1d\xd1\x5b\x14\xe8\x96\x67\x12\xdf\x19\xf5\x2f\xeb\x51\x03\xcf\x62\xb6\x63\x27\x56\x44\x6c\xc7\x54\xdf\x00\xa3\xf6\xdd\x71\x99\x68\xa2\xce\xf6\x6c\x3a\xdf\xb7\xd1\xfc\x49\x1f\xbb\xf3\xd5\x92\x94\xab\x34\x61\x9e\x17\x6d\xb0\xd4\x46\x15\x1e\x37\xea\xa3\xda\xf1\x72\x40\x6e\x98\x3d\x9d\x23\xa6\xb6\x9e\x92\x97\x60\x30\xf5\xac\x70\x40\xad\x51\x14\x12\x9f\xea\xf9\x7a\xf1\x5b\x22\x96\xfa\xe7\x04\x92\xdb\xbe\xb2\xb4\x82\x76\x87\xfb\x79\x87\x15\xc9\xbb\x2c\x32\x55\x7a\x81\xd8\x91\xb8\x97\x05\x29\x00\x70\x71\x59\x75\x1f\x07\xdb\x07\x4c\x77\xf0\x71\x96\x71\xf1\x76\x66\x89\x02\x9a\x3c\xdd\xf3\x9d\xf3\x48\x3c\xf2\xb0\x4f\x71\xc2\x5d\xe0\x5f\xc2\xd0\x2b\xb4\x8e\x53\x9e\xaf\x1a\x32\x16\x46\xcd\x80\xef\x2f\x0a\xc7\x03\xf4\x5e\x73\x89\x53\x08\x00\xe5\xd4\x17\xcc\xea\x8a\x5c\x08\x66\x82\xf0\x47\x45\xd5\x0b\x5d\xfc\x8f\x6e\xdc\x87\xa9\x5c\x7d\x20\x2a\x9c\xfd\x99\x87\x14\xb7\x46\x92\x0e\xbb\xe2\x33\x5b\xca\x1a\x01\x71\x76\x20\x16\xf5\xe4\xbd\xa8\x9c\x57\xd0\xed\xc6\x91\x0c\x6d\x22\xc8\xf9\x09\xda\x3d\xb1\x35\x2f\x0c\x8b\xd1\x8f\x3b\x5a\xac\x25\xf1\x93\xb8\x94\x70\xf9\x76\xbc\x4f\x1a\xff\xb3\xc6\x6b\xc5\x87\x6c\x6f\xe2\xac\x75\x08\x53\x3d\x97\xbb\xcf\x77\x11\x9d\x9a\xae\x19\x3f\x07\xe0\xb6\x4b\x46\x1c\x9c\x6c\x3b\x9d\x29\x3b\xd3\x7d\xe3\xd8\xe1\xab\x1e\x8d\x87\x2c\xd9\x4e\x6c\xf0\xeb\x68\x43\x9f\xdc\xd3\xb2\x5c\xe8\x48\x34\x60\xbd\x8b\x7c\xce\x88\x9f\xb7\x22\xb4\x36\x1e\x11\x8d\xa9\x83\xef\x4a\x9e\x45\xce\xbc\x0c\x1b\x82\x29\xea\x53\xe6\xf5\x55\x05\xf6\x44\xe0\x9a\xca\xa4\xc4\xb8\xcc\x64\x0b\x2c\xd2\xb3\x12\xe1\xc3\xa2\xc0\x26\x69\xe1\xf9\xc0\x63\x11\xc7\x8d\x36\x00\x09\xdb\x9e\x67\xc3\x9b\x49\xd1\xe5\xd7\x70\xc0\x1d\x28\x4b\x0a\x17\xa4\x1b\x4e\x7c\xa7\x45\xd6\x65\xec\x07\x50\x0e\x4d\x9f\xc8\xeb\xc1\xcc\x6a\xf5\x3a\x3f\xc7\x6b\x0c\x3f\x14\x31\xd4\x98\x43\xf2\x0e\x18\x27\x82\xc8\x2b\x3b\x5a\xae\x36\xfe\x20\xca\x64\x26\x18\x06\x8b\xe2\x33\xd4\xb5\xef\x9e\xae\xff\x40\x15\x36\xdc\x59\x3a\x2b\xc1\x83\x44\xf5\x5a\xc5\xd5\xfc\x7b\x3e\xb5\x06\xd1\x1c\xb3\x75\x33\x00\x63\xc6\x20\xc5\x33\x4d\x72\x3c\x7d\x1f\x04\x28\x16\xbc\x47\x85\xb3\x5a\xc0\xe6\xf1\x74\xf7\x36\x87\x8b\x7b\x49\x16\x58\xca\x67\xd8\xfc\xab\x53\x8f\xc6\xec\xd2\x77\xea\xd9\x0d\x95\x4b\x46\x0d\xa4\x25\x3a\x1c\x3a\x30\xb3\xd8\x92\x8f\x69\xac\x98\x76\xa2\x89\x19\x69\xfc\x2d\x06\xa6\x68\x99\x2b\x8e\x21\x15\xdf\xe5\x35\x8a\x71\x24\xba\x7c\xcf\x42\x1d\x80\x54\xea\x04\x34\x44\xcd\xeb\x40\xb7\x16\xdc\x7a\x36\x59\xa3\xca\x94\x34\x72\x93\x48\x90\x60\xe2\xcf\x67\x12\xa2\xa6\xc7\xb8\xad\x14\x67\x85\xfc\x40\xcc\xb9\xda\x28\x78\x30\xd0\x11\xd0\xd2\x4d\xf3\xe7\xaf\xbe\x97\x2d\x6f\x41\x7d\xe5\xcd\x75\xf2\x59\xea\x07\xca\xfd\xde\x20\x5f\xc0\xa3\x65\x13\x5c\x23\x2c\xbd\x7c\x1b\xc5\x39\xfa\x4b\x7e\x1c\xce\x35\x18\x52\x37\xc2\x3f\x80\xae\x97\xc1\x86\xd0\xd3\xb1\x05\x03\xd5\x98\x4a\x20\xec\x41\xc3\xcd\x04\x2c\x28\xa4\xc3\x1f\x95\x74\xb0\x6a\x87\x2b\xf9\x59\xab\x0a\xdd\x1f\x5d\xee\x14\xa1\xe7\x41\xef\x23\x8d\xfc\xde\xc0\x85\xaa\x08\x8d\xcf\x39\xa3\x6d\xda\x8f\x2a\x85\xed\x0d\x36\x2c\xcb\x00\x5d\x02\xe5\xac\xcc\x09\x2a\x37\x6d\xc1\x1a\x56\x61\x70\xd5\x83\xdb\x35\xf1\xde\x0b\xe3\xf1\x59\x08\x59\x6e\x9b\x78\x1a\xc8\x1b\xe0\x7b\x9b\xd2\xaf\x46\xc5\x6f\xb4\xd9\xd8\x42\x76\x01\x1e\x46\x18\xb7\xf7\x6f\x96\x79\x4c\xd0\xfd\x57\xed\x41\x4b\x63"}, +{{0xbc,0x79,0x0a,0x73,0x85,0xdd,0x1d,0xdd,0xc7,0x62,0xe3,0xb2,0x02,0x21,0xdc,0x07,0x8b,0x6c,0x3d,0xa8,0x98,0x6d,0x41,0x80,0x94,0x07,0x27,0x25,0x7c,0xfd,0xcd,0xf1,},{0xc9,0x26,0x46,0x26,0xf6,0x8f,0xed,0xb5,0xb3,0x9c,0x28,0xf0,0x30,0x45,0x3b,0x54,0xd0,0xd5,0x1a,0x98,0xb1,0x77,0x21,0xf2,0x61,0x1d,0x7f,0x27,0x7e,0xf4,0x8b,0x81,},{0x6d,0x6b,0xd6,0x5f,0x37,0x26,0x79,0xfe,0x9d,0x94,0x5f,0xf5,0x65,0x16,0x33,0x3e,0xce,0x0b,0x7a,0x25,0xb1,0x5a,0xd2,0x48,0x73,0x81,0x67,0x0e,0x53,0x6f,0x52,0x46,0x77,0x5e,0xb3,0x9a,0x11,0x4d,0xb2,0xb9,0xcd,0x50,0xf3,0x12,0xb3,0x60,0xd9,0xd0,0xbe,0xa2,0x95,0xdc,0x37,0xb8,0x17,0xb3,0x32,0x89,0x0a,0xdb,0x65,0xe4,0xc4,0x01,},"\x14\x3d\xd7\xbf\xbf\xf2\xad\xc7\x1f\x5d\x12\x3d\x47\x4e\xa0\x69\xdf\x14\xae\x92\x3e\xd9\xbf\x8f\x98\x91\xe6\x0b\xae\x43\xf0\xc9\xf5\x55\x37\xac\x9d\x1a\xe5\x23\xce\x4e\xcf\xd3\x3b\x20\xae\x44\x5e\x9c\x42\x63\x72\x05\x0f\xa5\x21\x7c\x1e\x4f\xb0\x13\x53\xeb\xf2\xe3\x29\x04\xef\x7e\xef\xcf\x72\xe8\x02\x3b\xae\x06\xbb\xb6\x40\xcf\x77\x7d\x5b\x0e\x11\x52\x7b\xc8\x35\x49\x3a\xd6\x98\x0a\x15\x7b\xb2\xd5\x0b\xe2\x33\x65\xe7\x2c\xbf\x0b\x3f\x20\x9e\xf0\xc4\x4a\x00\xb4\x1a\x62\x26\x24\x88\x09\x6c\xae\x5a\x69\x6b\x4d\x64\xcb\xad\x34\x50\x0d\x41\xfb\x4e\x4b\xc7\x0f\x8b\xf6\x21\x44\xd0\x1c\x22\x75\xd6\xd2\x9f\x5d\xe7\x5b\x17\x21\xd5\x04\x6b\x68\x29\x16\x44\x43\xeb\xfd\x9c\x17\x81\x31\x9d\x88\xf5\x40\x10\xed\xc2\x96\xab\xbe\xd0\x2b\x7d\xad\x9b\xa5\x85\xb5\x52\xe0\x00\x5d\xcc\xa4\x00\xbf\x4f\x45\x9e\xed\x7d\xb8\x6e\xa8\x61\x2b\xe9\xe9\x18\xdf\xd4\xe2\x70\x0c\x47\x10\x08\x32\x83\x62\x6f\xac\x75\x44\x17\xe0\x08\x7d\x26\xba\x14\x5d\xfc\x45\xb1\xc9\xbf\x7b\x4d\xd7\x0e\x6c\x50\x87\x47\xef\x80\x5c\x9a\x02\x42\x5a\xeb\xc6\x42\x1e\x0d\xeb\x6a\x79\xd8\x9a\xce\xee\xe0\x1e\xce\xcc\x9f\x3c\xa3\x65\x38\x38\x26\x58\x4c\x43\x0e\xbd\x39\xec\xf0\xa7\x28\x66\xae\x0a\xce\xca\x5a\xd4\xf0\x40\x5b\x67\x77\x9c\x04\xc5\xde\x03\x30\x61\x4d\xa3\x47\x0b\x80\x5d\x78\x7c\xe7\x9a\xc5\xa6\x96\xdd\x6f\x6b\x55\x39\xb1\xa6\x51\xb4\x24\xce\xfb\x19\x49\x1d\xa6\xe0\x88\x92\x23\xcc\x98\x39\x8b\x42\xc0\x04\x14\xff\x8d\x6c\x06\x27\xeb\x97\xcf\xf2\x0a\x8c\xbe\x7f\xcc\xb4\x1d\x81\x0f\xcf\xe8\x58\xca\x74\x75\x24\x7e\xf6\x28\xe8\x4a\x09\xd0\x12\xfe\x12\x23\x5b\x38\xc1\xcc\x9d\x82\xe2\xb6\x9d\x01\xd6\x21\x8c\xfd\x48\xe8\x5f\x26\xae\xad\xd1\x95\x40\x8c\xdd\x4c\x2f\x80\x6a\x89\x04\x1f\xd0\x31\x7f\xb1\xa7\xb6\x20\x9f\x90\x42\x70\xd3\x4e\x60\x61\x95\x04\x72\x88\xb0\xfb\x11\xa5\x72\x29\x38\xf6\x7c\x22\xb3\x13\xf7\xf7\x4b\x20\x25\xc7\x5b\xcd\x1e\xcc\x5a\x9a\xdd\x4a\x64\x0a\x41\xf2\x99\x6e\xb6\x6e\x5a\xf1\x96\x19\x8d\xb5\x8a\x3f\xb9\x93\x8f\x34\x9f\x92\x2a\x24\xd8\x6f\x4e\xd8\xa9\x6a\x09\xa1\x96\xc2\x4d\x6d\x01\xed\x76\xf3\x81\x6c\x05\xc4\xf2\x6b\xac\xa9\xb9\xd6\xdc\xc7\x9b\x58\x0d\xfb\x75\xd6\xc9\x05\xd4\x80\xda\xd7\x69\x51\x85\x4b\xda\x1c\xaa\x7f\x4a\x81\x95\x43\xae\xd0\x1a\xe9\x56\xbf\x30\x58\xfe\x8b\x3c\x7d\x5d\x72\x49\x62\xf1\xa6\xa8\x31\x43\xdd\xad\x27\x4f\xda\x3a\xd5\x78\xe9\x8a\xa9\x67\xc4\x10\xee\x57\x57\x5e\xf0\x1c\x02\x58\x56\x0f\x0a\x1f\xa4\xb7\x93\x27\x79\x6d\xe9\x94\x20\xcf\xd0\xa4\x15\x50\x63\x60\xf1\x24\x2c\xcc\x58\xa6\x88\x09\x27\x75\x0d\xbb\xff\x13\xd7\xc1\xb4\xed\x51\x9c\xda\x35\x72\x10\xf1\x2f\xb0\xd1\xc4\xd4\x8f\x04\x11\xbd\x7e\x05\x8c\xc4\xcb\x93\xd3\xc7\x75\x97\xe2\x65\x3f\xfa\x28\x2d\x3c\x2f\x12\x8a\xc3\x3a\x23\x7a\xf2\xfc\xbc\x9e\xf9\xc8\x11\xf3\x78\x14\xba\x2b\x0b\x85\x09\x3d\x0f\xd1\x8b\x8c\x6f\xb0\x9a\x43\xce\x52\x25\x4d\x23\xd5\x5f\x32\xe1\xd3\x24\x2a\xed\x1f\x23\xd9\xcf\x20\x4a\xa0\xdf\xd4\x4a\x34\x6f\xe0\x9e\x55\xa4\xa0\x6c\xf1\xbe\xf8\xbb\xf3\x7b\xa1\xf1\x59\x8a\x58\xae\xf8\x95\x01\xec\xba\xc0\x45\x35\x43\xe4\x80\xed\x0a\xdd\xe9\x0c\x84\x1d\x95\xeb\xd6\xeb\x23\xba\xa9\xf7\x0f\x83\xc1\x49\xea\xb3\x2d\x09\x13\xc7\x9b\x09\x93\xd0\xe1\xd3\x57\x4f\x0f\x54\x2e\x56\xa2\x06\x16\xcf\xe4\xa8\xbd\x7a\xae\xeb\xe0\xb0\x83\xdc\x2c\xe0\x14\x61\x78\xc0\x74\x82\xa0\x11\x29\xbc\x6f\xef\xdc\x81\x41\xc1\x38\x48\x94\xb6\x9c\xbe\x2f\x29\xda\x18\x8f\x7f\xd4\xac\x34\x1a\x2d\xf6\xfd\x90\xde\xe6\xa4\x46\xd2\x74\x63\x24\xc7\x5c\x1e\xf5\xb1\xac\xe1\x87\xd3\xbc\x16\xd7\x05\x59\x89\x29\x75\xd7\xe4\x71\x38\xf0\x40\x63\x85\xea"}, +{{0xdb,0x3a,0x44,0xdf,0x40,0xd2,0x55,0xa2,0x5c,0xf2,0x3f,0x53,0xc4,0x52,0x23,0xb7,0xd8,0xf1,0xf1,0xf1,0x11,0xba,0x07,0x40,0x6b,0x71,0xe1,0x84,0xa8,0xcd,0x06,0x12,},{0x6b,0x12,0xbd,0x95,0x80,0xae,0x20,0x7a,0x9b,0x0b,0xaa,0x82,0x87,0xb8,0xbb,0x86,0x66,0x93,0x73,0xee,0x5e,0x5a,0x62,0x5a,0xb4,0xa6,0xef,0x2d,0x08,0x71,0x25,0x97,},{0xcc,0x28,0xb5,0xef,0x4b,0x97,0x73,0x63,0x7f,0xae,0x7e,0x5f,0x08,0x4b,0x69,0x94,0xaa,0x35,0x98,0xf8,0xf4,0xa6,0x5d,0x0b,0xb2,0x01,0xd1,0x72,0xd8,0x61,0xa3,0x01,0x49,0xb3,0x33,0x8d,0x3c,0x3a,0xb7,0x5b,0x32,0xb2,0x55,0x95,0xcd,0x8b,0x28,0x96,0x30,0xc3,0x37,0x6a,0xcd,0x10,0xba,0x2a,0xb2,0x6b,0xc1,0xab,0xa9,0x00,0x84,0x0e,},"\x52\xdd\x8b\xa4\xff\xfa\x34\x4d\x1e\x08\x11\xd9\x67\x5c\x31\x3f\x9c\xc0\xe5\xa1\x38\x47\x86\x91\x98\x9d\x2b\x7f\x73\x89\x02\x50\x68\xfa\x35\xf7\x4f\x9a\xea\xf1\xe9\x56\x65\xec\xf8\xd5\x70\x7f\x75\xf6\x5f\x22\x56\xee\xa9\x33\x98\xbe\x59\xc0\xd5\x38\xf5\xe8\x58\x4b\xfb\xb3\xa2\x40\xf5\x01\x6d\x79\x27\x23\x4c\xb3\xea\xc3\x5b\x39\x1b\x8b\x53\xf2\x0e\xd8\xba\xe0\xba\x11\x08\x96\x94\xbf\xea\xde\x11\x07\x16\x56\xd4\xcf\x18\xef\x2d\x36\x81\x92\xe0\x4e\x08\xe3\x02\x4f\xc1\xd2\xfd\xa6\x31\x2a\xfc\xa6\x8d\x10\xc9\xc3\x36\xa0\xe3\x68\x50\xbe\x1a\x4f\x35\xb0\x33\xa8\x5a\x2a\x95\x49\xf2\x67\x3a\x99\x5f\x2a\x9a\xb4\xbd\x46\xc8\xfd\x2d\x83\x8e\x64\xf7\x61\x71\x34\x27\x32\x9c\x9a\xf5\xe4\x21\x1a\x22\xab\x20\x8a\xaa\xb8\x0e\x19\x4c\xd0\xf6\xa5\x02\xb3\x08\xfe\xd6\xc5\x83\x51\x78\x01\xa4\x8e\xd4\x33\x0e\x2f\xad\xdc\xd4\x18\x09\xc3\x91\x9b\x30\xe8\x4d\xb3\xc6\x87\x31\x03\x1e\x79\x85\x7d\xd9\xf9\x7f\xfd\x12\x54\x7d\xa7\x06\x67\x98\x07\x41\x51\xec\x88\xa5\xfa\x96\x3b\x9d\x9d\x83\xba\x2f\xee\x13\x58\x33\x95\x0e\xf7\xbc\x62\xb3\x40\x1e\xa1\x1b\xb3\x6f\x25\x56\x1b\xc0\x52\x2b\xb0\x2d\x8d\xad\x05\x43\xf6\x3d\x54\x7b\xe7\x7d\x0a\x4c\x9b\xf6\x5d\x42\xf3\xa2\x76\x14\x4d\x2e\x47\x4e\x29\x42\xf3\x79\x02\x21\xe2\x6f\xba\xe7\xca\x91\xef\xd8\x59\x21\x99\x08\x35\xfa\xfb\x6d\xc6\x74\x63\x5c\x96\x01\x82\x10\x38\xb5\x27\x11\x34\x3d\x1a\xa2\x5f\x1c\x46\xba\x4e\x3c\x6e\x71\x2b\xac\x19\xe5\x3e\xae\x30\xe5\x24\x6e\x4f\x04\xdd\xf2\xac\xdb\xb3\x41\x63\xc2\x43\x67\x76\x90\xbe\x0b\xf2\xe3\xfa\x16\x48\x70\xb5\xe6\xf5\x36\xb2\x2f\xb8\x9e\x5e\x8e\x1d\x87\xcd\xb3\x40\x44\x97\x7e\xd2\x83\x6e\x54\x4d\x7b\xa4\x93\xdd\x42\xa2\xb6\x49\xbc\xf3\x13\xc5\xb3\x9a\x1d\xbf\xff\x3e\x7f\x2a\x59\xad\xe8\x7d\x3e\x7b\x25\x8f\x58\xe5\x65\xfd\xba\x3e\x4d\x92\xb1\xed\xb8\xbf\xf5\x4d\xc4\x9d\x86\xc5\x3c\x03\x0c\xf5\x8b\x97\xef\x06\x6d\x24\x1b\x54\x05\x30\x21\x39\x05\x73\x9d\x8e\x1a\xa7\x2e\xd9\x0f\x68\x5d\x39\x58\xea\xa2\x42\xb0\xcb\xf7\xa2\xeb\x97\x6e\xe9\x6a\x63\xe6\x67\x86\x46\x41\x69\xa7\x42\xd4\x57\xe4\xd9\x11\x7c\x7d\x66\x42\x84\x45\xa4\x69\x30\xc2\x8b\xa7\xa2\x65\x82\x41\x80\x5e\xbe\x72\xc7\x8e\x02\x03\x5d\x26\x3a\x21\x1e\x59\x0b\x49\x0c\xdb\x84\x41\x50\x62\xee\xd1\x4f\x13\xb8\xa1\xa9\xe7\x7c\x8d\x7b\x75\x51\x5b\x18\xfb\x85\x38\x6e\x4a\x7e\x05\x39\x80\xd3\x0f\x48\x99\xe8\x38\x63\xbe\xe8\x75\x58\x58\x87\xc5\xf4\x8b\x51\x6c\xcb\x73\x1c\x4b\xca\xa3\xdf\x07\xd0\x47\x95\x81\x40\x96\xc7\x9d\x7c\x5f\xdc\x4d\xab\xf5\xe2\x6a\x4c\xa1\x83\x8e\x0e\x5d\x87\xdb\x71\x30\x9b\x81\xea\x7c\xe4\x61\xe5\xe4\x4c\x7a\xb2\xf1\x05\xad\x75\xc5\x43\xc1\xe9\x17\x9c\x36\xa5\xfa\x55\x5e\xc9\x22\xff\xed\x1b\x76\xd2\x58\x01\xdd\x74\xf8\x0c\xd0\xa6\xba\x7b\xc2\x0d\xb0\xad\x58\x0b\x7b\xbb\x9d\xdc\xfd\x93\xad\x1c\x5f\x20\xf3\xe2\x7c\x3e\xa3\xa1\xe7\x1e\xb7\x4f\xf5\xf9\x44\xcd\x3b\x98\xf6\xd0\x45\x29\x59\x30\x11\xc4\xae\xce\xf6\xdc\xaa\x60\xfb\x18\x36\x8c\xb1\x2b\x6e\x39\x1b\x3f\x5d\xf7\x65\xcb\xab\xff\x15\x89\x8c\x84\x79\x6f\xc2\xb5\x3f\xa4\x90\x0d\xad\x03\x4a\x13\xb0\xce\x14\x45\xad\xda\x4e\xf7\x19\xbe\x74\x14\x19\xe2\x31\xe9\x2f\x1f\x66\x7a\x32\x84\x2a\x42\xdb\x79\xbd\x7a\x01\x4a\x80\x9c\x81\x59\x6e\x82\x62\x73\xd1\x6f\xe5\xd4\x04\x58\x24\x2a\xe1\x0e\x12\xe6\x0b\x34\x89\x53\x0c\x66\x22\xb5\xbb\x44\x45\x4f\x29\x61\x6e\x47\xe9\xa2\x97\xce\x1c\xa0\x74\x13\x7f\xd9\xae\x13\xe3\xee\x8e\xdb\xcf\x78\xaf\x26\x54\x59\xdb\x1a\xf3\x42\xdc\x0b\x2f\xc8\x09\xbd\xa0\x15\xb5\xa8\x2b\x2b\x7c\x54\xef\xe4\xe5\xfc\x25\x2e\xb1\x3d\x66\xe8\x08\x93\x6f\x19\x10\xf4\xc4\x8b\xe0\xef\x7a"}, +{{0x77,0x96,0x4d,0xad,0x52,0xb5,0x79,0xb8,0x96,0x67,0x53,0xda,0x31,0x86,0xd1,0xc5,0xe9,0xd3,0x3d,0x33,0xa4,0xdb,0x38,0xbc,0x0d,0x7a,0x1a,0x6c,0x11,0x2c,0x13,0xc2,},{0xfc,0x25,0x12,0x5e,0x78,0x29,0xf6,0x42,0x34,0x37,0x5e,0x52,0xae,0x9f,0x77,0xae,0x10,0x13,0xf9,0x9d,0xf5,0xf9,0x96,0x5a,0xd2,0xaa,0x16,0x58,0x95,0x96,0xd0,0x91,},{0x3d,0x1b,0x4b,0x4e,0x82,0x0d,0x25,0x0b,0xe2,0xa8,0xfa,0x97,0x1e,0x59,0x9e,0x1e,0x98,0x97,0x75,0x28,0xb2,0xf9,0x30,0x18,0x96,0x81,0xa9,0x3b,0x05,0xe1,0xa7,0x06,0xfc,0x80,0xef,0xfa,0x94,0xe9,0x29,0xbc,0x43,0x92,0x16,0x56,0x89,0x73,0x88,0x28,0x8a,0x9b,0x29,0x27,0x1f,0x37,0xa1,0x4b,0xe0,0x14,0xb8,0x73,0xc6,0x8f,0xc9,0x04,},"\xc3\x39\xe7\x18\xa7\x57\xf3\xf3\xbd\x1b\xab\xdd\x2e\x00\xaa\xa5\xcd\x7f\xc9\x00\x5e\xe3\x4b\x6f\xdc\x09\xd7\x1f\xbd\x9c\x92\x89\xab\x1d\xd1\x4d\xba\x2c\xad\x58\xcb\x80\x51\x16\x77\x7b\xd8\x0c\x85\x96\x64\x33\xad\x46\xf9\xca\x6e\x54\xf1\x3d\xd3\xca\x7e\x56\xe4\x7f\xea\x41\xe5\x48\x8a\x45\xad\x53\xbc\x5d\x65\x74\x27\xe1\xd7\x93\x8f\x55\x19\xf1\xb0\x9f\x5b\xdd\x98\xaa\xe5\xac\x96\x43\xef\x78\xeb\xa4\x93\x49\x25\x33\x9a\x15\x5d\xc6\x68\x28\x57\x10\x02\x09\x7a\x11\xa5\xce\xe7\xb5\x1a\x44\x1b\x75\x6b\x0c\xe6\x5b\x77\x9a\xfe\x19\xda\x6a\x18\xef\xc1\x45\xf6\x09\x0c\xe7\x70\xde\x9e\x0e\x91\xf5\x43\x27\x0a\x09\x85\xea\xb4\x75\x29\x3c\xcf\xdd\x31\x41\xc4\x14\x2e\x47\x22\x23\x3b\x26\x74\x99\x44\x76\x41\x23\x5d\x72\x8b\xd7\x5c\xd1\xad\xc0\xdb\x14\x2f\x73\x31\xad\xdd\xf8\xc5\xee\xa3\xd5\x76\x40\x5d\x86\x99\x15\xb5\x60\xf9\x64\xe3\xe0\x00\x3c\x91\xf5\xe9\x6b\xff\xbe\xee\xc7\x3e\x51\x02\x4e\xf5\x2c\x55\xc6\xdc\xb5\x4d\x58\x20\x3e\x62\xf4\xdd\xb6\xe1\x37\xeb\x08\xe1\xbf\x13\x26\x01\x8a\xfd\x1a\x86\xca\xb6\xc8\x41\xe0\x66\x1c\xe0\xa1\xa7\xae\x96\x7f\x24\xc1\xa7\x7f\xc7\xca\x50\x5f\x72\xe5\xf7\x93\x6e\x39\xc6\xf4\x83\x7e\x25\x95\x19\x5a\x69\xcd\x67\x65\x10\xa7\x16\x1a\x4d\xc5\xe3\x18\xf3\xd4\xf3\xac\x0a\xf0\x3f\x8c\x4a\xe5\xbc\xe3\x93\x24\xe9\x73\x8a\xea\x49\xf0\x02\xd3\x2d\x16\xde\x23\x17\xe9\x5a\x9f\x32\xee\x60\x4e\x13\xdb\x80\x38\xb2\x64\xcf\xc1\x7a\xed\x29\xc9\xde\xbf\x81\x91\xde\x9e\x0e\xfc\x95\x1a\xd6\xd5\x48\x67\x06\x8c\xf5\x0a\x26\x9c\x37\xa2\x41\xf8\x52\x06\x78\x8d\x23\x14\x31\x77\xf6\x59\xcc\xa6\x6c\xfc\xe0\x3b\xc0\x50\x22\x55\x33\x7f\x16\xb3\xda\xd6\xf7\x91\x32\xab\xf8\x0f\xf1\x2b\x6d\x22\x81\xe6\x37\xeb\x6c\x71\xf7\x6e\x26\x33\xa1\x14\x56\x52\x40\xee\xd0\x0f\xab\xea\x9e\xd8\xde\x28\xc8\x32\x21\xf8\xcb\x48\x5f\x51\x2d\x90\x08\xbf\xc7\x4a\x36\x6d\x4c\x2b\x4e\xd1\x72\xd3\x67\xe0\x24\x7c\xb6\x50\x98\xc1\x10\x28\x2e\x83\x1d\xf8\xe9\xbd\x4f\xbd\x5f\x4d\xd2\xb7\xf2\x42\x0c\x23\xb8\x5a\x63\x7a\xa2\x26\x2c\x3c\xb8\x84\x05\xf7\x07\x30\xc9\xab\x4c\x9d\x0f\x22\x7e\xe4\xfa\x4e\xf9\x1e\xfe\x9a\x59\xb3\xe6\xd8\x43\xdb\x87\x9f\x56\x50\x05\x9e\x99\xf0\xe4\xa0\x38\x68\x38\xe6\xf9\x87\x6f\x67\xd5\x0f\x89\x83\x2d\xda\x5f\x30\xa9\xcb\xfd\x71\x01\x34\xf9\xb5\xb5\x46\x27\x49\x6a\xa3\xa4\x32\x12\xb0\x7f\x03\xdb\x11\xd3\xd4\xf8\x75\xd4\x1d\x1f\x4a\xc4\x59\x69\xdd\xef\x69\xf8\x1a\x06\xd2\xb0\xc6\x46\xc9\xcd\x93\x1c\xf2\x50\x2f\xef\x0d\xd3\x2a\xbb\xf0\x95\x1e\xd3\x03\xf5\x28\x48\x25\x93\x43\x97\xfc\x22\xe7\x86\x98\xd3\x5a\xd8\x1d\x82\x25\x6b\xf9\xe1\x54\x00\xa1\x09\x16\x23\xa9\x82\x6f\x1e\x57\x79\x23\x67\x41\x7e\xf0\x25\x86\xd6\x4e\x65\x0d\xa9\xac\xe2\xf1\x8a\xa0\xa1\x26\xd8\x67\xca\xc4\xb5\xd4\xc9\x1b\xf5\x20\x9e\x53\x59\x55\x63\x86\xf8\x27\x08\x3e\xb5\x3e\x8b\x47\x09\xff\xfa\xbe\x92\xc6\x1d\x78\xff\xb5\xda\xf1\x02\x74\xe2\x42\xa7\x00\x91\xf3\xf9\xb9\xd5\x96\xc1\x25\x8c\x9a\x63\x38\x4f\x4b\x05\xb0\x28\x66\x12\x22\x18\x1c\x0f\xca\x96\x5f\x0a\x2c\xb5\x6e\x4b\x55\x6d\x6f\xbf\xf7\x1b\x64\xd9\xb3\x58\xda\x31\xaa\x37\xc7\x4f\xf5\x96\x2f\xb8\xd9\x6a\x38\x3d\x04\x97\x24\xc1\x9e\x24\x9c\x9e\xdb\xb2\xa3\x75\xb2\x3c\xe3\x10\x4d\xa0\xec\x58\xd2\x63\x5b\xa0\x3b\x55\x42\x3f\xa2\xdb\x7e\xb3\x49\xa4\xfc\x58\xa1\xef\x54\x0e\xe9\xa0\x2c\x2e\x70\x3c\x68\xd7\xf8\x47\x5f\x43\x4d\xdd\x32\x00\xdb\x1f\x06\x74\x57\x91\xa3\xac\xc3\x16\x0d\xba\x50\xa3\x93\x44\x7f\xfe\xef\x6d\xc7\xb9\x8f\xb0\x66\x84\xcc\x90\xfd\x85\x20\x3d\x11\x9d\xcd\x81\x99\xe4\xd9\xa8\x9a\xe3\x46\x7a\xe4\xbb\x19\xfb\x71\xcf\x74\x70\x29\xc2\x40\x96\xf9\xa5\x0e"}, +{{0x5c,0xaf,0xd8,0x17,0xa4,0x41,0x0c,0xcb,0x27,0x12,0x17,0x23,0xef,0x32,0x07,0xc1,0x73,0x1a,0x08,0x61,0x94,0x5b,0xe9,0x62,0x71,0x4c,0x0e,0xd9,0x50,0x38,0xa1,0x95,},{0x4e,0xa0,0x86,0xbe,0x43,0xec,0xe1,0xc3,0x2d,0x08,0x05,0x9b,0xba,0xdc,0x9e,0x9a,0x2b,0x2f,0x4f,0x3f,0xe3,0x70,0xf1,0xf5,0xcc,0xd7,0xdb,0xde,0xc0,0xaa,0xf3,0x03,},{0x28,0x85,0x15,0xfa,0x72,0x59,0xf1,0xeb,0x58,0x7f,0xe8,0xa2,0xc4,0x03,0x43,0x4c,0x46,0xf8,0xd7,0xe7,0x5b,0x6d,0x22,0xbb,0x38,0x96,0x56,0x6c,0x01,0x7d,0x09,0xb6,0x98,0xc2,0xc8,0x07,0x79,0x9c,0x2f,0x65,0xf9,0xcd,0xb4,0xeb,0x58,0x15,0x1c,0xcf,0xc4,0x8d,0x10,0x80,0x61,0xa6,0xb3,0x14,0x84,0x32,0xb2,0xbf,0xc1,0xcd,0xab,0x05,},"\x50\xb2\xf0\x53\x42\x41\x80\x46\xd1\x6a\x30\xbe\x4f\xc6\x2b\x67\xda\xf6\xc1\x8d\x2a\x74\x24\x2b\x7c\xb5\x5b\xa9\x0a\xd2\x0b\x6c\xaf\xdd\x60\x15\x57\x37\xc2\x9d\xe4\x8a\xa5\xd7\x99\xfe\x54\x95\xfe\x59\xdf\x5a\x9b\x8c\x0a\x8e\x54\x18\x90\x47\x63\xfb\xad\x83\xea\x69\x86\x65\x1b\xac\x31\x11\x79\x39\xce\xf4\xe0\xc7\x99\x30\xd5\x2d\xfd\x7d\xb4\x3c\x31\xad\xda\xe3\xcf\x93\xe3\xef\xc5\xa9\x16\xef\xd0\xd6\x5f\xdc\x30\x90\x9f\xa3\x56\xcc\xbc\x52\x47\xd7\xaa\xa0\x67\x13\x1b\x6b\x48\x20\xfd\x02\xf8\xe3\x95\xf5\xa9\x70\x4c\x9b\xdd\x75\x60\xa6\x11\xd6\x25\x59\xa8\xdf\xe1\xd2\x85\x9c\x52\x48\x6c\xc1\x1e\xd3\x33\x19\x92\x48\x8f\x41\x75\x20\xd9\x20\xdc\x73\xa3\x2d\x4f\x08\x11\x00\x82\x50\x0f\x5a\x96\x2a\x30\x69\x32\xc6\xa7\x80\x29\x55\xce\xda\xd7\xab\xf5\x3b\x0f\x19\xfe\x47\x94\xa3\x1d\x6b\x85\x53\x80\x28\x43\x06\xcc\xff\x71\xa4\x00\x78\x59\xa2\x32\x8b\xb1\x90\x24\xc4\x3e\x10\xd7\x70\x64\xd8\x66\xd9\x62\x2d\x14\x2c\x27\x35\x4b\x84\xac\x3b\x4f\x82\x32\xf7\xa2\xf8\xaf\x64\x09\xd5\xcc\x75\x7a\x18\xef\x81\x3d\xfa\xf4\xb9\xbc\x04\x0c\xb0\x06\xd7\x7f\x14\x36\x41\xaa\x20\x36\xac\x7b\xc9\x28\xdc\x96\x58\x5d\x9e\x36\xc7\xbc\x9c\x56\x4d\x25\xf1\xc2\xcc\x0b\xea\xb9\xd5\xf2\x07\xe8\x4b\x21\x5f\x1e\x7a\xa6\xfc\x32\x82\x37\xb7\x9c\x39\x92\x3a\x4e\x09\xc7\xc7\x3d\xc6\xb2\x4b\x14\x16\x29\x4d\x79\x8a\x4e\xd5\xf7\x58\x33\x6d\x91\x5a\x87\x0a\x7d\x6b\x75\x92\xb5\xb8\x8a\xac\xe2\xdc\x5f\x26\x7b\xdb\x49\x11\x41\xcb\xba\xe2\xa6\x77\x40\x7c\xc0\x95\x5f\x96\x19\x62\x59\x93\x04\xba\x0b\x83\x96\x71\xa5\xc0\x00\xe9\x20\x10\x8a\x05\x29\x80\x87\xe4\x97\x70\xae\xee\xaa\xb3\x63\x27\x24\xcb\x0f\xc2\x28\x57\x96\xdc\x41\x48\x14\xfd\xa7\x8a\x54\xe6\x7f\x00\xa0\x2f\x77\xd3\xcc\xde\x1e\xd9\xd7\xb1\xde\xf1\x4e\xa1\xf6\x19\x10\xbd\xf3\x0a\x11\x96\xfc\x63\x51\xb6\x22\x54\xd6\x44\x5e\x6c\x90\x44\x5b\x16\xef\xaf\xe2\x89\xa2\x78\x4b\x92\xe4\x2b\x78\xa4\xa9\x00\xc3\x5f\x55\x63\x0b\xbb\x77\x62\xff\x9e\xb7\xfe\xf7\xd0\x4c\x90\xb9\x57\x1c\x4f\xc7\x60\xa4\x10\xdb\xfc\x25\x29\x91\xd0\xba\x27\xf2\xd4\x14\xfe\x64\xee\xfd\xff\x4a\xbc\x18\x81\x7c\x97\x06\xc6\x31\xbf\xa2\x03\x82\x1d\x3b\x92\xcb\x33\x8b\xaa\xf5\xd1\x23\x2b\x46\x26\x47\x95\x4d\x09\x02\x46\x2f\xb1\x69\x6e\x99\x1f\x07\xfa\x9c\x3d\xbc\xf2\x87\x29\x60\x83\x1b\x4d\xed\x92\xa4\x21\xcf\x21\xb7\x53\x16\x5f\xf3\x09\xef\xe2\xef\x54\x38\xc0\x12\x70\xd1\x0c\x6a\x03\xd3\x4f\x71\xeb\xc2\xda\xb1\xda\x90\xda\xa3\x57\x98\x4d\x24\x62\xbc\xb3\x5e\xe3\xde\x55\xc3\xa5\x5f\x8b\x98\xae\xc2\x11\x4f\x74\xc8\x43\x41\xa6\x41\x27\x86\x3c\x12\x0b\x5e\xca\xd9\xe3\x29\xa5\x75\x6a\xe4\xa2\x55\x5d\x84\x92\xcd\xa8\x35\x22\x5a\x8d\xeb\x3f\x9c\x15\x58\xf0\xd4\x25\xbc\x17\x2f\xf7\x64\x0c\xc7\x9d\x97\x80\x04\x16\xfd\x62\x94\xcc\xcc\x70\xcd\x1c\xf5\xb6\xa8\xe2\xaa\x07\x28\x9b\xd5\x22\xbf\x99\xdc\x96\xc3\x6b\xfe\xe8\x0e\x84\x6f\x5d\xd7\x46\xdd\x4c\x50\x03\xe4\xbf\x7d\x29\xef\xee\xa7\x50\x8a\x01\x61\x23\x68\x82\xc9\xa8\x2a\x56\xaa\x2c\x25\x74\x66\x96\x52\xc6\x30\x92\x3a\xb4\x70\xdd\xb9\x5d\x45\x6f\x7b\x8e\x8f\x07\x59\x9b\xa0\xd1\xd3\x8b\xc7\xf8\x17\x6e\x3f\xdf\x02\x09\xbd\x6f\x75\xd4\xcc\x11\x80\x3a\xfb\x18\x56\xcb\xc0\xe9\x1c\x73\x73\x0e\x4f\xb9\x8f\x3c\x94\x8a\x87\xd5\xa7\xed\xcc\x0a\x6a\x8a\xc8\x10\xea\x3e\xaa\x6e\x06\x3c\xec\x5f\x55\x66\xcd\x6d\xed\xc5\x37\xdb\x6d\x68\x6b\x80\x21\xf6\xea\x82\x5a\xd7\x47\x5e\xc7\xf1\xc5\xdb\xde\x45\xd3\xff\x4b\x5e\xe5\x1c\x0d\x04\xf1\xd7\x40\x18\xeb\x91\xe5\x04\x0d\x01\xc8\xb7\x1a\x4a\xab\xbd\xe6\x09\x4d\x4a\xfe\xcc\xb1\x8d\xfc\xde\xd7\x3e\xa7\x5e\x3b\x9f\x8c\xe1\x67\xdf\x62\x09\xae"}, +{{0xd5,0xca,0xc8,0x55,0x21,0xaf,0x78,0x1f,0x3d,0x5f,0x66,0x86,0x2a,0x04,0xb0,0x87,0xd0,0xcc,0xdc,0xac,0x92,0x6c,0xfe,0x9e,0x74,0x7b,0xe8,0xd5,0xc2,0x63,0x3f,0x78,},{0x10,0x0d,0xcc,0x53,0x03,0x9b,0xf0,0x5e,0xa0,0xa9,0xf5,0x88,0x82,0x12,0x69,0x3d,0x4f,0x9e,0x0e,0x75,0x25,0x95,0xbb,0xcd,0x02,0x06,0x10,0xe0,0xae,0x21,0x35,0x96,},{0x5d,0xc0,0x33,0x63,0x41,0x4e,0xea,0xc0,0x08,0x6f,0xb6,0xfe,0xba,0x44,0x21,0x7c,0xef,0x4c,0x52,0x0d,0xb6,0x19,0x26,0xdf,0x68,0x0c,0xa6,0x02,0xdc,0x11,0x00,0x3c,0xe6,0xaf,0xbf,0x3d,0x13,0xc8,0xc5,0xb0,0x52,0x73,0xd2,0x14,0x15,0xe6,0x7c,0x14,0xa2,0xee,0x5d,0x0b,0x1d,0x53,0x52,0x41,0x9a,0xb9,0xb3,0x9c,0x00,0x3a,0x51,0x0c,},"\xd5\xe7\xdd\x59\x49\x09\x37\x5a\x4b\xe0\x8e\x74\x82\x5d\x59\x8d\x53\x5b\xf4\x6e\xc0\x84\xde\x52\xb5\x73\x91\xc1\x27\xef\xf5\x22\x4a\xb2\xd1\x94\xdf\xb2\x66\x33\x47\x8d\x02\xfb\xda\x74\xd1\xdc\x58\x21\xf7\x91\xbf\x96\x2d\x8d\xad\x9e\x4e\xf2\x42\x24\x89\x19\x07\xb0\x18\x9c\xcc\xc8\xb1\x33\xd3\xaa\x20\x78\x92\x6d\xae\xf2\x89\x8c\x19\xc2\xe0\xbf\xe0\x20\x41\xa9\x04\xb9\xf0\x4b\xe7\xcb\x50\xae\xd0\xd9\x62\xd1\xad\xd2\x0b\x40\xa8\x8a\xb7\xab\xad\x62\x6c\xf4\xda\x0a\x78\xf9\xf5\x36\x85\x50\x1f\xdf\xa5\x85\x43\xdd\xf2\xea\x0e\xea\x69\xe7\xba\x16\x0f\x8a\x17\x7a\x25\xfc\x21\xe8\xa2\x9c\x66\x16\x33\xe3\x0e\x52\x3b\x0e\xc0\x1b\x2a\xee\xe2\xd4\x26\xe4\xae\xad\x45\x74\x88\x10\x8f\xe5\xf5\x69\xcf\x6e\x2f\xdb\x68\xc2\x8f\x2b\x30\x52\x82\x35\x77\xcd\x93\x4e\x7b\x06\x2c\x8a\x34\x24\xcd\x43\x67\xfb\x31\x5b\x74\x4c\xa3\x52\x55\xd7\xf1\xaf\x4e\xdc\x9b\xc9\xd8\x83\x71\x23\xd9\x79\x03\xb4\x3d\xf3\x67\xc7\xd4\x18\xc7\x93\x47\xff\xaf\xe7\xc7\xb1\x72\x4b\xba\x34\xed\xe8\xd3\x56\x8d\xb5\x05\x98\x3e\xad\x47\xf6\x2b\x56\xe3\x61\x8c\x11\xdb\x8f\xf0\xbf\x49\x2a\xc6\x75\x97\xd2\xf9\x6a\x6f\x42\x0f\xf9\x85\x34\x1b\x78\x6a\xd6\xce\xae\xdd\x10\x5d\x0d\x15\x63\xb2\xd5\x35\x43\xd7\x8e\x72\x56\x72\x5d\x20\x4e\x82\xed\x3a\x2e\x6a\x6e\x83\xdf\x61\xfc\x28\x2a\x62\xca\x06\xe6\x21\x74\xb5\x5b\xef\x40\xa0\xbd\xf8\xd2\x3d\x1c\x33\x0c\x71\x44\x14\x85\xee\x85\xe7\x0c\xed\x12\x1e\xac\x60\x7f\x58\x06\x78\x16\x3e\x4b\xd7\x5c\x67\x09\xff\x3b\x41\xde\x80\x59\x4b\x9e\x2f\x2a\xa2\x78\xfe\xfc\x21\xd7\x3e\xe3\xf7\x28\x54\xb9\x58\xd9\xa8\xf6\x3e\x3d\x70\xf7\xfe\xad\x8c\x3d\xca\x8e\x71\xbf\x4b\x9c\x2a\x36\xf2\x12\xb3\x2e\xb3\x29\x2e\x63\x55\x80\x38\x65\x59\xee\x1a\x11\xdf\x15\x29\x3a\x0c\x21\xcd\x73\x60\x86\x98\x46\xba\x5b\x7b\xa8\x5c\x99\x4f\x5b\x2f\x9c\xc5\x0e\x5e\xea\x8e\x4b\x36\x91\xd8\x86\x06\x2a\x18\xcf\xb1\x82\xf1\xe8\xb6\x11\xfe\x1b\xc2\x63\x15\x9c\xb8\xa0\x86\x78\x7c\x81\x1b\xea\x48\x12\x53\x00\x08\xc7\x0c\xa0\xc4\x7e\x64\xeb\x2f\xba\xd5\xb0\x27\x27\xa6\x6f\x2c\xdd\x6d\xde\x86\xf5\xd2\xa9\x64\x5a\x1e\x9a\xa6\x6e\xe0\xe1\x5b\x97\xf5\xfd\x22\x95\x96\xee\x02\xe6\x61\xca\xb9\xa5\x4e\xee\x1b\x81\xf9\x8f\xe2\x56\xed\x6c\x54\xfe\xaa\xa0\xba\x04\x7e\xea\x35\x33\x44\xf6\xe5\xc6\x2b\xe1\xe9\xd5\xc0\x9a\x2a\x69\x94\x11\x11\x0c\x56\xd1\x94\x9e\x90\xc0\x7b\x19\x38\xba\x95\x55\xac\x1b\xe8\x51\x1b\x51\x02\x18\xd7\xcd\xe7\xe1\xd7\x4a\x68\xaf\xb6\x42\xf8\x17\x15\xfe\x9e\x6c\x96\xc5\x03\x81\xae\x5a\x9d\xf3\x06\x51\x87\x85\xdc\x4d\xbc\x3a\x64\xf6\x0f\x24\x5c\x56\x4b\x80\x29\x51\x2f\x38\x1b\x56\xee\x78\x77\x03\x42\x68\x03\xc8\x0a\xb1\xc3\x11\xf4\x77\xb8\x91\x70\x8b\x59\xfa\x74\x8f\x32\xde\xbf\x54\xd2\x41\x37\x71\x97\x8c\x26\x5c\x9b\x87\x11\x4a\xdf\x25\xb8\x33\x7a\xa9\x3b\x0e\x63\x2a\x5b\x6e\xda\x47\x4b\xec\x16\x32\x81\x59\xfb\xed\x06\x7b\x00\xb8\x7a\xdd\x61\x96\x54\x92\xec\xcc\x6f\xd3\x46\x1c\x10\x00\xe4\x03\x7a\xb1\xe8\xac\x89\xa8\x52\x4f\x78\xae\x09\xd3\x08\xea\x6c\x94\xff\x88\x37\x32\xb7\x12\xee\xc0\xef\x07\x71\x8d\x33\xc0\x11\xb9\x39\x8f\x8c\xfe\xa7\x33\x07\x5a\xf3\x31\xfb\x3f\x97\xcd\xc1\xe8\xc9\x9f\x6a\x10\x72\x5a\x68\xc5\xc5\x8f\xdd\x8b\x0b\xaa\x50\x22\x7f\x34\xd7\x3d\x23\x90\x52\x03\x69\x8e\xaf\xf6\x26\x65\x4c\xe8\x3d\x86\x51\x08\x49\x9b\xe6\x86\x1f\x61\x41\xbf\xa6\x21\x9d\x7a\xb8\xb5\x84\x51\x91\x99\xf8\x80\xcf\xa1\xb2\x6d\x91\x94\xd3\x01\x71\x1c\x30\xfb\x44\x6d\x6e\xa7\x64\xa4\x31\x0f\x70\xe4\xb8\x59\xcf\x95\xfd\x44\xaa\xf8\xc1\xe2\x40\xe8\x0a\x71\x61\x1d\xbc\xf5\x2d\xa5\x8e\xdc\x32\x03\x11\xde\x38\x8d\x5d\x9d\x76\x9e\xb5\x9b\xe0\x93"}, +{{0x15,0x9a,0x9e,0xdd,0xea,0x5d,0xe6,0x34,0x03,0x98,0x7b,0x56,0x70,0xdb,0x6f,0xac,0x98,0xff,0xe5,0xec,0x3a,0x6c,0xf0,0x15,0x16,0xee,0x2c,0x70,0xce,0x3b,0x3b,0xe0,},{0xf6,0x1f,0x4a,0x04,0xa5,0xa1,0x2c,0xca,0xec,0xfa,0xf4,0x4c,0x1c,0x9c,0x18,0x88,0x47,0x5a,0x2c,0x89,0xfb,0x02,0xf2,0x6b,0xb8,0x1a,0xb5,0xf7,0x8f,0x4c,0xe3,0xa8,},{0x05,0x43,0x71,0x2c,0xef,0xa2,0x9a,0x22,0x0d,0x90,0xf8,0x1b,0xaa,0x4e,0x4c,0xf7,0x7a,0xc6,0x52,0x08,0xb2,0xd5,0xce,0x9f,0xd1,0x7c,0xe2,0x14,0xad,0x4a,0x93,0x7b,0x7f,0xc5,0xc7,0x86,0x41,0x3b,0x58,0x05,0x1c,0xca,0x3b,0xb8,0xb2,0xeb,0x55,0x65,0x7d,0x89,0x57,0x2b,0xc5,0x0e,0xa2,0xe5,0xec,0xdc,0x55,0x50,0x88,0x49,0x16,0x03,},"\xd1\x95\xe5\x90\x0d\xd3\x93\x14\x81\xbc\x01\x2e\x77\xbf\x06\x0a\xaf\x31\xcc\xcb\x0f\xe1\xa6\xc4\x0e\xaf\x28\x6a\x61\x66\xa1\x66\xb1\xea\x37\x05\x34\x26\x28\x4b\x92\x0c\x67\xfe\xe1\xd4\xb9\xd8\x6f\xb8\x61\xcc\x6e\xdd\x34\xe1\x0c\x52\x23\x37\x34\xd9\xcd\x92\xf5\xdb\xf4\x33\x51\x2e\xd2\x55\xac\x6b\x26\xe5\x6f\x5c\x66\x4b\xcc\xb2\x60\x69\x2c\xf4\x9d\x08\x36\x3e\xe9\x4e\x33\x6a\xcc\x48\x96\x00\xa6\xaa\x51\x2a\x04\x0f\x10\xeb\xf1\x8f\x7d\x2c\xbe\xe9\xca\xd1\x4c\x4f\xf8\x73\x77\xa3\x26\x34\x19\xd8\x29\x75\x29\x40\x1f\x15\x33\x7a\x4c\x4d\x23\x25\xed\x7d\xef\x76\x3a\x0d\x47\x9c\xaa\x40\x82\x66\x83\x4d\xa2\x42\xf3\xa1\x6b\x79\xa4\x58\x66\xb9\xd9\xd7\x1a\x48\x29\x31\x76\x74\xcf\xf7\xae\x6c\x8c\x58\x7b\xa4\xd4\x98\x0e\x81\x86\x13\xd3\xad\x82\x50\x7a\x7a\xb0\x32\xbb\xf9\x9c\x5e\x9b\x64\x03\x71\xbb\x41\xb9\x1e\x96\x5d\xc3\x1e\x8c\x7d\x4b\x3b\xaf\xd4\x95\x70\x52\x7f\xaa\xa8\x7a\xbb\xf6\x41\x6c\x47\xb1\xb1\xb0\x9d\x34\x01\x25\x31\x26\xcb\x24\x6a\xe4\x5a\xcf\x5f\x10\x0b\xb1\xf9\x2f\x11\xa5\xc6\xc9\x37\xe0\x58\x8d\x8b\x14\x6b\x3e\x4d\x3c\x7e\x5b\xf5\x74\x84\xe9\x84\xfe\x3a\xfc\x47\x72\xf2\x4e\xbf\x89\x4c\xdb\x39\x83\x7f\xbd\x46\x9a\x92\x1a\x96\xac\x5a\xf5\xe0\x70\xf6\xc9\x62\x4c\x58\x8e\x9d\x4f\xe6\xdd\xfe\xed\x1f\x8f\xe2\x0e\xb9\xc4\x60\xce\x6e\xe3\x8b\xf4\x71\xdd\x56\xdc\xf2\xe3\xee\x99\x8b\x8e\x7f\xdc\xf6\x12\xe7\x8a\x2e\x7c\x71\x73\xc0\x16\x09\x82\xbe\xde\xcc\x2c\x62\x1e\x5f\x66\x11\xb4\xef\x21\x02\xe3\x2e\x7c\x29\x80\x3a\x7e\x25\xfe\xe1\x51\x24\x31\x58\xa7\x6e\xe5\xd8\xc1\xbb\x2e\x7d\x8c\x88\x87\x1b\xa4\x33\xc5\xe5\x41\xc2\x60\x26\x93\xd9\x01\x10\xbe\x79\x5b\x52\x3a\x8f\xad\xb6\x05\xd8\xe3\xd7\xe4\x93\xfe\x24\x5d\x9c\xc5\x32\x0d\x32\xb8\x5d\x61\x35\xa4\x4b\x11\x68\x72\x94\x14\xc2\xca\x21\x56\x0f\xb4\xfe\xec\xde\xef\x0c\xf7\xd8\xe0\x71\x27\x4e\x88\x56\xc0\x04\x03\x3e\x80\x01\x3c\x73\xaf\x71\x77\xc3\x19\x78\x16\xa5\x03\x2d\x90\x59\xb1\xb6\xe4\x15\x2c\x38\x61\x92\xdd\x54\xb9\x0f\x9d\x30\x8b\xe9\x8e\xd7\xd0\xca\x9d\x12\xe8\xaa\xf6\xf9\xd8\x69\x38\x6a\xa9\xdb\xb0\x15\x93\xd3\x7e\x72\xf0\x90\x12\x4d\x34\x55\x29\x8e\x9b\x4c\x9e\xc3\xca\xe7\x3b\xb8\xee\x41\xeb\x63\xe3\x8c\x56\x13\x3e\xfd\xba\xf4\x49\xb8\x4e\x1e\x49\x1e\x49\x6f\x1c\x70\xa4\x4d\x06\x99\x86\xba\x88\x18\x42\x20\x69\x06\x1b\xb6\xeb\xcb\x7b\x20\x54\xe6\x3d\xf3\x81\xba\x03\xc6\xa7\x67\x4a\xbd\x61\x05\x0d\x69\x3d\x41\xbf\xe3\xca\x50\x46\xc6\x5f\xfb\x06\xa0\x74\x98\x09\xe5\x8d\x4c\x93\xa9\xff\x69\xed\x30\x95\x0b\xde\x1f\x99\x21\x6f\xff\x29\x9f\x22\xf1\x6b\x07\xc2\x54\xc2\x65\xae\x0b\x12\xe3\x13\x16\x3c\xcd\xf5\x03\x6d\x49\x05\x5f\x9a\x96\x67\xb0\xb7\x12\x92\xbc\x3b\x62\x60\xcb\x87\x56\x8f\xd2\x67\x17\x0b\xc9\x40\xc3\x33\x29\xd7\x29\xc9\xe3\x2d\x0f\x91\x80\xb1\x34\xbf\xf8\xae\x93\xb1\xbf\xeb\xfa\x38\x42\xfe\xf2\x0b\xc0\x4a\x29\x7b\x00\xa8\x4a\x0f\x42\x8d\x5f\x42\xfa\xb8\x61\x42\x99\x6d\x4a\xd9\xef\xab\xc4\x98\x52\xf8\x81\x2f\x3b\xfb\x5e\x57\x53\x9e\x21\x86\xeb\x8a\xe2\x29\x58\x0b\xc6\x04\x48\xac\xde\xf5\x72\x3c\x88\x15\x88\xb5\x37\x89\xf0\x5b\x91\xe0\x22\x89\x22\x32\x52\xd7\x53\xf7\x98\x13\x77\x9a\xce\x70\x5e\x04\xae\xd1\x52\x65\xd3\xbd\xf2\xa2\xe4\xb1\x56\x54\x77\x0a\x27\x58\x54\xe6\x4c\xf4\x43\x90\x60\x7a\x45\xd7\xbb\xa9\xaf\x3e\x1a\x2e\x28\x30\x67\xfc\xd6\xe6\x33\xaa\x2d\x24\x03\xbd\x81\xf7\xc7\x92\x76\x55\x10\xb5\x98\x41\x2f\x6b\xda\x07\xb2\xa9\x45\xb9\xf6\xd4\x6a\xb2\xf7\xc3\x20\x07\x5b\xc6\xb6\x0a\x80\xda\xa4\x4a\xf3\x91\xf4\xcd\x56\x21\x31\xbb\xdd\x40\x7d\x66\xf8\xdb\x12\x59\xbd\x76\xfa\x7e\x4d\x52\x64\xe1\x45\x54\x6c\x94\x2d\xfe\x90\x07"}, +{{0xed,0xa0,0xfe,0xac,0x0f,0x2a,0xfe,0x01,0x74,0x49,0x15,0x52,0x48,0x7f,0x39,0x62,0x17,0x13,0x32,0xb8,0x22,0xdc,0x3d,0xa4,0x26,0xf9,0xa5,0xf6,0x2b,0xef,0x7b,0x8d,},{0xef,0xf2,0x7c,0xb5,0x1f,0x4d,0x39,0xc2,0x42,0xf3,0x23,0x01,0x9a,0x12,0x34,0x81,0x8e,0xf2,0xe4,0xcd,0x1b,0xda,0xbc,0x0f,0x2d,0x8d,0x21,0x34,0x58,0xdc,0x47,0x1a,},{0x6c,0xbc,0x7e,0x6f,0x5e,0x12,0x14,0x5b,0x01,0x68,0x7a,0xd9,0xca,0x6b,0xf6,0xe4,0x7f,0x94,0x17,0xc2,0xce,0xfa,0xd3,0xfb,0xd6,0x8f,0xd6,0x5d,0xd7,0x4f,0xaa,0x97,0x50,0xcb,0xa9,0x92,0xde,0x4c,0xeb,0xcf,0xcd,0x35,0x80,0x8c,0xbb,0x3f,0xf1,0x2c,0x8d,0x93,0x07,0x99,0xaf,0x36,0xef,0xe7,0x97,0x6b,0xf2,0xfe,0xa7,0x9e,0x3e,0x0e,},"\x90\x11\x19\xda\x4e\xd1\x81\xaa\x9e\x11\x17\x0b\x20\x62\x6e\x00\xab\xf0\xb5\x48\x24\x5e\x3d\xeb\xf9\x4b\xf5\xed\x50\xae\xef\xe9\x42\xb4\x02\xcc\x99\x48\x94\x78\x52\xde\xdf\x2b\x53\x04\x01\x76\x65\x74\x9c\xd4\x7c\x21\xfc\x65\x2e\xe9\x95\x67\x9f\xf9\x31\xe3\x0e\x94\xaf\x98\xb4\xa9\x8f\xd4\x4e\x84\x9e\x98\x47\x0f\xe0\xa7\x6c\xe8\x0c\x61\xf8\x3f\xb4\xe8\x5b\xa5\x23\xee\x3f\xd2\x5d\xb0\x00\x05\x3b\x49\xd0\x93\x0e\x3b\x07\x9e\x86\x6e\x15\x3f\x7d\x86\x36\x7f\x23\xa4\xc4\xab\xc6\x3b\x30\x75\x46\x1e\x90\xe4\xfd\x89\x6d\xa0\x49\x2e\x27\xd7\x14\x94\x1e\x96\x7f\x52\xc9\x3f\xfa\xec\x44\x80\x3f\x57\x87\x7d\x86\x6e\xb5\xf8\xc5\x28\x17\x85\xaa\x48\x26\x79\x2e\x39\x64\xc6\x65\x90\x82\x1e\xea\x66\x75\x20\x74\x26\x40\x18\xa5\x71\xf5\xb0\x13\xb3\x8e\x15\x2c\x95\xc0\x24\x8a\xe6\x03\x68\x22\xa6\x7a\xfc\x9e\x02\x69\x45\x73\x15\x2b\x86\x4c\x56\xc2\xf7\x30\xa0\x82\x10\xf8\x5e\xc4\x6f\x98\x4a\x64\x3d\x51\x6a\x15\xfc\xfa\xa8\x48\x40\xf5\x12\x04\x7d\x11\x0e\x07\x18\xd2\x93\x95\x5f\x01\x58\x25\x7f\xba\x0d\x78\xeb\x7d\xf2\xf0\xb7\x7e\x6e\xeb\x76\xdb\x5e\x71\x70\x73\x10\xe8\x27\x36\x1c\xd4\xe1\x19\x74\x0e\x63\x92\x2d\xb4\x2c\x2c\xeb\x5e\xe1\x75\xd5\x0d\xec\xc7\xb7\x49\xfd\x23\x25\xbc\xe1\xe6\xa8\xf7\x10\xff\xcc\x1e\x1c\x9b\x33\xc3\x80\xe5\x2a\x64\xda\xa9\x58\x5f\xab\xe4\x06\xd9\xcf\x24\x48\x8f\xe2\x6f\x3a\x49\x5f\xb0\xab\x50\xe1\xe2\xba\xd8\x23\x81\xaa\x22\x43\x10\x99\xcc\x8a\x56\x98\x13\xd7\x9c\x9d\x78\x56\x9c\x0d\x95\xda\x9a\xad\x2b\xfb\x57\x75\x8d\x52\xa3\x75\x27\x52\xe0\x23\xd6\x51\xc9\xcb\x66\xa4\x12\xa5\xc8\x0f\x6b\xa5\x47\x93\xf7\xec\x87\xb4\xc5\x98\xfe\xd2\xce\x24\xab\xd7\x60\x87\x08\x89\x5c\x46\x72\x73\x59\xff\xec\xa6\xd6\xc6\x2e\x10\xa6\x78\xca\xa7\x18\xb4\xcd\x26\x32\x92\xcf\xef\x53\x5b\x9f\xbe\x27\x56\xb7\x39\x6d\x69\x7b\x31\x46\xc5\x51\xe6\xaa\xc1\xf5\xf1\xc2\x4b\xe9\xb6\x7a\x1e\x2a\x2a\xff\x74\x53\x01\xba\x6a\x21\x22\x17\xc5\x3d\x68\x16\x81\xbb\xb4\x01\xbf\x4a\x43\x65\x6f\x5d\x15\xcd\xe9\x69\xc1\x78\x00\x99\xa3\x32\x37\xeb\x19\xa3\xb8\x58\x5d\x6b\x5d\xea\x2f\xb5\x77\x84\x5f\x25\xee\x2a\x82\xcc\xf4\xb2\x85\x02\xf9\x0f\xe8\x0b\x8c\xdc\xdf\x2c\xcf\x93\xc4\x34\xc0\xe6\xaa\x5d\x87\x52\xa4\x43\x43\xc2\xb1\x8d\x20\xfe\x40\x04\xc4\x70\x38\x65\x93\x56\xf8\x7a\xbe\xd5\x44\x50\x34\xd8\xe2\xd3\xd1\x47\x68\xf5\xef\x31\x2c\xf1\x02\xa9\x88\x46\x83\xbc\xc0\xcd\x8a\x71\xe3\xec\x36\xfb\xb6\x33\x4a\x1b\xba\xed\x5d\x2b\xf1\x04\x16\xd8\x2b\xd6\x53\x04\x75\x38\x0a\xb6\xe2\x57\x7b\xbc\x69\xce\xbd\xa7\x5f\xaf\x02\xad\x82\x7b\x54\x51\x82\x13\x20\x6f\xd4\xcd\x66\xf2\x52\xb2\x34\xac\xa9\xee\xde\x7e\x3e\xeb\x81\x5d\xdc\xd8\xd5\x19\xc5\xd7\xf5\xd9\xd1\xfb\x9c\xa0\xfa\x44\x67\x99\x00\x95\xfa\x46\x22\x0c\x20\xa2\x07\x1d\xfc\xaa\xd5\xf0\x24\xda\xe3\x41\x6f\x7c\x49\x2d\x75\x74\x88\xc4\x9a\x2e\x4d\xf4\x83\xbc\x9b\x80\x09\x8e\x0d\x5d\x68\x3f\xac\xb8\xc9\x60\x82\x9d\xff\x09\xb3\x03\x36\x9d\x46\xcb\x57\x33\x1f\xf2\x17\x91\xee\x25\xd6\xbe\x7d\xec\x7e\xba\xf1\xb3\x24\x79\xa7\xf5\x14\xdc\x64\x71\x05\xc9\x44\xc3\x6f\x7d\xbf\x0a\x5b\x58\x91\x28\xdb\xaa\xa4\x21\x71\xd6\x42\xf2\x5a\x98\x1c\xe1\xf8\x37\x9f\x91\x69\x0b\x36\xaf\x77\x46\x48\xd5\x62\x4c\x08\xdb\xd0\xa9\x0f\x70\x87\x16\xdf\xab\x20\x24\xda\xe8\x65\xb9\xc4\x9a\xb2\x74\x73\x82\x6c\xd4\xa0\x10\xbf\xdb\x52\x01\x1d\x8c\x7c\xb3\xf4\x21\xca\x8c\xa3\xcd\x04\x86\x88\x91\x88\xe6\x7d\xf0\x0f\xb8\xc2\xa6\x43\xe7\xad\xb2\xf8\x27\x9f\x76\x3e\x5b\x9a\x81\xb6\xdf\xc3\xf7\x21\xfc\x5f\x68\x49\xf6\x67\x36\x78\x8c\xc5\x57\xc4\xeb\xc6\xfc\x68\xd6\xf6\xac\x77\xbe\xdd\xa8\xac\xb3\x62\x24\x3b\xda\x74\xe7\xb2"}, +{{0xec,0x05,0x9f,0xc6,0xbe,0x98,0x3c,0x27,0xec,0xa9,0x3d,0xdc,0xdc,0xb5,0x3a,0xf7,0x28,0x62,0x55,0xda,0x91,0xe2,0xa5,0x6a,0x68,0x4f,0x64,0x1e,0xc2,0xd0,0x9d,0x6e,},{0xff,0xc6,0xcb,0x75,0x1c,0x70,0x07,0x1b,0x65,0xec,0x2a,0xc6,0xb4,0x5f,0xd1,0xd5,0x5f,0xe8,0x36,0x96,0x5f,0x80,0xb3,0xe7,0xc7,0x84,0xfc,0x70,0x4a,0xcb,0xdf,0x69,},{0xa7,0xb8,0x8e,0x5a,0xbf,0x13,0x28,0x24,0xbd,0xde,0x77,0xc5,0xf8,0xdf,0x94,0xab,0x26,0x48,0x1f,0x6b,0xee,0x66,0x0e,0xa1,0x62,0x24,0x70,0x82,0xa2,0x50,0xd3,0x90,0xc7,0x1d,0x32,0x0a,0xd0,0x60,0xd8,0xef,0x34,0x1f,0xb6,0x9a,0x48,0x32,0x94,0xf0,0xd6,0xde,0x72,0x6f,0x0c,0x86,0x2f,0xa3,0x7e,0xa4,0xbc,0x6d,0xab,0x52,0x15,0x09,},"\xd1\xac\x63\x25\xa4\xe6\x90\xfa\x79\x53\x68\x83\xd5\xc2\x0e\xac\xb7\xd9\x64\xc0\x17\x8f\x74\x2c\x2b\x23\x72\x7d\xeb\x62\x64\x5a\xf7\xc8\x19\x22\xa0\xe7\x2e\x5e\x30\xb5\x83\x9a\x2e\xd5\xe5\x67\xec\x31\xce\x22\x41\x15\xb8\x2d\x2b\xf2\x51\xb7\x39\x3f\x01\xb0\xd0\x3a\x60\x2b\xc1\x20\xae\x62\xaf\x7f\xbc\x37\x9d\xfc\xf9\x5b\xbb\xba\x98\x4a\xab\xa3\x4f\xe2\x12\xac\x99\x00\x33\x28\xb8\x32\xc3\x53\x2d\x42\xee\xe1\xe1\x87\x4d\xc2\x2a\xd6\x7d\xb6\xc9\x1d\xbb\xfb\x2b\x45\x78\x5d\xbc\xd3\x99\x17\xd3\x6f\xb4\x8c\x1b\x5d\x6f\x38\xbd\xda\x5d\x28\xfb\xba\x64\x17\x55\x75\xaf\xea\x46\xc8\xed\x67\x57\xff\x30\x16\x4e\x0d\xf2\xe7\x21\x76\xe8\xb6\xc9\xdb\x5b\x5e\xf3\x90\xb7\x2f\x2d\x4d\x94\xe3\xb6\x6f\x0d\x44\xa7\xe0\xf0\x6e\x89\xde\xbc\xdf\x13\x63\xc0\xe7\x5d\x50\xdb\x5b\xb7\x01\x90\xd1\x9f\x66\xa3\x9c\x6f\x7d\xba\x70\xdf\xcd\x4a\x9f\xed\x02\xc2\xf1\xd0\x67\xe7\xc7\x88\xc5\x8f\xdb\x3e\x17\xa2\x37\x7c\xe4\x86\xec\x65\x82\xf3\xba\x99\x7b\xb5\xf7\x0c\xd6\x21\x00\x29\x56\xf5\x13\x1a\xa3\xa1\x61\x7c\x0c\xeb\xcc\xd9\x39\x1d\xe1\x30\x7c\x85\x97\x0a\x8b\xc1\x55\xf5\x19\x87\x26\x68\x45\x0c\x91\x48\x86\x89\xf5\x3c\x2c\x1a\x7e\xd5\x3f\x38\x8c\xb1\x3a\x2c\x38\x96\xfe\x5b\x7d\x3a\x0d\xc1\x68\x3f\x27\x66\x4c\x8b\xea\xea\x68\x0c\x8c\xc5\x4a\x90\xe4\xc6\xf9\x9f\xbf\x05\xf2\xc2\x2d\xf6\x0d\xe9\xae\xc8\x0c\x79\xb7\xd6\x62\x07\x05\x06\x67\xb4\x52\xd7\x85\x7f\x9a\x8c\xa7\x23\x28\x0d\xac\x79\x92\xe2\x07\x92\x67\xec\x3a\xd9\x11\x40\x46\x42\xc4\xe3\x26\xbf\xb9\x6b\x43\xc8\x94\x34\xba\x4b\xc7\x8c\x25\x2f\x4d\x4c\xa8\xd1\x3a\x88\x74\xc6\xfc\x82\x52\xea\x0b\x56\xc6\xbc\x78\x68\x47\xd4\x31\x83\x06\xe1\xc6\x52\xc4\x52\x58\x5e\xef\xd0\xbd\x9d\xd3\xc1\x48\xa7\x3b\xa8\x6e\xed\xea\x94\x5f\x01\x67\x13\xed\x7d\xf0\x85\xd0\x06\x66\x89\xe7\x92\xda\xcb\x2b\xfc\x1e\xb5\xc8\x24\x37\x2a\x26\xc5\xe9\x44\xaa\x74\x44\xac\x97\x73\xd4\xa1\x92\x1e\x49\xbd\xd4\xf8\xf6\xd7\x88\xc2\x63\xfe\xe0\x4c\x7b\x44\x4c\x53\x05\xed\xb6\x33\xe1\xff\xe0\xba\x4e\xa8\xda\x01\x1a\x62\xf2\xbb\xfe\xf4\xb8\x95\xad\x3f\x22\x4c\x3b\xa3\xbf\xf0\xc9\x5d\x75\x75\x0c\x9b\xcc\x66\xff\x8a\x20\xb6\xc2\x4b\xde\x75\x81\xa7\xec\x38\x66\xf8\x71\x6f\x78\x1f\x46\xdc\xad\x45\xa9\xeb\xcb\x6e\xd4\x69\x53\x36\x83\x97\x01\x17\x35\xd4\xb5\x2d\x00\xe8\xdb\x39\x79\x95\xdb\xdb\x3d\x4f\x42\x54\x68\x7f\x04\x68\x8a\x26\x8c\x30\x5b\x2b\x1f\x62\x2c\xf5\x1b\x17\x47\x75\xba\xd7\xf6\x67\x4a\xdc\x2e\x58\xe0\x5c\xce\x86\x5f\x12\xd7\x56\x9c\x8e\x9b\x35\xbc\xdf\x3c\xcc\xe6\x33\x0d\x08\xce\x53\x40\xa7\xc6\x30\xf2\x7a\x6c\x80\x86\xb5\x14\x6b\x29\x2f\xcb\xf5\x0f\xf6\xaa\xae\xf8\x84\x8a\x70\x7b\x25\x43\xc6\x18\xd1\x7b\xd9\x76\xc2\x40\xbc\x79\xd3\x3e\x00\x4e\x49\x53\x48\x29\x15\xe7\xe6\xef\x94\x96\x4b\xde\xa4\xe0\x2d\xd7\xc2\xf4\x75\x23\x5f\x2b\x99\xe4\x32\x29\xc9\xac\x3a\xba\x0d\xb5\x9a\xc2\xda\x03\xa9\xee\x4f\x37\xdb\xf2\x47\xa3\x3e\x6d\xfe\x5b\xe7\xc7\xf8\x25\x84\xf0\x4a\x46\xd4\x9f\x66\x21\xda\x31\xb9\x1a\xc3\xda\xa4\xd6\x8d\x48\xa5\x66\x59\xb4\x48\xc0\xed\x36\x5c\xb4\xaa\x0c\xfd\x90\x88\x53\xdf\x5b\xbf\xa8\x8e\x60\xe1\x0a\x5a\x00\x2c\x32\xab\x33\x33\xf2\xc3\x9b\xbf\x3e\xe0\x1a\x4a\xa6\x0d\x2d\x01\x42\x3e\x60\x97\xdc\x54\x30\x5f\x81\xa2\xd9\x3e\x2f\x6b\x4e\x8b\x35\x19\x71\xcb\xf2\x45\x7d\xc7\x6e\x1f\xb8\x92\x93\x38\x47\x98\xef\x28\x23\x4e\x9b\x1a\x47\xde\xdc\x23\x36\xf8\x6b\x8e\x13\xc4\xae\xf7\x90\xf5\xa1\x12\x39\xc7\x47\xd9\xd8\x65\xc9\xa1\x5a\xde\xb0\x71\x07\x02\x67\xe5\x34\x62\x56\x64\x8a\xdc\x0f\xa4\xdb\xdf\xd7\x87\xca\x14\x65\xfc\x24\x0a\x32\x4c\x3c\xaf\x29\x31\xda\x41\x49\x9e\x27\x5f\xd4\xb3\x5f\x6d\x08\xdb"}, +{{0xf1,0x6a,0xbd,0xbc,0xc0,0xbc,0xc6,0x1a,0x1a,0xee,0x3a,0xbd,0x87,0x67,0xab,0x52,0xe5,0xf7,0x99,0x99,0xbb,0x77,0xa3,0x97,0x6c,0xbc,0x82,0x67,0x0d,0xfd,0x2f,0x73,},{0x10,0xf4,0x51,0x71,0x9d,0xb0,0xfd,0x21,0x37,0x6e,0x22,0x8a,0x41,0xc3,0x03,0x5c,0x8c,0x2b,0xc4,0x2e,0x5a,0xaa,0x92,0x6f,0xe6,0x08,0x87,0x8d,0xbb,0x0d,0xc7,0xab,},{0x33,0xd8,0x05,0x29,0x08,0x69,0xb8,0xe0,0x4f,0xf0,0x89,0xfa,0xa2,0xd1,0xfa,0xb8,0x37,0x43,0xba,0xda,0x68,0xad,0xe5,0xb3,0x8a,0xe5,0xf0,0xcc,0x58,0xc3,0x37,0x4e,0xba,0x43,0x94,0x3c,0x1f,0x51,0x10,0x67,0x8e,0xb3,0x9b,0x46,0x58,0x61,0x18,0x22,0xa2,0x6d,0x35,0xff,0xe1,0x9e,0x9c,0xfc,0xb9,0xba,0x95,0x89,0xe4,0xec,0x31,0x05,},"\xbf\xac\xd7\xdd\x4e\xea\x46\x7d\xcc\xe4\x04\xf4\xa3\x52\x0a\x45\xb9\x4e\xba\xa6\x22\x19\x7d\x02\xd6\x15\x29\xd2\xb3\xbf\x27\x3c\x4e\xe1\xfb\x95\xa1\x80\xc8\xf8\x7d\xe1\x90\xa2\xe5\xea\x70\xb8\x4a\xe1\xeb\x6f\xd4\x44\x7d\x8a\x3a\x8d\xed\x10\xf6\xed\xe2\x4f\x0e\xb9\x2b\xd3\x0b\xc6\x5d\x48\x71\xe8\xf5\xda\x08\xcb\xe8\xcd\x3c\x0a\xc6\x4f\xd5\xa5\x7a\x6b\x06\x4a\x89\xd5\x15\x9b\x42\xf8\xb3\xe5\xa1\x83\x8c\x9c\xb1\x9d\x88\x10\x6c\x07\x73\xa2\x75\xcd\x2a\x1d\x60\x99\x30\xbf\x6b\x30\xae\xca\x62\xb9\x7e\x31\x9b\xbf\xa9\x34\xf4\xd0\xa1\xe6\xac\x80\xba\xeb\xcb\xa2\xd8\xea\x4b\xed\x9c\xa8\x56\x2b\x4a\xcb\x56\x97\x9b\xf8\x85\x32\x4a\xc4\x0a\xb4\xa5\x0b\xfb\x9f\x34\x90\x49\xfc\x75\xa0\xe0\x3d\xe4\xcc\x43\xea\xe3\xc6\xa6\xcf\xfb\x5f\x6a\xe6\xc9\x45\x04\x41\x5e\x6c\x7e\xd3\x04\x5a\x93\x2f\x47\xfd\x20\xb9\xf3\x48\x3a\x77\xb6\xd4\x49\xd8\xdf\xd4\xa6\x38\xdb\xf5\x6f\x03\xf0\xf0\x31\x87\x90\x59\xb2\xfb\x49\x76\x79\x43\xf4\x6b\x38\x72\xe2\xde\x56\x7d\x5f\xef\x80\xb0\x29\x25\xe9\x86\x3e\x0f\x1d\x31\xa8\x0f\x4e\x64\x51\xc3\x25\x69\x4b\x80\xcf\x1f\x19\x18\xc6\xe4\x98\x87\x8e\xdc\x47\xc4\x53\x0c\xac\x46\x6f\x1a\x29\x4d\x55\xdf\x09\xaf\x4f\xdc\x80\x72\xad\xb1\xbf\x26\xca\x8c\x92\xf9\x12\xa2\xb9\xfe\xbc\x8b\x97\xb5\x8c\x1e\x9d\x32\xc7\x80\x32\x30\x52\x97\x2b\x6f\xbd\x53\x30\x4c\x05\x19\x3c\xae\xb6\x7c\x5b\xd3\xe6\x74\x79\x72\x5d\x29\x7d\xff\xb0\x68\x90\xab\xf8\xcd\x9e\x42\x45\x8e\x16\x8a\x61\x18\xf9\x05\xb1\xd5\x34\x86\x01\x6f\x85\xdc\xd9\x8d\xd3\x39\xe3\x46\x05\x33\xd0\xb8\xa4\x9f\xae\x6d\xc1\xa0\x71\x72\x5e\x6a\xe5\xf2\x94\x47\x9e\xe3\xbd\xca\xeb\x74\x06\x18\x41\xfb\x26\x08\xe8\x8a\x49\xfd\x0f\x38\x95\xb1\x8f\x85\xb9\x0f\x72\x41\xdd\x13\x87\x71\x00\x53\xfa\xa6\x2b\xae\x75\xe9\xae\x39\x36\x9c\x1c\x02\xde\x5d\x19\x24\x2e\xfa\x16\xe1\x1d\x44\xa4\xba\x57\x78\xce\x77\x22\xa9\x1c\xec\x0b\xc0\xa0\x8c\x06\x9b\xdf\xa1\x30\xd1\xc6\xc4\xb5\x6c\x6e\x93\x54\x24\x03\xcc\xf2\x76\x84\xde\xf5\x7d\xef\x26\xdf\x86\xce\xd5\x71\x28\x2d\xc9\x60\x97\x46\x18\xf0\xa7\x4a\x0c\xde\x35\xb6\x53\xcc\x6e\x77\x30\x43\x1b\x82\x5f\xfb\x9b\x8a\xaa\xb3\xc7\xa3\x97\xc9\x92\xbc\x2f\xa2\x32\x70\xfb\x11\xee\x43\x1a\xfd\x5f\x9a\x64\x44\x83\x01\x11\x73\x99\x3f\x19\x48\x5d\xd3\xcb\xdd\x18\x7b\xd3\xd9\x95\xeb\xf0\x03\x1b\x1b\x0d\xe4\xa8\xde\x9c\x14\xeb\x6f\x78\x0e\x36\xb8\x92\x57\x56\xb9\x79\x06\xa1\x96\x9d\x85\xe9\x67\xd8\x80\xe6\xe7\xdd\xa4\x2f\xd3\xc3\x00\x19\xf1\x1d\x70\x81\x07\x1e\xee\x66\x26\x42\x28\x36\xbb\xed\x27\xd4\x6d\xd0\xdf\x1f\xeb\x66\x10\xdc\x85\x9f\x51\x3c\x0b\xc6\x53\xd7\x02\x20\xfe\x04\x8d\x2e\x97\xc2\xe0\x6a\xf5\x30\xe1\x1b\xdc\x70\x29\xbc\xcc\x5c\x92\xed\xec\xef\x5e\x4a\x2e\x0b\xe2\xd2\x51\xf4\x41\x5d\xca\x3e\x55\xb3\xa8\x50\xf2\x63\x0b\x87\x9e\x4e\x03\x6c\xe8\x63\x3b\xf2\x09\x20\xb6\x80\x94\x21\x59\x29\xac\xcc\x7b\xe4\x0c\x57\x78\xbc\x55\x4e\x6e\xdd\x7e\x54\xc9\xe1\x45\xb2\xee\x07\xb6\x5d\x06\x1c\x11\xde\x0e\x83\xf3\x81\xce\x4f\x57\xc6\x48\x3f\x51\x06\x93\x63\x51\x10\x74\xc7\xa5\x77\x35\x3b\x45\xc6\xeb\x71\x19\x9d\xce\x50\x59\xfd\x2c\x46\x11\xb0\x54\x23\x8a\xaa\xdf\x2b\x6b\xa5\x34\xbf\xff\xc2\x72\x2a\xe3\xe3\x1f\xf7\x9a\xe2\xeb\xca\x99\xcc\x35\x07\xf8\xa0\x33\xcf\x4f\xea\x70\xc5\x2f\x7d\xb5\xde\x44\x2b\x42\xb8\xd4\x1e\x99\x01\x2e\x42\xca\x0e\x85\xa9\xfb\x6d\x4f\x16\x5b\x33\x0d\xe6\x38\x3c\x57\x26\xef\xca\x2f\xe9\x71\x34\x00\x02\xf5\x62\xdc\x6c\xb8\xf2\xfa\xf0\x66\x57\x25\xe0\x97\x79\x9d\x09\x60\x91\x86\x4d\x66\xa9\x50\xa5\x79\x09\x53\xee\x16\xb9\xea\x58\x20\x09\x21\x87\x08\xc4\xac\xcd\x81\x38\x13\x58\xa2\xc6\x89\xa0\x41\xd0\x2d\x78\x61\x21"}, +{{0xbe,0x79,0xd1,0xae,0xea,0x86,0xe8,0x6f,0x39,0x81,0x37,0xe6,0x2f,0xfd,0x79,0xe5,0x0e,0xff,0x9f,0x31,0x3f,0x25,0x19,0x2f,0x89,0xe5,0x2f,0x0b,0x4b,0xbd,0x5d,0x32,},{0x18,0x7d,0xac,0x85,0x5c,0xa4,0x42,0xfd,0x9a,0x3d,0xdc,0x32,0x89,0xc2,0x4e,0xb2,0xd2,0x6f,0x7a,0x40,0xfb,0x29,0xd8,0xe7,0x44,0x31,0xb2,0x50,0x22,0xc3,0xa0,0xcc,},{0x6d,0xab,0x59,0x3b,0xb1,0xd4,0x48,0xc9,0x74,0xa6,0x5c,0x6a,0x0b,0x6f,0xad,0x22,0xb4,0x73,0x26,0x32,0xd0,0x04,0x89,0x17,0x6e,0xf1,0x26,0xaa,0x59,0x01,0x09,0xe0,0xa7,0x23,0xa1,0x13,0x10,0x7b,0x53,0xe1,0x7d,0x69,0x0a,0x0d,0x40,0xb0,0xfa,0x33,0x6c,0xc8,0x7f,0xd5,0xfc,0xe8,0xf5,0x41,0xac,0xce,0xc6,0x7f,0x7d,0x1e,0xbc,0x06,},"\x6d\x63\x2a\x7d\x3c\x9b\xe5\x36\x49\xd0\xd1\xa5\xee\xdf\x51\x9a\x41\x3b\x13\xac\x64\xe9\xad\x85\x4d\xfa\x04\xf2\xe1\x73\x29\xd8\x22\xbe\x57\x3d\x9e\x35\xac\x06\x6f\x02\x22\x13\xa3\x44\x62\x0b\xba\x28\x9f\x53\x31\x69\x55\x84\xd1\x34\x3e\x81\x54\x05\xae\xab\xe3\x86\x1d\x63\xb3\xa5\xb9\x2b\x8c\xd8\xee\xed\x22\x80\x22\x2a\xbd\xe3\x0a\x1b\xcc\xd3\xf3\xe4\x11\xaa\xb9\x22\xfa\x1b\xaa\x09\x7a\xa5\xc7\x80\xd0\xea\xef\x94\xea\x10\xfe\x21\xf7\xd6\x39\xb7\x6d\x47\x88\xae\xb5\x92\x4a\x9d\x26\x2d\xcb\xc5\x68\x8a\x3e\x43\x54\x4b\xec\x08\x8c\xa2\xe0\xd0\x6d\x77\xa7\x1f\xb6\x41\xd5\x52\x26\x61\x44\x52\xb1\xe0\x80\x7a\x9f\xcd\x3c\xa6\x9b\xf7\xf2\x5d\x80\x41\x47\x0c\xeb\x7b\x21\xea\xd0\x3e\xc0\x37\xa1\x62\x9b\xd5\x00\xaa\x23\x3b\x59\xbe\x44\x97\x82\x10\xb6\xa3\x66\xf2\x23\xac\xfa\x07\x97\x95\x40\x07\xb0\x0e\xfb\x4f\xfa\xdb\x5f\xc9\x2b\xdb\x37\x86\x3e\x50\x2d\x7d\x70\x68\x10\x39\xed\xf3\x37\x70\xdf\x3d\x1d\xe3\x43\xdc\x35\xf2\x26\xd5\xe7\x39\x44\xba\x02\x55\xe2\xa8\x8e\xf6\xc4\x1e\x47\x2b\x21\x45\x67\xc2\x49\x59\x4a\x50\x87\x8b\x67\x31\xc1\xae\xb5\xb1\x0f\xa9\x1f\xa7\x6a\x37\xe1\xf9\xf1\xc0\x0f\xdb\xfe\x34\x85\xde\xd5\x4a\x00\x9a\xb6\x13\x39\x27\x11\x56\x68\xb5\x9f\x51\x15\x50\x8d\xa9\x37\x0f\x6b\xc9\x2a\x11\x85\xc0\xd5\xca\x01\xd2\x91\xe1\x8c\x54\xac\xfa\xca\x73\x8b\xd7\x19\x68\xa3\x42\xa0\xcb\xa6\x2e\x4b\xb1\x04\xa5\xbb\x37\x9f\xc8\x3e\xe1\x82\x0d\x1d\xb9\x80\x25\x3d\x6c\xb3\x83\xe9\x5a\xf1\x5f\x53\xc8\x5d\x17\x58\x90\xdd\xe5\xe4\xed\x03\xd2\xd0\x13\x5e\x3d\x60\xb1\x82\x93\xf5\xb5\x64\x1e\xf8\x3c\x6e\xce\x3d\x52\x59\x8f\xc6\x35\x36\x86\xe6\xf7\xb0\x9f\xde\xc1\xf6\xf1\x53\x67\x2d\x34\xb4\x89\xb4\x8a\x0d\xb9\xe4\x2c\xed\xa7\x17\x55\x48\x1c\x04\x70\x16\xc2\x25\x34\xe9\x0c\x6d\x20\x1e\xd7\x85\x96\x02\x63\x6e\xa7\x7a\xe8\xc6\x73\x4b\x7c\x4c\x5b\xd9\x95\x79\xc5\x08\x73\x1c\x72\x46\xa2\x95\x86\xe4\x06\xe1\xd9\x32\xf6\x71\x30\x71\xd4\xbe\xa6\x3d\xc5\xe2\xa3\x76\x1e\x16\x02\x4d\x2c\x32\x84\xf7\x09\xa1\xf2\xba\x08\x5e\xad\x32\x00\xc7\x04\x62\x75\xcb\x96\xb6\x1a\x60\xb5\xac\x55\x9b\xc4\x88\xbd\x10\x64\x67\xc3\xde\x50\xbf\x5d\x74\x0d\x05\xc9\xcd\x70\x1d\x65\xb7\xda\xea\x29\xe6\x4d\xd5\xa9\x7a\xdb\x6b\x5c\x82\xcf\x7f\x23\x01\x7a\xa7\xca\x1a\xc9\xa3\x9e\x58\x27\xeb\x47\xe2\x0d\x35\x9b\x67\xc7\xd4\xe1\xa8\xe3\xe2\x7c\x52\xd3\x3d\x93\x03\xa5\x92\x62\x34\x84\xd7\x97\xb4\x02\xcb\xb4\x58\xd1\xac\x2e\xa5\x3e\x1c\x4f\x7a\xbb\x70\xcc\x02\x95\x54\xa2\x34\x57\x4d\xef\x9b\xc3\xb0\xd3\x83\x5d\xc3\x14\x90\x2e\x25\xab\xb2\x2d\xfd\xed\xdc\x67\x9a\x3c\xc8\xf0\x73\x40\xb1\x5f\x57\x62\xf4\x40\x7f\x38\x03\x42\x55\x4e\xd0\xc6\x2f\x73\xb6\x18\x16\xea\x8c\x52\x94\x61\xe1\xbf\x0e\x9d\x1c\x2d\x5e\x4c\x57\x46\x33\x6b\xc0\xe1\x32\x87\x3c\xde\x0d\xc2\x15\x8b\x54\xfa\x1b\x67\x8a\x00\x6b\x4d\x95\xed\xa8\xa9\x55\x71\x42\x73\xb7\xcc\x5c\xf2\xad\xd9\x09\x4d\x46\xe4\x9a\xbc\x09\x6a\x45\xf4\x18\xe2\xed\xbe\x99\xdd\x85\x29\x11\x68\x80\x64\xdf\x7c\xf0\x61\xd0\x7a\xee\xf4\x27\x95\x69\x0f\x48\xc9\xba\x19\x56\x54\x75\xd5\x46\x8a\x9e\xf4\x5d\x7b\xf7\x5f\xd7\x11\x82\xdd\x6e\x64\x01\x38\xf1\x82\xa6\xa0\xc6\xcb\xbd\x00\xc4\x95\xc4\x38\x95\x30\xac\x8e\x67\x96\x0e\xb5\xc5\x76\x3f\x54\x84\xea\xb1\xc1\xab\x85\x01\x40\xda\x04\x2b\xa4\x7e\xd8\x52\x88\x00\xd4\x17\x87\xf0\x75\xfe\x0d\x85\x50\x1a\x7a\xb7\x66\x35\xd0\x34\x10\xd2\x86\xc0\xe1\x7d\xb4\x02\x3a\x76\x39\x74\x68\xcc\xb0\x91\xcc\x5a\xc1\xf6\x43\x45\x87\x91\x3e\xab\x92\x2b\x50\xca\x55\x67\x01\x6d\xde\xa3\x2f\xb5\x32\x55\xbe\x67\xf2\xdc\xf9\xff\xa8\x5d\x11\x7f\x1a\x65\x5f\xa7\x0d\xd3\xa5\x4c\xf9\x91\x53\x1f\x19\x13\x0e\xaa"}, +{{0x26,0x99,0x52,0x17,0x2c,0x3f,0xa9,0x76,0xde,0xfb,0xf4,0x0b,0xd6,0xed,0xd8,0xf1,0x5c,0xfd,0x4b,0xe1,0x0c,0x75,0x8e,0x37,0x41,0xd7,0x41,0x62,0xd8,0xea,0x22,0x9a,},{0x4a,0xea,0x57,0xc7,0x21,0xe3,0xdc,0xca,0x82,0x39,0xe9,0xad,0x9b,0x22,0xc1,0x9b,0xab,0x8d,0xf7,0x2c,0x88,0x79,0x3b,0x24,0xd8,0xdc,0x47,0xcf,0x97,0x40,0xfc,0xf8,},{0x3a,0xc8,0x0d,0x1e,0x8f,0x68,0xb4,0x05,0x8c,0x3a,0x04,0xda,0xd7,0x18,0x73,0x73,0x95,0x9f,0x26,0xa2,0x70,0x02,0x49,0x6f,0x8a,0xfa,0xac,0xcd,0x8b,0xea,0x09,0x01,0xc5,0x4c,0xab,0x87,0xb2,0xa2,0x30,0x2e,0x1f,0x36,0x25,0xc2,0xb0,0x6c,0x7e,0xbc,0xf3,0xce,0x96,0xde,0x3a,0xfd,0xf0,0x0f,0x51,0x94,0xa3,0x5e,0x05,0x52,0xc7,0x0e,},"\x7c\xcb\x6a\x05\x70\xc5\x33\x73\x7b\x9a\x53\x4a\x34\x1a\x7a\x96\xdc\x76\x52\x8b\x99\x7a\x9b\x48\xe6\xe0\xfd\xe1\x0f\x47\x4b\x27\xec\x98\x99\x12\xd1\x76\xca\xb7\x42\xd8\x9a\x84\x8b\x36\x66\xe9\x27\x7d\x69\x5b\x02\x2f\xd5\x3a\x9e\xb8\x9e\x88\xc7\x20\x39\x9e\x24\xed\x25\xdb\x9e\xb3\x5d\x6d\xa0\x09\xe9\xf0\x24\xef\x8e\x65\x51\x65\xbd\xef\x1c\x0d\x79\x7c\x74\xf0\x19\xcd\x59\x1a\x04\x42\xa1\x2d\x1c\xa8\x93\x83\x6c\xa2\x62\x8b\x33\xe8\x54\xf3\x42\x8e\xec\x4a\xa5\xed\x84\xf4\xbd\xd2\xee\xf8\xb6\xd2\x25\xca\xf9\x49\x6d\xf9\xed\xff\xd7\x35\xea\x54\xdb\x1b\xde\xa8\x83\xad\x5d\x47\xeb\x0b\xd4\xa6\x65\x3f\x0a\xb0\x37\xf0\x40\xa4\x15\x17\xa7\x74\x1f\x91\xe8\x2f\xdb\x6f\xda\x04\xf0\xdf\xa1\xbc\xf8\xb9\xb3\x7b\xf2\xbf\xbd\x87\x32\x7a\x63\x6f\x90\x7f\xdf\x96\x8d\x01\x89\xd1\xa1\x18\x09\xc4\x23\x0b\xa6\x9d\x5c\xbd\x84\xf5\x61\xbc\xac\x3a\xd0\x02\xe5\x58\xc5\xb9\xb0\x97\xa0\x19\x02\xf2\x9c\xe3\xf1\xec\x26\x41\x53\xd6\x68\xc7\x8b\x84\x51\x05\xb9\xcd\x2e\xf3\xc9\x43\x53\x1b\x75\xaa\x42\x8f\x17\x9e\x4b\x34\x18\xb1\xd5\xa4\xaa\x7a\xb1\x20\x3e\xfa\x49\x5c\x87\x69\x62\x8e\xb1\x06\x3a\x93\x7b\x73\xe4\xb5\xcd\x0c\xda\x33\xda\xb0\x1a\x50\xc6\x4f\xeb\xd9\x75\xc5\x7a\x1e\x84\x15\x08\xe8\x60\x60\x94\xd0\x82\x4f\xdd\x96\xcc\x6c\xfa\x18\xfa\x82\x09\xb3\x0f\x0a\x2a\x78\xea\xc9\xa7\x67\x17\x6f\x57\x3e\x78\xc0\x68\x80\x9b\x19\x9a\x69\xac\x6d\x33\x5d\x7c\x92\x09\x99\xc4\x0c\xba\xd8\x7c\xf4\xcc\x7c\xa5\xc6\x44\x29\x1d\x75\xad\x7a\x74\xbc\x1e\x63\x92\xd1\xce\x31\x1e\xcf\xd2\xeb\xc9\x16\xe3\x9e\xb6\xaa\x3e\x7d\x89\xfb\x80\x5a\x27\xa5\x5f\x17\x89\x12\xb1\x57\xbc\x01\xa0\x55\xf6\x7a\xef\xa7\x8e\x55\xc8\x06\xcb\xd9\xc0\x1b\xaf\x8e\xf9\x2c\xad\x22\x60\xb4\xbb\x14\xcf\xe6\x17\x82\xde\xe5\xc5\x99\x72\x50\x69\x41\xc4\x62\xa4\xda\x7e\xb8\x99\x53\x1c\xf9\x96\xbc\x98\xba\x36\x29\xef\xfe\x6f\xcd\x17\x06\xd1\xb4\xee\x4f\x2a\x14\xe9\x21\xbd\x40\x8f\x30\xe1\x2e\x73\xfb\x7a\xa8\x60\x53\x6b\x03\xe7\x7c\xa9\x37\x82\x32\x81\xa1\x64\x53\xfe\x82\x79\x35\x94\x32\x01\xe6\xec\x14\x3a\x67\xee\xfa\x4f\x94\xe9\xab\xf9\x4f\x7e\x3d\x41\xb7\x0a\x82\xbe\x69\xde\xd8\xa5\x30\x60\xc2\x30\x5f\x42\xf6\x2f\xe6\xa2\xf7\x04\xb6\x7a\x1e\x8f\xdd\xc7\xd9\x8b\xa7\xf3\x45\x71\x19\xb3\x11\xd4\x49\x66\x3e\xd9\xe3\x20\xd6\x18\xdc\x23\x68\xd4\x95\x08\x75\xb9\xc3\x8c\x5d\x8c\x03\x10\x4e\x2e\x32\xc4\x32\x5d\xed\xd2\xbc\x26\x7e\x2a\xcc\xb0\x11\x20\x18\xe9\xc5\xa8\x00\x7c\xca\xb2\xf6\xd7\xc7\x37\x79\x20\x02\xac\xb7\x30\xd7\x2e\x9f\x73\x08\x29\xeb\xc4\x2c\xa5\x64\xc1\xd9\x27\x1b\xf1\x86\x9c\x4d\x35\x83\x55\x89\xb7\x43\x1e\xf7\xa3\x1a\x07\x00\x60\xfe\x4a\x08\x9f\xb1\x1f\x2d\xd3\xdc\xe6\x5a\xe0\xfb\x45\xbc\x3a\x28\x60\x91\x7d\x93\x3b\xa2\xd0\x90\x56\x9e\xf5\xed\x43\xbc\x25\x32\xdb\x87\x9e\x0f\x1f\x22\x5e\xad\xcb\xef\x1c\x03\xd9\xed\x78\x29\x9e\x23\x3e\x4c\xf0\x7b\x06\x4a\x7b\xaa\xc3\x4c\x5a\x0c\x19\xfc\x3a\x55\x42\x08\x9f\x70\x16\x7b\xe2\xf8\x5b\x4a\x10\xe7\x78\x52\x52\x23\xbe\x8f\xfd\x5c\xff\x96\x48\xb1\x00\x5a\x09\x8b\x4b\x39\x24\x39\x8f\xb0\xbc\xab\xcc\x6e\xdf\x30\xc0\x61\xec\xe7\xae\xa3\x5f\xe9\x8a\x92\x03\xf8\x71\x13\x69\x53\x0f\xeb\x5e\x67\xbb\x2d\x4f\x59\xd9\xc8\xbc\x99\x38\x54\xdd\x47\x47\xcd\xe3\x99\xbd\x0e\x63\x74\x0c\x1c\xc8\x39\xad\x0f\x09\x8a\x38\xa8\x0b\xea\xdd\x64\x8e\x14\x36\xde\xee\x60\xe9\x31\xe6\x8f\x52\x97\x9c\xe4\x9f\x30\x1f\xe3\x9a\xfb\xb6\x15\x35\x20\x91\xc8\xb6\x58\x5f\xe8\x84\x47\xed\x6e\x59\xa0\x20\xb2\xbb\xe6\x6a\x94\x23\xae\x52\x28\xc2\x03\xbf\xd4\x84\x7b\x51\x81\xe2\xc3\xb4\xda\xd8\x3a\x6d\x4f\xa7\x69\x85\xee\xf7\x6a\xdd\xe3\xb3\x4e\xdb\xdd\x28\xd6\xa0\xb4\xa4\xee"}, +{{0xcc,0x31,0x38,0xe5,0x02,0xa5,0xff,0x6f,0x80,0xd2,0x46,0x36,0x6e,0x84,0xd6,0x5c,0x59,0xf1,0x2d,0x4f,0x49,0x63,0x97,0xe6,0xeb,0x99,0xb5,0x26,0x7b,0x8c,0xbe,0x2a,},{0x9e,0x2d,0x3e,0x88,0xaf,0x7b,0x52,0xdd,0xcf,0x00,0xe6,0xd0,0xc7,0x75,0x9c,0x12,0x38,0xb8,0xfb,0x3e,0xb1,0x44,0x21,0xfe,0x82,0xc3,0x48,0x33,0x43,0x78,0x35,0xbd,},{0xa2,0x70,0x0e,0x38,0x95,0xed,0x0c,0xc2,0xaa,0xf0,0x12,0xa4,0x0b,0xc7,0xbd,0x0b,0xd2,0x9d,0xd7,0x9c,0x69,0xc0,0xb4,0xa6,0xed,0xd0,0x53,0x0c,0xf3,0xe2,0x67,0xc0,0xf8,0x2d,0xd8,0x4e,0xda,0xf1,0x74,0x4d,0xc4,0x11,0xd6,0x2c,0x00,0x28,0x71,0x52,0x58,0x82,0x2d,0x7b,0x63,0xd3,0x97,0x05,0x61,0x2b,0x3f,0xad,0x4b,0x5e,0xfb,0x04,},"\x58\x5e\xcf\x2f\x09\xeb\x92\x3d\xf2\x0a\x85\x55\x64\x2a\x2b\xc0\xb6\x8c\x6a\x5f\xcf\xd6\xb8\x40\x1c\x4a\x0c\xba\xbb\x4c\x6e\x6a\x20\x67\x62\xb7\xa3\x9f\x2c\x54\x55\xd7\x80\x8e\xbf\xbe\xd5\x6d\x67\x60\xa4\x31\xc7\xd2\x0c\x2d\xc6\xef\x1b\x73\xca\xa3\xc4\x94\x88\xe3\x0b\x1c\xa2\x52\x0a\xd2\x0b\x26\xa1\x97\x00\x78\x0e\x5e\xf3\xce\x01\x44\x38\x8d\x84\x07\xb6\xa7\x0c\x1c\xda\x37\xdb\x7f\x12\x09\x1d\x89\x2f\x2e\x91\xad\x40\x78\xbb\x4d\xb1\x76\x2e\x46\x28\x5a\x7b\x66\x4b\x2a\xd3\xa3\x4d\x26\xd8\xa9\x4d\x64\x58\x7a\x84\x52\x77\x22\xea\x83\xcb\x8a\xa8\x89\x84\xe1\x48\x97\x43\xb4\x21\x4e\xa6\x04\x1a\xa1\x8e\x55\x20\x09\x54\xef\xc7\xed\xb3\x19\xdf\x94\x7e\xfb\xfc\x6c\x8d\x0f\xea\x48\xa1\x31\x61\x34\x65\xd8\xf4\xc4\x94\x98\xf2\x26\x91\x45\xc6\xda\xe5\x04\x78\x05\x25\x98\xe1\xca\x3b\xe0\xe3\x36\x11\x57\x1f\xa3\x84\x77\x1e\xee\x40\x2c\xc2\xb1\xd8\x48\x36\xc8\xf1\xad\x28\xf2\xad\x23\xde\xe9\xff\x1d\x7e\x1f\x25\x21\x63\x58\x74\x11\x5d\xef\x4d\x93\xe8\x9b\xe7\x61\x80\xbc\x55\xf7\x61\x14\x43\x60\xa8\xb2\x22\x89\x2d\x64\xd1\x57\xcc\xb5\xd8\xf4\x85\x5d\xca\x56\x70\x14\x95\xa0\xe1\x00\x2d\x34\x0a\x4a\x46\x15\x6b\x9b\x7f\xe0\x6b\x7c\x07\x59\xe0\xb6\xdf\x55\x9b\x69\x1e\xde\x78\xb5\x5a\xf6\x4e\x7c\x8d\xd9\x08\xb7\x88\xdd\x6b\xa3\x5a\x90\x2c\x81\xdc\xeb\x37\x88\xb6\x15\xde\x22\x5a\xfa\x58\xa8\x11\x81\xab\x24\xa7\x37\x05\xee\x83\x8b\x6e\x86\x3f\xe1\xbc\xc2\x6c\x1b\x94\x32\x39\x23\x0c\x27\xc6\xb3\x97\xb2\x3d\x13\xde\x6a\x02\xc9\x7f\x36\x45\xda\x91\xd4\x13\xf9\x16\x47\x3b\x01\x8a\x61\x59\x4b\x6f\x51\xce\xa4\x44\x57\xda\x1e\x3d\xbb\xba\x6d\xe1\x68\x66\x65\x7e\x92\xef\x02\x02\x71\x8a\x84\xad\x03\x33\xe8\x33\x6b\x05\x2b\x00\x47\x33\xe8\xe9\x5e\xc1\x3e\x5f\x91\xb3\x80\x6a\x98\xd3\xdb\x72\x9f\xb7\x35\xb8\x14\x7c\x4a\x98\x2a\x2d\x5b\x4e\xfa\xe9\xc0\x9d\x0a\x9b\xf8\x91\xcb\xbc\x3c\x8f\x53\x1e\x76\xe4\x04\x4e\xc9\x1f\x4d\x7c\x5c\xf7\x73\x10\xe2\xb2\xcd\xe2\xe0\x7c\xcf\x3e\x0a\x19\xdd\x6a\xe1\xb3\xfc\xb2\xdf\x42\x18\x6e\x9c\x72\x92\x2d\x2d\x4c\xe5\x1b\x30\x6e\x81\xb1\x6c\xfc\xf8\xf0\x0d\x51\x3f\xbd\x2c\x52\x39\xb4\x5a\xfc\x65\x4f\x6f\xe2\x1a\xcb\x7e\x8a\x0c\x9a\xa8\x7b\x0b\x60\x50\x74\xdf\x95\x76\xa6\xdd\xd9\x00\xac\xa5\x67\x61\x7c\xb7\x96\x56\xb3\xb5\xec\xb9\xff\x68\xb2\xf6\x24\x1e\xd0\xd0\x24\xac\x27\xaa\x6e\xb4\x86\xb6\x9f\xdc\x0a\x0d\xb9\x20\x96\xab\xf8\x60\x02\xde\xc7\xaf\xd8\x47\xa0\x06\xa3\xf6\x95\x5b\x49\x56\x90\x53\xbe\x9f\x1d\x0a\x49\xb7\x93\xa5\x41\x1e\x59\x16\xf4\x18\xec\xab\x95\x32\x43\x55\x3b\x66\xe6\xba\xdc\x4e\x90\x9b\xe0\xef\x5c\xc7\xc6\xd2\x71\x99\xec\x3f\x21\x42\x3b\xc4\x57\x73\xfb\x40\xb9\x7b\x61\x18\x5b\x57\x08\x0e\x8f\x0b\x89\xa3\xea\x57\xc8\x44\x4a\xb2\x7e\xcf\x70\x06\xa7\x66\x04\x7e\xef\xf5\x4d\x85\x56\xcf\xed\x23\xde\xf1\xda\x2c\xc8\xae\xbb\x48\xc9\x4e\x77\x9e\x82\x03\xae\x2c\x90\x2b\x51\xde\x0e\xde\x04\x56\xfb\x73\xfb\x4d\x5f\x51\x4a\x4c\xeb\xc4\x7f\xec\x3f\x94\x84\x69\xa5\x45\xc6\xbc\x57\xb4\x13\x8d\xb3\x4e\x7c\xc0\x06\xde\x26\xef\x50\x7b\x54\xd2\x81\x47\x56\x7a\x8c\x29\xac\x1e\xce\xf5\xbb\x84\xfb\x99\xac\xeb\x23\xa2\x02\x94\xd7\x4a\x85\xae\x36\xb3\x34\x50\x66\x8a\x5c\x26\x09\xd3\xa9\x39\x34\x58\x6f\xf9\x0c\x3b\x6d\x27\x32\x9e\xee\xf3\xa7\x54\xe9\xa9\xcb\xd5\x61\x7e\xf3\xb0\x93\x97\xbd\xc9\x71\x37\x07\x66\x58\x9a\x12\xd8\x90\x05\x0d\x16\x51\x45\x8b\x3f\xc5\x33\xc8\x43\xbf\xfd\xf9\x75\x4d\x93\x2c\x4e\xd7\x61\x1d\x4d\x27\xc3\x2a\x08\x75\x55\xb5\xea\xa3\x7a\xe9\x0c\x49\x79\xef\x54\x29\x9c\x42\x0a\xb5\xe2\x9a\xe2\x84\x5d\x4d\xcf\x21\x78\x92\x0a\x86\x51\x75\xfb\x9c\xc0\xe6\xb8\xc5\x24\xb1\xee\x49\x58\x05\xd5\x17\xbf\xe0"}, +{{0x5c,0x69,0x2c,0x68,0x11,0x98,0xb1,0x72,0xdf,0x2f,0xac,0x2a,0xec,0x3f,0xcf,0x70,0x15,0xc2,0xbb,0x68,0x30,0xf2,0xa9,0x8e,0x30,0xa3,0x96,0xb6,0x4a,0xf4,0x28,0x0e,},{0x33,0xb1,0x69,0xd4,0xca,0x27,0x10,0x40,0x92,0x6e,0xa8,0x78,0x35,0xe5,0x06,0x6f,0x9f,0x05,0x78,0x2f,0x08,0x7f,0xca,0x7a,0x55,0x6f,0x7b,0xf4,0xcb,0xa2,0xe8,0x86,},{0xad,0x8f,0x37,0x9c,0xaf,0x41,0xf7,0x2d,0xcc,0xad,0xc3,0xe9,0x15,0x35,0x7a,0xb0,0xcd,0x30,0x4e,0x10,0xf4,0x12,0x0e,0x0d,0xbb,0xfa,0xac,0x01,0xbf,0xfa,0xf2,0xbe,0x89,0x3f,0x70,0x07,0x2d,0xc9,0x64,0x06,0x91,0x81,0xbe,0xc1,0x7f,0xe0,0x25,0x10,0x55,0xb2,0x1e,0x23,0xde,0xe4,0x36,0x3b,0x27,0xef,0x1f,0xff,0x67,0xaa,0xfe,0x06,},"\xb1\x60\xee\x3a\x93\xcf\x6b\xc3\x45\x6e\x5b\xd0\x19\x7c\x09\xaa\x76\xc2\x25\x80\x52\xf9\xa3\x4d\xbc\x2e\xd5\x89\xf8\xdb\xe5\xff\x99\x69\xa6\x1c\xfe\x84\x6b\x2f\x67\x39\xdc\x7d\x4a\x14\x96\xe9\xad\x58\x60\x5b\x5a\x27\x58\xca\x07\x8c\x55\xa9\xfc\x1c\x4e\xeb\x54\x91\xa8\x4b\xfd\x46\x8a\x2c\xeb\x14\x1a\x77\x34\x93\xa9\xb3\xee\x82\x8b\x5d\xde\x9c\x00\xc2\x36\xff\x01\x56\xe4\xe2\xe4\x5f\xa0\x79\x31\xda\x68\xbb\xd2\x03\x0a\x88\x14\x05\xc4\xf7\x87\x28\x81\x3a\x5e\x04\x81\x24\x04\xc2\xa1\x9c\x9b\x87\xb1\xcf\xe9\xaf\x95\xe2\x73\xec\xf9\xc5\x18\xc5\x39\x35\xf8\x42\x56\x3b\x19\x2f\xae\x12\xa7\x3c\xef\x08\x5f\xe1\x9e\x89\x9e\x5b\xa0\x89\x79\xe3\x11\xfb\x28\x6f\xbf\xc7\xb2\x48\xaa\xbd\x40\xdc\x61\x61\x0e\x1d\x4f\xc9\x80\x6d\xd2\x12\x92\x39\x2d\xb2\xdb\x40\x42\x6c\x5d\x19\x6a\x48\x9c\x5d\xb7\x7e\x3e\x9c\xf0\xbd\x04\x1e\x3c\x23\xb5\xba\x1d\xb7\x81\xa1\x07\x90\xbe\x1f\xe0\x7a\x2b\x00\xca\x3a\xf8\x9c\xbd\x46\xef\xce\x88\x0e\x1e\xf2\x8b\x0c\xd7\x9d\x53\xb4\x2c\xd8\x0e\xaa\x13\x7e\xff\x7d\xf9\x0b\xcb\xcf\x95\xc9\x85\x8d\xc0\xcc\xc6\xd8\xca\x8a\xe3\x54\x7b\xdb\xf9\xff\x90\x24\xf3\xcf\x17\x01\x15\xeb\x28\xbf\x12\xb7\xd3\xb7\x01\x46\x0f\x48\xd1\xb4\xb2\x3d\x7f\x6f\xf7\x2f\xfd\xc9\xa6\xc5\x26\x24\xd1\x53\x12\xd7\xf1\x9d\xdb\x60\x26\xa1\x5e\xb5\x42\x95\xd3\x31\xfd\x79\x50\x91\x03\xbc\x59\xa3\xb6\xe1\xba\x7a\xc8\xc1\x12\xe4\xde\x28\x17\xe5\x1c\x1e\x16\x50\x7b\xa6\x6f\x25\x47\xbc\x89\x9f\x69\xc1\x20\x7a\xe5\xe3\x7b\xdb\x0e\x16\x1b\x15\xb6\x12\x30\x5b\xc0\x94\x0f\x9d\x1b\x38\x2a\x37\xec\x2d\xa6\x39\xa6\xec\xba\x1b\xcd\xfc\x51\x21\x4c\x32\x23\xc1\x1b\xba\xb7\x9f\x3f\xae\x3d\x55\xe2\xd4\xbe\x58\x4f\xd7\x60\x1e\x4e\x2e\x55\x8b\x3b\xe5\x70\x71\x15\xa6\x1f\x5a\x81\x5e\xc2\x4a\xac\x18\x09\x34\x57\xbc\x46\xc0\x5c\xfb\x7a\x3f\x25\x33\xea\xda\xdc\x9e\x6c\x1f\xe3\x10\x77\x9e\x69\x7f\x68\x30\x35\xce\x57\x87\x3d\xf5\x5d\x79\x1f\x6d\x2f\xb0\xe2\x10\x7e\x68\x66\xf8\x39\xc3\xa1\x26\xe9\x02\x38\x65\xce\xd1\xbc\xf6\x77\x99\x55\xaf\x54\x7e\x1d\x87\xeb\x32\xa9\xbf\x32\x28\x57\xfd\x12\x6b\x0c\xdc\x5d\x5e\x90\x4e\xb7\x6c\x67\x06\xe3\xc8\x97\xae\xfd\x6e\x47\x56\xfb\x8a\xca\x81\x70\xca\x5b\x39\x66\x90\x89\xaf\x1b\xb1\x41\xa2\x5d\x6b\x8b\x06\x03\x4d\x8b\x11\xab\xf1\xff\x8f\x8d\x43\x37\x58\x46\xfa\x8f\xa8\xa3\x4b\x5f\x26\x48\x20\x74\x4d\x31\x14\x9b\x7d\x57\x32\x6c\x59\xb1\xdb\x74\x13\x16\x78\xf6\x34\xe7\x23\x2c\xa5\xea\x51\x88\x76\x0a\x70\xdc\x35\xdc\x89\xf8\xe4\x53\xb4\xc6\x5b\x77\x2c\x2b\x6b\x62\x76\x8d\x83\x73\x23\x65\x51\xba\xaf\x24\xd3\xc3\x04\xc4\x1b\x62\xc3\x6e\x6a\x33\x83\xb3\xa1\x63\xb7\x3e\x78\xd8\xba\xdb\x75\x74\x1e\x50\x01\xd4\x19\xd3\x0e\x2e\xd7\x7c\x30\x96\xe8\xd8\xdf\x71\x3b\x93\x76\x2c\x97\x07\xbd\xd0\xf3\x65\xa8\x74\xb9\xda\x8a\xb7\x10\x49\x5d\xd5\x6a\xea\x93\xbb\x77\xfb\x22\x26\x35\xc6\x3b\xce\x9f\x63\xaf\x91\xfa\xc8\x9c\x66\x98\x6b\x8e\x21\x76\xdd\x45\x1d\x58\x33\x94\xc1\x90\x7c\xba\x17\x25\xf0\x6d\x25\xd1\xd0\x91\x2b\x3e\x5c\x6c\x7d\xcd\x34\x35\x8f\xad\x59\xdb\xc6\xf6\xb1\xc2\xef\x33\xd3\xca\x82\xf4\x35\x18\xfe\x4f\xf3\x13\x78\x01\x6e\x57\x8a\x7b\xab\x0b\x77\x67\x6e\xba\xe0\xd4\x8d\x08\x89\xd6\x90\x29\xd2\x09\xf2\x83\xce\x8f\xe0\xec\x23\xcd\x83\x2a\xdc\x12\xa9\xc3\xe3\xae\xc2\xd6\x03\x66\x95\x55\x6d\x93\x13\xf1\x2a\x89\x9d\xd5\x9a\x66\xbe\xf2\x8e\xde\x17\x5f\x8a\xae\xee\xb2\x94\x2b\xb9\x08\x92\xa0\x4b\x44\x0d\x04\xb6\x6f\x5e\xef\xf6\x1a\xda\x72\x79\x02\x94\xce\x55\xc8\x6c\x6d\x92\x78\x5d\xdd\x26\xc7\xa7\x31\x60\x3b\x06\x9c\x60\x3c\x92\xe4\xfe\x8f\xf7\x82\x54\x4c\x8e\x89\xb4\x0b\x8b\x55\xf9\x0e\x2a\x5e\x9a\x0f\x33\xc7\xfe\xc7\x7d\xad\x81\x52"}, +{{0x9d,0x5f,0x85,0xd2,0xe7,0xdf,0xd0,0x3b,0xb6,0x89,0xd9,0x00,0x28,0x5f,0xd4,0x46,0x15,0x38,0xa5,0xf2,0x71,0x0a,0x13,0xed,0x21,0xc7,0x75,0xf6,0xef,0xf6,0xb3,0xff,},{0xb8,0x67,0x97,0xe4,0xbe,0x02,0x86,0xae,0x39,0xe4,0x4d,0xf0,0xa0,0x0c,0x01,0x6d,0xb4,0x55,0x5e,0xf8,0x6f,0x2f,0x05,0xd0,0xa3,0xed,0x89,0xd8,0x9a,0x4c,0x3e,0x5e,},{0x17,0x6b,0x95,0x92,0xf8,0xc2,0x51,0x35,0x29,0x2a,0xdd,0x4d,0xaa,0xcc,0x9c,0x4f,0xaa,0x21,0xd4,0xf4,0x9b,0x27,0x84,0x80,0xc4,0xe8,0x88,0x1c,0x01,0x62,0x4d,0xf9,0xa3,0x7e,0x23,0xe1,0x8e,0x84,0xca,0x32,0xd0,0xd8,0xcb,0x85,0x10,0x54,0x22,0x2f,0x10,0xa4,0x95,0x41,0x9f,0x19,0x7e,0x7b,0x3d,0x18,0xdf,0x0a,0xdf,0xb1,0xb3,0x07,},"\xf7\x0b\x5b\x05\x3a\x46\x72\x51\x2c\x24\xb3\x16\x83\x92\xf6\xa1\x7d\xd7\x7d\x86\x89\xc2\x1c\x86\xef\xc2\x58\x29\xa1\xa0\x4f\xab\x4f\x76\xc8\x52\x16\x84\xd3\x20\x10\x45\x59\x07\xa2\x69\x08\x67\x7b\x40\xdc\x69\x47\xd6\x54\xf2\x91\x4c\x30\xec\xee\x72\x4f\xa6\x84\x46\xb5\x9d\x09\x1e\x25\x8f\xc8\x62\x41\x1c\x96\x4d\x66\x8d\xef\x83\x03\x4b\x62\x7e\xd4\x16\xdc\x19\x0b\xb5\xa2\x63\xa6\xff\x8d\x55\x9e\x13\xb8\x93\x62\x25\xfb\x4d\xab\x4f\x7b\xda\x04\x68\xe5\x47\xe7\x08\xcb\x04\xce\xbe\x1e\x5c\xfc\x69\xf7\x6a\x1d\x28\x3f\x28\x16\x82\x86\xf2\x4e\xce\xa5\x53\x5e\x44\x90\xa0\xc5\x55\x67\xa7\x34\x5e\xf9\x53\xce\x42\x6b\x20\x9a\x3d\xe3\xdf\x59\x5e\x80\xee\x61\xe5\x72\xa2\x78\xab\x02\x21\x95\x51\xb7\x3d\xa4\x19\x84\x80\x82\x85\xa8\x35\x98\xa0\x2d\x9b\x28\x67\x12\x10\x00\x4e\x31\xd8\xaf\x92\x42\xc1\x6f\x90\xd5\xea\x8f\x63\xa1\xff\x66\xcf\xe6\x0e\xcb\xe5\x37\x24\x5f\xa1\x2a\x9b\x15\x41\x15\x29\x58\x06\xea\x2d\x11\xf3\x67\x17\x82\xb9\xaf\x4f\xa8\x6a\x12\x88\xe1\x23\xcf\xd2\x40\x9a\x5d\xc9\x8f\x41\xb8\xf6\xdf\x29\x9b\xbc\xc4\xbb\x64\x47\xdc\x03\xa6\xd6\x0e\x9b\x2c\x5b\x8f\xfc\x40\xd9\x83\x95\x6b\xe9\x77\x68\xdd\x06\x12\xd4\x7c\xbf\xa7\x57\x1c\x99\x69\x85\x6c\x15\x2c\xd3\xb4\x73\xac\xe0\xb8\xa1\x44\xaa\xc2\x09\x5c\x0f\x72\xf1\xd3\x14\x71\x52\xb9\x08\xef\x66\x26\xd5\x22\x28\x19\xb2\x0b\xb3\x35\x0a\x46\x45\x2f\x67\x54\x90\xc2\xa8\x21\x50\xee\xc4\x0d\x75\xb6\x6a\x32\x5d\x6e\x92\x9a\x90\x5a\xde\x1e\x31\x60\xab\x95\x01\x81\xef\xc6\x6e\x59\x23\x08\x65\xd5\xe5\x99\x69\x8a\x8a\x3f\xf5\x60\xc4\xc6\x01\xa7\xa9\xa5\xda\x3b\x5d\x89\xbc\xa9\x3f\x7c\xf5\xbc\xf5\xbd\x5e\xcf\xf8\xf1\xa1\x85\xc8\x22\x0e\x4c\x77\x82\x1e\x62\xad\xf9\x5a\x03\x7f\x2d\xf7\xce\xf4\x3a\x4c\x60\xac\x75\x80\x1e\x9f\xcc\xdc\x5b\x08\xee\xd3\x28\xdd\x93\x10\x09\x04\x11\x56\x45\xec\x1e\xe0\x85\xcc\x77\x8b\x0f\x4e\x46\xe1\x72\x98\x98\x4a\x70\x2e\xce\xb3\xe1\x52\x83\xd8\x20\x00\x4f\x74\xa0\x79\x52\x0d\x63\xa7\x5f\xae\x33\xec\x3f\x4b\x83\x64\x69\xe1\xaa\x99\xea\x24\x4a\xf1\xfb\x08\xb0\x0a\x8c\x9d\xfd\x03\x30\x8d\xfc\x20\x23\x5e\xa9\xc8\x28\x3f\x4d\xa4\x7c\xfb\xcd\xbd\x03\x1a\x02\xd1\x64\x16\x0f\x2a\x58\x98\x67\x00\xb1\x95\x26\xd4\x1e\x4d\x7f\xd4\x58\x43\x4d\x72\x64\xbc\x8e\xb6\x42\xe6\xd8\xdd\x27\x59\xce\x2b\x85\xc9\x7b\x37\x02\xe7\x0d\xa7\x1f\x18\xed\xc5\x3e\x91\x40\xa6\x45\x62\x7e\x02\x78\xe8\xe7\x05\x39\x03\x74\x84\xdc\xd1\x8c\x62\xfa\x33\x07\x17\xd6\x14\x8a\x0d\x62\x3f\xf8\xb6\x5e\xa8\x56\x7e\xc7\xfa\x04\xc8\x92\xe3\xa1\xec\xee\x96\xe8\x32\xf4\x15\x50\x74\xc8\x3c\xbc\x93\xe9\x8c\xc6\x7f\x1f\xa1\x12\xaa\x06\xe9\x91\x5f\xa4\xd2\xde\xa9\x31\x55\x1e\x7c\x62\x3a\xa8\xa3\xa7\x61\x9e\xa2\x4f\xf9\x14\xe2\x64\xf3\x1f\xc7\x3d\xfa\x8c\x43\x0a\xc4\x6c\xe1\x6d\xc9\x68\xc5\xa4\x08\x5d\x5c\x38\x0d\x30\xcd\xc6\xf4\x3d\xee\x80\x6f\x38\xd1\xdf\x42\x0a\x06\x55\x74\x14\x47\x37\x05\x6d\xaa\x62\xf0\xc0\x98\xc9\xc5\x2f\xcc\x04\xcc\xa6\x42\xc4\x5d\x68\x73\x45\xa0\x94\x61\x3d\x4a\x3c\x6c\x87\x88\xbf\xa2\x18\x53\x8a\xd7\xec\xe1\xbd\xb6\xc9\x39\x24\xee\xc4\xba\xaa\x3e\xb1\x5d\xc1\x49\x4d\x65\xff\xa1\xa2\x3f\xf8\xe9\x85\x26\x34\x08\xfb\x02\xbf\xe3\x9a\x8c\x55\xb3\x00\xb1\xa0\x2e\xd3\x6c\x67\x14\xdd\x5a\xb7\x50\xd4\x7f\x02\x1f\x65\xe0\x8c\x63\x5f\x1d\x6b\x7b\xaf\x39\x6c\xb4\xf9\x3d\x56\xc1\xca\x46\x1b\xb1\x2e\x94\xde\x7e\x5d\x98\x65\x9a\x8a\xf0\xbf\x01\x9f\xc4\x22\x80\xe1\x11\xe0\x48\x00\xff\x80\xe0\xc1\x57\x15\x0e\x16\x56\x09\x45\x42\x81\xb2\x00\x07\xe3\xed\xfa\xa1\xea\x85\x44\x65\x54\x7a\x00\x6a\x4c\x32\x36\x41\x14\x95\xda\x16\x60\x98\xaf\x28\x23\xa4\x59\xcf\x10\x0a\x1f\x3c\x92\xc6\x39\x0c\x60\x66\xcd\xbf"}, +{{0x4a,0xaf,0x2d,0x13,0x28,0x84,0xf3,0x0d,0x11,0x27,0xcf,0x18,0x7e,0xe0,0x93,0x88,0xb4,0xa5,0xc4,0x4a,0x9a,0x92,0x67,0xe6,0x72,0x83,0x17,0x39,0x89,0x51,0xfb,0x61,},{0x83,0x72,0x7e,0x92,0x57,0x34,0x91,0x28,0x55,0x9e,0xbf,0x75,0x9f,0xdc,0x82,0x12,0x2c,0xce,0x76,0x74,0x66,0x39,0xc0,0xad,0xa9,0x76,0x1f,0x0d,0x60,0xb9,0x40,0xb1,},{0x5f,0x11,0xdf,0x39,0x06,0xa7,0x12,0xa9,0x53,0xf4,0x7c,0x85,0x98,0x06,0xb5,0x23,0x73,0x58,0xd0,0x8b,0xa9,0x5e,0x49,0xf9,0xe5,0x30,0xa3,0x71,0x65,0x83,0x5e,0x93,0x59,0xd9,0x76,0x9d,0xc2,0x1f,0xbb,0x4d,0x44,0x49,0x7b,0x93,0x90,0x5b,0xca,0x8d,0x99,0x17,0xc7,0x28,0x49,0x3f,0xee,0x3a,0xcd,0x5b,0x52,0x1d,0xbd,0x1e,0x24,0x08,},"\xd7\x3e\xaf\x11\x41\x3b\xf4\xd5\xbc\xcf\x6a\x2e\x80\x9c\xd6\x83\x2a\x51\x82\x3a\xa2\x2b\xd1\x6e\x09\xcf\x56\xff\x04\x5e\xef\x2d\x1a\xda\xdd\xa5\x0c\x2e\xbd\x67\xbb\xc4\xd7\x0e\x49\x3c\x96\x8c\xb4\xde\x49\x77\x06\x5d\x44\x63\x30\x06\x94\xc9\xca\xa5\x72\x06\xd6\x66\x46\x93\xd8\x46\x2c\x3c\x57\x6b\x52\x5c\xc7\xac\xf7\x9f\x26\xf9\x05\x5a\x1b\xcf\xa7\xd0\x77\xf4\x5e\xbe\x0b\x2d\x48\x1e\xbd\x63\xf7\x34\x0a\x33\xe4\xab\x68\xf1\x60\x49\x75\xec\x1d\xfe\xc4\x5a\x79\x1a\x2a\xbb\x10\x44\xd7\x5a\x4d\xb5\x5a\xdf\x59\xb8\x39\x4e\xbd\xe6\x82\x4c\x21\x14\x5b\x00\xef\x3b\x1b\x08\xed\x11\xfd\x51\xdd\xa5\x14\xed\x7e\x21\xe5\x4d\xba\xf6\xab\xb6\xd9\xe3\x17\xfc\xf9\xfd\x37\x5b\x18\x76\x4e\x64\xac\x9b\xe5\xb0\x8f\xec\x3b\x78\xab\xba\xb1\xd1\x2a\x2a\xb0\x9d\x55\x9a\xcd\xc7\x13\x3f\xb2\xe0\x00\x8e\x0c\x11\x4b\x7c\xad\xb4\xbf\x76\x30\x78\x67\x4d\x03\xe9\xc8\x07\xbe\xc1\xe2\xca\x71\xad\xcd\xaa\x31\x0d\x58\x7f\xa5\x69\x50\xfc\x0f\xb2\xe9\x79\x04\x3d\x50\xf9\xae\x23\xfa\x8f\x82\x1c\xd9\xd6\x23\x27\x89\xd0\xee\xcc\xfc\x4f\x47\xe3\xad\x80\x4e\x25\xcf\x5a\x42\x5f\x94\x37\x7d\x17\x87\x48\x33\xe6\xae\x36\x38\x17\x8c\x78\xb7\x95\x19\xd6\x4d\x97\x93\xf4\x50\x46\x06\xa0\xea\xb6\x87\x07\xf6\xe1\xf7\xcc\xcb\x51\x5b\xe3\xd1\x20\x1b\xcd\x19\xf2\xf0\xe2\x55\xc7\x22\xea\xb1\x2b\x43\xaf\xf8\xc8\xc5\x56\x11\x25\xfb\xca\x1f\x65\x42\x07\x6a\x06\x15\x2e\xb7\xe4\xb0\x78\x63\x24\xc2\x49\x5e\x79\xd7\x9c\x0a\x8e\x29\x5b\xb2\xe3\xdf\xd0\x5a\x90\x33\x19\x00\x65\xa2\x84\x55\x2a\x6e\x73\x60\x06\xac\xe4\x1f\x97\xcc\x43\x4a\x25\x12\x05\x1b\x72\x7c\xe5\xbc\x9c\x4a\x75\x52\x9e\xc5\x3d\xd7\xd1\xf1\x26\xe7\x93\x85\x77\x47\xb5\xba\x8d\x03\x15\x5d\x45\x55\xf5\x9e\x8b\xaf\x2f\x0c\xdb\xa8\x71\xac\x16\x0e\x75\x19\xa8\x52\xdb\x00\x4f\x70\x16\x41\xa4\x0a\x42\x2d\x4c\x38\xb6\xc0\xc3\xcc\x8f\xbb\xd0\x53\x22\xdd\xc0\x00\x1f\xb8\x67\x28\x6e\x29\x6c\xbd\x69\x86\x2c\xbc\xcc\x74\x47\x03\x8e\xb3\x0f\x8a\x81\x23\xb7\xb3\x13\x73\x98\x47\x02\xc3\xbe\x45\x7a\x4b\x8c\x54\xe6\xe5\x28\x04\x85\xa2\xc4\xff\x84\x52\x1f\x29\x8d\xde\xb3\xb3\xb2\xbc\x91\xf1\x14\xdd\xce\x67\x03\x02\x48\x04\x44\x69\xdc\x06\xf3\x62\xf2\x91\x9a\x3f\xec\xe5\x08\x23\x75\xd0\x40\x80\x37\x6f\xe2\x19\xd9\xb4\x57\x5b\x1c\xf1\xc9\xec\x4d\xca\xc5\x74\x9f\xc7\x78\xf5\x15\xdd\xa1\x3f\xa0\xd5\x86\xc2\x64\xb9\xbb\x61\x50\x33\x10\x76\x2c\x78\x9c\xa1\x16\x08\xd2\xfe\xe6\x74\xc7\x0a\xc4\xfc\x6d\x5e\xbc\xf6\x8c\x4a\xb8\x9b\xd8\x45\x55\xfc\x00\x75\x23\xc2\x8a\x7e\x1d\xd0\x8a\x98\x62\x04\x4d\x52\x45\xb9\x1a\x87\x78\xec\x9e\xe9\x84\xa4\x1a\x9e\x13\xb7\xab\xd6\x57\xae\x2a\x46\xae\x86\x01\x52\xc6\x44\xac\xd9\x53\x67\x67\x8f\xf6\x4c\xc5\x40\x06\xe3\x66\x14\x80\x5e\xd6\x18\xa7\xc6\xd0\xfd\x33\xa9\x08\x52\x30\x90\x84\x1c\x23\x0a\xf0\x98\x46\xd1\x32\xbb\x4c\x6b\x60\xe2\x44\x1f\x9d\x3c\x49\x87\x14\xf4\x70\xf6\xbc\x03\xa8\x0d\x14\xa2\x94\xb5\x65\xd1\xd5\xe7\x81\xcf\xfc\xb1\x30\x4e\xfd\xbb\xc7\xbf\xea\xbd\xed\xc8\x57\xac\xc4\x2e\x27\x62\xbb\xf9\x7a\xf8\x39\xa1\x66\x75\x2d\xa2\x95\x67\x28\x17\xf1\x0d\xbd\x47\x2d\x38\x1f\x53\x16\x55\x55\xac\x82\x22\xa7\x85\x35\xa8\x68\x05\xf1\xbe\xd4\x22\x88\x9f\x20\x61\x09\xaa\x74\x77\x2e\xdc\x0b\xb5\x1e\x8a\x98\x40\xcf\x62\xc9\x2f\xa6\x35\xb9\x0c\xae\x07\x6d\xd5\x0e\x5a\xed\x9d\xea\xc8\x43\xfa\x8a\x6b\x53\x99\x88\x28\x5f\xf1\xad\xab\xe4\xc7\xb8\x3d\x9e\x29\xac\x2d\x94\x09\x2d\xaa\xfe\xc9\xf6\x67\x36\x89\xba\x9e\x92\x52\xd8\x64\xd7\x57\x7a\xa8\x95\x05\xd3\x31\xfe\x78\x09\x86\x12\x77\x00\x2a\x0b\x44\xa9\x6b\xa6\xae\x4a\x52\xb3\x54\x8b\xf2\x68\xe7\x77\x78\x0c\x00\x20\x9b\x24\x5f\x8b\x14\x17\xee\x5e\x70\x1a\x12\x33\x4a\xd5"}, +{{0x4b,0xc7,0xda,0xab,0xc5,0x40,0x7c,0x22,0x6d,0x19,0x20,0xdb,0x4a,0xfd,0x21,0xb2,0xa5,0xb3,0xe5,0x9b,0x8e,0x92,0x46,0x05,0x3f,0x6a,0x1a,0x6a,0xfa,0x54,0xe7,0xe7,},{0xdc,0x53,0x98,0x85,0xfc,0x7b,0xee,0x00,0x2a,0xc5,0xde,0xba,0xe1,0x6b,0xdd,0xbe,0x4b,0x55,0x3f,0xa1,0x5e,0x81,0xee,0x79,0x88,0x76,0x94,0x0f,0x38,0xcf,0xc4,0xc5,},{0xa7,0xa6,0x48,0x88,0x39,0xbb,0xae,0x04,0xde,0xc9,0x2f,0x96,0xd7,0x28,0xc4,0x64,0x68,0x5d,0x7a,0x96,0xdf,0x51,0x2b,0x00,0x51,0x16,0x3d,0x22,0x53,0x8f,0x74,0x54,0x6f,0xa9,0x86,0xb1,0xb6,0x0a,0x6d,0x8c,0xc7,0x66,0xa2,0x6c,0x69,0x84,0xc9,0xcd,0x26,0x88,0x39,0x58,0x98,0xe2,0xb2,0xae,0x72,0xdc,0x6a,0x2d,0x5a,0x9f,0x75,0x0e,},"\x6a\xcc\xe9\x98\x43\xb2\x41\xaf\xe6\xed\xd5\xd0\xab\x78\xd0\xfb\x21\xc8\xc3\x5a\xff\x88\x13\x89\xd5\x05\xf2\xf1\xdd\x91\xaf\x1e\xb2\xad\x22\x92\x54\x92\x7c\x7f\x0e\xcf\xb7\xa8\x14\x16\x90\x57\x3a\x65\x5d\x69\x85\x3d\x74\xd0\x70\x8b\xf8\xb1\xe6\x0a\x03\x96\x30\x28\xa6\x25\xb7\x9f\x3d\xfe\xa2\xb1\x13\xff\xca\xb4\x6f\x3c\xfd\x4a\x62\x1e\x8f\xd8\xff\x0a\x96\x81\x43\xb0\xae\x03\xcc\xb6\xf4\x2e\x25\xe2\xd7\x4d\xbf\x51\x5b\xc3\x58\x69\x9b\x63\x50\x09\xb0\x1d\x61\xfe\x59\x7f\x1d\xc2\xc3\x5a\x7b\xa4\x55\x52\x78\xee\x0e\xa4\x56\xc7\xd3\x5f\xa8\x75\x7a\x41\x79\x24\xb1\xd0\xa8\x35\x1f\x22\x6a\x13\xec\x29\xd0\x25\xb4\x26\x96\xec\x1d\x99\x25\xb7\x69\xcd\x59\xc8\xe2\xf9\xcd\x3c\xe4\xe5\xc0\x20\xe0\x51\xe7\xa3\x6f\x3f\x97\xc1\xe8\xec\x71\x97\x4b\xc1\x6a\xc4\xde\x46\x51\xad\x4d\xf2\xe9\xc0\xee\xd6\x86\x92\x42\x24\xfe\x6d\xe6\xc6\x0d\xd4\xac\xc2\x6e\x0a\xab\xd8\x0c\x21\xd5\x09\xd9\x59\xb8\x0b\x43\x53\x95\x8d\x00\xe4\x4c\x51\x1d\x23\xbc\xf4\x45\x52\x60\x8b\xfa\x56\xa9\xc5\xae\x79\xde\x62\xbb\x23\xf1\x1d\x74\x0f\x48\x24\x0c\x27\xe1\x01\x99\x97\x51\xf2\x53\x47\x42\xc0\xa6\x91\x3f\xf6\x4b\x68\x3a\x18\x99\x5a\xbc\x39\x3f\xeb\x9d\x57\xc7\x1f\x49\xa0\x80\x55\x72\x98\xcc\x40\x5d\x11\xb7\x98\x8d\x71\x16\x84\x0c\x5a\xda\xf5\x3b\xc6\x72\xb4\x69\x23\xcc\x45\x7c\x70\x39\x94\x0a\xd4\xd5\xbf\x07\x3c\x6c\x88\x6b\x13\x39\x52\x59\x26\xd2\x81\xdb\xd1\xa7\x97\x39\xb2\xe3\x64\x14\xcb\xd3\x21\xb1\x85\xfc\x88\xf1\x8d\x2f\x81\xc8\x09\x97\x5b\xe9\xa0\x93\x64\x4c\xc5\x59\xed\x2a\xe5\xcc\x0e\x35\xcb\xdd\x18\x11\xf7\x02\x86\x05\x7a\x3f\x70\x30\x67\xed\xdd\xf5\xeb\x16\x90\xa7\x42\x7b\xb7\x3f\xe3\x02\x4e\xd0\xdb\x82\xa5\xce\x8f\x17\x16\x42\x8a\x76\xfd\x29\x2b\xa9\x9a\x30\x0c\x4b\x2f\x36\x0d\xa2\x12\x46\x17\x59\x0b\x10\xe3\xb1\x62\xa6\xe6\x7d\xd5\xd5\xa5\x9b\xcc\xa1\x0f\x61\x0f\xa0\x64\xaf\xfd\x55\xf8\x48\x3b\x98\xa6\x8d\x07\x6f\x27\x8a\xbf\x88\x8a\x08\xa0\x14\xe0\xea\x49\x91\x80\xfb\xc7\x98\x40\xce\xed\x13\xcc\x6b\x24\x58\xbf\xab\x9b\x0d\xd7\xae\x9d\x86\x46\x1f\xe2\x15\xe7\xc9\xf6\x3f\x76\x8c\xee\x4a\x88\x2d\xf0\xdd\x84\xe3\xeb\x4f\x2d\x7f\x6b\x18\xfa\x57\xd8\xbc\x7d\x9a\xfb\x63\xc2\x1a\xc4\x65\xe7\x90\x3b\x9b\xfb\x86\x38\xa2\x93\x61\xf7\xeb\xfc\x6e\x54\xe5\x46\x5a\x6c\xef\x46\x3a\xe2\x26\x43\xae\x41\x02\x58\x77\x9c\xa7\x4b\x70\x40\x1a\x94\x55\xa4\xd1\x57\xd7\x4a\x70\x29\xef\xe6\xb5\x19\xa8\xc4\xbe\x69\x67\x56\xe0\x45\xae\x40\x81\xb7\x7d\xd6\x03\x1f\x0d\x25\x0f\xa7\x61\xe6\x0f\x85\x9d\x90\x63\xfc\x10\x5a\xa0\xa1\xa7\x45\x0a\xf1\x53\xe7\x05\x47\x77\x77\xc4\x42\x58\x6d\xf4\x07\x40\x2b\xa2\x38\x75\x2f\xae\xf7\x4f\x33\x45\xc2\x6a\x45\x33\xbe\x9a\x61\xf5\xfc\x6b\xde\x48\xe3\xcb\xa7\x5c\x04\xd6\xf7\xb3\x33\xe3\x70\x06\xdd\x0c\x94\xfd\x3b\x6a\x13\x0b\xd6\xfc\xdb\x3c\x6a\xbe\x21\xca\x60\xeb\x43\x1c\xc2\xd8\xa2\xec\xe7\x16\x9d\x2d\xcf\xce\x27\x60\x82\x56\x57\xfd\x4c\x26\xf3\xc3\xb8\x30\xac\xdf\xd5\x08\x01\x1d\x14\x76\x4b\x3b\xe9\x17\x15\x57\x1a\x31\x83\x01\x8e\x0d\x22\x1f\xb9\x53\x2b\xb2\xe1\x71\x1e\x72\x5a\x27\x3a\xe0\xcc\x2f\xac\xcb\xa7\xd5\x50\x49\x29\x45\x9c\x99\x25\x17\xb0\x5c\x1d\xdd\x03\xaa\xcc\xd9\x37\xb8\x6e\xb6\x7b\xc8\x20\x2d\x01\xca\xb3\xd4\x89\x58\x6e\xea\x1a\xcc\xa7\xdc\x20\xcd\x0b\x64\x75\xc2\x58\xff\x67\x36\x61\x49\x6a\x22\xea\x96\xb8\x9d\xb4\xbf\x3f\xca\xae\x3b\xb0\x4f\x67\xdb\x09\x6a\x47\xff\x7e\x1e\xe2\x39\x56\x2d\xc1\x0d\x40\xf0\x53\x94\x4f\x3d\x7b\xcc\x3f\xf4\xc0\xff\x76\x56\x54\xba\x5e\xa6\x4f\x0e\xa6\x3e\x45\xa2\x1d\x9b\x12\x94\x9f\x14\xf7\xea\x70\x74\xe9\xb6\x59\xc5\xc5\xd4\x48\x16\x84\x2d\xe8\x96\x98\xa8\xfc\xca\xce\x43\xeb\x6b\x41\x35\xe0\xb3\x33\xac"}, +{{0xf2,0x6a,0xf2,0x10,0xe3,0xb2,0x01,0x73,0x99,0x0c,0x77,0x45,0x92,0x2c,0xdf,0x94,0x24,0x77,0x3a,0xbb,0x37,0x4d,0x77,0x7a,0x51,0x2c,0xf5,0xb9,0x7b,0x3a,0x00,0x0d,},{0x54,0x58,0x6a,0xbf,0x04,0x11,0x76,0xe0,0x6a,0xec,0x5b,0x60,0x10,0xe1,0x90,0x91,0x6d,0xa5,0x4a,0x8c,0x4b,0xde,0x28,0x8c,0xf2,0x4d,0x8c,0x10,0x7c,0xb3,0xb7,0x30,},{0xce,0x45,0x45,0x30,0xb9,0x22,0xba,0x5e,0xa1,0x62,0xf1,0xa4,0x52,0xe0,0x5c,0x00,0x36,0x3a,0x49,0xa9,0xdb,0x8a,0x56,0x94,0x97,0xc0,0x0c,0xaf,0x1c,0xbe,0xa9,0x91,0x80,0x77,0x05,0x54,0xed,0x4e,0x31,0x40,0xdf,0xca,0x45,0x55,0x15,0x9e,0xbf,0x48,0xef,0x5d,0x2a,0x50,0xf3,0x94,0xae,0xbd,0x78,0x21,0x16,0xed,0x65,0x69,0xa4,0x09,},"\x88\xe2\x6d\xa3\x5c\x54\x88\x4b\x47\x14\x6f\x4e\x3f\x01\x4a\xb6\x5b\x3d\x71\xaa\x7e\x3c\x33\x91\xad\xbe\xb1\x9e\xf2\xe7\xb9\x30\x2e\x28\x19\x91\xb2\x61\xb6\xa0\x99\x2e\x2e\x89\xa4\x9f\x48\x0c\xa2\xd8\xe6\x84\xb1\x2f\x9b\x15\x09\xb3\x8f\x6a\x7a\x98\xa5\xdd\xb4\xc2\xd8\x69\xfd\x03\x18\xe9\x8e\xcd\x8f\xd9\xdf\x49\x1b\xaf\x99\xa9\x29\x4d\xe4\x9e\x1c\xf8\xdd\x41\xee\x85\x73\x0a\xf0\x25\xa7\x01\x14\x3e\x4f\x0c\x8e\x3d\x92\xd5\x5b\x59\xca\x7d\x4a\x6c\x89\xad\x76\x0d\xff\xc0\xc2\x18\x92\x09\x50\x8e\xf6\xc2\x21\x4e\xdf\x99\x67\xb1\x7d\xef\x12\x3d\x86\x92\xc9\xe4\xe2\x0b\x1e\x98\x26\x88\x08\x70\x4f\x5f\x9f\xe1\xa6\xd6\x05\x5e\x32\xc8\x72\x56\x4b\xd1\x7e\xdb\x73\x59\x57\x86\x29\x01\x7f\x0c\x30\xfe\xab\x8b\x50\x4e\x22\x89\x23\xad\xc7\xe8\x1a\xe2\x0a\x85\x2d\xb0\xad\x67\x6a\x78\xe0\x81\x33\x6d\x6b\x04\x02\xf9\xcd\xc5\xd5\xe9\x01\x28\xca\x94\x5d\x10\x51\x5c\xa0\xc5\xef\x03\xf7\x31\xb1\xd4\x0a\x71\x07\x41\xd4\x1c\x1d\xd1\xca\x16\xb1\x06\x0f\xeb\xf2\xa0\x53\x2e\x6f\x5d\x76\x51\xef\x44\x63\x75\xec\x18\x09\x0c\xb8\x41\x8b\x82\x02\xf2\x5a\x03\x89\x03\x1b\x30\x7f\x22\x3c\x5b\x5f\x6a\xfe\x36\xa9\xad\xc1\x06\x8f\x2c\x6e\x0e\xa5\xb2\xb6\xcf\xeb\x8d\xc0\x04\xf7\xb8\x29\xc8\x04\x39\x06\x9b\x81\xa7\xbd\x90\x74\x77\xc6\x13\x5e\xf2\x82\xb7\x71\xf1\x41\xdb\xe7\x5a\x0f\xa0\x56\xe0\x6b\x8a\x1a\x1f\x98\xc2\x5f\xa5\x4d\x14\xc8\xfd\xb4\x2d\x65\x02\x59\x5c\x59\xd2\x5b\xac\xf1\xa1\x9a\xde\xfc\xc1\x31\x70\xf7\xa4\x31\x7b\x6a\xb6\x10\xb6\x09\xd4\x14\xb0\x07\x3e\xa0\x4a\xc2\x9e\xb1\x0e\xe7\x3c\xd7\x1a\x4c\xa6\x04\x09\xf8\xe7\x60\xe6\x0f\x93\x95\x10\x10\x0d\x0c\x8c\xd7\x6f\x26\x4b\xb3\x78\x11\xf9\x7a\xa5\x29\x9a\xc0\xb1\x2d\x41\x68\xff\x38\xec\xdf\xa8\x0b\x1e\x5c\x1b\x3b\xbd\x4d\x40\xd3\x54\x47\x35\xdf\x71\x67\xeb\x15\x8a\x9a\x9a\x23\x4d\x44\x5f\x1d\x66\x3d\xed\x71\x71\xed\xc6\x8d\x17\x2c\x92\x21\x4b\x82\xef\x13\xfe\x6b\x8c\x43\xaa\x89\xb7\x39\xb4\x99\x0a\xe9\x47\xa3\x4f\x02\x0a\x8d\x89\x43\xb0\xf7\xa5\xd6\x1d\xfa\x76\xad\xde\x02\x72\xe9\x8c\x11\x59\xc0\xfd\x8a\x1d\xe3\x3f\x2c\xef\x8e\xdd\x32\x85\x7b\x21\x89\xed\x96\x12\x80\x57\xeb\xde\xa8\x1f\x7a\x3a\x3d\xff\xe1\x89\x3b\x5b\xa8\x77\x55\x6c\x90\x38\x3f\xa2\xc5\xa6\xfd\x68\x0e\x8a\x67\xde\xe4\x80\x2d\x90\xdf\xe9\x71\x62\x3a\x7b\xe2\x2a\xb3\xca\x56\x06\x7b\x1e\x5c\x69\x4a\xa8\x4c\x19\xf1\x6d\x69\xe2\x84\xdd\xfa\x03\x9c\x10\x8d\x04\x35\x81\x38\x12\x39\x0d\x8e\xbc\x1e\x50\x13\x81\x76\xf2\x59\xdc\x0f\x26\xbc\xa1\x3b\xc9\x43\xf5\x0d\x5a\x35\x00\xb1\x8d\x59\x35\x74\xc6\x20\xfc\x09\x7a\xce\x43\x0f\xb8\x07\x28\xd3\xa1\xaa\x64\x4e\x50\x4b\x10\x09\xad\x67\x53\x6c\xeb\x01\x1f\x2a\x35\x7d\xbd\x00\x9e\x4a\x63\xf5\x24\xd5\xb5\x95\x7f\x33\x15\x67\xc5\xb4\xd1\x85\xa6\x1d\xf2\x2d\x70\x71\xd3\x1a\xe9\x21\x41\xe1\x99\xc1\x22\x89\x51\x5a\xed\x80\xc9\x10\x21\x45\x6b\xcd\x45\xcc\xc6\x34\x03\x7d\xcf\x69\xb4\x1d\x6b\x1f\xf5\x34\x71\x01\x0d\x99\xf1\x87\xf0\x46\x54\xf4\x36\x22\x28\x78\x71\xfe\xe6\xdc\xf5\xf3\x02\x3c\xbd\x09\x13\xd9\x9a\xff\x43\xfa\x95\xb3\x2e\xa2\xb1\x33\xb4\xc9\xac\x4b\x01\x7b\x7c\xf8\xf9\xbe\x50\x86\xfe\x92\xb4\x2c\xb8\xdb\xed\x5b\x63\x0b\xf0\x97\xc1\x8e\x2e\x55\xc3\xdd\x93\x27\x1e\x09\xc2\xd1\xcc\x6a\xf8\x7d\x83\xfd\xef\x3c\x3e\x3c\x4c\xba\xfb\xea\x9b\x60\xfd\x5e\x9c\xf0\x01\x1d\xe2\xe9\xe2\x6f\xbf\x09\xaf\xee\xf5\xc6\x98\x02\xa6\xc4\x6b\xdf\x54\xc1\x45\x86\x29\x44\x17\x3e\x01\x7e\x30\x14\x9e\xa5\xc0\x3c\x7a\xef\xa2\x8a\x9c\xac\x77\x67\x00\x2e\xa3\xfe\xfb\xde\xae\x5b\xae\x00\x5c\x37\x0d\xbc\x06\x42\x44\xd5\xb9\xbe\x55\x00\xa3\x57\x26\xa9\x9b\xc9\xe8\xc2\x75\x2d\x51\x0e\x13\x9a\xf2\x25\x58\x00\x98\xc8\x18\x9a\xa9\xc5\x20"}, +{{0x39,0xbf,0xfe,0x00,0x7f,0x8d,0xf7,0xce,0x4e,0x56,0xfd,0x17,0x6b,0x10,0x2b,0x92,0x3b,0xa4,0x8a,0xeb,0x82,0x69,0xfd,0x0c,0xd5,0x20,0xc2,0x3a,0x7b,0x23,0x6e,0x6c,},{0x95,0x32,0x63,0x68,0x00,0x01,0x0b,0x3d,0xd4,0x01,0x2e,0x34,0x1f,0xca,0xd6,0xd2,0x9a,0xfa,0xd4,0x84,0xe6,0xfd,0x73,0x6e,0x89,0xd5,0xbc,0x02,0xba,0x0a,0xc8,0x53,},{0xa2,0x7c,0xca,0x4b,0x9f,0x5b,0x95,0xad,0x0e,0x44,0xe4,0x74,0x0c,0x15,0xde,0xae,0xb9,0x3f,0x22,0xa9,0xb2,0x54,0xeb,0xbd,0x23,0x29,0x36,0x5a,0x00,0x96,0x6c,0x9f,0x4e,0xc1,0xe5,0x5c,0x58,0x94,0xe7,0xbf,0xc2,0x3d,0x39,0x8d,0x39,0x70,0xb9,0x46,0x5e,0x98,0xa8,0xd2,0x3e,0x72,0xda,0xe8,0xe3,0x50,0xda,0x35,0x31,0xae,0x69,0x08,},"\x7a\x8c\x20\xbf\x2e\xff\x69\xaf\x8b\xad\x6b\xdf\xab\xc7\x90\x9c\x58\xce\x74\x6c\xc4\xdf\x78\xb6\x9b\x33\xc1\x05\xba\x3b\xd8\xda\x75\x24\x47\x58\xb5\x17\x2d\x5c\x45\x01\xbc\x39\x97\x01\x85\xee\x3d\x43\x70\x83\xa9\x95\x9f\x81\xe7\x66\x5b\x82\x9a\x69\xa5\xd7\x2e\x03\x4d\x35\x1a\xdd\xdc\xeb\x3d\x3f\xff\x58\x99\x88\xdf\x18\x2b\x46\xfa\x53\xd2\x6e\x7c\x9e\xac\x06\x22\x15\x78\x8f\x23\x37\xbf\x90\xf0\x17\x7d\x8c\xa7\x44\xf9\x5f\x28\xfe\xa8\x54\x59\x3c\x43\x62\xc8\x2e\x9d\xed\x19\xb9\x04\xff\x99\xd2\xbe\xa8\x24\x32\x82\x2e\x52\xc3\xda\x6d\x46\x2d\xa7\x54\xff\x1f\x8b\xd1\x09\x94\x2d\xf5\x1d\xba\x25\xb7\xcd\xe8\x38\xd5\xf5\x24\x23\x9f\x13\x31\xf4\x63\x19\x4e\x10\xff\x56\x79\x5b\x29\x68\x78\xfe\xb1\xf5\x5d\x43\xec\x7d\xaf\x0c\xa5\xab\x3d\x68\x4b\x55\xbb\x0a\xa4\xc7\x20\xd4\xb5\xc2\xe8\x30\xc8\x58\x69\x4d\x3d\x0f\xdb\xaa\xd0\xbf\x67\xd8\x73\x18\x2d\x95\xb2\x41\x2f\xce\x5e\x7b\x00\xfa\x6b\xfc\x38\xb1\x32\xef\xb9\x6f\x87\xbc\x6c\x10\x07\x0a\x57\x16\xec\x9b\x33\xa2\x69\x2c\xdf\x5b\xc4\x1c\x7f\x73\x7e\x28\xc4\x22\x03\x17\xa4\x89\xb7\x32\x3d\x5e\x20\xf6\x5d\x37\x5d\x76\x9f\x9e\x79\x37\x6f\xd0\x2d\x85\x36\x86\x71\xe7\xe0\x81\xeb\x75\x3f\x88\x85\x45\xeb\xe5\xc0\x00\xb2\xf8\x01\x43\xeb\x35\x8d\x43\x18\x5e\x2f\x1c\x29\x4b\x9f\x29\xc8\xbb\x91\x48\x2d\x43\x87\x49\x4a\xad\x17\x6d\xeb\x85\x54\x0f\xd0\x05\xc9\x7d\x13\xe6\x66\x3f\x09\x94\x4e\xb4\x3a\x46\xe6\x23\x67\x94\xbf\x6e\x21\xf8\x1d\x0a\x42\x09\x0f\x9c\xce\xf9\x0a\x6c\x48\x07\xb5\xff\x54\x13\x00\xe5\x93\x48\x81\xa8\xd9\x21\x96\xb4\xce\xe8\x5d\x28\x09\x2a\x82\x8e\xa3\xbf\xc6\xb7\x45\xad\x21\x9b\xe9\xf5\xe9\x57\x41\x17\xd0\x79\xe0\x2f\x4b\x74\x8e\x2c\xc0\x1a\x32\x82\x6a\x37\x08\x23\x19\x14\xd2\x77\x2c\x76\x41\x19\xfd\x99\xd5\x3a\xb5\xb5\xa2\xe9\xd8\x91\xa4\x8a\x9a\xaa\xac\xc2\x63\x38\xb1\x82\x48\xdb\x8a\xb2\xd5\x25\xda\xf1\x5f\xf5\x3a\xcb\xc3\xaa\x98\xd4\xf2\xd4\xa3\x37\xbb\xaf\x6d\x1b\xe2\x19\x85\xa4\xaf\x60\x0e\x29\xbb\xb4\x2c\x8d\x89\xe6\xb3\x89\xc6\x6f\x42\x27\x0c\x3a\x0b\x05\x1b\xdb\x62\x38\x81\xe0\x2f\x2f\x42\x94\xce\xc3\x47\x63\x86\x74\x7a\xba\xe6\xc7\x70\x0b\x8f\x9b\x03\x87\xcd\xdf\xb7\x36\x68\xfb\x57\x69\x3d\x84\x74\x19\x6b\x33\xab\xd1\x2d\xce\x59\xa5\x7c\xf7\x2e\xe6\xcc\x1d\xdb\xaa\xdf\xb1\x9e\x90\xaf\x81\x31\xb3\xa9\x0f\x98\x67\xf4\xc7\xe1\x5b\xdf\x9e\x21\x84\x77\x01\x6b\xd0\xad\x3b\xe8\xdd\x05\x96\x71\xff\x65\x6c\xbd\x4e\xd8\x98\x08\x6d\xe4\xd4\x23\xf3\xdf\xb2\x70\xbb\xf1\x9d\x9f\x53\xf7\xf6\xf2\xd2\x2c\x6a\xc9\x02\x5c\xba\xdb\xa4\x42\xe3\x1d\x98\x11\xe3\x7e\x84\x7d\xbd\x48\x4d\x80\xcf\x74\x30\x39\xff\xa7\x04\x84\x70\xfb\xdc\x60\x80\xf6\xd3\x81\xdc\x7e\x3f\xa2\x71\x22\xdf\x53\xcc\x06\x39\x4e\xa6\xfc\x44\x6e\x1b\xa7\x25\x38\x73\x3e\xd3\xab\xb6\x85\xf1\x6d\xfd\x5c\xcf\x58\x5a\xe8\xfb\xf9\x95\x4b\x50\xf1\x0b\x7e\x54\x32\xa2\x2b\x36\x94\x06\xa9\xb7\x08\x89\x61\xf0\xae\x20\x74\x95\xae\x71\x85\x39\x6d\xcc\xf2\x92\xdc\x46\x3f\x41\xf3\x76\xa1\xca\x89\xee\xfb\xae\x19\x26\x91\x52\x03\x1b\xfd\x81\x52\x88\xe8\xb5\xba\xf3\x48\xc4\xf8\xff\x3d\xff\x4f\xd6\xd1\x08\xf8\x71\xda\xa3\x52\x11\x0f\xa6\x41\x88\xb0\x1b\x85\x26\xa8\x45\xaa\xed\x13\x3e\x45\x6b\x4c\x83\xc4\xfd\x4b\xbb\x16\x5b\x40\x90\x30\x7e\x8e\xb1\x7d\xf1\x76\xc3\x22\x52\x0f\x37\x59\x9c\x21\x05\xaa\x81\x20\x75\x83\x94\xa4\x22\x24\x73\x47\x67\x64\xcf\x0a\xf7\xc5\x51\x83\xeb\xa9\x68\x3d\x72\x70\x63\x14\x43\xf3\xc5\x1f\xb8\xab\x0c\x13\x0a\xc4\x36\xab\x60\x3f\xf4\xf1\xd8\x65\x6c\xdb\xed\x22\x9a\x20\x2b\x40\x00\x8e\xa1\x0b\x17\x15\x42\xf7\x4a\x70\xb7\xbb\xac\xc4\x01\x6b\x7f\x63\x6a\xa8\x96\x33\xb7\x66\x80\x58\xf1\x33\x12\xf5\x7c\x51\x62\xd1\x8e\x39\x9e"}, +{{0x3c,0x40,0x80,0xcd,0xa0,0xfc,0x3c,0x03,0xb6,0x14,0xd9,0x80,0xf2,0xff,0x83,0x1f,0x5b,0xe0,0xe7,0xa9,0x81,0xd5,0x38,0x1a,0x16,0x18,0xe0,0xb8,0xfd,0x00,0x17,0x76,},{0xf1,0xc3,0x26,0x9d,0x87,0x04,0x02,0xca,0xa4,0x38,0x82,0x13,0x5d,0x9d,0xba,0xdb,0xbb,0x16,0x2d,0xfc,0xa0,0xb3,0xda,0xd1,0x97,0xe6,0xb8,0xa7,0xee,0x67,0x9a,0x70,},{0xc9,0xd4,0xa4,0x72,0x8b,0x8f,0xdd,0x24,0x0d,0x9c,0x49,0x8a,0xa3,0x5d,0xe9,0x5a,0x4b,0xbd,0x51,0x78,0x5b,0x73,0xc8,0x40,0x3f,0xdf,0x04,0x0d,0xfa,0xed,0x94,0x47,0xef,0xad,0x00,0x69,0xb6,0x7c,0x78,0x3d,0x4b,0x81,0xd9,0x66,0xbe,0xf6,0xe3,0xd9,0xa8,0x08,0xa0,0x58,0x4b,0x98,0xec,0x2b,0x18,0x32,0x2c,0x4c,0x92,0x0e,0xb0,0x0a,},"\x0c\xee\xbc\x0e\x8a\x47\x72\x0f\x25\x83\x5e\x2b\x9a\xcf\x89\x1b\xcc\xa4\xbd\xa3\x86\x37\xf3\x63\x27\x44\x58\xba\xa9\xe2\xbb\xaf\xed\xd0\x93\x8f\x56\x88\x73\x4e\x22\xac\x50\xfb\x12\x0f\x66\x5f\x6c\x4c\x61\xc6\x53\x17\x39\xb9\x29\xac\x83\xcd\x77\xf8\x96\x3b\x75\x44\x88\xb9\xb8\x59\xc1\x38\x53\x63\x7c\xf0\x25\xc1\x4e\x8f\xdd\x11\x8f\xaa\x14\xcf\x39\x30\xce\xb3\x5f\x10\x4d\x95\x44\x1e\x56\x48\x94\x40\xf6\x20\x41\xef\x1a\xa7\xc4\xb0\x8b\x28\x07\xe3\x2b\xb9\x58\x4b\x90\x04\xd7\x6e\x76\x53\x33\x48\x50\x6d\x64\xf1\x12\xe1\xff\x6f\x93\x8f\x64\x22\x30\xbf\x38\xaf\x01\x0e\x41\x98\x72\x70\x24\x8b\x13\x63\x5a\x35\x67\xb3\x55\xbb\xa5\xb5\x74\x48\xc6\xd1\x3b\x74\xf3\xbe\xbf\x61\x79\x15\x82\x10\x28\xfc\xa5\xde\xfa\x4c\xe5\x42\x4c\xa1\x91\xcd\x54\xa2\x29\x44\xa3\xd9\x40\xe4\xee\x2e\x2b\xa5\xd5\x04\xc8\x5f\x95\x9b\x51\x4c\x4f\xab\x41\xcc\xb5\x74\x3d\x9c\xb2\xf9\xbf\x33\xd1\xd8\xc2\xa5\x86\x9e\x9f\x46\x60\xc3\xfb\x22\x4b\x39\x14\x1e\x31\x10\xc9\xee\x8a\xeb\x87\x1e\x14\xc6\x2c\x6b\xe3\x8f\xb9\xa4\x56\x8d\x73\x68\x10\xbb\x9d\x20\x73\x17\x8b\x6c\x7e\x87\xe3\x58\x2e\xfc\x62\xb5\x3c\x23\xc5\xd4\x65\x20\xba\x33\xff\xb3\xa9\xca\x64\x9e\xf2\x6f\xe7\x4a\x3c\xff\x61\x88\x42\x73\x26\xb8\xc9\x6f\x74\x35\x4c\xb3\xec\xaa\x61\x1b\x12\xcd\xed\x56\x5e\x59\xfe\x1f\x8f\x40\x00\x97\xe9\x3e\xa8\x59\x51\xb5\xb4\xe9\x00\x9e\xea\x7d\xb9\x37\xe4\x34\x9c\x4e\x5e\x00\xc4\x45\x6c\x6c\x5f\x4e\x57\x41\x1b\xaf\x4e\x46\xe7\x00\xac\x40\x02\x57\x76\x5f\x48\xda\xb0\x3e\x43\x9f\x76\xc1\x49\x9b\x51\x08\x04\x7c\x83\x01\x09\xdc\xe7\xf7\x40\xd1\x39\x37\x87\xe2\x9d\x37\x16\xd3\xc4\x7e\x75\x5c\xb8\x28\xe7\xd4\x40\xa9\x71\x97\x51\x97\xeb\xdb\x3f\x9b\x73\x7b\xa1\x1f\x7f\xd0\x38\x6a\x95\x92\x49\x01\x7d\xe7\x23\x4d\x5e\x5a\x9b\x47\x3b\xb9\x58\x3a\x37\x42\xc7\x74\xee\x55\x2a\x12\xa1\xf3\x6e\xb3\xf2\x6c\x88\x5b\xed\x22\xe9\x1c\x74\xcf\x32\xa8\xdd\x3e\xdb\x08\xb6\x74\xbf\x38\x6e\xf4\x27\x72\x79\x12\xd5\x7c\x5f\xaf\xaa\x1c\xfe\xb7\x40\xcd\x52\xb9\xde\xe9\x95\xe3\xd0\x16\x1c\xd9\x21\x3f\x38\xfd\x68\x1d\x53\x8a\xb8\xbf\x97\xb7\x45\xf5\x49\x80\x03\x0e\xf8\xb7\x26\x96\xd4\xe2\x74\x73\xfb\x0f\x1a\xcd\x5d\x0a\xae\x02\x97\x21\x16\x80\xea\x0f\xc5\x9d\x7b\x6d\x51\xc6\x32\x92\x58\x5a\x1d\x55\x3d\x0c\x89\x54\xb4\x2a\x4b\xd6\xfc\xd3\xa4\x95\x75\xbf\x5c\x88\x95\x3f\x1f\x4e\xa7\xfe\x0e\xd7\xa5\x79\xd1\x69\x7e\x64\x5e\x2a\x61\xc6\x9d\x1a\x56\xbc\x60\x5b\xb0\x40\x60\xa2\x77\x8d\x50\x9a\x8a\xad\xbf\x35\xd9\x46\x97\xcc\xee\x9d\x35\x43\xdd\x01\x28\x1a\x03\x1f\x2a\x0e\xb3\xa9\xeb\x13\xae\x56\xff\x44\xfa\x0a\xed\x4f\x34\x88\x74\x7d\x6a\xf8\x20\xf3\x98\x9b\x71\x33\xf4\x49\xea\x56\xd3\xa7\xf7\x31\xe7\x91\xb7\xed\x2a\x5d\xb9\x39\xbb\x75\x35\x2d\xe7\xda\xec\x50\x66\xfd\x57\x55\x71\x65\xad\xff\xa6\x31\xcd\x3f\x96\x7c\x3c\x7c\xfc\x11\xcc\x1f\x14\xfa\x23\xde\xfe\xc3\xeb\x02\x39\xb4\x5e\xd6\x01\xa3\xa8\x07\x8c\xcf\xc7\xf8\x38\x09\x02\xa8\x59\xee\x9c\xe2\xdb\x79\x5e\xfa\xca\x0a\x01\xdc\x08\x79\xd5\x06\xac\x97\xd1\x07\x04\xd7\x75\x7b\x3c\xcf\x3b\x37\xc3\x39\xb4\x2d\xb2\x37\x82\x27\x80\x23\xe4\xc2\xe7\x7d\x74\x24\x6c\x9e\x54\x41\x49\xa5\x5c\x0c\x92\x0e\xbf\x29\x86\xb4\xc5\xb4\xb3\x57\x2f\x74\x8c\x4b\x15\xc7\xf8\x63\x99\x9b\xc5\x13\x2a\xda\xd0\x97\x61\xeb\x76\x50\x50\x19\x76\x9f\xb5\x54\x22\xf6\x03\x18\x4e\x24\xc0\xd4\xf3\x76\x19\x87\xb5\xc5\x0f\xea\xfc\xce\x53\x30\x2a\x3a\x41\x5e\x20\xf5\x6a\x05\x48\x03\xe5\x53\xba\xcd\x24\x2a\x5e\x13\x64\xaa\x3b\x2d\x7c\xb3\xbc\x1e\x1b\x86\xa4\x74\x31\xcb\xd3\x96\x95\xb6\x7f\x55\x4c\x46\x45\xb7\x23\x69\x04\x09\x4c\x11\xaa\x1b\x40\x32\x6b\xa9\x1b\x8b\xf4\x87\x3e\x9a\x4d\xe0\x4e\x2b\xf4\x62\x59\x72"}, +{{0x45,0x43,0x8f,0x91,0x46,0x5d,0x74,0xa2,0x82,0x5b,0x0f,0x66,0xa3,0x5b,0xd7,0xc8,0xd0,0x05,0x86,0x54,0x79,0xb3,0xdc,0x10,0xa9,0xb5,0x6f,0x29,0x7d,0x31,0xb9,0x26,},{0xf0,0x92,0xb5,0x88,0x03,0x30,0x87,0x1e,0x5a,0xaf,0xdd,0x3c,0xeb,0x38,0x50,0xee,0x7e,0x09,0x41,0xa2,0xa1,0xdc,0x89,0xf4,0xfb,0x47,0x71,0xd7,0x5a,0x22,0xf6,0xf2,},{0xd9,0x28,0x7b,0x7f,0xec,0x01,0x7f,0x2e,0xa4,0x0a,0x14,0xa1,0xf6,0x2d,0xca,0x78,0xb0,0x2a,0x3d,0x66,0x32,0xdf,0x7c,0x60,0xeb,0xd9,0x0f,0xc5,0xe4,0x92,0xc5,0xc6,0x2c,0x43,0x16,0x6b,0xf8,0x56,0x58,0xfb,0x30,0xa0,0x8b,0x57,0xa5,0x81,0x31,0x21,0xb8,0x03,0x97,0x57,0x1a,0x31,0x2b,0x6d,0xd1,0x1b,0x65,0x39,0x20,0x54,0x16,0x02,},"\x30\x71\xd4\xb7\x20\xdf\x10\x93\x65\x99\x67\xcd\x4e\xef\xef\x2e\xf9\x67\x84\x75\xf7\xde\xc5\x8f\xec\xec\x1d\x92\x8d\xea\xf8\x02\x45\x7a\x19\x34\xe6\x04\x55\xf4\x96\xcf\x42\x51\x82\x0e\xd6\x0a\x3d\x81\x33\xb6\x24\xd3\x3a\xf2\x6a\x26\x27\x84\xb5\xa2\xfb\xa7\x3c\xca\x2a\xa5\xe5\x19\xe1\xf5\x39\x58\x47\x80\x64\x98\x64\xba\x5f\xbc\x1f\x01\x1d\xdd\xac\x38\x1f\x8d\x48\xd0\xd6\x0c\xe8\x23\x17\x01\x17\x3c\x9d\x2a\x30\x7a\x76\x30\x2e\xbc\x69\xdc\xbc\x93\x0d\x28\x43\x14\x75\xb5\x16\xf9\x8f\x77\x8e\xd2\xe1\xff\xf2\x72\x90\x9a\x27\x2c\xc3\xfb\xb6\xb3\x1c\x80\x41\xa3\x7c\xb7\x77\xe0\x62\xe4\x96\x49\xaf\xad\x12\xc1\xb5\xf7\xfc\xb8\x06\x5a\x99\xe7\x42\x33\x62\xad\x16\x90\x60\x31\x26\x5d\xb7\xe8\xb8\x97\x51\xf8\xa4\xa4\x07\xf2\x50\x26\x50\xfe\xd7\x53\xe4\x2c\x8c\x91\x1e\x50\xb9\x4b\x38\x00\x69\x5b\x0e\xba\x7d\xff\x06\xb7\xa7\x10\x11\x7e\x49\x20\xd4\xb1\xc6\x05\xa3\xeb\xf3\x2e\x06\x96\x67\x16\xed\xa1\x4b\x30\x42\x99\x8a\x3c\x7a\x5e\x9f\x83\x54\x2d\x7d\xde\x65\xe5\x28\xbe\xd6\x10\x1d\xeb\x33\x1d\xeb\x94\xcd\xd4\x60\x44\xbe\xf8\x8c\x09\x7b\xaf\xd4\x0d\x69\x21\xa7\xc4\x84\xc8\xf9\x66\x84\xdc\x37\x16\x71\xd9\x4e\xee\x7c\xbe\x5d\x58\x77\x15\x31\x4c\xff\x0d\x18\x77\x27\x2d\x81\x90\xa9\x0e\x18\xbf\xb3\x21\xd5\x2b\xf7\x47\x05\x13\x7b\x2a\xbf\x91\x65\x73\x17\x67\xa1\x3a\xdc\x9c\x85\xe0\x39\x7b\x47\xae\xf9\x6b\xad\xb2\xca\x7f\xcb\x82\x93\xb0\x1f\xd1\xde\x31\x6e\xe1\xe6\x5f\x35\x6b\x9d\x6e\x8e\xa1\xfd\xd8\x37\xbd\x96\x08\x11\x49\xea\x2d\xcd\x73\xc4\x88\x1f\x32\xb7\xde\xeb\xc3\x71\x5e\x2d\x7c\xdb\x64\x3e\x0d\x98\xf4\xe8\x46\x50\x8b\x04\xb3\x24\x39\xff\x14\xb1\x16\x4f\x46\x84\x6d\xf9\xaf\xae\x44\x46\x4c\xf5\x50\x10\x4c\xd3\xaa\xb3\x81\x75\x40\x47\x0a\xaa\x2a\xb9\x55\x9a\x68\xb7\xff\x6b\x1b\x9c\x0c\xe9\xf5\x86\x9c\xbd\xcd\xd6\x17\x09\x09\x42\xe3\x53\xb4\xc7\x7f\x09\x39\x58\x96\xbe\xcd\xdf\xf1\xab\x7f\x07\x58\x6a\x51\x4d\x81\xfb\x09\x63\x61\x55\x75\x66\x87\x0f\x16\x91\x98\x34\x85\xa8\x0c\x34\x13\xda\x98\xb8\xd1\x9c\x78\xe6\x37\x9f\x94\x3e\x5b\xd5\xa5\x69\x7a\xa3\x3c\x5e\x6b\xfc\xfb\x7b\x8d\xf1\xe1\x57\x4e\xe4\x16\xfa\xb3\xc8\xa7\xd0\x88\xb3\xa0\x57\xcf\x86\x53\x21\xb7\x4e\x61\x03\x52\x6d\xd9\xad\x15\xca\x5a\xd3\xc0\xf6\x97\x18\xe2\x70\x81\xd4\xb3\x4a\x7c\x6d\x1a\xab\x6b\x96\xc0\xa7\x54\xb9\x89\xb4\x94\x06\x38\xc9\xed\xe3\xd1\x7b\xd4\x9f\x65\xbf\x78\x3d\xc8\x5f\x1c\x4b\x14\x48\x76\xcd\xbd\xb2\x28\x2a\x95\x64\xaa\x81\xb5\x70\x92\x08\x0d\x64\x48\xfb\x65\x80\xec\xf0\x9f\x82\xa7\x55\x01\x0d\x55\xd4\xa5\xe4\xf3\x05\xe2\x59\xdb\xe9\x95\x08\xb4\x79\x25\x0d\x80\xec\x17\xc8\x76\x0a\x93\xe0\x5a\x29\x57\x1f\x68\x56\x07\x30\x22\xc8\x70\x69\x13\xc4\x6a\x2e\xfd\x2e\x9c\xaa\xe4\xff\xa1\xb4\x22\x2e\x3d\x70\xe9\x79\xe8\x1a\x71\x95\x1d\x7c\xb8\x30\xbc\xbc\xf9\x01\xaf\x24\x4f\x64\xe4\xad\x9f\x52\xfa\x3b\x62\x03\x1e\x35\x16\xda\x50\xbc\x2b\xce\x78\xeb\x9d\x61\xbf\xed\xd9\xb3\xf5\x7e\x89\x35\x5f\x17\x7d\xb6\x16\x2b\xf6\x1d\xa0\xe4\x54\xc3\x42\x88\xb9\x67\xc3\xfb\x4c\x34\x1b\x32\xd4\xd1\x3a\x31\x98\x69\xb8\xe3\x60\x46\xf9\xe3\x38\xb5\xf3\x6a\x1f\xc1\xa7\xed\xa7\xd7\xb0\xd4\x38\xe0\xa7\x5d\x84\xbb\xe4\xd6\x8c\x87\x9a\xda\x80\xdd\xe2\x3f\x71\x55\xb5\x32\xcc\xcf\x7a\x63\xf1\xbe\xdf\x84\xf8\x2f\x44\x0c\x9e\xc3\xcb\x0e\x45\xf3\x2c\x92\xf7\x64\x38\xf5\xb4\xb9\x10\x44\x1e\x67\x38\xaf\x3f\x5d\x20\x50\xd5\x79\xee\x96\xb8\x8f\x3b\x00\x81\x0a\xb1\x26\xff\x3a\x8f\xef\xd9\x71\x04\x43\x24\xdd\x4e\xb3\x44\x7d\xac\x5b\x77\x80\x9c\xda\x8c\x71\x68\x25\x49\xd7\xcf\x2d\xce\xe3\x40\xed\xcf\x94\x94\xac\xa4\x29\x01\xe2\xc1\x1e\xd9\x77\x90\xaf\x48\xbc\xea\x29\x52\x1e\xf0\xe3\xd0\x3c\xda\xde\xcd\xc8\x94\xdd\x07\x56"}, +{{0x72,0xcf,0xce,0xf4,0xc9,0xd6,0xa1,0x98,0x6d,0x19,0x03,0x11,0x84,0x0e,0x55,0xcb,0xaf,0xac,0xc8,0xa6,0xeb,0x5e,0xcc,0x72,0x93,0x4f,0xda,0x53,0x5b,0xdc,0xff,0xb2,},{0xa9,0x44,0x64,0xd8,0xcc,0x8f,0x3e,0x43,0x39,0x39,0x47,0x64,0x9f,0x91,0xc2,0x75,0x23,0x27,0xe4,0x0d,0xac,0xa1,0x1a,0x99,0x70,0xc5,0x18,0x1e,0xda,0x37,0xd6,0x06,},{0xdb,0x72,0x70,0xac,0xce,0x78,0xd7,0xfb,0x09,0x08,0x0a,0x32,0x79,0x41,0xbc,0xe7,0xeb,0x14,0x5b,0x9e,0x36,0x61,0x86,0x6a,0x86,0x83,0xf9,0xa1,0xa3,0xde,0x97,0xfb,0x02,0xb0,0x25,0xdb,0x9e,0xc7,0x6f,0xf3,0x25,0x60,0xfe,0x63,0x88,0x27,0x74,0x2e,0xa2,0xf4,0xeb,0xef,0x6b,0x7c,0xce,0x44,0xf9,0xaa,0xee,0x43,0x4f,0xd7,0xc1,0x08,},"\x66\xa6\xcb\xe8\x8a\x8a\xb9\xa3\x38\x47\x79\x7f\xc4\x80\xb2\x44\xe8\xa2\xb8\xec\x79\xe8\x0b\xc2\x63\x77\x53\xde\xb3\x6f\xa3\x01\x4f\x84\x3e\x22\xa4\x7d\xb0\xa3\x17\x78\x38\x5e\xc1\xf4\x55\x67\x2e\x0d\xff\x6c\xa2\x1c\xa4\xcf\xd2\xb9\x89\x47\x1b\x7f\xfc\x30\x78\x28\x13\x8b\x0a\xd4\xe6\x47\xc2\xd1\x3c\xef\x72\x44\x69\x05\x4a\xbd\x37\x40\x24\x5a\xea\x4b\x78\x9e\x24\x4e\x95\xcf\x9e\xcf\xd0\x8a\x0d\x13\xc7\xce\xd3\x93\x33\x27\x27\xa7\xf3\xd8\xfb\xda\xbd\x93\x9d\xe2\x8c\xaa\x41\xcc\x96\xc7\x08\x11\x98\xe2\x26\x53\xd9\x4e\x02\x4a\x61\xf5\xf3\xdc\x5a\xa3\x7f\xa9\xad\xdd\xc9\x6c\xf1\x69\xd3\x50\x62\xa0\xa2\x9b\xa4\x5a\x53\x9c\x87\xa6\x8a\x3a\x03\x04\x36\x13\x09\xd2\x13\xe6\x14\xee\x83\x73\xda\xfb\xa2\xa7\xd6\xed\x7d\x2a\xd3\x77\x04\xc0\x94\x6e\x4d\x09\x3e\x2d\x94\xd0\x61\x36\x4c\xc1\x23\x10\x63\x72\x91\x03\xa7\x7c\xcb\x50\x18\x91\xbb\xc3\x18\x54\x57\xbb\xd2\x86\x9e\xb6\x3d\xc6\x0f\x19\x6f\x10\xa3\x8b\x7b\x36\xcb\x3f\x64\x3d\x35\xdd\xbf\x43\x8a\x44\xbf\x0c\x8f\x57\x0f\xad\x41\xbd\xde\x26\x7f\x0f\xfc\xf1\xf2\xf9\x27\xd6\x26\xd1\xb0\xd9\x80\xa0\xce\x22\x3f\x2f\x00\x54\x84\x5a\xfe\x41\xd3\x9d\xe5\xa4\x57\x21\x9f\x27\x6c\x67\xe6\x9b\xe2\xd5\xc9\xe0\x70\x13\x16\x39\x56\x1c\x26\x75\x1f\xb0\x64\x35\xe0\xe4\x2e\x25\x08\xc5\xf4\x9c\xd1\x2b\x51\x7c\x98\x33\xff\x97\xf5\xe5\x1e\x1d\xce\xaf\xa9\x42\x6d\x3d\xc5\x2f\xd1\x37\x9c\x64\xcc\xaa\xbb\x26\xdb\x1a\xf6\xde\xd7\x15\x36\x28\x84\x2f\x0c\xbd\xbb\xbd\x6a\xa0\xcf\xa5\x40\x7f\x40\x94\x96\xc0\x65\x32\xdb\xea\xc9\x4d\xab\x9b\xab\xa0\xb3\xc9\x88\xfa\x03\xd3\x6f\x91\x1d\x80\xe4\x9b\x37\x0b\x68\x37\x03\x7f\xf2\x49\xe7\x6d\x69\x2c\xd1\x77\x37\xe0\xd0\x79\x65\xd3\x3f\x17\x04\x2b\xbc\xd1\xe9\x90\xe0\x40\xf7\x19\x36\xf6\xfc\xa2\x54\x2a\xe3\x37\x48\x36\x77\x87\xc0\x1b\xde\xa7\x5c\x9a\x0e\x66\x15\x02\x81\xc4\x68\xfe\x5c\x73\xaf\x9e\x5b\xec\x37\x2d\x50\x20\xc3\xd3\x7f\xa1\x03\x5a\x67\xe2\x24\xd0\x95\xf0\x66\xa5\x1f\xe1\xf6\x81\xc3\x07\x39\x39\x27\x2f\x6a\xf7\x75\x0e\xd8\xd1\x83\x49\x17\x8a\xb4\xa2\xee\xb4\xe9\xca\x82\xbb\x67\x29\x6e\x98\x90\xf3\x16\xc9\xd9\x49\x59\x53\xd6\x84\x36\xeb\x1c\x1a\x2f\xb6\xa1\xcc\xa4\x5a\x8e\x88\xa0\x9b\xdd\x65\xa5\x55\x80\x25\x61\x8b\x36\xd7\xf3\xcb\x38\x9d\x2e\x2a\xb1\xed\x23\x32\x28\xec\x92\xa3\x27\x97\x8c\x0a\xdc\xed\xdb\x6c\x96\x32\xd3\xab\xd7\x97\x16\x21\x71\x37\x54\x75\x8e\x21\x01\x3a\x0c\x3d\x00\x9b\x6e\x31\x93\xcc\x15\x2c\x57\xef\x73\x10\x7b\xd4\x35\x7d\x52\x8b\xe4\x08\x73\x02\x7b\xf1\x84\x0f\x68\x55\x36\x08\x0f\x12\xc5\xff\xa9\x3c\xa6\x29\x73\x67\x80\xe0\x15\xe8\x6d\x19\x09\xf0\xd8\xf3\x72\x01\x0c\x9c\xb7\x2c\x09\x89\x84\x5f\xc8\x83\x15\xe6\xb9\x37\x0d\xc9\x2d\x36\x83\xef\x44\xd3\xf7\x5f\xc9\x6c\x4b\x0e\x89\xe1\x3d\x68\x2d\x19\x88\xb6\x85\x71\x3e\xad\xa8\x42\xbe\x9d\x2b\xbe\x2a\x76\xbb\xa1\x5d\x38\xcb\xaf\xb6\x5c\x40\xc2\x15\x9b\x0c\xee\xb0\xd7\x69\xb9\xbe\x35\x55\x40\x73\x4f\xf3\x77\x36\xc0\xf0\xfa\xcb\x95\x15\x93\x09\x36\x5b\x96\x46\xbc\x4b\x34\x4f\xb1\x9a\x5c\x16\x39\xa8\x8e\x87\x31\x7b\xfb\x3b\x5e\x7b\x51\x30\xfa\x7d\x56\x43\xed\x4d\xa0\x64\x30\xc8\xa0\xc1\x85\x8c\xcf\x2f\x9a\x6e\x3d\x62\x01\x22\x53\xf0\x12\x2d\xba\xb4\xa3\x54\x75\xa6\xf6\x55\x89\xb2\xb0\x95\x99\x28\x26\xe4\xf1\xb5\x8f\xa0\x50\xb8\xf9\x5c\x4f\xeb\xa3\xfb\xaa\xdd\x2c\x22\x44\xad\x4a\xbd\x41\x01\x39\xad\xf4\xc1\x53\xcb\x5e\x69\x33\x7a\xf1\x76\xa7\x83\x7e\xea\xea\x99\xbd\xcd\x59\x38\x5a\xfd\xed\x34\xff\xba\x80\x63\xa3\x5f\x4f\x55\x8e\x4e\xeb\x48\xf1\x48\x7b\x56\xb1\xf8\xd1\xf7\x30\x67\x62\x1c\xb5\x48\xc8\x08\x75\x3e\x35\x26\xa2\xf2\xaa\xbd\xe1\x26\xbe\xa5\x21\xcf\x67\x3d\xea\xfa\x79\x2c\xa5\xbd\x22\x12\x79\x5b\xd6\x6b\x86"}, +{{0xa6,0x33,0x7e,0x4d,0x3b,0x1a,0x49,0xb1,0x26,0x31,0x67,0x78,0xc6,0x13,0x51,0x6c,0x03,0xac,0x88,0xc9,0x6d,0x92,0xff,0x5c,0xc7,0xe0,0xc8,0x52,0x7c,0xce,0x1a,0x62,},{0xf5,0xea,0xc4,0xfe,0x0e,0xa1,0xa5,0xf2,0x36,0xb4,0x9d,0xa3,0x3a,0x24,0xe2,0xf3,0xa8,0x3d,0x4b,0x26,0x0c,0x54,0xd3,0x41,0x6c,0x64,0x4e,0x05,0xc8,0x38,0xbf,0x51,},{0x78,0x13,0x76,0xc9,0x51,0x2f,0xa3,0x3c,0x45,0x70,0x47,0xa1,0xf4,0xf0,0xda,0x31,0x76,0xe6,0x0e,0xe4,0x77,0x82,0x86,0x9b,0x7e,0x9f,0xa5,0x84,0x1d,0x96,0x4f,0x3c,0x1a,0xd6,0x6b,0x70,0xc1,0x14,0xb1,0x77,0x1c,0x32,0x4c,0x83,0xff,0x6c,0xd9,0x97,0xae,0xfc,0xcd,0xc5,0x9c,0x11,0x4d,0xb9,0xf2,0xf3,0xca,0x7d,0x84,0xa7,0xb6,0x0f,},"\xe3\x34\x30\xc3\x8c\x4a\x40\xb3\xc6\x6e\x20\xcf\x3b\x70\xe9\xfe\xa8\xcc\x50\x76\x1f\x2a\xfe\x24\x9e\xc0\x59\xc0\x7b\xc3\xb3\x7e\x5b\x94\xf4\xa4\x3e\x31\x00\x99\xb1\x9a\x85\xf5\x9d\xff\x73\xa7\xe4\x95\xc4\xdf\x31\xf7\x47\x80\xcd\xef\x7b\xd6\xe4\x7c\x39\x4c\x18\x91\xea\x30\x52\xe3\xcc\xf5\xd8\x4b\xae\x08\x2d\x24\xba\x71\x78\xac\x65\xd2\x29\xad\x18\xa8\x49\x40\xf6\xb4\xdb\xc5\x96\xee\x63\xc1\x81\xb5\x7b\x5b\x49\x69\x89\x79\xc1\x86\x32\xfa\x82\x1c\xa6\x1e\x35\xa0\xd0\x35\x1f\xe1\x3d\x69\xe0\x6d\xdc\xc8\xd6\x66\xdc\xa2\x45\x02\x17\x7f\x34\x4e\x2f\x44\x05\x75\xd3\x9e\xbf\xe5\xe7\xf1\x06\x53\xb6\x5b\xef\x29\x1d\xc8\x13\xa0\x43\x4c\x97\x5d\xe1\x64\xc1\xa7\x6b\xf6\xfc\xef\x98\xf2\x31\x81\xc0\x09\xb9\x18\x30\xb6\x18\xe4\x87\x48\x47\xd2\xe2\x1b\xbd\xb9\x3f\x20\xcd\x8b\x1f\x4b\xaa\xdf\x99\x42\x8a\x22\x67\x43\x86\xa6\x68\x15\x2b\x4b\x90\x39\xff\x06\xab\xcf\xe3\x34\xa0\x62\xf7\x94\x05\x61\x72\xec\xbc\x07\x94\xdf\x98\x27\x1b\x9a\xcf\xe4\xb7\xda\x55\x3a\x87\x63\x42\x37\x63\x00\x09\xa0\x5b\x25\x7c\x18\x4c\xbe\x23\xd9\xcd\x5a\x03\x86\x58\x01\x0f\x57\x48\x99\xf3\xb2\xd1\x54\xd1\x85\xee\x67\x23\x09\x13\x65\x0c\x3a\x05\xb5\x4a\x2e\xdc\x24\x3a\x42\x87\x39\x8e\x37\x69\x28\xea\x9c\x6b\x2c\xba\xf3\x71\x25\x25\x40\xe2\xb8\x04\x3f\xcf\x55\x68\x13\x19\x6a\xe5\x72\xc2\x7c\xfb\x5a\x46\xab\xb9\x72\x9a\xf2\xdc\xfc\x29\xe0\x33\xdd\x11\xf3\x3e\x86\xcc\x6a\xc3\xbc\xe6\xf3\xf9\x57\x7d\x36\x78\x1a\x69\xed\x7e\xaf\x8c\x82\x63\xa0\xf1\x8e\xba\x0f\xe8\xa4\x81\xf3\xe1\x5a\x55\x59\x94\x34\x19\x5f\x7c\xb0\x57\xdd\x36\x4e\xaa\x07\xdd\x0d\xfd\x26\x6b\x80\x7f\x53\xa2\x07\x0f\xd7\x91\xe8\x72\x42\x2f\xd9\x07\x13\x4f\x4a\x8a\x78\xa8\x76\xbd\xcb\x03\x1a\xc8\x60\xdf\xe0\xbb\x57\xe1\x05\xdb\x82\x87\xb3\x1a\x60\x4e\xb7\x12\x69\xbe\x5b\xa2\x29\x98\x5c\xea\xbc\x2b\xdf\x16\x5a\xc7\x41\x65\x0b\x1f\x01\x3a\x66\xc9\xbd\x24\x3d\x03\xa8\xb1\xc5\x08\x13\x81\xcb\x92\xe2\x3f\x90\x57\x77\x1f\xc0\x7c\xa3\x2d\xff\x1d\xb9\x4f\x5a\xdf\xd2\xf4\xff\x9a\xf3\x1d\x25\x0d\xd4\xf8\x6b\x22\x59\x2f\x60\xa7\x45\x75\x15\x62\x13\xf1\x08\x46\xc7\x46\xa9\x20\xfe\x39\x85\x1b\x32\xfe\x4c\x8b\x87\x58\x76\x5b\xc5\xb8\xb9\xd5\xb9\x92\x63\xdf\x36\xf9\x78\x88\x05\x3f\xd1\x0f\x1d\x68\xf5\x77\xae\xd5\x59\xbc\xfd\xe7\x44\xbc\x65\x11\x07\x6c\xaf\xd6\x89\x44\xa0\xed\x10\x55\x2d\x11\x34\x4b\xc7\xe4\xd9\xef\x93\x6d\xac\xce\xd5\x27\x43\x31\x32\x95\x9b\x1c\x73\x24\xad\x1c\x4c\xbc\x3a\x1a\x73\x6b\x1f\x02\xaa\xe8\xe0\x61\x1a\xe2\x3f\xdd\x47\x4f\x5b\x8e\xe7\x05\x6f\xcb\x5a\xf6\x13\x3e\xcc\x08\x4b\xb9\xf1\xf5\x0c\xbd\xac\x66\x24\x44\x37\xb4\x34\x8f\x4e\xdf\xe2\x37\xfc\x3c\x38\x29\xab\x94\xeb\x4f\x14\xca\xb1\xcc\xd6\xca\xee\x36\xfa\xdc\x20\xa3\x10\xcf\x06\x90\x62\x2c\xdc\xa8\x48\xae\xd0\x3f\xf4\x03\xa6\x63\x3f\x4f\x65\x79\x94\xb7\x80\xdd\x60\x48\x14\x9c\x3b\xfb\xc1\x78\x89\xe3\x7d\x90\xb1\xe5\x42\x0e\xb3\xd4\x59\x6b\x91\xba\x11\xbc\x02\x29\xc6\x5d\x05\xb9\x3c\xd7\xe0\x45\x4d\x1f\x3c\x6e\x1e\x80\x71\x98\x37\x92\xc4\xd4\x36\x8d\x07\x78\xae\xf4\xe1\x23\x33\x5f\xd2\x96\x2c\x65\x7b\xd0\x51\x35\x71\xa5\xfc\xe2\x11\xde\x62\x87\x4f\x27\xca\x10\xdc\x15\xba\x2d\x44\x5f\x1c\xf4\xbe\x5f\x83\x3c\xf0\xb5\x64\xc0\x22\x57\x6b\x98\xc0\xa2\x43\x49\xb6\x70\x85\xf9\x22\x02\x67\x5d\x7d\xac\x48\xb9\x5e\x3b\xfd\x65\x55\xa9\xec\xb7\xc7\x2f\x08\xbf\xec\x0d\x22\x02\x22\x49\x2f\xdc\x96\x36\xf0\x36\xec\x45\x08\xa3\x65\xb7\xb7\x09\x79\xf9\xeb\x4a\x72\x63\xa8\xba\xcb\x1c\x1d\x01\x55\x73\x86\x46\xcd\xd4\x6a\xb9\x23\x4a\x17\x03\x11\x50\x0d\x0b\xae\x6e\x55\xa8\x63\xbd\xaa\x56\xf5\x16\x45\xad\x85\x29\x7a\x73\x81\xf8\xd2\x0c\xf9\x6c\x47\x4d\x1b\xb8\x1f\xce\x13\x2b\x14\x55\x5d\x1a"}, +{{0x10,0x7d,0xa9,0x8d,0x0e,0xe8,0xe7,0xc0,0x0f,0x6d,0x41,0xec,0x26,0x59,0x44,0xce,0x67,0xef,0x8c,0x8f,0xfb,0x51,0xf4,0xf1,0x1f,0x4e,0x5f,0x1a,0x27,0xfb,0xe8,0x05,},{0x3b,0xec,0x34,0xb1,0x61,0xb1,0xbc,0xff,0x00,0x9f,0x8c,0xfc,0x50,0xd8,0x4c,0xeb,0x6a,0x2d,0x5b,0x20,0x3b,0x52,0x38,0xa8,0xaa,0xd8,0xa8,0x36,0x18,0xb4,0x42,0xe7,},{0x53,0x25,0x2b,0x92,0x3a,0xd1,0x9c,0xc3,0x97,0x84,0xd3,0xa9,0xae,0x59,0xd6,0x2a,0x63,0x00,0xdc,0xc5,0x0a,0xc8,0xfd,0x07,0x13,0xcb,0x58,0x84,0x45,0x01,0xd8,0xd3,0x80,0x5a,0xfa,0x0f,0xda,0x64,0xc7,0x3e,0xa0,0xf6,0x0e,0x6a,0x8b,0x34,0x45,0xbf,0xff,0xe6,0xca,0x6b,0xfd,0xc8,0x7e,0x12,0x8b,0xaf,0x99,0xbf,0x62,0x68,0xfc,0x09,},"\x1a\x7b\x7f\x3e\x1c\x7c\x41\x49\x2a\x7c\xe7\x99\xef\xdb\x2d\x9d\xc2\xf2\x48\x9c\x84\xae\x28\xbb\x7d\x08\x4f\x32\xec\xa8\xfb\xb0\x66\x88\x5a\xc6\xf2\xef\x74\x49\xe7\x12\x26\xa8\x2e\x9f\x15\x37\x72\xa9\x93\xeb\x6b\x6b\xca\x64\x91\xd2\x6a\xca\x5d\xee\x98\xb7\x7a\x1d\xdc\x59\x92\x2b\x31\x45\xc4\x47\xde\x73\x7f\xaf\xac\xba\x5a\x75\xf2\xa8\x01\x37\xb5\x59\x46\x97\x22\x0d\x19\x61\x76\x74\xa6\x91\x13\xfd\xf7\x7c\x34\x3a\xf2\xb7\xe3\x86\x1b\x5b\x78\x22\xf5\x8d\x60\x08\x9c\x3c\xa5\x4c\x74\x9d\x27\xf8\x83\x79\xc0\x67\x59\x8f\x06\x39\x39\xba\x86\x31\xd1\xf5\x2d\xc9\xab\x45\x50\x45\xfb\x36\x0c\xc2\xa5\xb6\xb0\x12\x7f\xac\xfc\xf5\xb1\xb4\xc3\x3e\x3f\x19\x4f\xc9\x24\xb8\x54\x16\x8c\xb1\x16\x9a\xb1\x09\x97\xb4\x38\xb7\x1c\x80\x87\x83\x47\xbe\x88\x7a\xf4\x48\x10\x13\x4b\x51\x4c\x80\x69\x08\x20\x1a\x3d\x3e\x6d\x0c\x56\x12\x0c\x43\x14\x87\x4d\xc2\x94\x4d\x84\x44\xf0\x1b\xaf\xa3\x4a\xa6\x2e\xce\xf0\x98\x15\x45\xe5\xd0\x2f\x40\x16\xc0\xb1\x64\xfc\x05\xae\x18\xf5\x35\xc3\x1b\xf2\x0b\x86\xf3\x1f\x7a\x79\x4a\xba\x14\x89\x84\xc3\xff\x43\x3d\xc2\x22\xc4\x43\xb5\xd2\x6c\x1f\x66\xe6\xc5\xf1\x9d\x19\xcd\x6e\xad\xd4\xdc\x94\x10\x1b\x2f\x52\xb5\x8c\x9d\x45\x90\xcb\x10\xdb\xc5\xd6\xea\xcd\x11\xd4\x2e\xd0\x9f\x15\xbd\xe4\x4e\xe9\x27\x1d\xef\x29\x2f\x73\x1b\xf3\xb4\xac\x6c\xd1\x27\xe4\x88\x4c\x2c\xb3\x0b\x28\x5f\xc9\x24\x76\x38\xa2\x99\xe4\x16\x52\x06\x24\xd1\xec\x8d\x0d\xf2\x49\x89\x39\xc7\x19\xa9\xe7\xbd\x29\xa3\xc5\xc3\x2a\x3e\x82\x41\x36\x8d\x6e\x4f\x90\xfe\xa2\x9d\xc3\xa3\xf1\x47\xea\x9f\x76\xc5\x78\x0e\x73\x14\x3f\x55\xd3\xde\xc7\xb6\x63\x41\xd3\xf3\xea\xc1\xd9\x8f\x8e\x7d\x4e\x87\x75\x09\xb4\x43\x8c\x3a\x52\x46\x6d\x24\x2a\x10\xb4\xc2\x7c\x4a\x0d\xb9\x23\x2d\xad\x01\x14\x14\xeb\xfb\xd5\x79\x06\xf1\xa4\x10\x20\x7b\x52\x6b\x0d\x1f\x1b\x69\x86\xb3\xeb\xd7\x55\x0a\x2b\x3c\x15\xfc\x24\x09\xc7\x62\x6e\x0d\xd3\x30\xef\x67\x22\xe3\xba\x48\xb1\xd9\x20\x56\x52\xac\x19\x4c\x21\x47\x3c\xe2\x58\x55\x9d\xb5\x11\xef\xad\x3e\x5d\x55\xf2\xa7\x96\xd6\x5a\x6a\xb9\x7d\x86\x31\x06\x2a\x59\x3a\x13\xaa\xa0\x95\xdb\xc9\x3e\x62\x17\xce\xd6\x19\xcb\x16\xa5\x7e\x74\x43\x55\xa1\x6b\x15\xe7\x7d\x49\x79\x11\x92\x99\xbb\x04\x3e\x48\xfa\x3e\x61\x54\x60\xe1\x64\x88\x29\x84\xa2\x23\xd4\x18\xca\x95\x34\x0c\x5b\xfc\xda\x67\x3f\xcd\x13\xb2\x9f\x2c\x47\xd2\xf9\x7e\x3e\x8c\x61\x3b\x6c\x58\xdf\x0e\x62\xcf\x23\x06\x1d\x6f\x54\x5b\x75\x50\x33\xfd\x3d\xc1\x40\x5e\x5f\xef\x35\xa1\x3e\x01\x5f\x98\xb1\xcc\x42\xf7\x1b\x99\x68\x1f\x96\x81\x25\x82\x29\xa4\x47\x3d\x86\xea\xbb\x0c\x17\x92\x79\x41\xe5\x0c\x08\xf3\x4a\x76\xb4\x3b\xcc\x6d\x04\x2e\x56\x32\xef\x9c\xcc\x91\xb6\xe6\x95\x0f\x5d\x30\xf6\x70\xfb\x39\x02\xc3\xd4\x09\x31\x5a\x40\xb0\x82\x1c\xe8\xa9\x9a\x97\xfe\xca\x54\x78\xbf\xd7\x82\xe7\x87\x67\xb3\x11\xf3\x74\x16\x3f\x58\x96\xb0\xbe\xb9\x58\x38\xe6\x45\x87\x8c\x64\x99\x03\x85\x12\x3b\x61\x57\x5d\xd8\x42\xdc\x76\x35\x4b\xac\x9c\x6d\x5a\xcd\x99\x35\xb6\x09\xbc\xcc\xb8\x46\x3d\x39\x22\x5d\xa1\xaf\xb8\x91\x1d\x36\xe6\x09\x89\x2d\xd1\x72\x38\x52\xab\x9f\x82\x75\x8f\x3f\x1e\x4d\x28\xdc\xf0\x2c\xb0\x6e\xed\x26\x84\x4a\xae\x68\x82\xed\x44\xbc\xe4\x4a\xbc\xd1\xdf\xba\x63\x34\x18\xc9\xf1\x55\x87\x9c\x97\xab\x27\xf8\xae\x23\x83\x30\x39\x2b\xe5\x49\x1a\x07\x86\x62\xda\xaa\x02\xa3\xd5\x45\x8b\x77\xc5\x49\xc4\x9b\xe2\x01\x24\x5e\x7a\xae\xc0\xd9\x4e\x54\x37\xbe\xca\x6e\x5a\xb0\x46\xd6\x94\xe9\x6b\xf5\x1e\x04\xfb\x44\x37\x9b\x2b\x9b\x80\x16\x75\xfe\x14\x77\xf3\xe0\x89\x87\x4a\x60\x11\x71\xd8\xb6\x8f\x02\x02\x01\x46\x01\xa5\x3f\x81\x2f\x53\xe5\x81\xc3\xb9\x63\x12\xb3\x6b\x9e\xe0\x4f\xff\x11\xd9\xea\xb4\xe4\x51\x48\xdc\xc8\xf0\xfa\xb1"}, +{{0x8b,0xc2,0x29,0xfc,0x23,0x46,0x53,0xb1,0x3c,0x92,0x47,0x10,0xcb,0x46,0x8b,0x8f,0xa9,0xb2,0x80,0xe2,0xad,0xb4,0x9c,0xb4,0xb3,0x6b,0xf5,0x9d,0x6f,0xa4,0xa6,0x39,},{0x46,0x14,0x69,0x75,0xdf,0x67,0x04,0xcb,0xf4,0x53,0x20,0xa5,0xe6,0xcb,0x6d,0xe8,0x13,0x46,0x9f,0x31,0x31,0xe6,0x1d,0x44,0x7b,0xbc,0xa1,0xa4,0x77,0xa0,0xc5,0x57,},{0xd2,0x43,0xb8,0x7d,0x13,0x97,0xd5,0x94,0x13,0x9d,0x83,0xc3,0x9a,0xcf,0x85,0x01,0xd0,0x73,0xbd,0x4b,0xe7,0x18,0xb4,0xc2,0x06,0x98,0x07,0x29,0xe7,0x20,0xa4,0xc5,0xb0,0xea,0x91,0xa2,0x8e,0xa1,0x26,0x04,0xa9,0x87,0xe6,0x95,0x91,0xc5,0x43,0x04,0x9f,0x29,0x73,0xbb,0x91,0xc1,0x70,0x21,0x3c,0x32,0xa6,0x4a,0x0f,0xac,0x82,0x04,},"\xba\xe2\xdc\x7f\x94\xab\x5c\xcd\xca\xa8\xcf\x49\xed\xbe\xf0\xf6\xd7\xae\xb1\xfa\x89\x07\x80\x05\x33\xaf\x44\x92\x61\x11\x94\xe5\x6c\xef\x37\xb1\xf0\x33\x30\x37\x38\xae\x2c\x3b\xc4\x58\x8f\x5c\xb3\xd5\x5f\x34\x5b\x9a\x40\x7e\x78\x77\x42\xa0\x6a\xf0\xb6\xee\x20\xde\xe3\xdf\xe9\xc9\x1d\x76\x2a\x3e\xbd\x19\xae\xd0\x79\x07\xbb\xb9\x1c\xd7\x76\x32\x65\x40\xde\xd9\xf7\xff\x7d\xda\x76\x61\x5f\x97\x8e\x94\x90\xf4\x06\xed\x2d\x91\x16\xe2\x09\x3f\xa7\x85\xe9\x71\xb5\x06\x2d\x31\xcb\x40\xff\xf9\xe3\xc5\x51\xa7\x3b\x20\x24\x5d\x46\xdf\x4d\x7f\xd1\x30\x3a\x28\x18\x01\x72\xd9\xa2\xbf\x55\x93\xc4\x79\x17\xb5\x86\x90\x91\x7c\x1f\xb0\xe1\xe2\x99\x4d\x1f\xa9\x77\x35\xae\x37\x8d\xe6\xea\xfd\x5c\x1a\x25\xab\xaf\xa3\xcf\xd2\xdf\x7a\xea\xbd\x6e\x68\xfc\x44\xed\xf8\x2f\xc8\x36\x94\xe5\xd8\x41\xa1\x5b\x14\x56\x8b\x61\x10\xbe\x64\x4b\xf2\x2b\x71\xfc\x47\xd7\xf0\x7e\x16\x66\x95\x7d\x0f\x87\xda\x17\xf1\x3f\xcd\x63\xc1\xc2\x96\x6f\x68\x7d\x25\xdc\xbd\x99\x63\xf0\x1e\xff\x13\x2d\x5f\x2b\x86\x67\x78\x16\x58\x8c\x12\x3e\x94\x57\xbe\xfc\xce\xd2\xd3\xcd\x1d\x1b\xeb\xe8\xdd\x8f\xbb\x15\x87\xe5\x53\xcb\xcc\x4c\x87\x62\x06\x4c\xd3\x2e\xf7\xa1\x70\x24\x10\xf7\x7f\x15\x24\x0d\x7e\x2b\xb5\x82\xc6\x78\xc0\xda\x88\xef\x45\x22\x83\x0b\x14\x36\x60\xac\x9c\x43\x4d\x95\x77\x2e\x6e\xee\xed\x60\x14\xae\x16\x82\x4c\xcd\xc4\xdf\x2d\xf6\x4a\xeb\x69\x80\xb5\x1d\x11\x89\x85\xdc\xbb\xd1\x96\x1f\x31\x5e\x6a\x94\x33\xf0\xb9\x6b\x1e\x63\x51\x25\x7e\xad\x83\xe0\x5b\x4c\xc8\x9c\x92\x4b\xf8\x35\x58\xba\x7d\x2e\x7c\xa3\x7c\x03\x17\x9a\x8f\x85\xb8\x31\xe7\x21\x7b\xf4\xc5\x53\x83\x87\x61\xd3\x26\x02\x85\x3b\x81\x59\x3b\x0e\xbf\x8e\x4b\x9f\xfa\xf0\xec\x40\x5b\x2a\x83\xaf\x7d\xe5\x55\x4d\xaa\xd2\x8b\x58\x2e\xe0\x8b\xd8\x4b\x37\x55\x50\xca\xe0\x8a\xe4\xa5\xbd\xa7\x15\x81\xfc\x3b\x7b\x54\x49\x8c\x4e\x1a\xfb\x96\x6b\x4a\xf1\xd9\xc8\x43\xa6\xb2\x5b\x34\xe0\x4c\xfd\x9b\xd2\x37\x42\x44\xf1\xfe\x20\xec\x62\xbe\x3c\xcf\xab\x4e\xde\xf7\x9e\xd6\x4e\x6b\x71\xaa\x92\x28\x12\x7c\x63\x59\xea\x1c\x4a\x80\x87\x89\x08\x96\xff\xa4\x6e\x00\x92\xde\xc7\xef\xbc\x96\x0a\x17\xb7\x70\x91\x6f\x95\x40\x70\x13\x2e\x26\xd9\x8d\x97\x74\xa2\xac\xdf\x80\x9d\x58\x6d\xf0\x25\x2f\x67\xcf\xe8\xd9\x85\xa3\xe2\x48\xdb\x0f\x90\x73\x1a\xce\x7a\xbd\x99\x9c\x74\x6b\x69\x64\x8d\x5c\x3b\x4b\xd6\x11\x37\xe0\x8f\xcc\x8b\x2e\xfc\x56\x76\xbc\xd8\x56\xa1\x3b\x36\x21\x51\x47\x4c\x4a\x1e\xfd\xed\xc5\x92\xcf\x3e\xad\x1a\xba\xbc\xd4\x8e\xe2\x04\xd2\x77\x26\xad\x1b\xda\x4f\xe4\xb0\x9a\xb5\x10\x89\xd0\x16\xde\x6b\xa2\x59\xea\x81\x80\x7f\xaf\x21\x1c\x87\xe4\xc9\xef\xbf\x6a\x4c\x75\x3e\x08\xf7\x80\xed\x55\x33\x8c\x0f\xde\x14\xfb\x99\xb3\x07\x22\xb5\x59\x4b\x3a\xbe\x02\x04\x7f\x46\x62\x42\x42\x1f\xb8\x11\x76\xc9\xc4\xf0\xfd\x2b\x5e\x7c\x5a\x0f\x65\xa0\xc5\x9a\xa8\xc3\xa9\x86\x08\x7d\xe7\xba\x40\xba\xca\x77\xbd\x36\xac\x21\xce\x34\xe9\xfe\x97\xfa\xcc\x4e\x29\x83\x30\xee\xce\x1c\x8e\xc6\x23\xe6\x6a\x4b\x0f\x23\x42\xd2\xc5\xa0\x2c\x5f\x5a\xbd\xdc\x5f\xf1\xf1\xf2\xd0\x3c\x1d\x4e\xe9\xb4\xb3\x42\xed\x3b\x1c\xc2\x65\x61\xf3\x21\x7b\xf8\x50\x0e\x08\xf0\x27\x57\x1c\x53\xc9\x23\x26\x05\xa5\x3f\x2b\xda\x02\x4e\x39\x92\x91\x63\xa8\xe0\x07\x91\xac\x06\x56\xbb\x07\x83\x82\x5e\x71\x05\xff\xa9\xd9\x09\x69\xdc\x09\x4a\xf4\x6f\x70\x2e\x85\xcc\x11\xe4\x42\xb3\xd5\x53\x4c\x1d\x32\x75\x20\x7d\x6d\x29\xa9\x42\xc3\x58\xed\x5f\xa0\x75\x57\xc3\xc0\x14\xcf\x54\x1f\x9a\xae\xea\x60\x25\xb4\x1e\xcd\xd8\x48\x51\x2b\xa2\x5e\x72\x1e\x43\xd3\x29\x18\x5f\x8f\x94\x89\x2e\x9e\x2d\x5e\x7c\xbb\x99\xe7\xad\x25\xf6\x9e\x5b\xef\x73\x2c\xfc\xeb\x07\x86\x11\x55\x3c\xc7\x83\x77\x37\x5e\x74\xe6\x6f\x1b\x9d\x8d\x20"}, +{{0x3e,0xdb,0x50,0xff,0x07,0x4e,0xf9,0x71,0x7f,0x4f,0xb0,0xb6,0xce,0x25,0x2b,0xf4,0xbd,0x04,0x9c,0x90,0x83,0x77,0x5f,0x52,0x9e,0xaf,0x51,0xe9,0x75,0xcb,0x32,0x45,},{0x4b,0xc2,0x1f,0xe0,0x3e,0x67,0x9a,0xbb,0xfc,0xd8,0xc5,0xea,0x2b,0xcc,0x4d,0x83,0x8a,0x78,0x7d,0x48,0x40,0xc3,0xbc,0x39,0xde,0x4b,0x04,0xc4,0x17,0xc7,0x68,0xa5,},{0xde,0xb3,0xd9,0xfc,0x7b,0x2d,0x86,0xab,0x4b,0x92,0x6f,0x99,0x52,0x79,0x70,0xab,0xb5,0x18,0x38,0xbc,0xc2,0x91,0x9e,0x94,0xcd,0xa3,0x37,0x1f,0xd0,0xe7,0x69,0x3f,0xe3,0x7e,0x0c,0x40,0xe1,0x23,0x3b,0x09,0xff,0xa9,0x03,0xa0,0x34,0xdd,0xe2,0x87,0xc0,0x23,0x7d,0xc5,0x94,0xf5,0x3a,0xbc,0x87,0x84,0x48,0x69,0xdc,0xe9,0x20,0x02,},"\x97\x5e\xce\x4e\x81\xf0\x01\x5f\x5a\xc3\x04\x46\x09\xd0\xac\x3a\x8d\xf9\x14\x5b\x50\xc4\x28\x89\xdd\x31\x2f\x56\x3c\xf6\x12\x6e\x36\xff\xfa\xf2\x1e\xb6\xb8\x4f\xbd\xa1\x5a\xa8\x5c\x66\x14\x5f\x75\x41\xe5\xb4\x1a\x8e\x81\x70\x0b\xe3\x56\x22\x4f\xc1\x09\x32\x7a\x69\x19\x66\x56\x73\x53\x4f\x5c\x8a\x4a\x00\x17\x50\xb1\x99\xdb\xfd\x63\x06\x91\xaf\x55\x2d\x4d\x26\xa9\xd9\xaf\xb3\x3a\x16\xaf\x39\x11\x54\x12\x4b\x53\x42\x6c\x9f\x69\x50\x57\xb1\x81\x4f\xd6\xd3\x10\x29\x8a\xf6\xc8\x30\x68\x6a\x4a\x00\x7a\x14\xe0\x05\x7b\x72\xfb\xad\x5b\x80\x3a\xd3\x53\xd1\xc3\xfd\xb8\x90\xa9\xc8\x18\x08\xe8\x9f\x22\x91\x87\xbc\xb4\x4f\xee\x16\xa4\xeb\xca\xd5\xeb\xa4\x59\xb0\x28\x27\x2a\x56\x2c\x05\x07\x9f\xa7\xae\x3e\xca\xe8\x04\xa9\xe8\xc4\xf3\xf3\x15\x81\x3c\x5e\xe0\x84\x1b\xbc\xcf\xe4\xa9\x56\x23\xb5\x17\xa4\xb4\x2b\x2c\x6d\x97\xa3\xbf\x26\xac\xdb\xe2\xe9\x79\x63\x3f\x02\xaa\xc4\x66\x52\x6a\x3e\xbb\x14\xda\x19\xbc\x95\xf2\xc3\xfd\xf6\xbd\xb0\x8b\xe8\xbd\xe9\x7a\x86\x4c\x90\x7e\x91\x8c\x67\x9a\xb7\x26\xf8\x01\x77\x14\x58\x40\x21\x6b\x9d\xc3\xf9\x81\xef\x17\x87\x4f\x08\xb2\xfc\x66\x11\xa6\x34\x6c\x3d\xa6\xa5\x5e\xcf\xa7\x53\xc9\x91\x9f\x4f\x19\xe3\xc7\x90\x93\xbf\xd7\x8f\x86\x15\x98\xe4\x66\x6e\x1c\xab\x68\x8e\x46\x04\xd4\x6c\x9c\x58\x2e\xad\xb9\x2c\x98\x8f\x47\x8d\x16\x0f\x5a\x15\x18\x2b\x33\x40\x20\x17\x97\xd0\xb9\x55\x28\x2e\x4a\x21\x7b\x50\xb1\x4b\x10\xc9\xf4\x90\x67\xea\x3e\x84\xe5\x27\x4d\xca\xec\x74\x47\x4c\x57\x07\xc2\x8b\xba\x0d\xb8\xcd\xe3\xe8\x38\xd7\x31\x3c\x17\x1b\x85\xff\x2b\x9a\x3d\x2b\x16\x7e\x90\x61\xf8\x4d\xf3\xb1\x3b\xdd\x08\xb2\xd5\x01\xe5\x37\x92\xd6\x80\x54\xd0\x48\xab\xfe\x3b\xce\x98\xd9\x78\x25\x6f\x2f\xd2\xc6\xc4\xe7\x6f\x39\x68\x8c\xcc\xf0\xfe\x14\x9a\xf9\xd3\x47\xe7\xb0\x40\xef\x24\x1d\xd5\xa5\x3e\xaa\x5e\xab\x35\xa1\x8c\x68\xc7\x54\xa0\x6b\x03\x39\x9b\xbe\x56\xa2\x52\x68\xc8\x29\xa5\xba\x82\xb2\x81\x92\x04\x1d\x3b\xd2\x44\xeb\x08\xbf\x78\xe7\x6d\xef\x87\xcd\x09\xf3\x2b\xea\xc9\xbb\x63\x98\x23\xb3\x69\x67\xa5\x74\xd8\x96\x0d\x1b\xd0\x34\x35\x67\x9d\x93\xed\xdc\x55\x80\x63\xc5\x40\xb9\xc2\xf6\x09\xfe\xd2\xe2\xe3\x57\x6d\x19\xe6\x20\x9e\xab\x46\x6c\x20\x67\x91\xc3\xaa\x19\x96\x23\xfb\xae\x7d\x34\x97\xe8\x0f\xdd\x3f\xcb\xaf\x5b\x89\x11\x0e\xd7\x22\x44\x23\x4b\xe8\x5c\xca\x4b\x27\xa0\x9b\xb7\x0a\x26\xec\xe4\xeb\x8d\xd9\x70\xa2\x6e\x5b\x04\x36\x1f\xa5\x0e\x90\x38\x0e\xd6\x5f\x41\x4c\x1b\xe9\xf5\x06\x4f\x71\x42\x91\x16\x26\x7e\xdd\x69\x76\x42\x2a\xd9\x2d\xeb\x2b\x80\x4a\x92\xe8\x1c\x9f\x65\x22\xa0\xf3\xb5\xd8\xad\x36\xb4\xf8\x7d\xb5\x16\xa2\x28\x73\xe6\xf2\x72\x84\xf2\xca\x36\x0a\x2f\x40\xff\x3d\x8e\x23\xde\xc8\xef\x8a\x17\xa4\x3a\xcb\xb6\x12\x71\xa7\x27\xcb\x86\x90\xd2\x9b\xb8\x20\x16\x73\x6b\x31\x02\x62\x01\xdd\x3d\x38\x8d\x2c\x64\x3a\x73\xcf\xbd\x0a\x94\xe2\x05\x51\xfb\x5f\x8e\x1f\xfc\x39\x74\x12\x72\xaa\x23\x08\xdc\x8d\x21\x33\xa3\xfa\x9c\xf1\x09\x79\x6d\x69\xd2\xcc\x8a\xdd\xc4\x4a\xe2\x52\x77\x81\xee\x99\x3a\xf2\xa6\x37\xa8\x72\xf0\x2a\xff\x47\x4a\x70\x73\xf2\x9d\x9c\x89\x50\x77\x01\xfe\xcb\xbf\xd5\x10\x13\x53\x53\x7e\xba\x17\xc2\x96\x69\xda\xc0\x42\x7e\x38\xe2\x2d\xfa\xac\x91\xfc\x20\xd9\xe3\xfe\xe7\x91\xf4\x62\xa8\x63\xbb\x19\x08\xfb\x1e\x42\x04\xb6\x88\x80\x31\x4d\xda\xca\xaa\x35\xa1\x7a\xf5\xf5\x7a\x39\x9f\x19\x31\xe7\x8f\x5a\x37\x45\x4f\xd3\x8c\x57\xa6\x8e\x8d\x36\x78\x48\xa9\x73\x45\x18\x9c\x70\x07\x7f\xd1\xaa\x07\x54\xe7\x03\xe3\x52\x61\x80\x63\xb9\xe3\xfa\xf3\xb1\x4b\x5f\x0b\x27\x11\x36\x33\xc5\xd1\x73\x63\x74\x1e\x96\xa6\x7e\x81\x64\x01\xe8\x09\x8c\x17\xbf\xfe\x9c\x6f\x35\x87\x64\x6f\x40\xe9\xfd\xb6\x81\x9f\xd2\x2a\x74\x3a\x7a\x6e\x10\xfe\xba\x11"}, +{{0xcd,0xa4,0xba,0x93,0x94,0x0a,0xa0,0xc0,0xc3,0x15,0x0b,0x39,0x29,0xb9,0x5e,0xe7,0x76,0x9c,0xe4,0x3f,0xd9,0x8e,0xca,0xff,0x9c,0x4a,0x50,0x9e,0x73,0x6d,0x5c,0x8e,},{0xf4,0xc7,0xa2,0x5f,0x1a,0x74,0x3d,0xaf,0x41,0x41,0x7e,0x47,0xe0,0x27,0x53,0x7f,0x24,0xf4,0x81,0xbd,0x1a,0x75,0xe6,0xb1,0xd3,0x3e,0xc4,0xc8,0x2c,0x55,0xa2,0xd3,},{0x31,0x04,0x8d,0x33,0x4a,0xf0,0x5a,0x4f,0x27,0x5f,0xf8,0x27,0x54,0x4e,0xa2,0x96,0xa4,0xa7,0x75,0xfa,0x59,0xef,0xa0,0x00,0xc5,0x76,0x13,0xfa,0x6e,0x5c,0x49,0x3c,0x3a,0x9b,0x79,0xe8,0xce,0x56,0xe7,0x22,0x5b,0x0f,0xa3,0x26,0x20,0x4f,0x03,0x36,0xc2,0x13,0x53,0x5a,0xe5,0x89,0x17,0x7a,0x8e,0xae,0xdb,0x6d,0xf8,0xb2,0x02,0x03,},"\x3a\x1d\x66\x8c\x66\x88\x41\x48\x96\xa7\x69\x7f\x3c\x2e\x43\x10\x98\xed\xfc\x45\x7e\x04\xd2\xda\x86\x95\x68\xad\x5b\x33\x10\xe5\x9e\x4c\x72\x7c\x90\x3c\xbf\x18\x17\x40\x88\x02\x31\x9a\x8c\x23\x1b\x58\x02\x3d\xfa\xe4\x94\xc0\x13\xaf\x0f\xdb\x78\xc9\x1d\x5b\x45\x7f\x8c\x47\xa3\xdc\x31\xd8\xc8\x59\x4a\xa0\x8f\x14\x62\x03\xfa\x2c\x28\xb3\xdd\x79\x6a\x11\xa9\x7a\xde\xde\x6a\x7a\x70\x9b\x5a\x19\x18\xef\x1b\xea\x83\x53\x3c\x78\x34\x73\x70\x33\x56\xf5\xbe\xea\x7f\xd1\x8a\xc4\x4e\xc6\x89\x04\x95\xed\x17\x0d\x03\xf1\x5b\x41\x86\x08\xa7\xd9\xef\xd5\x2f\xa1\x09\x18\x63\x80\x51\xc4\x48\xd9\x8d\x57\x24\xf5\x67\xc8\xc6\x7f\xd5\xb6\xec\x8c\x3d\x63\x60\x08\xb9\xba\xe5\xe8\xb1\xe9\x84\xf8\xff\xb8\xb6\x4b\xee\xbd\x63\x45\xa1\x05\xc1\xc1\x08\x31\x32\xfd\x45\x08\xd6\xac\x0d\x4e\x91\x45\x50\x12\x10\xe5\x17\xd9\xb2\x24\x78\xe2\x15\xb6\x02\x59\x9f\x80\x37\x62\xdc\xd5\xa4\x09\xb3\x46\x0e\x7f\x34\x0f\x47\xef\x77\x28\x1a\xd2\x38\x3d\xe0\x8c\x5b\x80\x95\x38\xaa\xec\x92\x2b\xfc\xa0\xd6\x75\x2f\x14\x79\x72\x64\x6d\x0a\x8d\x83\x40\x77\x2c\x87\x1d\x3b\x34\xab\xc0\x60\x37\xde\x3a\xb4\xe3\x71\x29\x86\x5d\x5b\xa7\x0b\x6f\x3c\xc9\xa0\x59\xef\xb7\xdd\xdc\x38\x82\xf4\xfc\xfe\x13\xf4\x48\xc9\xbc\x66\x48\x88\x58\x96\x03\xba\x98\x68\x3a\x93\xb4\xb3\xb1\x01\x49\x92\xa5\x5c\x8e\x4e\xa1\xba\xf9\xcc\x00\xd1\xba\xdf\xf5\xfd\x7f\x5d\xa5\xe3\x07\xfb\xd1\xb4\xc9\x84\xe0\xfa\x0e\xde\xc5\xd3\x0b\xfe\xf5\xf4\x77\x30\x12\x63\xb5\xd7\x52\x00\x1b\x85\xdd\x52\xdf\x3b\x4a\x7a\xc2\x3b\x93\x0a\x91\xc0\xa4\x57\x65\xa6\x64\x88\xd8\xeb\x59\x01\x85\x70\x60\x06\x7b\x82\x37\x81\x88\x54\x92\x88\xdd\xc6\x18\x31\xe5\xb6\x84\x1b\x34\x4c\xae\x22\x50\x04\x22\x19\xcf\xb4\xac\xe0\x23\xe6\x91\xf9\xe4\x8d\x00\x6e\x9a\x07\xc6\x7d\x24\x68\xf9\x35\x93\xb4\xaf\xc1\x61\xc0\x76\x8b\x6c\xeb\x74\x4c\x24\xc9\x23\xda\x34\xaf\x3d\x5e\xd5\x77\xcc\x7f\x85\xd4\x91\x56\x0f\x4c\x0b\xcb\xcd\x1d\x5e\x34\x21\xbd\x1c\xcf\xaf\xb3\x73\xd6\x51\xbd\x61\xed\x71\xc0\x9e\x99\xf6\x12\x00\x17\x04\xd0\xc6\x30\xd8\x54\x7b\xd9\x70\xb6\x6e\x7f\x5c\xe7\xa0\x14\xe0\xff\x5a\x33\x7d\xc5\xc5\x6a\x99\xf1\x31\xb9\x12\x91\x40\xee\xea\x39\x39\x7c\x48\xca\xa9\xa8\x08\x6f\x9f\xd9\x91\x50\xbe\x7e\xf8\x7b\x6d\x4b\x94\xb1\xbd\x52\x87\x8b\xf3\xbb\xfc\xce\xac\xc2\xcc\x45\xe8\x97\x1c\x3a\x4d\x4a\x3e\xb8\x6a\xf9\x87\x4d\x4f\xa5\xe7\xca\xa7\xf4\x5d\x15\x53\xff\xbb\x41\x64\x5b\xf0\xf5\xe9\xb2\x97\x72\xe3\xdc\x08\x1b\x25\xb5\x2e\x1c\xb7\xe2\x16\x74\x83\xd5\x4f\xba\x69\x0d\xdb\x29\xd5\x46\x2d\x2a\x27\xa3\x5d\x85\xf0\x07\xad\xed\xe2\xa3\xdd\x72\x81\xf6\x54\x33\x6a\xfa\xfb\x73\x70\x78\x2b\x29\xca\xd6\x43\xd9\xd9\xdb\x2f\x05\xf2\x81\xb5\x3e\x13\x3e\xc3\x0e\xec\x09\xfb\x0d\x06\x1b\x74\x58\x1a\x2b\xd2\x79\x0b\x13\x73\x91\xf1\x93\x28\x88\x0f\x64\xc5\x3b\xe7\x00\xd0\xfa\xdd\xb7\x0d\xc1\x65\xd2\xd6\x2e\x67\x1e\xb9\x44\x9a\x2e\x6e\x9d\xf2\xc1\x6d\x8f\x49\xfa\x4b\x5b\x84\x30\x9f\x73\x35\x13\x3d\xbe\x87\x2c\x5a\x8f\xdc\xfb\xc4\x98\x0a\xbf\xb3\xc9\x59\x7d\x5d\x66\x7a\xd2\xf6\x88\xc7\xab\x24\xc9\xe4\x40\x29\x8d\x72\xb2\x8b\x0f\xcd\xe9\xc6\xf0\x71\xbc\xcc\x93\xe8\xdd\xbb\xa7\xb6\x0a\x0b\x54\x4a\x2e\x06\xc3\x9c\x67\x23\xd4\xf7\xdc\x18\x5c\x21\x13\x5f\xd1\x3a\x72\x77\x0b\x97\x61\x19\xe4\x9a\x1f\x81\xed\x47\x6b\xe0\x7c\x44\x3d\xe0\xb0\xee\x76\xfb\xd9\x19\x38\x93\x28\xb3\xeb\x86\x07\xbc\x2f\xe3\x8f\x85\x74\x5e\x28\xad\xb7\x48\x2b\x70\x1c\xcc\x66\x90\xe4\xae\x5a\x93\x32\xea\x44\x61\x31\x79\x38\x7d\xc6\xfc\x47\xc1\xd1\xec\x36\x60\x35\xe9\x91\xe1\x40\x43\x23\xbd\xbb\xf5\x35\xf1\xc3\x3c\xf5\x7b\x67\x23\xf1\x3c\xa6\xca\x32\x9e\x2a\xaa\x4b\x46\xb4\x26\x07\x33\x99\x06\xc7\xef\x49\xb3\x2d\xb8\x2c\xdf\x6a\x87\xad"}, +{{0x21,0x7e,0xcd,0x6a,0x7f,0xcc,0x98,0x71,0x92,0x10,0xc3,0x4c,0xc2,0xe1,0x4f,0x5e,0x2d,0x6b,0x5a,0x22,0xf2,0x68,0xc1,0x4b,0xc4,0xd8,0xa7,0xf2,0x81,0x72,0x00,0xc3,},{0xd5,0x91,0x91,0xce,0x28,0x2d,0x72,0xfe,0x3a,0xc4,0x58,0x78,0xe2,0x4b,0xb2,0xf2,0x8c,0x40,0x9b,0xa0,0x5d,0x76,0xce,0x9b,0xcf,0x22,0xf5,0x0b,0x0c,0x77,0x86,0x75,},{0xa0,0xb1,0x69,0xe8,0xe9,0xce,0x55,0x75,0x55,0xe0,0x33,0x4a,0x0d,0xe7,0x43,0x8e,0x55,0x36,0x75,0x48,0x9e,0xa4,0xba,0x9c,0xc6,0x3a,0x23,0x4d,0x00,0xde,0xd8,0xab,0x69,0x67,0xa3,0xbe,0x90,0xef,0x69,0xe0,0x76,0xdb,0x9e,0xa3,0xd5,0xca,0x23,0xb3,0x24,0x8d,0xd2,0x59,0x91,0xee,0x1f,0x4d,0x80,0x62,0x0b,0xf4,0xdb,0x43,0x8f,0x0e,},"\x9b\x53\x37\xe7\x8f\xb3\x82\xf2\x2e\xa6\x0e\x03\xc0\xbf\x3e\xe4\x70\x0b\x69\x78\xa9\x1e\xe6\xac\xdf\x6a\x40\x9e\x49\x18\xd1\x68\x48\x81\xfa\x1d\x11\x8c\x08\xc9\xf6\xf2\xca\x0c\xab\x56\x74\x02\xc9\x50\x10\xe7\xab\xdf\xe8\x48\xae\x79\xba\x24\x9a\xdc\xb9\x6e\xae\x1d\xfa\x08\x43\x95\x21\x39\xcf\x49\xb5\x88\x64\x78\x95\x69\x1a\x2e\x98\x80\x46\x6b\x7e\x77\xe5\x4f\x6f\x60\x81\x5e\xbf\xd5\xe5\x74\x8f\x41\x3c\x0e\x15\xf9\xd5\x76\x79\x9b\xcf\x31\x28\x47\x10\x63\x6f\x6e\x9d\xc7\x87\x85\x00\x79\x6e\xed\x80\xc8\xaf\x4b\xe2\x96\x19\x52\xea\x80\xbb\xed\x14\x04\xbd\x5d\xae\x9e\x6d\x05\xfd\x4f\x32\x5a\x3b\x83\xcd\x45\x28\xa0\x86\x9c\xef\x84\xb4\xd3\x0e\x02\xf9\x41\xd7\x49\xa8\xda\xc9\x7b\xb3\xfa\x83\x9d\x25\x73\x9b\x97\xec\x37\x45\x36\xbd\xea\x50\x04\x84\xa9\x41\xdb\x9f\x22\x99\x97\x06\x58\xd4\x11\x48\x29\x5c\xa0\x84\x6c\xa2\x36\x62\x38\xb6\x20\x1a\x48\xb3\xe4\x47\xed\xbe\xa7\xa4\xc8\xf7\x10\x20\x14\x27\x69\xe1\x5f\xa7\x2a\xe5\xf2\x87\x14\x0b\xc5\x95\x3b\x8a\x9a\x24\x2d\x20\x5f\xc0\x19\x09\x1f\x2a\xbe\xd0\xfd\xa4\x7f\x52\xd5\x9a\x02\x04\xce\x74\x01\xc1\x82\x9b\x58\x57\xb9\xa0\x91\x6f\xce\xbe\x2e\xef\x99\x1c\x41\x3a\xcd\x71\xb1\x8d\x85\x90\xd6\xb6\xd0\xfb\x39\x94\x30\x26\x78\xc2\x9f\x2b\x6a\x53\x02\x3f\x91\x87\xe4\x6c\x36\x79\x0b\xce\x73\x87\x3c\x54\x5a\x72\xbe\xb5\x53\x29\x4b\x1e\xe5\xd0\xd0\xdf\xf2\x39\xe2\x8e\xc6\x3b\x01\xe4\xd8\xfe\x0d\x6e\x69\xb1\x60\x1e\xfa\x24\x11\xf0\xc0\x60\x1e\x7e\x4f\x65\xc9\x84\xf8\x29\xf0\xdc\x2a\x84\x21\xe7\xf6\x6d\x93\x30\x53\x71\x51\xc7\x24\x3c\xa5\x24\xd7\xa5\x47\x35\xc6\xe3\x44\xf1\xfc\x93\x8e\xae\xea\x27\x79\xc9\x40\x89\x1d\x6d\x01\xaa\x55\xf4\x0c\xc1\xad\xba\x12\xe8\xa6\x7a\xd9\xa2\x7f\xe6\x3f\xb4\xf3\x8d\xc0\xf0\x18\x41\x92\x57\x18\x42\x72\x55\xbd\x66\x5d\x5e\xb3\xbc\x86\x98\x96\xdb\x86\x25\x20\x4a\xd4\xb0\x2f\x5a\x22\xaa\xee\xad\x6e\x30\x04\x71\xfe\xa6\x1d\xbb\x1b\x55\xc0\x71\x36\x5c\x58\xb1\x51\x1f\x38\xb0\x9a\x46\x71\xbd\x66\xb3\xfe\xdd\xa9\xc8\x7e\x43\xd1\xeb\xf3\x01\x76\x4e\x18\xfc\x0c\xf1\x6b\x2d\x2d\x67\xed\x23\x9b\x39\x3a\xc7\x19\x68\xa9\x03\xc0\x24\x77\xfb\x2d\xf9\xef\x01\xdb\xfc\x31\x67\xde\x72\x65\xf8\x91\xe4\xfd\x24\xd0\x2c\x63\x10\x35\x19\xb8\x6a\x70\x85\xb1\xec\x2f\xb4\x19\xdb\x76\x6b\xee\x7a\x64\x1a\x4b\xe4\x29\x61\x4a\xb8\x9f\x20\xf9\x75\x34\x10\x72\xbf\x04\x41\x9f\xb6\x9b\xe7\xa9\xee\x71\xa5\xb4\x9a\xf8\x3e\xd3\x22\xba\xc6\x8a\x42\x9f\xf5\xc5\x20\x67\x73\xbe\x54\x38\xb6\x5e\x53\xf6\x09\x72\x9f\x4f\x6a\x21\xc1\x33\x39\x11\x26\x4d\x63\x92\x70\x17\xe8\x13\x6b\x47\x25\xcd\x1c\xc9\x64\xe0\x8c\xa0\x93\x3a\x56\x1e\x7e\x3f\x59\x87\x76\x83\x30\xe2\xe5\x4f\x8d\x72\x8f\x59\xed\xfe\x2c\x91\xc4\xf9\x9a\xef\x97\xd1\x85\x59\x19\x5a\x3d\x8e\xb3\x15\xdf\xf9\x6f\xe2\x76\xda\x71\x37\xef\xf9\x30\x57\xac\x73\x1e\x06\xa6\x0a\x58\xbd\x8a\x9a\xe8\xc7\xcb\xaf\xf0\xcb\x33\x72\xc6\x8d\xaa\x17\x5c\x42\x8d\x52\xf1\x07\x3a\x38\xbf\x29\x46\x5d\x2a\x71\x28\xbb\x40\x07\x40\x06\xed\xcb\x72\x5a\x83\x1d\x81\x28\x64\xef\x43\xf3\xb8\x66\x7c\x9f\xb7\x10\x93\xa1\x67\x30\x49\xde\xc0\x5e\x09\x16\x9d\x86\xfe\xe9\x2d\xf2\x86\x00\x8a\xd9\x90\x65\xa2\x92\x97\x97\xa9\x13\xd0\x23\x3f\x4d\x1a\x95\xa2\x20\xbd\x91\xc1\x1d\xd9\xc4\x56\x85\xdc\xad\x38\x57\x80\xa0\xc4\x8b\x9c\x4a\xd2\xd6\x63\x03\xe8\xde\x4a\xf1\xdb\x3c\x04\xe4\xa3\xdd\x42\x19\xfe\x77\x3f\x83\xa8\x92\x4b\x0f\xcb\xff\xfc\xf2\x64\xab\xce\x32\x83\x29\x24\x03\x6b\xfa\xbb\xa6\x54\x6b\x1d\xf4\xe3\xf7\x88\xed\x8a\xd5\xc2\xcd\x92\xb2\x64\x1b\x47\x09\x0a\x10\x3c\xf5\xbd\xc4\x6d\x8b\x21\x43\x17\x47\x57\xda\x80\x1c\x36\x0a\x7a\xa1\x07\xfa\xc6\x54\xb3\x4c\x86\x0b\xd5\x4f\x76\xbb\xf4\x3c\x48\x47\x8d\xf4\xfe\x7a\xa5\x9c\xf9\x1d"}, +{{0x08,0xd1,0xd0,0x6f,0x3e,0xc2,0x9e,0xb5,0x22,0x93,0x90,0x7b,0x70,0x5e,0xc5,0x6c,0x5a,0xb3,0x54,0xfb,0x78,0x67,0x37,0x73,0xae,0x61,0x25,0x30,0x94,0xb8,0x9e,0x82,},{0xc1,0xb9,0x9a,0x87,0xad,0x15,0xbd,0x46,0xf6,0xc8,0x48,0x45,0x2a,0xf0,0xfa,0x3c,0xcc,0xcb,0x5c,0xdf,0x6e,0x34,0x8d,0x81,0x6e,0x36,0xc5,0xd0,0xfc,0xa6,0x6e,0x66,},{0x0b,0x8e,0xdc,0xb8,0xb1,0x5a,0x8c,0xd0,0x74,0xc4,0x1d,0xc2,0xa1,0xba,0x29,0xd9,0x64,0x8d,0x6a,0xcb,0xdc,0x33,0x83,0x14,0x70,0x7e,0xca,0x6f,0xb4,0x71,0x4c,0x99,0x54,0x3b,0x49,0x07,0xb9,0xf8,0x5e,0x57,0xee,0xcf,0xfe,0x0f,0x7a,0x6b,0x70,0x73,0xa8,0x09,0x46,0xf8,0x08,0x75,0x53,0xf4,0x68,0x31,0x09,0x27,0x3a,0x60,0x4a,0x08,},"\x12\x0b\x35\x57\x3c\x34\x91\x4b\x37\x30\x51\x88\x0d\xa2\x7e\xd2\x41\x37\x7f\x0e\x78\x97\x2c\x98\xd0\xfa\xeb\xaa\x76\x7e\xb7\xa7\xc7\xe7\xc6\xfc\x34\x05\xa4\x33\x6e\xf9\x5b\xc5\xda\x92\x25\xbb\xd0\x9e\x9e\x11\xf2\xa1\xbf\x14\x2a\xf4\xe8\xa0\xf9\x24\xd3\x23\xdd\x5a\x49\xdf\xe5\x84\xf0\x90\x43\x9c\x08\xe5\x15\x11\x34\x4d\x47\x0c\x62\x00\xac\x7e\x7c\xa1\x50\xd0\x88\xa9\x1e\x47\xc4\xc9\xff\x74\xe3\x8a\x42\xa3\x32\x15\x5d\x81\x52\xae\x4a\xbd\x11\x61\xad\xca\x93\x4c\x23\x4c\xe4\x60\xaf\x87\x89\xe5\x3f\x10\x9d\x7d\x31\xee\xde\x0a\x90\x9b\xd1\x93\xfc\x8d\x3c\x2c\xfe\xc1\x0b\x14\x3c\x31\x47\x67\x11\xbb\xec\x27\xe1\x96\xa5\x49\x85\xbc\x34\x71\x67\xac\xd2\x33\x50\x88\x27\xba\xd3\x6e\x54\x8c\x88\x06\x42\xb8\x6a\x28\xc6\xd3\x40\x4b\x51\x1d\xa2\x4f\x11\xdf\xaf\x6a\x8f\x46\xdd\xcb\xc9\xde\x9e\x39\x15\x97\x66\x9b\xdd\xfc\xa6\x56\x0f\x91\xac\xd3\x45\x9f\x32\x9b\xb0\x71\xdd\x80\xda\xdf\x35\xf0\xe5\x0d\xf5\xb1\x0f\x88\xd2\x67\xac\x9d\x30\x62\x33\x0d\xd9\x9a\x6b\xcf\xa1\x31\x87\xf4\x5c\x0c\x21\x4d\xcd\xe2\xcd\xf9\xc3\xba\x4d\x59\xe6\x33\xa3\x54\xa4\xe2\x77\xc6\x77\xbb\xdf\xa2\x41\x91\x17\x9c\xbc\xaf\x05\xa1\x0d\x40\x78\xd8\xad\xd9\x3b\xc9\xed\x8f\x6c\x6c\x49\x97\x57\x40\x36\x55\x34\x1f\x90\x4e\x37\xd9\x27\x75\x0c\x69\x9c\x26\x9d\xc9\x0d\xc2\x6d\x00\x56\x25\xc3\xf4\x12\x4b\xff\x66\xfe\xca\x59\xd4\xab\xff\x41\x72\xba\x3d\xf4\x5a\x87\x43\x02\x23\x10\x30\xfa\x78\x33\x84\xf5\x09\x99\xe3\xc4\xba\xa5\xea\xdb\x45\x14\x52\xc8\x88\xb5\x19\x27\x2e\x90\xf7\x3c\x68\x72\x76\x8e\x0d\xe2\x0e\xe2\xe5\xf9\x50\x2f\x35\xe4\x9f\xec\xc2\x8b\x75\x20\x18\x87\xfe\xd2\x81\x8e\xff\x54\x53\x98\x39\x2f\x5e\x5b\x68\x76\xbc\x55\x6a\xc1\x3a\x19\x03\xad\xa1\xb9\xd7\x25\xb0\x4a\x14\x20\x4b\x59\x9e\xc3\x3d\x62\xb7\xdc\xae\xea\x8c\x52\x87\x7b\x2c\xfd\xc3\x55\x8a\x91\xd2\xc9\x15\x75\x00\xa3\xbb\x6d\x45\x2e\x5e\x2f\xf0\x93\x29\x4f\xc4\x33\xcb\xd6\x34\x65\xbb\x19\x13\x07\xed\x80\x1a\x15\xb8\x5d\xc2\xff\x0b\xb3\x83\x12\xf8\xb8\x17\xa4\x36\xd4\x22\xcf\x46\x07\xc6\x4e\xe7\x03\x59\x23\xdb\x6b\x96\xa3\x89\x99\x10\x14\x9b\x0d\xa4\xaa\x3e\x96\x68\x5d\x71\x63\xaa\xcf\x9e\x61\x9d\xc6\x08\x13\xce\x4f\x34\x4f\x30\x79\xb4\x3f\x18\x7f\xa3\x1b\xda\xcb\x9a\x1d\x77\x20\xb9\x39\xd5\xbd\x24\x1b\x96\xa1\x77\xd7\xb7\x76\x8f\xfe\xbf\x79\x04\x4c\xd2\x95\x6d\x6f\x88\xdb\x1c\x24\x3a\x10\xfe\xde\x68\x14\x85\x2c\xf4\x04\xb2\xcd\xcf\xa7\x74\x07\x6d\xc1\x25\xc7\x0a\x57\xc6\x90\x7e\x99\xaf\xe3\x96\x22\xae\x11\xf5\x57\xe7\xd3\x4b\x39\xaa\xaf\x45\xf8\x34\x05\x8d\x2f\xe5\xf1\x5b\x5e\xb7\x0a\xc1\x5a\x90\xa3\xde\x58\x50\xab\x1d\xcb\x48\xb0\x6b\x6c\xca\xa4\xb4\x2f\x85\x7e\x71\xec\x00\xb8\xa3\xd8\x97\x4b\x0b\xea\x68\xfa\x0f\x66\x55\x92\x11\x5b\x4f\xa5\x55\x72\xcf\x0b\x07\x38\x64\x1f\xc8\x68\xd4\xa2\xe7\x14\xdb\x3a\xd7\x21\x9a\x82\x3d\x54\xb7\xf7\xc2\x65\x6b\xa5\xc5\xee\xbe\x35\x94\xc7\xdb\x12\x29\x8c\x16\x25\x1d\x98\x45\xbf\x2f\x78\x00\xb4\x19\x0b\x74\x6e\x21\xb0\xc1\xa5\xc4\x7a\x3d\xf9\xa0\x59\xce\x09\x56\x67\x4e\xb7\x03\xde\xcb\x0a\x00\x45\x43\x7d\xa4\xda\x10\xf2\x86\xd7\x20\xd1\xb9\xdf\x05\xfb\x24\x41\x5d\x68\xe0\x65\x57\x0e\x6b\x31\x50\x31\x42\xd0\x33\x35\xa8\x07\xbd\xca\x30\x89\x2e\xdb\x5f\x55\xf8\x98\x9d\x9e\x64\x96\x59\xc0\x74\x4c\x54\x33\xbf\xb4\xde\xeb\x11\xc2\x62\x6a\x86\x50\xe5\x4d\x4d\x39\x8b\xa1\x9b\x64\xf6\x8b\xed\x06\xd7\xfc\x40\x8f\x47\x0a\xc7\x04\xe2\xac\x92\x2a\xc1\x41\x1f\xee\x24\x54\x3e\x56\xf2\xf5\x0b\x6b\x08\x95\x3d\xc5\x6a\x7a\x75\xed\xae\x43\x0a\x6d\xf2\x8a\x22\x7a\xda\xc9\x1b\xa2\x6f\x0e\x19\x85\x95\x32\x77\x39\xcb\xa3\x03\xe9\xaa\x39\x3e\xa6\x61\x8a\x84\xf8\xf5\x03\xd0\x05\x6e\xe8\xd8\x7e\x37\x96\xe0\x36\xcc\x51\xcc\xb7\x91\xde\xb7\x95"}, +{{0xf0,0xc8,0x5c,0x76,0xb1,0x53,0x2e,0x89,0xae,0xa9,0x75,0x15,0x6d,0xdd,0xb1,0xd3,0xd0,0x66,0xf6,0x40,0x9f,0x84,0x1b,0xb4,0x41,0x09,0x22,0x72,0x5f,0x26,0x9d,0x86,},{0xfd,0x75,0xfc,0x75,0xc3,0x6f,0x83,0x49,0x8d,0x8f,0x08,0x27,0xf0,0x1d,0x3b,0x45,0x7f,0x8b,0xc4,0xd9,0xdc,0x55,0xe4,0xa4,0x62,0x74,0xdd,0xf0,0x03,0x4f,0xe1,0x6f,},{0x42,0x18,0xfe,0x4c,0x1d,0xce,0x79,0x5c,0xa9,0x2a,0x49,0xa6,0xf4,0x79,0x8e,0xb5,0x41,0x2d,0xc8,0x25,0x86,0x03,0x14,0xec,0x46,0x9f,0xed,0x45,0xde,0x3a,0x7b,0xf8,0xea,0x55,0xe8,0x53,0xa3,0x49,0x58,0x4b,0xd9,0x5a,0x82,0x6a,0x58,0x5a,0x50,0x3f,0xd5,0x0b,0xfe,0x4c,0x63,0x5e,0xf1,0x83,0xd0,0x73,0x01,0x36,0x7e,0x90,0x10,0x0a,},"\xae\x2e\xb0\x18\xd4\x8d\xbd\x4f\x21\x0b\x16\x77\x8b\x5b\xd2\xfd\x14\xc9\x4e\x6b\xbf\x2b\x3f\xf8\x55\x18\xe5\x60\xab\x8d\x3e\x72\x20\x1f\x43\x34\x20\xf0\x0f\x11\xbc\x78\xe0\xe9\xf3\x72\x08\x75\xb2\xe9\xdc\x11\xe0\x43\x25\xb8\xb3\xf0\xd4\x65\xdd\xab\x21\x51\x1c\x45\x7d\x6a\xca\xd8\xf2\xfd\x5f\xdc\x0d\x28\x23\xfe\x6c\xaa\x66\xa1\x91\xa3\xb6\x32\x6b\x32\xa1\x6b\xef\xd6\x4d\x15\xb3\x61\xa4\x15\x13\x64\x1b\xce\xba\x26\xbf\xe9\x3b\xdf\x85\x4a\x4f\x8f\x8a\x0b\x29\xf7\xe2\x82\x62\xe2\xd6\xe9\x8a\xa2\x4a\xc2\x7f\x6f\x78\x83\xac\x01\xa7\x4c\x40\xcc\xe9\x47\xeb\xac\x70\xe9\xfe\xf2\xa1\x6e\x62\x89\xe4\x68\x95\x0e\x39\x1e\x9e\x24\xef\x58\xe8\x8a\x44\x37\x72\x69\xce\xba\xfe\xd8\x98\x7d\x22\x0d\xca\xe2\xd8\xb1\x26\xb6\xbf\x81\x21\x67\xd0\x23\xd9\xba\xac\x95\x0d\x9d\xb8\xcf\x52\xde\x63\x06\xbd\x48\x99\x96\x10\xc0\xa4\x33\xfa\x9e\x17\x71\xcb\x83\x2d\x41\x97\xaa\x34\x0d\xd0\xcc\xd0\x74\x4f\xc6\xb6\x2f\x90\xbd\x3e\xbb\x53\x08\xca\xb5\xf9\x40\xe2\x91\x64\x23\xcf\x0f\x3b\xf0\x80\xc0\x6a\x94\xf0\x26\x91\x04\x60\xdd\xa8\x09\x37\x4e\x64\x57\xf0\x64\xf1\x78\xe3\x08\xe7\xa1\xb5\xaf\x4d\xef\x31\x90\x07\xd0\x41\x77\x8c\x3d\x6a\x41\x9f\x51\xba\xdf\x87\x66\x38\x79\x30\x2b\x53\xff\x26\x9d\xf4\x42\xd0\xe0\x5c\x95\x8d\x5b\xaa\xcc\xee\xd7\xf5\xf8\xaf\xc8\x11\xc1\x89\x00\xee\x3b\x0f\x61\xe5\xdc\xcf\xd5\xda\xc8\x53\x32\xd3\x2e\xbb\xa3\x71\xaa\x2d\x47\xa6\x06\xf5\x95\x46\xe4\xbb\xb6\x05\xa7\x46\x77\xb1\x9a\x0f\xe8\xe9\x5f\x9f\x77\xc0\xb8\xb7\x1d\x07\xe9\x83\x00\x4d\xc2\xab\x2c\xb3\x79\x3a\x32\x3c\x10\x8d\xfa\x79\x70\xda\x00\xdb\x19\x86\x74\xbd\x34\xbf\x73\x10\x76\x7f\x76\xa2\x24\xe0\x7b\xdb\xc6\x2b\x9d\x07\x8c\xbc\x75\x36\x7e\x2e\xba\xa2\xc5\xd2\x74\xbf\x34\x27\xf2\xa0\xcc\x5d\xbe\xf0\xaf\x4e\x63\xad\x88\x9e\x13\x1b\x12\xbc\x8c\xa3\x2d\x82\x7f\x72\x60\xb0\x44\x9d\x04\x43\xfa\x28\x84\x40\xef\xd1\x36\x4e\x3c\x98\x49\x47\x7e\x73\xee\x0b\xa4\x24\x0d\x49\x2a\xf5\xce\x13\xc3\x45\x61\xb4\x50\x10\xc1\x09\xd8\x42\xc1\xfe\xd1\xbe\x3f\xa9\xe1\x84\xaa\xa1\x40\x64\xf4\x3f\x6d\xea\x0b\x65\x9c\x5b\x97\x89\x3c\xf2\xa4\x33\xbc\xfb\x1d\x2a\x87\xeb\x56\x4b\xd9\x09\x2c\x26\x66\x70\x47\x31\xf8\x3e\x56\x43\x4b\x2a\x42\x99\x65\x0c\x70\x60\xf9\xff\x7e\x8a\xad\xcb\x45\x93\xf6\x09\x18\x8d\x8b\x46\x76\x46\xcf\xe9\x52\x70\x06\x7a\x1d\x35\xcd\x75\x9f\xe5\x81\xaf\x4e\x62\x60\x2c\x02\xef\x14\x74\x41\x43\xeb\x42\x4f\x2d\x9f\x33\xa6\x02\x88\xc1\xb2\x5f\x08\xe4\xb2\xf5\xfe\xae\x06\xcb\xcc\x2b\x20\x52\xbf\x38\x4e\x1a\x6f\xcd\x84\x71\xce\x5e\x56\x58\xd7\x7f\x40\xc3\x5c\x41\x5e\x2a\x9e\x09\xfb\x58\x3b\xb7\x47\x12\x58\xe7\xc8\x06\xf3\xc2\x18\x22\xdd\x10\xf5\x6a\x64\x0c\xdc\x00\x12\x8d\x3b\xa5\x56\xba\x51\xdc\xaa\xb4\x7c\x3b\xaf\x9f\x01\x97\xd3\x66\x3d\xe8\xd0\x93\xe8\x31\x73\x32\x5d\xef\x1e\x83\xa2\xf5\xf5\xac\xf1\x2a\xe0\x9f\x3c\xe9\x6c\xd8\x88\x03\x4d\xcb\xe6\x14\x7d\xc5\x99\x83\x62\xa4\xbc\x40\x6d\x28\x84\x6a\xb1\x50\x3c\x17\xc9\x4f\x9a\xfd\x90\x3c\x9a\x58\xe1\xce\xbb\x4a\xbb\x4f\xf6\xf2\xa4\x10\x24\xe0\x6d\xca\xad\x14\xf5\xb7\x0c\x1b\x26\xe6\x9f\x96\xec\xf1\x4b\x8d\xa3\x1c\x62\x1f\x9a\xd4\xe3\x0a\xeb\x98\x23\x78\x67\x1f\x7d\x1f\x2c\x4b\x57\x2c\x41\xbb\x88\x30\x84\x0a\xc5\xdd\xce\xd8\x81\xf8\xff\xf2\x10\xc3\xc7\xf2\x36\xd8\xc5\xf2\xcf\xda\xcd\xa2\x98\x93\x30\x2f\xde\x15\x28\x2d\xb5\x40\xcb\x54\x37\x37\xdd\x77\x85\x25\x69\x22\x1f\xdd\xcd\xd6\x8d\x87\xe2\x40\x21\x79\xd3\xa5\xa7\x77\x34\xc2\x75\xa1\xd5\x60\xa4\x62\xf4\x03\x18\xbb\x68\x19\x83\x7d\xa3\xd3\x05\xeb\x49\xb3\x86\x50\xef\xdc\x8f\xe4\x09\xd4\x0f\xb9\x4c\xd5\xdc\x3e\xb0\x27\x38\xf3\x88\x52\xf6\x71\xa0\xc4\x14\x14\xb7\x6f\xb4\x36\xf3\x41\x7b\x8e\xf3\x00\x92\x1c\x00\x9e\xbb\xd7\xcf\x8e\x11"}, +{{0x18,0xe2,0x68,0xb1,0x5a,0x25,0x01,0xdd,0x4c,0x97,0x9d,0xc1,0x03,0xca,0x6a,0x84,0x22,0x16,0x13,0x2b,0x3b,0x50,0x81,0xd7,0x75,0xf8,0x86,0x40,0xf8,0x9c,0x80,0x41,},{0xb3,0x4e,0x19,0xc1,0xe2,0x08,0xfb,0x48,0xa8,0x85,0x07,0x9d,0x9f,0xbf,0x37,0xc7,0x4f,0x92,0x71,0x09,0x60,0xf8,0x32,0x15,0x4f,0xab,0x18,0x57,0x0c,0xfb,0x4c,0x1d,},{0xf2,0xdc,0xfc,0x06,0xef,0x1d,0x8e,0xcc,0xd8,0xe4,0x0b,0xdf,0x01,0x30,0x7d,0xd1,0x96,0x83,0xf2,0x14,0xd4,0xf0,0x84,0xe6,0xb6,0x93,0x4f,0x63,0x72,0x78,0x30,0x0d,0xbb,0x18,0x89,0xf2,0xd3,0x7f,0x53,0xb3,0xae,0xf2,0x6f,0xbb,0x3e,0x36,0xbd,0x75,0x98,0x5f,0xa7,0xc8,0xea,0x6d,0xdf,0xfa,0x72,0xc8,0xe4,0x06,0xf2,0x4b,0xb2,0x0e,},"\x42\x4b\xdc\xf0\xb2\x56\x00\x14\x39\xd1\x69\x58\xff\xf6\x48\xcf\x7a\x86\x04\xaf\x22\xcf\xa5\xb4\x43\x31\xb4\xdc\x35\x6d\xff\x25\xcc\x05\x63\xda\x9d\x64\x01\x33\xac\xb7\x0b\x6a\x11\x76\xc4\x82\xdb\xc9\x40\x8c\xd6\x79\x3d\x56\xbc\x29\xcc\x40\x88\x23\xd3\x88\xed\x88\xb2\x4c\xeb\x66\x21\xdb\xac\x00\x23\xee\x69\xf7\x6f\x82\x96\xa7\x39\x52\x11\x68\x5b\x3c\xea\xa9\x95\xf0\x35\x5d\x9a\xad\x3d\x97\x35\x8f\x4a\x37\x9e\x59\x20\xec\x54\x5f\x46\x96\x21\xcf\x76\x8a\xbf\x55\xd2\xa5\x54\xc9\x49\xb0\xed\x70\x18\x7c\x22\x05\xad\x03\x29\x85\xc9\xb5\xb2\xe4\xba\x57\xe0\xb4\xa4\x7d\x34\x45\x12\xb8\x4b\xfe\x9f\x3a\xa5\x60\xfe\x6e\xcf\xc5\xbd\xf8\xc3\xb4\x18\x45\x29\x35\x73\xf8\x1e\xd3\xb7\x0e\xdc\x63\xa3\x0c\x70\xcd\xa3\xf4\x55\x90\x13\x13\xf6\xd2\x3d\xb3\x09\x47\x8f\x03\xe3\x4e\x71\x35\x6d\x83\xfa\x5d\xb9\x28\x0c\xc2\xb4\x36\x9c\x3d\x24\xdd\x90\x38\xf2\x47\x59\x6c\x39\x1e\x48\xb2\xf3\xf8\x90\xa1\x41\xca\x1d\x12\x07\x7c\x69\x34\x47\x35\xa5\x9b\x1d\xd4\x07\x6b\x22\xe1\x61\x89\x99\x1e\x5f\x1b\xe4\xfb\x76\x95\xaf\x90\xeb\xea\x5d\xf2\x86\x13\x5c\xec\x2a\x6e\x99\xaa\x1d\xda\x32\x8e\x62\xc0\xdf\xb6\x37\x42\x20\x2d\x63\x62\x4d\xcc\x0c\x5c\xf1\xa5\xdf\x79\xe2\x87\x8d\xbc\x71\xfa\x96\x57\x66\x01\xaf\x22\x84\x4f\x54\x57\x33\x12\x6a\xf7\xd3\x98\x4c\x3e\xd2\x52\xe6\xa8\x76\x44\x5c\x92\x25\x9f\xbb\x47\x0a\x10\x56\x9b\x49\xe5\x79\x1f\xd0\x18\x2c\xfe\x1c\x3f\x88\x29\x7f\xac\xc8\xc3\x1a\x53\x32\xf1\xf4\xeb\x49\x58\xdb\x13\xb6\xc0\x79\xaa\x9c\x94\x94\x87\x26\x34\x03\x19\x0c\x83\xc1\x1a\x43\x19\x1f\xfe\xc6\x02\x3f\xb3\x4c\xfa\xb2\x52\x5b\xeb\x54\x6c\xf9\x20\x0a\x96\xf5\x85\x4b\x2f\x78\xec\xb2\xd9\xa5\x3a\xa9\xd2\x87\xa9\x0d\x4d\x41\x0a\x63\xad\xa0\xe9\x75\xd3\x04\xd5\x14\x83\x53\x46\x3f\xa8\x05\xb4\x80\x5f\xb4\x68\x7e\xd8\x85\x7d\xfc\xe4\xbc\x6e\x80\x83\x3c\x8f\x9a\x79\xcd\x4f\x02\x9a\x2d\x80\x2b\xfd\xc8\x19\xed\x0c\x0a\xc8\xf2\x10\x23\x28\x7f\x2b\x4b\xaf\xbc\xc8\x99\x93\xfe\x46\xd5\x2a\x9c\x62\x46\xde\xad\x61\x7d\xf7\x97\xd4\x8e\xe9\x85\xf0\xf0\xdf\x9a\xa8\x2e\xa2\x0e\x0d\x0d\xb2\x8a\x25\x4a\x9a\x25\x3f\x39\xf9\xcf\x01\xe3\xdb\x8f\x3e\xbc\xf7\xcb\x97\xce\xc5\x8c\x4e\xfe\x03\x12\x69\xb4\xb3\x7e\x4c\xbb\x36\x1f\x73\xab\x4b\x49\x80\xbd\x90\x08\x49\x53\x88\x44\xc5\x2c\xb3\xac\x75\x83\xb8\xf8\x96\x53\xa0\xde\x65\xa8\xbe\x91\x58\x2c\x55\x23\x9c\xb8\xf5\xd5\x31\x8a\x88\xd1\x60\xe1\xc8\x71\xe5\xea\x7e\x75\xf5\xa6\x9c\xba\x85\x38\x22\x1a\xb4\x2c\xe2\xa2\xc4\xd9\xc3\xb7\xec\x85\x7f\x23\x0d\x57\x37\x31\x13\x36\x86\xae\x8a\x7e\xd6\x40\xf4\x2f\x31\x02\x94\x89\xe4\xe6\xaf\x2b\x3e\xa4\xc7\x94\x8e\xd5\x37\xc0\xc5\x90\x67\x26\xc2\xb6\x25\xfd\x5f\x94\x9e\x3a\x7c\xf3\xb6\xe9\x98\xec\x76\x1d\xd6\xe2\xb5\x17\x1a\x68\x74\x97\x52\xe7\x21\xb7\x88\xc3\x47\x7f\xa1\x90\xcd\x6e\xa8\x1d\x57\x9d\xce\x64\x62\xd9\xc6\x62\xad\x89\x62\xe7\x93\x38\x71\x0c\xc8\xd2\x73\x8a\x5f\xb0\x4a\xdf\xdb\x3f\x14\x32\xcf\xd8\x0e\x2e\x96\x7d\xa0\x00\xd8\x3a\x0f\xa8\x5a\xba\xe2\x95\x2f\x3f\x36\x83\xe2\x54\xd8\x68\xf4\xbf\x80\x9e\xb2\xe3\x00\xe7\xb2\x09\x73\x4a\x3c\x89\x4e\x96\x6b\x16\x08\x8d\x5e\xd3\x54\xbf\xfb\xff\xbb\xf2\xec\x2b\xe9\x3a\x32\xa8\xbe\x5c\xfa\x18\xfa\x56\x53\x01\x2e\xda\xe5\xaf\xd8\x70\x9c\xa5\x5c\x0c\xf2\x3a\x55\x0d\x34\xca\x0f\x32\xd8\xf6\x66\xfb\x47\xa1\x2f\x2b\x73\x53\xa4\x0c\x53\x79\xf7\x53\x66\xc1\x3f\x4a\xb9\xf1\x4c\xf8\x0a\x94\xe1\xf1\x3d\x8b\x09\xb7\x6f\xd8\xd1\x4f\xfa\x53\x8f\x31\xfd\x8a\xeb\x49\xd3\x34\x33\xf4\xdf\x7c\x2c\xa6\x73\x99\x57\x9f\xe9\x90\x78\xaa\x72\x1d\x6b\x6f\xc0\xc5\x0e\x8a\x91\xfc\x71\xca\x25\xea\xc1\x37\x6f\xc6\x71\xbf\x61\x53\xe7\x20\xb2\x5c\x7e\x97\xa3\xd4\xef\x84\x42\xac\x67\xac\xf5\x8b\x50\x4b\x67\x15\x8f\x91\x30\x25"}, +{{0x3c,0x39,0x3f,0x9d,0xf1,0xfb,0x0b,0x1e,0xec,0x09,0xb7,0xf2,0x70,0xb8,0x59,0x82,0xba,0x0f,0xd5,0xe4,0xb1,0x79,0x5e,0x1a,0x7f,0xa9,0x91,0x37,0xfe,0xe2,0x4d,0x7d,},{0x97,0x4f,0xe2,0x37,0x30,0xfc,0x17,0x94,0x56,0x70,0xfb,0xc1,0xf8,0x0b,0x93,0xf9,0x45,0x93,0xc8,0xd4,0x4b,0xc7,0x5d,0x18,0x9a,0x6b,0xbf,0xaa,0xba,0xf5,0xdb,0xd9,},{0x22,0x33,0x3e,0x56,0x41,0x0f,0xdc,0xbf,0x84,0xf6,0xa8,0xde,0x74,0x13,0x37,0x69,0x16,0x84,0x49,0x5b,0xa6,0x9e,0xff,0x59,0x6d,0xb9,0xc0,0x3a,0x28,0x12,0x10,0x88,0x1e,0x6c,0x91,0xef,0xa9,0x1b,0x21,0x83,0xc0,0xea,0xc9,0x16,0x15,0x28,0x17,0xa7,0x8c,0xa7,0x24,0xba,0x7c,0x8b,0x51,0xbb,0x4c,0xaa,0xde,0xa9,0xa3,0x41,0xeb,0x0e,},"\x54\xd8\xb8\xd5\xfa\xc2\x8c\xff\xa7\x7a\x09\x16\xd6\x33\x3c\x16\xed\xbc\x8b\xb7\x4a\xa0\x6e\x56\xdc\x00\xe4\x7e\x39\x29\xe4\x08\x64\xb8\x84\x0d\x91\x20\x79\x59\x7e\xac\xd8\x1d\xae\x43\xe2\x78\x5d\xfc\x68\x9f\x3e\x85\xf8\xc6\x65\x81\xef\xc5\xe8\x53\xd1\xfa\xaa\xc7\x44\x40\x0a\xb0\x8c\xbd\xb5\xd1\x61\x46\xfa\x60\xf9\x99\x05\xed\x84\xfd\x29\x36\xdd\x73\xf4\xbc\xa2\x57\x2b\x7c\xf5\x16\x05\x60\xff\xaa\x68\xda\x7a\x67\xe4\x0e\x08\xa7\xbb\x7a\xef\xc4\x04\x3e\xbe\xd5\xfe\x80\xa4\x14\x81\x7e\xdf\x2c\x63\xf6\x2f\xac\x0d\x47\x44\x6e\xd0\xbb\x58\x40\x58\xf4\x87\x2f\xec\xff\x62\x15\x59\x31\x1a\x27\x0a\xea\x37\xa6\x29\x68\x64\xe8\xd1\x68\xbf\x1e\x2f\x55\xcd\x3b\x27\x6e\xdf\xa6\x12\xb5\xd9\xc3\x36\x2e\x61\x8b\xe6\xe8\x2a\x6e\x5f\x82\x66\x79\x24\xf3\xd1\xd3\xdf\x82\x5f\x9d\x23\xf4\xd6\x14\x2d\x31\x00\xdf\xc7\x0f\x70\x60\x3a\xbf\x3f\xda\xda\xca\x69\xef\x6a\x18\xef\x90\x92\xb3\xc4\x1e\xc6\x58\xab\x27\x21\x6f\xc6\x14\x7a\x08\x0a\xcd\xa6\x0a\x84\x19\x84\xee\x83\xf4\x1a\xc4\x2a\x80\xea\xac\x91\xff\xfc\x82\x28\x39\x1e\xf5\x83\xab\x3e\xdd\xcf\x87\x65\x23\xc2\x02\x81\x35\x53\x00\xd8\x6c\x11\xa4\xe7\xc1\xad\xe8\xe5\x05\x60\xf4\x39\x06\xc9\xbc\x8c\xa5\xfb\xf8\x33\x9f\xbe\xbd\x02\xe3\x3e\x85\x18\xbe\xe5\xe8\x06\xb8\xc1\x0f\x82\x77\xf4\x10\x66\x47\x35\xa2\xbf\x55\x68\x39\x63\x54\x92\x45\x2e\x6c\xa0\x79\xde\xb9\x75\x1c\xfc\x67\x97\xf4\x9b\xca\x96\x13\xff\x2e\x7f\xdd\x36\x46\xf7\xc5\x23\x6a\x36\xbd\xf0\x05\x17\x45\xe5\x95\xdc\x00\x72\xfd\x66\x51\xd5\x76\x27\xa6\x00\x4c\x0f\x0c\xfa\xe8\x56\xbb\xc2\x8a\x12\x31\xcb\x83\x96\x65\xff\x04\x15\x2e\xc3\x1c\x00\x7b\x3e\x2e\xd0\xa9\x73\xb2\x4c\x93\x14\x9c\xe7\x01\xe6\xfd\x65\x39\x20\x6a\xe9\x1b\xec\x4c\xe6\x5a\x89\xdb\x26\xc7\xd3\x8c\xec\xb8\x91\x9f\x96\xfb\x6c\xb8\xf6\xc1\x93\x9d\x90\xfb\x3f\x90\xb8\x87\x78\x9f\x29\x57\x5a\xb2\x0e\x0b\x08\xbc\x35\x81\x53\xd8\xc0\x35\x21\xdc\x89\x18\x70\xb5\xf7\xee\xdc\xc1\xe6\x2b\xee\x7d\xa0\x63\xae\x66\xff\x0a\x4b\x7d\x98\xd1\xcb\x75\x8f\x69\x74\x3c\x3d\xb3\xae\x2a\x2c\x9b\xe1\xbe\x09\x4f\x17\xcd\x28\xf9\x2d\x8c\xcb\xca\x98\x3c\x74\x9c\x75\xc6\x10\xf8\x40\x83\x6e\x2c\x43\x0c\xcd\xef\xf0\xaf\xa5\x44\x44\xf1\x2b\x4a\x4f\x00\x2c\x60\x94\x51\x83\x42\x44\xc0\xc0\x7d\xf8\xe1\x22\x02\xa6\x5f\x94\x44\x7c\xd4\x90\x3a\xcb\x60\x6d\x77\x25\xa8\x6e\x4a\x23\x43\x98\x4e\x67\x9c\x4a\xf1\xb3\x67\x9c\x75\x5e\xa5\x0d\x0a\xbe\x2f\xcc\x0c\x1c\x33\x51\xa9\xee\x19\x6b\x46\x44\xc4\x24\x22\x2b\xe9\x9e\x2f\xb3\x73\xf9\x64\x1e\x3f\xae\xbf\xf4\x31\x70\xeb\x03\xfb\x8e\xc4\x55\x7d\x15\x1a\x55\xfa\xb6\xc4\x99\xd4\x44\xc8\x4b\xe8\x9f\x24\x47\x68\x2d\xe4\xe6\xf6\x35\x34\x75\xef\xcb\x8f\xc5\x32\x56\x76\x3a\x94\x8d\xc7\x5c\x51\x5f\xa3\x53\x54\x5d\x0c\xba\xd2\x9d\xf5\xe9\xdb\x5c\xc4\x57\xed\x30\x86\xcf\xfb\x3d\x75\xe8\x46\xc4\xe8\xd8\x81\x47\xfc\xd0\xd8\xaa\x5a\xba\xb4\x9b\x5e\x05\xc3\xd7\xfe\xef\x63\x79\x43\x34\x7a\xd3\xf4\x92\xee\x35\x6e\xf3\x48\x81\xcf\xd8\x5a\xbc\xe8\xa1\x44\xce\x77\x61\xe2\x84\xe8\xb8\xcb\x08\x96\x60\x49\x04\x7a\x99\x6e\x23\x55\x9f\x77\x6b\x1a\x9f\x41\xcb\xa3\x95\x41\x08\x48\x6e\x29\x27\xbe\xb6\x43\x3a\x36\xff\x8b\x2f\x03\xaa\x74\xb3\xd2\x09\xc4\x88\xe0\x77\xf9\x24\xf2\x31\xe2\x83\x45\x94\x2c\x7d\xcc\x2e\x61\xd7\xc9\xb5\x22\xb6\x59\xfc\xb5\x36\x62\xaf\xf3\x64\x8f\x66\xda\x3e\x83\xe5\x9b\x0d\xaa\x90\xb9\x4c\x51\x5d\xad\xab\x10\xd5\xa8\x39\xcb\x3a\x2f\x1d\x3c\xd0\x92\xde\x55\xd9\x95\x13\x8c\x3a\xc0\xb9\x07\xaf\x15\xac\x63\xec\x18\x74\x11\x43\x27\xe2\x19\x71\x34\x5e\xf1\x70\x31\xd5\x26\x17\xe7\x84\xda\x37\x71\x43\x9b\xe2\xe8\x41\x48\xbc\xfe\xa1\x32\xbd\xe1\x0e\x6f\xda\x54\x7d\xcb\xb1\xc4\xd8\xf7\x4d\xdc\xe1\xfc\xcf\x82\x13\xe0\xda\x6e\x97\xb8\x1f\x75"}, +{{0xf8,0x66,0x9c,0x88,0xf1,0x68,0x5b,0xbf,0x04,0x80,0xcc,0x92,0x21,0xac,0x2e,0xad,0x8f,0x55,0x1b,0xfa,0x87,0xec,0xba,0x2f,0xd4,0xdd,0xf3,0xba,0x34,0x76,0xeb,0xda,},{0x34,0x72,0x3f,0xb8,0xe2,0x53,0xad,0x9c,0x71,0xce,0xfd,0xe0,0x36,0x28,0xd2,0x04,0xe5,0x35,0xde,0x47,0x9e,0x10,0x48,0xe5,0x18,0x87,0x62,0xa1,0xf3,0x37,0xfe,0x5f,},{0x37,0x46,0xda,0x6c,0xd8,0xca,0x10,0x8b,0xee,0xf0,0x64,0x87,0xbe,0xe6,0x35,0x84,0xf8,0x12,0xc8,0xe0,0x69,0x5f,0xc8,0x63,0xb8,0x6e,0x5d,0xb1,0x32,0x38,0x0b,0x62,0xff,0x85,0x44,0xf6,0xf3,0x74,0x82,0x5b,0x0e,0x3e,0xa0,0x62,0x0e,0xf8,0x54,0xc1,0x33,0x11,0x14,0xd6,0x67,0xdf,0x1f,0x9e,0xa7,0x76,0xc3,0x96,0x38,0x70,0x29,0x0d,},"\x5b\x49\x41\xbe\xec\x22\x41\xc9\xfb\x76\xd8\x48\x4f\x4f\x3f\x3a\xb4\xff\xe8\xec\xc8\xe7\xae\xc7\x6d\xe2\xab\x8c\x36\x85\x84\xd7\x51\xb0\xd3\xfe\xb8\xa1\xdc\x81\x68\xcd\xc6\x94\x96\x8f\x66\xb2\xa0\xb0\x52\xaf\xbf\x8b\xe3\xa7\xd9\x51\x63\xe9\xda\x91\x41\xc5\x9c\xa5\x59\x76\xc2\x92\xc5\xc7\x4d\x31\x31\x8d\x6a\x91\xe7\x81\x7c\x5a\x8b\x2f\x81\x21\x18\xcb\xeb\xa3\xa1\x33\x23\xcd\x97\x48\xbf\x86\xed\x1a\x85\xdd\x4e\xbc\x0d\xf4\x95\xcf\xa3\xd4\x62\x74\x34\xbf\x14\xaa\xe8\xab\x67\x81\x46\x7a\x56\xd9\x65\xd1\x0e\x63\x71\x98\x9d\xfa\x0f\x6b\xc0\xf7\x85\x9f\x37\x71\xeb\x90\x04\xb3\x43\x67\xdb\x27\x05\xdb\xd6\x0f\xa8\xf7\x89\x5c\x1e\xad\xf5\x9f\x53\xda\xb1\x68\xb4\xf9\x36\x39\x79\x02\x55\x01\xdd\xd9\x68\x0d\xeb\xc0\x7c\xd1\xca\x4a\x09\x97\x87\x6e\x92\x11\xf3\x07\xd9\xb7\xb9\xd9\x04\xe4\x8d\x28\x61\xa7\x78\xb8\x79\xad\x59\x0a\x9a\x2f\x14\x1b\xd5\x68\xe3\xa1\xbb\x24\x94\x62\x8e\x9e\xc0\xc6\x42\x55\xae\xea\x6f\x0e\xed\xca\x30\xad\x38\xa1\xf3\xff\xec\x3b\x2b\x5e\x94\x2e\x21\x94\x01\x04\xe9\x14\xd1\x1a\x44\xc0\x0f\xdd\x47\xda\x3e\x55\x13\xaa\x85\x30\xae\xe2\x47\xc9\x5c\xa6\x6d\x08\xa2\x60\x8c\x75\xba\x98\x58\xda\x14\xf9\xa8\xa3\x2b\xe7\x13\xd3\x09\xe0\xf5\x84\xc8\x1e\xf5\xbe\x04\x0e\x00\x65\xf0\x7b\x77\x5a\xe1\x75\xdf\xe2\xc8\xb9\x0a\x88\xcc\xda\x17\xfa\x4f\x21\xc7\x7e\xad\xf5\xd2\x5b\x6e\x40\x4b\xf0\x04\x47\x9e\x05\xa0\x1a\xc0\x04\x2b\x89\x93\x7e\xb2\x78\xc1\xc3\x4f\x33\x02\x8d\xb7\x80\xba\x3b\x61\x79\x18\x59\x5a\x39\xc0\xfc\xad\x67\x4b\x85\xc4\x0c\xac\x8d\x34\x5b\x7c\xa0\xbb\x48\xa2\x8e\x66\xc4\x4d\x8b\xb5\xf2\x79\x41\xe4\x0b\x0e\x9c\x70\x97\x97\x6c\x62\xdf\xef\x50\xc9\x8f\x17\x56\x6c\xcb\xac\xc8\x7c\xb0\x3b\x94\xdf\xdf\xaf\x32\xf1\xe5\x6f\xfa\x63\x9d\x63\x61\x1e\x21\x3c\xeb\xf5\x4c\xd0\xa3\xe2\x17\x2d\x81\x1c\x0e\xbd\x75\xb1\xa8\x64\x62\x64\xdd\x8b\x1a\xbd\x46\xe5\x48\x97\x2a\x1b\x26\x2c\xd9\x5d\x51\x15\x36\xdd\xdc\xb4\x97\x29\xfe\x7b\xd0\x0b\x38\x38\xbd\x2f\x20\xa1\x42\x64\x0e\xdb\x1b\x6e\x76\x5b\x65\xda\x72\xe7\x23\x32\x61\xc8\x89\x2e\x2f\x49\x49\xbb\x51\xf3\x2a\x1a\x5a\x3e\xe1\x49\xbe\xa2\x6f\xdc\xed\xb9\x91\xd2\xcd\x12\x66\x37\xe2\x97\x1e\x9b\x6f\x0b\x78\x5d\xf2\x8a\x48\xf3\x01\x70\x73\x49\x42\x3f\x44\xe8\x46\x22\x89\xd7\x25\x49\x82\x30\x48\x9d\xf1\xb5\x1b\xe3\x0f\x08\xd7\xe3\x25\x05\x65\xc6\xef\x82\x4b\xc5\x3a\x1b\xa7\x4a\x57\xa2\x5c\x06\x86\xad\xcb\x6c\x82\x5a\xb1\xca\x70\xc8\xa5\xd4\x6d\xbb\xc6\xfa\x60\x74\x61\xe2\x6d\x16\xfe\x93\xbb\x3d\x3a\x94\x3a\x3d\xc0\x5f\x30\xea\x6d\xc8\xbb\x12\xd7\x08\x21\xd3\x20\xf1\xad\xf1\xce\xba\x4b\xe6\x57\x19\x4f\x7f\xcc\xd2\x19\x90\xf8\x62\x9d\x74\x46\x01\xcf\x52\xea\x6d\x94\x05\xaa\xa2\x87\x8f\x1e\xec\x40\x03\xb4\x5a\x42\x18\xd8\xf8\x0b\xb0\xf5\xaf\x04\x73\x26\x48\x77\x52\xe2\xb7\x6d\x68\x87\x25\x20\xbb\xea\xe7\xb3\x09\xd7\x82\x82\xa0\x73\xfe\x0b\x1a\x1a\x7a\x98\xda\x23\xdf\x68\xca\xf8\xc2\x69\x9b\x1c\x7d\x0f\x47\xbd\x7d\xe2\xc0\xbb\x23\x36\x99\x63\xe6\x8a\x69\x74\xc8\xe2\xb5\x95\xb8\x29\x3a\x9f\x4d\x98\xdf\x7e\x9a\xe3\xad\xd2\xa3\xf6\x4e\x83\x03\x97\x39\x64\x2d\x19\x22\x04\xe8\x5e\x6c\x48\xd5\xd6\x71\xf6\xc7\x5a\x0a\x89\x57\xed\xbb\x74\x18\x76\x20\xf2\xab\xa9\x9c\x1c\x62\x58\x4c\x59\xac\x00\x64\x7e\x3f\xb4\x02\x92\xb9\xdc\x1a\x33\x46\x86\x85\x53\x39\x2f\xd3\xf1\x1d\x6d\xc6\xf5\xf2\xf4\xe8\x5e\xe2\x51\x25\xcd\xd6\x44\x74\x3c\x7d\x45\x28\x1e\xda\xc6\x38\x4c\x77\xcb\x98\xa6\x7d\x9a\xe6\xfc\x9a\x0a\x76\xb9\xf6\xfa\x69\x6f\xdf\x4a\xce\xab\x5f\x79\x4e\xe5\x21\xb1\xe5\xa0\xee\x57\xaf\x53\xbd\xf1\x76\x80\x1b\x4f\x45\xcf\xb3\xca\xe3\x28\x72\x34\x23\x4b\x77\xce\x21\xed\xf8\x68\x0d\x68\xc4\xa8\xee\xcf\x1b\x03\x53\x7e\xa5\x69\x9a\xcb\x56\x27\x77\xe4\x2a\x48\x6f\xe7\xcd"}, +{{0xce,0xcc,0xc6,0x83,0x11,0xfc,0x45,0xb6,0xc2,0xa2,0xf1,0xff,0x9c,0xdd,0xe0,0x07,0xec,0x78,0x7f,0xdf,0x25,0xd0,0x2c,0xcd,0x2a,0x1c,0xad,0x9d,0xe3,0xfb,0x4c,0xff,},{0x6f,0x80,0x47,0x34,0xef,0x92,0x82,0x41,0x80,0xda,0x71,0xe5,0x5c,0xf3,0xbf,0x1a,0xfe,0xf6,0x5b,0xcf,0x56,0x09,0x62,0xe0,0xb0,0xac,0xbb,0x2d,0x8c,0xca,0x59,0x84,},{0x3c,0x44,0x62,0xaa,0x47,0x01,0x01,0x32,0xdb,0xb2,0x63,0x11,0xe4,0x44,0x72,0x72,0x79,0xed,0xad,0xe1,0x5a,0x4d,0x66,0x2c,0xf6,0x47,0xf3,0x27,0x5c,0xf3,0x25,0x3e,0x6d,0xe9,0x33,0x38,0x30,0xe0,0x51,0x7a,0xa5,0xfa,0x7b,0xc2,0xd0,0xe6,0x3e,0xa2,0x59,0x7a,0x94,0xb0,0xfe,0x92,0x70,0x6e,0xcd,0x17,0x2c,0x5e,0xc5,0xc7,0xf0,0x06,},"\xba\xc1\x86\xd9\xfe\x5a\xbd\xa7\x9c\x3a\x35\xa7\xa3\xc2\xea\xe6\xae\x6a\xb2\x82\x47\x91\x27\x70\xc8\x4e\xfd\x04\x8e\xbd\x3a\xba\x57\xc3\x7c\xf4\xc6\xc7\xf3\x0a\x79\xf6\x8a\x3f\x76\xb2\x0c\xd8\xc6\x63\x1f\xcc\x96\x67\x05\x22\x08\x0e\x6b\x62\xe8\x87\xae\x6f\x44\x36\xd4\xca\xf5\x69\x43\x13\x1c\x52\xdd\x28\x2b\x25\x1c\xd0\x75\xf1\xf7\xf8\xe0\xbd\xb6\xbe\xdf\xc9\xa0\x79\x6f\x55\x79\x04\x2b\x56\xe6\x93\x74\x96\x1b\x11\xdf\xd6\x1b\x12\xde\x2b\xb7\xd4\x9b\xfc\x50\x9c\xdb\x31\x38\xf3\x35\x6a\x0d\xde\xd9\x8f\x53\x01\xb7\xc4\xa7\x48\xbf\x89\xb2\x3d\xf4\xf7\x47\x2f\xf8\xb1\xf5\x05\xd7\x65\xc6\xff\x82\xdb\xad\x74\xb9\xd7\xae\xf2\x2f\xbc\xca\x0b\x7f\x35\x04\x2f\x9a\x76\x2b\xd0\x69\x02\xbb\x21\xc7\xf9\xf7\xf6\x6b\xef\x38\x90\x1d\x75\x01\x2d\x61\xd7\x44\xde\xe7\xaf\xd8\x9f\xc7\xe9\x08\xc4\x06\x85\xbd\x44\x0a\xed\xa4\x20\x4d\x00\x6f\x26\x30\x7d\x82\xa4\x96\x96\x31\x15\xf9\x0e\x09\xf7\x66\x88\x29\x1f\x4a\x67\xd6\x41\x1f\x76\xd1\x66\x17\x87\x5b\x2b\x99\x82\xdf\xdc\x5e\xe9\xb8\x3b\x98\x17\x00\x93\x19\x11\x0b\x54\x04\xc6\x31\x16\xfb\x6e\x94\x64\x84\x6f\xa0\x09\x55\x56\x32\xf0\x76\x98\x4c\x15\xe1\xf6\x08\x17\x33\xa0\xd4\x6f\x2d\x6a\x3c\xeb\xf7\x9e\xd9\x02\x0c\x9d\xec\x8d\xf1\x58\xa3\x34\x1f\x39\xea\xa5\xfc\xf1\xcf\x42\xa9\x48\x49\xb2\x35\x2c\x1a\x1e\xcd\x4f\xb8\x14\xc2\x0d\x07\xdf\xda\x31\x2b\xd4\xf2\xf5\x8c\x15\x76\xb4\xaa\x31\x5c\x96\xc8\x78\x6a\x4c\xfb\xb7\x36\xb2\xd2\x3c\x38\xb1\xd8\x1c\x46\x44\xea\x36\xaf\xa0\x76\xe0\x55\xbe\x59\x17\xcd\x7a\x92\x35\x0a\x7e\xd6\x6a\x5a\xb2\x25\x3f\x55\xc4\xfd\x1a\x0d\x0e\x6d\x4e\xda\xb5\xf7\x12\xed\xb4\x40\xc0\x6f\xac\x8f\x07\xe6\xd7\x3c\xc9\x0b\x2b\xa7\x13\xd7\x3c\x73\x80\x23\x61\xce\x46\xa4\xeb\x5e\xd1\x06\x0c\x4c\xf5\x32\x07\xd3\x01\xf0\xfc\xd4\xf0\xc9\xd1\x58\x0d\xb2\xfc\x10\x59\xd3\x72\x07\x64\x38\xa0\x11\x92\xa7\xf9\xfd\x6f\x78\x83\xf5\x64\x22\x86\x6f\xd9\xf0\xaf\xe5\x3f\xdc\x91\x0a\xfa\x5a\x75\x1c\xbf\xa3\x77\x59\x25\x79\x16\x5c\xb5\x6d\xc3\xeb\x4d\xce\x67\xe3\xdb\x33\xa9\x81\xa5\x6b\x7d\x9f\x7b\xde\xa7\x4f\xba\xea\x34\x78\xe6\xab\x2c\x64\x4f\xd7\x77\xb8\xbf\xa7\x2a\xa0\xf0\xa5\x21\x98\xd3\x6e\x5b\x63\x4d\x2c\x9a\x11\xb7\xfe\x0a\xb2\xf9\xa4\x09\x01\xc5\xb1\x48\xa0\x19\x2e\x95\xa1\x70\xba\xf7\xd5\x35\x0f\xe0\x1e\x56\x95\x42\xb9\x34\x85\xa4\x19\x71\x44\x34\x85\xfa\xf5\x7f\x67\xf5\x6d\xfe\x2c\x58\xe5\x39\xc9\xf9\xb4\x49\xc3\xf9\x12\x49\xa1\x0c\x1a\x1b\xe7\xe0\xb3\xea\xbe\x8e\xe0\xba\xb1\xf1\x1f\x89\x61\x4d\xce\xd4\x18\xc6\x2a\x07\xa0\xb5\x9a\x13\x70\xd6\x53\x1b\xa1\x77\x09\x1c\x6a\xd5\x95\xfb\x59\x48\x82\x04\xf6\x33\x44\x73\x6e\xa1\x01\x7a\xff\xbe\xb7\x53\xa9\x97\x86\xb1\xeb\x64\x51\x0e\x2e\x71\x7e\xc9\x0e\x02\x74\x4b\xc3\x52\xd3\xf1\xb2\xab\x7b\xe0\xeb\x65\x62\x3d\x04\xfb\x3a\x04\x6c\xe7\xf4\xda\x69\x7d\x82\x98\x28\xa5\x2c\x7b\x04\x3b\x2a\x82\xec\x97\xfb\x04\x1b\xf5\x19\xb4\xde\x31\x6f\x4e\x2f\x5b\x0d\xb6\x2a\xed\x0e\xed\x95\xca\xd4\x32\x0c\x19\x47\xc3\x5f\xd8\x84\x7a\x58\x67\x87\x28\x83\x56\x11\x19\xc0\x1b\x00\x89\x21\x3d\x84\xdb\x99\xd4\x39\xf0\xf6\x44\x4d\x87\x83\xdd\x4b\x64\xbe\x35\x77\xcd\x46\x1c\xf7\x53\xc8\xe6\x1c\x91\x2d\xe2\xe5\xd7\xa7\xe2\xba\xef\xa2\x58\x97\x5d\x16\xef\x31\x17\xda\x59\xa6\xc8\x93\xf3\x33\x91\x87\xdf\x31\x68\xb8\x9f\x0f\xb0\xb2\x19\x8b\xb6\xf1\x59\x4b\xb8\x8f\x3d\x61\x0f\xce\xc3\xe3\x6d\xe0\x4a\xe1\x03\x28\x11\x2e\x6f\xf7\x4f\x5a\x8c\xe6\x8d\x40\x71\x74\xb4\xc0\x69\x1c\x76\x02\xea\xb1\xbb\x10\xf3\xc4\x9d\xd2\x2b\x84\x50\x78\x2d\xea\xe9\xa7\x31\x5e\x3b\x88\xde\x79\xcd\x15\xe6\xc9\x26\x81\x65\xed\x3a\x0f\xb3\xf8\x9b\x18\x3e\x1a\x21\x21\x52\x00\x3f\x32\xa2\x66\x5d\x37\xcd\xd7\xf6\xb5\x6c\x24\x53\xe5\x58\x0c\x4d\x21\xf9\x98\x3f\x38\x79\x8e\x9b"}, +{{0x7b,0x30,0xb4,0x2d,0xc2,0xc6,0x70,0xa1,0x95,0xfe,0x2a,0xf8,0x79,0xfc,0x5d,0xe3,0x74,0x02,0x45,0x88,0xfe,0x3d,0xe4,0x3e,0x2d,0xd5,0x08,0x44,0xf4,0x8f,0x42,0xbe,},{0x82,0xa2,0xac,0x60,0x79,0xf2,0x12,0xb5,0xee,0xdd,0x0c,0x19,0xe9,0x39,0x4f,0xaf,0xac,0xd7,0x4d,0x71,0x6f,0xde,0xfb,0xfc,0x6c,0xb8,0xa7,0xea,0xf4,0x1c,0x03,0x62,},{0x0a,0x63,0xb8,0x4f,0x46,0x93,0x5f,0xaf,0x3e,0xa1,0x64,0xb0,0x0a,0xf2,0x27,0xb0,0x08,0x68,0xa0,0x3f,0x56,0x12,0x93,0x5e,0x18,0x61,0x9a,0x84,0xa2,0xe5,0x7b,0x88,0x51,0xd7,0x46,0xe6,0x3f,0xd9,0x10,0x07,0x87,0xf5,0x33,0x8d,0x51,0xc1,0x07,0x3c,0x2f,0xc5,0x30,0x30,0x99,0xe1,0x87,0x3e,0x5e,0x3d,0x3e,0x5c,0x03,0x6f,0xbe,0x01,},"\xc6\x68\x7a\xef\xeb\xc5\xc8\x16\xd1\xa3\x34\x53\xbe\xca\x50\x20\xd3\xa9\x7c\xda\x1d\xac\x56\x62\xf0\xaf\x72\xba\xd4\x44\xe2\xfd\x11\x76\xa7\xb0\x4c\x1b\xd0\x9d\x83\x26\x18\x20\x9b\xf3\xe3\x3e\x52\x35\x38\xd6\xda\xa7\x53\x04\x6e\x87\x1d\xd3\xb3\xc7\xac\xad\x33\xe7\x9c\x1b\xb7\x89\x64\x07\x86\x5d\x16\x8d\x4b\xc3\x75\x7b\xde\x4f\x82\x3c\x08\x77\x86\x26\xf8\xc7\x1f\xb7\xcf\xcf\xdf\x03\xa8\x24\x97\xbd\x8b\xe7\xd8\xf8\xef\x64\x90\x30\xb5\xf3\x6a\x33\x94\x59\x96\x8e\x24\x6a\x1e\x42\x08\x53\xda\xce\x41\xca\x85\x0a\x4e\xea\xe8\x34\xae\x11\x96\x10\xca\x4c\xd0\x66\x2a\xac\x39\x62\x15\x86\x99\x80\x27\xef\x2f\x61\x48\x5c\x02\x85\x06\x71\x4a\xe0\x9c\x76\x39\x9d\x87\x3e\x80\x81\x58\x57\x8a\xa5\x9e\x82\x12\xf5\x88\x65\x31\x9f\x9e\x0d\x2b\x8d\xa7\xad\x52\x9e\x0a\xc1\xf1\xeb\x43\x5a\xec\xfd\x35\xf5\xab\xb9\x2b\xea\x50\x73\x49\x6b\xf4\xc0\xbf\x15\xba\xa2\x73\xbf\xc5\xc3\x10\x44\x74\xa2\xdc\xf1\x32\xc3\x33\xeb\x36\xec\x2c\xbf\x04\xfa\x95\x80\xb7\x68\xf5\xce\xa7\xb5\x61\x7e\x58\x80\xaf\xf6\x32\x01\xc2\x74\xd6\x69\x74\x3e\x1b\xc5\x56\xb0\x67\x90\x2e\xee\x29\xd2\x91\x11\x28\x89\x69\xcf\xfa\x87\x9f\xc9\xcb\xf6\x6f\xbf\x93\x26\xd9\xd9\x25\xac\x41\x02\xfa\x9f\x1a\x06\x08\x1a\xde\xc0\x79\xcb\xc9\x67\x46\xd7\x9b\x63\xa0\x12\xed\x77\xd8\x2c\x9f\xfd\x4e\x3f\x16\x1f\x6c\xea\x28\xcc\x23\xfa\xc2\xa5\x43\xf5\xb1\xd0\x64\x4e\xc0\x48\x38\x32\x7b\xcc\x65\x2b\x85\x8f\x93\xff\x46\x3f\x7e\x94\x9e\xec\x8c\x9d\xb6\x56\x9a\x86\x98\x4f\x83\x1d\xf6\xac\x6d\x95\xf3\x8f\x46\xce\xbb\x6e\x65\x83\x65\x7f\xac\xd2\x10\x8d\xbc\xd0\xaf\x23\xab\x01\x01\xa1\x30\x1b\xeb\x48\xa4\x4c\xac\xcb\x91\x09\x44\x73\xd7\xe5\xa5\xc8\x8c\x64\x4f\xd3\x42\x05\x73\xb6\x78\xf1\x7b\x51\x74\xcb\x14\xe9\x0f\xac\x69\x4d\x1d\xbc\x6c\x96\x32\xb5\x97\x4a\xef\x28\xac\x08\xd7\x20\xb2\xea\x30\x44\x0d\x2a\xfb\x04\x93\xb4\x0d\xb2\x4e\xfb\xdb\xf5\x3c\x43\x09\x21\xe5\x2a\x10\xb5\x46\x61\xe1\x49\xd1\x65\x59\x1a\x7c\xf9\x1d\x65\x08\xea\x47\x2f\xb3\xbe\x16\x39\x5e\x30\x31\x2f\x19\xb8\x7c\x47\xe4\x68\x04\xa0\xfa\x29\xb5\x6b\x5a\xc9\x50\x67\x7b\xc6\x02\x38\xb5\xe9\x9e\x03\x0b\x1e\x55\x21\x46\xa0\xe8\x8c\x29\x4c\xfc\xa8\x35\xc1\x01\xc5\x5f\x34\x23\x87\x4c\xc1\x28\x75\x6e\x73\xa5\xde\xbe\x8e\x97\xfe\x21\x66\xb6\x5c\xb4\x46\x42\x77\x0c\x6d\x1d\x23\x90\xaf\x1b\x0f\x31\xb9\x58\xc8\x30\xe9\xac\x4f\xe2\xf5\xad\x59\x05\x82\xfb\xb8\x92\xbf\x94\x95\x84\x47\x7e\xf7\xbd\xe2\x3f\x7d\xd0\x2b\x63\xf7\xc2\x90\x88\xa5\x72\x51\x00\x91\x32\xff\xbb\x78\xed\x14\xde\xfb\xef\xd9\xfd\x31\xfd\xca\xb0\x3b\xa8\x0a\x23\xf3\x33\x98\x37\x60\xab\xad\x4f\x16\xdd\xf9\xdd\x44\x14\xf0\x4d\x00\xdb\x56\xba\x72\xd6\x3a\x3a\x13\xd2\xc4\x42\xf5\x49\xfd\x66\xc9\x88\xd2\xe4\x60\x1d\x13\xb5\x2f\x77\x50\x0d\xd6\x92\xbe\xc9\xd6\xbd\x3b\xaf\xa9\x24\x2f\xdc\xfa\xeb\x69\xb9\x8b\x0b\x57\x89\xb2\x80\x38\x40\xde\xc6\x37\xb4\x9a\xf4\x38\x1a\xe3\xfa\x42\x9f\xb5\x34\x61\xa0\xc6\x74\xeb\x5a\xa1\x8d\xbd\x60\x7a\x2b\x77\xa9\x6d\x3a\xb4\x64\xec\xd9\x74\x92\xf6\xde\x46\x0c\x9f\x11\xb5\xc1\x75\x6c\xb5\x9c\xb1\x34\x8d\xfd\x77\x95\x6b\x71\x90\x7c\x54\x82\x1e\x30\x3c\xb8\xb1\x49\x06\xc0\x03\xe3\x48\x4b\xe4\xea\x05\xa6\x90\x1d\x69\xb0\x74\x85\xe8\x58\xf7\xb4\x71\xc6\x35\xf9\x03\x95\xb9\xa3\xe2\x24\x7f\x1a\xd1\x2b\x11\x8f\xfa\xfc\x72\x21\xa5\x7b\x10\xe3\x19\xb6\x1a\xf1\xc1\x36\x06\xa8\x16\x16\xce\x3f\x1d\x62\xba\x93\x2f\xf4\xe6\x3e\x74\xb8\x42\x55\xe3\xaf\x52\x10\xbb\xd5\x71\xbd\xa4\x4c\xbf\x44\xb7\x14\x42\x2c\xb4\x5c\x2e\xf2\x1f\x98\x13\x1b\xa9\x6b\x7e\xdb\x9b\x03\xe3\x3d\x7d\x18\x8d\x5b\x8d\x90\x4c\xb4\x13\x6f\xe2\x69\xdb\x14\x69\x88\x16\x8e\x7e\xe2\x45\x35\x63\x54\xf0\x02\xa5\xea\x8b\x35\xa3\xa9\x9e\x83\xa1\x32\x72\x27\x41\x44\xb3\x3a\x60\xca"}, +{{0x66,0x56,0xf4,0xd4,0x71,0x81,0x57,0xc4,0xba,0xc3,0x8f,0xf7,0xab,0xe5,0xeb,0x1f,0x81,0x2c,0x0b,0x98,0x6d,0x9c,0x01,0x4a,0xba,0xd5,0xb0,0x9a,0xa6,0xc8,0xee,0x4a,},{0xf3,0x08,0x78,0x98,0xe4,0x52,0xbe,0x9e,0x30,0xae,0xcc,0x4e,0x8f,0xfe,0x0c,0x01,0x16,0x98,0x88,0x68,0x3f,0x62,0xa4,0x5b,0x8d,0xa3,0x82,0x99,0x01,0x4f,0x5b,0x4a,},{0x9c,0x2c,0x39,0x91,0x5a,0xed,0x6a,0xdd,0x00,0x4e,0x7d,0xd6,0x84,0xee,0x3d,0xcd,0xd1,0x0d,0x87,0xa4,0x87,0xf6,0x77,0xe7,0x3c,0x2b,0xce,0x0f,0xca,0x7d,0x50,0x87,0x96,0x46,0x41,0x50,0xa5,0x2a,0x44,0x0f,0x52,0x37,0x85,0x0a,0x00,0x9c,0x72,0x16,0x2d,0x9d,0x29,0x85,0x47,0x0a,0x33,0x49,0x0e,0x66,0xd3,0xc4,0x01,0x70,0x4c,0x05,},"\x94\xd9\xe5\xe5\xa7\xb7\x05\xd9\xd9\x76\xfe\x71\xe9\x4d\x3f\x7f\xa7\x86\x6a\xfb\xf7\xec\xe4\x24\xf1\x36\x32\x77\x99\xb2\xb2\x06\xce\x4e\xf4\xc3\xf3\xe7\x05\x55\x3a\xfc\x8f\xd5\xc1\x95\x2a\x4c\x16\x65\x8d\x4a\x78\xaf\xbb\x9a\x97\xf2\x71\x93\xc6\x5b\x65\xb8\x2e\x8f\x3b\x71\x51\x5f\xac\x82\x64\x0e\x0f\x8a\x5f\xb3\x5a\xe6\xfc\x6a\x3d\xb0\x51\xa2\x2d\x4a\x53\x00\x41\x3e\x6e\x33\xd1\x9c\x20\x13\xc2\x98\x3a\xca\x8a\xd6\xce\xc2\xce\x64\xa8\x14\x16\x4f\x06\x1a\x1a\x3c\x5a\x86\x10\xa7\x65\x0b\xfb\x54\x23\xd4\x36\x2c\xe0\x22\x06\xdb\xe4\xa6\xfa\x82\x6f\x03\xb4\x2a\xc3\xcd\x9e\xa4\xc6\x51\x40\x1b\x3c\xea\x82\xc3\x99\x3f\x6a\xf8\xb2\xc9\xe2\xe6\xff\xe6\x92\x80\xab\x3f\x09\xfb\xe9\x0d\xd5\x47\xcc\xda\x9d\x9e\x8e\x8a\x53\x7b\x3b\x36\x05\x54\x22\x7e\xd0\x70\x9f\x29\x31\x98\x98\x2e\xfb\x5e\xfb\x0e\x73\xe0\x00\x42\xd1\xa0\x63\xb5\x74\x52\x02\x7d\xce\x1a\x39\xe4\xb0\x06\x8f\x58\xb1\x11\xec\x5d\xc1\x42\xbf\x41\x9a\xd8\x93\xd5\x4f\x42\x60\xcb\xde\x76\x28\xf7\x83\xde\x84\x96\x38\x03\x06\xa4\xef\xf6\xd8\x28\x69\x10\x42\x59\xc9\x4c\x54\xad\x5a\xa8\xb0\x67\xc4\x24\x96\xcb\x88\xdd\x31\x15\x0e\xa0\x4d\x49\x9b\xfa\xc9\x1f\x4b\xb3\xe6\x8a\xf5\xaf\x7a\x56\x8a\x3e\x4c\xe7\xf1\x70\xd9\x86\x01\x16\x3f\x49\x52\xf1\xd2\x5e\x12\xe0\x0e\xf0\xa2\xd8\xf1\x11\xaf\xdb\x0f\xaf\xba\xd2\xbf\x8e\x8b\x9d\x49\x36\x3f\xca\x68\x18\x36\x17\xb5\x41\x27\x0d\xda\x46\x09\xb2\x61\x67\x29\xab\x1b\x8c\x42\xdb\xdd\x7b\xf9\x86\xaf\x8f\xba\x52\xe7\x33\xe4\x2b\xa0\x3c\x89\x2e\x1e\x1e\xc0\x6a\x90\xb1\x63\xf5\xa7\x9f\x61\x65\xeb\x73\x16\x97\x2a\xc1\xad\xbf\xcf\x1d\xca\xb0\x78\x47\xef\x82\xc2\xca\xb1\x01\x5d\xbb\x50\xaa\xdc\x79\xfe\x11\xc8\x32\x09\x8c\xac\xc3\x98\x20\xab\x08\x5b\x69\x63\xbd\x42\x16\x0e\xd6\x61\x3b\xae\x5e\x20\x1f\x17\xc0\xfd\x7f\x32\x35\x7a\xe3\x50\xce\x9c\xbb\xe9\x26\xfa\x42\xdc\xbd\x42\x2a\xc1\xbf\x09\xa1\x9a\xd1\xf6\x94\x69\xe4\xd1\xdc\xb1\x24\x11\x8e\xd4\x52\x2d\x35\x3c\x17\x42\x98\x65\x0f\xf8\x83\x82\xfa\x2f\xdb\xb2\x86\xc4\x5b\x18\xa9\xba\xf6\xf6\x76\x3a\xc2\x0c\x9c\xa4\x76\x7d\x34\x8c\x4b\x8d\xed\x63\x00\x76\x65\x7b\x85\xb1\x4c\x11\xae\x27\x37\xea\x29\xa4\x35\x15\xb7\xf0\x56\x74\xa0\xcd\x3e\xd4\xbf\x6a\x3d\x18\x9a\xe9\x72\x21\x8f\x87\x7c\xd8\xaa\x69\x49\x9d\x5a\x08\xc9\x9e\x44\x06\x94\xcc\xac\xcd\xf1\xf6\x42\xe1\x4e\x90\x10\x5b\xee\x6d\x98\xed\xee\xab\x3b\x4f\x33\x9f\x30\x01\x88\xae\xc0\xc1\x6b\xd6\x45\x21\xd9\x28\x73\x98\xe6\x48\xdb\x94\x33\x0e\xd8\xf6\xb9\xab\x6c\x7a\xd9\x3f\xfc\x43\xe8\x79\x2e\x63\x7c\x61\xbf\xf7\xd8\x56\xe5\x4e\xf4\x98\x73\x84\xe3\x12\xcb\x57\x01\x7a\x50\xea\xe5\x95\x2a\xbe\x19\xd8\x99\x9c\x8c\x82\xdf\xc4\x57\x98\xcc\x17\xc8\xd9\x49\x6b\xf5\x20\xec\xc5\xb7\x7f\xe2\x84\x91\x55\x66\xc4\x56\x85\xc3\x04\xa2\xac\xd5\x25\xef\x12\xc8\x6f\x38\xae\xf5\x54\xd8\xa2\x38\x47\x37\xcc\x41\x33\xfb\x7e\x2b\x65\xc1\x3b\xef\x31\x66\x8a\x6c\x2f\x60\xee\xcd\x84\x12\xee\xff\x7f\x6b\x60\x5c\xbe\x95\x08\x3e\x23\x3e\xc1\xa7\xbb\x36\xde\x23\x6c\x8a\x71\xba\x28\x72\xbe\x94\x6c\xd3\xb3\x89\x35\xf5\xda\x64\xc8\xfe\xc8\xe1\x4f\x45\xcc\xf6\x12\x4b\xab\x7f\x70\x56\x7c\x2f\x2b\xfd\xd5\x66\x67\x60\x95\x72\x03\x7c\x76\x14\x6c\x99\x17\x07\x65\x9b\x57\x09\xb0\x74\xe3\x45\x1f\x92\x1a\x2d\xf2\x83\xb9\x6a\xa2\x6a\xb4\x76\x62\x50\x16\xf1\x81\xad\x64\xc9\x91\x9c\xf4\x1d\x71\x4a\x1a\x9a\x5e\x2b\xb2\x6b\xaf\x87\x70\xb2\xeb\xa7\x7b\x77\x8a\x33\x26\x77\xa7\x57\x2e\xe3\xa2\xb1\xdc\x05\xf7\x35\x6b\xdc\xae\x5f\x55\xe3\x53\x29\xe3\x4c\xaa\x79\x43\x0b\x27\x0c\x03\x61\x60\xdc\x9f\xca\xab\x5b\x25\x45\x43\xac\x94\xb2\x46\x81\xf1\x71\x72\xb6\x15\x9d\x16\x62\x1d\x7a\xd0\xee\xbd\x89\x5a\x1e\x1d\x09\xb9\x16\xa8\x6f\xb4\x8e\x4c\x91\x66\x10\x57\xee\xe9\x5c\x08\x70\xed\x54"}, +{{0x14,0x38,0x3e,0x6e,0x56,0x04,0xc9,0x9c,0x24,0x8d,0x39,0xbe,0x51,0xd1,0x64,0xb1,0x34,0x42,0xb0,0x5e,0x51,0xd7,0x8e,0xcd,0x99,0x93,0x64,0x22,0x1a,0x45,0x03,0x6b,},{0x2f,0xc1,0x61,0x38,0x22,0x0a,0xb7,0x4b,0x3b,0xd4,0x46,0xf8,0xa7,0x14,0xb5,0x8d,0x54,0x63,0xd4,0x0d,0x43,0x67,0x92,0x50,0x07,0x47,0x4c,0x5b,0x9e,0x35,0xd4,0x94,},{0x45,0xe8,0xed,0x1a,0x75,0x1d,0xfc,0x3b,0x9b,0x7b,0xd7,0xa1,0x0b,0xf5,0xbd,0xcf,0x8c,0xa4,0x61,0x86,0x5a,0x49,0x0c,0x10,0x5f,0x10,0x45,0x29,0x41,0xcf,0x87,0x72,0x12,0x14,0xbf,0xbf,0x3a,0x35,0x60,0x6b,0x7c,0xe3,0x5d,0x6f,0x70,0xaa,0xf2,0xd5,0xea,0xdc,0xc0,0xde,0x03,0x5e,0x9b,0x2f,0x6d,0x7b,0x86,0x2f,0xc2,0x84,0x90,0x04,},"\xc4\x75\x3b\x7f\x7a\x6f\x6d\xea\x25\x15\xc6\xe3\xd2\x95\x61\x50\x6f\x4f\x36\xe0\xde\x84\x99\x92\x21\xf2\x28\xe2\x0b\xd5\x12\x8e\xd9\x3b\xdb\x8d\x11\x93\x23\x7d\x8e\x29\x41\x69\xa2\xbc\x44\x8a\xf9\xdd\x36\x06\x63\x01\xef\xb7\xfe\x12\x31\x35\x3c\x06\x23\xff\xe1\x11\x5d\xeb\xb6\x90\x5a\xc6\x94\x6e\xe3\x82\xa2\x7c\x3c\x09\xe1\xb1\xf5\xc1\x14\x93\xdb\xa3\x7d\xa0\xff\x6e\xea\x75\xd9\xfa\xb0\xee\x92\x6d\x70\x1d\xac\x2f\xc5\xb7\xef\x57\x88\x80\xa5\xd5\xee\xec\xad\xc1\xf4\xbc\xc4\xcd\x4e\xc6\xf2\xf1\x4f\x52\xa8\xc1\x64\x07\x2e\x6f\xde\x5a\xb2\xee\x9c\xee\x0b\x48\xe5\x1a\xf0\x55\xf9\xfe\xc7\xc6\x37\x50\xfe\xdf\x72\x33\x2b\x23\x86\x3a\x1e\x54\xc5\x2b\x46\x1a\x21\x50\x6d\xfd\xfc\x63\x88\x0e\x22\xd8\x9c\x89\x44\x12\x66\x6c\x92\x98\x21\xc0\xe4\x39\xe7\x45\x41\x5f\x71\x79\x69\xe6\x05\x85\x54\xd6\x4b\x94\x7a\x4f\xc9\xd1\x6a\xca\xe3\xe4\x9a\xec\x08\x80\x1a\x09\xd9\x72\xf7\x9e\xad\x68\xd5\x29\x76\x80\x69\x73\x5c\xaa\x74\x2b\x45\xa5\x83\x05\x81\xb8\x0c\xa0\x61\xa6\xc1\x51\x5e\x3f\x7d\x5a\x93\x37\x87\x8c\x19\xfc\x94\xee\xf2\x26\x98\xea\x6c\x4d\x05\xf9\xed\x41\x1b\x6b\x8f\x05\x2b\x5f\xf1\x5d\xc2\x3a\x64\xbe\xea\xae\x99\xf8\x48\x93\xde\x3d\xf9\x40\xa4\xe0\xb8\xe9\x93\x93\x01\x39\x05\x2d\x99\xbe\x47\xbc\xa8\x77\x5f\x85\x63\xbd\x40\x26\xb7\x13\x43\xd5\x19\x68\xf2\x33\x75\x28\xf4\xc9\xdb\x8b\xbd\x0a\x29\x8a\xf0\x4b\x27\x69\x5d\x86\xb7\xf7\xba\x6c\x4c\xcc\x62\x73\xfe\xbc\xd8\xf7\x5c\xff\x26\x69\x95\x24\x4f\xc1\xfa\x13\xd8\xd8\x43\xf0\xbf\xf4\x9c\xc2\xd5\x08\xf4\xa2\xb3\xaa\xd1\xd9\x5f\xb2\x2a\x2b\xc6\xad\x1b\x96\x6b\x08\x12\xd9\x90\x70\xbb\xa0\x7c\x92\x3e\xe4\xd0\x81\x07\x48\x6d\xc0\x1a\x06\xdb\xa6\xf1\xd5\xf1\x05\xac\xea\xde\x33\xb1\x66\x51\x0e\x42\x7e\xbb\xce\x52\xa3\xe7\x83\x1f\x0f\x78\xa3\xc6\xe0\x72\x60\x83\x34\xd8\x02\x1c\x33\x8a\x73\xcc\x0c\x47\xf1\x9c\x9f\xae\x40\x3b\x97\x16\xd0\xd1\x5f\xbd\xf6\x46\x6b\x08\xf6\xac\xce\x3f\x50\xa7\x03\xb1\xde\xa8\xd8\x26\xdf\x84\x2c\xa1\xba\x20\xd2\x9f\x45\x48\xac\xfc\x75\x4c\xf0\x11\xf5\x70\x68\x1b\x59\xe4\xda\x25\x38\x5e\xbd\x6d\x5c\x3a\xdc\x93\x05\x29\xe1\x66\xce\x67\x05\xf6\x01\x02\x10\xdb\x10\x64\x62\xb3\x33\x32\x04\xe7\xad\xad\xee\x66\x06\xa5\x62\x06\xb4\x7e\xef\x20\x74\xb1\x16\xe2\x2a\x61\x54\x18\xec\x2c\xdc\x33\x1f\x1e\x19\xe0\x7e\x8a\x37\xb9\x2d\x69\xdf\x07\x34\xe0\x85\xda\xee\xb9\x01\xec\x6e\x8c\x35\xf1\x03\xf1\xd8\x6e\xf0\xd2\xa2\x65\x2b\x01\xd1\x83\x59\x7e\x4c\xfd\xee\xdf\xe5\xdf\x9a\x7e\xf6\x6a\x1c\x79\x6a\x37\xa2\x71\x13\xb9\x44\xdd\x7b\xa1\x7c\x46\x00\x15\xab\x8a\xce\x45\x1c\x57\x85\x0e\xc6\xc2\x90\xc5\x4e\x51\x13\xf5\x5e\x99\xa8\xe6\xe4\x71\x1e\x3b\x78\x17\xbf\x91\xa5\xad\xb3\x7f\xb9\x46\x1b\xe6\xb1\xb5\x5d\x58\x60\x46\xe4\x2a\x54\xc5\xde\xf4\x07\x6f\x1f\xf6\xc3\x1b\x80\x6f\xc6\x02\x47\x43\x56\xaa\x28\x99\xea\xe7\x0f\x5e\x5a\xbf\x1f\x75\xa7\xf2\x4c\x13\x4c\xde\x11\x79\x3b\xb1\x62\xe0\x3a\x58\x3d\x5b\xe0\x46\xac\xc7\x34\x56\xd1\x2d\x50\x9d\x92\xf7\x70\x57\x68\x68\x6f\x6c\x71\x4a\x4e\x57\xec\x88\xb7\x13\x98\xe2\x3e\x83\x5d\x6d\x65\x47\x22\x59\x96\xb7\xed\x08\xf3\xb7\x44\x3b\xb1\x7c\x89\x94\x09\x49\x3d\x0e\xfe\x84\x55\xbe\xc8\xe8\xc2\x84\xa3\xb1\x49\xa5\xb4\xca\x63\x1e\xa6\x20\xb1\xbb\x81\x7c\xed\xab\xa5\x0b\x04\x44\x11\x84\x9d\x26\x0a\x6f\x2a\x0d\x3f\x2c\xce\xec\x38\x42\x71\x9a\x5e\xa4\xfe\x18\xdd\xe0\xd4\x2d\xcb\x33\xad\x21\xe6\x45\x33\x25\xaf\x6f\x3c\x00\x9f\x2b\xb9\x78\xd3\x0c\xee\xae\x9a\xa4\x92\x8b\xf7\x37\x67\xcd\xa9\x29\x2a\xb8\x93\xce\x5f\xa3\xaa\x4c\x23\x21\x63\xb4\x5c\x64\xed\x79\x77\x77\x9b\x1c\x0c\xaf\xcf\xc2\xb9\xfa\x08\x4a\x32\x4f\x11\x3a\xde\xec\x21\x8b\x47\x35\xb6\xb4\x64\xdb\x6d\x46\xc2\x79\x1a\xf3\x45\x5f\x1c\xa5\xea\x1e\x9a\x04\x8c\x05\x1a\x54\xdf\xa0"}, +{{0x59,0xb0,0x72,0x63,0xb2,0x2c,0x0a,0x38,0xbb,0xc5,0x91,0x05,0x95,0x94,0xb2,0xbd,0x92,0x7e,0x80,0x59,0x61,0xdd,0x07,0xe1,0xf9,0x42,0x45,0xb2,0x3a,0xa2,0xe0,0x16,},{0x0b,0x1e,0x4c,0xf5,0xaf,0xf2,0x78,0xec,0x65,0xb4,0x05,0xf5,0x10,0x8e,0x1b,0x5b,0x18,0xa9,0x69,0xad,0x1f,0x1e,0x63,0x81,0x91,0x2c,0x82,0xd6,0x98,0x90,0x7c,0xba,},{0x88,0x6d,0xa3,0x3e,0x35,0x53,0x28,0x5e,0xa5,0x9c,0x14,0x31,0xb6,0xe8,0x6e,0xa4,0x9b,0xb6,0x8b,0x2e,0x0e,0xfd,0x2b,0x15,0x7e,0x77,0x91,0xb7,0x4f,0x35,0xa2,0x42,0x1b,0xb3,0x59,0xf3,0xdc,0x1e,0x4c,0xe5,0xf1,0x1f,0x73,0x65,0x2e,0x03,0xbf,0xc0,0xb4,0x29,0xc5,0x8f,0x0f,0x2d,0x74,0x18,0xc7,0xc2,0x0b,0xce,0x2e,0x2d,0x19,0x01,},"\x08\xce\x0d\x4d\xb5\xc2\xaa\x50\x0a\x19\xef\xbc\x8d\xc8\x54\x92\x50\xf7\xdd\x46\xa7\xa9\xa5\x40\x74\x17\xb3\xd5\x18\x20\xe4\xb0\xd6\x12\x75\x58\x3f\x56\xf8\x97\xfd\x94\x2b\xdd\x73\x11\xad\x6b\xaf\x73\x81\x28\x56\x7a\xf6\x55\x8d\x75\x90\x6a\x02\xc4\x34\x3a\x99\x55\xd5\x9b\x11\x08\x8c\x58\x8d\xc7\xdd\x08\xf6\x79\x65\xc5\x60\x2a\x56\x92\x8d\xda\x4a\xe1\x64\x29\x31\x63\xb5\x17\xca\x17\xde\xd0\x4f\xe4\xab\x2f\x97\x89\x13\x0a\xe9\x6a\xb2\x31\xf0\x7e\x09\x01\x5b\x78\xf3\x84\x8c\xef\x43\x5d\xb0\xad\x9f\x35\xe0\xfb\xc9\x85\x1e\x3e\xcf\xc9\xfb\x18\x6d\x14\xd8\xda\x4d\xda\x45\xd0\xb3\xeb\x3e\xe4\x50\x0c\x10\x1e\x31\x94\xb5\x72\x14\x06\x89\xcd\x75\xda\x12\x87\xb2\x54\xf3\x74\xe3\xd9\x33\x26\xae\x5f\xaf\x11\x40\x18\xac\x71\x4b\xd0\x03\x75\xd9\x2a\x8b\xb6\x59\xc3\x29\x12\x83\x1f\x4f\x20\x77\x6e\x9e\x2c\x25\x02\x9f\x0a\xff\x39\xfd\xda\xc7\x24\x15\x43\xa0\x36\x6b\x84\xde\x7b\x1f\xf2\x3e\x8e\x4d\xc0\x93\xdf\x0d\x2d\xd5\xe5\x3e\x68\x47\x94\x8c\xf3\xd0\xff\x3f\x56\x4a\xd9\x4d\x9c\xc0\x0a\x5e\xa5\xb6\x95\xe4\x08\xbf\x50\xf5\xba\xb2\xf6\xea\x87\xba\x8a\xd3\xa1\x94\x01\x95\xcf\x1b\xc2\xb5\xb3\x48\x47\xad\x3a\x5e\xff\xb8\xa7\x82\x3d\xe9\x1e\xf1\x63\x38\x69\xd1\xf0\x46\x43\xaf\x4d\x82\x6a\x59\xe7\x8b\x9d\x18\x63\x12\xb3\xd9\x72\x26\x36\x54\xac\x55\x87\xb8\x0b\x71\x76\x46\xf3\x10\x03\xdb\x81\xac\x70\x86\x0d\x3f\xc8\xcd\x3a\x6a\x0a\x0d\x57\x6d\x25\x73\x1e\xf7\xb8\x96\x62\x63\xd7\xa0\x5b\x55\x00\x9e\x8a\x23\xda\xc0\xf9\xa2\x1a\x24\xb0\x6e\x13\x90\x0e\x44\x44\x46\xfd\xfe\x56\xcb\xc1\xa0\x26\xdf\x41\x06\x6b\x20\x1b\x14\x81\xe5\x61\x58\x92\x6c\x0c\x9e\xa9\x0f\x0c\x64\x5a\xab\x4b\xef\x12\xd4\xe0\x72\xcb\xfd\xc3\xc3\xd5\xe0\xc7\x2c\xf8\x8f\x16\x6d\xe0\x48\x87\x4f\x35\x34\xe0\x40\xc6\x2b\x16\x62\x82\x1b\xdd\x16\xb0\xe8\x58\x28\x17\x46\x1c\xb2\x68\x92\x79\xb4\x46\xd7\x0c\x8a\xc2\x0a\xd0\x3e\x59\x8c\xad\x49\x08\xc5\x2c\x35\x0d\x42\x43\xee\x8a\xed\xb8\x7a\x4a\xf9\x77\xf7\xdb\x57\xcd\x94\x7b\x47\xd6\xbb\x51\x40\x9d\x80\xd8\x1f\x6d\xb0\x3c\xb9\xa6\xa6\xb7\x98\x12\xf4\x70\x69\x0a\xfc\x18\x36\xa5\x31\x33\x80\x94\xcf\x26\xd3\xc1\x23\x2f\xd5\x60\x5d\x8f\x8c\x55\xb6\xf8\xa2\xa7\xef\x1e\x0c\x78\x15\x55\x94\xb2\x37\x95\x6d\x2a\xba\xd6\xa9\xad\xcd\x58\xe1\x1c\xcd\x35\xcc\x99\x5b\x9a\x0a\xec\xbf\x7f\x57\x41\xac\x05\x1b\x04\xef\x6b\x97\x44\xb5\x6f\xcc\xb4\x63\x98\x52\x8b\xb3\x1f\xbe\x84\xe0\x78\x84\x3e\x69\xbf\x33\x88\x98\xcd\xef\x69\xad\x41\x87\x23\x95\xe4\x6b\x59\x39\x04\x82\x55\x47\xe0\x0b\xda\xf2\x21\xf8\xfa\x58\x7e\xa2\x03\x7f\xfb\x9a\xc9\x30\x7d\xd3\xf8\xf3\x5e\xc5\x38\x6b\xa9\x66\x33\x3e\x2a\xc8\x72\x7b\x0e\x1b\x80\x61\x2d\x3c\x7f\x2c\xb8\x8b\xaa\xca\xdf\xe2\x16\x3b\xc3\x8c\x88\x84\x2e\x76\xa3\x94\x57\x1d\x40\x61\x0e\x8a\x29\x76\x02\x79\x37\x63\x29\x6e\x3e\xab\xf7\x20\xe9\x84\xb2\xed\xd2\x8c\xf5\xc4\xe0\xf9\xa0\xf7\x6a\xce\xba\x28\xcc\x1f\x1b\x69\xff\x1d\x35\xb4\xbd\x33\x47\xb7\xf9\xa9\x5a\x4c\x1e\xa1\x07\x34\xe1\xc9\x18\xeb\x96\x24\x9d\x0c\xc7\x0b\x47\x7f\x6f\x23\x80\x9b\xbd\xa9\x01\xd5\x3f\x48\x5a\x71\xf5\x08\x60\x02\xc1\xb7\x1e\xfc\xc4\x1c\xb1\xae\xb5\x12\x2a\x3f\x3b\xfc\x96\xc5\x1a\x55\xd7\x5c\x02\x98\x42\x88\xbe\x65\x78\x87\x85\x4c\xfa\x73\x89\x74\xbc\xd5\x44\x01\x46\xf9\xbb\x14\x04\x0d\xe5\x4f\x54\x44\xad\x43\xb7\x9a\xf9\xbd\xb2\x4e\xd6\xa4\x8e\xb2\xfd\xee\xd7\x1f\x31\xf0\xec\xe1\x02\xe9\x18\xe9\x56\x35\xc7\xa0\x38\x63\x3e\xe3\x48\xd8\xb5\x78\x16\x52\xd5\x05\x9d\x21\x5a\xc9\x7f\x30\xea\x20\xd2\x77\xeb\xbf\x15\x24\x69\x05\x42\x8a\x7b\xec\x02\xb8\xf9\x26\x31\x5b\xad\x67\x23\xfd\x64\xd7\x1f\xc9\x5f\x33\x33\x64\xcb\xe9\x0d\x46\x46\x33\x3c\x40\xdd\xa6\xd1\xd4\x33\xb7\xc1\x95\xa7\x58\xdb\xb4\x03\x8a\xf5\xdc\xc7\x23\x2d\x45\x47\xf5\x40\xe3\x94"}, +{{0x5c,0xc1,0x15,0xd8,0x39,0xe0,0x58,0xcd,0xb6,0x51,0x8e,0xe9,0xc1,0x61,0xc0,0x04,0xd8,0x8b,0xd3,0x90,0x8d,0x3c,0xf6,0xd5,0x2c,0x8f,0x29,0x6a,0x1a,0x07,0x6b,0x9b,},{0x1e,0x8f,0x33,0x05,0xbf,0x2f,0xa1,0x1b,0x17,0xd9,0x24,0x16,0xab,0x0e,0xa7,0x62,0x39,0x6d,0x88,0xf2,0xf9,0x70,0xef,0x0b,0x10,0x0e,0xd3,0xbf,0x5c,0xc1,0x34,0x40,},{0x03,0x71,0xc2,0xd6,0x4c,0x5e,0xc0,0xc8,0x27,0x6c,0xa5,0xff,0xa6,0x15,0xef,0xf4,0x2f,0x9e,0xff,0xfc,0x58,0xdd,0x8e,0xcf,0xcf,0x67,0x62,0x0a,0x9b,0xcb,0x38,0xfa,0xf1,0x18,0x93,0x2b,0xf2,0xcd,0x5b,0x92,0x05,0xfa,0x55,0x13,0x34,0xdf,0x2a,0x75,0x7c,0x59,0x77,0x44,0xf7,0x91,0xf3,0x71,0xfb,0xed,0xd9,0x8b,0x21,0xf7,0x34,0x05,},"\x53\x3e\x49\xc1\xd5\xf3\x3c\x5e\xc4\xbe\x84\xc6\x19\xf4\xec\x64\x9c\x25\xfd\x70\xbd\xcf\xe2\x57\xa6\x3c\x33\x73\xa4\xd0\x89\xc8\x9a\xf6\xee\xb7\x16\x0d\xd7\x7a\xb6\x6b\x1e\xe7\xe1\x08\x50\xab\x4f\xc1\xf3\x51\x32\x33\x2b\x53\x78\x9b\x2b\x01\x40\xc4\xf2\x0f\x97\xf2\x14\x20\x72\xd6\x24\xaf\xf7\xaa\xd3\x24\xaa\xcd\x06\x8c\x03\x5a\xff\x52\xfa\x71\x2f\x4e\x74\x83\x2d\xe0\x31\xb2\x64\x23\x14\xd1\x71\x10\xde\xe6\xfb\x85\x76\x2d\xc3\x0d\x7e\x97\x78\x2f\xd1\xfb\xff\x71\x79\xf0\x09\x17\xf5\x5a\xf7\x50\x3a\x5b\x7e\x23\xc6\xea\xdb\x65\xe1\x04\xf1\x51\x7b\x66\x24\xc9\xe5\x20\x4b\x3f\xd2\x9a\x65\x85\xe9\x2c\xe3\xa3\xee\xe2\xc5\xae\x17\x79\x20\xf7\xb4\xab\x2c\xac\x87\xd6\x72\xab\x6b\xaa\xc1\x18\x6d\x90\x4a\xea\x34\x98\x53\x4e\xb5\xab\x23\xe4\xac\x4c\x0d\xdb\x0d\x82\xa5\xae\x53\x1d\x76\x54\x9d\x36\x76\x28\x57\x7b\xac\x42\x35\xe8\x97\xd9\xfe\x20\x55\x22\x04\x7d\x21\x4f\xf6\xcc\xf3\x11\xc4\xe3\x97\x82\x7d\x97\xf2\x86\x8e\x70\xac\x17\xd2\x8e\x33\x49\x99\x74\x4d\x35\x93\x76\xa4\x82\xfd\xcb\x41\x4b\x02\xb2\x68\x7b\x96\x2e\xe8\x08\x6e\x57\x3f\xe0\x00\xdc\x51\xde\xe0\x68\x79\xc6\x84\xe2\x5f\x94\xce\xe5\xe8\x61\x34\x7e\x7b\xe7\xfc\xa5\x49\xa0\xf7\x65\x13\x6a\x2f\x4b\x88\xfe\xde\x07\x02\x4d\xd2\xfc\xe1\xf6\xd0\xc0\x35\x4d\xa1\xa1\x6e\xf3\x66\xb3\x15\xb3\xf7\x23\x30\x31\xf9\x79\xb7\x0e\xac\x6e\x23\xbf\x3b\x34\x9e\xfb\xd0\xe4\xf5\x3f\x4d\x5c\x41\xfc\x00\x42\x76\xa5\x96\x70\x65\x9f\x69\x05\xef\x03\xd2\xfc\x09\x8d\x58\x9f\xcb\xc1\x32\x82\x82\xfa\x22\xb1\x0d\xb8\x3c\x5d\x70\x86\x59\x94\xfd\x19\xd7\x60\xa3\x9d\x47\x6e\x02\x33\x0d\x2c\x6d\x19\xe7\x42\x26\x7d\xd3\x65\xbb\xe1\xfe\x5c\x71\x1a\x95\xb1\x84\x50\x8c\xe4\x8c\x1c\x96\xd7\xe6\x39\x90\xb4\x08\xd4\x50\x89\xbe\x79\xe3\x2f\x9c\xb0\x16\x2f\xd1\xe7\xd0\xd1\x9d\x97\xd0\xae\x78\xff\x82\x4c\xc6\x98\x94\x86\xc0\xbd\x03\x83\x52\x55\x1f\x37\x49\x9e\x9e\x98\x26\x80\x4e\x9d\x26\x24\xad\x0c\x7b\x75\x34\x56\x0f\x45\xfd\x7d\x32\x4b\x8e\x51\x7e\x01\xc9\xb2\x74\x3c\x14\x97\x9c\xfd\x51\x2b\xc3\xfe\x66\x72\x79\xb3\xa2\x77\xfb\x46\x3e\x9d\x73\x49\xb6\x4f\xfc\x9f\xe6\x08\x84\xc2\x1e\x48\x10\x81\xed\x70\xe6\xda\x5a\x35\x39\xc4\x48\x97\x1f\x0d\x97\x87\x28\x9f\xcb\x00\x80\xf2\x19\xe9\x94\x49\xf8\x29\x8c\x42\x47\x5f\x87\xfd\x10\xae\xb5\x09\xc5\x30\xcf\x6a\x57\x74\x8e\xb8\xf3\x56\x21\x61\xfa\x48\x75\xea\x95\x3f\x09\x65\x9c\x7d\xf7\xa9\x95\x0f\x03\x17\x46\x7c\xb4\xe5\x36\x6e\x19\x6e\x32\xf5\xe2\x69\x67\x33\xa2\x5e\xac\xbd\xe4\x92\x10\x49\x07\x62\x06\x0e\xa2\x31\x37\x0d\x40\x90\x42\x9b\xb0\x6b\xb8\x67\x39\x9e\x8d\x37\xbf\x5d\x21\xa0\xe7\x21\x47\xe4\x96\xcf\x3b\x7d\xd6\xfe\x6e\x5e\xde\xa9\x66\x8d\x80\x21\x90\xa9\x1c\x60\x0e\x29\x52\x3f\x8e\xb9\x04\xe4\x8b\x70\x41\x2b\xc1\x0a\x70\x20\x98\x4c\x5f\xf0\xf5\xf3\x83\xf2\x14\xae\x59\x4d\xc8\x59\x71\xe4\x80\x37\x28\x48\xd0\xd7\xe7\xcc\x5c\x18\xff\x88\xba\x9b\x26\x2d\x78\x84\x69\x8a\x41\xc6\xc7\x81\x9c\x03\x19\xfd\xc6\xbb\x07\xb9\x1d\xc1\x69\x4d\xaf\xe3\xaf\x37\xa5\x38\xbf\x2b\x2d\x8c\xac\xb2\x7d\x24\xcd\xc6\xea\xdb\x8c\x6a\x2e\x6b\x7d\xf8\xa4\x65\x4a\xe9\x37\x85\x0c\x89\x0a\xd9\x30\x98\x0a\xfc\xc1\x49\x2d\xb8\xa0\x16\x8c\xbc\x9f\x10\x65\x7e\xb4\x8d\x2a\xc8\x7f\x51\x75\xd2\x3c\xae\xd4\xb5\xe6\xf1\x0b\xbe\xaa\x5e\x33\xfc\x5f\x64\x18\xd6\x3b\xa3\x74\xab\x1a\x3c\xbd\x36\xb7\x29\xdd\xbd\xab\xa9\x89\xd4\x64\x5e\x3a\x66\x13\x0b\xae\x41\x7c\xad\x08\x6d\xad\xd3\x08\x43\x35\x25\x14\xc3\x75\xf2\x57\x1a\xba\xf9\x3e\x9a\x07\x71\xfa\x10\x3a\xe9\x25\x85\xb0\x4f\x55\xc4\x34\x76\x9b\x43\xd6\xd2\x2f\x75\x3f\x93\x06\x03\x6e\x53\x52\x4f\x6f\x4d\x9c\xcb\xd2\xc3\x03\x17\xa8\xe8\x99\xf3\x16\x14\x90\x35\x89\x4d\xa9\x45\xb7\x6d\x90\x82\xbf\xee\x32\x8e\x7a\x31\xb6\x63\x28\xee\x8b\x94\xe0\x68\xc7"}, +{{0x75,0xa5,0x03,0xf4,0x8f,0xfc,0x22,0x16,0x17,0x67,0x25,0x19,0x11,0x1b,0xf9,0x0d,0xa3,0x9d,0xa9,0xea,0xb2,0xe2,0x91,0x4f,0xd3,0x75,0x5f,0x10,0xf5,0x39,0x36,0x68,},{0xf6,0x80,0xcc,0x0f,0x63,0x58,0xcd,0xcf,0x53,0x7a,0xa7,0x11,0x28,0xcf,0xad,0xfc,0x0f,0x3a,0x89,0xc1,0x00,0xaa,0x34,0xbc,0xd2,0x42,0x7e,0x24,0x8b,0x6e,0xd5,0x0b,},{0xdf,0x28,0xe3,0xe6,0x30,0x36,0x08,0x67,0x86,0x4b,0xc4,0x1e,0x43,0xfd,0x7d,0xde,0xb5,0x28,0x76,0xdc,0xe9,0xb2,0x34,0xa3,0xfc,0xc3,0xd8,0x54,0x9d,0xb0,0x11,0x2e,0x17,0x63,0x90,0xa6,0x85,0xeb,0xd4,0x84,0x93,0x6e,0x25,0xc0,0x8c,0x8a,0x38,0x78,0xa3,0x7b,0x3c,0x4e,0x23,0x9a,0xd0,0xa0,0xe5,0x01,0x99,0x37,0xff,0xbc,0xd4,0x07,},"\x7b\x01\x09\x04\x23\x23\x6c\xb4\xb1\x3c\x41\x77\xfc\xe5\x2a\x7f\xf6\x58\x05\x88\xcc\x2e\xb5\xa3\xf3\x9f\xf5\xd0\xc7\x3e\x01\xe0\x1b\xf7\xbd\x74\xaf\xe4\x15\x12\x50\xc3\x91\x42\x6e\xa5\x07\x27\x1b\xea\x1d\x6d\x85\xf0\xb2\xfe\x35\xc4\x05\x00\xf9\x8d\x06\x56\xc6\x38\x8f\xc9\xef\xba\x18\x37\xdb\x22\xdf\xa2\x9d\x89\x26\x76\xf5\x0e\x57\x5f\xe8\x9f\xd2\x93\x89\xd0\x9d\x08\x0b\xad\x67\xba\x54\x4c\xac\xab\xf5\xa7\x73\x82\x37\xc5\x5e\x28\x75\xed\x49\x16\x30\x2a\x2b\x4d\xc4\x96\xe7\x42\x73\xbf\x05\x19\x11\x37\x81\x0e\x50\xe4\x81\x95\x26\x0b\xab\x6d\x81\xf9\xc8\x05\x62\xee\x73\xcc\xb9\x33\x3c\xd9\xb6\x1d\xaf\x5b\x00\x38\xa4\xe6\xc5\xc9\x58\xa9\x1f\x68\x50\x8c\x1d\x88\x25\x19\xc1\xaa\x4f\xfc\xc5\x35\x62\x46\x3a\x0a\xe3\x01\x63\x69\x6f\x84\xb9\x7c\xcb\xd8\x67\x98\x20\xed\xd3\x61\x7e\x7b\x89\x6e\xef\xfe\x34\x1e\xc6\xb5\xb0\x3f\x73\xb6\x25\xd7\x41\xc6\x55\xfe\x6e\x82\xd1\x1d\x47\x8a\x7d\x54\x3f\xf6\xc0\xfa\x3a\x3a\x8c\x94\xa6\x16\xfb\x84\x70\x70\xd1\xfb\xdd\xe6\x01\x0f\x02\x6b\x08\x9c\xd8\x63\xc3\xbd\x29\xb1\xc4\x26\x9f\x77\x65\x9e\x51\x57\x28\x89\x0c\x97\x3b\xe8\x7f\x0b\x83\x3c\xa5\xaf\x6b\x4c\x31\x33\xad\x4f\xa4\xf9\x16\x55\xc6\xad\xb5\xb7\x23\x5c\x27\xfe\x34\x82\x84\xf3\xf1\x33\x66\xa6\xa0\x3a\xd2\x2b\x87\xc6\xf5\x58\x4b\xde\xae\xa4\x8c\x70\x32\x5d\x6e\x33\xa4\x75\xf5\x05\x11\x06\x38\x75\x19\x2a\x87\xed\xc3\x88\x08\x9b\x84\x39\x53\x90\xc2\xa3\xad\x89\xa2\x25\x95\xdc\x4a\x71\x5a\x42\xa2\xc0\xef\xde\xf6\x7b\x35\x4b\x34\xfc\x75\xca\x98\xdf\x91\x3e\x75\x9e\x51\xc7\xf6\x25\xdd\xd5\x98\xac\x22\xd4\x21\xde\xcb\x57\xbe\xbd\x54\x22\x0e\xc6\xda\xa5\xec\xe7\x69\xd2\xe0\x1b\xe7\xb6\xbe\xe2\xff\x5a\x0b\x06\xb3\x2d\x6d\xa1\xd7\xbc\x05\x7e\x3a\xbf\xaa\xb2\x42\xa3\xf7\xe6\x64\x6a\x15\x9e\x4f\x50\x5e\x46\x62\x98\x2b\x13\xd0\xcc\x1f\xba\x91\xd1\x03\x09\xa4\x2d\xc1\x08\x7c\xf1\x0d\x36\xe3\x1f\x17\x06\x15\xa0\xac\xb5\x08\xbf\x68\x3e\x2d\xe0\x0c\x87\x64\x0d\x30\x4a\x94\x7b\xc4\x97\x1f\xf3\x61\x9c\x72\xab\xd8\x3c\x7b\x2c\xbb\x34\x64\xc4\x04\x0c\x26\x62\xb5\x85\x08\xb7\x46\x80\xcf\xa6\xde\x06\xe8\xd2\x1e\x3b\xec\x85\x11\x19\x93\x12\x68\x00\x09\x07\x1f\x70\x6b\x7b\x13\x3a\x24\x87\xd5\x74\x5f\xfa\xdd\x5d\xc0\xeb\x2b\x55\x3d\xf4\x40\x78\x7f\x01\x1d\xda\x37\x71\x9f\xa7\x13\x15\xe8\xb2\x91\xef\xd7\x7d\xa3\xba\x14\xfb\x99\x5f\x03\x57\x1a\x3d\xb5\x22\xb6\x3c\x60\xbe\x56\x19\x94\x16\x99\xb3\x92\x22\xb5\x9d\x0f\x23\xe5\xeb\x37\xea\xd4\xb7\xf7\x50\xed\x4a\xbf\x4d\xb8\x7c\x70\xda\x66\x5b\xef\x4d\x7a\x29\x21\xb2\xc9\x98\x97\xf2\x32\x1c\x9b\xe6\x07\x5e\x74\x4c\x82\x28\x63\x9a\xb7\x36\xdb\xeb\x2b\xea\xb4\x40\xc1\x56\xa3\x9a\x2e\xfd\x26\x1d\xb5\x08\x55\xe3\x04\xd9\xcf\xeb\x99\x14\x1c\x61\x35\x58\x10\x9f\x21\x47\x4d\x27\x2a\x2d\x90\x6d\x48\x93\x93\x4a\xff\x8e\x08\xa4\xfc\xee\x96\x4a\x5c\xd0\x07\x32\xfd\x33\xaf\x29\x84\x9c\x8d\xfc\xa6\x59\x79\x42\x18\x57\x18\x5c\xf6\x29\xf8\x68\x07\xa8\x59\x73\xd3\x44\x0a\x6b\xf8\x11\xa5\x8d\x04\x13\x87\x24\x98\x11\xec\x04\x7e\x5e\x8b\x34\x3b\x23\x87\xd0\x18\x1e\x0d\x0b\xd4\x61\xef\x10\xe8\x16\x4a\xae\x35\x7d\x9b\x29\xdc\x0a\xce\x3e\xc6\xd7\x43\xae\x34\x54\xab\x9f\x84\x2a\x28\xd5\x71\x02\x17\xdf\xfe\x50\x34\x4e\x8d\x93\x2f\x18\x01\xb0\xe8\xf9\x66\x19\x8e\xf1\xc9\xcc\x69\x69\xf3\x47\x34\xaa\x6a\x63\xae\xaa\xb4\x33\x9f\x75\xd3\x4f\xfa\x8a\xcb\x93\x7e\xd9\xc7\x30\x92\xa3\x09\xa9\xb8\x4a\x25\x01\x1e\x31\x14\xc2\x65\xe4\xf6\x02\x33\x7e\xb6\x99\xb5\xa2\x2d\x57\x2b\x03\xe4\xda\xd0\x3b\x04\x61\xc0\x0d\xb9\x67\x9b\x72\xfc\x5b\x49\x3e\xf4\x48\x6f\x85\x53\x5d\x81\x3a\x58\x08\x03\x85\xaf\xd4\xe8\xd8\x71\x82\x80\x34\x33\x4b\xfe\x44\x1d\x18\x98\x4e\x4d\xfc\xde\x02\x44\x03\xb5\xae\x66\xcc\x50\xa4\x73\x01\xb5\x7f\x9a\x32\xf7\x40\xbd\xc7\xff\x1d"}, +{{0xd8,0xaa,0x2a,0x0a,0xa5,0x14,0xfd,0x84,0x5f,0x7a,0xa6,0x6b,0x83,0xc0,0xea,0xbb,0x9c,0x16,0x02,0x3a,0xbc,0x16,0x95,0x77,0x34,0x50,0xb2,0xbb,0x33,0x25,0x22,0xf2,},{0xe4,0xe8,0xd6,0xb2,0x98,0x24,0x8c,0x15,0xfe,0x08,0xf8,0x7a,0x3b,0xc6,0x08,0x4b,0xf2,0xd6,0x4d,0x7f,0x1e,0x4b,0x2d,0x51,0x59,0x9e,0x9f,0xad,0x9c,0xc9,0x10,0x92,},{0x14,0x6f,0x65,0xd4,0x3e,0x71,0x55,0x42,0x89,0x4b,0x79,0x00,0xa2,0xf8,0xcd,0x4b,0x17,0xd3,0x87,0x0a,0x61,0x00,0xe3,0x7d,0xe0,0x05,0xb0,0xdb,0x5d,0x81,0x51,0x24,0x6d,0xe4,0xee,0x38,0x42,0xd3,0xeb,0xca,0x20,0xa5,0xda,0x22,0xa3,0x63,0xa7,0x57,0x5e,0x7a,0x55,0x12,0x82,0x95,0xf2,0x72,0x11,0x48,0x4a,0xf5,0x7c,0xd5,0x31,0x09,},"\x08\xde\xb3\xb8\x32\xf5\x2d\x65\x56\xf7\x8c\x3f\x0a\xbe\x46\xf1\xef\xe4\x5e\x3d\x5d\x88\xe7\xf8\xed\xf8\x03\x67\x0c\xe4\x61\x29\x21\x74\x9e\x9e\xce\x63\xfd\xc9\xbe\xf2\xba\x48\x38\x12\xbb\x62\x2b\xe7\x44\xd4\x04\x04\xfd\x6e\x09\xc9\xe1\xcb\x7c\xe1\x9d\xe8\x1a\x9d\xad\xf5\x56\x35\x2e\xe8\x98\x10\xc7\x6a\x9b\x10\x47\xac\x62\xb1\x6e\xbb\x7d\xa2\x3d\xdc\x2d\x4a\xb7\x6a\x02\x05\x61\xd0\x2d\x41\xb5\x8b\x94\x95\x3a\x23\xfa\xaf\xdd\xd7\x81\xb7\xdc\xa7\xb7\xfb\xee\x70\x6e\xc1\x0a\x73\x12\x5b\xf7\x44\x36\x05\x6b\xf3\xb4\xf2\xa0\x70\x1c\xfe\xf0\x5b\xeb\xd3\xdd\x8e\xef\x30\x6c\x1a\xc1\xb0\x09\x50\x88\x1f\xf0\x5a\xb5\xc8\x24\x8a\xd1\x09\x6a\xc9\x1d\x52\x6a\xe5\x9b\xa0\x58\x3b\x27\xdb\x7d\x1e\x39\x0f\x57\xa5\x88\x9e\x27\x99\xa4\xa1\x51\x9b\x15\xd9\x3d\xbf\x0b\x21\xd4\x50\x87\x3c\x76\xba\x52\x04\x61\xe8\xbb\x5c\x83\xc9\x01\x2e\xac\xd5\x57\xbe\xa6\x40\x58\x6e\xfc\xb8\x69\x00\x76\x47\xd4\x49\xf9\x1c\xcd\x52\xaf\xe3\xa8\x94\x77\xde\x7c\x2b\x64\x7e\xcc\x9b\xf9\x67\xfb\xf5\x76\x9d\x74\x88\x94\x47\xd9\x52\x2d\x9e\x80\x69\xc3\x49\x9a\xf6\xa8\xa1\x09\x7a\x95\xd3\xbc\xc5\xf8\x34\x33\x93\x44\x84\x31\x4c\xb3\x07\x58\xb5\x25\xfe\x53\xe9\x07\x21\xdf\x5c\xbe\x03\xd9\x6f\x0d\x0f\x98\x52\x1f\x01\xa5\xfb\xe5\x7c\xe8\x80\x4d\xbd\x18\xf8\xf5\xea\xc8\xf7\xdb\xb5\x8c\x41\x78\x9a\x44\x43\x3f\x8a\x8d\x12\x45\xd2\xad\xda\x8c\x78\xd8\x81\xc6\x5e\xa6\x61\xab\x17\x8d\x4f\xc2\x63\x4c\xd6\xcb\x51\x4a\xb6\xf2\x54\x3e\x91\x12\x18\x3f\x3f\xf7\x3a\x3f\x45\x01\x06\xb0\xee\x8a\x34\x7a\x80\xcb\x82\x4a\xc1\xf8\x01\x64\xe3\xbb\x51\x23\x69\x8d\xe0\xe7\x47\x35\x9c\xa3\x5a\xca\xa3\xba\x0c\x94\x3b\xea\xcd\x7a\x9b\xdf\x8f\xf7\x39\x78\xe9\xfb\x00\x20\x45\xe8\xfe\x56\x48\xcc\x0f\x9c\xfa\x88\xb0\xd8\x12\xe8\x1a\xa6\x2e\x0d\x9c\x73\xfe\x61\x3a\xfd\x95\x39\xbc\xb6\x15\x72\x1f\xb4\x97\xd6\x2f\x65\xc8\x3b\x87\xa6\xd2\x14\x3f\x9b\x1c\x88\x0e\xc8\x67\x1b\xd4\x2c\x8d\xe9\x57\xb1\xa6\x8e\xe4\x92\x26\xff\x71\x7c\xcc\x6e\x74\xf2\xee\xe4\x9c\x30\xde\xa5\x3f\xec\x3c\xd4\xd9\x0f\x2c\xcc\xd8\xf9\x7c\x55\xd5\xc7\x52\x45\x4b\xe2\xba\x7b\x6f\xf2\x03\x0b\xe6\x7e\x0d\xf5\x0c\x5e\x88\x38\x43\xe7\x16\x12\xf2\xb9\x53\x59\x54\x3e\x2b\xa1\xbf\x2e\x98\xde\xbc\xf5\x76\x8f\x2b\xe6\xfd\x50\x4d\x97\x83\xce\x92\x1a\x81\xe0\x94\x16\xdb\xcf\x2b\xb6\x55\xa9\x24\xb1\xef\x01\x12\xd6\x71\xf0\x84\xa5\xb6\x90\xb0\xb6\x4a\x8b\x9b\xf5\x03\x33\xc3\x59\xff\x3f\xef\x19\x96\x94\xf9\xb6\x29\x24\x24\xf0\x06\x66\xce\xf6\xd0\x6d\x16\x1a\x79\xe3\xa1\xb9\xb9\x62\x9e\xea\x53\x50\x5f\x5e\x36\xae\xad\xfe\x0d\x75\x96\x72\xb0\xff\xe4\x98\x39\x7d\x90\xa5\x5d\x99\x44\xb3\x05\x41\xa7\xe1\xbd\xac\x53\x02\x06\x40\x13\x7d\xc2\x52\xae\xf6\x22\xf3\x81\x9d\x36\xab\x49\x8d\x76\x3e\x43\x27\xba\x85\x80\xdd\x9f\x7e\x5f\x47\xc2\x4c\xc9\x92\x87\x34\xb7\xe6\x21\x12\xc5\x7e\x3e\x0c\xfe\xde\xcd\xcb\xac\xcb\x0c\x45\xaf\x82\x19\x45\x5e\xe7\x22\x3c\x71\xe7\xe2\x04\x10\xc5\x24\x4e\xb8\x27\xaf\x2f\x39\x35\xce\x47\x55\x44\x47\x47\xaa\x94\x5f\x4c\x26\xdb\x3a\x29\x85\x19\xe7\x5f\xc6\xba\xce\x91\x52\x99\x72\xe8\x69\x1b\x69\x4d\x30\xaa\x8b\x5e\xc4\xc1\xa0\x28\xd3\xbd\x10\xbd\x0c\x8a\x40\x8f\xb7\xd9\xd7\x03\x49\x55\x53\xec\xea\x59\x8d\x06\x22\xdc\xc7\x4d\xe4\x89\xba\x71\x95\xcd\xae\x8d\x5c\xff\x98\x55\x92\x18\x37\xb5\x28\x43\x3e\xe5\x5c\x0b\x70\x90\x85\x7a\x0c\x27\x84\xd9\x31\x0b\x48\x25\xa7\x99\x3a\xd9\xc6\xf1\x8f\x83\xbc\xa5\xcc\x6a\x25\x04\x71\x68\xa8\x37\x6b\x06\x2e\x3a\x48\xea\x90\xca\xd8\x8e\x33\x11\x87\xc2\xb6\xf2\x81\x42\x6f\x81\xf7\x88\x04\xa8\x95\xc4\xec\x06\xc3\x41\xfe\x84\x6a\xf4\x52\x7e\xa2\x60\x69\xdc\xf6\x1d\x81\x3f\xdd\xf0\xfc\x43\xc7\x07\x35\x0b\xfb\x2f\xc1\xcf\xfc\xee\x7d\x7c\xcd\x7d\x75\xf7\xa4\x65\xa3\xd1\x4d\x57\x30\x2c\x14\x6a\xba\x3e"}, +{{0xde,0x8f,0x1c,0x99,0xe7,0xf8,0x55,0x6d,0xf2,0x0b,0x59,0xb8,0x50,0x4c,0xff,0x7c,0x6c,0x52,0x41,0xa8,0xae,0xeb,0x30,0xb9,0x2e,0xab,0x97,0xbf,0x48,0x1d,0x0f,0xe9,},{0xe4,0x63,0x79,0x1d,0x0f,0x56,0x7e,0xe7,0x3a,0xbb,0xf4,0x7d,0xd5,0x71,0x67,0xa5,0x35,0x61,0x3b,0x05,0xcd,0x48,0xd9,0x2e,0xbc,0x7d,0x24,0xe6,0xeb,0xff,0x95,0x73,},{0x30,0xab,0xc4,0xe4,0xe4,0xb3,0x88,0x58,0x1e,0x66,0x8b,0xd4,0x09,0xee,0x18,0xa6,0xed,0xe8,0x1a,0x13,0x6c,0x28,0xa2,0x92,0x4d,0xf5,0xfc,0x00,0xd7,0xc2,0x80,0xd9,0x78,0x62,0xae,0x3a,0x67,0xa9,0x35,0xce,0x49,0x23,0x64,0x13,0x5e,0x65,0x9a,0xdb,0x5f,0xba,0xbe,0x68,0x98,0x16,0x59,0x1f,0x49,0xac,0x50,0x22,0xa3,0x87,0xcc,0x09,},"\x38\xd9\x3e\x5c\x98\x01\xdb\x90\x17\x97\xec\x75\xc6\xdd\xdc\x65\xae\x79\x80\xde\x21\x0b\xed\x43\xb3\x3e\xb4\x4c\xdc\x6d\xc9\x93\x3f\xb6\xbe\xc7\x42\x1d\xb1\x0f\x0a\x59\x32\x0b\x9e\x64\x2a\x21\xf1\xdd\x23\x56\x01\xfc\xd6\xc5\x3b\xe4\xa8\x77\xf4\xfe\xd3\xfa\x4a\x0a\xd4\xdc\x6e\x9b\x39\x1b\xcf\xa4\x34\x90\x69\x25\xba\x45\xec\xc5\xb4\x35\xd9\xab\x8c\xfa\xfc\x39\x4b\xdc\xca\x9b\x07\xd5\x66\x83\x93\x44\x6e\x34\x00\xe9\x03\x94\x35\xa1\xdc\x78\xcb\xc0\x88\x07\xa3\xfb\x24\xca\x8b\x19\xf6\x4e\xa0\x8b\x8b\xf6\xc2\x0a\x19\x5b\x51\xff\x80\x15\xf3\xe7\xc9\x1d\x08\xe4\xbc\x62\x41\x55\x95\xa5\xa8\x82\xfb\xa6\x51\xdc\x3a\x67\x51\x87\xaf\x61\x82\x49\x74\x7b\x46\x80\xd1\xd1\x5a\x20\x2e\xa9\xdf\x48\xb1\xc2\x14\xfd\x40\x34\x66\xfd\x1a\x26\x5f\x2d\xef\xaf\x8e\xd5\xa6\xbf\x0e\xb0\x8d\x18\x64\xf2\xa2\x8e\x94\x72\x14\x3c\x6f\xd1\x03\xb6\xb1\x08\xc0\xd1\xd1\x36\x3b\x99\xf9\x20\x2d\x11\xf0\x20\x56\xc2\x79\xcc\xa3\x15\xdb\x1a\xb6\xd3\x10\x18\x45\x8f\x57\xba\x33\x16\xcd\x27\x38\xe8\x0c\x49\x2d\x85\x7c\xb1\x74\x99\x25\xe3\x31\xc6\x58\x58\xb5\x09\x83\xcd\x98\x38\xcf\xd2\x18\x8a\x5e\x8f\x05\xb4\x71\xfd\x3c\xdd\xcd\x30\xd9\x69\x01\x19\x40\x20\xf1\x15\xfb\x46\x9a\xb5\x84\x90\x06\xdf\xfa\x2d\x54\x3a\x13\xb3\xb5\x06\xed\x65\xcc\x45\x75\x32\xb8\xaa\x3e\xe3\x1d\x9d\x8d\x9e\x52\x98\xd7\xac\x70\x7a\xc1\x5b\x82\x7a\x57\x8c\x81\xd4\x34\xf8\x4c\xb1\xb5\x61\x20\xd6\x67\xb2\xaf\xe6\xd1\x53\x0a\xfd\xdf\xb9\x66\xd9\x53\xbe\x7e\x32\xdf\x07\xde\x38\x9e\x2d\x04\xb2\x32\xd3\x51\x2c\x7d\xb9\x35\x8f\xc9\x44\xd1\xb1\x18\x07\x8e\x69\x99\xe8\x91\xbb\xfa\x4a\x43\x29\xf6\x5d\x80\x71\x88\xb5\x98\x58\xc4\x31\x21\x1b\x29\x57\x6f\x44\x96\x13\x8b\x7c\x0c\x12\x8f\x7b\xef\x5f\x79\xb0\xf4\x46\xfc\x6b\x4a\x0e\x20\xbc\xa4\xc4\x0a\x83\x57\x1a\x36\x64\x4a\xbf\xfa\xbd\x49\xcb\x58\x5f\xd0\x64\xc8\xe5\x09\xd9\xa0\xfc\xff\x46\x26\x76\xf0\xeb\xcb\x61\xce\xc6\x1e\x51\x2b\xe6\xf1\x82\xab\xd5\x9e\x09\xf6\x42\xaa\x61\x96\x34\x85\x34\x82\xec\xe8\xf8\x98\x00\xf9\xc5\xbc\xfb\x84\x14\x31\xca\x06\x91\xed\x8d\x80\xe0\xa2\xfc\xb7\x97\xa0\x36\x89\x7c\xfb\x65\x37\x58\x6b\x31\xc0\x0b\x79\x65\xef\xdd\xfd\xa7\x28\x61\x84\x50\x26\x45\x91\x57\xf7\x9e\xba\x1b\xca\xf6\xcd\x41\xd6\x18\xae\xb1\xbd\x8d\xa1\xbe\x98\xf0\xcd\xc7\xf2\xe0\x9b\x90\x3d\xe4\x9c\x0c\x1b\xe9\x1d\xcc\x17\x7b\x29\x80\x96\x83\x6d\xce\xa4\xf6\x01\xdd\x86\x69\x15\x55\x12\x83\x25\x43\x8b\xd9\xcc\xbf\xc0\xe7\x77\x92\x0a\xe8\xbb\xd5\x76\x34\xc6\x10\x4f\xe6\x9a\x3a\x72\x01\x2a\x23\x60\xb6\xe5\x52\x55\x0c\xff\xb4\xe2\xf0\xb4\x1f\xe1\x55\x37\xee\x0e\x6f\x37\xe7\x88\x0f\xb4\xd1\x2b\xef\x6c\xad\x26\x6c\xe5\x8d\xf9\x81\x6b\x35\x96\x0c\xd0\xbf\x86\x52\x86\x2e\xe7\x89\xcc\xc3\x1a\x7e\xfc\x21\xa8\x1b\xda\x46\x14\x6b\x11\x1f\xcf\xd9\x4f\x04\x85\x6a\xb6\x1a\x55\x7b\x1f\xf7\xc8\xe4\xea\x6d\x9c\x4b\xcd\xd9\x3b\x15\x1a\xa0\x84\x61\xc5\x68\xde\xfb\x2a\xef\xdf\xce\x96\x39\x4d\xc8\x22\xd4\xef\x6c\xc4\xb9\xa3\xe6\xc3\x32\x03\x9f\x65\x38\xaa\x0d\xf8\xde\x81\x26\xd9\x0c\x31\x2f\xf4\x96\x88\x74\x86\x11\x15\x65\x53\x43\x46\xa7\x46\x26\x25\xd6\x3d\xf6\x9f\xcb\x57\x41\x90\x6f\x19\xe0\x0f\xc8\x00\x3f\x08\xb9\x59\x85\xc3\x8b\x86\x74\xaf\x42\x3c\xa5\x6d\xe5\xf8\x81\xb5\x9c\x46\x62\x43\xa7\xad\xba\xdb\xa2\x9c\xaf\x57\xfa\x77\x71\x22\xe6\x18\x23\xb4\xe7\x08\x18\x2a\xaf\x37\x20\x6d\x7d\x5e\xd0\x51\xc1\x2a\x5c\x0f\x6b\x43\x71\x04\x3f\x56\x2c\xdc\x02\x9d\x5e\x1b\xa9\xb2\xbf\x5f\xfb\xf1\xf5\xf5\x23\xdb\x06\xfe\xca\x42\x7d\xb7\xa0\x88\x19\xff\xb2\xd0\x58\x52\x42\xe2\x0d\xa5\x8e\x32\x0b\x16\xb1\x6e\x44\x8d\x8b\xe0\xef\x74\x02\xd2\x4a\x71\x94\x25\x71\x33\xbd\xc9\x82\x31\x4d\x83\xad\xbc\xd1\x2e\x8a\xf3\x13\x03\x42\x6c\x59\xff\xd8\x26\x9c\xe4\xb9\x87\xca\x9b\x6f\x0f\xfd\xbb\x4d\x1d\x12"}, +{{0x07,0x36,0xf8,0x01,0x72,0x0a,0x94,0x7c,0x5c,0x2f,0x32,0x58,0xce,0x0d,0x51,0x1c,0x3e,0x17,0xe9,0x4e,0x37,0xb3,0x0a,0xdf,0xa5,0x20,0x95,0x92,0x11,0x71,0xd4,0x00,},{0x4f,0x69,0x42,0x55,0x92,0x0d,0x0c,0x38,0xde,0x6e,0x72,0xe1,0x65,0xc3,0x3a,0xee,0x76,0xb1,0xcb,0xf6,0xf4,0x83,0x7a,0xa5,0x90,0x14,0x75,0x66,0x7a,0xcd,0x28,0x26,},{0xc0,0x3c,0x03,0x14,0x85,0x12,0x79,0xed,0xcd,0xe9,0x70,0xc2,0x3e,0xfa,0x23,0x6f,0x23,0x5e,0xda,0x96,0x0d,0x2c,0x27,0xd3,0xca,0x94,0x6f,0x65,0x0c,0x20,0x0b,0x4e,0xba,0x04,0xbe,0x66,0x8f,0xf6,0x2e,0xaf,0xfa,0x6c,0xea,0x35,0x1a,0xbd,0xfc,0x54,0x40,0x1d,0xcc,0xce,0x3d,0xba,0x78,0x00,0x4a,0xec,0x95,0x81,0xa2,0xcc,0xf4,0x0f,},"\x7f\x87\xb5\x1f\x6e\xad\x2d\x44\x02\xa3\xbd\x3c\x37\x69\xa2\x67\xac\x8e\x82\xf7\x79\xad\x7b\x98\x6d\xec\x82\xcb\xfc\x1e\xa5\x12\x91\x88\x43\x26\xd9\x22\x69\x67\xcb\x66\xa9\x68\x73\x18\x4f\x0e\x83\xb3\xab\x25\xa5\xab\x2f\xa8\x05\xfe\x3a\x0e\x7b\x19\x0a\x62\x2d\x46\x1b\x78\x30\xa3\xf6\x97\xc8\x31\xc2\x9e\xa7\xc0\xcd\x4b\x68\xd8\xe7\x7a\xa6\x97\x11\xcf\x86\x4d\xc1\xd5\x39\x4f\x48\x45\xe2\xfb\xb5\x07\x64\x04\xe0\x9a\x88\xb7\x9f\x05\x67\x05\x51\xbc\xe2\xef\x54\x68\xb7\x9d\x57\x88\x8b\x98\x52\xa4\xbb\x47\x9a\x4f\xd0\xbe\xb6\x81\xfd\x52\x3f\xc5\xbf\x44\x58\xab\xbc\x38\xec\xe7\x2e\x10\x6e\x00\x22\x20\x15\xa5\x7e\xbe\xc5\x5b\xf4\x75\x13\xe2\x5c\x3c\x45\x54\x84\x3b\xda\xcb\xcf\xe9\xf1\xb8\xd0\xae\x35\x4e\x48\xd0\x3f\xde\xbd\xf2\x0d\x65\x5b\x52\x68\xd8\xbb\xbf\x33\xb1\x28\x89\x10\xf0\x44\x4f\xcd\x56\xc0\xda\x7b\x89\x03\x36\x2b\x7e\x37\xa8\x64\x65\x42\x77\xcf\xfb\xe6\xc6\x08\x57\xf0\xb3\x51\x4d\x22\xa4\x0b\x9d\xd2\xd3\xfe\x5c\xae\xa5\x50\x7a\x0d\xe3\x05\x1b\xb3\xa4\x01\x5f\xa0\xfe\x4c\x46\x2b\x98\xfe\xf2\x35\x7d\xcf\x6b\x97\xdc\x75\xde\xf3\x82\xf9\x01\xf9\x6f\x4a\x04\xa3\xef\xc6\x02\x54\x20\x0a\x2c\x4c\xdc\x8a\x58\xb2\x5d\x94\xe3\x29\x54\xea\xff\x15\x11\xac\x46\xe3\x60\x66\x63\xb6\x87\x5f\x13\x64\x99\xda\x6a\x76\x90\x97\x87\x9a\x6e\x08\x34\xd5\x64\xfa\x7f\xdb\x99\x58\x11\x83\xed\x0c\x9d\x48\xfd\x19\x5d\x7e\xcd\x9f\x4d\xd4\x86\x55\x65\xfd\x17\xa0\x08\x71\x8d\xcd\x76\xf6\x8a\x54\xe5\x16\xa2\xb7\x30\xed\x3d\xba\x5c\x2c\xf4\x06\x30\xbb\xfe\x7f\xa0\x3b\xb7\xcd\xd9\x67\x69\x54\x95\xa7\xc8\x6e\x2e\x84\xcb\x01\x7e\xc6\x96\x01\x92\x46\x31\x59\x5a\xff\xaa\x8c\xfd\x04\x8d\x14\x26\x7c\x73\xe5\x4c\xfa\x53\x90\x47\xe7\x17\x69\x1e\x39\x97\x37\xfa\x50\xcc\x48\x44\x96\x12\x57\xc9\x3d\x72\x53\xd2\x32\x26\xb7\xcd\x0d\x1b\xd3\x1f\x3f\x0d\x2d\x89\x2d\x07\x3d\x8c\x50\x73\xc6\x02\xf6\x1a\x04\xd6\x43\x7c\x39\x03\xeb\x4a\x64\xa0\x1f\xbc\xc0\xc7\xe1\x59\x20\x1c\xdc\x4a\xa4\x2e\xf3\xb1\xff\x9c\x78\xfc\x27\x5c\xfb\x11\xa0\x5f\xfe\xd8\xf9\xf2\x2d\x85\xba\x92\x4d\x8d\x32\x23\x1c\x25\x4d\x89\x8d\xa7\xf0\x67\x9a\x64\xca\xb8\x40\x26\x90\x6e\x9e\x85\xf9\x5e\xfd\x8e\xe2\xa1\x72\x56\x33\xf4\xde\x2b\xa6\x7d\x99\xaa\x7f\x05\x50\xaf\x13\x9e\x9f\x8c\x52\x93\x78\x67\x27\xd8\x26\x30\x29\x6d\x5d\xaa\x9e\x83\x0a\xa1\xb3\xb5\xb3\x02\xb8\xb6\x62\xac\x83\x2e\x92\x13\x01\x6b\xa4\x93\xa0\x3a\x28\xcc\x3e\x95\x40\xd0\xd6\x5a\xcd\xdb\xfe\x12\x52\xb5\xc1\x6a\x84\xa4\x45\xce\x75\x41\x5c\x6c\xd8\xab\x16\xfe\x5e\xef\x11\x70\x97\xd7\x1e\xb5\x67\x6b\x9a\x95\xb3\x58\x82\xa7\xc3\x50\x6b\xc5\xd0\x2f\x03\x91\x0a\x63\xd4\x68\x46\xb2\x13\xc3\xc9\xbb\x2f\xc3\x4e\x6c\x69\x01\x7d\x20\x65\xa1\xad\x3c\xe3\xfd\x14\xab\x00\x14\xf5\x84\xe5\x7e\xa9\xd9\x03\xe4\x0a\xce\xb2\x30\xa8\x69\x3f\xa2\xe6\x36\x41\xc2\x54\x38\xff\x7a\x16\x38\x76\x04\x38\x84\x4c\xdf\x00\x11\x80\xf5\xb1\x77\xbe\x69\xed\xf7\xef\x66\xb3\x93\x12\x80\x52\x14\xcb\x17\x70\x6c\xef\xe5\x45\xbe\x5a\x77\x01\x9a\x5e\xc5\x2b\xbf\x78\x85\x0f\xa3\xd9\x7d\xe2\xd4\xd7\x4a\xa6\x8b\x58\xca\x81\x2a\x1b\x15\x6a\x0c\x40\x01\x12\x9f\x06\x72\x32\xa6\xec\x91\xa5\xed\x42\x70\xf2\xa4\xc6\xef\xee\xe7\x87\x00\x47\x70\xc8\x59\xe4\x50\xe8\x37\xef\xb0\x4d\xc9\x98\xbd\x27\x3c\x27\xa0\x98\x55\xe4\xec\xa1\xa2\x2a\x9b\x88\xc1\x7b\xdb\xf2\x53\xa7\x97\x61\x07\x0a\x76\x81\x7a\x7f\x74\xff\x3f\x07\xfb\x71\x8b\xff\xa0\xb4\xf3\x26\xf2\x84\xe6\x2f\x83\x68\x32\x42\x7b\xe8\x2f\x48\x33\x73\x51\x5b\x9b\xf5\x9a\xf4\xa7\x6a\x57\xe2\xf4\x0b\x91\x03\x4d\xd5\x68\xec\x14\xac\x10\xe2\x30\x9b\x87\xe2\x92\x2f\x9c\xd9\xfc\x1a\x46\xa4\x7e\xd3\xbc\x7e\x1b\x9f\xeb\x9e\xe0\x67\x07\x3f\xa5\xdc\xe2\xa6\x75\x30\x52\x6d\xe6\x7e\xe0\xe5\x09\x66\x3c\x44\x46\x7e\xeb\x59\x42\x01\x03\xeb\xcd\xff\xa7\x09"}, +{{0xfa,0x75,0x65,0x04,0x91,0x04,0x74,0x28,0xd3,0x63,0xb5,0x82,0x22,0x22,0x12,0x2d,0xff,0xb5,0xa9,0xfd,0xdc,0x60,0x3c,0x33,0xc8,0xa6,0x08,0x61,0x83,0x75,0xdc,0xf3,},{0x98,0xc9,0x64,0x1f,0xa9,0xdf,0xa8,0xea,0x13,0xe0,0xd1,0xc7,0x16,0xb8,0x67,0x9e,0x26,0x4b,0xe1,0x5d,0xd2,0xd4,0xc0,0x6a,0xb4,0x3c,0xbe,0xe4,0x79,0x16,0xee,0x01,},{0x1e,0xff,0xbf,0x92,0x99,0xa1,0xb9,0x35,0x4f,0xe1,0xf1,0xde,0xc1,0x76,0x65,0x95,0xea,0x76,0x7a,0xb8,0xe4,0xda,0x9b,0xb5,0x7b,0x4f,0x69,0xbc,0xbd,0x8c,0xb3,0xd8,0x6f,0x76,0x83,0x92,0xf5,0x9b,0x39,0xfa,0xfa,0x8a,0x21,0x0a,0x65,0x09,0xfe,0x0d,0x60,0x08,0xd6,0x35,0x61,0x11,0xad,0xfb,0x37,0x99,0xc1,0xd5,0x59,0xc2,0x63,0x09,},"\xf5\x4e\x41\xb9\x39\xe3\x7d\xf1\x7c\x7d\x60\x43\xfd\xed\x14\xa9\x15\xd9\x34\xe8\x67\xc3\x45\x26\x9f\xdc\x01\x77\xf5\xbd\x10\xc4\x34\x8f\x31\x9e\x0a\xb9\xa6\x4c\xc0\xb7\xd4\xe0\xc9\x1c\xa9\xaa\xda\xab\x2e\xdc\xba\x54\x4f\x14\xed\x2c\xb5\x39\xca\x89\x75\x09\x7d\x87\x92\x70\x95\xb4\xeb\xd4\x90\x34\x43\x40\x06\x1e\xd9\x3c\x38\x16\x7e\xda\xa0\x96\xa2\x30\xdb\x59\x62\x4c\x67\xfb\x9a\x1e\x1d\xda\xc4\x02\x13\x3f\x4d\x47\xcf\xc1\x1e\x2f\xae\x6b\x3f\x3c\x50\x01\xcb\xa9\xa8\xae\xd9\x00\x73\x10\x32\x40\x22\x7e\x71\x6f\xf7\x1b\xf6\x8a\x59\x1b\xa2\xce\xff\x2d\x31\xb8\x6e\xf2\x1a\xb0\x12\xec\xcd\x40\x9a\xd5\xc2\x9d\x65\x9a\x1b\x37\xc4\xd8\x55\x05\x30\x41\x40\xfb\x2c\x34\x37\xa2\x06\x86\x8b\x13\x52\xc1\x02\xbb\xfa\x3b\x9a\x76\x52\x2a\x2b\xfc\x54\x06\xb2\x57\x69\x6d\xe7\x4e\xe7\xd3\x15\xc8\xe9\x9c\xaa\x96\xbd\x83\x80\x06\xc6\xda\x2a\x42\x33\x31\x5a\x85\x6a\xcb\x8e\x80\xc3\x31\x68\xb3\x33\x55\x1d\x91\xd0\x74\x05\x57\x34\x13\x0b\xd7\xd1\x4c\x56\x81\x1e\xba\xbf\x7d\x5a\x25\x0e\x60\x72\x59\x3d\x9f\x2f\x8b\x97\xc1\x2a\x70\x3c\x2c\x47\x9c\xb0\xb1\x5b\x7a\x27\x75\xc9\xdc\xd2\xca\x46\x24\x67\x23\x68\xa2\xe6\x14\x54\x67\xf3\xbe\x66\x15\xf9\x3b\x81\x20\xa0\xa1\x2d\xa1\x56\x06\x63\xa2\x6a\x61\x73\x19\x66\xb4\x4b\x29\x9e\xbf\xad\x2a\x95\xc6\x23\x60\xf3\x9c\xe0\x5d\x95\x58\xe3\x05\xee\x23\xa5\x2f\xa5\xce\x20\xf6\xbe\x5e\x26\x2a\xff\x3a\x86\x4d\x5d\xda\xbe\x23\xff\x94\x3f\x71\xd5\x99\x84\x93\xd9\x9f\xe2\xac\x23\x74\xb4\x64\xa6\x91\x83\xc3\xbc\x4f\x1d\xdb\x88\x36\x11\x14\x9d\x7d\xdb\xf1\xe8\x38\x0b\x54\x43\x35\xe2\xb8\x93\x95\x05\x4c\x9f\x25\x58\xdf\xc5\x6e\xa9\x3f\xf1\x4d\x0f\x15\xd2\xe0\xbd\x89\x37\xa5\x56\x38\x7d\xe9\x6e\x41\x8d\x8b\x3a\x7d\x66\x6f\xb1\x90\x36\x4b\x2c\x21\x90\xd3\xc2\x5f\x17\x52\xd5\x48\x3d\xcb\xb5\x96\x00\x64\xf0\xc8\x7f\xcf\x8f\x31\x3d\x28\x78\x1c\x11\x4a\x16\x9b\x69\x0a\x87\x01\xc5\x0d\x89\xc7\x73\x24\x53\x1c\x0f\x84\x9d\xba\xd1\x63\x3d\x92\x5a\xcd\x06\xc1\x6a\x9c\xea\x19\xa4\x34\xeb\xc4\x2a\xeb\xb1\xfd\xb9\xb0\xba\xcc\x93\xce\xc3\x99\x19\x94\x36\x64\xea\x1a\x95\x84\x06\xff\x9e\x49\x35\xc9\x2c\xa7\xc3\x97\x08\xf9\xca\xb7\x10\xa5\x83\x09\x6b\x4e\xd9\xf4\x8d\x9e\x09\x06\x47\x24\x0d\x76\xec\xcb\xab\xa5\x91\xf5\x5f\xe7\xe3\x6d\x72\xc2\x17\x27\xac\xba\x0f\x80\x30\x95\x4e\x62\xbc\x58\x0b\x8b\x67\x0c\x44\x57\xc3\x40\x3e\x36\x9a\xc2\x0e\x66\x0d\x66\x2f\x7f\x6a\x41\x42\x13\xea\x43\xf7\xc0\x10\x50\x09\xc1\xde\x81\x7a\xdf\x6f\xfd\x9c\xca\x3b\x45\xa6\x3a\x82\x22\x81\xc6\xe2\x77\x2f\xd7\xb7\x80\x96\x03\x18\x4b\x48\x79\xb1\x8c\x88\x79\x03\xf0\xfc\x8d\x8e\x1e\x2d\xbf\x6e\x77\x2f\x0b\x2d\x9b\x8a\x29\x92\x7a\xcc\x81\x71\x4a\x22\x56\xad\x8d\x7b\x73\x30\x52\x7d\x7d\xbf\x8b\xef\xd8\x2f\x8c\x9b\xb4\x01\xcf\x0a\x90\x24\x9a\x64\xca\x6f\x88\x33\xdb\x31\xbd\x03\xb9\xe7\x94\x6d\x06\xdd\x04\x38\x3d\x7c\x08\x2d\x70\xae\xb3\x7f\xf8\x4c\x2b\x05\x7d\x97\x3b\x89\x4b\x4a\x03\xec\x7b\xf0\x31\xae\xa6\x56\xa1\x90\x84\x88\x89\x4a\x4a\xda\x3f\xd7\xfa\xdf\x91\xed\xe9\x55\x0d\x38\x41\x5f\x82\xa0\x94\x55\xc0\xf4\x32\xfb\x55\x98\x71\x32\xf0\x00\x42\xaf\xd6\x0e\xa5\x1d\x1f\x1c\x6c\x1a\xfe\x0c\xf8\x7c\x34\x6e\x31\xe6\x3e\x26\xf4\x9b\x13\x71\x77\xb2\xd4\x7a\xb3\x0f\x07\xce\xa0\x71\x93\x12\x74\xcf\x01\x08\x36\xd6\x83\xff\xf3\xbe\x71\x34\xc7\x8b\x8b\xfd\x8b\x1b\x8f\xc2\x04\x9e\x18\xcc\xb1\xe1\x8a\x0a\x95\x85\xa7\xd8\xa1\xe2\x54\x92\x60\x86\x68\xc9\x6d\x62\xa0\xac\xa8\xef\x90\xe0\x48\xd2\x03\x78\xc1\x08\xd0\x6b\x03\xfe\x3e\xc4\xad\xb2\x75\x28\xae\x08\xf7\xde\xd9\x48\x78\x93\xae\x64\xca\x4b\x93\x92\x02\xaa\x4c\x17\xaf\xe7\x18\xcd\xca\x49\xff\x96\x16\xd0\xcd\xf8\x33\x4b\x6a\xee\x2d\x6d\x20\x94\x7c\xa4\xbd\x7d\xf5\x31\xdd\x1d\xa9\x95\x81\xff\x72\xea\x56\xfe\x62\xca\xa2\xc9\x5e\x35\x87"}, +{{0xe1,0xc1,0x29,0x46,0xd2,0x21,0xa1,0x94,0xf2,0x2f,0x27,0x62,0xc0,0xe5,0x1c,0xbe,0x3f,0x98,0xb9,0x14,0xa4,0x7d,0x3d,0xc4,0x1a,0x1f,0x45,0xc5,0x43,0x70,0x63,0x7c,},{0x10,0x40,0x81,0x36,0xa6,0x8f,0xc5,0x6c,0x7d,0x3b,0x36,0xb7,0xfe,0xf1,0x22,0x09,0x4d,0xe0,0x81,0x03,0x11,0x89,0xcc,0x84,0xa4,0x88,0x06,0xaa,0xf6,0xcb,0x91,0x85,},{0x8f,0xd7,0xfa,0x40,0x0c,0x03,0x2f,0xcf,0xbc,0x40,0x29,0x42,0xfc,0x78,0x63,0x75,0x26,0xbe,0x97,0xab,0x82,0xf2,0x37,0xbb,0x39,0x3e,0xa3,0x9e,0x35,0x73,0x8c,0x67,0xd7,0x54,0x09,0x54,0x3a,0x8b,0x3c,0x05,0x5f,0x08,0xbf,0x69,0x19,0x9a,0xf6,0x3b,0x69,0x11,0xa4,0x82,0xfb,0x4f,0x65,0x80,0x80,0x2e,0xc9,0xd2,0xdc,0x3c,0x11,0x06,},"\x87\x0f\x4c\xd9\x7c\xfc\x0a\xaf\xad\xa4\x00\x72\x31\x2f\xb5\x4b\xcc\xc0\x76\x28\x71\x4e\x49\x62\xd4\xbe\xf4\xee\xb5\xde\x40\xa1\x9a\x24\x6b\x5b\x7d\x52\xd4\x87\xb7\xe5\x2d\x65\x6f\x2c\x64\x03\xb9\x16\xd0\x2e\x02\xa6\xd2\x91\xc1\xe1\x82\x8d\xd9\x45\xa5\x83\xb4\x38\x52\x8d\x1c\x39\x76\x5a\x57\x20\x31\xff\xa9\x16\xb6\x83\x21\xf3\x2e\x66\x46\xf0\xdc\xc1\xc6\x02\x35\xff\xaa\x32\x35\xf4\x84\xa5\xc4\x97\x8f\xa3\xe6\xbf\x14\x30\x1d\x53\xe1\x2f\x4c\xc5\x21\x18\xb1\xf6\xf0\x7f\x53\x36\xf5\xd0\xa9\x37\x89\xbb\x01\xd1\x62\xfb\x31\x26\xdc\xd7\x56\xe0\x64\x2e\x7e\x69\x89\x63\xc0\x34\x59\x11\xa5\xcf\x3c\x99\x53\xf7\x73\x19\x42\x6c\xea\x2c\xde\xda\x3e\xfe\x98\x9e\xcb\x63\xcb\x9e\xb8\xb9\x20\xde\x76\x6c\x4f\xcf\x63\x36\xe5\xbc\x43\x71\xa0\x68\x37\x1f\xed\x95\xc8\xc2\xb6\x1e\xe9\xb7\xc3\xe3\x83\x1c\x20\xbf\xfe\x87\x07\xc0\xc9\x8b\xe9\x61\x53\xc8\xa8\x73\xd7\xf2\x8a\xfc\xa1\xbf\x71\x08\x5c\xe0\xe3\x89\x9e\xef\x55\x91\xbd\xd6\x66\xdc\x2d\x07\x64\x17\x72\xd7\x45\xc5\x16\x44\xa2\x60\x81\x5b\x20\x8c\x4d\xd3\x05\xf0\x5f\xe4\x63\xd0\xd9\xd5\xa9\xee\xff\x97\x79\xf5\xb1\xd4\x4f\x26\x08\x30\x78\x56\x6d\x0e\x5f\xf5\x6b\x3a\xf0\xe6\x4c\xc3\x87\x08\xaf\x5a\x65\xf6\x54\x35\x2d\xf1\x04\x37\xf1\xdd\xf9\x45\xa0\xda\x1f\x4d\xef\x6a\x71\xa0\x60\xe0\xc4\xad\xec\xca\xac\xf8\x5e\x09\x0f\x70\x90\x37\x0a\xe2\x4e\x52\x38\xd7\x68\xa0\x8f\xe6\xb4\xbb\x5e\xc4\x97\xa6\x60\x31\x98\x60\x84\x15\xc7\xc6\x49\x00\x48\xaa\x36\x73\x7c\x08\x50\x30\x08\xae\xce\x0f\x49\x42\x19\xdd\xf8\x9b\x72\xea\x77\x17\x1c\x6d\x31\x17\x08\x9e\xb8\x89\x07\xe8\xc3\x3f\xb9\xe7\x0b\x0d\xc2\x81\xf6\x64\xb5\xf9\x65\xb5\xd2\xad\xb1\x25\x07\x10\xef\x23\x52\x02\x5f\xb2\x93\x39\x5a\xe1\xd2\x3e\xe3\xb5\x92\xb4\xc5\xf2\xd5\x55\x69\xa5\x45\x86\x54\xce\x3f\xc2\x5d\xd0\xe3\xf7\xe6\x75\x7a\xa7\xb3\x47\xc1\xff\xd3\xba\x4d\x4f\x2c\x4b\x6d\x36\xaf\xd5\x98\x63\xa3\x2a\x59\x4e\x74\x53\x7e\xce\x9b\x8b\x1e\xc2\x69\xbb\xc4\xcb\x54\xd7\x62\x38\x21\x1f\x62\xa9\x8a\x46\xa4\xaf\x66\x2f\xa8\x1e\xba\x6f\x30\xf5\x14\xb8\x66\xb7\x94\x2b\xc1\x73\xf7\x21\x1a\x6c\x01\x4d\xa1\x4e\x74\x13\x27\xa5\x68\x62\x3d\x14\xb8\xf8\x35\xef\x1d\x5d\x62\xb2\x52\x3c\xfe\x6a\x85\xbc\x69\xfa\x05\x20\x0d\xea\xc1\x56\x8b\x94\x6a\x81\x6b\x75\xc5\xd7\x60\x31\x74\xfd\x4e\x2f\x91\x01\xa7\x90\x63\x79\x1b\xc3\xd5\x92\x97\xcd\xc1\x0b\xda\xa6\x63\xab\xf3\xc1\xbe\x2f\xda\x17\xe4\xe5\xce\x39\x4e\x90\xbd\x76\xb1\xf9\xe0\x40\x5f\x56\x75\xb9\x9d\x63\x8a\xbc\x2c\x1b\x2d\x8b\x53\xa6\xfd\x3d\xc8\x37\x58\x55\xec\x54\xcc\xbd\xa2\x4e\x67\x25\x27\x72\x3b\x07\xbb\x59\x9d\xb5\x4e\x38\x79\x33\x91\xcf\x09\xef\x3b\x1f\xd7\x61\x49\x90\x06\x5b\xbd\x4a\x19\xe8\xd3\xd1\x04\x82\x53\xba\x4c\x97\x1c\x2f\x98\xd2\xb3\x59\xdf\x50\x90\x87\x32\x3a\xa6\x90\x50\x29\xf5\xcc\x5e\x1a\x0a\xaf\x2f\x7c\x01\x08\xdd\xb1\xa4\x0f\x56\x2b\xe6\x4e\x57\xe6\x95\xed\x21\xdc\x7d\xb1\x7d\x53\x36\x77\xef\x12\xfc\xbb\xe2\x9f\x3b\x23\x7b\xb6\x34\x4b\x11\x09\xb3\x2a\x94\x62\xab\xc3\xad\x3c\x07\x10\xb0\x4f\x38\xc6\xf5\x95\x2d\xb2\x75\xe7\x7e\x2f\x37\xe9\x5d\x55\x09\x6b\xba\xf3\xe3\x05\xd5\xd7\x43\xd3\x65\x95\xbf\x05\x67\x89\x2c\x21\x0a\xc7\xba\xe7\x37\x1d\x16\x45\x84\x78\x5d\xd8\x90\x17\x41\x59\xb3\x93\x0a\x9a\x6c\xe3\xa1\x66\xdd\xa2\x38\x3e\x6e\x2a\xf2\x8c\x1b\xf3\x19\x24\x47\xe9\x05\x11\xdc\xd8\x0e\xbd\xf9\xee\x2c\x9b\xde\xdd\xee\xb6\x10\x55\x86\x41\x53\x2d\x07\xcd\x13\xda\x61\x25\x41\x54\xcc\x0f\xd9\xd4\x81\xe3\xb0\xa2\x37\xaf\x2e\xc2\x62\x56\xd4\xab\x21\x9f\xaf\x15\xad\x2b\x7e\x8e\x57\xab\x72\x6f\xf2\x72\x32\x16\xa5\x74\x58\x5e\x2a\x63\x9d\x94\x8c\x2c\x4f\x69\xee\xaa\xd2\x83\xe3\xa4\x4f\xf2\x68\xea\xef\xd7\xe6\x6b\x73\xed\xe4\x73\xa8\x39\x7c\x76\xb4\x8d\x56\xcb\x3c\xcd\xab\xc9\x1a\x89\x29\xcf\x42\x99\x83\x50\xe0"}, +{{0x76,0x2f,0x06,0xca,0x01,0xe3,0x14,0x71,0x5f,0x92,0xc9,0x0b,0xbe,0x72,0xa2,0x5b,0xf2,0x62,0x12,0xc8,0x1e,0xb1,0xd1,0xa0,0xda,0xe2,0xc3,0x11,0x30,0xf7,0xcd,0xbb,},{0xf9,0x62,0x6f,0xfd,0x69,0x27,0x31,0x92,0x5e,0x5a,0xac,0xfa,0x1b,0xde,0xd0,0x1a,0xa8,0xf7,0x30,0xb7,0x72,0xd5,0xe4,0x6a,0xdb,0xc3,0x15,0x56,0x5b,0x9b,0xf2,0xc9,},{0xe8,0x42,0xb4,0x9e,0x53,0x3d,0xbc,0x92,0x99,0x8d,0xc0,0x78,0xe5,0x97,0x93,0xa2,0xc2,0xfa,0x63,0x6b,0xdf,0xaf,0xdb,0x48,0x93,0x4c,0x93,0xcf,0x34,0x79,0x71,0x02,0x93,0x8d,0x13,0x7a,0xb7,0xea,0xd1,0xa0,0xf7,0x0e,0x94,0xa6,0x7d,0x57,0xef,0x6a,0x02,0xc9,0xec,0x77,0xd7,0x1f,0x70,0xcc,0x57,0xf1,0x53,0x3b,0xec,0x87,0x73,0x0e,},"\x94\x97\x48\x3a\x4f\xba\x78\x43\x3b\x38\xe9\xde\xb8\x91\x5c\x75\x0b\x6d\xa0\xf7\x8a\xf4\xa6\x8b\x62\xf9\xfc\x03\x91\xe3\x38\x87\x3b\x1d\x64\xb1\xb7\xf0\x9f\x12\xf0\x56\xa3\xc9\x16\x53\x49\x8a\xd5\x6e\x06\x9b\x8b\x16\x08\x87\xe8\xe3\x78\xa7\x6d\x8b\x3c\x66\x70\x83\xc0\xa2\xb2\xd2\x31\x7d\x3b\x87\x48\x57\xe5\x78\x62\xef\x0c\xb7\x04\x36\xa9\x02\x8f\x01\x91\xcc\xc6\x16\xe9\xd7\xc9\xbd\x86\x98\x08\xcf\x09\x48\x35\xff\x51\x86\x77\xb3\xfb\x08\x9f\x4c\x9d\x07\x7c\xc7\x74\x24\x05\xb4\x86\x3a\xc7\xa5\x96\x45\xc9\xcf\x54\x0d\x57\x39\x9d\xa6\xae\x9d\x07\xfd\x19\xfc\xa9\x5b\xc8\xa8\x6d\x8b\x8e\x24\xe4\x87\x33\xf3\x21\x58\xfd\x19\xa8\xa1\x11\x1d\x1d\xa1\xf9\xb5\x80\xa3\x9c\x10\x48\x46\x16\xcf\x2b\xc0\xec\x29\xf6\x3f\x77\xc8\x53\x56\x15\x8e\x16\xda\x59\x4b\x5a\x89\x0e\x55\xd0\xb6\x45\x99\xb3\x02\x93\xe9\x00\xed\x92\xad\x26\x19\x69\xe7\xdf\x4c\x4b\x1d\x0b\x60\x24\xbd\xce\xb6\x90\x67\xef\x48\x6c\x20\xfd\xcd\x22\xa1\x0d\x5d\xa4\x5f\xbf\x90\x5b\xa1\xe9\x35\xc9\x6f\x50\xaf\xb6\x35\x71\xbc\xff\x31\x30\x68\x4e\xda\x0b\x56\xe6\x0b\x26\xcf\x4c\x0e\xf9\x93\x8a\x92\x76\x8f\xc8\x63\x1f\xe3\x08\x23\x6b\x01\x2f\x92\xaf\x24\xa8\xf6\xe6\xec\xbe\x76\x62\x9b\xba\xf8\xff\xe5\x4c\xdb\xe8\x67\x1d\xe2\xba\x62\x4a\x7c\x0f\x61\x93\xbb\xa4\x11\x04\x12\x90\x2b\xac\x29\x90\x92\x2a\x9e\x5a\x81\x05\x3c\xf8\x76\xa4\xc8\x05\xa0\x4c\x56\xa8\x13\x9d\x34\x19\xe4\x54\xa6\x22\xd0\x34\x2b\xf4\x26\xe9\x80\x2c\x3d\xc1\xb4\x08\x0c\x75\x49\x2a\xfe\x9d\x7b\x15\x45\xfe\x08\x6d\x96\x35\x41\x32\x4f\xf5\x2a\x48\xc6\xbf\xae\xa2\x66\x68\xb3\xe0\x1e\x52\x36\xfd\x45\xfe\x54\x59\x45\x35\xc0\xb2\x3e\x28\x7e\xbd\x14\x28\xc8\xbe\x0a\xd1\x41\x60\x0e\x91\xcb\x51\xe1\xea\x66\x27\x1a\x64\x21\xfb\x68\x9e\x88\xa0\x79\x0a\x65\x1d\xbd\x21\xee\x20\x89\xb2\x74\x66\x6f\x66\x0c\xa0\x9c\xe2\xd6\x0e\x39\xe2\xee\x5f\x03\xb6\xeb\x82\xd1\x99\x76\x96\x6e\x79\x90\x0a\x81\x0f\x6d\x5b\x5c\x1a\x54\x8e\x50\x64\xf5\xc3\xd8\xa9\xf2\xde\xf0\x17\x9d\xf9\x9d\x14\x3f\xde\x69\xb0\x71\x2c\x09\x1c\x29\xe9\xb2\x5f\x40\xca\xfd\x57\xa0\x24\x65\x8d\x77\x74\x03\x76\x10\x34\x2f\x38\x00\xfd\x51\xf4\x9e\x79\xa5\xb3\xde\xcc\x11\x2f\x58\xd0\x3e\x3d\x29\x58\x75\x85\x88\xbc\x4b\x1c\x6a\x6c\xda\x7b\xc5\xf5\xbe\x18\x3e\x41\x51\x3c\x1f\x23\x0f\x3c\xc3\x64\x30\x4b\xf8\x24\x84\xb7\xcf\x19\xa0\x02\xe1\x50\xf9\x8c\x5e\x97\xc6\x16\x6e\xa1\x5b\x86\x34\x0b\x8c\x5e\xbe\x5c\x1a\x18\x3e\x55\x88\xe6\x6f\x55\x90\x50\x86\x31\x3f\x37\xa4\x09\xe8\x9b\x47\xdb\x31\xae\x97\x45\x3e\xdf\x69\xfe\xd7\xbe\x08\x11\x30\x71\xf3\x74\xb2\x6e\xc6\x04\x3f\x2a\x0e\x9c\xf8\xba\xd8\x02\xab\xad\x69\xe6\x17\xe7\x62\x43\xb3\xcc\x03\x4b\x09\x9d\x87\x29\xee\x40\x7a\x53\xeb\x03\xbd\xc6\x41\x0a\x03\x95\x04\xb3\xb1\x2c\x81\x9b\x64\x54\x5d\x40\x5c\x6a\x4f\x08\x49\x21\x93\x5b\xdf\xf4\x13\x0a\xe6\x29\xd9\x09\x62\x6b\x06\x26\x76\xe5\x38\xea\xfd\xff\xb1\xd6\x22\x9c\x08\x89\xd3\xcd\xdd\x33\x65\xdc\x3d\x65\x36\xf7\x24\x8c\x49\x31\x7c\xb5\x0c\x56\xfb\x57\x85\x55\x41\xd6\xfe\xeb\xac\x81\x6c\x99\x28\xfa\x66\x2d\x0a\xe8\x0a\x0f\x39\xe5\x70\xbb\x7d\x22\x41\x6f\x98\xf3\x71\xb6\x42\x47\x96\x89\x51\xa8\xa2\x46\xf7\x4b\x30\x61\x74\x3c\x9a\xf7\x68\x4b\xbb\x96\x6a\xe0\xbd\x78\xa8\x10\x49\x3e\xa4\xcc\xd7\x11\x74\x87\x1c\x82\xbb\x65\x2b\x27\x48\xe5\xbc\xcb\x0a\xb6\x38\x8a\x50\xf0\x53\xa0\x48\x08\x7f\xd9\x7e\xb1\x5c\x1a\x21\xb1\xee\x18\x25\xe5\x4a\xa1\x30\xd6\x63\x18\xaa\xf6\x61\xbb\xb2\x47\x63\x57\x7e\xb3\x7d\x31\x0e\x21\x9b\x0a\x9b\xba\x03\x75\xeb\x9c\x9b\x4a\xf8\xc4\xb9\x9a\x36\x99\xe0\xd3\x26\x67\x33\xb6\xe4\xe9\xc5\x34\x49\x0a\x13\x41\xcb\x19\x90\xca\x5b\x1c\x84\x7b\xc8\x12\x60\x26\xfe\xa9\x03\xa1\xf5\x49\xd6\x5a\xf8\xfe\x02\xa9\x16\x3f\xf8\xea\x28\x1e\x72\x26\x24\x3e\x2a\x15\x3b\x92\x18\x51\xde\x10\xf7"}, +{{0xc5,0xcc,0x0b,0x95,0x81,0x8c,0x4b,0xf3,0x8d,0xa1,0xd6,0x5f,0x02,0x16,0x27,0xe9,0xe5,0x7d,0x26,0x2b,0x02,0xec,0x6d,0x91,0x7a,0x7d,0x46,0xb1,0x1c,0x7f,0xe4,0x8a,},{0x45,0x7d,0xa4,0xef,0x14,0x51,0x9d,0x54,0x1e,0xdf,0x92,0xca,0xbe,0xd9,0xb0,0x4d,0x8a,0x2f,0x2a,0xfd,0x15,0x10,0xa9,0x2f,0x00,0x9b,0xb4,0xe8,0x75,0x4f,0x1e,0xba,},{0x3b,0xa0,0xaf,0x8a,0xf1,0x27,0xc4,0x58,0x48,0x26,0x09,0x0e,0xcd,0xaf,0x48,0x5e,0xbd,0xf0,0x7b,0x82,0xbc,0x49,0x9c,0x9a,0x2b,0xef,0xca,0x28,0xd4,0x93,0x44,0x97,0x4a,0xdd,0xbc,0x8d,0x80,0xa5,0x25,0x60,0xe0,0xf3,0xd7,0x3f,0xf5,0xcc,0xcc,0x72,0xc7,0x4b,0x5b,0x47,0xad,0x2e,0x6d,0xe9,0x61,0x2d,0x1a,0x00,0xae,0xc9,0x27,0x01,},"\xd6\x60\x8b\xf5\xac\x00\x0e\xca\xf9\x5f\xc0\x9f\x9c\xb7\x49\x8c\x51\x8a\x6e\x02\x55\x58\x6e\x63\x37\x85\x3b\x1d\x7d\x9d\x7d\xe4\xdf\xe1\x24\x5d\x59\x03\x1a\x31\x7d\x4e\x2b\x6a\x73\xc4\xc3\xf9\x5b\x58\x2e\x72\xa6\x42\x02\x21\x58\x7b\xac\x12\x0f\xb8\xed\x73\x48\x07\x0f\x28\x60\xd8\x58\x66\xa0\x9f\xe7\x56\x74\x34\x97\xf2\x11\x9b\xc1\xbf\xdf\x57\x3b\xe3\x5d\x10\x91\xbe\x37\xf1\x8b\xcd\xa6\x74\x1c\x90\xd5\x66\xcc\x92\x4b\x72\x16\x4b\x74\x9a\xf9\xa6\xf4\x0f\x71\xd3\xea\x5d\x87\x64\xcd\xc8\x17\x14\xbd\x73\x95\xe5\xf6\x79\x97\x36\x36\xef\xf1\xdb\x1c\xf0\x01\x29\x83\xf7\x1a\x2f\x2b\x12\xd4\x5a\x29\x4e\x5a\x38\x9f\x4c\xd2\x48\x3e\xb3\x9d\xa0\xdf\x26\xb7\x36\xc7\xaf\x6e\x41\xdd\x35\xa7\x8e\x45\x29\x2c\x39\x4e\x34\x68\x95\x32\x88\x87\x21\xf8\x63\xc5\x6d\xb9\x7d\xa1\xcd\x10\xa6\x6a\x20\xa6\x70\xb2\x7f\xe8\xce\x55\x68\xa4\x2b\x89\x37\x79\x0c\x7b\xe1\xaa\x42\x0d\x20\x3d\x7a\x88\x5c\x17\x29\xcd\x6b\x8e\x19\x71\x89\xe4\x79\xd5\x42\xcb\xcb\x9b\x53\x65\x6f\x2b\x9f\x53\x9c\x32\x5c\x34\xaa\x59\x8f\xd9\x1e\x7d\xf7\x0f\x9a\x74\xab\xec\x46\x76\x54\xb1\xc9\xa3\xd1\x44\x38\xe7\xc0\x83\x60\x40\xb7\x93\x87\x1e\xcb\xe9\xe5\xf6\x68\x0c\xcc\xcd\x5d\x46\x96\xa8\x7e\x37\xe8\x9e\xab\x28\xb6\xbd\x67\x9e\x8f\xe1\x62\x7b\xdc\x9d\x37\x3b\x82\xf5\x2c\xd8\xc4\x9b\xe9\xba\xcd\xc6\x30\xa3\x2f\xd1\x28\x35\x25\x5a\x54\x2f\xb7\xb1\x23\x93\x77\x9d\x44\x98\xaa\x06\xa0\xe7\xe1\xa4\x97\x79\x39\x81\x7e\xb2\x08\x8a\xf1\xe1\x9b\xb0\xe5\xac\xa8\x54\xc1\x25\xdc\x60\x3d\x83\x57\x36\xa0\x3d\x93\x80\x51\x53\x0c\x9a\xb1\xaa\x3b\xc7\x79\xb3\xba\xe7\x45\x0e\xf5\x7d\x1b\x3f\xc0\x93\xa3\x7d\xbe\x9d\x1b\xd6\xd0\x40\xf2\xf8\xee\xba\x77\xf7\xfa\x88\xc1\x49\xf0\x65\xc7\xac\xe3\x32\x77\xaa\x99\x69\xc2\x66\xea\x6d\x85\xca\xd6\x2c\xfa\xf5\x50\x8e\x70\x32\x71\x6b\xe6\x84\xa2\x28\x56\x41\x3e\x0e\x65\xe4\x2b\x6e\x9e\x6d\x86\x5a\x87\x36\x3c\xbb\x62\xd5\xbb\xb6\xa3\x73\x1d\xdd\xa0\xfa\x6a\xd0\x29\x3a\xf9\x89\x3c\x09\xa9\xe7\x43\x09\x0f\x2c\xee\x2f\x44\x37\x73\x6d\xd4\x33\xe2\xac\x74\x28\xbd\xc8\xc7\x7c\xb9\x96\x43\x55\xfa\x44\x15\xcc\x38\x31\xd8\xc7\xca\x5a\xf9\x3d\x51\x75\x2e\x71\x8c\x60\x66\xec\xa1\x42\x6a\x87\xc2\x98\x08\x28\x1a\x85\xac\x7e\x0b\x40\x44\xff\x6e\x28\x0e\x28\x01\x4b\x93\x83\xd1\x9c\x9d\x38\x7d\x29\xdc\x14\xde\x43\x3d\xa2\x60\x78\x4a\x49\x44\xca\x76\xc2\xfe\x8a\x08\x0d\x09\x96\xd9\xa6\xc2\xa3\xd3\xa7\x07\x72\x80\xed\xce\xe0\x38\x9a\xa8\xe5\x36\x5d\x1d\x9b\x34\x6e\xca\x09\x47\xb0\xff\x52\x65\x94\x3c\xcf\x09\x93\x9a\x4b\x4a\x8f\x98\x5f\x6a\x5e\x72\x72\x3c\x79\x5d\xa0\xbc\x36\x0d\xce\x50\x1f\x67\x3a\xb6\xea\x84\x43\xf1\x29\x42\x79\x52\x45\x3e\xb7\x2b\x3a\x8d\x0d\x97\x6c\x27\x8c\x5b\xd1\xa9\x85\x3c\x91\x8e\x0c\x24\x0c\x3c\x73\x49\x32\x95\x3f\xdb\x50\x39\xfb\xb0\x46\x87\x93\x7c\x9f\xf0\xab\x74\xa1\x6e\xae\x21\x2b\xc6\xf2\x0e\x70\x0a\x77\xc0\x92\xd2\x3d\x2e\xfb\x58\x0e\x0c\x19\xd6\x5f\x30\x41\x29\xab\x8e\x6c\xc1\x2e\x58\x05\x22\x57\xba\x09\x44\x9f\x30\xd3\xd9\x74\x39\x1a\xff\xf5\x63\x3d\xef\x2f\x5c\x4e\xbd\x57\x3a\x9e\x44\x4b\xf3\xa3\xdd\xac\xed\xf0\x2c\x05\xf3\xcc\x2e\x75\x06\x64\xa8\x4a\x1d\x24\xc5\xd2\x8b\x49\x67\x0d\xe8\xa2\xf2\x09\x08\x39\x48\x3c\xa3\x89\x59\x99\x1a\x7d\x37\x27\xe2\x1a\x15\xe8\x20\x16\xc1\x5a\x09\xee\x71\xf4\xf4\x3c\x0a\x60\x8b\x48\x48\x5c\x99\x34\xa3\x86\x14\x79\x4d\x62\x91\xda\xa3\x9c\x01\xc4\x5d\x3d\xeb\xe5\x79\xb5\x82\x3b\xf3\x40\x64\x04\xb4\xc8\x0e\xe6\xff\x34\x2b\x46\xb3\x34\xb0\xb8\x83\xb4\x0b\xfd\x2f\x9a\x53\x59\x5a\xb6\x2f\xd1\x35\x1e\xbc\x88\x30\x83\x70\x49\x72\x18\xdf\xc9\x8c\xe0\x81\x40\x7d\xa8\x12\xa4\x6d\x64\x97\xd7\xaf\x9e\xc6\xd8\x3e\x1c\x60\xee\xb7\x12\xd8\x89\xdf\xbe\xd0\xc8\x05\xaa\x11\xcf\x81\x7d\xd8\xf0\x43\x96\xef\x87\x1a\x26\x11\x2d\xcb\x7c\x0e\x1d\x2e\x68"}, +{{0x61,0xfa,0x86,0x77,0xee,0xda,0xde,0xd6,0x9b,0x16,0x5c,0x8d,0x27,0x7c,0x97,0x82,0x49,0x66,0x30,0x28,0x30,0x1d,0xf6,0x16,0x3e,0x39,0xb0,0x6a,0xc2,0xf5,0x62,0x5f,},{0x87,0x33,0x9e,0xb5,0x72,0x38,0xdb,0x2e,0x4e,0x60,0xf3,0xc2,0x8a,0x3f,0xd5,0xfb,0x61,0x1c,0x65,0xfd,0xdc,0x81,0xee,0xd7,0xcf,0x77,0x71,0xdf,0x34,0xd9,0x22,0x67,},{0xc0,0x4e,0xbd,0x11,0xc3,0xeb,0x09,0x39,0x6f,0xe8,0xd6,0x82,0x79,0x51,0x0a,0x9e,0xfe,0xe3,0x91,0xab,0xee,0x40,0x81,0xf0,0xd2,0x75,0x67,0x4a,0x30,0x47,0x94,0x83,0x5a,0xad,0x7f,0x3e,0x34,0x5b,0xcf,0x0a,0xf8,0x02,0x7f,0x97,0x47,0x7e,0x79,0xe6,0x79,0x2b,0x8f,0x29,0x98,0x46,0xae,0x28,0xcb,0x13,0xbd,0x88,0x75,0x37,0x99,0x0d,},"\x02\xc5\x81\xde\xe0\x3f\x2c\x60\x39\x35\xaf\x5e\xce\xec\xfa\x67\x71\x34\xa3\xe0\xae\xa5\x4f\xec\xaf\x42\x71\xfb\x52\x95\x1a\x27\xb7\x68\x77\xcc\xd4\x9a\xb4\x86\xdf\xc2\x27\xcf\x31\xc9\xd9\x57\xcc\x97\x30\x65\x73\xfc\x7f\xe1\xd3\x1b\x6c\x7d\xf3\xd7\x80\xf3\xa0\x5c\xa6\x39\x56\x57\xa9\x42\x43\x42\xc9\xc6\xb7\x03\x12\x7e\x03\x8d\xf0\x79\x21\x54\xe3\x0a\x49\x47\x61\x12\xcb\x92\xd0\xd5\xa2\xd2\x2e\x89\x57\x52\xa8\x6e\xdd\xdd\x91\x2f\xdc\x81\xb1\xe6\x4a\x7b\xb7\x50\xf0\x99\x18\x21\x32\xee\x48\x23\xfd\xe8\x45\x80\x2a\x94\x45\x39\xd4\x12\xb2\xa8\x1a\x15\xb0\x00\x71\xa9\x50\x50\x4c\x5b\x55\xa7\x1b\xdb\x8c\x5a\x58\x26\x39\xe8\x55\xe8\xbe\x24\x1c\xda\x1b\xa6\xb3\xb4\xf6\x45\x54\xd1\x78\x24\x90\x4c\xb3\x0c\xd7\xef\xd9\xac\x04\x9e\x39\x0b\xb7\x9f\x53\x59\x8e\xf1\xe8\xfc\x27\xdd\x7b\xf5\x99\xc9\x02\x8c\x9e\xbf\x92\xfc\x3b\xe1\x1d\xf3\x29\x61\x2a\x22\x8e\x0f\x56\x84\x68\x7b\xf4\x1f\xf2\x03\xe9\x7a\x76\x86\x12\x6a\x39\x36\x6b\xdc\x26\xd5\x0b\xe0\x25\xd5\x18\x7c\x6b\xa0\x66\x6e\x37\x9b\xe4\xa8\x0a\x9e\x62\xef\xfc\xd9\x16\xd7\xf9\x8d\xe6\x51\xe0\x0b\x97\xad\xf5\xd2\xd5\x3d\xaa\x7f\x8d\x69\x5a\x29\x15\x60\x75\x5c\x74\x44\x82\x36\x4c\x4f\x1f\xa4\x7e\xc0\xb1\xda\x16\x1a\xa3\x88\xf9\x59\x79\x89\xa9\x77\x26\xd3\xed\x2c\xec\x82\xf1\xa1\xbb\xc4\xac\x0b\xe0\xa0\x0c\xb4\xa8\xdb\x1f\xb7\xc1\x4b\xa0\x5d\x89\x63\x48\xdc\x05\x59\xd2\xa9\x0b\xea\xc2\x04\x1d\xd7\x7f\x82\xd6\xb1\x2a\xeb\x22\x43\xca\x0f\x41\x9a\x57\xd3\xca\x9c\x7d\x25\xa3\x0f\xf0\xe8\xbb\x0d\x94\x51\x55\xd1\xb3\x6a\xd1\x07\xb5\x5b\xea\xa9\x5b\x7d\x5e\x32\x00\x34\x07\x62\x9f\x15\x15\xf8\xa7\x08\x9e\x24\x88\xd0\xd7\x54\x4c\x2f\x7c\xc7\xc7\xf0\x98\x5d\xa4\x28\x40\xd4\x36\x8f\xf4\xf0\xfa\x4f\xa2\x98\xe3\xb7\x22\x93\x03\xab\xa5\x14\xae\x94\xe7\x02\x65\x35\xa3\xf4\x26\xff\xbb\x4e\x00\x1c\xd5\x0e\xd1\x2f\x21\x4b\x3a\xbe\xf9\x6e\x30\x16\x35\xc9\x87\xb1\x33\xfc\x5e\x61\x84\xe7\xb7\x57\x2b\xc3\xd9\x9a\x45\x23\xcb\xd5\xaf\xe5\x93\xce\xdf\x4c\x9c\xd0\x2f\xf2\xe3\x62\x37\xe4\xee\x12\xef\x1a\x22\xd1\x6d\x7c\xf4\xc0\x72\xdc\xed\x91\xcd\xd2\x6e\xe1\x44\xcc\x2b\xef\x49\x50\x02\x63\x49\xe9\x44\x47\x84\x08\x1f\xe4\xe0\x49\x8b\xc7\x5f\x72\xe6\x81\x8f\x45\x9b\xba\x90\x49\xc5\x61\x31\x6c\x9f\x49\x8e\x7b\x1a\x99\x4b\x0e\x93\x05\x5f\xe7\x3e\x44\x4c\xbd\xf9\x6a\xc3\x5e\x9c\x4e\x92\xe6\xb4\x9e\x3b\xc0\xe9\x9d\xe1\x71\x6d\xf8\xea\xca\xeb\x8d\x2f\xd7\x48\x70\x04\x4c\xb3\x9c\x0e\x36\x7a\x1f\xe3\x2a\x9b\xb2\x97\x44\x16\x36\x4e\x73\x0d\x52\x48\xdf\xb1\xdf\x16\x4a\x8d\x58\xca\xa1\x00\x5f\xdc\x91\xba\xc2\xbc\x01\xcc\x77\xde\xcc\x14\x89\x3e\xf9\x46\xfb\x3c\x81\xbe\x08\x32\xc7\x2f\xba\x37\x20\x62\xf8\x36\x0f\x4d\x8e\x6d\x5b\x74\x1c\xf7\x03\x2d\x8d\x89\xde\x2e\xdf\x4c\x71\x4a\x29\xf7\x5a\xbd\x8f\x5f\xf4\x3e\xcd\xd4\xb7\xa0\x4d\x7d\xb0\x88\x2d\x16\xe7\x44\x73\xa0\xfb\x79\xdb\x44\x4a\x78\xea\x44\xaa\x26\x31\xb8\xc0\xd7\xb0\x30\x0d\x55\xcb\x6a\xc4\x85\xf2\x4c\x0a\xcc\x64\x77\x47\xc4\x3d\xb3\xb2\xa8\x67\x7b\xaf\x65\x6f\xa7\x35\xa5\x75\xf1\x81\x3f\x36\x68\xa2\xac\xa9\x17\x57\x11\xb5\x25\xeb\x49\x6e\x9e\xf9\x71\x1d\x75\xf5\x90\xc7\xd9\xef\x99\xe0\xf5\x9e\x84\x83\xcb\xf9\xf2\x84\xe3\xf5\xa3\x3e\xe7\x78\x1e\x62\xb8\xb0\x55\x51\x77\x7e\xfe\x0f\xbf\xd1\x9e\x54\xb6\xbb\xd1\x42\x94\x4b\xc2\x95\x9a\x82\xeb\xd2\x95\xd2\x3d\x34\x43\xb6\xce\x65\x8c\x2d\x57\x9a\x76\x37\xb5\x49\x52\x04\x91\x90\x8e\x34\x28\x2e\xc2\x71\x69\x72\xe6\xf0\x35\x39\x29\x54\x7e\xf1\x53\x7a\xec\xc9\x6b\x2d\xf6\x16\x14\x85\x99\xb0\x9d\x9b\x81\x39\x4a\x13\xfe\x7d\xb8\x67\x60\xb1\xe2\xa0\x60\xef\xd4\x84\xe8\x18\x99\x39\xeb\xdf\x6f\x21\x64\x0d\x89\xd8\xe7\x36\xde\xe0\x82\xad\x72\xa0\x18\x4a\xde\xdd\x8d\xf2\x14\x74\xc9\xf5\x26\xbc\xfd\xf7\xe8\x56\x58\x19\x4b\xb6\xd9\x42\xe7\xf3\xfe\x96\xc2\x3f"}, +{{0x70,0x48,0xc6,0x52,0x1a,0xef,0xaf,0xa4,0xea,0xc6,0xd6,0xc3,0xa7,0x02,0xb9,0x52,0x54,0x80,0xa6,0x64,0x82,0xe4,0x96,0x98,0x96,0x75,0x7f,0x2c,0xd1,0xac,0x7d,0x5b,},{0xed,0x93,0x11,0x3c,0x16,0x43,0xa5,0x3a,0xa0,0x64,0xca,0xa6,0x31,0xce,0xb6,0xe2,0x0f,0x6d,0x6e,0xc2,0xfc,0x6c,0x07,0x11,0xcb,0x8a,0x1f,0xe7,0x31,0x39,0xaf,0x93,},{0x7c,0x45,0x70,0x3e,0xd3,0x94,0x2e,0x44,0x04,0x1c,0x7f,0xa1,0x85,0x8a,0xa5,0xf1,0xdc,0x38,0x1f,0x49,0x3a,0x45,0x2d,0xfb,0x52,0x70,0x80,0x17,0x89,0x8f,0x71,0x0e,0x31,0x11,0x8e,0x33,0x1f,0x00,0xaa,0x64,0xcb,0x73,0x88,0x36,0x68,0x2b,0x7d,0x17,0x7e,0x97,0x95,0x5c,0x00,0x31,0x9a,0xbd,0x79,0xa4,0x9e,0x0f,0xcd,0x16,0xfe,0x00,},"\x53\xf7\x4c\x72\x4d\xb1\x57\x8a\x1a\x29\x6a\x7c\xca\xc9\x04\xa2\x50\x4d\xd9\x00\x53\x89\xb4\xf8\xd4\xea\x4b\x63\x07\x29\x8f\xc6\xdc\xce\x98\xa6\xbc\x07\x28\x0d\x20\x36\x4e\x40\x5a\x46\x7e\x73\x65\x78\x96\x52\x69\xc8\x14\x61\xd6\x1f\xc6\xb7\xe4\xba\xd6\x8d\x2b\x6d\xd0\x00\x58\x50\x10\x5f\x0a\x67\xbb\xc6\xee\x22\x3e\xc1\x75\x4a\xf4\xe3\xb9\xaf\xa5\x06\x2d\x1c\x18\x61\x04\x8f\x18\x5b\x12\x8f\x1a\x5c\x0f\xb2\x5c\x39\x19\xb4\x83\x3e\x29\xe2\x02\xbc\x94\x1a\x90\x5e\x63\xc2\xc0\x5b\x10\x14\x64\x7b\xd7\xed\xe5\xbe\x9f\x99\x66\x15\x18\x7a\x3d\x3b\xb2\xc7\xdc\x4c\x28\xf7\x05\x3d\xef\x9b\x28\xb2\x9e\x23\x31\xf1\x62\x96\xdc\xe8\xf1\xed\xe4\x84\xca\xec\x99\x67\x02\xbd\x99\x02\xe5\x26\x84\xc8\x12\xc8\x74\x40\xf6\x9b\xd1\x41\xc7\xe0\x0c\x69\x47\xd1\xfc\x7c\x3b\xdc\x0b\xc5\x50\x6b\x6e\xa4\x62\xe6\x5f\x9e\x74\x3b\x72\xc0\x07\xdd\xc7\xa3\x77\x49\x37\x77\xd4\xeb\x12\x62\x0c\xa6\xc0\x19\xc8\xbf\xc4\xc2\x9e\xc8\xaf\x38\x2f\xc3\xea\xc8\x41\x02\x1a\x74\xe4\x67\x4b\xa3\xe4\x3e\x5d\x7b\x41\xe3\xfe\xeb\x17\xda\x00\xa7\xce\x45\x5a\x1c\xec\x70\xb0\xbe\x6e\x56\xf8\x5f\xc3\x7f\x64\xcf\x07\x33\xb7\xe3\x12\x41\xde\x64\x1a\x8a\x8e\x5b\x91\x89\x7b\xc1\x58\xfe\x93\xd1\x02\xc0\x1d\x1f\x5e\x16\x6d\x40\x81\x65\xfe\x3f\xcb\x13\xd5\x30\x45\x90\xab\x8e\xf0\xdc\x8d\x5a\x8c\x1d\x8a\x93\xfc\xeb\x85\x4f\xc1\xfa\x36\xd0\xcc\x48\x0c\xf8\x51\x2d\x80\xbe\xe6\x9b\x06\x50\xa9\x57\xda\xed\x28\x3c\xd7\x63\x81\x55\xed\x77\x30\x86\xe8\x6a\x8f\xfb\x19\x8a\xcc\x74\x23\xb5\xd1\xa6\x09\xa1\x75\xa5\x6b\x94\xc9\x6b\x73\x18\x51\xb9\x3a\x94\x97\x71\x01\xe2\x55\xf1\xce\x92\xe2\x32\xa0\x5e\x2e\x33\x87\xfc\xb4\xdc\x13\xa3\x1b\xee\x6e\xe2\x55\x07\x32\x2c\x73\xc9\x88\x30\x80\xa7\x4c\x00\xf8\x03\xa9\x98\xdd\x53\x0a\x79\x12\x6b\xb1\x44\xed\x55\x74\xc4\xb2\x31\x80\xe3\x4e\x09\x92\x83\xb4\xbb\x1d\x28\x82\x2f\xce\x37\x17\x04\x6f\xf3\x2e\xf9\xe2\xcd\xf9\x67\xe3\x18\xea\x72\x6a\x2a\xee\xc5\x78\x06\x64\x3a\xd4\x80\x1d\x3e\x0d\xa5\x2a\x1d\x77\xbf\x04\x3f\x5a\xe9\xf3\xae\xa9\xe4\xbc\x4f\xa7\x95\xd0\x84\x01\x08\x5c\xa9\x4c\xfc\x4c\xe7\x19\xda\xbc\x7b\x23\x90\xd0\x3d\x29\x4a\x65\xb7\xaf\x9b\xc3\x90\x72\x28\x5b\x77\x7b\x2f\x13\x3d\xc1\x1a\x70\xc0\xa9\xf0\x60\xe1\x04\x41\xf4\x02\x16\xac\xb6\x41\x63\x7a\x2e\xad\xf1\xf7\xb8\xd2\x62\xfe\xc1\xb4\xd0\xf0\xf4\xfa\xa9\x3f\x3f\x73\x2c\xac\x38\x2d\x8a\xc4\x2e\x17\x8e\x22\x44\x99\x9d\x76\x4a\x9d\x0e\x98\x17\x14\x68\x6e\xb4\x92\x44\x97\xe5\x6b\x50\x15\x7e\x99\x39\x03\x2c\x9f\x88\xeb\x65\x7c\xfd\xe4\x4a\xd3\x47\x14\xaf\x4a\x51\x32\x4e\x5e\x77\xd0\xde\xea\x99\xc9\xf2\x44\xd2\xe0\x9e\xa4\x25\x82\x0a\x74\x6d\x88\x3a\x0c\xf4\xb7\x05\xc2\x9d\xf8\xc0\x37\x44\x81\x54\xdc\x08\xa4\xd4\x33\x74\x05\xfb\x87\x65\x82\x31\x14\x37\x0b\x37\xed\x86\x08\x6e\xc5\xf8\xbd\x6c\x72\xab\xf1\x3f\x51\x84\x30\x71\x0f\x59\x7b\x06\x10\x8f\x65\xb3\x0a\x48\x34\x96\xe2\xed\x81\xda\xb1\x0f\xee\x94\x7f\xe0\x4b\x54\x85\xf2\xe3\x07\x40\x49\xd2\x22\x84\x26\x66\x51\xad\x10\xdd\x08\x6a\xaa\x5d\x45\x2e\x0d\x1a\x61\x12\x9d\x1e\x77\xc6\x63\xc2\x6d\x08\x89\x62\xb5\x54\x56\x45\xb7\xa1\xa8\x71\x3d\x51\x32\x7a\x7a\x35\x9b\x12\xda\xad\xb8\x5a\x2c\xd4\xb5\x41\x0d\x5c\x20\x26\x7f\xa7\x66\xb8\xc4\x2a\x84\xdc\x42\x66\x45\x88\x87\x9b\x3e\xae\xfd\x4c\xc8\xdc\x69\x3f\x98\xac\x20\x56\x09\xe5\x70\x66\x5b\x01\xea\x46\x55\xe3\x94\x29\xa7\xa7\xe5\x42\xef\xb4\xf7\x89\x0d\xbf\x4e\x34\xc6\xcf\xf0\x7e\x4d\x35\xbd\x3e\xee\xdf\x5b\x46\x28\x0f\x4a\x0d\xa0\xc2\xe7\x3c\x94\xea\x81\xcf\xea\xe7\xf9\xbd\x04\xfe\x2d\x45\x97\x65\x00\xf7\xdc\xac\xb0\xdf\x2a\x5d\xc7\x36\xa8\x23\x67\x1d\xb6\x79\xbe\x66\xcb\x33\xc1\x62\xfd\x2c\x74\xae\x71\xfb\xf4\xd2\xb0\x5a\xf0\x42\xb3\xa9\x77\xf5\xb9\x44\xb9\xfd\xb6\xc3\x44\x24\x42\x1b\xcf\x4f\x62\x23\x76\x84\x28\xfa\x14\x0f\xd4"}, +{{0x3e,0x63,0x73,0xb2,0x65,0xb9,0x67,0x89,0x00,0x7a,0xd2,0xa1,0x0c,0x30,0x9a,0x56,0x76,0x38,0xf2,0x55,0x87,0xd7,0x7e,0x28,0xb0,0x82,0x3a,0x4f,0x17,0x9a,0xe4,0xfe,},{0xa3,0x23,0x4e,0x5d,0x13,0xb0,0x34,0x72,0x16,0x50,0x36,0x40,0x4f,0x6d,0xe8,0x0e,0x70,0x28,0x39,0x50,0x0f,0x13,0xd9,0xc9,0x85,0xa0,0x77,0xd4,0x5c,0x69,0xff,0x45,},{0xf5,0x1e,0x0f,0x87,0x8a,0x5a,0x70,0x96,0x47,0xe8,0x5f,0xea,0x83,0x9f,0xd5,0x66,0xe6,0xf3,0x5c,0x8a,0x61,0x85,0xd0,0xc9,0xeb,0x13,0xe0,0xd5,0xb9,0xe6,0xe8,0xaa,0x95,0xc3,0x33,0xa8,0xf5,0x06,0x32,0xa4,0xd6,0x65,0x7b,0x51,0x8c,0xe4,0xcf,0xde,0x40,0xb8,0xf5,0xa0,0x5b,0x2d,0x9f,0x84,0x41,0xfc,0xc9,0xd2,0xd6,0x92,0xd5,0x09,},"\xb9\xd0\x68\xbb\xca\xe7\x72\x2f\x82\x8b\x0f\x8c\x98\xa7\x38\xe3\x6a\x7d\xf4\xc9\x97\xc7\x24\xba\x27\x53\x1a\xf3\x4a\x2f\x10\x6c\x75\x13\xa4\x4a\x46\x1a\x9a\xa4\x30\x9b\xc1\x5c\x4e\x0d\x42\x75\x91\x93\xea\x1c\xde\xa9\x56\xbb\x81\x59\x85\xf5\x78\x67\x14\x5e\x9e\x2c\x75\x85\xfc\x8d\x61\x02\x7e\x47\xd2\xd7\x35\xe2\x44\x8a\xf3\x78\x29\x09\x40\x4e\xde\xaa\xc0\xfd\x73\xf6\x04\x5d\xcd\xb0\x4f\x03\x77\x75\x8f\x02\x20\x4a\xae\x3a\x72\x20\x31\x1c\x0f\x47\x23\x58\x27\x10\xcc\x44\x0c\x36\xc9\x58\x7b\x5c\x9e\xbc\x40\x63\xfe\xa8\xca\x3f\x43\x19\x58\x94\xf7\x9a\x36\x50\x87\x13\x72\x82\x30\x2d\xbf\x2e\x7a\x0d\x41\x1a\xb5\x8b\x70\x26\xcc\xde\x19\x88\x69\xaa\x73\x43\x34\xc0\x52\x38\xe2\x75\xe3\xc3\xab\x21\x70\x83\x49\x57\x69\xe2\xfa\xd3\x74\x05\x14\x52\xd7\xf5\xb1\xdb\x0e\x78\x58\x36\xd4\xbd\x5e\x29\x78\xa3\xe9\x91\xaf\x0f\xf7\x16\xf4\x38\x89\xa0\x7f\x5d\xf2\x99\x60\x36\x21\xc3\x9e\x2c\xde\xe0\x89\x98\x5d\x9e\x6b\xf7\xb2\xfb\xd0\x23\x73\xae\x1b\x5e\x9b\x88\xf5\xb5\x4a\x07\x6e\x67\x6d\x77\x90\xbf\xc8\xf5\x7d\xcc\x59\xef\x52\x85\x0c\xe9\x92\xa7\x3b\xa7\xbc\x99\x1d\xeb\x4d\xde\x5e\xb0\xb2\x16\x70\xb1\xb3\xd4\xb6\x4f\x36\xcc\xa8\xe3\x07\x09\x85\x68\x49\x7d\x89\x16\xf6\xb5\xd0\xe9\xe8\x9f\x99\xf8\x60\x06\xf3\x9b\xd3\xa8\x10\x76\x9c\x8f\x78\x01\x77\x3c\x96\x38\xab\xcf\x5e\x27\x11\xb1\x9d\x11\x67\x59\x3a\xcb\xe8\x5e\x41\x61\x42\x89\x97\xa2\x19\x4d\xc5\xe7\xb7\x64\x0f\x0d\x2c\x1e\xb2\x05\x55\x3b\xe9\x16\x7f\xfb\xc2\x2b\x7c\x2e\x76\x98\xf3\xaf\xa1\x07\x54\xcb\x44\xd4\xb1\xd4\x5b\x83\x73\x03\xb1\x66\x90\x73\x41\x5a\x22\x60\x6b\x50\xf2\x1f\x82\x65\xe1\x39\xf2\x30\x5a\xc0\xe0\x12\x7a\xe0\x56\xce\x8a\xbe\xab\xa2\x0e\x1d\x26\x9a\x2b\x2e\x89\x9c\x49\x54\x72\x68\xa0\x69\x6a\xe4\x50\xdc\x02\x67\xf7\xf6\x3a\x8e\xdf\x07\x4c\x47\xd3\xc2\xdb\x1d\xa3\x63\x93\x73\x73\x04\xe6\xdd\x4f\xac\xcd\xb6\xab\x55\xe5\xf8\x52\x0c\x3d\xff\x5f\x6b\xea\xc3\x0b\xa8\x5b\x86\x08\x23\x51\xe3\xde\xd8\x40\x0a\xa5\x7f\x65\x0c\x0c\x33\x03\x6d\x65\xb3\x9b\x7d\x2f\xb6\x11\x28\x63\xd5\x9b\x72\x55\x82\x42\xe8\xb0\x45\xad\xdd\x35\x7d\xe6\xfd\x37\xa8\xf6\x61\x17\x65\xc9\xb5\xff\x19\xcc\x4d\xb7\xe1\x17\xc6\x5a\x00\x45\x89\x08\xb0\x24\x5d\x04\xf7\x90\x8f\xc7\x3b\x16\x5d\xff\x6e\x4b\xe4\xb4\x20\x32\xd8\xcf\xd7\xd6\xf7\x77\x2c\x1b\xfe\x72\x1d\x4b\xcf\xe2\xfc\x52\x79\x98\xf3\x4f\xb4\x41\x8a\x1f\xae\x1e\x6c\x37\x67\xc4\xd0\x78\x06\x21\xf9\x23\xda\x1f\x0a\x0d\x3d\x21\x9c\x03\x6a\xcf\xd3\x70\x9d\xad\x4c\xf2\x4d\x90\xbc\x69\x1d\x70\x0e\x6a\x9c\x80\xcc\xfd\x10\xbd\xe8\xe7\x91\xc0\xfe\xa8\x28\x80\xc0\x7b\xaa\xaa\x31\x1e\xef\x79\x24\x07\x84\xf6\x28\xa7\xd2\xa0\x91\x84\xe0\x16\xf8\x10\x08\xe7\x74\x29\xa8\x65\x8b\x15\x3e\x44\xe7\x9a\x98\xad\x24\x8f\x7f\xda\x23\xb5\x90\xd6\x46\xd7\xc1\xd8\x41\xf4\x92\x7d\x6e\x8b\xc7\x32\x14\xd1\x0a\x7f\x3c\x29\xc8\xf8\x39\xa8\x90\x8d\x20\xa7\x4e\x82\x7a\xf4\x67\xac\x5a\xbf\x0f\x1d\x0e\xd3\x9c\xdd\xd9\x69\xdd\xe9\xee\xb4\xa4\xb7\x52\x7a\xb3\xe2\x47\x5a\x19\x5e\x24\x47\x4a\x4e\x36\xb0\x90\x52\xe2\xda\xd4\xa5\xeb\x46\x91\xe2\x63\xb8\xc6\x1b\xbd\xe8\x77\x72\x20\x7e\x01\x1c\x4c\x1e\x14\x23\x5f\xb2\x4e\x4d\xa4\x38\x87\x5d\x18\x53\x0f\xef\x90\x26\x19\xdd\x48\x5d\x77\xb5\x45\xab\xb5\x6b\x69\xc7\x55\xaf\xe7\x58\x60\x69\x71\xab\x97\xdd\x3a\xce\x1c\x1a\x34\xa3\x37\x94\xc8\x15\x6d\xa7\x99\xe8\x22\x4d\x88\x5e\x18\x68\xf9\xcb\x46\x6d\x80\x2c\x82\x7c\xc3\xe1\xec\xd0\xae\x6e\x0b\x01\xf8\xf7\x91\xb1\x22\x08\xfc\xc0\xfe\xd3\x85\xb7\x96\xeb\x2f\x29\x08\xb5\x8d\x30\xb3\x73\x3f\x14\x70\xf2\xe2\xef\x12\xad\x43\xfe\xb7\x2d\x08\x16\xde\x3c\x13\xa8\xb5\xa5\x23\xe1\x4c\xdf\x5f\xf3\x72\x0b\xf8\x77\x69\xcd\xe7\x49\x5d\x22\x6b\xf3\x82\x38\xa8\x25\xf7\x5a\x09\xf6\xbb\x9a\xfc\xe5\x16\xa7\xbc\x70\x11\x43\x70\xbb\xc4\x0f\x17\xc7\xbc"}, +{{0xf5,0xe8,0x59,0x7e,0xac,0x0e,0xbf,0xa9,0xd3,0x85,0xde,0x85,0xa1,0xfb,0xaa,0x35,0x14,0x63,0x95,0xb1,0x34,0x57,0xb5,0xb1,0x4d,0x36,0x70,0xda,0xca,0x69,0x05,0xe7,},{0xce,0x93,0xe6,0x42,0xc2,0xf1,0x50,0x84,0xbc,0x83,0xba,0xfd,0xaa,0x19,0x67,0x63,0xde,0x2a,0x3c,0x51,0x3b,0x0e,0x44,0xf6,0x8d,0xdb,0xde,0x37,0x85,0x14,0xc4,0x41,},{0x57,0x65,0x43,0xfc,0x21,0xab,0x0a,0x7c,0x5f,0x63,0xb1,0xcf,0xf0,0x1b,0xf8,0x45,0xdf,0x91,0x79,0x2e,0x7a,0x97,0x50,0xc5,0x50,0x8b,0x51,0x66,0x5e,0x7f,0x89,0xf1,0x7c,0x6e,0xc3,0x35,0x5a,0x0a,0xed,0x87,0xdb,0x8c,0x77,0xbd,0xb2,0x71,0xfb,0xed,0xc7,0x14,0xff,0xad,0xb7,0x8b,0x5e,0x0f,0x97,0x81,0x16,0x77,0x1b,0xa7,0xcf,0x0b,},"\x27\x33\x41\xf2\x19\xff\x5c\xf3\x81\xc7\x7b\x2d\xd2\x26\xc5\x8f\x8f\x33\xc4\x52\x70\x48\xcb\x00\x6a\xff\xef\x8c\xee\x15\x1e\x30\x0e\xfe\xf6\x29\xfe\xd2\x1b\x70\x45\x1f\x72\x92\x92\x62\x7d\x1f\x3f\x1b\x52\x57\x35\x9e\xe5\xa6\x71\xcf\x62\xae\x57\x32\x49\x40\xf2\xd0\xb1\x5a\xac\x76\xff\x39\x82\x20\xc0\x80\x24\xe2\x9a\x8c\xf3\x65\x04\xe1\x2a\x4e\x96\x43\x8f\x42\xc3\xda\x0c\x00\x05\x41\xbc\x11\xf0\x91\x38\x1b\x0b\x72\xb5\x8a\x92\x08\x3f\x44\x6e\xca\x19\x91\x99\x68\x78\xde\x35\x08\x1c\xc4\xab\x90\x95\x8c\x96\xcf\x5c\x99\x79\x6c\xba\x79\x51\xee\x18\x6f\x26\x52\x7a\xed\xe6\x9d\xb3\x04\xce\x29\x41\xba\x15\xcc\x00\xba\x2f\x14\x11\xf2\x08\xda\xd4\x5e\x87\xbc\xf6\x38\x79\x2d\xe0\xa6\x86\x24\xb6\x67\x29\x7c\x27\xa3\x43\xdb\x4b\xaf\x34\xa0\x22\x8e\xaf\x0d\x10\x22\x00\x9b\x5d\x06\x8b\x25\x34\xd9\x20\x30\x2e\x71\x31\x0f\xeb\xf0\xdf\x1b\xb0\x2c\x2e\xf0\xad\x1a\xe1\x49\xde\xad\xf8\xc1\x84\x37\x3c\x0f\x7e\xb6\xb2\x56\x95\xbe\x82\xd1\x2c\x71\xb6\xc8\x32\x67\xd9\xa2\x33\x66\x7e\x77\xbc\x20\x59\x83\xf8\xb8\xd8\x77\xd8\x5a\xea\xd3\xf6\x0e\x82\x0f\xfc\xb1\x7a\xdd\xdd\x92\xa7\x71\x2b\xbe\xb3\x4e\xe7\x19\x66\xda\xfd\x99\x07\xd1\x93\xdd\x9d\x72\x5a\x31\xa6\x13\xd2\x9e\x32\xbe\x72\x13\x28\x08\x92\x6d\x94\x37\x47\x7f\xee\x25\xed\xa6\x10\xae\xb1\xdc\xe1\x2e\xa3\x16\xc6\xae\xc6\x68\x9e\x50\x1c\x55\x19\x23\x82\x5a\x34\xb4\x2c\x4f\x06\x75\xb8\x6a\xb2\x6a\xde\xea\x2e\x60\xda\xe6\xc6\xd1\xcd\xd0\xcb\x3c\x34\x7b\x16\x38\x40\x39\xa8\xe3\xfd\x60\x87\x38\x13\x87\xcb\x4b\xc7\x2d\xdb\x5f\x25\xb3\x74\x85\x9b\x02\xe5\xbb\x1b\xa0\x6d\x3c\xc6\x9e\xc4\x4c\xec\x4b\x98\x5c\x84\x76\xe3\x50\x32\xe9\x9a\xbf\x00\x1a\x1d\x44\xdd\xc6\xe2\x88\x9c\x3c\x2c\x3e\xca\xce\xd6\x09\xb2\xb2\x68\x0e\x00\xb1\xef\xa7\xe9\xd2\x6d\x62\xf2\xb3\xab\x36\xf9\x21\x04\x47\x90\xab\xbd\x49\x36\x07\x56\xdc\xff\xcc\xf2\x30\xf6\x6d\xbb\x70\x1a\xa1\x64\xda\xd6\x06\x9a\xa2\xb8\xb3\x30\x9f\x2f\xe4\x4d\x5e\x0b\x25\xbd\x55\x64\x31\xf0\xdf\x4c\x2e\xa9\x7a\xe7\x9e\xd4\xa5\x75\x78\xd6\x6f\xc6\x93\x9c\x57\x62\x8a\x90\xca\xc9\x7a\xdf\xa8\x70\x2a\x4a\x1c\x89\x65\xba\x1a\x90\x26\x25\x67\x28\x66\x64\x00\x30\x03\x53\x3c\xc9\x31\x4c\xaf\x7d\x3b\x98\x2e\x0a\x43\x2f\xf5\xaa\x4e\xd5\x74\x19\x83\xd9\xb5\x43\x23\xac\x7e\x29\x9b\x2b\x49\x56\xc1\xa2\xc1\x91\x55\x7b\x27\xd8\x6b\xe7\x14\xb5\xb6\x8f\xcb\x1d\x41\xf7\x8c\xa5\xdd\xb6\xb5\x3b\x3d\xfc\x8e\x7d\x6b\x3c\x3d\xb0\x59\xaf\x9f\x2d\xd7\x65\xef\x04\xb6\xd1\x6e\x67\x37\xc7\x27\xaa\x11\xf3\xdf\x37\x74\xa3\xfc\x96\x18\x2e\x28\x2a\xcc\x3d\x23\x3e\xea\xbf\x8c\x72\xd3\xf2\x46\xae\x18\x45\x05\x28\x8f\xef\x39\xb3\x67\x66\xb1\x0d\xd1\xbf\xbf\xbf\xa7\x0f\x97\xb3\xc9\x01\x72\x6d\x1e\x0d\x0a\x83\x7d\x11\xf0\x12\x3a\x34\xab\xad\x1a\x79\xaa\xbe\x80\xb1\x25\xb1\x28\xee\x16\x0b\x51\x18\x48\xf7\xf0\x4c\x49\xc8\xd5\xc2\xf2\x04\x1d\xa7\xd9\x59\x9c\x29\xb1\xda\xc8\xc6\x80\x77\xef\xac\x3e\xca\x58\xbb\xc1\x63\x7a\xad\xce\x21\xc7\x74\xfe\xa4\x2d\x2b\xcf\x4a\x0b\x98\x92\x30\x7e\x36\xfa\x25\x0a\xce\xe7\x95\xad\x2b\xfe\xcf\xbf\x60\x31\x9b\x81\x66\x3e\x2a\x26\x57\x19\x46\xf7\x5a\x8d\x96\x9a\xf1\x6b\x3b\x57\xc3\xec\x3e\x66\x15\x8a\xaf\x42\xcc\xf5\xe5\x8b\x93\x7a\xae\xf6\x13\x31\x86\x06\x60\x33\x17\xe5\xaa\x31\x8b\xe7\x0f\x8d\xa3\xc0\xc1\x6b\xe6\xc2\x9e\x3e\xc9\xfe\xf4\xe4\x6e\x8c\xa2\x41\xd9\x41\xd5\x80\x49\xa0\x63\xd9\x0a\xfc\x95\x3c\xa3\x2e\x8a\x50\xa6\x47\x36\x32\x58\x8a\xc4\x1e\xae\x97\xf2\x0c\xe9\xb7\x41\xed\x41\xc9\xa4\xaa\x65\x51\xfd\x82\x3c\xe0\xc8\x11\xa5\xbb\x5a\x17\x1c\x1e\xa4\x23\x8a\x02\x46\x81\x1e\x46\x9c\xf4\x98\xb7\x96\x21\xc3\x23\xeb\xa7\x98\x53\x44\xfe\x11\xe6\x74\x99\xed\xf4\x96\x74\x91\xaa\x74\x9f\x8f\x3f\xe3\x99\x61\xd7\x68\x92\xc9\x3a\xac\x3b\x19\xfa\x4b\x4f\xc1\x74\xd7\xd4\xd4\xd8\xbd\x6e\xe4\x75\x47\x50\x08"}, +{{0xcd,0xad,0xc5,0xb8,0x9c,0xb2,0xb6,0x30,0x8a,0x00,0x6f,0x2f,0x4e,0x95,0x5a,0x91,0xaa,0xf3,0xba,0x70,0x16,0x5f,0x2d,0x44,0x4e,0xf1,0xff,0xeb,0xbd,0xaa,0xa2,0x21,},{0x05,0x41,0x41,0x5f,0xf5,0x46,0x7f,0x28,0xce,0xac,0x83,0x9b,0x13,0xa1,0x76,0x6e,0x72,0xc9,0x9e,0x65,0x45,0x20,0x7d,0x9d,0x5d,0x96,0x97,0x41,0x1e,0xb6,0xbc,0xa7,},{0xff,0xed,0xe7,0x01,0xeb,0x18,0x29,0xce,0x23,0x61,0xcd,0xa2,0xc8,0xbb,0x63,0x33,0x85,0x39,0xd8,0xad,0x2f,0x66,0x77,0x58,0x55,0x31,0xe7,0xbf,0x1d,0x39,0x22,0x38,0x26,0x79,0xa1,0xae,0x84,0xff,0xeb,0x75,0x3f,0xc9,0x75,0x4e,0x50,0xc0,0x18,0x52,0xf9,0x55,0xe3,0xfd,0x60,0x9f,0xf6,0x4b,0xf0,0x5b,0xbe,0x70,0x75,0xcd,0xbe,0x00,},"\x91\x17\x27\x03\x6d\xb3\x09\xd6\xe2\xe3\x36\x9e\x4f\x17\xd9\x8d\x99\xec\x07\x0c\x33\x28\x3b\xb1\x24\x4e\xfd\x62\xe7\x6b\xd7\x0a\x69\xb9\x72\x3b\xd2\xb5\x20\x47\x2b\x98\xaa\x06\x59\x24\x36\x6d\xe7\x80\x90\x0b\xcd\x8b\x77\xb5\x0f\x87\xc3\xc3\x61\x87\x02\x4b\xbc\x59\xcc\xf4\x48\x2c\x7b\x4a\xad\xb5\x6e\x2e\x5e\xcc\x00\x03\xd9\x89\xd6\xaf\xc6\x3e\xc1\x02\x42\xe5\x74\x82\xfe\x39\x21\x52\x61\xd5\xfc\x95\xa0\x18\x5f\x95\xe9\x54\x0c\x55\xf7\x4d\x69\x60\x48\xbc\xa7\xab\x11\x26\x81\xa5\x55\x8e\xa9\x3c\x3b\x1f\x1c\xd3\x64\x65\x9e\x94\x33\xce\xee\xbe\x05\x4e\xe7\x13\xc4\x77\x60\xd7\xad\x13\x2a\x7f\x3f\x8f\xe3\xd5\x04\x1b\x81\x1a\x26\xb6\x5e\xfb\x1f\x34\x0e\x18\x1a\x4e\xc7\x20\xea\x13\x6b\x3a\xf3\xd9\xe5\x46\x1d\xd2\x43\x70\x33\x6f\x10\xe6\x35\x4c\x8c\x17\xac\xf9\x99\x85\x44\xce\xc0\x87\x3e\xfa\x68\x7c\xb1\x32\xae\xcf\x70\xae\xbb\xc5\x67\xba\x03\xc5\x36\x49\x9e\xf9\x6c\xc8\x41\x2e\x7a\xaa\xd5\xbf\x96\x42\x2b\xe4\x7c\xb9\x41\x36\x45\xdf\x2c\x17\x03\x19\x23\x47\xdc\xbb\x12\x31\x27\x45\x59\x71\xae\x15\x7e\x9f\xa2\xdb\xff\x88\x74\x5a\x96\xc6\x58\xb8\x65\xe4\x1f\x55\xae\xbf\x98\x39\x50\x05\xdd\xcb\xd5\x98\x3e\x6a\xe0\x2c\x4f\xbb\x5e\x17\x91\x67\x96\x32\x5f\x76\xed\xf5\xb6\x4a\xfa\x4e\xc5\xa7\x41\x8a\xfe\xd2\x3a\x97\xef\xad\xe6\x8b\x6a\x5b\x31\x45\xf0\x8a\x5d\x3d\xb9\xc2\x98\xa5\x12\xfa\xbd\xac\x68\x56\x2b\x3f\x55\x37\x7f\xf4\x4b\x00\xc1\xc2\xf3\xef\xd1\x81\x32\xda\x71\xf9\x71\xa9\x53\xa9\x31\x8c\x57\x52\x33\x61\xa1\x60\xf9\xb7\xe3\xb5\x1c\x52\x4e\x95\xdd\x5e\xf4\x56\x8e\xf1\x8a\x80\x07\x75\xe9\xd2\x6e\x07\x13\x19\x42\xd2\xbe\x4e\xf2\x2c\x0c\xbc\x13\xdf\x01\xc6\x8b\x1b\xcd\x3b\xce\x9b\xd5\x1c\x4c\xed\x65\x2a\xdc\x40\x07\xbe\x43\xb3\x7c\x67\xa5\xc5\x5e\xd4\x02\x9e\x8a\xd1\x5d\xef\x83\x05\xc9\x68\x62\x1a\xed\x4c\xd4\xbf\xe0\x79\xa6\xf4\x88\x84\xd8\x56\x80\x39\x2c\xa9\x2b\xa6\xe1\x2f\xea\x6f\x4a\x05\x6f\x79\xd6\x7b\x19\xb0\x5f\x90\xd6\x84\xbe\x7d\x45\x72\x5f\x79\x67\xc6\xa4\x67\xaf\x43\xb8\x6a\x6b\x1b\x9d\x9e\xed\x3a\x42\x48\x97\x1c\x76\xa7\xac\x29\xc2\x92\xdf\xba\x4d\x75\xc5\xf7\xba\x70\x9a\x39\x05\x8e\x96\xad\xf6\xdb\xd7\x60\xd3\xce\xf4\x02\x4b\xf3\xed\xc4\x41\xef\xbf\x11\x47\xa2\xc1\x08\xbd\x6f\x9e\xb4\x39\xc1\xc5\xc4\xd3\xa6\xea\x4e\xc3\xd9\x2c\xef\x38\x13\x61\x88\xbe\xc9\xe0\xb6\xc0\x51\x8d\x8b\x79\xba\x59\xc5\xdc\xba\x39\x3a\xed\xfd\xff\xb0\xb7\x0d\x77\x9c\x2b\x97\x65\xce\x44\x52\xe7\xe3\xb0\x8c\x44\x02\xb1\xa6\x08\x32\x08\x40\xfb\xe9\x6d\x1e\xb8\x65\x6e\xb1\xc2\x0d\x95\x51\xdd\xf5\x33\xb9\xf1\x5e\x4e\xb5\x78\x37\x56\xc5\x3d\xdd\x3b\x14\xd8\x07\xf8\x38\xac\x96\x80\xf8\x9f\x1a\xdf\xb7\x8d\x68\xcc\xb0\x67\x31\xa9\x0b\xea\xc5\xf0\xd7\x09\xd5\xb8\x8c\x75\x43\x7a\x66\x3c\xb9\x62\xd3\x7f\x96\xb8\xe8\x92\x84\x77\xb5\x61\x12\x28\x01\x5d\x33\x7f\x04\x9e\x8b\x62\xe4\xdf\xf8\xd0\xbb\x6c\xda\x24\xa5\xdf\x90\x83\xe3\x48\xbe\xf1\x25\x85\xf5\xf4\xc4\xd3\xbb\x3c\x7e\x78\xd5\x50\x19\x4a\x45\x25\x1a\x08\x79\xa1\x62\x4b\xf9\xdd\x35\xeb\x65\x5c\x39\x39\xfe\xa8\x90\x9f\x6d\xf3\x95\xbe\xbd\x02\xb6\x8a\x17\xa8\x97\xc9\xaa\xdd\xd6\xe2\xe2\x04\x61\xe3\x03\xf5\x7c\xde\xb0\x0a\xe0\xf2\x3e\x60\xa9\x4c\x19\xc7\x71\xd8\xaa\x60\x53\x3b\x93\xce\xdc\x1b\x76\xd2\x29\x0a\x01\xbf\x43\xb2\x72\x5f\x12\x5b\xef\xa5\x75\x15\x4e\x98\x6c\x9c\x62\x05\xa1\x59\x6c\xba\xa2\xd1\x34\x70\xc2\x34\x22\xf2\xdf\x7b\xec\xe4\xe6\xeb\xd7\x52\xe9\x38\x9a\xe6\x08\x57\xb5\x29\x69\xd2\xdd\xef\xa9\xc0\x34\xf1\xbf\x35\xae\x33\x16\x30\x4e\x94\x9c\x89\x90\x82\x0e\x26\xe6\xcf\xfa\xe4\xb3\x88\xd1\x50\x5f\x92\x37\x06\x29\x7f\x8d\xb5\x56\x53\x79\x19\xeb\xbe\x30\x86\x02\x3f\x12\xf4\xde\xd3\xb1\x1a\xcf\x2a\x6d\x97\x3d\xdd\x8e\xb2\x7b\x07\xc5\x80\xbf\x44\x8c\xaa\x5a\x2e\xa1\x16\xc5\xea\xf3\x6f\x7a\x6b\x17\xa8\x5b\x39\x55\xdc\x8a\x44\xa6\x20\xd8"}, +{{0x2d,0xdd,0x79,0xe7,0x60,0x64,0xc2,0xe6,0xb3,0x22,0xaf,0xb0,0xc5,0xc6,0x85,0xcd,0xbe,0xc6,0x28,0x21,0xcd,0xfc,0x0c,0xb1,0x4d,0xb7,0xd0,0x1b,0xa3,0xbf,0x21,0xa5,},{0xf5,0x5b,0x4a,0xb6,0x4a,0x25,0x82,0x21,0x2b,0x96,0xcc,0xac,0x06,0x40,0xe2,0x71,0x94,0x4a,0x34,0xa2,0x86,0xd0,0x35,0x83,0x30,0x45,0x81,0x0e,0x34,0x18,0x24,0xbb,},{0xa4,0xc3,0x96,0xe1,0x9d,0xd4,0x2e,0x03,0x91,0x84,0xcd,0x25,0x11,0x88,0xff,0xa2,0x45,0xf0,0x36,0x7c,0x69,0xc0,0x2d,0x12,0x47,0x4e,0x5c,0xa9,0xe5,0xc7,0x68,0xa7,0xee,0x3a,0x3d,0x47,0xeb,0x22,0xd1,0xac,0x9e,0x04,0xb7,0x04,0xa7,0x4f,0x41,0x69,0x47,0xf3,0xf4,0x9a,0x32,0x42,0x59,0x4e,0x7b,0x63,0x90,0xe8,0x2b,0x60,0xd5,0x05,},"\xa5\x66\x74\xa1\xe1\xf0\x97\x95\x25\x1a\xbe\x54\xab\x43\xc2\x98\x20\x8f\xef\xc9\xbb\x91\x76\xfd\xb2\x3e\x1e\x9f\x60\xf0\x32\x64\x79\x15\x56\x7e\xbd\xcc\x2b\x86\x9e\xdb\x70\x55\xf4\xab\xa6\x7e\xcf\xe7\xfa\x19\xed\xa4\x5c\x06\x04\x7c\x7a\x51\x84\x8b\xe9\x97\x32\x51\xf8\x5f\xf7\x6f\x1c\x59\xe3\x65\x43\x82\x85\x8c\x9b\xe1\x23\xdb\x8a\x94\x90\xc6\xc9\xb3\x09\xb8\x2d\x1e\x2c\xa6\xf4\xa0\x7d\x00\x12\x02\x83\xc6\xc2\x95\x64\x49\x95\xa9\x66\x28\x61\x2b\x8d\x67\x91\x57\x35\x18\xe2\x55\x6a\x68\x8a\x09\xf1\x49\xbc\x84\x6a\x68\xbd\x0e\xf7\x92\x79\x03\x57\x10\x03\x1e\xf0\xa8\xfe\xd1\xdd\x0b\xf0\x26\x12\x5d\xc6\x64\x8f\x86\xf6\x43\x09\x94\x2e\x18\xf2\x3b\x12\xd1\xdc\x68\xc6\xf2\x77\x0c\xa8\xb5\x48\x5b\x36\x9b\x0c\x92\x00\x7a\x94\x61\xc1\x39\xfc\xbb\x41\x17\x5f\x31\x6d\x44\x67\x06\x0a\xb4\x3d\x12\x22\xf5\x80\x24\x04\xbf\x63\xc2\xdf\x7e\x00\x4b\xdc\x40\x0c\xa8\x0f\xe0\xd2\xcb\x68\xa2\x10\xfb\xc3\xfc\x0b\x90\x32\x09\xd5\x47\x6e\x7a\x56\xba\xef\xb8\xfa\xd7\xf3\x28\xb7\x2f\x32\x71\x13\xe1\x39\x41\x4b\xa6\xf3\x4e\x99\xc2\xec\xcd\xe0\x44\xe7\xa3\xac\x70\xc5\x80\xcd\x26\xc7\x45\x01\x92\xca\x4c\x82\x3c\x7a\xc5\xea\xe8\x76\xc0\xd1\xc8\xc7\x68\xc1\xcb\x0b\x7e\xa4\x1f\xc9\xb7\xd2\x94\x37\xbb\xad\xab\x18\xe0\xf5\xed\x1d\xef\xe0\xcf\x6c\x0e\xba\xa6\xb6\xd7\x77\xf4\xda\xd9\xab\xdd\xbf\xc0\xfd\x6a\xb5\xee\xea\x80\x3c\xfa\x01\xc0\xbd\x46\xf6\x5f\xef\xa4\x69\x01\xab\xbe\x0d\x89\x10\x4e\x3b\xc4\xae\xe1\xf0\x59\x9c\x69\xb6\x7b\xa5\x45\xab\x9b\x54\xf5\xde\xe3\x40\xac\x69\xd8\x82\x99\xe8\x68\x22\xac\xdd\xdd\xce\x60\x11\x22\x01\x2f\x99\x29\x97\x74\xaa\xf1\x7c\x96\x4e\xde\xcb\x95\xe1\x27\x7d\x46\x2d\xe6\x4e\x91\x15\xa6\x1a\xd9\x8a\xa3\xd2\x2e\x3b\xa6\xf8\xf1\xcd\x69\xb6\xb5\x2b\x83\x38\x28\x23\xf3\x0e\x96\x6b\xda\xd1\xff\x5f\xc1\x98\xae\x32\xe9\xb6\x80\x55\xd4\x39\x2b\xc7\xc3\xdf\x10\x15\xf1\x28\xae\xe1\xe4\xfa\x3d\x49\x99\xe3\x29\xf2\x2f\x0f\xf6\xaa\x77\x8b\xae\x02\x94\xa1\xdf\x74\x36\xcb\x16\xa2\xbf\xcd\x74\xb4\x63\xab\xe7\xcb\x4b\xac\x53\x62\xc8\x9c\x9d\x1a\x37\x8a\x2c\xb8\x85\xcc\x3b\x26\xab\x4b\xe8\x81\xef\x1a\xfc\x14\x43\x0e\x10\xd2\x65\x39\xca\x35\x8c\x36\x76\x28\x6a\xd8\x1c\xe1\xc9\xe7\x85\x92\xaf\x66\xf1\x82\xbb\x1f\x7f\x86\x2f\xe7\x55\xbf\xfb\x5b\xe5\xc5\xf2\xb7\x31\xc1\x32\xe2\x38\x8a\x76\xa1\xa7\xb1\xcd\xdf\x05\xae\xd2\xac\x9e\xc4\x08\x47\x52\x71\x94\x2c\xca\xdd\x32\xe4\x9d\x87\x91\xed\xf8\xb8\xde\x11\x75\x51\xce\x26\x4a\x60\xb8\x41\x05\xea\xe8\x7e\x66\xf6\xa4\x01\xd1\x32\x2b\xb2\x1a\x98\xe8\xac\xd2\x77\x49\x32\x54\xe5\x04\x00\x4f\x72\xc7\x6e\x79\x03\xd2\xfa\x38\xfa\xb7\x17\xe9\x4c\xe6\x27\x94\x7c\x4e\xa3\x26\xbd\x25\x75\xc3\x73\x10\xf3\xb4\xd8\x43\xb9\x0f\xa7\x7d\x32\xd9\x95\x21\x94\x15\x0b\x62\xf8\x50\x18\x7a\x4f\xdf\x38\x46\x6d\xfa\x06\x56\xc0\xa2\xe0\xb3\xf0\x74\x92\xac\x8e\x37\xe5\xd0\xdf\x95\xcc\x89\xdf\x30\x85\xa2\x69\x29\x1d\xc2\x51\x22\x10\xd3\xfe\x44\x24\x8d\x7a\xb9\x96\xbe\x09\x9a\xf6\x4c\x22\x75\x66\x66\xf8\xde\xa5\x6c\x00\xb9\x06\x77\xd1\x18\x25\x00\xdd\x27\x4f\xd0\x76\x92\x53\x82\x6d\x67\x7a\xb1\x6a\x55\x7b\x08\xb3\xc5\x22\x65\x49\x8d\x85\xc4\xcb\x2b\x60\x0e\xe0\x48\x1b\x7c\x1c\x47\x6a\x9d\xaa\x8b\x88\xc7\x1f\xc2\x1b\x6f\x89\xbf\xdf\xec\xe5\x8d\xa9\xe8\xd5\x65\x65\x2e\x43\x95\xbd\xf4\xc8\x11\xb4\xf4\xf2\x2d\x2b\x96\x13\x26\x1f\x88\xc6\x04\xc2\x97\x4d\x3e\x97\x7d\x14\x0d\x04\x6e\x1b\x66\x25\xb7\x07\x16\x40\xd3\x52\xcb\x7e\x7e\x65\xd4\x6c\x61\x34\x47\xbe\x8d\xc5\xa2\x00\xaa\x9a\xca\xb4\x6a\xfc\xcf\xeb\xb6\xb1\xc3\x19\x73\x24\x6c\x34\xfa\xaf\x8d\x26\xea\x5e\x83\xbe\x15\x71\x8f\x8f\xdb\x0c\xfc\x44\x4e\x2e\xb6\x0f\x36\x59\xb0\x20\x16\x1c\x22\x8e\x6b\x92\x40\xb7\xac\x39\x4c\xab\x81\x2d\xe1\x05\x15\x76\x6f\x22\x47\x3e\xcc\xa5\x35\x59\x4c\xe5\x28\xa5\x7c\xf5\xda\xb2\xeb\x32\xab\x84"}, +{{0x3a,0xbb,0xdb,0x0b,0xa1,0x1a,0xa1,0x06,0x3b,0xd2,0x6b,0x02,0xc1,0x16,0x03,0x78,0x62,0x28,0x5b,0xab,0xd2,0x15,0xd2,0x40,0xbc,0x9c,0x09,0x26,0xf4,0xec,0xea,0x81,},{0xb8,0xfc,0x59,0x43,0x8f,0x8c,0xe9,0xe3,0x78,0x5a,0x47,0x3b,0x22,0xc8,0x89,0x2c,0x51,0xea,0xc2,0x56,0x8c,0x68,0x1d,0xcc,0x77,0xb6,0xf0,0xe0,0x79,0x9c,0x4e,0x33,},{0x98,0x1f,0x20,0x05,0x5a,0x45,0x75,0x25,0xae,0xe5,0x61,0x62,0x64,0xe6,0xaf,0x42,0xe8,0xb3,0x87,0xcb,0x08,0xf8,0xb4,0xa7,0x3f,0x9b,0xe0,0xb3,0x66,0xf1,0x03,0x5b,0xb3,0x0a,0x1c,0x87,0x48,0x94,0xcb,0xec,0xe0,0xa8,0x46,0xd8,0x49,0xb7,0xec,0xc5,0x56,0x58,0x5d,0x0d,0x3d,0x39,0x56,0x45,0x80,0x7f,0xf2,0xa3,0xca,0x5a,0x59,0x0c,},"\xdc\xcd\x55\xf9\x22\xcd\x27\x4f\x69\x75\x00\x0a\xdc\x8d\x98\x63\x0c\x6d\x75\x2c\x12\x02\xa9\xdd\x12\x10\x48\xb9\x39\x45\xaf\x2b\x11\x10\x96\x77\x88\xf9\x9e\xc0\x28\xe3\xd3\xb4\xcf\x82\xfb\x07\x17\x3e\xa4\x40\x1e\x3b\xb4\xb0\x7b\x7b\x0b\x24\xb0\x59\xa7\x66\x33\x95\x32\xd9\xdf\x3e\x31\xb7\x2c\x95\x8c\x11\x9d\x8d\xfa\x15\xa5\x07\xaf\x6c\x5f\x7e\x78\xfe\x27\x0f\xa8\x1b\x9d\xf0\xf2\xe4\xaf\x24\xbd\x99\xfb\xeb\x14\xe0\x03\x30\x84\xd7\xfb\xf8\x4d\xde\xdf\xd5\xce\x56\x75\x1d\x15\x90\x84\x75\xdf\x8a\xf0\x13\xd0\x91\x17\x3c\x13\x86\xb9\x13\x94\x26\xcc\x60\x81\xea\x16\x5b\x8c\xe4\x81\x94\xb8\xe1\x8a\x9b\x91\xa4\x63\x13\x44\xfe\x29\xc8\xe7\x28\x18\xb7\x1f\xa1\x5c\x92\x92\xd1\x3f\xdf\x5f\x9d\x18\xe2\x9b\xd0\x29\x1b\x81\x38\xde\x73\x8f\xd3\xa3\x6c\x35\x23\x90\x22\x36\x8b\x45\x6f\x1f\xac\xba\x90\xa0\xd8\x0d\x6e\x31\x1c\x5f\x6c\x6f\x04\x67\x7e\x92\x37\x3a\x5f\xc4\x73\x88\x94\xdb\xed\x20\x6c\x30\xda\x34\x1b\x3b\x19\x6c\x94\x78\x58\xa6\xd2\xad\xc6\x8a\xac\x3f\x20\xcf\xdb\xe0\x49\x79\x61\xda\xe3\x34\x70\x26\x6d\x17\xec\x71\x9a\x59\xf0\x58\x6f\x82\xf9\x9f\x1c\x90\xed\x70\x05\xa2\x07\x21\x9a\x55\xed\xc7\x60\xf4\xeb\x8f\x24\x02\x64\x7f\x6f\x77\x97\x1f\xf7\xb6\x34\x35\x7b\x6b\x29\xbb\xd7\xea\x05\xe2\xe2\x58\x54\xe9\x9c\x62\x0f\x4b\x8b\x64\x73\x90\x22\xff\x0b\x33\x8a\xfe\xf3\x5f\xb6\xf4\x1a\x53\x62\x9a\x51\x8e\xb9\x3d\x66\x02\x0f\xb3\x53\xae\xf8\xdd\x07\x1e\x09\xc9\x16\xd4\x70\x4a\xcd\xf7\x76\xb3\x8c\xa9\xc5\x9f\x21\x1f\xf8\x8c\x43\x0a\x57\xe8\xf1\x71\x39\x23\xb3\xf3\x0c\xa8\x69\x70\xa1\x4a\x52\xdb\x4b\xcb\xe6\x0d\xf4\xbc\x3c\xfd\xf2\x54\xbf\x10\xf8\xaf\xae\x87\xbd\x61\xb3\x58\xf4\x3c\xc2\x96\xc0\x41\x29\x64\xc4\xe0\x0f\x71\x21\x33\x97\x46\x85\x17\xcb\x01\x37\x9c\xb7\x29\xc7\xb9\xe3\x5b\xd5\x0b\xdd\x98\xc3\xd3\xb7\x62\x97\xa1\x38\xb5\x7c\xeb\x6c\x77\x74\x2d\xf0\x88\x1d\x07\x66\x8c\x08\xa6\x30\xa4\x4e\x6e\xd7\xeb\x20\x6d\x6a\x56\x44\x07\x10\x43\x8a\x51\x11\x42\x4b\x61\xaa\xee\xce\x40\xe9\x00\xf5\xe3\xc4\x57\xe9\xd6\xe3\x1a\x79\xec\x5b\x4b\x42\xb6\x8e\x66\xe1\x99\x30\x92\x87\xca\xd6\x53\x36\xfc\x7f\xe4\x3f\x43\xcd\x8c\x77\x3d\x3c\x65\x80\xd7\x21\x7e\x2c\xab\xec\xd3\xea\xbc\x48\x5c\x4a\xcf\x47\x71\x8c\x39\xb0\x2c\x78\x58\xff\x34\x7c\xec\x75\x35\xed\xdc\xd4\xfc\x81\x5d\xf8\x14\x56\x9a\x88\xae\x70\xf2\x73\x3a\x65\x39\xf2\x08\xc7\x9c\xf4\xe7\xc4\xf9\xea\x24\x1a\x92\xe9\x51\x51\x71\x36\x14\x18\xa4\xc2\xe5\x3c\x07\x6a\xaa\xbc\x47\xe4\xc9\x71\xbd\x04\xb1\x00\xc2\x62\x82\x30\x88\x57\xe0\x6e\x7e\x5f\xbc\x43\x42\x56\x4f\xb3\xb1\xea\x4a\x17\xa9\x25\xe9\x1e\xe6\x91\x22\x32\x1d\x39\x2b\x24\x69\x65\xb8\x6b\x54\xfd\x5c\x83\xfa\x5c\x47\x41\x63\xf9\x8a\x9f\x44\x7d\x88\xcb\x59\xfe\x2c\xdf\x9f\x54\x12\xfc\xbe\xb3\xef\xfa\xc8\x97\x67\x91\xc6\xa4\x7b\x66\x9a\x2f\xc5\x5a\xbe\x8e\x09\xe7\x41\x57\xef\xcd\x1c\xa7\x8f\xc1\x0f\xa6\x87\x01\x0c\x68\x26\xc6\xe8\x96\xef\x5c\xd7\x1d\x0f\xe4\xd1\xbd\x07\xc1\x0d\xac\x3b\x03\x48\x5e\xdd\x25\x69\xa7\xee\xcf\xbc\x4e\x5d\x2e\xe2\x37\x98\x59\xe2\x65\x26\x7b\xed\xaa\xd6\x9d\x93\xb7\xc1\xbd\x18\xf2\x7e\xa4\x24\x83\xc7\xe4\x10\x0e\xe0\x5b\x28\x30\x39\xbf\xb9\x89\x1d\x37\xc4\x67\xed\x83\xb8\x8c\x79\x4e\xab\x6b\xab\x9d\xc6\x77\x89\x26\x50\xe2\xd8\x96\xfb\xfe\xc1\xb1\xcd\xb7\x21\xbe\x30\xb0\xb8\xe5\x35\x87\x09\xe1\x65\xcb\xe3\xa1\x82\xc9\x3b\xc0\xa0\xce\xa2\xf8\xcf\x3a\x62\x57\xad\xf7\x64\x53\x40\x41\x20\x22\x41\xa5\x27\x9b\x66\x8e\x40\x12\x5f\xc0\x94\x58\x5a\x3c\x58\x8a\xba\x82\xb6\x7c\xd9\x1d\x48\x3e\x54\x30\x04\x28\x42\x68\x63\xa4\x23\x64\x04\x9d\x7c\x45\xa1\x69\x38\x5a\xa8\x9b\xf3\x77\xf0\xd3\x2b\x07\x80\x9b\x58\x71\x39\x5e\xc0\x53\xa2\x57\xd9\x3e\x48\xbb\xf4\x07\xeb\x60\x91\x40\x1e\x25\x65\x46\xe3\x1f\x9f\xcd\x24\xd2\xc5\xb3\x33\xcf\x65\x78\x50\x02\xf0\x8d\x54\x8d\xb2\x6a\xd1\xf3"}, +{{0x8a,0x44,0xd6,0xaf,0xc6,0xc8,0xee,0xe1,0xbc,0x7d,0x5f,0x69,0xe4,0x95,0xb0,0xb1,0x8c,0xa7,0xae,0xe0,0x07,0xde,0xa7,0xcf,0x0d,0x17,0x14,0xd7,0x85,0xa9,0xf4,0xed,},{0xd4,0xf3,0x66,0xb3,0x37,0x7f,0xa3,0x9b,0x36,0xf9,0xae,0x14,0xda,0x40,0x4e,0x22,0x40,0x49,0x0d,0xbd,0x8d,0x79,0x6b,0x1a,0xb8,0x72,0xdf,0xcb,0x83,0xa5,0x95,0x40,},{0xe0,0x72,0x7e,0xb7,0x2e,0x84,0xd2,0xb8,0x2c,0xdb,0xd0,0xa6,0xbd,0x2f,0x49,0x49,0x63,0x16,0xaa,0xe8,0x35,0x1e,0x49,0x02,0xac,0xd5,0xe3,0xcc,0x57,0x34,0x6e,0x7e,0xba,0xfd,0xd9,0x2a,0x90,0xde,0xd7,0x6f,0xd0,0xc6,0x69,0x0d,0x68,0xbb,0x2f,0xed,0xd6,0x13,0xe4,0x4f,0xa2,0x22,0xbe,0x01,0x26,0xda,0x52,0x0a,0xcc,0x2c,0x41,0x05,},"\xde\x80\x32\x69\x66\x53\x6c\xe9\x49\x96\xaf\x2d\xe7\xa0\x76\x05\xcc\x4f\xcb\x9e\x75\xee\x0a\x67\xa1\xe2\x09\x32\x11\x1d\xe9\xb3\x56\xd5\xbe\xea\xe8\x6c\xc5\xf5\x64\xc1\x0d\x66\xe3\xde\x95\xa5\xb9\x9e\x84\x49\x28\xea\x8e\x77\x58\x6c\xf3\xc1\x0a\xd3\x63\x3d\xde\xeb\x1d\x9d\xcf\x3f\x94\xb7\x0b\xf1\xef\x63\xd2\x38\xdf\x20\x4d\x70\x5c\x0b\x17\x4f\x83\x28\x25\x45\xf5\xe4\x07\x5f\x8d\x69\xa4\x81\x79\xc2\x9e\xab\xf5\xc1\x74\x2e\xf3\x9e\x1a\xd9\x63\xbe\xbb\xb6\x6f\xce\x94\x91\xa9\x84\x65\x12\x15\xc2\xe7\x50\xe6\xee\x83\x65\x76\x64\x40\xa8\x44\x19\xe5\x2d\xcf\x67\x1f\x1c\x52\xea\xa2\xb9\x90\x2b\xcc\xa4\xb3\x7c\xff\xdb\xac\x8e\x7e\x7e\x6b\x0a\x5c\x87\x48\xef\xbf\x45\x2d\xf6\x16\x3f\x4c\xa0\x7b\x61\xf9\xa0\x5e\xc2\x0a\x2b\xd6\x33\x38\x9e\x67\x0b\xb5\x45\x4a\xcd\x6f\x3a\x06\x33\x5b\x5d\xa9\xec\x32\x62\x64\xe9\x62\xc7\xd9\xd0\x6c\xe7\xe9\xff\x04\xa0\xa5\xbb\xdf\xaa\x4c\x41\x08\x66\xa5\x72\x01\x16\x51\x43\x9f\x2d\xbc\xe5\xde\xe6\x67\x92\x4a\xc4\x93\x4d\x20\x54\x96\xbd\x1d\x4d\xf0\x8b\xd0\xcb\x3f\xd2\xde\x73\xa2\xef\x34\x2f\xf0\x09\x1e\x10\xe1\x5b\x3b\x76\x0a\x57\x5d\xf9\x3c\xf1\xc9\x7c\x01\xc5\xab\x11\xc0\x94\xbf\x34\x87\x82\x06\x71\x8f\x6b\x28\x5a\xa5\xcc\x51\x27\xbd\x7f\x98\x8b\x84\xa9\x04\x95\x30\x6f\xd9\xe9\x9d\x89\x55\xe6\x68\xd1\xa3\xff\x10\xf6\x5b\x7c\x47\x9f\xac\x24\x11\x9a\x3c\x10\x12\x2d\x4d\x18\xa8\x05\xb2\x47\xdf\x16\x8c\x0a\x51\x00\x16\x9b\x55\x72\xd1\x70\x12\xd7\x51\xa4\x2e\x83\x37\x61\x15\xe1\x15\x61\xc1\x60\xc1\x5e\xfa\xd7\x6d\x21\xf7\xab\xb4\x30\x36\x64\x75\x23\x86\x31\xf8\x4c\x88\xf8\x38\xb0\xac\x40\x4c\x91\x3d\x2f\xa1\x24\x50\x23\x84\x85\xc3\x02\xfc\x20\x1f\x44\x15\x1c\x19\xbc\xbd\xc1\x19\x0c\x12\xd1\x54\x08\x31\xfb\x19\x58\x1c\xb9\x31\x72\xb0\xd2\xff\x5c\x65\xf3\x1c\xaf\xf2\x0f\x81\x38\x81\xf8\x4e\x5e\xf9\xd5\xc1\x65\xe0\x96\xd2\x54\xca\xdf\x89\x52\x49\xaa\xb8\xd4\x49\x6c\x94\x0a\x40\xf9\x07\xbd\x40\x93\x5a\x94\xf5\xe5\x5b\x6d\xd0\x51\x15\x41\x00\xfe\x33\x17\x70\xef\xf2\xba\xd6\x54\x56\x19\xb8\xa3\x3e\xf6\x46\x2a\x50\xc0\xb2\xc4\xed\x2f\xba\x4e\x4e\x38\x3e\xbf\x29\x32\xe6\x19\x27\x66\xa4\xaa\xd1\xd6\xe2\xb6\x92\xd9\xf2\xbd\xc2\x33\x93\xe8\xaa\xcf\xba\x32\x3b\x53\x4f\x84\xed\xf2\xdc\xed\x7c\x94\xd5\x16\x87\xda\xa2\x71\x98\xa9\x14\x4b\x31\x2b\x71\x6f\xe1\x70\x14\xa7\xbe\xd0\xc1\x4a\x24\x38\x73\x3d\x55\x5c\x65\x64\xc8\xc1\xa3\xd9\x97\xeb\xae\x7b\x3d\xe8\x87\x7a\xf5\x3c\x1d\x1a\x50\x29\x15\x8a\x80\xaa\x0c\x87\x48\x9f\xef\x27\x0c\xdf\xfe\x10\xd3\x4b\x15\xc1\xa9\x69\x3a\xe0\x39\x02\x43\xe3\x14\xcf\xac\x06\xef\x6e\xef\xeb\xcc\xf4\x3d\x42\xea\xc2\x4c\xe9\x87\x94\x29\xd2\xfc\x72\x53\xb3\xed\x17\x58\x25\xbc\x4d\xa0\x76\x2b\x49\x33\xa9\x8a\xfd\xb9\x4b\x06\xf4\xfc\xd2\xad\x36\x11\xaa\x99\x9d\x7c\x1c\x8d\x85\x2d\x01\xdd\x9e\x52\x64\x84\x55\xa0\x4e\xb2\x33\x0a\x76\xfd\x94\x2c\x53\x1e\x51\x4b\x5e\xc0\x72\x8a\x89\xd3\x4c\xa5\x90\xea\x99\xc8\x8f\xaa\x20\xdf\xb7\xbb\xf6\x56\x54\xaa\x6c\x21\x2b\xeb\x8a\xd6\xbf\x7c\x77\x73\x91\xcd\x49\xc3\x9c\xf8\xab\x51\xb9\x5b\x41\x9e\x3d\xfc\x8d\x94\xa9\x3a\x1e\xf0\x22\x3c\x6d\xe9\x0b\xf9\x62\x18\xd8\x04\x5b\xd4\x95\x2a\x0d\x83\x72\xa5\x57\x8c\x6a\xaf\xa7\x4b\xa6\x62\xe3\x18\x8e\x6a\x6e\x56\x7e\x4d\x2f\xe8\x22\x7d\x07\x43\x98\x2a\x41\xeb\xfa\x0d\x31\x0f\xe7\x9f\xed\x27\x04\x17\x90\xef\xd5\xaf\xac\x22\x43\xe1\xd1\x50\xb1\x45\x01\x5d\x9d\xea\xb0\xed\xed\x63\x94\xac\x36\xfc\x5f\xb2\x01\xf5\x20\x4f\xbd\x42\x2a\x36\x04\x23\x30\x15\xbb\x0a\x48\xa9\x20\xe2\xe5\xe0\xd4\xde\xed\x67\x20\x25\xf2\x3c\xfb\xa9\x38\x89\x59\x7e\x50\x4c\x88\x87\xad\xd4\x6c\xfe\xf4\x02\x4a\xfb\x8a\x26\xee\xb7\xdc\xdd\xb2\x39\x7b\x44\xa1\x79\x63\x67\x34\x00\x42\x13\x70\x28\xc3\x30\x76\x26\x81\x6c\x29\x31\xe6\x1e\xbb\x6b\x69\xed\xcb\xcb\x61\x2c\x9b\x18\x1a\x28\x53\x01\xce\x46\xf8\x2f"}, +{{0x8a,0x97,0x2d,0xd0,0xf1,0x19,0x0c,0x2b,0x9d,0x54,0x8f,0x4b,0xa5,0x82,0x64,0xbb,0x04,0x82,0x67,0x75,0x50,0x2a,0x8d,0x5c,0x2b,0x20,0x9e,0xe8,0x8d,0xce,0xa5,0xfb,},{0x6d,0x80,0x37,0x5f,0x3c,0xf1,0xaa,0xb2,0x83,0x55,0x1d,0xf4,0x45,0xd1,0x7e,0x7d,0x3b,0xaf,0x9b,0xcb,0xec,0xbb,0xb2,0x67,0x05,0x2e,0x02,0xfd,0xb6,0x91,0x44,0xd3,},{0xbd,0x45,0xb3,0xc0,0x45,0x85,0x0e,0xbe,0xf7,0xb8,0x0d,0xd1,0xde,0xab,0x48,0x03,0x7b,0x13,0x46,0xc7,0x1d,0xea,0xf1,0xe5,0x8f,0x2a,0x7b,0x16,0x26,0x74,0xf9,0x4d,0x1e,0xf3,0xd4,0x23,0x90,0x37,0x33,0x0b,0xd6,0x33,0x5f,0xe4,0xf0,0x14,0x92,0x50,0x90,0x1f,0x00,0xa8,0xe4,0x6b,0xe5,0xfa,0x0a,0xae,0xc6,0x9d,0xe0,0x6d,0x73,0x04,},"\x30\xb2\x89\x48\x93\x9a\xa2\x63\x43\x7e\x45\xc5\xc0\x25\x4f\xb2\x0e\x61\x7e\xd0\xf3\xfa\x7d\xac\xe5\xa0\xa8\xe0\xfe\x3c\x1f\xc4\xad\xb2\x80\x9b\x61\xc5\xe8\xd9\x2c\xd2\xf3\xde\x93\xb1\x73\xbe\x70\x7b\xad\xa9\x42\x40\xc6\x26\x2c\x16\x0e\x8c\x78\x21\x65\xbe\xef\x99\xd0\xbe\x8e\xcd\xad\x63\x16\xdc\xd7\x34\xbb\xb9\x0a\x66\xcb\xd5\xb1\xcb\x4f\xd8\xf2\x22\x6c\xea\x94\x8e\x4d\xf7\x6b\xbe\x25\x1d\x47\x8f\x5c\x3f\xe0\xd6\xde\x4b\xe5\x4f\x67\xf5\x02\xb2\x80\x4f\x62\x8b\x79\xa5\x50\xfb\x1a\xc4\x83\xad\x2b\xa1\x66\x37\xc4\xbc\x9d\xa6\x7f\xb4\xf9\x86\x59\xc4\xc4\x39\x4d\x16\xb6\xd1\x4b\x3e\x0b\x0c\x1e\x62\x5d\x71\x0d\xcc\x1c\x11\xdf\x5d\x34\x14\x7b\x1e\xc5\xa4\x17\xb9\xe2\x1f\x90\x8c\xfc\x52\x3d\x43\xe3\xf1\x81\xc7\x20\x9c\xc5\x6b\xdb\x5a\x21\x62\x86\x95\xed\x32\x0f\x8d\x4c\x07\xfd\x6d\x84\xaa\x03\x42\x6f\x21\x64\x4a\xae\xfe\xee\xc3\x11\xc7\x4e\x94\x99\x93\x60\x47\x35\x0a\x9b\xf5\xb7\x03\x96\x2e\x77\xce\x55\x13\x36\x83\x5f\xc3\x2c\xcb\xd2\xc9\x0a\xe5\x2e\x24\xd4\x7d\x8d\xcb\x98\x7a\xbd\x12\x1d\x3f\x74\x6b\x5d\xe2\x30\xf2\x64\x69\x60\x3f\xb0\xc4\xa8\xf6\xcd\x79\x73\xd7\xda\x88\x2e\xd1\xd6\xe4\xd9\xc5\xa4\x6e\xc2\xc2\x19\x40\xad\x33\x89\xa1\x86\x01\x4e\xe9\x72\x78\xe5\x35\x09\x88\xb1\x5e\xcd\x9e\xa7\x45\x6b\x3c\xb5\x5e\x4d\x30\x93\xf1\x3a\x87\x5b\x50\xd6\x51\x63\x78\xec\xaf\x58\xd7\x52\xc6\x37\x4e\xd1\x56\x38\x40\x93\x11\xfc\xd3\x79\xd1\x22\xc8\xd8\xc5\x9b\x86\xf4\xe8\xdc\x46\xad\xb7\x30\xa9\x33\x84\x6e\x0b\xd2\x48\xd3\x60\x82\x52\xd9\x70\xb5\x04\xc8\x13\xc6\xde\xa9\xfc\x88\xa3\xde\x64\x19\x56\xdc\xa2\x91\x20\x4d\x39\x0b\x6b\x39\x98\x1f\x8c\x0a\x6b\xcf\xc3\x1c\xa0\x74\x44\x20\x66\x2a\x9b\x35\xeb\x3f\xc2\x11\xf8\x10\xa3\xe8\x06\x25\x00\xb1\xe4\x9b\xdf\x85\x76\x65\xff\x32\xa9\xba\x76\x19\x4b\xbb\x77\xfb\x9c\x15\x41\x29\x64\x24\x4b\x98\x65\xf7\x3d\xed\x9f\x25\xb4\x9b\x42\x5a\xa2\x53\xd8\x07\xd9\x81\x82\x92\x76\x3a\x51\x3e\xc8\x07\x47\x34\x4f\xba\x0a\xcf\xe5\x93\xcc\x26\xb1\x33\x0b\xb9\xad\xe6\x6c\x4e\x88\xcf\x1b\xae\xd6\xd6\xe7\xb7\x50\xe6\xc7\x23\x9d\x7b\xcb\xfa\x3f\xbe\x45\x40\x5a\x63\xb9\x6d\x50\x34\xcc\x0c\x07\xff\xc3\xb5\x08\x58\x08\x1d\x19\x55\xe2\xd2\xfe\x5b\xe5\xfd\xa7\xa8\x99\x69\x43\x76\x8b\x05\x51\x70\xb7\xfd\x52\xf0\xa3\x20\x97\xfe\x1b\x7a\x94\xf1\xbf\x87\x9a\x0c\xba\xbe\x10\xac\x9a\x7c\xc1\xf9\xf5\x50\x68\xc4\x8e\x3c\xcc\x06\x51\x36\x43\x10\x18\xd3\x8d\x20\x10\x9d\xc9\x5d\x99\xcc\x2b\xbe\x7c\x62\x7a\xb1\xa8\xaa\x5f\x43\x16\x13\xb7\x90\xc2\xe6\x52\x6c\xf0\x4f\xdc\x9e\x55\xf5\x1c\x05\x5f\x3c\x20\x45\xa6\x75\xe3\xa1\xe5\x4b\xa4\x09\xf7\xae\xfa\x7e\x4a\xa0\x7a\x2b\xbd\x5e\x4a\xb1\x63\x21\xa9\xf0\x99\x69\x43\x91\xfd\xa6\x8a\x74\x58\x1e\x2f\x1f\x11\xdd\x9a\x6d\x52\x4b\x1b\x83\x26\x0d\xb5\x7b\x72\xef\x29\xc2\x8c\x8d\xb5\xc3\x7f\xd1\x85\xb7\xc2\xd8\x45\x50\x90\x65\x3a\xf3\x32\xdb\xc8\x2b\xfb\x0d\xb5\xdc\xca\xbf\xb6\xb2\x8c\xaa\x35\x05\x25\xcb\x54\xcc\x84\xe5\x53\xe1\xcf\x39\x54\xb6\x12\x39\x3e\x79\x93\xff\x7e\x8b\xf5\xec\xe3\xf1\x45\x09\x4d\xd7\xa2\x7c\xb4\x7f\x22\x74\x76\xf2\x89\x23\x52\x51\xf7\x72\xb3\xba\x77\x6b\xb7\x73\xaf\x0c\xc5\xf7\x86\xa3\xfb\x9e\x93\x1a\x53\x0c\xfb\xd8\x91\xcb\x5a\x5d\xfe\x25\x16\x9e\xf9\x33\xcc\x82\xc9\x08\x0f\x32\x39\x61\xa1\x20\x15\x8e\x4b\xbd\x71\x13\x4e\xf1\xf9\x01\x08\xb8\x15\xc2\x89\xd4\xe9\xa9\x58\x9e\xc6\x4c\x05\xfb\xb4\x2a\x21\xb2\x3d\x16\xe2\xa6\x46\x78\xae\xcf\xab\x65\xcd\x9a\x80\x6c\x59\x81\x03\xd4\x1f\x70\x09\x77\x63\x17\x83\x1f\xed\xdd\x1c\x90\x02\xd4\xa9\x22\x04\xf9\x7b\xa9\x49\x0c\x61\x46\x98\x03\x07\x21\x02\x52\x4b\x9d\xf5\x19\x00\x5f\x98\xaf\x54\xd6\x0c\xa5\xba\x60\xb5\x5b\x09\x6a\x4a\xc2\xb1\x6e\xb9\xcc\x81\x97\x3c\x31\x35\xd3\xfb\x68\x73\xdd\x96\x53\x80\x0a\x22\xbb\x5d\x0d\x61\x17\xca\x5d\x91\x65\x53\xbe\x39\xc9\xa3\xb5\x11\xeb\x3d\xb7\x30"}, +{{0x12,0x38,0x0c,0x45,0xa7,0x9a,0xde,0x0f,0x48,0x3c,0x88,0x1a,0xaa,0x37,0x30,0x43,0x8b,0x08,0x35,0x90,0xf4,0x04,0xdc,0x9e,0x60,0x1f,0x76,0x15,0xf3,0x75,0xa6,0x28,},{0xd6,0x6f,0xc5,0x9a,0xe9,0x17,0xf7,0x6d,0x24,0xce,0x8a,0xb8,0xee,0x03,0xfb,0xcb,0x71,0x5d,0x5e,0xea,0x4b,0x08,0x39,0x2b,0x59,0x1e,0x64,0x85,0x91,0xc7,0x3c,0x89,},{0x02,0xb2,0x51,0x74,0xa3,0xdd,0x52,0x19,0xed,0x48,0xb2,0xc9,0x4c,0xa2,0x12,0xb6,0x3a,0x6a,0x3a,0x25,0x97,0x70,0x3c,0x07,0xb7,0xf0,0xc9,0x65,0xc3,0xc6,0xac,0x2e,0xb4,0x50,0xef,0xe3,0x87,0x16,0xa2,0xa2,0x8b,0x3f,0x89,0x84,0x6b,0x06,0xeb,0xdc,0xa4,0xbd,0x09,0xaa,0x58,0x1f,0x24,0xe8,0x4d,0x80,0xfc,0x10,0xac,0x1a,0x00,0x0a,},"\x68\x45\x23\xc2\xe7\xfa\x8b\x4b\xd7\x54\x8c\x4b\xac\xaa\x86\x78\xa3\x30\xdb\xbb\x96\x06\x32\x94\x01\x66\xb2\xcc\x9a\xfc\x15\x35\xc8\x0c\x11\x2c\x8d\xc4\xad\xa7\x62\x92\x33\xfe\x90\x90\x55\x23\x7d\x51\x3e\x29\x2a\xf1\x5a\xd7\x69\x2f\x11\x5a\xa0\x92\xda\x65\x75\x32\xf5\x18\x99\xc3\xf7\xf5\xd9\xd4\x07\xed\x5c\x16\x3e\xb3\x95\x04\x80\xa4\x12\x2a\x09\x92\x98\x1f\x07\x7b\xc8\x67\xf9\x06\x07\x54\x07\xba\x98\x49\xc4\xea\x04\x73\xce\x54\x0a\x79\x67\x44\xef\xa3\x86\x03\x78\xe1\xb8\x93\x43\xe5\x83\xd0\x80\x7e\x5a\x67\xc4\xd5\xbd\x7c\xe6\x41\x29\xfe\x90\x2b\x8c\xfa\xbd\x2c\x21\xfa\x3d\x2a\x10\xe9\xbf\x9e\xa5\xe5\x47\x3a\xe2\x50\xc9\x16\x05\x09\x97\x26\x78\xf9\xa7\x40\xe6\xca\xdb\x3b\x52\xf5\x02\xfa\x61\x6c\xff\xae\x1d\xef\x89\x3d\x54\xe4\x1e\x54\xd3\x26\x46\x4c\x9f\x43\x5c\x63\x50\x5f\xb1\x5e\x3e\xea\xf5\x02\x1c\x65\xdc\xd0\x10\xf8\x40\xaa\xb3\x17\xc8\x60\x5d\xfb\x1a\x0c\x8a\x3d\x55\x49\x86\x1b\x69\xaf\x2c\x93\xd8\x6c\x98\x1d\xf3\xa5\x1c\x5b\xf5\x78\x5c\x2f\x85\x26\x10\xe4\x4f\xa4\xff\x1c\x71\x61\x15\x2e\x56\x18\x38\x47\x44\xfe\x83\xba\xbf\x0b\xcb\x75\x61\x78\x9a\x02\x31\x25\xf6\x24\x2a\x18\x3c\xac\x95\x49\xc9\x32\x73\x3a\x86\x8a\xa1\x82\x65\x6e\x2b\xa0\xa8\xc0\xbe\x10\x69\x96\xa8\x5c\xeb\xf1\xbd\xad\x12\x3b\x98\x2b\x4e\x05\x55\x10\x87\x94\x82\x02\x1d\xae\xa9\xd8\xf2\x6c\x58\x8e\x6c\xd1\x01\x26\xcb\x31\x96\x88\x03\x56\xbe\xe8\xf2\x98\xbc\xa3\x06\xec\x56\x99\xc7\x57\x6b\x76\x50\x87\xc2\x53\xa6\x02\x14\x01\x0c\x6e\xd7\x0d\x87\x1c\xfc\x87\x38\x01\x8a\x0e\xdb\x57\xf1\x06\xb4\x21\x8d\x85\x5e\xab\x2c\x91\xf3\x9f\x85\x8b\x3f\x25\x90\x56\x31\xa0\xee\xe2\x98\x56\xfd\x34\xf7\xb8\xc9\xba\x51\xc1\xc4\xc6\xa7\x35\xd6\xc7\xa1\x3d\x22\x0d\x7a\x56\x6c\x3f\x50\x6c\x72\xbc\x74\x17\xab\x37\xf0\xd6\xd7\x96\xff\xc7\x1d\xf9\xdc\x7c\x6e\x13\x7d\xa5\x6b\x7a\x3e\x10\xcf\x0b\x1a\xbb\x3f\xfb\x70\xbc\x66\x29\x3b\x5d\x75\xb4\x05\xed\x8b\xec\x0d\x6f\xcd\x06\x92\x5c\x38\x11\x68\xac\x18\x8d\x0b\x8a\x1a\xf0\x83\x9f\x5b\xde\x84\x3b\x69\x91\xe5\xa5\xd6\xcd\x66\xfe\x6b\x0f\xde\x86\x7c\x08\x6e\xd4\x38\x76\x91\x9a\x1b\x72\x33\xd8\xd7\xe1\xd2\x74\x2f\x61\xc7\x7d\x8e\x59\x91\x68\x9c\x83\x28\x67\x66\x55\xb7\x6a\x37\x50\x56\x0e\x75\xd1\xc7\xe8\x5e\x3c\x00\x85\x05\x93\x31\x09\x4b\xba\x57\x10\x03\x2c\xf6\x79\xa5\x25\xc7\x8b\x31\x70\x0e\x6d\x91\xf7\x52\x94\xc4\x22\x48\x92\x97\xe1\x73\x59\x43\xe4\x17\xfc\xd3\x55\x80\x58\x2f\xdd\x02\x39\xb5\x11\x46\x53\x0c\xc0\x9d\x83\xb2\x8f\x0a\x1d\x64\x22\x20\xdf\xb9\x9b\xad\x62\xf3\x95\x41\x03\x50\x81\xd6\x5d\x77\x8d\xdf\x32\x39\xba\x0e\x6f\xa9\x91\x4b\x17\xb3\x97\xa5\x34\xcb\x8f\xd3\xb4\xff\x42\xa8\xd8\xc8\xee\x66\x15\x3f\xbb\x1f\xf0\xfa\x54\xf7\xbd\x03\x27\x85\x16\xe6\x34\x1a\xf8\x0f\xcd\x1f\xce\xe7\x0c\x35\x9d\x20\x53\x68\xac\x49\x0d\x75\xa3\x54\x51\x2d\xa4\x6b\xa7\x63\x4c\x15\xb2\x84\xb2\x44\x77\x80\x8f\x17\x63\x33\x60\xa4\xb4\x9f\xb3\xbc\xaa\x84\x18\x41\xcf\x92\x41\x7e\xb2\x4c\xe4\x82\xd5\xa2\x4b\xfd\x2d\xac\x37\x22\x31\xda\x53\x9a\x05\x42\x00\x02\xff\x7a\x20\xc4\x76\x09\x7d\xa0\x6f\x59\xf0\x33\x14\xe6\x05\x9f\xad\x88\xc5\x0c\x3b\xaa\xc0\x3c\xef\xa7\xcd\x82\x11\xd2\x46\x1b\x16\x60\xea\x6b\xcf\x47\x68\x38\xc9\x1a\x10\x07\x4e\xb4\xb4\x0e\x6e\x97\x4a\x94\x5a\x67\xf6\xee\x69\x04\x23\x1e\xf0\x41\x88\xf1\xea\xd5\xba\xf3\x56\x94\xef\xe3\x01\xed\xc7\xe8\x66\xda\x23\xb5\xa6\xc5\x8f\x01\xb2\xa5\x2c\xf3\xab\x80\x5e\xdc\x5c\x13\x68\x62\x6b\x95\xb9\x4e\xb4\x64\x5b\x69\x3e\xc8\x80\xf2\xb8\x11\x7a\x69\x3a\xfb\xdc\xd2\x48\x24\x31\x89\x0f\x41\x0b\xc5\x80\x53\x0f\xef\x37\x58\x79\xc2\xe4\x60\x49\xca\x89\x1a\x2c\x3e\xcd\x60\x43\xae\x80\xd8\xaf\x34\x66\x34\x67\x4c\x6d\xfe\x90\x59\x97\xde\x5d\x05\xd6\x20\x09\xee\xed\x27\x75\x02\xfb\x5a\x5a\x31\x55\xee\xee\xb6\x73\x48\xb6\x0d\x89\xa3\x4a\x78\x12\x63\x9f\x54\x1f\xfe"}, +{{0xd1,0xb3,0x43,0x0d,0x4e,0x63,0xaa,0xbf,0xa9,0xef,0x96,0xbc,0xba,0xf1,0xfa,0x6a,0x9e,0xb5,0x21,0x9d,0xd4,0x4d,0xf3,0xb1,0xa6,0x15,0x63,0xdf,0xfe,0x1c,0xcb,0x28,},{0xc2,0x8a,0x05,0x19,0x52,0x45,0x29,0x0e,0xcd,0x38,0x53,0x55,0x85,0xce,0x51,0xf3,0xc2,0x35,0xc5,0xd6,0x50,0xc8,0xc5,0x7c,0x2f,0x79,0xbb,0x0a,0xc0,0xe8,0x08,0x34,},{0x4c,0xb6,0xff,0x5d,0xd7,0x06,0xb1,0xae,0x81,0x6c,0xdb,0xaf,0x9e,0x9e,0x1e,0xdc,0x80,0xa6,0x62,0x84,0xf9,0x46,0x52,0xd5,0x0e,0xc1,0x4e,0x28,0x3b,0x2a,0xdc,0x59,0x2f,0xd0,0x84,0x33,0x71,0x44,0xff,0xa7,0x12,0xdc,0x34,0xce,0x8e,0x61,0x06,0x68,0xa6,0x5e,0x96,0x9f,0x05,0xce,0xb5,0x47,0x86,0x30,0x4d,0x0d,0x58,0xd3,0x1a,0x08,},"\x07\x6c\x0c\x87\x62\xe4\xbc\x00\x3c\x36\x0a\x12\xa1\x95\x98\x05\x05\x51\xd1\x6b\x4b\x8d\xa0\xfb\x9c\x4a\xfc\xc8\x1a\xdb\xe6\x19\x95\xf2\x5c\xbc\x28\xdc\xa4\x20\xbf\xa9\x46\x10\x54\xd3\xee\x00\xad\x78\x18\x3e\x7f\x26\xdf\x68\x98\xaf\x9a\x4d\x22\x5f\xca\xb6\x7c\x04\x2e\x9a\x13\x52\x5d\x1f\x75\xff\x0e\x3d\x8d\xa8\x08\x96\xb7\x28\xf3\xe2\xdb\x65\x94\x4a\xe0\x71\x7d\x77\x59\x90\xb5\x9e\x5b\x70\x43\x4b\xd4\xb3\xee\x45\x2f\x10\xac\x06\x10\x57\x0b\x38\x22\x08\x32\x96\x8f\x54\x4d\x3e\x4d\x11\x9b\x1d\x4b\x50\x15\xc6\xcd\xf4\xcf\x22\x0b\x56\xb5\xc0\xcc\xd8\xe3\x98\xd5\xe4\xa5\x8d\xa3\xb0\xe2\xb2\x70\xa5\xd3\x9b\x82\xab\xb7\xf9\xd2\x7a\x41\x90\x18\x55\x0b\x62\x00\xae\x51\xc8\x48\x82\xf0\x86\xae\x7e\xa5\x35\x16\x71\xb6\xdd\x96\x09\x23\xad\x6b\xef\xc1\x34\x09\x87\x9a\x8d\xf6\x19\xbd\xf6\xc8\x8a\x6f\xe1\xec\xc0\xf0\xf3\xaa\x21\x9f\xb6\x19\x02\xbe\x48\xa5\x3d\xf2\xbc\x66\xc5\x6f\x1c\x1d\x17\xf7\xe6\x16\x7d\x25\x51\x65\xf1\x74\xba\xa9\xca\xf5\x3c\x73\xcb\xbb\x7c\xc2\xc7\xc0\x87\xf4\x3a\xbe\x2a\xed\x5a\x21\xfe\x42\x90\xb8\xd6\x79\x60\xa8\xa9\xcb\xc2\xa5\x7a\xbe\x22\x65\x4d\xc1\x84\xcf\xf9\x16\x8b\xb6\x97\x27\x03\x75\xfe\x88\xd5\xc4\x9c\xf9\x5b\x06\xcf\x9d\x0d\xac\x81\xfb\xd9\xc0\xd7\xb8\x2d\x05\xed\x2c\x3f\xd4\x9c\xcc\x29\x40\x44\x41\x71\x25\x45\xf9\xa9\x91\xe4\xf0\xdd\xb6\x21\x90\x83\x82\x96\xf9\x67\x29\x9a\x38\x60\x72\x26\xd8\xa6\x81\xf0\xa8\xf3\xc4\x38\x4f\xd1\x8b\x30\x25\x7c\x46\x3c\x0a\xbd\x0f\x4f\x6f\x12\x25\xa5\x1b\x76\x2d\x6d\x0a\xc7\xd5\x9c\xd2\xef\xd6\x98\xb8\xd1\x3e\x23\xd7\x04\x09\xf6\xb0\x7d\x69\x5c\x16\x71\xcd\x6f\x59\x44\x3b\x1d\xb0\xab\x35\xb9\xdc\x06\x40\xe4\xc6\xd1\xac\x50\x47\x5d\x28\xef\x94\xf8\x17\x90\xe2\xe5\xb2\x54\x55\x14\xb2\xa4\x9c\x5c\x21\x53\x45\x9b\xe5\x40\x89\x0f\x53\xbc\x18\xe4\xa1\x6d\xcb\x5d\xcf\x50\xf3\x7a\x95\xc6\x06\xfd\xf4\x85\x98\xe5\x2a\xf3\x17\x9a\x20\x48\x61\x5d\x93\xd9\x7e\x05\x99\xb7\x08\x8c\x11\x74\xbb\x9f\x15\xe3\x70\x18\xf9\x9a\xcb\xce\x5b\x13\x02\xf8\xd8\xce\x2a\xb8\x54\x37\xfe\xeb\x0c\xaa\x77\x84\xdc\x83\xc9\xe7\xc3\x6f\xe0\x59\x90\x6b\x03\x0a\x86\xa3\xde\xd0\xab\x9d\x8b\x73\x52\x9d\x47\x5e\x66\x1a\x08\x08\xd6\xd3\xf0\x90\x7f\x85\x28\x87\x3f\x08\xd5\x74\x8b\xe1\xd6\x97\x12\xe8\x52\x62\xd7\x7b\xdf\x13\xbf\xd1\x8a\x5c\xde\x6f\x71\x46\x26\x73\xab\x29\xb1\x61\x73\x15\xa9\xa6\xe9\x36\xa8\xe8\x1a\x8e\x43\xbd\x0f\x66\x44\xa5\xc6\x9e\xaa\xac\x89\xbd\xaa\x99\xcc\xa8\x03\x83\x37\x05\xe5\xaf\xa6\x9b\x3b\xd1\xd0\x25\x2b\x85\x46\x50\xf2\x19\x97\x91\xe6\xac\xa7\xc7\x5a\x86\x12\x83\x21\x62\x33\xa2\x63\x3a\x6a\xef\xf9\xd3\x01\xee\x5c\xb4\xdd\x72\xc0\x8a\x45\xcd\xae\x8f\x54\x58\xc0\x95\xb2\x2e\x75\x9c\x43\xb4\x9b\x98\xe9\xf4\xcb\x33\xd5\xde\xa8\x79\x44\x9e\xae\x73\xcb\x87\x4c\x73\x59\x43\x25\xeb\xf6\x8c\x1e\xd4\x06\x4b\x6f\x61\xab\x2f\x01\x4a\x2f\x19\xf3\x2e\x12\xb3\x3c\x5e\xaa\x8a\x29\x20\x4d\x5e\xba\x58\xdc\x07\x50\x72\xfe\x39\x9b\xe7\xd1\xab\x18\x08\x20\x8f\xb4\x08\x12\x3b\xdc\x0b\x4a\xb3\x13\x0f\x9f\x70\x6d\xc3\xeb\x19\x4b\x60\x5e\x73\xa3\x2f\x12\x5a\xe4\x91\x28\x5c\xe6\x03\x9f\xb6\x23\xc3\x8b\x81\xd5\xab\xa0\xf5\x59\x9f\x6c\x86\xe8\x72\x48\x6b\x4e\x96\x49\xda\xff\xe3\xa3\xd0\x6c\xb0\x73\xdd\x3b\xc6\xf4\xe1\x0a\x18\x70\x0e\x45\x72\x2d\x78\xa6\xb0\x97\x2d\xc9\x4d\x5c\x7a\x7b\x66\x41\x75\x7b\x79\x60\x75\x71\x9d\x7b\x8e\xc3\x6a\x1e\x79\x6f\xb5\xf8\xfe\x6f\x1b\x79\xa0\x85\x9c\xb4\xd6\x7c\xec\x05\xed\x91\x4c\xfa\x32\xc1\xdd\xfe\x21\x8e\xf9\x63\x43\x6c\x3a\x11\x48\xac\x2c\xf9\x09\xdf\x73\x59\x89\x06\x57\x46\x3a\x4e\xa2\x5f\xed\x59\x61\x8a\x06\x81\xa1\x21\x7e\x22\xd6\x4e\xf9\xd9\xb4\x55\x9d\x0a\x0f\x6b\x3c\xe8\xd8\x47\x93\x0b\x23\x23\x01\xca\xf4\x4c\xdf\x7a\x3f\x18\xa2\xac\x13\x0b\x92\xcf\xd9\xc0\x33\x60\x55\x7b\x5f\x7c\x47\x75\x46\x2a\x10\x71\xf7\x03\x44\xc7\x18\x37\x4b"}, +{{0x03,0x3e,0x00,0x3d,0x7a,0xab,0x7b,0xc7,0xfc,0x8a,0xc2,0x04,0xc7,0x33,0x79,0x9a,0xe5,0x53,0xc3,0xfe,0xc5,0x3f,0x10,0xdb,0xf7,0x95,0xb5,0xf4,0xb8,0x7f,0x1c,0x95,},{0x68,0x2f,0x46,0xf5,0xc0,0x56,0xdd,0x45,0xba,0x0b,0x5a,0x78,0x20,0x31,0xf9,0x59,0x6a,0x73,0xaa,0x29,0x2c,0xa2,0x32,0x6b,0xed,0xa7,0x4a,0x52,0xfc,0x32,0xb7,0x16,},{0xed,0xb4,0xe0,0x20,0xd6,0x76,0xfa,0xc6,0xa8,0x45,0x53,0x48,0x80,0xbf,0x61,0x36,0x37,0x4a,0x8b,0x7f,0x2c,0x53,0x85,0xbb,0x9e,0xe2,0x25,0x38,0x1f,0x49,0x4e,0xfb,0x74,0xa5,0x5b,0x41,0x3a,0xe0,0xea,0x70,0xad,0xd6,0x1b,0xfd,0xfb,0x87,0xfb,0x42,0xd5,0xbc,0x0c,0x53,0x59,0xdd,0xdd,0x57,0x3d,0x53,0x8a,0xe9,0x3a,0x6b,0x36,0x09,},"\x59\x6a\xa2\xc4\x0b\x33\x18\x87\x89\x38\xeb\xc1\x38\xdb\x27\x4b\xb3\x8a\x52\x01\xeb\x7c\xaf\x87\x5e\x6c\x64\x57\x91\xda\xe0\x12\xbd\xef\xd4\x85\xe6\xbd\x9d\x84\x99\xc4\x2a\x2a\xe8\x6c\xf3\x2b\x18\x00\x2e\x76\xbb\x58\x2c\xca\x0d\xec\x48\x15\xde\xd8\xa1\x21\x1f\x8f\xc8\x85\x7f\xce\x1d\x57\xf6\x15\x1d\x88\x78\x7b\x97\x8f\xab\x56\xbf\x92\x6b\x15\x33\xe1\x94\x99\xe8\xbb\x99\x15\x8c\xdd\x6e\x98\x0f\x6b\xa5\x43\xae\x83\x1f\x9d\xd1\x34\xb0\xfe\x6d\x5c\x24\x88\x7d\xc7\xa8\xd4\x78\x1d\xd9\xb7\xfc\x5d\xc9\x46\x4b\x04\x5c\xbf\x9d\x1e\xf5\x03\x6b\x5b\xf2\x8b\x54\x9a\xc7\xaa\x8f\xaf\xb9\x1a\xdc\x9f\xec\xa7\xa1\x45\x54\xd1\x10\xe3\x10\xc7\x49\xe4\x85\x33\xf3\x59\xc7\x0f\x05\xfb\x7a\xed\xef\x13\x66\x36\xb8\xef\x72\x23\x88\x65\x39\x86\x4e\xe5\x2d\x34\x11\x8b\x4b\x8b\x74\xe0\x8f\xe6\xb6\x58\x96\xe4\xb1\x9b\x6d\x7c\x3f\x25\x28\x26\x55\x85\x48\x17\x10\xd2\xd7\x49\x48\xeb\x4b\x17\x08\xa5\x0f\xa7\x40\x21\xbd\xa4\xb3\x61\xbc\x68\xd2\xa5\xd2\x02\x10\x9f\x8d\x28\xd8\xaa\x67\xd7\x8c\x11\x36\xcd\x2e\x90\x3c\x8d\xfa\x17\x5a\xf7\xbd\x96\x3b\x73\xda\xe4\x95\x87\x3c\xcd\xae\x62\xbf\xef\x88\x56\x36\xdd\x83\x55\x0f\xf9\xc0\x5c\x37\xba\x33\x89\xd1\x54\x36\x85\xd8\x94\x83\xb0\xc1\x04\xe7\xef\xbb\x77\x02\xc5\xa0\x39\x8a\xc7\x20\x48\x4c\x50\x93\x68\x35\xee\x9d\xf2\x53\xf0\xef\x8c\xbe\xf3\xe0\x7d\xe9\x69\x51\x1c\xcb\xf8\x75\x57\x49\x3a\x0b\x97\x2e\xf0\xe8\xe6\x29\xcf\x38\x22\xdb\x21\x28\x6e\xd7\x27\x66\x1b\xd3\x17\x86\xfc\xa1\x42\x11\x06\xda\xcd\xee\x1c\xaa\xf4\x94\x54\xe8\x54\x79\x4f\x70\x4d\x22\xa9\x5a\x4c\x8e\x6b\x1c\x2f\xee\xa5\x7e\x56\x23\x8c\x20\x96\xf1\xcc\x57\x86\x47\xfe\xa5\x44\xd6\x76\x44\x82\xbd\xf5\x14\x88\x79\xa2\x5f\x94\x3d\xb1\x6f\x29\x02\x1b\x9e\xcf\xe3\xe0\x90\xb4\x25\xc8\x1c\x70\x09\x84\x2e\x1c\x7a\x02\xd9\x1c\xa6\x0c\x12\x01\xc3\xbd\xae\x9c\x53\x73\xaf\x03\xf2\xf4\xdb\xef\x40\xde\x8d\x9b\x21\xfe\xd6\x8d\xee\x51\x0d\xe0\x42\x72\x34\xca\xa1\xc2\x0a\x3a\xe5\x49\x95\x48\x34\xc9\x33\x73\xd9\x13\xb8\x75\x0f\x23\xa0\x37\x80\xd7\xa9\x45\x4e\xd6\xfe\x51\xfd\x2d\x27\x6b\x9d\x4a\xa3\x2d\xe0\x5e\x03\x81\x6e\x64\xe9\x46\x6f\x4f\x0e\x22\x46\x51\x42\x8d\x34\x2c\xbc\xc6\x97\x17\x0a\x47\xef\x99\x6b\xda\xcb\xce\x91\x11\x7c\xa1\xf8\x45\x5b\x25\xb2\xb0\x84\x43\xe9\x91\x4e\x3d\x90\xc4\x89\xee\xaa\x77\x31\xdd\xea\x21\x23\xd5\x5d\x67\xb1\x66\x83\xfb\x7c\x82\x36\xaa\xa5\xa1\xb0\xfc\xaf\x8d\x17\x00\x11\xdb\xe9\xaa\x28\x57\xbe\x61\x2c\xbb\x85\xef\x69\xe5\x68\x31\xb4\xda\xcf\xbc\x7a\x59\xb4\x65\xa6\x6d\xc7\x41\x2d\xdb\x3d\x6a\xf4\xeb\xfd\x70\x58\x64\xe7\xd4\xfb\x99\xa6\xcc\xb4\x8b\x11\x83\x68\xfe\xab\x02\xa3\x40\xc4\x32\x76\x8d\xe0\xe0\x67\x87\x1e\x9e\xa8\x08\xd6\xd9\x93\x81\x58\x29\xe7\x1f\x6c\x04\x2b\x66\x49\x95\x09\x8f\xee\x94\xd5\x43\xdf\x15\xe5\xb1\x69\x57\x03\x1b\xd2\x38\xbc\xad\xbb\xdc\xc5\x76\xaf\xfb\x64\x03\x03\xd6\x9c\x5b\x25\x0b\x3a\x53\x9a\xfd\x12\x7f\x7e\xe2\x60\x9e\x52\xe5\x15\x4f\xbd\xff\x3e\x45\xf9\xc4\x40\x66\x65\x6d\x56\x1e\x0f\x64\xdf\xf2\x80\x5d\xf8\x8e\x30\xa3\x80\x53\x08\x22\x41\x3a\x7a\xb7\x6a\x1b\x9a\x86\x53\x78\xd2\x47\x63\x06\x9a\x81\x40\x02\xa9\xa9\xd0\x37\x95\xca\x8d\x2b\x5b\xd1\x09\x03\x93\xe9\xe4\xb1\xff\x7d\x7f\x0e\xb8\x4e\x71\x2a\x01\x8f\x68\xc9\xe3\x84\xf0\xa0\xae\xf3\x96\x78\x79\x28\x4f\x40\x9e\x30\xd2\x36\x50\x86\xe6\x69\x52\x27\x8c\xa9\xb6\xf9\x0e\x8f\x69\xa4\x8d\x9b\x28\xbb\x4c\x4e\xd6\x32\xab\xca\x3a\xf4\x14\x4d\xa7\x42\x2b\xf5\x19\x92\xf7\x34\x73\x14\x53\xc7\xa3\x3e\x15\xe5\x9f\x53\x08\x12\x9d\x6a\x77\x4a\x94\x58\x6f\x72\x33\x11\x17\x91\x76\xc0\x94\x8f\xff\x4e\x30\xc1\xb9\x59\x81\x2c\xac\x97\x7c\xc7\x43\x47\xb0\x07\x94\x0f\x2f\xb9\x62\xa9\x0d\x66\x06\x6a\x6d\xe8\x80\x19\x84\xde\xe4\xa5\x32\xd4\xb0\xac\xd6\xdc\xaf\x06\x72\x7b\xab\x70\xb3\x86\x62\x32\x23\x4c\x91\x00\xbf\xdc\x66\x9f\x77\xca\x49"}, +{{0xee,0x55,0xfc,0xf7,0x0a,0x27,0x5c,0x72,0x6b,0xd4,0x85,0x66,0x83,0xb3,0x47,0xde,0xcf,0xd4,0x22,0xf1,0x82,0x6c,0x07,0xa9,0x32,0xcb,0x85,0xbe,0x9f,0xa4,0xef,0x3c,},{0xdf,0xcf,0xfb,0x5e,0x15,0x53,0x78,0x9d,0x56,0xa9,0xf3,0x91,0x4b,0xce,0x50,0x0d,0x07,0xc5,0xac,0x31,0x1f,0x92,0x78,0x54,0xb2,0xcf,0x1e,0x58,0x33,0xc0,0x32,0x37,},{0x9d,0x8c,0xb2,0xea,0xf3,0xff,0x3e,0x0c,0x2b,0xc6,0x72,0xe1,0xd2,0x55,0xc5,0xb8,0xe8,0x07,0x31,0xbf,0xf6,0xf6,0xab,0xa5,0x17,0xe1,0x33,0x54,0xe8,0x51,0x08,0x0f,0x4a,0x8b,0xb8,0x12,0x1b,0x26,0x24,0x24,0x4c,0x9e,0xe9,0x5c,0x8a,0x09,0x2f,0x10,0x37,0x03,0xfb,0xe6,0x6f,0x9c,0xba,0x10,0x0d,0x2e,0x91,0xed,0x77,0x4a,0xc9,0x07,},"\xb8\xc8\x45\xcf\x7c\x54\x85\xf0\x62\x2d\x1d\xdc\x17\xf7\xa0\xf6\xf0\xfd\x70\x74\xfe\x19\x4b\x0e\x0c\xd4\x26\x50\xcf\xc8\x17\xf5\x7f\x09\x5f\x8c\xdf\xad\x1e\xbe\x0d\xfb\xc1\xbd\x76\x17\xab\x4f\x20\x4e\x9d\x55\xd8\x1a\x7c\x8a\x43\x39\x40\xec\x6f\x17\xc8\xa8\xe3\xd5\x6c\x1a\xfb\x0a\xf3\x74\xbd\x32\xd5\x4e\xf7\x13\x2d\x26\xb8\x9c\x47\x0c\x2a\xb5\xbe\x16\xfa\xbb\x4c\x75\x19\x3d\x6d\xa5\x9b\xa2\xfd\x15\x7e\x9e\xa4\xe0\xc5\xc0\x8a\x52\x02\xf5\xed\xc6\xa6\x17\x01\xf0\x8b\xb3\x44\xca\x64\x55\xd7\x5d\x14\x5a\xdb\x24\x4c\x53\x4c\x8c\xfc\x62\x3f\x4d\x4b\x67\x67\x59\x4b\x39\xa7\x69\x0b\xee\xec\x4d\xf9\x74\x6a\x57\xff\xee\x05\x14\x54\xc4\x27\x8e\xa4\x3c\x81\x0f\xf1\x3c\xd7\x69\x61\x5f\x9d\x05\xd4\xfe\x4a\x51\x58\x3e\x80\xc0\x15\xdc\xfe\xd9\xaf\x05\xf9\x3d\x05\x4d\x34\xff\xd9\x39\xbd\xd8\xf0\x51\x8f\xa3\x03\x0a\x96\x4d\xc9\xd8\x0d\xf0\x0f\x16\x35\x82\x40\x72\xcd\xf2\x9b\xc8\x02\x59\x20\x9d\x50\xf5\x6f\xca\x9f\xbd\x6a\xe1\x51\x4a\x67\x19\x89\xce\xa4\xf6\x84\x6b\xc1\x91\x79\x09\x7c\xca\x40\xc6\x24\xd7\xed\xbf\x91\xfb\x5b\x25\x39\xeb\xbd\x50\x2d\x36\x46\x71\x14\x30\xba\xe4\x23\xfd\x11\x58\x48\x09\x33\x18\xb7\xd0\x87\xef\x1e\x3b\x89\x4b\xc3\xb9\xea\x27\xaf\x85\x3f\xca\x85\x95\xd3\x6f\xb7\x29\x99\x69\x16\x2f\x2e\xd6\xa2\xb5\x50\x75\xb2\xc6\x30\x80\x28\x57\x17\x6d\xec\x4c\xb5\xac\xf2\xb1\x3a\x35\xa9\x94\x9b\x91\x2b\xb5\x7d\x81\xeb\x0c\x8a\x8a\xdf\x3c\xf6\x4c\xb5\x71\xbf\x5f\x3d\x71\xf9\x87\xd6\x4d\x74\xe9\x19\xa0\x03\x36\xe5\x7d\x35\xee\x4e\xec\xfc\x65\x70\x00\xdd\x5b\x12\x99\x5e\xe1\xb1\x16\x59\x1c\xe5\x8e\x56\xde\x25\xb2\x9c\x94\x82\x9d\x1d\x68\x52\x1b\x95\x58\xe4\x72\x5e\xc7\x70\x39\x06\x9c\x0c\xd1\x7b\x2a\x00\x33\x59\xe9\xe1\xe1\x12\xc7\x59\x01\x76\xce\xbc\xe7\xf0\x01\xf1\xd1\x36\xe8\x18\xf4\x81\x8c\xfd\x94\x74\x5a\xfa\xab\x56\xf1\xa4\x06\xf9\x7d\xd9\xe6\x1b\x73\x52\x66\xd6\x82\xad\x7d\xf2\x6d\xd7\x0c\xde\x0b\x57\xfe\xa7\xdb\x2d\xf8\x32\xfa\x88\xa3\x5f\x53\x97\x94\x88\x4d\xdc\x41\x21\x84\x03\x01\x6c\xb6\xd5\x22\x1f\x3f\xeb\x5d\x3a\xee\x4a\x98\x40\xa9\x13\x07\x2d\x29\xf8\xd1\xa9\x36\x7b\xb0\xbb\xf5\x45\xf7\xda\xe7\xc0\x0a\x0d\x0c\x03\x42\x23\x1a\xe4\x62\xbb\x74\x2e\x14\x98\xee\x58\x4a\xe6\xc8\x3f\x2f\x1f\x2d\x04\x52\xbe\xad\x98\x22\x68\xcd\x3c\xfd\xe7\x8f\xf4\x22\xe2\x26\xbf\x7b\x2a\xf1\x13\x77\x57\x79\x7f\xb0\x2e\x52\x75\xc3\x48\x09\xd5\x4c\xa9\xee\x2a\x65\x27\x5e\x6e\x5c\xff\xdd\x20\xad\x1f\xa1\xee\x0b\xd8\xb2\x1e\x04\xce\x82\x9e\x02\xcd\xb6\x3c\x48\xbf\xcd\xd8\x6d\x3a\x08\xc5\x97\x89\xc9\xd7\x8e\x36\x18\x1d\xef\xeb\x72\x27\x10\x72\x75\xed\x6b\x5c\xcb\x12\x7c\xd7\x2b\x37\x4e\x17\xf5\xee\x0b\x5e\x47\xb4\xb3\xe1\x4a\x8e\xc6\xd8\x6b\xb7\x50\x71\x87\xf2\x8d\xb3\x2b\x3f\x3f\xa1\xca\x13\x44\x6f\xe5\x25\x3e\xe7\x83\x64\x5e\x79\x42\x72\x79\x9a\x86\x3b\x4f\xca\x99\xe4\x43\xcb\xaa\x05\xde\x3c\x50\xed\xf3\xd5\xcd\x7c\x10\x52\x9c\x6c\x09\xa0\xc1\x45\x34\x06\xac\x7e\xca\xfa\x9b\x3a\x1f\x36\x9d\x68\xf3\xc6\x18\xf5\x8e\xfc\x35\x9d\xf2\xf3\xfc\xd2\x47\x8b\x55\xa4\x1a\x11\xf2\x48\x7e\x7f\x70\xec\x29\x3b\x3e\xcc\xc7\x00\xef\x44\x4a\x33\xd1\xea\xe9\x84\x9c\x5b\x76\xd2\x9a\xfd\x5a\x23\x86\x1a\xef\x4f\x2a\x7b\xa3\xf6\x66\x30\x1f\xde\xb5\xd3\xd8\xf0\xdc\x9e\xe2\xe0\x14\xb2\x4c\x74\x65\xde\xe3\xc0\x96\x4e\xdd\x49\xed\x49\xed\xab\xb5\xca\x7a\xfb\x99\x57\x4d\x00\x1e\x58\x12\xa0\x85\x23\x1f\x24\x1b\x6b\x08\xc7\x3e\x80\xfb\x44\xbb\x2a\xdf\x55\x4f\x14\xfd\x6d\xce\x94\xa6\xf6\x36\x23\xd9\xc1\xde\xb4\x1a\xd1\x01\x65\x1a\x6b\x67\xae\x52\x34\xda\xae\x81\x97\x9f\xbd\x82\x33\x89\x64\x9a\x3b\x0a\x06\xc6\x8b\x80\x46\x8a\x99\x1d\x30\x07\x74\x87\x51\xfa\x69\x28\x1d\xb1\xb9\x4d\x6c\x16\x0a\x1c\xab\x50\x94\x3c\xdb\xb8\xde\xa5\x75\x09\x06\xb3\xc6\x59\x5b\xb5\x80\xde\xdb\xfa\xe5\x74\x64\xcc\x7a\x65\x1d\x4c\x51\xdb\xb5\xfa\x98\x05\x97\xd1\x76\x69"}, +{{0x49,0xc2,0x98,0xa2,0xdb,0x3d,0x25,0x89,0xc9,0xfe,0x16,0xa4,0xe5,0x71,0xe5,0xaa,0x23,0xcb,0xaa,0x77,0x7b,0x86,0x47,0x02,0x90,0xa3,0xed,0xa7,0xa5,0xd3,0xe9,0x6b,},{0xda,0xc5,0x23,0xd6,0x37,0x4c,0x8f,0xf1,0x5f,0xc4,0xdd,0xc7,0x13,0x71,0x5a,0xc3,0x5c,0xf5,0x54,0x7f,0xc1,0xb1,0xb2,0x64,0x6b,0x63,0xfb,0x41,0xa7,0xf2,0x16,0x21,},{0x2a,0x43,0x9c,0x73,0xc9,0x81,0x17,0xfb,0x29,0x52,0xe2,0xb1,0x61,0xf7,0xf3,0xb9,0x9e,0x7d,0x39,0xbc,0x69,0x7f,0x79,0x40,0x75,0xdb,0x7b,0x63,0x4d,0x29,0xf1,0xff,0x57,0x24,0xf6,0x77,0xf8,0x31,0x2a,0xd5,0x15,0xb0,0x97,0xcc,0xa9,0xdf,0xc3,0x0e,0x79,0xee,0x8a,0x7c,0x9d,0xd7,0x28,0xbd,0xd4,0x5d,0xf8,0x59,0xc7,0xbd,0xe3,0x0a,},"\x35\x82\xee\xb0\xd3\x71\xdf\x38\x5d\xe8\x8b\xaa\xd3\x80\xcb\x0c\xdb\x60\xea\xb2\xba\xeb\xb3\xc7\x98\x37\x75\x3d\x08\xe1\xcb\x78\xc0\xbd\x76\xdd\x11\x04\x45\x49\x56\xd5\x71\xce\xb7\xe6\xb5\x71\xa5\x23\x68\x35\xd7\x84\xb5\x0f\xf6\x60\x57\xb1\x35\x95\xe7\xd0\xc8\xf2\x5d\x08\xae\x8b\x54\xb6\x12\x3b\xa0\x81\x51\xac\x7d\xb0\xc5\x6a\x98\x0f\x7f\x0b\xb3\x9a\x54\xb4\x37\xf5\x48\x51\x97\x99\x86\xab\x13\x67\x83\x5e\x5c\x4f\x3a\x3b\x3d\x76\x0d\x38\x27\xe7\x6c\x56\x8a\xe7\xae\xbb\xb6\x12\xe7\x75\xbd\xde\xcc\xd3\x34\xac\x6b\xcd\x32\x53\xab\xc2\x9d\x4b\x7c\x3f\x10\x36\x26\x66\xf6\xae\x75\x08\x03\x70\xa3\x6c\xba\x55\xdb\x3a\x91\xcb\x57\x89\xe4\xd6\xf9\xef\xea\x4d\xf1\xdd\x77\x30\xa5\xe2\x79\x60\xd5\x3b\x51\x21\x94\x8c\xce\x5a\xf6\x53\xff\xf1\xd5\xb4\xe5\xb0\xa8\x8c\x71\x8c\x49\xb3\x1c\x79\x3d\x88\xc1\xcc\x45\xab\x8d\xa2\x9d\x05\xe9\x06\xcd\x05\x94\xb5\xf6\x63\x8c\x8e\xc3\xf1\x76\x0b\xa4\x23\xb5\xab\x1d\x08\xa5\x87\x70\xaf\xb0\xf1\x39\xab\xd3\x49\xc1\xbf\x16\x0d\x89\x02\x23\x9c\xe2\x4f\x19\xb4\xe1\xbe\x09\x5f\x7e\xd1\x65\xf3\x93\x1e\x3c\xbc\xc3\x07\xe9\xfc\x5c\x65\x80\x31\x22\x8e\x55\xcb\xbe\xec\x0d\x0b\xcf\x8f\x69\x51\x54\xa9\xee\xd1\xbe\xf3\x52\x28\x78\x9b\xfc\x0d\x23\x8b\x83\x72\xd3\x18\x32\x8c\x13\x39\xfe\xa0\x88\x14\xdb\x86\x21\xab\xca\x3a\xeb\x82\x09\x8b\x5a\xa8\x7b\xb9\x8f\x5e\x40\x52\x2a\x08\x88\x53\x2c\x17\x48\x45\x3d\xb2\xd2\xb3\x94\x3e\x4a\xbb\x31\x2d\xe3\x19\xae\xc4\x8c\xc1\xc9\x47\x75\x97\x29\x53\xfb\x64\x96\xb8\x16\x89\x37\x62\x35\x10\xcd\x48\xc8\xb2\x47\x95\x6d\x31\x68\x48\x6c\x17\x6a\xe7\xa4\xcb\x38\x4e\xac\xfd\xab\xfa\xdd\x9f\xba\x30\xa2\x3b\x81\x1b\xd7\x79\xf3\xcb\xa5\x43\x38\xc2\x8b\xb3\x38\x22\x38\xed\x3b\x8d\xd2\x1b\xea\xb2\xf5\xca\xde\x28\xc5\xe0\x9b\x31\xa4\x54\x80\x8a\x53\x48\x12\x2e\x3a\xe3\x81\x22\x96\xf7\x86\x9c\x38\x65\xc3\xc9\xd8\xfe\x18\xbd\x81\x2f\x2e\x60\xe9\x14\x97\x5c\xfe\x1b\xef\x8d\xbb\x80\x97\x00\x6f\x0d\x7c\xf3\xfc\x15\xeb\x95\xc2\x78\x54\xb1\x43\x12\xb8\x8d\x52\x80\x15\xaf\x69\xfb\x75\x05\xb8\xf3\x27\x03\xf6\x4e\xb1\xc9\x58\xf0\x46\xdd\x25\x12\x42\xf8\xbe\xa7\x46\x7f\xc7\x29\x1d\x09\x5e\x96\x96\xe1\x1a\xa4\x5a\xbe\x79\x24\xe8\x56\x35\x15\x35\xaa\x07\x73\xd3\xd9\xe6\x1c\xc9\xa2\xd8\x9b\x5b\x07\x74\xd7\x64\x5e\xe1\xaf\x7e\xb6\xfc\xd4\x40\xbc\x69\xd4\x3e\xde\xaa\xf9\x35\xfd\x2a\x52\x95\xac\x19\xa9\x7d\x70\xaf\x92\x98\x83\x0f\x81\xc0\xa5\x09\xf2\x42\xf4\x73\x37\x24\x78\xfa\x58\x79\xfb\x2c\xb8\x51\x10\x80\xfc\x2e\xcd\x82\x59\xb8\xc3\xce\x9e\x8b\x64\x07\x61\xdc\x79\x27\xc3\x2e\x7f\x5b\xae\x97\xa8\xb8\xac\x93\x56\x62\xe5\xf4\x5d\x14\xca\xd6\xd3\x4a\xff\xc9\xa1\x94\x14\xc4\x56\x6f\x45\xf9\x77\x39\x67\x10\x89\x4c\x53\x99\xed\x44\x80\xf1\x8e\x90\x95\x7f\xaa\x76\xcc\xb5\x12\xa2\xd0\x75\x73\x05\x8a\x95\xb4\x2f\xe1\x81\x02\x49\xd1\xc8\x5e\xc4\x31\xa0\x49\xd1\xae\xcb\x0f\x11\x83\x79\xbd\xc3\xf1\xee\x49\x0b\xc8\xa0\x54\xc3\x2c\x3d\xac\x76\x59\x96\x6c\xdb\x66\xf9\x95\xac\x40\x3d\x5e\x79\xeb\x6b\x25\xb3\xf3\xf6\x5a\x6c\xee\xc2\x20\xd6\x6c\x05\xf8\xa8\xa9\x8b\x80\x79\x9b\xa4\xf2\xc6\xdb\xbb\x4d\xfb\x58\x62\xc9\xa4\x6b\xca\x01\x3e\xbd\xfa\xba\x74\x94\xa3\x0c\xe1\x46\x06\xaf\xc0\xb0\xf9\x93\x14\x3f\xed\xee\x78\x96\xd9\xa6\xbb\x81\x49\x91\x66\xed\x02\xe9\x41\x86\xaa\xf3\x21\x87\xae\xb6\xe2\x82\x50\x1b\xca\x43\xb5\x7b\x7e\xfa\x09\x39\xc9\x34\xbc\x8f\xbb\xd2\x6c\x44\xb6\x18\x33\x5a\x35\xc6\x92\xff\x99\x6a\x5b\x95\xd3\x27\xdf\x9b\x2a\x66\x21\xb3\xb0\xf1\x90\xdb\x1f\x36\xd9\x11\xd1\xa6\x63\xa4\xeb\xf9\xa2\x85\x4b\xb4\xf4\x06\x10\x95\xb6\x98\x12\xc8\x2c\x2f\xfe\x3f\x92\xe9\xb4\x4d\x2e\xa6\x31\x69\x88\x1c\xae\x84\x53\xd6\xee\xf7\xcf\x69\xc2\x5a\x28\xb3\xf8\xdd\xc7\x01\x48\xef\x26\x72\x1a\x3c\x1f\x2e\x62\xd9\xd1\x0c\xea\x42\xfc\xa3\xfa\xcd\x74\x67\x3a\x4e\x7f\x33\x50\x73\x64\xaa\x28\x6c\x0f\x38\xd7"}, +{{0x82,0x3f,0x0c,0x29,0xfb,0xfd,0xd3,0xd1,0x82,0x8f,0x30,0x55,0xe9,0xec,0x01,0xff,0xd1,0xb5,0xa3,0x75,0x11,0x8d,0xdd,0x7e,0x4e,0x0c,0x43,0x71,0x9f,0x57,0x3f,0xf7,},{0x73,0x12,0x5f,0xc8,0x3a,0xbb,0x8b,0x7c,0x65,0x85,0x59,0xfc,0x12,0x73,0x93,0x23,0x1d,0x03,0xca,0x58,0x46,0xe0,0xc8,0x81,0x18,0xd1,0x3d,0x55,0xca,0x44,0x78,0x9d,},{0xfa,0x74,0x7b,0x6f,0xe3,0x38,0x1a,0xd6,0xbc,0x82,0xa9,0x56,0x43,0xc1,0xf4,0xa2,0x0b,0x76,0xba,0x73,0xbf,0xf0,0x0e,0x63,0x5d,0x64,0x20,0x2d,0x8b,0x0d,0xf0,0x3d,0xbc,0x56,0xb0,0x13,0x8b,0x3a,0x6d,0x41,0x98,0xff,0xaf,0x58,0xcc,0xd3,0xd3,0x88,0xed,0x25,0xeb,0xcf,0x77,0x04,0x43,0xe4,0x1e,0x9d,0x21,0x47,0x95,0x0a,0x30,0x0b,},"\x80\x2c\x39\xce\x7f\x2a\x50\xbd\x81\x62\x2a\xdd\x0d\xf4\xe0\xfe\x03\xec\x3d\x2d\x30\x5a\x45\xa6\x16\x52\x71\xed\x79\xad\xd2\x43\xb9\xa0\x0e\x52\x18\x31\x92\xfe\xb2\x4c\x4f\xdb\xd2\x2c\x80\x7a\xe1\x00\xef\xcf\x16\x5b\x9c\x99\x61\x94\xe0\x0f\xa8\x17\x76\x5e\xa9\x4a\x03\x07\x0e\x48\x66\x86\xb4\x45\xfc\xb2\x63\xcc\xfe\x1f\x58\x62\xf3\xb8\x4b\x10\xf3\x90\x08\x0b\xfc\xae\x44\x7a\xe0\x06\x97\x42\xb8\x61\x8f\xa9\x57\x5f\x7e\x63\x7a\xd5\x4e\x83\x4c\xaf\x03\x94\xd7\x45\x03\x2c\xe1\xe2\x55\xc0\x27\x32\x50\xf1\x50\x4b\x37\xa0\xad\xd9\x4a\xa2\x45\xc7\xde\x52\xc8\x0e\x05\xd6\xe0\xa9\x6a\x14\x41\x05\x43\x82\x6a\x49\xe9\xb9\x45\x62\x6d\x4e\x89\xf5\x50\x27\x16\x3d\x4b\xd6\xd0\xe9\xbd\x1a\x24\x77\xf6\x7d\x3d\x56\x68\xa4\x2e\x94\xd8\xb6\x11\x93\xd8\x21\xe0\xd1\xb2\x30\xfc\xad\xc5\x36\x13\xb7\x5b\x02\xcf\xb8\x15\x84\x56\x07\x7e\xbd\xf5\xa5\xf0\x0c\x3b\x5b\x18\x63\x70\xca\xfe\xc4\xa2\x1c\x69\xdc\xe1\xf0\x1e\xfe\xf2\x3c\x37\xab\x90\xf8\x58\x23\x8a\xef\xbe\x21\x2b\x55\x6d\x2f\x07\x34\x06\x55\x9f\x1a\x51\xd8\x4e\xff\xfd\xce\x07\xb0\x0d\x01\xbb\xf3\x37\x71\xcc\x12\xc9\x60\xac\x89\x36\x5a\x9c\x82\xc5\x23\x43\xf7\x60\x33\x81\xb8\x90\x23\xc1\xa6\xe7\x02\xa5\xb1\xe4\xbd\x19\x1e\xa6\x97\x0b\x5e\xa4\x51\xea\x05\xb5\x9b\xf8\x3e\x55\xf2\x9a\x1f\x80\x32\x12\xbb\x2e\x58\xf0\x61\x63\x33\xd9\x11\x47\x08\x52\x9e\x8b\x6c\x60\x81\xde\xeb\x7c\x29\x9a\x5a\x2a\x53\xcc\xd2\x4e\xd5\x8f\xfb\xfe\x50\x3d\x80\x61\x4a\xdb\x05\xca\x11\xcf\x29\xde\xd0\x09\x04\xea\x12\x39\xf8\x2b\xa4\x0c\x79\x3e\xbc\x33\x97\x75\xf8\xb0\xfe\x39\x01\xf5\x48\x2e\x31\x0c\x79\x3c\x6e\x2c\xf0\x1d\xc1\x57\x72\x7a\xf2\x38\xf4\x9c\x98\x62\x80\x4b\x04\x75\x51\xfd\x88\x6f\x4a\x48\x99\xe2\x2a\x6a\x65\x70\x11\x17\xa3\x85\x80\x55\xbb\xfe\x96\x6e\x37\x0e\x73\x3e\x17\xef\xad\xa2\x85\x9f\xd8\xff\xa9\xe0\x1f\xce\x56\x06\xa2\x55\x36\x76\x78\xf4\xbd\x4e\x21\xe5\xda\x0f\xef\x30\x75\x7f\x34\xe3\x89\xf7\x6b\x7d\x57\xc4\xe4\x10\xa0\x02\xe9\x00\xe4\x8f\xb2\x18\xc8\xf2\x77\x8f\x14\x8f\xee\x56\x96\x5f\x5b\x47\x3e\x25\x25\x6c\x23\xa7\xaf\x19\x83\x42\xcf\x3e\xf0\x2b\x84\xdf\x2c\xd5\x80\x0a\x46\x1c\x1b\x07\xbd\xa2\xf4\x26\x28\xa6\x8a\xd2\x9d\xbb\x82\xa4\x70\x96\x7d\x73\x02\xc9\x93\xb2\x34\x13\x6e\x5b\xf2\x55\xe6\x24\x8b\x10\x2c\x2b\xff\xb2\x01\x72\x37\x1f\x1c\xa3\xe1\x0b\x08\x10\xe8\x64\x95\x03\x54\x6d\x9a\x73\x1c\xf1\x9b\x08\x33\x57\xd4\xcf\xec\xc8\x9b\xed\xb5\x35\x06\xfe\x19\x9b\x67\x03\x91\xa6\x20\x06\x9a\x30\x81\xf2\x53\xb4\xd7\x90\x88\x0a\xa2\x3b\x53\xe9\x7c\x75\xdc\x0c\x36\x05\x40\xe5\xb0\xa3\xef\xb1\xac\xcf\xfd\x13\x74\x14\xff\x84\x23\xd5\x46\x46\xfc\x56\xba\x5f\x53\xbd\x84\xc7\x26\x7c\x2f\x7e\xe3\xe3\x76\x07\x54\x41\x54\x36\x5f\x9f\x85\x08\x1d\xd7\xd2\xee\x75\xd3\x02\x27\x5c\x79\x9e\xf2\x42\x7c\xa6\x49\x63\x55\xdc\xda\x1d\x44\xe0\xd9\x77\xbf\x68\xdb\x30\x06\x50\x0a\xe3\xf4\x00\xd6\xa8\xc7\xcf\x47\x05\x7d\x4f\xc8\x7e\xee\xcb\x02\x11\x6b\x73\xee\xd6\xce\x1f\xcc\xef\x6e\x8f\xb8\xae\xa3\x63\xb2\xf6\xf5\x32\x2a\x5f\x07\x53\xf4\x58\x99\x53\x76\x46\xd5\x86\x51\xbe\x90\x37\xbf\x91\x42\x3c\x29\x86\xf5\xcc\x2b\xcb\xce\x4f\xae\xc9\x03\x49\x8b\x40\xfc\x2d\xea\xb6\x60\x3d\x6e\xea\x58\x5d\x27\x20\xd2\x1b\xb2\x72\x2b\xc0\x5b\x35\xae\xd2\xbc\xc0\xe8\x04\xfe\x9d\x23\x9f\xaf\xda\x7d\xda\xfe\x1d\x78\x60\xab\xb0\xfb\x28\xf4\xbf\x2b\x1f\xbb\x62\xa7\x86\xe4\x55\xbe\x02\x4b\x19\x3b\x78\x30\xbe\x0d\x55\x8f\x02\xc9\xf3\xae\x31\xdc\x10\x7e\xe9\x42\x1d\xc5\xf0\xb0\xf8\x94\x02\xb7\x1a\x45\x81\x40\x15\x36\xbc\x47\x30\x85\x06\xd9\x69\x39\xa2\x06\x36\x27\x44\xe2\x7d\xde\x94\x4f\x40\x96\xa1\x2b\x5f\x63\xda\xb6\x4d\x04\x14\x84\xd3\xfd\x91\xa6\x2c\x2f\x0e\xf9\xae\x78\x74\x22\xeb\x27\xfe\xd0\x80\x2e\x25\xf9\xbc\x77\x5c\x49\x15\xa8\x37\xfe\x3e\xb7\xb9\xd5\x84\x3e\x4d\x82\x10\xc6\xb4\x94\xb6\x12\x81\x63\x7a\x6b\xe3\x20\x52"}, +{{0x65,0x67,0x66,0x33,0x37,0x42,0x14,0xc4,0xac,0x4b,0x7b,0xce,0xa9,0xf1,0xcc,0x84,0xb1,0xb7,0xe7,0x94,0x11,0xe3,0x10,0x52,0x5a,0xce,0x38,0x5f,0x45,0x66,0xc1,0xd5,},{0x0e,0x6e,0xc5,0x80,0x1d,0x8b,0xd6,0xb1,0xeb,0x42,0x14,0x21,0xa1,0x40,0x8f,0x13,0x4c,0xf7,0x12,0x33,0x8e,0x0f,0xfc,0x24,0xcd,0xcc,0xdc,0x4f,0x7f,0xa3,0x1d,0xbe,},{0xe0,0xb8,0x67,0xc9,0xdb,0xda,0x35,0x32,0x34,0x33,0xc0,0x46,0xe0,0x83,0x0c,0x25,0x1b,0x43,0x46,0xc5,0x39,0x59,0x72,0x28,0x6b,0x3a,0x72,0x31,0x0e,0xd4,0x52,0x6e,0x54,0x5d,0xc0,0x9d,0x39,0x18,0xf2,0xeb,0x99,0x20,0xbc,0x9b,0x24,0x1e,0x90,0x50,0xd8,0x48,0xd3,0x83,0x02,0x88,0x65,0x15,0x91,0xf9,0x36,0xd3,0xba,0xe4,0x53,0x01,},"\x9d\x62\x2c\x20\x67\x87\x69\x40\x93\xc6\xf2\x9f\x93\x61\x9f\x21\xbb\x64\xc0\x39\x41\x6d\x20\xdc\x70\x8a\x08\x4a\x9d\x2e\x49\x0c\xf5\x65\x8e\x13\xd6\x2c\xb0\xd2\x1e\xab\x00\xe4\x2d\x85\x1b\xc6\xec\x75\xda\xf4\x05\xd2\x37\x32\x46\xee\xa4\x15\xe8\x66\x29\x1b\xab\xf7\x64\x97\x68\x0a\xaf\x04\x42\x5a\x42\x55\x2b\x10\x7d\x58\xcd\x18\x56\x1c\x8c\x94\x83\xf7\x40\x74\x4c\xbf\xa6\x05\x4c\x1b\x12\x6f\x5a\x76\x65\x9a\xc1\x9d\xdd\xad\x4a\xb5\xa0\x91\x55\xd8\xc0\x50\xb5\x35\x4e\x06\xa4\xdd\x3e\xe3\xa6\xf9\xc9\x1e\x8b\x4c\x7a\xf2\x74\x96\x64\xe7\xab\xe9\x70\x61\x58\x9e\x15\x3c\x58\xe2\x7c\xf2\x99\xa2\x5f\x2b\x53\x0c\x06\x07\x31\xec\x0f\x43\x66\xbd\x1d\xeb\xeb\x4d\x4e\x91\x2e\x76\xe5\x08\x53\x4d\x43\x3e\xc4\x8f\x96\xb6\x2e\x15\x0d\xe9\x39\x63\xa1\xb3\xe6\xc8\x09\x1b\x49\x5a\x96\x51\x8c\xe3\xd3\xb9\xa8\xdb\xdc\x2a\x13\xfd\xd0\x77\xf2\x23\x1d\xe8\xd7\x6f\x56\xd9\xab\x1c\x2f\x9e\xfa\xbc\xe4\x63\x83\x64\xf8\xfb\x2a\x2c\x68\x3c\xa8\x19\xb7\x03\xab\x45\x3b\x11\xd3\x7a\x69\xfa\x4b\xcb\x80\x23\x98\x08\x34\xf7\xb9\x02\xad\x18\x19\xfc\x02\x92\x12\xfd\xea\x0a\xbf\x11\xde\xc8\x8c\x55\xd6\x8e\xf8\x7a\x26\xdb\xb1\x5d\xc3\xd3\xdf\xbc\xdd\xdd\x5e\xd7\x1b\xe8\x6f\x32\xc7\x6e\xe2\x22\x1d\x92\x43\x68\x3d\xf9\x51\x65\x64\xb2\x6b\xab\x5c\x84\x5d\x4d\xfe\x0a\xdc\xc7\xcb\x9f\xe1\xee\x2c\x05\x1a\xf5\x90\x8c\xe0\xcc\x3a\x90\x90\x4d\xbc\x0d\x36\x80\xed\x49\x92\xf4\x6c\xe2\x5c\x2e\xe8\x51\xc4\x14\xf0\x18\x7d\x89\x3e\x5c\x3b\x01\x89\xa7\xbb\x68\x93\xd6\x83\xf5\xe3\x39\x4c\xc0\x46\x29\x9a\x16\xa1\xc1\xb5\x69\x59\x33\xa8\x9b\xb1\x30\x30\x85\x5b\x81\xb3\xc7\x46\x85\xf7\x19\xde\x01\x60\x57\x5a\x0f\xf0\xa9\x1f\xd9\x43\x47\xb8\xbc\xbe\x12\x5d\x1d\x3f\x9c\xe7\x72\xa8\x12\x6e\x00\xf5\x63\xb3\x18\x96\x56\xd5\x52\x2c\x18\x7a\xb8\x31\xa7\xad\xe7\xac\x06\xfd\xca\xc7\xf1\xd4\x58\x82\xe5\x1f\x9b\xf5\xb4\x4a\x2d\xab\xa4\xa5\x3d\xbb\x31\x97\x0b\x4a\x0f\x12\x72\xfe\x14\x08\x7e\x0c\x3c\x7e\x45\x42\x31\x2f\xe7\x4d\x76\x7f\x21\xe7\xea\x48\x7d\x52\x84\x28\x4f\x46\xf2\x0f\x32\xc5\xb1\x6e\x1e\x0a\xc8\xd7\x96\xab\x2f\x80\xb3\x44\xe7\xa8\xd8\x4d\x5d\xe8\x23\xa5\x08\x97\x75\x2d\xc5\x49\xa4\x8f\xc1\x0b\xcd\x43\x6a\x7a\x93\xe9\x7c\xd0\x5d\x78\x30\x13\x8f\x32\x38\x79\x68\x0c\x34\x3c\x16\x46\x7d\x26\x4d\x74\x9b\xf4\x5e\x40\xf3\x9f\xbc\x3a\x00\xc4\x3b\x00\x69\x3b\x01\x56\x76\x8f\xf2\xe3\xf8\xad\x9e\xb6\x40\x50\x22\xf5\xca\xda\x66\x94\xe8\xa3\x3c\xdc\x59\xc6\x67\x3c\x44\x11\x72\x44\xeb\x03\xfd\x7f\xd6\x75\x93\x0c\x29\x4e\xdd\x29\x40\xf5\xf1\x80\x95\x3d\x91\x0c\x55\x48\x5b\x20\x57\xae\x0c\x93\x02\xf4\xa8\xe8\x31\xa5\x53\x0e\x3c\xbb\xf6\xf4\x72\x22\x40\x83\xa9\x52\xa8\x39\x0a\xb0\x0d\xc0\xf6\x9d\xfd\x88\x0e\xea\x2d\x73\x9d\x21\x8d\x6a\x66\xf2\x37\xf1\x0d\x44\x01\xaa\x75\x8f\xf8\x12\x0c\x0a\xe2\x76\x61\x27\x84\x90\x24\xf5\xa4\xcc\x57\x4a\x5b\x02\xb9\x35\x96\x68\x12\xcd\x1f\xb6\xd7\x9d\x0c\x4f\x59\xff\x80\xf0\x35\xa0\xb1\x09\xcc\xcb\x22\xfb\x08\x53\x5b\x87\x41\x49\xed\xf2\xa0\x97\x0c\x14\x88\x84\x27\xd0\x7d\x1e\xaf\xa6\x84\xa6\xd3\x45\x4e\x49\xb2\x25\x18\x4c\x6b\x99\x3e\xc8\xdd\xb8\xb5\xa3\x5e\xe4\x5f\x87\xf6\x92\x66\xd4\x90\x96\xa3\x17\xd8\x6a\xde\x27\xf4\x52\x9f\xe7\x23\x64\xd0\xb9\x58\x00\x72\x99\xd9\xde\x87\xd6\xff\x9f\xb0\x4d\x57\x3a\xea\x46\xba\xc8\xeb\x76\x47\x52\xeb\x46\x5c\xaa\xab\xa6\x89\xa6\x46\x0c\x11\x07\x30\xbd\xd0\x8b\x16\x89\xde\x7b\x05\xde\x59\xaf\x9f\xe2\x44\xac\x36\x3e\x95\xc9\x8b\x66\x93\x59\xaf\x90\x31\xa3\xa9\x3b\xa6\x31\xab\xf1\xf6\x1d\x20\xef\x7f\xc6\x88\x3b\x48\x40\xfc\x92\x67\x12\xe1\x3d\x87\x4b\x72\x2f\x6a\x79\xb1\x60\x70\xc0\x31\x13\x25\xe9\xa7\x0f\xcd\x86\x91\x6c\xfa\x1d\xa7\xf9\xd0\x56\x3a\x22\xfe\x9b\xfe\x85\x4b\x0c\x18\x6c\x86\x63\xb0\x61\xb6\x5b\xc0\x71\xe8\x39\x93\x8d\x8f\xdd\x7c\xf8\xf6\x95\x2a\x64\x67\xfa\xd8\xe5\x84\x90\xed\x2b\x26\x81\x33\x01"}, +{{0xd2,0xed,0xed,0xcd,0x85,0x32,0x06,0xcb,0xf5,0x9b,0xd7,0x4a,0x25,0xa3,0x03,0xfa,0x2d,0x6c,0x39,0x36,0xbb,0x48,0xeb,0x42,0xf6,0xd9,0x00,0xcb,0xe8,0x07,0x72,0xbe,},{0x22,0x44,0x11,0x1e,0x2e,0x76,0x9e,0xab,0x81,0x87,0x1e,0x06,0xc5,0x80,0x17,0x8c,0x23,0x5c,0x7b,0xf4,0xa5,0x2d,0x2e,0xcc,0xe1,0x18,0x87,0xa9,0xb4,0x6c,0x45,0xc8,},{0xbe,0x3c,0x2b,0x56,0x7f,0xe8,0xc2,0x08,0xc9,0x8e,0x71,0x97,0x11,0x7e,0xb0,0x1b,0x3c,0x19,0x7b,0xdf,0xc8,0x58,0x56,0x2d,0xc5,0xcd,0x90,0xf8,0xe2,0xc0,0x35,0x70,0x42,0x30,0x39,0x95,0xba,0xba,0x2f,0x40,0xb7,0x34,0x5c,0x56,0xdb,0x0b,0x46,0x25,0x58,0x0a,0xa8,0xdc,0xc4,0x8d,0xf6,0x01,0x9d,0x23,0xa8,0x38,0xea,0x71,0x72,0x02,},"\x80\x70\xbc\x0d\xb0\x89\xa5\x92\x54\x46\x01\x9b\x7e\x40\x3c\x74\xec\x78\x90\x3e\x4b\xd5\x4b\xc1\xd0\x8a\x54\xa6\xf0\xed\x75\xa8\x5b\x76\x3f\xf5\x4d\xc3\x3a\x26\x00\xcc\xb4\x57\xfd\xba\xea\xe5\x48\x47\x7f\x6d\x69\x47\xae\x26\xde\xb7\x1e\xac\xd1\xd2\xd6\x22\x82\xa0\x83\x84\x3b\xe4\xe5\x93\x1d\x91\xc9\x3b\x62\x82\xc5\x88\x07\xce\x8f\x0d\x88\x0b\x14\x38\xda\xd8\xfd\xcb\xa8\x61\x2d\xf7\x3b\x9f\xaf\xf3\xa9\xf7\xdb\x30\x05\x25\x05\x36\xaa\xbd\x98\xae\x02\x7a\x89\x5e\x10\xb5\xcb\x7b\x69\x87\x5c\x0f\x39\x93\xaf\x24\x51\x92\xf4\x39\x3e\x9c\x4d\x34\x05\x74\x6e\x31\x1d\x3a\x91\x44\x7f\xcd\xbd\x73\x06\xb6\x02\x0c\x93\x3b\xba\xb9\xe3\x9d\x13\x49\x16\x25\x03\x5c\x9c\x63\x6e\xfa\x17\x39\xc3\x58\x87\x10\xa8\x79\xd9\xe3\xce\x17\x64\x61\x6f\x10\x82\xe8\xdf\xf5\x75\x59\xc3\xf5\xa5\xd7\x6d\xd3\x01\x12\x4f\xa4\x89\xfb\x94\x9e\x9e\x03\x9d\xd4\x62\x1b\xda\x60\xf0\xb8\x6b\x31\x1e\x78\xed\x0a\xb3\xb5\x28\x96\x50\x44\xb2\x3d\x78\xee\x2f\x81\x06\x1f\x8e\xdb\xd6\x92\x99\x33\xd1\x8c\x02\x07\xde\xc4\xb5\xb6\xb2\xfa\x4a\xca\x27\x47\xcf\x5b\x11\x0d\xf0\x0b\x0c\x98\x27\xbd\xb3\xd9\xdb\x2c\x7b\x03\x28\xd4\x0d\x99\xe1\xf6\xb2\x28\xe4\x0d\xad\xae\x78\xae\xda\x02\x89\xb6\xa2\x3d\x4e\xb5\x83\x70\x88\xe5\xd8\x84\x13\x63\x2c\xcc\x22\xe2\x1a\x73\x76\x8c\x67\x32\x01\xe9\xa8\xd8\xdc\x6e\xb6\xf7\x39\x7f\xed\xbd\x39\x8d\x26\xf9\x69\x2c\xa7\x2f\x6d\x6c\xf0\x56\xaa\xac\x50\xac\x2f\x3b\x26\x6d\xbe\x5e\x7b\xe7\xa0\x24\x77\x45\x78\xea\xd5\x85\x24\x5d\xaa\xa7\x3e\x0a\xaf\x83\x3c\x07\x0b\xa4\xb2\x04\x4c\xcb\x5e\x5c\xd1\x6f\x9c\x0a\xd9\x2e\xa8\x44\x80\x55\xdd\x82\x8c\x79\x93\x5a\xa6\xc0\x74\x1f\x9e\x2b\x81\x03\x24\xfd\xc6\xe6\x1e\x84\x2f\x94\x57\x22\x68\xbf\x7d\x5a\xdf\xa7\xab\x35\xb0\x7f\xb1\x9e\x78\x15\xa8\xaa\x5d\x81\x13\x01\x30\xac\x5c\xda\x8a\x47\x51\xee\x76\x03\x8c\x0a\x6b\xc2\xfa\xba\x4c\x49\x7e\x62\xb9\xf1\xf1\x94\xb8\xa5\x99\xb0\x77\x01\x81\x4b\x6d\xfb\x7d\x84\xbc\xdd\x5b\x7b\x5b\xc2\x24\x9f\x1d\x38\x45\xef\xf9\xef\x8c\xc7\x32\x85\x35\xd7\x0d\x53\xc7\xaa\x0c\x73\x05\x90\x1d\xe7\xc4\xed\x2f\xe1\x83\x82\x65\xd4\xa4\x17\xb8\x76\xad\xbd\x88\xeb\x93\x3f\x27\xc9\xaa\x48\xc8\xc7\xe3\x4e\x48\x14\x7c\xcf\xfb\x2f\xb6\x1a\x34\x8f\xea\x13\xef\x67\xcd\xf2\xe0\x39\xe3\x3f\xd8\x9e\x2c\x1a\xd2\xa4\x25\x4e\x3b\xf7\x48\x45\x2a\xa8\x3e\xfe\xca\x46\xe7\x80\xed\xe1\xd1\x3f\xf4\xcc\x5e\x7d\x01\xed\x45\xeb\x8c\x74\x81\x8d\x48\x60\xaf\x47\x59\xa8\x3e\x14\x88\x96\xab\x68\x73\x43\x95\x76\x0e\x00\x14\x6b\x79\x3c\x3e\x72\x89\x8a\xa0\xb3\xc5\xe0\xc1\xd3\xfd\xf1\x21\x58\xd2\xe8\xff\x11\x23\xa3\xa0\xc6\x4c\xf6\x37\x4a\x7f\x44\xf1\x1a\x57\x5e\x48\xa3\x79\x18\x1b\x30\xa4\x86\x5c\xfd\x02\x2a\xa9\x83\x27\x56\x35\xce\x4f\x2c\xc4\x0b\xfe\x06\x60\x67\xec\x4f\xe2\x41\xfa\x04\x7b\x55\x27\x0a\x1a\xd0\x77\x6c\x5f\x96\x86\x10\x14\xcb\xf4\x0a\x04\x32\xc5\x59\xf2\x2d\x79\x34\x2b\x79\xf8\xe7\x04\x2d\xcc\xfb\x1c\xf5\x0f\x83\x08\x5f\x80\x63\xfb\x18\x87\xed\x2d\xfc\x9d\xb7\xef\xc9\x6d\xaa\x0f\xf2\xbc\x4f\x52\x33\x5b\x02\x11\x2d\x16\x39\x2e\x13\x4c\x02\x23\xde\x45\x8f\xc0\x72\xcc\x22\xbf\x9e\x7e\xab\xc0\x62\x08\x18\x0a\x57\xe7\xce\x48\x05\xee\x4e\x0f\xc0\x15\x84\x09\x98\xfd\x56\x86\x44\xa0\x38\x6b\x3d\x8e\x7d\xda\x52\xab\xf6\x4f\x7d\xd0\x08\x68\xfc\x84\xf0\x36\xca\x8a\x78\xe9\xba\x81\x71\xca\x90\x26\x7c\x74\xe6\x15\x9a\xca\xc7\xaf\x5b\xf2\x37\x59\xab\xc5\x3d\x82\xe7\x93\xdb\x87\xfd\xad\xe1\x36\x33\x54\xff\xdc\xb0\xbd\x4c\xc9\x21\x3f\x5c\x84\x54\x45\xfc\x64\x9b\x2a\x1f\x32\x9f\x9d\x41\xd8\xa0\x31\xab\x46\xb4\x72\x16\x0f\x03\x43\x4b\x4b\x6b\xc5\xa4\x01\x52\x4d\x61\x79\xad\x66\xf9\xe2\x21\xc9\x06\x7f\xc8\x7f\xe4\xa7\x7e\x21\xe8\x02\x3b\x61\x69\xeb\xf1\x09\x0c\xd5\x56\xa9\xbe\x50\xb9\x18\x7f\xe4\x60\x7c\x59\x25\xe6\x0b\x41\x4f\x6a\x5c\xbf\x8a\xfa\x15\xed\x0e\xb3\x4b\x67\xb4\xc9\xc5\xd5\x4a\xdb\xe6\x40"}, +{{0xb5,0x69,0xf7,0xc1,0xaa,0xdf,0x56,0xed,0x1b,0x5f,0xa1,0xb6,0xfa,0xd6,0x48,0xd0,0xdc,0x54,0x4f,0xf8,0xfc,0xd1,0x73,0x78,0x0d,0xe4,0x1a,0x7d,0x4d,0xe6,0x0c,0xb6,},{0x9e,0xff,0xa4,0xae,0xd9,0xc6,0x58,0xe4,0x34,0x60,0x71,0x43,0x44,0x68,0xa0,0xb8,0xa0,0x4e,0xcf,0x78,0x41,0x69,0x9d,0x63,0xe8,0x88,0x7c,0xe2,0x05,0x57,0x0c,0xea,},{0x2e,0x32,0xba,0x05,0x56,0xbd,0xe9,0x74,0xd7,0xa1,0x9b,0x3b,0x9a,0x1e,0x92,0xf1,0x83,0x92,0x4c,0x4b,0x74,0xc5,0xd7,0x51,0xb5,0xab,0x3d,0x00,0x79,0x67,0x01,0x6e,0xc0,0x3a,0xfe,0x91,0xd7,0x42,0xfb,0x22,0xb6,0x3e,0x5e,0x55,0xb2,0xfc,0xb6,0xc6,0x1a,0x46,0xe9,0xdc,0xe7,0xfe,0x9f,0xa3,0x0b,0xbf,0x66,0xae,0xf4,0xb8,0x5f,0x09,},"\x7c\x5a\xa4\xdc\x80\x78\xaa\x77\xe8\xb3\xb7\xfe\xe6\x10\x84\xcf\xad\x76\x47\x62\xf1\xef\x26\xd8\xde\xb7\xf2\xf3\xb1\x86\xdf\xc7\x72\x48\x75\x50\x19\x78\x45\xfb\xa2\xf4\xc2\x3c\x83\x5b\x9b\x58\xdd\x0b\x63\x5c\x64\x91\x35\x13\x7f\x24\x8f\x5e\xf7\x13\x56\x4d\xe3\xc9\x66\xef\xa5\xf6\xdb\x6b\xea\x9e\x30\x97\x07\x49\xf8\xe8\x72\xd8\xd7\xae\x45\x35\xb7\x5e\x17\x6e\xa0\x48\x9b\x91\x5f\x34\x71\xd8\x27\xeb\x5b\x44\x45\x86\x48\x8c\xfc\x3f\xa6\xa4\x50\x82\xda\xcb\x82\x64\x95\xe5\x0a\x3b\x5d\xc6\xbb\x93\x0a\x33\x1f\x30\xc3\x85\xbc\x3b\x24\xce\x70\xb8\x95\x96\xdb\x6b\xfb\x68\x7d\x99\xa5\x81\x98\x7c\xa8\x76\xea\x0e\x75\x76\x96\xb3\xfc\x03\x77\x9a\x65\x81\x30\xc4\x10\xb3\x44\xed\xac\xc4\x27\x7d\x44\x84\x54\x99\xd6\x78\xe1\x41\x4f\x15\xf3\x6e\x16\x63\x35\x18\x95\x69\xce\xf3\x56\x7a\xc2\xe3\xab\x82\x1c\x91\xc9\x32\x74\xf5\xc2\x8a\x5d\x1f\x7c\x1b\xf5\x09\x9b\x10\xf8\x4e\xcb\x13\xa4\xe4\x53\x8f\x66\x49\xbf\x74\xf7\x39\x4b\x70\x3e\xf5\x36\x49\xd8\x15\x16\xcb\x1d\xb5\x21\x41\x60\x65\xcf\x9f\x27\x6a\xb8\x0c\x93\x08\x89\x7a\x27\xdf\xe3\x7e\x5e\x14\x2f\x18\x19\xb8\xd3\x48\xdf\x50\xa0\x46\xa1\x28\x88\xe3\xb7\xf2\xdc\xc7\x0f\x52\x18\xd1\x5e\xbb\x9a\xa7\x29\x1a\x1a\x92\xac\x44\x5c\x51\xd3\xa5\x3d\xd6\x91\xef\xff\xcf\x5a\x01\xe8\x76\xa7\x2a\xa4\x81\xeb\x4f\x12\x1a\x07\x23\x97\xd8\xcc\x93\xbb\xc2\xc9\xa6\xc2\x8c\xc8\x9b\x11\xff\xc0\xe9\x10\xd8\x2d\x9d\x62\x98\xa3\x67\xa0\xe1\xe3\xe8\xc8\x65\xe4\x32\x6a\x31\x9b\x22\x66\x6e\x52\x9f\x19\x98\xf1\xb3\xc8\xef\xb5\xfc\x21\xcc\xe9\x70\x40\xfb\x62\x47\xda\xa0\x00\x0a\xc5\x55\x4d\x89\xe7\xb2\x71\x59\xdd\x0b\x18\x00\xb7\x60\xb7\x9c\x91\xef\x6e\x97\x0b\x1e\x6c\x5f\xf4\x24\x42\xb1\xb3\xae\x4d\x3c\x43\x9e\x08\xec\x2f\x6b\x94\x17\x73\x87\xca\x5c\x01\xdf\x6f\x07\xf8\xe3\x4d\x25\xed\xbd\x49\xd8\xb7\x4e\x31\xa5\xe6\x5d\xec\x1f\x87\x60\xfa\x22\xc0\x0e\x6f\xb1\xcd\x55\x5b\xe6\x8b\x0a\xb4\x35\x99\xf0\xb9\xf4\xa5\x4a\x7c\xcb\x06\x26\x83\x89\x5d\x5e\xf6\x6d\x24\xdf\xb1\x67\x8c\xb0\xd0\xe8\xc8\x01\xd8\xe5\xff\xe7\x9b\x91\x39\xfc\x96\xd1\x18\xeb\x39\xb9\xc8\xd4\x40\x44\x89\x32\x5d\x45\xb4\xa3\x20\x2b\xea\xdc\xa6\x6f\x83\x1c\x68\xef\xb8\x15\x94\x15\x81\x93\x0e\xad\x29\xfd\x5f\x21\x1b\x90\xe7\xa3\x9f\x0d\x4f\xf4\x8c\x62\xa5\x45\xe2\x8a\xc2\xce\x29\xbe\xdc\x35\x6d\x92\xfc\x00\x34\x71\x76\xd7\x76\x23\xe0\xe1\x80\x9e\xff\x3f\xe6\x2b\x75\xa7\xd9\xde\xb7\x27\xd8\x61\x72\xd1\x4e\xdb\xf2\x78\x9a\x57\x14\x3c\x69\x92\x5c\x91\x7d\x43\x3b\x46\x83\xb0\x69\x3b\x3c\xd9\xe7\xe3\x77\x99\x64\x10\x72\x7f\x5e\x6f\xb8\xf5\xcc\xd1\x86\x0a\x20\x29\x4e\xcf\x33\xfa\xf9\x7a\x1e\x0f\x85\xb7\x61\x44\x7d\x47\x61\xb9\x6e\x4d\xf1\xb3\x12\xbd\x41\x4c\xab\xcf\x49\x84\x97\xb0\xea\xd6\x7c\xd1\xe5\x90\x1b\xbf\x3a\x16\xa8\x89\x1c\xcc\xed\x8a\x90\x7d\xf8\x87\x26\x95\x2d\x4a\xb3\x70\xa6\xb7\xdf\x29\x42\xcf\x13\x61\x5a\x5b\xc1\x2b\x4e\x10\x6d\xc3\x01\x3c\x68\xb8\xfb\x90\x63\x99\xdf\x15\xf1\xaa\x90\xd5\x6a\xa9\x74\xb1\xd2\xb2\x8c\x1a\x84\x53\xb9\xbf\x07\x92\xa5\x1c\x97\xce\x8a\x12\xaf\xc9\x34\x1b\xb4\xc0\xc3\x7b\x12\xdc\xb1\x2c\x63\x94\x49\x77\x5d\x9a\xc5\xc2\xec\x49\x67\x3d\xa5\xaa\xf7\x49\x3e\xd5\xf1\xf2\x11\x6e\xae\xf7\x2b\xb7\xfb\x1e\x09\x3e\xde\x2c\x26\x31\x7f\x4f\x4b\x6a\xd5\x85\x34\x62\x05\xdf\x91\xa6\xe9\x6b\xc6\x6d\x30\x64\xbc\xe9\x52\x39\x8f\xfc\xe8\x80\x71\xed\x9f\xf2\x75\x0c\x65\xc0\xc3\x04\x12\x5a\xc2\xca\xdc\x4f\xef\x71\xa8\x18\x73\x24\x96\xa8\x4c\xa5\x74\xd4\x82\xd5\xa3\xbb\xa2\x0e\x16\xdd\x2f\xa2\x4d\x32\x70\xf6\xc6\x09\x92\xf7\xf6\x3e\x88\xf5\x2e\xff\x62\x22\x99\x8e\xb4\x41\x67\x27\x38\x43\x75\xf5\x9f\x00\xe4\x75\x12\xee\x46\x4c\x31\x84\xac\xea\xff\x3c\xcf\xb0\x6b\xd1\x5c\x18\x3c\x5e\x48\x59\x26\x28\x8b\x99\x7b\xfa\xaa\xec\xf6\xec\xbb\xf7\xd2\xab\xf4\x90\x6d\xf7\x6b\x12\x77\xc5\xf5\xa8\x7e\x68\x17\xb1\xc6\x36\xe9\x1e\xfd\x7e\xcc\xf6\x4f"}, +{{0x32,0x34,0x65,0xd0,0x31,0x3d,0x10,0x01,0xa2,0x61,0xab,0xfd,0x44,0xfe,0x65,0xc3,0x8c,0x9a,0x00,0xca,0x0f,0x20,0x33,0x5d,0x65,0x53,0xde,0x49,0x26,0x99,0xfc,0x46,},{0xe2,0x2f,0x16,0xbd,0x4c,0xc7,0xe9,0x4c,0x46,0xba,0x31,0x96,0x1a,0xf8,0xc5,0x83,0xf9,0xd2,0x71,0x8c,0x68,0xf7,0x3d,0x85,0x06,0x9f,0x60,0x8e,0x15,0xba,0x87,0x66,},{0xda,0x3a,0xad,0xb3,0x43,0x60,0xb2,0xda,0x0c,0x26,0x54,0x2e,0xa7,0x1d,0xef,0xa8,0xa0,0xbf,0x7f,0xbd,0xae,0x3e,0xe9,0xe1,0x1c,0x84,0x08,0x4a,0xd0,0x5c,0xce,0x7b,0xa7,0xd9,0x4d,0xe2,0x5d,0x85,0x63,0x98,0x26,0x16,0xbc,0xdb,0x5b,0xb6,0x39,0x5f,0xac,0x4a,0x7e,0x84,0xbc,0x77,0xe2,0x1e,0xd3,0x6d,0xf7,0x5d,0xec,0x99,0x0b,0x06,},"\xbb\x10\x82\xe1\xcf\xdc\xd2\x9b\xfc\xa2\x46\x4d\x5c\xe4\x46\xb5\xba\x65\x4b\xa5\x8c\x22\x53\x8d\xa9\x26\xb8\x30\x3c\xab\xfd\x28\x4a\x7b\xd5\x99\x4a\x78\x6f\xa6\x6a\xed\xf0\xe1\x5f\x20\xc3\x82\xcd\xac\xf3\xd1\x45\x57\xff\x7a\x82\x67\xfa\x04\x67\x2c\xac\xab\x76\x70\x08\x65\x0a\xa9\xb4\xa7\xc9\x07\x1c\x47\x99\xf1\xff\xa4\x5c\xa4\xd5\x86\xe0\x20\x47\x44\x4c\x14\x23\x19\x43\x46\x7a\x3a\xba\xef\xa5\x39\x59\xda\x22\x6e\xb0\xc1\x53\x92\x01\x97\x60\x15\x96\x97\x74\x82\x93\xc0\x25\x56\x87\x83\x58\x8a\x39\x10\xe7\x8e\x5e\xa4\x27\xc4\x40\x7a\x89\x01\x06\x1b\x8b\x99\x2b\x82\xa2\xdf\x58\xc0\x4a\x1b\x2c\x5f\xad\x11\xc6\xb3\x79\x85\x6c\x2e\x0f\xef\x8a\x95\x0d\xe7\xe0\xfc\x22\x31\x03\x09\xe0\x8b\x13\x2b\x0c\xce\x4f\xc1\xec\xbf\x94\x57\x4a\x38\x8d\x4a\xe3\x66\x75\xd3\x29\x9a\x95\x15\x54\xeb\xf1\x80\xeb\x38\x1e\x1b\x5d\xf9\x77\xd9\x38\x43\x38\x91\xbc\x47\x8d\x76\x81\x85\x0b\x9d\xc9\xc5\xc7\x69\xd4\x05\xf5\xd8\x83\x9f\xc9\x73\x61\xd6\xcb\x30\x6c\x20\x30\x26\xcf\x2e\x2b\x3d\x39\x84\x9e\x1f\x4b\x12\x25\xeb\x25\xef\x8a\xcd\x40\xb0\x06\xf2\x0c\x64\x4d\xb6\x50\xc7\x5d\x38\xc0\xfc\xdd\x48\xf5\x98\xc7\xb4\xa6\x01\x06\xe6\x9e\x19\xcd\x71\x25\x89\xce\xdc\xcf\x50\x86\x4e\xa5\xf9\xe9\x5e\x01\xf1\xdd\x85\xc7\x51\x4f\x2c\x94\xb2\x83\x59\xde\x41\x32\xb8\x8c\x3e\xe1\xd1\x0a\x80\xa9\xfa\xdf\xb6\x90\xe3\xd8\x86\x41\xb3\x16\x8f\x0b\x89\x6a\xf8\x99\x0a\xdb\xf0\xe4\xf8\xe9\xd3\xf9\xd4\xcd\x31\x4e\x12\xc3\xbc\xe0\xcc\x87\x38\xe0\xcf\xc1\x90\x5b\xe5\xef\xa0\x71\xf7\x10\xb3\x2f\x8e\x58\x98\xc6\x0e\xb1\xbb\x8f\xee\xb7\x40\x00\x56\x0f\x41\xcb\x2e\xbc\x32\xb2\x60\x0b\x69\x80\xa2\xa4\x06\x4d\xfa\xa3\x79\x7e\xc4\x4c\xfb\x72\xd3\x79\xf8\x09\x73\x79\xca\xd6\x7e\xcd\xc0\xc3\x24\x14\xfa\x41\xc7\x2b\x1b\x9e\x4e\xdf\x55\x18\xcb\x39\xfe\x90\x92\xb4\x39\xaf\x3a\x4e\xbd\x5a\xfe\x79\xbe\xdc\x0e\xa8\xbf\x17\x47\x9a\x28\x21\xf5\xe9\xbd\x91\xd7\xf4\xaa\x5e\x38\x46\x99\x52\x37\x19\xb6\x95\x7f\x82\x36\x7c\xd8\x5f\xea\x9d\xed\x62\x36\xa2\x07\xc9\x4c\xb3\x73\xe3\x39\x3c\xb4\xfe\x11\xf9\x0a\x1b\x87\x79\xe4\xab\x4c\x34\x66\x13\x6b\xf2\x1e\x2a\xab\x78\xf7\xd2\x72\x6d\xb6\x41\x4f\xa5\xc4\xa3\xf7\x31\x3a\xd2\x11\x6a\x6d\x7c\xe4\x0a\xaa\x10\x01\xc2\x70\x4d\x5b\x05\xae\x54\xc7\xcc\x6f\x56\x72\x17\xf1\xa4\x7b\xfd\x0e\xe7\x38\xea\xea\x5e\xad\xb5\x37\x10\x75\xbe\x07\x6c\x87\x50\xae\xce\xfc\x41\x7e\xa7\xbf\xda\xac\x3c\xc3\x8b\xf1\x6c\xc2\x6d\xf7\x60\x0e\x3c\x7e\x8e\x43\x1f\x26\x76\xfc\x2a\x8c\x43\xa6\xa1\x43\x68\xba\x62\xbb\x32\x43\x9a\x06\xbe\xac\x38\xa0\x47\xb3\x74\x5e\x26\xf4\x07\xad\x82\x3d\x6a\xd1\xc0\xb6\xa4\x43\x41\xe1\x5f\xc9\xb3\x31\x21\x4f\xfc\x89\x69\x82\x11\xb0\x51\x33\xd6\xd3\x43\x3b\x5d\x59\xf7\xab\x4d\x10\x9e\x54\xe4\xc5\xd6\xf3\x2f\xcf\x72\x30\xfa\x4e\x25\x28\xc8\x61\xbb\x21\xcc\xc9\xe3\x10\xe9\x49\x7e\x07\x7e\xa6\x75\x51\x0d\xa7\x12\xb1\xa5\xdf\x57\x5c\x5d\x1b\xf7\x36\x2d\x07\x11\x80\x03\x9a\xec\xfa\xa5\xc8\x57\x3c\x24\xc0\xf4\xeb\xe8\x1c\x2f\x88\x9a\xed\x3d\xe5\xa0\x00\xbe\x12\xfe\x3d\x0a\xf2\xdc\x2c\xd4\x24\x0e\x31\x4a\x17\x6c\x55\x3e\xfd\x5c\xba\x79\x8d\x9f\xf1\xe3\xd4\xbd\x9e\x90\xbb\x81\x13\xe3\x84\x9d\x73\x5a\xfa\x4a\xf6\x94\x5c\xc5\x7d\x4c\x37\x8d\xb8\x4f\x20\x6e\xf7\xea\xb1\x1c\x63\x7a\x7f\x72\x60\xf1\x22\xa9\x7d\xff\x67\x47\xe9\xb4\xc1\x74\xed\x0d\x64\xf9\xef\xd7\xfc\xcc\xf9\x81\x51\x9e\xc5\x80\xa8\x18\x25\x47\xd1\x79\x68\xc4\x01\x51\xfd\xf6\xd5\x4b\xc5\x7a\x91\x15\xf0\x40\xfa\xb5\xc1\x00\xde\xb0\x39\x12\x2b\x7d\x2b\xfd\x98\xb6\xad\xf3\x8f\x42\xb2\x96\xea\x3b\x37\x8a\x90\x42\x59\xb7\x5d\x60\x70\x3b\x48\x40\xb3\xf5\xda\x09\x62\x0a\x54\x77\x62\x80\xe9\xca\x9e\x8c\xd9\x24\xae\xd2\xb5\xdd\x2b\x49\x83\x4e\x58\x1c\xae\xd5\x27\x1c\xd7\x8c\xe0\x8e\x4b\xba\x49\xb5\x9c\xd7\x7c\x1b\x62\x76\x64\x91\x48\xab\x72\x47\xf9\x7f\xc0\x13\x16\x35\xde\x47\x4d\x3c\x23\x49\x3c\xa9\x8d"}, +{{0x60,0xff,0xdb,0xae,0x00,0x3f,0xa2,0x79,0x4f,0xca,0xbb,0xf8,0xf5,0xb4,0x16,0x44,0xfe,0x3a,0x7f,0x44,0xed,0x6c,0x83,0x41,0x93,0xda,0x07,0xa9,0xdc,0x5e,0x26,0x65,},{0x35,0xb5,0xeb,0x31,0xab,0x55,0x64,0x92,0x57,0x8b,0x3d,0xbd,0x6c,0xf1,0x68,0x7d,0x1f,0xdb,0x21,0x6a,0x72,0x58,0x18,0x07,0x96,0x63,0x48,0x2f,0x22,0x1c,0xe4,0x21,},{0xb8,0xf3,0xe1,0xf3,0x78,0x5a,0x2a,0x39,0xbb,0x08,0x6c,0xa4,0x65,0xc0,0xab,0xf0,0xa3,0xe8,0x74,0x43,0x22,0x5a,0xc6,0xe9,0x66,0xed,0x9b,0x45,0x31,0xc5,0x4a,0x89,0x4a,0x9a,0xbd,0x01,0xac,0x31,0xb8,0x57,0x57,0xfe,0x75,0x30,0x8c,0x95,0x94,0xff,0x65,0xf9,0x7c,0xdd,0x91,0xe8,0xd8,0xa9,0x3c,0xf1,0x2b,0x9e,0x6d,0xbe,0xe9,0x0b,},"\x3f\x8f\xf2\x0b\xb4\xf0\x08\x34\xc8\x0f\x2e\xe6\x89\x3d\x6f\x73\xbf\x7a\xce\x27\x29\x60\x1b\xb2\x6a\x0f\xb2\x72\xa4\xd0\xee\xa1\xfa\xe1\xd3\x06\xac\x2c\x5f\x32\xad\xd6\x01\x35\x85\x1d\xa2\x7e\x4f\x12\xe6\x4e\xa5\xe9\xe9\x96\x0b\x13\x83\xb0\x4c\xe0\x5a\x98\xb0\x41\x4d\xad\x97\x1e\xa9\x89\x44\x87\x1d\x41\x5c\xc2\xc4\x6d\xa4\x03\x97\x6d\x9f\x21\x93\x89\x58\xd4\xea\x8c\x79\x03\xb1\x4f\x2a\x44\x85\xfd\x69\xaf\xb2\x4a\xbe\x10\x2d\x8f\xec\x26\x6f\xb4\x68\xb4\x11\xeb\x20\xa3\x39\x67\x7d\x88\xeb\x31\xc9\x97\xb4\xdc\x88\x56\x13\xf0\xbe\x7c\x70\xda\xf8\x56\xa3\xdf\x92\xda\x96\x02\xfb\xa2\xe6\x74\x9d\x2f\x42\x6b\xee\xf6\x86\x62\xd5\xb0\xc2\xfd\x31\x32\x1b\x22\xb5\xec\x59\x7d\xa5\xd7\xe6\xa2\x88\xeb\xd9\x44\x3c\x5f\x39\xeb\x87\xdc\xf4\xa5\xad\x9d\x56\xc6\xba\xf6\x08\x09\x96\xa7\x79\x36\xbd\x87\xdc\x3c\xb4\x2e\xd4\xc4\xd4\x26\x88\xa9\xe1\x93\x82\x9b\x76\x1f\xf3\x20\xe2\xa6\x6c\xc6\x76\x48\xe7\x0e\xea\x3a\x1f\x2f\x9b\x9d\x5b\x42\x02\xfb\x5a\x39\xe9\xad\xc6\x09\x08\x6a\x9b\xe2\xa8\x32\x3a\xc6\x69\x31\xbd\xf6\xc5\x04\xd3\x33\x62\x11\xe4\x6f\xde\xfc\x48\x1f\xbf\x17\xf6\x13\xda\xb1\xfc\x5c\x09\x7c\x92\xdb\x06\x09\x90\x6d\x78\xb2\x5a\x45\x5a\x30\x45\x71\x8e\xfd\x3e\x3b\x14\xe2\x52\xb1\xae\x59\xc7\xc3\x89\x3e\x31\x91\x3b\x2c\x26\x4c\x0f\xfc\x3b\x60\x6c\xa1\xb0\x1d\xc4\x7e\xe8\x28\xa0\x8e\x46\xaf\x60\x4e\x59\x0d\xef\x44\xd2\x7a\xab\x93\xa4\x03\x25\x1f\xca\x07\x72\xe9\xdf\x0f\xab\x7a\xf0\xcb\xc5\x18\x1e\xfd\xa4\xda\x91\x3d\x8e\xb6\x45\x2f\x6c\xec\xbd\xa2\x04\xbc\x72\xd7\xc9\x90\xf6\x0c\xe0\xdd\x83\xc6\x34\xe9\x12\x23\x60\x91\xb0\xa6\x67\x3a\x7c\x89\xea\x59\x30\x8d\x55\xbd\x7e\x63\xa8\x52\x67\x74\xcb\xdd\x7a\x13\x39\xfa\xc2\x12\x4c\x90\x22\xab\xd6\xfe\xce\x7f\x2d\xae\xdf\xd8\x7f\xa6\x83\xdc\x0e\x3e\xf4\x08\x06\xa0\xab\x19\x87\x69\xd3\xa9\x9f\xe8\x1a\x99\xb6\x86\x00\x31\x90\x87\xaf\xa4\xea\x79\xd7\xee\x45\xda\x9c\xd4\x08\x09\xf4\xee\x8f\x4e\x25\xa0\x17\x75\x21\xee\x9d\xba\x8b\x56\x21\x2e\x88\x71\x9b\xb7\x36\x73\x36\xf4\xa7\xbc\x71\x22\xb4\x1a\x7d\xfa\xa2\x67\x2f\x92\xf2\x34\x03\xa1\x0c\x4f\xb2\x53\x88\xc6\xb2\x00\x81\x09\x3d\x49\xf3\xbe\x8a\x9e\x1c\x63\x4e\xf7\xba\x96\xb6\xd5\x23\xdd\x6f\xf6\x13\xc0\xa2\x3b\x60\x45\x70\x26\xcd\x48\x5b\xa8\xdb\x61\xd8\x0a\x0d\xc6\x59\xd9\xaf\x42\xa3\x8c\xae\x77\x7f\xec\x68\xe3\x9c\x52\x98\x6f\xf9\xfc\x20\x78\x9c\x10\x58\x51\x07\xc0\x40\x47\xb6\x6b\xa1\x4e\x93\xfb\x90\x4e\xa9\x0d\xf7\xac\x9f\x01\x54\xc9\x6f\x32\x36\xac\xf6\xdc\x8b\x44\xf5\x54\xc0\xcd\x51\x31\x93\xe5\xdf\xd8\x7e\x08\x5a\xd4\xb3\x8a\xa4\xc5\xe3\x6b\x24\x27\x72\x20\x88\x81\x6e\xcd\x2b\xc3\xa3\xdd\xa0\x1e\x4f\xb3\xff\x5e\xec\x7a\x64\x17\x32\x2b\xa6\xa2\x77\x73\xd2\x44\x95\xa8\x39\x19\x4a\x4a\x58\x2f\xe5\xab\xdb\x8b\x5d\x53\x3a\x24\x26\x25\x89\x24\x1f\xc8\x1f\xdf\x5e\x79\xfd\x26\x77\x64\x28\xf8\xe1\xce\x9e\x92\x6c\xf2\x72\x71\x6e\x75\x83\xab\xfc\x67\xa9\x4a\xae\x08\x16\xc1\x00\x0a\x19\x61\x70\xbb\xff\x1f\x45\xe5\xed\x9e\x26\x7a\xce\x1e\x4d\x91\x5d\xce\x72\x16\xc5\xf4\x04\xde\xf6\xfe\x2b\xd8\xb2\x8b\x2e\xcc\xf3\xe2\xae\xa0\xc0\xd6\x62\x63\x90\x27\x4e\x47\xe7\x45\xed\x3a\x23\xbc\xfd\x21\xd2\x84\xc3\x95\x37\x9d\xc0\x20\x80\xf0\x79\x36\xbc\x15\x4e\x7b\x99\xee\x73\xdb\x18\x8b\xd2\xa3\x94\xe0\x3a\x01\xff\xe2\xd1\xb3\x30\xce\xb7\x21\x58\xf9\x58\xc7\x16\xa8\x17\x11\xdb\xf6\x5a\xff\x8c\xd1\x2f\x5d\xfa\x53\xb3\x76\xeb\xb8\xb9\x8f\x86\x28\xf1\x7e\xf8\xb2\xab\x9c\x0b\xb6\x84\x12\xf4\xe3\x47\xa6\x33\xe2\xf8\xda\x1a\x55\x6d\x96\xf4\xaf\x72\x11\xc0\x78\x07\x9c\x10\x54\x1c\x07\xdc\x37\x22\xd1\x8d\xab\x8f\xa8\xbc\x49\x25\xab\xa5\xc9\x66\xf8\x05\x04\x03\x22\xdf\xbb\xbe\x87\xfb\xfe\xb1\x96\x1f\x5c\xcd\x40\xa9\x1b\x99\x7e\x54\x31\x5a\x7e\xef\xc3\xa4\x7b\xb0\xc8\x7d\xc2\x37\x55\xce\x72\x27\x57\x49\x96\xf4\xbe\x7a\xa3\x44\xfe\x0d\x17\xb9\x7b\xc5\x0c\x58\x38\xf9\x92\x92"}, +{{0x17,0x4e,0x99,0x3d,0x9b,0x81,0xf2,0xaf,0x67,0xe9,0xff,0xb8,0xeb,0xd5,0xda,0x41,0x79,0x66,0xa9,0xe7,0x7f,0x66,0xc6,0x5c,0x76,0x77,0x38,0xfe,0x83,0x57,0xd0,0x7c,},{0x3b,0xb7,0x38,0x6f,0x1b,0x1c,0xbf,0xae,0x55,0x37,0x03,0x83,0x3e,0xbc,0xbf,0xe2,0xdf,0xff,0x8c,0x89,0x9a,0x07,0x92,0xd7,0xce,0x23,0x22,0xb5,0xba,0x64,0x5a,0x5f,},{0xe6,0x07,0xbc,0x9a,0x53,0x60,0xb3,0x1d,0xa5,0x6b,0xe1,0xc5,0x44,0xc2,0x00,0x02,0x84,0x95,0x1d,0x86,0x89,0xf4,0xb7,0x22,0xbc,0x46,0x73,0xa0,0xc8,0x48,0x9b,0x84,0x48,0x3e,0xd8,0xe7,0x6e,0x29,0x7e,0xa0,0x46,0xe8,0x5b,0x37,0xba,0x56,0x30,0x58,0x5e,0x53,0x75,0x56,0x6a,0x18,0x7a,0xfb,0x56,0x96,0x66,0x1e,0x5b,0xfd,0xc1,0x0e,},"\xa4\x01\x75\x0a\xfc\x48\x37\xdf\xe3\xaa\xcc\x28\x4a\x59\x71\x45\xdf\xef\x02\x62\x9e\xf8\x7b\xd0\x93\x8d\x44\x39\x79\xdf\x76\xf2\x9f\xcd\x66\xa5\xb7\x1e\xa8\xab\x78\x72\x77\xe3\x05\x6f\x6e\xa1\x1b\x08\xbd\x23\x89\x79\xf9\xd3\xb0\x62\x53\x8c\x4d\x60\x40\xa8\x6b\x6e\x32\x04\x7a\xec\xc5\x9c\x23\x77\xad\x0e\xa4\xc4\x0c\x79\xff\x9f\xe9\x8c\x95\x8b\x2b\xf2\x5f\x2f\xd6\x34\x24\x32\x63\x6f\x5f\x7d\x5b\xb0\xd2\xec\xf1\x81\x83\x42\x6c\x73\x14\x79\x84\xd9\x5b\xbe\x16\x2e\x11\x97\x2d\xdb\x78\xa2\xa7\xc3\x45\xc5\xc0\xbb\xba\xba\x9c\xf3\x8a\x2d\x5d\xd5\x09\xa7\xdf\x8b\x84\x28\x74\xa9\x6e\x64\xb5\xd6\x4f\x5c\x41\xa2\x1d\x20\x8d\x14\xce\xa7\x06\x6c\xf2\x2d\xee\x0c\xa4\x1a\xa4\x6a\xb9\x21\xd4\xce\xec\x89\xec\x87\x3f\x77\x96\x0e\xda\x60\xd9\x67\x6c\xfd\x0d\xbf\xae\xc8\x72\xc2\xad\xe8\xfb\xa4\x28\x5a\xac\xd5\x27\x14\x3a\xe0\x34\x1d\x67\xd0\x07\x81\x19\x65\x3b\x5d\x23\xd4\x6e\x6e\xf7\x02\x64\xb1\xb0\x91\x38\x70\x87\x76\x23\x71\x6d\x0f\x1a\x59\x02\x1b\xe7\x4c\x91\x4b\x43\x24\x71\xa4\x3a\x29\xf2\xb6\xdb\xeb\x6a\x22\x3e\x2d\xba\xab\xb8\x20\xb4\xad\xbe\x33\x78\x29\xe1\xde\x0c\x18\x4d\xd0\xd0\x9f\x9d\x01\xd4\x25\x27\xe5\xd4\x0a\xbb\xda\xcc\x8a\xc0\xf1\xb2\xc5\xc1\xcb\x2f\x23\x87\x6d\x2d\x1b\x6b\x43\xdf\xe4\x82\xf9\xd4\x5a\x18\xf5\xc2\x2b\x15\xf1\xfe\x52\x1e\xf5\x7b\x08\xae\xc6\xa3\x03\x39\x25\xc7\x45\x4c\x93\xe6\x31\x9e\x77\x8a\xc4\x94\xfb\x14\x0a\xe5\xf1\xa3\x1c\xc8\x32\xca\x24\x88\x65\x10\x04\x06\x3b\xcf\xf8\xfd\x9a\xe9\x26\x6a\xf5\x27\xf2\xc3\x1f\x6a\xcb\x8f\x3d\xeb\xd9\x97\x8e\xf9\xdf\x01\x08\xe3\xd5\x0c\x49\x19\x90\xc9\x0d\xd8\xee\x9d\x64\xea\x4e\xbf\xd7\x11\xc9\x9d\x90\x44\xec\x11\x34\x2c\x53\x83\xca\x39\x23\x2e\xd9\x7a\x07\xe4\xdc\x51\xdb\x4c\x1f\xe9\x47\x34\x8d\xff\xe7\x0a\x95\xc9\x9d\xb1\x47\x51\x31\x48\x01\xf1\x3f\xa2\xbf\x42\xd8\x67\x37\x5a\x08\xee\x9b\x3b\x79\x9e\x0b\x15\x27\x8e\x95\xe9\x1a\x89\x68\x06\x4d\x6d\xfd\x8f\x51\x15\x43\x8c\xcb\x8b\x51\x6c\xa0\xc4\x1d\xbb\x19\x87\x3c\x6e\x10\xa2\x36\xec\xc2\xda\xd5\x22\xf8\x0f\x01\xc1\x4e\x2f\xa1\x4a\x0d\x79\x2b\x9f\xc4\x86\xc6\xfb\x0e\xfb\xdf\x21\x30\xf0\x2d\xf1\x49\x7d\xb5\xab\xa8\xbe\x61\xca\x70\xb2\x93\x88\xe4\xee\xc7\xe0\x69\x4a\x38\xc0\xd0\x3c\x59\xbb\x6a\x2d\xc3\xcc\xd6\xdd\xe1\xe2\x9e\xe2\xc1\xb3\x25\xac\x72\xaa\x8e\x6f\xab\x91\x38\xf8\xb6\xf5\xd3\x24\xd4\x6a\xf3\xa3\x54\x2c\x8b\xd8\x7c\xb0\x4f\xaf\xc5\x4b\x5d\xb8\x27\xde\x60\x67\x62\xa0\x97\xb6\x22\x79\x9c\xa8\x27\xbd\xa9\xc1\xc0\xbb\x26\x7e\xba\x82\x54\xa8\x1c\x6b\x85\x8a\x37\x5b\x94\xbd\x09\xf3\x9e\xeb\x88\xcb\x14\xb8\xd4\x6e\x47\x40\xdc\x1a\xb4\x2a\x89\x5f\x86\xd2\xc5\x7f\xc2\x8b\x07\xb7\xf6\x0f\xc4\xf8\x84\x7b\x8b\xc8\xad\x83\xa2\x48\x1a\x28\xf2\x9b\xca\x35\x10\xff\x8b\xf1\xdd\x75\x81\xe3\x35\x71\x64\xf4\xfe\x92\x0f\x9d\xe8\x39\x37\x6d\xe0\x64\x90\x0d\xc7\xf8\xbc\xf5\x11\xdc\x57\x2e\x0f\x0f\x6a\x75\xb9\x29\x79\x7d\xa4\x1c\x52\xea\xe6\xfe\x13\x75\x0c\xe3\x51\xe8\x76\x76\x30\xba\xdf\x6d\x7d\x4e\xab\x90\xcd\x19\x04\xc9\x6c\x04\x8a\x9a\xcb\x21\x3a\x9e\x5b\x86\x46\x15\x73\x8a\x84\xf2\x22\x98\x6a\xc2\x35\x54\xcf\x4c\xe5\x4e\x80\xab\x57\x33\xc0\x65\xb8\x04\x59\x92\x1d\xd3\xd8\x37\x2d\x0e\x85\x94\xd4\x36\x43\x51\xbf\x04\x1c\x14\x6f\xa8\xd2\x3a\x19\x3e\xb8\x07\xec\xe2\x3f\x24\xab\x65\x95\xe9\x32\xc9\xce\x1a\x75\x9b\xf7\x88\x91\x4d\xb0\x08\xe8\x70\x98\xdd\x81\x46\x5e\x26\x10\x64\x7a\xc3\x8e\x08\x86\x66\xf6\x0e\xc5\xd0\xe2\x17\x33\x20\xa4\x0c\xd9\x85\xf0\xe0\x0d\xbc\x2b\x45\x70\x72\x74\x83\xa8\xc2\x5f\x6f\xc1\xe0\x93\xbb\x57\xcc\xaf\xd1\xca\x20\x2f\x29\x86\xc7\xc5\x54\x0a\x7c\x3e\x10\xc4\xa6\xfc\x26\xd1\xd6\x2c\x2c\xa5\xaf\x83\x05\xce\xeb\xe4\x2f\xf9\x6e\x7d\xc5\x48\x21\x43\x75\xe8\xa7\xf9\xf7\x12\xba\x8b\xd8\x75\xe4\x3c\xa1\x0c\xf9\xb1\x83\xf0\xc8\x51\x95\x12\x92\x85\x38\xa4\x78\xcb\x98\x25\x9b\xd8\xb3\xe3\x34\xbc\xc4\x63\x55\x95\xca\xd3"}, +{{0xe5,0x37,0x15,0xfe,0xc9,0xd3,0xb2,0x0e,0x9c,0x29,0x91,0xe5,0x4b,0x5e,0xb0,0xa8,0xcc,0x81,0x87,0x55,0x69,0xc9,0x5e,0x22,0xa2,0x00,0x13,0x60,0x02,0x17,0x60,0x04,},{0x53,0x51,0x89,0x9b,0x69,0xb2,0x11,0x6b,0xc7,0xf8,0xa8,0x81,0x4d,0x1e,0x5b,0x9f,0xc7,0x85,0x69,0x8b,0xeb,0xd9,0xab,0x14,0x27,0x7c,0x3e,0xcc,0x01,0xef,0x8b,0x1d,},{0x3d,0x0a,0xdc,0xe7,0x7a,0x4e,0x04,0x6f,0xcb,0x9b,0x49,0xad,0x5e,0x6c,0x68,0x09,0xc8,0xac,0x33,0x6c,0x73,0x34,0x04,0xe5,0xd3,0xf0,0x15,0xc9,0x22,0x5c,0x3d,0xf4,0x6e,0xf2,0x1e,0xa3,0x4c,0xff,0xb3,0xaf,0x69,0x97,0x4f,0x8b,0x7e,0xab,0x2d,0x23,0xfc,0xd5,0xa1,0xe1,0x75,0x3a,0x40,0x23,0xde,0xb3,0x81,0x86,0x29,0xa9,0x8a,0x0b,},"\x84\x31\xcd\x16\xd5\xc0\x93\x77\x5e\x18\xc0\x82\x52\xc4\x3f\x95\xb1\x01\x7e\xb7\x11\xfc\xaf\x73\xe1\xe0\x0c\x0c\xd6\xf3\x44\x87\x44\xab\x9b\x0e\x64\x33\x55\x18\xc4\x83\xae\x94\xde\xb9\x76\x77\xf8\x18\xf0\xe8\x1a\x74\x90\x61\x5b\x71\x41\xb9\xc3\x5f\x80\x55\x6e\x69\x71\xce\xa2\x8e\x9a\x32\xc3\x28\xcc\x26\x69\xfc\xa5\xb1\x23\xcb\x66\x2d\xeb\xab\x2b\x98\x15\x77\x64\x66\x80\x70\xe1\x8e\xdf\x76\x1a\xe1\x96\xbd\x4b\x24\x4f\xea\x7b\x74\x98\x45\x16\xbe\x2c\x00\x73\x9e\x76\xe6\xc4\xb6\x21\xcb\x39\x83\x76\x5a\x20\xd8\x47\x78\xd5\xa4\x35\x0b\x16\x8f\x6a\x0f\x71\x2a\x98\x20\xa8\x5a\x63\x6f\xaf\x92\xc7\x89\xc4\x28\xcf\xd2\x96\x2e\xd2\x07\xc3\xac\x88\x99\xc2\x58\xca\xc1\xad\xb5\x15\x9f\x76\x4b\xa3\x72\x29\xc5\xcb\xf7\x83\xfc\x9a\xa4\xd1\xea\x46\xec\xc8\x5f\xe0\x96\x14\x85\xd4\xfc\x5c\xb2\x1d\xf0\x01\x2a\xc9\xb9\x55\x37\x3b\x14\x22\xe5\x1a\xfa\x1c\x55\x09\x88\x86\x2c\x86\x13\x3b\x76\x0a\xa6\x30\xfc\x0a\xce\xe8\x98\x91\x17\xd1\xdd\x96\xe3\xe6\x28\x7b\x69\x28\x7c\x59\x0b\xdc\xa9\xcb\xc8\xee\xce\xf2\x81\xee\x6d\x1c\x8d\x88\x82\x2b\xfe\xa5\xfa\x0f\x53\x0f\x23\x27\x80\x93\xc7\xc8\x5a\x0d\x44\xc3\xa7\x74\x04\xee\x79\xf1\xc8\x36\x8c\xd7\x32\x1b\xf1\x48\xfd\xa4\xdc\xf2\xeb\x07\xe4\x63\x0e\xa4\x22\x58\x75\x86\x37\x17\x80\x51\x45\x36\xb8\x94\xc5\x24\xe6\xb8\x3d\x5a\x76\xa1\x5c\x83\xe9\x5a\xb3\x14\xe0\x7b\x34\xb9\x8c\xd9\x9e\x07\x70\xb4\xeb\x9b\x3f\x3f\x50\x5b\xae\x8a\x06\xf7\xf9\x50\x25\x8d\x79\x07\x48\x10\x71\x95\xeb\x4f\x6b\x84\x84\x0f\x8c\x05\x90\x72\x73\x96\xed\x14\xe3\xf5\x32\x39\x47\x6c\x4d\x2a\x72\x69\xb2\xe1\xf9\x72\xfb\xff\x33\xe4\x72\x44\x26\x74\x5e\xc8\x86\xa3\x29\x16\x29\x5e\x70\xd4\x68\xd0\x6c\x7d\xbb\x5f\xf9\xa3\x54\xe1\xac\x90\x3b\xb4\x5c\xa5\x26\xf0\x8b\x49\xa6\x5e\x82\x29\x7d\x8d\xd3\xfb\x25\xaa\x42\x8f\x64\x34\x5b\xca\x97\x40\xd9\x07\x8d\xac\x9e\x11\x38\xc9\x21\xbd\xd7\x48\x81\x67\x3d\x49\xd0\xcd\x20\x06\x81\x17\x23\xde\x28\x7c\x6c\x95\x83\xe4\x56\xa0\x1a\xb1\xa3\x4d\xfa\x1e\xaa\x96\x3b\x71\xe8\xbc\x7f\xa8\xa9\x8c\xad\x4f\x94\x1e\x4b\x37\xb6\x0e\xef\x92\x3b\x32\x94\x88\x23\x50\xb3\x8e\xa4\xea\xc0\xe9\x23\x2e\x93\xc5\x32\xdb\x5d\x7e\xec\x8e\xcf\xae\x65\xe0\x80\x47\x30\x78\x77\x7d\xdf\xdd\x11\x50\x8a\x6e\x59\xf0\xeb\xaa\x3f\x60\x44\x1f\x82\xa7\x1a\x73\xc8\x4b\xca\x06\xa3\x71\xff\x5c\x9f\x77\x21\x3a\x2d\xb7\x95\xd4\xa8\x89\x78\x23\xd8\x8f\xd9\x2a\xe3\xe0\x57\xe8\xbb\xd8\x0c\x99\x0a\xf8\x38\x6b\xdf\x26\xf1\x2d\x97\x3c\x8c\x5f\xf9\xed\x6f\x7b\x2d\x8e\x61\x83\xcf\x6e\x68\xf3\xbb\x89\x8f\x59\xa9\x3e\xc4\xde\x3b\xea\x60\x5a\x5d\x8b\x15\xdf\xab\x71\x3f\x35\x85\xc4\x8d\xc9\xa5\x76\x82\x42\xb3\x31\x01\x43\x80\x30\xe7\x04\x48\x80\xd1\x7c\x2e\xe8\x4f\x89\xd2\x6a\x1f\x7b\x19\x86\x19\x3f\x96\x63\xc5\x87\xd5\x0c\xa9\xdd\xf6\x18\x6a\x51\x76\xaf\xef\x1a\xdb\x24\x81\xb7\x92\x54\xb7\x8d\x3b\x34\xc6\x97\x90\xeb\x28\xb9\x0b\x14\x61\x17\x0c\x3d\x73\x81\x83\x76\xcd\xf3\x71\xaf\x0a\x0f\xea\xf1\x4f\xdf\x70\x16\xed\x6e\x7f\x08\xc0\xc1\x4b\x52\x70\x5c\x86\xd4\xf0\x00\x3b\x5e\x45\xf9\x74\xc0\x64\x16\xcc\xb5\xca\x3e\x9d\x52\x9a\xa9\xd4\x15\xc2\x5a\x44\x6f\xa2\xd6\x9e\x82\xf4\x99\x4e\x57\xe9\x22\xc1\x7c\x1c\x34\x2d\xd7\x28\x1e\x41\x00\x52\xd9\xe4\xaa\x1b\x30\x9b\x7d\x47\x0d\x45\x8c\x66\x3e\x17\xff\x25\x00\xd0\xbb\x8e\x46\xa9\xc4\x36\x7e\x09\x1c\xaf\x87\xdd\xfc\x06\x2a\xae\x08\xa6\x5c\xb9\xe0\xea\xa7\x1c\x99\x45\x9c\x5e\x7c\xb1\x12\xa2\xee\x98\xa5\xe4\xcb\xee\x0d\xc5\x20\xf8\x7c\x30\x22\xda\x65\x49\xbe\x1e\xe7\x0a\x0a\x73\xad\x84\x99\xc9\x7d\xd0\x6a\xa1\x4c\x9f\xd8\x62\x8a\x92\xca\x6d\xb4\x87\x32\x2d\xb9\x59\x8a\xda\x1f\xce\x28\xf4\xb9\xfc\x1d\x3c\xc3\x9d\xcf\x2e\xd1\xdf\x3d\x86\x2d\x87\xf5\x5c\xc1\x01\x6f\xb9\xe7\x3e\x7c\xc8\x97\xb9\x70\xd5\xff\x35\xac\xfe\xb0\x5c\x1c\x89\x19\x28\x08\xae\xeb\xfb\x2c\xd1\x7c\xb1\xc9\x4f\xab\x05\x98\x98\xfe\xdc\x2f\xbd\x44\xcc\xef"}, +{{0xab,0xfd,0x69,0x7b,0xfb,0xc5,0xb6,0xff,0x2b,0xdf,0xf3,0xbc,0xe1,0xd7,0x77,0xe0,0x5f,0xbe,0x3e,0xc8,0xb9,0x5c,0xe6,0x93,0xd6,0x23,0x93,0x12,0x09,0x31,0x3d,0x4f,},{0xa7,0x09,0x32,0x1a,0x02,0x10,0xcb,0x80,0xab,0x58,0xbf,0x95,0x5e,0xcd,0xeb,0x8a,0xaf,0x9e,0xe4,0xc3,0x75,0xf9,0x59,0xc5,0x30,0x89,0xd4,0x37,0x48,0x8c,0x08,0x2d,},{0x8c,0x36,0xb5,0xa1,0x11,0xc5,0xa8,0x11,0x9f,0x2d,0x9d,0xb5,0x7e,0xbb,0x59,0x2d,0xae,0x86,0xad,0x4b,0xf6,0x78,0xc1,0x49,0x2e,0x26,0xf3,0xc1,0x0f,0xbe,0x03,0xf1,0x05,0xca,0xe0,0xdc,0x68,0xb5,0x52,0x59,0xb9,0xb5,0x98,0x92,0x89,0xdb,0x33,0xd9,0x5d,0x2e,0xe6,0xb7,0x56,0xc7,0x60,0xf9,0xd3,0xaa,0x0e,0x68,0xa1,0x89,0xde,0x02,},"\x89\x6b\x7a\xb8\x41\x3f\xfe\x43\x9a\x2f\x44\x87\xec\x49\xd6\x4e\x31\xc7\x4f\x50\xac\x83\xf5\x5d\xa6\x1a\x70\x03\xaa\x71\x6c\x2a\x9d\xf6\xb4\x38\xe6\x2f\x53\xd8\xf0\x19\x2f\x37\x36\x32\x47\x60\xd7\xe8\xc4\x4a\xc0\xba\xca\x3a\xe2\xa6\xfb\x93\xf1\x3d\x96\x88\x67\x99\xfd\x2c\x45\x51\xb0\xab\x36\xf1\x73\x08\x55\x55\x12\x65\xa5\xa3\xc3\xc2\x1d\x95\x16\xa2\x37\xf5\xdb\xc1\xc8\xe7\x29\x99\xb7\x82\xc5\xca\x41\xa4\xf6\xe9\x30\x8e\x64\xaf\xde\xe0\xbf\x47\x9e\x54\x6b\x89\xc5\x1b\xc5\xe4\xf7\x1e\x57\xfb\x24\xce\x43\x7a\x8b\x81\xb9\x1d\xc7\x98\xb5\xab\x36\xf2\x9a\xfd\x5b\x48\xe8\x1c\x17\x6a\xe5\xed\xf9\x53\x71\xba\x32\x46\xfb\x43\x94\x05\xbd\x10\xee\xd3\x67\x8e\x3e\xc6\x23\x07\xa3\xb3\xdc\x1b\xad\xba\x05\x1f\x16\x77\x4b\x85\x08\x81\x88\xc2\xa9\xe3\x20\xa1\x61\x8d\x5f\x26\xce\x94\xee\x2b\x93\x3c\x30\x5f\x6d\x95\x84\x95\x8e\xea\x31\x56\xc3\xd1\xe0\xef\x39\xa1\x86\x27\x5e\xe6\x2c\x40\xf3\xc1\xac\xd1\x5d\x8b\xe6\xe0\x74\x35\x1f\x53\x49\xce\x3d\xf6\x95\x17\x50\x5f\x45\xfa\x06\xa8\x15\xc6\x9c\xa1\x8f\x45\x0f\x42\xb5\xcf\x4e\xbd\x99\x26\x84\x45\xe0\xf6\x81\x04\xa7\xde\xeb\x0a\x11\x5b\x81\x7b\x99\xe1\xa7\x3e\x0f\xa9\xd8\x7d\xb7\x1f\x8e\xc9\x4f\x87\x08\xc9\xbc\x2e\x62\x2b\x96\x33\x65\xeb\xcf\xb9\x7c\xfe\x73\x32\x63\x00\x70\xe9\x65\x4e\xaa\x60\x36\x1a\x45\xd4\x02\xdc\x0a\xb2\x97\x66\x52\x42\x66\x7f\xbd\x99\x40\xf6\xcd\x33\x19\x52\x46\xa8\xc2\x86\x9a\xf7\x59\xa8\x62\xd4\xb6\x41\xdb\x14\x4d\x57\x32\x36\x6b\x20\x63\x6c\x40\x27\x78\x7f\x55\x80\x27\xd7\x6f\xcb\xf8\x43\x2e\xb9\x3e\x6d\x14\x56\x7d\xf8\xdb\xf2\x11\xda\xeb\x56\x55\xdb\x10\xac\xdd\xd0\x5e\xca\x06\xac\xce\xe9\xfd\xa8\xd3\xb7\x0c\xa1\xe6\xdc\x58\x7f\xa4\xb7\x8f\x63\xcd\x66\x3f\xf0\x24\x38\x70\x57\x0f\x4d\xcb\xaa\x3f\xb6\x26\xb4\xe1\x13\xbd\xe4\x7d\x5c\x9d\xb2\xb4\xba\x6e\xc6\xdb\xf9\x18\xac\x05\x69\x49\xef\x3c\xfc\xb1\x15\x56\x16\x15\x77\x1a\x03\x5a\x43\xd3\x3b\xa2\x65\x1d\xbe\xb4\x63\x48\x26\x1c\xe3\xc4\xc9\xf2\x46\xd2\x3f\x94\xdb\xc2\xd0\xc1\x9b\x92\x1e\x24\xc7\x7d\xa5\x99\x2f\x1b\x4b\xdf\x2e\xde\xa4\x99\xf5\x41\x11\x68\xac\x0c\x12\xe9\x6f\x3b\x15\xd2\xe1\x2a\xc8\xd7\xb3\xed\x8d\x1e\x07\xc4\x26\x7a\x25\xd3\xa3\xc3\x53\xa4\x20\x8b\x74\x06\x27\x8a\xab\x9e\x70\x0f\x7b\x20\x6f\x48\xe6\xea\x7c\xc9\x7e\x55\x4f\x15\xc9\xbe\x34\x9d\xd9\x15\x14\xdb\xe8\xd8\x89\xf2\xdc\xbb\xfa\x18\x2c\x9f\xaf\x58\x07\xa6\x9b\x2e\x97\xfa\x77\x1a\x6f\x23\x1a\x4c\x7b\x31\xd1\x17\xb8\xed\x0e\x63\x0c\xdf\x13\xe0\x82\xbb\x4f\x63\xc3\xf9\xac\xb3\x55\x32\x04\xcc\xd7\x6e\x18\x35\xc4\x6e\xec\x3d\x43\xc5\x61\xbb\xf1\x7c\x92\x21\x4a\x6d\xb1\x21\x2b\x60\x03\xcf\x2c\xc2\x6c\x7a\xe6\x75\xfc\xd0\x53\xb9\x47\xe7\x22\xf9\xe8\x57\x62\xce\x8a\x16\xe4\x65\x4e\xc6\x34\x2f\xc6\x46\xe5\xca\xb4\x72\x79\x7e\xab\xf6\x58\xba\x4a\xfd\x14\x2f\xc8\xfc\x4c\x8f\x98\xf2\x3c\x24\xdc\x99\x84\x7a\xe8\xce\xf0\x87\x9e\x1a\xb3\xbb\x80\x97\xe4\xc3\x52\x9a\xdd\x2d\x8e\x8e\x2c\x20\x69\x21\x0f\x50\xac\xe1\xae\x32\xa6\xc8\xe6\x38\x4a\x2b\xf7\xd7\x9c\x66\xc7\x46\x14\x9c\x84\xad\x75\xa3\xa1\x76\xe4\x5e\x13\x6d\x94\x69\x5a\xed\x4b\xfd\x08\xb4\x26\xea\x8c\x4b\x93\x79\xf3\x74\x25\x50\xe1\xcf\x5a\xc8\x4c\x18\x17\x4d\x68\x0e\x92\xaf\x2c\x18\x74\xac\x1c\x13\xd2\x82\x32\xde\x19\x37\x68\xe5\x61\x94\x7c\xbd\x6b\x79\xe9\xb9\x9d\xa6\x5c\xfb\x74\xff\xb3\x2f\x7d\x3d\x20\x25\xc6\x07\x63\xdc\x07\xf5\x55\x39\xb4\xd2\x53\xde\x1e\x6c\x25\x82\x3a\x62\x58\xc7\xa9\xce\xd1\x50\x1d\xce\x27\x86\x89\x8a\x3e\x05\xc9\xbf\xf8\xfc\x5b\x21\x25\xd0\xf4\x71\x08\x8a\x13\x4b\x48\x73\xc8\xd5\x5c\x04\x45\xf6\xca\x39\x6b\x3d\x7b\x4b\xc2\xbf\x5c\x4d\x22\x40\xda\x41\x82\x93\xaf\x6a\x3e\xd8\x53\xde\xdd\x3b\xf6\x68\xd9\x37\xb3\x5a\xa0\xc2\xac\xbf\x23\x76\x6f\x9f\x3e\x96\x82\x84\x75\xab\x08\x64\x96\x61\x7a\x6e\x81\xd6\x53\x58\x9b\x2f\xe5\x0b\x7b\xa8\xf0\xcf\x1e\x5a\x44\xd8\xd6\x2f\x08\x37\x7a\xbf\xc2\x62\x97"}, +{{0xdc,0xfa,0xd5,0x9f,0xc6,0xb6,0x97,0x10,0x9e,0x72,0x7f,0xf6,0x6a,0x5f,0xe9,0x3a,0x6a,0x22,0x6f,0x63,0x1a,0x64,0xe5,0x79,0x7a,0xd8,0xd8,0xc8,0xb6,0x35,0x87,0x34,},{0xe7,0x9f,0x4f,0x51,0x13,0x72,0xe3,0x55,0xe7,0xe9,0xe0,0xe8,0xb5,0x34,0x6f,0xdb,0xcd,0x2d,0xf1,0xfc,0x5c,0x3a,0x18,0x90,0xd2,0x7f,0xa1,0xfa,0x92,0x8d,0x27,0xa6,},{0x05,0x2f,0xf7,0x95,0x40,0x73,0x74,0x56,0xc6,0xa4,0x2c,0x41,0xc9,0x7d,0x6b,0xf5,0x17,0xb8,0xcf,0x28,0x9b,0xc7,0x8b,0x50,0x3d,0xee,0x6a,0x30,0xef,0x51,0x68,0xb3,0x8f,0x75,0xbe,0xac,0xa1,0xe1,0x4d,0x97,0x1f,0x87,0x73,0xe3,0x94,0x1b,0xd6,0xdf,0x5c,0xb9,0x77,0x8d,0xea,0x12,0x5a,0x4c,0x4f,0xe0,0x11,0x6b,0x70,0xee,0x84,0x0b,},"\x7d\x92\xdd\xd8\x13\x3c\x61\xc6\x10\xc1\x30\x8c\x23\xae\xaf\x99\x38\x84\xa4\xe6\x7f\x7b\x94\xbb\x88\x6d\xad\x50\x98\x69\xa9\x32\xec\x4a\x27\xd4\x10\xd2\xc2\x9c\xa7\xae\xae\x6f\x92\x80\xcf\x6c\x4b\x06\x7e\xc7\x51\xe5\xe8\xc3\x9f\xf4\x44\xd4\x22\xce\xab\xae\x14\x5d\x42\xf0\x47\x45\x3d\xd4\x02\xd1\x79\x74\x05\x03\x34\x09\xe7\x2c\xc1\x9f\x79\x3d\x5d\x26\x8f\xb3\xfd\x2c\x11\xea\x2c\xb0\xd7\x04\x36\xe1\x8f\x9e\x88\xa0\x15\x15\xdc\x86\x5f\x6a\x1e\xb2\x36\x90\x32\x8f\xd7\x5d\xe2\x63\x21\xa3\x8f\x12\x19\x7a\x97\x20\x1b\x1d\x84\x52\x94\x4f\xbc\x54\x1c\xb6\x8c\x77\xd4\x95\x15\xdb\x53\x26\xf2\xb1\xd0\x76\x3e\xda\x06\xd2\x50\xce\x2a\x5e\x0b\xbd\x7d\x16\x76\xd7\xd4\x1f\xb3\xab\xe8\x8b\xdb\xe3\x72\xf9\x6b\xf7\xbb\x52\x6d\x6b\x65\xa2\x51\x5e\x83\xa5\x77\x04\x5b\x54\x79\xb3\x8b\x85\x2f\xe4\xab\x01\x1c\xbf\x21\xc0\x85\xef\x5f\x0a\x7c\x1b\xed\x76\x57\x2b\x0f\x86\x02\x28\x06\x7a\x89\x9f\x89\x5a\xe7\xf6\x25\x6e\xb6\x51\x40\x87\xf9\xd6\xf5\xc3\x55\x96\xc1\xf4\x80\xc7\x31\x13\x54\x6c\xb9\xcc\x30\xf5\x6a\xb0\x74\xa9\xff\x28\xac\xab\x7e\x42\x65\x0a\x96\x1d\xa3\x25\xac\x5b\x65\x94\xb8\x1c\x93\x25\x0a\xe7\xd3\x92\x67\xa1\x9c\x97\x62\x54\x07\xed\xda\x04\x04\xcb\xe5\xa3\x6e\x95\x9f\xc8\x20\xb2\x7e\xf5\xca\xd7\x96\xc1\x1e\xaf\xf1\xc0\xe2\xf9\xd4\xb3\xc6\x49\x15\x02\x19\x5d\xe0\x36\x59\xb3\x64\xe4\xe8\x7b\x2b\x2d\x73\x3e\xc2\x5e\x6f\x9b\x63\xd5\xf6\x91\x79\xe0\xd2\x7b\xd4\xae\xcc\x8f\x12\xa5\x07\xa9\x1b\xaa\x48\xd9\x9b\x3a\x42\x6c\xec\xeb\xae\xf3\x7d\x73\x61\x10\x6a\x84\x90\x64\x43\x09\xf6\xeb\x4d\x25\x96\x44\x3b\x6b\x01\x18\xb9\x45\xac\xec\xc6\x44\x3e\xa6\x1f\xcd\x15\x5b\x54\x32\x5b\xc2\xc3\x1b\xe0\x25\x0f\x94\x82\xe1\x3f\xd8\xeb\x44\xe2\xae\xd7\x6b\xe8\x12\xaf\x54\x53\xcb\x7f\x86\x32\x45\x8f\xc8\xa0\x2a\x2f\x45\x48\x0d\x79\xb0\x6c\x7d\xda\x38\xb4\x69\x5d\x08\xb5\xa4\x30\x50\x4f\x1a\xe2\x27\x5b\x05\xc9\x1e\x79\x9d\x44\x70\xf3\x8a\xbe\x77\x73\x6d\xfa\x89\x5c\x19\x7e\xa4\xb6\x3c\x2d\xf1\x8e\xfe\xb1\x41\x84\x83\x7b\x8d\xdf\x48\x90\x95\x20\xd9\x10\x45\xb9\xd9\x65\x5c\x22\x5a\x83\x17\x39\x60\xb4\xd7\xcd\x0d\x8b\xae\x30\x23\x75\x57\xf8\x69\x70\x8b\xe1\x38\xad\x52\x46\xc8\x66\xc6\xc0\x59\xdc\x59\x7a\xbf\xd4\x94\x32\x37\x37\x68\x96\x73\x6b\x97\xb7\xe0\x28\x9e\xf9\xbb\xd2\x94\x77\x74\x5c\xb6\x0f\x46\x20\x2f\x1d\xe9\x84\xf5\x09\xb1\x80\x88\x33\xf5\x80\x18\xcd\xe8\xc2\x6b\xef\x4c\x00\x5b\xdc\xa3\x85\xb0\x57\x35\x11\x0c\xa0\x2e\x56\x2b\x50\xed\xdf\xf6\xfd\xe9\xfb\xb8\xd0\x30\xce\xdf\x70\x31\xbb\xeb\x32\xb1\x2b\x24\x2b\xe4\x9f\xde\x01\x60\xc1\xfb\xde\x99\xb0\x3c\x06\x2a\x1a\x47\x06\x23\x45\xc9\x2e\x0b\x60\x4d\x08\x0f\xac\xce\x92\x43\x48\x15\x29\xc7\x05\x97\xdf\xd6\x43\x82\xcb\x54\x06\x91\xb5\x9b\x71\xb0\x94\x33\x2b\xaf\x0b\xbb\x12\x5b\x63\xa4\x46\xbb\x97\x49\x1c\x04\x64\x32\x8c\xab\xd7\x62\x7c\x46\xf3\x92\xf3\xb1\x24\x82\x2f\x20\x13\xc6\xe1\x6d\x3c\xa8\x7c\xc5\xbe\xcf\x56\xb0\xfc\x6e\xb2\xbf\x99\x23\xb3\x01\x2b\xa2\xb6\x12\x50\xa6\x33\xa4\xd2\xee\x39\x12\x56\xc5\x20\x95\x73\x82\xaf\xf9\x70\xc5\xd2\x23\x85\xc3\x34\x4c\x6d\x4b\x45\x61\x57\x1c\x96\x32\x9b\xf7\x56\x15\x29\x75\x16\xb9\xf2\xce\xb9\xf9\x97\xa3\x95\x23\xaa\x0f\x58\xb4\x88\x77\x2d\x82\xfc\x0d\x78\xc5\xdd\x52\xec\xfa\x6b\xfa\xc6\x3a\x76\xe1\x48\x08\x8b\x36\xf2\x4a\x88\xe6\x83\x85\x49\x6d\xda\xdf\x30\x23\xf7\x2d\x87\xc2\xef\xa2\x6e\x87\x7d\x32\xf1\xda\x97\xcd\xb4\x2c\x8f\x15\x71\x89\x88\xe4\x28\xcd\x02\xf4\xd0\x95\x43\xbd\x0b\xd5\xb2\xf4\x09\x96\x3d\x0f\xa3\x73\x53\x1f\x78\xb5\x92\xbd\x13\x7e\xea\xea\x0b\x4e\x7f\x91\x82\x08\xe1\xd5\x90\x08\xa8\xaf\x50\x58\xf5\xd9\x23\xc4\xf3\x2d\xf1\x99\x90\xf1\x0d\xd3\xf0\xeb\x20\x62\x93\xb2\xb3\x44\x3f\x4a\x5d\x2d\xcc\x5f\x7d\x3b\xba\xf6\xaf\x43\xfe\x45\xf5\xdb\xbe\x53\xec\xf4\xbf\x1b\x4a\x13\xe2\xd4\x6e\xf8\x02\x98\xd4\xf0\x1c\x40\x2e\x21\x0f\xcb\x9f\xf2\x08\x4e\xc0\x3e\x42\x00\x8d"}, +{{0x69,0x6d,0xc4,0x81,0xf6,0x19,0xa9,0x49,0x85,0x63,0xc8,0x3d,0x0d,0x0e,0x55,0x56,0x5c,0x14,0xa0,0x78,0x45,0xfe,0x4a,0x66,0xab,0xa2,0x24,0x7b,0x11,0x3f,0xf8,0xef,},{0xc9,0xd7,0x37,0xab,0xc4,0xa9,0xe7,0x3c,0x14,0x9e,0xad,0xc1,0x95,0xa8,0x37,0x89,0x9f,0x2c,0xd5,0x01,0x93,0x73,0xc3,0x0e,0xca,0xf6,0x2e,0x5f,0x8e,0x14,0xb6,0x45,},{0xde,0xd5,0xd9,0x91,0x93,0x5c,0xd1,0xf9,0x39,0x0f,0x1e,0x85,0x92,0x9c,0xa1,0x6d,0xab,0xfc,0x83,0xe6,0x5e,0x43,0x27,0x2e,0xb1,0x75,0x16,0x71,0xaa,0x31,0x93,0x0c,0x72,0x85,0x55,0x34,0x14,0x30,0xce,0x7c,0x80,0x48,0x5d,0xe5,0x80,0x06,0x42,0x71,0x29,0xa4,0xd3,0x4f,0xd6,0x81,0xd5,0x2d,0x84,0x0a,0x16,0xba,0xfa,0x15,0x30,0x02,},"\x2d\x4b\x3a\xd0\xcc\x99\xf9\x83\xe4\x1f\x9b\x48\xc4\xa8\x18\xef\xf7\x5f\xcf\xb9\x3a\x12\x29\xec\x27\x40\xed\x19\xc1\x07\xd6\x21\xdf\x78\x05\x8d\xe7\xc2\xdd\x72\x51\xf5\xff\x45\x43\x40\x86\x5f\x6c\x86\xda\x65\x83\x1f\x66\x72\xdb\x23\x17\x26\xfd\xfe\x4b\x9e\xe3\x15\xd9\x3c\x72\x44\xa9\x20\xdf\x37\x05\x4c\x82\x44\x9d\x31\x0f\x89\x29\x32\xdd\xba\xd9\x4c\xc9\xbb\x39\xac\x89\x37\xcc\x76\xc9\x65\x21\xd3\xfd\xc0\x28\xba\x23\x41\x0b\x29\x02\x3e\x81\x38\xfd\x3f\x52\x43\x19\x88\x4e\xe5\xda\xd0\xd2\x34\xc8\xdf\x66\x1f\x88\x24\xbe\x47\x7e\x21\x69\x9f\x63\x69\xb1\x5f\xf3\xff\xef\xc1\x51\xaa\x55\x5b\x3c\x3d\x76\xad\xb4\x5f\x25\x67\x2d\x38\x0d\x47\x2b\x31\x48\xda\xbd\xef\x42\x45\xb6\x8e\x82\x85\x62\xf2\x5c\xc5\xb8\x1d\x9b\xbb\x24\x1b\xca\x9d\x19\x34\xea\x35\x3f\x95\xf7\xdb\xf3\x64\x64\x33\xe8\x1a\x35\x4e\x1e\x20\x56\xb8\x1c\x15\xaa\x1f\xa8\xed\x7a\x9d\x1a\xf9\x92\x38\xcd\x5a\x5a\xe9\xe8\x41\xc4\x8d\xc3\x48\xae\x1d\xe7\xc4\x1a\xca\x23\x32\x82\x36\xbc\x38\xb4\x7f\x47\xc7\x36\xb2\x57\xa3\x07\x8d\x57\xd5\x74\xb6\x47\xa7\xfc\x8c\x4d\x01\xbc\x50\x30\x21\x50\xd5\x03\x2b\xfa\xcb\x04\xbb\x0f\xd1\x55\xd9\x4d\x92\x06\x66\x77\x20\xe1\x80\xa6\x45\xaf\x46\x24\x59\xe3\x32\x6d\x46\x0d\xa3\xc4\x8e\x75\x72\x67\x8e\x19\x19\x26\x8d\x3e\x47\x40\xd6\x2a\x26\xf7\xc8\x55\x9c\x1c\x43\x9b\x4b\x0b\x0c\x59\x42\xa6\x20\xcf\xdb\x93\xcc\x68\xaa\x15\x52\x0f\xf2\x86\x42\x69\xd7\xa0\xc1\x55\x78\x0a\xdc\x6c\x18\x8e\x0b\x56\x5f\xb9\x59\x43\x19\xe6\xf5\x1d\x15\xca\xf6\xb2\x80\xe7\x15\x8f\x25\x79\x94\x07\xf3\xba\x0d\xd1\xce\xea\x64\xb9\x32\x6d\x2c\xfd\xef\x01\x7e\x1f\x17\x2f\x4d\xde\x0f\x7e\x46\x13\x50\x1a\xf0\x1e\xe0\xac\x30\x09\x5f\x48\xb5\x95\x90\x90\x2b\x1a\xec\xfe\x09\x34\x13\x91\x8d\x83\x5a\xdf\x96\x2e\xcf\x18\x58\x0d\x16\xf9\xfd\x4f\x6f\xa1\x09\x8a\xf1\xd8\xa2\xbc\x24\xdc\x86\xf7\x1d\x0a\x61\xff\x15\x00\x10\x86\x7d\x08\x69\x87\xb5\x1d\xd0\x30\xf5\x0a\xb6\xe3\x74\xb8\xe0\x11\x84\xb3\xe2\xb2\x14\xab\x1c\x7f\xdf\xae\xdb\xc5\x45\xe3\x8c\x3c\xd2\xf6\x98\x29\x79\x54\x1f\xe0\xff\x88\xbe\xd6\x75\x06\xda\x95\x72\x7a\xf1\xa2\x03\x8f\x32\x40\xae\x5b\xfd\x30\xee\x09\x21\x0e\x00\xfd\xcf\x2a\x06\x4d\x5d\xb4\x61\x49\x46\xbd\xa9\x72\xc6\x70\x08\x1a\x6e\xe6\xa1\x0b\x63\xf6\x73\xc8\x3c\x91\x5c\xa5\x57\x3e\x0e\xd6\x87\xb0\x06\x7c\x40\x07\x92\xa9\xbc\xc3\x34\x4e\x0e\x43\xf5\xdf\x63\xfe\xd5\xef\xa8\x5e\x9a\xaf\x85\xe4\xd7\xa2\xc5\x3a\x6c\x92\x82\x8e\x07\xfe\x63\xe2\xd2\x3f\x1b\xdf\x97\xd8\x4a\xdc\x36\xe9\xfc\x95\xfa\xad\xf0\x3e\x06\xd6\x5a\x19\xc5\xe2\x85\xef\xfd\x0e\xa0\xcf\xa8\x39\xd5\x5a\x0a\x0d\xbf\x6d\xa2\x87\x85\xc7\x7f\x5c\x04\xbf\xd5\x99\x74\xef\x37\x93\xcd\xc3\x98\xdf\x7a\x1b\xbc\x9c\xfc\xfc\x3a\x51\xff\xa9\xa2\x0d\x60\xc4\x7b\x24\x5d\xaf\xa3\xe4\x46\x23\xcd\x71\x1d\x77\x62\xc5\x0a\x67\xd6\x50\xc7\xe8\xc4\xfd\x3b\xeb\xc0\xc4\x98\xd2\x15\x2a\xb9\x82\x7c\x70\x0c\x7b\x28\x61\x56\x57\x49\xb5\x86\x4f\xec\x95\xb7\xf6\xb1\x99\x4e\x78\xd8\xf8\x5d\x06\x9c\xc1\x1f\x85\xbe\xd9\x71\x2f\x7a\x9f\x06\x0b\x0b\xf6\x75\x32\xe8\x8e\xb9\xdf\x3e\xb4\xa8\xd2\xfb\xba\xa8\x5e\xda\x92\x6d\x81\xc4\x9f\xb8\x6e\x73\x73\x1b\x7e\xd2\xa1\x90\x50\x78\x51\x3f\x7c\xa0\xfd\xcc\x3b\x1d\x57\x6e\x6a\x60\x12\x4c\x44\x61\x8d\xf1\x89\x0e\x16\x97\x94\x95\x6c\xb1\xec\x50\x1b\xa2\x04\x99\x70\xc8\xe7\x4c\xc1\x80\x06\x4c\x18\x44\x68\xbe\x4f\x08\x9a\x3a\xe2\x26\x3c\x85\x58\x63\xb6\x2c\x28\x31\x3d\xdf\x9c\xa8\x5b\xf6\x6b\x08\xa2\x64\x15\x5a\xd7\xc3\x28\x23\x8d\xfe\x61\x4a\x07\xed\xe9\x15\x5a\x09\xcc\xaf\xf9\x22\x92\x24\x93\x41\xba\xed\xcb\xe0\xe6\x46\x6e\x2c\x76\x04\x5e\x46\xda\xd2\xfc\x89\x9a\x17\x82\xe0\x09\x98\xe7\x9a\x83\xab\xfa\xe9\xb7\x06\xf7\x07\xf5\x8e\x73\x02\x03\xe1\xd2\xcc\xa0\x28\xc9\x22\xbe\xb6\xd1\x57\xfa\x7a\x98\x13\x2a\x92\x1a\x3d\xa2\x1f\x2f\x76\x9b\xb6\xc1\xf5\xf1\x9e\x9e\x85\xa1\x3b\x78\x1a\xf1\x41\x03\x9d\x51\x4e\xe1\x07"}, +{{0xf3,0xf8,0xd6,0x2f,0xee,0x3a,0xf3,0x75,0x66,0x96,0x30,0xcb,0xf0,0x63,0xbf,0xa9,0x30,0x18,0x9a,0xf1,0x36,0xcd,0x75,0x91,0xe2,0x4d,0x57,0x8d,0x73,0x66,0xbf,0x61,},{0x47,0x14,0xc6,0x04,0xaa,0x95,0xe1,0x82,0x8a,0x28,0x36,0x7b,0xa7,0x87,0x60,0xb5,0x89,0x64,0x31,0x68,0x3e,0xe9,0x96,0xcf,0xf9,0x68,0x71,0x77,0x32,0x91,0x95,0x3c,},{0x8d,0x6f,0x7c,0xee,0xb9,0x30,0x8b,0x4a,0x30,0x38,0x79,0xfc,0x6c,0xfa,0x5c,0xa8,0xe0,0x5d,0xfc,0x3d,0xef,0xc2,0xb2,0xcd,0x29,0x10,0xdd,0x4b,0x17,0xc9,0x4e,0xae,0xe8,0x45,0xab,0xe6,0x5f,0xd7,0x15,0xdf,0x05,0xb0,0x12,0x8e,0x43,0x16,0xe2,0x33,0x47,0x99,0xc6,0xe8,0xfa,0x74,0x7e,0xbc,0x8a,0x04,0x0c,0x74,0xf5,0xa1,0x48,0x0c,},"\xe1\xdd\x1f\xfd\x73\x7a\xc6\xdc\x24\xb3\xb9\xce\x3b\x79\xe8\x35\xbf\x69\x8e\x93\x13\x03\xd8\x09\xce\xa1\x78\x2d\xc3\xaf\x63\xa0\xd5\xe6\x73\x92\x82\x3d\x14\x39\xe7\xb6\xe3\x37\xb0\x1c\x8b\x21\x54\x34\xc2\x78\x2b\x3b\xe7\x44\x3c\xb5\xc8\x81\xe5\xfb\x6c\xf3\xbb\x24\x41\x28\xb4\xda\x6a\x6f\x42\xb2\xbb\x2c\xd7\x51\x29\xd5\x64\x18\x85\x43\x48\xc3\x39\xdc\xd9\x12\xb4\x55\x57\xa9\x15\xe9\xfd\x7f\x37\x91\x62\x36\x51\x0c\xb6\xc3\x31\xc1\x40\xb8\x7d\x22\x53\x11\x60\x0b\x8d\x13\x2a\xc4\x74\x73\x83\x9c\x72\x0f\x9f\xf0\xf9\xc1\xdc\xaa\x85\x81\x5a\x9d\x27\xb9\x75\x8c\xd9\x1d\xc5\xd3\xe5\x33\x26\xfc\xdf\xb2\x73\x0e\x52\xbe\x31\x03\x95\x7a\xc8\x91\x49\xa4\xc3\x00\x4c\xb6\x03\x8c\x0d\x80\xfa\x72\xac\x63\x0d\x33\x3b\xe5\xad\x4a\xdb\x58\x5a\xeb\x71\xae\xf1\xcd\xfd\x57\xb9\x15\xfa\xc4\xf1\xaf\x78\xe7\xa5\x97\xf8\xd1\xba\x06\x67\x2b\x19\xc0\xb6\x58\x08\xa8\xa0\x71\xff\x84\x09\x03\x43\x79\x58\x9f\x3d\x41\x30\x2d\x2d\x39\xb3\x31\x8e\x8c\x00\x90\xfa\x36\xcb\x95\x88\x57\xff\x5b\x21\x1c\x96\x66\xe2\x7b\xc8\x95\xab\x9d\x00\x6a\xba\xf5\x95\x0a\x03\xff\x17\xea\x98\x21\x78\xa4\x46\xdd\xa2\x46\x6f\x5a\x40\xb8\xf8\x95\x50\x9e\x4f\x4d\x4a\x6a\x27\x39\x99\x7f\xbd\x49\x68\xf8\x94\x36\xce\xe3\xd8\xed\xb8\xa6\xda\x9b\xd3\xd5\x5b\x06\x64\x90\xe8\x33\x9c\x78\x93\x5b\x77\x88\x3f\x95\xb9\x32\xfa\x5e\x6b\xb7\xdf\x30\x3b\xe3\x0f\xa5\x67\x24\x9f\xff\xb4\x73\xa1\xe4\x64\x32\x2d\x7c\x10\x3f\xe8\x22\x4c\x7e\xc5\x7b\xd3\x9b\xcd\x03\x0b\x96\x78\x7a\xeb\xcd\x20\xe9\xad\x65\x1c\xfa\x2b\xf0\x4b\xa7\x0a\x1c\xf6\x48\xe0\xa5\x44\x95\x67\x20\x2a\x93\x7a\x45\xbe\xcb\xb6\xfc\xde\xd3\x0c\xf9\xb5\xc7\x48\xf8\x82\xb5\xdc\x2a\x4d\x65\xbe\x69\xfd\x7d\x9c\x38\x1e\x83\xd0\xdc\x2a\x34\xb6\xde\xe9\x12\x20\xba\x90\x6e\x51\x2f\xcd\x63\x36\x8e\x2c\xe7\x33\xe4\x66\xb4\xb8\x2b\x84\xfb\x0c\x71\x7d\xc8\x94\x5c\xaf\x6d\x46\xac\x1c\x2f\x64\x18\xf7\x72\x9e\xf4\xc3\x5e\x40\x24\x22\xd6\x4b\x1c\x3e\xbd\x1b\x32\xa3\x0f\xc4\xc5\xee\xce\x7d\x44\x08\xff\x67\x9f\xf0\x1a\x1c\x7b\x03\xca\x51\x7b\xe5\x2e\x6a\xe7\x65\x0f\x7b\xad\x38\x90\x1e\x34\x8a\x55\x93\xbc\x99\x8f\x7c\xf2\xea\x97\x72\x9c\xb0\x04\xf5\x61\xb3\xb5\x8f\xe5\x98\x09\xa4\x1f\xd4\xb3\xb7\x66\x60\x90\x6a\xd9\xed\xa2\x3b\xf9\x25\x43\x7e\xf4\x52\xb1\x6f\x54\x0b\x3b\x80\xa3\x5a\x70\x93\xc2\x73\x4e\xef\xe6\xfa\x97\xd8\x81\xd7\x9e\xf5\xb7\x67\xd9\x88\x9f\x11\x84\x77\xb7\x3f\x58\xa4\xc0\xcb\x15\xe0\xac\x81\x01\x12\x05\x71\xca\x32\xce\x87\x1f\x30\x8a\xd9\x05\x7a\x80\xc8\x28\x15\x4f\xb1\xbc\x2b\x20\x1d\x0c\xd1\x00\x6e\x02\x2d\x44\x4d\xc9\x3f\x1b\xcf\x22\x4d\xb7\x4a\x5b\x37\x3e\x15\x3e\x85\x18\x54\x94\x8b\x6d\xa1\x47\xb7\x32\x87\xcf\x17\xd1\xfb\x72\xb4\x82\x76\x11\x10\x36\x09\xca\xb2\xa1\x77\x9e\x97\x93\xb9\xa7\x08\x20\xfc\x6f\x38\x28\xa6\x4c\x9e\xac\x35\xef\x7a\xa7\xb1\x76\x09\xd8\xef\xf8\xa9\xe5\x2e\x4e\xbc\xd8\x6b\x1e\x14\xfd\x14\x0b\xea\x47\xc6\xb8\xdd\xc4\x1e\x8c\xd2\x71\xeb\x92\x28\x7c\xbd\x06\x10\x51\x22\x42\xf7\x6a\x1e\xf3\xea\xc1\xe4\xbb\xbc\x1a\xda\xe5\x00\x34\xa7\xa2\x64\x7e\x08\xb2\xfd\x20\xaa\x93\xa9\x3c\xb2\xff\xde\xbf\x2e\x46\x1e\xcc\xef\xbb\xd1\xfe\x89\x4c\xe7\x0a\xdf\x79\x01\x73\xba\xe9\x6f\x5a\x55\xa1\x88\x7e\x9a\xe0\x9f\xce\xd1\xd4\x30\x6c\x29\x1c\x6b\x19\xec\xac\x47\x07\xe9\xef\x71\x3e\xa1\x8a\x75\x62\xc6\x67\x83\x26\x22\x89\x92\x07\x7a\x46\x69\x73\x49\x66\x10\x80\x00\xb4\x14\x4f\x45\xa0\xc3\xa2\x86\x3a\x4c\x6a\x3c\x07\x63\x2c\xb9\x3e\xb1\x97\xd2\x94\x88\x4d\x9c\xa3\xdd\x4b\x21\xf3\x9d\xb7\x07\xf6\x3a\x7f\x9a\x57\x0f\x7f\x0f\xeb\x99\xb2\xca\x7d\xa7\xdf\x92\xa1\x77\xab\xcf\xe8\x6e\xc6\x61\xd3\x0b\xcd\xcf\x15\x22\xbd\xb1\xfe\x11\x67\x32\x58\xdf\x7e\x46\xef\x4d\x32\x66\x65\x09\x31\x56\x55\x3f\x28\xb3\x56\x3f\xe7\x19\x2f\x72\xf5\xf9\xb3\x90\x3d\x79\xfe\xa0\x4e\x2c\x48\x8b\x46\x5b\x49\x78\xd6\x9f\x26\xe0\x5a\x59\xd5\xed\x4e\xf4\xca\xb2\x32\xac\xfd\x56\x4f\xc6"}, +{{0x86,0x5a,0x43,0x2e,0xcc,0xe7,0xe7,0x8c,0x42,0x70,0x9f,0xc1,0xe5,0x31,0xdf,0x5e,0x39,0x59,0x13,0x2b,0x2b,0x6f,0x31,0x8f,0xd1,0xc3,0x45,0x21,0xf9,0xa2,0x6e,0x3b,},{0xc7,0xa8,0xca,0xf8,0x93,0x0b,0x62,0x2a,0x50,0x13,0x37,0xf9,0x28,0x40,0xed,0x96,0x61,0x1a,0x32,0x20,0x80,0xfd,0xe5,0xe4,0x9f,0x0a,0x2f,0x6e,0x33,0xb8,0x82,0x83,},{0x32,0xbb,0x75,0x20,0xe2,0x63,0x9c,0x6c,0xca,0x19,0xa2,0xb9,0x83,0x6b,0x08,0xf8,0xb0,0x83,0xca,0x33,0x36,0x9d,0xdf,0x5f,0x9a,0x87,0x7d,0x4c,0x7a,0x9e,0xb0,0x5f,0x9c,0x3d,0xc3,0x4e,0xd4,0xcf,0xa4,0xb2,0x83,0xe5,0x19,0x22,0xb0,0x94,0x06,0x6c,0xe9,0xff,0xa4,0xd9,0xdf,0x62,0x19,0x10,0xca,0x37,0xb0,0xb3,0x7f,0xba,0xbb,0x0e,},"\xb2\x31\xb6\xd2\xec\xde\x49\xf5\x13\xb0\xdf\x25\xaa\xfc\x3e\x5d\xa4\x5b\x6a\x99\x58\xd6\x0f\x54\x64\xca\x59\x3c\x03\x00\x5e\xcf\x36\x1e\xf1\x69\x6b\xb6\xe5\x5d\x65\x38\xe3\x4b\x38\xf3\x24\xc2\x1c\xea\x5c\xc8\x1a\x00\x73\x27\x8b\xb9\x27\x27\xef\xf8\x1a\xf5\x61\x80\x2d\xce\xf3\x3b\xec\x10\xad\x65\x94\xe2\x2d\x9c\x44\x18\xaf\x39\x88\xa4\x3e\xd0\x87\xb9\x95\x4b\xf8\xd6\x28\x3e\x4b\xea\xe8\xc0\x96\xde\x66\x06\x75\x1c\xbe\xd6\x85\x84\x6c\x66\x30\xb9\x52\x8f\xf3\x64\xa7\xc4\x84\x64\x11\x34\x72\xc9\x86\x0b\x33\x71\x96\x3c\x91\x14\x95\xa9\xc6\x28\xa3\xe3\xe4\x7a\xb0\x99\x1f\x10\xdd\x1d\xd3\x31\x61\x52\x52\x62\xd6\x3b\xab\x64\x88\x19\xd5\x7d\x12\x69\xe1\x14\x82\x5c\x54\x34\xe6\xb2\x84\x5f\x42\x79\x5d\x4f\xb0\x83\xad\x79\x40\x1f\x2a\x07\x61\xc6\x34\xa5\x45\xae\xc7\xcd\xb1\x3b\x5b\xe4\x49\xf1\xd8\x29\x32\x63\x78\xed\x1f\x49\x3f\xe8\xc8\xe9\xb0\x68\xcc\x1d\xbc\xf1\x65\x55\x0b\x81\x32\xc3\x19\xda\xc4\x87\xb8\x7b\xb2\x2a\x54\xcd\xf6\x0a\xac\x71\x51\x61\x82\xa4\xe6\x9b\xa0\x83\xf6\xe8\x6d\x1a\x4f\x05\x08\x3a\x77\x61\x9e\xf2\x39\xf7\x02\x39\x6d\x7e\x46\x96\x8c\xc0\x4a\x3b\x34\xdf\x32\x65\xec\xf1\x61\x57\xab\xe1\x5c\x64\x2c\xd7\x42\x70\x96\xd8\xd4\x0d\xb0\x02\xd1\x96\xca\xb1\xbe\x30\x4b\xcf\x32\x2d\x9d\x1a\x24\x51\xb6\xc1\x1e\xea\xf3\xe8\xe3\xd9\x29\xf4\x80\xb6\xb7\x78\x04\xfe\x84\x49\x6c\xa7\x57\xe0\x43\x37\x91\x4c\xe9\x44\x75\xd7\x99\x0c\x74\x57\xc8\xe6\x06\xf8\xbc\x20\x7d\x2d\x48\x11\x9c\x80\xa6\xb4\xa9\xe0\x7b\x22\x92\x26\x57\x0d\xcd\x99\x49\x89\xfe\xcc\x69\x4c\x6c\x2f\xb5\x97\x5c\x9a\x6a\x9b\x74\xe8\x15\x9c\x27\xdd\x36\x77\xdf\xd5\xcb\x65\x1f\x1e\x32\xad\xfa\xfd\x81\x0b\x6e\x5d\x5e\xfb\xac\xe3\x1a\xe6\xd9\xb1\x21\x91\xe8\x93\x98\xda\x06\x3f\x13\x8b\x75\x84\xc5\x8e\x77\xe7\xf9\xfd\xd7\xfb\x9e\xf5\xd6\x8a\xe4\x9c\x6c\xca\xd2\x8d\x18\xbc\x60\x09\xd4\x18\x7e\xd1\x42\x02\x24\xa5\x65\x8a\xad\xf1\x35\xb5\xa9\x53\xf2\xdc\x3c\x8b\xfc\xaf\x66\x9e\xd5\xda\x38\xd0\x14\x4f\xd9\x66\x5e\x6f\x06\x77\xd3\xfc\x88\x04\xe2\x1c\xc2\x5f\xd5\xe0\x1a\x3f\x3f\xa8\x3e\x57\x1e\xb2\xf8\x82\xa7\x65\x9c\xe5\xd8\x64\xd8\xbb\x54\x07\x2b\x09\x86\xa8\x54\xf1\xa7\xf2\xd2\x72\x0d\xf8\x57\xe6\xd4\x21\x96\x30\x84\x1b\x1c\xcd\xcf\xc6\x72\x6b\x91\xbf\xc1\x7e\x18\xc3\xe3\x48\x0c\x23\xa2\xc0\x5e\x4b\xfe\xdd\xd4\xdb\x9e\xf4\x23\x88\xf2\x34\xfd\x3e\x4f\x3d\xad\x66\x60\x26\xe2\x78\x06\x12\x37\x41\x61\x31\x6a\xfc\x76\x65\xf9\x41\x1b\x6c\x5a\xa7\x89\x33\xb1\x80\x21\xc0\x12\xb0\x84\xf3\x24\x47\x60\xa4\xea\x1b\xcf\x31\xcc\x9f\x5c\x40\x44\xa9\xbc\xc7\x5a\x98\x67\x07\xf3\x8f\x45\xac\x1c\x7f\xa1\x39\xee\x95\xa6\xd8\xf1\x6c\x3c\x1e\x12\x76\x4c\x4b\x0b\x11\x94\xc0\xfc\x5f\x7e\xef\xf9\xa8\x48\xc4\x05\x0b\x0e\x65\x16\x84\x71\x9d\x43\x8a\xad\x56\x01\x91\x64\xfa\xe4\xf4\x88\x82\x20\x5e\xce\x0b\x99\x73\x67\x91\x08\x4a\x75\x3b\xa7\xd5\x6e\x88\xfc\xee\xa5\x33\x56\x6c\x3a\x2c\xa4\x8d\xd6\xef\xc4\x9b\x27\xdb\xf1\x4f\x26\x16\xce\xd6\x52\xe1\x38\x33\xab\x90\x28\xad\xa4\x54\x43\x1c\x89\xb3\xcb\x74\x41\xfd\xb8\xf2\x3e\x12\xb6\x0a\x1a\x10\x4a\x2a\x8c\xf4\xa6\x4e\x87\x8a\xa2\x6f\x54\xe8\x88\x1a\x4b\x15\x1a\x16\xa9\x6d\xe8\xb9\x80\x7e\x72\x93\x96\xeb\xe3\xe3\xd3\x94\xf8\x08\xbd\x74\xb7\x31\x2f\xe6\xb8\x4b\x13\x12\xaf\x8a\x1e\x41\x33\x59\x9d\x07\xbd\xf3\x3d\xb2\x1e\x01\x6b\x5c\x19\x6c\x1b\xa3\x11\x57\x08\xf5\x81\xbb\x82\xf4\xb5\x7a\x6c\xa1\xa5\x29\xe6\x4d\x19\x30\x42\xc1\xdc\x5f\xaa\x0a\x03\xab\xf5\x38\x49\xe1\xbd\xef\xba\xb6\x4b\x1c\xb6\x0f\xe1\x0a\x3f\xc1\x82\x3a\x23\x4c\x45\xf3\xb0\xdc\xe6\x6a\x46\x73\x9c\x01\xae\xad\x12\xde\x6f\x03\x13\xc7\xbe\x71\x40\x5f\x3f\xdc\x4a\x50\x7a\x9d\x84\xe8\x68\x6f\x6f\xc9\x26\x35\xdb\x0f\x78\x56\xc7\x37\x3a\x61\x8a\x72\x52\xc1\x29\xa7\x76\x0e\x20\x29\x54\x3d\x72\x62\x28\xc2\x1d\x00\xad\x4a\xc5\x2e\x5b\x1a\x6e\x31\x20\x09\x17\xf1\x5a\xf5\x15\x85\x9e\x08\xf2\xa7\x9a\xce\x67\x99\x1e\xd6\x90\x44"}, +{{0x2b,0xe1,0xf9,0x8c,0xe6,0x55,0x3c,0x91,0x5b,0x6a,0x09,0x33,0xec,0x0d,0xe3,0x47,0xb3,0x70,0xe2,0x9c,0xa2,0x94,0xe8,0x00,0x55,0x41,0x23,0x9f,0x63,0xb4,0x30,0xd0,},{0x7a,0x6f,0x44,0x69,0xc3,0x0a,0x63,0xf5,0x60,0xf9,0x87,0x34,0xfc,0x19,0x06,0xeb,0xd1,0x37,0x1e,0xd8,0x01,0x25,0xfa,0x3e,0x4c,0x86,0xb4,0x3f,0x26,0x2c,0xab,0xbc,},{0x8e,0x65,0x9a,0x3f,0x53,0x5a,0x58,0x9a,0x5f,0xd2,0xd2,0x17,0xcb,0xcb,0x8b,0x77,0x7e,0x5a,0xf2,0x0b,0x23,0x44,0x32,0xf7,0xda,0xc2,0x9f,0x81,0x0a,0x2b,0x47,0x37,0xc5,0xca,0xb1,0x0b,0x59,0xdf,0xd0,0x14,0x4f,0x30,0x90,0xf5,0xf9,0xe0,0xe6,0x67,0xf0,0xe2,0x1a,0x9f,0x57,0x3f,0xe1,0x3b,0x1c,0x28,0xec,0xcb,0xb5,0x31,0xa2,0x05,},"\x62\x68\x20\x1f\x93\x2a\x7c\xd3\xf8\x79\xae\x6a\xb8\x38\x55\xa2\xf5\x02\x91\xde\x78\x4d\x7d\x9e\x9a\xda\xa1\xb9\xaf\xed\x6f\x5a\xea\x20\x24\x0e\x59\xfe\x93\xe5\xa7\x08\x8c\x95\xec\x8e\x15\x74\x5f\xb8\xfd\xeb\x91\xdf\x01\x51\xc7\xb4\x60\x50\x67\x56\x1e\xa0\x8d\xbf\x00\xc4\xff\xe1\xfd\x0a\xcf\x10\x36\x56\xa7\xb5\x4f\xad\x0f\x25\xab\x16\xb4\xbd\xa3\x47\x17\x9e\xd1\xca\xdb\x7b\x98\xbe\x08\x95\xe0\x50\xdc\xbc\x37\x9d\x1f\xd5\x53\xe9\x97\x95\x92\x8b\x67\xa7\x52\xf8\xd2\xec\x1b\x9d\x66\xbf\x6a\xc9\x97\xe7\x44\xdc\x32\x7f\x24\x22\x30\xf9\x2e\x79\xae\x31\x27\x45\xa5\xab\x6d\xde\xc1\x99\x8f\xb6\x3d\xc4\xf6\xb0\x5f\x14\x72\x22\xd4\xb6\x5a\xce\x90\x17\xdc\x1b\xcd\x67\x5e\x49\x5f\x9e\xab\xb5\xf6\x02\x13\x3f\x6c\x72\xe0\x53\xe9\xf4\xae\x30\xd8\x72\xd7\x8b\xf7\x1f\xeb\xa3\x7a\xcc\x59\x50\x55\xc3\xbe\xa5\x3a\x05\xef\x0c\x7f\x21\x2d\xcf\x4e\x0a\xf8\x38\xea\x29\x28\xf4\xcd\xc9\xfd\xc8\x37\xda\x25\xf2\x69\x66\xb2\x45\x6a\xbe\xa6\x6a\x5d\xfb\x8f\xaa\x8f\xa0\x91\xf7\x33\x1d\x54\x36\xe9\x8a\x8d\x63\x23\xcc\x9e\x9a\x91\xd5\xa0\x2a\x49\x51\x17\x14\x84\x9b\x47\x45\x4b\xaf\x99\xc5\xf8\x50\xa0\x8d\x3d\x98\x41\x0e\x93\x9a\x9e\x89\xb1\x50\x53\x82\x5f\x3e\x9a\xee\x71\x44\x74\x16\x14\x07\x82\xe1\xbf\x3b\x0d\x8b\x4f\xf6\x2e\x77\xa4\xa0\x3f\x71\x0a\x8a\xb7\x6c\xf6\x35\x92\xc0\x5c\x44\x0c\x8f\x06\x47\x70\x09\x91\x63\xc1\x22\x70\xf3\xd5\xec\x9a\x6b\xc9\x71\x5b\xff\xfe\xc7\x69\x61\x1d\x21\xfa\x00\x3c\x3c\xc8\x35\x6c\x97\x5d\x37\xb6\x2b\x88\xaa\xbb\x85\x97\xda\xca\x19\x6c\x96\x48\xa3\x1d\x15\xbb\x0b\x86\xcf\x07\x0e\xe0\x1e\x51\x1e\xf3\x73\xb4\xa4\x4c\x6a\x00\x16\x0a\x79\x7f\x2e\x82\x0b\x71\x6f\x5c\xa6\x44\x64\xe4\x18\x9a\x00\xfe\xe9\x78\xd3\x5b\xf2\x04\xf7\x1d\xb1\xf5\x01\xf9\xb6\xe5\xdf\xc8\x21\xa8\xaf\x5d\xbf\xef\xd3\x53\xad\x36\x81\xf9\xbc\x3c\x22\xc6\x7c\xb2\x11\xb4\x30\xb6\xa5\x5f\x3e\x73\xda\x7c\x3a\x07\xce\xb7\xd2\xfe\x25\x4b\x10\xc2\x70\x3a\xb2\xe2\x29\x4d\xd0\xd3\x15\x2d\xc7\xb2\x1a\xab\x87\xb1\x50\xf7\x37\xa9\x47\x46\x3f\xb2\x04\x17\x5d\xe8\x54\x32\x36\xfb\xb0\xda\x5c\x7d\x48\xc5\x7f\x61\x74\x4d\xe6\xf9\x84\xaa\x8e\x61\xb9\x70\xc6\x2d\x0e\xeb\x84\x9d\xa7\xe8\x9a\x61\x22\x2d\x43\x20\x79\xcb\xcf\x5f\x8a\x2b\xa9\x30\x30\x16\x83\xc0\x78\x5c\x26\xfd\xf8\x5d\xa3\x02\x08\x74\x60\x45\x99\xac\x6c\x84\x7e\xc2\x60\x86\x58\xb5\x78\x8c\x7b\x8d\x3a\x37\x44\xfd\x54\x42\xe2\x4c\x8e\xec\xcd\x42\x07\x56\xbd\xd8\xb8\xa7\x7c\xfd\x80\x58\x96\x05\xdc\xed\x9a\xfd\xa2\xbd\xb6\x30\xa0\xcb\x61\x2f\x73\x9c\xe6\x17\xd5\x4e\xde\x6c\xcf\x36\xaa\x31\xe7\xe3\x73\xd8\xa0\xfb\x1b\x7c\x99\x06\xf7\x6b\x5f\x9d\xe8\xc2\x68\x91\xde\x00\x6e\xb7\x97\xea\xd4\xa8\x6f\x70\x16\xf3\x4b\xcd\xe9\x2f\x94\xac\x3e\x92\x0b\xa5\x8d\x6d\xff\x77\x20\x78\xd8\x02\xa9\x4f\x56\xcb\x26\xbf\x79\x4f\xd9\x0c\xa0\xad\x4f\x2e\x7a\xcd\xc5\x92\x9b\xc7\x36\x49\x97\xde\xd9\x8c\xa6\x9c\x57\x39\x91\xbb\x9a\xb8\x5f\x23\x5b\x63\xe7\x6f\x77\xe0\xab\x45\xe7\x89\x12\x38\x98\x69\xaf\x21\xe7\x4e\x66\xf7\xc4\x56\xb8\x27\xe6\x70\xbe\xb0\xf0\x72\x66\x88\xbb\x1f\x90\x36\xd3\x8d\xa0\x7d\x69\xea\x36\x66\xf7\x6b\xd6\x05\xd8\x2e\x2d\xd6\x38\x7e\xce\x6e\x82\x4a\x56\x97\x00\xf0\x1b\x19\x5d\x1a\x9b\xdc\xb0\xf9\x6a\xb5\xc5\x4e\x06\xc2\x11\x9b\x40\x6b\xc4\x88\x84\x80\x66\x04\x18\xbb\x42\x88\xea\x2f\xda\x96\x63\x1b\x0e\x1f\x60\xac\x86\x1d\x6c\xcc\x4c\x84\x4b\x64\x7a\x7d\x74\x03\xbc\x2d\x15\xba\xfe\x4a\xf6\x77\xe8\x56\xfe\x0d\x2b\x5f\x66\x3b\xe4\xe4\x80\xb3\x8f\x6b\x76\x6a\xdc\xd3\xd0\x52\x98\xef\x13\x98\xd0\x4d\x15\x23\xa6\x8b\x91\xdd\x31\xcf\x5d\xc4\xb7\x3d\xec\xbf\xd7\x21\x3f\x98\x1b\x20\x7e\x1f\x6e\xf2\x25\xd7\x94\x8a\x1a\xa1\x7d\x8d\x57\xa1\x12\xf1\xd4\x46\x8d\x2d\x28\xf7\xec\x2e\x54\xb7\x4a\x69\x2c\x59\x58\x02\x2e\x82\x03\x1a\x41\xb3\x15\x09\x0e\xd4\xd5\xbd\x7b\xd0\xb4\x51\x47\x63\x38\xf7\x39\xa7\xd7\x03\x1a\xf2\xd3\x6c\xaa\x09\xff\xdb\xb7\xc3\x96\x50\x7c\x75"}, +{{0x10,0xbb,0xe6,0xe7,0x61,0xa7,0x5c,0x93,0x5b,0x51,0x7f,0x09,0x36,0xfe,0xcb,0x9e,0xc6,0xfc,0x21,0x5e,0x58,0x13,0x08,0x00,0xea,0x18,0xd1,0xff,0x44,0x2a,0x4f,0x13,},{0x86,0x43,0xdd,0xf8,0xaa,0x8d,0x9c,0x8a,0x78,0xb6,0xeb,0x69,0x9f,0xd2,0x0a,0x57,0xf6,0xf1,0x86,0x36,0xb0,0x6c,0xe6,0x9d,0xac,0xdc,0xa1,0x26,0x7a,0xcb,0x39,0x54,},{0xf0,0xf3,0x57,0x41,0x03,0x73,0x31,0x3b,0x7c,0x62,0x52,0xd6,0xd9,0x66,0x00,0x36,0x0c,0x23,0x75,0x2d,0x43,0x1c,0xa8,0x07,0x5b,0xcf,0xb7,0x72,0xd4,0x9c,0xd6,0x09,0xb6,0x5c,0x9c,0xd8,0x38,0xd6,0x34,0xd8,0xd9,0xb9,0x5d,0x1e,0xe3,0x0e,0xde,0xcc,0x13,0xe3,0xca,0x99,0x7b,0x24,0x37,0x30,0x3f,0x8a,0x33,0xa1,0xff,0xc8,0x33,0x06,},"\xe8\x10\x8c\x6d\xe4\x13\x37\x33\xdc\x19\x9a\x73\x39\x2e\x22\x6f\x71\x2c\x36\xa2\x4f\xa9\x1d\x6f\xb0\x9f\x92\xdf\x21\x8d\xeb\x2d\x28\x30\xa6\x68\xfd\x69\x4b\x48\x09\xd0\x25\x35\x07\x23\x12\x47\xc7\xf2\x58\xb4\xd6\x5c\x56\xbb\x69\x34\x5e\xf6\xaa\x97\xe7\xc5\x9e\x81\x53\x77\x5a\x5a\x3c\xf1\x09\xc4\xbc\xa9\x81\x55\x69\xda\x69\x32\xe8\x21\x83\x42\x5b\x42\xd7\x48\x3c\x9d\xbf\xcb\xd8\xeb\x38\xc8\x47\x29\x57\x1e\x8e\xc9\x39\x82\xc3\x17\x71\x67\x59\x59\x8c\x4f\x6a\x1b\x7f\x8d\xa7\x30\x6a\x78\x15\x72\x1c\xaf\x02\xe7\x02\x46\x71\x23\x14\xf7\x66\xbe\x9c\xb1\x77\xcd\x2f\xa3\xbd\xa2\x2c\xd6\x76\xc5\xd2\xe8\x6e\x8d\x79\x8f\xd3\x4f\x54\x3c\x9b\xe3\x12\x96\x51\xf2\x73\xf4\x84\xf0\xb9\x46\x7b\x14\x09\x55\xcd\x29\x81\xff\x26\x03\xc0\xbd\xbb\x43\x6a\xc0\x95\x5a\x11\x6c\x5e\x5f\xc3\x04\x25\xe1\xfe\x78\xf6\x41\x0f\x6e\xf7\x57\xf6\x04\x66\x88\x54\xba\xe7\x9b\xfe\x22\xe1\xa8\x5c\xe5\xee\x5d\x64\x34\xb4\x61\x01\x20\xea\x7e\x5d\x3d\x13\x7c\xe2\x07\x51\x4f\x85\x34\xad\x9b\xf3\x92\xb7\xdc\x53\x55\x51\x4b\x59\xf8\x35\x46\x6c\x8e\xb5\x6f\x44\xed\xdc\x5b\xad\x20\xcf\x0b\x48\x0b\x2e\x82\x2a\x6f\x46\xfd\x95\xf3\x0f\x18\x3c\x7b\xb3\x14\x3e\x4e\x61\x00\xe2\xdb\xc9\xf2\xbf\x0d\x43\x07\x3e\x0f\xe6\x5f\x01\xbc\xce\x6a\x1a\xe4\x01\xc1\x25\x41\xbe\x3a\xe6\x8c\xde\xac\x2a\x4a\xc7\x1f\x16\x63\xb5\xfd\xfc\x2e\x50\xf0\xe0\x77\xfb\x3a\x0a\x8b\x8e\xee\xad\x62\x7c\x1c\x3e\x79\xdd\x73\x61\x04\x6f\x7e\x57\xc1\x74\x36\xc3\x2d\xc4\x43\x2f\x05\x00\x28\xcc\x7a\xa4\x40\x8c\x2d\x29\xd1\xd7\x99\x8f\xdc\xdd\xa3\x2b\xb3\x2f\x70\x4d\xc2\x63\xdb\x9b\x8e\x06\xc5\x76\x30\x87\x0f\x8b\xb6\xec\x66\x1f\xde\x1b\x7d\xa9\x4d\x53\xb0\x47\x70\x1a\x45\x88\x47\x8c\x1c\x66\x23\x46\x74\x1a\xea\xc4\xc2\x53\x38\x55\x6a\x3d\x84\x8d\xe5\xb2\xa2\x3e\xce\xa6\x1b\x77\x6b\xd0\xe8\x03\x7e\xfb\x85\x01\xef\xf2\x39\xc7\xfa\xcc\xa6\xc8\x36\x7e\xd7\xc8\xad\xce\x91\x9f\xef\x1a\x15\x5a\xe0\xd5\x47\x8a\x98\x00\x2c\x95\xa1\x6f\xbf\x4c\x0e\xd0\x16\xea\x5d\x38\x66\xfe\x1d\xe4\x54\x83\x2a\x4e\x95\x65\x97\x6b\x60\xb3\xdd\x2e\xaf\x7f\xee\x61\x2f\x2b\xc0\x40\xd9\x39\x75\x43\x5e\xeb\xd1\x2f\x06\xeb\x09\xec\xea\x2c\x66\x76\x83\x08\xf5\x8c\x77\xac\x51\xed\x7b\xd2\x16\x36\xfc\x9c\xc3\xfd\x14\x87\x0b\xd0\x6b\xdf\x12\x8a\x81\xb1\x47\x92\xe6\x08\xc4\x7e\xa2\xd5\x35\xca\x7a\xa2\x1e\xb8\xa8\xa5\x6d\x76\x99\x16\x63\xa8\x19\x0a\x95\x05\x7d\x33\x67\x1e\x73\xc7\xcb\xce\x5a\x98\xd3\x1e\xf0\xd7\x3b\xd0\xb1\x63\x78\x7b\x7f\xdc\xd2\xdd\xfc\x72\x96\x0f\x2b\xe3\x20\x84\x6d\x4b\x29\x08\x0d\x7a\xeb\x5b\x7e\xa6\x45\xa2\xad\x5a\x59\xc0\x12\xbf\x7b\x95\x15\xd8\x59\xe1\xc1\x47\x2e\xf8\xa4\xd3\xc9\x5e\x71\x1a\xf9\x7a\xe4\x61\x8e\xfb\xab\x3d\xff\xe8\x8c\x9f\x6a\xf4\xa0\x9b\x0e\x73\x38\x7e\x25\x1b\x77\xd7\xbf\xf5\x21\x4f\x79\x18\x62\xdb\x69\x88\x41\x1e\x2a\xe2\xc7\x5b\xf2\x8d\x28\x60\x2a\x63\x7c\x26\xf4\x9c\x18\xd3\x09\xd2\xfc\x58\xa1\x26\x66\x7a\xd3\xc2\xec\x16\x0c\x99\xba\x40\xfb\xda\xc1\x7e\x7e\x4c\x21\xa5\xd5\x07\x85\x97\x62\xeb\xa0\x9c\x41\x60\xdf\x66\xf5\xfe\xef\xe6\x71\x5a\x28\xc5\x29\x6c\xf4\x3e\x5e\x77\x1f\x31\xfc\xe5\x13\x3b\xe9\x7c\xab\x57\x30\x1b\x4c\x9d\xf9\xcd\x9a\x4a\xcf\x1c\x33\xfa\xc9\x46\xfa\x15\x96\xfa\x65\xc8\xf3\x65\x8b\xe4\x7a\x47\x3a\x62\xc5\x21\x81\xec\xa1\x83\xe4\x24\x6c\xd6\x24\xd8\x78\x3d\xcc\xe5\xfd\xcc\x1f\xea\x17\x3f\x80\x71\xf7\x07\x4f\x55\x89\x7d\xe9\xbf\xe8\x4a\x6c\x4f\xdf\x80\x2d\x50\x26\xb8\x14\x5e\x6c\x8c\x89\x50\xaf\xc5\xb4\x0f\xd0\x35\x6f\xc5\x5e\xe1\x7e\x1f\x85\x3a\x4c\x2f\xcc\x34\xa1\x36\x9b\x87\xd2\x8d\xc2\xfd\x20\x10\xf1\x99\x03\xaf\xf8\xe4\x6d\xe0\x49\x38\xf4\x94\x82\x45\xd5\xb4\x25\xd0\x74\xac\xdf\x2b\xd8\x0b\xfc\x37\x35\xcc\x34\xa2\x25\x90\xf1\x94\xaf\x93\x13\xee\xf4\xab\x5f\xde\x61\xf1\xf9\xb5\x85\x78\x63\x8f\xcb\x4f\x28\x50\xb2\xfc\xe6\xe0\x3d\xb4\xd0\xa8\x34\x84\x81\x63\xc4\xb2\x7e\x12\x9f\x5c\xc7\x4f\x67\xf0\x08\xa2\x71\x2d\x1d"}, +{{0x18,0x6d,0xcc,0x7e,0xfc,0x5e,0xd7,0xe6,0x1a,0xe5,0x3d,0xc4,0x20,0x93,0xba,0xe8,0xf1,0x5d,0xd9,0x9f,0x0f,0x03,0x33,0x26,0xc5,0x76,0xff,0x75,0x69,0x50,0xd0,0x6d,},{0xc8,0xd1,0x41,0xac,0xb6,0x42,0xaa,0x9b,0xfb,0xd5,0x43,0x27,0x7c,0x2d,0xca,0x8a,0xa9,0x88,0x8e,0xef,0xf0,0x45,0x43,0xb3,0x78,0x9b,0x21,0xf2,0x6a,0xeb,0x0f,0x71,},{0x89,0x45,0x06,0x97,0x87,0xc1,0xc6,0x76,0xa8,0x4a,0x70,0x3c,0xae,0x1e,0x0b,0xac,0xae,0xff,0xd3,0x3e,0x91,0xbe,0xc3,0x60,0x3e,0x1f,0x13,0xfb,0x17,0x0e,0x31,0xe6,0xd7,0x04,0x9e,0xda,0x2b,0xf6,0x27,0x18,0x0f,0x45,0x6c,0x3f,0x7a,0xab,0xfc,0xd3,0x6c,0x49,0xa8,0xc0,0x4f,0x8a,0xe6,0x92,0x9e,0xc5,0xad,0xa0,0x7b,0x65,0x72,0x08,},"\x97\x43\x64\xd6\xc8\x38\x84\x2c\xcc\x4e\x74\x9e\x6a\xfd\x53\x71\x70\xdc\xd8\xcc\x50\xd6\x66\x54\xd1\x05\x48\x23\x39\xca\xbd\xf7\x4e\x32\x93\x5e\xe2\x19\x27\x2e\xa1\x68\x4f\xb9\x3c\x1f\xab\x42\xb5\x63\x18\x39\x24\x35\x91\xbd\x07\xd3\xbe\x94\x9b\x0d\xd1\x5e\x31\x96\xdf\x19\x6b\xa7\x52\xad\x11\x21\xac\x71\x12\xd5\x66\x94\x4e\x15\x3a\x4e\x06\x19\xb3\xa2\x32\x24\x1f\x02\x0b\xe0\x71\x9f\x6b\xec\x91\x8b\x26\x82\x8e\xb1\x67\x0e\xcf\xc7\x3c\x66\x84\x4e\xa3\xe4\x04\xc6\xa2\xfc\x01\xbe\xb4\x03\xc9\xd6\xca\x55\x1a\xd8\xa6\xe7\x1f\x46\x64\x7f\xa6\x05\x3f\x03\x14\xf8\x12\x4d\x8d\x2b\xc1\x2c\xc8\xfa\x8d\xb9\x5f\x2b\x73\x53\x75\x20\x1b\x81\x6a\x9c\xf4\x0f\x83\xee\x4b\x86\x71\x61\x80\x32\xde\x22\x9c\xe7\x62\x71\xd0\x3d\x26\x72\xa1\xae\x4a\x28\x8c\x85\xdc\xd2\x7f\xb8\x45\x2a\x81\x32\xe9\xff\x29\xe1\xe8\x9b\xf1\x1b\x1c\x83\x51\x92\xc0\x4b\x13\xbe\x14\xf3\xcd\xe5\xd3\x7c\xe9\x6f\x1d\xc2\xa9\xcc\xda\x0c\x4d\x73\x7b\xca\x1f\xa2\x20\xd2\x1b\xf3\x60\xb9\x05\x15\xbb\xd2\x26\xbb\x2a\x6c\x8d\x5f\x2a\xb0\x18\xd4\x08\x4e\x24\xee\x33\x3c\xe4\xe3\x9b\xcb\x6b\x46\xe7\xae\xb4\xdb\x9b\x6c\x65\xb2\x44\xd9\x82\x82\x3a\x77\x0f\x9c\x62\xa0\xbd\xe2\xcb\xb7\xec\x36\x84\x0d\x45\x51\x87\xfa\xff\x4e\x48\x8a\x5c\x60\x8e\xbd\xb7\xdb\x84\xd8\x7d\xad\x38\x67\xe3\xb0\xd0\x4b\x64\x71\x5e\x16\x56\x0a\x62\xf1\xee\x03\xdf\x61\x83\xfd\x5e\x37\x55\x5d\xa1\x97\x2f\xca\x06\x2d\x12\xbb\x84\x20\xe0\x82\xda\xcb\x8d\xeb\xb9\xc1\x43\x85\x41\xd0\xda\x24\x64\xef\x7e\xc5\x22\x63\xfb\x9b\x9a\x4c\x46\x9c\x83\x32\x3e\x48\x19\xdf\xdf\x4f\xa0\xa7\x70\xc3\xa7\x09\x25\x4e\x05\x31\x48\x30\xe8\x7f\xbb\x67\x36\xc7\x2d\x9d\xab\xe0\x1a\x31\x0e\x91\xeb\xbf\xae\x76\x7a\x1f\xcb\x62\xf6\x4f\xa3\xba\x8d\x53\x40\x0d\x64\x69\xad\x1c\xcb\x81\x1f\xb9\xe1\x15\xf1\x41\x27\xb1\x3e\x83\x64\xaa\x2f\xe8\x0b\xbc\x88\x6a\x10\xdf\x1b\x9c\xc4\xae\x46\x01\xf5\x46\x1a\xf0\x91\xf5\x26\xd2\x72\xda\x9b\x20\x38\x57\xa4\x44\x7e\xab\xde\xf4\x39\x83\x04\x96\xa5\x75\x9c\x21\xde\x65\xba\x3a\x3c\x8b\x8e\x93\x9c\x46\x13\x32\xa9\x24\x85\x2c\x20\x5c\x77\x11\xf3\xa6\x8a\x23\x67\xa9\x45\xde\xf4\xfb\xe5\xf8\x1c\x60\xcb\xb7\xe3\x94\xa2\xa4\x9b\xe9\xec\x2a\xae\xb1\xf3\x30\x57\x59\x79\x44\x6a\xd9\xd0\xd5\x4a\xbd\x43\x6f\x28\x60\xf0\x42\x34\x26\xf4\xbb\xc2\x6b\x3b\x9f\x65\x0d\x69\xb1\x00\x72\xd7\x47\xa3\x9e\x47\x8f\x45\x5e\xaa\x12\xc7\xc6\xe1\x2b\xfc\x45\x36\xa3\x59\x43\x44\xbd\x02\xb6\x20\xe3\xe2\xb4\xe0\xd5\x34\x08\x9d\xd7\xb0\x4f\xa6\x34\x80\x45\x67\x58\x6c\x62\xbe\x03\x91\xc7\xbd\xb0\xa9\xfb\xc1\xef\x3b\x33\x21\x1e\xdb\xf8\xef\x58\xc2\xb7\xa4\x9d\x06\x66\x79\x59\xd7\xe5\xd4\x46\x71\xee\x73\x57\xa1\x0b\xa0\xcb\x1a\x44\x5a\xe5\xd7\x09\xce\x25\x5e\x92\xde\x71\x59\x75\xaf\x94\xb8\x9d\x4a\x29\xc7\x1f\x9d\x88\xc8\x5b\x6c\xd1\x1d\x8b\x33\x5b\xf8\xf2\xc6\x58\xe6\xdd\x7c\x3f\x6c\x80\xad\x4d\x0e\x5a\x6c\x87\xdb\xa7\xb5\xb8\xa8\xa4\x7e\x72\xf4\xd1\xd3\xc7\x43\x63\x1d\xf9\xad\xfc\xfa\x45\xce\xe0\x49\x8d\x5a\x44\xa9\xf7\x5c\x83\xb7\x5b\x2a\x3c\x23\x0f\xf0\x76\x7d\x38\x88\xf9\x41\xee\x1b\x66\x24\xdd\x0e\x12\xd0\x6e\xd1\xab\x8b\xb1\x35\xff\xd3\x79\xe9\xde\x37\x88\xbe\x54\x1a\xad\xb2\xd6\xa7\xcc\x60\x13\x16\xf2\x1e\xb9\xaa\xa9\x22\xf5\x6a\x8e\x35\x26\xc9\xbd\x11\x77\xfe\xfc\x2f\xbe\x3e\x43\x0b\x62\x8e\xeb\xd6\x66\x1e\x3b\xa2\xd6\x31\xc6\xa8\x42\x2c\x24\x1e\xcd\x96\x99\x72\x41\x2f\x74\xda\x6b\x12\x43\xbf\x0f\xbe\xe8\xa8\x4d\x52\xe4\x0a\xee\x3f\x1e\x4f\xc8\x31\x40\x2c\x62\xf3\x57\x6b\x22\xe8\xe3\xc3\xdc\x4e\x16\x0b\xc3\xb6\xb9\xd2\xce\x00\x58\x53\x81\x2e\xaf\xc0\xa4\xe2\x5b\xa7\x12\x27\x9b\x00\xba\x3f\x91\x30\xff\x36\xe3\xef\x19\x71\xdd\xe7\x50\x8b\x27\x92\xfe\x64\xd4\x75\x68\x8f\xc6\xf3\x31\x3a\xad\xb7\x85\x30\x2e\x6b\x7f\x9a\x84\xf2\xdb\xc2\xf3\xcf\x06\x0e\xe0\x8b\x46\x37\x36\xf8\x36\xdb\xb2\x62\xd3\x29\x68\x4c\x20\x84\x92\xd1\x7d\x81\x12\x21\xbe\x02\xb6\x5e\xe2\x8e\x11\xb5\x46\x92"}, +{{0x07,0x05,0xb3,0x36,0xc8,0x9c,0xa3,0x5f,0xfd,0xde,0x0a,0xf0,0xf9,0x06,0xea,0xcf,0x62,0x3c,0x56,0xc3,0xf7,0x67,0x38,0x16,0x8e,0x76,0xfc,0xd5,0x88,0x2d,0xf7,0x9e,},{0xea,0xaa,0xf2,0xa1,0x5f,0x44,0xb6,0x34,0xce,0xf1,0x5a,0x63,0x8b,0x80,0x20,0x7f,0x61,0x09,0x9a,0x07,0x96,0xf5,0xd4,0x3f,0x3e,0x9d,0x04,0x8e,0x6a,0xe7,0x96,0xc1,},{0xd4,0xa9,0xba,0xe8,0xec,0xc4,0x72,0xc3,0x76,0xba,0xb8,0x05,0xc2,0xce,0x0c,0x1c,0x2e,0xd5,0xfc,0x77,0x37,0x15,0x46,0x8c,0xb1,0xa4,0x93,0x45,0x64,0xda,0xce,0xcf,0x43,0x8b,0x1d,0xd2,0xac,0x1b,0x5c,0x5e,0x33,0x6a,0x1e,0x20,0x70,0x1d,0x5d,0xcf,0x3c,0x8e,0xe3,0xad,0x22,0x3b,0x13,0x9f,0xa9,0x0a,0x1b,0x55,0x2e,0x1b,0x77,0x07,},"\x61\x6f\xe1\x5f\xcc\xb3\x31\x0f\x9e\xc7\x45\x64\x47\xda\xda\xf8\xe0\xa5\xfb\x26\x9b\xe1\x69\xb0\xc3\xea\x2c\xfd\xaa\xa5\x5d\x37\x93\x7f\xe7\x5b\x78\x32\x4a\xc2\x78\xa6\x50\x47\xe0\xae\x4f\x32\x7e\x97\xef\xfc\xb7\xbe\xd9\x1d\x09\xda\x72\x0b\x0a\x10\x1b\xe9\xe9\x6d\x0b\xa8\x5b\x1f\xf4\x9d\x8d\x1d\xf3\x62\xd3\x45\x4f\x0d\xb6\x82\x55\x96\x10\x1c\x97\xe5\xda\xca\xd0\x7e\xc4\x92\xd3\x0f\x2d\x0c\xb7\xe7\xde\x4e\x74\x4b\xb6\xa6\x10\x0b\x75\x4d\xa8\x47\x41\x1d\x09\xaa\xce\x8d\x5d\x41\x07\x58\xb8\x30\x87\xdb\x4b\x5e\x62\x97\x97\x9a\x21\xfb\x65\xaf\x39\x09\x52\xc4\xf9\x36\x26\x0e\x72\xd7\xc7\x83\x27\xb9\x4a\xa6\xcd\x61\x72\x78\xb0\xce\x9e\x1b\xd3\xfb\xed\x93\xb6\x9b\xc6\x49\x85\xdd\xe0\xe2\xc4\x35\x7b\x50\x2f\x05\x5e\xe7\xb0\xa0\x38\x84\x74\xda\xe0\x2d\x6c\x1a\x73\x1f\x87\x78\x5d\x75\x3a\xeb\x0d\x9c\xfd\xf8\x50\x02\xdf\x56\x6f\xc2\x50\x7d\xe7\xba\x6f\xd0\x35\xbe\xe1\x7a\x2e\x80\x8b\x4a\x75\x88\xc5\x83\x37\x5c\x82\x40\x7a\x40\xae\x9e\xeb\xdf\x94\xdf\x2f\xb8\xca\xbf\x17\x60\x6c\x43\x9e\xa7\x04\x59\xb2\x12\xaa\xe4\xa3\xf5\x30\xec\xad\xc5\xe8\x8e\x25\x48\xfa\x64\x3c\x7d\xdf\x50\x63\xb2\xe1\x06\x73\xe5\x9d\x07\xfe\x90\x68\x92\xb6\x7e\xb5\x8f\x93\x88\xa5\x6b\x37\x04\x52\xe9\x97\x77\x55\xfc\x04\xdf\xbc\x77\xda\x6c\x05\xbe\xdd\xeb\xf0\x36\x52\x56\xb5\x2c\x9a\xef\x8a\x82\x17\x3b\x8c\x89\xfb\xd9\x8c\xea\x36\xa8\xb8\x96\xfe\x66\xd3\x7c\xa7\x9b\xec\x7f\xbf\xe9\x58\xfe\x89\xf6\x76\x50\x85\xb3\x35\xdc\x77\x03\x43\xe2\x30\xca\xdd\xfa\x28\x33\xda\xa6\x62\xfe\x82\x08\xdd\x88\x5a\x6f\xdf\x72\xe3\x6e\xcf\x22\xbb\xbb\xcb\xe7\x9d\x37\x06\x50\x23\x69\x40\xbc\x2e\x6d\x4a\xc7\x4f\xe4\xd5\x54\xc9\xbc\x23\x2f\x07\xd2\xaf\x62\x20\xd1\x57\xbd\x2d\xa6\xa6\x61\x2a\x08\x1b\x4c\x99\x04\xa2\x86\x9b\x13\x7e\xe3\xa0\x85\x6f\x12\xb2\xeb\x87\x62\xdb\x94\xed\x0b\xa1\x36\xf2\x3e\x7f\xb4\xbd\x1f\xcd\xee\x10\xdd\x84\xe2\xcd\x3b\x0a\x49\x14\x8a\xc7\x4d\xb4\x66\xdb\xee\xf8\x1e\x6a\x8c\xe0\x86\x11\x02\xde\x9b\x1a\x3e\x1d\xcf\x5c\x6b\x03\x08\xa8\x2e\x3a\xc7\xc2\x28\x3c\x7c\xc2\xf3\x4f\xfa\x14\x5b\x9f\x74\xb7\x99\x04\xb3\x2b\x79\xe9\x60\xb8\x14\xaa\xde\x63\xa0\xdf\x01\x67\xdc\xd2\x4e\xd9\x0a\x8d\xa7\xb9\x34\xc7\x72\x93\x2f\x5a\x47\x8f\xe2\xa7\x2f\x94\x5a\x13\x09\x6e\xc3\x7c\xe7\x64\xb5\x81\xeb\x89\xe5\xf6\xb2\xbd\x7e\xb8\x8b\x85\xa8\x95\x87\x77\x4d\x45\x8c\x58\xcd\x87\x94\x57\x97\x3d\x64\x8e\xf7\x71\xc5\xf1\xde\xb2\x7a\x0c\xc5\xb2\x92\x46\xac\x2f\xa1\x2d\x18\xdd\xc6\xb9\xf9\xac\x9c\xf1\x46\xc3\xf2\x2b\x1e\x44\x99\xad\xee\xfb\xcd\x22\x49\x74\x0e\x13\xa2\x24\xe7\xb6\xb3\xef\x15\x60\x5e\x7e\x74\xe6\x8d\x7b\x72\x64\x24\x09\xb9\x0c\x4e\xc1\x61\xeb\x24\xc9\xb4\x0f\xf9\xc7\xe6\xe5\xda\x98\x32\x2a\xca\x52\xc4\x6a\x8d\xdc\x19\x0f\x1c\xab\x15\x7c\x4c\x76\x19\x60\x1a\x6b\x33\xdf\x6a\x50\xda\x66\x1b\xc7\x53\x60\xdf\xf6\x97\x50\xd3\x45\x74\x09\xcc\x02\x41\xc3\xe8\xc4\xb3\xe5\x06\xd4\x26\xaf\x52\xb7\x02\x31\xcd\x6c\x91\x26\x0c\xc4\x31\xe4\xcc\xfd\x49\x6c\xa1\x4c\xea\xae\x1c\xda\x78\x72\x1e\x16\x33\x9d\x52\x68\x2b\x69\x51\xf9\x66\xc7\xda\x5c\x6e\x10\xd9\x19\xae\x66\xa9\xf5\x2d\xec\x10\x86\x75\x38\xd3\xdf\x6d\x59\x3a\x32\xdb\x69\x5a\x8d\x77\x45\x70\x35\x16\xea\x56\xf8\xc1\xc8\xf0\xef\x53\xbd\xeb\x7f\x53\xc2\xd9\x44\xf5\x11\x94\x0c\xcb\x90\x62\x49\x22\xac\x59\x9f\x46\x19\xc3\x04\x62\x07\xd6\x05\xf6\xff\x94\xde\x78\x8d\x25\x34\x22\x29\xdc\x8a\xf9\x2b\x5f\xdf\x0d\xd7\x1d\xf2\xb4\x46\xcd\xf1\xd9\xa2\x05\x24\x33\x9e\xe1\xc3\x18\x26\x28\x7e\xf7\x27\x81\xa7\xa3\x52\x89\xf8\x5a\x15\xba\x57\xc7\xfd\x5d\x88\x5b\xd0\x55\x3a\xb4\x08\x05\xf5\x17\xe8\xf1\xb1\xb3\xc4\xfc\x67\x71\xe6\xf2\x24\xbc\x03\x11\x24\xb9\xc9\xae\xb1\x9c\x5a\x96\xbf\x14\x88\xe1\xe6\x6c\x6e\x88\x80\x92\x30\xc8\x3a\x74\x15\x55\x54\xa2\x19\xec\x37\x9a\xe5\x4a\x9f\xe7\x9d\xbe\xde\x3d\x57\x60\x42\xa6\x35\xd1\x97\xf4\xd8\x18\xc7\x78\x75\x5b\x8b\x45\xe5\x13\xde\xac\x88\xf6\x04\x25"}, +{{0x95,0x17,0x4a,0x09,0x15,0x68,0x4c,0xdb,0xb6,0x19,0xb0,0x55,0x49,0x5b,0x00,0xf1,0x92,0x82,0xcf,0xfc,0x3b,0x05,0x01,0x9e,0x6a,0xb7,0x09,0xa4,0xa1,0x74,0x2b,0xab,},{0xaa,0x8c,0x87,0x2d,0x7e,0x10,0xb6,0x7f,0x7f,0xf2,0x41,0x72,0xc3,0x63,0x7e,0x80,0x82,0x5a,0x0a,0x71,0xee,0x0c,0x48,0x86,0x3a,0x2a,0xcd,0xcb,0xe8,0xda,0x45,0x9a,},{0x78,0x0f,0x40,0xc2,0x0f,0xea,0x3b,0x11,0xc9,0x42,0x2a,0x43,0xb9,0xa6,0xf7,0x96,0x11,0xe7,0xf1,0xf5,0x9d,0x14,0x88,0xc1,0x5a,0x5f,0xd2,0xd3,0x2c,0x07,0xda,0xdc,0x39,0x1c,0x38,0x95,0x3e,0xdf,0x0d,0xe4,0x8b,0xe5,0x2d,0xa2,0xaf,0x33,0x5c,0x47,0xb8,0xd2,0xe4,0x4a,0xb9,0xd3,0xdf,0xb7,0x6b,0xa5,0x38,0xb0,0x66,0x49,0x52,0x08,},"\x5e\x1a\x74\x00\x45\x6c\xad\x4f\x9b\xa8\x66\x43\xbc\x7c\xbf\x3b\x35\x68\xdc\xb5\x22\xb3\x70\x55\xe8\xc3\x9d\x3c\x80\xf2\x28\x42\x38\xe5\x72\x7f\xd7\x51\x3c\xc8\xb3\x1c\x57\xae\x7b\x40\x50\xaa\x81\x9f\xc2\x36\x09\x30\xeb\x0d\xd6\x77\xa5\xb2\xc7\x29\xfe\xb2\xda\x3a\xd7\x9a\xe7\xfc\xcd\xdd\xb6\xc0\x84\x46\x26\x1e\xc9\xbb\xe5\x9c\x64\xe9\x9a\xbb\xc8\x6d\x3c\x48\x35\xf0\x0f\xef\xe5\x27\x43\x3a\x50\x1a\x3b\x6d\x57\x2c\xf5\xe1\x2a\x88\x01\x0b\x46\xa4\x72\xb9\xbd\x86\x91\xa4\x07\xc3\x65\xf9\xf7\x16\x34\xb4\xd9\x7e\xdf\xdf\xf0\x63\x14\xc0\xc1\xb4\xeb\x93\xc7\x60\x7f\x1d\x6f\xa3\x54\x65\x93\x22\xc2\x84\x07\x3f\x42\x60\x25\x18\xc5\x4f\xdf\x26\xea\x2c\x27\xc8\x0a\x6d\xfa\x20\x56\x83\x91\xab\x35\x72\x82\xc0\x6b\x23\xbe\xdc\x1d\xf1\x26\x4b\x61\x1c\x1e\x9c\xf1\x8a\xeb\xe2\x49\xfd\x86\x17\xc6\xe3\xee\x98\xc5\x3c\x0f\x6f\x21\x75\xc5\x7e\xf8\xe2\x06\xbd\x3c\xf1\x05\x62\x7a\x98\x92\xeb\x68\x99\x20\x21\x3a\xae\xb6\x3d\x87\x66\x3d\xbf\xa5\x3f\x0f\xb2\x81\x62\x69\x48\x29\x6b\x2d\xbc\xdd\xe1\xc5\x1a\xf8\x62\xee\xcf\x1c\xfe\x8a\x46\xa2\xc4\xb2\x8c\xfe\x71\x30\x33\x0a\xd1\x73\xf8\x71\x27\xaa\xca\xff\x43\xc0\xbd\xde\xa4\x8b\x00\x38\x97\x6e\x66\x2c\x04\xb6\xb0\x4a\xd0\x3d\xe1\x24\x62\xc2\x76\x5d\xb5\x35\x04\x95\x20\xcc\x11\x4a\xfd\xb6\xc9\x25\x49\xb0\x54\x6a\x90\x27\xd4\x49\x75\x5b\xeb\x8d\x4c\x17\xe6\xa2\xa4\x75\xf9\x67\x6a\x33\x7b\x4e\x86\x6d\x96\x32\x5e\x38\x9a\x52\xc1\x6c\x51\xe1\x8e\x0d\x81\x03\x34\x0c\x84\x17\xb2\xc5\x7a\x55\xd0\x42\xff\x5e\x5f\xc6\x5d\xf4\x23\xe0\x09\x2b\x0e\xa8\x8b\x96\xa9\x07\xc9\x51\x21\xc5\x47\xa6\x80\x61\xf2\x7b\xcf\xb5\x8c\xe6\xc0\x77\x28\xd4\x84\x6b\xdc\xbf\x0c\x62\x54\x10\xed\xf8\xde\xa8\xcb\x4c\x9d\x0b\xbe\xef\xcd\xe1\x92\x73\x36\x5f\x48\xd7\x5a\xec\x07\xd1\xc2\x2c\xcd\x23\x06\x8a\x97\xc3\xfe\x75\x2e\x87\xa3\x01\x18\xfe\x2d\xfd\x52\x18\xb6\xb1\x25\x15\x4e\x0e\xa3\x86\xcf\x23\x9e\x31\x37\xf8\xca\x6d\x8b\x74\x6b\x6a\x67\xd5\x08\xcf\x8c\x1a\xb6\x3e\x57\x15\xe6\x72\x1e\xda\x5c\x2b\xc3\x93\xa4\x93\xdb\xd2\xf9\xa1\xfa\x92\x6b\x9a\x59\xe4\x5a\x18\x0a\xee\xb0\x25\x99\xa8\xcd\xd6\x86\xf8\x89\xb4\x85\x27\x23\xcb\x6d\xbf\xb5\x01\x4c\xab\x5f\x65\x8a\x30\x9a\x47\x22\x39\x36\x0e\xea\xf6\x4f\xc8\x20\x3a\x3c\x70\x89\x70\xe1\x5c\xbc\xf1\x36\x25\x5d\x96\x44\x6c\x39\xa9\x27\x03\x1d\x26\x7d\x69\xec\xd5\x1d\x7a\xf6\xe9\x1f\xb4\xae\xf9\xd7\x8c\x33\x35\xe9\x07\x11\x33\xcf\xb8\xe2\x12\x99\x90\xc6\x46\x37\xc7\xad\xf1\xda\xef\x2d\xc2\x6c\x11\x63\x39\x9f\x3f\xe1\xe7\x92\x33\x80\x92\xef\x6f\x8d\xfa\xf2\x57\x30\xdd\x2f\xe8\xd9\x78\xf6\xf7\x70\xf5\x2b\x68\x23\x81\x76\x56\x4c\xee\x5f\xbb\x98\x50\xb3\xb3\xa0\x4d\x94\x84\x60\x41\x78\x26\xeb\x2e\xb2\x4f\xcc\x5f\xe3\x53\x34\xbb\x95\x21\xe8\x7b\xc4\xdb\xde\x2a\xc9\xe1\xc9\x89\x49\xdc\x2d\x29\xad\x27\x9e\x38\x84\xb9\x05\x26\x8e\xbd\x08\x08\xbf\x41\x82\x57\xe7\x5e\x26\x2b\x4d\x01\xb0\x24\xa6\xe9\xaa\x7b\xd5\x01\xdb\xa9\x4f\xf5\x06\x39\x4b\x4b\x0a\xe6\x08\x1e\xa7\x30\x30\xc4\x3a\x6a\x91\x76\x6e\x80\xf9\xf4\x2c\x0b\x68\xb9\x84\x19\xad\x4e\xee\x4e\x9a\x72\x8a\xde\xfb\xd7\x9e\x83\x1f\x70\xf4\x1e\x62\xb4\x3f\x0b\xf4\x2b\x3b\x2c\xd5\x3b\x55\x89\x11\x76\x64\xbc\xeb\xc4\x09\xa7\x64\x5b\x1e\xed\xda\x48\x2f\x6b\x68\x95\xa6\x57\xba\x78\x9b\x89\xe5\x02\xd6\x99\x87\x51\xd6\x30\x3d\xed\x5f\xa1\x56\xee\x7c\x7e\xaf\xe5\x46\x26\xd1\x03\x2c\x4d\x7d\xff\x97\x7f\x1d\xcc\x86\xaf\x89\xb1\xe6\x46\xa4\xaf\xc2\x42\x7e\xd0\x2c\x0a\xf5\xd3\x28\x90\xf9\x5f\x13\xf9\x8c\x1a\x5b\x1d\x9f\xbb\x78\x1a\x9a\x89\xb2\xd7\x90\xc1\x46\x5c\x2d\x15\x20\x92\x6f\xdf\x28\xc1\x7d\x9b\xa1\x58\x7a\xd7\x61\xf0\x65\xd3\x39\xbd\xbe\x38\xf4\x13\x3f\x45\xbb\x59\x78\x74\x26\x42\xf9\x0c\x06\x5e\xe4\x89\x25\x73\xf6\x05\x9f\x8b\x4c\xe2\xc1\x3e\x73\xb8\x91\xcd\x05\xf2\x37\x31\xed\x9a\x07\xe2\xb8\xff\xdc\x96\x3b\x06\xa5\x10\x20\x9c\x32\x99\x80\x94\x9f\x40\xd8\x07\x3a\x01\x3e\xf8\x43\xdf\xcc\x4a\x33\x94"}, +{{0x5a,0x84,0xaf,0x28,0xa5,0xdf,0xbb,0x32,0x33,0xa1,0x2f,0x08,0x37,0xf6,0xe8,0x65,0x4e,0x7b,0x0d,0xe1,0x6b,0x02,0xab,0x3c,0xd1,0x78,0x64,0x43,0x1e,0x27,0x46,0x67,},{0x80,0xd4,0xba,0x78,0x9f,0x8a,0x4b,0x20,0x47,0xad,0xaf,0xa5,0xed,0x26,0xcd,0x8c,0x54,0x67,0x33,0x29,0x2e,0x8b,0xf6,0x93,0xcf,0xd1,0x7e,0x28,0x4e,0xfc,0x68,0x71,},{0xa0,0xb8,0x4c,0xa5,0xaf,0x76,0x46,0xe6,0xf6,0x2a,0x69,0x35,0x37,0x94,0x73,0xfa,0x6e,0x4c,0x27,0x69,0x58,0x51,0xfc,0xbd,0xae,0x29,0x17,0xb2,0xdc,0x68,0xd7,0x96,0xe2,0x78,0xd7,0x0c,0xd6,0x7f,0xce,0xdf,0x6c,0xa6,0x29,0xb8,0x81,0xf7,0xc4,0xf2,0xaa,0x25,0x59,0xb2,0x0d,0x67,0x06,0x11,0x76,0x6b,0xd6,0x5a,0xa4,0xfe,0xf2,0x04,},"\x8a\xac\xd1\xb8\xa3\x9b\xf0\x8f\xd5\xc9\x18\x44\x6b\xe5\x76\xe6\xa3\xf2\x7f\x36\x11\x16\x07\xf2\x7b\x56\xa9\x12\x14\xe7\x63\xf9\xa8\x7f\xb1\xd1\x84\x48\x98\x96\x17\x97\x64\x44\x60\xbf\xf5\x48\x8c\x10\x3a\xf6\x05\xe8\x74\x0e\x46\x58\x8f\xb9\x3e\x44\x3c\x3b\xb2\x3b\x92\xc0\x98\x70\xa5\x57\x65\x3a\x1f\x22\xc2\x18\xcc\xbc\x2f\x07\x3a\x27\x2d\x17\xa8\x42\x23\xef\x14\x3f\x4c\x7c\xa2\x58\x46\x0b\x79\x81\x69\x67\x3d\xa1\x07\xd7\x1d\x53\x56\xce\x9f\x75\x59\xa9\xb0\x38\x39\x99\x51\xf5\x75\xc7\x7e\x5b\x9d\x05\x29\x57\x8e\xca\xa2\xe2\x08\x92\x66\xfc\x52\x6c\x5d\x40\x9f\xbd\x46\xbb\x86\x84\x1c\xb5\x54\xf5\xbd\x3c\x99\x71\x3b\x04\x3e\x40\x46\x53\xa7\xd0\x13\x44\xd4\xdb\x83\x1a\x21\x72\x82\xc4\xb3\x36\x40\x56\x53\xb8\x5d\x27\xa4\x6b\x25\x9c\x85\x5c\xdd\x85\xad\x6f\x7a\xed\xd8\x35\xff\x55\x00\xcc\x8b\xaf\x0f\xb2\xf0\x18\x09\x10\xc6\x46\x72\xb8\xa8\xd4\x9d\x98\x4a\x78\x29\x3c\xf5\x77\x9c\x91\x0c\x3a\xcb\xbc\xa4\x55\xa8\x54\x66\xe5\x35\x04\x4f\x34\x80\x26\x2c\x09\x0f\xbf\x4e\x0b\x0d\xb4\xd1\xef\x87\x59\xda\xaf\xdd\x8d\x05\x90\x74\x82\x46\x1f\xf9\x10\xc4\x37\x19\x5d\x5c\x7f\xed\x9d\x82\xcb\x94\xe7\xe4\xec\x24\xda\x05\x3e\x47\xf6\x2b\x48\x8e\xb7\xb2\x44\x65\x5c\x7d\xbb\x20\xed\x60\x7e\xed\x45\x31\x44\x9e\x07\x80\xe6\x1c\xfd\x57\x40\x86\xff\xc5\xdc\x52\x42\x83\x77\x5c\x44\xf7\x54\x7c\xda\xb0\x4a\x51\xee\xe4\xe1\xb7\xb6\x5a\x57\x57\x3a\x92\x48\x4a\x35\x90\x0a\x90\x9f\x81\xe4\x15\x02\x9d\x22\xca\x93\x7a\x3a\xcd\x9e\x61\xf8\xc0\xe6\x86\xb2\xd2\xad\x03\x77\xaf\x8e\xe1\x66\xe4\xa2\x0a\x82\xaf\xf4\x51\xe1\x51\x10\x3e\x0a\x17\x67\xb2\x71\xfa\x9c\x2b\x1d\xd1\x20\xf8\x05\x85\x3b\x3b\x8a\x56\x0f\xc8\xb9\x37\x62\x83\xb5\x11\x24\x32\x4a\x28\x4a\x0e\x9a\xc4\x9d\xf6\x9f\x52\x4c\x8e\x04\x2d\xf8\x2e\xfb\xcd\x16\x88\x1e\xc1\x31\xa1\x52\x10\xdf\x73\xde\x02\x94\x34\x47\xf2\x2a\x2e\xa1\xdc\x8b\xf9\x68\x29\x8e\xe9\x7f\x3a\xd5\x46\xd7\x8b\xc6\x60\x89\x7e\x08\xd2\xa2\x8b\x2b\xa6\x8b\x54\xb9\x54\xf1\x47\x64\x51\xc6\x92\x07\xe5\xdd\x24\x8a\xe4\x7e\xf3\x56\x94\x99\x0e\x6f\x05\x8b\xc0\x01\x7b\x74\x95\x10\x5c\xc8\x73\x90\x66\xaf\xb1\x1e\x1f\x26\x60\x19\x42\x54\x6a\xe8\x49\xff\x2f\x56\x73\x0f\x13\x26\xbb\xee\xa6\x40\xee\x17\x8f\xa2\x47\xad\xff\xef\xc0\x46\x49\x4f\xc7\xff\xc0\x77\x7d\x5d\xbe\x8a\x55\xda\xee\x61\x40\x6f\xe3\xc7\x08\x8d\x43\xd9\xe1\x4d\xa2\x1c\xa5\x2f\xd8\xc1\x60\x09\x1c\x8f\x99\xa6\x7d\xad\x65\xc6\x4f\xea\x9d\x18\xb1\x53\x7d\x06\x1f\x5d\xce\x87\x9e\x0b\xc4\x26\x48\xd2\xea\xa0\x2d\x97\x21\x85\x75\x3c\xb2\xf6\x22\x5d\x8d\x03\xbb\x07\xf9\x44\xb1\x0c\xf4\xea\x22\x27\x5c\x3d\x70\x84\x80\x20\xf3\x0c\x82\x3b\x76\x14\x3a\xcf\x54\x59\x99\xa2\xcc\x4b\x58\x98\xd9\x4b\x4a\x25\xef\xbe\x5a\x60\x33\x1c\xc0\x09\xfe\xc0\xa2\x5b\xc9\x89\x47\xb1\xb7\x13\x9e\x22\xd2\x32\x80\xff\x88\x54\xa1\xec\x76\x22\x1b\x1b\xf3\xd1\x08\x32\x8c\x8a\xc4\x63\xc6\x52\x63\xa2\xd7\xca\x74\x33\x48\x29\x31\xa1\xd8\xfc\x14\x4b\xbe\x9b\xef\x67\x8c\x92\xe1\xc2\xd1\x09\x21\xb6\xad\x43\xa7\x5c\x53\xbc\x07\x58\x54\xed\x2d\x99\xd8\x25\xf3\x0a\x5e\x10\xd5\x17\x43\x8e\x4d\x4f\x71\x13\x42\x9f\x1e\xdb\x38\x7d\x6b\xd7\xaa\xd2\x92\x74\xf8\xd2\xdc\x88\x9b\x7e\xfb\xeb\x58\x68\x6f\x8d\x66\x9c\xea\xef\x92\xc7\x5e\xd5\x30\x7f\x0c\x03\xf5\x90\x01\x81\xce\x57\x3c\x8f\xa2\x86\x75\x20\x5f\xb1\x05\x7f\x62\x6a\xa2\x30\xd0\x3e\x2e\xaa\x8c\xff\xcd\xe2\x00\x81\x47\x5d\x80\xb2\x45\xa1\xca\x60\x45\xba\x20\x4a\xb0\x00\x69\x07\x9c\x63\x7f\xc3\xfb\x3e\x80\xca\x04\x62\xe7\xa4\xcd\xd9\x28\x3f\xf9\x00\x85\x30\x36\x48\x16\x79\x2f\xdf\x3b\x9a\x4e\x4d\xc8\x37\x92\x28\xed\xcb\xb1\x54\xbe\xf3\x87\xd3\x77\x60\xd7\x9a\xfb\xb7\x36\x26\x0a\x1d\xb1\x01\x38\x36\x1f\x24\xb8\x26\xdb\xcd\x5f\x0f\xc9\xe7\x83\x0d\x26\xd8\x0c\x52\xa7\x92\x18\x92\x76\xbc\xe3\x47\x60\xfb\x77\xbe\x13\x12\xac\x8c\xf9\x7d\x92\xcb\xf3\xd0\x77\x80\x28\xdb\x5e\x8e\xae\x89\xe0\xb9\xbc\x87\x78\xae\xb1\x27\x8f\x04\x71\xcb"}, +{{0x79,0x3a,0xc8,0x8d,0x7d,0x3b,0x6f,0xa7,0xf4,0x7d,0xee,0xc3,0x1f,0x68,0xdd,0xcc,0xb7,0x01,0x82,0x0f,0x1b,0x13,0xdd,0xc6,0x52,0xf7,0xc6,0xa8,0x5b,0x60,0x52,0xa5,},{0x91,0xb6,0x22,0x7a,0xcd,0xd1,0x83,0xda,0x62,0xc5,0x19,0x65,0xc6,0x35,0x35,0x8b,0x20,0x4d,0x68,0x3e,0xe0,0x64,0x43,0xcb,0xd4,0x0e,0x71,0xc1,0xf7,0x6a,0xd1,0x02,},{0xa8,0x4f,0x55,0x2b,0xf4,0x43,0x22,0xa6,0xdb,0x24,0x5c,0xa0,0x06,0xd1,0xcf,0x78,0x0c,0x61,0x68,0x0f,0xe7,0x42,0x9a,0x89,0x47,0xc3,0x5f,0x21,0xbc,0x4b,0x44,0x22,0x8b,0xa3,0x0a,0xea,0x0c,0x74,0x4b,0x86,0x64,0x59,0xd3,0xb8,0xac,0xad,0x45,0x3b,0x06,0xac,0xe2,0x47,0xba,0x69,0x52,0x8c,0x6b,0x3b,0xc4,0xb2,0x0e,0x75,0x63,0x0e,},"\xec\x50\xaf\xad\x8a\xde\x74\x05\xe2\xc6\xf5\xc6\x24\x7b\xbb\xcc\xfb\x2c\x17\x16\x6f\x78\x84\xfe\xae\x10\xd9\x0f\x5d\x83\xc4\xb6\xf0\xbf\x76\xde\x2f\x78\x97\xba\x11\x94\xd6\xd3\x44\x9d\xdb\x80\xae\x74\xeb\x8e\xd6\x8f\x04\x9b\x35\xc6\xf2\x19\x16\xdb\x4d\xfc\x27\x24\xdc\x3a\xf7\xad\x8d\xd5\xc4\x4f\x60\xd2\xf4\x9f\xad\xd7\x00\x4d\xa1\x59\x30\x93\x94\x2c\xae\x52\x08\xbf\x54\xcf\x90\x3b\xee\x64\x69\x05\xfc\xe2\xeb\x2e\x37\x0d\x0d\xca\x48\xd8\x20\xad\xea\xb1\x6a\x3b\x67\x5e\x5a\x4a\x8e\x26\x7e\x34\xff\x96\xf3\x12\x2b\x18\xde\x0c\xad\x92\x92\xab\x63\xd2\x6e\x5f\x31\x0f\xa2\x16\x8c\x29\x66\xbd\xb6\x3b\x0d\xe0\x86\x26\x76\x7b\x37\x9d\xe4\x63\x3b\x9f\x3e\xda\x79\x17\x28\x1d\xad\x66\x1e\x9f\x77\x2b\x84\x4a\x79\xe8\x00\xfd\x84\x27\x02\x44\x6e\x4a\xa7\x31\x75\x71\x07\xf3\xfd\x65\x47\xbf\x40\x75\x96\x3d\x5f\xd5\xf5\x8e\x80\x85\x3f\xc4\x27\x51\xdc\xa0\x78\xa9\xfa\x8d\x5b\xb3\xd9\xa3\x4a\xbc\xab\x02\x93\xd6\xce\xae\xc4\x89\x67\xa1\xe6\x22\x43\x98\xca\xd0\xf6\x05\xa3\xbe\x8e\x67\x58\xea\x8f\x29\x20\x9d\x8e\x4c\x4c\xa1\x89\x3b\xaa\xd9\x1e\x37\x9b\xa3\xb1\x73\x30\xc1\x2a\x5b\x6f\x21\x9b\x38\x4a\x8a\xb9\x78\xbf\x1b\x37\xc3\x73\x1a\x1b\x47\x4b\x24\xb5\xd6\x7d\x4c\xec\x28\xaa\xc6\x51\x0b\x11\xf2\xcf\x21\xbc\x16\x96\x3d\x51\xf5\x53\x87\x27\x71\x8f\xc4\xe2\xe5\x17\x2e\x3c\x0c\xda\xbc\x27\x7f\x0d\x70\x37\xc3\x4c\xa6\x8f\x73\x28\x88\x48\xb9\x26\xbd\xe0\xcf\x47\xab\xfa\x66\x60\x09\x16\x94\x6f\x07\x65\x1c\x28\x0a\x20\x86\xb1\x4d\x52\x57\x0c\xc8\xa4\xb7\x43\x58\xb5\x9c\x30\x2b\x9d\x00\xe1\xb4\x98\xf3\xbc\x33\xee\x4e\xcf\x2b\xce\x2c\x65\xed\x7e\x8b\xa7\x4d\x35\xb7\x51\xd3\xc9\x9f\x40\x86\x19\x68\xc2\xb7\xf3\xa5\xbe\x34\x8c\x57\xd9\x3b\x40\xff\xd0\x51\xed\xd7\xca\xca\x6e\xe6\xbc\xa7\x21\xdc\xba\x8d\xb8\xd0\x06\x4f\x54\xd3\x6e\xc5\xe8\xd6\x2a\x71\xfd\x1c\x90\xf1\x49\x24\xf4\x1c\x16\x3f\x00\x7a\xfc\x6f\xbb\xfe\x86\x45\xfa\x47\xc3\xc9\x80\x24\x6d\x1b\x92\x27\x43\x85\x95\x3c\x53\x41\xcd\x64\xc3\x4a\xe9\x71\x7c\xc2\xc3\x7f\x58\x35\x9c\x0a\x99\x91\xc2\x3f\xe6\x37\xde\x6c\xdf\x08\x62\xf7\xd0\x32\x9f\xe7\x58\xaa\x89\x2a\xd4\x58\x3b\x9d\xf2\xf3\x33\x7d\x5b\xe5\x70\xba\x65\x49\x98\xed\x29\x2f\x11\xf0\x17\x72\x38\x2a\x04\x34\x2f\xdd\x99\xe6\x9e\x0d\x97\xc4\x3f\x10\xac\x9b\x96\xf1\x40\xa6\xf8\x3c\x47\x29\xe7\xa9\x00\x47\x1f\x2b\x1d\xf2\x40\x1b\xc5\xc6\x80\x42\x2b\x13\xb0\xc8\x00\x7d\x63\x68\x1f\x66\xa0\x59\x5a\x1c\x5d\x3a\xcd\xe5\xb7\x79\x42\x6e\x73\x6b\xc1\x00\xc5\xe6\xf5\x26\x08\xdc\x39\x1e\x3e\xf9\xb1\xbb\x6a\xf1\x3d\x24\x9b\x7d\x32\xce\x06\x80\xc3\x68\xf5\x4d\x5f\xe0\x39\xcf\xe1\x01\x30\x25\x1e\x4d\xb1\x4c\x79\xc8\xd0\x44\x06\x04\x65\x82\x29\x90\xd8\x80\x93\xcd\x73\x65\x32\x85\x2e\x44\x78\x89\xdb\x89\xcc\x60\x05\x29\x96\xa3\x2a\x64\x36\x5c\x07\x26\x05\x1c\x11\x9e\xda\x90\x1d\xe5\x76\xb3\x34\xfc\x70\x49\x48\x23\x92\xe2\x62\x0b\x0a\x3a\x13\xfa\xb1\xd3\x6f\xc0\xa5\xf2\x3d\xb1\x47\xfd\x85\x7b\x26\xa6\x98\x04\x8f\x8b\x81\x1e\x23\xd7\x22\xe2\xe9\x02\x7e\xd4\x12\x4b\x48\xdc\x5e\x57\x8a\x7a\xeb\x19\xa1\xb4\xf9\x48\xee\x5b\x46\xf6\x5b\x97\x96\x46\xe2\xbe\x07\x47\x14\x11\x8b\xaa\x4b\xfc\x15\xb0\x89\xa0\xe0\x66\x27\xda\x46\xe4\xbb\x06\xaa\x3c\x7c\x5d\xd6\x48\xe0\x3c\x9c\x2d\xec\x3f\xac\xd9\x56\x26\x56\x2f\x30\x00\x88\x32\x30\xd2\xb0\xa1\xf8\xa7\x47\x8c\xb7\x7f\x93\x9a\x5f\x18\x8f\x45\x8d\x10\x37\xb9\x01\x76\x66\x4d\x86\xea\x85\x0b\x8a\xf5\x08\x7f\x86\x60\x5a\x77\xe0\x25\xef\x6c\x7e\x6a\x2a\x59\xf0\x06\xcb\xa1\x89\xfa\xd9\x33\xf4\x2c\x53\x27\x08\x10\x9b\xc1\xaf\x81\x48\x19\x59\x5f\xfc\xb9\x5f\xbf\x5b\x7e\x93\xa7\x11\x97\xe4\x77\xee\x7c\x04\xb8\x51\xc1\xc3\x66\x22\xcd\xd8\xe6\xc8\x60\xd9\xab\x2c\xac\x56\xd2\xdc\x98\xfa\x69\x12\x4f\x2b\xb2\xa6\x47\x1e\x1c\x73\xb6\x61\xf0\x71\xf5\xd8\x6d\xe7\xd1\xde\xaf\xa4\xed\xcd\xc7\xbf\x1f\x70\x5c\x56\x30\x0a\xff\xd0\x58\xb9\x69\x77\x91\x41\x9e\x5f\xb2\xa5\xb7\xf7\x8c\xe3\x40\x1f\xf5\x50"}, +{{0x89,0xde,0x74,0x42,0xd7,0x4b,0xa9,0x38,0x59,0x69,0xc9,0x65,0x1a,0x88,0xfe,0x28,0xe0,0x40,0xd5,0x93,0x90,0x7d,0xac,0x1a,0x39,0x87,0x41,0x8b,0xdf,0xdb,0xad,0x89,},{0xfd,0x3b,0xa9,0xfa,0xd3,0x20,0xeb,0xa4,0x5d,0x07,0xb8,0x4a,0x49,0x7b,0xe1,0x7d,0x3f,0xc7,0xdd,0x99,0x99,0xc9,0x68,0x88,0x3c,0xd6,0xac,0x13,0xb0,0x66,0x9b,0x17,},{0xba,0xb5,0x72,0x84,0xd2,0x0e,0xe5,0x4c,0xc7,0xf9,0x70,0x8d,0x71,0x77,0x06,0xd8,0xfa,0xf6,0xe4,0x63,0x32,0xb0,0x69,0x1d,0x6f,0x21,0x3a,0x8d,0xb8,0x01,0x15,0x5b,0x4e,0x33,0x8c,0x13,0x61,0xb5,0x92,0xbe,0x75,0x85,0x01,0xb1,0x82,0x17,0x93,0xae,0x52,0x27,0xcc,0x3b,0xa8,0xdf,0x8a,0xdf,0xc6,0xed,0x9a,0xca,0xb5,0x4c,0xc4,0x01,},"\x9d\x52\x72\xf0\xb7\x84\x88\x2b\x94\xc7\x6d\xfb\x9d\x46\x0c\xa4\x95\x02\x5e\x0a\xec\x5d\x52\xcc\xff\xfe\xce\x9f\x81\x73\xc1\x05\x58\x26\x6c\x49\x85\x25\x89\x1a\x97\xbf\x38\x78\xe3\x3c\x3d\xe2\xfc\x2e\x52\x55\x0b\x43\x15\x62\xcb\xe4\xa3\xd0\x11\xec\xc9\xe7\x7e\xc3\x6a\xd3\x83\x41\x35\x8c\x88\x32\x1c\x03\xd0\x8b\xb4\x26\xa7\xd5\x85\x41\x71\xc0\x27\xec\x48\xd5\x78\x19\xa9\x1a\xfd\x02\xa6\x18\xcc\xbc\x25\xe6\x8e\x53\x09\xd0\x47\xb1\x56\xe3\x57\x05\x37\x3a\xda\x2e\xb8\x31\x32\x1a\x20\x3e\x1b\xd8\xf0\xef\xec\xc0\x96\x18\x64\x7b\x41\xdf\xf2\x2b\x39\xd0\x22\x35\xf8\x71\x53\x2f\x60\x85\xe9\xcc\x52\xec\x00\x9b\x33\xee\xbc\xdc\x26\x7d\x77\x67\xc9\x0c\x92\x7e\x15\x4f\x72\xf3\xf4\x8a\x34\x95\x63\x19\xb2\x93\xc8\xa8\xb3\xe3\x4e\xfc\x5f\x62\xf2\xb4\xe8\x01\x9b\x50\xa0\x8f\x5c\xcf\x95\xbc\x83\x1b\xaf\x40\x81\x1d\x87\xe5\xed\xbd\x2f\xd5\x36\x5b\x26\xa4\x31\xae\x95\x80\x0f\xf3\x81\xcd\x62\xca\x40\xe1\x86\x6d\x95\x0d\xce\x14\xf0\x30\x91\x8a\xba\xc6\x8e\x79\x16\xdd\xb9\x5a\xdc\x19\x71\x28\x78\x74\xd0\x7e\xb0\xed\xef\x64\x29\x66\x52\xc4\x80\x44\xb0\xc5\x52\x1a\x8d\x27\x0d\x53\xd7\x4e\xc6\x3b\x89\x0f\x33\x63\xf9\x20\x7f\x66\x52\xae\x8e\x78\x35\xc3\x82\x0a\xd6\xd9\xe3\x63\x3f\x4b\xfd\x53\x79\xa4\x4f\x29\xd6\x5f\x36\x09\xfe\x35\x58\x17\xdc\xa5\x51\x8d\xfe\x3b\xd7\x69\x32\x0a\x03\x19\x02\xe9\xcf\x66\x69\xc2\x4f\x88\xb0\x1e\xb3\x69\x95\xbd\xb8\xdb\xed\x6e\xe0\xc9\xb7\xf3\x22\x95\xc6\x1b\xa8\x90\x5e\x55\x98\xf3\xc9\xe1\xc8\xbf\x72\x64\xf9\x82\x93\xfa\xea\x17\x74\x7f\x88\x44\x0c\x31\x81\x8c\x43\x3e\xa3\xd2\x3c\x01\xf4\xf7\xe9\xc3\xdd\x3d\x5f\x32\xec\x9e\xac\xd7\x1a\x09\xe3\xa9\x97\x38\x1f\x1c\xbf\xfd\xf4\xb5\xba\x49\x79\xde\xb7\xb0\x98\x41\xaf\xa3\xb0\x3d\x1c\x93\x11\x09\x7b\x86\x2c\xae\x11\x70\x7c\xbd\x3a\x4a\xe6\xc8\xa2\x6a\x30\x6a\x68\x7c\x41\x4a\x4e\xa1\xe8\x12\xf1\x15\xf6\x0f\x70\xbd\xa7\xf8\xfb\xe7\xbc\x2d\x50\xcc\x55\x0b\xba\x29\x1d\x5e\xc5\x23\x22\x9a\x08\xed\x56\x8b\x5c\xee\x18\xfe\x6f\x46\x78\x2c\x17\xcd\x82\x88\x01\x63\x92\x15\xbc\x5e\x9b\xe4\x55\x5c\x9a\x18\x00\x97\x67\xa6\xc5\xc7\x4a\x82\x29\xd2\xff\xaa\x39\x9d\x8e\x64\x32\x4e\x88\x42\x23\xd5\x07\x0f\x73\x5a\x75\xd8\x5f\xf6\xc9\x4a\x9f\xbc\x2b\x36\x51\x38\x6d\xe5\xa2\x3c\xce\x95\xc8\x78\x81\xc7\x93\x99\xae\x71\xf0\x90\x73\x7e\x21\x87\xfe\x90\x4a\xab\x1d\x92\xd6\x18\x67\x95\xc9\xb4\x6c\x62\xa5\x91\x4f\x36\x30\xfd\xcb\xac\x3b\xd4\xb0\xda\x4e\xc3\x13\x6a\x1f\xb2\xba\x40\x32\x2d\x7c\xc4\x08\x5e\x16\x70\x09\xcf\x74\x50\xfc\x6a\x28\x6c\x2f\x79\x51\xd5\x1a\xae\x23\xb8\xf3\x30\x20\xef\xb5\xe3\x24\x5b\xa6\xa3\x54\x3a\x2b\xde\xc4\x47\xd5\x1a\xe0\x0b\x5e\x16\x78\xb7\x60\x93\xcf\x21\x6b\x95\x07\xc9\x63\xeb\xfc\x02\x4c\xcd\x6e\xf6\xc7\x8c\x45\x72\x27\x3b\xea\xaf\x55\x07\x6d\xc4\x4a\x22\x4b\x58\x61\x57\x05\x79\x19\x65\x30\x7c\xef\xd4\x86\x72\xc0\x81\xbc\xcf\xbc\x1d\x15\xb0\x62\xb3\x8b\x4f\xba\x9b\x9b\xec\x95\x6c\xd1\x44\x44\xee\x43\x7e\x79\x60\xcc\x60\x1e\xdd\xc0\x2f\x1a\x76\xb6\x85\x74\xd5\xf8\x84\x31\x50\xc0\xb9\x00\x99\x34\xa2\xbf\xaf\x60\x57\x70\xc1\x36\xba\x29\xf3\xdc\x7e\x29\x59\x7a\x24\x80\xdb\x23\xe2\xb2\x67\x7e\xc6\xc5\x1b\xd3\x01\xf2\xb5\xa3\x9d\xfd\xa7\xb4\x77\xbe\xdd\x1c\xda\xed\x10\xe2\x9d\x29\x54\x62\x9b\x98\x76\xf8\xee\x54\xe4\x04\x73\x69\xd5\x34\xca\xb5\x4a\xea\x44\x1d\xc9\x47\xeb\x3f\x59\x38\x2b\x21\x83\x60\x57\x2f\x26\x59\x58\x31\x53\xc0\xe2\xb9\x12\xcf\x30\xc8\x15\xb2\x6f\x05\x85\x3d\xd3\x05\x51\xee\xcf\x64\xb8\x58\xa4\x41\xbb\x8c\x6d\xb8\xa9\xfd\xe7\x7a\x32\xa7\xb4\x6a\xf6\x6f\x8c\xb9\xf3\x5e\xe0\xfa\xfb\x0b\xd4\x2d\x9e\x65\xb2\xa9\x05\x82\x41\xa3\x1b\x8c\xa1\x11\x54\x34\x23\x76\x70\xaa\xb4\xef\xf3\x60\x10\xed\x03\x71\xf4\x65\x95\xda\x1b\xdd\x57\x9b\xbb\x67\xaa\xdb\x68\xe7\x7a\xd3\xa3\x8c\x8f\x26\xd2\xaf\x5a\x71\x03\xba\x5f\x22\xb4\x2c\xc1\x2a\x8c\x3c\xe5\xc9\x21\xc9\x1c\xfc\x0e\x63\xdf\x90\x27\xd2\x62\x29\xb1\x04\x7c\xbc\x18\xf6\xb0"}, +{{0x26,0x22,0xbd,0x9b,0xbe,0xf7,0xff,0x4a,0x87,0x62,0x9e,0xa0,0x15,0x3d,0xc4,0xd6,0x08,0xc3,0x1f,0xa5,0x84,0x79,0x88,0xff,0x50,0x0d,0x88,0x06,0x81,0xf1,0x13,0x72,},{0x19,0x97,0x58,0xa9,0xc3,0xd0,0xee,0x3e,0xeb,0xcb,0xbd,0xa3,0xe1,0xef,0x54,0x55,0xff,0x46,0xd7,0x36,0xbb,0x4e,0xf0,0xc0,0x6a,0x73,0x9f,0x9a,0xc5,0x84,0x83,0x95,},{0x43,0x78,0x96,0x6b,0x78,0x31,0xde,0xf4,0xae,0xcb,0x49,0x89,0xbc,0xaf,0x9c,0xae,0x99,0x46,0x1c,0xb9,0xb5,0x9d,0x19,0x51,0x8c,0xc1,0xec,0x7b,0x83,0x51,0xbc,0xd1,0xf7,0x23,0xaa,0xc5,0xf0,0x61,0xb3,0x83,0x63,0x57,0x4f,0xf9,0x6b,0xa1,0x0e,0x19,0x6b,0x1b,0x05,0x31,0xe1,0x18,0x30,0x36,0xa4,0x25,0xe6,0x9c,0x45,0x98,0x04,0x0c,},"\x89\x1e\x82\x12\x25\x47\xd6\x1e\x83\xb0\xab\xaf\x27\xc7\x30\x3f\x05\x22\xa2\xec\x4a\xf4\x4e\xf0\xac\x19\x6a\x99\x78\xb1\xc6\x23\xef\x1f\xa7\x2b\xaf\x70\x91\x0a\x5c\x51\xc4\xf7\x8e\x0f\xe9\xfe\x37\xe2\x43\x9c\x47\x95\x91\x6c\xfa\x22\xab\x47\x1a\x25\x57\xcc\x7b\xa6\xb6\x69\x56\x06\x3d\xde\xb3\x9c\x50\xf1\x4f\x06\x34\x8f\xa6\x6b\x60\x64\xdc\xff\xca\x50\x43\x96\x7f\x05\x25\x4d\x57\x7a\xbf\x22\xae\x8c\x90\x00\x0c\xe2\xe6\xa1\xa8\xb2\xe3\xa6\xb3\xab\xc5\x63\xeb\xff\xb2\x04\x45\xf0\x91\x1c\xc4\x2a\x98\x7f\x84\x56\xef\xba\x41\x30\xe6\x8f\x01\xfc\xdf\x7b\xf7\x71\xfc\x1d\x35\x37\x1a\x0d\x75\xdd\x5f\x90\x00\x2c\x90\xb6\xcb\xad\xe4\x0d\x5b\x23\xfd\xb4\x9a\xba\xcb\x72\x19\xae\x27\x56\x1a\xa2\xa8\x79\xda\x88\xdf\x34\xa8\xc5\x81\xf0\xc6\x71\x98\xff\xc6\x08\xfe\x91\x95\xb5\x55\x5c\x8a\xe9\x34\xc8\x30\xaa\xe2\x88\x5b\xea\x87\x48\x74\x48\xe1\x1b\x4f\x2f\x17\x2e\x4d\x5c\xfe\x4f\xd1\x13\xf9\xd2\x01\x6c\x24\xa7\x34\x51\x2b\xb9\x18\xf5\x75\xe7\x54\x13\x97\x18\xe3\xd2\x0e\x79\x0a\xbb\x94\x2c\xba\x3e\xc8\xb2\xdb\x59\x07\x96\xdc\x43\x5f\x13\x9f\xc6\x4d\xdc\x85\xa2\x24\x94\xef\x2b\xfa\x1f\x5c\x0f\x18\x75\xea\x58\xe8\x4e\xb3\x74\xec\xf8\xce\xc6\x46\x8b\x6b\x09\xd1\xe7\x4f\x15\x41\xed\x45\x4a\x28\x07\xd3\xf4\x05\x35\x66\xb0\xe4\xe2\xc6\xae\xce\xd1\x0d\xc0\x07\xe9\xdf\x41\x6f\x26\x7f\xcb\x3f\xe1\x7b\x8b\xac\xe0\x3f\x07\x43\xe0\xe6\xd4\xa4\x8c\xe7\x6e\xdf\xf6\x0c\x0e\x3a\x30\x84\x56\x99\x54\x13\xc1\x07\x6f\xf3\x7e\xcf\x23\x81\xa0\xd4\xe9\xe4\xa9\x13\xa2\x58\xd9\x83\xb9\x69\x6b\x5c\x45\xaf\x37\xc8\x68\x40\x70\xe4\x00\xb8\xf8\x65\xa5\x04\x04\x3f\x45\xd7\x8b\x97\x13\xf3\x35\xaa\x41\x6a\x46\x16\x64\x10\x73\x5f\xb5\xd8\x22\x10\x45\x8d\x5a\x08\xa1\x04\xd4\x00\x2a\xb6\x11\x88\xf9\xdf\x45\x7d\xd7\xed\x59\x37\xca\x50\x77\x60\x6b\x41\x8b\xbc\x86\x84\xa1\xd5\x25\xbf\xa5\x51\x08\x76\x40\xb1\xd1\x77\xca\x6d\x4f\x64\x71\xb3\x9b\x2c\xe4\x3a\xfb\xf8\x28\x5e\xcd\x68\x7e\x43\x8f\x44\x25\xdf\x56\x8a\xb8\x6f\xa2\x31\x63\x49\xa1\x10\x2b\x41\x43\xd7\x1e\xf4\xe2\x4f\x5c\x53\x0c\x77\xaf\xb0\x10\x07\x88\x63\x64\x40\xe7\x40\x67\x5a\x61\x74\xc5\xf0\x57\x10\xb2\x53\xa4\x11\x17\x3f\x9e\x82\xce\x6e\x22\xf4\x09\x5e\x77\x14\xb8\x73\x7e\x14\x7a\xa0\xf2\x31\x91\x57\x8f\xfd\x93\x82\x3c\xe4\xbf\x91\xc1\xd1\x10\x98\x2a\x5d\xa0\xe4\xb8\x1b\xd2\x5b\x9b\x9c\x21\x42\xa7\x67\x1e\xe9\x37\xc9\x0f\xd0\x71\x5e\xc9\xaf\xa4\x4d\x86\x04\x68\x98\xb4\x2f\x75\x35\x89\xd2\x26\x8d\x2a\xaa\xa9\x85\xcc\x90\xe0\xf9\xe8\x27\xa3\x92\x3e\x77\x16\x34\x6f\x4f\x89\x31\xc7\x28\x21\xb3\xeb\x64\x5d\xaa\x74\x52\xc8\xaf\xc8\x98\xd7\x97\x55\x45\xc1\x2d\xa1\xbd\xb2\x09\x04\x5c\xb0\x0f\x4b\xfd\x53\x83\xdf\x01\xf0\x03\x68\x0b\x97\x34\x40\xf1\xa3\x9c\x9d\x82\x09\x59\xef\x6f\x85\xbd\x33\x63\x90\x65\xae\xfd\xc8\xbc\xfe\xcb\xd9\xb9\x55\x40\x49\x73\x8a\xf2\x9f\x12\x94\x63\x9d\x39\x15\xd6\x32\x99\x5e\x8f\xaf\x71\x3e\xf2\xee\x3c\x29\x8b\x55\x96\xfa\x10\xc9\x9f\x94\x6d\xdb\x32\x34\x06\x95\xdf\x1c\x19\x45\x94\xea\xf3\x77\x8d\x73\xc8\xba\x60\x40\xc0\x4e\xb3\xa4\xff\x86\x77\x93\x6b\x88\xe0\xc5\xf0\x44\x14\x80\xd1\x07\xd7\xac\x22\x02\xb3\xb6\x94\xe5\x7c\xcc\xa6\xd8\x25\xe2\xa0\x7e\x81\x2e\xd2\x9b\x2c\x20\xd5\xc6\x05\x47\x15\x79\xe3\xed\xff\xc2\x23\xf2\x42\xc5\x93\x91\xdb\x41\xe9\x8d\x5f\x3d\x6c\x5b\x1e\x32\xac\x82\x37\xfc\xfd\x10\x20\x54\x3a\x40\x41\xe0\x3d\x92\xad\x3e\x2e\xc5\x52\x91\x47\x07\xc7\x7c\xd0\x1f\x3e\x48\x01\x14\x44\x28\x3f\x09\x68\xfa\x4d\xee\xee\x55\xc4\x56\xed\x1f\x87\x7a\xde\x04\xac\x8e\x8d\x2c\xb6\xc8\x58\x20\xb4\x92\x9b\x25\xbf\x31\xe9\x25\x43\x5d\x6b\xcc\x50\xd3\xe2\xe9\xb8\x51\x02\xe9\x70\xd7\x89\x5c\x25\xad\xe5\x21\x61\xa3\xb6\xbf\x50\x1a\xb0\x19\x61\xcb\x63\xed\x99\x0a\xeb\x93\xed\xa3\x82\x8b\xf0\x4c\xa5\x28\x53\xc7\xb6\xb8\xe9\xe4\x9e\x34\x9d\x69\xb5\x3b\xe0\x74\x85\xf5\x42\xb7\xcd\xd0\x6b\x52\x7d\x41\xdd\x11\x9c\x70\xb5\x64\xf1\xa9\x3a\xec\x62\xae\x74\xe6\xe8\xf8\x55"}, +{{0xae,0xb1,0x3c,0xcb,0x90,0xc8,0xcb,0xef,0x90,0xd5,0x53,0xda,0x3f,0x69,0x01,0xb3,0xd7,0x5c,0x13,0x01,0x1f,0x02,0x49,0x74,0xda,0xf7,0x9a,0x17,0x89,0xc8,0xc6,0x32,},{0x5f,0xaa,0xfe,0xb5,0x95,0xf1,0x6d,0x33,0x8f,0x1c,0x72,0xa9,0xf3,0xe4,0x98,0xf3,0x8b,0xab,0x69,0xa8,0x1b,0x37,0xd2,0xd0,0x92,0xb7,0xbf,0x7e,0x50,0x5d,0x82,0x0d,},{0x06,0x11,0xb1,0x9a,0x74,0x72,0xa4,0x43,0xe8,0x7e,0x54,0xd7,0xc6,0x64,0x7f,0xaa,0xb1,0xb7,0x9a,0x83,0xfd,0x43,0x71,0xc9,0x2b,0x97,0x54,0x00,0xfd,0x62,0x8a,0xcf,0xc3,0x25,0x77,0xcc,0xbb,0xaf,0x03,0xd8,0x8f,0x89,0x3c,0x88,0xf2,0xca,0xc7,0x84,0xc7,0x22,0xa0,0x8f,0x38,0x7a,0xbc,0x31,0x9a,0x70,0x2c,0x86,0x84,0x79,0x65,0x0b,},"\x86\x1a\x10\x18\xd6\xbd\xc4\x80\x5a\x5c\x4d\xf8\x7e\xfa\xa4\x62\xc6\x8b\x4b\xf4\x06\x5c\x68\x4c\x2a\xf1\x31\xc6\x37\x73\x88\xba\xee\x58\xc6\xc8\xf8\x84\x23\x62\xec\x6e\x3b\xce\x07\xc8\xaf\x55\x88\x5e\x82\xdb\x87\xa1\x52\x27\x80\x0d\xd3\x3a\xfc\x5e\x5f\xd1\x57\x01\xe9\x5f\x53\x50\x1b\x1a\x6f\xf8\x3c\x64\xe8\x51\x71\x49\xbf\x3f\xf0\x11\xb0\x94\xa0\x9c\x67\x3d\x0f\xc4\xa3\x9e\xe5\x5e\x69\xf0\x71\x17\x7b\x8a\xa3\x64\xe1\xe2\x56\x06\x4c\xf7\x02\x79\xcc\x76\x69\x5a\xe4\x9d\xaf\xcd\x80\xca\x0a\x14\xe1\x69\x1d\xb9\x46\x42\x2e\xc7\x5a\xb4\xf7\x86\x59\x15\xa6\x9b\xd4\x8d\x89\xb1\x2a\xdf\x48\x7d\x4d\xb9\xbe\x87\xcd\xdc\xa2\x11\xaa\x88\xe9\xbb\xe8\x49\xda\x21\x39\x89\xeb\x08\x44\x59\x2a\xd6\x3e\x28\x1b\x2e\x4a\xfe\x6a\x88\x36\x00\x66\x09\x92\x6c\x0f\x78\x7e\x84\xf2\xa9\x5b\x46\xb6\x6f\x0e\x45\x55\xc9\x48\x3c\xe2\x17\x6f\xc6\x3f\x7c\xc9\xf4\xf2\xa2\x2d\xb0\x55\xaa\xe2\xe6\x8b\x30\xa0\xda\x5f\xeb\x80\xc2\xa6\x0e\xa1\x0d\xbf\x67\xfb\xbc\xdb\xe0\xbe\x33\xf2\xe9\xc1\x3c\x46\x9e\x77\x68\xf2\xff\x59\x60\xa5\x5e\xb4\x82\xec\x11\xd4\x7e\x15\x4b\x7c\x42\xa5\xfb\x75\x6c\x8a\xd5\x39\xb3\x3d\x12\x5a\x4a\x65\x19\x2c\x6c\x9b\xd5\x76\x23\x8c\xa7\x2a\x73\xcd\x17\x9e\x8c\xf5\xcd\x04\x8e\xd3\x30\x21\x38\x23\xab\xba\xfc\x36\x82\xb2\xb7\xf6\x8c\x5b\xc4\x6f\xd0\x9a\x8c\xb2\xa3\xfd\x09\x95\x73\xee\x2e\x6f\x28\xc8\x2e\x27\x1b\xb5\xef\x93\x4b\x0b\x0c\x38\x1c\xfa\xae\xc6\x66\xd7\x17\x10\x6a\x87\x4a\xf3\x0a\xa7\x41\x25\xea\xe9\xac\xc2\xf1\xf2\x41\x18\xcb\x4e\x68\x3a\x73\x1e\x37\xe5\xe4\x64\xa1\xea\x3d\x2a\x53\xcc\x0d\xca\xd4\xc1\x7c\xea\x9a\x43\xe2\x36\x5f\x3a\xe3\xdd\x89\xeb\x39\x97\x74\x20\x04\x55\x50\x74\x5f\xc2\x67\xfc\x7d\xcc\x56\x02\xe9\x14\x97\x2a\x4d\xa6\xeb\xeb\x68\x7f\x68\xa0\xcd\x7d\x8b\x4f\xdd\x73\x72\x21\x06\xa8\xe4\x36\xb9\x3e\x5b\x58\xf5\x98\x2a\xce\xcd\xec\xfd\xb3\x82\xfe\x98\x53\x82\x61\x42\x6b\xa6\x40\x52\x55\x76\x43\xce\x9f\xec\x71\xea\x43\xcf\x5b\x6c\xba\xde\xb4\x95\x31\x93\xff\x3e\xd1\xa1\xf9\x22\xa9\xaf\x2e\xc6\xf3\x38\xe7\xfb\x0a\xff\xe3\xd1\x3c\x33\xe3\x95\x87\x3e\x4a\x7a\x7f\xb0\x44\x98\x1e\x05\xa6\x71\x97\xb9\x96\xb1\x99\xb4\x30\x11\x11\x93\x63\xe5\x61\xd5\xb8\xa5\x17\x84\xfd\xff\x58\xab\x80\xed\x4c\x49\xe9\x3f\x0c\xf4\x19\x24\xf9\x83\x5e\xfb\x09\xf6\x44\x63\xb6\x55\x17\xb6\x7b\x15\xdc\x3f\x28\xad\x9a\x9b\x2d\x29\x46\x8d\xe2\xc6\x3e\x62\x00\x4b\x6a\x3f\xd0\xc5\xc2\xe2\xaa\xa6\xcf\xa1\x5e\x4f\xaa\xfa\x1e\x2c\x71\x3e\x98\xd3\xfd\x25\xca\xb9\xe5\x17\x03\x59\xc8\x36\x51\x52\xb4\x74\x27\x6e\xd0\x03\x7c\xdf\x77\x18\x28\xe2\xfb\x7c\xce\xc4\x89\x5f\x21\xad\xcc\x5b\x68\x87\xc8\x6e\x51\xad\x05\xf2\x55\xf6\xe9\xda\xd2\xc4\x1f\x56\xb9\x8b\x7b\xbb\xf9\xfc\xb6\xba\x8c\xad\xfd\x38\xad\x8c\x62\xf9\x2d\xd8\x77\x40\xfa\x1e\x1b\xd1\x70\xc0\x0b\x20\x49\xc5\x13\x0f\xe7\x33\xf1\x6b\x1f\x2c\x7f\x00\xb2\xef\x97\xb3\xa9\x54\x58\xc5\x3f\x19\x9d\x46\x53\x36\xd5\xff\x59\x77\x80\x6e\x1a\xfd\xe3\xea\xa2\x46\xd8\x5c\xab\xf7\xe1\x23\x48\x1e\x23\x92\x99\x76\xed\x19\xc4\x0e\x29\xff\x33\xd8\x0e\x7d\xea\xb1\x92\x71\xde\xcd\x5e\xe0\x61\x72\xb0\xb0\xa1\x39\xbd\x62\xa2\xe7\xc8\x3a\x8a\x65\x60\x1d\x0a\x05\xd6\x1a\xf9\xc6\x03\x2d\xf5\x80\x01\xd4\x73\xe2\x0d\xd6\xc6\xaf\xd7\x8d\xdb\xd7\xcd\x17\x8e\x9c\x27\x1e\x05\x72\xf8\x59\x82\x82\x3c\xe6\xc4\x02\x93\x0c\xf8\x0f\x5e\x0c\x7c\xda\x85\x12\x2a\x76\xd1\xce\x02\x1b\x1e\x3d\xe2\x55\x6d\x1b\x45\xac\x7b\x01\xb5\x9c\xad\xa2\x52\x91\xd6\x38\xa5\x2a\x5e\x7d\xbc\xdd\xf9\x6b\xb1\x77\x4a\xb0\xb0\x77\xe4\xb3\xda\x5a\x95\x8f\xe1\x1d\xee\x4a\x02\xe6\x9b\x91\x8d\xdb\xfa\x1c\x5b\x3b\x7d\xca\x9f\x87\x84\xbb\x6b\x0b\x9d\x5a\x7f\xee\x74\xbb\x03\x74\x7f\x61\xc2\xb2\xf1\xb4\x92\x45\x2d\x3b\x56\x0b\x48\xd3\x9d\x87\x21\xe9\x83\x75\x25\x56\xd4\x4d\xa6\xb0\x28\xd9\xae\xf8\xbf\xf9\xaa\x37\x9c\x8e\x2b\x0a\x63\x6d\x74\x88\x60\xab\xd8\xe6\x4f\xc8\xe9\x65\x20\xa3\x4a\x27\xf7\x67\xaa\x97\xa8\xf7\x7b\x60\x95\x21\x8e\xad"}, +{{0x73,0x87,0x2b,0x14,0x76,0x2f,0x68,0xda,0xe4,0xfc,0x10,0xdf,0xd6,0xf4,0x2d,0x3f,0x96,0x22,0xbf,0x2a,0xfe,0x6b,0x34,0xa9,0x56,0x49,0xaa,0x38,0x74,0x24,0xee,0x6c,},{0xdf,0xab,0x2c,0xe1,0xab,0x99,0x81,0xaa,0x7c,0xbf,0x32,0x07,0x35,0x00,0x07,0xfa,0x6c,0xe6,0xca,0x60,0xa2,0xed,0x7b,0x59,0x0f,0x3c,0x2f,0x62,0x92,0x2d,0x8f,0x61,},{0x85,0x25,0xc3,0x46,0xca,0x3a,0x6a,0x6c,0x5f,0x65,0xc4,0x17,0x78,0x59,0x93,0x77,0x65,0x98,0x70,0xcb,0x6d,0xf9,0xa4,0xa0,0xe5,0x5b,0x40,0xc3,0x5b,0xeb,0xa5,0x5c,0x8e,0x00,0x9e,0x56,0x00,0xb6,0x44,0x7d,0xc7,0x40,0x2b,0xa2,0x77,0x49,0x29,0x7e,0x8f,0x95,0x28,0x69,0x18,0x56,0xf7,0x2d,0x2a,0xd7,0x61,0xed,0x1b,0xc1,0x53,0x09,},"\x43\x3d\x71\x78\x1c\xea\xb2\xb4\x7d\x82\x6e\x67\xd3\x9f\x9b\x80\xd2\xff\xd7\x25\xf8\xc5\xae\xb4\x0c\xbe\x4f\x9b\x5f\x48\xef\x93\x52\x1c\xce\xc6\x04\x36\x0b\x96\x47\x32\x31\x90\xbf\xef\x75\xac\x93\x15\x62\xd2\x7f\x4a\x4e\x31\xf4\x6e\x57\xbc\x99\xfa\x51\x58\xc8\x2e\x12\xb7\x37\xe4\x5c\x5d\xe9\xf7\xdd\x7c\x86\x22\xd4\xa7\xea\xad\xf7\x20\x2f\xb4\x9d\x81\x9c\x9a\xd2\x4f\x88\x07\x31\x3c\x5f\x37\xdc\x20\x45\x3b\xdf\x05\xc9\xbf\x1a\x3c\x21\x17\xc9\x3e\x7f\x3c\xc8\xa2\x54\x20\x98\xe8\xfc\x1c\x64\x2f\xa4\x7b\x05\x54\x36\x57\xb8\x5f\x48\x0b\xc8\x6e\xc4\x28\x00\xbb\x14\x22\x35\x9c\x7c\x3e\x8f\xf4\xbe\x59\x8b\xd5\x4f\x1d\xc5\x86\xac\xae\x45\xa4\x74\x06\x22\xb9\x62\x74\x2b\xc8\x6e\x17\xcf\xa6\x3e\x77\x53\x54\xe7\x70\x7e\x50\x79\x58\x9e\x8d\x10\x8b\x1f\x11\xda\xce\x05\x75\xcb\x9a\x6d\x26\xb5\x9f\xce\x98\x14\x65\xd9\xbc\x34\x4e\xa6\x94\x5a\x95\xb8\x62\x79\x63\x84\xfa\x81\x70\x56\x08\x57\x45\x7b\xef\xf9\x5a\x9b\x5a\xc3\xd6\xad\x28\x2d\x44\x92\x9a\x30\x30\x26\xb4\xbb\xed\xd6\x0e\x2e\xf0\x55\xa3\x1f\x52\xd7\xce\x8d\xf2\xca\x5d\x18\x51\xc5\xb1\x67\xdb\x08\x09\x25\x9b\xb8\x12\x56\x90\x74\x10\x5c\x73\x4c\x85\xd6\x23\x12\x73\x75\x5f\x3a\x8b\x56\xdc\x50\x8d\xb5\xc2\x3d\xac\xb7\xa0\x61\x67\xbd\xa5\x1b\xc0\x13\x50\xf0\x16\xcd\x41\xb2\x1e\x8c\xc5\xbc\x93\x34\x3a\x9b\xb6\xea\x47\x38\xc5\xc8\x4b\x78\xfa\x96\x3c\x41\x0e\x43\x3d\xc5\x98\x19\x6c\x22\xe5\xb7\x91\xe1\x2a\x4b\x34\x3f\x7c\xd4\x7b\xbb\x0e\xb0\x78\x2b\xdb\x1a\x4e\x46\x68\x46\xa0\x30\x52\x8e\xeb\x89\x05\x6f\x73\x25\x71\x93\xad\xaa\xbc\x1b\x22\x98\x62\x03\x48\x78\xc3\x25\x8a\x53\x25\x48\x76\x2e\x29\xec\xc0\x01\xab\xd9\x89\x64\x9d\xa5\xe1\x44\xcf\x35\xd4\x86\x99\xf2\x3b\xc4\x6c\x5b\x34\xe0\x4a\x53\xe7\x27\x24\xb2\xb0\xb8\x78\x98\x25\x75\xd6\x88\xe2\x3c\xbe\x3a\x34\x06\x7f\x49\x71\xe5\x55\x97\x2e\xc2\x90\x8a\xe5\xf0\x3e\x88\x31\xec\x67\x75\x5b\xe9\x56\x87\xce\x63\x72\x93\x9e\x1e\x2f\xb6\x95\x1e\xc9\xec\xf4\xbf\x7d\x15\x35\x43\x1e\x25\x9f\x29\xad\x43\x12\x22\xb5\x4b\x65\xaa\x7d\x07\xcf\xb5\xdf\x16\x2a\x87\xc4\xd0\x34\x81\xeb\x44\x1f\x22\x1d\x7f\x58\x62\x7a\x14\x16\x4e\x7f\x4c\x2e\x3a\x1d\x50\x7e\x89\x9d\x53\x58\xe0\x08\x29\xb0\x8c\xf3\xae\xcb\x8a\x75\xb2\xa3\x1c\x31\x85\xa5\x80\xe1\x2b\x13\xf0\x64\x28\x69\xff\xfb\x05\x67\x23\xe9\x61\xaa\xf6\xfe\xfe\x67\xb4\xa7\xc4\xc9\x3d\xb3\xfe\x1f\x61\xad\xcc\x76\x55\x69\xa9\x9c\x09\xa3\xc8\x24\xed\x4a\x98\xba\xbe\xae\x43\xef\xb1\xf3\x51\xba\x13\x0e\x22\xaa\x97\x81\x19\x86\xbe\x92\x3c\xc4\x18\x0a\x7c\x4b\x78\xbc\xc1\x40\xce\xc1\x55\x74\x65\x4a\xa6\xd6\x5a\x06\xb9\x7e\xcf\xa5\xf3\xa9\x35\x5f\x96\xe4\xee\xaa\x76\x89\x21\x7b\x66\x3f\xba\x4d\xab\x0d\x99\xb1\x9c\x8d\x8d\xbf\x47\xa1\x57\xe5\xd5\x96\x9a\x35\xef\x84\xdf\xf9\x56\x2e\xdd\x43\x4e\x73\xae\xe7\xd0\xd8\x92\xdd\xa7\x2a\x36\x2a\x22\xa7\xe9\xfa\x86\x34\xa5\x7e\xeb\xd1\xa9\x07\x48\x5c\xa8\x92\x1b\xdc\x19\xee\x9e\xe5\x88\xf3\x95\x68\x7d\x3f\xc8\xf8\xc2\x5f\x2e\x95\x76\xca\x60\x31\x3f\xbb\x2c\x26\x5a\x99\xf2\xcd\xd5\x57\x5b\x1d\xd5\x30\x60\x4e\x9a\xd6\x69\x5c\x9f\xb3\x59\x94\xa8\xb8\x7d\x5c\x85\x70\x54\x9a\x4d\x32\x9b\x9f\xe0\x87\x06\x9a\xb7\xeb\x0d\x71\x4a\x94\xe1\x92\x61\xf8\x6e\x44\x8f\x2d\xa9\xb1\xcb\x0c\x0d\xbe\x41\xd4\x4c\x3a\x82\x47\x83\xd1\xbd\xbd\x73\x26\x05\x1a\xeb\x10\xad\xab\x80\x5c\x5c\x59\xd0\xe8\x3b\x1c\x11\xa2\xfd\xd3\x5e\x44\x4a\x49\x9e\xd1\x5d\xaf\xd8\x38\x62\x77\x5f\x6c\xdf\xc6\x75\x95\x81\x84\x07\xbe\x55\xec\xbf\x7b\xf8\x6c\x73\x06\x9a\xac\xe5\x77\x62\x6a\x85\x63\x53\x6f\x60\x50\x42\xcf\x7c\xaa\xf6\xfc\x8e\x3b\x54\x5b\x77\x41\x4d\xf8\xd9\xf6\x49\xb9\x9e\xe4\x25\x41\xda\x38\xc3\xaa\xe6\x27\x20\x78\x45\xb8\xf4\x14\xa8\x07\x4d\x70\x86\x8a\x5c\x0b\x07\xb0\x70\xc3\xc6\x53\xbe\x04\x07\x6b\x83\xca\xd7\xb0\x30\x5d\x95\x00\xaa\x44\x45\x5c\xb8\x60\xdc\xc7\x64\x00\xaf\x93\xc3\xd2\xef\xb4\x2a\xe0\x56\xf1\x42\x8b\x65\xf1\x22\xe1\xc7\xb9\x58\x4d\x81\x4d\x50\xac\x72\xef\xdb"}, +{{0x67,0xcf,0x27,0x15,0x52,0x87,0xbe,0x6b,0xfa,0xb6,0x62,0x15,0xe0,0x17,0xc3,0x46,0x63,0x22,0xf2,0x1e,0x6e,0xb1,0x40,0xbe,0x4f,0x1b,0xde,0xcf,0x55,0xab,0xfd,0xc1,},{0xd0,0x70,0xaa,0xb2,0x95,0xa8,0xaf,0x93,0x57,0x27,0xc3,0xbe,0x44,0x2b,0x25,0x1d,0xb9,0xe7,0x74,0xd2,0xf4,0x4b,0x3c,0x24,0x24,0xc5,0x2f,0xc8,0x96,0x56,0xe1,0x69,},{0xc9,0x34,0xa3,0xa1,0xaa,0xab,0x78,0xd9,0x26,0x9d,0x1e,0x9d,0x13,0x39,0x2f,0x72,0xc6,0x37,0xbc,0x5d,0xe5,0x4f,0x04,0x69,0x1e,0xfc,0x29,0xd4,0x73,0xb4,0x75,0x02,0x5d,0x8d,0x8f,0xe3,0xc5,0x23,0xd2,0xd2,0x9c,0x41,0xc5,0xf3,0xde,0xc6,0xca,0x38,0xce,0x6d,0x68,0xd7,0xff,0x09,0xb6,0x13,0x5b,0xa2,0x4d,0x0d,0x32,0xcc,0x15,0x02,},"\x0f\xf0\x52\x97\x03\x1c\x89\x27\x74\xcb\x2c\x01\xe8\xca\x60\xdd\xd0\xce\xac\xc0\xb8\xd5\x91\xa8\x91\xe3\x3b\x19\xe1\xbe\x9e\x36\x3b\xc6\x42\x0d\x6f\x52\x9f\x04\x84\x0b\x3b\x08\x85\x3c\x83\x5a\x03\xe0\x36\x97\x8b\x04\xa4\xf9\xec\x6b\xe4\xae\xf3\x31\x95\x61\x90\x99\x6d\xea\x27\x26\x19\xf1\x68\x6d\x33\xbe\xf0\x3d\xbc\x08\x5a\x92\x3a\x0f\x11\x5b\x78\xf6\x53\xfe\xeb\x60\xbb\x9e\x45\xf3\x4f\xb8\xbe\x5a\x4c\xbb\x64\x8c\x7d\x29\x95\x6f\x0d\x0e\x96\xbd\xd3\xc8\xd0\x64\x97\x20\x62\x4c\xbc\x20\x79\xe8\x4f\xd6\xd0\x10\x24\x11\x24\x09\x84\x59\xf1\x2a\xf2\x99\x1d\x38\x28\x77\x0f\x50\xb1\x04\xea\x6e\x5f\x51\xfd\xad\x30\xa9\xb8\x07\x9d\x21\x59\xe4\x6d\x64\xaf\x91\xd0\x7c\x10\xed\x19\x81\x4d\xf2\xaf\xe6\x60\xd7\xd8\xf2\x40\x35\x34\xe9\x2c\x62\xe1\xea\x6d\x68\x82\x03\xbc\xa3\xd9\x7c\x2a\xfd\xa8\x3b\x25\x55\x20\xff\xe9\x2a\x33\x62\x57\x72\x51\x3b\x1f\xe3\x4f\xaf\xe3\x2b\x6a\x9b\x8c\xf9\x94\xdf\x7e\x63\x4e\x68\x65\x91\xe5\xf0\x07\x3a\xba\xbc\x64\xa8\x92\x10\xba\x53\xa4\x99\x1c\x11\x55\x7e\x03\x34\xe6\xc6\xa5\x03\x6c\x64\x2a\x31\x8f\x22\x95\x11\x71\x39\x08\x5f\xb3\x40\x75\x64\x70\x06\x75\x8e\x32\xbc\x00\xad\x10\x9f\xe8\x03\xf7\xee\x9f\x5e\xc2\xaf\x4d\x25\xc3\x07\x0a\xbc\x51\xcf\x4d\x78\xe1\x3a\x7c\xe2\x83\xd4\xfb\x4e\xb4\x1d\x3e\x8c\xe9\x02\x38\x50\x0a\xe0\xce\xda\x32\x0e\xc5\x92\x2e\xfa\x10\xb9\x03\x74\x8e\x1e\x85\x3a\x37\x29\xd2\x4c\x10\x54\x39\xdf\x2f\x70\x00\x12\x3d\xb9\xb2\xc0\x15\x33\xbb\xf0\xd0\x28\xeb\xb2\xfc\x00\xdc\xe3\x8a\xd0\x63\x28\xee\x9e\xcd\x84\x9a\x6e\xfc\x3a\xe8\x84\xef\x69\x33\xcf\xeb\xed\x05\x5b\xb2\x96\x8a\x0b\x06\x76\xb5\x72\x92\x16\x17\x8c\x75\x19\xef\x07\x88\x59\x3f\xc0\xdc\xff\x50\xd7\xe0\xb1\xeb\xb3\xcf\x49\xbb\xd1\xbf\xa5\xc3\x0e\xa7\xb8\x8c\x36\xe1\xa1\x59\x3a\xef\x0b\xb3\xf9\xe2\x09\x1c\x85\x89\xf7\x41\x4b\xee\xd8\xdf\x46\x6a\x2e\xd8\x7b\x2c\xb5\xf3\x5f\x1d\x31\x24\x6c\xeb\x96\x86\x09\x25\x36\x15\xd7\x80\x43\x51\x73\x79\xee\x69\x74\xa6\x69\xcb\x48\xda\x6a\xc2\xf9\x6d\x70\x0b\x7e\x44\xa4\x35\xcf\xef\xec\x40\x2a\x1e\x31\x10\xe7\x69\x81\x92\x4f\x26\x01\xc0\x1d\xc0\x35\x46\xfd\x4f\x51\x16\x49\x30\x2f\x06\x33\xdf\xbd\x25\x65\x1c\x5a\x59\x9c\x90\x95\x44\x89\xc7\x6a\x65\xec\x05\xa7\xe4\xcc\x74\x61\x6c\xe2\x56\x01\xcc\x37\xb8\x04\xe1\xf0\xbc\xc8\x65\x10\x23\xb1\x2e\x13\x56\x84\x41\xe8\xb8\xef\x4c\x30\x5f\xcd\xad\x3d\x2b\x13\xfa\x08\x03\x24\xb2\xfd\x6b\x61\x99\x8c\xf8\x64\xb6\x58\xbc\x7f\xef\xcc\x48\xa5\xa7\x68\x1d\x7c\x86\x6c\x34\x2c\x7f\x5d\x6c\xf1\x08\x81\x52\x2c\xc7\x10\x25\x7d\x25\xa4\xc1\xe3\x52\xd2\x70\xe9\x02\x08\x2a\xb9\x54\x1d\x59\x00\xce\xff\xa0\x91\x4b\x16\xb5\x5e\x0d\xd3\x78\x6e\x98\xd4\x17\x20\x87\x5a\x14\x8e\xb4\xab\xdb\x01\x53\x85\x66\x79\xfb\x98\xc0\xec\x48\x5e\x5f\x45\x8d\x63\x5b\x78\x61\xa2\xb3\xa8\xba\x5e\xc2\xc1\x44\x4d\x35\x39\x80\x20\x0e\x5e\x07\x18\x08\x85\x4a\x26\x8c\xc7\x6c\x60\x5c\x94\xf3\x73\x29\xc3\x61\x87\xa4\x1f\xdd\xf9\x2a\xab\xdb\x49\x96\xa0\xe1\x0b\x31\x55\x26\xaf\xea\xc8\x0e\xb2\xfa\x32\xaf\x78\x6a\x34\x31\x6b\x36\x11\x1e\xe9\x35\x21\x08\x14\x4d\x70\xf7\xd1\x72\x3b\x32\xf4\xdb\xaa\x82\x20\x13\x53\x41\x1d\x65\x77\x13\xe5\x5e\x35\xdf\x78\x58\x0b\x1b\xc0\x86\x80\xf0\x15\x9f\xa1\x16\xfa\xf4\x63\x56\x6a\xaf\xe8\xae\xa6\x98\x57\xe7\x2e\x44\xac\x80\x9a\xc4\x3f\x5c\x45\x93\x9d\x85\xa1\xa5\xf4\xa3\x70\xa1\x89\x96\xc8\x51\x4a\x46\xf3\x43\x71\xef\x9e\x5f\xb2\x04\x42\x2c\x93\x4a\x1d\x29\x3d\x10\x1b\x8c\x16\xf9\x9c\xc0\x73\xea\x36\x6a\x13\xa4\x5c\x43\x7d\x62\x0d\x13\x2b\x74\x40\x9c\xbf\x8b\x9c\x07\x5b\x41\x63\xf7\x26\xaa\x67\xe5\x09\xa2\x48\x74\xfc\x1b\x1f\xb6\xfb\x7c\x73\x55\x15\x9c\x02\xaa\x13\xe6\x4b\xad\xf1\x50\x35\x6b\x18\x41\xb3\x21\xf8\x04\x1e\x13\xed\x77\xe8\x46\x1c\xfb\xb8\xe8\x28\x48\x8b\xf5\x17\xa5\xd2\x9f\xf8\x2e\x73\x67\x48\x0a\x8e\xdd\xde\xb5\x35\x0e\x7a\x83\x42\x3b\xd0\xb1\xc5\x5f\x7b\xb4\x24\xca\x04\xc2\x05\x72\x3c\xd5\x40\x56\x71\xe7\x33\xf3\x91\x60\x0a"}, +{{0x18,0xc2,0x1c,0x0d,0x0d,0xe1,0x3d,0x4c,0x64,0x49,0x7e,0xf0,0x26,0x0d,0x66,0xcf,0xd3,0x42,0x16,0x98,0x1a,0x1b,0x49,0x39,0x1a,0xe5,0xcb,0x0e,0x41,0x43,0x6e,0x9f,},{0xf7,0xd4,0xdd,0x1e,0x05,0x9c,0x36,0xf6,0xd1,0x21,0xc0,0xaf,0xfe,0xb2,0x1f,0x0c,0x57,0x2b,0x45,0x99,0x2f,0x84,0x94,0x8b,0x09,0xaa,0xfb,0xcd,0x86,0xbb,0x53,0x5c,},{0xc9,0xc0,0x99,0xe2,0x1d,0x09,0x5a,0xfa,0xdd,0x4e,0x71,0xc9,0xab,0xf6,0xb7,0x08,0x33,0x24,0x77,0x62,0x25,0xb5,0x87,0xb6,0x0a,0x0e,0x60,0x92,0xec,0xb3,0xd3,0x3c,0xff,0x39,0xc6,0x7d,0x34,0x77,0x6a,0xe9,0x9d,0xda,0x75,0x4a,0x3c,0x2b,0x3f,0x78,0x11,0x35,0xa3,0x8c,0x78,0xed,0x64,0x55,0xaa,0xf0,0xae,0x0c,0x31,0x3b,0x62,0x05,},"\x68\xab\xca\x7c\x16\x6a\xfe\x06\x3e\x47\x7b\x80\xe3\x7d\xb2\x24\xe1\xa2\x35\xde\x8f\xcd\xeb\x7f\x42\x7a\xf6\x7e\x00\x12\x47\xcc\x5e\x05\x71\x82\xfd\x9b\x6d\xb8\xba\xba\xa6\x58\xcf\x3b\x3f\xe4\xb0\x76\x3b\xf8\x8d\x67\x31\x1b\x11\x90\xbe\x83\x40\x18\xcf\x57\xa3\x32\x92\x24\x13\x76\x46\x20\xac\xe0\x54\x45\xee\x01\x9a\x06\xdf\xf9\x8b\x23\x89\x79\xad\x6d\x30\x90\x1b\xef\xa3\xc6\x4f\x6b\xd8\xc6\xeb\x09\x2c\x2e\x62\x84\x13\x88\xfd\x8c\x4e\x84\x19\xe2\x77\x89\x84\x89\x67\x37\xed\x90\xa2\xcd\xb2\x19\x96\xae\xf7\xc2\x16\x38\xd6\xcb\xe6\x80\x32\x2d\x08\x99\x65\x97\xa9\xe3\x03\xf6\xf5\xf4\x79\x40\xf8\xc5\xba\x5f\x5f\x76\x38\x3e\x7e\x18\x06\x4a\x3d\x2d\xff\x5f\xdf\x95\xe9\x0c\x5e\xb3\x0f\x4d\x8d\x45\x9e\xe1\xd5\x06\xa8\xcd\x29\xcd\xc6\x9b\x67\x54\x96\x3b\x84\xd6\x74\x94\xb3\x53\x05\xd1\x0d\x12\xb9\x48\x74\x17\xb2\xce\x28\xad\xcb\x10\xb6\x5c\xc9\x31\xfb\x33\x81\xae\x02\xe7\xaf\x79\xa0\x2b\xf9\x9e\x25\x8a\x56\x36\x10\x90\xe0\xb7\x12\x22\xb3\xac\x60\xbf\x2f\xb7\xba\x83\x2d\x03\x4f\x5b\x6b\xc6\xfa\x66\x3a\xe7\x41\xf7\x6d\x97\xc1\xac\x32\xbc\xb7\x41\x15\x07\xd5\x18\xd2\xf6\x05\x4b\x57\x83\x28\xc5\xf6\x7f\x75\x8a\xc0\x1b\xfe\x6f\x4d\x35\x90\x0f\x50\xa5\xdc\xd3\x0d\x2f\x92\x61\xb6\xbb\xec\x4c\x1d\x1f\xc1\x8d\x2a\x7e\x70\xc4\xd3\x6c\x21\xfa\xf8\xcf\x94\xa5\x87\xc3\xa0\xd1\xa9\xcd\xe7\x83\x1a\xe6\x26\x77\x54\x68\xdd\xcd\x40\xa8\xba\x18\xf4\x2b\x34\x18\x8d\xe5\x74\x1e\x1b\xe8\x30\x7b\x10\x84\x58\x65\x15\xec\x01\x5e\x4e\x37\x1d\x29\x44\x3a\x40\xb0\xc0\x69\xc6\x41\xd8\xce\xe5\xe4\x61\x18\x62\x98\x7c\x3e\x35\x6b\x12\x93\xb0\x51\x8b\x4a\x4c\x8e\xa9\x7f\xc5\xa4\xdb\x1f\x01\x29\xab\xee\x72\xfb\x80\x92\xea\x35\xc2\xda\xb6\x75\x73\x85\x02\x07\xb8\xe8\x27\x18\x99\x9a\xd9\x9c\x4c\x83\x9e\xac\x14\x63\x6b\xd5\xe4\xd8\x43\x6a\x27\x0d\xd9\x0b\x8e\x32\x13\x02\xe5\x2a\x92\xd8\x91\xff\x18\x91\x54\x2a\xe2\xca\xa0\xd6\x6e\x0f\x66\x1e\xae\x37\xb2\x5b\x08\xbb\x2e\x0e\xee\xc4\x83\x80\x09\x77\x8c\xd5\x25\x98\x43\x80\x98\x3b\x2b\xaa\xdd\x71\x02\xa1\xe3\x56\x73\x4e\x41\xd7\x61\x83\x82\x9e\xa9\xab\x82\x44\xc3\x36\x59\x7c\xa2\xd6\x79\x88\xf2\x81\x43\x84\x67\xe4\x53\xf5\x62\xc6\x7b\x22\xd0\xa4\xdd\x9f\xcb\x46\xa5\xf8\x0d\x29\x9d\xb5\xf0\x1f\x59\x16\x0a\x19\xd7\x4c\x64\x4f\xa5\xa9\x40\xe3\x2c\x9d\x8d\x98\x3b\xab\x7e\xfb\x0d\x7c\x7d\xa4\xe3\xfd\xa1\xcd\x0d\x18\xa4\x55\x8e\xb9\xfe\x46\x40\x8a\xab\x50\x85\x91\x2b\xf2\xf4\x6a\xb6\x3a\x93\x54\xf9\x02\x7c\x93\x69\x12\x23\xff\xaa\xb8\x46\x3b\xac\x4c\x4b\xc3\xb1\x1a\xbc\x46\xba\x68\x71\x7c\x91\x78\x0d\x3f\x30\x47\x0d\xbd\xd8\x8b\x37\x80\xa1\x94\xc8\xa4\x0a\x2c\x0a\x81\xa4\xd5\x6d\xec\x2d\x89\x62\xc3\x4d\x2a\xb7\x33\x69\x02\x8e\x1b\xfe\xaa\x6b\xb5\x82\x41\xff\x4f\x89\x8f\x80\xad\x3b\xb1\xc6\x91\xb8\x64\x7f\x2c\x69\x83\x95\x4c\x1c\x77\x95\x74\x58\xee\xbf\x1c\x50\x55\xc3\x16\x93\xab\xce\xd0\x53\x84\x73\x5a\x4f\x74\x19\x68\xbd\x6a\xc3\x15\x65\xcf\xee\x71\xc8\x84\xc1\xe2\x9e\x9e\x7a\xe0\xf7\xec\xd0\x4d\x46\x3b\x1d\xc3\x89\xc3\x60\x37\xe8\x14\x58\xdc\xec\x61\xd0\x76\x40\x32\xdd\x58\x9b\x92\xaf\xda\x2f\xc9\x02\x8f\x41\xab\x53\xcc\xa2\xd0\x4e\xc6\xa9\x56\x59\x55\xcb\xcf\x1a\x34\x63\x98\x9c\x71\x39\xbb\x90\x2a\x59\x21\xe8\xb2\xc9\x9c\x48\xe1\x37\x11\xf0\xbc\xc3\x99\x25\x95\x16\xc8\x1a\xe9\x42\xa6\x79\xd4\xba\x33\x97\x9e\xb1\x2f\xcd\x28\x60\x60\x2e\x47\x24\xb1\x33\x0f\x1c\xd2\x57\xb5\xb2\x89\x1d\xae\xe8\xef\x4c\x92\xfc\x3b\xfd\xb3\x4e\x53\x2d\x58\x70\xf3\x80\x59\x86\xac\x97\xb5\x03\xfd\x85\x87\x35\x48\xe3\x09\x50\x00\x0f\x8a\x70\xbe\x51\xfa\x75\x76\x03\x50\x1f\x2d\x30\xe8\x52\xef\xea\xc4\x82\x68\x62\xae\xd7\xf6\xd2\x0c\x9a\x8c\x8d\xbe\x36\x2d\xfe\xe4\x18\x93\xf2\x7e\x6f\xd5\xe9\x1d\x0e\x7e\x3d\x4f\xd8\x15\x5f\x44\xfd\x8e\xf1\x7a\xf1\x4a\x84\x8d\x44\xa8\x76\x31\xae\xee\x75\x14\x62\xb2\xa5\x40\x87\x06\x8d\xae\xab\x3e\xa3\x28\x9e\xce\x62\x12\xb3\xb5\x2c\xe7\xa8\x88\x6d\xf2\xa7\x27\xb7\x2a\x57\x0c\x2f\xb9\xc5\x03\x41"}, +{{0xdb,0x9a,0xae,0xe1,0x98,0xcd,0x26,0xa5,0x2b,0x11,0x81,0xfa,0x3f,0xd9,0x2a,0xbe,0x42,0x5e,0x66,0x6d,0x89,0x0b,0xf9,0x69,0x46,0x7d,0xd2,0xce,0x28,0x0e,0xd4,0xa7,},{0x3c,0x89,0x7c,0xaf,0xe2,0xb4,0x99,0xec,0xb2,0xe1,0xdd,0x01,0xea,0x55,0xf3,0xfc,0x88,0xf6,0x8c,0x25,0xb6,0x4a,0x63,0x6b,0x31,0xa1,0xfd,0x1c,0x78,0xf3,0x7f,0x3f,},{0xb2,0xe3,0xd9,0xc5,0xd0,0xff,0x32,0x99,0x96,0xbc,0x89,0xd2,0x6f,0xb3,0xac,0x12,0x6b,0xde,0xd3,0x13,0xcb,0xf8,0xdf,0x86,0x71,0x86,0x38,0xc1,0x99,0xe0,0x57,0x27,0x3d,0x09,0xeb,0x16,0x3c,0x6c,0x18,0x1f,0xd8,0xbc,0xe5,0x1f,0x72,0xd4,0xd9,0xd2,0xe8,0x4a,0xbb,0xe0,0x83,0x30,0x77,0x3b,0x9f,0xcc,0x21,0x66,0xf1,0x40,0xd6,0x0e,},"\x47\xfb\x62\x15\x61\xf8\xb7\xee\xce\xc6\x03\x3f\x2b\xcb\x6f\x43\xac\x68\xc9\x58\xdf\xd2\x65\x6f\x52\xa0\xc2\x9b\x4a\xcd\x44\xf4\x30\x4c\x6b\xf7\x7e\xea\xa0\xc5\xf6\xd3\xb2\x2d\xb1\x96\x99\xc3\xdc\xde\xde\x69\x8a\xbd\xe6\x23\xec\x4b\x2b\x90\x91\x0c\x80\xac\x3a\xf3\x9c\x55\x0b\x6d\xd4\x09\xe6\x3d\x77\x70\x66\x55\xa9\x19\x9c\xb5\xc0\x25\x8f\x5b\xa3\x82\x85\xff\xdc\x64\xb8\xa8\xf3\x73\xd1\xfb\x29\xba\x87\xf8\x4d\xdf\x5f\x34\xd8\xf1\x40\xbb\xc1\x7b\x39\x61\x68\x2d\xf5\xd0\xa8\xf9\x10\x2e\x37\x9a\x99\x98\x13\x9d\xfe\x40\xab\x8c\xe7\x53\xbf\x56\x26\x10\x82\x37\x77\x1a\x7d\x8e\x10\x9e\x9e\x0a\xfe\x9b\x66\xd0\x42\x09\x42\xe1\x63\xa4\xf3\xc0\x3f\x71\x81\x3e\xe0\x78\xbd\x09\x0a\xc3\xd0\x77\x2e\x26\x22\xc2\x59\xe6\x82\x55\x2c\x75\xb0\x8d\xd0\x55\xa4\xa5\xeb\x5e\x60\x94\x40\xbc\xd3\xf3\xa6\xfe\xb8\x76\xfd\x16\x92\x15\x20\xc6\xcb\x68\x84\x71\x0d\x2e\x15\xcd\xad\x6d\xaa\xee\xd9\x59\x62\xdd\xa2\x1c\x67\x88\xf7\x84\x91\x79\x17\x98\x2e\x1c\xcb\xb5\xfd\xd9\xbd\xc1\x76\x9d\xb6\xb6\xdb\x57\xca\x35\x4e\x01\xa1\x33\x9d\x8e\x77\xe9\xdb\xbb\x58\x12\xfb\xab\x6a\x14\xc5\x40\x85\xc0\x65\x95\x99\xf1\x50\xe2\x24\x72\x47\x0f\x1e\x5e\x67\x2c\x42\x5f\x37\x5f\x9e\x0d\x6e\x8d\x52\xfa\x17\xb7\xa8\xd7\xa4\xd7\xca\x3e\x12\xf4\xdb\x53\x83\x6a\xed\x2b\xeb\xd7\x45\x89\xba\xca\x8c\xe9\x10\x02\x91\xbf\xb7\xe4\x56\xdb\x7f\x2f\x0a\x84\xdc\x0a\x74\x88\x85\x13\x66\xa9\xa5\xfe\xa0\xe3\xef\xc7\x4b\x9c\xdd\x4b\xd9\x7b\x65\xab\xf3\x61\x39\x3c\xe1\x70\x3d\x85\x71\x80\x5e\xe6\x8a\x13\xd3\x65\x4f\x03\xdc\xec\xfb\x77\xa5\x34\x30\xd0\x94\x96\xad\x73\xec\x01\x75\x99\x57\xe5\x10\x46\xaa\x73\x96\xf5\x92\x33\x86\x50\x11\x7a\xc7\xb4\xdd\x35\x73\xeb\x53\xd9\xc9\xf9\xdf\xa6\x2e\x23\x69\xc7\x7a\xf9\xc0\xd4\x2f\x61\xba\xe7\x4b\x28\x7d\xdf\xa2\x7b\x7f\x1c\x1b\xe9\x88\x3a\x04\x46\x91\xd5\x6d\xc1\x37\x34\xad\x4e\xe3\xa3\x2a\x9f\x40\xe3\x28\xc5\x00\xd0\xfe\xd8\xea\x05\x10\xe9\x38\xf2\x75\x80\x04\x02\x2b\xca\xa6\x90\x2b\xda\x10\x14\xb8\xae\x33\x65\x27\x28\x29\xed\x94\xfa\xba\x63\xcb\x14\xa3\x6c\xf8\x13\x90\xec\xa8\x3f\xc1\xc6\x27\x17\x20\x13\x26\x1b\x39\x93\x77\x9a\xa0\x76\xa5\xc5\xd8\x1d\x90\xd2\x70\x62\xe1\xa6\xd9\x0b\x5c\xf1\x00\x5c\x70\x19\x17\xb7\xad\xac\x18\x0c\xb7\x5b\xbc\xe0\xf2\x7f\x2f\x18\x0e\x2c\xb9\x01\x40\xc1\x4c\xc6\x00\x9d\x2d\x41\xaa\xb1\xdb\x94\x18\xf9\x1d\x4c\xf3\x94\x00\x2c\xd7\x0a\xc9\xdc\x11\xce\x86\x53\x47\xfa\x3f\x56\xf8\x7c\x14\x9e\x2b\x17\xd2\xc7\x2b\x66\x3a\x58\xe3\x18\x7b\xb1\x9b\x9b\xac\x2d\x11\x48\x3b\xa1\x2f\x77\x0a\xc0\x4d\xc4\x6d\x38\x85\x18\xfa\x54\xdc\x15\x2e\x9a\x9d\xfb\xff\x14\xf1\x4c\x61\xcb\x37\x58\x97\xe3\x0c\x53\xe6\xde\x42\xd5\xe1\x40\x1d\xae\x1b\x22\xba\xaa\x0e\x8a\x41\xc6\xaf\x9d\x0e\x0b\x13\xa9\x1a\x23\xd9\xb7\xd5\x55\x20\x47\x02\x9a\x35\x21\x94\x6c\x71\x20\xd3\xd2\x58\xb3\xae\xfc\xf7\x54\xd1\x95\x94\x87\xa1\xfe\x77\x43\xac\x7e\x1c\xc8\x9e\x36\x8b\x19\x78\x09\xc3\xa2\x73\x17\xe0\xec\x48\xd5\x46\xdb\x1e\x21\xeb\x62\x9a\x29\xbc\x62\x47\xcd\xd4\xa1\x37\x14\x37\x56\x3e\xdd\x12\xfa\xea\x2c\x5c\xb7\x7e\xed\xed\xbf\xc5\x80\x08\xfa\xd1\xf6\x5a\xf3\x58\x43\xfa\x27\x4c\x73\x4e\x3f\xbb\xaa\x9c\xc5\x0d\x68\x37\x48\xb7\x5a\x48\x5f\x94\xd6\x30\xb0\x32\xa5\xf1\x06\x7d\x1d\xeb\x30\xe9\xd2\x21\x8c\x93\x5c\x98\x1d\x01\xc0\xc5\x47\xfd\x68\x41\x31\x36\xed\xf4\xc0\xc7\x70\x28\x6e\x82\x34\x42\xe1\xc5\x13\x65\x19\x29\x21\x3c\x12\x1c\x1d\xe7\x00\x98\x91\x41\xab\x4a\xf3\xb3\xfe\x74\x04\xb4\xd2\xa3\x8c\x53\x0b\xaf\xb4\x98\xe6\x49\x53\xce\x1c\x0f\xb7\xd3\x40\xe2\x11\x35\xbf\x8a\xfd\xd8\xdd\x65\xb1\xb1\x8c\xf1\xc8\xfb\x9f\x40\x2b\x26\x70\x40\x0b\x86\xdd\xaf\xb1\x84\xcc\x51\xd5\xfd\xa2\x73\xb8\x0c\x26\x52\x1f\x91\x2f\x35\x83\xb4\xae\x30\x1d\xae\x15\x1c\xb5\x5c\x75\x70\x3a\xad\xef\x03\x24\x15\x22\x7d\x53\xe3\x95\xdb\x6c\x15\x0a\x1e\xe8\x39\xad\x26\xba\xe5\x52\xe1\xab\x73\x62\x14\xdc\x04\xb0\xf3\xc4\x1b\x7c\xfb\xd0\x49\x68\x1b\xc8\x4c\x3d\x16\x53\x07\x68"}, +{{0xa8,0x04,0xc3,0x3b,0x4d,0x38,0xcb,0x3c,0xe3,0x1c,0xf3,0xba,0xc1,0x04,0x9e,0x0d,0x4e,0xc6,0x3a,0x1a,0x0b,0x7b,0x59,0xfd,0x8a,0x36,0xee,0x37,0x54,0x16,0x56,0xaa,},{0x60,0x72,0x25,0x6d,0x65,0x74,0xa2,0x93,0xbd,0x7c,0x22,0x1c,0x55,0x1c,0x32,0xcf,0x2f,0x77,0x15,0xe1,0x9e,0x43,0x3a,0x49,0xd9,0xb8,0xb0,0x49,0x0e,0x56,0xef,0x62,},{0xb1,0xb4,0x4a,0x14,0x2a,0x7c,0x4c,0x3d,0x0b,0xf4,0x66,0x1e,0xda,0xc5,0xb7,0x67,0x00,0x57,0x26,0xc1,0x4a,0x27,0x69,0xb7,0xc2,0x14,0xfb,0x58,0x73,0x7e,0xc2,0xe4,0xbc,0x51,0xc3,0xa1,0x95,0xd2,0xba,0x1b,0x74,0xa5,0x4e,0xff,0x4c,0x33,0xa9,0x0f,0x41,0xcc,0xde,0xfa,0x9e,0x93,0x65,0xfd,0xe8,0xdd,0x85,0x9f,0xd3,0x97,0x8c,0x0a,},"\xdb\xfe\x30\x7f\x2a\xae\x9e\x07\xec\x7c\x4b\x68\x21\x06\xd2\xc9\x36\x7b\x0c\x4a\xaa\x58\xae\x80\x4e\x0a\x39\x04\x75\x4e\x6c\xf8\xfe\xe7\x3c\xf9\xe2\xd4\x5d\x02\x89\xe5\x07\x82\x93\xdf\xc4\x69\xd4\x6e\xa6\x70\x26\xc5\xaa\x69\x2d\x2f\x2c\x9f\xb4\xec\x57\xcd\xab\x4c\x04\x3f\xf9\xae\x61\x85\xf2\x7a\x70\x44\x54\xe5\xf5\x39\x50\xaa\xbd\x25\xc9\x91\x04\x74\xd4\x5a\xf8\x83\x68\x62\x72\x3e\x0e\x6a\x27\x82\x3d\x82\xbc\xbb\x68\xa9\x60\x52\x42\x2a\x18\x19\x51\x2e\x3b\x43\x40\x8c\xf4\x89\x57\xad\x6a\xe2\x35\xb7\x23\x3d\xf1\x82\x84\x74\x91\x53\xdf\xa5\x7d\xe3\x50\x74\xa3\x0e\xdf\xab\x8a\x56\xdf\x28\xab\x2e\x29\x40\x30\x6c\x22\x1a\xa5\x54\x90\xcc\x66\x4e\x14\x68\x3f\x30\xee\x61\x5e\x2d\x93\xfd\xf9\x71\xf5\x96\x66\x34\x65\x84\x3b\x3a\xdd\x63\x92\xba\x33\x90\x31\x1e\xf8\xdc\x59\xf2\x51\x44\x5d\x66\x9e\x10\xa0\x06\x19\x91\xe1\x13\x56\x19\x23\xaa\x21\x52\x44\x46\x3d\x82\x64\x19\x9a\xc5\x88\x92\x4e\x23\x1e\x84\x19\xd8\x68\x5f\x33\x8e\x59\x9b\x5f\x40\xbf\x9b\xd1\xae\xce\x77\x25\x35\xbb\xbc\xb8\xf6\x88\x1c\x2e\x80\x04\x91\xab\x3b\x57\xb4\x4b\x8a\xe4\x3a\xeb\x5c\x4a\xe5\xe7\xed\xeb\x22\x8f\xed\xc9\xf6\xb9\xca\xde\xa1\x76\xe1\x34\x93\x6d\xed\x60\xaf\x1c\x22\x87\x34\xfb\x00\x57\x0f\x23\x74\xbb\xbf\xa1\xbb\x17\x07\x85\x80\x5d\x6b\x6c\x70\x1e\x82\x09\x52\xea\xe4\x5b\x8c\x23\x66\x11\x3a\x1d\xfb\x2e\x35\x85\x2a\xf4\x19\xb7\x54\xf9\xcf\x7a\x08\x1c\x3d\xde\x6c\x80\x53\xbf\x1c\xe0\xc8\x53\x39\xd5\x69\x9c\x42\x24\x76\xfc\x21\xf2\x6c\xe7\x5d\x2a\x7f\xed\x09\xfc\x0f\x41\x75\x78\x98\x47\xd8\x76\xc5\x1a\xa4\xe0\xbf\x7c\xe8\x42\xb8\x30\x8d\xc7\xa2\x8c\x82\x39\x52\x07\x14\xdc\x23\x31\x36\xe0\x9f\x55\x7c\x7e\xf3\xe0\xf8\x3b\xad\x63\xcb\x28\xac\x61\x6d\x39\x28\xf3\x83\x7d\xce\x1d\xd5\x8a\xcb\x8d\xdb\xc7\x2e\x82\x2d\xee\xe4\x5f\x00\x77\x6a\xcc\x88\xe0\x0c\xd3\xa9\xdb\x48\x6d\x92\xd5\x35\xa5\x7a\x0f\xdc\x4f\x90\x3b\x62\xe5\x17\x22\x1c\x30\x8c\xba\x2e\x30\xff\xe7\xb9\x19\x37\xa9\x94\x17\x72\x1f\x56\xfe\x6d\xf4\x48\x40\xe9\xe4\x11\x36\x92\x9c\x0c\xa3\xdc\x28\xdd\xf2\x37\x9e\x4d\xcf\xde\x83\x72\x3e\x2d\x4c\x9e\x23\x29\x9c\x05\x6a\xfb\x31\xd3\xe7\x0d\x08\x5d\x0a\x31\x2c\x5c\xd5\x70\xb6\x99\xde\xa8\x71\x74\x58\x53\x13\x48\xc9\x6f\x6e\xb5\x2d\x7e\xe6\x1d\x56\x60\xf6\x5e\x90\x9a\x14\xce\x10\x33\xdc\x85\x3f\x2f\x25\xd0\x9c\xf4\xe4\x0d\x07\xef\xf7\x2e\x15\xa3\x90\x56\x4a\x2b\xe3\xc0\x42\xd8\x9a\x68\x66\x0a\x97\xff\xac\xec\x49\x67\xa4\xb6\x18\x71\x2d\x70\x60\x75\x65\x20\xc2\x9e\xe8\xd9\x22\x0a\xd8\x61\x5c\x4f\xcf\x39\x69\xbd\x3b\x2e\x09\x47\xe1\xf0\xbe\x7e\x2d\x80\xe0\xa6\x14\x80\xc3\x16\x6d\xb5\x58\x22\x18\xbb\x0a\x8b\xe9\x84\x8e\xfd\x41\xb6\xce\x0c\xd7\x95\xc4\x86\xab\xb6\x72\x10\xbe\xb6\x0c\xd0\x78\xb4\x6a\xeb\x7f\x4f\x48\x50\x31\x90\x2b\xcd\x71\x31\xe0\x0b\x70\x35\xaa\x2d\x43\xfe\xe0\x63\xf7\xf3\x0b\xd5\x70\xda\x1d\xbb\x65\xc0\xca\x92\xa4\x81\x26\x32\xe4\x32\x77\x85\x53\xe3\x5e\x85\x6c\xaa\x82\x18\x22\x1f\xd6\x31\x6a\xb0\x86\x91\x73\xb3\x84\x09\xbc\xef\xe6\xd2\xdb\x92\x10\xf9\x02\x41\x73\xb6\x6d\xbb\x92\x67\x7c\xbc\x71\xc8\xa1\xcd\x58\x3f\xa6\xf3\x54\xd3\xc9\x3f\xa8\xb1\x6c\x71\x37\x4f\x25\xa0\x0c\x33\x2f\x85\xa8\xbe\xfd\x54\x03\x88\xfb\x50\xdb\x9f\x5d\x96\xe4\xe4\xe6\x98\x83\x3c\xe3\xd6\x3c\x10\xb8\xee\xc7\x0a\x24\x3b\x90\x15\xdb\x45\x94\x31\xb6\x2f\x56\x68\xbb\xa6\x0f\x07\x04\xf6\xbd\xfe\x95\x46\xea\x47\x5c\xef\x2e\xbc\xcb\xa4\xb7\x68\x08\x48\xe8\x2b\xef\xf5\x85\x4e\x49\xf6\x5b\xb7\x73\xa4\x92\x2e\x90\xf9\xb8\xaf\xc7\xcf\x81\x87\x30\x58\x8e\xd5\xaa\x7b\x39\x98\x26\xaa\xdd\x54\x37\x2f\xcb\x76\x14\x58\xb6\x4d\xe6\x68\x57\xf4\xad\xac\xd4\xc3\x29\x00\xcb\x77\x13\x6a\x53\x5d\x7b\xbb\xb5\x54\x59\x7a\xec\xf3\x9f\xf6\x98\xb4\x5e\x6a\x21\x8d\xf1\xd2\xab\xe6\x15\xeb\x8d\x9e\x18\x24\xc0\xbe\xcc\xe9\x07\x67\x89\x9e\xbf\xd2\xc7\x30\x14\x4b\x32\xc7\x46\x04\xc0\xe5\x3e\x25\x05\xbb\x15\xd2\x80\x07\xa8\x7b\x99\x31\xd6\xee\xc0\xa6\xcb\x5b\x0f\x96\xd3\x19\x4b\x24\x23"}, +{{0xf8,0x20,0xe6,0xf2,0x4a,0x84,0x18,0xb6,0xac,0xda,0x16,0x5f,0x29,0xa3,0x60,0xf7,0x67,0xcd,0xed,0xde,0x8f,0x64,0xd7,0x68,0xb9,0x5f,0xc2,0xa5,0xf3,0xf4,0x04,0xe7,},{0x79,0xc4,0xb2,0x63,0xb2,0xe5,0x8f,0x67,0x86,0x28,0xd4,0xea,0x82,0xb1,0x75,0xac,0xa2,0x30,0xb9,0xa2,0x02,0x85,0xc8,0x28,0xf9,0x4e,0x1f,0xfd,0x63,0xd7,0x5b,0x23,},{0xf9,0xfd,0x72,0xf3,0x21,0xca,0x21,0x33,0xbf,0x85,0x85,0x90,0x8d,0x9c,0xa7,0xb8,0xe3,0x36,0x22,0x7e,0x3f,0xfb,0x37,0x49,0xa1,0xfb,0xe8,0xc9,0xb1,0xe5,0xd5,0x0e,0xf0,0x1f,0x9d,0xb5,0xf0,0xd2,0xa7,0xc7,0xc1,0x39,0x9b,0x97,0xc9,0x04,0x4e,0x1b,0xc1,0xad,0xc3,0x2b,0x8b,0xea,0x46,0xda,0xd7,0xb8,0x10,0x26,0x46,0x96,0x03,0x03,},"\xab\x6b\xd4\x5b\xb0\x6d\xfb\x90\x69\x11\x8f\xf9\x98\xf3\xbd\x39\x3e\xa8\xe9\x44\x97\x9e\x89\xe0\x49\xf2\x50\x5c\xd8\x93\x1b\x93\x08\x6b\x7e\x9d\x8e\xe7\x64\xe9\xb4\x47\xea\x4e\xa1\x21\x38\xbb\x45\x27\x5a\x21\xa1\x98\x43\xf7\x5d\xc5\x42\x1d\x61\xff\xd8\x61\x83\x8e\x58\x33\x82\x5d\x67\x16\x2f\x32\x59\xc2\x64\x47\xbe\x51\xdc\x18\x02\xef\x5a\x04\xba\x73\xb7\x83\x93\x57\x06\xab\xb4\x2c\x51\x3b\x65\xf2\xbb\xc4\x4f\x83\xda\x10\x61\x24\x2f\x2d\x5e\x51\x98\xf3\x8c\x10\x71\x7a\x86\xa3\xa1\x97\xe7\xcd\x90\x34\xf6\x36\x11\x44\x99\x03\x72\x77\xac\xb4\x72\x2c\x06\xa9\x1c\xb2\xf6\x5e\x21\xeb\x8d\x22\xd3\x6a\xd7\x3b\x42\x65\xf7\xa7\x94\x7e\x00\xe7\x22\xbd\xa6\x70\x43\xcd\x12\x81\xbc\xd8\x7e\x76\x3f\xc9\x7b\x54\xc8\xf8\x68\x36\xcd\xbf\x08\xc9\xa1\xf7\x00\xf4\xea\xed\x9e\xa5\x9a\x6f\xc1\xbc\x0d\xf8\xc9\xec\x1f\xc2\x97\x7c\xad\x60\xf9\x78\xab\xc0\xc8\x38\x1a\xa9\xfb\x06\x0e\x3f\x99\x37\x8a\x51\xb2\xd9\xaf\xbe\xf3\x58\xd5\x51\x62\xa3\x89\x22\xeb\xb8\x7d\x2a\x3e\x0f\x0f\x40\x00\xb1\xc3\x9b\x15\x02\xe9\x59\x45\xe8\xac\x9f\x4a\x3e\xa7\xc9\xdd\xb5\x81\xa5\xec\x06\xc0\x0b\xa8\x7a\x73\x70\x84\xb3\x84\xfa\xba\x09\xc8\x48\x71\xdd\xd6\x7d\xc1\xbe\xbb\x2f\x7f\xbd\x94\xa5\x59\x7d\x01\x9f\xe6\x29\xe5\xbf\x12\xbe\xa2\xe3\x3c\xa8\x4c\x68\x0d\xc5\xa3\x98\x9b\xbf\x3a\xf9\xee\xec\xe8\xab\x8f\xc8\x61\xe3\xb8\xbf\xc1\xe6\x7e\x2a\xee\x32\x6b\x37\xfb\x9b\x51\xcf\xa0\xb5\xf5\xfc\x16\x00\x69\xb4\x50\xb7\x04\xe0\xfa\xb7\xfb\x6c\x5a\xb3\xc4\x0b\x8f\x0b\x3d\x09\x30\xb9\x11\x2d\x64\xb9\xda\xca\xb4\xdd\x87\x5f\x29\xd8\xc5\x8c\x5d\x20\x53\xad\x91\x48\xff\xde\x22\xd9\x0b\xc0\xd5\x0f\x5d\xec\xa6\x8d\x3e\xa2\x5c\x5b\x4c\x76\x88\x87\x1c\x0c\x77\xdb\xce\xea\xcb\xd0\xa4\x22\x9f\x49\x70\xec\x87\xb3\x44\x99\xe2\x78\x30\x3c\x06\x69\x4c\x30\xac\x68\x52\x4d\x11\xb1\x72\x79\x4b\x48\x12\x73\xa5\xda\xc4\x61\x22\xd2\x47\x20\x95\xa5\x63\xa4\x35\xd1\x85\xd5\xe9\x1d\xa7\x26\xe7\x45\x92\x99\x9c\xda\xc6\x88\xa3\x3f\x38\xf7\xc0\x35\x58\x8f\x62\x5d\xc6\xac\x73\xd0\x04\x7a\xb3\xd6\xd1\x2f\x1a\xe3\x3d\x8b\x62\xd6\xd6\xc6\xca\xcf\xf0\xbd\xd8\x94\xb5\x7e\x31\x89\x12\xac\x0c\xf4\xa5\x34\x76\x2b\x2f\x6d\x26\x3c\x93\x58\x04\x42\x3e\xd8\x68\xcf\x8c\xfb\xb8\xbe\x8f\x6d\x8a\x71\x4a\x26\x8a\x39\x0e\xdc\x2d\xd5\x09\xd2\xdc\x96\x85\x1d\x1b\xd4\x32\x49\xbd\x0f\x69\xb0\xc4\xcb\x2f\xf4\x08\x0d\x1f\xd5\x62\x2b\xc2\x38\xdd\xa6\xe9\x30\x02\x5d\x8a\x2b\x12\xb9\x72\xf9\xeb\xa1\x74\x21\xd4\xce\xa6\x42\xf4\x0a\xd9\xea\x85\x47\xae\x59\x49\x8c\x3a\xd1\xb9\xa0\xc3\x4e\xd8\xc0\x1a\xae\x3b\xd2\x1a\xc1\x77\x43\xb5\x77\xf9\x51\x5c\xfb\xdd\xe2\x70\x4d\xc5\x7e\x80\xf1\x25\x32\x3d\x55\x10\x0b\x9f\x69\x79\x27\xd4\x31\xdf\xe7\x36\x31\xb5\x8e\x52\xaa\x6a\xeb\x04\x78\xbf\x45\x95\x52\x43\x86\x89\xfb\xeb\x9c\x60\xd8\x7a\xae\x09\x95\x43\x62\xcd\x02\xa2\xb0\xb4\x79\xef\xd3\x8f\x17\x82\x1a\xf3\x9b\x21\x92\x6e\xe0\x2f\x7d\x97\x2a\xd0\xf5\x4e\xa6\x57\x2c\xc3\xeb\xd0\x20\xb1\xee\x26\x88\x25\x33\xbd\x19\x11\x43\x23\x81\x5f\x67\x2e\xc8\xc9\x05\x68\x73\x0a\x58\xe4\xe1\xe3\x5f\x68\x21\x21\x9a\x32\xb8\xa6\xc5\x2c\xed\x6f\x95\x73\xd9\xf3\xbe\xb2\x85\x13\xba\x62\xfb\x20\x1f\x7f\xd4\x1b\xb1\x0c\xa3\x4b\xb1\xc7\x0f\x2f\xd7\xbb\x92\x99\xa7\xc5\xf7\xf2\xe0\xfa\x1d\x1a\xf0\xe9\xae\xf5\xed\xe7\xc1\x69\x50\xe8\x60\xec\xd6\x1f\x18\x42\xa1\xa2\x2c\x98\x31\xc0\xc0\xd4\xed\xa8\x40\xb0\x88\xa5\x45\x20\xc9\xb1\x8c\x76\xeb\xa9\xbe\xbc\xd5\x91\x38\x1c\x18\x0d\x7f\x86\xa0\xe5\x8a\xdd\x92\xb9\xb0\xc8\x07\x6a\x7c\xdc\xab\x60\xde\xa4\xc1\xaf\xb1\x8c\x8b\x94\xb1\xb3\x92\xcc\xfb\x4d\xae\x27\x11\xe7\xd1\x2d\x2b\xc7\xc7\x82\x5f\x63\x99\x2e\xc3\x24\x71\x63\xc2\x83\xb1\x07\x5e\x32\x24\x5f\x69\xcf\x47\x24\x0a\xef\x0d\xb4\x3e\xfa\xe8\x6f\xc1\xfd\x3b\xb9\x9c\xf5\xb7\x89\xf5\xbc\xba\x95\x04\x65\x7d\x9e\x62\x2a\x4a\xa1\x6f\x01\xd4\xd8\x44\x41\x31\x24\x44\x7d\x6d\x1a\x44\x23\xe7\xb5\x5d\xb7\xe6\xa3\x1a\x31\x9f\x4b\xac\xae\x43\x0a\x33\xa9\xbd\xd4\xef\x36\x80"}, +{{0x0a,0x05,0x6b,0xe0,0x39,0xfd,0x55,0xda,0xda,0x44,0x1d,0x03,0x73,0x61,0x27,0x3f,0x20,0x6e,0x00,0x0a,0x74,0xa0,0x5c,0x51,0xc0,0xcb,0xb6,0x27,0x43,0xf1,0xf3,0x40,},{0x73,0x14,0x02,0x17,0xa4,0x93,0xa1,0x78,0x66,0xff,0xf5,0x15,0x48,0x32,0x27,0x3d,0xf7,0x9d,0x58,0x11,0x54,0x3c,0x22,0x2a,0x39,0xd0,0x56,0xb8,0xc9,0x70,0xdb,0xfa,},{0xfa,0xb8,0xe5,0xd9,0x3d,0x7d,0x46,0xc6,0x5e,0xe1,0x17,0xc5,0x37,0x5e,0x73,0xc9,0x70,0x5f,0x87,0x54,0x17,0x7f,0xdd,0x46,0xef,0xed,0x47,0x37,0xc2,0x87,0x68,0xcc,0x4b,0x95,0xa9,0xc8,0x4c,0x52,0x9b,0x4b,0x91,0x6b,0x28,0xda,0xbd,0x87,0x41,0x18,0x31,0x44,0xbc,0xdb,0x48,0x3d,0xf9,0x8a,0xf8,0x9d,0x82,0x40,0xcf,0x09,0x46,0x04,},"\xa5\xab\x14\x76\x84\xe4\xd4\xa7\xbc\xb5\xa9\x6f\xb3\x98\x18\xe2\x3f\x56\xc2\xd8\xa7\x44\xe9\x12\x3d\x62\x08\x39\x30\xab\x1d\x0b\xb5\x32\xe6\x87\x14\xfc\xec\x7e\x6c\x41\x13\x4b\x6b\x19\xdd\xd8\x67\xfe\x63\x5c\x9e\xd6\x53\x93\xee\x39\xc5\xe8\xfa\xb4\x56\xcb\x5b\x32\x79\x78\x83\xf3\xcd\x9a\x09\x02\xb9\x79\x63\x48\xee\x66\xc6\x91\xfb\x4f\x2b\xb1\x47\x64\x41\x06\x57\xc7\x4a\xb3\x64\x56\x78\x79\xb6\xfa\x0a\x6f\x4d\xaf\xd9\x30\xd9\x23\x4c\xd7\x83\x4f\xb9\xd0\xee\xdf\xbb\x5a\x39\x4b\xf0\x84\x6e\xc6\x96\x9c\x2e\xf7\xce\x39\xe3\x85\x38\x95\xff\x5b\x4d\xa3\x1e\x54\x34\x1b\x42\x72\xe4\xa2\x60\x49\x18\x9f\xf2\x82\x41\xce\xef\xfb\x7d\x2e\x1f\xaf\x4f\x77\x9f\xa6\x5c\xac\x0f\x57\x83\xc6\x0a\xe7\x7d\xe3\x0a\xd4\x46\x5f\xdb\x39\x0d\x42\x57\x1e\xff\x4a\x63\x13\x63\x49\x93\x7d\x6c\xae\xef\xcd\xae\x22\x9e\x2f\x28\xce\xa8\xab\xf3\xff\xae\x3c\x3e\xcc\xd9\x06\x70\xa4\x21\x2a\x2b\xee\x1c\xa6\xa5\xb5\x4f\x09\x4f\xc3\x23\x10\x58\xf5\xcb\x9e\xce\xb9\x99\x3b\xe4\x70\x27\xd5\x1c\x18\xde\xca\x41\xcd\xda\xf4\xe8\xbc\x56\xa9\x9f\xd2\x70\x35\x5f\xf4\x59\x71\x95\x0e\x34\x37\xa1\x98\xcc\xc3\x25\x41\x68\xdf\xc1\x57\x40\x80\x80\x2e\xe1\x01\xa6\x17\xfb\x60\x4e\x86\x8f\x8f\xa8\xfb\x30\xda\xeb\x43\x07\x4d\xe1\x1f\x24\x83\xd9\x16\xde\x56\x43\xb7\xca\xc2\x3d\x93\x40\x50\x8a\x3f\xd6\x21\xec\xd2\x50\x04\x35\x6a\x53\x55\x4a\xd3\xad\x7d\x5d\x25\x81\x7a\xd7\xc9\xa6\x10\x00\x8c\x67\xac\x16\xba\x42\x11\xc4\x2f\x5d\xad\xf8\x6c\x2c\x3a\xed\x82\x5c\xf2\xa9\xb5\x23\xbf\xc0\x3d\xd7\xde\x40\x0c\x67\x80\x7e\x13\x9e\xa5\xdb\xce\x4e\xe1\xf7\xd3\x18\x88\x9b\x01\xa9\xf4\x48\x03\xc3\x22\xac\x3b\x61\xe2\x0e\x63\x12\xd0\xa0\x3b\xf9\x92\x7f\xa3\x3f\x04\xed\x7e\x20\x7b\x16\xf2\x65\x02\xc2\x98\x3a\x3a\x96\x1f\x22\x44\x61\xfe\x9b\x64\x92\x3b\x1d\x09\x18\x94\x76\xae\x8d\x00\x1d\x0e\xca\xae\x4d\xf6\x0d\xb3\x5f\x44\x8b\xb6\x12\xf9\x65\x5a\x5f\xb1\x44\xdf\x11\xd8\x3a\xa6\x93\x68\x86\xc3\x04\x94\x9e\x59\xaa\x46\xdf\x65\xc2\x2c\xe7\xbf\x28\x9b\x3c\x77\xc2\x5d\x89\x6b\xe6\xd5\x1d\xee\x10\x74\x82\x61\x68\x8c\x8b\x07\x1c\x85\x6f\x99\x62\xc6\x67\x75\xdd\xf1\x60\x83\xda\xe0\x65\x87\xe3\x2a\x63\x61\x19\x9d\x72\x09\x7e\x38\x3a\xd7\x43\x94\x91\xb5\xa5\x63\xa3\xe6\xd5\x8d\xa3\xd5\xab\xb1\xde\x84\x89\x0a\x36\xb4\x21\xce\x03\xd4\x84\xdf\xd6\x00\x39\x63\x8d\x46\xed\xfb\x60\x65\x9e\x3a\x25\xac\x6e\x9a\x93\x5a\xd6\xda\xd5\x0f\x92\x7b\xcc\x2f\xf9\x9f\x99\x24\xa5\xb7\x99\x5d\xc2\x3c\x8f\x30\x1c\xcc\x77\x69\xf7\x1c\x18\x26\x09\x04\xa3\xdc\xfb\x81\x7d\x2d\x80\x5c\xb1\xf1\x96\xbe\x8b\x6e\xcf\x35\x2b\xc2\x96\xbc\x3f\x76\xea\x91\x35\x3f\x8c\xf3\x5b\xcd\x2b\x57\xeb\x59\x42\x77\x3d\x68\x34\xac\x50\xee\xad\xc7\xe6\x64\x61\xd1\xda\x09\x8c\xce\xc7\x5f\xf7\x20\x52\x15\xf5\x24\x59\xd9\x76\x20\xf9\xf0\x28\x9e\x93\x91\x1d\xb3\x9b\x21\xdf\x81\x8f\xdf\x0b\xed\x45\x50\x92\x44\x63\x3d\xf0\x1c\xdd\xdb\x4b\x75\x97\x2f\xa7\xea\x6f\x73\x28\x1c\xbd\xbb\xd1\xbc\xb0\x0c\x3b\xc1\xb1\x72\x8e\xea\xe0\xbb\xa1\x72\xb1\x31\xf5\xd3\x08\x90\xa3\x41\xe6\xb7\x2f\x7e\x89\xdd\x4b\x6d\xb3\xe7\x9b\x69\x27\x58\x6c\xf2\xc8\xac\x38\xdd\x14\xf3\x74\xd7\xf5\xbb\xa9\xf4\x35\x3d\xef\x10\xdd\xc9\x4d\x3d\x11\x18\xc5\x69\x9e\x38\xb6\xb5\x04\x91\x8e\x58\x9e\xfe\x3f\x7e\x97\x3f\xb4\x0e\x2e\xbd\x05\x7d\xe1\x38\x5e\x39\xd6\x99\xa8\xf6\x83\xb9\x62\xfa\xe4\xf3\x90\x28\x81\xf1\xaf\xbe\xd7\xc7\x83\x82\x35\x58\xc3\x6d\x68\xc6\x87\x5d\x16\x6f\xa2\x43\xeb\x2a\xe1\x4f\x7e\x63\x15\xa6\xd2\xab\x4e\x79\xea\x8e\x16\xe6\x9d\x30\xed\xc7\x08\xf1\xe7\xaf\x7a\xda\xfe\xdc\xd3\x16\x88\x98\xb3\x31\x87\x81\x78\xc4\xba\x88\x33\xd2\x0b\x3c\xac\x9d\x32\xb8\x88\x8c\xc6\x78\x32\x06\x39\x74\x70\xa2\xe7\xcc\x4c\x98\x09\xff\x79\xce\xac\x9d\xc2\x4c\xa1\x43\x8c\x91\x9c\x8a\x41\x5e\x82\xf0\x90\x2b\x4d\x9c\xf4\xcc\xd5\x76\x96\x8d\x5b\xee\x81\xc5\xf1\x9c\x7d\x57\xb9\xba\xda\x8e\xab\x47\x56\xea\x27\x0d\xd2\x61\x29\xe6\x12\x2e\xe2\xd6\x15\x24\x2b\xc7\xfa\xbf\xf4\xf8\x31\x2e\x68\x6c\x8f"}, +{{0x22,0x05,0x24,0x86,0x0c,0xb8,0x9a,0xb2,0x95,0xbd,0x88,0x4f,0x98,0x8a,0x57,0x91,0x18,0x68,0x69,0x3d,0x6b,0x10,0x5a,0x80,0xb2,0x30,0xf2,0x1e,0x57,0x80,0x5a,0x7d,},{0x4a,0xb3,0x2b,0xc1,0x56,0x6a,0x76,0x77,0xe7,0x99,0x73,0x4d,0xc8,0x41,0x81,0xfb,0xb6,0x54,0xb8,0x13,0x37,0x91,0x80,0xf1,0xdd,0x35,0xae,0xf2,0xd3,0x24,0xc1,0x2c,},{0xdb,0x1c,0xc0,0xc5,0xdb,0x77,0x3e,0xc5,0x16,0x89,0xbe,0x28,0x84,0x2f,0xa6,0x79,0x1a,0x7d,0x75,0xe2,0x9c,0x22,0x8a,0xe9,0x59,0x3a,0x58,0x0e,0x08,0x75,0xb1,0x67,0x0f,0x09,0xb0,0x34,0x42,0x92,0x9a,0x18,0xf1,0xe9,0x41,0x4e,0xa3,0x43,0x15,0xff,0x09,0xd9,0x1d,0x92,0x2e,0xe4,0x7f,0x10,0xf7,0x1d,0xa4,0xab,0x13,0xb7,0xd9,0x01,},"\x02\x4a\x54\xac\x5e\x01\x63\xb3\xa4\xfd\xd0\x2f\x59\x36\x88\x8a\xe2\xf9\xb7\x4a\x64\x14\xb5\x3c\x63\x81\x17\x3b\x09\x5a\x4d\xda\xcf\xc3\xa6\x9f\x19\x16\x7d\x0f\x1a\xe0\xc1\x20\xbb\xa7\xe9\xfc\xb7\xcc\xfc\x79\x6d\x89\xea\x46\xef\x80\x58\x86\x6e\xf6\xda\x7d\x01\xa6\xa1\x42\xea\x69\xd7\x20\xc4\xf8\x05\xac\x54\x05\xa8\x01\x2c\x3c\x2a\x82\x63\xb5\x37\x2d\x59\xbf\x7f\x40\x99\x29\x90\x13\xd2\x62\x59\xdf\xd5\x19\x3e\xce\x56\x17\x97\x77\xbe\x51\xb8\x6b\xd1\xce\x5f\x1f\xc9\x15\x6f\x2b\x3a\x32\xc0\x9d\x86\xbc\x61\x32\xde\x57\x61\x02\xe2\xf0\x3c\x71\x6d\xb5\x36\x6c\xcb\xe7\x42\xae\xe3\x55\x2a\xc3\xb3\x9d\x0e\xc7\xd4\xe4\xe9\x62\x6b\xf8\xec\xe0\x31\xd6\x78\xd3\x48\x09\x05\xc0\xe3\x38\xfb\x7c\xc0\x26\xe3\xe7\x9c\xf2\xc2\x78\x1a\xc2\xa5\xa4\x0d\xf4\x28\x4e\x23\x5a\x03\x89\xe9\x28\xfc\x63\x55\x7d\xc6\xf1\x99\xfc\xec\x5f\x36\x1e\xa2\x47\x59\xfa\x7c\x5f\x71\x97\x8c\x0b\xa2\x45\xe4\xb0\x3a\xe4\x35\x94\x1c\x86\xc8\x1a\x51\x43\x0c\x2d\xc9\x92\x7e\x3b\x0f\x4e\xc4\xeb\xa7\xc2\x74\x5b\x49\x39\x87\x15\x4d\x7d\xa8\x5b\x67\xde\x21\xc5\x98\x40\x7f\xb2\xa7\x60\x80\x4a\xd0\x5b\xfd\xfa\x45\xa6\x13\x22\x4b\x22\xa0\x85\x88\xcc\xea\x3c\xbd\xf4\x7a\x19\x8b\xeb\xf8\xcf\xed\x86\x49\xd6\xd5\xf3\xfa\x50\x13\x76\xbd\xfb\xa4\x00\x3d\xac\x22\x37\xdc\xac\xe5\x31\x5b\x7f\xef\xb8\x79\xa8\x9a\x85\xbc\xe6\xda\x52\x6f\xc3\x60\xcb\xb4\xfd\x55\x4e\xf0\x13\xf3\x3b\x73\x84\xcd\x2b\x22\xa8\x85\x77\xf3\xa2\xd3\x66\x42\x2a\xae\x46\x41\x7b\xa9\x16\xe1\x64\x6e\x24\x40\x4a\x88\xb5\xd5\x3f\xf1\xae\xd2\xa4\x7b\xaf\x81\xfc\xb4\x28\x63\x97\x99\x13\x94\xb2\xec\xc3\x96\x67\xac\x46\xc2\xbd\xb6\xd0\x23\xb3\x3d\xb0\x13\x45\x7c\x40\x05\xd8\x39\x01\x5d\x88\x51\xf0\x28\xac\x33\x4f\xb2\x4b\xba\xd2\x90\x2a\x4d\x63\xae\x68\xe0\xec\xa7\xea\xea\x1e\x85\x65\x29\x64\x7b\xaf\x14\x12\x21\x37\x54\xed\x50\xaf\x3f\x43\x6e\x9b\xaf\xc1\x60\x16\x39\xb3\x9d\x3e\x52\xa9\x3a\x89\x8f\xb6\x01\x9f\xd5\xed\x6e\x7d\xfc\x05\x0e\x7c\xe5\xf3\xd3\x5c\xeb\x50\x67\x02\x1c\x0f\xbd\xc7\x08\xd3\xf2\x6b\xd6\x05\x68\xd1\xed\x2b\x61\x2b\x69\x62\x35\xd5\x33\x33\x18\xf9\xa6\xc9\x87\x23\x5a\x7a\x07\xf8\xc6\xa9\x35\x4f\xb8\xe7\x34\x76\x30\x65\xaf\xcd\x4d\x93\x77\x64\xa4\xf0\x37\xcc\x7e\x7e\x2b\x93\x21\x7f\x16\x41\x68\x4f\xa8\x1b\x7f\xf7\x98\x6a\x28\xb3\x8e\x95\xb3\x32\xe7\x46\x49\xe8\x3d\x0d\xed\x79\x5c\x57\xf2\x4c\xf2\x76\xe0\x14\x39\x01\xba\xfe\xf0\xf1\x69\x3f\xe7\xcf\x10\x90\x4f\xb0\xd8\x80\xd7\x2e\x44\x71\x6a\x70\x69\xda\xaa\xe7\x42\xcf\x0f\xf3\xed\x92\xf5\xf7\xd1\xe1\x0e\x04\x9d\x8d\xf0\x43\x63\x1e\xd0\xed\x4c\x4a\xc4\x02\x2d\x84\x03\xcb\x04\x21\xb4\x54\xcb\xfb\x6f\x48\xa3\x0e\x9e\xe1\x60\x9a\xd7\xb6\x82\x11\x97\x7a\xcb\x33\xb9\xc1\xa1\xbe\x73\x58\x14\xc5\x8f\x66\xdb\x5f\x0b\x8a\xc7\x73\xb1\xd5\x8d\x4e\x6b\xc4\x5d\xfd\x48\xa2\x94\xbb\xd2\x5e\x92\x67\x1f\x56\xf3\x02\xf2\x9b\x50\xd8\x04\x31\xc8\xf2\xea\x33\x99\x62\x57\xb2\x08\xe0\x57\xea\x76\x72\xcc\x2d\x1c\xd4\x20\x4b\x85\xb2\xab\x50\x90\x27\x13\x13\x59\xae\xb4\x2e\x3e\xcc\xdb\xae\xcf\xe2\xcd\x3e\x5a\x33\x13\x26\x6e\x76\x11\x94\xff\x69\xca\xe9\xe3\x7e\x51\xcc\x0a\x54\xf0\x86\xdd\xe1\x3c\xb3\x31\x18\xe3\x4f\xe3\x3c\x74\xd7\x35\x58\x27\x52\xd6\x8d\x21\xc7\x9e\x5c\x3a\xae\xa9\x4b\xa1\x07\xcb\x7e\xe8\xa7\x0a\x3f\x9a\x01\xe9\x80\x8c\x0a\xeb\xa6\x66\x53\x15\xb4\x56\x25\x84\x0a\x03\x3a\x6e\x2a\x87\x54\x95\x05\x79\x42\xed\x9b\xb2\xce\x6e\x4e\xe6\x0b\xed\x47\xcd\x9d\x58\x4b\xc2\x45\x24\x39\x7a\x10\x94\x98\xee\x2a\x97\x3a\xad\x6a\x29\xb7\x0a\x1c\xfb\xfe\x9a\xa5\xc7\xcb\x9f\x35\xf0\xfa\x00\x22\x7f\x43\x98\x8d\x07\x61\x9b\x6f\xb2\xf6\xd3\xbe\xe2\x8e\x10\xee\x70\x53\x47\x01\x5a\x92\x2e\x2e\x88\xd3\x4f\xb0\xce\x51\x5b\x08\xdf\x3a\x1b\x63\x4f\xf9\xec\x15\xd0\x59\x41\x82\xc8\x6e\xbb\x0d\xb7\x83\x61\x2a\x7d\x19\xe4\xb2\x2e\x82\x2d\x56\x62\x45\xae\xd7\x2e\x69\x4c\x3d\x10\x1b\xfa\x4c\xa8\x79\x86\x2e\x5f\x99\xc2\x3a\x5d\x66\x08\x3c\xe0\x6d\x87\xf3\x99\xaa\x78\x88\xab\x83\xb8\x66\x44\x72"}, +{{0x4e,0xf6,0x0f,0x06,0x91,0xd7,0x37,0xe6,0x4d,0x43,0x7b,0xfd,0x33,0x98,0x33,0x0e,0x55,0xe3,0xc0,0x94,0xcf,0x41,0xfc,0x55,0x7b,0x0f,0xe0,0xb6,0x43,0x90,0x9a,0xb8,},{0x30,0x6a,0xb1,0x46,0xe5,0xc8,0xcd,0x63,0x0f,0x9b,0x48,0xbf,0x8b,0x68,0x5d,0xb0,0xb6,0xb5,0x53,0xef,0x69,0x68,0x68,0x53,0xb6,0xb5,0x31,0x96,0x01,0x18,0x54,0x8c,},{0xcb,0xf7,0xcf,0x22,0x08,0x1c,0x5f,0x23,0x5d,0xba,0x35,0x63,0x0f,0xb3,0xf0,0x40,0x8f,0xce,0xcc,0xef,0xeb,0x28,0xb9,0x9d,0x74,0xdb,0xd9,0x8c,0x90,0x2c,0x7d,0x99,0xba,0x9c,0xa7,0xfa,0xb3,0x74,0x7c,0x50,0x4c,0xc2,0x19,0xf4,0xdd,0x10,0x10,0x81,0xf5,0x8c,0xe6,0x16,0xe2,0x92,0x80,0xe3,0x62,0x53,0x9f,0xe4,0x9f,0x34,0xd7,0x05,},"\x0a\x18\x8a\xc2\x6f\x3c\x5d\x89\xf3\xd5\x88\x37\x4f\xac\x5e\xcf\x9a\x46\x7e\x21\x65\xb3\x1d\x0b\x0f\x23\x50\x1b\xd2\x2e\x62\xbf\x35\x55\xff\xba\x94\x63\x1d\xe7\x4a\x6a\x3c\x3c\xf6\x3b\x03\xac\x1b\xbb\x37\xd2\x33\xec\xa5\x99\x3b\x09\x70\xa0\x22\x0d\xe8\xd6\xc4\x1a\x97\x03\x07\x30\x9a\x52\xda\x05\x76\xdc\x33\x4d\x80\x64\x47\xaa\x09\xd0\xb2\x45\xea\xcd\x0b\x42\xc4\xe1\x9f\xa3\xd6\xfb\xdc\x22\x94\x30\xeb\x3c\x75\x58\xaf\x53\x31\xc6\xe7\xfc\xc2\xe5\x52\xce\x35\xd5\x79\x07\x3b\x54\x8d\xc1\x15\xbb\xd2\x7e\x5a\x33\xce\x1c\x47\xfc\x84\x61\xe3\x91\xb6\xd7\x67\x95\x34\x87\xcc\x52\xee\x67\x3b\xc4\xbe\x96\x56\x9c\x85\x57\x36\x9e\xbb\x6e\x02\xf7\x92\x38\x10\x8c\x3b\x58\x56\xee\x38\x1a\x79\xff\x46\x4c\x8f\x60\x09\xfd\x47\xe6\x7b\x4c\x80\x20\x1e\x11\xe6\x1a\xb8\xf5\x9b\xa5\xd0\x7b\x15\xac\xe3\xfb\x37\x4c\x64\xb6\xb4\xc3\x45\xe2\xb0\x0e\x91\x51\xab\x8e\x1c\x5c\x98\x56\x8b\xc5\x8d\xd0\x81\x2a\xaa\x3b\xee\xe1\x65\xe7\xea\xe5\x8f\xbd\xe6\x30\x77\x20\x3c\x4f\xd6\xe1\x60\x68\xd7\x6e\x3d\x3a\x13\xf1\xcd\xd7\x32\x88\xbd\x5e\x4d\xa4\x4e\xb1\x19\xa0\x4c\x4d\x32\xef\xa2\xf1\x3e\x74\x26\xa2\xf4\x1c\x56\x23\xc9\xb0\x66\xb1\x30\x36\x39\xb8\xfc\xea\x0d\x87\x74\xcc\x08\x04\x5f\x7e\x34\x63\x65\xff\x31\xd3\xb1\xed\x99\xe9\x7b\xca\x5f\x25\xc9\x2b\x28\x43\xac\x58\x5d\x02\x19\x3a\x2f\xd3\x94\x66\xf7\x3a\xaa\x98\x9b\x1f\xa0\x5b\x9a\x15\x7f\xd0\x27\x7c\x5e\x74\x5d\x25\x8e\x02\x78\x03\xa5\x24\xad\x94\x30\x94\x25\xc3\xf4\xde\xc3\x1c\x0e\xfc\x54\x77\x52\xf4\xc7\x19\x4c\xbb\x27\x2f\x84\x9a\x52\x16\x9c\x6a\x07\x8d\x20\xed\xe1\x43\x20\x16\x52\x84\x77\xb5\x8c\x2b\xdf\x60\x63\xf9\x44\x7e\x33\x83\x7c\xcb\x43\x7d\x8d\x6b\x95\xcf\x4c\x44\xbe\x70\xc8\x19\x3a\xd9\x80\xa1\x05\xf3\xdb\x6f\x99\x30\xba\xb4\x67\x8c\x77\x63\x42\xfa\xf1\x70\xed\xf7\x42\x48\xd3\xb1\xca\x96\xf7\x31\xb9\xd0\x26\xd8\xf0\xf7\xc3\x4e\xd3\x72\xc1\xcd\xe1\x76\xf5\x5f\x55\x86\x75\xcc\x31\x80\xc2\x39\x02\xf4\xba\x95\x08\xd1\xc9\x1c\x3c\x9e\x68\x87\x30\x32\x7f\x3f\x7b\x63\x7a\x8f\xee\x54\x37\x37\x59\xfc\xb1\x7c\x92\x17\xea\x44\xce\x43\x69\x1a\x8f\x64\x63\x64\x0a\x4a\x5e\x15\x1e\x62\x54\xc4\xef\x12\x62\x3b\x49\x39\x4d\xa7\xcc\x79\x45\x26\x93\x81\x7d\x6b\xae\xa9\xa0\xa7\x58\x76\x94\x8b\x1f\x8d\x3b\x71\x7f\x9e\xc3\x67\x53\xf5\x32\x63\x71\x03\x83\xb9\x82\x62\xae\x63\x54\xff\x2a\x22\x83\x22\x0a\xd4\x2c\x5c\xb2\xcb\xbd\xf1\x2c\x87\x95\x13\x71\x0b\x16\xbe\x85\x6f\x3b\x13\x55\xb3\x6f\x4b\x80\xc0\x17\xc2\x1b\xe8\x5e\x96\x05\x3d\xa0\x50\xc4\x03\x12\x10\x0a\xbb\x64\x0b\x87\x3d\x88\xfb\x6e\xe0\xd1\x9e\x9e\x61\xb0\x4c\x97\x0b\xd1\xf0\x60\xdd\x31\x1b\xbb\x9a\x6e\x35\xb9\x85\xfd\xca\x17\xca\xee\x8c\xd5\xdb\x63\x7a\xcd\x90\xcb\x8e\x82\x32\x55\xc0\x56\x01\x8f\xef\x59\x20\xdb\x64\x0d\x22\x01\xc5\xed\xdb\xd8\xa9\xc9\x47\x4d\xa8\xde\xf7\xe1\x32\x5b\x3c\xc4\x36\xc7\x4f\x81\x5d\xb1\xe4\x2b\x42\x1f\xaa\xb6\x26\xa4\x37\x8c\x2d\x84\x26\x1b\xf6\x49\xa5\x3b\x32\x1f\x59\x8c\x44\xbb\xd3\x00\x2b\x06\xcf\x7f\x1f\xde\xf8\x4a\xb3\x5f\x73\xed\x7d\xc6\x50\x96\xcb\x1d\xc0\xcc\x0e\x34\xc5\x61\xc8\xa1\x5c\xf5\x27\x9a\xbb\xed\x9b\x16\xff\x24\xa9\x74\x4e\x3f\x5e\x64\x9c\xc9\xd8\x88\x4f\x89\x1c\x3f\xb7\x89\x02\x03\x1f\xfe\x0e\x01\x21\xc7\x20\x80\xad\x10\xc2\x47\xb7\xc9\x3a\x9e\xbb\x2d\x84\xd4\xf8\x77\x75\x0d\x7b\x34\x16\x39\x3d\x03\x04\x52\x26\xbb\x79\x94\xee\xa5\x8e\x27\x2d\xc1\x8c\x46\xb3\x82\xd1\xf9\x7b\x23\x76\x5f\xda\x7a\x8c\xe2\x1f\xc6\xb9\x8d\x72\x3f\xfc\xcd\x99\xac\x46\x55\xcc\x5d\x10\x10\x5a\x2a\x5b\x7c\x8c\xfb\xfb\x90\xe2\x7a\x9a\x80\x9e\x41\xae\x64\x00\x63\x28\x64\x05\xa9\xbe\x83\xac\x5d\x29\x07\xa4\x5f\x16\x3c\x77\x64\xb0\x9f\x99\xa5\x55\x93\x22\x0d\x69\x01\x29\x2b\x9b\x58\x03\xa0\xfe\x71\xb0\xe4\x44\x1c\xbf\xef\x84\x1c\x33\xce\xbc\x98\x36\x4d\x66\x6e\x5a\x9f\x5e\x7e\x69\xa1\x50\x8e\x43\x80\xed\x36\x13\x45\xb7\x24\x8a\x4c\x1c\x1c\xe0\x87\x69\xbc\x71\x52\xdd\xb3\x32\xfb\xa1\x76\x20\x0f\x5a\xbb\xae\x38\x12\xf4\x06\xda\x72\xdd\xe5\xdb"}, +{{0x19,0x7e,0x15,0xdc,0xe4,0xc4,0x7d,0x73,0x4d,0xbc,0xe4,0x68,0x8a,0x7a,0xd5,0xfe,0x41,0xeb,0xf2,0xaa,0x29,0xa2,0xbd,0xdb,0x2b,0xee,0x62,0x84,0x29,0xc1,0xbc,0x02,},{0x30,0xfa,0xc3,0x23,0x04,0x8b,0x0c,0x78,0x1a,0x9f,0x63,0xc1,0xee,0x69,0xf2,0xb9,0xe7,0x5a,0x27,0x06,0xd2,0x49,0x51,0x2a,0x27,0x39,0x60,0x7f,0x26,0xdb,0x13,0x8f,},{0x2c,0x3c,0x8c,0xd2,0x99,0xc9,0x06,0x0b,0x65,0x99,0x9b,0x03,0xa6,0x57,0x9b,0xc5,0x0e,0xf1,0xfe,0x0d,0x85,0x1f,0x23,0xbe,0x9c,0xb5,0x8f,0x8f,0xb8,0xc6,0x72,0xee,0x08,0x6a,0x53,0x9e,0xad,0x94,0x9e,0x08,0x7d,0xf0,0x91,0x12,0x2d,0x26,0xfa,0xaa,0xd2,0x06,0xa5,0xc5,0x2f,0xcd,0x58,0xb5,0x14,0xd7,0xa9,0x35,0xbe,0x01,0x79,0x08,},"\xfd\x97\x1d\x48\x94\x6b\x51\xff\xed\x7b\x62\xc5\xd0\x99\xc1\xe5\x6b\x13\x58\xb9\x22\x35\xe1\x01\x0e\x3f\x23\x84\x4d\xdb\x73\xbc\xee\x8d\x2e\x1c\x99\x77\x35\x3b\xc9\x6a\x22\x1c\x05\x60\x29\x31\xfa\x16\xcc\xc2\xab\x6d\x0f\x01\xc8\x46\xc2\x92\x0e\x99\xde\x02\x6d\xc2\x89\x7f\x3d\x5f\x3c\xee\x17\x4c\xe7\x51\xd4\xa8\x05\xee\x19\x59\xa3\xc6\x9c\xfd\x42\xd7\xc9\xaf\xd3\x1f\xa9\xb1\xcf\x05\x78\x6d\x8f\x90\x42\xa4\xf9\xf8\x1c\xf7\xac\x9c\x1c\x39\xb3\x6f\x1e\xe9\x5b\x98\xcf\x7e\xe3\xf4\x3e\x2c\x34\x37\x33\xd1\xd8\x2c\xc0\x8b\x2c\xde\xb7\x8d\x98\x20\x34\x08\x5f\xf4\xdc\x65\x36\xcd\x15\x4a\x79\x0c\x85\xc8\x61\x3e\xc4\xe5\xe1\xdc\x37\x7d\x38\xa7\x45\xd9\x38\xcf\xb1\x5c\x8b\x8a\xa8\x61\x21\x83\x5f\x2e\x25\xe9\xe6\xd0\xde\x68\x02\x5d\x81\x0c\x3d\xc9\xdf\x99\x1d\xad\xad\x39\xdc\x69\x81\xfd\xba\xc1\xff\x9b\x7a\x79\x1c\x39\x60\xd8\x56\x43\x66\xe5\xaa\x39\xa9\xe9\xc7\xcb\xf1\xd3\xf0\xf8\x20\xd1\xb9\x01\x08\x75\x1a\xc7\x64\xda\xbe\x05\xc5\x1c\x18\x52\x9d\xa1\xb0\x34\x96\x14\x66\x84\x24\xab\x4e\x93\x64\x40\xc4\xa2\x51\x3b\xe5\x28\x53\x93\x72\xee\xe7\x87\x54\x58\x9d\xbe\x79\x94\xfa\xa1\xf6\x22\x91\x24\xf8\x39\x95\x0e\xd0\x92\x3f\x43\x23\x31\x5a\xc9\x63\xbb\xe4\xc8\xe1\x77\xda\xc5\x16\xe7\x34\x22\x38\xf1\xcd\xf1\x40\xbe\xfc\x8a\xcd\xca\x3d\x00\x2b\x16\xc1\x39\x8d\x86\x86\x00\x30\x4c\x7e\x98\x53\xb2\x3a\x51\xb1\x7d\x9f\xd0\x61\x56\xe1\xd1\xd0\x8a\x28\x46\x09\x09\xfa\x20\x9c\xcc\xcc\x4c\xec\xbd\xb1\xa4\x63\x48\x08\x91\x15\x31\x86\x81\xa9\x5a\xe5\x80\xab\x67\x66\x04\x13\x84\x65\x1c\xc4\xe6\x14\x51\x03\x92\x3b\xdf\x4a\x32\xa9\x3d\x93\xee\xd3\x18\x79\x1f\x20\x80\x5f\x7e\xa8\x4b\x74\x3e\xe1\x1e\xad\x9e\x4c\xa0\x3d\xa7\x6d\xdd\x24\x9f\xd4\x47\x5f\xc1\xa3\x53\xc7\x0a\x83\x38\x9b\xfa\xc5\x20\x98\xdb\x06\x6d\x10\x29\xc4\xef\xfb\xed\x86\x4e\xbe\x7f\x10\x7e\x01\x03\xb3\xa8\xf3\xfd\x1d\x6a\xb4\x36\x0b\x99\xe8\xb1\x40\xc5\xea\x13\x3e\x92\x3c\x39\x2b\x8e\x40\x63\xaa\x6e\x52\x26\x38\xf6\x1d\x7a\x71\xc9\x22\x58\x97\xd9\xf8\xa1\xe1\x6c\xfc\xc8\x01\xe7\xd5\x41\x04\xeb\x10\xe6\x1a\x5a\xe6\x3c\x5c\x85\xa5\xb2\x93\x92\xab\x3a\xb8\xe5\xc0\x39\xf1\x00\xd0\xf4\x60\x0c\x61\x0e\x02\x09\x43\x6e\xf2\xec\xe4\xd0\xbd\xb0\xba\xb4\x37\xb2\xdb\x5f\x37\x08\xfd\xdf\x96\x66\x0f\x6f\xb1\xa9\x0d\x60\x48\xd3\x95\xaf\xaf\xa7\x60\xcc\xaf\x15\xde\xaa\x0e\xff\xeb\x26\xec\x17\x68\x1d\x17\x2c\x13\x30\xf7\x8e\x78\xa8\x73\x6b\x28\x5f\x61\x5f\x15\xd4\xf2\xc3\x13\xd2\x5f\x30\xae\xe9\xd1\xdb\x39\xf5\x35\xfc\xdd\x0e\xbc\x8e\x71\xb8\x9c\xe6\xb3\xfc\xb5\x67\xcd\x0f\xa2\x88\xf4\x8e\xd3\xa7\x59\xbb\x2e\xd2\x00\xfd\xc2\x30\x91\x50\x2f\xd9\xca\x65\x1c\xe5\xe3\x42\x2a\x98\x33\x5a\x81\xd7\x4a\x65\xcc\x15\x00\xe9\x07\x0a\xbb\x60\x9c\x1c\x1f\x68\xfc\x2c\xa9\x4c\xdd\x55\x0f\x99\xbc\xb2\xd0\x92\x41\x6b\x9b\xd3\x88\x41\x0b\x8f\xe7\x48\xfb\x8c\x9a\x5a\xb8\x61\x5f\x2e\xd9\x68\xf8\x5d\xcb\x27\x27\x72\x69\x84\xbe\xad\xa7\xa1\x8a\xfd\xb0\xc7\x2a\xa6\x5d\xe7\xab\xb7\xa8\x6f\x11\x16\x9a\x6e\xad\xf1\xc2\x1d\x61\x4e\x52\xc0\xc8\xf0\x19\x74\x7d\x34\x1a\x05\xd8\x5e\x37\xbf\x58\xd8\x32\x7e\x99\x39\xc2\x38\x7c\x27\x44\xed\xf8\x38\x56\x3c\xb3\x7f\x0b\x16\xe8\xa0\x6f\xc6\x28\xa9\x72\x30\x50\x6f\xa4\x18\x39\x54\xdc\x74\x81\x5f\x3b\xe2\xeb\x2a\xff\x4a\x13\xc0\x65\xf7\x43\xb7\xd8\x5d\xe8\x04\xeb\x28\xef\xe5\x70\xed\x5e\xcc\x71\xab\xa9\x7f\x97\x63\xb4\x36\x17\x32\x47\xf3\x8e\x0c\xf6\x29\x72\x09\xb6\x51\x28\x46\x5a\x38\x26\x64\xce\xd8\x01\x1f\xcc\x3d\x0e\x56\x3f\x15\x5b\xc6\x3c\x94\xdd\xe7\x3c\x7b\x17\x24\x7b\x8c\x3a\x4e\x80\x34\xeb\xd4\x36\x46\x35\x18\x5c\xe9\xc7\x08\x1d\xbd\xbe\x85\x45\xf7\x9d\x01\xaa\x53\x2a\x0d\xc5\x2c\xb7\x90\xa3\x1f\xc2\xff\x41\xac\xeb\xad\x27\xcc\xe9\x24\x45\x54\xdb\x65\x2f\xa2\x87\xba\xe7\xde\xcb\xcc\x8c\xe9\xe0\x1d\x1a\x88\xab\x41\x2b\x6c\x65\x78\x20\x3b\x42\xde\xc9\x82\xb7\xf3\xb8\x23\x14\xdb\x2c\xc7\xc5\xc3\xdc\x1d\x3d\x8b\x17\x14\x4d\xa7\xfe\x60\xe7\xa8\x72\x5f\xd0\xa9\x7c\x61\x06\x07\xcf\x41\x3c\x72"}, +{{0x08,0xb5,0xfd,0x4e,0x41,0x9d,0x23,0x70,0xc0,0xfc,0xd6,0xc3,0xb9,0x2f,0x8d,0xb3,0xaf,0xd4,0x22,0x68,0xf5,0x33,0x08,0x5d,0x9f,0xce,0x32,0xb5,0x22,0x82,0x4e,0x34,},{0xcd,0x0d,0xa6,0x99,0x37,0x9e,0x4f,0x94,0x25,0xe8,0x4b,0x97,0x57,0x30,0x0a,0x51,0xa1,0x63,0xf3,0x58,0x73,0x4c,0xc3,0x7a,0x91,0xff,0x0e,0xa4,0x88,0xd2,0x97,0x79,},{0x42,0xa1,0x37,0x56,0xb7,0x5c,0x67,0x22,0x48,0x5f,0xa3,0xf6,0x94,0x04,0x1b,0x39,0xb7,0xd7,0xc5,0xfd,0x40,0xeb,0xc0,0x6a,0x52,0xe0,0xff,0x34,0xce,0x14,0xd8,0xd4,0x0f,0xa8,0x2a,0x95,0x08,0xb5,0x68,0x53,0x7d,0x26,0xd0,0xdd,0x7c,0x0a,0x31,0xbe,0x71,0x0d,0xa8,0x0a,0xab,0x35,0x19,0x6a,0x03,0x9b,0x60,0x64,0x1d,0xb1,0xe1,0x01,},"\x3c\xee\xee\xa3\x0f\xa4\x01\x56\x3d\xf3\x6b\x19\x8b\x9b\x59\x69\x8c\x10\xe1\x00\xa2\xf3\x0e\x6f\x78\xfe\x62\xb9\x2e\xca\xc9\x89\xe8\xaa\x09\xec\x76\x0e\x89\xca\xc0\xa1\x6b\xde\x3c\xac\x73\x62\x2a\x86\x27\xef\xed\xfa\x4e\xc0\x9b\x87\x3f\x7e\x10\x00\xe7\x69\x82\x91\x0c\xa0\xaa\x4a\xfb\x1f\xf5\xa8\x44\x8b\x76\xf7\xb0\xd2\xa2\xd5\x2a\x7f\x40\xde\xde\xfc\x68\xd6\x0c\xe6\x62\x2c\xa0\x80\xd6\x69\x8e\xa6\xc3\xbd\x72\x10\xb3\xb6\x48\xf5\x32\x52\x29\x14\x94\xb3\x5a\x55\xff\x40\xfa\x1a\x63\x1a\x57\xc5\x10\x01\x1a\x46\xbf\xb9\xe2\x71\xba\xe1\xe7\x8c\xe6\xc6\xea\x60\xc5\x5b\xa0\xcc\xe3\x60\x59\xbf\xb0\x1e\x39\x45\x56\x98\x7f\x74\x4b\x72\xae\xbb\xdb\x4b\x1b\xdb\xb3\xbb\xaa\xee\x1b\x8b\x2f\x31\x74\x50\x6a\x79\x3f\x0a\x51\x1b\x2b\x56\x90\x49\xb3\x0a\x2e\x08\x41\x42\x41\x84\xa4\x8e\xca\x9e\x2d\x83\x78\x3a\xc5\xb6\x1e\xb9\x47\xcb\xd8\xba\xb7\xad\x38\xb0\xc6\x84\x27\xd8\xf9\x4a\xe2\x85\x19\x0d\xbb\x6e\x0c\x6d\x58\x0a\x25\x14\x23\x94\xbe\x94\x81\x58\xd8\xda\x83\xb4\xf3\x4a\x8d\x25\x8b\x97\x07\x56\x32\xb3\xc2\x8b\xfa\xe3\x10\x5e\xd1\x87\x2e\x35\x6e\x43\xae\xd5\x93\x97\xb9\x11\x0b\xbf\x9d\x8c\xa2\xa0\x44\xd5\x27\x1e\x6c\xc3\x61\xe1\x4e\x69\xa9\x32\x51\x76\x83\xec\x81\x81\x8f\x02\xcf\xa0\x29\x5e\x56\x61\xce\xa3\xe5\x86\xaf\xc0\xdb\x41\xba\x95\x55\x3e\xe7\x5b\x20\x0b\x0f\x97\x90\x11\x1d\x37\x57\xa7\x39\xe5\x63\x55\x7a\xff\x9b\x70\xca\x14\xe8\x7b\x79\x54\x37\xba\x91\xa9\x5d\xd0\x7e\xa6\x9a\x11\x35\x9f\x36\xca\x03\x29\x8e\x0b\xfa\x4f\x91\x2f\x64\xa2\x92\x4a\xd9\x01\x97\x5a\x2a\x96\x0b\xa1\xbe\x89\x92\x1b\x1f\x54\x85\x49\x6b\x7e\xa5\xda\x6d\x8a\x69\x37\xac\x10\x5b\xf3\x76\x0e\x48\x76\x99\x0a\x0f\x5c\x5a\x63\x4f\x74\xcb\x57\xdf\x7c\x17\x2c\x8a\x41\x53\x72\xe6\xd9\x03\x29\x87\x17\x49\x96\x16\xf8\x97\x1c\x68\xbb\xec\xe9\x2e\xa8\x78\xa1\x8e\x23\xf3\x27\xc3\x64\x9b\x6a\x85\x2e\xf2\x3b\x7b\x3e\x60\x3c\xdf\x80\x45\x2d\xbf\x1b\xe2\xfb\x77\xe8\x14\xd2\x52\x54\x96\xbb\x31\xfb\x6e\x4e\xd2\x53\x32\x48\xb3\x9d\x5f\xbe\x23\x90\xa9\xb6\xfc\xca\xba\x99\x7e\x8b\x49\xb5\x98\x36\xe3\xe0\x95\x29\xea\x5e\x41\x13\xee\xe4\x51\xc9\xc6\xbb\x26\x74\x1d\x0e\x4c\x58\x6f\x53\xd6\x04\xc6\xea\x0c\x0e\x60\xdb\x02\xe5\x10\x9f\x37\x34\xf5\x1c\xdd\x89\x85\xaf\xeb\x3e\xca\xff\x65\xe0\x59\xe3\x12\xcd\x50\xfa\x34\x9f\xf2\x8b\xdc\x9b\x70\xb7\xf5\x32\xdb\xab\x1d\xf4\x3b\x03\x16\x7c\x1d\x2e\x3f\xa6\xee\x8c\x9b\x17\x4a\x0b\x2c\xf8\xaa\x9f\xfa\x40\x6b\xf5\xbd\x72\x88\x78\x0c\x9c\x4a\x6b\x69\x79\x49\xb4\x86\x38\xd4\x20\x79\xc8\xc6\x6e\x14\xd9\xb5\x72\xa2\x10\xa0\x93\xea\xf1\xd2\xf7\xa7\x03\xb5\xcd\x20\xad\xc4\xf9\x92\x7a\x6e\xa8\xea\x78\xfa\xa6\x1b\xc6\x2b\x3c\x5c\xbd\x3a\x53\x25\x25\x66\xd0\x43\xba\x55\x65\x90\xd9\xa7\x63\xbe\x7f\xea\x4b\x20\xe1\xe9\xcf\xbe\xbf\xae\x15\x43\x9b\x33\x4d\xc5\x39\xb1\x7d\xad\xa2\xe4\x34\xe9\xc8\x32\x25\xb1\xe8\xf6\xbe\xb7\xd5\x56\xb4\x7d\x7f\x69\xf7\xeb\x7d\xf5\xed\xe2\xee\xbd\x84\xe2\x50\xb7\xc9\x46\x8c\x21\xfd\xc0\x17\x0e\xa8\xdf\x66\x2d\x61\x80\x58\x1f\x65\x7f\xe7\x6c\xef\x18\x58\xb6\xb0\x2f\x73\x25\xc7\x21\x96\x43\xfb\xa2\xf7\xe9\x96\x3a\x33\x32\x2d\x65\x04\xab\x91\xbf\x10\xa9\x78\xfa\x07\xb4\x7d\x5d\xb0\xbe\x00\x0d\xcd\x00\x2b\xdd\xaf\x67\x6b\x77\x25\x9c\x9f\x60\xad\x0b\x11\x67\x1c\xd5\x77\x7c\x1e\x80\xb1\x3f\x82\xeb\x0f\xb6\xa1\x80\xb5\x66\x62\x93\xa4\x32\x40\x86\x2f\xbf\xa3\x97\x8d\x95\x31\x19\x71\xaf\xab\x9e\x1c\xc8\xab\x14\xa8\x76\xb6\x57\x2a\xc8\xa4\xb7\xe0\xb4\x0a\xaf\x6b\x52\xa1\xcf\x4c\x1e\xbc\x6c\x1c\x48\x7d\xf5\xa3\xcb\xc4\x00\x5a\x0e\xe3\x29\xca\xbc\x28\x6d\xb1\x0f\x17\xd0\xf1\x78\x2e\x07\xd3\x32\x4f\x0c\x73\xef\xbd\x3c\x2f\xb5\x2b\x71\xf9\x8a\xd9\x5d\xb9\x50\x62\xd9\x14\x25\xe7\x34\x67\xbc\x1e\x4e\x9b\xf5\x52\xe8\xa2\x44\x29\xd9\x7d\xb1\xd6\x6d\xd4\xd9\x95\xe5\xf8\xd2\x4e\x9c\x91\x0b\x2e\xb1\x75\x8e\xf7\x55\x25\xc3\xd6\x5a\x3f\x43\x0a\x02\x73\x48\x82\x0c\xe3\x05\x3b\x6f\x3a\xf4\xec\x96\xd0\x49\x37\x31\xc8\x18\xc6\xb1\xa7\x0c\x25\x0a\xc6\x86\xa4\xfc"}, +{{0x1e,0x85,0xc9,0xe4,0x51,0xb7,0xac,0xf8,0x01,0xd1,0x6b,0xc8,0x26,0x8e,0xb4,0x2a,0xe8,0x5c,0x72,0xc6,0x8e,0x9f,0x90,0x92,0x7a,0xa0,0xf3,0xb5,0x0b,0xef,0xd2,0x29,},{0xa6,0x9d,0x05,0x7f,0x4b,0x74,0x38,0x11,0xe0,0x7a,0xc7,0x45,0x61,0xc2,0x25,0xbe,0x03,0x81,0xc7,0xd5,0x84,0x9e,0x60,0x18,0x79,0x37,0x01,0xa8,0xcb,0x6c,0x99,0xb5,},{0x6c,0x36,0xda,0x9a,0xd6,0xc4,0x56,0x34,0x3c,0xe6,0x42,0xac,0xa4,0x54,0x92,0x3a,0x52,0xa2,0x84,0x4c,0xe5,0xee,0x58,0x94,0x7c,0x8d,0xf7,0xba,0xb2,0xeb,0xe4,0x67,0x82,0x3c,0x56,0x33,0xe5,0x30,0xb1,0x67,0xd7,0x1c,0x47,0xad,0x95,0x49,0xdf,0x05,0x94,0x3f,0x99,0x42,0x1e,0x17,0x47,0x5c,0x4d,0x4f,0x08,0xde,0xdf,0x6f,0x32,0x05,},"\x18\x9e\xa9\xc8\xd9\xed\x14\xb0\xde\x82\xb4\x4c\xbd\xd5\x87\x57\xa2\x7c\x68\x38\x3f\xba\x59\x77\x61\xf9\xe8\x62\xe0\x8d\xe1\x5b\x1e\x44\xc3\xdb\x1b\xad\xbd\xe7\x69\x80\xee\x39\xe6\x99\x62\x9f\x6f\xcf\xef\x32\xd3\x6b\x33\x93\xda\x2c\xa5\xa8\x1f\x95\x9c\x8b\x0f\x1b\x80\x1b\x5f\xa4\xc4\x7c\xa3\x95\x91\xe6\x12\xa2\x43\x5c\x5b\xaf\xd7\x7a\x5c\x7a\xb7\x43\x59\x21\x09\x06\xf4\x75\x33\xb1\x87\x9e\x2a\x5a\xf5\x86\x4d\x96\x1c\x81\x46\xe2\x5d\xac\x77\x25\x55\xe0\x42\xa8\x87\x26\x14\x19\xab\x8c\x9f\x6f\x62\x56\x25\x48\x1d\xa5\xb9\x35\x26\xa1\x31\xf3\x7b\x53\x4a\x00\x50\xa8\xa4\x62\xb3\x3f\x20\xa7\xe9\x4b\x89\x15\x30\xb1\x9b\xf6\x54\xee\x95\x34\xc9\xa8\x36\x1d\x03\x63\x5d\x8d\x27\xd4\x6b\xe7\xbf\x84\x78\x1a\xd0\xd4\x2d\x1e\x7c\x48\x54\xa4\x9b\xa1\xba\x45\x82\x62\xfe\x5e\xa1\x90\x21\xb9\x35\xa6\x94\x94\x92\xd7\x0b\x60\x5e\x15\x19\x89\xef\x26\x41\xb2\xbf\x81\xec\x4b\x92\x02\x0f\xc7\x07\x4c\x2a\x63\x22\x9d\x51\xa9\x44\x18\x6a\x28\x89\x5e\x8e\xa9\x52\x92\xc2\xf8\x72\xbb\x21\xa3\x14\x93\x99\xe2\x3c\xcd\x8e\x2f\xc4\xf1\x7a\x46\xb5\x9c\x28\x2c\x51\xb5\x8d\x00\x26\x6a\x5c\x16\xb1\xce\x35\x0d\x54\x85\xe8\xd8\x01\x6d\xd0\xa5\x0a\x59\x84\xcc\x94\x81\x54\xcd\x5c\xe7\xcd\xa0\xee\x0a\xb1\xd7\x25\x1b\xdc\x70\xa1\x78\x5b\x8e\x91\x03\x91\x7f\x4b\x91\x7a\xb2\xb4\x94\xf3\x48\x33\x89\xa2\xf9\x23\x75\x41\x84\x9e\xd3\xbd\x56\x5c\xff\xac\x9e\x75\x6d\xb5\x6e\xf5\xe2\x34\x95\xbc\x77\x1e\x88\xbf\xfa\x87\x07\xce\xea\x5c\x09\xbe\xca\xdd\x05\x9a\xb8\x89\xd1\xdf\x7e\x88\x7b\x71\xa9\xe6\xc2\x38\x37\x8f\xbe\x0c\x36\x30\x38\x66\x16\x36\x3f\x20\x7b\x16\xc3\x27\x0d\x39\xac\xde\xd5\x11\x52\x99\x92\xf4\xe5\x98\x78\x91\x21\xd3\x16\x13\x58\x10\x63\x6b\xaa\xde\x8a\x28\xed\xc6\x6b\xbf\x5e\xde\x3f\x40\x4a\x70\xb4\x7d\x35\x98\x8b\xe7\x06\xb4\xea\xa0\x30\x23\xa3\x90\x93\xd5\x83\xcd\x4c\xd8\xbf\x4c\x74\x34\x1a\x02\x8c\x19\xd6\x0d\xa3\x1b\x6a\x7a\x03\x4c\x08\x1a\x2b\x03\x0f\xeb\x3c\xd2\xf0\x3d\x0f\xaa\xbf\xfb\x58\xe3\xfc\x36\xc0\x06\xcf\xb9\x29\x47\xa7\xde\x5b\xa8\x74\x76\xc1\xb0\x51\xe1\x82\x83\xc0\x3e\x9c\x6e\x5a\x5c\x3c\x27\x77\xd9\xa0\x75\x73\x72\x37\x96\x64\xe8\x2f\x84\x85\x82\x4f\xed\xb7\x0a\x4b\xc4\xe3\x56\xed\xd1\xb5\xce\x0f\xb6\xe4\x1d\xe0\x17\x16\x21\xb8\x4f\xaf\xa0\x01\x89\xaf\xa8\xa6\xa9\x00\xb1\x4c\x70\x75\x8f\x7a\xa4\xfb\x82\x40\x0e\x0d\x18\xab\x3c\xd7\xe4\x8a\xcf\xd4\x89\xca\xb0\xe7\x2e\x71\x9f\x79\xa0\x7d\x06\x6c\x53\x1a\x89\x1c\x55\x29\x1f\x22\x45\xdb\xbe\xe4\x4e\x52\xb1\xdf\xc8\x72\x7a\xae\x38\x7a\xb9\xe7\x19\x94\xa3\x85\x4e\x1a\xdd\x73\xd9\xa7\x96\x5c\x77\x55\x21\xc2\xf5\x40\x84\x22\x76\xdd\x30\x9e\x2f\x6a\x34\x1e\x7f\x0f\x37\xf2\x2b\xb6\x62\x7b\x6e\x9c\xb2\x5b\xa2\x4c\x6c\x4f\x4e\xb9\xf5\xe7\x62\x2d\x88\xda\x19\x84\xe2\x9c\x5d\xa0\x01\x03\x9c\x44\x04\x2b\x59\x35\x14\x06\xa4\x13\x36\xdd\x77\x2d\x49\x7d\x3f\xc8\xaa\xc4\x11\x72\xeb\x5a\xa6\x41\x7f\xe4\x22\xec\x7c\x15\x0b\x96\xb0\x45\x4e\xe3\x31\x24\x7c\xb1\x53\x8a\xef\xf3\xec\xa2\xd5\x0e\x53\xd6\xd1\x31\x70\xa7\x6a\x00\x49\xea\x0c\x05\x90\x4a\x63\x90\xed\x14\xce\x74\x91\xe9\x7f\x75\x4c\x52\x22\xda\xc4\xb6\x11\x8b\xa3\x81\xf5\x52\xe7\x3e\xa8\x49\x1e\x3b\x7a\xc9\x49\x56\x9b\x56\x9c\xf2\xd2\x9a\x80\x41\x0e\x06\x5b\x5c\xc4\xa4\x66\xbb\x04\xeb\x7a\x15\xf5\x96\x79\x2e\x84\x90\xba\x70\x02\xec\x36\x15\x71\xaf\x5d\x8f\x57\x67\x5c\x95\x64\x49\x47\x0a\x2f\x99\x55\x40\x73\x67\xe4\x09\xa2\x32\x89\x95\x53\x12\x0a\x27\x7d\xb8\x63\xe9\xa8\x2d\xda\xba\xe8\x7b\x78\x91\x45\xba\x89\x8d\xf3\xc2\x8b\x96\xfb\xe3\x01\x4c\xd0\x85\xc6\xe6\x0e\xe8\x83\x17\x01\x03\x6d\x99\xc5\x42\x5d\x58\xe8\xbc\xc9\xfd\x92\x71\xd4\x6a\xec\x1e\xb9\x55\x13\x01\x02\xea\xaa\xb4\x4e\x07\x70\xc3\x0b\x2b\x12\x7e\xfb\x0e\x5f\x8a\x3f\x7a\x0c\xa3\x4e\xc9\x98\x4a\x46\x01\x1b\xc2\x6b\xfd\xe0\xc0\x81\x9b\xb5\x47\x06\xb5\x65\x63\x8b\x75\x42\xdc\x4b\x8b\xf8\x09\x8d\xc0\x1f\x16\x1b\x3b\x12\x96\x18\xb5\x9a\xde\xd3\x3c\xb5\x9c\xe9\x18\x9a\x67\x62\xdb\xae\x5b\x0d\x34\xb7\x1c\x8d\xbf"}, +{{0x51,0xcf,0x86,0x8f,0x82,0x0e,0xed,0xa0,0xdb,0xd1,0x01,0x80,0xf7,0x77,0xe6,0x06,0x5c,0x93,0xa4,0x83,0xc5,0x8a,0x77,0x8b,0x67,0xe7,0xd8,0x42,0x30,0x2f,0xb7,0x67,},{0xab,0x08,0x8f,0x50,0x2f,0xbc,0xf2,0x15,0x0e,0x48,0x46,0xb3,0x4d,0x2c,0x80,0x97,0xff,0x01,0x3c,0x02,0xa8,0xb9,0x7c,0xfc,0xf2,0xb9,0x5a,0x1c,0x72,0xdf,0x3e,0x24,},{0xe1,0x53,0x42,0xa1,0x1c,0xaf,0x89,0x28,0x95,0xe4,0x66,0x22,0x88,0x63,0xd0,0x83,0xb0,0x69,0x2f,0x01,0x06,0x10,0x74,0x8c,0x23,0xdf,0x2f,0x11,0xd2,0x94,0x75,0xba,0xfc,0xe9,0x27,0xca,0xfe,0x7f,0x07,0xef,0xb8,0xc3,0x47,0xed,0x56,0x63,0xe7,0x3b,0xea,0x89,0x53,0x1c,0xed,0xc0,0xc3,0x48,0xe7,0x9b,0x6e,0x58,0xa7,0x57,0x49,0x07,},"\x7c\x2d\x8e\xe8\x2d\x9a\xbf\x8a\xa9\xc7\x24\xc7\x5b\x90\x99\x04\x73\xf1\x31\x76\x3f\xe9\x3b\x30\xcb\x04\x72\x35\x88\x62\x1d\xa2\xa3\x27\x92\x8b\x22\x64\x9f\xa0\x62\xcd\xea\xbd\x77\x76\x15\x38\xb2\x70\x9b\x8f\xb7\xa2\x00\x6e\x50\x35\x09\x13\x4c\x92\x9c\x30\x11\xe1\xd7\x28\xa5\x7a\x4e\x17\x51\x98\x07\x5e\x21\x42\x53\xf3\xf3\x0e\x01\xb6\xe0\x4e\xab\xd4\xde\x06\x78\x95\x58\xe6\x98\xb1\x86\xef\xe3\x4b\x32\x12\x95\x68\xb3\xe8\xd0\xd7\xea\x3f\xf0\x0b\x3f\x25\xa4\x22\x36\x89\x3a\xa8\xa4\x1b\x67\x4a\x0a\xb5\xf4\x1e\x7b\x28\xcf\x5a\x7c\xb7\x65\xe1\x8e\xad\x6d\xe6\xa3\x53\xa7\x82\x4a\x3c\x49\x78\x60\x38\xd6\xf4\x93\x7f\x32\x64\xd6\xcc\xf0\xc0\xa2\x46\x5b\xb6\x93\xe5\x2b\x3d\x1e\x6e\xb9\xae\x4c\xb6\x5d\x09\xcf\xf5\x48\x42\xe8\x53\x62\x85\x7a\x59\xf7\x19\x8a\x68\x8a\x3d\xf3\x85\x13\xcd\xd6\x1e\x21\xdf\xd8\x59\x14\x2c\x83\x44\xa3\xb8\xb2\xa7\xc7\xdb\x17\x0f\x39\xf8\x7c\xa3\xff\x8e\xd4\x27\x96\x2b\x2b\x1a\x14\xd1\x22\xfa\x2d\x5a\xea\x2a\x66\x40\x11\x7d\xd2\x58\xfa\x0f\xc5\x4a\xc6\xe9\x40\xbc\x16\xd2\x11\xec\x9a\xdf\x91\x4a\xb1\x65\x78\xf5\x21\xf6\x55\xd2\x12\x7e\x79\xe8\x71\xbf\x7f\xa7\x54\x47\x19\xd5\x8e\xd8\x47\x85\x0c\xb2\x7b\x99\xeb\x8f\x29\xb1\x6c\xdc\xc2\x8b\x15\xc1\x25\x9a\xb4\xd5\x89\x70\x5a\x40\x66\x88\xf6\x05\xa2\xeb\xf5\x80\x51\xc4\x3a\x77\xc4\xe0\x1f\xd6\xf7\x49\xd3\x2d\xb4\xe8\x9f\x26\x3c\x2c\x16\xde\x18\x1f\x0e\x6b\xdd\x0a\x6a\x64\xff\xe6\xf1\x82\x94\x44\x09\x6d\x9f\x3e\x2b\x67\xe4\xbb\x00\x66\x50\xb5\x92\x9d\x1f\x82\xeb\x11\xbb\xed\x24\xe8\xf1\x01\x8a\x73\x84\x60\x5a\x3c\xf2\x9a\xb5\x98\x33\x79\x39\xc7\x6a\x3b\xe8\x61\xe4\x83\xc5\x80\x5e\xc3\xce\xe4\x5e\x34\x24\x84\x7a\x08\x55\x8d\xcc\x99\x49\x9f\xb9\x38\x2a\xca\xe5\x6c\xdc\x87\xfb\xd5\xb2\x6f\xf9\x4c\x86\xf2\xe1\x08\x79\x43\x83\x50\x1c\x8b\x33\x36\x68\x50\xa7\x6a\x0d\xfc\x0a\x7c\xd7\x89\xa0\x3f\x01\xa3\xe9\xd9\xe9\xae\x39\xfd\x72\x45\xdc\x29\x29\x9d\x24\xf3\xb4\xb1\x67\xca\xcc\xd2\x23\xa9\x9b\x6b\x20\xa3\xb6\x73\xdc\x5f\x74\x66\xd0\xb2\xf8\x15\x09\x8a\x49\x7c\xca\xf8\x04\x20\x16\x8e\xdd\xbf\x4d\xa5\x7b\x86\x66\xe9\xd3\x3c\x48\xeb\x30\x4b\x4c\xfc\xf4\x57\xcd\x76\x59\x54\x3f\x6d\x1e\x66\x18\x90\xf5\x62\xb4\x3b\x8b\x6d\x1c\x4d\xcc\x07\x7b\x60\xbf\xa5\x33\xff\xab\x92\x8d\xbf\xd9\x55\xdc\x51\x16\xd7\x70\x95\x0b\x69\x0e\x21\x06\xad\x52\xd4\x2c\x31\xc2\x2b\x88\x48\x89\x43\x32\xb5\xc6\x99\xe5\xc3\x31\xfb\x38\x1e\x58\x12\xe7\x52\x6f\xdf\x4b\x8a\xa2\xda\xaa\x2c\xa2\xcf\xb9\xc9\x21\x11\xb6\x1c\xbc\x3d\x1e\xef\x6c\x8c\x67\x37\xf0\x55\x88\xf0\x44\x67\xdb\x83\x30\x84\x3a\xcc\x98\xdc\x1a\x16\xfb\xd9\xd9\xd9\x4b\xd8\xbf\xde\x26\xc3\xf7\x1d\xee\x72\xb5\x09\x10\xc3\x6b\x24\x0f\x80\x2a\x61\xca\x16\x37\x2f\x6f\xfa\xad\xb2\xbe\x4e\x85\x3c\x5e\xd6\x9a\x3d\x1f\x6c\x7b\x2d\xe5\x13\xc5\x3a\x3f\xdd\x0a\x67\x6f\x83\xd0\x9d\x5c\x51\x17\x60\x47\xd9\x20\x07\x16\xbf\x22\xba\xe4\x5f\xe0\x1b\x3e\x0c\x2c\x51\xc1\x6e\x46\xad\x06\x37\xf7\x9f\x9b\x4d\x83\x86\x77\x04\xfe\xda\x9f\x22\x78\x31\xde\xa2\x63\x39\x9c\xa2\x77\x1a\x4e\x78\xb4\xdf\x8a\xc0\xde\x6a\x94\x1e\xab\x37\x0b\x1f\xdb\x47\xda\xf6\x64\x2a\xae\xaa\x63\x17\x0f\xa9\xb3\xd1\xe1\x62\x8f\x7c\x4e\x7c\xf0\xea\x8b\x8a\x8e\x51\x8c\xba\xce\xf9\xad\xe8\x4d\xf0\x32\x48\x48\x47\xff\xb6\x1b\xbd\x07\xe8\x72\x7c\xc4\xc2\x5d\xa5\x77\xb2\x64\x51\x9b\x49\x99\xfa\x7c\x0b\xc3\x23\xd4\xf3\xf9\x73\x9f\x78\x0b\x9b\x2c\x23\xc7\x78\x55\xee\x5f\x6d\xcc\x40\x15\x44\xd6\xb6\x4b\x27\x70\x15\x8f\xdc\x6c\x12\xf4\xd8\x9b\xeb\x04\x4e\x0e\x85\xac\x7a\x68\xd4\x29\x17\xb1\x34\x51\x14\xb9\xa6\x72\xd1\x23\x1b\x2c\x6c\x0f\x96\x9f\x20\x35\x31\xe7\x1b\xbb\x40\x05\xb1\x03\xa7\xdc\x3a\x58\xb5\xb8\x24\xa7\xe0\x1b\x6e\xb9\xf4\x96\xdf\xa6\x4d\x64\xd8\xc6\x77\x7f\x53\xaa\x58\xd5\xda\x04\x6d\x72\x6f\x55\x45\x4c\x88\xb6\xd7\xd4\xab\x0d\x21\x98\xa8\x97\x09\xf1\x18\xa6\xb3\x24\x60\xb9\xeb\xce\xff\x3f\xdd\xc6\x05\xda\x77\xef\x3d\x1b\xa3\x0f\xec\xf0\x7b\xe2\xf5\x31\x3f\x4e\xe6\x35\xaf\x5e\x95\x61\xd8\x77\xe9\x9c"}, +{{0x54,0x3d,0x5f,0x1d,0x4a,0x6e,0x10,0x29,0xb1,0x91,0x41,0x38,0xfb,0x1f,0x46,0x59,0xe6,0x94,0x56,0x55,0x72,0x07,0x40,0x66,0x88,0xa2,0x03,0x5c,0xbb,0xb2,0xa6,0x8a,},{0x3c,0x83,0x79,0x0c,0x3b,0x45,0x53,0xde,0xae,0x4f,0x84,0x3b,0x50,0x1d,0x26,0xf6,0x16,0x70,0x93,0xee,0x54,0xe2,0x79,0x75,0x9f,0xfa,0xd8,0xcb,0xc0,0x61,0xe7,0x20,},{0x55,0x20,0x11,0x94,0x02,0x6f,0xd6,0x44,0x8b,0x1d,0x52,0xf8,0x3e,0xd2,0x0a,0xc2,0x84,0xe7,0xe7,0x7f,0xa9,0x2d,0x52,0x95,0xd3,0x38,0x25,0xce,0xa3,0xac,0xa4,0x7e,0xc7,0xaa,0xca,0x2f,0xc0,0x86,0x79,0xf9,0xac,0xfc,0xed,0xb3,0x76,0xfd,0xa4,0x61,0x9b,0xe3,0x27,0x2c,0x74,0x45,0xe8,0x70,0x5c,0x30,0x61,0x41,0xcd,0xe1,0x6c,0x0f,},"\xfe\x00\x57\xf0\x62\xfc\x87\x13\x24\xb8\xbd\x5d\x42\x7e\x9a\x52\x76\x23\x1b\xd3\x09\x90\x7e\x58\x81\xd7\xae\x53\xb1\xf3\x70\xc2\xa4\x33\x02\xa1\x65\x10\xb4\x60\x64\xa3\x07\x36\xba\xc9\x09\x51\xf1\xd9\x88\x1a\xf6\x2c\x70\x14\x83\xeb\xb9\x27\x2a\xd7\x72\x12\xee\xb5\xfc\xbc\x7e\xc2\x28\xd9\x69\xf8\x90\x27\x32\x11\x3b\x98\xe3\xbf\x82\xdf\xea\xdd\x0d\xe5\xe7\x65\xd2\x87\x0b\x12\xd1\xf9\xb5\xa2\x82\x97\xc9\xfd\xd1\x49\x5c\xf8\x77\x89\x19\x6a\x7d\x64\x4e\xec\xd9\x35\x87\xdb\xf2\x0c\x28\xeb\x09\xda\x28\x66\x03\xc5\x82\xd2\x12\x9a\x65\x7d\xb2\xd1\x7a\xdd\x35\x58\xdd\xe0\x29\xce\x27\xb8\x83\x52\xde\x3f\x95\xab\xa1\x7e\x1e\xd1\x91\x37\x22\xdb\x08\xa7\x95\xdf\xbb\x70\xd6\x2a\x88\x02\x72\x4c\xb0\xf5\x35\xf8\x48\xd0\x52\xaa\x3d\xde\x91\x66\x96\x3a\x80\x41\xfc\xcc\x4e\x60\xbf\xb1\x1d\xe2\xbf\x28\x6e\xb6\x02\xa4\xaf\x84\x2f\x4d\x1a\x34\x0d\x78\xbb\xbc\xb2\x85\x7f\x0c\x30\x8f\x44\xbb\x10\x1e\x7b\xc8\xb7\x41\xd5\x06\x09\x4e\x27\xbb\xaf\xa7\x24\x28\xef\x66\x6e\xa6\xea\x16\xf7\x99\xb4\xee\x58\x27\x8f\x04\x59\x74\xd8\x6d\xc7\x2c\xf5\x26\x0d\x96\xf9\xc0\x9b\x2f\x11\x81\xe1\xa4\x50\x0f\x92\x83\xdc\x67\x7f\x38\x4f\xf6\x4e\x51\xe8\x9f\x76\x58\x20\x20\x32\x6c\x38\x8c\x08\xa0\xfd\x00\xde\x73\xd5\xd4\x9c\x06\xc0\xc6\x84\x19\x1a\x26\x4f\xff\x72\x6d\x87\x2d\xc3\xae\x49\x6c\x7b\x47\x8c\xfc\x61\xb5\x17\x14\x19\x2f\x76\x46\x3e\x3d\x0a\xab\x41\x0e\xa1\x15\xe8\xbe\xfe\xdb\x99\x7d\xdd\x16\x99\x21\xb3\x20\x7e\xa6\x6c\x1f\x59\x45\x0b\x76\x23\x12\x9f\xd1\xe2\xdd\x3d\xa8\xf5\x20\x63\x91\x17\x13\x38\xea\x0e\xc8\xef\x3c\x59\xed\x8a\xfc\x69\xf3\x86\x5c\x29\xa0\x72\x3a\x9b\xbe\x95\xa7\x42\x68\x1e\xf9\x85\x7e\x81\xab\xc8\x0c\x92\xd2\xa7\x18\xa8\x04\xf5\x30\x4f\xef\x3c\x63\xd7\x99\xa6\xef\x87\x82\xa7\xdb\x46\x68\x1d\x0d\xe3\x50\x64\x46\x98\x22\x67\xb2\x15\x2b\x0c\x32\x18\x69\xe2\x3c\xce\x8c\x4e\xbe\xbe\xaf\x4a\xa1\xeb\xe9\x28\x3b\x69\x26\x05\x26\x0f\xf6\x21\xb0\x3c\x10\x82\x2a\xa5\xf6\xd0\x3b\xde\xf4\x9c\x46\x2a\x68\xd4\x71\xe8\x49\xe1\x64\xe3\x87\x4f\x6e\x9f\x6c\xb3\xb5\xf2\x93\xeb\x38\xae\x52\x45\xa1\x59\xec\x42\x61\xa9\xbf\x6b\x5f\x7b\x76\x15\xfd\x33\x9e\xa1\x27\x33\x11\x3c\xe7\x67\xf8\x83\xae\x66\x75\x41\x7f\xc7\x70\xb5\x0b\xd6\x0e\x6f\x20\xad\xdb\x29\xc1\xf7\x50\x62\x33\xe3\x2a\x7e\xbf\xad\xab\xff\x98\xcf\xd0\x9b\x2b\x3b\xbd\x3e\xae\x00\x69\x54\x8b\x9d\x89\x87\xaf\x46\xca\x98\xeb\x09\x5b\xac\xbd\x87\x47\x24\xba\x10\xf3\x63\x3a\xa0\x8a\xb6\xec\x26\x49\x4d\xdf\x68\x54\x30\x9b\x55\xd4\x3b\xdb\xd2\x9a\x75\x56\xf1\x2d\xfb\x23\xcd\x0d\xb4\xeb\x39\x37\xa6\x5c\x4a\xed\x96\xe8\x7b\x34\x65\x55\xf9\xfc\x68\x97\x94\x3a\x0f\xae\xe6\x5c\xcf\x39\x4b\xd8\x9b\x38\x1b\xee\xce\x25\xd1\xba\x68\xf8\xfe\x32\xc2\x3b\x33\x54\xf5\xbe\x7e\x3e\xa3\xc0\xde\xc0\xf7\xec\x2d\xd8\x3f\x92\xb7\x30\x58\x89\x2b\x63\x8d\x4c\x3b\x72\x42\xbb\x8f\x55\xbf\x08\x7b\xa4\x5a\x19\x0a\x69\x8b\xae\x67\x5e\x0c\xd5\xe8\x44\x6f\x2b\x21\xae\xb6\x3d\x2c\xae\xa0\xf6\x79\xa8\x37\xe7\x93\x57\x30\x8d\x9f\x0b\x8a\xf3\x1f\x9d\x08\x00\x8c\x39\xee\x8d\x34\x75\x28\x71\x3c\x88\x50\x01\x7a\x7f\x4a\xb9\x8a\x35\xc7\x53\x19\x40\xfa\x76\x21\xe6\x72\x03\xee\x78\x2d\xb3\xa2\xfa\xa3\x0f\x3a\xa8\x50\xa5\xff\x7a\xae\xd8\x4c\x00\xff\xd2\x14\xf2\xc9\x26\x17\x35\xfa\xc3\x25\x9d\x50\xe0\x3c\x26\x52\x50\x52\x79\xd9\x12\x51\x92\x7d\xe5\xe5\x6a\x8b\x90\x64\xcc\xf9\xf4\x5d\xcb\xef\x46\xe1\x18\x9c\xed\x2b\xc7\x9e\x6f\xf6\x52\xe6\x90\x97\xac\xe5\x56\x8b\xb2\xd5\xbe\xf3\xce\x21\xa2\x5b\x3f\x79\xee\x27\x5e\xa3\x4e\x62\x13\x80\x56\x6d\x70\x4c\xd9\x3f\x24\xdd\x90\x20\x93\x2c\xc0\x52\x18\xc2\x3b\x5b\x22\xff\xfa\x7e\x99\xee\x7f\xe4\x57\x87\x6a\x5e\x33\x64\xc9\xa8\xe8\xb0\x49\xcf\xa2\x09\x69\x77\x4f\x50\x6d\x19\x96\xcb\xe6\xef\x5a\x37\x79\x3e\xcd\xb0\x4c\xfd\xea\xed\x7d\xcf\x79\xab\x27\x84\x74\xdd\x77\x08\x22\xd4\xb3\x6f\xc6\x8e\x4b\x2d\xd6\x61\xef\x99\xde\x01\xde\x6e\xec\x57\xfa\x57\x3e\xde\x10\xfb\xbd\x5a\xc6\xfd\x6c\xd8\xbb\x4e\xee\x50\x9d\xbb\x46\x10\x37\x44\x01"}, +{{0xf8,0xd2,0x57,0xfd,0xfc,0xf9,0x97,0x96,0xf8,0xce,0x4d,0x8a,0xad,0xe3,0xb2,0x25,0xa5,0x3c,0x26,0xfe,0xec,0xef,0x39,0x5b,0x95,0x61,0xd9,0xd5,0x87,0xf5,0xa3,0x3c,},{0xf6,0x6b,0xd4,0x87,0x7d,0xf7,0x8a,0xec,0x04,0xca,0x7e,0x77,0x73,0x28,0x99,0xde,0x06,0x77,0x7e,0x69,0x86,0x29,0xf2,0x99,0x69,0xf8,0xfa,0x9c,0x2f,0x47,0xab,0x9e,},{0x92,0x35,0xd4,0x48,0x07,0x86,0x98,0x16,0xe2,0x8e,0x42,0xc8,0x1c,0x80,0x1f,0xfb,0x12,0x1d,0xe8,0x26,0xc0,0xd3,0x3d,0xcc,0x4a,0x4e,0x1c,0x93,0x2d,0x52,0x28,0xb6,0x39,0xbb,0x29,0x4e,0x16,0x09,0x0a,0x93,0xd1,0xf6,0x90,0x4a,0x70,0x04,0x22,0x2f,0xda,0x0a,0x55,0x44,0x6d,0x99,0x01,0xc7,0x23,0x40,0x00,0x7b,0xb4,0x5a,0xe1,0x03,},"\x23\x3e\x1e\xf9\x01\xab\xcb\x69\xfb\x48\x60\x85\xd8\xdb\x02\x33\xff\x78\xf3\x7b\x13\x6f\x0a\xfe\x24\xf7\xda\xc1\x94\x4c\x36\x78\xe7\x4f\xed\x58\xa1\xad\x54\x83\x5b\x7d\xbc\xb4\x6f\xff\x6c\x35\x24\x31\x22\x73\x30\x0b\x6d\x87\x8a\x93\xe0\x60\x8a\x4a\xba\xca\x4e\x31\x94\x72\x2b\xb9\xe2\x3d\x17\x19\x4d\x86\x67\xb8\x4f\x2d\xb0\x38\xc2\x4e\xfb\x8f\x53\x40\x9c\xf5\x59\x4f\xdd\xb8\xbc\xd6\x1f\x74\xcf\x07\x26\xb5\x1c\x65\x1c\xe0\x1e\xb6\x6a\x59\xb4\x55\xf7\xd8\xa7\xd6\x0d\x39\x27\xe0\xc6\xc5\x4b\x13\x8e\x01\x92\x53\x71\xd2\xd9\xd9\x62\xaa\x98\x2f\x5e\x60\x85\x28\x0c\xc0\x5f\x35\x69\x93\x91\x1f\xd2\x03\x9d\xfc\x34\x21\x17\x97\x02\x91\x38\x1d\x82\x02\x7d\xb3\x6c\x79\x91\x00\x05\x7d\x93\x52\xb2\xcd\x87\x9d\x9c\x82\xaf\x73\x4b\x7f\xa2\x97\xd2\x11\x49\xc9\x78\xaa\x5e\x12\x5b\x20\x37\x2a\x9b\x2e\x0e\xd3\x57\x33\x7e\xfa\xea\x13\x91\xf3\xb9\xef\x11\xe3\xe5\x13\x5b\xb7\x0b\xdb\xe3\x2a\x9b\xdb\x7c\x3c\x42\xd5\xd5\x7c\xc8\xda\xb6\x81\x16\x28\xa0\x10\x89\x49\x5c\xb8\xa4\xa7\x6a\x48\x29\x6c\xd8\xdf\xaf\xc0\x05\xad\x49\xd7\x0b\xb1\x9f\xac\xa2\x08\x4a\x1b\x6f\x5e\x48\xd2\x3c\x03\xfb\xcf\x6f\x10\x6d\xb7\x70\xf0\x7c\x33\xe8\xe7\xf4\x75\x7d\xa9\x04\xa4\x4d\xd0\xe7\x38\xf3\xd5\x73\x3a\x32\x93\x75\xce\xd7\x4f\x3c\x42\xbf\xcd\xbb\x91\x01\x00\x45\x5d\x6a\xa7\xd2\xe3\xe3\xaa\xa5\x8a\x82\x96\x30\xd3\x76\xb0\xb4\x66\xdc\x85\xaa\xc4\x8f\xe2\x69\x94\x6a\x7b\xc7\x2d\x91\xeb\x37\xde\xd2\xf4\xa7\x7c\x68\x4b\xe0\x10\x93\xfd\x12\xde\x9d\x9d\x83\x19\x9c\xcc\x50\x95\x9a\x48\xd6\xe9\xa4\x14\x27\x56\x60\x92\xf0\x4a\x0f\x95\xca\x52\x37\x2e\x07\x62\xb9\x66\xce\x62\x32\x05\x5a\x4f\xd7\x57\xc6\x1b\x8b\xad\x83\xba\xef\x91\xa3\xc2\x77\x2f\xb3\x2e\xad\x8f\x59\x1a\xc1\xe0\x2b\xbf\x90\xa7\xf6\xc3\x90\x79\xb8\x6f\xb8\x14\xcc\x24\x2e\x98\x0f\x0b\x8b\x1a\x2c\xec\xb8\xe6\xd4\xe8\xa5\x21\x1b\xf8\xba\xbf\x38\xe8\x29\xab\x98\x83\x60\x8b\xd6\xd5\x9e\xa5\xe8\x36\xa9\xb4\xa4\xfb\xed\xed\x1b\xea\x2f\xfe\x97\x7e\x8c\xf3\x61\x5c\xa4\xa5\x0f\xea\x1f\x05\xf1\xfe\x53\xc8\xea\xc5\x00\x32\x3e\x1f\x52\xa8\x06\x83\x15\x39\x95\x79\x88\xd7\x9a\xcc\x7b\x54\xf7\xd0\x2b\x48\x0c\x46\x9f\xd6\x95\x40\xfe\xa4\xbd\xd6\x8c\xbd\xc6\x8c\xf9\xc7\x87\x2f\xd7\x92\x59\x1b\x01\xe9\xd9\x90\x2d\x8a\x61\x4f\x4c\x21\x82\x3f\x23\x50\x8f\xfd\x49\xff\x21\x8b\xea\x92\x2e\xc1\x41\xef\xf6\x0d\xa1\x77\xcc\xad\x7d\x7b\x9d\x44\x4f\x3b\x03\x45\x81\x15\xf1\x16\xcc\x6e\x37\x62\x5c\x39\xcb\xad\xf0\x93\x62\xf3\x1d\x33\xf4\xc1\x3c\x33\xb6\x29\x20\x07\xf2\xca\xfd\x19\x4f\x62\xc6\x43\xe7\xa2\x55\x71\x56\x4f\xeb\xad\x7d\x33\xe3\x64\xb6\x33\xd0\x08\xb0\x90\xd7\xa0\x91\x35\x8b\xc6\x9c\x56\x7b\x95\x22\xb5\xc1\xcd\x01\x21\x8d\x38\x52\x9a\xeb\xb0\x3d\x9c\x2a\x5e\xb2\x28\x5a\x71\x76\xf9\x8c\x28\x03\x6f\x21\xe1\x9e\x92\xb4\x06\xe9\x48\x95\xfa\x28\x1b\x35\x22\x8f\xbf\x76\xe7\x3e\x17\x58\xaf\x1b\x43\x4a\x4d\xf9\x8e\x8c\xc5\x56\xb9\xd8\x3f\x6b\x0b\x7f\xf5\x2c\x68\x0f\x65\xef\xe4\xe0\x0c\x59\xb4\x6c\xe5\x93\xbf\x98\x89\x98\x05\xd0\x2b\x91\x65\xb7\x42\x98\x49\xe7\x39\x53\x77\x0a\xe3\x93\xe4\xf1\xf9\x7c\xb9\x0c\xd6\x15\x9c\xc9\x39\x52\xae\x8a\x4d\x3d\x56\xa9\xa9\x5d\xf7\xcf\xab\xac\xd4\xd0\x30\xd7\x36\xea\x45\x4d\xfa\x4b\x4a\xed\x1b\xcd\x88\x5d\x2f\xbe\xa5\xff\xa2\xcf\x29\x27\xc1\x37\xc8\x6b\xe4\xfe\x01\x64\x12\x62\x8f\xe7\xa0\xa0\xf0\x2b\x6b\x6a\x9a\x21\x68\x93\x2b\x94\x3f\xf8\xb2\x8d\xd5\x87\xe7\x72\x87\x79\x0a\xaa\xa6\x9a\x98\x50\x6c\x76\x4e\x6f\x5b\xa6\x33\x8c\x09\xf3\x82\xe1\xb9\x87\xd9\x9f\x14\xa3\xe1\x95\x8c\xb6\x2a\xe6\x70\x5a\x57\x7f\x9f\xfc\x67\x30\x64\x01\x12\x87\x41\xa8\xd0\xaf\x03\xc0\xaa\xaf\x6a\xf0\x6b\xd8\x8e\xe4\xb0\xaf\x67\x03\xe0\xea\x60\xb0\x40\x9a\xce\x24\x57\x2f\xb3\x86\xe0\x7e\x9c\x22\xc9\x68\x6b\xdc\x66\xd4\xfc\xf3\xc7\x46\x1d\x38\x33\xa4\xc3\x01\x32\x43\x60\x7d\x4d\x15\x82\x17\x18\x73\x26\xdf\x51\x72\x5a\x6b\xc5\x11\x6e\x99\x0b\xef\x8a\x5a\x95\x79\x60\x02\x07\x20\x6b\xfc\x3a\x6d\xcf\x07\x46\xef\x75\x6f\xd9\x39\xe1\x87\xf6\x68\x75\x07\x16\xc0"}, +{{0x8d,0xa9,0xf5,0x4d,0xa0,0xb6,0xa5,0xa3,0x89,0x85,0xb8,0x8b,0x71,0x33,0x9d,0xc7,0x38,0x4c,0xfd,0x5a,0x60,0xbe,0xe1,0x59,0xc3,0x94,0xc2,0x23,0x63,0xbc,0x7e,0xdd,},{0x1a,0xc1,0xa8,0xed,0xeb,0x21,0x7a,0xe9,0xb3,0xa3,0xde,0x53,0x0d,0x24,0xd8,0x3e,0x11,0xfb,0x65,0x38,0xcc,0x70,0x9b,0x52,0x99,0x4f,0xa9,0xc3,0xf1,0xfa,0xdd,0xc8,},{0xf6,0xdc,0xc2,0xd2,0x7b,0xaf,0x16,0xc4,0xf4,0x81,0x7f,0x87,0x49,0x91,0x57,0xd3,0xac,0x1f,0x84,0xed,0x39,0x8a,0x5e,0x8b,0x0d,0x50,0xf4,0x2e,0xdd,0x73,0x85,0xcf,0x06,0x33,0x7a,0x02,0x36,0x10,0x99,0x70,0xb7,0x9c,0xa0,0x9d,0x7c,0x98,0x31,0xc8,0x76,0xa8,0x02,0x79,0x94,0x21,0xc2,0xab,0xd0,0x75,0x87,0xf5,0xeb,0x66,0x16,0x0f,},"\xbd\x53\xba\xba\x66\x57\xd8\xdb\x8b\xec\xae\x6e\xab\xff\xa5\x2b\x01\x5a\x5a\x05\xfd\xd2\xe0\x70\x64\x7d\xe9\x6f\x9c\xa4\xdd\x21\x9f\xe0\xda\x60\x8f\xa0\x44\x7f\x46\xd1\x7c\x9a\x35\x82\x44\xcd\x54\x08\x59\x65\x82\xcc\xd3\xcd\xd0\x15\x1d\x6f\x09\x23\xe6\x3d\x16\x68\x37\x84\x5f\x27\x3f\xca\x7a\xf6\xc8\x9d\x8d\x52\x46\x17\x5c\x21\x67\xfb\xb9\xc2\xeb\xf6\xa7\x59\x54\x91\xf9\x7a\x97\x13\xb0\x2b\xdf\x41\x3e\x20\x9a\xb2\x2d\xb7\xdd\x2b\x37\xfc\x49\x43\x69\x18\xcc\xeb\xe5\x74\x6b\xc6\x4d\xdd\x6d\xce\x19\xec\x45\x58\xc4\x0e\x08\x96\xe2\x19\x09\x28\x0c\xba\x06\xd1\x6b\x72\xf3\x1d\x98\x76\x85\xd0\x71\xdb\x81\x55\xe9\x9e\xbc\xc6\xc8\x21\xd9\x26\x83\xfd\xce\xe0\x86\x68\xa5\xed\x58\xf8\x39\xd9\xed\xaf\xb9\xf1\x45\x9d\x48\xde\x8e\x1b\xb6\xf7\xce\x84\xda\x0b\xe4\x11\xc8\xf7\xbe\x1b\x9a\x24\xbc\x5d\x0f\xe3\xa9\x6b\x02\x35\x07\x50\xa5\xcb\x25\x0b\x49\x55\x5a\x48\x76\x72\xbd\xff\x3c\x3f\x78\x4e\x3f\xb6\x3c\x1c\x97\xba\x6a\xe4\x3a\x10\xe1\x96\xf1\x88\xdc\xc6\x35\xe2\x14\xe2\x9d\xf5\x09\xe5\x60\x8a\x53\x67\xaa\x28\x00\xc1\xa9\x6a\xd9\x36\xa9\xe2\xa5\x79\xb8\x59\x2e\xc1\x3a\x35\x93\x36\xa6\x27\x88\xc3\xec\x55\xc0\xff\xd6\xa7\xd4\x9e\xcb\x7c\x68\x2e\xfa\x30\x81\x99\xf7\x08\xd7\x9d\x0e\x88\x56\x36\x6d\x26\x9f\xab\x24\xeb\x1a\x07\x5c\x96\xc8\x81\xca\xb8\x97\x08\xce\xd2\x79\x23\x0d\x3f\x1f\x3e\xe1\x73\x67\x22\x83\xeb\x8d\x8a\x82\x40\x38\xf6\x48\xac\x43\x72\x75\xd7\x5a\x0e\x15\xf7\x1c\xe5\x6a\x8a\xeb\x77\x1f\x07\xa7\xf3\x2a\xfc\x9d\x61\x2a\x13\xbd\x83\xb7\xf9\x39\x90\xd3\x8f\xc3\xf4\xf4\xab\x8a\xa9\x43\x0c\x65\x73\x6e\xb6\x4b\x16\x80\x6e\x99\x5c\x1c\xe9\xdc\xf4\xc5\x54\x4e\x7b\x3d\x01\x54\x1c\x57\x21\xbb\x4b\xe4\xcf\x0a\xe3\x82\xa0\xc1\xb1\x69\xd8\xe4\x18\xde\xfd\x55\x94\x42\xac\xea\x14\xb0\x0d\x70\x5b\xcf\xa7\x8b\xe0\x75\x6a\x8f\x37\x7c\xbf\x18\x3b\xf2\x59\x06\x87\x41\x15\xd8\xce\x4c\x3b\xa8\x74\x10\x29\x38\xa4\xea\x16\x03\x6d\x91\xa4\x2c\x5f\x8f\x18\x86\x55\xca\xcb\x00\xc8\x8e\x3a\x68\x50\x88\x16\xe5\xe1\xc3\x1d\x27\x18\x0b\xbb\xa9\x51\x8a\x96\x30\x72\x6d\x7d\x04\x7d\xd8\xd2\xc0\x40\x12\x19\xe1\x4e\x6b\xad\xfc\x9b\x95\xb7\x7a\x6a\xce\x9b\xea\x71\xd1\xb4\x7c\x21\x89\x03\xa1\x15\xad\x02\x9e\x7f\x20\x39\xea\x23\xcf\xd1\xfa\x6a\x44\xd0\x89\xfc\xac\xb6\x78\x15\x3d\x67\x4c\x0e\x08\x17\x64\x99\x55\x95\xcb\x68\x94\x89\x5f\x08\xe2\x5b\x98\x4e\x3a\x69\x4c\x92\xfc\x7c\xbe\x0f\xfc\x46\x97\x23\x0b\xcb\x0c\xa4\x08\xc2\xd7\x08\x5c\x11\xba\xde\xb3\xe6\xc0\xe7\x5e\x6c\x49\x8d\xb1\xbe\xc1\xed\x2a\x3e\x24\x45\xc3\x2b\x19\x13\xa8\x95\x00\xf6\x9e\x7f\x23\xf4\x1d\x62\xe5\xc1\x89\xf3\x9a\x05\x6c\xb9\xfc\x68\xa4\x52\x02\x3a\x33\x3f\x75\x22\x0c\xb9\xb9\x44\x84\xac\xac\x6b\xbc\x67\x1f\x59\xff\xa0\x72\xb7\x1a\x18\x96\xa1\xb3\x06\xe9\xdc\x55\x8d\xa0\xec\x20\xf3\x73\xe4\xc3\x55\xe0\xc5\xec\xcb\xbf\x13\x50\xc8\xc0\x79\x14\x89\x2c\x45\x4d\xef\xce\xfb\x71\x7b\xe3\x4d\x08\x7a\xeb\x24\x4a\x86\xff\x49\xa6\xc4\x70\xaf\xb3\x6b\x40\xfe\x8b\x71\xc5\x05\xa4\xff\x7a\xf2\x98\x4c\x65\x28\x49\x38\xec\x0e\x40\x52\x31\x52\x1f\x48\x10\x14\x7d\xc4\xe3\x73\xfd\xab\x66\x47\xb8\x6f\x79\x82\x75\x02\xfd\x08\x7e\x27\xf3\x10\xd6\xb3\x12\x36\x31\x13\x84\x21\x55\xc5\x7a\x32\xba\x03\xb6\xcf\xf9\x65\x53\x0b\xd7\x95\xfc\x29\x2e\x24\x1c\x9b\x6c\xa0\x85\x14\x00\x32\xef\xe7\x46\xf3\x7d\x57\xe9\x58\x42\x11\x84\xb8\xa4\xc1\xa6\xa1\xe3\x7d\x45\xe0\x77\x31\x98\x33\x06\x8d\xdc\xb8\x9d\x38\xc7\x5b\xeb\xa1\xa6\xe8\xe4\x05\x28\x88\xec\x18\x16\x2d\xd6\xff\x0c\x59\xa2\xfd\x0b\x47\xf3\x11\x91\x95\x68\x0f\xfc\xcd\xdf\x5f\x76\xb3\x5f\x02\x2a\xa6\x6b\xd1\xac\x56\xf1\xae\x33\x3e\x9b\x9d\x04\x6f\x0b\x79\xa8\x92\xec\xc4\xf8\xd2\xf3\x1e\x17\x53\x6c\x4c\x62\xa9\xb5\xe0\x63\xdd\x2d\xce\x37\xd3\xd0\xac\xb4\x20\x23\xeb\x2f\x2e\xa3\x29\xd3\x87\x6c\x23\x86\xa0\x22\x76\xff\xf9\xd3\x08\xab\xba\xdb\x72\x74\x30\x1a\x69\x62\xec\xae\xeb\x20\xbe\xf5\xe3\x6a\xff\xfc\x38\x7c\xa8\xe1\x85\xe5\x62\xb8\x65\xb4\x92\x04\xc1\x7b\x2a\x70\x11\x9b\x06\x1c\x29\xc0\xfe\x90\x04"}, +{{0x7a,0x2e,0xfd,0x39,0x01,0x24,0xd3,0xfb,0xef,0xc5,0x4a,0x57,0x71,0x06,0xe7,0x4b,0x2d,0x1f,0x5d,0xd5,0x04,0xc0,0x50,0xd0,0xd3,0x59,0xe5,0x3c,0x0f,0x5c,0x87,0x2b,},{0xef,0xc3,0x03,0xd9,0x22,0xe8,0x8f,0x70,0xf3,0x8c,0x1a,0x2b,0x92,0x06,0x84,0xef,0x66,0x30,0x34,0xa1,0xb2,0x3a,0xb9,0xd6,0x9b,0x6c,0xe8,0xed,0x87,0x06,0xf7,0xf7,},{0xc2,0x8b,0x34,0x80,0x48,0x05,0xd8,0x1f,0x7a,0xef,0x78,0x49,0x70,0x67,0x0e,0xda,0xa4,0x17,0x23,0x2b,0xcc,0x67,0xda,0x9b,0x51,0xe9,0xc3,0xd7,0x4f,0xc4,0x99,0x1b,0xde,0x97,0xa0,0x6b,0xd5,0x3f,0xa0,0x0b,0xb4,0x40,0xfd,0x56,0x16,0xcd,0x0d,0xe6,0xe9,0xb0,0xd1,0x9f,0x2f,0x68,0xbf,0xaf,0x9d,0x4c,0x51,0x72,0xc4,0xe5,0x20,0x0a,},"\x23\x8f\xbe\x9f\xb3\x5c\x72\x5c\x6c\x1f\x32\x92\x48\x09\x4b\xc7\xda\x1b\x27\x3e\xdc\x76\x99\xa7\xe3\x45\x2b\x57\x88\xd8\x78\x67\xde\xfc\x40\xa0\x05\x90\xe8\x75\x80\xd2\xc0\x27\x5d\xf5\xab\xcc\xe0\xe1\xaa\xa1\x82\x90\xbf\x93\xb4\x4e\x5a\xd9\xd7\x60\xdd\x21\xf1\xaa\xca\x38\x31\x78\xf9\xff\xf9\x13\x0f\x73\x18\x7b\xa9\xd3\x1e\xa3\x60\x4a\x1c\xdf\x39\x11\xe1\x43\x77\xa0\xce\x8b\x44\x18\x9a\xda\xa7\xaa\xc2\x3b\x6c\xdc\x7a\x42\x5b\x7e\xa7\x45\x50\x84\x55\x70\x4f\x9a\xd7\xa8\x95\x27\x18\xc3\x98\xb4\x21\xb6\xe0\x9c\xb7\x8c\xb5\x2a\x18\x14\xee\x2e\x96\x39\xec\x68\xd3\x61\xf0\xa3\x20\x41\xd6\xe7\x42\x5b\x4b\xb3\x3c\x70\x19\x6e\x24\x00\xeb\x81\x2d\xb8\x50\x6c\x9f\x32\x45\xbd\x98\x8f\xbc\x89\x1b\xe2\x0c\xb0\x69\x15\x59\xfc\x91\x6b\x57\xff\x96\xc9\xb1\x44\x89\xe0\x99\x3c\xb7\x39\xa3\x9d\xa2\x46\xd0\x1a\x6e\xbd\x07\x58\x35\x81\xf2\x50\xbf\x48\x0b\xc4\x4b\x2c\x33\x91\x54\x2d\x59\x5e\x4d\x39\x94\x90\x19\x5f\x84\x45\xdf\x63\x8f\x34\x69\x8f\x1a\x96\xed\x27\xb3\x53\x3e\x3e\xb6\x7e\x8f\x86\x58\x65\xfa\x95\x55\xed\x34\xdf\x11\x15\x76\x41\xa0\x0e\x6d\x60\xcf\x62\x3f\xec\x1a\x92\xb8\x7a\x15\xd7\x65\x18\x5f\xd9\x05\x5a\xcb\x38\xd7\x5c\x99\xdb\x4f\xce\x7b\x0e\x39\xfd\xc3\xf8\x51\xda\xf6\x5c\x7a\x33\xf4\x64\x81\x69\x31\x83\x9f\xef\xe8\xe5\x8d\x9a\xb7\x42\xb8\x61\x87\x3f\xd2\x29\x18\x9e\x59\xcd\x4c\xe8\x23\x9f\xc9\x54\x3f\x53\x9d\x2d\x29\x61\x14\x26\x6e\xa8\xc6\xfd\x15\x2a\xc6\xb3\x42\xe5\xd1\xa5\x57\xab\x35\xca\xc5\x1e\x2d\x12\x12\xee\x31\x7c\x4d\x26\x71\x68\x29\xe2\x57\x46\xdf\x17\xd2\xa6\x22\xc2\x43\xf3\xec\xbb\x65\xf5\x7a\xb0\xf4\x27\x0e\x3d\x06\x68\xa9\x62\x50\x22\x45\xb9\x4c\x06\xdf\x0c\x5e\x39\xe3\x53\xaa\x84\x2e\xa0\x80\xcf\x50\x27\x08\xb1\xdd\xa2\xd0\x01\x82\x4d\xe4\x58\xd3\x77\x62\xaf\x2c\xdf\xd5\xa6\xd3\xf3\x5e\x08\xa1\x8e\x14\xaa\x7a\x64\x2c\x51\xe4\x04\x7e\x63\x75\x17\x84\x6d\xf6\x46\xd0\x73\x36\xfb\x17\x24\x34\xe0\x88\x3e\x2b\x77\xd8\xed\x1c\x52\xc9\xcc\x63\x6a\x56\xa1\x9e\x57\xa5\xf1\x61\xb9\x2d\x1d\xcb\xfa\x49\x6f\x34\x4a\xe6\xd4\xdf\xdc\x95\x69\xad\xe4\x57\xa4\x90\x91\x36\x2e\x5a\x0c\xdd\x81\xb3\x75\x32\x43\xfd\xac\x30\xa2\xd2\x7e\xa0\x26\xa5\xe6\x01\x44\x1e\xcd\x55\x37\xa7\x20\x1b\xdc\xb7\xfd\x58\xb2\x40\xd0\x22\x9f\xdd\x9b\xab\xf1\x12\xb5\x69\x48\x12\x25\x0e\x76\x8d\x7c\x0c\xe6\xca\x56\x5a\xd0\x6a\xb8\xf7\x8a\x5c\x99\x50\xee\xf5\x38\x72\x6f\x57\x6c\x4b\xd2\xe0\x75\x5c\x7f\x98\x39\x29\x37\x2a\x5f\xe1\x1c\x73\xf9\xe1\xfa\x45\x3a\xb5\x4b\x58\x17\xaa\xd3\x59\x67\x56\x12\x7d\x84\xe3\x11\x94\x53\xe8\x82\x5b\xb8\x46\x0d\x85\x1f\x1f\x7e\x4a\x28\x38\xa2\xbe\x78\x6b\x23\x35\x04\xa6\x91\xdb\x0f\xa2\x2a\x5f\x41\xfe\x3f\xd3\xc9\xb5\x38\xb0\x4f\x40\x9e\x09\x18\x09\x48\x6b\x28\xad\x0d\xed\xa7\xb3\x8a\x42\xce\xfc\x48\xde\x7d\x86\x79\xc0\x3b\xf8\x77\x23\x85\x11\x82\x0d\x07\x70\xcc\x8d\x7b\x41\x72\x37\x78\x23\xa0\xb9\x91\x49\xab\xb8\x91\x8b\xfb\x66\xd5\xab\xfc\xd1\x00\x60\xb0\x5c\xb4\xf2\x39\xdd\x42\x81\xd9\x34\x83\x50\x4b\x73\x1e\xaf\x5a\xdd\x51\x5f\x1f\x3c\x3b\x52\xb4\xe3\xbd\xaf\x97\x6a\x17\xb3\xc9\xec\x61\xbf\xc8\xe7\x71\x16\x71\x58\x04\x53\x2c\xf2\xdb\xf2\x0b\x7b\xa5\xea\xd8\x5a\xfb\x95\x2b\xee\xc2\xfc\xcf\xf8\x5f\xf5\x07\x2b\xa4\xed\x6b\x54\x38\xab\x15\x20\xc6\xef\x4b\x0b\x26\xf1\x2e\x84\xae\xdd\x65\xce\x5c\x7b\xbe\x6a\xcb\x67\x72\xf5\x93\xa6\xb4\xf8\x1d\xdd\x9d\x50\x27\x46\x50\x50\x47\xc8\x12\xa0\x06\x7a\xfc\xeb\x8d\xc9\xbf\xf3\x0d\x40\x87\xf8\xd5\xa3\x75\xec\xa6\x05\xa0\x62\x27\x84\xd8\xfe\xa2\x78\xcd\x1a\x52\x41\xad\x4b\x3f\x1b\x91\x4f\x74\xf7\x3b\xc3\x6e\xe7\xcc\x82\xd9\x6e\xfd\xa6\x3a\x3b\x67\x99\x73\x0f\x20\x65\x6c\x12\x35\x6c\x79\x06\x9b\x2b\xe6\xf9\xb7\x7b\xe1\x01\x98\x31\x18\x82\x3e\xa6\x6e\x7c\x20\x98\xfb\xc7\x2f\xc9\xc0\x39\xdf\xe3\x0f\x2d\xab\xa1\x3c\x3b\xde\xfb\x8a\x78\x0b\xeb\x5c\xb1\xb6\xc2\x86\xa6\xb3\xef\x48\xfd\x15\xc6\x6c\x04\x5b\xa2\x9f\x09\x70\x41\x3b\x98\x8d\x0e\xa0\x04\xab\x84\xc9\x39\x19\xf0\x4f\x9b\xf8\xca\xf5\x8c\x4e\xb4\x78\xf3\x58\xef\x8b\x68"}, +{{0xef,0x36,0x48,0xcb,0xe7,0x34,0x02,0xab,0x45,0x0c,0xd6,0xec,0x37,0xe5,0x45,0xd0,0xcd,0x2c,0x99,0x9e,0xcc,0x1f,0xa3,0x81,0xa4,0x5c,0x66,0x0e,0x18,0x53,0x30,0x32,},{0x52,0xa1,0xa4,0x52,0x73,0x87,0x26,0x76,0x58,0x2c,0xc7,0x67,0x33,0x99,0x26,0x41,0x4c,0xd5,0xd0,0x3d,0x98,0x0c,0xf6,0x29,0xdd,0xa2,0xd1,0xa2,0x05,0xe9,0x83,0x0a,},{0xf6,0x70,0x79,0x29,0x42,0xec,0x41,0x44,0x28,0x47,0x56,0x38,0x85,0x3c,0x42,0x72,0x8e,0x86,0xba,0x12,0xbb,0xe8,0x59,0x48,0xb3,0x91,0x34,0xcf,0x6e,0x2b,0xd1,0x28,0x13,0xe0,0xd8,0x3e,0x51,0xe6,0x57,0xc9,0x01,0x07,0xad,0x93,0xa4,0x78,0x8a,0xa3,0x83,0x13,0xfa,0x96,0x2f,0x67,0x67,0xa8,0xf7,0x80,0x5b,0xde,0x65,0xca,0x42,0x0d,},"\x6a\x93\x37\x8f\x88\x0c\xf0\xff\xdb\x8e\x07\xd6\x83\xcc\x35\x2e\x2a\x10\x33\xc4\x50\xba\xa0\xe8\xc4\xe1\x62\x05\xfd\x0c\x02\x74\x3b\x0e\xa0\x64\x97\x1d\x91\x1e\x49\x47\x13\xe6\xd9\x4a\x02\x17\x2e\xd0\x14\xd5\x06\x59\x2e\xc6\xc7\x0a\x9c\x97\x85\x52\x46\xbf\x3d\x26\xf3\xcf\x74\xf4\x93\xc1\xb6\x97\xa0\xc4\x14\x16\x0c\x34\x14\x12\x83\x09\x85\x43\x08\x06\xa0\xcb\x3c\x84\x75\xe7\xe5\xa9\x73\x68\x6c\x24\xd5\xef\x1b\xe7\xd0\x06\x50\x96\xfe\xb5\x2e\xab\x26\x0b\x5c\x48\x8a\xf0\x92\x70\xde\x6d\xec\xd3\x3f\xea\x85\x89\xdd\x10\x21\xba\xf4\x1e\x3f\x25\x5f\xb8\xfa\x19\x16\xeb\xd8\x53\x1e\xeb\x2f\x88\x6b\xb3\xb3\xb0\x4f\x9a\xf6\xb2\x76\xc3\x59\x23\xf1\x0d\x3a\x0a\xf1\xe3\xf5\x8b\x0d\x15\xae\xd1\x65\x04\x5f\x20\x6f\x3f\x43\x0a\xbd\xff\x09\x44\x90\x97\xe4\xb2\x6d\x00\xa8\xf9\xf1\xe8\xf7\xa1\x9f\x38\x58\x81\x24\xc3\x28\xec\x43\xa9\xcf\xb4\x3d\x3b\x2c\x6b\xdf\x6a\x3c\x1a\x10\x2e\x0e\x33\x3d\xe1\xac\x21\x4a\x6d\xf7\x6d\xab\x44\xba\x76\xbf\x03\x52\x73\xb7\xff\x62\x38\xec\x82\x48\x3b\x2d\x2d\x9d\x54\x29\x1a\x72\x27\x0f\x88\x93\x3b\x78\x6c\xac\x05\x1d\x99\x0b\x3c\xf7\x40\x84\x5f\xed\x3a\x67\x86\x7d\x7c\x7c\x05\x67\x4e\x7c\xb0\x2c\xa5\xb7\xac\xdf\xba\x38\x52\x80\x3a\x3d\x56\xc4\xd5\xc1\x3b\xb1\xd7\x72\x34\x67\x74\x1e\xac\x1f\x2a\x7a\xcd\x3a\x95\xf3\xa5\x16\x10\xa4\x86\xfc\x53\xa9\x85\x16\x28\xc5\x57\xd3\x6d\x8a\x4c\xd3\x7a\xae\x9c\x41\x74\xdb\xbd\xb6\xbd\x88\x5c\xf4\x0b\x38\x2b\x8d\xed\x24\xa4\x52\x2a\x27\x8f\xef\x76\xc4\x53\x19\x06\x7e\x55\x28\x6e\x7b\x08\xc6\x03\x48\x6e\x38\xa0\xac\xf4\x7e\xde\xf8\x48\xec\xbe\x94\x2e\xce\xad\xb8\x63\x6c\x83\x3f\xeb\x88\x2a\x51\xa4\x59\x5e\x24\xf6\x07\xca\x3c\x9d\xa1\xb2\x40\x4c\xe5\xc7\x47\xe0\x62\x64\x17\x4d\x64\x50\x43\x31\x70\x9b\xef\x30\x05\x5a\x5d\x69\x5e\x09\x53\x7c\x8f\x8c\x1e\x5a\x3a\x5d\xb0\x65\x99\xe3\x19\xdf\xdb\x28\x72\x96\x65\x27\x3b\xf8\x68\x95\x5e\xa5\x64\x27\xf0\x8b\xac\xd7\x77\xf1\x79\xb3\x02\xf3\xf6\x8d\x04\xf3\xf3\x88\x3d\x34\x49\x55\xb6\x55\xdd\xc6\xd5\x28\x2b\x6d\x4d\xf1\xd8\x36\x30\x21\x0e\x69\x91\x78\xe1\x1f\x72\x2e\x9e\x5c\xda\x67\x28\x92\xae\x9b\x23\xe8\x16\x9c\xbb\x54\x80\x93\xb8\x3e\x64\x3e\xb4\x99\xd9\x37\xd2\x8f\x38\x11\x59\x7b\x64\x84\x10\x2f\x0c\x8e\xb8\xc8\x88\x8c\xda\xc2\x29\xae\xbf\x89\x08\x6a\x64\x95\xac\x55\x1f\x3b\xbd\xf2\xd1\xc9\xa9\x3e\xd1\xd3\xa8\x61\xee\xcd\x9e\xb8\x39\x94\x9b\xfb\xe6\xa4\xf6\xe6\x48\x6e\xde\xda\xb5\x22\x9d\x53\x2b\x58\x97\x6d\x67\x51\x2f\x9f\x71\xae\x79\xb4\x14\x5c\xa2\xfa\x49\x7a\x16\x5f\x11\x07\x17\x66\x6c\xa3\x34\x0b\xbd\xa8\xdf\x1f\x82\xb8\xc0\x54\xcf\x76\x54\xc3\x56\x90\x16\x8f\x96\x27\x7d\x41\xc1\xc2\x36\xb6\x81\x98\x17\x3c\x6e\x2b\x0a\x20\x8e\xf8\x3c\x02\xa4\x3e\x47\x3d\x90\x68\x6a\xce\x75\xb5\xbd\x32\x1b\x3f\x54\x28\x13\x27\xa6\x73\xca\xd4\xd4\xad\x30\x40\xd4\x8c\xf4\x93\xea\x23\x1b\x3f\xec\x06\xf3\x99\x32\xd7\xf7\x0a\x38\x42\x8d\xf8\xfe\xe4\x37\x05\x32\xae\x5f\xb1\x12\x05\x9f\x0a\x1d\x4f\xbe\x11\xb5\xa2\x3b\xb8\x76\x35\x42\x9e\xd3\x3a\xd1\xf6\x14\x80\x14\xcb\xc1\x60\xd9\x3c\xa2\x59\x20\x53\xa6\xe9\x53\x78\xd6\xcd\x3f\x50\xdb\x52\xbe\x92\x8e\x40\x92\xfe\x5d\x2b\x70\x95\xa9\x56\x68\x64\xad\xfd\xa5\x9f\xd5\xf2\xfb\x62\x54\xbd\x59\x17\xb7\x0f\xa1\x46\x99\x66\x5a\x37\x29\x7c\x98\x3c\x1b\xb9\xef\xe1\xc6\x7b\x41\x3d\xd1\xa8\x53\x0c\xbf\x22\x72\x97\xa8\xbb\xf9\x3a\x8a\x02\x45\x4e\x8e\x46\x1a\xc2\x12\xb8\x46\xa7\x0d\x5d\x56\xd6\xc3\xa6\xe6\x5a\x03\xbe\x05\x80\x21\x9b\xdd\xec\x88\xd4\x03\x89\x11\xfd\x95\x74\x56\x3f\x33\xe0\xf9\xe6\x04\x46\x88\xd3\xdd\x48\xfa\xc7\x03\x86\x9a\xa0\x9d\x96\xef\xee\x7d\x6c\x68\x07\x1d\x99\x22\xd5\xe8\xed\x8d\xc4\x0f\x1b\x79\x8f\x1c\x58\x0f\x78\x59\xcb\x84\xf1\xe1\x4b\x5e\x74\xdd\xea\x16\xad\x5c\xbe\xea\x4c\x48\xfb\xcf\xfd\x29\x53\x1a\xcc\xc0\x63\x39\x38\xe3\xbc\xb2\x21\x26\x76\xb6\x1e\xf9\x01\xe9\xc8\x31\xa4\x17\x74\xd8\x31\x7e\xf3\x5a\xf7\x69\x90\xbd\x24\x93\x1f\xde\x6d\x40\x7e\x22\xe7\x63\xcf\x6a\x57\x90\xb2\x37\x61\x90\x8e\xee\x60\x96\x37\xa2\xc1\x10\x59"}, +{{0x2c,0x8e,0xe7,0xfa,0x9b,0xa2,0x8c,0xe7,0x04,0x96,0x76,0x08,0x7b,0x11,0x63,0xb2,0x41,0x11,0x8d,0x34,0xcd,0xf5,0x34,0xae,0xbe,0x8b,0xa5,0x92,0x82,0xa6,0x2a,0xc2,},{0x24,0x4c,0x24,0xf5,0xec,0xb2,0xdd,0x1d,0x14,0x63,0x51,0x22,0x21,0x32,0x5d,0x73,0xc8,0x1e,0xe4,0xd8,0xad,0xb8,0xe0,0x1e,0x23,0x34,0x5c,0xaf,0x9c,0xa5,0x35,0x3b,},{0xca,0x0b,0xb6,0xc1,0x23,0x56,0x55,0x5f,0x6e,0x1d,0x8f,0x5c,0x8a,0xa7,0xb5,0xe8,0x0c,0xd2,0x80,0xe8,0xb1,0xb9,0xba,0x2e,0xc9,0x55,0x0f,0x62,0x2f,0x48,0x2c,0x3a,0x9a,0xd3,0xbe,0x03,0xa4,0xc9,0xdf,0xc1,0x0d,0x01,0x12,0xb0,0x18,0x9d,0xe9,0x4b,0xff,0xaf,0xd7,0x03,0x41,0x14,0xe0,0xe0,0xd4,0x2c,0x23,0xf3,0x2d,0xc8,0x18,0x07,},"\x07\x66\x9a\x89\x64\xf0\x63\x80\xd2\xd4\x98\x2c\xb6\x34\x9d\xe5\x50\xb3\x8c\xbc\x35\xdb\x2c\xe5\x72\xde\x88\x7f\x66\x30\x55\x73\x6f\xaa\xc7\xec\x07\xc3\x2d\xf6\x0e\xe2\x59\x84\x22\xbf\x37\xe7\xcf\x31\x9a\xb3\xc9\x05\x56\x08\xca\x0c\x49\x75\x7d\x76\x88\xe2\x01\x3b\x82\x44\xf3\x54\x04\xf4\x5a\xc2\x19\x49\x7f\xe9\x24\xde\x93\xa5\x8d\x0f\x72\x1a\xed\x78\x25\xf6\x3b\x26\x67\x07\x7c\x16\x1e\xb4\xdd\x8b\xf7\xdd\xbd\xbb\xc1\x9a\x9e\xae\x59\x78\x97\x8d\x5a\xeb\x33\xa0\x6d\xde\x18\xe6\x12\xe0\x5b\xdb\xca\xe0\x16\x1a\xa2\x38\x90\x38\x02\x64\x29\x96\x0d\xda\x3a\xa1\x7e\x96\x7d\x10\x77\x3c\xa4\x97\x35\xd8\xec\xd7\x40\x9b\xe1\x65\xc0\x9b\xb0\xb5\x09\x69\x1d\x59\x1c\x18\x5c\x93\xcd\xee\xae\x95\x35\x23\x16\x54\x46\x80\x52\x38\x21\x45\x8c\xac\xcf\x52\x8a\xc0\x45\x4e\x4c\xdd\xc6\xdf\x0d\x1e\xa5\xf1\xf5\xcc\x1e\xee\xe0\x5e\x19\xa2\xad\x0b\x6a\x49\x73\x6e\xd8\x55\x23\x36\xfc\xfc\xad\xbd\x93\x1b\x0b\x8e\x96\x3b\xe0\x5c\x8e\x70\x37\x38\x85\x52\x51\x2b\x68\x23\x58\x3e\x4a\x14\x38\x4c\xef\x50\x29\x23\x2d\x3e\x0b\xaf\xe4\x66\x35\x1b\x4b\xb3\xf5\x67\x54\x5a\xb4\x1f\xa4\x6b\xff\xaf\xa8\x77\xa1\x2b\x38\xa2\x7a\xbd\x64\xf7\x7f\xbb\x4d\xb4\x66\xff\x7f\x70\x65\x04\x14\x1d\x3a\xdd\x0d\x73\x72\xf1\x6f\xe3\xd8\xc6\x9f\x62\x99\xd9\x39\x66\xd6\x24\xa3\x07\x0e\xad\xb8\xb4\x9f\x29\xfa\xb4\x84\x4c\x75\x28\xa2\xa4\x0b\x66\x98\x70\x60\x69\x5c\xaa\x66\xb8\x67\x18\xc5\x10\x49\xac\xf4\xcf\xad\x38\x53\xed\xb4\x92\xe3\x68\xcb\xd0\x73\x96\x8e\xca\xa4\xa1\xee\x60\x46\xb5\xe8\x26\xe9\x01\xf4\xa8\x08\xc0\x42\x7c\x02\x6f\xe2\xf7\xb2\xe1\x96\x86\x67\xb5\x3a\x7d\x36\xd7\x02\xf2\xff\x82\xc6\x42\xd3\x49\x19\xf8\xe9\xaa\xaf\xe4\x62\xa3\xd4\xf9\x26\x92\xde\xac\x75\x2b\xe3\x48\xf5\x4c\xf0\x89\xdd\x9c\xd0\x51\x84\x6b\x04\xb7\x19\x31\xe1\x9e\x89\xd1\x25\x86\x4b\xfa\x89\x48\xac\xe0\xef\xf3\x3c\x45\x11\x05\x69\xa0\xdf\x37\x53\xf4\xc5\x8d\x80\x02\xb5\xbc\x38\x10\x2e\xc2\xec\xf6\x95\xfa\xfa\x89\x16\xda\x90\x02\x38\x7e\x44\xf9\x6d\xab\xf8\xa9\x82\xc5\x3c\x9b\xad\xbc\x37\xbd\xe4\x37\xf1\x46\xf7\x7d\x8f\x7b\xaf\x12\x87\x31\x96\xb0\xc3\x61\x93\xaf\x55\xf5\x42\xd9\x96\x8a\xed\x80\x69\xab\x9f\xbc\xd6\x81\x4e\xc4\x72\x79\x9a\xd0\x9c\x73\x0d\x41\xed\xde\xca\x3b\x62\x69\xd3\x1a\xb5\x23\xb5\x95\x47\x07\x73\x76\x34\x5b\x05\xf2\xae\x69\xb4\xee\x72\x8c\x86\x3d\x1b\xc0\x4e\x9b\x7d\x3d\x0f\xcc\xeb\x35\x9c\xbd\x08\x58\x59\x7a\xf2\xd6\x06\x3e\x25\x3f\xae\x2c\x3f\x25\x03\x4c\x33\xed\x59\xed\xd2\x78\x28\x68\x29\x86\x81\xca\xf5\x64\xdb\x8d\x19\x36\x6f\x34\xea\xe8\x5b\xa7\x3c\x1e\x23\x89\xb0\xdd\x78\xa9\xd2\xca\xa0\xf2\x3c\x9a\xd5\xf6\xcd\x9f\x2c\x4a\xd5\xd5\x89\x46\xad\xb7\x18\xcb\x83\xda\x58\xe2\xfc\xbb\x60\x25\xbe\xf4\x66\x0a\x83\xe0\xaf\x55\xe2\x03\x08\x02\x93\x2f\x2a\x89\x6a\x09\x60\x79\xb7\x54\xc9\x9f\x7b\x64\x23\xb4\x5a\x86\x47\x2e\x67\x23\xef\x88\x96\xc4\x32\x4c\x73\xd3\x4a\xd5\x8a\x4c\x01\xb3\x8a\x97\xc7\x3b\xe5\xaa\x7f\x74\xa2\xfa\x4d\x07\x95\xaf\x6d\xbf\xcd\x6d\x4e\xb4\x42\xa7\xe2\x04\xdb\x4e\xcb\x1f\x8a\x22\x6b\xdf\xa2\x1b\x6e\xb1\x71\xc9\xe5\x9f\x1a\x19\x2e\x23\xa7\x6c\x35\x2b\x04\xd8\xa8\x02\x33\x98\x5b\x77\xa2\x9c\x02\x01\x19\xce\x65\x1c\x7f\x41\x83\xd0\xe9\xc1\x9f\xe1\x8a\xa1\x02\x0c\x25\xe4\x58\x9d\xee\x34\xb9\x01\xbd\xaf\x9f\xf9\x45\x0c\x91\xaf\x3c\x1d\xb6\x70\xb4\x77\xe0\xac\x21\x07\x69\x6c\x9e\xc0\xd3\x1d\x82\x64\x7b\x68\xea\x19\x49\x9f\xe3\x4a\x8e\x2e\x7b\x37\x8d\xc7\xe7\x54\x24\xe8\xc4\x56\x45\xb0\xc2\x81\x8e\x9f\x88\x5a\x1c\x58\x41\x5b\xba\x1c\x3f\x2a\x77\x54\x9b\xdc\x46\x80\xdb\xcd\x16\x50\xc7\x5d\x0f\x45\x2a\x6b\x20\x85\x91\xdf\x0f\xa6\xe1\x81\xda\x2a\xbf\xab\x44\x46\x21\xd5\xf7\x7c\x2c\xd7\x95\x56\x46\x72\x46\x44\x7a\x89\xf0\xaa\xac\xad\x66\x0c\x9a\x92\x5e\xba\xfb\xad\x43\xc4\x78\xa3\xc8\x50\xa2\x7e\x01\x01\x9d\x88\xa5\xb1\xdc\x81\xb5\xd2\xe9\xf7\x40\xa0\x28\xcc\xb7\x2c\x1a\xcf\x89\x7e\xa5\xad\x89\xe0\xf9\x44\x88\x88\xd5\xb1\x5c\xe6\xe4\x29\x77\xf7\xa7\x29\x15\x5a\x28\x4d\x11\x87\x58\xac\x65\xf3\xfb\xb9\x8d\xeb\x65"}, +{{0xdd,0xd8,0xe9,0xff,0x85,0x56,0x79,0x89,0x6a,0x13,0x97,0xb4,0x27,0xdb,0x85,0x43,0xab,0xe8,0xbb,0x5d,0xd1,0x22,0xe3,0xe3,0x02,0xcc,0xfc,0xe5,0xfd,0xc6,0x3e,0x12,},{0x5a,0x9a,0x31,0x2e,0x89,0x2a,0x10,0xb9,0x8d,0x0d,0xcd,0xd2,0x8d,0xb3,0x48,0x1c,0x3c,0x28,0xad,0xd5,0xad,0x0b,0x19,0x46,0x16,0xda,0x4a,0x3d,0xf7,0x66,0x01,0x09,},{0xdf,0x84,0x9b,0x7b,0xd2,0x97,0x45,0xf8,0xbe,0xcd,0xdd,0xf6,0xc9,0xba,0xf0,0x94,0xd7,0xa9,0x8c,0xc9,0x33,0x8c,0x34,0x4e,0xca,0x17,0xfd,0xe0,0x75,0xfd,0xa8,0xd1,0x54,0x32,0x99,0xf6,0x25,0x98,0x23,0x17,0xdb,0x7b,0x3c,0x77,0x3b,0x64,0xf7,0xd1,0xf2,0x86,0x92,0xac,0x45,0x3b,0x81,0xd7,0xec,0x7b,0x7e,0xc3,0x41,0x7a,0xce,0x04,},"\x5e\x8f\xee\xc5\x09\x35\x0d\x2e\xe7\x95\x5b\x6f\x3e\x27\x82\x78\xa4\xcb\x48\xae\x72\xb4\x65\x89\xe4\x78\xbe\x59\x74\x7d\xf5\x39\x4a\x16\x9f\x19\xe1\x0d\xb5\x32\x02\xa6\xa5\x23\x20\xb6\x3a\x9a\x2b\x72\x3f\xd3\x1a\xa2\xdb\x6d\x58\xc5\x73\x32\xda\x31\x78\xbc\xf9\x66\xc5\x3a\xbd\xa3\x5f\x12\xda\xef\x9e\xdc\xf3\x99\xe4\xa8\xc5\xf8\x3d\x36\xf4\x4a\x17\xd7\x98\x46\xbf\xc9\x6c\xe6\x90\x19\x4c\x21\x9a\x29\x89\x2f\x03\x67\xa7\xab\x38\x44\x83\x78\x79\xe3\x81\x8d\xb8\xd7\x0c\x4e\x3f\xba\x4d\x28\x07\x34\x64\xdf\x20\x85\x95\x10\x38\xfe\xa4\x32\x81\xb6\xb6\x06\xdc\x88\x46\xb3\x0b\x07\x63\xf2\xca\x82\xbd\x50\x21\xf9\x11\x70\x35\xa7\x7b\xcd\x10\x75\x47\x7c\x5f\x43\x21\x43\x34\xd4\xd4\xce\xdd\x18\xf7\x38\xd6\x76\xc7\xb5\x1a\x18\x5f\xfa\x8d\x04\x10\x11\x86\xa4\x95\x2b\xbd\x87\x22\xf5\x39\x90\xb6\x06\x37\x04\x1e\x11\x4a\xeb\x8c\xe7\x11\x11\x31\xd4\xdb\x3f\xb4\xd3\x5d\x99\x5a\xd8\xd6\x65\x0c\x0c\x4c\xcd\xce\x9d\xcc\x39\xdb\x18\x8a\x68\x78\x55\x62\x74\x06\x26\xb3\xae\x3e\x02\x3f\x40\x77\x2d\xed\x87\x6a\x45\xcb\xef\x74\xa0\x58\xfd\x78\xc1\xa1\xff\x2c\x24\x51\xe1\x11\xac\x1b\x4b\x7e\xe4\xc8\x1c\xd7\x63\x10\xd4\xd2\x98\xfb\x3c\x49\xf5\xe6\x40\x19\x08\xa6\x30\xfa\x85\xdb\x74\x71\x80\x4f\xe9\x90\x84\x7f\x0f\x75\x94\x72\xf5\x93\xdc\xf0\x2e\x11\x3e\x15\xe5\x64\xd3\x0d\x59\x84\x69\x2d\xa5\x5b\x0b\x7f\x22\x19\xc4\xac\x16\x26\x51\x1a\xcf\x19\x4d\xc7\x02\x6e\xb9\xd3\x67\xa4\xa2\xf1\xdf\xb5\x15\xcb\x2c\x08\xda\x4f\xe5\x95\xc8\x58\x11\x12\x0c\xba\x2a\xe7\xb6\x6e\x67\xc9\x1f\xb8\xfb\xcb\x9d\x99\xf1\x3e\x50\xfd\x67\x46\x4d\x90\xc8\xdc\xf6\x93\x55\x23\xcf\x6d\x13\xfd\xd1\x06\x35\xb9\x23\x2b\x7a\x61\xdc\xec\x9a\x2b\x92\x10\x61\x41\x0d\xf1\xde\x6a\x45\x16\x7f\xb9\xf6\xf1\x09\xdc\xc0\x88\x91\xf2\x03\xb2\x74\xa3\xb6\x82\x71\xb3\xf3\x5e\x74\xf9\x4b\xdc\xed\x0c\x5f\xf8\x63\x71\x73\xa1\x76\xe7\xda\xcc\x81\xf2\xcd\xc4\xfb\x0d\x52\xd1\xdf\xa7\xf2\x7b\x55\x2f\xd8\xd8\x7a\x1c\x55\xd6\x94\x7f\xd9\x2e\xd3\x25\x3f\x95\x94\xdb\x7d\xf1\x7a\x7f\xc6\xa7\x5e\xcf\x4f\xaa\x4d\x1e\x21\xb6\x76\xb3\x72\x7d\x77\xfb\xd4\x3f\xa7\xbe\x76\xbf\xb5\x8f\xc3\x09\xe5\x67\x5f\x0a\x85\x9c\xc4\x7f\x37\xb1\xbf\x45\x59\x32\xd8\x24\xe8\x63\x78\xde\x7a\x7e\x8c\x40\xce\xd2\x20\x90\x04\x4d\xbb\xf9\x1c\x70\xe5\x28\xea\xcd\xef\x37\x85\xba\x3c\x69\xa3\x73\x5a\xf6\x70\x9c\xd7\x6a\xab\x28\xa6\xac\xa6\xe8\x44\x97\x4b\x10\xb3\xfb\x7b\x09\x86\x00\x7a\x72\x7c\x2c\x8f\xc9\x5b\x25\xf3\x1f\x14\x6b\x36\xac\xd4\xc5\x37\x07\x49\x20\xaf\xf2\x47\xde\x0f\x17\x9c\x13\xca\x57\x79\x0a\x6a\x71\xd6\x2e\x23\x32\x1c\xcc\x75\xb7\xf3\xb0\xaf\xa0\xd0\x35\x27\xc9\x11\x4a\x7d\x4e\x30\xc1\xac\xe6\xd7\x71\x20\x13\xde\xe6\x66\x99\xaf\x9c\x56\x1c\x44\xae\x61\x98\xed\x39\x10\x4e\x60\x61\xae\x2c\x45\xa9\xa3\xc7\x4b\x5d\x0f\xbc\x4a\x33\xe8\xdf\xe2\xa8\xac\xc9\x51\x1e\xf7\xe6\x56\x71\x33\xf9\xfe\x35\x54\x28\x4a\x75\xa0\x59\xa6\x49\xdd\x24\xec\x04\xa5\x77\x30\xc6\xd2\xe9\xbf\x11\x4e\xa5\x8a\x89\x94\xab\xdb\x0c\x19\x43\x24\x15\x72\xc7\x9e\xad\x04\x3a\xd1\xc8\xca\xaf\x5c\x9d\xa5\x3d\xd0\x55\x22\xfe\xbc\x40\x33\x54\xd6\x2f\xe3\xff\x93\x88\x2d\xf7\x5f\xb2\x94\x58\xd2\x2e\x69\x96\xc3\x5b\x69\xfa\xae\xf2\xe0\xc4\x16\x38\x86\xcb\x3c\x3d\x0f\x60\xe1\x50\xd3\x63\xd6\xdb\x59\xfe\xfc\x62\x6b\x1b\xbb\x1e\x05\x2a\x62\x41\x4c\x4b\x78\x56\xd7\x20\x93\x43\x2b\x08\xf8\x21\xbc\x78\x4a\x5a\x6b\x0b\xc2\x64\x9c\x2d\xaa\x50\x86\x58\x98\x0d\x80\x22\x91\xe7\x34\xab\xaf\xf0\x6a\xfb\xf2\x79\x5e\x4e\x35\x4d\x52\x21\xdc\x4f\x52\xcc\x96\xd6\xb8\xcf\x18\x08\xb1\xa8\x20\x8d\xb7\xda\xa8\x0a\xb7\x10\xc5\x6a\x8b\x0e\x9c\xb8\x08\x1d\xee\x93\xf5\xf0\x15\xf0\x76\x64\x46\x3a\x3d\xcc\xff\x7c\x8a\xd1\x99\x23\xa9\x7e\x39\x04\x5b\xcc\x4d\xce\x0a\x73\xd4\x9c\x56\xd5\xe9\x37\xbd\x11\xe6\x18\x23\x40\x1c\x06\x62\x06\xe3\x13\xe6\x0b\x47\x53\x7e\x34\x70\x4d\x7d\x35\x15\x55\x9b\xb9\xd0\x53\x2d\x02\x8e\x28\xa5\x7a\x87\x9f\xd6\x17\xcc\x61\xf7\xf7\x76\xbd\x6a\x00\x8c\xd4\xf8\x12\x37\x8e\xd3\x7f\x39\x4b\xb9\x7e\x6e\x75\x6d\xa8\x19"}, +{{0xa8,0x86,0xf4,0xd3,0xf3,0x4e,0x32,0x0e,0xc6,0xd5,0xf4,0xca,0xa8,0x63,0xf8,0x14,0x77,0xdf,0x77,0x2e,0xff,0x97,0xe6,0x4a,0x37,0xa0,0x5f,0x42,0x11,0xd1,0x90,0xa8,},{0xe9,0xbc,0x96,0xc8,0x1e,0x87,0x81,0x10,0x26,0x8b,0x55,0xde,0xf7,0xea,0x40,0x07,0xa4,0xef,0x9f,0x54,0xd3,0x83,0xd5,0xfb,0x0f,0x6d,0x43,0x43,0xe1,0x01,0x0f,0x38,},{0xab,0xf2,0x83,0xdb,0x1f,0x80,0xc5,0x4c,0x58,0x3b,0x49,0x9d,0xbe,0x20,0xaa,0x04,0x24,0x8c,0x1d,0xce,0x12,0x1f,0x39,0x11,0x67,0x78,0x13,0xac,0x3e,0x01,0x1f,0xd1,0x59,0xad,0x0b,0xf7,0x6b,0x1a,0xa7,0xcc,0x7b,0x14,0xd7,0xb5,0x50,0x84,0x86,0x88,0x25,0x2a,0xcc,0x7f,0xec,0xe9,0x04,0x87,0x24,0x0c,0x3d,0x39,0x9d,0xd3,0x43,0x08,},"\x8b\x83\x1b\x87\x7b\xc3\xa9\x9f\x61\x3c\x89\xcd\xa6\x98\xb3\x75\x9d\x64\x38\x22\xb5\xa8\x8f\xaf\x38\x22\xec\xb2\xce\x98\xf6\x71\xd7\x55\x43\x21\xb2\x4b\x74\xb4\xe3\x0a\x66\x3f\x7a\x55\x70\xae\x91\x7f\x47\x9b\xda\x29\x89\x4b\x1a\x8c\x02\x8c\x9d\x19\x3e\x4e\x7a\xc1\x19\x16\xdd\x8e\x9c\x3f\x0e\xc0\xef\x80\xbd\x27\xfd\xfe\xee\x80\xc1\x70\xc7\x81\x40\xb2\x4c\x15\x27\x14\x15\xac\xf7\x5c\x26\x95\x6a\x4d\x4b\xf9\x9d\x40\xe8\x61\xe9\x07\x83\x20\xd0\x97\xe1\x25\x9e\x5e\xc1\x7b\x58\x3a\x95\xe5\x24\x30\xdd\x8c\x00\x8e\xd8\xc7\xdd\x1d\xe1\xbe\xcd\xd1\xe6\xbf\xec\x4b\xf3\x34\x7a\x22\xdd\x24\x9f\x3a\xc3\x07\xa2\x94\x5e\x91\x37\xfa\x4a\x8c\x26\xc8\x02\x10\x77\x23\x9c\xb3\x24\x81\x6a\x8d\xad\x32\xb0\x1e\xe3\x4a\x08\x90\x30\x98\xcb\x9c\x42\x45\x29\x1b\x90\x3c\x96\x27\x07\x40\x95\x24\x9e\x78\x28\x13\x47\x70\x32\xba\x32\xef\x04\x1a\x07\x48\x6e\xb4\x47\x8c\x57\xb9\xd5\x32\x26\x9a\x4a\x47\xcb\x5e\x97\x4d\xf7\xe0\x10\x96\xfb\xe4\xf1\xcc\xd4\xe6\x63\x66\x34\x87\x97\x4c\x62\xcd\xd9\x4d\x77\x71\x6c\x84\x79\xd7\x9f\x6b\x6a\x7d\x9c\x15\x59\x88\xcf\x39\x02\xfb\x69\x74\x24\x96\x3e\xc4\xec\x34\xff\x2a\x35\xd7\x42\xc4\x45\x5a\x59\x3b\xac\xff\xc4\xd9\x69\x9b\xa7\x62\x6c\x76\xcb\x1a\x61\x62\x53\x75\x18\x87\xf6\xff\xe2\xbe\x20\x8c\x71\x3d\xf1\xab\x63\x6d\x72\x2e\xa0\x6c\x1c\x03\xa5\x7f\x2c\xec\x08\x03\x86\x6c\xca\x33\x35\xc2\x8b\xf4\x1c\x7d\xef\x81\xac\xb3\x88\x58\xdc\x10\xe5\x94\x67\x20\x86\x24\x96\x7e\x2e\x22\xd9\xe5\x66\x1b\xb9\x45\xf9\xe0\x51\x76\x87\xdc\x80\xf9\xb8\xfd\xec\xc8\xa9\x76\x00\xb6\xc2\x19\xa3\xb2\x3a\x90\xb6\xd1\x8a\xaa\xce\x2c\x78\x40\x0f\xf3\x8c\x8c\x05\x96\x7f\x54\x4b\x6a\x60\x6c\x71\xac\x19\x9e\xaf\xd0\x7e\xb5\x84\x8d\xf1\x65\x7e\xfb\x23\x3f\xba\xba\xe6\x3a\x05\x63\x81\x91\xa0\xaf\x74\x84\xa1\xba\xe1\x58\x13\x75\x67\x2c\x57\x1e\x26\x4f\x60\x42\x25\x17\x3a\x54\xa3\x8d\xd6\x2a\xe7\x13\x0d\x05\xdd\x29\x1a\xd1\x23\x54\xde\x86\xa6\xe1\x13\xe8\x3f\x6d\x66\x85\x16\x15\x7b\x79\x67\x02\x0d\xc6\x51\x7d\x8c\xf4\x2d\xd7\xb1\xa8\x97\xfe\x1b\x4e\x04\x55\x3c\xe2\x6e\x29\x99\x80\xaa\x5f\x7c\xe0\x17\x9b\xf4\x95\x4f\x01\xc2\xa2\x36\x54\xe5\xe9\x73\x1e\x14\x47\x34\x7f\xa4\x3a\xa8\xb2\xcb\xd6\xd4\xb2\xdf\x93\xfa\x54\xaf\x71\xe5\x02\x8a\x6d\xa8\xc7\x1e\xf3\xc5\x0c\x0d\xe2\x4d\xca\xee\x78\x56\x78\xe9\x2a\xaf\xab\xeb\x23\x3b\x01\x1f\x45\xc1\x06\x49\x65\x08\x5d\x25\x47\x05\x0f\x21\xc6\x52\xaa\x53\x3a\xfe\x91\x8a\xa0\xf9\xbd\xaa\x26\x07\xb8\x73\xcc\xd3\xdb\xd1\xd3\xa8\xcc\x62\x17\x2c\xeb\x43\xb9\x21\xef\x6b\x25\xc0\x6b\x09\x92\xe4\xdf\x2b\x91\xe3\x71\xb0\xef\x2b\x39\x47\x38\x8d\xae\xc8\xec\x6f\x7e\x38\x67\xd1\xf6\x10\x72\xaf\x59\x01\x54\xfa\x61\x9a\x07\xf8\x7e\x02\xbd\xdc\x74\x06\x31\x42\x70\xaf\x1c\x15\xe8\xee\x88\xb3\x9c\x01\xbe\x60\x2e\x4f\x0b\x52\xd9\xa0\x72\x4e\x71\xed\xdd\x7f\xa9\x13\x41\x69\xc5\xfa\xab\x91\x59\x79\xee\xa9\x36\x2d\x0f\x1f\x91\x60\x26\x81\x62\xdd\x38\xdb\x02\xfc\xfb\x41\x35\x0a\xa0\x8e\x1e\x14\x09\xb2\x28\x8d\xb1\xfe\x4a\x0e\x58\x6b\x59\x10\xf4\xde\x89\x4b\xf9\x97\x4f\x6a\x49\x83\x01\x3a\x19\x0e\x7a\x73\x6d\x14\xec\x54\xc3\x64\x4a\x3e\xe9\x58\xa5\xbd\xfb\xcb\x62\x97\xab\xa4\x3a\xf6\xc7\x27\x46\xbb\x13\x54\x10\x50\x7d\x8f\xdd\xe7\x3a\x2a\x48\xb7\x46\xf9\x18\xbe\xf9\xed\x92\xc5\xbe\x62\xdd\x55\x23\xfe\x14\xb1\x6d\x63\x84\xca\x46\xef\x59\xb2\x18\x5f\xe9\x33\x38\x3a\x2c\x7a\x9b\xf0\x2d\xa9\xd0\xfd\x8b\x0c\x7d\x7b\xde\x6b\x43\x9f\x99\x60\x15\x5e\x34\x5d\x68\x5d\x4d\xc3\xc7\x14\x04\xd6\x56\x81\x19\x23\xaa\x3c\x47\xd4\xb0\x9a\x0b\xae\xf0\xa1\x2e\x75\xb6\x43\x9b\xa8\x13\x5d\xb1\x58\x65\x87\x42\x22\xcd\x7a\xa4\x28\xf5\xca\x5c\xe5\x14\x0e\x22\xff\x92\x69\x7f\x37\xfc\x70\xb5\xb4\xc9\x4d\x33\x14\xe6\xaa\x16\xb2\x14\x6b\xca\x4f\xc9\x41\x57\x95\x1f\xc4\x92\x45\xda\x53\xf6\xc4\x3d\x1b\xeb\xd8\x94\xe3\x1a\x13\x49\x88\x4d\x71\x1b\x55\xdb\xe7\x78\xff\xa7\x27\x16\x5c\xf7\xcb\x67\x64\x35\x86\x6c\x2d\x2c\xb8\x39\x74\x5c\xa4\x01\x66\xa2\xf7\xcf\xc7\x7a\x84\x24\x68\xb5\x1a\x8e\x76\x57\x5f\xc9\xdd\xfb\x5f"}, +{{0x49,0x7e,0x3e,0xbd,0x9e,0x4c,0xaa,0x81,0xc5,0xa8,0x97,0x3d,0x52,0xf1,0xd2,0x3f,0x60,0xc1,0x34,0xca,0x53,0xf6,0x2a,0x85,0x3a,0x0a,0xc0,0x43,0xe5,0x1c,0xb5,0x17,},{0x71,0xc0,0xca,0x7c,0xfa,0x05,0xca,0xfa,0xbb,0x14,0x3d,0x84,0xae,0x41,0xde,0x83,0x84,0x6f,0x42,0xc7,0x7c,0xaa,0x7a,0x91,0xa2,0xe3,0x48,0x39,0x7d,0x07,0xd5,0x2f,},{0x12,0x74,0x08,0x39,0xb3,0xc9,0xf1,0xba,0x87,0x98,0x96,0xdf,0xf6,0xd7,0x25,0xe8,0x4e,0x04,0x43,0xef,0x96,0xc3,0x49,0xef,0xf9,0x4d,0xc4,0x83,0x31,0x43,0xe5,0xb4,0x19,0x80,0x4d,0xa9,0xdb,0x11,0x8a,0x95,0x92,0xb1,0xb1,0xca,0x48,0xaf,0x18,0xf7,0x5b,0xef,0x1c,0xa4,0x68,0xa1,0xa5,0xc7,0x4c,0x7a,0xc8,0x13,0xbb,0x2c,0xf3,0x06,},"\xe1\x32\xf9\xd6\x7b\x17\x29\x38\x9b\x82\x8a\x9f\xae\x05\xa6\x7a\xa5\x7f\x0e\xf7\xe7\xd4\xd1\xba\x24\x4d\xec\x87\x04\xdb\x96\x95\x65\xd1\xca\xb8\x09\xe4\x8f\xc0\xab\xf9\x50\xbc\xd4\xa3\x7d\x97\xae\xac\xe6\xda\x54\x6d\x49\x14\xcb\x5b\x86\xd6\xab\x18\x1d\x83\x18\x70\xc3\x09\xbc\xa6\x16\x46\x8f\x2a\x34\xd3\xdf\xaf\xcd\xbb\x75\x80\xb0\xc5\xd9\xff\x98\xe2\xc5\x4e\xc8\x03\xbe\x0d\x3f\xda\x1d\x4b\x8c\x0d\x77\x09\xc8\x9e\x68\x0b\x00\x8b\xf9\xb8\xd9\x03\xb5\xe9\x34\xb0\x19\x70\x5f\xe0\xb0\xc8\xcf\xbc\x3c\x09\x67\x84\x3b\x0a\x1f\xa1\xb3\xf1\x62\x77\x6e\xbe\x96\xb7\x40\xed\xd6\x4a\xd7\xc3\x5b\x3f\xd1\xa0\x85\xc9\x9d\x16\xf5\x41\x67\x82\xde\x17\x35\x85\x87\x47\x0d\xd1\x3b\x51\x94\xf2\x0f\x23\x23\x2b\x2f\x70\x2f\x10\xaa\xfc\xaa\x59\xc7\x06\x6f\x24\xc4\xc4\x71\xe4\x2f\xa8\x6c\x6b\x9c\x5c\x3e\x1e\x8f\x83\x65\xf4\xdd\x75\xac\xb3\x2f\xff\xc0\x53\xc9\xaf\x41\xc6\xfd\x2e\xfa\xc3\x0e\xcf\x6a\x2d\xd0\x08\x5d\xe9\xb1\xd8\xcd\xc5\x0b\x16\x60\xa8\x66\xdf\x77\x67\x19\x8b\xd9\xc8\x73\x70\x61\x5d\x2b\xca\x99\xf7\x7b\x84\xd9\x8d\x7b\x24\xc9\xc2\x0f\xd7\x76\x8f\xd0\x38\x0d\x6b\x37\x36\x03\x40\xd1\x35\x98\x04\x78\x20\xdc\xed\x88\xa8\xd4\x2d\x57\x29\x37\xb6\xef\xa1\x69\x21\xa1\xb2\xb2\xd0\xeb\x93\x16\x73\x07\x08\x38\xe6\x11\xe6\xc0\x23\x29\x0d\x86\xfe\x90\x2f\x14\xac\x3a\xcd\x02\x9e\x33\x97\xfe\xb9\x7b\x17\x16\x62\x45\xab\x40\x7a\x76\x6d\x2e\x09\x04\x42\x4d\x33\xcd\x3d\x6e\x2e\x62\xa5\x2c\x65\xdf\x7c\xf0\x04\xd1\x41\x5c\x0b\x43\x0c\x11\x27\x62\x3d\xab\x27\x2a\x2c\x2e\x2b\x43\xe0\x2b\x48\x1b\xe9\x28\xe8\x99\x54\x27\x28\x32\xbe\x09\x8b\x50\x2b\x8b\x56\x43\xc6\x74\x82\xf5\xde\x44\x03\x03\x25\x81\xf0\x8a\xfb\x0a\xea\x48\x86\x85\x82\x60\x7b\xb3\x91\x98\xc1\xbf\x13\xa8\x69\xb6\x32\x58\xa7\x58\x90\xb6\x94\x45\xff\xd3\x45\x64\x02\x3e\x47\xf8\xb1\x88\x4a\x5e\x49\xb7\xd9\x42\x5f\x28\xd5\x15\x30\x13\xfe\x37\x55\xc6\xcb\x11\x4d\xb1\x80\xe6\x0b\x3d\xc4\xad\xb3\x6a\x21\x42\x81\x28\x00\x5a\x77\x2f\xb5\x71\x89\x34\x55\x65\xbb\xd1\x75\x98\x13\x52\x3b\xad\x62\x85\x5e\x79\x28\xee\xf5\x88\x0d\x3b\xff\xf1\xd0\xec\x65\xc2\x45\x92\x33\x5c\xda\x47\xcf\xcc\x5b\x5f\xa6\x52\xb4\x72\x63\x22\x52\x24\x84\x6a\x20\x9a\x3d\xd7\x76\x66\x61\xfc\xa4\xcc\xca\x59\xc4\x56\xfc\x9c\xc3\xe1\xcf\x80\x42\x55\xaa\x5f\x39\x7b\xab\x19\x98\x04\x33\x6b\xde\x29\xe5\x5c\x6c\x37\x7d\x58\x3f\x08\x2c\xe6\x47\x23\x73\x9e\x4f\x02\x46\x06\xf9\x06\xc1\x10\xd0\xa5\xb6\x10\xe5\xfe\xd9\x6d\xab\x5f\x08\xf4\xcb\x3c\xfc\x40\xa3\x55\x57\xe1\xa7\x40\xb8\xc7\xc0\x1f\x7d\x32\x79\xdd\x9c\x4e\x87\x64\xc9\x0b\xc1\x4f\x41\x61\xdb\x5a\x37\xf0\x98\x9b\x7b\xd8\x03\x5f\x8b\xea\x39\x4e\xa1\xd6\x00\x2c\xe9\xc3\x4f\x1e\x9c\x52\xc6\xa1\x5d\x15\xbc\x5b\x25\xc6\xc1\x5a\xb0\x0d\xfd\x6a\x5b\x1b\xc9\x17\xaf\x0b\x1b\x05\xfd\x10\xd0\x61\xb3\x68\x3d\x75\xb5\xf9\xef\xfb\x22\xae\x72\x08\x5b\xe4\xf6\x79\x7b\x58\xcb\x0c\xab\x56\x18\x44\x12\x1f\x98\xbf\xd9\x58\x3e\x0b\xcc\xb7\x0f\xad\x76\x98\x0a\x7a\x73\xb2\x3c\x70\xb3\xfd\x02\xf7\x75\x7c\x11\xa3\xc2\x1d\x19\xe0\x56\x50\xff\xb8\x2b\x9e\x0d\xf8\xa6\x73\x5d\x48\x01\x56\xf4\x79\x49\xd4\x45\x85\x1b\xae\xaa\x5e\xe2\x38\x14\xa4\x1b\x25\x23\x4f\xb9\x2c\xc0\xdf\x19\x80\xd0\x23\xd5\x1b\x5c\xf4\xc3\x11\x85\xc1\x18\xe3\xee\x3c\x0c\x0a\x46\xe0\xa2\xbe\x6f\x1d\x3a\xe4\x52\xcb\xb6\x6f\x0f\xd9\x19\x71\x34\x2d\xa7\xb1\xb9\x96\x58\x9d\x94\x09\x67\x81\x55\x21\x95\xc4\x33\xca\xf1\x9c\x37\xf9\xf1\x4f\xa0\xae\x15\xae\x0b\x02\xb9\x39\xe4\x02\x03\x4f\xf8\x18\x85\x93\x9d\x94\x4e\x60\x4f\x47\x4f\x21\x52\x43\x89\x39\x0f\xda\xda\x06\xe3\x0d\x69\x06\x8c\x88\x48\xcf\x0a\x95\x1e\xab\x25\xc4\x91\x25\x62\x94\x4f\x40\x24\x68\x18\x7a\x23\x23\x9d\x33\x63\x2f\x29\x12\x3d\x49\xb7\xde\x13\x08\x33\x98\xdb\xa9\x7d\xed\xe1\x2f\x79\x59\xb9\x52\x47\xa0\x8f\xc8\xe4\xb5\x39\x9d\x1c\x03\x5c\x08\x94\xcc\x75\xae\x98\x1c\x2d\xd4\x93\x54\x13\xbb\xeb\x68\x53\xfe\x04\x65\x5c\x77\xd1\x58\xc1\x23\x7b\x3e\x0d\xec\xa5\x63\x6d\x69\xe0\xdb\xc5\xac\xaf\x72\xb6\x0c\x10\xbb\x98\xcc\xdd\x60\x09\x8a\x03"}, +{{0x85,0xb4,0xd7,0x64,0x16,0x91,0x28,0x62,0x6f,0xd9,0xc7,0x82,0xad,0x61,0x16,0x22,0x9e,0xdd,0x77,0x63,0x1c,0x2b,0xc9,0xb8,0xee,0x54,0xb3,0x65,0x42,0xc1,0x49,0xeb,},{0x6a,0x09,0x89,0x7e,0x62,0x9b,0xb4,0x37,0x04,0xde,0xbb,0x67,0x15,0xc9,0xde,0xa5,0xd8,0x92,0xb6,0x34,0x30,0x64,0x40,0x99,0x7c,0x3c,0x9e,0x94,0xbe,0x8a,0xb5,0x47,},{0x4a,0x79,0xc4,0x42,0xa4,0xc3,0x9c,0x62,0x89,0x26,0x17,0xef,0x8e,0x80,0xb4,0x09,0x11,0xc4,0xb9,0xd3,0xff,0x0a,0x56,0x73,0xb5,0x7b,0xdb,0x84,0x54,0xad,0x73,0x67,0x69,0xdf,0x27,0xc7,0x8a,0x4b,0xf7,0xad,0x56,0x60,0x40,0xe7,0x47,0x27,0x8b,0x11,0xeb,0x65,0xcf,0x9e,0xc7,0xeb,0xa8,0x66,0x12,0x0a,0x36,0x54,0xf4,0x71,0x6e,0x00,},"\xb2\xa0\x49\x3d\x47\x1c\x33\x91\xf7\xad\xd1\xe2\xcf\x0b\xfb\x32\xab\x05\xdb\xcb\x14\xf6\xe4\xf5\xf3\x46\x3a\xa8\xd9\x95\x52\xf4\x33\x02\x20\x46\xd2\xf8\xeb\x76\x3c\x01\x71\xfc\xb1\xe7\x4a\x04\x9f\xfe\xb4\xb8\xf0\x10\x0b\x82\x10\xfc\xe8\x56\xb2\xe1\xa8\xe7\x39\xd2\xf9\x36\x73\xef\x8f\x8f\x40\x49\x8b\x30\x81\xfa\x1f\xd7\x85\x19\x8c\x6d\x37\x0e\x16\x2d\x41\xab\xe8\x31\x86\xf2\x32\x97\x83\x40\x8b\x9b\x88\x0d\x00\xf8\x1d\x53\x10\x0b\x42\xd2\x7a\x26\x1f\x20\xcd\xee\xd1\x9c\xc5\x8c\xb8\x63\x12\x81\xd8\x0d\xb1\x92\x53\x10\xe2\x35\xe4\x49\x66\x30\x9b\x87\x9b\xdf\xc2\x32\x22\x14\x33\xba\xe5\xca\xe4\x66\x90\xcb\x52\x7b\x67\x79\xe1\x1f\x1b\xd2\xa5\x6b\x59\xc5\x6e\xd4\xd9\x4f\xdf\x7a\xa8\x9d\xfa\x9b\xf2\x0d\xbf\xa6\xa4\x39\x8b\x98\x38\x45\x17\xe1\xdd\x5d\x2c\xd9\xce\x52\x4a\x47\x36\x2e\xf3\x2a\xc7\x92\x74\x2a\x12\x9c\x9e\x06\x13\x08\x76\xab\x5a\xd5\x51\x8e\xab\xc5\xe8\x0b\x02\x2d\x8f\xa1\x3e\x50\xd5\x5d\xed\x58\x95\x33\xe6\xea\x32\x24\x2c\x1b\x3f\xd7\xe6\x5f\x80\xde\xe7\x20\xb6\xd8\x7d\xcf\xf3\xe3\xdf\x04\xc8\x02\xd2\xe9\x14\xa8\x7a\x36\x29\xc9\x0b\xb6\x9e\x0a\x6f\x8b\xbb\x5e\xe5\x05\xf1\x43\xc9\x97\x73\x75\xad\xb0\x65\xc3\xe3\xd3\x91\xf9\x05\xfa\x3c\x33\x6c\x9d\xa4\x1e\x4a\x23\x20\xbc\xf4\x60\x97\x6f\xc7\xeb\x1f\xb6\xc6\xa3\xc3\x95\xdb\xd1\xd2\x8a\x1b\x09\xcd\xb9\xae\x9f\x9a\xae\xe4\xd9\xc5\x66\xa2\xac\x40\xad\xd8\x70\x47\x9f\xaf\x54\xad\x1b\x76\x97\x71\x0b\x4e\xb6\xf7\x32\x02\x44\xb5\x97\x57\xd1\xea\xc3\xd9\x22\xb7\xa7\x30\xb1\xac\xf0\xde\x9a\x45\xd4\xac\x87\x9d\x21\xfc\x61\x6e\xf3\x96\x5d\x74\x34\x5e\xd7\x07\x79\xeb\x68\x32\x80\xce\xe2\x5b\xf3\x73\x9b\xeb\x6b\x4c\xdf\xa2\x5d\x20\x2d\xa1\x3a\x4a\x67\x30\x40\xd9\x70\x48\x65\x8b\x92\x05\x47\x95\x05\xd0\xbe\xe4\x88\x0a\x73\x99\x7c\x70\x82\x5a\x6e\xc5\xfd\x9f\x95\x2e\x65\xfa\x02\x22\x54\x45\xfc\x3b\xdf\x4a\xde\xa3\xd4\xd2\x25\x51\xcb\xac\xeb\x38\x74\x79\x8d\x6a\x33\xa6\x66\x3f\xe3\x75\x70\x81\xd6\x24\x3d\xfd\x7c\xd2\xee\xbf\x60\xa3\x89\x9f\xa1\xf8\xf6\xc9\x56\xa3\xb1\x83\xf8\x9b\x9e\x7d\x2c\xa3\x64\x48\x58\x4d\x53\xaa\x8b\x44\xe6\x5a\xd3\xe5\x27\xf7\x87\x23\xfa\x6f\x59\x22\x42\x98\xdf\x31\xd5\xe8\xad\xa5\x67\xc8\xd1\xb1\x1f\x3b\x13\x14\x75\x53\x31\xc1\x73\x2d\xc5\x4a\x12\xa4\x35\x6e\xdd\xa4\x7e\x3c\x13\x0b\x32\x52\x82\xa3\x54\xbf\xe1\x5c\x30\x00\xd2\x07\x82\x29\x31\x79\x41\x87\xe0\x97\x3a\xb8\xef\x87\xbf\x89\xc3\x54\xa0\x35\xa8\x1f\x45\x91\x12\x23\x56\x3b\xfd\x99\xf9\x0a\x75\xe5\x3d\x01\x0d\x89\x29\xf4\xf8\x5a\x5a\x5a\x4f\x9f\xcc\x1c\x78\xf0\xa2\xfc\x46\x6f\x5f\x1c\x65\x22\xcf\x62\xa7\xbe\x37\x88\x07\x96\xe9\xb3\xca\x09\x11\xec\xca\x3f\x22\xc3\xb2\x4d\x5d\x9d\xaa\x68\x88\xf8\x9a\x8f\x71\xa1\x58\x59\x35\x9c\xea\x46\x8e\xf2\x38\xec\xf6\x46\x19\x27\x83\xa2\x57\xad\xda\xde\x90\x47\xe1\x3e\xdd\x8b\xcc\x1f\xd4\x17\x7c\xb2\x0f\x88\xd1\x19\x98\xd9\xc7\x26\x2d\x64\x8c\x2b\xf6\x6f\xb2\x27\xb9\xb3\xa9\xed\x46\x96\x2d\x22\x57\xa4\x20\xf6\x4b\xea\xd9\xe2\x86\x57\xb5\x21\xdb\x2e\x22\x16\x52\x87\x79\x1f\x3a\x1b\xec\x4c\x78\x22\xa6\xca\xbd\xe5\xec\x77\x01\x88\xcb\x74\x49\x8a\x4f\x08\xe5\xa3\xa7\x63\x9d\x24\x0a\xe3\xf4\xfd\x03\x53\xc0\xdd\xa8\xae\x41\x0b\x9f\xa7\xf4\x3f\xee\xd1\x3e\x9f\x13\xe6\xc9\x41\x0a\x1d\x24\xcd\xfc\x2c\x8e\x64\xa1\x5a\x12\xf7\x55\x45\xb0\xa5\x75\x71\x35\x23\xd4\xdf\xa1\xa4\x74\x27\xa8\x85\x1b\xa9\xac\xcc\xad\x78\xb4\xef\x6a\x18\x5f\x5c\x3b\x00\x11\x90\xdd\x8f\x37\x08\x8a\x00\x0a\xcc\xf4\x48\xbe\x8d\x49\x37\x1d\x9d\xa2\xe1\xcb\x5f\xfe\x07\xd4\x1a\x5c\x22\xe9\x46\x60\xac\x37\x13\x5a\xc8\x58\xcb\x17\x69\xcb\x66\xe8\x26\x9f\xd5\x33\x58\xec\xac\xf5\xdd\x92\xc7\xeb\x61\x86\xb4\xd4\xd6\x13\x0a\x73\x2d\xc1\x0b\xbb\x2b\xe3\x2f\x9b\x1d\x69\x51\x01\x4a\x63\x5c\x12\xd2\x2f\x0d\xc5\xbd\x5c\x2a\x3f\x96\xae\xc6\x2e\x77\x77\x94\x7e\xaa\x02\x28\x12\xca\xce\xd3\x3a\x5b\xef\x9f\xf8\x83\x5f\x88\x03\x67\xa3\x7b\x0b\x76\xd2\xdd\xe3\x96\xc6\x14\xe1\xa4\x72\x1e\x00\x0c\x00\xf1\x61\x93\x5b\x14\xa7\x38\xa1\xb7\x0f\x6e\xa5\x42\x55\xb7\x95\x18\x69\x64\x62\x12"}, +{{0x33,0xd4,0x77,0x60,0x2f,0x29,0x63,0x05,0xa6,0x71,0x9e,0xa6,0x94,0xc0,0x44,0xe9,0x0d,0x23,0x3c,0x2d,0xea,0x85,0xc4,0x6a,0xbe,0x19,0x20,0xe8,0x8c,0x31,0x78,0x49,},{0xff,0x6f,0xee,0xa0,0x28,0xec,0x34,0x6d,0xd4,0x91,0x07,0xbb,0x71,0x3f,0xdd,0xbb,0x28,0x2e,0xbc,0xd0,0x34,0xe2,0xea,0xfc,0x7c,0xdb,0x1c,0x5a,0xdf,0x92,0x63,0x90,},{0xca,0xa2,0x87,0x98,0x95,0xd4,0xf6,0x20,0xb9,0xeb,0x5f,0xed,0x22,0xb4,0x56,0x2e,0xeb,0x1a,0xd6,0x38,0x22,0x96,0x8f,0x76,0xad,0x91,0x07,0x6b,0x16,0x6c,0x05,0xee,0x20,0x86,0x4d,0x98,0xbb,0xbc,0x6e,0x79,0xdd,0x03,0x62,0xca,0xcf,0x7a,0x21,0xb4,0xcf,0xc2,0x30,0xd6,0x35,0x5d,0x43,0x12,0x0c,0xff,0xfb,0x94,0x8b,0x8f,0x6c,0x0e,},"\xcf\xea\x07\xa7\x79\xf1\x53\x7e\x49\x81\x23\xc6\x76\x29\x05\x73\xef\xcc\x5d\xb7\x02\x45\xd9\x3d\xea\x5c\x05\x72\x6f\x87\x13\xd0\x02\xae\x66\xc1\xc9\x69\x07\x47\xca\x92\x30\xb1\x62\x9d\x36\x62\xab\x73\xd6\x6b\x94\x98\x79\x16\x4b\x21\xa3\x5f\x40\xcf\x37\x99\x04\x19\x08\xed\x6f\x92\x29\xec\xb3\x90\xc5\xf2\x22\x34\xe1\xc5\xf2\x6b\x3a\xb5\xba\x59\xe7\x8c\x64\x96\x98\x71\xb4\x28\xb7\x85\x16\x77\x75\x55\xaf\x4e\x89\xc6\xfb\xc1\x93\xa9\x46\x95\x22\x6c\x6d\x32\x99\x91\xa1\x1b\xd5\x80\xd1\x89\x56\x08\x9b\x58\xa0\xe4\x2c\xa3\x5f\x6c\x6d\x26\x09\xad\xe0\xd0\xb6\x19\xd4\x89\x25\xc6\x8c\xd9\xd2\x25\x0d\xff\x27\xcf\x2f\x0d\x44\x44\x87\x09\xb6\x79\xf3\x5b\xbd\xce\x0f\x49\x6b\x0a\x16\xca\x67\xea\xce\xec\x25\x8b\x1a\xec\x91\x77\x5a\x3a\x2e\xe8\x01\xb1\xc9\xa2\x26\xa6\xb0\x01\x92\x6a\x05\x7a\x06\x30\x67\x27\xee\xda\xe8\xc5\x77\x53\x1d\xf0\x4a\xc0\x9b\x5b\x49\xbc\xde\xab\xde\xb8\xac\x4e\x8e\x82\xcf\x1e\x7a\xf8\x35\xfc\x61\x1c\xa7\xa6\x84\xb8\x35\x26\x04\x24\x15\xb1\xd6\x65\x2e\x86\x34\x31\x1e\x19\x46\x27\xea\xe7\x8d\x01\x1e\x6f\x40\xf6\x45\x79\x4e\x36\x89\x5a\x23\xe1\xbd\x84\x88\x3a\x39\x3e\xcf\xe5\xa2\x48\x02\x6a\xea\x86\x44\x70\x59\xf7\xa4\x29\x36\x8f\x21\xc8\x9e\x01\x45\x20\x79\x78\xb9\x13\xc8\x0a\x22\xd7\xca\xf2\x67\x3f\x7c\x76\xf6\xc2\x6c\xf8\x84\x41\x2e\x17\xd0\xc2\x55\x43\x0f\x50\x2b\xce\x74\xe3\xa3\x10\xd1\x7f\x6f\x4d\x48\x5d\xa2\x80\xed\x5b\x5e\xea\x6c\x49\xba\x74\x8d\x76\x48\x14\xb9\xe3\xda\xf6\xfc\xc2\x18\xc2\x74\x0c\xa7\x70\x18\xf7\x13\x44\x51\x9d\xa8\x2a\xda\x31\xe0\x01\x92\x4f\xc7\x76\x79\xe3\xe9\xff\x9f\xab\x67\xdd\x09\xa6\x19\x24\xc8\x21\xa1\xfd\x99\x9f\x74\xdf\xa3\xf8\x19\xad\xb3\x1d\x15\xe5\xed\x8a\xaa\x52\xc1\xbd\x7c\xca\x26\x67\x11\xa7\x4d\xd6\x21\x04\xef\x3c\x2b\xf7\x37\xfc\xe6\x94\x2b\x34\x8a\x33\xc3\xdf\xd6\xd9\x2a\x72\x4b\x6d\x58\x78\x42\x1a\xeb\x23\x0a\x53\x3f\xe2\x1c\x8b\x2f\xd3\xda\x59\x6a\x61\x80\xa4\x5c\x98\x6d\x7e\xce\x4c\xdc\x8a\xd6\x81\xea\xd6\x90\x64\xbb\xdd\xfc\x20\xf3\xc5\x21\x25\xf8\x33\x95\xbe\xd1\x55\x7f\x67\x18\x2b\x9f\xe9\x91\x38\xaf\x3c\x35\x6c\x5e\x65\x29\x78\xdd\x23\x8b\x76\x1c\x74\x2f\x81\x58\xe2\x31\x4b\x96\x42\x08\x33\x09\x78\xb0\x62\x0a\x13\xa1\x6d\x76\x1d\x52\xf0\x6e\x46\x6a\x40\x94\xb6\x5c\xd6\xf2\x68\x54\xae\xd6\xf9\xa8\xc2\xa8\x84\xa0\xd0\xbf\x4e\xe5\x87\xee\xb8\xb6\x02\x48\x72\x39\xa7\xe5\x81\x72\xc8\x09\x98\x3a\x8d\xb1\xc1\xfc\x7c\xe8\xc4\x8b\xc8\xa6\xfb\x81\x2d\x6a\xa9\xe8\x3a\x3a\xb4\xdd\xf7\xa8\xd4\x0d\x3f\xe0\x0e\xa1\x6e\x04\x06\x2b\x8a\xce\xb9\xc9\x9e\xef\xa4\x1f\x4f\x87\x44\x78\x28\x12\x6d\x0d\x9c\x9f\x86\x05\xe8\x46\x7c\x5e\x4d\x67\x1d\x5c\x6d\x9f\xa7\x0d\x74\x70\x98\xd9\x41\x21\x12\x23\xb9\xbc\xf2\x61\x93\x8d\x67\x04\xa3\x2d\x22\xc6\x1e\x30\xf3\x57\x0a\x1f\x5d\x09\x98\xb4\x79\x10\x80\x88\x2a\xa5\x62\x31\x67\xb6\x3a\x23\xf3\x40\xf0\xe7\xc6\xf9\xa8\x30\xa7\x5b\x74\x63\x1f\xa5\xb5\x7a\xfd\xb1\xe6\xbc\x22\x69\x9b\xb0\x31\x56\x67\x5d\x59\x83\x53\xa5\xd1\xb5\x58\x97\xe4\xc1\x10\x61\xdd\x14\x5f\x23\xe8\x53\x7c\x63\x2f\x75\xc1\x0d\xf0\x5b\x25\x54\x72\x38\x57\x40\x17\xfe\x7b\x64\xb8\xe9\x98\x69\x15\x7f\xee\x35\xf7\xad\x7e\x63\xe9\x95\x93\x30\x29\x29\x50\x3a\x96\x76\x80\x23\xb4\x12\x5a\xd7\x49\xdf\xf4\xb9\x92\xee\x5c\x2b\x4f\x3a\xda\x48\x89\xe4\xae\x62\xec\x15\xd2\xdb\x59\x69\xd7\x30\xdb\x30\x75\x47\xf6\x38\xc3\x18\x50\x32\xb1\x2f\x75\xfb\xb3\x17\xe4\x7d\xf7\xb9\x29\x2a\xe9\xe7\x6a\x2c\x0a\x06\xfc\xad\x10\x8c\xdd\x23\x5f\x6e\x38\xd9\x67\xb6\x37\x95\x11\xff\x69\x65\xc2\x2f\x2c\x66\x80\xa1\x2b\x03\x04\xeb\x2b\x29\x6c\x99\xa7\x6c\x27\x29\xd9\x8e\x0a\x78\x24\xb6\x7f\x3f\xe8\x42\xd6\xf6\xab\x27\x3e\x89\x48\x45\xb3\x2d\xc6\xdd\xfc\x7a\x22\x0f\x76\xbd\x96\x5c\x69\x85\x81\x83\xc8\xf3\x57\x39\x5f\xc5\x7d\xc8\x29\xde\xfa\xac\xb5\x60\x3a\x75\x78\x68\xd5\xe5\x62\xf9\x78\x1e\xe3\x9e\x0e\x94\x68\x8a\xd3\x54\x5b\x32\xdd\x73\x66\xb6\xb0\x47\xe8\xd1\xd3\xd5\x65\x99\x7b\x23\x6e\x7f\x75\x96\xc5\xf8\xd7\xc1\xc1\x1b\xcf\x4a\x24\x46\x20\xcb\xd2\x1d\x55\x9a\x7c\x9b\x3f"}, +{{0x70,0x74,0x56,0x86,0x11,0xa6,0x6d,0xfc,0xa8,0x30,0x7c,0xae,0x60,0x8b,0xb2,0x69,0x95,0x84,0x4d,0xf4,0x35,0xe5,0x30,0x0e,0x5b,0x4d,0x72,0x91,0xcc,0x22,0x90,0x7f,},{0xdd,0xab,0xdd,0xd1,0x5e,0xaf,0x83,0x11,0x5d,0xdd,0x06,0x5d,0x7e,0x22,0x0b,0x1e,0xfc,0x26,0x2a,0x61,0xc5,0x2e,0x91,0x43,0x47,0x44,0x2b,0xde,0x6d,0x00,0x25,0x06,},{0x7f,0x65,0x31,0x34,0xc0,0xb9,0x0f,0x44,0xa4,0x89,0xf0,0xb0,0x5f,0xc4,0x07,0x07,0xad,0x9f,0x13,0x98,0xf3,0x40,0xb4,0x47,0xa3,0xc9,0x86,0x1f,0x51,0x1c,0x9f,0x15,0x68,0x80,0x3b,0x76,0x84,0xa0,0x4a,0x89,0x8c,0x45,0x15,0x4d,0xd4,0x86,0xbd,0x50,0x75,0x89,0x98,0xe1,0x26,0x43,0x93,0x78,0xb3,0xf5,0x9f,0xf3,0x67,0x49,0x2a,0x0a,},"\x6c\x13\x74\x23\xea\xc7\x90\xb8\xe8\xe4\x18\xb2\x90\xe0\x57\x9c\x7b\x86\xb1\x4a\xed\x81\x8d\xe8\xce\x53\xce\xa3\xf3\x40\xa1\xa9\x53\x91\xf9\x84\x96\x8f\x2b\x42\x29\x28\x2a\x81\x61\xc0\x9a\xb1\x49\xcd\xac\xd6\x69\x70\xb4\x01\x3f\x52\xe5\xe6\x8e\xa8\xc9\xdb\x68\x5b\x2c\x53\x07\x35\x00\xe5\xb3\x5e\x29\xea\x0b\xa1\xf4\xd1\x59\xa5\x58\xd3\x61\xb0\x65\x16\x83\x6c\xf7\xb9\xea\x50\x1f\xa0\x50\x6b\x98\x5f\x03\x6a\x82\xd9\xe0\x84\x48\x9d\x3b\xfe\xd3\x40\x93\xe2\xd6\xd9\xed\xf5\x57\x85\xed\x35\xa9\x0c\xe5\x6c\x76\x16\x86\xcc\x3e\xa1\xa2\xc7\x6a\xda\x5e\xc8\xc1\x45\xd8\x18\xb0\x47\xcc\x51\x6e\xec\x5d\x2d\x6a\x93\xa5\x55\x92\xd8\x92\xe3\xd5\xcd\x10\xc2\x50\xc0\x4b\x04\x9b\x38\xfc\x7e\xc0\xf3\x9a\xba\x15\x82\x40\x07\x33\x6c\x2b\x0f\x7f\x81\xd6\x4d\x5c\xa3\xe2\x9d\x6f\xda\x4c\x23\xd9\xba\x65\xd9\xfe\x3c\xb4\xe0\x39\x13\x69\x72\x87\xb4\x6a\x0b\x1f\xcc\xd2\x62\x4e\x39\x7a\xe9\x5c\x52\x54\xbc\xd8\x8d\x2c\x7c\x8f\x70\xfd\xc8\x17\x3f\x64\xc1\xde\x32\x28\x1a\xb4\x18\x46\x93\xb4\x8a\x34\x9e\x67\x82\xbc\x89\x92\xb4\x3c\x7d\xe7\xcb\x9d\x33\x92\x9b\xf9\x53\x06\xc2\xaf\x7e\x93\x8d\x84\x86\xb3\x86\xf9\xfd\x3f\x0f\x71\x61\xe0\xe6\x86\x2d\x4f\x92\x81\x44\x68\x65\xa1\xc9\xbe\x24\x60\xef\xbc\x20\x15\x1b\x06\xe7\x9d\x01\x46\x17\xd0\x30\x0e\x67\x1d\x48\x76\x74\x58\x59\x66\x25\xb7\x6d\xff\xc5\x58\xaa\x9b\x40\x61\x21\x96\xec\x82\x7e\x1c\x6f\xff\x51\x8f\xb7\xad\x4b\xf8\xc4\x6f\xcb\x27\x88\x85\xaa\x49\x1b\x77\xa2\x89\x95\xcf\xb9\xd7\x96\x40\xaa\xd1\x74\xc6\xdf\x43\x93\x8e\x3f\x13\x85\x20\x5c\x54\x59\x5b\x33\xde\xde\x50\x14\x37\x46\xa1\x70\x5e\x7e\x0b\x69\xaf\x4a\x26\xc3\xb7\x65\x15\x05\x18\x92\xb1\x5c\xa6\xe4\x8c\x3d\x91\xfb\xc7\x5e\x8f\xe4\xa0\xfe\x8e\xd2\xc2\x6c\x10\x73\xbe\xb7\x0e\xa3\x8d\x09\x27\x02\x92\x78\x40\x67\x55\xae\x6e\x11\xda\x37\x86\x53\x64\x95\x15\xe0\x08\x5b\x5e\xa7\xdb\x32\x49\x20\x8e\x33\xa6\xc8\xb6\xae\x8c\xd8\x0c\x9b\xd6\xb9\x83\xe7\x3e\x9b\x91\xdb\xec\x09\x1f\xae\x99\x5f\x80\x32\x42\x7e\xde\xc0\x2c\xad\x90\x55\xeb\x8b\x7d\xbc\xfa\x80\xd4\xf6\x4f\x57\x27\xa1\x52\xf1\x1c\x47\xe5\x2d\x75\x3a\x57\xb6\xe5\xfd\xdf\x77\x4c\xea\x4d\xa9\x10\x02\x68\x19\xc4\x1e\x32\xb4\xf1\x99\x72\x7e\x23\xc5\x4a\xb5\xd7\x01\x42\xb8\x54\xa2\x7b\x04\xe6\x4c\xf4\x4a\xf2\xa8\x99\x5e\x12\x00\xbd\x11\x7c\x7a\x16\x74\xed\xef\x59\xbc\x53\xf7\x3a\xda\xf6\x38\xe0\x77\x3b\x85\xb5\x63\x34\xaf\xf6\xe1\x17\x43\xe3\xa3\xd3\x61\x4a\xa8\xa3\x75\xb3\x78\x1e\xc8\x14\xcc\x08\xe7\x1e\xfa\x78\x18\x51\x9c\xb2\x4a\xf8\x2c\x33\x1d\xfd\x6a\xc7\x8e\xc1\x7f\xd7\x17\x4b\x61\x02\x1e\x8c\xf9\x01\xa2\xaa\xa6\xad\xbc\x90\x2a\x91\x6b\x2a\x2f\x4f\x79\xe5\x51\x50\x1f\xbf\x01\xdf\x6b\x85\x18\x50\x4c\x1e\x94\x64\x69\x38\xbe\xd1\xa8\x50\x9c\x2a\x38\xfb\x6a\x79\x8a\x78\x58\xf4\x09\xb0\xf2\xfb\x9b\x3f\x48\x17\xe5\x68\xc5\x2d\x9a\xbf\xe2\x16\x8c\xc3\x65\x0f\xc4\x3e\x0f\x99\x75\xfe\x29\xe3\x3a\xed\x1a\x7b\xf3\x0d\x86\x31\x15\x07\x90\x65\x0a\x3c\xb7\x8c\x36\x8f\x1a\xea\x9a\xc6\x0c\x5e\xeb\x96\x9a\x45\xf8\x4a\xa3\x73\x66\xa8\x39\x77\x19\x0f\x41\xae\x42\x1e\x0c\x46\xfd\xa3\xfa\x01\xb9\x26\xfc\xef\x82\x24\xfd\xa3\x6d\xf4\xf8\xa8\x77\x01\xfe\x79\xfe\x06\x28\xef\x0c\xc0\x2d\xf2\xbd\x78\x32\x07\xc7\xdb\x87\x11\x9a\x03\x69\xfe\x16\xee\xb3\x8f\xdc\x9f\xb3\x5d\x9e\x19\x5f\xe1\x4f\x8c\x10\x38\x20\x8a\xb9\x77\x00\xaf\x79\xf2\xe2\xe0\x54\x96\x83\x02\x07\xc7\xda\x8d\xbe\x8e\x9b\xb7\x3b\xc4\x71\xa4\x3f\x1b\xe6\x50\xfa\x92\x81\x9a\xeb\x5d\xc7\xee\xd7\xee\xd8\x17\x12\x70\xd2\x19\x25\x7d\x19\x61\x0b\x89\xd2\xd6\x2d\x3f\x5b\x64\x8e\x13\x9e\xed\xf1\xff\x74\xbe\x01\xa5\xef\x1d\x95\xf8\x12\x92\x26\x01\xee\x92\x51\x51\x57\xc4\xec\xad\xfa\x3e\xef\x9f\x2a\x67\x7c\x00\x3c\xa4\xab\x9b\x2c\x45\x47\x2c\xe5\x5e\x18\xf4\x0a\x21\xfe\x1b\x0d\x45\xb5\x0b\x50\xc5\x2a\x0b\x1a\x5d\x7c\x37\xd8\xeb\xc1\x5e\x02\x05\x84\xd9\xed\xd7\xb5\x65\x05\xf8\x20\x78\xe0\xf8\x99\x38\x91\x35\x01\x4c\x86\xd1\xe2\xed\x49\xf9\xcd\x31\x90\x76\x94\x35\x53\xa3\x12\xae\x05\xab\x33\x35\x26\xe1\x36\x71\x4f\x09\xa4\x02\xb3\xc8"}, +{{0x7d,0x7c,0xa8,0xe8,0xd3,0xb8,0x43,0x44,0xa5,0xe4,0xde,0xa0,0x8b,0x33,0x8d,0x8f,0xaa,0x5f,0xfc,0x11,0x9c,0xe5,0x66,0xef,0x65,0x6f,0x0f,0x45,0x84,0x77,0x5b,0x21,},{0x0b,0xde,0x34,0xb7,0x46,0xd2,0xc5,0x49,0x08,0x53,0x06,0x4d,0x48,0xc6,0xb4,0xc1,0xcb,0xbc,0x3e,0xe7,0xbe,0xff,0x5e,0x8f,0x68,0x4c,0x12,0x0f,0x31,0x5d,0x7e,0x4e,},{0xd0,0xc3,0xe2,0x48,0xa8,0xcb,0x2d,0xdc,0x7e,0x9f,0x21,0xc9,0xc5,0xb0,0x09,0xf7,0x0e,0xa2,0x9d,0xa6,0x89,0x7c,0xd9,0x2c,0x26,0x0f,0x04,0x7e,0xd6,0x8a,0xa1,0xc8,0xb9,0x65,0x7f,0x9d,0x82,0x6e,0x88,0xf4,0xa5,0x12,0xc5,0x00,0x3b,0xe6,0x40,0x68,0x80,0x74,0x12,0x63,0xae,0x7c,0xe6,0x86,0x0e,0xfe,0x73,0xad,0x54,0xd4,0x82,0x04,},"\x0b\x72\x70\x75\x34\x5d\x61\x9f\x5c\xdc\x7f\xc4\xc4\x3c\xdc\x19\x10\x58\x11\xd9\x5d\x06\x9f\x81\xc0\xa6\x2f\xe1\xe1\x17\x8c\xf1\xc3\x5d\xb0\x5e\x2d\xe8\x7d\x11\xae\x1a\x6f\x53\xef\x38\xb3\x9b\xf4\xed\x8f\xbf\x56\xef\x01\x7a\x1d\x3c\x15\xb6\x4f\xe4\xb2\x61\x0b\xf6\x9b\xd1\x9a\xc7\xaf\xd4\x6a\x2b\x87\xb4\x88\xb6\xc7\x8a\xd4\x56\x81\x1c\x1d\xd6\xbd\x4a\x6b\x5d\xa6\x98\x73\x9f\xd1\xa1\x4c\xeb\x9f\x27\xf1\x24\xb6\x9f\x6b\xd1\x6d\xe5\x53\x7a\xad\x80\x68\x1c\x56\x33\x58\x03\x94\xda\x3b\x84\xe9\xb7\xa5\x5e\xba\xb8\x52\x2d\x2d\x6b\xf1\xaa\x4e\x7b\x15\x9c\xbf\x4e\x20\xb5\x0b\xfe\x9c\x71\x1a\xa0\x47\x11\x9f\x1d\xad\x87\x49\x26\x0b\x87\x63\x9e\x9c\x14\x1d\xef\x62\x02\x6a\x99\x03\x73\xdc\xfd\x99\xf7\x7b\x0f\x5e\xa6\xad\xfd\x8f\x59\x4b\x9c\xe4\x10\x64\xa5\xed\x30\x7b\xf2\xd8\xd1\x73\x70\x49\x8a\xd7\xf4\x5f\x9c\x4d\xd2\x6c\x42\x0f\x45\x0f\x53\x62\x3b\xb6\xd7\xf3\xf4\x6a\x14\x9d\x8f\x13\x5b\xc2\x91\x33\x10\xfb\x8f\x90\x43\xd0\x99\x27\x8b\xbe\xba\x39\x17\x9f\xa3\x67\xb0\x16\x73\xe1\xc9\x53\xef\xfd\x2c\xae\xa7\x31\x1c\x47\xc0\x37\x27\x44\x09\x5b\x1c\x8f\x90\xee\xf5\xf1\x92\x9d\xb1\x99\x6c\xd5\x84\xf6\x15\xd5\x6f\xae\x3a\xec\xac\x3e\xe8\x8b\xd0\xb2\x96\xf4\x49\xcc\x27\x13\xc5\x2d\xa6\x95\x24\x8f\xaa\x8e\x38\x9b\x05\xa0\xbc\xac\x69\xdc\xe9\x71\x97\x23\x19\x4f\x43\x3b\x02\x97\xeb\x08\x59\x01\x9f\x14\x1a\x20\x7c\xe8\xcc\xb5\x98\x82\xca\xa6\xe1\x8f\x0b\x43\xbd\xdd\xb9\x0a\x0a\x85\xff\xd5\x77\xd6\x39\x4a\x1d\x80\x48\x94\x10\xf9\x2a\xfb\x85\xba\x50\x6a\xa9\xf3\xf4\x27\x44\x5d\x21\x22\x4b\x9c\xb0\x46\xc0\x5f\x1b\xac\xd7\xb7\x49\xfb\x7b\x10\x24\xd0\x92\xe4\xee\x4b\x30\xa4\x6e\xdf\x71\x84\x70\xc9\x94\x91\xc6\x8f\x48\x79\xd6\x2b\xfc\xe7\x04\x6d\x81\x38\xcb\xb9\xe7\x21\x29\x99\xa4\x49\x8b\x45\x5f\xc9\x0a\xc2\x83\xe9\x35\xde\x04\xdf\x6f\xc9\x99\xe4\x43\x4b\xe1\x10\x63\xd6\xe4\xee\x9e\x09\x6a\x87\xbc\x71\x6d\x2c\x81\x99\x16\xc3\x7a\x4e\x62\x98\xc4\x99\x45\x36\x6e\xc3\xf5\x00\x72\x0b\x06\xdc\x99\xd3\xd8\xac\x30\x3e\x6c\x26\x4e\x28\xa7\xc2\xd4\x19\xec\x62\x2a\x97\xa7\x11\x54\x4f\xb1\xf4\x73\x5b\x11\xf8\xbb\x1d\x7e\x2c\x81\x6a\x15\x62\x87\xb4\xcc\x0c\x65\xaa\xa2\x80\xb8\x37\x73\x7f\x0a\x84\xe3\x6d\xe2\xdf\x2f\xc3\xa5\x0d\xf9\x80\x91\x8f\xb9\xe5\x83\x4b\x42\xac\x0e\x0c\x72\x78\xd7\xfe\x8d\xb4\xdb\xde\xca\x01\x41\xd5\xfe\xf5\xdc\x61\x51\xf8\x7b\x86\x34\xc2\x41\xa8\xfa\x0a\x82\x71\x78\x99\x77\x3a\xe8\x9f\x53\x78\x90\xb9\x15\x5a\x7a\x05\xbc\xe4\x78\x66\xec\x20\x28\xa4\x78\x98\xd4\x85\x82\x3a\x2e\x99\x23\x19\x68\x0e\xb6\x99\xb0\xdd\x53\x58\xf5\x46\xfc\x53\x7c\x73\xd3\xa4\xb2\x23\xa0\x94\x15\x18\xb6\xd1\xe6\x6b\x27\x67\x6c\x1b\x1f\xc7\x6a\x08\x32\x05\x24\xa7\x2e\x29\x7f\xce\x17\xaa\x80\xd8\xea\x7b\x38\x8a\x55\x16\x8e\x7d\xad\xb8\x36\xe9\xde\xe7\x07\xed\x25\xc0\xee\x4d\xb2\x5b\xee\x3c\x48\x5b\x39\x64\x92\x04\xef\xaf\x28\x20\xb2\x73\x63\x68\xfc\x77\x3c\xe0\x90\xc3\x85\x37\x80\x02\xc4\x71\xb0\x94\x79\x5c\xb2\x66\xd3\x9e\xb7\x58\x0d\x70\x1b\xe4\xc8\x91\x6f\x6b\x38\xbf\xe2\x5f\xdf\x36\xd6\xc4\xad\xaf\xa9\xae\x98\x64\xc5\x7b\xb7\x37\xb4\x95\x06\xed\x38\xd6\x2d\xe6\x0c\xc0\x59\x9e\xc6\xbb\x1a\xcf\x24\xb1\xd3\x7d\x60\xef\xde\xb7\xd9\x42\xc5\x36\x03\xa2\xf0\x47\x6e\x95\x12\xc9\x38\xb2\x8d\x49\x5a\x6f\x26\xa9\x07\xc3\x96\xb8\x41\xae\xdd\x8e\x14\xac\x44\x7b\x49\x5d\xf1\xf6\x76\xda\xcc\xd5\xa7\x40\xc0\x42\xf5\x77\x2b\x7d\xb1\x7f\x4f\x1a\x3a\x1c\x8e\x7c\x48\x83\x70\xe7\x36\xb5\x1e\x69\x0f\xd2\xdd\xcb\x5a\xa6\x19\x57\xa7\xc7\x97\x5a\xcb\x2d\xcb\x91\x5d\x07\x4d\x74\x42\x79\xea\x1c\x41\x69\xf8\x68\x87\x3a\xc5\xc2\x08\x90\x16\x2c\x1d\xf9\x65\x64\x19\x97\x5a\x43\xd3\x19\x8e\x18\xc3\x09\xa1\xeb\x7c\x1d\x87\x87\x3f\xb1\x5c\x6d\xa4\x7f\x54\x8a\x01\xf6\x9b\xda\xb9\xc3\x9e\xf0\x0d\x41\x8a\x6f\x61\x9d\xd7\x3d\x7d\xb4\x5c\xbb\x6a\xd2\x25\xa2\xde\x78\x7b\xa7\x77\xbc\x73\xd2\x8f\xc3\x04\xf1\x00\x09\xf4\x02\x2c\x2c\xf8\x4d\xe0\x08\xd7\x0f\xcd\xc8\xba\x7f\x10\x7c\x36\x98\x59\xe9\xc9\x0c\xa8\xa3\x93\xb5\x53\xf2\x66\x05\xff\xd7\x23\x0c\x92\x14\x90\x70\x0f"}, +{{0xd2,0x1f,0xdd,0x7b,0x10,0xe5,0x4a,0x8b,0x6b,0xe9,0x5a,0x02,0x24,0xad,0x70,0x66,0x4d,0xd9,0x21,0x12,0xe2,0x68,0x3a,0x4f,0xd2,0x79,0xc4,0x07,0xdb,0x38,0x71,0xbb,},{0xf8,0x9c,0x27,0x2e,0x7d,0x1c,0xc9,0x3d,0x69,0xf6,0x94,0xde,0xc9,0xcc,0xe0,0x5a,0xc2,0x47,0x73,0x45,0x04,0x82,0x9c,0x56,0x99,0x74,0x13,0xc8,0x95,0x8b,0x93,0x30,},{0x6d,0x69,0xe8,0x3b,0x3e,0x7e,0xd5,0x5a,0x85,0xf9,0xfc,0x9d,0x25,0x19,0xda,0x0b,0x0a,0x1e,0xb4,0xda,0xae,0xe9,0x91,0xa6,0x65,0x1f,0x5c,0x89,0x19,0x0c,0x0d,0xe7,0x23,0x73,0xcd,0x98,0x9d,0x46,0xbe,0x13,0x67,0xf9,0xda,0xf1,0xb9,0x2f,0xed,0x3b,0x52,0xbb,0xa5,0x4a,0x1e,0x4c,0xca,0x5b,0xc8,0x72,0x6e,0xd0,0x7f,0x30,0x25,0x01,},"\xb8\x64\x4a\xdb\xef\x9c\x7c\xab\x91\x20\xac\xed\xc8\xe7\x5c\x43\x3d\x03\x6f\xfa\xe0\xf9\x55\xbe\x6a\x48\x8f\x1f\x42\x7a\x68\xa8\x90\x2d\x02\x6e\x63\xdd\x6c\x9b\xf9\xd9\x7d\xe7\x86\xb3\x1d\xd4\xf4\xc9\xa4\xf8\xa6\x22\xf1\xff\xc8\x4d\xa6\x96\x7c\xa7\x74\x33\xc3\x98\xf4\xd3\xf1\xc4\x43\x49\x89\xb7\xac\x9d\x0f\x3b\x1b\xe0\xc8\xb3\x52\x82\x4f\x4e\x7a\x08\x3f\x34\x2e\xc1\xbe\x1d\xa8\xfb\x75\x52\x42\xa6\x54\x88\x0e\xf2\x98\xf0\x59\x79\xff\x02\x6d\xdc\xc0\x44\x86\x0e\x67\x57\xa2\x9c\xfa\xa2\x22\xa3\x59\x7e\x38\xf1\x77\x99\x62\xa4\x1a\x4c\x8c\xe6\xa6\x5b\x87\x81\x99\xb4\xd8\x0f\x4a\x03\x90\xca\xc1\x9c\x22\x6e\xea\x4b\x60\x36\xe5\x7a\xd8\x30\xec\xfc\x00\x69\x3e\x26\x13\xd3\xed\xf4\x65\xfc\x8c\x4f\xa2\x93\xfd\x8c\xfc\x36\xdc\x8e\x37\xbc\xeb\xab\xec\x03\x49\xeb\xd8\x84\xe1\xb2\x8b\xce\x82\x4e\x0d\x55\xb6\xd0\x15\x38\x38\x01\x66\x8b\x34\xf5\xba\x72\x3d\x2a\xc0\xa2\x64\xfa\xb2\xc7\x28\x60\x8f\x16\x2d\xe0\x11\x79\x25\x9b\xe2\xcc\xb0\x81\x50\x02\xfd\xed\x8e\x0d\x78\xb0\x28\x07\x31\x3e\x91\x0e\xb3\xa7\x33\x7c\x53\x4e\x84\x6f\x9e\xe1\x55\x42\x6e\x4a\xef\x64\x36\x61\xb0\xed\xb4\x45\x96\xfd\xdc\xd0\xb3\xe8\x14\xc1\x37\x81\x7a\x42\x2b\xaa\x40\xc9\x05\x3d\x03\x86\xc6\xec\xdb\x58\x90\x52\x59\x47\x42\x67\x7c\x48\xdc\xfc\x8c\xd4\xa9\x36\x67\xed\x4d\x87\x64\x60\x01\xed\xa0\x79\xe8\xb9\x9d\x52\xba\x21\xc5\xec\x56\x69\xfe\xdf\x6f\x40\x44\x7a\x7f\xf8\x90\x1d\xb0\xef\x18\x47\xd3\xca\xcf\x01\x98\xa2\xf3\xbd\x7b\xcf\x2d\xd8\x11\xa0\x97\xfc\x5e\x51\x88\xb0\x3f\xdf\x54\xe5\x17\x63\x7a\x14\x50\x10\x00\xd0\xd3\x55\x16\xca\xf0\x69\x94\x02\xb4\x8f\x8d\x8c\xc3\xaf\xb1\x7a\x56\x13\x2d\x08\x23\x70\x35\xa0\xc9\x54\x90\xbf\xe5\xd7\xb7\xfb\x40\x17\x8f\x28\x1e\x4d\x87\x2e\x47\xa0\xe9\x55\xce\x97\x36\xf3\xc3\x33\xa6\xad\xf5\x0a\xd3\x19\x94\xeb\x9f\x45\x32\x7f\xac\xc8\xc5\xd1\x13\xfa\xd4\x71\x3f\xe7\xf1\x98\x01\x0d\x42\x04\x6b\xbf\xe6\x8b\x0d\xaa\x79\xdc\xb8\x75\x59\x29\xbe\x92\xf9\xca\xa1\x50\xdf\xbd\xe3\xfc\x9e\x39\x2b\x2b\x70\x1c\x30\x21\xc2\x40\xe4\x67\x9d\xe4\x11\x24\xb1\x88\x8e\x5d\xb5\xa8\x3d\x05\xce\xaf\x49\xeb\x44\x0d\xc4\x50\x26\xd4\x50\xbc\x98\x4b\x8d\x6f\x02\x85\x0e\xcb\x57\x0e\xee\x0a\x38\x19\xb1\x2b\xc2\x63\x67\xb5\xb9\x8e\x1b\x14\x1c\x9b\x0a\x96\x90\xea\x4a\x37\x00\xda\xd1\x23\x95\xf9\x75\xd1\x1c\xd7\x7f\x96\x36\x88\x31\xf2\x1f\x4e\x96\x8c\xc5\xba\x9e\xf8\x24\x74\x03\x8b\xc7\xaa\x26\x12\x2d\x21\x8b\x74\x30\x41\x50\x6a\xeb\xbd\x1f\x98\x79\x59\xfd\x16\x0d\x6e\xb7\xd5\x8d\x4f\x57\x6f\x8c\x0c\xa8\xaf\x86\x8e\x39\xb5\xea\x87\x20\x39\x37\xe0\x30\x8a\xcb\xea\xe9\x1e\x10\x60\x7e\x44\xe8\xab\x49\x5b\xc0\x1d\xd5\x73\xfb\xad\xc9\x44\x79\xff\x92\x08\x2c\x7b\xb7\x51\x34\x79\xc7\x0f\x04\x07\x76\x90\x25\xd3\x4d\x72\x14\x0c\x25\xd8\x21\xf0\x34\xa3\x98\x51\xa9\x3c\x62\x3b\x71\xc9\x40\x0e\x94\x26\x39\xf2\x8b\xbd\x03\x2e\x1d\x8d\x3c\x05\x9f\x7c\x2c\xd3\x1d\x74\x76\x46\x2d\x27\x76\x03\x5d\x07\x88\x02\x02\xdb\xfe\x9e\x07\xd1\x54\x62\x2d\x7a\xc6\x17\x5a\x5a\xfa\x79\xfe\xd4\xdc\xc1\x37\x12\x62\x0c\x41\x99\x4e\x11\xd9\x24\x30\x8f\xb2\xff\x3a\x1e\xda\x44\xc7\x61\xbc\x73\x6f\x34\x51\x22\xf0\x2a\x40\xae\x6f\x7d\xbd\x03\xd9\xfe\x96\xee\x3d\x7a\x3b\x4a\x5e\xef\xbf\xcc\x56\xdc\x42\xef\x27\xbd\x80\x85\x17\x60\x38\xb9\xeb\xae\x63\xaa\x75\x03\x52\x75\xec\x34\xe4\x18\x57\x39\xd6\x36\x24\x67\x70\xac\xcc\xc6\xdc\x62\x0e\x2f\xc9\x15\x6f\xa9\x48\x3e\x0d\x9c\xae\x0e\x8c\x46\x39\x48\xa3\xd9\x7a\xe8\xdd\xa5\x96\x6c\x88\xf0\x70\x93\x29\x2c\xce\x22\xbb\xda\x06\x2b\xaa\xfa\x7f\xe8\x4d\x0b\xa2\xd2\xdd\x29\x5b\x23\x45\x8b\xca\xeb\x2e\xf7\x42\xa2\xed\x1c\x83\x44\x83\xcd\x70\x93\x85\xaf\xea\xdc\xbc\x0a\x9c\x6a\x4f\x38\x7b\xab\xf7\xe3\xdc\x36\xc8\x10\xdb\x20\x9b\xeb\x66\xc8\x66\x64\x04\xc6\x61\xdf\xe9\xd3\x2c\x4c\x08\xaf\xc6\xf3\xb1\x25\x7d\x64\x84\xa7\x55\xf5\xac\x70\x1e\xb1\x3f\x87\x76\x3f\xee\x33\x0f\xfa\x04\x22\xcd\x80\xa9\x20\x38\xc6\xf4\x52\x92\xbd\xee\x5f\x89\xe9\x4c\x7a\x65\x21\x97\xfc\x19\x06\xb4\x82\x58\x37\x24\x49\xb1\x08\x1c\x6b\x97\x13\x4c\x43\xc8\x9e\xe2"}, +{{0xd3,0x36,0xfd,0x84,0x08,0x19,0x6d,0x22,0xfb,0x69,0x8e,0xb2,0x5b,0x76,0x54,0xfd,0xa4,0x6f,0x5d,0xe4,0xc9,0xb4,0xd0,0x49,0x50,0xc3,0x98,0xb5,0x9a,0x44,0x29,0x0a,},{0xf3,0xcd,0x96,0x34,0x7c,0xea,0x63,0xe5,0x00,0xa4,0xc9,0x2c,0x3b,0xf2,0x15,0x66,0x2d,0xd0,0x40,0x07,0x84,0xdb,0xf8,0xb5,0x95,0xdd,0x3d,0x39,0x5f,0x90,0xcc,0x12,},{0xaf,0x7e,0x2d,0xf7,0x52,0x9f,0xd1,0x8d,0x1b,0x21,0xb8,0xfd,0x4c,0x06,0x81,0x50,0x59,0x18,0xe2,0x51,0x14,0x34,0xfe,0x4e,0x49,0x54,0xe7,0x43,0xc1,0xcf,0xa4,0x5e,0x41,0x09,0xd3,0x6c,0x3e,0xec,0xf2,0xe2,0x5d,0x20,0x9b,0x9b,0x5d,0x25,0xf7,0xcb,0xc3,0x80,0x29,0x6d,0x64,0x77,0x52,0xe3,0x0d,0x3b,0xea,0x3b,0x92,0x9b,0x09,0x03,},"\xfb\x49\xc1\x9b\xc4\x44\x4c\x28\xeb\x26\x25\xf3\x1d\x99\x6d\x5e\x36\xc5\x7f\xa6\xfd\xd7\x72\xe6\x7b\x71\x99\xce\xc6\x7e\xda\x54\x51\x71\x2d\xf7\xa6\x9d\xbb\xd5\x6e\x7c\x39\x87\x96\xb2\x00\x1d\xef\x65\x1c\x4b\x9c\x05\xee\x31\xd9\x56\x79\x53\x5c\x81\x2a\x37\xd3\x1d\xdb\x30\x73\x19\x9c\xd7\x04\xff\x7c\xa2\x98\x1f\x7b\x9c\x92\x7a\x7f\x7d\x77\x6f\xb6\xf6\x09\xf7\x27\xe6\xea\x70\x9c\xe7\xf4\x3a\x60\x79\x35\x04\x16\x9a\x89\x05\xd9\xb2\x31\x09\xf0\xd8\x67\x96\x6a\xa3\xe3\x00\xc7\xe1\x1d\xde\xdb\x9c\xc1\x17\xb9\x04\xf6\x29\x27\xe4\x8e\x4d\x73\xfe\x1a\x6c\xec\xcc\x4c\xeb\x08\xe6\x4a\xb5\x5f\x25\xc9\x82\x16\xce\xc9\x37\x60\x8a\xd7\x93\x14\x69\x98\xf1\x4c\x29\x85\xe6\xc2\x91\x0d\xf7\xb1\x38\x8f\x9d\xd8\x63\xf1\xe4\xd7\xd1\x62\x14\x79\xb8\x51\x2c\xdb\x34\xe6\x73\xeb\x02\xa4\x89\x34\xe3\x9c\x2d\x18\xd7\x0f\x96\x6d\x67\x6a\x2b\xd7\x5d\xb5\x43\xd2\x5c\x5d\xcd\xc3\xef\x3b\x8b\xc8\x20\x18\x48\xc3\x09\x61\xe9\x15\xd9\x68\xbd\xc3\x19\x46\xb0\xd1\x8e\xde\x7c\xb0\x16\x6d\xbe\x1f\xfe\xff\x94\x39\xc9\xc3\x40\x4a\xf6\x01\x6c\x73\xed\xeb\x25\x3d\x93\xf5\x62\xa1\xa6\xcd\xd5\x78\x98\xa9\xb3\x42\x25\x87\xd5\xf5\x6a\xf3\xd0\x6b\x3f\x6c\x25\x75\x1f\x44\x46\x0f\xb3\x29\x96\x56\xdc\x11\x22\x7e\xf4\x83\x7a\xab\xdd\xee\x40\x0f\xa5\x3f\x69\xe5\xce\xd0\x53\xc7\x6d\xce\xcd\xf0\xad\xc9\xef\x80\xf4\xb3\x30\x54\x2f\xf1\xfa\x2d\xf0\xb8\xd4\x3c\xd1\xc3\x11\xb1\xb9\x95\x5c\x63\x2c\x8e\x5f\x04\x91\x93\x1c\x04\xde\x43\x4d\xf8\xf7\xa3\x94\xe5\xfe\xf0\x16\xdb\x2e\xb7\xc8\x7b\x2a\xc7\xa4\xa7\x30\x43\xbd\x7f\x98\xad\x0a\x4d\x45\x3a\xbf\xb0\xbe\x8b\xe4\xcb\x14\x57\x42\xaa\x56\xaa\x5e\xf2\xdf\xf1\x22\x30\xa5\x10\xe3\xb7\xf8\x2f\x78\x47\x70\x0e\xee\xa5\x90\x5b\x02\x89\x69\x6c\x4c\x14\x2b\xf3\x4b\xcf\x81\xa9\x62\xd7\x5b\x8d\x09\x10\x55\x73\x37\x79\x33\x5b\x7f\xd4\x7a\x20\xd1\x7c\x94\x8a\xb7\x32\x94\x78\x32\x67\x43\x71\xe2\x2e\x71\x11\x34\xf5\xc9\x19\x79\x23\x57\xf7\x9b\xf7\x0c\x44\x70\x78\x75\x28\x43\x4f\xc0\xb4\xca\x09\x3e\xe9\x25\x43\x42\x0d\x1c\xa8\x11\x24\xf5\x58\x53\x17\xe2\x50\x82\x1a\x4f\x3d\x8c\xe0\xf9\x19\xde\x9f\xbf\x01\x27\x08\x7e\x67\x69\x03\xf6\xcb\x39\x02\x5b\xcc\x73\xa0\x76\x29\x54\xb7\x2e\x66\xa6\xbe\x9b\x96\xc9\x7b\x6f\x60\x30\xbf\x5c\xa0\xbc\x27\x27\xa9\xa1\x79\xcf\x9d\x94\x05\xf3\xfe\x18\xf3\x49\x23\x89\x07\x9a\x5b\x65\xbc\xb1\x3a\x0d\x5e\xf4\x1c\x2c\xd9\x7e\x70\x2c\xee\x4a\x2f\xeb\x1e\x67\x02\xbd\x4c\x63\xfe\x0a\x4a\xe9\x94\xc4\x28\x7a\x83\x7b\xc3\xf6\x4c\x2d\x89\x88\x57\xcd\xb3\x2a\xcd\x4b\xd1\x33\x67\x6e\x51\xf7\x7b\xc7\x11\x0e\x3c\xe5\x2d\x92\x04\xfd\x26\x91\xa6\xd3\x70\x78\xf6\x8e\x7b\xce\xf3\x0f\xc9\xc4\x83\x98\x58\x22\xb6\x61\x11\x92\x38\xe4\x0f\x9c\xfd\xca\xbe\xf2\xd7\xb1\x6b\x05\x9a\xb2\x4a\xdc\x05\x00\x37\x12\xbb\xb1\x28\x09\x6e\x37\xf9\x1b\xc4\xc5\xc8\x15\x08\xbe\x27\xfa\x0b\x84\x94\x0b\xe3\x6b\xce\xd2\xe6\x5c\xd3\x6b\x39\xfb\xdc\x5e\xa6\x86\x14\x15\x92\x28\xca\x65\xc5\xd8\x40\x7b\xaf\x66\x3b\x52\x8e\x7d\x87\x73\x4c\x7b\xc7\x7d\xc8\x43\x1a\x1d\xd6\x87\x3c\xfd\xdf\xc3\xe7\x57\xd9\xad\x1f\xed\xd3\xc7\x98\xf1\xfe\x60\xe7\x15\xee\x48\xa6\xbc\xbb\x13\xb6\x16\xa8\x9a\x38\xe3\x36\x48\x9d\x3d\x6c\xcb\x72\x69\x14\x11\x2a\x1b\xc5\xd9\x77\xc9\xb2\xa3\xfa\xc1\x07\xad\x09\x4b\x03\x8a\xb7\x54\x68\x26\x3c\x34\xbd\xa8\x17\xc0\x56\xe0\x7a\x6c\x56\x69\x7c\xb6\x4a\x0b\x1f\x96\x6f\x6d\xe0\xbb\x1c\x0a\x71\xc8\xa5\xfe\x13\x3b\xa2\x03\x6d\x24\xda\xcc\xad\x3f\xa0\x3b\x39\xcd\x27\xf8\x32\x75\x27\x51\x05\x5a\x81\x55\x91\x3d\x04\x0f\x51\xda\xe7\x8d\x71\x94\x6c\xa0\x4d\x83\xc7\xc8\x94\xc2\x80\xaa\xec\x28\x55\x43\xe5\xfd\x5e\x32\x7a\xcc\xca\x9a\xbe\xf1\x56\xa1\x3b\x95\x71\x44\x6b\xd8\x00\x7f\xf9\x2d\xbc\x0f\xba\xf2\x3a\x94\x41\xb5\x3c\x1c\xd7\x40\xc3\x4c\x28\x29\x29\x10\x1a\xd2\xea\x8b\x85\xd7\x00\x52\x99\x1b\x77\x4e\x92\xff\x75\xcc\x85\x11\x3e\x09\x00\xb5\x1b\x86\x3e\x1f\x2a\xda\xab\x2d\xbc\xf4\x6a\xf4\x79\xea\x24\x8e\xc2\x88\x9a\xfb\xfe\x73\x74\x08\x39\x3a\x2b\x1b\x33\x01\xf6\x5c\x1f\xac\x8b\x67\x67\x95\xab\x5b\xf4\x47\xf0\x5e\x0d\xaf\x67\x76"}, +{{0x65,0x73,0x22,0x78,0x41,0xf6,0xf9,0x28,0x31,0x14,0x6c,0x44,0xc0,0xe4,0x80,0xcd,0xf5,0x44,0xbb,0x87,0x65,0x52,0xcc,0x5f,0x9d,0x42,0xf1,0x5b,0xdc,0xc0,0x44,0xb8,},{0x19,0x22,0x57,0xa5,0x4c,0xe5,0xd0,0x4c,0x19,0x43,0x9f,0xdc,0x9e,0xde,0x18,0xec,0x85,0x6e,0x29,0x87,0x0e,0x24,0xd3,0x73,0x1f,0xe2,0x22,0x47,0x99,0x94,0x9b,0x7e,},{0x53,0x8e,0xac,0xe4,0x93,0xde,0x53,0x38,0x4b,0x1e,0x98,0x5b,0xb9,0x07,0xc0,0x94,0xf8,0x16,0x84,0x30,0xda,0xb1,0x4d,0x37,0x79,0x1b,0xe6,0xe7,0x8f,0xf3,0xf5,0xa3,0x06,0xec,0x70,0xdc,0xac,0x86,0xd9,0x93,0xa4,0xc1,0xf7,0x58,0x50,0x78,0x6d,0x79,0x5f,0x02,0x2b,0x79,0xbe,0x6a,0x54,0x77,0x69,0xe4,0x15,0x69,0xc5,0xa9,0xa3,0x0a,},"\x6e\x7c\x6b\x12\x2a\xb3\x6b\xd1\x35\xf6\x9e\x2b\x85\xe7\xfc\xce\xfb\x07\x2c\x12\xcf\x08\x8a\x32\x29\xd8\x76\xef\xf5\x32\x38\x9f\x05\x77\x11\x6f\x7a\xf2\x9f\x11\x95\xe3\x82\x88\x39\x38\x13\x80\x46\x71\x78\xb2\x29\xc5\xa1\x8d\x7c\x49\x43\xec\x97\x0d\xd1\x8b\xce\x72\x3b\xd0\xca\x91\xff\xa9\x55\x63\x54\x6a\x32\x4f\xe0\xb9\xbf\x6c\x04\x55\xd4\x27\x60\x39\xe8\xd2\x91\xfc\x72\x76\xaa\x55\xa1\xcd\x3e\xa0\x52\x82\x65\x4a\x7f\x97\x00\xad\xcb\xc7\x80\x77\xc5\xdd\x0f\xc8\x6e\xce\xd4\x8f\x4a\x60\xcc\xb7\x6b\xfb\x8b\x45\x62\xba\xc2\x2a\x02\xd1\x9e\x44\x89\x39\x4a\xb9\x71\x9f\xc1\x44\xf5\xdb\x2e\xf0\x39\xb3\x7f\x3b\x51\xd1\xd6\x57\xa0\xcf\x83\x5d\x71\xf1\xa4\xaf\x01\xeb\x9f\xd8\x85\xc6\x04\xa6\x24\xcb\xe9\x10\xbf\xde\x09\x3a\xd3\xf0\xcb\xfd\x9a\x48\x30\x73\x29\xd4\x42\x34\xbd\x01\x19\x1d\x56\xe5\x22\xd7\x2b\x54\xe1\xfe\x47\x33\xda\x3a\xec\x68\x27\xea\xb3\x55\x48\x98\xe0\x3e\x57\x7b\x4e\x7b\x9d\xd3\xf3\x08\xe6\x16\x80\x8d\x02\x94\x49\x9f\x28\x86\x29\x5e\x54\xc3\x60\x19\x9c\xa8\x3a\x83\xff\x46\x19\x5e\xa3\xc4\x84\xa6\x68\x38\xd5\x1a\xcb\xe9\x61\x1e\xee\x03\x6a\xe2\x81\xc6\x79\x3c\xbd\x45\x1f\x92\x71\xfb\x5d\x25\xea\x7c\x18\x99\xab\x5d\x43\xed\x8b\x9d\x06\x7b\xc5\x6d\x8d\x4a\x15\xf1\xda\xb8\xd8\xd9\x5d\x1b\x17\xaf\x64\xcb\x18\xc1\x14\x75\x51\x14\x7a\xdd\xcb\xdd\x53\xfb\xcc\xd9\x02\x6f\x85\x55\x47\x13\x1b\xee\x95\x07\x16\x39\xf6\x49\xf2\xd0\x35\xa2\x5a\x3e\x42\xe3\x8e\x22\xbb\xf0\x38\x10\x6c\xe8\xbc\x4a\xd6\x76\x8a\xb9\x2c\xd5\x7a\xfa\xcd\x04\xee\x55\xcf\x07\x14\xb7\x68\x95\x2d\xac\x24\x0b\x1e\x9b\x28\x35\xec\xf7\xb0\xd6\xc4\x07\xc8\x25\x24\xa9\x23\xb9\xf5\x4d\x1b\x8f\x12\x56\x4a\x87\x21\x44\xef\xad\x3f\x3a\x7d\x23\x97\xcd\x12\x17\xdc\x5a\x9c\x96\xe4\x3b\x29\x60\xa8\x42\x5e\x97\xe0\x7a\x02\xb0\xda\xc9\x0f\x34\x6b\x91\xa3\x46\xa2\x3e\xd2\xbb\x7f\xe6\x91\x9c\x22\xdf\xf0\x3f\x62\xda\x7d\xba\x17\x6e\x8d\xdb\x22\xf3\xf3\xa6\x68\x89\x1d\x3f\x4e\x69\x54\x8d\x0a\xc4\xe7\x1e\x6d\x28\xed\x5a\x67\xab\x5a\xc6\x11\xd4\x60\xb6\x7a\x20\x1f\x4f\x56\xa5\x00\x3c\xa7\xa7\xd1\xcd\x1d\xb6\xc1\x00\x75\xb0\x92\x27\xcb\x8c\x5d\xc1\x66\x6f\x8b\xe7\x10\xb4\xb7\xbc\x2b\x95\xae\x60\xda\x4f\x64\x17\x9a\x50\xd2\xf8\x87\x44\x36\x15\x91\x67\x1d\x36\xb7\x29\x63\x15\xf6\x99\x64\x39\xad\x79\x82\x1d\xa8\xe7\x72\xdf\xbf\x55\xa9\x0d\x5d\x52\xef\x7d\x76\xb3\x5f\xfe\xbd\x42\xe3\x52\x5f\x45\x30\xc5\x4a\x0f\x23\xb4\xd0\x7c\x5f\x59\x74\x47\x0e\x89\x40\x4d\x17\x6e\xef\xf9\xef\x23\x33\x61\x96\x91\xc5\x9b\x7a\xad\xd4\x2c\x29\x6b\x1d\x0d\x32\x8d\x9a\x3b\xd5\x9a\x54\xbb\xa9\x3a\x0c\x1f\x1d\x62\x41\x8c\x21\x90\xc3\x81\x74\xb6\xab\xea\x02\xdb\x66\xe8\x18\x32\x0e\xc4\xb8\xba\xc1\xc1\x2f\x18\xf3\x0d\xad\xe2\x7e\x63\xc5\x8f\x9e\x7c\xaf\x4b\xf6\x9b\x26\x5a\x2f\x9d\x91\x80\x08\x61\xac\xf4\x79\xe6\x5e\xc1\x7e\x68\x05\x77\xe0\x58\xcb\x16\xc1\x09\xbc\xf9\xb2\x90\x9f\xce\x33\x61\xa2\xc2\x68\x5c\x10\xbe\x85\x40\xa1\x22\x2d\xb5\xec\xf0\xcc\x4d\x53\xa4\x21\x4b\x7b\xf6\x24\x8a\xdc\x3a\x86\x1e\x34\x84\x1a\x37\x79\xc4\x60\x46\xc5\x36\x4f\x1e\xa9\x1a\x78\xc9\x70\x0d\x46\x2e\xcf\xaa\xe3\x6b\xa7\x60\xc1\xbd\x6a\x23\x7c\x96\x1e\xdf\x40\x22\xce\xde\xfe\x5e\x93\x7b\xbe\xd7\x05\x1a\xe6\x1b\x96\xd0\x8b\x04\x87\xce\x05\x68\xff\x0d\x32\x74\x0b\xbd\x49\xad\x0d\xb8\x6e\x09\x10\x2a\xb2\x1a\x91\x56\x16\xe9\xdf\xdd\xc8\x1e\xbf\xb3\x6c\x90\x3e\x07\xa4\x0c\xd2\xdd\x11\x9f\xf4\xa5\x0b\x93\xfc\x6f\xdf\xc0\xf3\x6e\x59\xe0\x14\x8f\xcf\xf3\xfe\x8e\x2c\xd6\xd3\x0a\x9e\x4b\x8f\x01\x55\x67\xd1\x18\xb6\x27\x4e\x1e\xd7\x5b\x22\xe4\x4c\xa9\xd9\xdb\xfc\x16\x07\x42\xcf\xac\x58\x1e\x1a\x0b\xf5\xff\x33\x26\xbc\x5f\x78\x96\xb9\xca\x05\xa8\x11\xd5\x5e\x97\xc8\x34\xd3\x7a\x64\x95\xcc\x26\xcf\x44\x2b\xd2\xd9\x01\x29\x89\x5e\x9c\xc0\xed\x01\xe2\x15\x52\x93\xf4\x7a\x07\xab\x58\x80\xc6\xca\x29\xed\x44\xd9\xcc\xbc\xaa\xda\x7f\x3e\xb6\x04\x02\x18\x14\x88\x65\x4e\x04\x91\x15\x78\xb1\xaa\x9c\xdd\x4b\x86\xb0\xdd\x24\x50\xdf\x3a\x43\x08\x1e\x41\x10\xab\x58\xde\x76\x39\x24\xd3\xc8\x91\x52\xe9\x92\x93\xe6\x38\xf9\xac\xd8\xd7"}, +{{0xa6,0x3c,0x1f,0x54,0xb2,0xca,0x05,0x8f,0xed,0x2e,0xe2,0x50,0x4b,0x98,0x3f,0xf3,0x3d,0x57,0x0a,0x9b,0xab,0xa5,0x83,0xc0,0x86,0xce,0xfe,0x19,0xf4,0x3e,0xc4,0x9d,},{0x32,0x9b,0x86,0x6b,0xca,0x41,0x94,0x29,0x7f,0xc1,0xad,0x5a,0x0e,0xba,0x0d,0xf9,0x56,0x69,0x9c,0x74,0xab,0x7d,0xa5,0xfa,0x54,0x62,0xbd,0x06,0x61,0x47,0x10,0x20,},{0x28,0x33,0x59,0xbe,0x41,0x29,0x0a,0x51,0xe6,0xa7,0xc5,0xd5,0x72,0x5c,0xa4,0xea,0x0a,0x68,0xf1,0x4a,0xca,0x14,0xb0,0xf0,0x25,0x66,0xde,0xe2,0x1f,0x49,0x0d,0xa3,0xc7,0xe9,0x5f,0x7a,0xb7,0x39,0xbc,0x35,0xa7,0xf4,0xf2,0x32,0xe9,0x71,0xaa,0x15,0x76,0x57,0xa6,0x33,0xeb,0xa0,0xe7,0x2d,0xc9,0x7a,0xf3,0x2c,0xdb,0x92,0x87,0x02,},"\x79\x1b\x86\xfd\x58\x77\x13\x47\x8f\x92\x34\xff\x30\xce\xfc\x12\x3c\xd7\xc3\xeb\x12\x5f\xa7\x4e\x4c\x6d\xb6\x4e\x78\x44\xf7\xc8\x5b\x16\x86\xe7\x1e\xd0\x8d\x1a\x6a\x04\xe0\xeb\xbd\xff\x4a\xb1\x60\xc9\x76\xc8\xab\x9b\x50\x5f\x6a\x7e\xb0\xa1\x84\x27\xe9\x99\xa8\x82\x8d\xf1\x06\x84\xf8\xc7\x5b\x6a\x6b\x0a\x64\xc0\xaf\xa4\xbb\x22\xbe\xd1\xcb\x93\x25\x35\x9c\xac\x3b\x8c\x50\x8d\x98\xbc\xb0\xeb\xcd\x74\x8d\xc1\x32\xf1\xd6\xa3\x60\xa4\x45\x0d\x12\x92\xa1\xfe\xfc\x4e\x57\xe4\x10\x7a\x22\x3f\x42\x1e\x7d\x14\xa3\x84\xb8\x5c\x18\x84\x4d\x0b\x9e\xed\x2e\xcb\x81\xbb\x74\xe8\xa1\x26\x52\xd9\x85\x05\x79\x5a\x01\x31\x16\xa7\x07\x6c\xcb\x54\x93\xd6\xa7\x11\xf7\x63\x7e\x97\xa7\x80\xe7\x4d\xa1\xb3\x9b\x15\xcc\x7b\xbd\xe2\xe6\xc4\xd0\xd3\xe8\x30\x05\x97\xc8\x36\xe8\x0b\xcb\x8d\x80\x81\xd9\x74\xe0\x24\x32\xea\xc8\x83\x68\x21\x1d\x3a\xaa\xe8\x9a\x14\x41\x71\x08\xe1\xff\x67\x37\x08\x38\x49\xc6\x25\xb4\x0d\x63\x1f\x6c\x83\x57\x22\x0c\x7f\x37\x38\x0b\x3b\x2c\xc5\xd0\xe2\xdf\x6b\x4d\x11\x96\x57\x9d\xbc\x57\xb6\xc9\xea\x0d\x41\xf4\xfa\x0e\x55\x6f\x94\x3c\x94\x48\xef\x42\xfc\x78\xdf\x59\x96\x64\x8c\xe2\xf3\xde\x04\xd8\xa6\x63\xf9\x67\xf3\xd9\x33\xd4\xf6\x53\x57\xab\x29\xba\x5b\x64\x05\xfb\x16\x29\x72\x57\x8d\xdb\xb2\x36\x7b\xed\x14\x3c\x85\x4c\x10\x88\xde\x92\x1d\x79\xf5\xa9\x2a\x85\x48\x37\xeb\x77\x02\xe1\xba\x92\x5c\x6e\xac\x23\xd1\x34\xba\x1b\xaf\xc5\xd4\x6d\xe2\xa1\x94\x2c\x7f\x36\x6f\x70\x1b\x0a\xfa\xbb\x75\xcb\x1d\x80\x8e\x1a\x1e\x4e\x3a\xe5\xde\x88\xe8\xe9\x98\x97\x57\x45\x8b\xdd\xd8\xa8\x06\xc1\x10\xcc\x3a\x73\x3d\x1d\x4a\xc5\x8a\x40\x5c\x4d\x81\x13\x4f\xbc\x24\xcc\xde\x7d\x5a\xfe\x42\x0f\x9f\x17\x85\xf0\xa5\x02\x0f\xaf\xbb\x22\x61\x22\x25\x08\xaa\x05\x28\xb7\xb4\x8b\x56\x72\x00\x95\x84\x25\xef\xcb\x42\x93\x4a\x88\x0b\x13\x34\x44\xbb\x10\x9f\x2a\x95\x4c\xfa\x35\xa2\xd1\x7c\xb0\x5e\xe3\xf1\x6d\x06\xb3\x21\xa1\x5f\x91\x33\x9a\xbe\xda\x24\x3a\xd6\xc0\x91\x9f\xac\x51\xe9\x07\xe0\x53\xfd\xee\xd1\xcf\x03\x00\x37\x34\x13\x77\x93\x94\x1b\x8a\xdf\x9a\xb6\xaf\x81\x9c\x24\x5d\x6d\x56\xf1\x69\x64\xc8\xa7\x5b\x07\x56\xa8\xcb\x0c\xa8\xc1\x2a\xc6\xe6\xb3\x94\x2e\xeb\xec\x2f\x86\x88\x35\xf8\x1b\x10\x9d\xb4\x98\xa4\xca\x2e\x02\x1f\xa7\x65\x60\x8d\x23\xd8\x03\xde\xdc\x9e\x51\x45\x3f\xc1\xd2\xa6\xa3\x8a\x4a\xab\x25\x7c\x0f\xe7\xd6\x7d\x32\xa5\x41\xe0\x14\xb6\x0e\x10\x13\xa9\x2c\x1b\x3a\xd9\xe6\xf1\x1b\xe2\x93\xb2\x46\xf9\xa0\xc6\x44\x0b\x0b\x54\xfe\xe7\x5f\xed\x2f\xb7\x5c\xc9\x1e\xcb\x32\x73\x8c\x49\x58\x31\x58\x6a\x11\x24\x2d\x87\xdc\xb4\x88\x3e\xdf\x67\x57\xa5\x0b\x18\x84\x37\x59\xb9\x8d\xd0\xce\xf4\xa3\xfe\x10\xd7\x63\x70\xec\xda\x8c\x83\xfa\xb8\x7e\xee\x26\x56\xc5\xf2\x61\xc3\x40\xea\x91\xa5\x60\xd0\xe2\xc6\x42\x89\x26\x7f\x00\x36\xba\x35\x94\x48\x00\xa5\xa0\xae\xf3\xf1\xdf\x83\x9a\x72\x4e\x18\x1d\x79\xb8\xa3\xc1\x6f\x65\xae\x27\x95\x3c\x4a\xae\x8c\xcd\x30\xff\x5a\xcc\x4b\x31\xe4\x76\x5c\x68\xfb\x38\x31\x9f\x10\xac\xf8\x92\x47\xb5\xa3\x9b\x3b\x08\xa1\x91\x75\x4a\x24\xac\xa9\x59\x6a\x1f\x8a\x70\xb6\xe4\xf0\x3a\x20\x04\xa9\x08\x6f\xf6\xed\x07\x65\x2a\x92\x6e\x1e\x2d\xf7\xbd\xcc\xd5\xbe\xc1\x6e\x5c\x4e\x96\x83\x64\xa0\x9a\xbf\x9d\xed\x93\xdf\x5f\xca\x0b\xcc\xa5\xc8\x12\x97\x6e\x5c\xfb\x3c\x34\x93\xfc\x17\x5d\x1d\x92\xee\x8d\x1c\x98\xfb\x33\x82\xb3\xab\x90\xc5\xc0\xe4\xbd\xf6\xa3\xac\x94\x76\x7b\x68\xd4\x7e\x6b\x9c\x24\x42\x65\xe3\xb1\xab\x06\x23\xa8\xf0\x10\x02\x73\xf2\xc6\x07\xde\x89\x61\x2c\x72\xd3\x9b\xe4\xc0\xb4\xd7\x7a\x3c\x61\x36\x8d\xf4\x0b\x36\x08\x65\x29\x89\xd1\xe1\x9c\x0a\xaf\x0e\x3c\x25\x3e\x56\x2c\x64\x09\xfe\x64\x48\x92\x9b\x33\x75\x3d\xe1\x62\xe6\xde\x5b\xd4\x66\xa5\x11\x4f\xc0\xe5\xf5\x71\x02\x75\x5e\x29\x54\x4f\x03\xb2\x8d\x4f\x78\xde\x9a\x02\x4d\xd4\xc4\xe8\xc3\xc2\xd4\x41\x15\xa7\xae\x15\xed\xb4\xf5\x58\xaa\x7d\xba\x64\x26\xe7\xe3\x72\xc5\x4f\x79\x40\xbd\x77\x14\x46\x7f\x8c\x3a\x1a\xdd\x3c\x64\x01\x89\xc3\x16\x60\xd8\xcc\x01\xd3\xc5\x38\x2e\x42\xab\xc1\x04\xc7\x23\xf9\x48\xa8\x04\xca\x85\x30\x47\xb6\xb8\x7b\x5b\x6e\xf4"}, +{{0x5b,0x67,0xa6,0xd7,0xc6,0x50,0xdd,0x92,0xdd,0xd0,0x36,0xce,0x7a,0x30,0x5b,0xc9,0x59,0xa4,0x97,0xc5,0xe5,0x15,0xa6,0x84,0x93,0x03,0x5c,0xb3,0x85,0x0e,0xe0,0x3d,},{0x4c,0x6f,0xc1,0x64,0x05,0x05,0xfb,0x46,0x66,0x9f,0x93,0x04,0x8f,0x8e,0xf5,0x57,0x09,0x9f,0x3f,0xd9,0x2a,0x53,0x06,0x4b,0x16,0x33,0x63,0xa3,0x1b,0x7f,0x00,0xaa,},{0x0f,0x07,0x3c,0x9a,0x58,0x6f,0x6f,0x5e,0x08,0x38,0x9a,0x2a,0x5e,0x18,0x08,0xe2,0x70,0xf0,0xed,0xb6,0xaf,0x10,0x44,0x96,0xf9,0x37,0x57,0x62,0x3f,0xea,0x53,0x13,0x3a,0x73,0x1c,0x44,0x5a,0xc2,0x35,0x78,0xcd,0x56,0xa3,0x88,0x3c,0x08,0x95,0x86,0x68,0x63,0x1f,0xed,0xf1,0x44,0x6c,0xe3,0x4f,0x85,0x7f,0x90,0x82,0x2b,0xa8,0x0a,},"\x62\xcc\xde\x31\x77\x2c\x57\xe4\x85\x3a\xaf\x2a\x81\x81\xfd\xb5\x3f\xb8\x27\x90\xea\x65\x01\xbf\xc8\xf5\xd4\xae\x8d\xbd\x52\xde\x42\xce\x2e\x89\x61\xac\x17\x31\xf4\xbc\x08\x5f\xb5\x61\xef\x09\xa2\x44\x29\x70\xb6\x29\x79\x01\xae\xaa\x2e\xe5\x55\xb7\xd5\xe3\x95\x1c\x7c\x35\x12\x39\xdd\xee\x95\xff\x54\xf9\x24\xda\x95\xca\xe7\xb1\x5b\xa6\xa9\xa1\x33\x7b\x8c\xe4\x92\x1e\xd9\x13\xcd\x79\x1c\x1c\x69\x41\x08\x0e\x54\x8f\x3c\x36\xe8\x45\xac\xbf\xd8\xd8\xce\x35\xe2\xfd\xc2\xa2\xad\x6c\x7e\x24\x61\xbf\xcb\xf1\xaa\xbc\x55\xcf\x0f\xae\x42\x88\x85\xbe\x5e\x86\x53\x33\x08\xc9\x75\x68\x05\x21\x9a\xbd\x7f\xfc\x16\x57\xb6\xf4\x63\x29\x20\xa0\xc1\x0e\x0e\x36\x33\x19\xd9\x00\xfc\xd6\x1e\x7d\xdb\xcd\x6e\x76\x2a\x7d\xb9\x24\x80\xc3\x63\xb2\xc0\x64\x0c\x6b\xf3\x2d\x69\x0d\xd8\x29\xd8\x40\x5f\xa6\x6e\x47\x83\xeb\xe1\xcb\xde\x95\x47\x95\x4a\x90\xba\xad\x9f\x77\x4e\x94\x54\x9a\xbb\xff\x2c\x1f\x5c\xae\xc2\xbf\xd2\x8e\x41\x5d\x36\x42\x9d\x58\x51\x8c\x3e\x17\xe8\x69\x9e\x19\x89\xd4\x7b\x8d\x62\x7e\xf9\xab\x4d\x1e\x7d\x12\x0b\x37\x2c\x21\x41\x30\x4f\x7f\xab\xd0\x26\x5b\x8b\xe4\x1f\x54\x67\xf4\xde\x9e\x65\xc1\x25\xee\x1f\x27\xa2\x89\xc4\xf7\xc9\xa1\xfb\xf2\x5b\xfc\x2f\x8d\x30\x8e\x7f\xf5\x21\x91\xcb\x76\x44\xc6\xaf\x20\x45\x22\xf2\xac\x87\xb5\xf4\x05\x25\xfd\x43\xd3\x08\xc8\xdb\xc6\xa8\x61\xd2\x5d\xb2\x3e\xe2\x76\x67\x8a\x1b\x6e\x8e\x91\x28\x3b\xe0\x24\x70\x48\x2e\xd6\xcc\x9f\x6e\x39\x63\x51\xd1\x1b\x1c\x7e\x22\x32\x9c\x09\x1f\xe7\xd3\x68\xf6\x06\x53\xf9\x3b\x0f\x6a\x3f\x71\x2c\x20\xf9\xd2\xd8\xa9\xa0\x81\x98\x72\xf0\xc7\x1d\x7b\x1c\x0b\xc1\x68\x3a\x15\x2b\x48\x4b\xc2\x1c\xf5\x56\x09\x3a\xb4\xc0\xac\x16\xd3\x22\xff\x0b\xf4\x52\xe5\x58\x1e\x1e\x72\x41\x67\x38\x84\x02\x3c\x7d\x6e\x17\xe2\xde\x80\x59\xf6\x0e\x4c\x18\xe1\x3b\xd5\x5f\xcf\xee\x62\x3f\xd0\x46\x9c\x0d\x09\x11\x61\x1d\x09\x9a\x25\x70\x20\xf2\xf3\x1b\xf5\x07\x8e\x6e\x65\xa1\x35\xd5\xbf\x40\x76\x20\x23\x6d\x6c\xc7\x59\x31\x0f\xa7\x28\xff\x8b\xb5\xec\x56\xab\xbe\x1a\x3c\xd1\x51\x53\xf8\x92\xd9\x58\xd3\x0d\x16\x2d\x01\xee\x66\x5f\x5b\x56\x27\x81\xd8\xdc\xf8\x42\x80\x59\xe5\xfd\x22\x5a\xd7\x8a\x99\xea\x76\x0f\xe5\xd9\xee\x82\x19\xc9\x5a\xcb\x18\xd0\x56\x22\xe1\x0a\x9b\x6c\x67\xf6\xd4\xf6\xed\x11\x63\x5c\x5e\x2e\x0f\x85\xdd\x5d\x3c\xbd\xa6\x5a\xa4\x23\xd5\x94\xa8\x0b\x40\x42\x7b\xc3\x21\xe0\xee\xf9\xaf\xd2\xbc\x87\x46\xab\x73\x99\xff\x6d\x0e\x12\x87\xb6\x61\xdd\xc4\x06\x2d\x07\x20\x18\xf4\xc1\x0e\x86\xcf\xae\xd7\x2d\x9e\x68\x6e\xd0\x9d\x52\x55\xd3\x60\xe3\xee\xa2\xc2\x9b\x9e\xae\xa0\x5f\xc7\x8c\x8c\xdb\x8c\x9d\x4a\xfc\x7a\xdc\x6d\x4a\xa0\x67\xb7\xab\xfb\x0a\x4e\x94\x0a\x77\x58\x0e\xc2\x06\x45\x6c\xb9\xe9\xf9\x5f\x6d\x56\x5d\x53\x6e\x53\x5a\x16\x7e\xde\x8e\x20\xec\x36\x08\x1e\x2f\xc5\x5a\xef\xaf\x24\xd2\x27\xff\xfe\x5e\x6c\xb0\x30\x93\xf4\x43\xb4\xc5\x16\x55\xd9\x1c\xa6\xf2\x75\x95\x9d\x1a\x80\x2a\xde\xab\x44\x70\x1b\x31\xe8\xb0\xfd\x02\x22\xc4\x99\x96\x6c\x72\xd1\x02\x0a\xd9\x37\x0e\x28\x02\xbe\x04\xc9\x93\x3f\x6b\x77\x4f\x6e\x8c\x69\xfc\x0b\xfd\x31\x59\x39\xa1\x27\xb4\xe0\x6d\x0f\x6f\x5e\xde\x67\x1c\xe1\x16\x12\x12\x6b\x51\x87\xb5\x33\x29\xb0\xa9\xcb\x7d\xa3\xb1\xcc\xd6\x7b\x8c\x07\xba\xb9\x9a\x66\x2d\xf8\xce\x85\x1f\x50\x2f\xc4\xe1\xed\x16\x32\xb6\xba\x55\x55\x44\x01\x8f\x75\x27\xe3\x62\xef\xc7\xe3\xb2\xba\x6f\x75\xa1\x25\x4f\x42\x8b\x3b\x7e\x0b\xea\x69\x54\x9e\x7f\x9c\x73\x62\x75\x55\x00\x80\xae\xe3\xaf\x59\x14\xe3\xa3\x4b\xe6\x56\xc7\x7f\x6b\x29\x42\x0e\x54\x33\xf3\xdf\xf3\x81\x1f\x35\x28\x20\x8e\x9d\x85\x0a\xa3\xc2\x9b\x0f\x77\x8a\x24\x27\xd5\xfd\xe3\x07\x32\xdf\xe5\x04\x43\xa9\xc1\xad\x55\xc7\x2a\x08\xab\x26\xff\xaf\x8e\xfb\x90\xbc\xaf\xd3\x72\x6b\x00\xc0\x05\xc8\xc0\xf0\xdb\xf2\xa1\x35\x30\x86\x72\x1e\x44\x65\x45\xb8\x13\x44\x11\x94\xa7\x55\xfd\x26\xb9\x63\xaf\xd9\x77\x27\x8d\x1b\x10\xf0\x90\x01\xc7\xed\x97\x54\x03\xc1\x5c\xbe\x7f\x99\x2a\xb0\x7b\x84\x70\xc9\x39\xf8\x66\xf4\x20\xf7\x7d\xb7\x79\xaf\x83\x97\x00\x32\x9e\x07\x77\xa6\x11\x63\x65\xd7\x6c\x36\xd0\x9d\x86\x04\x72\xa5"}, +{{0x26,0x31,0xc8,0xc3,0x4d,0x29,0x48,0xdd,0xd5,0x99,0x6b,0x41,0x49,0xce,0xfd,0x23,0x8e,0xa7,0x45,0x2e,0xc2,0x2e,0x24,0x61,0x24,0xdf,0xa2,0x79,0xcc,0xc2,0x7d,0xb8,},{0xc3,0x90,0x67,0x86,0xff,0xb8,0xa7,0xc2,0x7c,0x44,0xc2,0x44,0x7f,0x9d,0xde,0x7d,0x66,0x6d,0xfe,0x58,0x8c,0xfc,0x54,0xf2,0xd2,0x50,0x40,0x51,0x2a,0x37,0x1b,0xc1,},{0x0a,0xdc,0x6f,0xa4,0x0f,0xfb,0x81,0xf6,0xef,0x4e,0x41,0x87,0x55,0x49,0x17,0x77,0x5c,0xf4,0x65,0xe7,0xb5,0xe8,0x57,0xf2,0xe1,0xe7,0xf4,0x00,0x97,0x71,0x06,0xd2,0x37,0x7e,0xbc,0x76,0xab,0xb1,0xdb,0x92,0x4c,0x64,0x86,0x7e,0x3c,0x6f,0xe3,0x8c,0x0b,0x4f,0xcb,0x1d,0x0f,0x94,0x68,0xe8,0xfb,0x23,0x50,0x29,0xa8,0x1c,0xe6,0x04,},"\x6f\x9b\xdc\xe1\x44\x3f\x28\x56\xd4\xa2\xf2\x27\x82\x83\x50\x12\xb7\x81\x8a\x0e\x02\x0d\xbc\xc2\x2a\x82\x16\x58\x30\x5f\x13\x42\x34\xd1\x4c\xea\x63\x61\x00\xed\x89\x6c\x2a\x8f\xb0\xe8\x70\x48\xec\x6f\x8b\x31\x48\x4f\x78\xeb\x17\x10\x45\xad\xd7\x2c\x85\x71\x0e\xc9\xf9\xb5\xd4\x36\x23\x41\x7b\x56\x53\xbe\x86\xe7\xfb\xf8\xb4\xff\x91\x11\x0a\x80\x8c\xb4\x1a\xcf\x66\xd4\x36\xe8\x9a\x73\x7f\xae\xa4\xef\xf3\x54\x49\x60\xf1\x14\xb8\x33\xb0\xb4\xeb\xc2\xc1\x40\x70\xb0\xbf\xb7\xb0\x05\x7e\xeb\xb8\x42\xbd\x1c\x1e\xd4\x58\xad\x34\x28\xf8\xf7\x2a\x1d\x1d\xb3\xc4\xcb\x47\x97\xa3\x99\xd4\x7a\x1e\x6d\xb7\x4d\xcb\x2e\xe2\x4a\xe8\x15\x85\xcf\x66\xef\x6d\x9b\xd2\x23\xf0\xf5\x4b\xc8\xc1\xce\xc1\xbb\x44\x60\xbe\xf4\xff\xd3\x2e\xe8\x05\xc3\xca\x5e\xe9\x76\xff\x9c\x14\x55\x9f\x8d\x75\x66\x62\xa2\xbc\x19\xe4\xc5\x98\x54\x06\xa0\x73\x05\xc9\x95\x0d\x86\x6c\x9a\x79\xa3\xe5\xf6\xc5\x96\x97\x53\xa1\x70\xe0\xfc\x4c\xc0\x9c\x6d\x87\xa1\x2b\x44\xcd\xf3\xbe\x16\x23\x15\x9e\x90\xca\xb7\xa8\xa3\xe6\xf0\x1f\x26\x85\x95\xb0\x21\xb1\xef\x7d\x00\x76\x94\x77\x27\x0d\x55\x84\xc9\x12\xe2\x2a\x36\x74\x38\x27\x7f\x59\xdf\x20\xc5\x62\x0d\xd5\xbe\xaa\x9b\xb6\x0b\xee\x47\xf4\xaf\x52\x7d\x89\x29\x57\xb2\xd1\x2b\x67\x8b\x52\x79\xa3\xf8\x32\x64\x65\x4c\x0a\x0f\x8d\x21\xe7\x09\x66\x8f\x30\xfb\x6e\x68\xf0\x47\xd0\xd9\xa7\xc2\xae\x9a\x28\xf7\xcb\x9d\xbf\x18\xf6\x3f\xc1\x66\x1f\x07\xd3\x10\xe5\x40\xc7\x76\x31\xf5\xbd\xac\x58\x24\x68\x5d\x7c\x9a\xba\x0f\xe1\xd0\x94\x07\xa9\x66\x2e\xf1\x8e\xb3\xe2\x8f\xd1\xe8\xbc\x89\x26\x57\xbc\x38\x24\x3a\x2e\x64\x53\xbd\xae\xab\xb2\x79\x1f\xc5\x48\x95\x21\x29\x54\x57\xad\x04\x18\x0c\xa8\x71\xf6\x31\x87\x92\xbd\x15\xfd\x18\x00\xce\x59\xdd\x3e\xcc\x7e\x0b\x72\x97\x92\x67\xd8\x18\x3e\x80\x4f\xdd\x45\xda\xad\x84\xfc\x4c\xaf\xeb\x56\x1e\xa8\xd6\xa7\x4a\x7c\xde\x72\x2d\x96\x25\x3a\xb3\xe7\x5f\x0a\xdd\xe0\x2a\x61\xfd\x5e\x1f\x59\xcb\x1f\x5f\x1b\x2e\x05\x26\x43\x58\x9a\x9e\x4b\xe4\xdd\x6e\xe6\x45\x38\xcb\x0b\x10\x9a\x11\x3f\x30\xa5\x8b\x35\x65\x62\x40\x43\x66\x2a\xbe\x17\xf6\x0e\x31\xe8\x9c\x36\xc9\x95\xe0\x0a\xe0\x7f\x56\xa9\x11\x8a\x31\xae\xc2\x4a\xd5\x44\xbc\x96\x58\x11\x21\x8d\xf8\x27\xc1\x73\x0b\xb9\x04\xbb\x79\xb6\x86\x13\xf6\xc9\x94\x67\x9b\x69\x90\xd7\x75\xb5\xcb\x32\xdb\x97\x19\x4b\xd8\x10\x19\xbe\xa4\x1f\x3a\x7e\xef\x50\x1b\xf8\x49\x1b\x0e\xa8\x59\x38\x84\x52\xe3\xec\xbe\x16\xaa\x7d\x56\x91\x51\x0a\x66\x06\xc4\x93\xe4\xc2\x93\x96\x1b\xf4\x0b\x4c\xd3\x00\xd9\xd2\x2e\xa1\xa7\x72\x4c\x07\x8b\x8b\xab\x1f\xd1\x65\x04\xe9\x89\xb1\x36\xd9\x25\x1a\xc9\xf1\xed\x94\xa5\xe9\xac\xbd\x9c\x04\xf8\x05\x8a\xfe\x03\x04\x9a\xed\x8b\xa2\x9f\xa2\xe8\xfb\x44\xf8\xe8\xc0\x4e\x87\x27\xf3\x99\xe7\x35\xe6\xc1\x49\x6a\x91\xa9\xb2\xcd\x2a\xb0\x2d\x43\xb2\x85\xe9\xd7\x61\x02\x93\xb6\x74\x9d\xf1\x04\x4b\x30\xe2\xda\x99\xa5\x64\x42\x9a\x23\xe6\x8c\x96\xfc\xe9\x2b\x08\xa0\x0b\x7b\x74\x2b\xa9\x7a\x62\xee\x58\x77\x6d\x7d\xd5\x65\xa4\x90\x07\x1d\x4b\x19\xdc\x64\x8e\x03\x32\x9c\xc5\xc8\x25\xd3\x87\xeb\xa4\x9e\x2e\xff\x6c\x43\x41\x86\x5c\x46\x4f\x13\xf1\xbe\xb1\x82\x7a\x7f\x26\x8c\xc1\x5a\x98\x24\x80\xbf\x08\x4f\xe3\x65\x2c\x1b\x0e\x0b\x4a\xd2\x62\x55\x85\x9a\xbf\x1c\x8a\x7f\x9b\x3b\xef\x09\x8a\x94\x07\xfd\xea\x0a\x53\x9e\xb0\x08\xfd\xd7\x49\xfa\x01\x86\xcc\x01\x69\xd9\xd9\xe6\x8f\xe5\xe5\x4c\xac\x32\xce\x57\xb5\xc8\x4c\x2d\x80\x5e\xca\x39\xc2\xdb\xbd\xd2\xe0\x2f\x7d\x22\x88\x26\x71\x2f\xf4\xa6\x14\x11\xca\x0a\xeb\x6f\x01\xa1\xf8\x0e\xf2\x9e\xeb\x07\x1a\x43\x22\x2d\x94\x97\x18\x4b\xd8\x5d\x9e\x44\xb1\x66\xbe\x97\xcf\xd2\xa7\x32\xaf\x4a\x23\x34\x63\xd3\xab\x54\x3a\x7a\x3c\x7a\xec\x55\x56\x56\x56\x88\x40\xf4\xdf\xea\x21\x7f\x65\x53\xaa\x98\xaf\x32\x4c\x12\xb2\xc3\x21\x4e\xe7\x6e\xec\x70\x06\x70\xaf\x68\xc8\xc1\xf3\x69\x46\xef\xd7\xff\x09\x33\xe5\x45\x3f\x12\x8e\x97\x15\xfd\xb3\x34\x4a\xc1\x0c\x4b\xb7\xec\x8f\x10\xdd\xf5\xdb\x71\xf1\xcf\x0e\xfe\x40\xf7\x5e\x5b\x63\x34\xef\x8c\xf8\x42\x9b\x32\x91\xe6\xe4\xce\x37\x9c\x17\x8a\xff\xcb\xc6\x10\x30\xeb\x89\x6d\x74\x4d"}, +{{0x39,0x76,0x9a,0x66,0xf0,0xca,0x12,0x90,0xfd,0xa1,0x43,0x75,0xb3,0x5c,0x66,0x3f,0x6a,0x4b,0x2a,0xb3,0x60,0x71,0x79,0xab,0xd9,0x90,0x63,0xe2,0xef,0xa2,0xc6,0xa8,},{0xf9,0xfd,0x4c,0x19,0x1f,0x38,0xf1,0x21,0x90,0xd3,0x28,0x5e,0x20,0xc6,0xce,0xe5,0x4c,0xfd,0x6f,0xf3,0x15,0x30,0x0a,0x4e,0xfd,0xc8,0xa9,0x0e,0x80,0xaf,0x40,0x83,},{0x14,0x42,0xde,0xa2,0x80,0x7e,0x03,0x11,0x59,0xec,0x6a,0x41,0x2d,0x8e,0x07,0xbb,0x3e,0x29,0x93,0x08,0x09,0x0f,0x21,0x8f,0xa7,0xc1,0x0a,0x9c,0x50,0x68,0xef,0x9b,0x64,0xef,0x11,0xca,0x9f,0xb9,0x2b,0xe1,0xd0,0x21,0x6b,0x99,0x31,0x8f,0xf0,0xf0,0x3c,0xb8,0x71,0xcd,0x7d,0xd6,0x3a,0x38,0xae,0x17,0x02,0x31,0x3e,0x5b,0x25,0x0c,},"\xff\x4d\x89\x87\xe3\xfa\x36\x01\x2b\x75\x86\x73\x6b\x79\x3d\x65\x97\x54\x69\x8c\xd1\x2b\x65\xe5\xba\x9d\x75\x8c\xac\x16\x49\x28\x8d\x20\x22\x43\x77\x28\x3e\xa5\x42\x5d\xec\x10\xab\x99\x17\xd1\x8c\xd1\x3d\x1b\xdf\x4a\x76\x9f\x37\x04\x4c\x84\xfa\xa2\xa4\x49\xc6\x89\xe0\x04\xc1\x4e\x00\x5c\x49\xda\x41\x06\xff\x75\xce\x13\x03\x36\x1c\x6e\x3e\x34\xcc\xfe\xe7\x5e\xe9\xc3\x1c\xbd\x06\xa4\xbc\xdb\xb4\x2f\xd6\x49\xbe\x4d\xfc\xd6\x64\x00\x6d\x6a\x5f\x61\x07\x7c\x04\xa6\xa8\x1d\xb3\x6b\xe8\x6b\xa4\x2c\x29\x51\xf0\x51\xae\xda\x64\xac\xea\x49\x6c\xb9\x24\x98\x2b\x9f\x7d\x23\x4a\xc9\x72\x3f\xef\x98\xa8\xe1\x27\x55\xe3\x26\xa5\x2f\xbe\x35\x85\x1f\x41\x1e\xeb\x86\x76\x06\xd4\x5b\x51\x3f\x54\x52\x63\x91\xc5\x54\x63\x5c\x18\x0b\x8f\xd0\xee\x45\x1a\xfc\x96\xe4\xef\xd3\x60\xb6\x1e\x6b\xaf\x03\xdd\x6d\x19\xba\x51\x5c\x31\xec\x1c\xdd\x3a\xff\xff\xdb\x27\x35\x4e\x3e\x6b\x56\xe9\xe1\xa1\xa1\xb7\xd4\xb5\x7d\x9d\x76\x89\xbb\x2f\xea\x6c\x8d\x3f\x9c\xe0\xdf\x2d\x9e\xe9\x19\xc4\x23\x0a\x1f\x20\xb8\x5d\xfe\xfe\x1e\xa3\xd7\xf7\x7d\xb4\x70\xe4\x02\x24\x29\xef\x60\x9b\x0f\xf4\x49\x46\x44\x0a\xcb\x44\xcd\x13\x44\x5b\xcf\xa3\xf2\x05\x03\xc2\x6c\x2f\xb6\x63\xc8\x90\x65\xfb\x93\x34\xa6\x03\xeb\x9a\xb7\x15\x2e\x62\x62\x92\x33\xc4\x4c\xb0\x0e\x77\x71\x6d\x9b\x72\xc8\x4f\xd1\xb3\x40\x63\x4f\xf1\xce\xa3\x47\x50\x15\x76\x10\x0e\xcb\x0f\xd1\xbb\x76\xae\x0d\xff\x1c\x2b\x09\x48\xeb\x71\xee\x2c\xc3\x1e\x79\xd3\x01\x5d\x72\xdb\xee\x22\x4a\x98\x0e\x0f\x95\xa6\x9f\x79\x3d\xa8\x3a\x2d\xaa\x56\xef\xe5\x7b\x2f\x8c\xea\xac\x9e\x55\xf4\x43\xca\x9e\x73\x2b\x48\xc7\x5f\xac\x21\xc3\x6f\xa7\x72\x73\xc3\xf3\x48\x35\xff\xd8\x3c\x96\xf0\x0a\xc6\xe8\x6c\xff\xed\x08\x15\x36\x46\xc1\xce\xa2\x23\xda\x9c\xa3\x60\xca\xb9\x7e\x03\xb2\xb6\xc8\xfb\xa7\xc1\x95\xa3\x9a\xe5\x2e\xb2\xee\x86\x43\x00\xae\x56\xa1\x0f\x54\x7f\x99\xa3\x16\x98\x72\x24\x9f\x97\x77\x4b\x17\x98\x93\x55\x36\xf2\xf5\xf0\x11\xce\x57\x61\x3a\x94\xfc\xb7\xe7\x28\x6a\x6d\x49\xc1\x0f\xd9\x29\xd7\x67\x1c\xbb\x8c\xf1\x7d\xfc\xad\x4b\x24\x85\xc3\xd8\xfd\x79\x12\x87\x21\xe5\x5d\x84\x80\x87\x63\xc2\xaf\xa9\xc5\x5e\x3b\x0c\xd7\xbf\x2f\x0a\x66\xb5\xe4\x67\xbe\xc5\xee\x89\xad\x57\x0b\x60\xf1\x88\xb3\xf7\xb4\xa5\x11\xff\x85\x93\x12\xde\xd0\x78\xd8\xd0\x09\x11\x34\xfd\x49\xbc\x79\x2d\x2d\x7d\x60\xb3\x04\x94\x1c\x7f\x23\x20\x6f\x99\xe8\x63\xb1\xe2\xd8\xc9\xec\xff\xd2\xff\x0a\x3a\x3c\x75\x49\x85\x61\x5a\x9a\x92\xed\xce\xad\x00\xfe\x0e\x05\x49\x3b\x19\x8d\x1f\x7c\x90\x08\x84\x46\xbb\xa4\x60\x38\xa7\x1f\x32\x65\x3b\x59\x12\xb2\x4f\x43\x13\x77\x48\xb7\x5a\xec\x2c\x15\xfe\x4b\xf5\xa6\xf8\x6b\x8a\x6c\xdd\x9c\x74\x47\xf2\xeb\xb0\xf4\x3b\x01\xca\x15\x23\xe0\xd4\x96\x24\x00\x06\xad\x7f\xff\xfa\xfe\x0d\xf5\x75\x4b\x34\x2c\xaf\xf3\x55\x5d\x72\xa2\x7d\x0b\x92\xca\x16\x67\x66\x5c\xec\x43\xbf\xb5\x83\x07\x7a\x9c\x17\x41\xfa\x49\x2c\xe3\xdc\x2c\x75\x29\xcd\xed\x81\xb8\x28\x1a\x3f\x37\x59\x48\xb8\xa7\xce\xd0\x96\xb2\xfa\xcc\x25\xe3\x90\x29\xe2\x21\xb6\x6a\x53\xd3\x97\x9e\x1f\x40\x5f\xd8\x8a\xfc\x06\xec\x6e\x43\x09\xdc\x85\xe6\x9d\x6e\xf2\xb4\xb4\x92\x66\x16\x4a\x9d\x9d\x1c\x31\xee\x39\x21\x12\x7b\x13\x38\x1b\xfb\x74\x0d\xd3\x8d\xc1\xc7\x31\x59\x21\xf9\xc2\xfe\x58\xb6\x1b\x63\x1a\x7d\x9f\xde\x2d\xd8\xa4\xbe\x3d\xed\x04\x90\xae\x3b\x83\x76\x79\x19\x55\xc1\xc4\xb4\xfe\xd0\x0b\x9f\x4c\x38\xab\x73\x50\xfc\x2e\x37\xa3\x15\x0c\x18\x16\x2b\x1f\xaf\x03\x37\x89\x4b\xc2\x3e\x74\xf5\x95\xe4\xbe\x33\x46\x6d\xea\xb3\x54\x58\xbe\x97\xb4\xf7\x56\x58\x97\xf0\x68\x52\xf7\x1c\x60\xfe\xf9\x10\x1d\x72\x6b\x72\xe0\x10\x2a\x97\xb2\xca\x52\x11\xe3\x80\x68\x34\xb0\xac\x1a\x7d\xf8\x7c\x2a\x07\x8d\xf2\x63\xef\x8b\xa4\x57\xdc\x89\x1b\x7f\x2e\x62\x78\x11\xab\x62\x2b\x99\x46\xf8\xc6\xb7\x31\xf2\x40\x78\xd1\x7b\x06\xb2\x00\xc3\x44\x7f\x80\x32\xaa\x3e\x7a\x24\x3e\xe4\x22\xdd\xa2\xe6\x52\xfd\x75\x71\x3a\xfb\xce\x8a\x59\xef\x85\x36\x65\x3a\x48\xdc\xf4\x2a\x70\xe7\x62\x1f\x9b\x28\x02\x40\x9b\xe1\xc1\xa6\x1f\x32\xe3\x67\x89\xa5\xc5\x05\x5e\x1a\x82\x68\xe9\xdc\x43\x8c\x2e\x15\x27"}, +{{0x0c,0x80,0x8b,0x06,0x6f,0x0c,0x8e,0x8d,0xbb,0x1c,0x23,0xd6,0xc2,0xce,0xdd,0x0b,0xe8,0x66,0xd8,0x42,0x5f,0x24,0x1a,0x92,0x85,0x70,0x0e,0xa5,0x45,0x36,0xcf,0x6d,},{0x44,0xee,0x72,0x90,0x04,0x50,0xc5,0x6a,0xb2,0x1f,0x26,0x86,0xd2,0x95,0x25,0xd0,0x66,0x3e,0x0b,0xdd,0x87,0x72,0x5b,0xea,0xc5,0xd6,0x8b,0xac,0xeb,0x69,0xf1,0xd2,},{0x38,0xc6,0x82,0xce,0xde,0xfb,0x13,0xe4,0x6b,0x11,0xf7,0xb5,0xf8,0x00,0xcc,0x81,0x20,0xd4,0x5a,0x83,0xcd,0x8d,0x8d,0xec,0x10,0xc5,0x77,0xbb,0x01,0x53,0xd5,0x09,0xba,0x4f,0xdf,0x40,0x09,0x98,0x78,0x8b,0x70,0x60,0x07,0xce,0x16,0x2b,0x96,0x94,0x5c,0x71,0x40,0xbe,0xee,0x74,0xe1,0x9d,0x07,0x43,0xaf,0xa4,0xec,0xfd,0x25,0x0a,},"\xc9\x45\x71\x41\x00\x58\x1f\x4e\x24\xda\x11\xfc\x0f\x6c\x6d\x02\x10\x43\x3f\x97\x77\x52\x51\x24\xc5\x5e\xe0\x72\xd8\x5d\x79\x8b\x70\x5f\x9d\x31\xc8\xf9\x77\xdb\x6e\xdf\xb7\xa6\x5c\x78\xad\x2d\x7d\x31\xd6\xb7\xb5\xbe\x40\xff\x11\x78\xd3\x03\xb6\x83\x9b\xb0\xc6\x32\x10\xc1\xd3\x38\xc1\x03\xaf\xa0\xd4\x53\xec\xa1\xbc\xa2\x77\xd9\x30\x77\x8a\xd5\x08\x02\x27\x2f\x03\xdb\xe2\x18\x4f\xc3\x1e\xf8\xea\x6a\xbe\x21\x69\x97\x19\x9f\x7c\x1b\x33\x77\x37\x96\x89\x07\x27\x2a\xa5\x1b\xd4\x9c\x07\x38\x9c\x95\x46\x8c\xef\x4f\xd9\x9a\xe7\x8c\xa4\x54\x2a\x2b\xbc\x0e\x8a\xa9\x52\x14\xad\x1c\xff\xf9\xd5\x08\x5a\x43\x43\x94\x47\x3b\x84\xb7\x4b\xe9\xbf\x2f\x02\x02\xad\x1e\xe4\x61\x66\x04\xca\x1d\xd7\x5f\x4a\x19\x53\x42\xeb\xbf\x8f\xc5\x9f\x3f\x79\x61\x65\x54\xdc\x7b\xfd\xd5\x56\xbe\x43\x72\x21\xc1\x0b\xfa\xd3\x9e\x11\x9e\x06\x04\x5b\xe5\xfe\xd6\x83\xd3\x53\x4f\xb6\xcf\xed\x33\x89\x1c\x96\xf9\xc3\x30\xf2\x8b\x68\x4f\x8f\xba\xd4\x7c\x01\x41\x8e\xab\x6c\xee\xcc\x2e\xd7\x77\xf4\xc2\x18\xa2\x7a\xc2\x25\x82\x39\x23\x15\xc5\x3a\xa7\x30\x9e\xc5\x4c\x61\x75\x23\x6e\x44\x24\xdc\x97\x84\x65\xab\x62\x8d\x95\x44\xb0\xbe\x84\x10\x3e\xb5\x6f\x1b\xaf\xe5\xe5\xea\xed\x04\xc9\x8b\xfe\x2e\x8a\x24\x18\xc6\xc5\x2a\x61\xea\xce\x85\x23\x6b\x66\xc7\xb3\xb8\x70\x7e\xd5\x56\x41\xdd\x9d\x5d\xa9\x7c\x99\xc1\x1c\xbe\xb9\xaa\x2d\xb1\x47\x82\x0d\xc7\x24\x80\x0a\x9d\x80\xf5\x05\xfa\x5a\xf2\x09\x21\xca\xd2\x43\x56\x83\xbb\x4f\xc6\x0b\xdd\xd4\x75\xf8\x63\xe2\xf5\x95\x0d\x23\x63\x99\xd8\xd7\x5b\x40\x4b\x39\x4a\x54\x67\x37\xf9\x3a\x62\x40\x87\x00\xb3\xab\x3c\x1e\x92\x2b\x1a\x85\x9a\x29\x15\xc2\xd3\x53\x68\x81\x5c\xd4\x5b\x85\xb2\xac\x08\x31\x21\xff\x00\x0f\x05\x0d\xcd\xf4\x15\xe5\x27\x5a\x5c\x42\xda\xe3\xb1\x54\x00\xf3\xdd\xaf\x93\x39\xf2\x0a\x12\x61\xa8\x8c\xd9\x02\x05\x63\x97\x63\x21\x11\x52\xdf\x41\x4a\x9a\x6a\x62\x18\xf5\x6b\x35\xa2\xde\x9e\x84\x82\x44\x9f\x6d\xa7\x7c\x9e\x3d\x4a\xf0\x49\x30\x15\xa7\x26\x21\x7f\x82\xac\x58\x95\x4f\xe3\xe2\xe3\x44\x40\x35\x6b\x11\x2e\x06\xa6\xf6\x71\xfb\x5a\x6e\xf4\x61\x9a\x6e\xa7\xb4\xe0\x4d\xb3\x75\x7f\xb6\x64\xc3\x96\xb3\x41\xca\x89\x00\x1d\xc1\x60\x4b\x51\xfa\x91\x53\xf9\x13\x0c\x10\x20\xff\x88\x90\x92\x87\x82\x3a\xb3\x91\x5c\xcc\x85\xc4\xe3\x5d\xf6\xc2\xf8\xe6\xf9\x02\xbe\x82\xba\x21\x29\x7f\xd3\x83\x5a\xff\x5c\xe0\x2f\x3c\x07\xdc\x09\x3f\xcb\x1a\xba\x26\xe0\x6d\xfe\x6f\x02\xdf\x79\x29\x1a\xac\xa0\x69\xec\xab\x93\x81\x40\x4c\x9c\x3e\xa1\xad\x40\x9a\xdf\x29\x2a\x91\xe3\xa5\x82\xd5\xa7\xb6\x8f\xfb\xe1\x0a\x03\x05\x24\x8e\x09\x67\xe6\xdf\x37\x2f\x28\x1b\xd1\x92\xe1\x39\x97\x9c\x98\x66\xca\x8f\xe1\xe1\x0e\x06\x16\xdc\x2d\x4f\x85\xe1\x19\xe0\xcb\x4b\xfe\x8c\xc3\x1d\x9f\x5c\x01\x8b\x65\x40\x85\x24\x00\x0a\x30\x16\xa2\x3d\x99\x14\xd5\x7e\x95\x55\x76\xe2\x66\x0b\x0e\x0d\x96\xc8\x49\x5a\x12\xc3\xd7\x31\x22\xd2\x00\xb0\xf0\xe5\xeb\xd4\x46\x56\x2b\x08\xf4\x79\x34\xab\x49\x9a\x96\x99\x1d\xcf\x99\xc9\x6a\x62\x88\x07\x39\x84\x5d\x29\x82\x01\x50\x55\x3e\xae\x9b\xe0\xbb\x41\xd5\x3d\x3a\xf0\x1d\x98\x67\xbb\x47\x32\xc9\x0b\xf6\xe1\x37\x31\x6e\x3b\x1e\xdc\xc2\x09\xa8\xa0\x9f\xb0\x62\xa6\xef\x05\xf3\x7e\x57\xf2\xc5\xd1\xd0\xca\xba\xf0\x7a\x8e\xd7\xd4\x14\x55\x40\x7b\x09\x67\x54\x18\x0a\xa9\x6d\x3d\x96\x59\x19\x45\xdd\x7a\x10\x40\xa2\xde\x60\xd8\xe1\xc0\x54\xf7\x85\x46\x52\xb7\x32\xe7\xa8\xf5\xb6\x47\x4c\x3b\xaa\x18\x40\xfb\xe8\x1b\x1e\x6b\x54\xe2\x01\xef\x0b\xc8\xd0\xf2\x13\xd7\xce\xc1\xd8\x24\xd2\x22\x09\xac\x72\x52\x5a\x64\xb9\x03\xe7\x73\xb8\x3f\x1b\x68\xf6\x40\x27\x9f\x15\x05\x3d\x21\xec\x15\xce\x2f\xf7\x59\x22\x17\x6b\x75\x84\xa1\x6b\xf1\xa1\xf0\xd6\x36\xb7\x94\x2a\x3d\x61\x86\x2f\x6f\xd1\x30\x99\x72\xd3\x14\x1e\xb7\x69\x31\x4c\xa9\x75\xd0\x20\xbf\x02\xbf\xdd\xf1\x7d\x14\xb6\x0e\xb7\x86\xbf\x9f\x55\x98\x9f\xe4\x73\x32\x0d\x44\x29\x67\x7e\x30\x1c\x68\x26\x33\xf8\x13\xff\x26\xc0\xa3\xda\x92\xf6\xd0\x68\x06\x16\x10\x5b\x04\x25\xaf\x33\x8c\x2e\xa6\x15\x3b\xdd\x52\x16\xfa\xe2\xaf\xe4\x61\xe9\x24\x9c\x05\xe3\x2f\x76\xad\x7c\x42\x9d\x92\x53\x4b\x68\x6d\xd1"}, +{{0x04,0x9d,0xac,0x3c,0x97,0x7d,0x9d,0xf5,0x03,0x49,0x6b,0x43,0xd7,0x6e,0x55,0x40,0xe3,0x15,0x00,0x1a,0xd5,0x7f,0x15,0xea,0x9f,0x08,0x70,0xca,0xd2,0xd4,0xf9,0xe9,},{0xfc,0x6f,0x4b,0x7e,0xb3,0x9a,0x71,0x16,0x80,0xf9,0x66,0xd4,0x68,0xa6,0x1a,0xbb,0x13,0xa9,0xb6,0x44,0x9b,0xb9,0x9f,0xda,0x3d,0x12,0xce,0x1b,0x50,0x6d,0x1b,0x4b,},{0x75,0x32,0xd1,0xa6,0x1a,0x98,0x1f,0x30,0x3d,0x7c,0x24,0x54,0x35,0x4f,0x99,0x54,0x0c,0xd4,0x84,0xcd,0xe9,0xab,0x33,0x7d,0x6f,0x7b,0x51,0xf1,0x79,0x22,0x0f,0x7f,0xa2,0x07,0x34,0x76,0xb4,0x1c,0x71,0x52,0x9f,0x98,0x36,0xdb,0x6b,0x1d,0x0f,0x5a,0x48,0x2b,0xbb,0x4c,0x68,0x36,0x61,0x76,0xed,0x14,0xd4,0xd8,0xee,0xfa,0xde,0x0d,},"\x7f\x31\xe3\x46\xf6\x8d\xa7\x37\x16\xaa\xcb\x16\xee\xa1\x9b\xb2\x41\x42\xdc\x28\x3e\x72\x63\xff\xc3\xf7\x04\xa2\x2a\xe5\x27\x5a\x0e\xf9\x5f\x06\x69\xba\xe5\xa5\x4c\x7f\xeb\x84\xbc\x74\x87\x3c\xca\x0f\x33\x5d\x6c\xff\x3d\x8b\x4a\x20\x05\x6c\x64\xf5\xe8\x82\xcb\xbb\xd2\xac\x74\x20\x76\x76\x46\x7e\x54\x66\xdd\xd5\x6a\xed\xf5\x6e\x09\x7c\x7f\x59\xd9\x45\x91\x5e\xb0\xeb\xd0\xc3\xc8\x3d\x48\x88\x8d\x3e\x9e\xde\x51\xad\x2d\xd8\xa0\xee\x1e\xab\x4c\xf8\x7f\xfa\x78\x63\x5a\xfc\x4d\x6e\xf3\xe8\x7d\xda\x3b\x65\x56\x5c\x29\x85\xa4\xad\x0a\xcf\xdf\xb8\x1c\xb0\xe6\x1c\x67\x82\x6a\x6e\xa0\xbe\xd4\xc0\x8a\xa1\xa5\x41\xde\x60\x45\x87\x04\xac\x21\xca\x12\xf1\xc8\x11\x8b\xb3\x09\x2c\x35\xa4\x0c\x92\x1e\x68\x45\x64\x56\x2c\x2c\x10\x49\xdc\xdc\x2b\x8d\x6a\x97\xe3\x56\x7d\x35\x6b\xff\xb5\x69\x2a\x41\xd8\x9d\xdd\xa0\xec\x35\x52\x15\x2a\x27\x57\x7f\x1c\xce\x57\xd0\x09\x86\xdc\xa7\x7e\xdf\x5e\x25\x18\x15\x82\x00\xad\xf6\x90\xaf\xfb\x31\xaa\xf2\xb5\x74\x83\x68\x39\x44\x09\x99\xf1\x57\x91\xce\xa8\x53\x42\xac\x94\xa9\x6c\x7a\xf7\xa1\x9e\x49\x43\x10\xae\x26\x67\x5f\x43\xc3\x52\x58\xe8\x5b\x68\x40\xb9\x9c\x6b\x09\xcf\xa5\x8d\x19\xf1\xe4\x3a\x77\xe3\x97\xb0\x8c\x0d\xb1\x83\x0b\xca\x67\xb3\x9e\xcd\x87\x52\xda\x61\x1e\x08\x32\xc6\xca\xe7\xbb\x8c\xe7\x4a\x82\xe7\xe7\x33\x0b\xe5\x06\x2e\xd0\x5a\xa5\xc8\x44\x57\xb0\x07\xfb\x5c\xcd\xc2\x0a\x55\xd5\x4d\x8e\x04\x09\xc8\xbd\x83\x88\x3d\x2e\x02\x9d\xff\x26\xea\x5d\xb2\x75\xdc\xe0\x99\xe4\x18\x65\x9a\x04\x00\xf1\x3b\xe9\xff\xdc\x14\xe7\xd6\x45\xa9\x46\x77\xca\x84\x69\x70\xb7\xe6\xac\x52\x7f\xa0\x09\xa3\x59\x45\x4b\x3c\x49\x36\x49\x05\x18\x9f\xb4\x9c\x9b\xac\xb6\x50\xc0\x3c\xd8\x28\x75\x89\x4e\x35\x46\xba\x03\xc3\x2e\x33\x6f\xc6\x51\x6a\x87\x67\x6c\x50\xd5\xb8\x0b\x30\x54\x27\x3b\x15\x7c\x5d\x76\x75\x14\xe5\x45\x74\xb8\xa1\x01\x98\x5a\x8e\x96\x7e\x95\xda\x8f\x92\x98\x00\x26\x0e\x08\x14\x8b\xee\xe2\xd7\x78\x1e\x9e\x85\xd4\x63\xa9\x4f\xfe\xfd\xbb\x75\xc2\x8f\xa8\x89\x80\x15\x68\x09\x99\x42\x9c\xee\x79\x8b\x3f\xd2\xd9\x67\x37\x86\x8a\x26\x3f\xba\x9f\xb6\xf4\xaa\xd5\x6a\x15\xc6\x41\x2f\xf8\x5e\x7d\x37\x52\x10\x2d\xaa\xf2\x5e\x74\x5f\xa5\xf6\xf1\x74\xa2\x31\xfc\xce\x86\x24\xdd\x70\x85\x6f\x9b\xab\xcc\x20\x91\x44\xff\x68\x64\x64\x8d\xea\x0d\x68\x84\x56\x6a\x4c\x39\x14\x78\x05\xbe\x08\x4e\x47\x40\xbc\x50\x93\x09\xbc\xb1\x42\x96\x4b\xb0\xcf\xcf\x67\x26\xa0\xe0\x4b\xbf\x32\xae\x68\x34\x73\x2b\xda\x03\x84\xce\xa8\xf4\xa4\x84\x9b\xba\x0d\x18\x64\x6c\x1c\x34\x47\x18\x96\xb5\xbe\xf1\x49\xf8\xca\xb9\xec\x83\x72\x2b\x0f\xb2\x09\xef\xe8\xa0\x4c\x4a\x23\x5d\xc8\xdd\xb2\x0a\xcd\x92\x76\x5a\xfb\xf3\x05\x87\x40\xea\x70\xb9\xc1\x0d\x9c\x5a\xef\x86\x06\x29\x8f\xe4\x15\x15\x93\xb2\x1f\x79\x7d\x92\xae\x9f\x1e\x08\x81\xb0\xd2\x71\xb0\xd5\xb1\x0c\x6e\xd8\x3c\x34\x9e\xc2\x47\x3f\xbf\x2f\xf7\x80\xdc\xd0\x76\xd8\xcf\x0a\xea\xfa\x71\xfe\x2b\x8c\x51\x28\x01\x5f\x8f\xbb\xcf\xec\xd5\x28\x1c\xd5\xea\xcb\x6f\xe9\xac\x6e\xaa\x6e\x47\xd6\x67\xb9\xad\x4b\x7e\x41\x1e\x6c\xb7\x46\x3d\x56\x76\x07\xaf\xbf\xd0\x41\x8c\x4e\xb0\x6a\xfe\x84\x7f\x5e\x40\xb4\x99\x44\x38\x28\xd5\xa2\x73\xa4\xa8\x7e\x46\xde\xf2\x1a\x91\x9d\x73\x86\x3a\xf0\x05\x4a\x09\x9e\x3a\xdc\x54\x50\xb8\xe3\x2f\x51\xea\x52\xc5\x99\xa4\xa2\xa3\x53\x51\x78\x8a\xf7\xcb\x71\xe5\xc4\x4b\xcb\x8d\xf5\x4a\x60\x1e\x6e\xc2\xc1\x82\x8b\x48\xc4\xb1\xae\x44\x63\x10\x6f\x10\xef\xa5\xca\xf3\x09\x1a\xbf\x99\xaa\xba\x52\x52\xf4\x84\xd3\xbb\xc6\x2b\xfa\x6b\x2a\x80\x6d\x23\xc6\x33\x1a\x62\xfc\x46\xbc\x62\x76\x79\xe7\x3e\xc8\x2d\xcc\x08\xf7\x91\x43\xf4\xb7\x1e\xcf\x35\x7e\xa2\xf0\xd7\x4e\x6d\x30\x58\xe6\x06\x04\x3f\x6e\x8f\xed\x70\x42\x82\xc1\x6b\x1f\x98\x8f\xfa\x36\x5c\xfa\xe9\xa3\xcf\x79\x2e\x0c\x5b\xaa\xd7\x0c\xa7\xe2\x57\x76\x01\x8b\x5e\x7f\x0e\x95\x44\xe1\xd7\x3f\x3e\x5d\x1e\x41\x6a\x5e\x50\xfb\xed\x29\x6d\xc1\xbf\x4b\x29\xa3\xfb\xe3\x2e\xfb\xd7\xe9\x9c\x83\x01\x5d\x27\xf5\x35\xad\xec\xf1\x75\xfc\x36\xc1\xea\x4f\x44\x23\xb3\x6d\xcd\xc0\x54\xba\x99\x32\x78\xe8\x5a\xc3\x62\x2d\x43\x5f\x52\x37\xba\x61\xb4\x9a"}, +{{0xf0,0x7d,0x61,0xb5,0xca,0x1c,0x27,0x00,0xcb,0x50,0xf9,0x00,0xc2,0x6b,0x7c,0x28,0xf6,0xc6,0x94,0x08,0x08,0xc7,0xba,0xff,0xf7,0x4f,0xca,0x4b,0x11,0xf4,0x25,0xd4,},{0xeb,0x24,0x3d,0xfa,0xcc,0x2d,0xc6,0x43,0x57,0x76,0xd5,0x54,0xec,0xed,0x8b,0xf9,0x23,0x90,0x60,0x4b,0x35,0x55,0x7c,0xda,0x51,0xfd,0x20,0x3e,0xdd,0xb4,0x93,0xfa,},{0xc1,0x9b,0x53,0x2b,0x82,0x48,0x56,0x39,0x32,0x63,0x97,0x01,0xbf,0x15,0xbc,0x01,0x5f,0xae,0xbb,0x17,0xbb,0x98,0xd8,0x71,0x61,0x6e,0x10,0x48,0xd6,0x4c,0xa5,0xf9,0x55,0xf5,0x58,0xf6,0x3b,0x53,0x53,0xa1,0x57,0x6f,0xa1,0xac,0xae,0xf3,0x9b,0xcb,0xc9,0x02,0x17,0x56,0xdf,0x5d,0x1a,0xb3,0xbc,0x74,0x1a,0xcc,0xf9,0x05,0x9b,0x04,},"\xc1\xc6\x78\x43\xd6\x9a\x0e\x62\xe7\xbf\x71\xf9\x02\x06\xa3\xd5\x59\x5c\xa3\xc4\x82\xaa\xa7\x67\xe9\x31\xb0\xd6\xc2\xf4\x75\x2a\xb8\x69\x91\xf0\x35\x83\xbb\x13\x8e\x9f\x72\xfa\xb5\x8f\xd6\x02\xa4\xb6\xb2\x96\x02\xcf\x89\x14\x08\xaf\x5a\x1b\xfd\x33\x98\xc0\x17\x8c\x44\x14\x61\xe3\xf4\x9b\xc8\x1d\x64\xc0\xd9\x7f\x5d\xed\x69\x2c\x75\xd4\xd6\x4d\xac\x5d\x80\xd6\x3b\xd4\xdc\x52\x10\xc1\xd9\x35\x0b\x14\x2b\xa6\xe7\x68\xf1\x50\x80\x7a\xb8\xa8\x6c\xac\xdb\x59\xd8\x4d\xdf\x66\x0b\xe5\x62\x03\xc0\x14\xfb\xa1\xe0\xdc\x16\xfa\x6d\x32\x69\x4e\x14\xb1\x28\xed\xd1\xf6\xc6\xab\x44\x5a\x3a\xd3\x41\x74\xfa\x9e\x4b\x01\xf2\x5b\x1d\x5e\x6e\xb7\x69\x83\xb4\x29\x5c\xe4\x91\x4d\x3a\xe4\x8c\x70\x4a\x30\xe5\x54\xfc\x1f\x86\x8b\x62\x72\xef\xf0\x6d\xa2\x4b\xfe\x17\xe4\xe0\xf0\xfa\x46\xbb\x08\xff\xb9\x07\xcb\x61\xbe\xbe\x52\xdf\x31\x1a\x64\xcb\x57\x8b\x30\xfd\x62\x7d\xf1\x12\x21\xae\x40\x03\xa0\xb0\xc6\x8e\x3c\x6f\x95\xa2\x1c\x85\x00\xd4\x1b\x2c\x58\x9c\xc4\x6a\x13\x9c\xac\xff\x57\xdc\xf0\x07\x59\xf5\x2e\x9c\xa3\xda\xbd\xb1\x78\x8a\xb6\xb3\x8a\x50\x48\xf5\x8e\x08\xe0\x5c\x39\x4f\x9d\x3c\x72\x11\x3d\x45\x2b\x70\x84\xc5\x19\xf8\x6c\x16\x89\xff\xdb\xae\x50\x6e\xd8\x45\x05\x22\xcb\xe4\x3d\xe2\x7a\xa3\xbf\xdd\x92\xa9\x1b\x71\xe5\x2a\x3c\xbf\x77\xc1\xbd\x28\x93\xea\xbd\x40\x7a\x57\xfe\x5e\x14\x68\x73\xbf\xb2\x04\x3f\x4a\x61\x47\xdf\x08\x3e\x54\xa2\x20\x8d\x19\x25\x81\x3f\xa4\x04\xe4\xc4\x74\x06\xe7\x72\x86\x43\xeb\xfb\x0b\x10\x14\x2f\x90\x9e\xf8\x56\xfd\x3a\x91\x6b\xc0\x85\x15\x43\xb8\x2a\x55\xf8\xcd\x52\x9b\xd2\x1d\x9e\x29\x09\xd6\xd7\xe7\x7b\xdc\xea\x46\x73\xe5\x45\xff\x4a\x67\xfa\x37\xd6\x5f\x1f\x63\xf1\x1d\x5d\x0d\x55\x97\x4a\x30\xab\xe1\x88\x33\x5d\xb5\xdc\xbd\x35\x66\x58\xf9\xb7\x76\x82\xd9\x6d\xab\xb2\x58\xea\x95\x95\x1a\x05\x59\xae\xa4\x06\x4d\x5e\xa1\x68\x05\x01\xdc\xb4\x22\x8f\x2c\x95\x6f\x81\xd2\x10\x11\x44\xaf\x74\xc7\x16\xbc\x8b\xf4\x29\x6d\xc3\xb8\x31\x72\x5c\xc1\x7d\x3b\xfd\x90\x66\xa2\x99\x53\xb2\xec\xd7\x50\x59\x43\x5b\x49\xa2\x5a\xc5\x25\xb4\xfb\xab\x17\x79\x02\x2d\xfb\x6d\xe5\x25\x14\x9d\xcd\x90\x2a\xc8\xa7\xe2\x1f\x34\x4f\x5f\x01\x01\x48\x06\x92\xd6\x16\x08\x95\x2c\x71\x41\x3e\x30\x03\x79\x45\xe2\x06\xc5\xee\xad\xfc\x3e\xdc\x4b\xae\x0d\x79\x6c\xa0\xc5\xf5\x6d\x6f\xfb\x3f\x09\x69\xdf\x9d\xf8\xa7\x94\xf5\xdc\x83\xa3\xb2\xf5\xc3\xab\x36\xbb\x90\x1b\xcc\x31\x55\x1c\x55\x0c\x63\xfa\x41\xd6\xa8\xd5\x7b\xdb\x9b\x5c\x65\xbc\x61\x0c\x3a\x98\x97\x52\xab\x28\xa0\x15\xe7\xc2\xf6\xb2\xfb\xf1\x99\xa7\x6b\x97\x50\xc0\xd3\xd5\x92\x11\x9c\x8b\x40\x22\xfa\x45\xba\xde\x2f\xbb\x41\x43\x26\x79\xb5\x2a\xcb\x46\x08\xa9\x5c\x34\xaa\x40\xbf\xfe\xc1\x0b\xc9\x8f\x47\x29\xdf\xcc\xb6\x50\xb2\xa0\x52\xdf\xb0\x68\x95\x9e\x64\x8a\x92\xd5\xaa\x4d\xd2\xd1\x7d\xde\x67\xcd\xf2\xe6\x37\x7a\xf0\xd4\xae\x37\x96\x07\x38\x9d\x7e\x35\x96\x44\x1b\x9f\x42\x22\xcf\xf6\xaf\x73\xb3\x30\x02\x70\xce\x54\x80\x0b\xd9\x34\xa9\x10\x9a\x02\x56\x3a\xdc\x56\xae\x46\x58\x44\x51\xcd\xaf\x4a\x77\x53\x81\x57\xe5\x87\x0f\x4a\xe1\x2d\xbc\x81\x87\x0f\x5d\xb4\x1a\x2c\xb5\x5e\x00\xdb\x3d\x22\x31\x62\x8f\x17\x27\xc3\xac\xb9\x9e\xd3\xac\xd8\xb6\x71\x56\xa8\x00\x5a\x4c\xc8\xf3\xd3\x55\x5b\x79\xa0\x37\x73\xa9\x31\xf1\x4e\xeb\xce\x40\xb9\xfe\x46\xed\xe5\xda\x08\x81\xfb\x22\x07\x17\xe4\x18\xe8\xb5\xa0\xfe\x5e\x47\x7e\x72\x85\xc5\x54\xe8\x59\xe1\x64\x41\x67\x2b\x48\x99\x34\xa3\xa9\xee\xb8\x8d\x78\xfc\xc5\xc1\xdb\x2d\x1f\xbd\xde\x39\x27\x73\xf6\xc9\x39\x97\x2e\xe8\xfa\x31\x89\xf4\xe9\x87\x2b\x4a\xbd\xc8\x3b\x37\x9c\x0c\x10\xe8\x18\xdc\xff\x75\xc8\x3d\x68\x70\x72\x92\x84\xce\xd4\x1f\x2f\xf5\x5a\x87\xc9\x60\xe6\x3d\x12\x11\xf0\x80\x71\x29\x3f\x6a\xc6\x3f\x9b\xde\xf3\x8f\xd5\x91\x9c\xa9\x0b\x3f\x5e\x25\xa6\xc0\xc6\x64\xc4\xec\xf8\x31\xc6\x4e\x2d\x4c\x6e\x79\x8a\x98\xa3\xa0\xf7\xbe\x7a\x24\x63\xea\xda\xa6\xa2\xa3\x48\xf9\xa4\x94\x71\x71\x23\xcc\x0a\x28\xc0\xa5\xea\xe3\xf5\xb5\x85\xf2\xcb\x8c\xb2\x60\xc2\xc5\x03\xe4\x15\x78\x57\x3c\xd9\xb7\xcb\xa1\x40\x8d\xca\x9d\x86\x0a\xe4\xf8\xc3\xd3\xf3\x22\xa4\x5b\x58\xa2\xc4"}, +{{0x50,0x86,0x4a,0x75,0xaa,0x0c,0x69,0xb5,0x93,0x50,0x07,0x7c,0x20,0x4b,0x20,0x75,0x7f,0x2b,0x8b,0x68,0x55,0xc3,0x7e,0xd7,0x21,0xb4,0x9f,0x2a,0xc9,0x17,0xd6,0xb2,},{0xcf,0xf3,0xeb,0xd5,0xea,0x0c,0x8b,0x55,0x31,0xd9,0x21,0x1e,0x22,0x19,0xe4,0xcf,0xe5,0xde,0xd9,0x91,0xd8,0xec,0x42,0x4d,0xf5,0x4c,0xf5,0x3c,0x83,0x76,0xf9,0xbd,},{0x17,0x74,0x55,0xa7,0x16,0x94,0xf1,0x2b,0x76,0x2f,0xd1,0x7e,0x08,0xbd,0xf0,0x10,0xa7,0xfc,0x91,0xd1,0x91,0x41,0xd7,0xae,0x23,0x99,0xbd,0x24,0x1a,0x99,0x8a,0x6a,0x50,0xa9,0x72,0x2a,0xc1,0x23,0x2c,0x59,0xe4,0xe2,0xaa,0xa8,0x28,0x07,0x8b,0x2b,0x92,0xf4,0xa5,0x4c,0xdf,0x0e,0xfe,0xbb,0xa2,0xc1,0x6d,0xbe,0xaf,0x07,0x22,0x03,},"\xb3\x65\xf4\x76\xac\x92\xe7\x60\x12\xa7\xff\xd8\x78\x2a\xf1\x5a\x3f\x5e\xe1\x47\xf6\x03\xa3\x67\xad\xf2\xf9\x72\x46\x13\xe8\x76\x5b\x03\x7a\xc0\xeb\x1f\x67\x37\x36\xe1\x13\x63\xe3\x52\xed\x5a\xe9\xeb\x5a\x67\x12\x5e\xd8\x18\x90\x03\x42\xae\x93\x37\x1c\x43\x3b\x91\xf6\x02\x1d\x4b\xe2\xa0\x52\xb0\xda\x43\xb3\x68\x2e\x7f\x74\x0a\xe8\x01\xd0\x54\x10\x57\x85\x8e\xb0\xc9\xc2\x8d\x98\xf0\x3b\x45\xe1\x28\xaa\xa3\x42\xc6\xb6\x02\x77\x67\x92\xaa\x81\x24\x1c\xad\x06\xf1\x33\x8f\xa0\xc7\x17\x57\x18\x0f\x58\x8c\x83\x01\xd9\x1c\x27\x67\x9b\x50\x21\xcd\x75\xd7\xf6\x17\x1e\xe9\xf8\xd5\x6e\x43\x77\x67\x98\x12\xf6\xec\x5e\xd4\x65\x38\xca\xed\x50\x0c\x1d\x15\xf5\xfc\x86\xea\xf9\xed\x9c\xf9\xa0\x60\x6b\x22\x61\x4f\xaf\x67\x64\x62\x13\x4e\x3d\xb3\x58\x23\x32\xb4\x83\xdf\xa5\x4c\xa2\x9a\x5e\xb0\xd6\xba\xe3\x38\x0e\x19\xd0\x60\x11\x34\x53\xf3\x2b\xba\xb7\xe1\x18\x62\x7b\x40\xbc\xab\xf1\x71\x1b\xcf\xea\xb8\x95\x7d\xe3\x39\x43\x6c\x70\x88\xbb\x88\x31\x01\x53\x9a\x09\xd3\xbe\xf0\x88\xfc\x1f\x84\x07\x64\x03\x6f\xfb\xb3\x3d\xec\xd1\x2a\xac\x57\xfd\x26\xf8\x48\x23\xe1\x95\x53\xd4\xd6\x7e\x00\x0e\x94\x36\xca\x32\x3d\xe0\x99\xbc\x1c\xe7\x5e\xbf\x5d\xdc\xcb\x44\x8c\xd7\xa2\xe4\xbb\xd6\xb3\x2e\x3f\x20\x24\xf9\x6c\xc5\xc7\x15\x2b\x8b\xe8\xed\x0b\xd8\xe4\x36\xd3\x24\xd1\xce\x1d\xd3\xcf\xcc\x45\x2a\x28\xc7\x3a\x95\xaf\x84\x82\xaa\x77\x2a\xe5\x3d\x5b\xe1\x29\x2e\x39\xd1\x71\x6b\x43\x75\x8f\xe5\x63\xc8\xaa\x3b\x74\xbb\xa5\xc0\x2d\x04\x77\x8d\x91\xe3\xd4\x3d\xcc\x72\xbb\x7c\x7b\x04\x3c\x05\xc8\x74\x5b\x70\x5e\xe7\x5b\x5a\x4e\xc7\xb9\x5b\x65\x43\x59\xfb\x5e\x85\x33\x38\x21\x98\x51\xd4\x0a\x8a\xfb\xb4\xf9\x1e\xcb\xb4\x1e\xb8\x15\x34\x19\x6c\xc0\xcc\x9d\x3e\xb7\x14\x39\x6c\xaf\x04\x5b\x23\x17\x22\xd4\x48\x65\x03\x64\x04\x19\x98\x84\x80\xa7\x81\x58\x08\xbe\x97\x42\x87\x37\x2c\xfc\x48\x99\x65\xaa\xc5\xb8\x09\x5c\x63\x75\x81\xeb\x91\x0f\x90\x55\xcd\x1c\x0a\x0a\x3b\x0b\x33\xac\xa9\x0f\x7c\x5b\x8e\x6e\xf6\x83\xab\xf0\xce\x53\xae\xba\x51\xbe\xc4\xfc\x7b\x42\x7a\x23\x47\x36\x0f\xca\x86\x36\xd3\xf1\x46\x92\x84\xf2\x69\xa9\xab\xf0\xcb\x1a\x24\x4a\x15\xd6\xb4\x04\x65\xe7\x5c\xf8\x90\x92\x47\x4a\x8b\xed\xa0\x33\x39\x1d\xd3\x11\xc4\x99\x51\x9a\x08\xc4\xf0\x34\xe7\x19\x18\xd7\xca\xd4\x18\x45\x32\x7c\x89\xe7\xb1\xe9\x4a\xfb\x07\x23\x78\x2c\xe5\xc5\x53\xef\x36\x79\x1b\xba\x63\xde\x17\xd7\x46\x49\x18\x94\x01\x2c\xeb\xd8\x7b\x18\x37\xa8\x21\xef\x5c\x62\x4b\xbc\x84\xcc\x50\x35\xf5\xe7\x0c\xd9\xf2\x1b\x42\x21\x9a\x2d\xce\x30\xe0\xe6\x5c\x25\x0d\x0d\x19\x4d\x2b\x52\x48\x6b\x03\xee\x66\x33\x29\x81\xa5\x22\x51\x74\xdb\x17\xe5\xa8\xbb\x4a\x10\xed\x9c\x8a\x44\x5c\x41\x44\x2f\x3b\xcd\xb6\xb4\xf4\x9e\x4e\x1d\xc8\x76\x61\xa7\xb6\xe4\x1f\x35\xf5\x5d\xd6\x7b\xd4\xcb\xc6\xff\x58\xbf\xbf\xfa\xff\xd2\xc3\x82\xfc\xad\x0c\xae\x8f\x0d\xf9\xaf\x6a\xcf\x09\x40\x00\x76\x18\xa5\x4a\xee\x31\xd9\x32\xcb\xd8\xe8\xb4\x1c\xa0\x38\x21\xc4\x28\xa0\xef\x8e\x58\xd2\x43\x5e\xec\xd5\x03\xc5\x4d\xa9\xc1\x62\x8f\x3c\x74\x9b\x77\x05\x19\xf5\x3b\xf2\xd5\x7e\xd7\x12\xd0\x75\xd3\x73\x37\xb7\x7a\x2b\x10\xa7\x2d\x2d\x59\x0c\x20\xd5\xce\xc2\xca\xcc\x6c\x3a\x8d\xc1\x13\xe2\xd1\x6e\xf2\xd1\xb3\x90\xed\x96\xe4\x03\x6a\xcd\x30\x4e\x0c\x7c\xef\x9d\x43\x1f\x88\x21\x8a\xa1\xf8\x38\x28\xdd\xa6\x36\xb9\x4a\xa7\x61\xc7\x31\x7e\xcf\x11\x6c\xbf\xc6\x11\xe5\xba\x6d\x94\xc5\x0e\x99\x46\x93\x02\x3b\xdf\x2d\x24\x8e\xd6\x03\xf8\x5b\xe7\x3a\x00\x08\xb7\x5a\xde\xf9\x51\xdc\xcf\xa3\x0e\x42\xe9\xf5\xbb\x05\x02\x3a\xde\x79\x75\x06\xcb\xf9\x0b\xb6\xdc\xe4\x3c\xf3\xa1\xc3\x14\x1a\x5c\xc5\xfd\x9a\x4f\x3c\xc5\x57\xb9\x0e\x18\x04\x9b\x3c\x13\x0f\x46\x1e\x4f\x32\x29\x9f\xa1\xd1\xcf\x9c\x7f\x2e\xa2\x05\x35\x65\xe8\x16\x0a\x34\x1c\xdd\xf9\x9a\xcd\xdd\x49\x16\x97\xfa\x70\x51\x24\xab\xda\xb4\x2a\x5e\x8f\xcf\x04\x8d\xd9\xf1\x79\x38\x4e\xc9\x2a\x46\x9a\xeb\x11\xe8\xbc\x62\xb6\x9d\xbc\xfc\xec\x66\x81\x75\x47\x57\xe4\xc5\xd0\xfd\xd9\xb9\xcf\xda\x49\xaf\x09\xb8\x3a\x5a\x4a\x10\xae\xd9\xa4\xcf\x7d\xdf\xa2\x89\x20\x9d\x47\x5a\xb3\x31\x8c\xd4\xb9\x65\xe0\x07\xdc\xe1"}, +{{0xe5,0x5f,0x22,0x0f,0xff,0x80,0x79,0x14,0x8b,0x25,0x41,0x89,0xbb,0x29,0x41,0x74,0xf8,0xe2,0xc5,0x75,0xe5,0x7f,0x39,0xd4,0xba,0xc8,0x16,0x5c,0x5e,0x56,0xe7,0x69,},{0x7f,0xd5,0x07,0xd0,0x3f,0xe1,0xd6,0xe3,0xf9,0x11,0xf0,0x59,0x59,0x7b,0x0e,0x29,0x2e,0xa0,0x96,0xf5,0xbc,0x85,0x18,0x52,0x91,0x6b,0xf1,0x21,0x7c,0xaf,0xdc,0x6c,},{0xc1,0x02,0x3a,0x70,0x68,0x74,0x3e,0xc4,0x66,0x8f,0x49,0x5e,0xb7,0xbd,0x4d,0xb5,0x81,0x29,0xc1,0x1e,0x58,0x29,0x9e,0xa8,0x7d,0x6f,0xac,0xd3,0x02,0xbf,0x29,0x6a,0x98,0xe2,0x98,0xfd,0xb4,0x8e,0xdd,0xf9,0xc4,0x4e,0x79,0xae,0x86,0x41,0xf7,0x34,0x50,0x3b,0xb8,0x3d,0xc0,0xb3,0x1f,0x61,0x0d,0xf1,0xd1,0xe9,0xd6,0x19,0xa7,0x05,},"\x1e\x2c\xe8\xbf\x0e\xa7\x87\x5d\xf2\x85\xb1\xdb\xd3\x4b\xbe\x67\x30\x7f\x2e\x8a\xc8\xbc\x14\x2c\x3b\xa3\x14\xc1\x64\x2c\x65\xa2\xd6\x2e\xb2\xc7\x83\xf9\x16\x28\x3c\xa4\xec\x3e\x53\x6d\x3e\xeb\x65\xcf\xdc\xc0\x54\x9a\xc4\xf6\xa4\x5f\x53\x9a\xc5\xdf\x79\xa6\xd5\x76\x82\x19\x73\x9d\x0c\x9a\x0c\xdb\xb3\x12\x42\x29\x6c\x33\x12\xb7\xed\x56\x00\x43\xf5\x36\xcd\x1d\xe9\xa9\xc2\xb2\x89\x64\x1a\x1c\x2d\x84\xf9\xa6\x8b\x7c\x03\xb8\xb8\x56\x7e\x5d\xc7\x13\x8c\x2c\xb9\x67\xc6\x28\xaa\x25\xb2\xea\xb4\x34\xd4\x49\x0b\x23\x50\x74\x09\x71\x7c\xde\x94\xda\x59\xdc\x1d\xc2\x5c\x7b\xe4\x2a\x8a\xa0\x2e\xdc\xf4\xd9\x95\x36\x8e\x6b\xa0\xee\x1f\x95\x36\x00\xdb\x98\xd2\x2d\xe0\xf8\xd2\x57\x02\x0e\x0a\x40\x6e\xe1\x66\x9b\xd5\x27\xb9\xfe\x1c\x61\x1f\x9b\xe5\xa3\xd7\x52\x8e\x8b\x61\x51\x67\x0a\x86\x63\xd2\xed\x1a\x58\xd3\xe3\x69\xbb\x72\x2a\x63\x02\xd7\xc1\x72\xa1\x9b\xda\xf3\x57\xee\xdb\x02\x27\x91\x56\xe3\xb9\x03\x44\x31\xa7\xd6\x8a\x39\x52\x8e\xb4\x02\x35\x87\x57\x3e\xb8\x8f\x30\xf9\x4e\x83\x3e\x8a\x23\xb9\xd0\xac\x7b\x5c\xa8\x78\x24\x59\x6b\xbb\x0a\x3d\x0c\xa1\xb1\x6a\x68\x78\xfd\xf7\xe2\xce\xa3\x4a\x6f\xfb\x95\xa9\xff\x4e\x88\x8a\x97\x59\x37\x35\xb8\x68\xda\x75\xd8\x70\x7b\xbf\xdb\x1d\x93\xeb\x86\xa5\x1e\x2d\x21\x5f\x1d\xd9\xdc\xf7\x83\x88\x72\x9a\x3e\xb0\xf0\x66\xdd\xc9\x41\xe9\x50\xc9\x21\x27\x19\x8b\xce\x63\xa5\x48\x68\xd9\x97\x02\x95\x72\xff\xa6\xf6\xfe\xa1\xd3\xa6\x91\x64\xc9\x99\x69\x53\xdc\x8b\x6f\x9d\xad\x06\x35\xc9\xb0\x81\xf5\x5f\x98\x33\x40\xf0\x81\x4b\xf5\x47\x08\x03\x09\x0e\x79\x97\xf7\xab\x79\x6c\x2b\x15\xad\xaf\x40\x21\xd6\x7c\xff\xaf\x6e\x1e\xf6\x28\x67\x50\x39\x45\xc2\x1a\x32\x96\x64\xe0\x8a\x95\xa4\x15\x82\x30\x0d\xa9\xbe\xd2\x08\x44\x4c\xe6\xaa\x12\xb3\xf8\x67\x79\x5c\x6e\xe4\xc4\xc9\x25\x70\x18\x62\x73\x61\x29\x3b\xd5\x27\x82\x1a\x29\xa3\x39\xb4\x04\xa2\xda\x4b\xd9\x94\x4f\x87\x70\x40\x79\x8b\xb5\x4a\xbd\x2d\x76\xcb\xb1\x8d\xf4\x29\x7f\x4c\xe3\x33\x7f\x64\xd2\x05\x80\xaa\x64\xbd\xec\xac\x37\x6a\x6a\x4f\xf7\x4d\x01\x44\xb2\xfe\x74\xce\xf8\x2d\x50\xa5\xe6\xbd\xd7\x99\xe5\x5f\xf6\x96\x62\xba\xc5\x37\xad\xcb\x68\x81\x22\x8c\xb6\x37\x04\x50\x0c\x14\x3a\x4f\x4d\x1d\xb2\x8d\x45\x56\xbe\xe6\x04\xa3\x99\xff\xd2\x06\x54\x65\x97\xde\xe9\x22\x52\x54\x7f\x6c\x65\x7f\x36\x84\x1a\x87\xd5\x65\xf6\x55\x27\x16\xc2\x5a\x21\x15\x14\x77\xbe\xe9\xef\x96\x18\x55\xfb\x1a\xf2\xda\x80\x68\xf2\x8c\xe9\xff\x70\xd5\x25\x2c\x7a\x63\xa2\xe1\x4d\xed\x6b\x89\x77\xb1\xd7\x69\x1a\x77\xed\x2e\x57\xd2\x2f\xf2\xe1\xfc\x4c\xdb\xce\xb5\xe8\x05\x85\x8d\x90\x38\x96\xea\x67\x07\xe4\x8b\x34\x5f\x60\xe2\x81\x8b\x2f\xce\xc4\xdb\xa4\x8c\xae\xa9\xef\xa3\x82\x79\xfb\x83\xd5\xb0\xf4\x6a\x45\xe4\x2c\x41\x76\x5d\x01\x71\xba\xac\xd8\xd6\xdd\xa7\x99\x13\x14\xb3\x4e\x15\xfd\x36\x12\x7c\x46\x7d\x1d\xe0\x1c\x01\xa3\xa7\x8a\x8c\x1b\x10\x3b\xee\x17\xa7\xa0\xb7\xac\x55\x76\xfd\xc2\x26\xdd\x24\x59\x77\x31\x46\xcf\x38\x26\x14\x17\xca\x19\x13\x5d\xbd\xa9\xbd\xbe\x54\xcd\x17\xaa\x7d\xdd\x38\xfd\xca\xc2\xab\xa3\x96\xb3\x65\xce\xae\x98\x91\x9f\x6c\x51\x77\xfc\x58\x3f\x5b\xee\x3f\x48\x70\x49\x14\x30\x6a\xa1\x9e\xe9\x0e\x3f\xd0\xde\x55\x91\xc6\x69\xff\x35\xab\x16\xfe\xf3\x8d\xee\x18\x7b\xae\x1e\x5a\xaa\x56\x6d\xf1\x05\x44\xb7\xd6\xd4\xeb\x00\xda\x7e\xbe\xb4\xec\xdc\xc4\xd8\xe3\x2b\x49\xcb\xbd\xc6\xe6\x66\x40\xbd\xb0\xf7\x2e\x05\x91\x8a\x05\xc3\x5d\x9b\xff\x7e\x0e\x88\xf2\x41\xd7\xc6\xc8\xcb\x2f\xed\xcc\xdf\x65\x56\x0a\xf0\xe7\x83\x3e\xfe\x34\xaf\x79\x0d\xb6\x31\x89\x02\x2c\xfd\x71\xfc\x8a\xcf\x88\x86\x01\x27\xbd\x4f\xbf\x02\x6b\xcb\xe3\x60\xe3\x3a\x89\x95\xe6\x36\xd0\x3b\xb8\x6d\xfd\x01\x98\xad\xa9\x59\x34\x2d\x8e\x9c\x9e\xd9\x3e\x23\x29\x7d\xa9\x8d\x66\xa0\xd4\xfc\x96\x51\x62\x73\x3b\xc8\x65\x41\xb9\x5a\x6c\x90\x97\xcb\x55\xa9\x73\xc6\xfa\xc1\x94\xe8\xf8\xa1\x64\x27\x4c\x47\x9c\x51\x0e\x62\xd8\xa0\x35\xeb\x75\x11\x81\xb5\x02\xaf\xb6\x14\xd8\xc4\x46\x7b\x54\x45\xc2\x68\xdc\x3d\xd0\xab\xbd\x57\x70\x04\xc0\xbc\x47\xb1\x5f\xcb\x80\x1b\x79\x35\x97\x57\xb5\xea\x89\xcf\x8c\xf7\x7f\xc6\xd1\x60\xe6\xcd\x73\xc4"}, +{{0xd5,0xe3,0xa4,0x06,0x71,0xbd,0x45,0xf0,0x88,0x42,0xdd,0xc7,0x8a,0xbe,0x57,0xde,0x3b,0x9c,0xe5,0x64,0x6b,0x73,0x0d,0x2e,0x59,0xfe,0xcf,0x5a,0x7d,0xf8,0x0f,0x40,},{0x41,0x6c,0x37,0xae,0x1a,0xd1,0x5b,0x63,0x2b,0x0e,0xa4,0x39,0x32,0xc1,0x76,0x37,0x28,0x2c,0xd9,0x1d,0x59,0x79,0x55,0x2e,0x5e,0xeb,0xb9,0x9a,0x41,0x9d,0x5c,0x97,},{0x63,0xde,0x6a,0x98,0x11,0x42,0x36,0x5a,0x3e,0x59,0x26,0x31,0xc8,0x27,0x72,0x37,0x80,0x97,0x39,0xd1,0xc9,0x8f,0x5a,0x1c,0xb2,0xcc,0xcd,0x34,0x06,0x7d,0x1c,0xa5,0xdc,0x8f,0x2f,0xc6,0x3b,0x8a,0xe1,0xa6,0x89,0xdc,0xaa,0x29,0x1b,0xa6,0xb6,0x9b,0x1a,0x67,0x95,0xc5,0x79,0xa5,0xdb,0x6d,0xcc,0xee,0x73,0xf6,0xa4,0x20,0xac,0x0a,},"\x09\xfe\x6f\xfa\x8b\xf0\x94\x2a\x64\x92\x13\x57\x65\x9d\xbc\x6e\x4f\x8b\x63\xca\x3b\x9e\xa4\x75\xea\x39\xd7\x92\x52\x90\xa1\x48\xd8\x7b\xb1\x55\x74\x1d\xfa\x28\xae\x1b\xea\xdc\x1f\x3e\x1a\xb7\x67\x37\xeb\x5d\x5d\xda\xde\xd0\xbb\x38\x2d\x7e\x11\xea\x81\xa5\xe7\x80\x16\x12\x69\x62\x60\xba\x3b\xd0\x9c\x80\xb6\x23\xf6\x36\x38\x0a\xa0\x20\x8f\xee\x0a\xff\x70\x81\x2d\x53\x07\xb2\x71\x83\x83\x23\x43\xde\xba\xa3\x60\x5d\xda\xd1\x7d\xdd\x70\xd6\x11\x40\x0d\xdd\x10\xd6\x38\xaa\x3d\x6c\x68\xa2\x8c\xf0\xe9\x7c\x1d\xed\xf6\xcc\xd9\xc7\x31\xa8\x4f\xf0\x40\x5a\x3a\x22\xdc\xba\x00\xab\x44\xd5\xb2\x18\x44\xf1\x4d\x13\x74\xac\x0c\xb1\xe5\x8d\xf4\xa9\x0c\x41\x25\x63\xcf\xe6\x9d\x88\x2d\x35\x0f\x6a\xaf\xbf\xa6\x4f\xa2\xf9\xff\x82\x60\x32\x32\x67\x80\xae\xcf\x93\x05\xd8\x21\x7c\x17\x9d\xbb\x63\xc1\x51\x54\x12\x32\xeb\x65\x97\x92\x65\xd8\x76\xc4\xbc\x43\x05\xc0\x2f\x40\xbc\x1d\x05\xdb\xaf\x7d\xcf\x4f\x7d\xd9\x23\x2c\x17\xee\x0f\x7a\x05\x55\xf5\x04\xba\x37\x74\x54\x84\x88\x93\x3e\x75\x71\xeb\x3f\x71\xc4\xcb\xb2\x0c\xc4\xe4\xa7\x32\x2f\x35\xac\x0e\x79\xa5\x91\x55\x79\x8d\xd0\xf5\xb3\xc1\x13\x19\xb7\xd8\xf3\xea\x79\xee\x3a\xcc\x68\xbd\xb9\xf3\x7c\x7d\x4c\x8f\x9c\xab\xa1\xeb\xf8\xeb\x7f\x43\xb4\x62\xae\xfd\x38\xe8\xc0\xd4\xc6\x39\x79\xcf\x66\x31\xde\xc3\x1a\xb5\xce\xd3\x93\x7e\xf5\xb2\x36\x2c\xb0\x9c\x71\xdd\x09\x66\x57\x70\x0f\xd9\x6b\xda\x55\x5e\x22\x71\x2f\x71\xae\xc1\x1a\xe5\xe9\x1b\x24\xbd\x16\x49\x49\x8b\x8d\x9f\x86\x7f\xb6\xc4\x1e\x07\x60\x80\xf7\x40\xd0\x74\xc2\xa2\x55\x72\xd3\x4e\x66\x6b\x63\x67\xbf\x7c\xbb\x3d\xd4\x2a\x23\x82\xdc\x19\x73\x96\x12\x68\x60\x53\x96\x81\x0a\x45\x6a\xc0\x81\xbb\xfd\x3a\x54\xb4\x48\x81\xfc\xfc\x45\xb4\x24\x5e\xe7\x24\x65\xb4\x87\xd0\x7f\x2e\xf3\xf7\x4a\xdd\x71\xcd\xfd\xd1\x6e\x92\xfe\x25\x7d\x33\x46\x45\xb0\xa9\xbc\x7d\x07\x26\x13\xfb\x9c\x0c\xde\xa9\xdb\x4c\x72\xbc\x87\x10\x9e\x10\x2d\x7c\xba\xf3\x66\xec\xd6\x7f\xbe\x3d\xed\x32\x74\x73\x07\xa7\xae\xef\x61\x73\x5a\xd3\xaa\x5c\xe9\x5d\xee\xcc\x16\xa1\x6e\xb2\xa0\xbc\xc7\xad\xc0\xa1\x1d\x88\x80\x32\x26\x0e\x7c\x7e\xc9\xe5\x4f\x5a\x25\x31\x70\x2a\x7e\x5d\xfb\x87\xc3\x6c\xe3\x13\xa3\x14\x75\x88\xae\xf9\x62\xc7\x2f\xa9\x66\xd2\x41\x63\x7c\x38\x8b\x83\xdd\xec\x93\x43\xbb\x86\x34\x3e\x92\x0b\x12\xce\x1c\xc9\x15\xc8\x3b\x31\xe9\x98\x62\x69\x06\x74\xea\x49\x35\xa4\x88\x09\xd4\xd2\x79\x05\x41\x37\x54\x63\x92\xad\x9f\x08\xe7\xb8\xde\x61\xae\x73\xe8\x1e\x48\x3d\x3c\x63\xb5\xae\x73\x4e\x18\xe7\xa2\x2f\xee\xd1\x23\x3d\x0c\xa6\x33\x55\xf3\xa4\x8a\x33\x06\x7e\x1a\x0e\x19\x71\xf3\x6a\xa9\x29\xfe\x06\x13\xc2\x1c\x4a\xef\xf9\x41\x84\x29\xc3\xb0\x72\xa5\x98\x49\x59\x28\x7a\x5e\x5c\x40\xbe\x02\xbd\x22\xb9\xa7\x9c\x7f\x3f\x53\x59\xd2\xbb\xe4\x93\xf5\x56\xda\xcb\xb0\xcb\x4c\x29\x3c\x7d\x94\x12\x65\xe7\x77\x39\x2d\x14\x8d\x68\xc0\x7a\x13\xc8\xde\xc8\xe5\xd1\xe1\xc7\xf0\x41\xe8\x98\x3e\xdd\xda\xa4\x64\x9d\xac\x15\x72\xa3\x9a\xe4\xc6\x48\x0c\xa5\x50\xe2\xe4\x46\x2d\xcc\x84\x9c\x1b\xab\x78\x1d\x28\xa3\x55\x2b\x2d\x98\xe0\x2e\x15\x18\xe6\x55\x53\x40\xfb\x76\xd6\x8d\xb5\x89\x16\xd5\x56\xa7\xb8\x15\x63\xab\xa8\x1d\x9a\x57\xae\x50\xf0\x4c\xf5\x68\x60\x21\x84\x7d\x79\xb6\xbb\x3d\xa8\x01\x7a\x60\xb1\xc3\xbe\xef\xd4\x8d\x2b\x3c\xd3\x9c\x6f\x53\xc0\x8b\xcc\x96\x7d\x93\x06\x9f\x56\x2b\xb3\x6e\x0c\x4f\x4c\xa6\xbc\xcc\x5e\x57\xd3\x59\x03\xcd\x80\x0a\x61\x78\x5a\x93\x77\x0e\x37\x7f\x4f\xe8\xe9\xf4\xb6\x66\x80\x98\x49\x68\xf9\x64\x9e\x10\x5e\x7a\x11\x9d\x97\x63\x6f\x3a\x05\xca\xea\xb1\xd7\xea\x0b\xc8\x13\x34\xb4\x2d\x5c\xc0\x80\x83\x0e\xc2\x4d\x36\x9c\xf8\x67\x3a\x49\x0d\x59\xeb\x4c\xb0\x81\x81\xda\x39\xa4\x6d\x96\x6e\x23\xfe\xd8\xd3\x8a\x5f\xab\xc7\xe8\x43\xbc\xfb\x01\x5a\x44\x74\xbf\xd4\x6d\x4a\x43\xff\x4a\x51\xa9\x56\x76\x61\xe2\x69\x6d\xb8\x7c\x37\x58\xd3\xb5\x4c\xe7\x84\x6d\x13\x91\xd7\xf4\x65\x26\xef\x30\x84\x4d\x49\x32\x00\x18\xd7\x49\xb5\xd4\xdf\xd3\x0d\x38\x0c\x6e\x57\x3f\xc4\x14\xd8\xfe\xfc\x5d\x71\x04\x70\x75\x6b\xec\x00\xd8\x8a\xc4\xaf\xc9\x25\xd1\xed\xe3\x7e\xae\xe6\x00\x4a\x23\xea\x0e\xf8\xb6\x0e\x48"}, +{{0x4e,0xd7,0x04,0x8a,0xa1,0x28,0x4d,0xbb,0xcc,0x24,0x89,0x38,0xb4,0x0c,0x35,0x74,0x21,0x93,0x59,0x7a,0xdd,0xaf,0xdd,0xe0,0x64,0x13,0xb8,0xd4,0xcc,0xfb,0xe1,0x37,},{0xbf,0x84,0x1f,0xe4,0x44,0xad,0xd1,0xf7,0xc3,0xea,0xcd,0xfd,0x07,0x84,0xb4,0xe8,0x55,0xd2,0x40,0x5f,0x40,0x21,0xcd,0x9d,0x82,0x66,0x07,0x1c,0x32,0xc8,0xa2,0x73,},{0x10,0x6a,0x9d,0xeb,0x23,0x27,0xf3,0x38,0xcc,0xb7,0x1b,0xcc,0x94,0xe2,0xfe,0x3d,0x2e,0x97,0x3c,0xe6,0xdd,0x8f,0xa7,0xba,0xca,0x80,0x8b,0x41,0x11,0x81,0x3e,0x3b,0xc3,0xb4,0xd8,0x8e,0xfa,0x6a,0x00,0xc4,0x71,0x0b,0xbf,0xe5,0x31,0x96,0xf9,0xab,0x3a,0x15,0x0b,0x16,0x54,0xb9,0x08,0xfe,0xac,0xf9,0xc1,0x3d,0xf2,0xd6,0x38,0x02,},"\xdc\xff\x95\x87\xd6\x04\x6c\x11\x32\xbe\x07\xdf\x26\xdf\x63\x82\xff\x92\xcf\xc8\xeb\x53\x45\xc5\x1d\xd5\x0d\xd1\x88\xee\x76\x9f\x10\xa4\xde\x5e\x88\x83\xd1\x16\x96\x7b\xea\x97\xd3\xb3\x2b\xc8\xae\xbb\x9f\x01\x3d\x6d\xf9\x52\xf2\x51\xc1\xa3\x12\x34\x6e\x72\xce\xe1\x35\xa1\xbf\xd7\x6b\xf3\x08\x0a\x35\xc8\x38\xb4\x4d\x75\x5f\x26\x3d\x21\x03\x10\xfa\x8d\x28\xc4\xca\x52\xf0\x8c\xac\x5b\x83\xa8\xa3\xb1\xdf\xc4\x6d\x9b\x75\x2d\x9f\xc7\x36\x49\xd0\x0b\xb9\xee\x99\x26\x50\x63\x9c\x22\x5d\xea\xc1\xf3\x9b\x9e\x80\x36\x89\xd1\x9e\x6d\x9f\x8e\xf4\xf5\x1f\x1d\x11\x60\x1f\xac\xf4\x10\xdb\x64\x8b\xcc\x82\xbf\x64\x87\x69\xa7\xdd\x59\xc6\xe8\xa2\x37\xdb\x23\x9d\x3f\x66\x1d\x78\x52\xc4\x26\xd3\x94\xa9\x05\x09\x52\x6a\x85\x9b\x47\x64\x59\xde\xdb\xe6\xd8\x99\x36\xc0\xf3\x98\x99\x95\x51\x1d\x4a\x57\x6e\x54\x2c\xce\x5e\x0d\xd7\xee\xef\xeb\x03\x26\xd3\x3f\x25\xc2\x2a\xb6\xe7\x69\x06\x33\xf4\xc9\xed\x2a\xad\xf1\xd2\x4f\x94\x86\x21\x23\xa4\x64\x04\x2c\xea\x19\x3a\x2f\x04\x79\xd3\x9b\xcd\x1b\xbd\x1c\x7a\x0c\xa7\xe6\x25\x8e\xd3\x73\x23\x72\xf5\x4e\x0e\xd5\xe3\xf1\xe2\xe4\xd4\xa0\x4c\x51\x0b\xee\x08\xd1\xc6\xd5\x70\xcf\xd6\x3a\xbf\x14\xb4\xee\xf0\xb9\x6f\x39\xca\x29\xe4\x3c\x52\xf2\xca\x3d\xfd\x46\x0f\x66\xe3\x02\x35\xb1\x59\xaa\xef\x2c\xc1\x56\x01\x29\x69\xfd\x3d\x15\x99\x78\xd6\xca\xa0\xa9\x45\x22\x29\x1f\x79\x89\xd8\xaf\x10\x83\x19\x96\x13\x7b\x68\xd9\x7f\xc1\x7f\x6a\x9b\xc2\x84\x5e\xf3\xdd\x47\xcb\xc3\x86\xe8\x97\x7a\x86\x54\x36\x34\x12\xda\xc3\xac\x51\xc6\x38\x17\xb7\xc0\x51\x87\x8d\xcf\x45\x8a\xb3\x63\x0d\xd7\xae\xf6\x8d\x27\x0f\x8d\xa7\x88\x0a\x46\x7b\x33\x04\xf5\xba\xed\xfb\xa9\x17\x3e\x7e\xfd\x00\x7c\x41\x2d\x17\x20\x9c\x56\xd2\x39\x68\xe3\x40\xb8\xa0\xed\xb4\x1b\x7e\x2a\x40\x88\xbe\xc0\x1b\x53\x2d\xf8\x9b\x52\x15\x81\x31\x31\x10\x7b\x7b\x47\x4f\x03\xc2\xe4\x7d\x43\x17\xf1\x1c\x4f\x51\x60\x90\x43\x04\x99\x7e\x76\xa1\x21\xa9\x56\x02\x35\x20\x8d\x79\xb2\xda\xb4\xf7\xe1\x96\x79\x32\x02\xc0\x90\x2c\xe9\xc4\xbf\xc1\x0b\x8f\xe3\x97\xe3\x5c\xa0\x25\x64\x54\x66\x2a\xe8\x78\xef\xb0\xa0\xa6\x06\xfa\xc0\xa9\x52\xc9\xf6\xba\xae\xb2\xd4\x5b\x25\x8c\x61\x75\x59\xc0\xed\x25\x28\xa8\x8b\x49\xaa\x44\xee\x43\x03\x5b\x0d\x79\x3a\xad\x39\x53\xc1\xa5\xa3\x46\x38\x66\xbc\x81\x5b\x1f\xfc\xe2\xff\x2b\x65\xe0\xfd\x47\xdb\xc1\x5f\x4e\x7a\x06\xbf\xab\xc2\x90\xfc\x62\x09\x0b\xf7\xd9\x48\x53\xf7\x7c\x04\x44\xa9\xb9\x0e\xfe\x77\xd1\xce\xb4\xbd\x39\xe2\x03\xbc\x88\x40\x11\x62\x4e\x68\x46\xe2\xa3\x71\x05\x8d\xab\xa6\x3c\x23\xf8\x6c\x42\xc3\xe3\x1e\xaa\x4b\xd7\xd7\xa4\x2a\xf2\xd5\x24\x89\x6e\x31\xba\xa3\xe2\x07\x63\xf8\x5d\xcf\xd5\x27\x75\xf2\x80\x72\xd8\x9f\x0b\xd4\xfa\xe3\x0d\x0b\x13\x7e\xe3\x7a\xb0\x63\xba\x06\xfe\x9d\x4e\xc6\x2a\xbb\x2f\xea\x0f\x81\xb8\xcb\xee\xfc\x03\x00\x80\xb8\x02\x6a\x58\xfd\x18\x67\xf6\x6b\xe1\x15\x4e\x65\xbf\xea\x7d\xce\xc5\x5f\xe3\x2d\x51\xfb\x0b\x4a\x8a\x5a\x8a\x04\x42\x63\x94\x3d\x6a\xc8\x01\x1c\x6e\x67\x01\xbe\xec\x3a\x88\x65\x58\x40\xc4\x89\x2d\x45\x0d\x31\x2b\x76\x52\xd2\x51\x47\x69\xf2\x3b\xfd\x6e\x70\x46\x46\x7d\xf2\x9a\x28\x7f\xf3\xc4\xc9\xd0\xe6\x4e\x6d\x9e\x4e\xde\xe1\xb9\x35\xd0\x76\x81\xd4\x70\x04\x35\x28\x86\xe8\x47\xb0\xc6\xd5\x76\x2f\xd4\x5a\x81\xa5\x3c\xce\x94\x76\xc8\x87\x22\x1a\xea\x6c\x0c\x82\xbb\xf3\xb2\x97\x93\x2e\x5b\x11\xe5\x38\xa3\x24\x5d\x63\xd7\xb7\xb0\x91\xdf\xa1\xd7\xb9\xa0\xe2\xdb\x66\x98\xa4\xc5\xe9\xfe\x93\x16\x62\xd7\xc6\xec\x6d\x9d\x5b\x92\xbc\x7e\x04\x15\x55\xdf\x4d\xf0\xca\x11\xca\xbc\x48\x5f\x9c\x55\x61\x38\xa7\x17\x45\xf0\x3b\x97\x83\xbb\x20\x0b\x72\xd2\x33\x69\x7e\x8b\xcf\x6b\x41\x17\xee\x67\x63\xd7\x92\xd7\x42\x22\x64\x85\x2f\x4f\x30\xf8\xd1\x89\x0e\x2e\xa0\x80\x98\x04\x0f\x7f\x28\x8e\x4a\xbe\x90\xb6\x3c\xab\x2c\x14\x37\x30\x60\x84\x0e\xf8\x27\xec\xc8\x46\xcd\x56\x0e\x90\xa2\x0b\x83\x05\xf4\x63\xc3\x6e\xa0\x38\x84\xa5\xdf\x4c\x25\xf1\xba\x9e\xa1\x25\x95\x2d\xc0\x91\xb9\x75\x16\xde\x1d\x28\x7c\x0e\x2b\xf5\x29\x77\x5b\xa6\xd2\xf8\xed\xe0\x3c\xb4\x2c\x1e\x40\x0e\xc8\x04\xa9\xdf\x08\xe4\x6f\x44\xb5\x06\x63\x46\xe3\xf7\xc7\xa1\xa8"}, +{{0xc7,0xec,0xa8,0x3e,0x94,0x85,0x76,0xbd,0x9f,0x27,0x8f,0xd7,0xb8,0x28,0x00,0xa4,0x1d,0x92,0xda,0x9b,0x72,0xd5,0xa1,0xcc,0xdb,0xbc,0x65,0x58,0x10,0x52,0x56,0x8b,},{0x07,0x6b,0x83,0x52,0xdc,0xa8,0x03,0x1e,0x85,0x3c,0x8d,0x90,0x99,0xc2,0xef,0x57,0x93,0x37,0xcc,0x7b,0x2b,0x4c,0x75,0xd1,0xa0,0x63,0xea,0x3e,0xc7,0x25,0xb7,0xfd,},{0x86,0x99,0x6a,0x1b,0x8e,0x49,0x5d,0x42,0x52,0x77,0xe9,0x7c,0xc0,0x83,0x05,0x49,0x34,0x9b,0xc2,0xb6,0xf3,0xdc,0xda,0x60,0xf3,0xb7,0xd3,0x50,0x1b,0x8b,0x50,0xb5,0xb4,0x58,0xcd,0xa5,0x8b,0x43,0x6e,0x23,0xc0,0x2c,0xd4,0xa2,0x2b,0x23,0x48,0x13,0xaa,0x9b,0xcc,0x3c,0x61,0xf9,0x83,0xc0,0xb7,0xef,0xec,0xa0,0xf1,0xbe,0xc2,0x0d,},"\x8d\x8c\xef\xd6\x73\x85\x5c\xcd\x8e\xb8\x53\x4c\x31\x2d\x33\x80\x05\xbb\x05\xf5\xb9\x50\x7d\x58\x85\x9e\x1e\x95\x3b\x0a\x4d\x91\x3b\xe7\x59\xd8\xed\xfa\x92\x89\x8c\x6e\x70\xa5\x3f\x81\x95\x4f\xc3\x44\xb4\xad\x62\x46\xb0\x10\x94\x81\xba\x6f\x73\xae\x63\x31\xab\xf2\xdf\x10\x8e\xb2\xe8\x5c\xeb\x08\x7c\x1f\x6f\xcf\xc9\xde\x2c\x1f\x13\x9b\xa1\x77\x1b\x72\x68\x03\x02\xd8\x11\xcc\xd0\xcc\xd4\xe0\xc7\xfe\xb0\x13\x2e\xb2\x0b\x33\x4e\x5a\xab\xe5\xf6\x11\x9f\xd8\x94\x7d\x9e\x88\x52\xe1\xeb\x1b\x74\x10\x7e\x17\x41\x00\xe3\xe6\xdf\x0c\x3a\x68\x13\x0c\xa6\x30\x94\x02\x59\x4b\xb5\x0c\x1c\x8e\x27\x74\xf1\x32\x14\x49\x6a\x7b\x1f\x34\x83\x85\xea\xbf\xbc\xcb\xac\x16\x5a\x5a\x2e\x7d\x9d\xea\x5f\xfd\x58\xb0\xbd\x88\xb4\x9c\xb3\x31\xec\xb7\xf4\xe9\xd6\xba\xe9\x79\x1a\xd7\x88\xe6\xab\x89\x26\xc1\xcc\x16\x15\xde\xaf\x4c\xc4\x00\xc7\x7a\x31\x61\x97\xbc\xa1\x90\x49\x95\xe1\x36\x5d\x1b\x97\x02\x64\x83\x76\x11\x69\x30\xf6\xf9\x11\x66\xe6\x14\x86\x29\xe7\x5b\xe2\xd0\x68\x95\xf6\xa8\xd1\x5d\x5a\x94\xca\x69\xb7\x12\xf3\x3b\xcf\x95\xbe\x0c\x1b\xe6\x90\x2b\xb7\x8b\x8a\x23\x0d\x7a\x85\x60\xc4\xd8\x4e\x23\x89\x55\x2a\x81\x57\x1a\xa6\x65\xc1\x9c\x2e\x93\xb0\xd4\x3e\x8c\x2c\xbd\x9e\x88\x5d\x70\x52\x51\x8b\x77\xc4\x7e\x84\x1d\x11\x9d\xc2\x8b\x65\xa7\x50\x4f\x66\x42\x71\xf0\x6c\x7f\xf3\x93\xf8\x25\xb1\xe5\x93\x0d\x02\xb9\xc7\x00\x35\xe2\x92\x41\x1c\x4a\xed\xf6\x60\x47\x00\x69\x70\xe3\x49\xdf\xca\x7f\xb4\x1c\x10\xfd\x53\x7e\x35\x25\x2e\x10\x9e\x33\x36\xd7\xa8\x2a\x14\xde\x5d\x55\x40\xc6\xfc\x65\x71\xd5\x77\x4f\x39\xb7\xc4\x03\xe7\xb8\x87\x5e\xc2\x15\x87\x7e\xfc\x6c\xc8\xea\x48\xb1\x86\xb4\x68\x21\xea\x5e\xf2\xba\x8b\xac\xd4\x0d\x79\x7e\x6a\xdd\x06\x41\x32\x83\x14\x5b\x60\x46\x2b\x35\x03\xc5\xb8\x81\xd7\x9a\x59\x29\x55\xd1\x8a\xfa\x08\x96\x9e\x31\x45\x7f\x5b\x27\xda\xec\x01\x03\x38\xed\x86\x7f\x30\x08\x78\xfd\x87\xce\x32\x18\x80\xb8\x60\xa0\xc6\x42\x84\xca\x2d\xc1\x5f\x5e\x53\x10\xe1\x0e\x6a\x73\xa7\xea\x65\x0e\xa9\xd3\x73\x69\x4d\xa4\xdd\x42\x9a\xe7\x41\x2e\xf9\xb2\x9c\x83\xb3\xb0\x68\xc7\x47\x69\xf4\x31\xce\x06\x15\xf9\xff\x4f\x82\xba\xac\x47\xb4\xbc\xe9\x04\x49\xec\x41\xc2\xa2\xd5\x73\xd9\x2b\x92\xe0\x56\x31\x48\x61\x65\xbc\x71\x0e\xf5\x84\x0f\x80\xda\xe9\xf9\xdd\x5c\xff\xd4\xeb\xf5\xd1\x07\x46\x51\x0c\x5f\xcb\xfe\x62\xcb\x97\x03\xc0\xb1\x54\xc8\x6f\x10\x81\x66\x72\x49\x76\x70\xa3\xb0\x15\x0b\xb4\xe1\xb0\x3b\x3b\xd5\x44\xc1\x2a\x90\xc3\xed\xcc\xd7\x90\x0e\xbb\x5b\x31\xc9\x11\x17\xcc\x82\x81\xa3\xc4\xed\x04\x99\x8e\x99\xae\xd4\x1b\xb4\x1f\xce\x99\x90\xa4\x06\x48\x5b\x14\xdb\xe3\xbc\x1a\x5f\xcf\x77\x19\x50\x79\x90\xda\x3b\x0b\x3c\x68\xad\x40\xd8\x95\x0c\x0d\x49\xce\xd1\x01\x93\x19\xa3\xf3\x6a\xff\x6c\xaf\x75\xd7\xf9\xa0\x93\x3d\xd3\xab\xdd\x76\x92\xa1\x56\x2f\x06\x13\xfe\x4a\x27\x8d\x5c\xe4\xc8\xda\xfb\xb5\x5b\x2e\xc2\xaf\x2b\x24\xe8\x39\x6f\x58\x7b\x17\x0c\x9c\xa6\x54\x75\x08\xfa\xcd\xe7\x34\x90\xdf\xb0\x1e\xb6\x65\x7e\x3f\x4f\x27\x23\x04\xb7\x0b\xf0\x47\xa4\x3a\x2b\x58\xe5\x56\x8b\xc5\x2b\x2c\x8d\x4c\x03\x21\x9a\x5a\x8b\xd3\xdc\x06\x43\x18\x59\x13\xc0\xaf\x74\x11\xf8\x1b\x77\xbe\x2a\x9b\xfd\x5c\xb2\x69\x77\x11\x3d\x26\x58\xa9\x71\x92\xb4\x1c\xf6\xc7\x01\x1b\x0f\xf6\xa1\x1c\xbf\xf3\x50\x55\x46\x32\x2f\x0b\xef\x60\x97\xe4\x6b\x36\x49\x2b\x01\x6a\x45\x62\xe0\x92\xb6\x7c\x3f\xcc\xc7\x78\x0e\xa2\x74\xd9\x6d\x59\x58\x49\xf7\xe2\xa5\x6d\x79\xed\xcb\x32\xd7\x84\x04\x9f\xc1\x32\x4a\x5b\xee\xfc\x24\x19\x3a\x66\xe1\xca\xc4\xa1\x3a\x81\x1b\x90\x95\x83\xcc\x91\x0c\xf0\x8d\x4b\x10\x4d\xbd\xb8\xa6\xf2\xb2\x1f\xbc\x1d\xb1\x17\x5a\x1a\x23\x56\xa6\x3d\x3e\xea\x9d\xbb\x85\x37\xd2\xc6\x86\x27\x54\x3d\xf0\xd1\xf8\xfd\x8d\x57\xa1\x8b\x0d\xbd\x69\xb9\x20\xcb\x9b\x28\x6e\x3c\x07\xae\x44\xae\x2e\x1b\xee\xc0\x1c\xee\x6b\xa9\x88\xb5\xd1\xaf\xb9\x97\x90\xb1\xdd\x91\x06\x55\xc4\x3d\x7f\x2a\x3e\xd3\x75\x4b\xa4\x65\x16\xd2\x78\x70\x55\x59\xf5\x74\x16\x22\xa9\xab\xb5\xc8\xf2\x3f\xa9\x76\xa9\xd1\x46\x94\x8a\xde\x6b\xa6\x60\x8a\x35\xe4\xe0\xd3\x30\xe8\x2e\x96\xa2\xbe\x6c\x78\xad\x0c\xd4\xd8\x70\x4e\x57\xce\xa1\x46"}, +{{0x7b,0x46,0x9d,0xf9,0xc8,0xf7,0x84,0x89,0xab,0x47,0xcc,0x70,0xa8,0x85,0x03,0xf1,0xb8,0xf3,0xd9,0x29,0xc3,0x3f,0xea,0xb1,0xc5,0x03,0xf0,0x96,0x9a,0x3a,0xc3,0x7b,},{0xa8,0x14,0xc7,0xe3,0x73,0xd0,0x11,0x3b,0x90,0x62,0x4a,0x8a,0xb2,0xbc,0xa5,0xcf,0x53,0xbf,0x52,0x8e,0x39,0xfc,0x3d,0x36,0x7d,0xe1,0x54,0xb9,0x4b,0xb2,0x2f,0x1d,},{0x18,0xfa,0xf8,0x2d,0x08,0xe1,0x06,0x8e,0x9f,0x98,0x3d,0x81,0x2f,0x05,0xfd,0xb6,0x92,0x9d,0x27,0x23,0xdb,0x1f,0x77,0xc4,0x5a,0x74,0xbb,0x09,0xcf,0xf2,0x77,0x73,0xb5,0x4c,0xe8,0xf4,0x3b,0x30,0x15,0x41,0x91,0x12,0xe7,0x25,0xea,0x7a,0xcd,0xa4,0xb2,0x3b,0x81,0x20,0xe7,0xb0,0xcf,0x42,0x01,0x53,0xe5,0xb0,0x3d,0xd0,0x61,0x09,},"\x1c\x0f\xd7\x45\x0e\x29\x67\x5c\x93\x09\x16\x38\xc2\xac\x93\x3c\xa9\x97\x76\x6e\x38\x0e\xc3\x3a\x92\xb8\xa7\xe1\xa1\xed\x98\x21\xc7\x5f\xcc\xb5\xc5\xf3\x76\x0e\x76\xd0\xe8\x81\x03\x11\xdd\xc6\x24\xea\x87\x42\x13\x1c\x1c\x43\x08\xf4\x17\x8e\x04\xd0\x49\x60\x69\x3d\x84\x6c\x1f\x51\xd8\x77\x3b\x6d\xeb\x34\x43\xd8\x74\xb9\xe2\xde\x3b\x77\x78\x51\x85\x51\x8b\x2e\x9e\xe7\x36\xc6\x3a\x39\xc8\x21\x2c\xa8\x66\x9e\x16\x1d\x13\x1b\x1a\xb2\x26\x4f\xdd\x72\xdc\x56\x28\xb1\x1c\x06\xf2\xaf\x9f\x07\x89\x04\x7b\xdd\x4e\xbb\x5d\x55\x89\x9f\x74\xdc\x4e\x12\xe7\x97\x53\x63\xf6\x3a\x8d\xa7\x6b\x55\x85\xc1\x6b\xb6\xd5\x5b\x05\xfa\xde\x87\x13\xd1\x9c\xad\x1a\x21\x16\x40\x26\x26\x91\xaa\xc9\xb4\x37\xa9\xec\xf8\x9a\x92\x46\xec\xdb\xa1\xff\x0b\xea\x78\x49\x4c\xee\x15\x29\x62\x16\xea\x6b\xb8\x82\x47\x9d\x24\x37\xc9\x49\x4a\xc7\xfa\x4f\x30\x15\xd1\xd3\x14\x9d\x55\x64\xd7\xc1\x1a\x7e\x7b\x61\x4f\x7d\x3e\x9d\x45\x4f\x0a\x05\xb0\x40\xa1\xe0\x6f\xe7\x83\x7c\x2a\x9d\xa2\x79\x4d\x91\x8b\xff\xa9\xe6\x1a\x0c\x3f\x08\x9f\x6c\x9f\x7e\xea\xc5\x86\xe3\x4b\xf9\x44\x70\xd9\x13\xda\x41\x37\x1c\xac\xdf\xc7\xee\x8b\xd1\x13\x56\x55\x56\x69\x24\xea\xdf\x09\x6a\xc0\x30\xa6\x59\x02\xc1\x03\xb1\x72\xd1\x2e\x88\xf0\x53\xfc\x56\xee\x73\xf3\x18\x70\x81\x70\x83\xaf\xa8\x02\xf7\x66\x8b\x81\x5e\xe7\x90\xf7\xd4\x0b\x43\x7a\x2e\x6d\xb2\xf0\xfb\x26\x83\x6b\x4b\x23\x31\xeb\xa5\x55\x39\x61\x4c\x0f\xe1\x72\x40\x24\x2d\xd3\xaf\x73\x83\xbc\xff\x7d\x3f\x47\xd6\x54\x4b\x08\x72\x0c\x0a\x52\x44\x1f\x74\x11\x93\x5d\xd4\xa9\x52\xd3\x86\x51\xa8\x00\x05\xfa\x3e\xb0\xea\xec\xc7\x35\xd2\x90\xe8\xbd\x5e\x31\xb7\x40\x14\x0e\x13\x6b\x2c\x00\x25\x23\xd8\xeb\x2a\x0a\xb5\xbd\x68\x70\x02\xb3\xb9\x26\xf7\x5e\xb6\x90\xd1\xda\x73\xad\x23\x58\x92\xf3\xb2\x3a\x75\x6b\x60\x5a\x43\x7c\x00\xe0\x62\x13\x04\xe8\x10\xf9\x9e\x31\x4c\x4d\x63\xe3\x22\xd9\xb6\x98\x15\xf3\x82\xff\xa1\xec\x62\x80\xfc\x0e\x64\x1c\x8a\x6f\x6f\x7f\x61\x98\x5b\xd3\x56\x7e\x0f\x44\x0d\xe9\xf7\x62\x17\x15\xda\xcd\x07\x42\x8c\x00\x90\x15\x4d\x59\xce\x6d\xb4\x01\x69\xc6\x58\xac\x5b\xf4\x4b\x67\x67\x1f\xe1\x9e\x4b\x5b\x38\xaa\xd2\xd3\xd4\xe1\x90\xa5\x50\xaa\xd4\x18\x83\x52\xf7\x98\x1a\x6d\x88\x06\x25\x02\xdf\x86\x79\x13\x50\x39\x2d\x41\xce\xfa\xcb\x24\xe3\x7b\xc7\x00\xcb\x02\x91\x90\xc3\xb1\x82\x14\x77\xe1\x17\xd5\xa4\x62\xfb\x3e\x79\x13\x3b\x10\x73\x59\x89\x66\xf5\x2b\x63\x25\x6d\xbf\x32\x6a\xce\x14\xdb\x0c\x80\x05\x8c\xf0\x0d\x68\x9a\x0a\x58\x11\x1a\xf1\x69\x27\x44\xbf\x79\x1b\xcb\xb4\x27\xa3\x72\x24\x6e\x95\x01\xa8\x5c\xd5\x20\xc6\x1a\x1e\x59\xee\x18\x0e\x8c\x97\x19\x2f\x60\xfa\x5d\x3a\xb0\x5d\xf8\xd8\x55\x1c\x1a\xc6\xca\x0a\x9a\x01\x2f\xfe\xce\xb3\xc1\xf5\x21\x41\x1e\xdb\x65\x09\xbc\x27\x8a\x65\x1e\x12\x9e\x96\xb0\xad\xc7\xae\xd7\x07\x22\x1c\xae\xac\x22\x98\x84\x41\x3d\xaa\x10\x59\x5d\x22\xd1\xdb\x70\x82\x12\x5f\x4f\x96\x95\x00\xa1\xd4\x8d\xac\xda\xe8\x0f\x40\x29\xc1\x63\xdc\xd7\x9d\xdc\x64\x68\xfc\xda\x16\x37\xb8\x7d\xdc\xf2\xa3\xd9\xb4\xd2\x99\xa0\xe5\x39\x4d\xf9\x0e\xd0\x3b\x62\x13\x7b\xa6\x7b\x9f\xea\x8a\xe1\xf0\xd2\x2f\x91\xc6\x3a\x24\xb5\x93\x4f\x74\xc2\x65\xc4\x3f\x1b\x92\x3d\xb9\x80\xad\xfc\xee\x83\x13\xda\x52\x01\x76\x73\x0e\xf9\x73\x6b\x27\xe6\xba\x32\xd1\x7e\xa6\x9d\xca\xc6\xf4\xa0\x16\xed\xfe\x2d\xb5\xa5\xbb\x3b\x64\x93\x2f\x70\x11\xf1\xc4\x53\xbb\xe8\x8b\xba\xc8\xc7\x03\x5f\x93\xfe\x39\xb5\x81\xfc\xaa\x7a\xaf\x08\x2f\xbe\xd0\x04\xfd\x1f\xd5\xa4\xe2\xd9\xc1\x97\x16\x60\x4b\x19\xce\x19\x9e\x21\x69\xa7\xbe\x51\x8d\x5f\xad\xd2\xac\x31\xb9\x54\x78\x08\x2a\xc9\x13\x06\x00\x8d\xe4\xec\x0e\xf4\xc9\xf9\xd6\xf9\x6d\x2f\x66\xd6\x2f\xaf\xc2\x19\x40\x82\x80\x8a\xf0\xd6\x7b\x9f\xba\x0d\x18\x9b\x05\x5f\x06\x1c\xca\xc2\x4b\x27\x61\x0b\xfb\xd5\xa2\x23\x2d\xd6\xf3\xc8\x90\xa9\xb1\x26\x64\x71\xb3\x22\xe9\xe1\xbf\x97\x75\x7b\xef\x72\xab\xce\xe9\x3b\x05\x1f\xc9\x23\xcf\xd4\xe7\x23\xbe\x3e\x17\x14\x3f\x38\xee\xbb\x90\x0b\x5b\xbc\xf7\x30\x47\x32\xb9\xc0\xa1\xc5\xfc\x95\x09\xa6\x93\x58\x0a\xe7\x3a\x4c\xdf\xc5\xfb\xf2\x0c\xe8\x1e\xbc\x83\x5c\x6c\x90\x9d\x83\x11\x41\xb1\x94\xf6"}, +{{0xdf,0xec,0xde,0x7a,0x56,0xa1,0x8c,0x1f,0x19,0xd8,0x0a,0x19,0xa4,0xf1,0xda,0xdd,0xd0,0xbc,0xec,0xb0,0x1e,0xec,0xad,0x6d,0xfc,0xa0,0xf9,0x57,0xa9,0x14,0xed,0x7a,},{0xaf,0xba,0xa6,0xe7,0x3e,0x85,0xb0,0x2b,0x25,0xa4,0xb5,0x87,0xec,0xb8,0xc4,0xdf,0xb7,0x9a,0xa9,0x20,0x27,0x61,0xef,0xa8,0xd1,0xdf,0x2c,0xd0,0xaa,0x63,0x16,0xc4,},{0xb4,0xfd,0xe5,0x5b,0x91,0x6c,0xf6,0x00,0x68,0xf1,0x9b,0x25,0x35,0x1c,0x14,0x10,0xdc,0xf6,0x6b,0xfc,0x40,0xf9,0x6d,0x1b,0xa2,0x36,0x8b,0xc2,0xb9,0x11,0x5a,0xaa,0x5b,0x2d,0x1c,0xf0,0xe3,0xdf,0xca,0x02,0xac,0x90,0x2a,0x94,0x3e,0x24,0x89,0xa5,0x68,0x1b,0xba,0xfe,0xd3,0x9c,0x6e,0x33,0x21,0x1a,0x9c,0xb2,0xff,0x6e,0x54,0x09,},"\xae\x6e\x8f\xf6\x5c\xcd\xe6\xf2\x64\x84\x95\x08\x26\xb4\x36\x23\x05\x8a\x5e\xfe\x02\x0b\xb1\x9b\x7d\x8b\x4e\x25\x76\x8b\x69\x27\x34\xfe\x07\xc9\x13\xb9\xe8\x81\x26\xbe\xcb\xf1\x4a\x0f\xd0\x20\x5b\x39\xfc\xc2\xae\xc3\x73\xf8\xc1\x84\xc6\xa9\xbb\xbb\x84\x44\x9a\x7c\xa3\xb9\x20\xad\xa0\x88\x01\xdf\xc6\x6f\xf1\x9a\xeb\x92\xf2\x55\x53\x99\xa4\x30\x27\x7a\xe2\x2d\x23\x75\x4e\xaa\xce\x3c\x73\x84\x67\x97\x53\x6d\xd7\x1a\x56\xf4\xb5\x84\x2c\x0f\x41\x0d\x19\x89\xac\xac\x5d\x80\x5d\x26\x57\x2c\x0f\x3a\x64\xdd\x20\x71\x66\x22\x12\xd5\x2f\xe9\x9e\x59\xd9\x66\x04\x77\x77\xf9\x03\x0f\xa4\xfd\x2e\xe7\x4b\x7a\x7c\x9f\x7c\x34\xa6\xdc\x7e\x03\x59\x3a\x13\xd6\x4c\xe6\x24\x53\xee\x3c\xa3\x0d\x84\x67\x28\x39\xf1\x9f\x1c\x15\xd0\xc4\x5d\x27\x55\xbb\x39\x4a\xcf\x4d\xcb\x7f\x7f\x07\x11\xac\x40\xea\x46\x61\x2e\xa3\x7a\x76\x07\xad\x32\xe8\x18\x26\x5f\xab\x19\x33\xf5\x09\x4e\x2d\x03\xbc\xfa\xa5\xf6\x16\x67\xf3\xb3\x7f\x00\xc4\xc5\x8d\x9b\x41\xb9\xaf\x39\x00\x48\x2b\x0f\xfb\x4f\xa4\x37\x6a\xa0\x40\x00\x9d\xec\x2f\x45\x25\x79\x9c\xb0\x05\xf3\x9d\x74\xcb\x2d\x8d\xce\x8c\x20\xc2\xc3\xf5\x40\x97\x03\xaf\x15\x6c\xfb\xa2\x8a\x9d\x91\x64\x39\xcb\x29\xf8\x3d\x24\x29\xce\x62\x23\x51\x9e\x75\xe1\x5c\x7c\x7f\xa2\x15\x11\x9e\x07\x3f\xa7\x97\x4d\xb1\x4f\x7a\x01\x09\x3f\xaa\x94\xad\x52\xab\x1e\xad\xce\x1a\x89\x36\x6c\xa1\x3a\xdb\x89\x06\x64\x38\xa2\xbe\xb7\x30\x34\x17\x0a\xa4\x2d\x9c\x2d\xdb\x97\xc1\x4a\x17\xc3\x09\x43\x76\xd2\xa3\xff\xd8\x09\x5f\xc4\x05\x3d\x91\xd1\x6e\x06\xd2\x76\x93\xa1\x31\x0f\x01\xa7\x51\x11\xcf\xed\xa8\x92\xc3\x97\x2a\x13\x3a\x09\xad\xda\xa8\xf7\x41\x45\xf8\x86\x81\xb6\xd2\x77\x96\x4b\xfe\x38\x55\x1a\x2c\x61\x9f\xa3\xca\xe3\x94\xac\xb2\x9c\x94\x10\xb4\x5e\x10\x1b\x17\x40\xe8\xb2\xaa\x6f\xeb\xc3\xa4\x5d\xad\xb9\xd9\x58\x9d\x59\x7e\x57\xcd\x94\x7b\x68\x4c\xc3\x55\x24\x6c\xe6\xc3\x26\xdd\x98\xcf\x92\xb6\xee\xa3\xba\x5a\xb0\x37\x00\x62\x26\x36\x32\x4d\xc1\x22\x2c\xd7\x48\xfa\x07\xbf\xd3\x9a\x1e\x06\x98\x09\xe5\x67\x14\x1a\x61\x3e\x2e\x8b\xe9\xdd\x39\x8a\xb6\xbe\xaa\xfd\x85\xff\x36\x28\xee\x2a\xa3\x2d\x0a\x57\xbb\xac\xf9\x56\x19\x0b\x5c\x42\x42\xeb\x5b\x85\x87\xd2\xfd\xcb\x07\x41\xb9\x41\x6a\x05\xf5\xfe\xcb\x1f\xb2\xd6\x47\x88\xdc\xe7\x83\xc1\xf6\x3e\x60\x64\x1f\xce\x5e\x1d\x2b\x18\xa9\x50\x0c\xd6\xa1\xfd\x33\x5c\xc1\xdb\x46\xef\x04\x75\x2b\x2d\x22\x07\x2e\x6d\xfc\xfc\xfa\x56\x9b\xb2\x5e\x45\x7a\xfe\xb6\x3a\x4f\xbe\xdc\x29\x3a\xd9\xd1\xab\xa4\xe3\x94\xaa\x10\x97\xe1\x2b\x0f\xc9\x0c\x89\xf7\x6d\xf0\xd6\x44\x1f\xa9\x98\x08\xb6\x0b\xe0\x7d\xfc\xc7\xf9\x01\x0b\xbf\x90\x33\x55\x6d\x5e\xe2\xd4\x48\x93\x7b\x78\x34\x93\x92\x0f\x68\x1e\x4d\xa7\x08\x67\x10\x97\xe1\x99\x48\x1b\x8e\xf0\xe0\x15\x0d\x7c\x28\x51\xdf\x44\xc5\x45\x12\x2f\x9b\x0e\x5b\xa2\xee\xff\x2d\x98\x8d\x56\xd9\xbb\xb5\x5d\x98\x96\x11\x11\x51\xa4\x36\xaf\x06\x5e\x0c\xad\x17\x8a\x2c\x9f\xa8\xf6\x97\x4e\xcd\xf0\x9a\xdf\x01\x33\x00\xcf\xfe\xda\xf4\xb8\x79\x1b\x46\x7b\xa7\x93\x3a\xda\x5d\x63\x2d\xb4\x4e\xd6\xdc\xf2\xaa\x64\x89\x17\xbe\x63\x37\xd2\xe2\xd2\x06\x85\x6d\x08\xf9\xee\x7b\x5e\x2f\x14\xdd\xc6\xd3\xac\x42\x92\x15\xa8\x79\x23\xad\x32\xd5\xdc\xfe\xe3\x68\x63\x16\xdd\xd1\xb2\x7b\xb1\x93\xa5\xfc\x05\xc8\x93\xa9\x39\xa5\xb9\x89\x87\x36\x6c\x82\x9e\x39\x2f\x48\x5e\xa1\x5e\x22\xcd\x8f\x85\x7a\x13\x4a\xfa\x98\xf3\x72\x15\x57\x6d\xdc\x5a\xab\x4f\x2d\x10\xca\xaf\x05\x00\x59\xa3\x35\xf2\x4b\xcd\xcb\xac\x81\x9f\x66\xdb\x07\xaa\xbd\xfb\x76\x27\x1d\x17\xbc\xe2\x2c\xba\x46\x3a\x80\xaa\x89\x2d\x0d\x8e\x05\x5f\x94\x8d\xf7\xf6\xe6\xc3\x00\xda\xef\xfd\x3a\x23\x6d\xdd\xcf\x23\x8f\xe1\x06\x66\xa5\x7c\x6e\x3a\xe7\xe3\x67\x3d\x35\x57\x8f\x8b\x8e\xa6\x9d\x3c\x08\xe0\x14\x0a\xfd\x3e\xe0\x30\xb2\x2a\x37\x21\x60\xf9\x08\xa3\x78\xf8\x10\x1b\x5f\x59\x69\xfe\xa3\x10\xee\xd3\x7a\x00\xd9\x73\x02\xd5\xc2\xdb\xe8\xcc\x60\x00\x75\xdc\xcd\x33\xad\x63\xd2\x65\xaa\xf6\x0e\x24\x1c\xe3\x11\xbe\xd7\xdd\x5e\x27\x45\x24\x1a\xe0\x2a\xe5\x32\xd1\x5c\x18\x88\x6e\x81\x81\x38\x75\x1a\xfc\x51\x85\x0e\x50\x6c\x6d\x31\xa8\xee\xf4\x51\xad\xfd\x4b\x3d\x26\x6b\x41\x5a\x7e"}, +{{0x07,0x82,0x8c,0x58,0x0e,0xbf,0x9e,0x1d,0x82,0x5a,0x59,0xc3,0xbf,0x35,0xf0,0x72,0xae,0x12,0x33,0x55,0xbd,0xcc,0x24,0x9e,0xec,0x7f,0x2f,0xc5,0x75,0x5e,0x29,0xb5,},{0x58,0xe5,0xed,0x85,0x10,0x0b,0xbd,0x9b,0x22,0x21,0xaf,0xc9,0xc9,0x31,0x84,0x33,0x0a,0xd5,0x9e,0x13,0x85,0x60,0x62,0x44,0xbf,0x00,0x3b,0x8d,0x20,0x18,0x50,0x1b,},{0xbb,0x09,0x36,0x04,0x39,0xa8,0x2d,0xee,0x5c,0x7d,0x85,0x77,0x9e,0x54,0xc1,0x3f,0x88,0xe0,0x6d,0x38,0xf4,0xb9,0x49,0x60,0xfe,0x17,0xa1,0xeb,0xca,0xa3,0xee,0x2f,0x33,0x0c,0x64,0x91,0x54,0xbb,0xc8,0x75,0xa4,0x07,0x6c,0xf0,0xbb,0xf7,0xee,0xbf,0x7b,0x8d,0x08,0xd5,0xaa,0x4b,0xe7,0x41,0x38,0x81,0x24,0x5f,0xc2,0xd2,0xb6,0x01,},"\x0e\xda\xd5\xca\xe6\xed\x98\x43\xe9\x1c\x50\xd9\x34\xcf\x55\xdd\x65\x8f\x3d\x25\x20\x39\xcd\x6c\x75\xbe\x4f\x6b\x86\x6f\xb7\x5f\x35\xc8\xf9\x8f\x17\x21\xd7\xe6\xd9\xd9\x8a\x22\xe0\xb4\x93\x4d\xcc\x12\x92\x61\xbf\x67\x23\xb2\xfa\x7a\x99\x5e\x35\xc4\xbd\x79\xc5\x81\x6a\x32\x16\x07\xd9\xdc\xce\x39\xfe\xfa\x1d\x55\xde\x4e\x76\x17\x54\x8e\xc3\x85\xc3\xde\x01\xe3\x66\xbf\x50\xc4\x57\xa5\x55\xe9\x32\x07\x0e\x2a\x5a\x01\x97\xb7\x9e\xfb\xe7\x00\x6f\x0c\xec\x78\xb6\x0e\xbb\x8f\xa8\x78\x1d\x8e\xb7\x32\x6e\xdc\x30\xe6\x2d\x32\x97\xa1\xe0\xa1\x11\x71\x08\xc4\x6e\xe5\xdb\xef\xc6\x59\x42\x89\x33\x5e\x78\x0d\x55\xa0\x84\xf5\x52\xda\x3f\x36\xd3\xc4\xc6\x17\x8b\xa7\x4d\x4d\xec\xef\xc5\xa3\xb8\xc4\x7c\x16\xf5\x34\xbd\xb6\x08\x95\xd3\xd5\x4c\xd2\xbb\x26\x6b\x39\x9e\x4d\x4f\xb4\x8d\x7a\x8c\xde\x17\xf4\x24\x12\x56\x07\x37\xd3\xc0\x6e\x29\xdf\x52\x4d\x0c\xbd\x30\x93\xef\xca\x1c\x8f\xed\xca\xa1\x24\xab\xb2\x7a\xbd\xac\x6a\x29\xe0\xe8\x24\x6a\xbd\x6f\x5f\x53\x19\x50\x03\x7f\x76\x32\x3a\xa5\x6c\xc3\xfe\xfa\x60\x30\x41\xd5\x5f\x19\x29\xe2\x77\xe7\x2c\xda\x1f\x96\x54\x1d\x2a\xf3\xe9\x0c\x0f\x0e\x28\xbe\x19\x6d\x8f\x69\x21\xf3\xcd\x57\xa7\x92\x6b\x86\x0a\xa1\xbc\x40\x35\x76\x89\x2a\x96\xb9\x31\x90\xae\x38\x3f\x63\x1b\x72\x80\x26\x58\xb2\xe8\x45\x1d\x52\xa2\xf4\x5d\xb4\xf8\xbc\x3b\x0e\x4e\x50\xb6\xd6\x03\xa5\xbd\xd3\x0c\x23\x42\x00\xad\x7d\xeb\xb9\x63\xf5\x8a\x4f\xa2\x03\x30\xb3\x69\x64\x49\x44\x5a\xa3\x71\x82\x48\x42\xfb\xf3\x26\xd9\x01\xdf\xe3\xbe\x04\x54\x52\xa3\x74\x0d\xd1\x60\xe7\x27\x33\xf6\xe2\x73\x35\x25\xa2\x9a\x86\x5f\x6f\x50\xd5\x3b\xf7\x19\x1c\x59\x9c\x87\x6f\x5c\x9c\xa1\xe3\xfa\xd7\x96\x06\x48\xe0\xd4\x71\xf7\xd5\xc0\x1c\x67\x3f\x42\xd6\x59\xbc\x3d\x98\xdb\xf0\x7d\x8f\xeb\xfb\x99\x5d\x17\xf9\xa0\x2c\xd6\xc3\x9f\x2d\xdc\xd0\xf1\xd2\x22\xb9\xe1\x1f\x2d\xd7\xd3\xc7\x51\x82\x24\xbb\x6b\xfb\x8b\x7c\x58\xfe\x8a\xc1\x05\x40\x59\x03\xa1\xb9\xda\x75\x16\x71\x5b\x7a\xfc\x38\xa5\x55\xe6\xbb\xcd\xba\xd4\x6e\x34\xe5\x76\xfe\xa3\x4c\xe3\x57\x34\xed\x20\xaf\x5d\x88\xee\xb1\x04\x7a\x26\x60\x64\x8b\xbb\x11\x3a\xd9\xdb\x8c\x53\xed\xb6\xed\x98\x71\xa1\xe4\x4c\x9e\xd2\xdf\x56\x56\xfb\x2b\x28\x06\xec\xf0\x3b\x1e\xca\x9e\xab\x50\xa6\xea\xab\x55\xb9\x33\xb2\xdd\x1f\x21\xd4\x50\xde\x9d\x5c\xb2\x23\x2f\x07\xa3\x92\x08\x1b\x0b\x4b\x88\x5d\x54\x78\x9e\x2f\x75\xbf\x2c\x4c\xda\xd8\x78\x98\x9b\x1d\x6d\xab\xd9\xed\x23\xc7\xc5\xb0\x35\x6a\x7d\x9e\x73\x35\x29\x0d\x7c\x85\xb9\x66\xe8\x01\x84\xbd\x07\x99\x86\x02\x88\x6d\x70\x76\x19\x35\x65\xc8\x1c\xcc\xda\x4c\xc7\xd3\x3c\x85\xd9\x05\xb1\xbe\xb6\xe8\xe7\x41\x8e\x8a\xca\xed\xf0\xd9\xa3\x2a\x7d\x29\xd0\x7c\xf4\x4d\x31\x19\xd4\xe7\x89\x68\x20\xb7\x7d\xe6\x4b\x65\x5e\x4f\x14\x88\x00\x43\x4a\xf7\xbd\xb2\xa5\x6b\x25\xeb\x94\xea\x39\xf2\x16\x95\x96\xbb\x2b\x11\x76\x1f\x08\x2b\xae\xc0\x88\x85\xf4\xa0\xeb\x6c\x95\x76\x71\x35\xa7\xf7\xcd\x72\xe7\x43\xd2\xdf\xf1\x44\xdd\x8b\xaf\xb1\xb3\x18\x00\x6e\x58\x76\xf8\xe2\xcb\x44\xaa\x58\x8f\x90\x62\x66\xac\x67\x11\x9c\x17\xf5\xde\x11\x4e\x72\xe4\x2a\x1f\xb3\x99\x44\x32\x1a\x11\x1f\xa7\x95\xff\x70\x17\xf2\xfb\x8c\xaf\x48\x2f\x55\xd7\x7a\x80\x85\x54\x28\xde\xd7\xec\x20\xac\xec\xca\x83\xf8\xd1\xeb\x13\x7b\x58\x8c\xcb\x74\x5c\x10\x5f\x2b\x2c\xa4\x1c\x3a\x9f\x49\xd3\xc6\xe9\xd7\xc6\x48\xb0\x03\xb9\x70\x7c\x90\x64\x62\xed\xad\x61\x7a\x8c\xfb\xf9\xbc\xc6\xc5\xfb\x6f\xa9\x84\x32\x5d\x65\x82\xe2\x8f\x62\x00\x53\x83\xf3\x38\xdf\x5b\x38\xfa\x9d\x19\xc2\x2a\x2a\x7e\xa1\xd6\x8a\x92\xd1\xd9\x3b\x7f\xb0\xb8\xf3\x3b\xc8\x76\x0f\x28\xae\xb1\x43\x9a\x8b\x07\xf3\xda\x58\xdd\xb1\x55\xb4\x98\xcb\x09\xc7\x5a\x55\x96\x83\x8a\x65\x01\x3e\x24\xd5\x64\x0d\x08\x42\xa7\x69\x93\x22\xcf\x3f\xfc\xb5\x70\x3f\x41\x4f\xfd\x16\x88\x60\xba\xd3\xe3\x08\xb2\xb5\xbf\x3c\xdf\x7f\x36\x3b\xf9\xaa\xf4\xb3\xbc\x42\x4c\x14\x6c\x6f\x54\x21\x43\x0f\x9f\x47\x6a\xa3\x4a\x0c\x6e\xe8\x01\x31\xfc\x4d\x4d\x97\x07\x23\xa2\x18\x6a\xe3\x62\x5e\x28\x6d\x17\xdd\xdc\x43\x5c\xcb\x00\x83\x16\x78\xab\xa5\x84\xa6\x2d\xbf\xf0\x02\xbe\xad\x6e\x11\xe2\x3c\x54\xd3\x3c\xf3\xa4\xb2\x31\xa9\x08"}, +{{0xf0,0x8e,0xe8,0xda,0xa7,0x3e,0x1f,0xeb,0x61,0xa8,0x8e,0x06,0x2d,0xfb,0x10,0x03,0xc8,0x57,0x8a,0x0d,0x53,0xbd,0x3b,0xc9,0xe5,0x89,0xef,0xb9,0x2f,0x68,0xbe,0x14,},{0x76,0x69,0x2c,0xe8,0xd1,0x16,0xec,0xcb,0x89,0x70,0x77,0xed,0xca,0xaf,0xdd,0x3e,0xb4,0x4e,0xa1,0xa4,0x86,0xb9,0x0e,0x49,0xe9,0x7f,0x96,0x69,0x01,0x01,0x55,0x02,},{0x66,0xdf,0xa4,0xc1,0x57,0x5b,0xef,0xf2,0xf5,0xa2,0x30,0xb2,0x8c,0x58,0xc3,0xee,0xa0,0x73,0x6d,0xf3,0x79,0xd7,0x55,0x59,0xbc,0x9d,0x37,0xa9,0x57,0x9d,0x12,0x1c,0x05,0xc3,0x73,0xe8,0x48,0x4c,0x97,0x47,0xef,0x44,0x77,0xe8,0x0c,0x4b,0x2c,0xb4,0xdd,0xf1,0x6a,0xe9,0xfd,0xfa,0x08,0xa0,0x75,0x47,0xd1,0x07,0xdc,0xea,0x12,0x03,},"\x64\xde\x90\x04\x4d\x0e\x76\xbc\x02\xfc\xff\xcb\x75\x26\x36\x67\xb3\xbd\x73\x3b\x40\xbf\xb2\x6c\x6c\x52\xfd\xb4\xb0\x78\x22\x78\xca\xba\xe4\x1e\x21\x29\xea\x40\x17\xe9\x4d\xe8\x60\x87\x96\x4f\x66\xd8\x62\x07\x98\x74\x67\xa1\x68\x8f\x9f\xab\x3f\xfb\x2f\x1d\x00\x63\xbf\x62\x6c\x94\x13\x67\xc1\x2e\x31\x9a\xb7\xca\x30\x20\xc9\xb3\xa7\x21\x5a\x19\x30\x3e\x2d\x0e\x89\x88\x79\x1d\xe0\xd8\xe1\x63\x2d\xaa\x38\xc7\xf3\xe7\xf6\xe4\x8c\xe1\x22\x14\x3d\x1e\x2c\xb6\x61\xba\x77\xc6\x9e\x6a\x71\x09\x11\x64\x4b\xc1\x10\xff\x58\xbb\x00\xb5\x29\x08\x20\xce\x30\x97\x0e\x7f\xde\x18\x9e\x14\x0e\x5c\x70\xc7\x83\xee\xd5\x3f\x0e\x2a\xc7\xec\xae\x4f\x27\xdb\x81\xd1\x5b\x86\x46\xfa\xa9\xc5\xa3\xae\x2b\x7f\x47\xcd\x58\x0d\x77\x07\xb0\x02\x49\x9b\x4c\xfe\xb8\xc5\x91\xaf\xdf\x1c\xc6\x2a\xf2\x59\x5c\x18\x4a\xbc\xf0\xb2\x62\x3a\x1b\xae\x60\xaf\x70\x26\xb2\x8d\x05\x40\xb4\x15\x26\xe3\x02\x0f\x81\xb8\x94\xeb\x3f\xe3\x1b\x72\xb2\x1a\x32\x60\xda\xe3\x21\x0c\x4c\xe4\xfd\x69\xe2\xe5\xea\x0c\x86\x32\xa5\x83\x26\x2a\x12\xb3\xa8\xb1\x6c\x9c\x12\x06\xad\x73\x02\x30\x37\xcf\x30\x65\x3c\xb8\x0a\xa7\xdf\x83\x14\xb0\xf5\xbc\x6e\x9d\x5f\xa0\x0b\x00\x9d\x55\x52\xd8\x3b\x79\x70\xb5\xbc\x4b\x99\x84\xf6\x9d\x1c\xca\x9c\xe4\xcb\x74\xdd\xd2\xd8\x79\xd3\x73\x12\xa0\xe1\x59\xd7\xa6\xaf\xb7\x7a\xc5\x85\xe6\xb4\x59\xc5\x51\x30\x4e\x1e\xeb\xfb\xca\xb4\x3a\x10\xb5\x05\x92\x4e\x03\xea\x33\x2f\x5d\x02\x0a\x55\xc7\xaa\x68\x3c\x54\x1d\xcf\x77\x90\xa2\x40\xaf\x07\x9b\xab\xa9\x40\x96\xb4\x60\x60\xfd\x7a\xfe\x90\x56\xca\x99\xe6\x88\xdf\x28\x0a\x9b\xe8\xc8\xc7\x3e\x6e\x6f\xb0\x52\xa3\x3e\xb3\x32\x8a\x7f\x60\x25\x42\xfe\x28\x0c\x89\x0e\x3c\xca\xf2\x2c\x7f\x34\xf8\x7b\x5e\x5b\xa7\x84\xb4\x72\xb1\xe1\xa9\x93\x47\xa9\xe0\xd2\x40\x85\x8d\x12\x77\xa5\xc6\xb3\x49\x38\x3f\xe4\xfd\x55\xcf\x92\xe6\x9f\xaa\xd3\x26\xb8\xd6\xdb\x46\x23\x30\x26\x22\x1e\xe6\xd0\xa1\xc4\x24\x65\x33\xc4\xa0\xe5\xbd\x17\x2e\xb8\x93\x6a\x9c\x0d\x30\x06\x65\x38\xe3\xeb\x4a\xd5\xcb\x98\x77\xfd\x86\x1b\x48\x2b\x30\x15\x0a\x06\x10\x41\x61\x64\x7e\x01\xd0\x04\xd9\x97\x40\x3e\xe0\x67\x26\xcb\x97\xe2\xe2\x5f\x18\xc6\x68\xee\xe4\xc5\xbf\x72\x52\x98\x03\x18\x9e\xe6\xa7\xae\xc2\x38\xd5\x90\x6e\xa5\xae\x10\x72\x2c\x9a\x61\xa7\x8a\xea\x52\xaf\x33\xea\xac\x75\x40\x6b\x1a\x60\xbe\xfb\xaa\xd4\x84\x76\xd9\xff\x88\x7f\xd2\x83\xeb\x16\x55\xbc\xc0\x7c\xf7\x53\x33\x14\x36\xdb\x5b\x3b\x13\x03\x2f\xf9\xc3\xd6\x96\x38\x0e\x9f\x5a\xbf\x50\xd3\x55\x6f\xda\x0d\xf0\xb5\x38\x97\xa7\x37\xac\x7a\x3b\x87\xc2\xa8\x32\xb0\xc7\x27\x3e\xa9\xfc\x54\xa7\x67\xf1\xa8\x12\xbf\x01\x64\xbf\x75\x21\x63\x0b\x81\xb9\xdd\x93\x0d\x92\xee\x2c\xa2\x8e\x32\x03\xb7\x7b\xc0\x82\xce\xb3\x7d\x55\xed\xbc\xb7\x1d\xf0\xb7\x92\x36\x78\x9a\x25\xd4\x18\xcb\xb9\x55\x44\xe2\xce\xf3\x3b\xbd\xeb\x27\xa3\xf7\x90\x9c\x1f\x49\x8f\x47\x13\x5a\xe9\x03\x3a\xdf\x25\x0a\xd4\xf6\x57\x53\x61\xe4\xcf\xcc\x9b\xcf\x4b\x90\xc3\xad\x47\xa3\x44\x22\x97\xa2\x23\xcc\xa8\x43\xd7\x20\x5e\xd0\x8a\x9b\x87\x16\x0a\x6d\x01\xb4\x6a\x7d\x1c\x84\x4e\x8d\x1f\x18\xf6\x18\x68\x2b\xfb\x22\x95\x5f\x39\x5b\x2a\x57\x90\xa5\x1a\x69\x64\x99\xd9\xe7\x1a\x50\x1f\x3f\xa5\x46\xde\x9b\x10\xae\x47\xbc\xee\x42\xba\x7f\x86\x9f\xb9\xce\x4e\xd7\xc6\x45\x33\x26\xc0\x34\xcf\x05\xd9\xf1\xe3\xc2\x00\x70\x1b\xa7\x52\xda\xbb\xd8\x68\x52\x1c\x3d\x8f\x80\x67\x2d\x42\xf6\xcf\x45\x64\xf0\x8c\xd7\xb3\x90\xe6\xd4\x9d\xd9\x00\x90\xaf\xdb\x84\x48\x6f\xfc\xaa\x4e\x84\xd8\x86\x82\x74\x4d\xc0\xa8\x78\xfa\xa7\xcd\x44\x0a\x8b\x27\x67\x10\x90\x20\x81\xf4\xdc\x84\x17\x46\x19\xa6\x6e\xa3\xa3\x71\xf9\x55\x05\x40\x0d\x99\xfa\x99\x90\x17\x71\x0c\x8e\x27\x14\xbe\x60\x94\x9d\x46\x13\x10\xf7\xd4\x3a\x0d\xc1\x23\x51\x6d\x77\xd3\x62\x21\x3f\x9f\x75\xa5\xa1\xc3\x93\xaf\xfc\x49\xea\x15\x1d\x46\xa8\x1f\xfa\xd2\x39\xf2\x8c\x07\xf6\x5f\x59\xea\x07\x7d\x9a\x4d\x9c\x75\x2d\xe4\x9b\x9e\xf3\x6b\xe6\x0d\x11\x2d\x79\x5f\x58\x8b\x00\xef\x6e\x77\x30\xde\xa6\x5e\x10\x16\xda\x0d\xd4\x62\x37\x0e\x0b\xa5\xc6\x60\x00\x1e\x45\x7c\x08\xb4\x36\xda\x29\x03\xb6\x29\x06\x93\x20\x84\x72\x8c\x81\x67\x1c\xbf\xb0\x79\xbb\x29"}, +{{0x27,0x2d,0x64,0xde,0x50,0xb1,0x31,0x2b,0xee,0x23,0xd7,0xf4,0xce,0xa5,0x08,0xa8,0xfc,0xcf,0x3e,0x9b,0x32,0x4e,0x97,0xb1,0xc8,0xe7,0x25,0x02,0xf6,0x1f,0xbf,0x45,},{0x33,0x49,0x8c,0x3b,0x71,0x2a,0xb9,0xc0,0x1e,0xc7,0x6b,0x2e,0xfe,0x2b,0x83,0xad,0xd1,0xe1,0xf2,0xb5,0xeb,0x78,0xf2,0x16,0x92,0x32,0x34,0x51,0x82,0x0c,0xbe,0x10,},{0x33,0x81,0x4c,0x6e,0xf3,0x75,0xab,0x96,0x37,0x69,0xb2,0xde,0x4a,0x25,0xe7,0x02,0x0f,0xcd,0x97,0xf7,0x8f,0x8f,0xc9,0x34,0x55,0xc4,0xb1,0xc2,0xbd,0x45,0xd4,0xb0,0x1e,0x19,0x29,0x00,0xe3,0x12,0x22,0x65,0xfc,0x55,0x2c,0xd5,0xc5,0xf0,0x0e,0x93,0x1e,0x3a,0x18,0x3c,0xca,0x5b,0xa0,0x80,0x2d,0xaf,0xde,0xbb,0x79,0xeb,0xeb,0x03,},"\xd6\x26\x0d\x7e\xec\x5d\x43\x62\x08\xe7\xe7\x37\x65\x5e\x09\x71\x81\x42\x70\x19\x44\x05\xe3\x6e\x39\xf8\xf1\x7b\x64\x9f\xbc\x16\xc0\xf3\xd7\xf2\xbe\xf5\xeb\xc0\x2b\xb1\xc4\xdf\x48\xe8\x47\x0a\x3e\xae\x8a\x3c\xca\xf6\x40\xab\xcc\x09\x4a\xa9\x11\x50\xff\x1a\x8c\xf1\x16\x96\x93\xeb\xf5\xac\x00\x34\xb9\xb9\x19\xec\xf1\x7d\xb7\x91\xdf\xe5\xfe\xdc\x90\x91\x8b\x23\xe5\x4e\x90\x04\xa1\xae\x77\x1c\x21\x3e\xd7\xed\x73\x34\x43\x4e\x5b\xc0\x2c\x0d\xda\x2b\xd1\xa8\x76\xfb\x82\x4a\x19\x7b\xc9\x96\x13\xb1\x40\x9e\x70\x52\x31\x0b\x08\x20\xda\x71\x44\x69\x29\xae\x7c\xfd\x3a\xfb\xa0\x42\xde\x54\x57\x8a\x5b\xfd\x94\xc1\x54\x43\x91\xa3\xd9\xac\xbd\x56\x63\xef\x65\xc6\x92\x0d\x78\x51\x6d\xec\x1c\xd5\x5f\x6e\xb7\x29\x0b\xa0\xaa\xf9\xa1\x71\x65\x82\x00\xb2\x4a\x47\xa0\x71\xb9\x6f\xea\x03\xc6\xca\x7e\xd0\xd6\xfe\x67\x5d\xd6\x37\x61\x83\x3d\x75\xbc\x5e\x58\xa9\x58\x58\x2d\xb0\x2a\x60\xc6\xce\x0a\x63\xf4\x2b\xa8\x37\xae\x77\xc1\x7a\x32\x70\x5f\xd9\xca\xfa\x58\x7b\x55\x5d\xd4\x61\x98\x51\x07\x97\x94\xe2\x4e\xb4\x46\x08\x83\x5a\x6f\x48\x24\x92\x0d\x57\x7a\x27\x03\x96\xc9\x57\x3b\xc7\xd8\x2f\xe2\xaa\x04\x65\x95\x66\x13\xa2\xc5\x08\xcf\x24\x32\x33\x7a\x36\x5e\x6c\x98\x4c\xba\x91\x7f\x0c\xf8\x42\xaf\x12\x2d\xc8\x9d\xea\x95\x8d\x41\x8c\xae\x44\xa6\xe4\xed\x26\x3a\x41\x5f\xf9\x94\xa5\xff\xb2\xff\x13\x91\x3d\xf2\x14\xbb\xfe\x90\xa3\x4b\x24\x7e\x71\xab\x73\xf7\xff\x00\x4c\x23\xac\xfd\x90\xc7\x67\x61\x1a\xa5\x58\x14\xc6\x69\x64\x16\x8e\x56\x8b\xa7\x5b\xf3\x49\x03\x59\x7c\xdc\xac\x78\xc2\x4b\xb9\xf1\x4f\x5c\x86\xa5\x1f\x36\x4f\x9a\xb4\x1e\x46\x4a\xee\x64\xfa\x50\xa1\xc1\x59\xcb\xd8\x50\x83\x2c\x50\x4a\xb4\x2a\x58\x4a\x96\xd5\xae\xe0\x82\xd8\x2c\x1e\xdd\xa1\x93\x38\x16\x0b\x8d\xcf\xa3\x41\x9b\x3a\xf6\x4d\x9c\xfb\x10\x4f\x98\xf9\xd3\x5e\x53\x94\xe2\x32\x28\xe2\x75\xc8\x7d\xb5\x0c\xa8\x67\x54\x0b\x88\x0c\x7a\xf2\x9f\xbf\x53\x42\x94\x58\x1c\x22\x24\x0b\xcd\x4d\x7d\x2c\x20\xff\xc3\x67\x33\xad\xa2\x76\x53\xd3\xae\x1a\x8c\x22\x03\xea\xc6\x26\xe2\xe9\xbb\x4b\x52\xce\x52\x3e\x5a\xdb\x3b\x2c\x10\xdc\xf7\x8c\x2a\x1e\x62\x6a\x16\xeb\xfa\x1b\xdb\x8c\x16\x14\x93\xa5\xaa\xa2\xd8\x4b\xfa\xa0\xf2\x02\x7f\xfe\x4e\x9e\xae\xb3\x32\xeb\xda\x7c\xbb\xb6\x77\x76\x9d\x78\x51\x7a\xdf\x72\xf8\x23\xa7\xf8\x44\x16\x5a\x07\x98\x78\xd2\x58\xfd\x95\x22\x5c\x21\x17\x78\x37\xe6\x9c\x19\x68\x5a\x05\x1c\xa9\x2b\x12\x0b\x7d\x86\xd7\x85\x95\x47\x1f\xfc\x42\xa5\xe6\xe6\x43\x1b\xe7\xb6\x4f\x80\x76\x45\x8b\xac\xd6\xc7\x29\x03\xcc\x34\xfc\x63\xa4\x0c\xf3\xdf\x00\xef\xf9\xd6\xee\x9a\x8f\x39\xd2\x5e\xad\x81\xa8\x12\x88\x88\xb0\xa1\xac\x0e\x5e\x3a\xd9\x27\x71\x2c\x14\x14\x6a\xdf\x82\x87\x70\xff\x95\x87\x09\xeb\x19\x28\x8e\x77\xbb\x70\x73\x48\x81\xe9\xe0\x16\xcd\x29\xe7\xd0\x89\x93\x41\xff\x6b\x29\x7a\xc7\x96\xbb\xde\x48\x6e\xc3\x59\x49\xf6\xa3\x2b\x2c\xa6\x47\x38\x59\x15\xec\xba\x3b\x9f\x02\x25\x08\x71\x45\xc1\x8d\x65\x59\xd3\xa3\x1d\x6f\x22\xfc\x49\xf8\xa6\x31\x5f\x1d\x32\xab\xee\xb7\xcf\x2c\x2c\x77\x6e\xa7\x35\x0f\xd5\xeb\xc0\xe0\xf2\x65\xba\xcc\xc2\x69\x7a\x7c\x8c\xa4\x0c\x13\x5f\x6c\xfc\xb0\xb5\x8a\x61\x43\x19\x60\xff\xa9\x06\x57\x09\xa9\x61\xa6\x33\xd5\x70\xb7\x3f\xb4\x49\x1d\xe5\x2a\xd0\xd7\xb2\x04\xb6\xe9\x97\xb0\x37\xed\xe3\xf7\xec\xa8\x20\xa7\xcd\xb2\xc6\x9a\xc2\x91\x48\xbe\x35\x23\x50\x8a\xe7\xe4\xc3\xd1\xa7\x17\xf5\x5a\x82\x1d\x14\xc3\xb6\x4f\x08\xca\x9a\xe4\x96\x13\xb1\x15\x77\x3e\xf6\x18\xd3\x21\xc9\x08\xbd\x21\x56\x71\x7a\x43\x4e\x50\x89\xa5\x94\x8c\x04\x5c\x8d\xa8\xa4\xbd\x86\xed\x5f\xab\xc6\xb1\x34\x66\xe6\xde\xda\x58\x32\x07\xd2\xad\xa2\xb2\xab\x9c\xb1\x54\x3d\xf7\xa3\x73\x4d\xfb\xc6\xfc\x42\x81\x06\xd4\x84\x47\x24\xa1\x3d\xf4\x2f\xaa\xb1\x8c\xa8\x9d\xb2\x0a\xc9\xbc\x27\xb8\x53\x94\x66\x7c\x5a\x27\x79\xca\x63\xed\x7a\xc2\xb7\xc0\xd4\x12\x23\x91\xee\x46\x02\xd6\x1e\xa0\x38\x17\x64\xfb\x72\xdc\xc2\x24\xe6\x5e\xae\x2b\xc4\x50\x6b\x0f\x09\xe2\x32\x05\xd0\xbb\x21\xc7\x7d\x82\x87\xc1\x65\xe0\xb4\x2c\x55\x15\x79\x77\x8a\xcb\x72\x58\xa2\x47\x9d\x7c\xf2\x5b\x90\x2e\x8d\x0d\xa4\x29\xbd\xe3\x6b\x45\x90\xda\xe9\x6f\x52\x54\x81\xac\x83\x78"}, +{{0x0c,0x9f,0xe5,0x59,0xad,0x1e,0xd3,0xba,0x16,0x4d,0xac,0xea,0xcb,0x02,0x35,0x67,0xb2,0x43,0x03,0x20,0xb6,0x71,0x5d,0xe7,0x32,0xa0,0x3c,0x59,0xc7,0x30,0x31,0x30,},{0xe7,0x0f,0xc4,0x66,0xfb,0x2a,0xcd,0x74,0xe0,0x99,0xc3,0x6e,0x2c,0x22,0xfa,0x51,0x29,0x0b,0xdd,0xe9,0x6d,0xf9,0xc3,0x1b,0x6d,0xfb,0xfd,0xc2,0xe2,0xc1,0x4a,0x40,},{0x6c,0xd8,0xae,0xd9,0x7d,0x9c,0x62,0xd5,0xfd,0xae,0x59,0x7d,0x06,0x1c,0x0c,0x2b,0xc3,0x7e,0x42,0xdf,0x06,0xb8,0x32,0x7a,0x46,0x8f,0x92,0xb3,0xf4,0x38,0xa1,0xe6,0xb6,0xb1,0xef,0x2b,0xe7,0x85,0x49,0xa2,0x89,0xfd,0x3f,0xc1,0xa6,0x29,0x9e,0x5a,0x33,0xd5,0x39,0x6c,0xb4,0xfa,0xc1,0xe8,0xe9,0x98,0x2f,0x0c,0xb3,0xd2,0x0d,0x07,},"\x26\xeb\xc6\x48\xcf\x8c\x79\x65\xec\x6e\xbe\x96\x5d\x9c\x79\x2b\xed\x90\x65\x5a\xd4\x40\x18\x3c\x6d\x70\xea\x64\x67\xbb\x8e\x6f\x04\xec\x84\x3f\x33\x31\x56\x91\x7b\xf4\xc5\x1d\x0e\xd0\xf2\x8b\x7c\xd3\x1b\xc1\x2c\xf8\x40\x68\x6b\x82\xb0\xc2\xc3\x50\xbb\xda\xc8\x05\x33\x37\x25\xd6\xb6\x9c\x2a\xb7\xf3\x4e\xe5\x93\xfa\x1c\xcc\xed\xf3\xf0\x64\x2a\x68\x8f\xcc\x1c\xd9\x8b\x09\x87\xd0\x1f\x71\x3a\x2f\xa6\x41\x6c\x96\x19\x21\xde\x0c\xc2\xc9\xec\x7a\x55\x58\x55\xe7\xfc\xd4\xc7\xdd\xaa\x14\xfd\x91\xec\xb0\x42\x24\xe1\x76\x1b\x7d\x6b\x35\xf4\xaa\x56\x18\xa5\x00\xca\x00\xd1\xca\x24\x51\xb5\xd3\x68\xaf\xde\x3a\x40\x7e\x78\x31\x35\xf3\x90\x19\xa5\xb9\x84\xe8\x2a\xc2\x79\xc0\x5e\x48\xc2\x95\xeb\xd1\x56\x38\x21\xa0\x74\x3c\x52\x24\x6b\x5d\x2b\x20\x34\xe3\xae\xb6\xce\x7c\x5c\xf9\x19\xe7\x4a\x9c\x7b\xbc\x9e\x25\xda\x30\x43\x0e\xb1\x6e\xcf\x38\x37\xeb\x38\xa0\xf5\x59\x79\x2a\x72\x98\x90\xba\x83\x10\x26\x0f\x8a\xeb\x9b\x5a\xf0\x0e\xb6\x33\xc1\x2d\xee\x02\x26\x28\xba\x41\x8d\x75\xcf\x18\xde\x2f\x2e\x65\xe4\x9b\x1a\x69\x68\x4d\x61\x27\xef\x48\x1c\xa8\x61\xec\xbc\xe3\xbe\x86\x49\x7e\x65\xdf\x4c\x5f\xcd\x08\x17\xc9\x71\x6b\x59\xf2\xa2\x63\xd5\xe9\xeb\x60\x68\x39\xf8\x5c\x5a\x36\x58\x37\xb0\xfb\xe2\xc4\x27\x4d\x66\xcb\x2c\x65\xed\x36\x5f\xab\xf5\x8f\x15\xbe\x52\xb5\x1c\xb6\x01\x18\xca\x4f\x73\x0d\x44\x73\x59\xf7\xef\x34\x6b\x75\x02\x17\xd4\x7b\x2e\x79\xc8\x6c\x0c\x62\x81\x6a\x0c\x7c\x18\xa2\xce\x2b\x68\x8e\x0c\xce\x0d\x75\x23\x21\xe7\x9b\x42\x38\x57\xda\xc5\x9f\x8f\xbe\xb0\x94\x11\xe7\x16\x69\xef\x9a\x26\x43\xf2\xe9\x9f\x38\x7a\xc1\x83\xe0\xb0\xac\x72\xc5\x9a\x0c\x3c\x18\xc0\xde\x8b\x01\x08\x78\x07\x4a\xcc\x1a\x2b\x39\xf9\xdf\x99\xd9\xf8\xf8\xb5\x2f\xef\xe4\x94\x3c\x52\x5f\xd4\xd0\x6a\xd8\x78\xe4\x66\x08\xab\xf2\x7a\x54\xbc\x50\x06\xf6\x47\xdb\x72\x48\x51\xdb\x7c\x45\x78\xae\x66\x58\x3d\xc4\xbb\x51\x8e\xf0\x28\x89\x03\x47\xe8\xfc\xe0\x92\x7d\x7d\x9a\xf3\xab\x5d\x0d\x2d\x20\x2a\x40\x26\xaa\x2e\xa7\x48\x79\x62\x67\x6a\x60\x32\x98\xe7\xd2\xe7\xb9\x09\x21\xee\x1b\x52\x80\x6d\x71\xa7\x64\xe0\x3e\x25\xdd\xd6\x84\x8f\x61\xd4\x6f\xad\x3d\x00\x8e\x10\xee\x5c\xd5\xa3\x39\x0f\x9d\x15\x8a\x44\x37\xef\x61\x5f\xc9\x0a\xc5\xbf\x3a\x9d\x68\x2e\x12\xc3\x39\x8a\xc7\x76\x80\xd2\x2c\xd1\xa6\xa5\x6e\xc3\xb2\x5c\xed\xe8\x67\xed\xd3\x83\x15\x9c\x61\x64\xd6\x3e\x9c\xd1\xc9\x56\xac\x72\x35\xff\xfa\xe9\x36\x16\x6c\xcd\x35\x89\x8e\x29\xc9\xb4\xca\x4e\x29\x25\xda\x32\x3b\x6f\xbf\x67\xcf\xd5\x96\xc8\x8a\x1a\x35\xa8\x35\x98\x51\xdd\xcb\xa8\xf6\x13\x4a\x9f\xaa\x24\x4d\xcb\x47\xe6\x91\x27\x6e\xe6\x25\xcc\x20\xad\xce\xc2\x1c\xbe\x77\xa3\xac\xb9\xba\x72\xf0\xc9\xd3\xda\x7e\x9c\xd5\xbe\x3b\x95\x99\x0b\xa5\x4a\x9f\x31\xaf\x17\x1f\x95\xae\xea\xd3\x33\x1c\xb1\x88\xa5\xb2\xc6\xf5\x39\xac\xb4\x8b\x98\xb3\xf7\x34\x1f\x60\x25\x1c\xb6\x04\x29\xcc\xd9\xcf\x32\xf0\x09\x20\x5f\x27\x53\xfb\xbb\x26\xaa\x53\x17\x43\x42\xad\x18\x4d\xab\x68\x70\xc0\xfb\x52\x93\x01\x19\xd9\xf9\x7d\x84\x89\xa6\x00\x76\xaa\xdb\x2e\x96\x05\x4a\xc7\xcb\x7f\x84\xe1\x3c\x75\xbb\xf9\xe4\xd9\x24\xd2\x27\x2a\xfe\xf0\x87\x19\x15\xe2\x43\xce\x66\xfc\x2a\x88\x88\x51\x35\x35\xb1\x0b\xb4\x07\x9c\x80\x6b\xd9\x49\x28\x1e\x28\x28\x35\x23\xd0\xd2\x10\xb3\x1e\xf6\x2a\x95\xdc\xae\x0c\xd2\x52\x90\xc7\xed\xf2\xc2\x4b\x43\x28\x22\xde\xbe\x34\x7f\x1c\xae\x94\x5f\x57\x28\xc7\x1b\x54\x03\xef\x14\xe7\x2c\x3d\x83\x42\xe1\x98\xb3\x62\xee\x20\xf8\x09\xe4\x6a\xca\x01\x5f\x35\x47\x7f\xf8\x9a\xc4\xb3\x7e\x66\x15\x85\x6f\x7e\xa2\x51\xfb\xfe\x13\xf9\x06\x52\x59\xb0\x94\x6a\xae\xf2\x49\x43\x27\x0a\x85\x4d\xe8\x89\x78\x00\x33\xd6\x3d\xda\x54\x47\x99\x8a\x3e\xd7\xe5\x06\xae\xb5\x1e\xa3\x7b\x68\x1a\xc3\x07\x67\x97\xac\xdb\xfc\xc2\x78\x83\x63\x0a\xdb\x72\x26\x0a\x46\xaf\x0a\x60\xd5\x3f\x66\x54\x56\x6e\x20\xd6\x08\x8c\xd4\x8e\x23\xb2\x8d\x81\xf0\xee\xd2\x05\xb9\x2a\xaf\xd9\x61\x64\xd6\xd3\xca\x3f\xc8\xb1\x71\x80\x4e\xe9\xfc\xe7\xab\xae\xd2\xea\x4d\xdf\x9c\xb2\xb3\xae\x73\xa7\x0e\xd6\x3d\xe4\x5e\x14\x10\x14\x28\xd0\xa7\xa2\x26\xdb\x39\xab\x6c\xd0\x43\x74\x08\x0e\x69\x83\xf0\x18\xce\x93\xda\x4c\x89\xac"}, +{{0x15,0xd7,0x5a,0xd8,0xe4,0xaf,0xb1,0x26,0x34,0xcc,0x8e,0x60,0x0f,0x1a,0x42,0x67,0xef,0x95,0x84,0xf4,0xc4,0xac,0x44,0xff,0xfe,0x4b,0x9f,0xcb,0x88,0x5c,0x9d,0x2a,},{0x09,0xd1,0x26,0xf0,0x17,0xe0,0x16,0x97,0x74,0xe8,0xc3,0x7a,0xb3,0x79,0x26,0x3a,0x80,0x75,0x74,0x61,0x27,0xc2,0xd1,0x1e,0xcb,0x0e,0x4c,0xb4,0x54,0x70,0x9f,0xf1,},{0xa8,0xf2,0xf4,0xb9,0xe2,0x07,0x2c,0xa9,0xfa,0xde,0x37,0xfd,0xd6,0x2d,0x8d,0x02,0x42,0xfd,0x4d,0xaa,0x09,0xfd,0x85,0x6e,0x75,0xf4,0xe3,0x43,0xc7,0x26,0x0e,0xa6,0x77,0xf7,0x53,0xa6,0x27,0xae,0xd0,0x8c,0xb9,0x6c,0x44,0x4e,0x29,0xbd,0xb5,0xb5,0x38,0x5d,0x43,0x84,0x3b,0xbe,0x79,0xa3,0xdd,0xa3,0x6e,0x1e,0x11,0x01,0xc5,0x0f,},"\xd1\xce\xa2\xb7\xe9\xaf\xc1\xf0\xfa\xb8\x90\xd2\x70\x0a\x5a\xe4\x1e\x15\xe7\xd3\x4d\x3b\xf1\x9d\x0f\x34\xd9\xf9\xf0\xab\x98\x12\xdc\x7c\x2a\x8d\xc4\x4c\x8e\xe7\xf3\x78\x87\x61\xec\xd9\x88\xee\x72\xc7\x36\xb6\x2a\x7c\xac\x3c\xc9\xb7\x38\xe9\x38\xdf\x77\x87\x37\x7e\xb9\xff\xd1\x20\xd4\xff\x58\xcf\x1c\x06\x75\x63\x3f\x7e\x83\xc4\xb1\x15\x54\x8f\x14\xd2\xf7\x0c\x6d\x48\x22\x11\x44\x3a\x84\x99\x59\x95\x58\xc1\x42\x77\x98\x0f\xa4\x2a\x78\x42\x79\x07\xf7\x3a\x41\xf5\xf6\x69\x3b\x2f\x75\xfe\x5e\x7a\x6f\xf0\xa6\xc3\xa4\xe2\xed\x1d\x0d\x96\x8d\x5c\xc9\xd6\xf1\x3d\x41\xc3\xd2\x91\x39\x6a\xe7\xe4\x34\xe6\x64\xb2\xff\x24\x3e\x7f\x6d\x88\x01\x02\x10\x07\x8c\x39\xb5\xa5\x76\xca\xf4\x09\xbb\x47\x11\xb3\xee\xfc\x48\x6b\x67\xb7\xff\xea\xe0\xcb\xac\x6a\x0f\xbd\xf5\x34\x3f\xb2\xae\x4e\x05\x7e\xdc\x8c\x9d\x2e\xd3\x1e\xae\x9e\xc8\x3d\x2b\xed\xd2\x19\xeb\x98\x9b\x2d\x44\x19\x61\x8c\x2d\x3c\xe4\x49\x0e\x35\xfb\xca\xd4\x32\xb0\x12\x47\x95\xf9\xc5\xcb\xdc\x1e\xb0\xc3\x07\x2b\x4a\xa8\x01\xd2\x6f\xbc\xc7\xb0\x7b\x82\x57\xf5\xfe\x47\xac\xd9\xbc\x58\x7b\x56\x57\xcf\x07\xca\x54\x5b\xb5\x68\xc9\xe4\xe7\x3c\xdd\xf6\x25\x4e\x22\xf7\x8a\xb2\xf8\x06\x45\x19\xf8\xab\xfd\x16\xfc\xfa\x90\xf8\x76\x87\xdb\x0c\x42\x09\xbe\x2c\x6c\x79\xa5\x52\x1f\x44\x18\x96\x78\xd9\x32\xc5\x45\x85\x70\x0a\x24\x37\x70\x2e\x56\xaa\xb5\x88\xa1\x7c\xb2\xcc\x94\xc0\x0e\x87\x57\x0e\xf3\xac\x51\x33\xd7\x53\x03\x8a\xa4\x65\x10\xa2\x60\xc1\xfe\x80\x47\x9b\xc0\x2e\xed\x9a\x8d\x1d\xe9\x93\x54\xac\x26\x48\xb4\x8b\x96\xab\x1b\x80\xcc\xa6\xca\xe1\x87\x7f\x37\xd7\x04\x28\xbb\x50\x85\x0e\x03\x08\xdb\x0b\x42\x30\x87\xbf\x7d\xde\x27\x9e\x09\x67\x66\xf2\xab\x3a\xb2\x38\x5b\x04\x64\xa5\xbe\xd7\xbb\xd8\xd4\x57\xe9\x35\xe2\x00\xaa\xaa\x8d\x95\x15\x70\xe0\x53\x07\x6d\xb1\x8a\x6a\x62\xf7\x2b\x31\x95\x79\x88\x4a\x08\x26\xba\x2b\x43\x63\x71\xdd\x21\x8b\x01\xa0\xc5\xe5\x8d\x0c\xd5\xff\x98\x25\xe4\x46\x6f\xe9\x66\xdf\x05\xcc\x31\xc8\x03\xe5\x21\x21\x83\xdd\xf2\x9c\xef\x7f\xb9\x16\x48\xa4\xf8\xee\x19\xfd\x5f\x8d\xbd\x8a\x56\xbe\x7a\xbf\x33\x65\x9a\x92\x24\xa1\xe2\x7a\x10\x24\xef\xfd\xfb\x88\xe8\x80\x61\x48\xd0\xd1\x78\x09\x06\xaf\x1e\xbe\x3e\x5f\x14\x36\x31\x90\xd8\x8c\xc6\xe5\x08\x94\x44\xf1\x25\xd0\x63\x15\x5d\xcf\x86\xca\x92\x63\xf2\xf5\xf1\x83\xc2\x69\x74\xfe\x00\x0b\x93\x42\xd2\x4c\x78\x1e\x20\x58\x28\x7c\xb6\xf3\xf1\xe3\x27\x0c\x22\xb7\x70\x7b\x83\x23\xa5\xcc\x8d\xb8\x1a\xa9\x06\xbb\x59\xd6\x96\xcb\x97\xcc\x74\xe3\x59\x59\x5f\xfb\x83\x73\xca\xd3\x71\x0e\xa0\x9e\xa9\x74\x4c\x20\xe9\xa1\x2e\x05\xbe\x5a\x95\xf0\x85\xac\x56\x16\x78\xd7\xda\x43\x2e\x4c\x7c\xb5\x3e\x12\x71\xdf\x5c\xd5\xa3\x39\xd2\xd7\x52\x0f\x1c\x18\x48\xd1\x50\x71\xd8\xc6\x98\x46\xb2\x3c\x5d\x24\x32\xc7\x38\x90\xf2\xed\xed\x37\xc3\xd2\x96\x4a\x4b\x5b\x55\x22\x58\x88\xe8\x92\xf5\x26\xd1\xca\xc3\x1e\xac\x35\x6f\x36\x1c\x2b\xf3\x36\xc4\x62\xd6\x0c\x82\xe8\x2b\x61\x6f\x2a\x51\x9c\x2f\x67\xbf\x01\x29\x03\x69\xbe\x9b\x55\xe9\xf5\xc8\xce\xc4\xf2\xe1\xb2\xab\x30\x25\x06\xc9\x03\xdc\x3e\x7b\x9c\x97\x81\x41\xdc\x90\x4b\x01\xb1\xc2\x3d\x25\x00\x43\x99\xbf\x8b\x73\xd6\x9c\xd5\x39\xc7\x9a\xf5\xe9\xa0\xa5\x11\xec\xa2\x21\x07\x8a\x1f\xf7\xb0\xf6\x04\xae\xa8\x42\x46\xc3\xcb\x32\xdb\x93\x81\xbe\x12\x17\x67\xe0\x97\xbe\xa5\x17\xbf\xcd\x82\xdf\xe9\x21\x37\x98\x40\xef\xb4\xb6\xf0\x2a\x48\xec\xda\xf1\x2d\x2c\xd3\x89\x30\xd4\x47\x3a\xdf\x97\xcd\x71\xdc\x4e\xa1\x03\x82\xf4\xf5\xd1\xdd\x75\x62\xcd\x4b\xf5\x11\x59\x32\xf6\xc4\x70\x0a\xa8\xfe\x8d\xec\xa9\xd5\xe7\x27\x79\x02\xb8\xf8\x86\x52\x97\x65\xdb\x24\x86\x07\x4b\x23\xa1\x9f\xd4\xb0\x43\x56\xbf\xa6\x22\x6c\x82\xba\xf6\x9a\x08\x7d\x9c\xa1\x88\x23\xf8\xe3\xe6\x83\x08\xe1\x6b\x80\x4c\x36\x3d\xf5\xb6\x30\x7e\x76\x24\x0d\xb1\xed\x84\x1b\x61\x2d\x65\x54\x8d\xdf\xbe\x83\x67\xda\x60\x77\x2c\x6a\xff\x55\x4d\xc8\x5d\x04\x19\x48\x34\x5e\x56\x7d\xa9\x33\x31\x51\x85\x8f\xdf\x69\x93\x27\x39\x25\xbf\xdc\x71\x81\xb5\xf6\x46\xd0\x63\xa8\xc8\xf3\x10\x56\x9b\x0e\xd0\x93\xbd\x9d\xff\x04\xfe\xbf\x0b\x41\xc6\xdc\x55\x16\x9a\x14\xa3\xc8\x62\xe5\x41\x6f\x1e\x58\x2f\xde\xe8\xfe\x87\xdc"}, +{{0xbf,0x3c,0x0c,0xbb,0xbe,0x20,0xbe,0x2a,0xcf,0xaf,0xb2,0x7a,0x36,0x11,0xb4,0x89,0x21,0xa7,0x28,0xab,0x17,0x33,0x4b,0x8a,0xfd,0xee,0x83,0x05,0x17,0x8f,0x61,0x3b,},{0x45,0x00,0xa0,0x3c,0x3a,0x3f,0xc7,0x8a,0xc7,0x9d,0x0c,0x6e,0x03,0xdf,0xc2,0x7c,0xfc,0x36,0x16,0xa4,0x2e,0xd2,0xc8,0xc1,0x87,0x88,0x6d,0x4e,0x6e,0x0c,0x27,0xfd,},{0x8f,0x87,0x03,0xbc,0xf4,0xc0,0x32,0x94,0x17,0x33,0x9e,0xb0,0x26,0xf2,0xb7,0x2d,0x31,0x4d,0x92,0x2e,0x9a,0xcc,0xb5,0xd8,0xbb,0x7e,0xec,0x87,0xe0,0x7e,0x61,0x38,0x55,0x16,0x72,0xa6,0x13,0x2c,0xb4,0xf8,0x75,0x50,0x8e,0xd3,0x29,0x95,0x67,0xb4,0xa7,0x41,0x34,0xd2,0xbd,0xf0,0xd8,0x57,0xf9,0x80,0x86,0x1d,0x18,0xbe,0x7e,0x01,},"\x8f\x30\xba\x2f\x79\x2e\x9a\x97\xf6\xea\xfe\x29\xf9\x76\xa4\x80\x28\xcb\x88\x57\xb5\xc7\x98\xbc\x2b\x61\x68\xc4\x64\x44\xc0\xce\x69\x60\x70\x37\x4c\x5e\x6a\x40\xc3\xd1\x8a\x5d\xc7\x66\x9f\xc4\x1d\xb9\xa8\x1c\xff\x75\x9b\x8c\xa0\x15\x98\x71\xc3\x44\x2e\x8c\x75\x12\x69\x8f\xa4\x47\xb5\x78\x3e\xe0\x1d\x1b\x61\x14\x49\xab\xad\x23\x71\x62\x92\x2b\x02\xd1\xae\xc5\xde\x1d\x66\x6f\x17\xda\x16\x13\x10\x63\x01\xd3\x05\x86\xd1\x16\xe2\xac\x09\x00\x7d\xd7\x1e\x81\x23\xed\xe4\xc5\xa6\xa9\xac\x07\x7f\xe3\xd9\x39\x09\xda\x62\x8e\x86\x58\x70\xa4\xe2\x5c\xb3\x55\x91\x67\x5a\x06\x90\xbe\xc4\xaf\x02\x81\x71\x4f\xe6\x66\x1b\xd5\xc0\x0a\x27\xd7\x9f\x95\x9f\xb4\xd4\xfb\x16\x36\xa6\xa3\x57\x5f\x4f\x01\x47\x06\x63\x89\x9d\x73\x74\x72\xb0\x96\xbe\x4d\xb7\x23\x71\x53\x67\xa4\x1a\x3a\x4c\x13\xf7\x42\xd9\x08\xf4\xd9\x21\xcf\xdd\x15\x6e\x75\x86\x82\x61\xba\x9c\x10\xd8\x58\x74\xca\x2d\x6c\x0c\x9e\x72\x95\xe5\x66\x2b\xd9\x16\xa3\x63\xc7\xa7\x96\xea\xd6\x17\xc4\x25\x1e\x67\x94\xda\x06\xc3\xd0\x8f\x2f\xdc\x38\x86\x94\x4a\x75\x09\xe6\x40\x9c\x90\x6b\x59\x31\x13\xb4\xb1\xf9\x85\x01\x32\x96\x0d\x9f\x3a\x4e\xeb\x73\x86\xfa\x59\x2f\x61\x93\xbe\xab\x8e\x0f\xf0\xf2\x89\x08\xa0\xd5\x48\xdb\x87\xba\xe9\x78\xb0\x5a\xbb\xca\x9b\x3e\x96\xd8\x79\x5b\x88\x07\x7f\x62\x0f\x21\x24\xe3\x15\x90\xeb\x09\x9e\x94\xe0\xe6\xe3\xcd\x62\x0a\xe6\x29\x0f\x3e\x2d\x01\x46\x7e\x5b\xef\x4f\xab\xde\xf7\x9d\x9a\xb9\x23\x9e\x75\x3e\xc4\xfa\x0b\xb1\x10\xff\x1d\x39\x3f\xca\x02\x24\x35\x02\xd7\xe9\x87\x99\x1e\xb7\x6d\x08\xf8\xbe\x7e\xb2\xb1\xee\x00\xc3\xb6\x8b\xbf\x72\xa6\x23\xba\xa1\x5b\xe8\x96\xb3\x21\x5e\xbe\x8a\x82\x31\x31\x09\xfc\x62\x9b\x0c\xce\x64\x91\xf8\x13\xc2\x49\x70\xe4\xff\xe6\x86\x9e\x40\xb4\x6b\x4e\xd2\x29\x86\xd0\x04\x21\x55\x27\x6c\x23\x0d\xe4\xc0\x5d\x67\x85\x52\xf2\xe8\x51\xca\xcf\x5a\x47\x21\x57\xdb\xb1\xa9\x9a\x2b\x42\xff\x40\x37\xf0\xdc\x63\x80\x67\x29\x21\xc9\x09\x20\x6e\x80\x05\x0e\x61\xa6\xb3\x05\x6b\x17\xe3\xae\x83\x50\x09\xb2\x04\x19\xa3\xb9\x84\x6d\x37\x48\x92\xe7\x19\xf1\xb3\x5b\xc1\x25\x7d\xa9\x3c\xcc\x6d\x8f\x8f\xca\xa8\xe6\x09\xa8\xd2\x04\xdf\x10\x8b\xe7\x19\x34\x67\xe7\xf1\x05\x93\x52\x82\xc3\xfe\x66\x70\xa5\x32\x94\x42\xea\x3e\xdd\xa2\x37\x6a\x03\xa1\xcf\xe8\x72\x3a\x90\x9c\x06\x4d\x30\xfe\x9b\xb0\x21\x2c\x33\xaf\xe2\xbe\xa3\x0c\x91\x43\xc0\x01\xda\x01\xc7\xed\x50\x45\x59\xb9\x7f\xe2\xce\xa0\x9b\xeb\x9d\xb5\x19\x00\xdc\x13\x67\x05\x92\x1e\x20\x29\x78\x45\xba\x72\xa9\x7a\xa7\xc9\x53\x81\x45\x71\xbe\x3f\x08\xce\xf9\x68\x04\x5a\x5a\xc3\x40\x04\xf6\x7f\xbf\xa5\x4e\x99\x6b\x31\x1b\xd8\xdc\x52\x7d\x89\xe1\xd4\xf5\x34\x53\xa6\x71\x37\x20\x10\x1c\x45\xa6\x0e\xe3\xa0\x5c\x2e\xe6\x6f\x13\x4b\x5a\xf4\x0e\x4b\x70\xef\x37\xba\x3f\x0a\xfd\xef\xc0\x39\xf3\x42\xc2\x8a\xf9\x19\x82\x51\x38\x1a\x10\x79\xa5\xdd\x03\x5a\x8c\x28\x97\x6c\x6b\x7f\x4d\xb0\x9e\xa3\x83\xa3\xa8\x7f\x0f\x85\x1f\xd3\x31\xae\xa7\xfa\x4b\xfc\xd9\x56\x31\xd6\x52\xfa\x2f\x50\xf1\xc2\x3f\xf2\xbc\x13\x7a\x06\x04\xe3\xd9\xf3\x9c\xcb\x96\x51\x45\xbc\xa4\x8b\x06\xdc\x8a\x81\x75\x47\xb6\x25\xef\xfa\x79\x6d\x00\x0c\x37\x74\xba\xd1\x98\xdb\x12\x41\xbe\x7a\x2c\x0d\xc4\xa4\x64\x1b\x9a\x8c\xb9\xcb\x8c\x8c\x38\x87\x57\x6f\x52\x72\xc3\x3a\xaf\xfe\x45\x61\x5f\x51\xa9\x6f\xae\x76\xcf\x51\x25\xbc\x69\xad\x0a\x40\x38\x79\x07\x99\xb5\xc2\x62\x44\x21\xa6\x43\x3d\xba\xb3\x9c\xcc\xb0\xb1\x78\x7b\x5b\xce\x28\x95\x94\x48\x9d\x17\xed\xb5\xf9\x31\x03\x74\x80\x7d\x36\xc6\xe6\x73\x47\x26\xbb\x33\x00\x4e\xca\xe8\xbb\x69\x1d\xcd\x38\x76\x01\xf4\xea\x91\x1b\x4b\x90\xeb\xff\x75\x6d\x7d\x8d\x9e\xb4\x22\xcb\xb9\xaa\xf7\xf4\x77\x2e\x0a\x54\x36\x43\x06\x85\xe5\x7b\x69\x74\x54\xe8\x2e\xea\xdc\xe4\xab\xa0\x62\xb7\x76\x82\xcf\x21\x9b\xe1\xfd\x9b\x00\xf1\xcb\x11\x35\xa1\x02\x13\x49\x53\x9a\x4b\x93\xae\x21\x3f\x19\x3d\x29\x32\x73\x8e\xf7\x29\x20\x49\x9b\x7b\xe2\xa8\x1c\x9b\xaa\xed\x17\xc5\x46\x41\xa5\x97\x4d\x27\x22\x32\x41\xe3\xc6\xa0\x95\x22\x6b\xd2\x37\xe0\x59\x1e\x00\x2b\x3a\xf0\x56\x5d\xf3\xe9\x76\x42\x0f\x97\x64\xa0\x9a\xe8\xbf\xa2\x79\x5f\x8f\xad\x7f\xc6\x87\xbd\x2d\xe2\x3d\x14\x88\xf4\x49\xd8"}, +{{0x28,0x7f,0xaf,0xd2,0x13,0x74,0x57,0x2f,0x57,0x81,0x00,0x47,0xd0,0xd9,0x8c,0xb1,0xff,0x3d,0x01,0x20,0xfa,0xa4,0x88,0x61,0x32,0x24,0x57,0x32,0xc1,0xa6,0xab,0x78,},{0xe8,0x25,0x20,0x63,0xf5,0xad,0x7e,0x95,0xbd,0x05,0xc5,0x02,0xa8,0xbc,0x4a,0x17,0x55,0x63,0x60,0x86,0x9b,0x9d,0xe0,0xa3,0xb8,0x58,0x93,0x8e,0x11,0x11,0x76,0x19,},{0x62,0x01,0xe3,0x05,0x91,0xd3,0x6b,0x7b,0x22,0x6e,0x36,0xfd,0xf5,0x64,0x34,0xc4,0x7c,0xd3,0x05,0x18,0x37,0xaf,0x31,0x31,0x3a,0x99,0x17,0xfd,0x02,0xdd,0xed,0x2b,0x5b,0xbb,0x4b,0xbc,0x36,0x8b,0x3b,0xd1,0x5d,0x06,0x20,0x45,0xf1,0x05,0xb6,0xe7,0x34,0x1b,0x15,0x15,0x0d,0x36,0xf9,0x00,0x87,0x59,0x1d,0x83,0x99,0x01,0xb8,0x01,},"\xb3\xc4\x43\xe4\xe5\x89\x9c\x16\xd3\x9e\x81\xb4\xf8\x07\x40\x42\xa9\x04\xa7\x35\x07\x4b\x27\x95\xd9\xac\x06\xb1\x37\x9e\xf7\x61\x8d\x2a\x53\x4b\x6b\xef\x81\x56\x9e\x60\x71\x92\x67\xbf\x29\xcd\x9d\x16\xac\xc9\xa1\x74\xd8\x02\x6b\x14\xb1\x27\xd0\xd2\xd8\xb4\x58\x39\x98\x89\x5a\xd7\xef\x72\xfe\xdc\x53\xb8\xf0\x8a\x22\x50\x10\x0e\x1f\x1f\x0a\xab\x48\xbc\x70\x74\x64\x34\x88\xe6\xb6\x70\xe1\xb0\x72\x7c\x38\x5a\x34\xff\x65\xa0\xd7\xe8\x3b\xa8\x60\x83\xb8\x73\xdf\xf0\x55\x92\x09\xb1\x4b\x2a\xc4\x2b\xf7\xc5\x72\xd0\xc5\x91\x7a\xc4\x2e\x4a\xe4\xda\xe1\xdd\x42\x35\x79\x52\x76\xa0\x76\x13\x2c\xfe\x3e\x0c\x35\x0b\x26\x58\x0f\xbb\x3a\xf8\x17\x77\xb9\x3a\xd9\x5c\xb7\xff\x17\xc2\xd9\x80\xce\x0d\x49\x2f\x6d\x40\xfa\x90\xba\x3f\xca\xa2\x1b\xb6\x87\x35\xee\x1e\xf2\x08\x49\x5e\xbf\x7b\x02\x27\x6f\xfa\x1e\xfc\x08\x16\x58\xbb\x44\xcd\x27\x61\xef\x5e\x3e\x1c\xa6\x0e\xc8\xb5\xd8\x16\xd4\xab\xac\xd0\xbc\xc8\x02\x68\xd8\xf4\xdf\x8b\x3a\x52\x04\x9d\xb0\x15\x7e\x2b\x6e\x81\xac\xd6\xf3\xf2\x89\x47\xc0\x76\x27\x95\x5c\xda\xc9\xea\xa1\xde\x17\xd4\xb9\xda\xa3\x61\xfb\x49\x78\x26\x64\xd7\xd6\xd2\xca\x5c\xec\x6d\x14\x89\x3c\x3e\x80\xb6\xd1\x6d\xaa\xcf\xfc\xc0\xb7\x59\x37\xe8\xbe\xf6\xf9\xe1\x12\xa8\x7f\x4b\x03\x5f\x90\x36\x07\x0a\x2c\xcc\x55\xc2\xaa\xd9\x39\xdf\x67\x4f\x7e\x4e\x12\x68\x5e\x01\x6e\xa0\xe4\x90\x2a\xaa\xaf\xaf\xfe\x38\xdd\xb2\xf9\x0d\x9c\xf7\x85\x37\xf6\x13\x91\x69\x6f\xf0\x33\x0a\xe8\xf7\x9a\x1c\x1e\xd5\xd5\x2b\x4e\xe2\xa6\x2d\x90\xfb\x82\xd9\xa4\x83\x93\xfa\x33\x81\x0b\x40\xd0\x45\x59\x02\xd5\x74\xff\x05\x20\x03\xe0\x16\x0c\x0f\x47\xb5\xe5\x80\xa0\x78\xbc\xee\xf0\x60\x73\xdd\xa8\xb2\xd1\xf1\x04\xa5\x95\xe9\x0b\xb6\xa4\x8e\xdd\xd8\x65\xf1\xca\xe4\xf1\x78\xfe\x22\xe7\x5f\x2f\x61\x24\xa9\xda\x06\x82\x44\x71\x12\xb3\xdb\x5b\xe8\xc4\x24\x72\xb2\x41\xe9\x44\xfd\x23\x70\xc2\xdc\x27\x15\xc0\x5a\x41\xbd\xbc\x89\x0c\x41\xc6\x5f\xb0\x8c\x2f\x59\x31\x74\x39\x1a\xc8\x80\xf3\xcb\x67\xd1\xb7\x4f\xf8\x02\xef\x96\x2a\xfe\xf7\xb9\xf3\xea\x32\x6f\x95\x27\xe7\xfb\xa6\x98\x18\x79\x24\xb6\x4c\xcd\xd0\x86\x62\x48\xc7\x6e\xe6\x4c\x79\x06\x9b\xe0\xa0\x57\xb1\x0a\xe1\x90\xf3\x8f\xf5\xab\xa8\x44\xe3\x93\x31\xcf\x1d\xb1\x3c\x90\x09\x06\xbe\xe0\xd7\xe7\x54\x6e\xf5\x23\x24\xe3\x7c\x59\x06\x75\xf1\x39\xf5\x8f\x57\x3a\x49\x4f\x4a\xe8\x2c\x4e\xc8\x10\x66\xa6\x8e\x2d\x92\x90\x01\x91\xc4\x7d\x30\x62\xf0\xf9\xaa\xed\x19\x11\x37\xcd\xa9\xb8\x3c\xd1\x30\xe8\x26\x29\x60\xe6\x24\x4f\x8f\x6e\xf3\x9f\x15\xa4\xfe\xd1\x3c\xb6\x69\xed\xc1\x9f\x5c\xe1\x62\xce\xb8\xd2\x42\xb9\xad\xdb\xfb\xa8\x77\x2c\xe7\x49\x85\xa5\xf3\x72\x0d\x59\x0a\x92\x0e\x1d\xca\x75\xa8\x79\xb1\xaa\x45\x9f\x74\x62\xff\xf2\xe9\x50\x72\x76\x1b\x20\x92\x54\xfe\x38\xc5\x4d\x83\x3a\x8e\x2c\xb8\xfc\x40\xc5\x98\xf3\xc7\xf7\xd6\xc5\x70\x57\x15\xd0\x30\x8d\xc3\x0e\xaa\x84\x67\x6d\x20\x9d\x7b\x7b\x31\x34\x47\x56\xe6\x9a\x9a\x4c\xb4\xe4\xa2\x51\x81\x7a\x37\x86\xfe\xa6\x72\x8d\xd6\x08\x22\x33\x6b\x45\xae\x5d\x47\xc7\x04\xb4\x5c\x4c\xad\x38\xc1\xe0\x1a\xb9\x3d\x14\x16\x92\xd5\x5d\x12\xfd\xb9\x74\x0f\x1d\x18\x15\x82\xf1\xc4\x8c\xe5\x43\x48\x60\xd9\x30\xf0\xe7\xe7\x0e\xdc\xff\xb8\x55\x60\xa5\x3d\xba\x95\xd5\x7b\x31\xe8\x92\x41\x37\xbc\x2c\x19\xe3\x4b\xb9\xc9\x86\x68\x77\x17\x42\x80\xe8\x0c\x23\x97\x8d\x57\x79\x58\x64\xa7\x37\x4a\xef\x38\x3f\x3b\xf6\x37\x53\x59\xbf\x63\x56\x47\x40\x09\x84\x61\xa6\xc7\x6e\x8f\x23\x89\x13\x28\x87\x69\xa1\xcb\x1c\x95\xb2\x2c\x32\xa9\xeb\xb3\xec\xeb\x04\x8e\xe3\x24\xcf\x0d\x7e\x85\xa3\x89\xb0\x4d\xed\xbb\xcb\xee\xf2\x98\xd0\x52\x78\x16\x08\x5c\x0c\x83\xef\xaa\x29\x85\x46\xe8\x39\x0b\xd1\xbf\xe4\x65\xec\x1b\xaf\xae\x69\xee\x52\x18\xe7\x2c\xae\xdb\x9b\x64\x9c\xf7\x3e\xec\x45\x4a\x2b\x48\x49\x65\x17\x96\x72\xde\xbc\xf9\x44\x13\x63\x99\x5a\x8a\x90\x7d\xe1\x7d\xc0\x68\x4f\x2a\xea\x57\x9a\x2f\xb4\x48\x41\x95\xdb\x41\x15\xca\x32\xe9\x70\x52\x6d\xc0\x0a\x5c\xac\xaf\x58\x87\x11\xdb\xd4\x69\xce\x80\xbd\x29\x7c\x4f\x41\xd6\xfa\x28\xa5\x97\xc6\x37\x2c\x0d\x21\x49\x60\xb5\x45\x98\xcd\x8b\xc8\x49\xeb\xdc\xa3\x6d\x62\x25\xb2\x0d\xec\x0d\x03\x11\x69\xce\xbb\x36\xea\xdc\x3a"}, +{{0x9a,0xd0,0x49,0x10,0x08,0x51,0xd0,0xf7,0x9b,0x71,0x12,0x25,0xc9,0x88,0x47,0x79,0x5a,0xcf,0xc3,0x60,0x1c,0x14,0xb8,0xa9,0x77,0x8d,0x62,0x70,0xcd,0x4c,0x05,0xed,},{0xe7,0xca,0xcf,0x4f,0x37,0x14,0x54,0x3c,0x27,0xa3,0xe9,0xed,0x83,0x3b,0xaf,0x3b,0xde,0x4c,0x09,0x56,0x3b,0xef,0x59,0xe7,0x63,0xfa,0xb7,0x1f,0xb5,0xe4,0xff,0x56,},{0xfe,0xc0,0xaf,0x34,0xcb,0xc5,0xcf,0xfc,0x56,0xe9,0x6d,0xd5,0xed,0x59,0x68,0xe5,0x2c,0xbd,0x42,0x69,0x84,0x4f,0xc3,0x0e,0x3a,0xb0,0xd3,0x47,0x2b,0x5d,0x18,0x0c,0x8d,0x1b,0x76,0x90,0x51,0x8f,0x41,0xf1,0x44,0x38,0xe7,0xf3,0xa8,0x3d,0x5e,0x89,0x76,0xcb,0x9a,0x26,0x15,0x1f,0xc4,0x14,0x9a,0x32,0x98,0xd7,0xe4,0x2c,0x05,0x03,},"\xc2\x84\xbd\xd8\xf8\x27\x5b\x49\xac\x80\x8c\x39\x04\x5e\x50\xe1\xed\x50\xc8\xa1\xaf\xd0\x11\xaf\xe5\xdb\x3d\xda\x62\x0b\xe8\xae\xc3\x7f\x45\x60\x57\x62\xe2\x25\xd0\x41\x11\xf2\x1b\x49\xfc\xef\xca\x3f\x3d\x5f\x81\x3b\x20\x20\xa5\x2c\x49\xf9\x5c\x4a\xd6\x1c\xa2\x14\x61\x8a\xde\x7e\xed\x6c\xd8\xd3\x14\xdc\x4c\x63\x55\x95\x52\x77\xd4\x57\x46\x2f\x03\xb9\xfb\xa2\xe2\x25\xb1\xb5\x37\xcd\x4b\x52\x37\x50\x5c\x90\xd4\x32\x05\xe1\x71\x5c\x39\x63\xcc\xfb\xec\x37\x9e\x6c\x17\x05\xe0\x80\x34\xa3\x1a\xfc\xe6\x46\x72\x7e\x78\xa2\x0e\xed\x88\xae\xb0\xdc\xda\xbc\x5c\x86\xe8\x69\x79\xe6\x3a\x5c\x26\xc3\xe2\x17\x79\x73\xb6\x98\x3c\xeb\xfe\xda\x9f\x31\x47\x93\x61\xb6\x61\x76\x3a\xa7\x26\x1c\x09\x39\xca\xd4\x8b\x71\x90\x8e\xa9\x07\x68\xbb\x6c\x95\x83\xd8\xea\xeb\x9e\x03\x38\x51\x5a\xca\x12\x42\x62\x6d\xc6\xbe\x04\xec\xc4\x42\x9e\x4c\xbb\x4f\xf3\x36\x09\x61\x92\xf7\x50\x1e\xc4\x71\xb5\x96\xa9\x9d\x4c\x02\x75\x82\xcc\x69\xe2\x04\xb6\xfb\xcd\xdf\x59\xf5\xbf\x74\x62\xdd\xcd\x59\x89\x12\x1f\xd1\x0f\x11\xa0\x67\x5b\x6c\x4e\x4f\x65\x20\xd2\x7d\x7c\x61\x43\x1b\xa7\xd1\x74\xf5\x73\x95\xa0\xbf\x72\xd3\x8c\x11\x42\x73\x6d\xed\x6b\x91\xe4\x81\x1c\x0e\x85\x41\xa6\xc0\xd9\x96\xc5\xa1\x7d\xc9\x7d\xb3\x88\xf7\x21\xd2\x35\x7d\x3c\x6a\xf5\xc8\x6b\x1d\x5e\x47\x6e\xa0\xac\x0b\x1c\x11\xd4\x38\x7f\x76\x90\x39\xbd\xf5\x38\xa0\x21\x6e\xdd\x00\x45\xee\x6d\xd8\x9e\xef\x82\xa4\x25\xa8\x3f\xaa\x1b\x12\x80\x70\x38\xca\x19\xeb\xec\x00\x2e\x8b\x3c\x15\x34\x4c\x61\xcf\xd1\xe5\xf0\xe3\xb0\x27\x3d\xeb\x37\x27\x8c\xf1\x97\xd8\xa8\x3b\x13\xd9\x92\x30\x8a\x51\x37\x3e\xb3\x81\x14\xc9\xe4\x5b\x43\x87\x80\x27\x7d\x1e\x32\xf3\x97\x29\x62\xa3\xe1\x4a\x8d\x08\xdb\x9f\x09\xae\xc3\xdd\x32\xa5\xb9\x94\x23\xe6\x1f\x5e\x79\x94\x4a\xb5\x7a\x36\xf6\xec\x07\xcc\x32\x04\xf9\x16\x5e\xe0\x21\xad\xa9\x3e\x6f\xec\xb7\xec\x45\x6a\xa0\x28\x8c\x37\x8a\x75\xaf\xd6\xe9\xda\xd6\xc6\xf8\x8e\x95\x9a\x2c\xf2\x8b\xfe\x56\xd2\xe6\x1b\x2a\xda\xec\xf0\xd8\x6d\xd8\x92\x8b\xce\xda\x26\xb0\x54\x02\x46\xb7\x33\x7f\x5c\xdc\xec\x11\xfb\x0c\x1a\x59\xd6\x31\xfc\xca\x19\x40\x8f\x95\x22\xb6\x8a\x39\xf8\x6e\xf9\x70\xb8\x83\xa0\xf0\xbd\x6b\x7b\x14\x15\xec\x9a\xa0\x43\xb5\x2e\x19\xba\xc1\x76\xd6\x7b\x79\xe2\xa5\xdc\xa8\xbf\xd2\x91\x02\xac\x60\x8e\x47\x3e\x9f\x98\x2c\x3e\xc8\x93\x2d\x8a\xa8\xcd\x56\x52\x84\x49\x1d\xe5\x2f\x51\x6b\x9e\xbf\xb7\xdb\xe1\x29\x95\x11\xae\x73\x2c\x2a\xd1\xee\x49\x92\xb0\x77\xfa\xff\xc6\x5f\x48\x8f\x1b\xa2\x15\xda\x69\x79\x60\x09\x71\x19\x6d\x0f\xf3\xa0\x8a\xd9\xf0\x0e\x82\x9c\x1d\xe1\xaf\xca\x10\xca\x47\x6b\xe6\x64\xaa\xd2\x61\x88\x9b\x0e\xb7\xae\xb6\xed\x86\x37\x61\x89\x00\xac\xf4\x81\xe2\xd2\x24\xec\x64\xa6\xe6\xcf\x4f\xa4\xdf\x73\x1b\x7a\x4f\xee\xff\x25\x80\xc9\x9b\x6d\x75\xb4\xdc\xd0\x97\x69\x65\xcb\x2b\x0b\x56\x35\x22\x78\x42\xd0\x8a\x7d\x90\x7a\xae\xbc\x2f\xde\xd8\x00\x98\x11\xdc\xdd\x73\x35\x49\x21\x75\x3b\xc5\xde\xc0\x17\x68\x93\x35\xf5\x6d\x0f\xb7\xae\x21\x3b\x41\x79\x2b\x1f\x4e\xb1\x4a\x24\x53\x59\x77\xa3\x05\xb1\x9e\xb9\x83\x8d\xc6\xb5\x15\x28\xb9\x8a\x39\xbd\xa0\x60\x10\x71\x7a\x20\x8c\x34\x7a\xa1\x58\xee\xcd\xfd\x9a\x04\x72\xd3\xb8\xd9\x20\xf9\x69\xe1\x2b\x65\x91\x9b\xda\x38\xb4\x61\x94\x98\x50\xcc\x9c\xc1\x8d\x8e\x3b\xaa\x8c\x88\x6d\x93\xcd\x09\x6a\x20\x9d\x54\x3c\xa3\x37\x5f\xc4\xe7\xd6\x51\x03\xcb\x64\x24\xbe\xab\x44\xe8\xbc\x4a\x5b\x62\xc2\x9a\x01\xbc\xf4\x4d\xcc\x61\xe7\x67\x5c\x02\x5d\xec\x07\x24\x20\x01\x94\xbd\xe7\x4d\x72\xc0\x2e\x94\xa9\x46\xa7\x52\xf3\x60\x84\x57\xfd\x91\xf2\x92\x71\x57\x71\x48\x7d\x26\xca\xd4\xe5\xcf\x6e\xf7\xc6\xf7\x16\x27\xa4\xda\xf8\xa4\xc9\xb8\x91\xc1\xee\x8f\x04\xae\xaa\x99\xfe\x0c\x8b\x4e\x83\x3b\x76\x09\x06\x6b\x61\x32\xa9\x68\x89\x0e\x26\x95\xda\x22\xb2\xd8\x57\xc8\xc0\xad\x91\x87\xc9\x60\x69\xe4\x76\xe2\x7e\x46\x32\xc4\x47\xee\x76\x71\x4a\x31\xd1\xe5\x14\x9e\xcb\x33\x7e\xe1\x32\xf3\x55\x2d\xa3\x3a\xb2\xd6\xfa\x9d\x7e\x93\xf6\x8a\x77\xcb\xf1\x91\xcb\x06\xbc\x22\xf3\x47\x0a\xf6\xd7\x58\x1e\x3a\xcc\xbe\xca\x0b\x6f\xeb\x08\xa1\x4b\x9a\x80\xc1\xef\x59\x37\x4c\xcd\xc0\x52\x3c\x36\x84\x50\x4c\x01\x04\xbb\xa2\x2c\x10"}, +{{0xde,0x54,0xe1,0x3f,0x9e,0x2c,0xc7,0x54,0x54,0x6c,0x99,0xb3,0x3b,0x3d,0x72,0xf4,0xd1,0xf7,0x71,0x50,0x38,0xa9,0x65,0x9f,0x33,0x63,0x65,0x77,0xbb,0x52,0x6a,0xdb,},{0x36,0x33,0x8d,0xb3,0x32,0x6b,0x00,0x5e,0x5c,0x61,0xff,0x78,0x2b,0xe2,0xea,0xb1,0x66,0xd4,0xeb,0x72,0x34,0xa9,0x8e,0xa1,0xcd,0x85,0x5e,0x1a,0xd5,0x35,0xe9,0x4c,},{0x37,0xac,0xa8,0xf2,0x48,0x39,0x4a,0x9e,0x04,0xd0,0x6a,0x7d,0xa8,0x4a,0x7d,0xef,0xa3,0x9d,0xe4,0xda,0x2b,0xcb,0x18,0xd5,0xf6,0x4c,0xc3,0x4d,0xb0,0x86,0x51,0xaf,0x4a,0xbb,0x19,0xfa,0x2a,0x92,0xa7,0xdd,0xa5,0x6e,0xc9,0x93,0x0b,0x81,0xae,0xbd,0x23,0x99,0x05,0x11,0xf6,0x84,0xc6,0xd1,0x5b,0xa5,0x95,0xf7,0xd4,0xa2,0x74,0x0e,},"\xdc\x40\x41\xad\x61\x42\x3a\x12\xa0\x41\x13\x18\xa6\xe6\x2a\x5e\xf6\x4a\x19\xab\xe2\xd9\x85\x22\x97\xbe\x2d\x4a\x35\xeb\x86\x70\xca\x36\xc5\x21\x53\x1b\x30\x38\xac\xda\xee\xa2\xea\x01\xa0\xb6\x18\x78\x62\xa4\xe1\xa8\x9d\x4b\x81\xc5\x31\x8e\xd4\xd6\x71\x31\xbc\x38\xf8\x41\xa1\x42\xa2\xf6\xf3\x16\xdf\xf0\x76\x93\x9d\xc0\xeb\x81\xb2\x30\xfe\xa9\x88\x1f\x8f\x0f\xf7\xed\x0b\x29\x3f\x69\xb2\x89\xfe\x77\x08\x81\xfb\x37\x10\x80\x8e\x8e\x59\xe6\x4e\x19\x0c\x1e\x37\x9b\x9d\xd3\x48\xb0\x2c\x23\x47\xd7\xe2\x06\x96\x79\x0b\x62\x77\x6a\x2e\x82\x5b\xed\x69\x17\x03\x7c\xb6\x35\xc9\x2f\xbc\x76\xb4\xc5\x85\x10\x27\xe7\xf1\x38\x52\xee\x7e\x7c\x52\x57\x3a\x90\x30\xb7\x9f\x22\xb6\x0d\x58\x69\xef\xe6\x80\xc0\x16\x64\x92\x9f\xe9\xa0\x6f\xa3\x33\x05\x2b\xe1\xd6\xaf\x3a\x0b\x48\x2c\x33\x2e\x18\x05\x1e\x78\xb3\x33\x83\x9d\x6c\xb9\x3d\x93\xeb\xfb\x27\x7e\x42\x68\xfb\xee\xee\xba\x1e\x8f\x96\xa5\xc9\xe3\x28\xc4\x26\x72\x12\xca\xc2\x51\x21\x5b\xfa\xa7\x8f\xd8\x8a\x87\x41\x7a\x80\x60\x2d\xcd\x88\x28\xe8\x04\x00\xda\x30\x4e\x98\x98\x62\xd1\x32\x01\x08\x2d\xe3\x53\x09\x25\xe0\xed\xc2\xc1\x30\xa9\xa4\x19\x07\x1b\x31\x08\x8d\xa6\xf6\xff\x40\x56\x30\x1c\x12\x9f\xc2\x13\x52\x33\x62\x8d\x16\xd8\xbf\x16\x0f\x6c\xe8\x6d\x83\xcd\x4e\x29\xae\x0c\x73\x84\x3d\x70\xb5\x30\x56\xc5\xaf\x3f\x3d\xc5\x61\x27\x1c\xb5\xaf\xf3\x93\xf0\x80\x3a\xde\x07\x2d\x9c\xeb\x74\x5b\x61\x87\xb2\x8d\x24\x69\x67\x67\xd5\xc2\x1f\x4d\x4a\xc5\x8d\x5b\xb6\x6c\x5c\xad\xfe\xfb\x16\x26\xef\x93\xf7\x14\xc7\x82\xb6\xef\x3c\xcf\x4b\x44\xee\x75\xf0\xbb\x75\x7a\x25\xd9\xb4\x6a\x9d\x93\x1a\x03\x72\x7d\x49\x6a\x22\x81\x0c\x63\x4f\x5c\x1a\xe6\x0c\xbd\xf2\xf1\xea\x29\xb5\x46\x07\xcf\xf5\x0d\x9f\x8e\x03\xa0\xa4\x51\x3c\xf6\x8d\xfb\x61\x97\x73\x41\x1b\x61\x80\x95\x9a\x8a\xac\x30\xb2\xee\xe4\xad\x32\x79\x15\xf6\x0a\xe5\x2b\x90\xe0\x4a\x9b\xce\xf8\xdc\x67\xe7\x1e\xa1\x0a\xca\x55\x3d\xb9\x89\x5c\xd8\x00\x84\x57\xd7\x6f\x02\xce\xb5\x35\x00\x21\x11\x09\xe8\x96\x03\xf3\x04\xd8\x80\xaa\xf0\x28\x61\xfe\x37\xc9\x53\x4a\x9d\x67\x2d\x83\x71\x3c\xd3\x26\xc9\xab\x81\xc3\x53\x76\x4c\xa5\xad\x5a\xc0\xe7\xf1\xff\x88\x0f\xb4\x8a\xcd\x9c\xbb\x94\x90\x64\xe2\x11\x83\xbc\x38\xfb\x1d\x90\xcf\xe6\x19\xa8\xb8\xfb\xf5\x32\x18\x89\xbb\x15\xc0\x2a\x53\xe4\xd3\x67\xfc\x66\x88\x77\xb6\x62\x28\x1c\x4a\x2a\xf6\x78\xf8\x6e\x69\x1d\xaa\x8a\xfd\xca\xc1\xb8\x20\x18\x9f\xe5\xc2\x50\x8c\xe3\x6e\xdd\x9c\x6f\x8f\x51\x57\x50\x71\x83\x94\x39\xa0\x03\x35\x2c\x15\x73\xe1\x27\x68\xdd\x6d\xeb\xdf\x1e\xd4\xf9\x4a\xc7\x9d\xf1\xab\x6a\x0b\xc2\x50\x79\xc0\x93\x54\x77\xd9\x14\x99\x88\xec\x3b\x87\x93\xef\xcd\xa8\x59\xac\xc3\x92\xab\x3f\xa9\x94\x93\xd7\xae\x0a\x65\x75\xb6\x95\xa1\xce\x07\x65\x32\x86\x02\x87\xdd\x49\x89\x67\xc4\x6f\x7a\xdd\x49\x49\x4c\x02\xe7\x44\xc4\x02\x80\x19\x57\x82\xe2\x42\x44\x76\x16\x5e\x72\xce\xe2\x36\x42\xe5\x1c\xec\x43\x21\x91\x11\x6a\xec\x59\xb5\x9f\xcf\x0a\x36\x83\xb9\x5f\x76\x07\x60\xa2\x0b\xd6\x74\x54\xd8\xde\x64\x7c\x0f\x9f\xfc\x4f\x90\xf6\xe4\x5a\xc9\x3d\x80\x2f\x33\x82\x99\xef\x28\x0d\x3b\xb7\xa4\xa8\x9d\xb8\xc5\x9a\x12\x52\x6f\x27\x83\x02\x4c\x8a\xde\x90\x02\xf0\x0e\x3d\x52\x9b\x78\xdc\xdd\x49\x03\xda\xf5\x76\x7a\x2b\xed\x75\x14\x53\x96\xef\xb6\x97\x90\x71\x2d\xe6\xa5\x90\x1e\x6d\x8c\x15\x28\x01\x82\x38\x82\x85\x02\x1d\x0e\x70\x92\x92\x15\xd9\xf2\xb7\x99\xbb\x92\xf2\xca\x56\xf4\x8e\x8c\xbb\xa2\xf1\x9b\x08\x58\x45\x12\x65\x67\xcf\xaf\xa6\x03\xc2\x94\x6e\xa1\xe7\xd2\x74\x55\x4a\x38\xbf\x7d\x86\x51\x1f\x3e\x47\x4f\x9f\xa5\xcb\x11\x10\x5f\xb5\x2f\xc6\x81\x77\xf3\x38\x5f\xe1\x39\x7b\xe5\x84\xa7\x00\x89\xdc\x74\x1b\x4b\x00\x95\xbf\x7e\xb2\x99\x3b\x41\x8d\xf8\x7b\x14\xa1\xf9\x79\x26\xe8\x68\xdf\x6e\x56\x8b\xec\xa2\x21\x5f\x2d\xd7\xce\x8a\x3c\x9e\xe8\x49\xcb\x41\x34\x6c\x68\x4f\x7f\xfe\xf0\xa7\x92\xed\xf4\x33\xca\x99\xef\x34\xc7\x3f\x92\x72\xa7\xeb\x97\x58\x7c\x8f\xce\x4a\x51\x36\x44\x47\x37\x13\x8d\x53\xea\xdf\x3a\x84\xf5\x01\xbb\x10\x45\x6e\x8e\x4a\x40\x47\x08\x2c\x9e\x14\x35\xf5\x76\x52\x6c\x21\x64\x71\x4d\x70\xb3\xd0\xa6\xe9\xc0\x8a\x53\xe3\x23\x84\x0f\x4d\xcf\xe8\xf2\xd1\x9f\x0b\xe2\xc8\x8e"}, +{{0x85,0x04,0xfb,0xca,0xab,0xa6,0x76,0x83,0xf8,0x15,0x49,0x92,0x82,0xb6,0xeb,0xd4,0x97,0xa8,0x1a,0x91,0x56,0xf5,0x3e,0x02,0x5c,0x2d,0x3e,0xce,0xe0,0xdb,0x65,0x59,},{0xe6,0x2d,0xa8,0x64,0x93,0xa0,0xca,0xf5,0x29,0x21,0xd5,0x60,0x2f,0xbd,0xc3,0xdd,0x3a,0x84,0x36,0x94,0x1f,0x6b,0xe2,0x40,0xb3,0x15,0x09,0x68,0x12,0x38,0x74,0x6d,},{0xc0,0xea,0x07,0x4b,0xf9,0xad,0xde,0xe2,0xe3,0x35,0x0a,0x96,0x9e,0x7c,0x56,0x9e,0x3a,0xea,0x1a,0x41,0x88,0xee,0x5a,0xf3,0x4c,0xb7,0x3f,0x38,0x82,0x98,0x65,0x3d,0x29,0x9b,0x5d,0xbd,0x94,0x16,0x3f,0xba,0x20,0x9e,0x8f,0x7d,0xc2,0xe2,0x63,0x4d,0x3a,0x52,0xa0,0x28,0x10,0xa8,0x8c,0x61,0x52,0x94,0x5b,0xc1,0x6b,0xbd,0xfb,0x0c,},"\x6c\x63\xed\xbd\x40\xa0\x38\x74\xec\xae\xf8\x16\x02\xcd\x68\x50\xc0\x9f\x49\x15\xb7\xaa\xf4\x18\x25\x8c\x56\x83\x64\x53\x8e\x83\x92\xa8\xc3\x79\x83\x8b\x0c\x95\x34\x5b\xf6\x4c\x3d\xbc\x17\x58\x53\xfb\x64\x1f\x35\x0f\x0b\x53\xa0\x5a\x8e\xc2\x90\x28\x8c\x03\x26\xd4\x35\xff\x77\x6f\x86\x83\xa2\x73\x33\x3f\x9b\xb2\x80\x21\x84\xec\xc5\x3b\x06\xb2\x8c\x2c\x40\x2a\x54\xbf\x13\x4c\x1a\x23\x29\x97\x49\xa6\xce\x2b\x51\xa7\xba\x22\x23\x21\x48\x79\x7e\x99\x3f\xf2\x58\x28\x6e\x94\x77\x78\xa8\x74\x2d\x3f\x36\xcc\x78\x42\x97\x60\x43\xfc\x23\xda\x8a\x97\xec\xb9\x71\x5f\xc0\x5f\xb0\xf2\x3f\xa7\x32\x1d\xdc\x19\x32\x86\x16\x31\x60\x4e\xba\x2e\xf2\x5d\x8b\x75\x6c\xe4\x73\x36\x56\xbf\xd1\xe1\x47\x08\x92\x3a\xc7\xc6\x0a\x79\x84\x61\x36\xd7\x41\x97\x3b\xa5\x51\x41\x89\x72\x0b\xc0\xf7\x77\x4b\x7b\xd3\x57\x45\x95\xbd\xe2\x51\x50\x31\xb2\x5b\x62\x65\x4b\x16\x10\x35\x77\x80\x70\xac\xe1\x49\x71\xdf\x1f\xe0\xbe\x4e\xa1\xef\x55\xcf\x87\x47\xd3\x71\x6c\x1c\xe7\x07\xb1\xa7\xc8\x52\x0e\x6d\xeb\x33\x4e\xb1\x86\x33\x8f\xc9\x30\x00\x76\x8e\xb2\xbe\x40\xc6\xe0\xdc\x3f\x5d\xf8\x31\xb3\x2c\x3a\x2c\x33\xe2\x88\x98\xd6\x76\x2a\x15\x22\xd3\xd4\x8d\xae\xe5\x6a\x02\x69\xbd\xdf\x6c\xfc\x9d\x73\xf8\xd1\x78\xae\xcc\xbf\xfe\xf7\xce\x16\x4f\x98\xaf\xea\x22\x4a\x9b\x60\xed\xe4\x6a\x95\xfa\xdc\x9f\xc5\xd9\x4d\x20\x9c\x16\x6d\x9b\x8d\xe2\x53\x38\x1e\xa2\x24\x88\x62\x94\x6b\x9c\xf5\x34\x94\x74\x55\xc2\x44\x58\xcf\x56\x68\x3a\x0e\xc4\x7a\x2c\x65\x07\x5c\x69\x4c\x7c\x3d\x6a\xdf\x9a\xe5\xe8\xad\x31\xac\x76\x9f\x83\xaa\x26\xe3\x12\xc5\xb0\x1a\x9a\x09\x40\x4b\x15\xb8\x14\xba\xa7\x66\x6b\x3e\x03\xf0\x6a\x8d\x63\x48\xab\x8c\xcb\x9b\x60\xa4\xa4\xfa\xf8\x6f\x71\x35\xdf\x03\x9d\x95\x5c\x07\xbd\x92\xe7\xb8\xe3\x27\xee\x6c\x1b\x40\x19\x6a\x28\xb4\x44\x6a\xa5\xa9\xb2\xb9\x77\x3a\xb7\x6e\x3c\xe2\x11\x80\xf0\x9d\x6c\x08\xd2\x77\xc6\x77\x1d\x67\xe2\x2d\x84\x54\x0f\xa4\x3b\x38\xf6\x34\xcf\xc4\x6e\x5b\x8c\x33\xf1\x5a\x56\x8a\x77\xe4\x91\x4a\xad\x9a\xb8\xc9\xf7\xfe\xa4\x7f\x76\x77\xc0\x18\x80\xb3\xe8\x5d\x2d\x0e\x3f\xbd\x6d\xc6\xe9\x9e\x43\x7d\xdc\x73\x6f\x92\xb5\xa2\xff\x29\x27\xe0\xb4\x42\x14\x2f\x08\x97\xd0\xb8\xa1\x9a\xc2\x03\x63\x3d\xf4\x13\xfe\xaf\x8e\xf5\x0a\x5f\x76\x7b\xed\xaf\x20\xf1\xc1\x3f\x3b\x89\xd1\xe8\xb7\xbd\x18\xd5\x91\xf9\xde\x11\x6e\xe3\x4f\x98\x24\xe4\xea\xd1\xae\x9d\xa2\xe8\xca\xae\xf8\x8b\x29\x51\x6a\xa9\x42\xde\x77\xa7\x46\x7b\x6f\xb2\x6a\x66\x6f\x30\x64\x8c\x71\x5a\x2e\xe9\xf9\x46\x74\x3b\x54\x3a\x44\x28\xe0\xdf\xd0\x61\x78\xe7\xe9\x3e\xc6\xf2\x6e\x00\x3e\x05\x8b\xec\x14\xa4\xaa\x2e\x3b\x8d\xe1\x12\x95\xa7\x64\xca\xb3\x0b\x31\x3f\xcc\x57\x43\xb2\xfb\x89\x96\x2d\xdc\x5c\xdc\x6a\xa0\xd2\xe4\xa3\x06\xe7\x7a\xf7\x6a\x05\xa5\x98\x92\x3f\x62\x8a\x85\xdf\x1c\xc7\x3a\xd3\xbc\x01\xc4\xb9\x79\xbd\x7c\xb2\x96\x59\x0a\x88\xb0\xa4\x1b\x44\x5d\x50\xa0\x84\x23\xe4\xed\x80\xf1\x76\x3c\x71\x6b\x6c\x45\x7d\x84\x5d\xfa\xa6\x8d\x12\xb0\xd0\x3c\x55\xfd\xe8\xae\x6b\x2b\x92\xbc\x63\x22\x94\x3d\xbe\x54\xc7\x06\xbc\x8e\x5f\xce\xe7\x06\x54\xb2\x6f\x3b\xfd\x87\x7f\x5f\x53\x39\xac\x18\x2d\x54\x17\xbd\x4c\x07\x35\xd8\x25\xbf\x70\xe8\x5e\xab\x82\x16\xed\xda\x63\x2a\xe7\xe2\x2b\x3e\x53\xd0\x78\xa8\xb2\x0b\x5a\x7e\x23\x85\x33\x7c\xf9\x2b\x3c\x16\xb0\x23\x56\x3e\x11\xcb\x50\x43\xb7\x04\xd3\x7e\xb5\xed\x9e\x85\xfc\xdc\x95\xcf\x7a\x6e\xad\xe4\x08\x03\x17\x5a\x00\x8e\xf6\x53\xac\x61\x36\xf1\x61\x29\xab\xae\x11\x37\xc5\x82\x34\x00\x74\x8a\x81\x25\x62\x54\xd3\x17\xcf\xc9\x39\xe2\x6e\xa0\xce\xf9\xf6\x54\x8d\xb4\x28\x90\xc4\x8b\xeb\x04\x79\x10\x3b\xa0\x89\xe5\x14\x11\x80\x38\xb1\xb9\x09\x43\xd7\x16\xf7\xa8\xd4\xcd\xa5\x98\x3a\x67\x4b\x83\xa0\x02\xd8\xac\x9c\x65\x73\x4a\x28\xb7\x7b\x76\x0c\x8e\x38\x03\xf8\x78\x1e\xa9\x19\x9f\x79\x7c\xe7\x29\xe0\x6b\xff\xfe\x8c\x29\xb2\x0b\xc8\x52\x27\xc0\x9c\xc0\x52\x19\xff\x2b\xa3\x8e\x18\x05\x10\x83\x73\x2f\x83\xcb\xfc\xcc\x31\x07\x56\x45\x0b\x26\x1d\x5b\xe1\x83\xd9\xfb\x44\xec\x18\x52\x9f\x2c\xc9\x84\x8c\x40\x11\x9c\x60\x76\x76\xbc\x4d\x90\x15\xfd\x4b\xd2\xfc\x91\x8d\xc8\x03\x1e\xc1\x9a\x05\xff\x36\x2c\x18\x40\x43\xbe\x7f\xe0\x66\x01\x9a\xc5"}, +{{0xea,0xc0,0xf0,0x6c,0x2c,0x14,0xf3,0x7d,0x43,0x4b,0xc9,0x98,0x97,0x22,0x5d,0xd2,0xe3,0xf1,0xed,0x74,0xaa,0x74,0x42,0xc5,0x50,0x33,0x9d,0xf7,0x7d,0x0b,0x7b,0x32,},{0x43,0xe6,0x20,0x55,0xdb,0x6e,0x13,0x49,0xc9,0x4d,0x89,0x02,0x91,0x87,0x88,0x20,0x20,0xcb,0xcf,0x9d,0x75,0xe0,0x3e,0xb6,0x56,0xfa,0x0a,0x15,0xb1,0x90,0x02,0xd7,},{0x45,0xf2,0x80,0x3a,0xfe,0xb0,0xfc,0x44,0xd3,0xaa,0x96,0x5b,0x12,0x65,0x9b,0xf5,0x02,0xe4,0x72,0x95,0x70,0x61,0x84,0xb2,0xa1,0xc6,0xf1,0x6d,0x05,0x06,0x13,0xf5,0x96,0xa2,0x00,0x13,0x94,0xe0,0x0e,0x2a,0x44,0xc4,0x6c,0xf6,0x50,0x5d,0x5c,0xf5,0xb8,0xab,0x84,0x12,0xf0,0x7e,0xda,0x95,0x1a,0x15,0x00,0x5e,0x33,0x8f,0x3c,0x0e,},"\x27\xb7\xfd\x0e\x71\xad\xf1\x94\xcf\x54\x07\xb6\x77\x17\x93\x06\x0d\xe0\xfc\xa7\xca\x0a\xe6\x48\x35\xc4\x31\x87\x40\x8a\x70\x4f\x53\x3d\x5e\xa0\xc8\x3a\x65\x43\x87\xba\x7d\xb1\x6e\xd5\x8e\xc8\x37\x22\x6d\xf5\x7c\x1f\xe6\x38\x2c\x59\x19\xe9\x22\x13\xf6\xf1\x8c\xbb\x57\x35\xd1\x78\xa4\x76\xaf\x35\xd3\x90\xb7\xcd\x25\x56\x21\x7c\x53\x0f\x3a\x1f\x8a\xb2\x33\x9c\x1a\x5e\x8d\x96\x93\x87\xef\xd3\x94\x14\xb5\x6b\xb7\x84\xdf\xd5\xeb\x89\xb8\x59\xe1\xf4\x03\xa2\x38\xec\xa2\xa9\x41\xe6\xdb\x56\xac\x45\x6b\x73\x45\x06\x98\xd1\x45\x5e\xc1\xe9\xb3\x9a\x1e\x90\x7d\x6b\xc7\xe6\xcf\xf4\x24\xa2\x8e\xed\x57\x9a\xf1\x63\x10\x11\x5b\x67\xf5\xfc\xf7\xf8\x34\x6b\x3f\xa0\x26\x0c\x6d\xa2\xe2\x77\x55\xac\xa5\x70\xba\xbb\x3d\x30\x3c\xc8\x32\x46\x0c\x96\x3b\xfd\xd5\xc1\xff\xb2\xfc\x19\x92\x19\x29\xdd\xa2\xa7\x17\xfb\xcb\xeb\x2b\x85\x25\x76\x1b\xd6\x60\xce\x4a\x0f\x76\x85\x28\x5d\x7f\xad\x61\x15\xab\x09\xf8\xe6\x3f\x5f\x77\x39\x14\x49\x4e\x20\xbe\x1b\x51\x2d\x11\x14\xcc\xe3\xf0\xf6\x8c\x7d\x94\xf5\x48\x57\x69\x4f\x22\xaf\x4c\x69\x8d\x78\x2c\xe8\x37\xb0\xc1\x72\x2b\xb7\x31\x3b\xb2\xc4\x1f\x6d\x3d\xd1\xa0\x28\x77\xfb\x42\x96\xd8\x66\x2a\x9e\x86\x25\x98\x4d\xc1\xfd\x1a\x95\x10\xeb\xa9\xd6\x43\xac\x58\xa8\x86\xa0\x45\xcd\x0e\x53\xc0\x56\xa8\x33\xf9\x68\xb3\x5d\x01\x32\x0e\x9c\xc0\xb4\x35\xd3\xf6\xbf\xad\x26\xf9\xeb\x57\x54\xd3\x8d\xdf\x6d\x5c\x4b\xf6\x15\xa7\x64\x4a\x23\xf9\x82\x6b\xcc\x97\x60\x92\xd8\x2d\x81\xd5\x47\x00\x0d\xe0\x08\x1b\x7a\x40\xa9\x3f\xbd\xda\xc1\x3f\x7d\x99\x70\x8c\xcd\xee\xb9\x40\x5c\xd6\x34\xca\x07\x48\xca\xd2\xc1\xd8\xf1\x64\xf5\xd7\x7a\x4f\x36\x4a\xe4\x88\xbe\xdc\xf1\xf2\x0e\xb9\x54\xbc\x8a\x27\x8a\xf8\x14\x32\x41\x78\x56\xa9\x00\xf8\xf1\x52\x92\x1a\xfb\xe1\x79\x14\x22\x9a\x51\x3b\xd7\x1a\xb7\xe6\x61\xcd\xe1\x29\xaf\x93\xe2\x50\x94\xc5\x61\x18\xed\x1f\x22\xdb\x64\x44\x28\xb4\x74\x65\x1f\xe3\x6b\xe8\x2f\xa3\x69\x5c\x41\xfc\x86\x99\x66\x7e\x05\x37\x43\xb0\xa4\x11\x55\xc3\x1f\x1e\x26\x79\xc6\xe8\xcb\x9c\x9d\x1f\x5f\x4b\x40\xa3\x20\xa9\xfd\x9f\x47\xda\x9b\x94\x21\x1b\xa6\x01\xb2\x2a\x11\x52\x10\xd9\xf5\x59\xc4\x49\x6f\x01\x73\x24\x58\xf4\x9a\xc3\x4e\xb3\x86\x63\x6c\x8b\x6c\x68\xc7\xbb\xc0\x07\x8a\xb6\xf3\x98\xa6\x24\xb8\xba\xfb\x1c\x62\x29\x58\x56\x2d\x23\x1d\xff\xd4\xdb\x09\x61\x96\xbb\x87\x47\x9e\x42\xea\x22\xac\xbd\xcd\xe8\xde\xb1\x0e\x31\x16\x32\xf0\x2f\xca\x14\x78\x7f\xd3\x14\x05\x69\xb9\x42\x89\x91\x54\x3e\xc6\xe8\x34\xe1\x0b\x14\x9f\x23\xc7\x4b\xb9\x9a\xc7\xb3\x79\x9a\x20\x96\xd2\x2e\x38\x7a\x71\x2b\x6f\x90\x11\xea\x34\xc5\xbe\x4c\x46\x85\x81\xac\x62\xce\x66\x20\x63\x25\x2e\x06\x6a\x9a\x3b\x15\xc9\x57\x0d\x06\x5d\xc1\x61\x99\x29\xf0\x6b\xc7\x5a\x31\x79\x46\x8b\xc8\xa1\x6e\x3d\xdc\x4f\xe1\x85\xce\xba\x0a\x92\xa5\x46\xb8\x67\x5f\xc1\xad\xe5\x63\x07\x15\x0c\x7e\x4c\x84\x4f\x6a\xa5\xf1\xed\xbf\xb5\x4a\xc6\x32\xca\x2b\x25\x9c\x32\xa3\x3e\xe2\x86\x78\x56\xc3\x39\x0a\x67\x40\x36\x4c\xb0\xdf\xb9\x76\xe5\x3d\x0c\xc6\xc4\x2a\x10\x6a\x1c\x26\x91\x8c\x8a\x6a\x03\x3b\x2a\xa3\xc7\xf2\xe4\x39\x2e\x79\xf8\xec\xa5\xb3\x36\xba\xc5\x06\x1d\x76\x98\xa3\xbf\xe7\xc2\xc2\x92\x89\x25\x54\x03\x0d\xe6\xce\x7c\x0d\x06\xee\xfc\x54\x90\x6f\x81\xe0\x09\x7f\xcf\xf2\x7d\x14\xb9\xb7\x99\x4a\x79\x70\xe1\xa5\xf5\xc6\xb6\x40\x5d\xca\x22\x03\x3d\xff\x0e\xae\x13\x8a\xd8\x99\xf6\xee\x68\x12\x0b\x8f\x22\x74\x4b\x02\x69\xa9\xa8\x98\x9b\x6f\x7e\x08\xaf\xfa\xe7\x7b\xca\x21\x68\xad\xe2\x40\x58\xae\x68\xa7\xf8\x00\xe0\x2e\x7c\x38\x39\x1b\xaf\x56\x5d\xd4\x0b\x55\xfa\x3a\xb3\xc2\x47\xb9\xce\xb4\xd9\x67\x47\x17\x75\xe6\x63\xd6\xa1\xc6\xc7\xe1\x73\x50\xbb\xd6\xb9\xa3\xeb\x1e\x48\x4a\xc2\xe7\xa7\xa5\xc8\x4f\x50\x83\xe5\xac\xe8\x73\x0d\xe8\x9c\x47\xe8\xdc\xf8\x34\x1e\x40\xba\x34\x5d\xbd\x66\xba\xe0\xf7\xf0\x76\xa7\x05\xb1\xbb\x7f\x47\x0e\x3e\xdf\xb2\xb7\x8e\x4d\x63\x59\x41\x3d\x18\xd3\x32\x80\xb4\x54\xa0\xdb\xb8\x81\xd8\x60\x67\x26\xfa\x9b\xea\x27\x24\x75\xe7\x9f\xea\x6a\x54\xcb\x4c\x06\x19\x54\x1b\x4e\x77\xc1\x70\xc8\x61\x68\x74\xb9\x54\xbe\xb8\xd1\x05\xb8\x6b\xd1\x91\x7e\x25\xcf\xba\x92\x67\x18\x7e\xe2\x03\x8b\x3f\x00\x78\xf4\xc3\x18\xb5\x87\xcf\x44"}, +{{0xe6,0x08,0xd5,0xde,0x97,0x97,0x90,0x7d,0xb6,0xd9,0x8e,0x03,0x45,0xd5,0xca,0xf2,0xad,0x33,0xe0,0xed,0xde,0xbf,0x18,0xb8,0x1d,0x61,0xe8,0x37,0x3e,0xcf,0xb4,0x99,},{0x60,0xe0,0xc1,0x6a,0xda,0x58,0x6e,0x36,0x46,0x91,0x2a,0x5f,0x2b,0xb3,0x18,0xfb,0xc3,0xd5,0x0b,0x57,0xd3,0x6f,0xab,0xb6,0x37,0x69,0x6f,0x9d,0x8d,0x4d,0xc7,0x61,},{0x0d,0x8f,0x09,0x5e,0x42,0xa2,0x73,0x0a,0x3c,0x7b,0xed,0xf4,0x2d,0x5c,0x83,0x39,0x8b,0x5c,0x0e,0xe9,0xc7,0x7c,0x5a,0x61,0xd9,0x82,0x29,0x13,0x96,0xa9,0x18,0x2a,0x08,0x02,0xa3,0x7f,0x32,0x4b,0xc4,0xfb,0x5d,0x4a,0xa4,0xed,0x60,0x44,0x4b,0x66,0x14,0x4b,0xac,0xbc,0x86,0x51,0x05,0xd7,0x69,0x0f,0x14,0x06,0x50,0x69,0x1d,0x03,},"\xe6\x10\xfa\x7d\x83\x85\xc0\x9c\x78\x98\x9e\xd5\xef\x7a\x23\x05\x47\xf0\x13\xcb\x7e\x8d\xdf\x31\x74\x9f\xfc\x31\xce\xe1\x0a\xb3\xef\xac\xa3\xf1\x4e\xa1\x94\x51\x0f\x09\x85\xa8\x18\xef\x8b\x04\x0e\x10\xc3\xa5\x11\x4d\xe1\xac\x08\x0f\x14\xc3\xd6\x5d\x3c\x24\x4f\x92\x42\xf7\x54\x92\xca\xba\xe8\x00\xfc\xfc\x9b\xc2\x75\xea\x1f\x27\x72\x8c\x92\x0c\x25\x8f\xe7\xaa\x73\x94\x80\x60\x29\x9c\xb8\x78\x35\x79\x2e\xdc\xc0\x72\x15\x0b\x73\xce\xfe\xb0\xd5\x15\x62\xe5\x3b\x46\x81\x0e\x27\xa4\xd7\xf6\xab\xd3\x2e\x95\x9f\x7d\x73\x1d\xde\x01\xd9\x4b\xc4\x1e\xd8\x35\xef\xcd\x42\xc9\x22\x43\x70\x37\xa8\x7d\xd3\x66\xff\xad\x2e\xec\xab\x6a\xba\xeb\x4f\xcf\x07\x39\x2b\x3a\xb4\x0c\xfa\xef\xea\xa4\x26\x6b\xc5\x37\x67\x16\x93\xc9\x09\x3d\xab\xe8\xa0\x53\x8c\xaf\xd1\x2c\x63\x9a\x04\xbd\x2b\xa8\x0c\xe0\xf2\x9a\xdb\xfc\x66\xbd\x46\x37\xca\x05\x43\xa5\x3b\x0e\x37\x1d\x0e\x2e\x47\x0d\x31\xba\x36\x06\x42\xa4\x5a\xb4\xcf\xe3\xe7\x90\xf5\x87\xf6\xc5\xa5\x58\x3f\xd1\x5b\x18\x99\x78\x38\xa2\x00\x92\x1c\x1c\x39\x9c\x0b\x16\x27\x8b\x7d\xd6\xd3\xaa\xab\x6f\x32\x5b\x16\xaf\xdf\x76\x1a\x1b\xbf\x86\x7d\xe2\xbd\xd4\x86\x15\xf1\x5b\x52\x67\x70\xed\x20\xd7\x9f\x0f\x30\x71\x4b\xee\xed\xa5\x8f\x52\xa3\xcc\x0c\x5a\x61\x83\x15\xe5\x22\xb9\xeb\xe7\xcd\x99\xb6\x5e\xd5\x32\xa6\x2e\x0f\x0d\xf7\x27\x64\xd6\xec\x6d\x6d\x1b\xa4\x0e\xf4\x0e\x05\x42\x63\x60\x79\x5d\x6d\xd8\x5b\xb3\x9f\x73\x21\xd3\xfb\x06\x27\x5d\xe0\x96\xaa\xe4\xa2\xfa\x22\x93\xf3\x1b\x33\xf4\xad\x4d\x7c\x25\x1a\xc1\x3e\x8e\x15\xc2\xbf\xb1\xf9\x8f\x49\x62\xc5\x4b\x6c\xe0\x33\xb0\x8a\xa6\x26\xf2\x90\x5d\x46\x3f\x55\xb7\x1c\xbd\xad\xec\xdb\x3e\x0b\x36\x5d\xae\x07\xb1\x70\x30\x19\x83\xae\xb8\x3b\x1e\x9f\x2f\x28\xcf\x65\x41\x9f\xd6\xb0\xa1\xa9\xc2\x6c\xb5\x4b\x59\x49\xf4\xbc\x01\xa9\x86\x81\x84\x4b\x43\x03\x4c\x37\x2a\x45\x3d\x38\xf0\x47\x3d\x0d\xdc\x70\x9d\x9f\x49\xc8\x75\x3a\x75\xb8\x56\xc7\xe9\x77\x55\x17\xdf\x57\x4a\x09\xa3\x95\x3b\xde\x5d\xae\xdf\x8e\x4a\x8d\xa9\xd7\x73\xa2\x15\x12\x0e\x26\x9f\xa1\x86\x11\x33\xcd\x4c\xea\xeb\x91\xd5\xcc\xa2\x60\x63\x25\x45\x8e\x50\xcb\x96\x6d\x14\x05\x5b\x22\x44\x7e\xb6\x5d\xc1\x01\x18\xda\x08\x31\xdf\x28\xc3\xb4\xee\x8b\x11\xf0\x73\x2f\x15\x21\xbb\x94\x82\xb1\x1f\x5a\x86\xb2\x2f\x18\xe8\x3d\xd1\xd9\x67\xd3\x94\x42\x85\xe5\xd6\x3a\x5a\x98\x98\x17\xab\x24\x18\xbc\x7e\xd8\x91\xa3\x73\x84\x67\x47\xa1\x2b\x52\x7c\x2f\x44\xee\x01\x97\xb9\x46\xc6\x7e\x67\xfa\x4a\xa1\xc2\x9f\x33\x79\xd4\x6f\xe0\x7d\x3a\xab\x83\xda\x17\xf9\xd7\x6b\xed\xd3\x84\x36\xa0\x55\xe3\x4c\xa1\xd3\xaf\x5a\x87\x54\xd3\x8c\x17\xb9\xba\x4e\x64\x19\xcb\xab\x51\x5f\x43\x1a\x25\x95\x95\x4e\x42\x8c\x26\x70\xfa\xe3\xbe\xd6\x2b\x45\x96\x17\x9c\xb5\x9e\x21\x10\x87\x08\xd0\x71\xbc\xf9\xc6\x21\xc6\xdf\xf0\x3d\x3c\xdc\x92\x02\x02\x94\x54\x01\x3b\x9d\x13\x38\x47\xf2\x65\x44\x81\x1c\x01\x69\x77\x0f\xdc\x6f\xe5\x63\x8b\xfd\x7a\x72\x0d\x8b\x38\xf7\xe3\x0a\x7e\x68\x79\x06\x0b\x5f\x28\xc8\xab\x17\xb0\x02\x00\x71\x32\x07\xe8\x63\x7b\xff\x48\x44\xd8\x42\xd9\xca\x78\x83\x91\x34\x01\x98\xa3\xfe\x01\x72\xdf\xa7\x4d\xe1\xe5\x5a\xde\xfb\xc2\xe9\xbc\x7e\x88\x54\x76\xd1\xb9\xc0\x55\x81\x34\x08\xa4\x75\x28\x43\x43\x55\xbf\x03\xfd\xd4\xe2\x7d\x8b\x34\x61\xb0\xfb\x66\xab\x3e\x15\xa8\x79\xa1\x84\x45\x7e\x9e\xd9\xea\x6c\x51\xb6\x63\xb3\x1e\xdc\x8c\x4a\x3c\xd4\x54\xf6\x9d\x9c\xe5\x18\xd1\xb8\x78\x88\xee\x3d\x9d\xd5\x41\x6e\x43\xe1\x14\xac\x05\x72\x13\x52\xdf\xfc\x2c\xa8\x85\x97\x37\x7b\xbc\x41\x40\x09\xb0\xc2\xfd\x36\x9b\xe5\xba\x35\xa6\xdc\xe3\x47\x8b\x6c\x11\xb3\x3c\x0a\x33\x91\x8b\x6e\xe5\xac\x4c\xd4\xc2\xf1\xca\x6b\xd1\x90\xa0\x00\xa8\x38\xda\x38\xf5\x30\x77\x56\x03\x35\x59\x6d\x13\x58\x93\x77\x93\x96\x38\x10\xa7\x9a\x21\xb8\xd4\x61\x40\xe7\x68\x89\x8d\xcd\xa8\x8a\x0f\xaf\x8d\xdd\x0d\x63\x38\x47\xaa\xea\x0e\x03\x0b\xe6\x45\x5b\x41\xe3\xed\xe1\xe2\x87\x37\x30\xeb\x84\x81\xac\xaa\x7a\x51\x9c\xf9\x19\x58\x47\xa8\x6a\xfa\x57\xf9\x07\x1d\x44\xf4\xaf\x4c\xa0\xd3\x43\xc9\x0c\x0d\x22\xd9\x46\x14\x65\x85\xf0\x0e\xf3\xae\xf5\x7f\x0f\x9e\x55\xe8\x18\xc0\x12\x8a\xe2\x55\xdb\xc3\x11\x6c\xf0\xfe\x02\x16\x6d\x54\x85\x9d\xec\xbf\xdc\xcc"}, +{{0x0e,0x86,0x87,0x2c,0x78,0x62,0x0f,0x10,0xcb,0x6d,0xfc,0x46,0x3d,0x2c,0x28,0x72,0xc4,0xda,0x66,0x07,0x48,0xc9,0xcd,0xa0,0x1a,0xb1,0x45,0x69,0x58,0xaf,0xba,0x7f,},{0xde,0x49,0x89,0x98,0x92,0x69,0xca,0xbd,0x8f,0x4f,0x40,0x9c,0xf1,0xa4,0xd9,0x74,0x03,0x8b,0x27,0x55,0x02,0x27,0x35,0x57,0xf3,0x12,0xd5,0x55,0x3f,0xab,0x93,0xc3,},{0x20,0x37,0xe9,0x77,0x41,0xc3,0xe6,0x40,0x9c,0x66,0xfc,0x67,0x82,0xaa,0xb3,0x89,0xc5,0xd7,0x78,0x09,0x7a,0xc7,0x78,0x99,0x9e,0x85,0x76,0xe4,0x9e,0xf4,0xf6,0xa0,0xc7,0x73,0x0b,0xd9,0xe0,0x93,0xdd,0x3c,0x0a,0xe7,0xec,0x76,0x20,0x33,0x80,0xda,0x65,0x71,0x47,0xd3,0x3a,0x8d,0x9d,0xd6,0x5e,0xd0,0x0c,0xf7,0x62,0x24,0xd6,0x01,},"\xa9\x00\xf3\xe9\xc6\x43\xa5\x64\x9b\x07\x6f\xb6\x9c\x3b\x2a\xc0\x84\xd5\x2c\xcb\xaf\xcd\xca\x5a\x9d\xb1\xda\xa7\x05\x00\xde\x99\x33\xd2\x3d\x15\x3f\x74\x95\x4e\x1b\xd5\xf5\x7b\x89\x9f\xe8\xa4\xb1\x34\xc1\x95\x41\x2b\x49\x83\x3b\x6e\x50\x95\xa6\x55\x4e\xaa\x6d\x84\x4b\x11\xf1\x58\x4c\x85\x05\x5b\x87\xf4\x1c\x99\x96\x69\x04\x6c\x71\xae\xb5\xc0\x45\x3f\xd6\xa3\xc4\x37\xf8\x15\xf0\x68\x98\x7c\x38\x68\xcc\x07\xaa\x2a\xf6\x58\x19\x04\x6c\x30\x7b\xaf\xb7\x53\x0d\xe8\x4f\x71\x30\xae\xa7\x8e\xf0\x05\xd5\xff\xf5\x2f\x8d\xea\xf1\xd5\xe9\xc3\x26\xd3\x21\x7f\xc5\x5b\x94\xf6\x28\xaa\x10\x4f\x6a\x24\xa3\x95\xe6\x2d\x1b\x62\xbd\x9c\x0d\x82\x43\x63\x19\xc5\xd7\x3e\x57\x65\x43\x5f\x3b\xa8\x56\xa4\x73\x4f\xd6\x0a\xe6\x17\xf7\xf0\xc3\xba\x57\x22\xa7\x33\x66\xc8\x8a\x6d\xfe\xca\x85\xc4\x44\x63\x9f\x44\x1f\x2c\x55\xfd\xc4\x64\xec\xb2\x99\xee\xe3\x6d\x8e\xae\x06\x3b\xb9\x4b\xb2\x43\x9d\xa0\x4f\xa5\xeb\xc5\x09\x23\x38\xa5\x03\x5e\x48\x0f\x08\x34\xae\xee\x8d\x71\x1f\x28\xc4\x6d\xc9\x60\xde\x1b\xe9\xdf\x30\x7c\x18\xc5\xc1\x78\xb2\x62\x96\xdc\x56\x7f\x15\xbf\x60\x86\x3a\x36\x71\x08\x67\xe9\x2f\xd5\x10\x48\x86\x56\x74\xc2\xaf\x0c\x53\xb2\xe7\xa2\x48\xae\x5b\xd0\x9a\x49\xaa\x03\x06\x18\x49\x5f\x82\x48\x0c\x42\x0a\xe1\x06\x88\x9b\xec\x00\x62\x78\xb9\x22\x72\x07\x57\x09\xfe\xc9\x54\x87\xcf\xb1\x00\x61\xe6\x72\x2b\x93\xee\xbf\xc0\xbc\x58\x7b\xf7\xba\x5f\x66\x92\xb0\x74\xf5\x5a\x98\xd5\xc3\x02\x76\x0b\x1b\xf1\xd0\x9f\x7e\x86\x68\x47\x9c\xa6\xf0\x1e\xed\xa2\xfd\xaf\x58\x4a\xc2\x05\x8f\xbf\x7c\xf3\x10\x0d\x06\xb8\x09\x1b\xfe\xab\x51\xc0\xc0\xb1\xd4\xee\x3a\x82\x57\xf6\x9b\x16\x17\x60\x4f\xce\x95\x3b\xb5\xf7\xf2\x71\xc6\xa1\x88\x0e\xa1\xb3\xf6\x62\x67\xe2\x43\x9f\x34\x58\x06\x28\x91\x78\x77\xc6\x6e\xc0\xfe\xd7\x6e\x44\xe8\xbb\x2b\x91\xa8\x80\x6d\xf4\xba\xca\x6c\xc9\x28\x89\xb8\x80\x50\x70\xc9\xa6\x17\xf8\x07\x15\x75\x30\x75\x1c\xc1\x7c\x47\xb0\x9e\xeb\xa9\x4d\x22\xb4\xe5\x47\xc3\x70\xce\x7a\x49\x6f\xca\xa3\x41\x2a\xff\xff\xb8\xc9\xb4\xde\x89\xb9\xf1\x21\xaa\xec\x5f\x54\x4b\x0c\x72\x5e\xc5\xee\x9d\x4b\x34\x76\xad\xc9\xd0\x50\xed\xb0\xfd\xba\xf0\x2c\xa9\xe3\x8a\xf1\x5f\x51\x50\x15\xa2\x67\x29\x2e\xc9\xaa\x54\x44\xed\x1d\xec\xd9\xcd\x9e\x1e\xad\x64\x87\xa0\xcc\xef\x99\x5b\x1c\x60\x0a\x03\x69\x35\x83\x86\x60\xac\xab\x27\x6d\x8b\x0e\x5b\x07\xd9\xf3\x63\x53\x21\x4b\xf8\x0f\x94\x1a\xc8\x8c\xf4\x0a\x08\xaf\x91\x79\x26\x23\x41\x12\xec\xcd\xaa\x16\x2d\xc9\x9d\xe3\xe2\x5b\xaf\xf6\x5b\xb0\x1e\x49\x89\x89\x86\x33\x2b\xdc\x2d\x70\x5d\x5a\xea\x40\xf9\xbc\x4f\xbb\x28\x06\x89\x44\x96\x03\x8d\xa2\x36\xe9\xdc\x29\x60\x0c\x9c\xed\xea\xc3\xb6\x16\xcc\x56\xd8\x9e\xc2\xfa\x67\x38\x96\x66\xc6\xc4\xfe\x23\x3b\x63\x91\x05\x02\x3e\x10\x1b\x87\x4a\x63\x30\xfe\x57\x3f\x80\xac\xe5\x5d\x03\x7c\xc6\x12\xe6\xdf\xd5\xa6\xe6\x86\xf9\xa8\x30\x54\xfc\x46\xe1\x5b\xb6\xda\x45\x3d\x81\x0c\xf1\x38\xa1\x78\xbf\x03\x9d\x1e\x18\x16\x14\xff\x40\xcb\xe6\xbb\x3b\x47\x36\x63\x75\x2e\xa8\x02\x5f\xf7\xf7\x39\xee\x4b\x67\x11\x0f\x96\x80\x89\xb2\x47\x3c\xd0\x44\xd4\x8b\x00\x9d\x06\x77\xf7\x91\xf5\x4e\x2d\xf6\xaf\xdc\x3a\xcb\x9e\x99\xdd\x69\x58\xa4\x50\xc0\xe1\xb6\xdd\x5e\x97\xa2\xcc\x46\x29\x8b\x4f\x48\xac\x6a\xda\xf0\x13\xd7\x5b\x2c\x42\x07\x2d\x2e\xe1\x3f\x73\x36\x87\xee\x83\xc3\xf7\x0c\x4f\xdd\x97\x20\xfd\x17\x98\xc6\x62\xfe\xf3\xba\x01\x2b\xed\xd4\x45\xc4\x72\x9f\x21\x30\x48\x4f\xe7\x7a\xc1\xb4\xc4\xdd\xeb\x81\xfa\xf6\x0f\x76\xe3\xbd\x7d\x21\xa9\xa6\xc5\x7a\x69\xa9\xcd\x9c\xc2\x03\xfc\x63\xb5\x9e\xe8\x4b\x89\x15\xb3\xc1\x8a\x59\x54\xe2\x27\xc8\x6e\xbb\xb7\xd4\xc4\xc1\xa0\x8d\x0c\x5e\x46\x7c\x68\xa0\x69\x70\x75\x1e\xf5\x84\xbd\xd6\x11\xe1\xdd\x1b\x48\x90\x0a\xb3\x54\xb9\x9c\xec\x6e\x1d\xf3\xbd\x41\x46\xea\x07\x55\x35\x0d\xc1\x1c\x3a\x3f\x60\x0d\x47\x0a\x74\xf4\x75\xe4\xfe\xed\xaf\x08\x65\x27\x6f\xa8\xa9\x77\x13\x47\x1d\x0c\xa9\x95\x5c\x71\x35\x88\x33\x9d\xee\x79\x65\x6e\x56\x7e\x6a\xb1\xdb\xf9\x83\x07\x03\x81\x7a\xe6\x20\x92\x9a\x06\x84\xa5\xca\xf2\x0f\xef\x81\xa8\xee\x89\x7b\xe7\xe5\x05\xad\xe6\x49\x6b\x9a\xef\x02\x72\xbd\x8f\x35\x08\x60\x23\x3b\x33\x8c\x2e\x36\xd3\x13\x8d\xb6\x95\x38"}, +{{0x52,0x03,0x54,0xd8,0x5a,0x87,0xd7,0xc2,0x2c,0xa6,0xf7,0x84,0x71,0x44,0x10,0xec,0x98,0xbf,0x6a,0x65,0xf8,0x03,0xef,0x93,0x79,0xbd,0xc8,0x04,0x35,0x9b,0x23,0x49,},{0xd8,0x51,0x1c,0xea,0xc2,0xfd,0x66,0x1a,0xcb,0xff,0xb0,0x1b,0xa2,0x74,0x1c,0xad,0x88,0x99,0x34,0xde,0x63,0x92,0x96,0x1b,0xde,0xc6,0xfa,0x46,0x12,0x3b,0x7f,0x0f,},{0x75,0x4e,0x60,0xd3,0xf6,0xf4,0xab,0x4f,0x5d,0x0d,0xdb,0xb0,0x01,0x53,0x20,0x09,0x16,0x63,0x88,0x48,0x7f,0x78,0x0b,0x76,0xf6,0x0b,0xd0,0xbc,0x9f,0xef,0xab,0xfa,0xab,0x6b,0xe2,0xae,0x78,0x69,0x57,0x3a,0x64,0x79,0x6e,0xf2,0x84,0x6e,0x85,0xe5,0xcd,0xae,0x52,0xdb,0x10,0x44,0xfe,0xfa,0x79,0x6b,0xac,0xf4,0x8b,0x96,0x8b,0x0d,},"\xa1\xd4\xad\x48\x6e\xbb\x7c\x1a\x0a\xcb\x8f\x11\x70\x13\xe8\xe4\x74\x67\x89\xc6\x24\x4a\x56\xc9\xed\xfb\xf1\xef\x37\xac\x13\x09\xaa\xf5\x1c\x93\x75\xfc\x12\xca\xcd\x68\x97\xa4\x47\x95\x45\xf2\xbf\x39\x0a\xb7\xc0\xc0\xe5\xc5\x92\xf5\x50\x6e\x99\x38\x37\x8a\x11\xb6\x36\xbf\x85\x70\x29\xb9\x68\x54\x7a\xa5\x06\xc4\xa0\x82\x9a\x15\xfd\x39\x95\xfe\xad\x4f\x86\x0f\xd7\xc6\x23\xc6\x3e\x86\x95\x43\x6e\xae\x55\x81\x64\x14\x77\x83\x47\x09\x2f\x5f\x4d\x42\x2b\xb1\xb5\xe5\xa0\x69\x66\x24\x1e\xfe\xc1\x4f\x1e\x4f\xca\x06\x63\x91\x14\x71\x8c\x30\xeb\xca\xdd\x4c\x6d\x8a\xbe\x7f\xe9\x3b\x25\xd1\x71\x73\x53\x39\x54\x18\x8b\x1a\xb0\x3f\xcb\x77\x92\xcb\x63\x5c\xe3\x6e\x9b\xdb\xdd\xe7\xa5\x61\xc5\xf6\x69\x20\xd9\x10\xcb\x26\x9c\x8c\x1c\x3f\x59\x32\x65\x09\x00\x72\xc4\x89\x32\xe6\x92\xa9\xc7\x38\xc7\x04\x89\x74\x89\xa7\x15\xc2\xb3\x94\xd5\xa8\x6f\x70\x36\xa4\xca\xc5\xdc\xb5\xb8\x5c\xfa\x16\x21\x56\xe0\xbc\x6b\xfe\x02\xfb\x4c\x38\x60\x8c\xfb\x23\xc9\x2b\x8b\x6a\x3c\xb4\x6e\x48\x7d\x60\xe0\xdc\x97\xaa\x2e\x33\xe3\xda\xda\x92\x5e\x4e\x66\x12\xcc\x5a\xf1\x25\xe5\xac\xa4\x58\x17\xa2\xfd\x6c\x3f\xf1\x0b\x18\x93\x8b\x44\xbd\x4d\xd2\x0d\x7f\xcc\xf7\xf2\x6b\x40\xa6\x6f\x48\xaa\xff\xc9\xa5\x41\xe6\xd3\x71\x38\xfc\x55\x46\x98\x68\xe2\xd1\x03\x65\xef\xf3\x7f\xac\x36\x0f\xab\x3d\xc5\x54\x37\xac\x2d\x8f\xea\x74\x74\x40\x5f\xb3\x63\x0f\x79\x63\xd2\xd4\x59\x58\xf9\x09\xd1\x48\x30\x28\x6f\xf1\x52\xaa\x75\x2f\x51\x0c\xe9\x80\xbd\x57\x54\xe3\xfa\x32\xc6\x99\x24\xdd\x95\xd5\xc1\x52\xa7\x37\xa8\xfa\xdc\xfd\x0a\x45\x60\xe0\xb1\x14\xf8\xe8\xaa\xa6\x18\xd4\x38\xb9\x87\x71\x11\xda\x17\x40\xef\x81\x7c\x44\x19\x39\xec\xec\x79\x9b\xa1\x6b\x1b\x17\x1c\xa9\xb6\x49\xb7\xd7\x8f\xa0\x52\xd1\x49\x7a\x50\x76\x88\xbe\xde\x49\x00\xab\xc5\x3a\x96\x48\xda\x59\x17\x03\x5c\xef\xfe\x0d\xa2\x1c\x25\xc0\x9b\x06\xd6\x18\x5b\xdd\xa2\xd7\x78\xf7\xed\xe6\x15\x3e\x3e\xaf\xf4\x95\xc9\x79\x6d\x4d\x16\x6d\x2d\x2e\xa4\x18\xe4\xa4\xaa\x6e\x67\x8f\xaf\x06\x96\xe7\x52\xa0\x9e\x02\xea\xad\xe7\x63\x07\x0e\x08\x8e\x99\x64\x91\x9f\xf4\xaa\x4c\x82\xf8\x62\x9a\x3d\x5c\x79\x7c\x2a\x64\x59\x4d\x20\x68\x35\xda\x0b\xfa\x43\xcc\xd9\xdd\xfc\xdb\x6a\xac\x4d\x48\x6e\x03\xc8\x41\x22\x37\x59\x39\xa5\x27\x0b\xc1\x51\x9e\x07\x07\xe5\x1c\x3f\x46\xf1\xe5\xc5\x66\xb3\x3a\x24\x5f\xa0\xc2\x02\x83\x84\x72\x36\x3d\xe9\xf0\xed\xde\x2e\x79\x1d\x82\x29\x30\x95\xf7\x50\xbf\xf5\x45\xe6\xc3\x47\x39\xdc\xc5\x4d\xb0\xa3\x6a\xe2\xe2\xaa\x39\xb0\x7c\xb4\xf6\xa9\x64\x62\x40\xd2\xd3\x14\x88\xf6\x78\x15\xb2\x95\x45\xd2\x20\xbe\x92\x9e\x33\x39\xf8\x28\x1a\x93\x7e\x05\xa8\xc5\xc3\x88\x7e\x06\x04\x8e\xa7\xb1\x8a\x48\xf8\xd9\x1b\x1e\x3a\xf5\xca\xb5\xce\xda\x0e\xbd\x71\xbf\x54\xed\xec\x20\x3d\x37\x16\x5e\x4c\x9f\x9f\x80\x46\x1c\xd2\x9f\xcd\x99\xdd\xea\x43\x96\x93\x94\x1b\x5d\x53\xff\x94\x37\x9c\xf6\x42\x57\x1d\xd5\x59\xa1\x1f\x8f\x38\x3d\x94\x3f\x22\x55\xcf\x71\x58\x00\xaf\x77\x6b\x10\x45\xbf\x19\xa9\xc9\xbb\x09\x51\x55\xdf\xb6\x46\xb6\x5f\x4a\x28\x0f\x2a\x97\xef\x92\x7d\xda\xbe\x24\xa2\xf9\x71\xa8\x17\x0d\xd4\x2a\x08\x92\x76\x82\x5c\xb9\x14\x8c\x01\x5a\xae\x1e\x9d\xad\xf2\x2c\x10\xe7\x54\x8c\x59\xbf\x6b\x86\x8b\x20\xe8\x6c\x83\xa9\xe7\x34\x3a\xec\x27\x54\xee\x62\x25\xf9\xfd\xce\xaf\x8e\x51\xc4\x0e\x95\x5b\xda\x49\xc3\x5d\xed\x38\xfa\x8b\xcc\x1e\x6c\x8f\xc9\xc2\x41\x2e\x91\x04\xc5\xc2\x36\x8b\x1f\x99\x23\xe0\x10\xfa\x2e\xde\x91\x1d\x42\xb1\x39\xf4\x00\x7e\x34\x26\x92\x2f\xfb\x61\x58\xec\xa9\x7b\x47\xcf\xc9\x97\x85\x35\x12\xbb\x9d\x4c\xa2\xf0\x17\xc2\xc2\x63\xdc\x19\x9f\x3b\xf1\xeb\x4f\x15\x08\xef\x82\x8b\x0e\x00\xdb\x21\x00\x27\x36\xa7\xf2\x2e\xc9\x12\x98\x19\x45\x83\x13\x9a\xd7\x5f\x58\xe2\x1b\x51\x8d\xaa\x49\xa4\x07\x6c\x63\x75\xfa\xa6\x08\x91\xa6\x9e\x52\xa6\x56\x69\x9d\x80\x34\xa7\xab\x7f\xcb\xe4\x21\x75\x49\x14\x41\xfe\x61\xb1\x78\x3e\x83\x78\x57\x52\x22\x15\xa5\xfa\xc5\x59\x0b\xed\x2e\x9d\x20\x66\x06\x09\x6d\x3b\xe8\xee\x92\x87\x3b\xfc\x30\xca\xb1\x5c\xe9\xf9\x91\x0d\x01\xa1\x17\xf8\x99\x26\xcc\x3a\xfa\x8d\x10\x4f\x79\x9f\xf3\x80\x98\xde\x28\xb8\xff\x0f\x03\x87\x25\xc2\x90\x3b\x24\xc1\x42\x9c\xea\x49\x25\x24\x9d\x87\x81"}, +{{0x06,0x1b,0xcf,0x1a,0xa6,0xfd,0x98,0x98,0x97,0xb3,0x22,0xe5,0x91,0xcc,0xef,0x54,0x54,0xef,0x4a,0x5a,0xdb,0x1a,0x48,0x00,0xf3,0x26,0x11,0xcf,0xf2,0xb5,0xbc,0x78,},{0x73,0xc8,0x0b,0x73,0x4b,0xfc,0x94,0x17,0xd5,0x76,0x89,0x0c,0x20,0x16,0x6d,0xa5,0xc7,0xfa,0xbd,0x61,0x3f,0x75,0x47,0x4f,0x76,0x49,0x73,0x2e,0x00,0x29,0x5b,0xe2,},{0x5a,0xda,0xa9,0x43,0x30,0xa0,0x35,0x37,0x12,0xa3,0x4d,0xbe,0x97,0x3b,0x75,0x18,0xf9,0xa2,0xc7,0x13,0xf8,0xaa,0xd1,0x00,0x25,0x1b,0x08,0x6a,0xe8,0xde,0x26,0xf6,0xd2,0xb6,0xcc,0xf0,0x52,0x8c,0xc5,0xde,0xdc,0xa3,0x18,0xdf,0x19,0xcc,0x7e,0x45,0xde,0xae,0x28,0x1e,0x13,0x24,0xb9,0x6e,0x32,0xfe,0xf4,0x5a,0xaf,0x60,0xb1,0x0c,},"\xd6\x3b\xb9\x20\x8c\x1f\x4c\x7d\x43\x32\x6c\xf3\x5f\xa5\xd8\x39\x33\x15\x18\x04\xab\x89\x1d\x49\xb0\xbd\xaf\x42\x9e\x4c\x39\xa3\x21\x42\x8e\x0d\x90\xaa\x00\x31\x8b\x97\xe0\x8c\x70\x24\xc9\x12\xcf\x38\x88\x79\xf3\xcf\x97\x4b\xb2\x53\xa1\xe7\xa4\xc8\xee\xc1\x93\xbf\x4c\x14\xaf\x6f\xb9\x79\x4d\xf0\xd4\x97\x85\x0e\xdb\x04\xd5\x74\xc9\x7e\xd7\x6c\x70\x21\x39\x96\x84\x01\xb4\x0e\xb5\x43\x94\xef\x4c\xfa\xa7\xe5\xd3\xcd\x94\x3a\xf1\x21\x92\x53\x8d\xde\xe5\x93\xc2\xa2\x4a\x26\x7a\xfa\x13\x71\xfd\x77\xfe\xee\x20\x71\xf4\x36\x9f\xbe\xf8\x79\x76\xe7\xeb\xd8\x1d\x1e\x5b\x31\xd6\xe0\x9e\x02\xd8\x30\x35\x7d\x36\xbf\xf8\x59\x67\x03\xe4\x14\x6d\x08\x27\xbe\xc9\xc0\xf8\x7b\x26\xf3\x11\x95\xc9\x6c\x93\xb6\xd8\xc4\x67\x67\xec\x1b\xc6\xde\x39\xf0\x00\x8a\x41\xff\x87\x5d\xa0\x50\xa3\xf8\x65\xab\x92\xcb\xf2\x9c\x38\xa2\x80\xf3\xbf\x69\xf6\x8e\x92\xb5\xf4\x30\xcd\xee\x35\x01\x98\x1d\x0b\x3d\x18\x90\x96\xe0\xae\xac\xd6\x4c\x33\x10\x24\x21\x34\x88\x12\x15\x8b\xb6\x1e\x51\xae\x93\x65\x92\xb2\xf8\xf1\xb9\x10\x94\x9e\xf3\x72\x32\x58\xa9\xb4\x4e\x4e\x1b\xda\xdf\x1a\xe2\xcf\xc1\x8e\x37\xd2\xed\x0d\xd1\x73\x44\x04\xb8\xba\xa5\xf3\x93\xcd\x56\x06\x9e\xce\xbf\x7e\xdd\x7c\x06\xcf\x6c\x8a\xa3\xe8\xe1\x2f\xbf\x94\x6d\x7b\x32\xd8\x45\x3b\x6f\xbb\x65\x35\x52\x6c\x8f\xb8\xfc\x1d\x58\x15\x56\x0b\xb3\x1b\x99\x5d\xf2\xad\xbd\x83\x6a\xdd\x92\x9a\x56\xfd\xd9\x3a\x17\x47\xd9\x3a\x40\xc0\x5e\x12\x9e\xb6\xf8\x58\x3c\x29\x21\xcc\x9d\xbd\xda\x42\x25\xe1\x76\xdb\x38\x6a\x02\xec\x40\xaf\x10\x32\xc9\xb6\x2e\x95\x14\x70\x25\xf4\xac\x8d\xd5\x84\x33\xb6\x4a\xc0\x73\x15\x0c\x69\xb9\xc4\x15\x4d\xcb\xb0\x03\x44\xf3\x08\x11\x3c\xd9\x19\x9c\xcf\xb5\x07\x58\x01\xc7\x05\xb8\xfc\x43\xb7\xc8\xbc\x16\x73\x65\xe4\x62\x93\xd0\x6c\x4f\x48\x35\xc6\x4e\xe5\xd5\x38\x3f\x68\x90\xca\x35\xa8\x0a\xf9\x17\x74\x81\x62\xdf\x25\x18\xab\x14\x68\xf1\x53\x62\x98\x99\x40\x6c\xde\x66\xce\x07\xfa\x7d\x29\x93\xda\xbe\x0c\x60\x08\x9c\x91\x89\x24\x88\xf3\xbc\xaa\xec\x40\x8a\x0c\xd0\x8c\x9a\xa9\x8e\x09\x37\xe0\x2c\x41\xad\x52\xd2\x41\xa9\x98\x33\xe3\xb8\x3f\x7d\x3f\x1b\x07\x8c\x31\xd4\x5c\x34\xfa\x01\x75\xab\xbd\x0f\x32\x2b\x8f\xd2\xdc\x83\x49\x1d\xa2\x92\xad\x00\x76\x2e\x3e\x57\x7b\x9e\xee\x0a\xae\x08\x72\x90\x70\xac\x25\xe3\x3b\xc9\x45\x25\xbc\x0d\x2a\xb5\x97\x04\xef\xec\x5c\x01\x48\x42\x1a\x47\x92\x8d\x34\xb1\xe4\x5c\xe7\x21\xee\x64\x47\xfb\x08\x2a\xc4\x00\xb3\xe6\x84\x6d\x20\x4f\x7f\x9d\xb6\xf0\xa3\x2b\x2a\x69\x73\x8b\x3e\xe9\xdd\xbb\x0d\xbd\x7e\x0f\x04\x1d\x7e\xa5\x3a\x5d\x64\x7f\xb5\x0b\x39\xae\x24\xd7\x8c\x8b\x07\xcf\xc4\xe0\x52\x71\x1f\x0d\x46\x39\xe7\x21\xd5\xc3\x6f\x31\xb5\x88\x86\x67\x12\xb7\x57\x10\x8a\x40\xcc\x7a\xbb\xb9\x91\x30\x83\x30\x3a\xae\x05\xa0\xf1\xaf\x0e\xc6\x87\x84\x41\xa2\x5c\xf8\x72\x9a\xba\x42\xa3\xa9\x4c\xe9\xb7\x38\x88\xa0\xf5\xc9\xe4\x0c\x9f\xc4\x54\x10\xf0\x68\x1f\xa7\xf9\x08\x98\x56\x2c\xcb\x4b\xbc\x55\xf0\xab\x1f\xe9\xc7\x0e\xa6\x60\x26\xdd\xa8\xd7\x09\x0f\x7b\x38\xed\xb5\xae\xc1\x55\x7b\x11\x66\x98\x7c\xd4\x1a\x70\x59\xcd\xee\x60\x9b\x74\xd8\xfe\x06\xb7\x05\x9b\x77\x24\xbf\xf5\x30\x07\xf7\xe1\x10\x46\x2f\x06\xad\x14\xd0\x7e\xe1\xb4\xd6\x9a\xc8\x23\xbc\xf5\x76\xd2\xfa\x9e\x2e\x8e\xd7\xf3\x19\x80\x40\xd4\x71\x29\x60\x63\x13\x7c\x98\x1a\xdb\xf3\x64\xcb\x20\xf0\xa1\xad\x20\x54\x47\x2f\x7c\xee\x25\x27\xf9\x98\x09\x61\x5d\x2e\x4b\x73\x4b\x06\xf3\x5d\xee\xcb\xd6\x26\x19\x66\x3d\xde\x81\xd6\xe2\x35\x28\xb0\xc9\x71\x32\xaf\x0a\x23\xba\xd6\x3d\x9c\x08\x14\x2a\x26\xe2\x74\x3f\x86\x18\xec\xfe\x72\x3b\x19\xff\xdd\x0b\x19\xab\xd9\xa3\xf4\xfe\x21\x0b\x1e\x71\xac\xdf\xe3\x8a\xbe\xbe\x23\xf7\xfd\xef\x66\x38\x1c\xbc\x75\xf3\x07\xe5\x57\x72\x35\xb0\x2e\x4c\xd9\xcf\xaa\x15\x03\x08\x68\xed\x14\x53\xda\x58\xf7\x83\xb7\x35\x2b\x04\x65\x68\x44\xc0\x42\x44\x1e\xfe\x6a\x3b\x4f\x8f\xec\x8f\x7d\xe8\x07\x44\x54\x0c\x4f\xc7\xa1\x07\xf4\xe1\xbf\xcb\xd9\x9d\xa2\x5b\x97\x46\x09\x5d\xdf\x01\x25\xd5\x6d\xa7\xe7\xf8\x60\x3f\x04\xd3\x59\xa0\x88\xb4\xc0\x44\xf9\x36\xcc\xb7\xd8\xf8\x9e\xd5\x3c\xc9\x91\xa3\x49\x7c\xa9\x52\x09\x4f\xf3\xc3\x30\x46\xf2\x60\x9d\x07\xb2\x9b\x63\x39\x81\x36\x9c\xb2\xf0\xee\xcd"}, +{{0x2e,0x19,0xcd,0x44,0x2f,0x22,0xa4,0xa9,0x9d,0xff,0xc5,0x5e,0x7b,0xf6,0x25,0xf8,0x9d,0x13,0x44,0xb5,0x63,0xf6,0x78,0x53,0x13,0xa7,0xee,0xe9,0x73,0xb4,0xaa,0x36,},{0xee,0x3d,0xa7,0x6a,0x8f,0xcf,0x40,0x3a,0x29,0x58,0xd4,0x55,0x1d,0xa0,0xa7,0x2b,0x2e,0x73,0x85,0x22,0xb2,0xe6,0xb2,0x0f,0xba,0x6a,0xa2,0x6b,0x32,0x30,0x73,0x57,},{0x28,0x32,0x6b,0x5b,0x97,0x8e,0x0d,0xbd,0xab,0x5d,0xde,0x70,0x37,0x85,0xa6,0x67,0xa7,0xef,0x43,0x9d,0x81,0xea,0x47,0xe0,0x66,0xb0,0x89,0xd1,0x16,0xc2,0x5a,0x34,0xbb,0x63,0x3f,0x26,0x0d,0x55,0xf4,0x5b,0xdf,0x6b,0xcd,0xa7,0x48,0x03,0xd7,0x62,0x4b,0x19,0x27,0xce,0xc1,0x8e,0xb1,0x99,0x22,0x60,0xbe,0xef,0xc3,0x99,0xd9,0x0e,},"\x1b\xfc\x5c\x6a\xa6\xa5\x35\x4f\xbb\x86\x14\x69\x79\x63\x48\xac\x63\x19\x12\x4d\xa3\xf1\x0d\x20\xd5\x0b\xbd\xc7\x15\x9d\x41\xb5\xab\xb1\x36\xc7\x99\x6a\x77\x37\x97\x12\x2b\x52\x5e\x8e\x2d\xca\x19\x54\xf6\x39\x17\x07\x30\x1d\x90\xf2\x10\x1b\x46\xc7\xb0\x86\xef\xa1\x58\x77\xca\xdc\xd0\x58\x12\xdb\x34\xb9\x96\xcb\x4f\x53\x1a\xbc\xd1\xe9\x8d\xb0\x8a\x5c\xf1\x36\x8e\x8f\x4b\x11\x09\x14\x2e\x95\x62\xbd\x00\x85\xff\xae\x5e\x66\x0f\x59\xc9\x30\x79\x3e\xbd\xb6\xe8\x0b\x0a\x2f\x4f\x3f\x59\xbf\x9d\x39\x5c\x48\xd2\x6e\x0a\x72\xa6\x0f\x9d\x1f\xf8\x7f\xd2\xd7\xa3\xf5\x38\x3a\xa9\x02\xad\xed\xed\xeb\xc6\xcd\x1b\xef\xd0\x38\x33\x61\x62\x74\x9d\x91\xa9\x57\xca\x2e\x3d\xd4\x70\x91\xc5\x59\x31\x13\xda\x87\xc3\xd6\x6a\x02\xc8\x0a\x6e\xdd\xb5\x35\xc4\x8c\xa1\xf3\x4a\x97\xfd\x1c\x95\xeb\xc2\xe5\x70\xfc\x8f\xaf\xe6\xe5\xd6\x54\x6d\x1f\x3a\x9b\xa8\xda\xac\x33\x4c\xf4\x7b\xf1\x17\xe1\x28\x0d\x0e\xbd\xf1\x4b\x0f\xcd\xbb\x43\xb8\xd2\x48\xcc\x6b\x61\x32\x0f\xdb\x04\x49\xed\x5f\x5d\xe8\xba\xb1\x21\xaf\x0d\x85\x54\x95\x6e\x6a\x12\x01\x6b\x42\x67\x7b\x44\x36\x78\x92\xc3\xb2\x0a\xfc\xc2\xcb\x9c\xfb\x5b\x10\x0a\x95\xb5\x1e\x8b\x07\xda\x9f\x51\x41\x5f\x4c\xd7\x78\x1a\x31\x37\x65\xe2\x0d\xb2\x7f\x23\x43\xe0\xf7\x19\xec\xea\x9a\xf0\x26\x95\x6f\x33\x87\xe9\xea\x7e\xd0\xa2\x93\x75\x9b\x4a\x26\x22\x02\x80\x7b\x41\x30\x9f\xb8\x0f\x50\x18\x5d\xb6\xa5\xf8\xbd\xca\x17\x88\x41\xbe\xc0\x6a\xdd\xc7\x61\x0d\xf7\x60\x17\xb5\x14\xbc\x41\x42\xf2\x6a\x36\xbf\x5b\xac\xec\xb0\x12\xfa\x41\x71\x0d\xd8\x49\xbe\xf7\xa7\xe4\x51\x43\x28\x36\xfe\x9b\x32\x65\xfd\x5b\x59\xee\x40\xb0\x4d\xad\x85\xcf\x48\xf8\x91\x46\x5a\x84\x2c\xd4\x50\x0a\x10\x24\xee\xfd\xf0\xf5\x54\xf0\xca\x17\xec\x9f\x7b\x71\x52\x56\xa9\xb9\xdb\xe2\x79\x66\x38\x6d\x8a\xc3\x7d\x3c\x51\x58\x96\xde\x0f\x7c\xdf\x7c\xf5\xb3\x20\xff\x7a\x8e\xf6\xb3\x4b\xa8\x20\xab\xa9\x06\x6d\xd2\x53\xc5\xb7\x76\x37\x77\xf9\x4b\x2d\x6a\xd8\xc7\x10\x22\x1e\x11\x37\x53\x5d\xff\x8a\x1b\x75\x65\xec\x81\xbd\x8d\xde\xb5\x02\xe3\xd5\x8f\xf8\xf1\xfe\x6e\x86\xb8\xdc\x15\xa3\xaa\xec\x68\x8b\xbb\xec\xd4\x68\x82\x81\xdb\x0f\x81\x8d\xe0\xf7\x26\x1b\xa9\xcc\x58\xc8\xbc\x0d\x02\xe0\x66\x32\xef\xe7\x28\x7a\xd7\xa8\x43\x31\xa8\x24\xd9\x28\x73\x44\xef\xaa\xa7\x4f\x1f\xc5\x76\xd0\x26\x94\x30\xf8\x56\xa8\x56\x52\x65\xb9\xd6\xef\x71\xfe\x13\x4d\x25\x10\xab\x06\xb6\x0b\xf3\xc1\x53\xb5\x7e\xcf\xd2\xe6\x34\x24\x03\xfe\x67\x8b\x58\x86\xb6\xb7\x34\xb7\xd3\x69\x06\x62\xb6\xc8\xc6\xf6\xe2\x50\xe5\xaf\x6a\x81\x83\x16\x6d\xdc\xd0\xa1\x7f\x0c\xdd\xc8\x63\x6e\xf1\xa6\x84\x98\xbe\x50\xb6\x59\x95\x39\xd4\x6b\x4c\xea\x97\x13\x0e\x08\xf9\x4c\xa5\x3e\x88\x46\x44\xed\xa7\x5d\x23\xcd\x2c\x03\x8a\x5f\x17\xb5\x91\xe2\x13\x69\x37\x8c\xd3\xfb\x57\x62\xd1\xa7\xc3\xe6\x6a\x11\xae\x6e\x91\xcb\xae\x61\x6a\xd0\x55\xe3\x9d\xc4\x1e\x15\x4f\x4f\xce\xd7\xb2\x69\x6d\x9d\xc6\x73\x80\xbb\x8e\xef\x47\x4e\x9a\xa8\x3c\xec\x47\xfa\xfa\xfb\x94\x1d\x62\x65\x64\xb2\x07\x5b\xcc\x08\x56\xda\x8d\x6e\x1b\x0b\x8f\x18\xba\xf7\x51\x3b\xbd\x14\xe4\x91\xed\x51\x79\x68\xc4\xf7\x24\x1a\xf2\x50\x98\xee\x8d\xf1\x30\xb7\xa3\x4d\x59\x73\x6d\x78\x36\xd3\x23\xfe\x3f\x43\xf5\x08\xcd\xcb\x75\x58\x95\xf5\x9a\x00\xc8\x04\xed\x16\x4c\xc3\x39\x92\xf3\xae\xe9\x62\xae\x9e\x99\x0b\x74\x27\x2e\xb9\x87\xb1\x2d\x90\xb2\x73\x14\xd5\x74\x00\xe7\x37\xd1\x34\x3e\x97\x09\x85\xc4\x27\x10\x60\x87\x6a\xbc\xd7\x04\x9e\x7c\x9f\xe2\x44\xff\x3e\xf9\x85\x60\x99\x5b\x74\x82\xd3\x1b\xc7\xc0\x9d\x99\x69\xf7\xcd\x41\xf4\xe4\xe2\x52\x75\x0d\xc1\x6c\xcd\xb2\x9b\x98\x53\x14\xa0\xb6\xe7\x49\xc9\x5f\x9b\xd2\x83\x8d\x5a\xc4\x9e\xe0\x31\xfd\x07\x9b\xec\x30\x28\xdd\x9d\xd0\x7d\xb6\xfa\x62\x2a\xd6\x21\xb3\xb1\xe1\x27\xe8\xfc\xa3\x7b\xd1\x46\xe3\xcf\x70\x3e\x91\x17\x01\xb7\xa1\x6c\x2d\x30\x36\x9c\x94\x64\x8e\xcc\x03\xdf\x10\xd7\xdd\x5c\x05\x58\xfa\x95\x93\x42\x5d\x94\x87\x27\xd6\x86\x0c\x3a\x14\xf8\x11\x24\x51\x06\x61\x6d\x2a\x5f\xa9\x81\xc6\xb7\xf4\x7e\xc9\xde\xf6\x54\x12\xd1\x32\xac\xc6\x91\x9d\xa4\xe8\x85\x97\xaa\x91\x90\xca\x61\x4b\x21\x80\x66\xa0\xf7\xb1\x69\x97\xee\x74\x7c\x5a\x09\x78\x5e\x50\xd0\xa8\x91\xd9\x59\x37\x86\x3d\x61\x3c\xef\xf7"}, +{{0x82,0x10,0x90,0x99,0xd1,0xea,0xfe,0xed,0x5a,0x85,0x20,0x60,0x46,0x49,0x1b,0x34,0xd0,0x6d,0xcd,0xe3,0x3f,0x08,0x09,0x60,0x28,0x7b,0x10,0xfb,0x23,0xff,0x9f,0x78,},{0x08,0x1c,0xfd,0xf2,0xd7,0x58,0x65,0x4c,0x41,0xc4,0x47,0xe1,0xe6,0x27,0x38,0x10,0xf8,0xa7,0x38,0xa7,0x33,0xaf,0xc4,0x22,0x94,0xa2,0xb1,0xbb,0xb7,0x69,0xef,0xce,},{0xb3,0x98,0x7f,0x32,0x4b,0xc7,0xe7,0x76,0xc0,0xf2,0x87,0xfa,0x13,0xad,0x28,0x74,0x16,0x95,0xe2,0xe7,0xbc,0xe8,0xd1,0x43,0xe2,0x9f,0xad,0x5d,0x00,0x99,0x47,0x58,0xe2,0x25,0xfb,0x80,0x21,0x00,0xd2,0x3f,0xd6,0xcc,0xaf,0xee,0x8e,0x0a,0x95,0xbc,0x47,0x9b,0xe8,0xc2,0x3a,0x11,0x31,0x97,0x45,0x76,0x5b,0x7c,0xd4,0x7e,0x70,0x06,},"\x84\xf4\x7d\xd7\x94\x97\x7a\x6c\x15\x05\xac\x8c\x05\x68\x0c\x56\x15\xa2\xd5\xb0\x57\xe3\x9b\x04\xf8\x5e\x3f\x9f\xf0\x49\x60\xe0\xe0\x16\x68\x5a\x86\xee\xbc\xec\xf6\xfb\xce\x5f\xdd\xcd\xac\x1a\x47\x4c\x8a\x0d\x50\x2c\x40\xe1\x0f\x94\x86\x46\xfd\xac\x6c\x81\xf1\xff\xbb\x17\x7a\x2a\x49\x63\xb6\x78\x25\x90\x3c\xde\x65\xb5\xdb\xe0\xd8\x94\x1d\x54\x6c\xff\xa2\xbf\x8a\x8c\xa8\xd6\xc6\x40\x85\x30\xa6\x29\x0f\x5d\x08\x82\xf1\xa1\x67\x2d\xbf\x97\x8e\x10\xc5\xc8\xaf\x5e\x0a\x62\x39\xf0\x65\x5e\xe7\xfd\x9e\x66\x96\x30\x77\xa0\xe8\x47\x13\x73\x97\xd1\xf0\x69\x99\xdc\x6f\x8a\x94\x5c\x60\x03\xea\x4e\xa7\xfd\x58\x37\x8a\xcb\x44\xed\x57\x80\xea\xa3\x67\x79\x6b\xee\xa3\x7d\xdc\x23\x69\x99\xd0\x12\xd6\xa7\x16\xd7\x91\x56\x49\xcc\x28\xe5\x88\x75\x64\x7e\x9f\x5a\xc0\x55\x3c\x0f\x54\x4d\xf5\x64\x69\xc6\x70\x81\xd5\xe3\x03\x95\xf3\xe9\x60\xe6\xa5\x2f\x08\x33\x19\x2c\x54\x8c\xd5\x7c\x92\x6b\x82\xdb\x48\xc3\x61\xbd\xe7\x03\x33\xa3\x70\x08\x3e\xaa\xa0\x68\xdc\x2a\xe4\x52\xd2\x1e\xf1\x33\x1a\xed\x19\x0b\xd3\xe1\x28\x9a\x10\x4c\xf6\x67\x83\x43\x77\xcf\x7b\x5a\x29\x77\x48\x07\xc3\xf1\xea\x9e\x7b\x28\x83\x1d\x0f\x6c\x42\x94\x78\x58\x67\xb1\x37\xb6\x50\x28\xc1\x4f\x93\x2a\x1b\xa8\xe6\xf9\xf5\x96\x24\xfe\x0c\x39\x68\x43\xea\x19\xe4\x6f\xba\x09\x14\x2c\xf9\xd4\x24\x97\x31\x2f\x36\x02\x44\x03\x2f\x1e\x00\xf3\x8d\xd0\xde\x29\xf9\x63\xb5\xcc\xc1\xef\x12\xb2\xcc\x62\x04\xb9\x94\xaf\x1f\x3b\xaf\x19\x6d\x9e\x21\xe8\xfa\x4f\x09\x73\x20\xc6\x44\x04\xd0\xb7\xd5\xab\x38\x56\x0c\xa0\x65\x53\x64\xb0\xb0\x9c\xd6\xdc\x0f\x0e\x05\xb8\xc9\x11\x03\x64\xf1\x42\x4a\x96\x72\xb7\xef\xdf\x7e\x1f\x37\x8e\x23\x45\x50\x56\x6d\xbe\x13\xb0\x15\x78\xb0\x41\x53\xe9\xc3\x7b\x55\x3e\x32\xa4\x44\x1b\xc9\x7e\x29\x53\xbe\xc2\xe4\x14\x55\x51\x0f\x98\x02\xef\x94\x8d\xcb\xf1\x3f\xad\xdd\x72\x2e\xde\x57\x36\x27\xb2\x58\xd5\x5e\x83\xc0\x89\x5b\x22\x91\x9e\x4b\xe5\xce\x8d\x81\x9c\xe6\xad\x84\x3b\x2d\xd0\x9d\xf6\x40\x04\xc8\x26\xc1\xdd\xe7\xce\x64\x80\xa2\x71\xa8\x58\xa1\xdb\x16\x9e\x14\x94\xd4\x46\x90\x32\xbc\xc1\xcc\xd8\x96\x53\x19\x8b\x7c\x07\x3f\x76\xa2\x6a\x29\x99\xb5\x64\x8c\xba\xdc\x15\x74\xc7\x8e\xad\x8e\xec\xe8\x3b\x91\xe1\x29\xc4\x37\xf9\xee\xec\x04\xc8\x07\x45\x90\x02\xe6\x6d\xcc\xa9\xbf\xc2\xca\xed\x9e\x6c\x0b\xa2\x3d\x23\x55\xde\xf7\x56\x65\x74\x94\x30\xee\x92\xc5\x32\xa6\x95\x47\x9f\xec\x92\x91\x74\xf4\x40\xec\xb6\x1a\x5a\xe8\xb2\xb7\xe9\x58\x92\x05\x58\x26\x89\x78\xf7\xfb\x4d\xa1\xb3\x8b\x12\x01\x4f\x5d\x61\xb0\xfd\xd7\xf6\x13\x6b\xa4\x28\x1b\x41\xa3\xa3\xcd\x18\x80\x52\xb6\x98\x76\x5b\x6f\x05\xe4\x1e\x78\x37\x3e\xa8\x30\x46\x97\x87\xa3\x75\x10\x99\x3d\x12\xf9\x3e\x96\xc7\x2d\x72\xf4\x46\x19\x84\xf6\x91\xa4\x1c\x7d\x33\x97\xdd\xd5\xa1\xb3\x92\x37\xd1\x30\x88\x64\xd4\x15\xfc\x6c\x22\xb6\x3f\x37\x6c\xed\xde\x37\xf5\x25\x2b\x51\xec\x72\xe5\x15\x5f\x3b\xdb\x4f\xcd\x54\x12\x49\x8b\xd2\xe0\xc1\xf9\x85\x0b\x3a\x85\xd1\xdf\xd2\x51\x67\xa3\xcd\x77\x1e\x8e\x4c\x9d\x86\x8c\x95\xa7\x17\x5e\x37\x75\xf6\xce\xf1\x7e\x4e\x36\x49\x7c\xe9\xe4\x55\x32\xbd\x7f\x44\xb2\x77\x6e\x40\xf9\x1a\x07\xca\x4f\xa1\xb9\x5d\xbe\x81\xcf\x8f\x49\xe4\x6b\x6c\x82\xa6\xee\x43\x47\x91\x8a\x76\x43\xb0\xd9\xa3\x88\x57\x21\x2c\x69\x3e\xad\xac\xfd\x37\xa5\xf1\xd9\x15\x58\xf5\x45\x4d\xcd\xd0\x59\x35\xf2\x90\xe6\x2d\x7e\x65\x00\x6c\xd5\x49\xf6\x55\x3c\xe7\x41\xdf\x44\xd3\x96\x44\x00\x1e\xb4\x79\xca\x69\x56\x8a\xd1\xf2\x3b\xba\x09\x9a\x41\xa4\x72\x94\xdb\x93\x87\x31\xc5\x30\xaf\x1c\xeb\x92\x17\xd2\x9b\xc2\x70\x56\x13\xc1\xa1\xfe\x9c\x20\x8d\x0b\x01\xba\x6f\x4d\x9b\x4c\x7b\xa8\xf0\x21\xdf\x91\xea\x2d\x57\x8c\xe0\x83\x12\x3e\x83\xba\x4b\x9c\x50\x40\x7f\x66\x66\xfb\xe6\x11\x58\xb0\xd1\xb9\x57\x77\x72\xe3\xea\xff\x8f\xb4\x29\xd0\xf6\xd2\xe3\x84\x12\x61\x30\xf2\x1b\x44\x9f\xb1\xdc\x17\x0d\xb4\x5a\xf5\x05\xbd\x31\x82\x67\x8a\x9b\x5f\x9f\xdf\xf6\x5f\x04\x13\xb6\x72\xc4\x78\x63\x40\xfc\xf2\x52\x2e\xa7\xf3\xd8\xad\xe8\xa0\x59\x52\x96\x49\xdb\xda\x9c\xe5\x1f\xf0\x5a\x2a\x2a\x3d\x66\xd2\x16\x6b\xf2\xc9\xc6\x77\x2b\xa0\xef\x41\x05\xe6\x8c\x05\x5e\x02\x13\xd4\x2c\x1e\xe1\x23\xb3\xc1\x21\x78\x43\xe6\xec\x57\x5d\x75\x4d\xf3\xc9\x0a\x75"}, +{{0x65,0xfc,0xbd,0x62,0x6d,0x00,0x21,0x11,0x33,0x4b,0xaa,0xd4,0xe6,0xa8,0x00,0x6e,0x47,0xa1,0xf9,0x13,0x97,0xbe,0xe6,0xdd,0x6c,0xd7,0xda,0x5a,0x0e,0x02,0x48,0xa4,},{0x20,0x40,0x9a,0x14,0x6b,0x42,0xc9,0x6b,0xea,0xb0,0xb4,0x2e,0xa7,0xf2,0xc2,0x51,0x93,0x11,0x9d,0x0d,0xf4,0x4d,0xc2,0xbf,0x14,0xd1,0x1a,0x32,0xfd,0x73,0x36,0x15,},{0xbc,0x78,0xe1,0x6b,0xa6,0x74,0xe0,0xa7,0xdb,0xa5,0x7a,0x19,0x09,0x4f,0x97,0x33,0xc5,0x5d,0x74,0xb9,0xd1,0x5f,0x8a,0x44,0xd1,0xbb,0xc0,0xa0,0x23,0xf7,0x01,0x55,0xde,0x29,0x77,0x11,0x1a,0x41,0x7e,0xef,0xa8,0xcb,0x30,0xec,0x12,0xab,0xc8,0x38,0x42,0x28,0x16,0x7c,0x70,0x98,0x2a,0x82,0x06,0xb1,0xff,0xb7,0x21,0x74,0xaf,0x01,},"\xe4\xc0\x94\x7f\xc8\xca\x78\xfa\x88\x63\xf4\xd0\x44\x49\x9d\x03\x6e\x2e\x7e\xf8\xc1\x7e\x83\x8f\x2f\xac\x02\x67\x5b\x7b\x53\x81\xe5\xf9\xab\xce\xaf\xd0\xd8\x88\x6a\x92\x9d\x9d\x9b\x49\xfc\xb7\x38\x61\xb2\x9d\x15\x18\xac\x5f\x83\xf7\xf8\xfc\x26\xbd\x1c\xeb\xc2\x2d\x87\x3a\x9a\x08\x23\x14\x06\xfb\x03\x2e\x48\x66\xe5\xf5\x5c\x7c\x04\x41\xc5\x19\x04\x1b\xb2\xcc\x73\xf9\x22\x6d\xd5\xd0\x7e\xce\xb6\x60\xd6\xc9\x67\xdb\x23\x36\x55\x74\xbe\xe8\xfc\x10\x22\x29\x28\x76\x77\x13\x57\x1a\x71\xc9\x3a\x85\x27\x8d\x42\x29\x9a\x70\x59\x9c\xa9\x93\x26\xcc\x86\xf6\xd9\x8d\xaa\xc0\x00\xfd\xfa\x71\x05\x62\xf4\x81\xfa\xa0\x20\xc7\x2a\x76\xe2\x06\x7d\x15\x4c\x23\x5a\x7a\x4f\x29\x70\x8c\xc5\x44\x53\x3b\xd7\x99\xed\x63\x63\xeb\x3b\x56\xaa\x4a\x6d\x0e\x37\x9b\xbf\x07\x60\x05\x95\xc2\x3a\xb1\xf3\xf9\xf1\x70\x8e\x00\x70\x26\x1b\xbb\xf4\xbf\xea\xf6\xd6\xce\xd4\xd7\xff\x72\x2c\x9c\xc5\x2d\x91\x33\xea\x68\xd4\x95\xdc\x94\x89\xc3\xed\xf6\x83\x02\x31\x35\x1f\x65\xcb\x52\x72\xf5\x39\x6e\x2c\x4a\x1a\x5c\x88\x66\x1a\x10\x18\x92\x24\x9e\x23\xd6\xce\x9f\xdb\x6a\x9a\xbf\x74\x27\x2c\x2f\x59\xc3\xd8\xfd\x87\x43\xcc\xe4\x61\x12\x6c\xa0\xa8\xb8\x32\xb4\xb2\x18\x33\x6b\x1a\xe1\x4d\xa6\x77\xba\x7f\x1b\x2c\xc5\xca\x3c\x71\x58\xf7\x27\xa9\xe1\xb8\xfd\xd9\xed\xf5\xc2\x18\x7f\xcb\x83\xdb\x86\x2a\xd0\xc6\xb3\x92\x16\xde\x31\x16\x91\x95\x56\x46\x51\x00\xad\xe0\xa4\x2b\xd6\xba\x10\xd9\x54\x18\xb6\x9a\x3e\x00\x5e\x9f\x10\x45\x89\xea\x59\x48\xb2\xb5\x1b\xc7\xb1\xa9\xa0\x74\x9d\xa8\xf0\x13\x78\x1b\xc0\x5c\x80\x5b\xb5\x1e\x18\x77\x61\xac\x24\xc7\x64\x14\xf6\x68\xeb\x45\xfb\x0a\x50\x24\xdf\xe5\xa5\xca\x06\xf0\x40\x3a\x02\xe3\xb2\xfe\xf7\xa2\xc4\xbc\xfb\x1d\x07\x5d\x31\x0d\x51\x97\xe6\x59\xcd\x14\x02\x3f\xae\xc2\x0e\x04\x5c\xab\xcb\x86\xb2\x21\xa1\xd4\x82\x71\x13\xff\x32\x67\xa6\x4d\xeb\xe9\x93\x90\x04\xca\xba\xc8\x5e\x5c\x74\x61\xe7\xe8\x2a\x97\x5a\xcf\xae\x0b\x6c\x51\x6a\x1c\x60\x53\x74\xcf\xea\x7d\x81\x90\x44\xef\xd6\xd7\x46\x54\x42\x4f\xd5\xc9\x0f\xf2\x57\x4f\xcd\x8e\x00\x77\x40\xd9\x75\x86\x1d\x0d\xf5\x25\x9f\xe4\x3e\x43\x63\x9e\x36\xe5\x28\x95\x43\x9b\xa2\xc2\x7c\x1e\x88\x9c\x93\x09\x41\x04\xfe\x91\x49\x21\xbd\x6f\x25\xd3\x98\x5a\xb1\xf2\x2c\xa5\x57\xb0\xe4\x9a\xfc\x73\x75\x24\x3c\x52\x1c\x6d\x5f\xaf\xe0\x38\x1c\xce\xa8\x28\xe8\x8e\x64\x7f\xd9\x09\x76\xb3\xfb\xec\x19\xfe\x9a\xdb\x11\x3c\x64\x04\xbd\x35\x2b\xfc\x00\x04\x46\xd2\x10\x05\xb5\xf9\x50\xae\x07\xe5\x1c\x76\x8c\xa3\xff\x61\x77\xb2\xea\xc5\x0f\x10\xdd\x2e\x64\x61\x0f\xa8\xab\x57\x88\xfa\xee\xe2\x9d\x12\x90\x09\xd7\xfe\x46\xaa\x3d\xa6\xb9\xd8\x6c\x73\x06\x5e\xb5\x16\x1f\xbd\xbd\xfa\xc5\x77\x7c\x4e\x75\x45\x2e\x6e\x16\xae\x9f\xd6\x6b\xb7\xd9\xaa\xa4\x26\xbc\xb7\xa6\x91\x5f\x0f\xf4\x4a\x1f\x8e\xc7\x13\x94\xe9\x35\x2f\xdf\x20\xe0\x2f\xaf\xe1\xe0\xce\xfe\x50\x74\x4c\x31\x94\x95\x6f\x92\x8f\x82\x53\x37\x55\x37\x38\x38\xdc\xc1\x29\x6a\x89\x1a\xdf\x64\x1c\x73\x82\xd6\x9b\x4f\x5a\x43\xd4\xaf\x77\x72\xa4\xa1\xee\x87\x92\x92\xd7\xa4\xf3\x2a\xc3\x5e\xe1\x21\xc6\xc3\x4c\xa5\xf9\x84\x87\xa9\x41\xfc\xb1\xe6\x5b\x44\xd4\x45\x61\x27\xee\xdb\x2f\xcc\x1c\x3f\x48\xef\xf9\x30\x09\x81\xe5\x2a\xc3\x8b\x49\x6a\xb8\xbb\xce\x14\x4a\x85\xeb\x9c\x07\x63\x8b\x31\xfd\xaa\x78\x17\x44\xbc\xe1\x7e\x8d\x93\xdc\xdc\x60\xaf\xed\xa4\x88\x80\x76\x17\xf8\x8d\x6a\xa5\x44\x22\xfd\x34\x7d\xda\xdd\xef\xf3\x7a\x56\x3d\xbf\x19\x97\x4b\x2a\x23\xbe\x30\x0f\xbf\xa6\xc7\xfc\x41\xf8\x4c\x69\x05\x41\x52\x69\xf1\x95\x99\x0b\x5b\x4d\xe1\x26\x68\xc7\x1c\x87\xb5\x04\xf4\x11\x24\xbf\x94\x43\x6f\x33\x30\x45\x63\x15\x18\x15\x2c\x51\x62\xa2\x47\x5c\x40\xef\xb6\xcb\xda\xaf\x9a\xf4\x28\xfe\xd3\x25\xb3\xa7\xd9\x4c\x17\x52\x0f\xd8\x9e\x00\xdd\xf0\x8b\x22\xad\xf6\x61\xf0\xac\xd7\x23\xb3\x96\x9d\xc6\x43\x4e\xa6\xf9\x2e\xf5\x8e\x8d\xfa\xe5\xb0\xcc\x28\x85\xba\x98\x7e\xa1\xd1\x6c\x39\xb3\x4e\xf6\x50\x23\x00\x9d\x63\x45\xe4\x8e\x36\x91\xa4\x1f\x02\xa7\x7b\x7f\xe1\x33\xea\x9d\xe7\x56\x5f\x15\x7a\x20\x78\xae\x98\x8b\xbb\x26\x6d\x22\xd5\xfa\x91\xa7\xb2\x63\xe9\x8a\xd2\xdc\x07\x31\xfe\x5a\x29\x02\x5a\x0c\xb4\x36\x86\x4a\x5a\x60\xdb\x25\x7f\x1e\x76\xb5\xc6\x08\xf2\x5c\xde\xcc\x87\xea\xe6"}, +{{0xb5,0x00,0x76,0x8a,0x28,0x23,0x91,0x5c,0x4a,0x68,0x48,0xd3,0x5f,0x64,0x87,0xd4,0x3b,0xd7,0x66,0xd2,0xce,0x09,0x45,0xf8,0xa3,0xcc,0xdb,0x8d,0x82,0xa3,0x89,0x2b,},{0xb8,0xce,0xa2,0x15,0xa0,0x12,0x4e,0xed,0x27,0x00,0x57,0x25,0xd8,0x97,0x78,0x1e,0xa0,0x64,0xdc,0xef,0xb2,0x14,0x22,0xc8,0xbd,0x24,0x02,0xc5,0x6a,0x10,0x57,0x1c,},{0xe3,0xdb,0x47,0xa1,0x1e,0x10,0xe7,0x88,0x92,0x5d,0x14,0xb1,0xe2,0x8b,0x54,0xc9,0xfc,0xf9,0xb6,0xac,0xc1,0xdf,0x8c,0x14,0xf6,0x83,0xa5,0x67,0x2f,0xd5,0x04,0xdd,0x4a,0x47,0x5a,0x33,0x93,0xb3,0xef,0x8b,0xce,0xac,0x23,0x61,0xdb,0xba,0x35,0x30,0xaf,0x25,0xc2,0x46,0xc3,0xec,0x4c,0x05,0x89,0x9b,0x51,0x7f,0x6c,0xd3,0x4f,0x0a,},"\x0a\x9f\xda\x8b\x8c\xfc\xa7\xa5\xb0\x5d\x78\x11\x6f\xce\xe1\x9a\xb8\x03\xc1\xc6\x01\x0c\xe1\x1d\xaa\x8e\x93\xa6\x6d\x12\xc1\x2e\x47\x4e\xb9\x1c\x26\x40\xd9\x7a\x81\x3d\x9a\x83\x0d\x26\x88\x68\xeb\x2e\x37\x70\x42\x5f\x10\xc7\x58\x40\x46\x8e\x66\x9d\xc7\xf6\x1d\x3b\xe2\xde\x88\xae\x0e\x54\x2b\xc8\x09\x67\x91\x13\x95\x7a\x14\xda\x4e\xaf\xf5\x49\xbf\xde\x63\x7d\x7c\xaf\xdc\x6a\xa8\x39\x94\x83\x73\x97\xf8\x6e\x4f\xde\x86\xd4\x02\xfa\x9a\xef\x7f\x65\x54\x9a\x21\x43\x73\xe5\x60\xe6\xd7\xa1\xc2\x76\x9e\x0c\x7d\x5a\x01\x71\xe7\xcc\x00\xdf\xf3\x6e\x04\x29\x79\x8b\x53\xaa\x62\x16\x24\xbd\xa7\x4d\x6d\xf0\xbf\xff\xfb\xd8\xfd\x7b\xef\x1a\x64\xf3\x6c\x00\x07\x82\xf6\xed\x03\x1a\xf5\xc2\xa7\x4a\x18\x96\x35\x98\xc9\xba\x06\x23\x92\xde\x96\x02\x03\x67\x94\xb7\xb5\xe6\x8c\x25\xc9\x3f\xe7\xcf\xad\x47\xa7\xc5\xb9\x79\xd4\x76\xcd\x51\x3a\x12\xbf\x03\x07\xcb\x16\x31\x74\x00\x42\xa9\xfb\xf3\xeb\x0b\xe5\x17\x06\x20\xda\xfd\x5f\x16\xed\x89\x34\x2c\x26\x25\xd7\x83\xe7\x4e\xe0\xd7\x84\xbf\x05\x19\x43\x74\x0c\x88\xb0\xbe\xf7\xbc\x85\xe1\xa6\xa4\xa5\x17\xd4\x92\xfb\x73\x7e\x77\x66\x99\x59\x0c\x93\x22\x4c\xd4\xd9\x24\x5d\x4e\x93\x71\xa3\x67\xc0\x71\x2f\x87\x49\x0f\x92\x47\xc4\x9a\xdd\x93\x13\xf2\x77\xa4\xd9\xf2\x6b\x75\xaa\xe4\xde\xd6\xa3\xde\xf8\x5f\x83\xfc\x99\x59\x10\x40\x55\x48\xaf\x67\x0e\xd8\xaa\xa3\x05\x24\xab\x82\x9c\xcb\x56\xa5\x00\x5b\x58\xbc\xe8\x68\xc9\xe8\x07\x4f\x07\xdd\x7f\x38\x18\xf2\x99\xe4\xe0\x86\xbe\xd9\xea\xb9\x02\xcf\x11\xb3\x98\xd5\x31\xb8\x63\x2e\x7d\x52\x3a\x8f\x87\x76\x95\xf4\x6c\xcf\x9c\xe2\x4e\x62\xca\xb2\xc7\xcd\x0a\xae\xe1\x7d\xb5\x26\x76\xa4\xb5\x05\x8e\x9c\x1d\x7c\x47\xbf\xfc\xb6\x41\xb0\xea\x2b\x09\x44\xf3\x9a\x75\x66\x5a\x7e\xf2\x9b\x7f\x02\xa8\x78\xdb\x82\x38\x83\xbd\xac\xfb\x0f\xbe\x5d\xfe\x5a\x9b\xed\x9f\xda\xc7\xe4\x14\x2e\x3e\xb5\x0d\x5e\x84\x0b\xd0\xac\x0b\xec\xf4\xfa\x97\xe1\xfc\x48\x27\xc3\x97\xa5\x24\x65\xd9\x16\x88\x99\x54\xb3\x70\x1b\x0f\xac\x61\x15\x9b\x23\x09\x2f\x46\x85\xf4\x78\x8b\xad\x35\xd0\x0d\xa2\x67\x9e\xcc\x54\x92\x1f\x1a\x86\x47\x10\x16\x57\xab\x49\x47\x74\x20\x56\x7a\xed\x67\xc8\x60\x59\x30\x44\x4b\x5d\x07\x92\x7c\x17\xef\xf1\xf8\x57\x0c\xf2\xaf\x29\xe7\x19\xf8\x5c\xa7\x84\x9b\x89\x55\x49\xf1\x3d\xfe\xca\x68\xbb\xef\x71\xe3\xce\x8b\x6c\xed\xd2\xff\x68\xd3\x2b\x02\xca\xf5\x95\x1a\x0b\x3e\x6b\x0b\xae\x6a\x96\xc0\x20\x58\x19\x1f\x30\x5e\x09\x07\x11\xc4\x6d\xad\xdc\xd5\xae\xee\x76\x9c\x3a\x10\x5e\x9a\x82\x7b\xbd\x19\x5d\x32\x92\x31\xc2\x62\x38\x47\x9a\x9b\xb0\x07\x1a\xfb\x16\x0e\xf9\x55\xe8\x74\xd7\xa4\x20\xc5\x67\x85\xf4\x4a\xe0\xa1\x8c\x52\xd8\x28\x0c\x59\x98\xcf\x38\x88\xfe\xaf\x89\x89\x81\x34\xbc\x8d\x41\x1f\xc9\xf6\xc5\x76\x8e\xa7\xa2\x49\x72\x94\x13\x73\x9e\x53\x2b\x64\x39\x37\x15\x2c\xdf\xb8\xd2\xff\x87\xfd\x48\x08\x4d\xd8\xae\xeb\xea\xf0\xf7\xb1\x0d\x87\xb6\xe4\x42\x32\x28\xc9\xfc\x8d\xc5\xe3\x85\x2a\xa8\xb8\xac\xc5\x45\xd1\x8f\x25\xc5\x5d\x73\xda\x1b\xb8\x2e\x3e\xb3\x76\xf9\xef\x05\xb2\x74\xd7\xec\xb1\x84\x5d\x65\xca\x0c\xd2\x62\x9f\x03\x8a\x2d\x66\x4d\x7a\x69\x78\x1c\x84\xe9\x8d\xe2\xc2\x09\xc4\x6e\xfc\x51\x16\x21\x72\x85\x66\x49\x46\x9e\x67\x33\x08\xdc\xc1\x45\xea\xf7\x83\xf5\xcb\x5b\x4b\xe7\xd9\xfd\x58\xee\x09\x74\xc9\x81\xa3\x8f\xea\x8e\x31\x26\x7a\xbf\xa4\x10\xe6\x9e\x46\x48\x2f\x51\x34\xf3\xda\x1f\xfe\x38\x1b\xd6\x9d\x8d\x0b\x78\xea\x90\x9b\x4a\xf9\x39\x6d\xca\xff\x89\x96\x0a\x04\x9e\xda\x69\x46\x61\x6f\xc2\x7c\xcf\x9a\x9e\x5b\xa1\xa0\x13\x57\x64\xf3\x77\x19\xda\x4d\x28\x07\x81\x85\xd0\x4d\x72\x41\x9c\x2c\x70\xf2\x90\xd9\x7e\x1f\x82\xb8\x79\xf7\x1b\x9e\x19\xd5\x04\xd3\x64\xcd\x3b\xa2\x2c\xf9\x05\x25\x0f\xd3\x7d\x58\xe5\xfe\x40\x20\x9f\x60\x72\xa0\x6d\x8b\x5b\xa7\x01\x96\x23\x05\x77\x87\x7e\xc4\x61\x53\x16\x7a\x7c\x7a\xea\x27\x0f\xa1\x09\x8a\xba\x9e\x3a\x74\xac\xb3\x6a\x11\xb0\x9b\xd0\x7a\x3b\x88\xea\x65\x4e\x26\x83\x65\x62\x5b\x58\x9b\x22\x06\xc7\x10\xd9\x60\xf4\x2e\xa4\x19\xb7\xe4\xe3\xda\x47\x59\xfc\xbc\xa5\x0e\x4b\xf4\xcc\x55\xcf\x88\xf7\x0b\x31\x80\xc8\x05\xa7\x04\x50\x86\xaf\xa0\x4c\x6b\xe2\x32\x23\xec\xae\x5f\x82\xc1\x46\xd5\x43\x11\xd1\x80\x7c\x2e\x4a\x53\xf9\xe0\xa4\x48\x2b\x4e\x1e"}, +{{0x9e,0xb5,0xc9,0xef,0x13,0x53,0x5f,0x80,0x81,0x09,0xf4,0xa4,0x3c,0xfa,0xd5,0x68,0x4f,0x80,0xda,0xf0,0x2e,0xed,0x54,0x10,0xac,0x0b,0x0a,0x09,0xa6,0x08,0x2d,0x69,},{0x36,0x7e,0xea,0x1e,0xcb,0x4e,0x5e,0xec,0xdf,0x7e,0x47,0x1b,0x90,0xbb,0x34,0xf9,0xb7,0x98,0x2c,0x8c,0xd6,0x6d,0x42,0x55,0x5c,0x24,0x0b,0x41,0xcd,0x87,0x39,0xdb,},{0x42,0x9c,0xe1,0xfe,0x84,0x6d,0x25,0x08,0x49,0xec,0xa7,0xd4,0x56,0xf8,0xc5,0x9f,0x86,0x75,0xb1,0xf4,0xc1,0x3f,0x2b,0xe4,0x16,0x88,0xdf,0xb8,0xca,0x2a,0x3b,0x24,0xae,0x29,0xd5,0xb6,0xbf,0x47,0x11,0x57,0xbc,0xb6,0xe2,0xec,0x9d,0x4a,0x26,0xb0,0x38,0xe6,0xec,0x28,0x58,0x4c,0xc2,0x3f,0x2a,0x03,0x55,0x6d,0xbb,0x37,0xe9,0x00,},"\x2d\x7c\xb0\x5e\x61\xdb\xae\x26\x25\x8e\x38\x61\xc6\x39\xef\x0e\x1d\x17\xfc\x71\x1a\x00\xf3\x35\xba\x3c\x02\x71\x37\xe0\x07\x08\xd7\x08\xc1\xff\x45\x7f\xf2\xc6\x51\x12\xf7\xdc\xd7\xd0\x2f\x24\xd5\x6f\x07\x21\x58\xea\x1c\x71\x83\x25\x50\xa5\x83\x66\xfd\x91\x97\x29\x6b\xbe\x61\xaa\x4d\x00\xde\x18\xa4\x53\xef\x91\x74\xfa\x81\x96\x83\x05\xc4\x1c\x34\x55\xf4\x2d\x44\x7a\x92\x34\xf0\x6e\x13\xbf\x8b\xca\xa1\xba\xbb\x11\x69\x5f\xaf\xdc\x08\xf7\xa5\x84\xb2\xea\x1f\x61\xe9\x38\x92\x60\xce\x73\x35\xa0\x7d\xe7\x2c\x89\x11\xa5\x8a\x31\x3f\x10\x88\xdc\xdf\x5c\x8d\x4c\x45\x6c\xba\x2d\xcb\x4f\x2d\x15\x6b\x49\x43\xb9\x5b\xd4\x93\xea\x4f\xe1\xa8\x2d\x4e\x3e\xa0\x2a\xa0\x29\x72\x40\x0b\x5e\xe1\x78\x42\x83\x2d\x59\x97\x9f\xc1\x79\xf8\x43\xc4\x4b\x03\xeb\x3c\x30\x24\x16\xd0\xcd\xaf\x11\xc4\xca\x8a\x66\xcc\xbb\x69\x97\x39\x5e\xdf\x6f\xca\x2e\xa0\x04\xcf\x34\x86\x97\x10\x04\xa4\x20\x42\xaf\x8e\xce\x00\x5b\x94\x46\x1d\x86\xdc\xde\x21\x2a\x2e\xb1\xbe\x3b\x91\x4c\x78\x3e\x48\xac\x1a\xd4\x6c\xac\xd7\x3e\x1e\xb4\x48\x36\x83\x22\xd2\x67\x8e\xfc\xb2\xab\xff\x52\x09\x3d\xb0\xf2\x59\xdc\xe5\xc1\xe1\x9a\x51\x28\x20\xf2\x35\xd6\xae\xaf\x0e\x1a\x72\x3c\x2c\x65\x0c\xff\x1e\xe3\xb6\xb4\xf4\xcc\x98\x9c\x0b\x7d\x6d\xe3\xcd\x7e\x6d\xaa\x39\xbb\x69\x07\x10\xdf\x00\xa7\x19\x4c\x17\x20\x1f\x0e\x81\xbe\x64\xb6\x73\x9e\x1c\x1e\x81\x76\xb7\xe1\x2a\x35\x34\x27\xc0\x67\xc1\x93\x14\xdb\x64\x2e\x5c\x76\x26\x6b\x64\x0e\xb1\xcc\x0c\x73\xf8\x4f\xc0\x22\x7e\x5a\x96\x06\x0d\x81\x40\x71\xcd\xe2\xfe\xd9\x44\x76\x7b\x74\x66\xf9\x00\x1d\xfc\x22\x36\x85\x42\x9b\xc4\xe5\xe4\x8f\x5c\x13\xa6\x3a\x4e\x0d\x82\x61\x33\xad\x92\x0d\x11\x77\x21\x45\xad\x6e\x13\xc9\x38\x97\x39\x8a\x8a\x40\x1f\x93\xdb\xd1\x03\x00\x5c\x7d\xae\x44\x38\x7f\x3e\x80\xb7\x93\x60\x7d\x05\xd2\xd8\xbc\x0d\x03\x51\xa3\xa4\x52\xb8\xce\x75\x9c\x1a\xd4\x8d\xf7\xb9\xba\x9e\x4a\x17\xdf\x61\xfd\xab\xb9\xb5\x77\xb5\xce\xc3\xe9\x46\x1f\xbb\x5e\x12\x81\x55\xa3\xc9\xc8\x9f\x8f\x6b\xeb\xb7\x32\x2a\x16\x67\x8e\x8e\xcb\x98\x95\x3d\x95\x83\x10\xdb\x1b\x06\x34\x48\xc3\x49\xf3\x6e\x16\x8f\xac\x48\x4c\xb3\xc0\xd4\xcb\x2c\x25\x1b\xd9\x2e\xf8\xe9\x26\x2b\x44\x09\x3d\x7e\x65\x0a\x7d\x3b\xed\x37\x91\xfa\x88\x10\x0f\xee\x6e\xf0\xd5\xe2\x3d\x1e\x9a\x80\x99\xcc\x03\x35\x20\x2a\x4f\x10\x6c\x24\x77\x7e\x98\xf8\x1d\x26\xef\xba\x15\xc9\xad\x15\x41\xe0\xad\xbf\x1d\x1d\x76\x07\x6b\x0d\xfd\x7b\x7d\x6c\x8b\x82\xf9\xc0\x93\x46\x8c\xd1\x96\x67\x2d\xc5\x47\x8e\x91\xce\x70\x1c\xdd\x7b\x68\xb3\x53\xc9\x71\x11\xf0\x42\x97\x60\x63\x57\x62\xf8\x68\x3a\xe9\x70\x56\x4b\xce\xba\x91\x20\x51\x76\x42\xe8\xb3\xa2\xba\xaa\x85\xc2\x5b\x54\xa9\x43\x76\x61\x84\x90\x4c\x72\xd9\x29\x63\x4e\xc5\xf0\xc2\x84\x73\x41\x5f\x12\x53\x89\x06\xc6\x78\xfc\xa4\xe6\x82\xdb\x48\x79\x75\x84\x92\x53\x7e\x78\x50\xb9\xbf\xef\x3e\xb9\x05\x3b\x43\x92\x0d\x81\x0e\x55\xbe\x96\x6a\xec\x68\xc9\xdd\x3b\x62\xcc\xf5\x7e\x81\x78\xcb\x5e\xf6\xd1\x6d\x17\x2a\x56\xdd\x92\x4f\x00\xf2\xd3\xb5\xe9\x3a\xaa\x92\xb2\x9f\xb8\x33\x6d\x73\xe2\x9e\x59\xd1\xc4\x7e\xa6\x23\x0c\xda\x1d\x5b\x03\xbb\xa5\xdf\xdb\x33\x1f\xeb\x19\x44\x3f\x12\x3d\x2a\x03\xff\x4f\x10\xec\xa1\x66\xc2\x99\x85\x88\xf1\xe5\x84\xed\x19\x4d\xd6\xf7\x3c\x8a\xca\x84\x66\x31\x90\x4d\x9f\xe4\xa9\x8b\x36\x78\x23\xe4\x6e\xdb\xa2\x88\x51\x29\x87\x9e\x92\x77\xe1\x50\xf0\x29\xb8\xfa\x7b\xd1\x1e\xab\x9c\xe1\x33\x67\x77\xc8\x0b\x56\xb3\xa1\xf0\x81\x1a\xdb\xca\x0f\x5b\x40\x25\xa5\x50\x3c\x81\x96\x66\x1a\xee\x90\x00\x6e\x9c\x85\xbb\xfa\x4c\x5a\x0e\x90\x28\x85\xc8\xce\x51\x21\x2e\xe6\x7f\x0f\xe0\xb6\xaf\xbc\x8b\xad\x45\x37\x27\x54\x3b\x3c\x68\xb8\x90\xdd\xab\xa2\x69\xd2\x5f\xc1\x64\x3f\x54\x83\x51\x36\xa1\xa2\x5b\xa1\x8d\x91\x6c\xed\xd6\xa4\x7f\xc0\x7a\xdf\x6f\xc6\x9f\xa5\x08\x94\x9d\xc1\x0d\x9d\xc5\xe0\x26\x1b\x52\xf3\x65\x71\x70\x38\x4e\xcc\xd9\xc8\x05\x41\x35\x4b\x1c\xe0\xf6\xfb\x5e\xd3\xe8\xd5\x4a\xf0\xb5\xbf\x0a\x92\x83\x51\x25\xc7\xd9\xbc\x4f\x09\x2f\xf3\x80\xe5\xe8\x96\xfb\xf3\x02\x55\x2b\x14\xd5\xb6\x1a\x22\x4d\x86\xe3\x01\xc7\xa6\x6a\x66\xe4\xe4\x32\x9a\xac\x0a\x66\xb1\x56\x77\x23\x74\xdc\x1c\x71\x68\xd5\xb5\x61\x65\x2f\x8f\x43\x87\xe4\xf2\x89\xb6\x36\x6a"}, +{{0xef,0x09,0x48,0xe1,0x32,0x81,0xf3,0xcf,0x35,0x2c,0xbf,0xaf,0x8d,0x89,0xd1,0x17,0x76,0x85,0x52,0xd5,0xa1,0x54,0x8e,0xcb,0xaf,0x37,0x41,0x2e,0x97,0x67,0x0f,0xac,},{0x58,0xc2,0x45,0x7f,0x5a,0x5e,0x3c,0xfb,0xf4,0x71,0x19,0xa8,0x7f,0x2a,0xff,0x19,0x18,0xf1,0xe6,0x7a,0xe6,0xfa,0x91,0x71,0xd3,0xf4,0x1e,0xee,0x07,0xa8,0x68,0x72,},{0xcc,0x12,0xf6,0x9d,0xb6,0x3a,0x67,0x8e,0xc4,0x77,0xa6,0x05,0xa5,0x05,0xc5,0x7d,0xc2,0xb8,0x10,0xef,0x85,0xe3,0xe3,0x45,0x19,0xcb,0x25,0xc5,0x10,0x63,0xaa,0x66,0x35,0x5d,0x3f,0x1e,0x29,0x74,0x69,0x58,0x66,0xed,0xf6,0xf1,0x71,0x71,0xce,0x37,0x84,0x2f,0xba,0xb5,0x07,0x5f,0xc8,0x95,0xd1,0x8e,0xd7,0x43,0xc5,0x46,0x08,0x0c,},"\x7e\xc4\x7f\x2f\x1f\xe3\xb7\x0a\x6d\x1d\x82\xc7\xcd\x92\x4b\x4b\xf9\xb2\x02\x9f\xc1\x2c\x52\xa6\xe1\xcc\x06\xcf\x5a\xbf\xc0\xa4\x42\xe7\xcf\x14\x5c\x15\x42\xb9\xb1\x35\x04\x96\x65\x71\x10\x35\xe3\xc2\x9a\x91\xd4\xfd\xae\xd6\x12\x70\x57\xa8\x12\xc2\x2c\xd7\x5a\xd1\x87\x9b\xe1\xd2\xc6\x11\x0e\x79\xe9\x87\x52\x4e\x4e\x8f\x27\xf1\x6e\xda\x90\xcb\xd4\x73\x3f\x11\x18\x25\xb5\x16\xd1\x06\x7f\x81\xec\xa5\xe6\x94\x85\x76\xd5\xbf\xed\xb3\x27\x7c\x1a\xbc\x1e\x60\xf3\x74\xd0\x70\x1b\x32\xcc\xfd\x6a\x5e\x9c\x8d\x16\x59\xaa\xf3\xd0\x81\x86\x13\x61\x3b\x7e\x28\x8d\x84\x5e\x9a\xaa\xba\x2e\x3e\x9b\x41\x1d\x50\x1d\xff\xe8\x56\xfd\x31\x3e\x9f\xcc\x9e\x74\x30\xb9\x98\x3f\x20\xab\x4e\xbf\x4e\xb6\x16\xbd\x63\xe2\xc5\x77\x43\x65\x89\x95\xed\x0a\x14\x9a\xe6\x20\xa3\x95\x61\x37\x19\xb3\xed\x7c\xed\x45\x88\xd5\x91\x5d\x70\xa2\xf0\xc6\x87\x68\x0e\xc3\x4f\xe3\xe9\xf7\x23\x92\xe1\x89\xe1\x3a\x47\x49\xd5\xca\x9f\xac\x65\x1b\x92\xc0\x84\xc4\x06\x6f\xdf\x98\xa8\x69\x22\x3e\x4e\x0c\x9b\xec\x58\x12\xb5\xc1\x90\x0e\x6e\x60\xd3\xa1\x88\xd4\x8a\x74\xdf\xd4\x15\xb5\xca\xd2\xe9\x1f\xf7\x6d\xf7\x50\x89\xd2\x0a\x75\x5f\x26\x07\x56\xc8\xf1\x38\x2a\x29\xf7\xb9\x37\x26\xe7\x31\x07\x1c\xd4\x77\x45\x8c\x6f\x20\x22\xdf\xad\x7d\x4f\xc7\xab\x23\x80\x54\x18\x64\xf6\xb5\x87\x74\xf9\xae\x8e\x5f\x07\x7c\x1a\x8d\xa0\x73\xc3\x98\x53\xeb\x2f\xd4\x77\x22\x0b\x45\xa3\xd9\x22\x63\xdc\x7e\x14\xd3\xbb\x2b\x36\xfc\xa4\x66\xc7\xef\x8a\x24\x75\x38\x72\x5f\x2f\xce\x5c\x72\x21\xbc\x75\x1c\xde\x13\x94\x60\x4f\x59\x31\xd7\x33\x36\x0c\xcd\x47\xce\x08\x77\x12\x95\x81\x80\xad\x84\xfa\xe7\x13\xb5\x43\xf0\x5e\xef\x6a\xbc\x06\x61\x43\x31\x21\xed\x3b\x45\x06\xa1\x46\x50\x25\x31\x6f\xb8\xf9\xd6\x45\x35\xcc\x45\x38\xac\xd4\x06\x4d\xd5\x76\xb0\x74\x0e\x1b\xeb\x13\xbc\xea\xf1\x55\x54\x3d\xc8\x90\x97\xca\x5c\xa1\xcf\xfa\x0a\xd6\x5a\x10\xbc\xb7\x59\x35\x4e\xab\x8a\x42\xde\x73\x4a\xf9\x09\xc2\xfe\xba\x38\x0d\x66\x40\x9f\x32\x5d\x5f\x17\xaf\x9c\xa7\xf8\xcb\x41\x34\xfd\x6a\x2b\x6a\x52\x8d\x9e\x60\xd9\x61\x2b\x8e\x8b\x40\x62\xf8\xe0\xfa\xd1\xe7\xee\xb9\xcb\xfe\xf6\xe9\x73\x8e\xc7\x97\x3e\x1c\xb2\xba\x23\x27\xde\xca\x4e\xa4\x65\x68\xf3\x1e\x12\xf7\x30\xe2\x47\xc1\xd0\x70\x29\xfd\x44\x22\xb2\x98\xff\x23\x98\x02\x3b\x41\x20\xa3\xa4\x25\xff\xb6\x52\x88\x0c\x19\xea\x69\xf3\x63\x9e\x0f\x6d\xf4\xf0\x08\x76\xcc\x45\x28\xe2\x67\xe8\x1d\x59\x43\x19\x9d\x0f\xeb\x6c\xb4\xe1\xba\xf4\x04\xbb\x6f\x8b\x39\xb1\x2d\xbc\xe9\xfd\xc3\x5d\xc1\x58\x06\x6e\x99\x75\xae\x5b\xd3\xb5\x5f\x2a\x41\xa7\x91\xba\xf3\xe8\x35\x1e\xc6\x04\x94\x47\x90\xa2\x2c\x93\x3c\x80\xb1\x59\x0b\xa1\x97\xa4\x70\x6f\x7f\x51\x28\x68\x2e\xdc\xd7\x4d\xd7\x8d\x43\x5e\x78\x7c\x2b\x76\xa5\x7b\x3f\x4e\x7d\x7b\xe2\xef\xd2\x6d\xa5\xf9\xa8\x29\x11\x9b\x01\x50\x8b\x70\x72\xc7\x69\x9c\xe5\x2b\xb5\x78\xcc\x5b\x1b\x93\x66\x1b\x51\x72\xfb\x84\xda\xf1\xba\x36\x4d\x2c\xbd\x80\xe2\xc9\x9b\xca\x9c\xae\xa8\x73\xcc\x0a\x16\x29\xea\xc3\x84\xe9\xb2\x06\x84\x2a\x6e\x61\x83\x38\x75\x91\xb4\xaa\x34\xa9\x5f\xd8\x9b\x49\xd8\xd1\x5d\x91\xe2\x19\x40\xe1\x7d\xca\xf1\xef\xf8\xa0\xa4\x7a\x0d\x7a\x95\xda\xea\xd8\x2a\xa3\xdf\x82\x04\xa0\xcd\x20\x69\x24\xae\x51\x0f\xec\x8a\x9c\x4e\x8d\x85\xd4\x66\xfd\xb4\xdd\x36\x5d\xc9\x93\x36\xb2\x2c\xe0\xb9\x56\xb5\xee\x00\x17\xf2\x9d\x25\xee\x66\xfb\xdc\xec\xb0\xd9\x96\xff\xb9\x7c\x8d\xef\xde\x40\xa9\xff\x99\x93\x19\x3c\xa8\xf1\x68\x50\x67\xc1\x9c\x52\x6e\x0e\xfe\xd2\x36\xf8\xed\xb8\xde\xf6\xc2\xa0\x3e\x21\x95\x2c\x86\x12\xd6\x24\xe6\x88\x6a\x31\x1f\xfb\x9e\x2f\x15\xda\x44\xab\xe1\x80\xd2\x6a\x14\xb1\x5f\x63\x56\x1e\x09\x7a\x73\x0e\xca\xbb\x79\x2c\x7c\x23\x5f\xdd\x36\x0f\x57\x1f\x27\xef\x68\x67\x7a\x7d\x63\xbe\xb4\x97\x59\x82\xcb\x19\x9a\x56\x0f\x81\x6e\xe1\x29\x89\x44\x5f\x7f\x75\xb8\x3e\xb2\x78\xd6\x28\x25\x94\x7d\x84\x09\x9a\xf2\xa6\xff\x2e\xad\xbb\xf5\x89\xb5\xeb\x2f\x72\xed\x11\x4c\x73\x15\x11\x53\xae\x00\x22\xbc\x95\x64\xd1\x5c\x2d\x5c\xdb\xba\xab\xbe\xf6\x38\xf0\x30\x95\xf5\x3e\xeb\xac\x96\x83\x40\x9a\xd3\x06\x0c\xfb\x7c\x70\x37\xb9\xb0\xbe\xfe\x06\x9c\x92\xa0\x2b\xe9\x53\x38\x8e\x9e\xa4\x5d\x36\xdd\xf4\xf5\xa8\x38\x94\x32\xcc\xf5\x04\xc5\x08\x08\xb0\x7f\x69"}, +{{0x90,0x3f,0x3b,0x53,0x99,0x89,0x2e,0x29,0xcc,0xfa,0xfb,0xaf,0xbd,0x7c,0xc4,0x53,0x3c,0x15,0x4a,0x62,0x56,0x82,0x40,0x6c,0x89,0xbf,0x89,0x4c,0x88,0x9e,0x43,0xf4,},{0x8f,0xa5,0xff,0x5b,0x6b,0x26,0xbd,0x67,0xdf,0x86,0x40,0x46,0x42,0x9d,0xf1,0x24,0xb5,0x23,0x00,0x5d,0xd8,0x94,0x44,0x27,0x5c,0x8a,0xb7,0xeb,0xdd,0xb6,0xf4,0xdb,},{0x49,0x5a,0x8f,0x99,0x19,0x41,0xc6,0x29,0xbd,0x64,0x1a,0x67,0x47,0x1a,0xb8,0x60,0xbf,0xd3,0x9b,0x72,0xf2,0x33,0x55,0xf7,0x27,0x09,0x09,0xd5,0x30,0x7c,0x77,0xb1,0xb9,0x4b,0xae,0x3e,0xd1,0x94,0x50,0x78,0x0e,0x90,0x85,0x30,0x5f,0x31,0xb1,0xe1,0x68,0x3f,0xac,0xf0,0xd1,0xfc,0x88,0x40,0xae,0xc7,0x7d,0xf6,0x7a,0xea,0xb3,0x02,},"\xa2\xc1\x1b\x5f\xb8\x84\xa8\x22\xfa\xe6\x4d\xa8\xdc\xb4\x45\x2c\xfd\x7a\x04\xca\x6d\x7a\x5a\xbc\x8d\x82\x71\xe9\x3f\x93\x44\x9e\x1f\xeb\x8e\x02\x97\x5f\x49\x6b\x90\x34\x40\x0d\x35\x99\xab\x97\xaa\x39\x97\xda\xd1\xc9\xff\xab\x5b\x9f\x8d\xf4\xaa\xa5\xb8\x40\xd9\x0d\x86\x2f\xff\x7f\xf0\xcf\x73\xa6\x0c\x66\x15\x00\x09\xe0\x1c\x93\x7b\xd1\xaf\x68\x07\xb5\xba\x2e\xf6\x12\xee\x13\xd6\xde\xf4\x0b\xb0\x9c\x46\x81\x1a\x2d\x4e\x46\x8e\x03\x8b\x32\x30\x55\xf9\xdf\xbd\x01\x82\x9a\xe2\xf1\xa5\x35\xef\x02\x95\xca\x1e\xd1\x76\xe4\x6d\xe9\x96\xcc\x87\xba\xce\x45\x35\x62\x33\x21\x18\x35\xb6\xf4\x75\x7c\x99\xbd\x52\x7e\x76\x6a\x5f\x0b\x12\x7c\x8c\xff\x8e\x6d\x66\xf8\xba\xb8\x6d\x00\x00\x45\x2c\xd7\xf6\x7b\xe5\x57\x78\x85\x13\xec\x07\x09\xb5\x37\xb0\x07\xb4\x20\x16\xe7\xa8\x96\x83\x46\x9b\xd8\xff\x8d\x21\xeb\x10\xc1\x49\x17\xd4\x7f\x2d\xc4\xf8\x26\x32\x4f\x7c\x01\xb2\x4f\x8d\xcf\xf0\x4a\xa6\xd8\x50\x95\xd9\xab\x15\x4b\xa5\xc3\xbd\x91\x9c\x9d\x72\x8d\xbd\xc9\x90\xd1\x9c\xeb\x23\x7b\x45\x29\x07\xbd\xbe\x21\xf9\xf0\x8c\xdd\xae\x5b\xe4\x79\x27\x67\x09\xb8\xae\x73\xf8\x97\x4c\x4b\x11\x38\x41\xad\x53\x5d\x6f\xf6\x22\x3e\xea\x47\xd1\x85\xc8\xe8\xa6\x5f\xde\xe2\xc2\xd4\x58\x00\xc1\x7c\xb5\x56\xea\xfd\x67\x66\x47\xd9\x96\x8e\x55\xca\x9c\x59\x23\x2b\x97\x70\xad\x10\xf9\x55\xfc\xb5\x85\x8e\xdf\x0b\x74\x83\xad\xc1\x81\x7c\x0f\x8d\x02\x24\x04\x82\xca\xa7\x6f\x43\xc6\xd2\xe9\x6a\x4f\xf9\x59\x1c\xd7\xb8\x78\xea\x61\x9e\xa5\x6d\x1b\x58\x86\x31\xe7\x63\x3c\x5e\xcb\x2b\xa6\x99\x83\x98\xcb\x06\xe3\xcf\x75\xae\xb3\xe0\x8d\xab\x19\x63\x2d\x45\x4f\xf7\xdc\x0e\x2a\x41\xf0\x97\x37\xe8\xee\x82\x3d\x1b\x9e\x24\xdd\xa8\x4a\x2c\xe0\x31\x3c\xb9\xfc\xe3\x1c\xb6\x63\xc5\x5c\x05\x64\x5e\x63\x40\x17\x56\xe8\xad\x38\xf5\x17\x4c\x02\xa6\x63\xd8\x15\xad\x64\x42\x2f\xf7\x72\x7d\x4f\xda\x16\xe4\x8d\x4b\xf8\xf6\x60\x2e\x72\x60\xda\x62\x33\x0e\x68\x78\xc3\x47\x64\xe1\x29\xaf\xbd\x55\x22\x08\xf6\xbe\xd4\xf7\xce\xe9\xb6\x71\xf4\x88\x38\x88\x15\xd7\x4b\x49\x51\xb8\x68\x2c\xe7\x6c\xfe\x31\xe9\x38\xc4\x70\xb8\xf7\xa4\x5f\xd6\x3a\x96\x91\xf4\x26\xa7\x5c\x58\xed\x3d\xbc\xe3\xae\x8f\xd9\xd1\x0a\x83\x52\xe4\x7c\xc1\xb1\x2c\x91\x92\xac\x86\x26\xd1\xb3\x84\xb7\x7a\x18\xb9\x86\xe7\x1a\x99\x86\x46\xc1\x37\x99\x2b\x67\xc4\x81\x7e\x34\x63\x45\xfa\xf5\x0a\x26\x59\xfd\xc5\xca\xd5\xc7\x19\x64\x8e\xfe\xe3\x84\x7c\x0f\xf6\xbd\x70\x95\xc2\x8b\x4c\x51\x95\x96\x7c\x90\xcf\x84\xe1\xef\x68\xa1\xad\xa0\x1f\x62\x74\xed\xe3\x63\xfb\x82\xe0\xb5\x49\xa8\x70\x24\x5d\x60\x8c\xae\x82\x34\xf6\xd8\x4a\xbe\xb6\x1b\x71\x84\x66\x09\x36\x20\xd8\x5c\x58\x4a\xb0\x1e\xed\xa0\x91\xee\x8a\xff\x1c\xf6\x7a\x46\x75\x67\x9a\x1f\x40\x03\xe6\x6a\xaf\x43\x87\x1b\x88\xec\xda\x6a\x16\xdc\x5a\xcb\x05\x39\x5f\x2d\xa9\xdf\x70\xd3\xbd\xb6\x14\x38\xe1\xc3\xd4\x09\x81\xe0\x34\x62\x7d\x02\x6e\xe1\xd2\xe7\x9f\x65\xcb\xb8\x18\x9f\xcb\xb3\xcc\x8b\x5c\x2e\x7e\x79\x6b\x5d\x28\x89\x41\x1d\x56\x41\xfb\x86\x9c\x7b\x0a\x58\x9c\x43\x25\x4f\x8c\x54\x38\xaa\xf5\xac\x42\x38\x32\xf0\x18\xd7\x9a\x51\xb9\x6f\x24\x2e\x2d\xe0\xc8\x51\xcc\x5f\xc2\xb2\x06\xbc\xa4\xb5\xbe\x83\x61\x25\xac\xa1\x44\xbb\xc3\x8c\x8c\x63\x8b\xe0\xd3\xbb\xe0\x25\xa1\xbe\x8b\x3d\x03\xd5\x92\x9b\xaa\x64\x9c\x35\x44\xa3\x2a\x91\x5e\x92\x6a\x38\x79\x1b\x13\x4a\x97\x1b\xc5\x2d\x1b\x6c\xa6\x25\xef\xb7\xc2\xf3\xbb\x47\xab\x51\xd4\x3c\x8e\x37\x4d\x16\xcd\xa8\x82\x20\x4b\x71\xca\xfe\x90\x93\xcb\x60\x78\xef\x2b\xdf\xad\x59\xed\xea\xf3\x6d\x0c\x1a\x4d\xc4\x25\xb9\xe7\x18\xc4\x51\x85\x22\x5a\x9c\x30\x84\xb7\x82\xbf\xe1\x63\x49\x2f\x8e\x84\x82\xec\x9a\xa0\x73\xf6\x90\x1f\xf3\xd1\x11\x7c\xe9\x17\xe1\x91\x22\xfa\x67\x65\x0d\x85\x8f\x8f\x82\xb3\x76\x69\x72\x3c\x22\x6d\x72\x16\x97\xe7\xae\x33\x59\xf5\xa6\xb0\x24\x24\xee\x87\x94\xcb\xea\xa6\x41\xed\xbb\xf7\x53\xb1\x03\xa5\xfe\x15\x8b\xe0\xba\x60\xd8\xa2\x12\xd4\x2f\x8c\x5c\x2a\xf2\x54\xbf\x1b\x9c\x80\xdf\x6f\x1c\xf0\x9d\x70\x79\x3c\xae\x1a\xbb\x46\x27\xb1\x78\x0f\x1b\xce\x7f\x61\x7e\xe5\x0f\x6b\xd4\xb0\x83\xb2\xfc\x7c\xd8\x44\xaf\xb7\x23\x80\xd5\xcb\x6b\x25\x5b\xf4\x7e\xa7\x1c\xad\x6c\x6c\x4d\xf0\x21\xf8\x1b\x54\x8f\x43\x2c\x18\xac\x36\x6c\x6a\xec\xd0\x3b\x6c\x8c\xe2"}, +{{0xee,0x81,0xe0,0xfb,0x05,0x2e,0x23,0xad,0x75,0x9d,0xe6,0xaa,0x98,0x38,0xde,0x98,0xe3,0x6d,0x48,0x20,0xdc,0x0e,0x1b,0x7b,0x3e,0xf1,0x14,0x1a,0xb9,0xde,0x33,0x40,},{0x98,0xf3,0xc9,0x88,0x07,0x94,0xde,0x64,0xfa,0x26,0x9b,0xdf,0x33,0x60,0x95,0xe0,0xe0,0x1b,0x1a,0x3b,0x37,0x5f,0x96,0x5b,0x93,0x70,0x0b,0xbd,0xf4,0xb9,0x68,0x69,},{0xf0,0xd8,0x73,0xbe,0x15,0xcf,0x45,0x4c,0x74,0x34,0xde,0xab,0x71,0xde,0x25,0xcf,0xe9,0x9e,0x81,0xa4,0x8d,0x2d,0xce,0x6a,0x35,0xd1,0x63,0x37,0x14,0xdf,0x0f,0x8b,0x40,0x29,0xe0,0x58,0x25,0x11,0xef,0xc4,0xd0,0x68,0x92,0xf6,0x72,0x85,0x02,0x46,0xbc,0xf0,0x70,0xc4,0x6f,0xad,0xc2,0xfa,0xab,0x44,0xdc,0x43,0x50,0x45,0xde,0x00,},"\x28\xd9\x9e\x95\x18\xb8\x82\x83\xc2\x20\xe7\x6d\xe2\x05\xd7\xb6\x16\x23\x59\xb1\xdf\xec\x1f\xba\xab\x98\xec\x0e\xf1\xdf\x8d\xa4\x0b\x6b\x7a\x77\x5e\x97\x28\x45\x0a\xeb\x23\x51\xfe\x5c\x16\xaf\xda\x3a\xec\x0d\x71\x04\x9d\xa4\xcb\x7d\x4c\x63\x71\x3a\x24\x10\xab\xb0\x22\xf8\x16\x11\xcc\x06\x45\x87\xc8\x04\x7d\x43\x83\xc0\x0c\x3c\x56\x2e\x9c\xee\xa3\x57\x75\x09\x53\x91\xb5\xf3\xdd\xa0\xe3\x73\xc4\xa7\x7f\xf6\x18\xa2\x8e\xf6\x87\x87\xeb\xfc\x3e\xbc\xcc\xc5\xd1\xce\x32\xdd\xf4\x3b\xfc\xe5\x72\x03\xda\x76\xa8\x66\x4b\x3c\x61\x6a\x88\x69\x28\x2d\xb0\xb7\x28\x11\xb5\xfd\x5a\x2a\x03\xa4\xff\x66\x72\x4b\x04\x89\xea\x2e\x10\x73\xd7\x81\xc3\xf1\x89\x11\x5d\x79\xba\x20\xa4\x6d\x1d\xfa\xf5\xb1\xa5\x84\x7b\x2a\x2e\x31\xb2\x80\x87\x37\x56\x9e\x60\xb5\x72\x31\xe6\xa9\x9a\xf2\x6f\x58\xaf\xeb\x15\x77\x08\x10\x47\x48\x12\xfe\x4a\xfa\xcf\x88\x45\x06\xb8\xc3\x14\xbc\x67\x51\xbb\x42\xb4\xbd\x6e\x87\xd2\xe5\xde\x70\xfe\xc5\xf0\x01\x4c\x42\x57\xb1\x34\x72\xa3\xb0\x11\x1a\x7a\x8c\xf8\x3b\x1d\xc0\xcf\x96\x20\x22\xcd\x44\x46\x8a\x3a\xb1\xf0\x01\x6b\x70\xca\xfb\x1d\x02\x46\xac\xd7\x05\x39\x37\xc9\xac\x40\x20\x7c\xf1\x3b\x50\xdd\x15\xe2\xa2\xe1\x5f\x50\xa0\x5b\xca\x2f\x28\xe7\x70\x26\x23\x71\xda\xce\xe0\x2e\x25\xb2\xa5\x96\x58\xed\x90\xc0\x60\x0f\xa2\x65\xb7\xde\x3d\x44\xf8\xef\x07\x21\xbf\x39\xec\x4d\x4e\xca\x58\x88\x52\x7b\x77\x80\x67\xb1\xd6\x59\xc0\x05\x14\xc8\xd7\x05\x62\x73\xa2\x94\xcb\xaf\xe4\x50\x90\xd0\x69\xbb\xd0\x9f\x92\xf4\x61\xe6\x48\xf3\xe6\x82\x88\x2c\x71\x57\x6e\x97\x4d\xeb\xb0\xcb\x7e\x0e\x83\x16\x40\x66\x60\x15\x0d\xab\xb5\x8e\x76\x24\x66\x14\xa2\x91\xc1\x2c\xe9\xe0\x34\x6c\x02\x77\x4d\x4d\x09\xce\xcc\x23\x69\x67\x12\xfe\xe2\x50\xc0\xbb\x5d\xf7\xa2\xa4\xc4\x3a\x55\x63\x33\x1b\xcb\xbf\x84\xbe\x3f\x2e\xeb\x06\x54\x53\x2e\x85\xec\x59\x7b\x53\xb3\x2f\x39\x54\xcc\xaf\x0c\xd4\x26\xde\xf9\x1e\xc4\xb2\x08\x41\x69\x48\xaf\x27\xde\x04\xd8\x32\x70\x58\x97\xa0\x4c\x5e\x24\xa2\xe8\x8b\x20\x04\x0f\xd4\xec\xa3\x08\x9f\xdb\x91\x8a\x92\xe3\x5c\x4d\x31\xda\x26\x85\x0b\x9d\xd3\x41\x18\xc7\x44\x49\xa8\x55\xff\x4b\xc9\xff\xf0\xd1\x44\x78\x39\x65\x4b\x00\x41\x79\x99\xfa\x4e\xb8\x91\x02\x13\x3c\xd3\x20\x40\x91\x53\x58\x49\x57\xc1\x04\x89\xdb\x4b\x72\x44\xc9\x59\x07\x98\x8e\x83\xdc\x82\x12\x71\xdc\x1a\xb6\x43\xd6\x99\x2d\x0f\xd8\x20\x49\x2a\xe6\x42\xe2\x4d\x19\xa1\x79\xfa\x75\xd9\x36\x3b\x32\x16\x62\x60\x6f\xd9\x4a\x47\xfd\xb2\xe6\x8d\x3f\x30\xc0\x46\x73\xf8\x09\xde\x01\x44\x94\x5e\xa4\xd4\x18\x3d\x48\xf1\x75\x07\x9e\xed\x50\x32\x3c\x6b\x19\x2e\x02\x0e\x16\x2a\x35\x03\xaa\x58\x2f\xb0\x8b\x40\x36\x24\xa2\x3e\x35\x7e\xed\xa0\x8d\x90\x43\x86\xf3\x58\xc3\x6c\x64\xd3\x14\xc7\x7c\xd9\xd4\xd2\x3d\x58\x1e\xe5\x3d\x81\xff\x97\xad\xa0\x19\xcf\xcf\x04\xeb\x9d\xcc\x1d\xe9\xb7\x4c\x3d\xb6\xb8\x11\x57\x8b\xd4\xf2\x19\xc5\xca\x48\xef\x4c\x82\x6b\x09\xe6\xc9\x6d\x03\x1f\x65\xdd\x48\xb6\xe7\x3d\x0c\x10\x05\x86\xb2\x1d\xf0\x29\x3a\x03\xd2\xed\x7e\x50\x09\xad\x02\x53\x40\xc2\x1d\x09\x06\x06\x91\xf5\xcd\x8a\xf2\xab\x12\xf9\xb8\x60\xee\x87\x81\x5e\x1a\x9f\x40\x0c\x2a\x6f\x63\x4e\xa8\xf9\xb3\x42\x5a\x08\xd1\x0b\x3c\x81\x53\x67\x38\x8f\x4d\x1b\xe3\x56\x31\x8e\xcf\x90\x35\xd0\xee\x97\x5a\xff\xa8\x59\xca\xac\x28\xeb\xcc\xd0\x59\x9b\xb2\xf6\xf3\x52\x36\x61\xbd\x17\x8f\xc9\xe4\xca\xc3\x78\xbb\x9d\xd4\x71\x6b\xb0\x69\x23\xfd\x2b\xbd\x56\xc9\x59\xc4\x2b\x95\xd5\x01\x93\xf8\xbf\x29\x9f\xcc\xa3\xb2\xee\xa9\x4e\xc5\xf9\x85\x83\x92\x4c\x08\x04\x16\xe2\x8b\x54\xfe\x57\x65\x84\x58\xb0\x55\xce\x4d\xe8\xa7\x5f\xc8\x27\x15\xca\xe9\x1d\x37\x5c\xf6\x92\x81\x37\x80\x51\xbb\x61\xfd\xd7\xbb\x00\x68\xf6\x3e\xfa\x6d\x6e\x83\xd8\xfd\x42\x57\xaf\x80\x97\x0f\x4a\x9e\x69\x24\xb2\xde\x0a\xd9\x66\xdf\xfe\x6f\xa4\xa1\x13\xb0\xe7\x72\xf1\x76\x87\x85\xb3\xb4\x20\x49\xf7\x6c\x48\xad\x80\xf2\xc6\x7f\xb0\xf9\x1a\x5f\xc4\x10\x79\x12\x52\x0d\x8d\x68\x3c\x06\x2c\x3a\x22\x2b\xcd\xa7\xe7\x10\xba\xcd\x47\x8e\xe8\x83\x67\xb6\xa0\x59\xa4\x52\xfd\x26\xf1\x14\xa5\xac\xbd\x69\x79\xba\x01\x9f\x7d\xa6\x8a\xc0\x4a\x19\x30\x26\xbc\x1c\x27\xe4\x83\x7b\x1d\xe2\x9c\xce\x09\x0e\x33\x80\xd5\x05\x1a\x58\x64\x09\xe6\x28\xe3\x14\x56\x65\xbb\x1d\x84\xec\xd8"}, +{{0x69,0xd0,0x1d,0x82,0x91,0x13,0x08,0x1c,0xbf,0x5d,0x0c,0x6e,0xf7,0x7b,0x21,0x77,0x5c,0x8d,0x9b,0x68,0x00,0x00,0x05,0x6f,0x03,0xc7,0x5a,0x7d,0x0a,0x05,0x87,0xd2,},{0xee,0x84,0x69,0xdd,0x61,0xcf,0x5d,0xe4,0x00,0xda,0x7d,0x7a,0x47,0x9a,0x44,0x18,0xe6,0x77,0x2e,0x69,0xff,0x53,0x30,0xce,0x5c,0xa7,0x78,0x59,0xfe,0x27,0x17,0x55,},{0x40,0x8c,0xef,0xcf,0x01,0x41,0x7e,0x2d,0xc6,0xa8,0xa1,0x82,0x84,0xe4,0x11,0x65,0x7f,0x03,0x92,0x50,0xc3,0x12,0x78,0xdb,0x28,0x19,0xf9,0xea,0xea,0x42,0x93,0xfb,0xf6,0x83,0x1a,0x28,0x01,0xfc,0x1e,0xa6,0x87,0x16,0x57,0xb8,0x41,0xe1,0x73,0xf4,0x51,0xb0,0xd5,0x75,0xa9,0x37,0x9e,0x35,0x85,0x7e,0x8c,0x72,0x97,0xfa,0x14,0x04,},"\x0b\x9e\x11\x0f\x29\xd1\x98\x16\xa1\x7b\x2c\x75\x47\x8f\x13\xce\xe9\x53\x81\x1a\x19\x83\x01\x4c\xb7\xeb\x0f\x75\x52\x69\x12\x04\x4c\x3e\xa6\x82\x97\x80\xe6\x57\xf8\x17\xc5\x59\x7d\x46\x61\x08\x0d\x90\x34\xc9\x77\x87\x22\x41\x8f\x2c\x3a\xee\xca\xef\x6b\x69\x0c\x5b\xd3\xb5\x93\x70\x10\x86\x98\x8e\x43\x40\xae\xc3\x4e\x01\x72\x75\x8e\xb2\x40\x87\xd0\x3a\x8f\x76\xe7\xcb\xca\x53\xaa\xaf\xc4\xd2\x15\x5c\x75\x32\xab\x54\xbe\x48\x87\x26\x53\x06\x6f\xa1\xfd\xd5\x4a\xcf\xe9\xda\xae\xca\x35\x6c\x29\x0e\x6b\xe6\x33\x55\xb6\xd9\xfc\x52\xeb\x5e\x4f\xcc\xbb\xc6\x08\x35\x07\x13\x2d\xe4\x85\xbf\xae\x9f\x42\xe1\x97\x12\x23\x2b\x71\x64\x02\xc2\x3f\xea\x74\xef\xa6\x9d\x73\xc8\xc2\xe3\xa8\x66\x2b\x8b\x65\xb0\xfd\x00\x77\x41\x01\x3e\x1f\x6e\x3c\xfe\x43\x45\xd5\xc8\x30\x68\x2f\xe6\x00\x21\xd7\x08\xe1\x0a\x9e\x9f\x40\x52\xff\x7a\x6a\xbf\x28\xac\xb1\xd6\xb5\xfb\x03\x8e\xed\x3f\x72\x51\x3c\x35\x5b\xbf\xd5\xc2\x27\x4f\xa8\x5f\xc4\xf4\x46\x97\x4b\x2d\x1b\xc0\x36\x50\x7a\x1e\xb5\xfc\xf5\x5d\xbd\x44\x21\x0e\x53\x82\x74\xde\x80\x8b\x90\x0b\xf1\xc0\xfc\xc0\x24\x12\x70\xdb\x8d\xbd\xcd\x88\x34\x9d\x67\x22\x4f\x08\x7e\x5f\x07\xf6\x99\xb0\xba\xe6\x8b\x2e\xbc\x9a\x4e\x27\xc7\x0d\x3a\xc7\xd9\x96\xfa\x7d\x4d\xab\xd5\x68\x37\x8e\x3f\x93\x90\x5b\x1c\x89\xc6\x52\xd3\x84\xc1\x6c\x2b\xcb\x1c\x98\x44\xc3\x8f\x71\xbb\x13\xe0\xc6\xa2\xea\x95\xb6\x12\xe3\x90\xc5\xf8\x6d\x24\x8e\xa5\x31\xf2\xec\x6f\x63\x9a\x40\x2d\xfa\xcc\xf3\x72\x17\x00\x53\x44\x03\x07\x45\xd1\xf1\xe5\x20\xcc\x19\x5d\xaf\xdd\x7f\x29\x5f\x37\x7b\x8d\x61\x47\x16\x70\x38\x36\x21\x9b\xb7\xb0\x9f\xea\x7a\xae\x9a\xc3\x3e\x42\xdc\xab\x65\xcc\x61\x42\xfc\xd8\xce\x15\xe9\x77\x17\xfd\xb3\x3e\x95\x38\xc4\x4f\x6c\xd9\xc1\xc6\x5d\xb6\x27\x51\xf5\x52\xf8\x70\xf1\x01\x42\xc9\x6f\x9d\xf1\x85\x5a\xbb\x39\xe4\x27\x06\xa5\x63\xab\x15\x45\x11\xfd\xce\x68\x7c\x95\x76\xf9\xed\xc3\xb4\xba\x55\x34\x6c\xe6\x68\x02\xff\xfe\xf4\xb1\xb5\xe1\x20\x15\xce\x8b\x57\xde\x54\x58\xca\xa0\xda\xf3\x41\x96\x81\x28\x58\x42\x88\xc2\xf2\x7c\xbf\xb7\x6e\xab\x28\x6b\xac\x5f\x66\xaa\xd0\x04\x9e\x0c\xa6\x0a\x90\x14\xe1\x79\x01\xc4\x13\x0e\x83\xce\xae\xb4\xc2\x71\x3e\x97\x1a\x23\x5e\xff\x99\x5a\x81\x3a\xe4\xea\x64\xa5\x83\xff\xde\xfd\xac\x82\xac\x76\xea\xf4\xd4\x7c\x4a\xc8\x25\x0f\xcb\xaf\xd6\xb8\x8f\xae\xb4\x80\x15\xf5\xb4\x2b\x53\x34\xa5\x0b\x31\xd4\x50\x2e\xa4\x91\xda\x90\xdc\xe9\x3c\x08\xfd\x56\xf5\xc5\x8e\xed\xb3\x79\x16\x6a\x23\x76\x2b\xe5\xe4\xad\xea\xa6\xf4\xae\x1c\x24\xe0\xca\xc4\xdd\xca\x03\x83\x45\x85\x60\xcd\xc4\x8b\x8c\xd1\xf4\x2a\x3b\xa2\xf6\xff\xb6\x07\x79\x09\xfc\xb2\x94\xad\x1e\xf4\xa4\x4c\x22\xec\x4b\x39\x87\xdd\xbe\xef\x32\x5b\x98\xce\xd5\x68\x15\xea\x7d\x5f\xcc\xf5\xaf\xdf\xe9\x8e\x0e\x6d\x92\x0f\x7a\xda\x2e\xb5\xc9\x16\x24\xc7\x6c\xbb\xa2\x99\x3a\x9c\x7a\x55\x02\x1d\x12\x7a\x66\x7b\x39\xe2\x35\xdf\x4f\x81\xde\xe7\xdd\x14\x28\x98\x77\x8d\xbd\x92\x13\x5b\x70\xb3\xac\xf5\x9f\x6c\x29\xa2\xc9\xd4\xa7\x00\x6e\xf1\x1a\x91\x8b\x3a\x29\x06\x26\x4a\x15\xd6\xb5\x29\x30\x8c\xbc\x89\xf8\x56\x01\xfc\x1e\xa1\x31\x4d\x67\xf7\x56\x6c\xf1\x09\x16\x5c\x7f\x92\xde\x1a\x18\xd7\x0d\xeb\xe0\x24\x34\x9d\xb3\x56\x0a\x6e\x52\x7e\x2a\xc3\xe0\x67\x89\x46\x87\x04\xe6\xb8\xf1\x87\x1f\x16\xba\xe9\x82\x73\x92\xb4\x18\xf1\x08\x6c\xc4\x97\x08\x6c\xed\x14\xb1\x24\x9d\x6d\x87\x94\xf2\x3b\xb8\x77\x9d\x41\x86\x48\xf2\x15\x56\x56\xa6\xfd\xa7\x44\x0c\x56\x28\x4d\x9b\x21\x88\xfa\x7d\x17\x36\xbc\xcc\x9c\xff\x0b\xe5\xb1\xe1\xf5\x51\xff\x81\x37\xff\x59\x66\xed\x9d\x0f\x7f\x01\xc3\xdf\xf2\x98\xe9\x10\x2f\xfb\xd3\x24\xbf\xca\x5f\xfe\x09\x68\xe6\x6f\x9d\x82\xf4\x87\xd3\x03\x93\x4f\x27\xf7\x8b\x28\x37\x8e\xb7\x2c\x38\x27\x29\x62\xa5\xf7\x35\xd7\x39\x2e\x5d\x33\x3f\xd8\x6d\xe1\x67\x26\x9c\x17\xa1\x65\xb9\x2d\x31\xa4\x88\x0a\x41\xe1\x36\xf7\x18\x96\x0a\x91\x9b\x3d\x7c\x4e\x74\xcb\xd7\x3c\x73\xf9\x21\xbe\x51\x3f\x73\x9a\xff\xb2\xe4\x1f\x80\x42\x6b\xb8\xcf\xb4\x56\x4b\x98\xfc\x4d\xe5\x32\x55\xce\x3f\x98\xb4\xd2\x2a\xe6\xfc\xe9\x19\x0b\x55\xbf\x2c\x93\x86\x1c\x1d\xca\xc1\x01\xb5\xe1\x6c\xf0\x99\x91\xc5\xde\xfa\x33\xf8\xd5\x10\x56\xd9\x34\xbb\x4b\x47\x7b\x65\x20\xd4\xc7\xae\x22\xea\x7f\xb3\x10\x9d\xe7\xf4"}, +{{0x4b,0x8e,0xd2,0x97,0x31,0xf1,0x04,0x79,0x5e,0x97,0xde,0xe7,0xc8,0xb4,0x01,0xa0,0x2a,0xfa,0xa9,0xa7,0x95,0xe6,0x13,0x35,0x3d,0x2b,0x95,0x00,0x17,0x65,0x02,0x7a,},{0xf2,0x22,0x98,0x21,0x0b,0x09,0xfd,0x61,0x7f,0xc8,0xb3,0x50,0x74,0xca,0x18,0x01,0xe6,0x07,0x5d,0xc9,0x2a,0x8f,0x50,0x34,0x4b,0x80,0xe8,0x54,0x05,0xa0,0x38,0xf5,},{0x23,0x45,0x88,0x66,0x86,0xeb,0x39,0xb5,0x19,0x9c,0xaa,0xa9,0x61,0x5b,0xc6,0xb4,0x89,0x6f,0x07,0x6e,0x8b,0xd7,0x36,0xc0,0x03,0x8a,0x65,0x17,0xf9,0xc2,0xb1,0x67,0xe7,0x59,0xf3,0x73,0x72,0x26,0x8a,0x69,0x7e,0x9b,0x78,0x60,0x5f,0x2e,0xd9,0x47,0x25,0xf6,0x90,0x5a,0x79,0x00,0x15,0x3f,0xc9,0xe8,0xbe,0xed,0x31,0xff,0xae,0x05,},"\xcb\xb5\xf1\x3a\x0e\xf2\x83\x7b\x80\x5d\x3b\x78\x51\x09\xf9\xf2\xe0\xd0\xa0\x17\xbf\xe7\x69\x2d\x91\xec\x23\xdd\xab\x78\x17\x33\x0b\xef\x24\x7f\xd9\x1a\xb2\xc7\x7d\xd4\x41\x25\x19\xcb\xd3\x84\x75\xce\x0c\xb3\x9b\x14\x80\x09\x2b\xc7\x38\xd4\x15\x2b\x8a\x6d\x55\x24\x8e\x3b\x9f\x32\xcd\xcd\x15\xec\x5d\x05\x9e\xc3\xc8\x84\x75\x54\xee\x47\x00\x53\x94\x97\x4d\x8e\xb2\x35\x92\xd1\x7f\x5a\x39\x6e\x3c\x19\xf8\xe8\x98\x37\x06\x79\xfe\xf5\x31\x8c\x4d\xd2\x99\xc6\x21\x7d\x6a\xbc\xc9\xb6\x1a\x5b\x2d\x0c\xfe\xf6\x95\xd1\x70\xca\x20\xa8\x3d\x6f\xd3\xc6\x66\xc8\xfd\x1c\x10\xad\x97\x0e\x2f\xa6\xaf\x10\xff\x0e\xd0\xcb\xfe\x75\x22\x46\xd0\x3f\x3a\x3c\x60\x32\xdb\xb3\x19\xbc\xfd\xac\x4d\xaf\xc5\x0b\xc3\xe6\xbf\x59\x5f\x49\x1d\xec\x38\x8b\x34\x41\xb8\xce\xe0\xdf\x91\xf5\x5c\xc7\x80\x7d\x07\xf8\xf5\x41\xed\x73\x22\xff\xc3\x9d\x18\xf8\x95\x60\xe4\x12\x3a\xec\x1d\x77\x96\x9c\xf1\x87\x77\x86\xf4\xcf\x94\xb1\x77\x0b\x10\x90\x65\x5e\x8c\x72\xee\xce\xa4\x57\x2e\x46\xf5\x80\xf9\x63\x96\x6d\xb2\xa1\x08\x5e\xea\xbc\x57\xbf\x4a\x84\x72\x4b\x9c\x85\x99\xa4\x33\xab\xf5\x8b\xca\x80\x40\x91\xd3\xd5\xe6\xe5\x04\x8e\xc2\x7b\xf8\x12\x9b\x67\x0c\xc2\xc8\x8d\x9c\xac\x47\x18\x59\xf4\x69\xb9\x18\xf3\xf6\xd7\x0f\x7d\x66\x63\x50\x1f\xfb\xef\xef\x02\x6d\x79\xea\x70\x92\x7c\xcf\x60\x75\xee\x51\x05\x42\x33\x21\xe1\x1a\xee\x9a\xd1\x6f\x98\x7e\xfb\xdd\x00\xb6\x2a\xff\x69\x8e\x52\x1a\xdf\x92\x03\xb1\x5e\x9f\x0f\x3a\xd0\x7d\xca\xd9\xdd\xcc\xaa\xe9\xb4\x90\x24\x7f\x12\xc3\x11\xde\xe6\xb7\x3b\x8f\x91\x24\xfd\xce\x12\x99\xb4\x7f\xb1\x91\x4c\xee\x7e\x3a\x07\x81\x4e\x31\x2c\x3c\xe5\x69\x27\x67\x2c\x51\xb3\x18\x59\x80\xcd\xe5\x7f\x3a\x75\x9b\x50\xbc\xfc\x4c\xb0\x75\x3b\x95\x4d\x97\x13\x5d\xeb\x2a\x05\x32\xe9\x8b\x66\xf3\x9a\x7c\x08\xcf\x4d\x54\x85\x39\xe2\xeb\x9f\x42\x2f\x66\x49\x65\x88\x93\xa7\xc3\xc2\x5a\x4f\xc9\x01\xf8\xc3\x98\xb8\xc7\x27\x33\x91\x1a\x00\x72\xed\x6b\xd2\xf4\x18\x93\x89\xae\x10\xa8\x14\xf6\x48\xd7\x1f\x69\xc3\x7e\x82\x95\x78\x44\x28\x18\x3b\x93\xc8\x01\x3b\x96\x4a\x9f\xef\x86\xb4\x8f\x48\x93\x16\xbc\x22\x2e\x96\xb3\xbd\x15\xff\x14\x9b\x96\x82\x03\x29\x55\x1c\x15\xe0\xd0\x95\xd1\x56\x9b\x1e\x21\x31\xc7\x87\x51\x56\x5c\x30\x41\xf2\x97\x85\x39\x5b\x97\x15\x13\x17\xf6\x2e\x35\x82\xe4\x07\xb1\x64\x9e\x60\xd0\x3a\x85\x99\x12\x0a\x30\x2a\x46\x95\xfa\x86\x2b\x41\x20\xf9\x4d\x22\xec\xae\x72\x39\x8d\x20\x94\xd1\x08\xad\x2d\xbc\x1b\x95\x97\x35\x90\x21\x42\xaa\x5f\xe6\xe7\x99\x65\x59\xf6\xf6\x01\x44\x8a\xea\x02\xf3\x56\xf8\xdc\xdd\x14\x43\x40\xeb\x36\x19\xf9\x86\x5b\xf7\x67\x2a\xea\x32\x6c\x4e\x93\xc9\x9f\x0e\xd1\xf9\xed\x86\x6b\xe1\x5d\x3a\xf2\x67\x5f\x6d\xd6\xe2\x96\x60\x2c\xa3\x73\xa8\x15\xb0\xbe\x46\xbc\x2a\x3f\xbb\xa0\x6b\x88\x05\xc7\x31\xfe\x08\x00\x7d\xaa\x06\x05\x09\x61\xb2\x4d\x14\x69\x3a\x72\x89\x8c\xcf\xb8\xb8\xfe\xdc\x60\xa4\xee\xf8\xff\x79\xb6\xdd\x75\x92\x59\x18\x33\xb5\x76\xef\x48\x29\x4e\x5e\x04\x85\x94\x2e\x57\xc1\x19\x60\x2e\xdd\xf8\x8b\x1f\xae\xa5\x17\xf2\xfc\x2e\x3d\x14\xd2\x46\xa5\x2c\xbd\x71\xa1\x08\xc6\x6b\x6c\xc4\xf2\xd4\x58\x04\xa2\x82\xec\xed\xb1\xb0\xad\x3d\xc3\xb4\x88\x0a\xb2\xff\x78\xb8\xdd\xde\x48\xf7\x46\x6c\x14\xfe\xd3\x49\xe9\x5b\x50\x53\xab\xf1\xbf\x09\x91\x12\x60\x31\xd9\x75\x47\xd1\x43\xc2\xae\x16\x49\x28\xb6\x1c\x07\x08\xaf\x8c\xa3\xe4\xf5\x51\x54\xd1\x3d\x75\xe9\x7d\xb4\xba\x3e\x69\xd3\x6e\x9b\x37\x08\x23\x68\xc2\xf7\x21\xbd\x3f\x95\x12\x6a\x1e\x00\x4e\xb2\xa1\xbf\x26\x83\x43\xae\x21\xd2\x99\x50\x44\xa2\xca\xdd\x67\xff\xac\x9e\x15\x38\x17\x5b\x3c\xc4\x4d\xb5\xd2\x6f\x1d\x5c\xc8\x9c\xa0\xe1\xc1\xee\x85\x37\xa8\xa9\x1d\x32\x4c\x2e\x02\xe1\x8b\x9f\xb9\x73\x0d\x6d\xda\x55\xf7\x2d\x84\x33\x89\x69\x3e\xbf\xcb\xa7\xfb\xe1\xa0\xbc\xff\xb9\xaa\x28\x4f\x4a\xe6\x6f\x44\xa8\xb8\x93\x02\x98\x3b\x22\x73\x6d\x0c\x72\xd6\xa0\x44\xe4\x29\x16\x24\x24\x3a\x4e\x0c\xe6\x5d\x5e\x53\x46\xd6\x7f\xed\x37\x60\xdd\xb0\xc5\x10\xb5\x0f\xf3\xee\xf0\xa1\x8a\x26\x7d\xe7\x30\x47\x6d\xd8\x2d\xff\x70\x72\xcb\xa0\x98\x48\x25\xa0\x04\xdd\x4b\xcd\x8c\x37\xfd\xaf\x1f\x68\x3d\x1d\x93\x80\xe1\x35\xa9\x5d\x24\xb8\x9f\xad\x0b\xe9\x41\xc5\x48\x25\x1b\xec\x90\xcc\xae\x01\x5b\xc0\x56\x7d\xa8\x4b\x37\x1e\x50"}, +{{0x08,0x0d,0x7f,0x76,0x18,0x2e,0xe6,0xbc,0xea,0x89,0x4b,0x1e,0x00,0x60,0x55,0x8b,0x3b,0x12,0x5a,0x34,0x99,0xdf,0x39,0x73,0xb8,0xdd,0x66,0x93,0x40,0x8e,0xe4,0x69,},{0x41,0x24,0x71,0x3d,0x7c,0x2d,0xf5,0x0f,0x93,0x05,0x57,0x30,0xd1,0xb2,0x81,0xda,0xec,0x30,0x28,0xcf,0x2c,0x1e,0x48,0x58,0xd1,0x28,0x70,0x7a,0x23,0xd6,0xde,0xb0,},{0x18,0x5f,0xb1,0xb6,0xd8,0x6d,0xc4,0x44,0x48,0x10,0xcf,0x5e,0xc6,0xfe,0xf0,0xab,0xda,0xfa,0x2a,0x6f,0xcc,0xb4,0x5d,0x11,0xcf,0xb5,0x4b,0xa1,0x6a,0x68,0x43,0xf2,0x80,0xd3,0x80,0x47,0x10,0x02,0xae,0x0d,0x71,0x50,0x85,0x56,0xc7,0x8e,0xd5,0x41,0x5e,0x42,0x33,0x8c,0x16,0x1f,0x2b,0x62,0x1e,0x74,0xcb,0xa4,0xf6,0xa1,0xd4,0x02,},"\xab\x0a\x6d\xe2\x35\x1b\x9a\x84\x98\xf6\x82\x72\xd9\xa0\xa7\xa0\x57\x36\x5d\x34\xef\xa0\xfd\x34\xcc\x3b\xf8\x62\xe4\x9c\xdc\x30\x2b\x2b\xd5\xa3\x0d\x60\x1a\x13\x0e\xc4\x03\x2f\x54\x1a\xe6\xcb\x7b\xa9\x7f\x84\x18\x3d\x2d\x25\x81\x28\x7c\xa7\x01\xd7\xd7\xa9\xab\xa1\x10\xce\x58\xb9\x46\xac\x08\x24\x30\x5d\xf7\x92\x9f\x3d\xd7\xfc\x9c\x87\x32\x23\x86\x37\xe2\xb1\x81\xd6\xe1\x16\xc7\xf6\x6e\x32\x26\xaa\xe3\xce\xd1\x61\x02\x62\xda\x1a\x0a\x4a\xa5\x0a\x1b\x94\x43\xec\x82\x83\x29\xe4\x73\x4d\x28\xfc\x25\xab\x9c\x1d\xe9\xb8\x98\x7e\x5d\xc0\xc8\x13\x19\x16\xc5\xf1\x89\x28\x70\x4a\x71\xe8\x06\x22\xb1\x49\x2b\xf2\xfe\xc5\xd4\xb6\xdb\xe4\x15\xc8\xaf\x2c\xe3\xef\x10\x9b\x34\xdd\x5e\x64\xd5\x68\x46\xf0\x85\x93\x5a\x4a\x5d\x10\x73\x49\x7f\xb3\xfb\x8f\xb7\x7e\x8f\x5d\x5e\x3f\xd0\x0c\x30\x65\x2e\x3c\x5c\xde\x40\xa3\x35\xd1\x4e\x54\x25\xff\xba\x94\x28\x85\xed\x17\xbd\x36\xdf\x50\x69\x24\x23\x7e\x75\xbe\x84\xda\x82\x19\x50\xb9\x14\x24\xfd\x9f\x16\xc1\xb2\xc7\x83\xe9\x0f\x8c\xc2\xcc\xc7\x98\x0c\xe9\x15\xc7\x69\x6b\x06\xa5\x86\x73\x02\x59\xe6\xd1\x45\x88\x58\x2b\xab\x9d\x2a\x39\xf6\x9e\x98\xe7\xf2\xae\x9b\xc0\xc2\x61\x0d\x7e\x04\x57\xf2\x6a\x5d\x66\x54\x3b\xe1\xd6\x5b\x79\xc4\xb7\xc0\xd8\xee\x73\xd0\xc2\xb6\x7b\xf5\x0d\x80\x82\xf0\x06\xf9\x6d\x11\x95\x05\x87\x31\x93\xdf\xdb\xd4\x32\xbb\x1c\x9e\xe0\xd0\x3e\xe5\x4c\xf9\x5d\x20\xe9\x1f\x7f\x3a\x06\x9b\x62\x56\xf4\x21\x59\xcd\xc1\xe6\x00\xa9\xa1\xc2\xf5\xa8\xe4\x67\xd5\xc2\xa9\xdf\xf8\x73\x0e\x6b\xe8\x26\xfb\x2a\x1e\x64\x48\xbf\xc4\xfc\xaa\xaa\xcd\xaa\x76\x62\x35\x1f\xaa\xdc\x91\xf7\xca\xa7\x73\x7d\xc8\x2e\xc3\xd4\xb2\x19\x36\xbc\xa1\xbd\x7c\xe3\x73\xad\x66\x26\x4a\xf1\x32\x41\x16\x75\x49\x31\x8c\xdd\x78\xe5\x63\x82\x7f\x85\xea\xb2\x0e\x0b\x42\xbc\x55\x4a\x71\x2c\x00\x51\xa5\x01\x0d\xc2\xf2\xc7\xdb\x85\xac\xf6\x54\x9f\x9d\x10\x2c\x90\x3c\x1b\xe5\xa0\x52\x92\xc3\x0f\x21\xab\x1b\x2b\x8a\xbc\xbb\xf1\x04\x72\x3c\x63\xf0\xeb\xc5\x54\xfb\xee\x42\x02\x0c\xcb\x14\xf4\x43\x47\x8d\xf7\x7c\x6a\xa4\x4d\xb9\xa5\x7f\x8f\xd4\x4d\x97\xea\x09\x9e\x47\x74\x82\x3e\xbe\x12\x3f\xcf\x50\x16\xa6\x6e\x83\x7b\x2f\x65\xc1\x84\x5e\x68\x1e\xe2\xa7\x05\x9f\xb1\x29\x0c\xd0\xa9\x33\x12\x98\x55\xcc\x83\xc8\x7e\x0b\x3b\xb6\x1e\x44\x13\x4a\xdd\xd3\x63\x78\x50\x24\x6c\xdc\xda\xa2\x9f\x15\xc4\x1a\x3d\x4d\xd2\xc1\xd7\x60\x06\x21\x24\x33\x31\x24\xcf\x09\x14\x35\xfd\xce\x71\x1f\x52\x31\x63\x68\x99\x9b\xef\xa4\xc8\x0a\x39\xb3\x75\x0e\x4e\x38\x62\x89\xe4\xe2\x85\x5e\x97\xb6\x19\xb0\xa2\x57\x99\x91\x24\x08\xb7\xd5\x8a\x4d\xd9\x81\x95\x71\xe9\x01\x43\x0f\x6d\x55\x55\x29\xdd\x63\x0a\x18\x67\x45\x9b\x80\x22\xd0\xe0\xad\xd6\xab\x4f\x12\xf6\x0b\xaa\xc7\x59\x79\xbb\xff\x7f\x62\x58\xd2\x8d\x67\x60\xb1\xff\x24\x3c\x39\xe4\xbb\xd6\xcf\x9b\xea\x57\x2a\x9c\x08\x2d\x05\xad\xcf\xd4\xcc\xf9\xfa\x02\x6f\x2c\x90\x4b\x6e\x78\x2e\xd7\x09\xdf\x77\x48\xa3\x07\xcd\x2d\xc3\xa0\xfc\x41\x23\xdf\x58\x0c\xbf\x49\xe0\x5c\xee\xab\xc9\xf3\x9e\x57\xb7\xf3\x00\x90\x5d\x8b\x31\x00\x91\xfb\x95\x3f\x3d\xef\x36\xde\xb3\xe8\xbf\x37\x2f\x59\x16\xb5\x15\x97\xdf\x02\x4c\xe8\x5c\xc4\xc3\x6e\xab\xdc\x58\x0b\x5c\xf1\x52\x99\x46\x48\xf1\xd7\xf3\x5f\xed\x5c\xd1\x0f\x6e\x29\x49\x16\x1a\x33\x59\xb3\x03\x4d\x45\x0e\xa6\xf6\x1c\xdf\x1d\x5a\xf7\x6d\x40\x10\x2b\x60\x29\x4f\x4e\x49\x07\x82\x49\x02\x6d\x62\xfe\x35\xfd\xf2\x24\x92\x8b\x0c\x49\xba\x2b\x53\x39\xeb\xb1\x92\xc5\xab\x7f\x05\xcd\xb9\x46\xe3\x7d\x67\x1a\x4a\x5e\xf2\xa5\x82\x72\x20\xb4\x43\x8c\xbd\xa0\x57\x36\x29\x28\x06\x64\x8f\x5b\xdd\x52\x42\x0f\xa7\x6b\x84\xa6\xad\xdb\x12\x63\xeb\x0c\x50\x0e\x81\x56\x6d\x71\x8d\x50\x66\x02\x6d\xa0\x97\x05\x4a\x86\x63\x10\x16\xdd\xfb\x70\x6a\x56\x77\xd5\x02\xef\x84\xaa\x73\xb5\x86\x3b\xc4\x0f\xdc\x42\xcb\x73\x21\xac\x5f\x00\xe2\x92\x8f\xed\x7b\x04\x18\x59\x6d\xb4\xb6\x15\x1d\xd6\xbc\x6e\x81\x8f\x02\x53\x55\x2b\xf1\x37\x41\xe6\x96\x80\xe9\x66\xc9\x2c\x29\x3e\x13\xc9\x0f\x7c\x99\x99\xbd\x1e\xc6\xaf\xe3\xb4\xaf\xfb\x47\x34\x0c\x89\x85\x98\x29\xfe\xb5\x99\xdb\x3a\x8c\x3d\x33\xfc\x8d\x45\xfa\x53\x81\x07\x8a\xe9\xf7\x5d\x85\xc1\x49\x6f\x5f\xb5\xad\xdf\x4e\x40\x09\xb7\x64\xbc\xc9\x11\x8e\x92\x75\xdc\x72\x19\xf2\x81\xd0\xd1\xef\x71\x58"}, +{{0x49,0x84,0x6a,0xda,0x7a,0xe6,0x84,0x97,0x1d,0xd9,0x17,0x10,0x79,0x90,0x90,0xb3,0x7f,0xe5,0xad,0x56,0x1d,0x72,0xa3,0x5f,0x2e,0xfb,0x40,0x5f,0x19,0x6a,0xb0,0xec,},{0x4d,0x37,0x0a,0x81,0x94,0xa3,0x04,0x5b,0x09,0xb3,0xbd,0xaf,0xa2,0x7f,0xb9,0xac,0xd5,0x99,0x43,0xa5,0x4a,0xe1,0x4c,0xba,0xaa,0x22,0x00,0xeb,0x0f,0x3d,0xa7,0x1b,},{0xa5,0xc8,0x09,0xd1,0xca,0x4c,0xfb,0xb3,0xdc,0x70,0xa2,0xa3,0xa1,0xf2,0x67,0xc2,0x73,0x30,0x42,0x07,0x19,0xe3,0x60,0x62,0x18,0xa1,0x47,0x1c,0xac,0x57,0xcb,0x67,0x4b,0x9b,0x42,0x82,0x7c,0x5e,0x9a,0x7b,0x25,0xc8,0x13,0x9c,0x13,0xdf,0xf6,0x0b,0xde,0x6c,0x2d,0xba,0xd3,0xa8,0x36,0x11,0x97,0xc1,0xfb,0x19,0xd2,0xcd,0x52,0x0b,},"\xab\x39\x8d\x94\xf9\x28\xb1\xd4\x21\x02\xa3\xe5\x13\xcc\xd1\xcb\x10\x89\x90\x11\x03\x94\x10\xa8\x88\x8b\xba\x26\xdf\x1a\x03\x72\xbd\xba\x0c\xe8\xd8\x54\xaf\x51\xe9\x33\x0a\x8d\xaa\x93\xc1\x05\x80\x90\x6a\x8a\xc7\x2d\x29\x4a\xeb\x95\x66\xfe\x1c\x78\xba\x84\x71\xc0\x6c\x4a\x8a\x75\x11\x3b\x34\x89\x3f\x62\x76\xed\x81\x32\x92\x05\x3b\x95\x6a\x46\x5d\x84\x7d\x2e\xce\x86\xe2\xda\x8a\x9f\x0f\xe3\xdb\x52\xa5\xaa\xc7\x46\xef\x96\x48\x5e\xf8\x1f\x13\x62\xb5\xa4\x2e\xaa\xee\x1f\xbb\x06\x46\x70\x44\x71\xa2\x1b\xf7\x63\x67\xbe\xaa\x07\x81\x2b\x3d\x32\xad\xcd\xed\xde\xd7\x53\x9e\x3a\x50\x1b\x83\xc0\x5b\x19\xa4\x9b\x52\x0e\xde\xdc\x9a\x78\xa5\xfc\x2d\x50\x12\xf1\xd4\xe3\x81\x84\x4e\x79\x2e\xd9\x0b\x0f\x57\xbc\xe3\x75\xc7\x5a\x65\x8b\x2c\x78\xc6\xff\x7d\x9e\xfc\xd4\xbf\xa3\x5c\x47\x68\xcb\xb1\x95\xe4\x82\x3d\x9b\xbd\x83\x5a\x37\x4f\xa0\x4c\xa1\xea\xae\x9c\x56\x6d\x8f\xd5\xaa\x7c\xa5\xef\xe0\xdf\xc3\x17\xff\xfa\x40\x9e\xf1\x02\x2f\x1c\x3b\x37\x6a\x93\x5a\xf5\x57\x08\x3e\x95\x28\x7b\x07\xa9\x8a\xc6\xc1\xb7\xbd\x8b\xb2\x6b\x60\xfa\x7c\x4b\xc9\x19\x73\xb2\x01\xb2\x99\x22\xb4\xb9\xd0\x3d\xd6\x88\x2a\x0b\xd3\xb7\xd9\xe5\xb8\x1e\xe7\x4c\x36\xbe\xc6\x65\xe4\x34\x3c\x8c\x9a\xd3\x36\xda\x38\x50\xc9\xb2\x69\x7f\xe1\xcc\xe2\x9c\x37\x86\x22\xa3\x3c\x24\x8f\x44\x8c\x88\xf4\x8d\xf0\x26\x01\x43\xb2\xa3\x42\xf1\xdd\xee\x74\xd3\xb9\x7c\xa3\xe1\x16\x6b\x15\x69\x93\xda\xd3\x0c\x49\xd8\x10\xd7\x40\x48\xbc\x6d\x46\x76\x52\x00\x4d\x7e\xdb\x65\xc6\xda\xc3\xa2\xc5\xd3\x00\xb9\x7e\xe3\xa1\x0a\x9e\x14\xb6\x9f\x3c\xad\x67\x59\x72\x96\x2e\x1f\x8e\xd9\x75\x47\xad\xed\xc4\x7d\x1c\xf3\x47\x1e\xf3\xb2\x2f\xdb\xf7\x8e\x34\xf3\x1a\x3b\xb7\x66\x9c\x41\xbd\x92\x92\xc3\x80\xbc\xe9\xa4\x2d\x84\xbc\x27\xac\x92\x8b\x8b\xfc\x3c\x63\xd2\x0c\xcd\xb4\x78\xdf\x7d\xdf\x42\x1f\xb1\xcd\x90\x5f\xfc\x4c\x04\x78\x6f\xd9\xae\xf0\x6b\x89\x38\xab\x8e\xf5\x22\x21\x7b\x2c\x04\x51\x5f\x61\xa1\xc3\x12\xea\x83\x25\x3f\x84\x58\xc0\x91\x8f\xcf\xe8\x74\xe6\xe7\xfb\x11\x27\x5d\xb2\xa2\xec\x79\xa2\xd8\x68\x30\x32\x33\xc1\xb6\x97\x95\x2a\x3b\xfd\x3a\xd0\xa6\xf6\xcd\xd5\xe7\x2c\xc9\x40\x9f\x74\x10\xa4\x0d\x5b\x45\x36\xdd\x46\xeb\x16\x11\xae\x86\x70\x36\x71\xb3\xa0\x51\x5a\x03\x77\xbe\xa1\x56\x54\xba\x0a\x0d\x1e\x4e\x96\x02\x63\x28\x42\xf2\xac\xd4\xef\x99\x32\x36\xe9\x93\xf2\x65\x0d\x59\x92\x3f\x24\xe2\xcd\x30\x93\x2d\x8b\xf8\xae\xec\x64\x44\x72\xba\x46\xa0\x78\x81\x49\x6c\x92\xa0\x13\x5c\x67\x5a\xeb\x0c\xe6\x18\x10\x88\xdb\x8f\x15\x6c\xfe\x74\x35\xca\xc6\xc9\x7d\xa6\x37\xdb\x4a\x89\xf5\x13\x31\xda\x13\x73\x1e\x74\x1f\xcc\xc0\x35\x55\x42\xce\x11\xef\xa6\x9d\x05\x38\xd3\xef\x12\x7a\xa6\x87\x45\xed\x30\x85\xd2\x9d\xa9\x0d\xc5\x83\x70\x1b\x6b\x3a\x70\xa3\xef\x3e\x16\xa9\x24\xb3\x32\x03\xb9\x23\x96\xc4\xb9\x45\xf1\x27\xa7\x88\x8f\xa0\x50\x15\xc0\x60\x30\x07\x56\x67\x29\x23\x7c\xc0\x78\x2b\x30\xc0\x20\xd9\x95\x95\x47\xfe\xec\x9f\x4d\x67\x64\x60\xbf\xe0\xc5\xc1\x9c\xea\xba\xee\x06\x82\xdb\x8b\xe6\x91\x35\x18\x1e\xc0\xfd\xd9\xf7\xa6\x6d\x50\xbd\xc3\x79\xe4\xa2\xc5\x98\x17\x8f\x95\x93\x94\x6a\xca\x64\x05\xb1\x77\xfc\xad\xe0\xf8\x64\x21\x58\x3e\xd6\x7e\xba\x18\x72\x22\xa1\xe4\x44\x95\xb3\xae\x54\x4f\xdc\xa2\x8e\x2c\x14\x48\x5e\xab\x04\x71\xaa\xa8\x03\xc2\x9a\x9d\x8a\x48\x92\x67\x64\xfc\xa1\xdf\x51\x40\x7a\xd3\x3e\xc1\x7e\x94\x1e\x6e\x26\x17\x23\x7a\x84\x30\x98\x73\xdc\x71\x36\x55\x87\xbd\xe4\x27\x4b\x5d\xc3\x27\xcc\xb1\xe1\xe9\xc8\x57\xe0\x42\xcc\xca\x8d\x85\x52\xba\x28\x8c\x97\x8c\xfa\x0a\xf9\x9d\x67\xcd\x03\x40\x60\x62\x8e\x23\x52\x5d\xbc\xa2\x07\x67\x9c\xe2\x96\x90\x87\x84\x48\x55\x3c\xd3\x86\x75\xbc\xe0\x7b\xf9\x7b\x93\x17\xdc\x44\x46\x8b\x76\x8b\x15\x8b\x0c\x11\x1d\x63\xa5\x72\x23\x56\x55\xc4\x0e\x16\x59\x7c\xa0\x59\xf4\x0c\x3d\x8a\xc5\xbd\x61\xa4\x87\xc1\x53\x13\x84\x6a\x70\x4a\x78\x11\xb8\xbc\x0c\xee\x61\xe3\x47\x62\xb6\xc1\xb7\xce\xa1\xc4\x6e\x60\x87\xe9\xa3\x6f\x89\x91\x8a\x25\x8b\x3f\xa7\x76\x20\xbe\x10\xc1\x84\xc3\xfc\x39\x73\x90\x24\xe9\x82\x78\xfd\x65\xb8\x2c\xad\x83\x69\x9f\x3a\xd8\xc6\xec\xcb\xec\x8b\x7b\x1b\xd7\x91\x4d\x3f\x6c\x3d\x02\xbf\x40\x28\x3b\x1c\x1f\x1e\x98\xe3\x08\xbe\xae\xbb\xf8\x94\xb8\xf5\xe9\x1b\xbb\xc6\x25\x35\xf9\x23"}, +{{0x83,0x34,0x3e,0x37,0xad,0x09,0x1a,0x85,0xee,0xc3,0x70,0x70,0x1b,0x81,0xa5,0x8f,0x93,0x70,0xa4,0xb0,0x42,0x3a,0x07,0x0d,0x60,0xf9,0x2d,0x8d,0x18,0x09,0x84,0x4e,},{0x50,0xb6,0x8b,0xf7,0x26,0xea,0xbc,0xa5,0x3a,0xc6,0xc9,0x0d,0x4e,0xac,0x55,0x47,0x03,0x71,0x2d,0x22,0x10,0x55,0x54,0xf0,0x5b,0xf7,0x9f,0x9d,0x08,0xfc,0xc4,0x93,},{0x9c,0x69,0x89,0xcb,0xe1,0x7e,0x16,0xca,0xa2,0x53,0xff,0xb1,0xa6,0x4a,0x10,0x6f,0xb0,0x17,0x82,0xc9,0x9b,0x17,0x22,0xba,0xf1,0xac,0xaa,0x42,0xae,0x5b,0x36,0xb7,0x9b,0x2a,0x2c,0xd8,0xfc,0x91,0xf5,0xad,0x89,0x23,0x81,0x70,0x25,0xa7,0x78,0x25,0xa0,0x5d,0xf8,0xc4,0x17,0xec,0x53,0xc4,0xa3,0xaa,0x1c,0x0e,0xfd,0x5b,0xbe,0x0f,},"\xc7\xda\xdc\xac\x5d\x87\x95\xe1\x74\xb6\x91\x38\x91\x2e\x70\xff\x41\xe7\xa7\x25\xfa\xf3\x85\xb7\x73\xed\x15\x09\x89\x72\xb3\x0d\x9b\x73\x93\x72\xd9\x75\xb4\x80\xcc\xfd\xfc\x58\x0e\x2e\x2d\xdf\x5e\x3c\x27\xee\x79\x12\x79\xab\x95\xe4\x38\x2b\x14\x59\xdd\x8d\x41\xae\x36\x0d\x4a\x87\x88\x46\x69\x29\x24\xfe\xef\x39\x0c\x0d\xbb\xfa\x35\xe4\xb8\x2d\x7c\xbc\x33\xee\x15\x81\xc5\x2b\xd9\x49\x38\x5b\x2e\xe4\x02\x63\xa5\x7d\xa1\x17\x4b\xb4\xac\xad\x37\xcd\x8a\xe2\xa6\xb4\x5f\x7a\x6d\x6b\xbe\xf5\xa7\x98\xce\x85\xb9\xe0\x5e\x76\x47\xe3\x34\xec\xfc\x77\x63\x78\xde\x17\x4c\x49\x7c\x0f\x40\x75\xe6\x25\xaf\x7a\xed\x50\x2c\xd1\xcf\x7f\x58\x8d\x0d\x80\x7f\x02\xe3\x2f\x43\x00\xf2\x28\xa5\x0a\x66\x7b\x5a\xd1\xfb\xbc\x17\xe0\xb3\xc5\x70\x51\xdd\xc6\x02\xf5\x76\x07\x9f\x6f\xc5\x88\x9b\x7f\x29\x00\x71\x13\x34\x42\x0f\xc6\x66\xf6\x6d\xba\xff\x41\x26\x33\x6c\x35\x3f\x1e\x5b\x56\x4a\x66\x45\x37\xf8\x37\x86\xda\x5c\x56\x27\x74\x54\x06\xd7\xb2\xfe\x32\x33\xbf\xd5\x8e\xf4\x64\xa0\x6c\x95\xcf\xd0\xb9\x88\xa7\x6d\x05\x3a\x64\x4b\xcc\x15\x9c\xad\x53\xa7\xc5\xdb\xb4\x0e\xef\x5c\xd0\x47\x05\x6a\x3f\x09\x26\x5b\x13\x25\x69\x9c\x7d\x15\x9d\x5c\x90\x24\x40\x17\x33\x57\xff\xab\x8f\x7a\x5e\x38\x9f\x46\x8c\x33\x3b\x78\x2f\x80\x17\x0a\xe9\x09\x83\xaf\x15\x3f\x2e\x73\xbd\x2b\xef\x12\x5e\x3d\x38\x68\xc2\xab\x9e\xcf\x03\xaf\xf7\x6e\xcb\xeb\x18\x16\x7c\xa2\xf7\x11\xcd\x56\x58\x51\xd7\xf0\x4e\xe9\xd9\xb0\x1b\x6d\x83\xa7\x60\x57\x22\x62\x0d\x28\xc8\x4d\x6c\x1a\xf4\x2f\x6a\x76\x92\x58\xf5\x3c\x1f\x66\xda\x36\x66\x6d\xa5\xca\xa9\xbd\x9e\x8f\xbc\x16\x92\x11\xb1\xae\xd9\xc2\x55\x8f\x6a\xaf\x5b\x14\x5a\xbc\x72\x1a\xbb\x00\x72\x01\x94\xe0\x27\x03\x54\x68\xbd\xe3\xfe\x0b\x88\x88\x4f\x4e\x9b\x26\xe7\x71\xe6\xc7\xa0\xa5\x5e\xa3\x6f\xc5\x0d\xec\x8c\xef\x16\x2f\x9b\xba\x5b\x4b\x16\x10\x5a\xfd\x6e\x37\x4e\x03\x8d\x5c\x85\x87\xcf\xd7\xdd\x88\x29\x0b\x2c\x9c\xab\x45\xa2\x64\xd6\x54\x0e\xa1\x41\x6e\x6e\x4e\x74\xa1\x2f\x45\xa2\xef\x13\xcc\x8a\x36\xe7\xb0\xa2\x6b\x90\x2c\x3d\x96\xe2\xe2\x22\x92\x02\xe2\x57\x65\x69\x4b\x94\x33\x73\xd1\x6e\x60\x0b\xd7\x86\xd9\x55\xa4\xb3\xf1\x02\x16\x40\xc3\x9a\x0b\x6c\x69\x15\x00\x28\x1a\xe0\xd0\x98\xcc\x7f\x38\x5e\x18\xa0\x7e\x62\xfa\x4a\x10\x1e\xf5\xb7\x85\x51\xfa\x29\xbd\x15\xee\x03\x53\xa1\xa5\xef\x9b\x21\x6e\x8b\x0f\xa5\x07\x50\xa3\x41\x62\xb6\x35\xa0\xbc\x5e\x5d\x72\x30\xaa\x19\xaf\xa1\x28\xab\xa6\x42\x2d\x38\xeb\x77\xa3\xf0\xbb\x9d\xd8\xe4\x65\x2f\x12\x07\x0a\x37\x36\x1c\x37\x25\x50\x3c\x9d\x22\xe2\xfa\xce\x2e\xa7\x4a\x70\x02\x40\x62\x47\xdd\x86\x97\x5f\x07\x57\x5c\x9e\x7c\x6f\x41\xb5\x3b\x26\xd5\xcf\x52\xc5\xac\xc2\xc5\xd9\x82\x71\x43\x4e\x9f\xa5\x09\xc6\xdf\xbd\x72\x43\x72\xaa\x5c\x13\x45\x1a\xae\x39\x3d\xe0\xa1\x86\x46\x4f\x5d\x33\x7e\x9f\x62\x7b\x4f\x1c\x29\x09\x46\x70\x65\xe8\x9a\x42\x2e\xc4\x0e\xe1\xd8\x0a\x13\x39\x00\xa6\x2f\x4e\x4f\x7e\x94\xeb\x72\x61\x5e\x7e\xc2\x99\x6c\x6c\x24\x30\xc3\xe9\x57\xce\xae\x21\x05\xa1\xe9\x0e\xae\xac\x0d\x31\xaf\xfa\x9f\x57\x92\x6d\x71\xd9\x72\xa9\xa2\xde\x11\x25\x8c\xc1\xe7\x28\x59\x9c\x9f\xb3\x87\x24\x91\x84\x7e\x10\xc6\x7e\xfa\xef\x6b\x69\x6a\x03\x0f\xf0\x53\x3a\x58\x3b\xea\x1d\x04\xdf\x25\xf7\xee\xf3\xa1\x3b\x8e\x31\xaa\xd1\x33\x85\x7d\xf1\xb4\xe5\xff\xbd\xee\x37\xf4\x0f\x38\xd2\x24\xc7\x0a\xe0\x4e\xf3\x3b\x41\xb0\x2e\x71\x91\xa8\x66\x56\xb0\xd7\x2b\x2c\xbb\x53\xc4\x90\x8c\xa2\x06\xf7\x57\x34\xb2\x77\x08\x15\x4f\xcd\x8a\x97\x42\x9c\xfd\x1f\x2d\xa2\x42\x97\x78\x43\x80\x03\xf5\xb5\xb9\xc2\x1d\x9e\xd2\x3b\x8a\xd8\xa2\x28\xeb\x4f\x65\xc2\x4c\x1c\x59\x69\x9a\x5c\x90\xaf\xf7\x73\xe5\xc6\x76\xdb\x36\x2a\x19\x30\xba\x16\xab\xa7\x6e\xf8\xda\xa4\x2b\x3e\xb2\xcc\xc4\x5c\x93\x4d\x23\xd4\x92\x9a\x7a\xd9\xe3\xef\x46\x8b\x06\xa4\x99\x5c\x80\xdd\x23\x6a\x7b\xcf\x38\x79\xd8\xb7\x94\x67\xf7\x2b\x33\x84\xc1\x60\xcc\x18\x17\x14\xe9\x2f\x20\x35\xe7\xb9\x72\xa2\xcc\x52\x42\xd9\x32\x52\x5e\xae\x7c\x50\xbd\x26\x3b\x0f\xa0\x9c\xbd\x9d\x6f\x98\x4b\x9c\xf6\x15\x2d\x9a\x13\x3c\x27\x84\x32\x02\xd1\xe8\x7f\xa5\xa6\xe1\x23\x5d\x9c\x75\x6b\xb8\xe6\x8b\x05\xb9\x8d\xa5\x41\x95\x22\x3f\xdf\x02\x10\x25\x32\x50\x63\x3c\x11\xc5\xf6\x0b\x5e\x67\xd7\xee\xfc\xaa\x6c\x2d\xaa\x52\x31\x37"}, +{{0xda,0x01,0x32,0x21,0xb2,0xf5,0x88,0xaf,0x40,0xe2,0x11,0xa0,0xf9,0x75,0xd4,0x4f,0x9d,0x65,0x02,0x81,0x60,0x51,0x4c,0x39,0x61,0x89,0xf2,0x7c,0x7b,0x06,0x66,0xea,},{0x07,0x11,0x7c,0x6b,0x0d,0xb5,0xb6,0xfd,0xa1,0xed,0xc4,0x39,0x6c,0x47,0xc2,0x2b,0x54,0xee,0x0c,0xe5,0x37,0x5c,0x3e,0xc6,0x33,0xc8,0x3a,0xfc,0x53,0xad,0x6c,0xe4,},{0x10,0xcb,0x52,0xd6,0x10,0xe4,0xa8,0x1d,0x32,0x86,0x9b,0xff,0xce,0x38,0x07,0xe6,0x39,0x1f,0x78,0x2f,0xcd,0x53,0x8b,0x55,0x4d,0x09,0x03,0x7f,0xda,0x72,0x28,0x5b,0x96,0x62,0xb1,0xb1,0x10,0x7c,0x40,0x81,0x78,0xac,0x00,0x9f,0x05,0x25,0x96,0x73,0x88,0xa7,0xd8,0x5f,0xa1,0x23,0x59,0xd3,0xce,0x38,0x75,0x03,0x7d,0xcf,0x6a,0x04,},"\xbc\x93\xee\x1e\xc4\x72\x8a\xc6\x36\xa6\x24\x8f\xcc\x45\x51\xc9\xd1\x59\x80\xdb\x8e\x5f\x54\xb0\xef\x07\x5a\x71\x97\x0e\x17\x6a\x3c\xb9\x18\x2e\x32\xda\x7a\x8c\x2a\xc0\xcd\x7e\x59\x57\x74\x57\x5f\x9c\x83\x50\x6a\x60\x6f\xac\xe8\x95\x12\x13\x5d\x03\x2a\xb0\x5e\x39\xff\xf9\xc8\xca\x6c\x25\xcd\x5d\x78\xec\xc3\xac\x32\x32\x90\xc9\xc8\x16\x26\x73\x5e\x19\x0e\xb5\xae\x34\x5c\xa7\xa9\x58\x40\x9f\x77\x43\xb0\xb1\x61\x49\x16\x83\x22\x17\xc5\x7e\xee\x1b\x4f\x8e\x62\x2a\xc0\x52\xa9\x3d\xd5\xb3\x9d\x07\x61\xe4\x0e\x9f\xbd\x83\x96\xf6\x0a\x3b\xf6\x66\x0c\x5f\xa9\x9c\xd8\x13\x9f\x68\xcb\xe0\x89\x4e\x5c\x67\xe1\x68\xcc\x74\xb2\x72\x4e\x9d\x91\xd6\x00\x0a\x0c\xec\x58\x7a\x11\x46\x3f\x72\xee\x6e\xd2\x55\xbd\x87\xeb\x30\xfd\x45\x75\x96\xf6\x88\xca\x0e\xa7\x3f\x30\x49\x72\x38\xde\x21\xc9\x3f\xbb\x12\x94\xdb\x61\xe4\xa5\x60\x89\x10\x6d\x1c\xf7\xce\x5a\x65\xec\x3d\x12\x17\x0c\xe7\x84\x0f\x08\x8a\x8d\x0e\x3a\xef\x17\xe5\x31\xde\x47\x80\x03\x57\x02\x58\xe9\x27\xf1\x56\xe7\x96\x10\x65\xaf\xa6\x66\xaf\x38\x58\x2b\x35\x3c\xc4\x77\xba\x77\x5c\xae\x45\x94\x6d\x08\xdb\x75\x21\x59\x14\xda\x32\x61\xb6\x22\x94\xe9\x2a\xfb\x38\x14\x59\xc2\x1d\xda\x4e\xa6\xed\x79\x5f\x79\x25\x7c\x09\x4d\xd6\x08\xdc\x8e\x1b\x7c\x40\xcd\x29\xfe\xa2\x22\x08\x8f\x65\x69\x7e\xa8\x88\x95\xd1\x0a\xce\xa8\x79\x73\x60\xdc\xba\xce\xe2\x69\xc6\x06\x60\x0a\xdf\xfd\xcf\x9c\x7c\x38\x1d\x0a\xd6\x69\x69\x67\xd9\xff\x03\xe6\x1a\x24\x90\x65\x02\xb2\x95\xe7\x6f\x4d\x08\x75\x65\x5b\x01\xe6\xff\xca\xcc\x8e\xf0\x11\x29\xc7\x2a\x58\x46\xb6\x0e\xc8\x00\x17\x37\x4e\x75\xd3\x06\x40\x3d\x9e\xcc\xf2\x64\x95\xd2\x98\x12\x0a\x06\x33\x83\x5c\x5d\x1e\xff\x17\xc9\xc6\x24\x76\xf7\x52\xc8\x97\x10\xad\xfa\x4d\x51\x61\x7b\x59\x18\x17\x3c\xba\x72\x25\x40\xe3\x88\xff\xbf\xfb\x96\x68\x74\xdb\x00\x40\x4d\x06\xb0\xce\x11\x39\xba\x74\x14\x3c\x76\xb8\xf4\xd3\x3b\x21\x16\xe1\xcc\xe1\x75\x17\x3a\x96\xfc\x15\x1e\xa2\x39\xbf\xc2\x0d\x66\xfb\xb6\xf5\x2a\x66\x6c\x0e\x81\xcc\x2b\x80\x20\x91\x06\xe2\x48\x0e\x41\x11\xc7\x0e\x7b\xe4\xaa\xbb\x68\x42\x2f\x0b\x8c\x6b\xa1\x5c\x14\x2f\x82\xe6\xc7\xf3\x78\xd7\x80\x0a\x09\xea\xa4\xda\x25\x3c\x2f\xd9\x1e\x12\x63\xc6\xb6\x55\xbf\x70\x25\x5d\x7e\x3b\xb4\x77\x55\x23\xa0\xa9\xe7\xff\x03\x79\x7e\xe3\xff\xca\x8a\x50\xd1\x0f\x20\xd5\xe5\xa8\x89\xec\x5e\x33\x4e\xf2\x6c\xf7\x99\x8b\x08\x36\xf6\x56\x45\x68\x88\xe1\x37\xf3\x9d\x3e\x43\xe2\xce\x3c\x6e\xf5\x40\xd9\x5d\x9a\x20\xc4\x2c\xb8\xae\x2d\x9d\x0f\x25\xa8\x91\xc3\x63\xea\xd9\xcc\x42\x3f\x9a\x32\x3f\xe2\x32\x28\x1f\xb6\x7f\x5b\xe1\xc0\x78\x43\x61\x46\x04\x68\xa8\x7e\x95\xdf\xa3\x5d\x7f\x0f\xfa\x22\x11\xbe\x6b\x5f\xb3\x2d\x42\xba\x65\x18\xab\x6e\xa9\x37\x80\xf4\x31\xd3\x00\x67\x31\xbe\x44\x40\xe7\x12\x97\x4f\x74\xba\xea\x41\x9f\x40\x22\xfa\x25\x02\xe1\xb2\x39\x8e\x93\x86\x16\x7d\x93\xec\xa9\x2c\xa6\x0d\xd7\xd9\x1f\xe8\x23\x24\xf6\x82\xd9\x4a\xa7\xa8\x6a\xb0\x34\xf8\xa9\xe9\x52\xe8\xfc\x95\xbf\xf4\xdf\xed\x6a\x43\x31\x3a\xbb\x92\x40\x1b\x30\xc3\x3c\x79\xa7\xba\x3e\xfd\xbe\x16\x28\x04\x0f\xba\xf4\x43\xf3\xf9\x80\x84\x6f\xdb\x28\x3d\xcc\xd9\x3f\xab\x09\x70\x8b\x7d\x54\x86\x1d\x74\xb1\xfe\x8f\x10\x70\x1f\x21\x1b\xa3\xd3\x90\xe8\xa6\xae\x40\x77\x39\x64\x6a\x79\xa5\x83\x37\xa7\x17\xa8\x72\x00\x9c\x2d\xf6\x76\x1c\x24\x25\xa3\x2a\x00\x18\xaa\xf9\x64\x64\x70\xcb\xc8\x7c\x3a\x65\xc0\xe0\xef\xfb\xaa\x52\x8f\xe4\x78\x3c\x77\x2a\xb2\x66\xb8\xf2\x82\x68\xcf\x14\xaf\x23\x4b\x15\x81\x6d\x1a\x3a\x49\x1a\xf5\xf2\x97\xe3\x3d\x57\x29\x71\x5d\x51\x2c\x37\x3f\xef\x5e\xcc\x3f\x39\x54\xa6\x0a\x2a\x0f\x64\xd8\x29\x47\x41\x19\xca\x1a\x18\xf1\x05\x78\xd0\x4d\x63\x8d\x5e\xea\xfc\x37\x1a\x94\x6f\x6c\xe7\xef\xbd\x2a\xcc\xe3\x4e\x20\x44\x1c\xde\x9a\x37\xd5\xa8\x7d\xc6\x19\xb0\xa7\x27\x59\x6c\xd1\x2e\x15\xcd\x97\x84\xbb\x91\xf1\x39\x9a\x59\xfc\x0a\x7a\x4a\xf6\x8b\x0d\x57\x5d\x93\x38\x71\x72\x97\x33\x75\xc4\x65\xdf\x5d\x2d\x5e\x06\x1a\x2a\x9b\x23\xb4\x91\x5a\x0a\x8b\x8c\x1f\x09\x42\x09\x4a\xf7\x28\xc8\xc3\x11\x45\xfa\x7a\xaf\x74\xa2\x1a\x3b\x03\x2b\xb0\x9c\x39\x22\x05\xbf\x09\x5b\xda\x98\x6e\x5d\xd6\x62\x7c\x1e\x41\x7f\x65\x03\x26\xdf\xe3\xa9\xc9\x99\x4c\x6e\x0e\x01\x27\x6f\x91\xf2\x98\x7d\x2b\x85\xde\xda\x96\x54\x91"}, +{{0x5a,0x86,0x8f,0xb7,0x5e,0xa0,0x72,0x1f,0x7e,0x86,0xc7,0xbc,0x10,0x6d,0x74,0x13,0xc8,0xcf,0x4d,0x03,0x3c,0xe1,0x40,0x05,0xdf,0x23,0xce,0x4c,0x15,0x5b,0xbd,0x27,},{0x6d,0x1e,0x29,0xf3,0x9d,0xed,0xa2,0xbb,0xfb,0xb5,0x7c,0xb0,0x1c,0xb3,0x9e,0x58,0x80,0x82,0x78,0xe5,0x19,0x6a,0xda,0x1c,0x02,0x76,0x46,0xf2,0x04,0x87,0xd2,0x52,},{0x38,0xc4,0x8d,0xba,0x99,0xa6,0x52,0x4a,0x18,0x8d,0x5c,0xd7,0x8a,0x98,0xe6,0x77,0xdd,0x26,0x3e,0xf6,0xb4,0xdf,0x44,0x6b,0x31,0x0b,0x3d,0xd8,0x9c,0xaf,0xdd,0xb9,0xb1,0x7a,0x65,0xbb,0xa8,0xe1,0x39,0x68,0xbd,0xc2,0x5b,0x1d,0x84,0xb6,0xe2,0x43,0x6e,0xdf,0x31,0xaa,0x75,0x6e,0x3a,0x48,0x72,0x6d,0x6f,0x91,0xc8,0x08,0xee,0x0e,},"\xd5\xaa\x11\x82\x5b\x99\x44\x8c\x80\x63\x06\x23\xd8\xc7\x46\x01\x7c\xfe\x3d\xe6\xfa\x8a\x0c\x6e\xd6\x62\x71\x27\xcf\xc1\xf8\x4d\x4e\x0a\x54\xe6\xa7\xd9\x08\xd3\x71\x9f\x14\x21\xd1\xd4\xc7\x8b\x3c\xdd\x94\x76\x9a\xb6\x03\x3b\xce\x97\x9d\xd9\x0e\x10\x68\x02\xeb\xa9\xa0\x32\x95\xd4\x8f\x9b\x9a\x95\xd5\x7e\xe7\x74\x54\x02\xa4\x80\x23\xbf\x3b\xdd\xd5\xc6\xb9\x1c\x77\x3e\x49\x19\x13\xa3\x8a\xc3\x46\x26\x05\xcf\x28\x2d\xea\xc7\x57\x42\xfb\xd2\x75\x29\x27\x6e\x81\xdc\xce\x8d\xff\x96\x05\x03\x5e\x8c\xf0\x5d\xf6\xa4\x3d\xb1\x51\xf0\x41\x57\x65\xbc\xbd\x1f\x1b\xb6\x68\xad\x62\x73\xb8\x91\xc0\xdc\x4f\x3d\xba\x59\x0e\xa8\x2f\x83\x63\x76\x9b\x9c\x77\x51\x19\x47\x11\x73\x75\xdc\x49\x04\xd4\x8b\x88\xb6\x8a\x25\x5b\x28\x01\x1b\x11\x04\x81\x94\x09\x3e\x98\x20\x7a\xb1\xcf\x75\x6a\xb8\x33\x1f\x8d\x6f\x9d\x5b\xe2\xe1\x19\x05\x73\xe9\x5e\x71\x0f\x2a\x35\x01\xb5\x3a\xa0\x82\x5d\x6c\x12\xdc\xfb\x94\xac\x80\xdc\x10\x82\xcb\x4a\xd2\x62\xe6\xd4\x93\xad\xce\xb6\xbc\x19\x14\x5f\xbf\x73\x8d\xf7\x6f\x21\x34\xfa\x04\xcb\xbe\x44\xff\xc5\x5f\xfe\x5f\x9d\x3e\x9b\xeb\xd1\x59\xa0\x01\xaa\x9b\xf7\x88\x92\xa1\x65\x38\xa5\x20\x82\x3c\xde\x5d\x61\xe2\x9a\x56\xa7\x7a\xb9\x6e\x49\xe3\x00\xd9\x86\x59\x62\xc7\xe7\xfb\x8b\xcf\x5d\xe0\xb9\x38\x29\x7c\x3f\x4d\x6f\x60\x21\xe2\x4d\xfd\xad\x98\x61\x65\x2f\x34\x0f\x42\x1e\x7a\xf2\xc7\x1e\xd9\xa7\x15\x87\xfc\x75\x3b\x11\x55\x49\xb2\xf7\xf7\xcb\x29\x69\x0e\xa2\xb1\x58\xa9\x4c\xd2\xbc\x42\xe7\x06\x3d\x61\x9b\x93\x9d\x52\x3e\x3c\x23\x7e\xb1\xf4\x08\x10\xde\x0b\x44\xaa\x69\x37\x86\x3d\x62\x9e\xdd\x55\x75\xe6\xc0\x47\x52\x61\xb6\x27\x47\x30\x92\x77\x5c\x84\x36\x00\x11\xd5\x7c\x57\x20\x9c\x2e\x87\x5a\x3f\x89\x63\xe8\xb2\x41\xa7\xaa\x75\xef\x30\xc4\xa7\x18\xac\x4d\xd4\x66\xdc\x7a\x3e\x40\xe5\x87\x4f\x15\x7a\x84\x9e\xd3\xa3\xa9\xd4\xae\xb7\xd9\x4d\xf0\x9b\xb5\x5a\x0b\x2b\xc9\xf8\xb6\x95\xc3\x71\x79\x30\x23\x67\x60\x63\x67\xc5\xf3\x24\x82\x8c\xe7\x5a\x94\x4f\x50\x70\x3a\x47\x90\x6a\x80\x88\xf3\xa1\x1c\xfe\x4a\x85\x4e\x01\xf1\x74\x12\x52\xc4\x86\x33\x7d\x06\xb1\xcc\x6c\x6b\x9b\x12\x95\x43\x1e\xe0\x73\x59\x35\x7b\x3a\x78\xef\x50\x75\xb6\x5d\x7f\xed\x5e\xb7\x42\xe5\x10\x15\x98\x44\x4b\x46\x62\x3f\x89\xa3\x03\xac\xc1\x0c\x73\x24\x49\x51\x3b\x70\xdc\x45\x6a\x79\xd3\x7c\x48\xe5\xe7\x26\xc2\xf5\x58\xda\x0a\x1c\x46\xef\xbd\x2d\x92\x03\x26\xa6\x78\xb8\xa2\x2f\x09\x44\xbe\x4a\xf5\x5b\x6c\x71\xf4\x53\xfb\xae\x40\x0e\x6a\xcc\x04\xe0\xe9\x5c\xa2\x00\x16\x7e\x96\xee\x98\xea\x83\x93\x16\xda\x93\xa1\x2c\x2d\x76\xf1\x1a\xee\xbe\xb7\x8e\x65\xea\x48\xf7\xfe\xeb\xbb\x13\x7b\x2a\xc6\x7e\xae\xf0\x2a\x2d\x9e\x64\x71\xdd\x63\x4a\x03\x7d\x4f\x5d\x35\xa2\xf7\x8a\xf4\x1a\x8e\xa5\xaf\x5b\xc8\x15\x0a\x99\xed\x68\xa6\xa0\xcc\xff\x2b\x1d\x79\x65\xd8\xbc\x3e\xf9\x28\x5b\xa6\x42\x1d\x87\xc3\x3a\xad\x81\x03\xa5\x87\xbe\x01\x92\x68\x45\xbf\xbd\xdb\xaf\xc6\x9c\x4b\x92\x52\x88\x67\x20\xd4\x18\x50\x9f\x40\xf3\xdc\xf5\x57\x65\xdc\xcc\x3d\xee\xd8\x27\x72\x15\xe6\x9f\x05\x6b\xa3\x1b\x8a\x30\xb5\x00\x94\xea\x8f\x14\x47\x20\x76\x0c\x8f\x8c\x05\x5c\xf1\xa8\x69\x64\xff\xcb\xb8\xee\x1b\xb2\x18\x12\x76\xea\x99\xa7\xb8\xe7\x10\x67\xfa\x31\x0b\xa4\x47\x1e\x84\x27\x90\x37\xbc\x49\x2a\x55\xde\x20\x55\x48\xe7\x7b\x01\x45\x04\xee\x66\x64\xc4\x98\x8c\xbb\x9e\xd9\x1f\xf3\x2e\x22\x59\xed\x4c\xfd\x61\xa1\x97\xd0\xdb\xc3\x2c\x68\xf6\x54\x9c\x0d\x29\xfc\x45\xf3\x6a\xcb\x26\xb1\x64\xde\x97\xcc\xdc\x37\x90\x0d\x93\xcd\xbc\xf9\x68\x7e\xf5\x3f\x1f\x4d\xa1\xb1\xae\x42\x25\xb8\x84\x20\x9e\x81\xba\x43\x11\x52\x04\x77\xed\x42\x11\xb0\x92\x40\xbd\x7b\x82\x5e\x54\x73\x9f\xe2\x5d\x86\x24\xaf\x04\xb8\x6f\x6d\x11\x06\xd1\x81\x70\xe5\x06\x4d\x1a\x73\xc1\xfb\x1a\x27\xb2\x89\xa9\x48\xd7\x71\xa2\xf6\xb8\xb0\x9a\x63\x5d\xb9\x6c\x62\x51\xc3\x5a\x18\x76\xd3\x69\x62\x66\x99\x41\x6c\x0e\x40\x29\x8a\x68\x1f\xda\xf5\x25\x5f\x58\xc2\x55\x77\x59\xd8\xf5\xdf\x14\x8d\xec\x9d\xbe\x1c\xe6\xdf\x04\x1c\x36\xf8\x3e\x69\xcc\xfb\x4a\xac\xa5\xcb\x48\xfa\x6a\x85\xc8\xff\x66\x06\x15\x24\xd8\xb1\x1b\xd7\xff\xae\xd9\x9d\x0c\xd4\x5c\x42\x01\x0f\x21\xd3\x6c\xc3\x16\xca\x86\x09\x55\x63\x5b\xff\xaa\x7d\x9a\xac\x57\x2d\xcc\xf3\x15\x3d\x42\xee\x8a\x2b\x12\xba\xa5\x7c\x16\x0b\xd0\xad"}, +{{0xc5,0x4b,0xd3,0x43,0x1f,0x26,0x59,0x28,0x1d,0x31,0xe9,0x3b,0x30,0x78,0x76,0x68,0xbc,0xba,0x6e,0x5e,0xe4,0x7d,0xb4,0x6e,0x50,0xde,0xab,0xe3,0xf4,0x8c,0x9e,0xd8,},{0x1e,0xba,0x6e,0xb3,0xf7,0xf2,0x4c,0xdf,0x80,0xab,0xf8,0xa1,0x9d,0x30,0x8c,0x24,0xf1,0xe2,0x5b,0xa1,0x59,0x70,0xed,0xa7,0x11,0x67,0x07,0xb0,0xf1,0x2c,0xf9,0x32,},{0xdf,0x45,0x41,0xdf,0xf1,0xa9,0x79,0x7f,0xeb,0x61,0x7f,0x98,0xe4,0xb5,0x7a,0xa7,0x71,0x41,0x31,0xee,0x8f,0xf5,0x45,0xed,0x50,0x82,0xe3,0x56,0x8e,0xfd,0x1c,0x39,0x9c,0xdc,0x56,0xf5,0x58,0x29,0x91,0xeb,0x87,0x85,0xfb,0x33,0x86,0x4e,0xef,0x7f,0x55,0x3f,0x3e,0x24,0x82,0x62,0xed,0x54,0x8a,0x1a,0x68,0x88,0xf9,0x2e,0x92,0x0e,},"\x6f\x8c\xdd\x75\xe1\xb8\x56\xbb\xbe\x9c\xdc\x25\x53\x7f\xdf\x7e\x82\x36\xcb\x02\x9a\xcd\x39\x84\x49\x21\x10\xd0\xc3\x04\x41\xd4\x21\x84\xb5\xfb\x18\x3d\xa9\xf3\x14\x03\x78\xdf\xa7\xd7\x4c\xcc\x9e\xf5\x00\x19\x3c\xc9\x57\x9f\xff\xa6\x0b\xd2\xa8\xab\x9e\x09\x58\x15\x00\xcf\x06\xcd\x35\xab\xc1\x71\xd9\xd1\x2c\x65\x80\xd9\x68\x2f\x9f\x49\xfe\x36\xd0\xa3\x17\x72\x38\xfa\x50\xe7\xeb\x4c\x27\xe4\x60\xf5\xe4\x58\x0a\x56\x56\x8a\x19\xe0\x3d\x95\xb0\xff\x4f\x4a\x23\x18\x24\xcd\x2f\x34\x42\xe0\xba\x40\x0b\xc1\x1b\x7a\x98\x9d\x50\x1f\x5d\xf3\x5e\x43\x01\x50\x8f\x72\xa8\x52\x01\x4b\xfb\xf4\x00\x1e\x28\x09\x54\x73\xd9\x65\x9e\xed\x60\x67\xba\xf6\x8f\x92\xbe\xf3\x12\xc0\x9b\x19\xaa\xf7\xc4\xfb\xa3\xd9\x02\xb9\xf6\xcf\x95\x2e\xb9\xb9\xa5\x3c\xa8\xbc\xbd\x04\x2d\x84\x2e\x98\x53\xb6\x72\xa1\xd0\x09\xd8\x23\x83\x8b\xeb\xe5\x63\x7c\x4c\x07\xed\x1b\x19\x48\x55\x4b\x23\xb3\x2d\xe1\xd6\xc1\x16\xf9\x33\xb3\x54\xf2\x8b\xbb\x77\x9f\xa6\x54\x8c\x48\x29\x2b\x61\x2c\x7f\x55\x1a\x75\xfb\xc4\x6c\x02\x73\x6b\xf9\x9e\x9c\x8e\xad\x56\xf0\x5a\xb0\x42\x7a\x6e\xc6\x16\xe3\xdc\xc7\x75\x7e\xfd\xb7\x62\x8d\x4e\x96\x32\x5f\xe0\xae\x25\x4c\xef\x5c\xb7\xa7\x04\xb3\x5a\x92\x0c\xb3\xfa\x2a\x03\xe9\x61\xda\xf3\x71\x82\x1b\xe0\xb3\x0f\x19\xae\x49\x52\x44\x1e\x08\xa7\xd2\x2f\x54\x31\x39\x0a\x5b\xe8\x09\x7f\xd5\x79\x7a\x1a\x62\x97\x66\x4d\xa4\x2c\x20\x08\xd0\x32\x10\x60\xeb\xe3\x18\x1e\xb7\x95\xa7\x28\x92\x58\x08\xda\x78\x67\x29\x3b\x72\x08\xf3\x77\xd3\xa7\x71\x18\x5e\x6d\x2c\x1c\x8c\xe1\x83\x76\xfe\x3c\x0c\x14\x58\xc7\xf5\xbe\x34\xf4\x28\xa0\xd5\x75\x93\x10\x74\xc9\x7c\xbf\xce\x8a\xd8\x13\x13\xec\xca\x73\xa9\xf3\xdb\x43\x4f\xba\xd4\xbb\xbf\xf5\x02\xbf\x72\x97\xe1\x7a\x97\xa8\x86\x42\x11\xe6\x78\x9b\xa1\x92\x03\x6e\xa5\x9a\x34\xd8\x4f\xf2\xa1\x11\x07\x4c\x3f\x23\x73\xb1\x01\x11\xb5\xda\xa7\x89\x56\x0c\xb3\x54\x90\x95\x4c\x88\xea\x00\xc4\x10\xdf\x85\x0a\xd0\x0c\xae\x2f\x28\xe7\x19\xfb\x06\x71\x69\x88\xa9\xbb\x0b\xfc\x6c\x98\x9d\x58\x7e\x56\x85\xae\x88\x3c\x2c\x2e\x74\xdd\xbf\x91\x5c\x98\x56\xaa\xe8\xf3\x28\x8f\xc6\x25\xbf\xb2\xfe\x26\x8d\x74\xf5\x9f\x8b\x7d\x83\x63\x74\x97\x69\x16\x90\x07\xd5\xe6\x7b\x7d\x0b\x8c\x8f\x5a\x9d\x9f\x9c\x7b\x74\x5c\x0a\x42\x94\x76\x2c\xbe\xca\x42\xd5\x38\x49\x61\xe9\x21\xa7\xef\xb6\x5d\xa8\xd1\xe0\x3b\x67\x45\xcd\xf3\x08\x09\x7f\xb1\x3d\x64\xfd\x2f\x8c\x10\xfa\x95\x09\xeb\x2d\x91\x38\x7f\x00\x64\x5c\xa7\xd0\x48\x3b\x2c\xd1\x4c\x20\x6b\x8d\x7a\xe0\xa3\xfb\x7c\x09\xbc\x68\x43\xd1\x02\xad\xcd\xa1\x9f\x8b\xbd\x85\x1e\xb6\x83\xc4\x43\x5c\xeb\x4b\x3d\x23\xd3\x8f\x56\xd4\xd1\x11\x4e\xef\x0f\xc6\xf2\x4d\xf5\x27\x70\xd8\xf1\xf3\xf8\x2f\x47\x20\xe8\x92\xb3\x15\x24\x4e\xf5\x6c\x36\xb2\x3f\xcd\x40\x79\x78\x52\x41\x40\x38\x2e\x11\x74\x0f\xd4\x6f\xe4\x29\x99\x23\xf5\x2b\x88\xb4\xa9\xcf\xf4\xb2\xb4\xb2\x3a\x2e\x76\x0a\xd8\x1c\x78\xba\x87\x69\x31\xd9\xaa\xa4\xbe\xed\x40\xfb\x10\xa7\x99\xeb\x30\xd3\x7f\x75\x47\x78\xba\xc8\x5b\xf0\x63\x1d\x85\x2b\xe7\xd7\x4a\x64\x31\xf3\x84\xa4\x02\x5c\x10\x91\x42\x1d\x67\xa4\xe9\xc9\x4c\x1b\xe3\x69\x0c\x6b\xf8\x1d\x06\xbd\xaf\x32\xfe\xab\xba\xf1\xdc\x26\x3f\x27\x3a\x0b\x9e\xd6\x54\x60\xba\xef\xce\xfc\xf6\xac\xcc\xda\x0e\xdd\x23\xdf\x9e\x05\x12\x8e\x29\xd6\x61\xc4\xb4\x4b\xd9\x2d\x64\x0f\xaa\x85\x3a\xfd\x83\x70\xe5\x63\xb4\x0a\xe0\x14\x9a\x14\x28\xe0\x6e\x3d\xd8\xe6\x6b\x79\xda\x21\xcc\x75\x3d\xdc\x47\x6e\x3d\x76\xe2\xf3\x6f\x2b\x6c\x6b\xc1\xb6\x50\x87\xd5\xf8\x6c\x8a\xc3\x54\x71\x1a\x8c\x08\xf3\x48\x6e\x47\x9d\x6a\xe9\x43\xf8\x84\x63\x32\xd4\xe5\xb4\xbb\x2e\x82\x57\xe3\x08\x3d\xf4\xf8\x1d\xd4\xf0\xc1\xee\x1d\x97\x18\x21\x66\x16\x1a\x18\x59\x7e\xe0\xb9\x59\xde\x1c\x45\x59\x1a\xbf\x7c\x51\x03\x3d\x7c\x66\x35\x2d\xee\xb6\x82\xe7\x77\xae\xae\x2f\xa8\xd3\xa7\x7f\x47\x0d\xb7\x8d\xdc\x1b\x1f\xc8\x28\x40\xc4\x06\x57\x76\xd9\xbf\xca\x9d\x39\x2d\x92\x88\xee\x91\x32\xaa\x3e\x4f\x2d\x19\xd0\xd9\x3e\x01\xb6\x66\xf3\x64\x7a\xba\xf2\x25\xc2\x92\x41\x9c\x8a\x82\xeb\xa3\xe1\x1a\xb1\x03\x84\x6f\xcd\x49\x35\xf4\x12\x41\x47\x7c\x0f\x15\x2b\x79\x65\xad\x54\xbb\x72\xbc\x3d\xe2\xe0\xb7\x9d\x62\x25\xe8\xfa\x7a\x62\x86\xb5\xfc\xcb\xb3\x58\x22\xe8\x0c\x8b\xfe\xa7\x4c\xb4\x8a\x22\xd2\x41\x38\x53\x95\xc2"}, +{{0xea,0x60,0xda,0x01,0x79,0xbc,0xaf,0x6b,0x21,0x81,0x42,0xb1,0x11,0x90,0x46,0xff,0xe6,0xd8,0x5a,0x74,0x1b,0x0d,0x16,0x62,0x30,0xbc,0x6d,0xe3,0x30,0x4f,0x67,0x73,},{0x50,0x6b,0x2e,0xbb,0x49,0xbd,0x9b,0x9f,0xf6,0x6e,0x6b,0x7b,0x1f,0xab,0x96,0x68,0xcb,0x18,0x1b,0x4f,0xb5,0xe4,0x34,0x3d,0xdd,0xd3,0xf8,0xa9,0xd7,0x02,0x03,0x1c,},{0x27,0xfb,0x6b,0x5f,0x06,0x52,0x8a,0x64,0x19,0x8a,0x3e,0x7d,0x67,0xc7,0x38,0x84,0x0a,0x8c,0xff,0x4b,0x48,0x2b,0x4d,0x52,0x4b,0x12,0x2d,0x17,0xd2,0xae,0xbc,0xc0,0x38,0x9b,0xe2,0xc6,0xe2,0x8e,0x2c,0xdf,0xc4,0x84,0xc1,0x8d,0xe4,0x25,0xdb,0x56,0xcd,0xfa,0x56,0x1c,0x50,0x7c,0xd9,0x70,0x60,0x2d,0x3a,0x38,0x5d,0x3a,0xea,0x0f,},"\x61\x2d\x6e\xf6\xe4\x34\x9f\xfa\xe5\x16\xe9\x83\xe8\xfa\x7b\x52\xd9\xfd\x13\x42\x82\x24\x0d\x95\x14\x38\x24\xbd\x4a\xae\x03\x23\x4b\x76\xa8\xcd\x6d\x40\x68\xcf\x00\x9e\x48\x1c\x26\x85\x36\x1c\x75\x50\x42\xc4\xe6\xab\x87\x03\xec\xbf\x8f\x02\x0c\xf5\x73\x9a\x4c\x2a\x03\xc3\x73\x1e\x9c\xf7\x5a\xee\x25\x96\x61\x53\xb9\x71\x15\x15\xc6\xc3\x9a\xfa\x95\xf2\x21\xac\x33\x95\xb0\x89\xc9\x7a\xc9\xb5\x14\xe1\x7d\x55\xf7\x96\xa3\xec\xc1\x35\xfa\xaa\xee\x90\x7a\xab\x10\x29\x64\x7b\x48\xac\x81\x74\x9b\xab\x26\x62\x7c\xf7\x09\x5d\x74\xc2\xfc\xee\x35\x67\x1c\x8b\xb4\x60\x53\xf5\x15\x1b\x0c\x2e\x5d\xab\xe0\xf2\xd6\xaa\x20\x41\x33\x05\x02\x0b\x2a\xfd\x9e\xe3\x38\x7b\x2c\x9e\xd0\xbc\x3f\xe2\x90\x2a\xf4\x10\x0c\xec\x23\x32\x7b\x0f\x1e\x4c\xa3\x9e\xf6\xea\xf6\xfd\xf5\xd5\xac\xf9\x3f\xc8\x68\x53\x6d\x8c\xba\x40\x17\x69\x32\x9f\xbe\x93\xef\xfc\x7e\xe6\xbf\x93\xa6\xe5\x88\xbd\x55\x1e\xaa\x51\x28\x53\x95\x2c\x81\xb2\x45\xe5\xd2\x29\xd2\x94\xe4\x13\x70\xb8\x67\x80\x86\x67\x88\x7a\x6f\x9e\xba\x2a\x8d\x56\xa7\xa7\x04\xe6\x6b\x1c\x02\xf9\x6e\x73\x89\x5f\x48\x3e\x44\xa5\xc5\x66\xcb\x1a\xf2\x65\x73\xbf\xe2\xaf\xce\x06\xb1\xfb\x58\x77\xe5\x1e\xf3\x12\x6a\x3f\x21\x0f\xbf\x21\x3e\xd6\x5d\x5c\xa4\x6c\x46\xce\x4a\xa9\x45\xbd\x8c\xa6\x11\xe3\x83\x62\x50\xf5\x64\xf7\xea\x35\x42\x39\x82\xf9\x70\x5f\xcd\x6b\xef\x46\xae\x16\xcb\x0f\x6b\xc9\x12\xc3\xf2\x86\x42\xb8\xd8\x77\x75\xb8\x18\xe4\xe4\xe8\x06\x11\x67\x89\x9b\xd2\x7a\x7e\x2f\xb8\x18\x7e\xe9\x91\x7d\x2d\x58\x6b\xf9\xd4\x99\xe8\xfa\xbc\xa8\x3d\xdf\x58\xc7\x43\x7e\xaa\xce\xc4\xf4\x44\xfb\x2b\xf7\x45\xdc\xcd\x8c\xae\x38\x94\x45\x71\xde\xde\x20\x37\xdc\x41\xf0\x81\x8a\x3d\x91\xe3\x02\x0a\x72\x74\xc6\x67\x42\x47\x87\x60\x83\xd0\xe3\x97\x46\xc9\x68\x40\x61\xbf\x74\xad\x58\x84\x36\xce\x1b\x76\x3d\xbf\x4b\xfc\xf8\xde\x6e\x35\xc5\xa7\x62\x66\x75\xc1\x27\x29\x2b\x21\xdf\x3c\x16\xf8\x10\x63\x32\x2a\x75\xf3\x43\x88\x86\xf1\xf0\xce\xbf\xc1\xa9\x6f\x41\x38\x4c\xbd\xd8\x61\xb0\x4f\x51\x9f\xf6\xa9\x34\x4d\x94\xf3\xd3\xa0\xab\xa8\x40\x9d\xfc\xf1\x8d\x01\xf2\xb5\xb4\x55\x17\x16\x39\xee\xa7\x7d\xee\x70\x6e\xa8\x3d\xcd\x2b\x8b\x1f\xc5\xec\x0d\x74\x07\x61\xa5\xf0\x5f\x7e\xc8\xd8\x7a\xd1\xf2\x92\xa5\x0c\x8b\xae\x0a\xd3\x2b\x03\x41\x9a\x95\x0d\x9f\xe3\xb3\xec\xc4\xd8\xd3\xaa\x95\xe0\x2b\x51\xb1\x83\x1d\x83\xea\xde\xaa\x44\x23\x86\x35\xf9\xc6\x5e\xfe\x2f\x67\x44\xa7\x0b\x9a\xe4\x1e\xf1\x5d\x97\x90\x8c\x05\x33\x93\x44\x12\xf7\x95\x83\xd0\xe9\xb3\xd7\x06\xa1\x28\xe8\x8f\xb5\x1e\xed\xb6\x5e\x46\xd8\xa2\xb3\x8b\xbd\xd6\x45\x55\x54\x96\x7a\x8d\xc0\xc6\x8b\xdd\xfe\xae\x0f\x8f\x72\xf0\xb8\x86\xc3\xc7\x41\xfa\xc4\xf9\x1e\x5c\x49\x1d\xba\xe9\xda\x45\x94\x83\x6c\xf1\xd9\xfb\x6e\xe1\x30\x02\x50\x89\xae\xd3\x50\xef\x24\x7b\xc9\x88\x7a\x20\x50\x15\x9d\xde\xd1\x42\x8f\xfd\x9b\x07\xb9\xec\x2e\x3d\x4b\xbd\xc2\xdd\xb5\x4e\x87\x3b\x63\xf2\x47\x52\x33\xe1\x91\x33\xa1\x4b\x66\x58\x50\x94\x57\x00\x81\x86\xd6\x22\x59\x95\xa9\x67\x26\xb5\x29\xf4\x42\x81\xaa\x24\xfe\xfd\x1c\xff\x8f\x81\x5d\x93\xa5\x98\x69\x31\x66\x22\x90\xb3\xee\x16\x83\x3c\x60\xf0\xaf\xce\xf2\xcb\xc0\x00\x62\x3f\x39\x31\x90\x9c\xa9\x76\xa0\x94\xe2\xb0\xfd\xb7\xdc\xf7\xc4\x85\xe1\x49\x88\xa3\x6f\x19\xb6\x64\x25\x38\x5f\x56\x32\xce\xf6\x5d\x1d\x34\x14\x62\x3a\xe3\xee\x81\x6e\x76\x3a\x5f\x60\x64\x66\x62\x2b\xe6\x60\x21\x14\x50\x29\x51\xcf\x0c\x09\x7c\x16\x48\xa7\x2e\x2c\x43\xd9\xaf\xa9\x68\x9f\x2c\x3c\xfe\x02\x6c\xdc\xe3\xbd\x1b\xf9\xeb\xf7\x77\x56\x2e\xcd\x8f\xf1\xb0\xd7\x75\x30\x6d\x90\x04\x43\xf3\x0a\x84\x33\x10\xb8\xde\x6a\x38\xff\x10\x8b\x72\x39\x13\xd7\x89\x9b\x9f\xbe\x7c\x3d\x76\x6e\xf8\xbd\xfb\x6d\x8b\x0b\x52\x95\x6c\xb1\xce\xc9\x93\x6d\x70\xb4\x87\xc0\x14\x40\xa8\x42\xb2\xfa\xbe\x38\xe7\xb8\x85\x1a\x38\x7d\x35\x8b\xe7\xef\x12\xa7\xe4\xf2\xb5\x27\xe8\x30\x90\xd6\x7e\xb0\x13\xc9\xc2\xcf\xd3\xde\x5a\x1a\x3f\x99\x74\x8a\x41\xf4\x81\x9d\x90\x36\xe5\x00\xc5\x04\xc9\x88\xbf\xd2\x4f\x61\x7d\x6e\xbd\xca\xb2\xdd\xea\xa6\x15\x79\x41\x4f\x36\x0b\x46\x9a\x33\xa6\xde\xd9\x6b\xa1\xd8\xc1\x40\xc4\xff\xc9\x49\x90\xd8\xad\xf7\x8c\xd3\x87\x80\xbd\x68\x66\x3d\x1a\x0e\xe3\x3f\x53\x7c\xdf\x89\x2d\x56\x2e\x82\xdc\xd1\xd9\x12\xca\xd3\x8d\x65\x56\x7d\x29\x14\x06"}, +{{0xb6,0x2c,0x24,0x18,0x78,0x27,0x35,0x13,0xe0,0xbf,0x6f,0x33,0xd2,0x10,0x43,0x65,0xb2,0xce,0x9c,0x5a,0x1b,0x78,0x60,0x58,0xe9,0xc5,0xb4,0xd1,0xd1,0x92,0xf8,0x7f,},{0xbb,0xf6,0xfc,0x51,0x98,0xf3,0xfb,0xa5,0xab,0x00,0x7f,0x8a,0x63,0x2d,0x28,0xd1,0xaf,0x86,0x5d,0x29,0x0f,0xa0,0xa9,0x0f,0xaa,0x9a,0x9b,0x5b,0x9c,0x13,0xf3,0xfb,},{0xc5,0x90,0x39,0x58,0x7b,0x38,0xdc,0x14,0x1e,0x05,0x5a,0x93,0x85,0x01,0x04,0xd6,0x29,0xe3,0x80,0x70,0x5b,0x8f,0xc9,0x18,0x84,0x7c,0x5e,0x2a,0x35,0x2d,0xa3,0xa0,0x2f,0xce,0x7f,0x71,0x99,0xf4,0xae,0x2b,0x1e,0x2a,0x59,0x48,0x34,0x18,0x93,0x2e,0x18,0x5f,0x7e,0x45,0xb5,0x05,0x0c,0x64,0x2c,0xec,0xc7,0xe7,0x81,0x99,0x85,0x07,},"\x26\xa3\xc2\x6a\x5a\x18\x9c\xad\x40\x7c\xba\xa3\xa6\x86\x7a\xc0\xa2\x60\x88\xc7\x5f\x9d\x0f\xa1\x9b\xd5\x02\x74\xce\xc5\x75\x5a\x49\x71\x09\xa4\x73\x28\x4d\x6f\xc8\x1a\xd4\xb9\xec\x29\xfa\x7e\xc9\x76\x4f\xd3\x09\x9f\x06\x0e\x36\x83\x65\x52\xff\x24\x13\xe3\xd5\x09\x5f\xe0\xb1\xa8\xbf\xcf\x67\xee\x06\xaa\x90\x32\xe7\xbb\x32\x49\x69\x80\x47\x71\x4d\x28\x14\x15\x27\x3c\x98\x34\xad\x9e\xb6\x65\xa7\xd9\x72\x20\xe7\x2d\x9c\xa7\x3f\x31\xaf\xa7\x73\x86\x75\xba\x31\x62\xef\xef\xe7\x47\x9a\x5b\xc4\xbc\xe2\xe8\xb7\xaf\x47\x41\xd7\x03\xdc\x9b\xbd\x60\xb4\xcf\x4b\x90\x87\xf6\xcf\x86\xcf\x53\xae\xd0\x2b\xf4\xca\x6a\x18\xf6\x07\xcb\x52\xa3\x03\xd7\x8e\x85\xad\x88\xfd\xfc\x86\xdc\xb7\x18\x77\x27\xb0\x3b\xe2\x27\x74\x5b\xea\x74\x4f\xd0\x06\x52\x5b\xc5\x9a\x4d\xdd\xab\x91\x5c\xef\x40\xa8\xf3\x08\x02\x91\x3b\x79\x13\xea\xf9\x74\x33\x65\x52\xe2\xf1\x45\x6a\xd8\x03\xdc\x58\xc9\xb4\xb1\x8e\xfa\xf7\xf7\xe3\x57\xe2\xcd\x77\xd1\x38\xd9\x00\x80\xe2\x96\xd1\x36\x4a\x2f\x32\x4d\x3e\x0d\x6e\xdc\x20\xb8\xbd\xaa\x9d\x2e\x87\x1f\x5e\x7b\x05\x1f\xb6\xfc\xdb\x55\x95\xf2\x1d\x3f\x8d\xe2\x9f\xb7\x86\x78\xfa\x47\x9e\xaa\x32\x57\x9c\x78\x4d\x51\x3a\xc5\xf8\x36\xd9\x54\xd0\xd3\xfc\x0e\x5f\xc8\xa6\xee\xab\x90\x20\x2b\x4c\x4a\x2b\xec\x24\xcf\x63\xea\x67\xc4\x70\x09\x62\x18\xcd\x43\x1e\x88\x31\x05\xfc\x9c\x27\xf9\xea\x77\xc1\x8e\xda\x69\xbc\x00\xa2\x24\x2b\xd4\x20\xf0\x95\xc9\xb9\xa9\x2d\x95\x6c\xcc\x5a\x85\x72\xb0\x57\xa7\xfe\x17\x3e\xeb\x2a\x31\x66\xcb\x20\x89\xd1\x13\xa8\x16\x46\x2b\x25\x80\x5b\x8a\xba\xff\x5b\x0b\x22\x87\xc5\x08\xec\x2b\x8c\x34\xb2\x19\x5c\x33\x28\x70\xd3\xcc\x39\x60\x17\xa1\x6b\x9e\x0d\xa6\x18\x2d\x07\x1d\x3b\xf3\x63\xd3\xf1\xe7\xb7\xda\x11\xd7\x11\x25\x0a\x58\xaf\xd7\x4e\xd3\xe3\x15\x8d\x47\x18\xba\xd4\xd2\x74\xbb\x34\x44\xcf\xc3\x18\x07\x4b\x53\xbe\xba\x44\xa2\xa3\x4f\xf8\xeb\x72\x6e\x4a\x1d\xaa\x91\x10\x51\x62\x16\x51\x89\x8b\x88\x71\x69\xf6\x2b\x9c\x0f\x40\x20\x48\x3e\xf5\x44\xf8\xf5\x72\xfa\x6a\x66\x40\xa4\xcf\xfc\xe9\x76\xcb\x70\x24\xf8\x47\xbd\xc9\x5d\x1d\x7c\xe6\x53\x50\x5d\xeb\xfc\x69\x88\xed\x28\x9d\xd4\x7a\x9e\xb2\x61\x25\x9e\x3e\x65\xe4\x5f\xc9\xd7\x14\x94\x69\x35\xcd\x8e\xa1\x3b\xc6\xdb\x5e\xaa\xb9\xe8\xb1\x0d\xae\x0f\xdd\x69\x79\xc2\x03\x5c\xfb\x80\x98\x25\x2f\x22\x05\x44\x3b\x80\x88\x16\xbf\x77\x87\xb7\xf1\xe7\x8b\xc9\x8a\x72\x85\xe7\x33\xd4\x5f\xc4\x61\x0c\x20\x97\x7c\xa3\x22\x98\x89\xbb\x8c\xd2\xb6\x94\xce\x9e\x3f\xe7\x83\x03\xaf\x83\xe1\x06\x42\x25\x42\xfb\x79\x61\xd3\x2e\xb1\xd2\xc5\xfb\xe6\x07\x51\x67\x4b\x07\x47\x73\xee\x06\x16\xe0\x29\x73\xf6\xa7\x4a\x3a\xe4\x66\x4a\x26\x50\x91\x5a\x3e\x10\x49\x3b\x9e\x66\xa3\x9f\xa5\xc8\x9c\x61\xd4\x47\x35\xf1\x07\xd3\x37\x57\xae\x67\x9b\x43\xa8\xd4\x3a\x01\x75\x7a\xe1\xf3\x27\x9e\x86\x24\x42\xe1\x50\x71\x55\x50\xee\x82\xe4\x9c\x0d\x49\x43\xfa\xf1\x3f\x22\x79\x1f\x0e\x66\xf2\x4a\xc5\x0a\xb3\xc0\x03\x85\x2b\x21\xe1\x5b\x2f\x00\x6e\xdc\x2c\xd6\xa8\x79\xc4\x76\xab\x5b\x35\x2e\xb1\x09\x9d\xad\x4c\x50\x37\x24\x00\xfa\xa5\x49\x8d\x78\xc6\xb8\x57\x03\x4c\x25\xca\xf7\xb9\x33\xfa\xf6\xbd\x7c\x59\xfa\x3d\xa5\x73\x97\xb6\x03\xde\x9c\xb9\xd8\x0e\x51\xf7\x99\x7b\xaa\x46\x2a\xcd\x53\x7e\x2c\x41\x94\xc7\x6c\x7e\x0b\xe6\x51\x2b\xce\x4d\x63\x66\x0b\x36\xc7\xcc\x46\x63\x1f\xb9\x67\x1a\xd8\xc5\xd2\x8e\x2f\x2e\xe2\xed\xce\x81\x95\x44\x21\xb8\xa3\xd9\xff\x6f\x66\x69\x9f\x4b\xce\x88\xbc\xb8\xef\x19\x2c\x26\x2a\x74\xab\x7e\x19\x1e\xee\x91\x01\xa2\x8d\x4b\x66\x28\x2b\x51\x22\x09\x3d\x14\x1c\x64\x96\xc7\xab\xa4\xd3\x52\xe4\x72\xee\x74\x40\xe0\x5a\xf6\x0d\xa0\xcf\xc9\x3e\x30\x36\x42\xba\x8f\xb8\xe5\xc5\x68\x68\x7a\xbd\x63\xaf\xb3\xed\x6a\x32\xb6\xda\xe5\x6a\x7e\x5d\x73\xde\xba\xf4\x1d\x35\xca\x36\xad\xb9\x7a\x22\xc0\xad\xbe\x71\x8b\xec\x1f\xa5\x19\x98\xde\x9b\x4b\x96\xa7\x9c\x5b\x96\x55\xb0\x16\x5d\x5e\x1b\x9a\x8c\xc5\x52\xe8\xc9\x32\x9e\xde\x58\xdf\x74\xc6\x7b\x2b\xa1\xa8\x42\xfd\x3e\x81\x58\xc1\xfe\xa3\xa9\x9b\x56\xa2\xc2\xa9\x62\x07\x85\x3d\x26\x02\x2c\xec\x17\x0d\x7e\x79\x94\x4d\x2f\x56\xaa\xb1\xf1\x91\xbf\xd4\x8d\x72\x54\x90\xca\x82\xb8\xd9\x06\xf0\x68\x0e\x69\xee\xb9\x57\x57\x74\xfb\x9d\x60\x45\x13\xfb\xc2\x6f\x5d\x30\x3b\x68\x85\xca\xc0\xbf\x8e\xfe\xe0\x53\x8f\x92"}, +{{0x0f,0x77,0xf7,0x7a,0x1c,0x7e,0x04,0xbd,0xa8,0xe5,0x34,0xf4,0xe3,0xef,0xf9,0xa2,0x38,0xcc,0x14,0x87,0x6b,0x7e,0x3e,0xca,0x8b,0xed,0xe1,0x92,0x3a,0x33,0x64,0x06,},{0x10,0x45,0xea,0x9f,0xe2,0x14,0x58,0x3a,0x0c,0xdb,0xc4,0x94,0x93,0x2b,0xc4,0x4a,0xfe,0xeb,0x08,0x0b,0xec,0x48,0x5c,0xc2,0x34,0xfd,0xdc,0xff,0x13,0x9c,0xce,0x00,},{0xb2,0x0b,0x9c,0x42,0x46,0xf0,0xd2,0x97,0x01,0x38,0xaf,0x7d,0xc9,0xaf,0x62,0x9b,0x68,0xfb,0xc3,0x7d,0xf8,0x7a,0xfd,0xca,0xdc,0xb5,0x45,0xc1,0x76,0x83,0x76,0xa0,0x9c,0x3b,0xab,0xc3,0xeb,0x1a,0xf3,0xb7,0x51,0x98,0x52,0xf7,0x5f,0xab,0x1c,0x9c,0x11,0x9c,0x66,0x2c,0x58,0x77,0xfb,0x2f,0x72,0x99,0xca,0xb5,0x7f,0xad,0x3d,0x0e,},"\x0e\xcb\x74\x6d\xbd\xb0\x16\x14\x21\xaf\xeb\x7a\xde\xa7\xa3\x7c\x2e\xa4\x40\x8a\x59\x2c\x9d\x78\x1e\xd6\xac\x6f\x4e\xe5\xcc\x65\xd5\x27\x0e\x4c\xf2\x76\x32\xf7\xc5\xc1\x33\xd4\x39\xb7\x8d\x1f\x71\xaa\x6d\xd8\x07\x13\xd9\x0b\x15\x1e\x19\x12\x1b\xfa\x87\x71\x0e\x84\xa4\x85\x0a\x3b\x5b\x02\x65\xba\x26\x03\xd0\x71\x6e\x9b\x7e\x11\x22\x10\x9c\x39\xc6\xf1\x02\x7f\xce\x18\x79\x8c\xbb\x4f\x6b\xc5\xe4\xd7\xac\xa4\x70\x46\x90\xf5\xc9\x81\x51\x08\x71\xc3\x13\x59\x57\x98\x33\x86\x81\x10\x7f\x2b\x57\x94\xd4\x6f\x6e\x0b\xde\x2c\xd0\x64\xb3\xb1\xfc\x00\xca\x47\x18\x8b\xbb\xc1\xf4\xa0\xce\x30\x5c\xc6\xd8\xa8\x96\x92\x0e\xb9\xeb\xae\x57\x9f\xd3\x38\x5f\x8f\x1f\x35\x97\x62\x88\xf4\xc5\x8f\xfc\x47\x60\xf3\x59\xb0\x03\xc8\x72\xe9\xa2\x40\x55\x35\x5e\xa9\x58\x5e\x95\x10\x69\xdc\xa2\x5f\xd0\xcc\x0b\x9d\xb5\x2a\xae\xaf\x19\xd4\x3f\x2e\xab\x4f\x83\x56\x03\xad\x12\xd2\xdc\x49\xb3\x10\x25\x6b\x94\xbe\xd5\x48\x96\xa1\x6b\x69\xb0\x9c\xb4\xc8\xff\x5c\x23\xcc\xe5\x59\x3d\x87\xad\xe2\xa8\x2a\xda\x50\x85\x9e\x15\x44\xc1\x86\x18\xa6\x5c\x00\x7e\xf4\x24\xc9\x85\x4a\x17\x5b\x6e\x6c\x0e\x64\xb2\xc8\xeb\x8a\xd4\xd2\x8b\x97\x7d\x68\xe7\x81\x69\x91\x51\x98\x97\x53\x94\xd3\xb9\xb2\x69\xca\xb0\xd3\x26\x1b\x2b\x56\xcd\x2c\xc4\xbd\xdb\xd4\xf1\x43\x9e\x0d\xbe\x2c\x9b\x3f\x3f\x75\x14\xed\xac\x5e\xbb\x46\x22\xb9\x2a\x69\xa8\x40\xa9\x02\x85\x50\xb2\x21\xdb\x59\xdd\xfb\x00\x13\x96\xf8\x63\x92\xa1\x7f\x08\xcc\xb1\x94\xcd\x9e\x1a\x00\x81\xd7\xdd\x9c\xca\x23\x57\xfe\xb8\xb7\x95\xe5\x17\x02\x9f\x79\xc8\x2a\x3b\xe6\xf9\xa0\x31\xdd\x1a\xf1\xe7\x9e\x49\x82\xbf\x8e\x76\xb3\x10\xf9\xd3\x55\xef\xcd\x5b\x1e\xfa\x9f\x35\x9c\x17\xcf\x3b\x51\x0d\x51\x3e\x8c\xd5\x78\x6a\x0d\x34\x45\xdc\x59\xa8\x43\x3a\x46\x48\x86\x87\xb0\xf5\x8b\x1b\xd6\x56\x7c\x2a\xf4\x87\x3b\x51\xfc\x84\x5e\x76\x7e\x24\x30\x05\x19\x2f\x8f\x06\x74\xf2\x81\x26\x5a\x55\xd7\x6c\xea\x32\x22\x60\xc9\x32\xce\xa6\x71\x7a\xdb\x98\xa2\xdd\xa8\xc6\x98\xe2\xe8\x92\x55\xfe\xb7\x7d\xa7\x64\x81\x67\xbc\x1e\x58\x87\x7f\xeb\x72\xd1\xd1\x4b\x0c\x30\x4f\x07\x37\x2d\x95\x56\x75\x23\x7c\x49\xf7\xa6\xdb\xc9\x15\xe6\x81\x4a\xba\xe6\xcc\xe4\xca\xf9\xf4\x80\x87\xe9\xdf\xb2\x82\xd8\xf3\x40\x37\x7c\x1e\x29\xc6\x73\x1c\xcc\x26\x67\xda\x66\x95\xb7\x12\xbe\x03\x12\xd8\x65\x11\x19\x34\xf1\x68\xd5\x54\x43\x65\xdd\xae\x27\xab\xc6\x4a\xef\xbc\xb3\x22\xdb\x7d\x97\xd9\x0d\x95\x7a\x63\x7b\xd8\x26\xc2\x27\xe9\xeb\x18\x0b\x45\xa4\x31\x62\x6a\x6f\xd8\x90\xc0\xe5\xf4\xed\x7e\x85\x64\x74\x75\x2f\x80\xb5\xae\xf6\xe7\x3e\xfd\xaa\x6c\x2c\x45\x1b\xd7\x4c\x1e\xf4\x66\xca\x3a\xaa\x25\x73\xbb\x52\xcb\x2b\x1c\xa9\x6a\x1b\x57\x44\x03\xce\xae\x1c\xf0\x5f\xfc\x53\x43\x0e\x1e\x4c\xd5\x59\x3b\xd1\xef\x84\xbc\xbf\xe2\x19\xf0\x81\x60\xd1\x66\xf2\x73\x1d\x99\xb8\xd7\xa3\x2b\x12\x99\x1f\x77\x77\x5a\x26\x7e\xc0\x82\x97\xec\x51\x2d\x7b\x72\x43\x56\x32\x52\x5c\x04\x00\x0f\xb0\x0a\x79\x3f\x8b\x5f\x8f\x37\x47\xb5\x53\x59\xdf\x21\xb7\xe2\xc4\x9f\x2b\x0b\x9a\xe0\x82\xaf\xc7\x0a\x14\x68\x71\x37\x0b\x8d\x50\x08\x6d\xe0\x0f\x94\x48\xbe\x89\x02\x17\x4b\xa2\xcc\x85\x1f\xa3\x79\xdd\x70\x31\xca\x45\x7a\x88\x69\xaf\x4b\x6c\x27\x29\xda\xc5\x19\x55\x6b\x8b\xb4\xab\x51\x9e\xf1\xbb\x02\x4e\xa8\xb7\xf0\x17\x71\xc9\xaa\xb7\x48\xe5\x73\x81\xa0\x19\x2a\x6e\x39\x8c\xbe\x6d\xd9\xf3\x67\xcc\x7b\x33\x54\xf8\x3b\x79\xbc\xda\x46\xb7\x93\xa4\xad\xa8\x55\x49\xc8\xd6\xbd\xd6\x16\x81\x24\x36\x2f\xf9\x08\xaa\x1a\x0c\xb7\x8a\xa3\x30\xc4\x2d\x5a\x5d\x48\x12\x35\xac\xac\x3a\x91\x9b\x96\x9c\x50\x98\x72\x66\xd4\x04\xd1\x5d\x0e\x70\x6f\xd9\x00\x76\x34\xf6\x9e\x13\xc5\x6e\xc4\x71\x33\x88\x4f\xca\xdd\xc1\x6b\xee\xee\xd1\x9e\x0c\xd9\x17\xaa\x49\x63\x67\x86\x7d\xfc\xea\x27\x4e\x1a\x47\xda\x77\x4f\x3c\x93\x63\x02\x1e\x7c\x8d\x6b\xf8\xf0\x00\x53\xfa\xcc\x11\xcb\x68\xa9\xd6\xe1\xfc\x2d\x6d\x19\x17\x5d\x63\x24\xff\x7c\xa6\xc2\x30\x58\xb8\xb6\x93\xd8\xfd\x4e\x0b\x51\xdc\xbb\x11\x35\x43\xf2\xfc\xc0\x45\x2e\xb9\xd9\x67\xac\x0f\xa9\xb2\x3e\x9e\x0b\x1d\xa8\xd8\x3a\x3c\x1f\xc9\xe9\xec\x97\x1f\x0f\x67\xfc\x74\x5b\xb1\x73\x76\xbc\x46\x24\x5f\x52\x8c\xb6\xe5\xfe\xe1\x1b\xcd\xda\x86\x7b\x7f\x79\x01\x9c\xf9\xdb\x59\x18\x58\x23\x0a\xec\xb4\xd1\xe9\x3d\x16\x7c\xd8\x6b\x42\xdd\x87\x9a\x13\xfa\x0e"}, +{{0xc5,0xa5,0x05,0x34,0x77,0xae,0x31,0x15,0x8e,0x74,0x69,0xdd,0x15,0x04,0x86,0x76,0x50,0xd4,0x6f,0x15,0x89,0x06,0x7f,0x5c,0xd8,0x81,0xca,0xf2,0x5c,0x26,0xcb,0x21,},{0x70,0xf8,0x5d,0xb9,0x80,0x7b,0x26,0xfc,0xf3,0xe6,0x69,0x0b,0x91,0x72,0x4f,0x7a,0xe3,0xd2,0x0e,0xc3,0x60,0x4a,0xb7,0xd6,0x30,0x8d,0x90,0x94,0x30,0x8b,0x2d,0x59,},{0xf5,0x19,0x1b,0x44,0xbd,0x6c,0xc3,0xea,0x28,0x17,0x71,0xdf,0x12,0x54,0x9b,0xa2,0xbe,0x22,0x8b,0x51,0xeb,0x79,0x1b,0x9e,0x5e,0xd2,0x81,0x5f,0x86,0x2a,0xa6,0x30,0xb5,0x69,0x67,0xcd,0xef,0x8b,0x6a,0xf0,0xb9,0xd2,0x1a,0xb8,0xc9,0x7a,0x6d,0xff,0x68,0x1c,0xce,0xd9,0xf5,0x01,0x97,0x13,0xd4,0x35,0x7c,0xb3,0xe5,0x4c,0x0d,0x08,},"\x85\x71\xff\x39\x03\x48\x6a\x43\xa6\x12\x6c\x32\x3e\x7b\x3a\x74\x14\x1d\x13\x85\xd4\xbd\x70\x3f\x19\xe2\xd1\xb6\x4b\x50\x28\x1d\x27\x16\x8a\xe3\xe7\x69\xc6\xdd\x9d\xf7\xd9\x78\x64\xfb\x37\x82\x2f\x00\x21\x85\x2e\x31\x68\xab\x7d\x84\x5a\x65\x45\xed\x0c\x37\x7d\x9f\x7c\x04\x8a\x2b\x96\xe8\xdc\xf4\x45\x77\x96\x84\xa0\x58\xc2\xb9\xc2\x1a\xc6\x8a\x0c\x34\x1d\x1d\x6c\x09\x81\x45\x64\x57\x45\x8e\xb7\xce\xbf\x66\x67\x87\x40\x77\x7e\xca\x26\xe0\x1e\x1c\x8f\x53\xb5\xd4\x75\x6c\xc5\xf0\xb9\x0f\x0c\x5d\xb0\x53\x93\xcd\x4b\x8e\x44\xf6\x81\x0c\xaa\x5a\x11\x6a\x33\x57\x77\x24\x39\x5d\x41\x3a\xf6\x19\x63\x2a\x6f\xed\x14\xe2\x15\xc2\xf1\x9d\x10\x5c\xe2\xbf\x14\x98\xe6\xd2\xab\x4f\x65\x0f\x61\xba\x5c\xf6\xd0\xc7\x3b\xbb\xde\x98\xe3\x04\x29\x91\x0a\x4e\x67\xdf\xbc\x71\x7c\xb0\x91\x18\x2d\x59\x70\x58\xb5\xd7\x65\xd0\x97\xe6\x87\x58\x31\xb5\x88\xaa\xeb\x3e\x73\x27\xe8\x56\xb4\x2f\xa9\x83\xfd\x25\x4e\xf1\xf9\x18\xb0\x43\xd1\xdd\x3d\x7b\x7e\x30\xb3\x15\x38\x6e\xec\x91\xe7\xf9\x4d\x59\x8f\x4b\xeb\x3b\x27\xb4\x2f\x4e\xe1\xfb\xf7\xaf\xb4\x86\xbd\xcc\x60\x81\xcc\xb8\x67\xf0\x41\x11\x04\x4f\x4b\xbb\xe3\xc8\x12\x2e\xde\xad\xef\xa9\xd6\x93\x90\x6e\x0d\x6e\x13\x3b\xf6\xf2\xda\x61\x58\xfe\xed\xbd\xa0\x24\x41\x0f\x12\x08\x6e\x7a\xcc\xf1\xc6\x8e\x15\x57\xf0\x0c\x14\xe9\xc7\xea\x76\xa5\xed\x13\x37\xa0\x54\xac\x2c\x94\x9c\x05\x97\x7e\x03\x02\x74\xf6\xa4\xf2\xa6\xb3\x0a\x15\xc5\x70\xec\x94\x33\xf7\x4f\x47\x52\x80\x87\xc9\xce\x9a\x62\x92\x95\x1c\x54\x35\x49\x96\xfb\x28\x3c\x0d\xc4\xcf\x33\xc0\x01\xbc\x96\x87\x5e\xa6\xe1\xf4\x6f\x83\x7f\xf1\x8d\xd9\x54\x5f\xb9\x93\x46\x55\x34\x2b\x12\xc2\x99\x0b\x9f\x1c\x6f\xf4\xd6\x64\x89\xd6\xae\xdc\xe7\x5c\x7c\xb0\x3a\xc1\x34\xbf\xd3\x9b\x18\x1d\xfb\x7f\x9a\x97\xce\x73\x7f\xe5\x70\xad\x5f\x81\x34\x59\x39\xa6\xde\x5a\x40\xa3\x3a\x0e\x44\xbf\x95\x75\x03\xd5\xca\x02\x83\x51\x2e\x57\xfb\xa8\xa3\xa6\xf2\xc3\x90\x68\x7b\x1b\x77\x08\x67\x6e\x0f\xd0\x3b\x7c\x18\x8d\x45\x61\xc1\x87\x91\x63\xea\xf2\xb5\x96\xdd\xd5\xf3\xc1\xf4\xda\xdb\xc1\x39\xc2\x16\x48\x92\x82\x0b\x2f\xe0\x9c\xbc\x3d\x19\x08\x80\x76\x36\x45\x10\x25\x4f\x2b\x6d\x41\x03\x29\xe7\x0f\x2e\x5a\x94\x5b\xba\xcd\x2c\xa8\x9b\xd4\xb6\xe1\xf5\xe2\xe1\xd4\xf4\xed\x2f\xe0\x11\x3b\xcf\x32\x96\x2f\x00\xd5\xc3\x3b\x1d\xf9\x88\x40\x2b\xa0\xdc\x88\x04\xc1\xaf\x66\xcc\xae\x26\x70\xef\xa3\x13\x4c\x67\xfc\x90\xfe\xed\x8d\x8d\xee\xdc\xcf\x6a\x46\xf2\x29\x40\x45\x4a\xf2\xbb\x67\x54\xcf\x23\x5d\xdb\xb0\x00\x1c\x6c\x74\x1b\xf8\x74\xbc\xd8\xd4\x1d\x9d\xba\x81\x62\x58\x1c\x37\x46\xd7\xf3\x0e\x73\xde\xf6\x94\x15\xaf\x51\x81\xc1\x49\x91\x42\x95\x12\x2d\x45\x98\x2f\x94\x94\x3e\x20\xb0\xff\xc7\xfe\x6d\xdf\x19\xa0\x22\xe8\x7a\x52\x13\x33\x57\xa1\xe8\x0f\x37\xf2\x8a\x4c\x4a\x8a\x61\xc1\x48\xdd\x87\x5c\x1e\x8e\xcd\xcd\x84\x0d\xd8\x63\xe4\x4d\x9b\xcb\x16\xb6\xe5\xaf\x01\x47\xb3\x4a\x7a\x90\x52\xc8\xd3\xf4\x52\x01\x3d\x2d\x35\x4f\x68\x03\xf9\xea\xf6\x05\x6f\x3b\x01\x3c\x61\x6e\x47\xf3\x98\x81\x91\x46\x32\x0a\x5e\x3d\xbd\xf1\x68\x43\xea\x29\xde\xf2\x62\xcc\x9a\x34\x36\x72\xcf\x96\xbc\xcc\x6e\x87\xe6\xa6\xba\xf0\x71\x2e\x6e\xe8\x9a\xa6\x04\x89\xf1\x7c\xb7\x2d\xdc\x44\xba\xd1\x61\x58\x7d\x87\xf5\x4d\x67\xcc\x0a\x27\x78\x49\x7d\x83\x10\x88\x31\x5f\xfe\xee\x3d\x26\x8c\x59\xbe\xfe\x88\x4c\x3a\xa0\xe0\xae\x22\x96\xbb\xb6\x0e\xac\x90\x97\xcd\xf8\xdc\x09\x87\xce\xb1\x74\x2b\x05\x86\xdf\xce\x79\xec\x10\x42\x5b\x28\xf4\xe6\x45\x20\xd7\x12\xe3\xf4\x6e\xa8\x3b\xe2\xde\x6a\x15\x74\x07\x3b\xc5\xc7\x55\x7b\x8e\x25\xb6\x41\x11\x84\xea\x28\x3d\x88\x00\x23\x2c\x79\x06\x94\x21\x81\x1f\x88\x3c\x29\x94\xe7\xb7\xe2\xad\x9f\x8d\xc4\x89\xc9\x34\x77\x24\x39\x46\x09\xc9\x89\x09\xa6\xc2\x60\x17\xb5\x0f\x20\xd5\x0c\xca\xcb\xde\x36\xb7\x6b\xa6\x46\xa7\x6d\xc6\xa5\xb0\xf5\x06\x49\xc5\x65\x8b\xbd\xfd\xd3\xb5\xca\xfc\x54\x79\xa2\xf4\x8e\xe5\x15\x42\xf2\x3e\x9f\xc9\x21\x32\x06\x0f\xd6\x35\xef\xf4\x52\x11\x1c\xda\xf3\xef\xbd\xb7\xdb\x9e\x7d\x47\x16\xd0\xd6\x01\x1c\x29\x11\x8a\x55\xd4\xc1\xa4\x36\xab\xe2\x4e\x3c\xbf\x40\x23\x5b\x76\xdd\x19\x23\x50\x3c\x5f\x35\x98\x12\x4e\x2d\xf5\x5a\x2d\x1f\x24\x6e\x90\xde\x4b\x71\x64\x5d\x51\x75\xb6\x1b\x01\x74\xe7\xe5\x7d\xf1\x28\x5c\xcf\x8c\x86\xb8\x38\x2c\x25\x80\x79"}, +{{0x05,0xc7,0x19,0xca,0xe0,0x6e,0x2b,0xb7,0xd8,0x78,0x63,0xab,0x31,0x50,0x27,0x2c,0xb2,0xf8,0xc3,0xaa,0x24,0x21,0x91,0x2d,0x87,0xf9,0x8e,0x75,0x89,0x63,0x8c,0xe9,},{0x90,0x21,0x17,0x96,0xfe,0xd3,0xd5,0x3b,0x81,0xf8,0xfe,0xeb,0x1b,0xad,0x1f,0xfc,0x93,0x3e,0x5f,0x10,0xd3,0xbc,0x1b,0x36,0xdd,0xf2,0x10,0xa4,0x79,0x23,0xdf,0x03,},{0xba,0x6e,0xb7,0x51,0x37,0x1d,0xf7,0x21,0xb7,0x70,0x7a,0x5b,0x33,0x39,0xed,0xb5,0x5f,0x13,0x86,0x40,0xb9,0x7b,0xe6,0x33,0x4d,0x6c,0xda,0x51,0x91,0xa3,0xff,0x63,0x67,0x91,0x17,0x61,0x88,0x2a,0x4a,0x00,0x7f,0x16,0x1b,0x74,0x8c,0xec,0x95,0xb1,0x9e,0x99,0x5f,0x28,0x58,0xc2,0x57,0xcd,0x61,0x69,0x25,0x66,0x62,0x30,0x11,0x02,},"\xec\x24\x19\x18\x41\x8e\x60\x52\x20\x42\xe6\x73\x39\xe6\x64\x94\x99\xf3\x1a\x6c\x7c\xf8\x92\x5f\x1f\x61\xdd\xe8\x94\x60\x36\x02\xae\x8b\xb5\xf5\x88\x09\x82\x1f\x83\x34\x4f\x23\xcd\x31\xe6\x4e\xc9\xff\xe7\x9a\x98\x6b\x7e\x29\xe4\x31\x9a\x63\x41\x43\x16\xbd\x6e\xe2\x0e\x02\xa5\x0d\xa4\x40\x12\xbd\x2d\x6f\x9f\x67\x9e\x88\xed\x0c\x8b\xb1\xe2\xca\xd5\x5e\x56\x57\x89\x88\x33\x45\xb7\x54\x6f\x3d\x54\xb1\xb3\x62\xb1\xc6\x50\x50\x2c\x01\x9d\x73\x13\xaf\xbc\x82\x68\x9b\x23\xa3\xa5\x2d\x8f\x1a\xf9\xf8\x1e\x18\x8d\xbd\xf2\x03\xfb\x53\x00\xb4\x22\x5b\xfb\x67\x73\x33\x7b\xe6\x75\x0b\x3d\xb8\x8c\xe0\x97\x34\x3f\x62\xee\x2c\x11\x85\x74\xef\x15\x0c\xbd\x4c\x62\x76\x0c\x3e\x43\xdc\xbc\x39\x21\x8b\xd6\xd9\x85\x65\xfa\x38\x98\x11\xb1\xa6\x74\xf6\x17\xfd\x75\x67\x33\xdc\xb5\x67\xa9\x2d\xbf\x38\x55\xb5\x7b\x1f\x4a\x46\xd5\xb8\x97\x4b\x39\xac\x0d\x0e\x24\xd9\x9d\x20\x37\xc0\x4f\x60\xd9\x14\x0f\x64\xb0\x7a\x77\xd7\xea\xa1\xce\x8a\x78\xe8\x44\xb1\xdc\xf0\xe3\x74\x24\xf3\xf9\xd2\x53\xa5\x48\x56\x1a\x03\x75\xa8\xd4\x34\x12\x97\xbf\xed\xb7\x04\x8c\x79\x35\xe1\x48\x14\x18\xf9\xbb\xa9\x27\x1f\x9f\xd6\x02\x62\x24\xe7\x8e\x05\x5d\x8a\x09\x39\xfa\x2f\xe1\xdb\xc0\xfc\x7b\x58\x3e\x4c\xff\x34\x90\xe1\xd0\xf6\x10\xb2\x52\xe3\x0d\x84\x97\xd0\x0e\x4a\xac\xb3\x75\xf1\x9a\x47\x19\xf7\x9c\xa1\xea\x58\x3a\x2f\x8b\x14\x06\xa4\xaa\x5c\xb5\x5c\x08\xb6\x59\x3b\x67\x6e\xb5\xc3\x4a\xbe\x89\x39\x2d\x62\xd2\x33\x08\xa3\x34\x8b\x57\xaf\xfb\xba\x77\x39\xcd\xe8\xe1\x90\x9d\x34\x25\xee\xb2\x09\x26\xa9\x77\xd3\xa9\x4a\x86\xe0\xba\x10\xb3\x86\x92\x66\x98\x82\x7e\x86\xb4\xfd\x6c\x61\x80\x04\x7c\x87\xec\x3b\x31\x61\x9d\x05\xa9\xdf\x34\xef\xd3\xd7\x6a\x83\x69\x62\xb2\xef\x60\x4d\x07\xaf\x09\x75\xeb\x8f\x3d\xd2\x25\x94\x32\x38\x02\x56\x4c\x92\x9b\x3f\x65\xda\xcb\x57\x2b\x32\x55\x3d\x69\xb3\x1a\x19\x76\x90\xa9\xbb\x86\x0b\x08\x0a\x77\xcf\xbb\x3c\x17\x5a\xaf\xce\x01\x46\xa8\x2a\x4d\x06\xe8\xc7\x50\x52\x1b\x72\x6e\xf1\xcb\x29\xd0\x21\xe5\x91\x5e\x5e\x84\x62\xed\xe5\x39\x54\x45\x24\x5c\x9a\xe8\x82\xee\xc4\xb1\x74\x5e\x11\x79\x1f\x76\x21\xd3\xfe\x70\x2c\xac\x15\x25\xe1\xf7\xb4\x6e\x11\x05\xcd\xd0\x6d\xa2\xaf\xde\x26\x47\x5d\xc1\xf7\x8d\xf8\xe2\xd7\x2b\x0e\xc3\xef\x7d\xd9\x56\x19\x3c\x99\x68\x42\xa4\x32\x69\x65\x38\xcf\x12\x3d\x76\x87\x21\x1f\xfc\xd0\x90\xb9\x38\x1e\xab\xec\x87\x9f\x76\x9a\xac\x0d\x35\x64\xe1\x6d\xf7\x94\xfa\x24\x72\x8d\x71\x72\xfd\x07\x73\x2e\xab\x07\x7e\xd8\x1c\x22\x08\x4f\x6f\x78\x1b\x62\x6d\xac\x67\x42\x8a\x9d\xdf\x3b\x0d\xb0\x46\x52\x51\x22\x0d\x18\xb8\xbf\x62\x04\x64\xc5\x1a\x57\x8d\xec\xcc\xbb\xab\xa5\x45\xed\x44\x2c\xf1\x2c\x4c\x66\xf6\xcb\x6e\x69\x01\xea\x54\xae\xda\x23\x6e\xc4\x5e\xef\x88\x6a\x7d\xdd\x2c\x04\x1c\xab\xa3\xa6\xce\xe3\x39\x71\x5b\x6c\xe9\x7e\x76\x5e\xc3\x47\x9f\x3d\x52\x82\x4a\x81\x94\xbe\xc2\xa8\x96\x47\xe8\xc6\x3f\xf7\x64\x5f\xf6\xd0\x53\x67\xc7\x67\xbc\x48\xcc\x96\xba\xf0\x5d\x6a\x41\x5b\x2a\x5a\xff\x9b\xfb\x21\x79\x48\xfa\xd3\x57\xb9\x8f\x47\xdf\xed\x62\xff\x12\x85\xeb\x9f\x46\x8f\x0f\x29\xed\xd7\x5a\xdc\x0c\x8c\x2f\xf6\xa5\x65\xed\xb8\xed\xfb\x48\xbe\xa0\x3b\x70\xc4\x47\x36\x9c\x52\xd8\x81\xee\xa0\xee\xdb\x08\xc3\x15\xcd\xf0\xbf\xeb\x97\x9c\x1c\x02\x50\x94\x6b\xb1\x00\xc2\x86\x6b\x41\x69\xb8\xcb\xd4\x4d\x65\x8f\x02\x36\xe1\xe9\xf3\xaa\x13\xbb\x8e\x80\x22\xa3\x8c\xe9\x97\xc9\x4b\x5b\xaf\x97\xe0\xba\x62\x1f\x7e\x09\x67\x1c\xe6\x38\xc2\xa3\x9e\xe6\xc6\xe2\x5a\x68\x80\x19\xdd\x16\x76\x75\xce\xae\xc2\x1c\x6b\x42\xa7\xc8\xc4\x76\xd1\x29\xdc\xc6\x93\xc3\x92\xa0\x2b\xe9\x1b\x87\x43\x7a\x08\xa0\xeb\xf1\xa7\xbd\x97\x6b\xa2\x37\x74\x76\x68\x38\xb8\xd6\x02\x4f\x5b\xb9\xb0\x7f\x3c\x6b\x71\x9b\x4d\xe1\x5b\x72\x44\x80\x48\xab\x70\xdb\x3d\x4b\xea\x77\xba\x35\x9b\x51\xb1\xec\x17\xdb\xe8\x01\x0a\xef\x02\x44\xa8\x07\x9c\xa8\xb9\xa2\xa7\x97\xf3\xb1\xfe\x04\x7c\x8d\xd5\xca\xb7\xfb\x48\x68\x29\x23\x9c\x4e\xf6\xd9\xa3\x83\x70\xd4\x88\xc4\x7b\x7c\x03\x0e\x49\xa5\x50\x0c\x9a\xbb\x39\xa9\xa5\xab\xfe\x72\xe9\x18\xb7\x63\x84\xec\xaa\xfe\x16\x27\x26\x6c\xd1\x4e\x69\x6c\x09\xd2\x51\x2e\x31\x25\x82\xa8\xa9\x11\xe7\xb7\xbf\xa0\x4c\x21\x81\x9a\xf6\x87\xf0\x4c\x5e\x0c\xbe\x9a\x2c\xe2\x4d\x4d\x3f\xd1\x21\x90\xb2\x53\xda\xbc\x12\xc6\x3c\xab\xfa\x94"}, +{{0x53,0x11,0xf3,0xc9,0x61,0x01,0xcb,0x8b,0x7a,0xbc,0x62,0x2b,0xb9,0x32,0x6b,0x8f,0x51,0x3c,0x2b,0x16,0xd2,0x94,0xdf,0x79,0x7f,0x56,0xdf,0xd8,0x20,0x3d,0xda,0x27,},{0x23,0x0b,0x70,0x02,0xf5,0x7c,0x79,0xae,0x2e,0x6b,0xfd,0xb8,0xdf,0x30,0xdb,0x3e,0x90,0x07,0x56,0xb5,0x4a,0xf3,0x96,0x8c,0x67,0x0e,0xe2,0xf3,0x2b,0xb1,0x1e,0x0a,},{0x3c,0xbb,0xb2,0x60,0x88,0x70,0xde,0xa1,0xef,0xee,0xbb,0x3f,0xbf,0x68,0x1e,0x27,0x70,0x5c,0x35,0xe4,0xdd,0xee,0xa8,0x6c,0x1b,0x34,0x2a,0x77,0xdc,0x29,0x6b,0x49,0x84,0x19,0x80,0x8e,0xac,0xbc,0x78,0x85,0x56,0x11,0xff,0xbc,0x92,0x65,0xa7,0x47,0x98,0xe5,0x18,0x27,0xe6,0xe5,0xd8,0x11,0x81,0x6d,0x3c,0xa2,0x1e,0x8b,0x9c,0x06,},"\x61\xb1\x5b\xe3\x7c\x4e\xb3\x97\xd9\xe7\x7e\x00\x15\x1a\x28\xed\x3e\x86\xd5\x0a\x95\x52\xbb\x48\x50\xb6\x21\x76\x3f\x01\x2e\x7e\x77\xbb\x5d\xb8\xf3\xdf\x7d\xcf\x76\x9f\x2d\x1d\x46\xd8\xd6\x0b\xae\x40\xc8\xca\x6e\x25\xc6\x41\x0b\x60\x07\x8a\x93\xfd\x05\x90\x21\x14\xbd\x91\x04\x5c\x06\x19\x2c\x70\xc4\x2c\x9f\x41\xf8\x16\x1c\xa4\x65\x64\xeb\xc2\x1a\x4b\xdd\x81\x90\xeb\xa2\xae\xb3\x09\x82\x30\x72\xec\x2c\x02\x00\xce\x64\x98\xf9\xd7\x2b\x37\xb3\xfb\x46\x67\x74\x32\x6d\xf3\x7a\xd8\x80\xd8\xed\xdb\x32\xaf\x67\x3e\x45\xd8\x8e\xec\x49\xb1\x57\x7b\x43\xb8\x63\x91\x11\xc2\xe0\xb9\x41\x87\xd2\xd4\xe0\x17\x3c\x00\x0f\x4c\x37\xbe\x84\x5d\x68\x81\x0b\x78\x89\xff\x2a\x04\x9f\x3f\x9f\x24\x5e\xc7\x0f\x21\xde\xf9\x77\x80\xb6\x11\x40\x0a\x83\xc3\x1a\x79\xd9\x3a\x8e\x98\xb6\x08\xfd\xcf\x24\x88\xb0\x68\xfe\x1a\xe4\x21\x72\x93\xa9\x36\x7b\xb7\x34\xb5\xbc\x7b\xd8\x81\x9b\x37\x7f\x09\x0b\x4f\x8f\xdb\xff\x50\x79\x9c\x76\x88\x0d\x19\x13\x35\x80\xe1\xdd\xfc\x2b\x9b\xaa\xdd\xba\xb3\x4f\xc6\xfd\xc0\x78\x01\x4b\xd1\xff\x73\x9d\xaa\xfe\x54\x76\xf3\xf7\x9d\x4d\xbe\xc2\x16\xfa\x76\x80\xee\x8e\x84\x00\x2d\xcb\x9d\xdb\xc7\xfc\x1e\x1c\x8e\xf4\xf1\xb2\xa2\x08\x1b\x92\x82\x24\x3d\xa6\x15\x3c\x1f\xce\x09\x05\xcf\x35\xf8\x3a\x68\x4c\x01\xb0\x45\x57\xec\x84\xf7\xe9\xa9\x4f\xc2\x88\x2e\x2f\xf1\x9f\xea\x21\xd2\xce\x61\x67\x86\x1c\xe0\x1d\xf8\xb8\xd3\xc3\xe8\xd2\x55\x61\x0b\x7a\xf2\x59\x6c\xd5\xcf\x00\x16\x73\x49\x42\xcc\x71\x4c\x27\x2c\x05\xfd\xa9\xd3\x47\x23\x62\x66\x46\xa4\x61\x30\x18\x2c\xeb\xcf\x17\x9e\xc0\x0a\x6a\x17\x3b\xd8\x57\x7f\xa8\x45\xc4\x4d\x19\xc6\x99\x79\x44\x75\x5f\x2b\x4e\x46\x85\x63\xa7\x5e\x90\x16\x52\x3b\x87\xdd\xac\x3e\xee\x21\xbc\xbc\xa0\x8f\xcc\x29\x54\x6a\x43\xcb\xe0\xd8\xd1\x0a\x0e\x8d\xdc\xba\x17\x2d\x1d\xed\x15\x03\x78\xe1\x8b\x36\x8c\x77\x63\x91\x3e\x4b\x40\x70\x12\xfd\x76\xa8\x72\xd2\xcb\x04\x93\x0b\x8e\x22\xb3\x08\x24\x3d\x4c\xc2\x78\xfd\xf2\xe1\xf9\x40\xae\x89\xac\x89\x1b\x9e\x06\x61\xae\xe5\x53\x93\x7b\xf3\x50\xb4\x07\x07\x0a\x1b\xdf\xc4\xf7\xa3\x78\x7e\xf3\x99\xd2\xca\xf4\xec\x74\x43\x9c\x58\x73\x76\xc7\x7b\xe0\xc3\xde\x53\x9d\x3a\xc2\x60\x89\x76\x5b\x9b\xe1\x0b\x90\x38\x69\x46\x36\xe2\x62\xd7\xba\xa0\xb3\xa8\x94\x1a\x20\x15\x96\x76\x39\xf6\x04\x4c\x67\xe5\x9b\xc8\x1c\xf2\xfb\xa7\x04\xac\x0d\xf4\x8d\xa6\x03\x74\x05\xa8\xe8\xb8\xa7\xce\x3c\x58\xef\x38\xa8\x83\x53\x8b\x24\x7f\xfe\x18\x09\x7a\xf0\x95\x24\x2b\x05\x8b\xdd\x1e\x3e\x24\x5e\xec\xe0\xa7\x1b\x75\xb9\x7d\x52\xf2\x0d\x6d\x51\xbb\x97\x66\xb0\xda\x0f\xc0\x9c\x8a\xc2\xa3\x0f\xb6\xe7\xb3\x2e\xe0\x6d\xad\xf4\x6d\x73\x59\xcc\x06\x6a\xa9\x47\x85\xd8\xa8\x82\xff\x09\x7d\x78\xa8\x6b\xe2\xd4\x56\x00\xdd\x3d\x30\x60\x12\x5f\x01\xc0\x63\xe4\x88\xd5\xc3\xef\xee\x1b\xca\x1e\x58\x51\x64\x55\xff\xca\xec\x1b\x81\xef\x43\x38\x76\xbf\x09\xff\xa5\x1d\x6f\x50\x18\x58\x52\x24\x57\x9c\xb6\x7b\x56\xce\x1c\x21\x6e\xc0\xa8\x83\xe0\x6c\x8e\x15\x63\x42\x1e\xa7\x2b\x0c\x10\xd4\xbb\x31\xe4\x91\xc2\xae\x2f\xe8\x13\x9f\x24\x9e\xc9\x27\xd8\x06\xba\x08\xdb\x52\xb1\xb5\x06\x66\x90\x47\xf0\xc1\x16\xff\x37\xac\x5b\xa6\xcd\xb1\xea\xaf\x33\xfd\xad\xb0\x70\x5c\x79\x9d\x35\xac\x6d\x9c\x80\xda\x90\xc1\x43\x8b\x58\x5f\xfd\x59\x35\x0a\x26\x86\xb1\xec\x35\x16\x6c\xb9\xb6\x9a\xd0\xf5\x65\x86\xaa\x03\x27\x4d\x78\x2e\x3f\x85\x8d\xb6\x4a\xdf\xbf\x04\xd5\x22\x8a\x7b\x1c\x4a\x20\x48\xbb\xcd\xb9\x41\x15\x3a\x43\x6d\x74\x2c\x38\xb5\x8b\x4d\x7d\x13\xc9\xf1\xd6\x0e\x15\x2a\xa2\x79\x23\x49\xa3\xd9\x4e\x7e\x6b\x11\x04\xaa\x1b\x87\x09\x98\xc1\x8d\xd7\x06\x56\x54\xa8\x52\x81\xbb\x6f\x02\x7f\xaa\xd5\x56\xb1\xf5\x32\xe7\xa1\xe2\x2d\x56\x40\x69\x28\x95\x87\xa0\xef\xc9\xc1\x58\x5d\x13\x5f\x31\x23\x3c\x41\xf4\x40\x46\x6e\x71\xfe\x90\x12\xe5\xf9\xa0\xd7\x4a\x72\x82\xee\x39\x2f\xb0\x16\x5d\xb7\x9f\xf1\xd3\x17\x6e\xd0\x8a\xfe\x1d\xaa\x66\xcf\xbf\x43\x05\xae\x16\xac\x17\x92\x33\x43\x99\xf7\x1b\x19\x17\xdd\xec\x27\x0a\xcf\xf6\x65\xea\x05\xd1\x84\xc2\xc5\xcd\x2c\xcd\x90\x2b\x22\xf9\xb7\x19\x5e\x66\xa6\x55\x56\xca\x88\x4b\xa6\xf5\xda\x04\xdc\xd4\x61\x7f\x33\xdc\x2b\x44\xa0\xea\x74\x2a\xeb\x2b\x93\xf3\xa4\x1d\xf7\x95\x7a\x02\x67\x97\xa5\x85\xce\xee\x81\x4b\x19\x75\xf5\x23\xd2\xdb\x5d\xbb\x9b\xe0\xca\x64\x9d\x1d\x45\xdc\xfd"}, +{{0xd2,0x90,0xff,0xd9,0x33,0x95,0xbd,0x5f,0xc5,0x87,0xd1,0xab,0x51,0x18,0x66,0xe7,0x2b,0x37,0x1a,0x17,0x35,0x73,0x2d,0x9d,0x5c,0x6a,0x18,0xdd,0x46,0x5e,0x93,0x63,},{0xfd,0x4a,0xad,0x73,0xb0,0x32,0x46,0x1c,0xa0,0xaa,0xe8,0x71,0xca,0x70,0x16,0x38,0x3b,0x2b,0xe0,0x16,0x90,0x53,0xfd,0xbf,0x6c,0x59,0x14,0xfd,0xd6,0xdd,0x6f,0x92,},{0x21,0x70,0x4d,0x5e,0x62,0x6d,0xcf,0x6a,0x9d,0xcd,0xef,0x93,0x54,0x29,0xeb,0x7f,0xb5,0xb2,0x57,0xee,0xcd,0x7b,0xf7,0x4a,0xcb,0x0c,0xd3,0x0e,0xcf,0xcf,0x60,0x8d,0x0c,0x5b,0x63,0x3a,0x4a,0x8a,0x9b,0xa2,0xcc,0x82,0xa2,0x1e,0x03,0x35,0x5e,0x01,0xd8,0x5d,0xae,0x7e,0xca,0xc8,0x89,0x6d,0xc1,0x5d,0xae,0x04,0x85,0x70,0x71,0x04,},"\xeb\xd9\x00\xbc\x91\x0c\x5e\xcc\x4d\x97\xda\xf7\xcb\x5e\xbb\x54\x91\x50\x0b\x7a\xd1\x16\xe3\x06\x60\x95\x07\x09\xd8\x08\x4b\xb6\x43\x4c\x5b\xea\x4a\x8c\xcc\x1e\xd5\xa8\x01\xbe\xbb\x1a\x11\x78\x78\xc0\x37\x47\x00\x3e\x14\x8e\xd9\x14\x34\x83\x2e\x89\x66\x24\x1a\x7f\xff\x22\xfe\x1d\x6d\x8c\x3c\x3d\xdd\x72\x15\xa1\xef\xaf\x4b\x07\xaf\xee\x1b\x25\x67\x3a\x14\x39\xea\xac\x32\x4e\x89\x5d\x4b\xe8\x39\xe9\x76\xc0\x3a\xc0\x01\x25\x48\x76\x88\x8c\xca\xaf\x39\x12\x72\x7a\x60\x10\x6a\x87\xbe\x69\x24\x7c\x9e\x43\x8c\x31\xfc\xa8\xd9\xc6\x1b\xae\x36\x8c\x83\xe4\x09\x01\xa9\x97\x00\xdf\xf8\x39\xb5\x13\xba\x8d\xc4\x2d\x93\xce\x09\x87\xa2\x33\x34\x70\xa9\xf9\x83\x31\x3f\x91\x98\x86\x59\xda\x54\x03\x9e\x49\x9c\xd1\xaf\x2b\x8f\xa0\xeb\xe7\x50\xe2\x4d\x55\xc2\xa5\xbd\x1a\xde\x3f\x68\x00\x92\x54\x2b\xd1\xbe\x0b\x97\x35\xba\x39\x3a\xd5\x69\x7d\x24\x1e\x8e\x8b\x28\x64\x6d\xb2\x7d\x2f\xb5\xa9\x40\xe8\xfa\xea\xf0\xb6\xc9\xef\xda\x88\x61\x5d\xec\x89\x1c\xe7\x32\x93\x08\x13\xbf\xbb\xd0\xbc\x5f\x82\x10\xab\xe8\x43\xbe\xb5\xe4\xf0\x28\xf4\x9b\xea\x34\xf1\xe5\xb0\x9e\xac\x4c\x66\x62\xc7\x4f\xba\x39\xde\x4a\x96\x02\xa9\x69\x4a\x85\xc7\xc1\x37\x5f\xda\xdf\xda\x6a\x19\x57\xfc\x5b\x59\x87\xa6\x87\xb0\x39\x95\xe5\x16\x97\xa1\xab\x5b\xb6\xcb\x11\xb6\x63\xc1\x37\x2f\xad\xe4\xc0\xac\xa8\xfb\xeb\xb4\xeb\x54\xce\x7c\xe3\x6c\x69\x04\xea\xf6\xea\xb2\xf3\x4f\xac\xd8\xc7\x68\xc8\xd3\x6d\xa2\x39\x7b\x1a\x02\x73\x5a\xea\x72\xcf\xaa\xd0\x39\x34\x10\xdb\x52\x7a\x8a\xb2\x36\xd4\xcd\xab\xdc\x88\x8f\xac\x6f\x18\x21\x48\xb1\x32\x61\x44\x25\xd3\x90\xff\x03\x6e\x54\x85\x5e\x42\x03\xc5\x12\x03\xc1\xf4\x3e\x37\xbb\xf6\xb9\xbf\x27\xf5\xb7\xe7\xc6\x65\x15\x14\x65\x40\x1a\xc3\x2c\xbe\x9e\x33\x50\x53\x5e\xdf\x48\xa7\xbc\x36\x03\xe2\x23\x2e\x93\x8f\x9a\x81\x5a\xc4\xd1\xde\xec\x99\x1e\xf9\x62\x09\x48\x44\x1f\x7a\x2f\x4a\x46\xe2\xc4\x00\xab\x91\x4c\x4b\xe5\x1d\xca\xad\x8e\xd8\x23\x9c\xbb\xe9\x77\xa9\xf0\x9c\x02\x69\x83\x19\xd9\xfe\x2a\x8c\x6e\xb6\x0b\x79\x9f\x29\xae\x76\x59\x97\x0d\x2e\xbd\xff\x3c\x6c\xf7\x09\xbb\xf6\xf4\xbb\x55\xb9\xdf\x4f\x61\xa2\x41\xde\xc1\x44\xb5\x99\x3f\x08\x7e\x78\x4b\x97\xbe\x1e\x53\x60\x8c\x2e\x81\x7c\xe3\xd9\xaa\xf9\x14\xe6\xb7\x23\xf5\xb4\xaf\xff\xd2\xa6\xb9\xfe\x9d\x2d\x73\x91\x5c\x7a\xd1\xff\xb1\x3e\xfc\xb7\x3c\x56\x23\x81\x95\x64\x52\x03\x98\x4c\x99\xaa\xfd\x02\x35\xf7\x3b\x3f\x88\x2e\x07\x39\x39\xbf\x78\x66\x57\x28\x01\x38\xdb\x05\xb8\x6f\xcc\x94\x60\xb3\x85\xef\x45\x59\x20\x4e\xcd\x81\xe2\xf1\x2f\x5f\x06\x2a\xa4\x48\xdc\xcc\x82\xea\x8d\x89\x46\x6d\xd1\xbe\x46\xf8\x2c\x4f\x87\xbf\x0d\xb2\xb8\x78\xac\xbb\x0d\x91\x12\xc8\xdb\x6f\x51\xd3\x5f\x6d\x42\xf7\x49\x85\x6b\x99\xe5\x50\xb6\xc4\x54\xe9\xe8\xbe\x4d\xa1\x75\xf0\xb5\xe8\x6b\xe6\x6c\x97\x9f\xd8\x78\x23\x7e\x57\xf6\x91\xf0\xd2\xac\xd0\x28\xfb\xff\xa5\xb0\x66\x87\x75\x03\x4d\xb1\xf2\x1d\xdb\xe7\x11\x4e\xe3\xdc\x0b\x44\xda\xca\x64\xc5\xa0\x3a\x2f\xee\xae\xab\xeb\x70\x63\xbf\xcc\xcc\x55\x9b\xaf\x27\xf1\xcc\xb2\x20\x2f\xa4\xd1\xb2\xbf\x44\xc0\x4b\x2c\x2f\x81\xf9\x4e\x28\x1b\x1a\x5a\xdc\x85\x0d\xa1\xb9\x47\x9f\xca\xbd\xda\xde\xa5\x6a\x11\x5b\xb5\xf0\x6c\xc0\x16\xf1\x41\xc0\xfc\xb5\xe8\x3a\xb2\x48\xea\xec\x90\x15\x8d\x8b\xe6\x47\xaf\xf1\x2e\x7e\xeb\x5e\x57\xdb\xcc\x29\x3c\xb3\xb6\xaa\xcb\x55\x23\x6d\x4a\x83\x9a\x06\x20\xf4\x76\x23\x87\xdd\x17\x14\xdf\x5c\x13\x5e\x3d\x9d\x68\x24\xf9\x3b\x7c\x90\xd3\xae\x38\xc5\x18\xd6\x07\x12\x0c\x83\x95\x70\x41\x3b\x46\xb8\xcc\xd7\x37\x04\x92\xd8\xae\x5c\x60\x9e\x00\xcf\x82\x51\xe2\xe7\xdf\x81\xe5\xb4\xf9\xc1\x6a\x5a\x53\x9f\x0a\xfc\xce\x41\xbb\x43\x62\xe5\xea\xa5\xf9\x40\xa1\x70\x6f\x4a\xfb\x6b\x14\x43\x2c\x81\xd4\xba\x1a\x33\xd3\x22\xdb\xf1\x06\x45\xab\x63\x73\x7e\xad\xc8\x6f\xe6\xe0\x97\x6f\x76\x33\x97\xfb\x89\x86\x37\x59\x5d\xfd\x36\x93\x47\x92\xd7\x79\xe2\x4c\x2a\x3f\x0b\xac\xf5\x3e\x04\x73\xc5\xfd\xa9\xc6\x12\x84\xe4\x41\x9b\xdc\x0e\xef\x5d\x22\xf4\xd9\xbf\x42\xe8\xc0\x49\x33\xbb\x93\xb5\x3c\x29\x5d\x7a\xc9\x39\x5a\xbb\x6d\xcb\xd7\x42\xb1\xe1\xbc\x3b\x0e\xa4\x43\x4e\xa2\x1b\x8e\xca\x9a\xe6\x82\xd3\x31\x5a\x41\xe9\xc3\xc3\x37\x18\x40\x76\x1d\xc5\x9c\xac\x45\xda\x7e\x38\x13\xe2\x87\x88\xdc\x89\xde\x35\x5b\x5a\xee\x08\x80\x90\xa3\x8d\xd3\x9d\x83\xe5\xe4"}, +{{0xd7,0xfd,0x73,0xd1,0xd2,0x29,0xa6,0x58,0x94,0x42,0x0e,0x4b,0xa7,0x34,0x27,0x0d,0x5a,0x20,0x75,0x83,0x64,0xde,0x89,0x7d,0x85,0x55,0xe2,0x41,0x97,0x45,0x3c,0x19,},{0x3c,0x22,0x77,0x2a,0xec,0x0a,0x0c,0x15,0x59,0x07,0x7f,0x2c,0xfd,0x1f,0x24,0x65,0xd4,0xb4,0x84,0x95,0xc5,0xd0,0x5f,0x1f,0x83,0x7c,0x31,0x84,0x5f,0x34,0xca,0xd1,},{0x40,0x0c,0x35,0x05,0xf1,0xdf,0xa8,0x0d,0xf4,0xb2,0x6d,0xb2,0x4c,0x02,0x7e,0xb8,0x19,0x77,0xf0,0xfb,0x9b,0x5a,0xca,0x52,0x4a,0xd5,0x12,0x00,0xf4,0xbf,0xb1,0x33,0xdb,0x83,0x48,0x23,0x31,0x41,0x95,0xf4,0xed,0xc2,0x92,0xd5,0xf5,0x30,0xd0,0x85,0x56,0xe7,0x80,0x9c,0xaf,0x23,0x39,0x76,0x8a,0xa3,0x80,0x29,0xfd,0xbc,0x28,0x0f,},"\xc9\x22\x58\x59\xd5\x55\xbc\x42\x01\x1a\xf1\xb4\xf1\x49\x98\xe6\xe9\xb0\xa6\x5e\x21\x72\x71\x3e\x96\x83\x80\xfb\x6c\xee\xdd\xa2\x2e\x02\x2c\x51\x30\x30\x31\xd9\x93\x1c\xce\xf2\xf7\xbc\x70\x5c\x9e\x21\x5c\x1d\x08\x9d\x48\x8d\xad\xda\xee\x15\x5c\x93\x9b\x62\x02\xca\x53\xbf\xc7\xf6\xe8\x8e\x15\x29\xd8\x2f\xb4\x5e\x02\xb5\xd0\x5a\x82\xbb\xb9\xdb\x5f\x41\x5c\x58\xba\x8b\xd5\x6c\xff\xd9\x22\x70\xb2\x47\x49\xe5\x6d\x12\xc9\x9a\xe9\x0c\x78\x00\xf5\x4f\x55\x25\x4e\xa4\x2d\xa5\xdc\xfb\xe0\xe1\xd9\x89\xcd\x2f\x68\x97\xe2\x32\xdf\x04\x70\x7b\x34\xaf\x75\xfa\x7f\xec\x33\xe5\x5e\xd5\x6a\xee\x39\xc2\x2b\x04\x5b\xed\xd1\x61\x08\x3b\xc5\x51\x4c\x1f\x81\xca\x90\x7b\x7c\x76\x03\x17\xa7\xfd\x5a\x5a\x02\xa5\xd4\x0e\x2e\x82\x3e\x24\xad\x96\xae\xf6\xda\x8e\xa9\x82\xb5\x16\x1c\xc3\x9d\x84\xaa\x2f\xfd\x95\x44\xc1\x1b\x63\x40\x37\xab\x0a\x1c\x8e\x36\xac\x63\x01\x9d\xa1\xb2\xd9\x95\xcb\x7b\xd3\xd6\x2f\xe5\x74\xde\xab\xcc\xbd\x0d\x3a\xe7\xa5\x6e\x5b\xec\x91\xe4\xba\x3f\x3d\xb8\xbf\xea\x88\xe6\x7d\xa6\x2e\x88\x27\x8a\x6e\x3b\x41\x8d\xce\xea\x05\x89\xf2\x5f\x7d\xd8\xad\x19\xdd\x84\x50\x89\x41\x9b\x47\x2e\xfc\xcc\x87\x9c\x17\x2b\x32\xee\x4a\x4d\xbc\x2e\x6c\x2e\x86\x5b\xb3\xb8\xca\x0a\xdc\xb7\x1f\xdf\x89\xe1\x97\x39\x10\xef\x24\x29\x15\xf3\x3e\x23\x6d\x2f\x7c\x8e\x9f\x1e\xe5\xb0\x7c\x6e\x3c\x25\x36\x0f\x8c\xb1\x46\x0b\xe8\x7d\xb3\x1a\x29\x1d\x4d\xee\x34\x95\x3e\x75\xc6\x75\xbf\x18\x1b\xb7\xa0\xb7\xb5\xc1\xbe\xfd\xc8\x6a\xda\x07\x2a\x48\xf6\xac\x75\x5d\x49\x9b\xd6\x8d\x62\x5d\x85\x14\x52\x5c\xc3\xab\x8f\x54\xce\x15\xa8\x71\x29\x17\x78\xde\x13\x05\xd2\x21\x93\x61\xaa\x30\xe3\x32\xa2\xe0\x69\x07\x7c\x5c\x53\x45\x75\x20\x37\x9d\x8b\x90\xd2\x4b\xd8\xa3\xa7\x70\x0f\xf7\x66\x23\x1c\xb5\x69\x7f\x9a\xce\x52\x1a\x99\xe8\x96\xda\x54\xc4\x07\x93\xbc\x7c\x1f\xb1\x58\x4b\xb1\xc8\x61\x94\xd2\xfb\x7a\x4b\x80\x2f\x30\x88\x5e\x0e\xe8\xaf\x88\xd6\x88\x6e\x3a\x3a\x4d\x4c\x85\x46\x49\xcc\x01\xab\xdf\x35\x31\x9a\x08\x56\xcc\x65\xd0\x92\xa3\x86\xf8\x86\x96\x25\xcd\x0a\xca\xc0\x87\xe9\x35\x17\x90\xcc\xb4\xa8\x65\xf6\x51\xa8\x81\xc3\xeb\xf1\x09\x07\x27\x74\xf9\x40\xf5\xaa\x98\xa2\xa2\xaa\x3d\xd3\x66\x47\xd0\xde\x83\x00\x1a\xa7\xcd\xc0\x31\xcc\x4a\x4d\x75\xdc\x11\xce\x55\x16\x76\xa2\xad\x43\xa3\xf6\xa1\x6a\x4b\xc5\xae\xe8\x0e\x53\x64\x20\x60\x87\x36\x4e\xb8\xb2\xb1\x5f\xb7\x05\x38\x0a\x07\x2d\x7c\x8b\x51\x99\x59\x43\xaa\x76\x2e\x8d\xeb\x4c\x56\x8c\xda\xa1\x41\x1a\xb6\x8f\x28\x48\x9e\x13\x23\xbb\x61\x56\xce\x25\x00\xb0\x6e\x77\x93\xc5\x10\xa3\xde\x29\x15\x08\x40\xbf\xdb\x0b\x2b\x7b\x21\xc2\xbb\x8a\x77\x46\x16\x7c\x92\x9d\xd0\xad\xad\x44\xfe\xd8\xf3\x6e\x83\x81\xb3\x42\x08\x0b\x2a\x7d\x82\xa3\xf8\x1f\xf7\x26\x30\xcb\x78\xdf\x91\xf7\xb6\x5a\x44\xef\xf6\xed\x64\xd4\x8a\xfe\xd1\x09\xdd\x7a\x69\x3a\x1b\xa8\xc3\x7e\x00\x8f\xcb\x15\x7e\x37\x29\x7d\x32\xeb\xa7\x65\xa6\xc7\x19\x3e\x73\xbd\x97\x64\x79\x85\xb1\x60\x38\xc7\x4a\x08\x4a\x8f\x25\x65\x4c\xd8\xcd\x2c\xdd\x27\xff\x17\x33\x4e\x06\xad\xaa\x05\x82\x64\x01\x7a\x3b\x2d\xa7\x8e\x57\x38\xa2\x7e\x35\x0d\x88\x2f\x5f\xae\x19\x92\x78\xd4\xe5\x0b\x8b\xad\xf5\x7c\x21\x41\xdf\xdc\x3c\xff\x99\xdf\x5d\xe8\x6f\xec\x29\x3c\x76\xcb\x94\xb6\xb1\x9b\xa3\x03\x4e\x46\x0f\x84\xc2\x80\xa2\xe6\x41\x2f\xab\x56\x98\xce\x89\x02\x07\xca\xba\xbc\xa0\xa9\x5b\x5a\xd5\x33\xce\x11\x4b\xf7\x1a\x40\x4a\x87\x59\x0d\x35\xfa\x7c\xed\xba\x43\x13\x1c\x4e\xe9\x23\x44\x83\x9f\x25\xcb\xfa\xeb\x12\xae\xeb\xc8\x04\x08\x93\x95\x1a\x34\x6b\xd2\x8f\xdd\x16\x7b\xd2\x0f\x71\xa1\xe5\x9f\xb6\x0d\x55\xe1\xc5\x67\xf4\x78\xf0\x27\xcf\x67\x9a\x37\xd1\xd9\xdb\x86\x7e\x17\xbf\xdd\x60\xb3\x47\xd8\x9d\x32\x26\x39\xd3\x15\xbb\x7a\x2c\x91\x34\xf0\x0e\xa0\x3a\x36\x7f\x30\x5e\xa4\xd6\x0d\xc9\xd5\x67\xcf\x92\x48\x51\xe4\x69\xea\x95\x4e\xd3\xea\x63\xea\x86\x06\xf7\x9f\x07\x73\x39\xbf\xa2\xb5\x1a\xe4\x9b\xaa\x0f\xb2\x53\x77\x82\x1d\x7c\x11\xef\x9a\xd4\xbb\x4c\x0f\xe4\x89\xac\xba\xb0\xef\x00\x0d\x61\x8c\x7a\xf5\xef\xd2\x05\xd6\x85\x99\xfc\xbd\xd9\x5e\x28\xf8\x36\xe0\x91\x6f\x9f\xf5\x48\xd0\xba\x17\xda\x62\x53\x6e\x74\x64\x68\x01\xee\xb6\x12\x2b\xa3\x2c\x41\x07\x3a\xe0\x4e\x42\xc6\xc1\xd5\xd8\xd2\x29\x76\xa5\x62\x26\xdd\xf4\xb6\xac\x95\x45\x5f\xb5\x30\x99\xf2\x02\x15\xb2\xeb\xc9\x07"}, +{{0xfd,0xa7,0xcb,0x08,0x40,0x16,0xba,0x51,0x3c,0x7c,0x4f,0x8f,0x71,0x80,0x48,0x0b,0xb1,0x81,0xe9,0x56,0x95,0xea,0x68,0x73,0x7f,0xa3,0x4a,0x40,0xec,0xbd,0xf3,0xef,},{0xa2,0xde,0x3a,0x0e,0xf9,0x72,0x98,0xfd,0x71,0x61,0x06,0xe2,0xf3,0xf5,0x45,0x13,0x05,0x7a,0x40,0x07,0x2d,0x23,0x4c,0x35,0x18,0x15,0x4c,0x1b,0xd1,0x2d,0xe0,0x37,},{0x33,0x61,0x4b,0x7a,0x94,0xf7,0x5e,0x03,0x65,0x34,0xd7,0x6e,0x30,0x14,0x7e,0xcc,0xdd,0x2a,0x04,0xe0,0x0c,0xd4,0x70,0x4a,0xb6,0xe8,0x07,0xd6,0xa2,0xac,0xc1,0xe1,0xd9,0x63,0xb8,0xee,0xe0,0x81,0x0d,0x41,0x2d,0x9d,0x56,0xe5,0x45,0x56,0x30,0x2b,0x10,0x73,0x0c,0x15,0xab,0xf8,0x9c,0x29,0xa0,0x27,0x30,0x3e,0xa8,0x8a,0xe7,0x01,},"\xc2\x1b\xb3\xf8\xe3\x7b\xef\xa3\x67\xc9\x13\x67\x31\x01\xba\x30\xd3\xb5\xc7\x4b\xd8\xbd\xb0\x9c\xd2\x86\x40\x01\x2d\xb4\x11\x20\xc2\xbc\xc4\x08\x5d\xe2\xa0\xf9\x5c\x92\x15\xdd\xef\x8c\xb5\xfc\x8d\x8b\x12\x51\xb4\x15\x27\xc6\x7d\xfa\xa3\xf9\x5b\xa3\x57\x83\x91\xea\x5a\x66\x29\xa7\x33\x09\x5f\xd0\xa4\x3f\xdb\xa4\x0f\xfe\x26\x0f\xff\x82\xac\xee\x2e\xbe\x98\x0e\x9e\xce\xcc\xfe\x7e\x10\xb2\xed\x8c\x2e\x6b\x41\x0d\x54\x7a\x12\x86\x57\x1d\xf3\xd7\x01\x17\x4e\x57\x9f\xcf\x19\xd3\xbd\x80\x86\xc0\x42\x3f\x37\x11\x77\x89\xf3\x05\xd9\x67\x0a\xd2\x8c\x99\x67\x4f\x52\xcf\x64\x21\x1a\x08\x1d\x0c\x6c\x30\x96\xda\x2c\x71\xbf\x5f\x57\x99\xa7\x91\x0e\x6f\x38\x10\x4a\x37\xa6\x55\x7c\x2d\xae\xf3\x40\x81\x4a\x1f\x83\x0d\x59\x37\x73\xc6\xcf\x48\xd8\x3e\xa0\x72\x94\xb9\x4e\xb0\x80\xb8\x5d\x69\x70\xe2\x8f\x40\x51\xd5\x06\x6d\xb1\x0e\x96\x19\x73\xa6\x26\xa8\x26\xae\xaf\x8a\x06\xec\x0d\x56\x6b\x7e\x0c\x4e\xf6\x0f\x0c\x56\x78\xfc\xbb\x5b\x2a\xc6\x3f\x7b\xed\x06\x44\x8a\x24\x7b\x3d\x42\x7b\x87\x08\x6d\x33\x57\x3f\xb2\xd7\x22\x8c\x5c\x34\xea\x66\x40\xee\xfa\x95\x64\x48\x5a\x79\x63\x8e\x9c\x97\xc0\xaf\x84\xcf\xee\x7c\xe4\xa7\x39\x22\x0c\x84\x29\xe0\x67\x14\x39\x53\xd5\x50\x66\x8d\xad\xc8\x4e\x7b\xed\x9a\xb0\x70\xa5\x94\x33\x90\xc6\x11\xd7\x5b\x1c\xb1\x28\x73\xa3\x7d\x98\x50\x66\x1a\x00\x77\xbf\xa9\xca\x9b\x8b\x26\x37\x66\xc1\x49\xff\x0e\xe4\xb4\xad\xba\x25\xea\xf7\xd7\xf5\x01\xf3\x62\x45\x42\x56\xbc\x12\x69\x37\x8e\xf3\x35\x9a\x8e\xd6\xb9\x60\xb8\x66\x21\xfa\x3b\x61\x3e\xb1\x32\x12\x2f\x49\xf2\xeb\x2c\xeb\x68\x32\xa3\x99\x1e\x96\x1c\xb0\xe7\x8b\x74\x2e\xf4\xd6\x5e\x8d\xe3\x46\x96\x66\xfe\xc7\xc5\xb8\x74\x78\x95\x71\xc5\xc9\x9a\x2c\x02\xa0\x53\xff\x7d\x2f\xc9\x00\x76\xba\xfe\x1f\x26\x7f\xa8\x1a\x39\x90\xf2\x7f\xf1\x4f\x03\x00\x0a\xf0\x0c\x59\x28\x6c\xb9\xbb\x98\xe2\x04\xe9\x01\x90\xae\x2a\x50\xed\xef\x04\x9e\xa9\x2a\x1f\x78\x50\x88\xf9\x4a\xdf\x65\x88\xfb\x43\xbb\x40\xfb\xe2\x32\x42\x35\xcc\x7e\x16\x8b\x80\x26\x4b\x06\x9f\x94\x4f\x50\x36\x92\xc9\x49\x23\x4d\x5b\x76\xbc\xff\xab\xe2\x9f\xf9\x06\x4b\xd7\xcb\xed\x9e\x00\xe5\xb7\xfd\xda\x43\x12\xeb\x80\x14\x65\xf1\x27\xd0\xca\x68\x83\x2a\x7f\x4e\xd0\xea\xed\x8f\x55\x9c\x16\x31\xcd\x4d\x34\xf0\xdc\x41\x4d\x9f\xcf\xe8\x49\xa9\x1e\x25\xf3\xe0\xff\x01\x3a\x8c\xff\xa8\x06\xed\x8e\x93\xd0\x8a\x1e\x5a\x75\x76\x82\xca\x3d\x26\xab\xc8\x69\xc7\x6f\x1c\x79\x00\x7d\x55\x9d\xfe\x67\xe7\x8d\x8a\xf0\x19\x58\x08\xb0\xe7\x71\xc7\x1e\x64\xb5\x71\x6f\xb3\x63\x09\xc2\x50\x25\xfa\xe6\x41\x4c\x28\xbb\xdb\xd4\xde\x59\x7a\x74\x99\x6c\x9d\xa9\x74\x92\x0d\x59\xe6\xf4\xc2\xed\xfe\x11\x0f\xf8\x17\xfd\x48\x0a\x50\x80\x97\x80\x48\x86\x57\x12\x05\x8c\x5f\xe7\xb5\x60\xb1\x2b\x67\xf7\x37\xea\x6e\x2a\xf9\x24\x2c\xf0\x7a\xd0\xa8\xa6\x79\xf2\x64\x30\x04\x6a\xdc\x3e\x70\x66\x4c\xc9\xc0\xee\x5a\xbc\xef\x6d\x72\x6b\x4e\x04\x17\x60\x48\xb7\x95\xbe\x12\x85\x1b\xdb\x74\x00\x3a\x13\x20\x41\x19\xb8\x68\x64\xd6\x53\x5b\xa0\x95\x04\x0a\x85\xd9\x78\x1c\xf4\xf3\x48\x0a\x30\x4e\x22\x7f\x78\x7a\xd5\x38\xe6\x8f\x4b\xab\x01\x41\x79\xe3\x0d\x3f\xde\xf9\xef\xf1\x1b\xcf\x47\x1f\xa3\xa0\xbc\x74\xb5\x57\x6f\x30\x2d\x3a\x6b\x49\x9f\x11\xf2\xef\x32\x6a\xc0\x26\xc9\x8d\xb1\x0e\x27\x41\x41\x3f\x32\x22\x28\xb3\xcf\xf0\xf3\x37\xba\x2f\x29\x4c\x78\xef\x73\xf0\xe8\x77\x87\x8f\x8f\xc7\xff\x6d\x10\xbc\xe6\x6a\xd6\x28\x43\x79\xb8\x0c\xa8\x93\x27\xd4\xdb\x0b\xf1\x4e\x6d\x8f\x01\xb2\x2a\xb2\x02\xb7\x16\xcc\x07\xe3\xc8\x86\x6d\x16\x8a\x50\x94\xba\xc5\xa4\x95\xe7\x38\x68\xee\xdc\x27\x22\x2e\x64\x44\xf8\x3b\xcf\x65\xac\xdc\x3e\xc8\x91\x20\xbb\x50\xe8\xab\xfc\x28\xb7\x8e\x6d\x98\x0c\x77\x5f\x48\x49\xa0\xe8\xca\xda\x80\x24\x0b\xca\x24\x5e\x39\x96\x6e\x89\xa0\x34\x4d\xf8\x36\x3a\x7d\xcc\x81\xb2\x01\xce\x9c\x75\x3a\xd5\x44\xe1\x12\x4e\x21\x02\x0d\x4c\x62\xde\xda\x9e\xd9\xb9\xd1\xf2\xfb\x7c\x54\xca\x7a\xb0\x9f\x38\x3b\xef\x48\xcf\xc6\x84\x8c\x27\x13\x02\xa1\x0f\xa6\x87\xf5\x6e\x00\xe0\xa7\xd0\x93\xc9\x27\xb4\xfd\xd8\xf1\xbe\xdf\x62\x88\xa0\xe3\x02\x84\x8a\x80\x12\xf1\x27\xa7\x9d\x2d\x30\xa0\x6c\xe1\x7d\x94\xaa\x6f\x7f\x8a\x1e\x6e\xb9\xd0\x68\x1c\x37\x74\xf6\x14\xcc\x6d\xbc\xb2\xa8\x13\xf9\x25\xc6\x30\x6a\x63\x05\x72\xa8\x3e\xc1\x09\xd5\xf5\x33\xc0\x58\x4c\xb4\x21\xd9\x19"}, +{{0xa1,0xac,0x48,0xaa,0x5f,0xfa,0x3d,0x80,0x08,0x19,0xd0,0x3b,0x7f,0x62,0xba,0xbf,0x29,0x1f,0x20,0x90,0x4c,0x11,0xa6,0x40,0x0e,0x4f,0x45,0x20,0x5f,0x10,0x3e,0x38,},{0x08,0x54,0xe0,0x34,0x0f,0x81,0x49,0x85,0xfb,0x12,0x2b,0x78,0x72,0x94,0x79,0xe3,0xfd,0xe8,0x55,0xc2,0x11,0xca,0xde,0xae,0x56,0xf0,0xd4,0xdc,0x08,0x28,0xd5,0xfa,},{0xc5,0x7e,0x3c,0x09,0x1e,0xd2,0x4e,0x5e,0x84,0x66,0x5b,0xd9,0xbb,0x10,0x2d,0xb4,0x97,0x97,0xdf,0x90,0x08,0xf0,0x55,0x57,0xfa,0x0d,0x5a,0xd7,0xa2,0x95,0xe5,0xe4,0xd2,0xa4,0x71,0x6b,0x17,0xf8,0xc9,0x1c,0xb1,0x2f,0x5a,0xbf,0xb1,0xaf,0x02,0x7f,0xb0,0x41,0x11,0x99,0xac,0xc5,0xd2,0x85,0xd8,0x42,0xa4,0xb6,0x5b,0xde,0x49,0x02,},"\xd6\xf1\x24\xed\x75\x20\x21\xc1\x09\x26\x97\x2a\x0c\x26\xf3\xb1\x83\x8b\x3c\x7a\xf2\x47\xc1\x80\x09\xa2\x31\xec\xce\x96\x4b\xf6\x69\x86\x37\x83\x3f\x60\x7d\xca\x83\x6f\x8a\x60\x6c\x72\xae\x3c\xb1\x70\x17\x44\x47\xa2\xcc\xe5\x83\xf6\xe2\x44\xdb\xc1\x63\xe2\x15\xb9\x82\x0d\xe7\x49\x6f\xfc\x5b\x70\x50\xc4\x8f\x28\x30\x24\x66\x78\xcb\xa4\xdc\x5c\xaa\x07\xc1\x45\x85\x63\xaa\x2d\x10\xdc\xb7\x77\x0e\xf8\xfe\xde\x02\x7d\xd7\xf2\x0d\xdc\x8c\xc7\x8c\x3a\x2e\x2e\x95\x8b\xd1\x8c\x00\x06\xcf\x8f\xb8\x2d\x44\xe5\x3e\x1d\xa7\xaa\x80\xfd\x10\x06\xf3\xb2\x30\x0c\x9b\x07\x9d\x8a\x66\xf1\xe4\xa3\xf4\x70\x61\xf9\xe2\xf4\x5d\xae\x35\xdc\x29\x52\x04\xb1\x94\x60\xca\x57\x07\xab\x57\xce\x21\x5a\x24\xc1\x0f\xaa\xb3\xfa\x20\xbc\xcd\x10\x1e\x7a\x7d\x70\x07\x75\x99\xf3\xd6\x72\x57\x07\x55\x21\x29\xca\xd7\x57\xd6\x51\x4c\x1b\x28\x99\x7e\x47\x1f\x94\xb0\xfd\xed\x8f\xbb\xd0\x65\xde\xad\x19\x6d\x2c\x07\xd3\xdf\xa7\xb9\xfb\x3b\xae\x76\x80\xf7\x66\x21\x20\x0d\x09\x9e\xeb\xeb\xbe\xa0\xe8\x95\x7d\xf5\xb5\xe2\x04\xca\x3e\x9e\x29\x52\xb8\xa3\x0f\x0a\x13\x1a\x68\x67\xb1\x38\x1e\x39\x4b\x1b\x44\x43\x10\xf0\x76\x32\x66\x56\xcf\x93\x41\x67\x80\x08\xe9\x52\x51\x47\xd8\xd6\x1c\xe9\x3d\x3b\xf5\x39\x00\xca\xb9\x12\x66\x37\x17\xe0\x98\x72\x93\x83\x3d\x19\x02\xd7\xfb\x04\x7b\x99\x7b\x86\x02\x6c\x46\x7d\x7b\xb1\x7c\xf4\x57\x96\x73\x8f\x7a\x77\x4a\xc1\x26\x76\x4e\xd4\xeb\x45\x12\x43\x09\xf4\x58\x62\x60\x17\x6b\xa4\x65\x91\x8d\x48\x33\x0a\x9c\xc1\x8c\x4e\xce\xa0\xdd\xaf\x38\x94\x6a\xcc\x0e\x36\x1d\xd4\x0a\x7e\x91\x33\xce\xb5\x0e\x1c\x31\x7e\xa4\x2b\xd0\x98\x0a\x72\xb8\xba\x3d\x8a\x6c\x76\x93\xdd\x56\x02\xf3\x74\xf2\x66\x4d\xf4\xba\x56\xdf\x01\xe8\x82\xfc\xa4\x2c\xb4\xdb\x62\x1f\x47\x6c\x76\xe1\xea\x9f\xd1\x05\x91\x1a\x74\xb7\x79\x52\xd9\x91\x4a\x5a\xc0\xf9\x8a\x90\x0c\x1b\x2e\x1a\x56\xc4\xea\x85\x18\xa9\xee\x47\xc4\xed\x14\xd0\xbd\x35\xec\xa5\x60\x31\x9c\x8e\xa2\x47\x55\xd7\x1a\x4e\x03\x08\x50\xbc\x4d\xc6\x03\x89\xf3\x25\x80\x40\x21\x20\x4c\xce\xbc\x25\xfe\xdb\xd3\x2e\xdd\x8d\x84\x46\xaa\x23\xce\x56\xa8\x5f\x77\x9e\x85\x8d\x36\xaf\x7c\x07\x3c\x11\x5e\x34\x1f\x41\x2c\x66\x0f\xab\x80\x0f\xe7\x4c\x50\xe7\x14\xee\x08\x6e\x2f\xbc\x8d\x7a\xbb\xf3\xe9\x8f\xb4\x0c\xa2\x7f\x1f\x01\xa9\xaa\xdd\x8c\xc2\x27\x5c\x2d\xd3\xf7\x6e\x4c\x1d\x81\xc4\xb7\x92\xda\xec\xc9\xfe\x66\x04\x49\x41\xb8\xb2\x91\x84\x86\xdd\x4a\xcb\x56\x2a\x7b\x58\xad\x8c\x60\xc2\x1b\x83\xcf\x48\xae\xfa\x72\x56\xa1\xed\x80\x9e\x66\x98\x11\xf4\x84\x36\x49\x70\xbc\x56\x95\x08\x99\x19\xbc\x32\xd2\x8e\xa7\x52\xe8\xe3\x18\xce\xff\x46\x7f\x77\xae\x19\x77\xc5\xff\xd7\x9c\x17\xc2\xda\x8b\xc7\xf8\x23\xdd\x94\x39\x86\x83\x18\x99\x45\xf8\xb7\x92\x38\xa4\xe8\x15\xb1\x42\xb8\x66\xac\xbd\xbc\xb7\xae\xa7\xf1\x43\xff\xfb\x7c\xc2\xb4\xb5\x4b\xbf\x36\x1a\xfd\xa9\x13\xad\x6d\xf1\xe4\x9d\xfd\x6b\x53\x26\x42\xe6\x3f\x55\xd8\x93\xa4\x70\xd4\x03\x70\x66\x5c\xfb\x74\xef\xd3\xf5\x9c\xb0\xff\x60\x06\x17\x4c\xa3\x5f\x53\xb9\x7c\x54\x3e\x08\xaf\x4b\xf5\xbb\x75\xff\x90\x31\x61\x06\x52\xa3\xf6\xf2\xa0\xcf\xe9\x7e\x7a\x52\x1f\x3d\x2a\x28\x91\x14\xde\xd3\x47\x72\xb0\xe4\x98\x17\xbd\xe1\xcb\x92\x4f\xf5\x14\xe2\x86\x6a\x09\xe3\xed\xe0\x78\x2d\x2c\x0c\x98\xe6\x81\x4b\x8c\x1e\x77\x8c\xf8\x30\x63\x48\xc9\x33\xad\xb2\xe4\x72\xdb\xa0\x9d\xb9\x54\xff\x49\x64\x83\x73\x39\x5a\x2f\x01\x81\x95\x8f\xeb\x1e\xa2\x83\x4c\x99\x53\x28\x73\xdb\x5c\x88\xeb\x52\x89\xc7\x7e\x90\x01\x52\x03\xef\x50\x2a\xc8\xe1\xc4\x8f\xa1\xa0\x6d\xaf\xa6\x51\x9d\x52\xda\xe3\xc5\x56\x75\x70\xdd\x24\x34\xe6\x71\x92\x7c\x66\x36\x3f\x78\x31\x56\x89\x3f\x13\x8a\x84\xc7\x56\x64\xb3\x0a\xe4\x27\x51\x12\x73\x6d\x53\xd4\xf3\x99\xdd\xda\x3d\x23\x06\x7c\x07\x3f\x52\x1a\xfb\xa1\xf7\xbe\x58\x55\x13\xc2\xce\xc9\xc8\xf0\x8d\x2a\x22\xc3\xc8\x53\x92\xcd\x2a\xe5\x0f\x39\x28\x25\x1f\x86\xb3\x10\xc6\x9a\x0f\x8c\x4e\x85\x3a\xb3\xf3\xe8\x12\x9b\x05\x66\xef\x4b\xbb\xe8\x0b\x8c\x02\xc8\x92\x8a\x4d\xe5\x6c\x0d\x11\x9a\x45\xbb\xf5\xaf\x18\x08\xd4\x88\x85\x2d\x8a\x45\xbe\xb0\xd6\x83\x24\x8a\x4d\x65\xde\x15\x26\xb3\xd1\xd2\xff\xc1\xf2\x22\x15\xb6\x08\x46\x8c\xbc\x3b\xd3\x95\x14\xb3\x97\xfc\x0d\xb0\xf1\x13\xdb\xe6\xfc\xe4\x65\x2e\x82\xff\x89\x5b\x2b\x43\x87\xe0\x41\xd7\xe4\xe7\xbd\xe4\x69\x47\x69\x66\x5e\x81"}, +{{0xf5,0xe5,0x76,0x7c,0xf1,0x53,0x31,0x95,0x17,0x63,0x0f,0x22,0x68,0x76,0xb8,0x6c,0x81,0x60,0xcc,0x58,0x3b,0xc0,0x13,0x74,0x4c,0x6b,0xf2,0x55,0xf5,0xcc,0x0e,0xe5,},{0x27,0x81,0x17,0xfc,0x14,0x4c,0x72,0x34,0x0f,0x67,0xd0,0xf2,0x31,0x6e,0x83,0x86,0xce,0xff,0xbf,0x2b,0x24,0x28,0xc9,0xc5,0x1f,0xef,0x7c,0x59,0x7f,0x1d,0x42,0x6e,},{0x0a,0xab,0x4c,0x90,0x05,0x01,0xb3,0xe2,0x4d,0x7c,0xdf,0x46,0x63,0x32,0x6a,0x3a,0x87,0xdf,0x5e,0x48,0x43,0xb2,0xcb,0xdb,0x67,0xcb,0xf6,0xe4,0x60,0xfe,0xc3,0x50,0xaa,0x53,0x71,0xb1,0x50,0x8f,0x9f,0x45,0x28,0xec,0xea,0x23,0xc4,0x36,0xd9,0x4b,0x5e,0x8f,0xcd,0x4f,0x68,0x1e,0x30,0xa6,0xac,0x00,0xa9,0x70,0x4a,0x18,0x8a,0x03,},"\x08\xb8\xb2\xb7\x33\x42\x42\x43\x76\x0f\xe4\x26\xa4\xb5\x49\x08\x63\x21\x10\xa6\x6c\x2f\x65\x91\xea\xbd\x33\x45\xe3\xe4\xeb\x98\xfa\x6e\x26\x4b\xf0\x9e\xfe\x12\xee\x50\xf8\xf5\x4e\x9f\x77\xb1\xe3\x55\xf6\xc5\x05\x44\xe2\x3f\xb1\x43\x3d\xdf\x73\xbe\x84\xd8\x79\xde\x7c\x00\x46\xdc\x49\x96\xd9\xe7\x73\xf4\xbc\x9e\xfe\x57\x38\x82\x9a\xdb\x26\xc8\x1b\x37\xc9\x3a\x1b\x27\x0b\x20\x32\x9d\x65\x86\x75\xfc\x6e\xa5\x34\xe0\x81\x0a\x44\x32\x82\x6b\xf5\x8c\x94\x1e\xfb\x65\xd5\x7a\x33\x8b\xbd\x2e\x26\x64\x0f\x89\xff\xbc\x1a\x85\x8e\xfc\xb8\x55\x0e\xe3\xa5\xe1\x99\x8b\xd1\x77\xe9\x3a\x73\x63\xc3\x44\xfe\x6b\x19\x9e\xe5\xd0\x2e\x82\xd5\x22\xc4\xfe\xba\x15\x45\x2f\x80\x28\x8a\x82\x1a\x57\x91\x16\xec\x6d\xad\x2b\x3b\x31\x0d\xa9\x03\x40\x1a\xa6\x21\x00\xab\x5d\x1a\x36\x55\x3e\x06\x20\x3b\x33\x89\x0c\xc9\xb8\x32\xf7\x9e\xf8\x05\x60\xcc\xb9\xa3\x9c\xe7\x67\x96\x7e\xd6\x28\xc6\xad\x57\x3c\xb1\x16\xdb\xef\xef\xd7\x54\x99\xda\x96\xbd\x68\xa8\xa9\x7b\x92\x8a\x8b\xbc\x10\x3b\x66\x21\xfc\xde\x2b\xec\xa1\x23\x1d\x20\x6b\xe6\xcd\x9e\xc7\xaf\xf6\xf6\xc9\x4f\xcd\x72\x04\xed\x34\x55\xc6\x8c\x83\xf4\xa4\x1d\xa4\xaf\x2b\x74\xef\x5c\x53\xf1\xd8\xac\x70\xbd\xcb\x7e\xd1\x85\xce\x81\xbd\x84\x35\x9d\x44\x25\x4d\x95\x62\x9e\x98\x55\xa9\x4a\x7c\x19\x58\xd1\xf8\xad\xa5\xd0\x53\x2e\xd8\xa5\xaa\x3f\xb2\xd1\x7b\xa7\x0e\xb6\x24\x8e\x59\x4e\x1a\x22\x97\xac\xbb\xb3\x9d\x50\x2f\x1a\x8c\x6e\xb6\xf1\xce\x22\xb3\xde\x1a\x1f\x40\xcc\x24\x55\x41\x19\xa8\x31\xa9\xaa\xd6\x07\x9c\xad\x88\x42\x5d\xe6\xbd\xe1\xa9\x18\x7e\xbb\x60\x92\xcf\x67\xbf\x2b\x13\xfd\x65\xf2\x70\x88\xd7\x8b\x7e\x88\x3c\x87\x59\xd2\xc4\xf5\xc6\x5a\xdb\x75\x53\x87\x8a\xd5\x75\xf9\xfa\xd8\x78\xe8\x0a\x0c\x9b\xa6\x3b\xcb\xcc\x27\x32\xe6\x94\x85\xbb\xc9\xc9\x0b\xfb\xd6\x24\x81\xd9\x08\x9b\xec\xcf\x80\xcf\xe2\xdf\x16\xa2\xcf\x65\xbd\x92\xdd\x59\x7b\x07\x07\xe0\x91\x7a\xf4\x8b\xbb\x75\xfe\xd4\x13\xd2\x38\xf5\x55\x5a\x7a\x56\x9d\x80\xc3\x41\x4a\x8d\x08\x59\xdc\x65\xa4\x61\x28\xba\xb2\x7a\xf8\x7a\x71\x31\x4f\x31\x8c\x78\x2b\x23\xeb\xfe\x80\x8b\x82\xb0\xce\x26\x40\x1d\x2e\x22\xf0\x4d\x83\xd1\x25\x5d\xc5\x1a\xdd\xd3\xb7\x5a\x2b\x1a\xe0\x78\x45\x04\xdf\x54\x3a\xf8\x96\x9b\xe3\xea\x70\x82\xff\x7f\xc9\x88\x8c\x14\x4d\xa2\xaf\x58\x42\x9e\xc9\x60\x31\xdb\xca\xd3\xda\xd9\xaf\x0d\xcb\xaa\xaf\x26\x8c\xb8\xfc\xff\xea\xd9\x4f\x3c\x7c\xa4\x95\xe0\x56\xa9\xb4\x7a\xcd\xb7\x51\xfb\x73\xe6\x66\xc6\xc6\x55\xad\xe8\x29\x72\x97\xd0\x7a\xd1\xba\x5e\x43\xf1\xbc\xa3\x23\x01\x65\x13\x39\xe2\x29\x04\xcc\x8c\x42\xf5\x8c\x30\xc0\x4a\xaf\xdb\x03\x8d\xda\x08\x47\xdd\x98\x8d\xcd\xa6\xf3\xbf\xd1\x5c\x4b\x4c\x45\x25\x00\x4a\xa0\x6e\xef\xf8\xca\x61\x78\x3a\xac\xec\x57\xfb\x3d\x1f\x92\xb0\xfe\x2f\xd1\xa8\x5f\x67\x24\x51\x7b\x65\xe6\x14\xad\x68\x08\xd6\xf6\xee\x34\xdf\xf7\x31\x0f\xdc\x82\xae\xbf\xd9\x04\xb0\x1e\x1d\xc5\x4b\x29\x27\x09\x4b\x2d\xb6\x8d\x6f\x90\x3b\x68\x40\x1a\xde\xbf\x5a\x7e\x08\xd7\x8f\xf4\xef\x5d\x63\x65\x3a\x65\x04\x0c\xf9\xbf\xd4\xac\xa7\x98\x4a\x74\xd3\x71\x45\x98\x67\x80\xfc\x0b\x16\xac\x45\x16\x49\xde\x61\x88\xa7\xdb\xdf\x19\x1f\x64\xb5\xfc\x5e\x2a\xb4\x7b\x57\xf7\xf7\x27\x6c\xd4\x19\xc1\x7a\x3c\xa8\xe1\xb9\x39\xae\x49\xe4\x88\xac\xba\x6b\x96\x56\x10\xb5\x48\x01\x09\xc8\xb1\x7b\x80\xe1\xb7\xb7\x50\xdf\xc7\x59\x8d\x5d\x50\x11\xfd\x2d\xcc\x56\x00\xa3\x2e\xf5\xb5\x2a\x1e\xcc\x82\x0e\x30\x8a\xa3\x42\x72\x1a\xac\x09\x43\xbf\x66\x86\xb6\x4b\x25\x79\x37\x65\x04\xcc\xc4\x93\xd9\x7e\x6a\xed\x3f\xb0\xf9\xcd\x71\xa4\x3d\xd4\x97\xf0\x1f\x17\xc0\xe2\xcb\x37\x97\xaa\x2a\x2f\x25\x66\x56\x16\x8e\x6c\x49\x6a\xfc\x5f\xb9\x32\x46\xf6\xb1\x11\x63\x98\xa3\x46\xf1\xa6\x41\xf3\xb0\x41\xe9\x89\xf7\x91\x4f\x90\xcc\x2c\x7f\xff\x35\x78\x76\xe5\x06\xb5\x0d\x33\x4b\xa7\x7c\x22\x5b\xc3\x07\xba\x53\x71\x52\xf3\xf1\x61\x0e\x4e\xaf\xe5\x95\xf6\xd9\xd9\x0d\x11\xfa\xa9\x33\xa1\x5e\xf1\x36\x95\x46\x86\x8a\x7f\x3a\x45\xa9\x67\x68\xd4\x0f\xd9\xd0\x34\x12\xc0\x91\xc6\x31\x5c\xf4\xfd\xe7\xcb\x68\x60\x69\x37\x38\x0d\xb2\xea\xaa\x70\x7b\x4c\x41\x85\xc3\x2e\xdd\xcd\xd3\x06\x70\x5e\x4d\xc1\xff\xc8\x72\xee\xee\x47\x5a\x64\xdf\xac\x86\xab\xa4\x1c\x06\x18\x98\x3f\x87\x41\xc5\xef\x68\xd3\xa1\x01\xe8\xa3\xb8\xca\xc6\x0c\x90\x5c\x15\xfc\x91\x08\x40\xb9\x4c\x00\xa0\xb9\xd0"}, +}; + +static const unsigned char non_canonical_p[32] = { + 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; + +static void add_l(unsigned char * const S) +{ + static const unsigned char l[32] = + { 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, + 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 }; + + sodium_add(S, l, sizeof l); +} + +int main(void) +{ + crypto_sign_state st; + unsigned char extracted_seed[crypto_sign_ed25519_SEEDBYTES]; + unsigned char extracted_pk[crypto_sign_ed25519_PUBLICKEYBYTES]; + unsigned char sig[crypto_sign_BYTES]; + unsigned char sm[1024 + crypto_sign_BYTES]; + unsigned char m[1024]; + unsigned char skpk[crypto_sign_SECRETKEYBYTES]; + unsigned char pk[crypto_sign_PUBLICKEYBYTES]; + unsigned char sk[crypto_sign_SECRETKEYBYTES]; + char sig_hex[crypto_sign_BYTES * 2 + 1]; + char pk_hex[crypto_sign_PUBLICKEYBYTES * 2 + 1]; + char sk_hex[crypto_sign_SECRETKEYBYTES * 2 + 1]; + unsigned long long siglen; + unsigned long long smlen; + unsigned long long mlen; + unsigned int i; + unsigned int j; + + memset(sig, 0, sizeof sig); + for (i = 0U; i < (sizeof test_data) / (sizeof test_data[0]); i++) { +#ifdef BROWSER_TESTS + if (i % 128U != 127U) { + continue; + } +#endif + memcpy(skpk, test_data[i].sk, crypto_sign_SEEDBYTES); + memcpy(skpk + crypto_sign_SEEDBYTES, test_data[i].pk, + crypto_sign_PUBLICKEYBYTES); + if (crypto_sign(sm, &smlen, (const unsigned char *)test_data[i].m, i, + skpk) != 0) { + printf("crypto_sign() failure: [%u]\n", i); + continue; + } + if (memcmp(test_data[i].sig, sm, crypto_sign_BYTES) != 0) { + printf("signature failure: [%u]\n", i); + continue; + } + if (crypto_sign_open(m, NULL, sm, smlen, test_data[i].pk) != 0) { + printf("crypto_sign_open() failure: [%u]\n", i); + continue; + } + add_l(sm + 32); +#ifndef ED25519_COMPAT + if (crypto_sign_open(m, &mlen, sm, smlen, test_data[i].pk) != -1) { + printf("crypto_sign_open(): signature [%u] is malleable\n", i); + continue; + } +#else + if (crypto_sign_open(m, &mlen, sm, smlen, test_data[i].pk) != 0) { + printf("crypto_sign_open(): signature [%u] is not malleable\n", i); + continue; + } +#endif + if (memcmp(test_data[i].m, m, (size_t)mlen) != 0) { + printf("message verification failure: [%u]\n", i); + continue; + } + sm[i + crypto_sign_BYTES - 1U]++; + if (crypto_sign_open(m, &mlen, sm, smlen, test_data[i].pk) == 0) { + printf("message can be forged: [%u]\n", i); + continue; + } + if (crypto_sign_open(m, &mlen, sm, i % crypto_sign_BYTES, + test_data[i].pk) == 0) { + printf("short signed message verifies: [%u]\n", + i % crypto_sign_BYTES); + continue; + } + if (crypto_sign_detached(sig, &siglen, + (const unsigned char *)test_data[i].m, i, skpk) + != 0) { + printf("detached signature failed: [%u]\n", i); + continue; + } + if (siglen == 0U || siglen > crypto_sign_BYTES) { + printf("detached signature has an unexpected length: [%u]\n", i); + continue; + } + if (memcmp(test_data[i].sig, sig, crypto_sign_BYTES) != 0) { + printf("detached signature failure: [%u]\n", i); + continue; + } + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, test_data[i].pk) != 0) { + printf("detached signature verification failed: [%u]\n", i); + continue; + } + } + printf("%u tests\n", i); + + i--; + + memcpy(sm, test_data[i].m, i); + if (crypto_sign(sm, &smlen, sm, i, skpk) != 0) { + printf("crypto_sign() with overlap failed\n"); + } + if (crypto_sign_open(sm, &mlen, sm, smlen, test_data[i].pk) != 0) { + printf("crypto_sign_open() with overlap failed\n"); + } + if (memcmp(test_data[i].m, sm, (size_t)mlen) != 0) { + printf("crypto_sign_open() with overlap failed (content)\n"); + } + + for (j = 1U; j < 8U; j++) { + sig[63] ^= (j << 5); + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, test_data[i].pk) != -1) { + printf("detached signature verification should have failed\n"); + continue; + } + sig[63] ^= (j << 5); + } + +#ifndef ED25519_COMPAT + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, non_canonical_p) != -1) { + printf("detached signature verification with non-canonical key should have failed\n"); + } +#endif + memset(pk, 0, sizeof pk); + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, pk) != -1) { + printf("detached signature verification should have failed\n"); + } + + memset(sig, 0xff, 32); + sig[0] = 0xdb; + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, pk) != -1) { + printf("detached signature verification should have failed\n"); + } + assert(crypto_sign_detached(sig, NULL, + (const unsigned char *)test_data[i].m, i, skpk) == 0); + + sodium_hex2bin(pk, crypto_sign_PUBLICKEYBYTES, + "3eee494fb9eac773144e34b0c755affaf33ea782c0722e5ea8b150e61209ab36", + crypto_sign_PUBLICKEYBYTES * 2, NULL, NULL, NULL); + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, pk) != -1) { + printf("signature with an invalid public key should have failed\n"); + } + + sodium_hex2bin(pk, crypto_sign_PUBLICKEYBYTES, + "0200000000000000000000000000000000000000000000000000000000000000", + crypto_sign_PUBLICKEYBYTES * 2, NULL, NULL, NULL); + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, pk) != -1) { + printf("signature with an invalid public key should have failed\n"); + } + + sodium_hex2bin(pk, crypto_sign_PUBLICKEYBYTES, + "0500000000000000000000000000000000000000000000000000000000000000", + crypto_sign_PUBLICKEYBYTES * 2, NULL, NULL, NULL); + if (crypto_sign_verify_detached(sig, + (const unsigned char *)test_data[i].m, + i, pk) != -1) { + printf("signature with an invalid public key should have failed\n"); + } + + if (crypto_sign_seed_keypair(pk, sk, keypair_seed) != 0) { + printf("crypto_sign_seed_keypair() failure\n"); + return -1; + } + crypto_sign_init(&st); + crypto_sign_update(&st, (const unsigned char *)test_data[i].m, i); + crypto_sign_final_create(&st, sig, NULL, sk); + sodium_bin2hex(sig_hex, sizeof sig_hex, sig, sizeof sig); + printf("ed25519ph sig: [%s]\n", sig_hex); + + crypto_sign_init(&st); + crypto_sign_update(&st, (const unsigned char *)test_data[i].m, i); + if (crypto_sign_final_verify(&st, sig, pk) != 0) { + printf("ed5519ph verification failed\n"); + } + crypto_sign_init(&st); + crypto_sign_update(&st, (const unsigned char *)test_data[i].m, 0); + crypto_sign_update(&st, (const unsigned char *)test_data[i].m, i / 2); + crypto_sign_update(&st, ((const unsigned char *)test_data[i].m) + i / 2, + i - i / 2); + if (crypto_sign_final_verify(&st, sig, pk) != 0) { + printf("ed5519ph verification failed\n"); + } + sig[0]++; + if (crypto_sign_final_verify(&st, sig, pk) != -1) { + printf("ed5519ph verification could be forged\n"); + } + sig[0]--; + pk[0]++; + if (crypto_sign_final_verify(&st, sig, pk) != -1) { + printf("ed5519ph verification could be forged\n"); + } + sodium_hex2bin(sk, crypto_sign_SECRETKEYBYTES, + "833fe62409237b9d62ec77587520911e9a759cec1d19755b7da901b96dca3d42", + 2 * crypto_sign_SECRETKEYBYTES / 2, NULL, NULL, NULL); + sodium_hex2bin(pk, crypto_sign_PUBLICKEYBYTES, + "ec172b93ad5e563bf4932c70e1245034c35467ef2efd4d64ebf819683467e2bf", + 2 * crypto_sign_PUBLICKEYBYTES, NULL, NULL, NULL); + memcpy(sk + crypto_sign_SECRETKEYBYTES - crypto_sign_PUBLICKEYBYTES, + pk, crypto_sign_PUBLICKEYBYTES); + crypto_sign_init(&st); + crypto_sign_update(&st, (const unsigned char *) "abc", 3); + crypto_sign_final_create(&st, sig, &siglen, sk); + if (siglen == 0U || siglen > crypto_sign_BYTES) { + printf("ed25519ph signature has an unexpected length\n"); + } + sodium_bin2hex(sig_hex, sizeof sig_hex, sig, sizeof sig); + printf("ed25519ph tv sig: [%s]\n", sig_hex); + + crypto_sign_init(&st); + crypto_sign_update(&st, (const unsigned char *) "abc", 3); + if (crypto_sign_final_verify(&st, sig, pk) != 0) { + printf("ed25519ph verification failed\n"); + } + if (crypto_sign_keypair(pk, sk) != 0) { + printf("crypto_sign_keypair() failure\n"); + } + if (crypto_sign_seed_keypair(pk, sk, keypair_seed) != 0) { + printf("crypto_sign_seed_keypair() failure\n"); + return -1; + } + crypto_sign_ed25519_sk_to_seed(extracted_seed, sk); + if (memcmp(extracted_seed, keypair_seed, crypto_sign_ed25519_SEEDBYTES) + != 0) { + printf("crypto_sign_ed25519_sk_to_seed() failure\n"); + } + crypto_sign_ed25519_sk_to_pk(extracted_pk, sk); + if (memcmp(extracted_pk, pk, crypto_sign_ed25519_PUBLICKEYBYTES) != 0) { + printf("crypto_sign_ed25519_sk_to_pk() failure\n"); + } + sodium_bin2hex(pk_hex, sizeof pk_hex, pk, sizeof pk); + sodium_bin2hex(sk_hex, sizeof sk_hex, sk, sizeof sk); + + printf("pk: [%s]\n", pk_hex); + printf("sk: [%s]\n", sk_hex); + + assert(crypto_sign_bytes() > 0U); + assert(crypto_sign_seedbytes() > 0U); + assert(crypto_sign_publickeybytes() > 0U); + assert(crypto_sign_secretkeybytes() > 0U); + assert(crypto_sign_messagebytes_max() > 0U); + assert(strcmp(crypto_sign_primitive(), "ed25519") == 0); + assert(crypto_sign_bytes() == crypto_sign_ed25519_bytes()); + assert(crypto_sign_seedbytes() == crypto_sign_ed25519_seedbytes()); + assert(crypto_sign_messagebytes_max() == crypto_sign_ed25519_messagebytes_max()); + assert(crypto_sign_publickeybytes() + == crypto_sign_ed25519_publickeybytes()); + assert(crypto_sign_secretkeybytes() + == crypto_sign_ed25519_secretkeybytes()); + assert(crypto_sign_statebytes() == crypto_sign_ed25519ph_statebytes()); + +#ifdef ED25519_NONDETERMINISTIC + exit(0); +#endif + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/sign.exp b/components/espressif__libsodium/libsodium/test/default/sign.exp new file mode 100644 index 0000000..1c4285f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sign.exp @@ -0,0 +1,5 @@ +1024 tests +ed25519ph sig: [10c5411e40bd10170fb890d4dfdb6d338c8cb11d2764a216ee54df10977dcdefd8ff755b1eeb3f16fce80e40e7aafc99083dbff43d5031baf04157b48423960d] +ed25519ph tv sig: [98a70222f0b8121aa9d30f813d683f809e462b469c7ff87639499bb94e6dae4131f85042463c2a355a2003d062adf5aaa10b8c61e636062aaad11c2a26083406] +pk: [b5076a8474a832daee4dd5b4040983b6623b5f344aca57d4d6ee4baf3f259e6e] +sk: [421151a459faeade3d247115f94aedae42318124095afabe4d1451a559faedeeb5076a8474a832daee4dd5b4040983b6623b5f344aca57d4d6ee4baf3f259e6e] diff --git a/components/espressif__libsodium/libsodium/test/default/siphashx24.c b/components/espressif__libsodium/libsodium/test/default/siphashx24.c new file mode 100644 index 0000000..8ece23e --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/siphashx24.c @@ -0,0 +1,33 @@ + +#define TEST_NAME "siphashx24" +#include "cmptest.h" + +#define MAXLEN 64 + +int +main(void) +{ + unsigned char in[MAXLEN]; + unsigned char out[crypto_shorthash_siphashx24_BYTES]; + unsigned char k[crypto_shorthash_siphashx24_KEYBYTES]; + size_t i; + size_t j; + + for (i = 0; i < crypto_shorthash_siphashx24_KEYBYTES; ++i) { + k[i] = (unsigned char) i; + } + for (i = 0; i < MAXLEN; ++i) { + in[i] = (unsigned char) i; + crypto_shorthash_siphashx24(out, in, (unsigned long long) i, k); + for (j = 0; j < crypto_shorthash_siphashx24_BYTES; ++j) { + printf("%02x", (unsigned int) out[j]); + } + printf("\n"); + } + assert(crypto_shorthash_siphashx24_KEYBYTES >= crypto_shorthash_siphash24_KEYBYTES); + assert(crypto_shorthash_siphashx24_BYTES > crypto_shorthash_siphash24_BYTES); + assert(crypto_shorthash_siphashx24_bytes() == crypto_shorthash_siphashx24_BYTES); + assert(crypto_shorthash_siphashx24_keybytes() == crypto_shorthash_siphashx24_KEYBYTES); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/siphashx24.exp b/components/espressif__libsodium/libsodium/test/default/siphashx24.exp new file mode 100644 index 0000000..7218445 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/siphashx24.exp @@ -0,0 +1,64 @@ +a3817f04ba25a8e66df67214c7550293 +da87c1d86b99af44347659119b22fc45 +8177228da4a45dc7fca38bdef60affe4 +9c70b60c5267a94e5f33b6b02985ed51 +f88164c12d9c8faf7d0f6e7c7bcd5579 +1368875980776f8854527a07690e9627 +14eeca338b208613485ea0308fd7a15e +a1f1ebbed8dbc153c0b84aa61ff08239 +3b62a9ba6258f5610f83e264f31497b4 +264499060ad9baabc47f8b02bb6d71ed +00110dc378146956c95447d3f3d0fbba +0151c568386b6677a2b4dc6f81e5dc18 +d626b266905ef35882634df68532c125 +9869e247e9c08b10d029934fc4b952f7 +31fcefac66d7de9c7ec7485fe4494902 +5493e99933b0a8117e08ec0f97cfc3d9 +6ee2a4ca67b054bbfd3315bf85230577 +473d06e8738db89854c066c47ae47740 +a426e5e423bf4885294da481feaef723 +78017731cf65fab074d5208952512eb1 +9e25fc833f2290733e9344a5e83839eb +568e495abe525a218a2214cd3e071d12 +4a29b54552d16b9a469c10528eff0aae +c9d184ddd5a9f5e0cf8ce29a9abf691c +2db479ae78bd50d8882a8a178a6132ad +8ece5f042d5e447b5051b9eacb8d8f6f +9c0b53b4b3c307e87eaee08678141f66 +abf248af69a6eae4bfd3eb2f129eeb94 +0664da1668574b88b935f3027358aef4 +aa4b9dc4bf337de90cd4fd3c467c6ab7 +ea5c7f471faf6bde2b1ad7d4686d2287 +2939b0183223fafc1723de4f52c43d35 +7c3956ca5eeafc3e363e9d556546eb68 +77c6077146f01c32b6b69d5f4ea9ffcf +37a6986cb8847edf0925f0f1309b54de +a705f0e69da9a8f907241a2e923c8cc8 +3dc47d1f29c448461e9e76ed904f6711 +0d62bf01e6fc0e1a0d3c4751c5d3692b +8c03468bca7c669ee4fd5e084bbee7b5 +528a5bb93baf2c9c4473cce5d0d22bd9 +df6a301e95c95dad97ae0cc8c6913bd8 +801189902c857f39e73591285e70b6db +e617346ac9c231bb3650ae34ccca0c5b +27d93437efb721aa401821dcec5adf89 +89237d9ded9c5e78d8b1c9b166cc7342 +4a6d8091bf5e7d651189fa94a250b14c +0e33f96055e7ae893ffc0e3dcf492902 +e61c432b720b19d18ec8d84bdc63151b +f7e5aef549f782cf379055a608269b16 +438d030fd0b7a54fa837f2ad201a6403 +a590d3ee4fbf04e3247e0d27f286423f +5fe2c1a172fe93c4b15cd37caef9f538 +2c97325cbd06b36eb2133dd08b3a017c +92c814227a6bca949ff0659f002ad39e +dce850110bd8328cfbd50841d6911d87 +67f14984c7da791248e32bb5922583da +1938f2cf72d54ee97e94166fa91d2a36 +74481e9646ed49fe0f6224301604698e +57fca5de98a9d6d8006438d0583d8a1d +9fecde1cefdc1cbed4763674d9575359 +e3040c00eb28f15366ca73cbd872e740 +7697009a6a831dfecca91c5993670f7a +5853542321f567a005d547a4f04759bd +5150d1772f50834a503e069a973fbd7c diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_core.c b/components/espressif__libsodium/libsodium/test/default/sodium_core.c new file mode 100644 index 0000000..4bcdb33 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_core.c @@ -0,0 +1,43 @@ + +#define TEST_NAME "sodium_core" +#include "cmptest.h" + +static void +misuse_handler(void) +{ + printf("misuse_handler()\n"); + exit(0); +} + +int +main(void) +{ + sodium_set_misuse_handler(NULL); + sodium_set_misuse_handler(misuse_handler); + sodium_set_misuse_handler(NULL); + + assert(sodium_init() == 1); + + (void) sodium_runtime_has_neon(); + (void) sodium_runtime_has_armcrypto(); + (void) sodium_runtime_has_sse2(); + (void) sodium_runtime_has_sse3(); + (void) sodium_runtime_has_ssse3(); + (void) sodium_runtime_has_sse41(); + (void) sodium_runtime_has_avx(); + (void) sodium_runtime_has_avx2(); + (void) sodium_runtime_has_avx512f(); + (void) sodium_runtime_has_pclmul(); + (void) sodium_runtime_has_aesni(); + (void) sodium_runtime_has_rdrand(); + + sodium_set_misuse_handler(misuse_handler); +#if defined(__EMSCRIPTEN__) || defined(__wasm__) || defined(BENCHMARKS) + printf("misuse_handler()\n"); +#else + sodium_misuse(); + printf("Misuse handler returned\n"); +#endif + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_core.exp b/components/espressif__libsodium/libsodium/test/default/sodium_core.exp new file mode 100644 index 0000000..68a17b0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_core.exp @@ -0,0 +1 @@ +misuse_handler() diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_utils.c b/components/espressif__libsodium/libsodium/test/default/sodium_utils.c new file mode 100644 index 0000000..844e16c --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_utils.c @@ -0,0 +1,224 @@ +#define TEST_NAME "sodium_utils" +#include "cmptest.h" + +int +main(void) +{ + unsigned char buf_add[1000]; + unsigned char buf1[1000]; + unsigned char buf2[1000]; + unsigned char buf1_rev[1000]; + unsigned char buf2_rev[1000]; + unsigned char nonce[24]; + char nonce_hex[49]; + unsigned char *bin_padded; + size_t bin_len, bin_len2; + size_t bin_padded_len; + size_t bin_padded_maxlen; + size_t blocksize; + unsigned int i; + unsigned int j; + + randombytes_buf(buf1, sizeof buf1); + memcpy(buf2, buf1, sizeof buf2); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + sodium_memzero(buf1, 0U); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + sodium_memzero(buf1, sizeof buf1 / 2); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + printf("%d\n", sodium_memcmp(buf1, buf2, 0U)); + sodium_memzero(buf2, sizeof buf2 / 2); + printf("%d\n", sodium_memcmp(buf1, buf2, sizeof buf1)); + printf("%d\n", sodium_memcmp(buf1, guard_page, 0U)); + printf("%d\n", sodium_memcmp(guard_page, buf2, 0U)); + printf("%d\n", sodium_memcmp(guard_page, guard_page, 0U)); + sodium_memzero(guard_page, 0U); + + memset(nonce, 0, sizeof nonce); + sodium_increment(nonce, sizeof nonce); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + memset(nonce, 255, sizeof nonce); + sodium_increment(nonce, sizeof nonce); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + nonce[1] = 1U; + sodium_increment(nonce, sizeof nonce); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + nonce[1] = 0U; + sodium_increment(nonce, sizeof nonce); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + nonce[0] = 255U; + nonce[2] = 255U; + sodium_increment(nonce, sizeof nonce); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + for (i = 0U; i < 1000U; i++) { + bin_len = (size_t) randombytes_uniform(sizeof buf1); + randombytes_buf(buf1, bin_len); + randombytes_buf(buf2, bin_len); + for (j = 0U; j < bin_len; j++) { + buf1_rev[bin_len - 1 - j] = buf1[j]; + buf2_rev[bin_len - 1 - j] = buf2[j]; + } + if (memcmp(buf1_rev, buf2_rev, bin_len) * + sodium_compare(buf1, buf2, bin_len) < 0) { + printf("sodium_compare() failure with length=%u\n", + (unsigned int) bin_len); + } + memcpy(buf1, buf2, bin_len); + if (sodium_compare(buf1, buf2, bin_len)) { + printf("sodium_compare() equality failure with length=%u\n", + (unsigned int) bin_len); + } + } + printf("%d\n", sodium_compare(buf1, NULL, 0U)); + printf("%d\n", sodium_compare(NULL, buf1, 0U)); + memset(buf1, 0, sizeof buf1); + if (sodium_is_zero(buf1, sizeof buf1) != 1) { + printf("sodium_is_zero() failed\n"); + } + for (i = 0U; i < sizeof buf1; i++) { + buf1[i]++; + if (sodium_is_zero(buf1, sizeof buf1) != 0) { + printf("sodium_is_zero() failed\n"); + } + buf1[i]--; + } + bin_len = randombytes_uniform(sizeof buf1); + randombytes_buf(buf1, bin_len); + memcpy(buf2, buf1, bin_len); + memset(buf_add, 0, bin_len); + j = randombytes_uniform(10000); + for (i = 0U; i < j; i++) { + sodium_increment(buf1, bin_len); + sodium_increment(buf_add, bin_len); + } + sodium_add(buf2, buf_add, bin_len); + if (sodium_compare(buf1, buf2, bin_len) != 0) { + printf("sodium_add() failed\n"); + } + bin_len = randombytes_uniform(sizeof buf1); + randombytes_buf(buf1, bin_len); + memcpy(buf2, buf1, bin_len); + memset(buf_add, 0xff, bin_len); + sodium_increment(buf2, bin_len); + sodium_increment(buf2, 0U); + sodium_add(buf2, buf_add, bin_len); + sodium_add(buf2, buf_add, 0U); + if (sodium_compare(buf1, buf2, bin_len) != 0) { + printf("sodium_add() failed\n"); + } + for (i = 0U; i < 1000U; i++) { + randombytes_buf(buf1, bin_len); + randombytes_buf(buf2, bin_len); + sodium_add(buf1, buf2, bin_len); + sodium_sub(buf1, buf2, bin_len); + sodium_sub(buf1, buf2, 0U); + if (sodium_is_zero(buf1, bin_len) && + !sodium_is_zero(buf1, bin_len)) { + printf("sodium_sub() failed\n"); + } + sodium_sub(buf1, buf1, bin_len); + if (!sodium_is_zero(buf1, bin_len)) { + printf("sodium_sub() failed\n"); + } + } + assert(sizeof nonce >= 24U); + memset(nonce, 0xfe, 24U); + memset(nonce, 0xff, 6U); + sodium_increment(nonce, 8U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + memset(nonce, 0xfe, 24U); + memset(nonce, 0xff, 10U); + sodium_increment(nonce, 12U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + memset(nonce, 0xff, 22U); + sodium_increment(nonce, 24U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + + assert(sizeof nonce >= 24U); + memset(nonce, 0xfe, 24U); + memset(nonce, 0xff, 6U); + sodium_add(nonce, nonce, 7U); + sodium_add(nonce, nonce, 8U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + memset(nonce, 0xfe, 24U); + memset(nonce, 0xff, 10U); + sodium_add(nonce, nonce, 11U); + sodium_add(nonce, nonce, 12U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + memset(nonce, 0xff, 22U); + sodium_add(nonce, nonce, 23U); + sodium_add(nonce, nonce, 24U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + sodium_add(nonce, nonce, 0U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + sodium_add(nonce, guard_page, 0U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + sodium_add(guard_page, nonce, 0U); + + sodium_sub(nonce, nonce, 0U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + sodium_sub(nonce, guard_page, 0U); + printf("%s\n", + sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce)); + sodium_sub(guard_page, nonce, 0U); + + randombytes_buf(buf1, 64U); + randombytes_buf(buf2, 64U); + memset(buf_add, 0, 64U); + sodium_add(buf_add, buf1, 64U); + assert(!sodium_is_zero(buf_add, 64U)); + sodium_add(buf_add, buf2, 64U); + assert(!sodium_is_zero(buf_add, 64U)); + sodium_sub(buf_add, buf1, 64U); + assert(!sodium_is_zero(buf_add, 64U)); + sodium_sub(buf_add, buf2, 64U); + assert(sodium_is_zero(buf_add, 64U)); + + for (i = 0; i < 2000U; i++) { + bin_len = randombytes_uniform(200U); + blocksize = 1U + randombytes_uniform(500U); + bin_padded_maxlen = bin_len + (blocksize - bin_len % blocksize); + bin_padded = (unsigned char *) sodium_malloc(bin_padded_maxlen); + randombytes_buf(bin_padded, bin_padded_maxlen); + + assert(sodium_pad(&bin_padded_len, bin_padded, bin_len, + blocksize, bin_padded_maxlen - 1U) == -1); + assert(sodium_pad(NULL, bin_padded, bin_len, + blocksize, bin_padded_maxlen + 1U) == 0); + assert(sodium_pad(&bin_padded_len, bin_padded, bin_len, + blocksize, bin_padded_maxlen + 1U) == 0); + assert(sodium_pad(&bin_padded_len, bin_padded, bin_len, + 0U, bin_padded_maxlen) == -1); + assert(sodium_pad(&bin_padded_len, bin_padded, bin_len, + blocksize, bin_padded_maxlen) == 0); + assert(bin_padded_len == bin_padded_maxlen); + + assert(sodium_unpad(&bin_len2, bin_padded, bin_padded_len, + bin_padded_len + 1U) == -1); + assert(sodium_unpad(&bin_len2, bin_padded, bin_padded_len, + 0U) == -1); + assert(sodium_unpad(&bin_len2, bin_padded, bin_padded_len, + blocksize) == 0); + assert(bin_len2 == bin_len); + + sodium_free(bin_padded); + } + + sodium_stackzero(512); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_utils.exp b/components/espressif__libsodium/libsodium/test/default/sodium_utils.exp new file mode 100644 index 0000000..c97a1db --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_utils.exp @@ -0,0 +1,25 @@ +0 +0 +-1 +0 +0 +0 +0 +0 +010000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000 +010100000000000000000000000000000000000000000000 +020000000000000000000000000000000000000000000000 +0001ff000000000000000000000000000000000000000000 +0 +0 +000000000000fffefefefefefefefefefefefefefefefefe +00000000000000000000fffefefefefefefefefefefefefe +00000000000000000000000000000000000000000000fffe +fcfffffffffffbfdfefefefefefefefefefefefefefefefe +fcfffffffffffffffffffbfdfefefefefefefefefefefefe +fcfffffffffffffffffffffffffffffffffffffffffffbfd +fcfffffffffffffffffffffffffffffffffffffffffffbfd +fcfffffffffffffffffffffffffffffffffffffffffffbfd +fcfffffffffffffffffffffffffffffffffffffffffffbfd +fcfffffffffffffffffffffffffffffffffffffffffffbfd diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_utils2.c b/components/espressif__libsodium/libsodium/test/default/sodium_utils2.c new file mode 100644 index 0000000..36a6de8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_utils2.c @@ -0,0 +1,120 @@ + +#include +#include + +#include +#ifdef HAVE_CATCHABLE_SEGV +# include +#endif +#ifndef _WIN32 +# include +#endif + +#define TEST_NAME "sodium_utils2" +#include "cmptest.h" + +#ifdef __SANITIZE_ADDRESS__ +# warning The sodium_utils2 test is expected to fail with address sanitizer +#endif + +#undef sodium_malloc +#undef sodium_free +#undef sodium_allocarray + +__attribute__((noreturn)) static void +segv_handler(int sig) +{ + (void) sig; + + printf("Intentional segfault / bus error caught\n"); + printf("OK\n"); +#ifdef SIG_DFL +# ifdef SIGPROT + signal(SIGPROT, SIG_DFL); +# endif +# ifdef SIGSEGV + signal(SIGSEGV, SIG_DFL); +# endif +# ifdef SIGBUS + signal(SIGBUS, SIG_DFL); +# endif +# ifdef SIGABRT + signal(SIGABRT, SIG_DFL); +# endif +#endif + _exit(0); +} + +int +main(void) +{ + void *buf; + size_t size; + unsigned int i; + +#ifdef BENCHMARKS + return 0; +#endif + + if (sodium_malloc(SIZE_MAX - 1U) != NULL) { + return 1; + } + if (sodium_malloc(0U) == NULL) { + return 1; + } + if (sodium_allocarray(SIZE_MAX / 2U + 1U, SIZE_MAX / 2U) != NULL) { + return 1; + } + sodium_free(sodium_allocarray(0U, 0U)); + sodium_free(sodium_allocarray(0U, 1U)); + sodium_free(sodium_allocarray(1U, 0U)); + + buf = sodium_allocarray(1000U, 50U); + memset(buf, 0, 50000U); + sodium_free(buf); + + sodium_free(sodium_malloc(0U)); + sodium_free(NULL); + for (i = 0U; i < 10000U; i++) { + size = 1U + randombytes_uniform(100000U); + buf = sodium_malloc(size); + assert(buf != NULL); + memset(buf, i, size); + sodium_mprotect_noaccess(buf); + sodium_free(buf); + } + printf("OK\n"); +#ifdef SIG_DFL +# ifdef SIGPROT + signal(SIGPROT, segv_handler); +# endif +# ifdef SIGSEGV + signal(SIGSEGV, segv_handler); +# endif +# ifdef SIGBUS + signal(SIGBUS, segv_handler); +# endif +# ifdef SIGABRT + signal(SIGABRT, segv_handler); +# endif +#endif + size = 1U + randombytes_uniform(100000U); + buf = sodium_malloc(size); + assert(buf != NULL); + +/* old versions of asan emit a warning because they don't support mlock*() */ +#ifndef __SANITIZE_ADDRESS__ + sodium_mprotect_readonly(buf); + sodium_mprotect_readwrite(buf); +#endif + +#if defined(HAVE_CATCHABLE_SEGV) && !defined(__EMSCRIPTEN__) && !defined(__SANITIZE_ADDRESS__) + sodium_memzero(((unsigned char *) buf) + size, 1U); + sodium_mprotect_noaccess(buf); + sodium_free(buf); + printf("Overflow not caught\n"); +#else + segv_handler(0); +#endif + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_utils2.exp b/components/espressif__libsodium/libsodium/test/default/sodium_utils2.exp new file mode 100644 index 0000000..f796351 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_utils2.exp @@ -0,0 +1,3 @@ +OK +Intentional segfault / bus error caught +OK diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_utils3.c b/components/espressif__libsodium/libsodium/test/default/sodium_utils3.c new file mode 100644 index 0000000..4593069 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_utils3.c @@ -0,0 +1,87 @@ + +#include +#include + +#include +#ifdef HAVE_CATCHABLE_SEGV +# include +#endif +#ifndef _WIN32 +# include +#endif + +#define TEST_NAME "sodium_utils3" +#include "cmptest.h" + +#ifdef __SANITIZE_ADDRESS__ +# warning The sodium_utils3 test is expected to fail with address sanitizer +#endif + +__attribute__((noreturn)) static void +segv_handler(int sig) +{ + (void) sig; + + printf("Intentional segfault / bus error caught\n"); + printf("OK\n"); +#ifdef SIG_DFL +# ifdef SIGPROT + signal(SIGPROT, SIG_DFL); +# endif +# ifdef SIGSEGV + signal(SIGSEGV, SIG_DFL); +# endif +# ifdef SIGBUS + signal(SIGBUS, SIG_DFL); +# endif +# ifdef SIGABRT + signal(SIGABRT, SIG_DFL); +# endif +#endif + _exit(0); +} + +int +main(void) +{ + void * buf; + size_t size; + +#ifdef BENCHMARKS + return 0; +#endif + +#ifdef SIG_DFL +# ifdef SIGPROT + signal(SIGPROT, segv_handler); +# endif +# ifdef SIGSEGV + signal(SIGSEGV, segv_handler); +# endif +# ifdef SIGBUS + signal(SIGBUS, segv_handler); +# endif +# ifdef SIGABRT + signal(SIGABRT, segv_handler); +# endif +#endif + size = 1U + randombytes_uniform(100000U); + buf = sodium_malloc(size); + assert(buf != NULL); + +/* old versions of asan emit a warning because they don't support mlock*() */ +#ifndef __SANITIZE_ADDRESS__ + sodium_mprotect_noaccess(buf); + sodium_mprotect_readwrite(buf); +#endif + +#if defined(HAVE_CATCHABLE_SEGV) && !defined(__EMSCRIPTEN__) && !defined(__SANITIZE_ADDRESS__) + sodium_memzero(((unsigned char *) buf) - 8, 8U); + sodium_mprotect_readonly(buf); + sodium_free(buf); + printf("Underflow not caught\n"); +#else + segv_handler(0); +#endif + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_utils3.exp b/components/espressif__libsodium/libsodium/test/default/sodium_utils3.exp new file mode 100644 index 0000000..37e114f --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_utils3.exp @@ -0,0 +1,2 @@ +Intentional segfault / bus error caught +OK diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_version.c b/components/espressif__libsodium/libsodium/test/default/sodium_version.c new file mode 100644 index 0000000..2a8fddb --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_version.c @@ -0,0 +1,18 @@ + +#define TEST_NAME "sodium_version" +#include "cmptest.h" + +int +main(void) +{ + printf("%d\n", sodium_version_string() != NULL); + printf("%d\n", sodium_library_version_major() > 0); + printf("%d\n", sodium_library_version_minor() >= 0); +#ifdef SODIUM_LIBRARY_MINIMAL + assert(sodium_library_minimal() == 1); +#else + assert(sodium_library_minimal() == 0); +#endif + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/sodium_version.exp b/components/espressif__libsodium/libsodium/test/default/sodium_version.exp new file mode 100644 index 0000000..e8183f0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/sodium_version.exp @@ -0,0 +1,3 @@ +1 +1 +1 diff --git a/components/espressif__libsodium/libsodium/test/default/stream.c b/components/espressif__libsodium/libsodium/test/default/stream.c new file mode 100644 index 0000000..87ef371 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream.c @@ -0,0 +1,84 @@ + +#define TEST_NAME "stream" +#include "cmptest.h" + +static const unsigned char firstkey[32] = { + 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 +}; + +static const unsigned char nonce[24] = { + 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 +}; + +int +main(void) +{ + unsigned char h[32]; + char *hex; + unsigned char *output; + size_t sizeof_hex = 17 * 64 * 2 + 1; + size_t sizeof_output = 4194304; + int i; + + output = (unsigned char *) sodium_malloc(sizeof_output); + hex = (char *) sodium_malloc(sizeof_hex); + + randombytes_buf(output, sizeof_output); + crypto_stream(output, sizeof_output, nonce, firstkey); + crypto_hash_sha256(h, output, sizeof_output); + sodium_bin2hex(hex, sizeof_hex, h, sizeof h); + printf("%s\n", hex); + + assert(sizeof_output > 4000); + + crypto_stream_xsalsa20_xor_ic(output, output, 4000, nonce, 0U, firstkey); + for (i = 0; i < 4000; i++) { + assert(output[i] == 0); + } + crypto_stream_xsalsa20_xor_ic(output, output, 4000, nonce, 1U, firstkey); + crypto_hash_sha256(h, output, sizeof_output); + sodium_bin2hex(hex, sizeof_hex, h, sizeof h); + printf("%s\n", hex); + + for (i = 0; i < 64; i++) { + memset(output, i, 64); + crypto_stream(output, (int) (i & 0xff), nonce, firstkey); + sodium_bin2hex(hex, sizeof_hex, output, 64); + printf("%s\n", hex); + } + + memset(output, 0, 192); + crypto_stream_xsalsa20_xor_ic(output, output, 192, nonce, + (1ULL << 32) - 1ULL, firstkey); + sodium_bin2hex(hex, 192 * 2 + 1, output, 192); + printf("%s\n", hex); + + for (i = 16; i > 0; i--) { + memset(output, 0, 17 * 64); + crypto_stream_xsalsa20_xor_ic(output, output, 17 * 64, nonce, + (1ULL << 32) - (unsigned long long) i, + firstkey); + sodium_bin2hex(hex, 2 * 17 * 64 + 1, output, 17 * 64); + printf("%s\n", hex); + } + + sodium_free(hex); + sodium_free(output); + + assert(crypto_stream_keybytes() > 0U); + assert(crypto_stream_noncebytes() > 0U); + assert(crypto_stream_messagebytes_max() > 0U); + assert(strcmp(crypto_stream_primitive(), "xsalsa20") == 0); + assert(crypto_stream_keybytes() == crypto_stream_xsalsa20_keybytes()); + assert(crypto_stream_noncebytes() == crypto_stream_xsalsa20_noncebytes()); + assert(crypto_stream_messagebytes_max() == crypto_stream_xsalsa20_messagebytes_max()); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/stream.exp b/components/espressif__libsodium/libsodium/test/default/stream.exp new file mode 100644 index 0000000..68ff67b --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream.exp @@ -0,0 +1,83 @@ +662b9d0e3463029156069b12f918691a98f7dfb2ca0393c96bbfc6b1fbd630a2 +0cc9ffaf60a99d221b548e9762385a231121ab226d1c610d2661ced26b6ad5ee +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +ee010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 +eea60202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +eea6a703030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 +eea6a725040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404 +eea6a7251c0505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505 +eea6a7251c1e06060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606 +eea6a7251c1e72070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707 +eea6a7251c1e72910808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808 +eea6a7251c1e72916d09090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909 +eea6a7251c1e72916d110a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a +eea6a7251c1e72916d11c20b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b +eea6a7251c1e72916d11c2cb0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c +eea6a7251c1e72916d11c2cb210d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d +eea6a7251c1e72916d11c2cb214d0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e +eea6a7251c1e72916d11c2cb214d3c0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f +eea6a7251c1e72916d11c2cb214d3c25101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 +eea6a7251c1e72916d11c2cb214d3c25251111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 +eea6a7251c1e72916d11c2cb214d3c25253912121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212 +eea6a7251c1e72916d11c2cb214d3c25253912131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 +eea6a7251c1e72916d11c2cb214d3c252539121d1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 +eea6a7251c1e72916d11c2cb214d3c252539121d8e15151515151515151515151515151515151515151515151515151515151515151515151515151515151515 +eea6a7251c1e72916d11c2cb214d3c252539121d8e23161616161616161616161616161616161616161616161616161616161616161616161616161616161616 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e1717171717171717171717171717171717171717171717171717171717171717171717171717171717 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e6518181818181818181818181818181818181818181818181818181818181818181818181818181818 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d191919191919191919191919191919191919191919191919191919191919191919191919191919 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651f1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa41c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c81d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cf1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff81f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff8802020202020202020202020202020202020202020202020202020202020202020 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff8803021212121212121212121212121212121212121212121212121212121212121 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e222222222222222222222222222222222222222222222222222222222222 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e642323232323232323232323232323232323232323232323232323232323 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a24242424242424242424242424242424242424242424242424242424 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74252525252525252525252525252525252525252525252525252525 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e92626262626262626262626262626262626262626262626262626 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e027272727272727272727272727272727272727272727272727 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a6282828282828282828282828282828282828282828282828 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d2929292929292929292929292929292929292929292929 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d822a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d82432b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243ac2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd92d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9172e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab530303030303030303030303030303030 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a313131313131313131313131313131 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1b3232323232323232323232323232 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb33333333333333333333333333 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d343434343434343434343434 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a3535353535353535353535 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f36363636363636363636 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d373737373737373737 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d703838383838383838 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c39393939393939 +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093a3a3a3a3a3a +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093c3b3b3b3b3b +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093c5e3c3c3c3c +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093c5e553d3d3d +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093c5e55853e3e +eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880309e645a74e9e0a60d8243acd9177ab51a1beb8d5a2f5d700c093c5e5585573f +b46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44 +e825afc24db1b82ca241ef61bbd68003af106fbc07c41df1493b963b5ce45b72540ababca323c71ca3c903e1eec355121fbe9fad8bef90721c819eeba906ef7300b84696929a86d2a95aacebef2f38c489617398a39bc36762b5de6ccf544dde7fa47a839e3bf36903e3b7e9539c5c1c1794cfc991a414e2eef16bcf1b16d07cfb1ff0d77e5940a858f9025563334efeea808e3a82a54a0998e5587fddcb8b48e05de4cdb6ed1df7ddfca886d7122590844bc060178e13ba22a3c60f6fd53bb48f12931a32c81cbdde25e2fe3141682ff0443a9fb890e0520d328f91e19c4c0b0d05bd391351459dd5b15da237cfb3c36c95cfbfb076637b9181d9d9b42ae8ee3655eef4662a0c8737e5620ed7760a577afac32aa37baa35323a52287dfba632abcbff3e40aee172648c3d6f8e468262a49bbc2fb7876e97bb9d06ce6038e9eb425927287fb9ac67e41be494a883668602f4fcf76cc2c6bc62c3240bb63c233316630a645d5309af5c49813b8cc23e149ce40db089c7124431935e93fcc34dd1326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe +00b84696929a86d2a95aacebef2f38c489617398a39bc36762b5de6ccf544dde7fa47a839e3bf36903e3b7e9539c5c1c1794cfc991a414e2eef16bcf1b16d07cfb1ff0d77e5940a858f9025563334efeea808e3a82a54a0998e5587fddcb8b48e05de4cdb6ed1df7ddfca886d7122590844bc060178e13ba22a3c60f6fd53bb48f12931a32c81cbdde25e2fe3141682ff0443a9fb890e0520d328f91e19c4c0b0d05bd391351459dd5b15da237cfb3c36c95cfbfb076637b9181d9d9b42ae8ee3655eef4662a0c8737e5620ed7760a577afac32aa37baa35323a52287dfba632abcbff3e40aee172648c3d6f8e468262a49bbc2fb7876e97bb9d06ce6038e9eb425927287fb9ac67e41be494a883668602f4fcf76cc2c6bc62c3240bb63c233316630a645d5309af5c49813b8cc23e149ce40db089c7124431935e93fcc34dd1326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44 +fb1ff0d77e5940a858f9025563334efeea808e3a82a54a0998e5587fddcb8b48e05de4cdb6ed1df7ddfca886d7122590844bc060178e13ba22a3c60f6fd53bb48f12931a32c81cbdde25e2fe3141682ff0443a9fb890e0520d328f91e19c4c0b0d05bd391351459dd5b15da237cfb3c36c95cfbfb076637b9181d9d9b42ae8ee3655eef4662a0c8737e5620ed7760a577afac32aa37baa35323a52287dfba632abcbff3e40aee172648c3d6f8e468262a49bbc2fb7876e97bb9d06ce6038e9eb425927287fb9ac67e41be494a883668602f4fcf76cc2c6bc62c3240bb63c233316630a645d5309af5c49813b8cc23e149ce40db089c7124431935e93fcc34dd1326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef5 +8f12931a32c81cbdde25e2fe3141682ff0443a9fb890e0520d328f91e19c4c0b0d05bd391351459dd5b15da237cfb3c36c95cfbfb076637b9181d9d9b42ae8ee3655eef4662a0c8737e5620ed7760a577afac32aa37baa35323a52287dfba632abcbff3e40aee172648c3d6f8e468262a49bbc2fb7876e97bb9d06ce6038e9eb425927287fb9ac67e41be494a883668602f4fcf76cc2c6bc62c3240bb63c233316630a645d5309af5c49813b8cc23e149ce40db089c7124431935e93fcc34dd1326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0 +3655eef4662a0c8737e5620ed7760a577afac32aa37baa35323a52287dfba632abcbff3e40aee172648c3d6f8e468262a49bbc2fb7876e97bb9d06ce6038e9eb425927287fb9ac67e41be494a883668602f4fcf76cc2c6bc62c3240bb63c233316630a645d5309af5c49813b8cc23e149ce40db089c7124431935e93fcc34dd1326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58 +425927287fb9ac67e41be494a883668602f4fcf76cc2c6bc62c3240bb63c233316630a645d5309af5c49813b8cc23e149ce40db089c7124431935e93fcc34dd1326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbb +326fc6b1b8e71c37a3ee97a334f2c6bf579c5e986858a88b07136dd6b254543b16e14f38c7cb22cdb41a9028e3a6af9233c45ba06d1667746d48fc7b5c47601237fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766e +37fb2bde1e5a5551a1b4bf848734310103edb75a815e4ced8be43163ca13b3e399e91bf32b28de0b37c17d155f7129e23aec3deb2416122d7008a5684d5d0080f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2d +f15e5eef787d292097cd781b3f95449b5f5a059a2cfbcd2cb10cc88a4759f2227f20d550c4cee567ab3e297191e8f1c3d537f1fc265c93ce900ae588d7d6a971cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ac +cb0f0ae663a41347797bc4384568e439e10fa3cb24fefddf51202b17e35e5e3aba42fb067d15854bdeb400e8e96dfd097d5ffa793f3135cc819edefbf18c26c7e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f2808 +e7a830988e8e1612a06c2d1f3bc03efb7ce5ca6538c4be7ba033a8f369fc479d527ca82cbc8198ef815ba7946fb7f4e7f503d280bddc767e39c4fb0ed54c86065a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f28083f085c8094de717acd2516b631760110c176bff91d3e8cd4d2df79f79d450e54a5007e34caf791d9ac10aa98f45e52d987addf59f4beb5e62ef59e2e1b199413 +5a301ce502d083eeabcbcfd79dfc0de676d444c500d83d123367639d741e4fc4d87eea89f203fadd7e38f9a17b01a34ffe48f2469565751aca063c59614007c41aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f28083f085c8094de717acd2516b631760110c176bff91d3e8cd4d2df79f79d450e54a5007e34caf791d9ac10aa98f45e52d987addf59f4beb5e62ef59e2e1b1994131fa61652a5574f50fa159d47f8f28776e25e21b51103b91afc8345cfbedf46586e17269bfb521ae07f2cd202d308110abcb2b6f0157a55bc6aa6936812c1074d +1aff83247f8daae106f5cd50177b4b98388e6963cf51baaa1de17e90831b5977016aa71973485b4d8524b7aa4f6b7e0a8d994662b922aaab519ab0f8e0d1513ccf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f28083f085c8094de717acd2516b631760110c176bff91d3e8cd4d2df79f79d450e54a5007e34caf791d9ac10aa98f45e52d987addf59f4beb5e62ef59e2e1b1994131fa61652a5574f50fa159d47f8f28776e25e21b51103b91afc8345cfbedf46586e17269bfb521ae07f2cd202d308110abcb2b6f0157a55bc6aa6936812c1074dcd3dc1365d431608687e158b5b3622375e0ddda9cfccb2f16b4a966fc3ecababaa3ea4f8311b37c4578c4692a0d2bdd251c18a886c9b48671531db2759828959 +cf9906615f1bb36a01a9916b27484414e3f3b559e52cf3380b422df71eda463fd1ef24a8d84e82d9718fb46d51d13687352ea76737209d618e77119b066161e2d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f28083f085c8094de717acd2516b631760110c176bff91d3e8cd4d2df79f79d450e54a5007e34caf791d9ac10aa98f45e52d987addf59f4beb5e62ef59e2e1b1994131fa61652a5574f50fa159d47f8f28776e25e21b51103b91afc8345cfbedf46586e17269bfb521ae07f2cd202d308110abcb2b6f0157a55bc6aa6936812c1074dcd3dc1365d431608687e158b5b3622375e0ddda9cfccb2f16b4a966fc3ecababaa3ea4f8311b37c4578c4692a0d2bdd251c18a886c9b48671531db27598289593cf82813da4f43eb854142ef39c4e5950f86b29e291737413396ae4c62f4472fe12659e12b61b84619a96b03a386dd6adb6b74ce09bc11330482e01564d3eb1a +d93cc6ac5cb77a7a0d14988e3355e07a2f02bed2f8cec08807c544efd8ccc5ca3475e8be3143997d402aecfb56e80697f57179e6d631e38741ff3ef57a7ff80cb46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f28083f085c8094de717acd2516b631760110c176bff91d3e8cd4d2df79f79d450e54a5007e34caf791d9ac10aa98f45e52d987addf59f4beb5e62ef59e2e1b1994131fa61652a5574f50fa159d47f8f28776e25e21b51103b91afc8345cfbedf46586e17269bfb521ae07f2cd202d308110abcb2b6f0157a55bc6aa6936812c1074dcd3dc1365d431608687e158b5b3622375e0ddda9cfccb2f16b4a966fc3ecababaa3ea4f8311b37c4578c4692a0d2bdd251c18a886c9b48671531db27598289593cf82813da4f43eb854142ef39c4e5950f86b29e291737413396ae4c62f4472fe12659e12b61b84619a96b03a386dd6adb6b74ce09bc11330482e01564d3eb1a688a80b912ad6d8ce2b939e06e7ecc18c358772ea0c92e82ef26d9bbe342a18babc0d54f676ed9c380fc990a7d576c958d19f6e15fda4fe08752bb8d1eedb05f +b46af0bf761b78533e01a0dd7e07216c9710ef35f09a28d1e5fa469b602472ca5085f6dbcc6a6b51fb89986f8feca85658d05701f5677d0bb340a1f2c769547219f5420c62ffff7d1304dad82b6dec2bdc59ec12a9e18a774eed128c2c90610a9d4c75c0817d64817a76bbc12746971ae897af210a072c1bc9fb044e086b7bfe85fad95d5c2bbb28c12de5755b1ccde63e93cc892b4d2bcbd7dc0706b094c2492e329e3b9a98a9cbc7d01031cf1d5861f576e1291df6286c28146b0b4df9ad44a8d40ce05f73fa3de1a92f948c38fe88a296db696a16742c5073aed1f26c6289675c28c763ab90a070b643ecf1c50f4165b82cf5b8eda4137903765f42cbaef571f6303486a899aef83ca9c8c1e53af717293a6e219675aa1f479eac02d30df16649fc1c83b24855617385b5330b054c13f8fe8670ea2383552fe7fa096a6ff0d90d3922c26b77fb632041df8a3c585f295488aa98d73bc6a3a43eac5644b59440e02ed8a6b9a8acb9f33e732c1850ed6f811975a84b65cb8775df2f55f15f58af8a27936cf507dcc7ec480ffce410373c81374fddcbad758a1976894d58e68d84f3da8a0bbbfd3d62d09679378ee94686866e0ef101e05ccb7cc8fdf6f31cbbf757c4d17aa607bc1decad9a65b8120adb7ef3b9d18a9c07226adf6f73f93c2ff79956f5e19b7c613dff1e907a8381863eb9ca536b44a3034cd522d6caa1766eda2dadd40a0f32380a30c0a0be3ad991007c8778ec855f0c2e9869718f07562ef2bce1d6fa7b551454eda2f86a514d0cd754188715d5f73cbe47d940b8a98a2de9cb66cba3830b2e732aa836df30b279f434ac98182114990d0b8d423813f75b5527dfa7982a167712380786bda08836976c21358a0d50e735f3efcb59ff69ace37ddc48ef2b83bcc1931cf6673dfa726ac5229b83be548b60416ed5c7daf3a3201db9aadd1ffe632a7d3012d94668d5191010dd35d8ba9dc881005e112f28083f085c8094de717acd2516b631760110c176bff91d3e8cd4d2df79f79d450e54a5007e34caf791d9ac10aa98f45e52d987addf59f4beb5e62ef59e2e1b1994131fa61652a5574f50fa159d47f8f28776e25e21b51103b91afc8345cfbedf46586e17269bfb521ae07f2cd202d308110abcb2b6f0157a55bc6aa6936812c1074dcd3dc1365d431608687e158b5b3622375e0ddda9cfccb2f16b4a966fc3ecababaa3ea4f8311b37c4578c4692a0d2bdd251c18a886c9b48671531db27598289593cf82813da4f43eb854142ef39c4e5950f86b29e291737413396ae4c62f4472fe12659e12b61b84619a96b03a386dd6adb6b74ce09bc11330482e01564d3eb1a688a80b912ad6d8ce2b939e06e7ecc18c358772ea0c92e82ef26d9bbe342a18babc0d54f676ed9c380fc990a7d576c958d19f6e15fda4fe08752bb8d1eedb05fbb420713aa2c9df64fc3fcb136d739466a36b38c515e44b1fd8e04717ab838bb8ad38ee6613c173d1d973f478cb0abcd6e69ac2570b8c9b78264ceb9d4a975c8 diff --git a/components/espressif__libsodium/libsodium/test/default/stream2.c b/components/espressif__libsodium/libsodium/test/default/stream2.c new file mode 100644 index 0000000..1e178a4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream2.c @@ -0,0 +1,59 @@ + +#define TEST_NAME "stream2" +#include "cmptest.h" + +static const unsigned char secondkey[32] = { + 0xdc, 0x90, 0x8d, 0xda, 0x0b, 0x93, 0x44, + 0xa9, 0x53, 0x62, 0x9b, 0x73, 0x38, 0x20, + 0x77, 0x88, 0x80, 0xf3, 0xce, 0xb4, 0x21, + 0xbb, 0x61, 0xb9, 0x1c, 0xbd, 0x4c, 0x3e, + 0x66, 0x25, 0x6c, 0xe4 +}; + +static const unsigned char noncesuffix[8] = { + 0x82, 0x19, 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 +}; + + + +int +main(void) +{ + unsigned char *output; + char *hex; + unsigned char h[32]; + size_t sizeof_hex = 32 * 2 + 1; + size_t sizeof_output = 4194304; + int i; + + output = (unsigned char *) sodium_malloc(sizeof_output); + hex = (char *) sodium_malloc(sizeof_hex); + + crypto_stream_salsa20(output, sizeof_output, noncesuffix, secondkey); + crypto_hash_sha256(h, output, sizeof_output); + sodium_bin2hex(hex, sizeof_hex, h, sizeof h); + printf("%s\n", hex); + + assert(sizeof_output > 4000); + + crypto_stream_salsa20_xor_ic(output, output, 4000, noncesuffix, 0U, + secondkey); + for (i = 0; i < 4000; i++) { + assert(output[i] == 0); + } + + crypto_stream_salsa20_xor_ic(output, output, 4000, noncesuffix, 1U, + secondkey); + crypto_hash_sha256(h, output, sizeof_output); + sodium_bin2hex(hex, sizeof_hex, h, sizeof h); + printf("%s\n", hex); + + sodium_free(hex); + sodium_free(output); + + assert(crypto_stream_salsa20_keybytes() > 0U); + assert(crypto_stream_salsa20_noncebytes() > 0U); + assert(crypto_stream_salsa20_messagebytes_max() > 0U); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/stream2.exp b/components/espressif__libsodium/libsodium/test/default/stream2.exp new file mode 100644 index 0000000..23054b7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream2.exp @@ -0,0 +1,2 @@ +662b9d0e3463029156069b12f918691a98f7dfb2ca0393c96bbfc6b1fbd630a2 +0cc9ffaf60a99d221b548e9762385a231121ab226d1c610d2661ced26b6ad5ee diff --git a/components/espressif__libsodium/libsodium/test/default/stream3.c b/components/espressif__libsodium/libsodium/test/default/stream3.c new file mode 100644 index 0000000..afc8e69 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream3.c @@ -0,0 +1,32 @@ + +#define TEST_NAME "stream3" +#include "cmptest.h" + +static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 }; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +static unsigned char rs[32]; + +int +main(void) +{ + int i; + + crypto_stream(rs, 32, nonce, firstkey); + + for (i = 0; i < 32; ++i) { + printf(",0x%02x", (unsigned int) rs[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/stream3.exp b/components/espressif__libsodium/libsodium/test/default/stream3.exp new file mode 100644 index 0000000..9cd7879 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream3.exp @@ -0,0 +1,4 @@ +,0xee,0xa6,0xa7,0x25,0x1c,0x1e,0x72,0x91 +,0x6d,0x11,0xc2,0xcb,0x21,0x4d,0x3c,0x25 +,0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65 +,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80 diff --git a/components/espressif__libsodium/libsodium/test/default/stream4.c b/components/espressif__libsodium/libsodium/test/default/stream4.c new file mode 100644 index 0000000..a0a7656 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream4.c @@ -0,0 +1,51 @@ + +#define TEST_NAME "stream4" +#include "cmptest.h" + +static unsigned char firstkey[32] = { 0x1b, 0x27, 0x55, 0x64, 0x73, 0xe9, 0x85, + 0xd4, 0x62, 0xcd, 0x51, 0x19, 0x7a, 0x9a, + 0x46, 0xc7, 0x60, 0x09, 0x54, 0x9e, 0xac, + 0x64, 0x74, 0xf2, 0x06, 0xc4, 0xee, 0x08, + 0x44, 0xf6, 0x83, 0x89 }; + +static unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6, + 0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8, + 0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19, + 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 }; + +static unsigned char m[163] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0xbe, 0x07, 0x5f, 0xc5, + 0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b, + 0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, 0x4b, 0x66, 0x84, 0x9b, + 0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, 0x33, 0xbd, 0x75, 0x1a, + 0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, 0x6c, 0xdc, 0x3c, 0x01, + 0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, 0x31, 0x4a, 0xdb, 0x31, + 0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, 0xce, 0xea, 0x3a, 0x7f, + 0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, 0xd6, 0xb1, 0x31, 0x8a, + 0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, 0x04, 0x89, 0x77, 0xeb, + 0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, 0x60, 0x90, 0x2e, 0x52, + 0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, 0xe0, 0x82, 0xf9, 0x37, + 0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05 +}; + +static unsigned char c[163]; + +int +main(void) +{ + int i; + + crypto_stream_xor(c, m, 163, nonce, firstkey); + + for (i = 32; i < 163; ++i) { + printf(",0x%02x", (unsigned int) c[i]); + if (i % 8 == 7) { + printf("\n"); + } + } + printf("\n"); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/stream4.exp b/components/espressif__libsodium/libsodium/test/default/stream4.exp new file mode 100644 index 0000000..0d3d8e9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/stream4.exp @@ -0,0 +1,17 @@ +,0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73 +,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce +,0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4 +,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a +,0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b +,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72 +,0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2 +,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38 +,0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a +,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae +,0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea +,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda +,0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde +,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3 +,0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6 +,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74 +,0xe3,0x55,0xa5 diff --git a/components/espressif__libsodium/libsodium/test/default/verify1.c b/components/espressif__libsodium/libsodium/test/default/verify1.c new file mode 100644 index 0000000..68257c9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/verify1.c @@ -0,0 +1,76 @@ + +#define TEST_NAME "verify1" +#include "cmptest.h" + +int +main(void) +{ + unsigned char *v16, *v16x; + unsigned char *v32, *v32x; + unsigned char *v64, *v64x; + uint32_t r; + uint8_t o; + int i; + + v16 = (unsigned char *) sodium_malloc(16); + v16x = (unsigned char *) sodium_malloc(16); + v32 = (unsigned char *) sodium_malloc(32); + v32x = (unsigned char *) sodium_malloc(32); + v64 = (unsigned char *) sodium_malloc(64); + v64x = (unsigned char *) sodium_malloc(64); + for (i = 0; i < 10000; i++) { + randombytes_buf(v16, 16); + randombytes_buf(v32, 32); + randombytes_buf(v64, 64); + + memcpy(v16x, v16, 16); + memcpy(v32x, v32, 32); + memcpy(v64x, v64, 64); + + if (crypto_verify_16(v16, v16x) != 0 || + crypto_verify_32(v32, v32x) != 0 || + crypto_verify_64(v64, v64x) != 0 || + sodium_memcmp(v16, v16x, 16) != 0 || + sodium_memcmp(v32, v32x, 32) != 0 || + sodium_memcmp(v64, v64x, 64) != 0) { + printf("Failed\n"); + } + } + printf("OK\n"); + + for (i = 0; i < 100000; i++) { + r = randombytes_random(); + o = (uint8_t) randombytes_random(); + if (o == 0) { + continue; + } + v16x[r & 15U] ^= o; + v32x[r & 31U] ^= o; + v64x[r & 63U] ^= o; + if (crypto_verify_16(v16, v16x) != -1 || + crypto_verify_32(v32, v32x) != -1 || + crypto_verify_64(v64, v64x) != -1 || + sodium_memcmp(v16, v16x, 16) != -1 || + sodium_memcmp(v32, v32x, 32) != -1 || + sodium_memcmp(v64, v64x, 64) != -1) { + printf("Failed\n"); + } + v16x[r & 15U] ^= o; + v32x[r & 31U] ^= o; + v64x[r & 63U] ^= o; + } + printf("OK\n"); + + assert(crypto_verify_16_bytes() == 16U); + assert(crypto_verify_32_bytes() == 32U); + assert(crypto_verify_64_bytes() == 64U); + + sodium_free(v16); + sodium_free(v16x); + sodium_free(v32); + sodium_free(v32x); + sodium_free(v64); + sodium_free(v64x); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/verify1.exp b/components/espressif__libsodium/libsodium/test/default/verify1.exp new file mode 100644 index 0000000..2c94e48 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/verify1.exp @@ -0,0 +1,2 @@ +OK +OK diff --git a/components/espressif__libsodium/libsodium/test/default/wasi-test-wrapper.sh b/components/espressif__libsodium/libsodium/test/default/wasi-test-wrapper.sh new file mode 100644 index 0000000..5c3cea7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/wasi-test-wrapper.sh @@ -0,0 +1,98 @@ +#! /bin/sh + +unset LDFLAGS +unset CFLAGS + +if command -v wasm-opt >/dev/null; then + wasm-opt -O4 -o "${1}.tmp" "$1" && mv -f "${1}.tmp" "$1" +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "wasmedge" ]; then + if command -v wasmedgec >/dev/null && command -v wasmedge >/dev/null; then + wasmedgec "$1" "${1}.so" >/dev/null && + wasmedge --dir=.:. "${1}.so" && + rm -f "${1}.so" && + exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "wasmer" ]; then + if command -v wasmer >/dev/null; then + wasmer run "$1" "--${WASMER_BACKEND:-cranelift}" --dir=. && exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "wasmtime" ]; then + if command -v wasmtime >/dev/null; then + wasmtime run --dir=. "$1" && exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "bun" ]; then + if echo | bun help >/dev/null 2>&1; then + { + echo "import fs from 'fs'; import { init, WASI } from '@wasmer/wasi';" + echo "await init();" + echo "const wasi = new WASI({args: process.argv, env: process.env, preopens: {'.':'/'}});" + echo "await (async function() {" + echo " const wasm = await WebAssembly.compile(fs.readFileSync('${1}'));" + echo " await wasi.instantiate(wasm, {});" + echo " wasi.start();" + echo " console.log(wasi.getStdoutString());" + echo "})().catch(e => { console.error(e); process.exit(1); });" + } >"${1}.mjs" + bun run "${1}.mjs" 2>/tmp/err && + rm -f "${1}.mjs" && exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "node" ]; then + if echo | node --experimental-wasi-unstable-preview1 >/dev/null 2>&1; then + { + echo "import fs from 'fs'; import { WASI } from 'wasi';" + echo "const wasi = new WASI({args: process.argv, env: process.env, preopens: {'.':'.'}});" + echo "const importObject = { wasi_snapshot_preview1: wasi.wasiImport };" + echo "await (async function() {" + echo " const wasm = await WebAssembly.compile(fs.readFileSync('${1}'));" + echo " const instance = await WebAssembly.instantiate(wasm, importObject);" + echo " wasi.start(instance);" + echo "})().catch(e => { console.error(e); process.exit(1); });" + } >"${1}.mjs" + node --experimental-wasi-unstable-preview1 "${1}.mjs" 2>/tmp/err && + rm -f "${1}.mjs" && exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "wasm3" ]; then + if command -v wasm3 >/dev/null; then + wasm3 "$1" && exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "iwasm" ]; then + if command -v iwasm >/dev/null; then + if iwasm | grep -qi wasi >/dev/null 2>&1; then + if wamrc --version; then + wamrc -o "${1}.o" "$1" >/dev/null && + iwasm --dir=. "${1}.o" && exit 0 + else + iwasm --dir=. "$1" && exit 0 + fi + fi + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "wazero" ]; then + if command -v wazero >/dev/null; then + wazero run -mount .:/ "$1" && exit 0 + fi +fi + +if [ -z "$WASI_RUNTIME" ] || [ "$WASI_RUNTIME" = "wasmer-js" ]; then + if command -v wasmer-js >/dev/null; then + wasmer-js run "$1" --dir=. && exit 0 + fi +fi + +echo "WebAssembly runtime failed" >&2 +exit 1 diff --git a/components/espressif__libsodium/libsodium/test/default/wintest.bat b/components/espressif__libsodium/libsodium/test/default/wintest.bat new file mode 100644 index 0000000..4a22eda --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/wintest.bat @@ -0,0 +1,61 @@ +@ECHO OFF + +if "%1" == "" ( + echo "Usage: wintest.bat [ ]" + goto :END +) + +if not exist sodium_version.c ( + CD test\default + if not exist sodium_version.c ( + echo "Are you on the right path?" %CD% + goto :END + ) +) + +if "%2" == "x64" (SET ARCH=x64) else if "%2" == "ARM64" (SET ARCH=ARM64) else (SET ARCH=ARM64) +if "%2" == "ARM64" (SET CROSSCOMPILE=1) else (SET CROSSCOMPILE=0) +SET CFLAGS=/nologo /DTEST_SRCDIR=\".\" /I..\..\src\libsodium\include\sodium /I..\..\src\libsodium\include /I..\quirks +SET LDFLAGS=/link /LTCG advapi32.lib ..\..\Build\%1\%ARCH%\libsodium.lib +if "%1" == "ReleaseDLL" ( goto :ReleaseDLL ) +if "%1" == "DebugDLL" ( goto :DebugDLL ) +if "%1" == "Release" ( goto :Release ) +if "%1" == "Debug" ( goto :Debug ) +echo "Invalid build type" +goto :END +:ReleaseDLL + SET CFLAGS=%CFLAGS% /MD /Ox + SET PATH=..\..\Build\%1\%ARCH%;%PATH% + goto :COMPILE +:Release + SET CFLAGS=%CFLAGS% /MT /Ox /DSODIUM_STATIC /DSODIUM_EXPORT= + goto :COMPILE +:DebugDLL + SET CFLAGS=%CFLAGS% /GS /MDd /Od + SET PATH=..\..\Build\%1\%ARCH%;%PATH% + goto :COMPILE +:Debug + SET CFLAGS=%CFLAGS% /GS /MTd /Od /DSODIUM_STATIC /DSODIUM_EXPORT= + goto :COMPILE +:COMPILE +echo Running the test suite: +FOR %%f in (*.c) DO ( + cl %CFLAGS% %%f %LDFLAGS% /OUT:%%f.exe > NUL 2>&1 + if not exist %%f.exe ( + echo %%f compile failed + goto :END + ) + if %CROSSCOMPILE% == 1 ( + echo %%f skipped + ) else ( + %%f.exe + if errorlevel 1 ( + echo %%f failed + ) else ( + echo %%f ok + ) + ) +) +REM Remove temporary files +del *.exe *.obj *.res +:END diff --git a/components/espressif__libsodium/libsodium/test/default/xchacha20.c b/components/espressif__libsodium/libsodium/test/default/xchacha20.c new file mode 100644 index 0000000..07eafcc --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/xchacha20.c @@ -0,0 +1,428 @@ + +#define TEST_NAME "xchacha20" +#include "cmptest.h" + +typedef struct HChaCha20TV_ { + const char key[crypto_core_hchacha20_KEYBYTES * 2 + 1]; + const char in[crypto_core_hchacha20_INPUTBYTES * 2 + 1]; + const char out[crypto_core_hchacha20_OUTPUTBYTES * 2 + 1]; +} HChaCha20TV; + +static const unsigned char small_order_p[crypto_scalarmult_BYTES] = { + 0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3, + 0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32, + 0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00 +}; + +static void +tv_hchacha20(void) +{ + static const HChaCha20TV tvs[] = { + { "24f11cce8a1b3d61e441561a696c1c1b7e173d084fd4812425435a8896a013dc", "d9660c5900ae19ddad28d6e06e45fe5e", "5966b3eec3bff1189f831f06afe4d4e3be97fa9235ec8c20d08acfbbb4e851e3" }, + { "80a5f6272031e18bb9bcd84f3385da65e7731b7039f13f5e3d475364cd4d42f7", "c0eccc384b44c88e92c57eb2d5ca4dfa", "6ed11741f724009a640a44fce7320954c46e18e0d7ae063bdbc8d7cf372709df" }, + { "cb1fc686c0eec11a89438b6f4013bf110e7171dace3297f3a657a309b3199629", "fcd49b93e5f8f299227e64d40dc864a3", "84b7e96937a1a0a406bb7162eeaad34308d49de60fd2f7ec9dc6a79cbab2ca34" }, + { "6640f4d80af5496ca1bc2cfff1fefbe99638dbceaabd7d0ade118999d45f053d", "31f59ceeeafdbfe8cae7914caeba90d6", "9af4697d2f5574a44834a2c2ae1a0505af9f5d869dbe381a994a18eb374c36a0" }, + { "0693ff36d971225a44ac92c092c60b399e672e4cc5aafd5e31426f123787ac27", "3a6293da061da405db45be1731d5fc4d", "f87b38609142c01095bfc425573bb3c698f9ae866b7e4216840b9c4caf3b0865" }, + { "809539bd2639a23bf83578700f055f313561c7785a4a19fc9114086915eee551", "780c65d6a3318e479c02141d3f0b3918", "902ea8ce4680c09395ce71874d242f84274243a156938aaa2dd37ac5be382b42" }, + { "1a170ddf25a4fd69b648926e6d794e73408805835c64b2c70efddd8cd1c56ce0", "05dbee10de87eb0c5acb2b66ebbe67d3", "a4e20b634c77d7db908d387b48ec2b370059db916e8ea7716dc07238532d5981" }, + { "3b354e4bb69b5b4a1126f509e84cad49f18c9f5f29f0be0c821316a6986e15a6", "d8a89af02f4b8b2901d8321796388b6c", "9816cb1a5b61993735a4b161b51ed2265b696e7ded5309c229a5a99f53534fbc" }, + { "4b9a818892e15a530db50dd2832e95ee192e5ed6afffb408bd624a0c4e12a081", "a9079c551de70501be0286d1bc78b045", "ebc5224cf41ea97473683b6c2f38a084bf6e1feaaeff62676db59d5b719d999b" }, + { "c49758f00003714c38f1d4972bde57ee8271f543b91e07ebce56b554eb7fa6a7", "31f0204e10cf4f2035f9e62bb5ba7303", "0dd8cc400f702d2c06ed920be52048a287076b86480ae273c6d568a2e9e7518c" } + }; + const HChaCha20TV *tv; + unsigned char *constant; + unsigned char *key; + unsigned char *in; + unsigned char *out; + unsigned char *out2; + size_t i; + + constant = (unsigned char *) sodium_malloc(crypto_core_hchacha20_CONSTBYTES); + key = (unsigned char *) sodium_malloc(crypto_core_hchacha20_KEYBYTES); + in = (unsigned char *) sodium_malloc(crypto_core_hchacha20_INPUTBYTES); + out = (unsigned char *) sodium_malloc(crypto_core_hchacha20_OUTPUTBYTES); + out2 = (unsigned char *) sodium_malloc(crypto_core_hchacha20_OUTPUTBYTES); + for (i = 0; i < (sizeof tvs) / (sizeof tvs[0]); i++) { + tv = &tvs[i]; + sodium_hex2bin(key, crypto_core_hchacha20_KEYBYTES, + tv->key, strlen(tv->key), NULL, NULL, NULL); + sodium_hex2bin(in, crypto_core_hchacha20_INPUTBYTES, + tv->in, strlen(tv->in), NULL, NULL, NULL); + sodium_hex2bin(out, crypto_core_hchacha20_OUTPUTBYTES, + tv->out, strlen(tv->out), NULL, NULL, NULL); + crypto_core_hchacha20(out2, in, key, NULL); + assert(memcmp(out, out2, crypto_core_hchacha20_OUTPUTBYTES) == 0); + } + + sodium_hex2bin(constant, crypto_core_hchacha20_CONSTBYTES, + "0d29b795c1ca70c1652e823364d32417", + crypto_core_hchacha20_CONSTBYTES * 2 + 1, NULL, NULL, NULL); + sodium_hex2bin(out, crypto_core_hchacha20_OUTPUTBYTES, + "934d941d78eb9bfc2f0376f7ccd4a11ecf0c6a44104618a9749ef47fe97037a2", + crypto_core_hchacha20_OUTPUTBYTES * 2 + 1, NULL, NULL, NULL); + + crypto_core_hchacha20(out2, in, key, constant); + assert(memcmp(out, out2, crypto_core_hchacha20_OUTPUTBYTES) == 0); + + sodium_free(out2); + sodium_free(out); + sodium_free(in); + sodium_free(key); + sodium_free(constant); + + assert(crypto_core_hchacha20_outputbytes() == crypto_core_hchacha20_OUTPUTBYTES); + assert(crypto_core_hchacha20_inputbytes() == crypto_core_hchacha20_INPUTBYTES); + assert(crypto_core_hchacha20_keybytes() == crypto_core_hchacha20_KEYBYTES); + assert(crypto_core_hchacha20_constbytes() == crypto_core_hchacha20_CONSTBYTES); + + printf("tv_hchacha20: ok\n"); +} + +#define XCHACHA20_OUT_MAX 100 + +typedef struct XChaCha20TV_ { + const char key[crypto_stream_xchacha20_KEYBYTES * 2 + 1]; + const char nonce[crypto_stream_xchacha20_NONCEBYTES * 2 + 1]; + const char out[XCHACHA20_OUT_MAX * 2 + 1]; +} XChaCha20TV; + +static void +tv_stream_xchacha20(void) +{ + static const XChaCha20TV tvs[] = { + { "79c99798ac67300bbb2704c95c341e3245f3dcb21761b98e52ff45b24f304fc4", "b33ffd3096479bcfbc9aee49417688a0a2554f8d95389419", "c6e9758160083ac604ef90e712ce6e75d7797590744e0cf060f013739c" }, + { "ddf7784fee099612c40700862189d0397fcc4cc4b3cc02b5456b3a97d1186173", "a9a04491e7bf00c3ca91ac7c2d38a777d88993a7047dfcc4", "2f289d371f6f0abc3cb60d11d9b7b29adf6bc5ad843e8493e928448d" }, + { "3d12800e7b014e88d68a73f0a95b04b435719936feba60473f02a9e61ae60682", "56bed2599eac99fb27ebf4ffcb770a64772dec4d5849ea2d", "a2c3c1406f33c054a92760a8e0666b84f84fa3a618f0" }, + { "5f5763ff9a30c95da5c9f2a8dfd7cc6efd9dfb431812c075aa3e4f32e04f53e4", "a5fa890efa3b9a034d377926ce0e08ee6d7faccaee41b771", "8a1a5ba898bdbcff602b1036e469a18a5e45789d0e8d9837d81a2388a52b0b6a0f51891528f424c4a7f492a8dd7bce8bac19fbdbe1fb379ac0" }, + { "eadc0e27f77113b5241f8ca9d6f9a5e7f09eee68d8a5cf30700563bf01060b4e", "a171a4ef3fde7c4794c5b86170dc5a099b478f1b852f7b64", "23839f61795c3cdbcee2c749a92543baeeea3cbb721402aa42e6cae140447575f2916c5d71108e3b13357eaf86f060cb" }, + { "91319c9545c7c804ba6b712e22294c386fe31c4ff3d278827637b959d3dbaab2", "410e854b2a911f174aaf1a56540fc3855851f41c65967a4e", "cbe7d24177119b7fdfa8b06ee04dade4256ba7d35ffda6b89f014e479faef6" }, + { "6a6d3f412fc86c4450fc31f89f64ed46baa3256ffcf8616e8c23a06c422842b6", "6b7773fce3c2546a5db4829f53a9165f41b08faae2fb72d5", "8b23e35b3cdd5f3f75525fc37960ec2b68918e8c046d8a832b9838f1546be662e54feb1203e2" }, + { "d45e56368ebc7ba9be7c55cfd2da0feb633c1d86cab67cd5627514fd20c2b391", "fd37da2db31e0c738754463edadc7dafb0833bd45da497fc", "47950efa8217e3dec437454bd6b6a80a287e2570f0a48b3fa1ea3eb868be3d486f6516606d85e5643becc473b370871ab9ef8e2a728f73b92bd98e6e26ea7c8ff96ec5a9e8de95e1eee9300c" }, + { "aface41a64a9a40cbc604d42bd363523bd762eb717f3e08fe2e0b4611eb4dcf3", "6906e0383b895ab9f1cf3803f42f27c79ad47b681c552c63", "a5fa7c0190792ee17675d52ad7570f1fb0892239c76d6e802c26b5b3544d13151e67513b8aaa1ac5af2d7fd0d5e4216964324838" }, + { "9d23bd4149cb979ccf3c5c94dd217e9808cb0e50cd0f67812235eaaf601d6232", "c047548266b7c370d33566a2425cbf30d82d1eaf5294109e", "a21209096594de8c5667b1d13ad93f744106d054df210e4782cd396fec692d3515a20bf351eec011a92c367888bc464c32f0807acd6c203a247e0db854148468e9f96bee4cf718d68d5f637cbd5a376457788e6fae90fc31097cfc" }, + }; + const XChaCha20TV *tv; + char *hex; + unsigned char *key; + unsigned char *nonce; + unsigned char *out; + unsigned char *out2; + size_t out_len; + size_t i; + + key = (unsigned char *) sodium_malloc(crypto_stream_xchacha20_KEYBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_stream_xchacha20_NONCEBYTES); + out = (unsigned char *) sodium_malloc(XCHACHA20_OUT_MAX); + for (i = 0; i < (sizeof tvs) / (sizeof tvs[0]); i++) { + tv = &tvs[i]; + + sodium_hex2bin(key, crypto_stream_xchacha20_KEYBYTES, + tv->key, strlen(tv->key), NULL, NULL, NULL); + sodium_hex2bin(nonce, crypto_stream_xchacha20_NONCEBYTES, + tv->nonce, strlen(tv->nonce), NULL, NULL, NULL); + sodium_hex2bin(out, XCHACHA20_OUT_MAX, + tv->out, strlen(tv->out), NULL, &out_len, NULL); + out2 = (unsigned char *) sodium_malloc(out_len); + crypto_stream_xchacha20(out2, out_len, nonce, key); + assert(memcmp(out, out2, out_len) == 0); + crypto_stream_xchacha20_xor(out2, out, out_len, nonce, key); + assert(sodium_is_zero(out2, out_len)); + crypto_stream_xchacha20_xor_ic(out2, out, out_len, nonce, 0, key); + assert(sodium_is_zero(out2, out_len)); + crypto_stream_xchacha20_xor_ic(out2, out, out_len, nonce, 1, key); + assert(!sodium_is_zero(out2, out_len)); + crypto_stream_xchacha20_xor(out, out, out_len, nonce, key); + assert(sodium_is_zero(out, out_len)); + sodium_free(out2); + } + + out2 = (unsigned char *) sodium_malloc(0); + crypto_stream_xchacha20(out2, 0, nonce, key); + crypto_stream_xchacha20_xor(out2, out2, 0, nonce, key); + crypto_stream_xchacha20_xor_ic(out2, out2, 0, nonce, 1, key); + sodium_free(out2); + sodium_free(out); + + out = (unsigned char *) sodium_malloc(64); + out2 = (unsigned char *) sodium_malloc(128); + randombytes_buf(out, 64); + randombytes_buf(out2, 64); + memcpy(out2 + 64, out, 64); + crypto_stream_xchacha20_xor_ic(out, out, 64, nonce, 1, key); + crypto_stream_xchacha20_xor(out2, out2, 128, nonce, key); + assert(memcmp(out, out2 + 64, 64) == 0); + sodium_free(out); + sodium_free(out2); + + out = (unsigned char *) sodium_malloc(192); + out2 = (unsigned char *) sodium_malloc(192); + memset(out, 0, 192); + memset(out2, 0, 192); + crypto_stream_xchacha20_xor_ic(out2, out2, 192, nonce, + (1ULL << 32) - 1ULL, key); + crypto_stream_xchacha20_xor_ic(out, out, 64, nonce, + (1ULL << 32) - 1ULL, key); + crypto_stream_xchacha20_xor_ic(out + 64, out + 64, 64, nonce, + (1ULL << 32), key); + crypto_stream_xchacha20_xor_ic(out + 128, out + 128, 64, nonce, + (1ULL << 32) + 1, key); + assert(memcmp(out, out2, 192) == 0); + hex = (char *) sodium_malloc(192 * 2 + 1); + sodium_bin2hex(hex, 192 * 2 + 1, out, 192); + printf("%s\n", hex); + + memset(key, 0, crypto_stream_xchacha20_KEYBYTES); + crypto_stream_xchacha20_keygen(key); + assert(sodium_is_zero(key, crypto_stream_xchacha20_KEYBYTES) == 0); + + sodium_free(hex); + sodium_free(out); + sodium_free(out2); + + sodium_free(nonce); + sodium_free(key); + + assert(crypto_stream_xchacha20_keybytes() == crypto_stream_xchacha20_KEYBYTES); + assert(crypto_stream_xchacha20_noncebytes() == crypto_stream_xchacha20_NONCEBYTES); + assert(crypto_stream_xchacha20_messagebytes_max() == crypto_stream_xchacha20_MESSAGEBYTES_MAX); + + printf("tv_stream_xchacha20: ok\n"); +} + +typedef struct XChaCha20Poly1305TV_ { + const char key[crypto_secretbox_xchacha20poly1305_KEYBYTES * 2 + 1]; + const char nonce[crypto_secretbox_xchacha20poly1305_NONCEBYTES * 2 + 1]; + const char *m; + const char *out; +} XChaCha20Poly1305TV; + +static void +tv_secretbox_xchacha20poly1305(void) +{ + static const XChaCha20Poly1305TV tvs[] = { + { "065ff46a9dddb1ab047ee5914d6d575a828b8cc1f454b24e8cd0f57efdc49a34", "f83262646ce01293b9923a65a073df78c54b2e799cd6c4e5", "", "4c72340416339dcdea01b760db5adaf7" }, + { "d3c71d54e6b13506e07aa2e7b412a17a7a1f34df3d3148cd3f45b91ccaa5f4d9", "943b454a853aa514c63cf99b1e197bbb99da24b2e2d93e47", "76bd706e07741e713d90efdb34ad202067263f984942aae8bda159f30dfccc72200f8093520b85c5ad124ff7c8b2d920946e5cfff4b819abf84c7b35a6205ca72c9f8747c3044dd73fb4bebda1b476", "0384276f1cfa5c82c3e58f0f2acc1f821c6f526d2c19557cf8bd270fcde43fba1d88890663f7b2f5c6b1d7deccf5c91b4df5865dc55cc7e04d6793fc2db8f9e3b418f95cb796d67a7f3f7e097150cb607c435dacf82eac3d669866e5092ace" }, + { "9498fdb922e0596e32af7f8108def2068f5a32a5ac70bd33ade371701f3d98d0", "a0056f24be0d20106fe750e2ee3684d4457cbdcb3a74e566", "b1bc9cfedb340fb06a37eba80439189e48aa0cfd37020eec0afa09165af12864671b3fbddbbb20ac18f586f2f66d13b3ca40c9a7e21c4513a5d87a95319f8ca3c2151e2a1b8b86a35653e77f90b9e63d2a84be9b9603876a89d60fd708edcd64b41be1064b8ad1046553aaeb51dc70b8112c9915d94f2a5dad1e14e7009db6c703c843a4f64b77d44b179b9579ac497dac2d33", "4918790d46893fa3dca74d8abc57eef7fca2c6393d1beef5efa845ac20475db38d1a068debf4c5dbd8614eb072877c565dc52bd40941f0b590d2079a5028e426bf50bcbaadcbebf278bddceedc578a5e31379523dee15026ec82d34e56f2871fdf13255db199ac48f163d5ee7e4f4e09a39451356959d9242a39aea33990ab960a4c25346e3d9397fc5e7cb6266c2476411cd331f2bcb4486750c746947ec6401865d5" }, + { "fa2d915e044d0519248150e7c815b01f0f2a691c626f8d22c3ef61e7f16eea47", "c946065dc8befa9cc9f292ea2cf28f0256285565051792b7", "d5be1a24c7872115dc5c5b4234dbee35a6f89ae3a91b3e33d75249a0aecfed252341295f49296f7ee14d64de1ea6355cb8facd065052d869aeb1763cda7e418a7e33b6f7a81327181df6cd4de3a126d9df1b5e8b0b1a6b281e63f2", "6d32e3571afec58b0acabb54a287118b3ed6691f56cc8ead12d735352c9a050c2ca173c78b6092f9ad4b7c21c36fb0ce18560956395bab3099c54760a743051ac6a898a0b0034b5e953340c975cf7a873c56b27e66bca2bff1dd977addefc7935bb7550753dd13d1f1a43d" }, + { "6f149c2ec27af45176030c8dd7ab0e1e488f5803f26f75045d7a56f59a587a85", "952aff2f39bc70016f04ac7fb8b55fd22764ba16b56e255d", "8fde598c4bde5786abdc6ab83fce66d59782b6ce36afe028c447ad4086a748764afa88a520e837a9d56d0b7693b0476649f24c2aa44b94615a1efc75", "9bccf07974836fa4609d32d9527d928d184d9c6c0823af2f703e0e257a162d26d3678fa15ab1c4db76ac42084d32cefca8efaf77814c199b310999e327a3e3daa2e235b175979504ede87b58" }, + { "b964b7fdf442efbcc2cd3e4cd596035bdfb05ed7d44f7fd4dce2d5614af5c8c4", "2886fbfa4b35b68f28d31df6243a4fbc56475b69e24820a4", "", "b83fbdd112bf0f7d62eff96c9faa8850" }, + { "10c0ad4054b48d7d1de1d9ab6f782ca883d886573e9d18c1d47b6ee6b5208189", "977edf57428d0e0247a3c88c9a9ec321bbaae1a4da8353b5", "518e4a27949812424b2a381c3efea6055ee5e75eff", "0c801a037c2ed0500d6ef68e8d195eceb05a15f8edb68b35773e81ac2aca18e9be53416f9a" }, + { "7db0a81d01699c86f47a3ec76d46aa32660adad7f9ac72cf8396419f789f6bb1", "e7cb57132ce954e28f4470cca1dbda20b534cdf32fbe3658", "ee6511d403539e611ab312205f0c3b8f36a33d36f1dc44bb33d6836f0ab93b9f1747167bf0150f045fcd12a39479641d8bdde6fe01475196e8fe2c435e834e30a59f6aaa01ebcd", "ae8b1d4df4f982b2702626feca07590fedd0dfa7ae34e6a098372a1aa32f9fbf0ce2a88b5c16a571ef48f3c9fda689ce8ebb9947c9e2a28e01b1191efc81ad2ce0ed6e6fc7c164b1fc7f3d50b7f5e47a895db3c1fc46c0" }, + { "7b043dd27476cf5a2baf2907541d8241ecd8b97d38d08911737e69b0846732fb", "74706a2855f946ed600e9b453c1ac372520b6a76a3c48a76", "dbf165bb8352d6823991b99f3981ba9c8153635e5695477cba54e96a2a8c4dc5f9dbe817887d7340e3f48a", "ce57261afba90a9598de15481c43f26f7b8c8cb2806c7c977752dba898dc51b92a3f1a62ebf696747bfccf72e0edda97f2ccd6d496f55aefbb3ec2" }, + { "e588e418d658df1b2b1583122e26f74ca3506b425087bea895d81021168f8164", "4f4d0ffd699268cd841ce4f603fe0cd27b8069fcf8215fbb", "f91bcdcf4d08ba8598407ba8ef661e66c59ca9d89f3c0a3542e47246c777091e4864e63e1e3911dc01257255e551527a53a34481be", "22dc88de7cacd4d9ce73359f7d6e16e74caeaa7b0d1ef2bb10fda4e79c3d5a9aa04b8b03575fd27bc970c9ed0dc80346162469e0547030ddccb8cdc95981400907c87c9442" } + }; + const XChaCha20Poly1305TV *tv; + unsigned char *m; + unsigned char *nonce; + unsigned char *key; + unsigned char *out; + unsigned char *out2; + size_t m_len; + size_t n; + size_t i; + + key = (unsigned char *) sodium_malloc + (crypto_secretbox_xchacha20poly1305_KEYBYTES); + nonce = (unsigned char *) sodium_malloc + (crypto_secretbox_xchacha20poly1305_NONCEBYTES); + for (i = 0; i < (sizeof tvs) / (sizeof tvs[0]); i++) { + tv = &tvs[i]; + m_len = strlen(tv->m) / 2; + m = (unsigned char *) sodium_malloc(m_len); + sodium_hex2bin(key, crypto_secretbox_xchacha20poly1305_KEYBYTES, + tv->key, strlen(tv->key), NULL, NULL, NULL); + sodium_hex2bin(nonce, crypto_secretbox_xchacha20poly1305_NONCEBYTES, + tv->nonce, strlen(tv->nonce), NULL, NULL, NULL); + sodium_hex2bin(m, m_len, tv->m, strlen(tv->m), NULL, NULL, NULL); + out = (unsigned char *) sodium_malloc + (crypto_secretbox_xchacha20poly1305_MACBYTES + m_len); + out2 = (unsigned char *) sodium_malloc + (crypto_secretbox_xchacha20poly1305_MACBYTES + m_len); + sodium_hex2bin(out, crypto_secretbox_xchacha20poly1305_MACBYTES + m_len, + tv->out, strlen(tv->out), NULL, NULL, NULL); + assert(crypto_secretbox_xchacha20poly1305_easy(out2, m, 0, nonce, key) == 0); + assert(crypto_secretbox_xchacha20poly1305_easy(out2, m, m_len, nonce, key) == 0); + assert(memcmp(out, out2, + crypto_secretbox_xchacha20poly1305_MACBYTES + m_len) == 0); + n = randombytes_uniform(crypto_secretbox_xchacha20poly1305_MACBYTES + (uint32_t) m_len); + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, crypto_secretbox_xchacha20poly1305_MACBYTES - 1, + nonce, key) == -1); + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, 0, + nonce, key) == -1); + out2[n]++; + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, crypto_secretbox_xchacha20poly1305_MACBYTES + m_len, + nonce, key) == -1); + out2[n]--; + nonce[0]++; + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, crypto_secretbox_xchacha20poly1305_MACBYTES + m_len, + nonce, key) == -1); + nonce[0]--; + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, crypto_secretbox_xchacha20poly1305_MACBYTES + m_len, + nonce, key) == 0); + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, crypto_secretbox_xchacha20poly1305_MACBYTES - 1, + nonce, key) == -1); + assert(crypto_secretbox_xchacha20poly1305_open_easy + (out2, out2, 0, nonce, key) == -1); + assert(memcmp(m, out2, m_len) == 0); + assert(crypto_secretbox_xchacha20poly1305_open_detached + (out2, out + crypto_secretbox_xchacha20poly1305_MACBYTES, out, + m_len, nonce, key) == 0); + assert(crypto_secretbox_xchacha20poly1305_open_detached + (NULL, out + crypto_secretbox_xchacha20poly1305_MACBYTES, out, + m_len, nonce, key) == 0); + crypto_secretbox_xchacha20poly1305_detached + (out2 + crypto_secretbox_xchacha20poly1305_MACBYTES, out2, m, + m_len, nonce, key); + assert(memcmp(out, out2, + crypto_secretbox_xchacha20poly1305_MACBYTES + m_len) == 0); + sodium_free(out); + sodium_free(out2); + sodium_free(m); + } + sodium_free(nonce); + sodium_free(key); + + assert(crypto_secretbox_xchacha20poly1305_keybytes() == crypto_secretbox_xchacha20poly1305_KEYBYTES); + assert(crypto_secretbox_xchacha20poly1305_noncebytes() == crypto_secretbox_xchacha20poly1305_NONCEBYTES); + assert(crypto_secretbox_xchacha20poly1305_macbytes() == crypto_secretbox_xchacha20poly1305_MACBYTES); + assert(crypto_secretbox_xchacha20poly1305_messagebytes_max() == crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX); + + printf("tv_secretbox_xchacha20: ok\n"); +} + +static void +tv_box_xchacha20poly1305(void) +{ + char hex[65]; + unsigned char *pk; + unsigned char *sk; + unsigned char *m; + unsigned char *m2; + unsigned char *mac; + unsigned char *nonce; + unsigned char *out; + unsigned char *pc; + unsigned char *seed; + size_t m_len; + int i; + + pk = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES); + sk = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES); + nonce = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_NONCEBYTES); + mac = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_MACBYTES); + pc = (unsigned char *) sodium_malloc(crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES); + for (i = 0; i < 10; i++) { + m_len = (i == 0) ? 0 : randombytes_uniform(150); + m = (unsigned char *) sodium_malloc(m_len); + m2 = (unsigned char *) sodium_malloc(m_len); + + out = (unsigned char *) sodium_malloc + (crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len); + randombytes_buf(nonce, crypto_box_curve25519xchacha20poly1305_NONCEBYTES); + randombytes_buf(m, m_len); + assert(crypto_box_curve25519xchacha20poly1305_keypair(pk, sk) == 0); + assert(crypto_box_curve25519xchacha20poly1305_easy(out, m, 0, nonce, + pk, sk) == 0); + assert(crypto_box_curve25519xchacha20poly1305_easy(out, m, m_len, nonce, + pk, sk) == 0); + assert(crypto_box_curve25519xchacha20poly1305_open_easy + (m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len, + nonce, small_order_p, sk) == -1); + assert(crypto_box_curve25519xchacha20poly1305_open_easy + (m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES - 1, + nonce, pk, sk) == -1); + assert(crypto_box_curve25519xchacha20poly1305_open_easy + (m2, out, 0, nonce, pk, sk) == -1); + assert(crypto_box_curve25519xchacha20poly1305_open_easy + (m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len, + nonce, pk, sk) == 0); + assert(memcmp(m2, m, m_len) == 0); + sodium_free(out); + + out = (unsigned char *) sodium_malloc + (crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len); + assert(crypto_box_curve25519xchacha20poly1305_beforenm(pc, small_order_p, sk) == -1); + assert(crypto_box_curve25519xchacha20poly1305_beforenm(pc, pk, sk) == 0); + assert(crypto_box_curve25519xchacha20poly1305_easy_afternm + (out, m, 0, nonce, pc) == 0); + assert(crypto_box_curve25519xchacha20poly1305_easy_afternm + (out, m, m_len, nonce, pc) == 0); + assert(crypto_box_curve25519xchacha20poly1305_open_easy_afternm + (m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES - 1, + nonce, pc) == -1); + assert(crypto_box_curve25519xchacha20poly1305_open_easy_afternm + (m2, out, 0, + nonce, pc) == -1); + assert(crypto_box_curve25519xchacha20poly1305_open_easy_afternm + (m2, out, crypto_box_curve25519xchacha20poly1305_MACBYTES + m_len, + nonce, pc) == 0); + assert(memcmp(m2, m, m_len) == 0); + sodium_free(out); + + out = (unsigned char *) sodium_malloc(m_len); + assert(crypto_box_curve25519xchacha20poly1305_detached(out, mac, m, m_len, + nonce, small_order_p, sk) == -1); + assert(crypto_box_curve25519xchacha20poly1305_detached(out, mac, m, m_len, + nonce, pk, sk) == 0); + assert(crypto_box_curve25519xchacha20poly1305_open_detached + (m2, out, mac, m_len, nonce, small_order_p, sk) == -1); + assert(crypto_box_curve25519xchacha20poly1305_open_detached + (m2, out, mac, m_len, nonce, pk, sk) == 0); + sodium_free(out); + + out = (unsigned char *) sodium_malloc(m_len); + assert(crypto_box_curve25519xchacha20poly1305_detached_afternm + (out, mac, m, m_len, nonce, pc) == 0); + assert(crypto_box_curve25519xchacha20poly1305_open_detached_afternm + (m2, out, mac, m_len, nonce, pc) == 0); + sodium_free(out); + + sodium_free(m2); + sodium_free(m); + } + sodium_free(pc); + sodium_free(mac); + sodium_free(nonce); + + seed = (unsigned char *) sodium_malloc + (crypto_box_curve25519xchacha20poly1305_SEEDBYTES); + for (i = 0; i <(int) crypto_box_curve25519xchacha20poly1305_SEEDBYTES; i++) { + seed[i] = (unsigned char) i; + } + crypto_box_curve25519xchacha20poly1305_seed_keypair(pk, sk, seed); + sodium_bin2hex(hex, sizeof hex, pk, crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES); + assert(strcmp(hex, "4701d08488451f545a409fb58ae3e58581ca40ac3f7f114698cd71deac73ca01") == 0); + sodium_bin2hex(hex, sizeof hex, sk, crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES); + assert(strcmp(hex, "3d94eea49c580aef816935762be049559d6d1440dede12e6a125f1841fff8e6f") == 0); + sodium_free(seed); + + sodium_free(sk); + sodium_free(pk); + + assert(crypto_box_curve25519xchacha20poly1305_seedbytes() == crypto_box_curve25519xchacha20poly1305_SEEDBYTES); + assert(crypto_box_curve25519xchacha20poly1305_publickeybytes() == crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES); + assert(crypto_box_curve25519xchacha20poly1305_secretkeybytes() == crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES); + assert(crypto_box_curve25519xchacha20poly1305_beforenmbytes() == crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES); + assert(crypto_box_curve25519xchacha20poly1305_noncebytes() == crypto_box_curve25519xchacha20poly1305_NONCEBYTES); + assert(crypto_box_curve25519xchacha20poly1305_macbytes() == crypto_box_curve25519xchacha20poly1305_MACBYTES); + assert(crypto_box_curve25519xchacha20poly1305_messagebytes_max() == crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX); + + printf("tv_box_xchacha20poly1305: ok\n"); +} + +int +main(void) +{ + tv_hchacha20(); + tv_stream_xchacha20(); + tv_secretbox_xchacha20poly1305(); + tv_box_xchacha20poly1305(); + + return 0; +} diff --git a/components/espressif__libsodium/libsodium/test/default/xchacha20.exp b/components/espressif__libsodium/libsodium/test/default/xchacha20.exp new file mode 100644 index 0000000..0ac74c6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/default/xchacha20.exp @@ -0,0 +1,5 @@ +tv_hchacha20: ok +3e34c160a966ddfbd52d38f6a440a77256c1134ad54653db427dfdfc72f0f995768039052ec2ec4e6fe02c655d7d95681fabd417c087ad17f177510ba09d4cfe7beb8f7c9b8330d746310f9e29583e9ef240156015faafeb24a4d002d6337b7bcec8b54a64ef704e1ae3247d79625d267cbacd1c90e4a2df2f72d4090babf88c90e65a086c464ec1753c49d3b8ad02f2a3c0808e1695c5d77cec6f6f12578ae4ed077a2046e06644d14af65ae90f2869a6f1f910b83a7a3cfec8dd390621a511 +tv_stream_xchacha20: ok +tv_secretbox_xchacha20: ok +tv_box_xchacha20poly1305: ok diff --git a/components/espressif__libsodium/libsodium/test/quirks/quirks.h b/components/espressif__libsodium/libsodium/test/quirks/quirks.h new file mode 100644 index 0000000..69fe369 --- /dev/null +++ b/components/espressif__libsodium/libsodium/test/quirks/quirks.h @@ -0,0 +1,34 @@ + +#include + +/* C++Builder defines a "random" macro */ +#undef random + +#ifdef __EMSCRIPTEN__ +# define strcmp(s1, s2) xstrcmp(s1, s2) + +static int +strcmp(const char *s1, const char *s2) +{ + while (*s1 == *s2++) { + if (*s1++ == 0) { + return 0; + } + } + return *(unsigned char *) s1 - *(unsigned char *) --s2; +} +#endif + +#ifdef _WIN32 +static void +srandom(unsigned seed) +{ + srand(seed); +} + +static long +random(void) +{ + return (long) rand(); +} +#endif diff --git a/components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.c b/components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.c new file mode 100644 index 0000000..b66e3f3 --- /dev/null +++ b/components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.c @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/* Keep forward-compatibility with Mbed TLS 3.x */ +#if (MBEDTLS_VERSION_NUMBER < 0x03000000) +#define MBEDTLS_2_X_COMPAT +#else /* !(MBEDTLS_VERSION_NUMBER < 0x03000000) */ +/* Macro wrapper for struct's private members */ +#ifndef MBEDTLS_ALLOW_PRIVATE_ACCESS +#define MBEDTLS_ALLOW_PRIVATE_ACCESS +#endif /* MBEDTLS_ALLOW_PRIVATE_ACCESS */ +#endif /* !(MBEDTLS_VERSION_NUMBER < 0x03000000) */ + +#include "crypto_hash_sha256.h" +#include "mbedtls/sha256.h" +#include + +#ifdef MBEDTLS_SHA256_ALT +/* Wrapper only works if the libsodium context structure can be mapped + directly to the mbedTLS context structure. + + See extended comments in crypto_hash_sha512_mbedtls.c +*/ +#error "This wrapper only support standard software mbedTLS SHA" +#endif + +/* Sanity check that all the context fields have identical sizes + (this should be more or less given from the SHA256 algorithm) + + Note that the meaning of the fields is *not* all the same. In libsodium, SHA256 'count' is a 64-bit *bit* count. In + mbedTLS, 'total' is a 2x32-bit *byte* count (count[0] == MSB). + + For this implementation, we don't convert so the libsodium state structure actually holds a binary copy of the + mbedTLS totals. This doesn't matter inside libsodium's documented API, but would matter if any callers try to use + the state's bit count. +*/ +_Static_assert(sizeof(((crypto_hash_sha256_state *)0)->state) == sizeof(((mbedtls_sha256_context *)0)->state), "state mismatch"); +_Static_assert(sizeof(((crypto_hash_sha256_state *)0)->count) == sizeof(((mbedtls_sha256_context *)0)->total), "count mismatch"); +_Static_assert(sizeof(((crypto_hash_sha256_state *)0)->buf) == sizeof(((mbedtls_sha256_context *)0)->buffer), "buf mismatch"); + +/* Inline functions to convert between mbedTLS & libsodium + context structures +*/ + +static void sha256_mbedtls_to_libsodium(crypto_hash_sha256_state *ls_state, const mbedtls_sha256_context *mb_ctx) +{ + memcpy(&ls_state->count, mb_ctx->total, sizeof(ls_state->count)); + memcpy(ls_state->state, mb_ctx->state, sizeof(ls_state->state)); + memcpy(ls_state->buf, mb_ctx->buffer, sizeof(ls_state->buf)); +} + +static void sha256_libsodium_to_mbedtls(mbedtls_sha256_context *mb_ctx, crypto_hash_sha256_state *ls_state) +{ + memcpy(mb_ctx->total, &ls_state->count, sizeof(mb_ctx->total)); + memcpy(mb_ctx->state, ls_state->state, sizeof(mb_ctx->state)); + memcpy(mb_ctx->buffer, ls_state->buf, sizeof(mb_ctx->buffer)); + mb_ctx->is224 = 0; +} + +int +crypto_hash_sha256_init(crypto_hash_sha256_state *state) +{ + mbedtls_sha256_context ctx; + mbedtls_sha256_init(&ctx); +#ifdef MBEDTLS_2_X_COMPAT + int ret = mbedtls_sha256_starts_ret(&ctx, 0); +#else + int ret = mbedtls_sha256_starts(&ctx, 0); +#endif /* MBEDTLS_2_X_COMPAT */ + if (ret != 0) { + return ret; + } + sha256_mbedtls_to_libsodium(state, &ctx); + return 0; +} + +int +crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, unsigned long long inlen) +{ + mbedtls_sha256_context ctx; + sha256_libsodium_to_mbedtls(&ctx, state); +#ifdef MBEDTLS_2_X_COMPAT + int ret = mbedtls_sha256_update_ret(&ctx, in, inlen); +#else + int ret = mbedtls_sha256_update(&ctx, in, inlen); +#endif /* MBEDTLS_2_X_COMPAT */ + if (ret != 0) { + return ret; + } + sha256_mbedtls_to_libsodium(state, &ctx); + return 0; +} + +int +crypto_hash_sha256_final(crypto_hash_sha256_state *state, unsigned char *out) +{ + mbedtls_sha256_context ctx; + sha256_libsodium_to_mbedtls(&ctx, state); +#ifdef MBEDTLS_2_X_COMPAT + return mbedtls_sha256_finish_ret(&ctx, out); +#else + return mbedtls_sha256_finish(&ctx, out); +#endif /* MBEDTLS_2_X_COMPAT */ +} + +int +crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ +#ifdef MBEDTLS_2_X_COMPAT + return mbedtls_sha256_ret(in, inlen, out, 0); +#else + return mbedtls_sha256(in, inlen, out, 0); +#endif /* MBEDTLS_2_X_COMPAT */ +} diff --git a/components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.c b/components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.c new file mode 100644 index 0000000..062c9d6 --- /dev/null +++ b/components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.c @@ -0,0 +1,125 @@ +/* + * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/* Keep forward-compatibility with Mbed TLS 3.x */ +#if (MBEDTLS_VERSION_NUMBER < 0x03000000) +#define MBEDTLS_2_X_COMPAT +#else /* !(MBEDTLS_VERSION_NUMBER < 0x03000000) */ +/* Macro wrapper for struct's private members */ +#ifndef MBEDTLS_ALLOW_PRIVATE_ACCESS +#define MBEDTLS_ALLOW_PRIVATE_ACCESS +#endif /* MBEDTLS_ALLOW_PRIVATE_ACCESS */ +#endif /* !(MBEDTLS_VERSION_NUMBER < 0x03000000) */ + +#include "crypto_hash_sha512.h" +#include "mbedtls/sha512.h" +#include + +#ifdef MBEDTLS_SHA512_ALT +/* Wrapper only works if the libsodium context structure can be mapped + directly to the mbedTLS context structure. + + For ESP32 hardware SHA, the problems are fitting all the data in + the libsodium state structure, and also that libsodium doesn't + have mbedtls_sha512_free() or mbedtls_sha512_clone() so we can't + manage the hardware state in a clean way. +*/ +#error "This wrapper only support standard software mbedTLS SHA" +#endif + +/* Sanity check that all the context fields have identical sizes + (this should be more or less given from the SHA512 algorithm) + + Note that the meaning of the fields is *not* all the same. In libsodium, + SHA512 'count' is a 2xuin64_t *bit* count where count[0] == MSB. In mbedTLS, + SHA512 'total' is a 2xuint64_t *byte* count where count[0] == LSB. + + For this implementation, we don't convert so the libsodium state structure actually holds a binary copy of the + mbedTLS totals. This doesn't matter inside libsodium's documented API, but would matter if any callers try to use + the state's bit count. +*/ +_Static_assert(sizeof(((crypto_hash_sha512_state *)0)->state) == sizeof(((mbedtls_sha512_context *)0)->state), "state mismatch"); +_Static_assert(sizeof(((crypto_hash_sha512_state *)0)->count) == sizeof(((mbedtls_sha512_context *)0)->total), "count mismatch"); +_Static_assert(sizeof(((crypto_hash_sha512_state *)0)->buf) == sizeof(((mbedtls_sha512_context *)0)->buffer), "buf mismatch"); + +/* Inline functions to convert between mbedTLS & libsodium + context structures +*/ + +static void sha512_mbedtls_to_libsodium(crypto_hash_sha512_state *ls_state, const mbedtls_sha512_context *mb_ctx) +{ + memcpy(ls_state->count, mb_ctx->total, sizeof(ls_state->count)); + memcpy(ls_state->state, mb_ctx->state, sizeof(ls_state->state)); + memcpy(ls_state->buf, mb_ctx->buffer, sizeof(ls_state->buf)); +} + +static void sha512_libsodium_to_mbedtls(mbedtls_sha512_context *mb_ctx, crypto_hash_sha512_state *ls_state) +{ + memcpy(mb_ctx->total, ls_state->count, sizeof(mb_ctx->total)); + memcpy(mb_ctx->state, ls_state->state, sizeof(mb_ctx->state)); + memcpy(mb_ctx->buffer, ls_state->buf, sizeof(mb_ctx->buffer)); + mb_ctx->is384 = 0; +} + +int +crypto_hash_sha512_init(crypto_hash_sha512_state *state) +{ + mbedtls_sha512_context ctx; + mbedtls_sha512_init(&ctx); +#ifdef MBEDTLS_2_X_COMPAT + int ret = mbedtls_sha512_starts_ret(&ctx, 0); +#else + int ret = mbedtls_sha512_starts(&ctx, 0); +#endif /* MBEDTLS_2_X_COMPAT */ + if (ret != 0) { + return ret; + } + sha512_mbedtls_to_libsodium(state, &ctx); + return 0; +} + +int +crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, unsigned long long inlen) +{ + mbedtls_sha512_context ctx; + sha512_libsodium_to_mbedtls(&ctx, state); +#ifdef MBEDTLS_2_X_COMPAT + int ret = mbedtls_sha512_update_ret(&ctx, in, inlen); +#else + int ret = mbedtls_sha512_update(&ctx, in, inlen); +#endif /* MBEDTLS_2_X_COMPAT */ + if (ret != 0) { + return ret; + } + sha512_mbedtls_to_libsodium(state, &ctx); + return 0; +} + +int +crypto_hash_sha512_final(crypto_hash_sha512_state *state, unsigned char *out) +{ + mbedtls_sha512_context ctx; + sha512_libsodium_to_mbedtls(&ctx, state); +#ifdef MBEDTLS_2_X_COMPAT + return mbedtls_sha512_finish_ret(&ctx, out); +#else + return mbedtls_sha512_finish(&ctx, out); +#endif /* MBEDTLS_2_X_COMPAT */ +} + +int +crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) +{ +#ifdef MBEDTLS_2_X_COMPAT + return mbedtls_sha512_ret(in, inlen, out, 0); +#else + return mbedtls_sha512(in, inlen, out, 0); +#endif /* MBEDTLS_2_X_COMPAT */ +} diff --git a/components/espressif__libsodium/port/randombytes_esp32.c b/components/espressif__libsodium/port/randombytes_esp32.c new file mode 100644 index 0000000..13234d6 --- /dev/null +++ b/components/espressif__libsodium/port/randombytes_esp32.c @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "sdkconfig.h" +#if __has_include("esp_random.h") +#include "esp_random.h" +#else +#include "esp_system.h" +#endif +#include "randombytes_internal.h" + +static const char *randombytes_esp32xx_implementation_name(void) +{ + return CONFIG_IDF_TARGET; +} + +/* + Plug the ESP32 hardware RNG into libsodium's custom RNG support, as per + https://download.libsodium.org/doc/advanced/custom_rng.html + + Note that this RNG is selected by default (see randombytes_default.h), so there + is no need to call randombytes_set_implementation(). +*/ +const struct randombytes_implementation randombytes_esp32_implementation = { + .implementation_name = randombytes_esp32xx_implementation_name, + .random = esp_random, + .stir = NULL, + .uniform = NULL, + .buf = esp_fill_random, + .close = NULL, +}; diff --git a/components/espressif__libsodium/port/randombytes_internal.h b/components/espressif__libsodium/port/randombytes_internal.h new file mode 100644 index 0000000..35da42d --- /dev/null +++ b/components/espressif__libsodium/port/randombytes_internal.h @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +# include "export.h" +# include "randombytes.h" + +SODIUM_EXPORT +extern const struct randombytes_implementation randombytes_esp32_implementation; + +/* Defining RANDOMBYTES_DEFAULT_IMPLEMENTATION here allows us to compile with the ESP32 hardware + implementation as the default. No need to call randombytes_set_implementation(). + + Doing it in the header like this is easier than passing it via a -D argument to gcc. +*/ +#undef RANDOMBYTES_DEFAULT_IMPLEMENTATION +#define RANDOMBYTES_DEFAULT_IMPLEMENTATION &randombytes_esp32_implementation diff --git a/components/espressif__libsodium/port_include/sodium/version.h b/components/espressif__libsodium/port_include/sodium/version.h new file mode 100644 index 0000000..f95dc04 --- /dev/null +++ b/components/espressif__libsodium/port_include/sodium/version.h @@ -0,0 +1,43 @@ +/* + * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef sodium_version_H +#define sodium_version_H + +#include + +/* IMPORTANT: As we don't use autotools, these version are not automatically + updated if we change submodules. They need to be changed manually. +*/ + +#define SODIUM_VERSION_STRING "1.0.19" + +/* Note: these are not the same as the overall version, see + configure.ac for the relevant macros */ +#define SODIUM_LIBRARY_VERSION_MAJOR 26 +#define SODIUM_LIBRARY_VERSION_MINOR 1 + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/test/CMakeLists.txt b/components/espressif__libsodium/test/CMakeLists.txt new file mode 100644 index 0000000..41de273 --- /dev/null +++ b/components/espressif__libsodium/test/CMakeLists.txt @@ -0,0 +1,36 @@ +if(TESTS_ALL EQUAL 1) + message("not linking libsodium tests, use '-T libsodium' to test it") +else() + get_filename_component(LS_TESTDIR "${CMAKE_CURRENT_LIST_DIR}/../libsodium/test/default" ABSOLUTE) + + set(TEST_CASES "chacha20;aead_chacha20poly1305;box;box2;ed25519_convert;sign;hash") + + foreach(test_case ${TEST_CASES}) + file(GLOB test_case_file "${LS_TESTDIR}/${test_case}.c") + list(APPEND TEST_CASES_FILES ${test_case_file}) + endforeach() + + idf_component_register(SRCS "${TEST_CASES_FILES}" "test_sodium.c" + PRIV_INCLUDE_DIRS "." "${LS_TESTDIR}/../quirks" + PRIV_REQUIRES cmock libsodium) + + # The libsodium test suite is designed to be run each test case as an executable on a desktop computer and uses + # filesytem to write & then compare contents of each file. + # + # For now, use their "BROWSER_TEST" mode with these hacks so that + # multiple test cases can be combined into one ELF file. + # + # Run each test case from test_sodium.c as CASENAME_xmain(). + foreach(test_case_file ${TEST_CASES_FILES}) + get_filename_component(test_case ${test_case_file} NAME_WE) + set_source_files_properties(${test_case_file} + PROPERTIES COMPILE_FLAGS + # This would generate 'warning "main" redefined' warnings at runtime, which are + # silenced here. Only other solution involves patching libsodium's cmptest.h. + "-Dxmain=${test_case}_xmain -Dmain=${test_case}_main -Wp,-w") + endforeach() + + # this seems odd, but it prevents the libsodium test harness from + # trying to write to a file! + add_definitions(-DBROWSER_TESTS) +endif() diff --git a/components/espressif__libsodium/test/test_sodium.c b/components/espressif__libsodium/test/test_sodium.c new file mode 100644 index 0000000..e479103 --- /dev/null +++ b/components/espressif__libsodium/test/test_sodium.c @@ -0,0 +1,126 @@ +/* + * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "unity.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" + +/* Note: a lot of these libsodium test programs assert() things, but they're not complete unit tests - most expect + output to be compared to the matching .exp file. + + We don't do this automatically yet, maybe once we have more options for + internal filesystem storage. +*/ + +extern int aead_chacha20poly1305_xmain(void); + +TEST_CASE("aead_chacha20poly1305 test vectors", "[libsodium]") +{ + printf("Running aead_chacha20poly1305\n"); + TEST_ASSERT_EQUAL(0, aead_chacha20poly1305_xmain()); +} + +extern int chacha20_xmain(void); + +TEST_CASE("chacha20 test vectors", "[libsodium]") +{ + printf("Running chacha20\n"); + TEST_ASSERT_EQUAL(0, chacha20_xmain()); +} + +extern int box_xmain(void); +extern int box2_xmain(void); + +TEST_CASE("box tests", "[libsodium]") +{ + printf("Running box\n"); + TEST_ASSERT_EQUAL(0, box_xmain()); + + printf("Running box2\n"); + TEST_ASSERT_EQUAL(0, box2_xmain()); +} + +extern int ed25519_convert_xmain(void); + +TEST_CASE("ed25519_convert tests", "[libsodium][timeout=60]") +{ + printf("Running ed25519_convert\n"); + TEST_ASSERT_EQUAL(0, ed25519_convert_xmain() ); +} + +extern int sign_xmain(void); + +TEST_CASE("sign tests", "[libsodium]") +{ + printf("Running sign\n"); + TEST_ASSERT_EQUAL(0, sign_xmain() ); +} + +extern int hash_xmain(void); + +TEST_CASE("hash tests", "[libsodium]") +{ + printf("Running hash\n"); + TEST_ASSERT_EQUAL(0, hash_xmain() ); +} + +TEST_CASE("sha256 sanity check", "[libsodium]") +{ + const uint8_t expected[] = { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, + 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, 0xb0, 0x03, + 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, + 0x61, 0xf2, 0x00, 0x15, 0xad, + }; + uint8_t calculated[32]; + crypto_hash_sha256_state state; + + const uint8_t *in = (const uint8_t *)"abc"; + const size_t inlen = 3; + + // One-liner version + crypto_hash_sha256(calculated, in, inlen); + TEST_ASSERT_EQUAL(sizeof(calculated), sizeof(expected)); + TEST_ASSERT_EQUAL(sizeof(calculated), crypto_hash_sha256_bytes()); + TEST_ASSERT_EQUAL_MEMORY(expected, calculated, crypto_hash_sha256_bytes()); + + // Multi-line version + crypto_hash_sha256_init(&state); + crypto_hash_sha256_update(&state, in, inlen - 1); // split into two updates + crypto_hash_sha256_update(&state, in + (inlen - 1), 1); + crypto_hash_sha256_final(&state, calculated); + TEST_ASSERT_EQUAL_MEMORY(expected, calculated, crypto_hash_sha256_bytes()); +} + +TEST_CASE("sha512 sanity check", "[libsodium]") +{ + const uint8_t expected[] = { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 0xcc, + 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, 0x12, 0xe6, + 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, 0x0a, 0x9e, 0xee, + 0xe6, 0x4b, 0x55, 0xd3, 0x9a, 0x21, 0x92, 0x99, 0x2a, + 0x27, 0x4f, 0xc1, 0xa8, 0x36, 0xba, 0x3c, 0x23, 0xa3, + 0xfe, 0xeb, 0xbd, 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, + 0xe8, 0x0e, 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, + 0x9f + }; + + uint8_t calculated[64]; + crypto_hash_sha512_state state; + + const uint8_t *in = (const uint8_t *)"abc"; + const size_t inlen = 3; + + // One-liner version + crypto_hash_sha512(calculated, in, inlen); + TEST_ASSERT_EQUAL(sizeof(calculated), sizeof(expected)); + TEST_ASSERT_EQUAL(sizeof(calculated), crypto_hash_sha512_bytes()); + TEST_ASSERT_EQUAL_MEMORY(expected, calculated, crypto_hash_sha512_bytes()); + + // Multi-line version + crypto_hash_sha512_init(&state); + crypto_hash_sha512_update(&state, in, inlen - 1); // split into two updates + crypto_hash_sha512_update(&state, in + (inlen - 1), 1); + crypto_hash_sha512_final(&state, calculated); + TEST_ASSERT_EQUAL_MEMORY(expected, calculated, crypto_hash_sha512_bytes()); +} diff --git a/lib/AsyncTCP-esphome/.github/dependabot.yml b/lib/AsyncTCP-esphome/.github/dependabot.yml new file mode 100644 index 0000000..dfd0e30 --- /dev/null +++ b/lib/AsyncTCP-esphome/.github/dependabot.yml @@ -0,0 +1,10 @@ +# Set update schedule for GitHub Actions + +version: 2 +updates: + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + # Check for updates to GitHub Actions every week + interval: "weekly" diff --git a/lib/AsyncTCP-esphome/.github/stale.yml b/lib/AsyncTCP-esphome/.github/stale.yml new file mode 100644 index 0000000..ce7a8e3 --- /dev/null +++ b/lib/AsyncTCP-esphome/.github/stale.yml @@ -0,0 +1,31 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +daysUntilStale: 60 +daysUntilClose: 14 +limitPerRun: 30 +staleLabel: stale +exemptLabels: + - pinned + - security + - "to be implemented" + - "for reference" + - "move to PR" + - "enhancement" + +only: issues +onlyLabels: [] +exemptProjects: false +exemptMilestones: false +exemptAssignees: false + +markComment: > + [STALE_SET] This issue has been automatically marked as stale because it has not had + recent activity. It will be closed in 14 days if no further activity occurs. Thank you + for your contributions. + +unmarkComment: > + [STALE_CLR] This issue has been removed from the stale queue. Please ensure activity to keep it openin the future. + +closeComment: > + [STALE_DEL] This stale issue has been automatically closed. Thank you for your contributions. + diff --git a/lib/AsyncTCP-esphome/.github/workflows/push.yml b/lib/AsyncTCP-esphome/.github/workflows/push.yml new file mode 100644 index 0000000..b7b62c6 --- /dev/null +++ b/lib/AsyncTCP-esphome/.github/workflows/push.yml @@ -0,0 +1,29 @@ +name: Async TCP CI + +on: + push: + branches: + pull_request: + +jobs: + + build-arduino: + name: Arduino on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + steps: + - uses: actions/checkout@v3 + - uses: arduino/setup-arduino-cli@v1 + - name: Download board + run: | + arduino-cli --config-file arduino-cli.yaml core update-index + arduino-cli --config-file arduino-cli.yaml board listall + arduino-cli --config-file arduino-cli.yaml core install esp32:esp32@2.0.2 + - name: Compile Sketch + run: arduino-cli --config-file arduino-cli.yaml --library ./src/ compile --fqbn esp32:esp32:esp32 ./examples/ClientServer/Client/Client.ino + - name: Compile Sketch with IPv6 + env: + LWIP_IPV6: true + run: arduino-cli --config-file arduino-cli.yaml --library ./src/ compile --fqbn esp32:esp32:esp32 ./examples/ClientServer/Client/Client.ino diff --git a/lib/AsyncTCP-esphome/.gitignore b/lib/AsyncTCP-esphome/.gitignore new file mode 100644 index 0000000..9bea433 --- /dev/null +++ b/lib/AsyncTCP-esphome/.gitignore @@ -0,0 +1,2 @@ + +.DS_Store diff --git a/lib/AsyncTCP-esphome/.piopm b/lib/AsyncTCP-esphome/.piopm new file mode 100644 index 0000000..cc235bc --- /dev/null +++ b/lib/AsyncTCP-esphome/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "AsyncTCP-esphome", "version": "2.1.3", "spec": {"owner": "esphome", "id": 12172, "name": "AsyncTCP-esphome", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/lib/AsyncTCP-esphome/.travis.yml b/lib/AsyncTCP-esphome/.travis.yml new file mode 100644 index 0000000..dbfc064 --- /dev/null +++ b/lib/AsyncTCP-esphome/.travis.yml @@ -0,0 +1,34 @@ +sudo: false +language: python +os: + - linux + +git: + depth: false + +stages: + - build + +jobs: + include: + + - name: "Arduino Build" + if: tag IS blank AND (type = pull_request OR (type = push AND branch = master)) + stage: build + script: bash $TRAVIS_BUILD_DIR/.github/scripts/on-push.sh + + - name: "PlatformIO Build" + if: tag IS blank AND (type = pull_request OR (type = push AND branch = master)) + stage: build + script: bash $TRAVIS_BUILD_DIR/.github/scripts/on-push.sh 1 1 + +notifications: + email: + on_success: change + on_failure: change + webhooks: + urls: + - https://webhooks.gitter.im/e/60e65d0c78ea0a920347 + on_success: change # options: [always|never|change] default: always + on_failure: always # options: [always|never|change] default: always + on_start: false # default: false diff --git a/lib/AsyncTCP-esphome/CMakeLists.txt b/lib/AsyncTCP-esphome/CMakeLists.txt new file mode 100644 index 0000000..f52e1c9 --- /dev/null +++ b/lib/AsyncTCP-esphome/CMakeLists.txt @@ -0,0 +1,15 @@ +set(COMPONENT_SRCDIRS + "src" +) + +set(COMPONENT_ADD_INCLUDEDIRS + "src" +) + +set(COMPONENT_REQUIRES + "arduino-esp32" +) + +register_component() + +target_compile_options(${COMPONENT_TARGET} PRIVATE -fno-rtti) diff --git a/lib/AsyncTCP-esphome/Kconfig.projbuild b/lib/AsyncTCP-esphome/Kconfig.projbuild new file mode 100644 index 0000000..1774926 --- /dev/null +++ b/lib/AsyncTCP-esphome/Kconfig.projbuild @@ -0,0 +1,30 @@ +menu "AsyncTCP Configuration" + +choice ASYNC_TCP_RUNNING_CORE + bool "Core on which AsyncTCP's thread is running" + default ASYNC_TCP_RUN_CORE1 + help + Select on which core AsyncTCP is running + + config ASYNC_TCP_RUN_CORE0 + bool "CORE 0" + config ASYNC_TCP_RUN_CORE1 + bool "CORE 1" + config ASYNC_TCP_RUN_NO_AFFINITY + bool "BOTH" + +endchoice + +config ASYNC_TCP_RUNNING_CORE + int + default 0 if ASYNC_TCP_RUN_CORE0 + default 1 if ASYNC_TCP_RUN_CORE1 + default -1 if ASYNC_TCP_RUN_NO_AFFINITY + +config ASYNC_TCP_USE_WDT + bool "Enable WDT for the AsyncTCP task" + default "y" + help + Enable WDT for the AsyncTCP task, so it will trigger if a handler is locking the thread. + +endmenu diff --git a/lib/AsyncTCP-esphome/LICENSE b/lib/AsyncTCP-esphome/LICENSE new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/lib/AsyncTCP-esphome/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/lib/AsyncTCP-esphome/README.md b/lib/AsyncTCP-esphome/README.md new file mode 100644 index 0000000..17b145b --- /dev/null +++ b/lib/AsyncTCP-esphome/README.md @@ -0,0 +1,12 @@ +# AsyncTCP +![Build Status](https://github.com/esphome/AsyncTCP/actions/workflows/push.yml/badge.svg) +A fork of the [AsyncTCP](https://github.com/me-no-dev/AsyncTCP) library by [@me-no-dev](https://github.com/me-no-dev) for [ESPHome](https://esphome.io). + +### Async TCP Library for ESP32 Arduino + +This is a fully asynchronous TCP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP32 MCUs. + +This library is the base for [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer) + +## AsyncClient and AsyncServer +The base classes on which everything else is built. They expose all possible scenarios, but are really raw and require more skills to use. diff --git a/lib/AsyncTCP-esphome/arduino-cli.yaml b/lib/AsyncTCP-esphome/arduino-cli.yaml new file mode 100644 index 0000000..42365f4 --- /dev/null +++ b/lib/AsyncTCP-esphome/arduino-cli.yaml @@ -0,0 +1,25 @@ +board_manager: + additional_urls: + - https://espressif.github.io/arduino-esp32/package_esp32_index.json +directories: + builtin.libraries: ./src/ +build_cache: + compilations_before_purge: 10 + ttl: 720h0m0s +daemon: + port: "50051" +library: + enable_unsafe_install: false +logging: + file: "" + format: text + level: info +metrics: + addr: :9090 + enabled: true +output: + no_color: false +sketch: + always_export_binaries: false +updater: + enable_notification: true diff --git a/lib/AsyncTCP-esphome/component.mk b/lib/AsyncTCP-esphome/component.mk new file mode 100644 index 0000000..bb5bb16 --- /dev/null +++ b/lib/AsyncTCP-esphome/component.mk @@ -0,0 +1,3 @@ +COMPONENT_ADD_INCLUDEDIRS := src +COMPONENT_SRCDIRS := src +CXXFLAGS += -fno-rtti diff --git a/lib/AsyncTCP-esphome/examples/ClientServer/Client/Client.ino b/lib/AsyncTCP-esphome/examples/ClientServer/Client/Client.ino new file mode 100644 index 0000000..47d8bc7 --- /dev/null +++ b/lib/AsyncTCP-esphome/examples/ClientServer/Client/Client.ino @@ -0,0 +1,42 @@ +#include + +#include "config.h" + +static void replyToServer(void* arg) { + AsyncClient* client = reinterpret_cast(arg); + + // send reply + if (client->space() > 32 && client->canSend()) { + char message[32]; + client->add(message, strlen(message)); + client->send(); + } +} + +/* event callbacks */ +static void handleData(void* arg, AsyncClient* client, void *data, size_t len) { + Serial.printf("\n data received from %s \n", client->remoteIP().toString().c_str()); + Serial.write((uint8_t*)data, len); + +} + +void onConnect(void* arg, AsyncClient* client) { + Serial.printf("\n client has been connected to %s on port %d \n", SERVER_HOST_NAME, TCP_PORT); + replyToServer(client); +} + + +void setup() { + Serial.begin(115200); + delay(20); + + AsyncClient* client = new AsyncClient; + client->onData(&handleData, client); + client->onConnect(&onConnect, client); + client->connect(SERVER_HOST_NAME, TCP_PORT); + +} + +void loop() { + +} diff --git a/lib/AsyncTCP-esphome/examples/ClientServer/Client/config.h b/lib/AsyncTCP-esphome/examples/ClientServer/Client/config.h new file mode 100644 index 0000000..cf51e91 --- /dev/null +++ b/lib/AsyncTCP-esphome/examples/ClientServer/Client/config.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_H +#define CONFIG_H + +/* + * This example demonstrate how to use asynchronous client & server APIs + * in order to establish tcp socket connections in client server manner. + * server is running (on port 7050) on one ESP, acts as AP, and other clients running on + * remaining ESPs acts as STAs. after connection establishment between server and clients + * there is a simple message transfer in every 2s. clients connect to server via it's host name + * (in this case 'esp_server') with help of DNS service running on server side. + * + * Note: default MSS for ESPAsyncTCP is 536 byte and defualt ACK timeout is 5s. +*/ + +#define SSID "ESP-TEST" +#define PASSWORD "123456789" + +#define SERVER_HOST_NAME "esp_server" + +#define TCP_PORT 7050 +#define DNS_PORT 53 + +#endif // CONFIG_H diff --git a/lib/AsyncTCP-esphome/library.json b/lib/AsyncTCP-esphome/library.json new file mode 100644 index 0000000..52819dc --- /dev/null +++ b/lib/AsyncTCP-esphome/library.json @@ -0,0 +1,23 @@ +{ + "name": "AsyncTCP-esphome", + "description": "Asynchronous TCP Library for ESP32", + "keywords": "async,tcp", + "authors": { + "name": "Hristo Gochkov", + "maintainer": true + }, + "repository": { + "type": "git", + "url": "https://github.com/esphome/AsyncTCP.git" + }, + "version": "2.1.3", + "license": "LGPL-3.0", + "frameworks": "arduino", + "platforms": [ + "espressif32", + "libretiny" + ], + "build": { + "libCompatMode": 2 + } +} diff --git a/lib/AsyncTCP-esphome/src/AsyncTCP.cpp b/lib/AsyncTCP-esphome/src/AsyncTCP.cpp new file mode 100644 index 0000000..592cb38 --- /dev/null +++ b/lib/AsyncTCP-esphome/src/AsyncTCP.cpp @@ -0,0 +1,1464 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "Arduino.h" + +#include "AsyncTCP.h" +extern "C"{ +#include "lwip/opt.h" +#include "lwip/tcp.h" +#include "lwip/inet.h" +#include "lwip/dns.h" +#include "lwip/err.h" +} +#if CONFIG_ASYNC_TCP_USE_WDT +#include "esp_task_wdt.h" +#endif + +/* + * TCP/IP Event Task + * */ + +typedef enum { + LWIP_TCP_SENT, LWIP_TCP_RECV, LWIP_TCP_FIN, LWIP_TCP_ERROR, LWIP_TCP_POLL, LWIP_TCP_CLEAR, LWIP_TCP_ACCEPT, LWIP_TCP_CONNECTED, LWIP_TCP_DNS +} lwip_event_t; + +typedef struct { + lwip_event_t event; + void *arg; + union { + struct { + void * pcb; + int8_t err; + } connected; + struct { + int8_t err; + } error; + struct { + tcp_pcb * pcb; + uint16_t len; + } sent; + struct { + tcp_pcb * pcb; + pbuf * pb; + int8_t err; + } recv; + struct { + tcp_pcb * pcb; + int8_t err; + } fin; + struct { + tcp_pcb * pcb; + } poll; + struct { + AsyncClient * client; + } accept; + struct { + const char * name; + ip_addr_t addr; + } dns; + }; +} lwip_event_packet_t; + +static QueueHandle_t _async_queue; +static TaskHandle_t _async_service_task_handle = NULL; + + +SemaphoreHandle_t _slots_lock; +const int _number_of_closed_slots = CONFIG_LWIP_MAX_ACTIVE_TCP; +static uint32_t _closed_slots[_number_of_closed_slots]; +static uint32_t _closed_index = []() { + _slots_lock = xSemaphoreCreateBinary(); + xSemaphoreGive(_slots_lock); + for (int i = 0; i < _number_of_closed_slots; ++ i) { + _closed_slots[i] = 1; + } + return 1; +}(); + + +static inline bool _init_async_event_queue(){ + if(!_async_queue){ + _async_queue = xQueueCreate(32, sizeof(lwip_event_packet_t *)); + if(!_async_queue){ + return false; + } + } + return true; +} + +static inline bool _send_async_event(lwip_event_packet_t ** e){ + return _async_queue && xQueueSend(_async_queue, e, portMAX_DELAY) == pdPASS; +} + +static inline bool _prepend_async_event(lwip_event_packet_t ** e){ + return _async_queue && xQueueSendToFront(_async_queue, e, portMAX_DELAY) == pdPASS; +} + +static inline bool _get_async_event(lwip_event_packet_t ** e){ + return _async_queue && xQueueReceive(_async_queue, e, portMAX_DELAY) == pdPASS; +} + +static bool _remove_events_with_arg(void * arg){ + lwip_event_packet_t * first_packet = NULL; + lwip_event_packet_t * packet = NULL; + + if(!_async_queue){ + return false; + } + //figure out which is the first packet so we can keep the order + while(!first_packet){ + if(xQueueReceive(_async_queue, &first_packet, 0) != pdPASS){ + return false; + } + //discard packet if matching + if((int)first_packet->arg == (int)arg){ + free(first_packet); + first_packet = NULL; + //return first packet to the back of the queue + } else if(xQueueSend(_async_queue, &first_packet, portMAX_DELAY) != pdPASS){ + return false; + } + } + + while(xQueuePeek(_async_queue, &packet, 0) == pdPASS && packet != first_packet){ + if(xQueueReceive(_async_queue, &packet, 0) != pdPASS){ + return false; + } + if((int)packet->arg == (int)arg){ + free(packet); + packet = NULL; + } else if(xQueueSend(_async_queue, &packet, portMAX_DELAY) != pdPASS){ + return false; + } + } + return true; +} + +static void _handle_async_event(lwip_event_packet_t * e){ + if(e->arg == NULL){ + // do nothing when arg is NULL + //ets_printf("event arg == NULL: 0x%08x\n", e->recv.pcb); + } else if(e->event == LWIP_TCP_CLEAR){ + _remove_events_with_arg(e->arg); + } else if(e->event == LWIP_TCP_RECV){ + //ets_printf("-R: 0x%08x\n", e->recv.pcb); + AsyncClient::_s_recv(e->arg, e->recv.pcb, e->recv.pb, e->recv.err); + } else if(e->event == LWIP_TCP_FIN){ + //ets_printf("-F: 0x%08x\n", e->fin.pcb); + AsyncClient::_s_fin(e->arg, e->fin.pcb, e->fin.err); + } else if(e->event == LWIP_TCP_SENT){ + //ets_printf("-S: 0x%08x\n", e->sent.pcb); + AsyncClient::_s_sent(e->arg, e->sent.pcb, e->sent.len); + } else if(e->event == LWIP_TCP_POLL){ + //ets_printf("-P: 0x%08x\n", e->poll.pcb); + AsyncClient::_s_poll(e->arg, e->poll.pcb); + } else if(e->event == LWIP_TCP_ERROR){ + //ets_printf("-E: 0x%08x %d\n", e->arg, e->error.err); + AsyncClient::_s_error(e->arg, e->error.err); + } else if(e->event == LWIP_TCP_CONNECTED){ + //ets_printf("C: 0x%08x 0x%08x %d\n", e->arg, e->connected.pcb, e->connected.err); + AsyncClient::_s_connected(e->arg, e->connected.pcb, e->connected.err); + } else if(e->event == LWIP_TCP_ACCEPT){ + //ets_printf("A: 0x%08x 0x%08x\n", e->arg, e->accept.client); + AsyncServer::_s_accepted(e->arg, e->accept.client); + } else if(e->event == LWIP_TCP_DNS){ + //ets_printf("D: 0x%08x %s = %s\n", e->arg, e->dns.name, ipaddr_ntoa(&e->dns.addr)); + AsyncClient::_s_dns_found(e->dns.name, &e->dns.addr, e->arg); + } + free((void*)(e)); +} + +static void _async_service_task(void *pvParameters){ + lwip_event_packet_t * packet = NULL; + for (;;) { + if(_get_async_event(&packet)){ +#if CONFIG_ASYNC_TCP_USE_WDT + if(esp_task_wdt_add(NULL) != ESP_OK){ + log_e("Failed to add async task to WDT"); + } +#endif + _handle_async_event(packet); +#if CONFIG_ASYNC_TCP_USE_WDT + if(esp_task_wdt_delete(NULL) != ESP_OK){ + log_e("Failed to remove loop task from WDT"); + } +#endif + } + } + vTaskDelete(NULL); + _async_service_task_handle = NULL; +} +/* +static void _stop_async_task(){ + if(_async_service_task_handle){ + vTaskDelete(_async_service_task_handle); + _async_service_task_handle = NULL; + } +} +*/ + +static bool customTaskCreateUniversal( + TaskFunction_t pxTaskCode, + const char * const pcName, + const uint32_t usStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask, + const BaseType_t xCoreID) { +#ifndef CONFIG_FREERTOS_UNICORE + if(xCoreID >= 0 && xCoreID < 2) { + return xTaskCreatePinnedToCore(pxTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask, xCoreID); + } else { +#endif + return xTaskCreate(pxTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask); +#ifndef CONFIG_FREERTOS_UNICORE + } +#endif +} + +static bool _start_async_task(){ + if(!_init_async_event_queue()){ + return false; + } + if(!_async_service_task_handle){ + customTaskCreateUniversal(_async_service_task, "async_tcp", CONFIG_ASYNC_TCP_STACK_SIZE, NULL, 3, &_async_service_task_handle, CONFIG_ASYNC_TCP_RUNNING_CORE); + if(!_async_service_task_handle){ + return false; + } + } + return true; +} + +/* + * LwIP Callbacks + * */ + +static int8_t _tcp_clear_events(void * arg) { + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->event = LWIP_TCP_CLEAR; + e->arg = arg; + if (!_prepend_async_event(&e)) { + free((void*)(e)); + } + return ERR_OK; +} + +static int8_t _tcp_connected(void * arg, tcp_pcb * pcb, int8_t err) { + //ets_printf("+C: 0x%08x\n", pcb); + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->event = LWIP_TCP_CONNECTED; + e->arg = arg; + e->connected.pcb = pcb; + e->connected.err = err; + if (!_prepend_async_event(&e)) { + free((void*)(e)); + } + return ERR_OK; +} + +static int8_t _tcp_poll(void * arg, struct tcp_pcb * pcb) { + //ets_printf("+P: 0x%08x\n", pcb); + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->event = LWIP_TCP_POLL; + e->arg = arg; + e->poll.pcb = pcb; + if (!_send_async_event(&e)) { + free((void*)(e)); + } + return ERR_OK; +} + +static int8_t _tcp_recv(void * arg, struct tcp_pcb * pcb, struct pbuf *pb, int8_t err) { + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->arg = arg; + if(pb){ + //ets_printf("+R: 0x%08x\n", pcb); + e->event = LWIP_TCP_RECV; + e->recv.pcb = pcb; + e->recv.pb = pb; + e->recv.err = err; + } else { + //ets_printf("+F: 0x%08x\n", pcb); + e->event = LWIP_TCP_FIN; + e->fin.pcb = pcb; + e->fin.err = err; + //close the PCB in LwIP thread + AsyncClient::_s_lwip_fin(e->arg, e->fin.pcb, e->fin.err); + } + if (!_send_async_event(&e)) { + free((void*)(e)); + } + return ERR_OK; +} + +static int8_t _tcp_sent(void * arg, struct tcp_pcb * pcb, uint16_t len) { + //ets_printf("+S: 0x%08x\n", pcb); + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->event = LWIP_TCP_SENT; + e->arg = arg; + e->sent.pcb = pcb; + e->sent.len = len; + if (!_send_async_event(&e)) { + free((void*)(e)); + } + return ERR_OK; +} + +static void _tcp_error(void * arg, int8_t err) { + //ets_printf("+E: 0x%08x\n", arg); + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->event = LWIP_TCP_ERROR; + e->arg = arg; + e->error.err = err; + if (!_send_async_event(&e)) { + free((void*)(e)); + } +} + +static void _tcp_dns_found(const char * name, struct ip_addr * ipaddr, void * arg) { + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + //ets_printf("+DNS: name=%s ipaddr=0x%08x arg=%x\n", name, ipaddr, arg); + e->event = LWIP_TCP_DNS; + e->arg = arg; + e->dns.name = name; + if (ipaddr) { + memcpy(&e->dns.addr, ipaddr, sizeof(struct ip_addr)); + } else { + memset(&e->dns.addr, 0, sizeof(e->dns.addr)); + } + if (!_send_async_event(&e)) { + free((void*)(e)); + } +} + +//Used to switch out from LwIP thread +static int8_t _tcp_accept(void * arg, AsyncClient * client) { + lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); + e->event = LWIP_TCP_ACCEPT; + e->arg = arg; + e->accept.client = client; + if (!_prepend_async_event(&e)) { + free((void*)(e)); + } + return ERR_OK; +} + +/* + * TCP/IP API Calls + * */ + +#include "lwip/priv/tcpip_priv.h" + +typedef struct { + struct tcpip_api_call_data call; + tcp_pcb * pcb; + int8_t closed_slot; + int8_t err; + union { + struct { + const char* data; + size_t size; + uint8_t apiflags; + } write; + size_t received; + struct { + ip_addr_t * addr; + uint16_t port; + tcp_connected_fn cb; + } connect; + struct { + ip_addr_t * addr; + uint16_t port; + } bind; + uint8_t backlog; + }; +} tcp_api_call_t; + +static err_t _tcp_output_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = ERR_CONN; + if(msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) { + msg->err = tcp_output(msg->pcb); + } + return msg->err; +} + +static esp_err_t _tcp_output(tcp_pcb * pcb, int8_t closed_slot) { + if(!pcb){ + return ERR_CONN; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = closed_slot; + tcpip_api_call(_tcp_output_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_write_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = ERR_CONN; + if(msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) { + msg->err = tcp_write(msg->pcb, msg->write.data, msg->write.size, msg->write.apiflags); + } + return msg->err; +} + +static esp_err_t _tcp_write(tcp_pcb * pcb, int8_t closed_slot, const char* data, size_t size, uint8_t apiflags) { + if(!pcb){ + return ERR_CONN; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = closed_slot; + msg.write.data = data; + msg.write.size = size; + msg.write.apiflags = apiflags; + tcpip_api_call(_tcp_write_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_recved_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = ERR_CONN; + if(msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) { + msg->err = 0; + tcp_recved(msg->pcb, msg->received); + } + return msg->err; +} + +static esp_err_t _tcp_recved(tcp_pcb * pcb, int8_t closed_slot, size_t len) { + if(!pcb){ + return ERR_CONN; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = closed_slot; + msg.received = len; + tcpip_api_call(_tcp_recved_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_close_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = ERR_CONN; + if(msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) { + msg->err = tcp_close(msg->pcb); + } + return msg->err; +} + +static esp_err_t _tcp_close(tcp_pcb * pcb, int8_t closed_slot) { + if(!pcb){ + return ERR_CONN; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = closed_slot; + tcpip_api_call(_tcp_close_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_abort_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = ERR_CONN; + if(msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) { + tcp_abort(msg->pcb); + } + return msg->err; +} + +static esp_err_t _tcp_abort(tcp_pcb * pcb, int8_t closed_slot) { + if(!pcb){ + return ERR_CONN; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = closed_slot; + tcpip_api_call(_tcp_abort_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_connect_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = tcp_connect(msg->pcb, msg->connect.addr, msg->connect.port, msg->connect.cb); + return msg->err; +} + +static esp_err_t _tcp_connect(tcp_pcb * pcb, int8_t closed_slot, ip_addr_t * addr, uint16_t port, tcp_connected_fn cb) { + if(!pcb){ + return ESP_FAIL; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = closed_slot; + msg.connect.addr = addr; + msg.connect.port = port; + msg.connect.cb = cb; + tcpip_api_call(_tcp_connect_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_bind_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = tcp_bind(msg->pcb, msg->bind.addr, msg->bind.port); + return msg->err; +} + +static esp_err_t _tcp_bind(tcp_pcb * pcb, ip_addr_t * addr, uint16_t port) { + if(!pcb){ + return ESP_FAIL; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = -1; + msg.bind.addr = addr; + msg.bind.port = port; + tcpip_api_call(_tcp_bind_api, (struct tcpip_api_call_data*)&msg); + return msg.err; +} + +static err_t _tcp_listen_api(struct tcpip_api_call_data *api_call_msg){ + tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; + msg->err = 0; + msg->pcb = tcp_listen_with_backlog(msg->pcb, msg->backlog); + return msg->err; +} + +static tcp_pcb * _tcp_listen_with_backlog(tcp_pcb * pcb, uint8_t backlog) { + if(!pcb){ + return NULL; + } + tcp_api_call_t msg; + msg.pcb = pcb; + msg.closed_slot = -1; + msg.backlog = backlog?backlog:0xFF; + tcpip_api_call(_tcp_listen_api, (struct tcpip_api_call_data*)&msg); + return msg.pcb; +} + + + +/* + Async TCP Client + */ + +AsyncClient::AsyncClient(tcp_pcb* pcb) +: _connect_cb(0) +, _connect_cb_arg(0) +, _discard_cb(0) +, _discard_cb_arg(0) +, _sent_cb(0) +, _sent_cb_arg(0) +, _error_cb(0) +, _error_cb_arg(0) +, _recv_cb(0) +, _recv_cb_arg(0) +, _pb_cb(0) +, _pb_cb_arg(0) +, _timeout_cb(0) +, _timeout_cb_arg(0) +, _ack_pcb(true) +, _tx_last_packet(0) +, _rx_timeout(0) +, _rx_last_ack(0) +, _ack_timeout(ASYNC_MAX_ACK_TIME) +, _connect_port(0) +, prev(NULL) +, next(NULL) +{ + _pcb = pcb; + _closed_slot = -1; + if(_pcb){ + _allocate_closed_slot(); + _rx_last_packet = millis(); + tcp_arg(_pcb, this); + tcp_recv(_pcb, &_tcp_recv); + tcp_sent(_pcb, &_tcp_sent); + tcp_err(_pcb, &_tcp_error); + tcp_poll(_pcb, &_tcp_poll, 1); + } +} + +AsyncClient::~AsyncClient(){ + if(_pcb) { + _close(); + } + _free_closed_slot(); +} + +/* + * Operators + * */ + +AsyncClient& AsyncClient::operator=(const AsyncClient& other){ + if (_pcb) { + _close(); + } + + _pcb = other._pcb; + _closed_slot = other._closed_slot; + if (_pcb) { + _rx_last_packet = millis(); + tcp_arg(_pcb, this); + tcp_recv(_pcb, &_tcp_recv); + tcp_sent(_pcb, &_tcp_sent); + tcp_err(_pcb, &_tcp_error); + tcp_poll(_pcb, &_tcp_poll, 1); + } + return *this; +} + +bool AsyncClient::operator==(const AsyncClient &other) { + return _pcb == other._pcb; +} + +AsyncClient & AsyncClient::operator+=(const AsyncClient &other) { + if(next == NULL){ + next = (AsyncClient*)(&other); + next->prev = this; + } else { + AsyncClient *c = next; + while(c->next != NULL) { + c = c->next; + } + c->next =(AsyncClient*)(&other); + c->next->prev = c; + } + return *this; +} + +/* + * Callback Setters + * */ + +void AsyncClient::onConnect(AcConnectHandler cb, void* arg){ + _connect_cb = cb; + _connect_cb_arg = arg; +} + +void AsyncClient::onDisconnect(AcConnectHandler cb, void* arg){ + _discard_cb = cb; + _discard_cb_arg = arg; +} + +void AsyncClient::onAck(AcAckHandler cb, void* arg){ + _sent_cb = cb; + _sent_cb_arg = arg; +} + +void AsyncClient::onError(AcErrorHandler cb, void* arg){ + _error_cb = cb; + _error_cb_arg = arg; +} + +void AsyncClient::onData(AcDataHandler cb, void* arg){ + _recv_cb = cb; + _recv_cb_arg = arg; +} + +void AsyncClient::onPacket(AcPacketHandler cb, void* arg){ + _pb_cb = cb; + _pb_cb_arg = arg; +} + +void AsyncClient::onTimeout(AcTimeoutHandler cb, void* arg){ + _timeout_cb = cb; + _timeout_cb_arg = arg; +} + +void AsyncClient::onPoll(AcConnectHandler cb, void* arg){ + _poll_cb = cb; + _poll_cb_arg = arg; +} + +/* + * Main Public Methods + * */ + +bool AsyncClient::_connect(ip_addr_t addr, uint16_t port){ + if (_pcb){ + log_w("already connected, state %d", _pcb->state); + return false; + } + if(!_start_async_task()){ + log_e("failed to start task"); + return false; + } + + tcp_pcb* pcb = tcp_new_ip_type(IPADDR_TYPE_ANY); + if (!pcb){ + log_e("pcb == NULL"); + return false; + } + + tcp_arg(pcb, this); + tcp_err(pcb, &_tcp_error); + tcp_recv(pcb, &_tcp_recv); + tcp_sent(pcb, &_tcp_sent); + tcp_poll(pcb, &_tcp_poll, 1); + _tcp_connect(pcb, _closed_slot, &addr, port,(tcp_connected_fn)&_tcp_connected); + return true; +} + +bool AsyncClient::connect(IPAddress ip, uint16_t port){ + ip_addr_t addr; + ip_addr_set_ip4_u32(&addr, ip); + + return _connect(addr, port); +} + +#if LWIP_IPV6 +bool AsyncClient::connect(IPv6Address ip, uint16_t port){ + ip_addr_t addr; + addr.type = IPADDR_TYPE_V6; + memcpy(addr.u_addr.ip6.addr, static_cast(ip), sizeof(uint32_t) * 4); + + return _connect(addr, port); +} +#endif + +bool AsyncClient::connect(const char* host, uint16_t port){ + ip_addr_t addr; + + if(!_start_async_task()){ + log_e("failed to start task"); + return false; + } + + err_t err = dns_gethostbyname(host, &addr, (dns_found_callback)&_tcp_dns_found, this); + if(err == ERR_OK) { +#if LWIP_IPV6 + if(addr.type == IPADDR_TYPE_V6) { + return connect(IPv6Address(addr.u_addr.ip6.addr), port); + } + return connect(IPAddress(addr.u_addr.ip4.addr), port); +#else + return connect(IPAddress(addr.addr), port); +#endif + } else if(err == ERR_INPROGRESS) { + _connect_port = port; + return true; + } + log_e("error: %d", err); + return false; +} + +void AsyncClient::close(bool now){ + if(_pcb){ + _tcp_recved(_pcb, _closed_slot, _rx_ack_len); + } + _close(); +} + +int8_t AsyncClient::abort(){ + if(_pcb) { + _tcp_abort(_pcb, _closed_slot ); + _pcb = NULL; + } + return ERR_ABRT; +} + +size_t AsyncClient::space(){ + if((_pcb != NULL) && (_pcb->state == 4)){ + return tcp_sndbuf(_pcb); + } + return 0; +} + +size_t AsyncClient::add(const char* data, size_t size, uint8_t apiflags) { + if(!_pcb || size == 0 || data == NULL) { + return 0; + } + size_t room = space(); + if(!room) { + return 0; + } + size_t will_send = (room < size) ? room : size; + int8_t err = ERR_OK; + err = _tcp_write(_pcb, _closed_slot, data, will_send, apiflags); + if(err != ERR_OK) { + return 0; + } + return will_send; +} + +bool AsyncClient::send(){ + auto backup = _tx_last_packet; + _tx_last_packet = millis(); + if (_tcp_output(_pcb, _closed_slot) == ERR_OK) { + return true; + } + _tx_last_packet = backup; + return false; +} + +size_t AsyncClient::ack(size_t len){ + if(len > _rx_ack_len) + len = _rx_ack_len; + if(len){ + _tcp_recved(_pcb, _closed_slot, len); + } + _rx_ack_len -= len; + return len; +} + +void AsyncClient::ackPacket(struct pbuf * pb){ + if(!pb){ + return; + } + _tcp_recved(_pcb, _closed_slot, pb->len); + pbuf_free(pb); +} + +/* + * Main Private Methods + * */ + +int8_t AsyncClient::_close(){ + //ets_printf("X: 0x%08x\n", (uint32_t)this); + int8_t err = ERR_OK; + if(_pcb) { + //log_i(""); + tcp_arg(_pcb, NULL); + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + tcp_poll(_pcb, NULL, 0); + _tcp_clear_events(this); + err = _tcp_close(_pcb, _closed_slot); + if(err != ERR_OK) { + err = abort(); + } + _pcb = NULL; + if(_discard_cb) { + _discard_cb(_discard_cb_arg, this); + } + } + return err; +} + +void AsyncClient::_allocate_closed_slot(){ + xSemaphoreTake(_slots_lock, portMAX_DELAY); + uint32_t closed_slot_min_index = 0; + for (int i = 0; i < _number_of_closed_slots; ++ i) { + if ((_closed_slot == -1 || _closed_slots[i] <= closed_slot_min_index) && _closed_slots[i] != 0) { + closed_slot_min_index = _closed_slots[i]; + _closed_slot = i; + } + } + if (_closed_slot != -1) { + _closed_slots[_closed_slot] = 0; + } + xSemaphoreGive(_slots_lock); +} + +void AsyncClient::_free_closed_slot(){ + if (_closed_slot != -1) { + _closed_slots[_closed_slot] = _closed_index; + _closed_slot = -1; + ++ _closed_index; + } +} + +/* + * Private Callbacks + * */ + +int8_t AsyncClient::_connected(void* pcb, int8_t err){ + _pcb = reinterpret_cast(pcb); + if(_pcb){ + _rx_last_packet = millis(); +// tcp_recv(_pcb, &_tcp_recv); +// tcp_sent(_pcb, &_tcp_sent); +// tcp_poll(_pcb, &_tcp_poll, 1); + } + if(_connect_cb) { + _connect_cb(_connect_cb_arg, this); + } + return ERR_OK; +} + +void AsyncClient::_error(int8_t err) { + if(_pcb){ + tcp_arg(_pcb, NULL); + if(_pcb->state == LISTEN) { + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + tcp_poll(_pcb, NULL, 0); + } + _pcb = NULL; + } + if(_error_cb) { + _error_cb(_error_cb_arg, this, err); + } + if(_discard_cb) { + _discard_cb(_discard_cb_arg, this); + } +} + +//In LwIP Thread +int8_t AsyncClient::_lwip_fin(tcp_pcb* pcb, int8_t err) { + if(!_pcb || pcb != _pcb){ + log_e("0x%08x != 0x%08x", (uint32_t)pcb, (uint32_t)_pcb); + return ERR_OK; + } + tcp_arg(_pcb, NULL); + if(_pcb->state == LISTEN) { + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + tcp_poll(_pcb, NULL, 0); + } + if(tcp_close(_pcb) != ERR_OK) { + tcp_abort(_pcb); + } + _free_closed_slot(); + _pcb = NULL; + return ERR_OK; +} + +//In Async Thread +int8_t AsyncClient::_fin(tcp_pcb* pcb, int8_t err) { + _tcp_clear_events(this); + if(_discard_cb) { + _discard_cb(_discard_cb_arg, this); + } + return ERR_OK; +} + +int8_t AsyncClient::_sent(tcp_pcb* pcb, uint16_t len) { + _rx_last_packet = millis(); + _rx_last_ack = millis(); + //log_i("%u", len); + if(_sent_cb) { + _sent_cb(_sent_cb_arg, this, len, (millis() - _tx_last_packet)); + } + return ERR_OK; +} + +int8_t AsyncClient::_recv(tcp_pcb* pcb, pbuf* pb, int8_t err) { + while(pb != NULL) { + _rx_last_packet = millis(); + //we should not ack before we assimilate the data + _ack_pcb = true; + pbuf *b = pb; + pb = b->next; + b->next = NULL; + if(_pb_cb){ + _pb_cb(_pb_cb_arg, this, b); + } else { + if(_recv_cb) { + _recv_cb(_recv_cb_arg, this, b->payload, b->len); + } + if(!_ack_pcb) { + _rx_ack_len += b->len; + } else if(_pcb) { + _tcp_recved(_pcb, _closed_slot, b->len); + } + pbuf_free(b); + } + } + return ERR_OK; +} + +int8_t AsyncClient::_poll(tcp_pcb* pcb){ + if(!_pcb){ + log_w("pcb is NULL"); + return ERR_OK; + } + if(pcb != _pcb){ + log_e("0x%08x != 0x%08x", (uint32_t)pcb, (uint32_t)_pcb); + return ERR_OK; + } + + uint32_t now = millis(); + + // ACK Timeout + if(_ack_timeout){ + const uint32_t one_day = 86400000; + bool last_tx_is_after_last_ack = (_rx_last_ack - _tx_last_packet + one_day) < one_day; + if(last_tx_is_after_last_ack && (now - _tx_last_packet) >= _ack_timeout) { + log_w("ack timeout %d", pcb->state); + if(_timeout_cb) + _timeout_cb(_timeout_cb_arg, this, (now - _tx_last_packet)); + return ERR_OK; + } + } + // RX Timeout + if(_rx_timeout && (now - _rx_last_packet) >= (_rx_timeout * 1000)) { + log_w("rx timeout %d", pcb->state); + _close(); + return ERR_OK; + } + // Everything is fine + if(_poll_cb) { + _poll_cb(_poll_cb_arg, this); + } + return ERR_OK; +} + +void AsyncClient::_dns_found(struct ip_addr *ipaddr){ + if(ipaddr && IP_IS_V4(ipaddr)){ + connect(IPAddress(ip_addr_get_ip4_u32(ipaddr)), _connect_port); +#if LWIP_IPV6 + } else if(ipaddr && ipaddr->u_addr.ip6.addr){ + connect(IPv6Address(ipaddr->u_addr.ip6.addr), _connect_port); +#endif + } else { + if(_error_cb) { + _error_cb(_error_cb_arg, this, -55); + } + if(_discard_cb) { + _discard_cb(_discard_cb_arg, this); + } + } +} + +/* + * Public Helper Methods + * */ + +void AsyncClient::stop() { + close(false); +} + +bool AsyncClient::free(){ + if(!_pcb) { + return true; + } + if(_pcb->state == 0 || _pcb->state > 4) { + return true; + } + return false; +} + +size_t AsyncClient::write(const char* data) { + if(data == NULL) { + return 0; + } + return write(data, strlen(data)); +} + +size_t AsyncClient::write(const char* data, size_t size, uint8_t apiflags) { + size_t will_send = add(data, size, apiflags); + if(!will_send || !send()) { + return 0; + } + return will_send; +} + +void AsyncClient::setRxTimeout(uint32_t timeout){ + _rx_timeout = timeout; +} + +uint32_t AsyncClient::getRxTimeout(){ + return _rx_timeout; +} + +uint32_t AsyncClient::getAckTimeout(){ + return _ack_timeout; +} + +void AsyncClient::setAckTimeout(uint32_t timeout){ + _ack_timeout = timeout; +} + +void AsyncClient::setNoDelay(bool nodelay){ + if(!_pcb) { + return; + } + if(nodelay) { + tcp_nagle_disable(_pcb); + } else { + tcp_nagle_enable(_pcb); + } +} + +bool AsyncClient::getNoDelay(){ + if(!_pcb) { + return false; + } + return tcp_nagle_disabled(_pcb); +} + +uint16_t AsyncClient::getMss(){ + if(!_pcb) { + return 0; + } + return tcp_mss(_pcb); +} + +uint32_t AsyncClient::getRemoteAddress() { + if(!_pcb) { + return 0; + } +#if LWIP_IPV4 && LWIP_IPV6 + return _pcb->remote_ip.u_addr.ip4.addr; +#else + return _pcb->remote_ip.addr; +#endif +} + +#if LWIP_IPV6 +ip6_addr_t AsyncClient::getRemoteAddress6() { + if(!_pcb) { + ip6_addr_t nulladdr; + ip6_addr_set_zero(&nulladdr); + return nulladdr; + } + return _pcb->remote_ip.u_addr.ip6; +} + +ip6_addr_t AsyncClient::getLocalAddress6() { + if(!_pcb) { + ip6_addr_t nulladdr; + ip6_addr_set_zero(&nulladdr); + return nulladdr; + } + return _pcb->local_ip.u_addr.ip6; +} + +IPv6Address AsyncClient::remoteIP6() { + return IPv6Address(getRemoteAddress6().addr); +} + +IPv6Address AsyncClient::localIP6() { + return IPv6Address(getLocalAddress6().addr); +} +#endif + +uint16_t AsyncClient::getRemotePort() { + if(!_pcb) { + return 0; + } + return _pcb->remote_port; +} + +uint32_t AsyncClient::getLocalAddress() { + if(!_pcb) { + return 0; + } +#if LWIP_IPV4 && LWIP_IPV6 + return _pcb->local_ip.u_addr.ip4.addr; +#else + return _pcb->local_ip.addr; +#endif +} + +uint16_t AsyncClient::getLocalPort() { + if(!_pcb) { + return 0; + } + return _pcb->local_port; +} + +IPAddress AsyncClient::remoteIP() { + return IPAddress(getRemoteAddress()); +} + +uint16_t AsyncClient::remotePort() { + return getRemotePort(); +} + +IPAddress AsyncClient::localIP() { + return IPAddress(getLocalAddress()); +} + + +uint16_t AsyncClient::localPort() { + return getLocalPort(); +} + +uint8_t AsyncClient::state() { + if(!_pcb) { + return 0; + } + return _pcb->state; +} + +bool AsyncClient::connected(){ + if (!_pcb) { + return false; + } + return _pcb->state == 4; +} + +bool AsyncClient::connecting(){ + if (!_pcb) { + return false; + } + return _pcb->state > 0 && _pcb->state < 4; +} + +bool AsyncClient::disconnecting(){ + if (!_pcb) { + return false; + } + return _pcb->state > 4 && _pcb->state < 10; +} + +bool AsyncClient::disconnected(){ + if (!_pcb) { + return true; + } + return _pcb->state == 0 || _pcb->state == 10; +} + +bool AsyncClient::freeable(){ + if (!_pcb) { + return true; + } + return _pcb->state == 0 || _pcb->state > 4; +} + +bool AsyncClient::canSend(){ + return space() > 0; +} + +const char * AsyncClient::errorToString(int8_t error){ + switch(error){ + case ERR_OK: return "OK"; + case ERR_MEM: return "Out of memory error"; + case ERR_BUF: return "Buffer error"; + case ERR_TIMEOUT: return "Timeout"; + case ERR_RTE: return "Routing problem"; + case ERR_INPROGRESS: return "Operation in progress"; + case ERR_VAL: return "Illegal value"; + case ERR_WOULDBLOCK: return "Operation would block"; + case ERR_USE: return "Address in use"; + case ERR_ALREADY: return "Already connected"; + case ERR_CONN: return "Not connected"; + case ERR_IF: return "Low-level netif error"; + case ERR_ABRT: return "Connection aborted"; + case ERR_RST: return "Connection reset"; + case ERR_CLSD: return "Connection closed"; + case ERR_ARG: return "Illegal argument"; + case -55: return "DNS failed"; + default: return "UNKNOWN"; + } +} + +const char * AsyncClient::stateToString(){ + switch(state()){ + case 0: return "Closed"; + case 1: return "Listen"; + case 2: return "SYN Sent"; + case 3: return "SYN Received"; + case 4: return "Established"; + case 5: return "FIN Wait 1"; + case 6: return "FIN Wait 2"; + case 7: return "Close Wait"; + case 8: return "Closing"; + case 9: return "Last ACK"; + case 10: return "Time Wait"; + default: return "UNKNOWN"; + } +} + +/* + * Static Callbacks (LwIP C2C++ interconnect) + * */ + +void AsyncClient::_s_dns_found(const char * name, struct ip_addr * ipaddr, void * arg){ + reinterpret_cast(arg)->_dns_found(ipaddr); +} + +int8_t AsyncClient::_s_poll(void * arg, struct tcp_pcb * pcb) { + return reinterpret_cast(arg)->_poll(pcb); +} + +int8_t AsyncClient::_s_recv(void * arg, struct tcp_pcb * pcb, struct pbuf *pb, int8_t err) { + return reinterpret_cast(arg)->_recv(pcb, pb, err); +} + +int8_t AsyncClient::_s_fin(void * arg, struct tcp_pcb * pcb, int8_t err) { + return reinterpret_cast(arg)->_fin(pcb, err); +} + +int8_t AsyncClient::_s_lwip_fin(void * arg, struct tcp_pcb * pcb, int8_t err) { + return reinterpret_cast(arg)->_lwip_fin(pcb, err); +} + +int8_t AsyncClient::_s_sent(void * arg, struct tcp_pcb * pcb, uint16_t len) { + return reinterpret_cast(arg)->_sent(pcb, len); +} + +void AsyncClient::_s_error(void * arg, int8_t err) { + reinterpret_cast(arg)->_error(err); +} + +int8_t AsyncClient::_s_connected(void * arg, void * pcb, int8_t err){ + return reinterpret_cast(arg)->_connected(pcb, err); +} + +/* + Async TCP Server + */ + +AsyncServer::AsyncServer(IPAddress addr, uint16_t port) +: _port(port) +, _bind4(true) +, _addr(addr) +, _noDelay(false) +, _pcb(0) +, _connect_cb(0) +, _connect_cb_arg(0) +{} + +AsyncServer::AsyncServer(IPv6Address addr, uint16_t port) +: _port(port) +, _bind6(true) +, _addr6(addr) +, _noDelay(false) +, _pcb(0) +, _connect_cb(0) +, _connect_cb_arg(0) +{} + +AsyncServer::AsyncServer(uint16_t port) +: _port(port) +, _bind4(true) +, _bind6(true) +, _addr((uint32_t) IPADDR_ANY) +, _addr6() +, _noDelay(false) +, _pcb(0) +, _connect_cb(0) +, _connect_cb_arg(0) +{} + +AsyncServer::~AsyncServer(){ + end(); +} + +void AsyncServer::onClient(AcConnectHandler cb, void* arg){ + _connect_cb = cb; + _connect_cb_arg = arg; +} + +void AsyncServer::begin(){ + if(_pcb) { + return; + } + + if(!_start_async_task()){ + log_e("failed to start task"); + return; + } + int8_t err, bind_type; + + if(_bind4 && _bind6) { + bind_type = IPADDR_TYPE_ANY; + } else if (_bind6) { + bind_type = IPADDR_TYPE_V6; + } else { + bind_type = IPADDR_TYPE_V4; + } + + _pcb = tcp_new_ip_type(bind_type); + if (!_pcb){ + log_e("_pcb == NULL"); + return; + } + + ip_addr_t local_addr; + ip_addr_set_ip4_u32(&local_addr, _addr); +/* local_addr.type = bind_type; + local_addr.u_addr.ip4.addr = (uint32_t) _addr; + memcpy(local_addr.u_addr.ip6.addr, static_cast(_addr6), sizeof(uint32_t) * 4); */ + err = _tcp_bind(_pcb, &local_addr, _port); + + if (err != ERR_OK) { + _tcp_close(_pcb, -1); + log_e("bind error: %d", err); + return; + } + + static uint8_t backlog = 5; + _pcb = _tcp_listen_with_backlog(_pcb, backlog); + if (!_pcb) { + log_e("listen_pcb == NULL"); + return; + } + tcp_arg(_pcb, (void*) this); + tcp_accept(_pcb, &_s_accept); +} + +void AsyncServer::end(){ + if(_pcb){ + tcp_arg(_pcb, NULL); + tcp_accept(_pcb, NULL); + if(tcp_close(_pcb) != ERR_OK){ + _tcp_abort(_pcb, -1); + } + _pcb = NULL; + } +} + +//runs on LwIP thread +int8_t AsyncServer::_accept(tcp_pcb* pcb, int8_t err){ + //ets_printf("+A: 0x%08x\n", pcb); + if(_connect_cb){ + AsyncClient *c = new AsyncClient(pcb); + if(c){ + c->setNoDelay(_noDelay); + return _tcp_accept(this, c); + } + } + if(tcp_close(pcb) != ERR_OK){ + tcp_abort(pcb); + } + log_e("FAIL"); + return ERR_OK; +} + +int8_t AsyncServer::_accepted(AsyncClient* client){ + if(_connect_cb){ + _connect_cb(_connect_cb_arg, client); + } + return ERR_OK; +} + +void AsyncServer::setNoDelay(bool nodelay){ + _noDelay = nodelay; +} + +bool AsyncServer::getNoDelay(){ + return _noDelay; +} + +uint8_t AsyncServer::status(){ + if (!_pcb) { + return 0; + } + return _pcb->state; +} + +int8_t AsyncServer::_s_accept(void * arg, tcp_pcb * pcb, int8_t err){ + return reinterpret_cast(arg)->_accept(pcb, err); +} + +int8_t AsyncServer::_s_accepted(void *arg, AsyncClient* client){ + return reinterpret_cast(arg)->_accepted(client); +} diff --git a/lib/AsyncTCP-esphome/src/AsyncTCP.h b/lib/AsyncTCP-esphome/src/AsyncTCP.h new file mode 100644 index 0000000..32edaa9 --- /dev/null +++ b/lib/AsyncTCP-esphome/src/AsyncTCP.h @@ -0,0 +1,247 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef ASYNCTCP_H_ +#define ASYNCTCP_H_ + +#include "IPAddress.h" +#include "IPv6Address.h" +#include +#include "lwip/ip_addr.h" +#include "lwip/ip6_addr.h" + +#ifndef LIBRETINY +#include "sdkconfig.h" +extern "C" { + #include "freertos/semphr.h" + #include "lwip/pbuf.h" +} +#else +extern "C" { + #include + #include +} +#define CONFIG_ASYNC_TCP_RUNNING_CORE -1 //any available core +#define CONFIG_ASYNC_TCP_USE_WDT 0 +#endif + +//If core is not defined, then we are running in Arduino or PIO +#ifndef CONFIG_ASYNC_TCP_RUNNING_CORE +#define CONFIG_ASYNC_TCP_RUNNING_CORE -1 //any available core +#define CONFIG_ASYNC_TCP_USE_WDT 1 //if enabled, adds between 33us and 200us per event +#endif + +#ifndef CONFIG_ASYNC_TCP_STACK_SIZE +#define CONFIG_ASYNC_TCP_STACK_SIZE 8192 * 2 +#endif + +class AsyncClient; + +#define ASYNC_MAX_ACK_TIME 5000 +#define ASYNC_WRITE_FLAG_COPY 0x01 //will allocate new buffer to hold the data while sending (else will hold reference to the data given) +#define ASYNC_WRITE_FLAG_MORE 0x02 //will not send PSH flag, meaning that there should be more data to be sent before the application should react. + +typedef std::function AcConnectHandler; +typedef std::function AcAckHandler; +typedef std::function AcErrorHandler; +typedef std::function AcDataHandler; +typedef std::function AcPacketHandler; +typedef std::function AcTimeoutHandler; + +struct tcp_pcb; +struct ip_addr; + +class AsyncClient { + public: + AsyncClient(tcp_pcb* pcb = 0); + ~AsyncClient(); + + AsyncClient & operator=(const AsyncClient &other); + AsyncClient & operator+=(const AsyncClient &other); + + bool operator==(const AsyncClient &other); + + bool operator!=(const AsyncClient &other) { + return !(*this == other); + } + bool connect(IPAddress ip, uint16_t port); + bool connect(IPv6Address ip, uint16_t port); + bool connect(const char *host, uint16_t port); + void close(bool now = false); + void stop(); + int8_t abort(); + bool free(); + + bool canSend();//ack is not pending + size_t space();//space available in the TCP window + size_t add(const char* data, size_t size, uint8_t apiflags=ASYNC_WRITE_FLAG_COPY);//add for sending + bool send();//send all data added with the method above + + //write equals add()+send() + size_t write(const char* data); + size_t write(const char* data, size_t size, uint8_t apiflags=ASYNC_WRITE_FLAG_COPY); //only when canSend() == true + + uint8_t state(); + bool connecting(); + bool connected(); + bool disconnecting(); + bool disconnected(); + bool freeable();//disconnected or disconnecting + + uint16_t getMss(); + + uint32_t getRxTimeout(); + void setRxTimeout(uint32_t timeout);//no RX data timeout for the connection in seconds + + uint32_t getAckTimeout(); + void setAckTimeout(uint32_t timeout);//no ACK timeout for the last sent packet in milliseconds + + void setNoDelay(bool nodelay); + bool getNoDelay(); + + uint32_t getRemoteAddress(); + uint16_t getRemotePort(); + uint32_t getLocalAddress(); + uint16_t getLocalPort(); +#if LWIP_IPV6 + ip6_addr_t getRemoteAddress6(); + ip6_addr_t getLocalAddress6(); + IPv6Address remoteIP6(); + IPv6Address localIP6(); +#endif + + //compatibility + IPAddress remoteIP(); + uint16_t remotePort(); + IPAddress localIP(); + uint16_t localPort(); + + void onConnect(AcConnectHandler cb, void* arg = 0); //on successful connect + void onDisconnect(AcConnectHandler cb, void* arg = 0); //disconnected + void onAck(AcAckHandler cb, void* arg = 0); //ack received + void onError(AcErrorHandler cb, void* arg = 0); //unsuccessful connect or error + void onData(AcDataHandler cb, void* arg = 0); //data received (called if onPacket is not used) + void onPacket(AcPacketHandler cb, void* arg = 0); //data received + void onTimeout(AcTimeoutHandler cb, void* arg = 0); //ack timeout + void onPoll(AcConnectHandler cb, void* arg = 0); //every 125ms when connected + + void ackPacket(struct pbuf * pb);//ack pbuf from onPacket + size_t ack(size_t len); //ack data that you have not acked using the method below + void ackLater(){ _ack_pcb = false; } //will not ack the current packet. Call from onData + + const char * errorToString(int8_t error); + const char * stateToString(); + + //Do not use any of the functions below! + static int8_t _s_poll(void *arg, struct tcp_pcb *tpcb); + static int8_t _s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, int8_t err); + static int8_t _s_fin(void *arg, struct tcp_pcb *tpcb, int8_t err); + static int8_t _s_lwip_fin(void *arg, struct tcp_pcb *tpcb, int8_t err); + static void _s_error(void *arg, int8_t err); + static int8_t _s_sent(void *arg, struct tcp_pcb *tpcb, uint16_t len); + static int8_t _s_connected(void* arg, void* tpcb, int8_t err); + static void _s_dns_found(const char *name, struct ip_addr *ipaddr, void *arg); + + int8_t _recv(tcp_pcb* pcb, pbuf* pb, int8_t err); + tcp_pcb * pcb(){ return _pcb; } + + protected: + bool _connect(ip_addr_t addr, uint16_t port); + + tcp_pcb* _pcb; + int8_t _closed_slot; + + AcConnectHandler _connect_cb; + void* _connect_cb_arg; + AcConnectHandler _discard_cb; + void* _discard_cb_arg; + AcAckHandler _sent_cb; + void* _sent_cb_arg; + AcErrorHandler _error_cb; + void* _error_cb_arg; + AcDataHandler _recv_cb; + void* _recv_cb_arg; + AcPacketHandler _pb_cb; + void* _pb_cb_arg; + AcTimeoutHandler _timeout_cb; + void* _timeout_cb_arg; + AcConnectHandler _poll_cb; + void* _poll_cb_arg; + + bool _ack_pcb; + uint32_t _tx_last_packet; + uint32_t _rx_ack_len; + uint32_t _rx_last_packet; + uint32_t _rx_timeout; + uint32_t _rx_last_ack; + uint32_t _ack_timeout; + uint16_t _connect_port; + + int8_t _close(); + void _free_closed_slot(); + void _allocate_closed_slot(); + int8_t _connected(void* pcb, int8_t err); + void _error(int8_t err); + int8_t _poll(tcp_pcb* pcb); + int8_t _sent(tcp_pcb* pcb, uint16_t len); + int8_t _fin(tcp_pcb* pcb, int8_t err); + int8_t _lwip_fin(tcp_pcb* pcb, int8_t err); + void _dns_found(struct ip_addr *ipaddr); + + public: + AsyncClient* prev; + AsyncClient* next; +}; + +class AsyncServer { + public: + AsyncServer(IPAddress addr, uint16_t port); + AsyncServer(IPv6Address addr, uint16_t port); + AsyncServer(uint16_t port); + ~AsyncServer(); + void onClient(AcConnectHandler cb, void* arg); + void begin(); + void end(); + void setNoDelay(bool nodelay); + bool getNoDelay(); + uint8_t status(); + + //Do not use any of the functions below! + static int8_t _s_accept(void *arg, tcp_pcb* newpcb, int8_t err); + static int8_t _s_accepted(void *arg, AsyncClient* client); + + protected: + uint16_t _port; + bool _bind4 = false; + bool _bind6 = false; + IPAddress _addr; + IPv6Address _addr6; + bool _noDelay; + tcp_pcb* _pcb; + AcConnectHandler _connect_cb; + void* _connect_cb_arg; + + int8_t _accept(tcp_pcb* newpcb, int8_t err); + int8_t _accepted(AsyncClient* client); +}; + + +#endif /* ASYNCTCP_H_ */ diff --git a/lib/AsyncTCP/src/IPv6Address.cpp b/lib/AsyncTCP/src/IPv6Address.cpp new file mode 100644 index 0000000..7d3c0de --- /dev/null +++ b/lib/AsyncTCP/src/IPv6Address.cpp @@ -0,0 +1,90 @@ +/* + IPv6Address.cpp - Base class that provides IPv6Address + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include + +IPv6Address::IPv6Address() +{ + memset(_address.bytes, 0, sizeof(_address.bytes)); +} + +IPv6Address::IPv6Address(const uint8_t *address) +{ + memcpy(_address.bytes, address, sizeof(_address.bytes)); +} + +IPv6Address::IPv6Address(const uint32_t *address) +{ + memcpy(_address.bytes, (const uint8_t *)address, sizeof(_address.bytes)); +} + +IPv6Address& IPv6Address::operator=(const uint8_t *address) +{ + memcpy(_address.bytes, address, sizeof(_address.bytes)); + return *this; +} + +bool IPv6Address::operator==(const uint8_t* addr) const +{ + return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0; +} + +size_t IPv6Address::printTo(Print& p) const +{ + size_t n = 0; + for(int i = 0; i < 16; i+=2) { + if(i){ + n += p.print(':'); + } + n += p.printf("%02x", _address.bytes[i]); + n += p.printf("%02x", _address.bytes[i+1]); + + } + return n; +} + +String IPv6Address::toString() const +{ + char szRet[40]; + sprintf(szRet,"%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", + _address.bytes[0], _address.bytes[1], _address.bytes[2], _address.bytes[3], + _address.bytes[4], _address.bytes[5], _address.bytes[6], _address.bytes[7], + _address.bytes[8], _address.bytes[9], _address.bytes[10], _address.bytes[11], + _address.bytes[12], _address.bytes[13], _address.bytes[14], _address.bytes[15]); + return String(szRet); +} + +bool IPv6Address::fromString(const char *address) +{ + //format 0011:2233:4455:6677:8899:aabb:ccdd:eeff + if(strlen(address) != 39){ + return false; + } + char * pos = (char *)address; + size_t i = 0; + for(i = 0; i < 16; i+=2) { + if(!sscanf(pos, "%2hhx", &_address.bytes[i]) || !sscanf(pos+2, "%2hhx", &_address.bytes[i+1])){ + return false; + } + pos += 5; + } + return true; +} diff --git a/lib/AsyncTCP/src/IPv6Address.h b/lib/AsyncTCP/src/IPv6Address.h new file mode 100644 index 0000000..e61d0e7 --- /dev/null +++ b/lib/AsyncTCP/src/IPv6Address.h @@ -0,0 +1,94 @@ +/* + IPv6Address.h - Base class that provides IPv6Address + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef IPv6Address_h +#define IPv6Address_h + +#include +#include +#include + +// A class to make it easier to handle and pass around IP addresses + +class IPv6Address: public Printable +{ +private: + union { + uint8_t bytes[16]; // IPv4 address + uint32_t dword[4]; + } _address; + + // Access the raw byte array containing the address. Because this returns a pointer + // to the internal structure rather than a copy of the address this function should only + // be used when you know that the usage of the returned uint8_t* will be transient and not + // stored. + uint8_t* raw_address() + { + return _address.bytes; + } + +public: + // Constructors + IPv6Address(); + IPv6Address(const uint8_t *address); + IPv6Address(const uint32_t *address); + virtual ~IPv6Address() {} + + bool fromString(const char *address); + bool fromString(const String &address) { return fromString(address.c_str()); } + + operator const uint8_t*() const + { + return _address.bytes; + } + operator const uint32_t*() const + { + return _address.dword; + } + bool operator==(const IPv6Address& addr) const + { + return (_address.dword[0] == addr._address.dword[0]) + && (_address.dword[1] == addr._address.dword[1]) + && (_address.dword[2] == addr._address.dword[2]) + && (_address.dword[3] == addr._address.dword[3]); + } + bool operator==(const uint8_t* addr) const; + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const + { + return _address.bytes[index]; + } + uint8_t& operator[](int index) + { + return _address.bytes[index]; + } + + // Overloaded copy operators to allow initialisation of IPv6Address objects from other types + IPv6Address& operator=(const uint8_t *address); + + virtual size_t printTo(Print& p) const; + String toString() const; + + friend class UDP; + friend class Client; + friend class Server; +}; + +#endif diff --git a/lib/CRC16/.github/workflows/main.yml b/lib/CRC16/.github/workflows/main.yml new file mode 100644 index 0000000..c14cedc --- /dev/null +++ b/lib/CRC16/.github/workflows/main.yml @@ -0,0 +1,11 @@ +name: Arduino_CI + +on: [push, pull_request] + +jobs: + arduino_ci: + name: "Arduino CI - OS(Ubuntu)" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: Arduino-CI/action@master diff --git a/lib/CRC16/library.json b/lib/CRC16/library.json new file mode 100644 index 0000000..4e1e05c --- /dev/null +++ b/lib/CRC16/library.json @@ -0,0 +1,18 @@ +{ + "name": "Crc16", + "keywords": "CRC, crc, crc16", + "description": "Arduino Library for CRC-16 checks", + "authors": [ + { + "name": "Vincenzo Mennella", + "maintainer": true + } + ], + "repository": { + "type": "git", + "url": "https://https://github.com/vinmenn/Crc16.git" + }, + "version": "0.1.2", + "frameworks": "arduino", + "platforms": "*" +} diff --git a/lib/CRC16/library.properties b/lib/CRC16/library.properties new file mode 100644 index 0000000..f57ca5b --- /dev/null +++ b/lib/CRC16/library.properties @@ -0,0 +1,11 @@ +name=Crc16 +version=0.1.2 +author=Vincenzo Mennella +maintainer=Hugo Arganda +sentence=CRC16 Library +paragraph=CRC16 Library +category=Data Processing +url=https://github.com/vinmenn/Crc16.git +architectures=* +includes=Crc16.h +depends= diff --git a/lib/CRC16/src/Crc16.cpp b/lib/CRC16/src/Crc16.cpp new file mode 100644 index 0000000..ce29233 --- /dev/null +++ b/lib/CRC16/src/Crc16.cpp @@ -0,0 +1,163 @@ +#include "Crc16.h" + +//--------------------------------------------------- +// Initialize crc calculation +//--------------------------------------------------- +void Crc16::clearCrc() +{ + _crc = _xorIn; +} + +//--------------------------------------------------- +// Update crc with new data +//--------------------------------------------------- +void Crc16::updateCrc(uint8_t data) +{ + if (_reflectIn != 0) + data = (uint8_t)reflect(data); + + int j = 0x80; + + while (j > 0) + { + uint16_t bit = (uint16_t)(_crc & _msbMask); + + _crc <<= 1; + + if ((data & j) != 0) + { + bit = (uint16_t)(bit ^ _msbMask); + } + + if (bit != 0) + { + _crc ^= _polynomial; + } + + j >>= 1; + } +} + +//--------------------------------------------------- +// Get final crc value +//--------------------------------------------------- +uint16_t Crc16::getCrc() +{ + if (_reflectOut != 0) + _crc = (unsigned int)((reflect(_crc) ^ _xorOut) & _mask); + + return _crc; +} + +//--------------------------------------------------- +// Calculate generic crc code on data array +// Examples of crc 16: +// Kermit: width=16 poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 +// Modbus: width=16 poly=0x8005 init=0xffff refin=true refout=true xorout=0x0000 check=0x4b37 +// XModem: width=16 poly=0x1021 init=0x0000 refin=false refout=false xorout=0x0000 check=0x31c3 +// CCITT-False: width=16 poly=0x1021 init=0xffff refin=false refout=false xorout=0x0000 check=0x29b1 +//--------------------------------------------------- +unsigned int Crc16::fastCrc(uint8_t data[], uint8_t start, uint16_t length, uint8_t reflectIn, uint8_t reflectOut, uint16_t polynomial, uint16_t xorIn, uint16_t xorOut, uint16_t msbMask, uint16_t mask) +{ + uint16_t crc = xorIn; + + int j; + uint8_t c; + unsigned int bit; + + if (length == 0) + return crc; + + for (int i = start; i < (start + length); i++) + { + c = data[i]; + + if (reflectIn != 0) + c = (uint8_t)reflect(c); + + j = 0x80; + + while (j > 0) + { + bit = (unsigned int)(crc & msbMask); + crc <<= 1; + + if ((c & j) != 0) + { + bit = (unsigned int)(bit ^ msbMask); + } + + if (bit != 0) + { + crc ^= polynomial; + } + + j >>= 1; + } + } + + if (reflectOut != 0) + crc = (unsigned int)((reflect((uint16_t)crc) ^ xorOut) & mask); + + return crc; +} + +//------------------------------------------------------- +// Reflects bit in a uint8_t +//------------------------------------------------------- +uint8_t Crc16::reflect(uint8_t data) +{ + const uint8_t bits = 8; + unsigned long reflection = 0x00000000; + // Reflect the data about the center bit. + for (uint8_t bit = 0; bit < bits; bit++) + { + // If the LSB bit is set, set the reflection of it. + if ((data & 0x01) != 0) + { + reflection |= (unsigned long)(1 << ((bits - 1) - bit)); + } + + data = (uint8_t)(data >> 1); + } + + return reflection; +} + +//------------------------------------------------------- +// Reflects bit in a uint16_t +//------------------------------------------------------- +uint16_t Crc16::reflect(uint16_t data) +{ + const uint8_t bits = 16; + unsigned long reflection = 0x00000000; + // Reflect the data about the center bit. + for (uint8_t bit = 0; bit < bits; bit++) + { + // If the LSB bit is set, set the reflection of it. + if ((data & 0x01) != 0) + { + reflection |= (unsigned long)(1 << ((bits - 1) - bit)); + } + + data = (uint16_t)(data >> 1); + } + + return reflection; +} + +unsigned int Crc16::XModemCrc(uint8_t data[], uint8_t start, uint16_t length) +{ + // XModem parameters: poly=0x1021 init=0x0000 refin=false refout=false xorout=0x0000 + return fastCrc(data, start, length, false, false, 0x1021, 0x0000, 0x0000, 0x8000, 0xffff); +} + +unsigned int Crc16::Mcrf4XX(uint8_t data[], uint8_t start, uint16_t length) +{ + return fastCrc(data, start, length, true, true, 0x1021, 0xffff, 0x0000, 0x8000, 0xffff); +} + +unsigned int Crc16::Modbus(uint8_t data[], uint8_t start, uint16_t length) +{ + return fastCrc(data, start, length, true, true, 0x8005, 0xffff, 0x0000, 0x8000, 0xffff); +} \ No newline at end of file diff --git a/lib/CRC16/src/Crc16.h b/lib/CRC16/src/Crc16.h new file mode 100644 index 0000000..6f15f48 --- /dev/null +++ b/lib/CRC16/src/Crc16.h @@ -0,0 +1,94 @@ +//------------------------------------------------------------------------------------- +// CRC16 support class +// Based on various examples found on the web +// Copyright (C) 2014 Vincenzo Mennella (see license.txt) +// History +// 0.1.0 31/05/2014: First public code release +// 0.1.1 17/12/2014: Minor revision and commented code +// 0.1.2 06/06/2019: Fix reflect routine for 16 bit data +// Added ModBus and Mcrf4XX inline functions +// +// License +// "MIT Open Source Software License": +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in the +// Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +//------------------------------------------------------------------------------------- + +#ifndef CRC16_H +#define CRC16_H +#define LIBRARY_VERSION_CRC16_H "0.1.2" + +#if defined(ARDUINO) && ARDUINO >= 100 +#include "Arduino.h" +#elif defined(ARDUINO) +#include "WProgram.h" +#else +#include +#endif + +class Crc16 +{ +private: + //Crc parameters + uint16_t _msbMask; + uint16_t _mask; + uint16_t _xorIn; + uint16_t _xorOut; + uint16_t _polynomial; + uint8_t _reflectIn; + uint8_t _reflectOut; + //Crc value + uint16_t _crc; + uint8_t reflect(uint8_t data); + uint16_t reflect(uint16_t data); + +public: + Crc16() + { + //Default to XModem parameters + _reflectIn = false; + _reflectOut = false; + _polynomial = 0x1021; + _xorIn = 0x0000; + _xorOut = 0x0000; + _msbMask = 0x8000; + _mask = 0xFFFF; + _crc = _xorIn; + } + + Crc16(uint8_t reflectIn, uint8_t reflectOut, uint16_t polynomial, uint16_t xorIn, uint16_t xorOut, uint16_t msbMask, uint16_t mask) + { + _reflectIn = reflectIn; + _reflectOut = reflectOut; + _polynomial = polynomial; + _xorIn = xorIn; + _xorOut = xorOut; + _msbMask = msbMask; + _mask = mask; + _crc = _xorIn; + } + + void clearCrc(); + void updateCrc(uint8_t data); + uint16_t getCrc(); + unsigned int fastCrc(uint8_t data[], uint8_t start, uint16_t length, uint8_t reflectIn, uint8_t reflectOut, uint16_t polynomial, uint16_t xorIn, uint16_t xorOut, uint16_t msbMask, uint16_t mask); + unsigned int XModemCrc(uint8_t data[], uint8_t start, uint16_t length); + unsigned int Mcrf4XX(uint8_t data[], uint8_t start, uint16_t length); + unsigned int Modbus(uint8_t data[], uint8_t start, uint16_t length); +}; + +#endif diff --git a/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-core-esp8266.sh b/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-core-esp8266.sh new file mode 100644 index 0000000..048cd02 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-core-esp8266.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +echo "Installing ESP8266 Arduino Core ..." +script_init_path="$PWD" +mkdir -p "$ARDUINO_USR_PATH/hardware/esp8266com" +cd "$ARDUINO_USR_PATH/hardware/esp8266com" + +echo "Installing Python Serial ..." +pip install pyserial > /dev/null + +if [ "$OS_IS_WINDOWS" == "1" ]; then + echo "Installing Python Requests ..." + pip install requests > /dev/null +fi + +echo "Cloning Core Repository ..." +git clone https://github.com/esp8266/Arduino.git esp8266 > /dev/null 2>&1 + +echo "Updating submodules ..." +cd esp8266 +git submodule update --init --recursive > /dev/null 2>&1 + +echo "Installing Platform Tools ..." +cd tools +python get.py > /dev/null +cd $script_init_path + +echo "ESP8266 Arduino has been installed in '$ARDUINO_USR_PATH/hardware/esp8266com'" +echo "" diff --git a/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-ide.sh b/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-ide.sh new file mode 100644 index 0000000..7e268b1 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-ide.sh @@ -0,0 +1,220 @@ +#!/bin/bash + +#OSTYPE: 'linux-gnu', ARCH: 'x86_64' => linux64 +#OSTYPE: 'msys', ARCH: 'x86_64' => win32 +#OSTYPE: 'darwin18', ARCH: 'i386' => macos + +OSBITS=`arch` +if [[ "$OSTYPE" == "linux"* ]]; then + export OS_IS_LINUX="1" + ARCHIVE_FORMAT="tar.xz" + if [[ "$OSBITS" == "i686" ]]; then + OS_NAME="linux32" + elif [[ "$OSBITS" == "x86_64" ]]; then + OS_NAME="linux64" + elif [[ "$OSBITS" == "armv7l" || "$OSBITS" == "aarch64" ]]; then + OS_NAME="linuxarm" + else + OS_NAME="$OSTYPE-$OSBITS" + echo "Unknown OS '$OS_NAME'" + exit 1 + fi +elif [[ "$OSTYPE" == "darwin"* ]]; then + export OS_IS_MACOS="1" + ARCHIVE_FORMAT="zip" + OS_NAME="macosx" +elif [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then + export OS_IS_WINDOWS="1" + ARCHIVE_FORMAT="zip" + OS_NAME="windows" +else + OS_NAME="$OSTYPE-$OSBITS" + echo "Unknown OS '$OS_NAME'" + exit 1 +fi +export OS_NAME + +ARDUINO_BUILD_DIR="$HOME/.arduino/build.tmp" +ARDUINO_CACHE_DIR="$HOME/.arduino/cache.tmp" + +if [ "$OS_IS_MACOS" == "1" ]; then + export ARDUINO_IDE_PATH="/Applications/Arduino.app/Contents/Java" + export ARDUINO_USR_PATH="$HOME/Documents/Arduino" +elif [ "$OS_IS_WINDOWS" == "1" ]; then + export ARDUINO_IDE_PATH="$HOME/arduino_ide" + export ARDUINO_USR_PATH="$HOME/Documents/Arduino" +else + export ARDUINO_IDE_PATH="$HOME/arduino_ide" + export ARDUINO_USR_PATH="$HOME/Arduino" +fi + +if [ ! -d "$ARDUINO_IDE_PATH" ]; then + echo "Installing Arduino IDE on $OS_NAME ..." + echo "Downloading 'arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT' to 'arduino.$ARCHIVE_FORMAT' ..." + if [ "$OS_IS_LINUX" == "1" ]; then + wget -O "arduino.$ARCHIVE_FORMAT" "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1 + echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..." + tar xf "arduino.$ARCHIVE_FORMAT" > /dev/null + mv arduino-nightly "$ARDUINO_IDE_PATH" + else + curl -o "arduino.$ARCHIVE_FORMAT" -L "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1 + echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..." + unzip "arduino.$ARCHIVE_FORMAT" > /dev/null + if [ "$OS_IS_MACOS" == "1" ]; then + mv "Arduino.app" "/Applications/Arduino.app" + else + mv arduino-nightly "$ARDUINO_IDE_PATH" + fi + fi + rm -rf "arduino.$ARCHIVE_FORMAT" + + mkdir -p "$ARDUINO_USR_PATH/libraries" + mkdir -p "$ARDUINO_USR_PATH/hardware" + + echo "Arduino IDE Installed in '$ARDUINO_IDE_PATH'" + echo "" +fi + +function build_sketch(){ # build_sketch [extra-options] + if [ "$#" -lt 2 ]; then + echo "ERROR: Illegal number of parameters" + echo "USAGE: build_sketch [extra-options]" + return 1 + fi + + local fqbn="$1" + local sketch="$2" + local xtra_opts="$3" + local win_opts="" + if [ "$OS_IS_WINDOWS" == "1" ]; then + local ctags_version=`ls "$ARDUINO_IDE_PATH/tools-builder/ctags/"` + local preprocessor_version=`ls "$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/"` + win_opts="-prefs=runtime.tools.ctags.path=$ARDUINO_IDE_PATH/tools-builder/ctags/$ctags_version -prefs=runtime.tools.arduino-preprocessor.path=$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/$preprocessor_version" + fi + + echo "" + echo "Compiling '"$(basename "$sketch")"' ..." + mkdir -p "$ARDUINO_BUILD_DIR" + mkdir -p "$ARDUINO_CACHE_DIR" + $ARDUINO_IDE_PATH/arduino-builder -compile -logger=human -core-api-version=10810 \ + -fqbn=$fqbn \ + -warnings="all" \ + -tools "$ARDUINO_IDE_PATH/tools-builder" \ + -tools "$ARDUINO_IDE_PATH/tools" \ + -built-in-libraries "$ARDUINO_IDE_PATH/libraries" \ + -hardware "$ARDUINO_IDE_PATH/hardware" \ + -hardware "$ARDUINO_USR_PATH/hardware" \ + -libraries "$ARDUINO_USR_PATH/libraries" \ + -build-cache "$ARDUINO_CACHE_DIR" \ + -build-path "$ARDUINO_BUILD_DIR" \ + $win_opts $xtra_opts "$sketch" +} + +function count_sketches() # count_sketches +{ + local examples="$1" + rm -rf sketches.txt + if [ ! -d "$examples" ]; then + touch sketches.txt + return 0 + fi + local sketches=$(find $examples -name *.ino) + local sketchnum=0 + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + local sketchdirname=$(basename $sketchdir) + local sketchname=$(basename $sketch) + if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then + continue + fi; + if [[ -f "$sketchdir/.test.skip" ]]; then + continue + fi + echo $sketch >> sketches.txt + sketchnum=$(($sketchnum + 1)) + done + return $sketchnum +} + +function build_sketches() # build_sketches [extra-options] +{ + local fqbn=$1 + local examples=$2 + local chunk_idex=$3 + local chunks_num=$4 + local xtra_opts=$5 + + if [ "$#" -lt 2 ]; then + echo "ERROR: Illegal number of parameters" + echo "USAGE: build_sketches [ ] [extra-options]" + return 1 + fi + + if [ "$#" -lt 4 ]; then + chunk_idex="0" + chunks_num="1" + xtra_opts=$3 + fi + + if [ "$chunks_num" -le 0 ]; then + echo "ERROR: Chunks count must be positive number" + return 1 + fi + if [ "$chunk_idex" -ge "$chunks_num" ]; then + echo "ERROR: Chunk index must be less than chunks count" + return 1 + fi + + set +e + count_sketches "$examples" + local sketchcount=$? + set -e + local sketches=$(cat sketches.txt) + rm -rf sketches.txt + + local chunk_size=$(( $sketchcount / $chunks_num )) + local all_chunks=$(( $chunks_num * $chunk_size )) + if [ "$all_chunks" -lt "$sketchcount" ]; then + chunk_size=$(( $chunk_size + 1 )) + fi + + local start_index=$(( $chunk_idex * $chunk_size )) + if [ "$sketchcount" -le "$start_index" ]; then + echo "Skipping job" + return 0 + fi + + local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size )) + if [ "$end_index" -gt "$sketchcount" ]; then + end_index=$sketchcount + fi + + local start_num=$(( $start_index + 1 )) + echo "Found $sketchcount Sketches"; + echo "Chunk Count : $chunks_num" + echo "Chunk Size : $chunk_size" + echo "Start Sketch: $start_num" + echo "End Sketch : $end_index" + + local sketchnum=0 + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + local sketchdirname=$(basename $sketchdir) + local sketchname=$(basename $sketch) + if [ "${sketchdirname}.ino" != "$sketchname" ] \ + || [ -f "$sketchdir/.test.skip" ]; then + continue + fi + sketchnum=$(($sketchnum + 1)) + if [ "$sketchnum" -le "$start_index" ] \ + || [ "$sketchnum" -gt "$end_index" ]; then + continue + fi + build_sketch "$fqbn" "$sketch" "$xtra_opts" + local result=$? + if [ $result -ne 0 ]; then + return $result + fi + done + return 0 +} diff --git a/lib/ESPAsyncTCP-esphome/.github/scripts/install-platformio.sh b/lib/ESPAsyncTCP-esphome/.github/scripts/install-platformio.sh new file mode 100644 index 0000000..61c94fe --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.github/scripts/install-platformio.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +echo "Installing Python Wheel ..." +pip install wheel > /dev/null 2>&1 + +echo "Installing PlatformIO ..." +pip install -U platformio > /dev/null 2>&1 + +echo "PlatformIO has been installed" +echo "" + + +function build_pio_sketch(){ # build_pio_sketch + if [ "$#" -lt 2 ]; then + echo "ERROR: Illegal number of parameters" + echo "USAGE: build_pio_sketch " + return 1 + fi + + local board="$1" + local sketch="$2" + local sketch_dir=$(dirname "$sketch") + echo "" + echo "Compiling '"$(basename "$sketch")"' ..." + python -m platformio ci -l '.' --board "$board" "$sketch_dir" --project-option="board_build.partitions = huge_app.csv" +} + +function count_sketches() # count_sketches +{ + local examples="$1" + rm -rf sketches.txt + if [ ! -d "$examples" ]; then + touch sketches.txt + return 0 + fi + local sketches=$(find $examples -name *.ino) + local sketchnum=0 + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + local sketchdirname=$(basename $sketchdir) + local sketchname=$(basename $sketch) + if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then + continue + fi; + if [[ -f "$sketchdir/.test.skip" ]]; then + continue + fi + echo $sketch >> sketches.txt + sketchnum=$(($sketchnum + 1)) + done + return $sketchnum +} + +function build_pio_sketches() # build_pio_sketches +{ + if [ "$#" -lt 2 ]; then + echo "ERROR: Illegal number of parameters" + echo "USAGE: build_pio_sketches [ ]" + return 1 + fi + + local board=$1 + local examples=$2 + local chunk_idex=$3 + local chunks_num=$4 + + if [ "$#" -lt 4 ]; then + chunk_idex="0" + chunks_num="1" + fi + + if [ "$chunks_num" -le 0 ]; then + echo "ERROR: Chunks count must be positive number" + return 1 + fi + if [ "$chunk_idex" -ge "$chunks_num" ]; then + echo "ERROR: Chunk index must be less than chunks count" + return 1 + fi + + set +e + count_sketches "$examples" + local sketchcount=$? + set -e + local sketches=$(cat sketches.txt) + rm -rf sketches.txt + + local chunk_size=$(( $sketchcount / $chunks_num )) + local all_chunks=$(( $chunks_num * $chunk_size )) + if [ "$all_chunks" -lt "$sketchcount" ]; then + chunk_size=$(( $chunk_size + 1 )) + fi + + local start_index=$(( $chunk_idex * $chunk_size )) + if [ "$sketchcount" -le "$start_index" ]; then + echo "Skipping job" + return 0 + fi + + local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size )) + if [ "$end_index" -gt "$sketchcount" ]; then + end_index=$sketchcount + fi + + local start_num=$(( $start_index + 1 )) + echo "Found $sketchcount Sketches"; + echo "Chunk Count : $chunks_num" + echo "Chunk Size : $chunk_size" + echo "Start Sketch: $start_num" + echo "End Sketch : $end_index" + + local sketchnum=0 + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + local sketchdirname=$(basename $sketchdir) + local sketchname=$(basename $sketch) + if [ "${sketchdirname}.ino" != "$sketchname" ] \ + || [ -f "$sketchdir/.test.skip" ]; then + continue + fi + sketchnum=$(($sketchnum + 1)) + if [ "$sketchnum" -le "$start_index" ] \ + || [ "$sketchnum" -gt "$end_index" ]; then + continue + fi + build_pio_sketch "$board" "$sketch" + local result=$? + if [ $result -ne 0 ]; then + return $result + fi + done + return 0 +} diff --git a/lib/ESPAsyncTCP-esphome/.github/scripts/on-push.sh b/lib/ESPAsyncTCP-esphome/.github/scripts/on-push.sh new file mode 100644 index 0000000..7ae8c43 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.github/scripts/on-push.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -e + +if [ ! -z "$TRAVIS_BUILD_DIR" ]; then + export GITHUB_WORKSPACE="$TRAVIS_BUILD_DIR" + export GITHUB_REPOSITORY="$TRAVIS_REPO_SLUG" +elif [ -z "$GITHUB_WORKSPACE" ]; then + export GITHUB_WORKSPACE="$PWD" + export GITHUB_REPOSITORY="me-no-dev/ESPAsyncTCP" +fi + +CHUNK_INDEX=$1 +CHUNKS_CNT=$2 +BUILD_PIO=0 +if [ "$#" -lt 2 ] || [ "$CHUNKS_CNT" -le 0 ]; then + CHUNK_INDEX=0 + CHUNKS_CNT=1 +elif [ "$CHUNK_INDEX" -gt "$CHUNKS_CNT" ]; then + CHUNK_INDEX=$CHUNKS_CNT +elif [ "$CHUNK_INDEX" -eq "$CHUNKS_CNT" ]; then + BUILD_PIO=1 +fi + +if [ "$BUILD_PIO" -eq 0 ]; then + # ArduinoIDE Test + source ./.github/scripts/install-arduino-ide.sh + source ./.github/scripts/install-arduino-core-esp8266.sh + + echo "Installing ESPAsyncTCP ..." + cp -rf "$GITHUB_WORKSPACE" "$ARDUINO_USR_PATH/libraries/ESPAsyncTCP" + + FQBN="esp8266com:esp8266:generic:eesz=4M1M,ip=lm2f" + build_sketches "$FQBN" "$GITHUB_WORKSPACE/examples" + if [ ! "$OS_IS_WINDOWS" == "1" ]; then + echo "Installing ESPAsyncWebServer ..." + git clone https://github.com/me-no-dev/ESPAsyncWebServer "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer" > /dev/null 2>&1 + + echo "Installing ArduinoJson ..." + git clone https://github.com/bblanchon/ArduinoJson "$ARDUINO_USR_PATH/libraries/ArduinoJson" > /dev/null 2>&1 + + build_sketches "$FQBN" "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer/examples" + fi +else + # PlatformIO Test + source ./.github/scripts/install-platformio.sh + + echo "Installing ESPAsyncTCP ..." + python -m platformio lib --storage-dir "$GITHUB_WORKSPACE" install + + BOARD="esp12e" + build_pio_sketches "$BOARD" "$GITHUB_WORKSPACE/examples" + + if [[ "$OSTYPE" != "cygwin" ]] && [[ "$OSTYPE" != "msys" ]] && [[ "$OSTYPE" != "win32" ]]; then + echo "Installing ESPAsyncWebServer ..." + python -m platformio lib -g install https://github.com/me-no-dev/ESPAsyncWebServer.git > /dev/null 2>&1 + git clone https://github.com/me-no-dev/ESPAsyncWebServer "$HOME/ESPAsyncWebServer" > /dev/null 2>&1 + + echo "Installing ArduinoJson ..." + python -m platformio lib -g install https://github.com/bblanchon/ArduinoJson.git > /dev/null 2>&1 + + build_pio_sketches "$BOARD" "$HOME/ESPAsyncWebServer/examples" + fi +fi diff --git a/lib/ESPAsyncTCP-esphome/.github/stale.yml b/lib/ESPAsyncTCP-esphome/.github/stale.yml new file mode 100644 index 0000000..ce7a8e3 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.github/stale.yml @@ -0,0 +1,31 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +daysUntilStale: 60 +daysUntilClose: 14 +limitPerRun: 30 +staleLabel: stale +exemptLabels: + - pinned + - security + - "to be implemented" + - "for reference" + - "move to PR" + - "enhancement" + +only: issues +onlyLabels: [] +exemptProjects: false +exemptMilestones: false +exemptAssignees: false + +markComment: > + [STALE_SET] This issue has been automatically marked as stale because it has not had + recent activity. It will be closed in 14 days if no further activity occurs. Thank you + for your contributions. + +unmarkComment: > + [STALE_CLR] This issue has been removed from the stale queue. Please ensure activity to keep it openin the future. + +closeComment: > + [STALE_DEL] This stale issue has been automatically closed. Thank you for your contributions. + diff --git a/lib/ESPAsyncTCP-esphome/.github/workflows/push.yml b/lib/ESPAsyncTCP-esphome/.github/workflows/push.yml new file mode 100644 index 0000000..d3e7011 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.github/workflows/push.yml @@ -0,0 +1,32 @@ +name: ESP Async TCP CI + +on: + push: + branches: + - master + - release/* + pull_request: + +jobs: + + build-pio: + name: PlatformIO on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - uses: actions/checkout@v3 + - uses: actions/cache@v3 + with: + path: | + ~/.cache/pip + ~/.platformio/.cache + key: ${{ runner.os }}-pio + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + - name: Install PlatformIO Core + run: pip install --upgrade platformio + - name: Build Tests + run: bash ./.github/scripts/on-push.sh 1 1 diff --git a/lib/ESPAsyncTCP-esphome/.gitignore b/lib/ESPAsyncTCP-esphome/.gitignore new file mode 100644 index 0000000..9bea433 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.gitignore @@ -0,0 +1,2 @@ + +.DS_Store diff --git a/lib/ESPAsyncTCP-esphome/.piopm b/lib/ESPAsyncTCP-esphome/.piopm new file mode 100644 index 0000000..35a6b62 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "ESPAsyncTCP-esphome", "version": "2.0.0", "spec": {"owner": "esphome", "id": 15476, "name": "ESPAsyncTCP-esphome", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/lib/ESPAsyncTCP-esphome/LICENSE.txt b/lib/ESPAsyncTCP-esphome/LICENSE.txt new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/lib/ESPAsyncTCP-esphome/README.md b/lib/ESPAsyncTCP-esphome/README.md new file mode 100644 index 0000000..aac448a --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/README.md @@ -0,0 +1,33 @@ +# ESPAsyncTCP + +A fork of the [AsyncTCP](https://github.com/me-no-dev/AsyncTCP) library by [@me-no-dev](https://github.com/me-no-dev) for [ESPHome](https://esphome.io). + +### Async TCP Library for ESP8266 Arduino + +For ESP32 look [HERE](https://github.com/me-no-dev/AsyncTCP) + +[![Join the chat at https://gitter.im/me-no-dev/ESPAsyncWebServer](https://badges.gitter.im/me-no-dev/ESPAsyncWebServer.svg)](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +This is a fully asynchronous TCP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP8266 MCUs. + +This library is the base for [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer) + +## AsyncClient and AsyncServer +The base classes on which everything else is built. They expose all possible scenarios, but are really raw and require more skills to use. + +## AsyncPrinter +This class can be used to send data like any other ```Print``` interface (```Serial``` for example). +The object then can be used outside of the Async callbacks (the loop) and receive asynchronously data using ```onData```. The object can be checked if the underlying ```AsyncClient```is connected, or hook to the ```onDisconnect``` callback. + +## AsyncTCPbuffer +This class is really similar to the ```AsyncPrinter```, but it differs in the fact that it can buffer some of the incoming data. + +## SyncClient +It is exactly what it sounds like. This is a standard, blocking TCP Client, similar to the one included in ```ESP8266WiFi``` + +## Libraries and projects that use AsyncTCP +- [ESP Async Web Server](https://github.com/me-no-dev/ESPAsyncWebServer) +- [Async MQTT client](https://github.com/marvinroger/async-mqtt-client) +- [arduinoWebSockets](https://github.com/Links2004/arduinoWebSockets) +- [ESP8266 Smart Home](https://github.com/baruch/esp8266_smart_home) +- [KBox Firmware](https://github.com/sarfata/kbox-firmware) diff --git a/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/Client.ino b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/Client.ino new file mode 100644 index 0000000..b30d791 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/Client.ino @@ -0,0 +1,62 @@ +#include +#include + +extern "C" { +#include +#include +} + +#include "config.h" + +static os_timer_t intervalTimer; + +static void replyToServer(void* arg) { + AsyncClient* client = reinterpret_cast(arg); + + // send reply + if (client->space() > 32 && client->canSend()) { + char message[32]; + sprintf(message, "this is from %s", WiFi.localIP().toString().c_str()); + client->add(message, strlen(message)); + client->send(); + } +} + +/* event callbacks */ +static void handleData(void* arg, AsyncClient* client, void *data, size_t len) { + Serial.printf("\n data received from %s \n", client->remoteIP().toString().c_str()); + Serial.write((uint8_t*)data, len); + + os_timer_arm(&intervalTimer, 2000, true); // schedule for reply to server at next 2s +} + +void onConnect(void* arg, AsyncClient* client) { + Serial.printf("\n client has been connected to %s on port %d \n", SERVER_HOST_NAME, TCP_PORT); + replyToServer(client); +} + + +void setup() { + Serial.begin(115200); + delay(20); + + // connects to access point + WiFi.mode(WIFI_STA); + WiFi.begin(SSID, PASSWORD); + while (WiFi.status() != WL_CONNECTED) { + Serial.print('.'); + delay(500); + } + + AsyncClient* client = new AsyncClient; + client->onData(&handleData, client); + client->onConnect(&onConnect, client); + client->connect(SERVER_HOST_NAME, TCP_PORT); + + os_timer_disarm(&intervalTimer); + os_timer_setfn(&intervalTimer, &replyToServer, client); +} + +void loop() { + +} diff --git a/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/config.h b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/config.h new file mode 100644 index 0000000..cf51e91 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/config.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_H +#define CONFIG_H + +/* + * This example demonstrate how to use asynchronous client & server APIs + * in order to establish tcp socket connections in client server manner. + * server is running (on port 7050) on one ESP, acts as AP, and other clients running on + * remaining ESPs acts as STAs. after connection establishment between server and clients + * there is a simple message transfer in every 2s. clients connect to server via it's host name + * (in this case 'esp_server') with help of DNS service running on server side. + * + * Note: default MSS for ESPAsyncTCP is 536 byte and defualt ACK timeout is 5s. +*/ + +#define SSID "ESP-TEST" +#define PASSWORD "123456789" + +#define SERVER_HOST_NAME "esp_server" + +#define TCP_PORT 7050 +#define DNS_PORT 53 + +#endif // CONFIG_H diff --git a/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/Server.ino b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/Server.ino new file mode 100644 index 0000000..c8c9b7f --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/Server.ino @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +#include "config.h" + +static DNSServer DNS; + +static std::vector clients; // a list to hold all clients + + /* clients events */ +static void handleError(void* arg, AsyncClient* client, int8_t error) { + Serial.printf("\n connection error %s from client %s \n", client->errorToString(error), client->remoteIP().toString().c_str()); +} + +static void handleData(void* arg, AsyncClient* client, void *data, size_t len) { + Serial.printf("\n data received from client %s \n", client->remoteIP().toString().c_str()); + Serial.write((uint8_t*)data, len); + + // reply to client + if (client->space() > 32 && client->canSend()) { + char reply[32]; + sprintf(reply, "this is from %s", SERVER_HOST_NAME); + client->add(reply, strlen(reply)); + client->send(); + } +} + +static void handleDisconnect(void* arg, AsyncClient* client) { + Serial.printf("\n client %s disconnected \n", client->remoteIP().toString().c_str()); +} + +static void handleTimeOut(void* arg, AsyncClient* client, uint32_t time) { + Serial.printf("\n client ACK timeout ip: %s \n", client->remoteIP().toString().c_str()); +} + + +/* server events */ +static void handleNewClient(void* arg, AsyncClient* client) { + Serial.printf("\n new client has been connected to server, ip: %s", client->remoteIP().toString().c_str()); + + // add to list + clients.push_back(client); + + // register events + client->onData(&handleData, NULL); + client->onError(&handleError, NULL); + client->onDisconnect(&handleDisconnect, NULL); + client->onTimeout(&handleTimeOut, NULL); +} + +void setup() { + Serial.begin(115200); + delay(20); + + // create access point + while (!WiFi.softAP(SSID, PASSWORD, 6, false, 15)) { + delay(500); + } + + // start dns server + if (!DNS.start(DNS_PORT, SERVER_HOST_NAME, WiFi.softAPIP())) + Serial.printf("\n failed to start dns service \n"); + + AsyncServer* server = new AsyncServer(TCP_PORT); // start listening on tcp port 7050 + server->onClient(&handleNewClient, server); + server->begin(); +} + +void loop() { + DNS.processNextRequest(); +} diff --git a/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/config.h b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/config.h new file mode 100644 index 0000000..cf51e91 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/config.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_H +#define CONFIG_H + +/* + * This example demonstrate how to use asynchronous client & server APIs + * in order to establish tcp socket connections in client server manner. + * server is running (on port 7050) on one ESP, acts as AP, and other clients running on + * remaining ESPs acts as STAs. after connection establishment between server and clients + * there is a simple message transfer in every 2s. clients connect to server via it's host name + * (in this case 'esp_server') with help of DNS service running on server side. + * + * Note: default MSS for ESPAsyncTCP is 536 byte and defualt ACK timeout is 5s. +*/ + +#define SSID "ESP-TEST" +#define PASSWORD "123456789" + +#define SERVER_HOST_NAME "esp_server" + +#define TCP_PORT 7050 +#define DNS_PORT 53 + +#endif // CONFIG_H diff --git a/lib/ESPAsyncTCP-esphome/examples/SyncClient/.esp31b.skip b/lib/ESPAsyncTCP-esphome/examples/SyncClient/.esp31b.skip new file mode 100644 index 0000000..e69de29 diff --git a/lib/ESPAsyncTCP-esphome/examples/SyncClient/SyncClient.ino b/lib/ESPAsyncTCP-esphome/examples/SyncClient/SyncClient.ino new file mode 100644 index 0000000..6ecc525 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/examples/SyncClient/SyncClient.ino @@ -0,0 +1,54 @@ +#ifdef ESP8266 +#include +#include +#include +#else +#include +#endif +#include "ESPAsyncTCP.h" +#include "SyncClient.h" + +const char* ssid = "**********"; +const char* password = "************"; + +void setup(){ + Serial.begin(115200); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.printf("WiFi Failed!\n"); + return; + } + Serial.printf("WiFi Connected!\n"); + Serial.println(WiFi.localIP()); +#ifdef ESP8266 + ArduinoOTA.begin(); +#endif + + SyncClient client; + if(!client.connect("www.google.com", 80)){ + Serial.println("Connect Failed"); + return; + } + client.setTimeout(2); + if(client.printf("GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n") > 0){ + while(client.connected() && client.available() == 0){ + delay(1); + } + while(client.available()){ + Serial.write(client.read()); + } + if(client.connected()){ + client.stop(); + } + } else { + client.stop(); + Serial.println("Send Failed"); + while(client.connected()) delay(0); + } +} + +void loop(){ +#ifdef ESP8266 + ArduinoOTA.handle(); +#endif +} diff --git a/lib/ESPAsyncTCP-esphome/library.json b/lib/ESPAsyncTCP-esphome/library.json new file mode 100644 index 0000000..0538519 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/library.json @@ -0,0 +1,22 @@ +{ + "name":"ESPAsyncTCP-esphome", + "description":"Asynchronous TCP Library for ESP8266", + "keywords":"async,tcp", + "authors": + { + "name": "Hristo Gochkov", + "maintainer": true + }, + "repository": + { + "type": "git", + "url": "https://github.com/esphome/ESPAsyncTCP.git" + }, + "version": "2.0.0", + "license": "LGPL-3.0", + "frameworks": "arduino", + "platforms": "espressif8266", + "build": { + "libCompatMode": 2 + } +} diff --git a/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.cpp b/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.cpp new file mode 100644 index 0000000..8a63f20 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.cpp @@ -0,0 +1,214 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "AsyncPrinter.h" + +AsyncPrinter::AsyncPrinter() + : _client(NULL) + , _data_cb(NULL) + , _data_arg(NULL) + , _close_cb(NULL) + , _close_arg(NULL) + , _tx_buffer(NULL) + , _tx_buffer_size(TCP_MSS) + , next(NULL) +{} + +AsyncPrinter::AsyncPrinter(AsyncClient *client, size_t txBufLen) + : _client(client) + , _data_cb(NULL) + , _data_arg(NULL) + , _close_cb(NULL) + , _close_arg(NULL) + , _tx_buffer(NULL) + , _tx_buffer_size(txBufLen) + , next(NULL) +{ + _attachCallbacks(); + _tx_buffer = new (std::nothrow) cbuf(_tx_buffer_size); + if(_tx_buffer == NULL) { + panic(); //What should we do? + } +} + +AsyncPrinter::~AsyncPrinter(){ + _on_close(); +} + +void AsyncPrinter::onData(ApDataHandler cb, void *arg){ + _data_cb = cb; + _data_arg = arg; +} + +void AsyncPrinter::onClose(ApCloseHandler cb, void *arg){ + _close_cb = cb; + _close_arg = arg; +} + +int AsyncPrinter::connect(IPAddress ip, uint16_t port){ + if(_client != NULL && connected()) + return 0; + _client = new (std::nothrow) AsyncClient(); + if (_client == NULL) { + panic(); + } + + _client->onConnect([](void *obj, AsyncClient *c){ ((AsyncPrinter*)(obj))->_onConnect(c); }, this); + if(_client->connect(ip, port)){ + while(_client && _client->state() < 4) + delay(1); + return connected(); + } + return 0; +} + +int AsyncPrinter::connect(const char *host, uint16_t port){ + if(_client != NULL && connected()) + return 0; + _client = new (std::nothrow) AsyncClient(); + if (_client == NULL) { + panic(); + } + + _client->onConnect([](void *obj, AsyncClient *c){ ((AsyncPrinter*)(obj))->_onConnect(c); }, this); + if(_client->connect(host, port)){ + while(_client && _client->state() < 4) + delay(1); + return connected(); + } + return 0; +} + +void AsyncPrinter::_onConnect(AsyncClient *c){ + (void)c; + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } + _tx_buffer = new (std::nothrow) cbuf(_tx_buffer_size); + if(_tx_buffer) { + panic(); + } + + _attachCallbacks(); +} + +AsyncPrinter::operator bool(){ return connected(); } + +AsyncPrinter & AsyncPrinter::operator=(const AsyncPrinter &other){ + if(_client != NULL){ + _client->close(true); + _client = NULL; + } + _tx_buffer_size = other._tx_buffer_size; + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } + _tx_buffer = new (std::nothrow) cbuf(other._tx_buffer_size); + if(_tx_buffer == NULL) { + panic(); + } + + _client = other._client; + _attachCallbacks(); + return *this; +} + +size_t AsyncPrinter::write(uint8_t data){ + return write(&data, 1); +} + +size_t AsyncPrinter::write(const uint8_t *data, size_t len){ + if(_tx_buffer == NULL || !connected()) + return 0; + size_t toWrite = 0; + size_t toSend = len; + while(_tx_buffer->room() < toSend){ + toWrite = _tx_buffer->room(); + _tx_buffer->write((const char*)data, toWrite); + while(connected() && !_client->canSend()) + delay(0); + if(!connected()) + return 0; // or len - toSend; + _sendBuffer(); + toSend -= toWrite; + } + _tx_buffer->write((const char*)(data+(len - toSend)), toSend); + while(connected() && !_client->canSend()) delay(0); + if(!connected()) return 0; // or len - toSend; + _sendBuffer(); + return len; +} + +bool AsyncPrinter::connected(){ + return (_client != NULL && _client->connected()); +} + +void AsyncPrinter::close(){ + if(_client != NULL) + _client->close(true); +} + +size_t AsyncPrinter::_sendBuffer(){ + size_t available = _tx_buffer->available(); + if(!connected() || !_client->canSend() || available == 0) + return 0; + size_t sendable = _client->space(); + if(sendable < available) + available= sendable; + char *out = new (std::nothrow) char[available]; + if (out == NULL) { + panic(); // Connection should be aborted instead + } + + _tx_buffer->read(out, available); + size_t sent = _client->write(out, available); + delete out; + return sent; +} + +void AsyncPrinter::_onData(void *data, size_t len){ + if(_data_cb) + _data_cb(_data_arg, this, (uint8_t*)data, len); +} + +void AsyncPrinter::_on_close(){ + if(_client != NULL){ + _client = NULL; + } + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } + if(_close_cb) + _close_cb(_close_arg, this); +} + +void AsyncPrinter::_attachCallbacks(){ + _client->onPoll([](void *obj, AsyncClient* c){ (void)c; ((AsyncPrinter*)(obj))->_sendBuffer(); }, this); + _client->onAck([](void *obj, AsyncClient* c, size_t len, uint32_t time){ (void)c; (void)len; (void)time; ((AsyncPrinter*)(obj))->_sendBuffer(); }, this); + _client->onDisconnect([](void *obj, AsyncClient* c){ ((AsyncPrinter*)(obj))->_on_close(); delete c; }, this); + _client->onData([](void *obj, AsyncClient* c, void *data, size_t len){ (void)c; ((AsyncPrinter*)(obj))->_onData(data, len); }, this); +} diff --git a/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.h b/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.h new file mode 100644 index 0000000..c3ebe3a --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.h @@ -0,0 +1,73 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef ASYNCPRINTER_H_ +#define ASYNCPRINTER_H_ + +#include "Arduino.h" +#include "ESPAsyncTCP.h" +#include "cbuf.h" + +class AsyncPrinter; + +typedef std::function ApDataHandler; +typedef std::function ApCloseHandler; + +class AsyncPrinter: public Print { + private: + AsyncClient *_client; + ApDataHandler _data_cb; + void *_data_arg; + ApCloseHandler _close_cb; + void *_close_arg; + cbuf *_tx_buffer; + size_t _tx_buffer_size; + + void _onConnect(AsyncClient *c); + public: + AsyncPrinter *next; + + AsyncPrinter(); + AsyncPrinter(AsyncClient *client, size_t txBufLen = TCP_MSS); + virtual ~AsyncPrinter(); + + int connect(IPAddress ip, uint16_t port); + int connect(const char *host, uint16_t port); + + void onData(ApDataHandler cb, void *arg); + void onClose(ApCloseHandler cb, void *arg); + + operator bool(); + AsyncPrinter & operator=(const AsyncPrinter &other); + + size_t write(uint8_t data); + size_t write(const uint8_t *data, size_t len); + + bool connected(); + void close(); + + size_t _sendBuffer(); + void _onData(void *data, size_t len); + void _on_close(); + void _attachCallbacks(); +}; + +#endif /* ASYNCPRINTER_H_ */ diff --git a/lib/ESPAsyncTCP-esphome/src/DebugPrintMacros.h b/lib/ESPAsyncTCP-esphome/src/DebugPrintMacros.h new file mode 100644 index 0000000..30ed706 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/DebugPrintMacros.h @@ -0,0 +1,112 @@ +#ifndef _DEBUG_PRINT_MACROS_H +#define _DEBUG_PRINT_MACROS_H +// Some customizable print macros to suite the debug needs de jour. + +// Debug macros +// #include +// https://stackoverflow.com/questions/8487986/file-macro-shows-full-path +// This value is resolved at compile time. +#define _FILENAME_ strrchr("/" __FILE__, '/') + +// #define DEBUG_ESP_ASYNC_TCP 1 +// #define DEBUG_ESP_TCP_SSL 1 +// #define DEBUG_ESP_PORT Serial + +#if defined(DEBUG_ESP_PORT) && !defined(DEBUG_TIME_STAMP_FMT) +#define DEBUG_TIME_STAMP_FMT "%06u.%03u " +struct _DEBUG_TIME_STAMP { + unsigned dec; + unsigned whole; +}; +inline struct _DEBUG_TIME_STAMP debugTimeStamp(void) { + struct _DEBUG_TIME_STAMP st; + unsigned now = millis() % 1000000000; + st.dec = now % 1000; + st.whole = now / 1000; + return st; +} +#endif + +#if defined(DEBUG_ESP_PORT) && !defined(DEBUG_ESP_PORT_PRINTF) + +#ifdef __cplusplus +#define DEBUG_ESP_PORT_PRINTF(format, ...) DEBUG_ESP_PORT.printf((format), ##__VA_ARGS__) +#define DEBUG_ESP_PORT_PRINTF_F(format, ...) DEBUG_ESP_PORT.printf_P(PSTR(format), ##__VA_ARGS__) +#define DEBUG_ESP_PORT_FLUSH DEBUG_ESP_PORT.flush +#else +// Handle debug printing from .c without CPP Stream, Print, ... classes +// Cannot handle flash strings in this setting +#define DEBUG_ESP_PORT_PRINTF ets_uart_printf +#define DEBUG_ESP_PORT_PRINTF_F ets_uart_printf +#define DEBUG_ESP_PORT_FLUSH (void)0 +#endif + +#endif + +#if defined(DEBUG_ESP_PORT) && !defined(DEBUG_GENERIC) + #define DEBUG_GENERIC( module, format, ... ) \ + do { \ + struct _DEBUG_TIME_STAMP st = debugTimeStamp(); \ + DEBUG_ESP_PORT_PRINTF( (DEBUG_TIME_STAMP_FMT module " " format), st.whole, st.dec, ##__VA_ARGS__ ); \ + } while(false) +#endif +#if defined(DEBUG_ESP_PORT) && !defined(DEBUG_GENERIC_F) + #define DEBUG_GENERIC_F( module, format, ... ) \ + do { \ + struct _DEBUG_TIME_STAMP st = debugTimeStamp(); \ + DEBUG_ESP_PORT_PRINTF_F( (DEBUG_TIME_STAMP_FMT module " " format), st.whole, st.dec, ##__VA_ARGS__ ); \ + } while(false) +#endif + +#if defined(DEBUG_GENERIC) && !defined(ASSERT_GENERIC) +#define ASSERT_GENERIC( a, module ) \ + do { \ + if ( !(a) ) { \ + DEBUG_GENERIC( module, "%s:%s:%u: ASSERT("#a") failed!\n", __FILE__, __func__, __LINE__); \ + DEBUG_ESP_PORT_FLUSH(); \ + } \ + } while(false) +#endif +#if defined(DEBUG_GENERIC_F) && !defined(ASSERT_GENERIC_F) +#define ASSERT_GENERIC_F( a, module ) \ + do { \ + if ( !(a) ) { \ + DEBUG_GENERIC_F( module, "%s:%s:%u: ASSERT("#a") failed!\n", __FILE__, __func__, __LINE__); \ + DEBUG_ESP_PORT_FLUSH(); \ + } \ + } while(false) +#endif + +#ifndef DEBUG_GENERIC +#define DEBUG_GENERIC(...) do { (void)0;} while(false) +#endif + +#ifndef DEBUG_GENERIC_F +#define DEBUG_GENERIC_F(...) do { (void)0;} while(false) +#endif + +#ifndef ASSERT_GENERIC +#define ASSERT_GENERIC(...) do { (void)0;} while(false) +#endif + +#ifndef ASSERT_GENERIC_F +#define ASSERT_GENERIC_F(...) do { (void)0;} while(false) +#endif + +#ifndef DEBUG_ESP_PRINTF +#define DEBUG_ESP_PRINTF( format, ...) DEBUG_GENERIC_F("[%s]", format, &_FILENAME_[1], ##__VA_ARGS__) +#endif + +#if defined(DEBUG_ESP_ASYNC_TCP) && !defined(ASYNC_TCP_DEBUG) +#define ASYNC_TCP_DEBUG( format, ...) DEBUG_GENERIC_F("[ASYNC_TCP]", format, ##__VA_ARGS__) +#endif + +#ifndef ASYNC_TCP_ASSERT +#define ASYNC_TCP_ASSERT( a ) ASSERT_GENERIC_F( (a), "[ASYNC_TCP]") +#endif + +#if defined(DEBUG_ESP_TCP_SSL) && !defined(TCP_SSL_DEBUG) +#define TCP_SSL_DEBUG( format, ...) DEBUG_GENERIC_F("[TCP_SSL]", format, ##__VA_ARGS__) +#endif + +#endif //_DEBUG_PRINT_MACROS_H diff --git a/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp new file mode 100644 index 0000000..fe08b93 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp @@ -0,0 +1,1406 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/* +Changes for July 2019 + +The operator "new ..." was changed to "new (std::nothrow) ...", which will +return NULL when the heap is out of memory. Without the change "soft WDT" +was the result, starting with Arduino ESP8266 Core 2.5.0. (Note, RE:"soft +WDT" - the error reporting may improve with core 2.6.) With proir core +versions the library appears to work fine. +ref: https://github.com/esp8266/Arduino/issues/6269#issue-464978944 + +To support newer lwIP versions and buffer models. All references to 1460 +were replaced with TCP_MSS. If TCP_MSS is not defined (exp. 1.4v lwIP) +1460 is assumed. + +The ESPAsyncTCP library should build for Arduino ESP8266 Core releases: +2.3.0, 2.4.1, 2.4.2, 2.5.1, 2.5.2. It may still build with core versions +2.4.0 and 2.5.0. I did not do any regression testing with these, since +they had too many issues and were quickly superseded. + +lwIP tcp_err() callback often resulted in crashes. The problem was a +tcp_err() would come in, while processing a send or receive in the +forground. The tcp_err() callback would be passed down to a client's +registered disconnect CB. A common problem with SyncClient and other +modules as well as some client code was: the freeing of ESPAsyncTCP +AsyncClient objects via disconnect CB handlers while the library was +waiting for an operstion to finished. Attempts to access bad pointers +followed. For SyncClient this commonly occured during a call to delay(). +On return to SyncClient _client was invalid. Also the problem described by +issue #94 also surfaced + +Use of tcp_abort() required some very special handling and was very +challenging to make work without changing client API. ERR_ABRT can only be +used once on a return to lwIP for a given connection and since the +AsyncClient structure was sometimes deleted before returning to lwIP, the +state tracking became tricky. While ugly, a global variable for this +seemed to work; however, I abanded it when I saw a possible +reentrancy/concurrency issue. After several approaches I settled the +problem by creating "class ACErrorTracker" to manage the issue. + + +Additional Async Client considerations: + +The client sketch must always test if the connection is still up at loop() +entry and after the return of any function call, that may have done a +delay() or yield() or any ESPAsyncTCP library family call. For example, +the connection could be lost during a call to _client->write(...). Client +sketches that delete _client as part of their onDisconnect() handler must +be very careful as _client will become invalid after calls to delay(), +yield(), etc. + + + */ + +#include "Arduino.h" + +#include "ESPAsyncTCP.h" +extern "C"{ + #include "lwip/opt.h" + #include "lwip/tcp.h" + #include "lwip/inet.h" + #include "lwip/dns.h" + #include "lwip/init.h" +} +#include + +/* + Async Client Error Return Tracker +*/ +// Assumption: callbacks are never called with err == ERR_ABRT; however, +// they may return ERR_ABRT. + +ACErrorTracker::ACErrorTracker(AsyncClient *c): + _client(c) + , _close_error(ERR_OK) + , _errored(EE_OK) +#ifdef DEBUG_MORE + , _error_event_cb(NULL) + , _error_event_cb_arg(NULL) +#endif +{} + +#ifdef DEBUG_MORE +/** + * This is not necessary, but a start at gathering some statistics on + * errored out connections. Used from AsyncServer. + */ +void ACErrorTracker::onErrorEvent(AsNotifyHandler cb, void *arg) { + _error_event_cb = cb; + _error_event_cb_arg = arg; +} +#endif + +void ACErrorTracker::setCloseError(err_t e) { + if (e != ERR_OK) + ASYNC_TCP_DEBUG("setCloseError() to: %s(%ld)\n", _client->errorToString(e), e); + if(_errored == EE_OK) + _close_error = e; +} +/** + * Called mainly by callback routines, called when err is not ERR_OK. + * This prevents the possiblity of aborting an already errored out + * connection. + */ +void ACErrorTracker::setErrored(size_t errorEvent){ + if(EE_OK == _errored) + _errored = errorEvent; +#ifdef DEBUG_MORE + if (_error_event_cb) + _error_event_cb(_error_event_cb_arg, errorEvent); +#endif +} +/** + * Used by callback functions only. Used for proper ERR_ABRT return value + * reporting. ERR_ABRT is only reported/returned once; thereafter ERR_OK + * is always returned. + */ +err_t ACErrorTracker::getCallbackCloseError(void){ + if (EE_OK != _errored) + return ERR_OK; + if (ERR_ABRT == _close_error) + setErrored(EE_ABORTED); + return _close_error; +} + +/* + Async TCP Client +*/ +#if DEBUG_ESP_ASYNC_TCP +static size_t _connectionCount=0; +#endif + +#if ASYNC_TCP_SSL_ENABLED +AsyncClient::AsyncClient(tcp_pcb* pcb, SSL_CTX * ssl_ctx): +#else +AsyncClient::AsyncClient(tcp_pcb* pcb): +#endif + _connect_cb(0) + , _connect_cb_arg(0) + , _discard_cb(0) + , _discard_cb_arg(0) + , _sent_cb(0) + , _sent_cb_arg(0) + , _error_cb(0) + , _error_cb_arg(0) + , _recv_cb(0) + , _recv_cb_arg(0) + , _pb_cb(0) + , _pb_cb_arg(0) + , _timeout_cb(0) + , _timeout_cb_arg(0) + , _poll_cb(0) + , _poll_cb_arg(0) + , _pcb_busy(false) +#if ASYNC_TCP_SSL_ENABLED + , _pcb_secure(false) + , _handshake_done(true) +#endif + , _pcb_sent_at(0) + , _close_pcb(false) + , _ack_pcb(true) + , _tx_unacked_len(0) + , _tx_acked_len(0) + , _rx_ack_len(0) + , _rx_last_packet(0) + , _rx_since_timeout(0) + , _ack_timeout(ASYNC_MAX_ACK_TIME) + , _connect_port(0) + , _recv_pbuf_flags(0) + , _errorTracker(NULL) + , prev(NULL) + , next(NULL) +{ + _pcb = pcb; + if(_pcb){ + _rx_last_packet = millis(); + tcp_setprio(_pcb, TCP_PRIO_MIN); + tcp_arg(_pcb, this); + tcp_recv(_pcb, &_s_recv); + tcp_sent(_pcb, &_s_sent); + tcp_err(_pcb, &_s_error); + tcp_poll(_pcb, &_s_poll, 1); +#if ASYNC_TCP_SSL_ENABLED + if(ssl_ctx){ + if(tcp_ssl_new_server(_pcb, ssl_ctx) < 0){ + _close(); + return; + } + tcp_ssl_arg(_pcb, this); + tcp_ssl_data(_pcb, &_s_data); + tcp_ssl_handshake(_pcb, &_s_handshake); + tcp_ssl_err(_pcb, &_s_ssl_error); + + _pcb_secure = true; + _handshake_done = false; + } +#endif + } + + _errorTracker = std::make_shared(this); +#if DEBUG_ESP_ASYNC_TCP + _errorTracker->setConnectionId(++_connectionCount); +#endif +} + +AsyncClient::~AsyncClient(){ + if(_pcb) + _close(); + + _errorTracker->clearClient(); +} + +inline void clearTcpCallbacks(tcp_pcb* pcb){ + tcp_arg(pcb, NULL); + tcp_sent(pcb, NULL); + tcp_recv(pcb, NULL); + tcp_err(pcb, NULL); + tcp_poll(pcb, NULL, 0); +} + +#if ASYNC_TCP_SSL_ENABLED +bool AsyncClient::connect(IPAddress ip, uint16_t port, bool secure){ +#else +bool AsyncClient::connect(IPAddress ip, uint16_t port){ +#endif + if (_pcb) //already connected + return false; + IPAddress addr; + addr = ip; +#if LWIP_VERSION_MAJOR == 1 + netif* interface = ip_route(&addr); + if (!interface){ //no route to host + return false; + } +#endif + tcp_pcb* pcb = tcp_new(); + if (!pcb){ //could not allocate pcb + return false; + } + + tcp_setprio(pcb, TCP_PRIO_MIN); +#if ASYNC_TCP_SSL_ENABLED + _pcb_secure = secure; + _handshake_done = !secure; +#endif + tcp_arg(pcb, this); + tcp_err(pcb, &_s_error); + size_t err = tcp_connect(pcb, addr, port,(tcp_connected_fn)&_s_connected); + return (ERR_OK == err); +} + +#if ASYNC_TCP_SSL_ENABLED +bool AsyncClient::connect(const char* host, uint16_t port, bool secure){ +#else +bool AsyncClient::connect(const char* host, uint16_t port){ +#endif + IPAddress addr; + err_t err = dns_gethostbyname(host, addr, (dns_found_callback)&_s_dns_found, this); + if(err == ERR_OK) { +#if ASYNC_TCP_SSL_ENABLED + return connect(addr, port, secure); +#else + return connect(addr, port); +#endif + } else if(err == ERR_INPROGRESS) { +#if ASYNC_TCP_SSL_ENABLED + _pcb_secure = secure; + _handshake_done = !secure; +#endif + _connect_port = port; + return true; + } + return false; +} + +AsyncClient& AsyncClient::operator=(const AsyncClient& other){ + if (_pcb) { + ASYNC_TCP_DEBUG("operator=[%u]: Abandoned _pcb(0x%" PRIXPTR ") forced close.\n", getConnectionId(), uintptr_t(_pcb)); + _close(); + } + _errorTracker = other._errorTracker; + + // I am confused when "other._pcb" falls out of scope the destructor will + // close it? TODO: Look to see where this is used and how it might work. + _pcb = other._pcb; + if (_pcb) { + _rx_last_packet = millis(); + tcp_setprio(_pcb, TCP_PRIO_MIN); + tcp_arg(_pcb, this); + tcp_recv(_pcb, &_s_recv); + tcp_sent(_pcb, &_s_sent); + tcp_err(_pcb, &_s_error); + tcp_poll(_pcb, &_s_poll, 1); +#if ASYNC_TCP_SSL_ENABLED + if(tcp_ssl_has(_pcb)){ + _pcb_secure = true; + _handshake_done = false; + tcp_ssl_arg(_pcb, this); + tcp_ssl_data(_pcb, &_s_data); + tcp_ssl_handshake(_pcb, &_s_handshake); + tcp_ssl_err(_pcb, &_s_ssl_error); + } else { + _pcb_secure = false; + _handshake_done = true; + } +#endif + } + return *this; +} + +bool AsyncClient::operator==(const AsyncClient &other) { + return (_pcb != NULL && other._pcb != NULL && (IPAddress(_pcb->remote_ip) == IPAddress(other._pcb->remote_ip)) && (_pcb->remote_port == other._pcb->remote_port)); +} + +void AsyncClient::abort(){ + // Notes: + // 1) _pcb is set to NULL, so we cannot call tcp_abort() more than once. + // 2) setCloseError(ERR_ABRT) is only done here! + // 3) Using this abort() function guarantees only one tcp_abort() call is + // made and only one CB returns with ERR_ABORT. + // 4) After abort() is called from _close(), no callbacks with an err + // parameter will be called. eg. _recv(), _error(), _connected(). + // _close() will reset there CB handlers before calling. + // 5) A callback to _error(), will set _pcb to NULL, thus avoiding the + // of a 2nd call to tcp_abort(). + // 6) Callbacks to _recv() or _connected() with err set, will result in _pcb + // set to NULL. Thus, preventing possible calls later to tcp_abort(). + if(_pcb) { + tcp_abort(_pcb); + _pcb = NULL; + setCloseError(ERR_ABRT); + } + return; +} + +void AsyncClient::close(bool now){ + if(_pcb) + tcp_recved(_pcb, _rx_ack_len); + if(now) { + ASYNC_TCP_DEBUG("close[%u]: AsyncClient 0x%" PRIXPTR "\n", getConnectionId(), uintptr_t(this)); + _close(); + } else { + _close_pcb = true; + } +} + +void AsyncClient::stop() { + close(false); +} + +bool AsyncClient::free(){ + if(!_pcb) + return true; + if(_pcb->state == 0 || _pcb->state > 4) + return true; + return false; +} + +size_t AsyncClient::write(const char* data) { + if(data == NULL) + return 0; + return write(data, strlen(data)); +} + +size_t AsyncClient::write(const char* data, size_t size, uint8_t apiflags) { + size_t will_send = add(data, size, apiflags); + + if(!will_send || !send()) + return 0; + return will_send; +} + +size_t AsyncClient::add(const char* data, size_t size, uint8_t apiflags) { + if(!_pcb || size == 0 || data == NULL) + return 0; + size_t room = space(); + if(!room) + return 0; +#if ASYNC_TCP_SSL_ENABLED + if(_pcb_secure){ + int sent = tcp_ssl_write(_pcb, (uint8_t*)data, size); + if(sent >= 0){ + _tx_unacked_len += sent; + return sent; + } + _close(); + return 0; + } +#endif + size_t will_send = (room < size) ? room : size; + err_t err = tcp_write(_pcb, data, will_send, apiflags); + if(err != ERR_OK) { + ASYNC_TCP_DEBUG("_add[%u]: tcp_write() returned err: %s(%ld)\n", getConnectionId(), errorToString(err), err); + return 0; + } + _tx_unacked_len += will_send; + return will_send; +} + +bool AsyncClient::send(){ +#if ASYNC_TCP_SSL_ENABLED + if(_pcb_secure) + return true; +#endif + err_t err = tcp_output(_pcb); + if(err == ERR_OK){ + _pcb_busy = true; + _pcb_sent_at = millis(); + return true; + } + + ASYNC_TCP_DEBUG("send[%u]: tcp_output() returned err: %s(%ld)", getConnectionId(), errorToString(err), err); + return false; +} + +size_t AsyncClient::ack(size_t len){ + if(len > _rx_ack_len) + len = _rx_ack_len; + if(len) + tcp_recved(_pcb, len); + _rx_ack_len -= len; + return len; +} + +// Private Callbacks + +void AsyncClient::_connected(std::shared_ptr& errorTracker, void* pcb, err_t err){ + //(void)err; // LWIP v1.4 appears to always call with ERR_OK + // Documentation for 2.1.0 also says: + // "err - An unused error code, always ERR_OK currently ;-)" + // https://www.nongnu.org/lwip/2_1_x/tcp_8h.html#a939867106bd492caf2d85852fb7f6ae8 + // Based on that wording and emoji lets just handle it now. + // After all, the API does allow for an err != ERR_OK. + if(NULL == pcb || ERR_OK != err) { + ASYNC_TCP_DEBUG("_connected[%u]:%s err: %s(%ld)\n", errorTracker->getConnectionId(), ((NULL == pcb) ? " NULL == pcb!," : ""), errorToString(err), err); + errorTracker->setCloseError(err); + errorTracker->setErrored(EE_CONNECTED_CB); + _pcb = reinterpret_cast(pcb); + if (_pcb) + clearTcpCallbacks(_pcb); + _pcb = NULL; + _error(err); + return; + } + + _pcb = reinterpret_cast(pcb); + if(_pcb){ + _pcb_busy = false; + _rx_last_packet = millis(); + tcp_setprio(_pcb, TCP_PRIO_MIN); + tcp_recv(_pcb, &_s_recv); + tcp_sent(_pcb, &_s_sent); + tcp_poll(_pcb, &_s_poll, 1); +#if ASYNC_TCP_SSL_ENABLED + if(_pcb_secure){ + if(tcp_ssl_new_client(_pcb) < 0){ + _close(); + return; + } + tcp_ssl_arg(_pcb, this); + tcp_ssl_data(_pcb, &_s_data); + tcp_ssl_handshake(_pcb, &_s_handshake); + tcp_ssl_err(_pcb, &_s_ssl_error); + } + } + if(!_pcb_secure && _connect_cb) +#else + } + if(_connect_cb) +#endif + _connect_cb(_connect_cb_arg, this); + return; +} + +void AsyncClient::_close(){ + if(_pcb) { +#if ASYNC_TCP_SSL_ENABLED + if(_pcb_secure){ + tcp_ssl_free(_pcb); + } +#endif + clearTcpCallbacks(_pcb); + err_t err = tcp_close(_pcb); + if(ERR_OK == err) { + setCloseError(err); + ASYNC_TCP_DEBUG("_close[%u]: AsyncClient 0x%" PRIXPTR "\n", getConnectionId(), uintptr_t(this)); + } else { + ASYNC_TCP_DEBUG("_close[%u]: abort() called for AsyncClient 0x%" PRIXPTR "\n", getConnectionId(), uintptr_t(this)); + abort(); + } + _pcb = NULL; + if(_discard_cb) + _discard_cb(_discard_cb_arg, this); + } + return; +} + +void AsyncClient::_error(err_t err) { + ASYNC_TCP_DEBUG("_error[%u]:%s err: %s(%ld)\n", getConnectionId(), ((NULL == _pcb) ? " NULL == _pcb!," : ""), errorToString(err), err); + if(_pcb){ +#if ASYNC_TCP_SSL_ENABLED + if(_pcb_secure){ + tcp_ssl_free(_pcb); + } +#endif + // At this callback _pcb is possible already freed. Thus, no calls are + // made to set to NULL other callbacks. + _pcb = NULL; + } + if(_error_cb) + _error_cb(_error_cb_arg, this, err); + if(_discard_cb) + _discard_cb(_discard_cb_arg, this); +} + +#if ASYNC_TCP_SSL_ENABLED +void AsyncClient::_ssl_error(int8_t err){ + if(_error_cb) + _error_cb(_error_cb_arg, this, err+64); +} +#endif + +void AsyncClient::_sent(std::shared_ptr& errorTracker, tcp_pcb* pcb, uint16_t len) { + (void)pcb; +#if ASYNC_TCP_SSL_ENABLED + if (_pcb_secure && !_handshake_done) + return; +#endif + _rx_last_packet = millis(); + _tx_unacked_len -= len; + _tx_acked_len += len; + ASYNC_TCP_DEBUG("_sent[%u]: %4u, unacked=%4u, acked=%4u, space=%4u\n", errorTracker->getConnectionId(), len, _tx_unacked_len, _tx_acked_len, space()); + if(_tx_unacked_len == 0){ + _pcb_busy = false; + errorTracker->setCloseError(ERR_OK); + if(_sent_cb) { + _sent_cb(_sent_cb_arg, this, _tx_acked_len, (millis() - _pcb_sent_at)); + if(!errorTracker->hasClient()) + return; + } + _tx_acked_len = 0; + } + return; +} + +void AsyncClient::_recv(std::shared_ptr& errorTracker, tcp_pcb* pcb, pbuf* pb, err_t err) { + // While lwIP v1.4 appears to always call with ERR_OK, 2.x lwIP may present + // a non-ERR_OK value. + // https://www.nongnu.org/lwip/2_1_x/tcp_8h.html#a780cfac08b02c66948ab94ea974202e8 + if(NULL == pcb || ERR_OK != err){ + ASYNC_TCP_DEBUG("_recv[%u]:%s err: %s(%ld)\n", errorTracker->getConnectionId(), ((NULL == pcb) ? " NULL == pcb!," : ""), errorToString(err), err); + ASYNC_TCP_ASSERT(ERR_ABRT != err); + errorTracker->setCloseError(err); + errorTracker->setErrored(EE_RECV_CB); + _pcb = pcb; + if(_pcb) + clearTcpCallbacks(_pcb); + _pcb = NULL; + // I think we are safe from being called from an interrupt context. + // Best Hint that calling _error() is safe: + // https://www.nongnu.org/lwip/2_1_x/group__lwip__nosys.html + // "Feed incoming packets to netif->input(pbuf, netif) function from + // mainloop, not from interrupt context. You can allocate a Packet buffers + // (PBUF) in interrupt context and put them into a queue which is processed + // from mainloop." + // And the description of "Mainloop Mode" option 2: + // https://www.nongnu.org/lwip/2_1_x/pitfalls.html + // "2) Run lwIP in a mainloop. ... lwIP is ONLY called from mainloop + // callstacks here. The ethernet IRQ has to put received telegrams into a + // queue which is polled in the mainloop. Ensure lwIP is NEVER called from + // an interrupt, ...!" + // Based on these comments I am thinking tcp_recv_fn() is called + // from somebody's mainloop(), which could only have been reached from a + // delay like function or the Arduino sketch loop() function has returned. + // What I don't want is for the client sketch to delete the AsyncClient + // object via _error() while it is in the middle of using it. However, + // the client sketch must always test that the connection is still up + // at loop() entry and after the return of any function call, that may + // have done a delay() or yield(). + _error(err); + return; + } + + if(pb == NULL){ + ASYNC_TCP_DEBUG("_recv[%u]: pb == NULL! Closing... %ld\n", errorTracker->getConnectionId(), err); + _close(); + return; + } + _rx_last_packet = millis(); + errorTracker->setCloseError(ERR_OK); +#if ASYNC_TCP_SSL_ENABLED + if(_pcb_secure){ + ASYNC_TCP_DEBUG("_recv[%u]: %d\n", getConnectionId(), pb->tot_len); + int read_bytes = tcp_ssl_read(pcb, pb); + if(read_bytes < 0){ + if (read_bytes != SSL_CLOSE_NOTIFY) { + ASYNC_TCP_DEBUG("_recv[%u] err: %d\n", getConnectionId(), read_bytes); + _close(); + } + } + return; + } +#endif + while(pb != NULL){ + // IF this callback function returns ERR_OK or ERR_ABRT + // then it is assummed we freed the pbufs. + // https://www.nongnu.org/lwip/2_1_x/group__tcp__raw.html#ga8afd0b316a87a5eeff4726dc95006ed0 + if(!errorTracker->hasClient()){ + while(pb != NULL){ + pbuf *b = pb; + pb = b->next; + b->next = NULL; + pbuf_free(b); + } + return; + } + //we should not ack before we assimilate the data + _ack_pcb = true; + pbuf *b = pb; + pb = b->next; + b->next = NULL; + ASYNC_TCP_DEBUG("_recv[%u]: %d%s\n", errorTracker->getConnectionId(), b->len, (b->flags&PBUF_FLAG_PUSH)?", PBUF_FLAG_PUSH":""); + if(_pb_cb){ + _pb_cb(_pb_cb_arg, this, b); + } else { + if(_recv_cb){ + _recv_pbuf_flags = b->flags; + _recv_cb(_recv_cb_arg, this, b->payload, b->len); + } + if(errorTracker->hasClient()){ + if(!_ack_pcb) + _rx_ack_len += b->len; + else + tcp_recved(pcb, b->len); + } + pbuf_free(b); + } + } + return; +} + +void AsyncClient::_poll(std::shared_ptr& errorTracker, tcp_pcb* pcb){ + (void)pcb; + errorTracker->setCloseError(ERR_OK); + + // Close requested + if(_close_pcb){ + ASYNC_TCP_DEBUG("_poll[%u]: Process _close_pcb.\n", errorTracker->getConnectionId() ); + _close_pcb = false; + _close(); + return; + } + uint32_t now = millis(); + + // ACK Timeout + if(_pcb_busy && _ack_timeout && (now - _pcb_sent_at) >= _ack_timeout){ + _pcb_busy = false; + if(_timeout_cb) + _timeout_cb(_timeout_cb_arg, this, (now - _pcb_sent_at)); + return; + } + // RX Timeout + if(_rx_since_timeout && (now - _rx_last_packet) >= (_rx_since_timeout * 1000)){ + ASYNC_TCP_DEBUG("_poll[%u]: RX Timeout.\n", errorTracker->getConnectionId() ); + _close(); + return; + } +#if ASYNC_TCP_SSL_ENABLED + // SSL Handshake Timeout + if(_pcb_secure && !_handshake_done && (now - _rx_last_packet) >= 2000){ + ASYNC_TCP_DEBUG("_poll[%u]: SSL Handshake Timeout.\n", errorTracker->getConnectionId() ); + _close(); + return; + } +#endif + // Everything is fine + if(_poll_cb) + _poll_cb(_poll_cb_arg, this); + return; +} + +#if LWIP_VERSION_MAJOR == 1 +void AsyncClient::_dns_found(struct ip_addr *ipaddr){ +#else +void AsyncClient::_dns_found(const ip_addr *ipaddr){ +#endif + if(ipaddr){ +#if ASYNC_TCP_SSL_ENABLED + connect(ipaddr, _connect_port, _pcb_secure); +#else + connect(ipaddr, _connect_port); +#endif + } else { + if(_error_cb) + _error_cb(_error_cb_arg, this, -55); + if(_discard_cb) + _discard_cb(_discard_cb_arg, this); + } +} + +// lwIP Callbacks +#if LWIP_VERSION_MAJOR == 1 +void AsyncClient::_s_dns_found(const char *name, ip_addr_t *ipaddr, void *arg){ +#else +void AsyncClient::_s_dns_found(const char *name, const ip_addr *ipaddr, void *arg){ +#endif + (void)name; + reinterpret_cast(arg)->_dns_found(ipaddr); +} + +err_t AsyncClient::_s_poll(void *arg, struct tcp_pcb *tpcb) { + AsyncClient *c = reinterpret_cast(arg); + std::shared_ptrerrorTracker = c->getACErrorTracker(); + c->_poll(errorTracker, tpcb); + return errorTracker->getCallbackCloseError(); +} + +err_t AsyncClient::_s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, err_t err) { + AsyncClient *c = reinterpret_cast(arg); + auto errorTracker = c->getACErrorTracker(); + c->_recv(errorTracker, tpcb, pb, err); + return errorTracker->getCallbackCloseError(); +} + +void AsyncClient::_s_error(void *arg, err_t err) { + AsyncClient *c = reinterpret_cast(arg); + auto errorTracker = c->getACErrorTracker(); + errorTracker->setCloseError(err); + errorTracker->setErrored(EE_ERROR_CB); + c->_error(err); +} + +err_t AsyncClient::_s_sent(void *arg, struct tcp_pcb *tpcb, uint16_t len) { + AsyncClient *c = reinterpret_cast(arg); + auto errorTracker = c->getACErrorTracker(); + c->_sent(errorTracker, tpcb, len); + return errorTracker->getCallbackCloseError(); +} + +err_t AsyncClient::_s_connected(void* arg, void* tpcb, err_t err){ + AsyncClient *c = reinterpret_cast(arg); + auto errorTracker = c->getACErrorTracker(); + c->_connected(errorTracker, tpcb, err); + return errorTracker->getCallbackCloseError(); +} + +#if ASYNC_TCP_SSL_ENABLED +void AsyncClient::_s_data(void *arg, struct tcp_pcb *tcp, uint8_t * data, size_t len){ + (void)tcp; + AsyncClient *c = reinterpret_cast(arg); + if(c->_recv_cb) + c->_recv_cb(c->_recv_cb_arg, c, data, len); +} + +void AsyncClient::_s_handshake(void *arg, struct tcp_pcb *tcp, SSL *ssl){ + (void)tcp; + (void)ssl; + AsyncClient *c = reinterpret_cast(arg); + c->_handshake_done = true; + if(c->_connect_cb) + c->_connect_cb(c->_connect_cb_arg, c); +} + +void AsyncClient::_s_ssl_error(void *arg, struct tcp_pcb *tcp, int8_t err){ + (void)tcp; +#ifdef DEBUG_ESP_ASYNC_TCP + AsyncClient *c = reinterpret_cast(arg); + auto errorTracker = c->getACErrorTracker(); + ASYNC_TCP_DEBUG("_ssl_error[%u] err = %d\n", errorTracker->getConnectionId(), err); +#endif + reinterpret_cast(arg)->_ssl_error(err); +} +#endif + +// Operators + +AsyncClient & AsyncClient::operator+=(const AsyncClient &other) { + if(next == NULL){ + next = (AsyncClient*)(&other); + next->prev = this; + } else { + AsyncClient *c = next; + while(c->next != NULL) c = c->next; + c->next =(AsyncClient*)(&other); + c->next->prev = c; + } + return *this; +} + +void AsyncClient::setRxTimeout(uint32_t timeout){ + _rx_since_timeout = timeout; +} + +uint32_t AsyncClient::getRxTimeout(){ + return _rx_since_timeout; +} + +uint32_t AsyncClient::getAckTimeout(){ + return _ack_timeout; +} + +void AsyncClient::setAckTimeout(uint32_t timeout){ + _ack_timeout = timeout; +} + +void AsyncClient::setNoDelay(bool nodelay){ + if(!_pcb) + return; + if(nodelay) + tcp_nagle_disable(_pcb); + else + tcp_nagle_enable(_pcb); +} + +bool AsyncClient::getNoDelay(){ + if(!_pcb) + return false; + return tcp_nagle_disabled(_pcb); +} + +uint16_t AsyncClient::getMss(){ + if(_pcb) + return tcp_mss(_pcb); + return 0; +} + +uint16_t AsyncClient::getRemotePort() { + if(!_pcb) + return 0; + return _pcb->remote_port; +} + + +uint16_t AsyncClient::getLocalPort() { + if(!_pcb) + return 0; + return _pcb->local_port; +} + +IPAddress AsyncClient::remoteIP() { + if(!_pcb) + return IPAddress(0); + return _pcb->remote_ip; +} + +uint16_t AsyncClient::remotePort() { + return getRemotePort(); +} + +IPAddress AsyncClient::localIP() { + if(!_pcb) + return IPAddress(0); + return _pcb->local_ip; +} + +uint16_t AsyncClient::localPort() { + return getLocalPort(); +} + +#if ASYNC_TCP_SSL_ENABLED +SSL * AsyncClient::getSSL(){ + if(_pcb && _pcb_secure){ + return tcp_ssl_get_ssl(_pcb); + } + return NULL; +} +#endif + +uint8_t AsyncClient::state() { + if(!_pcb) + return 0; + return _pcb->state; +} + +bool AsyncClient::connected(){ + if (!_pcb) + return false; +#if ASYNC_TCP_SSL_ENABLED + return _pcb->state == 4 && _handshake_done; +#else + return _pcb->state == 4; +#endif +} + +bool AsyncClient::connecting(){ + if (!_pcb) + return false; + return _pcb->state > 0 && _pcb->state < 4; +} + +bool AsyncClient::disconnecting(){ + if (!_pcb) + return false; + return _pcb->state > 4 && _pcb->state < 10; +} + +bool AsyncClient::disconnected(){ + if (!_pcb) + return true; + return _pcb->state == 0 || _pcb->state == 10; +} + +bool AsyncClient::freeable(){ + if (!_pcb) + return true; + return _pcb->state == 0 || _pcb->state > 4; +} + +bool AsyncClient::canSend(){ + return !_pcb_busy && (space() > 0); +} + + +// Callback Setters + +void AsyncClient::onConnect(AcConnectHandler cb, void* arg){ + _connect_cb = cb; + _connect_cb_arg = arg; +} + +void AsyncClient::onDisconnect(AcConnectHandler cb, void* arg){ + _discard_cb = cb; + _discard_cb_arg = arg; +} + +void AsyncClient::onAck(AcAckHandler cb, void* arg){ + _sent_cb = cb; + _sent_cb_arg = arg; +} + +void AsyncClient::onError(AcErrorHandler cb, void* arg){ + _error_cb = cb; + _error_cb_arg = arg; +} + +void AsyncClient::onData(AcDataHandler cb, void* arg){ + _recv_cb = cb; + _recv_cb_arg = arg; +} + +void AsyncClient::onPacket(AcPacketHandler cb, void* arg){ + _pb_cb = cb; + _pb_cb_arg = arg; +} + +void AsyncClient::onTimeout(AcTimeoutHandler cb, void* arg){ + _timeout_cb = cb; + _timeout_cb_arg = arg; +} + +void AsyncClient::onPoll(AcConnectHandler cb, void* arg){ + _poll_cb = cb; + _poll_cb_arg = arg; +} + + +size_t AsyncClient::space(){ +#if ASYNC_TCP_SSL_ENABLED + if((_pcb != NULL) && (_pcb->state == 4) && _handshake_done){ + uint16_t s = tcp_sndbuf(_pcb); + if(_pcb_secure){ +#ifdef AXTLS_2_0_0_SNDBUF + return tcp_ssl_sndbuf(_pcb); +#else + if(s >= 128) //safe approach + return s - 128; + return 0; +#endif + } + return s; + } +#else // ASYNC_TCP_SSL_ENABLED + if((_pcb != NULL) && (_pcb->state == 4)){ + return tcp_sndbuf(_pcb); + } +#endif // ASYNC_TCP_SSL_ENABLED + return 0; +} + +void AsyncClient::ackPacket(struct pbuf * pb){ + if(!pb){ + return; + } + tcp_recved(_pcb, pb->len); + pbuf_free(pb); +} + +const char * AsyncClient::errorToString(err_t error) { + switch (error) { + case ERR_OK: return "No error, everything OK"; + case ERR_MEM: return "Out of memory error"; + case ERR_BUF: return "Buffer error"; + case ERR_TIMEOUT: return "Timeout"; + case ERR_RTE: return "Routing problem"; + case ERR_INPROGRESS: return "Operation in progress"; + case ERR_VAL: return "Illegal value"; + case ERR_WOULDBLOCK: return "Operation would block"; + case ERR_ABRT: return "Connection aborted"; + case ERR_RST: return "Connection reset"; + case ERR_CLSD: return "Connection closed"; + case ERR_CONN: return "Not connected"; + case ERR_ARG: return "Illegal argument"; + case ERR_USE: return "Address in use"; +#if defined(LWIP_VERSION_MAJOR) && (LWIP_VERSION_MAJOR > 1) + case ERR_ALREADY: return "Already connectioning"; +#endif + case ERR_IF: return "Low-level netif error"; + case ERR_ISCONN: return "Connection already established"; + case -55: return "DNS failed"; + default: return "Unknown error"; + } +} + +const char * AsyncClient::stateToString(){ + switch(state()){ + case 0: return "Closed"; + case 1: return "Listen"; + case 2: return "SYN Sent"; + case 3: return "SYN Received"; + case 4: return "Established"; + case 5: return "FIN Wait 1"; + case 6: return "FIN Wait 2"; + case 7: return "Close Wait"; + case 8: return "Closing"; + case 9: return "Last ACK"; + case 10: return "Time Wait"; + default: return "UNKNOWN"; + } +} + +/* + Async TCP Server +*/ +struct pending_pcb { + tcp_pcb* pcb; + pbuf *pb; + struct pending_pcb * next; +}; + +AsyncServer::AsyncServer(IPAddress addr, uint16_t port) + : _port(port) + , _addr(addr) + , _noDelay(false) + , _pcb(0) + , _connect_cb(0) + , _connect_cb_arg(0) +#if ASYNC_TCP_SSL_ENABLED + , _pending(NULL) + , _ssl_ctx(NULL) + , _file_cb(0) + , _file_cb_arg(0) +#endif +{ +#ifdef DEBUG_MORE + for (size_t i=0; inext; + if(p->pb){ + pbuf_free(p->pb); + } + free(p); + } + } + } +#endif +} + +void AsyncServer::setNoDelay(bool nodelay){ + _noDelay = nodelay; +} + +bool AsyncServer::getNoDelay(){ + return _noDelay; +} + +uint8_t AsyncServer::status(){ + if (!_pcb) + return 0; + return _pcb->state; +} + +err_t AsyncServer::_accept(tcp_pcb* pcb, err_t err){ + //http://savannah.nongnu.org/bugs/?43739 + if(NULL == pcb || ERR_OK != err){ + // https://www.nongnu.org/lwip/2_1_x/tcp_8h.html#a00517abce6856d6c82f0efebdafb734d + // An error code if there has been an error accepting. Only return ERR_ABRT + // if you have called tcp_abort from within the callback function! + // eg. 2.1.0 could call with error on failure to allocate pcb. + ASYNC_TCP_DEBUG("_accept:%s err: %ld\n", ((NULL == pcb) ? " NULL == pcb!," : ""), err); + ASYNC_TCP_ASSERT(ERR_ABRT != err); +#ifdef DEBUG_MORE + incEventCount(EE_ACCEPT_CB); +#endif + return ERR_OK; + } + + if(_connect_cb){ +#if ASYNC_TCP_SSL_ENABLED + if (_noDelay || _ssl_ctx) +#else + if (_noDelay) +#endif + tcp_nagle_disable(pcb); + else + tcp_nagle_enable(pcb); + +#if ASYNC_TCP_SSL_ENABLED + if(_ssl_ctx){ + if(tcp_ssl_has_client() || _pending){ + struct pending_pcb * new_item = (struct pending_pcb*)malloc(sizeof(struct pending_pcb)); + if(!new_item){ + ASYNC_TCP_DEBUG("### malloc new pending failed!\n"); + if(tcp_close(pcb) != ERR_OK){ + tcp_abort(pcb); + return ERR_ABRT; + } + return ERR_OK; + } + //1 ASYNC_TCP_DEBUG("### put to wait: %d\n", _clients_waiting); + new_item->pcb = pcb; + new_item->pb = NULL; + new_item->next = NULL; + tcp_setprio(_pcb, TCP_PRIO_MIN); + tcp_arg(pcb, this); + tcp_poll(pcb, &_s_poll, 1); + tcp_recv(pcb, &_s_recv); + + if(_pending == NULL){ + _pending = new_item; + } else { + struct pending_pcb * p = _pending; + while(p->next != NULL) + p = p->next; + p->next = new_item; + } + } else { + AsyncClient *c = new (std::nothrow) AsyncClient(pcb, _ssl_ctx); + if(c){ + ASYNC_TCP_DEBUG("_accept[%u]: SSL connected\n", c->getConnectionId()); + c->onConnect([this](void * arg, AsyncClient *c){ + (void)arg; + _connect_cb(_connect_cb_arg, c); + }, this); + } else { + ASYNC_TCP_DEBUG("_accept[_ssl_ctx]: new AsyncClient() failed, connection aborted!\n"); + if(tcp_close(pcb) != ERR_OK){ + tcp_abort(pcb); + return ERR_ABRT; + } + } + } + return ERR_OK; + } else { + AsyncClient *c = new (std::nothrow) AsyncClient(pcb, NULL); +#else + AsyncClient *c = new (std::nothrow) AsyncClient(pcb); +#endif + + if(c){ + auto errorTracker = c->getACErrorTracker(); +#ifdef DEBUG_MORE + errorTracker->onErrorEvent( + [](void *obj, size_t ee){ ((AsyncServer*)(obj))->incEventCount(ee); }, + this); +#endif + ASYNC_TCP_DEBUG("_accept[%u]: connected\n", errorTracker->getConnectionId()); + _connect_cb(_connect_cb_arg, c); + return errorTracker->getCallbackCloseError(); + } else { + ASYNC_TCP_DEBUG("_accept: new AsyncClient() failed, connection aborted!\n"); + if(tcp_close(pcb) != ERR_OK){ + tcp_abort(pcb); + return ERR_ABRT; + } + } +#if ASYNC_TCP_SSL_ENABLED + } +#endif + } + if(tcp_close(pcb) != ERR_OK){ + tcp_abort(pcb); + return ERR_ABRT; + } + return ERR_OK; +} + +err_t AsyncServer::_s_accept(void *arg, tcp_pcb* pcb, err_t err){ + return reinterpret_cast(arg)->_accept(pcb, err); +} + +#if ASYNC_TCP_SSL_ENABLED +err_t AsyncServer::_poll(tcp_pcb* pcb){ + err_t err = ERR_OK; + if(!tcp_ssl_has_client() && _pending){ + struct pending_pcb * p = _pending; + if(p->pcb == pcb){ + _pending = _pending->next; + } else { + while(p->next && p->next->pcb != pcb) p = p->next; + if(!p->next) return 0; + struct pending_pcb * b = p->next; + p->next = b->next; + p = b; + } + //1 ASYNC_TCP_DEBUG("### remove from wait: %d\n", _clients_waiting); + AsyncClient *c = new (std::nothrow) AsyncClient(pcb, _ssl_ctx); + if(c){ + c->onConnect([this](void * arg, AsyncClient *c){ + (void)arg; + _connect_cb(_connect_cb_arg, c); + }, this); + if(p->pb) { + auto errorTracker = c->getACErrorTracker(); + c->_recv(errorTracker, pcb, p->pb, 0); + err = errorTracker->getCallbackCloseError(); + } + } + // Should there be error handling for when "new AsynClient" fails?? + free(p); + } + return err; +} + +err_t AsyncServer::_recv(struct tcp_pcb *pcb, struct pbuf *pb, err_t err){ + (void)err; + if(!_pending) + return ERR_OK; + + struct pending_pcb * p; + + if(!pb){ + //1 ASYNC_TCP_DEBUG("### close from wait: %d\n", _clients_waiting); + p = _pending; + if(p->pcb == pcb){ + _pending = _pending->next; + } else { + while(p->next && p->next->pcb != pcb) p = p->next; + if(!p->next) return 0; + struct pending_pcb * b = p->next; + p->next = b->next; + p = b; + } + if(p->pb){ + pbuf_free(p->pb); + } + free(p); + size_t err = tcp_close(pcb); + if (err != ERR_OK) { + tcp_abort(pcb); + return ERR_ABRT; + } + } else { + //1 ASYNC_TCP_DEBUG("### wait _recv: %u %d\n", pb->tot_len, _clients_waiting); + p = _pending; + while(p && p->pcb != pcb) + p = p->next; + if(p){ + if(p->pb){ + pbuf_chain(p->pb, pb); + } else { + p->pb = pb; + } + } + } + return ERR_OK; +} + +int AsyncServer::_cert(const char *filename, uint8_t **buf){ + if(_file_cb){ + return _file_cb(_file_cb_arg, filename, buf); + } + *buf = 0; + return 0; +} + +int AsyncServer::_s_cert(void *arg, const char *filename, uint8_t **buf){ + return reinterpret_cast(arg)->_cert(filename, buf); +} + +err_t AsyncServer::_s_poll(void *arg, struct tcp_pcb *pcb){ + return reinterpret_cast(arg)->_poll(pcb); +} + +err_t AsyncServer::_s_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *pb, err_t err){ + return reinterpret_cast(arg)->_recv(pcb, pb, err); +} +#endif diff --git a/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h new file mode 100644 index 0000000..e0541ab --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h @@ -0,0 +1,324 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef ASYNCTCP_H_ +#define ASYNCTCP_H_ + +#include +#include "IPAddress.h" +#include +#include + +extern "C" { + #include "lwip/init.h" + #include "lwip/err.h" + #include "lwip/pbuf.h" +}; + +class AsyncClient; +class AsyncServer; +class ACErrorTracker; + +#define ASYNC_MAX_ACK_TIME 5000 +#define ASYNC_WRITE_FLAG_COPY 0x01 //will allocate new buffer to hold the data while sending (else will hold reference to the data given) +#define ASYNC_WRITE_FLAG_MORE 0x02 //will not send PSH flag, meaning that there should be more data to be sent before the application should react. + +struct tcp_pcb; +struct ip_addr; +#if ASYNC_TCP_SSL_ENABLED +struct SSL_; +typedef struct SSL_ SSL; +struct SSL_CTX_; +typedef struct SSL_CTX_ SSL_CTX; +#endif + +typedef std::function AcConnectHandler; +typedef std::function AcAckHandler; +typedef std::function AcErrorHandler; +typedef std::function AcDataHandler; +typedef std::function AcPacketHandler; +typedef std::function AcTimeoutHandler; +typedef std::function AsNotifyHandler; + +enum error_events { + EE_OK = 0, + EE_ABORTED, // Callback or foreground aborted connections + EE_ERROR_CB, // Stack initiated aborts via error Callbacks. + EE_CONNECTED_CB, + EE_RECV_CB, + EE_ACCEPT_CB, + EE_MAX +}; +// DEBUG_MORE is for gathering more information on which CBs close events are +// occuring and count. +// #define DEBUG_MORE 1 +class ACErrorTracker { + private: + AsyncClient *_client; + err_t _close_error; + int _errored; +#if DEBUG_ESP_ASYNC_TCP + size_t _connectionId; +#endif +#ifdef DEBUG_MORE + AsNotifyHandler _error_event_cb; + void* _error_event_cb_arg; +#endif + + protected: + friend class AsyncClient; + friend class AsyncServer; +#ifdef DEBUG_MORE + void onErrorEvent(AsNotifyHandler cb, void *arg); +#endif +#if DEBUG_ESP_ASYNC_TCP + void setConnectionId(size_t id) { _connectionId=id;} + size_t getConnectionId(void) { return _connectionId;} +#endif + void setCloseError(err_t e); + void setErrored(size_t errorEvent); + err_t getCallbackCloseError(void); + void clearClient(void){ if (_client) _client = NULL;} + + public: + err_t getCloseError(void) const { return _close_error;} + bool hasClient(void) const { return (_client != NULL);} + ACErrorTracker(AsyncClient *c); + ~ACErrorTracker() {} +}; + +class AsyncClient { + protected: + friend class AsyncTCPbuffer; + friend class AsyncServer; + tcp_pcb* _pcb; + AcConnectHandler _connect_cb; + void* _connect_cb_arg; + AcConnectHandler _discard_cb; + void* _discard_cb_arg; + AcAckHandler _sent_cb; + void* _sent_cb_arg; + AcErrorHandler _error_cb; + void* _error_cb_arg; + AcDataHandler _recv_cb; + void* _recv_cb_arg; + AcPacketHandler _pb_cb; + void* _pb_cb_arg; + AcTimeoutHandler _timeout_cb; + void* _timeout_cb_arg; + AcConnectHandler _poll_cb; + void* _poll_cb_arg; + bool _pcb_busy; +#if ASYNC_TCP_SSL_ENABLED + bool _pcb_secure; + bool _handshake_done; +#endif + uint32_t _pcb_sent_at; + bool _close_pcb; + bool _ack_pcb; + uint32_t _tx_unacked_len; + uint32_t _tx_acked_len; + uint32_t _rx_ack_len; + uint32_t _rx_last_packet; + uint32_t _rx_since_timeout; + uint32_t _ack_timeout; + uint16_t _connect_port; + u8_t _recv_pbuf_flags; + std::shared_ptr _errorTracker; + + void _close(); + void _connected(std::shared_ptr& closeAbort, void* pcb, err_t err); + void _error(err_t err); +#if ASYNC_TCP_SSL_ENABLED + void _ssl_error(int8_t err); +#endif + void _poll(std::shared_ptr& closeAbort, tcp_pcb* pcb); + void _sent(std::shared_ptr& closeAbort, tcp_pcb* pcb, uint16_t len); +#if LWIP_VERSION_MAJOR == 1 + void _dns_found(struct ip_addr *ipaddr); +#else + void _dns_found(const ip_addr *ipaddr); +#endif + static err_t _s_poll(void *arg, struct tcp_pcb *tpcb); + static err_t _s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, err_t err); + static void _s_error(void *arg, err_t err); + static err_t _s_sent(void *arg, struct tcp_pcb *tpcb, uint16_t len); + static err_t _s_connected(void* arg, void* tpcb, err_t err); +#if LWIP_VERSION_MAJOR == 1 + static void _s_dns_found(const char *name, struct ip_addr *ipaddr, void *arg); +#else + static void _s_dns_found(const char *name, const ip_addr *ipaddr, void *arg); +#endif +#if ASYNC_TCP_SSL_ENABLED + static void _s_data(void *arg, struct tcp_pcb *tcp, uint8_t * data, size_t len); + static void _s_handshake(void *arg, struct tcp_pcb *tcp, SSL *ssl); + static void _s_ssl_error(void *arg, struct tcp_pcb *tcp, int8_t err); +#endif + std::shared_ptr getACErrorTracker(void) const { return _errorTracker; }; + void setCloseError(err_t e) const { _errorTracker->setCloseError(e);} + + public: + AsyncClient* prev; + AsyncClient* next; + +#if ASYNC_TCP_SSL_ENABLED + AsyncClient(tcp_pcb* pcb = 0, SSL_CTX * ssl_ctx = NULL); +#else + AsyncClient(tcp_pcb* pcb = 0); +#endif + ~AsyncClient(); + + AsyncClient & operator=(const AsyncClient &other); + AsyncClient & operator+=(const AsyncClient &other); + + bool operator==(const AsyncClient &other); + + bool operator!=(const AsyncClient &other) { + return !(*this == other); + } +#if ASYNC_TCP_SSL_ENABLED + bool connect(IPAddress ip, uint16_t port, bool secure=false); + bool connect(const char* host, uint16_t port, bool secure=false); +#else + bool connect(IPAddress ip, uint16_t port); + bool connect(const char* host, uint16_t port); +#endif + void close(bool now = false); + void stop(); + void abort(); + bool free(); + + bool canSend();//ack is not pending + size_t space(); + size_t add(const char* data, size_t size, uint8_t apiflags=0);//add for sending + bool send();//send all data added with the method above + size_t ack(size_t len); //ack data that you have not acked using the method below + void ackLater(){ _ack_pcb = false; } //will not ack the current packet. Call from onData + bool isRecvPush(){ return !!(_recv_pbuf_flags & PBUF_FLAG_PUSH); } +#if DEBUG_ESP_ASYNC_TCP + size_t getConnectionId(void) const { return _errorTracker->getConnectionId();} +#endif +#if ASYNC_TCP_SSL_ENABLED + SSL *getSSL(); +#endif + + size_t write(const char* data); + size_t write(const char* data, size_t size, uint8_t apiflags=0); //only when canSend() == true + + uint8_t state(); + bool connecting(); + bool connected(); + bool disconnecting(); + bool disconnected(); + bool freeable();//disconnected or disconnecting + + uint16_t getMss(); + uint32_t getRxTimeout(); + void setRxTimeout(uint32_t timeout);//no RX data timeout for the connection in seconds + uint32_t getAckTimeout(); + void setAckTimeout(uint32_t timeout);//no ACK timeout for the last sent packet in milliseconds + void setNoDelay(bool nodelay); + bool getNoDelay(); + uint16_t getRemotePort(); + uint16_t getLocalPort(); + + IPAddress remoteIP(); + uint16_t remotePort(); + IPAddress localIP(); + uint16_t localPort(); + + void onConnect(AcConnectHandler cb, void* arg = 0); //on successful connect + void onDisconnect(AcConnectHandler cb, void* arg = 0); //disconnected + void onAck(AcAckHandler cb, void* arg = 0); //ack received + void onError(AcErrorHandler cb, void* arg = 0); //unsuccessful connect or error + void onData(AcDataHandler cb, void* arg = 0); //data received (called if onPacket is not used) + void onPacket(AcPacketHandler cb, void* arg = 0); //data received + void onTimeout(AcTimeoutHandler cb, void* arg = 0); //ack timeout + void onPoll(AcConnectHandler cb, void* arg = 0); //every 125ms when connected + void ackPacket(struct pbuf * pb); + + const char * errorToString(err_t error); + const char * stateToString(); + + void _recv(std::shared_ptr& closeAbort, tcp_pcb* pcb, pbuf* pb, err_t err); + err_t getCloseError(void) const { return _errorTracker->getCloseError();} +}; + +#if ASYNC_TCP_SSL_ENABLED +typedef std::function AcSSlFileHandler; +struct pending_pcb; +#endif + + +class AsyncServer { + protected: + uint16_t _port; + IPAddress _addr; + bool _noDelay; + tcp_pcb* _pcb; + AcConnectHandler _connect_cb; + void* _connect_cb_arg; +#if ASYNC_TCP_SSL_ENABLED + struct pending_pcb * _pending; + SSL_CTX * _ssl_ctx; + AcSSlFileHandler _file_cb; + void* _file_cb_arg; +#endif +#ifdef DEBUG_MORE + int _event_count[EE_MAX]; +#endif + + public: + + AsyncServer(IPAddress addr, uint16_t port); + AsyncServer(uint16_t port); + ~AsyncServer(); + void onClient(AcConnectHandler cb, void* arg); +#if ASYNC_TCP_SSL_ENABLED + void onSslFileRequest(AcSSlFileHandler cb, void* arg); + void beginSecure(const char *cert, const char *private_key_file, const char *password); +#endif + void begin(); + void end(); + void setNoDelay(bool nodelay); + bool getNoDelay(); + uint8_t status(); +#ifdef DEBUG_MORE + int getEventCount(size_t ee) const { return _event_count[ee];} +#endif + protected: + err_t _accept(tcp_pcb* newpcb, err_t err); + static err_t _s_accept(void *arg, tcp_pcb* newpcb, err_t err); +#ifdef DEBUG_MORE + int incEventCount(size_t ee) { return ++_event_count[ee];} +#endif +#if ASYNC_TCP_SSL_ENABLED + int _cert(const char *filename, uint8_t **buf); + err_t _poll(tcp_pcb* pcb); + err_t _recv(tcp_pcb *pcb, struct pbuf *pb, err_t err); + static int _s_cert(void *arg, const char *filename, uint8_t **buf); + static err_t _s_poll(void *arg, struct tcp_pcb *tpcb); + static err_t _s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, err_t err); +#endif +}; + + +#endif /* ASYNCTCP_H_ */ diff --git a/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.cpp b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.cpp new file mode 100644 index 0000000..d2261da --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.cpp @@ -0,0 +1,555 @@ +/** + * @file ESPAsyncTCPbuffer.cpp + * @date 22.01.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the Asynv TCP for ESP. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + + +#include +#include + +#include "ESPAsyncTCPbuffer.h" + + +AsyncTCPbuffer::AsyncTCPbuffer(AsyncClient* client) { + if(client == NULL) { + DEBUG_ASYNC_TCP("[A-TCP] client is null!!!\n"); + panic(); + } + + _client = client; + _TXbufferWrite = new (std::nothrow) cbuf(TCP_MSS); + _TXbufferRead = _TXbufferWrite; + _RXbuffer = new (std::nothrow) cbuf(100); + _RXmode = ATB_RX_MODE_FREE; + _rxSize = 0; + _rxTerminator = 0x00; + _rxReadBytesPtr = NULL; + _rxReadStringPtr = NULL; + _cbDisconnect = NULL; + + _cbRX = NULL; + _cbDone = NULL; + _attachCallbacks(); +} + +AsyncTCPbuffer::~AsyncTCPbuffer() { + if(_client) { + _client->close(); + } + + if(_RXbuffer) { + delete _RXbuffer; + _RXbuffer = NULL; + } + + if(_TXbufferWrite) { + // will be deleted in _TXbufferRead chain + _TXbufferWrite = NULL; + } + + if(_TXbufferRead) { + cbuf * next = _TXbufferRead->next; + delete _TXbufferRead; + while(next != NULL) { + _TXbufferRead = next; + next = _TXbufferRead->next; + delete _TXbufferRead; + } + _TXbufferRead = NULL; + } +} + +size_t AsyncTCPbuffer::write(String & data) { + return write(data.c_str(), data.length()); +} + +size_t AsyncTCPbuffer::write(uint8_t data) { + return write(&data, 1); +} + +size_t AsyncTCPbuffer::write(const char* data) { + return write((const uint8_t *) data, strlen(data)); +} + +size_t AsyncTCPbuffer::write(const char *data, size_t len) { + return write((const uint8_t *) data, len); +} + +/** + * write data in to buffer and try to send the data + * @param data + * @param len + * @return + */ +size_t AsyncTCPbuffer::write(const uint8_t *data, size_t len) { + if(_TXbufferWrite == NULL || _client == NULL || !_client->connected() || data == NULL || len == 0) { + return 0; + } + + size_t bytesLeft = len; + while(bytesLeft) { + size_t w = _TXbufferWrite->write((const char*) data, bytesLeft); + bytesLeft -= w; + data += w; + _sendBuffer(); + + // add new buffer since we have more data + if(_TXbufferWrite->full() && bytesLeft > 0) { + + // to less ram!!! + if(ESP.getFreeHeap() < 4096) { + DEBUG_ASYNC_TCP("[A-TCP] run out of Heap can not send all Data!\n"); + return (len - bytesLeft); + } + + cbuf * next = new (std::nothrow) cbuf(TCP_MSS); + if(next == NULL) { + DEBUG_ASYNC_TCP("[A-TCP] run out of Heap!\n"); + panic(); + } else { + DEBUG_ASYNC_TCP("[A-TCP] new cbuf\n"); + } + + // add new buffer to chain (current cbuf) + _TXbufferWrite->next = next; + + // move ptr for next data + _TXbufferWrite = next; + } + } + + return len; + +} + +/** + * wait until all data has send out + */ +void AsyncTCPbuffer::flush() { + while(!_TXbufferWrite->empty()) { + while(connected() && !_client->canSend()) { + delay(0); + } + if(!connected()) + return; + _sendBuffer(); + } +} + +void AsyncTCPbuffer::noCallback() { + _RXmode = ATB_RX_MODE_NONE; +} + +void AsyncTCPbuffer::readStringUntil(char terminator, String * str, AsyncTCPbufferDoneCb done) { + if(_client == NULL) { + return; + } + DEBUG_ASYNC_TCP("[A-TCP] readStringUntil terminator: %02X\n", terminator); + _RXmode = ATB_RX_MODE_NONE; + _cbDone = done; + _rxReadStringPtr = str; + _rxTerminator = terminator; + _rxSize = 0; + _RXmode = ATB_RX_MODE_TERMINATOR_STRING; +} + +/* + void AsyncTCPbuffer::readBytesUntil(char terminator, char *buffer, size_t length, AsyncTCPbufferDoneCb done) { + _RXmode = ATB_RX_MODE_NONE; + _cbDone = done; + _rxReadBytesPtr = (uint8_t *) buffer; + _rxTerminator = terminator; + _rxSize = length; + _RXmode = ATB_RX_MODE_TERMINATOR; + _handleRxBuffer(NULL, 0); + } + + void AsyncTCPbuffer::readBytesUntil(char terminator, uint8_t *buffer, size_t length, AsyncTCPbufferDoneCb done) { + readBytesUntil(terminator, (char *) buffer, length, done); + } + */ + +void AsyncTCPbuffer::readBytes(char *buffer, size_t length, AsyncTCPbufferDoneCb done) { + if(_client == NULL) { + return; + } + DEBUG_ASYNC_TCP("[A-TCP] readBytes length: %d\n", length); + _RXmode = ATB_RX_MODE_NONE; + _cbDone = done; + _rxReadBytesPtr = (uint8_t *) buffer; + _rxSize = length; + _RXmode = ATB_RX_MODE_READ_BYTES; +} + +void AsyncTCPbuffer::readBytes(uint8_t *buffer, size_t length, AsyncTCPbufferDoneCb done) { + readBytes((char *) buffer, length, done); +} + +void AsyncTCPbuffer::onData(AsyncTCPbufferDataCb cb) { + if(_client == NULL) { + return; + } + DEBUG_ASYNC_TCP("[A-TCP] onData\n"); + _RXmode = ATB_RX_MODE_NONE; + _cbDone = NULL; + _cbRX = cb; + _RXmode = ATB_RX_MODE_FREE; +} + +void AsyncTCPbuffer::onDisconnect(AsyncTCPbufferDisconnectCb cb) { + _cbDisconnect = cb; +} + +IPAddress AsyncTCPbuffer::remoteIP() { + if(!_client) { + return IPAddress(0U); + } + return _client->remoteIP(); +} + +uint16_t AsyncTCPbuffer::remotePort() { + if(!_client) { + return 0; + } + return _client->remotePort(); +} + +bool AsyncTCPbuffer::connected() { + if(!_client) { + return false; + } + return _client->connected(); +} + +void AsyncTCPbuffer::stop() { + + if(!_client) { + return; + } + _client->stop(); + _client = NULL; + + if(_cbDone) { + switch(_RXmode) { + case ATB_RX_MODE_READ_BYTES: + case ATB_RX_MODE_TERMINATOR: + case ATB_RX_MODE_TERMINATOR_STRING: + _RXmode = ATB_RX_MODE_NONE; + _cbDone(false, NULL); + break; + default: + break; + } + } + _RXmode = ATB_RX_MODE_NONE; +} + +void AsyncTCPbuffer::close() { + stop(); +} + + +///-------------------------------- + +/** + * attachCallbacks to AsyncClient class + */ +void AsyncTCPbuffer::_attachCallbacks() { + if(!_client) { + return; + } + DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks\n"); + + _client->onPoll([](void *obj, AsyncClient* c) { + (void)c; + AsyncTCPbuffer* b = ((AsyncTCPbuffer*)(obj)); + if((b->_TXbufferRead != NULL) && !b->_TXbufferRead->empty()) { + b->_sendBuffer(); + } + // if(!b->_RXbuffer->empty()) { + // b->_handleRxBuffer(NULL, 0); + // } + }, this); + + _client->onAck([](void *obj, AsyncClient* c, size_t len, uint32_t time) { + (void)c; + (void)len; + (void)time; + DEBUG_ASYNC_TCP("[A-TCP] onAck\n"); + ((AsyncTCPbuffer*)(obj))->_sendBuffer(); + }, this); + + _client->onDisconnect([](void *obj, AsyncClient* c) { + DEBUG_ASYNC_TCP("[A-TCP] onDisconnect\n"); + AsyncTCPbuffer* b = ((AsyncTCPbuffer*)(obj)); + b->_client = NULL; + bool del = true; + if(b->_cbDisconnect) { + del = b->_cbDisconnect(b); + } + delete c; + if(del) { + delete b; + } + }, this); + + _client->onData([](void *obj, AsyncClient* c, void *buf, size_t len) { + (void)c; + AsyncTCPbuffer* b = ((AsyncTCPbuffer*)(obj)); + b->_rxData((uint8_t *)buf, len); + }, this); + + _client->onTimeout([](void *obj, AsyncClient* c, uint32_t time){ + (void)obj; + (void)time; + DEBUG_ASYNC_TCP("[A-TCP] onTimeout\n"); + c->close(); + }, this); + + DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks Done.\n"); +} + +/** + * send TX buffer if possible + */ +void AsyncTCPbuffer::_sendBuffer() { + //DEBUG_ASYNC_TCP("[A-TCP] _sendBuffer...\n"); + size_t available = _TXbufferRead->available(); + if(available == 0 || _client == NULL || !_client->connected() || !_client->canSend()) { + return; + } + + while(connected() && (_client->space() > 0) && (_TXbufferRead->available() > 0) && _client->canSend()) { + + available = _TXbufferRead->available(); + + if(available > _client->space()) { + available = _client->space(); + } + + char *out = new (std::nothrow) char[available]; + if(out == NULL) { + DEBUG_ASYNC_TCP("[A-TCP] to less heap, try later.\n"); + return; + } + + // read data from buffer + _TXbufferRead->peek(out, available); + + // send data + size_t send = _client->write((const char*) out, available); + if(send != available) { + DEBUG_ASYNC_TCP("[A-TCP] write failed send: %d available: %d \n", send, available); + if(!connected()) { + DEBUG_ASYNC_TCP("[A-TCP] incomplete transfer, connection lost.\n"); + } + } + + // remove really send data from buffer + _TXbufferRead->remove(send); + + // if buffer is empty and there is a other buffer in chain delete the empty one + if(_TXbufferRead->available() == 0 && _TXbufferRead->next != NULL) { + cbuf * old = _TXbufferRead; + _TXbufferRead = _TXbufferRead->next; + delete old; + DEBUG_ASYNC_TCP("[A-TCP] delete cbuf\n"); + } + + delete out; + } + +} + +/** + * called on incoming data + * @param buf + * @param len + */ +void AsyncTCPbuffer::_rxData(uint8_t *buf, size_t len) { + if(!_client || !_client->connected()) { + DEBUG_ASYNC_TCP("[A-TCP] not connected!\n"); + return; + } + if(!_RXbuffer) { + DEBUG_ASYNC_TCP("[A-TCP] _rxData no _RXbuffer!\n"); + return; + } + DEBUG_ASYNC_TCP("[A-TCP] _rxData len: %d RXmode: %d\n", len, _RXmode); + + size_t handled = 0; + + if(_RXmode != ATB_RX_MODE_NONE) { + handled = _handleRxBuffer((uint8_t *) buf, len); + buf += handled; + len -= handled; + + // handle as much as possible before using the buffer + if(_RXbuffer->empty()) { + while(_RXmode != ATB_RX_MODE_NONE && handled != 0 && len > 0) { + handled = _handleRxBuffer(buf, len); + buf += handled; + len -= handled; + } + } + } + + if(len > 0) { + + if(_RXbuffer->room() < len) { + // to less space + DEBUG_ASYNC_TCP("[A-TCP] _rxData buffer full try resize\n"); + _RXbuffer->resizeAdd((len + _RXbuffer->room())); + + if(_RXbuffer->room() < len) { + DEBUG_ASYNC_TCP("[A-TCP] _rxData buffer to full can only handle %d!!!\n", _RXbuffer->room()); + } + } + + _RXbuffer->write((const char *) (buf), len); + } + + if(!_RXbuffer->empty() && _RXmode != ATB_RX_MODE_NONE) { + // handle as much as possible data in buffer + handled = _handleRxBuffer(NULL, 0); + while(_RXmode != ATB_RX_MODE_NONE && handled != 0) { + handled = _handleRxBuffer(NULL, 0); + } + } + + // clean up ram + if(_RXbuffer->empty() && _RXbuffer->room() != 100) { + _RXbuffer->resize(100); + } + +} + +/** + * + */ +size_t AsyncTCPbuffer::_handleRxBuffer(uint8_t *buf, size_t len) { + if(!_client || !_client->connected() || _RXbuffer == NULL) { + return 0; + } + + DEBUG_ASYNC_TCP("[A-TCP] _handleRxBuffer len: %d RXmode: %d\n", len, _RXmode); + + size_t BufferAvailable = _RXbuffer->available(); + size_t r = 0; + + if(_RXmode == ATB_RX_MODE_NONE) { + return 0; + } else if(_RXmode == ATB_RX_MODE_FREE) { + if(_cbRX == NULL) { + return 0; + } + + if(BufferAvailable > 0) { + uint8_t * b = new (std::nothrow) uint8_t[BufferAvailable]; + if(b == NULL){ + panic(); //TODO: What action should this be ? + } + _RXbuffer->peek((char *) b, BufferAvailable); + r = _cbRX(b, BufferAvailable); + _RXbuffer->remove(r); + } + + if(r == BufferAvailable && buf && (len > 0)) { + return _cbRX(buf, len); + } else { + return 0; + } + + } else if(_RXmode == ATB_RX_MODE_READ_BYTES) { + if(_rxReadBytesPtr == NULL || _cbDone == NULL) { + return 0; + } + + size_t newReadCount = 0; + + if(BufferAvailable) { + r = _RXbuffer->read((char *) _rxReadBytesPtr, _rxSize); + _rxSize -= r; + _rxReadBytesPtr += r; + } + + if(_RXbuffer->empty() && (len > 0) && buf) { + r = len; + if(r > _rxSize) { + r = _rxSize; + } + memcpy(_rxReadBytesPtr, buf, r); + _rxReadBytesPtr += r; + _rxSize -= r; + newReadCount += r; + } + + if(_rxSize == 0) { + _RXmode = ATB_RX_MODE_NONE; + _cbDone(true, NULL); + } + + // add left over bytes to Buffer + return newReadCount; + + } else if(_RXmode == ATB_RX_MODE_TERMINATOR) { + // TODO implement read terminator non string + + } else if(_RXmode == ATB_RX_MODE_TERMINATOR_STRING) { + if(_rxReadStringPtr == NULL || _cbDone == NULL) { + return 0; + } + + // handle Buffer + if(BufferAvailable > 0) { + while(!_RXbuffer->empty()) { + char c = _RXbuffer->read(); + if(c == _rxTerminator || c == 0x00) { + _RXmode = ATB_RX_MODE_NONE; + _cbDone(true, _rxReadStringPtr); + return 0; + } else { + (*_rxReadStringPtr) += c; + } + } + } + + if(_RXbuffer->empty() && (len > 0) && buf) { + size_t newReadCount = 0; + while(newReadCount < len) { + char c = (char) *buf; + buf++; + newReadCount++; + if(c == _rxTerminator || c == 0x00) { + _RXmode = ATB_RX_MODE_NONE; + _cbDone(true, _rxReadStringPtr); + return newReadCount; + } else { + (*_rxReadStringPtr) += c; + } + } + return newReadCount; + } + } + + return 0; +} diff --git a/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.h b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.h new file mode 100644 index 0000000..08a57c7 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.h @@ -0,0 +1,118 @@ +/** + * @file ESPAsyncTCPbuffer.h + * @date 22.01.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the Asynv TCP for ESP. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef ESPASYNCTCPBUFFER_H_ +#define ESPASYNCTCPBUFFER_H_ + +//#define DEBUG_ASYNC_TCP(...) while(((U0S >> USTXC) & 0x7F) != 0x00); os_printf( __VA_ARGS__ ); while(((U0S >> USTXC) & 0x7F) != 0x00) +//#define DEBUG_ASYNC_TCP ASYNC_TCP_DEBUG +#ifndef DEBUG_ASYNC_TCP +#define DEBUG_ASYNC_TCP(...) +#endif + +#include +#include + +#include "ESPAsyncTCP.h" + + + +typedef enum { + ATB_RX_MODE_NONE, + ATB_RX_MODE_FREE, + ATB_RX_MODE_READ_BYTES, + ATB_RX_MODE_TERMINATOR, + ATB_RX_MODE_TERMINATOR_STRING +} atbRxMode_t; + +class AsyncTCPbuffer: public Print { + + public: + + typedef std::function AsyncTCPbufferDataCb; + typedef std::function AsyncTCPbufferDoneCb; + typedef std::function AsyncTCPbufferDisconnectCb; + + AsyncTCPbuffer(AsyncClient* c); + virtual ~AsyncTCPbuffer(); + + size_t write(String & data); + size_t write(uint8_t data); + size_t write(const char* data); + size_t write(const char *data, size_t len); + size_t write(const uint8_t *data, size_t len); + + void flush(); + + void noCallback(); + + void readStringUntil(char terminator, String * str, AsyncTCPbufferDoneCb done); + + // TODO implement read terminator non string + //void readBytesUntil(char terminator, char *buffer, size_t length, AsyncTCPbufferDoneCb done); + //void readBytesUntil(char terminator, uint8_t *buffer, size_t length, AsyncTCPbufferDoneCb done); + + void readBytes(char *buffer, size_t length, AsyncTCPbufferDoneCb done); + void readBytes(uint8_t *buffer, size_t length, AsyncTCPbufferDoneCb done); + + // TODO implement + // void setTimeout(size_t timeout); + + void onData(AsyncTCPbufferDataCb cb); + void onDisconnect(AsyncTCPbufferDisconnectCb cb); + + IPAddress remoteIP(); + uint16_t remotePort(); + IPAddress localIP(); + uint16_t localPort(); + + bool connected(); + + void stop(); + void close(); + + protected: + AsyncClient* _client; + cbuf * _TXbufferRead; + cbuf * _TXbufferWrite; + cbuf * _RXbuffer; + atbRxMode_t _RXmode; + size_t _rxSize; + char _rxTerminator; + uint8_t * _rxReadBytesPtr; + String * _rxReadStringPtr; + + AsyncTCPbufferDataCb _cbRX; + AsyncTCPbufferDoneCb _cbDone; + AsyncTCPbufferDisconnectCb _cbDisconnect; + + void _attachCallbacks(); + void _sendBuffer(); + void _on_close(); + void _rxData(uint8_t *buf, size_t len); + size_t _handleRxBuffer(uint8_t *buf, size_t len); + +}; + +#endif /* ESPASYNCTCPBUFFER_H_ */ diff --git a/lib/ESPAsyncTCP-esphome/src/SyncClient.cpp b/lib/ESPAsyncTCP-esphome/src/SyncClient.cpp new file mode 100644 index 0000000..8335358 --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/SyncClient.cpp @@ -0,0 +1,414 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include "Arduino.h" +#include "SyncClient.h" +#include "ESPAsyncTCP.h" +#include "cbuf.h" +#include + +#define DEBUG_ESP_SYNC_CLIENT +#if defined(DEBUG_ESP_SYNC_CLIENT) && !defined(SYNC_CLIENT_DEBUG) +#define SYNC_CLIENT_DEBUG( format, ...) DEBUG_GENERIC_P("[SYNC_CLIENT]", format, ##__VA_ARGS__) +#endif +#ifndef SYNC_CLIENT_DEBUG +#define SYNC_CLIENT_DEBUG(...) do { (void)0;} while(false) +#endif + +/* + Without LWIP_NETIF_TX_SINGLE_PBUF, all tcp_writes default to "no copy". + Referenced data must be preserved and free-ed from the specified tcp_sent() + callback. Alternative, tcp_writes need to use the TCP_WRITE_FLAG_COPY + attribute. +*/ +static_assert(LWIP_NETIF_TX_SINGLE_PBUF, "Required, tcp_write() must always copy."); + +SyncClient::SyncClient(size_t txBufLen) + : _client(NULL) + , _tx_buffer(NULL) + , _tx_buffer_size(txBufLen) + , _rx_buffer(NULL) + , _ref(NULL) +{ + ref(); +} + +SyncClient::SyncClient(AsyncClient *client, size_t txBufLen) + : _client(client) + , _tx_buffer(new (std::nothrow) cbuf(txBufLen)) + , _tx_buffer_size(txBufLen) + , _rx_buffer(NULL) + , _ref(NULL) +{ + if(ref() > 0 && _client != NULL) + _attachCallbacks(); +} + +SyncClient::~SyncClient(){ + if (0 == unref()) + _release(); +} + +void SyncClient::_release(){ + if(_client != NULL){ + _client->onData(NULL, NULL); + _client->onAck(NULL, NULL); + _client->onPoll(NULL, NULL); + _client->abort(); + _client = NULL; + } + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } + while(_rx_buffer != NULL){ + cbuf *b = _rx_buffer; + _rx_buffer = _rx_buffer->next; + delete b; + } +} + +int SyncClient::ref(){ + if(_ref == NULL){ + _ref = new (std::nothrow) int; + if(_ref != NULL) + *_ref = 0; + else + return -1; + } + return (++*_ref); +} + +int SyncClient::unref(){ + int count = -1; + if (_ref != NULL) { + count = --*_ref; + if (0 == count) { + delete _ref; + _ref = NULL; + } + } + return count; +} + +#if ASYNC_TCP_SSL_ENABLED +int SyncClient::_connect(const IPAddress& ip, uint16_t port, bool secure){ +#else +int SyncClient::_connect(const IPAddress& ip, uint16_t port){ +#endif + if(connected()) + return 0; + if(_client != NULL) + delete _client; + + _client = new (std::nothrow) AsyncClient(); + if (_client == NULL) + return 0; + + _client->onConnect([](void *obj, AsyncClient *c){ ((SyncClient*)(obj))->_onConnect(c); }, this); + _attachCallbacks_Disconnect(); +#if ASYNC_TCP_SSL_ENABLED + if(_client->connect(ip, port, secure)){ +#else + if(_client->connect(ip, port)){ +#endif + while(_client != NULL && !_client->connected() && !_client->disconnecting()) + delay(1); + return connected(); + } + return 0; +} + +#if ASYNC_TCP_SSL_ENABLED +int SyncClient::connect(const char *host, uint16_t port, bool secure){ +#else +int SyncClient::connect(const char *host, uint16_t port){ +#endif + if(connected()) + return 0; + if(_client != NULL) + delete _client; + + _client = new (std::nothrow) AsyncClient(); + if (_client == NULL) + return 0; + + _client->onConnect([](void *obj, AsyncClient *c){ ((SyncClient*)(obj))->_onConnect(c); }, this); + _attachCallbacks_Disconnect(); +#if ASYNC_TCP_SSL_ENABLED + if(_client->connect(host, port, secure)){ +#else + if(_client->connect(host, port)){ +#endif + while(_client != NULL && !_client->connected() && !_client->disconnecting()) + delay(1); + return connected(); + } + return 0; +} +//#define SYNCCLIENT_NEW_OPERATOR_EQUAL +#ifdef SYNCCLIENT_NEW_OPERATOR_EQUAL +/* + New behavior for operator= + + Allow for the object to be placed on a queue and transfered to a new container + with buffers still in tact. Avoiding receive data drops. Transfers rx and tx + buffers. Supports return by value. + + Note, this is optional, the old behavior is the default. + +*/ +SyncClient & SyncClient::operator=(const SyncClient &other){ + int *rhsref = other._ref; + ++*rhsref; // Just in case the left and right side are the same object with different containers + if (0 == unref()) + _release(); + _ref = other._ref; + ref(); + --*rhsref; + // Why do I not test _tx_buffer for != NULL and free? + // I allow for the lh target container, to be a copy of an active + // connection. Thus we are just reusing the container. + // The above unref() handles releaseing the previous client of the container. + _tx_buffer_size = other._tx_buffer_size; + _tx_buffer = other._tx_buffer; + _client = other._client; + if (_client != NULL && _tx_buffer == NULL) + _tx_buffer = new (std::nothrow) cbuf(_tx_buffer_size); + + _rx_buffer = other._rx_buffer; + if(_client) + _attachCallbacks(); + return *this; +} +#else // ! SYNCCLIENT_NEW_OPERATOR_EQUAL +// This is the origianl logic with null checks +SyncClient & SyncClient::operator=(const SyncClient &other){ + if(_client != NULL){ + _client->abort(); + _client->free(); + _client = NULL; + } + _tx_buffer_size = other._tx_buffer_size; + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } + while(_rx_buffer != NULL){ + cbuf *b = _rx_buffer; + _rx_buffer = b->next; + delete b; + } + if(other._client != NULL) + _tx_buffer = new (std::nothrow) cbuf(other._tx_buffer_size); + + _client = other._client; + if(_client) + _attachCallbacks(); + + return *this; +} +#endif + +void SyncClient::setTimeout(uint32_t seconds){ + if(_client != NULL) + _client->setRxTimeout(seconds); +} + +uint8_t SyncClient::status(){ + if(_client == NULL) + return 0; + return _client->state(); +} + +uint8_t SyncClient::connected(){ + return (_client != NULL && _client->connected()); +} + +bool SyncClient::stop(unsigned int maxWaitMs){ + (void)maxWaitMs; + if(_client != NULL) + _client->close(true); + return true; +} + +size_t SyncClient::_sendBuffer(){ + if(_client == NULL || _tx_buffer == NULL) + return 0; + size_t available = _tx_buffer->available(); + if(!connected() || !_client->canSend() || available == 0) + return 0; + size_t sendable = _client->space(); + if(sendable < available) + available= sendable; + char *out = new (std::nothrow) char[available]; + if(out == NULL) + return 0; + + _tx_buffer->read(out, available); + size_t sent = _client->write(out, available); + delete[] out; + return sent; +} + +void SyncClient::_onData(void *data, size_t len){ + _client->ackLater(); + cbuf *b = new (std::nothrow) cbuf(len+1); + if(b != NULL){ + b->write((const char *)data, len); + if(_rx_buffer == NULL) + _rx_buffer = b; + else { + cbuf *p = _rx_buffer; + while(p->next != NULL) + p = p->next; + p->next = b; + } + } else { + // We ran out of memory. This fail causes lost receive data. + // The connection should be closed in a manner that conveys something + // bad/abnormal has happened to the connection. Hence, we abort the + // connection to avoid possible data corruption. + // Note, callbacks maybe called. + _client->abort(); + } +} + +void SyncClient::_onDisconnect(){ + if(_client != NULL){ + _client = NULL; + } + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } +} + +void SyncClient::_onConnect(AsyncClient *c){ + _client = c; + if(_tx_buffer != NULL){ + cbuf *b = _tx_buffer; + _tx_buffer = NULL; + delete b; + } + _tx_buffer = new (std::nothrow) cbuf(_tx_buffer_size); + _attachCallbacks_AfterConnected(); +} + +void SyncClient::_attachCallbacks(){ + _attachCallbacks_Disconnect(); + _attachCallbacks_AfterConnected(); +} + +void SyncClient::_attachCallbacks_AfterConnected(){ + _client->onAck([](void *obj, AsyncClient* c, size_t len, uint32_t time){ (void)c; (void)len; (void)time; ((SyncClient*)(obj))->_sendBuffer(); }, this); + _client->onData([](void *obj, AsyncClient* c, void *data, size_t len){ (void)c; ((SyncClient*)(obj))->_onData(data, len); }, this); + _client->onTimeout([](void *obj, AsyncClient* c, uint32_t time){ (void)obj; (void)time; c->close(); }, this); +} + +void SyncClient::_attachCallbacks_Disconnect(){ + _client->onDisconnect([](void *obj, AsyncClient* c){ ((SyncClient*)(obj))->_onDisconnect(); delete c; }, this); +} + +size_t SyncClient::write(uint8_t data){ + return write(&data, 1); +} + +size_t SyncClient::write(const uint8_t *data, size_t len){ + if(_tx_buffer == NULL || !connected()){ + return 0; + } + size_t toWrite = 0; + size_t toSend = len; + while(_tx_buffer->room() < toSend){ + toWrite = _tx_buffer->room(); + _tx_buffer->write((const char*)data, toWrite); + while(connected() && !_client->canSend()) + delay(0); + if(!connected()) + return 0; + _sendBuffer(); + toSend -= toWrite; + } + _tx_buffer->write((const char*)(data+(len - toSend)), toSend); + if(connected() && _client->canSend()) + _sendBuffer(); + return len; +} + +int SyncClient::available(){ + if(_rx_buffer == NULL) return 0; + size_t a = 0; + cbuf *b = _rx_buffer; + while(b != NULL){ + a += b->available(); + b = b->next; + } + return a; +} + +int SyncClient::peek(){ + if(_rx_buffer == NULL) return -1; + return _rx_buffer->peek(); +} + +int SyncClient::read(uint8_t *data, size_t len){ + if(_rx_buffer == NULL) return -1; + + size_t readSoFar = 0; + while(_rx_buffer != NULL && (len - readSoFar) >= _rx_buffer->available()){ + cbuf *b = _rx_buffer; + _rx_buffer = _rx_buffer->next; + size_t toRead = b->available(); + readSoFar += b->read((char*)(data+readSoFar), toRead); + if(connected()){ + _client->ack(b->size() - 1); + } + delete b; + } + if(_rx_buffer != NULL && readSoFar < len){ + readSoFar += _rx_buffer->read((char*)(data+readSoFar), (len - readSoFar)); + } + return readSoFar; +} + +int SyncClient::read(){ + uint8_t res = 0; + if(read(&res, 1) != 1) + return -1; + return res; +} + +bool SyncClient::flush(unsigned int maxWaitMs){ + (void)maxWaitMs; + if(_tx_buffer == NULL || !connected()) + return false; + if(_tx_buffer->available()){ + while(connected() && !_client->canSend()) + delay(0); + if(_client == NULL || _tx_buffer == NULL) + return false; + _sendBuffer(); + } + return true; +} diff --git a/lib/ESPAsyncTCP-esphome/src/SyncClient.h b/lib/ESPAsyncTCP-esphome/src/SyncClient.h new file mode 100644 index 0000000..cb568de --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/SyncClient.h @@ -0,0 +1,109 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef SYNCCLIENT_H_ +#define SYNCCLIENT_H_ + +#include "Client.h" +// Needed for Arduino core releases prior to 2.5.0, because of changes +// made to accommodate Arduino core 2.5.0 +// CONST was 1st defined in Core 2.5.0 in IPAddress.h +#ifndef CONST +#define CONST +#endif +#include +class cbuf; +class AsyncClient; + +class SyncClient: public Client { + private: + AsyncClient *_client; + cbuf *_tx_buffer; + size_t _tx_buffer_size; + cbuf *_rx_buffer; + int *_ref; + + size_t _sendBuffer(); + void _onData(void *data, size_t len); + void _onConnect(AsyncClient *c); + void _onDisconnect(); + void _attachCallbacks(); + void _attachCallbacks_Disconnect(); + void _attachCallbacks_AfterConnected(); + void _release(); + + public: + SyncClient(size_t txBufLen = TCP_MSS); + SyncClient(AsyncClient *client, size_t txBufLen = TCP_MSS); + virtual ~SyncClient(); + + int ref(); + int unref(); + operator bool(){ return connected(); } + SyncClient & operator=(const SyncClient &other); + +#if ASYNC_TCP_SSL_ENABLED + int _connect(const IPAddress& ip, uint16_t port, bool secure); + int connect(CONST IPAddress& ip, uint16_t port, bool secure){ + return _connect(ip, port, secure); + } + int connect(IPAddress ip, uint16_t port, bool secure){ + return _connect(reinterpret_cast(ip), port, secure); + } + int connect(const char *host, uint16_t port, bool secure); + int connect(CONST IPAddress& ip, uint16_t port){ + return _connect(ip, port, false); + } + int connect(IPAddress ip, uint16_t port){ + return _connect(reinterpret_cast(ip), port, false); + } + int connect(const char *host, uint16_t port){ + return connect(host, port, false); + } +#else + int _connect(const IPAddress& ip, uint16_t port); + int connect(CONST IPAddress& ip, uint16_t port){ + return _connect(ip, port); + } + int connect(IPAddress ip, uint16_t port){ + return _connect(reinterpret_cast(ip), port); + } + int connect(const char *host, uint16_t port); +#endif + void setTimeout(uint32_t seconds); + + uint8_t status(); + uint8_t connected(); + + bool stop(unsigned int maxWaitMs); + bool flush(unsigned int maxWaitMs); + void stop() { (void)stop(0);} + void flush() { (void)flush(0);} + size_t write(uint8_t data); + size_t write(const uint8_t *data, size_t len); + + int available(); + int peek(); + int read(); + int read(uint8_t *data, size_t len); +}; + +#endif /* SYNCCLIENT_H_ */ diff --git a/lib/ESPAsyncTCP-esphome/src/async_config.h b/lib/ESPAsyncTCP-esphome/src/async_config.h new file mode 100644 index 0000000..0ce336a --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/async_config.h @@ -0,0 +1,42 @@ +#ifndef LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ +#define LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ + +#ifndef ASYNC_TCP_SSL_ENABLED +#define ASYNC_TCP_SSL_ENABLED 0 +#endif + +#ifndef TCP_MSS +// May have been definded as a -DTCP_MSS option on the compile line or not. +// Arduino core 2.3.0 or earlier does not do the -DTCP_MSS option. +// Later versions may set this option with info from board.txt. +// However, Core 2.4.0 and up board.txt does not define TCP_MSS for lwIP v1.4 +#define TCP_MSS (1460) +#endif + +// #define ASYNC_TCP_DEBUG(...) ets_printf(__VA_ARGS__) +// #define TCP_SSL_DEBUG(...) ets_printf(__VA_ARGS__) +// #define ASYNC_TCP_ASSERT( a ) do{ if(!(a)){ets_printf("ASSERT: %s %u \n", __FILE__, __LINE__);}}while(0) + +// Starting with Arduino Core 2.4.0 and up the define of DEBUG_ESP_PORT +// can be handled through the Arduino IDE Board options instead of here. +// #define DEBUG_ESP_PORT Serial +// #define DEBUG_ESP_ASYNC_TCP 1 +// #define DEBUG_ESP_TCP_SSL 1 + +#ifndef DEBUG_SKIP__DEBUG_PRINT_MACROS + +#include + +#ifndef ASYNC_TCP_ASSERT +#define ASYNC_TCP_ASSERT(...) do { (void)0;} while(false) +#endif +#ifndef ASYNC_TCP_DEBUG +#define ASYNC_TCP_DEBUG(...) do { (void)0;} while(false) +#endif +#ifndef TCP_SSL_DEBUG +#define TCP_SSL_DEBUG(...) do { (void)0;} while(false) +#endif + +#endif + +#endif /* LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ */ diff --git a/lib/ESPAsyncTCP-esphome/src/tcp_axtls.c b/lib/ESPAsyncTCP-esphome/src/tcp_axtls.c new file mode 100644 index 0000000..f026b5f --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/tcp_axtls.c @@ -0,0 +1,613 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/* + * Compatibility for AxTLS with LWIP raw tcp mode (http://lwip.wikia.com/wiki/Raw/TCP) + * Original Code and Inspiration: Slavey Karadzhov + */ + +// To handle all the definitions needed for debug printing, we need to delay +// macro definitions till later. +#define DEBUG_SKIP__DEBUG_PRINT_MACROS 1 +#include +#undef DEBUG_SKIP__DEBUG_PRINT_MACROS + +#if ASYNC_TCP_SSL_ENABLED + +#include "lwip/opt.h" +#include "lwip/tcp.h" +#include "lwip/inet.h" +#include +#include +#include +#include +#include + +// ets_uart_printf is defined in esp8266_undocumented.h, in newer Arduino ESP8266 Core. +extern int ets_uart_printf(const char *format, ...) __attribute__ ((format (printf, 1, 2))); +#include +#ifndef TCP_SSL_DEBUG +#define TCP_SSL_DEBUG(...) do { (void)0;} while(false) +#endif + +uint8_t * default_private_key = NULL; +uint16_t default_private_key_len = 0; + +uint8_t * default_certificate = NULL; +uint16_t default_certificate_len = 0; + +static uint8_t _tcp_ssl_has_client = 0; + +SSL_CTX * tcp_ssl_new_server_ctx(const char *cert, const char *private_key_file, const char *password){ + uint32_t options = SSL_CONNECT_IN_PARTS; + SSL_CTX *ssl_ctx; + + if(private_key_file){ + options |= SSL_NO_DEFAULT_KEY; + } + + if ((ssl_ctx = ssl_ctx_new(options, SSL_DEFAULT_SVR_SESS)) == NULL){ + TCP_SSL_DEBUG("tcp_ssl_new_server_ctx: failed to allocate context\n"); + return NULL; + } + + if (private_key_file){ + int obj_type = SSL_OBJ_RSA_KEY; + if (strstr(private_key_file, ".p8")) + obj_type = SSL_OBJ_PKCS8; + else if (strstr(private_key_file, ".p12")) + obj_type = SSL_OBJ_PKCS12; + + if (ssl_obj_load(ssl_ctx, obj_type, private_key_file, password)){ + TCP_SSL_DEBUG("tcp_ssl_new_server_ctx: load private key '%s' failed\n", private_key_file); + return NULL; + } + } + + if (cert){ + if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, cert, NULL)){ + TCP_SSL_DEBUG("tcp_ssl_new_server_ctx: load certificate '%s' failed\n", cert); + return NULL; + } + } + return ssl_ctx; +} + +struct tcp_ssl_pcb { + struct tcp_pcb *tcp; + int fd; + SSL_CTX* ssl_ctx; + SSL *ssl; + uint8_t type; + int handshake; + void * arg; + tcp_ssl_data_cb_t on_data; + tcp_ssl_handshake_cb_t on_handshake; + tcp_ssl_error_cb_t on_error; + int last_wr; + struct pbuf *tcp_pbuf; + int pbuf_offset; + struct tcp_ssl_pcb * next; +}; + +typedef struct tcp_ssl_pcb tcp_ssl_t; + +static tcp_ssl_t * tcp_ssl_array = NULL; +static int tcp_ssl_next_fd = 0; + +uint8_t tcp_ssl_has_client(){ + return _tcp_ssl_has_client; +} + +tcp_ssl_t * tcp_ssl_new(struct tcp_pcb *tcp) { + + if(tcp_ssl_next_fd < 0){ + tcp_ssl_next_fd = 0;//overflow + } + + tcp_ssl_t * new_item = (tcp_ssl_t*)malloc(sizeof(tcp_ssl_t)); + if(!new_item){ + TCP_SSL_DEBUG("tcp_ssl_new: failed to allocate tcp_ssl\n"); + return NULL; + } + + new_item->tcp = tcp; + new_item->handshake = SSL_NOT_OK; + new_item->arg = NULL; + new_item->on_data = NULL; + new_item->on_handshake = NULL; + new_item->on_error = NULL; + new_item->tcp_pbuf = NULL; + new_item->pbuf_offset = 0; + new_item->next = NULL; + new_item->ssl_ctx = NULL; + new_item->ssl = NULL; + new_item->type = TCP_SSL_TYPE_CLIENT; + new_item->fd = tcp_ssl_next_fd++; + + if(tcp_ssl_array == NULL){ + tcp_ssl_array = new_item; + } else { + tcp_ssl_t * item = tcp_ssl_array; + while(item->next != NULL) + item = item->next; + item->next = new_item; + } + + TCP_SSL_DEBUG("tcp_ssl_new: %d\n", new_item->fd); + return new_item; +} + +tcp_ssl_t* tcp_ssl_get(struct tcp_pcb *tcp) { + if(tcp == NULL) { + return NULL; + } + tcp_ssl_t * item = tcp_ssl_array; + while(item && item->tcp != tcp){ + item = item->next; + } + return item; +} + +int tcp_ssl_new_client(struct tcp_pcb *tcp){ + SSL_CTX* ssl_ctx; + tcp_ssl_t * tcp_ssl; + + if(tcp == NULL) { + return -1; + } + + if(tcp_ssl_get(tcp) != NULL){ + TCP_SSL_DEBUG("tcp_ssl_new_client: tcp_ssl already exists\n"); + return -1; + } + + ssl_ctx = ssl_ctx_new(SSL_CONNECT_IN_PARTS | SSL_SERVER_VERIFY_LATER, 1); + if(ssl_ctx == NULL){ + TCP_SSL_DEBUG("tcp_ssl_new_client: failed to allocate ssl context\n"); + return -1; + } + + tcp_ssl = tcp_ssl_new(tcp); + if(tcp_ssl == NULL){ + ssl_ctx_free(ssl_ctx); + return -1; + } + + tcp_ssl->ssl_ctx = ssl_ctx; + + tcp_ssl->ssl = ssl_client_new(ssl_ctx, tcp_ssl->fd, NULL, 0, NULL); + if(tcp_ssl->ssl == NULL){ + TCP_SSL_DEBUG("tcp_ssl_new_client: failed to allocate ssl\n"); + tcp_ssl_free(tcp); + return -1; + } + + return tcp_ssl->fd; +} + +int tcp_ssl_new_server(struct tcp_pcb *tcp, SSL_CTX* ssl_ctx){ + tcp_ssl_t * tcp_ssl; + + if(tcp == NULL) { + return -1; + } + + if(ssl_ctx == NULL){ + return -1; + } + + if(tcp_ssl_get(tcp) != NULL){ + TCP_SSL_DEBUG("tcp_ssl_new_server: tcp_ssl already exists\n"); + return -1; + } + + tcp_ssl = tcp_ssl_new(tcp); + if(tcp_ssl == NULL){ + return -1; + } + + tcp_ssl->type = TCP_SSL_TYPE_SERVER; + tcp_ssl->ssl_ctx = ssl_ctx; + + _tcp_ssl_has_client = 1; + tcp_ssl->ssl = ssl_server_new(ssl_ctx, tcp_ssl->fd); + if(tcp_ssl->ssl == NULL){ + TCP_SSL_DEBUG("tcp_ssl_new_server: failed to allocate ssl\n"); + tcp_ssl_free(tcp); + return -1; + } + + return tcp_ssl->fd; +} + +int tcp_ssl_free(struct tcp_pcb *tcp) { + + if(tcp == NULL) { + return -1; + } + + tcp_ssl_t * item = tcp_ssl_array; + + if(item->tcp == tcp){ + tcp_ssl_array = tcp_ssl_array->next; + if(item->tcp_pbuf != NULL){ + pbuf_free(item->tcp_pbuf); + } + TCP_SSL_DEBUG("tcp_ssl_free: %d\n", item->fd); + if(item->ssl) + ssl_free(item->ssl); + if(item->type == TCP_SSL_TYPE_CLIENT && item->ssl_ctx) + ssl_ctx_free(item->ssl_ctx); + if(item->type == TCP_SSL_TYPE_SERVER) + _tcp_ssl_has_client = 0; + free(item); + return 0; + } + + while(item->next && item->next->tcp != tcp) + item = item->next; + + if(item->next == NULL){ + return ERR_TCP_SSL_INVALID_CLIENTFD_DATA;//item not found + } + + tcp_ssl_t * i = item->next; + item->next = i->next; + if(i->tcp_pbuf != NULL){ + pbuf_free(i->tcp_pbuf); + } + TCP_SSL_DEBUG("tcp_ssl_free: %d\n", i->fd); + if(i->ssl) + ssl_free(i->ssl); + if(i->type == TCP_SSL_TYPE_CLIENT && i->ssl_ctx) + ssl_ctx_free(i->ssl_ctx); + if(i->type == TCP_SSL_TYPE_SERVER) + _tcp_ssl_has_client = 0; + free(i); + return 0; +} + +#ifdef AXTLS_2_0_0_SNDBUF +int tcp_ssl_sndbuf(struct tcp_pcb *tcp){ + int expected; + int available; + int result = -1; + + if(tcp == NULL) { + return result; + } + tcp_ssl_t * tcp_ssl = tcp_ssl_get(tcp); + if(!tcp_ssl){ + TCP_SSL_DEBUG("tcp_ssl_sndbuf: tcp_ssl is NULL\n"); + return result; + } + available = tcp_sndbuf(tcp); + if(!available){ + TCP_SSL_DEBUG("tcp_ssl_sndbuf: tcp_sndbuf is zero\n"); + return 0; + } + result = available; + while((expected = ssl_calculate_write_length(tcp_ssl->ssl, result)) > available){ + result -= (expected - available) + 4; + } + + if(expected > 0){ + //TCP_SSL_DEBUG("tcp_ssl_sndbuf: tcp_sndbuf is %d from %d\n", result, available); + return result; + } + + return 0; +} +#endif + +int tcp_ssl_write(struct tcp_pcb *tcp, uint8_t *data, size_t len) { + if(tcp == NULL) { + return -1; + } + tcp_ssl_t * tcp_ssl = tcp_ssl_get(tcp); + if(!tcp_ssl){ + TCP_SSL_DEBUG("tcp_ssl_write: tcp_ssl is NULL\n"); + return 0; + } + tcp_ssl->last_wr = 0; + +#ifdef AXTLS_2_0_0_SNDBUF + int expected_len = ssl_calculate_write_length(tcp_ssl->ssl, len); + int available_len = tcp_sndbuf(tcp); + if(expected_len < 0 || expected_len > available_len){ + TCP_SSL_DEBUG("tcp_ssl_write: data will not fit! %u < %d(%u)\r\n", available_len, expected_len, len); + return -1; + } +#endif + + int rc = ssl_write(tcp_ssl->ssl, data, len); + + //TCP_SSL_DEBUG("tcp_ssl_write: %u -> %d (%d)\r\n", len, tcp_ssl->last_wr, rc); + + if (rc < 0){ + if(rc != SSL_CLOSE_NOTIFY) { + TCP_SSL_DEBUG("tcp_ssl_write error: %d\r\n", rc); + } + return rc; + } + + return tcp_ssl->last_wr; +} + +/** + * Reads data from the SSL over TCP stream. Returns decrypted data. + * @param tcp_pcb *tcp - pointer to the raw tcp object + * @param pbuf *p - pointer to the buffer with the TCP packet data + * + * @return int + * 0 - when everything is fine but there are no symbols to process yet + * < 0 - when there is an error + * > 0 - the length of the clear text characters that were read + */ +int tcp_ssl_read(struct tcp_pcb *tcp, struct pbuf *p) { + if(tcp == NULL) { + return -1; + } + tcp_ssl_t* fd_data = NULL; + + int read_bytes = 0; + int total_bytes = 0; + uint8_t *read_buf; + + fd_data = tcp_ssl_get(tcp); + if(fd_data == NULL) { + TCP_SSL_DEBUG("tcp_ssl_read: tcp_ssl is NULL\n"); + return ERR_TCP_SSL_INVALID_CLIENTFD_DATA; + } + + if(p == NULL) { + TCP_SSL_DEBUG("tcp_ssl_read:p == NULL\n"); + return ERR_TCP_SSL_INVALID_DATA; + } + + //TCP_SSL_DEBUG("READY TO READ SOME DATA\n"); + + fd_data->tcp_pbuf = p; + fd_data->pbuf_offset = 0; + + do { + read_bytes = ssl_read(fd_data->ssl, &read_buf); + TCP_SSL_DEBUG("tcp_ssl_ssl_read: %d\n", read_bytes); + + if(read_bytes < SSL_OK) { + if(read_bytes != SSL_CLOSE_NOTIFY) { + TCP_SSL_DEBUG("tcp_ssl_read: read error: %d\n", read_bytes); + } + total_bytes = read_bytes; + break; + } else if(read_bytes > 0){ + if(fd_data->on_data){ + fd_data->on_data(fd_data->arg, tcp, read_buf, read_bytes); + // fd_data may have been freed in callback + fd_data = tcp_ssl_get(tcp); + if(NULL == fd_data) + return SSL_CLOSE_NOTIFY; + } + total_bytes+= read_bytes; + } else { + if(fd_data->handshake != SSL_OK) { + // fd_data may be freed in callbacks. + int handshake = fd_data->handshake = ssl_handshake_status(fd_data->ssl); + if(handshake == SSL_OK){ + TCP_SSL_DEBUG("tcp_ssl_read: handshake OK\n"); + if(fd_data->on_handshake) + fd_data->on_handshake(fd_data->arg, fd_data->tcp, fd_data->ssl); + fd_data = tcp_ssl_get(tcp); + if(NULL == fd_data) + return SSL_CLOSE_NOTIFY; + } else if(handshake != SSL_NOT_OK){ + TCP_SSL_DEBUG("tcp_ssl_read: handshake error: %d\n", handshake); + if(fd_data->on_error) + fd_data->on_error(fd_data->arg, fd_data->tcp, handshake); + return handshake; + // With current code APP gets called twice at onError handler. + // Once here and again after return when handshake != SSL_CLOSE_NOTIFY. + // As always APP must never free resources at onError only at onDisconnect. + } + } + } + } while (p->tot_len - fd_data->pbuf_offset > 0); + + tcp_recved(tcp, p->tot_len); + fd_data->tcp_pbuf = NULL; + pbuf_free(p); + + return total_bytes; +} + +SSL * tcp_ssl_get_ssl(struct tcp_pcb *tcp){ + tcp_ssl_t * tcp_ssl = tcp_ssl_get(tcp); + if(tcp_ssl){ + return tcp_ssl->ssl; + } + return NULL; +} + +bool tcp_ssl_has(struct tcp_pcb *tcp){ + return tcp_ssl_get(tcp) != NULL; +} + +int tcp_ssl_is_server(struct tcp_pcb *tcp){ + tcp_ssl_t * tcp_ssl = tcp_ssl_get(tcp); + if(tcp_ssl){ + return tcp_ssl->type; + } + return -1; +} + +void tcp_ssl_arg(struct tcp_pcb *tcp, void * arg){ + tcp_ssl_t * item = tcp_ssl_get(tcp); + if(item) { + item->arg = arg; + } +} + +void tcp_ssl_data(struct tcp_pcb *tcp, tcp_ssl_data_cb_t arg){ + tcp_ssl_t * item = tcp_ssl_get(tcp); + if(item) { + item->on_data = arg; + } +} + +void tcp_ssl_handshake(struct tcp_pcb *tcp, tcp_ssl_handshake_cb_t arg){ + tcp_ssl_t * item = tcp_ssl_get(tcp); + if(item) { + item->on_handshake = arg; + } +} + +void tcp_ssl_err(struct tcp_pcb *tcp, tcp_ssl_error_cb_t arg){ + tcp_ssl_t * item = tcp_ssl_get(tcp); + if(item) { + item->on_error = arg; + } +} + +static tcp_ssl_file_cb_t _tcp_ssl_file_cb = NULL; +static void * _tcp_ssl_file_arg = NULL; + +void tcp_ssl_file(tcp_ssl_file_cb_t cb, void * arg){ + _tcp_ssl_file_cb = cb; + _tcp_ssl_file_arg = arg; +} + +int ax_get_file(const char *filename, uint8_t **buf) { + //TCP_SSL_DEBUG("ax_get_file: %s\n", filename); + if(_tcp_ssl_file_cb){ + return _tcp_ssl_file_cb(_tcp_ssl_file_arg, filename, buf); + } + *buf = 0; + return 0; +} + +tcp_ssl_t* tcp_ssl_get_by_fd(int fd) { + tcp_ssl_t * item = tcp_ssl_array; + while(item && item->fd != fd){ + item = item->next; + } + return item; +} +/* + * The LWIP tcp raw version of the SOCKET_WRITE(A, B, C) + */ +int ax_port_write(int fd, uint8_t *data, uint16_t len) { + tcp_ssl_t *fd_data = NULL; + int tcp_len = 0; + err_t err = ERR_OK; + + //TCP_SSL_DEBUG("ax_port_write: %d, %d\n", fd, len); + + fd_data = tcp_ssl_get_by_fd(fd); + if(fd_data == NULL) { + //TCP_SSL_DEBUG("ax_port_write: tcp_ssl[%d] is NULL\n", fd); + return ERR_MEM; + } + + if (data == NULL || len == 0) { + return 0; + } + + if (tcp_sndbuf(fd_data->tcp) < len) { + tcp_len = tcp_sndbuf(fd_data->tcp); + if(tcp_len == 0) { + TCP_SSL_DEBUG("ax_port_write: tcp_sndbuf is zero: %d\n", len); + return ERR_MEM; + } + } else { + tcp_len = len; + } + + if (tcp_len > 2 * fd_data->tcp->mss) { + tcp_len = 2 * fd_data->tcp->mss; + } + + err = tcp_write(fd_data->tcp, data, tcp_len, TCP_WRITE_FLAG_COPY); + if(err < ERR_OK) { + if (err == ERR_MEM) { + TCP_SSL_DEBUG("ax_port_write: No memory %d (%d)\n", tcp_len, len); + return err; + } + TCP_SSL_DEBUG("ax_port_write: tcp_write error: %ld\n", err); + return err; + } else if (err == ERR_OK) { + //TCP_SSL_DEBUG("ax_port_write: tcp_output: %d / %d\n", tcp_len, len); + err = tcp_output(fd_data->tcp); + if(err != ERR_OK) { + TCP_SSL_DEBUG("ax_port_write: tcp_output err: %ld\n", err); + return err; + } + } + + fd_data->last_wr += tcp_len; + + return tcp_len; +} + +/* + * The LWIP tcp raw version of the SOCKET_READ(A, B, C) + */ +int ax_port_read(int fd, uint8_t *data, int len) { + tcp_ssl_t *fd_data = NULL; + uint8_t *read_buf = NULL; + uint8_t *pread_buf = NULL; + u16_t recv_len = 0; + + //TCP_SSL_DEBUG("ax_port_read: %d, %d\n", fd, len); + + fd_data = tcp_ssl_get_by_fd(fd); + if (fd_data == NULL) { + TCP_SSL_DEBUG("ax_port_read: tcp_ssl[%d] is NULL\n", fd); + return ERR_TCP_SSL_INVALID_CLIENTFD_DATA; + } + + if(fd_data->tcp_pbuf == NULL || fd_data->tcp_pbuf->tot_len == 0) { + return 0; + } + + read_buf =(uint8_t*)calloc(fd_data->tcp_pbuf->len + 1, sizeof(uint8_t)); + pread_buf = read_buf; + if (pread_buf != NULL){ + recv_len = pbuf_copy_partial(fd_data->tcp_pbuf, read_buf, len, fd_data->pbuf_offset); + fd_data->pbuf_offset += recv_len; + } + + if (recv_len != 0) { + memcpy(data, read_buf, recv_len); + } + + if(len < recv_len) { + TCP_SSL_DEBUG("ax_port_read: got %d bytes more than expected\n", recv_len - len); + } + + free(pread_buf); + pread_buf = NULL; + + return recv_len; +} + +void ax_wdt_feed() {} + +#endif diff --git a/lib/ESPAsyncTCP-esphome/src/tcp_axtls.h b/lib/ESPAsyncTCP-esphome/src/tcp_axtls.h new file mode 100644 index 0000000..118e36f --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/src/tcp_axtls.h @@ -0,0 +1,98 @@ +/* + Asynchronous TCP library for Espressif MCUs + + Copyright (c) 2016 Hristo Gochkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/* + * Compatibility for AxTLS with LWIP raw tcp mode (http://lwip.wikia.com/wiki/Raw/TCP) + * Original Code and Inspiration: Slavey Karadzhov + */ + +#ifndef LWIPR_COMPAT_H +#define LWIPR_COMPAT_H + +#include + +#if ASYNC_TCP_SSL_ENABLED + +#include "lwipopts.h" +/* + * All those functions will run only if LWIP tcp raw mode is used + */ +#if LWIP_RAW==1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "include/ssl.h" + +#define ERR_TCP_SSL_INVALID_SSL -101 +#define ERR_TCP_SSL_INVALID_TCP -102 +#define ERR_TCP_SSL_INVALID_CLIENTFD -103 +#define ERR_TCP_SSL_INVALID_CLIENTFD_DATA -104 +#define ERR_TCP_SSL_INVALID_DATA -105 + +#define TCP_SSL_TYPE_CLIENT 0 +#define TCP_SSL_TYPE_SERVER 1 + +#define tcp_ssl_ssl_write(A, B, C) tcp_ssl_write(A, B, C) +#define tcp_ssl_ssl_read(A, B) tcp_ssl_read(A, B) + +typedef void (* tcp_ssl_data_cb_t)(void *arg, struct tcp_pcb *tcp, uint8_t * data, size_t len); +typedef void (* tcp_ssl_handshake_cb_t)(void *arg, struct tcp_pcb *tcp, SSL *ssl); +typedef void (* tcp_ssl_error_cb_t)(void *arg, struct tcp_pcb *tcp, int8_t error); +typedef int (* tcp_ssl_file_cb_t)(void *arg, const char *filename, uint8_t **buf); + +uint8_t tcp_ssl_has_client(); + +int tcp_ssl_new_client(struct tcp_pcb *tcp); + +SSL_CTX * tcp_ssl_new_server_ctx(const char *cert, const char *private_key_file, const char *password); +int tcp_ssl_new_server(struct tcp_pcb *tcp, SSL_CTX* ssl_ctx); +int tcp_ssl_is_server(struct tcp_pcb *tcp); + +int tcp_ssl_free(struct tcp_pcb *tcp); +int tcp_ssl_read(struct tcp_pcb *tcp, struct pbuf *p); + +#ifdef AXTLS_2_0_0_SNDBUF +int tcp_ssl_sndbuf(struct tcp_pcb *tcp); +#endif + +int tcp_ssl_write(struct tcp_pcb *tcp, uint8_t *data, size_t len); + +void tcp_ssl_file(tcp_ssl_file_cb_t cb, void * arg); + +void tcp_ssl_arg(struct tcp_pcb *tcp, void * arg); +void tcp_ssl_data(struct tcp_pcb *tcp, tcp_ssl_data_cb_t arg); +void tcp_ssl_handshake(struct tcp_pcb *tcp, tcp_ssl_handshake_cb_t arg); +void tcp_ssl_err(struct tcp_pcb *tcp, tcp_ssl_error_cb_t arg); + +SSL * tcp_ssl_get_ssl(struct tcp_pcb *tcp); +bool tcp_ssl_has(struct tcp_pcb *tcp); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_RAW==1 */ + +#endif /* ASYNC_TCP_SSL_ENABLED */ + +#endif /* LWIPR_COMPAT_H */ diff --git a/lib/ESPAsyncTCP-esphome/ssl/gen_server_cert.sh b/lib/ESPAsyncTCP-esphome/ssl/gen_server_cert.sh new file mode 100644 index 0000000..fd749ed --- /dev/null +++ b/lib/ESPAsyncTCP-esphome/ssl/gen_server_cert.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +cat > ca_cert.conf << EOF +[ req ] +distinguished_name = req_distinguished_name +prompt = no + +[ req_distinguished_name ] + O = Espressif Systems +EOF + +openssl genrsa -out axTLS.ca_key.pem 2048 +openssl req -new -config ./ca_cert.conf -key axTLS.ca_key.pem -out axTLS.ca_x509.req +openssl x509 -req -sha1 -days 5000 -signkey axTLS.ca_key.pem -CAkey axTLS.ca_key.pem -in axTLS.ca_x509.req -out axTLS.ca_x509.pem + +cat > certs.conf << EOF +[ req ] +distinguished_name = req_distinguished_name +prompt = no + +[ req_distinguished_name ] + O = axTLS on ESP8266 + CN = esp8266.local +EOF + +openssl genrsa -out axTLS.key_1024.pem 1024 +openssl req -new -config ./certs.conf -key axTLS.key_1024.pem -out axTLS.x509_1024.req +openssl x509 -req -sha1 -CAcreateserial -days 5000 -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -in axTLS.x509_1024.req -out axTLS.x509_1024.pem + +openssl rsa -outform DER -in axTLS.key_1024.pem -out axTLS.key_1024 +openssl x509 -outform DER -in axTLS.x509_1024.pem -out axTLS.x509_1024.cer + +cat axTLS.key_1024 > server.key +cat axTLS.x509_1024.cer > server.cer + +rm axTLS.* ca_cert.conf certs.conf diff --git a/lib/ESPAsyncTCP-esphome/ssl/server.cer b/lib/ESPAsyncTCP-esphome/ssl/server.cer new file mode 100644 index 0000000000000000000000000000000000000000..b5e5f248c4a5e86231876e4a9d0188624355266d GIT binary patch literal 587 zcmXqLVsbZVV$^5iWSGpfaN~?!WzGh?Y@Awc9&O)w85vnw84P3$r3@t4m_u2(cm!RG z3yM;Ui!;*{f-8$lQge$9E++@_GkM4DONU`s!Yh*a3uA%Yr>0vuTxoGhl`X= zOm)@|y?rGhX-}oBV&|g6>yCF;GafqH|Lx56CmB)ZicHLm42;Om1BMZE6C)!7Q{4 zVCeqqWd!S26n2qiLoZd^)KFr)c^x5%qQkDoiF*OU#gF#P*W_qgHz5K80RRC4fq?*x z404IsAG!|uZhSjSEN@k>Opd#k7h|ttCdOIJSPO%wGa?lf^COVvG_XDD&e? zyvGxataxxV>tpH@0=8+~?+Q)L-YEeBK>*|f|LN$~bw50ah7!i*rhGxNWaSKQgYqgm z{hCLUY2^{1Hv@E?C}m=~;yrD$M#BP=%o;o()sx1v9dHi3c<};30Lr%&dusO-%he4r zCXmZGM{6`I6pLC{CISQo#O-Kr1!n69lpq7y(si&Q zF#kQUO^(d{A^ck;ARC_@8*h>ZYI(wDiee6p=K$&v!C*c49 literal 0 HcmV?d00001 diff --git a/lib/NetworkClientSecure/README.md b/lib/NetworkClientSecure/README.md new file mode 100644 index 0000000..0710d3f --- /dev/null +++ b/lib/NetworkClientSecure/README.md @@ -0,0 +1,133 @@ +NetworkClientSecure +================ + +The NetworkClientSecure class implements support for secure connections using TLS (SSL). +It inherits from NetworkClient and thus implements a superset of that class' interface. +There are three ways to establish a secure connection using the NetworkClientSecure class: +using a root certificate authority (CA) cert, using a root CA cert plus a client cert and key, +and using a pre-shared key (PSK). + +Using a root certificate authority cert +--------------------------------------- +This method authenticates the server and negotiates an encrypted connection. +It is the same functionality as implemented in your web browser when you connect to HTTPS sites. + +If you are accessing your own server: +- Generate a root certificate for your own certificate authority +- Generate a cert & private key using your root certificate ("self-signed cert") for your server + +If you are accessing a public server: +- Obtain the cert of the public CA that signed that server's cert +Then: +- In NetworkClientSecure use setCACert (or the appropriate connect method) to set the root cert of your + CA or of the public CA +- When NetworkClientSecure connects to the target server it uses the CA cert to verify the certificate + presented by the server, and then negotiates encryption for the connection + +Please see the NetworkClientSecure example. + +Using a bundle of root certificate authority certificates +--------------------------------------------------------- +This method is similar to the single root certificate verification above, but it uses a standard set of +root certificates from Mozilla to authenticate against, while the previous method only accepts a single +certificate for a given server. This allows the client to connect to all public SSL servers. + +To use this feature in PlatformIO: +1. create a certificate bundle as described in the document below, or obtain a pre-built one you trust: +https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_crt_bundle.html +(gen_crt_bundle.py can be found in the /tools folder) + a. note: the full bundle will take up around 64k of flash space, but has minimal RAM usage, as only + the index of the certificates is kept in RAM +2. Place the bundle under the file name "data/cert/x509_crt_bundle.bin" in your platformio project +3. add "board_build.embed_files = data/cert/x509_crt_bundle.bin" in your platformio.ini +4. add the following global declaration in your project: + extern const uint8_t rootca_crt_bundle_start[] asm("_binary_data_cert_x509_crt_bundle_bin_start"); +5. before initiating the first SSL connection, call + my_client.setCACertBundle(rootca_crt_bundle_start); + +To use this feature in Arduino IDE: +If the Arduino IDE added support for embedding files in the meantime, then follow the instructions above. +If not, you have three choices: +1. convert your project to PlatformIO +2. create a makefile where you can add the idf_component_register() declaration to include the certificate bundle +3. Store the bundle as a SPIFFS file, but then you have to load it into RAM in runtime and waste 64k of precious memory + +Using a root CA cert and client cert/keys +----------------------------------------- +This method authenticates the server and additionally also authenticates +the client to the server, then negotiates an encrypted connection. + +- Follow steps above +- Using your root CA generate cert/key for your client +- Register the keys with the server you will be accessing so the server can authenticate your client +- In NetworkClientSecure use setCACert (or the appropriate connect method) to set the root cert of your + CA or of the public CA, this is used to authenticate the server +- In NetworkClientSecure use setCertificate, and setPrivateKey (or the appropriate connect method) to + set your client's cert & key, this will be used to authenticate your client to the server +- When NetworkClientSecure connects to the target server it uses the CA cert to verify the certificate + presented by the server, it will use the cert/key to authenticate your client to the server, and + it will then negotiate encryption for the connection + +Using Pre-Shared Keys (PSK) +--------------------------- + +TLS supports authentication and encryption using a pre-shared key (i.e. a key that both client and +server know) as an alternative to the public key cryptography commonly used on the web for HTTPS. +PSK is starting to be used for MQTT, e.g. in mosquitto, to simplify the set-up and avoid having to +go through the whole CA, cert, and private key process. + +A pre-shared key is a binary string of up to 32 bytes and is commonly represented in hex form. In +addition to the key, clients can also present an id and typically the server allows a different key +to be associated with each client id. In effect this is very similar to username and password pairs, +except that unlike a password the key is not directly transmitted to the server, thus a connection to a +malicious server does not divulge the password. Plus the server is also authenticated to the client. + +To use PSK: +- Generate a random hex string (generating an MD5 or SHA for some file is one way to do this) +- Come up with a string id for your client and configure your server to accept the id/key pair +- In NetworkClientSecure use setPreSharedKey (or the appropriate connect method) to + set the id/key combo +- When NetworkClientSecure connects to the target server it uses the id/key combo to authenticate the + server (it must prove that it has the key too), authenticate the client and then negotiate + encryption for the connection + +Please see the NetworkClientPSK example. + +Specifying the ALPN Protocol +---------------------------- + +Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension that allows +the application layer to negotiate which protocol should be performed over a secure connection in a manner +that avoids additional round trips and which is independent of the application-layer protocols. + +For example, this is used with AWS IoT Custom Authorizers where an MQTT client must set the ALPN protocol to ```mqtt```: + +``` +const char *aws_protos[] = {"mqtt", NULL}; +... +wiFiClient.setAlpnProtocols(aws_protos); +``` + +Examples +-------- +#### NetworkClientInsecure +Demonstrates usage of insecure connection using `NetworkClientSecure::setInsecure()` +#### NetworkClientPSK +Wifi secure connection example for ESP32 using a pre-shared key (PSK) +This is useful with MQTT servers instead of using a self-signed cert, tested with mosquitto. +Running on TLS 1.2 using mbedTLS +#### NetworkClientSecure +Wifi secure connection example for ESP32 +Running on TLS 1.2 using mbedTLS +#### NetworkClientSecureEnterprise +This example demonstrates a secure connection to a WiFi network using WPA/WPA2 Enterprise (for example eduroam), +and establishing a secure HTTPS connection with an external server (for example arduino.php5.sk) using the defined anonymous identity, user identity, and password. + +.. note:: + This example is outdated and might not work. For more examples see [https://github.com/martinius96/ESP32-eduroam](https://github.com/martinius96/ESP32-eduroam) + +#### NetworkClientShowPeerCredentials +Example of a establishing a secure connection and then showing the fingerprint of the certificate. +This can be useful in an IoT setting to know for sure that you are connecting to the right server. +Especially in situations where you cannot hardcode a trusted root certificate for long +periods of time (as they tend to get replaced more often than the lifecycle of IoT hardware). diff --git a/lib/NetworkClientSecure/examples/WiFiClientInsecure/WiFiClientInsecure.ino b/lib/NetworkClientSecure/examples/WiFiClientInsecure/WiFiClientInsecure.ino new file mode 100644 index 0000000..95009c8 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientInsecure/WiFiClientInsecure.ino @@ -0,0 +1,70 @@ +#include +#include + +/* This is a very INSECURE approach. + * If for some reason the secure, proper example NetworkClientSecure + * does not work for you; then you may want to check the + * NetworkClientTrustOnFirstUse example first. It is less secure than + * NetworkClientSecure, but a lot better than this totally insecure + * approach shown below. + */ + +const char *ssid = "your-ssid"; // your network SSID (name of wifi network) +const char *password = "your-password"; // your network password + +const char *server = "www.howsmyssl.com"; // Server URL + +NetworkClientSecure client; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(115200); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + Serial.println("\nStarting connection to server..."); + client.setInsecure(); //skip verification + if (!client.connect(server, 443)) { + Serial.println("Connection failed!"); + } else { + Serial.println("Connected to server!"); + // Make a HTTP request: + client.println("GET https://www.howsmyssl.com/a/check HTTP/1.0"); + client.println("Host: www.howsmyssl.com"); + client.println("Connection: close"); + client.println(); + + while (client.connected()) { + String line = client.readStringUntil('\n'); + if (line == "\r") { + Serial.println("headers received"); + break; + } + } + // if there are incoming bytes available + // from the server, read them and print them: + while (client.available()) { + char c = client.read(); + Serial.write(c); + } + + client.stop(); + } +} + +void loop() { + // do nothing +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientInsecure/ci.json b/lib/NetworkClientSecure/examples/WiFiClientInsecure/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientInsecure/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientPSK/WiFiClientPSK.ino b/lib/NetworkClientSecure/examples/WiFiClientPSK/WiFiClientPSK.ino new file mode 100644 index 0000000..42bc886 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientPSK/WiFiClientPSK.ino @@ -0,0 +1,86 @@ +/* + Wifi secure connection example for ESP32 using a pre-shared key (PSK) + This is useful with MQTT servers instead of using a self-signed cert, tested with mosquitto. + Running on TLS 1.2 using mbedTLS + + To test run a test server using: openssl s_server -accept 8443 -psk 1a2b3c4d -nocert + It will show the http request made, but there's no easy way to send a reply back... + + 2017 - Evandro Copercini - Apache 2.0 License. + 2018 - Adapted for PSK by Thorsten von Eicken +*/ + +#include +#include + +#if 0 +const char* ssid = "your-ssid"; // your network SSID (name of wifi network) +const char* password = "your-password"; // your network password +#else +const char *ssid = "test"; // your network SSID (name of wifi network) +const char *password = "securetest"; // your network password +#endif + +//const char* server = "server.local"; // Server hostname +const IPAddress server = IPAddress(192, 168, 0, 14); // Server IP address +const int port = 8443; // server's port (8883 for MQTT) + +const char *pskIdent = "Client_identity"; // PSK identity (sometimes called key hint) +const char *psKey = "1a2b3c4d"; // PSK Key (must be hex string without 0x) + +NetworkClientSecure client; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(115200); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + client.setPreSharedKey(pskIdent, psKey); + + Serial.println("\nStarting connection to server..."); + if (!client.connect(server, port)) { + Serial.println("Connection failed!"); + } else { + Serial.println("Connected to server!"); + // Make a HTTP request: + client.println("GET /a/check HTTP/1.0"); + client.print("Host: "); + client.println(server); + client.println("Connection: close"); + client.println(); + + while (client.connected()) { + String line = client.readStringUntil('\n'); + if (line == "\r") { + Serial.println("headers received"); + break; + } + } + // if there are incoming bytes available + // from the server, read them and print them: + while (client.available()) { + char c = client.read(); + Serial.write(c); + } + + client.stop(); + } +} + +void loop() { + // do nothing +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientPSK/ci.json b/lib/NetworkClientSecure/examples/WiFiClientPSK/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientPSK/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino b/lib/NetworkClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino new file mode 100644 index 0000000..3339068 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino @@ -0,0 +1,102 @@ +/* + Wifi secure connection example for ESP32 + Running on TLS 1.2 using mbedTLS + Supporting the following ciphersuites: + "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_DHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_AES_256_CCM","TLS_DHE_RSA_WITH_AES_256_CCM","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384","TLS_DHE_RSA_WITH_AES_256_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_DHE_RSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8","TLS_DHE_RSA_WITH_AES_256_CCM_8","TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384","TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384","TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256","TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_DHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CCM","TLS_DHE_RSA_WITH_AES_128_CCM","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256","TLS_DHE_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA","TLS_DHE_RSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8","TLS_DHE_RSA_WITH_AES_128_CCM_8","TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256","TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256","TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256","TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA","TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA","TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA","TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA","TLS_DHE_PSK_WITH_AES_256_GCM_SHA384","TLS_DHE_PSK_WITH_AES_256_CCM","TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384","TLS_DHE_PSK_WITH_AES_256_CBC_SHA384","TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA","TLS_DHE_PSK_WITH_AES_256_CBC_SHA","TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384","TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384","TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384","TLS_PSK_DHE_WITH_AES_256_CCM_8","TLS_DHE_PSK_WITH_AES_128_GCM_SHA256","TLS_DHE_PSK_WITH_AES_128_CCM","TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256","TLS_DHE_PSK_WITH_AES_128_CBC_SHA256","TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA","TLS_DHE_PSK_WITH_AES_128_CBC_SHA","TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256","TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256","TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256","TLS_PSK_DHE_WITH_AES_128_CCM_8","TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA","TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_256_CCM","TLS_RSA_WITH_AES_256_CBC_SHA256","TLS_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_256_CCM_8","TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384","TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256","TLS_RSA_WITH_CAMELLIA_256_CBC_SHA","TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384","TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384","TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_128_CCM","TLS_RSA_WITH_AES_128_CBC_SHA256","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_128_CCM_8","TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256","TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256","TLS_RSA_WITH_CAMELLIA_128_CBC_SHA","TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256","TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256","TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256","TLS_RSA_WITH_3DES_EDE_CBC_SHA","TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA","TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA","TLS_RSA_PSK_WITH_AES_256_GCM_SHA384","TLS_RSA_PSK_WITH_AES_256_CBC_SHA384","TLS_RSA_PSK_WITH_AES_256_CBC_SHA","TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384","TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384","TLS_RSA_PSK_WITH_AES_128_GCM_SHA256","TLS_RSA_PSK_WITH_AES_128_CBC_SHA256","TLS_RSA_PSK_WITH_AES_128_CBC_SHA","TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256","TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256","TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA","TLS_PSK_WITH_AES_256_GCM_SHA384","TLS_PSK_WITH_AES_256_CCM","TLS_PSK_WITH_AES_256_CBC_SHA384","TLS_PSK_WITH_AES_256_CBC_SHA","TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384","TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384","TLS_PSK_WITH_AES_256_CCM_8","TLS_PSK_WITH_AES_128_GCM_SHA256","TLS_PSK_WITH_AES_128_CCM","TLS_PSK_WITH_AES_128_CBC_SHA256","TLS_PSK_WITH_AES_128_CBC_SHA","TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256","TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256","TLS_PSK_WITH_AES_128_CCM_8","TLS_PSK_WITH_3DES_EDE_CBC_SHA","TLS_EMPTY_RENEGOTIATION_INFO_SCSV"] + 2017 - Evandro Copercini - Apache 2.0 License. +*/ + +#include +#include + +const char *ssid = "your-ssid"; // your network SSID (name of wifi network) +const char *password = "your-password"; // your network password + +const char *server = "www.howsmyssl.com"; // Server URL + +// www.howsmyssl.com root certificate authority, to verify the server +// change it to your server root CA +// SHA1 fingerprint is broken now! + +const char *test_root_ca = "-----BEGIN CERTIFICATE-----\n" + "MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/\n" + "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" + "DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow\n" + "PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD\n" + "Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n" + "AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O\n" + "rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq\n" + "OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b\n" + "xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw\n" + "7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD\n" + "aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV\n" + "HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG\n" + "SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69\n" + "ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr\n" + "AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz\n" + "R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5\n" + "JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo\n" + "Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ\n" + "-----END CERTIFICATE-----\n"; + +// You can use x.509 client certificates if you want +//const char* test_client_key = ""; //to verify the client +//const char* test_client_cert = ""; //to verify the client + +NetworkClientSecure client; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(115200); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + client.setCACert(test_root_ca); + //client.setCertificate(test_client_cert); // for client verification + //client.setPrivateKey(test_client_key); // for client verification + + Serial.println("\nStarting connection to server..."); + if (!client.connect(server, 443)) { + Serial.println("Connection failed!"); + } else { + Serial.println("Connected to server!"); + // Make a HTTP request: + client.println("GET https://www.howsmyssl.com/a/check HTTP/1.0"); + client.println("Host: www.howsmyssl.com"); + client.println("Connection: close"); + client.println(); + + while (client.connected()) { + String line = client.readStringUntil('\n'); + if (line == "\r") { + Serial.println("headers received"); + break; + } + } + // if there are incoming bytes available + // from the server, read them and print them: + while (client.available()) { + char c = client.read(); + Serial.write(c); + } + + client.stop(); + } +} + +void loop() { + // do nothing +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientSecure/ci.json b/lib/NetworkClientSecure/examples/WiFiClientSecure/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientSecure/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/WiFiClientSecureEnterprise.ino b/lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/WiFiClientSecureEnterprise.ino new file mode 100644 index 0000000..a7149e0 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/WiFiClientSecureEnterprise.ino @@ -0,0 +1,132 @@ +/*|-----------------------------------------------------------|*/ +/*|WORKING EXAMPLE FOR HTTPS CONNECTION |*/ +/*|Author: Bc. Martin Chlebovec |*/ +/*|Technical University of Košice |*/ +/*|TESTED BOARDS: Devkit v1 DOIT, Devkitc v4 |*/ +/*|CORE: 0.9x, 1.0.0, 1.0.1 tested, working (newer not tested)|*/ +/*|Supported methods: PEAP + MsCHAPv2, EAP-TTLS + MsCHAPv2 |*/ +/*|-----------------------------------------------------------|*/ + +// This example demonstrates a secure connection to a WiFi network using WPA/WPA2 Enterprise (for example eduroam), +// and establishing a secure HTTPS connection with an external server (for example arduino.php5.sk) using the defined anonymous identity, user identity, and password. + +// Note: this example is outdated and may not work! +// For more examples see https://github.com/martinius96/ESP32-eduroam + +#include +#include +#if __has_include("esp_eap_client.h") +#include "esp_eap_client.h" +#else +#include "esp_wpa2.h" +#endif +#include +#define EAP_ANONYMOUS_IDENTITY "anonymous@example.com" //anonymous identity +#define EAP_IDENTITY "id@example.com" //user identity +#define EAP_PASSWORD "password" //eduroam user password +const char *ssid = "eduroam"; // eduroam SSID +const char *host = "arduino.php5.sk"; //external server domain for HTTPS connection +int counter = 0; +const char *test_root_ca = "-----BEGIN CERTIFICATE-----\n" + "MIIEsTCCA5mgAwIBAgIQCKWiRs1LXIyD1wK0u6tTSTANBgkqhkiG9w0BAQsFADBh\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n" + "QTAeFw0xNzExMDYxMjIzMzNaFw0yNzExMDYxMjIzMzNaMF4xCzAJBgNVBAYTAlVT\n" + "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" + "b20xHTAbBgNVBAMTFFJhcGlkU1NMIFJTQSBDQSAyMDE4MIIBIjANBgkqhkiG9w0B\n" + "AQEFAAOCAQ8AMIIBCgKCAQEA5S2oihEo9nnpezoziDtx4WWLLCll/e0t1EYemE5n\n" + "+MgP5viaHLy+VpHP+ndX5D18INIuuAV8wFq26KF5U0WNIZiQp6mLtIWjUeWDPA28\n" + "OeyhTlj9TLk2beytbtFU6ypbpWUltmvY5V8ngspC7nFRNCjpfnDED2kRyJzO8yoK\n" + "MFz4J4JE8N7NA1uJwUEFMUvHLs0scLoPZkKcewIRm1RV2AxmFQxJkdf7YN9Pckki\n" + "f2Xgm3b48BZn0zf0qXsSeGu84ua9gwzjzI7tbTBjayTpT+/XpWuBVv6fvarI6bik\n" + "KB859OSGQuw73XXgeuFwEPHTIRoUtkzu3/EQ+LtwznkkdQIDAQABo4IBZjCCAWIw\n" + "HQYDVR0OBBYEFFPKF1n8a8ADIS8aruSqqByCVtp1MB8GA1UdIwQYMBaAFAPeUDVW\n" + "0Uy7ZvCj4hsbw5eyPdFVMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEF\n" + "BQcDAQYIKwYBBQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBADA0BggrBgEFBQcBAQQo\n" + "MCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBCBgNVHR8E\n" + "OzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRHbG9i\n" + "YWxSb290Q0EuY3JsMGMGA1UdIARcMFowNwYJYIZIAYb9bAECMCowKAYIKwYBBQUH\n" + "AgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCwYJYIZIAYb9bAEBMAgG\n" + "BmeBDAECATAIBgZngQwBAgIwDQYJKoZIhvcNAQELBQADggEBAH4jx/LKNW5ZklFc\n" + "YWs8Ejbm0nyzKeZC2KOVYR7P8gevKyslWm4Xo4BSzKr235FsJ4aFt6yAiv1eY0tZ\n" + "/ZN18bOGSGStoEc/JE4ocIzr8P5Mg11kRYHbmgYnr1Rxeki5mSeb39DGxTpJD4kG\n" + "hs5lXNoo4conUiiJwKaqH7vh2baryd8pMISag83JUqyVGc2tWPpO0329/CWq2kry\n" + "qv66OSMjwulUz0dXf4OHQasR7CNfIr+4KScc6ABlQ5RDF86PGeE6kdwSQkFiB/cQ\n" + "ysNyq0jEDQTkfa2pjmuWtMCNbBnhFXBYejfubIhaUbEv2FOQB3dCav+FPg5eEveX\n" + "TVyMnGo=\n" + "-----END CERTIFICATE-----\n"; +// You can use x.509 client certificates if you want +//const char* test_client_key = ""; //to verify the client +//const char* test_client_cert = ""; //to verify the client +NetworkClientSecure client; +void setup() { + Serial.begin(115200); + delay(10); + Serial.println(); + Serial.print("Connecting to network: "); + Serial.println(ssid); + WiFi.disconnect(true); //disconnect form wifi to set new wifi connection + WiFi.mode(WIFI_STA); //init wifi mode +#if __has_include("esp_eap_client.h") + esp_eap_client_set_identity((uint8_t *)EAP_ANONYMOUS_IDENTITY, strlen(EAP_ANONYMOUS_IDENTITY)); //provide identity + esp_eap_client_set_username((uint8_t *)EAP_IDENTITY, strlen(EAP_IDENTITY)); //provide username + esp_eap_client_set_password((uint8_t *)EAP_PASSWORD, strlen(EAP_PASSWORD)); //provide password + esp_wifi_sta_enterprise_enable(); +#else + esp_wifi_sta_wpa2_ent_set_identity((uint8_t *)EAP_ANONYMOUS_IDENTITY, strlen(EAP_ANONYMOUS_IDENTITY)); //provide identity + esp_wifi_sta_wpa2_ent_set_username((uint8_t *)EAP_IDENTITY, strlen(EAP_IDENTITY)); //provide username + esp_wifi_sta_wpa2_ent_set_password((uint8_t *)EAP_PASSWORD, strlen(EAP_PASSWORD)); //provide password + esp_wifi_sta_wpa2_ent_enable(); +#endif + WiFi.begin(ssid); //connect to wifi + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + counter++; + if (counter >= 60) { //after 30 seconds timeout - reset board (on unsuccessful connection) + ESP.restart(); + } + } + client.setCACert(test_root_ca); + //client.setCertificate(test_client_cert); // for client verification - certificate + //client.setPrivateKey(test_client_key); // for client verification - private key + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address set: "); + Serial.println(WiFi.localIP()); //print LAN IP +} +void loop() { + if (WiFi.status() == WL_CONNECTED) { //if we are connected to eduroam network + counter = 0; //reset counter + Serial.println("Wifi is still connected with IP: "); + Serial.println(WiFi.localIP()); //inform user about his IP address + } else if (WiFi.status() != WL_CONNECTED) { //if we lost connection, retry + WiFi.begin(ssid); + } + while (WiFi.status() != WL_CONNECTED) { //during lost connection, print dots + delay(500); + Serial.print("."); + counter++; + if (counter >= 60) { //30 seconds timeout - reset board + ESP.restart(); + } + } + Serial.print("Connecting to website: "); + Serial.println(host); + if (client.connect(host, 443)) { + String url = "/rele/rele1.txt"; + client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: ESP32\r\n" + "Connection: close\r\n\r\n"); + while (client.connected()) { + String header = client.readStringUntil('\n'); + Serial.println(header); + if (header == "\r") { + break; + } + } + String line = client.readStringUntil('\n'); + Serial.println(line); + } else { + Serial.println("Connection unsuccessful"); + } + delay(5000); +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json b/lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/WiFiClientSecureProtocolUpgrade.ino b/lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/WiFiClientSecureProtocolUpgrade.ino new file mode 100644 index 0000000..a6f76cb --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/WiFiClientSecureProtocolUpgrade.ino @@ -0,0 +1,190 @@ +/* STARTSSL example + + Inline upgrading from a clear-text connection to an SSL/TLS connection. + + Some protocols such as SMTP, XMPP, Mysql, Postgresql and others allow, or require, + that you start the connection without encryption; and then send a command to switch + over to encryption. + + E.g. a typical SMTP submission would entail a dialog such as this: + + 1. client connects to server in the clear + 2. server says hello + 3. client sents a EHLO + 4. server tells the client that it supports SSL/TLS + 5. client sends a 'STARTTLS' to make use of this faciltiy + 6. client/server negiotiate a SSL or TLS connection. + 7. client sends another EHLO + 8. server now tells the client what (else) is supported; such as additional authentication options. + ... conversation continues encrypted. + + This can be enabled in NetworkClientSecure by telling it to start in plaintext: + + client.setPlainStart(); + + and client is than a plain, TCP, connection (just as NetworkClient would be); until the client calls + the method: + + client.startTLS(); // returns zero on error; non zero on success. + + After which things switch to TLS/SSL. +*/ + +#include +#include + +#ifndef WIFI_NETWORK +#define WIFI_NETWORK "YOUR Wifi SSID" +#endif + +#ifndef WIFI_PASSWD +#define WIFI_PASSWD "your-secret-password" +#endif + +#ifndef SMTP_HOST +#define SMTP_HOST "smtp.gmail.com" +#endif + +#ifndef SMTP_PORT +#define SMTP_PORT (587) // Standard (plaintext) submission port +#endif + +const char *ssid = WIFI_NETWORK; // your network SSID (name of wifi network) +const char *password = WIFI_PASSWD; // your network password +const char *server = SMTP_HOST; // Server URL +const int submission_port = SMTP_PORT; // submission port. + +NetworkClientSecure client; + +static bool readAllSMTPLines(); + +void setup() { + int ret; + //Initialize serial and wait for port to open: + Serial.begin(115200); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.print(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + Serial.printf("\nStarting connection to server: %s:%d\n", server, submission_port); + + // skip verification for this demo. In production one should at the very least + // enable TOFU; or ideally hardcode a (CA) certificate that is trusted. + client.setInsecure(); + + // Enable a plain-test start. + client.setPlainStart(); + + if (!client.connect(server, SMTP_PORT)) { + Serial.println("Connection failed!"); + return; + }; + + Serial.println("Connected to server (in the clear, in plaintest)"); + + if (!readAllSMTPLines()) { + goto err; + } + + Serial.println("Sending : EHLO\t\tin the clear"); + client.print("EHLO there\r\n"); + + if (!readAllSMTPLines()) { + goto err; + } + + Serial.println("Sending : STARTTLS\t\tin the clear"); + client.print("STARTTLS\r\n"); + + if (!readAllSMTPLines()) { + goto err; + } + + Serial.println("Upgrading connection to TLS"); + if ((ret = client.startTLS()) <= 0) { + Serial.printf("Upgrade connection failed: err %d\n", ret); + goto err; + } + + Serial.println("Sending : EHLO again\t\tover the now encrypted connection"); + client.print("EHLO again\r\n"); + + if (!readAllSMTPLines()) { + goto err; + } + + // normally, as this point - we'd be authenticating and then be submitting + // an email. This has been left out of this example. + + Serial.println("Sending : QUIT\t\t\tover the now encrypted connection"); + client.print("QUIT\r\n"); + + if (!readAllSMTPLines()) { + goto err; + } + + Serial.println("Completed OK\n"); +err: + Serial.println("Closing connection"); + client.stop(); +} + +// SMTP command repsponse start with three digits and a space; +// or, for continuation, with three digits and a '-'. +static bool readAllSMTPLines() { + String s = ""; + int i; + + // blocking read; we cannot rely on a timeout + // of a NetworkClientSecure read; as it is non + // blocking. + const unsigned long timeout = 15 * 1000; + unsigned long start = millis(); // the timeout is for the entire CMD block response; not per character/line. + while (1) { + while ((i = client.available()) == 0 && millis() - start < timeout) { + /* .. wait */ + }; + if (i == 0) { + Serial.println("Timeout reading SMTP response"); + return false; + }; + if (i < 0) { + break; + } + + i = client.read(); + if (i < 0) { + break; + } + + if (i > 31 && i < 128) { + s += (char)i; + } + if (i == 0x0A) { + Serial.print("Receiving: "); + Serial.println(s); + if (s.charAt(3) == ' ') { + return true; + } + s = ""; + } + } + Serial.printf("Error reading SMTP command response line: %d\n", i); + return false; +} + +void loop() { + // do nothing +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json b/lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/WiFiClientShowPeerCredentials.ino b/lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/WiFiClientShowPeerCredentials.ino new file mode 100644 index 0000000..be12050 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/WiFiClientShowPeerCredentials.ino @@ -0,0 +1,98 @@ +// NetworkClientShowPeerCredentials +// +// Example of a establishing a secure connection and then +// showing the fingerprint of the certificate. This can +// be useful in an IoT setting to know for sure that you +// are connecting to the right server. Especially in +// situations where you cannot hardcode a trusted root +// certificate for long periods of time (as they tend to +// get replaced more often than the lifecycle of IoT +// hardware). +// + +#include +#include +#include + +#ifndef WIFI_NETWORK +#define WIFI_NETWORK "MyWifiNetwork" +#endif + +#ifndef WIFI_PASSWD +#define WIFI_PASSWD "MySecretWifiPassword" +#endif + +#define URL "https://arduino.cc" + +void demo() { + NetworkClientSecure *client = new NetworkClientSecure; + client->setInsecure(); // + + HTTPClient https; + if (!https.begin(*client, URL)) { + Serial.println("HTTPS setup failed"); + return; + }; + + https.setTimeout(5000); + + int httpCode = https.GET(); + if (httpCode != 200) { + Serial.print("Connect failed: "); + Serial.println(https.errorToString(httpCode)); + return; + } + + const mbedtls_x509_crt *peer = client->getPeerCertificate(); + + // Show general output / certificate information + // + char buf[1024]; + int l = mbedtls_x509_crt_info(buf, sizeof(buf), "", peer); + if (l <= 0) { + Serial.println("Peer conversion to printable buffer failed"); + return; + }; + Serial.println(); + Serial.println(buf); + + uint8_t fingerprint_remote[32]; + if (!client->getFingerprintSHA256(fingerprint_remote)) { + Serial.println("Failed to get the fingerprint"); + return; + } + // Fingerprint late 2021 + Serial.println("Expecting Fingerprint (SHA256): 70 CF A4 B7 5D 09 E9 2A 52 A8 B6 85 B5 0B D6 BE 83 47 83 5B 3A 4D 3C 3E 32 30 EC 1D 61 98 D7 0F"); + Serial.print(" Received Fingerprint (SHA256): "); + + for (int i = 0; i < 32; i++) { + Serial.print(fingerprint_remote[i], HEX); + Serial.print(" "); + }; + Serial.println(""); +}; + +void setup() { + Serial.begin(115200); + Serial.println("Started " __FILE__ " build " __DATE__ " " __TIME__); + + WiFi.mode(WIFI_STA); + WiFi.begin(WIFI_NETWORK, WIFI_PASSWD); + + while (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("Wifi fail - rebooting"); + delay(5000); + ESP.restart(); + } +} + +void loop() { + bool already_tried = false; + if ((millis() < 1000) || already_tried) { + return; + } + already_tried = true; + + // Run the test just once. + demo(); +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json b/lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/WiFiClientTrustOnFirstUse.ino b/lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/WiFiClientTrustOnFirstUse.ino new file mode 100644 index 0000000..5b68381 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/WiFiClientTrustOnFirstUse.ino @@ -0,0 +1,270 @@ +/* For any secure connection - it is (at least) essential for the + the client to verify that it is talking with the server it + thinks it is talking to. And not some (invisible) man in the middle. + + See https://en.wikipedia.org/wiki/Man-in-the-middle_attack, + https://www.ai.rug.nl/mas/finishedprojects/2011/TLS/hermsencomputerservices.nl/mas/mitm.html or + https://medium.com/@munteanu210/ssl-certificates-vs-man-in-the-middle-attacks-3fb7846fa5db + for some background on this. + + Unfortunately this means that one needs to hardcode a server + public key, certificate or some cryptographically strong hash + thereoff into the code, to verify that you are indeed talking to + the right server. This is sometimes somewhat impractical. Especially + if you do not know the server in advance; or if your code needs to be + stable ovr very long times - during which the server may change. + + However completely dispensing with any checks (See the WifiClientInSecure + example) is also not a good idea either. + + This example gives you some middle ground; "Trust on First Use" -- + TOFU - see https://developer.mozilla.org/en-US/docs/Glossary/TOFU or + https://en.wikipedia.org/wiki/Trust_on_first_use). + + In this scheme; we start the very first time without any security checks + but once we have our first connection; we store the public crytpographic + details (or a proxy, such as a sha256 of this). And then we use this for + any subsequent connections. + + The assumption here is that we do our very first connection in a somewhat + trusted network environment; where the chance of a man in the middle is + very low; or one where the person doing the first run can check the + details manually. + + So this is not quite as good as building a CA certificate into your + code (as per the WifiClientSecure example). But not as bad as something + with no trust management at all. + + To make it possible for the enduser to 'reset' this trust; the + startup sequence checks if a certain GPIO is low (assumed to be wired + to some physical button or jumper on the PCB). And we only allow + the TOFU to be configured when this pin is LOW. +*/ +#ifndef WIFI_NETWORK +#define WIFI_NETWORK "Your Wifi SSID" +#endif + +#ifndef WIFI_PASSWD +#define WIFI_PASSWD "your-secret-wifi-password" +#endif + +const char *ssid = WIFI_NETWORK; // your network SSID (name of wifi network) +const char *password = WIFI_PASSWD; // your network password +const char *server = "www.howsmyssl.com"; // Server to test with. + +const int TOFU_RESET_BUTTON = 35; /* Trust reset button wired between GPIO 35 and GND (pulldown) */ + +#include +#include +#include + +/* Set aside some persistent memory (i.e. memory that is preserved on reboots and + power cycling; and will generally survive software updates as well. +*/ +EEPROMClass TOFU("tofu0"); + +// Utility function; checks if a given buffer is entirely +// with with 0 bytes over its full length. Returns 0 on +// success; a non zero value on fail. +// +static int memcmpzero(unsigned char *ptr, size_t len) { + while (len--) { + if (0xff != *ptr++) { + return -1; + } + } + return 0; +}; + +static void printSHA256(unsigned char *ptr) { + for (int i = 0; i < 32; i++) { + Serial.printf("%s%02x", i ? ":" : "", ptr[i]); + } + Serial.println(""); +}; + +NetworkClientSecure client; + +bool get_tofu(); +bool doTOFU_Protected_Connection(uint8_t *fingerprint_tofu); + +void setup() { + bool tofu_reset = false; + //Initialize serial and wait for port to open: + Serial.begin(115200); + delay(100); + + if (!TOFU.begin(32)) { + Serial.println("Could not initialsize the EEPROM"); + return; + } + uint8_t fingerprint_tofu[32]; + + // reset the trust if the tofu reset button is pressed. + // + pinMode(TOFU_RESET_BUTTON, INPUT_PULLUP); + if (digitalRead(TOFU_RESET_BUTTON) == LOW) { + Serial.println("The TOFU reset button is pressed."); + tofu_reset = true; + } + /* if the button is not pressed; see if we can get the TOFU + fingerprint from the EEPROM. + */ + else if (32 != TOFU.readBytes(0, fingerprint_tofu, 32)) { + Serial.println("Failed to get the fingerprint from memory."); + tofu_reset = true; + } + /* And check that the EEPROM value is not all 0's; in which + case we also need to do a TOFU. + */ + else if (!memcmpzero(fingerprint_tofu, 32)) { + Serial.println("TOFU fingerprint in memory all zero."); + tofu_reset = true; + }; + if (!tofu_reset) { + Serial.print("TOFU pegged to fingerprint: SHA256="); + printSHA256(fingerprint_tofu); + Serial.print("Note: You can check this fingerprint by going to the URL\n" + " and then click on the lock icon.\n"); + }; + + // attempt to connect to Wifi network: + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + if (tofu_reset) { + Serial.println("Resetting trust fingerprint."); + if (!get_tofu()) { + Serial.println("Trust reset failed. Giving up"); + return; + } + Serial.println("(New) Trust of First used configured. Rebooting in 3 seconds"); + delay(3 * 1000); + ESP.restart(); + }; + + Serial.println("Trying to connect to a server; using TOFU details from the eeprom"); + + if (doTOFU_Protected_Connection(fingerprint_tofu)) { + Serial.println("ALL OK"); + } +} + +bool get_tofu() { + Serial.println("\nStarting our insecure connection to server..."); + client.setInsecure(); //skip verification + + if (!client.connect(server, 443)) { + Serial.println("Connection failed!"); + client.stop(); + return false; + }; + + Serial.println("Connected to server. Extracting trust data."); + + // Now extract the data of the certificate and show it to + // the user over the serial connection for optional + // verification. + const mbedtls_x509_crt *peer = client.getPeerCertificate(); + char buf[1024]; + int l = mbedtls_x509_crt_info(buf, sizeof(buf), "", peer); + if (l <= 0) { + Serial.println("Peer conversion to printable buffer failed"); + client.stop(); + return false; + }; + Serial.println(); + Serial.println(buf); + + // Extract the fingerprint - and store this in our EEPROM + // to be used for future validation. + + uint8_t fingerprint_remote[32]; + if (!client.getFingerprintSHA256(fingerprint_remote)) { + Serial.println("Failed to get the fingerprint"); + client.stop(); + return false; + } + if ((32 != TOFU.writeBytes(0, fingerprint_remote, 32)) || (!TOFU.commit())) { + Serial.println("Could not write the fingerprint to the EEPROM"); + client.stop(); + return false; + }; + TOFU.end(); + client.stop(); + + Serial.print("TOFU pegged to fingerprint: SHA256="); + printSHA256(fingerprint_remote); + + return true; +}; + +bool doTOFU_Protected_Connection(uint8_t *fingerprint_tofu) { + + // As we're not using a (CA) certificate to check the + // connection; but the hash of the peer - we need to initially + // allow the connection to be set up without the CA check. + client.setInsecure(); //skip verification + + if (!client.connect(server, 443)) { + Serial.println("Connection failed!"); + client.stop(); + return false; + }; + + // Now that we're connected - we can check that we have + // end to end trust - by comparing the fingerprint we (now) + // see (of the server certificate) to the one we have stored + // in our EEPROM as part of an earlier trust-on-first use. + uint8_t fingerprint_remote[32]; + if (!client.getFingerprintSHA256(fingerprint_remote)) { + Serial.println("Failed to get the fingerprint of the server"); + client.stop(); + return false; + } + if (memcmp(fingerprint_remote, fingerprint_tofu, 32)) { + Serial.println("TOFU fingerprint not the same as the one from the server."); + Serial.print("TOFU : SHA256="); + printSHA256(fingerprint_tofu); + Serial.print("Remote: SHA256="); + printSHA256(fingerprint_remote); + Serial.println(" : NOT identical -- Aborting!"); + client.stop(); + return false; + }; + + Serial.println("All well - you are talking to the same server as\n" + "when you set up TOFU. So we can now do a GET.\n\n"); + + client.println("GET /a/check HTTP/1.0"); + client.print("Host: "); + client.println(server); + client.println("Connection: close"); + client.println(); + + bool inhdr = true; + while (client.connected()) { + String line = client.readStringUntil('\n'); + Serial.println(line); + if (inhdr && line == "\r") { + inhdr = false; + Serial.println("-- headers received. Payload follows\n\n"); + } + } + Serial.println("\n\n-- Payload ended."); + client.stop(); + return true; +} + +void loop() {} diff --git a/lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json b/lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json new file mode 100644 index 0000000..d8b3664 --- /dev/null +++ b/lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json @@ -0,0 +1,5 @@ +{ + "targets": { + "esp32h2": false + } +} diff --git a/lib/NetworkClientSecure/keywords.txt b/lib/NetworkClientSecure/keywords.txt new file mode 100644 index 0000000..7b62f17 --- /dev/null +++ b/lib/NetworkClientSecure/keywords.txt @@ -0,0 +1,36 @@ +####################################### +# Syntax Coloring Map For WiFi +####################################### + +####################################### +# Library (KEYWORD3) +####################################### + +NetworkClientSecure KEYWORD3 + +####################################### +# Datatypes (KEYWORD1) +####################################### + +NetworkClientSecure KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +connect KEYWORD2 +write KEYWORD2 +available KEYWORD2 +config KEYWORD2 +read KEYWORD2 +flush KEYWORD2 +stop KEYWORD2 +connected KEYWORD2 +setCACert KEYWORD2 +setCertificate KEYWORD2 +setPrivateKey KEYWORD2 +setAlpnProtocols KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### diff --git a/lib/NetworkClientSecure/library.properties b/lib/NetworkClientSecure/library.properties new file mode 100644 index 0000000..dd4b6a1 --- /dev/null +++ b/lib/NetworkClientSecure/library.properties @@ -0,0 +1,9 @@ +name=NetworkClientSecure +version=2.0.0 +author=Evandro Luis Copercini +maintainer=Github Community +sentence=Enables secure network connection (local and Internet) using the ESP32 built-in WiFi. +paragraph=With this library you can make a TLS or SSL connection to a remote server. +category=Communication +url= +architectures=esp32 diff --git a/lib/NetworkClientSecure/src/NetworkClientSecure.cpp b/lib/NetworkClientSecure/src/NetworkClientSecure.cpp new file mode 100644 index 0000000..d5e3b63 --- /dev/null +++ b/lib/NetworkClientSecure/src/NetworkClientSecure.cpp @@ -0,0 +1,453 @@ +/* + NetworkClientSecure.cpp - Client Secure class for ESP32 + Copyright (c) 2016 Hristo Gochkov All right reserved. + Additions Copyright (C) 2017 Evandro Luis Copercini. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "NetworkClientSecure.h" +#include "esp_crt_bundle.h" +#include +#include +#include + +#undef connect +#undef write +#undef read + +NetworkClientSecure::NetworkClientSecure() { + _connected = false; + _timeout = 30000; // Same default as ssl_client + + sslclient.reset(new sslclient_context, [](struct sslclient_context *sslclient) { + stop_ssl_socket(sslclient); + delete sslclient; + }); + ssl_init(sslclient.get()); + sslclient->socket = -1; + sslclient->handshake_timeout = 120000; + _use_insecure = false; + _stillinPlainStart = false; + _ca_cert_free = false; + _cert_free = false; + _private_key_free = false; + _CA_cert = NULL; + _cert = NULL; + _private_key = NULL; + _pskIdent = NULL; + _psKey = NULL; + next = NULL; + _alpn_protos = NULL; + _use_ca_bundle = false; +} + +NetworkClientSecure::NetworkClientSecure(int sock) { + _connected = false; + _timeout = 30000; // Same default as ssl_client + _lastReadTimeout = 0; + _lastWriteTimeout = 0; + + sslclient.reset(new sslclient_context, [](struct sslclient_context *sslclient) { + stop_ssl_socket(sslclient); + delete sslclient; + }); + ssl_init(sslclient.get()); + sslclient->socket = sock; + sslclient->handshake_timeout = 120000; + + if (sock >= 0) { + _connected = true; + } + + _use_insecure = false; + _stillinPlainStart = false; + _ca_cert_free = false; + _cert_free = false; + _private_key_free = false; + _CA_cert = NULL; + _cert = NULL; + _private_key = NULL; + _pskIdent = NULL; + _psKey = NULL; + next = NULL; + _alpn_protos = NULL; +} + +NetworkClientSecure::~NetworkClientSecure() { + if (_ca_cert_free && _CA_cert) { + free((void *)_CA_cert); + } + if (_cert_free && _cert) { + free((void *)_cert); + } + if (_private_key_free && _private_key) { + free((void *)_private_key); + } +} + +void NetworkClientSecure::stop() { + stop_ssl_socket(sslclient.get()); + + _connected = false; + sslclient->peek_buf = -1; + _lastReadTimeout = 0; + _lastWriteTimeout = 0; +} + +int NetworkClientSecure::connect(IPAddress ip, uint16_t port) { + if (_pskIdent && _psKey) { + return connect(ip, port, _pskIdent, _psKey); + } + return connect(ip, port, _CA_cert, _cert, _private_key); +} + +int NetworkClientSecure::connect(IPAddress ip, uint16_t port, int32_t timeout) { + _timeout = timeout; + return connect(ip, port); +} + +int NetworkClientSecure::connect(const char *host, uint16_t port) { + if (_pskIdent && _psKey) { + return connect(host, port, _pskIdent, _psKey); + } + return connect(host, port, _CA_cert, _cert, _private_key); +} + +int NetworkClientSecure::connect(const char *host, uint16_t port, int32_t timeout) { + _timeout = timeout; + return connect(host, port); +} + +int NetworkClientSecure::connect(IPAddress ip, uint16_t port, const char *CA_cert, const char *cert, const char *private_key) { + return connect(ip, port, NULL, CA_cert, cert, private_key); +} + +int NetworkClientSecure::connect(const char *host, uint16_t port, const char *CA_cert, const char *cert, const char *private_key) { + IPAddress address; + if (!Network.hostByName(host, address)) { + return 0; + } + + return connect(address, port, host, CA_cert, cert, private_key); +} + +int NetworkClientSecure::connect(IPAddress ip, uint16_t port, const char *host, const char *CA_cert, const char *cert, const char *private_key) { + int ret = start_ssl_client(sslclient.get(), ip, port, host, _timeout, CA_cert, _use_ca_bundle, cert, private_key, NULL, NULL, _use_insecure, _alpn_protos); + + if (ret >= 0 && !_stillinPlainStart) { + ret = ssl_starttls_handshake(sslclient.get()); + } else { + log_i("Actual TLS start postponed."); + } + + sslclient->last_error = ret; + + if (ret < 0) { + log_e("start_ssl_client: connect failed: %d", ret); + stop(); + return 0; + } + _connected = true; + return 1; +} + +int NetworkClientSecure::startTLS() { + int ret = 1; + if (_stillinPlainStart) { + log_i("startTLS: starting TLS/SSL on this dplain connection"); + ret = ssl_starttls_handshake(sslclient.get()); + if (ret < 0) { + log_e("startTLS: %d", ret); + stop(); + return 0; + }; + _stillinPlainStart = false; + } else { + log_i("startTLS: ignoring StartTLS - as we should be secure already"); + } + return 1; +} + +int NetworkClientSecure::connect(IPAddress ip, uint16_t port, const char *pskIdent, const char *psKey) { + return connect(ip.toString().c_str(), port, pskIdent, psKey); +} + +int NetworkClientSecure::connect(const char *host, uint16_t port, const char *pskIdent, const char *psKey) { + log_v("start_ssl_client with PSK"); + + IPAddress address; + if (!Network.hostByName(host, address)) { + return 0; + } + + int ret = start_ssl_client(sslclient.get(), address, port, host, _timeout, NULL, false, NULL, NULL, pskIdent, psKey, _use_insecure, _alpn_protos); + sslclient->last_error = ret; + if (ret < 0) { + log_e("start_ssl_client: connect failed %d", ret); + stop(); + return 0; + } + _connected = true; + return 1; +} + +int NetworkClientSecure::peek() { + if (sslclient->peek_buf >= 0) { + return sslclient->peek_buf; + } + sslclient->peek_buf = timedRead(); + return sslclient->peek_buf; +} + +size_t NetworkClientSecure::write(uint8_t data) { + return write(&data, 1); +} + +int NetworkClientSecure::read() { + uint8_t data = -1; + int res = read(&data, 1); + return res < 0 ? res : data; +} + +size_t NetworkClientSecure::write(const uint8_t *buf, size_t size) { + if (!_connected) { + return 0; + } + + if (_stillinPlainStart) { + return send_net_data(sslclient.get(), buf, size); + } + + if (_lastWriteTimeout != _timeout) { + struct timeval timeout_tv; + timeout_tv.tv_sec = _timeout / 1000; + timeout_tv.tv_usec = (_timeout % 1000) * 1000; + if (setSocketOption(SO_SNDTIMEO, (char *)&timeout_tv, sizeof(struct timeval)) >= 0) { + _lastWriteTimeout = _timeout; + } + } + int res = send_ssl_data(sslclient.get(), buf, size); + if (res < 0) { + log_e("Closing connection on failed write"); + stop(); + res = 0; + } + return res; +} + +int NetworkClientSecure::read(uint8_t *buf, size_t size) { + if (_stillinPlainStart) { + return get_net_receive(sslclient.get(), buf, size); + } + + if (_lastReadTimeout != _timeout) { + if (fd() >= 0) { + struct timeval timeout_tv; + timeout_tv.tv_sec = _timeout / 1000; + timeout_tv.tv_usec = (_timeout % 1000) * 1000; + if (setSocketOption(SO_RCVTIMEO, (char *)&timeout_tv, sizeof(struct timeval)) >= 0) { + _lastReadTimeout = _timeout; + } + } + } + + int peeked = 0, res = -1; + int avail = available(); + if ((!buf && size) || avail <= 0) { + return -1; + } + if (!size) { + return 0; + } + if (sslclient->peek_buf >= 0) { + buf[0] = sslclient->peek_buf; + sslclient->peek_buf = -1; + size--; + avail--; + if (!size || !avail) { + return 1; + } + buf++; + peeked = 1; + } + res = get_ssl_receive(sslclient.get(), buf, size); + + if (res < 0) { + log_e("Closing connection on failed read"); + stop(); + return peeked ? peeked : res; + } + return res + peeked; +} + +int NetworkClientSecure::available() { + if (_stillinPlainStart) { + return peek_net_receive(sslclient.get(), 0); + } + + int peeked = (sslclient->peek_buf >= 0), res = -1; + if (!_connected) { + return peeked; + } + res = data_to_read(sslclient.get()); + + if (res < 0 && !_stillinPlainStart) { + log_e("Closing connection on failed available check"); + stop(); + return peeked ? peeked : res; + } + return res + peeked; +} + +uint8_t NetworkClientSecure::connected() { + uint8_t dummy = 0; + read(&dummy, 0); + + return _connected; +} + +void NetworkClientSecure::setInsecure() { + _CA_cert = NULL; + _cert = NULL; + _private_key = NULL; + _pskIdent = NULL; + _psKey = NULL; + _use_insecure = true; +} + +void NetworkClientSecure::setCACert(const char *rootCA) { + if (_ca_cert_free && _CA_cert) { + free((void *)_CA_cert); + _ca_cert_free = false; + } + _CA_cert = rootCA; + _use_insecure = false; +} + +void NetworkClientSecure::setCACertBundle(const uint8_t *bundle) { + if (bundle != NULL) { + esp_crt_bundle_set(bundle, sizeof(bundle)); + attach_ssl_certificate_bundle(sslclient.get(), true); + _use_ca_bundle = true; + } else { + esp_crt_bundle_detach(NULL); + attach_ssl_certificate_bundle(sslclient.get(), false); + _use_ca_bundle = false; + } +} + +void NetworkClientSecure::setCertificate(const char *client_ca) { + if (_cert_free && _cert) { + free((void *)_cert); + _cert_free = false; + } + _cert = client_ca; +} + +void NetworkClientSecure::setPrivateKey(const char *private_key) { + if (_private_key_free && _private_key) { + free((void *)_private_key); + _private_key_free = false; + } + _private_key = private_key; +} + +void NetworkClientSecure::setPreSharedKey(const char *pskIdent, const char *psKey) { + _pskIdent = pskIdent; + _psKey = psKey; +} + +bool NetworkClientSecure::verify(const char *fp, const char *domain_name) { + if (!sslclient) { + return false; + } + + return verify_ssl_fingerprint(sslclient.get(), fp, domain_name); +} + +char *NetworkClientSecure::_streamLoad(Stream &stream, size_t size) { + char *dest = (char *)malloc(size + 1); + if (!dest) { + return nullptr; + } + if (size != stream.readBytes(dest, size)) { + free(dest); + dest = nullptr; + return nullptr; + } + dest[size] = '\0'; + return dest; +} + +bool NetworkClientSecure::loadCACert(Stream &stream, size_t size) { + if (_CA_cert != NULL) { + free(const_cast(_CA_cert)); + } + char *dest = _streamLoad(stream, size); + bool ret = false; + if (dest) { + setCACert(dest); + _ca_cert_free = true; + ret = true; + } + return ret; +} + +bool NetworkClientSecure::loadCertificate(Stream &stream, size_t size) { + if (_cert != NULL) { + free(const_cast(_cert)); + } + char *dest = _streamLoad(stream, size); + bool ret = false; + if (dest) { + setCertificate(dest); + _cert_free = true; + ret = true; + } + return ret; +} + +bool NetworkClientSecure::loadPrivateKey(Stream &stream, size_t size) { + if (_private_key != NULL) { + free(const_cast(_private_key)); + } + char *dest = _streamLoad(stream, size); + bool ret = false; + if (dest) { + setPrivateKey(dest); + _private_key_free = true; + ret = true; + } + return ret; +} + +int NetworkClientSecure::lastError(char *buf, const size_t size) { + int lastError = sslclient->last_error; + mbedtls_strerror(lastError, buf, size); + return lastError; +} + +void NetworkClientSecure::setHandshakeTimeout(unsigned long handshake_timeout) { + sslclient->handshake_timeout = handshake_timeout * 1000; +} + +void NetworkClientSecure::setAlpnProtocols(const char **alpn_protos) { + _alpn_protos = alpn_protos; +} + +int NetworkClientSecure::fd() const { + return sslclient->socket; +} diff --git a/lib/NetworkClientSecure/src/NetworkClientSecure.h b/lib/NetworkClientSecure/src/NetworkClientSecure.h new file mode 100644 index 0000000..147acbe --- /dev/null +++ b/lib/NetworkClientSecure/src/NetworkClientSecure.h @@ -0,0 +1,131 @@ +/* + NetworkClientSecure.h - Base class that provides Client SSL to ESP32 + Copyright (c) 2011 Adrian McEwen. All right reserved. + Additions Copyright (C) 2017 Evandro Luis Copercini. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef NetworkClientSecure_h +#define NetworkClientSecure_h +#include "Arduino.h" +#include "IPAddress.h" +#include "Network.h" +#include "ssl_client.h" +#include + +class NetworkClientSecure : public NetworkClient { +protected: + std::shared_ptr sslclient; + + bool _use_insecure; + bool _stillinPlainStart; + bool _ca_cert_free; + bool _cert_free; + bool _private_key_free; + const char *_CA_cert; + const char *_cert; + const char *_private_key; + const char *_pskIdent; // identity for PSK cipher suites + const char *_psKey; // key in hex for PSK cipher suites + const char **_alpn_protos; + bool _use_ca_bundle; + +public: + NetworkClientSecure *next; + NetworkClientSecure(); + NetworkClientSecure(int socket); + ~NetworkClientSecure(); + int connect(IPAddress ip, uint16_t port); + int connect(IPAddress ip, uint16_t port, int32_t timeout); + int connect(const char *host, uint16_t port); + int connect(const char *host, uint16_t port, int32_t timeout); + int connect(IPAddress ip, uint16_t port, const char *rootCABuff, const char *cli_cert, const char *cli_key); + int connect(const char *host, uint16_t port, const char *rootCABuff, const char *cli_cert, const char *cli_key); + int connect(IPAddress ip, uint16_t port, const char *pskIdent, const char *psKey); + int connect(const char *host, uint16_t port, const char *pskIdent, const char *psKey); + int connect(IPAddress ip, uint16_t port, const char *host, const char *CA_cert, const char *cert, const char *private_key); + int peek(); + size_t write(uint8_t data); + size_t write(const uint8_t *buf, size_t size); + int available(); + int read(); + int read(uint8_t *buf, size_t size); + void flush() {} + void stop(); + uint8_t connected(); + int lastError(char *buf, const size_t size); + void setInsecure(); // Don't validate the chain, just accept whatever is given. VERY INSECURE! + void setPreSharedKey(const char *pskIdent, const char *psKey); // psKey in Hex + void setCACert(const char *rootCA); + void setCertificate(const char *client_ca); + void setPrivateKey(const char *private_key); + bool loadCACert(Stream &stream, size_t size); + void setCACertBundle(const uint8_t *bundle); + bool loadCertificate(Stream &stream, size_t size); + bool loadPrivateKey(Stream &stream, size_t size); + bool verify(const char *fingerprint, const char *domain_name); + void setHandshakeTimeout(unsigned long handshake_timeout); + void setAlpnProtocols(const char **alpn_protos); + + // Certain protocols start in plain-text; and then have the client + // give some STARTSSL command to `upgrade' the connection to TLS + // or SSL. Setting PlainStart to true (the default is false) enables + // this. It is up to the application code to then call 'startTLS()' + // at the right point to initialize the SSL or TLS upgrade. + + void setPlainStart() { + _stillinPlainStart = true; + }; + bool stillInPlainStart() { + return _stillinPlainStart; + }; + int startTLS(); + + const mbedtls_x509_crt *getPeerCertificate() { + return mbedtls_ssl_get_peer_cert(&sslclient->ssl_ctx); + }; + bool getFingerprintSHA256(uint8_t sha256_result[32]) { + return get_peer_fingerprint(sslclient.get(), sha256_result); + }; + int fd() const; + + operator bool() { + return connected(); + } + + bool operator==(const bool value) { + return bool() == value; + } + bool operator!=(const bool value) { + return bool() != value; + } + bool operator==(const NetworkClientSecure &); + bool operator!=(const NetworkClientSecure &rhs) { + return !this->operator==(rhs); + }; + + int socket() { + return sslclient->socket = -1; + } + +private: + char *_streamLoad(Stream &stream, size_t size); + + //friend class NetworkServer; + using Print::write; +}; + +#endif /* _WIFICLIENT_H_ */ diff --git a/lib/NetworkClientSecure/src/WiFiClientSecure.h b/lib/NetworkClientSecure/src/WiFiClientSecure.h new file mode 100644 index 0000000..b4d6962 --- /dev/null +++ b/lib/NetworkClientSecure/src/WiFiClientSecure.h @@ -0,0 +1,3 @@ +#pragma once +#include "NetworkClientSecure.h" +#define WiFiClientSecure NetworkClientSecure diff --git a/lib/NetworkClientSecure/src/ssl_client.cpp b/lib/NetworkClientSecure/src/ssl_client.cpp new file mode 100644 index 0000000..c8d5bbd --- /dev/null +++ b/lib/NetworkClientSecure/src/ssl_client.cpp @@ -0,0 +1,633 @@ +/* Provide SSL/TLS functions to ESP32 with Arduino IDE +* +* Adapted from the ssl_client1 example of mbedtls. +* +* Original Copyright (C) 2006-2015, ARM Limited, All Rights Reserved, Apache 2.0 License. +* Additions Copyright (C) 2017 Evandro Luis Copercini, Apache 2.0 License. +*/ + +#include "Arduino.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ssl_client.h" +#include "esp_crt_bundle.h" + +#if !defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) && !defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) +#warning \ + "Please call `idf.py menuconfig` then go to Component config -> mbedTLS -> TLS Key Exchange Methods -> Enable pre-shared-key ciphersuites and then check `Enable PSK based ciphersuite modes`. Save and Quit." +#else + +const char *pers = "esp32-tls"; + +static int _handle_error(int err, const char *function, int line) { + if (err == -30848) { + return err; + } +#ifdef MBEDTLS_ERROR_C + char error_buf[100]; + mbedtls_strerror(err, error_buf, 100); + log_e("[%s():%d]: (%d) %s", function, line, err, error_buf); +#else + log_e("[%s():%d]: code %d", function, line, err); +#endif + return err; +} + +#define handle_error(e) _handle_error(e, __FUNCTION__, __LINE__) + +void ssl_init(sslclient_context *ssl_client) { + // reset embedded pointers to zero + memset(ssl_client, 0, sizeof(sslclient_context)); + mbedtls_ssl_init(&ssl_client->ssl_ctx); + mbedtls_ssl_config_init(&ssl_client->ssl_conf); + mbedtls_ctr_drbg_init(&ssl_client->drbg_ctx); + ssl_client->peek_buf = -1; +} + +void attach_ssl_certificate_bundle(sslclient_context *ssl_client, bool att) { + if (att) { + ssl_client->bundle_attach_cb = &esp_crt_bundle_attach; + } else { + ssl_client->bundle_attach_cb = NULL; + } +} + +int start_ssl_client( + sslclient_context *ssl_client, const IPAddress &ip, uint32_t port, const char *hostname, int timeout, const char *rootCABuff, bool useRootCABundle, + const char *cli_cert, const char *cli_key, const char *pskIdent, const char *psKey, bool insecure, const char **alpn_protos +) { + int ret; + int enable = 1; + log_v("Free internal heap before TLS %u", ESP.getFreeHeap()); + + if (rootCABuff == NULL && pskIdent == NULL && psKey == NULL && !insecure && !useRootCABundle) { + return -1; + } + + int domain = ip.type() == IPv6 ? AF_INET6 : AF_INET; + log_v("Starting socket (domain %d)", domain); + ssl_client->socket = -1; + + ssl_client->socket = lwip_socket(domain, SOCK_STREAM, IPPROTO_TCP); + if (ssl_client->socket < 0) { + log_e("ERROR opening socket"); + return ssl_client->socket; + } + + fcntl(ssl_client->socket, F_SETFL, fcntl(ssl_client->socket, F_GETFL, 0) | O_NONBLOCK); + struct sockaddr_storage serv_addr = {}; + if (domain == AF_INET6) { + struct sockaddr_in6 *tmpaddr = (struct sockaddr_in6 *)&serv_addr; + tmpaddr->sin6_family = AF_INET6; + for (int index = 0; index < 16; index++) { + tmpaddr->sin6_addr.s6_addr[index] = ip[index]; + } + tmpaddr->sin6_port = htons(port); + tmpaddr->sin6_scope_id = ip.zone(); + } else { + struct sockaddr_in *tmpaddr = (struct sockaddr_in *)&serv_addr; + tmpaddr->sin_family = AF_INET; + tmpaddr->sin_addr.s_addr = ip; + tmpaddr->sin_port = htons(port); + } + + if (timeout <= 0) { + timeout = 30000; // Milli seconds. + } + + ssl_client->socket_timeout = timeout; + + fd_set fdset; + struct timeval tv; + FD_ZERO(&fdset); + FD_SET(ssl_client->socket, &fdset); + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout % 1000) * 1000; + + int res = lwip_connect(ssl_client->socket, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); + if (res < 0 && errno != EINPROGRESS) { + log_e("connect on fd %d, errno: %d, \"%s\"", ssl_client->socket, errno, strerror(errno)); + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + return -1; + } + + res = select(ssl_client->socket + 1, nullptr, &fdset, nullptr, timeout < 0 ? nullptr : &tv); + if (res < 0) { + log_e("select on fd %d, errno: %d, \"%s\"", ssl_client->socket, errno, strerror(errno)); + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + return -1; + } else if (res == 0) { + log_i("select returned due to timeout %d ms for fd %d", timeout, ssl_client->socket); + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + return -1; + } else { + int sockerr; + socklen_t len = (socklen_t)sizeof(int); + res = getsockopt(ssl_client->socket, SOL_SOCKET, SO_ERROR, &sockerr, &len); + + if (res < 0) { + log_e("getsockopt on fd %d, errno: %d, \"%s\"", ssl_client->socket, errno, strerror(errno)); + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + return -1; + } + + if (sockerr != 0) { + log_e("socket error on fd %d, errno: %d, \"%s\"", ssl_client->socket, sockerr, strerror(sockerr)); + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + return -1; + } + } + +#define ROE(x, msg) \ + { \ + if (((x) < 0)) { \ + log_e("LWIP Socket config of " msg " failed."); \ + return -1; \ + } \ + } + ROE(lwip_setsockopt(ssl_client->socket, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)), "SO_RCVTIMEO"); + ROE(lwip_setsockopt(ssl_client->socket, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)), "SO_SNDTIMEO"); + + ROE(lwip_setsockopt(ssl_client->socket, IPPROTO_TCP, TCP_NODELAY, &enable, sizeof(enable)), "TCP_NODELAY"); + ROE(lwip_setsockopt(ssl_client->socket, SOL_SOCKET, SO_KEEPALIVE, &enable, sizeof(enable)), "SO_KEEPALIVE"); + + log_v("Seeding the random number generator"); + mbedtls_entropy_init(&ssl_client->entropy_ctx); + + ret = mbedtls_ctr_drbg_seed(&ssl_client->drbg_ctx, mbedtls_entropy_func, &ssl_client->entropy_ctx, (const unsigned char *)pers, strlen(pers)); + if (ret < 0) { + return handle_error(ret); + } + + log_v("Setting up the SSL/TLS structure..."); + + if ((ret = mbedtls_ssl_config_defaults(&ssl_client->ssl_conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT)) != 0) { + return handle_error(ret); + } + + if (alpn_protos != NULL) { + log_v("Setting ALPN protocols"); + if ((ret = mbedtls_ssl_conf_alpn_protocols(&ssl_client->ssl_conf, alpn_protos)) != 0) { + return handle_error(ret); + } + } + + // MBEDTLS_SSL_VERIFY_REQUIRED if a CA certificate is defined on Arduino IDE and + // MBEDTLS_SSL_VERIFY_NONE if not. + + if (insecure) { + mbedtls_ssl_conf_authmode(&ssl_client->ssl_conf, MBEDTLS_SSL_VERIFY_NONE); + log_d("WARNING: Skipping SSL Verification. INSECURE!"); + } else if (rootCABuff != NULL) { + log_v("Loading CA cert"); + mbedtls_x509_crt_init(&ssl_client->ca_cert); + mbedtls_ssl_conf_authmode(&ssl_client->ssl_conf, MBEDTLS_SSL_VERIFY_REQUIRED); + ret = mbedtls_x509_crt_parse(&ssl_client->ca_cert, (const unsigned char *)rootCABuff, strlen(rootCABuff) + 1); + mbedtls_ssl_conf_ca_chain(&ssl_client->ssl_conf, &ssl_client->ca_cert, NULL); + //mbedtls_ssl_conf_verify(&ssl_client->ssl_ctx, my_verify, NULL ); + if (ret < 0) { + // free the ca_cert in the case parse failed, otherwise, the old ca_cert still in the heap memory, that lead to "out of memory" crash. + mbedtls_x509_crt_free(&ssl_client->ca_cert); + return handle_error(ret); + } + } else if (useRootCABundle) { + if (ssl_client->bundle_attach_cb != NULL) { + log_v("Attaching root CA cert bundle"); + ret = ssl_client->bundle_attach_cb(&ssl_client->ssl_conf); + if (ret < 0) { + return handle_error(ret); + } + } else { + log_e("useRootCABundle is set, but attach_ssl_certificate_bundle(ssl, true); was not called!"); + } + } else if (pskIdent != NULL && psKey != NULL) { + log_v("Setting up PSK"); + // convert PSK from hex to binary + if ((strlen(psKey) & 1) != 0 || strlen(psKey) > 2 * MBEDTLS_PSK_MAX_LEN) { + log_e("pre-shared key not valid hex or too long"); + return -1; + } + unsigned char psk[MBEDTLS_PSK_MAX_LEN]; + size_t psk_len = strlen(psKey) / 2; + for (int j = 0; j < strlen(psKey); j += 2) { + char c = psKey[j]; + if (c >= '0' && c <= '9') { + c -= '0'; + } else if (c >= 'A' && c <= 'F') { + c -= 'A' - 10; + } else if (c >= 'a' && c <= 'f') { + c -= 'a' - 10; + } else { + return -1; + } + psk[j / 2] = c << 4; + c = psKey[j + 1]; + if (c >= '0' && c <= '9') { + c -= '0'; + } else if (c >= 'A' && c <= 'F') { + c -= 'A' - 10; + } else if (c >= 'a' && c <= 'f') { + c -= 'a' - 10; + } else { + return -1; + } + psk[j / 2] |= c; + } + // set mbedtls config + ret = mbedtls_ssl_conf_psk(&ssl_client->ssl_conf, psk, psk_len, (const unsigned char *)pskIdent, strlen(pskIdent)); + if (ret != 0) { + log_e("mbedtls_ssl_conf_psk returned %d", ret); + return handle_error(ret); + } + } else { + return -1; + } + + // Note - this check for BOTH key and cert is relied on + // later during cleanup. + + if (!insecure && cli_cert != NULL && cli_key != NULL) { + mbedtls_x509_crt_init(&ssl_client->client_cert); + mbedtls_pk_init(&ssl_client->client_key); + + log_v("Loading CRT cert"); + + ret = mbedtls_x509_crt_parse(&ssl_client->client_cert, (const unsigned char *)cli_cert, strlen(cli_cert) + 1); + if (ret < 0) { + // free the client_cert in the case parse failed, otherwise, the old client_cert still in the heap memory, that lead to "out of memory" crash. + mbedtls_x509_crt_free(&ssl_client->client_cert); + return handle_error(ret); + } + + log_v("Loading private key"); + mbedtls_ctr_drbg_context ctr_drbg; + mbedtls_ctr_drbg_init(&ctr_drbg); + ret = mbedtls_pk_parse_key(&ssl_client->client_key, (const unsigned char *)cli_key, strlen(cli_key) + 1, NULL, 0, mbedtls_ctr_drbg_random, &ctr_drbg); + mbedtls_ctr_drbg_free(&ctr_drbg); + + if (ret != 0) { + mbedtls_x509_crt_free(&ssl_client->client_cert); // cert+key are free'd in pair + return handle_error(ret); + } + + mbedtls_ssl_conf_own_cert(&ssl_client->ssl_conf, &ssl_client->client_cert, &ssl_client->client_key); + } + + log_v("Setting hostname for TLS session..."); + + // Hostname set here should match CN in server certificate + if ((ret = mbedtls_ssl_set_hostname(&ssl_client->ssl_ctx, hostname != NULL ? hostname : ip.toString().c_str())) != 0) { + return handle_error(ret); + } + + mbedtls_ssl_conf_rng(&ssl_client->ssl_conf, mbedtls_ctr_drbg_random, &ssl_client->drbg_ctx); + + if ((ret = mbedtls_ssl_setup(&ssl_client->ssl_ctx, &ssl_client->ssl_conf)) != 0) { + return handle_error(ret); + } + + mbedtls_ssl_set_bio(&ssl_client->ssl_ctx, &ssl_client->socket, mbedtls_net_send, mbedtls_net_recv, NULL); + return ssl_client->socket; +} + +int ssl_starttls_handshake(sslclient_context *ssl_client) { + char buf[512]; + int ret, flags; + + log_v("Performing the SSL/TLS handshake..."); + unsigned long handshake_start_time = millis(); + while ((ret = mbedtls_ssl_handshake(&ssl_client->ssl_ctx)) != 0) { + if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) { + return handle_error(ret); + } + if ((millis() - handshake_start_time) > ssl_client->handshake_timeout) { + return -1; + } + vTaskDelay(2); //2 ticks + } + + if (ssl_client->client_cert.version) { + log_d("Protocol is %s Ciphersuite is %s", mbedtls_ssl_get_version(&ssl_client->ssl_ctx), mbedtls_ssl_get_ciphersuite(&ssl_client->ssl_ctx)); + if ((ret = mbedtls_ssl_get_record_expansion(&ssl_client->ssl_ctx)) >= 0) { + log_d("Record expansion is %d", ret); + } else { + log_w("Record expansion is unknown (compression)"); + } + } + + log_v("Verifying peer X.509 certificate..."); + + if ((flags = mbedtls_ssl_get_verify_result(&ssl_client->ssl_ctx)) != 0) { + memset(buf, 0, sizeof(buf)); + mbedtls_x509_crt_verify_info(buf, sizeof(buf), " ! ", flags); + log_e("Failed to verify peer certificate! verification info: %s", buf); + return handle_error(ret); + } else { + log_v("Certificate verified."); + } + + if (ssl_client->ca_cert.version) { + mbedtls_x509_crt_free(&ssl_client->ca_cert); + } + + // We know that we always have a client cert/key pair -- and we + // cannot look into the private client_key pk struct for newer + // versions of mbedtls. So rely on a public field of the cert + // and infer that there is a key too. + if (ssl_client->client_cert.version) { + mbedtls_x509_crt_free(&ssl_client->client_cert); + mbedtls_pk_free(&ssl_client->client_key); + } + + log_v("Free internal heap after TLS %u", ESP.getFreeHeap()); + + return ssl_client->socket; +} + +void stop_ssl_socket(sslclient_context *ssl_client) { + log_v("Cleaning SSL connection."); + + if (ssl_client->socket >= 0) { + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + } + + // avoid memory leak if ssl connection attempt failed + // if (ssl_client->ssl_conf.ca_chain != NULL) { + mbedtls_x509_crt_free(&ssl_client->ca_cert); + // } + // if (ssl_client->ssl_conf.key_cert != NULL) { + mbedtls_x509_crt_free(&ssl_client->client_cert); + mbedtls_pk_free(&ssl_client->client_key); + // } + mbedtls_ssl_free(&ssl_client->ssl_ctx); + mbedtls_ssl_config_free(&ssl_client->ssl_conf); + mbedtls_ctr_drbg_free(&ssl_client->drbg_ctx); + mbedtls_entropy_free(&ssl_client->entropy_ctx); + + // save only interesting fields + int handshake_timeout = ssl_client->handshake_timeout; + int socket_timeout = ssl_client->socket_timeout; + int last_err = ssl_client->last_error; + + // reset embedded pointers to zero + memset(ssl_client, 0, sizeof(sslclient_context)); + + ssl_client->handshake_timeout = handshake_timeout; + ssl_client->socket_timeout = socket_timeout; + ssl_client->last_error = last_err; + ssl_client->peek_buf = -1; +} + +int data_to_read(sslclient_context *ssl_client) { + int ret, res; + ret = mbedtls_ssl_read(&ssl_client->ssl_ctx, NULL, 0); + //log_e("RET: %i",ret); //for low level debug + res = mbedtls_ssl_get_bytes_avail(&ssl_client->ssl_ctx); + //log_e("RES: %i",res); //for low level debug + if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret < 0) { + return handle_error(ret); + } + + return res; +} + +int send_ssl_data(sslclient_context *ssl_client, const uint8_t *data, size_t len) { + unsigned long write_start_time = millis(); + int ret = -1; + + while ((ret = mbedtls_ssl_write(&ssl_client->ssl_ctx, data, len)) <= 0) { + if ((millis() - write_start_time) > ssl_client->socket_timeout) { + log_v("SSL write timed out."); + return -1; + } + + if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret < 0) { + log_v("Handling error %d", ret); //for low level debug + return handle_error(ret); + } + + //wait for space to become available + vTaskDelay(2); + } + + return ret; +} + +// Some protocols, such as SMTP, XMPP, MySQL/Posgress and various others +// do a 'in-line' upgrade from plaintext to SSL or TLS (usually with some +// sort of 'STARTTLS' textual command from client to sever). For this +// we need to have access to the 'raw' socket; i.e. without TLS/SSL state +// handling before the handshake starts; but after setting up the TLS +// connection. +// +int peek_net_receive(sslclient_context *ssl_client, int timeout) { +#if MBEDTLS_FIXED_LINKING_NET_POLL + int ret = mbedtls_net_poll((mbedtls_net_context *)ssl_client, MBEDTLS_NET_POLL_READ, timeout); + ret == MBEDTLS_NET_POLL_READ ? 1 : ret; +#else + // We should be using mbedtls_net_poll(); which is part of mbedtls and + // included in the EspressifSDK. Unfortunately - it did not make it into + // the statically linked library file. So, for now, we replace it by + // substancially similar code. + // + struct timeval tv = {.tv_sec = timeout / 1000, .tv_usec = (timeout % 1000) * 1000}; + + fd_set fdset; + FD_SET(ssl_client->socket, &fdset); + + int ret = select(ssl_client->socket + 1, &fdset, nullptr, nullptr, timeout < 0 ? nullptr : &tv); + if (ret < 0) { + log_e("select on read fd %d, errno: %d, \"%s\"", ssl_client->socket, errno, strerror(errno)); + lwip_close(ssl_client->socket); + ssl_client->socket = -1; + return -1; + }; +#endif + return ret; +}; + +int get_net_receive(sslclient_context *ssl_client, uint8_t *data, int length) { + int ret = peek_net_receive(ssl_client, ssl_client->socket_timeout); + if (ret > 0) { + ret = mbedtls_net_recv(ssl_client, data, length); + } + + // log_v( "%d bytes NET read of %d", ret, length); //for low level debug + return ret; +} + +int send_net_data(sslclient_context *ssl_client, const uint8_t *data, size_t len) { + int ret = mbedtls_net_send(ssl_client, data, len); + // log_v("Net sending %d btes->ret %d", len, ret); //for low level debug + return ret; +} + +int get_ssl_receive(sslclient_context *ssl_client, uint8_t *data, int length) { + int ret = mbedtls_ssl_read(&ssl_client->ssl_ctx, data, length); + // log_v( "%d bytes SSL read", ret); //for low level debug + return ret; +} + +static bool parseHexNibble(char pb, uint8_t *res) { + if (pb >= '0' && pb <= '9') { + *res = (uint8_t)(pb - '0'); + return true; + } else if (pb >= 'a' && pb <= 'f') { + *res = (uint8_t)(pb - 'a' + 10); + return true; + } else if (pb >= 'A' && pb <= 'F') { + *res = (uint8_t)(pb - 'A' + 10); + return true; + } + return false; +} + +// Compare a name from certificate and domain name, return true if they match +static bool matchName(const std::string &name, const std::string &domainName) { + size_t wildcardPos = name.find('*'); + if (wildcardPos == std::string::npos) { + // Not a wildcard, expect an exact match + return name == domainName; + } + + size_t firstDotPos = name.find('.'); + if (wildcardPos > firstDotPos) { + // Wildcard is not part of leftmost component of domain name + // Do not attempt to match (rfc6125 6.4.3.1) + return false; + } + if (wildcardPos != 0 || firstDotPos != 1) { + // Matching of wildcards such as baz*.example.com and b*z.example.com + // is optional. Maybe implement this in the future? + return false; + } + size_t domainNameFirstDotPos = domainName.find('.'); + if (domainNameFirstDotPos == std::string::npos) { + return false; + } + return domainName.substr(domainNameFirstDotPos) == name.substr(firstDotPos); +} + +// Verifies certificate provided by the peer to match specified SHA256 fingerprint +bool verify_ssl_fingerprint(sslclient_context *ssl_client, const char *fp, const char *domain_name) { + // Convert hex string to byte array + uint8_t fingerprint_local[32]; + int len = strlen(fp); + int pos = 0; + for (size_t i = 0; i < sizeof(fingerprint_local); ++i) { + while (pos < len && ((fp[pos] == ' ') || (fp[pos] == ':'))) { + ++pos; + } + if (pos > len - 2) { + log_d("pos:%d len:%d fingerprint too short", pos, len); + return false; + } + uint8_t high, low; + if (!parseHexNibble(fp[pos], &high) || !parseHexNibble(fp[pos + 1], &low)) { + log_d("pos:%d len:%d invalid hex sequence: %c%c", pos, len, fp[pos], fp[pos + 1]); + return false; + } + pos += 2; + fingerprint_local[i] = low | (high << 4); + } + + // Calculate certificate's SHA256 fingerprint + uint8_t fingerprint_remote[32]; + if (!get_peer_fingerprint(ssl_client, fingerprint_remote)) { + return false; + } + + // Check if fingerprints match + if (memcmp(fingerprint_local, fingerprint_remote, 32)) { + log_d("fingerprint doesn't match"); + return false; + } + + // Additionally check if certificate has domain name if provided + if (domain_name) { + return verify_ssl_dn(ssl_client, domain_name); + } else { + return true; + } +} + +bool get_peer_fingerprint(sslclient_context *ssl_client, uint8_t sha256[32]) { + if (!ssl_client) { + log_d("Invalid ssl_client pointer"); + return false; + }; + + const mbedtls_x509_crt *crt = mbedtls_ssl_get_peer_cert(&ssl_client->ssl_ctx); + if (!crt) { + log_d("Failed to get peer cert."); + return false; + }; + + mbedtls_sha256_context sha256_ctx; + mbedtls_sha256_init(&sha256_ctx); + mbedtls_sha256_starts(&sha256_ctx, false); + mbedtls_sha256_update(&sha256_ctx, crt->raw.p, crt->raw.len); + mbedtls_sha256_finish(&sha256_ctx, sha256); + + return true; +} + +// Checks if peer certificate has specified domain in CN or SANs +bool verify_ssl_dn(sslclient_context *ssl_client, const char *domain_name) { + log_d("domain name: '%s'", (domain_name) ? domain_name : "(null)"); + std::string domain_name_str(domain_name); + std::transform(domain_name_str.begin(), domain_name_str.end(), domain_name_str.begin(), ::tolower); + + // Get certificate provided by the peer + const mbedtls_x509_crt *crt = mbedtls_ssl_get_peer_cert(&ssl_client->ssl_ctx); + + // Check for domain name in SANs + const mbedtls_x509_sequence *san = &crt->subject_alt_names; + while (san != nullptr) { + std::string san_str((const char *)san->buf.p, san->buf.len); + std::transform(san_str.begin(), san_str.end(), san_str.begin(), ::tolower); + + if (matchName(san_str, domain_name_str)) { + return true; + } + + log_d("SAN '%s': no match", san_str.c_str()); + + // Fetch next SAN + san = san->next; + } + + // Check for domain name in CN + const mbedtls_asn1_named_data *common_name = &crt->subject; + while (common_name != nullptr) { + // While iterating through DN objects, check for CN object + if (!MBEDTLS_OID_CMP(MBEDTLS_OID_AT_CN, &common_name->oid)) { + std::string common_name_str((const char *)common_name->val.p, common_name->val.len); + + if (matchName(common_name_str, domain_name_str)) { + return true; + } + + log_d("CN '%s': not match", common_name_str.c_str()); + } + + // Fetch next DN object + common_name = common_name->next; + } + + return false; +} +#endif diff --git a/lib/NetworkClientSecure/src/ssl_client.h b/lib/NetworkClientSecure/src/ssl_client.h new file mode 100644 index 0000000..892adc8 --- /dev/null +++ b/lib/NetworkClientSecure/src/ssl_client.h @@ -0,0 +1,56 @@ +/* Provide SSL/TLS functions to ESP32 with Arduino IDE + * by Evandro Copercini - 2017 - Apache 2.0 License + */ + +#ifndef ARD_SSL_H +#define ARD_SSL_H +#include "mbedtls/platform.h" +#include "mbedtls/net_sockets.h" +#include "mbedtls/debug.h" +#include "mbedtls/ssl.h" +#include "mbedtls/entropy.h" +#include "mbedtls/ctr_drbg.h" +#include "mbedtls/error.h" + +typedef esp_err_t (*crt_bundle_attach_cb)(void *conf); + +typedef struct sslclient_context { + int socket; + mbedtls_ssl_context ssl_ctx; + mbedtls_ssl_config ssl_conf; + + mbedtls_ctr_drbg_context drbg_ctx; + mbedtls_entropy_context entropy_ctx; + + mbedtls_x509_crt ca_cert; + mbedtls_x509_crt client_cert; + mbedtls_pk_context client_key; + + crt_bundle_attach_cb bundle_attach_cb; + + unsigned long socket_timeout; + unsigned long handshake_timeout; + + int last_error; + int peek_buf; + +} sslclient_context; + +void ssl_init(sslclient_context *ssl_client); +int start_ssl_client( + sslclient_context *ssl_client, const IPAddress &ip, uint32_t port, const char *hostname, int timeout, const char *rootCABuff, bool useRootCABundle, + const char *cli_cert, const char *cli_key, const char *pskIdent, const char *psKey, bool insecure, const char **alpn_protos +); +void attach_ssl_certificate_bundle(sslclient_context *ssl_client, bool att); +int ssl_starttls_handshake(sslclient_context *ssl_client); +void stop_ssl_socket(sslclient_context *ssl_client); +int data_to_read(sslclient_context *ssl_client); +int send_ssl_data(sslclient_context *ssl_client, const uint8_t *data, size_t len); +int get_ssl_receive(sslclient_context *ssl_client, uint8_t *data, int length); +int send_net_data(sslclient_context *ssl_client, const uint8_t *data, size_t len); +int get_net_receive(sslclient_context *ssl_client, uint8_t *data, int length); +int peek_net_receive(sslclient_context *ssl_client, int timeout); +bool verify_ssl_fingerprint(sslclient_context *ssl_client, const char *fp, const char *domain_name); +bool verify_ssl_dn(sslclient_context *ssl_client, const char *domain_name); +bool get_peer_fingerprint(sslclient_context *ssl_client, uint8_t sha256[32]); +#endif diff --git a/lib/esp-nimble-cpp/.github/workflows/build.yml b/lib/esp-nimble-cpp/.github/workflows/build.yml new file mode 100644 index 0000000..f256daa --- /dev/null +++ b/lib/esp-nimble-cpp/.github/workflows/build.yml @@ -0,0 +1,65 @@ +name: Build + +on: + workflow_dispatch: # Start a workflow + pull_request: + push: + +jobs: + build-esp-idf-component: + name: Build with ESP-IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }} + runs-on: ubuntu-latest + strategy: + matrix: + # The version names here correspond to the versions of espressif/idf Docker image. + # See https://hub.docker.com/r/espressif/idf/tags and + # https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-docker-image.html + # for details. + idf_ver: ["release-v4.4", "release-v5.1"] + idf_target: ["esp32", "esp32s3", "esp32c2", "esp32c3", "esp32c6"] + example: + - Advanced/NimBLE_Client + - Advanced/NimBLE_Server + - basic/BLE_client + - basic/BLE_notify + - basic/BLE_scan + - basic/BLE_server + - basic/BLE_uart + - Bluetooth_5/NimBLE_extended_client + - Bluetooth_5/NimBLE_extended_server + - Bluetooth_5/NimBLE_multi_advertiser + exclude: + - idf_target: "esp32" + example: Bluetooth_5/NimBLE_extended_client + - idf_target: "esp32" + example: Bluetooth_5/NimBLE_extended_server + - idf_target: "esp32" + example: Bluetooth_5/NimBLE_multi_advertiser + - idf_ver: release-v4.4 + idf_target: "esp32c2" + - idf_ver: release-v4.4 + idf_target: "esp32c6" + + container: espressif/idf:${{ matrix.idf_ver }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + path: components/esp-nimble-cpp + - name: Build examples + env: + IDF_TARGET: ${{ matrix.idf_target }} + shell: bash + run: | + . ${IDF_PATH}/export.sh + cp -r components/esp-nimble-cpp/examples/* . + idf.py -C ${{ matrix.example }} -DEXTRA_COMPONENT_DIRS=$PWD/components build + + build_docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Doxygen Action + uses: mattnotmitt/doxygen-action@v1.9.5 + with: + working-directory: 'docs/' diff --git a/lib/esp-nimble-cpp/.gitignore b/lib/esp-nimble-cpp/.gitignore new file mode 100644 index 0000000..343d1f4 --- /dev/null +++ b/lib/esp-nimble-cpp/.gitignore @@ -0,0 +1 @@ +docs/doxydocs \ No newline at end of file diff --git a/lib/esp-nimble-cpp/CHANGELOG.md b/lib/esp-nimble-cpp/CHANGELOG.md new file mode 100644 index 0000000..f8b6e42 --- /dev/null +++ b/lib/esp-nimble-cpp/CHANGELOG.md @@ -0,0 +1,280 @@ +# Changelog + +All notable changes to this project will be documented in this file. +## [Unreleased] + +### Changed +- NimBLESecurity class removed. + +### Added +- `NimBLEDevice::setDeviceName` to change the device name after initialization. +- `NimBLEHIDDevice::batteryLevel` returns the HID device battery level characteristic. + +## [1.4.0] - 2022-07-31 + +### Fixed +- Fixed missing data from long notification values. +- Fixed NimbleCharacteristicCallbacks::onRead not being called when a non-long read command is received. +- Prevent a potential crash when retrieving characteristics from a service if the result was successful but no characteristics found. +- logs/typos. + +### Changed +- AD flags are no longer set in the advertisements of non-connectable beacons, freeing up 3 bytes of advertisement room. +- Save resources when retrieving descriptors if the characteristic handle is the same as the end handle (no descriptors). +- Subscribing to characteristic notifications/indications will now always use write with response, as per BLE specifications. +- `NimBLEClient::discoverAttributes` now returns a bool value to indicate success/failure. +- Scan result callbacks are no longer called when the scan response data is updated in order to reduce duplicates. + +### Added +- Preliminary support for non-esp devices, NRF51 and NRF52 devices supported with [n-able arduino core](https://github.com/h2zero/n-able-Arduino) +- Alias added for `NimBLEServerCallbacks::onMTUChange` to `onMtuChanged` in order to support porting code from original library. +- `NimBLEAttValue` Class added to reduce and control RAM footprint of characteristic/descriptor values and support conversions from Arduino Strings and many other data types. +- Bluetooth 5 extended advertising support for capable devices. CODED Phy, 2M Phy, extended advertising data, and multi-advertising are supported, periodic advertising will be implemented in the future. + +## [1.3.3] - 2022-02-15 + +### Changed +- If attribute retrieval fails with a "not found" try again with the 16 bit version if a 128 bit base uuid is used. + +### Fixed +- Memory leak when deleting client instance. +- IDf version check for data length extension. +- Memory leak when server services changed. +- Compiler warnings for non-esp32 devices. + +## [1.3.2] - 2022-01-15 + +### Fixed +- Initialize advertising complete callback in NimBLEAdvertising constructor. +- Clear client disconnect timer in constructor before initializing. +- Fix missing data when reading large values. +- Fix missing data in notifications when using a large MTU size and more than 270 bytes of data are sent. +- Workaround fix added for cases when the task notification value is not cleared, causing various functions that should block not to block. + +### Added +- `NimBLEClient::getLastError` : Gets the error code of the last function call that produces a return code from the stack. +- `NimBLECharacteristic::notify` : Overload method to send notifications/indications with custom values. +- Added conditional checks for ESP32 specific functions/values to support use of the library on non-esp32 devices. +- Added an alias to use the callback name from the original library `onMtuChanged`. +- `NimBLEClient::setDataLen` and `NimBLEServer::setDataLen`: Data length extension support (IDF version >= 4.3.2 only) +- Config option to set logging level for esp-nimble-cpp + +### Changed +- Critical section calls now use the NimBLE API instead of FreeRTOS directly. This removes the need for a `portMUX_TYPE` variable in the class definitions. +- Removed unnecessary variables in `NimBLEService` and changed the constructor no no longer accept `numHandles` and `inst_id` parameters. + +## [1.3.1] - 2021-08-04 + +### Fixed +- Corrected a compiler/linker error when an application or a library uses bluetooth classic due to the redefinition of `btInUse`. + +## [1.3.0] - 2021-08-02 + +### Added +- `NimBLECharacteristic::removeDescriptor`: Dynamically remove a descriptor from a characterisic. Takes effect after all connections are closed and sends a service changed indication. +- `NimBLEService::removeCharacteristic`: Dynamically remove a characteristic from a service. Takes effect after all connections are closed and sends a service changed indication +- `NimBLEServerCallbacks::onMTUChange`: This is callback is called when the MTU is updated after connection with a client. +- ESP32C3 support + +- Whitelist API: + - `NimBLEDevice::whiteListAdd`: Add a device to the whitelist. + - `NimBLEDevice::whiteListRemove`: Remove a device from the whitelist. + - `NimBLEDevice::onWhiteList`: Check if the device is on the whitelist. + - `NimBLEDevice::getWhiteListCount`: Gets the size of the whitelist + - `NimBLEDevice::getWhiteListAddress`: Get the address of a device on the whitelist by index value. + +- Bond management API: + - `NimBLEDevice::getNumBonds`: Gets the number of bonds stored. + - `NimBLEDevice::isBonded`: Checks if the device is bonded. + - `NimBLEDevice::deleteAllBonds`: Deletes all bonds. + - `NimBLEDevice::getBondedAddress`: Gets the address of a bonded device by the index value. + +- `NimBLECharacteristic::getCallbacks` to retrieve the current callback handler. +- Connection Information class: `NimBLEConnInfo`. +- `NimBLEScan::clearDuplicateCache`: This can be used to reset the cache of advertised devices so they will be immediately discovered again. + +### Changed +- FreeRTOS files have been removed as they are not used by the library. +- Services, characteristics and descriptors can now be created statically and added after. +- Excess logging and some asserts removed. +- Use ESP_LOGx macros to enable using local log level filtering. + +### Fixed +- `NimBLECharacteristicCallbacks::onSubscribe` Is now called after the connection is added to the vector. +- Corrected bonding failure when reinitializing the BLE stack. +- Writing to a characterisic with a std::string value now correctly writes values with null characters. +- Retrieving remote descriptors now uses the characterisic end handle correctly. +- Missing data in long writes to remote descriptors. +- Hanging on task notification when sending an indication from the characteristic callback. +- BLE controller memory could be released when using Arduino as a component. +- Complile errors with NimBLE release 1.3.0. + +## [1.2.0] - 2021-02-08 + +### Added +- `NimBLECharacteristic::getDescriptorByHandle`: Return the BLE Descriptor for the given handle. + +- `NimBLEDescriptor::getStringValue`: Get the value of this descriptor as a string. + +- `NimBLEServer::getServiceByHandle`: Get a service by its handle. + +- `NimBLEService::getCharacteristicByHandle`: Get a pointer to the characteristic object with the specified handle. + +- `NimBLEService::getCharacteristics`: Get the vector containing pointers to each characteristic associated with this service. +Overloads to get a vector containing pointers to all the characteristics in a service with the UUID. (supports multiple same UUID's in a service) + - `NimBLEService::getCharacteristics(const char *uuid)` + - `NimBLEService::getCharacteristics(const NimBLEUUID &uuid)` + +- `NimBLEAdvertisementData` New methods: + - `NimBLEAdvertisementData::addTxPower`: Adds transmission power to the advertisement. + - `NimBLEAdvertisementData::setPreferredParams`: Adds connection parameters to the advertisement. + - `NimBLEAdvertisementData::setURI`: Adds URI data to the advertisement. + +- `NimBLEAdvertising` New methods: + - `NimBLEAdvertising::setName`: Set the name advertised. + - `NimBLEAdvertising::setManufacturerData`: Adds manufacturer data to the advertisement. + - `NimBLEAdvertising::setURI`: Adds URI data to the advertisement. + - `NimBLEAdvertising::setServiceData`: Adds service data to the advertisement. + - `NimBLEAdvertising::addTxPower`: Adds transmission power to the advertisement. + - `NimBLEAdvertising::reset`: Stops the current advertising and resets the advertising data to the default values. + +- `NimBLEDevice::setScanFilterMode`: Set the controller duplicate filter mode for filtering scanned devices. + +- `NimBLEDevice::setScanDuplicateCacheSize`: Sets the number of advertisements filtered before the cache is reset. + +- `NimBLEScan::setMaxResults`: This allows for setting a maximum number of advertised devices stored in the results vector. + +- `NimBLEAdvertisedDevice` New data retrieval methods added: + - `haveAdvInterval/getAdvInterval`: checks if the interval is advertised / gets the advertisement interval value. + + - `haveConnParams/getMinInterval/getMaxInterval`: checks if the parameters are advertised / get min value / get max value. + + - `haveURI/getURI`: checks if a URI is advertised / gets the URI data. + + - `haveTargetAddress/getTargetAddressCount/getTargetAddress(index)`: checks if a target address is present / gets a count of the addresses targeted / gets the address of the target at index. + +### Changed +- `nimconfig.h` (Arduino) is now easier to use. + +- `NimBLEServer::getServiceByUUID` Now takes an extra parameter of instanceID to support multiple services with the same UUID. + +- `NimBLEService::getCharacteristic` Now takes an extra parameter of instanceID to support multiple characteristics with the same UUID. + +- `NimBLEAdvertising` Transmission power is no longer advertised by default and can be added to the advertisement by calling `NimBLEAdvertising::addTxPower` + +- `NimBLEAdvertising` Custom scan response data can now be used without custom advertisment. + +- `NimBLEScan` Now uses the controller duplicate filter. + +- `NimBLEAdvertisedDevice` Has been refactored to store the complete advertisement payload and no longer parses the data from each advertisement. +Instead the data will be parsed on-demand when the user application asks for specific data. + +### Fixed +- `NimBLEHIDDevice` Characteristics now use encryption, this resolves an issue with communicating with devices requiring encryption for HID devices. + + +## [1.1.0] - 2021-01-20 + +### Added +- `NimBLEDevice::setOwnAddrType` added to enable the use of random and random-resolvable addresses, by asukiaaa + +- New examples for securing and authenticating client/server connections, by mblasee. + +- `NimBLEAdvertising::SetMinPreferred` and `NimBLEAdvertising::SetMinPreferred` re-added. + +- Conditional checks added for command line config options in `nimconfig.h` to support custom configuration in platformio. + +- `NimBLEClient::setValue` Now takes an extra bool parameter `response` to enable the use of write with response (default = false). + +- `NimBLEClient::getCharacteristic(uint16_t handle)` Enabling the use of the characteristic handle to be used to find +the NimBLERemoteCharacteristic object. + +- `NimBLEHIDDevice` class added by wakwak-koba. + +- `NimBLEServerCallbacks::onDisconnect` overloaded callback added to provide a ble_gap_conn_desc parameter for the application +to obtain information about the disconnected client. + +- Conditional checks in `nimconfig.h` for command line defined macros to support platformio config settings. + +### Changed +- `NimBLEAdvertising::start` now returns a bool value to indicate success/failure. + +- Some asserts were removed in `NimBLEAdvertising::start` and replaced with better return code handling and logging. + +- If a host reset event occurs, scanning and advertising will now only be restarted if their previous duration was indefinite. + +- `NimBLERemoteCharacteristic::subscribe` and `NimBLERemoteCharacteristic::registerForNotify` will now set the callback +regardless of the existance of the CCCD and return true unless the descriptor write operation failed. + +- Advertising tx power level is now sent in the advertisement packet instead of scan response. + +- `NimBLEScan` When the scan ends the scan stopped flag is now set before calling the scan complete callback (if used) +this allows the starting of a new scan from the callback function. + +### Fixed +- Sometimes `NimBLEClient::connect` would hang on the task block if no event arrived to unblock. +A time limit has been added to timeout appropriately. + +- When getting descriptors for a characterisic the end handle of the service was used as a proxy for the characteristic end +handle. This would be rejected by some devices and has been changed to use the next characteristic handle as the end when possible. + +- An exception could occur when deleting a client instance if a notification arrived while the attribute vectors were being +deleted. A flag has been added to prevent this. + +- An exception could occur after a host reset event when the host re-synced if the tasks that were stopped during the event did +not finish processing. A yield has been added after re-syncing to allow tasks to finish before proceeding. + +- Occasionally the controller would fail to send a disconnected event causing the client to indicate it is connected +and would be unable to reconnect. A timer has been added to reset the host/controller if it expires. + +- Occasionally the call to start scanning would get stuck in a loop on BLE_HS_EBUSY, this loop has been removed. + +- 16bit and 32bit UUID's in some cases were not discovered or compared correctly if the device +advertised them as 16/32bit but resolved them to 128bits. Both are now checked. + +- `FreeRTOS` compile errors resolved in latest Ardruino core and IDF v3.3. + +- Multiple instances of `time()` called inside critical sections caused sporadic crashes, these have been moved out of critical regions. + +- Advertisement type now correctly set when using non-connectable (advertiser only) mode. + +- Advertising payload length correction, now accounts for appearance. + +- (Arduino) Ensure controller mode is set to BLE Only. + + +## [1.0.2] - 2020-09-13 + +### Changed + +- `NimBLEAdvertising::start` Now takes 2 optional parameters, the first is the duration to advertise for (in seconds), the second is a +callback that is invoked when advertsing ends and takes a pointer to a `NimBLEAdvertising` object (similar to the `NimBLEScan::start` API). + +- (Arduino) Maximum BLE connections can now be altered by only changing the value of `CONFIG_BT_NIMBLE_MAX_CONNECTIONS` in `nimconfig.h`. +Any changes to the controller max connection settings in `sdkconfig.h` will now have no effect when using this library. + +- (Arduino) Revert the previous change to fix the advertising start delay. Instead a replacement fix that routes all BLE controller commands from +a task running on core 0 (same as the controller) has been implemented. This improves response times and reliability for all BLE functions. + + +## [1.0.1] - 2020-09-02 + +### Added + +- Empty `NimBLEAddress` constructor: `NimBLEAddress()` produces an address of 00:00:00:00:00:00 type 0. +- Documentation of the difference of NimBLEAddress::getNative vs the original bluedroid library. + +### Changed + +- notify_callback typedef is now defined as std::function to enable the use of std::bind to call a class member function. + +### Fixed + +- Fix advertising start delay when first called. + + +## [1.0.0] - 2020-08-22 + +First stable release. + +All the original library functionality is complete and many extras added with full documentation. diff --git a/lib/esp-nimble-cpp/CMakeLists.txt b/lib/esp-nimble-cpp/CMakeLists.txt new file mode 100644 index 0000000..fb51c10 --- /dev/null +++ b/lib/esp-nimble-cpp/CMakeLists.txt @@ -0,0 +1,65 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +idf_build_get_property(__hack_component_targets __COMPONENT_TARGETS) + +if("esp-nimble-component" IN_LIST BUILD_COMPONENTS OR "__esp-nimble-component" IN_LIST __hack_component_targets) + list(APPEND ESP_NIMBLE_PRIV_REQUIRES + esp-nimble-component + ) +elseif("nimble" IN_LIST BUILD_COMPONENTS OR "__nimble" IN_LIST __hack_component_targets) + list(APPEND ESP_NIMBLE_PRIV_REQUIRES + nimble + ) +endif() + +if("arduino" IN_LIST BUILD_COMPONENTS OR __hack_component_targets MATCHES "__idf_arduino") + list(APPEND ESP_NIMBLE_PRIV_REQUIRES + arduino + ) +elseif("framework-arduinoespressif32" IN_LIST BUILD_COMPONENTS OR __hack_component_targets MATCHES "___idf_framework-arduinoespressif32") + list(APPEND ESP_NIMBLE_PRIV_REQUIRES + framework-arduinoespressif32 + ) +endif() + +idf_component_register( + REQUIRED_IDF_TARGETS + "esp32" + "esp32s3" + "esp32c2" + "esp32c3" + "esp32c6" + INCLUDE_DIRS + "src" + SRCS + "src/NimBLE2904.cpp" + "src/NimBLEAddress.cpp" + "src/NimBLEAdvertisedDevice.cpp" + "src/NimBLEAdvertising.cpp" + "src/NimBLEBeacon.cpp" + "src/NimBLECharacteristic.cpp" + "src/NimBLEClient.cpp" + "src/NimBLEDescriptor.cpp" + "src/NimBLEDevice.cpp" + "src/NimBLEEddystoneTLM.cpp" + "src/NimBLEEddystoneURL.cpp" + "src/NimBLEExtAdvertising.cpp" + "src/NimBLEHIDDevice.cpp" + "src/NimBLERemoteCharacteristic.cpp" + "src/NimBLERemoteDescriptor.cpp" + "src/NimBLERemoteService.cpp" + "src/NimBLEScan.cpp" + "src/NimBLEServer.cpp" + "src/NimBLEService.cpp" + "src/NimBLEUtils.cpp" + "src/NimBLEUUID.cpp" + REQUIRES + bt + nvs_flash + driver + PRIV_REQUIRES + ${ESP_NIMBLE_PRIV_REQUIRES} +) + diff --git a/lib/esp-nimble-cpp/CMakeLists.txt_idf3 b/lib/esp-nimble-cpp/CMakeLists.txt_idf3 new file mode 100644 index 0000000..c548f90 --- /dev/null +++ b/lib/esp-nimble-cpp/CMakeLists.txt_idf3 @@ -0,0 +1,56 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +set(SUPPORTED_TARGETS esp32) + +set(COMPONENT_SRCS + "src/NimBLE2904.cpp" + "src/NimBLEAddress.cpp" + "src/NimBLEAdvertisedDevice.cpp" + "src/NimBLEAdvertising.cpp" + "src/NimBLEBeacon.cpp" + "src/NimBLECharacteristic.cpp" + "src/NimBLEClient.cpp" + "src/NimBLEDescriptor.cpp" + "src/NimBLEDevice.cpp" + "src/NimBLEEddystoneTLM.cpp" + "src/NimBLEEddystoneURL.cpp" + "src/NimBLEHIDDevice.cpp" + "src/NimBLERemoteCharacteristic.cpp" + "src/NimBLERemoteDescriptor.cpp" + "src/NimBLERemoteService.cpp" + "src/NimBLEScan.cpp" + "src/NimBLESecurity.cpp" + "src/NimBLEServer.cpp" + "src/NimBLEService.cpp" + "src/NimBLEUtils.cpp" + "src/NimBLEUUID.cpp" +) + +set(COMPONENT_ADD_INCLUDEDIRS + src +) + +set(COMPONENT_PRIV_REQUIRES + nvs_flash + bt +) + +if(COMPONENTS MATCHES "esp-nimble-component") + list(APPEND COMPONENT_PRIV_REQUIRES + esp-nimble-component + ) +elseif(COMPONENTS MATCHES "nimble") + list(APPEND COMPONENT_PRIV_REQUIRES + nimble + ) +endif() + +if(COMPONENTS MATCHES "arduino") + list(APPEND COMPONENT_PRIV_REQUIRES + arduino + ) +endif() + +register_component() diff --git a/lib/esp-nimble-cpp/Kconfig b/lib/esp-nimble-cpp/Kconfig new file mode 100644 index 0000000..730f8cd --- /dev/null +++ b/lib/esp-nimble-cpp/Kconfig @@ -0,0 +1,72 @@ +menu "ESP-NimBLE-CPP configuration" + +choice NIMBLE_CPP_LOG_LEVEL + prompt "NimBLE CPP log verbosity" + default NIMBLE_CPP_LOG_LEVEL_NONE + help + Select NimBLE CPP log verbosity level. + + config NIMBLE_CPP_LOG_LEVEL_NONE + bool "No logs" + config NIMBLE_CPP_LOG_LEVEL_ERROR + bool "Error logs" + config NIMBLE_CPP_LOG_LEVEL_WARNING + bool "Warning logs" + config NIMBLE_CPP_LOG_LEVEL_INFO + bool "Info logs" + config NIMBLE_CPP_LOG_LEVEL_DEBUG + bool "Debug logs" +endchoice #NIMBLE_CPP_LOG_LEVEL + +config NIMBLE_CPP_LOG_LEVEL + int + default 0 if NIMBLE_CPP_LOG_LEVEL_NONE + default 1 if NIMBLE_CPP_LOG_LEVEL_ERROR + default 2 if NIMBLE_CPP_LOG_LEVEL_WARNING + default 3 if NIMBLE_CPP_LOG_LEVEL_INFO + default 4 if NIMBLE_CPP_LOG_LEVEL_DEBUG + +config NIMBLE_CPP_ENABLE_RETURN_CODE_TEXT + bool "Show NimBLE return codes as text in debug log." + default "n" + help + Enabling this option will display return code values as text + messages in the debug log. This will use approximately 8kB + of flash memory. + +config NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT + bool "Show NimBLE gap events as text in debug log." + default "n" + help + Enabling this option will display gap event codes as text + messages in the debug log. This will use approximately 1kB + of flash memory. + +config NIMBLE_CPP_ENABLE_ADVERTISEMENT_TYPE_TEXT + bool "Show advertisment types as text in debug log." + default "n" + help + Enabling this option will display advertisment types recieved + while scanning as text messages in the debug log. + This will use approximately 250 bytes of flash memory. + +config NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED + bool "Enable timestamps to be stored with attribute values." + default "n" + help + Enabling this option will store the timestamp when an attribute value is updated. + This allows for checking the last update time using getTimeStamp() + or getValue(time_t*). If disabled, the timestamp returned from these functions will be 0. + Disabling timestamps will reduce the memory used for each value. + +config NIMBLE_CPP_ATT_VALUE_INIT_LENGTH + int "Initial attribute value size (bytes) for empty values." + range 1 512 + default 20 + help + Sets the default allocation size (bytes) for each attribute if not specified + when the constructor is called. This is also the size used when a remote + characteristic or descriptor is constructed before a value is read/notifed. + Increasing this will reduce reallocations but increase memory footprint. + +endmenu diff --git a/lib/esp-nimble-cpp/LICENSE b/lib/esp-nimble-cpp/LICENSE new file mode 100644 index 0000000..ff16276 --- /dev/null +++ b/lib/esp-nimble-cpp/LICENSE @@ -0,0 +1,203 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {2020} {Ryan Powell} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + This product partly derives from esp32-snippets; Copyright 2017 Neil Kolban. \ No newline at end of file diff --git a/lib/esp-nimble-cpp/README.md b/lib/esp-nimble-cpp/README.md new file mode 100644 index 0000000..7f37eff --- /dev/null +++ b/lib/esp-nimble-cpp/README.md @@ -0,0 +1,70 @@ +[Latest release ![Release Version](https://img.shields.io/github/release/h2zero/esp-nimble-cpp.svg?style=plastic) +![Release Date](https://img.shields.io/github/release-date/h2zero/esp-nimble-cpp.svg?style=plastic)](https://github.com/h2zero/esp-nimble-cpp/releases/latest/) + +Need help? Have questions or suggestions? Join the [![Gitter](https://badges.gitter.im/NimBLE-Arduino/community.svg)](https://gitter.im/NimBLE-Arduino/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +
    + +# esp-nimble-cpp + +NimBLE CPP library for use with ESP32 that attempts to maintain compatibility with the [nkolban cpp_uitls BLE API](https://github.com/nkolban/esp32-snippets/tree/master/cpp_utils). + +**An Arduino version of this library, including NimBLE, can be [found here.](https://github.com/h2zero/NimBLE-Arduino)** + +This library **significantly** reduces resource usage and improves performance for ESP32 BLE applications as compared +with the bluedroid based library. The goal is to maintain, as much as reasonable, compatibility with the original +library but refactored to use the NimBLE stack. In addition, this library will be more actively developed and maintained +to provide improved capabilites and stability over the original. + +**Testing shows a nearly 50% reduction in flash use and approx. 100kB less ram consumed vs the original!** +*Your results may vary* +
    + +# What is NimBLE? +NimBLE is a completely open source Bluetooth Low Energy stack produced by [Apache](https://github.com/apache/mynewt-nimble). +It is more suited to resource constrained devices than bluedroid and has now been ported to the ESP32 by Espressif. +
    + +# Installation + +### ESP-IDF v4.0+ +Download as .zip and extract or clone into the components folder in your esp-idf project. + +Run menuconfig, go to `Component config->Bluetooth` enable Bluetooth and in `Bluetooth host` NimBLE. +Configure settings in `NimBLE Options`. +`#include "NimBLEDevice.h"` in main.cpp. +Call `NimBLEDevice::init("");` in `app_main`. +
    + +### ESP-IDF v3.2 & v3.3 +The NimBLE component does not come with these versions of IDF (now included in 3.3.2 and above). +A backport that works in these versions has been created and is [available here](https://github.com/h2zero/esp-nimble-component). +Download or clone that repo into your project/components folder and run menuconfig. +Configure settings in `main menu -> NimBLE Options`. + +`#include "NimBLEDevice.h"` in main.cpp. +Call `NimBLEDevice::init("");` in `app_main`. +
    + +# Using +This library is intended to be compatible with the original ESP32 BLE functions and types with minor changes. + +If you have not used the original Bluedroid library please refer to the [New user guide](docs/New_user_guide.md). + +If you are familiar with the original library, see: [The migration guide](docs/Migration_guide.md) for details about breaking changes and migration. + +Also see [Improvements_and_updates](docs/Improvements_and_updates.md) for information about non-breaking changes. + +[Full API documentation and class list can be found here.](https://h2zero.github.io/esp-nimble-cpp/) +
    + +## Using with Arduino as an IDF component and CMake +When using this library along with Arduino and compiling with *CMake* you must add `add_compile_definitions(ARDUINO_ARCH_ESP32=1)` +in your project/CMakeLists.txt after the line `include($ENV{IDF_PATH}/tools/cmake/project.cmake)` to prevent Arduino from releasing BLE memory. +
    + +# Acknowledgments +* [nkolban](https://github.com/nkolban) and [chegewara](https://github.com/chegewara) for the [original esp32 BLE library](https://github.com/nkolban/esp32-snippets/tree/master/cpp_utils) this project was derived from. +* [beegee-tokyo](https://github.com/beegee-tokyo) for contributing your time to test/debug and contributing the beacon examples. +* [Jeroen88](https://github.com/Jeroen88) for the amazing help debugging and improving the client code. +
    + diff --git a/lib/esp-nimble-cpp/component.mk b/lib/esp-nimble-cpp/component.mk new file mode 100644 index 0000000..5634368 --- /dev/null +++ b/lib/esp-nimble-cpp/component.mk @@ -0,0 +1,2 @@ +COMPONENT_ADD_INCLUDEDIRS := src +COMPONENT_SRCDIRS := src \ No newline at end of file diff --git a/lib/NimBLE-Arduino/docs/Bluetooth 5 features.md b/lib/esp-nimble-cpp/docs/Bluetooth 5 features.md similarity index 100% rename from lib/NimBLE-Arduino/docs/Bluetooth 5 features.md rename to lib/esp-nimble-cpp/docs/Bluetooth 5 features.md diff --git a/lib/esp-nimble-cpp/docs/Doxyfile b/lib/esp-nimble-cpp/docs/Doxyfile new file mode 100644 index 0000000..c67e49f --- /dev/null +++ b/lib/esp-nimble-cpp/docs/Doxyfile @@ -0,0 +1,2778 @@ +# Doxyfile 1.9.5 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = esp-nimble-cpp + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.4.1 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxydocs + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# numer of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = ../CHANGELOG.md \ + . \ + ../src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.doc \ + *.txt \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = ../src/nimconfig_rename.h + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = index.md + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. Default setting AUTO_LIGHT +# enables light output unless the user preference is dark output. Other options +# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to +# default to dark mode unless the user prefers light mode, and TOGGLE to let the +# user toggle between dark and light mode via a button. +# Possible values are: LIGHT Always generate light output., DARK Always generate +# dark output., AUTO_LIGHT Automatically set the mode according to the user +# preference, use light mode if no preference is set (the default)., AUTO_DARK +# Automatically set the mode according to the user preference, use dark mode if +# no preference is set. and TOGGLE Allow to user to switch between light and +# dark mode via a button.. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see https://docs.mathjax.org/en/v2.7-latest/tex.html +# #tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
    Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" + +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" + +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" + +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a +# graph for each documented class showing the direct and indirect inheritance +# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, +# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set +# to TEXT the direct and indirect inheritance relations will be shown as texts / +# links. +# Possible values are: NO, YES, TEXT and GRAPH. +# The default value is: YES. + +CLASS_GRAPH = TEXT + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. See also the chapter Grouping +# in the manual. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag UML_LOOK is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS +# tag is set to YES, doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# will not generate fields with class member information in the UML graphs. The +# class diagrams will look similar to the default class diagrams but using UML +# notation for the relationships. +# Possible values are: NO, YES and NONE. +# The default value is: NO. +# This tag requires that the tag UML_LOOK is set to YES. + +DOT_UML_DETAILS = NO + +# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters +# to display on a single line. If the actual line length exceeds this threshold +# significantly it will wrapped across multiple lines. Some heuristics are apply +# to avoid ugly line breaks. +# Minimum value: 0, maximum value: 1000, default value: 17. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_WRAP_THRESHOLD = 17 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for plantuml. + +PLANTUML_CFG_FILE = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# files that are used to generate the various graphs. +# +# Note: This setting is not only used for dot files but also for msc temporary +# files. +# The default value is: YES. + +DOT_CLEANUP = YES diff --git a/lib/esp-nimble-cpp/docs/Improvements_and_updates.md b/lib/esp-nimble-cpp/docs/Improvements_and_updates.md new file mode 100644 index 0000000..a7504d5 --- /dev/null +++ b/lib/esp-nimble-cpp/docs/Improvements_and_updates.md @@ -0,0 +1,149 @@ +# Improvements and updates + +Many improvements have been made to this library vs the original, this is a brief overview of the most significant changes. Refer to the [class documentation](https://h2zero.github.io/esp-nimble-cpp/annotated.html) for further information on class specifics. + +* [Server](#server) +* [Advertising](#advertising) +* [Client](#client) +* [General](#general) +
    + + +# Server + +`NimBLEService::NimBLEService::createCharacteristic` takes a 3rd parameter to specify the maximum data size that can be stored by the characteristic. This allows for limiting the RAM use of the characteristic in cases where small amounts of data are expected. +
    + +`NimBLECharacteristic::setValue(const T &s)` +`NimBLEDescriptor::setValue(const T &s)` + +Now use the `NimbleAttValue` class and templates to accommodate standard and custom types/values. + +**Example** +``` +struct my_struct { + uint8_t one; + uint16_t two; + uint32_t four; + uint64_t eight; + float flt; +} myStruct; + + myStruct.one = 1; + myStruct.two = 2; + myStruct.four = 4; + myStruct.eight = 8; + myStruct.flt = 1234.56; + + pCharacteristic->setValue(myStruct); + + // Arduino String support + String myString = "Hello"; + pCharacteristic->setValue(myString); + ``` +This will send the struct to the receiving client when read or a notification sent. + +`NimBLECharacteristic::getValue` now takes an optional timestamp parameter which will update it's value with the time the last value was received. In addition an overloaded template has been added to retrieve the value as a type specified by the user. + +**Example** +``` + time_t timestamp; + myStruct = pCharacteristic->getValue(×tamp); // timestamp optional +``` +
    + +**Advertising will automatically start when a client disconnects.** + +A new method `NimBLEServer::advertiseOnDisconnect(bool)` has been implemented to control this, true(default) = enabled. +
    + +`NimBLEServer::removeService` takes an additional parameter `bool deleteSvc` that if true will delete the service and all characteristics / descriptors belonging to it and invalidating any pointers to them. + +If false the service is only removed from visibility by clients. The pointers to the service and it's characteristics / descriptors will remain valid and the service can be re-added in the future using `NimBLEServer::addService`. +
    + + +# Advertising +`NimBLEAdvertising::start` + +Now takes 2 optional parameters, the first is the duration to advertise for (in milliseconds), the second is a callback that is invoked when advertising ends and takes a pointer to a `NimBLEAdvertising` object (similar to the `NimBLEScan::start` API). + +This provides an opportunity to update the advertisement data if desired. + +Also now returns a bool value to indicate if advertising successfully started or not. +
    + + +# Client + +`NimBLERemoteCharacteristic::readValue(time_t\*, bool)` +`NimBLERemoteDescriptor::readValue(bool)` + +Have been added as templates to allow reading the values as any specified type. + +**Example** +``` +struct my_struct{ + uint8_t one; + uint16_t two; + uint32_t four; + uint64_t eight; + float flt; +}myStruct; + + time_t timestamp; + myStruct = pRemoteCharacteristic->readValue(×tamp); // timestamp optional +``` +
    + +`NimBLERemoteCharacteristic::registerForNotify` +Has been removed. + +`NimBLERemoteCharacteristic::subscribe` and `NimBLERemoteCharacteristic::unsubscribe` have been implemented to replace it. + +The internally stored characteristic value is now updated when notification/indication is recieved. Making a callback no longer required to get the most recent value unless timing is important. Instead, the application can call `NimBLERemoteCharacteristic::getValue` to get the most recent value any time. +
    + +The `notify_callback` function is now defined as a `std::function` to take advantage of using `std::bind` to specify a class member function for the callback. + +Example: +``` +using namespace std::placeholders; +notify_callback callback = std::bind(&::, this, _1, _2, _3, _4); + +->subscribe(true, callback); +``` + +`NimBLERemoteCharacteristic::readValue` and `NimBLERemoteCharacteristic::getValue` take an optional timestamp parameter which will update it's value with +the time the last value was received. + +> NimBLEClient::getService +> NimBLERemoteService::getCharacteristic +> NimBLERemoteCharacteristic::getDescriptor + +These methods will now check the respective vectors for the attribute object and, if not found, will retrieve (only) +the specified attribute from the peripheral. + +These changes allow more control for the user to manage the resources used for the attributes. +
    + +`NimBLEClient::connect()` can now be called without an address or advertised device parameter. This will connect to the device with the address previously set when last connected or set with `NimBLEDevice::setPeerAddress()`. + + +# General +To reduce resource use all instances of `std::map` have been replaced with `std::vector`. + +Use of `FreeRTOS::Semaphore` has been removed as it was consuming too much ram, the related files have been left in place to accomodate application use. + +Operators `==`, `!=` and `std::string` have been added to `NimBLEAddress` and `NimBLEUUID` for easier comparison and logging. + +New constructor for `NimBLEUUID(uint32_t, uint16_t, uint16_t, uint64_t)` added to lower memory use vs string construction. See: [#21](https://github.com/h2zero/NimBLE-Arduino/pull/21). + +Security/pairing operations are now handled in the respective `NimBLEClientCallbacks` and `NimBLEServerCallbacks` classes, `NimBLESecurity`(deprecated) remains for backward compatibility. + +Configuration options have been added to add or remove debugging information, when disabled (default) significantly reduces binary size. +In ESP-IDF the options are in menuconfig: `Main menu -> ESP-NimBLE-cpp configuration`. +For Arduino the options must be commented / uncommented in nimconfig.h. + +Characteristics and descriptors now use the `NimBLEAttValue` class to store their data. This is a polymorphic container class capable of converting to/from many different types efficiently. See: [#286](https://github.com/h2zero/NimBLE-Arduino/pull/286) + diff --git a/lib/esp-nimble-cpp/docs/Migration_guide.md b/lib/esp-nimble-cpp/docs/Migration_guide.md new file mode 100644 index 0000000..d1fcee8 --- /dev/null +++ b/lib/esp-nimble-cpp/docs/Migration_guide.md @@ -0,0 +1,437 @@ +# Migrating from Bluedroid to NimBLE + +This guide describes the required changes to existing projects migrating from the original bluedroid API to NimBLE. + +**The changes listed here are only the required changes that must be made**, and a short overview of options for migrating existing applications. + +For more information on the improvements and additions please refer to the [class documentation](https://h2zero.github.io/NimBLE-Arduino/annotated.html) and [Improvements and updates](Improvements_and_updates.md) + +* [General Changes](#general-information) +* [Server](#server-api) + * [Services](#services) + * [Characteristics](#characteristics) + * [Characteristic Callbacks](#characteristic-callbacks) + * [Descriptors](#descriptors) + * [Descriptor Callbacks](#descriptor-callbacks) + * [Security](#server-security) +* [Advertising](#advertising-api) +* [Client](#client-api) + * [Remote Services](#remote-services) + * [Remote characteristics](#remote-characteristics) + * [Client Callbacks](#client-callbacks) + * [Security](#client-security) +* [Scanning](#scan-api) +* [General Security](#security-api) +* [Configuration](#arduino-configuration) +
    + + +## General Information + +### Header Files +All classes are accessible by including `NimBLEDevice.h` in your application, no further headers need to be included. + +(Mainly for Arduino) You may choose to include `NimBLELog.h` in your application if you want to use the `NIMBLE_LOGx` macros for debugging. These macros are used the same way as the `ESP_LOGx` macros. +
    + +### Class Names +Class names remain the same as the original with the addition of a "Nim" prefix. +For example `BLEDevice` is now `NimBLEDevice` and `BLEServer` is now `NimBLEServer` etc. + +For convenience definitions have been added to allow applications to use either name for all classes this means **no class names need to be changed in existing code** and makes migrating easier. +
    + +### BLE Addresses +`BLEAddress` (`NimBLEAddress`) When constructing an address the constructor now takes an *(optional)* `uint8_t type` parameter to specify the address type. Default is (0) Public static address. + +For example `BLEAddress addr(11:22:33:44:55:66, 1)` will create the address object with an address type of: 1 (Random). + +As this parameter is optional no changes to existing code are needed, it is mentioned here for information. + +`BLEAddress::getNative` (`NimBLEAddress::getNative`) returns a uint8_t pointer to the native address byte array. In this library the address bytes are stored in reverse order from the original library. This is due to the way the NimBLE stack expects addresses to be presented to it. All other functions such as `toString` are not affected as the endian change is made within them. +
    + + +## Server API +Creating a `BLEServer` instance is the same as original, no changes required. +For example `BLEDevice::createServer()` will work just as it did before. + +`BLEServerCallbacks` (`NimBLEServerCallbacks`) has new methods for handling security operations. +
    + +`BLEServerCallbacks::onConnect` (`NimBLEServerCallbacks::onConnect`) only has a single callback declaration which takes an additional (required) parameter `NimBLEConnInfo & connInfo`, which has methods to get information about the connected peer. +``` +void onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo)` +``` +
    + +`BLEServerCallbacks::onDisconnect` (`NimBLEServerCallbacks::onDisconnect`) only has a single callback declaration which takes 2 additional (required) parameters `NimBLEConnInfo & connInfo`, which provides information about the peer and `int reason`, which gives the reason code for disconnection. + +``` +void onDisconnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo, int reason)` +``` +
    + +`BLEServerCallbacks::onMtuChanged` (`NimBLEServerCallbacks::onMtuChanged`) takes the parameter `NimBLEConnInfo & connInfo` instead of `esp_ble_gatts_cb_param_t`, which has methods to get information about the connected peer. + +``` +onMTUChange(uint16_t MTU, NimBLEConnInfo& connInfo) +``` + +**Note:** All callback methods have default implementations which allows the application to implement only the methods applicable. +
    + + +### Services +Creating a `BLEService` (`NimBLEService`) instance is the same as original, no changes required. +For example `BLEServer::createService(SERVICE_UUID)` will work just as it did before. +
    + + +### Characteristics +`BLEService::createCharacteristic` (`NimBLEService::createCharacteristic`) is used the same way as originally except the properties parameter has changed. + +When creating a characteristic the properties are now set with `NIMBLE_PROPERTY::XXXX` instead of `BLECharacteristic::XXXX`. + +#### Originally +> BLECharacteristic::PROPERTY_READ | +BLECharacteristic::PROPERTY_WRITE + +#### Is Now +> NIMBLE_PROPERTY::READ | +NIMBLE_PROPERTY::WRITE +
    + +#### The full list of properties +> NIMBLE_PROPERTY::READ +NIMBLE_PROPERTY::READ_ENC +NIMBLE_PROPERTY::READ_AUTHEN +NIMBLE_PROPERTY::READ_AUTHOR +NIMBLE_PROPERTY::WRITE +NIMBLE_PROPERTY::WRITE_NR +NIMBLE_PROPERTY::WRITE_ENC +NIMBLE_PROPERTY::WRITE_AUTHEN +NIMBLE_PROPERTY::WRITE_AUTHOR +NIMBLE_PROPERTY::BROADCAST +NIMBLE_PROPERTY::NOTIFY +NIMBLE_PROPERTY::INDICATE + +
    + +**Example:** +``` +BLECharacteristic *pCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID, + BLECharacteristic::PROPERTY_READ | + BLECharacteristic::PROPERTY_WRITE + ); + +``` +Needs to be changed to: +``` +BLECharacteristic *pCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID, + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE + ); +``` +
    + + +#### Characteristic callbacks +`BLECharacteristicCallbacks` (`NimBLECharacteristicCallbacks`) has a new method `NimBLECharacteristicCallbacks::onSubscribe` which is called when a client subscribes to notifications/indications. + +`BLECharacteristicCallbacks::onRead` (`NimBLECharacteristicCallbacks::onRead`) only has a single callback declaration, which takes an additional (required) parameter of `NimBLEConnInfo& connInfo`, which provides connection information about the peer. + +`BLECharacteristicCallbacks::onWrite` (`NimBLECharacteristicCallbacks::onWrite`) only has a single callback declaration, which takes an additional (required) parameter of `NimBLEConnInfo& connInfo`, which provides connection information about the peer. + +`BLECharacteristicCallbacks::onStatus` (`NimBLECharacteristicCallbacks::onStatus`) has had the status parameter removed as it was unnecessary since the status code from the BLE stack was also provided. The status code for success is 0 for notifications and BLE_HS_EDONE for indications, any other value is an error. + +**Note:** All callback methods have default implementations which allows the application to implement only the methods applicable. +
    + +> BLECharacteristic::getData + +**Has been removed from the API.** +Originally this returned a `uint8_t*` to the internal data, which is volatile. +To prevent possibly throwing exceptions this has been removed and `NimBLECharacteristic::getValue` should be used +to get a copy of the data first which can then safely be accessed via pointer. + +**Example:** +``` +std::string value = pCharacteristic->getValue(); +uint8_t *pData = (uint8_t*)value.data(); +``` +Alternatively use the `getValue` template: +``` +my_struct_t myStruct = pChr->getValue(); +``` +
    + + +### Descriptors + +Descriptors are now created using the `NimBLECharacteristic::createDescriptor` method. + +BLE2902 or NimBLE2902 class has been removed. +NimBLE automatically creates the 0x2902 descriptor if a characteristic has a notification or indication property assigned to it. + +It was no longer useful to have a class for the 0x2902 descriptor as a new callback `NimBLECharacteristicCallbacks::onSubscribe` was added +to handle callback functionality and the client subscription status is handled internally. + +**Note:** Attempting to create a 0x2902 descriptor will trigger an assert to notify the error, +allowing the creation of it would cause a fault in the NimBLE stack. + +All other descriptors are now created just as characteristics are by using the `NimBLECharacteristic::createDescriptor` method (except 0x2904, see below). +Which are defined as: +``` +NimBLEDescriptor* createDescriptor(const char* uuid, + uint32_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = 100); + +NimBLEDescriptor* createDescriptor(NimBLEUUID uuid, + uint32_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = 100); +``` +##### Example +``` +pDescriptor = pCharacteristic->createDescriptor("ABCD", + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + NIMBLE_PROPERTY::WRITE_ENC, + 25); +``` +Would create a descriptor with the UUID 0xABCD, publicly readable but only writable if paired/bonded (encrypted) and has a max value length of 25 bytes. +
    + +For the 0x2904, there is a special class that is created when you call `createDescriptor("2904"). + +The pointer returned is of the base class `NimBLEDescriptor` but the call will create the derived class of `NimBLE2904` so you must cast the returned pointer to +`NimBLE2904` to access the specific class methods. + +##### Example +``` +p2904 = (NimBLE2904*)pCharacteristic->createDescriptor("2904"); +``` +
    + + +#### Descriptor callbacks + +> `BLEDescriptorCallbacks::onRead` (`NimBLEDescriptorCallbacks::onRead`) + `BLEDescriptorCallbacks::onwrite` (`NimBLEDescriptorCallbacks::onwrite`) + +The above descriptor callbacks take an additional (required) parameter `NimBLEConnInfo& connInfo`, which contains the connection information of the peer. +
    + + +### Server Security +Security is set on the characteristic or descriptor properties by applying one of the following: +> NIMBLE_PROPERTY::READ_ENC +NIMBLE_PROPERTY::READ_AUTHEN +NIMBLE_PROPERTY::READ_AUTHOR +NIMBLE_PROPERTY::WRITE_ENC +NIMBLE_PROPERTY::WRITE_AUTHEN +NIMBLE_PROPERTY::WRITE_AUTHOR + +
    + +When a peer wants to read or write a characteristic or descriptor with any of these properties applied it will trigger the pairing process. By default the "just-works" pairing will be performed automatically. + +This can be changed to use passkey authentication or numeric comparison. See [Security API](#security-api) for details. +
    + + +## Advertising API +Advertising works the same as the original API except: + +Calling `NimBLEAdvertising::setAdvertisementData` will entirely replace any data set with `NimBLEAdvertising::addServiceUUID`, or +`NimBLEAdvertising::setAppearance` or similar methods. You should set all the data you wish to advertise within the `NimBLEAdvertisementData` instead. +
    + +> BLEAdvertising::start (NimBLEAdvertising::start) + +Now takes 2 optional parameters, the first is the duration to advertise for (in milliseconds), the second is a callback that is invoked when advertising ends and takes a pointer to a `NimBLEAdvertising` object (similar to the `NimBLEScan::start` API). +This provides an opportunity to update the advertisement data if desired. +
    + + +## Client API + +Client instances are created just as before with `BLEDevice::createClient` (`NimBLEDevice::createClient`). + +Multiple client instances can be created, up to the maximum number of connections set in the config file (default: 3). To delete a client instance you must use `NimBLEDevice::deleteClient`. + +`BLEClient::connect`(`NimBLEClient::connect`) Has had it's parameters altered. +Defined as: +> NimBLEClient::connect(bool deleteServices = true); +> NimBLEClient::connect(NimBLEAdvertisedDevice\* device, bool deleteServices = true); +> NimBLEClient::connect(NimBLEAddress address, bool deleteServices = true); + +The type parameter has been removed and a new bool parameter has been added to indicate if the client should delete the attribute database previously retrieved (if applicable) for the peripheral, default value is true. + +If set to false the client will use the attribute database it retrieved from the peripheral when previously connected. + +This allows for faster connections and power saving if the devices dropped connection and are reconnecting. +
    + +> `BLEClient::getServices` (`NimBLEClient::getServices`) + +This method now takes an optional (bool) parameter to indicate if the services should be retrieved from the server (true) or the currently known database returned (false : default). +Also now returns a pointer to `std::vector` instead of `std::map`. +
    + +**Removed:** the automatic discovery of all peripheral attributes as they consumed time and resources for data the user may not be interested in. + +**Added:** `NimBLEClient::discoverAttributes` for the user to discover all the peripheral attributes to replace the the removed automatic functionality. +
    + + +### Remote Services +`BLERemoteService` (`NimBLERemoteService`) Methods remain mostly unchanged with the exceptions of: + +> BLERemoteService::getCharacteristicsByHandle + +This method has been removed. +
    + +> `BLERemoteService::getCharacteristics` (`NimBLERemoteService::getCharacteristics`) + +This method now takes an optional (bool) parameter to indicate if the characteristics should be retrieved from the server (true) or +the currently known database returned (false : default). +Also now returns a pointer to `std::vector` instead of `std::map`. +
    + + +### Remote Characteristics +`BLERemoteCharacteristic` (`NimBLERemoteCharacteristic`) + There have been a few changes to the methods in this class: + +> `BLERemoteCharacteristic::writeValue` (`NimBLERemoteCharacteristic::writeValue`) + +Now returns true or false to indicate success or failure so you can choose to disconnect or try again. +
    + +> `BLERemoteCharacteristic::registerForNotify` + +Has been removed. + +> `NimBLERemoteCharacteristic::subscribe` +> `NimBLERemoteCharacteristic::unsubscribe` + +Are the new methods added to replace it. +
    + +> `BLERemoteCharacteristic::readUInt8` (`NimBLERemoteCharacteristic::readUInt8`) +> `BLERemoteCharacteristic::readUInt16` (`NimBLERemoteCharacteristic::readUInt16`) +> `BLERemoteCharacteristic::readUInt32` (`NimBLERemoteCharacteristic::readUInt32`) +> `BLERemoteCharacteristic::readFloat` (`NimBLERemoteCharacteristic::readFloat`) + +Are **deprecated** a template: `NimBLERemoteCharacteristic::readValue(time_t\*, bool)` has been added to replace them. +
    + +> `BLERemoteCharacteristic::readRawData` + +**Has been removed from the API** +Originally it stored an unnecessary copy of the data and was returning a `uint8_t` pointer to volatile internal data. +The user application should use `NimBLERemoteCharacteristic::readValue` or `NimBLERemoteCharacteristic::getValue`. +To obtain a copy of the data, then cast the returned std::string to the type required such as: +``` +std::string value = pChr->readValue(); +uint8_t *data = (uint8_t*)value.data(); +``` +Alternatively use the `readValue` template: +``` +my_struct_t myStruct = pChr->readValue(); +``` +
    + +> `BLERemoteCharacteristic::getDescriptors` (`NimBLERemoteCharacteristic::getDescriptors`) + +This method now takes an optional (bool) parameter to indicate if the descriptors should be retrieved from the server (true) or +the currently known database returned (false : default). +Also now returns a pointer to `std::vector` instead of `std::map`. +
    + + +### Client callbacks + +> `BLEClientCallbacks::onDisconnect` (`NimBLEClientCallbacks::onDisconnect`) + +This now takes a second parameter `int reason` which provides the reason code for disconnection. +
    + + +### Client Security +The client will automatically initiate security when the peripheral responds that it's required. +The default configuration will use "just-works" pairing with no bonding, if you wish to enable bonding see below. +
    + + +## BLE Scan +The scan API is mostly unchanged from the original except for `NimBLEScan::start`, in which the duration parameter is now in milliseconds instead of seconds. +
    + + +## Security API +Security operations have been moved to `BLEDevice` (`NimBLEDevice`). +The security callback methods are now incorporated in the `NimBLEServerCallbacks` / `NimBLEClientCallbacks` classes. + +The callback methods are: + +> `bool onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pin)` + +Receives the pin when using numeric comparison authentication. +Call `NimBLEDevice::injectConfirmPIN(connInfo, true);` to accept or `NimBLEDevice::injectConfirmPIN(connInfo, false);` to reject. +
    + +> `void onPassKeyEntry(const NimBLEConnInfo& connInfo)` + +Client callback; client should respond with the passkey (pin) by calling `NimBLEDevice::injectPassKey(connInfo, 123456);` +
    + +> `uint32_t onPassKeyDisplay()` + +Server callback; should return the passkey (pin) expected from the client. +
    + +> `void onAuthenticationComplete(const NimBLEConnInfo& connInfo)` + +Authentication complete, success or failed information is available from the `NimBLEConnInfo` methods. +
    + +Security settings and IO capabilities are now set by the following methods of NimBLEDevice. +> `NimBLEDevice::setSecurityAuth(bool bonding, bool mitm, bool sc)` +> `NimBLEDevice::setSecurityAuth(uint8_t auth_req)` + +Sets the authorization mode for this device. +
    + +> `NimBLEDevice::setSecurityIOCap(uint8_t iocap)` + +Sets the Input/Output capabilities of this device. +
    + +> `NimBLEDevice::setSecurityInitKey(uint8_t init_key)` + +If we are the initiator of the security procedure this sets the keys we will distribute. +
    + +> `NimBLEDevice::setSecurityRespKey(uint8_t resp_key)` + +Sets the keys we are willing to accept from the peer during pairing. +
    + + +## Arduino Configuration + +Unlike the original library pre-packaged in the esp32-arduino, this library has all the configuration options that are normally set in menuconfig available in the *src/nimconfig.h* file. + +This allows Arduino users to fully customize the build, such as increasing max connections or loading the BLE stack into external PSRAM. + +For details on the options, they are fully commented in *nimconfig.h* +
    diff --git a/lib/esp-nimble-cpp/docs/New_user_guide.md b/lib/esp-nimble-cpp/docs/New_user_guide.md new file mode 100644 index 0000000..506a368 --- /dev/null +++ b/lib/esp-nimble-cpp/docs/New_user_guide.md @@ -0,0 +1,339 @@ +# New User Guide + +**Note:** If you are migrating an existing project from the original Bluedroid library please see the [Migration Guide.](Migration_guide.md) + +If you are a new user this will guide you through a simple server and client application. + +* [Creating a Server](#creating-a-server) +* [Creating a Client](#creating-a-client) +
    + +## Include Files +At the top of your application file add `#include NimBLEDevice.h`, this is the only header required and provides access to all classes. +
    + +## Using the Library +In order to perform any BLE tasks you must first initialize the library, this prepares the NimBLE stack to be ready for commands. + +To do this you must call `NimBLEDevice::init("your device name here")`, the parameter passed is a character string containing the name you want to advertise. +If you're not creating a server or do not want to advertise a name, simply pass an empty string for the parameter. + +This can be called any time you wish to use BLE functions and does not need to be called from app_main(IDF) or setup(Arduino) but usually is. +
    + + +## Creating a Server +BLE servers perform 2 tasks, they advertise their existence for clients to find them and they provide services which contain information for the connecting client. + +After initializing the NimBLE stack we create a server by calling `NimBLEDevice::createServer()`, this will create a server instance and return a pointer to it. + +Once we have created the server we need to tell it the services it hosts. +To do this we call `NimBLEServer::createService(const char* uuid)`. Which returns a pointer to an instance of `NimBLEService`. +The `uuid` parameter is a hexadecimal string with the uuid we want to give the service, it can be 16, 32, or 128 bits. + +For this example we will keep it simple and use a 16 bit value: ABCD. +
    + +**Example code:** +``` +#include "NimBLEDevice.h" + +// void setup() in Arduino +void app_main(void) +{ + NimBLEDevice::init("NimBLE"); + + NimBLEServer *pServer = NimBLEDevice::createServer(); + NimBLEService *pService = pServer->createService("ABCD"); +} +``` + +Now we have NimBLE initialized, a server created and a service assigned to it. +We can't do much with this yet so now we should add a characteristic to the service to provide some data. + +Next we call `NimBLEService::createCharacteristic` which returns a pointer to an instance of `NimBLECharacteristic`, and takes two parameters: +A `uuid` to specify the UUID of the characteristic and a bitmask of the properties we want applied to it. + +Just as with the service UUID we will use a simple 16 bit value: 1234. +The properties bitmask is a little more involved. It is a combination of NIMBLE_PROPERTY:: values. + +Here is the list of options: +> NIMBLE_PROPERTY\::READ +> NIMBLE_PROPERTY\::READ_ENC +> NIMBLE_PROPERTY\::READ_AUTHEN +> NIMBLE_PROPERTY\::READ_AUTHOR +> NIMBLE_PROPERTY\::WRITE +> NIMBLE_PROPERTY\::WRITE_NR +> NIMBLE_PROPERTY\::WRITE_ENC +> NIMBLE_PROPERTY\::WRITE_AUTHEN +> NIMBLE_PROPERTY\::WRITE_AUTHOR +> NIMBLE_PROPERTY\::BROADCAST +> NIMBLE_PROPERTY\::NOTIFY +> NIMBLE_PROPERTY\::INDICATE + +For this example we won't need to specify these as the default value is `NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE` +which will allow reading and writing values to the characteristic without encryption or security. +The function call will simply be `pService->createCharacteristic("1234");` +
    + +**Our example code now is:** +``` +#include "NimBLEDevice.h" + +// void setup() in Arduino +void app_main(void) +{ + NimBLEDevice::init("NimBLE"); + + NimBLEServer *pServer = NimBLEDevice::createServer(); + NimBLEService *pService = pServer->createService("ABCD"); + NimBLECharacteristic *pCharacteristic = pService->createCharacteristic("1234"); +} +``` + +All that's left to do now is start the service, give the characteristic a value and start advertising for clients. + +Fist we start the service by calling `NimBLEService::start()`. + +Next we need to call `NimBLECharacteristic::setValue` to set the characteristic value that the client will read. +There are many different types you can send as parameters for the value but for this example we will use a simple string. +`pCharacteristic->setValue("Hello BLE");` + +Next we need to advertise for connections. +To do this we create an instance of `NimBLEAdvertising` add our service to it (optional) and start advertisng. + +**The code for this will be:** +``` +NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); // create advertising instance +pAdvertising->addServiceUUID("ABCD"); // tell advertising the UUID of our service +pAdvertising->start(); // start advertising +``` +That's it, this will be enough to create a BLE server with a service and a characteristic and advertise for client connections. + +**The full example code:** +``` +#include "NimBLEDevice.h" + +// void setup() in Arduino +void app_main(void) +{ + NimBLEDevice::init("NimBLE"); + + NimBLEServer *pServer = NimBLEDevice::createServer(); + NimBLEService *pService = pServer->createService("ABCD"); + NimBLECharacteristic *pCharacteristic = pService->createCharacteristic("1234"); + + pService->start(); + pCharacteristic->setValue("Hello BLE"); + + NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); + pAdvertising->addServiceUUID("ABCD"); + pAdvertising->start(); +} +``` + +Now if you scan with your phone using nRFConnect or any other BLE app you should see a device named "NimBLE" with a service of "ABCD". + +For more advanced features and options please see the server examples in the examples folder. +
    + + +## Creating a Client + +BLE clients perform 2 tasks, they scan for advertising servers and form connections to them to read and write to their characteristics/descriptors. + +After initializing the NimBLE stack we create a scan instance by calling `NimBLEDevice::getScan()`, this will create a `NimBLEScan` instance and return a pointer to it. + +Once we have created the scan we can start looking for advertising servers. + +To do this we call `NimBLEScan::start(duration)`, the duration parameter is a uint32_t that specifies the number of milliseconds to scan for, +passing 0 will scan forever. + +In this example we will scan for 10 seconds. This is a blocking function (a non blocking overload is also available). +This call returns an instance of `NimBLEScanResults` when the scan completes which can be parsed for advertisers we are interested in. + +**Example Code:** +``` +#include "NimBLEDevice.h" + +// void setup() in Arduino +void app_main(void) +{ + NimBLEDevice::init(""); + + NimBLEScan *pScan = NimBLEDevice::getScan(); + NimBLEScanResults results = pScan->getResults(10 * 1000); +} +``` +
    + +Now that we have scanned we need to check the results for any advertisers we are interested in connecting to. + +To do this we iterate through the results and check if any of the devices found are advertising the service we want `ABCD`. +Each result in `NimBLEScanResults` is a `NimBLEAdvertisedDevice` instance that we can access data from. + +We will check each device found for the `ABCD` service by calling `NimBLEAdvertisedDevice::isAdvertisingService`. +This takes an instance of `NimBLEUUID` as a parameter so we will need to create one. + +**The code for this looks like:** +``` +NimBLEUUID serviceUuid("ABCD"); + +for(int i = 0; i < results.getCount(); i++) { + NimBLEAdvertisedDevice device = results.getDevice(i); + + if (device.isAdvertisingService(serviceUuid)) { + // create a client and connect + } +} +``` +
    + +Now that we can scan and parse advertisers we need to be able to create a `NimBLEClient` instance and use it to connect. + +To do this we call `NimBLEDevice::createClient` which creates the `NimBLEClient` instance and returns a pointer to it. + +After this we call `NimBLEClient::connect` to connect to the advertiser. +This takes a pointer to the `NimBLEAdvertisedDevice` and returns `true` if successful. + +**Lets do that now:** +``` +NimBLEUUID serviceUuid("ABCD"); + +for(int i = 0; i < results.getCount(); i++) { + NimBLEAdvertisedDevice device = results.getDevice(i); + + if (device.isAdvertisingService(serviceUuid)) { + NimBLEClient *pClient = NimBLEDevice::createClient(); + + if(pClient->connect(&device)) { + //success + } else { + // failed to connect + } + } +} +``` +As shown, the call to `NimBLEClient::connect` should have it's return value tested to make sure it succeeded before proceeding to get data. +
    + +Next we need to access the servers data by asking it for the service and the characteristic we are interested in, then read the characteristic value. + +To do this we call `NimBLEClient::getService`, which takes as a parameter the UUID of the service and returns +a pointer an instance to `NimBLERemoteService` or `nullptr` if the service was not found. + +Next we will call `NimBLERemoteService::getCharacteristic` which takes as a parameter the UUID of the service and returns +a pointer to an instance of `NimBLERemoteCharacteristic` or `nullptr` if not found. + +Finally we will read the characteristic value with `NimBLERemoteCharacteristic::readValue()`. + +**Here is what that looks like:** +``` +NimBLEUUID serviceUuid("ABCD"); + +for(int i = 0; i < results.getCount(); i++) { + NimBLEAdvertisedDevice device = results.getDevice(i); + + if (device.isAdvertisingService(serviceUuid)) { + NimBLEClient *pClient = NimBLEDevice::createClient(); + + if (pClient->connect(&device)) { + NimBLERemoteService *pService = pClient->getService(serviceUuid); + + if (pService != nullptr) { + NimBLERemoteCharacteristic *pCharacteristic = pService->getCharacteristic("1234"); + + if (pCharacteristic != nullptr) { + std::string value = pCharacteristic->readValue(); + // print or do whatever you need with the value + } + } + } else { + // failed to connect + } + } +} +``` +
    + +The last thing we should do is clean up once we are done with the connection. +Because multiple clients are supported and can be created we should delete them when finished with them to conserve resources. +This is done by calling `NimBLEDevice::deleteClient`. + +**Lets add that now:** +``` +NimBLEUUID serviceUuid("ABCD"); + +for(int i = 0; i < results.getCount(); i++) { + NimBLEAdvertisedDevice device = results.getDevice(i); + + if (device.isAdvertisingService(serviceUuid)) { + NimBLEClient *pClient = NimBLEDevice::createClient(); + + if (pClient->connect(&device)) { + NimBLERemoteService *pService = pClient->getService(serviceUuid); + + if (pService != nullptr) { + NimBLERemoteCharacteristic *pCharacteristic = pService->getCharacteristic("1234"); + + if (pCharacteristic != nullptr) { + std::string value = pCharacteristic->readValue(); + // print or do whatever you need with the value + } + } + } else { + // failed to connect + } + + NimBLEDevice::deleteClient(pClient); + } +} +``` +Note that there is no need to disconnect as that will be done when deleting the client instance. +
    + +**Here is the full example code:** +``` +#include "NimBLEDevice.h" + +// void setup() in Arduino +void app_main(void) +{ + NimBLEDevice::init(""); + + NimBLEScan *pScan = NimBLEDevice::getScan(); + NimBLEScanResults results = pScan->start(10 * 1000); + + NimBLEUUID serviceUuid("ABCD"); + + for(int i = 0; i < results.getCount(); i++) { + NimBLEAdvertisedDevice device = results.getDevice(i); + + if (device.isAdvertisingService(serviceUuid)) { + NimBLEClient *pClient = NimBLEDevice::createClient(); + + if (pClient->connect(&device)) { + NimBLERemoteService *pService = pClient->getService(serviceUuid); + + if (pService != nullptr) { + NimBLERemoteCharacteristic *pCharacteristic = pService->getCharacteristic("1234"); + + if (pCharacteristic != nullptr) { + std::string value = pCharacteristic->readValue(); + // print or do whatever you need with the value + } + } + } else { + // failed to connect + } + + NimBLEDevice::deleteClient(pClient); + } + } +} +``` +
    + +For more advanced features and options please see the client examples in the examples folder. +
    + diff --git a/lib/NimBLE-Arduino/docs/Usage_tips.md b/lib/esp-nimble-cpp/docs/Usage_tips.md similarity index 100% rename from lib/NimBLE-Arduino/docs/Usage_tips.md rename to lib/esp-nimble-cpp/docs/Usage_tips.md diff --git a/lib/esp-nimble-cpp/docs/index.md b/lib/esp-nimble-cpp/docs/index.md new file mode 100644 index 0000000..55764b8 --- /dev/null +++ b/lib/esp-nimble-cpp/docs/index.md @@ -0,0 +1,58 @@ +# Overview + +This is a C++ BLE library for the ESP32 that uses the NimBLE host stack instead of bluedroid. +The aim is to maintain, as much as reasonable, the original bluedroid C++ & Arduino BLE API by while adding new features +and making improvements in performance, resource use, and stability. + +**Testing shows a nearly 50% reduction in flash use and approx. 100kB less ram consumed vs the original!** +*Your results may vary* +
    + +# What is NimBLE? +NimBLE is a completely open source Bluetooth Low Energy stack produced by [Apache](https://github.com/apache/mynewt-nimble). +It is more suited to resource constrained devices than bluedroid and has now been ported to the ESP32 by Espressif. +
    + +# ESP-IDF Installation +### v4.0+ +Download as .zip and extract or clone into the components folder in your esp-idf project. + +Run menuconfig, go to `Component config->Bluetooth` enable Bluetooth and in `Bluetooth host` NimBLE. +Configure settings in `NimBLE Options`. +`#include "NimBLEDevice.h"` in main.cpp. +Call `NimBLEDevice::init` in `app_main`. +
    + +### v3.2 & v3.3 +The NimBLE component does not come with these versions of IDF (now included in 3.3.2 and above). +A backport that works in these versions has been created and is [available here](https://github.com/h2zero/esp-nimble-component). +Download or clone that repo into your project/components folder and run menuconfig. +Configure settings in `main menu -> NimBLE Options`. + +`#include "NimBLEDevice.h"` in main.cpp. +Call `NimBLEDevice::init` in `app_main`. +
    + +# Using +This library is intended to be compatible with the original ESP32 BLE functions and types with minor changes. + +If you have not used the original Bluedroid library please refer to the [New user guide](New_user_guide.md). + +If you are familiar with the original library, see: [The migration guide](Migration_guide.md) for details. + +Also see [Improvements and updates](Improvements_and_updates.md) for information about non-breaking changes. + +For more advanced usage see [Usage tips](Usage_tips.md) for more performance and optimization. +
    + +# Need help? Have a question or suggestion? +Come chat on [gitter](https://gitter.im/NimBLE-Arduino/community?utm_source=share-link&utm_medium=link&utm_campaign=share-link) or open an issue at [NimBLE-Arduino](https://github.com/h2zero/NimBLE-Arduino/issues) or [esp-nimble-cpp](https://github.com/h2zero/esp-nimble-cpp/issues) +
    + +# Acknowledgments + +* [nkolban](https://github.com/nkolban) and [chegewara](https://github.com/chegewara) for the [original esp32 BLE library](https://github.com/nkolban/esp32-snippets/tree/master/cpp_utils) this project was derived from. +* [beegee-tokyo](https://github.com/beegee-tokyo) for contributing your time to test/debug and contributing the beacon examples. +* [Jeroen88](https://github.com/Jeroen88) for the amazing help debugging and improving the client code. +
    + diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/CMakeLists.txt new file mode 100644 index 0000000..7b68bed --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(NimBLE_Client) diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/Makefile b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/Makefile new file mode 100644 index 0000000..d1a0fa2 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := NimBLE_Client + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/component.mk b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/main.cpp b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/main.cpp new file mode 100644 index 0000000..fe76dd0 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/main.cpp @@ -0,0 +1,372 @@ + +/** NimBLE_Client Demo: + * + * Demonstrates many of the available features of the NimBLE client library. + * + * Created: on March 24 2020 + * Author: H2zero + * +*/ +#include + +extern "C" {void app_main(void);} + +static NimBLEAdvertisedDevice* advDevice; + +static bool doConnect = false; +static uint32_t scanTime = 0; /** scan time in milliseconds, 0 = scan forever */ + + +/** None of these are required as they will be handled by the library with defaults. ** + ** Remove as you see fit for your needs */ +class ClientCallbacks : public NimBLEClientCallbacks { + void onConnect(NimBLEClient* pClient) { + printf("Connected\n"); + /** After connection we should change the parameters if we don't need fast response times. + * These settings are 150ms interval, 0 latency, 450ms timout. + * Timeout should be a multiple of the interval, minimum is 100ms. + * I find a multiple of 3-5 * the interval works best for quick response/reconnect. + * Min interval: 120 * 1.25ms = 150, Max interval: 120 * 1.25ms = 150, 0 latency, 45 * 10ms = 450ms timeout + */ + pClient->updateConnParams(120,120,0,45); + } + + void onDisconnect(NimBLEClient* pClient, int reason) { + printf("%s Disconnected, reason = %d - Starting scan\n", + pClient->getPeerAddress().toString().c_str(), reason); + NimBLEDevice::getScan()->start(scanTime); + } + + /********************* Security handled here ********************** + ****** Note: these are the same return values as defaults ********/ + void onPassKeyEntry(const NimBLEConnInfo& connInfo){ + printf("Server Passkey Entry\n"); + /** This should prompt the user to enter the passkey displayed + * on the peer device. + */ + NimBLEDevice::injectPassKey(connInfo, 123456); + }; + + void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pass_key){ + printf("The passkey YES/NO number: %" PRIu32 "\n", pass_key); + /** Inject false if passkeys don't match. */ + NimBLEDevice::injectConfirmPIN(connInfo, true); + }; + + /** Pairing process complete, we can check the results in connInfo */ + void onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + if(!connInfo.isEncrypted()) { + printf("Encrypt connection failed - disconnecting\n"); + /** Find the client with the connection handle provided in desc */ + NimBLEDevice::getClientByID(connInfo.getConnHandle())->disconnect(); + return; + } + } +}; + + +/** Define a class to handle the callbacks when advertisments are received */ +class scanCallbacks: public NimBLEScanCallbacks { + void onResult(NimBLEAdvertisedDevice* advertisedDevice) { + printf("Advertised Device found: %s\n", advertisedDevice->toString().c_str()); + if(advertisedDevice->isAdvertisingService(NimBLEUUID("DEAD"))) + { + printf("Found Our Service\n"); + /** stop scan before connecting */ + NimBLEDevice::getScan()->stop(); + /** Save the device reference in a global for the client to use*/ + advDevice = advertisedDevice; + /** Ready to connect now */ + doConnect = true; + } + } + + /** Callback to process the results of the completed scan or restart it */ + void onScanEnd(NimBLEScanResults results) { + printf("Scan Ended\n"); + } +}; + + +/** Notification / Indication receiving handler callback */ +void notifyCB(NimBLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify){ + std::string str = (isNotify == true) ? "Notification" : "Indication"; + str += " from "; + str += pRemoteCharacteristic->getRemoteService()->getClient()->getPeerAddress().toString(); + str += ": Service = " + pRemoteCharacteristic->getRemoteService()->getUUID().toString(); + str += ", Characteristic = " + pRemoteCharacteristic->getUUID().toString(); + str += ", Value = " + std::string((char*)pData, length); + printf("%s\n", str.c_str()); +} + + +/** Create a single global instance of the callback class to be used by all clients */ +static ClientCallbacks clientCB; + + +/** Handles the provisioning of clients and connects / interfaces with the server */ +bool connectToServer() { + NimBLEClient* pClient = nullptr; + + /** Check if we have a client we should reuse first **/ + if(NimBLEDevice::getClientListSize()) { + /** Special case when we already know this device, we send false as the + * second argument in connect() to prevent refreshing the service database. + * This saves considerable time and power. + */ + pClient = NimBLEDevice::getClientByPeerAddress(advDevice->getAddress()); + if(pClient){ + if(!pClient->connect(advDevice, false)) { + printf("Reconnect failed\n"); + return false; + } + printf("Reconnected client\n"); + } + /** We don't already have a client that knows this device, + * we will check for a client that is disconnected that we can use. + */ + else { + pClient = NimBLEDevice::getDisconnectedClient(); + } + } + + /** No client to reuse? Create a new one. */ + if(!pClient) { + if(NimBLEDevice::getClientListSize() >= NIMBLE_MAX_CONNECTIONS) { + printf("Max clients reached - no more connections available\n"); + return false; + } + + pClient = NimBLEDevice::createClient(); + + printf("New client created\n"); + + pClient->setClientCallbacks(&clientCB, false); + /** Set initial connection parameters: These settings are 15ms interval, 0 latency, 120ms timout. + * These settings are safe for 3 clients to connect reliably, can go faster if you have less + * connections. Timeout should be a multiple of the interval, minimum is 100ms. + * Min interval: 12 * 1.25ms = 15, Max interval: 12 * 1.25ms = 15, 0 latency, 12 * 10ms = 120ms timeout + */ + pClient->setConnectionParams(6,6,0,15); + /** Set how long we are willing to wait for the connection to complete (milliseconds), default is 30000. */ + pClient->setConnectTimeout(5 * 1000); + + + if (!pClient->connect(advDevice)) { + /** Created a client but failed to connect, don't need to keep it as it has no data */ + NimBLEDevice::deleteClient(pClient); + printf("Failed to connect, deleted client\n"); + return false; + } + } + + if(!pClient->isConnected()) { + if (!pClient->connect(advDevice)) { + printf("Failed to connect\n"); + return false; + } + } + + printf("Connected to: %s RSSI: %d\n", + pClient->getPeerAddress().toString().c_str(), + pClient->getRssi()); + + /** Now we can read/write/subscribe the charateristics of the services we are interested in */ + NimBLERemoteService* pSvc = nullptr; + NimBLERemoteCharacteristic* pChr = nullptr; + NimBLERemoteDescriptor* pDsc = nullptr; + + pSvc = pClient->getService("DEAD"); + if(pSvc) { /** make sure it's not null */ + pChr = pSvc->getCharacteristic("BEEF"); + } + + if(pChr) { /** make sure it's not null */ + if(pChr->canRead()) { + printf("%s Value: %s\n", + pChr->getUUID().toString().c_str(), + pChr->readValue().c_str()); + } + + if(pChr->canWrite()) { + if(pChr->writeValue("Tasty")) { + printf("Wrote new value to: %s\n", pChr->getUUID().toString().c_str()); + } + else { + /** Disconnect if write failed */ + pClient->disconnect(); + return false; + } + + if(pChr->canRead()) { + printf("The value of: %s is now: %s\n", + pChr->getUUID().toString().c_str(), + pChr->readValue().c_str()); + } + } + + /** registerForNotify() has been removed and replaced with subscribe() / unsubscribe(). + * Subscribe parameter defaults are: notifications=true, notifyCallback=nullptr, response=true. + * Unsubscribe parameter defaults are: response=true. + */ + if(pChr->canNotify()) { + //if(!pChr->registerForNotify(notifyCB)) { + if(!pChr->subscribe(true, notifyCB)) { + /** Disconnect if subscribe failed */ + pClient->disconnect(); + return false; + } + } + else if(pChr->canIndicate()) { + /** Send false as first argument to subscribe to indications instead of notifications */ + //if(!pChr->registerForNotify(notifyCB, false)) { + if(!pChr->subscribe(false, notifyCB)) { + /** Disconnect if subscribe failed */ + pClient->disconnect(); + return false; + } + } + } + + else{ + printf("DEAD service not found.\n"); + } + + pSvc = pClient->getService("BAAD"); + if(pSvc) { /** make sure it's not null */ + pChr = pSvc->getCharacteristic("F00D"); + } + + if(pChr) { /** make sure it's not null */ + if(pChr->canRead()) { + printf("%s Value: %s\n", + pChr->getUUID().toString().c_str(), + pChr->readValue().c_str()); + } + + pDsc = pChr->getDescriptor(NimBLEUUID("C01D")); + if(pDsc) { /** make sure it's not null */ + printf("Descriptor: %s Value: %s\n", + pDsc->getUUID().toString().c_str(), + pDsc->readValue().c_str()); + } + + if(pChr->canWrite()) { + if(pChr->writeValue("No tip!")) { + printf("Wrote new value to: %s\n", pChr->getUUID().toString().c_str()); + } + else { + /** Disconnect if write failed */ + pClient->disconnect(); + return false; + } + + if(pChr->canRead()) { + printf("The value of: %s is now: %s\n", + pChr->getUUID().toString().c_str(), + pChr->readValue().c_str()); + } + } + + /** registerForNotify() has been deprecated and replaced with subscribe() / unsubscribe(). + * Subscribe parameter defaults are: notifications=true, notifyCallback=nullptr, response=true. + * Unsubscribe parameter defaults are: response=true. + */ + if(pChr->canNotify()) { + //if(!pChr->registerForNotify(notifyCB)) { + if(!pChr->subscribe(true, notifyCB)) { + /** Disconnect if subscribe failed */ + pClient->disconnect(); + return false; + } + } + else if(pChr->canIndicate()) { + /** Send false as first argument to subscribe to indications instead of notifications */ + //if(!pChr->registerForNotify(notifyCB, false)) { + if(!pChr->subscribe(false, notifyCB)) { + /** Disconnect if subscribe failed */ + pClient->disconnect(); + return false; + } + } + } + + else{ + printf("BAAD service not found.\n"); + } + + printf("Done with this device!\n"); + return true; +} + +void connectTask (void * parameter){ + /** Loop here until we find a device we want to connect to */ + for(;;) { + if(doConnect) { + doConnect = false; + /** Found a device we want to connect to, do it now */ + if(connectToServer()) { + printf("Success! we should now be getting notifications, scanning for more!\n"); + } else { + printf("Failed to connect, starting scan\n"); + } + + NimBLEDevice::getScan()->start(scanTime); + } + vTaskDelay(10/portTICK_PERIOD_MS); + } + + vTaskDelete(NULL); +} + +void app_main (void){ + printf("Starting NimBLE Client\n"); + /** Initialize NimBLE, no device name spcified as we are not advertising */ + NimBLEDevice::init(""); + + /** Set the IO capabilities of the device, each option will trigger a different pairing method. + * BLE_HS_IO_KEYBOARD_ONLY - Passkey pairing + * BLE_HS_IO_DISPLAY_YESNO - Numeric comparison pairing + * BLE_HS_IO_NO_INPUT_OUTPUT - DEFAULT setting - just works pairing + */ + //NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_ONLY); // use passkey + //NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_YESNO); //use numeric comparison + + /** 2 different ways to set security - both calls achieve the same result. + * no bonding, no man in the middle protection, secure connections. + * + * These are the default values, only shown here for demonstration. + */ + //NimBLEDevice::setSecurityAuth(false, false, true); + NimBLEDevice::setSecurityAuth(/*BLE_SM_PAIR_AUTHREQ_BOND | BLE_SM_PAIR_AUTHREQ_MITM |*/ BLE_SM_PAIR_AUTHREQ_SC); + + /** Optional: set the transmit power, default is -3db */ + NimBLEDevice::setPower(ESP_PWR_LVL_P9); /** 12db */ + + /** Optional: set any devices you don't want to get advertisments from */ + // NimBLEDevice::addIgnored(NimBLEAddress ("aa:bb:cc:dd:ee:ff")); + + /** create new scan */ + NimBLEScan* pScan = NimBLEDevice::getScan(); + + /** create a callback that gets called when advertisers are found */ + pScan->setScanCallbacks (new scanCallbacks()); + + /** Set scan interval (how often) and window (how long) in milliseconds */ + pScan->setInterval(400); + pScan->setWindow(100); + + /** Active scan will gather scan response data from advertisers + * but will use more energy from both devices + */ + pScan->setActiveScan(true); + /** Start scanning for advertisers for the scan time specified (in milliseconds) 0 = forever + * Optional callback for when scanning stops. + */ + pScan->start(scanTime); + + printf("Scanning for peripherals\n"); + + xTaskCreate(connectTask, "connectTask", 5000, NULL, 1, NULL); +} + diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/CMakeLists.txt new file mode 100644 index 0000000..e24a91b --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(NimBLE_Server) diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/Makefile b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/Makefile new file mode 100644 index 0000000..dd998b1 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := NimBLE_Server + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/component.mk b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/main.cpp b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/main.cpp new file mode 100644 index 0000000..3effb54 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/main.cpp @@ -0,0 +1,242 @@ + +/** NimBLE_Server Demo: + * + * Demonstrates many of the available features of the NimBLE server library. + * + * Created: on March 22 2020 + * Author: H2zero + * +*/ +#include "NimBLEDevice.h" +#include "NimBLELog.h" + +#include + +extern "C" {void app_main(void);} + +static NimBLEServer* pServer; + +/** None of these are required as they will be handled by the library with defaults. ** + ** Remove as you see fit for your needs */ +class ServerCallbacks: public NimBLEServerCallbacks { + void onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo) { + printf("Client address: %s\n", connInfo.getAddress().toString().c_str()); + + /** We can use the connection handle here to ask for different connection parameters. + * Args: connection handle, min connection interval, max connection interval + * latency, supervision timeout. + * Units; Min/Max Intervals: 1.25 millisecond increments. + * Latency: number of intervals allowed to skip. + * Timeout: 10 millisecond increments, try for 3x interval time for best results. + */ + pServer->updateConnParams(connInfo.getConnHandle(), 24, 48, 0, 18); + }; + + void onDisconnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo, int reason) { + printf("Client disconnected - start advertising\n"); + NimBLEDevice::startAdvertising(); + }; + + void onMTUChange(uint16_t MTU, NimBLEConnInfo& connInfo) { + printf("MTU updated: %u for connection ID: %u\n", MTU, connInfo.getConnHandle()); + pServer->updateConnParams(connInfo.getConnHandle(), 24, 48, 0, 60); + }; + +/********************* Security handled here ********************** +****** Note: these are the same return values as defaults ********/ + uint32_t onPassKeyDisplay(){ + printf("Server Passkey Display\n"); + /** This should return a random 6 digit number for security + * or make your own static passkey as done here. + */ + return 123456; + }; + + void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pass_key){ + printf("The passkey YES/NO number: %" PRIu32 "\n", pass_key); + /** Inject false if passkeys don't match. */ + NimBLEDevice::injectConfirmPIN(connInfo, true); + }; + + void onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + /** Check that encryption was successful, if not we disconnect the client */ + if(!connInfo.isEncrypted()) { + NimBLEDevice::getServer()->disconnect(connInfo.getConnHandle()); + printf("Encrypt connection failed - disconnecting client\n"); + return; + } + printf("Starting BLE work!"); + }; +}; + +/** Handler class for characteristic actions */ +class CharacteristicCallbacks: public NimBLECharacteristicCallbacks { + void onRead(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo) { + printf("%s : onRead(), value: %s\n", + pCharacteristic->getUUID().toString().c_str(), + pCharacteristic->getValue().c_str()); + } + + void onWrite(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo) { + printf("%s : onWrite(), value: %s\n", + pCharacteristic->getUUID().toString().c_str(), + pCharacteristic->getValue().c_str()); + } + + /** Called before notification or indication is sent, + * the value can be changed here before sending if desired. + */ + void onNotify(NimBLECharacteristic* pCharacteristic) { + printf("Sending notification to clients\n"); + } + + /** + * The value returned in code is the NimBLE host return code. + */ + void onStatus(NimBLECharacteristic* pCharacteristic, int code) { + printf("Notification/Indication return code: %d, %s\n", + code, NimBLEUtils::returnCodeToString(code)); + } + + void onSubscribe(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo, uint16_t subValue) { + std::string str = "Client ID: "; + str += connInfo.getConnHandle(); + str += " Address: "; + str += connInfo.getAddress().toString(); + if(subValue == 0) { + str += " Unsubscribed to "; + }else if(subValue == 1) { + str += " Subscribed to notfications for "; + } else if(subValue == 2) { + str += " Subscribed to indications for "; + } else if(subValue == 3) { + str += " Subscribed to notifications and indications for "; + } + str += std::string(pCharacteristic->getUUID()); + + printf("%s\n", str.c_str()); + } +}; + +/** Handler class for descriptor actions */ +class DescriptorCallbacks : public NimBLEDescriptorCallbacks { + void onWrite(NimBLEDescriptor* pDescriptor, NimBLEConnInfo& connInfo) { + std::string dscVal = pDescriptor->getValue(); + printf("Descriptor witten value: %s\n", dscVal.c_str()); + }; + + void onRead(NimBLEDescriptor* pDescriptor, NimBLEConnInfo& connInfo) { + printf("%s Descriptor read\n", pDescriptor->getUUID().toString().c_str()); + };; +}; + + +/** Define callback instances globally to use for multiple Charateristics \ Descriptors */ +static DescriptorCallbacks dscCallbacks; +static CharacteristicCallbacks chrCallbacks; + +void notifyTask(void * parameter){ + for(;;) { + if(pServer->getConnectedCount()) { + NimBLEService* pSvc = pServer->getServiceByUUID("BAAD"); + if(pSvc) { + NimBLECharacteristic* pChr = pSvc->getCharacteristic("F00D"); + if(pChr) { + pChr->notify(true); + } + } + } + vTaskDelay(2000/portTICK_PERIOD_MS); + } + + vTaskDelete(NULL); +} + +void app_main(void) { + printf("Starting NimBLE Server\n"); + + /** sets device name */ + NimBLEDevice::init("NimBLE"); + + /** Set the IO capabilities of the device, each option will trigger a different pairing method. + * BLE_HS_IO_DISPLAY_ONLY - Passkey pairing + * BLE_HS_IO_DISPLAY_YESNO - Numeric comparison pairing + * BLE_HS_IO_NO_INPUT_OUTPUT - DEFAULT setting - just works pairing + */ + //NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY); // use passkey + //NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_YESNO); //use numeric comparison + + /** 2 different ways to set security - both calls achieve the same result. + * no bonding, no man in the middle protection, secure connections. + * + * These are the default values, only shown here for demonstration. + */ + //NimBLEDevice::setSecurityAuth(false, false, true); + NimBLEDevice::setSecurityAuth(/*BLE_SM_PAIR_AUTHREQ_BOND | BLE_SM_PAIR_AUTHREQ_MITM |*/ BLE_SM_PAIR_AUTHREQ_SC); + + pServer = NimBLEDevice::createServer(); + pServer->setCallbacks(new ServerCallbacks()); + + NimBLEService* pDeadService = pServer->createService("DEAD"); + NimBLECharacteristic* pBeefCharacteristic = pDeadService->createCharacteristic( + "BEEF", + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + /** Require a secure connection for read and write access */ + NIMBLE_PROPERTY::READ_ENC | // only allow reading if paired / encrypted + NIMBLE_PROPERTY::WRITE_ENC // only allow writing if paired / encrypted + ); + + pBeefCharacteristic->setValue("Burger"); + pBeefCharacteristic->setCallbacks(&chrCallbacks); + + /** 2902 and 2904 descriptors are a special case, when createDescriptor is called with + * either of those uuid's it will create the associated class with the correct properties + * and sizes. However we must cast the returned reference to the correct type as the method + * only returns a pointer to the base NimBLEDescriptor class. + */ + NimBLE2904* pBeef2904 = (NimBLE2904*)pBeefCharacteristic->createDescriptor("2904"); + pBeef2904->setFormat(NimBLE2904::FORMAT_UTF8); + pBeef2904->setCallbacks(&dscCallbacks); + + + NimBLEService* pBaadService = pServer->createService("BAAD"); + NimBLECharacteristic* pFoodCharacteristic = pBaadService->createCharacteristic( + "F00D", + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + NIMBLE_PROPERTY::NOTIFY + ); + + pFoodCharacteristic->setValue("Fries"); + pFoodCharacteristic->setCallbacks(&chrCallbacks); + + /** Custom descriptor: Arguments are UUID, Properties, max length in bytes of the value */ + NimBLEDescriptor* pC01Ddsc = pFoodCharacteristic->createDescriptor( + "C01D", + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE| + NIMBLE_PROPERTY::WRITE_ENC, // only allow writing if paired / encrypted + 20 + ); + pC01Ddsc->setValue("Send it back!"); + pC01Ddsc->setCallbacks(&dscCallbacks); + + /** Start the services when finished creating all Characteristics and Descriptors */ + pDeadService->start(); + pBaadService->start(); + + NimBLEAdvertising* pAdvertising = NimBLEDevice::getAdvertising(); + /** Add the services to the advertisment data **/ + pAdvertising->addServiceUUID(pDeadService->getUUID()); + pAdvertising->addServiceUUID(pBaadService->getUUID()); + /** If your device is battery powered you may consider setting scan response + * to false as it will extend battery life at the expense of less data sent. + */ + pAdvertising->setScanResponse(true); + pAdvertising->start(); + + printf("Advertising Started\n"); + + xTaskCreate(notifyTask, "notifyTask", 5000, NULL, 1, NULL); +} diff --git a/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/CMakeLists.txt new file mode 100644 index 0000000..f46b44a --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32c3 esp32s3) +project(NimBLE_extended_client) diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/Makefile b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/Makefile new file mode 100644 index 0000000..2e4842d --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := NimBLE_extended_client + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/CMakeLists.txt new file mode 100644 index 0000000..0a5a557 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/component.mk b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/main.cpp b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/main.cpp new file mode 100644 index 0000000..3572e59 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/main.cpp @@ -0,0 +1,163 @@ + +/** NimBLE Extended Client Demo: + * + * Demonstrates the Bluetooth 5.x client capabilities. + * + * Created: on April 2 2022 + * Author: H2zero + * +*/ +#include + +extern "C" void app_main(void); + +#define SERVICE_UUID "ABCD" +#define CHARACTERISTIC_UUID "1234" + +static NimBLEAdvertisedDevice* advDevice; +static bool doConnect = false; +static uint32_t scanTime = 10 * 1000; // In milliseconds, 0 = scan forever + +/* Define the PHY's to use when connecting to peer devices, can be 1, 2, or all 3 (default).*/ +static uint8_t connectPhys = BLE_GAP_LE_PHY_CODED_MASK | BLE_GAP_LE_PHY_1M_MASK /*| BLE_GAP_LE_PHY_2M_MASK */ ; + +/* Define a class to handle the callbacks for client connection events */ +class ClientCallbacks : public NimBLEClientCallbacks { + void onConnect(NimBLEClient* pClient) { + printf("Connected\n"); + }; + + void onDisconnect(NimBLEClient* pClient, int reason) { + printf("%s Disconnected, reason = %d - Starting scan\n", + pClient->getPeerAddress().toString().c_str(), reason); + NimBLEDevice::getScan()->start(scanTime); + }; +}; + + +/* Define a class to handle the callbacks when advertisements are received */ +class scanCallbacks: public NimBLEScanCallbacks { + void onResult(NimBLEAdvertisedDevice* advertisedDevice) { + printf("Advertised Device found: %s\n", advertisedDevice->toString().c_str()); + if(advertisedDevice->isAdvertisingService(NimBLEUUID("ABCD"))) + { + printf("Found Our Service\n"); + /* Ready to connect now */ + doConnect = true; + /* Save the device reference in a global for the client to use*/ + advDevice = advertisedDevice; + /* stop scan before connecting */ + NimBLEDevice::getScan()->stop(); + } + } + + /** Callback to process the results of the completed scan or restart it */ + void onScanEnd(NimBLEScanResults results) { + printf("Scan Ended\n"); + } +}; + + +/* Handles the provisioning of clients and connects / interfaces with the server */ +bool connectToServer() { + NimBLEClient* pClient = nullptr; + + pClient = NimBLEDevice::createClient(); + pClient->setClientCallbacks(new ClientCallbacks, false); + + /* Set the PHY's to use for this connection. This is a bitmask that represents the PHY's: + * * 0x01 BLE_GAP_LE_PHY_1M_MASK + * * 0x02 BLE_GAP_LE_PHY_2M_MASK + * * 0x04 BLE_GAP_LE_PHY_CODED_MASK + * Combine these with OR ("|"), eg BLE_GAP_LE_PHY_1M_MASK | BLE_GAP_LE_PHY_2M_MASK | BLE_GAP_LE_PHY_CODED_MASK; + */ + pClient->setConnectPhy(connectPhys); + + /** Set how long we are willing to wait for the connection to complete (milliseconds), default is 30000. */ + pClient->setConnectTimeout(10 * 1000); + + if (!pClient->connect(advDevice)) { + /* Created a client but failed to connect, don't need to keep it as it has no data */ + NimBLEDevice::deleteClient(pClient); + printf("Failed to connect, deleted client\n"); + return false; + } + + printf("Connected to: %s RSSI: %d\n", + pClient->getPeerAddress().toString().c_str(), + pClient->getRssi()); + + /* Now we can read/write/subscribe the charateristics of the services we are interested in */ + NimBLERemoteService* pSvc = nullptr; + NimBLERemoteCharacteristic* pChr = nullptr; + + pSvc = pClient->getService(SERVICE_UUID); + + if (pSvc) { + pChr = pSvc->getCharacteristic(CHARACTERISTIC_UUID); + + if (pChr) { + // Read the value of the characteristic. + if (pChr->canRead()) { + std::string value = pChr->readValue(); + printf("Characteristic value: %s\n", value.c_str()); + } + } + + } else { + printf("ABCD service not found.\n"); + } + + NimBLEDevice::deleteClient(pClient); + printf("Done with this device!\n"); + return true; +} + +void connectTask (void * parameter){ + /* Loop here until we find a device we want to connect to */ + for (;;) { + if (doConnect) { + /* Found a device we want to connect to, do it now */ + if (connectToServer()) { + printf("Success!, scanning for more!\n"); + } else { + printf("Failed to connect, starting scan\n"); + } + + doConnect = false; + NimBLEDevice::getScan()->start(scanTime); + } + vTaskDelay(pdMS_TO_TICKS(10)); + } + + vTaskDelete(NULL); +} + +void app_main (void) { + printf("Starting NimBLE Client\n"); + /* Create a task to handle connecting to peers */ + xTaskCreate(connectTask, "connectTask", 5000, NULL, 1, NULL); + + /* Initialize NimBLE, no device name specified as we are not advertising */ + NimBLEDevice::init(""); + NimBLEScan* pScan = NimBLEDevice::getScan(); + + /* create a callback that gets called when advertisers are found */ + pScan->setScanCallbacks(new scanCallbacks()); + + /* Set scan interval (how often) and window (how long) in milliseconds */ + pScan->setInterval(97); + pScan->setWindow(67); + + /* Active scan will gather scan response data from advertisers + * but will use more energy from both devices + */ + pScan->setActiveScan(true); + + /* Start scanning for advertisers for the scan time specified (in milliseconds) 0 = forever + * Optional callback for when scanning stops. + */ + pScan->start(scanTime); + + printf("Scanning for peripherals\n"); +} diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/sdkconfig.defaults new file mode 100644 index 0000000..81960c1 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/sdkconfig.defaults @@ -0,0 +1,13 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_EXT_ADV=y diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/CMakeLists.txt new file mode 100644 index 0000000..c58174a --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32c3 esp32s3) +project(NimBLE_extended_server) diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/Makefile b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/Makefile new file mode 100644 index 0000000..a18cf9f --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := NimBLE_extended_server + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/CMakeLists.txt new file mode 100644 index 0000000..0a5a557 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/component.mk b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/main.cpp b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/main.cpp new file mode 100644 index 0000000..9ad5f59 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/main.cpp @@ -0,0 +1,139 @@ +/** NimBLE Extended Server Demo: + * + * Demonstrates the Bluetooth 5.x extended advertising capabilities. + * + * This demo will advertise a long data string on the CODED and 1M Phy's and + * starts a server allowing connection over either PHY's. It will advertise for + * 5 seconds then sleep for 20 seconds, if a client connects it will sleep once + * it has disconnected then repeats. + * + * Created: on April 2 2022 + * Author: H2zero + * +*/ + +#include "NimBLEDevice.h" +#include "esp_sleep.h" + +extern "C" void app_main(void); + +#define SERVICE_UUID "ABCD" +#define CHARACTERISTIC_UUID "1234" + +/* Time in milliseconds to advertise */ +static uint32_t advTime = 5000; + +/* Time to sleep between advertisements */ +static uint32_t sleepSeconds = 20; + +/* Primary PHY used for advertising, can be one of BLE_HCI_LE_PHY_1M or BLE_HCI_LE_PHY_CODED */ +static uint8_t primaryPhy = BLE_HCI_LE_PHY_CODED; + +/* Secondary PHY used for advertising and connecting, + * can be one of BLE_HCI_LE_PHY_1M, BLE_HCI_LE_PHY_2M or BLE_HCI_LE_PHY_CODED + */ +static uint8_t secondaryPhy = BLE_HCI_LE_PHY_1M; + + +/* Handler class for server events */ +class ServerCallbacks: public NimBLEServerCallbacks { + void onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo) { + printf("Client connected:: %s\n", connInfo.getAddress().toString().c_str()); + }; + + void onDisconnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo, int reason) { + printf("Client disconnected - sleeping for %" PRIu32" seconds\n", sleepSeconds); + esp_deep_sleep_start(); + }; +}; + +/* Callback class to handle advertising events */ +class advertisingCallbacks: public NimBLEExtAdvertisingCallbacks { + void onStopped(NimBLEExtAdvertising* pAdv, int reason, uint8_t inst_id) { + /* Check the reason advertising stopped, don't sleep if client is connecting */ + printf("Advertising instance %u stopped\n", inst_id); + switch (reason) { + case 0: + printf("Client connecting\n"); + return; + case BLE_HS_ETIMEOUT: + printf("Time expired - sleeping for %" PRIu32" seconds\n", sleepSeconds); + break; + default: + break; + } + + esp_deep_sleep_start(); + } +}; + +void app_main (void) { + NimBLEDevice::init("Extended advertiser"); + + /* Create the server and add the services/characteristics/descriptors */ + NimBLEServer *pServer = NimBLEDevice::createServer(); + pServer->setCallbacks(new ServerCallbacks); + + NimBLEService *pService = pServer->createService(SERVICE_UUID); + NimBLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID, + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + NIMBLE_PROPERTY::NOTIFY); + + pCharacteristic->setValue("Hello World"); + + /* Start the services */ + pService->start(); + + /* + * Create an extended advertisement with the instance ID 0 and set the PHY's. + * Multiple instances can be added as long as the instance ID is incremented. + */ + NimBLEExtAdvertisement extAdv(primaryPhy, secondaryPhy); + + /* Set the advertisement as connectable */ + extAdv.setConnectable(true); + + /* As per Bluetooth specification, extended advertising cannot be both scannable and connectable */ + extAdv.setScannable(false); // The default is false, set here for demonstration. + + /* Extended advertising allows for 251 bytes (minus header bytes ~20) in a single advertisement or up to 1650 if chained */ + extAdv.setServiceData(NimBLEUUID(SERVICE_UUID), std::string("Extended Advertising Demo.\r\n" + "Extended advertising allows for " + "251 bytes of data in a single advertisement,\r\n" + "or up to 1650 bytes with chaining.\r\n" + "This example message is 226 bytes long " + "and is using CODED_PHY for long range.")); + + extAdv.setCompleteServices16({NimBLEUUID(SERVICE_UUID)}); + + /* When extended advertising is enabled `NimBLEDevice::getAdvertising` returns a pointer to `NimBLEExtAdvertising */ + NimBLEExtAdvertising* pAdvertising = NimBLEDevice::getAdvertising(); + + /* Set the callbacks for advertising events */ + pAdvertising->setCallbacks(new advertisingCallbacks); + + /* + * NimBLEExtAdvertising::setInstanceData takes the instance ID and + * a reference to a `NimBLEExtAdvertisement` object. This sets the data + * that will be advertised for this instance ID, returns true if successful. + * + * Note: It is safe to create the advertisement as a local variable if setInstanceData + * is called before exiting the code block as the data will be copied. + */ + if (pAdvertising->setInstanceData(0, extAdv)) { + /* + * `NimBLEExtAdvertising::start` takes the advertisement instance ID to start + * and a duration in milliseconds or a max number of advertisements to send (or both). + */ + if (pAdvertising->start(0, advTime)) { + printf("Started advertising\n"); + } else { + printf("Failed to start advertising\n"); + } + } else { + printf("Failed to register advertisment data\n"); + } + + esp_sleep_enable_timer_wakeup(sleepSeconds * 1000000); +} diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/sdkconfig.defaults new file mode 100644 index 0000000..81960c1 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/sdkconfig.defaults @@ -0,0 +1,13 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_EXT_ADV=y diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/CMakeLists.txt new file mode 100644 index 0000000..7cfce86 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32c3 esp32s3) +project(NimBLE_multi_advertiser) diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/Makefile b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/Makefile new file mode 100644 index 0000000..501edc9 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := NimBLE_multi_advertiser + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/CMakeLists.txt new file mode 100644 index 0000000..0a5a557 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/component.mk b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/main.cpp b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/main.cpp new file mode 100644 index 0000000..d7eba8a --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/main.cpp @@ -0,0 +1,170 @@ +/** NimBLE Multi Advertiser Demo: + * + * Demonstrates the Bluetooth 5.x extended advertising capabilities. + * + * This demo will advertise 2 advertisements, and extended scannable instance + * and a connectable legacy instance. They will advertise for 5 seconds then + * sleep for 20 seconds. The extended scannable instance will use the scan + * request callback to update it's data when a scan response is requested. + * + * Created: on April 9 2022 + * Author: H2zero + * +*/ + +#include "NimBLEDevice.h" +#include "esp_sleep.h" + +extern "C" void app_main(void); + +#define SERVICE_UUID "ABCD" +#define CHARACTERISTIC_UUID "1234" + +/* Time in milliseconds to advertise */ +static uint32_t advTime = 5000; + +/* Time to sleep between advertisements */ +static uint32_t sleepTime = 20; + +/* Primary PHY used for advertising, can be one of BLE_HCI_LE_PHY_1M or BLE_HCI_LE_PHY_CODED */ +static uint8_t primaryPhy = BLE_HCI_LE_PHY_CODED; + +/* Secondary PHY used for advertising and connecting, + * can be one of BLE_HCI_LE_PHY_1M, BLE_HCI_LE_PHY_2M or BLE_HCI_LE_PHY_CODED + */ +static uint8_t secondaryPhy = BLE_HCI_LE_PHY_1M; + + +/* Handler class for server events */ +class ServerCallbacks: public NimBLEServerCallbacks { + void onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo) { + printf("Client connected: %s\n", connInfo.getAddress().toString().c_str()); + }; + + void onDisconnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo, int reason) { + printf("Client disconnected\n"); + // if still advertising we won't sleep yet. + if (!pServer->getAdvertising()->isAdvertising()) { + printf("Sleeping for %" PRIu32" seconds\n", sleepTime); + esp_deep_sleep_start(); + } + }; +}; + +/* Callback class to handle advertising events */ +class advCallbacks: public NimBLEExtAdvertisingCallbacks { + void onStopped(NimBLEExtAdvertising* pAdv, int reason, uint8_t inst_id) { + /* Check the reason advertising stopped, don't sleep if client is connecting */ + printf("Advertising instance %u stopped\n", inst_id); + switch (reason) { + case 0: + printf(" client connecting\n"); + return; + case BLE_HS_ETIMEOUT: + printf("Time expired - sleeping for %" PRIu32" seconds\n", sleepTime); + break; + default: + break; + } + + esp_deep_sleep_start(); + } + + bool m_updatedSR = false; + + void onScanRequest(NimBLEExtAdvertising* pAdv, uint8_t inst_id, NimBLEAddress addr) { + printf("Scan request for instance %u\n", inst_id); + // if the data has already been updated we don't need to change it again. + if (!m_updatedSR) { + printf("Updating scan data\n"); + NimBLEExtAdvertisement sr; + sr.setServiceData(NimBLEUUID(SERVICE_UUID), std::string("Hello from scan response!")); + pAdv->setScanResponseData(inst_id, sr); + m_updatedSR = true; + } + } +}; + +void app_main (void) { + NimBLEDevice::init("Multi advertiser"); + + /* Create a server for our legacy advertiser */ + NimBLEServer *pServer = NimBLEDevice::createServer(); + pServer->setCallbacks(new ServerCallbacks); + + NimBLEService *pService = pServer->createService(SERVICE_UUID); + NimBLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID, + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + NIMBLE_PROPERTY::NOTIFY); + + pCharacteristic->setValue("Hello World"); + + /* Start the service */ + pService->start(); + + /* Create our multi advertising instances */ + + // extended scannable instance advertising on coded and 1m PHY's. + NimBLEExtAdvertisement extScannable(primaryPhy, secondaryPhy); + + // Legacy advertising as a connectable device. + NimBLEExtAdvertisement legacyConnectable; + + // Optional scan response data. + NimBLEExtAdvertisement legacyScanResponse; + + /* As per Bluetooth specification, extended advertising cannot be both scannable and connectable */ + extScannable.setScannable(true); + extScannable.setConnectable(false); + + /* Set the initial data */ + extScannable.setServiceData(NimBLEUUID(SERVICE_UUID), std::string("Scan me!")); + + /* enable the scan response callback, we will use this to update the data. */ + extScannable.enableScanRequestCallback(true); + + /* Optional custom address for this advertisment. */ + legacyConnectable.setAddress(NimBLEAddress("DE:AD:BE:EF:BA:AD")); + + /* Set the advertising data. */ + legacyConnectable.setName("Legacy"); + legacyConnectable.setCompleteServices16({NimBLEUUID(SERVICE_UUID)}); + + /* Set the legacy and connectable flags. */ + legacyConnectable.setLegacyAdvertising(true); + legacyConnectable.setConnectable(true); + + /* Put some data in the scan response if desired. */ + legacyScanResponse.setServiceData(NimBLEUUID(SERVICE_UUID), "Legacy SR"); + + /* Get the advertising ready */ + NimBLEExtAdvertising* pAdvertising = NimBLEDevice::getAdvertising(); + + /* Set the callbacks to handle advertising events */ + pAdvertising->setCallbacks(new advCallbacks); + + /* Set instance data. + * Up to 5 instances can be used if configured in menuconfig, instance 0 is always available. + * + * We will set the extended scannable data on instance 0 and the legacy data on instance 1. + * Note that the legacy scan response data needs to be set to the same instance (1). + */ + if (pAdvertising->setInstanceData( 0, extScannable ) && + pAdvertising->setInstanceData( 1, legacyConnectable ) && + pAdvertising->setScanResponseData( 1, legacyScanResponse )) { + /* + * `NimBLEExtAdvertising::start` takes the advertisement instance ID to start + * and a duration in milliseconds or a max number of advertisements to send (or both). + */ + if (pAdvertising->start(0, advTime) && pAdvertising->start(1, advTime)) { + printf("Started advertising\n"); + } else { + printf("Failed to start advertising\n"); + } + } else { + printf("Failed to register advertisment data\n"); + } + + esp_sleep_enable_timer_wakeup(sleepTime * 1000000); +} diff --git a/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/sdkconfig.defaults new file mode 100644 index 0000000..81960c1 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/sdkconfig.defaults @@ -0,0 +1,13 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_EXT_ADV=y diff --git a/lib/esp-nimble-cpp/examples/NimBLE_active_passive_scan/NimBLE_active_passive_scan.ino b/lib/esp-nimble-cpp/examples/NimBLE_active_passive_scan/NimBLE_active_passive_scan.ino new file mode 100644 index 0000000..9dceb4e --- /dev/null +++ b/lib/esp-nimble-cpp/examples/NimBLE_active_passive_scan/NimBLE_active_passive_scan.ino @@ -0,0 +1,48 @@ +/* + * NimBLE Scan active/passive switching demo + * + * Demonstrates the use of the scan callbacks while alternating between passive and active scanning. + */ + +#include "NimBLEDevice.h" +int scanTime = 5 * 1000; // In milliseconds, 0 = scan forever +BLEScan* pBLEScan; + +bool active = false; + +class scanCallbacks: public NimBLEScanCallbacks { + + void onDiscovered(NimBLEAdvertisedDevice* advertisedDevice) { + Serial.printf("Discovered Advertised Device: %s \n", advertisedDevice->toString().c_str()); + } + + void onResult(NimBLEAdvertisedDevice* advertisedDevice) { + Serial.printf("Advertised Device Result: %s \n", advertisedDevice->toString().c_str()); + } + + void onScanEnd(NimBLEScanResults results){ + Serial.println("Scan Ended"); + active = !active; + pBLEScan->setActiveScan(active); + Serial.printf("scan start, active = %u\n", active); + pBLEScan->start(scanTime); + } +}; + + + +void setup() { + Serial.begin(115200); + Serial.println("Scanning..."); + + NimBLEDevice::init(""); + pBLEScan = NimBLEDevice::getScan(); + pBLEScan->setScanCallbacks(new scanCallbacks()); + pBLEScan->setActiveScan(active); + pBLEScan->setInterval(100); + pBLEScan->setWindow(99); + pBLEScan->start(scanTime); +} + +void loop() { +} diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_client/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_client/CMakeLists.txt new file mode 100644 index 0000000..8f619c4 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_client/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(BLE_client) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_client/Makefile b/lib/esp-nimble-cpp/examples/basic/BLE_client/Makefile new file mode 100644 index 0000000..d2e7b5a --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_client/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := BLE_client + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_client/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_client/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_client/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_client/main/component.mk b/lib/esp-nimble-cpp/examples/basic/BLE_client/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_client/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_client/main/main.cpp b/lib/esp-nimble-cpp/examples/basic/BLE_client/main/main.cpp new file mode 100644 index 0000000..cfb80e9 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_client/main/main.cpp @@ -0,0 +1,214 @@ +/** + * A BLE client example that is rich in capabilities. + * There is a lot new capabilities implemented. + * author unknown + * updated by chegewara + * updated for NimBLE by H2zero + */ + +/** NimBLE differences highlighted in comment blocks **/ + +/*******original******** +#include "BLEDevice.h" +***********************/ +#include "NimBLEDevice.h" + +extern "C"{void app_main(void);} + +// The remote service we wish to connect to. +static BLEUUID serviceUUID("4fafc201-1fb5-459e-8fcc-c5c9c331914b"); +// The characteristic of the remote service we are interested in. +static BLEUUID charUUID("beb5483e-36e1-4688-b7f5-ea07361b26a8"); + +static bool doConnect = false; +static bool connected = false; +static bool doScan = false; +static BLERemoteCharacteristic* pRemoteCharacteristic; +static BLEAdvertisedDevice* myDevice; + +static void notifyCallback( + BLERemoteCharacteristic* pBLERemoteCharacteristic, + uint8_t* pData, + size_t length, + bool isNotify) { + printf("Notify callback for characteristic %s of data length %d data: %s\n", + pBLERemoteCharacteristic->getUUID().toString().c_str(), + length, + (char*)pData); +} + +/** None of these are required as they will be handled by the library with defaults. ** + ** Remove as you see fit for your needs */ +class MyClientCallback : public BLEClientCallbacks { + void onConnect(BLEClient* pclient) { + } + + /** onDisconnect now takes a reason parameter to indicate the reason for disconnection + void onDisconnect(BLEClient* pclient) { */ + void onDisconnect(BLEClient* pclient, int reason) { + connected = false; + printf("onDisconnect"); + } +/***************** New - Security handled here ******************** +****** Note: these are the same return values as defaults ********/ + void onPassKeyEntry(const NimBLEConnInfo& connInfo){ + printf("Server Passkey Entry\n"); + /** This should prompt the user to enter the passkey displayed + * on the peer device. + */ + NimBLEDevice::injectPassKey(connInfo, 123456); + }; + + void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pass_key){ + printf("The passkey YES/NO number: %" PRIu32 "\n", pass_key); + /** Inject false if passkeys don't match. */ + NimBLEDevice::injectConfirmPIN(connInfo, true); + }; + + /** Pairing process complete, we can check the results in connInfo */ + void onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + if(!connInfo.isEncrypted()) { + printf("Encrypt connection failed - disconnecting\n"); + /** Find the client with the connection handle provided in desc */ + NimBLEDevice::getClientByID(connInfo.getConnHandle())->disconnect(); + return; + } + } +/*******************************************************************/ +}; + +bool connectToServer() { + printf("Forming a connection to %s\n", myDevice->getAddress().toString().c_str()); + + BLEClient* pClient = BLEDevice::createClient(); + printf(" - Created client\n"); + + pClient->setClientCallbacks(new MyClientCallback()); + + // Connect to the remove BLE Server. + pClient->connect(myDevice); // if you pass BLEAdvertisedDevice instead of address, it will be recognized type of peer device address (public or private) + printf(" - Connected to server\n"); + + // Obtain a reference to the service we are after in the remote BLE server. + BLERemoteService* pRemoteService = pClient->getService(serviceUUID); + if (pRemoteService == nullptr) { + printf("Failed to find our service UUID: %s\n", serviceUUID.toString().c_str()); + pClient->disconnect(); + return false; + } + printf(" - Found our service\n"); + + + // Obtain a reference to the characteristic in the service of the remote BLE server. + pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID); + if (pRemoteCharacteristic == nullptr) { + printf("Failed to find our characteristic UUID: %s\n", charUUID.toString().c_str()); + pClient->disconnect(); + return false; + } + printf(" - Found our characteristic\n"); + + // Read the value of the characteristic. + if(pRemoteCharacteristic->canRead()) { + std::string value = pRemoteCharacteristic->readValue(); + printf("The characteristic value was: %s\n", value.c_str()); + } + + /** registerForNotify() has been removed and replaced with subscribe() / unsubscribe(). + * Subscribe parameter defaults are: notifications=true, notifyCallback=nullptr, response=true. + * Unsubscribe parameter defaults are: response=true. + */ + if(pRemoteCharacteristic->canNotify()) { + //pRemoteCharacteristic->registerForNotify(notifyCallback); + pRemoteCharacteristic->subscribe(true, notifyCallback); + } + + connected = true; + return true; +} + +/** + * Scan for BLE servers and find the first one that advertises the service we are looking for. + */ +class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { + /** + * Called for each advertising BLE server. + */ + +/*** Only a reference to the advertised device is passed now + void onResult(BLEAdvertisedDevice advertisedDevice) { **/ + void onResult(BLEAdvertisedDevice* advertisedDevice) { + printf("BLE Advertised Device found: %s\n", advertisedDevice->toString().c_str()); + + // We have found a device, let us now see if it contains the service we are looking for. +/******************************************************************************** + if (advertisedDevice.haveServiceUUID() && advertisedDevice.isAdvertisingService(serviceUUID)) { +********************************************************************************/ + if (advertisedDevice->haveServiceUUID() && advertisedDevice->isAdvertisingService(serviceUUID)) { + + BLEDevice::getScan()->stop(); +/******************************************************************* + myDevice = new BLEAdvertisedDevice(advertisedDevice); +*******************************************************************/ + myDevice = advertisedDevice; /** Just save the reference now, no need to copy the object */ + doConnect = true; + doScan = true; + + } // Found our server + } // onResult +}; // MyAdvertisedDeviceCallbacks + + +// This is the Arduino main loop function. +void connectTask (void * parameter){ + for(;;) { + // If the flag "doConnect" is true then we have scanned for and found the desired + // BLE Server with which we wish to connect. Now we connect to it. Once we are + // connected we set the connected flag to be true. + if (doConnect == true) { + if (connectToServer()) { + printf("We are now connected to the BLE Server.\n"); + } else { + printf("We have failed to connect to the server; there is nothin more we will do.\n"); + } + doConnect = false; + } + + // If we are connected to a peer BLE Server, update the characteristic each time we are reached + // with the current time since boot. + if (connected) { + char buf[256]; + snprintf(buf, 256, "Time since boot: %lu", (unsigned long)(esp_timer_get_time() / 1000000ULL)); + printf("Setting new characteristic value to %s\n", buf); + + // Set the characteristic's value to be the array of bytes that is actually a string. + /*** Note: write value now returns true if successful, false otherwise - try again or disconnect ***/ + pRemoteCharacteristic->writeValue((uint8_t*)buf, strlen(buf), false); + }else if(doScan){ + BLEDevice::getScan()->start(0); // this is just eample to start scan after disconnect, most likely there is better way to do it + } + + vTaskDelay(1000/portTICK_PERIOD_MS); // Delay a second between loops. + } + + vTaskDelete(NULL); +} // End of loop + + +void app_main(void) { + printf("Starting BLE Client application...\n"); + BLEDevice::init(""); + + // Retrieve a Scanner and set the callback we want to use to be informed when we + // have detected a new device. Specify that we want active scanning and start the + // scan to run for 5 seconds. + BLEScan* pBLEScan = BLEDevice::getScan(); + pBLEScan->setScanCallbacks(new MyAdvertisedDeviceCallbacks()); + pBLEScan->setInterval(1349); + pBLEScan->setWindow(449); + pBLEScan->setActiveScan(true); + + xTaskCreate(connectTask, "connectTask", 5000, NULL, 1, NULL); + pBLEScan->start(5 * 1000, false); +} // End of setup. + diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_client/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/basic/BLE_client/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_client/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_notify/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_notify/CMakeLists.txt new file mode 100644 index 0000000..dbfacf5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_notify/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(BLE_notify) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_notify/Makefile b/lib/esp-nimble-cpp/examples/basic/BLE_notify/Makefile new file mode 100644 index 0000000..b895d99 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_notify/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := BLE_notify + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/component.mk b/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/main.cpp b/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/main.cpp new file mode 100644 index 0000000..b17f49a --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_notify/main/main.cpp @@ -0,0 +1,164 @@ +/* + Video: https://www.youtube.com/watch?v=oCMOYS71NIU + Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp + Ported to Arduino ESP32 by Evandro Copercini + updated by chegewara + Refactored back to IDF by H2zero + + Create a BLE server that, once we receive a connection, will send periodic notifications. + The service advertises itself as: 4fafc201-1fb5-459e-8fcc-c5c9c331914b + And has a characteristic of: beb5483e-36e1-4688-b7f5-ea07361b26a8 + + The design of creating the BLE server is: + 1. Create a BLE Server + 2. Create a BLE Service + 3. Create a BLE Characteristic on the Service + 4. Create a BLE Descriptor on the characteristic + 5. Start the service. + 6. Start advertising. + + A connect hander associated with the server starts a background task that performs notification + every couple of seconds. +*/ + +/** NimBLE differences highlighted in comment blocks **/ + +/*******original******** +#include +#include +#include +#include +***********************/ +#include + +extern "C" {void app_main(void);} + +BLEServer* pServer = NULL; +BLECharacteristic* pCharacteristic = NULL; +bool deviceConnected = false; +bool oldDeviceConnected = false; +uint32_t value = 0; + +// See the following for generating UUIDs: +// https://www.uuidgenerator.net/ + +#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" +#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" + +/** None of these are required as they will be handled by the library with defaults. ** + ** Remove as you see fit for your needs */ +class MyServerCallbacks: public BLEServerCallbacks { + void onConnect(BLEServer* pServer, BLEConnInfo& connInfo) { + deviceConnected = true; + }; + + void onDisconnect(BLEServer* pServer, BLEConnInfo& connInfo, int reason) { + deviceConnected = false; + } +/***************** New - Security handled here ******************** +****** Note: these are the same return values as defaults ********/ + uint32_t onPassKeyDisplay(){ + printf("Server Passkey Display\n"); + /** This should return a random 6 digit number for security + * or make your own static passkey as done here. + */ + return 123456; + }; + + void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pass_key){ + printf("The passkey YES/NO number: %" PRIu32 "\n", pass_key); + /** Inject false if passkeys don't match. */ + NimBLEDevice::injectConfirmPIN(connInfo, true); + }; + + void onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + /** Check that encryption was successful, if not we disconnect the client */ + if(!connInfo.isEncrypted()) { + NimBLEDevice::getServer()->disconnect(connInfo.getConnHandle()); + printf("Encrypt connection failed - disconnecting client\n"); + return; + } + printf("Starting BLE work!"); + }; +/*******************************************************************/ +}; + +void connectedTask (void * parameter){ + for(;;) { + // notify changed value + if (deviceConnected) { + pCharacteristic->setValue((uint8_t*)&value, 4); + pCharacteristic->notify(); + value++; + vTaskDelay(100/portTICK_PERIOD_MS); // bluetooth stack will go into congestion, if too many packets are sent + } + // disconnecting + if (!deviceConnected && oldDeviceConnected) { + vTaskDelay(500/portTICK_PERIOD_MS); // give the bluetooth stack the chance to get things ready + pServer->startAdvertising(); // restart advertising + printf("start advertising\n"); + oldDeviceConnected = deviceConnected; + } + // connecting + if (deviceConnected && !oldDeviceConnected) { + // do stuff here on connecting + oldDeviceConnected = deviceConnected; + } + + vTaskDelay(10/portTICK_PERIOD_MS); // Delay between loops to reset watchdog timer + } + + vTaskDelete(NULL); +} + +void app_main(void) { + // Create the BLE Device + BLEDevice::init("ESP32"); + + // Create the BLE Server + pServer = BLEDevice::createServer(); + pServer->setCallbacks(new MyServerCallbacks()); + + // Create the BLE Service + BLEService *pService = pServer->createService(SERVICE_UUID); + + // Create a BLE Characteristic + pCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID, + /******* Enum Type NIMBLE_PROPERTY now ******* + BLECharacteristic::PROPERTY_READ | + BLECharacteristic::PROPERTY_WRITE | + BLECharacteristic::PROPERTY_NOTIFY | + BLECharacteristic::PROPERTY_INDICATE + ); + **********************************************/ + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + NIMBLE_PROPERTY::NOTIFY | + NIMBLE_PROPERTY::INDICATE + ); + + // Create a BLE Descriptor + /*************************************************** + NOTE: DO NOT create a 2902 descriptor. + it will be created automatically if notifications + or indications are enabled on a characteristic. + + pCharacteristic->addDescriptor(new BLE2902()); + ****************************************************/ + // Start the service + pService->start(); + + // Start advertising + BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); + pAdvertising->addServiceUUID(SERVICE_UUID); + pAdvertising->setScanResponse(false); + /** This method had been removed ** + pAdvertising->setMinPreferred(0x0); // set value to 0x00 to not advertise this parameter + **/ + + xTaskCreate(connectedTask, "connectedTask", 5000, NULL, 1, NULL); + + BLEDevice::startAdvertising(); + printf("Waiting a client connection to notify...\n"); +} diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_notify/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/basic/BLE_notify/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_notify/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_scan/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_scan/CMakeLists.txt new file mode 100644 index 0000000..0f64bee --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_scan/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(BLE_scan) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_scan/Makefile b/lib/esp-nimble-cpp/examples/basic/BLE_scan/Makefile new file mode 100644 index 0000000..ebca276 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_scan/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := BLE_scan + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/component.mk b/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/main.cpp b/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/main.cpp new file mode 100644 index 0000000..d936c01 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_scan/main/main.cpp @@ -0,0 +1,52 @@ +/* + Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp + Ported to Arduino ESP32 by Evandro Copercini + Refactored back to IDF by H2zero +*/ + +/** NimBLE differences highlighted in comment blocks **/ + +/*******original******** +#include +#include +#include +#include +***********************/ + +#include + +extern "C"{void app_main(void);} + +int scanTime = 5 * 1000; // In milliseconds, 0 = scan forever +BLEScan* pBLEScan; + +class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { + void onResult(BLEAdvertisedDevice* advertisedDevice) { + printf("Advertised Device: %s \n", advertisedDevice->toString().c_str()); + } +}; + +void scanTask (void * parameter){ + for(;;) { + // put your main code here, to run repeatedly: + BLEScanResults foundDevices = pBLEScan->getResults(scanTime, false); + printf("Devices found: %d\n", foundDevices.getCount()); + printf("Scan done!\n"); + pBLEScan->clearResults(); // delete results fromBLEScan buffer to release memory + vTaskDelay(2000/portTICK_PERIOD_MS); // Delay a second between loops. + } + + vTaskDelete(NULL); +} + +void app_main(void) { + printf("Scanning...\n"); + + BLEDevice::init(""); + pBLEScan = BLEDevice::getScan(); //create new scan + pBLEScan->setScanCallbacks(new MyAdvertisedDeviceCallbacks()); + pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster + pBLEScan->setInterval(100); + pBLEScan->setWindow(99); // less or equal setInterval value + xTaskCreate(scanTask, "scanTask", 5000, NULL, 1, NULL); +} diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_scan/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/basic/BLE_scan/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_scan/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_server/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_server/CMakeLists.txt new file mode 100644 index 0000000..03b5365 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_server/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(BLE_server) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_server/Makefile b/lib/esp-nimble-cpp/examples/basic/BLE_server/Makefile new file mode 100644 index 0000000..92dd6cd --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_server/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := BLE_server + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_server/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_server/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_server/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_server/main/component.mk b/lib/esp-nimble-cpp/examples/basic/BLE_server/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_server/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_server/main/main.cpp b/lib/esp-nimble-cpp/examples/basic/BLE_server/main/main.cpp new file mode 100644 index 0000000..85c0a3e --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_server/main/main.cpp @@ -0,0 +1,57 @@ +/* + Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleServer.cpp + Ported to Arduino ESP32 by Evandro Copercini + updates by chegewara + Refactored back to IDF by H2zero +*/ + +/** NimBLE differences highlighted in comment blocks **/ + +/*******original******** +#include +#include +#include +***********************/ + +#include + +extern "C"{void app_main(void);} + +// See the following for generating UUIDs: +// https://www.uuidgenerator.net/ + +#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" +#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" + +void app_main(void) { + printf("Starting BLE work!\n"); + + BLEDevice::init("Long name works now"); + BLEServer *pServer = BLEDevice::createServer(); + BLEService *pService = pServer->createService(SERVICE_UUID); + BLECharacteristic *pCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID, + /***** Enum Type NIMBLE_PROPERTY now ***** + BLECharacteristic::PROPERTY_READ | + BLECharacteristic::PROPERTY_WRITE + ); + *****************************************/ + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE + ); + + pCharacteristic->setValue("Hello World says Neil"); + pService->start(); + // BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility + BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); + pAdvertising->addServiceUUID(SERVICE_UUID); + pAdvertising->setScanResponse(true); + + /** These methods have been removed ** + pAdvertising->setMinPreferred(0x06); // functions that help with iPhone connections issue + pAdvertising->setMinPreferred(0x12); + */ + + BLEDevice::startAdvertising(); + printf("Characteristic defined! Now you can read it in your phone!\n"); +} diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_server/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/basic/BLE_server/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_server/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_uart/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_uart/CMakeLists.txt new file mode 100644 index 0000000..9060e47 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_uart/CMakeLists.txt @@ -0,0 +1,7 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +set(SUPPORTED_TARGETS esp32) +project(BLE_uart) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_uart/Makefile b/lib/esp-nimble-cpp/examples/basic/BLE_uart/Makefile new file mode 100644 index 0000000..9323b57 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_uart/Makefile @@ -0,0 +1,3 @@ +PROJECT_NAME := BLE_uart + +include $(IDF_PATH)/make/project.mk diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/CMakeLists.txt b/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/CMakeLists.txt new file mode 100644 index 0000000..9be9075 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "main.cpp") +set(COMPONENT_ADD_INCLUDEDIRS ".") + +register_component() \ No newline at end of file diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/component.mk b/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/component.mk new file mode 100644 index 0000000..a98f634 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/component.mk @@ -0,0 +1,4 @@ +# +# "main" pseudo-component makefile. +# +# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/main.cpp b/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/main.cpp new file mode 100644 index 0000000..18df6fa --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_uart/main/main.cpp @@ -0,0 +1,177 @@ +/* + Video: https://www.youtube.com/watch?v=oCMOYS71NIU + Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp + Ported to Arduino ESP32 by Evandro Copercini + Refactored back to IDF by H2zero + + Create a BLE server that, once we receive a connection, will send periodic notifications. + The service advertises itself as: 6E400001-B5A3-F393-E0A9-E50E24DCCA9E + Has a characteristic of: 6E400002-B5A3-F393-E0A9-E50E24DCCA9E - used for receiving data with "WRITE" + Has a characteristic of: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E - used to send data with "NOTIFY" + + The design of creating the BLE server is: + 1. Create a BLE Server + 2. Create a BLE Service + 3. Create a BLE Characteristic on the Service + 4. Create a BLE Descriptor on the characteristic + 5. Start the service. + 6. Start advertising. + + In this example rxValue is the data received (only accessible inside that function). + And txValue is the data to be sent, in this example just a byte incremented every second. +*/ + +/** NimBLE differences highlighted in comment blocks **/ + +/*******original******** +#include +#include +#include +#include +***********************/ +#include + +extern "C"{void app_main(void);} + +BLEServer *pServer = NULL; +BLECharacteristic * pTxCharacteristic; +bool deviceConnected = false; +bool oldDeviceConnected = false; +uint8_t txValue = 0; + +// See the following for generating UUIDs: +// https://www.uuidgenerator.net/ + +#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID +#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E" +#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E" + + +/** None of these are required as they will be handled by the library with defaults. ** + ** Remove as you see fit for your needs */ +class MyServerCallbacks: public BLEServerCallbacks { + void onConnect(BLEServer* pServer, BLEConnInfo& connInfo) { + deviceConnected = true; + }; + + void onDisconnect(BLEServer* pServer, BLEConnInfo& connInfo, int reason) { + deviceConnected = false; + } + /***************** New - Security handled here ******************** + ****** Note: these are the same return values as defaults ********/ + uint32_t onPassKeyDisplay(){ + printf("Server Passkey Display\n"); + /** This should return a random 6 digit number for security + * or make your own static passkey as done here. + */ + return 123456; + }; + + void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pass_key){ + printf("The passkey YES/NO number: %" PRIu32 "\n", pass_key); + /** Inject false if passkeys don't match. */ + NimBLEDevice::injectConfirmPIN(connInfo, true); + }; + + void onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + /** Check that encryption was successful, if not we disconnect the client */ + if(!connInfo.isEncrypted()) { + NimBLEDevice::getServer()->disconnect(connInfo.getConnHandle()); + printf("Encrypt connection failed - disconnecting client\n"); + return; + } + printf("Starting BLE work!"); + }; + /*******************************************************************/ +}; + +class MyCallbacks: public BLECharacteristicCallbacks { + void onWrite(BLECharacteristic *pCharacteristic, BLEConnInfo& connInfo) { + std::string rxValue = pCharacteristic->getValue(); + + if (rxValue.length() > 0) { + printf("*********\n"); + printf("Received Value: "); + for (int i = 0; i < rxValue.length(); i++) + printf("%d", rxValue[i]); + + printf("\n*********\n"); + } + } +}; + +void connectedTask (void * parameter){ + for(;;) { + if (deviceConnected) { + pTxCharacteristic->setValue(&txValue, 1); + pTxCharacteristic->notify(); + txValue++; + } + + // disconnecting + if (!deviceConnected && oldDeviceConnected) { + pServer->startAdvertising(); // restart advertising + printf("start advertising\n"); + oldDeviceConnected = deviceConnected; + } + // connecting + if (deviceConnected && !oldDeviceConnected) { + // do stuff here on connecting + oldDeviceConnected = deviceConnected; + } + + vTaskDelay(10/portTICK_PERIOD_MS); // Delay between loops to reset watchdog timer + } + + vTaskDelete(NULL); +} + +void app_main(void) { + // Create the BLE Device + BLEDevice::init("UART Service"); + + // Create the BLE Server + pServer = BLEDevice::createServer(); + pServer->setCallbacks(new MyServerCallbacks()); + + // Create the BLE Service + BLEService *pService = pServer->createService(SERVICE_UUID); + + // Create a BLE Characteristic + pTxCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID_TX, + /******* Enum Type NIMBLE_PROPERTY now ******* + BLECharacteristic::PROPERTY_NOTIFY + ); + **********************************************/ + NIMBLE_PROPERTY::NOTIFY + ); + + /*************************************************** + NOTE: DO NOT create a 2902 descriptor + it will be created automatically if notifications + or indications are enabled on a characteristic. + + pCharacteristic->addDescriptor(new BLE2902()); + ****************************************************/ + + BLECharacteristic * pRxCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID_RX, + /******* Enum Type NIMBLE_PROPERTY now ******* + BLECharacteristic::PROPERTY_WRITE + ); + *********************************************/ + NIMBLE_PROPERTY::WRITE + ); + + pRxCharacteristic->setCallbacks(new MyCallbacks()); + + // Start the service + pService->start(); + + xTaskCreate(connectedTask, "connectedTask", 5000, NULL, 1, NULL); + + // Start advertising + pServer->getAdvertising()->start(); + printf("Waiting a client connection to notify...\n"); +} diff --git a/lib/esp-nimble-cpp/examples/basic/BLE_uart/sdkconfig.defaults b/lib/esp-nimble-cpp/examples/basic/BLE_uart/sdkconfig.defaults new file mode 100644 index 0000000..c829fc5 --- /dev/null +++ b/lib/esp-nimble-cpp/examples/basic/BLE_uart/sdkconfig.defaults @@ -0,0 +1,12 @@ +# Override some defaults so BT stack is enabled +# in this example + +# +# BT config +# +CONFIG_BT_ENABLED=y +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n +CONFIG_BT_NIMBLE_ENABLED=y diff --git a/lib/esp-nimble-cpp/library.json b/lib/esp-nimble-cpp/library.json new file mode 100644 index 0000000..a3d9c9e --- /dev/null +++ b/lib/esp-nimble-cpp/library.json @@ -0,0 +1,8 @@ +{ + "name": "esp-nimble-cpp", + "keywords": "esp32, bluetooth", + "description": "Bluetooth low energy (BLE) library for esp32 based on NimBLE", + "version": "1.4.1", + "frameworks": "arduino", + "platforms": "espressif32" +} diff --git a/lib/esp-nimble-cpp/library.properties b/lib/esp-nimble-cpp/library.properties new file mode 100644 index 0000000..dc0d52c --- /dev/null +++ b/lib/esp-nimble-cpp/library.properties @@ -0,0 +1,10 @@ +name=esp-nimble-cpp +version=1.4.1 +author=h2zero +maintainer=h2zero +sentence=Bluetooth low energy (BLE) library for esp32 based on NimBLE. +paragraph=This is a more updated and lower resource alternative to the original bluedroid BLE library for esp32. Uses 50% less flash space and approximately 100KB less ram with the same functionality. Nearly 100% compatible with existing application code, migration guide included. +url=https://github.com/h2zero/esp-nimble-cpp +category=Communication +architectures=esp32,arm-ble +includes=NimBLEDevice.h \ No newline at end of file diff --git a/lib/esp-nimble-cpp/package.json b/lib/esp-nimble-cpp/package.json new file mode 100644 index 0000000..1efe13e --- /dev/null +++ b/lib/esp-nimble-cpp/package.json @@ -0,0 +1,17 @@ +{ + "name": "esp-nimble-cpp", + "version": "1.5.0", + "description": "NimBLE, BLE stack for the Espressif ESP32, ESP32-S and ESP32-C series of SoCs", + "keywords": [ + "BLE", + "espidf", + "arduino", + "espressif", + "esp32" + ], + "license": "LGPL-2.1-or-later", + "repository": { + "type": "git", + "url": "https://github.com/h2zero/esp-nimble-cpp" + } +} diff --git a/lib/NimBLE-Arduino/src/HIDKeyboardTypes.h b/lib/esp-nimble-cpp/src/HIDKeyboardTypes.h similarity index 100% rename from lib/NimBLE-Arduino/src/HIDKeyboardTypes.h rename to lib/esp-nimble-cpp/src/HIDKeyboardTypes.h diff --git a/lib/NimBLE-Arduino/src/HIDTypes.h b/lib/esp-nimble-cpp/src/HIDTypes.h similarity index 100% rename from lib/NimBLE-Arduino/src/HIDTypes.h rename to lib/esp-nimble-cpp/src/HIDTypes.h diff --git a/lib/esp-nimble-cpp/src/NimBLE2904.cpp b/lib/esp-nimble-cpp/src/NimBLE2904.cpp new file mode 100644 index 0000000..486fa5e --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLE2904.cpp @@ -0,0 +1,82 @@ +/* + * NimBLE2904.cpp + * + * Created: on March 13, 2020 + * Author H2zero + * + * Originally: + * + * BLE2904.cpp + * + * Created on: Dec 23, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLE2904.h" + + +NimBLE2904::NimBLE2904(NimBLECharacteristic* pCharacteristic) +: NimBLEDescriptor(NimBLEUUID((uint16_t) 0x2904), + BLE_GATT_CHR_F_READ, + sizeof(BLE2904_Data), + pCharacteristic) +{ + m_data.m_format = 0; + m_data.m_exponent = 0; + m_data.m_namespace = 1; // 1 = Bluetooth SIG Assigned Numbers + m_data.m_unit = 0; + m_data.m_description = 0; + setValue((uint8_t*) &m_data, sizeof(m_data)); +} // BLE2904 + + +/** + * @brief Set the description. + */ +void NimBLE2904::setDescription(uint16_t description) { + m_data.m_description = description; + setValue((uint8_t*) &m_data, sizeof(m_data)); +} + + +/** + * @brief Set the exponent. + */ +void NimBLE2904::setExponent(int8_t exponent) { + m_data.m_exponent = exponent; + setValue((uint8_t*) &m_data, sizeof(m_data)); +} // setExponent + + +/** + * @brief Set the format. + */ +void NimBLE2904::setFormat(uint8_t format) { + m_data.m_format = format; + setValue((uint8_t*) &m_data, sizeof(m_data)); +} // setFormat + + +/** + * @brief Set the namespace. + */ +void NimBLE2904::setNamespace(uint8_t namespace_value) { + m_data.m_namespace = namespace_value; + setValue((uint8_t*) &m_data, sizeof(m_data)); +} // setNamespace + + +/** + * @brief Set the units for this value. It should be one of the encoded values defined here: + * https://www.bluetooth.com/specifications/assigned-numbers/units + * @param [in] unit The type of units of this characteristic as defined by assigned numbers. + */ +void NimBLE2904::setUnit(uint16_t unit) { + m_data.m_unit = unit; + setValue((uint8_t*) &m_data, sizeof(m_data)); +} // setUnit + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLE2904.h b/lib/esp-nimble-cpp/src/NimBLE2904.h new file mode 100644 index 0000000..52ae2d3 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLE2904.h @@ -0,0 +1,80 @@ +/* + * NimBLE2904.h + * + * Created: on March 13, 2020 + * Author H2zero + * + * Originally: + * + * BLE2904.h + * + * Created on: Dec 23, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLE2904_H_ +#define MAIN_NIMBLE2904_H_ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLEDescriptor.h" + +struct BLE2904_Data { + uint8_t m_format; + int8_t m_exponent; + uint16_t m_unit; // See https://www.bluetooth.com/specifications/assigned-numbers/units + uint8_t m_namespace; + uint16_t m_description; + +} __attribute__((packed)); + + +/** + * @brief Descriptor for Characteristic Presentation Format. + * + * This is a convenience descriptor for the Characteristic Presentation Format which has a UUID of 0x2904. + */ +class NimBLE2904: public NimBLEDescriptor { +public: + NimBLE2904(NimBLECharacteristic* pCharacterisitic = nullptr); + static const uint8_t FORMAT_BOOLEAN = 1; + static const uint8_t FORMAT_UINT2 = 2; + static const uint8_t FORMAT_UINT4 = 3; + static const uint8_t FORMAT_UINT8 = 4; + static const uint8_t FORMAT_UINT12 = 5; + static const uint8_t FORMAT_UINT16 = 6; + static const uint8_t FORMAT_UINT24 = 7; + static const uint8_t FORMAT_UINT32 = 8; + static const uint8_t FORMAT_UINT48 = 9; + static const uint8_t FORMAT_UINT64 = 10; + static const uint8_t FORMAT_UINT128 = 11; + static const uint8_t FORMAT_SINT8 = 12; + static const uint8_t FORMAT_SINT12 = 13; + static const uint8_t FORMAT_SINT16 = 14; + static const uint8_t FORMAT_SINT24 = 15; + static const uint8_t FORMAT_SINT32 = 16; + static const uint8_t FORMAT_SINT48 = 17; + static const uint8_t FORMAT_SINT64 = 18; + static const uint8_t FORMAT_SINT128 = 19; + static const uint8_t FORMAT_FLOAT32 = 20; + static const uint8_t FORMAT_FLOAT64 = 21; + static const uint8_t FORMAT_SFLOAT16 = 22; + static const uint8_t FORMAT_SFLOAT32 = 23; + static const uint8_t FORMAT_IEEE20601 = 24; + static const uint8_t FORMAT_UTF8 = 25; + static const uint8_t FORMAT_UTF16 = 26; + static const uint8_t FORMAT_OPAQUE = 27; + + void setDescription(uint16_t); + void setExponent(int8_t exponent); + void setFormat(uint8_t format); + void setNamespace(uint8_t namespace_value); + void setUnit(uint16_t unit); + +private: + friend class NimBLECharacteristic; + BLE2904_Data m_data; +}; // BLE2904 + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ +#endif /* MAIN_NIMBLE2904_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEAddress.cpp b/lib/esp-nimble-cpp/src/NimBLEAddress.cpp new file mode 100644 index 0000000..af7956b --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAddress.cpp @@ -0,0 +1,206 @@ +/* + * NimBLEAddress.cpp + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEAddress.cpp + * + * Created on: Jul 2, 2017 + * Author: kolban + */ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include + +#include "NimBLEAddress.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +static const char* LOG_TAG = "NimBLEAddress"; + +/************************************************* + * NOTE: NimBLE address bytes are in INVERSE ORDER! + * We will accomodate that fact in these methods. +*************************************************/ + +/** + * @brief Create an address from the native NimBLE representation. + * @param [in] address The native NimBLE address. + */ +NimBLEAddress::NimBLEAddress(ble_addr_t address) { + memcpy(m_address, address.val, 6); + m_addrType = address.type; +} // NimBLEAddress + + +/** + * @brief Create a blank address, i.e. 00:00:00:00:00:00, type 0. + */ +NimBLEAddress::NimBLEAddress() { + NimBLEAddress(""); +} // NimBLEAddress + + +/** + * @brief Create an address from a hex string + * + * A hex string is of the format: + * ``` + * 00:00:00:00:00:00 + * ``` + * which is 17 characters in length. + * + * @param [in] stringAddress The hex string representation of the address. + * @param [in] type The type of the address. + */ +NimBLEAddress::NimBLEAddress(const std::string &stringAddress, uint8_t type) { + m_addrType = type; + + if (stringAddress.length() == 0) { + memset(m_address, 0, 6); + return; + } + + if (stringAddress.length() == 6) { + std::reverse_copy(stringAddress.data(), stringAddress.data() + 6, m_address); + return; + } + + if (stringAddress.length() != 17) { + memset(m_address, 0, sizeof m_address); // "00:00:00:00:00:00" represents an invalid address + NIMBLE_LOGD(LOG_TAG, "Invalid address '%s'", stringAddress.c_str()); + return; + } + + int data[6]; + if(sscanf(stringAddress.c_str(), "%x:%x:%x:%x:%x:%x", &data[5], &data[4], &data[3], &data[2], &data[1], &data[0]) != 6) { + memset(m_address, 0, sizeof m_address); // "00:00:00:00:00:00" represents an invalid address + NIMBLE_LOGD(LOG_TAG, "Invalid address '%s'", stringAddress.c_str()); + } + for(size_t index = 0; index < sizeof m_address; index++) { + m_address[index] = data[index]; + } +} // NimBLEAddress + + +/** + * @brief Constructor for compatibility with bluedroid esp library using native ESP representation. + * @param [in] address A uint8_t[6] or esp_bd_addr_t containing the address. + * @param [in] type The type of the address. + */ +NimBLEAddress::NimBLEAddress(uint8_t address[6], uint8_t type) { + std::reverse_copy(address, address + sizeof m_address, m_address); + m_addrType = type; +} // NimBLEAddress + + +/** + * @brief Constructor for address using a hex value.\n + * Use the same byte order, so use 0xa4c1385def16 for "a4:c1:38:5d:ef:16" + * @param [in] address uint64_t containing the address. + * @param [in] type The type of the address. + */ +NimBLEAddress::NimBLEAddress(const uint64_t &address, uint8_t type) { + memcpy(m_address, &address, sizeof m_address); + m_addrType = type; +} // NimBLEAddress + + +/** + * @brief Determine if this address equals another. + * @param [in] otherAddress The other address to compare against. + * @return True if the addresses are equal. + */ +bool NimBLEAddress::equals(const NimBLEAddress &otherAddress) const { + return *this == otherAddress; +} // equals + + +/** + * @brief Get the native representation of the address. + * @return a pointer to the uint8_t[6] array of the address. + */ +const uint8_t *NimBLEAddress::getNative() const { + return m_address; +} // getNative + + +/** + * @brief Get the address type. + * @return The address type. + */ +uint8_t NimBLEAddress::getType() const { + return m_addrType; +} // getType + + +/** + * @brief Determine if this address is a Resolvable Private Address. + * @return True if the address is a RPA. + */ +bool NimBLEAddress::isRpa() const { + return (m_addrType && ((m_address[5] & 0xc0) == 0x40)); +} // isRpa + + +/** + * @brief Convert a BLE address to a string. + * + * A string representation of an address is in the format: + * + * ``` + * xx:xx:xx:xx:xx:xx + * ``` + * + * @return The string representation of the address. + * @deprecated Use std::string() operator instead. + */ +std::string NimBLEAddress::toString() const { + return std::string(*this); +} // toString + + +/** + * @brief Convenience operator to check if this address is equal to another. + */ +bool NimBLEAddress::operator ==(const NimBLEAddress & rhs) const { + return memcmp(rhs.m_address, m_address, sizeof m_address) == 0; +} // operator == + + +/** + * @brief Convenience operator to check if this address is not equal to another. + */ +bool NimBLEAddress::operator !=(const NimBLEAddress & rhs) const { + return !this->operator==(rhs); +} // operator != + + +/** + * @brief Convienience operator to convert this address to string representation. + * @details This allows passing NimBLEAddress to functions + * that accept std::string and/or or it's methods as a parameter. + */ +NimBLEAddress::operator std::string() const { + char buffer[18]; + snprintf(buffer, sizeof(buffer), "%02x:%02x:%02x:%02x:%02x:%02x", + m_address[5], m_address[4], m_address[3], + m_address[2], m_address[1], m_address[0]); + return std::string(buffer); +} // operator std::string + + +/** + * @brief Convenience operator to convert the native address representation to uint_64. + */ +NimBLEAddress::operator uint64_t() const { + uint64_t address = 0; + memcpy(&address, m_address, sizeof m_address); + return address; +} // operator uint64_t + +#endif diff --git a/lib/esp-nimble-cpp/src/NimBLEAddress.h b/lib/esp-nimble-cpp/src/NimBLEAddress.h new file mode 100644 index 0000000..8a55b3e --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAddress.h @@ -0,0 +1,63 @@ +/* + * NimBLEAddress.h + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEAddress.h + * + * Created on: Jul 2, 2017 + * Author: kolban + */ + +#ifndef COMPONENTS_NIMBLEADDRESS_H_ +#define COMPONENTS_NIMBLEADDRESS_H_ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "nimble/ble.h" +#else +#include "nimble/nimble/include/nimble/ble.h" +#endif + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +#include +#include + +/** + * @brief A %BLE device address. + * + * Every %BLE device has a unique address which can be used to identify it and form connections. + */ +class NimBLEAddress { +public: + NimBLEAddress(); + NimBLEAddress(ble_addr_t address); + NimBLEAddress(uint8_t address[6], uint8_t type = BLE_ADDR_PUBLIC); + NimBLEAddress(const std::string &stringAddress, uint8_t type = BLE_ADDR_PUBLIC); + NimBLEAddress(const uint64_t &address, uint8_t type = BLE_ADDR_PUBLIC); + bool isRpa() const; + bool equals(const NimBLEAddress &otherAddress) const; + const uint8_t* getNative() const; + std::string toString() const; + uint8_t getType() const; + + bool operator ==(const NimBLEAddress & rhs) const; + bool operator !=(const NimBLEAddress & rhs) const; + operator std::string() const; + operator uint64_t() const; + +private: + uint8_t m_address[6]; + uint8_t m_addrType; +}; + +#endif /* CONFIG_BT_ENABLED */ +#endif /* COMPONENTS_NIMBLEADDRESS_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.cpp b/lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.cpp new file mode 100644 index 0000000..bdc1358 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.cpp @@ -0,0 +1,920 @@ +/* + * NimBLEAdvertisedDevice.cpp + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEAdvertisedDevice.cpp + * + * Created on: Jul 3, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + +#include "NimBLEDevice.h" +#include "NimBLEAdvertisedDevice.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLEAdvertisedDevice"; + + +/** + * @brief Constructor + */ +NimBLEAdvertisedDevice::NimBLEAdvertisedDevice() : + m_payload(62,0) +{ + m_advType = 0; + m_rssi = -9999; + m_callbackSent = 0; + m_timestamp = 0; + m_advLength = 0; +} // NimBLEAdvertisedDevice + + +/** + * @brief Get the address of the advertising device. + * @return The address of the advertised device. + */ +NimBLEAddress NimBLEAdvertisedDevice::getAddress() { + return m_address; +} // getAddress + + +/** + * @brief Get the advertisement type. + * @return The advertising type the device is reporting: + * * BLE_HCI_ADV_TYPE_ADV_IND (0) - indirect advertising + * * BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_HD (1) - direct advertising - high duty cycle + * * BLE_HCI_ADV_TYPE_ADV_SCAN_IND (2) - indirect scan response + * * BLE_HCI_ADV_TYPE_ADV_NONCONN_IND (3) - indirect advertising - not connectable + * * BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_LD (4) - direct advertising - low duty cycle + */ +uint8_t NimBLEAdvertisedDevice::getAdvType() { + return m_advType; +} // getAdvType + + +/** + * @brief Get the advertisement flags. + * @return The advertisement flags, a bitmask of: + * BLE_HS_ADV_F_DISC_LTD (0x01) - limited discoverability + * BLE_HS_ADV_F_DISC_GEN (0x02) - general discoverability + * BLE_HS_ADV_F_BREDR_UNSUP - BR/EDR not supported + */ +uint8_t NimBLEAdvertisedDevice::getAdvFlags() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_FLAGS, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length == BLE_HS_ADV_FLAGS_LEN + 1) { + return *field->value; + } + } + return 0; +} // getAdvFlags + +/** + * @brief Get the appearance. + * + * A %BLE device can declare its own appearance. The appearance is how it would like to be shown to an end user + * typically in the form of an icon. + * + * @return The appearance of the advertised device. + */ +uint16_t NimBLEAdvertisedDevice::getAppearance() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_APPEARANCE, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length == BLE_HS_ADV_APPEARANCE_LEN + 1) { + return *field->value | *(field->value + 1) << 8; + } + } + + return 0; +} // getAppearance + + +/** + * @brief Get the advertisement interval. + * @return The advertisement interval in 0.625ms units. + */ +uint16_t NimBLEAdvertisedDevice::getAdvInterval() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_ADV_ITVL, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length == BLE_HS_ADV_ADV_ITVL_LEN + 1) { + return *field->value | *(field->value + 1) << 8; + } + } + + return 0; +} // getAdvInterval + + +/** + * @brief Get the preferred min connection interval. + * @return The preferred min connection interval in 1.25ms units. + */ +uint16_t NimBLEAdvertisedDevice::getMinInterval() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_SLAVE_ITVL_RANGE, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length == BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN + 1) { + return *field->value | *(field->value + 1) << 8; + } + } + + return 0; +} // getMinInterval + + +/** + * @brief Get the preferred max connection interval. + * @return The preferred max connection interval in 1.25ms units. + */ +uint16_t NimBLEAdvertisedDevice::getMaxInterval() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_SLAVE_ITVL_RANGE, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length == BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN + 1) { + return *(field->value + 2) | *(field->value + 3) << 8; + } + } + + return 0; +} // getMaxInterval + + +/** + * @brief Get the manufacturer data. + * @param [in] index The index of the of the manufacturer data set to get. + * @return The manufacturer data. + */ +std::string NimBLEAdvertisedDevice::getManufacturerData(uint8_t index) { + size_t data_loc = 0; + index++; + + if(findAdvField(BLE_HS_ADV_TYPE_MFG_DATA, index, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length > 1) { + return std::string((char*)field->value, field->length - 1); + } + } + + return ""; +} // getManufacturerData + + +/** + * @brief Get the count of manufacturer data sets. + * @return The number of manufacturer data sets. + */ +uint8_t NimBLEAdvertisedDevice::getManufacturerDataCount() { + return findAdvField(BLE_HS_ADV_TYPE_MFG_DATA); +} // getManufacturerDataCount + + +/** + * @brief Get the URI from the advertisement. + * @return The URI data. + */ +std::string NimBLEAdvertisedDevice::getURI() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_URI, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length > 1) { + return std::string((char*)field->value, field->length - 1); + } + } + + return ""; +} // getURI + +/** + * @brief Get the data from any type available in the advertisement + * @param [in] type The advertised data type BLE_HS_ADV_TYPE + * @return The data available under the type `type` +*/ +std::string NimBLEAdvertisedDevice::getPayloadByType(uint16_t type) { + size_t data_loc = 0; + + if(findAdvField(type, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length > 1) { + return std::string((char*)field->value, field->length - 1); + } + } + + return ""; +} // getPayloadByType + + +/** + * @brief Get the advertised name. + * @return The name of the advertised device. + */ +std::string NimBLEAdvertisedDevice::getName() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_COMP_NAME, 0, &data_loc) > 0 || + findAdvField(BLE_HS_ADV_TYPE_INCOMP_NAME, 0, &data_loc) > 0) + { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length > 1) { + return std::string((char*)field->value, field->length - 1); + } + } + + return ""; +} // getName + + +/** + * @brief Get the RSSI. + * @return The RSSI of the advertised device. + */ +int NimBLEAdvertisedDevice::getRSSI() { + return m_rssi; +} // getRSSI + + +/** + * @brief Get the scan object that created this advertised device. + * @return The scan object. + */ +NimBLEScan* NimBLEAdvertisedDevice::getScan() { + return NimBLEDevice::getScan(); +} // getScan + + +/** + * @brief Get the number of target addresses. + * @return The number of addresses. + */ +uint8_t NimBLEAdvertisedDevice::getTargetAddressCount() { + uint8_t count = 0; + + count = findAdvField(BLE_HS_ADV_TYPE_PUBLIC_TGT_ADDR); + count += findAdvField(BLE_HS_ADV_TYPE_RANDOM_TGT_ADDR); + + return count; +} + + +/** + * @brief Get the target address at the index. + * @param [in] index The index of the target address. + * @return The target address. + */ +NimBLEAddress NimBLEAdvertisedDevice::getTargetAddress(uint8_t index) { + ble_hs_adv_field *field = nullptr; + uint8_t count = 0; + size_t data_loc = ULONG_MAX; + + index++; + count = findAdvField(BLE_HS_ADV_TYPE_PUBLIC_TGT_ADDR, index, &data_loc); + + if (count < index) { + index -= count; + count = findAdvField(BLE_HS_ADV_TYPE_RANDOM_TGT_ADDR, index, &data_loc); + } + + if(count > 0 && data_loc != ULONG_MAX) { + field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length < index * BLE_HS_ADV_PUBLIC_TGT_ADDR_ENTRY_LEN) { + index -= count - field->length / BLE_HS_ADV_PUBLIC_TGT_ADDR_ENTRY_LEN; + } + if(field->length > index * BLE_HS_ADV_PUBLIC_TGT_ADDR_ENTRY_LEN) { + return NimBLEAddress(field->value + (index - 1) * BLE_HS_ADV_PUBLIC_TGT_ADDR_ENTRY_LEN); + } + } + + return NimBLEAddress(""); +} + + +/** + * @brief Get the service data. + * @param [in] index The index of the service data requested. + * @return The advertised service data or empty string if no data. + */ +std::string NimBLEAdvertisedDevice::getServiceData(uint8_t index) { + ble_hs_adv_field *field = nullptr; + uint8_t bytes; + size_t data_loc = findServiceData(index, &bytes); + + if(data_loc != ULONG_MAX) { + field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length > bytes) { + return std::string((char*)(field->value + bytes), field->length - bytes - 1); + } + } + + return ""; +} //getServiceData + + +/** + * @brief Get the service data. + * @param [in] uuid The uuid of the service data requested. + * @return The advertised service data or empty string if no data. + */ +std::string NimBLEAdvertisedDevice::getServiceData(const NimBLEUUID &uuid) { + ble_hs_adv_field *field = nullptr; + uint8_t bytes; + uint8_t index = 0; + size_t data_loc = findServiceData(index, &bytes); + size_t plSize = m_payload.size() - 2; + uint8_t uuidBytes = uuid.bitSize() / 8; + + while(data_loc < plSize) { + field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(bytes == uuidBytes && NimBLEUUID(field->value, bytes, false) == uuid) { + return std::string((char*)(field->value + bytes), field->length - bytes - 1); + } + + index++; + data_loc = findServiceData(index, &bytes); + } + + NIMBLE_LOGI(LOG_TAG, "No service data found"); + return ""; +} //getServiceData + + +/** + * @brief Get the UUID of the service data at the index. + * @param [in] index The index of the service data UUID requested. + * @return The advertised service data UUID or an empty UUID if not found. + */ +NimBLEUUID NimBLEAdvertisedDevice::getServiceDataUUID(uint8_t index) { + ble_hs_adv_field *field = nullptr; + uint8_t bytes; + size_t data_loc = findServiceData(index, &bytes); + + if(data_loc != ULONG_MAX) { + field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length >= bytes) { + return NimBLEUUID(field->value, bytes, false); + } + } + + return NimBLEUUID(""); +} // getServiceDataUUID + + +/** + * @brief Find the service data at the index. + * @param [in] index The index of the service data to find. + * @param [in] bytes A pointer to storage for the number of the bytes in the UUID. + * @return The index in the vector where the data is located, ULONG_MAX if not found. + */ +size_t NimBLEAdvertisedDevice::findServiceData(uint8_t index, uint8_t *bytes) { + size_t data_loc = 0; + uint8_t found = 0; + + *bytes = 0; + index++; + found = findAdvField(BLE_HS_ADV_TYPE_SVC_DATA_UUID16, index, &data_loc); + if(found == index) { + *bytes = 2; + return data_loc; + } + + index -= found; + found = findAdvField(BLE_HS_ADV_TYPE_SVC_DATA_UUID32, index, &data_loc); + if(found == index) { + *bytes = 4; + return data_loc; + } + + index -= found; + found = findAdvField(BLE_HS_ADV_TYPE_SVC_DATA_UUID128, index, &data_loc); + if(found == index) { + *bytes = 16; + return data_loc; + } + + return ULONG_MAX; +} + + +/** + * @brief Get the count of advertised service data UUIDS + * @return The number of service data UUIDS in the vector. + */ +uint8_t NimBLEAdvertisedDevice::getServiceDataCount() { + uint8_t count = 0; + + count += findAdvField(BLE_HS_ADV_TYPE_SVC_DATA_UUID16); + count += findAdvField(BLE_HS_ADV_TYPE_SVC_DATA_UUID32); + count += findAdvField(BLE_HS_ADV_TYPE_SVC_DATA_UUID128); + + return count; +} // getServiceDataCount + + +/** + * @brief Get the Service UUID. + * @param [in] index The index of the service UUID requested. + * @return The Service UUID of the advertised service, or an empty UUID if not found. + */ +NimBLEUUID NimBLEAdvertisedDevice::getServiceUUID(uint8_t index) { + uint8_t count = 0; + size_t data_loc = 0; + uint8_t uuidBytes = 0; + uint8_t type = BLE_HS_ADV_TYPE_INCOMP_UUIDS16; + ble_hs_adv_field *field = nullptr; + + index++; + + do { + count = findAdvField(type, index, &data_loc); + if(count >= index) { + if(type < BLE_HS_ADV_TYPE_INCOMP_UUIDS32) { + uuidBytes = 2; + } else if(type < BLE_HS_ADV_TYPE_INCOMP_UUIDS128) { + uuidBytes = 4; + } else { + uuidBytes = 16; + } + break; + + } else { + type++; + index -= count; + } + + } while(type <= BLE_HS_ADV_TYPE_COMP_UUIDS128); + + if(uuidBytes > 0) { + field = (ble_hs_adv_field *)&m_payload[data_loc]; + // In the case of more than one field of service uuid's we need to adjust + // the index to account for the uuids of the previous fields. + if(field->length < index * uuidBytes) { + index -= count - field->length / uuidBytes; + } + + if(field->length > uuidBytes * index) { + return NimBLEUUID(field->value + uuidBytes * (index - 1), uuidBytes, false); + } + } + + return NimBLEUUID(""); +} // getServiceUUID + + +/** + * @brief Get the number of services advertised + * @return The count of services in the advertising packet. + */ +uint8_t NimBLEAdvertisedDevice::getServiceUUIDCount() { + uint8_t count = 0; + + count += findAdvField(BLE_HS_ADV_TYPE_INCOMP_UUIDS16); + count += findAdvField(BLE_HS_ADV_TYPE_COMP_UUIDS16); + count += findAdvField(BLE_HS_ADV_TYPE_INCOMP_UUIDS32); + count += findAdvField(BLE_HS_ADV_TYPE_COMP_UUIDS32); + count += findAdvField(BLE_HS_ADV_TYPE_INCOMP_UUIDS128); + count += findAdvField(BLE_HS_ADV_TYPE_COMP_UUIDS128); + + return count; +} // getServiceUUIDCount + + +/** + * @brief Check advertised services for existence of the required UUID + * @param [in] uuid The service uuid to look for in the advertisement. + * @return Return true if service is advertised + */ +bool NimBLEAdvertisedDevice::isAdvertisingService(const NimBLEUUID &uuid) { + size_t count = getServiceUUIDCount(); + for(size_t i = 0; i < count; i++) { + if(uuid == getServiceUUID(i)) { + return true; + } + } + + return false; +} // isAdvertisingService + + +/** + * @brief Get the TX Power. + * @return The TX Power of the advertised device. + */ +int8_t NimBLEAdvertisedDevice::getTXPower() { + size_t data_loc = 0; + + if(findAdvField(BLE_HS_ADV_TYPE_TX_PWR_LVL, 0, &data_loc) > 0) { + ble_hs_adv_field *field = (ble_hs_adv_field *)&m_payload[data_loc]; + if(field->length == BLE_HS_ADV_TX_PWR_LVL_LEN + 1) { + return *(int8_t*)field->value; + } + } + + return -99; +} // getTXPower + + +/** + * @brief Does this advertisement have preferred connection parameters? + * @return True if connection parameters are present. + */ +bool NimBLEAdvertisedDevice::haveConnParams() { + return findAdvField(BLE_HS_ADV_TYPE_SLAVE_ITVL_RANGE) > 0; +} // haveConnParams + + +/** + * @brief Does this advertisement have have the advertising interval? + * @return True if the advertisement interval is present. + */ +bool NimBLEAdvertisedDevice::haveAdvInterval() { + return findAdvField(BLE_HS_ADV_TYPE_ADV_ITVL) > 0; +} // haveAdvInterval + + +/** + * @brief Does this advertisement have an appearance value? + * @return True if there is an appearance value present. + */ +bool NimBLEAdvertisedDevice::haveAppearance() { + return findAdvField(BLE_HS_ADV_TYPE_APPEARANCE) > 0; +} // haveAppearance + + +/** + * @brief Does this advertisement have manufacturer data? + * @return True if there is manufacturer data present. + */ +bool NimBLEAdvertisedDevice::haveManufacturerData() { + return findAdvField(BLE_HS_ADV_TYPE_MFG_DATA) > 0; +} // haveManufacturerData + + +/** + * @brief Does this advertisement have a URI? + * @return True if there is a URI present. + */ +bool NimBLEAdvertisedDevice::haveURI() { + return findAdvField(BLE_HS_ADV_TYPE_URI) > 0; +} // haveURI + +/** + * @brief Does this advertisement have a adv type `type`? + * @return True if there is a `type` present. +*/ +bool NimBLEAdvertisedDevice::haveType(uint16_t type) { + return findAdvField(type) > 0; +} + + +/** + * @brief Does the advertisement contain a target address? + * @return True if an address is present. + */ +bool NimBLEAdvertisedDevice::haveTargetAddress() { + return findAdvField(BLE_HS_ADV_TYPE_PUBLIC_TGT_ADDR) > 0 || + findAdvField(BLE_HS_ADV_TYPE_RANDOM_TGT_ADDR) > 0; +} + + +/** + * @brief Does this advertisement have a name value? + * @return True if there is a name value present. + */ +bool NimBLEAdvertisedDevice::haveName() { + return findAdvField(BLE_HS_ADV_TYPE_COMP_NAME) > 0 || + findAdvField(BLE_HS_ADV_TYPE_INCOMP_NAME) > 0; +} // haveName + + +/** + * @brief Does this advertisement have a signal strength value? + * @return True if there is a signal strength value present. + */ +bool NimBLEAdvertisedDevice::haveRSSI() { + return m_rssi != -9999; +} // haveRSSI + + +/** + * @brief Does this advertisement have a service data value? + * @return True if there is a service data value present. + */ +bool NimBLEAdvertisedDevice::haveServiceData() { + return getServiceDataCount() > 0; +} // haveServiceData + + +/** + * @brief Does this advertisement have a service UUID value? + * @return True if there is a service UUID value present. + */ +bool NimBLEAdvertisedDevice::haveServiceUUID() { + return getServiceUUIDCount() > 0; +} // haveServiceUUID + + +/** + * @brief Does this advertisement have a transmission power value? + * @return True if there is a transmission power value present. + */ +bool NimBLEAdvertisedDevice::haveTXPower() { + return findAdvField(BLE_HS_ADV_TYPE_TX_PWR_LVL) > 0; +} // haveTXPower + + +#if CONFIG_BT_NIMBLE_EXT_ADV +/** + * @brief Get the set ID of the extended advertisement. + * @return The set ID. + */ +uint8_t NimBLEAdvertisedDevice::getSetId() { + return m_sid; +} // getSetId + + +/** + * @brief Get the primary PHY used by this advertisement. + * @return The PHY type, one of: + * * BLE_HCI_LE_PHY_1M + * * BLE_HCI_LE_PHY_CODED + */ +uint8_t NimBLEAdvertisedDevice::getPrimaryPhy() { + return m_primPhy; +} // getPrimaryPhy + + +/** + * @brief Get the primary PHY used by this advertisement. + * @return The PHY type, one of: + * * BLE_HCI_LE_PHY_1M + * * BLE_HCI_LE_PHY_2M + * * BLE_HCI_LE_PHY_CODED + */ +uint8_t NimBLEAdvertisedDevice::getSecondaryPhy() { + return m_secPhy; +} // getSecondaryPhy + + +/** + * @brief Get the periodic interval of the advertisement. + * @return The periodic advertising interval, 0 if not periodic advertising. + */ +uint16_t NimBLEAdvertisedDevice::getPeriodicInterval() { + return m_periodicItvl; +} // getPeriodicInterval +#endif + + +uint8_t NimBLEAdvertisedDevice::findAdvField(uint8_t type, uint8_t index, size_t * data_loc) { + ble_hs_adv_field *field = nullptr; + size_t length = m_payload.size(); + size_t data = 0; + uint8_t count = 0; + + if (length < 3) { + return count; + } + + while (length > 2) { + field = (ble_hs_adv_field*)&m_payload[data]; + + if (field->length >= length) { + return count; + } + + if (field->type == type) { + switch (type) { + case BLE_HS_ADV_TYPE_INCOMP_UUIDS16: + case BLE_HS_ADV_TYPE_COMP_UUIDS16: + count += field->length / 2; + break; + + case BLE_HS_ADV_TYPE_INCOMP_UUIDS32: + case BLE_HS_ADV_TYPE_COMP_UUIDS32: + count += field->length / 4; + break; + + case BLE_HS_ADV_TYPE_INCOMP_UUIDS128: + case BLE_HS_ADV_TYPE_COMP_UUIDS128: + count += field->length / 16; + break; + + case BLE_HS_ADV_TYPE_PUBLIC_TGT_ADDR: + case BLE_HS_ADV_TYPE_RANDOM_TGT_ADDR: + count += field->length / 6; + break; + + default: + count++; + break; + } + + if (data_loc != nullptr) { + if (index == 0 || count >= index) { + break; + } + } + } + + length -= 1 + field->length; + data += 1 + field->length; + } + + if (data_loc != nullptr && field != nullptr) { + *data_loc = data; + } + + return count; +} + + +/** + * @brief Set the address of the advertised device. + * @param [in] address The address of the advertised device. + */ +void NimBLEAdvertisedDevice::setAddress(NimBLEAddress address) { + m_address = address; +} // setAddress + + +/** + * @brief Set the adFlag for this device. + * @param [in] advType The advertisement flag data from the advertisement. + */ +void NimBLEAdvertisedDevice::setAdvType(uint8_t advType, bool isLegacyAdv) { + m_advType = advType; +#if CONFIG_BT_NIMBLE_EXT_ADV + m_isLegacyAdv = isLegacyAdv; +#else + (void)isLegacyAdv; +#endif +} // setAdvType + + +/** + * @brief Set the RSSI for this device. + * @param [in] rssi The RSSI of the discovered device. + */ +void NimBLEAdvertisedDevice::setRSSI(int rssi) { + m_rssi = rssi; +} // setRSSI + + +/** + * @brief Create a string representation of this device. + * @return A string representation of this device. + */ +std::string NimBLEAdvertisedDevice::toString() { + std::string res = "Name: " + getName() + ", Address: " + getAddress().toString(); + + if (haveAppearance()) { + char val[6]; + snprintf(val, sizeof(val), "%d", getAppearance()); + res += ", appearance: "; + res += val; + } + + if (haveManufacturerData()) { + char *pHex = NimBLEUtils::buildHexData(nullptr, (uint8_t*)getManufacturerData().data(), getManufacturerData().length()); + res += ", manufacturer data: "; + res += pHex; + free(pHex); + } + + if (haveServiceUUID()) { + res += ", serviceUUID: " + getServiceUUID().toString(); + } + + if (haveTXPower()) { + char val[5]; + snprintf(val, sizeof(val), "%d", getTXPower()); + res += ", txPower: "; + res += val; + } + + if (haveServiceData()) { + uint8_t count = getServiceDataCount(); + res += "\nService Data:"; + for(uint8_t i = 0; i < count; i++) { + res += "\nUUID: " + std::string(getServiceDataUUID(i)); + res += ", Data: " + getServiceData(i); + } + } + + return res; + +} // toString + + +/** + * @brief Get the payload advertised by the device. + * @return The advertisement payload. + */ +uint8_t* NimBLEAdvertisedDevice::getPayload() { + return &m_payload[0]; +} // getPayload + + +/** + * @brief Stores the payload of the advertised device in a vector. + * @param [in] payload The advertisement payload. + * @param [in] length The length of the payload in bytes. + * @param [in] append Indicates if the the data should be appended (scan response). + */ +void NimBLEAdvertisedDevice::setPayload(const uint8_t *payload, uint8_t length, bool append) { + if(!append) { + m_advLength = length; + m_payload.assign(payload, payload + length); + } else { + m_payload.insert(m_payload.end(), payload, payload + length); + } +} + + +/** + * @brief Get the length of the advertisement data in the payload. + * @return The number of bytes in the payload that is from the advertisement. + */ +uint8_t NimBLEAdvertisedDevice::getAdvLength() { + return m_advLength; +} + + +/** + * @brief Get the advertised device address type. + * @return The device address type: + * * BLE_ADDR_PUBLIC (0x00) + * * BLE_ADDR_RANDOM (0x01) + * * BLE_ADDR_PUBLIC_ID (0x02) + * * BLE_ADDR_RANDOM_ID (0x03) + */ +uint8_t NimBLEAdvertisedDevice::getAddressType() { + return m_address.getType(); +} // getAddressType + + +/** + * @brief Get the timeStamp of when the device last advertised. + * @return The timeStamp of when the device was last seen. + */ +time_t NimBLEAdvertisedDevice::getTimestamp() { + return m_timestamp; +} // getTimestamp + + +/** + * @brief Get the length of the payload advertised by the device. + * @return The size of the payload in bytes. + */ +size_t NimBLEAdvertisedDevice::getPayloadLength() { + return m_payload.size(); +} // getPayloadLength + + +/** + * @brief Check if this device is advertising as connectable. + * @return True if the device is connectable. + */ +bool NimBLEAdvertisedDevice::isConnectable() { +#if CONFIG_BT_NIMBLE_EXT_ADV + if (m_isLegacyAdv) { + return m_advType == BLE_HCI_ADV_RPT_EVTYPE_ADV_IND || + m_advType == BLE_HCI_ADV_RPT_EVTYPE_DIR_IND; + } +#endif + return (m_advType & BLE_HCI_ADV_CONN_MASK) || + (m_advType & BLE_HCI_ADV_DIRECT_MASK); +} // isConnectable + + +/** + * @brief Check if this advertisement is a legacy or extended type + * @return True if legacy (Bluetooth 4.x), false if extended (bluetooth 5.x). + */ +bool NimBLEAdvertisedDevice::isLegacyAdvertisement() { +#if CONFIG_BT_NIMBLE_EXT_ADV + return m_isLegacyAdv; +# else + return true; +#endif +} // isLegacyAdvertisement + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ + diff --git a/lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.h b/lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.h new file mode 100644 index 0000000..7869fb5 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.h @@ -0,0 +1,183 @@ +/* + * NimBLEAdvertisedDevice.h + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEAdvertisedDevice.h + * + * Created on: Jul 3, 2017 + * Author: kolban + */ + +#ifndef COMPONENTS_NIMBLEADVERTISEDDEVICE_H_ +#define COMPONENTS_NIMBLEADVERTISEDDEVICE_H_ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + +#include "NimBLEAddress.h" +#include "NimBLEScan.h" +#include "NimBLEUUID.h" + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "host/ble_hs_adv.h" +#else +#include "nimble/nimble/host/include/host/ble_hs_adv.h" +#endif + +#include +#include +#include + + +class NimBLEScan; +/** + * @brief A representation of a %BLE advertised device found by a scan. + * + * When we perform a %BLE scan, the result will be a set of devices that are advertising. This + * class provides a model of a detected device. + */ +class NimBLEAdvertisedDevice { +public: + NimBLEAdvertisedDevice(); + + NimBLEAddress getAddress(); + uint8_t getAdvType(); + uint8_t getAdvFlags(); + uint16_t getAppearance(); + uint16_t getAdvInterval(); + uint16_t getMinInterval(); + uint16_t getMaxInterval(); + uint8_t getManufacturerDataCount(); + std::string getManufacturerData(uint8_t index = 0); + std::string getURI(); + std::string getPayloadByType(uint16_t type); + + /** + * @brief A template to convert the service data to . + * @tparam T The type to convert the data to. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is + * less than sizeof(). + * @details Use: getManufacturerData(skipSizeCheck); + */ + template + T getManufacturerData(bool skipSizeCheck = false) { + std::string data = getManufacturerData(); + if(!skipSizeCheck && data.size() < sizeof(T)) return T(); + const char *pData = data.data(); + return *((T *)pData); + } + + std::string getName(); + int getRSSI(); + NimBLEScan* getScan(); + uint8_t getServiceDataCount(); + std::string getServiceData(uint8_t index = 0); + std::string getServiceData(const NimBLEUUID &uuid); + + /** + * @brief A template to convert the service data to . + * @tparam T The type to convert the data to. + * @param [in] index The vector index of the service data requested. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is + * less than sizeof(). + * @details Use: getServiceData(skipSizeCheck); + */ + template + T getServiceData(uint8_t index = 0, bool skipSizeCheck = false) { + std::string data = getServiceData(index); + if(!skipSizeCheck && data.size() < sizeof(T)) return T(); + const char *pData = data.data(); + return *((T *)pData); + } + + /** + * @brief A template to convert the service data to . + * @tparam T The type to convert the data to. + * @param [in] uuid The uuid of the service data requested. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is + * less than sizeof(). + * @details Use: getServiceData(skipSizeCheck); + */ + template + T getServiceData(const NimBLEUUID &uuid, bool skipSizeCheck = false) { + std::string data = getServiceData(uuid); + if(!skipSizeCheck && data.size() < sizeof(T)) return T(); + const char *pData = data.data(); + return *((T *)pData); + } + + NimBLEUUID getServiceDataUUID(uint8_t index = 0); + NimBLEUUID getServiceUUID(uint8_t index = 0); + uint8_t getServiceUUIDCount(); + NimBLEAddress getTargetAddress(uint8_t index = 0); + uint8_t getTargetAddressCount(); + int8_t getTXPower(); + uint8_t* getPayload(); + uint8_t getAdvLength(); + size_t getPayloadLength(); + uint8_t getAddressType(); + time_t getTimestamp(); + bool isAdvertisingService(const NimBLEUUID &uuid); + bool haveAppearance(); + bool haveManufacturerData(); + bool haveName(); + bool haveRSSI(); + bool haveServiceData(); + bool haveServiceUUID(); + bool haveTXPower(); + bool haveConnParams(); + bool haveAdvInterval(); + bool haveTargetAddress(); + bool haveURI(); + bool haveType(uint16_t type); + std::string toString(); + bool isConnectable(); + bool isLegacyAdvertisement(); +#if CONFIG_BT_NIMBLE_EXT_ADV + uint8_t getSetId(); + uint8_t getPrimaryPhy(); + uint8_t getSecondaryPhy(); + uint16_t getPeriodicInterval(); +#endif + +private: + friend class NimBLEScan; + + void setAddress(NimBLEAddress address); + void setAdvType(uint8_t advType, bool isLegacyAdv); + void setPayload(const uint8_t *payload, uint8_t length, bool append); + void setRSSI(int rssi); +#if CONFIG_BT_NIMBLE_EXT_ADV + void setSetId(uint8_t sid) { m_sid = sid; } + void setPrimaryPhy(uint8_t phy) { m_primPhy = phy; } + void setSecondaryPhy(uint8_t phy) { m_secPhy = phy; } + void setPeriodicInterval(uint16_t itvl) { m_periodicItvl = itvl; } +#endif + uint8_t findAdvField(uint8_t type, uint8_t index = 0, size_t * data_loc = nullptr); + size_t findServiceData(uint8_t index, uint8_t* bytes); + + NimBLEAddress m_address = NimBLEAddress(""); + uint8_t m_advType; + int m_rssi; + time_t m_timestamp; + uint8_t m_callbackSent; + uint8_t m_advLength; +#if CONFIG_BT_NIMBLE_EXT_ADV + bool m_isLegacyAdv; + uint8_t m_sid; + uint8_t m_primPhy; + uint8_t m_secPhy; + uint16_t m_periodicItvl; +#endif + + std::vector m_payload; +}; + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_OBSERVER */ +#endif /* COMPONENTS_NIMBLEADVERTISEDDEVICE_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEAdvertising.cpp b/lib/esp-nimble-cpp/src/NimBLEAdvertising.cpp new file mode 100644 index 0000000..c7e0e23 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAdvertising.cpp @@ -0,0 +1,1087 @@ +/* + * NimBLEAdvertising.cpp + * + * Created: on March 3, 2020 + * Author H2zero + * + * Originally: + * + * BLEAdvertising.cpp + * + * This class encapsulates advertising a BLE Server. + * Created on: Jun 21, 2017 + * Author: kolban + * + */ +#include "nimconfig.h" +#if (defined(CONFIG_BT_ENABLED) && \ + defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) && \ + !CONFIG_BT_NIMBLE_EXT_ADV) || defined(_DOXYGEN_) + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "services/gap/ble_svc_gap.h" +#else +#include "nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h" +#endif +#include "NimBLEAdvertising.h" +#include "NimBLEDevice.h" +#include "NimBLEServer.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +static const char* LOG_TAG = "NimBLEAdvertising"; + + +/** + * @brief Construct a default advertising object. + */ +NimBLEAdvertising::NimBLEAdvertising() { + reset(); +} // NimBLEAdvertising + + +/** + * @brief Stops the current advertising and resets the advertising data to the default values. + */ +void NimBLEAdvertising::reset() { + if(NimBLEDevice::getInitialized() && isAdvertising()) { + stop(); + } + memset(&m_advData, 0, sizeof m_advData); + memset(&m_scanData, 0, sizeof m_scanData); + memset(&m_advParams, 0, sizeof m_advParams); + memset(&m_slaveItvl, 0, sizeof m_slaveItvl); + const char *name = ble_svc_gap_device_name(); + + m_advData.name = (uint8_t *)name; + m_advData.name_len = strlen(name); + m_advData.name_is_complete = 1; + m_advData.tx_pwr_lvl = NimBLEDevice::getPower(); + m_advData.flags = (BLE_HS_ADV_F_DISC_GEN | BLE_HS_ADV_F_BREDR_UNSUP); + +#if !defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + m_advParams.conn_mode = BLE_GAP_CONN_MODE_NON; +#else + m_advParams.conn_mode = BLE_GAP_CONN_MODE_UND; +#endif + m_advParams.disc_mode = BLE_GAP_DISC_MODE_GEN; + m_customAdvData = false; + m_customScanResponseData = false; + m_scanResp = true; + m_advDataSet = false; + // Set this to non-zero to prevent auto start if host reset before started by app. + m_duration = BLE_HS_FOREVER; + m_advCompCB = nullptr; +} // reset + + +/** + * @brief Add a service uuid to exposed list of services. + * @param [in] serviceUUID The UUID of the service to expose. + */ +void NimBLEAdvertising::addServiceUUID(const NimBLEUUID &serviceUUID) { + m_serviceUUIDs.push_back(serviceUUID); + m_advDataSet = false; +} // addServiceUUID + + +/** + * @brief Add a service uuid to exposed list of services. + * @param [in] serviceUUID The string representation of the service to expose. + */ +void NimBLEAdvertising::addServiceUUID(const char* serviceUUID) { + addServiceUUID(NimBLEUUID(serviceUUID)); + m_advDataSet = false; +} // addServiceUUID + + +/** + * @brief Remove a service UUID from the advertisment. + * @param [in] serviceUUID The UUID of the service to remove. + */ +void NimBLEAdvertising::removeServiceUUID(const NimBLEUUID &serviceUUID) { + for(auto it = m_serviceUUIDs.begin(); it != m_serviceUUIDs.end(); ++it) { + if((*it) == serviceUUID) { + m_serviceUUIDs.erase(it); + break; + } + } + m_advDataSet = false; +} // addServiceUUID + + +/** + * @brief Remove all service UUIDs from the advertisment. + */ +void NimBLEAdvertising::removeServices() { + std::vector().swap(m_serviceUUIDs); + m_advDataSet = false; +} // removeServices + + +/** + * @brief Set the device appearance in the advertising data. + * @param [in] appearance The appearance of the device in the advertising data. + */ +void NimBLEAdvertising::setAppearance(uint16_t appearance) { + m_advData.appearance = appearance; + m_advData.appearance_is_present = 1; + m_advDataSet = false; +} // setAppearance + + +/** + * @brief Add the transmission power level to the advertisement packet. + */ +void NimBLEAdvertising::addTxPower() { + m_advData.tx_pwr_lvl_is_present = 1; + m_advDataSet = false; +} // addTxPower + + +/** + * @brief Set the advertised name of the device. + * @param [in] name The name to advertise. + */ +void NimBLEAdvertising::setName(const std::string &name) { + std::vector(name.begin(), name.end()).swap(m_name); + m_advData.name = &m_name[0]; + m_advData.name_len = m_name.size(); + m_advDataSet = false; +} // setName + + +/** + * @brief Set the advertised manufacturer data. + * @param [in] data The data to advertise. + */ +void NimBLEAdvertising::setManufacturerData(const std::string &data) { + std::vector(data.begin(), data.end()).swap(m_mfgData); + m_advData.mfg_data = &m_mfgData[0]; + m_advData.mfg_data_len = m_mfgData.size(); + m_advDataSet = false; +} // setManufacturerData + + +/** + * @brief Set the advertised manufacturer data. + * @param [in] data The data to advertise. + */ +void NimBLEAdvertising::setManufacturerData(const std::vector &data) { + m_mfgData = data; + m_advData.mfg_data = &m_mfgData[0]; + m_advData.mfg_data_len = m_mfgData.size(); + m_advDataSet = false; +} // setManufacturerData + + +/** + * @brief Set the advertised URI. + * @param [in] uri The URI to advertise. + */ +void NimBLEAdvertising::setURI(const std::string &uri) { + std::vector(uri.begin(), uri.end()).swap(m_uri); + m_advData.uri = &m_uri[0]; + m_advData.uri_len = m_uri.size(); + m_advDataSet = false; +} // setURI + + +/** + * @brief Set the service data advertised for the UUID. + * @param [in] uuid The UUID the service data belongs to. + * @param [in] data The data to advertise. + * @note If data length is 0 the service data will not be advertised. + */ +void NimBLEAdvertising::setServiceData(const NimBLEUUID &uuid, const std::string &data) { + switch (uuid.bitSize()) { + case 16: { + std::vector((uint8_t*)&uuid.getNative()->u16.value, + (uint8_t*)&uuid.getNative()->u16.value + 2).swap(m_svcData16); + m_svcData16.insert(m_svcData16.end(), data.begin(), data.end()); + m_advData.svc_data_uuid16 = (uint8_t*)&m_svcData16[0]; + m_advData.svc_data_uuid16_len = (data.length() > 0) ? m_svcData16.size() : 0; + break; + } + + case 32: { + std::vector((uint8_t*)&uuid.getNative()->u32.value, + (uint8_t*)&uuid.getNative()->u32.value + 4).swap(m_svcData32); + m_svcData32.insert(m_svcData32.end(), data.begin(), data.end()); + m_advData.svc_data_uuid32 = (uint8_t*)&m_svcData32[0]; + m_advData.svc_data_uuid32_len = (data.length() > 0) ? m_svcData32.size() : 0; + break; + } + + case 128: { + std::vector(uuid.getNative()->u128.value, + uuid.getNative()->u128.value + 16).swap(m_svcData128); + m_svcData128.insert(m_svcData128.end(), data.begin(), data.end()); + m_advData.svc_data_uuid128 = (uint8_t*)&m_svcData128[0]; + m_advData.svc_data_uuid128_len = (data.length() > 0) ? m_svcData128.size() : 0; + break; + } + + default: + return; + } + + m_advDataSet = false; +} // setServiceData + + +/** + * @brief Set the type of advertisment to use. + * @param [in] adv_type: + * * BLE_GAP_CONN_MODE_NON (0) - not connectable advertising + * * BLE_GAP_CONN_MODE_DIR (1) - directed connectable advertising + * * BLE_GAP_CONN_MODE_UND (2) - undirected connectable advertising + */ +void NimBLEAdvertising::setAdvertisementType(uint8_t adv_type){ + m_advParams.conn_mode = adv_type; +} // setAdvertisementType + + +/** + * @brief Set the minimum advertising interval. + * @param [in] mininterval Minimum value for advertising interval in 0.625ms units, 0 = use default. + */ +void NimBLEAdvertising::setMinInterval(uint16_t mininterval) { + m_advParams.itvl_min = mininterval; +} // setMinInterval + + +/** + * @brief Set the maximum advertising interval. + * @param [in] maxinterval Maximum value for advertising interval in 0.625ms units, 0 = use default. + */ +void NimBLEAdvertising::setMaxInterval(uint16_t maxinterval) { + m_advParams.itvl_max = maxinterval; +} // setMaxInterval + + +/** + * @brief Set the advertised min connection interval preferred by this device. + * @param [in] mininterval the max interval value. Range = 0x0006 to 0x0C80. + * @details Values not within the range will cancel advertising of this data.\n + * Consumes 6 bytes of advertising space (combined with max interval). + */ +void NimBLEAdvertising::setMinPreferred(uint16_t mininterval) { + // invalid paramters, set the slave interval to null + if(mininterval < 0x0006 || mininterval > 0x0C80) { + m_advData.slave_itvl_range = nullptr; + return; + } + + if(m_advData.slave_itvl_range == nullptr) { + m_advData.slave_itvl_range = m_slaveItvl; + } + + m_slaveItvl[0] = mininterval; + m_slaveItvl[1] = mininterval >> 8; + + uint16_t maxinterval = *(uint16_t*)(m_advData.slave_itvl_range+2); + + // If mininterval is higher than the maxinterval make them the same + if(mininterval > maxinterval) { + m_slaveItvl[2] = m_slaveItvl[0]; + m_slaveItvl[3] = m_slaveItvl[1]; + } + + m_advDataSet = false; +} // setMinPreferred + + +/** + * @brief Set the advertised max connection interval preferred by this device. + * @param [in] maxinterval the max interval value. Range = 0x0006 to 0x0C80. + * @details Values not within the range will cancel advertising of this data.\n + * Consumes 6 bytes of advertising space (combined with min interval). + */ +void NimBLEAdvertising::setMaxPreferred(uint16_t maxinterval) { + // invalid paramters, set the slave interval to null + if(maxinterval < 0x0006 || maxinterval > 0x0C80) { + m_advData.slave_itvl_range = nullptr; + return; + } + if(m_advData.slave_itvl_range == nullptr) { + m_advData.slave_itvl_range = m_slaveItvl; + } + m_slaveItvl[2] = maxinterval; + m_slaveItvl[3] = maxinterval >> 8; + + uint16_t mininterval = *(uint16_t*)(m_advData.slave_itvl_range); + + // If mininterval is higher than the maxinterval make them the same + if(mininterval > maxinterval) { + m_slaveItvl[0] = m_slaveItvl[2]; + m_slaveItvl[1] = m_slaveItvl[3]; + } + + m_advDataSet = false; +} // setMaxPreferred + + +/** + * @brief Set if scan response is available. + * @param [in] set true = scan response available. + */ +void NimBLEAdvertising::setScanResponse(bool set) { + m_scanResp = set; + m_advDataSet = false; +} // setScanResponse + + +/** + * @brief Set the filtering for the scan filter. + * @param [in] scanRequestWhitelistOnly If true, only allow scan requests from those on the white list. + * @param [in] connectWhitelistOnly If true, only allow connections from those on the white list. + */ +void NimBLEAdvertising::setScanFilter(bool scanRequestWhitelistOnly, bool connectWhitelistOnly) { + NIMBLE_LOGD(LOG_TAG, ">> setScanFilter: scanRequestWhitelistOnly: %d, connectWhitelistOnly: %d", + scanRequestWhitelistOnly, connectWhitelistOnly); + if (!scanRequestWhitelistOnly && !connectWhitelistOnly) { + m_advParams.filter_policy = BLE_HCI_ADV_FILT_NONE; + NIMBLE_LOGD(LOG_TAG, "<< setScanFilter"); + return; + } + if (scanRequestWhitelistOnly && !connectWhitelistOnly) { + m_advParams.filter_policy = BLE_HCI_ADV_FILT_SCAN; + NIMBLE_LOGD(LOG_TAG, "<< setScanFilter"); + return; + } + if (!scanRequestWhitelistOnly && connectWhitelistOnly) { + m_advParams.filter_policy = BLE_HCI_ADV_FILT_CONN; + NIMBLE_LOGD(LOG_TAG, "<< setScanFilter"); + return; + } + if (scanRequestWhitelistOnly && connectWhitelistOnly) { + m_advParams.filter_policy = BLE_HCI_ADV_FILT_BOTH; + NIMBLE_LOGD(LOG_TAG, "<< setScanFilter"); + return; + } +} // setScanFilter + + +/** + * @brief Set the advertisement data that is to be published in a regular advertisement. + * @param [in] advertisementData The data to be advertised. + * @details The use of this function will replace any data set with addServiceUUID\n + * or setAppearance. If you wish for these to be advertised you must include them\n + * in the advertisementData parameter sent. + */ + +void NimBLEAdvertising::setAdvertisementData(NimBLEAdvertisementData& advertisementData) { + NIMBLE_LOGD(LOG_TAG, ">> setAdvertisementData"); + int rc = ble_gap_adv_set_data( + (uint8_t*)advertisementData.getPayload().data(), + advertisementData.getPayload().length()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gap_adv_set_data: %d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + } + m_customAdvData = true; // Set the flag that indicates we are using custom advertising data. + NIMBLE_LOGD(LOG_TAG, "<< setAdvertisementData"); +} // setAdvertisementData + + +/** + * @brief Set the advertisement data that is to be published in a scan response. + * @param [in] advertisementData The data to be advertised. + * @details Calling this without also using setAdvertisementData will have no effect.\n + * When using custom scan response data you must also use custom advertisement data. + */ +void NimBLEAdvertising::setScanResponseData(NimBLEAdvertisementData& advertisementData) { + NIMBLE_LOGD(LOG_TAG, ">> setScanResponseData"); + int rc = ble_gap_adv_rsp_set_data( + (uint8_t*)advertisementData.getPayload().data(), + advertisementData.getPayload().length()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gap_adv_rsp_set_data: %d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + } + m_customScanResponseData = true; // Set the flag that indicates we are using custom scan response data. + NIMBLE_LOGD(LOG_TAG, "<< setScanResponseData"); +} // setScanResponseData + + +/** + * @brief Start advertising. + * @param [in] duration The duration, in milliseconds, to advertise, 0 == advertise forever. + * @param [in] advCompleteCB A pointer to a callback to be invoked when advertising ends. + * @param [in] dirAddr The address of a peer to directly advertise to. + * @return True if advertising started successfully. + */ +bool NimBLEAdvertising::start(uint32_t duration, advCompleteCB_t advCompleteCB, NimBLEAddress* dirAddr) { + NIMBLE_LOGD(LOG_TAG, ">> Advertising start: customAdvData: %d, customScanResponseData: %d", + m_customAdvData, m_customScanResponseData); + + // If Host is not synced we cannot start advertising. + if(!NimBLEDevice::m_synced) { + NIMBLE_LOGE(LOG_TAG, "Host reset, wait for sync."); + return false; + } + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + NimBLEServer* pServer = NimBLEDevice::getServer(); + if(pServer != nullptr) { + if(!pServer->m_gattsStarted){ + pServer->start(); + } else if(pServer->getConnectedCount() >= NIMBLE_MAX_CONNECTIONS) { + NIMBLE_LOGE(LOG_TAG, "Max connections reached - not advertising"); + return false; + } + } +#endif + + // If already advertising just return + if(ble_gap_adv_active()) { + NIMBLE_LOGW(LOG_TAG, "Advertising already active"); + return true; + } + + // Save the duration incase of host reset so we can restart with the same params + m_duration = duration; + + if(duration == 0){ + duration = BLE_HS_FOREVER; + } + + m_advCompCB = advCompleteCB; + + m_advParams.disc_mode = BLE_GAP_DISC_MODE_GEN; + m_advData.flags = (BLE_HS_ADV_F_DISC_GEN | BLE_HS_ADV_F_BREDR_UNSUP); + if(m_advParams.conn_mode == BLE_GAP_CONN_MODE_NON) { + if(!m_scanResp) { + m_advParams.disc_mode = BLE_GAP_DISC_MODE_NON; + // non-connectable advertising does not require AD flags. + m_advData.flags = 0; + } + } + + int rc = 0; + + if (!m_customAdvData && !m_advDataSet) { + //start with 3 bytes for the flags data if required + uint8_t payloadLen = (m_advData.flags > 0) ? (2 + 1) : 0; + if(m_advData.mfg_data_len > 0) + payloadLen += (2 + m_advData.mfg_data_len); + + if(m_advData.svc_data_uuid16_len > 0) + payloadLen += (2 + m_advData.svc_data_uuid16_len); + + if(m_advData.svc_data_uuid32_len > 0) + payloadLen += (2 + m_advData.svc_data_uuid32_len); + + if(m_advData.svc_data_uuid128_len > 0) + payloadLen += (2 + m_advData.svc_data_uuid128_len); + + if(m_advData.uri_len > 0) + payloadLen += (2 + m_advData.uri_len); + + if(m_advData.appearance_is_present) + payloadLen += (2 + BLE_HS_ADV_APPEARANCE_LEN); + + if(m_advData.tx_pwr_lvl_is_present) + payloadLen += (2 + BLE_HS_ADV_TX_PWR_LVL_LEN); + + if(m_advData.slave_itvl_range != nullptr) + payloadLen += (2 + BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN); + + for(auto &it : m_serviceUUIDs) { + if(it.getNative()->u.type == BLE_UUID_TYPE_16) { + int add = (m_advData.num_uuids16 > 0) ? 2 : 4; + if((payloadLen + add) > BLE_HS_ADV_MAX_SZ){ + m_advData.uuids16_is_complete = 0; + continue; + } + payloadLen += add; + + if(nullptr == (m_advData.uuids16 = (ble_uuid16_t*)realloc((void*)m_advData.uuids16, + (m_advData.num_uuids16 + 1) * sizeof(ble_uuid16_t)))) + { + NIMBLE_LOGC(LOG_TAG, "Error, no mem"); + abort(); + } + memcpy((void*)&m_advData.uuids16[m_advData.num_uuids16], + &it.getNative()->u16, sizeof(ble_uuid16_t)); + m_advData.uuids16_is_complete = 1; + m_advData.num_uuids16++; + } + if(it.getNative()->u.type == BLE_UUID_TYPE_32) { + int add = (m_advData.num_uuids32 > 0) ? 4 : 6; + if((payloadLen + add) > BLE_HS_ADV_MAX_SZ){ + m_advData.uuids32_is_complete = 0; + continue; + } + payloadLen += add; + + if(nullptr == (m_advData.uuids32 = (ble_uuid32_t*)realloc((void*)m_advData.uuids32, + (m_advData.num_uuids32 + 1) * sizeof(ble_uuid32_t)))) + { + NIMBLE_LOGC(LOG_TAG, "Error, no mem"); + abort(); + } + memcpy((void*)&m_advData.uuids32[m_advData.num_uuids32], + &it.getNative()->u32, sizeof(ble_uuid32_t)); + m_advData.uuids32_is_complete = 1; + m_advData.num_uuids32++; + } + if(it.getNative()->u.type == BLE_UUID_TYPE_128){ + int add = (m_advData.num_uuids128 > 0) ? 16 : 18; + if((payloadLen + add) > BLE_HS_ADV_MAX_SZ){ + m_advData.uuids128_is_complete = 0; + continue; + } + payloadLen += add; + + if(nullptr == (m_advData.uuids128 = (ble_uuid128_t*)realloc((void*)m_advData.uuids128, + (m_advData.num_uuids128 + 1) * sizeof(ble_uuid128_t)))) + { + NIMBLE_LOGC(LOG_TAG, "Error, no mem"); + abort(); + } + memcpy((void*)&m_advData.uuids128[m_advData.num_uuids128], + &it.getNative()->u128, sizeof(ble_uuid128_t)); + m_advData.uuids128_is_complete = 1; + m_advData.num_uuids128++; + } + } + + // check if there is room for the name, if not put it in scan data + if((payloadLen + (2 + m_advData.name_len)) > BLE_HS_ADV_MAX_SZ) { + if(m_scanResp && !m_customScanResponseData){ + m_scanData.name = m_advData.name; + m_scanData.name_len = m_advData.name_len; + if(m_scanData.name_len > BLE_HS_ADV_MAX_SZ - 2) { + m_scanData.name_len = BLE_HS_ADV_MAX_SZ - 2; + m_scanData.name_is_complete = 0; + } else { + m_scanData.name_is_complete = 1; + } + m_advData.name = nullptr; + m_advData.name_len = 0; + m_advData.name_is_complete = 0; + } else { + if(m_advData.tx_pwr_lvl_is_present) { + m_advData.tx_pwr_lvl_is_present = 0; + payloadLen -= (2 + 1); + } + // if not using scan response just cut the name down + // leaving 2 bytes for the data specifier. + if(m_advData.name_len > (BLE_HS_ADV_MAX_SZ - payloadLen - 2)) { + m_advData.name_len = (BLE_HS_ADV_MAX_SZ - payloadLen - 2); + m_advData.name_is_complete = 0; + } + } + } + + if(m_scanResp && !m_customScanResponseData) { + rc = ble_gap_adv_rsp_set_fields(&m_scanData); + switch(rc) { + case 0: + break; + + case BLE_HS_EBUSY: + NIMBLE_LOGE(LOG_TAG, "Already advertising"); + break; + + case BLE_HS_EMSGSIZE: + NIMBLE_LOGE(LOG_TAG, "Scan data too long"); + break; + + default: + NIMBLE_LOGE(LOG_TAG, "Error setting scan response data; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + } + + if(rc == 0) { + rc = ble_gap_adv_set_fields(&m_advData); + switch(rc) { + case 0: + break; + + case BLE_HS_EBUSY: + NIMBLE_LOGE(LOG_TAG, "Already advertising"); + break; + + case BLE_HS_EMSGSIZE: + NIMBLE_LOGE(LOG_TAG, "Advertisement data too long"); + break; + + default: + NIMBLE_LOGE(LOG_TAG, "Error setting advertisement data; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + } + + if(m_advData.num_uuids128 > 0) { + free((void*)m_advData.uuids128); + m_advData.uuids128 = nullptr; + m_advData.num_uuids128 = 0; + } + + if(m_advData.num_uuids32 > 0) { + free((void*)m_advData.uuids32); + m_advData.uuids32 = nullptr; + m_advData.num_uuids32 = 0; + } + + if(m_advData.num_uuids16 > 0) { + free((void*)m_advData.uuids16); + m_advData.uuids16 = nullptr; + m_advData.num_uuids16 = 0; + } + + if(rc !=0) { + return false; + } + + m_advDataSet = true; + } + + ble_addr_t peerAddr; + if (dirAddr != nullptr) { + memcpy(&peerAddr.val, dirAddr->getNative(), 6); + peerAddr.type = dirAddr->getType(); + } + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + rc = ble_gap_adv_start(NimBLEDevice::m_own_addr_type, + (dirAddr != nullptr) ? &peerAddr : NULL, + duration, + &m_advParams, + (pServer != nullptr) ? NimBLEServer::handleGapEvent : + NimBLEAdvertising::handleGapEvent, + (void*)this); +#else + rc = ble_gap_adv_start(NimBLEDevice::m_own_addr_type, + (dirAddr != nullptr) ? &peerAddr : NULL, + duration, + &m_advParams, + NimBLEAdvertising::handleGapEvent, + (void*)this); +#endif + switch(rc) { + case 0: + break; + + case BLE_HS_EALREADY: + NIMBLE_LOGI(LOG_TAG, "Advertisement Already active"); + break; + + case BLE_HS_EINVAL: + NIMBLE_LOGE(LOG_TAG, "Unable to advertise - Duration too long"); + break; + + case BLE_HS_EPREEMPTED: + NIMBLE_LOGE(LOG_TAG, "Unable to advertise - busy"); + break; + + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_EOS: + case BLE_HS_ECONTROLLER: + case BLE_HS_ENOTSYNCED: + NIMBLE_LOGE(LOG_TAG, "Unable to advertise - Host Reset"); + break; + + default: + NIMBLE_LOGE(LOG_TAG, "Error enabling advertising; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + + NIMBLE_LOGD(LOG_TAG, "<< Advertising start"); + return (rc == 0 || rc == BLE_HS_EALREADY); +} // start + + +/** + * @brief Stop advertising. + * @return True if advertising stopped successfully. + */ +bool NimBLEAdvertising::stop() { + NIMBLE_LOGD(LOG_TAG, ">> stop"); + + int rc = ble_gap_adv_stop(); + if (rc != 0 && rc != BLE_HS_EALREADY) { + NIMBLE_LOGE(LOG_TAG, "ble_gap_adv_stop rc=%d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + + NIMBLE_LOGD(LOG_TAG, "<< stop"); + return true; +} // stop + + +/** + * @brief Handles the callback when advertising stops. + */ +void NimBLEAdvertising::advCompleteCB() { + if(m_advCompCB != nullptr) { + m_advCompCB(this); + } +} // advCompleteCB + + +/** + * @brief Check if currently advertising. + * @return true if advertising is active. + */ +bool NimBLEAdvertising::isAdvertising() { + return ble_gap_adv_active(); +} // isAdvertising + + +/* + * Host reset seems to clear advertising data, + * we need clear the flag so it reloads it. + */ +void NimBLEAdvertising::onHostSync() { + NIMBLE_LOGD(LOG_TAG, "Host re-synced"); + + m_advDataSet = false; + // If we were advertising forever, restart it now + if(m_duration == 0) { + start(m_duration, m_advCompCB); + } else { + // Otherwise we should tell the app that advertising stopped. + advCompleteCB(); + } +} // onHostSync + + +/** + * @brief Handler for gap events when not using peripheral role. + * @param [in] event the event data. + * @param [in] arg pointer to the advertising instance. + */ +/*STATIC*/ +int NimBLEAdvertising::handleGapEvent(struct ble_gap_event *event, void *arg) { + NimBLEAdvertising *pAdv = (NimBLEAdvertising*)arg; + + if(event->type == BLE_GAP_EVENT_ADV_COMPLETE) { + switch(event->adv_complete.reason) { + // Don't call the callback if host reset, we want to + // preserve the active flag until re-sync to restart advertising. + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_EOS: + case BLE_HS_ECONTROLLER: + case BLE_HS_ENOTSYNCED: + NIMBLE_LOGC(LOG_TAG, "host reset, rc=%d", event->adv_complete.reason); + NimBLEDevice::onReset(event->adv_complete.reason); + return 0; + default: + break; + } + pAdv->advCompleteCB(); + } + return 0; +} + + +/** + * @brief Add data to the payload to be advertised. + * @param [in] data The data to be added to the payload. + */ +void NimBLEAdvertisementData::addData(const std::string &data) { + if ((m_payload.length() + data.length()) > BLE_HS_ADV_MAX_SZ) { + NIMBLE_LOGE(LOG_TAG, "Advertisement data length exceeded"); + return; + } + m_payload.append(data); +} // addData + + +/** + * @brief Add data to the payload to be advertised. + * @param [in] data The data to be added to the payload. + * @param [in] length The size of data to be added to the payload. + */ +void NimBLEAdvertisementData::addData(char * data, size_t length) { + addData(std::string(data, length)); +} // addData + + +/** + * @brief Set the appearance. + * @param [in] appearance The appearance code value. + */ +void NimBLEAdvertisementData::setAppearance(uint16_t appearance) { + char cdata[2]; + cdata[0] = 3; + cdata[1] = BLE_HS_ADV_TYPE_APPEARANCE; // 0x19 + addData(std::string(cdata, 2) + std::string((char*) &appearance, 2)); +} // setAppearance + + +/** + * @brief Set the advertisement flags. + * @param [in] flag The flags to be set in the advertisement. + * * BLE_HS_ADV_F_DISC_LTD + * * BLE_HS_ADV_F_DISC_GEN + * * BLE_HS_ADV_F_BREDR_UNSUP - must always use with NimBLE + */ +void NimBLEAdvertisementData::setFlags(uint8_t flag) { + char cdata[3]; + cdata[0] = 2; + cdata[1] = BLE_HS_ADV_TYPE_FLAGS; // 0x01 + cdata[2] = flag | BLE_HS_ADV_F_BREDR_UNSUP; + addData(std::string(cdata, 3)); +} // setFlag + + +/** + * @brief Set manufacturer specific data. + * @param [in] data The manufacturer data to advertise. + */ +void NimBLEAdvertisementData::setManufacturerData(const std::string &data) { + char cdata[2]; + cdata[0] = data.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_MFG_DATA ; // 0xff + addData(std::string(cdata, 2) + data); +} // setManufacturerData + + +/** + * @brief Set manufacturer specific data. + * @param [in] data The manufacturer data to advertise. + */ +void NimBLEAdvertisementData::setManufacturerData(const std::vector &data) { + char cdata[2]; + cdata[0] = data.size() + 1; + cdata[1] = BLE_HS_ADV_TYPE_MFG_DATA ; // 0xff + addData(std::string(cdata, 2) + std::string((char*)&data[0], data.size())); +} // setManufacturerData + + +/** + * @brief Set the URI to advertise. + * @param [in] uri The uri to advertise. + */ +void NimBLEAdvertisementData::setURI(const std::string &uri) { + char cdata[2]; + cdata[0] = uri.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_URI; + addData(std::string(cdata, 2) + uri); +} // setURI + + +/** + * @brief Set the complete name of this device. + * @param [in] name The name to advertise. + */ +void NimBLEAdvertisementData::setName(const std::string &name) { + char cdata[2]; + cdata[0] = name.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_COMP_NAME; // 0x09 + addData(std::string(cdata, 2) + name); +} // setName + + +/** + * @brief Set a single service to advertise as a complete list of services. + * @param [in] uuid The service to advertise. + */ +void NimBLEAdvertisementData::setCompleteServices(const NimBLEUUID &uuid) { + setServices(true, uuid.bitSize(), {uuid}); +} // setCompleteServices + + +/** + * @brief Set the complete list of 16 bit services to advertise. + * @param [in] v_uuid A vector of 16 bit UUID's to advertise. + */ +void NimBLEAdvertisementData::setCompleteServices16(const std::vector& v_uuid) { + setServices(true, 16, v_uuid); +} // setCompleteServices16 + + +/** + * @brief Set the complete list of 32 bit services to advertise. + * @param [in] v_uuid A vector of 32 bit UUID's to advertise. + */ +void NimBLEAdvertisementData::setCompleteServices32(const std::vector& v_uuid) { + setServices(true, 32, v_uuid); +} // setCompleteServices32 + + +/** + * @brief Set a single service to advertise as a partial list of services. + * @param [in] uuid The service to advertise. + */ +void NimBLEAdvertisementData::setPartialServices(const NimBLEUUID &uuid) { + setServices(false, uuid.bitSize(), {uuid}); +} // setPartialServices + + +/** + * @brief Set the partial list of services to advertise. + * @param [in] v_uuid A vector of 16 bit UUID's to advertise. + */ +void NimBLEAdvertisementData::setPartialServices16(const std::vector& v_uuid) { + setServices(false, 16, v_uuid); +} // setPartialServices16 + + +/** + * @brief Set the partial list of services to advertise. + * @param [in] v_uuid A vector of 32 bit UUID's to advertise. + */ +void NimBLEAdvertisementData::setPartialServices32(const std::vector& v_uuid) { + setServices(false, 32, v_uuid); +} // setPartialServices32 + + +/** + * @brief Utility function to create the list of service UUID's from a vector. + * @param [in] complete If true the vector is the complete set of services. + * @param [in] size The bit size of the UUID's in the vector. (16, 32, or 128). + * @param [in] v_uuid The vector of service UUID's to advertise. + */ +void NimBLEAdvertisementData::setServices(const bool complete, const uint8_t size, + const std::vector &v_uuid) +{ + char cdata[2]; + cdata[0] = (size / 8) * v_uuid.size() + 1; + switch(size) { + case 16: + cdata[1] = complete ? BLE_HS_ADV_TYPE_COMP_UUIDS16 : BLE_HS_ADV_TYPE_INCOMP_UUIDS16; + break; + case 32: + cdata[1] = complete ? BLE_HS_ADV_TYPE_COMP_UUIDS32 : BLE_HS_ADV_TYPE_INCOMP_UUIDS32; + break; + case 128: + cdata[1] = complete ? BLE_HS_ADV_TYPE_COMP_UUIDS128 : BLE_HS_ADV_TYPE_INCOMP_UUIDS128; + break; + default: + return; + } + + std::string uuids; + + for(auto &it : v_uuid){ + if(it.bitSize() != size) { + NIMBLE_LOGE(LOG_TAG, "Service UUID(%d) invalid", size); + return; + } else { + switch(size) { + case 16: + uuids += std::string((char*)&it.getNative()->u16.value, 2); + break; + case 32: + uuids += std::string((char*)&it.getNative()->u32.value, 4); + break; + case 128: + uuids += std::string((char*)&it.getNative()->u128.value, 16); + break; + default: + return; + } + } + } + + addData(std::string(cdata, 2) + uuids); +} // setServices + + +/** + * @brief Set the service data (UUID + data) + * @param [in] uuid The UUID to set with the service data. + * @param [in] data The data to be associated with the service data advertised. + */ +void NimBLEAdvertisementData::setServiceData(const NimBLEUUID &uuid, const std::string &data) { + char cdata[2]; + switch (uuid.bitSize()) { + case 16: { + // [Len] [0x16] [UUID16] data + cdata[0] = data.length() + 3; + cdata[1] = BLE_HS_ADV_TYPE_SVC_DATA_UUID16; // 0x16 + addData(std::string(cdata, 2) + std::string((char*) &uuid.getNative()->u16.value, 2) + data); + break; + } + + case 32: { + // [Len] [0x20] [UUID32] data + cdata[0] = data.length() + 5; + cdata[1] = BLE_HS_ADV_TYPE_SVC_DATA_UUID32; // 0x20 + addData(std::string(cdata, 2) + std::string((char*) &uuid.getNative()->u32.value, 4) + data); + break; + } + + case 128: { + // [Len] [0x21] [UUID128] data + cdata[0] = data.length() + 17; + cdata[1] = BLE_HS_ADV_TYPE_SVC_DATA_UUID128; // 0x21 + addData(std::string(cdata, 2) + std::string((char*) &uuid.getNative()->u128.value, 16) + data); + break; + } + + default: + return; + } +} // setServiceData + + +/** + * @brief Set the short name. + * @param [in] name The short name of the device. + */ +void NimBLEAdvertisementData::setShortName(const std::string &name) { + char cdata[2]; + cdata[0] = name.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_INCOMP_NAME; // 0x08 + addData(std::string(cdata, 2) + name); +} // setShortName + + +/** + * @brief Adds Tx power level to the advertisement data. + */ +void NimBLEAdvertisementData::addTxPower() { + char cdata[3]; + cdata[0] = BLE_HS_ADV_TX_PWR_LVL_LEN + 1; + cdata[1] = BLE_HS_ADV_TYPE_TX_PWR_LVL; + cdata[2] = NimBLEDevice::getPower(); + addData(cdata, 3); +} // addTxPower + + +/** + * @brief Set the preferred connection interval parameters. + * @param [in] min The minimum interval desired. + * @param [in] max The maximum interval desired. + */ +void NimBLEAdvertisementData::setPreferredParams(uint16_t min, uint16_t max) { + char cdata[6]; + cdata[0] = BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN + 1; + cdata[1] = BLE_HS_ADV_TYPE_SLAVE_ITVL_RANGE; + cdata[2] = min; + cdata[3] = min >> 8; + cdata[4] = max; + cdata[5] = max >> 8; + addData(cdata, 6); +} // setPreferredParams + + +/** + * @brief Retrieve the payload that is to be advertised. + * @return The payload that is to be advertised. + */ +std::string NimBLEAdvertisementData::getPayload() { + return m_payload; +} // getPayload + + +/** + * @brief Clear the advertisement data for reuse. + */ +void NimBLEAdvertisementData::clearData() { + m_payload.clear(); +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER && !CONFIG_BT_NIMBLE_EXT_ADV */ diff --git a/lib/esp-nimble-cpp/src/NimBLEAdvertising.h b/lib/esp-nimble-cpp/src/NimBLEAdvertising.h new file mode 100644 index 0000000..dc36d07 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAdvertising.h @@ -0,0 +1,150 @@ +/* + * NimBLEAdvertising.h + * + * Created: on March 3, 2020 + * Author H2zero + * + * Originally: + * + * BLEAdvertising.h + * + * Created on: Jun 21, 2017 + * Author: kolban + */ + +#ifndef MAIN_BLEADVERTISING_H_ +#define MAIN_BLEADVERTISING_H_ +#include "nimconfig.h" +#if (defined(CONFIG_BT_ENABLED) && \ + defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) && \ + !CONFIG_BT_NIMBLE_EXT_ADV) || defined(_DOXYGEN_) + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "host/ble_gap.h" +#else +#include "nimble/nimble/host/include/host/ble_gap.h" +#endif + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +#include "NimBLEUUID.h" +#include "NimBLEAddress.h" + +#include +#include + +/* COMPATIBILITY - DO NOT USE */ +#define ESP_BLE_ADV_FLAG_LIMIT_DISC (0x01 << 0) +#define ESP_BLE_ADV_FLAG_GEN_DISC (0x01 << 1) +#define ESP_BLE_ADV_FLAG_BREDR_NOT_SPT (0x01 << 2) +#define ESP_BLE_ADV_FLAG_DMT_CONTROLLER_SPT (0x01 << 3) +#define ESP_BLE_ADV_FLAG_DMT_HOST_SPT (0x01 << 4) +#define ESP_BLE_ADV_FLAG_NON_LIMIT_DISC (0x00 ) + /* ************************* */ + +class NimBLEAdvertising; + +typedef std::function advCompleteCB_t; + +/** + * @brief Advertisement data set by the programmer to be published by the %BLE server. + */ +class NimBLEAdvertisementData { + // Only a subset of the possible BLE architected advertisement fields are currently exposed. Others will + // be exposed on demand/request or as time permits. + // +public: + void setAppearance(uint16_t appearance); + void setCompleteServices(const NimBLEUUID &uuid); + void setCompleteServices16(const std::vector &v_uuid); + void setCompleteServices32(const std::vector &v_uuid); + void setFlags(uint8_t); + void setManufacturerData(const std::string &data); + void setManufacturerData(const std::vector &data); + void setURI(const std::string &uri); + void setName(const std::string &name); + void setPartialServices(const NimBLEUUID &uuid); + void setPartialServices16(const std::vector &v_uuid); + void setPartialServices32(const std::vector &v_uuid); + void setServiceData(const NimBLEUUID &uuid, const std::string &data); + void setShortName(const std::string &name); + void addData(const std::string &data); // Add data to the payload. + void addData(char * data, size_t length); + void addTxPower(); + void setPreferredParams(uint16_t min, uint16_t max); + std::string getPayload(); // Retrieve the current advert payload. + void clearData(); // Clear the advertisement data. + +private: + friend class NimBLEAdvertising; + void setServices(const bool complete, const uint8_t size, + const std::vector &v_uuid); + std::string m_payload; // The payload of the advertisement. +}; // NimBLEAdvertisementData + + +/** + * @brief Perform and manage %BLE advertising. + * + * A %BLE server will want to perform advertising in order to make itself known to %BLE clients. + */ +class NimBLEAdvertising { +public: + NimBLEAdvertising(); + void addServiceUUID(const NimBLEUUID &serviceUUID); + void addServiceUUID(const char* serviceUUID); + void removeServiceUUID(const NimBLEUUID &serviceUUID); + bool start(uint32_t duration = 0, advCompleteCB_t advCompleteCB = nullptr, NimBLEAddress* dirAddr = nullptr); + void removeServices(); + bool stop(); + void setAppearance(uint16_t appearance); + void setName(const std::string &name); + void setManufacturerData(const std::string &data); + void setManufacturerData(const std::vector &data); + void setURI(const std::string &uri); + void setServiceData(const NimBLEUUID &uuid, const std::string &data); + void setAdvertisementType(uint8_t adv_type); + void setMaxInterval(uint16_t maxinterval); + void setMinInterval(uint16_t mininterval); + void setAdvertisementData(NimBLEAdvertisementData& advertisementData); + void setScanFilter(bool scanRequestWhitelistOnly, bool connectWhitelistOnly); + void setScanResponseData(NimBLEAdvertisementData& advertisementData); + void setScanResponse(bool); + void setMinPreferred(uint16_t); + void setMaxPreferred(uint16_t); + void addTxPower(); + void reset(); + void advCompleteCB(); + bool isAdvertising(); + +private: + friend class NimBLEDevice; + friend class NimBLEServer; + + void onHostSync(); + static int handleGapEvent(struct ble_gap_event *event, void *arg); + + ble_hs_adv_fields m_advData; + ble_hs_adv_fields m_scanData; + ble_gap_adv_params m_advParams; + std::vector m_serviceUUIDs; + bool m_customAdvData; + bool m_customScanResponseData; + bool m_scanResp; + bool m_advDataSet; + advCompleteCB_t m_advCompCB{nullptr}; + uint8_t m_slaveItvl[4]; + uint32_t m_duration; + std::vector m_svcData16; + std::vector m_svcData32; + std::vector m_svcData128; + std::vector m_name; + std::vector m_mfgData; + std::vector m_uri; +}; + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER && !CONFIG_BT_NIMBLE_EXT_ADV */ +#endif /* MAIN_BLEADVERTISING_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEAttValue.h b/lib/esp-nimble-cpp/src/NimBLEAttValue.h new file mode 100644 index 0000000..786bc8b --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEAttValue.h @@ -0,0 +1,448 @@ +/* + * NimBLEAttValue.h + * + * Created: on March 18, 2021 + * Author H2zero + * + */ + +#ifndef MAIN_NIMBLEATTVALUE_H_ +#define MAIN_NIMBLEATTVALUE_H_ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#ifdef NIMBLE_CPP_ARDUINO_STRING_AVAILABLE +#include +#endif + +#include "NimBLELog.h" + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +#include +#include +#include + +#ifndef CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED +# define CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED 0 +#endif + +#if CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED +# include +#endif + +#if !defined(CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH) +# define CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH 20 +#elif CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH > BLE_ATT_ATTR_MAX_LEN +# error CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH cannot be larger than 512 (BLE_ATT_ATTR_MAX_LEN) +#elif CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH < 1 +# error CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH cannot be less than 1; Range = 1 : 512 +#endif + + +/* Used to determine if the type passed to a template has a c_str() and length() method. */ +template +struct Has_c_str_len : std::false_type {}; + +template +struct Has_c_str_len().c_str())), + decltype(void(std::declval().length()))> : std::true_type {}; + + +/** + * @brief A specialized container class to hold BLE attribute values. + * @details This class is designed to be more memory efficient than using\n + * standard container types for value storage, while being convertible to\n + * many different container classes. + */ +class NimBLEAttValue +{ + uint8_t* m_attr_value = nullptr; + uint16_t m_attr_max_len = 0; + uint16_t m_attr_len = 0; + uint16_t m_capacity = 0; +#if CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED + time_t m_timestamp = 0; +#endif + void deepCopy(const NimBLEAttValue & source); + +public: + /** + * @brief Default constructor. + * @param[in] init_len The initial size in bytes. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(uint16_t init_len = CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN); + + /** + * @brief Construct with an initial value from a buffer. + * @param value A pointer to the initial value to set. + * @param[in] len The size in bytes of the value to set. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(const uint8_t *value, uint16_t len, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN); + + /** + * @brief Construct with an initializer list. + * @param list An initializer list containing the initial value to set. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(std::initializer_list list, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN) + :NimBLEAttValue(list.begin(), (uint16_t)list.size(), max_len){} + + /** + * @brief Construct with an initial value from a const char string. + * @param value A pointer to the initial value to set. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(const char *value, uint16_t max_len = BLE_ATT_ATTR_MAX_LEN) + :NimBLEAttValue((uint8_t*)value, (uint16_t)strlen(value), max_len){} + + /** + * @brief Construct with an initial value from a std::string. + * @param str A std::string containing to the initial value to set. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(const std::string str, uint16_t max_len = BLE_ATT_ATTR_MAX_LEN) + :NimBLEAttValue((uint8_t*)str.data(), (uint16_t)str.length(), max_len){} + + /** + * @brief Construct with an initial value from a std::vector. + * @param vec A std::vector containing to the initial value to set. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(const std::vector vec, uint16_t max_len = BLE_ATT_ATTR_MAX_LEN) + :NimBLEAttValue(&vec[0], (uint16_t)vec.size(), max_len){} + +#ifdef NIMBLE_CPP_ARDUINO_STRING_AVAILABLE + /** + * @brief Construct with an initial value from an Arduino String. + * @param str An Arduino String containing to the initial value to set. + * @param[in] max_len The max size in bytes that the value can be. + */ + NimBLEAttValue(const String str, uint16_t max_len = BLE_ATT_ATTR_MAX_LEN) + :NimBLEAttValue((uint8_t*)str.c_str(), str.length(), max_len){} +#endif + + /** @brief Copy constructor */ + NimBLEAttValue(const NimBLEAttValue & source) { deepCopy(source); } + + /** @brief Move constructor */ + NimBLEAttValue(NimBLEAttValue && source) { *this = std::move(source); } + + /** @brief Destructor */ + ~NimBLEAttValue(); + + /** @brief Returns the max size in bytes */ + uint16_t max_size() const { return m_attr_max_len; } + + /** @brief Returns the currently allocated capacity in bytes */ + uint16_t capacity() const { return m_capacity; } + + /** @brief Returns the current length of the value in bytes */ + uint16_t length() const { return m_attr_len; } + + /** @brief Returns the current size of the value in bytes */ + uint16_t size() const { return m_attr_len; } + + /** @brief Returns a pointer to the internal buffer of the value */ + const uint8_t* data() const { return m_attr_value; } + + /** @brief Returns a pointer to the internal buffer of the value as a const char* */ + const char* c_str() const { return (const char*)m_attr_value; } + + /** @brief Iterator begin */ + const uint8_t* begin() const { return m_attr_value; } + + /** @brief Iterator end */ + const uint8_t* end() const { return m_attr_value + m_attr_len; } + +#if CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED + /** @brief Returns a timestamp of when the value was last updated */ + time_t getTimeStamp() const { return m_timestamp; } + + /** @brief Set the timestamp to the current time */ + void setTimeStamp() { m_timestamp = time(nullptr); } + + /** + * @brief Set the timestamp to the specified time + * @param[in] t The timestamp value to set + */ + void setTimeStamp(time_t t) { m_timestamp = t; } +#else + time_t getTimeStamp() const { return 0; } + void setTimeStamp() { } + void setTimeStamp(time_t t) { } +#endif + + /** + * @brief Set the value from a buffer + * @param[in] value A ponter to a buffer containing the value. + * @param[in] len The length of the value in bytes. + * @returns True if successful. + */ + bool setValue(const uint8_t *value, uint16_t len); + + /** + * @brief Set value to the value of const char*. + * @param [in] s A ponter to a const char value to set. + */ + bool setValue(const char* s) { + return setValue((uint8_t*)s, (uint16_t)strlen(s)); } + + /** + * @brief Get a pointer to the value buffer with timestamp. + * @param[in] timestamp A ponter to a time_t variable to store the timestamp. + * @returns A pointer to the internal value buffer. + */ + const uint8_t* getValue(time_t *timestamp); + + /** + * @brief Append data to the value. + * @param[in] value A ponter to a data buffer with the value to append. + * @param[in] len The length of the value to append in bytes. + * @returns A reference to the appended NimBLEAttValue. + */ + NimBLEAttValue& append(const uint8_t *value, uint16_t len); + + + /*********************** Template Functions ************************/ + + /** + * @brief Template to set value to the value of val. + * @param [in] s The value to set. + * @details Only used for types without a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + bool +#else + typename std::enable_if::value, bool>::type +#endif + setValue(const T &s) { + return setValue((uint8_t*)&s, sizeof(T)); + } + + /** + * @brief Template to set value to the value of val. + * @param [in] s The value to set. + * @details Only used if the has a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + bool +#else + typename std::enable_if::value, bool>::type +#endif + setValue(const T & s) { + return setValue((uint8_t*)s.c_str(), (uint16_t)s.length()); + } + + /** + * @brief Template to return the value as a . + * @tparam T The type to convert the data to. + * @param [in] timestamp A pointer to a time_t struct to store the time the value was read. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than\n + * sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is\n + * less than sizeof(). + * @details Use: getValue(×tamp, skipSizeCheck); + */ + template + T getValue(time_t *timestamp = nullptr, bool skipSizeCheck = false) { + if(!skipSizeCheck && size() < sizeof(T)) { + return T(); + } + return *((T *)getValue(timestamp)); + } + + + /*********************** Operators ************************/ + + /** @brief Subscript operator */ + uint8_t operator [](int pos) const { + assert(pos < m_attr_len && "out of range"); return m_attr_value[pos]; } + + /** @brief Operator; Get the value as a std::vector. */ + operator std::vector() const { + return std::vector(m_attr_value, m_attr_value + m_attr_len); } + + /** @brief Operator; Get the value as a std::string. */ + operator std::string() const { + return std::string((char*)m_attr_value, m_attr_len); } + + /** @brief Operator; Get the value as a const uint8_t*. */ + operator const uint8_t*() const { return m_attr_value; } + + /** @brief Operator; Append another NimBLEAttValue. */ + NimBLEAttValue& operator +=(const NimBLEAttValue & source) { + return append(source.data(), source.size()); } + + /** @brief Operator; Set the value from a std::string source. */ + NimBLEAttValue& operator =(const std::string & source) { + setValue((uint8_t*)source.data(), (uint16_t)source.size()); return *this; } + + /** @brief Move assignment operator */ + NimBLEAttValue& operator =(NimBLEAttValue && source); + + /** @brief Copy assignment operator */ + NimBLEAttValue& operator =(const NimBLEAttValue & source); + + /** @brief Equality operator */ + bool operator ==(const NimBLEAttValue & source) { + return (m_attr_len == source.size()) ? + memcmp(m_attr_value, source.data(), m_attr_len) == 0 : false; } + + /** @brief Inequality operator */ + bool operator !=(const NimBLEAttValue & source){ return !(*this == source); } + +#ifdef NIMBLE_CPP_ARDUINO_STRING_AVAILABLE + /** @brief Operator; Get the value as an Arduino String value. */ + operator String() const { return String((char*)m_attr_value); } +#endif + +}; + + +inline NimBLEAttValue::NimBLEAttValue(uint16_t init_len, uint16_t max_len) { + m_attr_value = (uint8_t*)calloc(init_len + 1, 1); + assert(m_attr_value && "No Mem"); + m_attr_max_len = std::min(BLE_ATT_ATTR_MAX_LEN, (int)max_len); + m_attr_len = 0; + m_capacity = init_len; + setTimeStamp(0); +} + +inline NimBLEAttValue::NimBLEAttValue(const uint8_t *value, uint16_t len, uint16_t max_len) +: NimBLEAttValue(len, max_len) { + memcpy(m_attr_value, value, len); + m_attr_value[len] = '\0'; + m_attr_len = len; +} + +inline NimBLEAttValue::~NimBLEAttValue() { + if(m_attr_value != nullptr) { + free(m_attr_value); + } +} + +inline NimBLEAttValue& NimBLEAttValue::operator =(NimBLEAttValue && source) { + if (this != &source){ + free(m_attr_value); + + m_attr_value = source.m_attr_value; + m_attr_max_len = source.m_attr_max_len; + m_attr_len = source.m_attr_len; + m_capacity = source.m_capacity; + setTimeStamp(source.getTimeStamp()); + source.m_attr_value = nullptr; + } + return *this; +} + +inline NimBLEAttValue& NimBLEAttValue::operator =(const NimBLEAttValue & source) { + if (this != &source) { + deepCopy(source); + } + return *this; +} + +inline void NimBLEAttValue::deepCopy(const NimBLEAttValue & source) { + uint8_t* res = (uint8_t*)realloc( m_attr_value, source.m_capacity + 1); + assert(res && "deepCopy: realloc failed"); + + ble_npl_hw_enter_critical(); + m_attr_value = res; + m_attr_max_len = source.m_attr_max_len; + m_attr_len = source.m_attr_len; + m_capacity = source.m_capacity; + setTimeStamp(source.getTimeStamp()); + memcpy(m_attr_value, source.m_attr_value, m_attr_len + 1); + ble_npl_hw_exit_critical(0); +} + +inline const uint8_t* NimBLEAttValue::getValue(time_t *timestamp) { + if(timestamp != nullptr) { +#if CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED + *timestamp = m_timestamp; +#else + *timestamp = 0; +#endif + } + return m_attr_value; +} + +inline bool NimBLEAttValue::setValue(const uint8_t *value, uint16_t len) { + if (len > m_attr_max_len) { + NIMBLE_LOGE("NimBLEAttValue", "value exceeds max, len=%u, max=%u", + len, m_attr_max_len); + return false; + } + + uint8_t *res = m_attr_value; + if (len > m_capacity) { + res = (uint8_t*)realloc(m_attr_value, (len + 1)); + m_capacity = len; + } + assert(res && "setValue: realloc failed"); + +#if CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED + time_t t = time(nullptr); +#else + time_t t = 0; +#endif + + ble_npl_hw_enter_critical(); + m_attr_value = res; + memcpy(m_attr_value, value, len); + m_attr_value[len] = '\0'; + m_attr_len = len; + setTimeStamp(t); + ble_npl_hw_exit_critical(0); + return true; +} + +inline NimBLEAttValue& NimBLEAttValue::append(const uint8_t *value, uint16_t len) { + if (len < 1) { + return *this; + } + + if ((m_attr_len + len) > m_attr_max_len) { + NIMBLE_LOGE("NimBLEAttValue", "val > max, len=%u, max=%u", + len, m_attr_max_len); + return *this; + } + + uint8_t* res = m_attr_value; + uint16_t new_len = m_attr_len + len; + if (new_len > m_capacity) { + res = (uint8_t*)realloc(m_attr_value, (new_len + 1)); + m_capacity = new_len; + } + assert(res && "append: realloc failed"); + +#if CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED + time_t t = time(nullptr); +#else + time_t t = 0; +#endif + + ble_npl_hw_enter_critical(); + m_attr_value = res; + memcpy(m_attr_value + m_attr_len, value, len); + m_attr_len = new_len; + m_attr_value[m_attr_len] = '\0'; + setTimeStamp(t); + ble_npl_hw_exit_critical(0); + + return *this; +} + +#endif /*(CONFIG_BT_ENABLED) */ +#endif /* MAIN_NIMBLEATTVALUE_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLEBeacon.cpp b/lib/esp-nimble-cpp/src/NimBLEBeacon.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEBeacon.cpp rename to lib/esp-nimble-cpp/src/NimBLEBeacon.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEBeacon.h b/lib/esp-nimble-cpp/src/NimBLEBeacon.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEBeacon.h rename to lib/esp-nimble-cpp/src/NimBLEBeacon.h diff --git a/lib/esp-nimble-cpp/src/NimBLECharacteristic.cpp b/lib/esp-nimble-cpp/src/NimBLECharacteristic.cpp new file mode 100644 index 0000000..3ea4b84 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLECharacteristic.cpp @@ -0,0 +1,657 @@ +/* + * NimBLECharacteristic.cpp + * + * Created: on March 3, 2020 + * Author H2zero + * + * BLECharacteristic.cpp + * + * Created on: Jun 22, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLECharacteristic.h" +#include "NimBLE2904.h" +#include "NimBLEDevice.h" +#include "NimBLELog.h" + +#define NULL_HANDLE (0xffff) +#define NIMBLE_SUB_NOTIFY 0x0001 +#define NIMBLE_SUB_INDICATE 0x0002 + +static NimBLECharacteristicCallbacks defaultCallback; +static const char* LOG_TAG = "NimBLECharacteristic"; + + +/** + * @brief Construct a characteristic + * @param [in] uuid - UUID (const char*) for the characteristic. + * @param [in] properties - Properties for the characteristic. + * @param [in] max_len - The maximum length in bytes that the characteristic value can hold. (Default: 512 bytes for esp32, 20 for all others). + * @param [in] pService - pointer to the service instance this characteristic belongs to. + */ +NimBLECharacteristic::NimBLECharacteristic(const char* uuid, uint16_t properties, + uint16_t max_len, NimBLEService* pService) +: NimBLECharacteristic(NimBLEUUID(uuid), properties, max_len, pService) { +} + +/** + * @brief Construct a characteristic + * @param [in] uuid - UUID for the characteristic. + * @param [in] properties - Properties for the characteristic. + * @param [in] max_len - The maximum length in bytes that the characteristic value can hold. (Default: 512 bytes for esp32, 20 for all others). + * @param [in] pService - pointer to the service instance this characteristic belongs to. + */ +NimBLECharacteristic::NimBLECharacteristic(const NimBLEUUID &uuid, uint16_t properties, + uint16_t max_len, NimBLEService* pService) +: m_value(std::min(CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH , (int)max_len), max_len) { + m_uuid = uuid; + m_handle = NULL_HANDLE; + m_properties = properties; + m_pCallbacks = &defaultCallback; + m_pService = pService; + m_removed = 0; +} // NimBLECharacteristic + +/** + * @brief Destructor. + */ +NimBLECharacteristic::~NimBLECharacteristic() { + for(auto &it : m_dscVec) { + delete it; + } +} // ~NimBLECharacteristic + + +/** + * @brief Create a new BLE Descriptor associated with this characteristic. + * @param [in] uuid - The UUID of the descriptor. + * @param [in] properties - The properties of the descriptor. + * @param [in] max_len - The max length in bytes of the descriptor value. + * @return The new BLE descriptor. + */ +NimBLEDescriptor* NimBLECharacteristic::createDescriptor(const char* uuid, uint32_t properties, uint16_t max_len) { + return createDescriptor(NimBLEUUID(uuid), properties, max_len); +} + + +/** + * @brief Create a new BLE Descriptor associated with this characteristic. + * @param [in] uuid - The UUID of the descriptor. + * @param [in] properties - The properties of the descriptor. + * @param [in] max_len - The max length in bytes of the descriptor value. + * @return The new BLE descriptor. + */ +NimBLEDescriptor* NimBLECharacteristic::createDescriptor(const NimBLEUUID &uuid, uint32_t properties, uint16_t max_len) { + NimBLEDescriptor* pDescriptor = nullptr; + if(uuid == NimBLEUUID(uint16_t(0x2902))) { + assert(0 && "0x2902 descriptors cannot be manually created"); + } else if (uuid == NimBLEUUID(uint16_t(0x2904))) { + pDescriptor = new NimBLE2904(this); + } else { + pDescriptor = new NimBLEDescriptor(uuid, properties, max_len, this); + } + + addDescriptor(pDescriptor); + return pDescriptor; +} // createDescriptor + + +/** + * @brief Add a descriptor to the characteristic. + * @param [in] pDescriptor A pointer to the descriptor to add. + */ +void NimBLECharacteristic::addDescriptor(NimBLEDescriptor *pDescriptor) { + bool foundRemoved = false; + + if(pDescriptor->m_removed > 0) { + for(auto& it : m_dscVec) { + if(it == pDescriptor) { + foundRemoved = true; + pDescriptor->m_removed = 0; + } + } + } + + if(!foundRemoved) { + m_dscVec.push_back(pDescriptor); + } + + pDescriptor->setCharacteristic(this); + NimBLEDevice::getServer()->serviceChanged(); +} + + +/** + * @brief Remove a descriptor from the characteristic. + * @param[in] pDescriptor A pointer to the descriptor instance to remove from the characteristic. + * @param[in] deleteDsc If true it will delete the descriptor instance and free it's resources. + */ +void NimBLECharacteristic::removeDescriptor(NimBLEDescriptor *pDescriptor, bool deleteDsc) { + // Check if the descriptor was already removed and if so, check if this + // is being called to delete the object and do so if requested. + // Otherwise, ignore the call and return. + if(pDescriptor->m_removed > 0) { + if(deleteDsc) { + for(auto it = m_dscVec.begin(); it != m_dscVec.end(); ++it) { + if ((*it) == pDescriptor) { + delete *it; + m_dscVec.erase(it); + break; + } + } + } + + return; + } + + pDescriptor->m_removed = deleteDsc ? NIMBLE_ATT_REMOVE_DELETE : NIMBLE_ATT_REMOVE_HIDE; + NimBLEDevice::getServer()->serviceChanged(); +} // removeDescriptor + + +/** + * @brief Return the BLE Descriptor for the given UUID. + * @param [in] uuid The UUID of the descriptor. + * @return A pointer to the descriptor object or nullptr if not found. + */ +NimBLEDescriptor* NimBLECharacteristic::getDescriptorByUUID(const char* uuid) { + return getDescriptorByUUID(NimBLEUUID(uuid)); +} // getDescriptorByUUID + + +/** + * @brief Return the BLE Descriptor for the given UUID. + * @param [in] uuid The UUID of the descriptor. + * @return A pointer to the descriptor object or nullptr if not found. + */ +NimBLEDescriptor* NimBLECharacteristic::getDescriptorByUUID(const NimBLEUUID &uuid) { + for (auto &it : m_dscVec) { + if (it->getUUID() == uuid) { + return it; + } + } + return nullptr; +} // getDescriptorByUUID + +/** + * @brief Return the BLE Descriptor for the given handle. + * @param [in] handle The handle of the descriptor. + * @return A pointer to the descriptor object or nullptr if not found. + */ +NimBLEDescriptor *NimBLECharacteristic::getDescriptorByHandle(uint16_t handle) { + for (auto &it : m_dscVec) { + if (it->getHandle() == handle) { + return it; + } + } + return nullptr; +} + + +/** + * @brief Get the handle of the characteristic. + * @return The handle of the characteristic. + */ +uint16_t NimBLECharacteristic::getHandle() { + return m_handle; +} // getHandle + + +/** + * @brief Get the properties of the characteristic. + * @return The properties of the characteristic. + */ +uint16_t NimBLECharacteristic::getProperties() { + return m_properties; +} // getProperties + + +/** + * @brief Get the service associated with this characteristic. + */ +NimBLEService* NimBLECharacteristic::getService() { + return m_pService; +} // getService + + +void NimBLECharacteristic::setService(NimBLEService *pService) { + m_pService = pService; +} + + +/** + * @brief Get the UUID of the characteristic. + * @return The UUID of the characteristic. + */ +NimBLEUUID NimBLECharacteristic::getUUID() { + return m_uuid; +} // getUUID + + +/** + * @brief Retrieve the current value of the characteristic. + * @return The NimBLEAttValue containing the current characteristic value. + */ +NimBLEAttValue NimBLECharacteristic::getValue(time_t *timestamp) { + if(timestamp != nullptr) { + m_value.getValue(timestamp); + } + + return m_value; +} // getValue + + +/** + * @brief Retrieve the the current data length of the characteristic. + * @return The length of the current characteristic data. + */ +size_t NimBLECharacteristic::getDataLength() { + return m_value.size(); +} + + +/** + * @brief STATIC callback to handle events from the NimBLE stack. + */ +int NimBLECharacteristic::handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, + void *arg) +{ + if (conn_handle > BLE_HCI_LE_CONN_HANDLE_MAX) + { + NIMBLE_LOGW(LOG_TAG, "Conn_handle (%d) is above the maximum value (%d)", conn_handle, BLE_HCI_LE_CONN_HANDLE_MAX); + return BLE_ATT_ERR_INVALID_HANDLE; + } + + const ble_uuid_t *uuid; + int rc; + NimBLEConnInfo peerInfo; + NimBLECharacteristic* pCharacteristic = (NimBLECharacteristic*)arg; + + NIMBLE_LOGD(LOG_TAG, "Characteristic %s %s event", pCharacteristic->getUUID().toString().c_str(), + ctxt->op == BLE_GATT_ACCESS_OP_READ_CHR ? "Read" : "Write"); + + uuid = ctxt->chr->uuid; + if(ble_uuid_cmp(uuid, &pCharacteristic->getUUID().getNative()->u) == 0){ + switch(ctxt->op) { + case BLE_GATT_ACCESS_OP_READ_CHR: { + ble_gap_conn_find(conn_handle, &peerInfo.m_desc); + + // If the packet header is only 8 bytes this is a follow up of a long read + // so we don't want to call the onRead() callback again. + if(ctxt->om->om_pkthdr_len > 8 || + pCharacteristic->m_value.size() <= (ble_att_mtu(peerInfo.m_desc.conn_handle) - 3)) { + pCharacteristic->m_pCallbacks->onRead(pCharacteristic, peerInfo); + } + + ble_npl_hw_enter_critical(); + rc = os_mbuf_append(ctxt->om, pCharacteristic->m_value.data(), pCharacteristic->m_value.size()); + ble_npl_hw_exit_critical(0); + return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; + } + + case BLE_GATT_ACCESS_OP_WRITE_CHR: { + uint16_t att_max_len = pCharacteristic->m_value.max_size(); + + if (ctxt->om->om_len > att_max_len) { + return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } + + uint8_t buf[att_max_len]; + size_t len = ctxt->om->om_len; + memcpy(buf, ctxt->om->om_data,len); + + os_mbuf *next; + next = SLIST_NEXT(ctxt->om, om_next); + while(next != NULL){ + if((len + next->om_len) > att_max_len) { + return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } + memcpy(&buf[len], next->om_data, next->om_len); + len += next->om_len; + next = SLIST_NEXT(next, om_next); + } + + ble_gap_conn_find(conn_handle, &peerInfo.m_desc); + pCharacteristic->setValue(buf, len); + pCharacteristic->m_pCallbacks->onWrite(pCharacteristic, peerInfo); + return 0; + } + default: + break; + } + } + + return BLE_ATT_ERR_UNLIKELY; +} + + +/** + * @brief Get the number of clients subscribed to the characteristic. + * @returns Number of clients subscribed to notifications / indications. + */ +size_t NimBLECharacteristic::getSubscribedCount() { + return m_subscribedVec.size(); +} + + +/** + * @brief Set the subscribe status for this characteristic.\n + * This will maintain a vector of subscribed clients and their indicate/notify status. + */ +void NimBLECharacteristic::setSubscribe(struct ble_gap_event *event) { + NimBLEConnInfo peerInfo; + if(ble_gap_conn_find(event->subscribe.conn_handle, &peerInfo.m_desc) != 0) { + return; + } + + uint16_t subVal = 0; + if(event->subscribe.cur_notify > 0 && (m_properties & NIMBLE_PROPERTY::NOTIFY)) { + subVal |= NIMBLE_SUB_NOTIFY; + } + if(event->subscribe.cur_indicate && (m_properties & NIMBLE_PROPERTY::INDICATE)) { + subVal |= NIMBLE_SUB_INDICATE; + } + + NIMBLE_LOGI(LOG_TAG, "New subscribe value for conn: %d val: %d", + event->subscribe.conn_handle, subVal); + + if(!event->subscribe.cur_indicate && event->subscribe.prev_indicate) { + NimBLEDevice::getServer()->clearIndicateWait(event->subscribe.conn_handle); + } + + + auto it = m_subscribedVec.begin(); + for(;it != m_subscribedVec.end(); ++it) { + if((*it).first == event->subscribe.conn_handle) { + break; + } + } + + if(subVal > 0) { + if(it == m_subscribedVec.end()) { + m_subscribedVec.push_back({event->subscribe.conn_handle, subVal}); + } else { + (*it).second = subVal; + } + } else if(it != m_subscribedVec.end()) { + m_subscribedVec.erase(it); + } + + m_pCallbacks->onSubscribe(this, peerInfo, subVal); +} + + +/** + * @brief Send an indication. + */ +void NimBLECharacteristic::indicate() { + notify(false); +} // indicate + + +/** + * @brief Send an indication. + * @param[in] value A pointer to the data to send. + * @param[in] length The length of the data to send. + */ +void NimBLECharacteristic::indicate(const uint8_t* value, size_t length) { + notify(value, length, false); +} // indicate + + +/** + * @brief Send an indication. + * @param[in] value A std::vector containing the value to send as the notification value. + */ +void NimBLECharacteristic::indicate(const std::vector& value) { + notify(value.data(), value.size(), false); +} // indicate + + +/** + * @brief Send a notification or indication. + * @param[in] is_notification if true sends a notification, false sends an indication. + * @param[in] conn_handle Connection handle to send individual notification, or BLE_HCI_LE_CONN_HANDLE_MAX + 1 to send notification to all subscribed clients. + */ +void NimBLECharacteristic::notify(bool is_notification, uint16_t conn_handle) { + notify(m_value.data(), m_value.length(), is_notification, conn_handle); +} // notify + + +/** + * @brief Send a notification or indication. + * @param[in] value A std::vector containing the value to send as the notification value. + * @param[in] is_notification if true sends a notification, false sends an indication. + * @param[in] conn_handle Connection handle to send individual notification, or BLE_HCI_LE_CONN_HANDLE_MAX + 1 to send notification to all subscribed clients. + */ +void NimBLECharacteristic::notify(const std::vector& value, bool is_notification, uint16_t conn_handle) { + notify(value.data(), value.size(), is_notification, conn_handle); +} // notify + + +/** + * @brief Send a notification or indication. + * @param[in] value A pointer to the data to send. + * @param[in] length The length of the data to send. + * @param[in] is_notification if true sends a notification, false sends an indication. + * @param[in] conn_handle Connection handle to send individual notification, or BLE_HCI_LE_CONN_HANDLE_MAX + 1 to send notification to all subscribed clients. + */ +void NimBLECharacteristic::notify(const uint8_t* value, size_t length, bool is_notification, uint16_t conn_handle) { + NIMBLE_LOGD(LOG_TAG, ">> notify: length: %d", length); + + if(!(m_properties & NIMBLE_PROPERTY::NOTIFY) && + !(m_properties & NIMBLE_PROPERTY::INDICATE)) + { + NIMBLE_LOGE(LOG_TAG, + "<< notify-Error; Notify/indicate not enabled for characteristic: %s", + std::string(getUUID()).c_str()); + } + + if (m_subscribedVec.size() == 0) { + NIMBLE_LOGD(LOG_TAG, "<< notify: No clients subscribed."); + return; + } + + m_pCallbacks->onNotify(this); + + bool reqSec = (m_properties & BLE_GATT_CHR_F_READ_AUTHEN) || + (m_properties & BLE_GATT_CHR_F_READ_AUTHOR) || + (m_properties & BLE_GATT_CHR_F_READ_ENC); + int rc = 0; + + for (auto &it : m_subscribedVec) { + // check if need a specific client + if ((conn_handle <= BLE_HCI_LE_CONN_HANDLE_MAX) && (it.first != conn_handle)) { + continue; + } + + uint16_t _mtu = getService()->getServer()->getPeerMTU(it.first) - 3; + + // check if connected and subscribed + if(_mtu == 0 || it.second == 0) { + continue; + } + + // check if security requirements are satisfied + if(reqSec) { + struct ble_gap_conn_desc desc; + rc = ble_gap_conn_find(it.first, &desc); + if(rc != 0 || !desc.sec_state.encrypted) { + continue; + } + } + + if (length > _mtu) { + NIMBLE_LOGW(LOG_TAG, "- Truncating to %d bytes (maximum notify size)", _mtu); + } + + if(is_notification && (!(it.second & NIMBLE_SUB_NOTIFY))) { + NIMBLE_LOGW(LOG_TAG, + "Sending notification to client subscribed to indications, sending indication instead"); + is_notification = false; + } + + if(!is_notification && (!(it.second & NIMBLE_SUB_INDICATE))) { + NIMBLE_LOGW(LOG_TAG, + "Sending indication to client subscribed to notification, sending notification instead"); + is_notification = true; + } + + // don't create the m_buf until we are sure to send the data or else + // we could be allocating a buffer that doesn't get released. + // We also must create it in each loop iteration because it is consumed with each host call. + os_mbuf *om = ble_hs_mbuf_from_flat(value, length); + + if(!is_notification && (m_properties & NIMBLE_PROPERTY::INDICATE)) { + if(!NimBLEDevice::getServer()->setIndicateWait(it.first)) { + NIMBLE_LOGE(LOG_TAG, "prior Indication in progress"); + os_mbuf_free_chain(om); + return; + } + + rc = ble_gattc_indicate_custom(it.first, m_handle, om); + if(rc != 0){ + NimBLEDevice::getServer()->clearIndicateWait(it.first); + } + } else { + ble_gattc_notify_custom(it.first, m_handle, om); + } + } + + NIMBLE_LOGD(LOG_TAG, "<< notify"); +} // Notify + + +/** + * @brief Set the callback handlers for this characteristic. + * @param [in] pCallbacks An instance of a NimBLECharacteristicCallbacks class\n + * used to define any callbacks for the characteristic. + */ +void NimBLECharacteristic::setCallbacks(NimBLECharacteristicCallbacks* pCallbacks) { + if (pCallbacks != nullptr){ + m_pCallbacks = pCallbacks; + } else { + m_pCallbacks = &defaultCallback; + } +} // setCallbacks + + +/** + * @brief Get the callback handlers for this characteristic. + */ +NimBLECharacteristicCallbacks* NimBLECharacteristic::getCallbacks() { + return m_pCallbacks; +} //getCallbacks + + +/** + * @brief Set the value of the characteristic from a data buffer . + * @param [in] data The data buffer to set for the characteristic. + * @param [in] length The number of bytes in the data buffer. + */ +void NimBLECharacteristic::setValue(const uint8_t* data, size_t length) { +#if CONFIG_NIMBLE_CPP_LOG_LEVEL >= 4 + char* pHex = NimBLEUtils::buildHexData(nullptr, data, length); + NIMBLE_LOGD(LOG_TAG, ">> setValue: length=%d, data=%s, characteristic UUID=%s", + length, pHex, getUUID().toString().c_str()); + free(pHex); +#endif + + m_value.setValue(data, length); + NIMBLE_LOGD(LOG_TAG, "<< setValue"); +} // setValue + + +/** + * @brief Set the value of the characteristic from a `std::vector`.\n + * @param [in] vec The std::vector reference to set the characteristic value from. + */ +void NimBLECharacteristic::setValue(const std::vector& vec) { + return setValue((uint8_t*)&vec[0], vec.size()); +}// setValue + + +/** + * @brief Return a string representation of the characteristic. + * @return A string representation of the characteristic. + */ +std::string NimBLECharacteristic::toString() { + std::string res = "UUID: " + m_uuid.toString() + ", handle : 0x"; + char hex[5]; + snprintf(hex, sizeof(hex), "%04x", m_handle); + res += hex; + res += " "; + if (m_properties & BLE_GATT_CHR_PROP_READ ) res += "Read "; + if (m_properties & BLE_GATT_CHR_PROP_WRITE) res += "Write "; + if (m_properties & BLE_GATT_CHR_PROP_WRITE_NO_RSP) res += "WriteNoResponse "; + if (m_properties & BLE_GATT_CHR_PROP_BROADCAST) res += "Broadcast "; + if (m_properties & BLE_GATT_CHR_PROP_NOTIFY) res += "Notify "; + if (m_properties & BLE_GATT_CHR_PROP_INDICATE) res += "Indicate "; + return res; +} // toString + + +/** + * @brief Callback function to support a read request. + * @param [in] pCharacteristic The characteristic that is the source of the event. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + */ +void NimBLECharacteristicCallbacks::onRead(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo) { + NIMBLE_LOGD("NimBLECharacteristicCallbacks", "onRead: default"); +} // onRead + + +/** + * @brief Callback function to support a write request. + * @param [in] pCharacteristic The characteristic that is the source of the event. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + */ +void NimBLECharacteristicCallbacks::onWrite(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo) { + NIMBLE_LOGD("NimBLECharacteristicCallbacks", "onWrite: default"); +} // onWrite + + +/** + * @brief Callback function to support a Notify request. + * @param [in] pCharacteristic The characteristic that is the source of the event. + */ +void NimBLECharacteristicCallbacks::onNotify(NimBLECharacteristic* pCharacteristic) { + NIMBLE_LOGD("NimBLECharacteristicCallbacks", "onNotify: default"); +} // onNotify + + +/** + * @brief Callback function to support a Notify/Indicate Status report. + * @param [in] pCharacteristic The characteristic that is the source of the event. + * @param [in] code Status return code from the NimBLE stack. + * @details The status code for success is 0 for notifications and BLE_HS_EDONE for indications, + * any other value is an error. + */ +void NimBLECharacteristicCallbacks::onStatus(NimBLECharacteristic* pCharacteristic, int code) { + NIMBLE_LOGD("NimBLECharacteristicCallbacks", "onStatus: default"); +} // onStatus + + +/** + * @brief Callback function called when a client changes subscription status. + * @param [in] pCharacteristic The characteristic that is the source of the event. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + * @param [in] subValue The subscription status: + * * 0 = Un-Subscribed + * * 1 = Notifications + * * 2 = Indications + * * 3 = Notifications and Indications + */ +void NimBLECharacteristicCallbacks::onSubscribe(NimBLECharacteristic* pCharacteristic, + NimBLEConnInfo& connInfo, + uint16_t subValue) +{ + NIMBLE_LOGD("NimBLECharacteristicCallbacks", "onSubscribe: default"); +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLECharacteristic.h b/lib/esp-nimble-cpp/src/NimBLECharacteristic.h new file mode 100644 index 0000000..494242c --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLECharacteristic.h @@ -0,0 +1,213 @@ +/* + * NimBLECharacteristic.h + * + * Created: on March 3, 2020 + * Author H2zero + * + * Originally: + * BLECharacteristic.h + * + * Created on: Jun 22, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLECHARACTERISTIC_H_ +#define MAIN_NIMBLECHARACTERISTIC_H_ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "host/ble_hs.h" +#else +#include "nimble/nimble/host/include/host/ble_hs.h" +#endif + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +typedef enum { + READ = BLE_GATT_CHR_F_READ, + READ_ENC = BLE_GATT_CHR_F_READ_ENC, + READ_AUTHEN = BLE_GATT_CHR_F_READ_AUTHEN, + READ_AUTHOR = BLE_GATT_CHR_F_READ_AUTHOR, + WRITE = BLE_GATT_CHR_F_WRITE, + WRITE_NR = BLE_GATT_CHR_F_WRITE_NO_RSP, + WRITE_ENC = BLE_GATT_CHR_F_WRITE_ENC, + WRITE_AUTHEN = BLE_GATT_CHR_F_WRITE_AUTHEN, + WRITE_AUTHOR = BLE_GATT_CHR_F_WRITE_AUTHOR, + BROADCAST = BLE_GATT_CHR_F_BROADCAST, + NOTIFY = BLE_GATT_CHR_F_NOTIFY, + INDICATE = BLE_GATT_CHR_F_INDICATE +} NIMBLE_PROPERTY; + +#include "NimBLEService.h" +#include "NimBLEDescriptor.h" +#include "NimBLEAttValue.h" +#include "NimBLEConnInfo.h" + +#include +#include + +class NimBLEService; +class NimBLEDescriptor; +class NimBLECharacteristicCallbacks; + + +/** + * @brief The model of a %BLE Characteristic. + * + * A BLE Characteristic is an identified value container that manages a value. It is exposed by a BLE server and + * can be read and written to by a %BLE client. + */ +class NimBLECharacteristic { +public: + NimBLECharacteristic(const char* uuid, + uint16_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN, + NimBLEService* pService = nullptr); + NimBLECharacteristic(const NimBLEUUID &uuid, + uint16_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN, + NimBLEService* pService = nullptr); + + ~NimBLECharacteristic(); + + uint16_t getHandle(); + NimBLEUUID getUUID(); + std::string toString(); + void indicate(); + void indicate(const uint8_t* value, size_t length); + void indicate(const std::vector& value); + void notify(bool is_notification = true, uint16_t conn_handle = BLE_HCI_LE_CONN_HANDLE_MAX + 1); + void notify(const uint8_t* value, size_t length, bool is_notification = true, uint16_t conn_handle = BLE_HCI_LE_CONN_HANDLE_MAX + 1); + void notify(const std::vector& value, bool is_notification = true, uint16_t conn_handle = BLE_HCI_LE_CONN_HANDLE_MAX + 1); + size_t getSubscribedCount(); + void addDescriptor(NimBLEDescriptor *pDescriptor); + NimBLEDescriptor* getDescriptorByUUID(const char* uuid); + NimBLEDescriptor* getDescriptorByUUID(const NimBLEUUID &uuid); + NimBLEDescriptor* getDescriptorByHandle(uint16_t handle); + void removeDescriptor(NimBLEDescriptor *pDescriptor, bool deleteDsc = false); + NimBLEService* getService(); + uint16_t getProperties(); + NimBLEAttValue getValue(time_t *timestamp = nullptr); + size_t getDataLength(); + void setValue(const uint8_t* data, size_t size); + void setValue(const std::vector& vec); + void setCallbacks(NimBLECharacteristicCallbacks* pCallbacks); + NimBLEDescriptor* createDescriptor(const char* uuid, + uint32_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);; + NimBLEDescriptor* createDescriptor(const NimBLEUUID &uuid, + uint32_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN); + + NimBLECharacteristicCallbacks* getCallbacks(); + + + /*********************** Template Functions ************************/ + + /** + * @brief Template to set the characteristic value to val. + * @param [in] s The value to set. + */ + template + void setValue(const T &s) { m_value.setValue(s); } + + /** + * @brief Template to convert the characteristic data to . + * @tparam T The type to convert the data to. + * @param [in] timestamp (Optional) A pointer to a time_t struct to store the time the value was read. + * @param [in] skipSizeCheck (Optional) If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is less than sizeof(). + * @details Use: getValue(×tamp, skipSizeCheck); + */ + template + T getValue(time_t *timestamp = nullptr, bool skipSizeCheck = false) { + return m_value.getValue(timestamp, skipSizeCheck); + } + + /** + * @brief Template to send a notification from a class type that has a c_str() and length() method. + * @tparam T The a reference to a class containing the data to send. + * @param[in] value The value to set. + * @param[in] is_notification if true sends a notification, false sends an indication. + * @details Only used if the has a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + void +#else + typename std::enable_if::value, void>::type +#endif + notify(const T& value, bool is_notification = true) { + notify((uint8_t*)value.c_str(), value.length(), is_notification); + } + + /** + * @brief Template to send an indication from a class type that has a c_str() and length() method. + * @tparam T The a reference to a class containing the data to send. + * @param[in] value The value to set. + * @details Only used if the has a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + void +#else + typename std::enable_if::value, void>::type +#endif + indicate(const T& value) { + indicate((uint8_t*)value.c_str(), value.length()); + } + +private: + + friend class NimBLEServer; + friend class NimBLEService; + + void setService(NimBLEService *pService); + void setSubscribe(struct ble_gap_event *event); + static int handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg); + + NimBLEUUID m_uuid; + uint16_t m_handle; + uint16_t m_properties; + NimBLECharacteristicCallbacks* m_pCallbacks; + NimBLEService* m_pService; + NimBLEAttValue m_value; + std::vector m_dscVec; + uint8_t m_removed; + + std::vector> m_subscribedVec; +}; // NimBLECharacteristic + + +/** + * @brief Callbacks that can be associated with a %BLE characteristic to inform of events. + * + * When a server application creates a %BLE characteristic, we may wish to be informed when there is either + * a read or write request to the characteristic's value. An application can register a + * sub-classed instance of this class and will be notified when such an event happens. + */ +class NimBLECharacteristicCallbacks { +public: + virtual ~NimBLECharacteristicCallbacks(){} + virtual void onRead(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo); + virtual void onWrite(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo); + virtual void onNotify(NimBLECharacteristic* pCharacteristic); + virtual void onStatus(NimBLECharacteristic* pCharacteristic, int code); + virtual void onSubscribe(NimBLECharacteristic* pCharacteristic, NimBLEConnInfo& connInfo, uint16_t subValue); +}; + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ +#endif /*MAIN_NIMBLECHARACTERISTIC_H_*/ diff --git a/lib/esp-nimble-cpp/src/NimBLEClient.cpp b/lib/esp-nimble-cpp/src/NimBLEClient.cpp new file mode 100644 index 0000000..42063f3 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEClient.cpp @@ -0,0 +1,1351 @@ +/* + * NimBLEClient.cpp + * + * Created: on Jan 26 2020 + * Author H2zero + * + * Originally: + * BLEClient.cpp + * + * Created on: Mar 22, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLEClient.h" +#include "NimBLEDevice.h" +#include "NimBLELog.h" + +#include +#include +#include + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "nimble/nimble_port.h" +#else +#include "nimble/porting/nimble/include/nimble/nimble_port.h" +#endif + +static const char* LOG_TAG = "NimBLEClient"; +static NimBLEClientCallbacks defaultCallbacks; + +/* + * Design + * ------ + * When we perform a getService() request, we are asking the BLE server to return each of the services + * that it exposes. For each service, we receive a callback which contains details + * of the exposed service including its UUID. + * + * The objects we will invent for a NimBLEClient will be as follows: + * * NimBLERemoteService - A model of a remote service. + * * NimBLERemoteCharacteristic - A model of a remote characteristic + * * NimBLERemoteDescriptor - A model of a remote descriptor. + * + * Since there is a hierarchical relationship here, we will have the idea that from a NimBLERemoteService will own + * zero or more remote characteristics and a NimBLERemoteCharacteristic will own zero or more remote NimBLEDescriptors. + * + * We will assume that a NimBLERemoteService contains a vector of owned characteristics + * and that a NimBLECharacteristic contains a vector of owned descriptors. + * + * + */ + + +/** + * @brief Constructor, private - only callable by NimBLEDevice::createClient + * to ensure proper handling of the list of client objects. + */ +NimBLEClient::NimBLEClient(const NimBLEAddress &peerAddress) : m_peerAddress(peerAddress) { + m_pClientCallbacks = &defaultCallbacks; + m_conn_id = BLE_HS_CONN_HANDLE_NONE; + m_connectTimeout = 30000; + m_deleteCallbacks = false; + m_pTaskData = nullptr; + m_connEstablished = false; + m_lastErr = 0; +#if CONFIG_BT_NIMBLE_EXT_ADV + m_phyMask = BLE_GAP_LE_PHY_1M_MASK | + BLE_GAP_LE_PHY_2M_MASK | + BLE_GAP_LE_PHY_CODED_MASK; +#endif + + m_pConnParams.scan_itvl = 16; // Scan interval in 0.625ms units (NimBLE Default) + m_pConnParams.scan_window = 16; // Scan window in 0.625ms units (NimBLE Default) + m_pConnParams.itvl_min = BLE_GAP_INITIAL_CONN_ITVL_MIN; // min_int = 0x10*1.25ms = 20ms + m_pConnParams.itvl_max = BLE_GAP_INITIAL_CONN_ITVL_MAX; // max_int = 0x20*1.25ms = 40ms + m_pConnParams.latency = BLE_GAP_INITIAL_CONN_LATENCY; // number of packets allowed to skip (extends max interval) + m_pConnParams.supervision_timeout = BLE_GAP_INITIAL_SUPERVISION_TIMEOUT; // timeout = 400*10ms = 4000ms + m_pConnParams.min_ce_len = BLE_GAP_INITIAL_CONN_MIN_CE_LEN; // Minimum length of connection event in 0.625ms units + m_pConnParams.max_ce_len = BLE_GAP_INITIAL_CONN_MAX_CE_LEN; // Maximum length of connection event in 0.625ms units + + memset(&m_dcTimer, 0, sizeof(m_dcTimer)); + ble_npl_callout_init(&m_dcTimer, nimble_port_get_dflt_eventq(), + NimBLEClient::dcTimerCb, this); +} // NimBLEClient + + +/** + * @brief Destructor, private - only callable by NimBLEDevice::deleteClient + * to ensure proper disconnect and removal from device list. + */ +NimBLEClient::~NimBLEClient() { + // We may have allocated service references associated with this client. + // Before we are finished with the client, we must release resources. + deleteServices(); + + if(m_deleteCallbacks && m_pClientCallbacks != &defaultCallbacks) { + delete m_pClientCallbacks; + } + + ble_npl_callout_deinit(&m_dcTimer); + +} // ~NimBLEClient + + +/** + * @brief If we have asked to disconnect and the event does not + * occur within the supervision timeout + added delay, this will + * be called to reset the host in the case of a stalled controller. + */ +void NimBLEClient::dcTimerCb(ble_npl_event *event) { + /* NimBLEClient *pClient = (NimBLEClient*)event->arg; + NIMBLE_LOGC(LOG_TAG, "Timed out disconnecting from %s - resetting host", + std::string(pClient->getPeerAddress()).c_str()); + */ + ble_hs_sched_reset(BLE_HS_ECONTROLLER); +} + + +/** + * @brief Delete all service objects created by this client and clear the vector. + */ +void NimBLEClient::deleteServices() { + NIMBLE_LOGD(LOG_TAG, ">> deleteServices"); + // Delete all the services. + for(auto &it: m_servicesVector) { + delete it; + } + m_servicesVector.clear(); + + NIMBLE_LOGD(LOG_TAG, "<< deleteServices"); +} // deleteServices + + +/** + * @brief Delete service by UUID + * @param [in] uuid The UUID of the service to be deleted from the local database. + * @return Number of services left. + */ +size_t NimBLEClient::deleteService(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> deleteService"); + // Delete the requested service. + for(auto it = m_servicesVector.begin(); it != m_servicesVector.end(); ++it) { + if((*it)->getUUID() == uuid) { + delete *it; + m_servicesVector.erase(it); + break; + } + } + + NIMBLE_LOGD(LOG_TAG, "<< deleteService"); + + return m_servicesVector.size(); +} // deleteServices + + +/** + * @brief Connect to the BLE Server. + * @param [in] deleteAttributes If true this will delete any attribute objects this client may already\n + * have created and clears the vectors after successful connection. + * @return True on success. + */ +bool NimBLEClient::connect(bool deleteAttributes) { + return connect(m_peerAddress, deleteAttributes); +} + +/** + * @brief Connect to an advertising device. + * @param [in] device The device to connect to. + * @param [in] deleteAttributes If true this will delete any attribute objects this client may already\n + * have created and clears the vectors after successful connection. + * @return True on success. + */ +bool NimBLEClient::connect(NimBLEAdvertisedDevice* device, bool deleteAttributes) { + NimBLEAddress address(device->getAddress()); + return connect(address, deleteAttributes); +} + + +/** + * @brief Connect to the BLE Server. + * @param [in] address The address of the server. + * @param [in] deleteAttributes If true this will delete any attribute objects this client may already\n + * have created and clears the vectors after successful connection. + * @return True on success. + */ +bool NimBLEClient::connect(const NimBLEAddress &address, bool deleteAttributes) { + NIMBLE_LOGD(LOG_TAG, ">> connect(%s)", address.toString().c_str()); + + if(!NimBLEDevice::m_synced) { + NIMBLE_LOGC(LOG_TAG, "Host reset, wait for sync."); + return false; + } + + if(isConnected() || m_connEstablished || m_pTaskData != nullptr) { + NIMBLE_LOGE(LOG_TAG, "Client busy, connected to %s, id=%d", + std::string(m_peerAddress).c_str(), getConnId()); + return false; + } + + ble_addr_t peerAddr_t; + memcpy(&peerAddr_t.val, address.getNative(),6); + peerAddr_t.type = address.getType(); + if(ble_gap_conn_find_by_addr(&peerAddr_t, NULL) == 0) { + NIMBLE_LOGE(LOG_TAG, "A connection to %s already exists", + address.toString().c_str()); + return false; + } + + if(address == NimBLEAddress("")) { + NIMBLE_LOGE(LOG_TAG, "Invalid peer address;(NULL)"); + return false; + } else { + m_peerAddress = address; + } + + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + m_pTaskData = &taskData; + int rc = 0; + + /* Try to connect the the advertiser. Allow 30 seconds (30000 ms) for + * timeout (default value of m_connectTimeout). + * Loop on BLE_HS_EBUSY if the scan hasn't stopped yet. + */ + do { +#if CONFIG_BT_NIMBLE_EXT_ADV + rc = ble_gap_ext_connect(NimBLEDevice::m_own_addr_type, + &peerAddr_t, + m_connectTimeout, + m_phyMask, + &m_pConnParams, + &m_pConnParams, + &m_pConnParams, + NimBLEClient::handleGapEvent, + this); + +#else + rc = ble_gap_connect(NimBLEDevice::m_own_addr_type, &peerAddr_t, + m_connectTimeout, &m_pConnParams, + NimBLEClient::handleGapEvent, this); +#endif + switch (rc) { + case 0: + break; + + case BLE_HS_EBUSY: + // Scan was still running, stop it and try again + if (!NimBLEDevice::getScan()->stop()) { + rc = BLE_HS_EUNKNOWN; + } + break; + + case BLE_HS_EDONE: + // A connection to this device already exists, do not connect twice. + NIMBLE_LOGE(LOG_TAG, "Already connected to device; addr=%s", + std::string(m_peerAddress).c_str()); + break; + + case BLE_HS_EALREADY: + // Already attempting to connect to this device, cancel the previous + // attempt and report failure here so we don't get 2 connections. + NIMBLE_LOGE(LOG_TAG, "Already attempting to connect to %s - cancelling", + std::string(m_peerAddress).c_str()); + ble_gap_conn_cancel(); + break; + + default: + NIMBLE_LOGE(LOG_TAG, "Failed to connect to %s, rc=%d; %s", + std::string(m_peerAddress).c_str(), + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + + } while (rc == BLE_HS_EBUSY); + + m_lastErr = rc; + + if(rc != 0) { + m_pTaskData = nullptr; + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + // Wait for the connect timeout time +1 second for the connection to complete + if(ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(m_connectTimeout + 1000)) == pdFALSE) { + m_pTaskData = nullptr; + // If a connection was made but no response from MTU exchange; disconnect + if(isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Connect timeout - no response"); + disconnect(); + } else { + // workaround; if the controller doesn't cancel the connection + // at the timeout, cancel it here. + NIMBLE_LOGE(LOG_TAG, "Connect timeout - cancelling"); + ble_gap_conn_cancel(); + } + + return false; + + } else if(taskData.rc != 0){ + m_lastErr = taskData.rc; + NIMBLE_LOGE(LOG_TAG, "Connection failed; status=%d %s", + taskData.rc, + NimBLEUtils::returnCodeToString(taskData.rc)); + // If the failure was not a result of a disconnection + // make sure we disconnect now to avoid dangling connections + if(isConnected()) { + disconnect(); + } + return false; + } else { + NIMBLE_LOGI(LOG_TAG, "Connection established"); + } + + if(deleteAttributes) { + deleteServices(); + } + + m_connEstablished = true; + m_pClientCallbacks->onConnect(this); + + NIMBLE_LOGD(LOG_TAG, "<< connect()"); + // Check if still connected before returning + return isConnected(); +} // connect + + +/** + * @brief Initiate a secure connection (pair/bond) with the server.\n + * Called automatically when a characteristic or descriptor requires encryption or authentication to access it. + * @return True on success. + */ +bool NimBLEClient::secureConnection() { + NIMBLE_LOGD(LOG_TAG, ">> secureConnection()"); + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + + int retryCount = 1; + + do { + m_pTaskData = &taskData; + + int rc = NimBLEDevice::startSecurity(m_conn_id); + if(rc != 0 && rc != BLE_HS_EALREADY){ + m_lastErr = rc; + m_pTaskData = nullptr; + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + } while (taskData.rc == (BLE_HS_ERR_HCI_BASE + BLE_ERR_PINKEY_MISSING) && retryCount--); + + if(taskData.rc != 0){ + m_lastErr = taskData.rc; + NIMBLE_LOGE(LOG_TAG, "secureConnection: failed rc=%d", taskData.rc); + return false; + } + + NIMBLE_LOGD(LOG_TAG, "<< secureConnection: success"); + return true; +} // secureConnection + + +/** + * @brief Disconnect from the peer. + * @return Error code from NimBLE stack, 0 = success. + */ +int NimBLEClient::disconnect(uint8_t reason) { + NIMBLE_LOGD(LOG_TAG, ">> disconnect()"); + int rc = 0; + if(isConnected()) { + // If the timer was already started, ignore this call. + if(ble_npl_callout_is_active(&m_dcTimer)) { + NIMBLE_LOGI(LOG_TAG, "Already disconnecting, timer started"); + return BLE_HS_EALREADY; + } + + ble_gap_conn_desc desc; + if(ble_gap_conn_find(m_conn_id, &desc) != 0){ + NIMBLE_LOGI(LOG_TAG, "Connection ID not found"); + return BLE_HS_EALREADY; + } + + // We use a timer to detect a controller error in the event that it does + // not inform the stack when disconnection is complete. + // This is a common error in certain esp-idf versions. + // The disconnect timeout time is the supervision timeout time + 1 second. + // In the case that the event happens shortly after the supervision timeout + // we don't want to prematurely reset the host. + ble_npl_time_t ticks; + ble_npl_time_ms_to_ticks((desc.supervision_timeout + 100) * 10, &ticks); + ble_npl_callout_reset(&m_dcTimer, ticks); + + rc = ble_gap_terminate(m_conn_id, reason); + if (rc != 0) { + if(rc != BLE_HS_EALREADY) { + ble_npl_callout_stop(&m_dcTimer); + } + NIMBLE_LOGE(LOG_TAG, "ble_gap_terminate failed: rc=%d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + } + } else { + NIMBLE_LOGD(LOG_TAG, "Not connected to any peers"); + } + + NIMBLE_LOGD(LOG_TAG, "<< disconnect()"); + m_lastErr = rc; + return rc; +} // disconnect + + +#if CONFIG_BT_NIMBLE_EXT_ADV +/** + * @brief Set the PHY types to use when connecting to a server. + * @param [in] mask A bitmask indicating what PHYS to connect with.\n + * The available bits are: + * * 0x01 BLE_GAP_LE_PHY_1M_MASK + * * 0x02 BLE_GAP_LE_PHY_2M_MASK + * * 0x04 BLE_GAP_LE_PHY_CODED_MASK + */ +void NimBLEClient::setConnectPhy(uint8_t mask) { + m_phyMask = mask; +} +#endif + + +/** + * @brief Set the connection parameters to use when connecting to a server. + * @param [in] minInterval The minimum connection interval in 1.25ms units. + * @param [in] maxInterval The maximum connection interval in 1.25ms units. + * @param [in] latency The number of packets allowed to skip (extends max interval). + * @param [in] timeout The timeout time in 10ms units before disconnecting. + * @param [in] scanInterval The scan interval to use when attempting to connect in 0.625ms units. + * @param [in] scanWindow The scan window to use when attempting to connect in 0.625ms units. + */ +void NimBLEClient::setConnectionParams(uint16_t minInterval, uint16_t maxInterval, + uint16_t latency, uint16_t timeout, + uint16_t scanInterval, uint16_t scanWindow)/*, + uint16_t minConnTime, uint16_t maxConnTime)*/ +{ + + m_pConnParams.scan_itvl = scanInterval; + m_pConnParams.scan_window = scanWindow; + m_pConnParams.itvl_min = minInterval; + m_pConnParams.itvl_max = maxInterval; + m_pConnParams.latency = latency; + m_pConnParams.supervision_timeout = timeout; + + // These are not used by NimBLE at this time - Must leave at defaults + //m_pConnParams->min_ce_len = minConnTime; // Minimum length of connection event in 0.625ms units + //m_pConnParams->max_ce_len = maxConnTime; // Maximum length of connection event in 0.625ms units + + int rc = NimBLEUtils::checkConnParams(&m_pConnParams); + assert(rc == 0 && "Invalid Connection parameters"); +} // setConnectionParams + + +/** + * @brief Update the connection parameters: + * * Can only be used after a connection has been established. + * @param [in] minInterval The minimum connection interval in 1.25ms units. + * @param [in] maxInterval The maximum connection interval in 1.25ms units. + * @param [in] latency The number of packets allowed to skip (extends max interval). + * @param [in] timeout The timeout time in 10ms units before disconnecting. + */ +void NimBLEClient::updateConnParams(uint16_t minInterval, uint16_t maxInterval, + uint16_t latency, uint16_t timeout) +{ + ble_gap_upd_params params; + + params.latency = latency; + params.itvl_max = maxInterval; + params.itvl_min = minInterval; + params.supervision_timeout = timeout; + // These are not used by NimBLE at this time - Must leave at defaults + params.min_ce_len = BLE_GAP_INITIAL_CONN_MIN_CE_LEN; + params.max_ce_len = BLE_GAP_INITIAL_CONN_MAX_CE_LEN; + + int rc = ble_gap_update_params(m_conn_id, ¶ms); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Update params error: %d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + } +} // updateConnParams + + +/** + * @brief Request an update of the data packet length. + * * Can only be used after a connection has been established. + * @details Sends a data length update request to the server the client is connected to. + * The Data Length Extension (DLE) allows to increase the Data Channel Payload from 27 bytes to up to 251 bytes. + * The server needs to support the Bluetooth 4.2 specifications, to be capable of DLE. + * @param [in] tx_octets The preferred number of payload octets to use (Range 0x001B-0x00FB). + */ +void NimBLEClient::setDataLen(uint16_t tx_octets) { +#if defined(CONFIG_NIMBLE_CPP_IDF) && !defined(ESP_IDF_VERSION) || \ + (ESP_IDF_VERSION_MAJOR * 100 + ESP_IDF_VERSION_MINOR * 10 + ESP_IDF_VERSION_PATCH) < 432 + return; +#else + uint16_t tx_time = (tx_octets + 14) * 8; + + int rc = ble_gap_set_data_len(m_conn_id, tx_octets, tx_time); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Set data length error: %d, %s", rc, NimBLEUtils::returnCodeToString(rc)); + } +#endif +} // setDataLen + + +/** + * @brief Get detailed information about the current peer connection. + */ +NimBLEConnInfo NimBLEClient::getConnInfo() { + NimBLEConnInfo connInfo; + if (!isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Not connected"); + } else { + int rc = ble_gap_conn_find(m_conn_id, &connInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Connection info not found"); + } + } + + return connInfo; +} // getConnInfo + + +/** + * @brief Set the timeout to wait for connection attempt to complete. + * @param [in] time The number of milliseconds before timeout. + */ +void NimBLEClient::setConnectTimeout(uint32_t time) { + m_connectTimeout = time; +} // setConnectTimeout + + +/** + * @brief Get the connection id for this client. + * @return The connection id. + */ +uint16_t NimBLEClient::getConnId() { + return m_conn_id; +} // getConnId + +/** + * @brief Clear the connection information for this client. + * @note This is designed to be used to reset the connection information after + * calling setConnection(), and should not be used to disconnect from a + * peer. To disconnect from a peer, use disconnect(). + */ +void NimBLEClient::clearConnection() { + m_conn_id = BLE_HS_CONN_HANDLE_NONE; + m_connEstablished = false; + m_peerAddress = NimBLEAddress(); +} // clearConnection + +/** + * @brief Set the connection information for this client. + * @param [in] connInfo The connection information. + * @return True on success. + * @note Sets the connection established flag to true. + * @note If the client is already connected to a peer, this will return false. + * @note This is designed to be used when a connection is made outside of the + * NimBLEClient class, such as when a connection is made by the + * NimBLEServer class and the client is passed the connection id. This use + * enables the GATT Server to read the name of the device that has + * connected to it. + */ +bool NimBLEClient::setConnection(NimBLEConnInfo &connInfo) { + if (isConnected() || m_connEstablished) { + NIMBLE_LOGE(LOG_TAG, "Already connected"); + return false; + } + + m_peerAddress = connInfo.getAddress(); + m_conn_id = connInfo.getConnHandle(); + m_connEstablished = true; + + return true; +} // setConnection + +/** + * @brief Set the connection information for this client. + * @param [in] conn_id The connection id. + * @note Sets the connection established flag to true. + * @note This is designed to be used when a connection is made outside of the + * NimBLEClient class, such as when a connection is made by the + * NimBLEServer class and the client is passed the connection id. This use + * enables the GATT Server to read the name of the device that has + * connected to it. + * @note If the client is already connected to a peer, this will return false. + * @note This will look up the peer address using the connection id. + */ +bool NimBLEClient::setConnection(uint16_t conn_id) { + // we weren't provided the peer address, look it up using ble_gap_conn_find + NimBLEConnInfo connInfo; + int rc = ble_gap_conn_find(m_conn_id, &connInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Connection info not found"); + return false; + } + + return setConnection(connInfo); +} // setConnection + +/** + * @brief Retrieve the address of the peer. + */ +NimBLEAddress NimBLEClient::getPeerAddress() { + return m_peerAddress; +} // getPeerAddress + + +/** + * @brief Set the peer address. + * @param [in] address The address of the peer that this client is + * connected or should connect to. + */ +void NimBLEClient::setPeerAddress(const NimBLEAddress &address) { + if(isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Cannot set peer address while connected"); + return; + } + + m_peerAddress = address; + NIMBLE_LOGD(LOG_TAG, "Peer address set: %s", std::string(m_peerAddress).c_str()); +} // setPeerAddress + + +/** + * @brief Ask the BLE server for the RSSI value. + * @return The RSSI value. + */ +int NimBLEClient::getRssi() { + NIMBLE_LOGD(LOG_TAG, ">> getRssi()"); + if (!isConnected()) { + NIMBLE_LOGE(LOG_TAG, "<< getRssi(): Not connected"); + return 0; + } + + int8_t rssiValue = 0; + int rc = ble_gap_conn_rssi(m_conn_id, &rssiValue); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed to read RSSI error code: %d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + m_lastErr = rc; + return 0; + } + + return rssiValue; +} // getRssi + + +/** + * @brief Get iterator to the beginning of the vector of remote service pointers. + * @return An iterator to the beginning of the vector of remote service pointers. + */ +std::vector::iterator NimBLEClient::begin() { + return m_servicesVector.begin(); +} + + +/** + * @brief Get iterator to the end of the vector of remote service pointers. + * @return An iterator to the end of the vector of remote service pointers. + */ +std::vector::iterator NimBLEClient::end() { + return m_servicesVector.end(); +} + + +/** + * @brief Get the service BLE Remote Service instance corresponding to the uuid. + * @param [in] uuid The UUID of the service being sought. + * @return A pointer to the service or nullptr if not found. + */ +NimBLERemoteService* NimBLEClient::getService(const char* uuid) { + return getService(NimBLEUUID(uuid)); +} // getService + + +/** + * @brief Get the service object corresponding to the uuid. + * @param [in] uuid The UUID of the service being sought. + * @return A pointer to the service or nullptr if not found. + */ +NimBLERemoteService* NimBLEClient::getService(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> getService: uuid: %s", uuid.toString().c_str()); + + for(auto &it: m_servicesVector) { + if(it->getUUID() == uuid) { + NIMBLE_LOGD(LOG_TAG, "<< getService: found the service with uuid: %s", uuid.toString().c_str()); + return it; + } + } + + size_t prev_size = m_servicesVector.size(); + if(retrieveServices(&uuid)) { + if(m_servicesVector.size() > prev_size) { + return m_servicesVector.back(); + } + + // If the request was successful but 16/32 bit uuid not found + // try again with the 128 bit uuid. + if(uuid.bitSize() == BLE_UUID_TYPE_16 || + uuid.bitSize() == BLE_UUID_TYPE_32) + { + NimBLEUUID uuid128(uuid); + uuid128.to128(); + if(retrieveServices(&uuid128)) { + if(m_servicesVector.size() > prev_size) { + return m_servicesVector.back(); + } + } + } else { + // If the request was successful but the 128 bit uuid not found + // try again with the 16 bit uuid. + NimBLEUUID uuid16(uuid); + uuid16.to16(); + // if the uuid was 128 bit but not of the BLE base type this check will fail + if (uuid16.bitSize() == BLE_UUID_TYPE_16) { + if(retrieveServices(&uuid16)) { + if(m_servicesVector.size() > prev_size) { + return m_servicesVector.back(); + } + } + } + } + } + + NIMBLE_LOGD(LOG_TAG, "<< getService: not found"); + return nullptr; +} // getService + + +/** + * @brief Get a pointer to the vector of found services. + * @param [in] refresh If true the current services vector will be cleared and\n + * all services will be retrieved from the peripheral.\n + * If false the vector will be returned with the currently stored services. + * @return A pointer to the vector of available services. + */ +std::vector* NimBLEClient::getServices(bool refresh) { + if(refresh) { + deleteServices(); + + if (!retrieveServices()) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to get services"); + } + else{ + NIMBLE_LOGI(LOG_TAG, "Found %d services", m_servicesVector.size()); + } + } + return &m_servicesVector; +} // getServices + + +/** + * @brief Retrieves the full database of attributes that the peripheral has available. + * @return True if successful. + */ +bool NimBLEClient::discoverAttributes() { + deleteServices(); + + if (!retrieveServices()){ + return false; + } + + + for(auto svc: m_servicesVector) { + if (!svc->retrieveCharacteristics()) { + return false; + } + + for(auto chr: svc->m_characteristicVector) { + if (!chr->retrieveDescriptors()) { + return false; + } + } + } + + return true; +} // discoverAttributes + + +/** + * @brief Ask the remote %BLE server for its services.\n + * Here we ask the server for its set of services and wait until we have received them all. + * @return true on success otherwise false if an error occurred + */ +bool NimBLEClient::retrieveServices(const NimBLEUUID *uuid_filter) { +/** + * Design + * ------ + * We invoke ble_gattc_disc_all_svcs. This will request a list of the services exposed by the + * peer BLE partner to be returned in the callback function provided. + */ + + NIMBLE_LOGD(LOG_TAG, ">> retrieveServices"); + + if(!isConnected()){ + NIMBLE_LOGE(LOG_TAG, "Disconnected, could not retrieve services -aborting"); + return false; + } + + int rc = 0; + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + + if(uuid_filter == nullptr) { + rc = ble_gattc_disc_all_svcs(m_conn_id, NimBLEClient::serviceDiscoveredCB, &taskData); + } else { + rc = ble_gattc_disc_svc_by_uuid(m_conn_id, &uuid_filter->getNative()->u, + NimBLEClient::serviceDiscoveredCB, &taskData); + } + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_svcs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); + m_lastErr = rc; + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + + // wait until we have all the services + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + m_lastErr = taskData.rc; + + if(taskData.rc == 0){ + NIMBLE_LOGD(LOG_TAG, "<< retrieveServices"); + return true; + } + else { + NIMBLE_LOGE(LOG_TAG, "Could not retrieve services"); + return false; + } +} // getServices + + +/** + * @brief STATIC Callback for the service discovery API function.\n + * When a service is found or there is none left or there was an error + * the API will call this and report findings. + */ +int NimBLEClient::serviceDiscoveredCB( + uint16_t conn_handle, + const struct ble_gatt_error *error, + const struct ble_gatt_svc *service, void *arg) +{ + NIMBLE_LOGD(LOG_TAG,"Service Discovered >> status: %d handle: %d", + error->status, (error->status == 0) ? service->start_handle : -1); + + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLEClient *client = (NimBLEClient*)pTaskData->pATT; + + // Make sure the service discovery is for this device + if(client->getConnId() != conn_handle){ + return 0; + } + + if(error->status == 0) { + // Found a service - add it to the vector + NimBLERemoteService* pRemoteService = new NimBLERemoteService(client, service); + client->m_servicesVector.push_back(pRemoteService); + return 0; + } + + if(error->status == BLE_HS_EDONE) { + pTaskData->rc = 0; + } else { + NIMBLE_LOGE(LOG_TAG, "serviceDiscoveredCB() rc=%d %s", + error->status, + NimBLEUtils::returnCodeToString(error->status)); + pTaskData->rc = error->status; + } + + xTaskNotifyGive(pTaskData->task); + + NIMBLE_LOGD(LOG_TAG,"<< Service Discovered"); + return error->status; +} + + +/** + * @brief Get the value of a specific characteristic associated with a specific service. + * @param [in] serviceUUID The service that owns the characteristic. + * @param [in] characteristicUUID The characteristic whose value we wish to read. + * @returns characteristic value or an empty string if not found + */ +NimBLEAttValue NimBLEClient::getValue(const NimBLEUUID &serviceUUID, const NimBLEUUID &characteristicUUID) { + NIMBLE_LOGD(LOG_TAG, ">> getValue: serviceUUID: %s, characteristicUUID: %s", + serviceUUID.toString().c_str(), characteristicUUID.toString().c_str()); + + NimBLEAttValue ret; + NimBLERemoteService* pService = getService(serviceUUID); + + if(pService != nullptr) { + NimBLERemoteCharacteristic* pChar = pService->getCharacteristic(characteristicUUID); + if(pChar != nullptr) { + ret = pChar->readValue(); + } + } + + NIMBLE_LOGD(LOG_TAG, "<< getValue"); + return ret; +} // getValue + + +/** + * @brief Set the value of a specific characteristic associated with a specific service. + * @param [in] serviceUUID The service that owns the characteristic. + * @param [in] characteristicUUID The characteristic whose value we wish to write. + * @param [in] value The value to write to the characteristic. + * @param [in] response If true, uses write with response operation. + * @returns true if successful otherwise false + */ +bool NimBLEClient::setValue(const NimBLEUUID &serviceUUID, const NimBLEUUID &characteristicUUID, + const NimBLEAttValue &value, bool response) +{ + NIMBLE_LOGD(LOG_TAG, ">> setValue: serviceUUID: %s, characteristicUUID: %s", + serviceUUID.toString().c_str(), characteristicUUID.toString().c_str()); + + bool ret = false; + NimBLERemoteService* pService = getService(serviceUUID); + + if(pService != nullptr) { + NimBLERemoteCharacteristic* pChar = pService->getCharacteristic(characteristicUUID); + if(pChar != nullptr) { + ret = pChar->writeValue(value, response); + } + } + + NIMBLE_LOGD(LOG_TAG, "<< setValue"); + return ret; +} // setValue + + +/** + * @brief Get the remote characteristic with the specified handle. + * @param [in] handle The handle of the desired characteristic. + * @returns The matching remote characteristic, nullptr otherwise. + */ +NimBLERemoteCharacteristic* NimBLEClient::getCharacteristic(const uint16_t handle) +{ + NimBLERemoteService *pService = nullptr; + for(auto it = m_servicesVector.begin(); it != m_servicesVector.end(); ++it) { + if ((*it)->getStartHandle() <= handle && handle <= (*it)->getEndHandle()) { + pService = *it; + break; + } + } + + if (pService != nullptr) { + for (auto it = pService->begin(); it != pService->end(); ++it) { + if ((*it)->getHandle() == handle) { + return *it; + } + } + } + + return nullptr; +} + +/** + * @brief Get the current mtu of this connection. + * @returns The MTU value. + */ +uint16_t NimBLEClient::getMTU() { + return ble_att_mtu(m_conn_id); +} // getMTU + + +/** + * @brief Handle a received GAP event. + * @param [in] event The event structure sent by the NimBLE stack. + * @param [in] arg A pointer to the client instance that registered for this callback. + */ + /*STATIC*/ +int NimBLEClient::handleGapEvent(struct ble_gap_event *event, void *arg) { + NimBLEClient* pClient = (NimBLEClient*)arg; + int rc; + + NIMBLE_LOGD(LOG_TAG, "Got Client event %s", NimBLEUtils::gapEventToString(event->type)); + + switch(event->type) { + + case BLE_GAP_EVENT_DISCONNECT: { + rc = event->disconnect.reason; + // If Host reset tell the device now before returning to prevent + // any errors caused by calling host functions before resyncing. + switch(rc) { + case BLE_HS_ECONTROLLER: + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_ENOTSYNCED: + case BLE_HS_EOS: + NIMBLE_LOGC(LOG_TAG, "Disconnect - host reset, rc=%d", rc); + NimBLEDevice::onReset(rc); + break; + default: + // Check that the event is for this client. + if(pClient->m_conn_id != event->disconnect.conn.conn_handle) { + return 0; + } + break; + } + + // Stop the disconnect timer since we are now disconnected. + ble_npl_callout_stop(&pClient->m_dcTimer); + + // Remove the device from ignore list so we will scan it again + NimBLEDevice::removeIgnored(pClient->m_peerAddress); + + // No longer connected, clear the connection ID. + pClient->m_conn_id = BLE_HS_CONN_HANDLE_NONE; + + // If we received a connected event but did not get established (no PDU) + // then a disconnect event will be sent but we should not send it to the + // app for processing. Instead we will ensure the task is released + // and report the error. + if(!pClient->m_connEstablished) + break; + + NIMBLE_LOGI(LOG_TAG, "disconnect; reason=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + + pClient->m_connEstablished = false; + pClient->m_pClientCallbacks->onDisconnect(pClient, rc); + break; + } // BLE_GAP_EVENT_DISCONNECT + + case BLE_GAP_EVENT_CONNECT: { + // If we aren't waiting for this connection response + // we should drop the connection immediately. + if(pClient->isConnected() || pClient->m_pTaskData == nullptr) { + ble_gap_terminate(event->connect.conn_handle, BLE_ERR_REM_USER_CONN_TERM); + return 0; + } + + rc = event->connect.status; + if (rc == 0) { + NIMBLE_LOGI(LOG_TAG, "Connected event"); + + pClient->m_conn_id = event->connect.conn_handle; + + rc = ble_gattc_exchange_mtu(pClient->m_conn_id, NULL,NULL); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "MTU exchange error; rc=%d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + + // In the case of a multi-connecting device we ignore this device when + // scanning since we are already connected to it + NimBLEDevice::addIgnored(pClient->m_peerAddress); + } else { + pClient->m_conn_id = BLE_HS_CONN_HANDLE_NONE; + break; + } + + return 0; + } // BLE_GAP_EVENT_CONNECT + + case BLE_GAP_EVENT_NOTIFY_RX: { + if(pClient->m_conn_id != event->notify_rx.conn_handle) + return 0; + + // If a notification comes before this flag is set we might + // access a vector while it is being cleared in connect() + if(!pClient->m_connEstablished) { + return 0; + } + + NIMBLE_LOGD(LOG_TAG, "Notify Received for handle: %d", + event->notify_rx.attr_handle); + + for(auto &it: pClient->m_servicesVector) { + // Dont waste cycles searching services without this handle in its range + if(it->getEndHandle() < event->notify_rx.attr_handle) { + continue; + } + + auto cVector = &it->m_characteristicVector; + NIMBLE_LOGD(LOG_TAG, "checking service %s for handle: %d", + it->getUUID().toString().c_str(), + event->notify_rx.attr_handle); + + auto characteristic = cVector->cbegin(); + for(; characteristic != cVector->cend(); ++characteristic) { + if((*characteristic)->m_handle == event->notify_rx.attr_handle) + break; + } + + if(characteristic != cVector->cend()) { + NIMBLE_LOGD(LOG_TAG, "Got Notification for characteristic %s", + (*characteristic)->toString().c_str()); + + uint32_t data_len = OS_MBUF_PKTLEN(event->notify_rx.om); + (*characteristic)->m_value.setValue(event->notify_rx.om->om_data, data_len); + + if ((*characteristic)->m_notifyCallback != nullptr) { + NIMBLE_LOGD(LOG_TAG, "Invoking callback for notification on characteristic %s", + (*characteristic)->toString().c_str()); + (*characteristic)->m_notifyCallback(*characteristic, event->notify_rx.om->om_data, + data_len, !event->notify_rx.indication); + } + break; + } + } + + return 0; + } // BLE_GAP_EVENT_NOTIFY_RX + + case BLE_GAP_EVENT_CONN_UPDATE_REQ: + case BLE_GAP_EVENT_L2CAP_UPDATE_REQ: { + if(pClient->m_conn_id != event->conn_update_req.conn_handle){ + return 0; + } + NIMBLE_LOGD(LOG_TAG, "Peer requesting to update connection parameters"); + NIMBLE_LOGD(LOG_TAG, "MinInterval: %d, MaxInterval: %d, Latency: %d, Timeout: %d", + event->conn_update_req.peer_params->itvl_min, + event->conn_update_req.peer_params->itvl_max, + event->conn_update_req.peer_params->latency, + event->conn_update_req.peer_params->supervision_timeout); + + rc = pClient->m_pClientCallbacks->onConnParamsUpdateRequest(pClient, + event->conn_update_req.peer_params) ? 0 : BLE_ERR_CONN_PARMS; + + + if(!rc && event->type == BLE_GAP_EVENT_CONN_UPDATE_REQ ) { + event->conn_update_req.self_params->itvl_min = pClient->m_pConnParams.itvl_min; + event->conn_update_req.self_params->itvl_max = pClient->m_pConnParams.itvl_max; + event->conn_update_req.self_params->latency = pClient->m_pConnParams.latency; + event->conn_update_req.self_params->supervision_timeout = pClient->m_pConnParams.supervision_timeout; + } + + NIMBLE_LOGD(LOG_TAG, "%s peer params", (rc == 0) ? "Accepted" : "Rejected"); + return rc; + } // BLE_GAP_EVENT_CONN_UPDATE_REQ, BLE_GAP_EVENT_L2CAP_UPDATE_REQ + + case BLE_GAP_EVENT_CONN_UPDATE: { + if(pClient->m_conn_id != event->conn_update.conn_handle){ + return 0; + } + if(event->conn_update.status == 0) { + NIMBLE_LOGI(LOG_TAG, "Connection parameters updated."); + } else { + NIMBLE_LOGE(LOG_TAG, "Update connection parameters failed."); + } + return 0; + } // BLE_GAP_EVENT_CONN_UPDATE + + case BLE_GAP_EVENT_ENC_CHANGE: { + if(pClient->m_conn_id != event->enc_change.conn_handle){ + return 0; + } + + if(event->enc_change.status == 0 || + event->enc_change.status == (BLE_HS_ERR_HCI_BASE + BLE_ERR_PINKEY_MISSING)) + { + NimBLEConnInfo peerInfo; + rc = ble_gap_conn_find(event->enc_change.conn_handle, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Connection info not found"); + rc = 0; + break; + } + + if (event->enc_change.status == (BLE_HS_ERR_HCI_BASE + BLE_ERR_PINKEY_MISSING)) { + // Key is missing, try deleting. + ble_store_util_delete_peer(&peerInfo.m_desc.peer_id_addr); + } else { + pClient->m_pClientCallbacks->onAuthenticationComplete(peerInfo); + } + } + + rc = event->enc_change.status; + break; + } //BLE_GAP_EVENT_ENC_CHANGE + + case BLE_GAP_EVENT_IDENTITY_RESOLVED: { + NimBLEConnInfo peerInfo; + rc = ble_gap_conn_find(event->identity_resolved.conn_handle, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Connection info not found"); + rc = 0; + break; + } + + pClient->m_pClientCallbacks->onIdentity(peerInfo); + break; + } // BLE_GAP_EVENT_IDENTITY_RESOLVED + + case BLE_GAP_EVENT_MTU: { + if(pClient->m_conn_id != event->mtu.conn_handle){ + return 0; + } + NIMBLE_LOGI(LOG_TAG, "mtu update event; conn_handle=%d mtu=%d", + event->mtu.conn_handle, + event->mtu.value); + rc = 0; + break; + } // BLE_GAP_EVENT_MTU + + case BLE_GAP_EVENT_PASSKEY_ACTION: { + struct ble_sm_io pkey = {0,0}; + (void)pkey; //warning: variable 'pkey' set but not used [-Wunused-but-set-variable] + + if(pClient->m_conn_id != event->passkey.conn_handle) + return 0; + + NimBLEConnInfo peerInfo; + rc = ble_gap_conn_find(event->passkey.conn_handle, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Connection info not found"); + rc = 0; + break; + } + + if (event->passkey.params.action == BLE_SM_IOACT_NUMCMP) { + NIMBLE_LOGD(LOG_TAG, "Passkey on device's display: %" PRIu32, event->passkey.params.numcmp); + pClient->m_pClientCallbacks->onConfirmPIN(peerInfo, event->passkey.params.numcmp); + //TODO: Handle out of band pairing + } else if (event->passkey.params.action == BLE_SM_IOACT_OOB) { + static uint8_t tem_oob[16] = {0}; + pkey.action = event->passkey.params.action; + for (int i = 0; i < 16; i++) { + pkey.oob[i] = tem_oob[i]; + } + rc = ble_sm_inject_io(event->passkey.conn_handle, &pkey); + NIMBLE_LOGD(LOG_TAG, "ble_sm_inject_io result: %d", rc); + //////// + } else if (event->passkey.params.action == BLE_SM_IOACT_INPUT) { + NIMBLE_LOGD(LOG_TAG, "Enter the passkey"); + pClient->m_pClientCallbacks->onPassKeyEntry(peerInfo); + } else if (event->passkey.params.action == BLE_SM_IOACT_NONE) { + NIMBLE_LOGD(LOG_TAG, "No passkey action required"); + } + + return 0; + } // BLE_GAP_EVENT_PASSKEY_ACTION + + default: { + return 0; + } + } // Switch + + if(pClient->m_pTaskData != nullptr) { + pClient->m_pTaskData->rc = rc; + if(pClient->m_pTaskData->task) { + xTaskNotifyGive(pClient->m_pTaskData->task); + } + pClient->m_pTaskData = nullptr; + } + + return 0; +} // handleGapEvent + + +/** + * @brief Are we connected to a server? + * @return True if we are connected and false if we are not connected. + */ +bool NimBLEClient::isConnected() { + return m_conn_id != BLE_HS_CONN_HANDLE_NONE; +} // isConnected + + +/** + * @brief Set the callbacks that will be invoked when events are received. + * @param [in] pClientCallbacks A pointer to a class to receive the event callbacks. + * @param [in] deleteCallbacks If true this will delete the callback class sent when the client is destructed. + */ +void NimBLEClient::setClientCallbacks(NimBLEClientCallbacks* pClientCallbacks, bool deleteCallbacks) { + if (pClientCallbacks != nullptr){ + m_pClientCallbacks = pClientCallbacks; + } else { + m_pClientCallbacks = &defaultCallbacks; + } + m_deleteCallbacks = deleteCallbacks; +} // setClientCallbacks + + +/** + * @brief Return a string representation of this client. + * @return A string representation of this client. + */ +std::string NimBLEClient::toString() { + std::string res = "peer address: " + m_peerAddress.toString(); + res += "\nServices:\n"; + + for(auto &it: m_servicesVector) { + res += it->toString() + "\n"; + } + + return res; +} // toString + + +/** + * @brief Get the last error code reported by the NimBLE host + * @return int, the NimBLE error code. + */ +int NimBLEClient::getLastError() { + return m_lastErr; +} // getLastError + + +void NimBLEClientCallbacks::onConnect(NimBLEClient* pClient) { + NIMBLE_LOGD("NimBLEClientCallbacks", "onConnect: default"); +} + +void NimBLEClientCallbacks::onDisconnect(NimBLEClient* pClient, int reason) { + NIMBLE_LOGD("NimBLEClientCallbacks", "onDisconnect: default"); +} + +bool NimBLEClientCallbacks::onConnParamsUpdateRequest(NimBLEClient* pClient, const ble_gap_upd_params* params) { + NIMBLE_LOGD("NimBLEClientCallbacks", "onConnParamsUpdateRequest: default"); + return true; +} + +void NimBLEClientCallbacks::onPassKeyEntry(const NimBLEConnInfo& connInfo){ + NIMBLE_LOGD("NimBLEClientCallbacks", "onPassKeyEntry: default: 123456"); + NimBLEDevice::injectPassKey(connInfo, 123456); +} //onPassKeyEntry + +void NimBLEClientCallbacks::onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + NIMBLE_LOGD("NimBLEClientCallbacks", "onAuthenticationComplete: default"); +} + +void NimBLEClientCallbacks::onIdentity(const NimBLEConnInfo& connInfo){ + NIMBLE_LOGD("NimBLEClientCallbacks", "onIdentity: default"); +} // onIdentity + +void NimBLEClientCallbacks::onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pin){ + NIMBLE_LOGD("NimBLEClientCallbacks", "onConfirmPIN: default: true"); + NimBLEDevice::injectConfirmPIN(connInfo, true); +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLEClient.h b/lib/esp-nimble-cpp/src/NimBLEClient.h new file mode 100644 index 0000000..acef487 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEClient.h @@ -0,0 +1,176 @@ +/* + * NimBLEClient.h + * + * Created: on Jan 26 2020 + * Author H2zero + * + * Originally: + * BLEClient.h + * + * Created on: Mar 22, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLECLIENT_H_ +#define MAIN_NIMBLECLIENT_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLEAddress.h" +#include "NimBLEUUID.h" +#include "NimBLEUtils.h" +#include "NimBLEConnInfo.h" +#include "NimBLEAttValue.h" +#include "NimBLEAdvertisedDevice.h" +#include "NimBLERemoteService.h" + +#include +#include + +class NimBLERemoteService; +class NimBLERemoteCharacteristic; +class NimBLEClientCallbacks; +class NimBLEAdvertisedDevice; + +/** + * @brief A model of a %BLE client. + */ +class NimBLEClient { +public: + bool connect(NimBLEAdvertisedDevice* device, bool deleteAttributes = true); + bool connect(const NimBLEAddress &address, bool deleteAttributes = true); + bool connect(bool deleteAttributes = true); + int disconnect(uint8_t reason = BLE_ERR_REM_USER_CONN_TERM); + NimBLEAddress getPeerAddress(); + void setPeerAddress(const NimBLEAddress &address); + int getRssi(); + std::vector* getServices(bool refresh = false); + std::vector::iterator begin(); + std::vector::iterator end(); + NimBLERemoteService* getService(const char* uuid); + NimBLERemoteService* getService(const NimBLEUUID &uuid); + void deleteServices(); + size_t deleteService(const NimBLEUUID &uuid); + NimBLEAttValue getValue(const NimBLEUUID &serviceUUID, const NimBLEUUID &characteristicUUID); + bool setValue(const NimBLEUUID &serviceUUID, const NimBLEUUID &characteristicUUID, + const NimBLEAttValue &value, bool response = false); + NimBLERemoteCharacteristic* getCharacteristic(const uint16_t handle); + bool isConnected(); + void setClientCallbacks(NimBLEClientCallbacks *pClientCallbacks, + bool deleteCallbacks = true); + std::string toString(); + uint16_t getConnId(); + void clearConnection(); + bool setConnection(NimBLEConnInfo &conn_info); + bool setConnection(uint16_t conn_id); + uint16_t getMTU(); + bool secureConnection(); + void setConnectTimeout(uint32_t timeout); + void setConnectionParams(uint16_t minInterval, uint16_t maxInterval, + uint16_t latency, uint16_t timeout, + uint16_t scanInterval=16, uint16_t scanWindow=16); + void updateConnParams(uint16_t minInterval, uint16_t maxInterval, + uint16_t latency, uint16_t timeout); + void setDataLen(uint16_t tx_octets); + bool discoverAttributes(); + NimBLEConnInfo getConnInfo(); + int getLastError(); +#if CONFIG_BT_NIMBLE_EXT_ADV + void setConnectPhy(uint8_t mask); +#endif + +private: + NimBLEClient(const NimBLEAddress &peerAddress); + ~NimBLEClient(); + + friend class NimBLEDevice; + friend class NimBLERemoteService; + + static int handleGapEvent(struct ble_gap_event *event, void *arg); + static int serviceDiscoveredCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + const struct ble_gatt_svc *service, + void *arg); + static void dcTimerCb(ble_npl_event *event); + bool retrieveServices(const NimBLEUUID *uuid_filter = nullptr); + + NimBLEAddress m_peerAddress; + int m_lastErr; + uint16_t m_conn_id; + bool m_connEstablished; + bool m_deleteCallbacks; + int32_t m_connectTimeout; + NimBLEClientCallbacks* m_pClientCallbacks; + ble_task_data_t* m_pTaskData; + ble_npl_callout m_dcTimer; +#if CONFIG_BT_NIMBLE_EXT_ADV + uint8_t m_phyMask; +#endif + + std::vector m_servicesVector; + +private: + friend class NimBLEClientCallbacks; + ble_gap_conn_params m_pConnParams; + +}; // class NimBLEClient + + +/** + * @brief Callbacks associated with a %BLE client. + */ +class NimBLEClientCallbacks { +public: + virtual ~NimBLEClientCallbacks() {}; + + /** + * @brief Called after client connects. + * @param [in] pClient A pointer to the calling client object. + */ + virtual void onConnect(NimBLEClient* pClient); + + /** + * @brief Called when disconnected from the server. + * @param [in] pClient A pointer to the calling client object. + * @param [in] reason Contains the reason code for the disconnection. + */ + virtual void onDisconnect(NimBLEClient* pClient, int reason); + + /** + * @brief Called when server requests to update the connection parameters. + * @param [in] pClient A pointer to the calling client object. + * @param [in] params A pointer to the struct containing the connection parameters requested. + * @return True to accept the parameters. + */ + virtual bool onConnParamsUpdateRequest(NimBLEClient* pClient, const ble_gap_upd_params* params); + + /** + * @brief Called when server requests a passkey for pairing. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + */ + virtual void onPassKeyEntry(const NimBLEConnInfo& connInfo); + + /** + * @brief Called when the pairing procedure is complete. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info.\n + * This can be used to check the status of the connection encryption/pairing. + */ + virtual void onAuthenticationComplete(const NimBLEConnInfo& connInfo); + + /** + * @brief Called when using numeric comparision for pairing. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + * @param [in] pin The pin to compare with the server. + */ + virtual void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pin); + + /** + * @brief Called when the peer identity address is resolved. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + */ + virtual void onIdentity(const NimBLEConnInfo& connInfo); +}; + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ +#endif /* MAIN_NIMBLECLIENT_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEConnInfo.h b/lib/esp-nimble-cpp/src/NimBLEConnInfo.h new file mode 100644 index 0000000..274e6d3 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEConnInfo.h @@ -0,0 +1,58 @@ +#ifndef NIMBLECONNINFO_H_ +#define NIMBLECONNINFO_H_ + +#include "NimBLEAddress.h" + +/** + * @brief Connection information. + */ +class NimBLEConnInfo { +friend class NimBLEServer; +friend class NimBLEClient; +friend class NimBLECharacteristic; +friend class NimBLEDescriptor; + + ble_gap_conn_desc m_desc{}; + NimBLEConnInfo(){}; + NimBLEConnInfo(ble_gap_conn_desc desc) { m_desc = desc; } +public: + /** @brief Gets the over-the-air address of the connected peer */ + NimBLEAddress getAddress() const { return NimBLEAddress(m_desc.peer_ota_addr); } + + /** @brief Gets the ID address of the connected peer */ + NimBLEAddress getIdAddress() const { return NimBLEAddress(m_desc.peer_id_addr); } + + /** @brief Gets the connection handle (also known as the connection id) of the connected peer */ + uint16_t getConnHandle() const { return m_desc.conn_handle; } + + /** @brief Gets the connection interval for this connection (in 1.25ms units) */ + uint16_t getConnInterval() const { return m_desc.conn_itvl; } + + /** @brief Gets the supervision timeout for this connection (in 10ms units) */ + uint16_t getConnTimeout() const { return m_desc.supervision_timeout; } + + /** @brief Gets the allowable latency for this connection (unit = number of intervals) */ + uint16_t getConnLatency() const { return m_desc.conn_latency; } + + /** @brief Gets the maximum transmission unit size for this connection (in bytes) */ + uint16_t getMTU() const { return ble_att_mtu(m_desc.conn_handle); } + + /** @brief Check if we are in the master role in this connection */ + bool isMaster() const { return (m_desc.role == BLE_GAP_ROLE_MASTER); } + + /** @brief Check if we are in the slave role in this connection */ + bool isSlave() const { return (m_desc.role == BLE_GAP_ROLE_SLAVE); } + + /** @brief Check if we are connected to a bonded peer */ + bool isBonded() const { return (m_desc.sec_state.bonded == 1); } + + /** @brief Check if the connection in encrypted */ + bool isEncrypted() const { return (m_desc.sec_state.encrypted == 1); } + + /** @brief Check if the the connection has been authenticated */ + bool isAuthenticated() const { return (m_desc.sec_state.authenticated == 1); } + + /** @brief Gets the key size used to encrypt the connection */ + uint8_t getSecKeySize() const { return m_desc.sec_state.key_size; } +}; +#endif diff --git a/lib/esp-nimble-cpp/src/NimBLEDescriptor.cpp b/lib/esp-nimble-cpp/src/NimBLEDescriptor.cpp new file mode 100644 index 0000000..28a1513 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEDescriptor.cpp @@ -0,0 +1,307 @@ +/* + * NimBLEDescriptor.cpp + * + * Created: on March 10, 2020 + * Author H2zero + * + * Originally: + * + * BLEDescriptor.cpp + * + * Created on: Jun 22, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLEService.h" +#include "NimBLEDescriptor.h" +#include "NimBLELog.h" + +#include + +#define NULL_HANDLE (0xffff) + +static const char* LOG_TAG = "NimBLEDescriptor"; +static NimBLEDescriptorCallbacks defaultCallbacks; + + +/** + * @brief Construct a descriptor + * @param [in] uuid - UUID (const char*) for the descriptor. + * @param [in] properties - Properties for the descriptor. + * @param [in] max_len - The maximum length in bytes that the descriptor value can hold. (Default: 512 bytes for esp32, 20 for all others). + * @param [in] pCharacteristic - pointer to the characteristic instance this descriptor belongs to. + */ +NimBLEDescriptor::NimBLEDescriptor(const char* uuid, uint16_t properties, uint16_t max_len, + NimBLECharacteristic* pCharacteristic) +: NimBLEDescriptor(NimBLEUUID(uuid), properties, max_len, pCharacteristic) { +} + + +/** + * @brief Construct a descriptor + * @param [in] uuid - UUID (const char*) for the descriptor. + * @param [in] properties - Properties for the descriptor. + * @param [in] max_len - The maximum length in bytes that the descriptor value can hold. (Default: 512 bytes for esp32, 20 for all others). + * @param [in] pCharacteristic - pointer to the characteristic instance this descriptor belongs to. + */ +NimBLEDescriptor::NimBLEDescriptor(NimBLEUUID uuid, uint16_t properties, uint16_t max_len, + NimBLECharacteristic* pCharacteristic) +: m_value(std::min(CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH , (int)max_len), max_len) { + m_uuid = uuid; + m_handle = NULL_HANDLE; // Handle is initially unknown. + m_pCharacteristic = pCharacteristic; + m_pCallbacks = &defaultCallbacks; // No initial callback. + m_properties = 0; + m_removed = 0; + + if (properties & BLE_GATT_CHR_F_READ) { // convert uint16_t properties to uint8_t + m_properties |= BLE_ATT_F_READ; + } + if (properties & (BLE_GATT_CHR_F_WRITE_NO_RSP | BLE_GATT_CHR_F_WRITE)) { + m_properties |= BLE_ATT_F_WRITE; + } + if (properties & BLE_GATT_CHR_F_READ_ENC) { + m_properties |= BLE_ATT_F_READ_ENC; + } + if (properties & BLE_GATT_CHR_F_READ_AUTHEN) { + m_properties |= BLE_ATT_F_READ_AUTHEN; + } + if (properties & BLE_GATT_CHR_F_READ_AUTHOR) { + m_properties |= BLE_ATT_F_READ_AUTHOR; + } + if (properties & BLE_GATT_CHR_F_WRITE_ENC) { + m_properties |= BLE_ATT_F_WRITE_ENC; + } + if (properties & BLE_GATT_CHR_F_WRITE_AUTHEN) { + m_properties |= BLE_ATT_F_WRITE_AUTHEN; + } + if (properties & BLE_GATT_CHR_F_WRITE_AUTHOR) { + m_properties |= BLE_ATT_F_WRITE_AUTHOR; + } + +} // NimBLEDescriptor + + +/** + * @brief NimBLEDescriptor destructor. + */ +NimBLEDescriptor::~NimBLEDescriptor() { +} // ~NimBLEDescriptor + +/** + * @brief Get the BLE handle for this descriptor. + * @return The handle for this descriptor. + */ +uint16_t NimBLEDescriptor::getHandle() { + return m_handle; +} // getHandle + + +/** + * @brief Get the length of the value of this descriptor. + * @return The length (in bytes) of the value of this descriptor. + */ +size_t NimBLEDescriptor::getLength() { + return m_value.size(); +} // getLength + + +/** + * @brief Get the UUID of the descriptor. + */ +NimBLEUUID NimBLEDescriptor::getUUID() { + return m_uuid; +} // getUUID + + +/** + * @brief Get the value of this descriptor. + * @return The NimBLEAttValue of this descriptor. + */ +NimBLEAttValue NimBLEDescriptor::getValue(time_t *timestamp) { + if (timestamp != nullptr) { + m_value.getValue(timestamp); + } + + return m_value; +} // getValue + + +/** + * @brief Get the value of this descriptor as a string. + * @return A std::string instance containing a copy of the descriptor's value. + */ +std::string NimBLEDescriptor::getStringValue() { + return std::string(m_value); +} + + +/** + * @brief Get the characteristic this descriptor belongs to. + * @return A pointer to the characteristic this descriptor belongs to. + */ +NimBLECharacteristic* NimBLEDescriptor::getCharacteristic() { + return m_pCharacteristic; +} // getCharacteristic + + +int NimBLEDescriptor::handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg) { + (void)conn_handle; + (void)attr_handle; + + const ble_uuid_t *uuid; + int rc; + NimBLEConnInfo peerInfo; + NimBLEDescriptor* pDescriptor = (NimBLEDescriptor*)arg; + + NIMBLE_LOGD(LOG_TAG, "Descriptor %s %s event", pDescriptor->getUUID().toString().c_str(), + ctxt->op == BLE_GATT_ACCESS_OP_READ_DSC ? "Read" : "Write"); + + uuid = ctxt->chr->uuid; + if(ble_uuid_cmp(uuid, &pDescriptor->getUUID().getNative()->u) == 0){ + switch(ctxt->op) { + case BLE_GATT_ACCESS_OP_READ_DSC: { + rc = ble_gap_conn_find(conn_handle, &peerInfo.m_desc); + assert(rc == 0); + + // If the packet header is only 8 bytes this is a follow up of a long read + // so we don't want to call the onRead() callback again. + if(ctxt->om->om_pkthdr_len > 8 || + pDescriptor->m_value.size() <= (ble_att_mtu(peerInfo.getConnHandle()) - 3)) { + pDescriptor->m_pCallbacks->onRead(pDescriptor, peerInfo); + } + + ble_npl_hw_enter_critical(); + rc = os_mbuf_append(ctxt->om, pDescriptor->m_value.data(), pDescriptor->m_value.size()); + ble_npl_hw_exit_critical(0); + return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; + } + + case BLE_GATT_ACCESS_OP_WRITE_DSC: { + rc = ble_gap_conn_find(conn_handle, &peerInfo.m_desc); + assert(rc == 0); + + uint16_t att_max_len = pDescriptor->m_value.max_size(); + + if (ctxt->om->om_len > att_max_len) { + return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } + + uint8_t buf[att_max_len]; + size_t len = ctxt->om->om_len; + memcpy(buf, ctxt->om->om_data,len); + os_mbuf *next; + next = SLIST_NEXT(ctxt->om, om_next); + while(next != NULL){ + if((len + next->om_len) > att_max_len) { + return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } + memcpy(&buf[len], next->om_data, next->om_len); + len += next->om_len; + next = SLIST_NEXT(next, om_next); + } + + pDescriptor->setValue(buf, len); + pDescriptor->m_pCallbacks->onWrite(pDescriptor, peerInfo); + return 0; + } + default: + break; + } + } + + return BLE_ATT_ERR_UNLIKELY; +} + +/** + * @brief Set the callback handlers for this descriptor. + * @param [in] pCallbacks An instance of a callback structure used to define any callbacks for the descriptor. + */ +void NimBLEDescriptor::setCallbacks(NimBLEDescriptorCallbacks* pCallbacks) { + if (pCallbacks != nullptr){ + m_pCallbacks = pCallbacks; + } else { + m_pCallbacks = &defaultCallbacks; + } +} // setCallbacks + + +/** + * @brief Set the handle of this descriptor. + * Set the handle of this descriptor to be the supplied value. + * @param [in] handle The handle to be associated with this descriptor. + * @return N/A. + */ +void NimBLEDescriptor::setHandle(uint16_t handle) { + NIMBLE_LOGD(LOG_TAG, ">> setHandle(0x%.2x): Setting descriptor handle to be 0x%.2x", handle, handle); + m_handle = handle; + NIMBLE_LOGD(LOG_TAG, "<< setHandle()"); +} // setHandle + + +/** + * @brief Set the value of the descriptor. + * @param [in] data The data to set for the descriptor. + * @param [in] length The length of the data in bytes. + */ +void NimBLEDescriptor::setValue(const uint8_t* data, size_t length) { + m_value.setValue(data, length); +} // setValue + + +/** + * @brief Set the value of the descriptor from a `std::vector`.\n + * @param [in] vec The std::vector reference to set the descriptor value from. + */ +void NimBLEDescriptor::setValue(const std::vector& vec) { + return setValue((uint8_t*)&vec[0], vec.size()); +} // setValue + + +/** + * @brief Set the characteristic this descriptor belongs to. + * @param [in] pChar A pointer to the characteristic this descriptor belongs to. + */ +void NimBLEDescriptor::setCharacteristic(NimBLECharacteristic* pChar) { + m_pCharacteristic = pChar; +} // setCharacteristic + + +/** + * @brief Return a string representation of the descriptor. + * @return A string representation of the descriptor. + */ +std::string NimBLEDescriptor::toString() { + char hex[5]; + snprintf(hex, sizeof(hex), "%04x", m_handle); + std::string res = "UUID: " + m_uuid.toString() + ", handle: 0x" + hex; + return res; +} // toString + + +/** + * @brief Callback function to support a read request. + * @param [in] pDescriptor The descriptor that is the source of the event. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + */ +void NimBLEDescriptorCallbacks::onRead(NimBLEDescriptor* pDescriptor, NimBLEConnInfo& connInfo) { + (void)pDescriptor; + NIMBLE_LOGD("NimBLEDescriptorCallbacks", "onRead: default"); +} // onRead + + +/** + * @brief Callback function to support a write request. + * @param [in] pDescriptor The descriptor that is the source of the event. + * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. + */ +void NimBLEDescriptorCallbacks::onWrite(NimBLEDescriptor* pDescriptor, NimBLEConnInfo& connInfo) { + (void)pDescriptor; + NIMBLE_LOGD("NimBLEDescriptorCallbacks", "onWrite: default"); +} // onWrite + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLEDescriptor.h b/lib/esp-nimble-cpp/src/NimBLEDescriptor.h new file mode 100644 index 0000000..e33334c --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEDescriptor.h @@ -0,0 +1,120 @@ +/* + * NimBLEDescriptor.h + * + * Created: on March 10, 2020 + * Author H2zero + * + * Originally: + * + * BLEDescriptor.h + * + * Created on: Jun 22, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLEDESCRIPTOR_H_ +#define MAIN_NIMBLEDESCRIPTOR_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLECharacteristic.h" +#include "NimBLEUUID.h" +#include "NimBLEAttValue.h" +#include "NimBLEConnInfo.h" + +#include + +class NimBLEService; +class NimBLECharacteristic; +class NimBLEDescriptorCallbacks; + + +/** + * @brief A model of a %BLE descriptor. + */ +class NimBLEDescriptor { +public: + NimBLEDescriptor(const char* uuid, uint16_t properties, + uint16_t max_len, + NimBLECharacteristic* pCharacteristic = nullptr); + + NimBLEDescriptor(NimBLEUUID uuid, uint16_t properties, + uint16_t max_len, + NimBLECharacteristic* pCharacteristic = nullptr); + + ~NimBLEDescriptor(); + + uint16_t getHandle(); + NimBLEUUID getUUID(); + std::string toString(); + void setCallbacks(NimBLEDescriptorCallbacks* pCallbacks); + NimBLECharacteristic* getCharacteristic(); + + size_t getLength(); + NimBLEAttValue getValue(time_t *timestamp = nullptr); + std::string getStringValue(); + + void setValue(const uint8_t* data, size_t size); + void setValue(const std::vector& vec); + + /*********************** Template Functions ************************/ + + /** + * @brief Template to set the characteristic value to val. + * @param [in] s The value to set. + */ + template + void setValue(const T &s) { m_value.setValue(s); } + + /** + * @brief Template to convert the descriptor data to . + * @tparam T The type to convert the data to. + * @param [in] timestamp (Optional) A pointer to a time_t struct to store the time the value was read. + * @param [in] skipSizeCheck (Optional) If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is less than sizeof(). + * @details Use: getValue(×tamp, skipSizeCheck); + */ + template + T getValue(time_t *timestamp = nullptr, bool skipSizeCheck = false) { + return m_value.getValue(timestamp, skipSizeCheck); + } + +private: + friend class NimBLECharacteristic; + friend class NimBLEService; + friend class NimBLE2904; + + static int handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg); + void setHandle(uint16_t handle); + void setCharacteristic(NimBLECharacteristic* pChar); + + NimBLEUUID m_uuid; + uint16_t m_handle; + NimBLEDescriptorCallbacks* m_pCallbacks; + NimBLECharacteristic* m_pCharacteristic; + uint8_t m_properties; + NimBLEAttValue m_value; + uint8_t m_removed; +}; // NimBLEDescriptor + + +/** + * @brief Callbacks that can be associated with a %BLE descriptors to inform of events. + * + * When a server application creates a %BLE descriptor, we may wish to be informed when there is either + * a read or write request to the descriptors value. An application can register a + * sub-classed instance of this class and will be notified when such an event happens. + */ +class NimBLEDescriptorCallbacks { +public: + virtual ~NimBLEDescriptorCallbacks(){} + virtual void onRead(NimBLEDescriptor* pDescriptor, NimBLEConnInfo& connInfo); + virtual void onWrite(NimBLEDescriptor* pDescriptor, NimBLEConnInfo& connInfo); +}; + +#include "NimBLE2904.h" + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ +#endif /* MAIN_NIMBLEDESCRIPTOR_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEDevice.cpp b/lib/esp-nimble-cpp/src/NimBLEDevice.cpp new file mode 100644 index 0000000..8daa282 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEDevice.cpp @@ -0,0 +1,1257 @@ +/* + * NimBLEDevice.cpp + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEDevice.cpp + * + * Created on: Mar 16, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include "NimBLEDevice.h" +#include "NimBLEUtils.h" + +#ifdef ESP_PLATFORM +# include "esp_err.h" +# include "esp_bt.h" +# include "nvs_flash.h" +# if defined(CONFIG_NIMBLE_CPP_IDF) +# if (ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) || CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE) +# include "esp_nimble_hci.h" +# endif +# include "nimble/nimble_port.h" +# include "nimble/nimble_port_freertos.h" +# include "host/ble_hs.h" +# include "host/ble_hs_pvcy.h" +# include "host/util/util.h" +# include "services/gap/ble_svc_gap.h" +# include "services/gatt/ble_svc_gatt.h" +# else +# include "nimble/esp_port/esp-hci/include/esp_nimble_hci.h" +# endif +#else +# include "nimble/nimble/controller/include/controller/ble_phy.h" +#endif + +#ifndef CONFIG_NIMBLE_CPP_IDF +# include "nimble/porting/nimble/include/nimble/nimble_port.h" +# include "nimble/porting/npl/freertos/include/nimble/nimble_port_freertos.h" +# include "nimble/nimble/host/include/host/ble_hs.h" +# include "nimble/nimble/host/include/host/ble_hs_pvcy.h" +# include "nimble/nimble/host/util/include/host/util/util.h" +# include "nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h" +# include "nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h" +#endif + +#if defined(ESP_PLATFORM) && defined(CONFIG_ENABLE_ARDUINO_DEPENDS) +# include "esp32-hal-bt.h" +#endif + +#include "NimBLELog.h" + +static const char* LOG_TAG = "NimBLEDevice"; + +/** + * Singletons for the NimBLEDevice. + */ +static bool initialized = false; +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) +NimBLEScan* NimBLEDevice::m_pScan = nullptr; +#endif +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +NimBLEServer* NimBLEDevice::m_pServer = nullptr; +#endif +uint32_t NimBLEDevice::m_passkey = 123456; +bool NimBLEDevice::m_synced = false; +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +# if CONFIG_BT_NIMBLE_EXT_ADV +NimBLEExtAdvertising* NimBLEDevice::m_bleAdvertising = nullptr; +# else +NimBLEAdvertising* NimBLEDevice::m_bleAdvertising = nullptr; +# endif +#endif + +gap_event_handler NimBLEDevice::m_customGapHandler = nullptr; +ble_gap_event_listener NimBLEDevice::m_listener; +#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL) +std::list NimBLEDevice::m_cList; +#endif +std::list NimBLEDevice::m_ignoreList; +std::vector NimBLEDevice::m_whiteList; +uint8_t NimBLEDevice::m_own_addr_type = BLE_OWN_ADDR_PUBLIC; +#ifdef ESP_PLATFORM +# ifdef CONFIG_BTDM_BLE_SCAN_DUPL +uint16_t NimBLEDevice::m_scanDuplicateSize = CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE; +uint8_t NimBLEDevice::m_scanFilterMode = CONFIG_BTDM_SCAN_DUPL_TYPE; +# endif +#endif + +/** + * @brief Create a new instance of a server. + * @return A new instance of the server. + */ +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +/* STATIC */ NimBLEServer* NimBLEDevice::createServer() { + if(NimBLEDevice::m_pServer == nullptr) { + NimBLEDevice::m_pServer = new NimBLEServer(); + ble_gatts_reset(); + ble_svc_gap_init(); + ble_svc_gatt_init(); + } + + return m_pServer; +} // createServer + + +/** + * @brief Get the instance of the server. + * @return A pointer to the server instance. + */ +/* STATIC */ NimBLEServer* NimBLEDevice::getServer() { + return m_pServer; +} // getServer +#endif // #if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +# if CONFIG_BT_NIMBLE_EXT_ADV +/** + * @brief Get the instance of the advertising object. + * @return A pointer to the advertising object. + */ +NimBLEExtAdvertising* NimBLEDevice::getAdvertising() { + if(m_bleAdvertising == nullptr) { + m_bleAdvertising = new NimBLEExtAdvertising(); + } + return m_bleAdvertising; +} + + +/** + * @brief Convenience function to begin advertising. + * @param [in] inst_id The extended advertisement instance ID to start. + * @param [in] duration How long to advertise for in milliseconds, 0 = forever (default). + * @param [in] max_events Maximum number of advertisement events to send, 0 = no limit (default). + * @return True if advertising started successfully. + */ +bool NimBLEDevice::startAdvertising(uint8_t inst_id, + int duration, + int max_events) { + return getAdvertising()->start(inst_id, duration, max_events); +} // startAdvertising + + +/** + * @brief Convenience function to stop advertising a data set. + * @param [in] inst_id The extended advertisement instance ID to stop advertising. + * @return True if advertising stopped successfully. + */ +bool NimBLEDevice::stopAdvertising(uint8_t inst_id) { + return getAdvertising()->stop(inst_id); +} // stopAdvertising + +# endif + +# if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) +/** + * @brief Get the instance of the advertising object. + * @return A pointer to the advertising object. + */ +NimBLEAdvertising* NimBLEDevice::getAdvertising() { + if(m_bleAdvertising == nullptr) { + m_bleAdvertising = new NimBLEAdvertising(); + } + return m_bleAdvertising; +} + + +/** + * @brief Convenience function to begin advertising. + * @param [in] duration The duration in milliseconds to advertise for, default = forever. + * @return True if advertising started successfully. + */ +bool NimBLEDevice::startAdvertising(uint32_t duration) { + return getAdvertising()->start(duration); +} // startAdvertising +# endif + +/** + * @brief Convenience function to stop all advertising. + * @return True if advertising stopped successfully. + */ +bool NimBLEDevice::stopAdvertising() { + return getAdvertising()->stop(); +} // stopAdvertising +#endif // #if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) + + +/** + * @brief Retrieve the Scan object that we use for scanning. + * @return The scanning object reference. This is a singleton object. The caller should not + * try and release/delete it. + */ +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) +/* STATIC */ +NimBLEScan* NimBLEDevice::getScan() { + if (m_pScan == nullptr) { + m_pScan = new NimBLEScan(); + } + return m_pScan; +} // getScan +#endif // #if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + + +/** + * @brief Creates a new client object and maintains a list of all client objects + * each client can connect to 1 peripheral device. + * @param [in] peerAddress An optional peer address that is copied to the new client + * object, allows for calling NimBLEClient::connect(bool) without a device or address parameter. + * @return A reference to the new client object. + */ +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) +/* STATIC */ +NimBLEClient* NimBLEDevice::createClient(NimBLEAddress peerAddress) { + if(m_cList.size() >= NIMBLE_MAX_CONNECTIONS) { + NIMBLE_LOGW(LOG_TAG,"Number of clients exceeds Max connections. Cur=%d Max=%d", + m_cList.size(), NIMBLE_MAX_CONNECTIONS); + } + + NimBLEClient* pClient = new NimBLEClient(peerAddress); + m_cList.push_back(pClient); + + return pClient; +} // createClient + + +/** + * @brief Delete the client object and remove it from the list.\n + * Checks if it is connected or trying to connect and disconnects/stops it first. + * @param [in] pClient A pointer to the client object. + */ +/* STATIC */ +bool NimBLEDevice::deleteClient(NimBLEClient* pClient) { + if(pClient == nullptr) { + return false; + } + + // Set the connection established flag to false to stop notifications + // from accessing the attribute vectors while they are being deleted. + pClient->m_connEstablished = false; + int rc =0; + + if(pClient->isConnected()) { + rc = pClient->disconnect(); + if (rc != 0 && rc != BLE_HS_EALREADY && rc != BLE_HS_ENOTCONN) { + return false; + } + + while(pClient->isConnected()) { + taskYIELD(); + } + // Since we set the flag to false the app will not get a callback + // in the disconnect event so we call it here for good measure. + pClient->m_pClientCallbacks->onDisconnect(pClient, BLE_ERR_CONN_TERM_LOCAL); + + } else if(pClient->m_pTaskData != nullptr) { + rc = ble_gap_conn_cancel(); + if (rc != 0 && rc != BLE_HS_EALREADY) { + return false; + } + while(pClient->m_pTaskData != nullptr) { + taskYIELD(); + } + } + + m_cList.remove(pClient); + delete pClient; + + return true; +} // deleteClient + + +/** + * @brief Get the list of created client objects. + * @return A pointer to the list of clients. + */ +/* STATIC */ +std::list* NimBLEDevice::getClientList() { + return &m_cList; +} // getClientList + + +/** + * @brief Get the number of created client objects. + * @return Number of client objects created. + */ +/* STATIC */ +size_t NimBLEDevice::getClientListSize() { + return m_cList.size(); +} // getClientList + + +/** + * @brief Get a reference to a client by connection ID. + * @param [in] conn_id The client connection ID to search for. + * @return A pointer to the client object with the spcified connection ID. + */ +/* STATIC */ +NimBLEClient* NimBLEDevice::getClientByID(uint16_t conn_id) { + for(auto it = m_cList.cbegin(); it != m_cList.cend(); ++it) { + if((*it)->getConnId() == conn_id) { + return (*it); + } + } + assert(0); + return nullptr; +} // getClientByID + + +/** + * @brief Get a reference to a client by peer address. + * @param [in] peer_addr The address of the peer to search for. + * @return A pointer to the client object with the peer address. + */ +/* STATIC */ +NimBLEClient* NimBLEDevice::getClientByPeerAddress(const NimBLEAddress &peer_addr) { + for(auto it = m_cList.cbegin(); it != m_cList.cend(); ++it) { + if((*it)->getPeerAddress().equals(peer_addr)) { + return (*it); + } + } + return nullptr; +} // getClientPeerAddress + + +/** + * @brief Finds the first disconnected client in the list. + * @return A pointer to the first client object that is not connected to a peer. + */ +/* STATIC */ +NimBLEClient* NimBLEDevice::getDisconnectedClient() { + for(auto it = m_cList.cbegin(); it != m_cList.cend(); ++it) { + if(!(*it)->isConnected()) { + return (*it); + } + } + return nullptr; +} // getDisconnectedClient + +#endif // #if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#ifdef ESP_PLATFORM +/** + * @brief Set the transmission power. + * @param [in] powerLevel The power level to set, can be one of: + * * ESP_PWR_LVL_N12 = 0, Corresponding to -12dbm + * * ESP_PWR_LVL_N9 = 1, Corresponding to -9dbm + * * ESP_PWR_LVL_N6 = 2, Corresponding to -6dbm + * * ESP_PWR_LVL_N3 = 3, Corresponding to -3dbm + * * ESP_PWR_LVL_N0 = 4, Corresponding to 0dbm + * * ESP_PWR_LVL_P3 = 5, Corresponding to +3dbm + * * ESP_PWR_LVL_P6 = 6, Corresponding to +6dbm + * * ESP_PWR_LVL_P9 = 7, Corresponding to +9dbm + * @param [in] powerType The BLE function to set the power level for, can be one of: + * * ESP_BLE_PWR_TYPE_CONN_HDL0 = 0, For connection handle 0 + * * ESP_BLE_PWR_TYPE_CONN_HDL1 = 1, For connection handle 1 + * * ESP_BLE_PWR_TYPE_CONN_HDL2 = 2, For connection handle 2 + * * ESP_BLE_PWR_TYPE_CONN_HDL3 = 3, For connection handle 3 + * * ESP_BLE_PWR_TYPE_CONN_HDL4 = 4, For connection handle 4 + * * ESP_BLE_PWR_TYPE_CONN_HDL5 = 5, For connection handle 5 + * * ESP_BLE_PWR_TYPE_CONN_HDL6 = 6, For connection handle 6 + * * ESP_BLE_PWR_TYPE_CONN_HDL7 = 7, For connection handle 7 + * * ESP_BLE_PWR_TYPE_CONN_HDL8 = 8, For connection handle 8 + * * ESP_BLE_PWR_TYPE_ADV = 9, For advertising + * * ESP_BLE_PWR_TYPE_SCAN = 10, For scan + * * ESP_BLE_PWR_TYPE_DEFAULT = 11, For default, if not set other, it will use default value + */ +/* STATIC */ +void NimBLEDevice::setPower(esp_power_level_t powerLevel, esp_ble_power_type_t powerType) { + NIMBLE_LOGD(LOG_TAG, ">> setPower: %d (type: %d)", powerLevel, powerType); + + esp_err_t errRc = esp_ble_tx_power_set(powerType, powerLevel); + if (errRc != ESP_OK) { + NIMBLE_LOGE(LOG_TAG, "esp_ble_tx_power_set: rc=%d", errRc); + } + + NIMBLE_LOGD(LOG_TAG, "<< setPower"); +} // setPower + + +/** + * @brief Get the transmission power. + * @param [in] powerType The power level to set, can be one of: + * * ESP_BLE_PWR_TYPE_CONN_HDL0 = 0, For connection handle 0 + * * ESP_BLE_PWR_TYPE_CONN_HDL1 = 1, For connection handle 1 + * * ESP_BLE_PWR_TYPE_CONN_HDL2 = 2, For connection handle 2 + * * ESP_BLE_PWR_TYPE_CONN_HDL3 = 3, For connection handle 3 + * * ESP_BLE_PWR_TYPE_CONN_HDL4 = 4, For connection handle 4 + * * ESP_BLE_PWR_TYPE_CONN_HDL5 = 5, For connection handle 5 + * * ESP_BLE_PWR_TYPE_CONN_HDL6 = 6, For connection handle 6 + * * ESP_BLE_PWR_TYPE_CONN_HDL7 = 7, For connection handle 7 + * * ESP_BLE_PWR_TYPE_CONN_HDL8 = 8, For connection handle 8 + * * ESP_BLE_PWR_TYPE_ADV = 9, For advertising + * * ESP_BLE_PWR_TYPE_SCAN = 10, For scan + * * ESP_BLE_PWR_TYPE_DEFAULT = 11, For default, if not set other, it will use default value + * @return the power level currently used by the type specified. + */ +/* STATIC */ +int NimBLEDevice::getPower(esp_ble_power_type_t powerType) { + switch(esp_ble_tx_power_get(powerType)) { + case ESP_PWR_LVL_N12: + return -12; + case ESP_PWR_LVL_N9: + return -9; + case ESP_PWR_LVL_N6: + return -6; + case ESP_PWR_LVL_N3: + return -3; + case ESP_PWR_LVL_N0: + return 0; + case ESP_PWR_LVL_P3: + return 3; + case ESP_PWR_LVL_P6: + return 6; + case ESP_PWR_LVL_P9: + return 9; + default: + return BLE_HS_ADV_TX_PWR_LVL_AUTO; + } +} // getPower + +#else + +void NimBLEDevice::setPower(int dbm) { + ble_phy_txpwr_set(dbm); +} + + +int NimBLEDevice::getPower() { + return ble_phy_txpwr_get(); +} +#endif + +/** + * @brief Get our device address. + * @return A NimBLEAddress object of our public address if we have one, + * if not then our current random address. + */ +/* STATIC*/ +NimBLEAddress NimBLEDevice::getAddress() { + ble_addr_t addr = {BLE_ADDR_PUBLIC, 0}; + + if(BLE_HS_ENOADDR == ble_hs_id_copy_addr(BLE_ADDR_PUBLIC, addr.val, NULL)) { + NIMBLE_LOGD(LOG_TAG, "Public address not found, checking random"); + addr.type = BLE_ADDR_RANDOM; + ble_hs_id_copy_addr(BLE_ADDR_RANDOM, addr.val, NULL); + } + + return NimBLEAddress(addr); +} // getAddress + + +/** + * @brief Return a string representation of the address of this device. + * @return A string representation of this device address. + */ +/* STATIC */ +std::string NimBLEDevice::toString() { + return getAddress().toString(); +} // toString + + +/** + * @brief Setup local mtu that will be used to negotiate mtu during request from client peer. + * @param [in] mtu Value to set local mtu: + * * This should be larger than 23 and lower or equal to BLE_ATT_MTU_MAX = 527. + */ +/* STATIC */ +int NimBLEDevice::setMTU(uint16_t mtu) { + NIMBLE_LOGD(LOG_TAG, ">> setLocalMTU: %d", mtu); + + int rc = ble_att_set_preferred_mtu(mtu); + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Could not set local mtu value to: %d", mtu); + } + + NIMBLE_LOGD(LOG_TAG, "<< setLocalMTU"); + return rc; +} // setMTU + + +/** + * @brief Get local MTU value set. + * @return The current preferred MTU setting. + */ +/* STATIC */ +uint16_t NimBLEDevice::getMTU() { + return ble_att_preferred_mtu(); +} + + +#ifdef ESP_PLATFORM +# ifdef CONFIG_BTDM_BLE_SCAN_DUPL +/** + * @brief Set the duplicate filter cache size for filtering scanned devices. + * @param [in] cacheSize The number of advertisements filtered before the cache is reset.\n + * Range is 10-1000, a larger value will reduce how often the same devices are reported. + * @details Must only be called before calling NimBLEDevice::init. + */ +/*STATIC*/ +void NimBLEDevice::setScanDuplicateCacheSize(uint16_t cacheSize) { + if(initialized) { + NIMBLE_LOGE(LOG_TAG, "Cannot change scan cache size while initialized"); + return; + } else if(cacheSize > 1000 || cacheSize <10) { + NIMBLE_LOGE(LOG_TAG, "Invalid scan cache size; min=10 max=1000"); + return; + } + + m_scanDuplicateSize = cacheSize; +} + + + +/** + * @brief Set the duplicate filter mode for filtering scanned devices. + * @param [in] mode One of three possible options: + * * CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE (0) (default)\n + Filter by device address only, advertisements from the same address will be reported only once. + * * CONFIG_BTDM_SCAN_DUPL_TYPE_DATA (1)\n + Filter by data only, advertisements with the same data will only be reported once,\n + even from different addresses. + * * CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE (2)\n + Filter by address and data, advertisements from the same address will be reported only once,\n + except if the data in the advertisement has changed, then it will be reported again. + * @details Must only be called before calling NimBLEDevice::init. + */ +/*STATIC*/ +void NimBLEDevice::setScanFilterMode(uint8_t mode) { + if(initialized) { + NIMBLE_LOGE(LOG_TAG, "Cannot change scan duplicate type while initialized"); + return; + } else if(mode > 2) { + NIMBLE_LOGE(LOG_TAG, "Invalid scan duplicate type"); + return; + } + + m_scanFilterMode = mode; +} +# endif // CONFIG_BTDM_BLE_SCAN_DUPL +#endif // ESP_PLATFORM + +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) || defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +/** + * @brief Gets the number of bonded peers stored + */ +/*STATIC*/ +int NimBLEDevice::getNumBonds() { + ble_addr_t peer_id_addrs[MYNEWT_VAL(BLE_STORE_MAX_BONDS)]; + int num_peers, rc; + + rc = ble_store_util_bonded_peers(&peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); + if (rc !=0) { + return 0; + } + + return num_peers; +} + + +/** + * @brief Deletes all bonding information. + * @returns true on success, false on failure. + */ +/*STATIC*/ +bool NimBLEDevice::deleteAllBonds() { + int rc = ble_store_clear(); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed to delete all bonds; rc=%d", rc); + return false; + } + return true; +} + + +/** + * @brief Deletes a peer bond. + * @param [in] address The address of the peer with which to delete bond info. + * @returns true on success. + */ +/*STATIC*/ +bool NimBLEDevice::deleteBond(const NimBLEAddress &address) { + ble_addr_t delAddr; + memcpy(&delAddr.val, address.getNative(),6); + delAddr.type = address.getType(); + + int rc = ble_gap_unpair(&delAddr); + if (rc != 0) { + return false; + } + + return true; +} + + +/** + * @brief Checks if a peer device is bonded. + * @param [in] address The address to check for bonding. + * @returns true if bonded. + */ +/*STATIC*/ +bool NimBLEDevice::isBonded(const NimBLEAddress &address) { + ble_addr_t peer_id_addrs[MYNEWT_VAL(BLE_STORE_MAX_BONDS)]; + int num_peers, rc; + + rc = ble_store_util_bonded_peers(&peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); + if (rc != 0) { + return false; + } + + for (int i = 0; i < num_peers; i++) { + NimBLEAddress storedAddr(peer_id_addrs[i]); + if(storedAddr == address) { + return true; + } + } + + return false; +} + + +/** + * @brief Get the address of a bonded peer device by index. + * @param [in] index The index to retrieve the peer address of. + * @returns NimBLEAddress of the found bonded peer or nullptr if not found. + */ +/*STATIC*/ +NimBLEAddress NimBLEDevice::getBondedAddress(int index) { + ble_addr_t peer_id_addrs[MYNEWT_VAL(BLE_STORE_MAX_BONDS)]; + int num_peers, rc; + + rc = ble_store_util_bonded_peers(&peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); + if (rc != 0) { + return nullptr; + } + + if (index > num_peers || index < 0) { + return nullptr; + } + + return NimBLEAddress(peer_id_addrs[index]); +} +#endif + +/** + * @brief Checks if a peer device is whitelisted. + * @param [in] address The address to check for in the whitelist. + * @returns true if the address is in the whitelist. + */ +/*STATIC*/ +bool NimBLEDevice::onWhiteList(const NimBLEAddress & address) { + for (auto &it : m_whiteList) { + if (it == address) { + return true; + } + } + + return false; +} + + +/** + * @brief Add a peer address to the whitelist. + * @param [in] address The address to add to the whitelist. + * @returns true if successful. + */ +/*STATIC*/ +bool NimBLEDevice::whiteListAdd(const NimBLEAddress & address) { + if (NimBLEDevice::onWhiteList(address)) { + return true; + } + + m_whiteList.push_back(address); + std::vector wlVec; + wlVec.reserve(m_whiteList.size()); + + for (auto &it : m_whiteList) { + ble_addr_t wlAddr; + memcpy(&wlAddr.val, it.getNative(), 6); + wlAddr.type = it.getType(); + wlVec.push_back(wlAddr); + } + + int rc = ble_gap_wl_set(&wlVec[0], wlVec.size()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed adding to whitelist rc=%d", rc); + m_whiteList.pop_back(); + return false; + } + + return true; +} + + +/** + * @brief Remove a peer address from the whitelist. + * @param [in] address The address to remove from the whitelist. + * @returns true if successful. + */ +/*STATIC*/ +bool NimBLEDevice::whiteListRemove(const NimBLEAddress & address) { + if (!NimBLEDevice::onWhiteList(address)) { + return true; + } + + std::vector wlVec; + wlVec.reserve(m_whiteList.size()); + + for (auto &it : m_whiteList) { + if (it != address) { + ble_addr_t wlAddr; + memcpy(&wlAddr.val, it.getNative(), 6); + wlAddr.type = it.getType(); + wlVec.push_back(wlAddr); + } + } + + int rc = ble_gap_wl_set(&wlVec[0], wlVec.size()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed removing from whitelist rc=%d", rc); + return false; + } + + // Don't remove from the list unless NimBLE returned success + for (auto it = m_whiteList.begin(); it < m_whiteList.end(); ++it) { + if ((*it) == address) { + m_whiteList.erase(it); + break; + } + } + + return true; +} + + +/** + * @brief Gets the count of addresses in the whitelist. + * @returns The number of addresses in the whitelist. + */ +/*STATIC*/ +size_t NimBLEDevice::getWhiteListCount() { + return m_whiteList.size(); +} + + +/** + * @brief Gets the address at the vector index. + * @param [in] index The vector index to retrieve the address from. + * @returns the NimBLEAddress at the whitelist index or nullptr if not found. + */ +/*STATIC*/ +NimBLEAddress NimBLEDevice::getWhiteListAddress(size_t index) { + if (index > m_whiteList.size()) { + NIMBLE_LOGE(LOG_TAG, "Invalid index; %u", index); + return nullptr; + } + return m_whiteList[index]; +} + + +/** + * @brief Host reset, we pass the message so we don't make calls until resynced. + * @param [in] reason The reason code for the reset. + */ +/* STATIC */ +void NimBLEDevice::onReset(int reason) +{ + if(!m_synced) { + return; + } + + m_synced = false; + + NIMBLE_LOGC(LOG_TAG, "Resetting state; reason=%d, %s", reason, + NimBLEUtils::returnCodeToString(reason)); + +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + if(initialized) { + if(m_pScan != nullptr) { + m_pScan->onHostReset(); + } + } +#endif +} // onReset + + +/** + * @brief Host resynced with controller, all clear to make calls to the stack. + */ +/* STATIC */ +void NimBLEDevice::onSync(void) +{ + NIMBLE_LOGI(LOG_TAG, "NimBle host synced."); + // This check is needed due to potentially being called multiple times in succession + // If this happens, the call to scan start may get stuck or cause an advertising fault. + if(m_synced) { + return; + } + + /* Make sure we have proper identity address set (public preferred) */ + int rc = ble_hs_util_ensure_addr(0); + assert(rc == 0); + +#ifndef ESP_PLATFORM + rc = ble_hs_id_infer_auto(m_own_addr_type, &m_own_addr_type); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "error determining address type; rc=%d", rc); + return; + } +#endif + + // Yield for housekeeping before returning to operations. + // Occasionally triggers exception without. + taskYIELD(); + + m_synced = true; + + if(initialized) { +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + if(m_pScan != nullptr) { + m_pScan->onHostSync(); + } +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) + if(m_bleAdvertising != nullptr) { + m_bleAdvertising->onHostSync(); + } +#endif + } +} // onSync + + +/** + * @brief The main host task. + */ +/* STATIC */ +void NimBLEDevice::host_task(void *param) +{ + NIMBLE_LOGI(LOG_TAG, "BLE Host Task Started"); + + /* This function will return only when nimble_port_stop() is executed */ + nimble_port_run(); + + nimble_port_freertos_deinit(); +} // host_task + + +/** + * @brief Initialize the %BLE environment. + * @param [in] deviceName The device name of the device. + */ +/* STATIC */ +void NimBLEDevice::init(const std::string &deviceName) { + if(!initialized){ + int rc=0; +#ifdef ESP_PLATFORM + esp_err_t errRc = ESP_OK; + +#ifdef CONFIG_ENABLE_ARDUINO_DEPENDS + // make sure the linker includes esp32-hal-bt.c so Arduino init doesn't release BLE memory. + btStarted(); +#endif + + errRc = nvs_flash_init(); + + if (errRc == ESP_ERR_NVS_NO_FREE_PAGES || errRc == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + errRc = nvs_flash_init(); + } + + ESP_ERROR_CHECK(errRc); + +#if CONFIG_IDF_TARGET_ESP32 + esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT); +#endif + +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) | !defined(CONFIG_NIMBLE_CPP_IDF) + esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); +# if defined (CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3) + bt_cfg.bluetooth_mode = ESP_BT_MODE_BLE; +# else + bt_cfg.mode = ESP_BT_MODE_BLE; + bt_cfg.ble_max_conn = CONFIG_BT_NIMBLE_MAX_CONNECTIONS; +# endif + +# ifdef CONFIG_BTDM_BLE_SCAN_DUPL + bt_cfg.normal_adv_size = m_scanDuplicateSize; + bt_cfg.scan_duplicate_type = m_scanFilterMode; +# endif + ESP_ERROR_CHECK(esp_bt_controller_init(&bt_cfg)); + ESP_ERROR_CHECK(esp_bt_controller_enable(ESP_BT_MODE_BLE)); + ESP_ERROR_CHECK(esp_nimble_hci_init()); +# endif +#endif + nimble_port_init(); + + // Setup callbacks for host events + ble_hs_cfg.reset_cb = NimBLEDevice::onReset; + ble_hs_cfg.sync_cb = NimBLEDevice::onSync; + + // Set initial security capabilities + ble_hs_cfg.sm_io_cap = BLE_HS_IO_NO_INPUT_OUTPUT; + ble_hs_cfg.sm_bonding = 0; + ble_hs_cfg.sm_mitm = 0; + ble_hs_cfg.sm_sc = 1; + ble_hs_cfg.sm_our_key_dist = BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID; + ble_hs_cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID; + + ble_hs_cfg.store_status_cb = ble_store_util_status_rr; /*TODO: Implement handler for this*/ + + // Set the device name. + rc = ble_svc_gap_device_name_set(deviceName.c_str()); + assert(rc == 0); + + ble_store_config_init(); + + nimble_port_freertos_init(NimBLEDevice::host_task); + } + + // Wait for host and controller to sync before returning and accepting new tasks + while(!m_synced){ + taskYIELD(); + } + + initialized = true; // Set the initialization flag to ensure we are only initialized once. +} // init + + +/** + * @brief Shutdown the NimBLE stack/controller. + * @param [in] clearAll If true, deletes all server/advertising/scan/client objects after deinitializing. + * @note If clearAll is true when called, any references to the created objects become invalid. + */ +/* STATIC */ +void NimBLEDevice::deinit(bool clearAll) { + int ret = nimble_port_stop(); + if (ret == 0) { + nimble_port_deinit(); +#ifdef CONFIG_NIMBLE_CPP_IDF +# if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) + ret = esp_nimble_hci_and_controller_deinit(); + if (ret != ESP_OK) { + NIMBLE_LOGE(LOG_TAG, "esp_nimble_hci_and_controller_deinit() failed with error: %d", ret); + } +# endif +#endif + initialized = false; + m_synced = false; + + if(clearAll) { +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + if(NimBLEDevice::m_pServer != nullptr) { + delete NimBLEDevice::m_pServer; + NimBLEDevice::m_pServer = nullptr; + } +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) + if(NimBLEDevice::m_bleAdvertising != nullptr) { + delete NimBLEDevice::m_bleAdvertising; + NimBLEDevice::m_bleAdvertising = nullptr; + } +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + if(NimBLEDevice::m_pScan != nullptr) { + delete NimBLEDevice::m_pScan; + NimBLEDevice::m_pScan= nullptr; + } +#endif + +#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL) + for(auto &it : m_cList) { + deleteClient(it); + m_cList.clear(); + } +#endif + + m_ignoreList.clear(); + } + } +} // deinit + +/** + * @brief Set the BLEDevice's name + * @param [in] deviceName The device name of the device. + */ +/* STATIC */ +void NimBLEDevice::setDeviceName(const std::string &deviceName) { + ble_svc_gap_device_name_set(deviceName.c_str()); +} // setDeviceName + + +/** + * @brief Check if the initialization is complete. + * @return true if initialized. + */ +/*STATIC*/ +bool NimBLEDevice::getInitialized() { + return initialized; +} // getInitialized + + +/** + * @brief Set the authorization mode for this device. + * @param bonding If true we allow bonding, false no bonding will be performed. + * @param mitm If true we are capable of man in the middle protection, false if not. + * @param sc If true we will perform secure connection pairing, false we will use legacy pairing. + */ +/*STATIC*/ +void NimBLEDevice::setSecurityAuth(bool bonding, bool mitm, bool sc) { + NIMBLE_LOGD(LOG_TAG, "Setting bonding: %d, mitm: %d, sc: %d",bonding,mitm,sc); + ble_hs_cfg.sm_bonding = bonding; + ble_hs_cfg.sm_mitm = mitm; + ble_hs_cfg.sm_sc = sc; +} // setSecurityAuth + + +/** + * @brief Set the authorization mode for this device. + * @param auth_req A bitmap indicating what modes are supported.\n + * The available bits are defined as: + * * 0x01 BLE_SM_PAIR_AUTHREQ_BOND + * * 0x04 BLE_SM_PAIR_AUTHREQ_MITM + * * 0x08 BLE_SM_PAIR_AUTHREQ_SC + * * 0x10 BLE_SM_PAIR_AUTHREQ_KEYPRESS - not yet supported. + */ +/*STATIC*/ +void NimBLEDevice::setSecurityAuth(uint8_t auth_req) { + NimBLEDevice::setSecurityAuth((auth_req & BLE_SM_PAIR_AUTHREQ_BOND)>0, + (auth_req & BLE_SM_PAIR_AUTHREQ_MITM)>0, + (auth_req & BLE_SM_PAIR_AUTHREQ_SC)>0); +} // setSecurityAuth + + +/** + * @brief Set the Input/Output capabilities of this device. + * @param iocap One of the following values: + * * 0x00 BLE_HS_IO_DISPLAY_ONLY DisplayOnly IO capability + * * 0x01 BLE_HS_IO_DISPLAY_YESNO DisplayYesNo IO capability + * * 0x02 BLE_HS_IO_KEYBOARD_ONLY KeyboardOnly IO capability + * * 0x03 BLE_HS_IO_NO_INPUT_OUTPUT NoInputNoOutput IO capability + * * 0x04 BLE_HS_IO_KEYBOARD_DISPLAY KeyboardDisplay Only IO capability + */ +/*STATIC*/ +void NimBLEDevice::setSecurityIOCap(uint8_t iocap) { + ble_hs_cfg.sm_io_cap = iocap; +} // setSecurityIOCap + + +/** + * @brief If we are the initiator of the security procedure this sets the keys we will distribute. + * @param init_key A bitmap indicating which keys to distribute during pairing.\n + * The available bits are defined as: + * * 0x01: BLE_SM_PAIR_KEY_DIST_ENC - Distribute the encryption key. + * * 0x02: BLE_SM_PAIR_KEY_DIST_ID - Distribute the ID key (IRK). + * * 0x04: BLE_SM_PAIR_KEY_DIST_SIGN + * * 0x08: BLE_SM_PAIR_KEY_DIST_LINK + */ +/*STATIC*/ +void NimBLEDevice::setSecurityInitKey(uint8_t init_key) { + ble_hs_cfg.sm_our_key_dist = init_key; +} // setsSecurityInitKey + + +/** + * @brief Set the keys we are willing to accept during pairing. + * @param resp_key A bitmap indicating which keys to accept during pairing. + * The available bits are defined as: + * * 0x01: BLE_SM_PAIR_KEY_DIST_ENC - Accept the encryption key. + * * 0x02: BLE_SM_PAIR_KEY_DIST_ID - Accept the ID key (IRK). + * * 0x04: BLE_SM_PAIR_KEY_DIST_SIGN + * * 0x08: BLE_SM_PAIR_KEY_DIST_LINK + */ +/*STATIC*/ +void NimBLEDevice::setSecurityRespKey(uint8_t resp_key) { + ble_hs_cfg.sm_their_key_dist = resp_key; +} // setsSecurityRespKey + + +/** + * @brief Set the passkey the server will ask for when pairing. + * @param [in] pin The passkey to use. + */ +/*STATIC*/ +void NimBLEDevice::setSecurityPasskey(uint32_t pin) { + m_passkey = pin; +} // setSecurityPasskey + + +/** + * @brief Get the current passkey used for pairing. + * @return The current passkey. + */ +/*STATIC*/ +uint32_t NimBLEDevice::getSecurityPasskey() { + return m_passkey; +} // getSecurityPasskey + + +#ifdef ESP_PLATFORM +/** + * @brief Set the own address type. + * @param [in] own_addr_type Own Bluetooth Device address type.\n + * The available bits are defined as: + * * 0x00: BLE_OWN_ADDR_PUBLIC + * * 0x01: BLE_OWN_ADDR_RANDOM + * * 0x02: BLE_OWN_ADDR_RPA_PUBLIC_DEFAULT + * * 0x03: BLE_OWN_ADDR_RPA_RANDOM_DEFAULT + * @param [in] useNRPA If true, and address type is random, uses a non-resolvable random address. + */ +/*STATIC*/ +void NimBLEDevice::setOwnAddrType(uint8_t own_addr_type, bool useNRPA) { + m_own_addr_type = own_addr_type; + switch (own_addr_type) { +#ifdef CONFIG_IDF_TARGET_ESP32 + case BLE_OWN_ADDR_PUBLIC: + ble_hs_pvcy_rpa_config(NIMBLE_HOST_DISABLE_PRIVACY); + break; +#endif + case BLE_OWN_ADDR_RANDOM: + setSecurityInitKey(BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID); +#ifdef CONFIG_IDF_TARGET_ESP32 + ble_hs_pvcy_rpa_config(useNRPA ? NIMBLE_HOST_ENABLE_NRPA : NIMBLE_HOST_ENABLE_RPA); +#endif + break; + case BLE_OWN_ADDR_RPA_PUBLIC_DEFAULT: + case BLE_OWN_ADDR_RPA_RANDOM_DEFAULT: + setSecurityInitKey(BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID); +#ifdef CONFIG_IDF_TARGET_ESP32 + ble_hs_pvcy_rpa_config(NIMBLE_HOST_ENABLE_RPA); +#endif + break; + } +} // setOwnAddrType +#endif + +/** + * @brief Start the connection securing and authorization for this connection. + * @param conn_id The connection id of the peer device. + * @returns NimBLE stack return code, 0 = success. + */ +/* STATIC */ +int NimBLEDevice::startSecurity(uint16_t conn_id) { + int rc = ble_gap_security_initiate(conn_id); + if(rc != 0){ + NIMBLE_LOGE(LOG_TAG, "ble_gap_security_initiate: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); + } + + return rc; +} // startSecurity + + +/** + * @brief Inject the provided passkey into the Security Manager + * @param [in] peerInfo Connection information for the peer + * @param [in] pin The 6-digit pin to inject + * @return true if the passkey was injected successfully. + */ +bool NimBLEDevice::injectPassKey(const NimBLEConnInfo& peerInfo, uint32_t pin) { + int rc = 0; + struct ble_sm_io pkey = {0,0}; + + pkey.action = BLE_SM_IOACT_INPUT; + pkey.passkey = pin; + + rc = ble_sm_inject_io(peerInfo.getConnHandle(), &pkey); + NIMBLE_LOGD(LOG_TAG, "BLE_SM_IOACT_INPUT; ble_sm_inject_io result: %d", rc); + return rc == 0; +} + + +/** + * @brief Inject the provided numeric comparison response into the Security Manager + * @param [in] peerInfo Connection information for the peer + * @param [in] accept Whether the user confirmed or declined the comparison + */ +bool NimBLEDevice::injectConfirmPIN(const NimBLEConnInfo& peerInfo, bool accept) { + int rc = 0; + struct ble_sm_io pkey = {0,0}; + + pkey.action = BLE_SM_IOACT_NUMCMP; + pkey.numcmp_accept = accept; + + rc = ble_sm_inject_io(peerInfo.getConnHandle(), &pkey); + NIMBLE_LOGD(LOG_TAG, "BLE_SM_IOACT_NUMCMP; ble_sm_inject_io result: %d", rc); + return rc == 0; +} + + +/** + * @brief Check if the device address is on our ignore list. + * @param [in] address The address to look for. + * @return True if ignoring. + */ +/*STATIC*/ +bool NimBLEDevice::isIgnored(const NimBLEAddress &address) { + for(auto &it : m_ignoreList) { + if(it.equals(address)){ + return true; + } + } + + return false; +} + + +/** + * @brief Add a device to the ignore list. + * @param [in] address The address of the device we want to ignore. + */ +/*STATIC*/ +void NimBLEDevice::addIgnored(const NimBLEAddress &address) { + m_ignoreList.push_back(address); +} + + +/** + * @brief Remove a device from the ignore list. + * @param [in] address The address of the device we want to remove from the list. + */ +/*STATIC*/ +void NimBLEDevice::removeIgnored(const NimBLEAddress &address) { + for(auto it = m_ignoreList.begin(); it != m_ignoreList.end(); ++it) { + if((*it).equals(address)){ + m_ignoreList.erase(it); + return; + } + } +} + + +/** + * @brief Set a custom callback for gap events. + * @param [in] handler The function to call when gap events occur. + */ +/*STATIC*/ +void NimBLEDevice::setCustomGapHandler(gap_event_handler handler) { + m_customGapHandler = handler; + int rc = ble_gap_event_listener_register(&m_listener, m_customGapHandler, NULL); + if(rc == BLE_HS_EALREADY){ + NIMBLE_LOGI(LOG_TAG, "Already listening to GAP events."); + } + else{ + assert(rc == 0); + } +} // setCustomGapHandler + +#endif // CONFIG_BT_ENABLED diff --git a/lib/esp-nimble-cpp/src/NimBLEDevice.h b/lib/esp-nimble-cpp/src/NimBLEDevice.h new file mode 100644 index 0000000..64bd4ed --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEDevice.h @@ -0,0 +1,243 @@ +/* + * NimBLEDevice.h + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEDevice.h + * + * Created on: Mar 16, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLEDEVICE_H_ +#define MAIN_NIMBLEDEVICE_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) +#include "NimBLEScan.h" +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +# if CONFIG_BT_NIMBLE_EXT_ADV +# include "NimBLEExtAdvertising.h" +# else +# include "NimBLEAdvertising.h" +# endif +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) +#include "NimBLEClient.h" +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +#include "NimBLEServer.h" +#endif + +#include "NimBLEUtils.h" +#include "NimBLEAddress.h" + +#ifdef ESP_PLATFORM +# include "esp_bt.h" +#endif + +#include +#include +#include + +#define BLEDevice NimBLEDevice +#define BLEClient NimBLEClient +#define BLERemoteService NimBLERemoteService +#define BLERemoteCharacteristic NimBLERemoteCharacteristic +#define BLERemoteDescriptor NimBLERemoteDescriptor +#define BLEAdvertisedDevice NimBLEAdvertisedDevice +#define BLEScan NimBLEScan +#define BLEUUID NimBLEUUID +#define BLESecurity NimBLESecurity +#define BLESecurityCallbacks NimBLESecurityCallbacks +#define BLEAddress NimBLEAddress +#define BLEUtils NimBLEUtils +#define BLEClientCallbacks NimBLEClientCallbacks +#define BLEAdvertisedDeviceCallbacks NimBLEScanCallbacks +#define BLEScanResults NimBLEScanResults +#define BLEServer NimBLEServer +#define BLEService NimBLEService +#define BLECharacteristic NimBLECharacteristic +#define BLEAdvertising NimBLEAdvertising +#define BLEServerCallbacks NimBLEServerCallbacks +#define BLECharacteristicCallbacks NimBLECharacteristicCallbacks +#define BLEAdvertisementData NimBLEAdvertisementData +#define BLEDescriptor NimBLEDescriptor +#define BLE2902 NimBLE2902 +#define BLE2904 NimBLE2904 +#define BLEDescriptorCallbacks NimBLEDescriptorCallbacks +#define BLEBeacon NimBLEBeacon +#define BLEEddystoneTLM NimBLEEddystoneTLM +#define BLEEddystoneURL NimBLEEddystoneURL +#define BLEConnInfo NimBLEConnInfo + +#ifdef CONFIG_BT_NIMBLE_MAX_CONNECTIONS +#define NIMBLE_MAX_CONNECTIONS CONFIG_BT_NIMBLE_MAX_CONNECTIONS +#else +#define NIMBLE_MAX_CONNECTIONS CONFIG_NIMBLE_MAX_CONNECTIONS +#endif + +typedef int (*gap_event_handler)(ble_gap_event *event, void *arg); + +extern "C" void ble_store_config_init(void); + +/** + * @brief A model of a %BLE Device from which all the BLE roles are created. + */ +class NimBLEDevice { +public: + static void init(const std::string &deviceName); + static void deinit(bool clearAll = false); + static void setDeviceName(const std::string &deviceName); + static bool getInitialized(); + static NimBLEAddress getAddress(); + static std::string toString(); + static bool whiteListAdd(const NimBLEAddress & address); + static bool whiteListRemove(const NimBLEAddress & address); + static bool onWhiteList(const NimBLEAddress & address); + static size_t getWhiteListCount(); + static NimBLEAddress getWhiteListAddress(size_t index); + +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + static NimBLEScan* getScan(); +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + static NimBLEServer* createServer(); + static NimBLEServer* getServer(); +#endif + +#ifdef ESP_PLATFORM + static void setPower(esp_power_level_t powerLevel, esp_ble_power_type_t powerType=ESP_BLE_PWR_TYPE_DEFAULT); + static int getPower(esp_ble_power_type_t powerType=ESP_BLE_PWR_TYPE_DEFAULT); + static void setOwnAddrType(uint8_t own_addr_type, bool useNRPA=false); + static void setScanDuplicateCacheSize(uint16_t cacheSize); + static void setScanFilterMode(uint8_t type); +#else + static void setPower(int dbm); + static int getPower(); +#endif + + static void setCustomGapHandler(gap_event_handler handler); + static void setSecurityAuth(bool bonding, bool mitm, bool sc); + static void setSecurityAuth(uint8_t auth_req); + static void setSecurityIOCap(uint8_t iocap); + static void setSecurityInitKey(uint8_t init_key); + static void setSecurityRespKey(uint8_t init_key); + static void setSecurityPasskey(uint32_t pin); + static uint32_t getSecurityPasskey(); + static int startSecurity(uint16_t conn_id); + static bool injectConfirmPIN(const NimBLEConnInfo& peerInfo, bool accept); + static bool injectPassKey(const NimBLEConnInfo& peerInfo, uint32_t pin); + static int setMTU(uint16_t mtu); + static uint16_t getMTU(); + static bool isIgnored(const NimBLEAddress &address); + static void addIgnored(const NimBLEAddress &address); + static void removeIgnored(const NimBLEAddress &address); + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +# if CONFIG_BT_NIMBLE_EXT_ADV + static NimBLEExtAdvertising* getAdvertising(); + static bool startAdvertising(uint8_t inst_id, + int duration = 0, + int max_events = 0); + static bool stopAdvertising(uint8_t inst_id); + static bool stopAdvertising(); +# endif +# if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) + static NimBLEAdvertising* getAdvertising(); + static bool startAdvertising(uint32_t duration = 0); + static bool stopAdvertising(); +# endif +#endif + +#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL) + static NimBLEClient* createClient(NimBLEAddress peerAddress = NimBLEAddress("")); + static bool deleteClient(NimBLEClient* pClient); + static NimBLEClient* getClientByID(uint16_t conn_id); + static NimBLEClient* getClientByPeerAddress(const NimBLEAddress &peer_addr); + static NimBLEClient* getDisconnectedClient(); + static size_t getClientListSize(); + static std::list* getClientList(); +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) || defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + static bool deleteBond(const NimBLEAddress &address); + static int getNumBonds(); + static bool isBonded(const NimBLEAddress &address); + static bool deleteAllBonds(); + static NimBLEAddress getBondedAddress(int index); +#endif + +private: +#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL) + friend class NimBLEClient; +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + friend class NimBLEScan; +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + friend class NimBLEServer; + friend class NimBLECharacteristic; +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) + friend class NimBLEAdvertising; +# if CONFIG_BT_NIMBLE_EXT_ADV + friend class NimBLEExtAdvertising; + friend class NimBLEExtAdvertisement; +# endif +#endif + + static void onReset(int reason); + static void onSync(void); + static void host_task(void *param); + static bool m_synced; + +#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + static NimBLEScan* m_pScan; +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + static NimBLEServer* m_pServer; +#endif + +#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +# if CONFIG_BT_NIMBLE_EXT_ADV + static NimBLEExtAdvertising* m_bleAdvertising; +# else + static NimBLEAdvertising* m_bleAdvertising; +# endif +#endif + +#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL) + static std::list m_cList; +#endif + static std::list m_ignoreList; + static uint32_t m_passkey; + static ble_gap_event_listener m_listener; + static gap_event_handler m_customGapHandler; + static uint8_t m_own_addr_type; +#ifdef ESP_PLATFORM +# ifdef CONFIG_BTDM_BLE_SCAN_DUPL + static uint16_t m_scanDuplicateSize; + static uint8_t m_scanFilterMode; +# endif +#endif + static std::vector m_whiteList; +}; + + +#endif // CONFIG_BT_ENABLED +#endif // MAIN_NIMBLEDEVICE_H_ diff --git a/lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.cpp b/lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.cpp new file mode 100644 index 0000000..1f48a16 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.cpp @@ -0,0 +1,227 @@ +/* + * NimBLEEddystoneTLM.cpp + * + * Created: on March 15 2020 + * Author H2zero + * + * Originally: + * + * BLEEddystoneTLM.cpp + * + * Created on: Mar 12, 2018 + * Author: pcbreflux + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include "NimBLEEddystoneTLM.h" +#include "NimBLELog.h" + +#include +#include + +#define ENDIAN_CHANGE_U16(x) ((((x)&0xFF00)>>8) + (((x)&0xFF)<<8)) +#define ENDIAN_CHANGE_U32(x) ((((x)&0xFF000000)>>24) + (((x)&0x00FF0000)>>8)) + ((((x)&0xFF00)<<8) + (((x)&0xFF)<<24)) + +static const char LOG_TAG[] = "NimBLEEddystoneTLM"; + +/** + * @brief Construct a default EddystoneTLM beacon object. + */ +NimBLEEddystoneTLM::NimBLEEddystoneTLM() { + beaconUUID = 0xFEAA; + m_eddystoneData.frameType = EDDYSTONE_TLM_FRAME_TYPE; + m_eddystoneData.version = 0; + m_eddystoneData.volt = 3300; // 3300mV = 3.3V + m_eddystoneData.temp = (uint16_t) ((float) 23.00 * 256); // 8.8 fixed format + m_eddystoneData.advCount = 0; + m_eddystoneData.tmil = 0; +} // NimBLEEddystoneTLM + + +/** + * @brief Retrieve the data that is being advertised. + * @return The advertised data. + */ +std::string NimBLEEddystoneTLM::getData() { + return std::string((char*) &m_eddystoneData, sizeof(m_eddystoneData)); +} // getData + + +/** + * @brief Get the UUID being advertised. + * @return The UUID advertised. + */ +NimBLEUUID NimBLEEddystoneTLM::getUUID() { + return NimBLEUUID(beaconUUID); +} // getUUID + + +/** + * @brief Get the version being advertised. + * @return The version number. + */ +uint8_t NimBLEEddystoneTLM::getVersion() { + return m_eddystoneData.version; +} // getVersion + + +/** + * @brief Get the battery voltage. + * @return The battery voltage. + */ +uint16_t NimBLEEddystoneTLM::getVolt() { + return ENDIAN_CHANGE_U16(m_eddystoneData.volt); +} // getVolt + + +/** + * @brief Get the temperature being advertised. + * @return The temperature value. + */ +float NimBLEEddystoneTLM::getTemp() { + return (int16_t)ENDIAN_CHANGE_U16(m_eddystoneData.temp) / 256.0f; +} // getTemp + +/** + * @brief Get the count of advertisements sent. + * @return The number of advertisements. + */ +uint32_t NimBLEEddystoneTLM::getCount() { + return ENDIAN_CHANGE_U32(m_eddystoneData.advCount); +} // getCount + + +/** + * @brief Get the advertisement time. + * @return The advertisement time. + */ +uint32_t NimBLEEddystoneTLM::getTime() { + return (ENDIAN_CHANGE_U32(m_eddystoneData.tmil)) / 10; +} // getTime + + +/** + * @brief Get a string representation of the beacon. + * @return The string representation. + */ +std::string NimBLEEddystoneTLM::toString() { + std::string out = ""; + uint32_t rawsec = ENDIAN_CHANGE_U32(m_eddystoneData.tmil); + char val[12]; + + out += "Version "; // + std::string(m_eddystoneData.version); + snprintf(val, sizeof(val), "%d", m_eddystoneData.version); + out += val; + out += "\n"; + out += "Battery Voltage "; // + ENDIAN_CHANGE_U16(m_eddystoneData.volt); + snprintf(val, sizeof(val), "%d", ENDIAN_CHANGE_U16(m_eddystoneData.volt)); + out += val; + out += " mV\n"; + + out += "Temperature "; + snprintf(val, sizeof(val), "%.2f", ENDIAN_CHANGE_U16(m_eddystoneData.temp) / 256.0f); + out += val; + out += " C\n"; + + out += "Adv. Count "; + snprintf(val, sizeof(val), "%" PRIu32, ENDIAN_CHANGE_U32(m_eddystoneData.advCount)); + out += val; + out += "\n"; + + out += "Time in seconds "; + snprintf(val, sizeof(val), "%" PRIu32, rawsec/10); + out += val; + out += "\n"; + + out += "Time "; + + snprintf(val, sizeof(val), "%04" PRIu32, rawsec / 864000); + out += val; + out += "."; + + snprintf(val, sizeof(val), "%02" PRIu32, (rawsec / 36000) % 24); + out += val; + out += ":"; + + snprintf(val, sizeof(val), "%02" PRIu32, (rawsec / 600) % 60); + out += val; + out += ":"; + + snprintf(val, sizeof(val), "%02" PRIu32, (rawsec / 10) % 60); + out += val; + out += "\n"; + + return out; +} // toString + + +/** + * @brief Set the raw data for the beacon advertisement. + * @param [in] data The raw data to advertise. + */ +void NimBLEEddystoneTLM::setData(const std::string &data) { + if (data.length() != sizeof(m_eddystoneData)) { + NIMBLE_LOGE(LOG_TAG, "Unable to set the data ... length passed in was %d and expected %d", + data.length(), sizeof(m_eddystoneData)); + return; + } + memcpy(&m_eddystoneData, data.data(), data.length()); +} // setData + + +/** + * @brief Set the UUID to advertise. + * @param [in] l_uuid The UUID. + */ +void NimBLEEddystoneTLM::setUUID(const NimBLEUUID &l_uuid) { + beaconUUID = l_uuid.getNative()->u16.value; +} // setUUID + + +/** + * @brief Set the version to advertise. + * @param [in] version The version number. + */ +void NimBLEEddystoneTLM::setVersion(uint8_t version) { + m_eddystoneData.version = version; +} // setVersion + + +/** + * @brief Set the battery voltage to advertise. + * @param [in] volt The voltage in millivolts. + */ +void NimBLEEddystoneTLM::setVolt(uint16_t volt) { + m_eddystoneData.volt = volt; +} // setVolt + + +/** + * @brief Set the temperature to advertise. + * @param [in] temp The temperature value. + */ +void NimBLEEddystoneTLM::setTemp(float temp) { + m_eddystoneData.temp = ENDIAN_CHANGE_U16((int16_t)(temp * 256.0f)); +} // setTemp + + +/** + * @brief Set the advertisement count. + * @param [in] advCount The advertisement number. + */ +void NimBLEEddystoneTLM::setCount(uint32_t advCount) { + m_eddystoneData.advCount = advCount; +} // setCount + + +/** + * @brief Set the advertisement time. + * @param [in] tmil The advertisement time in milliseconds. + */ +void NimBLEEddystoneTLM::setTime(uint32_t tmil) { + m_eddystoneData.tmil = tmil; +} // setTime + +#endif diff --git a/lib/NimBLE-Arduino/src/NimBLEEddystoneTLM.h b/lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEEddystoneTLM.h rename to lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.h diff --git a/lib/NimBLE-Arduino/src/NimBLEEddystoneURL.cpp b/lib/esp-nimble-cpp/src/NimBLEEddystoneURL.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEEddystoneURL.cpp rename to lib/esp-nimble-cpp/src/NimBLEEddystoneURL.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEEddystoneURL.h b/lib/esp-nimble-cpp/src/NimBLEEddystoneURL.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEEddystoneURL.h rename to lib/esp-nimble-cpp/src/NimBLEEddystoneURL.h diff --git a/lib/esp-nimble-cpp/src/NimBLEExtAdvertising.cpp b/lib/esp-nimble-cpp/src/NimBLEExtAdvertising.cpp new file mode 100644 index 0000000..81dad0d --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEExtAdvertising.cpp @@ -0,0 +1,867 @@ +/* + * NimBLEExtAdvertising.cpp + * + * Created: on February 6, 2022 + * Author H2zero + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && \ + defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) && \ + CONFIG_BT_NIMBLE_EXT_ADV + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "services/gap/ble_svc_gap.h" +#else +#include "nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h" +#endif +#include "NimBLEExtAdvertising.h" +#include "NimBLEDevice.h" +#include "NimBLEServer.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +static NimBLEExtAdvertisingCallbacks defaultCallbacks; +static const char* LOG_TAG = "NimBLEExtAdvertising"; + + +/** + * @brief Destructor: deletes callback instances if requested. + */ +NimBLEExtAdvertising::~NimBLEExtAdvertising() { + if(m_deleteCallbacks && m_pCallbacks != &defaultCallbacks) { + delete m_pCallbacks; + } +} + + +/** + * @brief Register the extended advertisement data. + * @param [in] inst_id The extended advertisement instance ID to assign to this data. + * @param [in] adv The extended advertisement instance with the data to set. + * @return True if advertising started successfully. + */ +bool NimBLEExtAdvertising::setInstanceData(uint8_t inst_id, NimBLEExtAdvertisement& adv) { + adv.m_params.sid = inst_id; + + // Legacy advertising as connectable requires the scannable flag also. + if (adv.m_params.legacy_pdu && adv.m_params.connectable) { + adv.m_params.scannable = true; + } + + // If connectable or not scannable disable the callback for scan response requests + if (adv.m_params.connectable || !adv.m_params.scannable) { + adv.m_params.scan_req_notif = false; + } + +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + NimBLEServer* pServer = NimBLEDevice::getServer(); + if (pServer != nullptr) { + if (!pServer->m_gattsStarted) { + pServer->start(); + } + } + + int rc = ble_gap_ext_adv_configure(inst_id, + &adv.m_params, + NULL, + (pServer != nullptr) ? NimBLEServer::handleGapEvent : + NimBLEExtAdvertising::handleGapEvent, + NULL); +#else + int rc = ble_gap_ext_adv_configure(inst_id, + &data.m_params, + NULL, + NimBLEExtAdvertising::handleGapEvent, + NULL); +#endif + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Advertising config error: rc = %d", rc); + } else { + os_mbuf *buf; + buf = os_msys_get_pkthdr(adv.m_payload.size(), 0); + if (!buf) { + NIMBLE_LOGE(LOG_TAG, "Data buffer allocation failed"); + return false; + } + + rc = os_mbuf_append(buf, &adv.m_payload[0], adv.m_payload.size()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Unable to copy data: rc = %d", rc); + return false; + } else { + if (adv.m_params.scannable && !adv.m_params.legacy_pdu) { + rc = ble_gap_ext_adv_rsp_set_data(inst_id, buf); + } else { + rc = ble_gap_ext_adv_set_data(inst_id, buf); + } + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Invalid advertisement data: rc = %d", rc); + } else { + if (adv.m_advAddress != NimBLEAddress("")) { + ble_addr_t addr; + memcpy(&addr.val, adv.m_advAddress.getNative(), 6); + // Custom advertising address must be random. + addr.type = BLE_OWN_ADDR_RANDOM; + rc = ble_gap_ext_adv_set_addr(inst_id, &addr); + } + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error setting advertisement address: rc = %d", rc); + return false; + } + } + } + } + + return (rc == 0); +} + + +/** + * @brief Set the scan response data for a legacy advertisement. + * @param [in] inst_id The extended advertisement instance ID to assign to this data. + * @param [in] lsr A reference to a NimBLEExtAdvertisement that contains the data. + */ +bool NimBLEExtAdvertising::setScanResponseData(uint8_t inst_id, NimBLEExtAdvertisement & lsr) { + os_mbuf *buf = os_msys_get_pkthdr(lsr.m_payload.size(), 0); + if (!buf) { + NIMBLE_LOGE(LOG_TAG, "Data buffer allocation failed"); + return false; + } + + int rc = os_mbuf_append(buf, &lsr.m_payload[0], lsr.m_payload.size()); + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Unable to copy scan data: rc = %d", rc); + return false; + } else { + rc = ble_gap_ext_adv_rsp_set_data(inst_id, buf); + } + return (rc == 0); +} + + +/** + * @brief Start extended advertising. + * @param [in] inst_id The extended advertisement instance ID to start. + * @param [in] duration How long to advertise for in milliseconds, 0 = forever (default). + * @param [in] max_events Maximum number of advertisement events to send, 0 = no limit (default). + * @return True if advertising started successfully. + */ +bool NimBLEExtAdvertising::start(uint8_t inst_id, int duration, int max_events) { + NIMBLE_LOGD(LOG_TAG, ">> Extended Advertising start"); + + // If Host is not synced we cannot start advertising. + if(!NimBLEDevice::m_synced) { + NIMBLE_LOGE(LOG_TAG, "Host reset, wait for sync."); + return false; + } + + int rc = ble_gap_ext_adv_start(inst_id, duration / 10, max_events); + + switch (rc) { + case 0: + m_advStatus[inst_id] = true; + break; + + case BLE_HS_EINVAL: + NIMBLE_LOGE(LOG_TAG, "Unable to advertise - Value Error"); + break; + + case BLE_HS_EALREADY: + NIMBLE_LOGI(LOG_TAG, "Advertisement Already active"); + break; + + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_EOS: + case BLE_HS_ECONTROLLER: + case BLE_HS_ENOTSYNCED: + NIMBLE_LOGE(LOG_TAG, "Unable to advertise - Host Reset"); + break; + + default: + NIMBLE_LOGE(LOG_TAG, "Error enabling advertising; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + + NIMBLE_LOGD(LOG_TAG, "<< Extended Advertising start"); + return (rc == 0 || rc == BLE_HS_EALREADY); +} // start + + +/** + * @brief Stop and remove this instance data from the advertisement set. + * @param [in] inst_id The extended advertisement instance to stop advertising. + * @return True if successful. + */ +bool NimBLEExtAdvertising::removeInstance(uint8_t inst_id) { + if (stop(inst_id)) { + int rc = ble_gap_ext_adv_remove(inst_id); + if (rc != 0 && rc != BLE_HS_EALREADY) { + NIMBLE_LOGE(LOG_TAG, "ble_gap_ext_adv_remove rc = %d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + return true; + } + + return false; +} // removeInstance + + +/** + * @brief Stop and remove all advertising instance data. + * @return True if successful. + */ +bool NimBLEExtAdvertising::removeAll() { + if (stop()) { + int rc = ble_gap_ext_adv_clear(); + if (rc == 0 || rc == BLE_HS_EALREADY) { + return true; + } else { + NIMBLE_LOGE(LOG_TAG, "ble_gap_ext_adv_clear rc = %d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + } + } + + return false; +} // removeAll + + +/** + * @brief Stop advertising this instance data. + * @param [in] inst_id The extended advertisement instance to stop advertising. + * @return True if successful. + */ +bool NimBLEExtAdvertising::stop(uint8_t inst_id) { + int rc = ble_gap_ext_adv_stop(inst_id); + if (rc != 0 && rc != BLE_HS_EALREADY) { + NIMBLE_LOGE(LOG_TAG, "ble_gap_ext_adv_stop rc = %d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + + m_advStatus[inst_id] = false; + return true; +} // stop + + +/** + * @brief Stop all advertisements. + * @return True if successful. + */ +bool NimBLEExtAdvertising::stop() { + int rc = ble_gap_ext_adv_clear(); + if (rc != 0 && rc != BLE_HS_EALREADY) { + NIMBLE_LOGE(LOG_TAG, "ble_gap_ext_adv_stop rc = %d %s", + rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + + for(auto it : m_advStatus) { + it = false; + } + + return true; +} // stop + + +/** + * @brief Set a callback to call when the advertisement stops. + * @param [in] pCallbacks A pointer to a callback to be invoked when an advertisement stops. + * @param [in] deleteCallbacks if true callback class will be deleted when advertising is destructed. + */ +void NimBLEExtAdvertising::setCallbacks(NimBLEExtAdvertisingCallbacks* pCallbacks, + bool deleteCallbacks) { + if (pCallbacks != nullptr){ + m_pCallbacks = pCallbacks; + m_deleteCallbacks = deleteCallbacks; + } else { + m_pCallbacks = &defaultCallbacks; + } +} // setCallbacks + + +/** + * @brief Check if currently advertising. + * @param [in] inst_id The instance ID of the advertised data to get the status of. + * @return True if advertising is active. + */ +bool NimBLEExtAdvertising::isActive(uint8_t inst_id) { + return m_advStatus[inst_id]; +} // isAdvertising + + +/** + * @brief Check if any instances are currently advertising. + * @return True if any instance is active. + */ +bool NimBLEExtAdvertising::isAdvertising() { + for (auto it : m_advStatus) { + if (it) { + return true; + } + } + return false; +} // isAdvertising + + +/* + * Host reset seems to clear advertising data, + * we need clear the flag so it reloads it. + */ +void NimBLEExtAdvertising::onHostSync() { + NIMBLE_LOGD(LOG_TAG, "Host re-synced"); + for(auto it : m_advStatus) { + it = false; + } +} // onHostSync + + +/** + * @brief Handler for gap events when not using peripheral role. + * @param [in] event the event data. + * @param [in] arg pointer to the advertising instance. + */ +/*STATIC*/ +int NimBLEExtAdvertising::handleGapEvent(struct ble_gap_event *event, void *arg) { + (void)arg; + NimBLEExtAdvertising* pAdv = NimBLEDevice::getAdvertising(); + + switch (event->type) { + case BLE_GAP_EVENT_ADV_COMPLETE: { + switch (event->adv_complete.reason) { + // Don't call the callback if host reset, we want to + // preserve the active flag until re-sync to restart advertising. + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_EOS: + case BLE_HS_ECONTROLLER: + case BLE_HS_ENOTSYNCED: + NIMBLE_LOGC(LOG_TAG, "host reset, rc = %d", event->adv_complete.reason); + NimBLEDevice::onReset(event->adv_complete.reason); + return 0; + default: + break; + } + pAdv->m_advStatus[event->adv_complete.instance] = false; + pAdv->m_pCallbacks->onStopped(pAdv, event->adv_complete.reason, + event->adv_complete.instance); + break; + } + + case BLE_GAP_EVENT_SCAN_REQ_RCVD: { + pAdv->m_pCallbacks->onScanRequest(pAdv, event->scan_req_rcvd.instance, + NimBLEAddress(event->scan_req_rcvd.scan_addr)); + break; + } + } + + return 0; +} // handleGapEvent + + +/** Default callback handlers */ +void NimBLEExtAdvertisingCallbacks::onStopped(NimBLEExtAdvertising *pAdv, + int reason, uint8_t inst_id) { + NIMBLE_LOGD("NimBLEExtAdvertisingCallbacks", "onStopped: Default"); +} // onStopped + + +void NimBLEExtAdvertisingCallbacks::onScanRequest(NimBLEExtAdvertising *pAdv, + uint8_t inst_id, NimBLEAddress addr) { + NIMBLE_LOGD("NimBLEExtAdvertisingCallbacks", "onScanRequest: Default"); +} // onScanRequest + + +/** + * @brief Construct a BLE extended advertisement. + * @param [in] priPhy The primary Phy to advertise on, can be one of: + * * BLE_HCI_LE_PHY_1M + * * BLE_HCI_LE_PHY_CODED + * @param [in] secPhy The secondary Phy to advertise on, can be one of: + * * BLE_HCI_LE_PHY_1M + * * BLE_HCI_LE_PHY_2M + * * BLE_HCI_LE_PHY_CODED + */ +NimBLEExtAdvertisement::NimBLEExtAdvertisement(uint8_t priPhy, uint8_t secPhy) +: m_advAddress("") +{ + memset (&m_params, 0, sizeof(m_params)); + m_params.own_addr_type = NimBLEDevice::m_own_addr_type; + m_params.primary_phy = priPhy; + m_params.secondary_phy = secPhy; + m_params.tx_power = 127; +} // NimBLEExtAdvertisement + + +/** + * @brief Sets wether the advertisement should use legacy (BLE 4.0, 31 bytes max) advertising. + * @param [in] val true = using legacy advertising. + */ +void NimBLEExtAdvertisement::setLegacyAdvertising(bool val) { + m_params.legacy_pdu = val; +} // setLegacyAdvertising + + +/** + * @brief Sets wether the advertisement has scan response data available. + * @param [in] val true = scan response is available. + */ +void NimBLEExtAdvertisement::setScannable(bool val) { + m_params.scannable = val; +} // setScannable + + + +/** + * @brief Sets the transmission power level for this advertisement. + * @param [in] dbm the transmission power to use in dbm. + * @details The allowable value range depends on device hardware. \n + * The ESP32C3 and ESP32S3 have a range of -27 to +18. + */ +void NimBLEExtAdvertisement::setTxPower(int8_t dbm) { + m_params.tx_power = dbm; +} + + +/** + * @brief Sets wether this advertisement should advertise as a connectable device. + * @param [in] val True = connectable. + */ +void NimBLEExtAdvertisement::setConnectable(bool val) { +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + m_params.connectable = val; +#endif +} // setConnectable + + +/** + * @brief Set the address to use for this advertisement. + * @param [in] addr The address to use. + */ +void NimBLEExtAdvertisement::setAddress(const NimBLEAddress & addr) { + m_advAddress = addr; + // Must use random address type. + m_params.own_addr_type = BLE_OWN_ADDR_RANDOM; +} + + +/** + * @brief Sets The primary channels to advertise on. + * @param [in] ch37 Advertise on channel 37. + * @param [in] ch38 Advertise on channel 38. + * @param [in] ch39 Advertise on channel 39. + * @details This will set a bitmask using the input parameters to allow different \n + * combinations. If all inputs are false then all 3 channels will be used. + */ +void NimBLEExtAdvertisement::setPrimaryChannels(bool ch37, bool ch38, bool ch39) { + m_params.channel_map = (ch37 | (ch38 << 1) | (ch39 << 2)); +} // setPrimaryChannels + + +/** + * @brief Set the filtering for the scan filter. + * @param [in] scanRequestWhitelistOnly If true, only allow scan requests from those on the white list. + * @param [in] connectWhitelistOnly If true, only allow connections from those on the white list. + */ +void NimBLEExtAdvertisement::setScanFilter(bool scanRequestWhitelistOnly, bool connectWhitelistOnly) { + if (!scanRequestWhitelistOnly && !connectWhitelistOnly) { + m_params.filter_policy = BLE_HCI_ADV_FILT_NONE; + return; + } + if (scanRequestWhitelistOnly && !connectWhitelistOnly) { + m_params.filter_policy = BLE_HCI_ADV_FILT_SCAN; + return; + } + if (!scanRequestWhitelistOnly && connectWhitelistOnly) { + m_params.filter_policy = BLE_HCI_ADV_FILT_CONN; + return; + } + if (scanRequestWhitelistOnly && connectWhitelistOnly) { + m_params.filter_policy = BLE_HCI_ADV_FILT_BOTH; + return; + } +} // setScanFilter + + +/** + * @brief Sets the peer to directly advertise to. + * @param [in] addr The address of the peer to direct the advertisements. + */ +void NimBLEExtAdvertisement::setDirectedPeer(const NimBLEAddress & addr) { + ble_addr_t peerAddr; + memcpy(&peerAddr.val, addr.getNative(), 6); + peerAddr.type = addr.getType(); + m_params.peer = peerAddr; +} // setDirectedPeer + + +/** + * @brief Enable or disable direct advertisements to the peer set with `NimBLEExtAdvertisement::setDirectedPeer` + * @param [in] val true = send directed advertisements to peer. + * @param [in] high_duty true = use fast advertising rate, default - true. + */ +void NimBLEExtAdvertisement::setDirected(bool val, bool high_duty) { + m_params.directed = val; + m_params.high_duty_directed = high_duty; +} // setDirected + + +/** + * @brief Set the minimum advertising interval. + * @param [in] mininterval Minimum value for advertising interval in 0.625ms units, 0 = use default. + */ +void NimBLEExtAdvertisement::setMinInterval(uint32_t mininterval) { + m_params.itvl_min = mininterval; +} // setMinInterval + + +/** + * @brief Set the maximum advertising interval. + * @param [in] maxinterval Maximum value for advertising interval in 0.625ms units, 0 = use default. + */ +void NimBLEExtAdvertisement::setMaxInterval(uint32_t maxinterval) { + m_params.itvl_max = maxinterval; +} // setMaxInterval + + +/** + * @brief Set the primary advertising PHY to use + * @param [in] phy Can be one of following constants: + * * BLE_HCI_LE_PHY_1M + * * BLE_HCI_LE_PHY_CODED + */ +void NimBLEExtAdvertisement::setPrimaryPhy(uint8_t phy) { + m_params.primary_phy = phy; +} // setPrimaryPhy + + +/** + * @brief Set the secondary advertising PHY to use + * @param [in] phy Can be one of following constants: + * * BLE_HCI_LE_PHY_1M + * * BLE_HCI_LE_PHY_2M + * * BLE_HCI_LE_PHY_CODED + */ +void NimBLEExtAdvertisement::setSecondaryPhy(uint8_t phy) { + m_params.secondary_phy = phy; +} // setSecondaryPhy + + +/** + * @brief Sets whether the advertisement should be anonymous. + * @param [in] val Set to true to enable anonymous advertising. + * + * @details Anonymous advertising omits the device's address from the advertisement. + */ +void NimBLEExtAdvertisement::setAnonymous(bool val) { + m_params.anonymous = val; +} // setAnonymous + + +/** + * @brief Sets whether the scan response request callback should be called. + * @param [in] enable If true the scan response request callback will be called for this advertisement. + */ +void NimBLEExtAdvertisement::enableScanRequestCallback(bool enable) { + m_params.scan_req_notif = enable; +} // enableScanRequestCallback + + +/** + * @brief Clears the data stored in this instance, does not change settings. + * @details This will clear all data but preserves advertising parameter settings. + */ +void NimBLEExtAdvertisement::clearData() { + std::vector swap; + std::swap(m_payload, swap); +} + + +/** + * @brief Get the size of the current data. + */ +size_t NimBLEExtAdvertisement::getDataSize() { + return m_payload.size(); +} // getDataSize + + +/** + * @brief Set the advertisement data. + * @param [in] data The data to be set as the payload. + * @param [in] length The size of data. + * @details This will completely replace any data that was previously set. + */ +void NimBLEExtAdvertisement::setData(const uint8_t * data, size_t length) { + m_payload.assign(data, data + length); +} // setData + + +/** + * @brief Add data to the payload to be advertised. + * @param [in] data The data to be added to the payload. + */ +void NimBLEExtAdvertisement::addData(const std::string &data) { + addData((uint8_t*)data.data(), data.length()); +} // addData + + +/** + * @brief Add data to the payload to be advertised. + * @param [in] data The data to be added to the payload. + * @param [in] length The size of data to be added to the payload. + */ +void NimBLEExtAdvertisement::addData(const uint8_t * data, size_t length) { + m_payload.insert(m_payload.end(), data, data + length); +} // addData + + +/** + * @brief Set the appearance. + * @param [in] appearance The appearance code value. + */ +void NimBLEExtAdvertisement::setAppearance(uint16_t appearance) { + char cdata[2]; + cdata[0] = 3; + cdata[1] = BLE_HS_ADV_TYPE_APPEARANCE; // 0x19 + addData(std::string(cdata, 2) + std::string((char*) &appearance, 2)); +} // setAppearance + + +/** + * @brief Set the advertisement flags. + * @param [in] flag The flags to be set in the advertisement. + * * BLE_HS_ADV_F_DISC_LTD + * * BLE_HS_ADV_F_DISC_GEN + * * BLE_HS_ADV_F_BREDR_UNSUP - must always use with NimBLE + */ +void NimBLEExtAdvertisement::setFlags(uint8_t flag) { + char cdata[3]; + cdata[0] = 2; + cdata[1] = BLE_HS_ADV_TYPE_FLAGS; // 0x01 + cdata[2] = flag | BLE_HS_ADV_F_BREDR_UNSUP; + addData(std::string(cdata, 3)); +} // setFlags + + +/** + * @brief Set manufacturer specific data. + * @param [in] data The manufacturer data to advertise. + */ +void NimBLEExtAdvertisement::setManufacturerData(const std::string &data) { + char cdata[2]; + cdata[0] = data.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_MFG_DATA ; // 0xff + addData(std::string(cdata, 2) + data); +} // setManufacturerData + + +/** + * @brief Set the URI to advertise. + * @param [in] uri The uri to advertise. + */ +void NimBLEExtAdvertisement::setURI(const std::string &uri) { + char cdata[2]; + cdata[0] = uri.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_URI; + addData(std::string(cdata, 2) + uri); +} // setURI + + +/** + * @brief Set the complete name of this device. + * @param [in] name The name to advertise. + */ +void NimBLEExtAdvertisement::setName(const std::string &name) { + char cdata[2]; + cdata[0] = name.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_COMP_NAME; // 0x09 + addData(std::string(cdata, 2) + name); +} // setName + + +/** + * @brief Set a single service to advertise as a complete list of services. + * @param [in] uuid The service to advertise. + */ +void NimBLEExtAdvertisement::setCompleteServices(const NimBLEUUID &uuid) { + setServices(true, uuid.bitSize(), {uuid}); +} // setCompleteServices + + +/** + * @brief Set the complete list of 16 bit services to advertise. + * @param [in] v_uuid A vector of 16 bit UUID's to advertise. + */ +void NimBLEExtAdvertisement::setCompleteServices16(const std::vector& v_uuid) { + setServices(true, 16, v_uuid); +} // setCompleteServices16 + + +/** + * @brief Set the complete list of 32 bit services to advertise. + * @param [in] v_uuid A vector of 32 bit UUID's to advertise. + */ +void NimBLEExtAdvertisement::setCompleteServices32(const std::vector& v_uuid) { + setServices(true, 32, v_uuid); +} // setCompleteServices32 + + +/** + * @brief Set a single service to advertise as a partial list of services. + * @param [in] uuid The service to advertise. + */ +void NimBLEExtAdvertisement::setPartialServices(const NimBLEUUID &uuid) { + setServices(false, uuid.bitSize(), {uuid}); +} // setPartialServices + + +/** + * @brief Set the partial list of services to advertise. + * @param [in] v_uuid A vector of 16 bit UUID's to advertise. + */ +void NimBLEExtAdvertisement::setPartialServices16(const std::vector& v_uuid) { + setServices(false, 16, v_uuid); +} // setPartialServices16 + + +/** + * @brief Set the partial list of services to advertise. + * @param [in] v_uuid A vector of 32 bit UUID's to advertise. + */ +void NimBLEExtAdvertisement::setPartialServices32(const std::vector& v_uuid) { + setServices(false, 32, v_uuid); +} // setPartialServices32 + + +/** + * @brief Utility function to create the list of service UUID's from a vector. + * @param [in] complete If true the vector is the complete set of services. + * @param [in] size The bit size of the UUID's in the vector. (16, 32, or 128). + * @param [in] v_uuid The vector of service UUID's to advertise. + */ +void NimBLEExtAdvertisement::setServices(const bool complete, const uint8_t size, + const std::vector &v_uuid) +{ + char cdata[2]; + cdata[0] = (size / 8) * v_uuid.size() + 1; + switch(size) { + case 16: + cdata[1] = complete ? BLE_HS_ADV_TYPE_COMP_UUIDS16 : BLE_HS_ADV_TYPE_INCOMP_UUIDS16; + break; + case 32: + cdata[1] = complete ? BLE_HS_ADV_TYPE_COMP_UUIDS32 : BLE_HS_ADV_TYPE_INCOMP_UUIDS32; + break; + case 128: + cdata[1] = complete ? BLE_HS_ADV_TYPE_COMP_UUIDS128 : BLE_HS_ADV_TYPE_INCOMP_UUIDS128; + break; + default: + return; + } + + std::string uuids; + + for(auto &it : v_uuid){ + if(it.bitSize() != size) { + NIMBLE_LOGE(LOG_TAG, "Service UUID(%d) invalid", size); + return; + } else { + switch(size) { + case 16: + uuids += std::string((char*)&it.getNative()->u16.value, 2); + break; + case 32: + uuids += std::string((char*)&it.getNative()->u32.value, 4); + break; + case 128: + uuids += std::string((char*)&it.getNative()->u128.value, 16); + break; + default: + return; + } + } + } + + addData(std::string(cdata, 2) + uuids); +} // setServices + + +/** + * @brief Set the service data (UUID + data) + * @param [in] uuid The UUID to set with the service data. + * @param [in] data The data to be associated with the service data advertised. + */ +void NimBLEExtAdvertisement::setServiceData(const NimBLEUUID &uuid, const std::string &data) { + char cdata[2]; + switch (uuid.bitSize()) { + case 16: { + // [Len] [0x16] [UUID16] data + cdata[0] = data.length() + 3; + cdata[1] = BLE_HS_ADV_TYPE_SVC_DATA_UUID16; // 0x16 + addData(std::string(cdata, 2) + std::string((char*) &uuid.getNative()->u16.value, 2) + data); + break; + } + + case 32: { + // [Len] [0x20] [UUID32] data + cdata[0] = data.length() + 5; + cdata[1] = BLE_HS_ADV_TYPE_SVC_DATA_UUID32; // 0x20 + addData(std::string(cdata, 2) + std::string((char*) &uuid.getNative()->u32.value, 4) + data); + break; + } + + case 128: { + // [Len] [0x21] [UUID128] data + cdata[0] = data.length() + 17; + cdata[1] = BLE_HS_ADV_TYPE_SVC_DATA_UUID128; // 0x21 + addData(std::string(cdata, 2) + std::string((char*) &uuid.getNative()->u128.value, 16) + data); + break; + } + + default: + return; + } +} // setServiceData + + +/** + * @brief Set the short name. + * @param [in] name The short name of the device. + */ +void NimBLEExtAdvertisement::setShortName(const std::string &name) { + char cdata[2]; + cdata[0] = name.length() + 1; + cdata[1] = BLE_HS_ADV_TYPE_INCOMP_NAME; // 0x08 + addData(std::string(cdata, 2) + name); +} // setShortName + + +/** + * @brief Adds Tx power level to the advertisement data. + */ +void NimBLEExtAdvertisement::addTxPower() { + m_params.include_tx_power = 1; +} // addTxPower + + +/** + * @brief Set the preferred connection interval parameters. + * @param [in] min The minimum interval desired. + * @param [in] max The maximum interval desired. + */ +void NimBLEExtAdvertisement::setPreferredParams(uint16_t min, uint16_t max) { + uint8_t data[6]; + data[0] = BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN + 1; + data[1] = BLE_HS_ADV_TYPE_SLAVE_ITVL_RANGE; + data[2] = min; + data[3] = min >> 8; + data[4] = max; + data[5] = max >> 8; + addData(data, 6); +} // setPreferredParams + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER && CONFIG_BT_NIMBLE_EXT_ADV */ diff --git a/lib/NimBLE-Arduino/src/NimBLEExtAdvertising.h b/lib/esp-nimble-cpp/src/NimBLEExtAdvertising.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEExtAdvertising.h rename to lib/esp-nimble-cpp/src/NimBLEExtAdvertising.h diff --git a/lib/esp-nimble-cpp/src/NimBLEHIDDevice.cpp b/lib/esp-nimble-cpp/src/NimBLEHIDDevice.cpp new file mode 100644 index 0000000..12c14de --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEHIDDevice.cpp @@ -0,0 +1,265 @@ +/* + * NimBLEHIDDevice.cpp + * + * Created: on Oct 06 2020 + * Author wakwak-koba + * + * Originally: + * + * BLEHIDDevice.cpp + * + * Created on: Jan 03, 2018 + * Author: chegewara + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLEHIDDevice.h" +#include "NimBLE2904.h" + +/** + * @brief Construct a default NimBLEHIDDevice object. + * @param [in] server A pointer to the server instance this HID Device will use. + */ +NimBLEHIDDevice::NimBLEHIDDevice(NimBLEServer* server) { + /* + * Here we create mandatory services described in bluetooth specification + */ + m_deviceInfoService = server->createService(NimBLEUUID((uint16_t)0x180a)); + m_hidService = server->createService(NimBLEUUID((uint16_t)0x1812)); + m_batteryService = server->createService(NimBLEUUID((uint16_t)0x180f)); + + /* + * Mandatory characteristic for device info service + */ + m_pnpCharacteristic = m_deviceInfoService->createCharacteristic((uint16_t)0x2a50, NIMBLE_PROPERTY::READ); + + /* + * Non-mandatory characteristics for device info service + * Will be created on demand + */ + m_manufacturerCharacteristic = nullptr; + + /* + * Mandatory characteristics for HID service + */ + m_hidInfoCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4a, NIMBLE_PROPERTY::READ); + m_reportMapCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4b, NIMBLE_PROPERTY::READ); + m_hidControlCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4c, NIMBLE_PROPERTY::WRITE_NR); + m_protocolModeCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4e, NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::READ); + + /* + * Mandatory battery level characteristic with notification and presence descriptor + */ + m_batteryLevelCharacteristic = m_batteryService->createCharacteristic((uint16_t)0x2a19, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY); + NimBLE2904 *batteryLevelDescriptor = (NimBLE2904*)m_batteryLevelCharacteristic->createDescriptor((uint16_t)0x2904); + batteryLevelDescriptor->setFormat(NimBLE2904::FORMAT_UINT8); + batteryLevelDescriptor->setNamespace(1); + batteryLevelDescriptor->setUnit(0x27ad); + + /* + * This value is setup here because its default value in most usage cases, its very rare to use boot mode + * and we want to simplify library using as much as possible + */ + const uint8_t pMode[] = {0x01}; + protocolMode()->setValue((uint8_t*)pMode, 1); +} + +NimBLEHIDDevice::~NimBLEHIDDevice() { +} + +/** + * @brief Set the report map data formatting information. + * @param [in] map A pointer to an array with the values to set. + * @param [in] size The number of values in the array. + */ +void NimBLEHIDDevice::reportMap(uint8_t* map, uint16_t size) { + m_reportMapCharacteristic->setValue(map, size); +} + +/** + * @brief Start the HID device services.\n + * This function called when all the services have been created. + */ +void NimBLEHIDDevice::startServices() { + m_deviceInfoService->start(); + m_hidService->start(); + m_batteryService->start(); +} + +/** + * @brief Create a manufacturer characteristic (this characteristic is optional). + */ +NimBLECharacteristic* NimBLEHIDDevice::manufacturer() { + if (m_manufacturerCharacteristic == nullptr) { + m_manufacturerCharacteristic = m_deviceInfoService->createCharacteristic((uint16_t)0x2a29, NIMBLE_PROPERTY::READ); + } + + return m_manufacturerCharacteristic; +} + +/** + * @brief Set manufacturer name + * @param [in] name The manufacturer name of this HID device. + */ +void NimBLEHIDDevice::manufacturer(std::string name) { + manufacturer()->setValue(name); +} + +/** + * @brief Sets the Plug n Play characteristic value. + * @param [in] sig The vendor ID source number. + * @param [in] vid The vendor ID number. + * @param [in] pid The product ID number. + * @param [in] version The produce version number. + */ +void NimBLEHIDDevice::pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version) { + uint8_t pnp[] = { + sig, + ((uint8_t*)&vid)[0], + ((uint8_t*)&vid)[1], + ((uint8_t*)&pid)[0], + ((uint8_t*)&pid)[1], + ((uint8_t*)&version)[0], + ((uint8_t*)&version)[1] + }; + m_pnpCharacteristic->setValue(pnp, sizeof(pnp)); +} + +/** + * @brief Sets the HID Information characteristic value. + * @param [in] country The country code for the device. + * @param [in] flags The HID Class Specification release number to use. + */ +void NimBLEHIDDevice::hidInfo(uint8_t country, uint8_t flags) { + uint8_t info[] = {0x11, 0x1, country, flags}; + m_hidInfoCharacteristic->setValue(info, sizeof(info)); +} + +/** + * @brief Create input report characteristic + * @param [in] reportID input report ID, the same as in report map for input object related to the characteristic + * @return pointer to new input report characteristic + */ +NimBLECharacteristic* NimBLEHIDDevice::inputReport(uint8_t reportID) { + NimBLECharacteristic *inputReportCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4d, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ_ENC); + NimBLEDescriptor *inputReportDescriptor = inputReportCharacteristic->createDescriptor((uint16_t)0x2908, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC); + + uint8_t desc1_val[] = {reportID, 0x01}; + inputReportDescriptor->setValue((uint8_t*)desc1_val, 2); + + return inputReportCharacteristic; +} + +/** + * @brief Create output report characteristic + * @param [in] reportID Output report ID, the same as in report map for output object related to the characteristic + * @return Pointer to new output report characteristic + */ +NimBLECharacteristic* NimBLEHIDDevice::outputReport(uint8_t reportID) { + NimBLECharacteristic *outputReportCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4d, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC); + NimBLEDescriptor *outputReportDescriptor = outputReportCharacteristic->createDescriptor((uint16_t)0x2908, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC); + + uint8_t desc1_val[] = {reportID, 0x02}; + outputReportDescriptor->setValue((uint8_t*)desc1_val, 2); + + return outputReportCharacteristic; +} + +/** + * @brief Create feature report characteristic. + * @param [in] reportID Feature report ID, the same as in report map for feature object related to the characteristic + * @return Pointer to new feature report characteristic + */ +NimBLECharacteristic* NimBLEHIDDevice::featureReport(uint8_t reportID) { + NimBLECharacteristic *featureReportCharacteristic = m_hidService->createCharacteristic((uint16_t)0x2a4d, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC); + NimBLEDescriptor *featureReportDescriptor = featureReportCharacteristic->createDescriptor((uint16_t)0x2908, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC); + + uint8_t desc1_val[] = {reportID, 0x03}; + featureReportDescriptor->setValue((uint8_t*)desc1_val, 2); + + return featureReportCharacteristic; +} + +/** + * @brief Creates a keyboard boot input report characteristic + */ +NimBLECharacteristic* NimBLEHIDDevice::bootInput() { + return m_hidService->createCharacteristic((uint16_t)0x2a22, NIMBLE_PROPERTY::NOTIFY); +} + +/** + * @brief Create a keyboard boot output report characteristic + */ +NimBLECharacteristic* NimBLEHIDDevice::bootOutput() { + return m_hidService->createCharacteristic((uint16_t)0x2a32, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR); +} + +/** + * @brief Returns a pointer to the HID control point characteristic. + */ +NimBLECharacteristic* NimBLEHIDDevice::hidControl() { + return m_hidControlCharacteristic; +} + +/** + * @brief Returns a pointer to the protocol mode characteristic. + */ +NimBLECharacteristic* NimBLEHIDDevice::protocolMode() { + return m_protocolModeCharacteristic; +} + +/** + * @brief Set the battery level characteristic value. + * @param [in] level The battery level value. + */ +void NimBLEHIDDevice::setBatteryLevel(uint8_t level) { + m_batteryLevelCharacteristic->setValue(&level, 1); +} +/* + * @brief Returns battery level characteristic + * @ return battery level characteristic + */ +NimBLECharacteristic* NimBLEHIDDevice::batteryLevel() { + return m_batteryLevelCharacteristic; +} + +/* + +BLECharacteristic* BLEHIDDevice::reportMap() { + return m_reportMapCharacteristic; +} + +BLECharacteristic* BLEHIDDevice::pnp() { + return m_pnpCharacteristic; +} + + +BLECharacteristic* BLEHIDDevice::hidInfo() { + return m_hidInfoCharacteristic; +} +*/ + +/** + * @brief Returns a pointer to the device information service. + */ +NimBLEService* NimBLEHIDDevice::deviceInfo() { + return m_deviceInfoService; +} + +/** + * @brief Returns a pointer to the HID service. + */ +NimBLEService* NimBLEHIDDevice::hidService() { + return m_hidService; +} + +/** + * @brief @brief Returns a pointer to the battery service. + */ +NimBLEService* NimBLEHIDDevice::batteryService() { + return m_batteryService; +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLEHIDDevice.h b/lib/esp-nimble-cpp/src/NimBLEHIDDevice.h new file mode 100644 index 0000000..6461a4f --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEHIDDevice.h @@ -0,0 +1,87 @@ +/* + * NimBLEHIDDevice.h + * + * Created: on Oct 06 2020 + * Author wakwak-koba + * + * Originally: + * + * BLEHIDDevice.h + * + * Created on: Jan 03, 2018 + * Author: chegewara + */ + +#ifndef _BLEHIDDEVICE_H_ +#define _BLEHIDDEVICE_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) + +#include "NimBLECharacteristic.h" +#include "NimBLEService.h" +#include "NimBLEDescriptor.h" +#include "HIDTypes.h" + +#define GENERIC_HID 0x03C0 +#define HID_KEYBOARD 0x03C1 +#define HID_MOUSE 0x03C2 +#define HID_JOYSTICK 0x03C3 +#define HID_GAMEPAD 0x03C4 +#define HID_TABLET 0x03C5 +#define HID_CARD_READER 0x03C6 +#define HID_DIGITAL_PEN 0x03C7 +#define HID_BARCODE 0x03C8 + +#define PNPVersionField(MajorVersion, MinorVersion, PatchVersion) ((MajorVersion << 16) & 0xFF00) | ((MinorVersion << 8) & 0x00F0) | (PatchVersion & 0x000F) + +/** + * @brief A model of a %BLE Human Interface Device. + */ +class NimBLEHIDDevice { +public: + NimBLEHIDDevice(NimBLEServer*); + virtual ~NimBLEHIDDevice(); + + void reportMap(uint8_t* map, uint16_t); + void startServices(); + + NimBLEService* deviceInfo(); + NimBLEService* hidService(); + NimBLEService* batteryService(); + + NimBLECharacteristic* manufacturer(); + void manufacturer(std::string name); + //NimBLECharacteristic* pnp(); + void pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version); + //NimBLECharacteristic* hidInfo(); + void hidInfo(uint8_t country, uint8_t flags); + NimBLECharacteristic* batteryLevel(); + void setBatteryLevel(uint8_t level); + + + //NimBLECharacteristic* reportMap(); + NimBLECharacteristic* hidControl(); + NimBLECharacteristic* inputReport(uint8_t reportID); + NimBLECharacteristic* outputReport(uint8_t reportID); + NimBLECharacteristic* featureReport(uint8_t reportID); + NimBLECharacteristic* protocolMode(); + NimBLECharacteristic* bootInput(); + NimBLECharacteristic* bootOutput(); + +private: + NimBLEService* m_deviceInfoService; //0x180a + NimBLEService* m_hidService; //0x1812 + NimBLEService* m_batteryService = 0; //0x180f + + NimBLECharacteristic* m_manufacturerCharacteristic; //0x2a29 + NimBLECharacteristic* m_pnpCharacteristic; //0x2a50 + NimBLECharacteristic* m_hidInfoCharacteristic; //0x2a4a + NimBLECharacteristic* m_reportMapCharacteristic; //0x2a4b + NimBLECharacteristic* m_hidControlCharacteristic; //0x2a4c + NimBLECharacteristic* m_protocolModeCharacteristic; //0x2a4e + NimBLECharacteristic* m_batteryLevelCharacteristic; //0x2a19 +}; + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER */ +#endif /* _BLEHIDDEVICE_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLELog.h b/lib/esp-nimble-cpp/src/NimBLELog.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLELog.h rename to lib/esp-nimble-cpp/src/NimBLELog.h diff --git a/lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.cpp b/lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.cpp new file mode 100644 index 0000000..35c191d --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.cpp @@ -0,0 +1,806 @@ +/* + * NimBLERemoteCharacteristic.cpp + * + * Created: on Jan 27 2020 + * Author H2zero + * + * Originally: + * + * BLERemoteCharacteristic.cpp + * + * Created on: Mar 16, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLERemoteCharacteristic.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLERemoteCharacteristic"; + +/** + * @brief Constructor. + * @param [in] reference to the service this characteristic belongs to. + * @param [in] ble_gatt_chr struct defined as: + * struct ble_gatt_chr { + * uint16_t def_handle; + * uint16_t val_handle; + * uint8_t properties; + * ble_uuid_any_t uuid; + * }; + */ + NimBLERemoteCharacteristic::NimBLERemoteCharacteristic(NimBLERemoteService *pRemoteService, + const struct ble_gatt_chr *chr) +{ + NIMBLE_LOGD(LOG_TAG, ">> NimBLERemoteCharacteristic()"); + switch (chr->uuid.u.type) { + case BLE_UUID_TYPE_16: + m_uuid = NimBLEUUID(chr->uuid.u16.value); + break; + case BLE_UUID_TYPE_32: + m_uuid = NimBLEUUID(chr->uuid.u32.value); + break; + case BLE_UUID_TYPE_128: + m_uuid = NimBLEUUID(const_cast(&chr->uuid.u128)); + break; + default: + break; + } + + m_handle = chr->val_handle; + m_defHandle = chr->def_handle; + m_endHandle = 0; + m_charProp = chr->properties; + m_pRemoteService = pRemoteService; + m_notifyCallback = nullptr; + + NIMBLE_LOGD(LOG_TAG, "<< NimBLERemoteCharacteristic(): %s", m_uuid.toString().c_str()); + } // NimBLERemoteCharacteristic + + +/** + *@brief Destructor. + */ +NimBLERemoteCharacteristic::~NimBLERemoteCharacteristic() { + deleteDescriptors(); +} // ~NimBLERemoteCharacteristic + +/* +#define BLE_GATT_CHR_PROP_BROADCAST 0x01 +#define BLE_GATT_CHR_PROP_READ 0x02 +#define BLE_GATT_CHR_PROP_WRITE_NO_RSP 0x04 +#define BLE_GATT_CHR_PROP_WRITE 0x08 +#define BLE_GATT_CHR_PROP_NOTIFY 0x10 +#define BLE_GATT_CHR_PROP_INDICATE 0x20 +#define BLE_GATT_CHR_PROP_AUTH_SIGN_WRITE 0x40 +#define BLE_GATT_CHR_PROP_EXTENDED 0x80 +*/ + +/** + * @brief Does the characteristic support broadcasting? + * @return True if the characteristic supports broadcasting. + */ +bool NimBLERemoteCharacteristic::canBroadcast() { + return (m_charProp & BLE_GATT_CHR_PROP_BROADCAST) != 0; +} // canBroadcast + + +/** + * @brief Does the characteristic support indications? + * @return True if the characteristic supports indications. + */ +bool NimBLERemoteCharacteristic::canIndicate() { + return (m_charProp & BLE_GATT_CHR_PROP_INDICATE) != 0; +} // canIndicate + + +/** + * @brief Does the characteristic support notifications? + * @return True if the characteristic supports notifications. + */ +bool NimBLERemoteCharacteristic::canNotify() { + return (m_charProp & BLE_GATT_CHR_PROP_NOTIFY) != 0; +} // canNotify + + +/** + * @brief Does the characteristic support reading? + * @return True if the characteristic supports reading. + */ +bool NimBLERemoteCharacteristic::canRead() { + return (m_charProp & BLE_GATT_CHR_PROP_READ) != 0; +} // canRead + + +/** + * @brief Does the characteristic support writing? + * @return True if the characteristic supports writing. + */ +bool NimBLERemoteCharacteristic::canWrite() { + return (m_charProp & BLE_GATT_CHR_PROP_WRITE) != 0; +} // canWrite + + +/** + * @brief Does the characteristic support writing with no response? + * @return True if the characteristic supports writing with no response. + */ +bool NimBLERemoteCharacteristic::canWriteNoResponse() { + return (m_charProp & BLE_GATT_CHR_PROP_WRITE_NO_RSP) != 0; +} // canWriteNoResponse + + +/** + * @brief Callback used by the API when a descriptor is discovered or search complete. + */ +int NimBLERemoteCharacteristic::descriptorDiscCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + uint16_t chr_val_handle, + const struct ble_gatt_dsc *dsc, + void *arg) +{ + int rc = error->status; + NIMBLE_LOGD(LOG_TAG, "Descriptor Discovered >> status: %d handle: %d", + rc, (rc == 0) ? dsc->handle : -1); + + desc_filter_t *filter = (desc_filter_t*)arg; + const NimBLEUUID *uuid_filter = filter->uuid; + ble_task_data_t *pTaskData = (ble_task_data_t*)filter->task_data; + NimBLERemoteCharacteristic *characteristic = (NimBLERemoteCharacteristic*)pTaskData->pATT; + + if (characteristic->getRemoteService()->getClient()->getConnId() != conn_handle){ + return 0; + } + + switch (rc) { + case 0: { + if (uuid_filter != nullptr) { + if (ble_uuid_cmp(&uuid_filter->getNative()->u, &dsc->uuid.u) != 0) { + return 0; + } else { + rc = BLE_HS_EDONE; + } + } + + NimBLERemoteDescriptor* pNewRemoteDescriptor = new NimBLERemoteDescriptor(characteristic, dsc); + characteristic->m_descriptorVector.push_back(pNewRemoteDescriptor); + break; + } + default: + break; + } + + /* If rc == BLE_HS_EDONE, resume the task with a success error code and stop the discovery process. + * Else if rc == 0, just return 0 to continue the discovery until we get BLE_HS_EDONE. + * If we get any other error code tell the application to abort by returning non-zero in the rc. + */ + if (rc == BLE_HS_EDONE) { + pTaskData->rc = 0; + xTaskNotifyGive(pTaskData->task); + } else if(rc != 0) { + // Error; abort discovery. + pTaskData->rc = rc; + xTaskNotifyGive(pTaskData->task); + } + + NIMBLE_LOGD(LOG_TAG,"<< Descriptor Discovered. status: %d", pTaskData->rc); + return rc; +} + + +/** + * @brief callback from NimBLE when the next characteristic of the service is discovered. + */ +int NimBLERemoteCharacteristic::nextCharCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, void *arg) +{ + int rc = error->status; + NIMBLE_LOGD(LOG_TAG, "Next Characteristic >> status: %d handle: %d", + rc, (rc == 0) ? chr->val_handle : -1); + + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteCharacteristic *pChar = (NimBLERemoteCharacteristic*)pTaskData->pATT; + + if (pChar->getRemoteService()->getClient()->getConnId() != conn_handle) { + return 0; + } + + if (rc == 0) { + pChar->m_endHandle = chr->def_handle - 1; + rc = BLE_HS_EDONE; + } else if (rc == BLE_HS_EDONE) { + pChar->m_endHandle = pChar->getRemoteService()->getEndHandle(); + } else { + pTaskData->rc = rc; + } + + xTaskNotifyGive(pTaskData->task); + return rc; +} + + +/** + * @brief Populate the descriptors (if any) for this characteristic. + * @param [in] the end handle of the characteristic, or the service, whichever comes first. + */ +bool NimBLERemoteCharacteristic::retrieveDescriptors(const NimBLEUUID *uuid_filter) { + NIMBLE_LOGD(LOG_TAG, ">> retrieveDescriptors() for characteristic: %s", getUUID().toString().c_str()); + + // If this is the last handle then there are no descriptors + if (m_handle == getRemoteService()->getEndHandle()) { + return true; + } + + int rc = 0; + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + + // If we don't know the end handle of this characteristic retrieve the next one in the service + // The end handle is the next characteristic definition handle -1. + if (m_endHandle == 0) { + rc = ble_gattc_disc_all_chrs(getRemoteService()->getClient()->getConnId(), + m_handle, + getRemoteService()->getEndHandle(), + NimBLERemoteCharacteristic::nextCharCB, + &taskData); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error getting end handle rc=%d", rc); + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + + if (taskData.rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Could not retrieve end handle rc=%d", taskData.rc); + return false; + } + } + + if (m_handle == m_endHandle) { + return true; + } + + desc_filter_t filter = {uuid_filter, &taskData}; + + rc = ble_gattc_disc_all_dscs(getRemoteService()->getClient()->getConnId(), + m_handle, + m_endHandle, + NimBLERemoteCharacteristic::descriptorDiscCB, + &filter); + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_dscs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + + if (taskData.rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed to retrieve descriptors; startHandle:%d endHandle:%d taskData.rc=%d", + m_handle, m_endHandle, taskData.rc); + } + + NIMBLE_LOGD(LOG_TAG, "<< retrieveDescriptors(): Found %d descriptors.", m_descriptorVector.size()); + return (taskData.rc == 0); +} // retrieveDescriptors + + +/** + * @brief Get the descriptor instance with the given UUID that belongs to this characteristic. + * @param [in] uuid The UUID of the descriptor to find. + * @return The Remote descriptor (if present) or null if not present. + */ +NimBLERemoteDescriptor* NimBLERemoteCharacteristic::getDescriptor(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> getDescriptor: uuid: %s", uuid.toString().c_str()); + + for(auto &it: m_descriptorVector) { + if(it->getUUID() == uuid) { + NIMBLE_LOGD(LOG_TAG, "<< getDescriptor: found the descriptor with uuid: %s", uuid.toString().c_str()); + return it; + } + } + + size_t prev_size = m_descriptorVector.size(); + if(retrieveDescriptors(&uuid)) { + if(m_descriptorVector.size() > prev_size) { + return m_descriptorVector.back(); + } + + // If the request was successful but 16/32 bit uuid not found + // try again with the 128 bit uuid. + if(uuid.bitSize() == BLE_UUID_TYPE_16 || + uuid.bitSize() == BLE_UUID_TYPE_32) + { + NimBLEUUID uuid128(uuid); + uuid128.to128(); + if(retrieveDescriptors(&uuid128)) { + if(m_descriptorVector.size() > prev_size) { + return m_descriptorVector.back(); + } + } + } else { + // If the request was successful but the 128 bit uuid not found + // try again with the 16 bit uuid. + NimBLEUUID uuid16(uuid); + uuid16.to16(); + // if the uuid was 128 bit but not of the BLE base type this check will fail + if (uuid16.bitSize() == BLE_UUID_TYPE_16) { + if(retrieveDescriptors(&uuid16)) { + if(m_descriptorVector.size() > prev_size) { + return m_descriptorVector.back(); + } + } + } + } + } + + NIMBLE_LOGD(LOG_TAG, "<< getDescriptor: Not found"); + return nullptr; +} // getDescriptor + + +/** + * @brief Get a pointer to the vector of found descriptors. + * @param [in] refresh If true the current descriptor vector will be cleared and\n + * all descriptors for this characteristic retrieved from the peripheral.\n + * If false the vector will be returned with the currently stored descriptors + * of this characteristic. + * @return A pointer to the vector of descriptors for this characteristic. + */ +std::vector* NimBLERemoteCharacteristic::getDescriptors(bool refresh) { + if(refresh) { + deleteDescriptors(); + + if (!retrieveDescriptors()) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to get descriptors"); + } + else{ + NIMBLE_LOGI(LOG_TAG, "Found %d descriptor(s)", m_descriptorVector.size()); + } + } + return &m_descriptorVector; +} // getDescriptors + + +/** + * @brief Get iterator to the beginning of the vector of remote descriptor pointers. + * @return An iterator to the beginning of the vector of remote descriptor pointers. + */ +std::vector::iterator NimBLERemoteCharacteristic::begin() { + return m_descriptorVector.begin(); +} + + +/** + * @brief Get iterator to the end of the vector of remote descriptor pointers. + * @return An iterator to the end of the vector of remote descriptor pointers. + */ +std::vector::iterator NimBLERemoteCharacteristic::end() { + return m_descriptorVector.end(); +} + + +/** + * @brief Get the handle for this characteristic. + * @return The handle for this characteristic. + */ +uint16_t NimBLERemoteCharacteristic::getHandle() { + return m_handle; +} // getHandle + +/** + * @brief Get the handle for this characteristics definition. + * @return The handle for this characteristic definition. + */ +uint16_t NimBLERemoteCharacteristic::getDefHandle() { + return m_defHandle; +} // getDefHandle + + +/** + * @brief Get the remote service associated with this characteristic. + * @return The remote service associated with this characteristic. + */ +NimBLERemoteService* NimBLERemoteCharacteristic::getRemoteService() { + return m_pRemoteService; +} // getRemoteService + + +/** + * @brief Get the UUID for this characteristic. + * @return The UUID for this characteristic. + */ +NimBLEUUID NimBLERemoteCharacteristic::getUUID() { + return m_uuid; +} // getUUID + + +/** + * @brief Get the value of the remote characteristic. + * @param [in] timestamp A pointer to a time_t struct to store the time the value was read. + * @return The value of the remote characteristic. + */ +NimBLEAttValue NimBLERemoteCharacteristic::getValue(time_t *timestamp) { + if(timestamp != nullptr) { + *timestamp = m_value.getTimeStamp(); + } + + return m_value; +} // getValue + + +/** + * @brief Read the value of the remote characteristic. + * @param [in] timestamp A pointer to a time_t struct to store the time the value was read. + * @return The value of the remote characteristic. + */ +NimBLEAttValue NimBLERemoteCharacteristic::readValue(time_t *timestamp) { + NIMBLE_LOGD(LOG_TAG, ">> readValue(): uuid: %s, handle: %d 0x%.2x", + getUUID().toString().c_str(), getHandle(), getHandle()); + + NimBLEClient* pClient = getRemoteService()->getClient(); + NimBLEAttValue value; + + if (!pClient->isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Disconnected"); + return value; + } + + int rc = 0; + int retryCount = 1; + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, &value}; + + do { + rc = ble_gattc_read_long(pClient->getConnId(), m_handle, 0, + NimBLERemoteCharacteristic::onReadCB, + &taskData); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to read characteristic; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + return value; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + rc = taskData.rc; + + switch(rc){ + case 0: + case BLE_HS_EDONE: + rc = 0; + break; + // Characteristic is not long-readable, return with what we have. + case BLE_HS_ATT_ERR(BLE_ATT_ERR_ATTR_NOT_LONG): + NIMBLE_LOGI(LOG_TAG, "Attribute not long"); + rc = 0; + break; + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHEN): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHOR): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_ENC): + if (retryCount && pClient->secureConnection()) + break; + /* Else falls through. */ + default: + NIMBLE_LOGE(LOG_TAG, "<< readValue rc=%d", rc); + return value; + } + } while(rc != 0 && retryCount--); + + value.setTimeStamp(); + m_value = value; + if(timestamp != nullptr) { + *timestamp = value.getTimeStamp(); + } + + NIMBLE_LOGD(LOG_TAG, "<< readValue length: %d rc=%d", value.length(), rc); + return value; +} // readValue + + +/** + * @brief Callback for characteristic read operation. + * @return success == 0 or error code. + */ +int NimBLERemoteCharacteristic::onReadCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg) +{ + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteCharacteristic *characteristic = (NimBLERemoteCharacteristic*)pTaskData->pATT; + uint16_t conn_id = characteristic->getRemoteService()->getClient()->getConnId(); + + if(conn_id != conn_handle) { + return 0; + } + + NIMBLE_LOGI(LOG_TAG, "Read complete; status=%d conn_handle=%d", error->status, conn_handle); + + NimBLEAttValue *valBuf = (NimBLEAttValue*)pTaskData->buf; + int rc = error->status; + + if(rc == 0) { + if(attr) { + uint16_t data_len = OS_MBUF_PKTLEN(attr->om); + if((valBuf->size() + data_len) > BLE_ATT_ATTR_MAX_LEN) { + rc = BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } else { + NIMBLE_LOGD(LOG_TAG, "Got %u bytes", data_len); + valBuf->append(attr->om->om_data, data_len); + return 0; + } + } + } + + pTaskData->rc = rc; + xTaskNotifyGive(pTaskData->task); + + return rc; +} // onReadCB + + +/** + * @brief Subscribe or unsubscribe for notifications or indications. + * @param [in] val 0x00 to unsubscribe, 0x01 for notifications, 0x02 for indications. + * @param [in] notifyCallback A callback to be invoked for a notification. + * @param [in] response If write response required set this to true. + * If NULL is provided then no callback is performed. + * @return false if writing to the descriptor failed. + */ +bool NimBLERemoteCharacteristic::setNotify(uint16_t val, notify_callback notifyCallback, bool response) { + NIMBLE_LOGD(LOG_TAG, ">> setNotify(): %s, %02x", toString().c_str(), val); + + m_notifyCallback = notifyCallback; + + NimBLERemoteDescriptor* desc = getDescriptor(NimBLEUUID((uint16_t)0x2902)); + if(desc == nullptr) { + NIMBLE_LOGW(LOG_TAG, "<< setNotify(): Callback set, CCCD not found"); + return true; + } + + NIMBLE_LOGD(LOG_TAG, "<< setNotify()"); + + return desc->writeValue((uint8_t *)&val, 2, response); +} // setNotify + + +/** + * @brief Subscribe for notifications or indications. + * @param [in] notifications If true, subscribe for notifications, false subscribe for indications. + * @param [in] notifyCallback A callback to be invoked for a notification. + * @param [in] response If true, require a write response from the descriptor write operation. + * If NULL is provided then no callback is performed. + * @return false if writing to the descriptor failed. + */ +bool NimBLERemoteCharacteristic::subscribe(bool notifications, notify_callback notifyCallback, bool response) { + if(notifications) { + return setNotify(0x01, notifyCallback, response); + } else { + return setNotify(0x02, notifyCallback, response); + } +} // subscribe + + +/** + * @brief Unsubscribe for notifications or indications. + * @param [in] response bool if true, require a write response from the descriptor write operation. + * @return false if writing to the descriptor failed. + */ +bool NimBLERemoteCharacteristic::unsubscribe(bool response) { + return setNotify(0x00, nullptr, response); +} // unsubscribe + + +/** + * @brief Delete the descriptors in the descriptor vector. + * @details We maintain a vector called m_descriptorVector that contains pointers to NimBLERemoteDescriptors + * object references. Since we allocated these in this class, we are also responsible for deleting + * them. This method does just that. + */ +void NimBLERemoteCharacteristic::deleteDescriptors() { + NIMBLE_LOGD(LOG_TAG, ">> deleteDescriptors"); + + for(auto &it: m_descriptorVector) { + delete it; + } + m_descriptorVector.clear(); + NIMBLE_LOGD(LOG_TAG, "<< deleteDescriptors"); +} // deleteDescriptors + + +/** + * @brief Delete descriptor by UUID + * @param [in] uuid The UUID of the descriptor to be deleted. + * @return Number of descriptors left in the vector. + */ +size_t NimBLERemoteCharacteristic::deleteDescriptor(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> deleteDescriptor"); + + for(auto it = m_descriptorVector.begin(); it != m_descriptorVector.end(); ++it) { + if((*it)->getUUID() == uuid) { + delete *it; + m_descriptorVector.erase(it); + break; + } + } + + NIMBLE_LOGD(LOG_TAG, "<< deleteDescriptor"); + + return m_descriptorVector.size(); +} // deleteDescriptor + + +/** + * @brief Convert a NimBLERemoteCharacteristic to a string representation; + * @return a String representation. + */ +std::string NimBLERemoteCharacteristic::toString() { + std::string res = "Characteristic: uuid: " + m_uuid.toString(); + char val[6]; + res += ", handle: "; + snprintf(val, sizeof(val), "%d", getHandle()); + res += val; + res += " 0x"; + snprintf(val, sizeof(val), "%04x", getHandle()); + res += val; + res += ", props: "; + res += " 0x"; + snprintf(val, sizeof(val), "%02x", m_charProp); + res += val; + + for(auto &it: m_descriptorVector) { + res += "\n" + it->toString(); + } + + return res; +} // toString + + +/** + * @brief Write a new value to the remote characteristic from a std::vector. + * @param [in] vec A std::vector value to write to the remote characteristic. + * @param [in] response Whether we require a response from the write. + * @return false if not connected or otherwise cannot perform write. + */ +bool NimBLERemoteCharacteristic::writeValue(const std::vector& vec, bool response) { + return writeValue((uint8_t*)&vec[0], vec.size(), response); +} // writeValue + + +/** + * @brief Write a new value to the remote characteristic from a const char*. + * @param [in] char_s A character string to write to the remote characteristic. + * @param [in] response Whether we require a response from the write. + * @return false if not connected or otherwise cannot perform write. + */ +bool NimBLERemoteCharacteristic::writeValue(const char* char_s, bool response) { + return writeValue((uint8_t*)char_s, strlen(char_s), response); +} // writeValue + + +/** + * @brief Write a new value to the remote characteristic from a data buffer. + * @param [in] data A pointer to a data buffer. + * @param [in] length The length of the data in the data buffer. + * @param [in] response Whether we require a response from the write. + * @return false if not connected or otherwise cannot perform write. + */ +bool NimBLERemoteCharacteristic::writeValue(const uint8_t* data, size_t length, bool response) { + + NIMBLE_LOGD(LOG_TAG, ">> writeValue(), length: %d", length); + + NimBLEClient* pClient = getRemoteService()->getClient(); + + if (!pClient->isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Disconnected"); + return false; + } + + int rc = 0; + int retryCount = 1; + uint16_t mtu = ble_att_mtu(pClient->getConnId()) - 3; + + // Check if the data length is longer than we can write in one connection event. + // If so we must do a long write which requires a response. + if(length <= mtu && !response) { + rc = ble_gattc_write_no_rsp_flat(pClient->getConnId(), m_handle, data, length); + return (rc==0); + } + + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + + do { + if(length > mtu) { + NIMBLE_LOGI(LOG_TAG,"long write %d bytes", length); + os_mbuf *om = ble_hs_mbuf_from_flat(data, length); + rc = ble_gattc_write_long(pClient->getConnId(), m_handle, 0, om, + NimBLERemoteCharacteristic::onWriteCB, + &taskData); + } else { + rc = ble_gattc_write_flat(pClient->getConnId(), m_handle, + data, length, + NimBLERemoteCharacteristic::onWriteCB, + &taskData); + } + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to write characteristic; rc=%d", rc); + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + rc = taskData.rc; + + switch(rc){ + case 0: + case BLE_HS_EDONE: + rc = 0; + break; + case BLE_HS_ATT_ERR(BLE_ATT_ERR_ATTR_NOT_LONG): + NIMBLE_LOGE(LOG_TAG, "Long write not supported by peer; Truncating length to %d", mtu); + retryCount++; + length = mtu; + break; + + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHEN): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHOR): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_ENC): + if (retryCount && pClient->secureConnection()) + break; + /* Else falls through. */ + default: + NIMBLE_LOGE(LOG_TAG, "<< writeValue, rc: %d", rc); + return false; + } + } while(rc != 0 && retryCount--); + + NIMBLE_LOGD(LOG_TAG, "<< writeValue, rc: %d", rc); + return (rc == 0); +} // writeValue + + +/** + * @brief Callback for characteristic write operation. + * @return success == 0 or error code. + */ +int NimBLERemoteCharacteristic::onWriteCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg) +{ + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteCharacteristic *characteristic = (NimBLERemoteCharacteristic*)pTaskData->pATT; + + if(characteristic->getRemoteService()->getClient()->getConnId() != conn_handle){ + return 0; + } + + NIMBLE_LOGI(LOG_TAG, "Write complete; status=%d conn_handle=%d", error->status, conn_handle); + + pTaskData->rc = error->status; + xTaskNotifyGive(pTaskData->task); + + return 0; +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.h b/lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.h new file mode 100644 index 0000000..a0f8f55 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.h @@ -0,0 +1,180 @@ +/* + * NimBLERemoteCharacteristic.h + * + * Created: on Jan 27 2020 + * Author H2zero + * + * Originally: + * + * BLERemoteCharacteristic.h + * + * Created on: Jul 8, 2017 + * Author: kolban + */ + +#ifndef COMPONENTS_NIMBLEREMOTECHARACTERISTIC_H_ +#define COMPONENTS_NIMBLEREMOTECHARACTERISTIC_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLERemoteService.h" +#include "NimBLERemoteDescriptor.h" + +#include +#include +#include "NimBLELog.h" + +class NimBLERemoteService; +class NimBLERemoteDescriptor; + + +typedef std::function notify_callback; + +typedef struct { + const NimBLEUUID *uuid; + void *task_data; +} desc_filter_t; + + +/** + * @brief A model of a remote %BLE characteristic. + */ +class NimBLERemoteCharacteristic { +public: + ~NimBLERemoteCharacteristic(); + + // Public member functions + bool canBroadcast(); + bool canIndicate(); + bool canNotify(); + bool canRead(); + bool canWrite(); + bool canWriteNoResponse(); + std::vector::iterator begin(); + std::vector::iterator end(); + NimBLERemoteDescriptor* getDescriptor(const NimBLEUUID &uuid); + std::vector* getDescriptors(bool refresh = false); + void deleteDescriptors(); + size_t deleteDescriptor(const NimBLEUUID &uuid); + uint16_t getHandle(); + uint16_t getDefHandle(); + NimBLEUUID getUUID(); + NimBLEAttValue readValue(time_t *timestamp = nullptr); + std::string toString(); + NimBLERemoteService* getRemoteService(); + NimBLEAttValue getValue(time_t *timestamp = nullptr); + bool subscribe(bool notifications = true, + notify_callback notifyCallback = nullptr, + bool response = true); + bool unsubscribe(bool response = true); + bool writeValue(const uint8_t* data, + size_t length, + bool response = false); + bool writeValue(const std::vector& v, bool response = false); + bool writeValue(const char* s, bool response = false); + + + /*********************** Template Functions ************************/ + + /** + * @brief Template to set the remote characteristic value to val. + * @param [in] s The value to write. + * @param [in] response True == request write response. + * @details Only used for non-arrays and types without a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + bool +#else + typename std::enable_if::value && !Has_c_str_len::value, bool>::type +#endif + writeValue(const T& s, bool response = false) { + return writeValue((uint8_t*)&s, sizeof(T), response); + } + + /** + * @brief Template to set the remote characteristic value to val. + * @param [in] s The value to write. + * @param [in] response True == request write response. + * @details Only used if the has a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + bool +#else + typename std::enable_if::value, bool>::type +#endif + writeValue(const T& s, bool response = false) { + return writeValue((uint8_t*)s.c_str(), s.length(), response); + } + + /** + * @brief Template to convert the remote characteristic data to . + * @tparam T The type to convert the data to. + * @param [in] timestamp A pointer to a time_t struct to store the time the value was read. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is + * less than sizeof(). + * @details Use: getValue(×tamp, skipSizeCheck); + */ + template + T getValue(time_t *timestamp = nullptr, bool skipSizeCheck = false) { + if(!skipSizeCheck && m_value.size() < sizeof(T)) return T(); + return *((T *)m_value.getValue(timestamp)); + } + + /** + * @brief Template to convert the remote characteristic data to . + * @tparam T The type to convert the data to. + * @param [in] timestamp A pointer to a time_t struct to store the time the value was read. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is + * less than sizeof(). + * @details Use: readValue(×tamp, skipSizeCheck); + */ + template + T readValue(time_t *timestamp = nullptr, bool skipSizeCheck = false) { + NimBLEAttValue value = readValue(); + if(!skipSizeCheck && value.size() < sizeof(T)) return T(); + return *((T *)value.getValue(timestamp)); + } + +private: + + NimBLERemoteCharacteristic(NimBLERemoteService *pRemoteservice, const struct ble_gatt_chr *chr); + + friend class NimBLEClient; + friend class NimBLERemoteService; + friend class NimBLERemoteDescriptor; + + // Private member functions + bool setNotify(uint16_t val, notify_callback notifyCallback = nullptr, bool response = true); + bool retrieveDescriptors(const NimBLEUUID *uuid_filter = nullptr); + static int onReadCB(uint16_t conn_handle, const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg); + static int onWriteCB(uint16_t conn_handle, const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg); + static int descriptorDiscCB(uint16_t conn_handle, const struct ble_gatt_error *error, + uint16_t chr_val_handle, const struct ble_gatt_dsc *dsc, + void *arg); + static int nextCharCB(uint16_t conn_handle, const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, void *arg); + + // Private properties + NimBLEUUID m_uuid; + uint8_t m_charProp; + uint16_t m_handle; + uint16_t m_defHandle; + uint16_t m_endHandle; + NimBLERemoteService* m_pRemoteService; + NimBLEAttValue m_value; + notify_callback m_notifyCallback; + + // We maintain a vector of descriptors owned by this characteristic. + std::vector m_descriptorVector; +}; // NimBLERemoteCharacteristic + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ +#endif /* COMPONENTS_NIMBLEREMOTECHARACTERISTIC_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.cpp b/lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.cpp new file mode 100644 index 0000000..b4992f4 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.cpp @@ -0,0 +1,335 @@ +/* + * NimBLERemoteDescriptor.cpp + * + * Created: on Jan 27 2020 + * Author H2zero + * + * Originally: + * + * BLERemoteDescriptor.cpp + * + * Created on: Jul 8, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLERemoteDescriptor.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLERemoteDescriptor"; + +/** + * @brief Remote descriptor constructor. + * @param [in] pRemoteCharacteristic A pointer to the Characteristic that this belongs to. + * @param [in] dsc A pointer to the struct that contains the descriptor information. + */ +NimBLERemoteDescriptor::NimBLERemoteDescriptor(NimBLERemoteCharacteristic* pRemoteCharacteristic, + const struct ble_gatt_dsc *dsc) +{ + NIMBLE_LOGD(LOG_TAG, ">> NimBLERemoteDescriptor()"); + switch (dsc->uuid.u.type) { + case BLE_UUID_TYPE_16: + m_uuid = NimBLEUUID(dsc->uuid.u16.value); + break; + case BLE_UUID_TYPE_32: + m_uuid = NimBLEUUID(dsc->uuid.u32.value); + break; + case BLE_UUID_TYPE_128: + m_uuid = NimBLEUUID(const_cast(&dsc->uuid.u128)); + break; + default: + break; + } + + m_handle = dsc->handle; + m_pRemoteCharacteristic = pRemoteCharacteristic; + + NIMBLE_LOGD(LOG_TAG, "<< NimBLERemoteDescriptor(): %s", m_uuid.toString().c_str()); +} + + +/** + * @brief Retrieve the handle associated with this remote descriptor. + * @return The handle associated with this remote descriptor. + */ +uint16_t NimBLERemoteDescriptor::getHandle() { + return m_handle; +} // getHandle + + +/** + * @brief Get the characteristic that owns this descriptor. + * @return The characteristic that owns this descriptor. + */ +NimBLERemoteCharacteristic* NimBLERemoteDescriptor::getRemoteCharacteristic() { + return m_pRemoteCharacteristic; +} // getRemoteCharacteristic + + +/** + * @brief Retrieve the UUID associated this remote descriptor. + * @return The UUID associated this remote descriptor. + */ +NimBLEUUID NimBLERemoteDescriptor::getUUID() { + return m_uuid; +} // getUUID + + +/** + * @brief Read the value of the remote descriptor. + * @return The value of the remote descriptor. + */ +NimBLEAttValue NimBLERemoteDescriptor::readValue() { + NIMBLE_LOGD(LOG_TAG, ">> Descriptor readValue: %s", toString().c_str()); + + NimBLEClient* pClient = getRemoteCharacteristic()->getRemoteService()->getClient(); + NimBLEAttValue value; + + if (!pClient->isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Disconnected"); + return value; + } + + int rc = 0; + int retryCount = 1; + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, &value}; + + do { + rc = ble_gattc_read_long(pClient->getConnId(), m_handle, 0, + NimBLERemoteDescriptor::onReadCB, + &taskData); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to read descriptor; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + return value; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + rc = taskData.rc; + + switch(rc){ + case 0: + case BLE_HS_EDONE: + rc = 0; + break; + // Descriptor is not long-readable, return with what we have. + case BLE_HS_ATT_ERR(BLE_ATT_ERR_ATTR_NOT_LONG): + NIMBLE_LOGI(LOG_TAG, "Attribute not long"); + rc = 0; + break; + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHEN): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHOR): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_ENC): + if (retryCount && pClient->secureConnection()) + break; + /* Else falls through. */ + default: + return value; + } + } while(rc != 0 && retryCount--); + + NIMBLE_LOGD(LOG_TAG, "<< Descriptor readValue(): length: %u rc=%d", value.length(), rc); + return value; +} // readValue + + +/** + * @brief Callback for Descriptor read operation. + * @return success == 0 or error code. + */ +int NimBLERemoteDescriptor::onReadCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg) +{ + (void)attr; + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteDescriptor* desc = (NimBLERemoteDescriptor*)pTaskData->pATT; + uint16_t conn_id = desc->getRemoteCharacteristic()->getRemoteService()->getClient()->getConnId(); + + if(conn_id != conn_handle){ + return 0; + } + + NIMBLE_LOGD(LOG_TAG, "Read complete; status=%d conn_handle=%d", error->status, conn_handle); + + NimBLEAttValue *valBuf = (NimBLEAttValue*)pTaskData->buf; + int rc = error->status; + + if(rc == 0) { + if(attr) { + uint16_t data_len = OS_MBUF_PKTLEN(attr->om); + if((valBuf->size() + data_len) > BLE_ATT_ATTR_MAX_LEN) { + rc = BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } else { + NIMBLE_LOGD(LOG_TAG, "Got %u bytes", data_len); + valBuf->append(attr->om->om_data, data_len); + return 0; + } + } + } + + pTaskData->rc = rc; + xTaskNotifyGive(pTaskData->task); + + return rc; +} + + +/** + * @brief Return a string representation of this Remote Descriptor. + * @return A string representation of this Remote Descriptor. + */ +std::string NimBLERemoteDescriptor::toString() { + std::string res = "Descriptor: uuid: " + getUUID().toString(); + char val[6]; + res += ", handle: "; + snprintf(val, sizeof(val), "%d", getHandle()); + res += val; + + return res; +} // toString + + +/** + * @brief Callback for descriptor write operation. + * @return success == 0 or error code. + */ +int NimBLERemoteDescriptor::onWriteCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg) +{ + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteDescriptor* descriptor = (NimBLERemoteDescriptor*)pTaskData->pATT; + + if(descriptor->getRemoteCharacteristic()->getRemoteService()->getClient()->getConnId() != conn_handle){ + return 0; + } + + NIMBLE_LOGI(LOG_TAG, "Write complete; status=%d conn_handle=%d", error->status, conn_handle); + + pTaskData->rc = error->status; + xTaskNotifyGive(pTaskData->task); + + return 0; +} + + +/** + * @brief Write a new value to a remote descriptor from a std::vector. + * @param [in] vec A std::vector value to write to the remote descriptor. + * @param [in] response Whether we require a response from the write. + * @return false if not connected or otherwise cannot perform write. + */ +bool NimBLERemoteDescriptor::writeValue(const std::vector& vec, bool response) { + return writeValue((uint8_t*)&vec[0], vec.size(), response); +} // writeValue + + +/** + * @brief Write a new value to the remote descriptor from a const char*. + * @param [in] char_s A character string to write to the remote descriptor. + * @param [in] response Whether we require a response from the write. + * @return false if not connected or otherwise cannot perform write. + */ +bool NimBLERemoteDescriptor::writeValue(const char* char_s, bool response) { + return writeValue((uint8_t*)char_s, strlen(char_s), response); +} // writeValue + + +/** + * @brief Write a new value to a remote descriptor. + * @param [in] data The data to send to the remote descriptor. + * @param [in] length The length of the data to send. + * @param [in] response True if we expect a write response. + * @return false if not connected or otherwise cannot perform write. + */ +bool NimBLERemoteDescriptor::writeValue(const uint8_t* data, size_t length, bool response) { + + NIMBLE_LOGD(LOG_TAG, ">> Descriptor writeValue: %s", toString().c_str()); + + NimBLEClient* pClient = getRemoteCharacteristic()->getRemoteService()->getClient(); + + // Check to see that we are connected. + if (!pClient->isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Disconnected"); + return false; + } + + int rc = 0; + int retryCount = 1; + uint16_t mtu = ble_att_mtu(pClient->getConnId()) - 3; + + // Check if the data length is longer than we can write in 1 connection event. + // If so we must do a long write which requires a response. + if(length <= mtu && !response) { + rc = ble_gattc_write_no_rsp_flat(pClient->getConnId(), m_handle, data, length); + return (rc == 0); + } + + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + + do { + if(length > mtu) { + NIMBLE_LOGI(LOG_TAG,"long write %d bytes", length); + os_mbuf *om = ble_hs_mbuf_from_flat(data, length); + rc = ble_gattc_write_long(pClient->getConnId(), m_handle, 0, om, + NimBLERemoteDescriptor::onWriteCB, + &taskData); + } else { + rc = ble_gattc_write_flat(pClient->getConnId(), m_handle, + data, length, + NimBLERemoteDescriptor::onWriteCB, + &taskData); + } + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to write descriptor; rc=%d", rc); + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + rc = taskData.rc; + + switch(rc) { + case 0: + case BLE_HS_EDONE: + rc = 0; + break; + case BLE_HS_ATT_ERR(BLE_ATT_ERR_ATTR_NOT_LONG): + NIMBLE_LOGE(LOG_TAG, "Long write not supported by peer; Truncating length to %d", mtu); + retryCount++; + length = mtu; + break; + + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHEN): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHOR): + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_ENC): + if (retryCount && pClient->secureConnection()) + break; + /* Else falls through. */ + default: + return false; + } + } while(rc != 0 && retryCount--); + + NIMBLE_LOGD(LOG_TAG, "<< Descriptor writeValue, rc: %d",rc); + return (rc == 0); +} // writeValue + + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.h b/lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.h new file mode 100644 index 0000000..756beb3 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.h @@ -0,0 +1,104 @@ +/* + * NimBLERemoteDescriptor.h + * + * Created: on Jan 27 2020 + * Author H2zero + * + * Originally: + * + * BLERemoteDescriptor.h + * + * Created on: Jul 8, 2017 + * Author: kolban + */ + +#ifndef COMPONENTS_NIMBLEREMOTEDESCRIPTOR_H_ +#define COMPONENTS_NIMBLEREMOTEDESCRIPTOR_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLERemoteCharacteristic.h" + +class NimBLERemoteCharacteristic; +/** + * @brief A model of remote %BLE descriptor. + */ +class NimBLERemoteDescriptor { +public: + uint16_t getHandle(); + NimBLERemoteCharacteristic* getRemoteCharacteristic(); + NimBLEUUID getUUID(); + NimBLEAttValue readValue(); + std::string toString(void); + bool writeValue(const uint8_t* data, size_t length, bool response = false); + bool writeValue(const std::vector& v, bool response = false); + bool writeValue(const char* s, bool response = false); + + + /*********************** Template Functions ************************/ + + /** + * @brief Template to set the remote descriptor value to val. + * @param [in] s The value to write. + * @param [in] response True == request write response. + * @details Only used for non-arrays and types without a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + bool +#else + typename std::enable_if::value && !Has_c_str_len::value, bool>::type +#endif + writeValue(const T& s, bool response = false) { + return writeValue((uint8_t*)&s, sizeof(T), response); + } + + /** + * @brief Template to set the remote descriptor value to val. + * @param [in] s The value to write. + * @param [in] response True == request write response. + * @details Only used if the has a `c_str()` method. + */ + template +#ifdef _DOXYGEN_ + bool +#else + typename std::enable_if::value, bool>::type +#endif + writeValue(const T& s, bool response = false) { + return writeValue((uint8_t*)s.c_str(), s.length(), response); + } + + /** + * @brief Template to convert the remote descriptor data to . + * @tparam T The type to convert the data to. + * @param [in] skipSizeCheck If true it will skip checking if the data size is less than sizeof(). + * @return The data converted to or NULL if skipSizeCheck is false and the data is + * less than sizeof(). + * @details Use: readValue(skipSizeCheck); + */ + template + T readValue(bool skipSizeCheck = false) { + NimBLEAttValue value = readValue(); + if(!skipSizeCheck && value.size() < sizeof(T)) return T(); + return *((T *)value.data()); + } + +private: + friend class NimBLERemoteCharacteristic; + + NimBLERemoteDescriptor (NimBLERemoteCharacteristic* pRemoteCharacteristic, + const struct ble_gatt_dsc *dsc); + static int onWriteCB(uint16_t conn_handle, const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg); + static int onReadCB(uint16_t conn_handle, const struct ble_gatt_error *error, + struct ble_gatt_attr *attr, void *arg); + + uint16_t m_handle; + NimBLEUUID m_uuid; + NimBLERemoteCharacteristic* m_pRemoteCharacteristic; +}; + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ +#endif /* COMPONENTS_NIMBLEREMOTEDESCRIPTOR_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteService.cpp b/lib/esp-nimble-cpp/src/NimBLERemoteService.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLERemoteService.cpp rename to lib/esp-nimble-cpp/src/NimBLERemoteService.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteService.h b/lib/esp-nimble-cpp/src/NimBLERemoteService.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLERemoteService.h rename to lib/esp-nimble-cpp/src/NimBLERemoteService.h diff --git a/lib/esp-nimble-cpp/src/NimBLEScan.cpp b/lib/esp-nimble-cpp/src/NimBLEScan.cpp new file mode 100644 index 0000000..72130fe --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEScan.cpp @@ -0,0 +1,574 @@ +/* + * NimBLEScan.cpp + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEScan.cpp + * + * Created on: Jul 1, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + +#include "NimBLEScan.h" +#include "NimBLEDevice.h" +#include "NimBLELog.h" + +#include +#include + +static const char* LOG_TAG = "NimBLEScan"; + + +/** + * @brief Scan constuctor. + */ +NimBLEScan::NimBLEScan() { + m_scan_params.filter_policy = BLE_HCI_SCAN_FILT_NO_WL; + m_scan_params.passive = 1; // If set, don’t send scan requests to advertisers (i.e., don’t request additional advertising data). + m_scan_params.itvl = 0; // This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. (units=0.625 msec) + m_scan_params.window = 0; // The duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval (units=0.625 msec) + m_scan_params.limited = 0; // If set, only discover devices in limited discoverable mode. + m_scan_params.filter_duplicates = 1; // If set, the controller ignores all but the first advertisement from each device. + m_pScanCallbacks = nullptr; + m_ignoreResults = false; + m_pTaskData = nullptr; + m_duration = BLE_HS_FOREVER; // make sure this is non-zero in the event of a host reset + m_maxResults = 0xFF; +} + + +/** + * @brief Scan destructor, release any allocated resources. + */ +NimBLEScan::~NimBLEScan() { + clearResults(); +} + +/** + * @brief Handle GAP events related to scans. + * @param [in] event The event type for this event. + * @param [in] param Parameter data for this event. + */ +/*STATIC*/ +int NimBLEScan::handleGapEvent(ble_gap_event* event, void* arg) { + (void)arg; + NimBLEScan* pScan = NimBLEDevice::getScan(); + + switch(event->type) { + + case BLE_GAP_EVENT_EXT_DISC: + case BLE_GAP_EVENT_DISC: { + if(pScan->m_ignoreResults) { + NIMBLE_LOGI(LOG_TAG, "Scan op in progress - ignoring results"); + return 0; + } +#if CONFIG_BT_NIMBLE_EXT_ADV + const auto& disc = event->ext_disc; + const bool isLegacyAdv = disc.props & BLE_HCI_ADV_LEGACY_MASK; + const auto event_type = isLegacyAdv ? disc.legacy_event_type : disc.props; +#else + const auto& disc = event->disc; + const bool isLegacyAdv = true; + const auto event_type = disc.event_type; +#endif + NimBLEAddress advertisedAddress(disc.addr); + + // Examine our list of ignored addresses and stop processing if we don't want to see it or are already connected + if(NimBLEDevice::isIgnored(advertisedAddress)) { + NIMBLE_LOGI(LOG_TAG, "Ignoring device: address: %s", advertisedAddress.toString().c_str()); + return 0; + } + + NimBLEAdvertisedDevice* advertisedDevice = nullptr; + + // If we've seen this device before get a pointer to it from the vector + for(auto &it: pScan->m_scanResults.m_advertisedDevicesVector) { +#if CONFIG_BT_NIMBLE_EXT_ADV + // Same address but different set ID should create a new advertised device. + if (it->getAddress() == advertisedAddress && it->getSetId() == disc.sid) { +#else + if (it->getAddress() == advertisedAddress) { +#endif + advertisedDevice = it; + break; + } + } + + // If we haven't seen this device before; create a new instance and insert it in the vector. + // Otherwise just update the relevant parameters of the already known device. + if (advertisedDevice == nullptr && + (!isLegacyAdv || event_type != BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP)) { + // Check if we have reach the scan results limit, ignore this one if so. + // We still need to store each device when maxResults is 0 to be able to append the scan results + if (pScan->m_maxResults > 0 && pScan->m_maxResults < 0xFF && + (pScan->m_scanResults.m_advertisedDevicesVector.size() >= pScan->m_maxResults)) { + return 0; + } + + advertisedDevice = new NimBLEAdvertisedDevice(); + advertisedDevice->setAddress(advertisedAddress); + advertisedDevice->setAdvType(event_type, isLegacyAdv); +#if CONFIG_BT_NIMBLE_EXT_ADV + advertisedDevice->setSetId(disc.sid); + advertisedDevice->setPrimaryPhy(disc.prim_phy); + advertisedDevice->setSecondaryPhy(disc.sec_phy); + advertisedDevice->setPeriodicInterval(disc.periodic_adv_itvl); +#endif + pScan->m_scanResults.m_advertisedDevicesVector.push_back(advertisedDevice); + NIMBLE_LOGI(LOG_TAG, "New advertiser: %s", advertisedAddress.toString().c_str()); + } else if (advertisedDevice != nullptr) { + NIMBLE_LOGI(LOG_TAG, "Updated advertiser: %s", advertisedAddress.toString().c_str()); + } else { + // Scan response from unknown device + return 0; + } + + advertisedDevice->m_timestamp = time(nullptr); + advertisedDevice->setRSSI(disc.rssi); + advertisedDevice->setPayload(disc.data, disc.length_data, (isLegacyAdv && + event_type == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP)); + + if (pScan->m_pScanCallbacks) { + if (advertisedDevice->m_callbackSent == 0 || !pScan->m_scan_params.filter_duplicates) { + advertisedDevice->m_callbackSent = 1; + pScan->m_pScanCallbacks->onDiscovered(advertisedDevice); + } + + if (pScan->m_scan_params.filter_duplicates && advertisedDevice->m_callbackSent >= 2) { + return 0; + } + + // If not active scanning or scan response is not available + // or extended advertisement scanning, report the result to the callback now. + if(pScan->m_scan_params.passive || !isLegacyAdv || + (advertisedDevice->getAdvType() != BLE_HCI_ADV_TYPE_ADV_IND && + advertisedDevice->getAdvType() != BLE_HCI_ADV_TYPE_ADV_SCAN_IND)) + { + advertisedDevice->m_callbackSent = 2; + pScan->m_pScanCallbacks->onResult(advertisedDevice); + + // Otherwise, wait for the scan response so we can report the complete data. + } else if (isLegacyAdv && event_type == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) { + advertisedDevice->m_callbackSent = 2; + pScan->m_pScanCallbacks->onResult(advertisedDevice); + } + // If not storing results and we have invoked the callback, delete the device. + if(pScan->m_maxResults == 0 && advertisedDevice->m_callbackSent >= 2) { + pScan->erase(advertisedAddress); + } + } + + return 0; + } + case BLE_GAP_EVENT_DISC_COMPLETE: { + NIMBLE_LOGD(LOG_TAG, "discovery complete; reason=%d", + event->disc_complete.reason); + + if(pScan->m_maxResults == 0) { + pScan->clearResults(); + } + + if (pScan->m_pScanCallbacks != nullptr) { + pScan->m_pScanCallbacks->onScanEnd(pScan->m_scanResults); + } + + if(pScan->m_pTaskData != nullptr) { + pScan->m_pTaskData->rc = event->disc_complete.reason; + xTaskNotifyGive(pScan->m_pTaskData->task); + } + + return 0; + } + + default: + return 0; + } +} // gapEventHandler + + +/** + * @brief Should we perform an active or passive scan? + * The default is a passive scan. An active scan means that we will request a scan response. + * @param [in] active If true, we perform an active scan otherwise a passive scan. + */ +void NimBLEScan::setActiveScan(bool active) { + m_scan_params.passive = !active; +} // setActiveScan + + +/** + * @brief Set whether or not the BLE controller should only report results + * from devices it has not already seen. + * @param [in] enabled If true, scanned devices will only be reported once. + * @details The controller has a limited buffer and will start reporting + * duplicate devices once the limit is reached. + */ +void NimBLEScan::setDuplicateFilter(bool enabled) { + m_scan_params.filter_duplicates = enabled; +} // setDuplicateFilter + + +/** + * @brief Set whether or not the BLE controller only report scan results + * from devices advertising in limited discovery mode, i.e. directed advertising. + * @param [in] enabled If true, only limited discovery devices will be in scan results. + */ +void NimBLEScan::setLimitedOnly(bool enabled) { + m_scan_params.limited = enabled; +} // setLimited + + +/** + * @brief Sets the scan filter policy. + * @param [in] filter Can be one of: + * * BLE_HCI_SCAN_FILT_NO_WL (0) + * Scanner processes all advertising packets (white list not used) except\n + * directed, connectable advertising packets not sent to the scanner. + * * BLE_HCI_SCAN_FILT_USE_WL (1) + * Scanner processes advertisements from white list only. A connectable,\n + * directed advertisement is ignored unless it contains scanners address. + * * BLE_HCI_SCAN_FILT_NO_WL_INITA (2) + * Scanner process all advertising packets (white list not used). A\n + * connectable, directed advertisement shall not be ignored if the InitA + * is a resolvable private address. + * * BLE_HCI_SCAN_FILT_USE_WL_INITA (3) + * Scanner process advertisements from white list only. A connectable,\n + * directed advertisement shall not be ignored if the InitA is a + * resolvable private address. + */ +void NimBLEScan::setFilterPolicy(uint8_t filter) { + m_scan_params.filter_policy = filter; +} // setFilterPolicy + + +/** + * @brief Sets the max number of results to store. + * @param [in] maxResults The number of results to limit storage to\n + * 0 == none (callbacks only) 0xFF == unlimited, any other value is the limit. + */ +void NimBLEScan::setMaxResults(uint8_t maxResults) { + m_maxResults = maxResults; +} + + +/** + * @brief Set the call backs to be invoked. + * @param [in] pScanCallbacks Call backs to be invoked. + * @param [in] wantDuplicates True if we wish to be called back with duplicates. Default is false. + */ +void NimBLEScan::setScanCallbacks(NimBLEScanCallbacks* pScanCallbacks, bool wantDuplicates) { + setDuplicateFilter(!wantDuplicates); + m_pScanCallbacks = pScanCallbacks; +} // setScanCallbacks + + +/** + * @brief Set the interval to scan. + * @param [in] intervalMSecs The scan interval (how often) in milliseconds. + */ +void NimBLEScan::setInterval(uint16_t intervalMSecs) { + m_scan_params.itvl = intervalMSecs / 0.625; +} // setInterval + + +/** + * @brief Set the window to actively scan. + * @param [in] windowMSecs How long to actively scan. + */ +void NimBLEScan::setWindow(uint16_t windowMSecs) { + m_scan_params.window = windowMSecs / 0.625; +} // setWindow + + +/** + * @brief Get the status of the scanner. + * @return true if scanning or scan starting. + */ +bool NimBLEScan::isScanning() { + return ble_gap_disc_active(); +} + + +/** + * @brief Start scanning. + * @param [in] duration The duration in milliseconds for which to scan. + * @param [in] is_continue Set to true to save previous scan results, false to clear them. + * @return True if scan started or false if there was an error. + */ +bool NimBLEScan::start(uint32_t duration, bool is_continue) { + NIMBLE_LOGD(LOG_TAG, ">> start: duration=%" PRIu32, duration); + + // Save the duration in the case that the host is reset so we can reuse it. + m_duration = duration; + + // If 0 duration specified then we assume a continuous scan is desired. + if(duration == 0){ + duration = BLE_HS_FOREVER; + } + + // Set the flag to ignore the results while we are deleting the vector + if(!is_continue) { + m_ignoreResults = true; + } + +# if CONFIG_BT_NIMBLE_EXT_ADV + ble_gap_ext_disc_params scan_params; + scan_params.passive = m_scan_params.passive; + scan_params.itvl = m_scan_params.itvl; + scan_params.window = m_scan_params.window; + int rc = ble_gap_ext_disc(NimBLEDevice::m_own_addr_type, + duration/10, + 0, + m_scan_params.filter_duplicates, + m_scan_params.filter_policy, + m_scan_params.limited, + &scan_params, + &scan_params, + NimBLEScan::handleGapEvent, + NULL); +#else + int rc = ble_gap_disc(NimBLEDevice::m_own_addr_type, + duration, + &m_scan_params, + NimBLEScan::handleGapEvent, + NULL); +#endif + switch(rc) { + case 0: + if(!is_continue) { + clearResults(); + } + break; + + case BLE_HS_EALREADY: + // Clear the cache if already scanning in case an advertiser was missed. + clearDuplicateCache(); + break; + + case BLE_HS_EBUSY: + NIMBLE_LOGE(LOG_TAG, "Unable to scan - connection in progress."); + break; + + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_EOS: + case BLE_HS_ECONTROLLER: + case BLE_HS_ENOTSYNCED: + NIMBLE_LOGC(LOG_TAG, "Unable to scan - Host Reset"); + break; + + default: + NIMBLE_LOGE(LOG_TAG, "Error initiating GAP discovery procedure; rc=%d, %s", + rc, NimBLEUtils::returnCodeToString(rc)); + break; + } + + m_ignoreResults = false; + NIMBLE_LOGD(LOG_TAG, "<< start()"); + + if(rc != 0 && rc != BLE_HS_EALREADY) { + return false; + } + return true; +} // start + + +/** + * @brief Stop an in progress scan. + * @return True if successful. + */ +bool NimBLEScan::stop() { + NIMBLE_LOGD(LOG_TAG, ">> stop()"); + + int rc = ble_gap_disc_cancel(); + if (rc != 0 && rc != BLE_HS_EALREADY) { + NIMBLE_LOGE(LOG_TAG, "Failed to cancel scan; rc=%d", rc); + return false; + } + + if(m_maxResults == 0) { + clearResults(); + } + + if (rc != BLE_HS_EALREADY && m_pScanCallbacks != nullptr) { + m_pScanCallbacks->onScanEnd(m_scanResults); + } + + if(m_pTaskData != nullptr) { + xTaskNotifyGive(m_pTaskData->task); + } + + NIMBLE_LOGD(LOG_TAG, "<< stop()"); + return true; +} // stop + + +/** + * @brief Clears the duplicate scan filter cache. + */ +void NimBLEScan::clearDuplicateCache() { +#ifdef CONFIG_IDF_TARGET_ESP32 // Not available for ESP32C3 + esp_ble_scan_dupilcate_list_flush(); +#endif +} + + +/** + * @brief Delete peer device from the scan results vector. + * @param [in] address The address of the device to delete from the results. + * @details After disconnecting, it may be required in the case we were connected to a device without a public address. + */ +void NimBLEScan::erase(const NimBLEAddress &address) { + NIMBLE_LOGD(LOG_TAG, "erase device: %s", address.toString().c_str()); + + for(auto it = m_scanResults.m_advertisedDevicesVector.begin(); it != m_scanResults.m_advertisedDevicesVector.end(); ++it) { + if((*it)->getAddress() == address) { + delete *it; + m_scanResults.m_advertisedDevicesVector.erase(it); + break; + } + } +} + + +/** + * @brief Called when host reset, we set a flag to stop scanning until synced. + */ +void NimBLEScan::onHostReset() { + m_ignoreResults = true; +} + + +/** + * @brief If the host reset and re-synced this is called. + * If the application was scanning indefinitely with a callback, restart it. + */ +void NimBLEScan::onHostSync() { + m_ignoreResults = false; + + if(m_duration == 0 && m_pScanCallbacks != nullptr) { + start(0, false); + } +} + + +/** + * @brief Start scanning and block until scanning has been completed. + * @param [in] duration The duration in milliseconds for which to scan. + * @param [in] is_continue Set to true to save previous scan results, false to clear them. + * @return The scan results. + */ +NimBLEScanResults NimBLEScan::getResults(uint32_t duration, bool is_continue) { + if(duration == 0) { + NIMBLE_LOGW(LOG_TAG, "Blocking scan called with duration = forever"); + } + + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {nullptr, cur_task, 0, nullptr}; + m_pTaskData = &taskData; + + if(start(duration, is_continue)) { +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + } + + m_pTaskData = nullptr; + return m_scanResults; +} // getResults + + +/** + * @brief Get the results of the scan. + * @return NimBLEScanResults object. + */ +NimBLEScanResults NimBLEScan::getResults() { + return m_scanResults; +} + + +/** + * @brief Clear the results of the scan. + */ +void NimBLEScan::clearResults() { + for(auto &it: m_scanResults.m_advertisedDevicesVector) { + delete it; + } + m_scanResults.m_advertisedDevicesVector.clear(); + clearDuplicateCache(); +} + + +/** + * @brief Dump the scan results to the log. + */ +void NimBLEScanResults::dump() { + NIMBLE_LOGD(LOG_TAG, ">> Dump scan results:"); + for (int i=0; i::iterator NimBLEScanResults::begin() { + return m_advertisedDevicesVector.begin(); +} + + +/** + * @brief Get iterator to the end of the vector of advertised device pointers. + * @return An iterator to the end of the vector of advertised device pointers. + */ +std::vector::iterator NimBLEScanResults::end() { + return m_advertisedDevicesVector.end(); +} + + +/** + * @brief Get a pointer to the specified device at the given address. + * If the address is not found a nullptr is returned. + * @param [in] address The address of the device. + * @return A pointer to the device at the specified address. + */ +NimBLEAdvertisedDevice *NimBLEScanResults::getDevice(const NimBLEAddress &address) { + for(size_t index = 0; index < m_advertisedDevicesVector.size(); index++) { + if(m_advertisedDevicesVector[index]->getAddress() == address) { + return m_advertisedDevicesVector[index]; + } + } + + return nullptr; +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_OBSERVER */ diff --git a/lib/esp-nimble-cpp/src/NimBLEScan.h b/lib/esp-nimble-cpp/src/NimBLEScan.h new file mode 100644 index 0000000..f0edcaa --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEScan.h @@ -0,0 +1,128 @@ +/* + * NimBLEScan.h + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEScan.h + * + * Created on: Jul 1, 2017 + * Author: kolban + */ +#ifndef COMPONENTS_NIMBLE_SCAN_H_ +#define COMPONENTS_NIMBLE_SCAN_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) + +#include "NimBLEAdvertisedDevice.h" +#include "NimBLEUtils.h" + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "host/ble_gap.h" +#else +#include "nimble/nimble/host/include/host/ble_gap.h" +#endif + +#include + +class NimBLEDevice; +class NimBLEScan; +class NimBLEAdvertisedDevice; +class NimBLEScanCallbacks; +class NimBLEAddress; + +/** + * @brief A class that contains and operates on the results of a BLE scan. + * @details When a scan completes, we have a set of found devices. Each device is described + * by a NimBLEAdvertisedDevice object. The number of items in the set is given by + * getCount(). We can retrieve a device by calling getDevice() passing in the + * index (starting at 0) of the desired device. + */ +class NimBLEScanResults { +public: + void dump(); + int getCount(); + NimBLEAdvertisedDevice getDevice(uint32_t i); + std::vector::iterator begin(); + std::vector::iterator end(); + NimBLEAdvertisedDevice *getDevice(const NimBLEAddress &address); + +private: + friend NimBLEScan; + std::vector m_advertisedDevicesVector; +}; + +/** + * @brief Perform and manage %BLE scans. + * + * Scanning is associated with a %BLE client that is attempting to locate BLE servers. + */ +class NimBLEScan { +public: + bool start(uint32_t duration, bool is_continue = false); + bool isScanning(); + void setScanCallbacks(NimBLEScanCallbacks* pScanCallbacks, bool wantDuplicates = false); + void setActiveScan(bool active); + void setInterval(uint16_t intervalMSecs); + void setWindow(uint16_t windowMSecs); + void setDuplicateFilter(bool enabled); + void setLimitedOnly(bool enabled); + void setFilterPolicy(uint8_t filter); + void clearDuplicateCache(); + bool stop(); + void clearResults(); + NimBLEScanResults getResults(); + NimBLEScanResults getResults(uint32_t duration, bool is_continue = false); + void setMaxResults(uint8_t maxResults); + void erase(const NimBLEAddress &address); + + +private: + friend class NimBLEDevice; + + NimBLEScan(); + ~NimBLEScan(); + static int handleGapEvent(ble_gap_event* event, void* arg); + void onHostReset(); + void onHostSync(); + + NimBLEScanCallbacks* m_pScanCallbacks; + ble_gap_disc_params m_scan_params; + bool m_ignoreResults; + NimBLEScanResults m_scanResults; + uint32_t m_duration; + ble_task_data_t *m_pTaskData; + uint8_t m_maxResults; +}; + +/** + * @brief A callback handler for callbacks associated device scanning. + */ +class NimBLEScanCallbacks { +public: + virtual ~NimBLEScanCallbacks() {} + + /** + * @brief Called when a new device is discovered, before the scan result is received (if applicable). + * @param [in] advertisedDevice The device which was discovered. + */ + virtual void onDiscovered(NimBLEAdvertisedDevice* advertisedDevice) {}; + + /** + * @brief Called when a new scan result is complete, including scan response data (if applicable). + * @param [in] advertisedDevice The device for which the complete result is available. + */ + virtual void onResult(NimBLEAdvertisedDevice* advertisedDevice) {}; + + /** + * @brief Called when a scan operation ends. + * @param [in] scanResults The results of the scan that ended. + */ + virtual void onScanEnd(NimBLEScanResults scanResults) {}; +}; + +#endif /* CONFIG_BT_ENABLED CONFIG_BT_NIMBLE_ROLE_OBSERVER */ +#endif /* COMPONENTS_NIMBLE_SCAN_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEServer.cpp b/lib/esp-nimble-cpp/src/NimBLEServer.cpp new file mode 100644 index 0000000..fb03ea4 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEServer.cpp @@ -0,0 +1,887 @@ +/* + * NimBLEServer.cpp + * + * Created: on March 2, 2020 + * Author H2zero + * + * Originally: + * + * BLEServer.cpp + * + * Created on: Apr 16, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLEServer.h" +#include "NimBLEDevice.h" +#include "NimBLELog.h" + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "services/gap/ble_svc_gap.h" +#include "services/gatt/ble_svc_gatt.h" +#else +#include "nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h" +#include "nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h" +#endif + +static const char* LOG_TAG = "NimBLEServer"; +static NimBLEServerCallbacks defaultCallbacks; + + +/** + * @brief Construct a %BLE Server + * + * This class is not designed to be individually instantiated. Instead one should create a server by asking + * the NimBLEDevice class. + */ +NimBLEServer::NimBLEServer() { + memset(m_indWait, BLE_HS_CONN_HANDLE_NONE, sizeof(m_indWait)); +// m_svcChgChrHdl = 0xffff; // Future Use + m_pServerCallbacks = &defaultCallbacks; + m_gattsStarted = false; +#if !CONFIG_BT_NIMBLE_EXT_ADV + m_advertiseOnDisconnect = true; +#endif + m_svcChanged = false; + m_deleteCallbacks = true; +} // NimBLEServer + + +/** + * @brief Destructor: frees all resources / attributes created. + */ +NimBLEServer::~NimBLEServer() { + for(auto &it : m_svcVec) { + delete it; + } + + if(m_deleteCallbacks && m_pServerCallbacks != &defaultCallbacks) { + delete m_pServerCallbacks; + } +} + + +/** + * @brief Create a %BLE Service. + * @param [in] uuid The UUID of the new service. + * @return A reference to the new service object. + */ +NimBLEService* NimBLEServer::createService(const char* uuid) { + return createService(NimBLEUUID(uuid)); +} // createService + + +/** + * @brief Create a %BLE Service. + * @param [in] uuid The UUID of the new service. + * @return A reference to the new service object. + */ +NimBLEService* NimBLEServer::createService(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> createService - %s", uuid.toString().c_str()); + + // Check that a service with the supplied UUID does not already exist. + if(getServiceByUUID(uuid) != nullptr) { + NIMBLE_LOGW(LOG_TAG, "Warning creating a duplicate service UUID: %s", + std::string(uuid).c_str()); + } + + NimBLEService* pService = new NimBLEService(uuid); + m_svcVec.push_back(pService); + serviceChanged(); + + NIMBLE_LOGD(LOG_TAG, "<< createService"); + return pService; +} // createService + + +/** + * @brief Get a %BLE Service by its UUID + * @param [in] uuid The UUID of the service. + * @param instanceId The index of the service to return (used when multiple services have the same UUID). + * @return A pointer to the service object or nullptr if not found. + */ +NimBLEService* NimBLEServer::getServiceByUUID(const char* uuid, uint16_t instanceId) { + return getServiceByUUID(NimBLEUUID(uuid), instanceId); +} // getServiceByUUID + + +/** + * @brief Get a %BLE Service by its UUID + * @param [in] uuid The UUID of the service. + * @param instanceId The index of the service to return (used when multiple services have the same UUID). + * @return A pointer to the service object or nullptr if not found. + */ +NimBLEService* NimBLEServer::getServiceByUUID(const NimBLEUUID &uuid, uint16_t instanceId) { + uint16_t position = 0; + for (auto &it : m_svcVec) { + if (it->getUUID() == uuid) { + if (position == instanceId){ + return it; + } + position++; + } + } + return nullptr; +} // getServiceByUUID + +/** + * @brief Get a %BLE Service by its handle + * @param handle The handle of the service. + * @return A pointer to the service object or nullptr if not found. + */ +NimBLEService *NimBLEServer::getServiceByHandle(uint16_t handle) { + for (auto &it : m_svcVec) { + if (it->getHandle() == handle) { + return it; + } + } + return nullptr; +} + + +#if CONFIG_BT_NIMBLE_EXT_ADV +/** + * @brief Retrieve the advertising object that can be used to advertise the existence of the server. + * @return An advertising object. + */ +NimBLEExtAdvertising* NimBLEServer::getAdvertising() { + return NimBLEDevice::getAdvertising(); +} // getAdvertising +#endif + +#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) +/** + * @brief Retrieve the advertising object that can be used to advertise the existence of the server. + * @return An advertising object. + */ +NimBLEAdvertising* NimBLEServer::getAdvertising() { + return NimBLEDevice::getAdvertising(); +} // getAdvertising +#endif + +/** + * @brief Sends a service changed notification and resets the GATT server. + */ +void NimBLEServer::serviceChanged() { + if(m_gattsStarted) { + m_svcChanged = true; + ble_svc_gatt_changed(0x0001, 0xffff); + resetGATT(); + } +} + + +/** + * @brief Start the GATT server. Required to be called after setup of all + * services and characteristics / descriptors for the NimBLE host to register them. + */ +void NimBLEServer::start() { + if(m_gattsStarted) { + NIMBLE_LOGW(LOG_TAG, "Gatt server already started"); + return; + } + + int rc = ble_gatts_start(); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gatts_start; rc=%d, %s", rc, + NimBLEUtils::returnCodeToString(rc)); + abort(); + } + +#if CONFIG_NIMBLE_CPP_LOG_LEVEL >= 4 + ble_gatts_show_local(); +#endif +/*** Future use *** + * TODO: implement service changed handling + + ble_uuid16_t svc = {BLE_UUID_TYPE_16, 0x1801}; + ble_uuid16_t chr = {BLE_UUID_TYPE_16, 0x2a05}; + + rc = ble_gatts_find_chr(&svc.u, &chr.u, NULL, &m_svcChgChrHdl); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gatts_find_chr: rc=%d, %s", rc, + NimBLEUtils::returnCodeToString(rc)); + abort(); + } + + NIMBLE_LOGI(LOG_TAG, "Service changed characterisic handle: %d", m_svcChgChrHdl); +*/ + // Get the assigned service handles and build a vector of characteristics + // with Notify / Indicate capabilities for event handling + for(auto &svc : m_svcVec) { + if(svc->m_removed == 0) { + rc = ble_gatts_find_svc(&svc->getUUID().getNative()->u, &svc->m_handle); + if(rc != 0) { + NIMBLE_LOGW(LOG_TAG, "GATT Server started without service: %s, Service %s", + svc->getUUID().toString().c_str(), svc->isStarted() ? "missing" : "not started"); + continue; // Skip this service as it was not started + } + } + + for(auto &chr : svc->m_chrVec) { + // if Notify / Indicate is enabled but we didn't create the descriptor + // we do it now. + if((chr->m_properties & BLE_GATT_CHR_F_INDICATE) || + (chr->m_properties & BLE_GATT_CHR_F_NOTIFY)) { + m_notifyChrVec.push_back(chr); + } + } + } + + m_gattsStarted = true; +} // start + + +/** + * @brief Disconnect the specified client with optional reason. + * @param [in] connId Connection Id of the client to disconnect. + * @param [in] reason code for disconnecting. + * @return NimBLE host return code. + */ +int NimBLEServer::disconnect(uint16_t connId, uint8_t reason) { + NIMBLE_LOGD(LOG_TAG, ">> disconnect()"); + + int rc = ble_gap_terminate(connId, reason); + if(rc != 0){ + NIMBLE_LOGE(LOG_TAG, "ble_gap_terminate failed: rc=%d %s", rc, + NimBLEUtils::returnCodeToString(rc)); + } + + NIMBLE_LOGD(LOG_TAG, "<< disconnect()"); + return rc; +} // disconnect + +/** + * @brief Disconnect the specified client with optional reason. + * @param [in] connInfo Connection of the client to disconnect. + * @param [in] reason code for disconnecting. + * @return NimBLE host return code. + */ +int NimBLEServer::disconnect(const NimBLEConnInfo &connInfo, uint8_t reason) { + return disconnect(connInfo.getConnHandle(), reason); +} // disconnect + +#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) +/** + * @brief Set the server to automatically start advertising when a client disconnects. + * @param [in] aod true == advertise, false == don't advertise. + */ +void NimBLEServer::advertiseOnDisconnect(bool aod) { + m_advertiseOnDisconnect = aod; +} // advertiseOnDisconnect +#endif + + +/** + * @brief Return the number of connected clients. + * @return The number of connected clients. + */ +size_t NimBLEServer::getConnectedCount() { + return m_connectedPeersVec.size(); +} // getConnectedCount + + +/** + * @brief Get the vector of the connected client ID's. + */ +std::vector NimBLEServer::getPeerDevices() { + return m_connectedPeersVec; +} // getPeerDevices + + +/** + * @brief Get the connection information of a connected peer by vector index. + * @param [in] index The vector index of the peer. + */ +NimBLEConnInfo NimBLEServer::getPeerInfo(size_t index) { + if (index >= m_connectedPeersVec.size()) { + NIMBLE_LOGE(LOG_TAG, "No peer at index %u", index); + return NimBLEConnInfo(); + } + + return getPeerIDInfo(m_connectedPeersVec[index]); +} // getPeerInfo + + +/** + * @brief Get the connection information of a connected peer by address. + * @param [in] address The address of the peer. + */ +NimBLEConnInfo NimBLEServer::getPeerInfo(const NimBLEAddress& address) { + ble_addr_t peerAddr; + memcpy(&peerAddr.val, address.getNative(),6); + peerAddr.type = address.getType(); + + NimBLEConnInfo peerInfo; + int rc = ble_gap_conn_find_by_addr(&peerAddr, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Peer info not found"); + } + + return peerInfo; +} // getPeerInfo + + +/** + * @brief Get the connection information of a connected peer by connection ID. + * @param [in] id The connection id of the peer. + */ +NimBLEConnInfo NimBLEServer::getPeerIDInfo(uint16_t id) { + NimBLEConnInfo peerInfo; + + int rc = ble_gap_conn_find(id, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Peer info not found"); + } + + return peerInfo; +} // getPeerIDInfo + + +/** + * @brief Handle a GATT Server Event. + * + * @param [in] event + * @param [in] gatts_if + * @param [in] param + * + */ +/*STATIC*/ +int NimBLEServer::handleGapEvent(struct ble_gap_event *event, void *arg) { + NIMBLE_LOGD(LOG_TAG, ">> handleGapEvent: %s", NimBLEUtils::gapEventToString(event->type)); + + int rc = 0; + NimBLEConnInfo peerInfo; + NimBLEServer* pServer = NimBLEDevice::getServer(); + + switch(event->type) { + + case BLE_GAP_EVENT_CONNECT: { + if (event->connect.status != 0) { + /* Connection failed; resume advertising */ + NIMBLE_LOGE(LOG_TAG, "Connection failed"); +#if !CONFIG_BT_NIMBLE_EXT_ADV + NimBLEDevice::startAdvertising(); +#endif + } + else { + pServer->m_connectedPeersVec.push_back(event->connect.conn_handle); + + rc = ble_gap_conn_find(event->connect.conn_handle, &peerInfo.m_desc); + if (rc != 0) { + return 0; + } + + pServer->m_pServerCallbacks->onConnect(pServer, peerInfo); + } + + return 0; + } // BLE_GAP_EVENT_CONNECT + + + case BLE_GAP_EVENT_DISCONNECT: { + // If Host reset tell the device now before returning to prevent + // any errors caused by calling host functions before resync. + switch(event->disconnect.reason) { + case BLE_HS_ETIMEOUT_HCI: + case BLE_HS_EOS: + case BLE_HS_ECONTROLLER: + case BLE_HS_ENOTSYNCED: + NIMBLE_LOGC(LOG_TAG, "Disconnect - host reset, rc=%d", event->disconnect.reason); + NimBLEDevice::onReset(event->disconnect.reason); + break; + default: + break; + } + + pServer->m_connectedPeersVec.erase(std::remove(pServer->m_connectedPeersVec.begin(), + pServer->m_connectedPeersVec.end(), + event->disconnect.conn.conn_handle), + pServer->m_connectedPeersVec.end()); + + if(pServer->m_svcChanged) { + pServer->resetGATT(); + } + + NimBLEConnInfo peerInfo(event->disconnect.conn); + pServer->m_pServerCallbacks->onDisconnect(pServer, peerInfo, event->disconnect.reason); + +#if !CONFIG_BT_NIMBLE_EXT_ADV + if(pServer->m_advertiseOnDisconnect) { + pServer->startAdvertising(); + } +#endif + return 0; + } // BLE_GAP_EVENT_DISCONNECT + + case BLE_GAP_EVENT_SUBSCRIBE: { + NIMBLE_LOGI(LOG_TAG, "subscribe event; attr_handle=%d, subscribed: %s", + event->subscribe.attr_handle, + (event->subscribe.cur_notify ? "true":"false")); + + for(auto &it : pServer->m_notifyChrVec) { + if(it->getHandle() == event->subscribe.attr_handle) { + if((it->getProperties() & BLE_GATT_CHR_F_READ_AUTHEN) || + (it->getProperties() & BLE_GATT_CHR_F_READ_AUTHOR) || + (it->getProperties() & BLE_GATT_CHR_F_READ_ENC)) + { + rc = ble_gap_conn_find(event->subscribe.conn_handle, &peerInfo.m_desc); + if (rc != 0) { + break; + } + + if(!peerInfo.isEncrypted()) { + NimBLEDevice::startSecurity(event->subscribe.conn_handle); + } + } + + it->setSubscribe(event); + break; + } + } + + return 0; + } // BLE_GAP_EVENT_SUBSCRIBE + + case BLE_GAP_EVENT_MTU: { + NIMBLE_LOGI(LOG_TAG, "mtu update event; conn_handle=%d mtu=%d", + event->mtu.conn_handle, + event->mtu.value); + + rc = ble_gap_conn_find(event->mtu.conn_handle, &peerInfo.m_desc); + if (rc != 0) { + return 0; + } + + pServer->m_pServerCallbacks->onMTUChange(event->mtu.value, peerInfo); + return 0; + } // BLE_GAP_EVENT_MTU + + case BLE_GAP_EVENT_NOTIFY_TX: { + NimBLECharacteristic *pChar = nullptr; + + for(auto &it : pServer->m_notifyChrVec) { + if(it->getHandle() == event->notify_tx.attr_handle) { + pChar = it; + } + } + + if(pChar == nullptr) { + return 0; + } + + if(event->notify_tx.indication) { + if(event->notify_tx.status == 0) { + return 0; // Indication sent but not yet acknowledged. + } + pServer->clearIndicateWait(event->notify_tx.conn_handle); + } + + pChar->m_pCallbacks->onStatus(pChar, event->notify_tx.status); + + return 0; + } // BLE_GAP_EVENT_NOTIFY_TX + + + case BLE_GAP_EVENT_ADV_COMPLETE: +#if CONFIG_BT_NIMBLE_EXT_ADV + case BLE_GAP_EVENT_SCAN_REQ_RCVD: + return NimBLEExtAdvertising::handleGapEvent(event, arg); +#else + return NimBLEAdvertising::handleGapEvent(event, arg); +#endif + // BLE_GAP_EVENT_ADV_COMPLETE | BLE_GAP_EVENT_SCAN_REQ_RCVD + + case BLE_GAP_EVENT_CONN_UPDATE: { + NIMBLE_LOGD(LOG_TAG, "Connection parameters updated."); + return 0; + } // BLE_GAP_EVENT_CONN_UPDATE + + case BLE_GAP_EVENT_REPEAT_PAIRING: { + /* We already have a bond with the peer, but it is attempting to + * establish a new secure link. This app sacrifices security for + * convenience: just throw away the old bond and accept the new link. + */ + + /* Delete the old bond. */ + rc = ble_gap_conn_find(event->repeat_pairing.conn_handle, &peerInfo.m_desc); + if (rc != 0){ + return BLE_GAP_REPEAT_PAIRING_IGNORE; + } + + ble_store_util_delete_peer(&peerInfo.m_desc.peer_id_addr); + + /* Return BLE_GAP_REPEAT_PAIRING_RETRY to indicate that the host should + * continue with the pairing operation. + */ + return BLE_GAP_REPEAT_PAIRING_RETRY; + } // BLE_GAP_EVENT_REPEAT_PAIRING + + case BLE_GAP_EVENT_ENC_CHANGE: { + rc = ble_gap_conn_find(event->enc_change.conn_handle, &peerInfo.m_desc); + if(rc != 0) { + return BLE_ATT_ERR_INVALID_HANDLE; + } + + pServer->m_pServerCallbacks->onAuthenticationComplete(peerInfo); + return 0; + } // BLE_GAP_EVENT_ENC_CHANGE + + case BLE_GAP_EVENT_IDENTITY_RESOLVED: { + rc = ble_gap_conn_find(event->identity_resolved.conn_handle, &peerInfo.m_desc); + if(rc != 0) { + return BLE_ATT_ERR_INVALID_HANDLE; + } + + pServer->m_pServerCallbacks->onIdentity(peerInfo); + return 0; + } // BLE_GAP_EVENT_IDENTITY_RESOLVED + + case BLE_GAP_EVENT_PASSKEY_ACTION: { + struct ble_sm_io pkey = {0,0}; + + if (event->passkey.params.action == BLE_SM_IOACT_DISP) { + pkey.action = event->passkey.params.action; + // backward compatibility + pkey.passkey = NimBLEDevice::getSecurityPasskey(); // This is the passkey to be entered on peer + // if the (static)passkey is the default, check the callback for custom value + // both values default to the same. + if(pkey.passkey == 123456) { + pkey.passkey = pServer->m_pServerCallbacks->onPassKeyDisplay(); + } + rc = ble_sm_inject_io(event->passkey.conn_handle, &pkey); + NIMBLE_LOGD(LOG_TAG, "BLE_SM_IOACT_DISP; ble_sm_inject_io result: %d", rc); + + } else if (event->passkey.params.action == BLE_SM_IOACT_NUMCMP) { + NIMBLE_LOGD(LOG_TAG, "Passkey on device's display: %" PRIu32, event->passkey.params.numcmp); + + rc = ble_gap_conn_find(event->passkey.conn_handle, &peerInfo.m_desc); + if(rc != 0) { + return BLE_ATT_ERR_INVALID_HANDLE; + } + + pServer->m_pServerCallbacks->onConfirmPIN(peerInfo, event->passkey.params.numcmp); + //TODO: Handle out of band pairing + } else if (event->passkey.params.action == BLE_SM_IOACT_OOB) { + static uint8_t tem_oob[16] = {0}; + pkey.action = event->passkey.params.action; + for (int i = 0; i < 16; i++) { + pkey.oob[i] = tem_oob[i]; + } + rc = ble_sm_inject_io(event->passkey.conn_handle, &pkey); + NIMBLE_LOGD(LOG_TAG, "BLE_SM_IOACT_OOB; ble_sm_inject_io result: %d", rc); + ////////////////////////////////// + } else if (event->passkey.params.action == BLE_SM_IOACT_NONE) { + NIMBLE_LOGD(LOG_TAG, "No passkey action required"); + } + + NIMBLE_LOGD(LOG_TAG, "<< handleGATTServerEvent"); + return 0; + } // BLE_GAP_EVENT_PASSKEY_ACTION + + default: + break; + } + + NIMBLE_LOGD(LOG_TAG, "<< handleGATTServerEvent"); + return 0; +} // handleGapEvent + + +/** + * @brief Set the server callbacks. + * + * As a %BLE server operates, it will generate server level events such as a new client connecting or a previous client + * disconnecting. This function can be called to register a callback handler that will be invoked when these + * events are detected. + * + * @param [in] pCallbacks The callbacks to be invoked. + * @param [in] deleteCallbacks if true callback class will be deleted when server is destructed. + */ +void NimBLEServer::setCallbacks(NimBLEServerCallbacks* pCallbacks, bool deleteCallbacks) { + if (pCallbacks != nullptr){ + m_pServerCallbacks = pCallbacks; + m_deleteCallbacks = deleteCallbacks; + } else { + m_pServerCallbacks = &defaultCallbacks; + } +} // setCallbacks + + +/** + * @brief Remove a service from the server. + * + * @details Immediately removes access to the service by clients, sends a service changed indication, + * and removes the service (if applicable) from the advertisements. + * The service is not deleted unless the deleteSvc parameter is true, otherwise the service remains + * available and can be re-added in the future. If desired a removed but not deleted service can + * be deleted later by calling this method with deleteSvc set to true. + * + * @note The service will not be removed from the database until all open connections are closed + * as it requires resetting the GATT server. In the interim the service will have it's visibility disabled. + * + * @note Advertising will need to be restarted by the user after calling this as we must stop + * advertising in order to remove the service. + * + * @param [in] service The service object to remove. + * @param [in] deleteSvc true if the service should be deleted. + */ +void NimBLEServer::removeService(NimBLEService* service, bool deleteSvc) { + // Check if the service was already removed and if so check if this + // is being called to delete the object and do so if requested. + // Otherwise, ignore the call and return. + if(service->m_removed > 0) { + if(deleteSvc) { + for(auto it = m_svcVec.begin(); it != m_svcVec.end(); ++it) { + if ((*it) == service) { + delete *it; + m_svcVec.erase(it); + break; + } + } + } + + return; + } + + int rc = ble_gatts_svc_set_visibility(service->getHandle(), 0); + if(rc !=0) { + return; + } + + service->m_removed = deleteSvc ? NIMBLE_ATT_REMOVE_DELETE : NIMBLE_ATT_REMOVE_HIDE; + serviceChanged(); +#if !CONFIG_BT_NIMBLE_EXT_ADV + NimBLEDevice::getAdvertising()->removeServiceUUID(service->getUUID()); +#endif +} + + +/** + * @brief Adds a service which was either already created but removed from availability,\n + * or created and later added to services list. + * @param [in] service The service object to add. + * @note If it is desired to advertise the service it must be added by + * calling NimBLEAdvertising::addServiceUUID. + */ +void NimBLEServer::addService(NimBLEService* service) { + // Check that a service with the supplied UUID does not already exist. + if(getServiceByUUID(service->getUUID()) != nullptr) { + NIMBLE_LOGW(LOG_TAG, "Warning creating a duplicate service UUID: %s", + std::string(service->getUUID()).c_str()); + } + + // If adding a service that was not removed add it and return. + // Else reset GATT and send service changed notification. + if(service->m_removed == 0) { + m_svcVec.push_back(service); + return; + } + + service->m_removed = 0; + serviceChanged(); +} + + +/** + * @brief Resets the GATT server, used when services are added/removed after initialization. + */ +void NimBLEServer::resetGATT() { + if(getConnectedCount() > 0) { + return; + } + + NimBLEDevice::stopAdvertising(); + ble_gatts_reset(); + ble_svc_gap_init(); + ble_svc_gatt_init(); + + for(auto it = m_svcVec.begin(); it != m_svcVec.end(); ) { + if ((*it)->m_removed > 0) { + if ((*it)->m_removed == NIMBLE_ATT_REMOVE_DELETE) { + delete *it; + it = m_svcVec.erase(it); + } else { + ++it; + } + continue; + } + + (*it)->start(); + ++it; + } + + m_svcChanged = false; + m_gattsStarted = false; +} + + +#if CONFIG_BT_NIMBLE_EXT_ADV +/** + * @brief Start advertising. + * @param [in] inst_id The extended advertisement instance ID to start. + * @param [in] duration How long to advertise for in milliseconds, 0 = forever (default). + * @param [in] max_events Maximum number of advertisement events to send, 0 = no limit (default). + * @return True if advertising started successfully. + * @details Start the server advertising its existence. This is a convenience function and is equivalent to + * retrieving the advertising object and invoking start upon it. + */ +bool NimBLEServer::startAdvertising(uint8_t inst_id, + int duration, + int max_events) { + return getAdvertising()->start(inst_id, duration, max_events); +} // startAdvertising + + +/** + * @brief Convenience function to stop advertising a data set. + * @param [in] inst_id The extended advertisement instance ID to stop advertising. + * @return True if advertising stopped successfully. + */ +bool NimBLEServer::stopAdvertising(uint8_t inst_id) { + return getAdvertising()->stop(inst_id); +} // stopAdvertising +#endif + +#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) +/** + * @brief Start advertising. + * @param [in] duration The duration in milliseconds to advertise for, default = forever. + * @return True if advertising started successfully. + * @details Start the server advertising its existence. This is a convenience function and is equivalent to + * retrieving the advertising object and invoking start upon it. + */ +bool NimBLEServer::startAdvertising(uint32_t duration) { + return getAdvertising()->start(duration); +} // startAdvertising +#endif + + +/** + * @brief Stop advertising. + * @return True if advertising stopped successfully. + */ +bool NimBLEServer::stopAdvertising() { + return getAdvertising()->stop(); +} // stopAdvertising + + +/** + * @brief Get the MTU of the client. + * @returns The client MTU or 0 if not found/connected. + */ +uint16_t NimBLEServer::getPeerMTU(uint16_t conn_id) { + return ble_att_mtu(conn_id); +} //getPeerMTU + + +/** + * @brief Request an Update the connection parameters: + * * Can only be used after a connection has been established. + * @param [in] conn_handle The connection handle of the peer to send the request to. + * @param [in] minInterval The minimum connection interval in 1.25ms units. + * @param [in] maxInterval The maximum connection interval in 1.25ms units. + * @param [in] latency The number of packets allowed to skip (extends max interval). + * @param [in] timeout The timeout time in 10ms units before disconnecting. + */ +void NimBLEServer::updateConnParams(uint16_t conn_handle, + uint16_t minInterval, uint16_t maxInterval, + uint16_t latency, uint16_t timeout) +{ + ble_gap_upd_params params; + + params.latency = latency; + params.itvl_max = maxInterval; // max_int = 0x20*1.25ms = 40ms + params.itvl_min = minInterval; // min_int = 0x10*1.25ms = 20ms + params.supervision_timeout = timeout; // timeout = 400*10ms = 4000ms + params.min_ce_len = BLE_GAP_INITIAL_CONN_MIN_CE_LEN; // Minimum length of connection event in 0.625ms units + params.max_ce_len = BLE_GAP_INITIAL_CONN_MAX_CE_LEN; // Maximum length of connection event in 0.625ms units + + int rc = ble_gap_update_params(conn_handle, ¶ms); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Update params error: %d, %s", rc, NimBLEUtils::returnCodeToString(rc)); + } +} // updateConnParams + + +/** + * @brief Request an update of the data packet length. + * * Can only be used after a connection has been established. + * @details Sends a data length update request to the peer. + * The Data Length Extension (DLE) allows to increase the Data Channel Payload from 27 bytes to up to 251 bytes. + * The peer needs to support the Bluetooth 4.2 specifications, to be capable of DLE. + * @param [in] conn_handle The connection handle of the peer to send the request to. + * @param [in] tx_octets The preferred number of payload octets to use (Range 0x001B-0x00FB). + */ +void NimBLEServer::setDataLen(uint16_t conn_handle, uint16_t tx_octets) { +#if defined(CONFIG_NIMBLE_CPP_IDF) && !defined(ESP_IDF_VERSION) || \ + (ESP_IDF_VERSION_MAJOR * 100 + ESP_IDF_VERSION_MINOR * 10 + ESP_IDF_VERSION_PATCH) < 432 + return; +#else + uint16_t tx_time = (tx_octets + 14) * 8; + + int rc = ble_gap_set_data_len(conn_handle, tx_octets, tx_time); + if(rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Set data length error: %d, %s", rc, NimBLEUtils::returnCodeToString(rc)); + } +#endif +} // setDataLen + + +bool NimBLEServer::setIndicateWait(uint16_t conn_handle) { + for(auto i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++) { + if(m_indWait[i] == conn_handle) { + return false; + } + } + + return true; +} + + +void NimBLEServer::clearIndicateWait(uint16_t conn_handle) { + for(auto i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++) { + if(m_indWait[i] == conn_handle) { + m_indWait[i] = BLE_HS_CONN_HANDLE_NONE; + return; + } + } +} + + +/** Default callback handlers */ +void NimBLEServerCallbacks::onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo) { + NIMBLE_LOGD("NimBLEServerCallbacks", "onConnect(): Default"); +} // onConnect + +void NimBLEServerCallbacks::onDisconnect(NimBLEServer* pServer, + NimBLEConnInfo& connInfo, int reason) { + NIMBLE_LOGD("NimBLEServerCallbacks", "onDisconnect(): Default"); +} // onDisconnect + +void NimBLEServerCallbacks::onMTUChange(uint16_t MTU, NimBLEConnInfo& connInfo) { + NIMBLE_LOGD("NimBLEServerCallbacks", "onMTUChange(): Default"); +} // onMTUChange + +uint32_t NimBLEServerCallbacks::onPassKeyDisplay(){ + NIMBLE_LOGD("NimBLEServerCallbacks", "onPassKeyDisplay: default: 123456"); + return 123456; +} //onPassKeyDisplay + +void NimBLEServerCallbacks::onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pin){ + NIMBLE_LOGD("NimBLEServerCallbacks", "onConfirmPIN: default: true"); + NimBLEDevice::injectConfirmPIN(connInfo, true); +} // onConfirmPIN + +void NimBLEServerCallbacks::onIdentity(const NimBLEConnInfo& connInfo){ + NIMBLE_LOGD("NimBLEServerCallbacks", "onIdentity: default"); +} // onIdentity + +void NimBLEServerCallbacks::onAuthenticationComplete(const NimBLEConnInfo& connInfo){ + NIMBLE_LOGD("NimBLEServerCallbacks", "onAuthenticationComplete: default"); +} // onAuthenticationComplete + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLEServer.h b/lib/esp-nimble-cpp/src/NimBLEServer.h new file mode 100644 index 0000000..0b175ea --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEServer.h @@ -0,0 +1,185 @@ +/* + * NimBLEServer.h + * + * Created: on March 2, 2020 + * Author H2zero + * + * Originally: + * + * BLEServer.h + * + * Created on: Apr 16, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLESERVER_H_ +#define MAIN_NIMBLESERVER_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#define NIMBLE_ATT_REMOVE_HIDE 1 +#define NIMBLE_ATT_REMOVE_DELETE 2 + +#define onMtuChanged onMTUChange + +#include "NimBLEUtils.h" +#include "NimBLEAddress.h" +#if CONFIG_BT_NIMBLE_EXT_ADV +#include "NimBLEExtAdvertising.h" +#else +#include "NimBLEAdvertising.h" +#endif +#include "NimBLEService.h" +#include "NimBLEConnInfo.h" + + +class NimBLEService; +class NimBLECharacteristic; +class NimBLEServerCallbacks; + + +/** + * @brief The model of a %BLE server. + */ +class NimBLEServer { +public: + size_t getConnectedCount(); + NimBLEService* createService(const char* uuid); + NimBLEService* createService(const NimBLEUUID &uuid); + void removeService(NimBLEService* service, bool deleteSvc = false); + void addService(NimBLEService* service); + void setCallbacks(NimBLEServerCallbacks* pCallbacks, + bool deleteCallbacks = true); +#if CONFIG_BT_NIMBLE_EXT_ADV + NimBLEExtAdvertising* getAdvertising(); + bool startAdvertising(uint8_t inst_id, + int duration = 0, + int max_events = 0); + bool stopAdvertising(uint8_t inst_id); +#endif +# if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) + NimBLEAdvertising* getAdvertising(); + bool startAdvertising(uint32_t duration = 0); +#endif + bool stopAdvertising(); + void start(); + NimBLEService* getServiceByUUID(const char* uuid, uint16_t instanceId = 0); + NimBLEService* getServiceByUUID(const NimBLEUUID &uuid, uint16_t instanceId = 0); + NimBLEService* getServiceByHandle(uint16_t handle); + int disconnect(uint16_t connID, + uint8_t reason = BLE_ERR_REM_USER_CONN_TERM); + int disconnect(const NimBLEConnInfo &connInfo, + uint8_t reason = BLE_ERR_REM_USER_CONN_TERM); + void updateConnParams(uint16_t conn_handle, + uint16_t minInterval, uint16_t maxInterval, + uint16_t latency, uint16_t timeout); + void setDataLen(uint16_t conn_handle, uint16_t tx_octets); + uint16_t getPeerMTU(uint16_t conn_id); + std::vector getPeerDevices(); + NimBLEConnInfo getPeerInfo(size_t index); + NimBLEConnInfo getPeerInfo(const NimBLEAddress& address); + NimBLEConnInfo getPeerIDInfo(uint16_t id); +#if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_) + void advertiseOnDisconnect(bool); +#endif + +private: + NimBLEServer(); + ~NimBLEServer(); + friend class NimBLECharacteristic; + friend class NimBLEService; + friend class NimBLEDevice; + friend class NimBLEAdvertising; +#if CONFIG_BT_NIMBLE_EXT_ADV + friend class NimBLEExtAdvertising; + friend class NimBLEExtAdvertisementData; +#endif + + bool m_gattsStarted; +#if !CONFIG_BT_NIMBLE_EXT_ADV + bool m_advertiseOnDisconnect; +#endif + bool m_svcChanged; + NimBLEServerCallbacks* m_pServerCallbacks; + bool m_deleteCallbacks; + uint16_t m_indWait[CONFIG_BT_NIMBLE_MAX_CONNECTIONS]; + std::vector m_connectedPeersVec; + +// uint16_t m_svcChgChrHdl; // Future use + + std::vector m_svcVec; + std::vector m_notifyChrVec; + + static int handleGapEvent(struct ble_gap_event *event, void *arg); + void serviceChanged(); + void resetGATT(); + bool setIndicateWait(uint16_t conn_handle); + void clearIndicateWait(uint16_t conn_handle); +}; // NimBLEServer + + +/** + * @brief Callbacks associated with the operation of a %BLE server. + */ +class NimBLEServerCallbacks { +public: + virtual ~NimBLEServerCallbacks() {}; + + /** + * @brief Handle a client connection. + * This is called when a client connects. + * @param [in] pServer A pointer to the %BLE server that received the client connection. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + * about the peer connection parameters. + */ + virtual void onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo); + + /** + * @brief Handle a client disconnection. + * This is called when a client discconnects. + * @param [in] pServer A pointer to the %BLE server that received the client disconnection. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + * about the peer connection parameters. + * @param [in] reason The reason code for the disconnection. + */ + virtual void onDisconnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo, int reason); + + /** + * @brief Called when the connection MTU changes. + * @param [in] MTU The new MTU value. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + * about the peer connection parameters. + */ + virtual void onMTUChange(uint16_t MTU, NimBLEConnInfo& connInfo); + + /** + * @brief Called when a client requests a passkey for pairing (display). + * @return The passkey to be sent to the client. + */ + virtual uint32_t onPassKeyDisplay(); + + /** + * @brief Called when using numeric comparision for pairing. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + * Should be passed back to NimBLEDevice::injectConfirmPIN + * @param [in] pin The pin to compare with the client. + */ + virtual void onConfirmPIN(const NimBLEConnInfo& connInfo, uint32_t pin); + + /** + * @brief Called when the pairing procedure is complete. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + * about the peer connection parameters. + */ + virtual void onAuthenticationComplete(const NimBLEConnInfo& connInfo); + + /** + * @brief Called when the peer identity address is resolved. + * @param [in] connInfo A reference to a NimBLEConnInfo instance with information + */ + virtual void onIdentity(const NimBLEConnInfo& connInfo); +}; // NimBLEServerCallbacks + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ +#endif /* MAIN_NIMBLESERVER_H_ */ diff --git a/lib/esp-nimble-cpp/src/NimBLEService.cpp b/lib/esp-nimble-cpp/src/NimBLEService.cpp new file mode 100644 index 0000000..8055869 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEService.cpp @@ -0,0 +1,446 @@ +/* + * NimBLEService.cpp + * + * Created: on March 2, 2020 + * Author H2zero + * + * Originally: + * + * BLEService.cpp + * + * Created on: Mar 25, 2017 + * Author: kolban + */ + +// A service is identified by a UUID. A service is also the container for one or more characteristics. + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLEDevice.h" +#include "NimBLEService.h" +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLEService"; // Tag for logging. + +#define NULL_HANDLE (0xffff) + + +/** + * @brief Construct an instance of the NimBLEService + * @param [in] uuid The UUID of the service. + */ +NimBLEService::NimBLEService(const char* uuid) +: NimBLEService(NimBLEUUID(uuid)) { +} + + +/** + * @brief Construct an instance of the BLEService + * @param [in] uuid The UUID of the service. + */ +NimBLEService::NimBLEService(const NimBLEUUID &uuid) { + m_uuid = uuid; + m_handle = NULL_HANDLE; + m_pSvcDef = nullptr; + m_removed = 0; + +} // NimBLEService + + +NimBLEService::~NimBLEService() { + if(m_pSvcDef != nullptr) { + if(m_pSvcDef->characteristics != nullptr) { + for(int i=0; m_pSvcDef->characteristics[i].uuid != NULL; ++i) { + if(m_pSvcDef->characteristics[i].descriptors) { + delete(m_pSvcDef->characteristics[i].descriptors); + } + } + delete(m_pSvcDef->characteristics); + } + + delete(m_pSvcDef); + } + + for(auto &it : m_chrVec) { + delete it; + } +} + +/** + * @brief Dump details of this BLE GATT service. + */ +void NimBLEService::dump() { + NIMBLE_LOGD(LOG_TAG, "Service: uuid:%s, handle: 0x%2x", + m_uuid.toString().c_str(), + m_handle); + + std::string res; + int count = 0; + char hex[5]; + for (auto &it: m_chrVec) { + if (count > 0) {res += "\n";} + snprintf(hex, sizeof(hex), "%04x", it->getHandle()); + count++; + res += "handle: 0x"; + res += hex; + res += ", uuid: " + std::string(it->getUUID()); + } + NIMBLE_LOGD(LOG_TAG, "Characteristics:\n%s", res.c_str()); +} // dump + + +/** + * @brief Get the UUID of the service. + * @return the UUID of the service. + */ +NimBLEUUID NimBLEService::getUUID() { + return m_uuid; +} // getUUID + + +/** + * @brief Builds the database of characteristics/descriptors for the service + * and registers it with the NimBLE stack. + * @return bool success/failure . + */ +bool NimBLEService::start() { + NIMBLE_LOGD(LOG_TAG, ">> start(): Starting service: %s", toString().c_str()); + + // Rebuild the service definition if the server attributes have changed. + if(getServer()->m_svcChanged && m_pSvcDef != nullptr) { + if(m_pSvcDef[0].characteristics) { + if(m_pSvcDef[0].characteristics[0].descriptors) { + delete(m_pSvcDef[0].characteristics[0].descriptors); + } + delete(m_pSvcDef[0].characteristics); + } + delete(m_pSvcDef); + m_pSvcDef = nullptr; + } + + if(m_pSvcDef == nullptr) { + // Nimble requires an array of services to be sent to the api + // Since we are adding 1 at a time we create an array of 2 and set the type + // of the second service to 0 to indicate the end of the array. + ble_gatt_svc_def* svc = new ble_gatt_svc_def[2]; + ble_gatt_chr_def* pChr_a = nullptr; + ble_gatt_dsc_def* pDsc_a = nullptr; + + svc[0].type = BLE_GATT_SVC_TYPE_PRIMARY; + svc[0].uuid = &m_uuid.getNative()->u; + svc[0].includes = NULL; + + int removedCount = 0; + for(auto it = m_chrVec.begin(); it != m_chrVec.end(); ) { + if ((*it)->m_removed > 0) { + if ((*it)->m_removed == NIMBLE_ATT_REMOVE_DELETE) { + delete *it; + it = m_chrVec.erase(it); + } else { + ++removedCount; + ++it; + } + continue; + } + + ++it; + } + + size_t numChrs = m_chrVec.size() - removedCount; + NIMBLE_LOGD(LOG_TAG,"Adding %d characteristics for service %s", numChrs, toString().c_str()); + + if(!numChrs){ + svc[0].characteristics = NULL; + }else{ + // Nimble requires the last characteristic to have it's uuid = 0 to indicate the end + // of the characteristics for the service. We create 1 extra and set it to null + // for this purpose. + pChr_a = new ble_gatt_chr_def[numChrs + 1]{}; + int i = 0; + for(auto chr_it = m_chrVec.begin(); chr_it != m_chrVec.end(); ++chr_it) { + if((*chr_it)->m_removed > 0) { + continue; + } + + removedCount = 0; + for(auto it = (*chr_it)->m_dscVec.begin(); it != (*chr_it)->m_dscVec.end(); ) { + if ((*it)->m_removed > 0) { + if ((*it)->m_removed == NIMBLE_ATT_REMOVE_DELETE) { + delete *it; + it = (*chr_it)->m_dscVec.erase(it); + } else { + ++removedCount; + ++it; + } + continue; + } + + ++it; + } + + size_t numDscs = (*chr_it)->m_dscVec.size() - removedCount; + + if(!numDscs){ + pChr_a[i].descriptors = NULL; + } else { + // Must have last descriptor uuid = 0 so we have to create 1 extra + pDsc_a = new ble_gatt_dsc_def[numDscs+1]; + int d = 0; + for(auto dsc_it = (*chr_it)->m_dscVec.begin(); dsc_it != (*chr_it)->m_dscVec.end(); ++dsc_it ) { + if((*dsc_it)->m_removed > 0) { + continue; + } + pDsc_a[d].uuid = &(*dsc_it)->m_uuid.getNative()->u; + pDsc_a[d].att_flags = (*dsc_it)->m_properties; + pDsc_a[d].min_key_size = 0; + pDsc_a[d].access_cb = NimBLEDescriptor::handleGapEvent; + pDsc_a[d].arg = (*dsc_it); + ++d; + } + + pDsc_a[numDscs].uuid = NULL; + pChr_a[i].descriptors = pDsc_a; + } + + pChr_a[i].uuid = &(*chr_it)->m_uuid.getNative()->u; + pChr_a[i].access_cb = NimBLECharacteristic::handleGapEvent; + pChr_a[i].arg = (*chr_it); + pChr_a[i].flags = (*chr_it)->m_properties; + pChr_a[i].min_key_size = 0; + pChr_a[i].val_handle = &(*chr_it)->m_handle; + ++i; + } + + pChr_a[numChrs].uuid = NULL; + svc[0].characteristics = pChr_a; + } + + // end of services must indicate to api with type = 0 + svc[1].type = 0; + m_pSvcDef = svc; + } + + int rc = ble_gatts_count_cfg((const ble_gatt_svc_def*)m_pSvcDef); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gatts_count_cfg failed, rc= %d, %s", rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + + rc = ble_gatts_add_svcs((const ble_gatt_svc_def*)m_pSvcDef); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gatts_add_svcs, rc= %d, %s", rc, NimBLEUtils::returnCodeToString(rc)); + return false; + + } + + NIMBLE_LOGD(LOG_TAG, "<< start()"); + return true; +} // start + + +/** + * @brief Get the handle associated with this service. + * @return The handle associated with this service. + */ +uint16_t NimBLEService::getHandle() { + if (m_handle == NULL_HANDLE) { + ble_gatts_find_svc(&getUUID().getNative()->u, &m_handle); + } + return m_handle; +} // getHandle + + +/** + * @brief Create a new BLE Characteristic associated with this service. + * @param [in] uuid - The UUID of the characteristic. + * @param [in] properties - The properties of the characteristic. + * @param [in] max_len - The maximum length in bytes that the characteristic value can hold. + * @return The new BLE characteristic. + */ +NimBLECharacteristic* NimBLEService::createCharacteristic(const char* uuid, uint32_t properties, uint16_t max_len) { + return createCharacteristic(NimBLEUUID(uuid), properties, max_len); +} + + +/** + * @brief Create a new BLE Characteristic associated with this service. + * @param [in] uuid - The UUID of the characteristic. + * @param [in] properties - The properties of the characteristic. + * @param [in] max_len - The maximum length in bytes that the characteristic value can hold. + * @return The new BLE characteristic. + */ +NimBLECharacteristic* NimBLEService::createCharacteristic(const NimBLEUUID &uuid, uint32_t properties, uint16_t max_len) { + NimBLECharacteristic* pCharacteristic = new NimBLECharacteristic(uuid, properties, max_len, this); + + if (getCharacteristic(uuid) != nullptr) { + NIMBLE_LOGD(LOG_TAG, "<< Adding a duplicate characteristic with UUID: %s", + std::string(uuid).c_str()); + } + + addCharacteristic(pCharacteristic); + return pCharacteristic; +} // createCharacteristic + + +/** + * @brief Add a characteristic to the service. + * @param[in] pCharacteristic A pointer to the characteristic instance to add to the service. + */ +void NimBLEService::addCharacteristic(NimBLECharacteristic* pCharacteristic) { + bool foundRemoved = false; + + if(pCharacteristic->m_removed > 0) { + for(auto& it : m_chrVec) { + if(it == pCharacteristic) { + foundRemoved = true; + pCharacteristic->m_removed = 0; + } + } + } + + if(!foundRemoved) { + m_chrVec.push_back(pCharacteristic); + } + + pCharacteristic->setService(this); + getServer()->serviceChanged(); +} // addCharacteristic + + +/** + * @brief Remove a characteristic from the service. + * @param[in] pCharacteristic A pointer to the characteristic instance to remove from the service. + * @param[in] deleteChr If true it will delete the characteristic instance and free it's resources. + */ +void NimBLEService::removeCharacteristic(NimBLECharacteristic* pCharacteristic, bool deleteChr) { + // Check if the characteristic was already removed and if so, check if this + // is being called to delete the object and do so if requested. + // Otherwise, ignore the call and return. + if(pCharacteristic->m_removed > 0) { + if(deleteChr) { + for(auto it = m_chrVec.begin(); it != m_chrVec.end(); ++it) { + if ((*it) == pCharacteristic) { + m_chrVec.erase(it); + delete *it; + break; + } + } + } + + return; + } + + pCharacteristic->m_removed = deleteChr ? NIMBLE_ATT_REMOVE_DELETE : NIMBLE_ATT_REMOVE_HIDE; + getServer()->serviceChanged(); +} // removeCharacteristic + + +/** + * @brief Get a pointer to the characteristic object with the specified UUID. + * @param [in] uuid The UUID of the characteristic. + * @param instanceId The index of the characteristic to return (used when multiple characteristics have the same UUID). + * @return A pointer to the characteristic object or nullptr if not found. + */ +NimBLECharacteristic* NimBLEService::getCharacteristic(const char* uuid, uint16_t instanceId) { + return getCharacteristic(NimBLEUUID(uuid), instanceId); +} + +/** + * @brief Get a pointer to the characteristic object with the specified UUID. + * @param [in] uuid The UUID of the characteristic. + * @param instanceId The index of the characteristic to return (used when multiple characteristics have the same UUID). + * @return A pointer to the characteristic object or nullptr if not found. + */ +NimBLECharacteristic* NimBLEService::getCharacteristic(const NimBLEUUID &uuid, uint16_t instanceId) { + uint16_t position = 0; + for (auto &it : m_chrVec) { + if (it->getUUID() == uuid) { + if (position == instanceId) { + return it; + } + position++; + } + } + return nullptr; +} + +/** + * @brief Get a pointer to the characteristic object with the specified handle. + * @param handle The handle of the characteristic. + * @return A pointer to the characteristic object or nullptr if not found. + */ +NimBLECharacteristic *NimBLEService::getCharacteristicByHandle(uint16_t handle) { + for (auto &it : m_chrVec) { + if (it->getHandle() == handle) { + return it; + } + } + return nullptr; +} + +/** + * @return A vector containing pointers to each characteristic associated with this service. + */ +std::vector NimBLEService::getCharacteristics() { + return m_chrVec; +} + +/** + * @return A vector containing pointers to each characteristic with the provided UUID associated with this service. + */ +std::vector NimBLEService::getCharacteristics(const char *uuid) { + return getCharacteristics(NimBLEUUID(uuid)); +} + +/** + * @return A vector containing pointers to each characteristic with the provided UUID associated with this service. + */ +std::vector NimBLEService::getCharacteristics(const NimBLEUUID &uuid) { + std::vector result; + for (auto &it : m_chrVec) { + if (it->getUUID() == uuid) { + result.push_back(it); + } + } + return result; +} + +/** + * @brief Return a string representation of this service. + * A service is defined by: + * * Its UUID + * * Its handle + * @return A string representation of this service. + */ +std::string NimBLEService::toString() { + std::string res = "UUID: " + getUUID().toString(); + char hex[5]; + snprintf(hex, sizeof(hex), "%04x", getHandle()); + res += ", handle: 0x"; + res += hex; + return res; +} // toString + + +/** + * @brief Get the BLE server associated with this service. + * @return The BLEServer associated with this service. + */ +NimBLEServer* NimBLEService::getServer() { + return NimBLEDevice::getServer(); +}// getServer + + +/** + * @brief Checks if the service has been started. + * @return True if the service has been started. + */ +bool NimBLEService::isStarted() { + return m_pSvcDef != nullptr; +} + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ diff --git a/lib/esp-nimble-cpp/src/NimBLEService.h b/lib/esp-nimble-cpp/src/NimBLEService.h new file mode 100644 index 0000000..73cbd87 --- /dev/null +++ b/lib/esp-nimble-cpp/src/NimBLEService.h @@ -0,0 +1,87 @@ +/* + * NimBLEService.h + * + * Created: on March 2, 2020 + * Author H2zero + * + * Originally: + * + * BLEService.h + * + * Created on: Mar 25, 2017 + * Author: kolban + */ + +#ifndef MAIN_NIMBLESERVICE_H_ +#define MAIN_NIMBLESERVICE_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + +#include "NimBLEServer.h" +#include "NimBLECharacteristic.h" +#include "NimBLEUUID.h" + + +class NimBLEServer; +class NimBLECharacteristic; + + +/** + * @brief The model of a %BLE service. + * + */ +class NimBLEService { +public: + + NimBLEService(const char* uuid); + NimBLEService(const NimBLEUUID &uuid); + ~NimBLEService(); + + NimBLEServer* getServer(); + + NimBLEUUID getUUID(); + uint16_t getHandle(); + std::string toString(); + void dump(); + bool isStarted(); + bool start(); + + NimBLECharacteristic* createCharacteristic(const char* uuid, + uint32_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN); + + NimBLECharacteristic* createCharacteristic(const NimBLEUUID &uuid, + uint32_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + uint16_t max_len = BLE_ATT_ATTR_MAX_LEN); + + void addCharacteristic(NimBLECharacteristic* pCharacteristic); + void removeCharacteristic(NimBLECharacteristic* pCharacteristic, bool deleteChr = false); + NimBLECharacteristic* getCharacteristic(const char* uuid, uint16_t instanceId = 0); + NimBLECharacteristic* getCharacteristic(const NimBLEUUID &uuid, uint16_t instanceId = 0); + NimBLECharacteristic* getCharacteristicByHandle(uint16_t handle); + + std::vector getCharacteristics(); + std::vector getCharacteristics(const char* uuid); + std::vector getCharacteristics(const NimBLEUUID &uuid); + + +private: + + friend class NimBLEServer; + friend class NimBLEDevice; + + uint16_t m_handle; + NimBLEUUID m_uuid; + ble_gatt_svc_def* m_pSvcDef; + uint8_t m_removed; + std::vector m_chrVec; + +}; // NimBLEService + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */ +#endif /* MAIN_NIMBLESERVICE_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLEUUID.cpp b/lib/esp-nimble-cpp/src/NimBLEUUID.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEUUID.cpp rename to lib/esp-nimble-cpp/src/NimBLEUUID.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEUUID.h b/lib/esp-nimble-cpp/src/NimBLEUUID.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEUUID.h rename to lib/esp-nimble-cpp/src/NimBLEUUID.h diff --git a/lib/NimBLE-Arduino/src/NimBLEUtils.cpp b/lib/esp-nimble-cpp/src/NimBLEUtils.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEUtils.cpp rename to lib/esp-nimble-cpp/src/NimBLEUtils.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEUtils.h b/lib/esp-nimble-cpp/src/NimBLEUtils.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEUtils.h rename to lib/esp-nimble-cpp/src/NimBLEUtils.h diff --git a/lib/esp-nimble-cpp/src/nimconfig.h b/lib/esp-nimble-cpp/src/nimconfig.h new file mode 100644 index 0000000..9c19031 --- /dev/null +++ b/lib/esp-nimble-cpp/src/nimconfig.h @@ -0,0 +1,140 @@ +/** @file + * + * IGNORE THIS FILE IF USING ESP-IDF, USE MENUCONFIG TO SET NIMBLE OPTIONS. + * + * The config options here are for doxygen documentation only. + */ + +#pragma once + +#include "sdkconfig.h" +#include "nimconfig_rename.h" + +#if defined(CONFIG_BT_ENABLED) + +// Allows cpp wrapper to select the correct include paths when using esp-idf +#define CONFIG_NIMBLE_CPP_IDF + +/* Cannot use client without scan */ +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) && !defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) +#define CONFIG_BT_NIMBLE_ROLE_OBSERVER +#endif + +/* Cannot use server without advertise */ +#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) && !defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +#define CONFIG_BT_NIMBLE_ROLE_BROADCASTER +#endif + +/* Enables the use of Arduino String class for attribute values */ +#if defined __has_include +# if __has_include () +# define NIMBLE_CPP_ARDUINO_STRING_AVAILABLE +# endif +#endif + +#endif /* CONFIG_BT_ENABLED */ + +#ifdef _DOXYGEN_ + +/** @brief Un-comment to change the number of simultaneous connections (esp controller max is 9) */ +#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS 3 + +/** @brief Un-comment to enable storing the timestamp when an attribute value is updated\n + * This allows for checking the last update time using getTimeStamp() or getValue(time_t*)\n + * If disabled, the timestamp returned from these functions will be 0.\n + * Disabling timestamps will reduce the memory used for each value.\n + * 1 = Enabled, 0 = Disabled; Default = Disabled + */ +#define CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED 0 + +/** @brief Uncomment to set the default allocation size (bytes) for each attribute if\n + * not specified when the constructor is called. This is also the size used when a remote\n + * characteristic or descriptor is constructed before a value is read/notifed.\n + * Increasing this will reduce reallocations but increase memory footprint.\n + * Default value is 20. Range: 1 : 512 (BLE_ATT_ATTR_MAX_LEN) + */ +#define CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH 20 + +/** @brief Un-comment to change the default MTU size */ +#define CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU 255 + +/** @brief Un-comment to change default device name */ +#define CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME "nimble" + +/** @brief Un-comment to set the debug log messages level from the NimBLE host stack.\n + * Values: 0 = DEBUG, 1 = INFO, 2 = WARNING, 3 = ERROR, 4 = CRITICAL, 5+ = NONE\n + * Uses approx. 32kB of flash memory. + */ +#define CONFIG_BT_NIMBLE_LOG_LEVEL 5 + +/** @brief Un-comment to set the debug log messages level from the NimBLE CPP Wrapper.\n + * Values: 0 = NONE, 1 = ERROR, 2 = WARNING, 3 = INFO, 4+ = DEBUG\n + * Uses approx. 32kB of flash memory. + */ +#define CONFIG_NIMBLE_CPP_LOG_LEVEL 0 + +/** @brief Un-comment to see NimBLE host return codes as text debug log messages. + * Uses approx. 7kB of flash memory. + */ +#define CONFIG_NIMBLE_CPP_ENABLE_RETURN_CODE_TEXT + +/** @brief Un-comment to see GAP event codes as text in debug log messages. + * Uses approx. 1kB of flash memory. + */ +#define CONFIG_NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT + +/** @brief Un-comment to see advertisment types as text while scanning in debug log messages. + * Uses approx. 250 bytes of flash memory. + */ +#define CONFIG_NIMBLE_CPP_ENABLE_ADVERTISMENT_TYPE_TEXT + +/** @brief Un-comment to change the default GAP appearance */ +#define CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE 0x0 + + /** @brief Un-comment if not using NimBLE Client functions \n + * Reduces flash size by approx. 7kB. + */ +#define CONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED + +/** @brief Un-comment if not using NimBLE Scan functions \n + * Reduces flash size by approx. 26kB. + */ +#define CONFIG_BT_NIMBLE_ROLE_OBSERVER_DISABLED + +/** @brief Un-comment if not using NimBLE Server functions \n + * Reduces flash size by approx. 16kB. + */ +#define CONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED + +/** @brief Un-comment if not using NimBLE Advertising functions \n + * Reduces flash size by approx. 5kB. + */ +#define CONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED + +/** @brief Un-comment to change the number of devices allowed to store/bond with */ +#define CONFIG_BT_NIMBLE_MAX_BONDS 3 + +/** @brief Un-comment to change the maximum number of CCCD subscriptions to store */ +#define CONFIG_BT_NIMBLE_MAX_CCCDS 8 + +/** @brief Un-comment to change the random address refresh time (in seconds) */ +#define CONFIG_BT_NIMBLE_RPA_TIMEOUT 900 + +/** + * @brief Un-comment to change the number of MSYS buffers available. + * @details MSYS is a system level mbuf registry. For prepare write & prepare \n + * responses MBUFs are allocated out of msys_1 pool. This may need to be increased if\n + * you are sending large blocks of data with a low MTU. E.g: 512 bytes with 23 MTU will fail. + */ +#define CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT 12 + +/** @brief Un-comment to use external PSRAM for the NimBLE host */ +#define CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL 1 + +/** @brief Un-comment to change the core NimBLE host runs on */ +#define CONFIG_BT_NIMBLE_PINNED_TO_CORE 0 + +/** @brief Un-comment to change the stack size for the NimBLE host task */ +#define CONFIG_BT_NIMBLE_TASK_STACK_SIZE 4096 + +#endif // _DOXYGEN_ diff --git a/lib/NimBLE-Arduino/src/nimconfig_rename.h b/lib/esp-nimble-cpp/src/nimconfig_rename.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimconfig_rename.h rename to lib/esp-nimble-cpp/src/nimconfig_rename.h diff --git a/platformio.ini b/platformio.ini index 60e7795..aadaca2 100644 --- a/platformio.ini +++ b/platformio.ini @@ -27,6 +27,9 @@ build_flags = -DESP32 -DARDUINO_ARCH_ESP32 lib_deps = +lib_ignore = + esp-nimble-cpp + NetworkClientSecure monitor_speed = 115200 monitor_filters = diff --git a/lib/NimBLE-Arduino/CHANGELOG.md b/resources/NimBLE-Arduino/CHANGELOG.md similarity index 100% rename from lib/NimBLE-Arduino/CHANGELOG.md rename to resources/NimBLE-Arduino/CHANGELOG.md diff --git a/lib/NimBLE-Arduino/LICENSE b/resources/NimBLE-Arduino/LICENSE similarity index 100% rename from lib/NimBLE-Arduino/LICENSE rename to resources/NimBLE-Arduino/LICENSE diff --git a/lib/NimBLE-Arduino/README.md b/resources/NimBLE-Arduino/README.md similarity index 100% rename from lib/NimBLE-Arduino/README.md rename to resources/NimBLE-Arduino/README.md diff --git a/resources/NimBLE-Arduino/docs/Bluetooth 5 features.md b/resources/NimBLE-Arduino/docs/Bluetooth 5 features.md new file mode 100644 index 0000000..3737b0d --- /dev/null +++ b/resources/NimBLE-Arduino/docs/Bluetooth 5 features.md @@ -0,0 +1,28 @@ +# Bluetooth 5.x features + +## About extended advertising +Extended advertising allows for much more capability and flexibility. + +* Allows for 251 bytes of advertisement data and up to 1650 bytes when chained (configuration dependant) vs 31. + +* New PHY's (physical layers) that allow for faster data rate (2M PHY) or long range/slower data rates (CODED PHY) as well as the original 1M PHY. + +* New periodic advertising, allowing the scanning device to sync with the advertisements of a beacon. This allows for the scanning device to sleep or perform other tasks before the next expected advertisement is sent, preserving cpu cycles and power (To be implemented). +
    + +## Enabling extended advertising +Extended advertising is supported when enabled with the config option `CONFIG_BT_NIMBLE_EXT_ADV` set to a value of 1. This is done in menuconfig under `Component config > Bluetooth > NimBLE options > Enable extended advertising`, or set in `nimconfig.h` for Arduino, or in `build_flags` in PlatformIO. + +When enabled the following will occur: +* `NimBLEScan::start` method will scan on both the 1M PHY and the coded PHY standards automatically. + +* `NimBLEClient::connect` will use the primary PHY the device is listening on, unless specified (see below). + +* `NimBLEClient::setConnectPhy` becomes available to specify the PHY's to connect with (default is all). + +* `NimBLEAdvertising` is no longer available for use and is replaced by `NimBLEExtAdvertising`. `NimBLEDevice::getAdvertising` will now return an instance of `NimBLEExtAdvertising`. + +* `NimBLEAdvertisementData` is no longer available for use and is replaced by `NimBLEExtAdvertisement`. This new class is where everything about the advertisement is configured, including the advertisement intervals and advertisement ended callback. + + + diff --git a/lib/NimBLE-Arduino/docs/Command_line_config.md b/resources/NimBLE-Arduino/docs/Command_line_config.md similarity index 100% rename from lib/NimBLE-Arduino/docs/Command_line_config.md rename to resources/NimBLE-Arduino/docs/Command_line_config.md diff --git a/lib/NimBLE-Arduino/docs/Doxyfile b/resources/NimBLE-Arduino/docs/Doxyfile similarity index 100% rename from lib/NimBLE-Arduino/docs/Doxyfile rename to resources/NimBLE-Arduino/docs/Doxyfile diff --git a/lib/NimBLE-Arduino/docs/Improvements_and_updates.md b/resources/NimBLE-Arduino/docs/Improvements_and_updates.md similarity index 100% rename from lib/NimBLE-Arduino/docs/Improvements_and_updates.md rename to resources/NimBLE-Arduino/docs/Improvements_and_updates.md diff --git a/lib/NimBLE-Arduino/docs/Migration_guide.md b/resources/NimBLE-Arduino/docs/Migration_guide.md similarity index 100% rename from lib/NimBLE-Arduino/docs/Migration_guide.md rename to resources/NimBLE-Arduino/docs/Migration_guide.md diff --git a/lib/NimBLE-Arduino/docs/New_user_guide.md b/resources/NimBLE-Arduino/docs/New_user_guide.md similarity index 100% rename from lib/NimBLE-Arduino/docs/New_user_guide.md rename to resources/NimBLE-Arduino/docs/New_user_guide.md diff --git a/resources/NimBLE-Arduino/docs/Usage_tips.md b/resources/NimBLE-Arduino/docs/Usage_tips.md new file mode 100644 index 0000000..8a60ef2 --- /dev/null +++ b/resources/NimBLE-Arduino/docs/Usage_tips.md @@ -0,0 +1,41 @@ +# Usage Tips + +## Put BLE functions in a task running on the NimBLE stack core + +When commands are sent to the stack from a different core they can experience delays in execution. +This library detects this and invokes the esp32 IPC to reroute these commands through the correct core but this also increases overhead. +Therefore it is highly recommended to create tasks for BLE to run on the same core, the macro `CONFIG_BT_NIMBLE_PINNED_TO_CORE` can be used to set the core. +
    + +## Do not delete client instances unless necessary or unused + +When a client instance has been created and has connected to a peer device and it has retrieved service/characteristic information it will store that data for the life of the client instance. +If you are periodically connecting to the same devices and you have deleted the client instance or the services when connecting again it will cause a retrieval of that information from the peer again. +This results in significant energy drain on the battery of the devices, fragments heap, and reduces connection performance. + +Client instances in this library use approximately 20% of the original bluedroid library, deleting them will provide much less gain than it did before. + +It is recommended to retain the client instance in cases where the time between connecting to the same device is less than 5 minutes. +
    + +## Only retrieve the services and characteristics needed + +As a client the use of `NimBLEClient::getServices` or `NimBLERemoteService::getCharacteristics` and using `true` for the parameter should be limited to devices that are not known. +Instead `NimBLEClient::getService(NimBLEUUID)` or `NimBLERemoteService::getCharacteristic(NimBLEUUID)` should be used to access certain attributes that are useful to the application. +This reduces energy consumed, heap allocated, connection time and improves overall efficiency. +
    + +## Check return values + +Many user issues can be avoided by checking if a function returned successfully, by either testing for true/false such as when calling `NimBLEClient::connect`, +or nullptr such as when calling `NimBLEClient::getService`. The latter being a must, as calling a method on a nullptr will surely result in a crash. +Most of the functions in this library return something that should be checked before proceeding. +
    + +## There will be bugs - please report them + +No code is bug free and unit testing will not find them all on it's own. If you encounter a bug, please report it along with any logs and decoded backtrace if applicable. +Best efforts will be made to correct any errors ASAP. + +Bug reports can be made at https://github.com/h2zero/NimBLE-Arduino/issues or https://github.com/h2zero/esp-nimble-cpp/issues. +Questions and suggestions will be happily accepted there as well. diff --git a/lib/NimBLE-Arduino/docs/index.md b/resources/NimBLE-Arduino/docs/index.md similarity index 100% rename from lib/NimBLE-Arduino/docs/index.md rename to resources/NimBLE-Arduino/docs/index.md diff --git a/lib/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino b/resources/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino rename to resources/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino diff --git a/lib/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.md b/resources/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.md similarity index 100% rename from lib/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.md rename to resources/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.md diff --git a/lib/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.ino b/resources/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.ino rename to resources/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.ino diff --git a/lib/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.md b/resources/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.md similarity index 100% rename from lib/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.md rename to resources/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.md diff --git a/lib/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.ino b/resources/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.ino rename to resources/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.ino diff --git a/lib/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.md b/resources/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.md similarity index 100% rename from lib/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.md rename to resources/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.md diff --git a/lib/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino b/resources/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino rename to resources/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino diff --git a/lib/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino b/resources/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino rename to resources/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino diff --git a/lib/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_multi_advertiser/NimBLE_multi_advertiser.ino b/resources/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_multi_advertiser/NimBLE_multi_advertiser.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_multi_advertiser/NimBLE_multi_advertiser.ino rename to resources/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_multi_advertiser/NimBLE_multi_advertiser.ino diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Client/NimBLE_Client.ino b/resources/NimBLE-Arduino/examples/NimBLE_Client/NimBLE_Client.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/NimBLE_Client/NimBLE_Client.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Client/NimBLE_Client.ino diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Scan_Continuous/NimBLE_Scan_Continuous.ino b/resources/NimBLE-Arduino/examples/NimBLE_Scan_Continuous/NimBLE_Scan_Continuous.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/NimBLE_Scan_Continuous/NimBLE_Scan_Continuous.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Scan_Continuous/NimBLE_Scan_Continuous.ino diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino b/resources/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino b/resources/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino similarity index 97% rename from lib/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino index 0936b5a..bfa956a 100644 --- a/lib/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino +++ b/resources/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino @@ -1,95 +1,95 @@ -/** NimBLE_Secure_Client Demo: - * - * This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client. - * Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective. - * To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash. - * - * Created: on Jan 08 2021 - * Author: mblasee - */ - -#include - -class ClientCallbacks : public NimBLEClientCallbacks -{ - uint32_t onPassKeyRequest() - { - Serial.println("Client Passkey Request"); - /** return the passkey to send to the server */ - /** Change this to be different from NimBLE_Secure_Server if you want to test what happens on key mismatch */ - return 123456; - }; -}; -static ClientCallbacks clientCB; - -void setup() -{ - Serial.begin(115200); - Serial.println("Starting NimBLE Client"); - - NimBLEDevice::init(""); -#ifdef ESP_PLATFORM - NimBLEDevice::setPower(ESP_PWR_LVL_P9); /** +9db */ -#else - NimBLEDevice::setPower(9); /** +9db */ -#endif - NimBLEDevice::setSecurityAuth(true, true, true); - NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_ONLY); - NimBLEScan *pScan = NimBLEDevice::getScan(); - NimBLEScanResults results = pScan->start(5); - - NimBLEUUID serviceUuid("ABCD"); - - for (int i = 0; i < results.getCount(); i++) - { - NimBLEAdvertisedDevice device = results.getDevice(i); - Serial.println(device.getName().c_str()); - - if (device.isAdvertisingService(serviceUuid)) - { - NimBLEClient *pClient = NimBLEDevice::createClient(); - pClient->setClientCallbacks(&clientCB, false); - - if (pClient->connect(&device)) - { - pClient->secureConnection(); - NimBLERemoteService *pService = pClient->getService(serviceUuid); - if (pService != nullptr) - { - NimBLERemoteCharacteristic *pNonSecureCharacteristic = pService->getCharacteristic("1234"); - - if (pNonSecureCharacteristic != nullptr) - { - // Testing to read a non secured characteristic, you should be able to read this even if you have mismatching passkeys. - std::string value = pNonSecureCharacteristic->readValue(); - // print or do whatever you need with the value - Serial.println(value.c_str()); - } - - NimBLERemoteCharacteristic *pSecureCharacteristic = pService->getCharacteristic("1235"); - - if (pSecureCharacteristic != nullptr) - { - // Testing to read a secured characteristic, you should be able to read this only if you have matching passkeys, otherwise you should - // get an error like this. E NimBLERemoteCharacteristic: "<< readValue rc=261" - // This means you are trying to do something without the proper permissions. - std::string value = pSecureCharacteristic->readValue(); - // print or do whatever you need with the value - Serial.println(value.c_str()); - } - } - } - else - { - // failed to connect - Serial.println("failed to connect"); - } - - NimBLEDevice::deleteClient(pClient); - } - } -} - -void loop() -{ -} +/** NimBLE_Secure_Client Demo: + * + * This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client. + * Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective. + * To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash. + * + * Created: on Jan 08 2021 + * Author: mblasee + */ + +#include + +class ClientCallbacks : public NimBLEClientCallbacks +{ + uint32_t onPassKeyRequest() + { + Serial.println("Client Passkey Request"); + /** return the passkey to send to the server */ + /** Change this to be different from NimBLE_Secure_Server if you want to test what happens on key mismatch */ + return 123456; + }; +}; +static ClientCallbacks clientCB; + +void setup() +{ + Serial.begin(115200); + Serial.println("Starting NimBLE Client"); + + NimBLEDevice::init(""); +#ifdef ESP_PLATFORM + NimBLEDevice::setPower(ESP_PWR_LVL_P9); /** +9db */ +#else + NimBLEDevice::setPower(9); /** +9db */ +#endif + NimBLEDevice::setSecurityAuth(true, true, true); + NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_ONLY); + NimBLEScan *pScan = NimBLEDevice::getScan(); + NimBLEScanResults results = pScan->start(5); + + NimBLEUUID serviceUuid("ABCD"); + + for (int i = 0; i < results.getCount(); i++) + { + NimBLEAdvertisedDevice device = results.getDevice(i); + Serial.println(device.getName().c_str()); + + if (device.isAdvertisingService(serviceUuid)) + { + NimBLEClient *pClient = NimBLEDevice::createClient(); + pClient->setClientCallbacks(&clientCB, false); + + if (pClient->connect(&device)) + { + pClient->secureConnection(); + NimBLERemoteService *pService = pClient->getService(serviceUuid); + if (pService != nullptr) + { + NimBLERemoteCharacteristic *pNonSecureCharacteristic = pService->getCharacteristic("1234"); + + if (pNonSecureCharacteristic != nullptr) + { + // Testing to read a non secured characteristic, you should be able to read this even if you have mismatching passkeys. + std::string value = pNonSecureCharacteristic->readValue(); + // print or do whatever you need with the value + Serial.println(value.c_str()); + } + + NimBLERemoteCharacteristic *pSecureCharacteristic = pService->getCharacteristic("1235"); + + if (pSecureCharacteristic != nullptr) + { + // Testing to read a secured characteristic, you should be able to read this only if you have matching passkeys, otherwise you should + // get an error like this. E NimBLERemoteCharacteristic: "<< readValue rc=261" + // This means you are trying to do something without the proper permissions. + std::string value = pSecureCharacteristic->readValue(); + // print or do whatever you need with the value + Serial.println(value.c_str()); + } + } + } + else + { + // failed to connect + Serial.println("failed to connect"); + } + + NimBLEDevice::deleteClient(pClient); + } + } +} + +void loop() +{ +} diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino b/resources/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino similarity index 97% rename from lib/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino index 9cd866c..b2aff62 100644 --- a/lib/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino +++ b/resources/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino @@ -1,41 +1,41 @@ -/** NimBLE_Secure_Server Demo: - * - * This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client. - * Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective. - * To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash. - * - * Created: on Jan 08 2021 - * Author: mblasee - */ - -#include - -void setup() { - Serial.begin(115200); - Serial.println("Starting NimBLE Server"); - NimBLEDevice::init("NimBLE"); -#ifdef ESP_PLATFORM - NimBLEDevice::setPower(ESP_PWR_LVL_P9); /** +9db */ -#else - NimBLEDevice::setPower(9); /** +9db */ -#endif - - NimBLEDevice::setSecurityAuth(true, true, true); - NimBLEDevice::setSecurityPasskey(123456); - NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY); - NimBLEServer *pServer = NimBLEDevice::createServer(); - NimBLEService *pService = pServer->createService("ABCD"); - NimBLECharacteristic *pNonSecureCharacteristic = pService->createCharacteristic("1234", NIMBLE_PROPERTY::READ ); - NimBLECharacteristic *pSecureCharacteristic = pService->createCharacteristic("1235", NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::READ_AUTHEN); - - pService->start(); - pNonSecureCharacteristic->setValue("Hello Non Secure BLE"); - pSecureCharacteristic->setValue("Hello Secure BLE"); - - NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); - pAdvertising->addServiceUUID("ABCD"); - pAdvertising->start(); -} - -void loop() { -} +/** NimBLE_Secure_Server Demo: + * + * This example demonstrates the secure passkey protected conenction and communication between an esp32 server and an esp32 client. + * Please note that esp32 stores auth info in nvs memory. After a successful connection it is possible that a passkey change will be ineffective. + * To avoid this clear the memory of the esp32's between security testings. esptool.py is capable of this, example: esptool.py --port /dev/ttyUSB0 erase_flash. + * + * Created: on Jan 08 2021 + * Author: mblasee + */ + +#include + +void setup() { + Serial.begin(115200); + Serial.println("Starting NimBLE Server"); + NimBLEDevice::init("NimBLE"); +#ifdef ESP_PLATFORM + NimBLEDevice::setPower(ESP_PWR_LVL_P9); /** +9db */ +#else + NimBLEDevice::setPower(9); /** +9db */ +#endif + + NimBLEDevice::setSecurityAuth(true, true, true); + NimBLEDevice::setSecurityPasskey(123456); + NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY); + NimBLEServer *pServer = NimBLEDevice::createServer(); + NimBLEService *pService = pServer->createService("ABCD"); + NimBLECharacteristic *pNonSecureCharacteristic = pService->createCharacteristic("1234", NIMBLE_PROPERTY::READ ); + NimBLECharacteristic *pSecureCharacteristic = pService->createCharacteristic("1235", NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::READ_AUTHEN); + + pService->start(); + pNonSecureCharacteristic->setValue("Hello Non Secure BLE"); + pSecureCharacteristic->setValue("Hello Secure BLE"); + + NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); + pAdvertising->addServiceUUID("ABCD"); + pAdvertising->start(); +} + +void loop() { +} diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino b/resources/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino b/resources/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino diff --git a/lib/NimBLE-Arduino/examples/NimBLE_Service_Data_Advertiser/NimBLE_Service_Data_Advertiser.ino b/resources/NimBLE-Arduino/examples/NimBLE_Service_Data_Advertiser/NimBLE_Service_Data_Advertiser.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/NimBLE_Service_Data_Advertiser/NimBLE_Service_Data_Advertiser.ino rename to resources/NimBLE-Arduino/examples/NimBLE_Service_Data_Advertiser/NimBLE_Service_Data_Advertiser.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_client/BLE_client.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_client/BLE_client.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_client/BLE_client.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_client/BLE_client.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_iBeacon/BLE_iBeacon.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_iBeacon/BLE_iBeacon.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_iBeacon/BLE_iBeacon.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_iBeacon/BLE_iBeacon.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_notify/BLE_notify.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_notify/BLE_notify.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_notify/BLE_notify.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_notify/BLE_notify.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_scan/BLE_scan.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_scan/BLE_scan.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_scan/BLE_scan.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_scan/BLE_scan.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server/BLE_server.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server/BLE_server.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server/BLE_server.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server/BLE_server.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server_multiconnect/BLE_server_multiconnect.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server_multiconnect/BLE_server_multiconnect.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server_multiconnect/BLE_server_multiconnect.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server_multiconnect/BLE_server_multiconnect.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_uart/BLE_uart.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_uart/BLE_uart.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_uart/BLE_uart.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_uart/BLE_uart.ino diff --git a/lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_write/BLE_write.ino b/resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_write/BLE_write.ino similarity index 100% rename from lib/NimBLE-Arduino/examples/Refactored_original_examples/BLE_write/BLE_write.ino rename to resources/NimBLE-Arduino/examples/Refactored_original_examples/BLE_write/BLE_write.ino diff --git a/lib/NimBLE-Arduino/library.properties b/resources/NimBLE-Arduino/library.properties similarity index 100% rename from lib/NimBLE-Arduino/library.properties rename to resources/NimBLE-Arduino/library.properties diff --git a/resources/NimBLE-Arduino/src/HIDKeyboardTypes.h b/resources/NimBLE-Arduino/src/HIDKeyboardTypes.h new file mode 100644 index 0000000..531437e --- /dev/null +++ b/resources/NimBLE-Arduino/src/HIDKeyboardTypes.h @@ -0,0 +1,402 @@ +/* Copyright (c) 2015 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Note: this file was pulled from different parts of the USBHID library, in mbed SDK + */ + +#ifndef KEYBOARD_DEFS_H +#define KEYBOARD_DEFS_H + +#define REPORT_ID_KEYBOARD 1 +#define REPORT_ID_VOLUME 3 + +/* Modifiers */ +enum MODIFIER_KEY { + KEY_CTRL = 1, + KEY_SHIFT = 2, + KEY_ALT = 4, +}; + + +enum MEDIA_KEY { + KEY_NEXT_TRACK, /*!< next Track Button */ + KEY_PREVIOUS_TRACK, /*!< Previous track Button */ + KEY_STOP, /*!< Stop Button */ + KEY_PLAY_PAUSE, /*!< Play/Pause Button */ + KEY_MUTE, /*!< Mute Button */ + KEY_VOLUME_UP, /*!< Volume Up Button */ + KEY_VOLUME_DOWN, /*!< Volume Down Button */ +}; + +enum FUNCTION_KEY { + KEY_F1 = 128, /* F1 key */ + KEY_F2, /* F2 key */ + KEY_F3, /* F3 key */ + KEY_F4, /* F4 key */ + KEY_F5, /* F5 key */ + KEY_F6, /* F6 key */ + KEY_F7, /* F7 key */ + KEY_F8, /* F8 key */ + KEY_F9, /* F9 key */ + KEY_F10, /* F10 key */ + KEY_F11, /* F11 key */ + KEY_F12, /* F12 key */ + + KEY_PRINT_SCREEN, /* Print Screen key */ + KEY_SCROLL_LOCK, /* Scroll lock */ + KEY_CAPS_LOCK, /* caps lock */ + KEY_NUM_LOCK, /* num lock */ + KEY_INSERT, /* Insert key */ + KEY_HOME, /* Home key */ + KEY_PAGE_UP, /* Page Up key */ + KEY_PAGE_DOWN, /* Page Down key */ + + RIGHT_ARROW, /* Right arrow */ + LEFT_ARROW, /* Left arrow */ + DOWN_ARROW, /* Down arrow */ + UP_ARROW, /* Up arrow */ +}; + +typedef struct { + unsigned char usage; + unsigned char modifier; +} KEYMAP; + +#ifdef US_KEYBOARD +/* US keyboard (as HID standard) */ +#define KEYMAP_SIZE (152) +const KEYMAP keymap[KEYMAP_SIZE] = { + {0, 0}, /* NUL */ + {0, 0}, /* SOH */ + {0, 0}, /* STX */ + {0, 0}, /* ETX */ + {0, 0}, /* EOT */ + {0, 0}, /* ENQ */ + {0, 0}, /* ACK */ + {0, 0}, /* BEL */ + {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ + {0x2b, 0}, /* TAB */ /* Keyboard Tab */ + {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ + {0, 0}, /* VT */ + {0, 0}, /* FF */ + {0, 0}, /* CR */ + {0, 0}, /* SO */ + {0, 0}, /* SI */ + {0, 0}, /* DEL */ + {0, 0}, /* DC1 */ + {0, 0}, /* DC2 */ + {0, 0}, /* DC3 */ + {0, 0}, /* DC4 */ + {0, 0}, /* NAK */ + {0, 0}, /* SYN */ + {0, 0}, /* ETB */ + {0, 0}, /* CAN */ + {0, 0}, /* EM */ + {0, 0}, /* SUB */ + {0, 0}, /* ESC */ + {0, 0}, /* FS */ + {0, 0}, /* GS */ + {0, 0}, /* RS */ + {0, 0}, /* US */ + {0x2c, 0}, /* */ + {0x1e, KEY_SHIFT}, /* ! */ + {0x34, KEY_SHIFT}, /* " */ + {0x20, KEY_SHIFT}, /* # */ + {0x21, KEY_SHIFT}, /* $ */ + {0x22, KEY_SHIFT}, /* % */ + {0x24, KEY_SHIFT}, /* & */ + {0x34, 0}, /* ' */ + {0x26, KEY_SHIFT}, /* ( */ + {0x27, KEY_SHIFT}, /* ) */ + {0x25, KEY_SHIFT}, /* * */ + {0x2e, KEY_SHIFT}, /* + */ + {0x36, 0}, /* , */ + {0x2d, 0}, /* - */ + {0x37, 0}, /* . */ + {0x38, 0}, /* / */ + {0x27, 0}, /* 0 */ + {0x1e, 0}, /* 1 */ + {0x1f, 0}, /* 2 */ + {0x20, 0}, /* 3 */ + {0x21, 0}, /* 4 */ + {0x22, 0}, /* 5 */ + {0x23, 0}, /* 6 */ + {0x24, 0}, /* 7 */ + {0x25, 0}, /* 8 */ + {0x26, 0}, /* 9 */ + {0x33, KEY_SHIFT}, /* : */ + {0x33, 0}, /* ; */ + {0x36, KEY_SHIFT}, /* < */ + {0x2e, 0}, /* = */ + {0x37, KEY_SHIFT}, /* > */ + {0x38, KEY_SHIFT}, /* ? */ + {0x1f, KEY_SHIFT}, /* @ */ + {0x04, KEY_SHIFT}, /* A */ + {0x05, KEY_SHIFT}, /* B */ + {0x06, KEY_SHIFT}, /* C */ + {0x07, KEY_SHIFT}, /* D */ + {0x08, KEY_SHIFT}, /* E */ + {0x09, KEY_SHIFT}, /* F */ + {0x0a, KEY_SHIFT}, /* G */ + {0x0b, KEY_SHIFT}, /* H */ + {0x0c, KEY_SHIFT}, /* I */ + {0x0d, KEY_SHIFT}, /* J */ + {0x0e, KEY_SHIFT}, /* K */ + {0x0f, KEY_SHIFT}, /* L */ + {0x10, KEY_SHIFT}, /* M */ + {0x11, KEY_SHIFT}, /* N */ + {0x12, KEY_SHIFT}, /* O */ + {0x13, KEY_SHIFT}, /* P */ + {0x14, KEY_SHIFT}, /* Q */ + {0x15, KEY_SHIFT}, /* R */ + {0x16, KEY_SHIFT}, /* S */ + {0x17, KEY_SHIFT}, /* T */ + {0x18, KEY_SHIFT}, /* U */ + {0x19, KEY_SHIFT}, /* V */ + {0x1a, KEY_SHIFT}, /* W */ + {0x1b, KEY_SHIFT}, /* X */ + {0x1c, KEY_SHIFT}, /* Y */ + {0x1d, KEY_SHIFT}, /* Z */ + {0x2f, 0}, /* [ */ + {0x31, 0}, /* \ */ + {0x30, 0}, /* ] */ + {0x23, KEY_SHIFT}, /* ^ */ + {0x2d, KEY_SHIFT}, /* _ */ + {0x35, 0}, /* ` */ + {0x04, 0}, /* a */ + {0x05, 0}, /* b */ + {0x06, 0}, /* c */ + {0x07, 0}, /* d */ + {0x08, 0}, /* e */ + {0x09, 0}, /* f */ + {0x0a, 0}, /* g */ + {0x0b, 0}, /* h */ + {0x0c, 0}, /* i */ + {0x0d, 0}, /* j */ + {0x0e, 0}, /* k */ + {0x0f, 0}, /* l */ + {0x10, 0}, /* m */ + {0x11, 0}, /* n */ + {0x12, 0}, /* o */ + {0x13, 0}, /* p */ + {0x14, 0}, /* q */ + {0x15, 0}, /* r */ + {0x16, 0}, /* s */ + {0x17, 0}, /* t */ + {0x18, 0}, /* u */ + {0x19, 0}, /* v */ + {0x1a, 0}, /* w */ + {0x1b, 0}, /* x */ + {0x1c, 0}, /* y */ + {0x1d, 0}, /* z */ + {0x2f, KEY_SHIFT}, /* { */ + {0x31, KEY_SHIFT}, /* | */ + {0x30, KEY_SHIFT}, /* } */ + {0x35, KEY_SHIFT}, /* ~ */ + {0,0}, /* DEL */ + + {0x3a, 0}, /* F1 */ + {0x3b, 0}, /* F2 */ + {0x3c, 0}, /* F3 */ + {0x3d, 0}, /* F4 */ + {0x3e, 0}, /* F5 */ + {0x3f, 0}, /* F6 */ + {0x40, 0}, /* F7 */ + {0x41, 0}, /* F8 */ + {0x42, 0}, /* F9 */ + {0x43, 0}, /* F10 */ + {0x44, 0}, /* F11 */ + {0x45, 0}, /* F12 */ + + {0x46, 0}, /* PRINT_SCREEN */ + {0x47, 0}, /* SCROLL_LOCK */ + {0x39, 0}, /* CAPS_LOCK */ + {0x53, 0}, /* NUM_LOCK */ + {0x49, 0}, /* INSERT */ + {0x4a, 0}, /* HOME */ + {0x4b, 0}, /* PAGE_UP */ + {0x4e, 0}, /* PAGE_DOWN */ + + {0x4f, 0}, /* RIGHT_ARROW */ + {0x50, 0}, /* LEFT_ARROW */ + {0x51, 0}, /* DOWN_ARROW */ + {0x52, 0}, /* UP_ARROW */ +}; + +#else +/* UK keyboard */ +#define KEYMAP_SIZE (152) +const KEYMAP keymap[KEYMAP_SIZE] = { + {0, 0}, /* NUL */ + {0, 0}, /* SOH */ + {0, 0}, /* STX */ + {0, 0}, /* ETX */ + {0, 0}, /* EOT */ + {0, 0}, /* ENQ */ + {0, 0}, /* ACK */ + {0, 0}, /* BEL */ + {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ + {0x2b, 0}, /* TAB */ /* Keyboard Tab */ + {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ + {0, 0}, /* VT */ + {0, 0}, /* FF */ + {0, 0}, /* CR */ + {0, 0}, /* SO */ + {0, 0}, /* SI */ + {0, 0}, /* DEL */ + {0, 0}, /* DC1 */ + {0, 0}, /* DC2 */ + {0, 0}, /* DC3 */ + {0, 0}, /* DC4 */ + {0, 0}, /* NAK */ + {0, 0}, /* SYN */ + {0, 0}, /* ETB */ + {0, 0}, /* CAN */ + {0, 0}, /* EM */ + {0, 0}, /* SUB */ + {0, 0}, /* ESC */ + {0, 0}, /* FS */ + {0, 0}, /* GS */ + {0, 0}, /* RS */ + {0, 0}, /* US */ + {0x2c, 0}, /* */ + {0x1e, KEY_SHIFT}, /* ! */ + {0x1f, KEY_SHIFT}, /* " */ + {0x32, 0}, /* # */ + {0x21, KEY_SHIFT}, /* $ */ + {0x22, KEY_SHIFT}, /* % */ + {0x24, KEY_SHIFT}, /* & */ + {0x34, 0}, /* ' */ + {0x26, KEY_SHIFT}, /* ( */ + {0x27, KEY_SHIFT}, /* ) */ + {0x25, KEY_SHIFT}, /* * */ + {0x2e, KEY_SHIFT}, /* + */ + {0x36, 0}, /* , */ + {0x2d, 0}, /* - */ + {0x37, 0}, /* . */ + {0x38, 0}, /* / */ + {0x27, 0}, /* 0 */ + {0x1e, 0}, /* 1 */ + {0x1f, 0}, /* 2 */ + {0x20, 0}, /* 3 */ + {0x21, 0}, /* 4 */ + {0x22, 0}, /* 5 */ + {0x23, 0}, /* 6 */ + {0x24, 0}, /* 7 */ + {0x25, 0}, /* 8 */ + {0x26, 0}, /* 9 */ + {0x33, KEY_SHIFT}, /* : */ + {0x33, 0}, /* ; */ + {0x36, KEY_SHIFT}, /* < */ + {0x2e, 0}, /* = */ + {0x37, KEY_SHIFT}, /* > */ + {0x38, KEY_SHIFT}, /* ? */ + {0x34, KEY_SHIFT}, /* @ */ + {0x04, KEY_SHIFT}, /* A */ + {0x05, KEY_SHIFT}, /* B */ + {0x06, KEY_SHIFT}, /* C */ + {0x07, KEY_SHIFT}, /* D */ + {0x08, KEY_SHIFT}, /* E */ + {0x09, KEY_SHIFT}, /* F */ + {0x0a, KEY_SHIFT}, /* G */ + {0x0b, KEY_SHIFT}, /* H */ + {0x0c, KEY_SHIFT}, /* I */ + {0x0d, KEY_SHIFT}, /* J */ + {0x0e, KEY_SHIFT}, /* K */ + {0x0f, KEY_SHIFT}, /* L */ + {0x10, KEY_SHIFT}, /* M */ + {0x11, KEY_SHIFT}, /* N */ + {0x12, KEY_SHIFT}, /* O */ + {0x13, KEY_SHIFT}, /* P */ + {0x14, KEY_SHIFT}, /* Q */ + {0x15, KEY_SHIFT}, /* R */ + {0x16, KEY_SHIFT}, /* S */ + {0x17, KEY_SHIFT}, /* T */ + {0x18, KEY_SHIFT}, /* U */ + {0x19, KEY_SHIFT}, /* V */ + {0x1a, KEY_SHIFT}, /* W */ + {0x1b, KEY_SHIFT}, /* X */ + {0x1c, KEY_SHIFT}, /* Y */ + {0x1d, KEY_SHIFT}, /* Z */ + {0x2f, 0}, /* [ */ + {0x64, 0}, /* \ */ + {0x30, 0}, /* ] */ + {0x23, KEY_SHIFT}, /* ^ */ + {0x2d, KEY_SHIFT}, /* _ */ + {0x35, 0}, /* ` */ + {0x04, 0}, /* a */ + {0x05, 0}, /* b */ + {0x06, 0}, /* c */ + {0x07, 0}, /* d */ + {0x08, 0}, /* e */ + {0x09, 0}, /* f */ + {0x0a, 0}, /* g */ + {0x0b, 0}, /* h */ + {0x0c, 0}, /* i */ + {0x0d, 0}, /* j */ + {0x0e, 0}, /* k */ + {0x0f, 0}, /* l */ + {0x10, 0}, /* m */ + {0x11, 0}, /* n */ + {0x12, 0}, /* o */ + {0x13, 0}, /* p */ + {0x14, 0}, /* q */ + {0x15, 0}, /* r */ + {0x16, 0}, /* s */ + {0x17, 0}, /* t */ + {0x18, 0}, /* u */ + {0x19, 0}, /* v */ + {0x1a, 0}, /* w */ + {0x1b, 0}, /* x */ + {0x1c, 0}, /* y */ + {0x1d, 0}, /* z */ + {0x2f, KEY_SHIFT}, /* { */ + {0x64, KEY_SHIFT}, /* | */ + {0x30, KEY_SHIFT}, /* } */ + {0x32, KEY_SHIFT}, /* ~ */ + {0,0}, /* DEL */ + + {0x3a, 0}, /* F1 */ + {0x3b, 0}, /* F2 */ + {0x3c, 0}, /* F3 */ + {0x3d, 0}, /* F4 */ + {0x3e, 0}, /* F5 */ + {0x3f, 0}, /* F6 */ + {0x40, 0}, /* F7 */ + {0x41, 0}, /* F8 */ + {0x42, 0}, /* F9 */ + {0x43, 0}, /* F10 */ + {0x44, 0}, /* F11 */ + {0x45, 0}, /* F12 */ + + {0x46, 0}, /* PRINT_SCREEN */ + {0x47, 0}, /* SCROLL_LOCK */ + {0x39, 0}, /* CAPS_LOCK */ + {0x53, 0}, /* NUM_LOCK */ + {0x49, 0}, /* INSERT */ + {0x4a, 0}, /* HOME */ + {0x4b, 0}, /* PAGE_UP */ + {0x4e, 0}, /* PAGE_DOWN */ + + {0x4f, 0}, /* RIGHT_ARROW */ + {0x50, 0}, /* LEFT_ARROW */ + {0x51, 0}, /* DOWN_ARROW */ + {0x52, 0}, /* UP_ARROW */ +}; +#endif + +#endif diff --git a/resources/NimBLE-Arduino/src/HIDTypes.h b/resources/NimBLE-Arduino/src/HIDTypes.h new file mode 100644 index 0000000..8ee31da --- /dev/null +++ b/resources/NimBLE-Arduino/src/HIDTypes.h @@ -0,0 +1,91 @@ +/* Copyright (c) 2010-2011 mbed.org, MIT License +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this software +* and associated documentation files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef USBCLASS_HID_TYPES +#define USBCLASS_HID_TYPES + +#include + +/* */ +#define HID_VERSION_1_11 (0x0111) + +/* HID Class */ +#define HID_CLASS (3) +#define HID_SUBCLASS_NONE (0) +#define HID_PROTOCOL_NONE (0) + +/* Descriptors */ +#define HID_DESCRIPTOR (33) +#define HID_DESCRIPTOR_LENGTH (0x09) +#define REPORT_DESCRIPTOR (34) + +/* Class requests */ +#define GET_REPORT (0x1) +#define GET_IDLE (0x2) +#define SET_REPORT (0x9) +#define SET_IDLE (0xa) + +/* HID Class Report Descriptor */ +/* Short items: size is 0, 1, 2 or 3 specifying 0, 1, 2 or 4 (four) bytes */ +/* of data as per HID Class standard */ + +/* Main items */ +#define HIDINPUT(size) (0x80 | size) +#define HIDOUTPUT(size) (0x90 | size) +#define FEATURE(size) (0xb0 | size) +#define COLLECTION(size) (0xa0 | size) +#define END_COLLECTION(size) (0xc0 | size) + +/* Global items */ +#define USAGE_PAGE(size) (0x04 | size) +#define LOGICAL_MINIMUM(size) (0x14 | size) +#define LOGICAL_MAXIMUM(size) (0x24 | size) +#define PHYSICAL_MINIMUM(size) (0x34 | size) +#define PHYSICAL_MAXIMUM(size) (0x44 | size) +#define UNIT_EXPONENT(size) (0x54 | size) +#define UNIT(size) (0x64 | size) +#define REPORT_SIZE(size) (0x74 | size) //bits +#define REPORT_ID(size) (0x84 | size) +#define REPORT_COUNT(size) (0x94 | size) //bytes +#define PUSH(size) (0xa4 | size) +#define POP(size) (0xb4 | size) + +/* Local items */ +#define USAGE(size) (0x08 | size) +#define USAGE_MINIMUM(size) (0x18 | size) +#define USAGE_MAXIMUM(size) (0x28 | size) +#define DESIGNATOR_INDEX(size) (0x38 | size) +#define DESIGNATOR_MINIMUM(size) (0x48 | size) +#define DESIGNATOR_MAXIMUM(size) (0x58 | size) +#define STRING_INDEX(size) (0x78 | size) +#define STRING_MINIMUM(size) (0x88 | size) +#define STRING_MAXIMUM(size) (0x98 | size) +#define DELIMITER(size) (0xa8 | size) + +/* HID Report */ +/* Where report IDs are used the first byte of 'data' will be the */ +/* report ID and 'length' will include this report ID byte. */ + +#define MAX_HID_REPORT_SIZE (64) + +typedef struct { + uint32_t length; + uint8_t data[MAX_HID_REPORT_SIZE]; +} HID_REPORT; + +#endif diff --git a/lib/NimBLE-Arduino/src/NimBLE2904.cpp b/resources/NimBLE-Arduino/src/NimBLE2904.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLE2904.cpp rename to resources/NimBLE-Arduino/src/NimBLE2904.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLE2904.h b/resources/NimBLE-Arduino/src/NimBLE2904.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLE2904.h rename to resources/NimBLE-Arduino/src/NimBLE2904.h diff --git a/lib/NimBLE-Arduino/src/NimBLEAddress.cpp b/resources/NimBLE-Arduino/src/NimBLEAddress.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAddress.cpp rename to resources/NimBLE-Arduino/src/NimBLEAddress.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEAddress.h b/resources/NimBLE-Arduino/src/NimBLEAddress.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAddress.h rename to resources/NimBLE-Arduino/src/NimBLEAddress.h diff --git a/lib/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp b/resources/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp rename to resources/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h b/resources/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h rename to resources/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h diff --git a/lib/NimBLE-Arduino/src/NimBLEAdvertising.cpp b/resources/NimBLE-Arduino/src/NimBLEAdvertising.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAdvertising.cpp rename to resources/NimBLE-Arduino/src/NimBLEAdvertising.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEAdvertising.h b/resources/NimBLE-Arduino/src/NimBLEAdvertising.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAdvertising.h rename to resources/NimBLE-Arduino/src/NimBLEAdvertising.h diff --git a/lib/NimBLE-Arduino/src/NimBLEAttValue.h b/resources/NimBLE-Arduino/src/NimBLEAttValue.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEAttValue.h rename to resources/NimBLE-Arduino/src/NimBLEAttValue.h diff --git a/resources/NimBLE-Arduino/src/NimBLEBeacon.cpp b/resources/NimBLE-Arduino/src/NimBLEBeacon.cpp new file mode 100644 index 0000000..df24ced --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEBeacon.cpp @@ -0,0 +1,157 @@ +/* + * NimBLEBeacon2.cpp + * + * Created: on March 15 2020 + * Author H2zero + * + * Originally: + * + * BLEBeacon.cpp + * + * Created on: Jan 4, 2018 + * Author: kolban + */ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include +#include +#include "NimBLEBeacon.h" +#include "NimBLELog.h" + +#define ENDIAN_CHANGE_U16(x) ((((x)&0xFF00)>>8) + (((x)&0xFF)<<8)) + +static const char* LOG_TAG = "NimBLEBeacon"; + + +/** + * @brief Construct a default beacon object. + */ +NimBLEBeacon::NimBLEBeacon() { + m_beaconData.manufacturerId = 0x4c00; + m_beaconData.subType = 0x02; + m_beaconData.subTypeLength = 0x15; + m_beaconData.major = 0; + m_beaconData.minor = 0; + m_beaconData.signalPower = 0; + memset(m_beaconData.proximityUUID, 0, sizeof(m_beaconData.proximityUUID)); +} // NimBLEBeacon + + +/** + * @brief Retrieve the data that is being advertised. + * @return The advertised data. + */ +std::string NimBLEBeacon::getData() { + return std::string((char*) &m_beaconData, sizeof(m_beaconData)); +} // getData + + +/** + * @brief Get the major value being advertised. + * @return The major value advertised. + */ +uint16_t NimBLEBeacon::getMajor() { + return m_beaconData.major; +} + + +/** + * @brief Get the manufacturer ID being advertised. + * @return The manufacturer ID value advertised. + */ +uint16_t NimBLEBeacon::getManufacturerId() { + return m_beaconData.manufacturerId; +} + + +/** + * @brief Get the minor value being advertised. + * @return minor value advertised. + */ +uint16_t NimBLEBeacon::getMinor() { + return m_beaconData.minor; +} + + +/** + * @brief Get the proximity UUID being advertised. + * @return The UUID advertised. + */ +NimBLEUUID NimBLEBeacon::getProximityUUID() { + return NimBLEUUID(m_beaconData.proximityUUID, 16, true); +} + + +/** + * @brief Get the signal power being advertised. + * @return signal power level advertised. + */ +int8_t NimBLEBeacon::getSignalPower() { + return m_beaconData.signalPower; +} + + +/** + * @brief Set the raw data for the beacon record. + * @param [in] data The raw beacon data. + */ +void NimBLEBeacon::setData(const std::string &data) { + if (data.length() != sizeof(m_beaconData)) { + NIMBLE_LOGE(LOG_TAG, "Unable to set the data ... length passed in was %d and expected %d", + data.length(), sizeof(m_beaconData)); + return; + } + memcpy(&m_beaconData, data.data(), sizeof(m_beaconData)); +} // setData + + +/** + * @brief Set the major value. + * @param [in] major The major value. + */ +void NimBLEBeacon::setMajor(uint16_t major) { + m_beaconData.major = ENDIAN_CHANGE_U16(major); +} // setMajor + + +/** + * @brief Set the manufacturer ID. + * @param [in] manufacturerId The manufacturer ID value. + */ +void NimBLEBeacon::setManufacturerId(uint16_t manufacturerId) { + m_beaconData.manufacturerId = ENDIAN_CHANGE_U16(manufacturerId); +} // setManufacturerId + + +/** + * @brief Set the minor value. + * @param [in] minor The minor value. + */ +void NimBLEBeacon::setMinor(uint16_t minor) { + m_beaconData.minor = ENDIAN_CHANGE_U16(minor); +} // setMinor + + +/** + * @brief Set the proximity UUID. + * @param [in] uuid The proximity UUID. + */ +void NimBLEBeacon::setProximityUUID(const NimBLEUUID &uuid) { + NimBLEUUID temp_uuid = uuid; + temp_uuid.to128(); + std::reverse_copy(temp_uuid.getNative()->u128.value, + temp_uuid.getNative()->u128.value + 16, + m_beaconData.proximityUUID); +} // setProximityUUID + + +/** + * @brief Set the signal power. + * @param [in] signalPower The signal power value. + */ +void NimBLEBeacon::setSignalPower(int8_t signalPower) { + m_beaconData.signalPower = signalPower; +} // setSignalPower + +#endif diff --git a/resources/NimBLE-Arduino/src/NimBLEBeacon.h b/resources/NimBLE-Arduino/src/NimBLEBeacon.h new file mode 100644 index 0000000..82ee61c --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEBeacon.h @@ -0,0 +1,51 @@ +/* + * NimBLEBeacon2.h + * + * Created: on March 15 2020 + * Author H2zero + * + * Originally: + * + * BLEBeacon2.h + * + * Created on: Jan 4, 2018 + * Author: kolban + */ + +#ifndef MAIN_NIMBLEBEACON_H_ +#define MAIN_NIMBLEBEACON_H_ + +#include "NimBLEUUID.h" +/** + * @brief Representation of a beacon. + * See: + * * https://en.wikipedia.org/wiki/IBeacon + */ +class NimBLEBeacon { +private: + struct { + uint16_t manufacturerId; + uint8_t subType; + uint8_t subTypeLength; + uint8_t proximityUUID[16]; + uint16_t major; + uint16_t minor; + int8_t signalPower; + } __attribute__((packed)) m_beaconData; +public: + NimBLEBeacon(); + std::string getData(); + uint16_t getMajor(); + uint16_t getMinor(); + uint16_t getManufacturerId(); + NimBLEUUID getProximityUUID(); + int8_t getSignalPower(); + void setData(const std::string &data); + void setMajor(uint16_t major); + void setMinor(uint16_t minor); + void setManufacturerId(uint16_t manufacturerId); + void setProximityUUID(const NimBLEUUID &uuid); + void setSignalPower(int8_t signalPower); +}; // NimBLEBeacon + +#endif /* MAIN_NIMBLEBEACON_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLECharacteristic.cpp b/resources/NimBLE-Arduino/src/NimBLECharacteristic.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLECharacteristic.cpp rename to resources/NimBLE-Arduino/src/NimBLECharacteristic.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLECharacteristic.h b/resources/NimBLE-Arduino/src/NimBLECharacteristic.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLECharacteristic.h rename to resources/NimBLE-Arduino/src/NimBLECharacteristic.h diff --git a/lib/NimBLE-Arduino/src/NimBLEClient.cpp b/resources/NimBLE-Arduino/src/NimBLEClient.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEClient.cpp rename to resources/NimBLE-Arduino/src/NimBLEClient.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEClient.h b/resources/NimBLE-Arduino/src/NimBLEClient.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEClient.h rename to resources/NimBLE-Arduino/src/NimBLEClient.h diff --git a/lib/NimBLE-Arduino/src/NimBLEConnInfo.h b/resources/NimBLE-Arduino/src/NimBLEConnInfo.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEConnInfo.h rename to resources/NimBLE-Arduino/src/NimBLEConnInfo.h diff --git a/lib/NimBLE-Arduino/src/NimBLEDescriptor.cpp b/resources/NimBLE-Arduino/src/NimBLEDescriptor.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEDescriptor.cpp rename to resources/NimBLE-Arduino/src/NimBLEDescriptor.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEDescriptor.h b/resources/NimBLE-Arduino/src/NimBLEDescriptor.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEDescriptor.h rename to resources/NimBLE-Arduino/src/NimBLEDescriptor.h diff --git a/lib/NimBLE-Arduino/src/NimBLEDevice.cpp b/resources/NimBLE-Arduino/src/NimBLEDevice.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEDevice.cpp rename to resources/NimBLE-Arduino/src/NimBLEDevice.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEDevice.h b/resources/NimBLE-Arduino/src/NimBLEDevice.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEDevice.h rename to resources/NimBLE-Arduino/src/NimBLEDevice.h diff --git a/lib/NimBLE-Arduino/src/NimBLEEddystoneTLM.cpp b/resources/NimBLE-Arduino/src/NimBLEEddystoneTLM.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEEddystoneTLM.cpp rename to resources/NimBLE-Arduino/src/NimBLEEddystoneTLM.cpp diff --git a/resources/NimBLE-Arduino/src/NimBLEEddystoneTLM.h b/resources/NimBLE-Arduino/src/NimBLEEddystoneTLM.h new file mode 100644 index 0000000..265c81b --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEEddystoneTLM.h @@ -0,0 +1,61 @@ +/* + * NimBLEEddystoneTLM.h + * + * Created: on March 15 2020 + * Author H2zero + * + * Originally: + * + * BLEEddystoneTLM.h + * + * Created on: Mar 12, 2018 + * Author: pcbreflux + */ + +#ifndef _NimBLEEddystoneTLM_H_ +#define _NimBLEEddystoneTLM_H_ + +#include "NimBLEUUID.h" + +#include + +#define EDDYSTONE_TLM_FRAME_TYPE 0x20 + +/** + * @brief Representation of a beacon. + * See: + * * https://github.com/google/eddystone + */ +class NimBLEEddystoneTLM { +public: + NimBLEEddystoneTLM(); + std::string getData(); + NimBLEUUID getUUID(); + uint8_t getVersion(); + uint16_t getVolt(); + float getTemp(); + uint32_t getCount(); + uint32_t getTime(); + std::string toString(); + void setData(const std::string &data); + void setUUID(const NimBLEUUID &l_uuid); + void setVersion(uint8_t version); + void setVolt(uint16_t volt); + void setTemp(float temp); + void setCount(uint32_t advCount); + void setTime(uint32_t tmil); + +private: + uint16_t beaconUUID; + struct { + uint8_t frameType; + uint8_t version; + uint16_t volt; + uint16_t temp; + uint32_t advCount; + uint32_t tmil; + } __attribute__((packed)) m_eddystoneData; + +}; // NimBLEEddystoneTLM + +#endif /* _NimBLEEddystoneTLM_H_ */ diff --git a/resources/NimBLE-Arduino/src/NimBLEEddystoneURL.cpp b/resources/NimBLE-Arduino/src/NimBLEEddystoneURL.cpp new file mode 100644 index 0000000..73829d7 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEEddystoneURL.cpp @@ -0,0 +1,204 @@ +/* + * NimBLEEddystoneURL.cpp + * + * Created: on March 15 2020 + * Author H2zero + * + * Originally: + * + * BLEEddystoneURL.cpp + * + * Created on: Mar 12, 2018 + * Author: pcbreflux + */ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include "NimBLEEddystoneURL.h" +#include "NimBLELog.h" + +#include + +static const char LOG_TAG[] = "NimBLEEddystoneURL"; + + +/** + * @brief Construct a default EddystoneURL beacon object. + */ +NimBLEEddystoneURL::NimBLEEddystoneURL() { + beaconUUID = 0xFEAA; + lengthURL = 0; + m_eddystoneData.frameType = EDDYSTONE_URL_FRAME_TYPE; + m_eddystoneData.advertisedTxPower = 0; + memset(m_eddystoneData.url, 0, sizeof(m_eddystoneData.url)); +} // BLEEddystoneURL + + +/** + * @brief Retrieve the data that is being advertised. + * @return The advertised data. + */ +std::string NimBLEEddystoneURL::getData() { + return std::string((char*) &m_eddystoneData, sizeof(m_eddystoneData)); +} // getData + + +/** + * @brief Get the UUID being advertised. + * @return The UUID advertised. + */ +NimBLEUUID NimBLEEddystoneURL::getUUID() { + return NimBLEUUID(beaconUUID); +} // getUUID + + +/** + * @brief Get the transmit power being advertised. + * @return The transmit power. + */ +int8_t NimBLEEddystoneURL::getPower() { + return m_eddystoneData.advertisedTxPower; +} // getPower + + +/** + * @brief Get the raw URL being advertised. + * @return The raw URL. + */ +std::string NimBLEEddystoneURL::getURL() { + return std::string((char*) &m_eddystoneData.url, sizeof(m_eddystoneData.url)); +} // getURL + + +/** + * @brief Get the full URL being advertised. + * @return The full URL. + */ +std::string NimBLEEddystoneURL::getDecodedURL() { + std::string decodedURL = ""; + + switch (m_eddystoneData.url[0]) { + case 0x00: + decodedURL += "http://www."; + break; + case 0x01: + decodedURL += "https://www."; + break; + case 0x02: + decodedURL += "http://"; + break; + case 0x03: + decodedURL += "https://"; + break; + default: + decodedURL += m_eddystoneData.url[0]; + } + + for (int i = 1; i < lengthURL; i++) { + if (m_eddystoneData.url[i] > 33 && m_eddystoneData.url[i] < 127) { + decodedURL += m_eddystoneData.url[i]; + } else { + switch (m_eddystoneData.url[i]) { + case 0x00: + decodedURL += ".com/"; + break; + case 0x01: + decodedURL += ".org/"; + break; + case 0x02: + decodedURL += ".edu/"; + break; + case 0x03: + decodedURL += ".net/"; + break; + case 0x04: + decodedURL += ".info/"; + break; + case 0x05: + decodedURL += ".biz/"; + break; + case 0x06: + decodedURL += ".gov/"; + break; + case 0x07: + decodedURL += ".com"; + break; + case 0x08: + decodedURL += ".org"; + break; + case 0x09: + decodedURL += ".edu"; + break; + case 0x0A: + decodedURL += ".net"; + break; + case 0x0B: + decodedURL += ".info"; + break; + case 0x0C: + decodedURL += ".biz"; + break; + case 0x0D: + decodedURL += ".gov"; + break; + default: + break; + } + } + } + return decodedURL; +} // getDecodedURL + + + +/** + * @brief Set the raw data for the beacon advertisement. + * @param [in] data The raw data to advertise. + */ +void NimBLEEddystoneURL::setData(const std::string &data) { + if (data.length() > sizeof(m_eddystoneData)) { + NIMBLE_LOGE(LOG_TAG, "Unable to set the data ... length passed in was %d and max expected %d", + data.length(), sizeof(m_eddystoneData)); + return; + } + memset(&m_eddystoneData, 0, sizeof(m_eddystoneData)); + memcpy(&m_eddystoneData, data.data(), data.length()); + lengthURL = data.length() - (sizeof(m_eddystoneData) - sizeof(m_eddystoneData.url)); +} // setData + + +/** + * @brief Set the UUID to advertise. + * @param [in] l_uuid The UUID. + */ +void NimBLEEddystoneURL::setUUID(const NimBLEUUID &l_uuid) { + beaconUUID = l_uuid.getNative()->u16.value; +} // setUUID + + +/** + * @brief Set the transmit power to advertise. + * @param [in] advertisedTxPower The transmit power level. + */ +void NimBLEEddystoneURL::setPower(int8_t advertisedTxPower) { + m_eddystoneData.advertisedTxPower = advertisedTxPower; +} // setPower + + +/** + * @brief Set the URL to advertise. + * @param [in] url The URL. + */ +void NimBLEEddystoneURL::setURL(const std::string &url) { + if (url.length() > sizeof(m_eddystoneData.url)) { + NIMBLE_LOGE(LOG_TAG, "Unable to set the url ... length passed in was %d and max expected %d", + url.length(), sizeof(m_eddystoneData.url)); + return; + } + memset(m_eddystoneData.url, 0, sizeof(m_eddystoneData.url)); + memcpy(m_eddystoneData.url, url.data(), url.length()); + lengthURL = url.length(); +} // setURL + + +#endif diff --git a/resources/NimBLE-Arduino/src/NimBLEEddystoneURL.h b/resources/NimBLE-Arduino/src/NimBLEEddystoneURL.h new file mode 100644 index 0000000..9c5f37f --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEEddystoneURL.h @@ -0,0 +1,52 @@ +/* + * NimBLEEddystoneURL.h + * + * Created: on March 15 2020 + * Author H2zero + * + * Originally: + * + * BLEEddystoneURL.h + * + * Created on: Mar 12, 2018 + * Author: pcbreflux + */ + +#ifndef _NIMBLEEddystoneURL_H_ +#define _NIMBLEEddystoneURL_H_ +#include "NimBLEUUID.h" + +#include + +#define EDDYSTONE_URL_FRAME_TYPE 0x10 + +/** + * @brief Representation of a beacon. + * See: + * * https://github.com/google/eddystone + */ +class NimBLEEddystoneURL { +public: + NimBLEEddystoneURL(); + std::string getData(); + NimBLEUUID getUUID(); + int8_t getPower(); + std::string getURL(); + std::string getDecodedURL(); + void setData(const std::string &data); + void setUUID(const NimBLEUUID &l_uuid); + void setPower(int8_t advertisedTxPower); + void setURL(const std::string &url); + +private: + uint16_t beaconUUID; + uint8_t lengthURL; + struct { + uint8_t frameType; + int8_t advertisedTxPower; + uint8_t url[16]; + } __attribute__((packed)) m_eddystoneData; + +}; // NIMBLEEddystoneURL + +#endif /* _NIMBLEEddystoneURL_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLEExtAdvertising.cpp b/resources/NimBLE-Arduino/src/NimBLEExtAdvertising.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEExtAdvertising.cpp rename to resources/NimBLE-Arduino/src/NimBLEExtAdvertising.cpp diff --git a/resources/NimBLE-Arduino/src/NimBLEExtAdvertising.h b/resources/NimBLE-Arduino/src/NimBLEExtAdvertising.h new file mode 100644 index 0000000..b1f21fc --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEExtAdvertising.h @@ -0,0 +1,152 @@ +/* + * NimBLEExtAdvertising.h + * + * Created: on February 6, 2022 + * Author H2zero + */ + +#ifndef MAIN_BLEEXTADVERTISING_H_ +#define MAIN_BLEEXTADVERTISING_H_ +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && \ + defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) && \ + CONFIG_BT_NIMBLE_EXT_ADV + +# if defined(CONFIG_NIMBLE_CPP_IDF) +# include "host/ble_gap.h" +# else +# include "nimble/nimble/host/include/host/ble_gap.h" +# endif + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +#include "NimBLEAddress.h" +#include "NimBLEUUID.h" + +#include + +class NimBLEExtAdvertisingCallbacks; + + +/** + * @brief Extended advertisement data + */ +class NimBLEExtAdvertisement { +public: + NimBLEExtAdvertisement(uint8_t priPhy = BLE_HCI_LE_PHY_1M, + uint8_t secPhy = BLE_HCI_LE_PHY_1M); + void setAppearance(uint16_t appearance); + void setCompleteServices(const NimBLEUUID &uuid); + void setCompleteServices16(const std::vector &v_uuid); + void setCompleteServices32(const std::vector &v_uuid); + void setFlags(uint8_t flag); + void setManufacturerData(const std::string &data); + void setURI(const std::string &uri); + void setName(const std::string &name); + void setPartialServices(const NimBLEUUID &uuid); + void setPartialServices16(const std::vector &v_uuid); + void setPartialServices32(const std::vector &v_uuid); + void setServiceData(const NimBLEUUID &uuid, const std::string &data); + void setShortName(const std::string &name); + void setData(const uint8_t * data, size_t length); + void addData(const std::string &data); + void addData(const uint8_t * data, size_t length); + void addTxPower(); + void setPreferredParams(uint16_t min, uint16_t max); + void setLegacyAdvertising(bool val); + void setConnectable(bool val); + void setScannable(bool val); + void setMinInterval(uint32_t mininterval); + void setMaxInterval(uint32_t maxinterval); + void setPrimaryPhy(uint8_t phy); + void setSecondaryPhy(uint8_t phy); + void setScanFilter(bool scanRequestWhitelistOnly, bool connectWhitelistOnly); + void setDirectedPeer(const NimBLEAddress & addr); + void setDirected(bool val, bool high_duty = true); + void setAnonymous(bool val); + void setPrimaryChannels(bool ch37, bool ch38, bool ch39); + void setTxPower(int8_t dbm); + void setAddress(const NimBLEAddress & addr); + void enableScanRequestCallback(bool enable); + void clearData(); + size_t getDataSize(); + +private: + friend class NimBLEExtAdvertising; + + void setServices(const bool complete, const uint8_t size, + const std::vector &v_uuid); + + std::vector m_payload; + ble_gap_ext_adv_params m_params; + NimBLEAddress m_advAddress; +}; // NimBLEExtAdvertisement + + +/** + * @brief Extended advertising class. + */ +class NimBLEExtAdvertising { +public: + /** + * @brief Construct an extended advertising object. + */ + NimBLEExtAdvertising() :m_advStatus(CONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES + 1, false) {} + ~NimBLEExtAdvertising(); + bool start(uint8_t inst_id, int duration = 0, int max_events = 0); + bool setInstanceData(uint8_t inst_id, NimBLEExtAdvertisement& adv); + bool setScanResponseData(uint8_t inst_id, NimBLEExtAdvertisement & data); + bool removeInstance(uint8_t inst_id); + bool removeAll(); + bool stop(uint8_t inst_id); + bool stop(); + bool isActive(uint8_t inst_id); + bool isAdvertising(); + void setCallbacks(NimBLEExtAdvertisingCallbacks* callbacks, + bool deleteCallbacks = true); + +private: + friend class NimBLEDevice; + friend class NimBLEServer; + + void onHostSync(); + static int handleGapEvent(struct ble_gap_event *event, void *arg); + + bool m_scanResp; + bool m_deleteCallbacks; + NimBLEExtAdvertisingCallbacks* m_pCallbacks; + ble_gap_ext_adv_params m_advParams; + std::vector m_advStatus; +}; + + +/** + * @brief Callbacks associated with NimBLEExtAdvertising class. + */ +class NimBLEExtAdvertisingCallbacks { +public: + virtual ~NimBLEExtAdvertisingCallbacks() {}; + + /** + * @brief Handle an advertising stop event. + * @param [in] pAdv A convenience pointer to the extended advertising interface. + * @param [in] reason The reason code for stopping the advertising. + * @param [in] inst_id The instance ID of the advertisement that was stopped. + */ + virtual void onStopped(NimBLEExtAdvertising *pAdv, int reason, uint8_t inst_id); + + /** + * @brief Handle a scan response request. + * This is called when a scanning device requests a scan response. + * @param [in] pAdv A convenience pointer to the extended advertising interface. + * @param [in] inst_id The instance ID of the advertisement that the scan response request was made. + * @param [in] addr The address of the device making the request. + */ + virtual void onScanRequest(NimBLEExtAdvertising *pAdv, uint8_t inst_id, NimBLEAddress addr); +}; // NimBLEExtAdvertisingCallbacks + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER && CONFIG_BT_NIMBLE_EXT_ADV */ +#endif /* MAIN_BLEADVERTISING_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp b/resources/NimBLE-Arduino/src/NimBLEHIDDevice.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEHIDDevice.cpp rename to resources/NimBLE-Arduino/src/NimBLEHIDDevice.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEHIDDevice.h b/resources/NimBLE-Arduino/src/NimBLEHIDDevice.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEHIDDevice.h rename to resources/NimBLE-Arduino/src/NimBLEHIDDevice.h diff --git a/resources/NimBLE-Arduino/src/NimBLELog.h b/resources/NimBLE-Arduino/src/NimBLELog.h new file mode 100644 index 0000000..dda9073 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLELog.h @@ -0,0 +1,80 @@ +/* + * NimBLELog.h + * + * Created: on Feb 24 2020 + * Author H2zero + * + */ +#ifndef MAIN_NIMBLELOG_H_ +#define MAIN_NIMBLELOG_H_ + +#include "nimconfig.h" + +#if defined(CONFIG_BT_ENABLED) + +#if defined(CONFIG_NIMBLE_CPP_IDF) // using esp-idf +# include "esp_log.h" +# ifndef CONFIG_NIMBLE_CPP_LOG_LEVEL +# define CONFIG_NIMBLE_CPP_LOG_LEVEL 0 +# endif + +# define NIMBLE_CPP_LOG_PRINT(level, tag, format, ...) do { \ + if (CONFIG_NIMBLE_CPP_LOG_LEVEL >= level) \ + ESP_LOG_LEVEL_LOCAL(level, tag, format, ##__VA_ARGS__); \ + } while(0) + +# define NIMBLE_LOGD(tag, format, ...) \ + NIMBLE_CPP_LOG_PRINT(ESP_LOG_DEBUG, tag, format, ##__VA_ARGS__) + +# define NIMBLE_LOGI(tag, format, ...) \ + NIMBLE_CPP_LOG_PRINT(ESP_LOG_INFO, tag, format, ##__VA_ARGS__) + +# define NIMBLE_LOGW(tag, format, ...) \ + NIMBLE_CPP_LOG_PRINT(ESP_LOG_WARN, tag, format, ##__VA_ARGS__) + +# define NIMBLE_LOGE(tag, format, ...) \ + NIMBLE_CPP_LOG_PRINT(ESP_LOG_ERROR, tag, format, ##__VA_ARGS__) + +# define NIMBLE_LOGC(tag, format, ...) \ + NIMBLE_CPP_LOG_PRINT(ESP_LOG_ERROR, tag, format, ##__VA_ARGS__) + +#else // using Arduino +# include "nimble/porting/nimble/include/syscfg/syscfg.h" +# include "nimble/console/console.h" +# ifndef CONFIG_NIMBLE_CPP_LOG_LEVEL +# if defined(ARDUINO_ARCH_ESP32) && defined(CORE_DEBUG_LEVEL) +# define CONFIG_NIMBLE_CPP_LOG_LEVEL CORE_DEBUG_LEVEL +# else +# define CONFIG_NIMBLE_CPP_LOG_LEVEL 0 +# endif +# endif + +# if CONFIG_NIMBLE_CPP_LOG_LEVEL >= 4 +# define NIMBLE_LOGD( tag, format, ... ) console_printf("D %s: " format "\n", tag, ##__VA_ARGS__) +# else +# define NIMBLE_LOGD( tag, format, ... ) (void)tag +# endif + +# if CONFIG_NIMBLE_CPP_LOG_LEVEL >= 3 +# define NIMBLE_LOGI( tag, format, ... ) console_printf("I %s: " format "\n", tag, ##__VA_ARGS__) +# else +# define NIMBLE_LOGI( tag, format, ... ) (void)tag +# endif + +# if CONFIG_NIMBLE_CPP_LOG_LEVEL >= 2 +# define NIMBLE_LOGW( tag, format, ... ) console_printf("W %s: " format "\n", tag, ##__VA_ARGS__) +# else +# define NIMBLE_LOGW( tag, format, ... ) (void)tag +# endif + +# if CONFIG_NIMBLE_CPP_LOG_LEVEL >= 1 +# define NIMBLE_LOGE( tag, format, ... ) console_printf("E %s: " format "\n", tag, ##__VA_ARGS__) +# define NIMBLE_LOGC( tag, format, ... ) console_printf("CRIT %s: " format "\n", tag, ##__VA_ARGS__) +# else +# define NIMBLE_LOGE( tag, format, ... ) (void)tag +# define NIMBLE_LOGC( tag, format, ... ) (void)tag +# endif + +#endif /* CONFIG_NIMBLE_CPP_IDF */ +#endif /* CONFIG_BT_ENABLED */ +#endif /* MAIN_NIMBLELOG_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp b/resources/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp rename to resources/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h b/resources/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h rename to resources/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteDescriptor.cpp b/resources/NimBLE-Arduino/src/NimBLERemoteDescriptor.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLERemoteDescriptor.cpp rename to resources/NimBLE-Arduino/src/NimBLERemoteDescriptor.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLERemoteDescriptor.h b/resources/NimBLE-Arduino/src/NimBLERemoteDescriptor.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLERemoteDescriptor.h rename to resources/NimBLE-Arduino/src/NimBLERemoteDescriptor.h diff --git a/resources/NimBLE-Arduino/src/NimBLERemoteService.cpp b/resources/NimBLE-Arduino/src/NimBLERemoteService.cpp new file mode 100644 index 0000000..5a72fe3 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLERemoteService.cpp @@ -0,0 +1,413 @@ +/* + * NimBLERemoteService.cpp + * + * Created: on Jan 27 2020 + * Author H2zero + * + * Originally: + * + * BLERemoteService.cpp + * + * Created on: Jul 8, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLERemoteService.h" +#include "NimBLEUtils.h" +#include "NimBLEDevice.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLERemoteService"; + +/** + * @brief Remote Service constructor. + * @param [in] pClient A pointer to the client this belongs to. + * @param [in] service A pointer to the structure with the service information. + */ +NimBLERemoteService::NimBLERemoteService(NimBLEClient* pClient, const struct ble_gatt_svc* service) { + + NIMBLE_LOGD(LOG_TAG, ">> NimBLERemoteService()"); + m_pClient = pClient; + switch (service->uuid.u.type) { + case BLE_UUID_TYPE_16: + m_uuid = NimBLEUUID(service->uuid.u16.value); + break; + case BLE_UUID_TYPE_32: + m_uuid = NimBLEUUID(service->uuid.u32.value); + break; + case BLE_UUID_TYPE_128: + m_uuid = NimBLEUUID(const_cast(&service->uuid.u128)); + break; + default: + break; + } + m_startHandle = service->start_handle; + m_endHandle = service->end_handle; + NIMBLE_LOGD(LOG_TAG, "<< NimBLERemoteService(): %s", m_uuid.toString().c_str()); +} + + +/** + * @brief When deleting the service make sure we delete all characteristics and descriptors. + */ +NimBLERemoteService::~NimBLERemoteService() { + deleteCharacteristics(); +} + + +/** + * @brief Get iterator to the beginning of the vector of remote characteristic pointers. + * @return An iterator to the beginning of the vector of remote characteristic pointers. + */ +std::vector::iterator NimBLERemoteService::begin() { + return m_characteristicVector.begin(); +} + + +/** + * @brief Get iterator to the end of the vector of remote characteristic pointers. + * @return An iterator to the end of the vector of remote characteristic pointers. + */ +std::vector::iterator NimBLERemoteService::end() { + return m_characteristicVector.end(); +} + + +/** + * @brief Get the remote characteristic object for the characteristic UUID. + * @param [in] uuid Remote characteristic uuid. + * @return A pointer to the remote characteristic object. + */ +NimBLERemoteCharacteristic* NimBLERemoteService::getCharacteristic(const char* uuid) { + return getCharacteristic(NimBLEUUID(uuid)); +} // getCharacteristic + + +/** + * @brief Get the characteristic object for the UUID. + * @param [in] uuid Characteristic uuid. + * @return A pointer to the characteristic object, or nullptr if not found. + */ +NimBLERemoteCharacteristic* NimBLERemoteService::getCharacteristic(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> getCharacteristic: uuid: %s", uuid.toString().c_str()); + + for(auto &it: m_characteristicVector) { + if(it->getUUID() == uuid) { + NIMBLE_LOGD(LOG_TAG, "<< getCharacteristic: found the characteristic with uuid: %s", uuid.toString().c_str()); + return it; + } + } + + size_t prev_size = m_characteristicVector.size(); + if(retrieveCharacteristics(&uuid)) { + if(m_characteristicVector.size() > prev_size) { + return m_characteristicVector.back(); + } + + // If the request was successful but 16/32 bit uuid not found + // try again with the 128 bit uuid. + if(uuid.bitSize() == BLE_UUID_TYPE_16 || + uuid.bitSize() == BLE_UUID_TYPE_32) + { + NimBLEUUID uuid128(uuid); + uuid128.to128(); + if (retrieveCharacteristics(&uuid128)) { + if(m_characteristicVector.size() > prev_size) { + return m_characteristicVector.back(); + } + } + } else { + // If the request was successful but the 128 bit uuid not found + // try again with the 16 bit uuid. + NimBLEUUID uuid16(uuid); + uuid16.to16(); + // if the uuid was 128 bit but not of the BLE base type this check will fail + if (uuid16.bitSize() == BLE_UUID_TYPE_16) { + if(retrieveCharacteristics(&uuid16)) { + if(m_characteristicVector.size() > prev_size) { + return m_characteristicVector.back(); + } + } + } + } + } + + NIMBLE_LOGD(LOG_TAG, "<< getCharacteristic: not found"); + return nullptr; +} // getCharacteristic + + +/** + * @brief Get a pointer to the vector of found characteristics. + * @param [in] refresh If true the current characteristics vector will cleared and + * all characteristics for this service retrieved from the peripheral. + * If false the vector will be returned with the currently stored characteristics of this service. + * @return A pointer to the vector of descriptors for this characteristic. + */ +std::vector* NimBLERemoteService::getCharacteristics(bool refresh) { + if(refresh) { + deleteCharacteristics(); + + if (!retrieveCharacteristics()) { + NIMBLE_LOGE(LOG_TAG, "Error: Failed to get characteristics"); + } + else{ + NIMBLE_LOGI(LOG_TAG, "Found %d characteristics", m_characteristicVector.size()); + } + } + return &m_characteristicVector; +} // getCharacteristics + + +/** + * @brief Callback for Characteristic discovery. + * @return success == 0 or error code. + */ +int NimBLERemoteService::characteristicDiscCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, void *arg) +{ + NIMBLE_LOGD(LOG_TAG,"Characteristic Discovered >> status: %d handle: %d", + error->status, (error->status == 0) ? chr->val_handle : -1); + + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteService *service = (NimBLERemoteService*)pTaskData->pATT; + + // Make sure the discovery is for this device + if(service->getClient()->getConnId() != conn_handle){ + return 0; + } + + if(error->status == 0) { + // Found a service - add it to the vector + NimBLERemoteCharacteristic* pRemoteCharacteristic = new NimBLERemoteCharacteristic(service, chr); + service->m_characteristicVector.push_back(pRemoteCharacteristic); + return 0; + } + + if(error->status == BLE_HS_EDONE) { + pTaskData->rc = 0; + } else { + NIMBLE_LOGE(LOG_TAG, "characteristicDiscCB() rc=%d %s", + error->status, + NimBLEUtils::returnCodeToString(error->status)); + pTaskData->rc = error->status; + } + + xTaskNotifyGive(pTaskData->task); + + NIMBLE_LOGD(LOG_TAG,"<< Characteristic Discovered"); + return error->status; +} + + +/** + * @brief Retrieve all the characteristics for this service. + * This function will not return until we have all the characteristics. + * @return True if successful. + */ +bool NimBLERemoteService::retrieveCharacteristics(const NimBLEUUID *uuid_filter) { + NIMBLE_LOGD(LOG_TAG, ">> retrieveCharacteristics() for service: %s", getUUID().toString().c_str()); + + int rc = 0; + TaskHandle_t cur_task = xTaskGetCurrentTaskHandle(); + ble_task_data_t taskData = {this, cur_task, 0, nullptr}; + + if(uuid_filter == nullptr) { + rc = ble_gattc_disc_all_chrs(m_pClient->getConnId(), + m_startHandle, + m_endHandle, + NimBLERemoteService::characteristicDiscCB, + &taskData); + } else { + rc = ble_gattc_disc_chrs_by_uuid(m_pClient->getConnId(), + m_startHandle, + m_endHandle, + &uuid_filter->getNative()->u, + NimBLERemoteService::characteristicDiscCB, + &taskData); + } + + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_chrs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); + return false; + } + +#ifdef ulTaskNotifyValueClear + // Clear the task notification value to ensure we block + ulTaskNotifyValueClear(cur_task, ULONG_MAX); +#endif + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + + if(taskData.rc == 0){ + if (uuid_filter == nullptr) { + if (m_characteristicVector.size() > 1) { + for (auto it = m_characteristicVector.begin(); it != m_characteristicVector.end(); ++it ) { + auto nx = std::next(it, 1); + if (nx == m_characteristicVector.end()) { + break; + } + (*it)->m_endHandle = (*nx)->m_defHandle - 1; + } + } + + if (m_characteristicVector.size() > 0) { + m_characteristicVector.back()->m_endHandle = getEndHandle(); + } + } + + NIMBLE_LOGD(LOG_TAG, "<< retrieveCharacteristics()"); + return true; + } + + NIMBLE_LOGE(LOG_TAG, "Could not retrieve characteristics"); + return false; + +} // retrieveCharacteristics + + +/** + * @brief Get the client associated with this service. + * @return A reference to the client associated with this service. + */ +NimBLEClient* NimBLERemoteService::getClient() { + return m_pClient; +} // getClient + + +/** + * @brief Get the service end handle. + */ +uint16_t NimBLERemoteService::getEndHandle() { + return m_endHandle; +} // getEndHandle + + +/** + * @brief Get the service start handle. + */ +uint16_t NimBLERemoteService::getStartHandle() { + return m_startHandle; +} // getStartHandle + + +/** + * @brief Get the service UUID. + */ +NimBLEUUID NimBLERemoteService::getUUID() { + return m_uuid; +} + + +/** + * @brief Read the value of a characteristic associated with this service. + * @param [in] characteristicUuid The characteristic to read. + * @returns a string containing the value or an empty string if not found or error. + */ +std::string NimBLERemoteService::getValue(const NimBLEUUID &characteristicUuid) { + NIMBLE_LOGD(LOG_TAG, ">> readValue: uuid: %s", characteristicUuid.toString().c_str()); + + std::string ret = ""; + NimBLERemoteCharacteristic* pChar = getCharacteristic(characteristicUuid); + + if(pChar != nullptr) { + ret = pChar->readValue(); + } + + NIMBLE_LOGD(LOG_TAG, "<< readValue"); + return ret; +} // readValue + + +/** + * @brief Set the value of a characteristic. + * @param [in] characteristicUuid The characteristic to set. + * @param [in] value The value to set. + * @returns true on success, false if not found or error + */ +bool NimBLERemoteService::setValue(const NimBLEUUID &characteristicUuid, const std::string &value) { + NIMBLE_LOGD(LOG_TAG, ">> setValue: uuid: %s", characteristicUuid.toString().c_str()); + + bool ret = false; + NimBLERemoteCharacteristic* pChar = getCharacteristic(characteristicUuid); + + if(pChar != nullptr) { + ret = pChar->writeValue(value); + } + + NIMBLE_LOGD(LOG_TAG, "<< setValue"); + return ret; +} // setValue + + +/** + * @brief Delete the characteristics in the characteristics vector. + * @details We maintain a vector called m_characteristicsVector that contains pointers to BLERemoteCharacteristic + * object references. Since we allocated these in this class, we are also responsible for deleting + * them. This method does just that. + */ +void NimBLERemoteService::deleteCharacteristics() { + NIMBLE_LOGD(LOG_TAG, ">> deleteCharacteristics"); + for(auto &it: m_characteristicVector) { + delete it; + } + m_characteristicVector.clear(); + NIMBLE_LOGD(LOG_TAG, "<< deleteCharacteristics"); +} // deleteCharacteristics + + +/** + * @brief Delete characteristic by UUID + * @param [in] uuid The UUID of the characteristic to be removed from the local database. + * @return Number of characteristics left. + */ +size_t NimBLERemoteService::deleteCharacteristic(const NimBLEUUID &uuid) { + NIMBLE_LOGD(LOG_TAG, ">> deleteCharacteristic"); + + for(auto it = m_characteristicVector.begin(); it != m_characteristicVector.end(); ++it) { + if((*it)->getUUID() == uuid) { + delete *it; + m_characteristicVector.erase(it); + break; + } + } + + NIMBLE_LOGD(LOG_TAG, "<< deleteCharacteristic"); + + return m_characteristicVector.size(); +} // deleteCharacteristic + + +/** + * @brief Create a string representation of this remote service. + * @return A string representation of this remote service. + */ +std::string NimBLERemoteService::toString() { + std::string res = "Service: uuid: " + m_uuid.toString(); + char val[6]; + res += ", start_handle: "; + snprintf(val, sizeof(val), "%d", m_startHandle); + res += val; + snprintf(val, sizeof(val), "%04x", m_startHandle); + res += " 0x"; + res += val; + res += ", end_handle: "; + snprintf(val, sizeof(val), "%d", m_endHandle); + res += val; + snprintf(val, sizeof(val), "%04x", m_endHandle); + res += " 0x"; + res += val; + + for (auto &it: m_characteristicVector) { + res += "\n" + it->toString(); + } + + return res; +} // toString + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ diff --git a/resources/NimBLE-Arduino/src/NimBLERemoteService.h b/resources/NimBLE-Arduino/src/NimBLERemoteService.h new file mode 100644 index 0000000..0443cfd --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLERemoteService.h @@ -0,0 +1,85 @@ +/* + * NimBLERemoteService.h + * + * Created: on Jan 27 2020 + * Author H2zero + * + * Originally: + * + * BLERemoteService.h + * + * Created on: Jul 8, 2017 + * Author: kolban + */ + +#ifndef COMPONENTS_NIMBLEREMOTESERVICE_H_ +#define COMPONENTS_NIMBLEREMOTESERVICE_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) + +#include "NimBLEClient.h" +#include "NimBLEUUID.h" +#include "NimBLERemoteCharacteristic.h" + +#include + +class NimBLEClient; +class NimBLERemoteCharacteristic; + + +/** + * @brief A model of a remote %BLE service. + */ +class NimBLERemoteService { +public: + virtual ~NimBLERemoteService(); + + // Public methods + std::vector::iterator begin(); + std::vector::iterator end(); + NimBLERemoteCharacteristic* getCharacteristic(const char* uuid); + NimBLERemoteCharacteristic* getCharacteristic(const NimBLEUUID &uuid); + void deleteCharacteristics(); + size_t deleteCharacteristic(const NimBLEUUID &uuid); + NimBLEClient* getClient(void); + //uint16_t getHandle(); + NimBLEUUID getUUID(void); + std::string getValue(const NimBLEUUID &characteristicUuid); + bool setValue(const NimBLEUUID &characteristicUuid, + const std::string &value); + std::string toString(void); + std::vector* getCharacteristics(bool refresh = false); + +private: + // Private constructor ... never meant to be created by a user application. + NimBLERemoteService(NimBLEClient* pClient, const struct ble_gatt_svc *service); + + // Friends + friend class NimBLEClient; + friend class NimBLERemoteCharacteristic; + + // Private methods + bool retrieveCharacteristics(const NimBLEUUID *uuid_filter = nullptr); + static int characteristicDiscCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, + void *arg); + + uint16_t getStartHandle(); + uint16_t getEndHandle(); + void releaseSemaphores(); + + // Properties + + // We maintain a vector of characteristics owned by this service. + std::vector m_characteristicVector; + + NimBLEClient* m_pClient; + NimBLEUUID m_uuid; + uint16_t m_startHandle; + uint16_t m_endHandle; +}; // NimBLERemoteService + +#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_CENTRAL */ +#endif /* COMPONENTS_NIMBLEREMOTESERVICE_H_ */ diff --git a/lib/NimBLE-Arduino/src/NimBLEScan.cpp b/resources/NimBLE-Arduino/src/NimBLEScan.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEScan.cpp rename to resources/NimBLE-Arduino/src/NimBLEScan.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEScan.h b/resources/NimBLE-Arduino/src/NimBLEScan.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEScan.h rename to resources/NimBLE-Arduino/src/NimBLEScan.h diff --git a/lib/NimBLE-Arduino/src/NimBLESecurity.cpp b/resources/NimBLE-Arduino/src/NimBLESecurity.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLESecurity.cpp rename to resources/NimBLE-Arduino/src/NimBLESecurity.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLESecurity.h b/resources/NimBLE-Arduino/src/NimBLESecurity.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLESecurity.h rename to resources/NimBLE-Arduino/src/NimBLESecurity.h diff --git a/lib/NimBLE-Arduino/src/NimBLEServer.cpp b/resources/NimBLE-Arduino/src/NimBLEServer.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEServer.cpp rename to resources/NimBLE-Arduino/src/NimBLEServer.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEServer.h b/resources/NimBLE-Arduino/src/NimBLEServer.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEServer.h rename to resources/NimBLE-Arduino/src/NimBLEServer.h diff --git a/lib/NimBLE-Arduino/src/NimBLEService.cpp b/resources/NimBLE-Arduino/src/NimBLEService.cpp similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEService.cpp rename to resources/NimBLE-Arduino/src/NimBLEService.cpp diff --git a/lib/NimBLE-Arduino/src/NimBLEService.h b/resources/NimBLE-Arduino/src/NimBLEService.h similarity index 100% rename from lib/NimBLE-Arduino/src/NimBLEService.h rename to resources/NimBLE-Arduino/src/NimBLEService.h diff --git a/resources/NimBLE-Arduino/src/NimBLEUUID.cpp b/resources/NimBLE-Arduino/src/NimBLEUUID.cpp new file mode 100644 index 0000000..b14eae1 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEUUID.cpp @@ -0,0 +1,360 @@ +/* + * NimBLEUUID.cpp + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEUUID.cpp + * + * Created on: Jun 21, 2017 + * Author: kolban + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include "NimBLEUtils.h" +#include "NimBLEUUID.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLEUUID"; + + +/** + * @brief Create a UUID from a string. + * + * Create a UUID from a string. There will be two possible stories here. Either the string represents + * a binary data field or the string represents a hex encoding of a UUID. + * For the hex encoding, here is an example: + * + * ``` + * "beb5483e-36e1-4688-b7f5-ea07361b26a8" + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + * 12345678-90ab-cdef-1234-567890abcdef + * ``` + * + * This has a length of 36 characters. We need to parse this into 16 bytes. + * + * @param [in] value The string to build a UUID from. + */ + NimBLEUUID::NimBLEUUID(const std::string &value) { + m_valueSet = true; + if (value.length() == 4) { + m_uuid.u.type = BLE_UUID_TYPE_16; + m_uuid.u16.value = strtoul(value.c_str(), NULL, 16); + } + else if (value.length() == 8) { + m_uuid.u.type = BLE_UUID_TYPE_32; + m_uuid.u32.value = strtoul(value.c_str(), NULL, 16); + } + else if (value.length() == 16) { + *this = NimBLEUUID((uint8_t*)value.data(), 16, true); + } + else if (value.length() == 36) { + // If the length of the string is 36 bytes then we will assume it is a long hex string in + // UUID format. + char * position = const_cast(value.c_str()); + uint32_t first = strtoul(position, &position, 16); + uint16_t second = strtoul(position + 1, &position, 16); + uint16_t third = strtoul(position + 1, &position, 16); + uint16_t fourth = strtoul(position + 1, &position, 16); + uint64_t fifth = strtoull(position + 1, NULL, 16); + *this = NimBLEUUID(first, second, third, (uint64_t(fourth) << 48) + fifth); + } + else { + m_valueSet = false; + } +} // NimBLEUUID(std::string) + + +/** + * @brief Create a UUID from 2, 4, 16 bytes of memory. + * @param [in] pData The pointer to the start of the UUID. + * @param [in] size The size of the data. + * @param [in] msbFirst Is the MSB first in pData memory? + */ +NimBLEUUID::NimBLEUUID(const uint8_t* pData, size_t size, bool msbFirst) { + uint8_t *uuidValue = nullptr; + + switch(size) { + case 2: + uuidValue = (uint8_t*)&m_uuid.u16.value; + m_uuid.u.type = BLE_UUID_TYPE_16; + break; + case 4: + uuidValue = (uint8_t*)&m_uuid.u32.value; + m_uuid.u.type = BLE_UUID_TYPE_32; + break; + case 16: + uuidValue = m_uuid.u128.value; + m_uuid.u.type = BLE_UUID_TYPE_128; + break; + default: + m_valueSet = false; + NIMBLE_LOGE(LOG_TAG, "Invalid UUID size"); + return; + } + if (msbFirst) { + std::reverse_copy(pData, pData + size, uuidValue); + } else { + memcpy(uuidValue, pData, size); + } + m_valueSet = true; +} // NimBLEUUID + + +/** + * @brief Create a UUID from the 16bit value. + * @param [in] uuid The 16bit short form UUID. + */ +NimBLEUUID::NimBLEUUID(uint16_t uuid) { + m_uuid.u.type = BLE_UUID_TYPE_16; + m_uuid.u16.value = uuid; + m_valueSet = true; +} // NimBLEUUID + + +/** + * @brief Create a UUID from the 32bit value. + * @param [in] uuid The 32bit short form UUID. + */ +NimBLEUUID::NimBLEUUID(uint32_t uuid) { + m_uuid.u.type = BLE_UUID_TYPE_32; + m_uuid.u32.value = uuid; + m_valueSet = true; +} // NimBLEUUID + + +/** + * @brief Create a UUID from the native UUID. + * @param [in] uuid The native UUID. + */ +NimBLEUUID::NimBLEUUID(const ble_uuid128_t* uuid) { + m_uuid.u.type = BLE_UUID_TYPE_128; + memcpy(m_uuid.u128.value, uuid->value, 16); + m_valueSet = true; +} // NimBLEUUID + + +/** + * @brief Create a UUID from the 128bit value using hex parts instead of string, + * instead of NimBLEUUID("ebe0ccb0-7a0a-4b0c-8a1a-6ff2997da3a6"), it becomes + * NimBLEUUID(0xebe0ccb0, 0x7a0a, 0x4b0c, 0x8a1a6ff2997da3a6) + * + * @param [in] first The first 32bit of the UUID. + * @param [in] second The next 16bit of the UUID. + * @param [in] third The next 16bit of the UUID. + * @param [in] fourth The last 64bit of the UUID, combining the last 2 parts of the string equivalent + */ +NimBLEUUID::NimBLEUUID(uint32_t first, uint16_t second, uint16_t third, uint64_t fourth) { + m_uuid.u.type = BLE_UUID_TYPE_128; + memcpy(m_uuid.u128.value + 12, &first, 4); + memcpy(m_uuid.u128.value + 10, &second, 2); + memcpy(m_uuid.u128.value + 8, &third, 2); + memcpy(m_uuid.u128.value, &fourth, 8); + m_valueSet = true; +} + + +/** + * @brief Creates an empty UUID. + */ +NimBLEUUID::NimBLEUUID() { + m_valueSet = false; +} // NimBLEUUID + + +/** + * @brief Get the number of bits in this uuid. + * @return The number of bits in the UUID. One of 16, 32 or 128. + */ +uint8_t NimBLEUUID::bitSize() const { + if (!m_valueSet) return 0; + return m_uuid.u.type; +} // bitSize + + +/** + * @brief Compare a UUID against this UUID. + * + * @param [in] uuid The UUID to compare against. + * @return True if the UUIDs are equal and false otherwise. + */ +bool NimBLEUUID::equals(const NimBLEUUID &uuid) const { + return *this == uuid; +} + + +/** + * Create a NimBLEUUID from a string of the form: + * 0xNNNN + * 0xNNNNNNNN + * 0x + * NNNN + * NNNNNNNN + * + * + * @param [in] uuid The string to create the UUID from. + */ +NimBLEUUID NimBLEUUID::fromString(const std::string &uuid) { + uint8_t start = 0; + if (strstr(uuid.c_str(), "0x") != nullptr) { // If the string starts with 0x, skip those characters. + start = 2; + } + uint8_t len = uuid.length() - start; // Calculate the length of the string we are going to use. + + if(len == 4) { + uint16_t x = strtoul(uuid.substr(start, len).c_str(), NULL, 16); + return NimBLEUUID(x); + } else if (len == 8) { + uint32_t x = strtoul(uuid.substr(start, len).c_str(), NULL, 16); + return NimBLEUUID(x); + } else if (len == 36) { + return NimBLEUUID(uuid); + } + return NimBLEUUID(); +} // fromString + + +/** + * @brief Get the native UUID value. + * @return The native UUID value or nullptr if not set. + */ +const ble_uuid_any_t* NimBLEUUID::getNative() const { + if (m_valueSet == false) { + NIMBLE_LOGD(LOG_TAG,"<< Return of un-initialized UUID!"); + return nullptr; + } + return &m_uuid; +} // getNative + + +/** + * @brief Convert a UUID to its 128 bit representation. + * @details A UUID can be internally represented as 16bit, 32bit or the full 128bit. + * This method will convert 16 or 32bit representations to the full 128bit. + * @return The NimBLEUUID converted to 128bit. + */ +const NimBLEUUID &NimBLEUUID::to128() { + // If we either don't have a value or are already a 128 bit UUID, nothing further to do. + if (!m_valueSet || m_uuid.u.type == BLE_UUID_TYPE_128) { + return *this; + } + + // If we are 16 bit or 32 bit, then set the other bytes of the UUID. + if (m_uuid.u.type == BLE_UUID_TYPE_16) { + *this = NimBLEUUID(m_uuid.u16.value, 0x0000, 0x1000, 0x800000805f9b34fb); + } + else if (m_uuid.u.type == BLE_UUID_TYPE_32) { + *this = NimBLEUUID(m_uuid.u32.value, 0x0000, 0x1000, 0x800000805f9b34fb); + } + + return *this; +} // to128 + + +/** + * @brief Convert 128 bit UUID to its 16 bit representation. + * @details A UUID can be internally represented as 16bit, 32bit or the full 128bit. + * This method will convert a 128bit uuid to 16bit if it contains the ble base uuid. + * @return The NimBLEUUID converted to 16bit if successful, otherwise the original uuid. + */ +const NimBLEUUID& NimBLEUUID::to16() { + if (!m_valueSet || m_uuid.u.type == BLE_UUID_TYPE_16) { + return *this; + } + + if (m_uuid.u.type == BLE_UUID_TYPE_128) { + uint8_t base128[] = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, + 0x00, 0x80, 0x00, 0x10, 0x00, 0x00}; + if (memcmp(m_uuid.u128.value, base128, sizeof(base128)) == 0 ) { + *this = NimBLEUUID(*(uint16_t*)(m_uuid.u128.value + 12)); + } + } + + return *this; +} + + +/** + * @brief Get a string representation of the UUID. + * @details + * The format of a string is: + * 01234567 8901 2345 6789 012345678901 + * 0000180d-0000-1000-8000-00805f9b34fb + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + * + * @return A string representation of the UUID. + * @deprecated Use std::string() operator instead. + */ +std::string NimBLEUUID::toString() const { + return std::string(*this); +} // toString + + +/** + * @brief Convenience operator to check if this UUID is equal to another. + */ +bool NimBLEUUID::operator ==(const NimBLEUUID & rhs) const { + if(m_valueSet && rhs.m_valueSet) { + if(m_uuid.u.type != rhs.m_uuid.u.type) { + uint8_t uuidBase[16] = { + 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + if(m_uuid.u.type == BLE_UUID_TYPE_128){ + if(rhs.m_uuid.u.type == BLE_UUID_TYPE_16){ + memcpy(uuidBase+12, &rhs.m_uuid.u16.value, 2); + } else if (rhs.m_uuid.u.type == BLE_UUID_TYPE_32){ + memcpy(uuidBase+12, &rhs.m_uuid.u32.value, 4); + } + return memcmp(m_uuid.u128.value,uuidBase,16) == 0; + + } else if(rhs.m_uuid.u.type == BLE_UUID_TYPE_128) { + if(m_uuid.u.type == BLE_UUID_TYPE_16){ + memcpy(uuidBase+12, &m_uuid.u16.value, 2); + } else if (m_uuid.u.type == BLE_UUID_TYPE_32){ + memcpy(uuidBase+12, &m_uuid.u32.value, 4); + } + return memcmp(rhs.m_uuid.u128.value,uuidBase,16) == 0; + + } else { + return false; + } + } + + return ble_uuid_cmp(&m_uuid.u, &rhs.m_uuid.u) == 0; + } + + return m_valueSet == rhs.m_valueSet; +} + + +/** + * @brief Convenience operator to check if this UUID is not equal to another. + */ +bool NimBLEUUID::operator !=(const NimBLEUUID & rhs) const { + return !this->operator==(rhs); +} + + +/** + * @brief Convenience operator to convert this UUID to string representation. + * @details This allows passing NimBLEUUID to functions + * that accept std::string and/or or it's methods as a parameter. + */ +NimBLEUUID::operator std::string() const { + if (!m_valueSet) return std::string(); // If we have no value, nothing to format. + + char buf[BLE_UUID_STR_LEN]; + + return ble_uuid_to_str(&m_uuid.u, buf); +} + + +#endif /* CONFIG_BT_ENABLED */ diff --git a/resources/NimBLE-Arduino/src/NimBLEUUID.h b/resources/NimBLE-Arduino/src/NimBLEUUID.h new file mode 100644 index 0000000..2c24971 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEUUID.h @@ -0,0 +1,64 @@ +/* + * NimBLEUUID.h + * + * Created: on Jan 24 2020 + * Author H2zero + * + * Originally: + * + * BLEUUID.h + * + * Created on: Jun 21, 2017 + * Author: kolban + */ + +#ifndef COMPONENTS_NIMBLEUUID_H_ +#define COMPONENTS_NIMBLEUUID_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "host/ble_uuid.h" +#else +#include "nimble/nimble/host/include/host/ble_uuid.h" +#endif + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +#include + +/** + * @brief A model of a %BLE UUID. + */ +class NimBLEUUID { +public: + NimBLEUUID(const std::string &uuid); + NimBLEUUID(uint16_t uuid); + NimBLEUUID(uint32_t uuid); + NimBLEUUID(const ble_uuid128_t* uuid); + NimBLEUUID(const uint8_t* pData, size_t size, bool msbFirst); + NimBLEUUID(uint32_t first, uint16_t second, uint16_t third, uint64_t fourth); + NimBLEUUID(); + + uint8_t bitSize() const; + bool equals(const NimBLEUUID &uuid) const; + const ble_uuid_any_t* getNative() const; + const NimBLEUUID & to128(); + const NimBLEUUID& to16(); + std::string toString() const; + static NimBLEUUID fromString(const std::string &uuid); + + bool operator ==(const NimBLEUUID & rhs) const; + bool operator !=(const NimBLEUUID & rhs) const; + operator std::string() const; + +private: + ble_uuid_any_t m_uuid; + bool m_valueSet = false; +}; // NimBLEUUID +#endif /* CONFIG_BT_ENABLED */ +#endif /* COMPONENTS_NIMBLEUUID_H_ */ diff --git a/resources/NimBLE-Arduino/src/NimBLEUtils.cpp b/resources/NimBLE-Arduino/src/NimBLEUtils.cpp new file mode 100644 index 0000000..60ea541 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEUtils.cpp @@ -0,0 +1,518 @@ +/* + * NimBLEUtils.cpp + * + * Created: on Jan 25 2020 + * Author H2zero + * + */ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#include "NimBLEUtils.h" +#include "NimBLELog.h" + +#include + +static const char* LOG_TAG = "NimBLEUtils"; + + +/** + * @brief A function for checking validity of connection parameters. + * @param [in] params A pointer to the structure containing the parameters to check. + * @return valid == 0 or error code. + */ +int NimBLEUtils::checkConnParams(ble_gap_conn_params* params) { + /* Check connection interval min */ + if ((params->itvl_min < BLE_HCI_CONN_ITVL_MIN) || + (params->itvl_min > BLE_HCI_CONN_ITVL_MAX)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + /* Check connection interval max */ + if ((params->itvl_max < BLE_HCI_CONN_ITVL_MIN) || + (params->itvl_max > BLE_HCI_CONN_ITVL_MAX) || + (params->itvl_max < params->itvl_min)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check connection latency */ + if (params->latency > BLE_HCI_CONN_LATENCY_MAX) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check supervision timeout */ + if ((params->supervision_timeout < BLE_HCI_CONN_SPVN_TIMEOUT_MIN) || + (params->supervision_timeout > BLE_HCI_CONN_SPVN_TIMEOUT_MAX)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check connection event length */ + if (params->min_ce_len > params->max_ce_len) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + return 0; +} + + +/** + * @brief Converts a return code from the NimBLE stack to a text string. + * @param [in] rc The return code to convert. + * @return A string representation of the return code. + */ +const char* NimBLEUtils::returnCodeToString(int rc) { +#if defined(CONFIG_NIMBLE_CPP_ENABLE_RETURN_CODE_TEXT) + switch(rc) { + case 0: + return "SUCCESS"; + case BLE_HS_EAGAIN: + return "Temporary failure; try again."; + case BLE_HS_EALREADY: + return "Operation already in progress or completed."; + case BLE_HS_EINVAL: + return "One or more arguments are invalid."; + case BLE_HS_EMSGSIZE: + return "The provided buffer is too small."; + case BLE_HS_ENOENT: + return "No entry matching the specified criteria."; + case BLE_HS_ENOMEM: + return "Operation failed due to resource exhaustion."; + case BLE_HS_ENOTCONN: + return "No open connection with the specified handle."; + case BLE_HS_ENOTSUP: + return "Operation disabled at compile time."; + case BLE_HS_EAPP: + return "Application callback behaved unexpectedly."; + case BLE_HS_EBADDATA: + return "Command from peer is invalid."; + case BLE_HS_EOS: + return "Mynewt OS error."; + case BLE_HS_ECONTROLLER: + return "Event from controller is invalid."; + case BLE_HS_ETIMEOUT: + return "Operation timed out."; + case BLE_HS_EDONE: + return "Operation completed successfully."; + case BLE_HS_EBUSY: + return "Operation cannot be performed until procedure completes."; + case BLE_HS_EREJECT: + return "Peer rejected a connection parameter update request."; + case BLE_HS_EUNKNOWN: + return "Unexpected failure; catch all."; + case BLE_HS_EROLE: + return "Operation requires different role (e.g., central vs. peripheral)."; + case BLE_HS_ETIMEOUT_HCI: + return "HCI request timed out; controller unresponsive."; + case BLE_HS_ENOMEM_EVT: + return "Controller failed to send event due to memory exhaustion (combined host-controller only)."; + case BLE_HS_ENOADDR: + return "Operation requires an identity address but none configured."; + case BLE_HS_ENOTSYNCED: + return "Attempt to use the host before it is synced with controller."; + case BLE_HS_EAUTHEN: + return "Insufficient authentication."; + case BLE_HS_EAUTHOR: + return "Insufficient authorization."; + case BLE_HS_EENCRYPT: + return "Insufficient encryption level."; + case BLE_HS_EENCRYPT_KEY_SZ: + return "Insufficient key size."; + case BLE_HS_ESTORE_CAP: + return "Storage at capacity."; + case BLE_HS_ESTORE_FAIL: + return "Storage IO error."; + case (0x0100+BLE_ATT_ERR_INVALID_HANDLE ): + return "The attribute handle given was not valid on this server."; + case (0x0100+BLE_ATT_ERR_READ_NOT_PERMITTED ): + return "The attribute cannot be read."; + case (0x0100+BLE_ATT_ERR_WRITE_NOT_PERMITTED ): + return "The attribute cannot be written."; + case (0x0100+BLE_ATT_ERR_INVALID_PDU ): + return "The attribute PDU was invalid."; + case (0x0100+BLE_ATT_ERR_INSUFFICIENT_AUTHEN ): + return "The attribute requires authentication before it can be read or written."; + case (0x0100+BLE_ATT_ERR_REQ_NOT_SUPPORTED ): + return "Attribute server does not support the request received from the client."; + case (0x0100+BLE_ATT_ERR_INVALID_OFFSET ): + return "Offset specified was past the end of the attribute."; + case (0x0100+BLE_ATT_ERR_INSUFFICIENT_AUTHOR ): + return "The attribute requires authorization before it can be read or written."; + case (0x0100+BLE_ATT_ERR_PREPARE_QUEUE_FULL ): + return "Too many prepare writes have been queued."; + case (0x0100+BLE_ATT_ERR_ATTR_NOT_FOUND ): + return "No attribute found within the given attribute handle range."; + case (0x0100+BLE_ATT_ERR_ATTR_NOT_LONG ): + return "The attribute cannot be read or written using the Read Blob Request."; + case (0x0100+BLE_ATT_ERR_INSUFFICIENT_KEY_SZ ): + return "The Encryption Key Size used for encrypting this link is insufficient."; + case (0x0100+BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN ): + return "The attribute value length is invalid for the operation."; + case (0x0100+BLE_ATT_ERR_UNLIKELY ): + return "The attribute request has encountered an error that was unlikely, could not be completed as requested."; + case (0x0100+BLE_ATT_ERR_INSUFFICIENT_ENC ): + return "The attribute requires encryption before it can be read or written."; + case (0x0100+BLE_ATT_ERR_UNSUPPORTED_GROUP ): + return "The attribute type is not a supported grouping attribute as defined by a higher layer specification."; + case (0x0100+BLE_ATT_ERR_INSUFFICIENT_RES ): + return "Insufficient Resources to complete the request."; + case (0x0200+BLE_ERR_UNKNOWN_HCI_CMD ): + return "Unknown HCI Command"; + case (0x0200+BLE_ERR_UNK_CONN_ID ): + return "Unknown Connection Identifier"; + case (0x0200+BLE_ERR_HW_FAIL ): + return "Hardware Failure"; + case (0x0200+BLE_ERR_PAGE_TMO ): + return "Page Timeout"; + case (0x0200+BLE_ERR_AUTH_FAIL ): + return "Authentication Failure"; + case (0x0200+BLE_ERR_PINKEY_MISSING ): + return "PIN or Key Missing"; + case (0x0200+BLE_ERR_MEM_CAPACITY ): + return "Memory Capacity Exceeded"; + case (0x0200+BLE_ERR_CONN_SPVN_TMO ): + return "Connection Timeout"; + case (0x0200+BLE_ERR_CONN_LIMIT ): + return "Connection Limit Exceeded"; + case (0x0200+BLE_ERR_SYNCH_CONN_LIMIT ): + return "Synchronous Connection Limit To A Device Exceeded"; + case (0x0200+BLE_ERR_ACL_CONN_EXISTS ): + return "ACL Connection Already Exists"; + case (0x0200+BLE_ERR_CMD_DISALLOWED ): + return "Command Disallowed"; + case (0x0200+BLE_ERR_CONN_REJ_RESOURCES ): + return "Connection Rejected due to Limited Resources"; + case (0x0200+BLE_ERR_CONN_REJ_SECURITY ): + return "Connection Rejected Due To Security Reasons"; + case (0x0200+BLE_ERR_CONN_REJ_BD_ADDR ): + return "Connection Rejected due to Unacceptable BD_ADDR"; + case (0x0200+BLE_ERR_CONN_ACCEPT_TMO ): + return "Connection Accept Timeout Exceeded"; + case (0x0200+BLE_ERR_UNSUPPORTED ): + return "Unsupported Feature or Parameter Value"; + case (0x0200+BLE_ERR_INV_HCI_CMD_PARMS ): + return "Invalid HCI Command Parameters"; + case (0x0200+BLE_ERR_REM_USER_CONN_TERM ): + return "Remote User Terminated Connection"; + case (0x0200+BLE_ERR_RD_CONN_TERM_RESRCS ): + return "Remote Device Terminated Connection due to Low Resources"; + case (0x0200+BLE_ERR_RD_CONN_TERM_PWROFF ): + return "Remote Device Terminated Connection due to Power Off"; + case (0x0200+BLE_ERR_CONN_TERM_LOCAL ): + return "Connection Terminated By Local Host"; + case (0x0200+BLE_ERR_REPEATED_ATTEMPTS ): + return "Repeated Attempts"; + case (0x0200+BLE_ERR_NO_PAIRING ): + return "Pairing Not Allowed"; + case (0x0200+BLE_ERR_UNK_LMP ): + return "Unknown LMP PDU"; + case (0x0200+BLE_ERR_UNSUPP_REM_FEATURE ): + return "Unsupported Remote Feature / Unsupported LMP Feature"; + case (0x0200+BLE_ERR_SCO_OFFSET ): + return "SCO Offset Rejected"; + case (0x0200+BLE_ERR_SCO_ITVL ): + return "SCO Interval Rejected"; + case (0x0200+BLE_ERR_SCO_AIR_MODE ): + return "SCO Air Mode Rejected"; + case (0x0200+BLE_ERR_INV_LMP_LL_PARM ): + return "Invalid LMP Parameters / Invalid LL Parameters"; + case (0x0200+BLE_ERR_UNSPECIFIED ): + return "Unspecified Error"; + case (0x0200+BLE_ERR_UNSUPP_LMP_LL_PARM ): + return "Unsupported LMP Parameter Value / Unsupported LL Parameter Value"; + case (0x0200+BLE_ERR_NO_ROLE_CHANGE ): + return "Role Change Not Allowed"; + case (0x0200+BLE_ERR_LMP_LL_RSP_TMO ): + return "LMP Response Timeout / LL Response Timeout"; + case (0x0200+BLE_ERR_LMP_COLLISION ): + return "LMP Error Transaction Collision"; + case (0x0200+BLE_ERR_LMP_PDU ): + return "LMP PDU Not Allowed"; + case (0x0200+BLE_ERR_ENCRYPTION_MODE ): + return "Encryption Mode Not Acceptable"; + case (0x0200+BLE_ERR_LINK_KEY_CHANGE ): + return "Link Key cannot be Changed"; + case (0x0200+BLE_ERR_UNSUPP_QOS ): + return "Requested QoS Not Supported"; + case (0x0200+BLE_ERR_INSTANT_PASSED ): + return "Instant Passed"; + case (0x0200+BLE_ERR_UNIT_KEY_PAIRING ): + return "Pairing With Unit Key Not Supported"; + case (0x0200+BLE_ERR_DIFF_TRANS_COLL ): + return "Different Transaction Collision"; + case (0x0200+BLE_ERR_QOS_PARM ): + return "QoS Unacceptable Parameter"; + case (0x0200+BLE_ERR_QOS_REJECTED ): + return "QoS Rejected"; + case (0x0200+BLE_ERR_CHAN_CLASS ): + return "Channel Classification Not Supported"; + case (0x0200+BLE_ERR_INSUFFICIENT_SEC ): + return "Insufficient Security"; + case (0x0200+BLE_ERR_PARM_OUT_OF_RANGE ): + return "Parameter Out Of Mandatory Range"; + case (0x0200+BLE_ERR_PENDING_ROLE_SW ): + return "Role Switch Pending"; + case (0x0200+BLE_ERR_RESERVED_SLOT ): + return "Reserved Slot Violation"; + case (0x0200+BLE_ERR_ROLE_SW_FAIL ): + return "Role Switch Failed"; + case (0x0200+BLE_ERR_INQ_RSP_TOO_BIG ): + return "Extended Inquiry Response Too Large"; + case (0x0200+BLE_ERR_SEC_SIMPLE_PAIR ): + return "Secure Simple Pairing Not Supported By Host"; + case (0x0200+BLE_ERR_HOST_BUSY_PAIR ): + return "Host Busy - Pairing"; + case (0x0200+BLE_ERR_CONN_REJ_CHANNEL ): + return "Connection Rejected, No Suitable Channel Found"; + case (0x0200+BLE_ERR_CTLR_BUSY ): + return "Controller Busy"; + case (0x0200+BLE_ERR_CONN_PARMS ): + return "Unacceptable Connection Parameters"; + case (0x0200+BLE_ERR_DIR_ADV_TMO ): + return "Directed Advertising Timeout"; + case (0x0200+BLE_ERR_CONN_TERM_MIC ): + return "Connection Terminated due to MIC Failure"; + case (0x0200+BLE_ERR_CONN_ESTABLISHMENT ): + return "Connection Failed to be Established"; + case (0x0200+BLE_ERR_MAC_CONN_FAIL ): + return "MAC Connection Failed"; + case (0x0200+BLE_ERR_COARSE_CLK_ADJ ): + return "Coarse Clock Adjustment Rejected"; + case (0x0300+BLE_L2CAP_SIG_ERR_CMD_NOT_UNDERSTOOD ): + return "Invalid or unsupported incoming L2CAP sig command."; + case (0x0300+BLE_L2CAP_SIG_ERR_MTU_EXCEEDED ): + return "Incoming packet too large."; + case (0x0300+BLE_L2CAP_SIG_ERR_INVALID_CID ): + return "No channel with specified ID."; + case (0x0400+BLE_SM_ERR_PASSKEY ): + return "The user input of passkey failed, for example, the user cancelled the operation."; + case (0x0400+BLE_SM_ERR_OOB ): + return "The OOB data is not available."; + case (0x0400+BLE_SM_ERR_AUTHREQ ): + return "The pairing procedure cannot be performed as authentication requirements cannot be met due to IO capabilities of one or both devices."; + case (0x0400+BLE_SM_ERR_CONFIRM_MISMATCH ): + return "The confirm value does not match the calculated compare value."; + case (0x0400+BLE_SM_ERR_PAIR_NOT_SUPP ): + return "Pairing is not supported by the device."; + case (0x0400+BLE_SM_ERR_ENC_KEY_SZ ): + return "The resultant encryption key size is insufficient for the security requirements of this device."; + case (0x0400+BLE_SM_ERR_CMD_NOT_SUPP ): + return "The SMP command received is not supported on this device."; + case (0x0400+BLE_SM_ERR_UNSPECIFIED ): + return "Pairing failed due to an unspecified reason."; + case (0x0400+BLE_SM_ERR_REPEATED ): + return "Pairing or authentication procedure disallowed, too little time has elapsed since last pairing request or security request."; + case (0x0400+BLE_SM_ERR_INVAL ): + return "Command length is invalid or that a parameter is outside of the specified range."; + case (0x0400+BLE_SM_ERR_DHKEY ): + return "DHKey Check value received doesn't match the one calculated by the local device."; + case (0x0400+BLE_SM_ERR_NUMCMP ): + return "Confirm values in the numeric comparison protocol do not match."; + case (0x0400+BLE_SM_ERR_ALREADY ): + return "Pairing over the LE transport failed - Pairing Request sent over the BR/EDR transport in process."; + case (0x0400+BLE_SM_ERR_CROSS_TRANS ): + return "BR/EDR Link Key generated on the BR/EDR transport cannot be used to derive and distribute keys for the LE transport."; + case (0x0500+BLE_SM_ERR_PASSKEY ): + return "The user input of passkey failed or the user cancelled the operation."; + case (0x0500+BLE_SM_ERR_OOB ): + return "The OOB data is not available."; + case (0x0500+BLE_SM_ERR_AUTHREQ ): + return "The pairing procedure cannot be performed as authentication requirements cannot be met due to IO capabilities of one or both devices."; + case (0x0500+BLE_SM_ERR_CONFIRM_MISMATCH ): + return "The confirm value does not match the calculated compare value."; + case (0x0500+BLE_SM_ERR_PAIR_NOT_SUPP ): + return "Pairing is not supported by the device."; + case (0x0500+BLE_SM_ERR_ENC_KEY_SZ ): + return "The resultant encryption key size is insufficient for the security requirements of this device."; + case (0x0500+BLE_SM_ERR_CMD_NOT_SUPP ): + return "The SMP command received is not supported on this device."; + case (0x0500+BLE_SM_ERR_UNSPECIFIED ): + return "Pairing failed due to an unspecified reason."; + case (0x0500+BLE_SM_ERR_REPEATED ): + return "Pairing or authentication procedure is disallowed because too little time has elapsed since last pairing request or security request."; + case (0x0500+BLE_SM_ERR_INVAL ): + return "Command length is invalid or a parameter is outside of the specified range."; + case (0x0500+BLE_SM_ERR_DHKEY ): + return "Indicates to the remote device that the DHKey Check value received doesn’t match the one calculated by the local device."; + case (0x0500+BLE_SM_ERR_NUMCMP ): + return "Confirm values in the numeric comparison protocol do not match."; + case (0x0500+BLE_SM_ERR_ALREADY ): + return "Pairing over the LE transport failed - Pairing Request sent over the BR/EDR transport in process."; + case (0x0500+BLE_SM_ERR_CROSS_TRANS ): + return "BR/EDR Link Key generated on the BR/EDR transport cannot be used to derive and distribute keys for the LE transport."; + default: + return "Unknown"; + } +#else // #if defined(CONFIG_NIMBLE_CPP_ENABLE_RETURN_CODE_TEXT) + (void)rc; + return ""; +#endif // #if defined(CONFIG_NIMBLE_CPP_ENABLE_RETURN_CODE_TEXT) +} + + +/** + * @brief Convert the advertising type flag to a string. + * @param advType The type to convert. + * @return A string representation of the advertising flags. + */ +const char* NimBLEUtils::advTypeToString(uint8_t advType) { +#if defined(CONFIG_NIMBLE_CPP_ENABLE_ADVERTISEMENT_TYPE_TEXT) + switch(advType) { + case BLE_HCI_ADV_TYPE_ADV_IND : //0 + return "Undirected - Connectable / Scannable"; + case BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_HD: //1 + return "Directed High Duty - Connectable"; + case BLE_HCI_ADV_TYPE_ADV_SCAN_IND: //2 + return "Non-Connectable - Scan Response Available"; + case BLE_HCI_ADV_TYPE_ADV_NONCONN_IND: //3 + return "Non-Connectable - No Scan Response"; + case BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_LD: //4 + return "Directed Low Duty - Connectable"; + default: + return "Unknown flag"; + } +#else // #if defined(CONFIG_NIMBLE_CPP_ENABLE_ADVERTISEMENT_TYPE_TEXT) + (void)advType; + return ""; +#endif // #if defined(CONFIG_NIMBLE_CPP_ENABLE_ADVERTISEMENT_TYPE_TEXT) +} // adFlagsToString + + +/** + * @brief Create a hex representation of data. + * + * @param [in] target Where to write the hex string. If this is null, we malloc storage. + * @param [in] source The start of the binary data. + * @param [in] length The length of the data to convert. + * @return A pointer to the formatted buffer. + */ +char* NimBLEUtils::buildHexData(uint8_t* target, const uint8_t* source, uint8_t length) { + // Guard against too much data. + if (length > 100) length = 100; + + if (target == nullptr) { + target = (uint8_t*) malloc(length * 2 + 1); + if (target == nullptr) { + NIMBLE_LOGE(LOG_TAG, "buildHexData: malloc failed"); + return nullptr; + } + } + char* startOfData = (char*) target; + + for (int i = 0; i < length; i++) { + sprintf((char*) target, "%.2x", (char) *source); + source++; + target += 2; + } + + // Handle the special case where there was no data. + if (length == 0) { + *startOfData = 0; + } + + return startOfData; +} // buildHexData + + +/** + * @brief Utility function to log the gap event info. + * @param [in] event A pointer to the gap event structure. + * @param [in] arg Unused. + */ +void NimBLEUtils::dumpGapEvent(ble_gap_event *event, void *arg){ + (void)arg; +#if defined(CONFIG_NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT) + NIMBLE_LOGD(LOG_TAG, "Received a GAP event: %s", gapEventToString(event->type)); +#else + (void)event; +#endif +} + + +/** + * @brief Convert a GAP event type to a string representation. + * @param [in] eventType The type of event. + * @return A string representation of the event type. + */ +const char* NimBLEUtils::gapEventToString(uint8_t eventType) { +#if defined(CONFIG_NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT) + switch (eventType) { + case BLE_GAP_EVENT_CONNECT : //0 + return "BLE_GAP_EVENT_CONNECT "; + + case BLE_GAP_EVENT_DISCONNECT: //1 + return "BLE_GAP_EVENT_DISCONNECT"; + + case BLE_GAP_EVENT_CONN_UPDATE: //3 + return "BLE_GAP_EVENT_CONN_UPDATE"; + + case BLE_GAP_EVENT_CONN_UPDATE_REQ: //4 + return "BLE_GAP_EVENT_CONN_UPDATE_REQ"; + + case BLE_GAP_EVENT_L2CAP_UPDATE_REQ: //5 + return "BLE_GAP_EVENT_L2CAP_UPDATE_REQ"; + + case BLE_GAP_EVENT_TERM_FAILURE: //6 + return "BLE_GAP_EVENT_TERM_FAILURE"; + + case BLE_GAP_EVENT_DISC: //7 + return "BLE_GAP_EVENT_DISC"; + + case BLE_GAP_EVENT_DISC_COMPLETE: //8 + return "BLE_GAP_EVENT_DISC_COMPLETE"; + + case BLE_GAP_EVENT_ADV_COMPLETE: //9 + return "BLE_GAP_EVENT_ADV_COMPLETE"; + + case BLE_GAP_EVENT_ENC_CHANGE: //10 + return "BLE_GAP_EVENT_ENC_CHANGE"; + + case BLE_GAP_EVENT_PASSKEY_ACTION : //11 + return "BLE_GAP_EVENT_PASSKEY_ACTION"; + + case BLE_GAP_EVENT_NOTIFY_RX: //12 + return "BLE_GAP_EVENT_NOTIFY_RX"; + + case BLE_GAP_EVENT_NOTIFY_TX : //13 + return "BLE_GAP_EVENT_NOTIFY_TX"; + + case BLE_GAP_EVENT_SUBSCRIBE : //14 + return "BLE_GAP_EVENT_SUBSCRIBE"; + + case BLE_GAP_EVENT_MTU: //15 + return "BLE_GAP_EVENT_MTU"; + + case BLE_GAP_EVENT_IDENTITY_RESOLVED: //16 + return "BLE_GAP_EVENT_IDENTITY_RESOLVED"; + + case BLE_GAP_EVENT_REPEAT_PAIRING: //17 + return "BLE_GAP_EVENT_REPEAT_PAIRING"; + + case BLE_GAP_EVENT_PHY_UPDATE_COMPLETE: //18 + return "BLE_GAP_EVENT_PHY_UPDATE_COMPLETE"; + + case BLE_GAP_EVENT_EXT_DISC: //19 + return "BLE_GAP_EVENT_EXT_DISC"; +#ifdef BLE_GAP_EVENT_PERIODIC_SYNC // IDF 4.0 does not support these + case BLE_GAP_EVENT_PERIODIC_SYNC: //20 + return "BLE_GAP_EVENT_PERIODIC_SYNC"; + + case BLE_GAP_EVENT_PERIODIC_REPORT: //21 + return "BLE_GAP_EVENT_PERIODIC_REPORT"; + + case BLE_GAP_EVENT_PERIODIC_SYNC_LOST: //22 + return "BLE_GAP_EVENT_PERIODIC_SYNC_LOST"; + + case BLE_GAP_EVENT_SCAN_REQ_RCVD: //23 + return "BLE_GAP_EVENT_SCAN_REQ_RCVD"; +#endif + default: + NIMBLE_LOGD(LOG_TAG, "gapEventToString: Unknown event type %d 0x%.2x", eventType, eventType); + return "Unknown event type"; + } +#else // #if defined(CONFIG_NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT) + (void)eventType; + return ""; +#endif // #if defined(CONFIG_NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT) +} // gapEventToString + +#endif //CONFIG_BT_ENABLED diff --git a/resources/NimBLE-Arduino/src/NimBLEUtils.h b/resources/NimBLE-Arduino/src/NimBLEUtils.h new file mode 100644 index 0000000..006d935 --- /dev/null +++ b/resources/NimBLE-Arduino/src/NimBLEUtils.h @@ -0,0 +1,51 @@ +/* + * NimBLEUtils.h + * + * Created: on Jan 25 2020 + * Author H2zero + * + */ + +#ifndef COMPONENTS_NIMBLEUTILS_H_ +#define COMPONENTS_NIMBLEUTILS_H_ + +#include "nimconfig.h" +#if defined(CONFIG_BT_ENABLED) + +#if defined(CONFIG_NIMBLE_CPP_IDF) +#include "host/ble_gap.h" +#else +#include "nimble/nimble/host/include/host/ble_gap.h" +#endif + +/**** FIX COMPILATION ****/ +#undef min +#undef max +/**************************/ + +#include + +typedef struct { + void *pATT; + TaskHandle_t task; + int rc; + void *buf; +} ble_task_data_t; + + +/** + * @brief A BLE Utility class with methods for debugging and general purpose use. + */ +class NimBLEUtils { +public: + static void dumpGapEvent(ble_gap_event *event, void *arg); + static const char* gapEventToString(uint8_t eventType); + static char* buildHexData(uint8_t* target, const uint8_t* source, uint8_t length); + static const char* advTypeToString(uint8_t advType); + static const char* returnCodeToString(int rc); + static int checkConnParams(ble_gap_conn_params* params); +}; + + +#endif // CONFIG_BT_ENABLED +#endif // COMPONENTS_NIMBLEUTILS_H_ diff --git a/lib/NimBLE-Arduino/src/nimble/CODING_STANDARDS.md b/resources/NimBLE-Arduino/src/nimble/CODING_STANDARDS.md similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/CODING_STANDARDS.md rename to resources/NimBLE-Arduino/src/nimble/CODING_STANDARDS.md diff --git a/lib/NimBLE-Arduino/src/nimble/LICENSE b/resources/NimBLE-Arduino/src/nimble/LICENSE similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/LICENSE rename to resources/NimBLE-Arduino/src/nimble/LICENSE diff --git a/lib/NimBLE-Arduino/src/nimble/NOTICE b/resources/NimBLE-Arduino/src/nimble/NOTICE similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/NOTICE rename to resources/NimBLE-Arduino/src/nimble/NOTICE diff --git a/lib/NimBLE-Arduino/src/nimble/README.md b/resources/NimBLE-Arduino/src/nimble/README.md similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/README.md rename to resources/NimBLE-Arduino/src/nimble/README.md diff --git a/lib/NimBLE-Arduino/src/nimble/RELEASE_NOTES.md b/resources/NimBLE-Arduino/src/nimble/RELEASE_NOTES.md similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/RELEASE_NOTES.md rename to resources/NimBLE-Arduino/src/nimble/RELEASE_NOTES.md diff --git a/lib/NimBLE-Arduino/src/nimble/console/console.h b/resources/NimBLE-Arduino/src/nimble/console/console.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/console/console.h rename to resources/NimBLE-Arduino/src/nimble/console/console.h diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h b/resources/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h rename to resources/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h b/resources/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h rename to resources/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c b/resources/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c rename to resources/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h b/resources/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h rename to resources/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h b/resources/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h rename to resources/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h diff --git a/lib/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c b/resources/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c rename to resources/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/AUTHORS b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/AUTHORS similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/AUTHORS rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/AUTHORS diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/LICENSE b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/LICENSE similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/LICENSE rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/LICENSE diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/README b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/README similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/README rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/README diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/VERSION b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/VERSION similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/VERSION rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/VERSION diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/documentation/tinycrypt.rst b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/documentation/tinycrypt.rst similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/documentation/tinycrypt.rst rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/documentation/tinycrypt.rst diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/aes.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/aes.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/aes.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/aes.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cbc_mode.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cbc_mode.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cbc_mode.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cbc_mode.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ccm_mode.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ccm_mode.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ccm_mode.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ccm_mode.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cmac_mode.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cmac_mode.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cmac_mode.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cmac_mode.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/constants.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/constants.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/constants.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/constants.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_mode.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_mode.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_mode.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_mode.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_prng.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_prng.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_prng.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_prng.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dh.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dh.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dh.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dh.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dsa.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dsa.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dsa.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dsa.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_platform_specific.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_platform_specific.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_platform_specific.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_platform_specific.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac_prng.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac_prng.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac_prng.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac_prng.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/sha256.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/sha256.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/sha256.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/sha256.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/utils.h b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/utils.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/utils.h rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/utils.h diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_decrypt.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_decrypt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_decrypt.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_decrypt.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_encrypt.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_encrypt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_encrypt.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_encrypt.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cbc_mode.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cbc_mode.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cbc_mode.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cbc_mode.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ccm_mode.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ccm_mode.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ccm_mode.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ccm_mode.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cmac_mode.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cmac_mode.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cmac_mode.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cmac_mode.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_mode.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_mode.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_mode.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_mode.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_prng.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_prng.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_prng.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_prng.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dh.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dh.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dh.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dh.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dsa.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dsa.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dsa.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dsa.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_platform_specific.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_platform_specific.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_platform_specific.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_platform_specific.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac_prng.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac_prng.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac_prng.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac_prng.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/sha256.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/sha256.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/sha256.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/sha256.c diff --git a/lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/utils.c b/resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/utils.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/utils.c rename to resources/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/utils.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_hw.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_hw.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_hw.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_hw.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_adv.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_adv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_adv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_adv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_conn.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_conn.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_conn.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_conn.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_ctrl.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_ctrl.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_ctrl.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_ctrl.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_hci.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_hci.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_hci.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_hci.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_iso.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_iso.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_iso.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_iso.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_resolv.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_resolv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_resolv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_resolv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_rfmgmt.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_rfmgmt.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_rfmgmt.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_rfmgmt.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_scan.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_scan.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_scan.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_scan.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sched.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sched.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sched.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sched.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sync.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sync.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sync.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sync.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_test.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_test.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_test.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_test.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_trace.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_trace.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_trace.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_trace.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_utils.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_utils.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_utils.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_utils.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_whitelist.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_whitelist.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_whitelist.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_whitelist.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy_trace.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy_trace.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy_trace.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy_trace.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_adv.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_adv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_adv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_adv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_hci.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_hci.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_hci.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_hci.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_ctrl.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_ctrl.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_ctrl.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_ctrl.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci_ev.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci_ev.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci_ev.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci_ev.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_iso.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_iso.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_iso.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_iso.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rand.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rand.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rand.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rand.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_resolv.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_resolv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_resolv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_resolv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rfmgmt.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rfmgmt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rfmgmt.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rfmgmt.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_scan.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_scan.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_scan.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_scan.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sched.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sched.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sched.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sched.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_supp_cmd.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_supp_cmd.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_supp_cmd.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_supp_cmd.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sync.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sync.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sync.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sync.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_trace.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_trace.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_trace.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_trace.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_utils.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_utils.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_utils.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_utils.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_whitelist.c b/resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_whitelist.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_whitelist.c rename to resources/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_whitelist.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/include/ble/xcvr.h b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/include/ble/xcvr.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/include/ble/xcvr.h rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/include/ble/xcvr.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_hw.c b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_hw.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_hw.c rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_hw.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_phy.c b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_phy.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_phy.c rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_phy.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/include/ble/xcvr.h b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/include/ble/xcvr.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/include/ble/xcvr.h rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/include/ble/xcvr.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_hw.c b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_hw.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_hw.c rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_hw.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy.c b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy.c rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy_trace.c b/resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy_trace.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy_trace.c rename to resources/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy_trace.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_att.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_att.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_att.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_att.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_eddystone.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_eddystone.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_eddystone.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_eddystone.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gap.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gap.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gap.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gap.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gatt.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gatt.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gatt.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gatt.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_adv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_adv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_adv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_adv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_hci.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_hci.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_hci.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_hci.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_id.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_id.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_id.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_id.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_log.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_log.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_log.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_log.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_mbuf.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_mbuf.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_mbuf.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_mbuf.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_pvcy.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_pvcy.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_pvcy.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_pvcy.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_stop.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_stop.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_stop.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_stop.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_ibeacon.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_ibeacon.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_ibeacon.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_ibeacon.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_l2cap.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_l2cap.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_l2cap.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_l2cap.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_monitor.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_monitor.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_monitor.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_monitor.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_sm.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_sm.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_sm.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_sm.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_store.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_store.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_store.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_store.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_uuid.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_uuid.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_uuid.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_uuid.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/access.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/access.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/access.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/access.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/atomic.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/atomic.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/atomic.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/atomic.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cdb.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cdb.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cdb.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cdb.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_cli.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_cli.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_cli.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_cli.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_srv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_srv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_srv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_srv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/glue.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/glue.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/glue.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/glue.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_cli.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_cli.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_cli.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_cli.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_srv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_srv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_srv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_srv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/heartbeat.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/heartbeat.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/heartbeat.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/heartbeat.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/main.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/main.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/main.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/main.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/mesh.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/mesh.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/mesh.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/mesh.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_cli.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_cli.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_cli.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_cli.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_srv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_srv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_srv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_srv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/porting.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/porting.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/porting.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/porting.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/proxy.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/proxy.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/proxy.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/proxy.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/slist.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/slist.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/slist.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/slist.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/testing.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/testing.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/testing.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/testing.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/aes-ccm.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/aes-ccm.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/aes-ccm.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/aes-ccm.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/atomic.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/atomic.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/atomic.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/atomic.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cdb.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cdb.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cdb.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cdb.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_cli.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_cli.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_cli.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_cli.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_srv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_srv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_srv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_srv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/foundation.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/foundation.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/foundation.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/foundation.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/glue.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/glue.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/glue.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/glue.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_cli.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_cli.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_cli.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_cli.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_srv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_srv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_srv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_srv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_cli.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_cli.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_cli.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_cli.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_srv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_srv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_srv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_srv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_adv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_adv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_adv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_adv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_gatt.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_gatt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_gatt.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_gatt.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_bearer.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_bearer.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_bearer.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_bearer.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_device.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_device.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_device.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_device.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/ans/include/services/ans/ble_svc_ans.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/ans/include/services/ans/ble_svc_ans.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/ans/include/services/ans/ble_svc_ans.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/ans/include/services/ans/ble_svc_ans.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/ans/src/ble_svc_ans.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/ans/src/ble_svc_ans.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/ans/src/ble_svc_ans.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/ans/src/ble_svc_ans.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/bas/include/services/bas/ble_svc_bas.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/bas/include/services/bas/ble_svc_bas.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/bas/include/services/bas/ble_svc_bas.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/bas/include/services/bas/ble_svc_bas.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/bas/src/ble_svc_bas.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/bas/src/ble_svc_bas.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/bas/src/ble_svc_bas.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/bas/src/ble_svc_bas.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/dis/include/services/dis/ble_svc_dis.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/dis/include/services/dis/ble_svc_dis.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/dis/include/services/dis/ble_svc_dis.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/dis/include/services/dis/ble_svc_dis.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/dis/src/ble_svc_dis.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/dis/src/ble_svc_dis.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/dis/src/ble_svc_dis.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/dis/src/ble_svc_dis.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/gap/src/ble_svc_gap.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/gap/src/ble_svc_gap.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/gap/src/ble_svc_gap.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/gap/src/ble_svc_gap.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/ias/include/services/ias/ble_svc_ias.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/ias/include/services/ias/ble_svc_ias.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/ias/include/services/ias/ble_svc_ias.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/ias/include/services/ias/ble_svc_ias.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/ias/src/ble_svc_ias.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/ias/src/ble_svc_ias.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/ias/src/ble_svc_ias.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/ias/src/ble_svc_ias.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/include/services/ipss/ble_svc_ipss.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/include/services/ipss/ble_svc_ipss.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/include/services/ipss/ble_svc_ipss.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/include/services/ipss/ble_svc_ipss.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/lls/include/services/lls/ble_svc_lls.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/lls/include/services/lls/ble_svc_lls.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/lls/include/services/lls/ble_svc_lls.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/lls/include/services/lls/ble_svc_lls.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/services/lls/src/ble_svc_lls.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/services/lls/src/ble_svc_lls.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/services/lls/src/ble_svc_lls.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/services/lls/src/ble_svc_lls.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_clt.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_clt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_clt.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_clt.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_svr.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_svr.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_svr.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_svr.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_eddystone.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_eddystone.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_eddystone.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_eddystone.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatt_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatt_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatt_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatt_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gattc.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gattc.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gattc.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gattc.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts_lcl.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts_lcl.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts_lcl.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts_lcl.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_cfg.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_cfg.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_cfg.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_cfg.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_cmd.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_cmd.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_cmd.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_cmd.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_evt.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_evt.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_evt.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_evt.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_util.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_util.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_util.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_util.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_log.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_log.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_log.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_log.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_misc.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_misc.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_misc.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_misc.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mqueue.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mqueue.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mqueue.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mqueue.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_shutdown.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_shutdown.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_shutdown.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_shutdown.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_ibeacon.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_ibeacon.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_ibeacon.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_ibeacon.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_cmd.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_cmd.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_cmd.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_cmd.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_alg.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_alg.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_alg.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_alg.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_cmd.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_cmd.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_cmd.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_cmd.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_lgcy.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_lgcy.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_lgcy.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_lgcy.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store_util.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store_util.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store_util.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store_util.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/include/store/config/ble_store_config.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/include/store/config/ble_store_config.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/include/store/config/ble_store_config.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/include/store/config/ble_store_config.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_conf.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_conf.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_conf.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_conf.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_priv.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_priv.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_priv.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_priv.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_nvs.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_nvs.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_nvs.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_nvs.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/util/include/host/util/util.h b/resources/NimBLE-Arduino/src/nimble/nimble/host/util/include/host/util/util.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/util/include/host/util/util.h rename to resources/NimBLE-Arduino/src/nimble/nimble/host/util/include/host/util/util.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/host/util/src/addr.c b/resources/NimBLE-Arduino/src/nimble/nimble/host/util/src/addr.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/host/util/src/addr.c rename to resources/NimBLE-Arduino/src/nimble/nimble/host/util/src/addr.c diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble.h b/resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble.h rename to resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble_hci_trans.h b/resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble_hci_trans.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble_hci_trans.h rename to resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble_hci_trans.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/hci_common.h b/resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/hci_common.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/hci_common.h rename to resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/hci_common.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_npl.h b/resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_npl.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_npl.h rename to resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_npl.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt.h b/resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt.h rename to resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt_auto.h b/resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt_auto.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt_auto.h rename to resources/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt_auto.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/transport/ram/include/transport/ram/ble_hci_ram.h b/resources/NimBLE-Arduino/src/nimble/nimble/transport/ram/include/transport/ram/ble_hci_ram.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/transport/ram/include/transport/ram/ble_hci_ram.h rename to resources/NimBLE-Arduino/src/nimble/nimble/transport/ram/include/transport/ram/ble_hci_ram.h diff --git a/lib/NimBLE-Arduino/src/nimble/nimble/transport/ram/src/ble_hci_ram.c b/resources/NimBLE-Arduino/src/nimble/nimble/transport/ram/src/ble_hci_ram.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/nimble/transport/ram/src/ble_hci_ram.c rename to resources/NimBLE-Arduino/src/nimble/nimble/transport/ram/src/ble_hci_ram.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/hal/hal_timer.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/hal/hal_timer.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/hal/hal_timer.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/hal/hal_timer.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/log/log.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/log/log.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/log/log.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/log/log.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/ignore.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/ignore.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/ignore.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/ignore.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/log_common.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/log_common.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/log_common.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/log_common.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/logcfg/logcfg.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/logcfg/logcfg.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/logcfg/logcfg.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/logcfg/logcfg.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/mem/mem.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/mem/mem.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/mem/mem.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/mem/mem.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/modlog/modlog.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/modlog/modlog.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/modlog/modlog.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/modlog/modlog.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/nimble/nimble_port.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/nimble/nimble_port.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/nimble/nimble_port.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/nimble/nimble_port.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/endian.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/endian.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/endian.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/endian.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_cputime.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_cputime.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_cputime.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_cputime.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_error.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_error.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_error.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_error.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mbuf.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mbuf.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mbuf.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mbuf.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mempool.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mempool.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mempool.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mempool.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_trace_api.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_trace_api.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_trace_api.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_trace_api.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/queue.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/queue.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/queue.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/queue.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/util.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/util.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/os/util.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/os/util.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/stats/stats.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/stats/stats.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/stats/stats.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/stats/stats.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/syscfg/syscfg.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/syscfg/syscfg.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/syscfg/syscfg.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/syscfg/syscfg.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/sysflash/sysflash.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/sysflash/sysflash.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/sysflash/sysflash.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/sysflash/sysflash.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/include/sysinit/sysinit.h b/resources/NimBLE-Arduino/src/nimble/porting/nimble/include/sysinit/sysinit.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/include/sysinit/sysinit.h rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/include/sysinit/sysinit.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/endian.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/endian.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/endian.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/endian.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_timer.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_timer.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_timer.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_timer.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_uart.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_uart.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_uart.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_uart.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/mem.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/mem.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/mem.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/mem.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/nimble_port.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/nimble_port.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/nimble_port.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/nimble_port.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime_pwr2.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime_pwr2.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime_pwr2.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime_pwr2.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mbuf.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mbuf.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mbuf.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mbuf.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mempool.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mempool.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mempool.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mempool.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_msys_init.c b/resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_msys_init.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/nimble/src/os_msys_init.c rename to resources/NimBLE-Arduino/src/nimble/porting/nimble/src/os_msys_init.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h b/resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h rename to resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_port_freertos.h b/resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_port_freertos.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_port_freertos.h rename to resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_port_freertos.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/npl_freertos.h b/resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/npl_freertos.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/npl_freertos.h rename to resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/npl_freertos.h diff --git a/lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/nimble_port_freertos.c b/resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/nimble_port_freertos.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/nimble_port_freertos.c rename to resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/nimble_port_freertos.c diff --git a/lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c b/resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c similarity index 100% rename from lib/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c rename to resources/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c diff --git a/lib/NimBLE-Arduino/src/nimconfig.h b/resources/NimBLE-Arduino/src/nimconfig.h similarity index 100% rename from lib/NimBLE-Arduino/src/nimconfig.h rename to resources/NimBLE-Arduino/src/nimconfig.h diff --git a/resources/NimBLE-Arduino/src/nimconfig_rename.h b/resources/NimBLE-Arduino/src/nimconfig_rename.h new file mode 100644 index 0000000..c45aa8b --- /dev/null +++ b/resources/NimBLE-Arduino/src/nimconfig_rename.h @@ -0,0 +1,61 @@ +/* + * For ESP-IDF compatibility + * Some versions of ESP-IDF used the config name format "CONFIG_NIMBLE_". + * This converts them to "CONFIG_BT_NIMBLE_" format used in the latest IDF. + */ + +#if defined(CONFIG_NIMBLE_ENABLED) && !defined(CONFIG_BT_NIMBLE_ENABLED) +#define CONFIG_BT_NIMBLE_ENABLED +#endif + +#if defined(CONFIG_NIMBLE_ROLE_OBSERVER) && !defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) +#define CONFIG_BT_NIMBLE_ROLE_OBSERVER +#endif + +#if defined(CONFIG_NIMBLE_ROLE_BROADCASTER) && !defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) +#define CONFIG_BT_NIMBLE_ROLE_BROADCASTER +#endif + +#if defined(CONFIG_NIMBLE_ROLE_CENTRAL) && !defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) +#define CONFIG_BT_NIMBLE_ROLE_CENTRAL +#endif + +#if defined(CONFIG_NIMBLE_ROLE_PERIPHERAL) && !defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +#define CONFIG_BT_NIMBLE_ROLE_PERIPHERAL +#endif + +#if defined(CONFIG_NIMBLE_DEBUG) && !defined(CONFIG_BT_NIMBLE_DEBUG) +#define CONFIG_BT_NIMBLE_DEBUG +#endif + +#if defined(CONFIG_SCAN_DUPLICATE_BY_DEVICE_ADDR) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE) +#define CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE CONFIG_SCAN_DUPLICATE_BY_DEVICE_ADDR +#endif + +#if defined(CONFIG_SCAN_DUPLICATE_BY_ADV_DATA ) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE_DATA) +#define CONFIG_BTDM_SCAN_DUPL_TYPE_DATA CONFIG_SCAN_DUPLICATE_BY_ADV_DATA +#endif + +#if defined(CONFIG_SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE) +#define CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE CONFIG_SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR +#endif + +#if defined(CONFIG_SCAN_DUPLICATE_TYPE) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE) +#define CONFIG_BTDM_SCAN_DUPL_TYPE CONFIG_SCAN_DUPLICATE_TYPE +#endif + +#if defined(CONFIG_BT_CTRL_SCAN_DUPL_TYPE) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE) +#define CONFIG_BTDM_SCAN_DUPL_TYPE CONFIG_BT_CTRL_SCAN_DUPL_TYPE +#endif + +#if defined(CONFIG_DUPLICATE_SCAN_CACHE_SIZE) && !defined(CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE) +#define CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE CONFIG_DUPLICATE_SCAN_CACHE_SIZE +#endif + +#if defined(CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE) && !defined(CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE) +#define CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE +#endif + +#if defined(CONFIG_NIMBLE_MAX_CONNECTIONS ) && !defined(CONFIG_BT_NIMBLE_MAX_CONNECTIONS) +#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS CONFIG_NIMBLE_MAX_CONNECTIONS +#endif From b7108098f899e0612d8d18252f969c76eda95c98 Mon Sep 17 00:00:00 2001 From: iranl Date: Thu, 20 Jun 2024 18:35:14 +0200 Subject: [PATCH 3/4] Fix release workflow (#405) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2241a4..e3370a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -163,7 +163,7 @@ jobs: with: prerelease: false allowUpdates: true - updateOnlyUnreleased: true + updateOnlyUnreleased: false draft: true name: "Nuki Hub ${{ steps.get_version.outputs.VERSION }}" artifacts: ${{ steps.zip.outputs.artifacts }} From 2ccae4b64b33d80c8f86c04695aa8d049d2615f9 Mon Sep 17 00:00:00 2001 From: iranl Date: Sat, 22 Jun 2024 07:20:56 +0200 Subject: [PATCH 4/4] Fix nr of retries (#411) --- src/NukiOpenerWrapper.cpp | 30 +++++++++++++++--------------- src/NukiWrapper.cpp | 30 +++++++++++++++--------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/NukiOpenerWrapper.cpp b/src/NukiOpenerWrapper.cpp index 36d203e..22f047b 100644 --- a/src/NukiOpenerWrapper.cpp +++ b/src/NukiOpenerWrapper.cpp @@ -64,7 +64,7 @@ void NukiOpenerWrapper::initialize() _retryDelay = _preferences->getInt(preference_command_retry_delay); _rssiPublishInterval = _preferences->getInt(preference_rssi_publish_interval) * 1000; - if(_nrOfRetries == 200) + if(_nrOfRetries < 0 || _nrOfRetries == 200) { _nrOfRetries = 3; _preferences->putInt(preference_command_nr_of_retries, _nrOfRetries); @@ -353,7 +353,7 @@ void NukiOpenerWrapper::updateKeyTurnerState() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -438,7 +438,7 @@ void NukiOpenerWrapper::updateBatteryState() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -498,7 +498,7 @@ void NukiOpenerWrapper::updateConfig() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -580,7 +580,7 @@ void NukiOpenerWrapper::updateAuthData(bool retrieved) Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -657,7 +657,7 @@ void NukiOpenerWrapper::updateKeypad(bool retrieved) Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -728,7 +728,7 @@ void NukiOpenerWrapper::updateTimeControl(bool retrieved) Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1043,7 +1043,7 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value) cmdResult = Nuki::CmdResult::Error; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1243,7 +1243,7 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value) cmdResult = Nuki::CmdResult::Error; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1571,7 +1571,7 @@ void NukiOpenerWrapper::onKeypadCommandReceived(const char *command, const uint Nuki::CmdResult result = (Nuki::CmdResult)-1; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1769,7 +1769,7 @@ void NukiOpenerWrapper::onKeypadJsonCommandReceived(const char *value) Nuki::CmdResult result = (Nuki::CmdResult)-1; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2233,7 +2233,7 @@ void NukiOpenerWrapper::onTimeControlCommandReceived(const char *value) Nuki::CmdResult result = (Nuki::CmdResult)-1; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2458,7 +2458,7 @@ void NukiOpenerWrapper::readConfig() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2492,7 +2492,7 @@ void NukiOpenerWrapper::readAdvancedConfig() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2544,7 +2544,7 @@ void NukiOpenerWrapper::disableHASS() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) diff --git a/src/NukiWrapper.cpp b/src/NukiWrapper.cpp index a46f2d4..2ebd1b6 100644 --- a/src/NukiWrapper.cpp +++ b/src/NukiWrapper.cpp @@ -87,7 +87,7 @@ void NukiWrapper::initialize(const bool& firstStart) _preferences->putBytes(preference_conf_opener_advanced_acl, (byte*)(&advancedOpenerConfigAclPrefs), sizeof(advancedOpenerConfigAclPrefs)); } - if(_nrOfRetries == 200) + if(_nrOfRetries < 0 || _nrOfRetries == 200) { _nrOfRetries = 3; _preferences->putInt(preference_command_nr_of_retries, _nrOfRetries); @@ -379,7 +379,7 @@ void NukiWrapper::updateKeyTurnerState() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -441,7 +441,7 @@ void NukiWrapper::updateBatteryState() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -501,7 +501,7 @@ void NukiWrapper::updateConfig() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -583,7 +583,7 @@ void NukiWrapper::updateAuthData(bool retrieved) Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -660,7 +660,7 @@ void NukiWrapper::updateKeypad(bool retrieved) Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -731,7 +731,7 @@ void NukiWrapper::updateTimeControl(bool retrieved) Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1174,7 +1174,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value) cmdResult = Nuki::CmdResult::Error; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1396,7 +1396,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value) cmdResult = Nuki::CmdResult::Error; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1789,7 +1789,7 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c Nuki::CmdResult result = (Nuki::CmdResult)-1; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -1987,7 +1987,7 @@ void NukiWrapper::onKeypadJsonCommandReceived(const char *value) Nuki::CmdResult result = (Nuki::CmdResult)-1; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2451,7 +2451,7 @@ void NukiWrapper::onTimeControlCommandReceived(const char *value) Nuki::CmdResult result = (Nuki::CmdResult)-1; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2677,7 +2677,7 @@ void NukiWrapper::readConfig() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2709,7 +2709,7 @@ void NukiWrapper::readAdvancedConfig() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600) @@ -2765,7 +2765,7 @@ void NukiWrapper::disableHASS() Nuki::CmdResult result; _retryCount = 0; - while(_retryCount < _nrOfRetries) + while(_retryCount < _nrOfRetries + 1) { int loop = 0; while(_taskRunning && loop < 600)

    HHe(XqgBg2On(z^kC+kxz&^!H?Xd$I%R@5*$* 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�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 F`wzYDM%VxV From b673fb4d5cd85bd52838878ce6ceca50fb315ae8 Mon Sep 17 00:00:00 2001 From: iranl Date: Thu, 20 Jun 2024 18:34:49 +0200 Subject: [PATCH 2/4] Add and remove libs and components for Arduino Core 3 (#400) * Add and remove libs and components for Arduino Core 3 * Add back NimBLE-Arduino in resources --- CMakeLists.txt | 8 +- .../espressif__libsodium/.component_hash | 1 + .../espressif__libsodium/CMakeLists.txt | 178 + components/espressif__libsodium/Kconfig | 15 + components/espressif__libsodium/LICENSE | 18 + components/espressif__libsodium/README.md | 46 + .../espressif__libsodium/idf_component.yml | 6 + .../espressif__libsodium/libsodium/.gitignore | 167 + .../espressif__libsodium/libsodium/AUTHORS | 144 + .../libsodium/CITATION.cff | 18 + .../espressif__libsodium/libsodium/ChangeLog | 627 ++++ .../espressif__libsodium/libsodium/LICENSE | 18 + .../libsodium/Makefile.am | 20 + .../libsodium/README.markdown | 46 + .../espressif__libsodium/libsodium/THANKS | 92 + .../libsodium/appveyor.yml | 24 + .../espressif__libsodium/libsodium/autogen.sh | 117 + .../libsodium/azure-pipelines.yml | 122 + .../espressif__libsodium/libsodium/build.zig | 305 ++ .../libsodium/builds/.gitignore | 7 + .../libsodium/builds/Makefile.am | 79 + .../builds/msvc/properties/ARM64.props | 23 + .../builds/msvc/properties/Common.props | 21 + .../builds/msvc/properties/DLL.props | 16 + .../builds/msvc/properties/Debug.props | 29 + .../builds/msvc/properties/DebugDEXE.props | 21 + .../builds/msvc/properties/DebugDLL.props | 20 + .../builds/msvc/properties/DebugLEXE.props | 20 + .../builds/msvc/properties/DebugLIB.props | 21 + .../builds/msvc/properties/DebugLTCG.props | 20 + .../builds/msvc/properties/DebugSEXE.props | 21 + .../builds/msvc/properties/EXE.props | 17 + .../builds/msvc/properties/LIB.props | 16 + .../builds/msvc/properties/LTCG.props | 13 + .../builds/msvc/properties/Link.props | 21 + .../builds/msvc/properties/Messages.props | 15 + .../builds/msvc/properties/Output.props | 30 + .../builds/msvc/properties/Release.props | 41 + .../builds/msvc/properties/ReleaseDEXE.props | 20 + .../builds/msvc/properties/ReleaseDLL.props | 19 + .../builds/msvc/properties/ReleaseLEXE.props | 20 + .../builds/msvc/properties/ReleaseLIB.props | 19 + .../builds/msvc/properties/ReleaseLTCG.props | 19 + .../builds/msvc/properties/ReleaseSEXE.props | 20 + .../builds/msvc/properties/Win32.props | 23 + .../builds/msvc/properties/x64.props | 26 + .../libsodium/builds/msvc/resource.h | 14 + .../libsodium/builds/msvc/resource.rc | 65 + .../libsodium/builds/msvc/version.h | 33 + .../builds/msvc/vs2010/libsodium.import.props | 52 + .../builds/msvc/vs2010/libsodium.import.xml | 17 + .../builds/msvc/vs2010/libsodium.sln | 50 + .../msvc/vs2010/libsodium/libsodium.props | 48 + .../msvc/vs2010/libsodium/libsodium.vcxproj | 345 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2010/libsodium/libsodium.xml | 15 + .../builds/msvc/vs2012/libsodium.import.props | 52 + .../builds/msvc/vs2012/libsodium.import.xml | 17 + .../builds/msvc/vs2012/libsodium.sln | 50 + .../msvc/vs2012/libsodium/libsodium.props | 48 + .../msvc/vs2012/libsodium/libsodium.vcxproj | 345 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2012/libsodium/libsodium.xml | 15 + .../builds/msvc/vs2013/libsodium.import.props | 52 + .../builds/msvc/vs2013/libsodium.import.xml | 17 + .../builds/msvc/vs2013/libsodium.sln | 52 + .../msvc/vs2013/libsodium/libsodium.props | 48 + .../msvc/vs2013/libsodium/libsodium.vcxproj | 345 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2013/libsodium/libsodium.xml | 15 + .../builds/msvc/vs2015/libsodium.import.props | 52 + .../builds/msvc/vs2015/libsodium.import.xml | 17 + .../builds/msvc/vs2015/libsodium.sln | 52 + .../msvc/vs2015/libsodium/libsodium.props | 48 + .../msvc/vs2015/libsodium/libsodium.vcxproj | 345 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2015/libsodium/libsodium.xml | 15 + .../builds/msvc/vs2017/libsodium.import.props | 52 + .../builds/msvc/vs2017/libsodium.import.xml | 17 + .../builds/msvc/vs2017/libsodium.sln | 52 + .../msvc/vs2017/libsodium/libsodium.props | 48 + .../msvc/vs2017/libsodium/libsodium.vcxproj | 345 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2017/libsodium/libsodium.xml | 15 + .../builds/msvc/vs2019/libsodium.import.props | 52 + .../builds/msvc/vs2019/libsodium.import.xml | 17 + .../builds/msvc/vs2019/libsodium.sln | 52 + .../msvc/vs2019/libsodium/libsodium.props | 48 + .../msvc/vs2019/libsodium/libsodium.vcxproj | 369 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2019/libsodium/libsodium.xml | 15 + .../builds/msvc/vs2022/libsodium.import.props | 52 + .../builds/msvc/vs2022/libsodium.import.xml | 17 + .../builds/msvc/vs2022/libsodium.sln | 70 + .../msvc/vs2022/libsodium/libsodium.props | 48 + .../msvc/vs2022/libsodium/libsodium.vcxproj | 369 ++ .../libsodium/libsodium.vcxproj.filters | 1085 ++++++ .../msvc/vs2022/libsodium/libsodium.xml | 15 + .../libsodium/ci/appveyor/libsodium.sln | 40 + .../libsodium/ci/appveyor/libsodium.vcxproj | 593 +++ .../ci/appveyor/libsodium.vcxproj.filters | 810 ++++ .../ci/appveyor/msvc-scripts/process.bat | 5 + .../ci/appveyor/msvc-scripts/rep.vbs | 12 + .../ci/appveyor/msvc-scripts/sodium.props | 29 + .../libsodium/configure.ac | 998 +++++ .../libsodium/contrib/Findsodium.cmake | 297 ++ .../libsodium/contrib/Makefile.am | 3 + .../libsodium/dist-build/Makefile.am | 14 + .../libsodium/dist-build/android-aar.sh | 144 + .../libsodium/dist-build/android-armv7-a.sh | 4 + .../libsodium/dist-build/android-armv8-a.sh | 4 + .../libsodium/dist-build/android-build.sh | 92 + .../libsodium/dist-build/android-x86.sh | 4 + .../libsodium/dist-build/android-x86_64.sh | 4 + .../libsodium/dist-build/apple-xcframework.sh | 537 +++ .../dist-build/emscripten-symbols.def | 651 ++++ .../libsodium/dist-build/emscripten.sh | 206 + .../dist-build/generate-emscripten-symbols.sh | 59 + .../libsodium/dist-build/macos.sh | 26 + .../libsodium/dist-build/msys2-win32.sh | 18 + .../libsodium/dist-build/msys2-win64.sh | 18 + .../libsodium/dist-build/wasm32-wasi.sh | 45 + .../espressif__libsodium/libsodium/lgtm.yml | 6 + .../libsodium/libsodium-uninstalled.pc.in | 7 + .../libsodium/libsodium.pc.in | 12 + .../espressif__libsodium/libsodium/logo.png | Bin 0 -> 13739 bytes .../libsodium/m4/ax_add_fortify_source.m4 | 121 + .../libsodium/m4/ax_check_catchable_abrt.m4 | 57 + .../libsodium/m4/ax_check_catchable_segv.m4 | 47 + .../libsodium/m4/ax_check_compile_flag.m4 | 55 + .../libsodium/m4/ax_check_define.m4 | 73 + .../libsodium/m4/ax_check_gnu_make.m4 | 95 + .../libsodium/m4/ax_check_link_flag.m4 | 75 + .../libsodium/m4/ax_pthread.m4 | 522 +++ .../libsodium/m4/ax_tls.m4 | 71 + .../libsodium/m4/ax_valgrind_check.m4 | 241 ++ .../libsodium/m4/ld-output-def.m4 | 29 + .../packaging/dotnet-core/libsodium.pkgproj | 40 + .../libsodium/packaging/dotnet-core/test.cs | 43 + .../libsodium/packaging/nuget/.gitignore | 4 + .../libsodium/packaging/nuget/package.bat | 13 + .../libsodium/packaging/nuget/package.config | 4 + .../libsodium/packaging/nuget/package.gsl | 260 ++ .../libsodium/regen-msvc/libsodium.vcxproj | 326 ++ .../regen-msvc/libsodium.vcxproj.filters | 23 + .../regen-msvc/libsodium.vcxproj.filters.tpl | 35 + .../regen-msvc/libsodium.vcxproj.tpl | 37 + .../libsodium/regen-msvc/regen-msvc.py | 240 ++ .../tl_libsodium.vcxproj.filters.tpl | 23 + .../regen-msvc/tl_libsodium.vcxproj.tpl | 332 ++ .../libsodium/src/Makefile.am | 3 + .../libsodium/src/libsodium/Makefile.am | 314 ++ .../crypto_aead/aegis128l/aead_aegis128l.c | 159 + .../crypto_aead/aegis128l/aegis128l_aesni.c | 70 + .../crypto_aead/aegis128l/aegis128l_aesni.h | 8 + .../aegis128l/aegis128l_armcrypto.c | 72 + .../aegis128l/aegis128l_armcrypto.h | 8 + .../crypto_aead/aegis128l/aegis128l_common.h | 229 ++ .../crypto_aead/aegis128l/aegis128l_soft.c | 59 + .../crypto_aead/aegis128l/aegis128l_soft.h | 8 + .../crypto_aead/aegis128l/implementations.h | 17 + .../crypto_aead/aegis256/aead_aegis256.c | 158 + .../crypto_aead/aegis256/aegis256_aesni.c | 65 + .../crypto_aead/aegis256/aegis256_aesni.h | 8 + .../crypto_aead/aegis256/aegis256_armcrypto.c | 70 + .../crypto_aead/aegis256/aegis256_armcrypto.h | 8 + .../crypto_aead/aegis256/aegis256_common.h | 214 ++ .../crypto_aead/aegis256/aegis256_soft.c | 54 + .../crypto_aead/aegis256/aegis256_soft.h | 8 + .../crypto_aead/aegis256/implementations.h | 17 + .../crypto_aead/aes256gcm/aead_aes256gcm.c | 157 + .../aes256gcm/aesni/aead_aes256gcm_aesni.c | 1009 +++++ .../armcrypto/aead_aes256gcm_armcrypto.c | 1032 +++++ .../chacha20poly1305/aead_chacha20poly1305.c | 400 ++ .../aead_xchacha20poly1305.c | 262 ++ .../src/libsodium/crypto_auth/crypto_auth.c | 41 + .../crypto_auth/hmacsha256/auth_hmacsha256.c | 118 + .../crypto_auth/hmacsha512/auth_hmacsha512.c | 118 + .../hmacsha512256/auth_hmacsha512256.c | 93 + .../src/libsodium/crypto_box/crypto_box.c | 114 + .../libsodium/crypto_box/crypto_box_easy.c | 115 + .../libsodium/crypto_box/crypto_box_seal.c | 68 + .../box_curve25519xchacha20poly1305.c | 204 + .../box_seal_curve25519xchacha20poly1305.c | 79 + .../box_curve25519xsalsa20poly1305.c | 156 + .../crypto_core/ed25519/core_ed25519.c | 225 ++ .../crypto_core/ed25519/core_ristretto255.c | 156 + .../crypto_core/ed25519/ref10/ed25519_ref10.c | 2858 ++++++++++++++ .../crypto_core/ed25519/ref10/fe_25_5/base.h | 1344 +++++++ .../crypto_core/ed25519/ref10/fe_25_5/base2.h | 40 + .../ed25519/ref10/fe_25_5/constants.h | 40 + .../crypto_core/ed25519/ref10/fe_25_5/fe.h | 220 ++ .../crypto_core/ed25519/ref10/fe_51/base.h | 1344 +++++++ .../crypto_core/ed25519/ref10/fe_51/base2.h | 40 + .../ed25519/ref10/fe_51/constants.h | 41 + .../crypto_core/ed25519/ref10/fe_51/fe.h | 116 + .../crypto_core/hchacha20/core_hchacha20.c | 93 + .../crypto_core/hsalsa20/core_hsalsa20.c | 21 + .../hsalsa20/ref2/core_hsalsa20_ref2.c | 95 + .../crypto_core/salsa/ref/core_salsa_ref.c | 195 + .../libsodium/crypto_core/softaes/softaes.c | 143 + .../blake2b/generichash_blake2.c | 55 + .../crypto_generichash/blake2b/ref/blake2.h | 106 + .../blake2b/ref/blake2b-compress-avx2.c | 49 + .../blake2b/ref/blake2b-compress-avx2.h | 142 + .../blake2b/ref/blake2b-compress-ref.c | 93 + .../blake2b/ref/blake2b-compress-sse41.c | 87 + .../blake2b/ref/blake2b-compress-sse41.h | 106 + .../blake2b/ref/blake2b-compress-ssse3.c | 90 + .../blake2b/ref/blake2b-compress-ssse3.h | 106 + .../blake2b/ref/blake2b-load-avx2.h | 340 ++ .../blake2b/ref/blake2b-load-sse2.h | 164 + .../blake2b/ref/blake2b-load-sse41.h | 307 ++ .../blake2b/ref/blake2b-ref.c | 438 +++ .../blake2b/ref/generichash_blake2b.c | 116 + .../crypto_generichash/crypto_generichash.c | 91 + .../src/libsodium/crypto_hash/crypto_hash.c | 20 + .../crypto_hash/sha256/cp/hash_sha256_cp.c | 256 ++ .../crypto_hash/sha256/hash_sha256.c | 13 + .../crypto_hash/sha512/cp/hash_sha512_cp.c | 284 ++ .../crypto_hash/sha512/hash_sha512.c | 13 + .../crypto_kdf/blake2b/kdf_blake2b.c | 52 + .../src/libsodium/crypto_kdf/crypto_kdf.c | 49 + .../crypto_kdf/hkdf/kdf_hkdf_sha256.c | 123 + .../crypto_kdf/hkdf/kdf_hkdf_sha512.c | 118 + .../src/libsodium/crypto_kx/crypto_kx.c | 143 + .../crypto_onetimeauth/crypto_onetimeauth.c | 71 + .../poly1305/donna/poly1305_donna.c | 124 + .../poly1305/donna/poly1305_donna.h | 12 + .../poly1305/donna/poly1305_donna32.h | 235 ++ .../poly1305/donna/poly1305_donna64.h | 221 ++ .../poly1305/onetimeauth_poly1305.c | 90 + .../poly1305/onetimeauth_poly1305.h | 21 + .../poly1305/sse2/poly1305_sse2.c | 949 +++++ .../poly1305/sse2/poly1305_sse2.h | 12 + .../crypto_pwhash/argon2/argon2-core.c | 556 +++ .../crypto_pwhash/argon2/argon2-core.h | 271 ++ .../crypto_pwhash/argon2/argon2-encoding.c | 306 ++ .../crypto_pwhash/argon2/argon2-encoding.h | 34 + .../argon2/argon2-fill-block-avx2.c | 239 ++ .../argon2/argon2-fill-block-avx512f.c | 244 ++ .../argon2/argon2-fill-block-ref.c | 234 ++ .../argon2/argon2-fill-block-ssse3.c | 238 ++ .../libsodium/crypto_pwhash/argon2/argon2.c | 283 ++ .../libsodium/crypto_pwhash/argon2/argon2.h | 305 ++ .../crypto_pwhash/argon2/blake2b-long.c | 79 + .../crypto_pwhash/argon2/blake2b-long.h | 8 + .../crypto_pwhash/argon2/blamka-round-avx2.h | 150 + .../argon2/blamka-round-avx512f.h | 145 + .../crypto_pwhash/argon2/blamka-round-ref.h | 40 + .../crypto_pwhash/argon2/blamka-round-ssse3.h | 124 + .../crypto_pwhash/argon2/pwhash_argon2i.c | 294 ++ .../crypto_pwhash/argon2/pwhash_argon2id.c | 238 ++ .../libsodium/crypto_pwhash/crypto_pwhash.c | 212 ++ .../crypto_scrypt-common.c | 268 ++ .../scryptsalsa208sha256/crypto_scrypt.h | 92 + .../nosse/pwhash_scryptsalsa208sha256_nosse.c | 318 ++ .../scryptsalsa208sha256/pbkdf2-sha256.c | 96 + .../scryptsalsa208sha256/pbkdf2-sha256.h | 45 + .../pwhash_scryptsalsa208sha256.c | 301 ++ .../scryptsalsa208sha256/scrypt_platform.c | 112 + .../sse/pwhash_scryptsalsa208sha256_sse.c | 400 ++ .../crypto_scalarmult/crypto_scalarmult.c | 33 + .../curve25519/ref10/x25519_ref10.c | 182 + .../curve25519/ref10/x25519_ref10.h | 10 + .../curve25519/sandy2x/consts.S | 25 + .../curve25519/sandy2x/consts_namespace.h | 20 + .../curve25519/sandy2x/curve25519_sandy2x.c | 71 + .../curve25519/sandy2x/curve25519_sandy2x.h | 9 + .../crypto_scalarmult/curve25519/sandy2x/fe.h | 26 + .../curve25519/sandy2x/fe51.h | 35 + .../curve25519/sandy2x/fe51_invert.c | 58 + .../curve25519/sandy2x/fe51_mul.S | 200 + .../curve25519/sandy2x/fe51_namespace.h | 16 + .../curve25519/sandy2x/fe51_nsquare.S | 174 + .../curve25519/sandy2x/fe51_pack.S | 228 ++ .../curve25519/sandy2x/fe_frombytes_sandy2x.c | 78 + .../curve25519/sandy2x/ladder.S | 1442 +++++++ .../curve25519/sandy2x/ladder.h | 18 + .../curve25519/sandy2x/ladder_namespace.h | 8 + .../curve25519/sandy2x/sandy2x.S | 16 + .../curve25519/scalarmult_curve25519.c | 60 + .../curve25519/scalarmult_curve25519.h | 11 + .../ed25519/ref10/scalarmult_ed25519_ref10.c | 121 + .../ref10/scalarmult_ristretto255_ref10.c | 63 + .../crypto_secretbox/crypto_secretbox.c | 67 + .../crypto_secretbox/crypto_secretbox_easy.c | 145 + .../secretbox_xchacha20poly1305.c | 177 + .../secretbox_xsalsa20poly1305.c | 89 + .../secretstream_xchacha20poly1305.c | 313 ++ .../crypto_shorthash/crypto_shorthash.c | 34 + .../siphash24/ref/shorthash_siphash24_ref.c | 71 + .../siphash24/ref/shorthash_siphash_ref.h | 24 + .../siphash24/ref/shorthash_siphashx24_ref.c | 77 + .../siphash24/shorthash_siphash24.c | 11 + .../siphash24/shorthash_siphashx24.c | 11 + .../src/libsodium/crypto_sign/crypto_sign.c | 115 + .../crypto_sign/ed25519/ref10/keypair.c | 83 + .../crypto_sign/ed25519/ref10/obsolete.c | 118 + .../crypto_sign/ed25519/ref10/open.c | 98 + .../crypto_sign/ed25519/ref10/sign.c | 128 + .../ed25519/ref10/sign_ed25519_ref10.h | 18 + .../crypto_sign/ed25519/sign_ed25519.c | 97 + .../chacha20/dolbeau/chacha20_dolbeau-avx2.c | 177 + .../chacha20/dolbeau/chacha20_dolbeau-avx2.h | 8 + .../chacha20/dolbeau/chacha20_dolbeau-ssse3.c | 171 + .../chacha20/dolbeau/chacha20_dolbeau-ssse3.h | 8 + .../crypto_stream/chacha20/dolbeau/u0.h | 86 + .../crypto_stream/chacha20/dolbeau/u1.h | 98 + .../crypto_stream/chacha20/dolbeau/u4.h | 177 + .../crypto_stream/chacha20/dolbeau/u8.h | 326 ++ .../crypto_stream/chacha20/ref/chacha20_ref.c | 312 ++ .../crypto_stream/chacha20/ref/chacha20_ref.h | 8 + .../crypto_stream/chacha20/stream_chacha20.c | 184 + .../crypto_stream/chacha20/stream_chacha20.h | 22 + .../libsodium/crypto_stream/crypto_stream.c | 49 + .../crypto_stream/salsa20/ref/salsa20_ref.c | 120 + .../crypto_stream/salsa20/ref/salsa20_ref.h | 8 + .../crypto_stream/salsa20/stream_salsa20.c | 100 + .../crypto_stream/salsa20/stream_salsa20.h | 16 + .../salsa20/xmm6/salsa20_xmm6-asm.S | 965 +++++ .../crypto_stream/salsa20/xmm6/salsa20_xmm6.c | 31 + .../crypto_stream/salsa20/xmm6/salsa20_xmm6.h | 8 + .../salsa20/xmm6int/salsa20_xmm6int-avx2.c | 131 + .../salsa20/xmm6int/salsa20_xmm6int-avx2.h | 8 + .../salsa20/xmm6int/salsa20_xmm6int-sse2.c | 122 + .../salsa20/xmm6int/salsa20_xmm6int-sse2.h | 8 + .../crypto_stream/salsa20/xmm6int/u0.h | 195 + .../crypto_stream/salsa20/xmm6int/u1.h | 207 + .../crypto_stream/salsa20/xmm6int/u4.h | 547 +++ .../crypto_stream/salsa20/xmm6int/u8.h | 477 +++ .../salsa2012/ref/stream_salsa2012_ref.c | 106 + .../salsa2012/stream_salsa2012.c | 26 + .../salsa208/ref/stream_salsa208_ref.c | 106 + .../crypto_stream/salsa208/stream_salsa208.c | 26 + .../xchacha20/stream_xchacha20.c | 69 + .../crypto_stream/xsalsa20/stream_xsalsa20.c | 66 + .../src/libsodium/crypto_verify/verify.c | 98 + .../src/libsodium/include/Makefile.am | 76 + .../libsodium/src/libsodium/include/sodium.h | 75 + .../src/libsodium/include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aegis128l.h | 92 + .../include/sodium/crypto_aead_aegis256.h | 92 + .../include/sodium/crypto_aead_aes256gcm.h | 179 + .../sodium/crypto_aead_chacha20poly1305.h | 180 + .../sodium/crypto_aead_xchacha20poly1305.h | 100 + .../libsodium/include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 + .../include/sodium/crypto_auth_hmacsha512.h | 68 + .../sodium/crypto_auth_hmacsha512256.h | 65 + .../src/libsodium/include/sodium/crypto_box.h | 177 + .../crypto_box_curve25519xchacha20poly1305.h | 164 + .../crypto_box_curve25519xsalsa20poly1305.h | 112 + .../include/sodium/crypto_core_ed25519.h | 100 + .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 + .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 + .../sodium/crypto_generichash_blake2b.h | 122 + .../libsodium/include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../src/libsodium/include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kdf_hkdf_sha256.h | 74 + .../include/sodium/crypto_kdf_hkdf_sha512.h | 75 + .../src/libsodium/include/sodium/crypto_kx.h | 66 + .../include/sodium/crypto_onetimeauth.h | 65 + .../sodium/crypto_onetimeauth_poly1305.h | 72 + .../libsodium/include/sodium/crypto_pwhash.h | 147 + .../include/sodium/crypto_pwhash_argon2i.h | 122 + .../include/sodium/crypto_pwhash_argon2id.h | 122 + .../crypto_pwhash_scryptsalsa208sha256.h | 120 + .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 + .../crypto_secretbox_xchacha20poly1305.h | 70 + .../crypto_secretbox_xsalsa20poly1305.h | 69 + .../crypto_secretstream_xchacha20poly1305.h | 108 + .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../libsodium/include/sodium/crypto_sign.h | 107 + .../include/sodium/crypto_sign_ed25519.h | 124 + .../crypto_sign_edwards25519sha512batch.h | 55 + .../libsodium/include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 + .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../src/libsodium/include/sodium/export.h | 57 + .../include/sodium/private/asm_cet.h | 11 + .../sodium/private/chacha20_ietf_ext.h | 16 + .../libsodium/include/sodium/private/common.h | 282 ++ .../include/sodium/private/ed25519_ref10.h | 142 + .../sodium/private/ed25519_ref10_fe_25_5.h | 1030 +++++ .../sodium/private/ed25519_ref10_fe_51.h | 508 +++ .../include/sodium/private/implementations.h | 13 + .../libsodium/include/sodium/private/mutex.h | 7 + .../include/sodium/private/softaes.h | 56 + .../include/sodium/private/sse2_64_32.h | 50 + .../libsodium/include/sodium/randombytes.h | 72 + .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../src/libsodium/include/sodium/runtime.h | 55 + .../src/libsodium/include/sodium/utils.h | 179 + .../src/libsodium/include/sodium/version.h.in | 33 + .../internal/randombytes_internal_random.c | 635 ++++ .../src/libsodium/randombytes/randombytes.c | 199 + .../sysrandom/randombytes_sysrandom.c | 396 ++ .../libsodium/src/libsodium/sodium/codecs.c | 335 ++ .../libsodium/src/libsodium/sodium/core.c | 216 ++ .../libsodium/src/libsodium/sodium/runtime.c | 392 ++ .../libsodium/src/libsodium/sodium/utils.c | 809 ++++ .../libsodium/src/libsodium/sodium/version.c | 30 + .../libsodium/test/Makefile.am | 5 + .../libsodium/test/constcheck.sh | 20 + .../libsodium/test/default/Makefile.am | 525 +++ .../libsodium/test/default/aead_aegis128l.c | 642 ++++ .../libsodium/test/default/aead_aegis128l.exp | 1 + .../libsodium/test/default/aead_aegis256.c | 723 ++++ .../libsodium/test/default/aead_aegis256.exp | 1 + .../libsodium/test/default/aead_aes256gcm.c | 3328 +++++++++++++++++ .../libsodium/test/default/aead_aes256gcm.exp | 1 + .../libsodium/test/default/aead_aes256gcm2.c | 276 ++ .../test/default/aead_aes256gcm2.exp | 1 + .../test/default/aead_chacha20poly1305.c | 372 ++ .../test/default/aead_chacha20poly1305.exp | 63 + .../test/default/aead_chacha20poly13052.c | 1046 ++++++ .../test/default/aead_chacha20poly13052.exp | 1 + .../test/default/aead_xchacha20poly1305.c | 203 + .../test/default/aead_xchacha20poly1305.exp | 51 + .../libsodium/test/default/auth.c | 141 + .../libsodium/test/default/auth.exp | 30 + .../libsodium/test/default/auth2.c | 34 + .../libsodium/test/default/auth2.exp | 4 + .../libsodium/test/default/auth3.c | 36 + .../libsodium/test/default/auth3.exp | 1 + .../libsodium/test/default/auth5.c | 41 + .../libsodium/test/default/auth5.exp | 0 .../libsodium/test/default/auth6.c | 23 + .../libsodium/test/default/auth6.exp | 8 + .../libsodium/test/default/auth7.c | 41 + .../libsodium/test/default/auth7.exp | 0 .../libsodium/test/default/box.c | 112 + .../libsodium/test/default/box.exp | 38 + .../libsodium/test/default/box2.c | 80 + .../libsodium/test/default/box2.exp | 34 + .../libsodium/test/default/box7.c | 50 + .../libsodium/test/default/box7.exp | 0 .../libsodium/test/default/box8.c | 58 + .../libsodium/test/default/box8.exp | 0 .../libsodium/test/default/box_easy.c | 72 + .../libsodium/test/default/box_easy.exp | 3 + .../libsodium/test/default/box_easy2.c | 149 + .../libsodium/test/default/box_easy2.exp | 7 + .../libsodium/test/default/box_seal.c | 165 + .../libsodium/test/default/box_seal.exp | 8 + .../libsodium/test/default/box_seed.c | 30 + .../libsodium/test/default/box_seed.exp | 8 + .../libsodium/test/default/chacha20.c | 186 + .../libsodium/test/default/chacha20.exp | 64 + .../libsodium/test/default/cmptest.h | 238 ++ .../libsodium/test/default/codecs.c | 251 ++ .../libsodium/test/default/codecs.exp | 30 + .../libsodium/test/default/core1.c | 41 + .../libsodium/test/default/core1.exp | 4 + .../libsodium/test/default/core2.c | 38 + .../libsodium/test/default/core2.exp | 4 + .../libsodium/test/default/core3.c | 115 + .../libsodium/test/default/core3.exp | 3 + .../libsodium/test/default/core4.c | 36 + .../libsodium/test/default/core4.exp | 8 + .../libsodium/test/default/core5.c | 33 + .../libsodium/test/default/core5.exp | 4 + .../libsodium/test/default/core6.c | 52 + .../libsodium/test/default/core6.exp | 4 + .../libsodium/test/default/core_ed25519.c | 545 +++ .../libsodium/test/default/core_ed25519.exp | 55 + .../test/default/core_ristretto255.c | 271 ++ .../test/default/core_ristretto255.exp | 8 + .../libsodium/test/default/ed25519_convert.c | 70 + .../test/default/ed25519_convert.exp | 3 + .../libsodium/test/default/generichash.c | 1406 +++++++ .../libsodium/test/default/generichash.exp | 65 + .../libsodium/test/default/generichash2.c | 62 + .../libsodium/test/default/generichash2.exp | 64 + .../libsodium/test/default/generichash3.c | 176 + .../libsodium/test/default/generichash3.exp | 75 + .../libsodium/test/default/hash.c | 47 + .../libsodium/test/default/hash.exp | 4 + .../libsodium/test/default/hash3.c | 20 + .../libsodium/test/default/hash3.exp | 1 + .../libsodium/test/default/index.html.tpl | 98 + .../libsodium/test/default/kdf.c | 71 + .../libsodium/test/default/kdf.exp | 77 + .../libsodium/test/default/kdf_hkdf.c | 100 + .../libsodium/test/default/kdf_hkdf.exp | 205 + .../libsodium/test/default/keygen.c | 67 + .../libsodium/test/default/keygen.exp | 1 + .../libsodium/test/default/kx.c | 149 + .../libsodium/test/default/kx.exp | 7 + .../libsodium/test/default/metamorphic.c | 187 + .../libsodium/test/default/metamorphic.exp | 1 + .../libsodium/test/default/misuse.c | 187 + .../libsodium/test/default/misuse.exp | 0 .../libsodium/test/default/onetimeauth.c | 63 + .../libsodium/test/default/onetimeauth.exp | 4 + .../libsodium/test/default/onetimeauth2.c | 33 + .../libsodium/test/default/onetimeauth2.exp | 1 + .../libsodium/test/default/onetimeauth7.c | 36 + .../libsodium/test/default/onetimeauth7.exp | 0 .../libsodium/test/default/pre.js.inc | 22 + .../libsodium/test/default/pwhash_argon2i.c | 467 +++ .../libsodium/test/default/pwhash_argon2i.exp | 11 + .../libsodium/test/default/pwhash_argon2id.c | 517 +++ .../test/default/pwhash_argon2id.exp | 14 + .../libsodium/test/default/pwhash_scrypt.c | 393 ++ .../libsodium/test/default/pwhash_scrypt.exp | 37 + .../libsodium/test/default/pwhash_scrypt_ll.c | 59 + .../test/default/pwhash_scrypt_ll.exp | 15 + .../libsodium/test/default/randombytes.c | 164 + .../libsodium/test/default/randombytes.exp | 2 + .../libsodium/test/default/run.sh | 9 + .../libsodium/test/default/scalarmult.c | 77 + .../libsodium/test/default/scalarmult.exp | 5 + .../libsodium/test/default/scalarmult2.c | 23 + .../libsodium/test/default/scalarmult2.exp | 1 + .../libsodium/test/default/scalarmult5.c | 31 + .../libsodium/test/default/scalarmult5.exp | 1 + .../libsodium/test/default/scalarmult6.c | 54 + .../libsodium/test/default/scalarmult6.exp | 4 + .../libsodium/test/default/scalarmult7.c | 34 + .../libsodium/test/default/scalarmult7.exp | 1 + .../libsodium/test/default/scalarmult8.c | 580 +++ .../libsodium/test/default/scalarmult8.exp | 65 + .../test/default/scalarmult_ed25519.c | 134 + .../test/default/scalarmult_ed25519.exp | 1 + .../test/default/scalarmult_ristretto255.c | 51 + .../test/default/scalarmult_ristretto255.exp | 18 + .../libsodium/test/default/secretbox.c | 84 + .../libsodium/test/default/secretbox.exp | 38 + .../libsodium/test/default/secretbox2.c | 55 + .../libsodium/test/default/secretbox2.exp | 17 + .../libsodium/test/default/secretbox7.c | 36 + .../libsodium/test/default/secretbox7.exp | 0 .../libsodium/test/default/secretbox8.c | 41 + .../libsodium/test/default/secretbox8.exp | 0 .../libsodium/test/default/secretbox_easy.c | 124 + .../libsodium/test/default/secretbox_easy.exp | 9 + .../libsodium/test/default/secretbox_easy2.c | 72 + .../test/default/secretbox_easy2.exp | 5 + .../default/secretstream_xchacha20poly1305.c | 329 ++ .../secretstream_xchacha20poly1305.exp | 1 + .../libsodium/test/default/shorthash.c | 35 + .../libsodium/test/default/shorthash.exp | 64 + .../libsodium/test/default/sign.c | 1324 +++++++ .../libsodium/test/default/sign.exp | 5 + .../libsodium/test/default/siphashx24.c | 33 + .../libsodium/test/default/siphashx24.exp | 64 + .../libsodium/test/default/sodium_core.c | 43 + .../libsodium/test/default/sodium_core.exp | 1 + .../libsodium/test/default/sodium_utils.c | 224 ++ .../libsodium/test/default/sodium_utils.exp | 25 + .../libsodium/test/default/sodium_utils2.c | 120 + .../libsodium/test/default/sodium_utils2.exp | 3 + .../libsodium/test/default/sodium_utils3.c | 87 + .../libsodium/test/default/sodium_utils3.exp | 2 + .../libsodium/test/default/sodium_version.c | 18 + .../libsodium/test/default/sodium_version.exp | 3 + .../libsodium/test/default/stream.c | 84 + .../libsodium/test/default/stream.exp | 83 + .../libsodium/test/default/stream2.c | 59 + .../libsodium/test/default/stream2.exp | 2 + .../libsodium/test/default/stream3.c | 32 + .../libsodium/test/default/stream3.exp | 4 + .../libsodium/test/default/stream4.c | 51 + .../libsodium/test/default/stream4.exp | 17 + .../libsodium/test/default/verify1.c | 76 + .../libsodium/test/default/verify1.exp | 2 + .../test/default/wasi-test-wrapper.sh | 98 + .../libsodium/test/default/wintest.bat | 61 + .../libsodium/test/default/xchacha20.c | 428 +++ .../libsodium/test/default/xchacha20.exp | 5 + .../libsodium/test/quirks/quirks.h | 34 + .../crypto_hash_sha256_mbedtls.c | 121 + .../crypto_hash_sha512_mbedtls.c | 125 + .../port/randombytes_esp32.c | 33 + .../port/randombytes_internal.h | 20 + .../port_include/sodium/version.h | 43 + .../espressif__libsodium/test/CMakeLists.txt | 36 + .../espressif__libsodium/test/test_sodium.c | 126 + lib/AsyncTCP-esphome/.github/dependabot.yml | 10 + lib/AsyncTCP-esphome/.github/stale.yml | 31 + .../.github/workflows/push.yml | 29 + lib/AsyncTCP-esphome/.gitignore | 2 + lib/AsyncTCP-esphome/.piopm | 1 + lib/AsyncTCP-esphome/.travis.yml | 34 + lib/AsyncTCP-esphome/CMakeLists.txt | 15 + lib/AsyncTCP-esphome/Kconfig.projbuild | 30 + lib/AsyncTCP-esphome/LICENSE | 165 + lib/AsyncTCP-esphome/README.md | 12 + lib/AsyncTCP-esphome/arduino-cli.yaml | 25 + lib/AsyncTCP-esphome/component.mk | 3 + .../examples/ClientServer/Client/Client.ino | 42 + .../examples/ClientServer/Client/config.h | 23 + lib/AsyncTCP-esphome/library.json | 23 + lib/AsyncTCP-esphome/src/AsyncTCP.cpp | 1464 ++++++++ lib/AsyncTCP-esphome/src/AsyncTCP.h | 247 ++ lib/AsyncTCP/src/IPv6Address.cpp | 90 + lib/AsyncTCP/src/IPv6Address.h | 94 + lib/CRC16/.github/workflows/main.yml | 11 + lib/CRC16/library.json | 18 + lib/CRC16/library.properties | 11 + lib/CRC16/src/Crc16.cpp | 163 + lib/CRC16/src/Crc16.h | 94 + .../scripts/install-arduino-core-esp8266.sh | 29 + .../.github/scripts/install-arduino-ide.sh | 220 ++ .../.github/scripts/install-platformio.sh | 133 + .../.github/scripts/on-push.sh | 64 + lib/ESPAsyncTCP-esphome/.github/stale.yml | 31 + .../.github/workflows/push.yml | 32 + lib/ESPAsyncTCP-esphome/.gitignore | 2 + lib/ESPAsyncTCP-esphome/.piopm | 1 + lib/ESPAsyncTCP-esphome/LICENSE.txt | 165 + lib/ESPAsyncTCP-esphome/README.md | 33 + .../examples/ClientServer/Client/Client.ino | 62 + .../examples/ClientServer/Client/config.h | 23 + .../examples/ClientServer/Server/Server.ino | 73 + .../examples/ClientServer/Server/config.h | 23 + .../examples/SyncClient/.esp31b.skip | 0 .../examples/SyncClient/SyncClient.ino | 54 + lib/ESPAsyncTCP-esphome/library.json | 22 + lib/ESPAsyncTCP-esphome/src/AsyncPrinter.cpp | 214 ++ lib/ESPAsyncTCP-esphome/src/AsyncPrinter.h | 73 + .../src/DebugPrintMacros.h | 112 + lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp | 1406 +++++++ lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h | 324 ++ .../src/ESPAsyncTCPbuffer.cpp | 555 +++ .../src/ESPAsyncTCPbuffer.h | 118 + lib/ESPAsyncTCP-esphome/src/SyncClient.cpp | 414 ++ lib/ESPAsyncTCP-esphome/src/SyncClient.h | 109 + lib/ESPAsyncTCP-esphome/src/async_config.h | 42 + lib/ESPAsyncTCP-esphome/src/tcp_axtls.c | 613 +++ lib/ESPAsyncTCP-esphome/src/tcp_axtls.h | 98 + .../ssl/gen_server_cert.sh | 36 + lib/ESPAsyncTCP-esphome/ssl/server.cer | Bin 0 -> 587 bytes lib/ESPAsyncTCP-esphome/ssl/server.key | Bin 0 -> 611 bytes lib/NetworkClientSecure/README.md | 133 + .../WiFiClientInsecure/WiFiClientInsecure.ino | 70 + .../examples/WiFiClientInsecure/ci.json | 5 + .../examples/WiFiClientPSK/WiFiClientPSK.ino | 86 + .../examples/WiFiClientPSK/ci.json | 5 + .../WiFiClientSecure/WiFiClientSecure.ino | 102 + .../examples/WiFiClientSecure/ci.json | 5 + .../WiFiClientSecureEnterprise.ino | 132 + .../WiFiClientSecureEnterprise/ci.json | 5 + .../WiFiClientSecureProtocolUpgrade.ino | 190 + .../WiFiClientSecureProtocolUpgrade/ci.json | 5 + .../WiFiClientShowPeerCredentials.ino | 98 + .../WiFiClientShowPeerCredentials/ci.json | 5 + .../WiFiClientTrustOnFirstUse.ino | 270 ++ .../WiFiClientTrustOnFirstUse/ci.json | 5 + lib/NetworkClientSecure/keywords.txt | 36 + lib/NetworkClientSecure/library.properties | 9 + .../src/NetworkClientSecure.cpp | 453 +++ .../src/NetworkClientSecure.h | 131 + .../src/WiFiClientSecure.h | 3 + lib/NetworkClientSecure/src/ssl_client.cpp | 633 ++++ lib/NetworkClientSecure/src/ssl_client.h | 56 + .../.github/workflows/build.yml | 65 + lib/esp-nimble-cpp/.gitignore | 1 + lib/esp-nimble-cpp/CHANGELOG.md | 280 ++ lib/esp-nimble-cpp/CMakeLists.txt | 65 + lib/esp-nimble-cpp/CMakeLists.txt_idf3 | 56 + lib/esp-nimble-cpp/Kconfig | 72 + lib/esp-nimble-cpp/LICENSE | 203 + lib/esp-nimble-cpp/README.md | 70 + lib/esp-nimble-cpp/component.mk | 2 + .../docs/Bluetooth 5 features.md | 0 lib/esp-nimble-cpp/docs/Doxyfile | 2778 ++++++++++++++ .../docs/Improvements_and_updates.md | 149 + lib/esp-nimble-cpp/docs/Migration_guide.md | 437 +++ lib/esp-nimble-cpp/docs/New_user_guide.md | 339 ++ .../docs/Usage_tips.md | 0 lib/esp-nimble-cpp/docs/index.md | 58 + .../Advanced/NimBLE_Client/CMakeLists.txt | 7 + .../examples/Advanced/NimBLE_Client/Makefile | 3 + .../NimBLE_Client/main/CMakeLists.txt | 4 + .../Advanced/NimBLE_Client/main/component.mk | 4 + .../Advanced/NimBLE_Client/main/main.cpp | 372 ++ .../Advanced/NimBLE_Client/sdkconfig.defaults | 12 + .../Advanced/NimBLE_Server/CMakeLists.txt | 7 + .../examples/Advanced/NimBLE_Server/Makefile | 3 + .../NimBLE_Server/main/CMakeLists.txt | 4 + .../Advanced/NimBLE_Server/main/component.mk | 4 + .../Advanced/NimBLE_Server/main/main.cpp | 242 ++ .../Advanced/NimBLE_Server/sdkconfig.defaults | 12 + .../NimBLE_extended_client/CMakeLists.txt | 7 + .../NimBLE_extended_client/Makefile | 3 + .../main/CMakeLists.txt | 4 + .../NimBLE_extended_client/main/component.mk | 4 + .../NimBLE_extended_client/main/main.cpp | 163 + .../NimBLE_extended_client/sdkconfig.defaults | 13 + .../NimBLE_extended_server/CMakeLists.txt | 7 + .../NimBLE_extended_server/Makefile | 3 + .../main/CMakeLists.txt | 4 + .../NimBLE_extended_server/main/component.mk | 4 + .../NimBLE_extended_server/main/main.cpp | 139 + .../NimBLE_extended_server/sdkconfig.defaults | 13 + .../NimBLE_multi_advertiser/CMakeLists.txt | 7 + .../NimBLE_multi_advertiser/Makefile | 3 + .../main/CMakeLists.txt | 4 + .../NimBLE_multi_advertiser/main/component.mk | 4 + .../NimBLE_multi_advertiser/main/main.cpp | 170 + .../sdkconfig.defaults | 13 + .../NimBLE_active_passive_scan.ino | 48 + .../examples/basic/BLE_client/CMakeLists.txt | 7 + .../examples/basic/BLE_client/Makefile | 3 + .../basic/BLE_client/main/CMakeLists.txt | 4 + .../basic/BLE_client/main/component.mk | 4 + .../examples/basic/BLE_client/main/main.cpp | 214 ++ .../basic/BLE_client/sdkconfig.defaults | 12 + .../examples/basic/BLE_notify/CMakeLists.txt | 7 + .../examples/basic/BLE_notify/Makefile | 3 + .../basic/BLE_notify/main/CMakeLists.txt | 4 + .../basic/BLE_notify/main/component.mk | 4 + .../examples/basic/BLE_notify/main/main.cpp | 164 + .../basic/BLE_notify/sdkconfig.defaults | 12 + .../examples/basic/BLE_scan/CMakeLists.txt | 7 + .../examples/basic/BLE_scan/Makefile | 3 + .../basic/BLE_scan/main/CMakeLists.txt | 4 + .../examples/basic/BLE_scan/main/component.mk | 4 + .../examples/basic/BLE_scan/main/main.cpp | 52 + .../basic/BLE_scan/sdkconfig.defaults | 12 + .../examples/basic/BLE_server/CMakeLists.txt | 7 + .../examples/basic/BLE_server/Makefile | 3 + .../basic/BLE_server/main/CMakeLists.txt | 4 + .../basic/BLE_server/main/component.mk | 4 + .../examples/basic/BLE_server/main/main.cpp | 57 + .../basic/BLE_server/sdkconfig.defaults | 12 + .../examples/basic/BLE_uart/CMakeLists.txt | 7 + .../examples/basic/BLE_uart/Makefile | 3 + .../basic/BLE_uart/main/CMakeLists.txt | 4 + .../examples/basic/BLE_uart/main/component.mk | 4 + .../examples/basic/BLE_uart/main/main.cpp | 177 + .../basic/BLE_uart/sdkconfig.defaults | 12 + lib/esp-nimble-cpp/library.json | 8 + lib/esp-nimble-cpp/library.properties | 10 + lib/esp-nimble-cpp/package.json | 17 + .../src/HIDKeyboardTypes.h | 0 .../src/HIDTypes.h | 0 lib/esp-nimble-cpp/src/NimBLE2904.cpp | 82 + lib/esp-nimble-cpp/src/NimBLE2904.h | 80 + lib/esp-nimble-cpp/src/NimBLEAddress.cpp | 206 + lib/esp-nimble-cpp/src/NimBLEAddress.h | 63 + .../src/NimBLEAdvertisedDevice.cpp | 920 +++++ .../src/NimBLEAdvertisedDevice.h | 183 + lib/esp-nimble-cpp/src/NimBLEAdvertising.cpp | 1087 ++++++ lib/esp-nimble-cpp/src/NimBLEAdvertising.h | 150 + lib/esp-nimble-cpp/src/NimBLEAttValue.h | 448 +++ .../src/NimBLEBeacon.cpp | 0 .../src/NimBLEBeacon.h | 0 .../src/NimBLECharacteristic.cpp | 657 ++++ lib/esp-nimble-cpp/src/NimBLECharacteristic.h | 213 ++ lib/esp-nimble-cpp/src/NimBLEClient.cpp | 1351 +++++++ lib/esp-nimble-cpp/src/NimBLEClient.h | 176 + lib/esp-nimble-cpp/src/NimBLEConnInfo.h | 58 + lib/esp-nimble-cpp/src/NimBLEDescriptor.cpp | 307 ++ lib/esp-nimble-cpp/src/NimBLEDescriptor.h | 120 + lib/esp-nimble-cpp/src/NimBLEDevice.cpp | 1257 +++++++ lib/esp-nimble-cpp/src/NimBLEDevice.h | 243 ++ lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.cpp | 227 ++ .../src/NimBLEEddystoneTLM.h | 0 .../src/NimBLEEddystoneURL.cpp | 0 .../src/NimBLEEddystoneURL.h | 0 .../src/NimBLEExtAdvertising.cpp | 867 +++++ .../src/NimBLEExtAdvertising.h | 0 lib/esp-nimble-cpp/src/NimBLEHIDDevice.cpp | 265 ++ lib/esp-nimble-cpp/src/NimBLEHIDDevice.h | 87 + .../src/NimBLELog.h | 0 .../src/NimBLERemoteCharacteristic.cpp | 806 ++++ .../src/NimBLERemoteCharacteristic.h | 180 + .../src/NimBLERemoteDescriptor.cpp | 335 ++ .../src/NimBLERemoteDescriptor.h | 104 + .../src/NimBLERemoteService.cpp | 0 .../src/NimBLERemoteService.h | 0 lib/esp-nimble-cpp/src/NimBLEScan.cpp | 574 +++ lib/esp-nimble-cpp/src/NimBLEScan.h | 128 + lib/esp-nimble-cpp/src/NimBLEServer.cpp | 887 +++++ lib/esp-nimble-cpp/src/NimBLEServer.h | 185 + lib/esp-nimble-cpp/src/NimBLEService.cpp | 446 +++ lib/esp-nimble-cpp/src/NimBLEService.h | 87 + .../src/NimBLEUUID.cpp | 0 .../src/NimBLEUUID.h | 0 .../src/NimBLEUtils.cpp | 0 .../src/NimBLEUtils.h | 0 lib/esp-nimble-cpp/src/nimconfig.h | 140 + .../src/nimconfig_rename.h | 0 platformio.ini | 3 + .../NimBLE-Arduino/CHANGELOG.md | 0 {lib => resources}/NimBLE-Arduino/LICENSE | 0 {lib => resources}/NimBLE-Arduino/README.md | 0 .../docs/Bluetooth 5 features.md | 28 + .../docs/Command_line_config.md | 0 .../NimBLE-Arduino/docs/Doxyfile | 0 .../docs/Improvements_and_updates.md | 0 .../NimBLE-Arduino/docs/Migration_guide.md | 0 .../NimBLE-Arduino/docs/New_user_guide.md | 0 resources/NimBLE-Arduino/docs/Usage_tips.md | 41 + .../NimBLE-Arduino/docs/index.md | 0 .../BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino | 0 .../BLE_Beacon_Scanner/BLE_Beacon_Scanner.md | 0 .../BLE_EddystoneTLM_Beacon.ino | 0 .../BLE_EddystoneTLM_Beacon.md | 0 .../BLE_EddystoneURL_Beacon.ino | 0 .../BLE_EddystoneURL_Beacon.md | 0 .../NimBLE_extended_client.ino | 0 .../NimBLE_extended_server.ino | 0 .../NimBLE_multi_advertiser.ino | 0 .../examples/NimBLE_Client/NimBLE_Client.ino | 0 .../NimBLE_Scan_Continuous.ino | 0 .../NimBLE_Scan_whitelist.ino | 0 .../NimBLE_Secure_Client.ino | 190 +- .../NimBLE_Secure_Server.ino | 82 +- .../examples/NimBLE_Server/NimBLE_Server.ino | 0 .../NimBLE_Server_Whitelist.ino | 0 .../NimBLE_Service_Data_Advertiser.ino | 0 .../BLE_client/BLE_client.ino | 0 .../BLE_iBeacon/BLE_iBeacon.ino | 0 .../BLE_notify/BLE_notify.ino | 0 .../BLE_scan/BLE_scan.ino | 0 .../BLE_server/BLE_server.ino | 0 .../BLE_server_multiconnect.ino | 0 .../BLE_uart/BLE_uart.ino | 0 .../BLE_write/BLE_write.ino | 0 .../NimBLE-Arduino/library.properties | 0 .../NimBLE-Arduino/src/HIDKeyboardTypes.h | 402 ++ resources/NimBLE-Arduino/src/HIDTypes.h | 91 + .../NimBLE-Arduino/src/NimBLE2904.cpp | 0 .../NimBLE-Arduino/src/NimBLE2904.h | 0 .../NimBLE-Arduino/src/NimBLEAddress.cpp | 0 .../NimBLE-Arduino/src/NimBLEAddress.h | 0 .../src/NimBLEAdvertisedDevice.cpp | 0 .../src/NimBLEAdvertisedDevice.h | 0 .../NimBLE-Arduino/src/NimBLEAdvertising.cpp | 0 .../NimBLE-Arduino/src/NimBLEAdvertising.h | 0 .../NimBLE-Arduino/src/NimBLEAttValue.h | 0 resources/NimBLE-Arduino/src/NimBLEBeacon.cpp | 157 + resources/NimBLE-Arduino/src/NimBLEBeacon.h | 51 + .../src/NimBLECharacteristic.cpp | 0 .../NimBLE-Arduino/src/NimBLECharacteristic.h | 0 .../NimBLE-Arduino/src/NimBLEClient.cpp | 0 .../NimBLE-Arduino/src/NimBLEClient.h | 0 .../NimBLE-Arduino/src/NimBLEConnInfo.h | 0 .../NimBLE-Arduino/src/NimBLEDescriptor.cpp | 0 .../NimBLE-Arduino/src/NimBLEDescriptor.h | 0 .../NimBLE-Arduino/src/NimBLEDevice.cpp | 0 .../NimBLE-Arduino/src/NimBLEDevice.h | 0 .../NimBLE-Arduino/src/NimBLEEddystoneTLM.cpp | 0 .../NimBLE-Arduino/src/NimBLEEddystoneTLM.h | 61 + .../NimBLE-Arduino/src/NimBLEEddystoneURL.cpp | 204 + .../NimBLE-Arduino/src/NimBLEEddystoneURL.h | 52 + .../src/NimBLEExtAdvertising.cpp | 0 .../NimBLE-Arduino/src/NimBLEExtAdvertising.h | 152 + .../NimBLE-Arduino/src/NimBLEHIDDevice.cpp | 0 .../NimBLE-Arduino/src/NimBLEHIDDevice.h | 0 resources/NimBLE-Arduino/src/NimBLELog.h | 80 + .../src/NimBLERemoteCharacteristic.cpp | 0 .../src/NimBLERemoteCharacteristic.h | 0 .../src/NimBLERemoteDescriptor.cpp | 0 .../src/NimBLERemoteDescriptor.h | 0 .../src/NimBLERemoteService.cpp | 413 ++ .../NimBLE-Arduino/src/NimBLERemoteService.h | 85 + .../NimBLE-Arduino/src/NimBLEScan.cpp | 0 .../NimBLE-Arduino/src/NimBLEScan.h | 0 .../NimBLE-Arduino/src/NimBLESecurity.cpp | 0 .../NimBLE-Arduino/src/NimBLESecurity.h | 0 .../NimBLE-Arduino/src/NimBLEServer.cpp | 0 .../NimBLE-Arduino/src/NimBLEServer.h | 0 .../NimBLE-Arduino/src/NimBLEService.cpp | 0 .../NimBLE-Arduino/src/NimBLEService.h | 0 resources/NimBLE-Arduino/src/NimBLEUUID.cpp | 360 ++ resources/NimBLE-Arduino/src/NimBLEUUID.h | 64 + resources/NimBLE-Arduino/src/NimBLEUtils.cpp | 518 +++ resources/NimBLE-Arduino/src/NimBLEUtils.h | 51 + .../src/nimble/CODING_STANDARDS.md | 0 .../NimBLE-Arduino/src/nimble/LICENSE | 0 .../NimBLE-Arduino/src/nimble/NOTICE | 0 .../NimBLE-Arduino/src/nimble/README.md | 0 .../src/nimble/RELEASE_NOTES.md | 0 .../src/nimble/console/console.h | 0 .../esp_port/esp-hci/include/esp_compiler.h | 0 .../esp_port/esp-hci/include/esp_nimble_hci.h | 0 .../esp_port/esp-hci/src/esp_nimble_hci.c | 0 .../esp_port/port/include/esp_nimble_cfg.h | 0 .../esp_port/port/include/esp_nimble_mem.h | 0 .../nimble/esp_port/port/src/esp_nimble_mem.c | 0 .../src/nimble/ext/tinycrypt/AUTHORS | 0 .../src/nimble/ext/tinycrypt/LICENSE | 0 .../src/nimble/ext/tinycrypt/README | 0 .../src/nimble/ext/tinycrypt/VERSION | 0 .../ext/tinycrypt/documentation/tinycrypt.rst | 0 .../ext/tinycrypt/include/tinycrypt/aes.h | 0 .../tinycrypt/include/tinycrypt/cbc_mode.h | 0 .../tinycrypt/include/tinycrypt/ccm_mode.h | 0 .../tinycrypt/include/tinycrypt/cmac_mode.h | 0 .../tinycrypt/include/tinycrypt/constants.h | 0 .../tinycrypt/include/tinycrypt/ctr_mode.h | 0 .../tinycrypt/include/tinycrypt/ctr_prng.h | 0 .../ext/tinycrypt/include/tinycrypt/ecc.h | 0 .../ext/tinycrypt/include/tinycrypt/ecc_dh.h | 0 .../ext/tinycrypt/include/tinycrypt/ecc_dsa.h | 0 .../include/tinycrypt/ecc_platform_specific.h | 0 .../ext/tinycrypt/include/tinycrypt/hmac.h | 0 .../tinycrypt/include/tinycrypt/hmac_prng.h | 0 .../ext/tinycrypt/include/tinycrypt/sha256.h | 0 .../ext/tinycrypt/include/tinycrypt/utils.h | 0 .../nimble/ext/tinycrypt/src/aes_decrypt.c | 0 .../nimble/ext/tinycrypt/src/aes_encrypt.c | 0 .../src/nimble/ext/tinycrypt/src/cbc_mode.c | 0 .../src/nimble/ext/tinycrypt/src/ccm_mode.c | 0 .../src/nimble/ext/tinycrypt/src/cmac_mode.c | 0 .../src/nimble/ext/tinycrypt/src/ctr_mode.c | 0 .../src/nimble/ext/tinycrypt/src/ctr_prng.c | 0 .../src/nimble/ext/tinycrypt/src/ecc.c | 0 .../src/nimble/ext/tinycrypt/src/ecc_dh.c | 0 .../src/nimble/ext/tinycrypt/src/ecc_dsa.c | 0 .../ext/tinycrypt/src/ecc_platform_specific.c | 0 .../src/nimble/ext/tinycrypt/src/hmac.c | 0 .../src/nimble/ext/tinycrypt/src/hmac_prng.c | 0 .../src/nimble/ext/tinycrypt/src/sha256.c | 0 .../src/nimble/ext/tinycrypt/src/utils.c | 0 .../controller/include/controller/ble_hw.h | 0 .../controller/include/controller/ble_ll.h | 0 .../include/controller/ble_ll_adv.h | 0 .../include/controller/ble_ll_conn.h | 0 .../include/controller/ble_ll_ctrl.h | 0 .../include/controller/ble_ll_hci.h | 0 .../include/controller/ble_ll_iso.h | 0 .../include/controller/ble_ll_resolv.h | 0 .../include/controller/ble_ll_rfmgmt.h | 0 .../include/controller/ble_ll_scan.h | 0 .../include/controller/ble_ll_sched.h | 0 .../include/controller/ble_ll_sync.h | 0 .../include/controller/ble_ll_test.h | 0 .../include/controller/ble_ll_trace.h | 0 .../include/controller/ble_ll_utils.h | 0 .../include/controller/ble_ll_whitelist.h | 0 .../controller/include/controller/ble_phy.h | 0 .../include/controller/ble_phy_trace.h | 0 .../src/nimble/nimble/controller/src/ble_ll.c | 0 .../nimble/nimble/controller/src/ble_ll_adv.c | 0 .../nimble/controller/src/ble_ll_conn.c | 0 .../nimble/controller/src/ble_ll_conn_hci.c | 0 .../nimble/controller/src/ble_ll_conn_priv.h | 0 .../nimble/controller/src/ble_ll_ctrl.c | 0 .../nimble/nimble/controller/src/ble_ll_dtm.c | 0 .../nimble/controller/src/ble_ll_dtm_priv.h | 0 .../nimble/nimble/controller/src/ble_ll_hci.c | 0 .../nimble/controller/src/ble_ll_hci_ev.c | 0 .../nimble/nimble/controller/src/ble_ll_iso.c | 0 .../nimble/controller/src/ble_ll_priv.h | 0 .../nimble/controller/src/ble_ll_rand.c | 0 .../nimble/controller/src/ble_ll_resolv.c | 0 .../nimble/controller/src/ble_ll_rfmgmt.c | 0 .../nimble/controller/src/ble_ll_scan.c | 0 .../nimble/controller/src/ble_ll_sched.c | 0 .../nimble/controller/src/ble_ll_supp_cmd.c | 0 .../nimble/controller/src/ble_ll_sync.c | 0 .../nimble/controller/src/ble_ll_trace.c | 0 .../nimble/controller/src/ble_ll_utils.c | 0 .../nimble/controller/src/ble_ll_whitelist.c | 0 .../nimble/drivers/nrf51/include/ble/xcvr.h | 0 .../nimble/nimble/drivers/nrf51/src/ble_hw.c | 0 .../nimble/nimble/drivers/nrf51/src/ble_phy.c | 0 .../nimble/drivers/nrf52/include/ble/xcvr.h | 0 .../nimble/nimble/drivers/nrf52/src/ble_hw.c | 0 .../nimble/nimble/drivers/nrf52/src/ble_phy.c | 0 .../nimble/drivers/nrf52/src/ble_phy_trace.c | 0 .../nimble/nimble/host/include/host/ble_att.h | 0 .../nimble/host/include/host/ble_eddystone.h | 0 .../nimble/nimble/host/include/host/ble_gap.h | 0 .../nimble/host/include/host/ble_gatt.h | 0 .../nimble/nimble/host/include/host/ble_hs.h | 0 .../nimble/host/include/host/ble_hs_adv.h | 0 .../nimble/host/include/host/ble_hs_hci.h | 0 .../nimble/host/include/host/ble_hs_id.h | 0 .../nimble/host/include/host/ble_hs_log.h | 0 .../nimble/host/include/host/ble_hs_mbuf.h | 0 .../nimble/host/include/host/ble_hs_pvcy.h | 0 .../nimble/host/include/host/ble_hs_stop.h | 0 .../nimble/host/include/host/ble_ibeacon.h | 0 .../nimble/host/include/host/ble_l2cap.h | 0 .../nimble/host/include/host/ble_monitor.h | 0 .../nimble/nimble/host/include/host/ble_sm.h | 0 .../nimble/host/include/host/ble_store.h | 0 .../nimble/host/include/host/ble_uuid.h | 0 .../nimble/host/mesh/include/mesh/access.h | 0 .../nimble/host/mesh/include/mesh/atomic.h | 0 .../nimble/host/mesh/include/mesh/cdb.h | 0 .../nimble/host/mesh/include/mesh/cfg.h | 0 .../nimble/host/mesh/include/mesh/cfg_cli.h | 0 .../nimble/host/mesh/include/mesh/cfg_srv.h | 0 .../nimble/host/mesh/include/mesh/glue.h | 0 .../host/mesh/include/mesh/health_cli.h | 0 .../host/mesh/include/mesh/health_srv.h | 0 .../nimble/host/mesh/include/mesh/heartbeat.h | 0 .../nimble/host/mesh/include/mesh/main.h | 0 .../nimble/host/mesh/include/mesh/mesh.h | 0 .../nimble/host/mesh/include/mesh/model_cli.h | 0 .../nimble/host/mesh/include/mesh/model_srv.h | 0 .../nimble/host/mesh/include/mesh/porting.h | 0 .../nimble/host/mesh/include/mesh/proxy.h | 0 .../nimble/host/mesh/include/mesh/slist.h | 0 .../nimble/host/mesh/include/mesh/testing.h | 0 .../src/nimble/nimble/host/mesh/src/access.c | 0 .../src/nimble/nimble/host/mesh/src/access.h | 0 .../src/nimble/nimble/host/mesh/src/adv.c | 0 .../src/nimble/nimble/host/mesh/src/adv.h | 0 .../src/nimble/nimble/host/mesh/src/aes-ccm.c | 0 .../nimble/nimble/host/mesh/src/app_keys.c | 0 .../nimble/nimble/host/mesh/src/app_keys.h | 0 .../src/nimble/nimble/host/mesh/src/atomic.h | 0 .../src/nimble/nimble/host/mesh/src/beacon.c | 0 .../src/nimble/nimble/host/mesh/src/beacon.h | 0 .../src/nimble/nimble/host/mesh/src/cdb.c | 0 .../src/nimble/nimble/host/mesh/src/cfg.c | 0 .../src/nimble/nimble/host/mesh/src/cfg.h | 0 .../src/nimble/nimble/host/mesh/src/cfg_cli.c | 0 .../src/nimble/nimble/host/mesh/src/cfg_srv.c | 0 .../src/nimble/nimble/host/mesh/src/crypto.c | 0 .../src/nimble/nimble/host/mesh/src/crypto.h | 0 .../nimble/nimble/host/mesh/src/foundation.h | 0 .../src/nimble/nimble/host/mesh/src/friend.c | 0 .../src/nimble/nimble/host/mesh/src/friend.h | 0 .../src/nimble/nimble/host/mesh/src/glue.c | 0 .../nimble/nimble/host/mesh/src/health_cli.c | 0 .../nimble/nimble/host/mesh/src/health_srv.c | 0 .../nimble/nimble/host/mesh/src/heartbeat.c | 0 .../nimble/nimble/host/mesh/src/heartbeat.h | 0 .../nimble/nimble/host/mesh/src/light_model.c | 0 .../nimble/nimble/host/mesh/src/light_model.h | 0 .../src/nimble/nimble/host/mesh/src/lpn.c | 0 .../src/nimble/nimble/host/mesh/src/lpn.h | 0 .../src/nimble/nimble/host/mesh/src/mesh.c | 0 .../nimble/nimble/host/mesh/src/mesh_priv.h | 0 .../nimble/nimble/host/mesh/src/model_cli.c | 0 .../nimble/nimble/host/mesh/src/model_srv.c | 0 .../src/nimble/nimble/host/mesh/src/net.c | 0 .../src/nimble/nimble/host/mesh/src/net.h | 0 .../src/nimble/nimble/host/mesh/src/nodes.c | 0 .../src/nimble/nimble/host/mesh/src/nodes.h | 0 .../src/nimble/nimble/host/mesh/src/pb_adv.c | 0 .../src/nimble/nimble/host/mesh/src/pb_gatt.c | 0 .../src/nimble/nimble/host/mesh/src/prov.c | 0 .../src/nimble/nimble/host/mesh/src/prov.h | 0 .../nimble/nimble/host/mesh/src/prov_bearer.h | 0 .../nimble/nimble/host/mesh/src/prov_device.c | 0 .../nimble/nimble/host/mesh/src/provisioner.c | 0 .../nimble/nimble/host/mesh/src/provisioner.h | 0 .../src/nimble/nimble/host/mesh/src/proxy.c | 0 .../src/nimble/nimble/host/mesh/src/proxy.h | 0 .../src/nimble/nimble/host/mesh/src/rpl.c | 0 .../src/nimble/nimble/host/mesh/src/rpl.h | 0 .../nimble/nimble/host/mesh/src/settings.c | 0 .../nimble/nimble/host/mesh/src/settings.h | 0 .../src/nimble/nimble/host/mesh/src/shell.c | 0 .../src/nimble/nimble/host/mesh/src/shell.h | 0 .../src/nimble/nimble/host/mesh/src/subnet.c | 0 .../src/nimble/nimble/host/mesh/src/subnet.h | 0 .../nimble/nimble/host/mesh/src/transport.c | 0 .../nimble/nimble/host/mesh/src/transport.h | 0 .../ans/include/services/ans/ble_svc_ans.h | 0 .../host/services/ans/src/ble_svc_ans.c | 0 .../bas/include/services/bas/ble_svc_bas.h | 0 .../host/services/bas/src/ble_svc_bas.c | 0 .../dis/include/services/dis/ble_svc_dis.h | 0 .../host/services/dis/src/ble_svc_dis.c | 0 .../gap/include/services/gap/ble_svc_gap.h | 0 .../host/services/gap/src/ble_svc_gap.c | 0 .../gatt/include/services/gatt/ble_svc_gatt.h | 0 .../host/services/gatt/src/ble_svc_gatt.c | 0 .../ias/include/services/ias/ble_svc_ias.h | 0 .../host/services/ias/src/ble_svc_ias.c | 0 .../ipss/include/services/ipss/ble_svc_ipss.h | 0 .../host/services/ipss/src/ble_svc_ipss.c | 0 .../lls/include/services/lls/ble_svc_lls.h | 0 .../host/services/lls/src/ble_svc_lls.c | 0 .../src/nimble/nimble/host/src/ble_att.c | 0 .../src/nimble/nimble/host/src/ble_att_clt.c | 0 .../src/nimble/nimble/host/src/ble_att_cmd.c | 0 .../nimble/nimble/host/src/ble_att_cmd_priv.h | 0 .../src/nimble/nimble/host/src/ble_att_priv.h | 0 .../src/nimble/nimble/host/src/ble_att_svr.c | 0 .../nimble/nimble/host/src/ble_eddystone.c | 0 .../src/nimble/nimble/host/src/ble_gap.c | 0 .../src/nimble/nimble/host/src/ble_gap_priv.h | 0 .../nimble/nimble/host/src/ble_gatt_priv.h | 0 .../src/nimble/nimble/host/src/ble_gattc.c | 0 .../src/nimble/nimble/host/src/ble_gatts.c | 0 .../nimble/nimble/host/src/ble_gatts_lcl.c | 0 .../src/nimble/nimble/host/src/ble_hs.c | 0 .../src/nimble/nimble/host/src/ble_hs_adv.c | 0 .../nimble/nimble/host/src/ble_hs_adv_priv.h | 0 .../nimble/nimble/host/src/ble_hs_atomic.c | 0 .../nimble/host/src/ble_hs_atomic_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_cfg.c | 0 .../src/nimble/nimble/host/src/ble_hs_conn.c | 0 .../nimble/nimble/host/src/ble_hs_conn_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_flow.c | 0 .../nimble/nimble/host/src/ble_hs_flow_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_hci.c | 0 .../nimble/nimble/host/src/ble_hs_hci_cmd.c | 0 .../nimble/nimble/host/src/ble_hs_hci_evt.c | 0 .../nimble/nimble/host/src/ble_hs_hci_priv.h | 0 .../nimble/nimble/host/src/ble_hs_hci_util.c | 0 .../src/nimble/nimble/host/src/ble_hs_id.c | 0 .../nimble/nimble/host/src/ble_hs_id_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_log.c | 0 .../src/nimble/nimble/host/src/ble_hs_mbuf.c | 0 .../nimble/nimble/host/src/ble_hs_mbuf_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_misc.c | 0 .../nimble/nimble/host/src/ble_hs_mqueue.c | 0 .../nimble/host/src/ble_hs_periodic_sync.c | 0 .../host/src/ble_hs_periodic_sync_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_pvcy.c | 0 .../nimble/nimble/host/src/ble_hs_pvcy_priv.h | 0 .../nimble/nimble/host/src/ble_hs_resolv.c | 0 .../nimble/host/src/ble_hs_resolv_priv.h | 0 .../nimble/nimble/host/src/ble_hs_shutdown.c | 0 .../nimble/nimble/host/src/ble_hs_startup.c | 0 .../nimble/host/src/ble_hs_startup_priv.h | 0 .../src/nimble/nimble/host/src/ble_hs_stop.c | 0 .../src/nimble/nimble/host/src/ble_ibeacon.c | 0 .../src/nimble/nimble/host/src/ble_l2cap.c | 0 .../nimble/nimble/host/src/ble_l2cap_coc.c | 0 .../nimble/host/src/ble_l2cap_coc_priv.h | 0 .../nimble/nimble/host/src/ble_l2cap_priv.h | 0 .../nimble/nimble/host/src/ble_l2cap_sig.c | 0 .../nimble/host/src/ble_l2cap_sig_cmd.c | 0 .../nimble/host/src/ble_l2cap_sig_priv.h | 0 .../src/nimble/nimble/host/src/ble_monitor.c | 0 .../nimble/nimble/host/src/ble_monitor_priv.h | 0 .../src/nimble/nimble/host/src/ble_sm.c | 0 .../src/nimble/nimble/host/src/ble_sm_alg.c | 0 .../src/nimble/nimble/host/src/ble_sm_cmd.c | 0 .../src/nimble/nimble/host/src/ble_sm_lgcy.c | 0 .../src/nimble/nimble/host/src/ble_sm_priv.h | 0 .../src/nimble/nimble/host/src/ble_sm_sc.c | 0 .../src/nimble/nimble/host/src/ble_store.c | 0 .../nimble/nimble/host/src/ble_store_util.c | 0 .../src/nimble/nimble/host/src/ble_uuid.c | 0 .../nimble/nimble/host/src/ble_uuid_priv.h | 0 .../include/store/config/ble_store_config.h | 0 .../host/store/config/src/ble_store_config.c | 0 .../store/config/src/ble_store_config_conf.c | 0 .../store/config/src/ble_store_config_priv.h | 0 .../host/store/config/src/ble_store_nvs.c | 0 .../nimble/host/util/include/host/util/util.h | 0 .../src/nimble/nimble/host/util/src/addr.c | 0 .../src/nimble/nimble/include/nimble/ble.h | 0 .../nimble/include/nimble/ble_hci_trans.h | 0 .../nimble/nimble/include/nimble/hci_common.h | 0 .../nimble/nimble/include/nimble/nimble_npl.h | 0 .../nimble/nimble/include/nimble/nimble_opt.h | 0 .../nimble/include/nimble/nimble_opt_auto.h | 0 .../ram/include/transport/ram/ble_hci_ram.h | 0 .../nimble/transport/ram/src/ble_hci_ram.c | 0 .../porting/nimble/include/hal/hal_timer.h | 0 .../nimble/porting/nimble/include/log/log.h | 0 .../nimble/include/log_common/ignore.h | 0 .../nimble/include/log_common/log_common.h | 0 .../porting/nimble/include/logcfg/logcfg.h | 0 .../nimble/porting/nimble/include/mem/mem.h | 0 .../porting/nimble/include/modlog/modlog.h | 0 .../nimble/include/nimble/nimble_port.h | 0 .../nimble/porting/nimble/include/os/endian.h | 0 .../src/nimble/porting/nimble/include/os/os.h | 0 .../porting/nimble/include/os/os_cputime.h | 0 .../porting/nimble/include/os/os_error.h | 0 .../porting/nimble/include/os/os_mbuf.h | 0 .../porting/nimble/include/os/os_mempool.h | 0 .../porting/nimble/include/os/os_trace_api.h | 0 .../nimble/porting/nimble/include/os/queue.h | 0 .../nimble/porting/nimble/include/os/util.h | 0 .../porting/nimble/include/stats/stats.h | 0 .../porting/nimble/include/syscfg/syscfg.h | 0 .../nimble/include/sysflash/sysflash.h | 0 .../porting/nimble/include/sysinit/sysinit.h | 0 .../src/nimble/porting/nimble/src/endian.c | 0 .../src/nimble/porting/nimble/src/hal_timer.c | 0 .../src/nimble/porting/nimble/src/hal_uart.c | 0 .../src/nimble/porting/nimble/src/mem.c | 0 .../nimble/porting/nimble/src/nimble_port.c | 0 .../nimble/porting/nimble/src/os_cputime.c | 0 .../porting/nimble/src/os_cputime_pwr2.c | 0 .../src/nimble/porting/nimble/src/os_mbuf.c | 0 .../nimble/porting/nimble/src/os_mempool.c | 0 .../nimble/porting/nimble/src/os_msys_init.c | 0 .../freertos/include/nimble/nimble_npl_os.h | 0 .../include/nimble/nimble_port_freertos.h | 0 .../freertos/include/nimble/npl_freertos.h | 0 .../npl/freertos/src/nimble_port_freertos.c | 0 .../npl/freertos/src/npl_os_freertos.c | 0 .../NimBLE-Arduino/src/nimconfig.h | 0 .../NimBLE-Arduino/src/nimconfig_rename.h | 61 + 1217 files changed, 118233 insertions(+), 140 deletions(-) create mode 100644 components/espressif__libsodium/.component_hash create mode 100644 components/espressif__libsodium/CMakeLists.txt create mode 100644 components/espressif__libsodium/Kconfig create mode 100644 components/espressif__libsodium/LICENSE create mode 100644 components/espressif__libsodium/README.md create mode 100644 components/espressif__libsodium/idf_component.yml create mode 100644 components/espressif__libsodium/libsodium/.gitignore create mode 100644 components/espressif__libsodium/libsodium/AUTHORS create mode 100644 components/espressif__libsodium/libsodium/CITATION.cff create mode 100644 components/espressif__libsodium/libsodium/ChangeLog create mode 100644 components/espressif__libsodium/libsodium/LICENSE create mode 100644 components/espressif__libsodium/libsodium/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/README.markdown create mode 100644 components/espressif__libsodium/libsodium/THANKS create mode 100644 components/espressif__libsodium/libsodium/appveyor.yml create mode 100644 components/espressif__libsodium/libsodium/autogen.sh create mode 100644 components/espressif__libsodium/libsodium/azure-pipelines.yml create mode 100644 components/espressif__libsodium/libsodium/build.zig create mode 100644 components/espressif__libsodium/libsodium/builds/.gitignore create mode 100644 components/espressif__libsodium/libsodium/builds/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ARM64.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Common.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DLL.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Debug.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDEXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDLL.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLEXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLIB.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLTCG.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/DebugSEXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/EXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/LIB.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/LTCG.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Link.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Messages.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Output.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Release.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDEXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDLL.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLEXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLIB.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLTCG.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseSEXE.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/Win32.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/properties/x64.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/resource.h create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/resource.rc create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/version.h create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.xml create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.props create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.xml create mode 100644 components/espressif__libsodium/libsodium/ci/appveyor/libsodium.sln create mode 100644 components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/process.bat create mode 100644 components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/rep.vbs create mode 100644 components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/sodium.props create mode 100644 components/espressif__libsodium/libsodium/configure.ac create mode 100644 components/espressif__libsodium/libsodium/contrib/Findsodium.cmake create mode 100644 components/espressif__libsodium/libsodium/contrib/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/dist-build/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/dist-build/android-aar.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/android-armv7-a.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/android-armv8-a.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/android-build.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/android-x86.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/android-x86_64.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/apple-xcframework.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/emscripten-symbols.def create mode 100644 components/espressif__libsodium/libsodium/dist-build/emscripten.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/generate-emscripten-symbols.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/macos.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/msys2-win32.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/msys2-win64.sh create mode 100644 components/espressif__libsodium/libsodium/dist-build/wasm32-wasi.sh create mode 100644 components/espressif__libsodium/libsodium/lgtm.yml create mode 100644 components/espressif__libsodium/libsodium/libsodium-uninstalled.pc.in create mode 100644 components/espressif__libsodium/libsodium/libsodium.pc.in create mode 100644 components/espressif__libsodium/libsodium/logo.png create mode 100644 components/espressif__libsodium/libsodium/m4/ax_add_fortify_source.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_check_catchable_abrt.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_check_catchable_segv.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_check_compile_flag.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_check_define.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_check_gnu_make.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_check_link_flag.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_pthread.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_tls.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ax_valgrind_check.m4 create mode 100644 components/espressif__libsodium/libsodium/m4/ld-output-def.m4 create mode 100644 components/espressif__libsodium/libsodium/packaging/dotnet-core/libsodium.pkgproj create mode 100644 components/espressif__libsodium/libsodium/packaging/dotnet-core/test.cs create mode 100644 components/espressif__libsodium/libsodium/packaging/nuget/.gitignore create mode 100644 components/espressif__libsodium/libsodium/packaging/nuget/package.bat create mode 100644 components/espressif__libsodium/libsodium/packaging/nuget/package.config create mode 100644 components/espressif__libsodium/libsodium/packaging/nuget/package.gsl create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.filters.tpl create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/libsodium.vcxproj.tpl create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/regen-msvc.py create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.filters.tpl create mode 100644 components/espressif__libsodium/libsodium/regen-msvc/tl_libsodium.vcxproj.tpl create mode 100644 components/espressif__libsodium/libsodium/src/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aead_aegis128l.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_common.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/aegis128l_soft.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis128l/implementations.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aead_aegis256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_aesni.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_common.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/aegis256_soft.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aegis256/implementations.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aead_aes256gcm.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/crypto_auth.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_easy.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_box/crypto_box_seal.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ed25519.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/core_ristretto255.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/constants.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/fe.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/base2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/constants.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/ed25519/ref10/fe_51/fe.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hchacha20/core_hchacha20.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_core/softaes/softaes.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/generichash_blake2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-avx2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse41.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/crypto_hash.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/crypto_kdf.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha512.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_kx/crypto_kx.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-core.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-encoding.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/argon2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blake2b-long.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-avx512f.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ref.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/blamka-round-ssse3.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/crypto_pwhash.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/crypto_sign.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign_ed25519_ref10.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u0.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u1.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u4.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/dolbeau/u8.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/crypto_stream.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u0.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u1.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u4.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa20/xmm6int/u8.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/crypto_verify/verify.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/core.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis128l.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aegis256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_aes256gcm.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ed25519.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hchacha20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_ristretto255.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_blake2b.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kdf_hkdf_sha512.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_kx.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2i.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_argon2id.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xchacha20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_16.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_32.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/crypto_verify_64.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/export.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/asm_cet.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/chacha20_ietf_ext.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/common.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_25_5.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/implementations.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/mutex.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/softaes.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/private/sse2_64_32.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_internal_random.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/runtime.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/utils.h create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/include/sodium/version.h.in create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/randombytes/internal/randombytes_internal_random.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/randombytes/randombytes.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/sodium/codecs.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/sodium/core.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/sodium/runtime.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/sodium/utils.c create mode 100644 components/espressif__libsodium/libsodium/src/libsodium/sodium/version.c create mode 100644 components/espressif__libsodium/libsodium/test/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/test/constcheck.sh create mode 100644 components/espressif__libsodium/libsodium/test/default/Makefile.am create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aegis128l.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aegis128l.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aegis256.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aegis256.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aes256gcm.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_aes256gcm2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_chacha20poly1305.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_chacha20poly13052.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/test/default/aead_xchacha20poly1305.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/auth.c create mode 100644 components/espressif__libsodium/libsodium/test/default/auth.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/auth2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/auth2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/auth3.c create mode 100644 components/espressif__libsodium/libsodium/test/default/auth3.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/auth5.c create mode 100644 components/espressif__libsodium/libsodium/test/default/auth5.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/auth6.c create mode 100644 components/espressif__libsodium/libsodium/test/default/auth6.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/auth7.c create mode 100644 components/espressif__libsodium/libsodium/test/default/auth7.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box7.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box7.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box8.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box8.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box_easy.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box_easy.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box_easy2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box_easy2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box_seal.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box_seal.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/box_seed.c create mode 100644 components/espressif__libsodium/libsodium/test/default/box_seed.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/chacha20.c create mode 100644 components/espressif__libsodium/libsodium/test/default/chacha20.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/cmptest.h create mode 100644 components/espressif__libsodium/libsodium/test/default/codecs.c create mode 100644 components/espressif__libsodium/libsodium/test/default/codecs.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core1.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core1.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core3.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core3.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core4.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core4.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core5.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core5.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core6.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core6.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core_ed25519.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core_ed25519.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/core_ristretto255.c create mode 100644 components/espressif__libsodium/libsodium/test/default/core_ristretto255.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/ed25519_convert.c create mode 100644 components/espressif__libsodium/libsodium/test/default/ed25519_convert.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/generichash.c create mode 100644 components/espressif__libsodium/libsodium/test/default/generichash.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/generichash2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/generichash2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/generichash3.c create mode 100644 components/espressif__libsodium/libsodium/test/default/generichash3.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/hash.c create mode 100644 components/espressif__libsodium/libsodium/test/default/hash.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/hash3.c create mode 100644 components/espressif__libsodium/libsodium/test/default/hash3.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/index.html.tpl create mode 100644 components/espressif__libsodium/libsodium/test/default/kdf.c create mode 100644 components/espressif__libsodium/libsodium/test/default/kdf.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/kdf_hkdf.c create mode 100644 components/espressif__libsodium/libsodium/test/default/kdf_hkdf.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/keygen.c create mode 100644 components/espressif__libsodium/libsodium/test/default/keygen.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/kx.c create mode 100644 components/espressif__libsodium/libsodium/test/default/kx.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/metamorphic.c create mode 100644 components/espressif__libsodium/libsodium/test/default/metamorphic.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/misuse.c create mode 100644 components/espressif__libsodium/libsodium/test/default/misuse.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/onetimeauth.c create mode 100644 components/espressif__libsodium/libsodium/test/default/onetimeauth.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/onetimeauth2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/onetimeauth2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/onetimeauth7.c create mode 100644 components/espressif__libsodium/libsodium/test/default/onetimeauth7.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/pre.js.inc create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.c create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_argon2i.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.c create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_argon2id.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.c create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_scrypt.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.c create mode 100644 components/espressif__libsodium/libsodium/test/default/pwhash_scrypt_ll.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/randombytes.c create mode 100644 components/espressif__libsodium/libsodium/test/default/randombytes.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/run.sh create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult5.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult5.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult6.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult6.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult7.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult7.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult8.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult8.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult_ed25519.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.c create mode 100644 components/espressif__libsodium/libsodium/test/default/scalarmult_ristretto255.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox7.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox7.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox8.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox8.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox_easy.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox_easy.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox_easy2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretbox_easy2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.c create mode 100644 components/espressif__libsodium/libsodium/test/default/secretstream_xchacha20poly1305.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/shorthash.c create mode 100644 components/espressif__libsodium/libsodium/test/default/shorthash.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/sign.c create mode 100644 components/espressif__libsodium/libsodium/test/default/sign.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/siphashx24.c create mode 100644 components/espressif__libsodium/libsodium/test/default/siphashx24.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_core.c create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_core.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_utils.c create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_utils.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_utils2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_utils2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_utils3.c create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_utils3.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_version.c create mode 100644 components/espressif__libsodium/libsodium/test/default/sodium_version.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/stream.c create mode 100644 components/espressif__libsodium/libsodium/test/default/stream.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/stream2.c create mode 100644 components/espressif__libsodium/libsodium/test/default/stream2.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/stream3.c create mode 100644 components/espressif__libsodium/libsodium/test/default/stream3.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/stream4.c create mode 100644 components/espressif__libsodium/libsodium/test/default/stream4.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/verify1.c create mode 100644 components/espressif__libsodium/libsodium/test/default/verify1.exp create mode 100644 components/espressif__libsodium/libsodium/test/default/wasi-test-wrapper.sh create mode 100644 components/espressif__libsodium/libsodium/test/default/wintest.bat create mode 100644 components/espressif__libsodium/libsodium/test/default/xchacha20.c create mode 100644 components/espressif__libsodium/libsodium/test/default/xchacha20.exp create mode 100644 components/espressif__libsodium/libsodium/test/quirks/quirks.h create mode 100644 components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.c create mode 100644 components/espressif__libsodium/port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.c create mode 100644 components/espressif__libsodium/port/randombytes_esp32.c create mode 100644 components/espressif__libsodium/port/randombytes_internal.h create mode 100644 components/espressif__libsodium/port_include/sodium/version.h create mode 100644 components/espressif__libsodium/test/CMakeLists.txt create mode 100644 components/espressif__libsodium/test/test_sodium.c create mode 100644 lib/AsyncTCP-esphome/.github/dependabot.yml create mode 100644 lib/AsyncTCP-esphome/.github/stale.yml create mode 100644 lib/AsyncTCP-esphome/.github/workflows/push.yml create mode 100644 lib/AsyncTCP-esphome/.gitignore create mode 100644 lib/AsyncTCP-esphome/.piopm create mode 100644 lib/AsyncTCP-esphome/.travis.yml create mode 100644 lib/AsyncTCP-esphome/CMakeLists.txt create mode 100644 lib/AsyncTCP-esphome/Kconfig.projbuild create mode 100644 lib/AsyncTCP-esphome/LICENSE create mode 100644 lib/AsyncTCP-esphome/README.md create mode 100644 lib/AsyncTCP-esphome/arduino-cli.yaml create mode 100644 lib/AsyncTCP-esphome/component.mk create mode 100644 lib/AsyncTCP-esphome/examples/ClientServer/Client/Client.ino create mode 100644 lib/AsyncTCP-esphome/examples/ClientServer/Client/config.h create mode 100644 lib/AsyncTCP-esphome/library.json create mode 100644 lib/AsyncTCP-esphome/src/AsyncTCP.cpp create mode 100644 lib/AsyncTCP-esphome/src/AsyncTCP.h create mode 100644 lib/AsyncTCP/src/IPv6Address.cpp create mode 100644 lib/AsyncTCP/src/IPv6Address.h create mode 100644 lib/CRC16/.github/workflows/main.yml create mode 100644 lib/CRC16/library.json create mode 100644 lib/CRC16/library.properties create mode 100644 lib/CRC16/src/Crc16.cpp create mode 100644 lib/CRC16/src/Crc16.h create mode 100644 lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-core-esp8266.sh create mode 100644 lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-ide.sh create mode 100644 lib/ESPAsyncTCP-esphome/.github/scripts/install-platformio.sh create mode 100644 lib/ESPAsyncTCP-esphome/.github/scripts/on-push.sh create mode 100644 lib/ESPAsyncTCP-esphome/.github/stale.yml create mode 100644 lib/ESPAsyncTCP-esphome/.github/workflows/push.yml create mode 100644 lib/ESPAsyncTCP-esphome/.gitignore create mode 100644 lib/ESPAsyncTCP-esphome/.piopm create mode 100644 lib/ESPAsyncTCP-esphome/LICENSE.txt create mode 100644 lib/ESPAsyncTCP-esphome/README.md create mode 100644 lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/Client.ino create mode 100644 lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/config.h create mode 100644 lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/Server.ino create mode 100644 lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/config.h create mode 100644 lib/ESPAsyncTCP-esphome/examples/SyncClient/.esp31b.skip create mode 100644 lib/ESPAsyncTCP-esphome/examples/SyncClient/SyncClient.ino create mode 100644 lib/ESPAsyncTCP-esphome/library.json create mode 100644 lib/ESPAsyncTCP-esphome/src/AsyncPrinter.cpp create mode 100644 lib/ESPAsyncTCP-esphome/src/AsyncPrinter.h create mode 100644 lib/ESPAsyncTCP-esphome/src/DebugPrintMacros.h create mode 100644 lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp create mode 100644 lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h create mode 100644 lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.cpp create mode 100644 lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.h create mode 100644 lib/ESPAsyncTCP-esphome/src/SyncClient.cpp create mode 100644 lib/ESPAsyncTCP-esphome/src/SyncClient.h create mode 100644 lib/ESPAsyncTCP-esphome/src/async_config.h create mode 100644 lib/ESPAsyncTCP-esphome/src/tcp_axtls.c create mode 100644 lib/ESPAsyncTCP-esphome/src/tcp_axtls.h create mode 100644 lib/ESPAsyncTCP-esphome/ssl/gen_server_cert.sh create mode 100644 lib/ESPAsyncTCP-esphome/ssl/server.cer create mode 100644 lib/ESPAsyncTCP-esphome/ssl/server.key create mode 100644 lib/NetworkClientSecure/README.md create mode 100644 lib/NetworkClientSecure/examples/WiFiClientInsecure/WiFiClientInsecure.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientInsecure/ci.json create mode 100644 lib/NetworkClientSecure/examples/WiFiClientPSK/WiFiClientPSK.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientPSK/ci.json create mode 100644 lib/NetworkClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientSecure/ci.json create mode 100644 lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/WiFiClientSecureEnterprise.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json create mode 100644 lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/WiFiClientSecureProtocolUpgrade.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json create mode 100644 lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/WiFiClientShowPeerCredentials.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json create mode 100644 lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/WiFiClientTrustOnFirstUse.ino create mode 100644 lib/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json create mode 100644 lib/NetworkClientSecure/keywords.txt create mode 100644 lib/NetworkClientSecure/library.properties create mode 100644 lib/NetworkClientSecure/src/NetworkClientSecure.cpp create mode 100644 lib/NetworkClientSecure/src/NetworkClientSecure.h create mode 100644 lib/NetworkClientSecure/src/WiFiClientSecure.h create mode 100644 lib/NetworkClientSecure/src/ssl_client.cpp create mode 100644 lib/NetworkClientSecure/src/ssl_client.h create mode 100644 lib/esp-nimble-cpp/.github/workflows/build.yml create mode 100644 lib/esp-nimble-cpp/.gitignore create mode 100644 lib/esp-nimble-cpp/CHANGELOG.md create mode 100644 lib/esp-nimble-cpp/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/CMakeLists.txt_idf3 create mode 100644 lib/esp-nimble-cpp/Kconfig create mode 100644 lib/esp-nimble-cpp/LICENSE create mode 100644 lib/esp-nimble-cpp/README.md create mode 100644 lib/esp-nimble-cpp/component.mk rename lib/{NimBLE-Arduino => esp-nimble-cpp}/docs/Bluetooth 5 features.md (100%) create mode 100644 lib/esp-nimble-cpp/docs/Doxyfile create mode 100644 lib/esp-nimble-cpp/docs/Improvements_and_updates.md create mode 100644 lib/esp-nimble-cpp/docs/Migration_guide.md create mode 100644 lib/esp-nimble-cpp/docs/New_user_guide.md rename lib/{NimBLE-Arduino => esp-nimble-cpp}/docs/Usage_tips.md (100%) create mode 100644 lib/esp-nimble-cpp/docs/index.md create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/Makefile create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Client/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/Makefile create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/Advanced/NimBLE_Server/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/Makefile create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_client/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/Makefile create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_extended_server/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/Makefile create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/Bluetooth_5/NimBLE_multi_advertiser/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/NimBLE_active_passive_scan/NimBLE_active_passive_scan.ino create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_client/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_client/Makefile create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_client/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_client/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_client/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_client/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_notify/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_notify/Makefile create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_notify/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_notify/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_notify/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_notify/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_scan/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_scan/Makefile create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_scan/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_scan/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_scan/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_scan/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_server/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_server/Makefile create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_server/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_server/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_server/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_server/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_uart/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_uart/Makefile create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_uart/main/CMakeLists.txt create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_uart/main/component.mk create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_uart/main/main.cpp create mode 100644 lib/esp-nimble-cpp/examples/basic/BLE_uart/sdkconfig.defaults create mode 100644 lib/esp-nimble-cpp/library.json create mode 100644 lib/esp-nimble-cpp/library.properties create mode 100644 lib/esp-nimble-cpp/package.json rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/HIDKeyboardTypes.h (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/HIDTypes.h (100%) create mode 100644 lib/esp-nimble-cpp/src/NimBLE2904.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLE2904.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEAddress.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEAddress.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEAdvertisedDevice.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEAdvertising.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEAdvertising.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEAttValue.h rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEBeacon.cpp (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEBeacon.h (100%) create mode 100644 lib/esp-nimble-cpp/src/NimBLECharacteristic.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLECharacteristic.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEClient.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEClient.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEConnInfo.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEDescriptor.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEDescriptor.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEDevice.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEDevice.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEEddystoneTLM.cpp rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEEddystoneTLM.h (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEEddystoneURL.cpp (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEEddystoneURL.h (100%) create mode 100644 lib/esp-nimble-cpp/src/NimBLEExtAdvertising.cpp rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEExtAdvertising.h (100%) create mode 100644 lib/esp-nimble-cpp/src/NimBLEHIDDevice.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEHIDDevice.h rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLELog.h (100%) create mode 100644 lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLERemoteCharacteristic.h create mode 100644 lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLERemoteDescriptor.h rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLERemoteService.cpp (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLERemoteService.h (100%) create mode 100644 lib/esp-nimble-cpp/src/NimBLEScan.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEScan.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEServer.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEServer.h create mode 100644 lib/esp-nimble-cpp/src/NimBLEService.cpp create mode 100644 lib/esp-nimble-cpp/src/NimBLEService.h rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEUUID.cpp (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEUUID.h (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEUtils.cpp (100%) rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/NimBLEUtils.h (100%) create mode 100644 lib/esp-nimble-cpp/src/nimconfig.h rename lib/{NimBLE-Arduino => esp-nimble-cpp}/src/nimconfig_rename.h (100%) rename {lib => resources}/NimBLE-Arduino/CHANGELOG.md (100%) rename {lib => resources}/NimBLE-Arduino/LICENSE (100%) rename {lib => resources}/NimBLE-Arduino/README.md (100%) create mode 100644 resources/NimBLE-Arduino/docs/Bluetooth 5 features.md rename {lib => resources}/NimBLE-Arduino/docs/Command_line_config.md (100%) rename {lib => resources}/NimBLE-Arduino/docs/Doxyfile (100%) rename {lib => resources}/NimBLE-Arduino/docs/Improvements_and_updates.md (100%) rename {lib => resources}/NimBLE-Arduino/docs/Migration_guide.md (100%) rename {lib => resources}/NimBLE-Arduino/docs/New_user_guide.md (100%) create mode 100644 resources/NimBLE-Arduino/docs/Usage_tips.md rename {lib => resources}/NimBLE-Arduino/docs/index.md (100%) rename {lib => resources}/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.md (100%) rename {lib => resources}/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.md (100%) rename {lib => resources}/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/BLE_EddystoneURL_Beacon/BLE_EddystoneURL_Beacon.md (100%) rename {lib => resources}/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Bluetooth_5/NimBLE_multi_advertiser/NimBLE_multi_advertiser.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Client/NimBLE_Client.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Scan_Continuous/NimBLE_Scan_Continuous.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Secure_Client/NimBLE_Secure_Client.ino (97%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Secure_Server/NimBLE_Secure_Server.ino (97%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/NimBLE_Service_Data_Advertiser/NimBLE_Service_Data_Advertiser.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_client/BLE_client.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_iBeacon/BLE_iBeacon.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_notify/BLE_notify.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_scan/BLE_scan.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server/BLE_server.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_server_multiconnect/BLE_server_multiconnect.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_uart/BLE_uart.ino (100%) rename {lib => resources}/NimBLE-Arduino/examples/Refactored_original_examples/BLE_write/BLE_write.ino (100%) rename {lib => resources}/NimBLE-Arduino/library.properties (100%) create mode 100644 resources/NimBLE-Arduino/src/HIDKeyboardTypes.h create mode 100644 resources/NimBLE-Arduino/src/HIDTypes.h rename {lib => resources}/NimBLE-Arduino/src/NimBLE2904.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLE2904.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAddress.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAddress.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAdvertising.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAdvertising.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEAttValue.h (100%) create mode 100644 resources/NimBLE-Arduino/src/NimBLEBeacon.cpp create mode 100644 resources/NimBLE-Arduino/src/NimBLEBeacon.h rename {lib => resources}/NimBLE-Arduino/src/NimBLECharacteristic.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLECharacteristic.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEClient.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEClient.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEConnInfo.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEDescriptor.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEDescriptor.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEDevice.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEDevice.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEEddystoneTLM.cpp (100%) create mode 100644 resources/NimBLE-Arduino/src/NimBLEEddystoneTLM.h create mode 100644 resources/NimBLE-Arduino/src/NimBLEEddystoneURL.cpp create mode 100644 resources/NimBLE-Arduino/src/NimBLEEddystoneURL.h rename {lib => resources}/NimBLE-Arduino/src/NimBLEExtAdvertising.cpp (100%) create mode 100644 resources/NimBLE-Arduino/src/NimBLEExtAdvertising.h rename {lib => resources}/NimBLE-Arduino/src/NimBLEHIDDevice.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEHIDDevice.h (100%) create mode 100644 resources/NimBLE-Arduino/src/NimBLELog.h rename {lib => resources}/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLERemoteDescriptor.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLERemoteDescriptor.h (100%) create mode 100644 resources/NimBLE-Arduino/src/NimBLERemoteService.cpp create mode 100644 resources/NimBLE-Arduino/src/NimBLERemoteService.h rename {lib => resources}/NimBLE-Arduino/src/NimBLEScan.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEScan.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLESecurity.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLESecurity.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEServer.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEServer.h (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEService.cpp (100%) rename {lib => resources}/NimBLE-Arduino/src/NimBLEService.h (100%) create mode 100644 resources/NimBLE-Arduino/src/NimBLEUUID.cpp create mode 100644 resources/NimBLE-Arduino/src/NimBLEUUID.h create mode 100644 resources/NimBLE-Arduino/src/NimBLEUtils.cpp create mode 100644 resources/NimBLE-Arduino/src/NimBLEUtils.h rename {lib => resources}/NimBLE-Arduino/src/nimble/CODING_STANDARDS.md (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/LICENSE (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/NOTICE (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/README.md (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/RELEASE_NOTES.md (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/console/console.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/AUTHORS (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/LICENSE (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/README (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/VERSION (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/documentation/tinycrypt.rst (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/aes.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cbc_mode.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ccm_mode.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/cmac_mode.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/constants.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_mode.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ctr_prng.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dh.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_dsa.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/ecc_platform_specific.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/hmac_prng.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/sha256.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/include/tinycrypt/utils.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_decrypt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/aes_encrypt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cbc_mode.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ccm_mode.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/cmac_mode.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_mode.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ctr_prng.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dh.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_dsa.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/ecc_platform_specific.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/hmac_prng.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/sha256.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/ext/tinycrypt/src/utils.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_hw.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_adv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_conn.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_ctrl.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_hci.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_iso.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_resolv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_rfmgmt.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_scan.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sched.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_sync.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_test.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_trace.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_utils.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_ll_whitelist.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/include/controller/ble_phy_trace.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_adv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_hci.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_conn_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_ctrl.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_dtm_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_hci_ev.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_iso.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rand.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_resolv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_rfmgmt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_scan.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sched.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_supp_cmd.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_sync.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_trace.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_utils.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/controller/src/ble_ll_whitelist.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/include/ble/xcvr.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_hw.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/src/ble_phy.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/include/ble/xcvr.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_hw.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/src/ble_phy_trace.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_att.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_eddystone.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gap.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_gatt.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_adv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_hci.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_id.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_log.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_mbuf.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_pvcy.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_hs_stop.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_ibeacon.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_l2cap.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_monitor.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_sm.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_store.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/include/host/ble_uuid.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/access.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/atomic.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cdb.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_cli.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/cfg_srv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/glue.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_cli.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/health_srv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/heartbeat.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/main.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/mesh.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_cli.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/model_srv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/porting.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/proxy.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/slist.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/include/mesh/testing.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/access.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/adv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/aes-ccm.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/app_keys.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/atomic.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/beacon.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cdb.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_cli.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/cfg_srv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/crypto.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/foundation.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/friend.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/glue.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_cli.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/health_srv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/heartbeat.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/light_model.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/lpn.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/mesh_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_cli.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/model_srv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/net.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/nodes.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_adv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/pb_gatt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_bearer.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/prov_device.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/provisioner.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/proxy.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/rpl.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/settings.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/shell.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/subnet.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/mesh/src/transport.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/ans/include/services/ans/ble_svc_ans.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/ans/src/ble_svc_ans.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/bas/include/services/bas/ble_svc_bas.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/bas/src/ble_svc_bas.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/dis/include/services/dis/ble_svc_dis.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/dis/src/ble_svc_dis.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/gap/include/services/gap/ble_svc_gap.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/gap/src/ble_svc_gap.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/include/services/gatt/ble_svc_gatt.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/ias/include/services/ias/ble_svc_ias.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/ias/src/ble_svc_ias.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/include/services/ipss/ble_svc_ipss.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/lls/include/services/lls/ble_svc_lls.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/services/lls/src/ble_svc_lls.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_clt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_cmd_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_att_svr.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_eddystone.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatt_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gattc.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gatts_lcl.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_adv_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_atomic_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_cfg.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_conn_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_cmd.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_evt.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_hci_util.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_id_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_log.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mbuf_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_misc.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_mqueue.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_periodic_sync_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_pvcy_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_resolv_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_shutdown.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_startup_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_ibeacon.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_coc_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_cmd.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_l2cap_sig_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_monitor_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_alg.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_cmd.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_lgcy.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_store_util.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/src/ble_uuid_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/store/config/include/store/config/ble_store_config.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_conf.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_config_priv.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/store/config/src/ble_store_nvs.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/util/include/host/util/util.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/host/util/src/addr.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/include/nimble/ble_hci_trans.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/include/nimble/hci_common.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_npl.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/include/nimble/nimble_opt_auto.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/transport/ram/include/transport/ram/ble_hci_ram.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/nimble/transport/ram/src/ble_hci_ram.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/hal/hal_timer.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/log/log.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/ignore.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/log_common/log_common.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/logcfg/logcfg.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/mem/mem.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/modlog/modlog.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/nimble/nimble_port.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/endian.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_cputime.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_error.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mbuf.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_mempool.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/os_trace_api.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/queue.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/os/util.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/stats/stats.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/syscfg/syscfg.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/sysflash/sysflash.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/include/sysinit/sysinit.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/endian.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_timer.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/hal_uart.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/mem.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/nimble_port.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/os_cputime_pwr2.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mbuf.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/os_mempool.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/nimble/src/os_msys_init.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/nimble_port_freertos.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/npl/freertos/include/nimble/npl_freertos.h (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/nimble_port_freertos.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c (100%) rename {lib => resources}/NimBLE-Arduino/src/nimconfig.h (100%) create mode 100644 resources/NimBLE-Arduino/src/nimconfig_rename.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b1e1eb..e33d3ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ add_compile_definitions(ARDUINO_ARCH_ESP32) include_directories(${PROJECT_NAME} PRIVATE lib/Crc16 - lib/NimBLE-Arduino/src + resources/NimBLE-Arduino/src lib/BleScanner/src lib/nuki_ble/src lib/WiFiManager @@ -97,9 +97,9 @@ set(SRCFILES ) file(GLOB_RECURSE SRCFILESREC - lib/NimBLE-Arduino/src/*.c - lib/NimBLE-Arduino/src/*.cpp - lib/NimBLE-Arduino/src/*.h + resources/NimBLE-Arduino/src/*.c + resources/NimBLE-Arduino/src/*.cpp + resources/NimBLE-Arduino/src/*.h lib/WebServer/src/*.cpp lib/WebServer/src/*.h lib/Ethernet/src/*.cpp diff --git a/components/espressif__libsodium/.component_hash b/components/espressif__libsodium/.component_hash new file mode 100644 index 0000000..66bd209 --- /dev/null +++ b/components/espressif__libsodium/.component_hash @@ -0,0 +1 @@ +f6e982479a2389cb6868e8fb761cf23aba6c355a8090b3e906299807775f58a3 \ No newline at end of file diff --git a/components/espressif__libsodium/CMakeLists.txt b/components/espressif__libsodium/CMakeLists.txt new file mode 100644 index 0000000..28358d9 --- /dev/null +++ b/components/espressif__libsodium/CMakeLists.txt @@ -0,0 +1,178 @@ +set(SRC libsodium/src/libsodium) +# Derived from libsodium/src/libsodium/Makefile.am +# (ignoring the !MINIMAL set) +set(srcs + "${SRC}/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c" + "${SRC}/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c" + "${SRC}/crypto_auth/crypto_auth.c" + "${SRC}/crypto_auth/hmacsha256/auth_hmacsha256.c" + "${SRC}/crypto_auth/hmacsha512/auth_hmacsha512.c" + "${SRC}/crypto_auth/hmacsha512256/auth_hmacsha512256.c" + "${SRC}/crypto_box/crypto_box.c" + "${SRC}/crypto_box/crypto_box_easy.c" + "${SRC}/crypto_box/crypto_box_seal.c" + "${SRC}/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c" + "${SRC}/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c" + "${SRC}/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c" + "${SRC}/crypto_core/ed25519/core_ed25519.c" + "${SRC}/crypto_core/ed25519/core_ristretto255.c" + "${SRC}/crypto_core/ed25519/ref10/ed25519_ref10.c" + "${SRC}/crypto_core/hchacha20/core_hchacha20.c" + "${SRC}/crypto_core/hsalsa20/core_hsalsa20.c" + "${SRC}/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c" + "${SRC}/crypto_core/salsa/ref/core_salsa_ref.c" + "${SRC}/crypto_generichash/blake2b/generichash_blake2.c" + "${SRC}/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c" + "${SRC}/crypto_generichash/blake2b/ref/blake2b-compress-ref.c" + "${SRC}/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c" + "${SRC}/crypto_generichash/blake2b/ref/blake2b-ref.c" + "${SRC}/crypto_generichash/blake2b/ref/generichash_blake2b.c" + "${SRC}/crypto_generichash/crypto_generichash.c" + "${SRC}/crypto_hash/crypto_hash.c" + "${SRC}/crypto_hash/sha256/cp/hash_sha256_cp.c" + "${SRC}/crypto_hash/sha256/hash_sha256.c" + "${SRC}/crypto_hash/sha512/cp/hash_sha512_cp.c" + "${SRC}/crypto_hash/sha512/hash_sha512.c" + "${SRC}/crypto_kdf/blake2b/kdf_blake2b.c" + "${SRC}/crypto_kdf/crypto_kdf.c" + "${SRC}/crypto_kx/crypto_kx.c" + "${SRC}/crypto_onetimeauth/crypto_onetimeauth.c" + "${SRC}/crypto_onetimeauth/poly1305/donna/poly1305_donna.c" + "${SRC}/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c" + "${SRC}/crypto_pwhash/argon2/argon2-core.c" + "${SRC}/crypto_pwhash/argon2/argon2-encoding.c" + "${SRC}/crypto_pwhash/argon2/argon2-fill-block-avx2.c" + "${SRC}/crypto_pwhash/argon2/argon2-fill-block-avx512f.c" + "${SRC}/crypto_pwhash/argon2/argon2-fill-block-ref.c" + "${SRC}/crypto_pwhash/argon2/argon2-fill-block-ssse3.c" + "${SRC}/crypto_pwhash/argon2/argon2.c" + "${SRC}/crypto_pwhash/argon2/blake2b-long.c" + "${SRC}/crypto_pwhash/argon2/pwhash_argon2i.c" + "${SRC}/crypto_pwhash/argon2/pwhash_argon2id.c" + "${SRC}/crypto_pwhash/crypto_pwhash.c" + "${SRC}/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c" + "${SRC}/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c" + "${SRC}/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c" + "${SRC}/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c" + "${SRC}/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c" + "${SRC}/crypto_scalarmult/crypto_scalarmult.c" + "${SRC}/crypto_scalarmult/curve25519/ref10/x25519_ref10.c" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/consts.S" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/ladder.S" + "${SRC}/crypto_scalarmult/curve25519/sandy2x/sandy2x.S" + "${SRC}/crypto_scalarmult/curve25519/scalarmult_curve25519.c" + "${SRC}/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c" + "${SRC}/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c" + "${SRC}/crypto_secretbox/crypto_secretbox.c" + "${SRC}/crypto_secretbox/crypto_secretbox_easy.c" + "${SRC}/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c" + "${SRC}/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c" + "${SRC}/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c" + "${SRC}/crypto_shorthash/crypto_shorthash.c" + "${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c" + "${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c" + "${SRC}/crypto_shorthash/siphash24/shorthash_siphash24.c" + "${SRC}/crypto_shorthash/siphash24/shorthash_siphashx24.c" + "${SRC}/crypto_sign/crypto_sign.c" + "${SRC}/crypto_sign/ed25519/ref10/keypair.c" + "${SRC}/crypto_sign/ed25519/ref10/obsolete.c" + "${SRC}/crypto_sign/ed25519/ref10/open.c" + "${SRC}/crypto_sign/ed25519/ref10/sign.c" + "${SRC}/crypto_sign/ed25519/sign_ed25519.c" + "${SRC}/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c" + "${SRC}/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c" + "${SRC}/crypto_stream/chacha20/ref/chacha20_ref.c" + "${SRC}/crypto_stream/chacha20/stream_chacha20.c" + "${SRC}/crypto_stream/crypto_stream.c" + "${SRC}/crypto_stream/salsa20/ref/salsa20_ref.c" + "${SRC}/crypto_stream/salsa20/stream_salsa20.c" + "${SRC}/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S" + "${SRC}/crypto_stream/salsa20/xmm6/salsa20_xmm6.c" + "${SRC}/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c" + "${SRC}/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c" + "${SRC}/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c" + "${SRC}/crypto_stream/salsa2012/stream_salsa2012.c" + "${SRC}/crypto_stream/salsa208/ref/stream_salsa208_ref.c" + "${SRC}/crypto_stream/salsa208/stream_salsa208.c" + "${SRC}/crypto_stream/xchacha20/stream_xchacha20.c" + "${SRC}/crypto_stream/xsalsa20/stream_xsalsa20.c" + "${SRC}/crypto_verify/verify.c" + "${SRC}/randombytes/randombytes.c" + "${SRC}/sodium/codecs.c" + "${SRC}/sodium/core.c" + "${SRC}/sodium/runtime.c" + "${SRC}/sodium/utils.c" + "${SRC}/sodium/version.c" + "port/randombytes_esp32.c") + +#if(CONFIG_LIBSODIUM_USE_MBEDTLS_SHA) +# list(APPEND srcs +# "port/crypto_hash_mbedtls/crypto_hash_sha256_mbedtls.c" +# "port/crypto_hash_mbedtls/crypto_hash_sha512_mbedtls.c") +#else() + list(APPEND srcs + "${SRC}/crypto_hash/sha256/cp/hash_sha256_cp.c" + "${SRC}/crypto_hash/sha512/cp/hash_sha512_cp.c") +#endif() + +set(include_dirs ${SRC}/include port_include) +set(priv_include_dirs ${SRC}/include/sodium port_include/sodium port) +idf_component_register(SRCS "${srcs}" + INCLUDE_DIRS "${include_dirs}" + PRIV_INCLUDE_DIRS "${priv_include_dirs}" + REQUIRES mbedtls) + +target_compile_definitions(${COMPONENT_LIB} PRIVATE + CONFIGURED + NATIVE_LITTLE_ENDIAN + HAVE_WEAK_SYMBOLS + __STDC_LIMIT_MACROS + __STDC_CONSTANT_MACROS + ) + +# patch around warnings in third-party files +set_source_files_properties( + ${SRC}/crypto_pwhash/argon2/pwhash_argon2i.c + ${SRC}/crypto_pwhash/argon2/pwhash_argon2id.c + ${SRC}/crypto_pwhash/argon2/argon2-core.c + ${SRC}/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c + PROPERTIES COMPILE_FLAGS + -Wno-type-limits + ) +set_source_files_properties( + ${SRC}/sodium/utils.c + PROPERTIES COMPILE_FLAGS + -Wno-unused-variable + ) +set_source_files_properties( + ${SRC}/crypto_pwhash/argon2/argon2-fill-block-ref.c + PROPERTIES COMPILE_FLAGS + -Wno-unknown-pragmas + ) + +# Temporary suppress "fallthrough" warnings until they are fixed in libsodium repo +set_source_files_properties( + ${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c + ${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c + PROPERTIES COMPILE_FLAGS + -Wno-implicit-fallthrough + ) + +set_source_files_properties( + ${SRC}/randombytes/randombytes.c + PROPERTIES COMPILE_FLAGS + -DRANDOMBYTES_DEFAULT_IMPLEMENTATION +) + +target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-unused-function) + +if(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE) + # some libsodium variables are only used for asserts + target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-unused-but-set-variable) +endif() diff --git a/components/espressif__libsodium/Kconfig b/components/espressif__libsodium/Kconfig new file mode 100644 index 0000000..4d500f2 --- /dev/null +++ b/components/espressif__libsodium/Kconfig @@ -0,0 +1,15 @@ +menu "libsodium" + + config LIBSODIUM_USE_MBEDTLS_SHA + bool "Use mbedTLS SHA256 & SHA512 implementations" + default y + depends on !MBEDTLS_HARDWARE_SHA + help + If this option is enabled, libsodium will use thin wrappers + around mbedTLS for SHA256 & SHA512 operations. + + This saves some code size if mbedTLS is also used. However it + is incompatible with hardware SHA acceleration (due to the + way libsodium's API manages SHA state). + +endmenu # libsodium diff --git a/components/espressif__libsodium/LICENSE b/components/espressif__libsodium/LICENSE new file mode 100644 index 0000000..1739720 --- /dev/null +++ b/components/espressif__libsodium/LICENSE @@ -0,0 +1,18 @@ +/* + * ISC License + * + * Copyright (c) 2013-2023 + * Frank Denis + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/components/espressif__libsodium/README.md b/components/espressif__libsodium/README.md new file mode 100644 index 0000000..41d99f2 --- /dev/null +++ b/components/espressif__libsodium/README.md @@ -0,0 +1,46 @@ +[![GitHub CI](https://github.com/jedisct1/libsodium/workflows/CI/badge.svg)](https://github.com/jedisct1/libsodium/actions) +[![Windows build status](https://ci.appveyor.com/api/projects/status/fu8s2elx25il98hj?svg=true)](https://ci.appveyor.com/project/jedisct1/libsodium) +[![Coverity Scan Build Status](https://scan.coverity.com/projects/2397/badge.svg)](https://scan.coverity.com/projects/2397) +[![Azure build status](https://jedisct1.visualstudio.com/Libsodium/_apis/build/status/jedisct1.libsodium?branchName=stable)](https://jedisct1.visualstudio.com/Libsodium/_build/latest?definitionId=3&branchName=stable) +[![CodeQL scan](https://github.com/jedisct1/libsodium/workflows/CodeQL%20scan/badge.svg)](https://github.com/jedisct1/libsodium/actions) + +![libsodium](https://raw.github.com/jedisct1/libsodium/master/logo.png) +============ + +Sodium is a new, easy-to-use software library for encryption, +decryption, signatures, password hashing and more. + +It is a portable, cross-compilable, installable, packageable +fork of [NaCl](http://nacl.cr.yp.to/), with a compatible API, and an +extended API to improve usability even further. + +Its goal is to provide all of the core operations needed to build +higher-level cryptographic tools. + +Sodium supports a variety of compilers and operating systems, +including Windows (with MingW or Visual Studio, x86 and x64), iOS, Android, +as well as Javascript and Webassembly. + +## Documentation + +The documentation is available on Gitbook and built from the +[libsodium-doc](https://github.com/jedisct1/libsodium-doc) repository: + +* [libsodium documentation](https://doc.libsodium.org) - online, requires Javascript. + +## Integrity Checking + +The integrity checking instructions (including the signing key for libsodium) +are available in the [installation](https://download.libsodium.org/doc/installation#integrity-checking) +section of the documentation. + +## Community + +A mailing-list is available to discuss libsodium. + +In order to join, just send a random mail to `sodium-subscribe` {at} +`pureftpd` {dot} `org`. + +## License + +[ISC license](https://en.wikipedia.org/wiki/ISC_license). diff --git a/components/espressif__libsodium/idf_component.yml b/components/espressif__libsodium/idf_component.yml new file mode 100644 index 0000000..543e0a9 --- /dev/null +++ b/components/espressif__libsodium/idf_component.yml @@ -0,0 +1,6 @@ +dependencies: + idf: + version: '>=4.2' +description: libsodium port to ESP +url: https://github.com/espressif/idf-extra-components/tree/master/libsodium +version: 1.0.20~1 diff --git a/components/espressif__libsodium/libsodium/.gitignore b/components/espressif__libsodium/libsodium/.gitignore new file mode 100644 index 0000000..be1e7d3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/.gitignore @@ -0,0 +1,167 @@ +*.bc +*.dSYM +*.done +*.final +*.gcda +*.gcno +*.i +*.la +*.lo +*.log +*.mem +*.nexe +*.o +*.plist +*.scan +*.sdf +*.status +*.tar.* +*.wasm +*.wast +*~ +.DS_Store +.deps +.dirstamp +.done +.libs +/bin/ +/obj/ +Build +INSTALL +Makefile +Makefile.in +Vagrantfile +aclocal.m4 +android-toolchain +android-toolchain-* +autom4te.cache +build +compile +confdefs.h +config.* +configure +configure.lineno +coverage.info +depcomp +install-sh +libsodium-*.tar.bz2 +libsodium-*.tar.gz +libsodium-*.vcproj +libsodium-*.vcproj.filters +libsodium-*.vcxproj +libsodium-*.vcxproj.filters +libsodium-android-* +libsodium-ios +libsodium-js +libsodium-js-* +libsodium-nativeclient +libsodium-nativeclient-* +libsodium-osx +libsodium-uninstalled.pc +libsodium-wasm32-wasi +libsodium-win32 +libsodium-win64 +libsodium.pc +libtool +ltmain.sh +m4/argz.m4 +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 +man/*.html +man/Makefile.in +missing +src/libsodium/*.def +src/libsodium/include/sodium/version.h +stamp-* +test-driver +test/default/*.asm.js +test/default/*.res +test/default/*.trs +test/default/aead_aegis128l +test/default/aead_aegis256 +test/default/aead_aes256gcm +test/default/aead_aes256gcm2 +test/default/aead_chacha20poly1305 +test/default/aead_chacha20poly13052 +test/default/aead_xchacha20poly1305 +test/default/auth +test/default/auth2 +test/default/auth3 +test/default/auth5 +test/default/auth6 +test/default/auth7 +test/default/box +test/default/box2 +test/default/box7 +test/default/box8 +test/default/box_easy +test/default/box_easy2 +test/default/box_seal +test/default/box_seed +test/default/browser +test/default/chacha20 +test/default/codecs +test/default/core1 +test/default/core2 +test/default/core3 +test/default/core4 +test/default/core5 +test/default/core6 +test/default/core_ed25519 +test/default/core_ristretto255 +test/default/ed25519_convert +test/default/generichash +test/default/generichash2 +test/default/generichash3 +test/default/hash +test/default/hash3 +test/default/kdf +test/default/kdf_hkdf +test/default/keygen +test/default/kx +test/default/metamorphic +test/default/misuse +test/default/onetimeauth +test/default/onetimeauth2 +test/default/onetimeauth7 +test/default/pwhash_argon2i +test/default/pwhash_argon2id +test/default/pwhash_scrypt +test/default/pwhash_scrypt_ll +test/default/randombytes +test/default/scalarmult +test/default/scalarmult2 +test/default/scalarmult5 +test/default/scalarmult6 +test/default/scalarmult7 +test/default/scalarmult8 +test/default/scalarmult_ed25519 +test/default/scalarmult_ristretto255 +test/default/secretbox +test/default/secretbox2 +test/default/secretbox7 +test/default/secretbox8 +test/default/secretbox_easy +test/default/secretbox_easy2 +test/default/secretstream_xchacha20poly1305 +test/default/shorthash +test/default/sign +test/default/siphashx24 +test/default/sodium_core +test/default/sodium_utils +test/default/sodium_utils2 +test/default/sodium_utils3 +test/default/sodium_version +test/default/stream +test/default/stream2 +test/default/stream3 +test/default/stream4 +test/default/verify1 +test/default/xchacha20 +test/js.done +testing +zig-cache +zig-out diff --git a/components/espressif__libsodium/libsodium/AUTHORS b/components/espressif__libsodium/libsodium/AUTHORS new file mode 100644 index 0000000..597b2c6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/AUTHORS @@ -0,0 +1,144 @@ + +Designers +========= + +argon2 Alex Biryukov + Daniel Dinu + Dmitry Khovratovich + +blake2 Jean-Philippe Aumasson + Christian Winnerlein + Samuel Neves + Zooko Wilcox-O'Hearn + +chacha20 Daniel J. Bernstein + +chacha20poly1305 Adam Langley + Yoav Nir + +curve25519 Daniel J. Bernstein + +curve25519xsalsa20poly1305 Daniel J. Bernstein + +ed25519 Daniel J. Bernstein + Bo-Yin Yang + Niels Duif + Peter Schwabe + Tanja Lange + +poly1305 Daniel J. Bernstein + +ristretto Mike Hamburg + Henry de Valence + Jack Grigg + George Tankersley + Filippo Valsorda + Isis Lovecruft + +salsa20 Daniel J. Bernstein + +scrypt Colin Percival + +siphash Jean-Philippe Aumasson + Daniel J. Bernstein + +Implementors +============ + +crypto_aead/aes256gcm/aesni Frank Denis + +crypto_aead/chacha20poly1305 Frank Denis + +crypto_aead/xchacha20poly1305 Frank Denis + Jason A. Donenfeld + +crypto_auth/hmacsha256 Colin Percival +crypto_auth/hmacsha512 +crypto_auth/hmacsha512256 + +crypto_box/curve25519xsalsa20poly1305 Daniel J. Bernstein + +crypto_box/curve25519xchacha20poly1305 Frank Denis + +crypto_core/ed25519 Daniel J. Bernstein + Adam Langley + Frank Denis + +crypto_core/hchacha20 Frank Denis + +crypto_core/hsalsa20 Daniel J. Bernstein +crypto_core/salsa + +crypto_generichash/blake2b Jean-Philippe Aumasson + Christian Winnerlein + Samuel Neves + Zooko Wilcox-O'Hearn + +crypto_hash/sha256 Colin Percival +crypto_hash/sha512 +crypto_hash/sha512256 + +crypto_kdf Frank Denis + +crypto_kx Frank Denis + +crypto_onetimeauth/poly1305/donna Andrew "floodyberry" Moon +crypto_onetimeauth/poly1305/sse2 + +crypto_pwhash/argon2 Samuel Neves + Dmitry Khovratovich + Jean-Philippe Aumasson + Daniel Dinu + Thomas Pornin + +crypto_pwhash/scryptsalsa208sha256 Colin Percival + Alexander Peslyak + +crypto_scalarmult/curve25519/ref10 Daniel J. Bernstein + +crypto_scalarmult/curve25519/sandy2x Tung Chou + +crypto_scalarmult/ed25519 Frank Denis + +crypto_scalarmult/ristretto255 Frank Denis + +crypto_secretbox/xsalsa20poly1305 Daniel J. Bernstein + +crypto_secretbox/xchacha20poly1305 Frank Denis + +crypto_secretstream/xchacha20poly1305 Frank Denis + +crypto_shorthash/siphash24 Jean-Philippe Aumasson + Daniel J. Bernstein + +crypto_sign/ed25519 Peter Schwabe + Daniel J. Bernstein + Niels Duif + Tanja Lange + Bo-Yin Yang + +crypto_stream/chacha20/ref Daniel J. Bernstein + +crypto_stream/chacha20/dolbeau Romain Dolbeau + Daniel J. Bernstein + +crypto_stream/salsa20/ref Daniel J. Bernstein +crypto_stream/salsa20/xmm6 + +crypto_stream/salsa20/xmm6int Romain Dolbeau + Daniel J. Bernstein + +crypto_stream/salsa2012/ref Daniel J. Bernstein +crypto_stream/salsa2008/ref + +crypto_stream/xchacha20 Frank Denis + +crypto_verify Frank Denis + +sodium/codecs.c Frank Denis + Thomas Pornin + Christian Winnerlein + +sodium/core.c Frank Denis +sodium/runtime.h +sodium/utils.c diff --git a/components/espressif__libsodium/libsodium/CITATION.cff b/components/espressif__libsodium/libsodium/CITATION.cff new file mode 100644 index 0000000..2090280 --- /dev/null +++ b/components/espressif__libsodium/libsodium/CITATION.cff @@ -0,0 +1,18 @@ +cff-version: 1.2.0 +title: libsodium +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: Frank + family-names: Denis + orcid: 'https://orcid.org/0009-0008-4417-1713' +repository-code: 'https://github.com/jedisct1/libsodium' +url: 'https://libsodium.org' +abstract: 'A modern, portable, easy-to-use cryptographic library.' +keywords: + - cryptography + - library + - nacl +license: ISC diff --git a/components/espressif__libsodium/libsodium/ChangeLog b/components/espressif__libsodium/libsodium/ChangeLog new file mode 100644 index 0000000..eb15a01 --- /dev/null +++ b/components/espressif__libsodium/libsodium/ChangeLog @@ -0,0 +1,627 @@ +* Version 1.0.19 + This release includes all the changes from 1.0.18-stable, as well as two +additions: + + - New AEADs: AEGIS-128L and AEGIS-256 are now available in the +`crypto_aead_aegis128l_*()` and `crypto_aead_aegis256_*()` namespaces. +AEGIS is a family of authenticated ciphers for high-performance applications, +leveraging hardware AES acceleration on `x86_64` and `aarch64`. In addition +to performance, AEGIS ciphers have unique properties making them easier and +safer to use than AES-GCM. They can also be used as high-performance MACs. + - The HKDF key derivation mechanism, required by many standard protocols, is +now available in the `crypto_kdf_hkdf_*()` namespace. It is implemented for +the SHA-256 and SHA-512 hash functions. + - The `osx.sh` build script was renamed to `macos.sh`. + - Support for android-mips was removed. + +* Version 1.0.18-stable + - Visual Studio: support for Windows/ARM64 builds has been added. + - Visual Studio: AVX512 implementations are enabled on supported CPUs. + - Visual Studio: an MSVC 2022 solution was added. + - Apple XCFramework: support for VisionOS was added. + - Apple XCFranework: support for Catalyst was added. + - Apple XCFramework: building the simulators is now optional. + - iOS: bitcode is not generated any more, as it was deprecated by Apple. + - watchOS: support for arm64 was added. + - The Zig toolchain can now be used as a modern build system to replace +autoconf/automake/libtool/make/ccache and the compiler. This enables faster +compilation times, easier cross compilation, and static libraries optimized +for any CPU. + - The Zig toolchain is now the recommended way to compile `libsodium` +to WebAssembly/WASI(X). + - libsodium can now be added as a dependency to Zig projects. + - Memory fences were added to remove some gadgets that could be used +alongside speculative loads. + - The AES-GCM implementation was completely rewritten. It is now faster, +and also available on aarch64, including Windows/ARM64. + - Compatibility with CET instrumentation / IBT / Shadow Stack was added. + - Emscripten: the `crypto_pwhash_*()` functions have been removed from Sumo +builds, as they reserve a substantial amount of JavaScript memory, even when +not used. + - Benchmarks now use `CLOCK_MONOTONIC` if possible. + - WebAssembly: tests can now run using Bun, WasmEdge, Wazero, wasm3 and +wasmer-js. Support for WAVM and Lucet have been removed, as these projects +have reached EOL. + - .NET: the minimum supported macOS version is now 1.0.15; this matches +Microsoft guidelines. + - .NET: all the packages are now built using Zig, on all platforms. This +allows us to easily match Microsoft's requirements, including supported glibc +versions. However, on x86_64, targets are expected to support at least the +AVX instruction set. + - .NET: packages for ARM64 are now available. + - C23 `memset_explicit()` is now used, when available. + - Compilation now uses `-Ofast` or `-O3` instead of `-O2` by default. + - Portability improvements to help compile libsodium to modern game consoles. + - JavaScript: a default `unhandledRejection` handler is not set any more. + - Slightly faster 25519 operations. + - OpenBSD: leverage `MAP_CONCEAL`. + +* Version 1.0.18 + - Enterprise versions of Visual Studio are now supported. + - Visual Studio 2019 is now supported. + - 32-bit binaries for Visual Studio 2010 are now provided. + - A test designed to trigger an OOM condition didn't work on Linux systems +with memory overcommit turned on. It has been removed in order to fix +Ansible builds. + - Emscripten: `print` and `printErr` functions are overridden to send +errors to the console, if there is one. + - Emscripten: `UTF8ToString()` is now exported since `Pointer_stringify()` +has been deprecated. + - Libsodium version detection has been fixed in the CMake recipe. + - Generic hashing got a 10% speedup on AVX2. + - New target: WebAssembly/WASI (compile with `dist-builds/wasm32-wasi.sh`). + - New functions to map a hash to an edwards25519 point or get a random point: +`core_ed25519_from_hash()` and `core_ed25519_random()`. + - `crypto_core_ed25519_scalar_mul()` has been implemented for +`scalar*scalar (mod L)` multiplication. + - Support for the Ristretto group has been implemented for interoperability +with wasm-crypto. + - Improvements have been made to the test suite. + - Portability improvements have been made. + - `getentropy()` is now used on systems providing this system call. + - `randombytes_salsa20` has been renamed to `randombytes_internal`. + - Support for NativeClient has been removed. + - Most `((nonnull))` attributes have been relaxed to allow 0-length inputs +to be `NULL`. + - The `-ftree-vectorize` and `-ftree-slp-vectorize` compiler switches are +now used, if available, for optimized builds. + +* Version 1.0.17-stable + - AVX512 detection has been improved. + - A compilation option was added to enable retpoline support. + - `-ftls-model=global-dynamic` is now set, if available. + - Portability and documentation improvements. + +* Version 1.0.17 + - Bug fix: `sodium_pad()` didn't properly support block sizes >= 256 bytes. + - JS/WebAssembly: some old iOS versions can't instantiate the WebAssembly +module; fall back to Javascript on these. + - JS/WebAssembly: compatibility with newer Emscripten versions. + - Bug fix: `crypto_pwhash_scryptsalsa208sha256_str_verify()` and +`crypto_pwhash_scryptsalsa208sha256_str_needs_rehash()` didn't return +`EINVAL` on input strings with a short length, unlike their high-level +counterpart. + - Added a workaround for Visual Studio 2010 bug causing CPU features +not to be detected. + - Portability improvements. + - Test vectors from Project Wycheproof have been added. + - New low-level APIs for arithmetic mod the order of the prime order group: +`crypto_core_ed25519_scalar_random()`, `crypto_core_ed25519_scalar_reduce()`, +`crypto_core_ed25519_scalar_invert()`, `crypto_core_ed25519_scalar_negate()`, +`crypto_core_ed25519_scalar_complement()`, `crypto_core_ed25519_scalar_add()` +and `crypto_core_ed25519_scalar_sub()`. + - New low-level APIs for scalar multiplication without clamping: +`crypto_scalarmult_ed25519_base_noclamp()` and +`crypto_scalarmult_ed25519_noclamp()`. These new APIs are especially useful +for blinding. + - `sodium_sub()` has been implemented. + - Support for WatchOS has been added. + - getrandom(2) is now used on FreeBSD 12+. + - The `nonnull` attribute has been added to all relevant prototypes. + - More reliable AVX512 detection. + - Javascript/Webassembly builds now use dynamic memory growth. + +* Version 1.0.16 + - Signatures computations and verifications are now way faster on +64-bit platforms with compilers supporting 128-bit arithmetic (gcc, +clang, icc). This includes the WebAssembly target. + - New low-level APIs for computations over edwards25519: +`crypto_scalarmult_ed25519()`, `crypto_scalarmult_ed25519_base()`, +`crypto_core_ed25519_is_valid_point()`, `crypto_core_ed25519_add()`, +`crypto_core_ed25519_sub()` and `crypto_core_ed25519_from_uniform()` +(elligator representative to point). + - `crypto_sign_open()`, `crypto_sign_verify_detached() and +`crypto_sign_edwards25519sha512batch_open` now reject public keys in +non-canonical form in addition to low-order points. + - The library can be built with `ED25519_NONDETERMINISTIC` defined in +order to use synthetic nonces for EdDSA. This is disabled by default. + - Webassembly: `crypto_pwhash_*()` functions are now included in +non-sumo builds. + - `sodium_stackzero()` was added to wipe content off the stack. + - Android: support new SDKs where unified headers have become the +default. + - The Salsa20-based PRNG example is now thread-safe on platforms with +support for thread-local storage, optionally mixes bits from RDRAND. + - CMAKE: static library detection on Unix systems has been improved +(thanks to @BurningEnlightenment, @nibua-r, @mellery451) + - Argon2 and scrypt are slightly faster on Linux. + +* Version 1.0.15 + - The default password hashing algorithm is now Argon2id. The +`pwhash_str_verify()` function can still verify Argon2i hashes +without any changes, and `pwhash()` can still compute Argon2i hashes +as well. + - The aes128ctr primitive was removed. It was slow, non-standard, not +authenticated, and didn't seem to be used by any opensource project. + - Argon2id required at least 3 passes like Argon2i, despite a minimum +of `1` as defined by the `OPSLIMIT_MIN` constant. This has been fixed. + - The secretstream construction was slightly changed to be consistent +with forthcoming variants. + - The Javascript and Webassembly versions have been merged, and the +module now returns a `.ready` promise that will resolve after the +Webassembly code is loaded and compiled. + - Note that due to these incompatible changes, the library version +major was bumped up. + +* Version 1.0.14 + - iOS binaries should now be compatible with WatchOS and TVOS. + - WebAssembly is now officially supported. Special thanks to +@facekapow and @pepyakin who helped to make it happen. + - Internal consistency checks failing and primitives used with +dangerous/out-of-bounds/invalid parameters used to call abort(3). +Now, a custom handler *that doesn't return* can be set with the +`set_sodium_misuse()` function. It still aborts by default or if the +handler ever returns. This is not a replacement for non-fatal, +expected runtime errors. This handler will be only called in +unexpected situations due to potential bugs in the library or in +language bindings. + - `*_MESSAGEBYTES_MAX` macros (and the corresponding +`_messagebytes_max()` symbols) have been added to represent the +maximum message size that can be safely handled by a primitive. +Language bindings are encouraged to check user inputs against these +maximum lengths. + - The test suite has been extended to cover more edge cases. + - crypto_sign_ed25519_pk_to_curve25519() now rejects points that are +not on the curve, or not in the main subgroup. + - Further changes have been made to ensure that smart compilers will +not optimize out code that we don't want to be optimized. + - Visual Studio solutions are now included in distribution tarballs. + - The `sodium_runtime_has_*` symbols for CPU features detection are +now defined as weak symbols, i.e. they can be replaced with an +application-defined implementation. This can be useful to disable +AVX* when temperature/power consumption is a concern. + - `crypto_kx_*()` now aborts if called with no non-NULL pointers to +store keys to. + - SSE2 implementations of `crypto_verify_*()` have been added. + - Passwords can be hashed using a specific algorithm with the new +`crypto_pwhash_str_alg()` function. + - Due to popular demand, base64 encoding (`sodium_bin2base64()`) and +decoding (`sodium_base642bin()`) have been implemented. + - A new `crypto_secretstream_*()` API was added to safely encrypt files +and multi-part messages. + - The `sodium_pad()` and `sodium_unpad()` helper functions have been +added in order to add & remove padding. + - An AVX512 optimized implementation of Argon2 has been added (written +by Ondrej Mosnáček, thanks!) + - The `crypto_pwhash_str_needs_rehash()` function was added to check if +a password hash string matches the given parameters, or if it needs an +update. + - The library can now be compiled with recent versions of +emscripten/binaryen that don't allow multiple variables declarations +using a single `var` statement. + +* Version 1.0.13 + - Javascript: the sumo builds now include all symbols. They were +previously limited to symbols defined in minimal builds. + - The public `crypto_pwhash_argon2i_MEMLIMIT_MAX` constant was +incorrectly defined on 32-bit platforms. This has been fixed. + - Version 1.0.12 didn't compile on OpenBSD/i386 using the base gcc +compiler. This has been fixed. + - The Android compilation scripts have been updated for NDK r14b. + - armv7s-optimized code was re-added to iOS builds. + - An AVX2 optimized implementation of the Argon2 round function was +added. + - The Argon2id variant of Argon2 has been implemented. The +high-level `crypto_pwhash_str_verify()` function automatically detects +the algorithm and can verify both Argon2i and Argon2id hashed passwords. +The default algorithm for newly hashed passwords remains Argon2i in +this version to avoid breaking compatibility with verifiers running +libsodium <= 1.0.12. + - A `crypto_box_curve25519xchacha20poly1305_seal*()` function set was +implemented. + - scrypt was removed from minimal builds. + - libsodium is now available on NuGet. + +* Version 1.0.12 + - Ed25519ph was implemented, adding a multi-part signature API +(`crypto_sign_init()`, `crypto_sign_update()`, `crypto_sign_final_*()`). + - New constants and related accessors have been added for Scrypt and +Argon2. + - XChaCha20 has been implemented. Like XSalsa20, this construction +extends the ChaCha20 cipher to accept a 192-bit nonce. This makes it safe +to use ChaCha20 with random nonces. + - `crypto_secretbox`, `crypto_box` and `crypto_aead` now offer +variants leveraging XChaCha20. + - SHA-2 is about 20% faster, which also gives a speed boost to +signature and signature verification. + - AVX2 implementations of Salsa20 and ChaCha20 have been added. They +are twice as fast as the SSE2 implementations. The speed gain is +even more significant on Windows, that previously didn't use +vectorized implementations. + - New high-level API: `crypto_kdf`, to easily derive one or more +subkeys from a master key. + - Siphash with a 128-bit output has been implemented, and is +available as `crypto_shorthash_siphashx_*`. + - New `*_keygen()` helpers functions have been added to create secret +keys for all constructions. This improves code clarity and can prevent keys +from being partially initialized. + - A new `randombytes_buf_deterministic()` function was added to +deterministically fill a memory region with pseudorandom data. This +function can especially be useful to write reproducible tests. + - A preliminary `crypto_kx_*()` API was added to compute shared session +keys. + - AVX2 detection is more reliable. + - The pthreads library is not required any more when using MingW. + - `contrib/Findsodium.cmake` was added as an example to include +libsodium in a project using cmake. + - Compatibility with gcc 2.x has been restored. + - Minimal builds can be checked using `sodium_library_minimal()`. + - The `--enable-opt` compilation switch has become compatible with more +platforms. + - Android builds are now using clang on platforms where it is +available. + +* Version 1.0.11 + - `sodium_init()` is now thread-safe, and can be safely called multiple +times. + - Android binaries now properly support 64-bit Android, targeting +platform 24, but without breaking compatibility with platforms 16 and +21. + - Better support for old gcc versions. + - On FreeBSD, core dumps are disabled on regions allocated with +sodium allocation functions. + - AVX2 detection was fixed, resulting in faster Blake2b hashing on +platforms where it was not properly detected. + - The Sandy2x Curve25519 implementation was not as fast as expected +on some platforms. This has been fixed. + - The NativeClient target was improved. Most notably, it now supports +optimized implementations, and uses pepper_49 by default. + - The library can be compiled with recent Emscripten versions. +Changes have been made to produce smaller code, and the default heap +size was reduced in the standard version. + - The code can now be compiled on SLES11 service pack 4. + - Decryption functions can now accept a NULL pointer for the output. +This checks the MAC without writing the decrypted message. + - crypto_generichash_final() now returns -1 if called twice. + - Support for Visual Studio 2008 was improved. + +* Version 1.0.10 + - This release only fixes a compilation issue reported with some older +gcc versions. There are no functional changes over the previous release. + +* Version 1.0.9 + - The Javascript target now includes a `--sumo` option to include all +the symbols of the original C library. + - A detached API was added to the ChaCha20-Poly1305 and AES256-GCM +implementations. + - The Argon2i password hashing function was added, and is accessible +directly and through a new, high-level `crypto_pwhash` API. The scrypt +function remains available as well. + - A speed-record AVX2 implementation of BLAKE2b was added (thanks to +Samuel Neves). + - The library can now be compiled using C++Builder (thanks to @jcolli44) + - Countermeasures for Ed25519 signatures malleability have been added +to match the irtf-cfrg-eddsa draft (note that malleability is irrelevant to +the standard definition of signature security). Signatures with a small-order +`R` point are now also rejected. + - Some implementations are now slightly faster when using the Clang +compiler. + - The HChaCha20 core function was implemented (`crypto_core_hchacha20()`). + - No-op stubs were added for all AES256-GCM public functions even when +compiled on non-Intel platforms. + - `crypt_generichash_blake2b_statebytes()` was added. + - New macros were added for the IETF variant of the ChaCha20-Poly1305 +construction. + - The library can now be compiled on Minix. + - HEASLR is now enabled on MinGW builds. + +* Version 1.0.8 + - Handle the case where the CPU supports AVX, but we are running +on an hypervisor with AVX disabled/not supported. + - Faster (2x) scalarmult_base() when using the ref10 implementation. + +* Version 1.0.7 + - More functions whose return value should be checked have been +tagged with `__attribute__ ((warn_unused_result))`: `crypto_box_easy()`, +`crypto_box_detached()`, `crypto_box_beforenm()`, `crypto_box()`, and +`crypto_scalarmult()`. + - Sandy2x, the fastest Curve25519 implementation ever, has been +merged in, and is automatically used on CPUs supporting the AVX +instructions set. + - An SSE2 optimized implementation of Poly1305 was added, and is +twice as fast as the portable one. + - An SSSE3 optimized implementation of ChaCha20 was added, and is +twice as fast as the portable one. + - Faster `sodium_increment()` for common nonce sizes. + - New helper functions have been added: `sodium_is_zero()` and + `sodium_add()`. + - `sodium_runtime_has_aesni()` now properly detects the CPU flag when + compiled using Visual Studio. + +* Version 1.0.6 + - Optimized implementations of Blake2 have been added for modern +Intel platforms. `crypto_generichash()` is now faster than MD5 and SHA1 +implementations while being far more secure. + - Functions for which the return value should be checked have been +tagged with `__attribute__ ((warn_unused_result))`. This will +intentionally break code compiled with `-Werror` that didn't bother +checking critical return values. + - The `crypto_sign_edwards25519sha512batch_*()` functions have been +tagged as deprecated. + - Undocumented symbols that were exported, but were only useful for +internal purposes have been removed or made private: +`sodium_runtime_get_cpu_features()`, the implementation-specific +`crypto_onetimeauth_poly1305_donna()` symbols, +`crypto_onetimeauth_poly1305_set_implementation()`, +`crypto_onetimeauth_poly1305_implementation_name()` and +`crypto_onetimeauth_pick_best_implementation()`. + - `sodium_compare()` now works as documented, and compares numbers +in little-endian format instead of behaving like `memcmp()`. + - The previous changes should not break actual applications, but to be +safe, the library version major was incremented. + - `sodium_runtime_has_ssse3()` and `sodium_runtime_has_sse41()` have +been added. + - The library can now be compiled with the CompCert compiler. + +* Version 1.0.5 + - Compilation issues on some platforms were fixed: missing alignment +directives were added (required at least on RHEL-6/i386), a workaround +for a VRP bug on gcc/armv7 was added, and the library can now be compiled +with the SunPro compiler. + - Javascript target: io.js is not supported any more. Use nodejs. + +* Version 1.0.4 + - Support for AES256-GCM has been added. This requires +a CPU with the aesni and pclmul extensions, and is accessible via the +crypto_aead_aes256gcm_*() functions. + - The Javascript target doesn't use eval() any more, so that the +library can be used in Chrome packaged applications. + - QNX and CloudABI are now supported. + - Support for NaCl has finally been added. + - ChaCha20 with an extended (96 bit) nonce and a 32-bit counter has +been implemented as crypto_stream_chacha20_ietf(), +crypto_stream_chacha20_ietf_xor() and crypto_stream_chacha20_ietf_xor_ic(). +An IETF-compatible version of ChaCha20Poly1305 is available as +crypto_aead_chacha20poly1305_ietf_npubbytes(), +crypto_aead_chacha20poly1305_ietf_encrypt() and +crypto_aead_chacha20poly1305_ietf_decrypt(). + - The sodium_increment() helper function has been added, to increment +an arbitrary large number (such as a nonce). + - The sodium_compare() helper function has been added, to compare +arbitrary large numbers (such as nonces, in order to prevent replay +attacks). + +* Version 1.0.3 + - In addition to sodium_bin2hex(), sodium_hex2bin() is now a +constant-time function. + - crypto_stream_xsalsa20_ic() has been added. + - crypto_generichash_statebytes(), crypto_auth_*_statebytes() and +crypto_hash_*_statebytes() have been added in order to retrieve the +size of structures keeping states from foreign languages. + - The JavaScript target doesn't require /dev/urandom or an external +randombytes() implementation any more. Other minor Emscripten-related +improvements have been made in order to support libsodium.js + - Custom randombytes implementations do not need to provide their own +implementation of randombytes_uniform() any more. randombytes_stir() +and randombytes_close() can also be NULL pointers if they are not +required. + - On Linux, getrandom(2) is being used instead of directly accessing +/dev/urandom, if the kernel supports this system call. + - crypto_box_seal() and crypto_box_seal_open() have been added. + - Visual Studio 2015 is now supported. + +* Version 1.0.2 + - The _easy and _detached APIs now support precalculated keys; +crypto_box_easy_afternm(), crypto_box_open_easy_afternm(), +crypto_box_detached_afternm() and crypto_box_open_detached_afternm() +have been added as an alternative to the NaCl interface. + - Memory allocation functions can now be used on operating systems with +no memory protection. + - crypto_sign_open() and crypto_sign_edwards25519sha512batch_open() +now accept a NULL pointer instead of a pointer to the message size, if +storing this information is not required. + - The close-on-exec flag is now set on the descriptor returned when +opening /dev/urandom. + - A libsodium-uninstalled.pc file to use pkg-config even when +libsodium is not installed, has been added. + - The iOS target now includes armv7s and arm64 optimized code, as well +as i386 and x86_64 code for the iOS simulator. + - sodium_free() can now be called on regions with PROT_NONE protection. + - The Javascript tests can run on Ubuntu, where the node binary was +renamed nodejs. io.js can also be used instead of node. + +* Version 1.0.1 + - DLL_EXPORT was renamed SODIUM_DLL_EXPORT in order to avoid +collisions with similar macros defined by other libraries. + - sodium_bin2hex() is now constant-time. + - crypto_secretbox_detached() now supports overlapping input and output +regions. + - NaCl's donna_c64 implementation of curve25519 was reading an extra byte +past the end of the buffer containing the base point. This has been +fixed. + +* Version 1.0.0 + - The API and ABI are now stable. New features will be added, but +backward-compatibility is guaranteed through all the 1.x.y releases. + - crypto_sign() properly works with overlapping regions again. Thanks +to @pysiak for reporting this regression introduced in version 0.6.1. + - The test suite has been extended. + +* Version 0.7.1 (1.0 RC2) + - This is the second release candidate of Sodium 1.0. Minor +compilation, readability and portability changes have been made and the +test suite was improved, but the API is the same as the previous release +candidate. + +* Version 0.7.0 (1.0 RC1) + - Allocating memory to store sensitive data can now be done using +sodium_malloc() and sodium_allocarray(). These functions add guard +pages around the protected data to make it less likely to be +accessible in a heartbleed-like scenario. In addition, the protection +for memory regions allocated that way can be changed using +sodium_mprotect_noaccess(), sodium_mprotect_readonly() and +sodium_mprotect_readwrite(). + - ed25519 keys can be converted to curve25519 keys with +crypto_sign_ed25519_pk_to_curve25519() and +crypto_sign_ed25519_sk_to_curve25519(). This allows using the same +keys for signature and encryption. + - The seed and the public key can be extracted from an ed25519 key +using crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk(). + - aes256 was removed. A timing-attack resistant implementation might +be added later, but not before version 1.0 is tagged. + - The crypto_pwhash_scryptxsalsa208sha256_* compatibility layer was +removed. Use crypto_pwhash_scryptsalsa208sha256_*. + - The compatibility layer for implementation-specific functions was +removed. + - Compilation issues with Mingw64 on MSYS (not MSYS2) were fixed. + - crypto_pwhash_scryptsalsa208sha256_STRPREFIX was added: it contains +the prefix produced by crypto_pwhash_scryptsalsa208sha256_str() + +* Version 0.6.1 + - Important bug fix: when crypto_sign_open() was given a signed +message too short to even contain a signature, it was putting an +unlimited amount of zeros into the target buffer instead of +immediately returning -1. The bug was introduced in version 0.5.0. + - New API: crypto_sign_detached() and crypto_sign_verify_detached() +to produce and verify ed25519 signatures without having to duplicate +the message. + - New ./configure switch: --enable-minimal, to create a smaller +library, with only the functions required for the high-level API. +Mainly useful for the JavaScript target and embedded systems. + - All the symbols are now exported by the Emscripten build script. + - The pkg-config .pc file is now always installed even if the +pkg-config tool is not available during the installation. + +* Version 0.6.0 + - The ChaCha20 stream cipher has been added, as crypto_stream_chacha20_* + - The ChaCha20Poly1305 AEAD construction has been implemented, as +crypto_aead_chacha20poly1305_* + - The _easy API does not require any heap allocations any more and +does not have any overhead over the NaCl API. With the password +hashing function being an obvious exception, the library doesn't +allocate and will not allocate heap memory ever. + - crypto_box and crypto_secretbox have a new _detached API to store +the authentication tag and the encrypted message separately. + - crypto_pwhash_scryptxsalsa208sha256*() functions have been renamed +crypto_pwhash_scryptsalsa208sha256*(). + - The low-level crypto_pwhash_scryptsalsa208sha256_ll() function +allows setting individual parameters of the scrypt function. + - New macros and functions for recommended crypto_pwhash_* parameters +have been added. + - Similarly to crypto_sign_seed_keypair(), crypto_box_seed_keypair() +has been introduced to deterministically generate a key pair from a seed. + - crypto_onetimeauth() now provides a streaming interface. + - crypto_stream_chacha20_xor_ic() and crypto_stream_salsa20_xor_ic() +have been added to use a non-zero initial block counter. + - On Windows, CryptGenRandom() was replaced by RtlGenRandom(), which +doesn't require the Crypt API. + - The high bit in curve25519 is masked instead of processing the key as +a 256-bit value. + - The curve25519 ref implementation was replaced by the latest ref10 +implementation from Supercop. + - sodium_mlock() now prevents memory from being included in coredumps +on Linux 3.4+ + +* Version 0.5.0 + - sodium_mlock()/sodium_munlock() have been introduced to lock pages +in memory before storing sensitive data, and to zero them before +unlocking them. + - High-level wrappers for crypto_box and crypto_secretbox +(crypto_box_easy and crypto_secretbox_easy) can be used to avoid +dealing with the specific memory layout regular functions depend on. + - crypto_pwhash_scryptsalsa208sha256* functions have been added +to derive a key from a password, and for password storage. + - Salsa20 and ed25519 implementations now support overlapping +inputs/keys/outputs (changes imported from supercop-20140505). + - New build scripts for Visual Studio, Emscripten, different Android +architectures and msys2 are available. + - The poly1305-53 implementation has been replaced with Floodyberry's +poly1305-donna32 and poly1305-donna64 implementations. + - sodium_hex2bin() has been added to complement sodium_bin2hex(). + - On OpenBSD and Bitrig, arc4random() is used instead of reading +/dev/urandom. + - crypto_auth_hmac_sha512() has been implemented. + - sha256 and sha512 now have a streaming interface. + - hmacsha256, hmacsha512 and hmacsha512256 now support keys of +arbitrary length, and have a streaming interface. + - crypto_verify_64() has been implemented. + - first-class Visual Studio build system, thanks to @evoskuil + - CPU features are now detected at runtime. + +* Version 0.4.5 + - Restore compatibility with OSX <= 10.6 + +* Version 0.4.4 + - Visual Studio is officially supported (VC 2010 & VC 2013) + - mingw64 is now supported + - big-endian architectures are now supported as well + - The donna_c64 implementation of curve25519_donna_c64 now handles +non-canonical points like the ref implementation + - Missing scalarmult_curve25519 and stream_salsa20 constants are now exported + - A crypto_onetimeauth_poly1305_ref() wrapper has been added + +* Version 0.4.3 + - crypto_sign_seedbytes() and crypto_sign_SEEDBYTES were added. + - crypto_onetimeauth_poly1305_implementation_name() was added. + - poly1305-ref has been replaced by a faster implementation, +Floodyberry's poly1305-donna-unrolled. + - Stackmarkings have been added to assembly code, for Hardened Gentoo. + - pkg-config can now be used in order to retrieve compilations flags for +using libsodium. + - crypto_stream_aes256estream_*() can now deal with unaligned input +on platforms that require word alignment. + - portability improvements. + +* Version 0.4.2 + - All NaCl constants are now also exposed as functions. + - The Android and iOS cross-compilation script have been improved. + - libsodium can now be cross-compiled to Windows from Linux. + - libsodium can now be compiled with emscripten. + - New convenience function (prototyped in utils.h): sodium_bin2hex(). + +* Version 0.4.1 + - sodium_version_*() functions were not exported in version 0.4. They +are now visible as intended. + - sodium_init() now calls randombytes_stir(). + - optimized assembly version of salsa20 is now used on amd64. + - further cleanups and enhanced compatibility with non-C99 compilers. + +* Version 0.4 + - Most constants and operations are now available as actual functions +instead of macros, making it easier to use from other languages. + - New operation: crypto_generichash, featuring a variable key size, a +variable output size, and a streaming API. Currently implemented using +Blake2b. + - The package can be compiled in a separate directory. + - aes128ctr functions are exported. + - Optimized versions of curve25519 (curve25519_donna_c64), poly1305 +(poly1305_53) and ed25519 (ed25519_ref10) are available. Optionally calling +sodium_init() once before using the library makes it pick the fastest +implementation. + - New convenience function: sodium_memzero() in order to securely +wipe a memory area. + - A whole bunch of cleanups and portability enhancements. + - On Windows, a .REF file is generated along with the shared library, +for use with Visual Studio. The installation path for these has become +$prefix/bin as expected by MingW. + +* Version 0.3 + - The crypto_shorthash operation has been added, implemented using +SipHash-2-4. + +* Version 0.2 + - crypto_sign_seed_keypair() has been added + +* Version 0.1 + - Initial release. + diff --git a/components/espressif__libsodium/libsodium/LICENSE b/components/espressif__libsodium/libsodium/LICENSE new file mode 100644 index 0000000..1739720 --- /dev/null +++ b/components/espressif__libsodium/libsodium/LICENSE @@ -0,0 +1,18 @@ +/* + * ISC License + * + * Copyright (c) 2013-2023 + * Frank Denis + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/components/espressif__libsodium/libsodium/Makefile.am b/components/espressif__libsodium/libsodium/Makefile.am new file mode 100644 index 0000000..cd3d1fb --- /dev/null +++ b/components/espressif__libsodium/libsodium/Makefile.am @@ -0,0 +1,20 @@ +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = \ + autogen.sh \ + LICENSE \ + README.markdown \ + THANKS + +SUBDIRS = \ + builds \ + contrib \ + dist-build \ + src \ + test + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = @PACKAGE_NAME@.pc + +DISTCLEANFILES = $(pkgconfig_DATA) + diff --git a/components/espressif__libsodium/libsodium/README.markdown b/components/espressif__libsodium/libsodium/README.markdown new file mode 100644 index 0000000..41d99f2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/README.markdown @@ -0,0 +1,46 @@ +[![GitHub CI](https://github.com/jedisct1/libsodium/workflows/CI/badge.svg)](https://github.com/jedisct1/libsodium/actions) +[![Windows build status](https://ci.appveyor.com/api/projects/status/fu8s2elx25il98hj?svg=true)](https://ci.appveyor.com/project/jedisct1/libsodium) +[![Coverity Scan Build Status](https://scan.coverity.com/projects/2397/badge.svg)](https://scan.coverity.com/projects/2397) +[![Azure build status](https://jedisct1.visualstudio.com/Libsodium/_apis/build/status/jedisct1.libsodium?branchName=stable)](https://jedisct1.visualstudio.com/Libsodium/_build/latest?definitionId=3&branchName=stable) +[![CodeQL scan](https://github.com/jedisct1/libsodium/workflows/CodeQL%20scan/badge.svg)](https://github.com/jedisct1/libsodium/actions) + +![libsodium](https://raw.github.com/jedisct1/libsodium/master/logo.png) +============ + +Sodium is a new, easy-to-use software library for encryption, +decryption, signatures, password hashing and more. + +It is a portable, cross-compilable, installable, packageable +fork of [NaCl](http://nacl.cr.yp.to/), with a compatible API, and an +extended API to improve usability even further. + +Its goal is to provide all of the core operations needed to build +higher-level cryptographic tools. + +Sodium supports a variety of compilers and operating systems, +including Windows (with MingW or Visual Studio, x86 and x64), iOS, Android, +as well as Javascript and Webassembly. + +## Documentation + +The documentation is available on Gitbook and built from the +[libsodium-doc](https://github.com/jedisct1/libsodium-doc) repository: + +* [libsodium documentation](https://doc.libsodium.org) - online, requires Javascript. + +## Integrity Checking + +The integrity checking instructions (including the signing key for libsodium) +are available in the [installation](https://download.libsodium.org/doc/installation#integrity-checking) +section of the documentation. + +## Community + +A mailing-list is available to discuss libsodium. + +In order to join, just send a random mail to `sodium-subscribe` {at} +`pureftpd` {dot} `org`. + +## License + +[ISC license](https://en.wikipedia.org/wiki/ISC_license). diff --git a/components/espressif__libsodium/libsodium/THANKS b/components/espressif__libsodium/libsodium/THANKS new file mode 100644 index 0000000..a4b6e70 --- /dev/null +++ b/components/espressif__libsodium/libsodium/THANKS @@ -0,0 +1,92 @@ +Special thanks to people, companies and organizations having written +libsodium bindings for their favorite programming languages: + +@alethia7 +@artemisc +@carblue +@dnaq +@ektrah +@graxrabble +@harleqin +@joshjdevl +@jrmarino +@jshahbazi +@lvh +@neheb + +Adam Caudill (@adamcaudill) +Alexander Ilin (@AlexIljin) +Alexander Morris (@alexpmorris) +Amit Murthy (@amitmurthy) +Andrew Bennett (@potatosalad) +Andrew Lambert (@charonn0) +Bruce Mitchener (@waywardmonkeys) +Bruno Oliveira (@abstractj) +Caolan McMahon (@caolan) +Chris Rebert (@cvrebert) +Christian Hermann (@bitbeans) +Christian Wiese (@morfoh) +Christian Wiese (@morfoh) +Colm MacCárthaigh (@colmmacc) +David Parrish (@dmp1ce) +Donald Stufft (@dstufft) +Douglas Campos (@qmx) +Drew Crawford (@drewcrawford) +Emil Bay (@emilbayes) +Eric Dong (@quantum1423) +Eric Voskuil (@evoskuil) +Farid Hajji (@fhajji) +Frank Siebenlist (@franks42) +Gabriel Handford (@gabriel) +Geo Carncross (@geocar) +Henrik Gassmann (BurningEnlightenment) +Jachym Holecek (@freza) +Jack Wink (@jackwink) +James Ruan (@jamesruan) +Jan de Muijnck-Hughes (@jfdm) +Jason McCampbell (@jasonmccampbell) +Jeroen Habraken (@VeXocide) +Jeroen Ooms (@jeroen) +Jesper Louis Andersen (@jlouis) +Joe Eli McIlvain (@jemc) +Jonathan Stowe (@jonathanstowe) +Joseph Abrahamson (@tel) +Julien Kauffmann (@ereOn) +Kenneth Ballenegger (@kballenegger) +Loic Maury (@loicmaury) +Michael Gorlick (@mgorlick) +Michael Gregorowicz (@mgregoro) +Michał Zieliński (@zielmicha) +Omar Ayub (@electricFeel) +Pedro Paixao (@paixaop) +Project ArteMisc (@artemisc) +Rich FitzJohn (@richfitz) +Ruben De Visscher (@rubendv) +Rudolf Von Krugstein (@rudolfvonkrugstein) +Samuel Neves (@sneves) +Scott Arciszewski (@paragonie-scott) +Stanislav Ovsiannikov (@naphaso) +Stefan Marsiske (@stef) +Stephan Touset (@stouset) +Stephen Chavez (@redragonx) +Steve Gibson (@sggrc) +Tony Arcieri (@bascule) +Tony Garnock-Jones (@tonyg) +Y. T. Chung (@zonyitoo) + +Bytecurry Software +Cryptotronix +Facebook +FSF France +MaidSafe +Paragonie Initiative Enterprises +Python Cryptographic Authority + +(this list may not be complete, if you don't see your name, please +submit a pull request!) + +Also thanks to: + +- Coverity, Inc. to provide static analysis. +- FSF France for providing access to their compilation servers. +- Private Internet Access for having sponsored a complete security audit. diff --git a/components/espressif__libsodium/libsodium/appveyor.yml b/components/espressif__libsodium/libsodium/appveyor.yml new file mode 100644 index 0000000..5c696ba --- /dev/null +++ b/components/espressif__libsodium/libsodium/appveyor.yml @@ -0,0 +1,24 @@ +version: 1.0.19.{build} + +os: Visual Studio 2017 + +environment: + matrix: + - platform: Win32 + configuration: Debug + - platform: Win32 + configuration: Release + - platform: x64 + configuration: Debug + - platform: x64 + configuration: Release + +matrix: + fast_finish: false + +init: msbuild /version + +build: + parallel: true + project: ci/appveyor/libsodium.vcxproj + verbosity: normal diff --git a/components/espressif__libsodium/libsodium/autogen.sh b/components/espressif__libsodium/libsodium/autogen.sh new file mode 100644 index 0000000..cb67ea5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/autogen.sh @@ -0,0 +1,117 @@ +#! /bin/sh + +args=$(getopt bfos "$@") +if [ $? -ne 0 ]; then + echo "Usage: autogen.sh [-b] [-f] [-o] [-s] [--]" + echo + echo "> -b: do not update the system detection scripts" + echo "> -f: force the recreation of all autoconf scripts" + echo "> -o: overwrite/downgrade system detection scripts" + echo "> -s: setup an environment for developers" + exit 2 +fi + +force=false +update_config=true +overwrite_config=false +dev_setup=false + +eval set -- "$args" + +while [ $# -ne 0 ]; do + case $1 in + -b) + update_config=false + ;; + -f) + force=true + ;; + -o) + overwrite_config=true + ;; + -s) + dev_setup=true + ;; + --) + shift + break + ;; + esac + shift +done + +if [ -s configure ]; then + if [ "$force" != true ]; then + echo "autoconf scripts already exist." >&2 + exit 0 + fi +elif [ "$dev_setup" != true ]; then + echo "A development environment was not created." + exit 0 +fi + +if glibtoolize --version >/dev/null 2>&1; then + LIBTOOLIZE='glibtoolize' +else + LIBTOOLIZE='libtoolize' +fi + +command -v command >/dev/null 2>&1 || { + echo "command is required, but wasn't found on this system" + exit 1 +} + +command -v $LIBTOOLIZE >/dev/null 2>&1 || { + echo "libtool is required, but wasn't found on this system" + exit 1 +} + +command -v autoconf >/dev/null 2>&1 || { + echo "autoconf is required, but wasn't found on this system" + exit 1 +} + +command -v automake >/dev/null 2>&1 || { + echo "automake is required, but wasn't found on this system" + exit 1 +} + +if [ "$overwrite_config" = false ]; then + if [ -f build-aux/config.guess ]; then + mv build-aux/config.guess build-aux/config.guess.stable + fi + if [ -f build-aux/config.sub ]; then + mv build-aux/config.sub build-aux/config.sub.stable + fi +fi +$LIBTOOLIZE --copy --install && + aclocal && + automake --add-missing --copy --force-missing --include-deps && + autoconf && echo Done. +if [ "$overwrite_config" = false ]; then + if [ -f build-aux/config.guess.stable ]; then + mv build-aux/config.guess.stable build-aux/config.guess + fi + if [ -f build-aux/config.sub.stable ]; then + mv build-aux/config.sub.stable build-aux/config.sub + fi +fi + +[ "$update_config" = true ] && [ -z "$DO_NOT_UPDATE_CONFIG_SCRIPTS" ] && + command -v curl >/dev/null 2>&1 && { + echo "Downloading config.guess and config.sub..." + + curl -sSL --fail -o config.guess \ + 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' && + chmod +x config.guess && + chmod +x build-aux/config.guess + + curl -sSL --fail -o config.sub \ + 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' && + chmod +x build-aux/config.sub && + mv -f config.sub build-aux/config.sub + + echo "Done." +} + +rm -f config.guess config.sub diff --git a/components/espressif__libsodium/libsodium/azure-pipelines.yml b/components/espressif__libsodium/libsodium/azure-pipelines.yml new file mode 100644 index 0000000..4925daf --- /dev/null +++ b/components/espressif__libsodium/libsodium/azure-pipelines.yml @@ -0,0 +1,122 @@ +trigger: + - stable + - next + +pr: none + +jobs: + - job: "windows" + pool: + vmImage: "windows-2022" + steps: + - powershell: | + cd builds\msvc\build + & .\buildbase.bat ..\vs2022\libsodium.sln 17 + displayName: Compile it all + - powershell: | + mkdir bin\include\sodium + Copy-Item "src\libsodium\include\sodium\*.h" -Destination "bin\include\sodium" -Recurse + Copy-Item "src\libsodium\include\*.h" -Destination "bin\include\" + displayName: Copy header files + - task: PublishBuildArtifacts@1 + condition: not(canceled()) + inputs: + pathToPublish: bin + artifactName: libsodium + + - job: "windows_2019" + pool: + vmImage: "windows-2019" + steps: + - powershell: | + cd builds\msvc\build + & .\buildbase.bat ..\vs2019\libsodium.sln 16 + displayName: Compile it all + - powershell: | + mkdir bin\include\sodium + Copy-Item "src\libsodium\include\sodium\*.h" -Destination "bin\include\sodium" -Recurse + Copy-Item "src\libsodium\include\*.h" -Destination "bin\include\" + displayName: Copy header files + - task: PublishBuildArtifacts@1 + condition: not(canceled()) + inputs: + pathToPublish: bin + artifactName: libsodium + + - job: mingw64 + pool: + vmImage: "windows-2019" + steps: + - powershell: | + (New-Object Net.WebClient).DownloadFile("https://github.com/msys2/msys2-installer/releases/download/2023-07-18/msys2-base-x86_64-20230718.sfx.exe", "sfx.exe") + .\sfx.exe -y -o\ + del sfx.exe + displayName: Install MSYS2 + - script: | + set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem + %CD:~0,2%\msys64\usr\bin\bash -lc + %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Sydd filesystem" + %CD:~0,2%\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' + %CD:~0,2%\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' + displayName: Update MSYS2 + - script: | + set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem + %CD:~0,2%\msys64\usr\bin\pacman --noconfirm --needed -S base-devel mingw-w64-x86_64-toolchain + %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Scc + %CD:~0,2%\msys64\usr\bin\sed -i "s|#CacheDir.*|CacheDir=/c/Users/%USERNAME%/AppData/Local/Temp|g" /etc/pacman.conf + displayName: Install Toolchain + - script: | + set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;%CD:~0,2%\msys64\usr\bin;%CD:~0,2%\msys64\bin + set MSYS2_ROOT=%CD:~0,2%\msys64 + set MSYSTEM=MINGW64 + set CHERE_INVOKING=yes + %MSYS2_ROOT%\cmd\msystem MINGW64 + %CD:~0,2%\msys64\usr\bin\bash -lc dist-build/msys2-win64.sh + env: + CHERE_INVOKING: yes + MSYS2_ARCH: x86_64 + displayName: Compile libsodium + - task: PublishBuildArtifacts@1 + condition: not(canceled()) + inputs: + pathToPublish: libsodium-win64 + artifactName: libsodium-win64 + + - job: mingw32 + pool: + vmImage: "windows-2019" + steps: + - powershell: | + (New-Object Net.WebClient).DownloadFile("https://github.com/msys2/msys2-installer/releases/download/2023-07-18/msys2-base-x86_64-20230718.sfx.exe", "sfx.exe") + .\sfx.exe -y -o\ + del sfx.exe + displayName: Install MSYS2 + - script: | + set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem + %CD:~0,2%\msys64\usr\bin\bash -lc + %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Sydd filesystem" + %CD:~0,2%\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' + %CD:~0,2%\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu' + displayName: Update MSYS2 + - script: | + set PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem + %CD:~0,2%\msys64\usr\bin\pacman --noconfirm --needed -S base-devel mingw-w64-i686-toolchain + %CD:~0,2%\msys64\usr\bin\pacman --noconfirm -Scc + %CD:~0,2%\msys64\usr\bin\sed -i "s|#CacheDir.*|CacheDir=/c/Users/%USERNAME%/AppData/Local/Temp|g" /etc/pacman.conf + displayName: Install Toolchain + - script: | + set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;%CD:~0,2%\msys64\usr\bin;%CD:~0,2%\msys64\bin + set MSYS2_ROOT=%CD:~0,2%\msys64 + set MSYSTEM=MINGW32 + set CHERE_INVOKING=yes + %MSYS2_ROOT%\cmd\msystem MINGW32 + %CD:~0,2%\msys64\usr\bin\bash -lc dist-build/msys2-win32.sh + env: + CHERE_INVOKING: yes + MSYS2_ARCH: x86_64 + displayName: Compile libsodium + - task: PublishBuildArtifacts@1 + condition: not(canceled()) + inputs: + pathToPublish: libsodium-win32 + artifactName: libsodium-win32 diff --git a/components/espressif__libsodium/libsodium/build.zig b/components/espressif__libsodium/libsodium/build.zig new file mode 100644 index 0000000..3e8fc2b --- /dev/null +++ b/components/espressif__libsodium/libsodium/build.zig @@ -0,0 +1,305 @@ +const std = @import("std"); +const fmt = std.fmt; +const fs = std.fs; +const heap = std.heap; +const mem = std.mem; +const LibExeObjStep = std.build.LibExeObjStep; +const Target = std.Target; + +pub fn build(b: *std.build.Builder) !void { + const root_path = b.pathFromRoot("."); + var cwd = try fs.openDirAbsolute(root_path, .{}); + defer cwd.close(); + + const src_path = "src/libsodium"; + const src_dir = try fs.Dir.openIterableDir(cwd, src_path, .{ .no_follow = true }); + + var target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const enable_benchmarks = b.option(bool, "enable_benchmarks", "Whether tests should be benchmarks.") orelse false; + const benchmarks_iterations = b.option(u32, "iterations", "Number of iterations for benchmarks.") orelse 200; + var build_static = b.option(bool, "static", "Build libsodium as a static library.") orelse true; + const build_shared = b.option(bool, "shared", "Build libsodium as a shared library.") orelse true; + + const build_tests = b.option(bool, "test", "Build the tests (implies -Dstatic=true)") orelse true; + + if (build_tests) { + build_static = true; + } + + switch (target.getCpuArch()) { + // Features we assume are always available because they won't affect + // code generation in files that don't use them. + .x86_64 => { + target.cpu_features_add.addFeature(@intFromEnum(Target.x86.Feature.aes)); + target.cpu_features_add.addFeature(@intFromEnum(Target.x86.Feature.pclmul)); + target.cpu_features_add.addFeature(@intFromEnum(Target.x86.Feature.rdrnd)); + }, + .aarch64, .aarch64_be => { + target.cpu_features_add.addFeature(@intFromEnum(Target.aarch64.Feature.crypto)); + // ARM CPUs supported by Windows also support NEON. + if (target.isWindows()) { + target.cpu_features_add.addFeature(@intFromEnum(Target.aarch64.Feature.neon)); + } + }, + else => {}, + } + + const static_lib = b.addStaticLibrary(.{ + .name = "sodium", + .target = target, + .optimize = optimize, + }); + const shared_lib = b.addSharedLibrary(.{ + .name = if (target.isWindows()) "sodium_shared" else "sodium", + .target = target, + .optimize = optimize, + }); + + // work out which libraries we are building + var libs = std.ArrayList(*LibExeObjStep).init(b.allocator); + defer libs.deinit(); + if (build_static) { + try libs.append(static_lib); + } + if (build_shared) { + try libs.append(shared_lib); + } + + const prebuilt_version_file_path = "builds/msvc/version.h"; + const version_file_path = "include/sodium/version.h"; + + if (src_dir.dir.access(version_file_path, .{ .mode = .read_only })) {} else |_| { + try cwd.copyFile(prebuilt_version_file_path, src_dir.dir, version_file_path, .{}); + } + + for (libs.items) |lib| { + if (lib.isDynamicLibrary() and + !(target.isDarwin() or target.isDragonFlyBSD() or target.isFreeBSD() or + target.isLinux() or target.isNetBSD() or target.isOpenBSD() or target.isWindows())) + { + continue; + } + if (optimize != .Debug and !target.isWindows() and !lib.isStaticLibrary()) { + lib.strip = true; + } + b.installArtifact(lib); + lib.installHeader(src_path ++ "/include/sodium.h", "sodium.h"); + lib.installHeadersDirectory(src_path ++ "/include/sodium", "sodium"); + lib.linkLibC(); + + lib.addIncludePath(.{ .path = "src/libsodium/include/sodium" }); + lib.defineCMacro("_GNU_SOURCE", "1"); + lib.defineCMacro("CONFIGURED", "1"); + lib.defineCMacro("DEV_MODE", "1"); + lib.defineCMacro("HAVE_ATOMIC_OPS", "1"); + lib.defineCMacro("HAVE_C11_MEMORY_FENCES", "1"); + lib.defineCMacro("HAVE_CET_H", "1"); + lib.defineCMacro("HAVE_GCC_MEMORY_FENCES", "1"); + lib.defineCMacro("HAVE_INLINE_ASM", "1"); + lib.defineCMacro("HAVE_INTTYPES_H", "1"); + lib.defineCMacro("HAVE_STDINT_H", "1"); + lib.defineCMacro("HAVE_TI_MODE", "1"); + + if (target.cpu_arch) |arch| { + switch (arch.endian()) { + .Big => lib.defineCMacro("NATIVE_BIG_ENDIAN", "1"), + .Little => lib.defineCMacro("NATIVE_LITTLE_ENDIAN", "1"), + } + } + + switch (target.getOsTag()) { + .linux => { + lib.defineCMacro("ASM_HIDE_SYMBOL", ".hidden"); + lib.defineCMacro("TLS", "_Thread_local"); + + lib.defineCMacro("HAVE_CATCHABLE_ABRT", "1"); + lib.defineCMacro("HAVE_CATCHABLE_SEGV", "1"); + lib.defineCMacro("HAVE_CLOCK_GETTIME", "1"); + lib.defineCMacro("HAVE_GETPID", "1"); + lib.defineCMacro("HAVE_INLINE_ASM", "1"); + lib.defineCMacro("HAVE_MADVISE", "1"); + lib.defineCMacro("HAVE_MLOCK", "1"); + lib.defineCMacro("HAVE_MMAP", "1"); + lib.defineCMacro("HAVE_MPROTECT", "1"); + lib.defineCMacro("HAVE_NANOSLEEP", "1"); + lib.defineCMacro("HAVE_POSIX_MEMALIGN", "1"); + lib.defineCMacro("HAVE_PTHREAD_PRIO_INHERIT", "1"); + lib.defineCMacro("HAVE_PTHREAD", "1"); + lib.defineCMacro("HAVE_RAISE", "1"); + lib.defineCMacro("HAVE_SYSCONF", "1"); + lib.defineCMacro("HAVE_SYS_AUXV_H", "1"); + lib.defineCMacro("HAVE_SYS_MMAN_H", "1"); + lib.defineCMacro("HAVE_SYS_PARAM_H", "1"); + lib.defineCMacro("HAVE_SYS_RANDOM_H", "1"); + lib.defineCMacro("HAVE_WEAK_SYMBOLS", "1"); + }, + .windows => { + lib.defineCMacro("HAVE_RAISE", "1"); + lib.defineCMacro("HAVE_SYS_PARAM_H", "1"); + if (lib.isStaticLibrary()) { + lib.defineCMacro("SODIUM_STATIC", "1"); + } + }, + .macos => { + lib.defineCMacro("ASM_HIDE_SYMBOL", ".private_extern"); + lib.defineCMacro("TLS", "_Thread_local"); + + lib.defineCMacro("HAVE_ARC4RANDOM", "1"); + lib.defineCMacro("HAVE_ARC4RANDOM_BUF", "1"); + lib.defineCMacro("HAVE_CATCHABLE_ABRT", "1"); + lib.defineCMacro("HAVE_CATCHABLE_SEGV", "1"); + lib.defineCMacro("HAVE_CLOCK_GETTIME", "1"); + lib.defineCMacro("HAVE_GETENTROPY", "1"); + lib.defineCMacro("HAVE_GETPID", "1"); + lib.defineCMacro("HAVE_MADVISE", "1"); + lib.defineCMacro("HAVE_MEMSET_S", "1"); + lib.defineCMacro("HAVE_MLOCK", "1"); + lib.defineCMacro("HAVE_MMAP", "1"); + lib.defineCMacro("HAVE_MPROTECT", "1"); + lib.defineCMacro("HAVE_NANOSLEEP", "1"); + lib.defineCMacro("HAVE_POSIX_MEMALIGN", "1"); + lib.defineCMacro("HAVE_PTHREAD", "1"); + lib.defineCMacro("HAVE_PTHREAD_PRIO_INHERIT", "1"); + lib.defineCMacro("HAVE_RAISE", "1"); + lib.defineCMacro("HAVE_SYSCONF", "1"); + lib.defineCMacro("HAVE_SYS_MMAN_H", "1"); + lib.defineCMacro("HAVE_SYS_PARAM_H", "1"); + lib.defineCMacro("HAVE_SYS_RANDOM_H", "1"); + lib.defineCMacro("HAVE_WEAK_SYMBOLS", "1"); + }, + .wasi => { + lib.defineCMacro("HAVE_ARC4RANDOM", "1"); + lib.defineCMacro("HAVE_ARC4RANDOM_BUF", "1"); + lib.defineCMacro("HAVE_CLOCK_GETTIME", "1"); + lib.defineCMacro("HAVE_GETENTROPY", "1"); + lib.defineCMacro("HAVE_NANOSLEEP", "1"); + lib.defineCMacro("HAVE_POSIX_MEMALIGN", "1"); + lib.defineCMacro("HAVE_SYS_AUXV_H", "1"); + lib.defineCMacro("HAVE_SYS_PARAM_H", "1"); + lib.defineCMacro("HAVE_SYS_RANDOM_H", "1"); + }, + else => {}, + } + + switch (target.getCpuArch()) { + .x86_64 => { + lib.defineCMacro("HAVE_AMD64_ASM", "1"); + lib.defineCMacro("HAVE_AVX_ASM", "1"); + lib.defineCMacro("HAVE_CPUID", "1"); + lib.defineCMacro("HAVE_MMINTRIN_H", "1"); + lib.defineCMacro("HAVE_EMMINTRIN_H", "1"); + + const cpu_features = target.getCpuFeatures(); + const has_sse3 = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.sse3)); + const has_ssse3 = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.ssse3)); + const has_sse4_1 = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.sse4_1)); + const has_avx = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.avx)); + const has_avx2 = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.avx2)); + const has_avx512f = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.avx512f)); + const has_aes = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.aes)); + const has_pclmul = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.pclmul)); + const has_rdrnd = cpu_features.isEnabled(@intFromEnum(Target.x86.Feature.rdrnd)); + + if (has_sse3) lib.defineCMacro("HAVE_PMMINTRIN_H", "1"); + if (has_ssse3) lib.defineCMacro("HAVE_TMMINTRIN_H", "1"); + if (has_sse4_1) lib.defineCMacro("HAVE_SMMINTRIN_H", "1"); + if (has_avx) lib.defineCMacro("HAVE_AVXINTRIN_H", "1"); + if (has_avx2) lib.defineCMacro("HAVE_AVX2INTRIN_H", "1"); + if (has_avx512f) lib.defineCMacro("HAVE_AVX512FINTRIN_H", "1"); + if (has_aes and has_pclmul) lib.defineCMacro("HAVE_WMMINTRIN_H", "1"); + if (has_rdrnd) lib.defineCMacro("HAVE_RDRAND", "1"); + }, + .aarch64, .aarch64_be => { + const cpu_features = target.getCpuFeatures(); + const has_neon = cpu_features.isEnabled(@intFromEnum(Target.aarch64.Feature.neon)); + const has_crypto = cpu_features.isEnabled(@intFromEnum(Target.aarch64.Feature.crypto)); + if (has_neon and has_crypto) { + lib.defineCMacro("HAVE_ARMCRYPTO", "1"); + } + }, + .wasm32, .wasm64 => { + lib.defineCMacro("__wasm__", "1"); + }, + else => {}, + } + + switch (target.getOsTag()) { + .wasi => { + lib.defineCMacro("__wasi__", "1"); + }, + else => {}, + } + + switch (target.getCpuArch()) { + .x86_64 => { + lib.target.cpu_features_add.addFeature(@intFromEnum(Target.x86.Feature.sse4_1)); + lib.target.cpu_features_add.addFeature(@intFromEnum(Target.x86.Feature.aes)); + lib.target.cpu_features_add.addFeature(@intFromEnum(Target.x86.Feature.pclmul)); + }, + else => {}, + } + + var allocator = heap.page_allocator; + var walker = try src_dir.walk(allocator); + while (try walker.next()) |entry| { + const name = entry.basename; + if (mem.endsWith(u8, name, ".c")) { + const full_path = try fmt.allocPrint(allocator, "{s}/{s}", .{ src_path, entry.path }); + lib.addCSourceFiles(&.{full_path}, &.{ + "-fvisibility=hidden", + "-fno-strict-aliasing", + "-fno-strict-overflow", + "-fwrapv", + "-flax-vector-conversions", + }); + } else if (mem.endsWith(u8, name, ".S")) { + const full_path = try fmt.allocPrint(allocator, "{s}/{s}", .{ src_path, entry.path }); + lib.addAssemblyFile(.{ .path = full_path }); + } + } + } + + const test_path = "test/default"; + const out_bin_path = "zig-out/bin"; + const test_dir = try fs.Dir.openIterableDir(cwd, test_path, .{ .no_follow = true }); + fs.Dir.makePath(cwd, out_bin_path) catch {}; + const out_bin_dir = try fs.Dir.openDir(cwd, out_bin_path, .{}); + try test_dir.dir.copyFile("run.sh", out_bin_dir, "run.sh", .{}); + var allocator = heap.page_allocator; + var walker = try test_dir.walk(allocator); + if (build_tests) { + while (try walker.next()) |entry| { + const name = entry.basename; + if (mem.endsWith(u8, name, ".exp")) { + try test_dir.dir.copyFile(name, out_bin_dir, name, .{}); + continue; + } + if (!mem.endsWith(u8, name, ".c")) { + continue; + } + const exe_name = name[0 .. name.len - 2]; + var exe = b.addExecutable(.{ + .name = exe_name, + .target = target, + .optimize = optimize, + }); + exe.linkLibC(); + exe.strip = true; + exe.linkLibrary(static_lib); + exe.addIncludePath(.{ .path = "src/libsodium/include" }); + exe.addIncludePath(.{ .path = "test/quirks" }); + const full_path = try fmt.allocPrint(allocator, "{s}/{s}", .{ test_path, entry.path }); + exe.addCSourceFiles(&.{full_path}, &.{}); + + if (enable_benchmarks) { + exe.defineCMacro("BENCHMARKS", "1"); + var buf: [16]u8 = undefined; + exe.defineCMacro("ITERATIONS", std.fmt.bufPrintIntToSlice(&buf, benchmarks_iterations, 10, .lower, .{})); + } + + b.installArtifact(exe); + } + } +} diff --git a/components/espressif__libsodium/libsodium/builds/.gitignore b/components/espressif__libsodium/libsodium/builds/.gitignore new file mode 100644 index 0000000..878f1a3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/.gitignore @@ -0,0 +1,7 @@ +*.opensdf +*.suo +*.sdf +*.vcxproj.user +*.aps +*.log +!build \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/Makefile.am b/components/espressif__libsodium/libsodium/builds/Makefile.am new file mode 100644 index 0000000..2729301 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/Makefile.am @@ -0,0 +1,79 @@ +EXTRA_DIST = \ + msvc/build/buildall.bat \ + msvc/build/buildbase.bat \ + msvc/properties/Common.props \ + msvc/properties/Debug.props \ + msvc/properties/DebugDEXE.props \ + msvc/properties/DebugDLL.props \ + msvc/properties/DebugLEXE.props \ + msvc/properties/DebugLIB.props \ + msvc/properties/DebugLTCG.props \ + msvc/properties/DebugSEXE.props \ + msvc/properties/DLL.props \ + msvc/properties/EXE.props \ + msvc/properties/LIB.props \ + msvc/properties/Link.props \ + msvc/properties/LTCG.props \ + msvc/properties/Messages.props \ + msvc/properties/Output.props \ + msvc/properties/Release.props \ + msvc/properties/ReleaseDEXE.props \ + msvc/properties/ReleaseDLL.props \ + msvc/properties/ReleaseLEXE.props \ + msvc/properties/ReleaseLIB.props \ + msvc/properties/ReleaseLTCG.props \ + msvc/properties/ReleaseSEXE.props \ + msvc/properties/Win32.props \ + msvc/properties/x64.props \ + msvc/resource.h \ + msvc/resource.rc \ + msvc/version.h \ + msvc/vs2010/libsodium/libsodium.props \ + msvc/vs2010/libsodium/libsodium.vcxproj \ + msvc/vs2010/libsodium/libsodium.vcxproj.filters \ + msvc/vs2010/libsodium/libsodium.xml \ + msvc/vs2010/libsodium.import.props \ + msvc/vs2010/libsodium.import.xml \ + msvc/vs2010/libsodium.sln \ + msvc/vs2012/libsodium/libsodium.props \ + msvc/vs2012/libsodium/libsodium.vcxproj \ + msvc/vs2012/libsodium/libsodium.vcxproj.filters \ + msvc/vs2012/libsodium/libsodium.xml \ + msvc/vs2012/libsodium.import.props \ + msvc/vs2012/libsodium.import.xml \ + msvc/vs2012/libsodium.sln \ + msvc/vs2013/libsodium/libsodium.props \ + msvc/vs2013/libsodium/libsodium.vcxproj \ + msvc/vs2013/libsodium/libsodium.vcxproj.filters \ + msvc/vs2013/libsodium/libsodium.xml \ + msvc/vs2013/libsodium.import.props \ + msvc/vs2013/libsodium.import.xml \ + msvc/vs2013/libsodium.sln \ + msvc/vs2015/libsodium/libsodium.props \ + msvc/vs2015/libsodium/libsodium.vcxproj \ + msvc/vs2015/libsodium/libsodium.vcxproj.filters \ + msvc/vs2015/libsodium/libsodium.xml \ + msvc/vs2015/libsodium.import.props \ + msvc/vs2015/libsodium.import.xml \ + msvc/vs2015/libsodium.sln \ + msvc/vs2017/libsodium/libsodium.props \ + msvc/vs2017/libsodium/libsodium.vcxproj \ + msvc/vs2017/libsodium/libsodium.vcxproj.filters \ + msvc/vs2017/libsodium/libsodium.xml \ + msvc/vs2017/libsodium.import.props \ + msvc/vs2017/libsodium.import.xml \ + msvc/vs2017/libsodium.sln \ + msvc/vs2019/libsodium/libsodium.props \ + msvc/vs2019/libsodium/libsodium.vcxproj \ + msvc/vs2019/libsodium/libsodium.vcxproj.filters \ + msvc/vs2019/libsodium/libsodium.xml \ + msvc/vs2019/libsodium.import.props \ + msvc/vs2019/libsodium.import.xml \ + msvc/vs2022/libsodium.sln \ + msvc/vs2022/libsodium/libsodium.props \ + msvc/vs2022/libsodium/libsodium.vcxproj \ + msvc/vs2022/libsodium/libsodium.vcxproj.filters \ + msvc/vs2022/libsodium/libsodium.xml \ + msvc/vs2022/libsodium.import.props \ + msvc/vs2022/libsodium.import.xml \ + msvc/vs2022/libsodium.sln diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ARM64.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ARM64.props new file mode 100644 index 0000000..a5b8f54 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ARM64.props @@ -0,0 +1,23 @@ + + + + + <_PropertySheetDisplayName>ARM64 Settings + + + + + WIN32;_WIN32;WIN64;_WIN64;%(PreprocessorDefinitions) + + + ARM64;%(PreprocessorDefinitions) + + + MachineARM64 + + + /MACHINE:ARM64 %(AdditionalOptions) + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Common.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Common.props new file mode 100644 index 0000000..72588d6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Common.props @@ -0,0 +1,21 @@ + + + + + <_PropertySheetDisplayName>Common Settings + Unicode + + + + + + + + + true + UNICODE;_UNICODE;%(PreprocessorDefinitions) + Level3 + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DLL.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DLL.props new file mode 100644 index 0000000..b5aa1f0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DLL.props @@ -0,0 +1,16 @@ + + + + + <_PropertySheetDisplayName>Dynamic Library + dynamic + .dll + + + + + _DLL;_WINDLL;%(PreprocessorDefinitions) + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Debug.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Debug.props new file mode 100644 index 0000000..6fa7419 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Debug.props @@ -0,0 +1,29 @@ + + + + + + + + + <_PropertySheetDisplayName>Debug Settings + Debug + + + + + EnableFastChecks + ProgramDatabase + true + Disabled + _DEBUG;%(PreprocessorDefinitions) + + + _DEBUG;%(PreprocessorDefinitions) + + + true + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDEXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDEXE.props new file mode 100644 index 0000000..fe8b577 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDEXE.props @@ -0,0 +1,21 @@ + + + + + <_PropertySheetDisplayName>Console Debug Dynamic + dynamic + + + + + + + + + + MultiThreadedDebugDLL + true + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDLL.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDLL.props new file mode 100644 index 0000000..a451d0b --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugDLL.props @@ -0,0 +1,20 @@ + + + + + <_PropertySheetDisplayName>Dynamic Debug Library + + + + + + + + + + MultiThreadedDebugDLL + true + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLEXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLEXE.props new file mode 100644 index 0000000..7fa92c0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLEXE.props @@ -0,0 +1,20 @@ + + + + + <_PropertySheetDisplayName>Console Debug Link Time Code Generation + + + + + + + + + + + MultiThreadedDebug + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLIB.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLIB.props new file mode 100644 index 0000000..86eb044 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLIB.props @@ -0,0 +1,21 @@ + + + + + <_PropertySheetDisplayName>Static Debug Library + + + + + + + + + + ProgramDatabase + MultiThreadedDebug + true + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLTCG.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLTCG.props new file mode 100644 index 0000000..42b22ff --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugLTCG.props @@ -0,0 +1,20 @@ + + + + + <_PropertySheetDisplayName>Static Debug Link Time Code Generation Library + + + + + + + + + + OldStyle + MultiThreadedDebug + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugSEXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugSEXE.props new file mode 100644 index 0000000..2615ffc --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/DebugSEXE.props @@ -0,0 +1,21 @@ + + + + + <_PropertySheetDisplayName>Console Debug Static + static + + + + + + + + + + MultiThreadedDebug + true + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/EXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/EXE.props new file mode 100644 index 0000000..3549064 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/EXE.props @@ -0,0 +1,17 @@ + + + + + <_PropertySheetDisplayName>Console Application + true + + + + + _CONSOLE;%(PreprocessorDefinitions) + + + Console + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/LIB.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/LIB.props new file mode 100644 index 0000000..3835777 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/LIB.props @@ -0,0 +1,16 @@ + + + + + <_PropertySheetDisplayName>Static Library + static + .lib + + + + + _LIB;%(PreprocessorDefinitions) + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/LTCG.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/LTCG.props new file mode 100644 index 0000000..0229293 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/LTCG.props @@ -0,0 +1,13 @@ + + + + + <_PropertySheetDisplayName>Link Time Code Generation Library + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Link.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Link.props new file mode 100644 index 0000000..db15fbb --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Link.props @@ -0,0 +1,21 @@ + + + + + <_PropertySheetDisplayName>Link Time Code Generation Settings + ltcg + + + + + true + + + UseLinkTimeCodeGeneration + + + true + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Messages.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Messages.props new file mode 100644 index 0000000..06a1ab0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Messages.props @@ -0,0 +1,15 @@ + + + + + <_PropertySheetDisplayName>Build Messages + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Output.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Output.props new file mode 100644 index 0000000..492876c --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Output.props @@ -0,0 +1,30 @@ + + + + + <_PropertySheetDisplayName>Output Settings + + $(ProjectDir)..\..\ + $(ProjectDir)..\..\..\..\ + $(ProjectDir)..\..\..\..\..\ + $(ProjectDir)..\..\..\..\bin\$(PlatformName)\$(DebugOrRelease)\$(PlatformToolset)\$(DefaultLinkage)\ + $(ProjectDir)..\..\..\..\obj\$(TargetName)\$(PlatformName)\$(DebugOrRelease)\$(PlatformToolset)\$(DefaultLinkage)\ + $(OutDir) + $(TargetName) + $(TargetDir)$(TargetName)$(TargetExt) + + + + + $(OutDir)$(TargetName).lib + + + $(OutDir)$(TargetName).log + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Release.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Release.props new file mode 100644 index 0000000..1f754ca --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Release.props @@ -0,0 +1,41 @@ + + + + + + + + + <_PropertySheetDisplayName>Release Settings + Release + false + + + + + /Oy- %(AdditionalOptions) + ProgramDatabase + true + true + OnlyExplicitInline + false + MaxSpeed + NDEBUG;%(PreprocessorDefinitions) + + + NDEBUG;%(PreprocessorDefinitions) + + + true + + true + + + + + + StreamingSIMDExtensions2 + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDEXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDEXE.props new file mode 100644 index 0000000..73deeae --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDEXE.props @@ -0,0 +1,20 @@ + + + + + <_PropertySheetDisplayName>Console Release Dynamic + dynamic + + + + + + + + + + MultiThreadedDLL + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDLL.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDLL.props new file mode 100644 index 0000000..2071b33 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseDLL.props @@ -0,0 +1,19 @@ + + + + + <_PropertySheetDisplayName>Dynamic Release Library + + + + + + + + + + MultiThreadedDLL + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLEXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLEXE.props new file mode 100644 index 0000000..beb73ef --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLEXE.props @@ -0,0 +1,20 @@ + + + + + <_PropertySheetDisplayName>Console Release Link Time Code Generation + + + + + + + + + + + MultiThreaded + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLIB.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLIB.props new file mode 100644 index 0000000..2b250d5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLIB.props @@ -0,0 +1,19 @@ + + + + + <_PropertySheetDisplayName>Static Release Library + + + + + + + + + + MultiThreaded + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLTCG.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLTCG.props new file mode 100644 index 0000000..1814c6f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseLTCG.props @@ -0,0 +1,19 @@ + + + + + <_PropertySheetDisplayName>Static Release Link Time Code Generation Library + + + + + + + + + + MultiThreaded + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseSEXE.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseSEXE.props new file mode 100644 index 0000000..2f5600a --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/ReleaseSEXE.props @@ -0,0 +1,20 @@ + + + + + <_PropertySheetDisplayName>Console Release Static + static + + + + + + + + + + MultiThreaded + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/Win32.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/Win32.props new file mode 100644 index 0000000..09eb5e4 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/Win32.props @@ -0,0 +1,23 @@ + + + + + <_PropertySheetDisplayName>x86 Settings + + + + + WIN32;_WIN32;%(PreprocessorDefinitions) + + + Win32;%(PreprocessorDefinitions) + + + MachineX86 + + + /MACHINE:X86 %(AdditionalOptions) + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/properties/x64.props b/components/espressif__libsodium/libsodium/builds/msvc/properties/x64.props new file mode 100644 index 0000000..c139a2a --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/properties/x64.props @@ -0,0 +1,26 @@ + + + + + <_PropertySheetDisplayName>x64 Settings + + + + + + WIN32;_WIN32;WIN64;_WIN64;%(PreprocessorDefinitions) + + + x64;%(PreprocessorDefinitions) + + + MachineX64 + + + /MACHINE:X64 %(AdditionalOptions) + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/resource.h b/components/espressif__libsodium/libsodium/builds/msvc/resource.h new file mode 100644 index 0000000..d42b43e --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Resource.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/components/espressif__libsodium/libsodium/builds/msvc/resource.rc b/components/espressif__libsodium/libsodium/builds/msvc/resource.rc new file mode 100644 index 0000000..d9118a0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/resource.rc @@ -0,0 +1,65 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" +#include "windows.h" + +//specify the version numbers for the dll's +#define LIBSODIUM_VERSION_STRING "1.0.19.0" +#define LIBSODIUM_VERSION_BIN 1,0,19,0 + +//specify the product name for the dlls based on the platform we are compiling for +#if defined(x64) + #define LIBSODIUM_PRODUCT_NAME "libsodium (x64)" +#elif defined(Win32) + #define LIBSODIUM_PRODUCT_NAME "libsodium (x86)" +#elif defined(ARM64) + #define LIBSODIUM_PRODUCT_NAME "libsodium (arm64)" +#else + #define LIBSODIUM_PRODUCT_NAME "libsodium" +#endif + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION LIBSODIUM_VERSION_BIN + PRODUCTVERSION LIBSODIUM_VERSION_BIN + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x7L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "FileDescription", "The Sodium crypto library (libsodium)" + VALUE "FileVersion", LIBSODIUM_VERSION_STRING + VALUE "InternalName", "libsodium" + VALUE "LegalCopyright", "Copyright (c) 2013-2023 The libsodium authors." + VALUE "OriginalFilename", "libsodium.dll" + VALUE "ProductName", LIBSODIUM_PRODUCT_NAME + VALUE "ProductVersion", LIBSODIUM_VERSION_STRING + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// diff --git a/components/espressif__libsodium/libsodium/builds/msvc/version.h b/components/espressif__libsodium/libsodium/builds/msvc/version.h new file mode 100644 index 0000000..c4d5e19 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.19" + +#define SODIUM_LIBRARY_VERSION_MAJOR 26 +#define SODIUM_LIBRARY_VERSION_MINOR 1 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.sln new file mode 100644 index 0000000..6a0a970 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium.sln @@ -0,0 +1,50 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..8942bb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj @@ -0,0 +1,345 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v100 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2010/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.sln new file mode 100644 index 0000000..251421a --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium.sln @@ -0,0 +1,50 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2012 for Windows Desktop +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..74463c3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj @@ -0,0 +1,345 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v110 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2012/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.sln new file mode 100644 index 0000000..28f50ca --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..cd4c4d7 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj @@ -0,0 +1,345 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v120 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2013/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.sln new file mode 100644 index 0000000..af37123 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..33414ad --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj @@ -0,0 +1,345 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v140 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2015/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.sln new file mode 100644 index 0000000..bdc9a7c --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26228.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..c1a7630 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj @@ -0,0 +1,345 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v141 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2017/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.sln new file mode 100644 index 0000000..bdc9a7c --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26228.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..66cc440 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj @@ -0,0 +1,369 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v142 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + DebugDLL + ARM64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + ReleaseDLL + ARM64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + DebugLIB + ARM64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + ReleaseLIB + ARM64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + DebugLTCG + ARM64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + ReleaseLTCG + ARM64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2019/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.props new file mode 100644 index 0000000..b3d7e4f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.props @@ -0,0 +1,52 @@ + + + + + <_PropertySheetDisplayName>Libsodium Import Settings + + + + + + + + + + + + + $(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\..\..\libsodium\src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + SODIUM_STATIC;%(PreprocessorDefinitions) + + + advapi32.lib;libsodium.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Debug\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + $(ProjectDir)..\..\..\..\..\libsodium\bin\$(PlatformName)\Release\$(PlatformToolset)\$(Linkage-libsodium)\;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.xml new file mode 100644 index 0000000..dbcf4e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.import.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.sln b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.sln new file mode 100644 index 0000000..a7ab4e2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium.sln @@ -0,0 +1,70 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26228.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium\libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DynDebug|Win32 = DynDebug|Win32 + DynDebug|x64 = DynDebug|x64 + DynDebug|ARM64 = DynDebug|ARM64 + DynRelease|Win32 = DynRelease|Win32 + DynRelease|x64 = DynRelease|x64 + DynRelease|ARM64 = DynRelease|ARM64 + LtcgDebug|Win32 = LtcgDebug|Win32 + LtcgDebug|x64 = LtcgDebug|x64 + LtcgDebug|ARM64 = LtcgDebug|ARM64 + LtcgRelease|Win32 = LtcgRelease|Win32 + LtcgRelease|x64 = LtcgRelease|x64 + LtcgRelease|ARM64 = LtcgRelease|ARM64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticDebug|ARM64 = StaticDebug|ARM64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 + StaticRelease|ARM64 = StaticRelease|ARM64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|ARM64.ActiveCfg = DebugDLL|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynDebug|ARM64.Build.0 = DebugDLL|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|x64.Build.0 = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|ARM64.ActiveCfg = ReleaseDLL|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DynRelease|ARM64.Build.0 = ReleaseDLL|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.ActiveCfg = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|Win32.Build.0 = DebugLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.ActiveCfg = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|x64.Build.0 = DebugLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|ARM64.ActiveCfg = DebugLTCG|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgDebug|ARM64.Build.0 = DebugLTCG|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.ActiveCfg = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|Win32.Build.0 = ReleaseLTCG|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.ActiveCfg = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|x64.Build.0 = ReleaseLTCG|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|ARM64.ActiveCfg = ReleaseLTCG|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.LtcgRelease|ARM64.Build.0 = ReleaseLTCG|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.ActiveCfg = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|Win32.Build.0 = DebugLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.ActiveCfg = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|x64.Build.0 = DebugLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.ActiveCfg = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|Win32.Build.0 = ReleaseLIB|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|ARM64.ActiveCfg = ReleaseLIB|ARM64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.StaticRelease|ARM64.Build.0 = ReleaseLIB|ARM64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.props b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.props new file mode 100644 index 0000000..5a23903 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.props @@ -0,0 +1,48 @@ + + + + + <_PropertySheetDisplayName>Libsodium Common Settings + AllRules.ruleset + false + + + + + + + + + + + + + copy "$(BuildRoot)version.h" "$(RepoRoot)src\libsodium\include\sodium\" + + + $(RepoRoot)src\libsodium\include;$(RepoRoot)src\libsodium\include\sodium\;%(AdditionalIncludeDirectories) + 4146;4244;%(DisableSpecificWarnings) + false + inline=__inline;NATIVE_LITTLE_ENDIAN;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + SODIUM_STATIC;%(PreprocessorDefinitions) + SODIUM_DLL_EXPORT;%(PreprocessorDefinitions) + HAVE_AMD64_ASM;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + advapi32.lib + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj new file mode 100644 index 0000000..2fcd78b --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj @@ -0,0 +1,369 @@ + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + libsodium + v143 + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + DebugDLL + ARM64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + ReleaseDLL + ARM64 + + + DebugLIB + Win32 + + + DebugLIB + x64 + + + DebugLIB + ARM64 + + + ReleaseLIB + Win32 + + + ReleaseLIB + x64 + + + ReleaseLIB + ARM64 + + + DebugLTCG + Win32 + + + DebugLTCG + x64 + + + DebugLTCG + ARM64 + + + ReleaseLTCG + Win32 + + + ReleaseLTCG + x64 + + + ReleaseLTCG + ARM64 + + + + StaticLibrary + DynamicLibrary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters new file mode 100644 index 0000000..8eb393f --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters @@ -0,0 +1,1085 @@ + + + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + packaging + + + + + + + + crypto_generichash + + + crypto_generichash\blake2b + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_kx + + + crypto_sign + + + crypto_sign\ed25519 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_sign\ed25519\ref10 + + + crypto_secretbox + + + crypto_secretbox + + + crypto_secretbox\xsalsa20poly1305 + + + crypto_secretbox\xchacha20poly1305 + + + crypto_pwhash + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256\nosse + + + crypto_pwhash\scryptsalsa208sha256\sse + + + crypto_verify + + + crypto_auth + + + crypto_auth\hmacsha512 + + + crypto_auth\hmacsha512256 + + + crypto_auth\hmacsha256 + + + crypto_kdf + + + crypto_kdf\blake2b + + + crypto_kdf\hkdf + + + crypto_kdf\hkdf + + + crypto_shorthash + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24 + + + crypto_shorthash\siphash24\ref + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult + + + crypto_scalarmult\ristretto255\ref10 + + + crypto_scalarmult\ed25519\ref10 + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + randombytes + + + randombytes\sysrandom + + + randombytes\internal + + + crypto_box + + + crypto_box + + + crypto_box + + + crypto_box\curve25519xsalsa20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + crypto_box\curve25519xchacha20poly1305 + + + sodium + + + sodium + + + sodium + + + sodium + + + sodium + + + crypto_stream + + + crypto_stream\xchacha20 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_stream\salsa2012 + + + crypto_stream\salsa2012\ref + + + crypto_stream\salsa208 + + + crypto_stream\salsa208\ref + + + crypto_stream\xsalsa20 + + + crypto_hash + + + crypto_hash\sha512 + + + crypto_hash\sha512\cp + + + crypto_hash\sha256 + + + crypto_hash\sha256\cp + + + crypto_aead\xchacha20poly1305 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aes256gcm + + + crypto_aead\aes256gcm\aesni + + + crypto_aead\aes256gcm\armcrypto + + + crypto_aead\chacha20poly1305 + + + crypto_secretstream\xchacha20poly1305 + + + crypto_core\salsa\ref + + + crypto_core\hchacha20 + + + crypto_core\hsalsa20 + + + crypto_core\hsalsa20\ref2 + + + crypto_core\softaes + + + crypto_core\ed25519 + + + crypto_core\ed25519 + + + crypto_core\ed25519\ref10 + + + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_generichash\blake2b\ref + + + crypto_sign\ed25519\ref10 + + + include + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + include\sodium\private + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\argon2 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_pwhash\scryptsalsa208sha256 + + + crypto_shorthash\siphash24\ref + + + crypto_scalarmult\curve25519 + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\sandy2x + + + crypto_scalarmult\curve25519\ref10 + + + crypto_onetimeauth\poly1305 + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\donna + + + crypto_onetimeauth\poly1305\sse2 + + + crypto_stream\chacha20 + + + crypto_stream\chacha20\ref + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\chacha20\dolbeau + + + crypto_stream\salsa20 + + + crypto_stream\salsa20\ref + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6int + + + crypto_stream\salsa20\xmm6 + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis128l + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_aead\aegis256 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_25_5 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + crypto_core\ed25519\ref10\fe_51 + + + + + {a6837e41-3751-38c9-bb90-dd59d5f4af7b} + + + {9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab} + + + {6897a4cc-0091-3970-b712-c0ac75c16b67} + + + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} + + + {7eb51140-a50f-3f50-b379-83677a82496c} + + + {507bb9aa-b65c-3034-946b-bcd375b7deaa} + + + {1f4d6dd1-517f-3eeb-b974-2304ada5e67a} + + + {3122f223-e6c2-3ab1-ad85-ca289b47419e} + + + {0a3af0f3-56f7-3551-a64e-6284feccc423} + + + {64e89b4f-eec9-38c9-90f2-4881bf5e84c0} + + + {0c0b4001-ae11-3d0f-8e73-75ac9b6e1ae8} + + + {f5065d74-beda-3e1e-819a-f606279c7fe9} + + + {f7aedb93-94a6-3ede-9374-ff41daca4841} + + + {0e7473c9-9c69-36b3-ab6c-d953647a15a6} + + + {d75db64c-eb08-3f10-9b99-1b6e6827f348} + + + {73194d5d-588a-342f-bee6-f28b4486f20b} + + + {7c5e6f81-e4ce-3018-a776-a1f125072d73} + + + {76990c08-d692-367f-b286-c728a8cad6bf} + + + {bf04f786-7862-3bde-aeba-ed82ee59ca22} + + + {98b6126a-3725-3707-a4cc-ff3af657cba0} + + + {8b704d11-af1f-30c0-9981-479da6d88dc3} + + + {342e684b-4e18-311c-953c-8391a544a04f} + + + {c6b8e28c-7c54-3af7-bee3-2948ba7b2082} + + + {4e9a1d6b-ee07-3bbc-ad78-6d0ba0e6d9d3} + + + {eb259fd9-56f0-32db-a903-6bc1549a7326} + + + {05997596-e3d7-3bf1-ad4d-39e4c5fd56f6} + + + {e53b6258-fcdd-34c8-96c5-44510a34a390} + + + {8bd3b558-2d08-3c3a-81ca-22677dde943b} + + + {16a8dd41-b0ab-39a7-80c8-3052d8b63811} + + + {d7ec3690-bae7-3653-8c53-66a3142cfcfa} + + + {722ef422-8c03-3008-ba2a-3a7e91c6647c} + + + {8c7d8b62-7b4f-3eb9-85b7-18e8d925be14} + + + {8fb6a906-dbd6-3746-9b0f-f49e7028daec} + + + {f2d6a22b-dd67-3561-90a4-88696169cb7b} + + + {aaf59186-1c0d-33cf-a34d-93e14bb87226} + + + {3d42d2a2-b192-33dd-9162-508916414707} + + + {baf7d894-9298-391d-8dc2-e4c3010f5ddc} + + + {898b6bd5-1360-3a34-adcd-0fade7561685} + + + {323c0a15-3c1d-39b2-9ec1-299deb299497} + + + {52c2080d-37c0-34c2-864a-c201c728e5d8} + + + {ff618a41-caeb-3a18-ad36-d34b049a8f50} + + + {ffc3712d-dfe0-3b51-8257-f5ffc9c9cea3} + + + {f54b65b6-71cf-3ab3-9c8c-f89c81846836} + + + {1bd97a78-befa-3805-8e9c-80d7c1aff37b} + + + {e785f104-1212-37bf-8511-cc518b9ace66} + + + {447b993f-59fb-3efd-8c59-a1712c97dfe8} + + + {cdb8d233-06b0-3872-a62b-c1ccf4cb4314} + + + {402a1c5a-d499-333a-a2fa-acd0e6a3c2b2} + + + {77f5a2e9-2ef1-3a72-b63c-88e8e4b92678} + + + {6c9c7c30-0808-3fad-8a88-944d7645e5d5} + + + {5d2fb1a2-f063-32db-a81a-41f79e36fd23} + + + {7bec6074-fbc7-330b-9e18-7dc3e868569a} + + + {834d4827-81e4-3de3-baa1-a216763f11d6} + + + {52bf28eb-7ffd-399a-be35-0df3e8e99c15} + + + {39cc576f-4b54-3d71-b14c-27445bc4b138} + + + {b9b02bee-5c1f-36d2-b97d-983f865a4cc6} + + + {41f1f35b-4639-3424-be85-7dfba02f3c5e} + + + {8bf11d29-2f5a-3f10-8ae6-82229d19c5b0} + + + {62f7ae38-4ce6-3976-acc3-47c462db4fbe} + + + {e07a28cd-775a-3798-bfdb-97842d3614d6} + + + {bb073c16-adc8-3cff-80b9-99cf5a28de6c} + + + {63de0ec8-ecde-35e3-8b97-6e9e4da342ee} + + + {29925210-53eb-342c-8527-7ebc173e668f} + + + {b2f989b6-87a6-3388-a35c-2d0d59cb4236} + + + {bc6466a1-57b0-3a35-9973-ad488a4bef8c} + + + {5599d9ab-b5b2-3310-b541-ae0fb70eecf1} + + + {eaedd08a-46f8-3d12-9e8d-bb3ee3ead5f6} + + + {806b6ff3-578b-308a-a359-0f5ed8472ecc} + + + {5a1d852e-67bb-3dc1-9ec5-99ef74b7faca} + + + {33e45d9c-e12a-3e76-9ef2-4f5510244a5b} + + + {048ba2a8-b22b-346c-9886-668b63c88c68} + + + {f08a312f-f8a3-350b-87ab-1f79d33e513f} + + + {c403f690-cd22-3ed4-9cc7-3f46e73081fd} + + + {c34d03f5-cf47-39fe-a5ad-5eb917006203} + + + {4da0c5ca-33d1-34e0-9689-12e69ae2dbd6} + + + {dd6b294c-5871-386c-92ec-aa46fcc411d4} + + + {07aca978-0547-329a-b70b-29aa579cacc5} + + + {f171fa05-35c4-32a0-b035-b5d6680ab714} + + + {ede2279c-1ba7-3d62-8345-733c6c1965e7} + + + {9c15151b-10dc-3dfe-b97b-a7d8c6b58920} + + + {49fb9272-ffe2-3993-b562-b19d5f2c9b40} + + + {96da72eb-3aa0-3850-83eb-32788f91e5bd} + + + {56bb40fc-d381-3a9e-925b-681774c48dde} + + + {fde88485-0fe6-3b22-9480-1d2b49fade53} + + + {ef090484-4db4-3dc2-aca7-c59bab1db23b} + + + {14c126fd-bb91-37ea-b807-b60c386be601} + + + {ac56c38f-7e17-3b79-bf47-58e9476b3b89} + + + {5dfc520b-f690-3d5f-a86a-8b667f2e7490} + + + diff --git a/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.xml b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.xml new file mode 100644 index 0000000..808ccb9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/builds/msvc/vs2022/libsodium/libsodium.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.sln b/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.sln new file mode 100644 index 0000000..0afec29 --- /dev/null +++ b/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.sln @@ -0,0 +1,40 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsodium", "libsodium.vcxproj", "{A185B162-6CB6-4502-B03F-B56F7699A8D9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + DebugDLL|Win32 = DebugDLL|Win32 + DebugDLL|x64 = DebugDLL|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseDLL|Win32 = ReleaseDLL|Win32 + ReleaseDLL|x64 = ReleaseDLL|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Debug|Win32.ActiveCfg = Debug|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Debug|Win32.Build.0 = Debug|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Debug|x64.ActiveCfg = Debug|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Debug|x64.Build.0 = Debug|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Release|Win32.ActiveCfg = Release|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Release|Win32.Build.0 = Release|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Release|x64.ActiveCfg = Release|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.Release|x64.Build.0 = Release|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {A185B162-6CB6-4502-B03F-B56F7699A8D9}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj b/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj new file mode 100644 index 0000000..562fb91 --- /dev/null +++ b/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj @@ -0,0 +1,593 @@ + + + + + DebugDLL + Win32 + + + DebugDLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseDLL + Win32 + + + ReleaseDLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {A185B162-6CB6-4502-B03F-B56F7699A8D9} + Win32Proj + libsodium + + + + StaticLibrary + true + MultiByte + false + v140 + + + DynamicLibrary + true + MultiByte + false + v140 + + + StaticLibrary + true + MultiByte + false + v140 + + + DynamicLibrary + true + MultiByte + false + v140 + + + StaticLibrary + false + true + MultiByte + v140 + + + DynamicLibrary + false + true + MultiByte + v140 + + + StaticLibrary + false + true + MultiByte + v140 + + + DynamicLibrary + false + true + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + true + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + false + $(SolutionDir)Build\$(Configuration)\$(Platform)\ + $(SolutionDir)Build\$(Configuration)\$(Platform)\Intermediate\ + + + + + + Level3 + Disabled + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebug + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebugDLL + $(SolutionDir)..\..\;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebug + + + Console + true + + + + + + + Level3 + Disabled + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDebugDLL + + + Console + true + + + + + Level3 + + + Full + true + true + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreaded + Speed + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + Full + true + true + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDLL + Speed + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + SODIUM_STATIC;SODIUM_EXPORT=;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreaded + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + SODIUM_EXPORT=__declspec(dllexport);SODIUM_DLL_EXPORT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;%(DisableSpecificWarnings) + MultiThreadedDLL + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj.filters b/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj.filters new file mode 100644 index 0000000..4d93c6d --- /dev/null +++ b/components/espressif__libsodium/libsodium/ci/appveyor/libsodium.vcxproj.filters @@ -0,0 +1,810 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + diff --git a/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/process.bat b/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/process.bat new file mode 100644 index 0000000..963d751 --- /dev/null +++ b/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/process.bat @@ -0,0 +1,5 @@ +cscript msvc-scripts/rep.vbs //Nologo s/@VERSION@/1.0.20/ < ..\..\src\libsodium\include\sodium\version.h.in > tmp +cscript msvc-scripts/rep.vbs //Nologo s/@SODIUM_LIBRARY_VERSION_MAJOR@/28/ < tmp > tmp2 +cscript msvc-scripts/rep.vbs //Nologo s/@SODIUM_LIBRARY_VERSION_MINOR@/0/ < tmp2 > tmp3 +cscript msvc-scripts/rep.vbs //Nologo s/@SODIUM_LIBRARY_MINIMAL_DEF@// < tmp3 > ..\..\src\libsodium\include\sodium\version.h +del tmp tmp2 tmp3 diff --git a/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/rep.vbs b/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/rep.vbs new file mode 100644 index 0000000..3611f6c --- /dev/null +++ b/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/rep.vbs @@ -0,0 +1,12 @@ +Dim pat, patparts, rxp, inp +pat = WScript.Arguments(0) +patparts = Split(pat, "/") +Set rxp = new RegExp +rxp.Global = True +rxp.Multiline = False +rxp.Pattern = patparts(1) +Do While Not WScript.StdIn.AtEndOfStream + inp = WScript.StdIn.ReadLine() + WScript.Echo rxp.Replace(inp, patparts(2)) +Loop + diff --git a/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/sodium.props b/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/sodium.props new file mode 100644 index 0000000..b5665f6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/ci/appveyor/msvc-scripts/sodium.props @@ -0,0 +1,29 @@ + + + + + + + + $(SolutionDir);$(SolutionDir)..\..\src\libsodium\include\sodium;$(SolutionDir)..\..\src\libsodium\include;%(AdditionalIncludeDirectories) + true + UNICODE;_UNICODE;%(PreprocessorDefinitions) + NATIVE_LITTLE_ENDIAN=1;%(PreprocessorDefinitions) + inline=__inline;%(PreprocessorDefinitions) + + + "$(SolutionDir)\msvc-scripts\process.bat" + + + Process .in files + + + "$(SolutionDir)..\..\test\default\wintest.bat" $(Configuration) $(Platform) + + + Run the test suite + + + + diff --git a/components/espressif__libsodium/libsodium/configure.ac b/components/espressif__libsodium/libsodium/configure.ac new file mode 100644 index 0000000..df83ef5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/configure.ac @@ -0,0 +1,998 @@ +AC_PREREQ([2.69]) +AC_INIT([libsodium],[1.0.19],[https://github.com/jedisct1/libsodium/issues],[libsodium],[https://libsodium.org]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/libsodium/sodium/version.c]) +AC_CANONICAL_HOST +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE([1.11 dist-bzip2 tar-ustar foreign subdir-objects]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AM_MAINTAINER_MODE +AM_DEP_TRACK + +AC_SUBST(VERSION) + +SODIUM_LIBRARY_VERSION_MAJOR=26 +SODIUM_LIBRARY_VERSION_MINOR=1 +DLL_VERSION=26 +SODIUM_LIBRARY_VERSION=27:0:1 +# | | | +# +------+ | +---+ +# | | | +# current:revision:age +# | | | +# | | +- increment if interfaces have been added +# | | set to zero if interfaces have been removed +# | | or changed +# | +- increment if source code has changed +# | set to zero if current is incremented +# +- increment if interfaces have been added, removed or changed +AC_SUBST(SODIUM_LIBRARY_VERSION_MAJOR) +AC_SUBST(SODIUM_LIBRARY_VERSION_MINOR) +AC_SUBST(SODIUM_LIBRARY_VERSION) +AC_SUBST(DLL_VERSION) + +AC_LANG_ASSERT(C) +LX_CFLAGS=${CFLAGS-NONE} +PKGCONFIG_LIBS_PRIVATE="" + +dnl Path check + +AS_IF([pwd | fgrep ' ' > /dev/null 2>&1], + [AC_MSG_ERROR([The build directory contains whitespaces - This can cause tests/installation to fail due to limitations of some libtool versions])] +) + +sodium_CFLAGS=${CFLAGS+set} +: ${CFLAGS=""} + +AC_PROG_CC +AM_PROG_AS +AC_USE_SYSTEM_EXTENSIONS + +dnl Default optimization flags + +if test "$sodium_CFLAGS" != "set" ; then + AX_CHECK_COMPILE_FLAG([-Ofast], [CFLAGS="$CFLAGS -Ofast"], + [AX_CHECK_COMPILE_FLAG([-O3], [CFLAGS="$CFLAGS -O3"], + [AX_CHECK_COMPILE_FLAG([-O2], [CFLAGS="$CFLAGS -O2"], + [AX_CHECK_COMPILE_FLAG([-O1], [CFLAGS="$CFLAGS -O1"], + [AX_CHECK_COMPILE_FLAG([-O], [CFLAGS="$CFLAGS -O"])])])])]) +fi + +dnl Switches + +AC_ARG_ENABLE(ssp, +[AS_HELP_STRING(--disable-ssp,Do not compile with -fstack-protector)], +[ + AS_IF([test "x$enableval" = "xno"], [ + enable_ssp="no" + ], [ + enable_ssp="yes" + ]) +], +[ + enable_ssp="yes" +]) + +AC_ARG_ENABLE(asm, +[AS_HELP_STRING(--disable-asm,[Do not compile assembly code -- As a side effect, this disables CPU-specific implementations on non-Windows platforms. Only for use with targets such as WebAssembly.])], +[ + AS_IF([test "x$enableval" = "xno"], [ + enable_asm="no" + ], [ + enable_asm="yes" + ]) +], +[ + enable_asm="yes" +]) + +AS_IF([test "x$EMSCRIPTEN" != "x"], [ + AX_CHECK_COMPILE_FLAG([-s ASSERTIONS=0], [ + enable_asm="no" + AC_MSG_WARN([compiling to JavaScript - asm implementations disabled]) + ], [ + AC_MSG_WARN([EMSCRIPTEN environment variable defined, but emcc doesn't appear to be used - Assuming compilation to native code]) + CFLAGS="$CFLAGS -U__EMSCRIPTEN__" + unset EMSCRIPTEN + ]) +]) + +AC_ARG_ENABLE(pie, +[AS_HELP_STRING(--disable-pie,Do not produce position independent executables)], + enable_pie=$enableval, enable_pie="maybe") + +AS_CASE([$host_os], [mingw*|cygwin*|msys|eabi*], [enable_pie="no"]) + +AC_ARG_ENABLE(blocking-random, +[AS_HELP_STRING(--enable-blocking-random,Enable this switch only if /dev/urandom is totally broken on the target platform)], +[ + AS_IF([test "x$enableval" = "xyes"], [ + AC_DEFINE([USE_BLOCKING_RANDOM], [1], [/dev/urandom is insecure on the target platform]) + ]) +]) + +AC_ARG_ENABLE(minimal, +[AS_HELP_STRING(--enable-minimal, + [Only compile the minimum set of functions required for the high-level API])], +[ + AS_IF([test "x$enableval" = "xyes"], [ + enable_minimal="yes" + SODIUM_LIBRARY_MINIMAL_DEF="#define SODIUM_LIBRARY_MINIMAL 1" + AC_DEFINE([MINIMAL], [1], [Define for a minimal build, without deprecated functions and functions that high-level APIs depend on]) + ], [ + enable_minimal="no" + ]) +], +[ + enable_minimal="no" +]) +AM_CONDITIONAL([MINIMAL], [test x$enable_minimal = xyes]) +AC_SUBST(SODIUM_LIBRARY_MINIMAL_DEF) + +AC_ARG_WITH(pthreads, AS_HELP_STRING([--with-pthreads], + [use pthreads library, or --without-pthreads to disable threading support]), + [ ], [withval="yes"]) + +AS_IF([test "x$withval" = "xyes"], [ + AX_PTHREAD([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + ]], [[ + pthread_mutex_t mutex; + + pthread_mutex_lock(&mutex); + pthread_mutex_unlock(&mutex) + ]] + )], [ + AC_DEFINE([HAVE_PTHREAD], [1], [Define if you have POSIX threads libraries and header files]) + with_threads="yes" + LIBS="$PTHREAD_LIBS $LIBS" + PKGCONFIG_LIBS_PRIVATE="$PTHREAD_LIBS $PTHREAD_CFLAGS $PKGCONFIG_LIBS_PRIVATE" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + CC="$PTHREAD_CC" + ]) + ], + [ AC_MSG_NOTICE(pthread mutexes are not available) ] + ) +], [with_threads="no"]) + +AC_ARG_WITH(safecode, +[AS_HELP_STRING(--with-safecode,For maintainers only - please do not use)], +[AS_IF([test "x$withval" = "xyes"], [ + AC_ARG_VAR([SAFECODE_HOME], [set to the safecode base directory]) + : ${SAFECODE_HOME:=/opt/safecode} + LDFLAGS="$LDFLAGS -L${SAFECODE_HOME}/lib" + LIBS="$LIBS -lsc_dbg_rt -lpoolalloc_bitmap -lstdc++" + CFLAGS="$CFLAGS -fmemsafety" + ]) +]) + +AC_ARG_WITH(ctgrind, +[AS_HELP_STRING(--with-ctgrind,For maintainers only - please do not use)], +[AS_IF([test "x$withval" = "xyes"], [ + AC_CHECK_LIB(ctgrind, ct_poison) + ]) +]) + +AC_ARG_ENABLE(retpoline, +[AS_HELP_STRING(--enable-retpoline,Use return trampolines for indirect calls)], +[AS_IF([test "x$enableval" = "xyes"], [ + AX_CHECK_COMPILE_FLAG([-mindirect-branch=thunk-inline], + [CFLAGS="$CFLAGS -mindirect-branch=thunk-inline"], + [AX_CHECK_COMPILE_FLAG([-mretpoline], [CFLAGS="$CFLAGS -mretpoline"])] + ) + AX_CHECK_COMPILE_FLAG([-mindirect-branch-register]) + ]) +]) + +ENABLE_CWFLAGS=no +AC_ARG_ENABLE(debug, +[AS_HELP_STRING(--enable-debug,For maintainers only - please do not use)], +[ + AS_IF([test "x$enableval" = "xyes"], [ + AS_IF([test "x$LX_CFLAGS" = "xNONE"], [ + nxflags="" + for flag in `echo $CFLAGS`; do + AS_CASE([$flag], + [-O*], [ ], + [-g*], [ ], + [*], [AS_VAR_APPEND([nxflags], [" $flag"])]) + done + CFLAGS="$nxflags -O -g3" + ]) + ENABLE_CWFLAGS=yes + CPPFLAGS="$CPPFLAGS -DDEBUG=1 -U_FORTIFY_SOURCE" + ]) +]) + +AC_ARG_ENABLE(opt, +[AS_HELP_STRING(--enable-opt,Optimize for the native CPU - The resulting library will be faster but not portable)], +[ + AS_IF([test "x$enableval" = "xyes"], [ + AX_CHECK_COMPILE_FLAG([-ftree-vectorize], [CFLAGS="$CFLAGS -ftree-vectorize"]) + AX_CHECK_COMPILE_FLAG([-ftree-slp-vectorize], [CFLAGS="$CFLAGS -ftree-slp-vectorize"]) + AX_CHECK_COMPILE_FLAG([-fomit-frame-pointer], [CFLAGS="$CFLAGS -fomit-frame-pointer"]) + AX_CHECK_COMPILE_FLAG([-march=native], [CFLAGS="$CFLAGS -march=native"]) + AX_CHECK_COMPILE_FLAG([-mtune=native], [CFLAGS="$CFLAGS -mtune=native"]) + ]) +]) + +AC_SUBST(MAINT) +AC_SUBST(PKGCONFIG_LIBS_PRIVATE) + +AX_VALGRIND_CHECK + +dnl Checks + +AC_C_VARARRAYS + +AC_CHECK_DEFINE([__wasi__], [WASI="yes"], []) + +AS_CASE([$host_os], [linux-gnu], [AX_ADD_FORTIFY_SOURCE], [ ]) + +AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], + [CFLAGS="$CFLAGS -fvisibility=hidden"]) + +AS_CASE([$host_os], [cygwin*|mingw*|msys|pw32*|cegcc*|eabi*], [ ], [ + AX_CHECK_COMPILE_FLAG([-fPIC], [CFLAGS="$CFLAGS -fPIC"]) +]) + +AS_IF([test "$enable_pie" != "no"],[ + AX_CHECK_COMPILE_FLAG([-fPIE], [ + AX_CHECK_LINK_FLAG([-pie], [ + [CFLAGS="$CFLAGS -fPIE" + LDFLAGS="$LDFLAGS -pie"] + ]) + ]) +]) + +AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing], [CFLAGS="$CFLAGS -fno-strict-aliasing"]) +AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CFLAGS="$CFLAGS -fno-strict-overflow"], [ + AX_CHECK_COMPILE_FLAG([-fwrapv], [CFLAGS="$CFLAGS -fwrapv"]) +]) + +AS_IF([test "$GCC" = "yes" ], [ + AS_CASE([$host_cpu], + [i?86|amd64|x86_64], [ + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([ +#if !defined(__clang__) && defined(__GNUC__) && ((__GNUC__ << 8) | __GNUC_MINOR__) < 0x403 +# error old gcc +#endif +int main(void) { return 0; } + ])],,[ + AX_CHECK_COMPILE_FLAG([-flax-vector-conversions], [CFLAGS="$CFLAGS -flax-vector-conversions"]) + ]) + ] + ) + ]) + +LIBTOOL_OLD_FLAGS="$LIBTOOL_EXTRA_FLAGS" +LIBTOOL_EXTRA_FLAGS="$LIBTOOL_EXTRA_FLAGS -version-info $SODIUM_LIBRARY_VERSION" +AC_ARG_ENABLE(soname-versions, + [AS_HELP_STRING([--enable-soname-versions], [enable soname versions (must be disabled for Android) (default: enabled)])], + [ + AS_IF([test "x$enableval" = "xno"], [ + LIBTOOL_EXTRA_FLAGS="$LIBTOOL_OLD_FLAGS -avoid-version" + ]) + ] +) + +AS_CASE([$host_os], + [cygwin*|mingw*|msys|pw32*|cegcc*], [ + AX_CHECK_LINK_FLAG([-Wl,--dynamicbase], [LDFLAGS="$LDFLAGS -Wl,--dynamicbase"]) + AX_CHECK_LINK_FLAG([-Wl,--high-entropy-va], [LDFLAGS="$LDFLAGS -Wl,--high-entropy-va"]) + AX_CHECK_LINK_FLAG([-Wl,--nxcompat], [LDFLAGS="$LDFLAGS -Wl,--nxcompat"]) + ]) + +AS_CASE([$host_os], + [cygwin*|mingw*|msys|pw32*|cegcc*|eabi*], [ + AX_CHECK_COMPILE_FLAG([-fno-asynchronous-unwind-tables], [ + [CFLAGS="$CFLAGS -fno-asynchronous-unwind-tables"] + ]) +]) + +AS_IF([test "x$enable_ssp" != "xno"],[ + +AS_CASE([$host_os], + [cygwin*|mingw*|msys|pw32*|cegcc*|haiku|none|eabi*], [ ], + [*], [ + AX_CHECK_COMPILE_FLAG([-fstack-protector], [ + AX_CHECK_LINK_FLAG([-fstack-protector], + [CFLAGS="$CFLAGS -fstack-protector"] + ) + ]) + ]) +]) + +AX_CHECK_COMPILE_FLAG([$CFLAGS -Wall], [CWFLAGS="$CFLAGS -Wall"]) +AX_CHECK_COMPILE_FLAG([$CFLAGS -Wno-deprecated-declarations], [CFLAGS="$CFLAGS -Wno-deprecated-declarations"]) +AX_CHECK_COMPILE_FLAG([$CFLAGS -Wno-unknown-pragmas], [CFLAGS="$CFLAGS -Wno-unknown-pragmas"]) + +AC_ARG_VAR([CWFLAGS], [compilation flags for generating extra warnings]) + +AC_MSG_CHECKING(for clang) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +#ifndef __clang__ +#error Not clang nor zig cc +#endif +]])], + [AC_MSG_RESULT(yes) + AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wno-unknown-warning-option], + [CWFLAGS="$CWFLAGS -Wno-unknown-warning-option"]) + ], + [AC_MSG_RESULT(no) +]) + +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wextra], [CWFLAGS="$WCFLAGS -Wextra"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Warray-bounds], [CWFLAGS="$CWFLAGS -Warray-bounds"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wbad-function-cast], [CWFLAGS="$CWFLAGS -Wbad-function-cast"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wcast-qual], [CWFLAGS="$CWFLAGS -Wcast-qual"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wdiv-by-zero], [CWFLAGS="$CWFLAGS -Wdiv-by-zero"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wduplicated-branches], [CWFLAGS="$CWFLAGS -Wduplicated-branches"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wduplicated-cond], [CWFLAGS="$CWFLAGS -Wduplicated-cond"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wfloat-equal], [CWFLAGS="$CWFLAGS -Wfloat-equal"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wformat=2], [CWFLAGS="$CWFLAGS -Wformat=2"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wlogical-op], [CWFLAGS="$CWFLAGS -Wlogical-op"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wmaybe-uninitialized], [CWFLAGS="$CWFLAGS -Wmaybe-uninitialized"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wmisleading-indentation], [CWFLAGS="$CWFLAGS -Wmisleading-indentation"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wmissing-declarations], [CWFLAGS="$CWFLAGS -Wmissing-declarations"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wmissing-prototypes], [CWFLAGS="$CWFLAGS -Wmissing-prototypes"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wnested-externs], [CWFLAGS="$CWFLAGS -Wnested-externs"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wno-type-limits], [CWFLAGS="$CWFLAGS -Wno-type-limits"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wno-unknown-pragmas], [CWFLAGS="$CWFLAGS -Wno-unknown-pragmas"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wnormalized=id], [CWFLAGS="$CWFLAGS -Wnormalized=id"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wnull-dereference], [CWFLAGS="$CWFLAGS -Wnull-dereference"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wold-style-declaration], [CWFLAGS="$CWFLAGS -Wold-style-declaration"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wpointer-arith], [CWFLAGS="$CWFLAGS -Wpointer-arith"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wredundant-decls], [CWFLAGS="$CWFLAGS -Wredundant-decls"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wrestrict], [CWFLAGS="$CWFLAGS -Wrestrict"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wshorten-64-to-32], [CWFLAGS="$CWFLAGS -Wshorten-64-to-32"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wsometimes-uninitialized], [CWFLAGS="$CWFLAGS -Wsometimes-uninitialized"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wstrict-prototypes], [CWFLAGS="$CWFLAGS -Wstrict-prototypes"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wswitch-enum], [CWFLAGS="$CWFLAGS -Wswitch-enum"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wvariable-decl], [CWFLAGS="$CWFLAGS -Wvariable-decl"]) +AX_CHECK_COMPILE_FLAG([$CWFLAGS -Wwrite-strings], [CWFLAGS="$CWFLAGS -Wwrite-strings"]) + +AS_IF([test "x$EMSCRIPTEN" = "x"], [ + AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"]) + AX_CHECK_LINK_FLAG([-Wl,-z,now], [LDFLAGS="$LDFLAGS -Wl,-z,now"]) + AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"]) +]) + +AX_CHECK_CATCHABLE_SEGV +AX_CHECK_CATCHABLE_ABRT + +AS_IF([test "x$with_threads" = "xyes"], [ + AX_TLS([AC_MSG_RESULT(thread local storage is supported) + AX_CHECK_COMPILE_FLAG([-ftls-model=local-dynamic], + [CFLAGS="$CFLAGS -ftls-model=local-dynamic"])], + [AC_MSG_RESULT(thread local storage is not supported)]) ]) + +LT_INIT +AC_SUBST(LIBTOOL_DEPS) + +AC_ARG_VAR([AR], [path to the ar utility]) +AC_CHECK_TOOL([AR], [ar], [ar]) + +dnl Checks for headers and codegen feature flags + +target_cpu_aarch64=no +AC_MSG_CHECKING(for ARM64 target) +AC_LINK_IFELSE( + [AC_LANG_PROGRAM([ +#ifndef __aarch64__ +#error Not aarch64 +#endif +#include + ], [(void) 0])], + [AC_MSG_RESULT(yes) + target_cpu_aarch64=yes], + [AC_MSG_RESULT(no) + target_cpu_aarch64=no]) + +AS_IF([test "x$EMSCRIPTEN" = "x"], [ + + AS_IF([test "x$target_cpu_aarch64" = "xyes"], [ + have_armcrypto=no + AC_MSG_CHECKING(for ARM crypto instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #ifdef __clang__ + # pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) + #elif defined(__GNUC__) + # pragma GCC target("+simd+crypto") + #endif + #ifndef __ARM_FEATURE_CRYPTO + # define __ARM_FEATURE_CRYPTO 1 + #endif + #ifndef __ARM_FEATURE_AES + # define __ARM_FEATURE_AES 1 + #endif + + #include + ]], [[ + vaeseq_u8(vmovq_n_u8(0), vmovq_n_u8(0)); + + #ifdef __clang__ + # pragma clang attribute pop + #endif + (void) 0 + ]])], + [ + AC_MSG_RESULT(yes) + have_armcrypto=yes + ], + [ + AC_MSG_RESULT(no) + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-march=armv8-a+crypto+aes], [ + CFLAGS="$CFLAGS -march=armv8-a+crypto+aes" + AC_MSG_CHECKING(for ARM crypto instructions set with -march=armv8-a+crypto+aes) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #ifdef __clang__ + # pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) + #elif defined(__GNUC__) + # pragma GCC target("+simd+crypto") + #endif + #ifndef __ARM_FEATURE_CRYPTO + # define __ARM_FEATURE_CRYPTO 1 + #endif + #ifndef __ARM_FEATURE_AES + # define __ARM_FEATURE_AES 1 + #endif + ]], [[ + vaeseq_u8(vmovq_n_u8(0), vmovq_n_u8(0)); + + #ifdef __clang__ + # pragma clang attribute pop + #endif + (void) 0 + ]])], + [ + AC_MSG_RESULT(yes - with addition of -march=armv8-a+crypto+aes) + have_armcrypto=yes + CFLAGS_ARMCRYPTO="-march=armv8-a+crypto+aes" + ], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + ]) + ]) + AS_IF([test "$have_armcrypto" = "yes"],[AC_DEFINE([HAVE_ARMCRYPTO], [1], [ARM crypto extensions are available])]) + ]) + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-mmmx], [CFLAGS="$CFLAGS -mmmx"]) + AC_MSG_CHECKING(for MMX instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("mmx") +#include +]], [[ __m64 x = _mm_setzero_si64(); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_MMINTRIN_H], [1], [mmx is available]) + AX_CHECK_COMPILE_FLAG([-mmmx], [CFLAGS_MMX="-mmmx"])], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-msse2], [CFLAGS="$CFLAGS -msse2"]) + AC_MSG_CHECKING(for SSE2 instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("sse2") +#ifndef __SSE2__ +# define __SSE2__ +#endif +#include +]], [[ __m128d x = _mm_setzero_pd(); + __m128i z = _mm_srli_epi64(_mm_setzero_si128(), 26); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_EMMINTRIN_H], [1], [sse2 is available]) + AX_CHECK_COMPILE_FLAG([-msse2], [CFLAGS_SSE2="-msse2"])], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-msse3], [CFLAGS="$CFLAGS -msse3"]) + AC_MSG_CHECKING(for SSE3 instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("sse3") +#include +]], [[ __m128 x = _mm_addsub_ps(_mm_cvtpd_ps(_mm_setzero_pd()), + _mm_cvtpd_ps(_mm_setzero_pd())); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_PMMINTRIN_H], [1], [sse3 is available]) + AX_CHECK_COMPILE_FLAG([-msse3], [CFLAGS_SSE3="-msse3"])], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-mssse3], [CFLAGS="$CFLAGS -mssse3"]) + AC_MSG_CHECKING(for SSSE3 instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("ssse3") +#include +]], [[ __m64 x = _mm_abs_pi32(_m_from_int(0)); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_TMMINTRIN_H], [1], [ssse3 is available]) + AX_CHECK_COMPILE_FLAG([-mssse3], [CFLAGS_SSSE3="-mssse3"])], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-msse4.1], [CFLAGS="$CFLAGS -msse4.1"]) + AC_MSG_CHECKING(for SSE4.1 instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("sse4.1") +#include +]], [[ __m128i x = _mm_minpos_epu16(_mm_setzero_si128()); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_SMMINTRIN_H], [1], [sse4.1 is available]) + AX_CHECK_COMPILE_FLAG([-msse4.1], [CFLAGS_SSE41="-msse4.1"])], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-mavx], [CFLAGS="$CFLAGS -mavx"]) + AC_MSG_CHECKING(for AVX instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("avx") +#include +]], [[ _mm256_zeroall(); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_AVXINTRIN_H], [1], [AVX is available]) + AX_CHECK_COMPILE_FLAG([-mavx], [CFLAGS_AVX="-mavx"])], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-mavx2], [CFLAGS="$CFLAGS -mavx2"]) + AC_MSG_CHECKING(for AVX2 instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("avx2") +#include +]], [[ +__m256 x = _mm256_set1_ps(3.14); +__m256 y = _mm256_permutevar8x32_ps(x, _mm256_set1_epi32(42)); +return _mm256_movemask_ps(_mm256_cmp_ps(x, y, _CMP_NEQ_OQ)); +]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_AVX2INTRIN_H], [1], [AVX2 is available]) + AX_CHECK_COMPILE_FLAG([-mavx2], [CFLAGS_AVX2="-mavx2"]) + AC_MSG_CHECKING(if _mm256_broadcastsi128_si256 is correctly defined) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("avx2") +#include + ]], [[ __m256i y = _mm256_broadcastsi128_si256(_mm_setzero_si128()); ]])], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_DEFINE([_mm256_broadcastsi128_si256], [_mm_broadcastsi128_si256], + [Define to the local name of _mm256_broadcastsi128_si256])]) + ], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-mavx512f], [CFLAGS="$CFLAGS -mavx512f"]) + AC_MSG_CHECKING(for AVX512F instructions set) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("avx512f") +#include +]], [[ + +#ifndef __AVX512F__ +# error No AVX512 support +#elif defined(__clang__) +# if __clang_major__ < 4 +# error Compiler AVX512 support may be broken +# endif +#elif defined(__GNUC__) +# if __GNUC__ < 6 +# error Compiler AVX512 support may be broken +# endif +#endif + +__m512i x = _mm512_setzero_epi32(); +__m512i y = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), x); +]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_AVX512FINTRIN_H], [1], [AVX512F is available]) + AX_CHECK_COMPILE_FLAG([-mavx512f], [CFLAGS_AVX512F="-mavx512f"])], + [AC_MSG_RESULT(no) + AX_CHECK_COMPILE_FLAG([$CFLAGS -mno-avx512f], + [CFLAGS="$CFLAGS -mno-avx512f"]) + ]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-maes], [CFLAGS="$CFLAGS -maes"]) + AX_CHECK_COMPILE_FLAG([-mpclmul], [CFLAGS="$CFLAGS -mpclmul"]) + AC_MSG_CHECKING(for AESNI instructions set and PCLMULQDQ) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("aes") +#pragma GCC target("pclmul") +#include +]], [[ __m128i x = _mm_aesimc_si128(_mm_setzero_si128()); + __m128i y = _mm_clmulepi64_si128(_mm_setzero_si128(), _mm_setzero_si128(), 0);]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_WMMINTRIN_H], [1], [aesni is available]) + AX_CHECK_COMPILE_FLAG([-maes], [CFLAGS_AESNI="-maes"]) + AX_CHECK_COMPILE_FLAG([-mpclmul], [CFLAGS_PCLMUL="-mpclmul"]) + ], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + + oldcflags="$CFLAGS" + AX_CHECK_COMPILE_FLAG([-mrdrnd], [CFLAGS="$CFLAGS -mrdrnd"]) + AC_MSG_CHECKING(for RDRAND) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#pragma GCC target("rdrnd") +#include +]], [[ unsigned long long x; _rdrand64_step(&x); ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_RDRAND], [1], [rdrand is available]) + AX_CHECK_COMPILE_FLAG([-mrdrnd], [CFLAGS_RDRAND="-mrdrnd"]) + ], + [AC_MSG_RESULT(no)]) + CFLAGS="$oldcflags" + +]) + +AC_SUBST(CFLAGS_ARMCRYPTO) +AC_SUBST(CFLAGS_MMX) +AC_SUBST(CFLAGS_SSE2) +AC_SUBST(CFLAGS_SSE3) +AC_SUBST(CFLAGS_SSSE3) +AC_SUBST(CFLAGS_SSE41) +AC_SUBST(CFLAGS_AVX) +AC_SUBST(CFLAGS_AVX2) +AC_SUBST(CFLAGS_AVX512F) +AC_SUBST(CFLAGS_AESNI) +AC_SUBST(CFLAGS_PCLMUL) +AC_SUBST(CFLAGS_RDRAND) + +AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/random.h intrin.h sys/auxv.h]) +AC_CHECK_HEADERS([CommonCrypto/CommonRandom.h]) +AC_CHECK_HEADERS([cet.h]) + +AC_MSG_CHECKING([if _xgetbv() is available]) +AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ #include ]], [[ (void) _xgetbv(0) ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE__XGETBV], [1], [_xgetbv() is available])], + [AC_MSG_RESULT(no)]) + +dnl Checks for typedefs, structures, and compiler characteristics. + +AC_C_INLINE +AS_CASE([$host_cpu], + [i?86|amd64|x86_64], + [ac_cv_c_bigendian=no] +) +AC_C_BIGENDIAN( + AC_DEFINE(NATIVE_BIG_ENDIAN, 1, [machine is bigendian]), + AC_DEFINE(NATIVE_LITTLE_ENDIAN, 1, [machine is littleendian]), + AC_MSG_ERROR([unknown endianness]), + AC_MSG_ERROR([universal endianness is not supported - compile separately and use lipo(1)]) +) + +AC_MSG_CHECKING(whether __STDC_LIMIT_MACROS is required) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], [[ +(void) SIZE_MAX; +(void) UINT64_MAX; +]])], + [AC_MSG_RESULT(no)], + [AC_MSG_RESULT(yes) + CPPFLAGS="$CPPFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS" +]) + +AC_MSG_CHECKING(whether we can use inline asm code) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +]], [[ +int a = 42; +int *pnt = &a; +__asm__ __volatile__ ("" : : "r"(pnt) : "memory"); +]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_INLINE_ASM], [1], [inline asm code can be used])] + [AC_MSG_RESULT(no)] +) + +HAVE_AMD64_ASM_V=0 +AS_IF([test "$enable_asm" != "no"],[ + AC_MSG_CHECKING(whether we can use x86_64 asm code) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + ]], [[ +#if defined(__amd64) || defined(__amd64__) || defined(__x86_64__) +# if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64) +# error Windows x86_64 calling conventions are not supported yet +# endif +/* neat */ +#else +# error !x86_64 +#endif +unsigned char i = 0, o = 0, t; +__asm__ __volatile__ ("pxor %%xmm12, %%xmm6 \n" + "movb (%[i]), %[t] \n" + "addb %[t], (%[o]) \n" + : [t] "=&r"(t) + : [o] "D"(&o), [i] "S"(&i) + : "memory", "flags", "cc"); +]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_AMD64_ASM], [1], [x86_64 asm code can be used]) + HAVE_AMD64_ASM_V=1], + [AC_MSG_RESULT(no)]) +]) +AM_CONDITIONAL([HAVE_AMD64_ASM], [test $HAVE_AMD64_ASM_V = 1]) +AC_SUBST(HAVE_AMD64_ASM_V) + +HAVE_AVX_ASM_V=0 +AS_IF([test "$enable_asm" != "no"],[ + AC_MSG_CHECKING(whether we can assemble AVX opcodes) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + ]], [[ +#if defined(__amd64) || defined(__amd64__) || defined(__x86_64__) +# if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64) +# error Windows x86_64 calling conventions are not supported yet +# endif +/* neat */ +#else +# error !x86_64 +#endif +__asm__ __volatile__ ("vpunpcklqdq %xmm0,%xmm13,%xmm0"); +]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_AVX_ASM], [1], [AVX opcodes are supported]) + HAVE_AVX_ASM_V=1], + [AC_MSG_RESULT(no)]) +]) +AM_CONDITIONAL([HAVE_AVX_ASM], [test $HAVE_AVX_ASM_V = 1]) +AC_SUBST(HAVE_AVX_ASM_V) + +AC_MSG_CHECKING(for 128-bit arithmetic) +HAVE_TI_MODE_V=0 +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#if !defined(__clang__) && !defined(__GNUC__) && !defined(__SIZEOF_INT128__) +# error mode(TI) is a gcc extension, and __int128 is not available +#endif +#if defined(__clang__) && !defined(__x86_64__) && !defined(__aarch64__) +# error clang does not properly handle the 128-bit type on 32-bit systems +#endif +#ifndef NATIVE_LITTLE_ENDIAN +# error libsodium currently expects a little endian CPU for the 128-bit type +#endif +#ifdef __EMSCRIPTEN__ +# error emscripten currently doesn't support some operations on integers larger than 64 bits +#endif +#include +#include +#if defined(__SIZEOF_INT128__) +typedef unsigned __int128 uint128_t; +#else +typedef unsigned uint128_t __attribute__((mode(TI))); +#endif +void fcontract(uint128_t *t) { + *t += 0x8000000000000 - 1; + *t *= *t; + *t >>= 84; +} +]], [[ +(void) fcontract; +]])], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_TI_MODE], [1], [gcc TI mode is available]) + HAVE_TI_MODE_V=1], +[AC_MSG_RESULT(no)]) +AM_CONDITIONAL([HAVE_TI_MODE], [test $HAVE_TI_MODE_V = 1]) +AC_SUBST(HAVE_TI_MODE_V) + +HAVE_CPUID_V=0 +AS_IF([test "$enable_asm" != "no"],[ + AC_MSG_CHECKING(for cpuid instruction) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +unsigned int cpu_info[4]; +__asm__ __volatile__ ("xchgl %%ebx, %k1; cpuid; xchgl %%ebx, %k1" : + "=a" (cpu_info[0]), "=&r" (cpu_info[1]), + "=c" (cpu_info[2]), "=d" (cpu_info[3]) : + "0" (0U), "2" (0U)); + ]])], + [AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_CPUID], [1], [cpuid instruction is available]) + HAVE_CPUID_V=1], + [AC_MSG_RESULT(no)]) + ]) +AC_SUBST(HAVE_CPUID_V) + +asm_hide_symbol="unsupported" +AS_IF([test "$enable_asm" != "no"],[ + AC_MSG_CHECKING(if the .private_extern asm directive is supported) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +__asm__ __volatile__ (".private_extern dummy_symbol \n" + ".private_extern _dummy_symbol \n" + ".globl dummy_symbol \n" + ".globl _dummy_symbol \n" + "dummy_symbol: \n" + "_dummy_symbol: \n" + " nop \n" +); + ]])], + [AC_MSG_RESULT(yes) + asm_hide_symbol=".private_extern"], + [AC_MSG_RESULT(no)]) + + AC_MSG_CHECKING(if the .hidden asm directive is supported) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +__asm__ __volatile__ (".hidden dummy_symbol \n" + ".hidden _dummy_symbol \n" + ".globl dummy_symbol \n" + ".globl _dummy_symbol \n" + "dummy_symbol: \n" + "_dummy_symbol: \n" + " nop \n" +); + ]])], + [AC_MSG_RESULT(yes) + AS_IF([test "$asm_hide_symbol" = "unsupported"], + [asm_hide_symbol=".hidden"], + [AC_MSG_NOTICE([unable to reliably tag symbols as private]) + asm_hide_symbol="unsupported"]) + ], + [AC_MSG_RESULT(no)]) + + AS_IF([test "$asm_hide_symbol" != "unsupported"],[ + AC_DEFINE_UNQUOTED([ASM_HIDE_SYMBOL], [$asm_hide_symbol], [directive to hide symbols]) + ]) +]) + +AC_MSG_CHECKING(if weak symbols are supported) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#if !defined(__ELF__) && !defined(__APPLE_CC__) +# error Support for weak symbols may not be available +#endif +__attribute__((weak)) void __dummy(void *x) { } +void f(void *x) { __dummy(x); } +]], [[ ]] +)], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])], +[AC_MSG_RESULT(no)]) + +AC_MSG_CHECKING(if atomic operations are supported) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +static volatile int _sodium_lock; +__sync_lock_test_and_set(&_sodium_lock, 1); +__sync_lock_release(&_sodium_lock); +]] +)], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_ATOMIC_OPS], [1], [atomic operations are supported])], +[AC_MSG_RESULT(no)]) + +AC_MSG_CHECKING(if C11 memory fences are supported) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include + ]], [[ +atomic_thread_fence(memory_order_acquire); +]] +)], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_C11_MEMORY_FENCES], [1], [C11 memory fences are supported])], +[AC_MSG_RESULT(no)]) + +AC_MSG_CHECKING(if gcc memory fences are supported) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ]], [[ +__atomic_thread_fence(__ATOMIC_ACQUIRE); +]] +)], +[AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_GCC_MEMORY_FENCES], [1], [GCC memory fences are supported])], +[AC_MSG_RESULT(no)]) + +dnl Checks for functions and headers + +AC_FUNC_ALLOCA +AS_IF([test "x$EMSCRIPTEN" = "x"],[ + AC_CHECK_FUNCS([arc4random arc4random_buf]) + AS_IF([test "x$WASI" = "x"],[ + AC_CHECK_FUNCS([mmap mlock madvise mprotect]) + AC_CHECK_FUNCS([raise]) + AC_CHECK_FUNCS([sysconf]) + ]) + AC_MSG_CHECKING(for getrandom with a standard API) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_RANDOM_H +# include +#endif +]], [[ +unsigned char buf; +if (&getrandom != NULL) { + (void) getrandom((void *) &buf, 1U, 0U); +} + ]])], + [AC_MSG_RESULT(yes) + AC_CHECK_FUNCS([getrandom])], + [AC_MSG_RESULT(no) + ]) + + AC_MSG_CHECKING(for getentropy with a standard API) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_RANDOM_H +# include +#endif +]], [[ +unsigned char buf; +if (&getentropy != NULL) { + (void) getentropy((void *) &buf, 1U); +} + ]])], + [AC_MSG_RESULT(yes) + AC_CHECK_FUNCS([getentropy])], + [AC_MSG_RESULT(no) + ]) +]) + +AS_IF([test "x$WASI" = "x"],[ + AC_CHECK_FUNCS([getpid]) + AC_CHECK_FUNCS([getauxval elf_aux_info]) +]) + +AC_CHECK_FUNCS([posix_memalign nanosleep clock_gettime]) + +AS_IF([test "x$WASI" = "x"],[ + AC_CHECK_FUNCS([memset_s explicit_bzero memset_explicit explicit_memset]) +]) + +AC_SUBST([LIBTOOL_EXTRA_FLAGS]) + +TEST_LDFLAGS='' +AS_IF([test "x$EMSCRIPTEN" != "x"],[ + EXEEXT=.js + TEST_LDFLAGS='--memory-init-file 0 --pre-js pre.js.inc -s RESERVED_FUNCTION_POINTERS=8' +]) +AC_SUBST(TEST_LDFLAGS) +AM_CONDITIONAL([EMSCRIPTEN], [test "x$EMSCRIPTEN" != "x"]) +AM_CONDITIONAL([WASI], [test "x$WASI" != "x"]) + +AC_DEFINE([CONFIGURED], [1], [the build system was properly configured]) + +dnl Libtool. + +LT_INIT([dlopen win32-dll]) +gl_LD_OUTPUT_DEF + +dnl Output. + +AH_VERBATIM([NDEBUG], [/* Always evaluate assert() calls */ +#ifdef NDEBUG +#/**/undef/**/ NDEBUG +#endif]) + +AS_IF([test "x$ENABLE_CWFLAGS" = "xyes"], [ + CFLAGS="$CFLAGS $CWFLAGS" +]) + +AC_CONFIG_FILES([Makefile + builds/Makefile + contrib/Makefile + dist-build/Makefile + libsodium.pc + libsodium-uninstalled.pc + src/Makefile + src/libsodium/Makefile + src/libsodium/include/Makefile + src/libsodium/include/sodium/version.h + test/default/Makefile + test/Makefile + ]) +AC_OUTPUT diff --git a/components/espressif__libsodium/libsodium/contrib/Findsodium.cmake b/components/espressif__libsodium/libsodium/contrib/Findsodium.cmake new file mode 100644 index 0000000..316c5e9 --- /dev/null +++ b/components/espressif__libsodium/libsodium/contrib/Findsodium.cmake @@ -0,0 +1,297 @@ +# Written in 2016 by Henrik Steffen Gaßmann +# +# To the extent possible under law, the author(s) have dedicated all copyright +# and related and neighboring rights to this software to the public domain +# worldwide. This software is distributed without any warranty. +# +# You should have received a copy of the CC0 Public Domain Dedication along with +# this software. If not, see +# +# http://creativecommons.org/publicdomain/zero/1.0/ +# +# ############################################################################## +# Tries to find the local libsodium installation. +# +# On Windows the sodium_DIR environment variable is used as a default hint which +# can be overridden by setting the corresponding cmake variable. +# +# Once done the following variables will be defined: +# +# sodium_FOUND sodium_INCLUDE_DIR sodium_LIBRARY_DEBUG sodium_LIBRARY_RELEASE +# sodium_VERSION_STRING +# +# Furthermore an imported "sodium" target is created. +# + +if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(_GCC_COMPATIBLE 1) +endif() + +# static library option +if(NOT DEFINED sodium_USE_STATIC_LIBS) + option(sodium_USE_STATIC_LIBS "enable to statically link against sodium" OFF) +endif() +if(NOT (sodium_USE_STATIC_LIBS EQUAL sodium_USE_STATIC_LIBS_LAST)) + unset(sodium_LIBRARY CACHE) + unset(sodium_LIBRARY_DEBUG CACHE) + unset(sodium_LIBRARY_RELEASE CACHE) + unset(sodium_DLL_DEBUG CACHE) + unset(sodium_DLL_RELEASE CACHE) + set(sodium_USE_STATIC_LIBS_LAST + ${sodium_USE_STATIC_LIBS} + CACHE INTERNAL "internal change tracking variable") +endif() + +# ############################################################################## +# UNIX +if(UNIX) + # import pkg-config + find_package(PkgConfig QUIET) + if(PKG_CONFIG_FOUND) + pkg_check_modules(sodium_PKG QUIET libsodium) + endif() + + if(sodium_USE_STATIC_LIBS) + if(sodium_PKG_STATIC_LIBRARIES) + foreach(_libname ${sodium_PKG_STATIC_LIBRARIES}) + if(NOT _libname MATCHES "^lib.*\\.a$") # ignore strings already ending + # with .a + list(INSERT sodium_PKG_STATIC_LIBRARIES 0 "lib${_libname}.a") + endif() + endforeach() + list(REMOVE_DUPLICATES sodium_PKG_STATIC_LIBRARIES) + else() + # if pkgconfig for libsodium doesn't provide static lib info, then + # override PKG_STATIC here.. + set(sodium_PKG_STATIC_LIBRARIES libsodium.a) + endif() + + set(XPREFIX sodium_PKG_STATIC) + else() + if(sodium_PKG_LIBRARIES STREQUAL "") + set(sodium_PKG_LIBRARIES sodium) + endif() + + set(XPREFIX sodium_PKG) + endif() + + find_path(sodium_INCLUDE_DIR sodium.h HINTS ${${XPREFIX}_INCLUDE_DIRS}) + find_library(sodium_LIBRARY_DEBUG + NAMES ${${XPREFIX}_LIBRARIES} + HINTS ${${XPREFIX}_LIBRARY_DIRS}) + find_library(sodium_LIBRARY_RELEASE + NAMES ${${XPREFIX}_LIBRARIES} + HINTS ${${XPREFIX}_LIBRARY_DIRS}) + + # ############################################################################ + # Windows +elseif(WIN32) + set(sodium_DIR "$ENV{sodium_DIR}" CACHE FILEPATH "sodium install directory") + mark_as_advanced(sodium_DIR) + + find_path(sodium_INCLUDE_DIR sodium.h + HINTS ${sodium_DIR} + PATH_SUFFIXES include) + + if(MSVC) + # detect target architecture + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arch.c" [=[ + #if defined _M_IX86 + #error ARCH_VALUE x86_32 + #elif defined _M_X64 + #error ARCH_VALUE x86_64 + #endif + #error ARCH_VALUE unknown + ]=]) + try_compile(_UNUSED_VAR "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_BINARY_DIR}/arch.c" + OUTPUT_VARIABLE _COMPILATION_LOG) + string(REGEX + REPLACE ".*ARCH_VALUE ([a-zA-Z0-9_]+).*" + "\\1" + _TARGET_ARCH + "${_COMPILATION_LOG}") + + # construct library path + if(_TARGET_ARCH STREQUAL "x86_32") + string(APPEND _PLATFORM_PATH "Win32") + elseif(_TARGET_ARCH STREQUAL "x86_64") + string(APPEND _PLATFORM_PATH "x64") + else() + message( + FATAL_ERROR + "the ${_TARGET_ARCH} architecture is not supported by Findsodium.cmake." + ) + endif() + string(APPEND _PLATFORM_PATH "/$$CONFIG$$") + + if(MSVC_VERSION LESS 1900) + math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 60") + else() + math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 50") + endif() + string(APPEND _PLATFORM_PATH "/v${_VS_VERSION}") + + if(sodium_USE_STATIC_LIBS) + string(APPEND _PLATFORM_PATH "/static") + else() + string(APPEND _PLATFORM_PATH "/dynamic") + endif() + + string(REPLACE "$$CONFIG$$" + "Debug" + _DEBUG_PATH_SUFFIX + "${_PLATFORM_PATH}") + string(REPLACE "$$CONFIG$$" + "Release" + _RELEASE_PATH_SUFFIX + "${_PLATFORM_PATH}") + + find_library(sodium_LIBRARY_DEBUG libsodium.lib + HINTS ${sodium_DIR} + PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}) + find_library(sodium_LIBRARY_RELEASE libsodium.lib + HINTS ${sodium_DIR} + PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}) + if(NOT sodium_USE_STATIC_LIBS) + set(CMAKE_FIND_LIBRARY_SUFFIXES_BCK ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") + find_library(sodium_DLL_DEBUG libsodium + HINTS ${sodium_DIR} + PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}) + find_library(sodium_DLL_RELEASE libsodium + HINTS ${sodium_DIR} + PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_BCK}) + endif() + + elseif(_GCC_COMPATIBLE) + if(sodium_USE_STATIC_LIBS) + find_library(sodium_LIBRARY_DEBUG libsodium.a + HINTS ${sodium_DIR} + PATH_SUFFIXES lib) + find_library(sodium_LIBRARY_RELEASE libsodium.a + HINTS ${sodium_DIR} + PATH_SUFFIXES lib) + else() + find_library(sodium_LIBRARY_DEBUG libsodium.dll.a + HINTS ${sodium_DIR} + PATH_SUFFIXES lib) + find_library(sodium_LIBRARY_RELEASE libsodium.dll.a + HINTS ${sodium_DIR} + PATH_SUFFIXES lib) + + file(GLOB _DLL + LIST_DIRECTORIES false + RELATIVE "${sodium_DIR}/bin" + "${sodium_DIR}/bin/libsodium*.dll") + find_library(sodium_DLL_DEBUG ${_DLL} libsodium + HINTS ${sodium_DIR} + PATH_SUFFIXES bin) + find_library(sodium_DLL_RELEASE ${_DLL} libsodium + HINTS ${sodium_DIR} + PATH_SUFFIXES bin) + endif() + else() + message(FATAL_ERROR "this platform is not supported by FindSodium.cmake") + endif() + + # ############################################################################ + # unsupported +else() + message(FATAL_ERROR "this platform is not supported by FindSodium.cmake") +endif() + +# ############################################################################## +# common stuff + +# extract sodium version +if(sodium_INCLUDE_DIR) + set(_VERSION_HEADER "${sodium_INCLUDE_DIR}/sodium/version.h") + if(EXISTS "${_VERSION_HEADER}") + file(READ "${_VERSION_HEADER}" _VERSION_HEADER_CONTENT) + string( + REGEX + REPLACE + ".*define[ \t]+SODIUM_VERSION_STRING[^\"]+\"([^\"]+)\".*" + "\\1" + sodium_VERSION_STRING + "${_VERSION_HEADER_CONTENT}") + set(sodium_VERSION_STRING "${sodium_VERSION_STRING}") + endif() +endif() + +# communicate results +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(sodium + REQUIRED_VARS + sodium_LIBRARY_RELEASE + sodium_LIBRARY_DEBUG + sodium_INCLUDE_DIR + VERSION_VAR + sodium_VERSION_STRING) + +if (NOT sodium_FOUND) + return() +endif() + +# mark file paths as advanced +mark_as_advanced(sodium_INCLUDE_DIR) +mark_as_advanced(sodium_LIBRARY_DEBUG) +mark_as_advanced(sodium_LIBRARY_RELEASE) +if(WIN32) + mark_as_advanced(sodium_DLL_DEBUG) + mark_as_advanced(sodium_DLL_RELEASE) +endif() + +# create imported target +if(sodium_USE_STATIC_LIBS) + set(_LIB_TYPE STATIC) +else() + set(_LIB_TYPE SHARED) +endif() +add_library(sodium ${_LIB_TYPE} IMPORTED) + +set_target_properties(sodium + PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${sodium_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES + "C") + +if(sodium_USE_STATIC_LIBS) + set_target_properties(sodium + PROPERTIES INTERFACE_COMPILE_DEFINITIONS + "SODIUM_STATIC" + IMPORTED_LOCATION + "${sodium_LIBRARY_RELEASE}" + IMPORTED_LOCATION_DEBUG + "${sodium_LIBRARY_DEBUG}") +else() + if(UNIX) + set_target_properties(sodium + PROPERTIES IMPORTED_LOCATION + "${sodium_LIBRARY_RELEASE}" + IMPORTED_LOCATION_DEBUG + "${sodium_LIBRARY_DEBUG}") + elseif(WIN32) + set_target_properties(sodium + PROPERTIES IMPORTED_IMPLIB + "${sodium_LIBRARY_RELEASE}" + IMPORTED_IMPLIB_DEBUG + "${sodium_LIBRARY_DEBUG}") + if(NOT (sodium_DLL_DEBUG MATCHES ".*-NOTFOUND")) + set_target_properties(sodium + PROPERTIES IMPORTED_LOCATION_DEBUG + "${sodium_DLL_DEBUG}") + endif() + if(NOT (sodium_DLL_RELEASE MATCHES ".*-NOTFOUND")) + set_target_properties(sodium + PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO + "${sodium_DLL_RELEASE}" + IMPORTED_LOCATION_MINSIZEREL + "${sodium_DLL_RELEASE}" + IMPORTED_LOCATION_RELEASE + "${sodium_DLL_RELEASE}") + endif() + endif() +endif() diff --git a/components/espressif__libsodium/libsodium/contrib/Makefile.am b/components/espressif__libsodium/libsodium/contrib/Makefile.am new file mode 100644 index 0000000..2cfe522 --- /dev/null +++ b/components/espressif__libsodium/libsodium/contrib/Makefile.am @@ -0,0 +1,3 @@ + +EXTRA_DIST = \ + Findsodium.cmake diff --git a/components/espressif__libsodium/libsodium/dist-build/Makefile.am b/components/espressif__libsodium/libsodium/dist-build/Makefile.am new file mode 100644 index 0000000..7bea4fb --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/Makefile.am @@ -0,0 +1,14 @@ + +EXTRA_DIST = \ + android-build.sh \ + android-aar.sh \ + android-armv7-a.sh \ + android-armv8-a.sh \ + android-x86.sh \ + android-x86_64.sh \ + emscripten.sh \ + apple-xcframework.sh \ + macos.sh \ + msys2-win32.sh \ + msys2-win64.sh \ + wasm32-wasi.sh diff --git a/components/espressif__libsodium/libsodium/dist-build/android-aar.sh b/components/espressif__libsodium/libsodium/dist-build/android-aar.sh new file mode 100644 index 0000000..9eeeab1 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/android-aar.sh @@ -0,0 +1,144 @@ +#! /bin/sh + +# Create an AAR with libsodium in all combinations of static | shared | minimal | full. +# +# The x86 static library will not work due to text relocation rules, so static x86 versions are limited to shared libraries. +# To simplify linking, library variants have distinct names: sodium, sodium-static, sodium-minimal and sodium-minimal-static. + +SODIUM_VERSION="1.0.19.0" +NDK_VERSION=$(grep "Pkg.Revision = " <"${ANDROID_NDK_HOME}/source.properties" | cut -f 2 -d '=' | cut -f 2 -d' ' | cut -f 1 -d'.') +DEST_PATH=$(mktemp -d) + +cd "$(dirname "$0")/../" || exit + +make_abi_json() { + echo "{\"abi\":\"${NDK_ARCH}\",\"api\":${SDK_VERSION},\"ndk\":${NDK_VERSION},\"stl\":\"none\"}" >"$1/abi.json" +} + +make_prefab_json() { + echo "{\"name\":\"sodium\",\"schema_version\":1,\"dependencies\":[],\"version\":\"$SODIUM_VERSION\"}" >"$1/prefab.json" +} + +make_manifest() { + echo " + +" >"${1}/AndroidManifest.xml" +} + +make_prefab_structure() { + mkdir "$DEST_PATH" + + for variant_dirs in "prefab" "prefab/modules" "META-INF"; do + mkdir "${DEST_PATH}/${variant_dirs}" + done + + make_prefab_json "${DEST_PATH}/prefab" + make_manifest "${DEST_PATH}" + cp "LICENSE" "${DEST_PATH}/META-INF" + + for variant in \ + "prefab/modules/sodium" "prefab/modules/sodium-static" \ + "prefab/modules/sodium-minimal" "prefab/modules/sodium-minimal-static"; do + mkdir "${DEST_PATH}/${variant}" + + if [ "$variant" = "prefab/modules/sodium-minimal" ]; then + echo "{\"library_name\":\"libsodium\"}" >"${DEST_PATH}/${variant}/module.json" + else + echo "{}" >"${DEST_PATH}/${variant}/module.json" + fi + + mkdir "${DEST_PATH}/${variant}/libs" + + for arch in "arm64-v8a" "armeabi-v7a" "x86" "x86_64"; do + mkdir "$DEST_PATH/${variant}/libs/android.${arch}" + mkdir "$DEST_PATH/${variant}/libs/android.${arch}/include" + NDK_ARCH="$arch" + if [ $arch = "arm64-v8a" ] || [ $arch = "x86_64" ]; then + SDK_VERSION="21" + else + SDK_VERSION="19" + fi + + make_abi_json "$DEST_PATH/${variant}/libs/android.${arch}" + done + done +} + +copy_libs() { + SRC_DIR="libsodium-android-${1}" + + SHARED_DEST_DIR="${DEST_PATH}/prefab/modules/sodium${3}/libs/android.${2}" + STATIC_DEST_DIR="${DEST_PATH}/prefab/modules/sodium${3}-static/libs/android.${2}" + + cp -r "${SRC_DIR}/include" "$SHARED_DEST_DIR" + cp -r "${SRC_DIR}/include" "$STATIC_DEST_DIR" + cp "${SRC_DIR}/lib/libsodium.so" "${SHARED_DEST_DIR}/libsodium.so" + cp "${SRC_DIR}/lib/libsodium.a" "${STATIC_DEST_DIR}/libsodium${3}-static.a" + + rm -r "$SRC_DIR" +} + +build_all() { + dist-build/android-armv7-a.sh + dist-build/android-armv8-a.sh + dist-build/android-x86_64.sh + dist-build/android-x86.sh +} + +make_prefab_structure + +build_all + +copy_libs "armv7-a" "armeabi-v7a" "-minimal" +copy_libs "armv8-a+crypto" "arm64-v8a" "-minimal" +copy_libs "i686" "x86" "-minimal" +copy_libs "westmere" "x86_64" "-minimal" + +LIBSODIUM_FULL_BUILD="Y" +export LIBSODIUM_FULL_BUILD + +build_all + +copy_libs "armv7-a" "armeabi-v7a" +copy_libs "armv8-a+crypto" "arm64-v8a" +copy_libs "i686" "x86" +copy_libs "westmere" "x86_64" + +AAR_PATH="$(pwd)/libsodium-${SODIUM_VERSION}.aar" +cd "$DEST_PATH" || exit +rm "$AAR_PATH" +zip -9 -r "$AAR_PATH" META-INF prefab AndroidManifest.xml +cd .. || exit +rm -r "$DEST_PATH" + +echo +echo "Congrats you have built an AAR containing libsodium! To use it with +gradle or cmake (as set by default for Android Studio projects): + +- Edit the app/build.gradle file to add: + + android { + buildFeatures { + prefab true + } + } + + and + + dependencies { + implementation fileTree(dir:'path/to/aar/',include:['libsodium-$SODIUM_VERSION.aar']) + } + + Optionally, store multiple AAR files in the same folder and include '*.aar' + +- Edit your module's CMakeLists.txt file to add: + + find_package(sodium REQUIRED CONFIG) + +- Then, specify 'sodium::x' as an item in the relevant 'target_link_libraries' statement. + The first part is the AAR name and should be 'sodium'. + The second part ('x', to be replaced) should be set to: + - 'sodium' for the full shared library, + - 'sodium-static' for the full static library + - 'sodium-minimal' for the minimal shared library, or + - 'sodium-minimal-static' for the minimal static library." diff --git a/components/espressif__libsodium/libsodium/dist-build/android-armv7-a.sh b/components/espressif__libsodium/libsodium/dist-build/android-armv7-a.sh new file mode 100644 index 0000000..6cfa80a --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/android-armv7-a.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export TARGET_ARCH=armv7-a +export CFLAGS="-Os -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -marm -march=${TARGET_ARCH}" +ARCH=arm HOST_COMPILER=armv7a-linux-androideabi "$(dirname "$0")/android-build.sh" diff --git a/components/espressif__libsodium/libsodium/dist-build/android-armv8-a.sh b/components/espressif__libsodium/libsodium/dist-build/android-armv8-a.sh new file mode 100644 index 0000000..1629982 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/android-armv8-a.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export TARGET_ARCH=armv8-a+crypto +export CFLAGS="-Os -march=${TARGET_ARCH}" +NDK_PLATFORM=android-21 ARCH=arm64 HOST_COMPILER=aarch64-linux-android "$(dirname "$0")/android-build.sh" diff --git a/components/espressif__libsodium/libsodium/dist-build/android-build.sh b/components/espressif__libsodium/libsodium/dist-build/android-build.sh new file mode 100644 index 0000000..e8d65b2 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/android-build.sh @@ -0,0 +1,92 @@ +#! /bin/sh + +if [ -z "$NDK_PLATFORM" ]; then + export NDK_PLATFORM="android-19" +fi +export NDK_PLATFORM_COMPAT="${NDK_PLATFORM_COMPAT:-${NDK_PLATFORM}}" +export NDK_API_VERSION="$(echo "$NDK_PLATFORM" | sed 's/^android-//')" +export NDK_API_VERSION_COMPAT="$(echo "$NDK_PLATFORM_COMPAT" | sed 's/^android-//')" + +if [ -z "$ANDROID_NDK_HOME" ]; then + echo "You should probably set ANDROID_NDK_HOME to the directory containing" + echo "the Android NDK" + exit 1 +fi + +if [ ! -f ./configure ]; then + echo "Can't find ./configure. Wrong directory or haven't run autogen.sh?" >&2 + exit 1 +fi + +if [ -z "$TARGET_ARCH" ] || [ -z "$ARCH" ] || [ -z "$HOST_COMPILER" ]; then + echo "You shouldn't use android-build.sh directly, use android-[arch].sh instead" >&2 + exit 1 +fi + +export PREFIX="$(pwd)/libsodium-android-${TARGET_ARCH}" +export TOOLCHAIN_OS_DIR="$(uname | tr '[:upper:]' '[:lower:]')-x86_64/" +export TOOLCHAIN_DIR="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/${TOOLCHAIN_OS_DIR}" +echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/${TOOLCHAIN_OS_DIR}/${HOST_COMPILER}" + +export PATH="${PATH}:${TOOLCHAIN_DIR}/bin" +SDK_VERSION_NUM=$(echo $NDK_PLATFORM | cut -d'-' -f2) +export CC=${CC:-"${HOST_COMPILER}${SDK_VERSION_NUM}-clang"} + +echo +echo "Warnings related to headers being present but not usable are due to functions" +echo "that didn't exist in the specified minimum API version level." +echo "They can be safely ignored." +echo + +echo +if [ "$NDK_PLATFORM" != "$NDK_PLATFORM_COMPAT" ]; then + echo "Building for platform [${NDK_PLATFORM}], retaining compatibility with platform [${NDK_PLATFORM_COMPAT}]" +else + echo "Building for platform [${NDK_PLATFORM}]" +fi +echo + + +if [ -z "$LIBSODIUM_FULL_BUILD" ]; then + export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" +else + export LIBSODIUM_ENABLE_MINIMAL_FLAG="" +fi + +./configure \ + --disable-soname-versions \ + --disable-pie \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ + --host="${HOST_COMPILER}" \ + --prefix="${PREFIX}" \ + --with-sysroot="${TOOLCHAIN_DIR}/sysroot" || exit 1 + +if [ "$NDK_PLATFORM" != "$NDK_PLATFORM_COMPAT" ]; then + egrep '^#define ' config.log | sort -u >config-def-compat.log + echo + echo "Configuring again for platform [${NDK_PLATFORM}]" + echo + + ./configure \ + --disable-soname-versions \ + --disable-pie \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ + --host="${HOST_COMPILER}" \ + --prefix="${PREFIX}" \ + --with-sysroot="${TOOLCHAIN_DIR}/sysroot" || exit 1 + + grep -E '^#define ' config.log | sort -u >config-def.log + if ! cmp config-def.log config-def-compat.log; then + echo "Platform [${NDK_PLATFORM}] is not backwards-compatible with [${NDK_PLATFORM_COMPAT}]" >&2 + diff -u config-def.log config-def-compat.log >&2 + exit 1 + fi + rm -f config-def.log config-def-compat.log +fi + +NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) +PROCESSORS=${NPROCESSORS:-3} + +make clean && + make -j${PROCESSORS} install && + echo "libsodium has been installed into ${PREFIX}" diff --git a/components/espressif__libsodium/libsodium/dist-build/android-x86.sh b/components/espressif__libsodium/libsodium/dist-build/android-x86.sh new file mode 100644 index 0000000..f21fe47 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/android-x86.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export TARGET_ARCH=i686 +export CFLAGS="-Os -march=${TARGET_ARCH}" +ARCH=x86 HOST_COMPILER=i686-linux-android "$(dirname "$0")/android-build.sh" diff --git a/components/espressif__libsodium/libsodium/dist-build/android-x86_64.sh b/components/espressif__libsodium/libsodium/dist-build/android-x86_64.sh new file mode 100644 index 0000000..9f2b4f0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/android-x86_64.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export TARGET_ARCH=westmere +export CFLAGS="-Os -march=${TARGET_ARCH}" +NDK_PLATFORM=android-21 ARCH=x86_64 HOST_COMPILER=x86_64-linux-android "$(dirname "$0")/android-build.sh" diff --git a/components/espressif__libsodium/libsodium/dist-build/apple-xcframework.sh b/components/espressif__libsodium/libsodium/dist-build/apple-xcframework.sh new file mode 100644 index 0000000..97b11d0 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/apple-xcframework.sh @@ -0,0 +1,537 @@ +#! /bin/sh + +export PREFIX="$(pwd)/libsodium-apple" +export MACOS_ARM64_PREFIX="${PREFIX}/tmp/macos-arm64" +export MACOS_X86_64_PREFIX="${PREFIX}/tmp/macos-x86_64" +export IOS32_PREFIX="${PREFIX}/tmp/ios32" +export IOS32s_PREFIX="${PREFIX}/tmp/ios32s" +export IOS64_PREFIX="${PREFIX}/tmp/ios64" +export IOS_SIMULATOR_ARM64_PREFIX="${PREFIX}/tmp/ios-simulator-arm64" +export IOS_SIMULATOR_I386_PREFIX="${PREFIX}/tmp/ios-simulator-i386" +export IOS_SIMULATOR_X86_64_PREFIX="${PREFIX}/tmp/ios-simulator-x86_64" +export WATCHOS32_PREFIX="${PREFIX}/tmp/watchos32" +export WATCHOS64_32_PREFIX="${PREFIX}/tmp/watchos64_32" +export WATCHOS64_PREFIX="${PREFIX}/tmp/watchos64" +export WATCHOS_SIMULATOR_ARM64_PREFIX="${PREFIX}/tmp/watchos-simulator-arm64" +export WATCHOS_SIMULATOR_I386_PREFIX="${PREFIX}/tmp/watchos-simulator-i386" +export WATCHOS_SIMULATOR_X86_64_PREFIX="${PREFIX}/tmp/watchos-simulator-x86_64" +export TVOS_PREFIX="${PREFIX}/tmp/tvos" +export TVOS_SIMULATOR_ARM64_PREFIX="${PREFIX}/tmp/tvos-simulator-arm64" +export TVOS_SIMULATOR_X86_64_PREFIX="${PREFIX}/tmp/tvos-simulator-x86_64" +export VISIONOS_PREFIX="${PREFIX}/tmp/visionos" +export VISIONOS_SIMULATOR_PREFIX="${PREFIX}/tmp/visionos-simulator" +export CATALYST_ARM64_PREFIX="${PREFIX}/tmp/catalyst-arm64" +export CATALYST_X86_64_PREFIX="${PREFIX}/tmp/catalyst-x86_64" +export LOG_FILE="${PREFIX}/tmp/build_log" +export XCODEDIR="$(xcode-select -p)" + +export MACOS_VERSION_MIN=${MACOS_VERSION_MIN-"10.10"} +export IOS_SIMULATOR_VERSION_MIN=${IOS_SIMULATOR_VERSION_MIN-"9.0.0"} +export IOS_VERSION_MIN=${IOS_VERSION_MIN-"9.0.0"} +export WATCHOS_SIMULATOR_VERSION_MIN=${WATCHOS_SIMULATOR_VERSION_MIN-"4.0.0"} +export WATCHOS_VERSION_MIN=${WATCHOS_VERSION_MIN-"4.0.0"} +export TVOS_SIMULATOR_VERSION_MIN=${TVOS_SIMULATOR_VERSION_MIN-"9.0.0"} +export TVOS_VERSION_MIN=${TVOS_VERSION_MIN-"9.0.0"} + +echo +echo "Warnings related to headers being present but not usable are due to functions" +echo "that didn't exist in the specified minimum iOS version level." +echo "They can be safely ignored." +echo +echo "Define the LIBSODIUM_FULL_BUILD environment variable to build the full" +echo "library (including all deprecated/undocumented/low-level functions)." +echo +echo "Define the LIBSODIUM_SKIP_SIMULATORS environment variable to skip building" +echo "the simulators libraries (iOS, watchOS, tvOS, visionOS simulators)." +echo + +if [ -z "$LIBSODIUM_FULL_BUILD" ]; then + export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" +else + export LIBSODIUM_ENABLE_MINIMAL_FLAG="" +fi + +APPLE_SILICON_SUPPORTED=false +echo 'int main(void){return 0;}' >comptest.c && cc --target=arm64-macos comptest.c 2>/dev/null && APPLE_SILICON_SUPPORTED=true +rm -f comptest.c + +NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) +PROCESSORS=${NPROCESSORS:-3} + +swift_module_map() { + echo 'module Clibsodium {' + echo ' header "sodium.h"' + echo ' export *' + echo '}' +} + +build_macos() { + export BASEDIR="${XCODEDIR}/Platforms/MacOSX.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + + ## macOS arm64 + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + export CFLAGS="-Ofast -arch arm64 -mmacosx-version-min=${MACOS_VERSION_MIN}" + export LDFLAGS="-arch arm64 -mmacosx-version-min=${MACOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin23 --prefix="$MACOS_ARM64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + fi + + ## macOS x86_64 + export CFLAGS="-Ofast -arch x86_64 -mmacosx-version-min=${MACOS_VERSION_MIN}" + export LDFLAGS="-arch x86_64 -mmacosx-version-min=${MACOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=x86_64-apple-darwin10 --prefix="$MACOS_X86_64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +build_ios() { + export BASEDIR="${XCODEDIR}/Platforms/iPhoneOS.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/iPhoneOS.sdk" + + ## 32-bit iOS + export CFLAGS="-Ofast -mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" + export LDFLAGS="-mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$IOS32_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + + ## 32-bit armv7s iOS + export CFLAGS="-Ofast -mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" + export LDFLAGS="-mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$IOS32s_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + + ## 64-bit iOS + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" + export LDFLAGS="-arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$IOS64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +build_ios_simulator() { + export BASEDIR="${XCODEDIR}/Platforms/iPhoneSimulator.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/iPhoneSimulator.sdk" + + ## arm64 simulator + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch arm64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin23 --prefix="$IOS_SIMULATOR_ARM64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + fi + + ## i386 simulator + export CFLAGS="-Ofast -arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=i686-apple-darwin10 --prefix="$IOS_SIMULATOR_I386_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + + ## x86_64 simulator + export CFLAGS="-Ofast -arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=x86_64-apple-darwin10 --prefix="$IOS_SIMULATOR_X86_64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} + make -j${PROCESSORS} install || exit 1 +} + +build_watchos() { + export BASEDIR="${XCODEDIR}/Platforms/WatchOS.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/WatchOS.sdk" + + # 32-bit watchOS + export CFLAGS="-Ofast -mthumb -arch armv7k -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}" + export LDFLAGS="-mthumb -arch armv7k -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$WATCHOS32_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + + ## 64-bit arm64_32 watchOS + export CFLAGS="-Ofast -mthumb -arch arm64_32 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}" + export LDFLAGS="-mthumb -arch arm64_32 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$WATCHOS64_32_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + + ## 64-bit arm64 watchOS + export CFLAGS="-Ofast -mthumb -arch arm64 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}" + export LDFLAGS="-mthumb -arch arm64 -isysroot ${SDK} -mwatchos-version-min=${WATCHOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$WATCHOS64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +build_watchos_simulator() { + export BASEDIR="${XCODEDIR}/Platforms/WatchSimulator.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/WatchSimulator.sdk" + + ## arm64 simulator + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch arm64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin23 --prefix="$WATCHOS_SIMULATOR_ARM64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + fi + + ## i386 simulator + export CFLAGS="-Ofast -arch i386 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch i386 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=i686-apple-darwin10 --prefix="$WATCHOS_SIMULATOR_I386_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + + ## x86_64 simulator + export CFLAGS="-Ofast -arch x86_64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mwatchos-simulator-version-min=${WATCHOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=x86_64-apple-darwin10 --prefix="$WATCHOS_SIMULATOR_X86_64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +build_tvos() { + export BASEDIR="${XCODEDIR}/Platforms/AppleTVOS.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/AppleTVOS.sdk" + + ## 64-bit tvOS + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mtvos-version-min=${TVOS_VERSION_MIN}" + export LDFLAGS="-arch arm64 -isysroot ${SDK} -mtvos-version-min=${TVOS_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$TVOS_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +build_tvos_simulator() { + export BASEDIR="${XCODEDIR}/Platforms/AppleTVSimulator.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/AppleTVSimulator.sdk" + + ## arm64 simulator + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch arm64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin23 --prefix="$TVOS_SIMULATOR_ARM64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + fi + + ## x86_64 simulator + export CFLAGS="-Ofast -arch x86_64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}" + export LDFLAGS="-arch x86_64 -isysroot ${SDK} -mtvos-simulator-version-min=${TVOS_SIMULATOR_VERSION_MIN}" + + make distclean >/dev/null 2>&1 + ./configure --host=x86_64-apple-darwin10 --prefix="$TVOS_SIMULATOR_X86_64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} + make -j${PROCESSORS} install || exit 1 +} + +build_visionos() { + export BASEDIR="${XCODEDIR}/Platforms/XROS.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/XROS.sdk" + + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK}" + export LDFLAGS="-arch arm64 -isysroot ${SDK}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin10 --prefix="$VISIONOS_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +build_visionos_simulator() { + export BASEDIR="${XCODEDIR}/Platforms/XRSimulator.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/XRSimulator.sdk" + + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK}" + export LDFLAGS="-arch arm64 -isysroot ${SDK}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-darwin23 --prefix="$VISIONOS_SIMULATOR_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + fi +} + +build_catalyst() { + export BASEDIR="${XCODEDIR}/Platforms/MacOSX.platform/Developer" + export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" + export SDK="${BASEDIR}/SDKs/MacOSX.sdk" + + ## arm64 catalyst + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + export CFLAGS="-Ofast -arch arm64 -target arm64-apple-ios13.1-macabi -isysroot ${SDK}" + export LDFLAGS="-arch arm64 -target arm64-apple-ios13.1-macabi -isysroot ${SDK}" + + make distclean >/dev/null 2>&1 + ./configure --host=arm-apple-ios --prefix="$CATALYST_ARM64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 + fi + + ## x86_64 catalyst + export CFLAGS="-Ofast -arch x86_64 -target x86_64-apple-ios13.1-macabi -isysroot ${SDK}" + export LDFLAGS="-arch x86_64 -target x86_64-apple-ios13.1-macabi -isysroot ${SDK}" + + make distclean >/dev/null 2>&1 + ./configure --host=x86_64-apple-ios --prefix="$CATALYST_X86_64_PREFIX" \ + ${LIBSODIUM_ENABLE_MINIMAL_FLAG} || exit 1 + make -j${PROCESSORS} install || exit 1 +} + +mkdir -p "${PREFIX}/tmp" + +echo "Building for macOS..." +build_macos >"$LOG_FILE" 2>&1 || exit 1 +echo "Building for iOS..." +build_ios >"$LOG_FILE" 2>&1 || exit 1 +echo "Building for watchOS..." +build_watchos >"$LOG_FILE" 2>&1 || exit 1 +echo "Building for tvOS..." +build_tvos >"$LOG_FILE" 2>&1 || exit 1 +echo "Building for visionOS..." +build_visionos >"$LOG_FILE" 2>&1 || exit 1 +echo "Building for Catalyst..." +build_catalyst >"$LOG_FILE" 2>&1 || exit 1 + +if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then + echo "Building for the iOS simulator..." + build_ios_simulator >"$LOG_FILE" 2>&1 || exit 1 + echo "Building for the watchOS simulator..." + build_watchos_simulator >"$LOG_FILE" 2>&1 || exit 1 + echo "Building for the tvOS simulator..." + build_tvos_simulator >"$LOG_FILE" 2>&1 || exit 1 + echo "Building for the visionOS simulator..." + build_visionos_simulator >"$LOG_FILE" 2>&1 || exit 1 +else + echo "[Skipping the simulators]" +fi + +echo "Adding the Clibsodium module map for Swift..." + +find "$PREFIX" -name "include" -type d -print | while read -r f; do + swift_module_map >"${f}/module.modulemap" +done + +echo "Bundling macOS targets..." + +mkdir -p "${PREFIX}/macos/lib" +cp -a "${MACOS_X86_64_PREFIX}/include" "${PREFIX}/macos/" +for ext in a dylib; do + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + lipo -create \ + "${MACOS_ARM64_PREFIX}/lib/libsodium.${ext}" \ + "${MACOS_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/macos/lib/libsodium.${ext}" + else + lipo -create \ + "${MACOS_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/macos/lib/libsodium.${ext}" + fi +done + +echo "Bundling iOS targets..." + +mkdir -p "${PREFIX}/ios/lib" +cp -a "${IOS64_PREFIX}/include" "${PREFIX}/ios/" +for ext in a dylib; do + lipo -create \ + "$IOS32_PREFIX/lib/libsodium.${ext}" \ + "$IOS32s_PREFIX/lib/libsodium.${ext}" \ + "$IOS64_PREFIX/lib/libsodium.${ext}" \ + -output "$PREFIX/ios/lib/libsodium.${ext}" +done + +echo "Bundling watchOS targets..." + +mkdir -p "${PREFIX}/watchos/lib" +cp -a "${WATCHOS64_32_PREFIX}/include" "${PREFIX}/watchos/" +for ext in a dylib; do + lipo -create \ + "${WATCHOS32_PREFIX}/lib/libsodium.${ext}" \ + "${WATCHOS64_32_PREFIX}/lib/libsodium.${ext}" \ + "${WATCHOS64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/watchos/lib/libsodium.${ext}" +done + +echo "Bundling tvOS targets..." + +mkdir -p "${PREFIX}/tvos/lib" +cp -a "${TVOS_PREFIX}/include" "${PREFIX}/tvos/" +for ext in a dylib; do + lipo -create \ + "$TVOS_PREFIX/lib/libsodium.${ext}" \ + -output "$PREFIX/tvos/lib/libsodium.${ext}" +done + +echo "Bundling visionOS targets..." + +mkdir -p "${PREFIX}/visionos/lib" +cp -a "${VISIONOS_PREFIX}/include" "${PREFIX}/visionos/" +for ext in a dylib; do + lipo -create \ + "$VISIONOS_PREFIX/lib/libsodium.${ext}" \ + -output "$PREFIX/visionos/lib/libsodium.${ext}" +done + +echo "Bundling Catalyst targets..." + +mkdir -p "${PREFIX}/catalyst/lib" +cp -a "${CATALYST_X86_64_PREFIX}/include" "${PREFIX}/catalyst/" +for ext in a dylib; do + if [ ! -f "${CATALYST_X86_64_PREFIX}/lib/libsodium.${ext}" ]; then + continue + fi + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + lipo -create \ + "${CATALYST_ARM64_PREFIX}/lib/libsodium.${ext}" \ + "${CATALYST_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/catalyst/lib/libsodium.${ext}" + else + lipo -create \ + "${CATALYST_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/catalyst/lib/libsodium.${ext}" + fi +done + +if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then + echo "Bundling iOS simulators..." + + mkdir -p "${PREFIX}/ios-simulators/lib" + cp -a "${IOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/ios-simulators/" + for ext in a dylib; do + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + lipo -create \ + "${IOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \ + "${IOS_SIMULATOR_I386_PREFIX}/lib/libsodium.${ext}" \ + "${IOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/ios-simulators/lib/libsodium.${ext}" || exit 1 + else + lipo -create \ + "${IOS_SIMULATOR_I386_PREFIX}/lib/libsodium.${ext}" \ + "${IOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/ios-simulators/lib/libsodium.${ext}" || exit 1 + fi + done + + echo "Bundling watchOS simulators..." + + mkdir -p "${PREFIX}/watchos-simulators/lib" + cp -a "${WATCHOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/watchos-simulators/" + for ext in a dylib; do + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + lipo -create \ + "${WATCHOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \ + "${WATCHOS_SIMULATOR_I386_PREFIX}/lib/libsodium.${ext}" \ + "${WATCHOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/watchos-simulators/lib/libsodium.${ext}" + else + lipo -create \ + "${WATCHOS_SIMULATOR_I386_PREFIX}/lib/libsodium.${ext}" \ + "${WATCHOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/watchos-simulators/lib/libsodium.${ext}" + fi + done + + echo "Bundling tvOS simulators..." + + mkdir -p "${PREFIX}/tvos-simulators/lib" + cp -a "${TVOS_SIMULATOR_X86_64_PREFIX}/include" "${PREFIX}/tvos-simulators/" + for ext in a dylib; do + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + lipo -create \ + "${TVOS_SIMULATOR_ARM64_PREFIX}/lib/libsodium.${ext}" \ + "${TVOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/tvos-simulators/lib/libsodium.${ext}" || exit 1 + else + lipo -create \ + "${TVOS_SIMULATOR_X86_64_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/tvos-simulators/lib/libsodium.${ext}" || exit 1 + fi + done + + echo "Bundling visionOS simulators..." + + mkdir -p "${PREFIX}/visionos-simulators/lib" + cp -a "${VISIONOS_SIMULATOR_PREFIX}/include" "${PREFIX}/visionos-simulators/" + for ext in a dylib; do + if [ "$APPLE_SILICON_SUPPORTED" = "true" ]; then + lipo -create \ + "${VISIONOS_SIMULATOR_PREFIX}/lib/libsodium.${ext}" \ + -output "${PREFIX}/visionos-simulators/lib/libsodium.${ext}" || exit 1 + fi + done +fi + +echo "Creating Clibsodium.xcframework..." + +rm -rf "${PREFIX}/Clibsodium.xcframework" + +XCFRAMEWORK_ARGS="" +for f in macos ios watchos tvos visionos catalyst; do + XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -library ${PREFIX}/${f}/lib/libsodium.a" + XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -headers ${PREFIX}/${f}/include" +done +if [ -z "$LIBSODIUM_SKIP_SIMULATORS" ]; then + for f in ios-simulators watchos-simulators tvos-simulators visionos-simulators; do + XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -library ${PREFIX}/${f}/lib/libsodium.a" + XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -headers ${PREFIX}/${f}/include" + done +fi +xcodebuild -create-xcframework \ + ${XCFRAMEWORK_ARGS} \ + -output "${PREFIX}/Clibsodium.xcframework" >/dev/null + +ls -ld -- "$PREFIX" +ls -l -- "$PREFIX" +ls -l -- "$PREFIX/Clibsodium.xcframework" + +echo "Done!" + +# Cleanup +rm -rf -- "$PREFIX/tmp" +make distclean >/dev/null diff --git a/components/espressif__libsodium/libsodium/dist-build/emscripten-symbols.def b/components/espressif__libsodium/libsodium/dist-build/emscripten-symbols.def new file mode 100644 index 0000000..40d8699 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/emscripten-symbols.def @@ -0,0 +1,651 @@ +_crypto_aead_aegis128l_abytes 0 1 +_crypto_aead_aegis128l_decrypt 0 1 +_crypto_aead_aegis128l_decrypt_detached 0 1 +_crypto_aead_aegis128l_encrypt 0 1 +_crypto_aead_aegis128l_encrypt_detached 0 1 +_crypto_aead_aegis128l_keybytes 0 1 +_crypto_aead_aegis128l_keygen 0 1 +_crypto_aead_aegis128l_messagebytes_max 0 1 +_crypto_aead_aegis128l_npubbytes 0 1 +_crypto_aead_aegis128l_nsecbytes 0 1 +_crypto_aead_aegis256_abytes 0 1 +_crypto_aead_aegis256_decrypt 0 1 +_crypto_aead_aegis256_decrypt_detached 0 1 +_crypto_aead_aegis256_encrypt 0 1 +_crypto_aead_aegis256_encrypt_detached 0 1 +_crypto_aead_aegis256_keybytes 0 1 +_crypto_aead_aegis256_keygen 0 1 +_crypto_aead_aegis256_messagebytes_max 0 1 +_crypto_aead_aegis256_npubbytes 0 1 +_crypto_aead_aegis256_nsecbytes 0 1 +_crypto_aead_aes256gcm_abytes 0 0 +_crypto_aead_aes256gcm_beforenm 0 0 +_crypto_aead_aes256gcm_decrypt 0 0 +_crypto_aead_aes256gcm_decrypt_afternm 0 0 +_crypto_aead_aes256gcm_decrypt_detached 0 0 +_crypto_aead_aes256gcm_decrypt_detached_afternm 0 0 +_crypto_aead_aes256gcm_encrypt 0 0 +_crypto_aead_aes256gcm_encrypt_afternm 0 0 +_crypto_aead_aes256gcm_encrypt_detached 0 0 +_crypto_aead_aes256gcm_encrypt_detached_afternm 0 0 +_crypto_aead_aes256gcm_is_available 0 0 +_crypto_aead_aes256gcm_keybytes 0 0 +_crypto_aead_aes256gcm_keygen 0 0 +_crypto_aead_aes256gcm_messagebytes_max 0 0 +_crypto_aead_aes256gcm_npubbytes 0 0 +_crypto_aead_aes256gcm_nsecbytes 0 0 +_crypto_aead_aes256gcm_statebytes 0 0 +_crypto_aead_chacha20poly1305_abytes 1 1 +_crypto_aead_chacha20poly1305_decrypt 1 1 +_crypto_aead_chacha20poly1305_decrypt_detached 1 1 +_crypto_aead_chacha20poly1305_encrypt 1 1 +_crypto_aead_chacha20poly1305_encrypt_detached 1 1 +_crypto_aead_chacha20poly1305_ietf_abytes 1 1 +_crypto_aead_chacha20poly1305_ietf_decrypt 1 1 +_crypto_aead_chacha20poly1305_ietf_decrypt_detached 1 1 +_crypto_aead_chacha20poly1305_ietf_encrypt 1 1 +_crypto_aead_chacha20poly1305_ietf_encrypt_detached 1 1 +_crypto_aead_chacha20poly1305_ietf_keybytes 1 1 +_crypto_aead_chacha20poly1305_ietf_keygen 1 1 +_crypto_aead_chacha20poly1305_ietf_messagebytes_max 1 1 +_crypto_aead_chacha20poly1305_ietf_npubbytes 1 1 +_crypto_aead_chacha20poly1305_ietf_nsecbytes 1 1 +_crypto_aead_chacha20poly1305_keybytes 1 1 +_crypto_aead_chacha20poly1305_keygen 1 1 +_crypto_aead_chacha20poly1305_messagebytes_max 1 1 +_crypto_aead_chacha20poly1305_npubbytes 1 1 +_crypto_aead_chacha20poly1305_nsecbytes 1 1 +_crypto_aead_xchacha20poly1305_ietf_abytes 1 1 +_crypto_aead_xchacha20poly1305_ietf_decrypt 1 1 +_crypto_aead_xchacha20poly1305_ietf_decrypt_detached 1 1 +_crypto_aead_xchacha20poly1305_ietf_encrypt 1 1 +_crypto_aead_xchacha20poly1305_ietf_encrypt_detached 1 1 +_crypto_aead_xchacha20poly1305_ietf_keybytes 1 1 +_crypto_aead_xchacha20poly1305_ietf_keygen 1 1 +_crypto_aead_xchacha20poly1305_ietf_messagebytes_max 1 1 +_crypto_aead_xchacha20poly1305_ietf_npubbytes 1 1 +_crypto_aead_xchacha20poly1305_ietf_nsecbytes 1 1 +_crypto_auth 1 1 +_crypto_auth_bytes 1 1 +_crypto_auth_hmacsha256 0 1 +_crypto_auth_hmacsha256_bytes 0 1 +_crypto_auth_hmacsha256_final 0 1 +_crypto_auth_hmacsha256_init 0 1 +_crypto_auth_hmacsha256_keybytes 0 1 +_crypto_auth_hmacsha256_keygen 0 1 +_crypto_auth_hmacsha256_statebytes 0 1 +_crypto_auth_hmacsha256_update 0 1 +_crypto_auth_hmacsha256_verify 0 1 +_crypto_auth_hmacsha512 0 1 +_crypto_auth_hmacsha512256 0 1 +_crypto_auth_hmacsha512256_bytes 0 1 +_crypto_auth_hmacsha512256_final 0 1 +_crypto_auth_hmacsha512256_init 0 1 +_crypto_auth_hmacsha512256_keybytes 0 1 +_crypto_auth_hmacsha512256_keygen 0 1 +_crypto_auth_hmacsha512256_statebytes 0 1 +_crypto_auth_hmacsha512256_update 0 1 +_crypto_auth_hmacsha512256_verify 0 1 +_crypto_auth_hmacsha512_bytes 0 1 +_crypto_auth_hmacsha512_final 0 1 +_crypto_auth_hmacsha512_init 0 1 +_crypto_auth_hmacsha512_keybytes 0 1 +_crypto_auth_hmacsha512_keygen 0 1 +_crypto_auth_hmacsha512_statebytes 0 1 +_crypto_auth_hmacsha512_update 0 1 +_crypto_auth_hmacsha512_verify 0 1 +_crypto_auth_keybytes 1 1 +_crypto_auth_keygen 1 1 +_crypto_auth_primitive 0 1 +_crypto_auth_verify 1 1 +_crypto_box 0 1 +_crypto_box_afternm 0 1 +_crypto_box_beforenm 1 1 +_crypto_box_beforenmbytes 1 1 +_crypto_box_boxzerobytes 0 1 +_crypto_box_curve25519xchacha20poly1305_beforenm 0 1 +_crypto_box_curve25519xchacha20poly1305_beforenmbytes 0 1 +_crypto_box_curve25519xchacha20poly1305_detached 0 1 +_crypto_box_curve25519xchacha20poly1305_detached_afternm 0 1 +_crypto_box_curve25519xchacha20poly1305_easy 0 1 +_crypto_box_curve25519xchacha20poly1305_easy_afternm 0 1 +_crypto_box_curve25519xchacha20poly1305_keypair 0 1 +_crypto_box_curve25519xchacha20poly1305_macbytes 0 1 +_crypto_box_curve25519xchacha20poly1305_messagebytes_max 0 1 +_crypto_box_curve25519xchacha20poly1305_noncebytes 0 1 +_crypto_box_curve25519xchacha20poly1305_open_detached 0 1 +_crypto_box_curve25519xchacha20poly1305_open_detached_afternm 0 1 +_crypto_box_curve25519xchacha20poly1305_open_easy 0 1 +_crypto_box_curve25519xchacha20poly1305_open_easy_afternm 0 1 +_crypto_box_curve25519xchacha20poly1305_publickeybytes 0 1 +_crypto_box_curve25519xchacha20poly1305_seal 0 1 +_crypto_box_curve25519xchacha20poly1305_seal_open 0 1 +_crypto_box_curve25519xchacha20poly1305_sealbytes 0 1 +_crypto_box_curve25519xchacha20poly1305_secretkeybytes 0 1 +_crypto_box_curve25519xchacha20poly1305_seed_keypair 0 1 +_crypto_box_curve25519xchacha20poly1305_seedbytes 0 1 +_crypto_box_curve25519xsalsa20poly1305 0 1 +_crypto_box_curve25519xsalsa20poly1305_afternm 0 1 +_crypto_box_curve25519xsalsa20poly1305_beforenm 0 1 +_crypto_box_curve25519xsalsa20poly1305_beforenmbytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_boxzerobytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_keypair 0 1 +_crypto_box_curve25519xsalsa20poly1305_macbytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_messagebytes_max 0 1 +_crypto_box_curve25519xsalsa20poly1305_noncebytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_open 0 1 +_crypto_box_curve25519xsalsa20poly1305_open_afternm 0 1 +_crypto_box_curve25519xsalsa20poly1305_publickeybytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_secretkeybytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_seed_keypair 0 1 +_crypto_box_curve25519xsalsa20poly1305_seedbytes 0 1 +_crypto_box_curve25519xsalsa20poly1305_zerobytes 0 1 +_crypto_box_detached 1 1 +_crypto_box_detached_afternm 1 1 +_crypto_box_easy 1 1 +_crypto_box_easy_afternm 1 1 +_crypto_box_keypair 1 1 +_crypto_box_macbytes 1 1 +_crypto_box_messagebytes_max 1 1 +_crypto_box_noncebytes 1 1 +_crypto_box_open 0 1 +_crypto_box_open_afternm 0 1 +_crypto_box_open_detached 1 1 +_crypto_box_open_detached_afternm 1 1 +_crypto_box_open_easy 1 1 +_crypto_box_open_easy_afternm 1 1 +_crypto_box_primitive 0 1 +_crypto_box_publickeybytes 1 1 +_crypto_box_seal 1 1 +_crypto_box_seal_open 1 1 +_crypto_box_sealbytes 1 1 +_crypto_box_secretkeybytes 1 1 +_crypto_box_seed_keypair 1 1 +_crypto_box_seedbytes 1 1 +_crypto_box_zerobytes 0 1 +_crypto_core_ed25519_add 0 1 +_crypto_core_ed25519_bytes 0 1 +_crypto_core_ed25519_from_hash 0 0 +_crypto_core_ed25519_from_uniform 0 1 +_crypto_core_ed25519_hashbytes 0 1 +_crypto_core_ed25519_is_valid_point 0 1 +_crypto_core_ed25519_nonreducedscalarbytes 0 1 +_crypto_core_ed25519_random 0 1 +_crypto_core_ed25519_scalar_add 0 1 +_crypto_core_ed25519_scalar_complement 0 1 +_crypto_core_ed25519_scalar_invert 0 1 +_crypto_core_ed25519_scalar_is_canonical 0 1 +_crypto_core_ed25519_scalar_mul 0 1 +_crypto_core_ed25519_scalar_negate 0 1 +_crypto_core_ed25519_scalar_random 0 1 +_crypto_core_ed25519_scalar_reduce 0 1 +_crypto_core_ed25519_scalar_sub 0 1 +_crypto_core_ed25519_scalarbytes 0 1 +_crypto_core_ed25519_sub 0 1 +_crypto_core_ed25519_uniformbytes 0 1 +_crypto_core_hchacha20 0 1 +_crypto_core_hchacha20_constbytes 0 1 +_crypto_core_hchacha20_inputbytes 0 1 +_crypto_core_hchacha20_keybytes 0 1 +_crypto_core_hchacha20_outputbytes 0 1 +_crypto_core_hsalsa20 0 1 +_crypto_core_hsalsa20_constbytes 0 1 +_crypto_core_hsalsa20_inputbytes 0 1 +_crypto_core_hsalsa20_keybytes 0 1 +_crypto_core_hsalsa20_outputbytes 0 1 +_crypto_core_ristretto255_add 0 1 +_crypto_core_ristretto255_bytes 0 1 +_crypto_core_ristretto255_from_hash 0 1 +_crypto_core_ristretto255_hashbytes 0 1 +_crypto_core_ristretto255_is_valid_point 0 1 +_crypto_core_ristretto255_nonreducedscalarbytes 0 1 +_crypto_core_ristretto255_random 0 1 +_crypto_core_ristretto255_scalar_add 0 1 +_crypto_core_ristretto255_scalar_complement 0 1 +_crypto_core_ristretto255_scalar_invert 0 1 +_crypto_core_ristretto255_scalar_is_canonical 0 1 +_crypto_core_ristretto255_scalar_mul 0 1 +_crypto_core_ristretto255_scalar_negate 0 1 +_crypto_core_ristretto255_scalar_random 0 1 +_crypto_core_ristretto255_scalar_reduce 0 1 +_crypto_core_ristretto255_scalar_sub 0 1 +_crypto_core_ristretto255_scalarbytes 0 1 +_crypto_core_ristretto255_sub 0 1 +_crypto_core_ristretto255_uniformbytes 0 1 +_crypto_core_salsa20 0 1 +_crypto_core_salsa2012 0 1 +_crypto_core_salsa2012_constbytes 0 1 +_crypto_core_salsa2012_inputbytes 0 1 +_crypto_core_salsa2012_keybytes 0 1 +_crypto_core_salsa2012_outputbytes 0 1 +_crypto_core_salsa208 0 1 +_crypto_core_salsa208_constbytes 0 1 +_crypto_core_salsa208_inputbytes 0 1 +_crypto_core_salsa208_keybytes 0 1 +_crypto_core_salsa208_outputbytes 0 1 +_crypto_core_salsa20_constbytes 0 1 +_crypto_core_salsa20_inputbytes 0 1 +_crypto_core_salsa20_keybytes 0 1 +_crypto_core_salsa20_outputbytes 0 1 +_crypto_generichash 1 1 +_crypto_generichash_blake2b 0 1 +_crypto_generichash_blake2b_bytes 0 1 +_crypto_generichash_blake2b_bytes_max 0 1 +_crypto_generichash_blake2b_bytes_min 0 1 +_crypto_generichash_blake2b_final 0 1 +_crypto_generichash_blake2b_init 0 1 +_crypto_generichash_blake2b_init_salt_personal 0 1 +_crypto_generichash_blake2b_keybytes 0 1 +_crypto_generichash_blake2b_keybytes_max 0 1 +_crypto_generichash_blake2b_keybytes_min 0 1 +_crypto_generichash_blake2b_keygen 0 1 +_crypto_generichash_blake2b_personalbytes 0 1 +_crypto_generichash_blake2b_salt_personal 0 1 +_crypto_generichash_blake2b_saltbytes 0 1 +_crypto_generichash_blake2b_statebytes 0 1 +_crypto_generichash_blake2b_update 0 1 +_crypto_generichash_bytes 1 1 +_crypto_generichash_bytes_max 1 1 +_crypto_generichash_bytes_min 1 1 +_crypto_generichash_final 1 1 +_crypto_generichash_init 1 1 +_crypto_generichash_keybytes 1 1 +_crypto_generichash_keybytes_max 1 1 +_crypto_generichash_keybytes_min 1 1 +_crypto_generichash_keygen 1 1 +_crypto_generichash_primitive 0 1 +_crypto_generichash_statebytes 1 1 +_crypto_generichash_update 1 1 +_crypto_hash 1 1 +_crypto_hash_bytes 1 1 +_crypto_hash_primitive 0 1 +_crypto_hash_sha256 0 1 +_crypto_hash_sha256_bytes 0 1 +_crypto_hash_sha256_final 0 1 +_crypto_hash_sha256_init 0 1 +_crypto_hash_sha256_statebytes 0 1 +_crypto_hash_sha256_update 0 1 +_crypto_hash_sha512 0 1 +_crypto_hash_sha512_bytes 0 1 +_crypto_hash_sha512_final 0 1 +_crypto_hash_sha512_init 0 1 +_crypto_hash_sha512_statebytes 0 1 +_crypto_hash_sha512_update 0 1 +_crypto_kdf_blake2b_bytes_max 0 1 +_crypto_kdf_blake2b_bytes_min 0 1 +_crypto_kdf_blake2b_contextbytes 0 1 +_crypto_kdf_blake2b_derive_from_key 0 1 +_crypto_kdf_blake2b_keybytes 0 1 +_crypto_kdf_bytes_max 1 1 +_crypto_kdf_bytes_min 1 1 +_crypto_kdf_contextbytes 1 1 +_crypto_kdf_derive_from_key 1 1 +_crypto_kdf_hkdf_sha256_bytes_max 1 1 +_crypto_kdf_hkdf_sha256_bytes_min 1 1 +_crypto_kdf_hkdf_sha256_expand 1 1 +_crypto_kdf_hkdf_sha256_extract 1 1 +_crypto_kdf_hkdf_sha256_extract_final 1 1 +_crypto_kdf_hkdf_sha256_extract_init 1 1 +_crypto_kdf_hkdf_sha256_statebytes 1 1 +_crypto_kdf_hkdf_sha256_extract_update 1 1 +_crypto_kdf_hkdf_sha256_keybytes 1 1 +_crypto_kdf_hkdf_sha256_keygen 1 1 +_crypto_kdf_hkdf_sha512_bytes_max 1 1 +_crypto_kdf_hkdf_sha512_bytes_min 1 1 +_crypto_kdf_hkdf_sha512_expand 1 1 +_crypto_kdf_hkdf_sha512_extract 1 1 +_crypto_kdf_hkdf_sha512_extract_final 1 1 +_crypto_kdf_hkdf_sha512_extract_init 1 1 +_crypto_kdf_hkdf_sha512_statebytes 1 1 +_crypto_kdf_hkdf_sha512_extract_update 1 1 +_crypto_kdf_hkdf_sha512_keybytes 1 1 +_crypto_kdf_hkdf_sha512_keygen 1 1 +_crypto_kdf_keybytes 1 1 +_crypto_kdf_keygen 1 1 +_crypto_kdf_primitive 0 1 +_crypto_kx_client_session_keys 1 1 +_crypto_kx_keypair 1 1 +_crypto_kx_primitive 0 1 +_crypto_kx_publickeybytes 1 1 +_crypto_kx_secretkeybytes 1 1 +_crypto_kx_seed_keypair 1 1 +_crypto_kx_seedbytes 1 1 +_crypto_kx_server_session_keys 1 1 +_crypto_kx_sessionkeybytes 1 1 +_crypto_onetimeauth 0 1 +_crypto_onetimeauth_bytes 0 1 +_crypto_onetimeauth_final 0 1 +_crypto_onetimeauth_init 0 1 +_crypto_onetimeauth_keybytes 0 1 +_crypto_onetimeauth_keygen 0 1 +_crypto_onetimeauth_poly1305 0 1 +_crypto_onetimeauth_poly1305_bytes 0 1 +_crypto_onetimeauth_poly1305_final 0 1 +_crypto_onetimeauth_poly1305_init 0 1 +_crypto_onetimeauth_poly1305_keybytes 0 1 +_crypto_onetimeauth_poly1305_keygen 0 1 +_crypto_onetimeauth_poly1305_statebytes 0 1 +_crypto_onetimeauth_poly1305_update 0 1 +_crypto_onetimeauth_poly1305_verify 0 1 +_crypto_onetimeauth_primitive 0 1 +_crypto_onetimeauth_statebytes 0 1 +_crypto_onetimeauth_update 0 1 +_crypto_onetimeauth_verify 0 1 +_crypto_pwhash 0 1 +_crypto_pwhash_alg_argon2i13 0 1 +_crypto_pwhash_alg_argon2id13 0 1 +_crypto_pwhash_alg_default 0 1 +_crypto_pwhash_argon2i 0 1 +_crypto_pwhash_argon2i_alg_argon2i13 0 1 +_crypto_pwhash_argon2i_bytes_max 0 1 +_crypto_pwhash_argon2i_bytes_min 0 1 +_crypto_pwhash_argon2i_memlimit_interactive 0 1 +_crypto_pwhash_argon2i_memlimit_max 0 1 +_crypto_pwhash_argon2i_memlimit_min 0 1 +_crypto_pwhash_argon2i_memlimit_moderate 0 1 +_crypto_pwhash_argon2i_memlimit_sensitive 0 1 +_crypto_pwhash_argon2i_opslimit_interactive 0 1 +_crypto_pwhash_argon2i_opslimit_max 0 1 +_crypto_pwhash_argon2i_opslimit_min 0 1 +_crypto_pwhash_argon2i_opslimit_moderate 0 1 +_crypto_pwhash_argon2i_opslimit_sensitive 0 1 +_crypto_pwhash_argon2i_passwd_max 0 1 +_crypto_pwhash_argon2i_passwd_min 0 1 +_crypto_pwhash_argon2i_saltbytes 0 1 +_crypto_pwhash_argon2i_str 0 1 +_crypto_pwhash_argon2i_str_needs_rehash 0 1 +_crypto_pwhash_argon2i_str_verify 0 1 +_crypto_pwhash_argon2i_strbytes 0 1 +_crypto_pwhash_argon2i_strprefix 0 1 +_crypto_pwhash_argon2id 0 1 +_crypto_pwhash_argon2id_alg_argon2id13 0 1 +_crypto_pwhash_argon2id_bytes_max 0 1 +_crypto_pwhash_argon2id_bytes_min 0 1 +_crypto_pwhash_argon2id_memlimit_interactive 0 1 +_crypto_pwhash_argon2id_memlimit_max 0 1 +_crypto_pwhash_argon2id_memlimit_min 0 1 +_crypto_pwhash_argon2id_memlimit_moderate 0 1 +_crypto_pwhash_argon2id_memlimit_sensitive 0 1 +_crypto_pwhash_argon2id_opslimit_interactive 0 1 +_crypto_pwhash_argon2id_opslimit_max 0 1 +_crypto_pwhash_argon2id_opslimit_min 0 1 +_crypto_pwhash_argon2id_opslimit_moderate 0 1 +_crypto_pwhash_argon2id_opslimit_sensitive 0 1 +_crypto_pwhash_argon2id_passwd_max 0 1 +_crypto_pwhash_argon2id_passwd_min 0 1 +_crypto_pwhash_argon2id_saltbytes 0 1 +_crypto_pwhash_argon2id_str 0 1 +_crypto_pwhash_argon2id_str_needs_rehash 0 1 +_crypto_pwhash_argon2id_str_verify 0 1 +_crypto_pwhash_argon2id_strbytes 0 1 +_crypto_pwhash_argon2id_strprefix 0 1 +_crypto_pwhash_bytes_max 0 1 +_crypto_pwhash_bytes_min 0 1 +_crypto_pwhash_memlimit_interactive 0 1 +_crypto_pwhash_memlimit_max 0 1 +_crypto_pwhash_memlimit_min 0 1 +_crypto_pwhash_memlimit_moderate 0 1 +_crypto_pwhash_memlimit_sensitive 0 1 +_crypto_pwhash_opslimit_interactive 0 1 +_crypto_pwhash_opslimit_max 0 1 +_crypto_pwhash_opslimit_min 0 1 +_crypto_pwhash_opslimit_moderate 0 1 +_crypto_pwhash_opslimit_sensitive 0 1 +_crypto_pwhash_passwd_max 0 1 +_crypto_pwhash_passwd_min 0 1 +_crypto_pwhash_primitive 0 1 +_crypto_pwhash_saltbytes 0 1 +_crypto_pwhash_scryptsalsa208sha256 0 1 +_crypto_pwhash_scryptsalsa208sha256_bytes_max 0 1 +_crypto_pwhash_scryptsalsa208sha256_bytes_min 0 1 +_crypto_pwhash_scryptsalsa208sha256_ll 0 1 +_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive 0 1 +_crypto_pwhash_scryptsalsa208sha256_memlimit_max 0 1 +_crypto_pwhash_scryptsalsa208sha256_memlimit_min 0 1 +_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive 0 1 +_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive 0 1 +_crypto_pwhash_scryptsalsa208sha256_opslimit_max 0 1 +_crypto_pwhash_scryptsalsa208sha256_opslimit_min 0 1 +_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive 0 1 +_crypto_pwhash_scryptsalsa208sha256_passwd_max 0 1 +_crypto_pwhash_scryptsalsa208sha256_passwd_min 0 1 +_crypto_pwhash_scryptsalsa208sha256_saltbytes 0 1 +_crypto_pwhash_scryptsalsa208sha256_str 0 1 +_crypto_pwhash_scryptsalsa208sha256_str_needs_rehash 0 1 +_crypto_pwhash_scryptsalsa208sha256_str_verify 0 1 +_crypto_pwhash_scryptsalsa208sha256_strbytes 0 1 +_crypto_pwhash_scryptsalsa208sha256_strprefix 0 1 +_crypto_pwhash_str 0 1 +_crypto_pwhash_str_alg 0 1 +_crypto_pwhash_str_needs_rehash 0 1 +_crypto_pwhash_str_verify 0 1 +_crypto_pwhash_strbytes 0 1 +_crypto_pwhash_strprefix 0 1 +_crypto_scalarmult 1 1 +_crypto_scalarmult_base 1 1 +_crypto_scalarmult_bytes 1 1 +_crypto_scalarmult_curve25519 0 1 +_crypto_scalarmult_curve25519_base 0 1 +_crypto_scalarmult_curve25519_bytes 0 1 +_crypto_scalarmult_curve25519_scalarbytes 0 1 +_crypto_scalarmult_ed25519 0 1 +_crypto_scalarmult_ed25519_base 0 1 +_crypto_scalarmult_ed25519_base_noclamp 0 1 +_crypto_scalarmult_ed25519_bytes 0 1 +_crypto_scalarmult_ed25519_noclamp 0 1 +_crypto_scalarmult_ed25519_scalarbytes 0 1 +_crypto_scalarmult_primitive 0 1 +_crypto_scalarmult_ristretto255 0 1 +_crypto_scalarmult_ristretto255_base 0 1 +_crypto_scalarmult_ristretto255_bytes 0 1 +_crypto_scalarmult_ristretto255_scalarbytes 0 1 +_crypto_scalarmult_scalarbytes 1 1 +_crypto_secretbox 0 1 +_crypto_secretbox_boxzerobytes 0 1 +_crypto_secretbox_detached 1 1 +_crypto_secretbox_easy 1 1 +_crypto_secretbox_keybytes 1 1 +_crypto_secretbox_keygen 1 1 +_crypto_secretbox_macbytes 1 1 +_crypto_secretbox_messagebytes_max 1 1 +_crypto_secretbox_noncebytes 1 1 +_crypto_secretbox_open 0 1 +_crypto_secretbox_open_detached 1 1 +_crypto_secretbox_open_easy 1 1 +_crypto_secretbox_primitive 0 1 +_crypto_secretbox_xchacha20poly1305_detached 0 1 +_crypto_secretbox_xchacha20poly1305_easy 0 1 +_crypto_secretbox_xchacha20poly1305_keybytes 0 1 +_crypto_secretbox_xchacha20poly1305_macbytes 0 1 +_crypto_secretbox_xchacha20poly1305_messagebytes_max 0 1 +_crypto_secretbox_xchacha20poly1305_noncebytes 0 1 +_crypto_secretbox_xchacha20poly1305_open_detached 0 1 +_crypto_secretbox_xchacha20poly1305_open_easy 0 1 +_crypto_secretbox_xsalsa20poly1305 0 1 +_crypto_secretbox_xsalsa20poly1305_boxzerobytes 0 1 +_crypto_secretbox_xsalsa20poly1305_keybytes 0 1 +_crypto_secretbox_xsalsa20poly1305_keygen 0 1 +_crypto_secretbox_xsalsa20poly1305_macbytes 0 1 +_crypto_secretbox_xsalsa20poly1305_messagebytes_max 0 1 +_crypto_secretbox_xsalsa20poly1305_noncebytes 0 1 +_crypto_secretbox_xsalsa20poly1305_open 0 1 +_crypto_secretbox_xsalsa20poly1305_zerobytes 0 1 +_crypto_secretbox_zerobytes 0 1 +_crypto_secretstream_xchacha20poly1305_abytes 1 1 +_crypto_secretstream_xchacha20poly1305_headerbytes 1 1 +_crypto_secretstream_xchacha20poly1305_init_pull 1 1 +_crypto_secretstream_xchacha20poly1305_init_push 1 1 +_crypto_secretstream_xchacha20poly1305_keybytes 1 1 +_crypto_secretstream_xchacha20poly1305_keygen 1 1 +_crypto_secretstream_xchacha20poly1305_messagebytes_max 1 1 +_crypto_secretstream_xchacha20poly1305_pull 1 1 +_crypto_secretstream_xchacha20poly1305_push 1 1 +_crypto_secretstream_xchacha20poly1305_rekey 1 1 +_crypto_secretstream_xchacha20poly1305_statebytes 1 1 +_crypto_secretstream_xchacha20poly1305_tag_final 1 1 +_crypto_secretstream_xchacha20poly1305_tag_message 1 1 +_crypto_secretstream_xchacha20poly1305_tag_push 1 1 +_crypto_secretstream_xchacha20poly1305_tag_rekey 1 1 +_crypto_shorthash 1 1 +_crypto_shorthash_bytes 1 1 +_crypto_shorthash_keybytes 1 1 +_crypto_shorthash_keygen 1 1 +_crypto_shorthash_primitive 0 1 +_crypto_shorthash_siphash24 0 1 +_crypto_shorthash_siphash24_bytes 0 1 +_crypto_shorthash_siphash24_keybytes 0 1 +_crypto_shorthash_siphashx24 0 1 +_crypto_shorthash_siphashx24_bytes 0 1 +_crypto_shorthash_siphashx24_keybytes 0 1 +_crypto_sign 1 1 +_crypto_sign_bytes 1 1 +_crypto_sign_detached 1 1 +_crypto_sign_ed25519 0 1 +_crypto_sign_ed25519_bytes 0 1 +_crypto_sign_ed25519_detached 0 1 +_crypto_sign_ed25519_keypair 0 1 +_crypto_sign_ed25519_messagebytes_max 0 1 +_crypto_sign_ed25519_open 0 1 +_crypto_sign_ed25519_pk_to_curve25519 1 1 +_crypto_sign_ed25519_publickeybytes 0 1 +_crypto_sign_ed25519_secretkeybytes 0 1 +_crypto_sign_ed25519_seed_keypair 0 1 +_crypto_sign_ed25519_seedbytes 0 1 +_crypto_sign_ed25519_sk_to_curve25519 1 1 +_crypto_sign_ed25519_sk_to_pk 0 1 +_crypto_sign_ed25519_sk_to_seed 0 1 +_crypto_sign_ed25519_verify_detached 0 1 +_crypto_sign_ed25519ph_final_create 0 1 +_crypto_sign_ed25519ph_final_verify 0 1 +_crypto_sign_ed25519ph_init 0 1 +_crypto_sign_ed25519ph_statebytes 0 1 +_crypto_sign_ed25519ph_update 0 1 +_crypto_sign_edwards25519sha512batch 0 0 +_crypto_sign_edwards25519sha512batch_keypair 0 0 +_crypto_sign_edwards25519sha512batch_open 0 0 +_crypto_sign_final_create 1 1 +_crypto_sign_final_verify 1 1 +_crypto_sign_init 1 1 +_crypto_sign_keypair 1 1 +_crypto_sign_messagebytes_max 1 1 +_crypto_sign_open 1 1 +_crypto_sign_primitive 0 1 +_crypto_sign_publickeybytes 1 1 +_crypto_sign_secretkeybytes 1 1 +_crypto_sign_seed_keypair 1 1 +_crypto_sign_seedbytes 1 1 +_crypto_sign_statebytes 1 1 +_crypto_sign_update 1 1 +_crypto_sign_verify_detached 1 1 +_crypto_stream 0 1 +_crypto_stream_chacha20 0 1 +_crypto_stream_chacha20_ietf 0 1 +_crypto_stream_chacha20_ietf_keybytes 0 1 +_crypto_stream_chacha20_ietf_keygen 0 1 +_crypto_stream_chacha20_ietf_messagebytes_max 0 1 +_crypto_stream_chacha20_ietf_noncebytes 0 1 +_crypto_stream_chacha20_ietf_xor 0 1 +_crypto_stream_chacha20_ietf_xor_ic 0 1 +_crypto_stream_chacha20_keybytes 0 1 +_crypto_stream_chacha20_keygen 0 1 +_crypto_stream_chacha20_messagebytes_max 0 1 +_crypto_stream_chacha20_noncebytes 0 1 +_crypto_stream_chacha20_xor 0 1 +_crypto_stream_chacha20_xor_ic 0 1 +_crypto_stream_keybytes 0 1 +_crypto_stream_keygen 0 1 +_crypto_stream_messagebytes_max 0 1 +_crypto_stream_noncebytes 0 1 +_crypto_stream_primitive 0 1 +_crypto_stream_salsa20 0 1 +_crypto_stream_salsa2012 0 1 +_crypto_stream_salsa2012_keybytes 0 1 +_crypto_stream_salsa2012_keygen 0 1 +_crypto_stream_salsa2012_messagebytes_max 0 1 +_crypto_stream_salsa2012_noncebytes 0 1 +_crypto_stream_salsa2012_xor 0 1 +_crypto_stream_salsa208 0 1 +_crypto_stream_salsa208_keybytes 0 1 +_crypto_stream_salsa208_keygen 0 1 +_crypto_stream_salsa208_messagebytes_max 0 1 +_crypto_stream_salsa208_noncebytes 0 1 +_crypto_stream_salsa208_xor 0 1 +_crypto_stream_salsa20_keybytes 0 1 +_crypto_stream_salsa20_keygen 0 1 +_crypto_stream_salsa20_messagebytes_max 0 1 +_crypto_stream_salsa20_noncebytes 0 1 +_crypto_stream_salsa20_xor 0 1 +_crypto_stream_salsa20_xor_ic 0 1 +_crypto_stream_xchacha20 0 1 +_crypto_stream_xchacha20_keybytes 0 1 +_crypto_stream_xchacha20_keygen 0 1 +_crypto_stream_xchacha20_messagebytes_max 0 1 +_crypto_stream_xchacha20_noncebytes 0 1 +_crypto_stream_xchacha20_xor 0 1 +_crypto_stream_xchacha20_xor_ic 0 1 +_crypto_stream_xor 0 1 +_crypto_stream_xsalsa20 0 1 +_crypto_stream_xsalsa20_keybytes 0 1 +_crypto_stream_xsalsa20_keygen 0 1 +_crypto_stream_xsalsa20_messagebytes_max 0 1 +_crypto_stream_xsalsa20_noncebytes 0 1 +_crypto_stream_xsalsa20_xor 0 1 +_crypto_stream_xsalsa20_xor_ic 0 1 +_crypto_verify_16 0 1 +_crypto_verify_16_bytes 0 1 +_crypto_verify_32 0 1 +_crypto_verify_32_bytes 0 1 +_crypto_verify_64 0 1 +_crypto_verify_64_bytes 0 1 +_randombytes 1 1 +_randombytes_buf 1 1 +_randombytes_buf_deterministic 1 1 +_randombytes_close 1 1 +_randombytes_implementation_name 0 1 +_randombytes_random 1 1 +_randombytes_seedbytes 1 1 +_randombytes_set_implementation 0 0 +_randombytes_stir 1 1 +_randombytes_uniform 1 1 +_sodium_add 0 0 +_sodium_allocarray 0 0 +_sodium_base642bin 1 1 +_sodium_base64_encoded_len 1 1 +_sodium_bin2base64 1 1 +_sodium_bin2hex 1 1 +_sodium_compare 0 0 +_sodium_free 0 0 +_sodium_hex2bin 1 1 +_sodium_increment 0 0 +_sodium_init 1 1 +_sodium_is_zero 0 0 +_sodium_library_minimal 1 1 +_sodium_library_version_major 1 1 +_sodium_library_version_minor 1 1 +_sodium_malloc 0 0 +_sodium_memcmp 0 0 +_sodium_memzero 0 0 +_sodium_misuse 0 0 +_sodium_mlock 0 0 +_sodium_mprotect_noaccess 0 0 +_sodium_mprotect_readonly 0 0 +_sodium_mprotect_readwrite 0 0 +_sodium_munlock 0 0 +_sodium_pad 1 1 +_sodium_runtime_has_aesni 0 0 +_sodium_runtime_has_armcrypto 0 0 +_sodium_runtime_has_avx 0 0 +_sodium_runtime_has_avx2 0 0 +_sodium_runtime_has_avx512f 0 0 +_sodium_runtime_has_neon 0 0 +_sodium_runtime_has_pclmul 0 0 +_sodium_runtime_has_rdrand 0 0 +_sodium_runtime_has_sse2 0 0 +_sodium_runtime_has_sse3 0 0 +_sodium_runtime_has_sse41 0 0 +_sodium_runtime_has_ssse3 0 0 +_sodium_set_misuse_handler 0 0 +_sodium_stackzero 0 0 +_sodium_sub 0 0 +_sodium_unpad 1 1 +_sodium_version_string 1 1 diff --git a/components/espressif__libsodium/libsodium/dist-build/emscripten.sh b/components/espressif__libsodium/libsodium/dist-build/emscripten.sh new file mode 100644 index 0000000..000ea81 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/emscripten.sh @@ -0,0 +1,206 @@ +#! /bin/sh + +export MAKE_FLAGS='-j4' +export EXPORTED_FUNCTIONS_STANDARD='["_malloc","_free","_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_decrypt_detached","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_abytes","_crypto_aead_chacha20poly1305_ietf_decrypt","_crypto_aead_chacha20poly1305_ietf_decrypt_detached","_crypto_aead_chacha20poly1305_ietf_encrypt","_crypto_aead_chacha20poly1305_ietf_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_keybytes","_crypto_aead_chacha20poly1305_ietf_keygen","_crypto_aead_chacha20poly1305_ietf_messagebytes_max","_crypto_aead_chacha20poly1305_ietf_npubbytes","_crypto_aead_chacha20poly1305_ietf_nsecbytes","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_keygen","_crypto_aead_chacha20poly1305_messagebytes_max","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_aead_xchacha20poly1305_ietf_abytes","_crypto_aead_xchacha20poly1305_ietf_decrypt","_crypto_aead_xchacha20poly1305_ietf_decrypt_detached","_crypto_aead_xchacha20poly1305_ietf_encrypt","_crypto_aead_xchacha20poly1305_ietf_encrypt_detached","_crypto_aead_xchacha20poly1305_ietf_keybytes","_crypto_aead_xchacha20poly1305_ietf_keygen","_crypto_aead_xchacha20poly1305_ietf_messagebytes_max","_crypto_aead_xchacha20poly1305_ietf_npubbytes","_crypto_aead_xchacha20poly1305_ietf_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_keybytes","_crypto_auth_keygen","_crypto_auth_verify","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_messagebytes_max","_crypto_box_noncebytes","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_publickeybytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_sealbytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_generichash","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_keygen","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_kdf_bytes_max","_crypto_kdf_bytes_min","_crypto_kdf_contextbytes","_crypto_kdf_derive_from_key","_crypto_kdf_hkdf_sha256_bytes_max","_crypto_kdf_hkdf_sha256_bytes_min","_crypto_kdf_hkdf_sha256_expand","_crypto_kdf_hkdf_sha256_extract","_crypto_kdf_hkdf_sha256_extract_final","_crypto_kdf_hkdf_sha256_extract_init","_crypto_kdf_hkdf_sha256_extract_update","_crypto_kdf_hkdf_sha256_keybytes","_crypto_kdf_hkdf_sha256_keygen","_crypto_kdf_hkdf_sha256_statebytes","_crypto_kdf_hkdf_sha512_bytes_max","_crypto_kdf_hkdf_sha512_bytes_min","_crypto_kdf_hkdf_sha512_expand","_crypto_kdf_hkdf_sha512_extract","_crypto_kdf_hkdf_sha512_extract_final","_crypto_kdf_hkdf_sha512_extract_init","_crypto_kdf_hkdf_sha512_extract_update","_crypto_kdf_hkdf_sha512_keybytes","_crypto_kdf_hkdf_sha512_keygen","_crypto_kdf_keybytes","_crypto_kdf_keygen","_crypto_kx_client_session_keys","_crypto_kx_keypair","_crypto_kx_publickeybytes","_crypto_kx_secretkeybytes","_crypto_kx_seed_keypair","_crypto_kx_seedbytes","_crypto_kx_server_session_keys","_crypto_kx_sessionkeybytes","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_keygen","_crypto_secretbox_macbytes","_crypto_secretbox_messagebytes_max","_crypto_secretbox_noncebytes","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_secretstream_xchacha20poly1305_abytes","_crypto_secretstream_xchacha20poly1305_headerbytes","_crypto_secretstream_xchacha20poly1305_init_pull","_crypto_secretstream_xchacha20poly1305_init_push","_crypto_secretstream_xchacha20poly1305_keybytes","_crypto_secretstream_xchacha20poly1305_keygen","_crypto_secretstream_xchacha20poly1305_messagebytes_max","_crypto_secretstream_xchacha20poly1305_pull","_crypto_secretstream_xchacha20poly1305_push","_crypto_secretstream_xchacha20poly1305_rekey","_crypto_secretstream_xchacha20poly1305_statebytes","_crypto_secretstream_xchacha20poly1305_tag_final","_crypto_secretstream_xchacha20poly1305_tag_message","_crypto_secretstream_xchacha20poly1305_tag_push","_crypto_secretstream_xchacha20poly1305_tag_rekey","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_shorthash_keygen","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_final_create","_crypto_sign_final_verify","_crypto_sign_init","_crypto_sign_keypair","_crypto_sign_messagebytes_max","_crypto_sign_open","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_statebytes","_crypto_sign_update","_crypto_sign_verify_detached","_randombytes","_randombytes_buf","_randombytes_buf_deterministic","_randombytes_close","_randombytes_random","_randombytes_seedbytes","_randombytes_stir","_randombytes_uniform","_sodium_base642bin","_sodium_base64_encoded_len","_sodium_bin2base64","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_minimal","_sodium_library_version_major","_sodium_library_version_minor","_sodium_pad","_sodium_unpad","_sodium_version_string"]' +export EXPORTED_FUNCTIONS_SUMO='["_malloc","_free","_crypto_aead_aegis128l_abytes","_crypto_aead_aegis128l_decrypt","_crypto_aead_aegis128l_decrypt_detached","_crypto_aead_aegis128l_encrypt","_crypto_aead_aegis128l_encrypt_detached","_crypto_aead_aegis128l_keybytes","_crypto_aead_aegis128l_keygen","_crypto_aead_aegis128l_messagebytes_max","_crypto_aead_aegis128l_npubbytes","_crypto_aead_aegis128l_nsecbytes","_crypto_aead_aegis256_abytes","_crypto_aead_aegis256_decrypt","_crypto_aead_aegis256_decrypt_detached","_crypto_aead_aegis256_encrypt","_crypto_aead_aegis256_encrypt_detached","_crypto_aead_aegis256_keybytes","_crypto_aead_aegis256_keygen","_crypto_aead_aegis256_messagebytes_max","_crypto_aead_aegis256_npubbytes","_crypto_aead_aegis256_nsecbytes","_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_decrypt_detached","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_abytes","_crypto_aead_chacha20poly1305_ietf_decrypt","_crypto_aead_chacha20poly1305_ietf_decrypt_detached","_crypto_aead_chacha20poly1305_ietf_encrypt","_crypto_aead_chacha20poly1305_ietf_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_keybytes","_crypto_aead_chacha20poly1305_ietf_keygen","_crypto_aead_chacha20poly1305_ietf_messagebytes_max","_crypto_aead_chacha20poly1305_ietf_npubbytes","_crypto_aead_chacha20poly1305_ietf_nsecbytes","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_keygen","_crypto_aead_chacha20poly1305_messagebytes_max","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_aead_xchacha20poly1305_ietf_abytes","_crypto_aead_xchacha20poly1305_ietf_decrypt","_crypto_aead_xchacha20poly1305_ietf_decrypt_detached","_crypto_aead_xchacha20poly1305_ietf_encrypt","_crypto_aead_xchacha20poly1305_ietf_encrypt_detached","_crypto_aead_xchacha20poly1305_ietf_keybytes","_crypto_aead_xchacha20poly1305_ietf_keygen","_crypto_aead_xchacha20poly1305_ietf_messagebytes_max","_crypto_aead_xchacha20poly1305_ietf_npubbytes","_crypto_aead_xchacha20poly1305_ietf_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_hmacsha256","_crypto_auth_hmacsha256_bytes","_crypto_auth_hmacsha256_final","_crypto_auth_hmacsha256_init","_crypto_auth_hmacsha256_keybytes","_crypto_auth_hmacsha256_keygen","_crypto_auth_hmacsha256_statebytes","_crypto_auth_hmacsha256_update","_crypto_auth_hmacsha256_verify","_crypto_auth_hmacsha512","_crypto_auth_hmacsha512256","_crypto_auth_hmacsha512256_bytes","_crypto_auth_hmacsha512256_final","_crypto_auth_hmacsha512256_init","_crypto_auth_hmacsha512256_keybytes","_crypto_auth_hmacsha512256_keygen","_crypto_auth_hmacsha512256_statebytes","_crypto_auth_hmacsha512256_update","_crypto_auth_hmacsha512256_verify","_crypto_auth_hmacsha512_bytes","_crypto_auth_hmacsha512_final","_crypto_auth_hmacsha512_init","_crypto_auth_hmacsha512_keybytes","_crypto_auth_hmacsha512_keygen","_crypto_auth_hmacsha512_statebytes","_crypto_auth_hmacsha512_update","_crypto_auth_hmacsha512_verify","_crypto_auth_keybytes","_crypto_auth_keygen","_crypto_auth_primitive","_crypto_auth_verify","_crypto_box","_crypto_box_afternm","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_boxzerobytes","_crypto_box_curve25519xchacha20poly1305_beforenm","_crypto_box_curve25519xchacha20poly1305_beforenmbytes","_crypto_box_curve25519xchacha20poly1305_detached","_crypto_box_curve25519xchacha20poly1305_detached_afternm","_crypto_box_curve25519xchacha20poly1305_easy","_crypto_box_curve25519xchacha20poly1305_easy_afternm","_crypto_box_curve25519xchacha20poly1305_keypair","_crypto_box_curve25519xchacha20poly1305_macbytes","_crypto_box_curve25519xchacha20poly1305_messagebytes_max","_crypto_box_curve25519xchacha20poly1305_noncebytes","_crypto_box_curve25519xchacha20poly1305_open_detached","_crypto_box_curve25519xchacha20poly1305_open_detached_afternm","_crypto_box_curve25519xchacha20poly1305_open_easy","_crypto_box_curve25519xchacha20poly1305_open_easy_afternm","_crypto_box_curve25519xchacha20poly1305_publickeybytes","_crypto_box_curve25519xchacha20poly1305_seal","_crypto_box_curve25519xchacha20poly1305_seal_open","_crypto_box_curve25519xchacha20poly1305_sealbytes","_crypto_box_curve25519xchacha20poly1305_secretkeybytes","_crypto_box_curve25519xchacha20poly1305_seed_keypair","_crypto_box_curve25519xchacha20poly1305_seedbytes","_crypto_box_curve25519xsalsa20poly1305","_crypto_box_curve25519xsalsa20poly1305_afternm","_crypto_box_curve25519xsalsa20poly1305_beforenm","_crypto_box_curve25519xsalsa20poly1305_beforenmbytes","_crypto_box_curve25519xsalsa20poly1305_boxzerobytes","_crypto_box_curve25519xsalsa20poly1305_keypair","_crypto_box_curve25519xsalsa20poly1305_macbytes","_crypto_box_curve25519xsalsa20poly1305_messagebytes_max","_crypto_box_curve25519xsalsa20poly1305_noncebytes","_crypto_box_curve25519xsalsa20poly1305_open","_crypto_box_curve25519xsalsa20poly1305_open_afternm","_crypto_box_curve25519xsalsa20poly1305_publickeybytes","_crypto_box_curve25519xsalsa20poly1305_secretkeybytes","_crypto_box_curve25519xsalsa20poly1305_seed_keypair","_crypto_box_curve25519xsalsa20poly1305_seedbytes","_crypto_box_curve25519xsalsa20poly1305_zerobytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_messagebytes_max","_crypto_box_noncebytes","_crypto_box_open","_crypto_box_open_afternm","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_primitive","_crypto_box_publickeybytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_sealbytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_box_zerobytes","_crypto_core_ed25519_add","_crypto_core_ed25519_bytes","_crypto_core_ed25519_from_uniform","_crypto_core_ed25519_hashbytes","_crypto_core_ed25519_is_valid_point","_crypto_core_ed25519_nonreducedscalarbytes","_crypto_core_ed25519_random","_crypto_core_ed25519_scalar_add","_crypto_core_ed25519_scalar_complement","_crypto_core_ed25519_scalar_invert","_crypto_core_ed25519_scalar_mul","_crypto_core_ed25519_scalar_negate","_crypto_core_ed25519_scalar_random","_crypto_core_ed25519_scalar_reduce","_crypto_core_ed25519_scalar_sub","_crypto_core_ed25519_scalarbytes","_crypto_core_ed25519_sub","_crypto_core_ed25519_uniformbytes","_crypto_core_hchacha20","_crypto_core_hchacha20_constbytes","_crypto_core_hchacha20_inputbytes","_crypto_core_hchacha20_keybytes","_crypto_core_hchacha20_outputbytes","_crypto_core_hsalsa20","_crypto_core_hsalsa20_constbytes","_crypto_core_hsalsa20_inputbytes","_crypto_core_hsalsa20_keybytes","_crypto_core_hsalsa20_outputbytes","_crypto_core_ristretto255_add","_crypto_core_ristretto255_bytes","_crypto_core_ristretto255_from_hash","_crypto_core_ristretto255_hashbytes","_crypto_core_ristretto255_is_valid_point","_crypto_core_ristretto255_nonreducedscalarbytes","_crypto_core_ristretto255_random","_crypto_core_ristretto255_scalar_add","_crypto_core_ristretto255_scalar_complement","_crypto_core_ristretto255_scalar_invert","_crypto_core_ristretto255_scalar_mul","_crypto_core_ristretto255_scalar_negate","_crypto_core_ristretto255_scalar_random","_crypto_core_ristretto255_scalar_reduce","_crypto_core_ristretto255_scalar_sub","_crypto_core_ristretto255_scalarbytes","_crypto_core_ristretto255_sub","_crypto_core_salsa20","_crypto_core_salsa2012","_crypto_core_salsa2012_constbytes","_crypto_core_salsa2012_inputbytes","_crypto_core_salsa2012_keybytes","_crypto_core_salsa2012_outputbytes","_crypto_core_salsa208","_crypto_core_salsa208_constbytes","_crypto_core_salsa208_inputbytes","_crypto_core_salsa208_keybytes","_crypto_core_salsa208_outputbytes","_crypto_core_salsa20_constbytes","_crypto_core_salsa20_inputbytes","_crypto_core_salsa20_keybytes","_crypto_core_salsa20_outputbytes","_crypto_generichash","_crypto_generichash_blake2b","_crypto_generichash_blake2b_bytes","_crypto_generichash_blake2b_bytes_max","_crypto_generichash_blake2b_bytes_min","_crypto_generichash_blake2b_final","_crypto_generichash_blake2b_init","_crypto_generichash_blake2b_init_salt_personal","_crypto_generichash_blake2b_keybytes","_crypto_generichash_blake2b_keybytes_max","_crypto_generichash_blake2b_keybytes_min","_crypto_generichash_blake2b_keygen","_crypto_generichash_blake2b_personalbytes","_crypto_generichash_blake2b_salt_personal","_crypto_generichash_blake2b_saltbytes","_crypto_generichash_blake2b_statebytes","_crypto_generichash_blake2b_update","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_keygen","_crypto_generichash_primitive","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_hash_primitive","_crypto_hash_sha256","_crypto_hash_sha256_bytes","_crypto_hash_sha256_final","_crypto_hash_sha256_init","_crypto_hash_sha256_statebytes","_crypto_hash_sha256_update","_crypto_hash_sha512","_crypto_hash_sha512_bytes","_crypto_hash_sha512_final","_crypto_hash_sha512_init","_crypto_hash_sha512_statebytes","_crypto_hash_sha512_update","_crypto_kdf_blake2b_bytes_max","_crypto_kdf_blake2b_bytes_min","_crypto_kdf_blake2b_contextbytes","_crypto_kdf_blake2b_derive_from_key","_crypto_kdf_blake2b_keybytes","_crypto_kdf_bytes_max","_crypto_kdf_bytes_min","_crypto_kdf_contextbytes","_crypto_kdf_derive_from_key","_crypto_kdf_hkdf_sha256_bytes_max","_crypto_kdf_hkdf_sha256_bytes_min","_crypto_kdf_hkdf_sha256_expand","_crypto_kdf_hkdf_sha256_extract","_crypto_kdf_hkdf_sha256_extract_final","_crypto_kdf_hkdf_sha256_extract_init","_crypto_kdf_hkdf_sha256_extract_update","_crypto_kdf_hkdf_sha256_keybytes","_crypto_kdf_hkdf_sha256_keygen","_crypto_kdf_hkdf_sha256_statebytes","_crypto_kdf_hkdf_sha512_bytes_max","_crypto_kdf_hkdf_sha512_bytes_min","_crypto_kdf_hkdf_sha512_expand","_crypto_kdf_hkdf_sha512_extract","_crypto_kdf_hkdf_sha512_extract_final","_crypto_kdf_hkdf_sha512_extract_init","_crypto_kdf_hkdf_sha512_extract_update","_crypto_kdf_hkdf_sha512_keybytes","_crypto_kdf_hkdf_sha512_keygen","_crypto_kdf_keybytes","_crypto_kdf_keygen","_crypto_kdf_primitive","_crypto_kx_client_session_keys","_crypto_kx_keypair","_crypto_kx_primitive","_crypto_kx_publickeybytes","_crypto_kx_secretkeybytes","_crypto_kx_seed_keypair","_crypto_kx_seedbytes","_crypto_kx_server_session_keys","_crypto_kx_sessionkeybytes","_crypto_onetimeauth","_crypto_onetimeauth_bytes","_crypto_onetimeauth_final","_crypto_onetimeauth_init","_crypto_onetimeauth_keybytes","_crypto_onetimeauth_keygen","_crypto_onetimeauth_poly1305","_crypto_onetimeauth_poly1305_bytes","_crypto_onetimeauth_poly1305_final","_crypto_onetimeauth_poly1305_init","_crypto_onetimeauth_poly1305_keybytes","_crypto_onetimeauth_poly1305_keygen","_crypto_onetimeauth_poly1305_statebytes","_crypto_onetimeauth_poly1305_update","_crypto_onetimeauth_poly1305_verify","_crypto_onetimeauth_primitive","_crypto_onetimeauth_statebytes","_crypto_onetimeauth_update","_crypto_onetimeauth_verify","_crypto_pwhash","_crypto_pwhash_alg_argon2i13","_crypto_pwhash_alg_argon2id13","_crypto_pwhash_alg_default","_crypto_pwhash_argon2i","_crypto_pwhash_argon2i_alg_argon2i13","_crypto_pwhash_argon2i_bytes_max","_crypto_pwhash_argon2i_bytes_min","_crypto_pwhash_argon2i_memlimit_interactive","_crypto_pwhash_argon2i_memlimit_max","_crypto_pwhash_argon2i_memlimit_min","_crypto_pwhash_argon2i_memlimit_moderate","_crypto_pwhash_argon2i_memlimit_sensitive","_crypto_pwhash_argon2i_opslimit_interactive","_crypto_pwhash_argon2i_opslimit_max","_crypto_pwhash_argon2i_opslimit_min","_crypto_pwhash_argon2i_opslimit_moderate","_crypto_pwhash_argon2i_opslimit_sensitive","_crypto_pwhash_argon2i_passwd_max","_crypto_pwhash_argon2i_passwd_min","_crypto_pwhash_argon2i_saltbytes","_crypto_pwhash_argon2i_str","_crypto_pwhash_argon2i_str_needs_rehash","_crypto_pwhash_argon2i_str_verify","_crypto_pwhash_argon2i_strbytes","_crypto_pwhash_argon2i_strprefix","_crypto_pwhash_argon2id","_crypto_pwhash_argon2id_alg_argon2id13","_crypto_pwhash_argon2id_bytes_max","_crypto_pwhash_argon2id_bytes_min","_crypto_pwhash_argon2id_memlimit_interactive","_crypto_pwhash_argon2id_memlimit_max","_crypto_pwhash_argon2id_memlimit_min","_crypto_pwhash_argon2id_memlimit_moderate","_crypto_pwhash_argon2id_memlimit_sensitive","_crypto_pwhash_argon2id_opslimit_interactive","_crypto_pwhash_argon2id_opslimit_max","_crypto_pwhash_argon2id_opslimit_min","_crypto_pwhash_argon2id_opslimit_moderate","_crypto_pwhash_argon2id_opslimit_sensitive","_crypto_pwhash_argon2id_passwd_max","_crypto_pwhash_argon2id_passwd_min","_crypto_pwhash_argon2id_saltbytes","_crypto_pwhash_argon2id_str","_crypto_pwhash_argon2id_str_needs_rehash","_crypto_pwhash_argon2id_str_verify","_crypto_pwhash_argon2id_strbytes","_crypto_pwhash_argon2id_strprefix","_crypto_pwhash_bytes_max","_crypto_pwhash_bytes_min","_crypto_pwhash_memlimit_interactive","_crypto_pwhash_memlimit_max","_crypto_pwhash_memlimit_min","_crypto_pwhash_memlimit_moderate","_crypto_pwhash_memlimit_sensitive","_crypto_pwhash_opslimit_interactive","_crypto_pwhash_opslimit_max","_crypto_pwhash_opslimit_min","_crypto_pwhash_opslimit_moderate","_crypto_pwhash_opslimit_sensitive","_crypto_pwhash_passwd_max","_crypto_pwhash_passwd_min","_crypto_pwhash_primitive","_crypto_pwhash_saltbytes","_crypto_pwhash_scryptsalsa208sha256","_crypto_pwhash_scryptsalsa208sha256_bytes_max","_crypto_pwhash_scryptsalsa208sha256_bytes_min","_crypto_pwhash_scryptsalsa208sha256_ll","_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive","_crypto_pwhash_scryptsalsa208sha256_memlimit_max","_crypto_pwhash_scryptsalsa208sha256_memlimit_min","_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive","_crypto_pwhash_scryptsalsa208sha256_opslimit_max","_crypto_pwhash_scryptsalsa208sha256_opslimit_min","_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_passwd_max","_crypto_pwhash_scryptsalsa208sha256_passwd_min","_crypto_pwhash_scryptsalsa208sha256_saltbytes","_crypto_pwhash_scryptsalsa208sha256_str","_crypto_pwhash_scryptsalsa208sha256_str_needs_rehash","_crypto_pwhash_scryptsalsa208sha256_str_verify","_crypto_pwhash_scryptsalsa208sha256_strbytes","_crypto_pwhash_scryptsalsa208sha256_strprefix","_crypto_pwhash_str","_crypto_pwhash_str_alg","_crypto_pwhash_str_needs_rehash","_crypto_pwhash_str_verify","_crypto_pwhash_strbytes","_crypto_pwhash_strprefix","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_curve25519","_crypto_scalarmult_curve25519_base","_crypto_scalarmult_curve25519_bytes","_crypto_scalarmult_curve25519_scalarbytes","_crypto_scalarmult_ed25519","_crypto_scalarmult_ed25519_base","_crypto_scalarmult_ed25519_base_noclamp","_crypto_scalarmult_ed25519_bytes","_crypto_scalarmult_ed25519_noclamp","_crypto_scalarmult_ed25519_scalarbytes","_crypto_scalarmult_primitive","_crypto_scalarmult_ristretto255","_crypto_scalarmult_ristretto255_base","_crypto_scalarmult_ristretto255_bytes","_crypto_scalarmult_ristretto255_scalarbytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox","_crypto_secretbox_boxzerobytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_keygen","_crypto_secretbox_macbytes","_crypto_secretbox_messagebytes_max","_crypto_secretbox_noncebytes","_crypto_secretbox_open","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_secretbox_primitive","_crypto_secretbox_xchacha20poly1305_detached","_crypto_secretbox_xchacha20poly1305_easy","_crypto_secretbox_xchacha20poly1305_keybytes","_crypto_secretbox_xchacha20poly1305_macbytes","_crypto_secretbox_xchacha20poly1305_messagebytes_max","_crypto_secretbox_xchacha20poly1305_noncebytes","_crypto_secretbox_xchacha20poly1305_open_detached","_crypto_secretbox_xchacha20poly1305_open_easy","_crypto_secretbox_xsalsa20poly1305","_crypto_secretbox_xsalsa20poly1305_boxzerobytes","_crypto_secretbox_xsalsa20poly1305_keybytes","_crypto_secretbox_xsalsa20poly1305_keygen","_crypto_secretbox_xsalsa20poly1305_macbytes","_crypto_secretbox_xsalsa20poly1305_messagebytes_max","_crypto_secretbox_xsalsa20poly1305_noncebytes","_crypto_secretbox_xsalsa20poly1305_open","_crypto_secretbox_xsalsa20poly1305_zerobytes","_crypto_secretbox_zerobytes","_crypto_secretstream_xchacha20poly1305_abytes","_crypto_secretstream_xchacha20poly1305_headerbytes","_crypto_secretstream_xchacha20poly1305_init_pull","_crypto_secretstream_xchacha20poly1305_init_push","_crypto_secretstream_xchacha20poly1305_keybytes","_crypto_secretstream_xchacha20poly1305_keygen","_crypto_secretstream_xchacha20poly1305_messagebytes_max","_crypto_secretstream_xchacha20poly1305_pull","_crypto_secretstream_xchacha20poly1305_push","_crypto_secretstream_xchacha20poly1305_rekey","_crypto_secretstream_xchacha20poly1305_statebytes","_crypto_secretstream_xchacha20poly1305_tag_final","_crypto_secretstream_xchacha20poly1305_tag_message","_crypto_secretstream_xchacha20poly1305_tag_push","_crypto_secretstream_xchacha20poly1305_tag_rekey","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_shorthash_keygen","_crypto_shorthash_primitive","_crypto_shorthash_siphash24","_crypto_shorthash_siphash24_bytes","_crypto_shorthash_siphash24_keybytes","_crypto_shorthash_siphashx24","_crypto_shorthash_siphashx24_bytes","_crypto_shorthash_siphashx24_keybytes","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519","_crypto_sign_ed25519_bytes","_crypto_sign_ed25519_detached","_crypto_sign_ed25519_keypair","_crypto_sign_ed25519_messagebytes_max","_crypto_sign_ed25519_open","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_publickeybytes","_crypto_sign_ed25519_secretkeybytes","_crypto_sign_ed25519_seed_keypair","_crypto_sign_ed25519_seedbytes","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_ed25519_sk_to_pk","_crypto_sign_ed25519_sk_to_seed","_crypto_sign_ed25519_verify_detached","_crypto_sign_ed25519ph_final_create","_crypto_sign_ed25519ph_final_verify","_crypto_sign_ed25519ph_init","_crypto_sign_ed25519ph_statebytes","_crypto_sign_ed25519ph_update","_crypto_sign_final_create","_crypto_sign_final_verify","_crypto_sign_init","_crypto_sign_keypair","_crypto_sign_messagebytes_max","_crypto_sign_open","_crypto_sign_primitive","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_statebytes","_crypto_sign_update","_crypto_sign_verify_detached","_crypto_stream","_crypto_stream_chacha20","_crypto_stream_chacha20_ietf","_crypto_stream_chacha20_ietf_keybytes","_crypto_stream_chacha20_ietf_keygen","_crypto_stream_chacha20_ietf_messagebytes_max","_crypto_stream_chacha20_ietf_noncebytes","_crypto_stream_chacha20_ietf_xor","_crypto_stream_chacha20_ietf_xor_ic","_crypto_stream_chacha20_keybytes","_crypto_stream_chacha20_keygen","_crypto_stream_chacha20_messagebytes_max","_crypto_stream_chacha20_noncebytes","_crypto_stream_chacha20_xor","_crypto_stream_chacha20_xor_ic","_crypto_stream_keybytes","_crypto_stream_keygen","_crypto_stream_messagebytes_max","_crypto_stream_noncebytes","_crypto_stream_primitive","_crypto_stream_salsa20","_crypto_stream_salsa2012","_crypto_stream_salsa2012_keybytes","_crypto_stream_salsa2012_keygen","_crypto_stream_salsa2012_messagebytes_max","_crypto_stream_salsa2012_noncebytes","_crypto_stream_salsa2012_xor","_crypto_stream_salsa208","_crypto_stream_salsa208_keybytes","_crypto_stream_salsa208_keygen","_crypto_stream_salsa208_messagebytes_max","_crypto_stream_salsa208_noncebytes","_crypto_stream_salsa208_xor","_crypto_stream_salsa20_keybytes","_crypto_stream_salsa20_keygen","_crypto_stream_salsa20_messagebytes_max","_crypto_stream_salsa20_noncebytes","_crypto_stream_salsa20_xor","_crypto_stream_salsa20_xor_ic","_crypto_stream_xchacha20","_crypto_stream_xchacha20_keybytes","_crypto_stream_xchacha20_keygen","_crypto_stream_xchacha20_messagebytes_max","_crypto_stream_xchacha20_noncebytes","_crypto_stream_xchacha20_xor","_crypto_stream_xchacha20_xor_ic","_crypto_stream_xor","_crypto_stream_xsalsa20","_crypto_stream_xsalsa20_keybytes","_crypto_stream_xsalsa20_keygen","_crypto_stream_xsalsa20_messagebytes_max","_crypto_stream_xsalsa20_noncebytes","_crypto_stream_xsalsa20_xor","_crypto_stream_xsalsa20_xor_ic","_crypto_verify_16","_crypto_verify_16_bytes","_crypto_verify_32","_crypto_verify_32_bytes","_crypto_verify_64","_crypto_verify_64_bytes","_randombytes","_randombytes_buf","_randombytes_buf_deterministic","_randombytes_close","_randombytes_implementation_name","_randombytes_random","_randombytes_seedbytes","_randombytes_stir","_randombytes_uniform","_sodium_base642bin","_sodium_base64_encoded_len","_sodium_bin2base64","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_minimal","_sodium_library_version_major","_sodium_library_version_minor","_sodium_pad","_sodium_unpad","_sodium_version_string"]' +export EXPORTED_RUNTIME_METHODS='["UTF8ToString","getValue","setValue"]' +export JS_RESERVED_MEMORY_STANDARD=16MB +export JS_RESERVED_MEMORY_SUMO=48MB +export JS_RESERVED_MEMORY_TESTS=16MB +export WASM_INITIAL_MEMORY=4MB +export LDFLAGS="-s RESERVED_FUNCTION_POINTERS=8" +export LDFLAGS="${LDFLAGS} -s ALLOW_MEMORY_GROWTH=1" +export LDFLAGS="${LDFLAGS} -s SINGLE_FILE=1" +export LDFLAGS="${LDFLAGS} -s ASSERTIONS=0" +export LDFLAGS="${LDFLAGS} -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ALIASING_FUNCTION_POINTERS=1" +export LDFLAGS="${LDFLAGS} -s DISABLE_EXCEPTION_CATCHING=1" +export LDFLAGS="${LDFLAGS} -s ELIMINATE_DUPLICATE_FUNCTIONS=1" +export LDFLAGS="${LDFLAGS} -s NODEJS_CATCH_EXIT=0" +export LDFLAGS="${LDFLAGS} -s NODEJS_CATCH_REJECTION=0" + +echo +if [ "$1" = "--standard" ]; then + export EXPORTED_FUNCTIONS="$EXPORTED_FUNCTIONS_STANDARD" + export LDFLAGS="${LDFLAGS} ${LDFLAGS_DIST}" + export LDFLAGS_JS="-s TOTAL_MEMORY=${JS_RESERVED_MEMORY_STANDARD}" + export PREFIX="$(pwd)/libsodium-js" + export DONE_FILE="$(pwd)/js.done" + export CONFIG_EXTRA="--enable-minimal" + export DIST='yes' + echo "Building a standard distribution in [${PREFIX}]" +elif [ "$1" = "--sumo" ]; then + export EXPORTED_FUNCTIONS="$EXPORTED_FUNCTIONS_SUMO" + export LDFLAGS="${LDFLAGS} ${LDFLAGS_DIST}" + export LDFLAGS_JS="-s TOTAL_MEMORY=${JS_RESERVED_MEMORY_SUMO}" + export PREFIX="$(pwd)/libsodium-js-sumo" + export DONE_FILE="$(pwd)/js-sumo.done" + export DIST='yes' + echo "Building a sumo distribution in [${PREFIX}]" +elif [ "$1" = "--browser-tests" ]; then + export EXPORTED_FUNCTIONS="$EXPORTED_FUNCTIONS_SUMO" + export CPPFLAGS="${CPPFLAGS} -s FORCE_FILESYSTEM=1" + export LDFLAGS="${LDFLAGS}" + export LDFLAGS_JS="-s TOTAL_MEMORY=${JS_RESERVED_MEMORY_TESTS}" + export PREFIX="$(pwd)/libsodium-js-tests" + export DONE_FILE="$(pwd)/js-tests-browser.done" + export BROWSER_TESTS='yes' + export DIST='no' + echo "Building tests for web browsers in [${PREFIX}]" +elif [ "$1" = "--tests" ]; then + echo "Building for testing" + export EXPORTED_FUNCTIONS="$EXPORTED_FUNCTIONS_SUMO" + export CPPFLAGS="${CPPFLAGS} -s FORCE_FILESYSTEM=1 -DBENCHMARKS -DITERATIONS=10" + export LDFLAGS="${LDFLAGS}" + export LDFLAGS_JS="-s TOTAL_MEMORY=${JS_RESERVED_MEMORY_TESTS}" + export PREFIX="$(pwd)/libsodium-js-tests" + export DONE_FILE="$(pwd)/js-tests.done" + export DIST='no' + echo "Building for testing in [${PREFIX}]" +else + echo "Usage: $0 " + echo " := --standard | --sumo | --browser-tests | --tests" + echo + exit 1 +fi +export JS_EXPORTS_FLAGS="-s EXPORTED_FUNCTIONS=${EXPORTED_FUNCTIONS} -s EXPORTED_RUNTIME_METHODS=${EXPORTED_RUNTIME_METHODS}" + +rm -f "$DONE_FILE" + +echo + +emconfigure ./configure $CONFIG_EXTRA --disable-shared --prefix="$PREFIX" \ + --without-pthreads \ + --disable-ssp --disable-asm --disable-pie && + emmake make clean +[ $? = 0 ] || exit 1 + +if [ "$DIST" = yes ]; then + emccLibsodium() { + outFile="${1}" + shift + emcc "$CFLAGS" --llvm-lto 1 $CPPFLAGS $LDFLAGS $JS_EXPORTS_FLAGS "${@}" \ + "${PREFIX}/lib/libsodium.a" -o "${outFile}" || exit 1 + } + emmake make $MAKE_FLAGS install || exit 1 + emccLibsodium "${PREFIX}/lib/libsodium.asm.tmp.js" -Oz -s WASM=0 $LDFLAGS_JS + emccLibsodium "${PREFIX}/lib/libsodium.wasm.tmp.js" -O3 -s WASM=1 -s EVAL_CTORS=1 -s INITIAL_MEMORY=${WASM_INITIAL_MEMORY} + + cat >"${PREFIX}/lib/libsodium.js" <<-EOM + var Module; + if (typeof Module === 'undefined') { + Module = {}; + } + var root = Module; + if (typeof root['sodium'] !== 'object') { + if (typeof global === 'object') { + root = global; + } else if (typeof window === 'object') { + root = window; + } + } + var _Module = Module; + Module.ready = new Promise(function(resolve, reject) { + var Module = _Module; + Module.onAbort = reject; + Module.print = function(what) { + typeof(console) !== 'undefined' && console.log(what); + } + Module.printErr = function(what) { + typeof(console) !== 'undefined' && console.warn(what); + } + Module.onRuntimeInitialized = function() { + try { + /* Test arbitrary wasm function */ + Module._crypto_secretbox_keybytes(); + resolve(); + } catch (err) { + reject(err); + } + }; + Module.useBackupModule = function() { + return new Promise(function(resolve, reject) { + var Module = {}; + Module.onAbort = reject; + + Module.onRuntimeInitialized = function() { + Object.keys(_Module).forEach(function(k) { + if (k !== 'getRandomValue') { + delete _Module[k]; + } + }); + Object.keys(Module).forEach(function(k) { + _Module[k] = Module[k]; + }); + resolve(); + }; + + $(sed "s|use asm||g" "${PREFIX}/lib/libsodium.asm.tmp.js") + }); + }; + $(cat "${PREFIX}/lib/libsodium.wasm.tmp.js") + }).catch(function() { + return _Module.useBackupModule(); + }); +EOM + + rm "${PREFIX}/lib/libsodium.asm.tmp.js" "${PREFIX}/lib/libsodium.wasm.tmp.js" + touch -r "${PREFIX}/lib/libsodium.js" "$DONE_FILE" + ls -l "${PREFIX}/lib/libsodium.js" + exit 0 +fi + +if test "$NODE" = ""; then + for candidate in /usr/local/bin/node /usr/local/bin/nodejs /usr/bin/node /usr/bin/nodejs node nodejs; do + case $($candidate --version 2>&1) in #( + v*) + NODE=$candidate + break + ;; + esac + done +fi + +if [ "x$BROWSER_TESTS" != "x" ]; then + echo 'Compiling the test suite for web browsers...' && + emmake make $MAKE_FLAGS CPPFLAGS="$CPPFLAGS -DBROWSER_TESTS=1" check >/dev/null 2>&1 +else + if test "$NODE" = ""; then + echo 'node.js not found - test suite skipped' >&2 + exit 1 + fi + echo "Using [${NODE}] as a Javascript runtime" + echo 'Compiling the test suite...' && + emmake make $MAKE_FLAGS check >/dev/null 2>&1 +fi + +if [ "x$BROWSER_TESTS" != "x" ]; then + echo 'Creating the test suite for web browsers' + ( + cd test/default && + mkdir -p browser && + rm -f browser/tests.txt && + for file in *.js; do + grep -Fv "#! /usr/bin/env ${NODE}" "$file" >"browser/${file}" + tname=$(echo "$file" | sed 's/.js$//') + cp -f "${tname}.exp" "browser/${tname}.exp" + sed "s/{{tname}}/${tname}/" index.html.tpl >"browser/${tname}.html" + echo "${tname}.html" >>"browser/tests.txt" + done + touch "$DONE_FILE" + ) +else + echo 'Running the test suite' + ( + cd test/default && + for file in *.js; do + echo "#! /usr/bin/env ${NODE}" >"${file}.tmp" + grep -Fv "#! /usr/bin/env ${NODE}" "$file" >>"${file}.tmp" + chmod +x "${file}.tmp" + mv -f "${file}.tmp" "$file" + done + ) + make $MAKE_FLAGS check || exit 1 + touch "$DONE_FILE" +fi + +echo 'Done.' diff --git a/components/espressif__libsodium/libsodium/dist-build/generate-emscripten-symbols.sh b/components/espressif__libsodium/libsodium/dist-build/generate-emscripten-symbols.sh new file mode 100644 index 0000000..721262e --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/generate-emscripten-symbols.sh @@ -0,0 +1,59 @@ +#! /bin/sh + +set -e + +LIBSODIUM=${LIBSODIUM:-/tmp/sodium/lib/libsodium.26.dylib} + +symbols() { + { + SUMO="$1" + while read symbol standard sumo; do + found="$standard" + if [ "x$SUMO" = "xsumo" ]; then + found="$sumo" + fi + if [ "$found" = "1" ]; then + eval "defined_${symbol}=yes" + else + eval "defined_${symbol}=no" + fi + done &2 + echo "*** [$symbol] was not expected ***" >&2 + echo >&2 + exit 1 + fi + done + } + } | + sort | + { + out='"_malloc","_free"' + while read symbol; do + if [ ! -z "$out" ]; then + out="${out}," + fi + out="${out}\"${symbol}\"" + done + echo "[${out}]" + } +} + +out=$(symbols standard) +sed s/EXPORTED_FUNCTIONS_STANDARD=\'.*\'/EXPORTED_FUNCTIONS_STANDARD=\'${out}\'/ emscripten.sh.tmp && + mv -f emscripten.sh.tmp emscripten.sh + +out=$(symbols sumo) +sed s/EXPORTED_FUNCTIONS_SUMO=\'.*\'/EXPORTED_FUNCTIONS_SUMO=\'${out}\'/ emscripten.sh.tmp && + mv -f emscripten.sh.tmp emscripten.sh + +chmod +x emscripten.sh diff --git a/components/espressif__libsodium/libsodium/dist-build/macos.sh b/components/espressif__libsodium/libsodium/dist-build/macos.sh new file mode 100644 index 0000000..fed7f39 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/macos.sh @@ -0,0 +1,26 @@ +#! /bin/sh + +export PREFIX="$(pwd)/libsodium-osx" +export MACOS_VERSION_MIN=${MACOS_VERSION_MIN-"10.10"} + +if [ -z "$LIBSODIUM_FULL_BUILD" ]; then + export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" +else + export LIBSODIUM_ENABLE_MINIMAL_FLAG="" +fi + +NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) +PROCESSORS=${NPROCESSORS:-3} + +mkdir -p $PREFIX || exit 1 + +export CFLAGS="-mmacosx-version-min=${MACOS_VERSION_MIN} -Ofast" +export LDFLAGS="-mmacosx-version-min=${MACOS_VERSION_MIN}" + +make distclean >/dev/null +./configure ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ + --prefix="$PREFIX" || exit 1 +make -j${PROCESSORS} check && make -j${PROCESSORS} install || exit 1 + +# Cleanup +make distclean >/dev/null diff --git a/components/espressif__libsodium/libsodium/dist-build/msys2-win32.sh b/components/espressif__libsodium/libsodium/dist-build/msys2-win32.sh new file mode 100644 index 0000000..6e80140 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/msys2-win32.sh @@ -0,0 +1,18 @@ +#! /bin/sh + +export CFLAGS="-Ofast -fomit-frame-pointer -m32 -march=pentium3 -mtune=westmere" +export PREFIX="$(pwd)/libsodium-win32" + +if (i686-w64-mingw32-gcc --version >/dev/null 2>&1); then + echo MinGW found +else + echo Please install mingw-w64-i686-gcc >&2 + exit +fi + +./configure --prefix="$PREFIX" --exec-prefix="$PREFIX" \ + --host=i686-w64-mingw32 && + make clean && + make && + make check && + make install diff --git a/components/espressif__libsodium/libsodium/dist-build/msys2-win64.sh b/components/espressif__libsodium/libsodium/dist-build/msys2-win64.sh new file mode 100644 index 0000000..ef69047 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/msys2-win64.sh @@ -0,0 +1,18 @@ +#! /bin/sh + +export CFLAGS="-Ofast -fomit-frame-pointer -m64 -mtune=westmere" +export PREFIX="$(pwd)/libsodium-win64" + +if (x86_64-w64-mingw32-gcc --version >/dev/null 2>&1); then + echo MinGW found +else + echo Please install mingw-w64-x86_64-gcc >&2 + exit +fi + +./configure --prefix="$PREFIX" --exec-prefix="$PREFIX" \ + --host=x86_64-w64-mingw32 && + make clean && + make && + make check && + make install diff --git a/components/espressif__libsodium/libsodium/dist-build/wasm32-wasi.sh b/components/espressif__libsodium/libsodium/dist-build/wasm32-wasi.sh new file mode 100644 index 0000000..7b869d3 --- /dev/null +++ b/components/espressif__libsodium/libsodium/dist-build/wasm32-wasi.sh @@ -0,0 +1,45 @@ +#! /bin/sh + +export PATH="/opt/zig/bin:/opt/zig:/opt/homebrew/bin:$PATH" + +export PREFIX="$(pwd)/libsodium-wasm32-wasi" + +mkdir -p $PREFIX || exit 1 + +export CC="zig cc" +export CFLAGS="--target=wasm32-wasi -O3" +export LDFLAGS="-s" +export AR="zig ar" +export RANLIB="zig ranlib" + +make distclean >/dev/null + +if [ "x$1" = "x--bench" ]; then + export BENCHMARKS=1 + export CPPFLAGS="-DBENCHMARKS -DITERATIONS=200" +else + export CPPFLAGS="-DED25519_NONDETERMINISTIC=1" +fi + +if [ -n "$LIBSODIUM_MINIMAL_BUILD" ]; then + export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" +else + export LIBSODIUM_ENABLE_MINIMAL_FLAG="" +fi + +if ! ./configure ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ + --prefix="$PREFIX" \ + --host=wasm32-wasi \ + --disable-ssp --disable-shared --without-pthreads; then + cat config.log + exit 1 +fi + +NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) +PROCESSORS=${NPROCESSORS:-3} + +if [ -z "$BENCHMARKS" ]; then + make -j${PROCESSORS} check && make install && make distclean >/dev/null +else + make -j${PROCESSORS} && make check +fi diff --git a/components/espressif__libsodium/libsodium/lgtm.yml b/components/espressif__libsodium/libsodium/lgtm.yml new file mode 100644 index 0000000..5c97238 --- /dev/null +++ b/components/espressif__libsodium/libsodium/lgtm.yml @@ -0,0 +1,6 @@ +extraction: + cpp: + configure: + command: + - ./autogen.sh -s + - ./configure diff --git a/components/espressif__libsodium/libsodium/libsodium-uninstalled.pc.in b/components/espressif__libsodium/libsodium/libsodium-uninstalled.pc.in new file mode 100644 index 0000000..068a9c6 --- /dev/null +++ b/components/espressif__libsodium/libsodium/libsodium-uninstalled.pc.in @@ -0,0 +1,7 @@ +Name: @PACKAGE_NAME@ +Version: @PACKAGE_VERSION@ +Description: A modern and easy-to-use crypto library + +Libs: -L${pcfiledir}/src/libsodium -lsodium +Libs.private: @PKGCONFIG_LIBS_PRIVATE@ +Cflags: -I${pcfiledir}/src/libsodium/include -I@top_srcdir@/src/libsodium/include -I@top_srcdir@/src/libsodium/include/sodium diff --git a/components/espressif__libsodium/libsodium/libsodium.pc.in b/components/espressif__libsodium/libsodium/libsodium.pc.in new file mode 100644 index 0000000..6c2b43a --- /dev/null +++ b/components/espressif__libsodium/libsodium/libsodium.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Version: @PACKAGE_VERSION@ +Description: A modern and easy-to-use crypto library + +Libs: -L${libdir} -lsodium +Libs.private: @PKGCONFIG_LIBS_PRIVATE@ +Cflags: -I${includedir} diff --git a/components/espressif__libsodium/libsodium/logo.png b/components/espressif__libsodium/libsodium/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0f193a1af458415559c933feabfb88429f6b1c06 GIT binary patch literal 13739 zcmZ{LbyOU|^XD!su=wH@V9{W~J;*|E4-z0q&;Y?*1B(O}-{3*RBEj7P1cGZIxVyUt zf`sFH-*@-!{ocF!qo%sM`cqRqJ@ux$Ya+EY6!CGWaR2}SzOs^>HUNMQeUiJt=uccd z<+3)9|3Uw)eB%EVo?8Da{15)0=Kn)3E-wEAx4XN$y}iA;xw*Es zHZd_VJw5%T`2_ORadma|3E}6@pG{3oRaI3*MMYn~eoaeDLn4s~1j5J12M&iTDJhAH zit_UEvazv2p-@UnN(cl327{kQ2?m2{X=$06nc3Rf{@2a>`}^D5+sDVp)6>(No14qa z%d@kyBs_V)Jf?(U9`j^W|q(a}*sLBWcOiv0Y1 z6bi-6%p4OFla!Q{nVIR}-~f$?l6|r#PPWrNPZ^c)w~H%(}plUm-uM%#==HyS%HEzjt?kul}|LBO-WZd;tJ~2xU1L zT_51#To0;LoD^=JZP_lfv^9@3tZ|6|1dGp||4Yn(`5X5}R8)o#T;x&T>OjLFvS5ZV zujrl+wR7rpb>y-Jy#c(>Vy{)3O)DQCG{0!r)SmfN%}Thlg4KmD)*M>G2$I1pVOqPt zk30koj_SUJ@y3l^I+uv^sttKPoVtikUVX1Pu-t5^u%tTb-3k;ocBp$E^4m)2a2;Am zLtBzmjbanqv3^|=nMp3DI+E*MY4wt(f^}X8W-F5OLho6McgaM^%2rIZp!Ii-tz4@q z1~+xG0XOkQ+lPqXW|}|*$#mJKv_84KZ_dE}Z$7~8%EqT@XRzaY(w{h`A&odG1zB7} zX-Px8Z3N$vR$BdB!9U$v$Ncber?Nvlt&9h1Z%La{*r^ii-ZmUHWuGXn?fJx!c>d_| z{rnyyHHw25(12dv2$??&#*9(*CH5n?qjtT^hM>lRi6^{5Pd$pwtYYy=jDQ$QZiS5kp&k-%WY4GVTLuBaKpx zl^wsLm&ZfWhkshMb`fkJv8HctY~=ZVBpbhyu^#_dvCbIArF5k9VR?}2#y{^0B3sH5 z*2?Dl{3=!f{~=z%FFDMO>_u`Uhdd&K8Qz3_(hcf;OUNMjRbg25pH@vCw%^3AUn&Br zOT2Vx8ddg6L=`gKCE|g z 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:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror] +# : note: this is the location of the previous definition +# +# which is a problem if -Werror is enabled. This macro checks whether +# _FORTIFY_SOURCE is already defined, and if not, adds -D_FORTIFY_SOURCE=2 +# to CPPFLAGS. +# +# Newer mingw-w64 msys2 package comes with a bug in +# headers-git-7.0.0.5546.d200317d-1. It broke -D_FORTIFY_SOURCE support, +# and would need -lssp or -fstack-protector. See +# https://github.com/msys2/MINGW-packages/issues/5803. Try to actually +# link it. +# +# LICENSE +# +# Copyright (c) 2017 David Seifert +# Copyright (c) 2019, 2023 Reini Urban +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 8 + +AC_DEFUN([AX_ADD_FORTIFY_SOURCE],[ + ac_save_cflags=$CFLAGS + ac_cwerror_flag=yes + AX_CHECK_COMPILE_FLAG([-Werror],[CFLAGS="$CFLAGS -Werror"]) + ax_add_fortify_3_failed= + AC_MSG_CHECKING([whether to add -D_FORTIFY_SOURCE=3 to CPPFLAGS]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([], + [[ + #ifndef _FORTIFY_SOURCE + return 0; + #else + _FORTIFY_SOURCE_already_defined; + #endif + ]] + )], + AC_LINK_IFELSE([ + AC_LANG_SOURCE([[ + #define _FORTIFY_SOURCE 3 + #include + int main() { + char *s = " "; + strcpy(s, "x"); + return strlen(s)-1; + } + ]] + )], + [ + AC_MSG_RESULT([yes]) + CFLAGS=$ac_save_cflags + CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=3" + ], [ + AC_MSG_RESULT([no]) + CFLAGS=$ac_save_cflags + ax_add_fortify_3_failed=1 + ], + ), + [ + AC_MSG_RESULT([no]) + CFLAGS=$ac_save_cflags + ax_add_fortify_3_failed=1 + ]) + if test -n "$ax_add_fortify_3_failed" + then + AC_MSG_CHECKING([whether to add -D_FORTIFY_SOURCE=2 to CPPFLAGS]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([], + [[ + #ifndef _FORTIFY_SOURCE + return 0; + #else + _FORTIFY_SOURCE_already_defined; + #endif + ]] + )], + AC_LINK_IFELSE([ + AC_LANG_SOURCE([[ + #define _FORTIFY_SOURCE 2 + #include + int main(void) { + char *s = " "; + strcpy(s, "x"); + return strlen(s)-1; + } + ]] + )], + [ + AC_MSG_RESULT([yes]) + CFLAGS=$ac_save_cflags + CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" + ], [ + AC_MSG_RESULT([no]) + CFLAGS=$ac_save_cflags + ], + ), + [ + AC_MSG_RESULT([no]) + CFLAGS=$ac_save_cflags + ]) + fi +]) diff --git a/components/espressif__libsodium/libsodium/m4/ax_check_catchable_abrt.m4 b/components/espressif__libsodium/libsodium/m4/ax_check_catchable_abrt.m4 new file mode 100644 index 0000000..9983262 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_check_catchable_abrt.m4 @@ -0,0 +1,57 @@ +# SYNOPSIS +# +# AX_CHECK_CATCHABLE_ABRT +# +# DESCRIPTION +# +# Check whether SIGABRT can be caught using signal handlers. + +#serial 1 + +AC_DEFUN([AX_CHECK_CATCHABLE_ABRT], [dnl + AC_PREREQ(2.64) + AS_VAR_PUSHDEF([CACHEVAR], [ax_cv_check_[]_AC_LANG_ABBREV[]CATCHABLE_ABRT])dnl + AC_CACHE_CHECK([whether SIGABRT can be caught], CACHEVAR, [ + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +#include + +#ifndef SIGABRT +# error SIGABRT is not defined +#endif + +static void sigabrt_handler_3(int _) +{ + exit(0); +} + +static void sigabrt_handler_2(int _) +{ + signal(SIGABRT, sigabrt_handler_3); + abort(); + exit(1); +} + +static void sigabrt_handler_1(int _) +{ + signal(SIGABRT, sigabrt_handler_2); + abort(); + exit(1); +} + ]], [[ +signal(SIGABRT, sigabrt_handler_1); +abort(); +exit(1); + ]])], + [AS_VAR_SET(CACHEVAR, [yes])], + [AS_VAR_SET(CACHEVAR, [no])], + [AS_VAR_SET(CACHEVAR, [unknown])] + ) + ]) + AS_VAR_IF(CACHEVAR, yes, + [AC_DEFINE([HAVE_CATCHABLE_ABRT], [1], [Define if SIGABRT can be caught using signal handlers])], + [AC_MSG_WARN([On this platform, SIGABRT cannot be caught using signal handlers.])] + ) + AS_VAR_POPDEF([CACHEVAR])dnl +]) diff --git a/components/espressif__libsodium/libsodium/m4/ax_check_catchable_segv.m4 b/components/espressif__libsodium/libsodium/m4/ax_check_catchable_segv.m4 new file mode 100644 index 0000000..fb0579e --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_check_catchable_segv.m4 @@ -0,0 +1,47 @@ +# SYNOPSIS +# +# AX_CHECK_CATCHABLE_SEGV +# +# DESCRIPTION +# +# Check whether segmentation violations can be caught using signal handlers. + +#serial 1 + +AC_DEFUN([AX_CHECK_CATCHABLE_SEGV], [dnl + AC_PREREQ(2.64) + AS_VAR_PUSHDEF([CACHEVAR], [ax_cv_check_[]_AC_LANG_ABBREV[]CATCHABLE_SEGV])dnl + AC_CACHE_CHECK([whether segmentation violations can be caught], CACHEVAR, [ + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#include +#include +static void sig(int _) { exit(0); } + ]], [[ +volatile unsigned char * volatile x = (volatile unsigned char *) malloc(8); +size_t i; + +#ifdef SIGPROT +signal(SIGPROT, sig); +#endif +signal(SIGSEGV, sig); +signal(SIGBUS, sig); +#if !defined(__SANITIZE_ADDRESS__) && !defined(__EMSCRIPTEN__) +*((volatile unsigned char *) -1) = 0xd0; +*((volatile unsigned char *) 1) = 0xd0; +for (i = 0; i < 10000000; i += 1024) { x[-i] = x[i] = (unsigned char) i; } +#endif +free((void *) x); +exit(1) + ]])], + [AS_VAR_SET(CACHEVAR, [yes])], + [AS_VAR_SET(CACHEVAR, [no])], + [AS_VAR_SET(CACHEVAR, [unknown])] + ) + ]) + AS_VAR_IF(CACHEVAR, yes, + [AC_DEFINE([HAVE_CATCHABLE_SEGV], [1], [Define if segmentation violations can be caught using signal handlers])], + [AC_MSG_WARN([On this platform, segmentation violations cannot be caught using signal handlers. This is expected if you enabled a tool such as Address Sanitizer (-fsanitize=address), but be aware that using Address Sanitizer may also significantly reduce performance.])] + ) + AS_VAR_POPDEF([CACHEVAR])dnl +]) diff --git a/components/espressif__libsodium/libsodium/m4/ax_check_compile_flag.m4 b/components/espressif__libsodium/libsodium/m4/ax_check_compile_flag.m4 new file mode 100644 index 0000000..b197d06 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_check_compile_flag.m4 @@ -0,0 +1,55 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 6 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM( +[#include ], [time_t x; int fodder = 0; if (fodder > -1000 && time(&x)) return (int) x] + )])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/components/espressif__libsodium/libsodium/m4/ax_check_define.m4 b/components/espressif__libsodium/libsodium/m4/ax_check_define.m4 new file mode 100644 index 0000000..c10d113 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_check_define.m4 @@ -0,0 +1,73 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_define.html +# =========================================================================== +# +# SYNOPSIS +# +# AC_CHECK_DEFINE([symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) +# AX_CHECK_DEFINE([includes],[symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) +# +# DESCRIPTION +# +# Complements AC_CHECK_FUNC but it does not check for a function but for a +# define to exist. Consider a usage like: +# +# AC_CHECK_DEFINE(__STRICT_ANSI__, CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500") +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 11 + +AU_ALIAS([AC_CHECK_DEFINED], [AC_CHECK_DEFINE]) +AC_DEFUN([AC_CHECK_DEFINE],[ +AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1])dnl +AC_CACHE_CHECK([for $1 defined], ac_var, +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ + #ifdef $1 + int ok; + (void)ok; + #else + choke me + #endif +]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) +AS_IF([test AS_VAR_GET(ac_var) != "no"], [$2], [$3])dnl +AS_VAR_POPDEF([ac_var])dnl +]) + +AU_ALIAS([AX_CHECK_DEFINED], [AX_CHECK_DEFINE]) +AC_DEFUN([AX_CHECK_DEFINE],[ +AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$2_$1])dnl +AC_CACHE_CHECK([for $2 defined in $1], ac_var, +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$1>]], [[ + #ifdef $2 + int ok; + (void)ok; + #else + choke me + #endif +]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) +AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl +AS_VAR_POPDEF([ac_var])dnl +]) + +AC_DEFUN([AX_CHECK_FUNC], +[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$2])dnl +AC_CACHE_CHECK([for $2], ac_var, +dnl AC_LANG_FUNC_LINK_TRY +[AC_LINK_IFELSE([AC_LANG_PROGRAM([$1 + #undef $2 + char $2 ();],[ + char (*f) () = $2; + return f != $2; ])], + [AS_VAR_SET(ac_var, yes)], + [AS_VAR_SET(ac_var, no)])]) +AS_IF([test AS_VAR_GET(ac_var) = yes], [$3], [$4])dnl +AS_VAR_POPDEF([ac_var])dnl +])# AC_CHECK_FUNC diff --git a/components/espressif__libsodium/libsodium/m4/ax_check_gnu_make.m4 b/components/espressif__libsodium/libsodium/m4/ax_check_gnu_make.m4 new file mode 100644 index 0000000..785dc96 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_check_gnu_make.m4 @@ -0,0 +1,95 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_gnu_make.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_GNU_MAKE([run-if-true],[run-if-false]) +# +# DESCRIPTION +# +# This macro searches for a GNU version of make. If a match is found: +# +# * The makefile variable `ifGNUmake' is set to the empty string, otherwise +# it is set to "#". This is useful for including a special features in a +# Makefile, which cannot be handled by other versions of make. +# * The makefile variable `ifnGNUmake' is set to #, otherwise +# it is set to the empty string. This is useful for including a special +# features in a Makefile, which can be handled +# by other versions of make or to specify else like clause. +# * The variable `_cv_gnu_make_command` is set to the command to invoke +# GNU make if it exists, the empty string otherwise. +# * The variable `ax_cv_gnu_make_command` is set to the command to invoke +# GNU make by copying `_cv_gnu_make_command`, otherwise it is unset. +# * If GNU Make is found, its version is extracted from the output of +# `make --version` as the last field of a record of space-separated +# columns and saved into the variable `ax_check_gnu_make_version`. +# * Additionally if GNU Make is found, run shell code run-if-true +# else run shell code run-if-false. +# +# Here is an example of its use: +# +# Makefile.in might contain: +# +# # A failsafe way of putting a dependency rule into a makefile +# $(DEPEND): +# $(CC) -MM $(srcdir)/*.c > $(DEPEND) +# +# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND))) +# @ifGNUmake@ include $(DEPEND) +# @ifGNUmake@ else +# fallback code +# @ifGNUmake@ endif +# +# Then configure.in would normally contain: +# +# AX_CHECK_GNU_MAKE() +# AC_OUTPUT(Makefile) +# +# Then perhaps to cause gnu make to override any other make, we could do +# something like this (note that GNU make always looks for GNUmakefile +# first): +# +# if ! test x$_cv_gnu_make_command = x ; then +# mv Makefile GNUmakefile +# echo .DEFAULT: > Makefile ; +# echo \ $_cv_gnu_make_command \$@ >> Makefile; +# fi +# +# Then, if any (well almost any) other make is called, and GNU make also +# exists, then the other make wraps the GNU make. +# +# LICENSE +# +# Copyright (c) 2008 John Darrington +# Copyright (c) 2015 Enrico M. Crisostomo +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 12 + +AC_DEFUN([AX_CHECK_GNU_MAKE],dnl + [AC_PROG_AWK + AC_CACHE_CHECK([for GNU make],[_cv_gnu_make_command],[dnl + _cv_gnu_make_command="" ; +dnl Search all the common names for GNU make + for a in "$MAKE" make gmake gnumake ; do + if test -z "$a" ; then continue ; fi ; + if "$a" --version 2> /dev/null | grep GNU 2>&1 > /dev/null ; then + _cv_gnu_make_command=$a ; + AX_CHECK_GNU_MAKE_HEADLINE=$("$a" --version 2> /dev/null | grep "GNU Make") + ax_check_gnu_make_version=$(echo ${AX_CHECK_GNU_MAKE_HEADLINE} | ${AWK} -F " " '{ print $(NF); }') + break ; + fi + done ;]) +dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise + AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifGNUmake], ["#"])], [AS_VAR_SET([ifGNUmake], [""])]) + AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifnGNUmake], [""])], [AS_VAR_SET([ifnGNUmake], ["#"])]) + AS_VAR_IF([_cv_gnu_make_command], [""], [AS_UNSET(ax_cv_gnu_make_command)], [AS_VAR_SET([ax_cv_gnu_make_command], [${_cv_gnu_make_command}])]) + AS_VAR_IF([_cv_gnu_make_command], [""],[$2],[$1]) + AC_SUBST([ifGNUmake]) + AC_SUBST([ifnGNUmake]) +]) diff --git a/components/espressif__libsodium/libsodium/m4/ax_check_link_flag.m4 b/components/espressif__libsodium/libsodium/m4/ax_check_link_flag.m4 new file mode 100644 index 0000000..06af181 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_check_link_flag.m4 @@ -0,0 +1,75 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the linker or gives an error. +# (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_LINK_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 5 + +AC_DEFUN([AX_CHECK_LINK_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl +AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS $4 $1" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[time_t x; int fodder = 0; if (fodder > -1000 && time(&x)) return (int) x]])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + LDFLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_LINK_FLAGS diff --git a/components/espressif__libsodium/libsodium/m4/ax_pthread.m4 b/components/espressif__libsodium/libsodium/m4/ax_pthread.m4 new file mode 100644 index 0000000..9f35d13 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_pthread.m4 @@ -0,0 +1,522 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is +# needed for multi-threaded programs (defaults to the value of CC +# respectively CXX otherwise). (This is necessary on e.g. AIX to use the +# special cc_r/CC_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also to link with them as well. For example, you might link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threaded programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# CXX="$PTHREAD_CXX" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2011 Daniel Richard G. +# Copyright (c) 2019 Marc Stevens +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 31 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) + AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int i = PTHREAD_PRIO_INHERIT; + return i;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $host_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [ + AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) + AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) + ], + [ + AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) + AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) + ] + ) + ]) + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) +AC_SUBST([PTHREAD_CXX]) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD diff --git a/components/espressif__libsodium/libsodium/m4/ax_tls.m4 b/components/espressif__libsodium/libsodium/m4/ax_tls.m4 new file mode 100644 index 0000000..fb184fe --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_tls.m4 @@ -0,0 +1,71 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_tls.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_TLS([action-if-found], [action-if-not-found]) +# +# DESCRIPTION +# +# Provides a test for the compiler support of thread local storage (TLS) +# extensions. Defines TLS if it is found. Currently knows about C++11, +# GCC/ICC, and MSVC. I think SunPro uses the same as GCC, and Borland +# apparently supports either. +# +# LICENSE +# +# Copyright (c) 2008 Alan Woodland +# Copyright (c) 2010 Diego Elio Petteno` +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 15 + +AC_DEFUN([AX_TLS], [ + AC_MSG_CHECKING([for thread local storage (TLS) class]) + AC_CACHE_VAL([ac_cv_tls], + [for ax_tls_keyword in thread_local _Thread_local __thread '__declspec(thread)' none; do + AS_CASE([$ax_tls_keyword], + [none], [ac_cv_tls=none ; break], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [#include ], + [static $ax_tls_keyword int bar;] + )], + [ac_cv_tls=$ax_tls_keyword ; break], + [ac_cv_tls=none] + )] + ) + done ] + ) + AC_MSG_RESULT([$ac_cv_tls]) + + AS_IF([test "$ac_cv_tls" != "none"], + [AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class, define it to that here]) + m4_ifnblank([$1],[$1],[[:]])], + [m4_ifnblank([$2],[$2],[[:]])]) +]) diff --git a/components/espressif__libsodium/libsodium/m4/ax_valgrind_check.m4 b/components/espressif__libsodium/libsodium/m4/ax_valgrind_check.m4 new file mode 100644 index 0000000..876f887 --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ax_valgrind_check.m4 @@ -0,0 +1,241 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_VALGRIND_DFLT(memcheck|helgrind|drd|sgcheck, on|off) +# AX_VALGRIND_CHECK() +# +# DESCRIPTION +# +# AX_VALGRIND_CHECK checks whether Valgrind is present and, if so, allows +# running `make check` under a variety of Valgrind tools to check for +# memory and threading errors. +# +# Defines VALGRIND_CHECK_RULES which should be substituted in your +# Makefile; and $enable_valgrind which can be used in subsequent configure +# output. VALGRIND_ENABLED is defined and substituted, and corresponds to +# the value of the --enable-valgrind option, which defaults to being +# enabled if Valgrind is installed and disabled otherwise. Individual +# Valgrind tools can be disabled via --disable-valgrind-, the +# default is configurable via the AX_VALGRIND_DFLT command or is to use +# all commands not disabled via AX_VALGRIND_DFLT. All AX_VALGRIND_DFLT +# calls must be made before the call to AX_VALGRIND_CHECK. +# +# If unit tests are written using a shell script and automake's +# LOG_COMPILER system, the $(VALGRIND) variable can be used within the +# shell scripts to enable Valgrind, as described here: +# +# https://www.gnu.org/software/gnulib/manual/html_node/Running-self_002dtests-under-valgrind.html +# +# Usage example: +# +# configure.ac: +# +# AX_VALGRIND_DFLT([sgcheck], [off]) +# AX_VALGRIND_CHECK +# +# Makefile.am: +# +# @VALGRIND_CHECK_RULES@ +# VALGRIND_SUPPRESSIONS_FILES = my-project.supp +# EXTRA_DIST = my-project.supp +# +# This results in a "check-valgrind" rule being added to any Makefile.am +# which includes "@VALGRIND_CHECK_RULES@" (assuming the module has been +# configured with --enable-valgrind). Running `make check-valgrind` in +# that directory will run the module's test suite (`make check`) once for +# each of the available Valgrind tools (out of memcheck, helgrind and drd) +# while the sgcheck will be skipped unless enabled again on the +# commandline with --enable-valgrind-sgcheck. The results for each check +# will be output to test-suite-$toolname.log. The target will succeed if +# there are zero errors and fail otherwise. +# +# Alternatively, a "check-valgrind-$TOOL" rule will be added, for $TOOL in +# memcheck, helgrind, drd and sgcheck. These are useful because often only +# some of those tools can be ran cleanly on a codebase. +# +# The macro supports running with and without libtool. +# +# LICENSE +# +# Copyright (c) 2014, 2015, 2016 Philip Withnall +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 15 + +dnl Configured tools +m4_define([valgrind_tool_list], [[memcheck], [helgrind], [drd], [sgcheck]]) +m4_set_add_all([valgrind_exp_tool_set], [sgcheck]) +m4_foreach([vgtool], [valgrind_tool_list], + [m4_define([en_dflt_valgrind_]vgtool, [on])]) + +AC_DEFUN([AX_VALGRIND_DFLT],[ + m4_define([en_dflt_valgrind_$1], [$2]) +])dnl + +AC_DEFUN([AX_VALGRIND_CHECK],[ + dnl Check for --enable-valgrind + AC_ARG_ENABLE([valgrind], + [AS_HELP_STRING([--enable-valgrind], [Whether to enable Valgrind on the unit tests (requires GNU make)])], + [enable_valgrind=$enableval],[enable_valgrind=no]) + + AS_IF([test "$enable_valgrind" != "no"],[ + # Check for Valgrind. + AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind]) + AS_IF([test "$VALGRIND" = ""],[ + AS_IF([test "$enable_valgrind" = "yes"],[ + AC_MSG_ERROR([Could not find valgrind; either install it or reconfigure with --disable-valgrind]) + ],[ + enable_valgrind=no + ]) + ],[ + enable_valgrind=yes + ]) + ]) + + AM_CONDITIONAL([VALGRIND_ENABLED],[test "$enable_valgrind" = "yes"]) + AC_SUBST([VALGRIND_ENABLED],[$enable_valgrind]) + + # Check for Valgrind tools we care about. + [valgrind_enabled_tools=] + m4_foreach([vgtool],[valgrind_tool_list],[ + AC_ARG_ENABLE([valgrind-]vgtool, + m4_if(m4_defn([en_dflt_valgrind_]vgtool),[off],dnl +[AS_HELP_STRING([--enable-valgrind-]vgtool, [Whether to use ]vgtool[ during the Valgrind tests])],dnl +[AS_HELP_STRING([--disable-valgrind-]vgtool, [Whether to skip ]vgtool[ during the Valgrind tests])]), + [enable_valgrind_]vgtool[=$enableval], + [enable_valgrind_]vgtool[=]) + AS_IF([test "$enable_valgrind" = "no"],[ + enable_valgrind_]vgtool[=no], + [test "$enable_valgrind_]vgtool[" ]dnl +m4_if(m4_defn([en_dflt_valgrind_]vgtool), [off], [= "yes"], [!= "no"]),[ + AC_CACHE_CHECK([for Valgrind tool ]vgtool, + [ax_cv_valgrind_tool_]vgtool,[ + ax_cv_valgrind_tool_]vgtool[=no + m4_set_contains([valgrind_exp_tool_set],vgtool, + [m4_define([vgtoolx],[exp-]vgtool)], + [m4_define([vgtoolx],vgtool)]) + AS_IF([`$VALGRIND --tool=]vgtoolx[ --help >/dev/null 2>&1`],[ + ax_cv_valgrind_tool_]vgtool[=yes + ]) + ]) + AS_IF([test "$ax_cv_valgrind_tool_]vgtool[" = "no"],[ + AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[ + AC_MSG_ERROR([Valgrind does not support ]vgtool[; reconfigure with --disable-valgrind-]vgtool) + ],[ + enable_valgrind_]vgtool[=no + ]) + ],[ + enable_valgrind_]vgtool[=yes + ]) + ]) + AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[ + valgrind_enabled_tools="$valgrind_enabled_tools ]m4_bpatsubst(vgtool,[^exp-])[" + ]) + AC_SUBST([ENABLE_VALGRIND_]vgtool,[$enable_valgrind_]vgtool) + ]) + AC_SUBST([valgrind_tools],["]m4_join([ ], valgrind_tool_list)["]) + AC_SUBST([valgrind_enabled_tools],[$valgrind_enabled_tools]) + +[VALGRIND_CHECK_RULES=' +# Valgrind check +# +# Optional: +# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions +# files to load. (Default: empty) +# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools. +# (Default: --num-callers=30) +# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of: +# memcheck, helgrind, drd, sgcheck). (Default: various) + +# Optional variables +VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES)) +VALGRIND_FLAGS ?= --num-callers=30 +VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no +VALGRIND_helgrind_FLAGS ?= --history-level=approx +VALGRIND_drd_FLAGS ?= +VALGRIND_sgcheck_FLAGS ?= + +# Internal use +valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools))) + +valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS) +valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS) +valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS) +valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS) + +valgrind_quiet = $(valgrind_quiet_$(V)) +valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY)) +valgrind_quiet_0 = --quiet +valgrind_v_use = $(valgrind_v_use_$(V)) +valgrind_v_use_ = $(valgrind_v_use_$(AM_DEFAULT_VERBOSITY)) +valgrind_v_use_0 = @echo " USE " $(patsubst check-valgrind-%,%,$''@):; + +# Support running with and without libtool. +ifneq ($(LIBTOOL),) +valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute +else +valgrind_lt = +endif + +# Use recursive makes in order to ignore errors during check +check-valgrind: +ifeq ($(VALGRIND_ENABLED),yes) + $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k \ + $(foreach tool, $(valgrind_enabled_tools), check-valgrind-$(tool)) +else + @echo "Need to use GNU make and reconfigure with --enable-valgrind" +endif + +# Valgrind running +VALGRIND_TESTS_ENVIRONMENT = \ + $(TESTS_ENVIRONMENT) \ + env VALGRIND=$(VALGRIND) \ + G_SLICE=always-malloc,debug-blocks \ + G_DEBUG=fatal-warnings,fatal-criticals,gc-friendly + +VALGRIND_LOG_COMPILER = \ + $(valgrind_lt) \ + $(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS) + +define valgrind_tool_rule = +check-valgrind-$(1): +ifeq ($$(VALGRIND_ENABLED)-$$(ENABLE_VALGRIND_$(1)),yes-yes) + $$(valgrind_v_use)$$(MAKE) check-TESTS \ + TESTS_ENVIRONMENT="$$(VALGRIND_TESTS_ENVIRONMENT)" \ + LOG_COMPILER="$$(VALGRIND_LOG_COMPILER)" \ + LOG_FLAGS="$$(valgrind_$(1)_flags)" \ + TEST_SUITE_LOG=test-suite-$(1).log +else ifeq ($$(VALGRIND_ENABLED),yes) + @echo "Need to reconfigure with --enable-valgrind-$(1)" +else + @echo "Need to reconfigure with --enable-valgrind" +endif +endef + +$(foreach tool,$(valgrind_tools),$(eval $(call valgrind_tool_rule,$(tool)))) + +A''M_DISTCHECK_CONFIGURE_FLAGS ?= +A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind + +MOSTLYCLEANFILES ?= +MOSTLYCLEANFILES += $(valgrind_log_files) + +.PHONY: check-valgrind $(add-prefix check-valgrind-,$(valgrind_tools)) +'] + + AS_IF([test "$enable_valgrind" != "yes"], [ + VALGRIND_CHECK_RULES=' +check-valgrind: + @echo "Need to use GNU make and reconfigure with --enable-valgrind"' + ]) + + AC_SUBST([VALGRIND_CHECK_RULES]) + m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([VALGRIND_CHECK_RULES])]) +]) diff --git a/components/espressif__libsodium/libsodium/m4/ld-output-def.m4 b/components/espressif__libsodium/libsodium/m4/ld-output-def.m4 new file mode 100644 index 0000000..59895bc --- /dev/null +++ b/components/espressif__libsodium/libsodium/m4/ld-output-def.m4 @@ -0,0 +1,29 @@ +# ld-output-def.m4 serial 2 +dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Simon Josefsson + +# gl_LD_OUTPUT_DEF() +# ------------- +# Check if linker supports -Wl,--output-def and define automake +# conditional HAVE_LD_OUTPUT_DEF if it is. +AC_DEFUN([gl_LD_OUTPUT_DEF], +[ + AC_CACHE_CHECK([if gcc/ld supports -Wl,--output-def], + [gl_cv_ld_output_def], + [if test "$enable_shared" = no; then + gl_cv_ld_output_def="not needed, shared libraries are disabled" + else + gl_ldflags_save=$LDFLAGS + LDFLAGS="-Wl,--output-def,conftest.def" + AC_LINK_IFELSE([AC_LANG_PROGRAM([])], + [gl_cv_ld_output_def=yes], + [gl_cv_ld_output_def=no]) + rm -f conftest.def + LDFLAGS="$gl_ldflags_save" + fi]) + AM_CONDITIONAL([HAVE_LD_OUTPUT_DEF], test "x$gl_cv_ld_output_def" = "xyes") +]) diff --git a/components/espressif__libsodium/libsodium/packaging/dotnet-core/libsodium.pkgproj b/components/espressif__libsodium/libsodium/packaging/dotnet-core/libsodium.pkgproj new file mode 100644 index 0000000..e50bba8 --- /dev/null +++ b/components/espressif__libsodium/libsodium/packaging/dotnet-core/libsodium.pkgproj @@ -0,0 +1,40 @@ + + + + netstandard2.0 + true + false + true + + + + libsodium + 1.0.19.0 + Frank Denis + Internal implementation package not meant for direct consumption. Please do not reference directly. + © $([System.DateTime]::UtcNow.ToString(yyyy)) Frank Denis + ISC + true + https://libsodium.org/ + https://github.com/jedisct1/libsodium.git + git + 4.0 + + + + + + + + + + + + + + + + + + + diff --git a/components/espressif__libsodium/libsodium/packaging/dotnet-core/test.cs b/components/espressif__libsodium/libsodium/packaging/dotnet-core/test.cs new file mode 100644 index 0000000..1ddab23 --- /dev/null +++ b/components/espressif__libsodium/libsodium/packaging/dotnet-core/test.cs @@ -0,0 +1,43 @@ +using System; +using System.Runtime.InteropServices; + +internal static class Program +{ + internal static int Main() + { + Console.WriteLine("sodium_version_string: {0}", Marshal.PtrToStringAnsi(sodium_version_string())); + Console.WriteLine("sodium_library_version_major: {0}", sodium_library_version_major()); + Console.WriteLine("sodium_library_version_minor: {0}", sodium_library_version_minor()); + Console.WriteLine("sodium_library_minimal: {0}", sodium_library_minimal()); + int error = sodium_init(); + Console.WriteLine("sodium_init: {0}", error); + if (error == 0) + { + randombytes_buf(out ulong buf, (UIntPtr)sizeof(ulong)); + Console.WriteLine("randombytes_buf: 0x'{0:X8}'", buf); + Console.WriteLine("crypto_aead_aes256gcm_is_available: {0}", crypto_aead_aes256gcm_is_available()); + } + return error == 0 ? 0 : 1; + } + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern int crypto_aead_aes256gcm_is_available(); + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern void randombytes_buf(out ulong buf, UIntPtr size); + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern int sodium_init(); + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern int sodium_library_version_major(); + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern int sodium_library_minimal(); + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern int sodium_library_version_minor(); + + [DllImport("libsodium", CallingConvention = CallingConvention.Cdecl)] + private static extern IntPtr sodium_version_string(); +} diff --git a/components/espressif__libsodium/libsodium/packaging/nuget/.gitignore b/components/espressif__libsodium/libsodium/packaging/nuget/.gitignore new file mode 100644 index 0000000..d4b1a8c --- /dev/null +++ b/components/espressif__libsodium/libsodium/packaging/nuget/.gitignore @@ -0,0 +1,4 @@ +*.nupkg +package.nuspec +package.targets +package.xml diff --git a/components/espressif__libsodium/libsodium/packaging/nuget/package.bat b/components/espressif__libsodium/libsodium/packaging/nuget/package.bat new file mode 100644 index 0000000..565a96b --- /dev/null +++ b/components/espressif__libsodium/libsodium/packaging/nuget/package.bat @@ -0,0 +1,13 @@ +@ECHO OFF +ECHO Started nuget packaging build. +ECHO. +REM https://www.nuget.org/packages/gsl +gsl -q -script:package.gsl package.config +ECHO. +REM https://nuget.codeplex.com/releases +nuget pack package.nuspec -verbosity detailed +ECHO. +ECHO NOTE: Ignore warnings not applicable to native code: "Issue: Assembly outside lib folder." +ECHO. +ECHO Completed nuget packaging build. The package is in the following folder: +CD diff --git a/components/espressif__libsodium/libsodium/packaging/nuget/package.config b/components/espressif__libsodium/libsodium/packaging/nuget/package.config new file mode 100644 index 0000000..aab3811 --- /dev/null +++ b/components/espressif__libsodium/libsodium/packaging/nuget/package.config @@ -0,0 +1,4 @@ + + + + diff --git a/components/espressif__libsodium/libsodium/packaging/nuget/package.gsl b/components/espressif__libsodium/libsodium/packaging/nuget/package.gsl new file mode 100644 index 0000000..5b255e5 --- /dev/null +++ b/components/espressif__libsodium/libsodium/packaging/nuget/package.gsl @@ -0,0 +1,260 @@ +.# Generate NuGet nuspec file (for subsequent packing). +.# +.# This is a code generator built using the iMatix GSL code generation +.# language. See https://github.com/imatix/gsl for details. This script +.# is licensed under MIT/X11. +.# +.echo "Generating package.nuspec from template." +.output "package.nuspec" + + + + + $(package.id) + $(package.version) + $(package.id) + libsodium contributors + Eric Voskuil + https://raw.github.com/jedisct1/libsodium/master/LICENSE + https://github.com/jedisct1/libsodium + http://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Salt_shaker_on_white_background.jpg/220px-Salt_shaker_on_white_background.jpg + true + false + Sodium is a portable, cross-compilable, installable, packageable fork of NaCl, with a compatible API. +

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≫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