From 3e69d87cc45854a063be7c19bd6879ed117f2476 Mon Sep 17 00:00:00 2001 From: Stuart Cameron Date: Tue, 10 Nov 2026 23:56:19 +1100 Subject: [PATCH] fix(decode): reset PTS after a seek so rawvideo doesn't repeat the first frame (#157) The worker's preview and trimmed-encode decoders seek to (N - 0.5)/fps and write rawvideo, whose constant-rate timing emitted the first kept frame twice on many time bases (MP4 1/2997, MOV 1/11988, MKV 1/1000): the preview showed N-1 and a trim of 41..52 came out 41, 41, 42 .. 51. setpts=PTS-STARTPTS now leads the decoder's single -vf whenever it seeks; a decoder that doesn't seek passes no -ss and is unchanged. - PreviewGenerator.beforeFrameArgs factored out of getFrameAtIndex - integration_seek_alignment_test.dart (heavy) checks preview, before frame and a trimmed FFV1 encode against an independent select=eq(n,N) decode - new fixture seek_timebase_2997.mov (1/11988) + generator script - frame-mapping in-point test moved past interlaced_test.avi's leading null frames (3 -> 6), the one case the reset changes (task 16) - report docs/reports/issue-157-seek-alignment, ENGINEERING_NOTES, CLAUDE.md Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 19 +- .../generate_seek_timebase_test.sh | 41 +++ Tests/TestResources/seek_timebase_2997.mov | Bin 0 -> 175411 bytes app/lib/services/preview_generator.dart | 54 +++- app/test/integration_frame_mapping_test.dart | 9 +- app/test/integration_seek_alignment_test.dart | 222 +++++++++++++ docs/ENGINEERING_NOTES.md | 53 +++ docs/reports/README.md | 1 + .../img/01-original-frame-41.png | Bin 0 -> 42052 bytes .../img/02-processed-before-fix.png | Bin 0 -> 33848 bytes .../img/03-processed-after-fix.png | Bin 0 -> 42052 bytes .../img/04-difference-before-fix.png | Bin 0 -> 46302 bytes .../img/05-difference-after-fix.png | Bin 0 -> 1966 bytes .../issue-157-seek-alignment/index.html | 304 ++++++++++++++++++ .../scripts/detector_probe.py | 49 +++ .../scripts/dup_probe.py | 74 +++++ .../scripts/frame0_probe.py | 50 +++ .../scripts/gap_probe.py | 58 ++++ .../scripts/identity_probe.py | 49 +++ .../scripts/images.py | 59 ++++ .../scripts/make_variants.py | 58 ++++ .../issue-157-seek-alignment/scripts/run.sh | 30 ++ .../scripts/seeklib.py | 108 +++++++ .../scripts/telecine_probe.py | 46 +++ .../scripts/worker_probe.py | 141 ++++++++ worker/src/source_decode.rs | 96 +++++- 26 files changed, 1496 insertions(+), 25 deletions(-) create mode 100755 Tests/TestResources/generate_seek_timebase_test.sh create mode 100644 Tests/TestResources/seek_timebase_2997.mov create mode 100644 app/test/integration_seek_alignment_test.dart create mode 100644 docs/reports/issue-157-seek-alignment/img/01-original-frame-41.png create mode 100644 docs/reports/issue-157-seek-alignment/img/02-processed-before-fix.png create mode 100644 docs/reports/issue-157-seek-alignment/img/03-processed-after-fix.png create mode 100644 docs/reports/issue-157-seek-alignment/img/04-difference-before-fix.png create mode 100644 docs/reports/issue-157-seek-alignment/img/05-difference-after-fix.png create mode 100644 docs/reports/issue-157-seek-alignment/index.html create mode 100644 docs/reports/issue-157-seek-alignment/scripts/detector_probe.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/dup_probe.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/frame0_probe.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/gap_probe.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/identity_probe.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/images.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/make_variants.py create mode 100755 docs/reports/issue-157-seek-alignment/scripts/run.sh create mode 100644 docs/reports/issue-157-seek-alignment/scripts/seeklib.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/telecine_probe.py create mode 100644 docs/reports/issue-157-seek-alignment/scripts/worker_probe.py diff --git a/CLAUDE.md b/CLAUDE.md index 17f8fd4..432b577 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -116,7 +116,7 @@ VapourBox/ | `worker/src/pixel_format.rs` | Source `pix_fmt` → pipe format (see "Source Pixel Formats") | | `worker/templates/stabilize.py` | Stabilize pass's vertical pitch correction (see "Stabilize") | | `worker/src/cpu.rs` | The x86 deps CPU tier (`v3`/`v2`) — the single decision; see "CPU tiers" | -| `worker/src/source_decode.rs` | Decoder ffmpeg args for encode + preview: full stored frame, size-guarded (see "Source Frame Size") | +| `worker/src/source_decode.rs` | Decoder ffmpeg args for encode + preview: full stored frame, size-guarded, PTS reset after a seek (see "Source Frame Size") | | `worker/src/source_timing.rs` | A variable-frame-rate source's stored frames placed on the constant-rate grid (see "Variable Frame Rate Sources") | | `worker/src/gpu_plugin.rs` | The ncnn-on-Vulkan plugins (RIFE, AI upscaling): file layout, RIFE's model add-on, the `--probe-rife` / `--probe-upscale` probe (on stand-in models, no add-on needed), and the user-facing reason/remedy when they can't run (see "GPU Plugins") | | `worker/src/animejanai.rs` | AnimeJaNai's add-on models: where they live, which one a job runs, the refusal when they're missing (see "Add-ons") | @@ -1016,10 +1016,25 @@ the **single** builder of both decoders' arguments (encode + preview): `explain_decoder_failure` ahead of the vspipe/encoder status. A job that omits `inputWidth`/`inputHeight` gets them probed by the worker (`fill_frame_size`), not the old 720x480 fallback. +- **A decoder that seeks resets PTS first (issue #157).** `rawvideo` gets + constant-rate output timing, and after an `-ss` to `(N - 0.5)/fps` that + timing repeated the first kept frame on many time bases (MP4 1/2997, MOV + 1/11988, MKV 1/1000): the preview showed N-1, a trim of 41..52 came out + `41, 41, 42 .. 51`, and the noise score read duplicated pairs as noiseless. + So `RESET_PTS_FILTER` (`setpts=PTS-STARTPTS`) goes **first in the one + `-vf`**, only when the decoder seeks; a decoder that doesn't seek passes no + `-ss` (not even `-ss 0`) and no reset, so untrimmed encodes are untouched and + preview frame 0 is the encode's frame 0. Never `-fps_mode passthrough` here: + it drops the constant-rate slots a soft-telecine source decodes to (only the + VFR decoder uses it). **Test seek alignment against an independent decode** + (`select=eq(n,N)` of the source), never preview against encode, which shift + together — `integration_seek_alignment_test.dart` (heavy). MPEG-PS/TS, MPEG-2 + in AVI and leading null frames still seek to the wrong picture for other + reasons (docs/reports/issue-157-seek-alignment). `integration_clean_aperture_test.dart` (heavy) asserts a clean-aperture MOV and MKV come through bit-exact at full size. See docs/ENGINEERING_NOTES.md, -"Clean aperture". +"Clean aperture" and "Seek alignment". ### Variable Frame Rate Sources (issue #137) diff --git a/Tests/TestResources/generate_seek_timebase_test.sh b/Tests/TestResources/generate_seek_timebase_test.sh new file mode 100755 index 0000000..4248343 --- /dev/null +++ b/Tests/TestResources/generate_seek_timebase_test.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Generate seek_timebase_2997.mov: a 29.97 fps MOV whose video track time base +# is 1/11988, the timescale a user's ProRes clip had (issue #157). +# +# Why this fixture exists: with that time base (and MP4's 1/2997, and TS's +# 1/90000), an ffmpeg that seeks and writes rawvideo used to emit the first +# kept frame twice, so the preview showed frame N-1 and trimmed encodes were a +# frame late. interlaced_test.avi (1/25) cannot show it, which is how it went +# unnoticed. integration_seek_alignment_test.dart decodes it from several start +# frames and compares against a sequential decode. +# +# Content: testsrc2 (every frame differs), 320x240, 3 s = 90 frames, H.264 with +# B-frames, plus a sine AAC track so the container has audio like a real clip. +# +# Usage: ./generate_seek_timebase_test.sh [output_dir] [ffmpeg] + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +OUTPUT_DIR="${1:-$SCRIPT_DIR}" +FFMPEG="${2:-ffmpeg}" +FFPROBE="$(dirname "$FFMPEG")/ffprobe" +[ -x "$FFPROBE" ] || FFPROBE=ffprobe +OUT="$OUTPUT_DIR/seek_timebase_2997.mov" + +"$FFMPEG" -y -v error \ + -f lavfi -i "testsrc2=size=320x240:rate=30000/1001:duration=3.003" \ + -f lavfi -i "sine=frequency=440:sample_rate=48000:duration=3.003" \ + -map 0:v -map 1:a \ + -c:v libx264 -preset veryfast -crf 20 -g 30 -bf 2 -pix_fmt yuv420p \ + -c:a aac -b:a 64k \ + -video_track_timescale 11988 \ + "$OUT" + +tb="$("$FFPROBE" -v error -select_streams v:0 -show_entries stream=time_base -of csv=p=0 "$OUT")" +if [ "$tb" != "1/11988" ]; then + echo "expected video time base 1/11988, got $tb" >&2 + exit 1 +fi +frames="$("$FFPROBE" -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of csv=p=0 "$OUT")" +echo "Wrote $OUT (time base $tb, $frames frames)" diff --git a/Tests/TestResources/seek_timebase_2997.mov b/Tests/TestResources/seek_timebase_2997.mov new file mode 100644 index 0000000000000000000000000000000000000000..0287a8a87db265950c394ff5ed98d3b4a40e4992 GIT binary patch literal 175411 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 z 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�z0KKZ1a0LY0EE-kurN4!MM{ha%lM3MNYMB=u4F=~o z2S3{L?=Lc!6fv`jrBheG_{{~z}M+x&Tzddi)1cT%DJ+ES>Ns^$*r z>=maCm9RoKT9v>|LgfAGty9e;)lDSQXw^iTB`niTHv7>hZ>pPo_494mNDrIYPSg2( zr7Tr&=&oZ5N?XKIaFq5CdRPo^6mxu~Ts+%ysM70&I%}hv(ZxsrC?)~Hu(hcc1d4zT z{w|dQ7-nQ?O1LLoOm0|+1GNVL00gH&p9)14EGhr013k{si&cQsh1D=MQJ5)jdho-~ zTV-+Rm0fWiGJd64JKANP77pK)w)$lZi0Qind5@D+B9WleeYqH_2W8me_Yzaz*~d}k z7;zu=P>61N5B{>Q5KYnnVF@5+g05wS=)G*kqt8!Z>L$Q+EK^eOWH;dvWV&;%1P%pY zrZe^j0N*~h>Ld%U2qwf42TP&yiiPR7{XPZ_Kz@bJphME3w1SMEaMB!|Z(<0-!bGE= z#u>CBSzwNjg-%CAjUa2Bw=Xk5iLQ!9;t^2238-5xzeFJ32!_wGgQ%2%!Pw3DXD^Ga z{3?L~O`IJgChu<2cU2??_F5C47j8s*Y@6Qh+22EQEJA#q237A6lO1+v!uTA(xwFPz zCZ3%Oa^uvi)REdx(+v*@uBXzNoAW&wZ5sA<^RdbR$>lHi=WgQlh^lJhtZD;8YOdUZ z;q@av6|%Rv&oxP#tt}}O*MXH?SMye7I|tiZjLu3{%Y27feR-$RFPeWVnt7KRlC$Gs z&YlE)OD}UVbK|KMTwt>yG^}kKi4=cVcTWjQ2WMi;;8vEUg+G_V8q|)++39061a6F{AcNd&jg$|T2Ao2`| zCKbI!?i(bH^e&J?mv`wg9R~7}kMk^<%_H)o$>4G&7K?*A0WcVArrDR^tHR?*WKe7C(E}w($tHK3 zPzD-y{v*GGxO!ZhN)!-?KsTKf+B{6$9g>nTQ9KH(?xQ8e2gFhuvYJRZ`pGW|xI z+&R~w?r>u&LOR}zzlB5IiGTp)H7xBN3kyVn(Wvx>9SiM$@&Cv9|I6Zf`0b^a&r>7! zE}4i+tel3$<7O9igRhOmW1qlJgluZ0vs2yH?cL_X8rj*=&Dyqh1}1c_mzuV7CUve_ z<|A+$#BG?_0InUOK~-96EhhGih8Km0aB&3K2mx`G?`ceYSY{jE@7mYo!`~UiD(tB~@ zdFFAKRjjOm86UW13VQiPIh;vsx)UNvq1vII)FRU(BO@y=J8b1m#{fo3RN8KGEM7)U z3q75yI>iLAvydB!FC&~p>aiw11i7}$;s&x{G&#zIEZ=24LA_?CQ+y(Dn{#fXaR|6L zToHYiF>f^7b#j{F#gyL*Zt7waQ;4#huY6*YTD$A68k=h8ijsD37U;*Toby6?hmd}hGzR+a000Bx0iP>GE&r}DC|iIW`eJ%I5q@7M zngQli7pPtsT~+qs)$#ikD7&vt8D3Z1(HkI~^)Ola-0t1R{%Wm$L`+K)hCj-Oq5si> zqnZVKQ?TEj#ZU*lonRPAEz_y3q?Ut0s`I;Huw4k z$kyp=Bg%Vn9+m;s&P*roRpO0I*mlu!P@ZKl>!&Rx5^mDyR!R?~v*$ynfbdRlbPI!k zIV_31WR>XW$^^A_Nm5j7YQ3=3=L*I+b(o*^IPPnW$Iza^65Vx{b#sA(j=Z#X6^4Qb z^9cW1pZ`Ee1@qOgCyR6U#r$_S!Bt$Pz_cp|r)cTDe>VB$x{#@>9AlD0h?Y10%6@N! zIVUuB7r*LR`l-P1jnqhGeNEerw^br)1j znGWG$Z)HGnm8CTQg_}3i#*~sqs>U}ZBoWRI*K{b71@F*!OtL9?_A^ZxRg3@c5;3tv zV8lYQs9xH5k1-~vSD^fOOr1unj=8<-QF<=WAYhCL15skYY~;2^{=QMjbD4qwOoem` zZ;ipV74iy0V>3w3s-T)b)pPrO80qd8`~`*4fhNQhY+eZ2M#j;(9+V|YvmM9EsBGRC{7V zv*5Xr?@k%7%qSJ_y1xiT!7Ld-zZ3e=B3!zl&?InHPrVOIb)ID`Y&x0^Hz?qe?q6sdWf9pS*8>3`}T{BRQwryR(?<{Aj! zoSR!odo#^-BCJi)1&P+LNo>e&SEHN!_^+@nEHJRD!1v@~qg8SrGxmHx3MoIr0C)tC zQ2QgqffZ?E`HeOPiMt&7>u<%8_6DFV4oEP_ z3}}Y4!ip2nI4*|vEr<1tzS^ta+)P}gHK^&IfM@Pdn_8vR<52+IH7w~J3a>&W(7$c| z-~B&-{`%$Z%$n1gbyIK|P^&Rpg$BI9ouRG>Z+XQ3eXE{*k;k+K27k={n2{i1;K0Dm z8THM(jwU@?V8fYBQ;LQRJxFRgASMW$JgXg(D>1 zC**KF4ah4@bKLDiFv^ibxd$8gIdMg690|V!RZY9<>8YiD$jNDvEp2QNm38SJnz#S} z2WLT>FEmU=e<16ajECf$HRFYghIU*afGq-S_;`D${qglM}=+p*+wl|q{J{ZcY4 z1s^+)pWXLHT%b|;gf3Dlm~f-d**j|`2m7n!?$#*`p95q2t!?M^d*9>_x9I}rfWr8Q zXYuD!+K4zSNO}&Q=lqTw!vg2zgW+DuSNU)fuE%0^VkihX#j9mhXhsozq309VA&&OL z-fdVoZYyTn14Jjz`VtN|1=dK7K+mG*# zOpK}zvbzxdtXux#Dk;ctz3AGZ%B#WVRPcWj3uvb{7oT{@LA_n}^_R-7k5FZykzzl9 ziLL~vVlw|!#j_0eLz-e8XUiA`BB>wo}39w$bZJ8~}t z#My|htlX2l{q)b%pCsz=>Mcv8l&nGXYL+QsvdxCtOhzN$;Fwt6_LOt_4b|MiIV7XO zC&&n-Ftnhx*n84H-lrv28)a}i&*yDYHXJfC{(+(slvSBDONU$Bx?c{)CEy%;N#wzS z{*8ioC$66FWEtT|jke6Rp=U?|J~DoY_j}h}BqhfGrhSnDK7}S^w81oPVeo z7D&kK428v9KFThu!l=DZL5eX;mN=ya!VP6u$&1GfZIagD2KV}EY0+*cgMUb=e~#u`Ko(7k zTV6pG=SxBC~ge7R}tsrr`Ev|G$!X%fF&7wL3Lu-N7oRi7sCXR7$f=S`oH?PjoZA zC@3fOlZF+CSb{zallgL47Y^=@4U4awzaFd~d=x*=7Z{-xfm>y8mgDXG-O#SXTE8DM zJR=y*mESD1QBU3g8JaKITQ!bV18Vyj=$`g0b{4g2T~ChxtoGYiG~KYwDow)t6tv^A z`{b)aBEue0wDbrV0UXcDaI6SiHFWnLSI6HGaQ0hda8k#|YacKMG95)ovp%(TB5tI1 z3Sbq{>hLM5F7e#(ML^`B**_Q-(@)TQuRxcx_Ce5}pbw4%2#+JmUj-CQl13tKuEV*@ zz^GGSQiJkErCxQi<=TrW$H!3;5AR=!?#mokojza?`HY+ARUL1|AK~DLesi0q0kgt$ z=%^b+`Lp!|V<@kxo|KLDgv&fEQB3&P|Zn-c#5SJi8us0{USPuvY zScD`6umCz`q>6!!FyyhdzoiSRaGW(RtO@T8ncVmePOvnIPW6KymD@qv0`$ABI z7c~n0g{|okm7peOE(SV_e)v>vvt93{5|d5N?!zm&7s`6EWy?fQfYS|tMZr)k5X5Va zo7Q6;llfH9gD`x1m{{n)9NGUuZ+-s@y&;C3{Wn|r{?oEzQ-h-tXT0eBxA;j_(qqV= zxdB=Q&AnOC>ul=M`OV^E@JViZW^d!T4>$Xd#oFBOvl>T9rJEIbE=3vtlrVgKD| zBD&@o|5>Bvh74q*{#(c~x{%yuXDI0f2lJZ1Dk1etW+WMG&)tU8*kw_us`+X8F7hcM z)MU*Wr)#~N@i<0^*a8J!^q=^5z2i*4eoOOJduzyIbnOqb+dcD-BshxPU3#BpCacw7 zNW?yXX1_LdX`q?FVx6hL&qoK~*bs?{hQWnflcQ4Gu=S^!GLHFL&w&;n1-6aNUzNU1 z{7R1DU>M#W_vs;@Ntt?|o zRzJf5eyCCtz%yzj*Zk!I*v}F@j-qgaJqm@rAARUA)I<#0rR&emc@|a2&qtrvrU{6i zfSym~KC;QAz&PLHgH!_~Mf83dnIb@ouX=;|Duh{&ywq)PfFUch-~ftp>cO5#`d~gJ zZ89f&yBJ2hK=*O%O4`B9BTL-8e^=e}EnYe1MZUDkUaR;3Jm;3B7p`|2ZuTsq=y#aA z_B^0OlcmS#Ih`2vvDbZ~jL?iaXbFulLYM*Bsa-nZkd+(1!Dou0^03@P(`v$ zVmef{cPH^1DeUUx`6$u*gD>QXc00-Y`g5Xx3)x;ZV?;%Fb)-!0`;7 z3O)s+uewxXbpCO1PSgohGmn1U?JzGGRLb~Na!z{`j z62ETxn#}5p7OwCeB?rwzNC3xzb`idC_uLIjNW3rEu1u7`-6X#3>X}=;b`$*Wt!xFHMBAbO zW;AL??~Xx>M_3G~kIXgY(C&vHWk7DKGh# z`pZ7-i^C;uD&GVgGsDwToPQ{2@XR)~JNq}h|LfMb<&>iZ88YRr>v>df!e!Y{J5z5I;JX@Z7t&Q$#-IHeZollW`Gf2^)wyc5)}8 zAb&=jKt#Eha$bQ?ZNN*_H*Kd+(1RH=_!7J#W6!yLJC1g$DN%%pozMCwdOFp9mwoz; zYMsG{+w-9ysFlKV2I{AgqCR4==E5En%RSsI@M5- zWKjX-iVYxLXkaY0JB_|axsJheV}FQRd*D8mX^RK%TeSxQ?F0F`;&8V&F=c+g$;u^i z_DPFFn~e*-jamfy-Kb{7S6Wfv_&8>b#t6USMFq0>CZ3zi|8gn+HJ1Dc%~XD`fpPDq zS3e6+Kg%NR-Rzai3clrqR4U!ig2a}r;N0=z#5 zL{D&ez>U$mAm+G*gZuYmDs>eplIH7+GK2Iy&LyNJIxC0OMa4i8ppvz(T~u91g2wz(JpjC(<%}WdywCY)8Y_hF z*87>m3{H$7Xu~;bEfm8K*R2{~chufutZHdL49;B9+u|;-DU&8;W5x^O`EAixG=V;h zmQ74$EZ^einLli60lE;MX!l2?Ucv@0u{q`o-Olq} z(*P$akY0Srvd4_3A@v*z5E^KGN_ZWB-{i#HIxH81akRw!xExu1nwSDlfJdqVGX_eI7?U{`UI1VXhuAxs zBr}{S0^3S?N1k?j1$AW^e79V$JQIuFM5p8|TgCT7xIw#q74IE2NfbBOeUoJw#q;B1 z5)!B`;6Gb$Qwy=abMg)FnL=@RH3FeBxaJYL6v+pH<%FH+KV?&Ib0mGI`6^2~3a@{z z;`9$4K5>c*2GJi)(~qDNz|Qb^RzYiXaU#(fxojQY(bAGmN;`*El_p+BJMss-$aY*X zsG}}COl*DXK*}QLyxp3noFQ??lh)!qu6Xz^X;f0<^uFm9NET2LC$=21RuPA@EXFg*DL`Ck`9T?c!gIq3I(QhcpuQk8Ist9ZHe`cn?OYU!1AqW!NHY)hC| zd7?pX%-KA)y}BuKdK=ZreKCG zi;Rd5(&&C27&1~QRK#v^F%74szenUql6<=IOek;OtJL`5^LOQGJ5AoYPI2qiCI*g2r+}<91yX+#>P7VO+aF{7cF|`~^3v~OPk7KxW?#h5!1=TF zBr3FQghOyWcok4?JQUdjMD0r#qDZDo9g4hEt#0>DN6_l2U|-N4#mGW!cxr(=jhs($ zXvNzX9cI4bI&Cnk4%oztN64TvuTJ-bi#%9w2lzze)5*2*M?GqZHBJ;$_Xs<1FzIL{ zl`Z78jhoRpsk9A-(fiUGk`%ZG5gTk)VHuw~x#&MoZeD0NBnzxYKfsx~4w+U5FU}L0 zHff)>F~x~O{}jv0F{ov1_czl2Wf=ZpOse-zNBt8{LANykjrsbSwCAJngJ174eBng3 zJLMB{c(sf^IvY(kyvifFhdqlGiy2810POFHm8!+$C}=+3hGUOv(q%#2wl@9v(Qt~w zXQK-S@eci$v$x2voy>moByXS$U_OtZ_S-Ad^1D`n*1Zqf?d=MwDhe(54JB#2N6Aw$ z@?jufomTN(0AK*b*u#yaj-$xWIEyASWg@7lJ=vN+Ps2(Ff#Wo>1fJ_EK=v#`RZC&P zWfg?XK9ZiDIJ(?g0fc?B-{uBJ+FjMM=n8XsK0}y?gP3XS zL6UQnHg}V29_i$U#ct&Tiv`Mwv`72aq+nsEY*-x%BH+7sy76z_A7C+9caVPboi?ug z@r{$XF+HLy>*5%Iz z_yr0Rg0Z9c2KfZhhkWqO#e39zq^v85H*KyhpxME&tq*!)eo_s(!=7-RL$$q!9xjEF z$G(ogH@O{HJOE1gDw|ghG^Ck|8TBbBi@an$!=2C*do=K}01SEWT^`Jahct+t?l4SQ z43_}kA`X*_jB|ihh4{pjaScZjmvW^7lQ1vWW>H{f)>C#f`pv|j&(~qO<)eRG)2!v< zpFDXJpEq#~Crlb(eLCFfEb!%v_n`xf4N-7{{!c${gZg$)pch>u%{I z)*YhA6Uj2Cvs09(iOlIGSKWy1iRQn;HM8n(G zhTFy|a>fMzyN9|i6s=9bh*%6+SUrbQxH2pC|mCH<2ll3UTD=eG;rc7 zH)%>FXO_(Ka%``^PFm4YMcmX)Fb~1w$l?w3Q1M2QL+kuZKekTi$YmqW6xwHDk3??6bHq02dC3BfNC+;UuPCvY4FMn26`kLV@TX@<|-zU(c5pO4%Tm? z+$~mneSt7_62T@quLoDAlNR%&*cUS}T$u(3Z?{_YPXJ47`2;iz8a&e^B&0qXu7MwJ zCRDq+(7yO0AeDK&J*-VI_}*#pAUDWu^7!v?vh%bS0^ra6wD-V03Vflu#Y4Mzmpz-y z{acJoJ~=3+qm89fy`12Rapx5L*Fl7Nn~0O`b+xGupWo! z@82dEf)%2CI?q*I&Lxj&ac8Y!CLe*C#P6F3j)4%k^{V%XKzq5Bh&D>xjm+jEy{lcj z|DeIQY9{~P7*1CWajDzBd%p3{etgXJu_t!07g0-=ROyLP+X9iNSk6K;xmLG{76hOp z>DR+l?~oKpO*RZqRE9~)5Rc>kkvXC{yJZ_d%_UQ}2dh@{N|D}kiWu8}s=5jikmiva<0otrA3|IQkksjQq}pB|SO z2&Q3#-51Flxtq7!!}UK(@P7)CQ0Z^{iaztZ=hG+V{nOehW4Xno#^_UJuyS|$FK*Ha z-D#v$pYgn=C3n1!unnZl(}FJR)AhxcY-0yEH#aI>^q{qWJS8I~Ce9wpigCr3KrbR8 zZj=OooMcivf;ps(KaEhf_1;`=e=l;Ll84%C>XGitsJO;74T>4NS zj%hfBL;DJ)?AYd6S@J?zVis#aL~*M~Kau1KmO0yAbb6M|qL)rbv^AVqEcE4m{rFWY z$1j%uOfVyklM(R;X>9h+e2@9OuHn=|c!$r+yfD{)9mL=x-!FFb&%d*TAyAVQ+IZaW z0gxz~xu`NJUxa@qci<~KZTAV+&E#7p+2<1D1%geyM4UlC_+yrc8m&-XJ}smDK3LT& zUol_~oJ~1l_$5$VtL?d6D$qTL@2Kk$!9566AY$)0a$L55KgTyn3WgX)yO;`CJ1O5! z7eX7BPB>{{PRFI-hle-K6qBDl_2PSywy6wUT-bYF|9V|E&rI%TRu=|afdtEUVx+DGISRh$?&(o`xVYGa{19#uSrpEkUq(z9WxuC)IV>7)+*uKHG-0EQ zbyDQB5BB@cq?Q)Zgp$H=F{js_D6eH}-wOCbl_D2ub9zdx)zD6sP@d(%27ULCimSVk z60MODM91|Qdhcs%;RnONUmGc2Odpil;YD5Rk?3RAGwGtt@qHG}4`{W*3b83|3Ckk_ zPWNf4-W#hVkXg~T*y*ytqbyA;6|xv3uO2UzstbLERn~Vdtcw6`Eee<03LR_NoFmkb zU|Rs7-2kNe6@u@W^li`dHg=!qsMqSHLbm~d-if zxew$xG~hUDq;+24s4KdQk}<=;d0R2KwGW{bob0aMMNKS>{}A{+w;C$QZ@}%+CX}M8 zAbXzPkA%$mE*?vH;^UTn@*5flh?y?xoAD6`&0o_{*Q4hoXKZl^H6NO?wlk=&KYldp zZ5^`E#ZhFCd~wp9Nb0Tox{O(>42oF^btvsBiq!-`^cDW8HMU-MR_`t|AJkp|I9A)9 zh79N&kr3VVj&&|=YPE$?|IW|GM~s@e*z0UBtwg;($%0-K2s?QrV2%jpSSBu^ieHgs z4o5Um{~%!KSvb+3I6i5&1}y3Lo*4!fH*MeA*pVXp9oBS(i-%!@8bJnYK@%G*5t1i zCzCqqYA*a?BFYMi8z`^tUzKy`&@unVfboaYF`3)>GZQr(U$X_HN@Mh8+SPs&9&iElgwvkpuA2c?+*0X3djQT!-NNOE zQ~o{%?KK_o=`o5Vcj0`+QSk=xn_+9wW}~&5LN_dF1HU(`vt;0?-Eo9&*e*r7l+1by z;abRMd2Uc%!}VyWmm%>QTBZXUCjjzF$-D3)Jat!eVw|=>6^uiQ{`+QhL2{31s^kkV z0oRi%iGl5SdPlQ0m82-Ia}NGmDhVk;G~{9>sB*ItW)B=ifPeK!CQov$Cn>26pjmhI zEz^qO*kvFg&DSLzNW7iGbVnjgu}t{fbyLuUIxSk_Yl`%}r0S z3^l#*$v-}y7Fb1Tzw1}8gQ^LL=la4*F_aJ)Vr(ZLbX6a5m_93iuo*gh>q3g=$=~wf zMZhGjE~Q_jXeIsrKYQ`NFIH+JeYTJMuNwEmbbh!UmJqd^^G2DX>By*Hx^)y4PiQx= zGjqXR+O48zU_|&Pzu~R?rPJ`dBXcr9k4B^Q0>Manc>_26zF0jXJA~!-U>O3h$M@ERFDLR~>6RiqSWS1qAyl!po!qzV(Wracr)-pAa zZe?$oscqhjAx8vPt?~DQw*W|O;TT@8`Zw&5DVWi~$&^k;{X=m54sQg?Ii{Hj-J#4d zkadBX9SxPsJEm;MBJ({+%T3Rc$I)>iYXf{T7aS^|tCMNdUKQU(*7Xnu>990L<{7h+o$99% zZh$?h+Tt+f8mtU25P(S zXm~6{5dX4EP0d%+s4d%A^R(=ZN54f12h7W4fG!ZzQ~xv*JIF)k_C&{}jbP1{8YUfH zSS`nljQk8@^0Gq^DvU6$PK+Q^0fUc@7+gxKcCOwH843J7X09^2-fIF7OXFe~1OOywXm3JeF&l(T7|M z=ZQ@JpDRa17wU<&rmB_SF-%C&VPfnu;*Ya5!53HrqvPPzy$>#Cmj238Pkk^~@Etm# zR4wUo)|MM502ny@JOLu-s<@pcwdU}IBPRH%qvO<7vTygkaD!(><1*JSVtzgp=biwz z($LkQvMobD`*L@%t=l9lvEt}Kn8WDmUOteHU6kkYQ@Fk~c-d}n&WK=;2k+_ab_ z8bRB~BgIE8_z}0rHcKH9>l}|LeZhBLHF`yJ_PBAoT{&F(^_$G(P5R>*k4T{-7gfRD zXS^>~McEU0H@NWn;ZZ6N20>sV{+xNacI0TYP>9@P={~u;2y2{*9zu(MA?Q$iZ^F|j zbo?DKscllNn_7q)rU=A1*AWMblOlo;cdSz;9u!=oKeGVd6X&SN_D5G5VjjfN^>SK6 z(JxXf2qPQqm}R*%P!w-ek$HhekpTb1+z*OWPZDyUI=HNl=)2MA++INQ!(6kZIx&}l zl!m7tb3S02#^U1){NbI5VRLHw*@064XaNVg>ZEe7_!HghVM%6_U+PuDMg?geO~aqexZM9e|4xXvau_GQV%Uk$IXIy2d|bhhdf=55HgzQBUZss z(gT=~jhLq}yOfj6Kkh19oiw8i;%l>~{N-{!J*TnDt5uZtJan}Yc$W@^VptO6I2)92 z9tkq|I2g9s_b=OO4;LyLvahBAlf(~3HH23$0%++4H|VmFbqY`sj>I1Yk&Zc?fRu!s z|GNU{{`l}EB4XA-TtgIl;czd#xG5eP4N<;C6}MTvUrz>iXK134q~qxDGx^1kUC06z zZ{Xh-KUuC7gf&G+?9LM5y$fd(13U*ndgFBKL=Wih!V-4paW@TgI+(~6ah{8N5D-2d$R!wkc$Xsx*p*5C}4{EeN3Sa;l$v<04d$zB5sBQ6xw@+&oo=#QaLYx-HE#ovK@z-&nhP;ylaK`eb^4uK_kmyySgEuc6y!neTScy1CC>F;6u=3?SAA}^r)tqh~}SOrWMKRkYE zXqJ`{|L7T@-t?~I`DQ6EloK}awx?8uzoxxc)S$3#56N1r93S1Es3k8nCn{t4UP&R0 zxhwe~t!7_sglb5zvUYv7$;&i;Px>slb+dj1;`Np?UF4!m0rmZp&L2-Qq1i!~-RDND zwxh$jtS3{b}Y={VtJD961F1YYi5k)R5 z!h{Sa-_AiQTJ&K^j?7c{1>OXvGS8h$8GCUQ^;z z)#!ij-fy52TBPKcegD1l`CFBCNxEtXy1uu}@WCWiGHx3dxMM8Tc9b`hiH@Z9qhO z(HB+)n^3itw9&qo&t0|!3JShjHCIV_7@114@f6EM=95Sm!a@)$aUH0+vPwTdO4M!( z%)M2;IP<<=90V-YfpAeuTTreVPH1(wHu}I3SKHIHO|h$7?>c95`jOlUw3Xy!KTP5N zkzH&02qVu0l_>WOiEKju=C7~k3Yath>+6+z$>x!4<4fb>eihtk#2+QjII%6qr6U=$ z{`2^rpzXIrJZ8Ww`_?f{yXI*D3tqCsGRe zGk0Y0r<>3ZMD4wK;Jt1n<&)FV|+PV&u~Dn3Q5^D_Wi`89Z;|Y>!3#WY&`x znP#trqau4ckmypw9muq$&+CmyNp|qJAHu;1v`rB4?*z8B-SDXNGNsa&aoT47(7qiD z`}UGJLH1qC@Yo5SChdq3bf9fY%%ICCdgNZKvwt!$ej9WnQ65G$mn_9o~QFLM>q6Rzv6;5`ZA?(9xv=Np1>Ce*eIncYBRW(zH6s*#y~q8!FM8K$cwGQ z2o9VBYc$-`uKsddmjg3&JNP~Vm`c<@+d{;%H*41!f!GX^p*t|W!EMfbEo>#5W{MS~ zer%Ar)sj=_m(#~$I+z5!R&(U0g~&l1Rh3k~eaVvCvlKB_u(;+*Y0FX+{2P~5qj-1i zZu$u!8}WWCsJ<-X( zAR?g?LINY?nlV4!@Q$={KY334yZOh>t8Kc*dcZe7D2nyEXyc`}=ecKJEymeq%T~(; zDVktET_*u@4DWyugedW#!q3|iAX)MMNcN*+*PmbOzXae9@6InMy7|M>A_ji`RNUOa$_UKBGXVqZ{$Mf?*>UKbt(q1eDKaIr~ z>Kv3u@O}lo!@i{D&UCCbMnJ{>N6yWLw+nXMxTD@%|E=RP z#7W|sC(j7&?UZGtHF5YB>lo7x<}u2;+fb>Thc>dflJ?Dx>V)!Z>EQ_a{p|G3%5ebr z2QfDt?1~Mm8XQe45(t^Ep0Mw)`57;mv4|1+e`@Rg@UzykSS7>>x)Q)8G`2L|-!Kzj zqU|L^Qhe8101qI|9bozqT_(9j75V9}Z(2`ywsn;)zt~{oZ>1t{x~$WNiG-+k-}Uc! zgeLrT#90L;TQ7Q z>CQv>9gSER_K5*kslW~I=%c3$aZtop(&64t10<@zL)1$At@>{-gyQR>9K%Cr>SVcEx%WkBitybWkG(1jD1-KL% ztK#0a4B&nw<2B@ zdINs>0DCWFf;97MySV!>iw2u=p2yA@p8O+c#`{39gEdm*_CTBY|L|v-Pn(q2`i~bu zGkXjS=BU>4qXZK!pH4krU>F-Vm!w!cqYsA&+Vemcdius|pQ1kmxbEvnG`zF;`tTCK zi=Z~TdZ7A_#&UOstmpXKw>bOGe3H5gGHbmTtFm}&U%p6VS@wdl|r6jCE< zO#sUl3t~hB^DcdQ3G!A8=SF-nYeIU#F_t2y>L#~UZY)|@?AkO$GIgd(hoK}?tcC2D zF>@9D^pQ)Ad8>7nUK0h$Y9!{o?zHep5D%dP6$TdAy^;dh z*mPV>Sk4k!`Ai{ilO`Kgk*;m)< z8{77jfnq_FK#=QYEy7ixB`rahGl(ctITWoPo5dD8&u}rBPd#(p7uc$oO8O3?L3jAE zya+$7Z$wiAF1B93t&Ch2&7jrRH9m<-g=OYupSa1Bu|ip>7JhCD#%uXS)k7_jBERaA zlzV5qRti=ejyLw9H2qP!F7_j{-I(^Zj0C95aD)ZTEzz* zuDmNJGZVi@yl z{+kare66fcl5IWQG+6=!qlZ6rxwVqHeI| z&CO`(di0--vmQKrNCq&BWd?^^(Qwv*dic>*8aQ*O=7_M)4|cdQmOwx!dXut2 z#UenK)^ZXf-$1by#fG1}F1)U4SRJ-1dNBAS_;C83Pd`!@wkA+BBSKE9ntq8b_t|%m z*<*&b)@qd84%1Jf$`13d&PU?thsyewpR=h9d3&HElCZ@g5k1uZ0I&adlbeTdq`&By z`H>&_VXKHgDtCF>Qh|CPNrGZ>hd2o)HZXE#e$R~gNp9D#M?3umv;Y3^Xf$dK1w*M59fctI48?(S1JoPEmV2b-3qBAu_|@Slv_!H zHkHh5rI^ao6&%_*R;*@NbXA1h?$@nlbA8X#HE3*qCEympj2DdXU;Vd(cGKd3q#dB( z^QeKDYkEkcWW;eGC*pbqPv)+uM26U|@{EW*T?Z-^5zR&dK1wGyz`7Rvp{#6!ENx^* zd9skl6vhDg`Iv?&0dU($|Gvlgv=5*4v?*txwtS4Rw@CaUs< zcNpa*VR(LWC^sP=%(Du*5>Q?E={bcY92&)XVC1#1i*^Cb!u#26M+b1GX^=AP*<0Ol zgw$yacfRp~7BC04BdsBW(+`x(?KVy}j;A|-S zmdaHUaj9$;V(mN_Ot|#gI;3H(vOj>s(J!aV19V>&csWI7Fkau5Bd4=TBim3`JGQ|s z3mWC~-m;G^poDcRSS#9TT<7*tjog&&T@_zQC4xc1V4qbfHAzIoKdG06GyK;DpyNqSTF$zPVEj7D``2$%`L zpqz0tO+n*49v&KFtq0K0Vz-kTbuFPnKhXnpt#~C|sZ=^y5UvhEt%0Fv;ii)pyut2y zlB*Edci#+U9KH_>)9P3f+e>OF*aa z%Odk{m&gQzU<~3j64IXN3$IvLXJ_&oiLb(=KluBOM{Kvy{Dzy`FA#a_M`0Gk?bL~8 zX|Ep6`SoZG!plU7g4Xr_vV1}ezcu1zu{%Zwbl!}z zb$?DC%jmOP`B1n%+;V!pUl!lRKn*>`Sd)YP;x4JGz&Ab%M)deIG9;=Q=%&N$ON*M- z3uPenrArMpG^KP@`DO@r@57WlOxY!|uze=7ugcpSy?LrSj7pgG6O!en>n;xBETmFi zWH}IH_CL|_o&zqM6n_69o+*I@X&v4grHYf4&pQ=u>+<i{8lAnXX&G|1Z zwSXq4<*s=R;Ck6xA5@2#zhJZ3+cRK)GJ_&0!c-P9G*Dxtt%y?_9 z;>tCQ1@)a#t6ys@W4dIH1uX3WJmLU$VL3Db+I7qc993|x+T9TM=w!@reEuw9H&Cqu z#Y~?~^c$7%lzFD6_xaq)K27YTe0xT+!PHuE7+YxPsu%rR+_}jR?LgF;ScD~dqndU%bq{MB;cW$9OfEtmn{?|3QhrYA z!hDZ(ZvZtX+N`;#oK!nq^61ac(7!J)k$XXIXwijE@&Cb9yQ&wrJ;p=OKJwIH5iI zhV*n73hVjJQT9A9#?8^u;c)LY0p_8}qk?f10K|G%io*!=&KBKqimD4dNSv2b5VLRG z=q;3UIqM;&KlvS2gO3*ocPUgXF{-wUdqw&ce`HY7{;Y4kJ;Fq!6X>pBa>rLVb9}D5 zhbpia)80S;uUf4-tb5E;*kPoyaMmV)nP3=ZIA5!$g4M)WhB=U&J^o7Sq2TeWjG(PWBpdizwX~+3(}vV2B>tuDs86>H;2*;G&xO87D~C=M?mWAUoIZ1j*VFl)kuu#T&-!7v3*x)T2_Jb@h=l({_UviikaA49Ovu(;RThFnJ969Ew!gcDibh#gUsxj{i0NV3D9j z{Acr6raiv--+g92Jf!x^mzGo|<=cydq0%b}n(H*0n9jqa_NUJ$IXId0^3=+X2f*ngbuz(0YNZ)EC1U?I?Vd5P4dwE3W(q_TD;u4KB$6#%sd zj$^Nhn(BsU&Lo=IY& z54wBrrNf~`*TjwKEEBq0(Y#J$z-Z-W;WM`h4SCfVZMlc`j3GptaXmjS(Q${hywWZc z2NKR!>()<-$kPq#f_+{1E-zClQJ*2+-igHaP9S|a$vM_{fA)HY;*D;U@2v>DdzEO} zhP_(r`^GfOL>z;>VQ;rRRJPj~DC@lC#U3%mSw;)L`^GD5h$uVA$B1n!#}&q|m;<54 zdfAQ+_>eYXD)<}XQ^e}GAj=+zUc68Ji5g!J4i62b-Y2yor-)c+CE}cP!p0NL;m8`k zphOL>V5if=zj4$Jvc7xUBRBDvx*^(nzB0Wv=M1gm->oFEA@?;x!BIrZw{y(4D8eot z!n>{rZlEio7UCDri~UxqT10_yIvGi}V9l<4#Uh%d+GtPdWHeX|+ake+VS<>EA|=U= z_D)ko`6AfRX@TC8(ARCasMkWiEZR#DnQICjdzM!rwXh*NX}X+_f|8xE`gH z#nkdD+zL(`97%!}wF`t*K7%@Q!$YR_6X)71UCc#_!x8z#nPn6PSE{)0uuV7Il5C@) zp&&;!w5}-+R$=}ch?M~d6IyEBuEQLY4?7xW`ssRuIwT=yWz#B!+F-uCuMrsRyxXD=`4Z6pqL_r5RIctzyPZ$PwUD7IG=9fw)HSk4B$^vZa~|f`dmo1q=<2M4V)$#oLd#l^z=H5EHjSD zrYyO)=*1@LXmK0M&5Ump^cP9ss8M&-GIo+It)LyWr0D(cUAkZAWz~MX%%-MOGqktU z@}avGGDVSn`k-wzDhQ7>XY>m!1>$Q+VaX@?!gezHLsq#@Q7-1DLXyLgD1`$FITp^- zuhZf5SO2pIuW+G4#D3|7zpEjLzjVTt_n(oQpPXjZJGfVpjD`1ls-)!3A;ICU&i-TH z(c#e+I0#Asa@xWwS;v*%zsE&?`qTPSlk4(~BqpviHD+8t5=#E`Lcr{mh2OG`<^H+h zne3qri6JuMG;Yg5$abQWB!wb_-^^&_=&+d;IM#`BT6*+Z<4)voY4p_jTB`cxR8^5y zm$BE3t=o~#FLvq;Fq`eybt~p3yJesI3aPbsRZ=E#m~=+T)n;wkhVPPprjpSlE^6|? zq2JD|VDdwZ6N9qXwuW&)^s(Qn|MIe*!(=b|;O<3P`(g6)aTAsWiJLr_+MlX;x(6QH zdgWmWMP#3A8H-N&Hf3D{Zfd@8;8t`qK>J_ZziM?bljiCOe zc}w$2Jx8+%kv>*URi{oJyFg&v7u2dodQ&0)hs5tmXMgVI;bv<2XDsJI*{(kyST4S;cfbpD%^I#S0=%16 ze390HKM)E?jv1Xk8P%+L5=^Detv>boAI}zfm#^y%C{RT&*N46AX!TKFY>Z}jJ7vR* z%N9ndKUYe=sxUQ07fuaP6&S%CiSufn5t`fSLk`y)wl#tMV=5C|=P*fL()F@|`QOum zFD$d`Q{_b1GW1t$vK7|R!5fey5I08_r}FCE@f@H=nrp)So&Io#mIIAna1T`EN8OR( z>PVoWomKnHVaUJQ%5+65k$?r9(^D-|3fYt#=!H1DH!E!YjF-CP*sFS@uo1xCzi}7- zNa^|V4XYN#&STEJTrM^I&-g^u#g`Ftd@XRbcY~t9K$_|61xsWw2L`4`2F;f0Hznes22SdNKhO>0I z{&^G<1x2uNFKH_bSLE?3h=;-e`}k~}CPx8e7P>8*Xu0GCoPdm%^jL9qF)xxT)&SFA zw+SpGg5fo-88WtX5BIYTSL=%6wn}Zb(OCAyZmtQgm2OST1&TLCu1j*WlDT=cG)b(A z0zVM(|BE@~GHBBV@?QC0bL`sRXQ0j0rR_JxS4H<&{=MY7rRksf?saq6fd++3Gdivy zin%;u+u3+`##?zip~k*3o|{&Fvn(}ue;FAXObJP`y1*yaPI*CpZ2Cg+XuG`t;597m z9SVy=sM9`o`+xg?Kl^J-w)$mV-6{P{x}`)h0_N5;i0%PPy?xS*x?AU%)iD#C1XP3TN<%NNTL!D?@)-0Lvmcz*wbl}5X z;{7AXweKvYkUjJ$RNf`}M{<}uaQ22X;;u^Y<-b$MB%7wG^ zxJakpNetiz$7xY6g)CjWZ2y;mGKZKShoV7ILW$faoml(;97o~i$sqjbS6^wzs6lpE z7;@yFRJ0=Hx}r9gGpS?p!~^N>ss7m)YV~>EgZ0A&n+r~`5k=ZB^(wWrK6jFD-FL0f z2?>IDWyx>xEsMG&@xao?<p(iA%3c8+)xMrUUSJ%)Z&+kgWT`c8#s zo?+lM*snLmJXH^7>_gK4qbkeZQ6N~eATMm%wS&(v$jVTb$=~5HuSFbG=FX2IP`cZB-6? zyk6)n*cW`%3A0_q4Ao^@Ef$nEGj*8bN*l^dU;LdxszTyTdy|*GlhF;kN3699;@35) zv}>VT0UzuRw6%nal40-%&B3 z6>jAE^xkYErf^vPb6y{BCu9{`t$<(^2Y7JhBY(`f1o?ZOd%R5uZPT&R<;q8plHcu$ z=w+%cZO6(`&FnB+ua*i%UtVG$+=MuMu3Qyu!FX&Cqx1(+Cr2V)%&Gk{r7oti#junI z*~asg&7{7~TM1hIR|kZ9rCo$epeCOX!?z|z7YQrb`4Q%~R1@DPrw7W1k5?JLNf%i{ zFjlL5_Y~AW>D_hiOm!`_up$BSWgX}WwFGrzbEDz@(?_=N>^^hiW zv<8{_``M$g4gV+b3x6aAyu62qR`dXBR)Y_b5}Apvi0aUOV2?|4kiwd-ir}JWTgV35 z6|YJ1gzk2XSxp?MHl6cEM8QU4GOxR}D`DugQ~pee@VZUYW5`y)9B1371L8xyWOrvb z^68lnhW}M|CYfFz3F2hkJ!!}1BL>|q^IV?|dR`=HWF2fx<8Z_+PqMVbX{qfbyVURs zHC8Gqt#U|E@e~J>i6ewY;<>pztq8sb2pFVlBw|WNpEhf%IiAB~eqB9=*$kU|47LM} z#q9^HS-+tA+!ZjO`|Yw|xb=dGtDSNo)2+%Hu-#yMsmN%hKXcptcyj8m1t0g^P+BQ7**JM!~F!3qd?W)WcLhVqYEm)8Lo z23JU}28pq{gb+{E&7D^rO5tY@9w((H)#zMq`VauVZH9jA=_7|ajZ3HEe4YchR?c)P zqxFxg(l;B5E$iIIZ2kwg;oFaKG94(HcT5L_mMu0L8bZ4M^tI&*hom|$17T}IT@^?~o5Dv_aZA1}ARL5kauH#h9o5rX}U zTJqfj-GocbT(&;Jv+VXGVum-0;Q%9cR(gYC$V}8CXu|YF6~3QHd-Q=569*||8D~ke z+;J5{;|H}95uS)@5sq#A7$4TnKgR?2q$c&oF1fjOZM2Tuh>S#Dq0wqn96JGTlmWBt z%b>dBpY@k#L!V<#835unEbL@ik3y)>h;$+y2!-~~+yBG;zuV6|b-BJ3tddmj@&7KR zOt(2w4I9nNE+-6ZFPOt-M1DiwbQ8r4DJ0soYMQB?q@t#lQ+-Ub`Z-lc6%T(PA?TuGS3*L+*4JH zS}8GhBCO+G6&r|6$u3sNb4{}}k91Lcn2J{#VrefsxBvhMK0%sWIWZOg9)9*K7+UZ- zOOMb)symHS`Up(&Pnr}MT!u5?5>I%_AX!#N9b3Qswu=(q>`_@=3ZB0}fe`!Y= zShXYmU*Mn@Plc~M$&RJO9nPcvmvh%Gvv*+sGSposQ=vQiXjtWRq+ApO9P>s^|CQ@) zM=)CuRtO|zup1J58oi=lY)_KcW=8sj0QQoA%t(|E-MWc99;t2)o`S{Xhc>MP<(yn- zZvF>OxCp_Z2qJ@*c3NqH7`T=DlRAgP%!~lSSXKf`u)CU8(TXmNf|0UbvG&> zO$B9Sh%&0mxbek@zKwGy7ca@>rQ83UlHWWNYPHdS=SS?~^%UrmX4f zRt10FfNJ6mtrQkoH;!Nedkf_<)PC#zi)9ZK7@fpflgaRis{Zk8PuNf1^n`mojFgi) z+8#3*J~A9}DAAN=fXU{wE~-mnFa4ft!B~m7zAPW0?ke^KY-IqZZ}msf%<0oYdP@Y+ zvj=O5(YdZh@U6H*Ibi88LGd6C4IORXg8dbW8q7|QtFNu%eg$`!^B_qILRHZVCogh0 zL(OGB>@O~)@eu>^QTSo?)k}RFgVqNl!++=qBH0lCRFygU+XD>LDN*Zk36zwAPx-L!Kw* z8K8^g_J5-zCc_#R+VYYSJ13wpzS{;e>di@id|k!fHl(%x?^ekm*Yl>$0J2Q*2s}{~ zctVG^=6&dsFdSa5U~~dm({_+RDS~Y*tzMMh2Q{+~gep|WGC-E-MXG&YQtJSzj%QtU4{%*Dc^}FjapdBxnEK(UW)vJ!svr_k`fMxHh1GTCI z!r8DaetvI97I_Q33!A^(0JN2`y zkXJ#W#vzB16tsh~*v_VAdQ!IWN-W>-y&DX!)+zipit^m2kJXIb+XHcBWwlBOKLcd# z)P~q*DCXq%hv1hk*!lKS@o_VPKV|F9-~4k=^MxBEGIPI=C^FU0M{fG19$1d)k8IXK%91 z#5zWZJx9!@nJPf7I@sQEeWs~?K#V|73U6-wjf(A2-O2G&pQQOSMO&rld?vIfF@V6=%< za|@pkHq#N<1hu%>(+1A9AP86xMn;u_=2O`_rqnKhV6-jF@#2~rWxQ$Jw`E7Pu$RM) zTsN8j;c!BoQ%4*MptqKCdijW8zcUP7uf|+>84Z=+?cH?aIEtNT$%df|@yw_$rYwz& zl&vT}i24-9*PptV<$+r@Hwu~j3siOH-j|lV=*1n}rFR&yX}Pu2k8PICOZR`B$`mT#I8{VgfH=u8 zKcXGW#J0k{M7Fq#0#M?ld)YCJa{IUPr+>c=YDFjUu&%fKJ_ft~V6oV$IC zPOF~~%k8i1jZWSQ>3ysS9$Dj~?JxEJ^tvSwS~hZ#ig378oF=|?1dc5SmP(q6rc*~4 z9G79Hf$r@K=60K;Rcshx$PdBJr2W<+ zMk4>bSnaK^!NnaUrnC#<)gxR4OU2%})`whe_F3q&Ud*VT1-nY?&HH$~ntaVU0;vs& z@Q=QdY&?U^+cq6c)@*Q{vD)j8Fojv_7La*EG8QI8Qu4c8FZOK!csq=fdp?@)JCmH3 zz~UoL+U#lFehm&h8dQzo9{LANA(Do#LB;M(LT9f+dwIg-p-anZ#rM$RDOtr z?Nn6uLuy}(q^@akmG^-F{%)(<^0>`bE@Ah1zI9iZ zP{(j=ZZ%?du{%t}wQ(|*(`2dH30E_Z`c4ckPLN6Ps{@C}&u=-#H}@ zR+J9K?5+F4-f$QHFSTjZwfgYTN=&o+D$E_M8#s|dqEY8K#tfu ze5X#1Y@?hQz8afH8O)MZPZ`2)ZSrtLCXqNvo22*W=X^6T*Ek}%QWI{gi*6xan58D9 zn~RJn?~bm0mfC4*z8RS)bXed300hKAo_R$yOez1W713(28j!lBpBdxq?`Lh?FR5J~ zq|v3HZenKO-2a?SxM`7ZeJMzG9v{t43KP!>L(70 zg?I-z)NOpIbHzX*^1`BRPi>;R=Qrrlp+1vESt^prI1XbdQhi~F{vpb<@|_Z9n|1k; zb`ojk623?`$o!h>F9AuD!o>XA%E#BsA)pee!`hPBl}PIt=krbihP=%q@IOOg)UCgis!QvYgc*knGm+Af>Z296vH;hkz)>MAF&tSzEbMWS zYQ`rclhex8Js)SAiJ-Ovs~KmI2Iyk`200<=d2L#Wx+AaB*u~58Uts9{ccHAvpv6g_ z(Abh$Fd2!9wOQ?k1#ouJf<&N21f~{s?g)$)=|u0qf>&SX7mxCJF=7FJU1x@yI`NLtY~XCj zV>EQX*+Za&fCOMfegOA-fyWN*c&MkTk_Dge{u~~j@Wct2tuF>7{&gfx=w1NYqcLvZ zi&``LcGZo%i-&$CnpM#(zVp0>hRQ(O&>hN@Okw(ntaS;3hGv-9l)#8=b7KI4ByH;? zg~%}!6$E2{P1A_L4Ske`OKj&mpZCIQn4=6*G_4VL9meNU5BA7}lgx;?e>CApb2f~f z$vOyEHqCAT-l{feIE|YXH$E3ozlFDOCtLF6E28c6kZ^JU5)Gx*CpL+ht<(GBcg73r z(I5i;JuFbOL^(^bb%zW(n#!hujr$(tF-X}jx*-@jX@2*E<9Wao0_Q+lM52DER=(~z2Hg2X4I zrjriS|2%A^=TJ*7@4uOpDXL(AjyF9iRL7GviyHQ_CE+NaVJ-$V_pHYF)NZMbEcpqG z>$`@OrwFPs`*#yb>D6X3Mfd1WqP+Ey9iB}k_HsMtMFq!V8E0`V-*}^Avxbth-iwh)v4d}%xW{T8`#V5ZdzDGu!NwowGn8n5#vwVJ2OAX z1!ErX6Zk-B!8v|Xl~DLKAIvOZwIU3nAoKg|82?t=SRYZq&p=eBV1mUYVd2Xej|+^# zGXs>QEs)=%VMSHfq~T`1_qBonf;0zqS(3uZz6ig2j9uwbz_l5#f~af*8`~prskMT#IJvG)W-UC zn)Rwv6_)}q%V)X!{A=m8KX+ik49AqO0O&O+%?J*OgQsC=j5;F@h0ojg|LOm?*ZOl` zbnl61mVaw`D|aZ)x!4vfjWy-WsI<2|+t|E52~eP*@zbM()lVf7@sR}q24O)*nlh^4 zM+HkMlHeiY>2O8OJw`KU>+YQsDn08}^pKc7mzT*B0+mxBO=jd7Nz&A=h$9{-Z_ia} zIi;$Eyd&BBI38z7zyJUQ4*{Njbk5SDx6SjT6&&*boID<0;X7Nhc7Hda}_!9I%~OI>{|G zF^i)X5sDhX#F9GcDQzhU#p7#`SIB$+ogoM_>h5n3Wh!(f1yag;iZZyD88bImxJ{vb zNUKeYpZ(HK-^^*|hL)drW!O^yC$8R@?_G@L;ABwB`XY$HdkgL(9eJ-W;rM29i}=ZA z&Pa|c1y{mrpru%92fkpjXOim&~ zNW${whq1K*?Mh3-Mmp-;zt8K#xu{;Ru}?f6Ap3=Ah;=qDq#$lIs!WKqbP91Ripfs8$8$-Yi3++}PDWvAN%(mf%x0VyIGTFDmU*I}}pZ`R2K-i$G zjJ~nFM7_gwEAnzeaNC4hsPC@ZC8hQM7Ku$v)R~QVMv!dSgMvSEm|r~jS+kdC#2ziz z0LfbGa1^zlMl}oCR}BII@X;3iD=@C%!1oUuowX!qcHKqqVF^&*RZ1xNw6t7t=Q1zv zsO^g>X%R*Q(oHZ^i?<#o`Pm4?9|WT%$jN<6ZZ+}!I?GtQxQQ1;G#bENTD#C%@G-MH z!boE`w4(C%bs-u4qmJ%NH3wwc`s8WX#z*ot5rc@QB>()(2#nqKNc)|{dXk|Ps+odv z3ZdBjPzs*^KLQ7hj(KJ2rU-?0Z8Vz_h^>$ju}(xe@sAUL`59kZ{Y0`T2<TBIr?)TVzKneDQVgUnm_i?5j7^K=x1$MV;I}Y;4nt zI+DbAiwc`z^!=x_QE%YrJ)0@cf3i|GCWph-DPqd?!jCDsTJ3GoJvWt)k%E+?fDIM_ z``#)z^L|6?crcldoiwm)9viB5n$nck^9_TpR{2${0+2hfT+$k!(d29QEdPL<0Kq)J zBU}?_L;C!G4zSNdTOLyksP;Y$y}@TT@(J&oniq=znLodZxgUid-VzR$(2WY1*7CBl z^W3%Ve#V)gUx#mSD8Ybm0OU0+?F|zLOr+7MbWa@rPyWC4|G%E!k6Mbmgs1(@+nqU* zqcH}>;_2p^g40IxYY$Xf0*^V_R)%(V{(RqWFtfCjy)Q7#?ISulyw#esq>&*n5t!ms zddTZK(gLgK=0{xIla062s^3)$^R0t~TlG;b`;r^~TXo z*yyyzSpD(L=HTT`AhhrR00xginw>OEr-i>gE0C;*ru#lv{>~vLoO|(K)3po!#54|b zlZr71aIHPxy}Qt1A&I9}kfQXhWQ5c#NS)WH;<&aW{og5m{AIzoV)M%5*lG~<;UrP+ zkvIyeVoKd;mR#R>Rawp_C`o(fdUD^E0vm~Sn;7m-Z@It>g{ZF-~cUSc>#Kt^p*)rXjDcH#F4 zcs8U^dP9G^1dG-%^+`$Paz13VpzU{tn=pH?nV_yq!WFVAg4NMfkWqZgfxJ2Yo4alp z+MNHV^LTE)h0eplb?bB%b#Y}H17%xKR4_}3EAev@twD2XhzJJHQty7K(7b=my^$Yn+6L&7rUOGDKE)q_*m{14~F5=0A z;(DAc^B$`{rA3Kd5#=RCLyCRY*~Q8{*IdZL)wpBzLdO8=>TK9AD^8AmPU$0XyI9M3 z`%hsUTlLeO_7hr7#U94PyM{k&p zZNRa;PCQVAUSPq@rKV?wS?D3nfJZKV-Xi;v@%sh8M)=N&bV-hX|GI!c`lk+lDw_ml zz#aK4a28SG&V(KuhoVh>+^k#RC-Bys z_FC1-19rqPM-h`PsGTFVD6plfiMOR;3W1$0gl+7=JZ|w}CjdBn*sBgO#h0_5`5{$a z77eVVFA=X~W{aYNf(|?LbH)Gonb*(cvqdz&{1BmKI8(3>eWU8={~!O`3bhIeR5MGq zY7mOQBBA?^c-tK`>mD*9#1iS>?}kTT-9R9cGSWng&9PZDnp~5iQ5|iA7J;Ry*ZoZz zD4l``LHda8YRhfKdh6{GD#Q=23ZQ;1kO}|5Ny-QxF*-Bju{1cF$>J+sc;U11e=#5!wW9E|$CyZ8!9&i9f8Hr~TJf0y^ zys&w?>m`8pso^5Ib;qjRX_P=Fm|Biy>W_lH!HpXnrkdI!3K*waaCxmTHQg@C=(qMu zR+Q;FStD0ry!HEHV+q5wMpClN&W5mXvQAhyT4-W|PgVQ0^5>IlNl`FmRWGnUVZ;Co ztdu}d7Bg7*Cjp2v`p+rSdI3#gh1^EsgMA0>1QuPj19OXteP775SAdb?k0juBu@(jC zPh{pul28BK)%-XXWbB1^G`LBWtrn?^;Vz+brN1STHMGRnxgl^n{_-~Bqd#_^$p8Og zA;o3>o`F>AF@sS%_cZKWro`28jzZk= z?5|&H?F`=Icx$@rBlnEpN^$|M{GKn&+7y=W#$cyHkKbXUgUj+mE98_aq91@Upm%RB z+(y8te1TsnTn=AaIG4kK4!(qfzoWc%M2;Pt!9MB?Oen27M;n%R{3fMn=P@)sKEJAu z`3mhkRn+T1BSH*zX)D9jsXrie%4wbtYNfnoYfIY5ber`rivvSl;sJa|uXqPN3d4nE z(=g9Cs|@MI5`};a;Q+@~6V$=HKm~R1tV?%*HDJ2eKE;<;zp7R|pb(o8IXntUB!14E zXj1sZ{X==Z_T9;+=A^1gH~k;U9a0RSESp~J5fUs|>&g-@6U)`hgKNV<6o0ggaEi&4 z9?#GbdbX>jJ;(j)%7;>Vux71>5x9P7oL?%2*Y~a)Vjl9yK0zVN#{h-$NJ^L4B%KG2 zn)!)3$OORvr{J^Pkpjc&42c&Wi!c9^r4)IvA>wU1@Cb`FXH%|7Af2nSQ0Dm}xxP{{ zrHl%{>1=^&(a9~d@IDyItqX(0+-ltWPr}x^%W!`T+xYwd@Kxj<1$lyIEW1ox(oha}~6`HtV-txc6UOCg1X^BgC!Hwu-eClO_LkvlYDG>pyjpt=Sx{foXlN~kMNK*Olic2pyCjjO( zEbLTfgvFs$XoPwfzJDM6Kga&9PAk22%&XrON8MIu85JSAP;%+YZbv+b&$r{hw@JWO z>V~yDth&zr%&gyLRu&i;dscBkz|VWey?9~nY$C?uCBj)t$_)+~b9~yQEnh2|uiLYV zycsXGSR%n8nvN1jRLUwSNeHE;rvYs)=G9YbK?Yc>*y?=>CC}_vtCS3oBr`$RGOQY6FpBXXjW4yFvD3x*ZgZKt``$#or6hA1LmE-0sM-jbbs-^1J;k+J2-w z^&zeSR0EE`Xn!|>$xzSp@CCyl+HqFb3dfG=5)Y}k0s@>W_N>Yk43fqR2)t^>>6DBv zK*g7NBr~+~iONd@jzt2|v(sCBk|#TkZ8-9BhRn|6Tl1uhP(vN}A=q`MPL?G}GiUH+ z2&eA$f2jGrQ$^6&^Ar4!hlr6Nh+Fy`fp9Wjhnp(~e3NpbjZ81EN~nMeB8pHM=*3PO zX-a%L!Rh)kF78|~!1ax`8ELBcxR`$9Ya`NGN&Mm&CxotInWB>h>yztsEHH(N5|=VdIY4nPqB9lN2db5JiSi$a1p6mv zl8-#q*BFJOMbt>;9nv{pvUv$rN!8Z0(Xi*dm{m>o1}t+MuLcjEb_uR@DT7cDy@M-R zC(){~KP?P$zl$iv7ZF1W*MQE&dw&Uv!Yi9y`Ep;}iQHWzHbKy@BIzr}uwF?NmBy&2 zoYxKj6V2e*Nq~ymlsFOB3YDnnLsOPwX`B6#eP4mEecM&JobZwJqnfE^dZ;p~8jtU> zOMOeMwlbUMqw;H=56~hJOifIKR#@nDN>4#rcdoimGWm+c{Gj)&Ohy zbt@8jSV4)sAk3&60`}bnPKK~yiSQB}Iw|Ob(=U5`DN`2g-*j9Be zZi?UI7bVuG^1n&*eNJEh|NsBy$(%eWM#e{GjZ@_`JlFP_J0)U`gX`?_Mik4vfA8dl z_Ux4Z%FUXo>wqR5PU=Ch9kv%oPc@T_+i5jxCVnbSjxdU}gD^X~AGmR3LX2D2v*wEJ z6QS7X7S+uaVnB1Q4Um8Q`53UeM3V*zJhz0R?Hc1Y75kz1D2ME=-Vv&oY8L=(Ze6th z)2lg^!)i$}bpyOP{snD}sDVm9p$(xUw9e?$OhIZ2+n6v8{?2|FhFR?fN6y0@O>&i) z>@6qCt66=uOLobO$u~G{Z>{8h2JE~nYdT(1G=T&i+)3BLLtr!+6un`@uoO{fMiUd{ zC0brL2@CrY57qI8+5+2b*C)3MC6d96I1mEPc3%ZedjcZV&v+YY#nIRG;iu%P&??22 z0ggCpk_B=r0k6m<5>P`}z9A~IafGWzGCmJoa8%z0eA~(L*Zvev?N4ricmUirEbMec z2}hwsXhb>@7KQs)_W$tz%l!O$>T#1e=JM?xyr5N-BtSwA z-hDLlsHQa<H)@R{s#>4>kf}!t!kwH9~u4Ot*L@ zfqr_fnID4())2`PrOlN+>sv1}@Y7A?jWQNN3#&MXs~{AwnYOHv-YQHcjE)%zAkD7o&|U4A1gxltTxUZxIva_ z3WyTj93eK6z>&38*ZA|z@ZFRYr<8*YqP-?2X(J5T)~XUgg?8=^-~5mei}72;pi#+h z((xY9<3DJtp`ViSV`=_#M0B7E?bMT>sg3$MNEgsyyrZDyCOfASF@5~EQv_72j}|L$ zV{7%h681?TCdf-h)vijUZ~dtu@TRyNZJYqD3#oY9qqP0z#m*k>vFO}cZZSnCC%@J4 zg0d@A3HBFtzjm8th>FJFz0Z5SB_Zq}Wk(!`Ri60AyUQ5XY0)LSltn8u0~ARU5K=|i ziP5pI9^b!Z@@V_3%1ab}VC0AkrRLA}omhA?Vgi9dwG z$A`pxUkl+_mdXUcCOlGPWxak7CSV!s35dFNc+l(bENf*b;E?w%gRdqr{SLFU(xK`> z6-gKie}B=H$sr%bM5JQVmFolDp2MC&mKk}D?l(#pT9T+JM zz^x6Pg~OE}BhJ;x36pgs1=$Oon?J3q$m4=89_}N+4Y_#j$_^QF_vjVf1p z2(BaMu*TR+2H>dMOaL}g0_pMu(hv~DI!=@CRy zdlit41M89G4xFV7m>`ArrQa8S?c+_0XpMLUTaddb0mn@yQ4x*kon)+h5InEgr3+lU zmHptntjE0lA0*$pS4*@{6fp!#A+dpGgO_7)8Cu9)x7?<1Hu8Ucf2>cxt{1pXD@H29 z4CB<80^Yv}3i@os2X73hjSzU;`XZfN;DfN2(VPKL<=dBXfTvws?TRM2F?HIn*hwwP*+308>OCAslbN_4GOHT4{#|DE_Le7Wp(1_?k z5);7f7u&;OzY|dTu!HzaQZf{h{+f9m`KhJK2Nl?s8Q~;F$Hqh1yN1wGJE80RAP9?+ z{_yOHVaxn=pkhWh@y~*+uKj)$b(bXG1lF(IyA!z^bFepE7F&>G_O`XZXx2^^Rd{L6 z;pvg=YytN|R&5-N8+4L+K7)dPQF};CDHAaAsD>VHxC2_B*w)II#}?~LrU%_pmWPOCG_^Ka=={e%IuzB^f> zrM4iP&H}9+am`y(_EF}2q!tc+VaFF?l7{mY6#Gxnl^4sB=uEr61xM0J4D2)G*Y-MF zWWn6|>b25A449GIrnJP*bTMU}TimX``a--dqMD4%T%K}|vK?4vS^smOr1FgqfvSCe z+iMC4XiMJA&psm&DN^nOnqQ$m@%BTt%ijADH(3Y>W>wAFane3OSSV7Cul4GJ0L!XK zx;g?6ih{Z=0!<6WvtvcESe&cWfy0e4N4gE34$s(3A#u~%L$U@{hwI=pQysx#F`^AO z#kg_zPZ`(Q-Dv=cF-Dx`!wYcY6b@Zur1VqZYN5)0^yqul6-|ZS6nRNPiZG7M-!1%h z1X0{}=;3&dcWT~8X^L#PLZ!4@#J3P62xVm+(K2AgIYT}m6lH5!j$6^QA1&b!oloX9 z+E25Kl6)*RB-DqcP3o;dvuY>r+rm}v-Qwm_-i`Y+ohjj2V$V*gRNBW_ElU;Y zkv<`0K0ac0v)kKSVVy_fyh%VFfZoKJ*^d9^;DYC&3_;Hkd@?#cj=qHK#!P&hFTN%& z2TZMXZbuAXS?ifO9I#C-f^p()MWk4smmaj~aVPb;SdL=8O^^fXe-_|%f>?{$%f4zy zwGn2@j5-**7I9HNOo#RsU7)C#g`q7b5hh1d*|vthgdR~OsXcNmxLN3~cok;wsJj=W zzbwhm5tA}YX~dWqTI;xlsvZ3yePXeC0@9C{wy$wpI?{#^5<%2(N`KZ~Ly*M&^Arpk zuznPhm);|2&tk{7E1`a+e4k$!q$j(C8P?zhV|4B_@r&h{%(pjcI$$~DQJL?fKLEK`i+5|r$l?i`eSZvb{!-H~W((UsrynYx87y~%7FA2f z&ZynEHqw#YcM5m8KrKQ0b!&`d6EIXSN@bYvBVVJE!tV zM$$gMFLac$2wUwxolwt{15F5?X+i0pfj7)F23|QiqZdY59m8E_I3F6T4I(Jf*#-C( zj0+XXl`ic$azw_)|~^J>(0}oh}K6SbS@5T*ty+4A^YKyu;!^s~1tz z=7Ilnqy!l?2PZ&xe3Wm`L|`*NUZ0uQfQzno@XW;AzM{D9{7fS3x#;t#}q znvrk!`l$s`;-T^OElDFmf4nGoHg8uHN-pt8f zKP*uMtT}E*-RyH?W4*QlJGHfBk^-Kab#^@<|Af07AaS!Ry8Kx+3q~N)t^8r z8*ipAFUyzVUN!tbPRQTT*F2Oy#l1ruct3g`(N)AQjYO(ff{?eVmV#qbzVl7vM+Za^ zd!Q^Z)WmBFr?zr#YIyz=yXT71A#?0C>|Ted!Zep%9Jn+d-aE#8W=Uv_F*k zE1!KbSZBU%zh|4U}(1xvb8eW1P98DKIIPZ_VNHB(>CMjHmN6}0np5P}4@Dy|inK%G0H zvM}EUK_qGpdHv}Pi2TS$fAPINId-_n&=yc9LV|^${3zHTbNJS2_HzpG62tW0y7`?6 z*&|Ij5p=u}UTdQU0;05Dc%;&~LJVwK8m38VofM3^1SPe4dW%T~jAjuYY!-etg26UIJtvKhQ_O$CQd)yahbo+$Aa(N|2 z#1WI9m`$VjRBchD>^3j^iK@}6cZT)VebsahHhO=>0U(6p97}unU&d`KSZV;$+zJVL zDl&^0CBV15?CE*hze+Rb;wu0elQBBds62ncp##Ulnx12=-~8;a|C|6EQG)CB0Z|x; zts(yoy62_v^0D=C%5;pHFrRSb+ zSNYCU^t`k8@Al4>!4qCeaU6yi@I_^x9(Dj|<4Mv-RloB=z}eBuv_wTzs(eF&L2#(Q zXd&A2C(CkV0hrxP5NJfhde|h>jcA_pYeO-!@nihAI1SVb{P74>lY#9wv@I|YfOREIc{CFT)V89|>l^DYv6aFMMJvh#=FUku8`FP8yT}+0n z4h`8??7hk3;w#m==I<16y>swzMeF*?IRRh_bv0TX>mlc^Pjv2JP11cZ94>L^l4itq z%7|6*Oa*p?)7~u7Db$`KZE%BCfM#tj@;grS+*J_MBIid^myPojROuV&uSECy^#YH+ z)=f4*xz=8&UvVvJ&YSnh99QLN)k)&}^&9Y49U;RO1`Dp5(u3|Dt|&7n{eEjk4L>0C zY;i31iz8h|6T;K7+-31Cr?qO$ugEa}6gSUTGK(sH6vB6P>$l$jC7C;*<)BB32^wk+*^32&Cd_+bbDJtC(shz8sp`uFTJaTj2J;{2_Tj zO7ddfI+?VONW%*&*Y&1*&o_kMZRDYGHqJYDzh& zsTjv=U04SY0NkV7^rzc$QZl_%5MG*!@FW&c-7p-j=%{mw_d)?zg!@eIYAj^BI{Z*g zFOjr{&o#NlVE+&Id#VmJ|LO!Mj85^Z`ePgG8xd(^H@6`>t!BbNZ1c zTHN9;{GzxWuOBAS^SWmbUkMeVX#5zOidWuF7FcR7-;>zhXf90}LC)RBXZ_L}L2S(X zS!!m5Y)8&AV*uXoVTqQJ+t(Q)CG&iZ*=~KcO8CtB07q~c%EDh+?-~qdL9K-RoGZrA z_yj{iK9Bu69Le;cI}1d+ntl~ZW1*ZQ{?Z{szP;O-^BOK_zKeZxJx~o&SN`FFX2(zd z6L^2Ge32~VJXu)(vn{Sr8EtHSFw>(X$1dr zK4PzB_xo*@Bqng0PPF4Ai%SX4B!W>MB1nnQnD9@A1UGs+Nq)dfvw(2lhLg+GxCh(d z9$&+%+Pa}ry97oGB<)YfRIc{o|8~?TIY^DgLH0RzY;5vLQ;U1bNg}`&qezU z3GXGujkKWX>dH*<1z#u@Ta5%+PhsLEf82v>9&R@d<`D9Ob|)J2vss}FdX&zq5%yp2 z`#s(bSngVF-7c@Vr71}Y@qw#wW4vQ;vQYEx;~_Q7uB4mkhWB}(Cy zE}K8~{t}3}OYm`STMO>)X|s4k%Eaywh$6~yh`laj14(v|+H1(9<@@7)6WVQ;DlBua z4LDbL!P?AHZ>h7>0e28FBk?lG7fZ~8gm)+5&YAq+m;tJ^-3~>%C}Q!H7;Kcl!Z6h= zJl=lTGk-*44u9n>{3LNdKb)ki3lmEC(P<#B#hrN7OvdRvtrb6WO#=B8fu*8@Ur3?0 z2D*@2OEu*-g};^M9?fp!#0FDnPj%y(38ka1VsCbT4oQ{;E^x{;Wxt0=74)(xp0*__ z-AJJJKl=3pW3Xqrss?%0o~7*%Pm|+ad#y0BvKwNxjX)I{1IYV_u|2e2c9gO4rqoPf z$CrN*2GgyQ-?$+n=Vs4Bt|;eT>5?ml1iLWFipM0GrVCwp7WmN83?`Tq*ehjh0qw5< zarp;$sFZX}140E?4NfkfXUp@a(H$lA(6Pf`4IF(z3szIP-Z8$c)q5BMGKX`jc~S9v zF?jlkb@LYM7~+fb+}rMt785nhms+{}ssqqWLt3hNv!VN-S8EcL(n8Jde*H_68&TR= zoep8}^7c6Z!9YI0a+8atxzZE|oRIAn51uUg^LuN!h=E;e_5BTBo((@muq|_YK~U+! zb8_ba`dz{fzJA%#<^o|#Fq{!*z-M?g9$POpe`T}C-WpY2>;gd(Uy7HVInPv}2G2Uz zpVhT+aladAYIIq4AdaN8*G60E>=&boEsA`^o?Por0_H6ukt*QeZ#S6h$o(Pf2}!db0YU) z3MUEQ{(a8QNcA}`n$d>;%Fjj81;=-j{qDy_MObpZZ-!~S;^qfYZDX|1TL>B}sfK*b z2Q{Pg5gbB4#6|3P7($%A4B3`x28B-+qQqq`k|&|j@=Xy;ZG61ojF8IH7oJ6(E7EtM z311Yr+0sgK`iqGq1D~t`_z8_&j1?FXrx$kOhS*1zTF!ij7xdTD1H@7gmst40W+`SN)O8^1 zIYBj?Jv9UJ5;z&xam3UVyZ!|uS}5zG(D6*jdr{8tq4nDaFar^%th9hRbDLDHpZjLd z3~3xYdkL7~C_Egz=HSK=ENOmEo;K54w)(S6OU@GoZ5KDO_Xe!oTR zQ4^J_-Q9T+BJ=M%tK=|{^Ew8ZnJOX1JrCg*`zv+JBUyQS@K7Zy=AM~NLXbe3r#W5a z%c-bKUT@pQtG&0AY5|Bt*X4jCUuG~`KurcA)Y?){TT;2=eyr5Y0J$nrM8*85)4X7~ z3s>hqr<|`RZH5NzpE|+-;%|WS_WV8|UnYgi@`spAKGM0JN?Q{!JhkICLp;Z=QDh6G zaa>gwZ}esNhO?kW|56yUpCxnYicD@j$U?N3{TPMrHZ!d(g5haGHQ@q`yfi_RI1LbN zD$BMlI6aeAF)}&eDT_@-$D_J)Sdk#+rKo2uD}sHfK%EfC5~eJFCVHQ!aJkmiOK#EKxBn!kc--!IE57(N$S^!~gOr zuttGgG(H(nH%QqU(HSG;-xJT&`IC}Zz|=>cRrV{62?T(47penmG2WB5KLok>6PO3Uwx${IUntt_~t z6E+lDr(WZ~>J@G0|66e9o*SUMYfM8R=H6v$`U|bASNiH7x9;K807J5$In1{@?n4pZU42xxC_~UN0^Exmk62 zbt%ls9mD5QjNIjkGws{wCI+Be;|fZK?Oi?Hec0M=&c#cZwQVC4J6C(m3`vp3c_o?h zq!{K)ooG<(4ecd+!NZOEw&b26rKVVN#BQxLgK-52us}sdWplPDdx87 z3r(#Qv?QCOQ`=L;3ArbXW@I|ljUe|$2-4S@n6#icOjzIm00}lhnj;vB{~+&l5|a-a z_piCtwe_0BP%ESf;yJCJ^JydmQD(}GMa;^hE|Mb6VPCLNtxQIzRzC!6j|F3(q;gpK z;3iVV$+0R*C@xsy_qb)oMLbbNQQ7w1(HB#9H)bF^b*lO0v_b1Hn3N2YxkwM$ktWfF zoIri_9O=2Kh#7&KNW6ZujVOFL&D_GKi2mE`*`Lj(f{sW(>u}Whb5J~;FTBUl-VYLG znH~;UBy$2Ox=W@%0!q;2}>0==$3Vq#{Dy#ZasC8asMUZ zN%-Zi-MrSEAz~l0r8$!(gDwK*&c%8YL!X(Dy-gb4J;5tUq{Hgd=X>Pay!L<=}t zTP)KNaxPAjqPl>iyru5-NKs9N&{0<4NwZW}?K z^j8Gx%o`@d2ek@R0XEV={jhVL&W_#`VGZ&-0SMvj*W2p zVJJmWky?dt2qLV|Rjsd53iT3Yx_jiMH($;G))!Wy3csK6|8uwL_?P_Jev+Ts$JL$%{C8veu5^CCauf` z>tQkgU%W_jL4s~%5$CU9mTj6y#ykitl<<|M8eIe>jRYa?KIl z)SZ6CcOvP2|HE`ZFmKiGg{1Pk`Oo~l z+1DZX8IsrO#`l;>!|sewTc@_kyCWJyp{h$q;0H)3&QieLvQ>wv?H*bdKdPux9#8#g zKq9|wx$6JrK2Br}7s#$1wW^%qs{<>N!C~K`#yD%L_tjwwlA1J$k}!%B?8nUmGd#KQ zr&72nV!@BRaVHz8+Z+p!=ZJxGSIEGuO|t;NT?Dcu7^r@9+aM8B1L6)pulqnCqNV7c zcH+tV|NhGhP6sso(Oq>#lFBM`fyOd1{l<7HO3`2RCu?FMy3?X$JR+pY)18EfGdFs5 z#o4oJ3H@YqSFoYrmiQ;`iBG`NKRt@ul6F0zNRkTq}(0n~PO3F*)K?uB?^{+m3f5FNHY6nJNjwqqt$fFF$* zGZ@-V!t*DbXh8nNM^sn<`I33D3bM;EP;kbd$|!3$hPZK{dX-^$h`EC;*SOu)nxRQX z`2W(azl1WS#^|p$H8*?$uRfZ4OfPElnD~WE71r^yFgUYiV!;C6>%tRn#VegVXwx6+ zlfQ$zS;2yHqeQ2dmBIge=C`?%J%hUG4G&n;seD=U{${gMK3DCX4?#iB!YumZW;#~T zK1mgh=xv$73hTZX71M=_*~IBN%L<8zLU+EJa2NZIT_ZADNB1zdgV#)is+UGg!9PQS z15oGvkI<(XT?@ zJ=k#75U8L6{@<*Q6SkFHnT7IAM4Y3QE{?>Tu*AO`9uz2h5^=a4nw&Em-SZG{AR8fl zXFj9Xa6j9nwyra>FCaA}@gh&^XL*^8^UAN86gfT%8C?vGpQIW=&Tu~A$Leg?C zb}oe}aG)Hvmc>BSgS%RD{Z585+Ssl+0e8OqjPf_ab+!;mjEa0UB6u}pt{s!upNGQof zFIU8CTO9e(5UdCHw+gak7;wYokXf+(RS>s>=^Q9UH-ub?9u*%gsDMJ+6WmS4g%pWM z8wtpVtGW1rF|+>)ML66X%65 zt7&9#mLzBOe87}o!DE#tq}^81_qhJ7fWDk441|)$j@M(cR~J%A#NjUkA3&TMB+>9; z$$DQ@Gp{M#v-*t}HM-S4YsUgheH$={g&%G3bIDw@vzh2cqpI`ag$60gqV!knu zGXWrmzQ;xQukCQ$1kvdHI*hI5W(!ep9C)8u(1V-N^2;Lz+=MZWf+G<6Te!zCa~LN3 zWWZsofF`1su@Ze54kD5cbG93wu>KgCkkPumD0eetU~=e+uHL?pu}HKi0k;KFmG&I z#lx=hX#n6gEa@EzuSOx!KTQ6=^!a1tFshSPiwcZBph0@2yx3NL^C{RT+Y< zLe4n38)yb|0^S_{kQ{#K;B_wAp=c zdz&wELHUpQwMhxboHl?F(urp}wfRPqN6(bvBD?XMo_F&EDVc}je&~m^+T~^$KMN*6 zxXHGFjFA4?hBc~Ag&~^&V;KD)BCf*nH&<-w-V2{nvwT9ZOshKH4aAqTS!D~&^yQGN zO`ul}$9!B|t*TC%_?Eg7L))N<$AzY;{*sYs1|L@Yl*}PSznO*{{RqO{h-@@da|K=2 zWxDbDq|pv<&L8|+z4~a)Q?)nAWBAqWpPkjP+Dy9AUnb4rBNopnbcP1#VOO2UQ3C6a z5aKXCwlp`l*N^Ixgds|5-W({RsdxY3lA@`s+AJ2IHNA`}qH=eFs`D|qgCP6!%RK@* zfgl#c5R-3c)#{vPlkBh0+j21bUd_xM{QJ~d!(iOc^9Y=X#~IEMB+XGCkzuMJ5`A z9NAVaA5RzyxM=t!)V!m2<=)k6v%OlS*YMj7;Ur(mJdm0mi4dL5V0!zP4P0K@it5W- zIBR17-KajhL3mwxP_a5Z?7_7N#ppR<7Qhbo0;XC0Qy$yCYG-6Rb`r0FxI@zICHd7S zdGwc8#rhUnzgv4gPW-BU_1SGa!((?VmgpUtUgR>?nSG4#QzgR+yLCgVK%|_zR-YAJ z*Qw`qsSI%7Z@*H9Ej>|UGnZ-e4>3G)^HA zjXmY{oEXQ>(x*t%h|L+u!*U)f943j??-+Io?=AqV$pT|oejwBcLDWHye5{O$Bq)5YE#LdQxhi^+d-rTq`V_vekokLcqNY&;^#tAemftUwo^Qx30PzuBAH89A$ zxA>2o%yV^|ph}rMxqa@j$N@<8^mvqeTx>6+bS142enDhQCx5Xv`R`6SZ;&%OGb@n75DY`JR7b* z5v!4a;lPc4K?yYU)@-5oXSnANI_vnWv$6XbZRz$sA!^+s*gxTl)MH7Lz369+<~(lB)I&wtbZr~cnx>EE6!pFHutlQowA z?=_a8TxCjw&weRvGT3OemmSmCJT4SUZESNH1_nBmIlw1;T=tDd(Fm=n957*7mclcl8~b~kDjnuj!wr~pnbp&4H6zj|vv;vpN4aZXmD_A2sRi?9kdHokZ4iXI!!oc>Yp4V4-V zfr}pB^en6~;N36kO%|%zMAeH)N0*;sRYIV4IQ;9VlAG?ixKVnwGU9}ON=ELS&4C63 zGl0AdfzVl+S|P_2zo>IK<3OaYII0?Ckxtf&a*4sR3yKA#?M?EmFd{&8X3KbTZv5Cb zJGIK|t!}6Hxu%N$^Amf_hWj!Q7E;uNH7%O}6BbU_CG`YA7^sbK^63!x5@9ev`|GtUr}GsN~du<(`^TpqQCViMC^eqBOIeCzoYQCf~U4q0qtiE##12|!yUMGI^TD~ zf-r4HGws6ywiQjFQpr~UJ_xeDDj6b}0e&GYycb|IX6VQHO+X+bA8QW)qGM5}93E!a0v;5a8{k`e0Aub}y;Xo6i zo&KMeKzv&DkPRz#l*Ut(n59jFm3`GNrc8;dhc85O^}*39;Eza19_2;^>K@X>iS{7k zk1de=BrIIHX4w&9r6cU&+W`z~`1Tjv%cEl_J`g=muOrnb7nW}mp~`wc z|NsB;e*gav%KxBwI(*A^CK?gZ;*I@fTzx!7J1^30&QP|Z)?D>GnfpuXNv!izX1hQq zOR&ufBgGF~#x{jSUi0&D)=8GH&Vo~gP#x4{-Sh3{{{+1Zz_?GQ^Td;|v8&rAhIMcZ zjRm|E6hdZJv0oMV?eiXJW=WCD>H(gn z5xaF{c7loPLjBO<5MSnqAA!;+&%`D`h!flUKO%9O%*OEL&N9TbzW{<2_4#``?k9vv z2<;wKIJV_Qc{NXUzU@1^0tWSb;x`tN1@m(3-Pa_*|A0SfA0L%@yuB>9N_-<(1&_*Q zS2Q%OL8Uv347Mv)-@yL#ZpFTx#GyW_zjf!eqpZy3JI90G4?h6nH7xB76AMhk(iop< z{eSxZ&;0v5edjVv(>SVt>M72ZyIUs1vb$BP3r}VgU$%*U{_9m=#8#wyaA)&*JUhK! zPc{=d$kI~m_`5q21uu)R&0AWWFM|pQAyO)(;6mANIWH?qu=t$(=VA9609X_qN|Kip zs<0qH3dq1KiGqcq2;PG@=dyuP5F80jD@P#j)nI7yXnD<^GK`8$pIN{-6%(%P!6-}2q&CMfitth|i z{I5aoy#+INK5(4x{NRNULMS*%cuvwvAv|=lz092IxwfeB+wsK>(DbV^kJ$&Nfe>{m z@X?+QYL8NOgQ>v3h$n8fm&G|AilUxEfCyo>p2soGtPw7AiEZyx%wEmA>Qh!QIaHqR z7jX~NrOdcHH0NC}BmK%LB-qKi9mB4|`aPnp-#2r5pr-^s4RsfMz6O`v45@{v&Uc7qmvb``pH2s2~Lq~Qc!<1eKkb3T@BB3)AmdT%gfI_fSTXU9HeYah_8 zzn+(=0=_YkgU^cW*Jwy7B%(D}nf~5Vj+AIN@#GfMhU({@g=oEVH|leAr6Gmu>es9!ZfFya-;;zL>!3Q{NPNuw&J?QYZ@kZ8}0I$Ps zs?D%uoMvG(41BnJgZyp$YFrntIY z5xuWcv46Fy-`!4pUrEwFOfRq{dVTl&PuX$zU{%vgA_ej6;0d_`7e@sD1aAD6TLHvT zASSiRIse^sA>rV=PbQZ3vDKGDvLlK@VrXF4b4;cb1F#T#?+QMplopV0Wm*)v;S2Hyy%PAW*>h$R@v z_||(|u?0|hm~D1g^5n=7{TK=e2-1U&IpYmk3MsM7;%cw1Xe(p(M-xK_L|?m$mzSK< z&W1ME$*?fB%i-q|{4`(ygtFS19>m!if|EKLi?gUqqWlDLuNyq{Ds7GN=FCOcs0S8@ z$~!CO7$3=71Y}+j8Z>CTm)wlXxF%jJ++>7fcubGVRncBRFziF^OQZnW23mT`Ug9sDlI&qFFLS-Eben;;bl(ptd_&F$HBXqKTkE zn`U2eS?hr!W!BHw4t|VI#>T)t>{$X}rT`^z+4h@qLT>G};&*r3?)qPELhwN0yh4)s z#{q#^bLzm16cH(MN7?qD(V z*~9a&bfnn@x$Us-+-!B~?M1X>4cH`^ebre`t~c>G3!wN!E!Nl``q=OW1aVkFz;gs5 z6j{~oWG^yJ|Nr>+|Npc@tDBumcBT!6f$$$q`w5#mcY&M@#zE^qpi8{qCh=!(#CcB9(CQT+Y8U4DG4=}bzTgFOv>jSl+>Lj z1^NHkCa-C`^C|^&^%gwf*!E!o4FJWIbPh#z4W`y_qchtF2E1AMdGPR_ZnMXK=k#Ll zN|epbYEY96HKJr@;b^0D=bQ8^77<#6{d$SQ652T@ee+;anr!{K7~j9qF>_GG5*E>~ zZvaB5)%z=B-vI*HLqOTsWwc0&hG!TR+dU-h@j2QR8YBt#pEla*!ls7O3f%EQY4d83 z#V_~^_IDtqLeQNbIae3BeCW(W5> zWVPWLls;lP`TV{%W{Hg9?~@OxCI%-BU^K7+ViZ~EOLP>()lUV72`CZuzKb^vG2 zgi^gicakfCqdiOUUxNmAuj!(0ut7%$VBkdZJ+c zX2pz)q>RO%ZWw}rDY3L}rR3@KD*X`o0eN^K6lPl1DZ3SLahLDrxIg&#u?(VjXLi^M zs|x7IB|((5HkdH87!4|sF+?v--w21+5E?owN7}U;RfwXP=g5D>gV6#9>F0;xn%#E<3F|@p0Kh6k=DVs zpEPXGh{W#pJOO2uQ-8Dfq%GbKm()WvzKc+gosArRs`kMWq8R6UQy*h9+oOTf%4E3> z=I|bR^!G3%eI0QBh$r{H%j7R*2}OlrQf81lwD9HIutHLY{0Ua|t$jJTwe?Gm`*L}@hBw%E2cHdgtnXRTr2NoQr&;Sov zDN0Ibb<$i@8Vh%pi{G)NsR0lUg*Ig!|9sXCW=&B?5G9q0W1% zsRsRq727R{CmiRBkxuHl;gwul;N?qAM&l?rxgKvD?Bd&&_-UR#j%&HMcKd2LqUZO< zjy7H9g(KnmcgU#;U)uUAo^H+n;597lRAGpNp)zPtdO;3_^S|%^ACLZKacq{9N>3ah z3aOgLt0y4>zSJUd3B1fhRuL(D_2bap6OzT5XLPxCWo6pTh!_|cv1WA+q10q*fs64~ z*nkCzdwsG!Ul*9M(E1*C+Al;uf5IU*bj>Qo^b+H`p5yV{7p)P^Y9+G*yj*so{@b{Q zfA6bn)$81+f(~JIlb+gbc^~_%xjRj4rUR0%8R2-7{nCEtGx`hj`b_DT!zJuq*OC5 zm}c#E#0$3LPV*UaT3EW`G`HdUaBElaVD=2?~+69)bf9FYGe}1aF_#(O=?u*d4-@A+k(d4Cef9%qGBLGI7bT5uk+W+RK>Cif1 zr#JwV;Zf5AR49@B)S}f5!13i<$^E@_Tm=ABI_dbu*E#RvJ37V%(CTYtzT*Dz9O<=^ zhTFs);VnMF4~3zV^O&v{kD{_y-|}9~MX0Q=uo; zyPAi&?M}@eR3$@cnSaFq-$NY^3sF2u@C^#D-j2t?gS~M+yLMdkr&KtE6*Qgr_EZ&9 zSxL-lLn9n0qUvVayfNC2Q$XkG>JS|{IrzO210cf?1^&JoTQwsHoiml)vH-}&P6XT> zeAm2}2y)56rfXr?2REuEhaBp1W=6x5x1dlOv|BXO?w&A?8)0BFoFTf5ptsz#R+Gt(ea;6m1zQ*t zQxN*JY67;-?0Zj^HZUfa`pk%84SWRkCD`uRv3b;DN)*vqwSZfhHNcNW(yM*5y$5Zx zw_kVmr~T5jR7(pk`JbowB}8nuCbr{0{^6eJKe};$0{kytF}Yyz;;Q|Nr{2Q7r!!ZxH(8`&YdMlzUA0&dKTk3o5VD z&^o1n04!lU^pUMfvS?Me9*hD~N#Xj)$WTaeE+}6h-vcSBgXxD&fLwvH-*V-Lq=WyE z#N4NF#FNa@u3x(%{sp{PWC4b1wZ?ApL578yQ{;yJ7~8$iHh@!iXzcc5b#QVp&Wh)* zL7@lI_gmw}it$0-AuN(wj-T-#j30RMM$SsVkRuJA`G|v{a|1Fj`wtkoY|dcjmV5NY z!bW{J#1YO^I3c;V(YhrjtSj@bPqb{LWE&d|P2E`usw;Q^XDoWIOTY16Pzo`JGi5>B z%ZWRQTY`F0&7F`qe}XY4qAQ?b=Vb|apI>Sg<7xynqDaPcP9Tae4Xn~z0douY_gf23 zH{O8#qWro8%5ZkN^b85 z?f%}|b(-V9JgqyeKI?XrN{2Xt*~OBrEV_;4m@QySpfzT0JHG=1e4FIJz}p$U4e}&L z!L+uPtZrD*>1x&I<#_UlVw53N!ldA5$CXBmI5u?f4{lOav=i#yV;W;y65=?(r{b!zAbaG6Z$TM?d#CPcX@)(iR8X52f;9bktGbsn4lRJ9GOS6b}yaPZHLerfajz%X(j zm}g{wO#KJ|Y@#%ARgt^x!t@BGe1|mZ2kEQXrJnQ+v5TVeXnexp?O&5A^Kn;C^+u46 zPysan=>b2P7fb@&iD`hN)^z-#<^7ldB+DVZ_xZ+DU)Y|B=fa^(0&JjOe&+J)2@38p zm=`Y)*XcIlQ(h<4l)t*}BG5MK5OZozu<8d0LSWAh_LbVgb7r=IP7(6RnnaoDX&lh9 zeXuK*v%A5GwTOP2ffk54BYC+P7*>X`CIpuMs~YX1l7RXgRHc}9XhfgGn>S>UU6mDd zp3{oS`V@k01L@>)jv0YN!k$7UyF@7k>G{oNiu=l}tqPaHabAt8MQ!m7OCdUR@MWYk z{Kj=b(mhPP?H|RcxT%364p$qB(J^N64aSm$aMal8;cRobR0AW8a+2| z0nvP#g|)F#>TX)6)ds1Yv+deQ?JFLd$o_rx@wu28bBN`xcxo;u3cRPt1CCm3R99l2 zKwq7f^np9{u@s^c0N|jZT=y4op%xiY=6LFOf2TsrZ`*srnDYGg@Rc;1_2go;cbm;E z+E7Icp0j=^(T{%khn5N2-7U-q<72O= z7?1b2IItCjIUGQ*4@i-6x7z{=jTT^5v9B%?jWb*T&wmADXx55FXh%Yv>ih zMRb^lUmY!EgC4A`?M#{Ka5!af@o>2ACC}j%6EDVHJGXsFY4ZI2E*E;xl6>?#^hm>8 zDe6_Dv-TCy=G6GyB>U_9sJ6n z{0~#}b@M!C-5_y&VmW;HKNg7mIquTNjAtiN9(z>Ty`dt^rx)Rl4q;{PnIJ~mhZQINi1|D^s;2pZ{oS9i)Ck zY7jb```>L@XbA3>o?zJ=qtg7wM0gxuvX)Hao(v*yy``SjsVtSGgv1ieFZ{RGL-Ka| z7w)4d^byCo`zp=sR{CJO*QtU~$9vqNY{i?rAaKs}rvh_NBI22s>fvhGp@N{~_594R z{v3|jx-brN7h@3vC}lt^we$CbJo`M*z=l4}#jh#D_%UvkOLftfLTvBYBgzcq!g(#8UQ4zbs#5WyH8}nh!RuNu{JjQW$Gh%?w3k%`IS2^KlhS<8qr+*W4wg*E z@(h<2i_!w@Vgp(RjF4rQs!Yw2vh}Nqg#z9n6;3aE`4*Y(J)Ya-Hx2{2M5vuQeAnYc zI|FGCc#q)|z=XTJ0JRS=Hv4C{$LiVx+-+_9<)!NDU?A9^9tZg{xt!@_&i8(ixo5R}5?#)CD4f4OFyn@TikB zf}YD}+n-0{z9D`w@Bid!yYf6zz+L5GoaWRD^Hdj6^f$EZ0Ws`-eNXTFvJ4IUF-ma9Jh`I&qn=O`fTP#BK5QcAOYXAY6 zfVgX@r{-sU4`a2nx47l&nK;%Lzt7kg+c+04#I;ydyA;@W zFx}Er{WiGU8&gHQLiSB*(e>>FrZ9(eB@((vk+t-8amY%LVIt>_9BNUlQjN zYug4DPcWr`A00OUR}nX#Y&C)&6(4;}@{_*D3Gj&8%#_56k~|3{K~?ft@1!DjAg(B) zfq@hT)!ll=O9r1ugH>XcL#Z?Qh!G#U2?>Rn;2(Byyy*HRkw+<$M9m73&BFi;zg^e2 z!q#(;Xl{ESian*|HRBePaOw=1)SOr7TMj(%W0o;DP1iT`rmdz?{2Su}LYZD?2{$mO zr&JI^u-J%GFrch}hq*P?|Cl+380iQ9LQsz&^92CeI%K_Un8YrJWz{|FGBp`HoI;Nu z-H<0P{99cjb=?_(GN27sFio*kE~9C%kfDx;6LGx)O8vj$lX=t?5~*&J=L%t46POPA zpUz2~kM8J_j$kP6*{1c9-sFJyTNx6!cfCMcF7h}sQKv=uqPWnc8Rw*er^#w3hq=A? zp40(w6WWcU{{letBi$}>@B7-*X0Sh!vcb?R1us0UkHh>gx&dAxc38@|uqu0&YIfA1 zK=ToO8~8CFmNVb4SR~+0vob$8b`k_}Hwkg>jJt`YB7gjp#8u)8P*tme%&oc*FP<=U zumj=@G!!O+Csp2;o7XiWmU{)GU4d;qsd{Y#<0_)p4eCzI1|i&LH-2 zu3_BY`3nEK2U;CJbw!m`av6C}c?pDC2`QyJV_#4oJZBwaZ?@T>SdK@(-W#r8s1Wi( zi}@h^QP9CZs&)~ng*+TZv{8H=5JE4gIgd$CeJNb0ftaAJJE_q3@k=}$3#4Jt3oXmZ z5QFmQUX4flIue9AaY2)eO;A04ZzY$EyY++F>$eE=v5J7Nwe$M@Vt6ckrmx$osaV7l zw3RVvS#k~7>d}dHNX~3mT(xr^k^r{f%6CR#aozc_jC z$tPcNOXV=Ou~gf@;TLg5S?c$uPX!I*c5DeBx)Na|V#Dcp7*H$$X0O&*EG zytKa9PDAORl=^4WEWOW*UbFI=lJ)Nkk`~U#!#Y{}Fda#{X`c33df>gDdBv^V5Q^P0NUGhYsXR+O zv-Ikgdm>rZiD6-3P$6Mr%d3Hfg-K?zxhE7z7#Jh~7*b1tD@(__edLpjjtduuE`2v% zF?4$ z8`(%Ke?_%sRNw#r1l0ka$3!jvrC?gQLhv`y{fDq}cv4e;kxU|vm6{qnx`n!Zh5^P# zX6%{P6*GK?v$z}dd^iN?!~5f>-7~-x)NRRP)-wfwI%=&tw);4=8I-?kk>(+|zn3S+ zE{ir{g%;6i3s{4rv74L;Th=s|4_rB8`*Ah)`W80;Bf(OflX>;**|3)_B4qELq^KeC z{ROtwu|*X#(WUhG-BOV9JOo`&UcJX&;zR$J#MjRScAp6iDIksUP}zMNu+QMPTwNr!cr*A4 zEZ~lh(10@CEA4RM{0~6L5WNP3Q0!S_qyL98!2FjzZ|U{22h_o?kAoBBP4DHaa?(E4 z$r>k*uwYGZ_cTN~p`5M;=csV+9|fq%02kd_tajvw`YjT?Knpyh*!IPs$uzFmYw{8! z##rzD#k9gd{V_hJ6~ADqkFZH-+_Yaz2nQ>uYAjMcqNx(69Rz(#;DE&ut)xp1Pqu9B zAFFtL{nZ82qK--S07gA^)eb%7Q-Uz$MqzQSYRlMoYmKp)ZQ~dQ`*fR1qD_fJBHMcNp@DX~npd^jc zzi_W-CVKErI8Kv8lGAQ*%b`;k1Cc5qPn7RLY$aZ1vL-6QvdZ2Vzt{l()lfx~3JTDS z*c;_GS(Da>B6q;vqF@~LnzpsUc)o6{urXJObx07H!kjkyoo}M*qEGoHFj(I@zi0$# zIP)>8P>ejuo~GG1-j3p?nt3i<1Ya32(YB(aGEpoRo1iks#dW(4M(Tl@J*j{s#t1CjSE7N*F7MV#xJhT1?7?GV_Yw>oL`@wt@cTJ#8ZDVW6(K}Dw%JN zs+;24s155LYSjOW3dJkAROdGKro_Ux`|#u<#4Y~s5HZd(InsljKfT4l%O8CWyu&DvMi&xoxve>Uuw+H`7TmPqSxE3ftK7LCPNNOG1^@bkL3=Wmi7{H z(i9%4!G5fI0Cr|oM)OHn;U3!r3zvx`v%>?FC6eCZ@jSlS#3&60AvD>B%8_e$n!K6ACrDuD1FD96o zGdf0+j_=huLL?Brx0s>$el(1{e zT?g#|;x#PkO$wt%BYt)LzxsdI{Uqv1yX(1iH>&T7fL9!@RJzX^!K1mgX~R`%k-W*p zE0)g(`}7OSruk3#zdQ2Z&g_#+a$}tre4Vq2VM-TNBuq0NJiHQ3SoW#d5|ylRmwYgC z`^PS*`B0^fd9)&epf^+36;qyDa;St@goILn(NkqjIaQ(rQV?e7);lX4*4H^E_-Ulu zGc?TFyyIzBz{%$ovjAQ$000K@L7K@qF%kb8%{$ow`oV&?7yWdxh>r&8m*~)eU7z?2 zN5=Tp?+kG96dKLDDH$5`R-#mEEm5P(sP{L~%ga3IE3QW{z;uz|zCkcyL0^VdFK<4z z?&JjtJDuTkPET8b-a zkmTibj>mAKN)N|B!`d$n>p!OP{Y@(BUzzV4)wyraAmpF60-T9HuZbo50YPz`1l}4J z>u4BIu-xv;-bj~?0YYY)B$GVb#X_o@7^_?-(ToBFf0ibZ1WYGs69SZddDW9`iMuJm zEDL?ObfnE@^gKLQE^YG*t2n_|qdS>$>2oc z<(J@3)X_$=ezZCz6<)JdufO!L)ZmSgTT&vpm|NJ{ z5M&42Tp(JNInX(@>63gRvww~Lm74K_tMR)m7t%nJ2=sDK%!O=ShX`Bz1 zT^dkUlCp5IyZ(l=jr`}!X=Tm(US8eQtxXsCpD(tak#;+He*K(aB)Y}ue&REHKkn$~ ziE1CsZUKWNy|n*gsf|*u5k;&huFTnoVQhP_JwunM~KDJ?8 z4eNEnJjRAwS#lHQhWMtH%>J(|WU*^wavZN+<;=#e7bBSfAz#i)!;#deu>z{rR%I^Y zLj8{i+h8FYmtDP6mQAxgv%9$K-}IS6c?&_NZNg06Y(tkoNRt3KBaja6{Kr@Te2}^; zsb4g|GP&!|Tz_rlBbksxTtV~X)N5MQTZGPd1Bqmmp^ht+hH>(@T`##&P!LbKOkvh2 zBR$?}s_?Y&3Lkn?8`Ne=nt+{qDBR=jU?g}8?qMN$X#3%SMeT-3eduQdc^7T$xsGP( zIil&*xbs0ETb7VMxq%ew2#DkTU!K>^&|}Avv}TD>Q$0(jd!ar@Kp&KC`D^ulHS>PZ zw?lRxifiM&yCHDyn&(8mqtQGemiFE6z$RL!U#=ugxapYyaV%khY?F39{h1>;f0}3g zTOe@?JHsIyr8N!b{2m($06tYse9qoAJBVXYVE&e)JxhuMtj|;Y?p9VlC)nh;8n?Jd z^e4|ZhbUF8y`! zAl{q)$}hH|&6Gdh#u4uteG@K7U`cI0*TKXXFZ*rL0yTY|{rd&?`+R{My~toly^OLH zJn}>i?>}Ndby2pC|A!)(Rw^~z$g8fJT8CItOZH!7a9naF&L92&;8u(RHr;&b-Y!IVbt0`cNZQmDtNk>7ZX_ibbfNn)nnt?e@!nGsXIbf-)myfv{mt-F3(YfH&fP7) zjuzrX@*emanoEjcbBYz(r38z#Qk@{f@vcV#LWp|48?9k4t0pFBLlAqf-86PtkD~CX z7yyd*lb5z9AEtR6#P`>MLN%lrhCiyw@ zv|n*UU5?ln|6ek^4ZTZaXJ2T~GGK`?_tY3oDK(f*rhW@$cLB^v%}8s~o5v)1ah7Q* z?82+<`RW?mTwDLMZFjx{grpn8{~68vx3O?`^Sk{0yS%OYX{NK7tgTWRskM`;-6PoO zu^GBEbZh>MiT(@in0OrG3J;^(Fb?HlZfp~*00sue{$wBQvAT&ntlGQuju-@t)RUz( z_MWziqIuelcVlzwhI`d#S}ynp+tj;Sk4zScS~-(m{!d%1IZVo;boEAWKj7fEm=!U$ z-cvAbhCiSk^=G~R=a*U?*4!OsY)*-?j*cXig>h(YK|m{*5EC^7$Ny?6>V-%a`u2K% zKm6mr`#NvmQr9{w^E}0GFqu^_#$cpHD%mx8o9^KRPk3C!hBlplpLV<5N4w{oy4}Bd z)-&FEpqSV-ko8BW^2j_8*rGh`1Mpeww?oamBt%co~x?Y~TV8>mAbS8T%IMx=& z!^tK7owA%(P!3cnV`Ri1e>sfO>5#K9%(;epFah$9*6?O$_ruv0M!EUQQZ=Al(I)j; z+NQ#>q{@iet?zwijvthoyi^a~W~ z59IYk`7mrb5GpK#1QIL%j2XB7Ha@l*3jj(_1YOlR71g3<&3o?eG7>iSAU=LogGoSo zO3|v7*uOe{sKxU!S_qG5w5LkRb~@ZHgwmo1Ma{Gk+eD`9T{BGp;KMep zTBQZ;0SW=Mh)q$PYMPGZlf2iT+w{wxPJ$O;St?S&~aFjXjSd$G{gfKnoj3dBNSzIZc$FoDxIMhLOanvssvkQNK z)N$nQ<~%cS7KuY})4@U8s3|Nbz_$-BD_~i`@@8_JV1}o;W|&i!jFG+Nf_uRVNsjQU z3%}MVT!Zya5or5Q|*egFR}vb7{BmhE4QjpEm_AS`%AYk{hL?> z2n~cEtfEbZekz!)lUEm)<`s}pQ8u$yLMB0}Ppe-DTF#{8;=W=-{a#q@UnG~&q;bBB zP8|guFT!6%$r-FHnw32Dq{nmj5dVgdv<%S&4jG8VWHP6PzhV}u>4^t?<7L8nK5yz% zHR6zS7taZX#;oUtOiAPee+}~VRuvykJNRZ6qoqkrl?@E(VNwl49Ale@v{Yo>{aFKF z(Yy#u5IYI1Q8_hM1AO}770lT zqaJCJI97DsGo_cN*gyY%PllI@s(dK@)lDC?$a|7oIT_5<@{GyEKFsum|9$<=7KDmX z-wWHRX0$CPDK(4@A{`FUVwz zh=**9JEE(1JO9dR%n(_oEL4XGHc1n-VslO45EzDR6-B=o)qQWbPfE0d2xxA?Kj8tCDNLcDDzzODPg~g|LNG+imeCN;{$-%rKg&tRNn=FfEhw(~p<2 z&V^pv6Vo9dXr*g;n|YS1z_scfNr{|kAWih948qGae8k!;>sjkyL(WxzvWHv*YibK21So+j-Q4(avH38rRTh7(SR}0I zrMNbV8ZB3wB7f{NFn24L zN0Y;x8jU;sF^ef5!}?%zb9zGlY5}a5NW@ z=s`$Pp6{tLJA-?TVM^g7lPXepyOun$%ZHB`6H`zbe_FAh>z|gz?XZ;vt2#W5YvlO( z{r295c>sO|7o#j-ItPNl@g%oo#Qq**s%^E6RuLLsJP=2r1=@&$Hlt+olJW$OqKIo9 ze`Z-t433ftNoh$Vy{^)xV^60ZlX{8gN-!+f`vjG?*a_ID@k-5;jRA zMR(F#)M&5dD1P;tUXlqYfptGclqfDykcC@MY0uB{A*r%%M@Nl5SLwG?>ibB$vlhut zn8ES_?y#{mzC1k__Z_y3ZSs^#nPOi!dv;ASXp&bO<;5r{e}GkP>c-!3e|7JSDjV*d z!OvBSy6|F_%!>HNhDkjqH(E13D!Yab_-EA~8$x&ausdR731G@$Q6ynhB~Vr%)kwh? z`@np`F`GbT8tx1`VHcp{l!G4(R1EIONkVZI4h)Y!*>9IGSL!p1coIOp9AQ;)Rqkh~ z=skw)d?*e-V-IdPC|Z3s{Ie{sT#asgR0^q9*q(r16u9Zzl)eA(T*BRwp;0Ce zgq-@#j*S0dah-&6%&8oOX>M3$d%nfh&IeNmvzc_0u2GRe4~IpmpeNA|;VP|eE)2pB|ds!}OEXmF0YV2AFz{x)06JS~cr zYqt!NBo>>~2m~V#M~W58T2q|FaAn7J@Xv;V?!0jIO$##!J1u@KnMew?(++pdzwMXX zg>$hy+^R#z`y`^~4X)DxQ4L#(DyGnNcLNFZ!yA4+EI=K~{;~D18nYk_!Yctc=}0auyYIOpWP+^Gh=trFfr3L z>c;*Bn_9)BntCrFmebQud&P?LCFH58hwi7CBrTl4a$nwG4QN1#?{v@a3bTrfL7Z4L zRnuGp*R}!n(aG>q%7eIlmjpOEXk=}uFH7IWqZ`JLCr9{7)~}4a>CY14G{UWO2h)Uw zETZx)sJ=CXU#hf|$eS*dkhNLD1ZTX~CEyQ#6Vop6dp-XI%O8E++q zD0q64$D?)T!8nz8c+b3jg!N(ZG@TXDtHyzRbXM9@ocuNo29RBvb>Rbwf+u)#4K?hz zxglrUV)W>~!oqc+)$;Fhjct14%}>)j8wv5`PyycktJhU~bQ8#kp>d+#y5qleF5!d? znFu+I7Z&N@#m%ds%F8{Z!PI|)5k)2Sfc_G;zGANdtb{3*PCF7*L7;}zbkV}G7Tv5-=kq)6pWa%M_zEio) zdYL?06IWjx1J{JOOsKJAh`N_YyVpwEHUoQ%Mw8DlVG+et0q%q$Q4)1%v@~+=J4FEd zK*m8_k%-jqn|87MT1i-d(%=C2%_$gxj=$u0Rw58?fw)xR18rWU0Fe|QNuC&y^EBdc zk~r&+TIISg*M;>$GC+u*=oH}QHHWJB6*Lbb!8A1R8o~{rD{$ZUw8uxOPFwo>4i_F_ z=0boGYR$(G<}Zx&NbXHxPGnihOJS$}vQ%vx5=C{sd9%Rym#A&;aYcL@TXuQT@ygoB z0}Id~rwby3ar%$%iA)w0XUm$KM|Apb1)(hwz3A}Fg2(RCmMyC6;3uo0dD3 zP^)HJ&P1Tt2MEV;jVDqfn0~c^TKeuTM3su5?$ejYYrm&Bu2QlyqCo{6em^2c9RfM) zLD%Csd4?afg!v+A`^5>3Dazf^NkeeG-;Mp|)^Q@(q{!^;WTwf+wl80W2#qvp?(P$f zBxjVXo%W(?h20iEzX9`Nl0KgHo_kr~Y)1#?of98_6fRb} z1fkFTj(_*x{p5Mp_nLLS>^f3w;%}65Ri&!B%Epijv)MnJ-9a@r(!@oAf4X3gLQqha zn`My{Re^$ng$fD?7L{qPg$oJ>f+mPnETd8>G#GkG*Kka8O@PL3lxl-VLiRc4Gm-p- zh*Ar&l-l-r4UL?P%e^l=isz% zkdZ~^G*vwW=YOMxc%kw|h$niV@BZ)p`ERd%tS!B&=BVxPQ)YUkG`ps-vBPy0G+3FU z?-i+W+%k+`i)wp9F7hAwuarV^s2Lr~oEy@eZnBKu% ztmT1l213HBx(N+KYCsvzU_(HfeNqsJsx~hI^w%nd+G+5`SryUNC~Lo2?NRhGf|y4( zuj+)m58dG62fE)=4O6+7?&dS zA2vpIE8^Gh0Tpc`5Qq&P?3{N9z))^Q(K%BTTaBRsOn{h0nfX=OV}d}T;cy-xDKp%J zXgj11$YA8-wfJ?J(!xAh>1m#zMQgUBuvBZMm8L!rvvXHVfMKxUo%uL|+22zDY%hSm z_nZ&78uFVU3(&4H6w3_r<#!S1<;DyLghXqCC5?UXXVYn3&@aPB3H_z zfHJd_+jzCGabe^Sl|rb_#tpCOF7c2xyOa<5G3|JL0d}2N$vh=Egtp_y`w1K+8Z}sY zn~7HA#zMCm6HU&NYko>1U^3dfkl1e8gjGuUj(!T)k*k`9`kTggHC^ikpEVVn6Tovc z$L^ZUy`1=UlbvCgfv3EqqeZ?xMXK{j?_Xyn4tMcs#PBD@bgc{uKwR2ng#2q=IgMkN zQCBxGAU5KXW$-Llp7?roWhLEu6E_3VoC5X-=ja8&K_PMx$-^tm!G5_{;3^|kN~R=< zc_0dMJWsm(Div8nw+#)G?~5Uw@YM1-0Xw6%$38D=nP!yv{ePFq_MKKmg0=H+q%r5YRk&g<2wV)4${z1D4uY#0mN#Bh>t(f zr&)SR=a0a^8F?e4(MEi??Q1#bkkCB&`0NXcl~(8`#C=VdHk03aTsqb295v1tinYb@ zo;Ze)l<6h|JWj32=qAH0&@*%DdR%mr_ujF2RAG8>)vMxt$13lq#W0AW>OC0K$QCit z0u1k*suw@Us)#p#wnY|Yb`ZTZFitA#MR_P}Kkg!(C?uk;g%Gy417G6b%bq^0-apv< z#=!i9_$`r3c~z5o7wz2g3us$*6qnTo$Ut+H3! z>Djr3W4$0lXQfWd`*GLU1x}@W+E3Bnf)^CiSv48|p;BG7ul_R>T+_hv=Ny~=H3@~e*bBO*^`L-@v z%8s)ZT-RzB<6}ogizA$sL~bFc;O?~5afYV!Yq+L_+)6>`@E-=~zhsitLd1UCKbG2` z|Mf^HSD!J@I|A4QAWc7$qR zTVamc`8&#AOYysL;olQ4jq|_rQghWKCzg~wHa(MeW;io{8Fh6|>~lZX8$~)KHh@ri zw|F*?arnoH)(x=6hT4^5kXzaZ)3RP)_>VV`KZvcc(W)FKDAq`CyqeTYwYiMFFa9CN z>B2>K?&NY%NYh5*$3g9>+N(|XSWkglH8E4Wtch4r11^!ooPDBvE`V1>tt5o=IE`83 zSoz5aSE}NYH!3J_7?LoVQz}#u003RM1K!)T zM}RR;Ic5}IcqAo}TDV<(>k|*4Ty#>OSWcx#aRb*$?%OlN(V>sP-g3g^TZ^@N)LXOS zBgfSk-=k2v%x-VS?(?977sLiqUEsStp8-))z<`xmEP-{5cD@)>sz?IMe<=}%?tJw0 zK;W-z(h6*=N|N@^nLPcn*Bzu4o?stKtJ}|jkD0C9Qa2^Cb%ZnnUpI*Bl1}h7H6<$N zrQk$qN$u}Dy(Bd81X9$B-Otoy501P!B3}eUNL}?@S2EU00+sl$5!CyMoT!(-A0^}Q zvorb?r!|t5hIjP3mVGO?zMXnH8@$aO-0+xJPFiF`P91AH35nXsI1iVmmb&og0RfeN znnixpH$au+(~UIRIe?ND=60sZdDO+mujEw=^~sHEFP}z*1YV3^Dt%THx5&4;n@7tFy>G%gncmB)-#B|kVj;r%q7SDOhvn0#a8)eTvAtcxRY7ekjOlBGaWWx_uD zUuZAesnu0OPnJxncucfH4$pw@`oKwI02l+B6$kw)j%9Y4;{+V2t04|^eB02?8eM>j zfZ(_3MM`c`M!X|1e$Ji;=id#bunNdx{nfl+G<`aIJj@XkqOjXIDsg< z1+jxpn_zi98L!GlaA^w+u;r5%!8Giq9&&i~B|?j=*U}N;;SCYpaLaR^glgKXt$Q|5 zCi$H9{7%(M|8S=s2*A(wJ$F1w2GOi&Y`a#mVy7E+(I+tG?BaE+U;@vt(19TX(B(<` z5bA_g(e&!M1nI*!wc}3hDo&Ep4!J;P0_oXtLmC>S?XAgp?J*COpLa+ZBh92eJ2jnML9+K%g34>`HVKGn?;M;qR#ubnEqnO+fyM<(5H>7Y1=9 zS3DJE6T`e`;EI(JtEDf)b}fM3E~D!qic~DN`Ibk_;DCDe&^smMTbzo!s;wU@-Mh6C^OBuKuNS?eBYj`RfF-NBbXVMkeF=^H~ z0{~+XQEA39T$S0UdnREBztC zpjWn0S0Y<&Ur&$$eaiH$EFqZ4cl43tBF+=y3mUi+yb(JX0|AXDGvg%r9+IuvEM=aa zN?rA2%Na#m>V_hoR7>?;6(FCKJx#ZbOUIUpZ3L5ew2=?-Tr41t= z8vE4%B?e3qO7R?v38%X&8;LuQNg(9LfM>c5%+pkVQav7fzit%WMep8$NGr9ApL;)* zJ)-y6x$na^ORv+>aZ;lJu&fm#CuVeeBVeJWVed${r7j)24ojnIpgVxNb(Qg! zu9qHX4&g+rYR>kZt`)jdUDbckPZPs8qWhM zQ`a2kLcdVZyl>`1E#5vVLm1uHw3%VQn{yO}O{q}Qrb0wAZsPfT2AAerAp1i0&hk;| zM+QT=OrN2#ULa+?{$g8*7GNye5fivdX-RTIkRf0x%>E3!mb90^;+JZUH@Oc?l7(qb zwc%qAk@!u2sWp2zYuHr{uR4M_%yu`nug~arnfEC6J(OOkhjTKu9*)ZIzj;>M28RML z_q!GCYBmO<5wRT4eo5!-Xe`gqra!qaqohxVJdAus z&mmMhfgMXoGXyHR{`uld4xKOSht*G=vz@-)wMYz*2)%Jg~!j&+CPIX_N|I?14lSA|ZmtLF0<)8VWerF?h-H*m2lC zidS~-;{i7AAH!9R@9SuU%_Ydlx5-j|6WF<~83>W{3XZDt+6U1VI6B z8y&=59vqtsqaj9oD<>Vnf`8#Zk{KAzj$Oi4Wb#2+1R%FX+2bH#OI0@SR4Li{=@Lwd zWs(%?Y#}8&sr^UWwNJf$qnMv0Tm>iCyNk+H39`(P$&+RKWg2he|E^aef{T?bV(b_H zjE$_%!e4)BKzthr&DF zVlDzxlSsDx6c7?RhBm^m?vcW{*Fu;nyXo@Nz#I>^)9OP<2be;X>{A=GzQApfTM1in zbkka~KJhE&fIxemFEL%u07NmSd7c`T##pbA~N8!krZs(I{5wVBmI z=X+Xy$?jmY@n?(kSh|uLjnMmYm0c~Smu*1)`kKF9_DF9oAS$Rtj%z^Gdt&~=^Thpe zy?S3u9wbpZpL|Nr&H0J2`ew8#8F@V4cOH9;Pa!R8B!cDV|?xKT-Sw(tg!*e`( zRPTRTmE5j`dhD!mbi*2r4u+Cg1w|uQnT+B#OjRK0K6EKw_{QI#xYZC%AdIE&v|!bcxRWgB75b^>NWAj z)UetMp2gm;aa@LP0}I1rHCq%;6XEBmEjepppHLQuRN_6DE`1$K5#rx}-Z&r)4?K^l zww{0w%E|Zc@%xdW+-M3Q1wT_?GpMU1xRU1Xc95Jn@Uq?Kh%>}WD9_M-#pBucK&M!b zw6-_Jr+1FVeWx*FCKQitU?axT*2T!|sZOcIe}U%DyBsi?-2*EXyun{X>L(8YW@5wi zHH5ZbkZpgNB6*jo!upvX{_x3}OQLpi=#^c+4E!@b6@MJAP6H&HhV&A5@a0V;$0%%E z7kZs;`=Dj8oke}@887X1p){*@eyuOrH^u&%%uU+4*sz4F?g%pI8Vh6-FNo5Fks-Ho zU-)bH9c9!MFd~xqC(QGqCzt9JX#7Z_yqc?W_t=C?c|!P0vYCmTudqE_JGNG`4rmOx z#|puMz;$jy2UldEl7dCg4r|gz3!7$y6(U3!Rq`@V&|ynU{>zmZ)($E2_f1F??3rI> z61S5iFr`aS?1hTZ-K*%(z$9ilOEg>G|MG59#S*1khckIxhhUGV0d_Y?ir)I&9EFuAJy24iZyG4}3x31*gdQol+z&Y@5bWby^H zn@PAfx7RfZDf-&|E288%NqcNJiE*v^B_T2LvoM!=yIEYM(~oFl3)Xbj)xS)X)xUDe17FTvZ5Asvba#77vk$Y^ub|T9$UJ^*3w&xRUcPNUiaKPu={E%Wt?# z8W)-EV!Y~;RaT8YY3GX_tB5zX7Oa?+EL5!B+Gurml@fN)N5tQ(cYa;X~00fgZ8sVY9JQF&cD+Ac3FnX*Kd5bTED zwKD7UGOF@9v&PxBkHF}Cw8b&65an3ihp9R_R*GeHjM$P>t#;op`*a^%tCMj)EG5c) zPq;G0uVYh?DeKz)3MJmZ?pu|R`rBU{c|Kz->7oAnY6f8g%(we*7)l{Z_Fy9?i0F9G zf)-gKx9?0S%hIYJ*LABfwdWa7V(;*X?6F+xO=o zCnF@LS_B^m;Me~Ehb82)g-j(Mz&y_ESG9j6dK3`t&-7Qg&e#Q1rQN!NTR7BSAkPIg zJ+0SgG@%*$X7DI?2{ zX+yGzb^{FVE z`1L`mYp^C)0b$wv%aShKb10kAY-q*nn=-=mUj29cROkmczw~>|j8>PmEW(E@jp;b! zR=MMD5wLbpdP^gw)`dTjaSV9x(3O_cT?Ah!nQhhpM6puDjsuB*Q?S$8=b1{3IibVb zKWcR*#Ttag0&l{}zCtI9C-E*6Ka)3)*sXcgN;$TAi1d%+ptC5C#E5p0{882f_qQTX zg^$||OK_1N!Sj0=PgBZ@2y)rZ86yB0@vo!*MB~Qo=weysQKQATif2BfUjI!H)_=rG zEKzGT1y$#S!kv6`^G_EfnwO%_nuZi!toI$<1cfaPKJb#RmUu98Y@YK>0eP=xtl*cc z!o1noBaw=c$V)N2^(`g~VxT78FdI&{5GD3cbsV|C0{ueIRguhDky;7LIu9FMFv%&@>6`WgZFW#@+kNn3>@ zs>>n4@RZ@UampV`ce-_zsinvl`DrDF+9_aXQBhw3}1`p>DAX4s4e@GY4CC*JE2|jDscq+yM@#XD4I$n@m!4g~Z#;c(ODE zy6XBluD3^36BkpC@uX$^2~QeREcOn5k#Z)gSV*yvB-f2FMCVyCm@E&-5yFts4!(fJ z7A8IHb=D=n`)|s_k(U3Lb6sP0*LxNH=K}Tk^&ExfQS^0A-;pgJxIYPdBruI7?W$OS z!o_N>^x@8e`+fes2#jiX-E%#Xz$|(&6YQsEWGgbGbu5bo+)>)s!YJss@aJ!Xa< z5(i3!Ufy0IRI40M^~)%Fn+dWa&>oEB-vGcjddMPfGH5Uv|5OxP%8!PevLdiTEY(5W zZP?0}tJ1-oFyHh~!CcTJLstv4!T(%cA)`gg7b0B#brwJ5=YQM({`MqEW-kr!Sx*ns>m6tP8&)?x+&o6i zW{?j(y%G9n;8r)>hpT1A?co~|<56BLD^f-(ks(@8LCAv2NN^So%jj(9S|vqCX~`5E z&B`4m&RBiy9Do6ftI6k6i6vgAt^5{0@wpZ)^4o=6P@#LtAZ(sv&Arva4M+|J-Mb!wn;nA?mQ&Y$ zyFvX6Vx-o;6gyOogEwf#t(eF_w4RIwT0C%uy@(_X6^8{jt9zV2@+N!3j9}|k7o{Y$ zXNd695K5jV=g}(b?;z#GEf5}>FcYAX=LZN}0NLxb*kS=^^~KOKZWbbIAqDf#W|46I z*9VRZq!jM%iCRe9E^&3cqlCG883JC z%kQy-x@Dye356rA)(nAYliWuem4pebb78Ei+7|L-|0(~`&~ZG!GPyT|@|Z-oJB~-Q z9S2*o&;*Z*(2>VUi&=)Sa|dV(soKC<1}(ify2~YYfDFS6^_u-#DT?uS)IQfDv7MbL zqi|59yJ0sFH?3ldYoAhh0N|n`Hw9xRda||#+*1E!lwC(JbJx#vLv`J+fa0OEGPt)< zy277Xrf1|xB92j7VM_YFac!;tQ@1mdnJ*-?7A7G(BEmoUdcI?PUQw66(Hn}CBY|<- zgOw^=!H~JwN6Me`Gzo5CRBWR$53KDi=ByH8wKa9kTLZikY6}v8?N4}A)?88kwn&nr zCsr4%r=!N21aKcKn}$rWVglX4^oc*T4i`(E3N9}KG9F;2%kpTvD`#1lp()E~K)Uka zRAv%+Z}6g~1WQg;RQ&bd#g=U}RnmKqmT~#4ZOG57&N}SUW+~*0bY7InEdu$aVS0Nw zzAr49K%xcu;7iZnyJy|D=Ah*!uS|UFp|JMVbV+28@dZ7Yjy}BSIVwy9d+Z-^4Y@V# z7Pfv{vU;BSLk$HRqUrnAVP#Y)s$QO^*EInGU0?NC@w?kB(%pO3zoQ#K6PGOCrjjXXZW7MATJD;zkz@^OYfLbZj`WTd5nyAci@7_B~DX} z&JiVCMtm?%Vc}6&tUn8lT@I8sN;E&^IQS)Hd(1^ zbPEXC-;u{#d8z(nrHaQLhT?(%PqLhKj8KJ5%=CN;HI)l(MSfBw~O`$V3R4>p)yaHUi!<7bL!H8)})qR%_a6((|3ibV#!7!keEgauz(PX;^;Y4YHN zkHoSQ<1$GwSX8wFKPz#mqgPhru$Sok1YcCS9iA+)jk#MXBJCG$QO;Wjn|TMEgACV5 zB!0ENo-d_w%B_d|3K5|AT}SJ^oH8XsJT-E~o{Wqg?$wi!`)V<%Hi&`Z;jdpGb>fkb z*LX{Qp7L9$@Jw>#SJj^PLwyV@Xass@#^5}>ZgYImk-QlRyu;;?{Nodj;qY<;2;c#} zu0}Y9N1knvnbDvG!^^m3cwBl&gOLW;TKVO*cK@`0Ti$O9`);&J7kbQyL?*<>ranlq zvY`sLea zDDecWP9tFj(cZ#pbG%^i?}k*1hBNVT6U$qWOk1tzpAua9c}e*3tqnUb_&aFr<*7bB zcpOl*YXT}{36(YV4O{$gSJsos)Au>*x3!9@oQ&4mtaQGetzk7=2X@P}hjsGgCvEt> zJXL6I5z8#Fjn2T!^#sxzn=;#AN`Z=mTI!Ys(yN?1*U9oOk618N!v4l&b!;*_Nt(_#HZI5ktQ2kL03ygfP#&d&p+-Q-dN}%ftJnV`1ZtmW46wUiZoWpGvX4X$_l3s#1#o)O2UPo_i-83{ z$FuKd4%=1P=RZ149ZXa!ainCgiO-SToQ+=%Bix)3*ZKYU@!FHiEhMT_>Z=M)5PZEJ zZ|;z?E)uHfIk8^45i?;oM$_`+2~67zfK^GyYwJZWSB4+*+D&h+K_5aI+fB&xZ*A9K z__%A6NQJm*R{~SY2oD-d#qe>3)G|rpe3a-xqGw`}Qy(uQ5fN}`y97xa5$>s6w8$&& zvoGFS&6%V4j5)1vn-(BPZDZM=>*ybXzOnl_{<1CMC5HO?@kGUsY`0JfJ#bToAn72> zxj0K0v{2brq;Wq^eO89R46B5;nfeW=p1G@LK#8K6ANCaqzG7+rihY-3)-O^FyPC6k z|3`2Bvr=U0=l=NrgL!_|Bk5Q&=_-CFwJ%c@cH5v)w#3>ZxZrz4Xco1I<9%}nH~)c~ zfyKZ~G%yjk3QYWsWIQlBJ-AZE18uQlaNtwF0rbPKY&X@D$uM_`*FM*}BFYM{_kBb| zL3N$pt*G@nv!_Qe>#&R(l_@KK1zdMIq>$+-%9I_E|M91JTUolDgX+^T;cRpkT%D3q zf=oROZD+fKaIf`O%OK`lD^{uKH8}s@V@I;kAMuy}{0kAH|IW8tNA$YIpV&#EI4&T7(e5M8CofERVDi8M8(ZAS_x56h!z!mZLj^9rSPawogZcUW^Il%JcZadTxMz+LwoJyLpe0R z-ZABUwyr-@m%pJ%LH`cTI8!vfZ~bBRWG*~tEuSnnvJ(gZj0FGAL#LQz7HL6-_}MV( zI-K`kLDap^h84pS@>hLZg*Rv-7~$D}NxL~p8t6tg5J=}C(YtzwNU=j#iZSO7#}X~u z%y}dev}kH$=SUDPew7kKxjwu=0uUEnS7q*7!?XiGMeXsw5!5zHM4)q3JFHrE$`vxC zg!INo0cO0srs3B*q;1|KAe^A2fdJ5}EzI7|3M4TyxW7RZ8ELKK*pR4Rw1u2k@d`qK0i-0$O;#h`?nsiYm+QpY*cIgw-InL*u>2MAY?d z-*+iFkZiCup(5IH*WFbxI@zKdV04AXr_5gN+f3xMpavGABQ9Eq!nV3wx~;)=hh=W5 zNO=s0;mU-T>`X;=IOt_{x3SZ5C@khgUd-r8{t`$i`HV}-PYt%w*?SYS zd}BwHW0!MFi*dnswiW(AsNfNq8i^pfyi@-8K7YMBo8Tv5Pa&C1%TWeMzNdKQh9v#W zs}&mJlek?|Zz{CLwoAno$rS}u#!`nnVVHknDc_||63v1kDYVdnn^6(-nu>^uG-{^K z8ty*hO;`bzBn2mBsKEEyseI^PS)#x&=iU+-qPo;k7EV3totTYkY;^on&(j($Pm4hd z^&zjFRse$K)%i9P2>-A0`OhI?|Kb1iJN^C4{c=)TRIBz~8@-c?`u|uvr#8WYbxD_P z+qP}nwrzB|s>`-*+qP}nwmrSiJ~O{yuGU>X>nbz9$cQ(z71p|wk}Et~(qE&*U(*-p z1-zI;eZMuZf7riF1p4~=hWta}NQ;|U2mipG=vs9vfqOj^T+i*_y!!24eB;uFGMsx+ zk2=1}Y-Z4yy;{h!1S!P}-G~kYIa5au6=P}p)1fsvW&pdC)srb@hz<=Aw8YSL^jORE zqff+TT0Po`;Iv6;-uT<(03K(8LeALz+aEOmbL;;{mDHec=2Z8MtURdZ9=#gCepR23 zsaaR}L3sQ_>Y&Ou2=y24Gfw_pbCFy4Een@lN@39`L%Pp}groP97ja?4XVKT>@wyNn zpt2?R^AjAO{MkB|4|}p1-QTkXyun56`~rvfCyb;pjrO5!caeI+*UadvV!0idmq>)@ z{)VNZMMD#Z$)G<4AJ;Sg`|OJDw_Uha!PM+!a|++zGAbpSCp;!uExa5$B5r#ly`@53 zWW;OVQP)imVfUJPz?R%jo6}9_rT|JsbxqBf4Aqo5i)>PNYuTc32Ub44ifqp@AOr;* zZnHunl|`zbES%zfxU&10%S;)RZ;XQMq2N!o_8QG;6i}k8 zszmhGJqC;ru49v6yTUBw97d^9cDbpiTt6O22J?&Nam-4l8u=;+m?!S_7f3kTHe&Yr zeSqs-sD}rC`wm%Ry&A`#VPehf2}t~-mdaTpW1~)w(5Isyu@EEBK`Q|pEM zqgKTNtW&VIt=wUapdAD*v{iOB*$HTY_~mG;{{=j%D{YWZhBW{R>~ z?W+tILIwGj7UKC#Q0Dw}dIGR~EYYYuwPZ}R=6KS18UbW}(EnPLZU&JTwGB?8ZDdUu zr#1{4Sc$YckV>hv_XTw82@R)6tC|8ou8jE3w!JnjD2zN4krmB!Bx1aY!Gt|WqBa#+ z#Y$dph`1qn+L9vH+~5G@OHh?~CCJ%cG^xq*_$E80o!lH*2-z&q;L0mm7Hg_TtHzKh z&T>&wG3tq7n(fJp?lIIuTmgBKFZ!F?Z z>hRlF}RxRX{z$W=D$WfvmO+nYczi-K*Ft~nwSA53M@x)H}?i;BME?PTR-^Wib zhI}_ZT#I%47{At5A22-ZYH?CGZlor*G@|Jlr&K%6UpUTJG^*Z1%<8Q@ZQky}% ze$v~tK1?asOqei){IUzKf3Lsv{u0e$oG2~Fv=$EUL2bb;>!sCpkaIuzMUIa99f7~} ze2UiN)vF05hRL2(I00qjnB zO&IN+O^_UWYV~cP%%&b-wj9oD?~{)VaR>;)mU7D0U&`o#YRxDg+q0 zUGd+8HJZi=@{q&pv<}Q6n?F}b+{+Z589v-~(ddaAZ+=a5&(s4FQbylJlOfPsRuE}h zM1a?X$vm|!zz=x5KD$8C39io%iOKJ4)HNG%nVz3=D75$4IVBp}qlm`UblD=y$k+2g zm@Js_oC1K@BhL~ZLnqlf5Dz?k3+}4qg~JNw$EP)i0ZtC^0pk6qq8KT>R4G0QHj(OY zVHuD&NwkJ8PBYpQ2$mnCC+#Ng0x`aJL3|PP0@SV|?1<0sb)N1E^rqcT=zC4DF!%KbSf#5@8<(^6aXDb?@zp1YgV6OLn$6FB; z<w3}&1Qojk5r(L9|VywH2PlN`gWtqD9mP5{0v zuNJ)57qnyA>j)6QOThPU2B)myJnIDIOQ)p;SO4*@4JvD#i$OD%5hEoCI2{5&5PrrF zj3`|zwf9lDo}y0SjgBMxlKZ8Z#D~B~CaZjj=wJ3w!lLugvh-i{n7{~m;1NCuyi4e} zW>xD7DAyA;CdutlI&&gC;|3?iw9+#~09z0;E``VBGmy8)akh3)pM|=%l=ZrPZ%QQT z*61s0xbmCL890pb(U~4W?q5{!qKUpS>_@$mA1%%ZrBFLJA%zC<@m~K%D*sxcN2w}z zR=~q|P7MI*U85=B6>2E)&*L#@n%r|dwMo^(0==c@F~zIg1n^h{=_wKQLP3wME>Nro z6E0W@Fg30FQ`qlCfKf!^F}sEXw)z4I6F(Izu4UFpr`QkOwedS(m@3vkj0qXHSB8r2!7P%^qzsN+{(p!V5CS zjb7si0fLZtkXuHic8Zx028rz8leD-Zn4kWuL|JU_JgAn=sTOo`6Z6?f9?Y&xTXL1% zztJQu8A4ch-X~gJm7_%GBzIZzv+oj{-r8;8WAwffULJYry!F3ksn}23|#DztnV%I z$3AhdzBz*M+WIS1#o~OfJcSc~G)Gd>+nEs74U@0N_SP0_oaSiLxxkZrqjP;kr+Q4y0cw91eDr^0ZUK+-@2c*ngA zp|Q*5QZR_8Z=Z-0+c~jiyJUCWqi(Yl=SNLzN2m}@FhziZ{$?!8g&J*Sr;O@BOA!lH4JTGo(AVtR{6rc)4>!Up`y}F z{ymv8sw`;%T(Dejgz%iN`vb}kONAflLLJAkn&)MrV{z&5aP0I|)K8c}1Sc`Z6Fyaj zU2>`U`iifVm@pjIFH0URPhrG!kjjd9#UMMlFVW>C$%aE( zk{>EAKFB`O`abzd1X1;JqSBAz*SBm&4??cCWSd2Sw1Q%4ojwrjt#gTBwJ(=G@hW(O zyg`_YvKbb)l;a{^bM9QfEW*fVdhs$MkCCNPhV=>?nkl;#c#*|&BTt`&p_&8^80}9= zyb!Kn*Y&qSRlZ{rZWQxE{4-~Jlk+6lhx!74t4IrUfE~tJC_DcO3ZVz-FXygdmCa+@QF-;0j*B_` z#qQ{rtRR}t-QN<%fDIeG24Hx5;10*qT!o4#vQV!o&uq|wNT(BW|4Nhc`&R`~C?H(A z;9JCduxS^NJp}JF>>4FxLN%YqU}ttrxYFR{u?QA>^f!S^Cy_d9Y;#gfl>$i56|ne- z9xK?RSyO<_1>VttxB!ii1yZrD4g*3CNd3Vct}dsNE=Xfotlr<>xp^6kK^qx2RaGaf zTYe6W=de+5)CkLca~`6v8L=4?8CFYExC#u6*?uOWujF38+kQ_=bD{V}r*3Bc^ez@> z!G8b$>$?;(`4>zl!bJ!b`f2@7kL&dhxe{|lm+JeSfHhOIrk3gnJ6Q9-%hc^el{}3` zvVe&2(e_PQPv`@G{BP=4w-k%lMtmgm**U*BiN%&?W}dGMnEyi|^L{A9l~2#NFzvGF ztQ8E=N`^9o+z@(e+r^7(xn|?W4JE{#EG1iFWHDw&#{uf3l_*1`0apoR-iFpe=)c+5 zM=*Esf3?A)b)1NCyOIV&#M! zeN**~vj?n4U%rh}28%$4%#Mf+dKk4r3#B~zygvD;WPeectk&~Ley8v34`9JFOkiIX`D$LjV!2k&V^2oWp_BoN+RRS?$!TiJBY>tJD zj9Ft5EJwx=;RcTeyQw|8YZ3R0YTC`Pr#Wh zS4flK?LuaQ)q_i8)PQR~P<2D1@T#yS&S;!YP@nrQzdbtB1DkW~@}@qD{qQ+JYc#+q zwNBZ_d}~O-f}4;7NKA{(9OcEME&EB<5jVQ)E2A;$2`($xqt6bly~+<7cIefsIwd61 z151YMq$rM?buNh9SXtN4?qk{e1C57_qwnH6CH~yZtdGR2>|}2+339rUn0sp~$ft(< za{R)lSVvHve>X8HRe{G19vPr*cjj8Uj^qdCgYa8f0=YwVRtpTdhAPj_=^(Av8p4>4 ztxssg#Qd*Q51kVZS52QO;WCdk4hw{0fk0*cMk7K1V`6~PV>ok^?nkI9m>`x4)ef^@ zTkBNtlFbhkcR3g4{&D`+aaCqMX8n#>{6@7e8_Z_S=3qkLjAy zAW#S3;$P%XRV-{Y-+TA^_xhLrbS-6C_mLnyV^W#MM{ObKS*AoYREAhlAW+R@;%NIL zSli=We!^F|z)$l(-!o(e8FH4{_kmf`es8xLp3pGVr$(3Fp2~B(T^!yIx$sdq*T~ZF z@iNa3<{sS|$S>rqg)y^%>PeF;C+g^p8~aq1$<}QQr$Z)Z?D7)T5m%<5hf>TfRZ(V# zNLp#hlKAI_wgJ)&djz_*X6dl-d!XIAuTM7eQOIs(C?CIdCtPW|HIAw54~LQ zpFfF=mmpN=>+!?y{Ac(4<3@ITsn|Rh8Gk;YoZTh~H*s@{&J3NI_fu@|Z!X4~EA(V@ zOUVcOd@WKJ2i6^1&C15+i!LOZ_nEHK| z!=32^;x#lT-Pw25u{8((A5jA~;{l`py!PM%=05#L&15*baB{_FV?MF&yDKLExs_bn zrMOfUB*Xc@%Wn!Fe`|e8Uc1lK zhPp-0DgN5W7%AL+9wLkUTC~_p!B(#hJKcqkn-;AShuGE2og@a{bBh|T`eOdx82{2* z#UFhs#LXa7{kb%jdySDk7LNNWVsAE{9^Jk_sbrC{Lek%ppQ{%q{mP1TU*|U$iyzs{ ztZG-f%^Y&u`Ln>yPL#m6I;#2h4@>{M6Yk$i9&8lw`dcbwQn}C9hd&xm-pbf`LRH3#GZD|$8ljRrF+RG8B zhzwDV>UqC-&fD2!(}nPX3B;DWNPF07Wh2E48398N{?3N5_)el8R{_0dPbd@fZTt+f z1AxVM_Duun4D2piq$aEoL(5Eyf?Aod51^jv4kO`-HO2hx*3LPP-)N&DruZa4=h0!& zO5tCsjT=6l4mYM_Jm~Ef=3S6YN8#cKWD-#du8lksWFWARlib5$Z%sg7M}x0-&Ic}xnP>I?}Rk^L{ku!93U8jl49$RY~dFuzEs zh?_ zz7SQ>pyK*XIy#|EEvu*Kaa}PeZvABvH&t-jc$m;i5mV86=p7^7RfI09B~h02P{KM( zw&bajiW!?*nW742t9+wjZk|jBR&(N_Lrb{wrr|g5I~M03$@F&?T*EbFvvvGWCW7>C zG0-ZKvUOA(h<8Ik<`#aa0HWtXX06XjAjxbx(IT&N;q1id)oW{Vb%sL@#1VY(>@mDMP63{-U%WQsoU0BCy z>3n6MX*Q#u&nGw@$im%y_F!KDhhUAOlEHrtEC3e8Ji=A|NcWGON{~F(^!Nv0D+FXcm zF@ksbcYjMi{9a~we9k*X+QDDhQI#4pPAU{KYtxBhW9Zm44-lt%lscQY!_;(4TYIK2 zU0*fSH%v@S4Jj#cQiKr`2Kph}v}Nd?YaSZ#mN_fTdt}Rd{Q~h|8{SDGBu=S%1>8bb zsyLc8;G*nuT(3{tTP`}S3QFtJ)ZCcUEJ;hj{}(-iDqFyKrqBM(|3m-&>&JZO3`evrPZ!s~KMFpDz?bMlkb@MMlhzZ1^ncmHC(T zmmO>-Rge7DBP7BxEl**~7{hJnbIaNRG41N0w|Cun2J>G?9Q98-yD3|jR)UB+BGwxm4BGl@c zG;|?n!Fok>WtUE)=bo1lF+dbxxc9dQS5RLFNj~uM6-@%bA|4NXg&)nF2trZCZ24Yh z`HyQK5)faZ`C>RVtk$m5S0t34h-r?AEzEvnC8GsB)N+9*cmAQJ1IIL%{IY=vqXW_{ zZU}+=U!IiELLlHGnti9g=Br?>{Ep!I9foH`z-u^EenL2 z33?-Y*%`|0nZi{(RB8&2kV}!G%u&8EaiLrLCENnG?<@TbNt~Gm02O%~u=+Tf4Y~+E z$rOb_tXOQ@IM}?MLUK_tIhQ9Ywl}bq)+fY+t&8jVRLkEyGEmPy*(8bhDOnj?>r|aM zXAk-{Bxu#W&1o}w;hxL8zAE`vsa~v9MKCa5o$66Q4)Nu-@|OJr?E@gM6)AI=py0h7 z#eqFC72M1Xx(kMube+>1=;7qAx3XevnNF%T?Fq4S!3otefA^sf(9d3O-rKV5Xj#FV zh7Va(Y2ql{v(Vn8;*(FoGST;0paswO2J{ckB?fc(d%3)%k+2Iv(&;R#7_haip!y)2 zqEcqk51v^_h>;24D|I1Z@mmAkT{H+k_*q%A*FuZC5G=cxfeY(G+T{0uv>H6EYbmgG z(JZ;`DR&Rg?B4!l{ak5fhyN!H73d$KN^3ShYA*jYL)w%BnO8c~DTYdk)ZK@^>P*UDi{+}jh8 zX(}6mvPyzTG~{aNSOsa9(EXA@10)ayfLw|x$^`6%MqMRrYJbMWn(WLBH0yz1of+$4 z&K5IbUay}S9I+djE^UgJWbCg|=M`}r<)76_9bky~Zt`kaF%N_L$2o5MvMRjhsc6X? zR0{Q0sUp#9V-dT}v2tar_1e*XG5#K+BWWer)|<%~S2_o`j45+qkPdR3HTYBh{k-@b zP}Gf-j%siDIB*6P%&tJ+AQMy%Ml0VTRbnP%q+KnV3G;Q$KJ;RuW6$3c#RYmM+DPXG zGM_nX+kqHo0RDq{Z}mQSBOH4^)LQD1X1K$B(p9zES;Pl(9&Gc#F_7efqIUD+Js2ZedZXRAcJO0UX+oqjFq^x>dh+y14C*(XGRXy(+r@;3Mf2mH^>@>@ z7m^3L{%sNGQbV_pCkMPCA&E11GUE1LxtKQU?Zipz%~D@fOOfvNOd00g$Sf%t(ckJT z4;oxvpED{JKQ=AS{bRDY1l|Dbw9_SA3&5;f3SnA8+^P-kH?5%khB4?7iuUsLsM~kB z?Kw?%_}pF-+g!K(3aW2vSik54=h0>h8}sa33M?(lTSV(C!P+%=#GUwj;Km_~&bR<) z6@SyeN3E2xOz%`#bUY1CvuP9q=qOF>lc+AkVc{!;&Zut zQkB{4w6Rr9P!GMq1yap%mp#YdknaIMVf5@nUYSC+74SEvc-+M#?TPPbwffAHPlf* z{92isf0JA~*6?|^p2WD=s9+E}P76VW*3{sx7|g~nj03`Imf z?yu2(?M665AwP9C-qK|t>JQ!l-_iXaD>-Kq`Ep%vU2%2`gAe{piZXVPJ0-Mm>Mvb; z4q-?1Z{O9v8+4eV)$luM<-qAXmGGt@W59xn0lYM}UAumAqL?_|@FcVa{B%X{A6B>e zhRckOH~##y%@rdN{ekDw42pbo-9G4+Qf@|p`!*33P5qDqQ3(TfL)y#BvMMy8A1yW$ zDMFo4z#_xx+oG39|FSZu(t9sNKT4$^dEn3<&rI>B%R4zmRc;h@`4BS(!s6tXwr>8yI>khj zDbdy~JQl|9H0+XEOU@f4!Zp|vQ#(=^LBX|hZvDT6%UU5)uho}-1bF`KYjtGJ$b^R6 z%K^Q4jXXztRbgW*aariY+I7Wj#nleTeZP!f`gdR12l_-`Yp*BS-&9Gd*!i)kiXqT6 z|96#~$jleFC#ut%kFx#58d^IDT6S*3NyK`VfP;iU7j!~)jsRA+q=X~Y>0(x%fiz>C z0!K%QGD^0h5Cx-`jLcTX9%f|1ma+I{rlwO+af^eN^ntXd8pdnQT=(BVPk1=4U zYFV>`qp?G9z?1RMENyMKlV7)KQm{uf=N3 zG6aJvZu_toJ@;QQ6$tSDOtGlK4FQ^_E1lwzD)zO-WYHPL_NN50I^0Id%hb(P(5e}TVCj1goG{CdBY`4==)UZ&=zLWuCg?)3-F}SVw_R{bI_N3yhvelyT`GSiKsaJnH}ICs&FlDD&PrzhSB!>GqF4xO?$7l16ANB6hF)Ja#o=H` z>wWH3867u$G3mv$SX8l(p5Gd=i(v3H4mRX>Nmv5LWG|w8F{UxweDx^3cJEC{$Xh2Y zz=i1Wj-g`zNM;r^znO}3z?q%gsK6~))HfyhJCW$nj~_i;}wozTv~=#)1414I~zE_nsQ?@27yjzDT>N`~su>^HmX zdxN=YDI5My&N93_*x3uU42%vafN1Mui`<+lCWh+}dN?t?@9hMk*_?U!Md-t2|3J~D zg=W{Aac&Qdfa?#NvZ?z+^_*lqNXi&EZ(#6OSeTV(w?h`VKReAD*QJO}d`?jIbyCHZ ztI!(u0KN!^SamUaMrB+i^E-SM4ac~xRWlVQ zndY-r_4=x9iG)cSB4tCtn*A>qTO_iDlOuJKWep^_)>>U)k}@*V0=||q+p|^(e~Jjf z3R~pAWgT34D7sXZ7^PBvJ0@~{BPuy^zxlge^?|8xw$tWb*8X zvS^;$!*L1rSQi8TfNq$q769TRxQWUD68A+B3iH(2LCKtWTQNXi8~^xzSG){!&-4#yIw!=40^)Ml=bM?1joA^Mvr zVBkIs)|v#e*q~rBaz7`v4CVVdomVXEbysgE`<;}(uWuuTOk$N2TxGFwU_(B z%NHIzX_Ft+W?WI9wjTLTsVQRav%Z)FIZ+c29stbt&ZlB;d?@KzqExpGpz;^Zyi+Jb zD7f)8k%jSkJN^|Y4sM)LUiOM`s}9cp{qKK0m;W$t7V}|E^m^TX&%g37pDz!S@uZIX z^2@4vLNCSyYg^WsVl;BgL;|3+vBTQQuLL=B`Gou{zRDjn<&b4aNhA`|(#w=q5S&k) zFW22ajc5DqN_}OWU-N08OVc_m&k^DQ9}puh1eTuQ*OSi0D&$thhH`w^=lPfwOxxw5 zA!v(ko!s$3vwv8(U53r5{)gvw<-!dwG%#1;B1H@RsK5DJI{I6D*~^Z7+1aQ{z)4L? zwH%cUzUq4om{7T0HT&}w`kVEa<;3jIj=1g1?!>2k+qJdYa+h|l8559tE%P9pD^Loq z=N_DCWc?g%$9LG1x@1_3xN9?(1tEdIK?PXl!ChS5RX&b`5}mv3mfKy&Drd1eF>7R` zIOc&r&kg6yW^-q z%yhtq72H2XH5V|4{r{!bO)mERHp8-BI5A&$=5*?DzUfPj{-Aic!vmOs0DJr>VYVg? zNYZnE-i&SPeXm<~YwKg+_c;969}-pUQJ2RK`LCP4ok{A#|Ekx0-m&Uq<7J@Q$eN`g z?X(4(F^8Ey*Q3LPl5=(&eQ`}9fL_!}pVz*Kf?H|A1|n0|b-A*rf^&|v zXKjj+cDCACY;cS~&7;kHe*$oU8@yyp&?d4x);XblvOoGeWvSkBi%852;>6NVazE*RJynL@+Vt-MLXM?`9^D+`=+dXBG6l^ZI}oKpyw_n z?J&B3mqIc6guK+Q+7e?`N-!&$lq-)S2TpR@@n@BGHzi{fC!M9kE>$79IjU7@WeBK9 z0b?0PU9XoS`IK=+=QU9PhA}GA4ILLsRGt10nvFfuprbiZXr8Ek{`ph)=p>V$upBM! z0#05_Wg`z?I!@X1$0Le@S9lUXXsHK%@n}_~>_2<6`s|Q9!#1B!-DWNbHh!01mB2}6 zRkhG|%C_0AB8X}h7mW~=JBO12LJ^x=m4`}k$zFfZ+EYWPu^f_gJK4%-o+25_8;ozL zm;KR^Vbebv#CQ>~h8@FklL<5Jk%t)L5gluIKpqT29ug57>&ud!j81fCK2?`Y@k?`L8kkF#!J)rB;o1m;~gYm;&7nQ%*jPkefY z(Hr$kqgC$5gXr(?{qJvwrLB7(XSSqwZFk=4=D5UJDIp@Pot|5*oxQq~OSf;sFdkWu z2XV7n{&wSp9=e&!si943d)-%)o>C;iZ@eo{nf)cVW9Ron$PzY`4>jiK*`UM)-{CVf zWhcgA2~PQ5LR*f$yKXSvU9*NG;=+xGbIjLhb+!P&N7EiH!5{wmC-8Noyfuf#nJ_#z zp8JH6mhJ%1itcILP!Wt;@MDgh>g+0-g#*1u z|6)cuXk|G9W(wQ#$?h#cP;V};JH42HojKgd>8`77-pEA6Z*L#Zmo1t-Q*G^4!1 z#7C(_@7v}P6-{;J!}v~u(R+r}0nZA5y0^yJBfS;%cgg~i8-)4b%Z!BS|7$b-7mv5~ zY5e%T|KZ=Ap&gbEpT*hPeW<7m+;8Ee}B?s8s5)Y7GA8v>)@2Trm+i z^Y@QrenP+#Gfz%G^priD>lnjRq38{~an?nL!!%8)b-siU4*6gyl-|xcjChv9w0G%f zL;22}DRbCa?hCpae1j|CV)qlIc{PfjHAZuaKLF~-)(fLG&>>T>6bAk`2Y|N=W^l8} z2;noYv&raxx58Fv@(Fw@Y2IR0%oWj4eA z=2kVDh+$GKqO2G`Yk^_(UbT^rGn24AOj5+)4>@-sG^XdL;x?@)vRX`AssgbYjSf>k z%0D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 literal 0 HcmV?d00001 diff --git a/app/lib/services/preview_generator.dart b/app/lib/services/preview_generator.dart index 7f882ec..709129f 100644 --- a/app/lib/services/preview_generator.dart +++ b/app/lib/services/preview_generator.dart @@ -211,12 +211,43 @@ class PreviewGenerator { return thumbnails; } - /// Get the unprocessed source frame at an exact frame index. + /// The ffmpeg arguments that write source frame [frameIndex] (the "before" + /// picture) to [outputPath]. /// /// Frame-accurate: seeks to the midpoint of the interval *before* the target /// frame ((index - 0.5)/fps) so the first decoded frame (PTS >= seek time) is /// exactly `frameIndex`. This matches the worker's preview seek, so the - /// before/after comparison always shows the same source frame. + /// before/after comparison always shows the same source frame. An image + /// output is written with passthrough timing, so unlike the worker's + /// `rawvideo` decoders it needs no PTS reset after the seek (issue #157). + /// + /// `integration_seek_alignment_test.dart` runs exactly these arguments (with + /// a PNG [outputPath]) against an independent sequential decode, so keep + /// every decode option here rather than at the call site. + static List beforeFrameArgs({ + required String videoPath, + required int frameIndex, + required double frameRate, + String? toneMap, + required String outputPath, + }) { + final frame = frameIndex < 0 ? 0 : frameIndex; + final seekTime = (frame - 0.5) / frameRate; + final ss = seekTime < 0 ? 0.0 : seekTime; + return [ + '-y', + '-ss', ss.toStringAsFixed(6), + ...sourceDecodeOptions, + '-i', videoPath, + '-frames:v', '1', + if (toneMap != null) ...['-vf', toneMap], + '-q:v', '2', + outputPath, + ]; + } + + /// Get the unprocessed source frame at an exact frame index — see + /// [beforeFrameArgs]. Future getFrameAtIndex(int frameIndex) async { if (_currentVideoPath == null || _ffmpegPath == null) return null; @@ -229,22 +260,17 @@ class PreviewGenerator { // Extract frame final outputPath = '$_tempDir/frame_$frame.jpg'; - final seekTime = ((frame - 0.5) / _frameRate); - final ss = seekTime < 0 ? 0.0 : seekTime; try { final result = await Process.run( _ffmpegPath!, - [ - '-y', - '-ss', ss.toStringAsFixed(6), - ...sourceDecodeOptions, - '-i', _currentVideoPath!, - '-frames:v', '1', - if (_toneMap case final toneMap?) ...['-vf', toneMap], - '-q:v', '2', - outputPath, - ], + beforeFrameArgs( + videoPath: _currentVideoPath!, + frameIndex: frame, + frameRate: _frameRate, + toneMap: _toneMap, + outputPath: outputPath, + ), ); if (result.exitCode == 0 && await File(outputPath).exists()) { diff --git a/app/test/integration_frame_mapping_test.dart b/app/test/integration_frame_mapping_test.dart index a42c378..f208642 100644 --- a/app/test/integration_frame_mapping_test.dart +++ b/app/test/integration_frame_mapping_test.dart @@ -563,9 +563,14 @@ void main() { await check(job('subframe_sync'), [12, 13, 21]); }, timeout: const Timeout(Duration(minutes: 10))); + // The in-point is past interlaced_test.avi's leading null frames (stored + // pts 0, then 5). A seek into that gap rebases to the first stored frame + // after it (issue #157's PTS reset), so a trim starting at 1..4 is shifted + // against the untrimmed numbering — the leading-repeat-slots problem of its + // own, not what this test is about. Same offsets as 3 -> 13, 19. test('from an in-point', () async { - await check(job('subframe_sync_trim', start: 3, end: 50), [13, 19], - origin: 3); + await check(job('subframe_sync_trim', start: 6, end: 53), [16, 22], + origin: 6); }, timeout: const Timeout(Duration(minutes: 10))); }); diff --git a/app/test/integration_seek_alignment_test.dart b/app/test/integration_seek_alignment_test.dart new file mode 100644 index 0000000..ce0d2ff --- /dev/null +++ b/app/test/integration_seek_alignment_test.dart @@ -0,0 +1,222 @@ +// Seek alignment (issue #157): a preview of source frame N, and a trimmed +// encode from frame S, must deliver exactly those source pictures. +// +// The worker's decoders write `rawvideo`, which ffmpeg times at a constant +// rate. After a seek, for many time bases (MP4 1/2997, MOV 1/11988, TS +// 1/90000) that timing used to emit the first kept frame TWICE: the preview +// showed frame N-1 next to the app's correct "before" frame N, and a trim of +// 41..52 came out 41, 41, 42 .. 51. Preview and encode shifted together, so +// integration_frame_mapping_test.dart (preview vs encode, on a 1/25 AVI the +// bug cannot touch) passed throughout. +// +// So everything here is checked against an INDEPENDENT reference: a +// sequential decode of the source picked by index (`select=eq(n,N)`), never +// one pipeline path against another. The fixtures are ones whose sequential +// numbering is the app's frame numbering (no leading null frames, no +// pulldown, video starting with the container). Sources where it isn't +// (MPEG-PS/TS, MPEG-2 in AVI, soft telecine, AVI null frames) are separate +// issues; see docs/reports/issue-157-seek-alignment. +@Tags(['heavy']) +library; + +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:path/path.dart' as p; +import 'package:uuid/uuid.dart'; + +import 'package:vapourbox/models/encoding_settings.dart'; +import 'package:vapourbox/models/processing_pipeline.dart'; +import 'package:vapourbox/models/qtgmc_parameters.dart'; +import 'package:vapourbox/models/video_job.dart'; +import 'package:vapourbox/services/preview_generator.dart'; + +import 'support/worker_harness.dart'; + +String get _outDir => '${WorkerHarness.outputDir}/seek_alignment'; + +String _resource(String name) => + p.join(WorkerHarness.repoRoot, 'Tests', 'TestResources', name); + +/// A fixture and why it is here. +class _Fixture { + final String file; + final String why; + const _Fixture(this.file, this.why); +} + +const _fixtures = [ + _Fixture('small_clip.mp4', 'MP4, time base 1/2997: affected before #157'), + _Fixture('seek_timebase_2997.mov', + 'MOV, time base 1/11988 (a user\'s ProRes timescale): affected before #157'), + _Fixture('face_restore_test.mp4', 'MP4, time base 1/30000: control'), +]; + +/// Frames checked in each fixture (all fixtures have at least 90). +const _previewFrames = [10, 41, 77]; +const _trimStart = 41; +const _trimEnd = 52; + +/// What the app learns from ffprobe, as `FieldOrderDetector` would send it. +class _Source { + final int width; + final int height; + final String pixFmt; + final double fps; + _Source(this.width, this.height, this.pixFmt, this.fps); +} + +double _rate(String? s) { + final parts = (s ?? '0/0').split('/'); + final n = double.tryParse(parts[0]) ?? 0; + final d = parts.length > 1 ? double.tryParse(parts[1]) ?? 0 : 1; + return d == 0 ? 0 : n / d; +} + +Future<_Source> _probe(String path) async { + final v = await WorkerHarness.firstStream(path, + selector: 'v:0', + entries: ['width', 'height', 'pix_fmt', 'r_frame_rate', 'avg_frame_rate']); + expect(v, isNotNull, reason: 'no video stream in $path'); + final r = _rate(v!['r_frame_rate'] as String?); + final a = _rate(v['avg_frame_rate'] as String?); + return _Source(v['width'] as int, v['height'] as int, v['pix_fmt'] as String, + r > 0 ? r : a); +} + +VideoJob _job(String input, _Source s, String name, {int? start, int? end}) { + const off = QTGMCParameters(enabled: false); + return VideoJob( + id: const Uuid().v4(), + inputPath: input, + outputPath: '$_outDir/$name.mkv', + qtgmcParameters: off, + processingPipeline: const ProcessingPipeline(deinterlace: off), + encodingSettings: EncodingSettings( + codec: VideoCodec.ffv1, + container: ContainerFormat.mkv, + audioMode: AudioMode.none, + ), + inputWidth: s.width, + inputHeight: s.height, + inputPixelFormat: s.pixFmt, + inputFrameRate: s.fps, + startFrame: start, + endFrame: end, + totalFrames: start != null && end != null ? end - start + 1 : null, + ); +} + +/// The app's own "before" picture of [frame], through the same argument +/// builder `PreviewGenerator.getFrameAtIndex` uses (PNG instead of JPEG, so +/// the comparison isn't measuring JPEG). +Future _beforeFrame(String video, int frame, double fps) async { + final out = File(p.join(Directory.systemTemp.path, + 'vb_seek_before_${DateTime.now().microsecondsSinceEpoch}.png')); + try { + final r = await Process.run( + WorkerHarness.ffmpegPath, + PreviewGenerator.beforeFrameArgs( + videoPath: video, + frameIndex: frame, + frameRate: fps, + outputPath: out.path, + ), + environment: WorkerHarness.ffmpegEnv, + ); + expect(r.exitCode, 0, reason: 'before frame $frame: ${r.stderr}'); + return await WorkerHarness.imageToRgb24(await out.readAsBytes(), label: 'before'); + } finally { + if (await out.exists()) await out.delete().catchError((_) => out); + } +} + +/// Asserts [img] is source frame [n] of [refs] (sequential frames keyed by +/// index): the closest of the neighbours, and near-identical to it. +/// +/// Relative, as in integration_frame_mapping_test.dart: an absolute bound +/// alone could not tell a one-frame shift from a colour conversion. The +/// absolute bound is there too, because both sides are the same decode and +/// RGB conversion of the same picture, so they agree (measured 0.0 on macOS +/// arm64). +void _expectFrame(String what, Uint8List img, int n, Map refs) { + final diffs = { + for (final e in refs.entries) e.key: WorkerHarness.meanAbsDiff(img, e.value), + }; + final best = diffs.entries.reduce((a, b) => a.value <= b.value ? a : b).key; + final table = diffs.entries + .map((e) => '${e.key}: ${e.value.toStringAsFixed(2)}') + .join(', '); + expect(best, n, reason: '$what is source frame $best, not $n ($table)'); + expect(diffs[n]!, lessThan(0.5), + reason: '$what is not the same picture as source frame $n ($table)'); +} + +Future> _neighbours(String video, int n) async => { + for (final k in [n - 1, n, n + 1]) + k: await WorkerHarness.frameRgb24(video, k, label: 'src'), + }; + +void main() { + setUpAll(() async { + await WorkerHarness.ensureReady(); + await Directory(_outDir).create(recursive: true); + }); + + for (final f in _fixtures) { + group('${f.file} (${f.why})', () { + final video = _resource(f.file); + late _Source source; + + setUpAll(() async { + expect(await File(video).exists(), isTrue, reason: 'missing $video'); + source = await _probe(video); + }); + + for (final n in _previewFrames) { + test('the preview of frame $n, every pass off, is source frame $n, ' + 'as is the app\'s before frame', () async { + final pv = await WorkerHarness.runPreview( + _job(video, source, 'preview').toJson(), + frame: n, + label: 'seek_preview_$n'); + expect(pv.success, isTrue, reason: '${pv.error}\n${pv.errorTail}'); + final preview = + await WorkerHarness.imageToRgb24(pv.png!, label: 'preview'); + final before = await _beforeFrame(video, n, source.fps); + final refs = await _neighbours(video, n); + + _expectFrame('the preview', preview, n, refs); + _expectFrame('the before frame', before, n, refs); + }); + } + + test('a trimmed lossless encode of $_trimStart..$_trimEnd starts at ' + '$_trimStart and ends at $_trimEnd', () async { + final r = await WorkerHarness.runJob( + _job(video, source, 'trim_${p.basenameWithoutExtension(f.file)}', + start: _trimStart, end: _trimEnd) + .toJson(), + label: 'seek_trim', + ); + expect(r.success, isTrue, reason: r.error); + final out = r.outputPath!; + final count = _trimEnd - _trimStart + 1; + + final frames = await WorkerHarness.firstStream(out, + selector: 'v:0', entries: ['nb_read_frames'], countFrames: true); + expect(int.parse(frames!['nb_read_frames'].toString()), count); + + // The first two frames catch a doubled first frame (41, 41, 42 ..); + // the last catches the frame that doubling pushed off the end. + for (final i in [0, 1, count - 1]) { + final n = _trimStart + i; + _expectFrame('output frame $i of the trim', + await WorkerHarness.frameRgb24(out, i, label: 'trim'), n, + await _neighbours(video, n)); + } + }); + }); + } +} diff --git a/docs/ENGINEERING_NOTES.md b/docs/ENGINEERING_NOTES.md index 936018b..4880cb6 100644 --- a/docs/ENGINEERING_NOTES.md +++ b/docs/ENGINEERING_NOTES.md @@ -3486,3 +3486,56 @@ anonymous download link for one asset returned 504 for a while (a GitHub incident; the API served the file) — re-uploading did not help, waiting did. A manifest's `url` is independent of its installed `name`, so a stuck asset could have been re-hosted under another name without touching code. + +### Seek alignment: the decoder repeated the first frame after a seek (issue #157, 2026-11-10) + +Full report with scripts: +[docs/reports/issue-157-seek-alignment/](reports/issue-157-seek-alignment/index.html). + +- Reported (videohelp forum, thread 419911 post #152): with every filter off, + the preview's Processed frame lagged the Original by one. +- Cause: the worker's decoders write `rawvideo`, which has + `AVFMT_NOTIMESTAMPS` but not `AVFMT_VARIABLE_FPS`, so the ffmpeg CLI times + it at a **constant rate**. The preview decoder (always) and a trimmed encode's + decoder seek to `(first - 0.5) / fps`; the kept frame then sits half a frame + after the output's zero, and for time bases such as MP4 1/2997, MOV 1/11988, + MKV 1/1000 and TS 1/90000 the constant-rate grid fills that gap by emitting + the frame twice. Preview: frame N-1 beside a correct Original (an image + muxer gets passthrough timing). Trim 41..52: `41, 41, 42 .. 51`. Noise + score: every sampled pair one picture twice, so sigma ~4.5 noise read 0.0 + and was never suggested. A soft-telecine trim lost 15 of 60 film frames. +- Fix: `setpts=PTS-STARTPTS` first in the seeking decoder's single `-vf` + (`source_decode::RESET_PTS_FILTER`), and no `-ss` at all when the preview + window starts at frame 0, so it decodes like the untrimmed encode (which + moved preview frame 0 onto the encode's frame 0 on two sources and left the + other 11 unchanged). Untrimmed encodes are bit-identical (framemd5, five + jobs incl. QTGMC). Not `-fps_mode passthrough`: on soft telecine it hands + over stored frames instead of the constant-rate slots an untrimmed encode + gets. +- Why no test saw it: preview and encode shifted together, and the + frame-mapping fixture (`interlaced_test.avi`, 1/25) has no doubled frame. +- Correction (review): that fixture's **leading** null frames (stored pts 0, + then 5) are the one case the reset changes. A seek into them was right + from the first real frame on (constant-rate timing filled the gap from the + seek point); the reset rebases to the frame after the gap, so a trim from + 1..4 runs up to two frames early. The frame-mapping test's "from an + in-point" used in-point 3 and failed; it now starts at 6. Mid-stream null + frames (dropped-frame captures, which report `avg == r` and so never reach + the VFR decoder) are unchanged: frames 100-104 dropped, old decoder and + reset give the same frames from every start 97-106 (both wrong for an + in-point inside the run). Subtracting the seek's half frame + instead (`PTS-0.5/fps/TB`, keeps gaps) fixes the same doubles but ties + and rounds early in a 1/25 time base and broke starts 98-99 there. Leading + null frames are a follow-up (task 16). Script: the report's + `scripts/gap_probe.py`. + `integration_seek_alignment_test.dart` compares the preview, the app's + Original (`PreviewGenerator.beforeFrameArgs`) and a trimmed FFV1 encode each + with an independent `select=eq(n,N)` decode; against the old worker it fails + 8 of 12. New fixture `seek_timebase_2997.mov` (1/11988). +- The noise report's thresholds stand: its fixtures are intra FFV1 MKVs, which + seek correctly, and its reference reads from frame 0. +- Found while measuring, **not fixed here**, all the same under passthrough + timing: MPEG-PS/TS seeks start at a later keyframe (DVD-style PS: 40 -> 48; + TS: 40 -> 50; the DVB-T capture); MPEG-2 in AVI lands 1-2 frames early; + AVI null frames and soft telecine give an untrimmed decode leading repeat + slots (79 slots for 75 frames; 122 for 120), so frame numbers disagree. diff --git a/docs/reports/README.md b/docs/reports/README.md index 533e59c..3223952 100644 --- a/docs/reports/README.md +++ b/docs/reports/README.md @@ -66,6 +66,7 @@ to it. | Date | Report | Outcome | |---|---|---| +| 2026-11-10 | [Issue #157: seek alignment, the decoder repeated the first frame after a seek](issue-157-seek-alignment/index.html) | Fixed: `setpts=PTS-STARTPTS` on every seeking `rawvideo` decoder. MP4 1/2997, MOV 1/11988, MKV 1/1000 sources previewed frame N-1 and trimmed encodes doubled their first frame (41, 41, 42 .. 51); now right from every start tried, untrimmed encodes bit-identical, and noisy sources the noise score read as 0.0 now score ~4.5. Also found, not fixed: MPEG-PS/TS seeks land on a later keyframe, MPEG-2 in AVI 1-2 frames early, AVI null frames / soft telecine add leading repeat slots | | 2026-11-10 | [Issue #148: Frame Rate combined with Noise Reduction and Sharpen](issue-148-frame-rate-combined/index.html) | Not reproduced on macOS arm64 across 5 denoisers x 4 sharpeners x FlowFPS/RIFE x 8/10-bit; no pipeline change; nightly regression test added to cover Windows/MVTools v24 and other GPUs; reporter asked for a clip | | 2026-11-09 | [Noise and halo scores for the pass list](2026-11-noise-halo-scores/index.html) | Built: `--detect-noise-halo` badges Noise Reduction at a motion-compensated noise sigma ≥ 3.5 and Dehalo at a two-sided edge overshoot ≥ 6% of the step; no false positives on 154 fixtures (clean max 2.06 / 1.48), catches white noise from sigma 4 and tape/grain noise from sigma 6, misses sharpening of already-soft edges. VCG's signalstats TOUT and halo ratio did not separate the fixtures; a spatial (Immerkær) noise score was rejected as blind to tape and grain noise | | 2026-11-08 | [Crop & Resize: BT.601 → BT.709 on SD → HD, and Detect borders](2026-11-crop-detect-709/index.html) | Built: matrix-only 601 → 709 conversion when the output is HD (default Auto; patches within 0.67 levels of the source; a gamut conversion rejected: it moved 75% green by 55 levels on players without colour management); `--detect-crop` finds blanking, bars and the head-switching band exactly on real-picture fixtures, and matches a by-eye measurement of a DVB-T broadcast | diff --git a/docs/reports/issue-157-seek-alignment/img/01-original-frame-41.png b/docs/reports/issue-157-seek-alignment/img/01-original-frame-41.png new file mode 100644 index 0000000000000000000000000000000000000000..f61807f3d4cde4c56b0b3445519b70dc1b8bd8ce GIT binary patch literal 42052 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%0DI{s`X3sB2cmDeD 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 O@?5=aDWSxj9{xYYhWYFO literal 0 HcmV?d00001 diff --git a/docs/reports/issue-157-seek-alignment/img/04-difference-before-fix.png b/docs/reports/issue-157-seek-alignment/img/04-difference-before-fix.png new file mode 100644 index 0000000000000000000000000000000000000000..0c67e7ecf3a97d6532d4730fb521d5d951534b47 GIT binary patch literal 46302 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 d{(aW#Nd608QcPQ!2DGubY zCwRIzhE&XXd)1Ja!GPz$hES>cGszoewhBHuEyM6&cQiZ00XH@t21aJKh6YAvhXW0a z3JC`o1Pl@wI3x@hSa>8Dm`0^XgJm>1jAnz;(qXhz9IXw|DoGppS?qNgWzO25TG!Ln K&t;ucLK6V`XGpsM literal 0 HcmV?d00001 diff --git a/docs/reports/issue-157-seek-alignment/index.html b/docs/reports/issue-157-seek-alignment/index.html new file mode 100644 index 0000000..1905b61 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/index.html @@ -0,0 +1,304 @@ + + + + + +Issue #157: seek alignment + + + +
+

Issue #157 — after a seek, the decoder repeated the first frame

+

2026-11-10 · issue #157 +(reported on the videohelp forum, thread 419911, post #152) · measured on an Apple M-series Mac +(macOS arm64), deps 1.16.0 (FFmpeg 9.0), against the worker of app 1.7.0 and the same worker with the fix

+ +
+Outcome: fixed. With every filter off, the preview's Processed frame lagged the +Original by one frame. Cause: the worker's source decoders write rawvideo, so ffmpeg +times their output at a constant rate, and after a seek, for many time bases, that timing +emitted the first kept frame twice. Every later frame landed one slot +late. The same decoder feeds trimmed encodes and the detectors, so: +
    +
  • Preview: showed frame N−1 (the app's own Original decode showed N).
  • +
  • Trimmed encodes: a trim of 41..52 came out 41, 41, 42 … 51: first +frame doubled, last frame lost, picture one frame late against the audio.
  • +
  • Noise score: every sampled pair was one picture twice, so a source with +sigma ≈ 4.5 noise scored 0.0 and Noise Reduction was never suggested.
  • +
+The fix puts setpts=PTS-STARTPTS at the front of a seeking decoder's one +-vf (worker/src/source_decode.rs), and stops the preview passing a +pointless -ss 0, so a window at frame 0 decodes exactly like an untrimmed encode. +Every affected source now decodes the right frames from every start +tried; untrimmed encodes are bit-identical to before. +
+ +

1. The mechanism

+

The ffmpeg CLI picks an output timing mode from the muxer's flags. rawvideo declares +AVFMT_NOTIMESTAMPS but not AVFMT_VARIABLE_FPS, so it gets +constant-rate timing: frames are placed on a grid at the output rate, and a frame +is repeated or dropped to keep the grid filled. An image muxer (the app's JPEG Original frame) +declares both, so it gets passthrough timing. That is why the Original side was right and the +Processed side was not.

+

Both seeking decoders seek to (first − 0.5) / fps, half a frame before the frame +wanted, so ffmpeg's accurate seek keeps exactly that frame. Its timestamp then sits half a frame +after the output's zero. For some time bases, the constant-rate grid fills that gap by emitting +the frame twice. setpts=PTS-STARTPTS rebases the first kept frame to 0, so there is no +gap to fill.

+

-fps_mode passthrough would also remove the gap, but it changes what a +soft-telecine source decodes to (§5). It is the right tool only for the VFR decoder +(timeline_decoder_args, issue #137), which places stored frames in the script itself +and is untouched here.

+ +

2. Which sources were affected

+

8 frames decoded from source frame 40, seeking as the worker does. Each picture is named by +its index in an independent sequential decode of the same file (MD5 of the luma +plane; -fps_mode passthrough, every stored frame once, no seek). The last two columns +count, over 7–8 start frames (1, 10, 40–43, 77, near the end), how often the 8 frames were exactly +start … start+7. Script: dup_probe.py.

+
+ + + + + + + + + + + + + + + + + + + + +
SourceTime baseBefore (default timing)After (setpts)Right, beforeRight, after
Affected: fixed
small_clip.mp4 (H.264, 29.97)1/299740, 40, 41 … 4640, 41 … 470/88/8
seek_timebase_2997.mov (new fixture, H.264, 29.97)1/1198840, 40, 41 … 4640, 41 … 470/88/8
ProRes 422 Proxy MOV, 29.97 (variant)1/1198840, 40, 41 … 4640, 41 … 470/88/8
H.264 MKV, 25 (variant)1/100040, 40, 41 … 4640, 41 … 470/88/8
Noisy ProRes HQ MOV / noisy H.264 MP4 (variants)1/11988, 1/299740, 40, 41 … 4640, 41 … 470/88/8
Unaffected: unchanged
colorize_test.mp4 (24)1/1228840 … 4740 … 478/88/8
face_restore_test.mp4 (29.97)1/3000040 … 4740 … 478/88/8
prores422_10bit_telecine.mov (30 frames)1/30000rightright2/22/2
pal-sd-25.mov1/25static colour bars: every frame identical, so this fixture can't show a shift either way
Seek lands on the wrong picture for other reasons (§6): the duplicate run is gone, the position is not fixed
pal-dvbt-fieldcoded-25i.ts1/9000028 ×828, 29 … 350/80/8
MPEG-2 PAL DVD program stream, open GOP (variant)1/9000048 ×848, 49 … 550/81/8
H.264 MPEG-TS, 25 (variant)1/9000050 ×850, 51 … 570/80/8
hard_telecine_test.avi (MPEG-2 in AVI)1001/3000038, 39 … 4538, 39 … 450/80/8
interlaced_test.avi (Lagarith, 75 stored frames)1/2536 … 4336 … 430/71/7
soft_telecine_test.mkv (MPEG-2, 23.976)1/100040, 40, 40, 42, 42, 44, 45, 4540, 40, 40, 41, 42 … 450/80/8
+
+

The "variant" rows are built by make_variants.py from ffmpeg's +testsrc2 (every frame differs) and are not committed. The committed +seek_timebase_2997.mov is made by +Tests/TestResources/generate_seek_timebase_test.sh; its 1/11988 timescale is the one +from a user's ProRes clip in the same forum thread. Limit: MD5 identity says +which stored picture came out, which is exact for this question, but only for decodes of the +same file; it says nothing about colour.

+

Not fully confirmed: the plan asked for a TS "without an audio-first gap". ffmpeg's +MPEG-TS muxer adds its own 1.4 s mux delay, so the variant's video starts at 1.48 s anyway, and like +the PS variant its seek lands on a later keyframe. Neither TS file isolates the duplicate from the +position bug, and both are recorded as follow-up work (§6).

+ +

3. What the user saw, and what they see now

+

Script: worker_probe.py runs the worker itself, with every pass off. The preview of +frame N, and the app's Original (the exact arguments of PreviewGenerator.beforeFrameArgs, +to PNG), are each compared with the sequential decode's frames N−2 … N+2 by mean absolute RGB +difference; the closest is reported. A trimmed FFV1 encode of 41..52 is named frame by frame by MD5.

+ + + + + + +
SourcePreview of 10 / 41 / 60, beforeafterOriginalTrim 41..52, beforeafter
small_clip.mp4N−1, N−1, N−1N, N, NN (both)41, 41, 42 … 5141, 42 … 52
seek_timebase_2997.movN−1, N−1, N−1N, N, NN (both)41, 41, 42 … 5141, 42 … 52
colorize_test.mp4unchanged; nearly static black-and-white, so the nearest-frame test is not decisive (neighbours within 2 levels of each other)same as preview41 … 5241 … 52
interlaced_test.aviunchanged; against the sequential decode it reads N−2 at 41 and 60 because of its 4 leading null frames (§6)same as preview37 … 48 both (same reason)
+

Preview against Original, before the fix: mean difference 2.7–11.5 on small_clip.mp4, +4.0–5.5 on the MOV. After: 0.00 on both.

+ +
+small_clip.mp4 frame 41, the Original +
1. The Original side for small_clip.mp4 +frame 41: the app's own decode, correct before and after. Every image here is 2× nearest-neighbour.
+
+
+Processed preview of frame 41 before the fix +
2. The Processed preview of frame 41 before the fix, every pass +off. It is frame 40: compare the man's chin and collar with image 1.
+
+
+Difference between preview and Original before the fix, amplified 8x +
3. |image 2 − image 1|, amplified 8×. Every moving edge lights up: +with nothing processed, this is the whole of what the "one frame behind" report saw.
+
+
+Processed preview of frame 41 after the fix +
4. The Processed preview of frame 41 after the fix.
+
+
+Difference after the fix: black +
5. |image 4 − image 1|, amplified 8×: black, i.e. the same picture.
+
+ +

4. What must not change

+

Untrimmed encodes

+

An untrimmed encode does not seek, so its decoder arguments are unchanged by construction (unit +test decoders_that_do_not_seek_are_unchanged). Measured anyway: every decoded frame of an +FFV1 encode by the worker before and after (framemd5) is +identical for small_clip.mp4 (3151 frames), +seek_timebase_2997.mov (90), interlaced_test.avi with no passes (75) and with +QTGMC (150), and soft_telecine_test.mkv (120). Script: identity_probe.py.

+

The preview of frame 0

+

The preview used to pass -ss 0.000000 for a window starting at frame 0. That +is a seek: ffmpeg re-bases timestamps on the seek point and trims anything before it. +The fix passes no -ss there, like an untrimmed encode. Measured on all 13 sources +(frame0_probe.py): preview frame 0 is unchanged on 11 and changed on two, +hard_telecine_test.avi and the DVB-T .ts. On both it now +equals frame 0 of the untrimmed encode (mean difference 0.00; before 9.24 and +2.13). With setpts alone, preview frame 0 on late-starting video would have depended on the +seek; that is why the decision is "no -ss, no reset" rather than "always reset".

+

Telecine

+

telecine_probe.py, trimmed encodes of frames 10..69:

+
    +
  • IVTC on hard_telecine_test.avi: 48 frames before and after, +bit-identical (this source has no duplicate to remove).
  • +
  • No passes on soft_telecine_test.mkv: 60 frames before and after. Before, +15 of the 60 stored film frames were missing from the output (11, 13, 16, 18, +23, …), replaced by repeats of their neighbours. After, none are missing. +The first frame still comes out three times, exactly as it does at the start of an untrimmed decode +(the untrimmed decode of this file is 122 slots for 120 stored frames).
  • +
  • Soft Telecine method, same file: 48 frames before and after; the pictures differ. +That method drops 1 frame in 5 even untrimmed when the job's rate is 23.976 (25 of 120 missing). That +is its own behaviour, recorded in §6, not something this fix changes.
  • +
+

So setpts keeps what a constant-rate decode does with pulldown. The extra repeat runs and +drops in the default column came from the seek gap, not the source.

+ +

5. The detectors

+

--detect-crop, --detect-noise-halo and --detect-native decode +through preview_decoder_args, so they get the fix. detector_probe.py runs the +first two with the worker before and after, and counts how many of the noise detector's 24 sampled +pairs the old decoder delivered as the same picture twice:

+ + + + + + + +
SourcePairs that were one picture twiceNoise before → afterSuggested
Noisy H.264 MP4, 1/2997 (temporal noise, ffmpeg noise=alls=10)24/240.0 → 4.62no → yes
Noisy ProRes HQ MOV, 1/11988 (same noise)24/240.0 → 4.18no → yes
small_clip.mp4, seek_timebase_2997.mov, clean variants24/240.0 → 0.0no → no
pal-dvbt-fieldcoded-25i.ts15/240.0 → 0.0no → no
interlaced_test.avi, colorize_test.mp4, face_restore_test.mp40/24unchangedunchanged
+

Halo scores moved by under 0.7 (none near the 6.0 threshold), and the crop report (crop, crop with +bars, confidence) was identical on every source. On the affected clean sources the noise score stays +0.0 because they are compressed clean video, whose skipped blocks read noiseless anyway (as the noise +report already says). Limit: the noisy sources are synthetic; the point is only that +a measurable noise was read as none.

+

The noise report's calibration is not affected. Its fixtures +(2026-11-noise-halo-scores) are intra-frame FFV1 +MKVs, which decode correctly after a seek (checked: an FFV1 MKV at 25 fps matched from every start +frame). Its reference measurement reads from frame 0 without seeking. Only its informational full-clip +worker runs on small_clip.mp4 and the DVB-T .ts read duplicated pairs, and both +score 0.0 before and after. Its thresholds stand and its scripts are unchanged.

+ +

6. Not fixed here: the seek lands on the wrong picture

+

Measuring against an independent decode turned up sources where the seek itself, not the timing, +lands somewhere else. Every row is the same with -fps_mode passthrough, so it is not this +bug. They are separate follow-ups:

+
    +
  • MPEG-PS and MPEG-TS (DVD program stream, H.264 TS, the DVB-T capture): the decode +starts at a later keyframe (start 40 → 48 with a 12-frame GOP, → 50 with a 25-frame GOP). The +earlier hypothesis for the DVB-T file, "video starts 1.32 s after its audio", may be part of it. This is +what DVD/VOB users get, so it is the most important of the three.
  • +
  • MPEG-2 in AVI (hard_telecine_test.avi): lands 1–2 frames early (start 10 +→ 8, 40 → 38), and start 1 → 45.
  • +
  • Leading repeats in an untrimmed decode: interlaced_test.avi decodes to 79 +constant-rate slots for 75 stored frames (frame 0 four times, frame 1 twice: AVI null frames), and +soft_telecine_test.mkv to 122 slots for 120. The app's frame numbers and the encode's then +disagree by those slots, and the Soft Telecine method's 1-in-5 drop depends on which rate the job +carries.
  • +
  • Correction (review): one case this fix does change. A seek into a run of +leading null frames (interlaced_test.avi, stored pts 0 then 5, in-points 1–4) used to be +right from the first real frame on, because constant-rate timing filled the gap from the seek point; the +reset rebases to the first stored frame after the gap, so the whole trim now runs up to two frames early +(an in-point of 3: 4, 6, 7 … instead of 4, 4, 4, 6, 7 …; the first slot is wrong either way). This broke +integration_frame_mapping_test.dart's "from an in-point" (in-point 3), which now starts at 6, +past the gap. A seek into a mid-stream null-frame run (a dropped-frame capture) is unchanged: +measured on an FFV1 AVI with frames 100–104 dropped, the old decoder and the reset give the same frames from +every start 97–106 (both wrong for an in-point inside the run, 100–104). Leading null frames are task 16's. +scripts/gap_probe.py.
  • +
+

integration_seek_alignment_test.dart covers only sources whose sequential numbering +is the app's numbering, so it does not claim these.

+ +

7. Decisions

+
    +
  • setpts=PTS-STARTPTS, first in the one -vf: it rebases to the +first frame the accurate seek kept (the seek's own trim runs before the user filter chain), and +ffmpeg honours only the last -vf, so it can't be a second one. Measured against the alternative of subtracting the seek's fixed half +frame (setpts=PTS-0.5/fps/TB, which would keep a gap after the seek point): it fixes the same +49 doubled starts, but in a 1/25 time base the half frame ties and rounds a frame early, and it broke seeks +just before a mid-stream null-frame run that the reset handles like the old decoder.
  • +
  • Not -fps_mode passthrough: same result on ordinary sources, but on +soft telecine it hands over stored frames (40 … 47) instead of the constant-rate slots an untrimmed +encode gets. That would make trimmed and untrimmed encodes of one source disagree.
  • +
  • Only when the decoder seeks: untrimmed encodes stay byte-identical, and the preview +of frame 0 decodes like the encode of frame 0 (§4).
  • +
  • Tested against an independent decode: preview-vs-encode tests could never see this, +because both paths shifted together. The heavy test compares the preview, the app's Original and a +trimmed encode each with select=eq(n,N) of the source. It fails 8 of 12 cases against the +worker before the fix.
  • +
+ +

8. What wasn't tested

+
    +
  • Windows and Linux. The duplicate comes from the ffmpeg CLI's timing logic, not from a decoder or +the CPU, and every platform runs FFmpeg 9.0, so the same behaviour is expected. The heavy test runs +nightly on all four.
  • +
  • VFR sources: their decoder (timeline_decoder_args) already uses passthrough timing and +is unchanged.
  • +
  • Descale's --detect-native wasn't re-run: it decodes single frames, so the fix only +changes which frame it measures.
  • +
+ +

9. Reproduce

+
cd worker && cargo build                      # the "after" worker
+# build a "before" worker from the commit before the fix, next to a deps/ directory
+BEFORE_WORKER=/path/to/before/vapourbox-worker \
+  docs/reports/issue-157-seek-alignment/scripts/run.sh
+

scripts/: seeklib.py (shared decode helpers), make_variants.py, +dup_probe.py (§2), worker_probe.py (§3), images.py (images 1–5), +identity_probe.py, frame0_probe.py, telecine_probe.py (§4), +detector_probe.py (§5), run.sh (all of them). Tests: +app/test/integration_seek_alignment_test.dart (heavy) and the unit tests in +worker/src/source_decode.rs.

+
+ + diff --git a/docs/reports/issue-157-seek-alignment/scripts/detector_probe.py b/docs/reports/issue-157-seek-alignment/scripts/detector_probe.py new file mode 100644 index 0000000..ed59013 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/detector_probe.py @@ -0,0 +1,49 @@ +"""The detectors decode with the preview's decoder, so the fix reaches them. +Runs `--detect-noise-halo` and `--detect-crop` with the worker before and after +the fix and prints what changed. For the noise score, also counts how many of +the sampled pairs the old decoder delivered as the same picture twice (the +motion-compensated difference of such a pair is zero: no noise). + + python3 detector_probe.py --before WORKER --after WORKER [source ...]""" +import json +import os +import subprocess +import sys +from seeklib import FF, RES, WORK, probe, sequential, seek_decode +import make_variants +from worker_probe import job_for + +FIXTURES = ['small_clip.mp4', 'seek_timebase_2997.mov', 'face_restore_test.mp4', + 'colorize_test.mp4', 'interlaced_test.avi', 'pal-dvbt-fieldcoded-25i.ts'] + + +def detect(worker, flag, src, s, total): + r = subprocess.run([worker, flag, '--config', + job_for(src, s, os.path.join(WORK, 'x.mkv'), totalFrames=total)], + capture_output=True, text=True) + return json.loads(r.stdout.strip().splitlines()[-1]) + + +def main(): + a = sys.argv[1:] + before, after = a[a.index('--before') + 1], a[a.index('--after') + 1] + rest = [x for x in a if x not in ('--before', '--after', before, after)] + paths = rest or [os.path.join(RES, f) for f in FIXTURES] + make_variants.build() + for src in paths: + s = probe(src) + total = len(sequential(src, 100000)) + nb, na = (detect(w, '--detect-noise-halo', src, s, total) for w in (before, after)) + same = sum(1 for f in nb.get('frames', []) + if len(set(seek_decode(src, f, 2, 'default'))) == 1) + cb, ca = (detect(w, '--detect-crop', src, s, total) for w in (before, after)) + keys = ('crop', 'cropWithBars', 'confidence') + print(f"{os.path.basename(src):28s} noise {nb.get('noise')} -> {na.get('noise')} " + f"(high {nb.get('noiseHigh')} -> {na.get('noiseHigh')}; {same}/{len(nb.get('frames', []))} " + f"old pairs were one picture twice) halo {nb.get('halo')} -> {na.get('halo')} " + f"crop {'unchanged' if all(cb.get(k) == ca.get(k) for k in keys) else 'CHANGED'}" + + ('' if all(cb.get(k) == ca.get(k) for k in keys) else + f" {[cb.get(k) for k in keys]} -> {[ca.get(k) for k in keys]}")) + + +if __name__ == '__main__': + main() diff --git a/docs/reports/issue-157-seek-alignment/scripts/dup_probe.py b/docs/reports/issue-157-seek-alignment/scripts/dup_probe.py new file mode 100644 index 0000000..a49eb2c --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/dup_probe.py @@ -0,0 +1,74 @@ +"""Decode 8 frames from several start frames, the way the worker's decoders +seek, under three output timings, and name each picture by its index in an +independent sequential decode (MD5 of the luma plane). + + python3 dup_probe.py [--json out.json] [source ...] + +With no sources: every committed fixture plus make_variants.py's variants. +Reference: the sequential `-fps_mode passthrough` decode (every stored frame +once). `slots` adds the comparison against the untrimmed constant-rate decode, +which is what an untrimmed encode feeds the script (the right reference for +soft telecine, whose pulldown repeats are slots of their own).""" +import json +import os +import sys +from seeklib import RES, probe, sequential, seek_decode, indices +import make_variants + +FIXTURES = ['small_clip.mp4', 'seek_timebase_2997.mov', 'interlaced_test.avi', + 'colorize_test.mp4', 'face_restore_test.mp4', 'pal-sd-25.mov', + 'prores422_10bit_telecine.mov', 'hard_telecine_test.avi', + 'soft_telecine_test.mkv', 'pal-dvbt-fieldcoded-25i.ts'] +COUNT = 8 + + +def starts_for(n): + s = [1, 10, 40, 41, 42, 43, 77] + return [x for x in s if x + COUNT < n] + ([n - COUNT - 2] if n > 30 else []) + + +def run(path): + s = probe(path) + seq = sequential(path, 100000) + slots = sequential(path, 100000, timing='default') + rows = [] + for start in starts_for(len(seq)): + row = {'start': start} + for mode in ('default', 'passthrough', 'setpts'): + got = seek_decode(path, start, COUNT, mode) + row[mode] = indices(got, seq) + row[mode + '_slots'] = indices(got, slots) + row[mode + '_ok'] = got == seq[start:start + COUNT] + row[mode + '_slots_ok'] = got == slots[start:start + COUNT] + rows.append(row) + return {'source': os.path.basename(path), 'time_base': s['time_base'], + 'codec': s['codec_name'], 'fps': round(s['fps'], 3), + 'start_time': s.get('start_time'), 'frames': len(seq), + 'slots': len(slots), 'rows': rows} + + +def main(): + args = sys.argv[1:] + out = None + if args[:1] == ['--json']: + out, args = args[1], args[2:] + paths = args or [os.path.join(RES, f) for f in FIXTURES] + make_variants.build() + results = [] + for p in paths: + r = run(p) + results.append(r) + print(f"== {r['source']} tb {r['time_base']} {r['codec']} {r['fps']} fps " + f"start_time {r['start_time']} {r['frames']} frames ({r['slots']} slots)") + for row in r['rows']: + for mode in ('default', 'passthrough', 'setpts'): + flag = 'ok ' if row[mode + '_ok'] else 'BAD' + sflag = 'ok ' if row[mode + '_slots_ok'] else 'BAD' + print(f" start {row['start']:4d} {mode:11s} vs seq {flag} {row[mode]}" + f" vs slots {sflag} {row[mode + '_slots']}") + if out: + with open(out, 'w') as f: + json.dump(results, f, indent=1) + + +if __name__ == '__main__': + main() diff --git a/docs/reports/issue-157-seek-alignment/scripts/frame0_probe.py b/docs/reports/issue-157-seek-alignment/scripts/frame0_probe.py new file mode 100644 index 0000000..8ee0c7a --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/frame0_probe.py @@ -0,0 +1,50 @@ +"""Preview of frame 0 before and after the fix, compared with each other and +with frame 0 of an untrimmed lossless encode (the fix stops passing `-ss 0` +when the window starts at frame 0, matching the untrimmed encode, which never +seeks). + + python3 frame0_probe.py --before WORKER --after WORKER [source ...]""" +import os +import subprocess +import sys +from seeklib import FF, RES, WORK, probe +import make_variants +from worker_probe import job_for, mad + +FIXTURES = ['small_clip.mp4', 'seek_timebase_2997.mov', 'interlaced_test.avi', 'colorize_test.mp4', + 'face_restore_test.mp4', 'prores422_10bit_telecine.mov', 'hard_telecine_test.avi', + 'soft_telecine_test.mkv', 'pal-dvbt-fieldcoded-25i.ts'] + + +def preview_rgb(worker, src, s): + r = subprocess.run([worker, '--config', job_for(src, s, os.path.join(WORK, 'x.mkv')), + '--preview', '--frame', '0'], capture_output=True, check=True) + return rgb(['-f', 'png_pipe', '-i', '-'], r.stdout) + + +def rgb(args, stdin=None): + return subprocess.run([FF, '-v', 'error', *args, '-frames:v', '1', '-f', 'rawvideo', + '-pix_fmt', 'rgb24', '-'], input=stdin, capture_output=True, + check=True).stdout + + +def main(): + a = sys.argv[1:] + before, after = a[a.index('--before') + 1], a[a.index('--after') + 1] + rest = [x for x in a if x not in ('--before', '--after', before, after)] + paths = rest or [os.path.join(RES, f) for f in FIXTURES] + make_variants.build() + for src in paths: + s = probe(src) + enc = os.path.join(WORK, 'full.mkv') + if os.path.exists(enc): + os.remove(enc) + subprocess.run([after, '--config', job_for(src, s, enc, endFrame=4, totalFrames=5)], + capture_output=True, check=True) + e0 = rgb(['-i', enc]) + b, f = preview_rgb(before, src, s), preview_rgb(after, src, s) + print(f"{os.path.basename(src):30s} preview of frame 0 unchanged: {b == f} " + f"vs encode frame 0, mean abs diff: before {mad(b, e0):.2f}, after {mad(f, e0):.2f}") + + +if __name__ == '__main__': + main() diff --git a/docs/reports/issue-157-seek-alignment/scripts/gap_probe.py b/docs/reports/issue-157-seek-alignment/scripts/gap_probe.py new file mode 100644 index 0000000..6541002 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/gap_probe.py @@ -0,0 +1,58 @@ +"""Review correction (§6, §7): how the PTS reset, the old decoder and a fixed +half-frame shift handle null frames, measured against the untrimmed +constant-rate decode (the app's frame numbering). + + python3 gap_probe.py + +Two sources: interlaced_test.avi (leading null frames: stored pts 0, then 5) +and an FFV1 AVI built here from testsrc2 with stored frames 100-104 dropped +(the avi muxer writes them as null frames, like a dropped-frame capture). +Prints each start's first 8 pictures as slot indices, and whether all 14 +decoded frames match the untrimmed slots ('ALL'), only the last 6 ('tail'), +or neither.""" +import os +import subprocess +from seeklib import FF, RES, WORK, probe, sequential, indices, _raw, _hashes + +MODES = { + 'old': lambda s: None, + 'reset': lambda s: 'setpts=PTS-STARTPTS', + 'half': lambda s: f'setpts=PTS-{0.5 / s["fps"]:.9f}/TB', +} +COUNT = 14 + + +def decode(path, start, vf): + s = probe(path) + ss = max(0.0, (start - 0.5) / s['fps']) + v = vf(s) + return _hashes(_raw(['-ss', f'{ss:.6f}', '-apply_cropping', 'codec', '-i', path, + '-map', '0:v:0', '-frames:v', str(COUNT)] + (['-vf', v] if v else [])), + s['width'], s['height']) + + +def mid_gap_avi(): + out = os.path.join(WORK, 'mid_gap.avi') + subprocess.run([FF, '-v', 'error', '-y', '-f', 'lavfi', + '-i', 'testsrc2=size=320x240:rate=25:duration=12', + '-vf', "select='not(between(n,100,104))'", '-fps_mode', 'passthrough', + '-c:v', 'ffv1', out], check=True) + return out + + +def run(path, starts): + slots = sequential(path, 100000, timing='default') + print(f'== {os.path.basename(path)} {len(slots)} slots') + for st in starts: + want = indices(slots[st:st + COUNT], slots) + cells = [] + for name, vf in MODES.items(): + got = indices(decode(path, st, vf), slots) + verdict = 'ALL ' if got == want else ('tail' if got[-6:] == want[-6:] else 'BAD ') + cells.append(f'{name}:{verdict} {got[:8]}') + print(f' {st:4d} want {want[:8]}\n ' + '\n '.join(cells)) + + +if __name__ == '__main__': + run(os.path.join(RES, 'interlaced_test.avi'), range(1, 8)) + run(mid_gap_avi(), [50, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 150]) diff --git a/docs/reports/issue-157-seek-alignment/scripts/identity_probe.py b/docs/reports/issue-157-seek-alignment/scripts/identity_probe.py new file mode 100644 index 0000000..2776f1f --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/identity_probe.py @@ -0,0 +1,49 @@ +"""Untrimmed encodes must not change: the fix only touches decoders that seek. +Encodes each source untrimmed with the worker before and after the fix, FFV1, +and compares every decoded frame (ffmpeg's framemd5 of the video stream). + + python3 identity_probe.py --before WORKER --after WORKER""" +import os +import subprocess +import sys +from seeklib import FF, RES, WORK, probe +from worker_probe import job_for + +CASES = [('small_clip.mp4', False), ('seek_timebase_2997.mov', False), + ('interlaced_test.avi', False), ('interlaced_test.avi', True), + ('soft_telecine_test.mkv', False)] + + +def framemd5(path): + out = subprocess.run([FF, '-v', 'error', '-i', path, '-map', '0:v:0', '-f', 'framemd5', '-'], + capture_output=True, text=True, check=True).stdout + return [l.split(',')[-1].strip() for l in out.splitlines() if l and not l.startswith('#')] + + +def encode(worker, src, qtgmc, tag): + s = probe(src) + out = os.path.join(WORK, f'ident_{tag}.mkv') + if os.path.exists(out): + os.remove(out) + extra = {} + if qtgmc: + q = {'enabled': True, 'preset': 'Super Fast', 'tff': True} + extra = {'qtgmcParameters': q, 'processingPipeline': {'deinterlace': q}} + r = subprocess.run([worker, '--config', job_for(src, s, out, **extra)], capture_output=True) + if r.returncode: + raise SystemExit(r.stderr.decode(errors='replace')[-800:]) + return framemd5(out) + + +def main(): + a = sys.argv[1:] + before, after = a[a.index('--before') + 1], a[a.index('--after') + 1] + for name, qtgmc in CASES: + src = os.path.join(RES, name) + b, f = encode(before, src, qtgmc, 'b'), encode(after, src, qtgmc, 'a') + print(f"{name:26s} {'QTGMC' if qtgmc else 'no passes':9s} {len(b)} frames " + f"identical: {b == f}") + + +if __name__ == '__main__': + main() diff --git a/docs/reports/issue-157-seek-alignment/scripts/images.py b/docs/reports/issue-157-seek-alignment/scripts/images.py new file mode 100644 index 0000000..bc99ed7 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/images.py @@ -0,0 +1,59 @@ +"""Screenshots for the report: small_clip.mp4 frame 41 as the app shows it. + + python3 images.py --before WORKER --after WORKER + +Writes ../img/: the Original (the app's before frame), the Processed preview +from the worker before and after the fix (every pass off), and each preview's +difference from the Original, amplified 8x (black = identical).""" +import os +import subprocess +import sys +from seeklib import FF, RES, WORK, probe +from worker_probe import job_for, before_frame_args + +IMG = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'img') +SRC = os.path.join(RES, 'small_clip.mp4') +FRAME = 41 + + +def preview(worker, out): + s = probe(SRC) + r = subprocess.run([worker, '--config', job_for(SRC, s, os.path.join(WORK, 'x.mkv')), + '--preview', '--frame', str(FRAME)], capture_output=True, check=True) + with open(out, 'wb') as f: + f.write(r.stdout) + + +def scaled(src, out): + """2x nearest-neighbour, so the pixels stay real.""" + subprocess.run([FF, '-y', '-v', 'error', '-i', src, '-vf', 'scale=iw*2:ih*2:flags=neighbor', + '-frames:v', '1', out], check=True) + + +def diff(a, b, out): + subprocess.run([FF, '-y', '-v', 'error', '-i', a, '-i', b, '-filter_complex', + '[0:v]format=rgb24[x];[1:v]format=rgb24[y];[x][y]blend=all_mode=difference,' + 'lutrgb=r=val*8:g=val*8:b=val*8,scale=iw*2:ih*2:flags=neighbor', + '-frames:v', '1', out], check=True) + + +def main(): + a = sys.argv[1:] + before, after = a[a.index('--before') + 1], a[a.index('--after') + 1] + os.makedirs(IMG, exist_ok=True) + s = probe(SRC) + orig = os.path.join(WORK, 'orig.png') + subprocess.run([FF, '-v', 'error', *before_frame_args(SRC, FRAME, s['fps'], orig)], check=True) + old, new = os.path.join(WORK, 'pv_old.png'), os.path.join(WORK, 'pv_new.png') + preview(before, old) + preview(after, new) + scaled(orig, os.path.join(IMG, '01-original-frame-41.png')) + scaled(old, os.path.join(IMG, '02-processed-before-fix.png')) + scaled(new, os.path.join(IMG, '03-processed-after-fix.png')) + diff(old, orig, os.path.join(IMG, '04-difference-before-fix.png')) + diff(new, orig, os.path.join(IMG, '05-difference-after-fix.png')) + print('wrote', sorted(os.listdir(IMG))) + + +if __name__ == '__main__': + main() diff --git a/docs/reports/issue-157-seek-alignment/scripts/make_variants.py b/docs/reports/issue-157-seek-alignment/scripts/make_variants.py new file mode 100644 index 0000000..02e1e36 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/make_variants.py @@ -0,0 +1,58 @@ +"""Build the source variants the probe runs on top of the committed fixtures, +into $SEEK_WORK/variants. Each is testsrc2 (every frame differs), so a picture +identifies its frame unambiguously. Not committed: rebuild with this script.""" +import os +import subprocess +from seeklib import FF, WORK + +OUT = os.path.join(WORK, 'variants') +os.makedirs(OUT, exist_ok=True) + +SRC = ['-f', 'lavfi', '-i'] +AUDIO = ['-f', 'lavfi', '-i', 'sine=frequency=440:sample_rate=48000:duration=6'] + +VARIANTS = { + # Matroska, time base 1/1000, 25 fps H.264 with B-frames. + 'mkv_25.mkv': [*SRC, 'testsrc2=size=320x240:rate=25:duration=6', *AUDIO, + '-map', '0:v', '-map', '1:a', '-c:v', 'libx264', '-preset', 'veryfast', + '-g', '25', '-bf', '2', '-pix_fmt', 'yuv420p', '-c:a', 'aac'], + # A PAL DVD-style MPEG-2 program stream: open GOPs, B-frames, MP2 audio. + 'dvd_pal.mpg': [*SRC, 'testsrc2=size=720x576:rate=25:duration=6', *AUDIO, + '-map', '0:v', '-map', '1:a', '-c:v', 'mpeg2video', '-b:v', '6M', + '-g', '12', '-bf', '2', '-flags', '-cgop', '-pix_fmt', 'yuv420p', + '-c:a', 'mp2', '-f', 'vob'], + # MPEG-TS, time base 1/90000, video and audio starting together. + 'ts_25_video_first.ts': [*SRC, 'testsrc2=size=720x576:rate=25:duration=6', *AUDIO, + '-map', '0:v', '-map', '1:a', '-c:v', 'libx264', + '-preset', 'veryfast', '-g', '25', '-bf', '2', + '-pix_fmt', 'yuv420p', '-c:a', 'aac', '-f', 'mpegts'], + # 29.97 ProRes in MOV with a 1/11988 video time base, like the user's clip. + 'prores_11988.mov': [*SRC, 'testsrc2=size=720x480:rate=30000/1001:duration=6', *AUDIO, + '-map', '0:v', '-map', '1:a', '-c:v', 'prores_ks', '-profile:v', '0', + '-c:a', 'pcm_s16le', '-video_track_timescale', '11988'], + # Noisy sources for the noise score (temporal noise, sigma ~6 levels), in + # two affected time bases. Lightly compressed so the noise survives. + 'noisy_prores_11988.mov': [*SRC, 'testsrc2=size=720x480:rate=30000/1001:duration=6,' + 'noise=alls=10:allf=t', *AUDIO, '-map', '0:v', '-map', '1:a', + '-c:v', 'prores_ks', '-profile:v', '3', '-c:a', 'pcm_s16le', + '-video_track_timescale', '11988'], + 'noisy_h264_2997.mp4': [*SRC, 'testsrc2=size=720x480:rate=30000/1001:duration=6,' + 'noise=alls=10:allf=t', *AUDIO, '-map', '0:v', '-map', '1:a', + '-c:v', 'libx264', '-preset', 'veryfast', '-crf', '8', + '-pix_fmt', 'yuv420p', '-c:a', 'aac', '-video_track_timescale', '2997'], +} + + +def build(): + paths = [] + for name, args in VARIANTS.items(): + path = os.path.join(OUT, name) + if not os.path.exists(path): + subprocess.run([FF, '-y', '-v', 'error', *args, path], check=True) + paths.append(path) + return paths + + +if __name__ == '__main__': + for p in build(): + print(p) diff --git a/docs/reports/issue-157-seek-alignment/scripts/run.sh b/docs/reports/issue-157-seek-alignment/scripts/run.sh new file mode 100755 index 0000000..7207059 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# Reproduce every number and image in the report. +# +# BEFORE_WORKER= ./run.sh +# +# The "after" worker is this checkout's debug build (cd worker && cargo build). +# Build the "before" one from the parent of the fix commit, in a checkout that +# also has deps/ (debug workers find deps/ by searching upward from themselves). +# Scratch files go to $SEEK_WORK (default: a temporary directory); results are +# written there as *.txt / *.json. Needs deps/ (or $VAPOURBOX_DEPS_DIR). +set -euo pipefail +HERE="$(cd "$(dirname "$0")" && pwd)" +REPO="$(cd "$HERE/../../../.." && pwd)" +AFTER="${AFTER_WORKER:-$REPO/worker/target/debug/vapourbox-worker}" +BEFORE="${BEFORE_WORKER:?set BEFORE_WORKER to a worker built without the fix}" +export SEEK_WORK="${SEEK_WORK:-$(mktemp -d)}" +cd "$HERE" +python3 make_variants.py +python3 dup_probe.py --json "$SEEK_WORK/dup.json" | tee "$SEEK_WORK/dup.txt" +for v in before after; do + w=$BEFORE; [ $v = after ] && w=$AFTER + python3 worker_probe.py --worker "$w" --json "$SEEK_WORK/worker_$v.json" | tee "$SEEK_WORK/worker_$v.txt" +done +python3 frame0_probe.py --before "$BEFORE" --after "$AFTER" | tee "$SEEK_WORK/frame0.txt" +python3 identity_probe.py --before "$BEFORE" --after "$AFTER" | tee "$SEEK_WORK/identity.txt" +python3 telecine_probe.py --before "$BEFORE" --after "$AFTER" | tee "$SEEK_WORK/telecine.txt" +python3 detector_probe.py --before "$BEFORE" --after "$AFTER" | tee "$SEEK_WORK/detectors.txt" +python3 gap_probe.py | tee "$SEEK_WORK/gap.txt" +python3 images.py --before "$BEFORE" --after "$AFTER" +echo "Results in $SEEK_WORK" diff --git a/docs/reports/issue-157-seek-alignment/scripts/seeklib.py b/docs/reports/issue-157-seek-alignment/scripts/seeklib.py new file mode 100644 index 0000000..9bfcd38 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/seeklib.py @@ -0,0 +1,108 @@ +"""Shared helpers for the issue #157 seek-alignment probes. + +Paths come from the repo (found from this file's location) or the environment, +never from a personal path: + + VAPOURBOX_DEPS_DIR deps/ to take ffmpeg/ffprobe from + (default: /deps/) + SEEK_WORK scratch directory for variants, raw frames and encodes + (default: a fresh temporary directory) +""" +import hashlib +import json +import os +import platform +import subprocess +import tempfile + +HERE = os.path.dirname(os.path.abspath(__file__)) +REPO = os.path.abspath(os.path.join(HERE, '..', '..', '..', '..')) +RES = os.path.join(REPO, 'Tests', 'TestResources') + + +def _platform_id(): + system = platform.system() + machine = platform.machine().lower() + arch = 'arm64' if machine in ('arm64', 'aarch64') else 'x64' + if system == 'Darwin': + return f'macos-{arch}' + if system == 'Windows': + return 'windows-x64' + return f'linux-{arch}' + + +DEPS = os.environ.get('VAPOURBOX_DEPS_DIR') or os.path.join(REPO, 'deps', _platform_id()) +EXE = '.exe' if platform.system() == 'Windows' else '' +FF = os.path.join(DEPS, 'ffmpeg', 'ffmpeg' + EXE) +FP = os.path.join(DEPS, 'ffmpeg', 'ffprobe' + EXE) +WORK = os.environ.get('SEEK_WORK') or tempfile.mkdtemp(prefix='seek157_') +os.makedirs(WORK, exist_ok=True) + +# The PTS reset the worker's seeking decoders now carry (source_decode.rs). +RESET_PTS = 'setpts=PTS-STARTPTS' + + +def _rate(s): + n, d = (int(x) for x in s.split('/')) + return n / d if d else 0.0 + + +def probe(path): + """Width, height, pix_fmt, time base, field order and the frame rate the + app would send (FieldOrderDetector.selectFrameRate: avg when r is ~2x avg, + the field-coded case, else r).""" + out = subprocess.run( + [FP, '-v', 'error', '-select_streams', 'v:0', '-show_entries', + 'stream=width,height,pix_fmt,r_frame_rate,avg_frame_rate,time_base,' + 'field_order,start_time,codec_name', '-of', 'json', path], + capture_output=True, text=True, check=True).stdout + s = json.loads(out)['streams'][0] + r, a = _rate(s['r_frame_rate']), _rate(s['avg_frame_rate']) + fps = r if r > 0 else a + if r > 0 and a > 0 and 1.8 < r / a < 2.2: + fps = a + s['fps'] = fps + return s + + +def _raw(args): + return subprocess.run([FF, '-v', 'quiet', *args, '-f', 'rawvideo', '-pix_fmt', 'gray', '-'], + capture_output=True).stdout + + +def _hashes(data, w, h): + n = w * h + return [hashlib.md5(data[i:i + n]).hexdigest() for i in range(0, len(data) - n + 1, n)] + + +def sequential(path, count, timing='passthrough'): + """The first `count` pictures, decoded from the start with no seek. + `passthrough`: every stored frame once (the independent reference). + `default`: rawvideo's own constant-rate timing, which is exactly what an + untrimmed encode feeds the script (pulldown repeats included).""" + s = probe(path) + extra = ['-fps_mode', 'passthrough'] if timing == 'passthrough' else [] + return _hashes(_raw(['-apply_cropping', 'codec', '-i', path, '-map', '0:v:0', + '-frames:v', str(count), *extra]), s['width'], s['height']) + + +def seek_decode(path, start, count, mode): + """`count` frames from source frame `start`, seeking the way the worker + does ((start - 0.5) / fps before -i). `mode`: 'default' (the worker before + #157), 'passthrough', or 'setpts' (the worker after #157).""" + s = probe(path) + ss = max(0.0, (start - 0.5) / s['fps']) + extra = {'default': [], 'passthrough': ['-fps_mode', 'passthrough'], + 'setpts': ['-vf', RESET_PTS]}[mode] + return _hashes(_raw(['-ss', f'{ss:.6f}', '-apply_cropping', 'codec', '-i', path, + '-map', '0:v:0', '-frames:v', str(count), *extra]), + s['width'], s['height']) + + +def indices(got, reference): + """Each decoded picture as its index in the reference decode ('?' if absent). + The first match wins, so a repeated reference picture reads as its first slot.""" + first = {} + for i, h in enumerate(reference): + first.setdefault(h, i) + return [first.get(h, '?') for h in got] diff --git a/docs/reports/issue-157-seek-alignment/scripts/telecine_probe.py b/docs/reports/issue-157-seek-alignment/scripts/telecine_probe.py new file mode 100644 index 0000000..d834607 --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/telecine_probe.py @@ -0,0 +1,46 @@ +"""Telecine paths through a trimmed encode, before and after the fix: the +output frame count (IVTC's decimation and Soft Telecine's relabel depend on +the decoder handing over every slot) and which pictures come out. + + python3 telecine_probe.py --before WORKER --after WORKER""" +import os +import subprocess +import sys +from seeklib import RES, WORK, probe +from identity_probe import framemd5 +from worker_probe import job_for + +CASES = [('hard_telecine_test.avi', 'ivtc', 10, 69), ('soft_telecine_test.mkv', 'softTelecine', 10, 69), + ('soft_telecine_test.mkv', None, 10, 69)] + + +def encode(worker, src, method, start, end, tag): + s = probe(src) + out = os.path.join(WORK, f'tc_{tag}.mkv') + if os.path.exists(out): + os.remove(out) + extra = {'startFrame': start, 'endFrame': end, 'totalFrames': end - start + 1} + if method: + q = {'enabled': True, 'method': method, 'tff': True, 'ivtcCycle': 5} + extra.update({'qtgmcParameters': q, 'processingPipeline': {'deinterlace': q}}) + r = subprocess.run([worker, '--config', job_for(src, s, out, **extra)], capture_output=True) + if r.returncode: + raise SystemExit(r.stderr.decode(errors='replace')[-800:]) + return framemd5(out) + + +def main(): + a = sys.argv[1:] + before, after = a[a.index('--before') + 1], a[a.index('--after') + 1] + for name, method, start, end in CASES: + src = os.path.join(RES, name) + b = encode(before, src, method, start, end, 'b') + f = encode(after, src, method, start, end, 'a') + lead_b = sum(1 for x in b[1:4] if x == b[0]) + lead_a = sum(1 for x in f[1:4] if x == f[0]) + print(f"{name:24s} {method or 'no passes':13s} trim {start}..{end}: frames {len(b)} -> {len(f)}; " + f"identical: {b == f}; first frame repeated {lead_b} -> {lead_a} times") + + +if __name__ == '__main__': + main() diff --git a/docs/reports/issue-157-seek-alignment/scripts/worker_probe.py b/docs/reports/issue-157-seek-alignment/scripts/worker_probe.py new file mode 100644 index 0000000..224183d --- /dev/null +++ b/docs/reports/issue-157-seek-alignment/scripts/worker_probe.py @@ -0,0 +1,141 @@ +"""Run the worker itself, before and after the fix, and check which source +picture each path delivers. + + python3 worker_probe.py --worker PATH [--json out.json] [source ...] + +For each source and frame N, with every pass off: + * preview: `--preview --frame N` (the Processed side) + * before: the app's own before-frame command (PreviewGenerator.beforeFrameArgs, + mirrored here; PNG output instead of JPEG so nothing is lossy) + * each is compared (mean absolute RGB difference) with the sequential decode's + frames N-2..N+2 (`select=eq(n,N)`, image2 = passthrough timing); the + closest offset is reported. 0 = the right frame. +And one trimmed lossless encode (FFV1/MKV, frames START..END): each output +frame is named by its index in the sequential decode (MD5 of the luma plane). + +The worker must be a debug build so it finds deps/ by searching upward.""" +import json +import os +import subprocess +import sys +import uuid +from seeklib import FF, RES, WORK, probe, sequential, indices + +OFFSETS = (-2, -1, 0, 1, 2) + + +def rgb(args, tag, pre=None): + # One -vf only: ffmpeg honours just the last, so a selecting filter goes + # in front of the scale in the same chain. + dst = os.path.join(WORK, f'{tag}.rgb') + chain = ','.join(([pre] if pre else []) + ['scale=320:-2:flags=neighbor', 'format=rgb24']) + subprocess.run([FF, '-y', '-v', 'error', *args, '-vf', chain, + '-frames:v', '1', '-f', 'rawvideo', dst], check=True) + with open(dst, 'rb') as f: + return f.read() + + +def mad(a, b): + n = min(len(a), len(b)) + step = 5 + return sum(abs(a[i] - b[i]) for i in range(0, n, step)) / len(range(0, n, step)) + + +def job_for(src, s, out, **extra): + fo = s.get('field_order') or '' + order = 'tff' if fo in ('tt', 'tb') else 'bff' if fo in ('bb', 'bt') else 'progressive' + j = {'id': str(uuid.uuid4()), 'inputPath': src, 'outputPath': out, + 'qtgmcParameters': {'enabled': False}, + 'processingPipeline': {'deinterlace': {'enabled': False}}, + 'encodingSettings': {'codec': 'ffv1', 'container': 'mkv', 'audioMode': 'none'}, + 'detectedFieldOrder': order, 'inputFrameRate': s['fps'], + 'inputWidth': s['width'], 'inputHeight': s['height'], 'inputPixelFormat': s['pix_fmt']} + j.update(extra) + path = os.path.join(WORK, f'job_{j["id"]}.json') + with open(path, 'w') as f: + json.dump(j, f) + return path + + +def before_frame_args(src, n, fps, out): + """PreviewGenerator.beforeFrameArgs, verbatim but for the output name.""" + ss = max(0.0, (n - 0.5) / fps) + return ['-y', '-ss', f'{ss:.6f}', '-apply_cropping', 'codec', '-i', src, + '-frames:v', '1', '-q:v', '2', out] + + +def check_frame(worker, src, s, n): + pv = os.path.join(WORK, 'pv.png') + r = subprocess.run([worker, '--config', job_for(src, s, os.path.join(WORK, 'x.mkv')), + '--preview', '--frame', str(n)], capture_output=True) + if r.returncode or not r.stdout: + return {'frame': n, 'error': r.stderr.decode(errors='replace')[-400:]} + with open(pv, 'wb') as f: + f.write(r.stdout) + bf = os.path.join(WORK, 'before.png') + subprocess.run([FF, '-v', 'error', *before_frame_args(src, n, s['fps'], bf)], check=True) + got = {'preview': rgb(['-i', pv], 'pv'), 'before': rgb(['-i', bf], 'bf')} + refs = {k: rgb(['-i', src, '-fps_mode', 'passthrough'], f'g{k}', + pre=f'select=eq(n\\,{n + k})') + for k in OFFSETS if n + k >= 0} + row = {'frame': n} + for name, img in got.items(): + d = {k: round(mad(img, ref), 2) for k, ref in refs.items()} + row[name] = d + row[name + '_best'] = min(d, key=d.get) + row['preview_vs_before'] = round(mad(got['preview'], got['before']), 2) + return row + + +def check_trim(worker, src, s, start, end): + out = os.path.join(WORK, f'trim_{uuid.uuid4().hex}.mkv') + r = subprocess.run([worker, '--config', job_for(src, s, out, startFrame=start, endFrame=end, + totalFrames=end - start + 1)], + capture_output=True) + if r.returncode or not os.path.exists(out): + return {'start': start, 'end': end, 'error': r.stderr.decode(errors='replace')[-400:]} + got = sequential(out, 100000) + seq = sequential(src, end + 20) + idx = indices(got, seq) + os.remove(out) + return {'start': start, 'end': end, 'frames': idx, 'ok': idx == list(range(start, end + 1))} + + +DEFAULT = ['small_clip.mp4', 'seek_timebase_2997.mov', 'interlaced_test.avi', 'colorize_test.mp4'] + + +def main(): + args = sys.argv[1:] + worker, out = None, None + while args and args[0].startswith('--'): + if args[0] == '--worker': + worker, args = args[1], args[2:] + elif args[0] == '--json': + out, args = args[1], args[2:] + paths = args or [os.path.join(RES, f) for f in DEFAULT] + results = [] + for src in paths: + s = probe(src) + r = {'source': os.path.basename(src), 'time_base': s['time_base'], 'frames': [], + 'trim': check_trim(worker, src, s, 41, 52)} + for n in (10, 41, 60): + r['frames'].append(check_frame(worker, src, s, n)) + results.append(r) + print(f"== {r['source']} ({s['time_base']})") + for row in r['frames']: + if 'error' in row: + print(f" frame {row['frame']}: ERROR {row['error']}") + continue + print(f" frame {row['frame']:3d}: preview is source frame N{row['preview_best']:+d} " + f"({row['preview']}), before is N{row['before_best']:+d}, " + f"preview vs before {row['preview_vs_before']}") + t = r['trim'] + print(f" trim {t['start']}..{t['end']}: {t.get('frames', t.get('error'))} " + f"{'OK' if t.get('ok') else 'WRONG'}") + if out: + with open(out, 'w') as f: + json.dump(results, f, indent=1) + + +if __name__ == '__main__': + main() diff --git a/worker/src/source_decode.rs b/worker/src/source_decode.rs index 6cfece0..bb46f18 100644 --- a/worker/src/source_decode.rs +++ b/worker/src/source_decode.rs @@ -26,14 +26,40 @@ //! the expected size through untouched (a full-frame `crop` is a pointer //! no-op) and fails the decode on any other size, including a mid-stream //! resolution change, which with no guard at all would desync into garbage. +//! 3. **A seek must not shift the frames** (issue #157). Writing `rawvideo`, +//! ffmpeg times its output at a constant rate (the muxer has +//! `AVFMT_NOTIMESTAMPS` but not `AVFMT_VARIABLE_FPS`). After an input `-ss` +//! to `(first - 0.5) / fps`, the first kept frame arrives half a frame +//! after the seek point, and for many time bases (1/2997 MP4, 1/11988 MOV, +//! 1/90000 TS) constant-rate timing fills that gap by emitting the frame +//! **twice**: the preview showed frame N-1 and a trim of 100..109 came out +//! `100, 100, 101 .. 108`. [`RESET_PTS_FILTER`] rebases the first kept frame +//! to 0, on every decoder that seeks. Not `-fps_mode passthrough`: that +//! also drops a soft-telecine source's pulldown repeats, which IVTC expects. //! -//! See docs/ENGINEERING_NOTES.md, "Clean aperture: decode the stored frame". +//! See docs/ENGINEERING_NOTES.md, "Clean aperture: decode the stored frame", +//! and docs/reports/issue-157-seek-alignment. /// Input option placed before `-i` on every ffmpeg that decodes the source's /// pictures for the pipeline (encode decoder, preview decoder). See the module /// docs for why `codec` and not `none`/`all`. pub const APPLY_CROPPING: [&str; 2] = ["-apply_cropping", "codec"]; +/// First filter of a decoder that seeks: the first kept frame becomes PTS 0, so +/// constant-rate output timing has no gap to fill with a repeated frame. See +/// rule 3 in the module docs. +pub const RESET_PTS_FILTER: &str = "setpts=PTS-STARTPTS"; + +/// The decoder's single `-vf` (ffmpeg honours only the last one): the PTS +/// reset when the decoder seeks, then the size guard. +fn decoder_filter(width: i32, height: i32, seeks: bool) -> String { + if seeks { + format!("{},{}", RESET_PTS_FILTER, size_guard_filter(width, height)) + } else { + size_guard_filter(width, height) + } +} + /// The message ffmpeg's `crop` filter logs when [`size_guard_filter`] rejects a /// frame. Used to recognise a guard failure in the decoder's stderr and replace /// ffmpeg's cryptic wording with an explanation. @@ -87,13 +113,17 @@ pub fn encode_decoder_args( total_frames: Option, ) -> Vec { let mut args: Vec = Vec::new(); + let mut seeks = false; // Seek to the start frame if specified (before -i for an accurate, // fast decode-seek). Target the midpoint of the interval *before* // `start` so the first kept frame (PTS >= seek time) is exactly `start`, // not start±1 — the boundary `start/fps` is ambiguous under PTS rounding. + // The seek then needs the PTS reset (module docs, rule 3); an untrimmed + // decode is left exactly as it was. if let Some(start) = start_frame { if start > 0 { + seeks = true; let fps = input_frame_rate.unwrap_or(29.97); let seek_time = ((start as f64 - 0.5) / fps).max(0.0); args.push("-ss".to_string()); @@ -105,7 +135,7 @@ pub fn encode_decoder_args( args.extend([ "-i".to_string(), input_path.to_string(), "-map".to_string(), "0:v:0".to_string(), // only first video stream - "-vf".to_string(), size_guard_filter(width, height), + "-vf".to_string(), decoder_filter(width, height, seeks), "-f".to_string(), "rawvideo".to_string(), "-pix_fmt".to_string(), pix_fmt.to_string(), "-v".to_string(), "error".to_string(), @@ -135,8 +165,10 @@ pub fn encode_decoder_args( args } -/// The preview path's decoder: `num_frames` raw frames from `seek_time` into -/// `output_path`. Same cropping and size rules as [`encode_decoder_args`]. +/// The preview path's decoder (also the detectors'): `num_frames` raw frames +/// from `seek_time` into `output_path`. Same cropping, size and seek rules as +/// [`encode_decoder_args`]: a window starting at frame 0 (`seek_time` 0) does +/// not seek, exactly like an untrimmed encode, so the two agree on frame 0. pub fn preview_decoder_args( input_path: &str, seek_time: f64, @@ -146,13 +178,18 @@ pub fn preview_decoder_args( pix_fmt: &str, output_path: &str, ) -> Vec { - let mut args: Vec = vec!["-ss".to_string(), format!("{:.6}", seek_time)]; + let seeks = seek_time > 0.0; + let mut args: Vec = Vec::new(); + if seeks { + args.push("-ss".to_string()); + args.push(format!("{:.6}", seek_time)); + } args.extend(APPLY_CROPPING.iter().map(|s| s.to_string())); args.extend([ "-i".to_string(), input_path.to_string(), "-map".to_string(), "0:v:0".to_string(), "-frames:v".to_string(), num_frames.to_string(), - "-vf".to_string(), size_guard_filter(width, height), + "-vf".to_string(), decoder_filter(width, height, seeks), "-f".to_string(), "rawvideo".to_string(), "-pix_fmt".to_string(), pix_fmt.to_string(), "-v".to_string(), "error".to_string(), @@ -262,13 +299,58 @@ mod tests { fn decoders_guard_the_probed_size() { for (path, args) in both() { let vf = pos(&args, "-vf").unwrap_or_else(|| panic!("{path}: no -vf")); - assert_eq!(args[vf + 1], size_guard_filter(720, 576), "{path}"); + // The guard is the chain's last filter (a seeking decoder resets + // PTS ahead of it). + assert!(args[vf + 1].ends_with(&size_guard_filter(720, 576)), "{path}: {args:?}"); // Exactly one -vf: ffmpeg honours only the last. assert_eq!(args.iter().filter(|a| *a == "-vf").count(), 1, "{path}"); assert!(vf > pos(&args, "-i").unwrap(), "{path}: -vf must be an output option"); } } + fn vf(args: &[String]) -> &str { + &args[pos(args, "-vf").expect("a -vf") + 1] + } + + #[test] + fn seeking_decoders_reset_pts_before_the_guard() { + // Issue #157: after a seek, rawvideo's constant-rate timing repeated + // the first frame. The reset must come first in the ONE -vf chain. + let trimmed = + encode_decoder_args("in.mov", 720, 576, "yuv420p", Some(25.0), Some(10), Some(19), None); + for (path, args) in [("trimmed encode", trimmed), ("preview", preview_args())] { + assert!(pos(&args, "-ss").is_some(), "{path} seeks"); + assert_eq!( + vf(&args), + format!("{},{}", RESET_PTS_FILTER, size_guard_filter(720, 576)), + "{path}" + ); + assert_eq!(args.iter().filter(|a| *a == "-vf").count(), 1, "{path}"); + assert_eq!(RESET_PTS_FILTER, "setpts=PTS-STARTPTS"); + // Never passthrough timing: it drops soft-telecine pulldown repeats. + assert!(pos(&args, "-fps_mode").is_none(), "{path}"); + } + } + + #[test] + fn decoders_that_do_not_seek_are_unchanged() { + // An untrimmed encode (and a trim from frame 0) keeps exactly its old + // arguments: no seek, so nothing to reset. + let untrimmed = encode_args(); + let from_zero = + encode_decoder_args("in.mov", 720, 576, "yuv422p10le", Some(25.0), Some(0), Some(19), None); + let preview_at_zero = + preview_decoder_args("in.mov", 0.0, 4, 720, 576, "yuv422p10le", "frames.raw"); + for (path, args) in + [("untrimmed", untrimmed), ("from zero", from_zero), ("preview at 0", preview_at_zero)] + { + assert!(pos(&args, "-ss").is_none(), "{path}: {args:?}"); + assert_eq!(vf(&args), size_guard_filter(720, 576), "{path}"); + } + // The VFR decoder places stored frames itself and is left alone. + assert_eq!(vf(&timeline_args()), size_guard_filter(720, 576)); + } + #[test] fn size_guard_is_a_full_frame_crop_that_rejects_other_sizes() { let g = size_guard_filter(720, 576);