From e0040a06cbc34b75962dd5780890aeb2de40568e Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Fri, 1 Nov 2024 19:49:57 -0700 Subject: [PATCH 1/2] Refactor and add benchmarks --- benchmarks/decoders/benchmark_decoders.py | 29 +-- .../decoders/benchmark_decoders_library.py | 123 +++++++----- .../decoders/benchmark_readme_chart.png | Bin 59921 -> 58959 bytes .../decoders/benchmark_readme_data.json | 184 +++++++++--------- benchmarks/decoders/generate_readme_data.py | 18 +- 5 files changed, 189 insertions(+), 165 deletions(-) diff --git a/benchmarks/decoders/benchmark_decoders.py b/benchmarks/decoders/benchmark_decoders.py index d29f8c826..b8fcbd2e2 100644 --- a/benchmarks/decoders/benchmark_decoders.py +++ b/benchmarks/decoders/benchmark_decoders.py @@ -14,10 +14,11 @@ plot_data, run_benchmarks, TorchAudioDecoder, - TorchcodecCompiled, - TorchCodecNonCompiledBatch, - TorchcodecNonCompiledWithOptions, - TVNewAPIDecoderWithBackend, + TorchCodecCoreCompiled, + TorchCodecCoreBatch, + TorchCodecCore, + TorchCodecPublic, + TorchVision, ) @@ -70,7 +71,7 @@ def main() -> None: "For torchcodec, you can specify options with tcoptions:. " ), type=str, - default="decord,tcoptions:,torchvision,torchaudio,torchcodec_compiled,tcoptions:num_threads=1", + default="decord,tcoptions:,torchvision,torchaudio,torchcodec_compiled,torchcodec_public,tcoptions:num_threads=1,tcbatchoptions:", ) parser.add_argument( "--bm_video_dir", @@ -98,14 +99,16 @@ def main() -> None: DecordNonBatchDecoderAccurateSeek() ) elif decoder == "torchcodec": - decoder_dict["TorchCodecNonCompiled"] = TorchcodecNonCompiledWithOptions() + decoder_dict["TorchCodecCore:"] = TorchCodecCore() elif decoder == "torchcodec_compiled": - decoder_dict["TorchcodecCompiled"] = TorchcodecCompiled() + decoder_dict["TorchCodecCoreCompiled"] = TorchCodecCoreCompiled() + elif decoder == "torchcodec_public": + decoder_dict["TorchCodecPublic"] = TorchCodecPublic() elif decoder == "torchvision": - decoder_dict["TVNewAPIDecoderWithBackendVideoReader"] = ( + decoder_dict["TorchVision[backend=video_reader]"] = ( # We don't compare TorchVision's "pyav" backend because it doesn't support # accurate seeks. - TVNewAPIDecoderWithBackend("video_reader") + TorchVision("video_reader") ) elif decoder == "torchaudio": decoder_dict["TorchAudioDecoder"] = TorchAudioDecoder() @@ -117,8 +120,8 @@ def main() -> None: continue k, v = item.split("=") kwargs_dict[k] = v - decoder_dict["TorchCodecNonCompiledBatch:" + options] = ( - TorchCodecNonCompiledBatch(**kwargs_dict) + decoder_dict["TorchCodecCoreBatch" + options] = ( + TorchCodecCoreBatch(**kwargs_dict) ) elif decoder.startswith("tcoptions:"): options = decoder[len("tcoptions:") :] @@ -128,8 +131,8 @@ def main() -> None: continue k, v = item.split("=") kwargs_dict[k] = v - decoder_dict["TorchcodecNonCompiled:" + options] = ( - TorchcodecNonCompiledWithOptions(**kwargs_dict) + decoder_dict["TorchCodecCore:" + options] = ( + TorchCodecCore(**kwargs_dict) ) video_paths = args.bm_video_paths.split(",") if args.bm_video_dir: diff --git a/benchmarks/decoders/benchmark_decoders_library.py b/benchmarks/decoders/benchmark_decoders_library.py index d47625658..7f2c8d9b6 100644 --- a/benchmarks/decoders/benchmark_decoders_library.py +++ b/benchmarks/decoders/benchmark_decoders_library.py @@ -12,7 +12,7 @@ import torch import torch.utils.benchmark as benchmark -from torchcodec.decoders import VideoDecoder +from torchcodec.decoders import VideoDecoder, VideoStreamMetadata from torchcodec.decoders._core import ( _add_video_stream, @@ -78,7 +78,7 @@ def get_consecutive_frames_from_video(self, video_file, numFramesToDecode): return frames -class TVNewAPIDecoderWithBackend(AbstractDecoder): +class TorchVision(AbstractDecoder): def __init__(self, backend): self._backend = backend self._print_each_iteration_time = False @@ -125,7 +125,7 @@ def get_consecutive_frames_from_video(self, video_file, numFramesToDecode): return frames -class TorchcodecNonCompiledWithOptions(AbstractDecoder): +class TorchCodecCore(AbstractDecoder): def __init__(self, num_threads=None, color_conversion_library=None, device="cpu"): self._print_each_iteration_time = False self._num_threads = int(num_threads) if num_threads else None @@ -186,7 +186,7 @@ def get_consecutive_frames_from_video(self, video_file, numFramesToDecode): return frames -class TorchCodecNonCompiledBatch(AbstractDecoder): +class TorchCodecCoreBatch(AbstractDecoder): def __init__(self, num_threads=None, color_conversion_library=None): self._print_each_iteration_time = False self._num_threads = int(num_threads) if num_threads else None @@ -227,6 +227,24 @@ def get_consecutive_frames_from_video(self, video_file, numFramesToDecode): ) return frames +class TorchCodecPublic(AbstractDecoder): + def __init__(self, num_ffmpeg_threads=None): + self._num_ffmpeg_threads = int(num_ffmpeg_threads) if num_ffmpeg_threads else None + + def get_frames_from_video(self, video_file, pts_list): + decoder = VideoDecoder(video_file, num_ffmpeg_threads=self._num_ffmpeg_threads) + return decoder.get_frames_played_at(pts_list) + + def get_consecutive_frames_from_video(self, video_file, numFramesToDecode): + decoder = VideoDecoder(video_file, num_ffmpeg_threads=self._num_ffmpeg_threads) + frames = [] + count = 0 + for frame in decoder: + frames.append(frame) + count += 1 + if count == numFramesToDecode: + break + return frames @torch.compile(fullgraph=True, backend="eager") def compiled_seek_and_next(decoder, pts): @@ -239,7 +257,7 @@ def compiled_next(decoder): return get_next_frame(decoder) -class TorchcodecCompiled(AbstractDecoder): +class TorchCodecCoreCompiled(AbstractDecoder): def __init__(self): pass @@ -444,11 +462,13 @@ def plot_data(df_data, plot_path): plot_path, ) +def get_metadata(video_file_path: str) -> VideoStreamMetadata: + return VideoDecoder(video_file_path).metadata def run_benchmarks( decoder_dict, video_files_paths, - num_uniform_samples, + num_samples, min_runtime_seconds, benchmark_video_creation, ) -> list[dict[str, str | float | int]]: @@ -459,47 +479,49 @@ def run_benchmarks( for decoder_name, decoder in decoder_dict.items(): for video_file_path in video_files_paths: print(f"video={video_file_path}, decoder={decoder_name}") - # We only use the VideoDecoder to get the metadata and get - # the list of PTS values to seek to. - simple_decoder = VideoDecoder(video_file_path) - duration = simple_decoder.metadata.duration_seconds - pts_list = [ - i * duration / num_uniform_samples for i in range(num_uniform_samples) + metadata = get_metadata(video_file_path) + metadata_label = f"{metadata.codec} {metadata.width}x{metadata.height}, {metadata.duration_seconds}s {metadata.average_fps}fps" + + duration = metadata.duration_seconds + uniform_pts_list = [ + i * duration / num_samples for i in range(num_samples) ] - metadata = simple_decoder.metadata - metadata_string = f"{metadata.codec} {metadata.width}x{metadata.height}, {metadata.duration_seconds}s {metadata.average_fps}fps" - if verbose: - print( - f"video={video_file_path}, decoder={decoder_name}, pts_list={pts_list}" + + random_pts_list = (torch.rand(num_samples) * duration).tolist() + + for kind, pts_list in [("uniform", uniform_pts_list), ("random", random_pts_list)]: + if verbose: + print( + f"video={video_file_path}, decoder={decoder_name}, pts_list={pts_list}" + ) + seeked_result = benchmark.Timer( + stmt="decoder.get_frames_from_video(video_file, pts_list)", + globals={ + "video_file": video_file_path, + "pts_list": pts_list, + "decoder": decoder, + }, + label=f"video={video_file_path} {metadata_label}", + sub_label=decoder_name, + description=f"{kind} {num_samples} seek()+next()", ) - seeked_result = benchmark.Timer( - stmt="decoder.get_frames_from_video(video_file, pts_list)", - globals={ - "video_file": video_file_path, - "pts_list": pts_list, - "decoder": decoder, - }, - label=f"video={video_file_path} {metadata_string}", - sub_label=decoder_name, - description=f"{num_uniform_samples} seek()+next()", - ) - results.append( - seeked_result.blocked_autorange(min_run_time=min_runtime_seconds) - ) - df_item = {} - df_item["decoder"] = decoder_name - df_item["video"] = video_file_path - df_item["description"] = results[-1].description - df_item["frame_count"] = num_uniform_samples - df_item["median"] = results[-1].median - df_item["iqr"] = results[-1].iqr - df_item["type"] = "seek()+next()" - df_item["fps"] = 1.0 * num_uniform_samples / results[-1].median - df_item["fps_p75"] = 1.0 * num_uniform_samples / results[-1]._p75 - df_item["fps_p25"] = 1.0 * num_uniform_samples / results[-1]._p25 - df_data.append(df_item) - - for num_consecutive_nexts in [1, 10]: + results.append( + seeked_result.blocked_autorange(min_run_time=min_runtime_seconds) + ) + df_item = {} + df_item["decoder"] = decoder_name + df_item["video"] = video_file_path + df_item["description"] = results[-1].description + df_item["frame_count"] = num_samples + df_item["median"] = results[-1].median + df_item["iqr"] = results[-1].iqr + df_item["type"] = f"{kind}:seek()+next()" + df_item["fps"] = 1.0 * num_samples / results[-1].median + df_item["fps_p75"] = 1.0 * num_samples / results[-1]._p75 + df_item["fps_p25"] = 1.0 * num_samples / results[-1]._p25 + df_data.append(df_item) + + for num_consecutive_nexts in [100]: consecutive_frames_result = benchmark.Timer( stmt="decoder.get_consecutive_frames_from_video(video_file, consecutive_frames_to_extract)", globals={ @@ -507,7 +529,7 @@ def run_benchmarks( "consecutive_frames_to_extract": num_consecutive_nexts, "decoder": decoder, }, - label=f"video={video_file_path} {metadata_string}", + label=f"video={video_file_path} {metadata_label}", sub_label=decoder_name, description=f"{num_consecutive_nexts} next()", ) @@ -531,17 +553,16 @@ def run_benchmarks( first_video_file_path = video_files_paths[0] if benchmark_video_creation: - simple_decoder = VideoDecoder(first_video_file_path) - metadata = simple_decoder.metadata - metadata_string = f"{metadata.codec} {metadata.width}x{metadata.height}, {metadata.duration_seconds}s {metadata.average_fps}fps" + metadata = get_metadata(video_file_path) + metadata_label = f"{metadata.codec} {metadata.width}x{metadata.height}, {metadata.duration_seconds}s {metadata.average_fps}fps" creation_result = benchmark.Timer( stmt="create_torchcodec_decoder_from_file(video_file)", globals={ "video_file": first_video_file_path, "create_torchcodec_decoder_from_file": create_torchcodec_decoder_from_file, }, - label=f"video={first_video_file_path} {metadata_string}", - sub_label="TorchcodecNonCompiled", + label=f"video={first_video_file_path} {metadata_label}", + sub_label="TorchCodecCore:", description="create()+next()", ) results.append( diff --git a/benchmarks/decoders/benchmark_readme_chart.png b/benchmarks/decoders/benchmark_readme_chart.png index 15908bfb0f24d07e7b4faa83d4e9467167567fc3..738723904314ef58ab9026e32d51b23d1c5341c2 100644 GIT binary patch literal 58959 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 >? z-Y8axo?96nAV{vGAQs$hleJ7Bx6ysk+`QC&)e{Hgdln$#_i*vz>2jbWAxuSb#0}&N z!Xqy^1{N{0#BRr@uBNsX{WpI`M!xKqKjszq1FH}x!MFibR7S?eyYTdGCi7x9 z9BGq~UXz#mz}=YacwXUaQDS)_a6QDTxPdxfUsO8%^BLTk%kLq#^6BSitysA-DZ3dt zRq& zFep<#q8j)OrQQe{E5Kj5qwFBlAz+$1m!c>+uf6b!CTGBJbO($gY349xM!$kHHB}ctN7Qu_Y=(VxG51?K~* z=1~HX5{_wVKGbXjI}6?N)Is(cwT*y{CjrK_4697UfuzWm2icoct_1EL>!WHJdmixueI0h#YGBW_X0OT&Sh@>_E^tSm<hA2T!LV6fzFJ_l-ny-3cK)nP0qE}DHAf|>wF}is1YF{1Sjhi>$e)@DQ+yIRt z;=rEpt$3NtSNNegPP!5{kHVw``?r^!0xFq*5o0fc2BEtoh=wLO>q0?!hh##0RV@Wh z>bg9{gXbYd_3Xr_O5Ctrm{bO(+ z!u4SKN!iVCnNw-79IpEZo!qxY^PPs-cCfOFMGW=y z_~K?iz$mN|dISb>pkh1rTgI?SSM}a%@2qaI|I0o2>Dj_^^U!>?MR&{D7%Ke*kUtph z1U=h+2o=&5J#ADOR7^o-P2ERl_0W^D15S>f+Jt~)1AuZuyH_+7dB{MDxel_8&jgto zj#3Izn9WGXA?G=m;D%k;ae7 zJiG&&|F`IJT_OW0=aI2$If1{p3!#a$sfZ2lAlVJiI-wZc208(rP=R~fB~&EPjOj)R zwCXY~v_CtO4F&x!m@`hO@dF|W45+Yyf+=EmeMC_T)#R)wgfq#|sC z+Wk|8lf`&A7tt$UdpqS`zw=Tk`%6)Fk5XmG@Qa=GmEZ^rtA>wJ8Ce*F67 zgBk3t9K*8e*FSy!JO?mza9L9e3i8PdmX;}}B8!T_qu%yC4<-Xv<$0>h*rkYu=#b}S z6GCGP^Pme+FVT`IMNOgEN;?B&wei7@Zqk~dHORAT7v)Q_T%d;Ito?o$brxpkouZs0;slPaqGJ=<&>`xug?+FPoqfdAxi2qEi^r$rdQ<7ObN0a?;nFjr@kr>_MtY{nW8gS?d`Q%&%Jy1 zjr+d}lp|~QUP|}-}e3950si{pfLSxJ2Q3EYCTmXxqIkvp!e%jqF0`W5$>y?|^ zfT=au3~~LMni?CJhYIeEPu{0^V`X0iAF|J(Z!;X|bO`l6v&%UuW(Um@Oa{bin(s7* zN?bA=`gCl9S~+*?H#0?0KYugobMp3{)16E{-OI`#9AkCLwVYn!C0MVOLaO5uLfdUfGR4&hYdlD@*mQ5UTa8T^uJD zX3-fif{aRB%e-f^cuD1r##*q;T1j?rJ_57uZoXHH`?JZqhndHlwlEP_8X-fW1*8ng zglRa2M~MuJ^_zY`p&6Q@7P72SE~jZSYvTCVdnES+ELJS&IOZ0g0^67gQQ)BUks+3H zvK&qR8lX~ti|c5c?B2bb^t!Z}bUF^9vyGbIVIjmXwre^Bkusv1|V_nU#|xg&tBLVqe9YnF2W| z79k`Sp5}F^lJxs=M(glPNNfS`0SA*epiegLP$YRno_@2ANxzvN1CHVE==A;cuR% zlw>e(0^+2rcyXqeqNz zw+O>cM6E8~S^Ylcp>DHKGY?iOx`WnY3f`eseF@G373L1)k&-)G1Sqjof3P+8NGGDc zBG}d-*MAg{ujhn*F*zW4LM17~7A1X45kj9{^O$B<%-u6oy)-BBo47-fX)huWNDrC@ zwK~=n5yIaOhz)|qqJUaQ@u1g!85yqq`T0Jv&?ov{QN3^E$hewLfDm_UCvBvPIIft2Ipm>jG(@@}fk%tH1yp1>Bl9F3dD9{FG|MCD# zzx@3r4Ql68efm^aZByOwK^xQ4FIxS<%%$50#e4(5B+7a}yaw@D0}inrdy3I#k2v%e z+^a+UJX+k6Bb2NS&{rV(iI4?2s~uccR#sdWD%@0rh_3thcqR$eg|BC5`_f2Xh;Xr2|wjfmRLL>fRk1=9ENW8^U!{r#z@ zwLnVJx-B*NqVmw}^mMPPknd8nCxeDRGYbnBfEVc&0U8J%h4?to^!m7V4uUc~@E_oB zcTm*z^R=BH2BrI^qGBC{TxprmrfEn#P@)5tNZz^W?x^onw;WsHQT~}wMmQf7QLc%IZ<2{( zM6f0t11JV7w}K0qb3NEn1x}~F0TuM4x7QDhLw%g7s2eMdJTCkPo|`_Z79Hj3zN?2{ zpYUsQtSm|unH}YsefaPpsJ)f-=^NZVJP0TQFOi}+B7_qykd*MN71{FvvNNk;8$5%K z1Y~Z~TmT;Zm)!jkDfHxod*MULvy+_)U?-sQUI)L{7$gaQd#@;cIFSbreA z)02o}mo9~v3|Wdl-l4z$*L@yn2SP-0CWmG~^9>~Q5iI<%m_X9o|7n{LxQMNk(JGnY zkC5a{u((Cxt0%MwX_ZXMK@Nh=XbZv;v)HA3glLqVA3sHU?ll2;4;n#nhr^a|%*;|( zp62G}`hrSFQ-5dhgpkZqyE?HtLWT>5O;-h>y%ahiv0cDWxrN~YR`DJD0x08;kbsTB z;ga4#($!80B;;8Il6W#D5HMH^_!B|!G6TZ{RFvT50?}erF4gYNMJxju3rLze-wuM2 zCYDCH4>ch=nb$<$%ou=xMZ*DnQ=`j-*MN`m8z24Z)q!BYd~%MR23sJ2Kpu*@Jws7O zm1hDTft(QF7Z9M+r(f);56S;M1Oq~`V_|GU<2!78kFa1;LeS!Ja)~jA#2JFaJYG@) zVW-!oVk^;bfG^c9NB2@3%=UmZT;wnk_zQ_O4esP}Ecy(+Pz>TRY~lChIF5sEyE!>Q z{%nLf^3Uk#LzLoz-FQ^;_lQwk6a3dn(vqqSNPZM-77)pcs&@ghVChtq`pO6xAr2LQI;=U|?NC!HE%C z<#=hZR46rct4JRr4F~G$`fy3mA~YN*q=_MrI7|UAj}h44ER|_u*5H7=uF?n{Z-qBj zqY@c%sJKbsYkCC7P>X1yL!EfskuWO2(sFZf$Wvfgx}nCx+`c^g@3GmLhA!)wjPZH2 z1iU6(CpnA-$oxL>Yy9l!;6Nt?!WZalh-42C{C&|Zhu+0gTLsT>Aby784Z%5`re4Aj z;A|Vz7^0Tn1c`)U((&fn&!M3geHTA8j3cp?g7zS%LZB%|s~mWObf_k0jMqXyAYI7P zwO`lK)9Vao_QY7b`OR6+#xL%G#by%`Xih%At{NtM2u_t8v3T z6B8US;UX7rk;$4i2Xhofdg8Qk#MA!*NYzwhtXJ>B(g6oASRJGv~U|<|#E3qXbN0aauF5~nf zxeBl;4rB_k^a75OLsD>TiF@R@kU$e_EQkRWIFX3y5%_z_c?vYE-3q}&nOK@}k`T=D zCf{FPAT7rc5j{67A-ooVL))!Mu{I}M@-@n{mEOj+62 zB7wJtFHG3Yp?r+tTvqpG$i$^|5o2Z(k1DyHcU zp4oIv=HxG=2kX^Abn*8U;8$2dC6$p4e zIb?F`&&BDvvFbRG@NKdE-`Izfdb!(q78s~XjKY5OA^X6TE=p+q;9oe*X>u$7qF+F%X z=%o)V18$NBSC<|RM_{>g|Ni}qgIQ?S+Rt$(Y?fJg(yq&@+JoT%^l~C95?3%3F%!7J z$>~%F_G9kR<-0veFE4{QoJofe7L0?aYO|t2Bu5MOQIdH5Ybrw9S&EzAT`jkqr&)!aXZ=uS9Wd{zBNJOC#UJt%2Yofm??B`SAZvBn(Hll!qoIGA4f1*N@oXgp zh4WxQkt;-cWUH;$wfQU^4mjQi+X69jE;S7R>)cLCB2C_p0uI6z8Qrp(jm@99)0RXV zcwnyszf0tNuZ`*4};+mlyu%%vx=T5YtbvdOnt*9hMIHT#K}@o)aN{r^ATFI98NH2t49$FlYwA$-dJereFW!zn}z49pxL+7L*m zTj@ACSwY>S7_AzpD)0g)Y#Cja* z^6_|k*i+xHc-@{8Z(4ZDS@CqPjD_Vb-Q=XpXhAdjt!M$dU}Ey#$A;52&382pdLxcb ziuaQz=VT{+dp>`F!MTCiE{fMl1Q&4#VOr`9QBVk1h8KUsRv=y+BB-F?s(beAGRn`N zKRf#R$}9XCsJqDHt-;g61Ej8CeO)JFRxvMM95>DJonTu5wPm`6kuy5gTrRI1Wp%%KD%NfpEm$|b8-zV{%)|eT zSWmEs_+*8?Z_=FeYYWje2{em;&0*DpdkRKXs$zVVz<-e!Xurl zT$W^IV~~A)6FXqF@BPO$tw0XVK%XiDDe$$Ewcf)0@Cq^oxegi-Dc)04&OoG$P`h4c zW*$NN#nqW{^Lkry$jQHUNM5bPjUe}8RNY28Xpq)cp(FuRcn-7*-aW%&0VP%tPPo8y znAOJ95q+t)0T?R=j1i6kl?S9FCmYlsf`=0Y-#T&-(%Yt{?P%+&e81-?wo(_S>)$Xi z|IbmVyo?B03h?p3d%B7ukM0{B*>M}5^d;*nqVGoVJ*dH!QwYl*g6M1y^#TRz8>=*;@%`4J9ytq5U}CBSx&%leF8%Jb4aN~cOnHk zkRa3;&F*JJ+aa%26?yP3NZ=9eE2x^HbC&(jK+|kzcrZ7#g5kk8;Ft5()&cD*!IC}k zoeJri$xm1`6+NzP+Pha+>Sx&FIb+@D?*#NcA+14}eg$(_ggIWR6j}Hs>JvBxxNs5{ zfPMKm&Skg&kOzw*Q=3aSE5OetFg#y%s~{n0#H%vz*l)W6bj^k(KRz)^A~IdWyT`yj z=8SxVQHi(kg5??=rz{c{H^9odgEdr%fEZ6MoC_AwJB#5a7VkTdzP1;~zOZz_SCI?d zps=uz*l-`mfBptk_O7aGZFDp(R|8!N4(=q>!??=EMrPD< zNA2yiGm!1)HtX*cxLp@^ptVYp~?0VL*m>;N->HPAV5AGT*U=0 z;QyoTOW?6wx3}MFm(tu$qi9lwN=QP6RHP`%JSItzAw!}JrCCyjB%z383{hq!$vl&} z0fkWJ`Tefd-shbC|DS!n>Gyqpr@c=b@B2Q_bKmP;>sr@!tvGPa=D>dirjfE(KXl^_ z5H>&t&AGmCof2v+y)|zBJCt6} ztX-{9)s}nENvL9pqoH5uPbcK`d1t#DW+8CzEq>oQK0C|f$C zcb)!b2VZrMJL6<`jrEm^h{%&$qf@zbbdH+86%ZcDi6k}q)TyI(&D>yV_w((!*HKP5LH~&4M znfb@!`{z%wt^VIQ_W!S6B>k-C-UYr7ZyjG4x(W6{SWz-4AteWIUGFWp^0fp#5=S6o zyqT#o*lw}QXw81B63YAKeVu;Fv!`KK{+C?)>cF_@%?dg?y;128<9qwEhZZh8$G>%J z%{{+Om&Eh(o(lF{$ZoQd87&l{c$+v#J|xx|xm=lg^~1@=`29o>P(U9Bpk4MjbJeq(!pQb@Kg zZ6o8BZ(Z+jH!N0P6;hs*&#-1;&RI5dJy)x4NLU#6cH^X78)rq2kHbz9{c^=eN^Z9AB1JZ zsoQONh3+3T*d=UP9mQLQs<7A zF1>rPMD;FRxNr)5j8tnu>9u;1_C#mr&pQGS^{1Qd@V{@FHl?id(Z0tr`9T5h5GuI$ zeyGZuWvvz^{VYp*hsv`{54!3MhCXHIr#UyL&Ek`iimFfkUGdGEj~a=*8O=#^8PAV> zkySBkTrm&*k;q-sE{L58j%Ymp^XIp%ma88|s$bK$+?o_7uKaAED@^g^k_9dvGBVH4 z=FZ!Beo{xcaU=Ik{aBr6ypc;6U7FSRmCqwqKl3((?^$o&OvQ1TixNd;AodS=T8ere zz&vXAqIS(LDw+#tF=+_2innhf$x}Enrh*`p)aqt34FRebJ{0{OA>K7PSrjWW4)C;* zp4o{Qv`OLFM9B>dv>8W%s6wTy8lM2?jR^2A)7_AfWZ{rP+c_DOK4of&20|w-)ux_Fx7u-`U4{L2Ptbj-c7kD)2C2KD7%!V*N)*t#uGyi!PKgr_=Spq6d#}`7YgXVQ@L`=hCr?Lo03Bv=rOj%`v*lbrru?@v2B?&X-gwsz_AjyS&X}Ue6+~ zt!J|s>vuZd{9;_fTj4x9ppG@k?%r(A!YF;VcXrf==WFUEGxsUxG;iuO2$vWR+ZU`<@78gURpcOiC*4+dZY~SrBlQgh4ByQGxqd}T`*m(#oU*;exYeW- zAT<&arW~?z#p(%|a*4_iv=d0%h{G2-?G!*+?@%UCx=5Kke&BG??~ot^e0&V#>HfA; z$c`5Mp!2l?J^EjqD)ccKL{tN>W}DnZGg??%bY8i@u;X6xq5i8>GOi-Y|2HGloMn7( zEsG@|f`wp8@^Ne zNG*DkZ;yJ|tzKtSKE4mNA3h#T*)_Y_yzcUl>m~1kg)c3t=VS(oUEvckUzRoxt70z@ zs84NegPD`)Qnl^`X((JbHL1fX&bFg+7g9`Wh`ZKr2yOu6kiU`?IaIu(Ijw3B77}EO z(Y(lO9`rI%mJ%8OUjfZ6nP@fVGhwt~00s-b5elXhnOC@aj^UTypyRdR_umbFh@qVp zf@`xpWOrx-;2eLH|K1|x?iB2sgEJ;}W_Im!OJJxaKhY~}?U9{#aLIzQNCTr&&&Hd} z-@JKbFW7WVC8Uhob!xZNh3lKg1`U2b5Pm)|bS*klYCm#w^c2<%Bn!g6Ydk&@C+;k~Z)YwTqa&F{DUL2tC>|p?A_;0R@T!TJX9@NDur_fT!^hpeJ1 zw#=|peQw6ML&xF^`|lOnNNSs!o?E>6=7gL_hE2U`lKI}UH&@P_ZWLpOEzO8O^qy*F zO}BtsF{IaQ+}MzDUfqu$(%l-1#!Ir(;DAYsnA~RxNUjuppqNPvGy-!6H0|IDf{qlW z(){TM_w-vKHL}k}9~4X^u#OSo04cx)vS3Ko+Lp;@6_$!{; z_MOsLc4CY6Ra`*%TWSci7R8C zRfRmw1#=%BQD}pJAErH*`7?&s79>f5T0xq21hicA=ANS_NBaIHp+wU4?m|0PBv@U- zX!l(hs8ZKRI5C&11_aHINYhcG9=+G+zFcSqR5DoztrSwxHlK>xPxw_M&YWOS{ld}q z>4-(u0cYqfl#(+}A{Y^K2$k+9D19KCqRb%v;h$PR{QXzxG;;kTbZ)3sUlZ(0p8=mM z8!Q$yvk1jR__z{&IzxjK3T(iS({M_XStN;Kv1Lku?YY(|au&C<@$0dpR1n2`-vCle zBIMPq`%$rtj!+(ckXjd`j95>IRA5PoBQ$* zp`xbhB?G3_Z*R_BSsJA$F{i!u_Zsu2w__8dudCn9kT^f|uF+=NVq$Zlos24f8pO0N zPoHk2Y6ZHC6Ln4~m3~!Fpf{klxCHJO84Uh1A9g0RrOIW>G_o(7!?AN2h_mD-O=lN8 zF^ok?v`FPDP!a>kpnicUiKfO%{tyAPz%0fcN5D6QgqJVnKrE$`6ZeQpbgIBn>rFvO zrQVdVMj6U3u*dcws$rw-*;7kK7Bdc~Ym18UO2q3HXk%s;X2MI2ZV!$)MYiI)!GY*( zq*?-4KeS^(^}_bEnRw_$(+^QB5wDi#O0#2 zp5E=6%EdWtg;#I59cW7QD+zoGpFDwuO(#w~-zs>?=n5;enX}NnAUE-DKXWOwJs@!%AJ{hEnn|m{InXyLtEZr+av!-chJHap&#Z zot@X-70ziAx69hr=$LimdO47(2|J`@4o3*^6;HG4mhN?Bv9Auh5wb3GJt5^R z_*}dve*tFP*HCwzd(+J(RCe;?v13zzcbDY>#q|nQ#UT0g#ToDMhMBTIY&jU98;&%x z@g7xZY#hmfs++^G`-qbPyg7FLQH1u_3E(vze2RaIPN(J9iz}2bwi+71;C)_;od^;; zZdhWXa@Ldh50(_jUjOm+|7ft$pB)5?2lY4X76y&)D5O@eTLJ5uzqW3bOr(}U(Q~IAM`^XM)dh^P;;>akJvi{rJ2qF!Afj?wKMh zU+y&Je`>|&Y8}tsHtC$(;GBq!YB8VcP-Z6Cx+Hit|A}~uT8jVNQa3TOd=VEGq zo5=|(eKxzXtrY2axO#l7 zO_6=POC)M+)RZB8SLP~ne>`e4{>Gv-8}~tVjH;a9;Fb#-eOP;CY9#9&f+WpFMFx-#QbQ7q0Sb z5z4f%zP+CSJ`s0te3&`LC7P#=(I-8M?|A^p8(m8d5-Oay)JcEMF!<#R6Z~@DU70K1 zQsOID0?}`ci}d=v4LI!Kix(}!4^J1aPt5MlzUE`k%&`Am&B;mQrS--Km#@5zGf};e zX||GaH0ParcpZ!@B2+G_yUrN4`MgIpb?Eb#GJ}uOJJe(6Wqv$*TG1|8FiLS{RCD6& zLqQTpiW02)PAooiW|xwvJ;trAvRl%^4`d0sv-_vuBcrA&R;rF(J)atCP zZ$OpxK7}qm$;*+C&Vg$XRTF6BsTMIm=gcN}5jXT2DrDgOSCD;ln04Z1NyLCIW{8g7 zX9#9@0U8CUJO%U!*pTQy10_!ww~T1IB)Es9oz(7>A0{^ZTRXwHG^JArTGz@b%_C3K zP&O?SF=uySnpsDq_IL!){&`&7MSuU5q)HTGf;mY%Sn79xcM%Rj3i-`OB*5JO42Cxi z4eSWk4!&N?!AZdh%K?(ME0pn2kxXaofEK%>I(jx#`4~gR4wY>d2y5OWlr~|V@UVD8 zQ75aT^U$Q0P)ty{kAg&vms~ zGmv(Jlt3=!`Du0Il-Ch~9zt`_xENVrn0c3Ip?V{OnJOTec4Z(aP^$$Ub~3FKjK=9p zzl9E4#Dk4!K7pG}%^`;EJ(9cbKic2k7=ErRKAvGPt-3g1Hi}-AJ_W7kj2@Qh zpI#1hE>wBBMUq`$>JX>oZwwn?9Q=!Zk2_Ps5t?y*wMoGe8?!1_090a*0i0}C%vk0f zt?F;zG4aKNOi(eiscFCg=Qk8#A0cj{_BE>d98hFz=a~%lG<%?BK#DNXMk#o&UAHcw z(H!PV6UmcnVEBBgPL zat|fWFClv(C=^bW_Js=rYJnr(ENqLnBwE1TBO4^VhGg+WQCBqJKf(hfqUI2+YA8M1Y;*ldvtO{+{Q@a#*4BYcHA*wQf5KRFW(-$YPr4uMAYN+!*We%W9Bmbn^02H?H8C z_kT$z-2($=2B&#3@$5qR&H?0ys_Cb!5$F}2a$K?o!GL{Lm0+3!Dot4o#gVaIW|Gp4_)b>pi)^PIw-rw5#gGsQ*2F&G_G- zWzHo(F325Lo7t%2KAh>S-i$eI%Rpz`Vfm2(fZltWH`vx-TYdsXm*vj(2d3y}!r9|a z`9bU!=mu}&#_+EDMi>sNp9qQBZ?MqZadl2~Y!Az~{foz_Igz(QWr&mz;4ZPA(| zn`#s?+#@mzh_SBVWHE@`JRkf~tOG&-5G~1# zB(96;ypWYaogOede3acl<;_M-F%aXS24n|Xy4ei0dvb9VvEM6ivx_c*0rKy+IV4!6 z9V>c4aRbSW1TZJz@WY@L10u#U1neub1eNz_%u%riH+TT3(Z9Kj2+w;WTfkQ@$Zo=F>I+AjI$HyO%x{SC;ch@mr zHXjB;O~)(^(WfI1TnJ+W_L+G#34!*gy-inmF6kI<%aNsd)5 zwF>%0#NlOda6wkHWnSXMgla4Papq@-s;VZ^v{vRB_>bW`bNd@CcS>YJ(8Sc%)_h(3 zZid~Y^PV*f8`H)W*OX0FU>F#_mP++87zkP7*&01hh zWJE;@+K(R@NJ_Bc_FsI@8u1B#S1Yw&`VBg_NkCRJ#x!q`j}UXCaH)rdM6kxQL% z0CW*Wh@ilCKX))QMJVMa=?!@EE&wHabxeW`cPGWJ>H5~mxv;DNILSi5+@V84NBs4* z+NJEkld(iZ_%*X`yx-3dfr9!oVKCCWHViR|Pe~6D;x*tbe_c9Di-HDJmE>15W!ema z!}1-dj*F*3f4^oZSr@O*6qly{-cr5;2U?l;9AuBQ8y*X83Potz2c-yyNVw|koW_Rd zRuvmA)TN7W@2S6*93p3&l9u0E@MXL>;Dh7vRwprs#fb1H!5r*}=Mwe#+19yyY&ag? zs+Vw_90g#65fY1``znjk6<@z0tg)d6G17+>4= zB~+_CHt6i)69=nFO^dWr^PVlu`e9#;nKiR0OhTgb140u*(^iS4ji0PX!~g{O1-#Qz zO%X?5V|&f^`I{2E1|h_q);}(j1Z7e_ml=|d1#E27!49Svg7!qd_37*1>++(UaSyac zOIGa`;!9PSJ7*4loQwRXa8@5fDjl(~YB{WlrvnAaA+a9@uHk56hWh$1#ObsTN(~_# zPZ?{PTK;56P0hm2Fpr5D9;oE0R1^{Gt~v5lX>)d~ctt{D(p9;#;1ACI+*1XU)2^-o z8uepWXSGJ0!L$arK>0o6soQ4$&@8B4*zD$6MgQP0a-5Hm*t~LPNA8K=arwp(a)ef@e3^f*{; zD)n&5y&&IAY$PnG&uAMEm__+MENl=dxhl#Wu9oVp<&x+M-Sq;*ysJ0~jFKOs9mL1v zM>Iwri<@}`)y89xo-J){tHgt#ECu**2J{D`ufr(8U)i*K3W~+zBm(bi7lsxg)%I_9 z0GDNt>REuoU<1hZq;H<14F5zJFG^OFMdS5y($5cV1(rn#IZ_`v!9i0Th7s|%>P1q| z!e77($vbGKXYc}5*9SqAKJJjbi9vo>!15>=M0%cPGX}JV)b50|k#QH=S-+%1B{V+? z?pvi;j?~!zq2c)Iw#fp+ZsvUJ%%gu2$k-MHUAN@JqCR=f6AWr@=zLxLa_tv3P|-rP1XnD+Tkwo6RFcNWNK94k}@8i81RkUQ&o+_ zAHGPJK%1p!O~d`D+XNa2RG1-HU^HljrZu4R{t=M0(8*O0Ubuh}O*@!MLGVGY;B=4Z zILR;S`FouiO`ZVMX{1#GQ91JAEbP@!-@nfRI(z|{^H#yp=BjQ2zL4`#$p(v{8L$kx zg^N6jOfg&|ZY`$U(vTrK_HgRT;i3G%fVj{2^A6N&>&l*f2#aqcem+K>^9_eKSUYDX z$L%R|LFGs@kEei8K>97nQ(hBIrNMc3B+3PPv#aw~-9#t&GX;g@yAEf&K+#LWj$Vt2 z%plBA`T>15nM`0ln2~5Rey8;5Ax=_A;kxMjM_zJilIa|4u-g{ajl_&a^-%^s(pJDe?`+Do3AtJc)u9j>spFWXln|=LMg;Khi z_IF9E-%P(2@8y|~+18zP5o}@eR$k2kJ2)a*`^$vW#E%-LzMI6xo2ki<4WhNq{rI*p zWrF!FweW+6wqYA=6M+&{c2&-T!vbk^RmJaXfr|^ZGVX&>Aqsa{mJRCU;ApJ-S1<$QQ)qDl%*-P>GTcsBtAh^u@_07sx3|Zz|m*$TtL;JNJ9(D-m5b~n!UGjOTEs9f@8+zTri0my+`-?fA5NdAvV zU6nH~*u&;-a45}7Zc>oG? z77%LJ=FdXFG3YkFog75ed-v=6oa`=L-`9zDHGEHVEkgHaw{ba39`x2e+}LnOuw%Bj z<(Z2k%%1S3gK2JOot>`kkV?MH{^wS|&K8tLmRkO%--68o1?zNOal;ln8F)zW)n1O44sCM7l9WZ~y% z(e%IFc6;1&tH;)%cH6h;?@GZVdnMjPZX{rgNKvt&@y_hdU9#ebUx%!EY?xn~E6`n#c-eO>3R2~8=pGm*CS3eMQR%3U(;FeY65?<<^IX)2_TY+V@L zMsT(SXsFgke)gL)gS>7bH=rp@5J-oIz$dUC91^YZM58lUD8d0Fa$ga{0& z_KF+cA4};S6V1Dht42#1EsBTNGpAh8W!vX;*Us$0{b>`ETfaTpm1^ki2aOmwARBze z?g`OI9H{8dK$Z05$rG9?Pm}GTpJLg#@#%&3BPVE|L)`JzP9&aOtxv<`9F5-mo|qPY zzynl?lDhrWN=o7!aIJq(i~i z4bD6;9LE}t|D)w%fehd#w=?i{q}uuafp4T$kUO>>;@pD={gCb{gdf50uq(#x*ftR<|2c?j6Xz@LSX&{b)nZlqwlW4 zK$ker0LzZoaxy4V;}H-m{SV?iL_E9|2@VIz@)b6s02LnLkl89CLgwptA3V4TkDF|W z?4fX?69)_aX`wH29l#UZ6}Ve&0I?!Reehr4-8TmXrRCYP??5wOy*5G&y-e4jAWoDg z$X#yHA%qvJjY*Iso-{FL!6NZ}5cJEv{a5*X<2o#aeof~LvYP#ivdOmK{}=CR3Ijf5 zfVy9A47w2fQopWXH<3R847>$^Ncwr2AV)bafYbR5RBU_6MC!zet9S}@m@SjM@XACJ zf)K#^mmpRlE&|eJ8q9}HzZbm}#`VC1(=ZZ&wXsr$~)!%tjAALcW%zGV^)+hlLE-@xd^U7Br(BvglC zb$$X)Lq!k`jZ(nu)V&B4KalLM6%$*5$@GL``na-ob#g^!qSM-XF7@|?Y&f7O!~Z3Z zpy^lrg4D!u*j%NhJNw@OTKpAq7zb`7Fj z+Y99Iw3*oy2IqwzQ>c7Gb-m)p>G4CLh%H>SXetBCXa~#!-1#%d7olioxZveTRad(u z7r+Ue6W|lP3jxh043vS#C=)Rcv;x;fL^G;g_XnUrq#}{w0#4ph7L~M7}>AjbWakTE?9GyeL5=*#-2`6ciJhEc}3d6Ijl_*l$eJu)CuEGU#Aqe<0H7 zbAFxByo^O08&`LqW#_F4kK&Eh2@%{9m>SO8H!!3+>D*H+@wV~y?q~;1{o=<8BZ6R{ zMMWPqG<7|1SJ54E=cm>0e#urNtaWy#vAmH-p5C^ScLS7!;#WshgYoG52a^D>DV!$; zeB+PA4!~#~+m+_06J;Bdy>>b7N7wsEq7J%9DE3;fDIE$wF3rS|<;)-%EU5-a~+X1mJF zU5Dc?*S$1(aWnj+Y4l+$US)}s&vsnmZeCQWb|d)d-um4sJ3?nixbd14#l5&5I(KfO z&yG5iMRBrVyZtC&uh_FlFmF%W$g7y-n8I{N$suD;`$oT^hM~r%9`KA`EpKIKSMqao z3Zq*=OX~qdJCT6c+}g2F>oT1)b6#jCJbEPRr~Yp7wjsEL2p@lchkat*P|v*N`HVrg zhK)mcjt!exFEbcfG5|~prBYv|EIt_^Xta4gkHQA8TT%Wj*Wr{=-lTip2PIC=OV-(Z z5)!&JJ)`-+CpFTryJk1)>rTWviufty=jRJb*}<;{-`@)i+#-+3$FWuy3`=TjH9cRTgaWfm7Q`$Qh*N-T2xD*kVTyc_Y_t)FF=q|RQ)xR;a=DkWz%}b4VIoQ=?Ea2GO?HHjuG`Li8 zbB~%{m8n`yakO|(O4r6f2N_>}-RfSh0_%XFdk;3qr(_mSh>k9WKM#8S>kqt}a=jWgc$;ap;tdTm5l+f)d>B8`!+F-a*of2~ze^phV z>;p|P1~o^=N8<(GUB~i+I7S zs5A}B?&TdntfX`YkXA5!s^Q6!ccGb#m-v89mgGh^U;d5J((>ukV_LS7l1;}(qmv)3 zG;L`Cq02ikFy>{G17FPu>_|P$+Z^<;K&;meO<^Rj8Ooa&zccn~RWaSJgL76$?z6}k z3^N(7Qksw*NE~gBv>h%rDAL;@UNWG^J{BByJ0RlbkZNUi07rFb|AD%f=YwRJ99oag zu6%hi>Z_i^K>;sAo5==yTZc5Sv`B}}%AZF@cXS&Hn^q{4%yU$8m7R0ArSEP;b9ly# zLH2O)24!HOT?x=;y*$j+BeY+}AQElE0tpQbJq0=P60<8;ubKew>3}dFb2WHz3J1Uq zjeZNarlqqp60rozIt4t84lF9L3d4to&!zX5AFva7&eTUAl?|gDameSPiGls=8Dd!0 zbf5~Vb_mGT;lT?Jp4RSe^U1;H0PM6Hpd|es&f~i^H8sgV2Jk(6n)u;+f?4g)&?KBE{B}226aIZbMgLi#PS!IF(@(k!LWC5 z5bo@${lrh+y0x^yLp-_VJyakz-3_9vFy-CT2E~1HYHB2`=p!`ZKI^(qXL!#*u2Ti} zgDONq!tm%L`z!QHW13SkRSm4kxgHtsL-dht!6`>UaR5=T0(EvGnm^b!2T_l$z>$MK z481JRjve<{pQikRO(7e94MJT`AjR( zv^81J!`R^)(&EvhWh^&u+*ZDFldUpY`|Hk{k;pPH*~ndAW@u#`PnNtrhTgtr#3%jT z9=7KdBm&#l$anOg+vpx7sdvUA=hWca+TNj|8Z_YsU`xF}#a`Y6ytPw+6HFRY65)9F z0tvgDzojok^gz^9RaCr*dj|eP1j-h0FT6%ZCxQE?z)VHYdBT?B3QRtNaPC>ljd}T_ zL#&CXS_5>42l+bgP4xRr<>AUBhfX0S?*I`REsYm8?T4>iyVg7~2ufraY9CY3BS%|( z^;=q7L$R|>;WqF21aZd%C?3>XK?swWo*Ih+N*M)9!AWp0)B^eDDMfQ#Ai76_%L4= z54go?%AK(mNk+rGTWNz}4VbgBTIpQZf zx4gdHI%?-_r8R0iyZv3_=gxi0jZeMh$cvQynRqJq{Y3c`@Rm9wM<=VxZoIt07YXSn;q;A%ztfC@C)Nk+4te(pl z>5Vwkw>!1Kd9l8KEAP)W1_JAb4lK3e%+g&q)HO9(KjqHYmE9K?FkHmFKk4~g(&f1a zk8}CGPEr>yfk^xqGwc02(@>W4ZF_Na=;8}IurECKzcXe1$kC$eI=_3rfK_JynxQF+ zS(Ei6?v91dPuAbDc;*xa!+ha_1xGu#+;_wT)%^GG-`nbeT6;5DWGKe7|G`wo{(GL@ z3tKX5y`R)9W+=sbKe@GfC^}?)df3of+II{t%=Jh--8h}WP*QmB$Y6YDN%ru}dR@H= z-~01R=>qqHssH#3eTnZ{r=m=-^6RI2kSJZ4&wU8UT_!6g#U z89wgPmMNkiz|nKuYw#}*_=zJ!y8Y~i)|-=QHt8SgB9)rttI~DcqSM8VIvWyg#~3c< z?hP-G|N8&Zr_`;a%zk4$`b{k8?C#x@1CfF^VWnfA{nezyCEbNIlS8EG+-~qlj+{6V)}6_88fdSO zLtUl>oYbs*BZJW^)7>m##raC)%nfA*qg$Hp!RC4U56gzJUU>JpZMT1sN4R=OOI!B| z0kcv!*Y2pUTeni%t>*PTEvdPm=}|VVh@+D2_dK32mK{dH~tI8gD)M$jxWiX<; zN)FVx4eXYYPdU3TGRt@i026;sG`GDlKQZS8WG)TL_0{BfT$ z6FTo2%^_g-wha!q9weHFbqGgx zK9=JwPkUwG@l#=bUwnb@7WI9R3t)xu3_32+Nk1qZ%h!4AT#FW?Fud{sfRzZ4Dq0P( zvK8?Yg>D4OII%OIFXsrtFi#oX#a2vb1WV3+nZW0mTy_RS8%IjS2n_Rhyz-7ab$4|| z;|$D)fetu(CUq~KWsJ0~>`TGCvO9Ul%khGh8II>Mj}JJ$k!Np79s%X)7_otDRt0*P zXwAM%{xKp%Ks%rW{0q@ME{cdn8!HL6}zV~lo*sOYOI_t zgYEYAnuT-tP?N)5^1x4p=17)sVHc=d3G2M1%d2eWe zu;aMRfPIpOnwf5>h~$Oc!V{)iQ3+d5JeF~|e6qF8$6?2?!QQ!UhdY9vc|PHnnmF8= z?^_{MBH?A4xpSw)@#8DBhJK0_J=k&J6aVE-w3JrtJog+);S(Am?CI^}6AG$W0j#l* z1DB(%x0sF1C@%WetvR-^q=B5I4lek>I9uD=!a$VK&2;M1_Cv{73G@J|{{pgf0(__} zE$yQEZdq1is#Whz4#$3FuJ!9br0_{U+X`bQoJqVmHvlRqflg8h(J~hom*yrBShk@O z<%W+SWNAD~2M_uQ?nSCug=)ATlLz>KsG%gkvmQo63g`?upb2K(1qWr{^{0??+=OX8 z2mpX!ex03w^38!J_xu`kOuvRfbs1m*{H{ia4*YJC{>Z z2g{Z6vVjkV9;dJ{#V!m#Com10Q{I!PmPpPXyi5RF%gD&69nBiy<{$&~B71v#%aIt+ zueD<&uqrMS$zEY6%ojUu=l@Kwpw&K2S*GTKnGI%a=o#rKn{EMzzYgGrfdxB9zlFeGLgntj>w8fnDJPhEO9pz@ zx}=5bE7Xiwf31qL6>@7Y(h{lQm(SEtF#Yi2@yJ&xr?K5%O9El({o= zthu$l{nUV2y+0DLr8_>}c?r2&G={Z4z|z(OzKIv|dUd`&4Goh|vEP2-&HPzQ`iQ2C`u@QGaRoge*BF3<6ts*mRC8|a zAhw#6K6-6dlOTI=-mS{~}`oB11 z?q@2J^@1=4d*d+b{rR&D5c#IM3D|2P)8z*mauE8=G9ZzKeZYjH07ZSnid)hNWGW91 zl&Hl$H}S7@fUg&hI~f>zTAewA=4j$JSb6uQIH$k;hG&4qEti~<5&_=#3XGH~uc#>M zOW?O#jwwhuCt+zL4-OE&xG*L<^_lsJ(a>N=qHMvQ5oF1NopB_LQ*fGwqpz~$;@ydq zXr1K4V2seBtptSH1)GiBbCA{_!SX)>_Ri+Nh< z9qUIaw_=CoBiR17VC)0f!R(#-sb>|@H&MoiS4A@#za#4}Vv(fLMyw0wmeG-s)|7yH z8srV1=xt!wVjAU1=*c{vV4`CuP@a1jF-;RCpuK}Z*nzeI$>ERF5>MBb>qv88K+=dH zqc&r5)U*myyFf&zstyw_?}ki_*Cp#R8Q$!!SLc^|irhQd6_F_B)c;B^Xf$OWr&tsY z745*z^c{nH(_j9Oa2y`ICT9QriBlcZ>t4E7-^%kZD_-q2lo%?vzUjvv@_{FA|FGmP z<3mAJ0EvW0lgmagjC}Qcf}~R|$ay>&gw_~5BvZKmpfBYGK%YmRb>2KRQ1986EC~av z#T01ngB@pr_iAGda0(_CR)VL8pr=R$D#EZZ>OZPtJf8r-z>#c%mja=#9LN8_yOkCV zc}i0mN}t_ViL0R$tVSAS13Hj9^m8anmJGGzDgKw@UlobrV)<*YxMQyr7N9S|2E8fR)vI<`O5^xf1~%^F z?R`A10h2n}7A|~@P)ixe-=`WmVn@Ohl#v43VwR%>Xn(A8=T<=iy1wzkm*lfu56JPh zulK6KH+-ZcP?xcfiIc&HJgef$#yn=%CW5)14T=ZU;2SeyeEcseu zjlWlZ+kjh5gVRvhx6?~OwgApx@2ZzrKA}=A%Oj# zB40vvt_bK&kY5Pv&auBtP78D0Fx?{&W<|-#$*m{(Fs2e*63|WVfxHL79oZ@>05&Q| zW5NdvNtpP4^HJ9mxVAe9sl5qWsQdTrQ^I4ff=smW)tTL%FW@yZmt&^}6(WF_a8y5n zroHOe1RlO$tb}8#+}YPVkW0b2w;HEhVJD4s60`j10zT56&K{feQS5PPQ@ zYhv>~numm`&yR6BbfV$mFxvjKNTk!pTrVEZF&W4+j0ry4D<{{9&&N~Rd4Dr95IO?j zL(rek7YhR&L)KZd%8ne82t|wSB#NZE49C=*od`(;WIL}Dgpef?7XX2H`#c0qR-Vi zLaj^7KBnf2AID7x;r)E~Vw60toj-Z*n`OXwYs;!c35W8NMS9z`S%%mvOEY#?h3L*t z-`*};W74OPuH{@Kq$AZpaQ`>=YOGrtlhmhq5+AOH zvUkMSK0(r~q9aSNPX|;JgqGn0Z^~G%jLZ(YB5t`|JpL$)m=n#+Q;0mC=1aaK_`bkM z@xI!N2s`Q+u0C@5IpPgIxGmr=&*Tp$1^r-(#7mzL-O)q)R98qEz0puM61WQR zsvI=DVTJYe~vXL|$*Vo_%r8VaL`mDDK69ZyMzjcr>&;v|Bc34j}# z&I3E2xkw8D!cp&`u>KsjLq9U@`_5pDCI@5eUrUNqEghO*f65=mD-Qq_^mEey^S{)t z+0j_imaMOlD8)K1jPZMyY2WRT*3)lmInSzV1L^W>ZXjW5W%!XJYB&<=h0zq{q~JkiT_hHFm!SB z)j+n;^4YVm$pD^gu1Ly4fqUiy-=dF*6>eU34cpHY&45vCMHJhrk7yqzWll;o^NNXS zAq3|MNLU&?V%N1^^6}#5mM<+K;V#_vV-5w6zZdmXK0K8Acnxz@b-738O zu=%Rfs+u(kHeKHnb-qrYF+;0i;}q$Gl!D{kS}|3A9kZgmyam=^AlCLt6(@PBck4IU zDQ9L(L`shT*bRKX?vdSdyX1*g0rJVgw*~xdyJXek2C|cHxn`{F3y(O@_B}(I@qK>s z{KXtdTlJK^lbsJ;D8GO2UKma`UT*I9#~jeuK#Si(AR3MEwjhjji^aE)`W&=3&%_36 z3qpV=4BqX)R>`3TYubNw4q%y?!i$f9+S@`46M*VQLJmNUUm)cDm~+z+m&;LLTZ_X> z_*D7Z&#onCol$KEnj^BWo9ihGEHUOA9UlG$#({me?|L6Fc9E|MO2Kj`1HN(Ii20}y zsV4@R6)i4rP`aRA{|4l^O=#xtix#!uLE?P*T6+-ufhw3jp%{46Py(R79U+(M`^m|n zOn={Wv;l6PFK--OfeC;6QbtCrV)gZ5;R`~FZ%!}OL$BUOMMid->3cL>M%M#Z=FsY+ zetg+gqA9v_NQl)KdEly1#cJ!^djYQxx>5}2b!GAK^LvK+Kr8AzREU&7mKW8e0Eb!9 z2h%VZ&FnNfaiYy(dxw7G=-6g?LZ497Z!#}7U3N7-KHdfhE}pyzG%Ntus!@v$V7)!C zSbG5roM0Y&NYO3HfFA0_%{RWBWP1yp%xQr^ME?lokaw#rSh%+|aTxUv9@P)k<;h@u zd@a)O*_L@t`L(&48#a1P<(tugn?==jbn0(eH{Uxpm`0pW?no8z=qNdmW5?`aZ4DT{ zvq1WpboUp%-QClki-dMpywjd-785i5yfqHss2poRMO%XR9me6U0(-rjoSai|yMsMl zXpWzXb5)wX^(rYR9mM7;^pYxHTIf$_VbRtJ>p$39lbcG^t7!d9J!n4BUb}L&s>si-kAA4VN1_(CixEnA81Q1 z1pU0Id4DIo*Fjf$0j|7mvejO~z!1Y&8=CY(pFS;s4>ZU{d2trWy0-_+CkEy`=E`5IrCRS(`UVOkNe9Y(AU#b591f4THNHlThWcJ;%60N`d9ayzFawR9=J zGiN=UQ*0x|LYb4qY|gB7_lDf`@DyJ@&W0&jx~qrI@S~mg!R!3z3Po%aG*uK)F)cBU zhb?~dprD^;OLzAcDJd!Vg)1Z3f7Lm-ik%(8zSUGD97arTZE1NT={VX_|CRVw04zH& zG7X!^26HMT-=%iw@&yAo8H5*g*dvA&KDYa1I!#ixbOs~HC;*3 z*)zzcY~ka`Q+gVYUj-i|us%<6#6_;Qc{LNe#+Qzt(bVy>3~j`8tx_jwZ&TC zJI0Jv;?HTA$zWV>c9P}E^FBWqYDgv_|fM0MU9v5RvUp=c1D5yW6WG!KR7?p_p(>5b-0R({MY$ z(Y68c7yy&k%a<>~0*XK&=arPy<40F=RiYGbyCRST(p2Jf>)V-Nju8Z?H8FLr2pqge zl<(pR`uO^)-!_81f-nXm1Ht6MYi3Ri`s+Egb4iSSPgpWNIu&S_Cbc>#jiq^w&~O36 z;M}%!PA7!QNcQO}1^pB#j%+G!=o0T2`AeC7F^#e15t)16}ns!O_V75hxsbF`#9MO4@ny!}KBA6Cu7cPN^$=AzNM4FR_Xd{- z=pR!VZT^5&qzl34sF^QB!WD?G!thL`;DlB!RYq7rg#|Qw83hs*ks!QaX9&@(B1+lO z){NR1cuoea1VYa#L&e%Wg6aZKIXc7YCIw6n^v?ODo;C&QwPw`0(AfKv4*YO!>pyKA4Xtbgj ztR}wx*TC~zN{kvC8wcu4W1r!8qiaFE`WSbnF8Gl*%5N*mlptt?hm_VcB;C~Kth%{{ z>TfhaQ58JGsfFs~6f*WUAacd3fTa3Mch7%@hf7Bx`i1_&A7=5QJ|pt=hEduo`&>BS(f5Me?XCDvY9 z*$6Za05m=&FYZ3gYe@NOfG9*!6?2h=1FS8tZE*ek)sU6M089<4eeg)4u5mhPVC!LK zrx(QqdEn?i)XAsafp|fC6!VP@Yr-P|f5AN9sWi=KF#X0*&dzL6G9X=)5rpJMv#v&!Bt)80ky zAKj4D~geA5a2S3=NKI)+7OB*kLAE4EL??)C`25E6VX;}yJ@fZo{1c` zUDtW_R_6uZuy8+iMcyx}vK!>Q?6nXZRdE-6HfvX3m6+B&7j*u6Pu5PH=jkwX`r1*9 z3@RO2y2ko?mR_%kA^h(*1{d33GByjJ^9$}FHL`9iEJN{0AL9ywF!#E3yUU9XJp9}g zZ&ttEwySO+sjs4r1HKaE1jN z&!}_DqXocvPi=YPvmJJaN!?SGxb-IoL)W+8UFi{iYxi=$@C8fU1bNiN_e}YI32%Y1 z1zIg#mW3YWTgH00$FgM@+&A7kW{IIuJ9H_y&@s|+l;*4xE&~R)3Oe>y4SeC?4py76 za@&HY#Pehdm-m|8`s0IFs+no*e>T+HdkH)P_!SVKpa-E;T zhLPdn_x1Jl7p^Q}aLePJ9PmzDy2@WO^0v;2Y|zMi{b`W%{sV;#h|^jj%Nd~!(IT7e zY+B==xTK3MJ6l?<%h>P!rs>7FTD4>w)3m$q<$Q+pr#oZdcX+&M%cv?|U6`LAUmZq! z!&{oYZyMvM6g8dqzg(MqunwiD+pz@t-u{`lN2V~Ia}wGd>QTjd8PhTzV0JY!&Mkl) z>6G?-qONDZmpNLK8C5lherM&U`3x4CO$xuopE&CUp}o!B-=~~ltNrw zT-YlT;^V#V-Zh9mL9hB@X6`utIp2yCo$4Z!>2J_mgDJ9^XqYo9Ip6|*fAexL1*_{Q z5-kRFhfK~4mbV`CFCa2e|KZL=E%r9pt4MaeTS*}BD|{ftTzHu491{q0}JC(e|+6? zq6PfG{nzPz4xSGj_DGFtVKfc(gKXGrt!38&8fY zrs1mv?))3@B(Qp}6gfsVx?1A>0X(5Ng;0;c>c6>{YT*ZNH4z{_iUW#m`SMc&6DV@k zAzG%zB_3y;RV?FNzYuQM>dLG7ys)0Vcm7(Nv~W=QmJvEdZ~~w~&nM7fwZo#NOuQ$} z@INdIARAQj5C(}NVm!ubrBiPg9Y?nZ^H2FsGVe`6d^Xq#I# zg(00+TZ0RR?XCzV%x4AeRjs<_1KmsNT-2lc(11}0<`VE7|$i_|8Gl} zA4?bpXc3g+(Bw57UmN8gh+2mc^c|Zqx*xf0lG+jaIHz6yvg+E7M$dI;7d;GQG!v$4 z(U3-%K>v=6#2ZosLX}O0DN)Um{nrBVHdhmOwL~neg8@0OTGYuvHNYDp5z0M0L=()Zti^u$CPvY&F&Pz8Y%^O59w4gdY}=g=H(BA z84Q7LRMl_v4l6(Z*T{2!^Xk0fV!-=ENnn8CsA+6^7#s!a z{w^FL+GejWBbduAs%lCFK6}XLsz_ri7y4l2dK^O|fygZ)Ve%R#j zZr)teUImqDFu`j>IZV1&FHsx1$2TFy{>bY3?06G{|%g@G~Xy)Ci^^3^ghRVeLpB zdeYmo{u#U;*(4xR!VW|Y9R*}?EuTLh3k2NnVG0V~fB59%cqRBhmaLKL#I=7io~^aX~-G_j&g2-P```X<+={1i2H5Q!#@! ziqJ(kbr5O**iRi)4I)M3u>8A?YZR5Z28)c~3ly!y_{Ogj-a!CIB;9?+_P2k%C;Kl# z6MF#OjTF~VXsq$dTMvFJvOm?U2JepxY9ec(U;4|Y?C0y}lAW8agr3g;uD27OLR1$J zjE$Z)FK|)tZQ^C6D2Dyzd}WL&eG{7b<@4tkaHanfS$KXQe9Y!&Ak|YZ1|>k&o9+L0 zTwRk1+BFR0{!?IDiq2cM{uv6+6;e)V;Crim`0uAUz01^3fU6cST4Yr}g3w+CfNFOA ze_uyOIazgAr&)fw1dta$hdQ&2@aDgNJ!pu+^1YKMqUWqywaOL(+c(=0GnJw|`A_gT z^r>>`7v_udi)tbZ0RtduSBcB#TmhzHZ4Wt(rJ+XLzu8L4E^leV;^oVqp){mT9r~uL zBEw})wh~q&z#HoTn$h`YJHDgz-Lqn@Vy%^KW2cXg$C!Q_*G5wm>m8V}1&;UWid~PE zohfuaGB_p^!0Fr~fnPAWJC=OlpvbnNu4KTuS7|;1%k?Wq;YvMOKoX5{-+pW{beInQ#-pi*O+5GLtx?T?SI5V|r z&jaBmFfqTNpx~I_Ux*Tl8*!38{?{@4eEyXTmNkXV^Mbi00(IwBv8AfC^>=zaiG>XNK%}T`CtxuDSBB%%8tOSJqPF! zV8cn zl!}tpVRIT~k<7VRA%~PxNyu2qp+(M0nNEmW2etfC_w)Uu9j@!Xug85|_x-q!{c~L{ z{rY}C-|y%1dB0z$Pl%5kvXbC%db%U=7iSu)ZNW}QgAiT{dC)uu=1&kaCLF|>lKFy0 zyGfsNP~f?hvx{dWMaA*b^nuJ|FCP@s{a&J@WsN*H50WU5cN`UB1Eqk7-({&5yMPc? zFD_U%?Mi?7%L#PZI2T0Yn|))*d;al)VwN( zJ0zCy7*F)x_+7p(v`Io5z0vBa)0Ms4{;TzRpZtI~%#Z`xbB5Q1>$`#4iTFY=IM~|j zr}DvaZs6ansey2x3~q=fae$pWfLlf~_=_;~*10$?#bxje!6>6GiVMU&i9FEKymXoZ z-|pU=5hF#cfSS8TwOeo}>0^9hx1d)9hw`1l4m8-y39tf9elCI<_cOXhz+Iw#7Cs}R zLzq98OHuZ`S-w|t$_HN@0!+5JBLDN;>}92tYxBUD#ZaaHn40D`{F7)Hj&lySIGuTK zuaqkk3U@(Ed8*k8A%RXeR$neH+{G*CMoU(@nB#QV``$r^I0GF~q`s87!_!%{=fjUi zD**1Ee|e#7JSRq6pOem`cs!cc{xx1OzdfA%jJ)sKoawX~*_H%{ zIZy;lhOep44`zeSwghr=(9zKu7SeP|zvRTJ;%E8>2Bmk?spfCS+n=BLew6cv&MtYZ z=hXNgz|z)eb!Nf60Vc7SwWxKaohRtsm5h(Afy#|5i*}q?EEIK*i$^}1LTCmc+VQJ} z^Di?{e&y~#9Q!(pli`taBo7@`!V^w8Q7kRtK4b*(ta?5m(vY+XP>j}*cziZ)-|k`m zpzp*z;iJug#W@9j2Vo99NATJ&g(0sMKCCP)Ev>Jfo?gzX0|(r9WtJv71UI-~;n=DR z`IG#luGP+@Wc3gB)^57LF*@2a*rV{w{ag22S6J`vRp0zPG34$^Rl3$Cd`DB6Fmzec z@;;7dPBoN$-FZ&aQoo(pyAYk|@58Ai^NEAGt4D+-B}ui%sc1E)-}929(QIgb(1>A) zK~ehc+O2v&<0|1u!&5c{edpwP-SfVmeeKjEUnT&+^|E#hdOrEvfwip5y{sWm#nz;O z!Uq;htZD+|0p_>QHzFiOYRl$^oRC`LC!ee}Ew~C}BSZ=araRzN*I|q1MdwXR^Gg8f z{ke6@7F|+TYb;uSWL-S{R$TRXgU275bPe5|8>!em8~n#`{_l6FNs2){O!k_Hh?LDb zuk3XBej|9e4Gj%$ycPcU>;A@{7N?Z+bbrU>D9z$Kb#NEIMlmkwv=6?|N1 zhPH3KF>U*-N2t)z+=YGpGh5IxGBd-HvHS2s4fDZ$?^1;ZAuqEi{Q@jJNAv`Q zc=eSZ$V1#54uwFKJcW%=3Wol(PEO)qrbaLD|F@lKZRe+eQ~ZOzt!Z-9F-ZjbSkT8t z5-l_t^CP^F8}2yP((636{`W+9g)>>$7~z;m#vT?>9Vfp9jeha=?UbtuUvn^_Nl2$y z(G0*>dEKpvTwZZ+ZZH!}xM0NMS;+CxhWfwE9?H`apH=g(7c51d&L#%(Jeg($)Mo+| z2*`9SV1y%G*9J_RQjG<%p-=;udiCbOWcIAjkfO*&mA%9K_RKfF6MROV{?ez1FBBvH z7q}*+FnA(8eX4GX!==HNJn-vcjAI&G=hAm$&^yGYydTcne{koP2e5OVy)=w#JK6cDTlR5d zLVDsq)VC(s?S^RL-g_^WHCZM?i`;D51!Rv<^V1AI(?|*Nn(6~a;ERR!OnL2*N0)#nWO>QY|+dU z#*N#!sKx^+L&|)ygWK9pMCKq%0_#A*6Z3JC%_GIU#&A67S|Jfy0kdf|{xL1iirhSV9j?$5~Ebj)>Zz~FlC zsP88>n|f6`Fw!Go#qD8S7u>Pc3n}#&H*Ro<+kvn_FBr zzS{e8!_O-sA|edzqQ!cmU8@$F;GAv*PqMC_x94ei#5QY?gEI{SF93ag7TUVIO%x@! z^#|38cAY0^`ykHm%93ldK_*V?Wpx$ zQwTj4zS;e^8~wXBx4+|n`>*_w(rveHTRVfq4aE{x`MZ;o9L?8^k#aDI7`zB!tR%6p>ikfO0BBR+UBuaG~Tj34!AIG zi^&T0sS9(m{^r-ZA%Y07;82YPw^E22`82}fMLg$Xi;YT}Aoj463%^p2YI!7Q$7#Iv zl{rc;kKilYOzkLJJ6|Wj(05GU<*ckEn{f#p8p4?vON6rB=S z@0q>Xcod+>R$=9rKI%@9wGTMs#nYoXFk5pS{Qjdb!*92hXXsSkL1p*F*Sc{)o&#hT zOy^L0BAO5BhBVrvjWjkAOBvF3$u$trM7nJ9>V$V-%b(1qjgzf^@(4<;({=aU<+3FK z0{-s_hIhd@Km^4UBzs$G9T1XjqzGAYsS%4FAQB54-}?wQp|Y6@A~b;tS`6bP?-Rr| zi#?ClBDP;L$rig_Gh*VO6QzuFi1dG=y9RY>f6NkFu&eXTskfdV7=7d!-B_oKe)bE| z7zs(6=2IRxu`clK^c*U93ugPUawb3rv*rOOsI-%`eD=9gxyY0C&KhNO8Ca1O< z&q|5K&D|B{4(hlqF?)CKE+Hr5iyXQ}@6pK%Qf`NNTo2VsbsTp8MZu4X1ki?)S)NJB%d zBgQRjIQ+IxoM@t>U)rMYg~X8FO*+<$Y7roUH&N9InT(cUABCNm`bGTy;N`_3xMgr) zZPleCHM~j&_k#kM{XevxZ+Pqkrz(w^B{?8JIp%c0`$jt+sV}Awc)Y1(qn>enxAPRZ zD-ooe@qd^=tI)6ADsx4_4}z2M=eNmVRN1vr$+z0rD)HjJOD}oyKe}}vePou#OtyP4 z3fFQ^jXpl67r*u9O+r~t&vX;3wm*k=Deh+sHe3+ z5gExyd=AkKBMq3rVw74}Hooox90ew&wgppFl3e#38Sk^ur%&X9!WSi-?pS@CK4_5< z*SU8_;kF}%woiYq*HT$$D*pAFRy!9_CQQ4AG*yIUH_3;lYPku5fnsA_`CY#h(SVX3 zCY3p_%@gE~^l!IqjZRP6>6gc;*>n&WTn+oNBna6~ zoANxPi{m`RJM!-8lRq(ymv^#Ar|{|0xPj|l`#u4XJA2E(F~qE1h4CpN)`Ol(9C*?s zA^KB2ZP~K;?0hsq?~Q|^N@ISD7ZVwXiWSQn zE06ecjn}EFJE5V+aZt`^p?Eq89qVind$p_LH_hOhH`|Wf`4?o7opf|OgDdz%q<8L= znW-OEmX-BBKfq^)DJM%&*bllLkeaXoM$2issJ1x2ez>CXoT|~I6HWMF&jjL`vaKHtRu$Ud7z>Br@s~%r$I^jo{3XN{v7LyNl^Qvip7H*ljMq(ZMo6V z??vVFg=NK%`aXYYZD^0Cz|fj^e$r}%>z=r=G?%RRi{L9D!S9?j@72*M$}-c?E8MP0 zGq!PKl(C80D3a3PUT%8aT15^`&D76=BWz4E4MW213p8UIjjbB`_Hp{8qA<_qQl-6h zre;Zm@g?n|4SYyQFPCt-LH6G$!wwxxz1BW?{McHh1blay@uhZu`a8>wKiH>xZoQ)I z)Q)`mus?nJ+w$oOn{#~ng+G1z?C|y*6dk5K{e2FFcKr6Q12+uq0oG*sG&48PJK48a zXXW4h{o#80Ze{dJ@lqcZJR2%?P#u#>DOuo%!on*8XeKsf(Hy52moiV1w;y zzC1r*5E3X6vE95m8AT}g`jI=CC;&9NcKv|4B4r72KQ?xDMisOAbOfpsWm0ivr4g~( zvKE6pUr$JJN=`8r9~W!g9&~#bU)B7bYZ3HV2MfiPPy@Ms0wa?^z=`*zjq;iKvs}Xx?a}H{Pha9aN@6O##D6aPZE;RTadZM z!39|_w`aX(VGgwfOd$nPew~gVl5e zwlRT-31`CO$D=l05BTda7p*aaH8>ntv8(ubs>nR=sy?E2T|g86DZHJ|lCy7h=r9D_ z-t|lNsm!4I`>vXpmOmoL`@V3yllttv{tj^ETP4&{0>8|``0@FQ% zqql5vBV8$bGjgeS0$sFm`At5LIy_yx2qpi{?ugyDw%Uj;KBOsk*Eh5 zDYa$BFUo&NI-XfX6=*`b-xpQ>ok{q(fgI(V`m7f|ioH(~W%`aaA&$sRbLGpm*LLXD zH?NX03JEL@ZpwOjYQ3TXg=<)Tv#z|iP0y6y*ARS{wA)egPsdnnEt~j0i9*Nmg zq@!{%k1%bC^DWHHYmFVfBg+x&vA(fY%BYGNJ>-2U)RFh7`KNUX|5f=$nm&acQ)A41 zn(LIa+J9w!y7_M7`pc4uq-UMp+?0kfq<@D}{e5ISiq3THQWtF=wb&XV0BX;+Q6C$L zs}Vx8x37xJ0S1NdTpbKjsxC+SC(b~O#qk>lCLeLqUJ>ueGK1$F^q-Jb-(yb*#$&P0l zn57PzikvI&c2eV^G5!SQlt~DOH%f;C_o(6zj9>4gp#r_M`yT4v=nbKqI zd(?ZUv@Eu~%Jxw3Ysc^pXEj!lX@~ZXvpu$iE zXXi|ZbfAOn^*BVa`F7znrn#^PVGUwyV%xIe8PSspXD)gQmh{I+Hf~xrRjFrhH=FqS zRn2Wm>HV@YW`*=DjA5zQdp6w zdgxf0JeFP@$Gd^WaTgoJ*1aO7fFqHH`JKQi!`04n4n{0J{p7o2_LZfr5; z+xO+nhATzalNZb&0O)Fu%}17%C$@{M-^!gm#(0B$dw`{6oX}>~ z6`ZTX827i9z)jTd^Np=|Aw|uZp~+G=4^LpJi)bK)BB4>tNa`}WoX88Gg-OF}y%#N- zB&22Lqr`)Qb>Q}IvLgYu%yyW|Fo-)b+i3UfckVX#)9=+w5_bf<#~^0tPxe4e7v*}- zie^5lqKjH;h(8;&rIB)td-WO{X{KcbwNbJ82D6AZYpxtqSjCE?#W_jF%zatS@1ArY zT|r|s05oqc;EOiNe5Duoh3v~}+C#3$hFnDhs3m*wHO42Ft1OkLJ3wd2gH}bb^#f(| zrX$RZN9R|Cusv_irZqE}8Ec__YJ3BAV-WFb^BNh$-+OW+S}@!LF*Lf$5eTI&n0;K9 z1O#Y_Jk^{019%0Ul?JrFR()giMW^AX)-CieYsHYKgda2T^Uc z6fLk&KTSKe#QSh%<^3%8aOQ~TqRN8%96&Xg8|_z+o;WLQZh@7XZfx3UB60k`&QJN| z_np>p5f7nx{5r*V%C*EyxwpKttabO$jwMjT17x3&vPkxEDJLj1RjpGk=#=L>lrkon zDBtHzil6X<;nYLhuMwHj69RXRIbmJ{1gb*U&{YB(-$mi=?Ch*jQ=k!%-gN%#ubP=? zX=aOAd?mVLd$__P*y!ZVF&IKlRbT3BMUA2c?<~i)$)Vi+zH8txq;Pf(ZK9}F0;m~d zt1Du>GE%ii8z83Ti~;4WOlDF_t#R+7+CR~FSa9R73kuWW;hdENc1}-96Sf*^N48t#uo+F~Rd$?E96bIH z739jxY)`cNZ>2L-sdxav&2)G@k8du+?@30CaKthf5}SWAuZ+iU zfi7YLwime8J#-KE7DgZ>XCZs#s5qOT>>*Wl7Q=8~12O8q2Y&MIoC4GWQYO0p`peHB z;MNsgM1Rh@V!6!yx~;0@xAFRqlggb~O^?IcNQPBjM;)r`Z4<5atsOKzz2xL+N$BJ; zw9XC$x?IE|i4tof+uWV{DR@j&d4x+b;x%L@vOz8#IksVH2=La0)pdsGo@st};`s1R9e=agY)Omm-q;8K)6%>Y&L|HCZ6Gt#N3$;{pG$scht4zjGlj>{$C3{dMPi{%V|f|#bg3tlW%p5?jvh>Nmy@;>BXWJ47M{Yo j|CK!6f5P7?Zf^BFvu*na+Iynp#;r$>|K!lfFTVa4i?jLG literal 59921 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 diff --git a/benchmarks/decoders/benchmark_readme_data.json b/benchmarks/decoders/benchmark_readme_data.json index c3759ea95..5bedd30b1 100644 --- a/benchmarks/decoders/benchmark_readme_data.json +++ b/benchmarks/decoders/benchmark_readme_data.json @@ -1,145 +1,145 @@ [ { "decoder": "TorchCodec", - "description": "10 seek()+next()", - "fps": 296.7497929852154, - "fps_p25": 304.82592121401444, - "fps_p75": 286.39866868882336, + "description": "uniform 10 seek()+next()", + "fps": 314.3002734250253, + "fps_p25": 322.3704500761085, + "fps_p75": 304.61961295439414, "frame_count": 10, - "iqr": 0.0021107543725520372, - "median": 0.03369842283427715, - "type": "seek()+next()", + "iqr": 0.001807614229619503, + "median": 0.03181670792400837, + "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec", - "description": "1 next()", - "fps": 141.80053650468176, - "fps_p25": 144.12265279456386, - "fps_p75": 128.28507218641042, - "frame_count": 1, - "iqr": 0.0008566047297790648, - "median": 0.007052159495651722, - "type": "next()", + "description": "random 10 seek()+next()", + "fps": 318.6332392061074, + "fps_p25": 326.61265301425016, + "fps_p75": 307.9272223416659, + "frame_count": 10, + "iqr": 0.0018578986637294292, + "median": 0.031384045258164406, + "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec", - "description": "10 next()", - "fps": 638.7876251007046, - "fps_p25": 647.626546889273, - "fps_p75": 629.6538548699413, - "frame_count": 10, - "iqr": 0.00044074421748518944, - "median": 0.015654655173420906, + "description": "100 next()", + "fps": 963.8588500259038, + "fps_p25": 1232.7462278510554, + "fps_p75": 897.72507501799, + "frame_count": 100, + "iqr": 0.03027298115193844, + "median": 0.10374963097274303, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec[num_threads=1]", - "description": "10 seek()+next()", - "fps": 126.6773946375974, - "fps_p25": 128.33021600580943, - "fps_p75": 124.2963412180317, + "description": "uniform 10 seek()+next()", + "fps": 131.988339357579, + "fps_p25": 133.26652650624064, + "fps_p75": 130.3643453501947, "frame_count": 10, - "iqr": 0.00252892030403018, - "median": 0.07894068257883191, - "type": "seek()+next()", + "iqr": 0.0016704928129911423, + "median": 0.07576426863670349, + "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec[num_threads=1]", - "description": "1 next()", - "fps": 410.70043288059617, - "fps_p25": 416.39979027639464, - "fps_p75": 405.8298526819803, - "frame_count": 1, - "iqr": 6.25486485660077e-05, - "median": 0.0024348647333681584, - "type": "next()", + "description": "random 10 seek()+next()", + "fps": 122.75317946016999, + "fps_p25": 124.22201311180707, + "fps_p75": 121.19633847694604, + "frame_count": 10, + "iqr": 0.0020097135566174984, + "median": 0.08146428503096104, + "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec[num_threads=1]", - "description": "10 next()", - "fps": 758.7565583035099, - "fps_p25": 766.9872077345758, - "fps_p75": 751.3583938952637, - "frame_count": 10, - "iqr": 0.00027120066806674004, - "median": 0.013179457746446133, + "description": "100 next()", + "fps": 809.9441914595772, + "fps_p25": 820.5478107543202, + "fps_p75": 801.8920090548505, + "frame_count": 100, + "iqr": 0.0028352681547403336, + "median": 0.12346529681235552, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { - "decoder": "TorchVision[backend=VideoReader]", - "description": "10 seek()+next()", - "fps": 7.880664295730362, - "fps_p25": 7.924876540397429, - "fps_p75": 7.827668314297991, + "decoder": "TorchVision[backend=video_reader]", + "description": "uniform 10 seek()+next()", + "fps": 7.818673617539736, + "fps_p25": 7.914887876132339, + "fps_p75": 7.72635851907541, "frame_count": 10, - "iqr": 0.01567032840102911, - "median": 1.2689285604283214, - "type": "seek()+next()", + "iqr": 0.0308289946988225, + "median": 1.2789893131703138, + "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { - "decoder": "TorchVision[backend=VideoReader]", - "description": "1 next()", - "fps": 209.3834723742803, - "fps_p25": 211.77546088016425, - "fps_p75": 199.25812670019334, - "frame_count": 1, - "iqr": 0.0002966334810480479, - "median": 0.00477592614479363, - "type": "next()", + "decoder": "TorchVision[backend=video_reader]", + "description": "random 10 seek()+next()", + "fps": 8.174175797820915, + "fps_p25": 8.198128262246657, + "fps_p75": 8.089292632708272, + "frame_count": 10, + "iqr": 0.016411407850682735, + "median": 1.2233649296686053, + "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { - "decoder": "TorchVision[backend=VideoReader]", - "description": "10 next()", - "fps": 531.7221665034224, - "fps_p25": 538.7259880033903, - "fps_p75": 522.8300241450709, - "frame_count": 10, - "iqr": 0.0005643628537654877, - "median": 0.018806814216077328, + "decoder": "TorchVision[backend=video_reader]", + "description": "100 next()", + "fps": 708.5626871155907, + "fps_p25": 714.9065385245668, + "fps_p75": 701.1653993140255, + "frame_count": 100, + "iqr": 0.002741277450695634, + "median": 0.14113077335059643, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchAudio", - "description": "10 seek()+next()", - "fps": 27.403418366590216, - "fps_p25": 27.57563496650987, - "fps_p75": 27.276339015442346, + "description": "uniform 10 seek()+next()", + "fps": 28.25481341811952, + "fps_p25": 28.472751002542807, + "fps_p75": 28.027683266448527, "frame_count": 10, - "iqr": 0.003979140194132924, - "median": 0.36491797724738717, - "type": "seek()+next()", + "iqr": 0.005577113479375839, + "median": 0.35392199736088514, + "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchAudio", - "description": "1 next()", - "fps": 243.36030386646544, - "fps_p25": 246.1182470856226, - "fps_p75": 240.91573311529928, - "frame_count": 1, - "iqr": 8.774134330451558e-05, - "median": 0.004109133593738079, - "type": "next()", + "description": "random 10 seek()+next()", + "fps": 29.222482794708707, + "fps_p25": 29.434989975510586, + "fps_p75": 28.911024515041184, + "frame_count": 10, + "iqr": 0.006157086929306388, + "median": 0.34220227180048823, + "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchAudio", - "description": "10 next()", - "fps": 564.5307153840273, - "fps_p25": 572.2932075367765, - "fps_p75": 558.1691247911658, - "frame_count": 10, - "iqr": 0.00044215633533895016, - "median": 0.01771382801234722, + "description": "100 next()", + "fps": 719.0499213961119, + "fps_p25": 725.4279593070022, + "fps_p75": 710.8406389605324, + "frame_count": 100, + "iqr": 0.002828843891620636, + "median": 0.13907240238040686, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, @@ -150,4 +150,4 @@ "python_version": "3.11.10", "system": "Linux" } -] +] \ No newline at end of file diff --git a/benchmarks/decoders/generate_readme_data.py b/benchmarks/decoders/generate_readme_data.py index 6fb859c0c..fedaae094 100644 --- a/benchmarks/decoders/generate_readme_data.py +++ b/benchmarks/decoders/generate_readme_data.py @@ -15,8 +15,8 @@ generate_videos, run_benchmarks, TorchAudioDecoder, - TorchcodecNonCompiledWithOptions, - TVNewAPIDecoderWithBackend, + TorchCodecPublic, + TorchVision, ) @@ -46,22 +46,22 @@ def main() -> None: video_files_paths = glob.glob(f"{videos_dir_path}/*.mp4") decoder_dict = {} - decoder_dict["TorchCodec"] = TorchcodecNonCompiledWithOptions() - decoder_dict["TorchCodec[num_threads=1]"] = TorchcodecNonCompiledWithOptions( - num_threads=1 + decoder_dict["TorchCodec"] = TorchCodecPublic() + decoder_dict["TorchCodec[num_threads=1]"] = TorchCodecPublic( + num_ffmpeg_threads=1 ) - decoder_dict["TorchVision[backend=VideoReader]"] = TVNewAPIDecoderWithBackend( + decoder_dict["TorchVision[backend=video_reader]"] = TorchVision( "video_reader" ) decoder_dict["TorchAudio"] = TorchAudioDecoder() # These are the number of uniform seeks we do in the seek+decode benchmark. - num_uniform_samples = 10 + num_samples = 10 df_data = run_benchmarks( decoder_dict, video_files_paths, - num_uniform_samples, - 10, + num_samples, + 30, False, ) df_data.append( From c4681c0b0e07a83e51a4f3130592f0d20121323e Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Mon, 4 Nov 2024 07:56:36 -0800 Subject: [PATCH 2/2] Generation new chart, add more next benchmarks --- benchmarks/decoders/benchmark_decoders.py | 5 +- .../decoders/benchmark_decoders_library.py | 43 ++++--- .../decoders/benchmark_readme_chart.png | Bin 51187 -> 51324 bytes .../decoders/benchmark_readme_data.json | 120 +++++++++--------- benchmarks/decoders/generate_readme_data.py | 5 +- 5 files changed, 92 insertions(+), 81 deletions(-) diff --git a/benchmarks/decoders/benchmark_decoders.py b/benchmarks/decoders/benchmark_decoders.py index b8fcbd2e2..b1dc46c54 100644 --- a/benchmarks/decoders/benchmark_decoders.py +++ b/benchmarks/decoders/benchmark_decoders.py @@ -145,8 +145,9 @@ def main() -> None: decoder_dict, video_paths, num_uniform_samples, - args.bm_video_speed_min_run_seconds, - args.bm_video_creation, + num_sequential_frames_from_start=[1, 10, 100], + min_runtime_seconds=args.bm_video_speed_min_run_seconds, + benchmark_video_creation=args.bm_video_creation, ) plot_data(df_data, args.plot_path) diff --git a/benchmarks/decoders/benchmark_decoders_library.py b/benchmarks/decoders/benchmark_decoders_library.py index 7d6e77c1c..11f4fe2e4 100644 --- a/benchmarks/decoders/benchmark_decoders_library.py +++ b/benchmarks/decoders/benchmark_decoders_library.py @@ -472,28 +472,37 @@ def get_metadata(video_file_path: str) -> VideoStreamMetadata: return VideoDecoder(video_file_path).metadata def run_benchmarks( - decoder_dict, - video_files_paths, - num_samples, - min_runtime_seconds, - benchmark_video_creation, + decoder_dict: dict[str, AbstractDecoder], + video_files_paths: list[str], + num_samples: int, + num_sequential_frames_from_start: list[int], + min_runtime_seconds: float, + benchmark_video_creation: bool, ) -> list[dict[str, str | float | int]]: + # Ensure that we have the same seed across benchmark runs. + torch.manual_seed(0) + + print(f"video_files_paths={video_files_paths}") + results = [] df_data = [] - print(f"video_files_paths={video_files_paths}") verbose = False - for decoder_name, decoder in decoder_dict.items(): - for video_file_path in video_files_paths: - print(f"video={video_file_path}, decoder={decoder_name}") - metadata = get_metadata(video_file_path) - metadata_label = f"{metadata.codec} {metadata.width}x{metadata.height}, {metadata.duration_seconds}s {metadata.average_fps}fps" + for video_file_path in video_files_paths: + metadata = get_metadata(video_file_path) + metadata_label = f"{metadata.codec} {metadata.width}x{metadata.height}, {metadata.duration_seconds}s {metadata.average_fps}fps" - duration = metadata.duration_seconds - uniform_pts_list = [ - i * duration / num_samples for i in range(num_samples) - ] + duration = metadata.duration_seconds + uniform_pts_list = [ + i * duration / num_samples for i in range(num_samples) + ] - random_pts_list = (torch.rand(num_samples) * duration).tolist() + # Note that we are using the same random pts values for all decoders for the same + # video. However, because we use the duration as part of this calculation, we + # are using different random pts values across videos. + random_pts_list = (torch.rand(num_samples) * duration).tolist() + + for decoder_name, decoder in decoder_dict.items(): + print(f"video={video_file_path}, decoder={decoder_name}") for kind, pts_list in [("uniform", uniform_pts_list), ("random", random_pts_list)]: if verbose: @@ -527,7 +536,7 @@ def run_benchmarks( df_item["fps_p25"] = 1.0 * num_samples / results[-1]._p25 df_data.append(df_item) - for num_consecutive_nexts in [100]: + for num_consecutive_nexts in num_sequential_frames_from_start: consecutive_frames_result = benchmark.Timer( stmt="decoder.get_consecutive_frames_from_video(video_file, consecutive_frames_to_extract)", globals={ diff --git a/benchmarks/decoders/benchmark_readme_chart.png b/benchmarks/decoders/benchmark_readme_chart.png index 44418df93e687ad55104d4e6a67a86de84ee3e02..a1fd6b47297e7552f68b364424354407ab5740bb 100644 GIT binary patch literal 51324 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 UPU%PUQ=u?68a*_0$e%0zFNiabEC2ui literal 51187 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 diff --git a/benchmarks/decoders/benchmark_readme_data.json b/benchmarks/decoders/benchmark_readme_data.json index 5bedd30b1..f5878a10d 100644 --- a/benchmarks/decoders/benchmark_readme_data.json +++ b/benchmarks/decoders/benchmark_readme_data.json @@ -2,144 +2,144 @@ { "decoder": "TorchCodec", "description": "uniform 10 seek()+next()", - "fps": 314.3002734250253, - "fps_p25": 322.3704500761085, - "fps_p75": 304.61961295439414, + "fps": 315.05924655387844, + "fps_p25": 323.6567367722293, + "fps_p75": 303.4217234978234, "frame_count": 10, - "iqr": 0.001807614229619503, - "median": 0.03181670792400837, + "iqr": 0.0020604978781193495, + "median": 0.031740061938762665, "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec", "description": "random 10 seek()+next()", - "fps": 318.6332392061074, - "fps_p25": 326.61265301425016, - "fps_p75": 307.9272223416659, + "fps": 312.8775910187949, + "fps_p25": 316.65411586172576, + "fps_p75": 304.67664202566044, "frame_count": 10, - "iqr": 0.0018578986637294292, - "median": 0.031384045258164406, + "iqr": 0.0012414834462106256, + "median": 0.03196138134226203, "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec", "description": "100 next()", - "fps": 963.8588500259038, - "fps_p25": 1232.7462278510554, - "fps_p75": 897.72507501799, + "fps": 948.3281062356014, + "fps_p25": 1211.2939721426944, + "fps_p75": 884.5162407819654, "frame_count": 100, - "iqr": 0.03027298115193844, - "median": 0.10374963097274303, + "iqr": 0.030499806627631187, + "median": 0.10544873587787151, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec[num_threads=1]", "description": "uniform 10 seek()+next()", - "fps": 131.988339357579, - "fps_p25": 133.26652650624064, - "fps_p75": 130.3643453501947, + "fps": 131.3991915256709, + "fps_p25": 132.80657677770856, + "fps_p75": 130.0875105195256, "frame_count": 10, - "iqr": 0.0016704928129911423, - "median": 0.07576426863670349, + "iqr": 0.0015738545916974545, + "median": 0.07610396901145577, "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec[num_threads=1]", "description": "random 10 seek()+next()", - "fps": 122.75317946016999, - "fps_p25": 124.22201311180707, - "fps_p75": 121.19633847694604, + "fps": 131.76952597486445, + "fps_p25": 133.43827127306128, + "fps_p75": 129.72933699334547, "frame_count": 10, - "iqr": 0.0020097135566174984, - "median": 0.08146428503096104, + "iqr": 0.0021425478626042604, + "median": 0.0758900810033083, "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchCodec[num_threads=1]", "description": "100 next()", - "fps": 809.9441914595772, - "fps_p25": 820.5478107543202, - "fps_p75": 801.8920090548505, + "fps": 767.4262194030912, + "fps_p25": 954.5964481242703, + "fps_p75": 751.3156802763621, "frame_count": 100, - "iqr": 0.0028352681547403336, - "median": 0.12346529681235552, + "iqr": 0.028343535726889968, + "median": 0.13030568603426218, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchVision[backend=video_reader]", "description": "uniform 10 seek()+next()", - "fps": 7.818673617539736, - "fps_p25": 7.914887876132339, - "fps_p75": 7.72635851907541, + "fps": 7.87802293808524, + "fps_p25": 7.9221952370727795, + "fps_p75": 7.816352619742458, "frame_count": 10, - "iqr": 0.0308289946988225, - "median": 1.2789893131703138, + "iqr": 0.017092708498239517, + "median": 1.2693540090695024, "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchVision[backend=video_reader]", "description": "random 10 seek()+next()", - "fps": 8.174175797820915, - "fps_p25": 8.198128262246657, - "fps_p75": 8.089292632708272, + "fps": 7.257307771543773, + "fps_p25": 7.305370582206469, + "fps_p75": 7.209328679013935, "frame_count": 10, - "iqr": 0.016411407850682735, - "median": 1.2233649296686053, + "iqr": 0.018235752126201987, + "median": 1.3779214434325695, "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchVision[backend=video_reader]", "description": "100 next()", - "fps": 708.5626871155907, - "fps_p25": 714.9065385245668, - "fps_p75": 701.1653993140255, + "fps": 843.6237746060216, + "fps_p25": 852.9895625098609, + "fps_p75": 830.8058002517034, "frame_count": 100, - "iqr": 0.002741277450695634, - "median": 0.14113077335059643, + "iqr": 0.0031303432770073414, + "median": 0.11853625159710646, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchAudio", "description": "uniform 10 seek()+next()", - "fps": 28.25481341811952, - "fps_p25": 28.472751002542807, - "fps_p75": 28.027683266448527, + "fps": 28.283386183212908, + "fps_p25": 28.48861769505288, + "fps_p75": 27.962052080094207, "frame_count": 10, - "iqr": 0.005577113479375839, - "median": 0.35392199736088514, + "iqr": 0.006610161624848843, + "median": 0.3535644542425871, "type": "uniform:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchAudio", "description": "random 10 seek()+next()", - "fps": 29.222482794708707, - "fps_p25": 29.434989975510586, - "fps_p75": 28.911024515041184, + "fps": 26.009247898010745, + "fps_p25": 26.13538377314808, + "fps_p75": 25.757236346453418, "frame_count": 10, - "iqr": 0.006157086929306388, - "median": 0.34220227180048823, + "iqr": 0.00561736966483295, + "median": 0.38447863003239036, "type": "random:seek()+next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, { "decoder": "TorchAudio", "description": "100 next()", - "fps": 719.0499213961119, - "fps_p25": 725.4279593070022, - "fps_p75": 710.8406389605324, + "fps": 659.7600283811723, + "fps_p25": 668.0071480761926, + "fps_p75": 652.052492189031, "frame_count": 100, - "iqr": 0.002828843891620636, - "median": 0.13907240238040686, + "iqr": 0.003662889124825597, + "median": 0.15157026145607233, "type": "next()", "video": "/tmp/torchcodec_benchmarking_videos/640x480_10s_30fps_600gop_libx264_yuv420p.mp4" }, diff --git a/benchmarks/decoders/generate_readme_data.py b/benchmarks/decoders/generate_readme_data.py index fedaae094..bf8152a6b 100644 --- a/benchmarks/decoders/generate_readme_data.py +++ b/benchmarks/decoders/generate_readme_data.py @@ -61,8 +61,9 @@ def main() -> None: decoder_dict, video_files_paths, num_samples, - 30, - False, + num_sequential_frames_from_start=[100], + min_runtime_seconds=30, + benchmark_video_creation=False, ) df_data.append( {