From 42b7c15e7ce4c1a46e8f690d8cf0ffb27db054ca Mon Sep 17 00:00:00 2001 From: chainsx Date: Tue, 16 Dec 2025 17:47:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Amlogic=20A311D=20(Khadas-?= =?UTF-8?q?VIM3)=20=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 2 +- README.md | 6 +- documents/Rockchip.md | 21 +- documents/compatibility-list.en.md | 7 + documents/compatibility-list.md | 7 + documents/rockchip/构建完整镜像命令列举.md | 12 + .../bin/linux-firmware/ap6398s/BCM4359C0.hcd | Bin 0 -> 28164 bytes .../ap6398s/brcmfmac4359-sdio.bin | Bin 0 -> 576532 bytes .../ap6398s/brcmfmac4359-sdio.txt | 226 + scripts/bin/u-boot/khadas-vim3/u-boot.bin | Bin 0 -> 1278832 bytes scripts/boards/khadas-vim3.conf | 16 + scripts/build_boot.sh | 10 + scripts/build_u-boot.sh | 2 + .../rockchip/amlogic-kernel-OLK-6.6.config | 10749 ++++++++++++++++ scripts/configs/rockchip/chroot.sh | 0 scripts/configs/rockchip/rcS.sh | 0 scripts/gen_image.sh | 9 + 17 files changed, 11062 insertions(+), 5 deletions(-) create mode 100644 scripts/bin/linux-firmware/ap6398s/BCM4359C0.hcd create mode 100644 scripts/bin/linux-firmware/ap6398s/brcmfmac4359-sdio.bin create mode 100644 scripts/bin/linux-firmware/ap6398s/brcmfmac4359-sdio.txt create mode 100644 scripts/bin/u-boot/khadas-vim3/u-boot.bin create mode 100644 scripts/boards/khadas-vim3.conf create mode 100644 scripts/configs/rockchip/amlogic-kernel-OLK-6.6.config mode change 100644 => 100755 scripts/configs/rockchip/chroot.sh mode change 100644 => 100755 scripts/configs/rockchip/rcS.sh diff --git a/README.en.md b/README.en.md index eb148e8..e4a25f2 100644 --- a/README.en.md +++ b/README.en.md @@ -2,7 +2,7 @@ English | [简体中文](./README.md) -This repository is the main repository of the openEuler SBC (Single-Board Computer) SIG. It provides information related to SBC SIG, build scripts and documentation for openEuler images suitable for development boards such as [Raspberry Pi](https://gitee.com/openeuler/raspberrypi-kernel), [Rockchip](https://gitee.com/openeuler/rockchip-kernel) and [Allwinner](https://gitee.com/openeuler/allwinner-kernel). +This repository is the main repository of the openEuler SBC (Single-Board Computer) SIG. It provides information related to SBC SIG, build scripts and documentation for openEuler images suitable for development boards such as [Raspberry Pi](https://www.raspberrypi.org/), [Rockchip](https://www.rock-chips.com/), [Allwinner](https://www.allwinnertech.com/) and [Amlogic](https://www.amlogic.cn/). diff --git a/README.md b/README.md index 1b0acf5..17cf7ce 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [English](./README.en.md) | 简体中文 -本仓库是 openEuler 社区 SBC (Single-Board Computer) SIG 组的主仓库,提供 SIG 组相关信息以及适用于[树莓派](https://gitee.com/openeuler/raspberrypi-kernel)、[Rockchip](https://gitee.com/openeuler/rockchip-kernel)、[全志](https://gitee.com/openeuler/allwinner-kernel)等开发板的 openEuler 镜像的构建脚本和相关文档。 +本仓库是 openEuler 社区 SBC (Single-Board Computer) SIG 组的主仓库,提供 SIG 组相关信息以及适用于[树莓派](https://www.raspberrypi.org/)、[Rockchip](https://www.rock-chips.com/)、[全志](https://www.allwinnertech.com/)、[晶晨](https://www.amlogic.cn/)等开发板的 openEuler 镜像的构建脚本和相关文档。 @@ -331,7 +331,7 @@ SIG 组基本信息位于 [sig-SBC](https://gitee.com/openeuler/community/tree/m - platform=PLATFORM - 开发板所使用的平台,目前支持的平台有:broadcom、rockchip、phytium,默认为 `rockchip`。 + 开发板所使用的平台,目前支持的平台有:broadcom、rockchip、phytium、amlogic,默认为 `rockchip`。 - device-tree=DTB_NAME @@ -355,7 +355,7 @@ SIG 组基本信息位于 [sig-SBC](https://gitee.com/openeuler/community/tree/m 5. -c, --config KERNEL_DEFCONFIG - 内核编译使用的配置文件名称或路径,默认为 `openeuler_rockchip_defconfig`。如果该参数为配置文件名称,请确保该文件在内核源码的目录 `arch/arm64/configs` 下。 + 内核编译使用的配置文件名称或路径,默认为 `openeuler_rockchip_defconfig`。如果该参数为配置文件名称,请确保该文件在内核源码的目录 `arch/arm64/configs` 或构建框架的 [scripts/configs/rockchip](./scripts/configs/rockchip/) 下。 6. -r, --repo REPO_INFO diff --git a/documents/Rockchip.md b/documents/Rockchip.md index e108fa9..f46a1f3 100644 --- a/documents/Rockchip.md +++ b/documents/Rockchip.md @@ -130,7 +130,7 @@ 5. -c, --config KERNEL_DEFCONFIG - 内核编译使用的配置文件名称或路径,默认为 `openeuler_rockchip_defconfig`。如果该参数为配置文件名称,请确保该文件在内核源码的目录 arch/arm64/configs 下。 + 内核编译使用的配置文件名称或路径,默认为 `openeuler_rockchip_defconfig`。如果该参数为配置文件名称,请确保该文件在内核源码的目录 `arch/arm64/configs` 或构建框架的 [scripts/configs/rockchip](../scripts/configs/rockchip/) 下。 6. -r, --repo REPO_INFO @@ -262,6 +262,12 @@
Allwinner H618
openEuler 24.03 LTS
Amlogic A311D
openEuler 24.03 LTS
Community Support
Amlogic A311D
openEuler 24.03 LTS(kernel version 6.6)
Community Support
社区支持
Amlogic A311D
openEuler 24.03 LTS(内核版本 6.6)
社区支持
nJ}@P^!6 z3my=&%*^bDF3|7r{h}ku#Z=ZwBT{2B-^VXAmVI!G^b7MgD|1GE@87;KqYk}muFt|| z5z23yGNb5D>Gz>@JxXLy;yUL^l*ryJQTLUq7DLr67v)u>JX#hp?(j|d$&z00FX=|G zr0(J}X>nSNt4x}AUs!_`J4%IF8Fj>jQEu5Rm7uRn(ATnFAo|)|w-x)igSL|`gSRtV zhHRH@8M*9EZi`j$^(Z(E#==D5 z_Za;NwPv^6p{X;uSpJ+;!VTjS6PRI%{Gh_Vv2qhVkNxfOl?7Jea!@XZVAngIQyU|= zMC{XAd@syAD@i1V`_%V#V2f*DyCqZIY~s~Mi*Mn~L`XOdi}W76ZGl|s`4B(bVRM;y z8mcz-g%i`Kz7+vIH;Q|JOYa|VFJs?)_0sjFg>~iDaBdy1I%CWkz@JfNoHy8XoFO~R zTgrzP4G4LB2y>76LSk+re@T^mevnO2}z66&Jdx z3=`unUvU?7KlY_~*ksbP5#%KFVF8Ga)^P51?7|f Mq}wE+yw|7>4>@P$|xvY*x;cePk&ShIbjDCm59Sa2FXi)+=+E97aJU z!yczRCUXZb&o?^GD5p1J&XAixR!*M3Yvr03k1Tca$F%SI&Uf5Ne^1v~SZa^xc9ove z?zHbH)*E;6x r*= zDmCxKbFz&jMcYJ1eko;CGn iFmR;b`ZFZLu=i(kh*GX>3}#RdFU0ExV|idERQ9 z?mbwlnWRatvmY!j@XD83m&ip8Q=~1kj%eB`YSbUyRIBT`YMyc>6kN$`7#r-x1?R`w z#$_vNQL7n5*m}4CJpG4OEo$WJ>}!e-izF({Q;%P@XC|i*HN?uj>wCQ8!>K24s#N5y z-CQj<-22p$YW|PbjHb!ZV7q*mIu+pg;9L$8+oF;~N(MtpmUdP{=P|~ QJBC6|ybx;3;!#zXEs*ZdI2aZKf6yS!3Xm12(xPh^h-!!n^g_S#c9 zb?zrpc&(jJ vq{RUKvZ^+AxH~EdV#2C))Dve5M;GNv(5~)^i zjMx;pDQc5qDYrDVWgFz(qq2xMiz~BrT%`@m?aps6uizs#hK5IbN)MD |C7l >A-sH&SLh$6S@xFSuK_ST|A_>Y`3ThF|6055A7`N z*kxal`yTvs{3DV ur%N8k%~JHa2yaPuU4ez||s6%_GJ&yjvQpi5)jTp}2UR zJ!F&2%a{~gNI9 y4 e<}ZC(?KR_N`MT^}JXO@I9h)pj!CUax8W zBa%roVhv-g=Xd$mbf_v$`M&Cis8Vh{t(`k9{K5yfoeOfNmRnU9cHMRsFvf^-VhY`) zD*xj( Z>YOd(~U(xi3-M8A9N`h%L&EpLxlcot_CnzbvkTqmo2t zOBKe*T<#s;KLUo_%4vq?BcdwGa;wg%s@yB8!_G@=wR+s^4RNk?$SUJC!9v-@tJ5m& z|KwAuexR~gU6qM>R9ViTY~{wUrHr!XsSUSxu1acZ<{ECVS!MIYwls*csK-1FVo%hZ z<{@4xtKUOLsczc|q-VI3FZKq!Hxr5FmMUiJw80+BtuUaq8S^hJ^G9=9q={xmuyu|1 z?k!4W7Z+u=%1p^cF_|}tXbjjO`9#R*Jk61jk9(82?BE< 0ml9J+Oii;f!|#*N&&Oo&$@-%YBjOc&W=K<%)zWsIm|g=Jl8FS#eSDIGQ+l}%#Y zTCCa><%+C|C=aPhZ|IAwgT`4ZjpZV$X2QO)aLURF9N8k<9PrQTQEi>$QbRfqOR8Ww zWQ4kM9H-nA^46Ja(NyETxiT$|48U1A)e{md*9dO99(TxL37+zmOGU7_g@P0I%mP^6 z%bnNl $C S;~bvqOM!xc!ICUQoH4^f5=C7%G*5i3bW*|Q`ZOl=|>B*3bSb4<6$pHAN**^ zR%=Kz8E){>8GeV)6Zn-?;bF!RFEjkg((Tr^OY}G7QfP2a3_l-|oyLXO0{(3QrS}M5 zS(KbvSt$2LK-w{O#!-u&%4sy}VE`RlLThu$5#wSEuwPN9AAN`+l%qcCI(aUER<43p zrssT=xAaUllC$v9+)iIzU=6=|CBw;Yu9oXwegYP?%m|BGUTM|ldU +v+*#PlW*5)T1kYAtjichmdFfXgzT0|d z2uxUL@O!84*?`(5FCktzSFncVjNZNAz}^L)x%$eYx=z;2RBfH6@eorg;yl0|bkr=N zJWg`$T}+0d&WO)=X&D~|wfeiwa&L-*Nl(eYbPcxrn^ZT^wo+L`{|Z;S8H1B|Usqc` z_1!q? W{&gSk{L z68XXN7Ax8FlWYdGF5rK>H%0mE`3G_o!h?#9TnxX}F;g0zN5(Ale9x16^F4TZqF&gh zQZvQ{ZBa?7*-y0%wS^RsQR6%bj+>6H)>ID}AvY~(Qz;ADqDG`R4)fF&dfgh`g4s-B z6U(igXFE$D Ty^zB>B^{-#|n#>$fO7q7oq%%m+wz8>Uz!Z)yI?RADx zj~$&)Z%B|P%7 obM3N_XbZA$l^*#@5fsqAmDwW&> z?u<-vKo<3V{26!`f9j=3J+!w|XIFzqu(X_%OEprYxsOl$Pw+|Vz6d^D`!_!Il@Jb2 z#r#VNIy=fR|2wztNA4!v^I(^x *HI|U3{bCuY$|YjpML_ z?3X9id9I&xn5CQne@aiv58NyNSMFgash@kH;9aPkN>*}4Hu#rACF_BH$r}Fy_fi~) zG4jGs@~#2AgT$2S>>+);E2F&I-OsyyzSDt!m$A9smwu9WKbCMe?`R1+JC(|R<=sAC z6>?vD-NN)q?+M?fu8*bgYAU-_>U!U#GWV;0<6RC$B9%8f7J22DlDX_h{%yEU XIzdb+j zFZn0 N+$Q~_0XQ$Ho@BHiP4f0Qp`z;v#CwvpYKTWOI9(x!6 zw*C|U1jt@qF1 wx`1P@~*Bca_?K`9-X?6@SUH8QNt zimmZ2L~oVYu-BpCj!2Oj$W(2#Jq)^tu9c`h+KZM`jie~w=lfN!qG~kqG}@CFFQD2E z8cR`*gSM_A*@~)b_Rt_VqaBYx cCzRR#I_d@XpY3R+@)V|xExd<{P|8``i9+Hn57B}yut zq3^_;f7C{2h-qD6dzo^jm#La*(+y7GnN0!zgsxaIF!uJDhhWW&>q-Kb-*D#so3126 zvGb0$d^xBs7Yus3Ut3}x$+r9tXv=-R=AL_?ebX_kEVnEBXO;X;Dt~@^tz9#o&MNl= zXO$g;QXC_x6|9%vEdCd%r8@biHRe8Fbx+t{9V}q%MPP>GK= lRk|SO+!tOZj%kM7cf)+=!-7y9GQ?5>@^u>O=BOC6$ zoj0GIMbqmwX+M*Un&f9UT4hL|3X2hT_-j;uPjwW-{@(R0P8w>TzJP}pjWiX!_QF+@g`$sL*slg^R&-{eLiqvIIS16^;2J3=M}X0pIaeAD`uj_ zNpyeo&6qkC7Bh=lJrz(G^js)h`2mZG7)ZIE^P5oig44eDdP8#wR^h)*rzH)7PgU=f zThS&xP9+$F#W&SD!xvb7+E>;~?|SCp^~v(!I_9+R%U(9foA4>L<<1^G#?2>z^jyWw zX^JNko|v!aX0$( q!cJU+)i}j5=6+Cxc%WU!?rBZ(Pu)CFnDw-3cC#hR=-l z1;HHPlYZJ~>dC$(FQDzkIfGAYMGfJr?IrqG+~2}}A9FqC*zen7ikU;C?pL*eL(W#L zl|`JY2|us@=`fty2{Y?&bH%maaX%dc=XQbxF;@SVF>snI-21=HLxC7W>X}0$@Xnbf z+rM2Z1zO)A?_M?IJT4jTyUSnx+CSGG=Y+VSyOd)^3mf_;yr5nkb?7}YoHf|xf`wUz zeT&(ur?~mtqg*a$ }rm>X&FSgC1u$d zJ}XDo%E+>^r_2uJxm
c;V+H53T11%>S9Cfo+ wsCFIA~@UhdYvncgm17EdLfRJuDqCg~o-^sY=1CeurhigHbK^35FAQtO}?r!XL z!hP)4Ao3ot1mwVb_r39nBpUsq7Z_ZOo$+Q<+p;$qeBW`?d)GAF@?V4#+?ys%xL;uj z_%8*RM&)+{qLkl755*~qO!?i+dzIg9d@$huDllJSyKuAjhd<4CWl_i4R0cAN2!ox^ zL-RBS-s0k?)3F)(C+ZvK?8|HBP~;cPhmKj{8c8Ao8%%K!DQM}x$Nv_1us>%72IhVJ z?kKqL{uA(SpT?y$h0Eb%IQ?{aD=VMT8WS^Qx~!Fz#c{f+gKdxjg?eG`(!^k>Tx8_B z>515 %hCvEgxwG4X)8?jq4*+YgUaS@`DS ug(=(6m z;$yHiGB7up9CMV0b32Qe2hJSWSxAycHhYWgE}XpJ+~7v39<|r^-Z{tI>C@F;RK%SN z%hhwc?1qvZzGR$S(G$)SzR!*-`+cu2+2I=k{}aAXdPj4Axt8Jn{^~+-=o=R@E4IlcJ!%=m9dI3!$DWIE;foNjmMgP 7NT z%!9h3w1aa>zbIw8*xS0&iDRc{DsI2JT$Qe|RSnp1T}#;DSJePnc?#F-|6>nZrKp^f zSfx!&l;3`}P-SLrzxup0RFy``HifdbUjJ`;R5*v!;?B=I%Oi+v5#0j|%heU(&IT9h zVTO}ogA3I;yJnkQ0}@iXJh~H>sUE8z-QG-K;UwWST?3u-3W(SWv*`Z>$*7|z^ 1@ofUVnBEF=}&lg`*3hLAv8}6L`@TR&>QR zFxSXw`5nH`d*i$@52qGwZ3wT3_#vm&-QmHUe%-0I8M*N6UjOhOVoE7wOzFtyTGs%) z0wGP^R3^qnkSXBDHnfTIM+4dpw*t1Yy6!pjVy|D-!{}*W65&Ao3zT=5+vwP1(T+*o zWJE1@g})Eh%I51B=ZWjoF-Y@|ZmfNnD-Kc~ZHqkB>%ZC^?@gO?Ruy$VkQ{L#BDd1Y zUI@?KDe9T6Rz*vgEfxKEwp%SSYUVz6e7zVI#kBn1dbOF3qhF!S_dxV~{aAhk`4H|^ zb#m+(sZwOkDJbm^-N_H7*lswI`Cfl*_pYU++{hIyWy*K)vhpjuynMLr%2ETuc6OV1 zHbvDO@DJ%$LPrnjmT^OEYOg#c1b(`ppALSB!TPN4zT%**AmygTOnJd#S^2KT^74Vf z_N?sQwS*N%Bkal&rrfktR;~&9Ki6$v8t@keQh0q)ChWU)kXF3w>J7=&+E;<+e?i@2 z!Qa0DyFsZ>>BuzD9MBt}_Yg+M$#LJ z~<+TUfq5f#beN5F6;eMw-;<--)0k z5G{-D!|nen5NJ$+UNs!|?drcvGX#Cx+^Kerwwvvcm7v`3LwqX#0#KIQr|IZ?mGNiH z$*5bo^qzjTRok>idXLIT)1xRustdtBi$))T-TEOsPEmR?Tz{3S&Cct! MV)q-}(Esd5>^Txip|_BF;6zI5Da85Pun$9=P!GTgMxF*gEJ2IfX_ z%qAr_nAaS{n$5hvVTd;Zr@yK5@r5%6wZsfQ;nPVLjxjKm@AyoeOc}=Xutw|6OS0cF z`xIUpFIHj_Pxw^QA*&w}7r+}5T6e17=s5$eJv||b5q5Paxpq06*S)BFbv~^*)$fFl zfGpvk0woQ(r01V$$bZH7N(# NUJ{%C{^){gv?l2L4K8 z{!3W9U@zgSJ;Qxp9fMtUvY8lg67#$Xd7tv725+ayv1?$4RzKdPu5(IeO~8Kxd;IF) z{iEZ)fxU-1^k$OMaZ!Uj26M8#n0F-EVA ^97*@lIgP4f&?Y@g0#y4c`t1=JXCaY%Qjt`l^;@7##BCK<2 zpczMTYo&}lJ-4VJ;C~6N8ikdN@I3Zgx193*wflK5V_0ZJ42{f`#O)8(*%gqXWp*QL z3i$U1(sEhDX32~jM6pde=+7|lu{xkOL{wT5_e*IctmYkGPKR4c)5y4pvLu{aW_BR7 zEUf0Z??Z5fh8*{~dm?IB$Zi94TtUHo-px`5IFar-t4cjzu=qENpUnKjZTr0`XO4@j zrYUY0DYoPO7&v578&D^6%HW8~uo{$Re#aNv!HP*L)<8?kKxyGWl(xPngQI1<)-#Gz z-mcX|R0jM_y#-6=CoC$6sukS(zuNy5GYWgznZ+D^H#d-b&0%S)b22r=5DV@%bTGpn zlZFwQadtLrZS{7at<&4Uj6Gy^-rDIzh*Rm!;HPjb;!fz)x&qku_cd?!TF@^ko$yaO z)FeYFQ?uO{)v?Ummlv0fITtt2+&Eo tJx-jMjDf zMOrSM>F@0fmWi7QY}p9!$RFZ _f7^Kb&21PR3+%VxOvK3PBI%kP@(cB(XW;he^^ z{uM<^*abCW>97;yT{5G+^SPZb(7R3y?gcXG>tE3PU_;rU!(dO@sjj4Ms#`1iaXL_$ zqp6GGRk%H;m_AiX*RVG~VwrTiJ;ttaZ$|i|pyR&H& 4fi|`rw>jCo?E*$9?yA%M1$OxNe0_W}q|tao@doulPB5brF<| z`AJhp3@m2@k7i4nT$5dsTL9Vxx&kug;~TUKbcNyqAjnhzf6y+_6_9Bmz86wEl;HoL z(RrLw>L)s40nzo`oi!a@*Dd^TaFDj09zxC`K4Iv+{64y4f6}$!9XDMQ(sMdZ-E<+V z3vaH4dg!`Y!kpfKKdVd6p #~dKbD(jtZPKngqSvl)u;aNoNgjz^$Ymz8u^kNPum@FTS*- zg6?W2U2i6%M_^YzHf@b7v1mC`ZoMmIO@B&yQoqBOQh#1*H!ne)%Ddvcg*c26A(|bS zb3c*VEqCff?<5g1Ny!+F;O3VZYaXeSNwT!@#pk4o)Cw!PRe<$Yz`rZN7-;AXgcfs_ zw%G`;F)#))lC60}d*9nQ1y=9yz1o@Ng &RC^pnKuhNnaoHtX2Ko5Mp*NBCWrIjzVGBN z7CL-~ueMVL|Mq6KW{2-+2f5cGgraVOIgziJMsBfif17$vx*jdRnH^Hi(|b(WQ};{W zvTEO_fz?Qfogk-2Qe(B~)!)ypF1B#ne820ZZLaOLyEaQqTCQt(E)9)Ji?KYg+rk+n z*(3%tK*nyFahor;7h&cHc3;X=i!x%6)RU-hNUs{FHdwU|XUg|NbAPK@; (K%2Fo_l(-*nt!IHhWr>ynLx2i>!%*vU> zg=Rjmdy1qPqc)QAZNATYAl-(wknR#GL{Do-s>0KdlU}w}Z5&@i<9yO1ul$sgRm>bT zzVg%oqY#jVW{%%Iev=w?{3BM=cXF8fJko2 T?1n78}- (q0f;Oum7alp_1z}Lax>$m-Uwe|DW#@!#}E8l~#AYWxhgTzkytr$wS`R4c7 z1WQ3?yJh(UyVXYU0{&|F&!oIaHN)-+OC<)CB%erSP}{j#Ql~QMYw <+I^UKGh&Y(r^anqN6h4_coPDD^ov$1-&+U zH|__onz^Nc8F7r4nP}=$zI(dYO3wU4(i_pK$iIw9#(y06Ti04?RX)aP@O}cus7eNn zpMh45?7&V?2uad&=bGSB)3F!uzt=O(TMbK3Cd}#Rmw&6`LIyVlw&f1r!49jJn0|-w zgU@Y-c1wSr@{4k7`Sa%_HqDNk8Xp6nUoj?kwcwPU38{jvJJxVclFVy@_czqdX+?!a z)>fjAGUH@F6!${)ReS}_&7gb!V@b+GJwoK(A+{meJ^qHCzB(`|%3vLK_`Z k z5cX)_{ROID)A8Re3ZTE~tAU!-NbZ9TEVtD<;H)fJ)2!nbWs~8HY(4&^J$?5-t0B9X zF(4fu zlir)D8Z*SB9+T!_#>jD26Y!4+yy@-JpUSiJdpgb%0{+CnI@rLk8c4DQXMg9U%?wVM zq8UN#e3AO6ni?kO+7~B2Q<3F`6jY?XYt^1PC)K8slqc}o %R~*gdc` zJdE_qx-)R2n=w}VD!SKWefcdo>g02$9@C!H)!OHB2a9*`+kB(Drsf*g2lwjCa#v!B zflFVLfi+OIZ)Nvbj>>GPr<&hYnmhH>O+t1R6GOE<2byqm7tL{J>2G*iiceRi{S9u> zGQ!%xe!ShF_Gw9%_TU!GC-Q?d#&+Mdt`z9M@Sy% JF~TBhtwRQ`N7K2u znm?tj_C<6nxI*{^=VpV>c1Ej1>)z>tz6p* G z? i-hjbr`6r zV}y@7hzWZeu-XECIZA0yeWC&OVk(^%E3Kg(*l~s`-K7Jv6c!_kYWRSE75?i-AyyS+ zRJzBum?W8l^9M;84W#o)lBZef#;6_UiFx?1uoi2wpbMe32Ax?Rv>@+ThqScuTHgWK zi21p}Qs4QB66yTG;Vo644N2?lK%Jez9tik{!jA5%)!!TO|8!Ezq?Zk0naAL2b 91*bbH}lbka* z1ZOT8Ub2)Jj$x)d I;MNyD)W^SDw7`f($zY+kCQ)-8{}eh%A-b zhF#b*3;2sWNKz`~i%BCXV?1dkn_z9RW-4=OB|o$MEPK;|9)DctIca(@zv-#;G~-g{ z44?4JssnN{iixu9;Sb g{UZw`3c)sbG3ZJUC-dR54yz2nEcWtd0w z#$?yUOys87bYP=ZA1t}A)Je7nf~8*SxVu!=e1XQ+mmYZCdcS9!EfwSRG-Bih>y?*! zuXhh#5a}1h4Bl(sTbeMm^uX@oCta#hik5SdEf~j^I@lYY7CvE*eQ)ueQdP3NWw=dk z8k()~?&j4GsEa-=+612ODc)_5YzUu#=k^mW9jLSpI5Wr=hq5-KtXP>Ix`f{Kt@e%R zqE-&o$8{ZeT8 &Hv`?rWqU{FE?B< 18q@O7>}y zx`9P~!%^Q;T3PZA`;O9&ZZh&+#RHq;T&9xcYw&MTf+t$a;62+Xg7<7?DT6)tb4d;| zvd5p)Ihl+18XJ-v2He6vB1L HpNBdifISygayW9sDp8)MlErwrA*?HN;CbX2AbSFOwv1?sJy~(t}!vT4Ucs zPv6bkqE0HAxsrYHL0BO_hGCBLEe?h~hmo#_m90tZvur!CFG1&Sf!bWKPp{Qt-#1NW zNUxdxaJBCjU0DBMZfG PX zr)|uLMcLhc3FoIc{lSc$tQdIyYpJN%zPLqNXoi+`{TwOhA ?utJX@pIw#aiE5!I&xxgtWQjJumkXA34U2p;X?mUOsx!# zP)qbw?AA;)bo+M)n32hdImOnEy@hkqRK#r8(6Ku;H8rT)-}QYGpnARC%#4U?h-^@M zN8k=T-7!1W8xL2&|61=&Ms^-=mi> 5YWx@kcO?u*rO Y H7`?`Abr4hef=!Fp $$UcST?;IM|+gc#UD!oxwB%WE7X&|4$P!$qh%&9AIhEdg=1%)&dOTb?|iRz zt6{5UcgE#xmR^b;h!brxO4}5JTL;ePujJF&dj<6C%c%v9k6 z8pceqJ2>T<^)JZOu_Z>0>xsyHC*tQ2D&yr7_>09 z; Pat(CWblQc-wT)tho$WW@7_yQr$jd+-H2Z7z|h`0 zi&y8v7SMHE-#U*7JF(~RYJTp+_gLsyqcexQN6GOjBg$AC-QlA3UkM2qy!eU5gDnFE zK|!Uy*Z*1|8mmg$bA3{F9QinB-rZ|2(%p=iRO`|eb+zx4{uOnvzbv?-uJ$#;CmXXk zT}^ASn$}}AJ+T?J!+LpAGhJWM^&=7H(mKu@OIMcIv*}-DpD`_|;``=TdCG|39>cIS zT`gFXedfav~E-?;rvw`s9F)3iY24#V4Oog(s_NBX;AJ^w|K?B-g$ zx~wead?lHc*4QT4g?Mw!82fDZ)%C=Pbw&NGL7^U5GWJpA#1q=E8gJWTI%T)c93b9+ zkr_pIrNf(anWk2m%n7?b;C}%Bm-CoZ5lwH&woTcN_l!evQj6KbB=g>w7wuxw@xr9} z#ym30BAj$S?3y!30UvVf6P$lJw5+kpSJ$NwS+#|GI=jkO)t%Qs?jgd5uwolinM!6t zCE^}%ZpB`w9pUS{Nzy8hg?ke2b#T87_dK{)b=PBL_4>8l87`XsJttE|M?-~EhIeyx zkA$gGr;uA4oR8#GS}bCz^Vi5R4=EQQm$}I0VYuhP{W#py;eH(MN8rwZI}h%M;kLn@ z19uMG9Nbg8EvW4>NX*BmYo&F5OPqcx^0gprJmO^_-ekDVaF2z1BHYPvo8f){?qS_d z==*8SPr2@c{%5wHl|IJYNRlRcm?{hY2ZuiGe$3qLZS`}MPlhhmWacK=@AX0}du94a zFRKstD)gaVrC#k->6Ko!p7qA-WnQhGcoXy^Tu+&qs;QFRj9Er}3a44f3-_q2eBGU_ zX@Z>~ CjfLY3>kzGmjWxhB_puf^%V!u^0NkTU_)4N^lEaRcvz zD4-TJ6qF1a51ItBf$~6eKu?0G4yNllSbV}JoWs;$Ep!39JXBBPO%eW2FIK?tOYbq` zM9S+34X!AO@IHFAPd+a Fle;T )lM&l&dB^w2f8qbD!}R>_m;jyuOa9V_v7hzf7dU4k zd|{T1*VGM7j{YK(CpZ5WWA6eNRhj>fpEGA}zyQNV1tgpc$j!?DYMPeApvMcf<7I18 zYX#{ts1<12YFUn#N-K*1O`%#>`)(?030@Kf2D@l}w=E`h*Grc%yRFuK4+v+@0K@#> zpEJW~?fzb`|BKgQp6B!2@1N&$dp0O9mn=xt6h~Q^T<#(}xl9 H|XQxaElBTdC`LU1=}7SCitkA-_(chd z0_4H{-tjUd+HtEkEQEvyo4?EUuS?*Q;Vh*xWw{37-QHShmPN%EG rQPkQ^i(kXEMUQzKJ;h zJ`%s_WzrR%JAp+j!Q;cqe0~SYed$_IW^N{W=vK6n5$5@VbM_ TFH-a88<~7?+D%MG;R8--rok!Anv)0n(un~JV&00F6|Dj9*YMH2W`ulS2joB} z0+XzeZE$E1YtI0aq2^OOjPO@TAx{M4I3y&ki2b(jaY!c77}rWOEoQW!bUBN2 zrpl-`^?N%I_Xs497~u`1xO*TTGR%Q|RRbg31xkkCZj}-(^Bc*6v#NflHOb0$U``FN z kKKU#W!Gx!1hCzn`wzxQKU`tf7mqHrt8p2~BK!&+8?d&{|L zex4FLadV|v9Ppl(!?lM$6t_yzv!NedsRN%s!SO*#anZrP&g+r0qDmGu>PzlT(?XJK zK~h`^0~#33?mL7hkCVLQkJv{9d_Up)79ZvHm_*V7T68PXMj63_IsBpcfW$!tOgTIY zBXbeAh>79wXa1$)W6`^AX;WkLon{AHU CSBJz*j{pxtxwz`NdMXL zp{NDbme%JT!f4n$?nYTjjVW1)F4jOcgGU^u(ZDUWnlWj%v(<{~6kc6_T71Q?IslpI zYmkG&9 g_k z;NlC<{aBW&a5L%HGf?uV5~-DJpOGCjvVTT0ZA{ku4%jI9F&lDxyOL5$vhb_oa~gMH zK74php oojx)$ZzQ-_trmp9oUAv ~lUA+wbQ@s1i>x+?*)7i^v(`+}RK7(am?n9jpF)aAS7@;DCG6iOKL zhSJmGc0c&MSm!k25@zAmW|9vawC6@`7_{TYSYj_vHNa+~p7SvJb(dM#G*mDj$Tt2U zEq ;X0O^++c8lz6vq5_VNZl?Cp?UMK$#$ph Vu#C>FXM7W~)m1tqR|7F?;5=J8z3BG{E6xxTE% zoUmm31dj@(Dsr_QT<-7=HaE?kK2wq2=j|Ct!Oe`BXq-vbYCt)kNIv?^H~IU#mj@u< z=t-WbM4C$jbly$khtBNto*UrmxBQsJ%mPn;5uX6aCkRcIshY|T3$NI*Lwp!o|G4GK z`;;oALwW0?Da>Q|lJLETZw>7Jy^r6|@qLBw|M2zWBVMg%jvAKXU$5BT$fRe$8c32E zIuI+*NIEmuV_likyue}MheJMWSU^?8j>D+I>ef$Zh _1{EdKGd^+Kq|B5rvou!Xhb{Ulpvq<$_bYdr28?kuaXf z$2BUm73V8v;52o?@*gN}d5~M`9}82*d>&ajxPWkX;bvIQa3x_+{vMh#9IVH2*-;2l zyVq@w0G@KtMKNBKW1K^b;xsN-d;aSmIovTLBG_zY2ZcWcJpLqU+Q@QBG04pxV2tBT zO6=9?e&a0}C0YE)b@74+5^dbYiH6u&eclqtmzwzKSuw>4f@eU*?<}3uJkbz^5Ud;Q z#^X$NqS`--SAnl?;4d#RLMAl}A;4%Y40B=y);Em<+%yVVNE?H+;}K(G>xObBV|oeo zGxf`#d^h^&_THW4AByp~D+Eh8*U!qb{95EA<6p=}iG1Ra5Bd?K{BKBI>sxhH<`P92 z+PHLQC(GR%vhFyTMuRk7 ##FT&FOuU&pNvct4X< {H>KAoA(&2Y~cJ>o*GG} s+Go&&pfjr zv3JAu?bCH tnj@^);3g@odrY`R{w4R%^Hb#YatP~1 zz7s{=B4glW{~`@kP#sQbgL4O;>`;4lL)Jij=JOQui*qHj^@~O(rw6o>M9 q6 z-p|d{wiekqTJemwHL@#(xrF(2=uadc_&(&9Q+Y1EUfe7tH5RSfZ958FTHiX}GCm9M zFBk}efEZ&jEHmmWW>}DxE1oYIn4<7`LNHc_1;go#p7F?=kV8_zy6BZP3E27G6qkTn z^rko;u!_cqRz1|bxbfjfpg;5oIG^UDptr+T3&P9% jT+Yt_O^^%^d%#ZInyP z>-p{LASZeFfV5n1JoxOgD(Q=o4(SsMGe+lPM=C~kNLALHa)%=YSatkx4#k)#_q}QCB(1gmnnL$QC&O5;;l|&J){%r|E5{4SyTW=