From a9b1d60f9e0ed6828b9fcb18719a6a498a2be027 Mon Sep 17 00:00:00 2001
From: Eino-Ville Talvala List of rotate-and-crop modes for {@link CaptureRequest#SCALER_ROTATE_AND_CROP android.scaler.rotateAndCrop} that are supported by this camera device. This entry lists the valid modes for {@link CaptureRequest#SCALER_ROTATE_AND_CROP android.scaler.rotateAndCrop} for this camera device. Starting with API level 30, all devices will list at least Range of valid values: Optional - The value for this key may be {@code null} on some devices. The area of the image sensor which corresponds to active pixels after any geometric
* distortion correction has been applied. No rotate and crop is applied. Processed outputs are in the sensor orientation. Processed images are rotated by 90 degrees clockwise, and then cropped
+ * to the original aspect ratio. Processed images are rotated by 180 degrees. Since the aspect ratio does not
+ * change, no cropping is performed. Processed images are rotated by 270 degrees clockwise, and then cropped
+ * to the original aspect ratio. The camera API automatically selects the best concrete value for
+ * rotate-and-crop based on the application's support for resizability and the current
+ * multi-window mode. If the application does not support resizing but the display mode for its main
+ * Activity is not in a typical orientation, the camera API will set When a value other than NONE is selected, several metadata fields will also be parsed
+ * differently to ensure that coordinates are correctly handled for features like drawing
+ * face detection boxes or passing in tap-to-focus coordinates. The camera API will
+ * convert positions in the active array coordinate system to/from the cropped-and-rotated
+ * coordinate system to make the operation transparent for applications. No coordinate mapping will be done when the application selects a non-AUTO mode. Whether a rotation-and-crop operation is applied to processed
+ * outputs from the camera. This control is primarily intended to help camera applications with no support for
+ * multi-window modes to work correctly on devices where multi-window scenarios are
+ * unavoidable, such as foldables or other devices with variable display geometry or more
+ * free-form window placement (such as laptops, which often place portrait-orientation apps
+ * in landscape with pillarboxing). If supported, the default value is When Capture results will contain the actual value selected by the API;
+ * Applications can also select their preferred cropping mode, either to opt out of the
+ * backwards-compatibility treatment, or to use the cropping feature themselves as needed.
+ * In this case, no coordinate translation will be done automatically, and all controls
+ * will continue to use the normal active array coordinates. Cropping and rotating is done after the application of digital zoom (via either
+ * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} or {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}), but before each individual
+ * output is further cropped and scaled. It only affects processed outputs such as
+ * YUV, PRIVATE, and JPEG. It has no effect on RAW outputs. When As a visual example, the figure below shows the effect of With these settings, the regions of the active array covered by the output streams are: Since the buffers are rotated, the buffers as seen by the application are: Possible values:
+ * ROTATE_AND_CROP_NONE.
+ * Devices with support for rotate-and-crop will additionally list at least
+ * ROTATE_AND_CROP_AUTO and ROTATE_AND_CROP_90.
+ * Any value listed in {@link CaptureRequest#SCALER_ROTATE_AND_CROP android.scaler.rotateAndCrop}ROTATE_AND_CROP_90
+ * or some other supported rotation value, depending on device configuration,
+ * to ensure preview and captured images are correctly shown to the user. Otherwise,
+ * ROTATE_AND_CROP_NONE will be selected.ROTATE_AND_CROP_AUTO, which allows the camera API
+ * to enable backwards-compatibility support for applications that do not support resizing
+ * / multi-window modes, when the device is in fact in a multi-window mode (such as inset
+ * portrait on laptops, or on a foldable device in some fold states). In addition,
+ * ROTATE_AND_CROP_NONE and ROTATE_AND_CROP_90 will always be available if this control
+ * is supported by the device. If not supported, devices API level 30 or higher will always
+ * list only ROTATE_AND_CROP_NONE.CROP_AUTO is in use, and the camera API activates backward-compatibility mode,
+ * several metadata fields will also be parsed differently to ensure that coordinates are
+ * correctly handled for features like drawing face detection boxes or passing in
+ * tap-to-focus coordinates. The camera API will convert positions in the active array
+ * coordinate system to/from the cropped-and-rotated coordinate system to make the
+ * operation transparent for applications. The following controls are affected:
+ *
+ * ROTATE_AND_CROP_AUTO will never be seen in a capture result.CROP_90 or CROP_270 are selected, there is a significant loss to the field of
+ * view. For example, with a 4:3 aspect ratio output of 1600x1200, CROP_90 will still
+ * produce 1600x1200 output, but these buffers are cropped from a vertical 3:4 slice at the
+ * center of the 4:3 area, then rotated to be 4:3, and then upscaled to 1600x1200. Only
+ * 56.25% of the original FOV is still visible. In general, for an aspect ratio of w:h,
+ * the crop and rotate operation leaves (h/w)^2 of the field of view visible. For 16:9,
+ * this is ~31.6%.ROTATE_AND_CROP_90 on the
+ * outputs for the following parameters:
+ *
+ * 2000x1500(500, 375), size: (1000, 750) (4:3 aspect ratio)640x480 and YUV 1280x720ROTATE_AND_CROP_90
+ *
+ * (219, 375), size: (562, 750)(289, 375), size: (422, 750)
+ *
+ * (781, 375) on active array, size: (640, 480), downscaled 1.17x from sensor pixels(711, 375) on active array, size: (1280, 720), upscaled 1.71x from sensor pixels
+ *
Available values for this device:
+ * {@link CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES android.scaler.availableRotateAndCropModes}
Optional - The value for this key may be {@code null} on some devices.
+ * + * @see CaptureRequest#CONTROL_AE_REGIONS + * @see CaptureRequest#CONTROL_AF_REGIONS + * @see CaptureRequest#CONTROL_AWB_REGIONS + * @see CaptureRequest#CONTROL_ZOOM_RATIO + * @see CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES + * @see CaptureRequest#SCALER_CROP_REGION + * @see CaptureResult#STATISTICS_FACES + * @see #SCALER_ROTATE_AND_CROP_NONE + * @see #SCALER_ROTATE_AND_CROP_90 + * @see #SCALER_ROTATE_AND_CROP_180 + * @see #SCALER_ROTATE_AND_CROP_270 + * @see #SCALER_ROTATE_AND_CROP_AUTO + */ + @PublicKey + @NonNull + public static final KeyDuration each pixel is exposed to * light.
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 9b305b32b61d8..26f29e38d37e8 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -3483,6 +3483,99 @@ public class CaptureResult extends CameraMetadataWhether a rotation-and-crop operation is applied to processed + * outputs from the camera.
+ *This control is primarily intended to help camera applications with no support for + * multi-window modes to work correctly on devices where multi-window scenarios are + * unavoidable, such as foldables or other devices with variable display geometry or more + * free-form window placement (such as laptops, which often place portrait-orientation apps + * in landscape with pillarboxing).
+ *If supported, the default value is ROTATE_AND_CROP_AUTO, which allows the camera API
+ * to enable backwards-compatibility support for applications that do not support resizing
+ * / multi-window modes, when the device is in fact in a multi-window mode (such as inset
+ * portrait on laptops, or on a foldable device in some fold states). In addition,
+ * ROTATE_AND_CROP_NONE and ROTATE_AND_CROP_90 will always be available if this control
+ * is supported by the device. If not supported, devices API level 30 or higher will always
+ * list only ROTATE_AND_CROP_NONE.
When CROP_AUTO is in use, and the camera API activates backward-compatibility mode,
+ * several metadata fields will also be parsed differently to ensure that coordinates are
+ * correctly handled for features like drawing face detection boxes or passing in
+ * tap-to-focus coordinates. The camera API will convert positions in the active array
+ * coordinate system to/from the cropped-and-rotated coordinate system to make the
+ * operation transparent for applications. The following controls are affected:
Capture results will contain the actual value selected by the API;
+ * ROTATE_AND_CROP_AUTO will never be seen in a capture result.
Applications can also select their preferred cropping mode, either to opt out of the + * backwards-compatibility treatment, or to use the cropping feature themselves as needed. + * In this case, no coordinate translation will be done automatically, and all controls + * will continue to use the normal active array coordinates.
+ *Cropping and rotating is done after the application of digital zoom (via either + * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} or {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}), but before each individual + * output is further cropped and scaled. It only affects processed outputs such as + * YUV, PRIVATE, and JPEG. It has no effect on RAW outputs.
+ *When CROP_90 or CROP_270 are selected, there is a significant loss to the field of
+ * view. For example, with a 4:3 aspect ratio output of 1600x1200, CROP_90 will still
+ * produce 1600x1200 output, but these buffers are cropped from a vertical 3:4 slice at the
+ * center of the 4:3 area, then rotated to be 4:3, and then upscaled to 1600x1200. Only
+ * 56.25% of the original FOV is still visible. In general, for an aspect ratio of w:h,
+ * the crop and rotate operation leaves (h/w)^2 of the field of view visible. For 16:9,
+ * this is ~31.6%.
As a visual example, the figure below shows the effect of ROTATE_AND_CROP_90 on the
+ * outputs for the following parameters:
2000x1500(500, 375), size: (1000, 750) (4:3 aspect ratio)640x480 and YUV 1280x720ROTATE_AND_CROP_90
With these settings, the regions of the active array covered by the output streams are:
+ *(219, 375), size: (562, 750)(289, 375), size: (422, 750)Since the buffers are rotated, the buffers as seen by the application are:
+ *(781, 375) on active array, size: (640, 480), downscaled 1.17x from sensor pixels(711, 375) on active array, size: (1280, 720), upscaled 1.71x from sensor pixelsPossible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES android.scaler.availableRotateAndCropModes}
Optional - The value for this key may be {@code null} on some devices.
+ * + * @see CaptureRequest#CONTROL_AE_REGIONS + * @see CaptureRequest#CONTROL_AF_REGIONS + * @see CaptureRequest#CONTROL_AWB_REGIONS + * @see CaptureRequest#CONTROL_ZOOM_RATIO + * @see CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES + * @see CaptureRequest#SCALER_CROP_REGION + * @see CaptureResult#STATISTICS_FACES + * @see #SCALER_ROTATE_AND_CROP_NONE + * @see #SCALER_ROTATE_AND_CROP_90 + * @see #SCALER_ROTATE_AND_CROP_180 + * @see #SCALER_ROTATE_AND_CROP_270 + * @see #SCALER_ROTATE_AND_CROP_AUTO + */ + @PublicKey + @NonNull + public static final KeyDuration each pixel is exposed to * light.
diff --git a/docs/html/reference/images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png b/docs/html/reference/images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png new file mode 100644 index 0000000000000000000000000000000000000000..2633996521b5d7c557c44c1892d361dead245652 GIT binary patch literal 28061 zcmb@sWmH{Tvn{%Cg1b8e3+@tJgS)$XaEIWM1Pc%>5Zv7zg1fuBYjA&)Wbbp%_u9Gl z*KM>#gR$n2l3Bf~*9cdTlR$*Sg9Cv;h#w?Hl|Ue{CE!yE3k{6$e5exufk?VMRWzKH z4BbfV9Y2~`+L)3!d)S+jn7Uh~TVi#t9R3pdM6|n9K zs>8c856(y7hlFCp^1#v)brU2fW_&J^{Eml`i0hWBK*PYI$uqA(Me>a z{dha~U4#50nsN)D-dl+q5_uO_@7j#&avY4!tU%NVJ)!o)tU1`8b{{liq3_LHUM=YE z+m2I6w+3*qFIK->FW;0_D}*u0W4mgUk*LOM)7v2wO7dA7-IN+ahTXDHT&
3tmQ7*wHJ<(8W@Hl$pDvQtxLK_l%GN)FcpPP@2~8pBpvk%xP_k_;V@%APfiF*y zQ-h#$=DIaFt5}28ntiM*gp8n&r<=`81VQ-35!WlOzPg^N{!Oodd)Yuvd<0o6Afd~y z1fJ}m%tGO#2JiMpw$x;YP~pa5Wu(_#(?p*4N6U1+4UZF?#}?A--OUi`lk;2F6I^iR zM_8Aa+&jf>sY!x_82+~d5|3Yt=7l3Mtun8rITt8w7LxX%7|6#)af&(09X>D`s_v2) zU&(3-l}D?=EOLjkn5ZF&56{PKSi{{tU<{DG9Xo@zNE3GW{(BPKF(^8NxtFP3heM0j z_6;^TM0DSUL_d^f+H9&b+1iS tynS^X3UWW4{N})6{ehr^PSc^S#()d61R7tcVU1H|_1xPt>t@h%c{;(ENH^ z s$d=8BN~)m`J_Gyk3j z4dOWY&&?{d;l5SEu|uz~x8|!$aO!KH7F<|9X-E@$$T#!wfMZ#gQ}YSj%pH!5OBE}~ zTD|4X^z{p7pZuf+LnTqTogLp;vK$(sYs23oBgPm`%av|RaK8NEqqHN-*kA^#%4aMG z>=-f7hT(#f6;(BMcc(Ma^L0aEtf}nY)?Cw7`2w;S!F?(mQPzrQ80OkSTH- zaG~KiT3RGWJn2fGBN5Y`l~}aMG`MgN2lze)`QYL^k2b4EK;@{^KyoL&pF=?ZC~;wK z0(#RD7A8A=LKIOO;M|y*_n|W>uvzW+aYl^BLU~x5-rF^sDnd`2d5>9wXD@)9LZ=DF z+#K&xZ@M6%U|35@3qsFYhCX2KIJ1~+8D*sHLp~dpA|I^|{6{ue+rgY4h5pJ~uD^ma zjoH{U$?@W&JRr(3tP{Kge~=e8 BVz% z% Yi&W}f_sK4tc oy{EBkv{F`*e?*8%`NYZs=T2kQ_1w*V=((eJ7X$l za$j5Kuyqe|MsRU()Q=*asC9H@-Y6nZLmr7P&WllAeooO7IVExK zbSp}6SQ(%U)nl>F>l>BDv$GjpP8heYNV)m_0d!^7=Ia=!N@LN}JqGn^EO*8^Q@))l zXYj4l(_*!^Op;2cno@5V=B(wWUZxV{S$cVFp-z;8>XfE-@^nDoOdXM>LY{x^HDA0j zlHba3jQ`9G`;*d&f0XUfLxo4ih&WZ0F?`_@5;fe{+*wy#A6az5Zim1^Q`6%L^JRgp zpwD(yW7(60AX*k1(JZW!^LUo`y-{>GwYwZ|{k%Iu&u(&PVHJ`ipW-8YG3Y6iIGb%J zKfozKwtx;k4+r(QfY1s9NnNnun-<+VnEf&42KK`s2_WA|i%*u>6E}-)bCpU$>fr=z zy&-onve^-2Qs?Q0DPt@?n;2D}z%-DF!0zK+a%XJO*;`yo-_JXnJwt!aB^ey|mDHEo zRB IK`e=)Q;mb$69RJqMX#@S-#52Qnr~u&&*sxHqsqun*kJh~5c+F& z!h>7v#Et+YW{FtJ!vdci;?8W05F)G&YJxuH$7f7zy?zKdzB<2>^y9RAuI10gADD!n z>#a|_JDCv6@*~LtF|t<1zQgGCwYh>7ko(VmfsmCsYk7|uh?z6FW}mH>?@gT42w8;B zB5Y5kllDdI*ET5MK0FmGUiXyEyU^_G@7qtT?>3+q;_(r{or9DWU=<$-28CtV_QLxc zM1zQ|;HZDU@gV%h!J&AWNVCa;)YLiR%;rg}{Lx6U%yvpShql@~97Ota_Z!MRy*fgb z6VH?D*_a!8p(4W>3ORKwp2+Iv` g`O0Kk<@6FXvE*A -lw;GaPci3u!5Olq4v66x-o9TEXNhguWYUKbHW#m$STKkv zbC2|C28Cs2F@D+^3yNg@)NrW3@g3cx#Y=5`xka~xc)QMs!W4z9&elQ{6Cpn@NuDs3 zOd8vq+`98Vn3d3)RCQJ|MgKHO!MZ-{L)FaZ)$iGp;pr3*>y(IYnWSi_A27^?6+N@i zLzXRlvSvc?aw!JH$sl<*qf2K{N3DQB$xd@K_Lbt=1-0AS?T{faWz?J}Jx0kzhtUG_ zP_S(_0kfmEUh(_5;DF-05}qx_2^azVWI3G!8AuXw>W6&7ZZ8T(4?=a9FirT0SUJxn zETWp|fYe~p8lw_KH1G7<%uOb{zLPyT74mO=n&P`SABT9BE0RQo`K?T)snXkJV?k4& z;qRq*-Gp{GbHj;>4G!`OF%PoAHVvqLf3ylsv{S+G-A%0YBtN>f`FI(nUu2tHr+)7% zrKOq{^J#JatUQoYq26m8@tql$Rm`@XnjDv=O3ew9au_s?6h7n$`zG9CuG1Pp76cMl zRc+r(*!HS13vt<{nnl^K@!*799A`7lFSV_OCB_=mi1!pkL9S&hE|zM(P #YMXE(~wNIdaekdU$KjgFKb%_)K%r%#D;aK1JH{Is8NwkVS#PhZfH zJ|bsbpVnj&`&X1-0S3_#&MC?JCNNxk7{4+xy~4pPj3GVEL)gbRhQdcU)?Nbe45iep zovQb;OX{1(=uPXDKXGWz;A CD9e+Yp2p;&;v;#h9V(g>7FJpdedOFhFM~>$ ztlOJcUoRT98pgKpjRTH=@OYp&cr2s9-T@&mnE~O0`{$9bzj8G5tTQxh1)!EZfqq&R zeN2!0sU}>Zmu1Y;`=)?Bas$j{nt9{H4ihEiFTZqmReny(5zf5XWAPtR`iw4r$h>=r zIX5@4lYh9FXL+OYi7z^X2;5$U3{KNSAC@b68J_6|);mWs!O=NoIK@TI9E-kTvNUa2 zhDCsV-Dk8?#88W_m1>mw!(#!F4%$yY|KCR?%6M_G2}Oz$$tV6s>WJ$(5tF}}zwwB$ zpUfYI?92vQv5Q<%uNBv@A5B$jez}yr&Nbmee<$Gv%IA`d3e0NWpRiSVrchTUYQVtH zpB7fnu6hGA8uG$kBBiH^tjTk!&a|l85W;}Bq-~C{tf9241NJrud;A_$g3)-k$qy3t z-_0 7nrzqF*Kis0=kbim3jTpVSV#p0YcAYH@<1I&9jJ*4-+hCWHDv`cJ*|JK zpL~ae$ajG~}w5BH`M$e#j@D@XS#9 zYUX=1<&U$iBWmiOMmjW8xtYC)9a1>>_wkG1 W7=w7k45`wH- zB$M@_m<{EWJSCYjeC||76%)|7PLpdd@YS4oJZ`#sgvUL2qr*JBhD$an1o4$AFwpa| zTyZLv@Z7G!&?`l4$ytBLI-P5Wxf$N`nQB06nQ+6Ec%gqn$Ouu1$0brq!Y*4AJ{eRq z9x&X6cV&W>_C<8PuK dTM91 -{$fi0eGZV%d@xUci1nF@Rw zl9lH+NmY;__)3l(?m6xuKsaJi(itHU6(!0i5$MfHktjnt>LCzz;EeIZD4YnB@02Dk zfFWBpUCMH~nJ>QLbbJBp@(7O871XDZDw+0KJqM|B8dv|ykbZw{P9Y!tG~&{>bkV2x z{Yd)n>KO@4ZO^zF9t4Kn=pOeFBr9cC9$Nxxjm89>DJ8hjnG-7VL3|6x^T^*bwdyL+ zA#(0Xc#2|?q$E@6EC_hU5_egbEo$;L311&pLk+oM&r8qJnk~*OgbBmoYM4Jj2*Twi z*@egb(mgnrY2>pVgb?{MBj%0X+iE_&sqld+u`V=noV`9C?}Qa SwFg@*Pn9gr>OojfrZ*-c)hfv%CjN8cn~R>cb&9Qi0ama$ zzcOp4JPz9HjZzHX8c2rz8o3RbCh_G_i;(Z5QTdc0OmHnM@3WSpz<(Fk|8W51?SO)W zGo^(j3{x@GK8|h8@i9OSk_9}Ke?%?cUv#P|hbkfQ3sInf9*=IYWjN0;K&)NuMW~UT zD90Bh7wU2%u(d{UfcSsI#XAOY6|m+lTiV(U-~23^Uby+f$nR@e-^+(T{ksikx9-$p zoT=|7IfSE3cY%Id$CBK6@4;PTu!_65zn_Sb8*f{8a2CQ2^GUkEdiM+2ZzPwn;-rDx zwAGFrx&F&ss^3ek<}B53(IiDf2lCo;S)r>mk67+~+%MmdpM|+tKxT9bY)4mi%d*3c zXO!o x7v_QtjI@G^I}d*6n+R6g&lS5{%HHpNx5yu5Ea`{oN=I0qW!L+G$D ziJZk-^qh3owJOJ!4hlsitr|R`2c7;McBwbiB7V8%8+9DdS)!qOoT-&BzWk>TZmIg3 zh|E_4ihc_XRxnIPz_kWwBWVdy(97#jdP`m`F!IJ;Qqu_pVjzG0fVt-gxB`PP&L3pO zV79=ZG0^bKt2qaOn-HK6qCzU}3rEWy-sq+q&}UR1V%a{FUGitpOJww^Mhe3_#*0j; zf? &u9GGitNNvn}E_pPi-|6 z-o*8tFTXDxYi$3P57ouc!$=CQzg}5gI% 6|FEUYi7p&T~9rS;|6tLf9j z!vi@fDHteya=+Ymkplx0GsEq4C6UDx4ienocK-3v`)Iid8#)lo!NDOcGSbXnkGyLB zYiB63NRE og Pb~$AS2F^iDfNh8ZiM*9R!5s1{|L zv^-{KX0&o;Q_Q&C&(dw5ml~Yt^?mQ&9v<) T9pKZ$_BuJJp=Z zT3?B(eZgj|rPHY&yFT3>OwdmA*h%6zJ|xtAj<|@Y*RgV&O^S*_2C;Du4gzvHJF|5e zF@s3h*f3gKTLEoX4-@k^=iA;TCgNaVV~Z3`R~qoPPY*Pur-M9OTKm0cRC|3sK0ZBV zj9a9STP!@bSeB&q9gIs5cf&I_8$8r?8&$ZxsWW{w 6` z#&hL{5JP6H8yg#E3)W>qbXfXVUXxmUF{<|V<;SNB3tBd-t%RQ*H;HW@j;063Vzx)I z7;3atR4`hf@2!h<8qmPNz%-g%>EVO-XmxaTnQa%?9v?48Z+8V=!U27gu(QWQO@i^? zu0a6rn8E$!zFeKH&AL*P%uoJhJBc)IC(7@1n&4UE7Mz8nC&hBq)laKN71dln?TU-y z-JD!ZD>O9J3Acz}ZbOex*E>Uvr}7oK+|NjW^OoNKQP2utV26_>Ztwg3yjshW_zd#F zpEcsg-x3qUy1GQ0QZ*^igh)`@M@Nwx8X9UnJX?s~zI}Ukbp_=|dEw;bM2hugeS5n* z;25O-?&GIVpFo0ga*?*adU`~UkB`9C2E)nh)U>pf4=eTc^=#TR5pA3$)9CD6_G_S- z675j86_4H%bKc|SS>DP=-1;d74-b#qtyuYVr2++A-G~zHIx>EKBC;4*;EkuIqwD$= z2xG{GSK+WJE=hrgK=d95ghEUl1p$MU4tPO)eEeLi53hI>(eef^rS4Ba0}2W#fK4k5 zJE1LVv`kD)*7nA;a9GU{4hta&-n*j|sg(r$G7wZ#!%|XGVzOJ}0@WYf @bb6#J6=h}BZV;%ssUf9ctx+cq8_qa`}bjDv7{IVtb3H%2-&Gebs4hfvmXjVCN3 z0tVuBJ!&`q=>wfL4$H~O*?c)6jl*G+csz98i7e37>hnN?0f$OR7@@B3gSoP@LN|BF zW;sF8{BY8Q!|j;8oOC}uz{|;r4ZJGiii)U!Zof-~)r+1xX zWo12|R@Yy@+@Bn?s!3$CMALI$hti(in*JLMJfE&+Q 9AB(Rcq#+@@EeXnQ+n-s5PRI# IDoS}0 z)rx|@e37o|ouB!$xK&C~yrD$Az@GpPh6lq?whqL2ZqVQVf84v(duzQxMXd;4{B>K6 z284U~SunLyo$$Fi4LYrASkT($W}xZdcf-fq^J4bbuW!WHC#Ax|!svBiEKVn-IP4Z6 zWBZqKU3w#l5ItDi-c99COWHXvb`*t&eHC>#F{!#x`i7QKYWrk~2FD2{9*MVn)cm8E z&cxi*Wnt8bf*opFb-EaN2IesEYW?!3#0hP%4DIomj?=>G`ijrZvinYw`D HezIIEpU>hR7Wxo`ote@WgiWRnAGU-;lH%SY@2XgqPYr)ithCl #-C2i ;Lm>tZN~vITYz&3jRpR? z^AzT*HU1lN|6=o>F`Rnm$;+^>2LJ5Z73n(E`4Ojnij)G42HyWls5nYa=p>yNm*u~J zTsKg#Y<7`vTbB;YZ2 7ERh*oCY(k+ zc=eIIH{7#eVq|82_7RFGmrmjdQp@^RSc@quXa*O(-U%g5*kWWOA7{A!@bK3xBC|B$ zZ=zt!D{=Kpc` 9BqkO-*XTiRw&W%d5D=&-DLS>yY+um%1`>RU&k5_2 zhw%D%9uYKG>48q6M3XC%G6D`Hkap%9e~i(h_wnX5I$B|g{X*}t{+^eDkUz+$?Wm*k zlP5x&p5C#Zn+v8ymj1_Ad*Rg2(xvzxsvvlZ#9AtUOhL+!43b~bhimf#bw#z*EFZS$ zXnhVIeZhpfyQAAWd_6J>L_#BVP90~DY$7Bm@% I0``a^eSv$Hi#Uh9G4v*}&RK}-_yoMYp6`q}DSU7 b)biWzqEdMxax8yOqEc^XJiMC=ZFiJ~D-p~;2dut0$)aVO*XDvFAo}s`( z+UoIBb3wKpE%`@}F}c&k_chxSS<=wVRawITm_g=w)$`-U3*+hj#(W(OB4O`y@z9sK z7AIb!Bwpme5QOeafu&&fcL~PMI`6%o9*@3bhKrtEpIf@}ZJV0j{%-rZQO4LDWY{TD zZonH}9fvVBrDEKX9mLVLb56CpS@hx)*+%a^z%jhsiGGphiT9KR(>}V|rVA$LTy>7e z;KBu@<;1haAx)uFJ(2h@phS)*q{Lw}o2LRFU4OuQw}%&uEH=C`-=q`H21kx@_>D}O z^mdPr1Ka4mp@<)MS%-Xn(_DrhgeD)*7V9+-c=^tUqwnw6uDYOC1WPZgMfJfhu2Mx2 zOWen>J>Kn`rz>cb&EMZW7|$HRQ~>2F4yOZJ2RYe7wO)*5P~S?6X8WunapZOPCxPIE z1nk;sN5`vn5oFFJN)%WW0)l|GH53_{#IJyXO@44k1j1Zz<{=(}f$9*50@U?i02C?J zJhJG0@0aE;O(;wjv+zvx-r1rmP|Iw^P2lwdKltlv-C`XT6(wAB51Y_O_Yf5p5*8Lg zRM3E=NA^e1U``HKf&*3?;rsUc^g}XruATEzAf_BBRGp+m+ =c9jSSwiyk&F)*B^1v8M>w*}3!Ye{S-u<$21G zZBVcT#X{Yh%5`4$ud>sf>P*U}n(!Xy)z#_cJ}N-DC1Jo-^cS>|lf|IukwN4_<)bp} z+7iuo9Gm bYpjQ7o>-$oYFrN!v_+{xmX4!IX-GAb^1 te!33O#|8hIz;u6%+ zS?s^a4|ln6jTOS^T{{WM09r!V2^5exyXoSb>?bcsWOot|g<*h^9gpBUAHPuhvi05s z_ko0olW>u=T!Um#Zrd${;4^>?x;>4F>#il*^E12a4X$9>VtKZcU4=I8cAl7(i1Ov_ zVg6q9Y*y^nRS@~pR`0LR0&h2}Ugl)W3X8jbXx rG%{&+e9Ms9DGt#5QCwM7o zDVxct?A&%64kD8afI`t;TfU{N!_aoY3LGy-U3M>?h=0UseT=m$r;!+)i)+ JOO70C81@gP~Nm9$ro zOPnwMdct9~d+&L9)E_{ar^b0lKP5)heneIwI|(H& `4;OuIWh*3ywQ=HA-m)A=wVQ7Eyv9wc4k*60nE#h~;C@hx|z^W*ZYaGP^Zp zeLLt#CCXQg& x z9>sy>$oyJ@lXpZ$LSwR>uY850AHziz36PDrxfO8&_#Hi|h0RJ(#WNlo5JtZwM+4*& z$L)#(|4nXimlZ`QQCfYF`esbz+u5FD7oHW@q*&Bp6CmwUu*~LQiV7cMGgTAm(fkg8 z@kX`}{T}sYz62YUIv_u5IlQITPY7f#Q1GDyUcY ^kp9l}U1Oh)~nE0bY+-PwXBBvFrm1%_=OGG&@9Pd(ZpNLJGBOIK#6Wd<}-mi?N z-+VF1i0*XhJGF27ztb(Bmwh}gE-otEPW5mQpu4)eNqKl0Wl#43WF|Z4%2>3<9}-4| z4{Q{NuPZEs)AzZ;WMN^6PD%;~*aZwMEO3wvB{~+JhTrjGod`pM@!jujjb`_X zag^r(s{)f`euhSIu)!P;tS&>0G0oGb1S!Wlkkr;ByS zP*6~F)t2Z089*tY_Emz&0}`7-NAM@VPr2i^R98=r(Rij92t-UwOs8Fou-O}BE<28h z**XAT(EgRm(>D+W3kKDt2dh*nC*YM`NYCu>#V`Pfo6M{%pm+rXWn^Rk<*b;QS+4E# zScZu0U~gAfdVM{PR>^mEF;P*Q^=E$j8ZCOWp+x`WWIRYHsP$paRZ$ZYifS$TEysrC z-z-T8coEPbfO9z788l&8ynOemE<3XsA@usVB84(WYK%N{pPpDmq|?5j9`>$*+jVl- zjI}yBcYTGN1spAW$}U-{AV`I_yP|rEa?qMx3joR{%azvFv+JvxRsL{D(u@pAdFeoL z<4=fMWwV{>oLtAdG%YGYejtH34D1CTqL{v@RoX^Np3RmxRRC#Js( Q+jdkdpC>!k%k zz-2yYoXHqJ7;|fHKh)|SzJ2czET(XOOG?t$Dl(JJ;`TXkDgMx#ir*K@oQfrXZ|D5# zM#6iFf~d@HWA|LulPA0MqkF<{py;e{-dA$>@*?Nr!eKQZ5j8R*0~nQM3zMdZ{I;2Q z7;uIa8d^U-v6D+g>~Piv0;TBDVii97^mMJIW>ONDSF%6}DVd}D8YLwq8FR%tX9c)F z2;c&M-@d-SeZ#{whauE7H2xoblwWTC2N{v<2o5}Qazb=FN<}Q>(tu$u|FffTd$qlD zGB8*~&i_U!*ABD({}Iz*G?+;6@wP9<{qmejK~wWhY=00oR%<}?Sh?H{w>zULStA+M zyFt=Zr_QqVkwj*Q?(S~)-~CjI+S*^r%b6bUMnBaOZFO{>1EkL@;Sf4*5tNdGujh5l zUf 65c8%9NcMF~>t16jn z_M(wK5x+9Eiy~!@CcB PpgU|4ZwvAm;^Hvs_&luRtFntPO&XM zBQP+kzvU`QSp0FLZXTgYiJTUnw6fmRN59#-EWW@Wo`ir!?qvT;pt`2fk5o*9J6XVg zTGEQwjHlZ3xh-6d=tFmL5-X3%GPFqN-Z4^BLZt$=4TlZbVNH9HZbG~y#W9?A=JkMw zq+gYjsHEh!A0wILSB8r-a3H9n110TY`>@#>nu`}}RJLOr3pYJB7MP2~dJ$bT{7~Yc z7Y#b9_P-=^UX|}0Y*5*Td>|0@x7Zws(AE$nfCv69cemoWq>@U-UK6&*kgT`@?G0+c z2*M}n`1C;T_?LjT;svk)x)kCyW;XuCi4*p37ltr@zdmp$$dQ>9&Qg0t1gTqE_{=s| z!<#TLI)qF+1^}l2RFA4a^_V}nMr~@e#^aZDzgA!k{0%VMdgT8l(pxfMZ%4D{1Qr)* z;1@uM{IkEK9 es6-SmoQ?n_~!7c%#63XcwCiXVfT93ue+w=e=aE4L=z^_I}NBf L9F{}yaKUm_z{pi8gQq8CN4 zT}$%zEmV *dnc zz!BZ@rq=;@M>@?)ND!0dL^kDx`v1-vDilp?w0N@Xd2C~TCFI2do!xFm83XiMBCp$t zs{SGt%?E%eH2RXbFoFOwkPZv`Q69Yb+WJ5s =0B~2$DyGiHDKB+lTsR} zxOi0@1=#C=(!Xfjf+S(k_T@X!4A_4K`Q#z>qUn;>?|b5dKqzy14P}5C$qs^EO(2Q{ ztCOJs`=xv0$k{)A|4Eh}3qDBLu&C@Unbj9fiAewr9JM$v^#=Yyucud@*Qf$VPfxGb zx`LaVJFK`3(fBWQuH|E^trC~8KGw?TI!U4Q##5B7W!u=o0*3(;n^b_a*RFBiCPZ!W zGT8yBg(WGJnk=Pq(3A==06Hy&u58)@pcsyGJs$2m7H4ODA1Kg*f ;Bpd zi=~ne0g$Qo<7(u1mV^ii%4^dkCMM>!1Cr)>K(n>8vjMQ{?k5equZIu1-W%Uh9Dt6+ z<$v}+J4bFV9km8yGU>`c)Cv_Z5?KX hKlC%S)e7XC%(a;ZWbb!gOG8^uwci4R0^eX{7 zUg2k2U$5}S3K!;1<}X=s{U6={wEgl54c3=3uNgdJQ9P8=K}1t{W1^zAfXBI(?ANo-=n5JNsZkq3d{!cNko* zmM}AMk^3q?Z`AY=^&)7EyH|(wpmV6a-}C)}K@oMY(65r;Bq`JpWss4h%sOl70Y@Nf z%%ED+)I{ *VX8kwT0|fftF6@5<+st=H5>WuU0%3`*A@F2%wEgX$o%@r3$u82b!6I_T zRI46ve=0JvgBkyKyR6RPjeI~%gZ?LUHU0&|urMAiM w3E@BdS zhHHI&9g)2meufkgaB&nG-j8L6v}q@&@no)_CQ;!(>j^|pmbu+m8~Zh*_@%d8WlFHO zv39i|y8{F;4wnt2^(AErR(eklnOolK$f_GJ5%2h!+p0&2ygc8`+0B_7K2-0`58sx_ z(8njO!*0LerVwK_D!d#zR1GG2zlh)yVSoWWzLu-dSfUZ=YrMk8sUJZz!((ohdl$+^ z@*{YiLM12X?CQo`h)dB&H2B^?%MWke5dwaTlGlR*v&w8_FWLnkA*6J+ B>Lsts-qa9V8Xn4C{~J_IncOlL*w2b{ASb1RW~g z_8XH|uKP8<0HM8+@(%?~rKF+I{%1L*Z*rsv-~YV}a0~K0=wid;2kTA(I>4`u0Il>= zm!b1lPUBy| {1LXQnc70Qn=y %SYc}8RS8nEx%(f>36{=KvChtU6zI}3KnL@}s oYb%rvsN6rahDMfnoM zlsH5OYkrrhEmICFN(Y;XB^n&+(&yQ<1+hms4I^)hpc9@5xRi+_H@yEIr7@69!j_1? zO4wY-4kUDq`Noz7z !(7@ZDX#{WC$2yp#pYs8Iz8{af6I`T6L6Qylw2k{}6j;k-%1 z)e~L%Qm6KIA*Ph!zQO*UxpVZGl++0L-BD7*gKEk_qNO%$Fn=LfSXj}C_0{B|sH16o zpNFful t&xHZRvV$nAbYfu!+Tr@FqT4;wv8aLDrV1hUe>jkQ?Dz4GNPJr-<6 z09TGWUxe&=bNuDW%QdTXq*X$SGS+yh>q8%x6JAYC4Gurcb>m=7WhQukcqp*y1@bG= z >BmrBEsEz>eMYh=Sprav~#Y!c08ji uk9RwN} z96Xy0xymmou+^xm9XUY~Q~$x^03M1&R81fI?MIOM^EF+q-HHlv{fup4VId?4;J_-( zrr~~YyA0Gu@-?{{?9P;&!IwkN11E{`SPxkCI&|S#e0WQEe-#pE?cssTQKk>j=6Ha8 zfo_B0_?J(e_chiwgGURknAoE~L)Egxgnaq=eNTV7-w>B^-s!dhmr>kSeQj^F7;`w$ zK0RRa*4fr*yN;Hoa+RASH~V=1RYqeY4}pLyMyv0$q^wlevD>n3O5MjB#=g kb%}Bn@&QCim!UFp&+5>Y&&D(OuVn!UdWzj98f+VEh?bKv@qFiP(0Rq zV(LBhYUdY}_FVt`)X{=G Hn+itHYv- z-fjnm?oMeGq!H clN-#7A{KcrG%UZ9q}R40*YjkI*|=oP zHF)G02@xN8u~)dRi7>T`I+RPo74mzQmzvy1ORwouUbtQb_kujgTeLT^pmU*@eB$5+ z`djPW-qt6vU>qnKUQGli1Sct>J3PF<4l#00K`Mx*sHJ6I^?b2Tg8wODRsJ8>KD(H` zrQUhRa#puDcP4xX5#XvXo4v8TouAsFBn-VY>J@G_&iVsCaC52>P-J`GxzttNf3wjQ zML +45>re}Y6fI2&34wt9TwTOs$ z8Q+kg;U`FEzKm#Ie6%1owK=#$LuymsY+T+Re{I{<)m6Q8zz+(gle>o5qe9pa)}K1@ zVK-vGdJ?LP5QlDU>od34hw!@~p&O%x#@7jGP`te*s9q+HG^g?Bw3mgxt80ptHYZQA zU#RzHE7H3B82aZ)S$A>geJ=rG)|Eq#mb|>YM*v9@^4ui}p0C7%qT`3wCndQ6=8S@$ z0p+oWCjilK$Kc)+B7qGq!K&W;BRLWg;6m{PT61Wn?!Udw2{=$(cSC=$DnU&?Yvq~M z*<1g*_CQ49D!7WX #4p80LQ5zBMgkZ=_)#Zyjb%DaqcTJbI<2w62M7ndLcMLt)< ze07!Kg{qp2&b@sB^JB&zdTy8KD6^b;$)C|v`mW?y;Mxm40!^)@apXq`Nz?iWJ^iE{ z-<$rTRkl=VH~ZE?3R*(U6b%gSLZa5-VAZYk^!Ib(Ps@E)S_PYpD=sh451`2K7GgOr zE?&b1P095#i$>JL_&Gn*Ft6{R%Vn?>5ju=t@S3-6-H5ZVz8tk zkf8i4hHoLy@6Of&Ffehuk~1vSst z-Sg>U$o*STlF5MFWLW_-je_-o1lTe7!ob6ncX5$TcXPLARilw~UHLZD9F3|j zmiXh@6o1P$=UcQc`Mt1D3-x(<&B$E}@y%QNKJS0#DUQ0I?ocj&trYiO7fSqExE?Bb zM~4V9#{;G^9)O6COv~F?-oNB!uz2?E8(UVqeXHeIaxOSnM>qC166A3@7lWWE^%`MH z-9-#=MT%P5dkEKU&HHM4JBrN3$3_i=2?~(k!$p86h@r;3=d 9Il z!#`l*YkGP~^2fC3;=Az-(5J)UcY^y!RaJT@Iz_{Tt9zu(h=7*TVWxJj{6m69G+4-0 zP7As?i7~HdPh#M^yOsW%9x5*~KvhuVArbo)5)xQ{<0N+Ro4sz63V-LS<@=DM-cNzv z;o+8GQKMGAPo2ZKhGpKtFV`95&UX{8X#@KN%!($~y6x`5;`xdQg9fFFmhT%?RwIEw zex=#X6q|ae#g;pMeAhBU+#qg1cUD$u8gw-ufegW+ql`Py4UC(^za`AI5I@`qYqLBX z*t~T8S3mZ5m&bgSekkky)Vt-P7^Hc(HY^I=-GZX`Kik9{E)E*1>eqAc15O*4Jx{La zEO?Fff^$6Yv!f2T^7M{?d8nhd1m{5wURja4HQ(7KZcaTR?Q;`FJoi=i)kX*T>S7K) zeDQT@PM#ZBsA6K`Dc(nxsZK3=D5w$i@b&Ji3#HD2r`lOHY3O*gVQB?&Mfk=K5us>^ zL*QC79|#C-S49YastiEI;Q15UGt)A_Fv<^UE}NL>`07WM)*s=j0EkpX&fky to4^N0M|+oB0ss|?fSf#PXUBe8gQal%@O8{cK_N9ZLCPPDh3mql zA2!&4F;?k+=9u>3!~AdsAd~_=S44a~jH_TPodYwPP_H8szN zvIOx#F&+Z@e^yDVBSG2ey4Kyq#H7l)p9s=kpp^P?h?|`qB)`9?-I~WYMrZ+N3zS-V z*ejaDs;tT+cY<$@daHtO{f9n@lC$fT%Q-u9kZ~HKKn{ %zh#KdnwVFV&&Yipb82a3~mYpZ2SO6$;_PndL4 z2gb)gs`WACK9xi)d}yBnJTqP^G)G5A0uqvN!IeN_kp7QNN}4Jy?_Agc7{sym%uu&8LPEaEVMLf4u9_l~}`Qr%Fk9ztXWDB*Xxf-*3OKRDhPw_#qMQx%}RYe70 z3SG52p;C~P7bsx7zuKnV+Sr(VVD@%Y-1U?GpHj>4;P7ySK1U=#|D8ZKGTZ6G!Oe|N zE$Au-a3tX2E4|^mzj}KCaf9LiTh)L-j*gCIn|!zd421)jeGkmee8nW!I-A8uDKDZ^ z6}9%iK3ycC5O(yc9^AIJVG#Z90#yR3cVu&BR=CroBQr~#OQo)yHFKv?!;0riEz7KO zX`ip7R?n#P=>S_z5&LryJvaVKH@fMl)W95(vbrwB^Ql?>mHF4d3zU2>mV9_Uth=)*U|3xiq31Fi!El5>vK@8%vZ@G3Y`VAa&^D2ArQ-ZH@mxztRz?qT_30? z;AcD(I4=HsfOPgy#s#&7^)76{I(n4&KN3o?!v4GX{=bt `d%9 zShPsf+wOKn7MLM)Ft6z~F?19ctq1Ly`-02964J#NuD!d^4{-n6!S6pqylf66++D7F z!Nyi>AIyBt){aI98$c|Orv@sJ(;;^4|II1?PbTwU$@2f?ng8drPjR2wSGlc(y=u5# zJ1J%g;fS|vNpa!HCm 3ES>^M;#)XWsM=*M3w^4!#s?T3+Q9OPT|or+Txr zn00RSDIGe#9|nn*nX`JxxNECEbMK*PQil;?=t;MzdzCdl2bs3)QePM$jR!f{D0{#x z>Gv+*n+lq7C$8ot|J>qribR_V80yw{S9RF7)G7YY>VB`cN^fPiCD0(3jfxiTqv#L_ zi^t5Whic@~k6YP0*o*t4;xhK`lsz{MBfZYpuhfof8tw8JVxG}99b|}CzAxQ6CYO5& zHUvod8?g_)XspRy^(1Vacj_rfE(Mqw=@urD?kcRTcLaHia4@{G;!9d47`!p<^^W-K zmt#`U3HR^W;%#vwQSYg%ECyXp(tfOEEV82_eg_j^i}OlYl6Q(7xLs@`_D{%hu#7v! zFMW_(&@5kE%2F&^2`HRpx(TW?r&->mF~>(|W0$oO)#Dn(M)j1|4_~~2N2K2+$I-Ut zud*F=YHMo~(0J6>enqvs@jGU~NeUzZonb_1t)b}aGc~PI7$)?jO$)c=q=D25=O57_ z7$-5^6BCJyV{o#D=mKAl0SlbJ!oBBLO7+c&230HV)&gJDSFJfRKHv$?z}}<}zCDu6 za~pe(pr0+zYEutb7CvL-*KflBRJrv>z3}wn2saz|Z~GBsn%BXXoJJ*}LQIFJI>U z$3D$(qvQpC?v7E$W+3XbsG~3sJ E}JnT!{(kdzwr`45t* bz_}&jFP*{dR)MuUTy>XZ3!}2236S#DOnsL8AVp9 zGTU*~h!-WS`{_m0N%z9*R$o!H$fY=g{MM?h8SYEGOTW{u1!`#SRQez5yQE9F3(Fb< zwsdVBLB79aOzFFzOWwbPaBL2;U*~>Ac36U7b 9C@ zp-}aX-aoM`*bYW7nI-;{Z`Sj%%hSEFy)j9`a{)6x#-B_yk=t2f6_v}KG(aYw+iCKd z9{r*l&NJn6{rU-Gbn;yGAu=Y8%JwCGf~k3#1*MoKC;D&C{|(nIFBwBW)>L*gqT)Q^ zmy>yFP4w6i&NUTc7oMyf^kv!vLEFMk)NYM7nJ{uuDAR6V6>M~49QsbdtV4=YqY%C3 z$@S*hSvM^+dMrO@$V7P^!dzJ6E7a@B^$f=Dj8OrS95Ot_zuH^$WB6MLMyc7fv%^*E zlen`W?it<}P4cT)tH_ewWiJLoipLSwZ2>RkgDEHu$r4G#BN}LNIf;B6%%a1!(uyzU zzrLSDgr>vIAyO)bZC}!GyUOFb=wT3T|DxPH1gjR-o!8VE7CnSMT#CMq27-!A$Z@u? zxhaBS$JJ(akpqP;hsTZ4D0n6;)uA`7#B_uzGrT?u?a&F;e(XkH;m98u6`05~dQA_* zc1>!GF5C9cFY>^ S@3|S1_vZKaI|MelhkY4k!EA?0WAbcfq3E5zS zXOPu&; A>&LJ7#?yv>e053tEoNDLn1Uhi}(2N3M=H_VL+2K8N2P#y80AQN)E zdeqx9$)b@v(t+(`8s0fYHxYS5ycS$<>9YRT*Lsmmr?`4ta7Tb7t;lk!;=)|#a}iI_ z&NWY_*BJGb{y+E l04c{0id%}SBKh9fO&eKEurYorsJQyH(V zLEI;zHW$DaQT0FK1-_nc42 1}Oi=Y@?si|4g| z#JNdZIBX^V4%0-EDn@42fyQZtrfH!$rX#dIG+xTG5_A~}5Y=C_L>oYBC>BoaUdS!i z*`T3w$_Gy+u}&~Ae0IPP-!&q^Ww3ibC1orr-g4>J(0Iut^N&T&e>7sU8^1U9vy*p= z&Ahesd+x4=Xqtz0uMiphR{L>C)N;W$H(cN6e(Lb^hI@pyOnAm>$XfO;)L8 -$TU{5jGJk+-++4FT%_!=HAbw%8$ZIzwvPgNt4g4##E!%gv zu_9(Emv8 3 z8oB|5{NCLVNTz {%PJxbLjLF0wj8lgu76i+VlI zjRd(7M>qHS+-AO6aj{y4dncsbK#2*xx45|Tx8hu0rhsvut4Ou2{>|XuH41EWV!r$N zlO^oEECH!l%OI`Xy};}|QFb$G#v$>T8Rp{L;VYR^$-_Pgr;M10X(<&pBuhaE-y1{d ziMl54VDBZec0J^e0Mw2>)DFG&W;tPolhE*OpbrB k5jH*AK zQhOuu5lzpr2wys}PwGjaNxRms$@R1Eo7Q(2M@)9IfV*CH^ 8aC=9Vp<%}nQNc)y^%}*4y{&7MQr!GU&0 Wgm S3%xbSs zioMer2%^UX?Wv6Av`Qt!sI#;_H}5))kT@$SO({{RP~jkWsW)p42;!`Fh=nNM?;4+C zW+SI)g#G?D;p^jx5z9USe7S P8q|{6YE8X6H3*q?IzsXNR|1yf={!RtjM{P% zgTm`^7WbFw;?Zgcn9c)eKb&BW&_gXE4UGk!`*dU{)~QUGw1gDC&uW_;%#bPB6m4$+ z{f=O{GSD){TRgp{UC*v8clURv_S29yL=Hkq0hLFfkE(_W%JXDw9#?D#U;hJA8XTs@ znY<_ycRG?IrSQ0te{|lvd0kAS1nP?Ir2ph+F!h-&Tp%9TGULrZE}QCZ|22jR4_p;8 zPBwTVQ;`R$jJVxe^DZ$C_CK7t_bW0C2+T~OU(;C6GrqyL6w >@+?i|z;NZN&W*q2Ah5XCH9n@ZU%Dd|kpyzRCuKe%!|cKE2GG?bMf z(TdIU(+3Nzh4t*+Ad(qpC+)euZi`BN4vdrLQGqh!02IbtcF32C15b<#e+se;3!Ya% zc^WxvYqZTvffQ#ek|}yw2d%0PmofK|f~R-Uf}2cQ7mwA(vr^SSj8`AU7EYTK1MxoP zlF_+QLm(6j2cZ7(hFD_ucTwx|M^RqKj60_ubl xYj{XRVk$Z+y0cTbpoaf)_G+XL1Z- zBhqh*9M$7j5%qhYb3!ltg&$csK}1>YmA-6~aPI&lf+AWMnZ@vL3jPNu8Mb?X`n5|+ zEG$%F`u?+{Y(?;wM?%^blKaku-V0gcb9{zP6(w=# ch{(JQw@?tto|M} zHZQF*ddd19RSUiT`&f>ZPS!YyuJSPxk%%^&T={uqASj_e;xvRA-ugB9nU=rheZB+T z8_fxOH*Z#IS9^Qh)Qxw*h27It@7jaVc3X8`vu*NgxnVJfS8co8kANWOuWWj!ELj*E z5JEszaV(}w!Fee!^zAunox=ngx3q1)#DjfTBENGY-!eVUarZpyDjY~vt#dG+Z2@aQ zIIuM!ehF5 qE}WpeUa@3~`RXTj z^4!o*`;>YAC4t{Gec$kxjG99&y-(l=o31U1A5A8%>PQ?Qp%7oDvcJd6TJZKFcOR#? zhT5}V_pbCekjL(qM9^v@pQlhMwM`E>)_W8|B|28-7J@B5?qjx@FAC|QCgf4GccRHw z;)gdMuhBPj%B9LAu-|*LjQ83h0iz6ztsKlKtn4wnCuT?T7yJ~{8?i)E$tVWt1KB5d zAYve$e~!|i8eS2I17QI9VwBA9i8nGD`Yo6iITxL(zsa>yBpKf) nw;0EtPDp5M lvUYz2+XwU3aRjm_$vTku> z<4Cn=49zWPmzQ@Dkdvu$39kK0U>Zxy`C&MwxfbJ;Dq33H77%Tu+0NzKRz*u$>LMNO z&qxWRAa3=h86rFTS9lD|g6NRC4djb(Xpndr^i5bP_?HPdG7q`{#jOpb4Q+ZSgS6bx zAKyZYT#>{cw_`|}JF-?jEwaeeM1nQVQoZxMhL)s }bdVinM^=CL?wLnh1 z<_%L(I+FS+dYTsf(D3}!V)pQylo_|VLU=8^zpEtt+ sl)A($uxYk_l$eHB-P5FW9Okm4~~dFeBN&%X4e zV3KKV@5o*#Z=4=F=BD>P>a9$^2L?Ze>K3(tbfnj&_N+bowcpc4=9bq+E83O%Dj+Uh zvmc*Oo!0&?nKaqiOR#w@78!LzE@DObJMKPGB;OmRDt(4_dh`$5R!-02#Nghxalu !}JEq!z6o#1pI*v+cEsN=rwGtiEv#Uhhe#k z=f?%G=C^hq%(suytGNDYGA|yB+&w$Pkdxu{;JS}|-?og4J;Yif5`p_P$;x(5j{x)6 z7!_O9)!6OW?%*0QCp5ft7TZU9U#8Nn0 ZmQi&S~ZM4x_`HM6udV;mFpGoe|4tk%!|LrgKKE$Bf+FJCl zHNO<>)+~8%qz!Sq+YPZCp6n#?N7)Jb1(oj-2ow$XiZk6uH7VYZ%Y 7CwmD}DO*kJOmGIou0gJ7R*`-pgX-N_hW| z{; zHUU @RgW7B$XoCxy+u;ans{(D??ntpxdb_ttlU1p1*!kpV~>rEQ#N5r*5dD^h)rC5riU zx||(c=t!m3*U?(49Ow#ub>rGr6DoKvy)rx4+Qs)?+I%t-TWG1igY$~!N_Zt`b^bi5 z-w1~NO7Lt9RWId?>f6X--KO|sSdaa!@EGZeDzaKS^xzRRuwZ)Sw<)%Ij5qz%K}b|U zVZcvg^wKPxN33XfLEkpdj7J58wCL1V(?zpA7jV#IXB^f{Uvo-3iSju=t}GAAGNje8 z{$ZchLMUHNI&I0CwNSI4;AZ2ng0;mxon=*(@e$XkUF5~UxCM4QLV>KzIjGtKTR)_6 z;=@e67rZYKZ(*c- qGxaFPNb9Qq0j1P+S~1v`!ms1LGsHB z*=uohDqDgc0s=ze$d7nmy4AGnKXcs1c@AYQhnV`N=Z1`9Sw1i>gzw90%@%4utprPC z?7dB=d?4XGbe8{TAS8Y$AphUt;X{K=-b~)r>x0Wjt`3Tfc~w_`_}%Xa4_l+E+`Fx> z>CDW_)-y)k4u2=AJg~=!lih^@*G=v@QpN)%>HiMVm=CSA4?|z!;e~t5PCDP^cQQGv zBfhq)fpBHHn=$5(kn9JL;$fPM9(dsW_VJ8a`{xkDbeH+l&DM@~4?PYR4~VgHW_DZ$ z1O?qFz5fdrVyoxj<13|x56^@vRI@InmCfEAtP*mMtM@#$@lf*@A2eyn)*jff?}hzm z_doE}o~E8Wqqr&}68_XD(Jmo{7x^$Pd*qw0>BICLJ-(89J@ME*_ }7o{>wrSXZQ 59C4 !mzybpDhf=ks0+w8q-14% zN4SX{{mVSS9j}O7>3W dojef}7q1GqaCN>4VCL8QG%})Q+~|cVFE4+1anXBsdtK$e zCga_tm_*9})I;n>vZdA3@BreqxU^K3b3a#YH@>(SzrJoMr=VbYu-x(>p5X8ApZxhV z{wK94Qg&Ub{Be3=VS}ZMe<$03Nc$j |s!2pOTiA_QJ|4ABa _#;EKy* z)iN`awEToXxW>f95SHn(tE#GcobA3csJ2ZAygZb4;R6#_%NAmwp`poRjipFX_?}+K z8VhC~+i(5u-8&*p5_tgNfrf7&C$kQRvjarZ@>wP`8{10~c}+MPDr$eN(@ZPY`)*50 zy+9KA6rkBqQc;l}8;fPo8u)Xu(c5XZzFT)F5)n`X&T>$fj{a&c!@b{z$koCkcj{{t z9?d&|b)Fs6)d_$@ef$31W!lNXA?5u14I$y*{e4n-&5e;yqD<4gnJQp@&4K^4ILP7x zZ!W>cDFC|%8}05A$!iuA6o4l-kw)|hI8U?3i=hIXWO1yqj6e^FlrW{CL8!m4Potib zgQMnULsv^=ZYzs~EWDtoXfQ`SAkt+;cc_P|VtjoxTsbjz8_Z5T@R9()u6p-5e0GT< zw@!l_{i!MM-$&q53$!mRP(#LMW(3#I!8L=x-m~jjE;sw_PVTe^v$3&3AQBQ1JAeO5 z11S-}i65Vy7H|$|yPduVL>+wy1gP%_RJ=583l?8)3vs)+^!4-0{rc5*k(Zj&)G9$T zC4UuvEY*{;LFSAa1r5#6gm7_c3Kg;|Jdnct__4+L-dx|nKxd7^#On68o#!>Ui%1ZF z?}6n#bxg@;`=z1+AM`0fAZBJ}-~Bf?H)k8Y;l&k9^z@LjvN9%#R>vte9bMgT+cxMU zYfqS&zm%5Z(9+UMGD}pLw#Z0HwKrJVvYW0 w`}OM+ zpon6=KVJ**V$J%alM`7N7fvc_>M701EJ3$b1OhLv8#%TAbPB`C{?lXS59Uja-mI*w z?M*%hW6R5l&COz7K0f&+C71vd{fGs&ihb!!0Q(;h{?4$yDj< z@2~O)bfrh2nGZa|zIQjmU}>ZP0i>Yo^MnlNHhu{}(mFdkD=saSb9CH|M#sqScIGiU zqH;2l1I8QA{A_pXL2)TKSOV{n5X8sF$GE{AN&BmcX1%cAG4sH{fcwqm>oZxC?^AiT zwWOGsm^*uWa`yJcBDf;Pp8&Ma$jOO2QKYUI7$^oB_dal$#Afo@<$*pwpr+E*lR&+; zzhAZt$nALf Zt&B56pHgQvb097Bz(8!sX(7Zt`#(=K) zU%!6Qb8)#Y9vuNffvYPQ5i#-W%R`Is@Nk@kX?tGkA>HPld9oCywVANKpA fn^!p51X5d&7xD_ z|7XMh40&|1dJi0ARmhz$l5kPSHUh2U`7e(d4i>P3K2!09{lVJ~lkClM1GNo^FJ5}K zo3-erY`XFFmpHwrsn9jR9Z&C$yCyHC>wl3{wJ1DD&b@VyA{>7YwK&I>P^ny>1;S$x NC3!WuavAfm{{>?(qX7T_ literal 0 HcmV?d00001