From 4613d143d135351fb46a6f19145009e5e400be23 Mon Sep 17 00:00:00 2001 From: Igor Mitsyanko Date: Thu, 28 Jun 2012 17:54:27 +0400 Subject: [PATCH] libav: handle codec libraries linking Score way Score now have a default way to build and link QEMU with avcodec libraries both for i386 and x86_64 hosts, we need to use it instead of our own. Signed-off-by: Igor Mitsyanko --- tizen/distrib/libav/lib_x86_64/libavdevice.a | Bin 68288 -> 0 bytes tizen/distrib/libav/lib_x86_64/libavfilter.a | Bin 223624 -> 0 bytes tizen/distrib/libav/lib_x86_64/libavformat.a | Bin 982162 -> 0 bytes tizen/distrib/libav/lib_x86_64/libavutil.a | Bin 630958 -> 0 bytes tizen/distrib/libav/tizen_configure | 4 +- tizen/distrib/libav/tizen_configure_x86_64 | 19 - .../libav/x86_64/include/libavcodec/avcodec.h | 4185 +++++++++++++++++ .../libav/x86_64/include/libavcodec/avfft.h | 99 + .../libav/x86_64/include/libavcodec/dxva2.h | 68 + .../libav/x86_64/include/libavcodec/opt.h | 34 + .../libav/x86_64/include/libavcodec/vaapi.h | 167 + .../libav/x86_64/include/libavcodec/vdpau.h | 88 + .../libav/x86_64/include/libavcodec/xvmc.h | 151 + .../x86_64/include/libavdevice/avdevice.h | 62 + .../x86_64/include/libavfilter/avfilter.h | 862 ++++ .../include/libavfilter/avfiltergraph.h | 123 + .../x86_64/include/libavformat/avformat.h | 1544 ++++++ .../libav/x86_64/include/libavformat/avio.h | 634 +++ .../libav/x86_64/include/libavutil/adler32.h | 42 + .../libav/x86_64/include/libavutil/aes.h | 47 + .../x86_64/include/libavutil/attributes.h | 134 + .../x86_64/include/libavutil/audioconvert.h | 95 + .../libav/x86_64/include/libavutil/avassert.h | 66 + .../libav/x86_64/include/libavutil/avconfig.h | 6 + .../libav/x86_64/include/libavutil/avstring.h | 133 + .../libav/x86_64/include/libavutil/avutil.h | 130 + .../libav/x86_64/include/libavutil/base64.h | 54 + .../libav/x86_64/include/libavutil/bswap.h | 118 + .../libav/x86_64/include/libavutil/common.h | 385 ++ .../libav/x86_64/include/libavutil/cpu.h | 54 + .../libav/x86_64/include/libavutil/crc.h | 44 + .../libav/x86_64/include/libavutil/dict.h | 81 + .../libav/x86_64/include/libavutil/error.h | 68 + .../libav/x86_64/include/libavutil/eval.h | 113 + .../libav/x86_64/include/libavutil/fifo.h | 116 + .../libav/x86_64/include/libavutil/file.h | 52 + .../libav/x86_64/include/libavutil/imgutils.h | 130 + .../include/libavutil/intfloat_readwrite.h | 40 + .../x86_64/include/libavutil/intreadwrite.h | 522 ++ .../libav/x86_64/include/libavutil/lfg.h | 62 + .../libav/x86_64/include/libavutil/log.h | 167 + .../libav/x86_64/include/libavutil/lzo.h | 66 + .../x86_64/include/libavutil/mathematics.h | 112 + .../libav/x86_64/include/libavutil/md5.h | 36 + .../libav/x86_64/include/libavutil/mem.h | 126 + .../libav/x86_64/include/libavutil/opt.h | 242 + .../x86_64/include/libavutil/parseutils.h | 117 + .../libav/x86_64/include/libavutil/pixdesc.h | 175 + .../libav/x86_64/include/libavutil/pixfmt.h | 184 + .../x86_64/include/libavutil/random_seed.h | 31 + .../libav/x86_64/include/libavutil/rational.h | 135 + .../x86_64/include/libavutil/samplefmt.h | 80 + .../libav/x86_64/include/libavutil/sha.h | 56 + .../libav/x86_64/lib/pkgconfig/libavcodec.pc | 14 + .../libav/x86_64/lib/pkgconfig/libavdevice.pc | 14 + .../libav/x86_64/lib/pkgconfig/libavfilter.pc | 14 + .../libav/x86_64/lib/pkgconfig/libavformat.pc | 14 + .../libav/x86_64/lib/pkgconfig/libavutil.pc | 14 + tizen/src/Makefile.tizen | 7 - 59 files changed, 12108 insertions(+), 28 deletions(-) delete mode 100644 tizen/distrib/libav/lib_x86_64/libavdevice.a delete mode 100644 tizen/distrib/libav/lib_x86_64/libavfilter.a delete mode 100644 tizen/distrib/libav/lib_x86_64/libavformat.a delete mode 100644 tizen/distrib/libav/lib_x86_64/libavutil.a delete mode 100755 tizen/distrib/libav/tizen_configure_x86_64 create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/avcodec.h create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/avfft.h create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/dxva2.h create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/opt.h create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/vaapi.h create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/vdpau.h create mode 100644 tizen/distrib/libav/x86_64/include/libavcodec/xvmc.h create mode 100644 tizen/distrib/libav/x86_64/include/libavdevice/avdevice.h create mode 100644 tizen/distrib/libav/x86_64/include/libavfilter/avfilter.h create mode 100644 tizen/distrib/libav/x86_64/include/libavfilter/avfiltergraph.h create mode 100644 tizen/distrib/libav/x86_64/include/libavformat/avformat.h create mode 100644 tizen/distrib/libav/x86_64/include/libavformat/avio.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/adler32.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/aes.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/attributes.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/audioconvert.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/avassert.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/avconfig.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/avstring.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/avutil.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/base64.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/bswap.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/common.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/cpu.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/crc.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/dict.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/error.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/eval.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/fifo.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/file.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/imgutils.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/intfloat_readwrite.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/intreadwrite.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/lfg.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/log.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/lzo.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/mathematics.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/md5.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/mem.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/opt.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/parseutils.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/pixdesc.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/pixfmt.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/random_seed.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/rational.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/samplefmt.h create mode 100644 tizen/distrib/libav/x86_64/include/libavutil/sha.h create mode 100644 tizen/distrib/libav/x86_64/lib/pkgconfig/libavcodec.pc create mode 100644 tizen/distrib/libav/x86_64/lib/pkgconfig/libavdevice.pc create mode 100644 tizen/distrib/libav/x86_64/lib/pkgconfig/libavfilter.pc create mode 100644 tizen/distrib/libav/x86_64/lib/pkgconfig/libavformat.pc create mode 100644 tizen/distrib/libav/x86_64/lib/pkgconfig/libavutil.pc diff --git a/tizen/distrib/libav/lib_x86_64/libavdevice.a b/tizen/distrib/libav/lib_x86_64/libavdevice.a deleted file mode 100644 index 8d5a7f93b4fa58a8d1971a1618f0de4e94166c77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68288 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 BJ1PJG diff --git a/tizen/distrib/libav/lib_x86_64/libavfilter.a b/tizen/distrib/libav/lib_x86_64/libavfilter.a deleted file mode 100644 index e3234457b51e8c4e87d0cdc068c8c75d72429144..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223624 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 diff --git a/tizen/distrib/libav/lib_x86_64/libavformat.a b/tizen/distrib/libav/lib_x86_64/libavformat.a deleted file mode 100644 index 0c605f1c5e3a851a4317200e53746fd2e8515f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982162 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 g_gys5=Uv$B{9sMi`19JDwQ;^j8QesAH}GW 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%0A8d2*G3 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

}q`i<3J4E^GwOdSr zk)D2DT1pz7r=+BKKF5wtPfQ$p-k4OnM90jo*JtPD_p`TDgDmYYCy{;}|F8F8iCg`KGPy2SUrkvH3UcZ_5ZR z?=?90rgz##=P&!m7xAk?M*j>ZXN8tu6-)QzE-M`ziyL#7(|P+}bC>-kclq?#+?5Ll z_etH6yX+%#`C#EsKm8Oqdl4rvZ`r>jq01>xp=B|-i?=0Tc17^=;1$821;c-TJu z%YxIn9ClC7UG`l`?y?_pSHA3YavXE>@@dI8?PyESPW?VR^-IZ5?()o(yk(!{F8eCD z_)orzmQPFxEq*mN_lDPIP#v3_vd*8A+_Go+UAw7OQ7*>I-8R15<%{>wg_D?A{8}RJ ze}Zpqd3X8ZXV}Enwz1Yk78U&R#hd@f`}w|>cWrk6=-flzSvp3nX^D~M$VH_Nqv+qA zK{zV5GhdAI#hSn`QZ%6HzEOTEELu56cdBb_qZ^E5Ohm1$qYH9+8=rQHjfuUD!YH4) zGbZ+a5;`+6=J!Mgd<~@Dg@6;C;H#v-p9HbDZ>bSu|FGTq_ zY0>>4rpVPZA!dl!AL3*Y2SAiZ3DIXmERw5<5NC)u$oB-L-=8#7#KFF&j5u4wp~z9Q zh$A4ji8#{7-pZdeU&It&4vA4oi+m!d`bv#_BjhyS@5pvk(qhPCeXkjLDdb7MYmELX z$hp3ojl2eO2=Y3}7eRgu@-)bsAm^EP1EZ2QLoP6>k4oAKxybjXiGQ0NaeF#Ri__Iixe$UbQwO1^iE6Zn#ivQ81r3+@UURbcRlAr zF)!EB4jM_;uw5sJtv+&XvPk_!$`vV5qyql0JN~3(r>Bptv&~-IrYX@JvDuRI#l(J1 z=bib7qG=7yYf&YgN?VGXG?HALsqp_*TkY;aql>D-pzc*o6qj%GhjaDhrUlU=RM44PxIN!eD*e<@}u8pnDaj7v#9u zqs-@M^O<5kQ_W|Z`5a?D)6M63=2L!De4IJYFrVYi=LGY4zWJ0d#$8~}FEpQ%%;#3A zj6X>5iUfa@V4DPglHgSdUXx(E1Un>nU4l0x*eSuA61*kB+qMaGJG1KlstKUw#HXyF zCS=kqpZ_bTV)Xz2HuL}4He>2%re;WC7`B3zDe1;UjGZ$o%H!c_?GKzJv@yAZBM zcsIg(5Z;S$4Z^hu??bp~9rA_nMudwIEE zdl24>a1Fw>2=7C9Kf(tPK8Wz=2p>YY4&lQHA3^vFgzFLh65*o=e}(Wdgc}e(j_?VD z8xj5*;cpN=iEtCbrw~4k@V5w`LHI1fMf*@+2yaBV7~v9xHzB+k;VlT4B3!gcmJ5s4 zAzUP*`y%?!<>r}hbo{Hnm+VZT*)v}dJ(&+C8lGbB__Oc0y+gcpzeY zvtaa_PamTC#Qy+YK-2R_pGhykNKrU_6XMT~E+$!$oM_JNwoClLXvrUPFeth+X>w#S zvGo+2N&AfWnCRj3CQP5^wpJ%TA-ck3(&c@x^HR~DG`UZ66Q$~0q$*dGCqpcv zY;n=_^PNvO_u>yCGl;~*jwV5>Ef~$@OkO|b`r`AWZ>FWE*eNjQZs8R~-$R%DNl3rF ziUb!R!A167-oNlCl}a%dAW5>b6mOMhT4kx0>W<>K59}W8%

??BAFXPR1!9hNS2KzY#foi$LM3@h-6NBRMH;V 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ͣg`(lLF{fvQ1r;06XtXv94xYq>gebmol`pM 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

`VnTyo-(Q^L7y?=IArgoaW9Y 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 diff --git a/tizen/distrib/libav/lib_x86_64/libavutil.a b/tizen/distrib/libav/lib_x86_64/libavutil.a deleted file mode 100644 index 7d6bfcdce654ba2f62e341b64287e70ce84bf3cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630958 zcmeFa34B%6^*?&fJsECD$PEG#8RP;NNK`U|L8e3!xPgEHg2oD7Zjzf2$z*Z^k*a_J zn`;b0)z(&P&}x6R4z&){qV*TVxz##rYpp}ALaBA02i{tHuXWDOzBhpV`TM{3KJV>M za`#%_z4qE`4`-i!rnM)`4z|^-ojWAkJ22$t=NA?fOwZ4o?)Bz~B=y(p&6|1h44Gri z5W_I8F^rTMhB59E=l`cu41@olJ;5*z^KXuO!4Ur?cNpgKrOyARHp9gK=hqMTccm;h zTm`p9{ae;gjU)cgnPFJ?f9~T){y%uSVa5258@|Yhn{d4RFFD1CQ~%d3FyapPzo*TJ zga7!^%}4(CpJT-9|Cd~B#K-!-17yF0|AfdCL;p`)_=Pd({|j}7J8AUc|0`}Y-1y&d zQS|=}OAWX3pOpJOBkI2{)ksqRyRQ$f4+Lu)Lv8tafsWSNU^rwT5^4|Bw4K))W~QOJ z!KT|AHVUEoP&iPtHrU)8Y78_6&ui%r647X&xtitLQC|#+_HbK6b3G;k)gBJE2~~({ zOdH8G*0i2ylR=hltO7ZMfQonlR=NLP)nObX{9WC=o(6Ep~N6 zZEY=F%Wz9A<_&eWwgp&TFs;G1c9C0fq4mK=TTUbeg3Yx7hU*&YTI}qCX$z4hf(te_ zwup)dj(b-!t-%^mj^OG;&7ro2n!tv(202UwTH6+E5Y0P4rY#f{whIs#EF%w%tZQft z1)74bHr>%oTtic^K7{Fwklq<+ZRl(dhgwB9$Ruq1#)jq)o2X=9SdkWrT3Z^L!=biz zqpl8HKhS<2=xhpxp%$&dMq!ZDQnNNxvo0`Dv)wQx0-Y3SZ45Sx7I84F36zpoTP=D4 z$+||->7h;=g~U8a5w&g%Gl?h&p>++->%mT;y0Na_9#GXy^*n@dj0GASMHS_t%3OO( z;M@e0RZ&AL{3TsCfO$?a5*#QGXBT3}#8zEGg8S!K~6PB|Bu znwBOQ=Al4X9;3uH$)lwWY{iCzHU(Sq0^wk_=>2osU@8C_@;B8^w;LE~XW~PyuAx~T zPsp@)G;t0d98LDPpmB`?e0X9k#OO3 z4Ps0p!x{zMAR7da02)OChG{C$(9ZJ;ri%7KqPC@jrYYobDy0e5QGp#PBY^$}U)M6iQD%M7)Ac@tqG|Jgf zvf&0fOreWvp&?*i3kSt`#pxy>4@sN~uplu@X&5#I%qxMqrm#KanTM&nrmdkh+yb)& zWLHF)t!@an2U&B@wKxrEch` zrldU4EzKbqhr>IKEoPI5zb&Ygp(7K+SdkcYmjyhE9C6M3K>3@!f?1?ifAOkG&Hw|y_Y)wmZT|<2b5%FT3}Nhq8yhZg>pO*2SR6zvYWVhYoG>TzoHNI?xY4 zb)NAhhT++r;5YYrb}umf=Hrrb*_35daW)liQ;?BzB-)hQrjl%Gh)pHiREkXvwW(B_ z^7y+RPLmw`7I*DWBl9;5Den3#&GUl=P?r+V?o^O7%go2hBabfW9Wkst@>toYe=m=` z=+AuG|MUUB`LuuU0gpfOxIgl!fA1S{{=KiI`7@t_T9!wi0?D#W$oZH*^F{yD@A}Oz zpyfaqn(;*t1mU+q_z}R%GM@nx%<{-Ho^5x3bLbGtpr)ip_Zh|;(2_3rhn^AL6|2ug zvdc`s*yW1H$cl@{so&)mT%1VBt-y3sbg;{nD6lvgxkVH&OPFAWFii`t4eq}HBnmMn zutZ{YN1b6#z!VILjj(t&C!8%g!`+^1n3Gu64fDL|W6nr&zXoDMN>SDvW=>8Wo@}KK zGmkOTpbVGKNKT#$091uYusiNp!%96Rc~)}SaKnhtGUug8c4|u5aLidW#Ds)|cw5Q^ zsuF>9%S_0+3kI-B9w-Ra4VhwKWCt%%rm@n-G-9qTQpu#BAj=4weatL(Kvy3#s~phk zW2Vjl#j}%<-O=8b-Oyaq*a4TM2A>XUa3XIH*TMmxwN_e` zB<+HttO=$$ch;P8YshSC{k4WG&Rpm2usU2nGEFOa(IW^X>`1u&)>(_|XSqKN)kBgG zQ>>2J*3h~>mkDNeG`Ba@H-~DyIHfeUG}n6vAV+6>wqtGw=qU_@4O@#ii3-J70xS-+ zn+yw=uJq3L7G%xH$~9ow+ZG;Z09hxrh@2#Z%8Z5c=bz%uSXtfC9PY?2ht+ypi_|o2 zW`_XtGf6YFmI3EF8O)8#4YM=N9Fvmh-U024_*hCC(7{>l=QZJ#LKZANWW1KCFkY=? z!EKVDkyYK^Ze+EE8iQH2q3RC2WUFg|G(iWetKm9?IlR7BC4;a!tPc&$Etaj68%i^> z;3B6f1l7%IZV897puMKSV1i3GsVKA-E)ejd?SCG|fC@Zt`1ogyMMMl}8^F?7fZ_=d zV}47+??Es|5T`B$p9(ad!T!_yxsW$jQC$98N?AzivUt$zHlf@OI8$NBpd;@XpivHO z#gHx|V-Cc+PE5L%^7W7$N4o4{NYF8q&7=l7!9Mb(23_{7LGrJNm-0C>vVZmbr$b7t z`rktx&H1tZSa-etEr97d0W!L%{NEv?1YPzVNQ+heekz~a8Oz68v!8CT2_$D=;06ZmSz8zt+u02Ibf5#r0>+eL%!& zKUm_6pthd}5YEpyis{E5W~`#}Z$m~2+-?jZuiK7kZaP!1r3|VoX~xM=aVAt0suYvJml@Ee|*i9xjk#%ZNQFEW1?(X0XJF zABZ7m87a}Az^T!+R12=^Vg<|K<&=|}4CFCN``GipbGnZ{pFy0I+#}5zj`J*r^JFA?NNt}j8qV#rlW?x@EyQ1~;OeOS zm4;6up67AYgYqM=BOp8?Bhk)?w-NrlhCfL-j}6pArwAcQ(|uIEnn(|3SL^E~95EG# zhgbIf6uhf)qW$k%=i4} zH=f-oL%KbHju6yoaX_X^(hcNTNv3#q`$q}VZvi<*l8Hc$mt-=K!zBsI7LNApj&pS{ zbOCvcB!>Wbyd)EVJXVsaaFb@7AQzZG9w*76K#r7T5|G0r8NbgnzR1Y!m-l#zBYTVY ze(qXQ^VmWt)?K>ovG7!27I=1#7*YmlU9Ve9Yf`oYpE9J>d|D=@B$afhB>KDhP5&I6 z7dw7e$ND_GD-*5mD-sa~9f?4if~-t5fp!t?0@?x^bi{!Um^nHg`fy)eU6yD3R?*7E zXB3}a8hNsKWpU-o^2kFg{E;vHUH@`#d(5*n8^%D_0kgdKzuyDVvdDA(y|2fWMLzcT zmJdnuM^b!Pzn(kOU>KG4jPUtu9v1g(dQ&Wa{xE;!avXPMJtaQ3Kff3%41L&z_h&rY z_QS7#+dJW7{rM{m67=Vnx=En-!b95*dA6@YshUGw|91I%PlFpikKzD`JnZikL;TCVPT%#m*edjxN8Kr%3kfcVh1+Psre%|qrebIIW_-^&3Ilw-ore!3G#T! z8@U{73Tl#o(ekIVJmt5Tr~Fv8$mJi&{6nMj!&Tyd@)Mb-{3#;;XEHxt^lIfNusoHY z%sk|eT>cg0^Y@JM=ZhL}oA#UmZTcqwQLTUG`+&UW=56nkMOM1QDgH<)bSm~$sk^M}!L+ijhtkSt`Fx&jAAAk@yB>6( zwYqp!@#^BUivw@~7}S{ou=X&WITSimjz_IOu_2GHKlSz;(4R5dQ}0i;J#jn?=uaG0 zT7T&MsgI`t{TX9C>HVpWr~gTR=6-^m`4HS`#zSnXzX$p;S9B?mZXj_il=Z~k*@=*54C1IRoVU zk*&U80-W0)DfgYU4Q|_B4Q=@FR$m`PCd9iy$n^JK>f0sp>u?0aTFr0Nho+%Cq~5xLqLA8+S}e@7ODWf*bqK z6vMsilH8YapW6F|mHSjl?o*Km_I~E>`k*HFfh}*KO8=J6MO5=Z_lQ)OwL5Msmot^9 zBMS6h;Y0iVy?6OG3trgw$X3DODicUN2yn>-WH&^(asl#Eh;R|P|F+K$9XgEK9Uw#1 zhFr*DqXKyaM9^ADUgeP20Ex}L{|r#OdiH)D z@9#a|x28Pu?~>jn3BU7#SZVG%r7+-ROP54?@LW&=9qudXO}Q1)jU_d&BcD$`bRfvaUx=tk0#>p*i7{c#^*d8em($ zXWJntsHf7G@$?sPjBKBT95i3oLka%KOPSBt?eNz;?b%%jCpq!(#QckAcV1EVDW2V( zP)?3#cN;_-VJXrHMYclR2JuE%#&lX}2JjGXge6dC9PkjgLA)^z_;}zUZi9GZJn#v? zL)-@OMp*E4CISy}8^jx7-PGv@9^y8LH^M@zGYNQz+aTTui=NIQz(d>y@kUrXbtVH3 zaT~-NVX@Vj0zAZR5O0KT>KqC@#BC67g!NNrD)11uLA()GS)Cr>A#Q_sBhv6Vsy}V! z0nfIBFc;zk?*>;3{0N^q&5Wzh*B? z@X+=CnrBM#O0HN_(hZD&g2)Gv4+_2-`D)~=1z&@FP1iSx2-SEln*he(%=56>^?6*! z&q1rN5hfHIOs&W?5pymw&BU}J(?U%9!T-+f?>gV-Gd7CB6!|+Jb|pYX5^D!Ew90(pQ9qmG*4i zhHIhxk}F|#Q|Vijzx7I72O)hL(y)d=x&*Sqpepf|X&II(8Rjb)@IWoV3`?{Orz#m1 zDjCWlLm_4;)-o(mGAyPHOJ;ry;ct0q(B?43ZbvfSo#5_* zm~x7gxLoX7Nfykq$-+}nE>7Ssw@e1ah<^?f#Fgbs2_ADN)C4*a?hT}wXF%kdMC?fO z0>R4X)CtEDnE0M_^XI7BYqe0i-`Xv@r#MSo%nJSuk5W! z_Yl8SSZ_`0C%(dbUzGo#DQ~YN+=W-}MtZ^?Y!W=t8wvNy)*Q)-QWI%}8)x z1sM|D4?>O<99&qhp{Jq(KyiEs)PyNfpu-J%*zJ-JvlHASAt}|9W{zG2L|Vs;0>d05 z$$WSaJ@$Kmin~hYxO0R+p83g1d0<36O&^jlswFr1AHZ3Y-ZLdT1slPdw8Lejph8R(g``UUW9CgN zWa`y`h=Rp+stlkkv$KQPv@7Wz=%4&@$7s zE=E1I?P0^5Dadwsq1BvuDWI|-K|&_9IKllxz(*m8lN8i6SB@j|k1X%X#epcYx^g`r zNTj%Nbet%3uE>fc2Y3nLB)CK#-JWBZbI}TO<(PILv1%AbSGRNmi!$c2vH14EJe0yP zu07u{i$tDEurCipMqxk7qBh1V>Ip0=3@>V$8<8|uj)odd#eYVeg4lxr@UJYZx?h9B98xULzQWbgF9l_omGN>%2#2s z?1CyZhe+&5Z<}GBDU>F-anMX`YJg%YOsfu*NVy7Z5hBG%!A7gVJR`Be1mzW7y=*<+ zixXoXDH`<&Zq$WqJE%WD>_^54pTnRY0~S}K#TaDURb!hfEH@>k3bP@347~XUc{O29 z9V-T84R`WbVQDQ6N(^Hg;0uNjC;HAHSSEtK^_6hKnY@wU$t_IOvfvaw3uZN2dybUt zZ&WodNn|^>6|R0JyQvW-e@!xzKVsq_5mAF<>Tt^Bn?wXFHdoCLAd88~OpIk>7!gLak`=%G4wO`W^{tg;Mpb9!x2p;~ zK-Ih2TMeFWK{aKj!I%>SW%O0Jn}N_Y<6RHxQG5#X`9QY7WeaAS?@fmim6YG}oPohw!hiL`DI z>j>;)T5Jj)`yvmQ_;BY)tbAW(0hfFbn|LE$ESRQvDx3HVg>lbIfQQzmISNY>3-+4l3pCqGaS98<$2*qco66%A7E-;AuwhI{hF7MKfr)=27$I6>YKpXZl4`85D*=u5jWctH zFE>{vR3)D&nqhLhkvklVnSv=O$SG6dA%sZDNCtUW8L3%er6MwdK_?!#)7jI7S!dSI(SSXYlb%Gi2(p(HQ$k(mogh}=oP2{wzC~ztcwui zEoPXAMX0CPG%AR)qkf{WWii0(!jf=)`-yyjVwaKAhtIb#;Bz_*meFeVF~hn5H2RqF zktF73I@`u_`J!8BH1L*#7^6s;T9&I3cV?q#g|CA;BP zeMqFEdsVdVRRc9Uc60On$1Qm`74L?X5C-^Mf{Vv{iUdi*`Q==@Y>`z=ay=~L{MJ5J z<&4Ovny@O)7iY9@c12~BsAGVnULoVT4Po#cNhG!+R=^!S1P((AQG@t@BI`2pj;Jrj zQTqwibF|$_E7?4bISFqxV}K=YR7ue?xkr>aTubQspl#twQkL)h#*l&zcG4xKOQjg? zm$|Mm-Gx4P;pD!zsaCLB5CKwu;G`afu1g&07`l|yqtLbOu)2Dk)T7X~*^!Q6my&uU zU1~q+n$)zx^!R9KLCbbIHnkJVqiSF(m-7+z4y5)tdFRtbw9;ov>QUIS-O&}p4ka~) z9ZG5pJCxL;up@F`=#&ZiSkr z+n}cD7N}`QDu3XSe`oagROSWU2FR<-DP7UyQ%OAvJ1%niBZeJHY79G+)EIUssYhXl zGULRsLrINchccJNutP~b3Ol+F+a5}43_Fz67`-R87VvL` z)YjYTqpr(zk=V7_K?;6IG2TgH`U(e2WBNx9md^Cm4(4V08VAc@y3fIKn7+xu3Ynfx zHwfWI&3lQ=%pef&Br$!mgXJ(i)4?*Bp50kYQ z{BnyvNi~C>XYxIG4*>%lTTG53^_H=7S10SAWa|e|W^sO5|EIS8N+z$f^{-~~NgIl~ z4aJInZ7W*FWUrkoYFKfux9nWYnRJ?E=Y3ITa~rU&cqf(V6XEVM2Dp8jMdT?81g{rh zm`5?@WcoB4%k5)&m5t@~G2LWi`F%|P#KsExnEthm<@7OqhmGa-F}>Ty^7@$GV`KS! zOh0R51$}Q4{f&*~^l^`u+oP)7Ed3{V@V`KS!Oy6o_1$|8K zv9X*!rXR7f+&-qCv$4EBreC+Q{641tZes;~Ob>-e4j5uh;XEq-O`{2AnC8)eH(HpU zY7dJFCVB8A8ewC|7;|bL167VJlWT2g*+wF-aG;+Md94jqFnOH~Eo1WM1SJ^f8t$5@ zeK!&Rj3dhAF#B+-h#q{oeLNt>!Rsipp>q0|o@QgYeN4}>vAjN}m)KZ-AJeOCte}tS zCL5dH$Mgj@HlvT}UK=~PkLjP;SYaR2x7yguKBj+fW2f{n{e+Fp>SOv98=Kw7^gA{- zr;q8cZES8I(@FL~o7czmNE<7PabV@z2g3Cv2e+d2aU0_?)SsyHc*e%*hiRU@;SM$* z$=}$@qn14n&>-jBs7dy?^UE?k1IHWdjpG_y&cz6W%bY~Z&dFfVNsO}-89diXjJFdR+~OoA*oh48bP^NoL_i5ib`q2ALxC%2H$rQhuVn@nl!YbS5oan2KnHFM30@Q_wQ^v z74RsCbq_sSCVJ(s%N%Z1ugk*7>+g&@PIM{L2pq}y6l3SBokv|&kp9cJl79Z^rIU?K z&S9dP-KMoU81n4ks$)q1?ORFz`CCapcl6SS>*JqC*YU-{HOG*C=37a>@~xy_I(q5D z)$zILI=(!(<`~j1d@Jdvzm@b~k6!w4bvy|Mue_m0=Mx&td}X1J?O)JiyI)bvk2)VE z{tpyCL$RKpZ^-1+UBpu;=G!a(Tk;_)r-|ZriuLjale>}RZ>9LoLGlkK_YabPhhn}@ zrk6jM++gj)_#(Q&vxMSGigo>bN9hNYehJ0f2a)GnB^KS%8bUGOG|}~cSMt-ToH-QF zr&up0K5}i1Jg`5DAMjPJnNa1LdQ5^JN%wL1>&j2N*joLl`n!p+19jhGm2S@sxZ3M^4{`_b&hM2X$^bRY6)A-uJ=vTJ>2rX zV6B;LdBf*eXSrv;XcgXK`Da^&i{e}&b8!}E*lX-rY_%@3j=9#VaeGnAl)<$myN|Id zs&0*QS?ApXrl!AWJz==7bzfq2*14N6-m=v_;r&_D)^?ofKH2>M6k)mY;PcKn%l#t$ zzKcJd_%jE8X5mlabk`ZfU1y90+D!OB{MO^|8CHEAlycLi*K9KQ*eX z)pgeRuoVhh2d-}a+36bHh8KxlGvaIr3tdnP3W!PaZYla(~ zJjb~fi=J>tE}Uhh)^)hz z;Yd4LhpuAu2U;3omx8)FaNTdfW+?%1S&yGg(hdQEveNSD z;_X4$hav>t+yk(;1AJF1J-edQR&@9d{$W`y3QGt5xFH1Xw<5QR0KKr!g)B2qXa$GV zV(%6s(9zt{9;$`C1!`;Ydl%Rzq-`DU?t$vW764dwTT2J*4uI*lSK7kP0;3Ha!3zX- zx`7=x&=?PCOVxY%<*n%d2tq<*31N|=>2{#<+Xq96}%-aJt1(Bl;8VEKH zk;7LEA!;Rbd#*Yu2G#Ang$RtTfH=>fd1B0qOhMRhq)_-eR(Aoy))U(U!NCIkbl4-Y zx}yOOJ$X*UvkUI2gk@mkL(RUe=VST|7|*qu?_+$Yek`5Z@1q#89HNCEA)x*6UqVYHIp+t2EWy8+U4I#-;JasW}%Xl%y7RB`!=YvSzu4q!t2HoSJcJsux5d z%c-gEl4N`}e+TKh3h#hBxhFSHl=!=mJ88jnC-&g4^jT z`B+FrlCQzjNqP$5`o-DWK~{r$S$K7iI`#aUIsZf|h$8Pm*1&HC(Jp&!Md_R$KA0L1 z^z!FIDphfS+;%E|meydp>`cg|>qJGrJd4zcFEQn}|JX-*`z-=Y*NHhFql0yyRxw=` zA1LS;=D&12{zAE0`{}Y(AQRL6^F($djmpRV$NRv#{Y`-BIx*+<#rW&YFOrLvT?+}Z z%D)FaOF+nxk?@^>bAVp{`GCbL{~0QuA5D{*DA~&f$zQ!t=2)){Ouej2KrEL1`^kPj zPO$xOEb8`O4H)X=dIBlJOE@qfJUmGGY{xG^CRYAymx}Dhi88W(IUmQrru?=55sy)R z9p`+EKL`Y3+AuYqqWrJ1AjMpNhW{IgSnX$E$3j>me&z84pOZzk-!QQF!y|GRsp`u~ER{Kikj!ipNB(@+)Zm#Qsr(UcQ>9(kS=seObq{1nrA% zVZ6EGQjP|7O@Mem8N=&>ali{#HNp=LFf=b_FpeF8fhssnkWemHnB)r?M_CM%UM$FX z+fur@BSfqLUV{ZhIL@fiVQ}Bt^dw8mVo47^8j9`4pBoNLvc!=*5JS%5M$wWi={!h7 zQ65Khbg*ns*-qL5Akjzn8fq`GHUkX5HA9@|IkC=A~}m}{KttO3_{$~s?MM=IBv_O+$BYD0J9v6s{f%TGJCxIA#$f(0u|D+86q zrJNlt+l+>PaK0e0u_56MCadHyn+_1BR8i#7Qd2)|OpUm-m=XgIp@z;LIAk05&<&~RKIV0c=? zPb2Z7f?Iw)$kmu&l4IxisYXo99c45l<-## z=XE|W-LM@zWD7>%>_h~{CrQ>QRB$}6-9q?0!nxdj!WU}zO0u&>)5F(S=P5Yavw-wm zsNh&`h}xk?!!M&s?^1Bo(?EJ|Bb@Dglg> z5RW$=SGgL_UFb%V|{sV zvbz-=_57LS_b52Z-%IWGpn{|PS0w+Kf}{Mu2!B?=QGPtt_YDo_^WEDDj(Yeln)ekP z_3R=&(oM0P2M|9%xQEugJpN1R_!+0+*AYI2aBhEo`zTA1=d~ylW6V)-Ecc(JXMu)$ zX*`{#;p+%LlW;DVoiYS9oc$(*H9h}DdM?oL#|gi95PZiV`mfS(ev60S`r!6_kM!TA z=^sn|^m`5W6aKJ@1t?}z9NtPSOotf(De@2 z>kiVBq~R|R&M!r?{1=3e(d2nNc@-SXPy7ao+0GEP^Cm?e?R*XXF>F_Gal8=!V-0VkTRXcn z{0qWw((sG0BOu(N;X~-U^ghDbPF`0%sK}$8ye{I8dboctAw7Rpw5=XDRZir-JmHqu{8A=e>3f=XvjZ4d;1pn}+kew_U?| z-n)u$wsSh2_jf7sXeY0`ey!kW=RfKAzemG)-rK9;JnucO;XLm>tKmHFy+SzK$#0+j zLy<>2dENezf}@>0?|rS|JntpYyokvt&-0!~!+G9I*KnTqCKAqe@>{MaDDr4$8Xb4j z6&%aud2gohFiGE zg~092?aA}rkF;`&Xr8%N!|MtEji!Gd>EEN_)r9XG1b<=>{m*MSUyppL=t0$;)D8)B zKIC@e=NqXS&i7;aZC`GOZnASK$us_!5u(|Q85({H-58#w;HY9L*;A_E*e_iqzevGR zp07J96&&S%NAf`pf1mJX4Ns&8jNjMrU*XMo2>gBn)(gw+!iIuyi6;LM$^Syb)A8m# zgqsx{_3-_ZyA>SmpGWe06ddJw9(YW{`8xftgmXXg+v0C3@;LrmshvMma4dH%m21*^ zhx_qb!V`HN1hQg^r}Ljj!-rx<2xApJX#daXyf8(g6v$U;Al@C=?QE2 z8p1Eo@a=?Otl{?&ewl{>u$@s)H68ES8h$Ft zFVk>#3%r_e6LjDdMZ?Wlr^)kuzYU7Kki|xYuvwF54;+{3@>1NmS(Cq&?EkGUPwRw! zO@1cn`J*n66@l=)CeQ8shK6%HzpLTg&L&-l>FqpR!?~R&YxpT-PafgO(iAD|wCH{b z;-WpNzS%lX?L3t3Tj=t4(>hwmpVn~{fPmXnV9@1f4uY@Lanf_{Ao%ZT{?YaSc@X?# z9Vh+6X#CrH2w$zVr`m4k4T4{(9i;5KW;*7{Odt* z>UMElQR(ftHF-ih8Fk`V11}9 zjGL4nX>an}g6a7)ycmvtZ*s44pcDx^ir}4%QATlPS>!8!&m4qS=DxGS-zx+Uj-tIm z{ayRgyB;$AJ>TE&-*zaRQ670~Kgw?F?|9Q+^A7D~?eDE@f*mViwAW1wP@$j*nmy?;WrgZ{%s*ju-ag^+&#j&3OL+dv~YfMxtrZ zY_@*Ue+N@{_`CYk{XPEA{IL1>i6t}L9sl;vta5kkhh3Y~{gHS5H7__DXZj;g9za`h z&&=|gw`kK@u;`J!_@2rh>=vjGWD`~LZ+p2T4fQx0_U+)UcO!3rnA|E>2=m^%<({7( zY@b)$_4V-^rjxNtduH!n0+pT&`-O*(8K6L9#m!$Muzjp7wHP+ugbgs^|LdZT-%vF` z#4&<2h^oL=*paZ$E%fvN0b8;kcnP+VG~k1>7GrX)7ruIEZVolJ8{Q0fJu(x%7YMb5 zT8x6M9OK-MV68D7i0N6m_%UcRxCFv=NpwER|!&;AY2Jzm5^8ovL)q4$#U$0BL_M}>~kjP z;Ny)>y$suO{49VjBYQ(sSwVY4)K*bJdqY%Q_Np7ARtw(Q z5cMt4t!{|=iQt_LQNJ(boefbh7QC||s^pywQ6=weh$?w!LsUH7s~e&&5WKS?Dn72Z zCOsInAu2YBSlK1qD_e)S`()$rhN!5{H3>IF{W)YvaQ_MT6dYVwuc30jNpR!%5NHaF zFo6yS*<*l76$4R@bQ<2CbaPr2B#F|^EX-nWMVc+klck$ES5oPC(gmrxqN^-(J7gIK zugL;}9StOWM?4o>Lagarb5ZAT+E{XmiJW;e{D@R@3YKAv6e`VP6U&GdM#7|hEGC%6 zr~tz#*omZBL72`{0_lA49_wlop2r)bD7sF`gMw}{MEE@~9) zn|bbT&N^1=TOuL`IbI9%!Z`eR&s>5{gF#ke2`iKAQjO)3v5FO(c06{I9?Vqb{JmFf{M;&MWbrqvvQk@YPkuR!K@bj6qty;s|T}se4heO!t}%&aj2T6 zWPTx;lwFX5EZ$A3#>A@n-J%N-LvKnEWR#<6GROMlqIH_{`DIaf41uY>1 z90nqwyIZEkr3s*b!G2{j@FgZ-=}ebX8em?gaeaUR<(OU}A)$}yDhG2jeWrtXnf{)G zr89lDgQYPYa4>OhCU!tXciG`Gc_ou<4!Hiqvoi+P7{eQ&6red881!2x=4+t2vam4> zYhrt2>=m+zF2EW1h8v15Xoi z<}Y+q5M@W3iMohl=x#UDKX9-#rXvoP&UBB1d6~Y{!7`ZM;b1vT|JcC_nf@bT;Eebw zgPCU)L8hN`upFjeaIg%fUve-n(|>WWbf*96U};S6cQAQz3;YN=?Fs{#k&6j&z!Wll zED1uZ<}jV^U>Quy<$=iSWm=x%!X+-chPb>r%xY+^Y3!&C8ODIS*5n-v?qlbHD=TOv+Y6Ru7_l5>!Ic<0#{v@lu%MqT zAdk*D)?UM0V|9inOv`w;qxaqenWtTrZTS|VTPW9u_yca4zPHHT(6#=$g*$-`cY+aSlUk?`{4u)3S0_U2ab ziWaUjga+x*M)ekDJ1&BzYWr4Rj?hfum?>sUphF_;g8-J>eiYu2SYCEjOy@}KO2}zg z*^2CA3LO4`KOgWF6|5fITN3FP)m6MAfr}(^zC_-ZFpA|WNsbJ=*@SneKwXpc`Xe1= z;Q#_$xIMBx9tGNS#ke^dpGVvl4d9lmt}$5O9^2(n%!Y@rrqKr+T~M&L5JR zUYwe?Ak|%(Tr9|vR6I?j!9Oofj>miuI^lnxGcutfheINzHL8P+UTC!kv2sSbvs_v)<$5wSM zMwWDh6s)dp3#}iJ{QoA`Nro4?2fGOFK@12*#OWu0>~A&T{Y5ydMTPFE61p9gLr8~z zBzb9pJccRok2su02L$`>!vHk8EL^mp&i^!jF671X^Wa|%T>jN62sBm4j!OyC%kP&f zDWi~LR^w%Y;v$G+wO?T-36NrJFYF_|{csh>Hc<`{eMU<8n>kL?Wvd_|X8G8#5cVg_ z7|X}9_3|44({*Bw^^}jlRYnYhE{iu8bPVO{=}uD|7lu5ik z#Ojd8a4G!jIuTzt5`P_E29k@G#XB0Y$}gnyb0{O0hgH(c$MF@b{Hv+_B1l(*E_)j! z>KMwuO!;|H&N_72n;;>U{cFj7ZYPZK*w^jf0~qS$dIBjz^C%hLtsNL#KF1G%Sgib$ z#Dfdth`yVir2Mip=XWXPcMwT&xs3lE2*k9*)Tp5RudyJ-Tz`iD21Km(+f41}CqZmK z>=Mq;?TW8zX-y<@oL(f1!m)PIVQ?Qxys8_R#}XrMAcp5Vcv3SE1a5{v;-gY#5su?j4Ml>9mrq8O z1Uw(2e(`Kj!I6yR>uC|-=(~x7SbGAq2L5BU!umn*3ji0sp&-V180E|(dSmvLF;^K%UNfu&~o{5<^0$De}OSHngirn4tl ztk!_**w|Mu>IHOc3A(<4M4%dLTEVGsfUk1VSrjT3Dc~)b0v`!DPa@4eiH1`;<2(`z z2*-nuBkEbBUUjrHg>K_OHjNh!t ztM;QT2257h_I%!9ocSCf?Z~4p41O8edT<`autxkk@)^W;4ubE{a9Um(zZ?Yb*KoG) zB@LfV{CgT+L_GUk;`-uzgQ1Apjq%eZZ1^>tA3RoQ_$rdG((nM`Yc#xuaP~=r$=EM- zgtuz)xUR;~so_l$Ha2VcxrBFXI3K_}G#uB>7_QRrjS@C?X*kZW7=EeYTO@4obsi>T zy|xj4k0u`>ykEn634c_>cM_g~2MPq%f2CxN91XvUa31q`rdH3^Jl`OOXWwy_%)sY2 z#(CFbT1E>UD1RQw^K)LbhfENPCP;O{PQ>~8Ig@bIpGq`FJg&LiFDY$0#fZkuX!y0n|4YM%lKtGDT;F?Hj@pCq zzmxoN8h(KI3=Q8wdQR5xO{9mP_ptsONq(g!KbqwEyvFkE%c@mXWwc(-dRs3$^BK6k0btH8lFnW?^har7x5`nKI{LO3>~ZC zs|i0z!})&CYz?1Be7S}%AbypGFCo5B!`Zjm`5MkX=`Pjq&!}GfjVIUZSJVzSX!19a z{OuZ^NBsR7&g-f_YIqvy8BOJIxo=auP0;WvlF!m`em`Nhh9{C9-cgJ7Pa!*a^LWPj zk@Q8Hp7TilG7abBf0u?oPV%>EcqiF^58=p?sIatO!+D+XsG>)`dVE^J@w~(B@UnuV zJkLA(HJs=FcL-;Da)dR8@v(*%68?>%2g~JglY|RT2;820o*1R!%~H&mNH~|fhVT>e)*26E&QDmrNy``;pI!*&5F8S*Sk#u-*8$E7Rmz&oT`^gU1`;T(8&3&IScX z{SVT3Td(0ir{nN)4L3=iefIJ3$i6in)#Nit&p$PMJK6aO;mEq-zliV=)IY4Buk(4l zusmcDf%m6pd9K$iO%K(4xnzzQU(I)X;SP(BF>3TYIh z{nV5K8BX=qaWBcEtSVon;cJL*)bP#32iMD+F8KW;2KyVxJfL%Oa+Kd0GYWv4nKS*{ zegpa12~-$FMS?7Xd%hzL&+de+{T=BCr`q22yac=w;(JG6K&+Xp~SE*nxd}Qc$J}=z2 z13tX8joduf2v4SV$bH5i`L{pvs;~h*_#EolZK1u;Sa0UOj9UDWm(E(f&)@Zhxnlhs zXpVbvctCQ>!ExZsLAKv;%+j6chwmJ*QT;QY?RX13_4y;8%DVNISclHq2W=`chu=O3 zUs|s6z2=WJ`u4*Yq2-ZU-+Sf2dL+_%P)S?O!_WM1Rj48oqw8+>>v;>o?53!i2~}e&|%ZFwXtNU-NZ&Z@JICBmzxP;!E@QmOw3(&sHBP z@ww9>Kg21xWI?I)^2lrc%+JbazU}v%`kvpE{bug>_gv$931xb2@x6xeRpmW5_^`}! zK;A=S%Y#@m7~Gp7GFJR|8vH_Yr+wfV7AGVP|F(XAWZws#v^ZaQ5`9VQk38}_loW3# z-j9^Hn;{#t>%lY}9iY>|$;WOVA_<^s#XP%Vn?KC9;HE{d8&iA>EvYx~a z&jGv>&BsYU9E8~%6K7em4ay1qyXzgdo7!7hn>gx~mXeK|a{97pWC zQX>r6%*|h}^7odSo~=Is^EQ7u)wA^%Koob6^?7!$hL3I^G(qjwmpdLQgZ4gD{4jj3 zQ8x3*4YT2RPO--We6U>XxxX^*5ElME7XB|R{B3BI@G)hPKMu&d{y~2aRHZDE4Z}|T zme~FV+OvD5x%C;(*7fiaa&h+vA6fy{xR$`T$XyS)4io^6^+5}Tb>S&sIUH2uWqUw9 zN8;RpwV=FMwT`#9zUR_7{Eloklo7_NuV9%GnDwHC`%^Cg+wZdi+P zG=gL^kk~Nd!%Ay0T16zvf@yewl9suoWdxW3SwYKON6TDC%Usj~A8(4X<3`2FmM@1~ zBQX~sC~zz&MjGuDFD=9!7l%4H-z3Vn!_GHJ$u~*llR6|Vbxa_NLL*Nsg9pZ~IBy@_I2u3@W>|C_DLDc=l^PlTfm!}zbb(D!XYDztvkLf?n0 z$1&nF=z1RDvUTdYIVR$UrDg+LF|iGH5H`=TS$vgQVOtGz9p{WXQZk^h$!MzCgtKsL z@_3wy^k6nkc?94o_u>!U6q@pL`0?suQ|bOwRLKFm#cL@<*;ViqV;QszZ8*`Z^vmWZP7R!1i0 zx7O+h)|P3O4abjtR{Pp;uPV#09KN=;5aC3#jdihw6bD;1ft;e}9yTYiw8 zq7_@4SW#}pUTJl1#D324q3MGoff zvGS{JOd02V9gSaP5BS!4;Fs1|s$onZBcVA_ej;R7J_pBdt(gUTeE22ya&u)uRWf?X zo$QnaM=E~A4a>6v5oO?)+-OfG@~HU)M_7KgeWLx@b_EVk2+L&z%eD<}rq6J&G^WpV zuym%+axgE`s~jwY=`{|P!*soa6*B!1VenCAzrhSYMgs#2nf}DdoWnF;regrP45q)3 z5Mo}YzjCm2roVBpG^P(Z7@Rx?25!7og5e8JCfP*zT5(_=a0*F4o1LqYNv=eUk36Gu zE#q8lswws>98esKTw<5C`qxCh>Ocds0JEKdn+F$(R=nzYl6Dkx$5R6MJ0K zUvQgnfMCD@$#lGfr7@l2VChVs;$U8;=Q>zA)AJlGjp-r>i|TK-OyU?sBj+rnfqnn`wS!2ih=Awx;vT`uVXV)J4w*kRvZC&edR7 zx01;wf-EDvsgIfS9l2=jm4j(_axII_wQR6l{9=O3$n9e~V3)swO=@!>T{-5|wR0Qt zYjQXqnf?c<0xXB=_Z-a4G=B<$a)ar=+cs+@lP}uP>2DFqnqmwXHk5P2SKv(Ys}1lu za@~)1i zv78Hh-H~FFDL z+Nw9J%h+VFk$<;a|8yqf?Gh`PbgVx;+WHE%{xZsF8S7nr%y2y{qt)zV=2uP;Ox|Nd zr!(2_=-brC3^xLtfSBYLd7xagj~Q+mkYn=ib`cd!a=T%Z=;5!_G+)?Fw1P=~#mof` ze3|C90&EjEQny{=3aV|N;6gf)oDDY7by}}}#q12$)6WbSx^os(0Ek)2t3NW+Lb3u4oL-Sm$DmXz2w$)27 zD7O0)Xc~5(0vXt43N!?|Olb})1xWJf+^38)hkv-(e@EBKGwZv?^}Flc!x#I7+mmbK zTq3r9W-dy2A;BwevRDq+#y;u7YD+Cl8-BXG2$;r1rQMBl-c* zL#p!L&vyTL!WoPEX3dGS&?0M17=9+YCYk^3p5s0%G$$_3dL+?(j5}M{3%W#X-P^fG zn6N0}qgjg^uCl^=W{K>_EW)TSp(-ve!MZbXkN-nZ_he_)mcCV|&l3{oxWo6}J8Lo0 zKTL2#1%CI#E-U;2Jaz`ZFXSQvzWb`p!<*{0EgjX3A^Hxip*asoi}HU1JM;)pmFfFo9qW>J#cgv*Hj2 zyp1;*^{reb{%FoPl2;hvvP5_@0jtm}O}J$pJP2~k7~l;>^$P>d*;oS>4-mknYznrm z!=@45RPX@>*B3tL6MCa^NY^UW!S;|5V23ZLsVx+&4TwHzZGpxm_d3|KZK3)=dvJXy z5Cj=xy;I!)xB-&>UqE_6S$V1PojQU!tUDCNiHb8L1p+i?z;z9HZUL(tM=~w2@c?xD z2B<~7tcmSX2I|nzECwocI1H_h#xS*`9P{jIMl?#WW?e_CbUP$wCqwm?Q)dr~KvN6& zkFpz9ws!#L+#0s=Kl3bOYs8*8Yzqx=7~>p~`8cWK!zwva-~fZ+11*LAkKi~p7S5l4 ziZ^3rbw_i!BfGqzIoQ_XEy$XYl{;-_hXC_4B~K@=5ftmbWbkg)SW5F#TmmuQJrVaX zkK_}k$km%#SRCaO#s_*jNoNtp;FRWKS4nDmm$fj}+nkzSlA2Zwo@vq{X&0tL5DS6Q z)U+8>b)>E4ZY)(1LULhZj7}$m!@W18V^;xIH5ST zuq&}7wZgSOro)>>;pL8uY8V3yEzwlixV=EKYpDOoR+!>iI5S`)WBFT3)iKn^FPg>3wg2pJor}wm#^!k>WDljUkd+>srgSN`|pGY zSZdH^iy%?26UwL0z+b~C94=#QKX{%M)qZ$SSl5X;{^r47SVq#iTXNB|wU7`i|L9|6 zjx5qMSpEPc#InDlOy=NzM*HE}ca;4wb;c~;KSAc_c~5fDvMrDhtNgW8KIg~saVF5m zUl(Ap>fcG_w?euablD$4qK={be#*b`2<^WUWMkQXRgCt-Z(nu$uLlgv=XwGuLbXrE zd~ryyZ7bV+D?i@k7e5(>(BWg z1|nAb-A?V-PlDM0cqnmx9+$%a(~oh?;ywX?VSh6j*}s}OqV06sQTR3P5K@kBqG4Hj z`FKpkD*v^7NPzI9jO<^%d^p6&V zxTPVWg(Bc%;gx_3{WKs@4g=1|h!+vg<(va}EIsFvJU{vpYdXNrC!C+-h;gITQU0K0Aw`I`s9@r7fwe+}soYd^pq8AKk|w>5 z*xq2^JzKno0@sw{Y8lt_>JneMF2svT>3EedD>*R;{!QT;im&k43yi!Q076Z{MpO$I z6XXq*C7g>{Pzg5yppN(^AO@V%@EU=AmFz=6nQ*m81GbY)&4CCuIhhQ z!N)6lc!t8|St9&%kjFW^Gz|dKnr6!t zu2VQ<5y9mKN&jLEe~S8vk9U@TfC^uw$!C%LIU0^{v18zQfc5;1^js{H?fRw@{$maQ zIqAPv!*>vWlZKy8Jgz4&aJef;&+jE{;~S{l2Q_>$@wl$QzVq~SM`J+m}?1>uV{{0-vI)bJ3M z%hzRW&r@XQ22H+;piaKs!yt#fOQYXO4y+653%e6AfQY_-YL=Bfd$) zD~P{9!_OeTSHsUH{%0BzCIh$6?Ii!YCO@C}cQw42 zZHF4q49wHrUXXZ$kK!}B8J2T6XdribToehAOT)No#>c53+VNS+_XvYo8|hnhS;*SlTAS^s?+&iWtK@O@P7a~jU&zMl&` z5x$LZw&xPEvsc5poqww6!F3Lwk8x8o3|L>Z^HtJ+tEOi=3PHdv+%Ryttp7nx&q!+Q zKMW%OtcLS-_g@t~s-15sINDiA`rp;`+$pRxj88S3^(W9mkn7t_dSI_s5xC#qrSUVG zaIUYYI7m*^@FHrr6BIpY=T6c;Tf?W3{zV#IL-;ZU$98y#^sgeE?cs83HJq>SR9_Hi z&reAICPhEupA)`a!?Wo)xm>}~o5$MtUY{_`QUmsNt^? zp0D884(qTW2y+SNa{0c>0uATu(4~qVBu7$b1~t5%E>i0h9Lvq5a^*h0&Uxf^lHa7r zBl$Vu+ckU>DueJd4gW3SztZrUp;Dgvjq7^@_4{v0p7BQse^Akbs`)zYPZ~a)>h%{5 zPbd6juKPUS68#H);4x!n+kcs-2f>INN!xhO?cwYWlg{yEUB4eNMw! z{;wL&@&^d#<22bLn!)%$!O?y`-VbT`e(IO8bUbmtoJ{yU4QJnl%QU=)c4d-&NSK5b8nW7=+v?SJzOk)DyE9UVagyDy;|8(3-0(e@aQ=>rW zak9V==k@max;!d`aD$9&d0rRwYdEhf-qdhDFS|(}+r#IP3=QXb72jByQNW(6j_j*y zW?^BWSA;b~HkFnyaG9hS>@khG@E;wz@y0NPA`utCz1$J#Q)%`b&(?bZ0-sb{ap~*1 zzrWZ2{5{~{r+I#W%l7hKanrKYvpZ!-@#fDDdA42(D6o(DBcGM#_WNs|Ik-aj z%y}$a<+=Z{t^+4R-VMQG%mDJ?g~fYcPXO^^^RePj`mOLpe`K#e^K<{qr!N>)64_fC z`NOAAcfD>w>a$;#bf^2lMGks+^6Xw}76ZNc^En+iWPY}9hcN5IeYWo#!SBoM-}fPS z1}XuQav$6BIk>2qx1ucal;;OGf|Vt`%UpX-U%7H+N#v>Gy0!^hII&cMjoe1=00|CsI4DdbFF|%g(kj~e<##^!p7Y+DI}=6wZU6mW$h>nt_ndRjz3;yL zo_pV;X?(8R7yIO;L-p-}`aex0!L0t;`TEZT7r)#1)J2aL(d;_A+_}7-u%@WG#r8&y z|Dygaf87U9SXOcD^OD&9Gxm`)W|~TSVcNJ8#-BK0;z^SxPr**1WZ6D{N@}1}uydEL zY2DI88QpvI?A5zZ-^_kGzyE-&V+IZi4<0f!``BT}w`{r`(&NZDb8oBOPf#6z2nmp_3+~IK0Tw3&!Cr zs1v`h`7AP|$tyvo1_Qx*+Onp~@#l{cA^*5Z$V|~1`lX1XQ(m4<8R};2)zpx^o!nP$ zrDoWtL1QShz3mGX8`Qadn9a~^UuH8ko5^fgv;COO(QJQa^E5kv*$JA>VzxlD1DTCz zb`Z0rnhi6%M6*Ne$H;%*(B+!VwlQO>Z|G{x4&xf>TdUOJ%<4Pg)RA_js^DfVoM+>V ziK%-upKli{ejD>+>;q&QQ}^in@%BN*U&j12dxMhS!FH0g?e?HP6SZ&4~2dzXiq}_Nld!xeY%TsFV@rY*rSxI%7EvG zCXD&MpRR9e0*g@~kuqpRq&*78k<`mZdlXzl>QQakqa9|Wmr>K8gS(-gXSgJ%dSx!ey)P6uYYVQ6kaRFKh&E!@jj` z&HP9+Y0&wZh#%3Cou=&~gyy99AKIjSha?UVkvSb!Y%LPZ`n?u;ls3v@aN=JzqLg4Z zh0asTi&LzAN_7y;iQuV!`rkx1scXt=r)fo`!>;IZvQE>8r)11w$}&l3uW+ZQ@Vhfl zq{x&KnBXB*PfQVz*(f^2&qfi9pN*oksM4dDBdF%P=o&xYMVd^N(M_hxNIrXoJ8gt# z1`ABJ&^>-mhaR3u94NOZre>ht;m*eZo!&{Nq)-z$^zmqSq21=H>1iA?Wg3TmZVu+I za1uXOQYSdIgu!3)Hc4=|sEH_rZa$HqwMeAQ?XMW17}xs~wC0=A!b@3Lj9KUw$I_A? zGwB*%BF4ov+gc)|)GgV{&Qf3@6Oa*ltyAFA+Jpj^CKkB#n-nOu^6Ud#1dwO|jJzp! zD_AP!J+6fyWtNv@=cyx>G~D7AoX!R+977Alwiu+)y{9-=8jm1GoXr8IUgs_1L5048 zZ;uGe5W3mL)OF1lG=%uh$e|D7LmVjY19ve%;N&6s|YFcHTbQ~ z7qC&&7NKQpPXMcA7Qgmm3Z==gs2#Z!MFFLT^1Wz)_^iWkG^y+X?X zaobud6_K?S2y#p?adegzh$Z==PL&gK3A^dHY6307xFvSjd!%tZ?Ifkpz7kTV#PD0^ zUfd$gYNurq+H)k;OW$b3cQx6UX8qM&1%cAUaz2xj&fTma2V^Vra>Ov}Y%U_#d}@}O z|BH~juZpshb;VUw-qD8K@sqd;xRWqBYAz=>j_%lqrpF>3RVU$d8dfWg6M1wYbEE9O z!O^Qv3(}(Cv!_k>Z`mmVey?UtA6G`FZlgnZwg%VZ@jbIpO)+Ivd!PcKFPni zDm)WnN;X&va(f^e2wwfrNmIf68b2!LOogevO017e2J>t0nmUD^tZbXcmg!oSRaBNE zaE3$A5SXF^i-=G$NCm%f9j`6!1patq%m{Qs%iK^hLRI9`*M`%$0Y}dMs9sl5 zxmiV;sr9>)1(oR#Ar)Ms5*))mE=sS6LBO zB~kSfLd4LhUmpd=&4qSRF<#XaV^&?I!iIQPRjyOJs(Ky!zOHgJ4Nk;*-~Y-Y;9nKB z24~zLIwO9oqbRMF=S3@PX(z9xATKQF?Ty!xC_xE*Od7Sdk=8+9Qz_AYN4Eg@+7%nd ze1q^T4$1nqaaiivgidE)6@w-B2Keru$EUuBv7L>0CEqV7ROwsC7R9Z6oor!jy-fE1 zuhzsy(}d{{m#qN(c~b#1<^?LlD@61F`lIKqgtQt1J1NP2=uI@rk;|Wq%^1cwoxkJK z0SG5aW?8tf!sfTt&nI0Jr7zAza5~84|3CoVh7BHLd6Kz$2^(Bb&ye0^%1)$Avrdq| zf!l8fzr#oSVIP_8H=8iiCPCJR{LOQbk!i3NZXrz!`ZKxQLxyvv?CK8mNAou(+5fPK zWa^g_W)z|1a?mj-i9YI&XGXLBn+P*)5@eNe`K4ey$&|gE@=OfkKWBZpV-ypnY$IhP z^M48ZFZ~?;i6FtLjq7w{|*krLkkm@+Lhz~-KDfBxP%fp!5 za~#k30mjvR2WaP3THPMLOH@vnxAQV&L)(c%gxx!2AjWe~0-h z1E0zE&o%H7j7$58pWkOcn+*BQERXX)lE^=#S?hpH~dLk^PtU5Ig6w+}{lOE4g0I3na=%zgo+7FrzS%*qNtUYp{VI!*=9N zn8=s2yu5P}{2JDuXV}@tcFr{L62{jU_+YkwzJYIG{Bi@I!gg*naEURw-N3i9{QU+l zW0@qjOX~Fjm-~t#e>2;8*TBn}|J1<$$aVs(C-!GC-p9b7X8mCXE-@bC4g6J>pJm`O zCV8=ei{DiSF0)E*G;o=0^-=@x#1~)bcTz8T<9CxGPv0z6y4}EojNfPAUvT@#Saq>4 z=Y6bDf+RR*wLsT!MX9W80~h;KJ$6urq!I%k&l&SQIF7p`jGy7bVP_5F zs}1}X#_J4R#&k6pcmvlr=E3D!15;OeaQJf{+rPns!=F#s&W}7e?~lp z?tJqLFKV_{8!Nt#shJEpKj)9AxXBxQp8DIxsU!Gk6WiSpuxk?I=A!Q~WW_ieZ z<;NMg92eyq>fC{CG-mDV)?pkwZp=6mqjdCR+YWFag9`=9j{>@H?12^Mf=#MDu&$b> zu*#sUOVd?(L8NoSov10dQR5&Pz4gB*9^7#wG~hQ>5IDg;@h~LQizD458&| z5^|jFY(^5rE$3h$L?;d;W*z)+8+=ZW= z>J!LU&gJEPe9%_QS67ywQ(0lD8T;_KgaCZX((kb??>p*mI-yrb?~?Jzjz1*TYBa~z zBAO;E(sikNb!_FN{g)liw>> zud5`>YDz0A(#plhu1XrHm%DC#v@(}kV-!u~R(=i_S-HBbs%FL7N?n(K^*2lgaJ0#} zOzagfVfHXNw~1Uw?}#UK)e@Uo5U*@dj&yA~I)*XsIo&9Y3)FAoj~sQ9gCherJJOf( zMBdcLy;ZXFkd%LkDDu{n%_rQn2~ml&C}joIALm2yN9sSFFw-VM)|dF9RHQe~uPIwf zIVJ|-=?q34O--1x%Lz6yNZ!X_9vDwDWzV3zWc8O90-}%lCyh#D}S zWXi6mykzC)@e2uQXOxdFX_mj0FxV77iBxF`pYxUoz*{L_woQa5)4!YbM|_R`b*yiQ zS#LP!-1rh<$m7E5|YHpiSkts4(QE9XBv8^2|E-Ik4|N zYGgl(pCVuCvEyyGFyp|yczI3vH+nY9&mT8&{5O0yTiuTfr%iz(3upz{o>pP(spi>- zImjq8bm?BIOyMrnDE0yc0~NpY*4&9Ng_`l&rSOu&IE+G#JBfKPOd>O5`;UL&rGv3O zv=H@9;%QCr*xtg}zWTT9!WRyG_WI1hPtVMMy)gD70iV5I_`-V%c=102#Clz-B7COc zS{rI;B>x&eEsX6AH7=p!g#6s|R=+)OWl|s#ynJzHbFUu%*L3LVcqbaqr;@AkTd5_F z&}s0=OVK6K)*I(Vn(qfg5m0(9@TOqsz8Chi2gjy;H+C6vVoy`l)}Hr*V|!f{+ks1J z?1j*MFFF!*JX38`A`?HXdn~{8lYLYK0&YSL3n>W86Q>nBvM{1!$f&4DvpSR`dk%Jq zG^acevG+Bl_~;qE3$O4#lZ@&~C<-4?*6v$$m_otE9d0T)oI*?7w~^~sW9tLhL_(2Q zm0A^2uB@?M(wx$z=_*x$4;!BfH8zoG$;7?2!#~~YuM1V}I5b$-w|L@#jeTN!#&n6) z@3r@|QSF}^n{pL|-kICHd>0XMV;inQJ59%ynxbUlA8Pg#H%I;%IsS#no_1fPdC}!5C^if6 za&bj}G&bdaaCXyV*8RuqNwH}gu7BWt%q5|Z z`LB78L8=r;MOJC^t-`bXZg`fz!|<$><4&Ujs8#64jnqm}5i1(qjL5DeL0hRWPp1r3 z%FY0`Wmxf%u@UKzz_vAU%FY0!GkQzzEt3jNu?D4%!Ngw?Cz# z{X;ouD_{g|1&pArfDyD6FoL!MM$lHE#D0wSlYb}&Z3T>=tw5=b$SMC&3EB#9&{kj< znnYc`1G{zWF!#_w)mA!aE8q#*`XS+g;PX^me0Ua6^bdum(H*x6)9Gn(Fd;{3sqWS( zYbU9vr*s;K7vcIAQT^KL*Qb8{>NiFGrs~ey>DXgQJ|k!!a}{m7)6xz0!0(VHiXBu{ zum@?*)?65+_=cva+bhd=oDJT82dVblOe{EF{@k9_QRLWCa=3SSlvWp?1kygW4@#Yc z;|ZxReiGQ7Kq;w5Af0P3=|?eTlcCrDY$hPmpWdKN*$Il$094CNc1hMw2Mz@L6RoE{ zv&-!3RCAgdmIYk9RwkbsXz$!a=s@V}wc_nsduO7mMd5N?Q>D_iutb%nn-)94 z7Gg-uKBhTq5Js`uQRLc7s93y|SGy?;f#7ZEShlU1A8AI#gB6gR>N7`hI;ESwX>(!1 z9+*d)w4H>M6ES!?@@y^AC2NBgSwNdGGP+FMrV*utIYYinyfT|&4S|F`_)bFH7s3NC zB{mJsvfq)ELbO88J#h+QSV>w9mD71z3Z4DgZH08n>Z1{lmpQJC`_g$py7SukzbU#b z#dgVHXIs;l*lWqo9< zHcWP~Lb5C`OzqV-K5i}3!;&!K%UGBWE0;m^+5jv}jJDMa6K7#9V&KOlaYRM64b?bJ91-MgdXK!V_Srt=wRbo zgf4Qh6Iz6x?_lFwgg)KDPHYichNJkb2`xg)^l$K4X!Yc!+9kh5=wCbb#_GE{{DA|VF5Tg04m4lLUpUa|(m@_^p!q`XbD-0u%RKKu^M!obflilB^g2TU>s)J# zbzF<^(z&Qs(zjB${Rxt;mEl6tv$9-BI#!MgNxzceAY@CrRe>udy{g28q*KZG6;hNw zB}15`3c{DU+FVIz^L45<9jkuGSu!vKpB#nmPuFiGe8Lnu>|#No=et;j&XY`$+D$7q z=(YGHB9Z!p6Ol+a#ZE*b-5W|oBEhh*nofyIcD)W*Ji5@tlWe4c`21zQWj5B(%k^)L`g`u8jGCSPvvd7@Xxf$(`&#_? zPRuxSw7)vn-*^8ndyO2@Qd>XC-#O~v{C(e$zCZVO4(9fpyK)Q!>jS~bfu%=4oQp6qwEYc!eg^SBbzKo&@i;Ieigv}pcRyc2Av1eT~Pk7^o^=r;kIc|)jv$~s( z0IWshmsM9dOXG1Va|@Tyi~hv*@KlWDS41xAD$`192#(vZg1)HJvTjc{WGmj02kHPBOUnkr@Ho9W0ilQ0>u4Ri+DeOd zQxz@Tr~5!$rRZr|2UPx_M?&ggRB!y_SH(Sg_wUiJRmVDNISBL%x5HyR|5pb@dd9e@ z(@gw9P)4f@e&uN}Zn?YvKs=>9J7m%6K95iNE3ut{c*<2YGGrx$JMTBF~|(l(Rv zVT|*A45OA+VFH|EmW4Y2T>DM&tqk-+!JZWM&>-{a4}S4I1|XG0KSu!Gh7BI^9?&<_ z?OcAYJm9i`DT@(vW}P5<`(UkbH$BWFp&BqH_c_vjvk5b85@fy78NZhGl96e!9mZAu zM7@}_tcSnG|J786X%ppE;X^ScIUY5aC|gb$$?CrZJC>5@qyA_Lv;G*{l&t*gx%{_{ zOoO#Hk$$rBFXQs1ol$;TlJYO(^2JYLRocS+?gvK4l=5YJElGnm^#^dlBeXf^SM+3y zhgYE;AtGjp<6ba{>^+Q`{XfF`%ME>Le}V5LB3b+G{gunW7ZYC={uy`25Ozdtk9d-WaZ;9Nml;Bu-0FxH_oqFzLQ}Pko!-Lxsmf6+SwZ~ znd9-R<1shJLC!kge9R4>tUP6c>^LqmaSV-?&oC@#w&S=+_30%}2le)j#gTi2ag56& zyzJj1!jqMXu^MXaFz#e~iC0NKfW_UJc^SD4XH4A!C*G2sTyo0v!jiI6X3bhyw5V)R z;q;QCGK}xR1B^}*ABEy^oc&WeEBoW%JjQ0I2gk=y8LKmuaoE6dAh_&#>^Z(<5T(y` z*aGiHe}83t=pqR|jQzp!g(P?-<1)Mh#{-*Ca)Z^cK6e3^`;6lmhaH@6CCT|w?DyjX z@kAC7d;%AO>oSty)hv(wj3oFXmM_t;gCEE83k@9o2Wf@gIP!mBzRJKcaU{~YdgI8; z%b@KB{ueG+UR{cxA2BZPF9pZ>7wHFjo$LE^1HXvzM+{uzd7d@!Tbciz zf&ZEPk$xxbc98A=(~!S}`83WK`B&LamVwI|ex!jPVLOuzJivU3fj`Rf%M3h|d5L=x ze+Dsrfg%4W^H&%+?!%D&$H1@W^VqEhzLEWrvC&fQ=ZrsM$fq&>jDdGzJjCUQ9Xa0m z7`VKhA7J2P*-oy3|B-Q76H)A+sjF+9WXPAYe1U<_WBFMIE^Ebk<2-Sk-plfmFXdv4 zEK;pu=OqnWml*gZjPEe;ZrqM{8h8`?e?Q}3SyWki)WGGw;2n=0_$ui=4~}|?pMUe< zkRQ(qpL=k~i~oMUNro)`bg$IW}61OaCcZq$ue~KFR<+I5J9y_R8EAvv0)b}=2iqchvysVM+0}l>=B;Col z__Lhb?Op?y`-(R_c2G8E(M3Aw!C^n2?Y!r~A^#f7W0qee@xKQgp!B&1N8U|*V?`qY zR1*2y*nYNw%XpeX1DE+PDhzxW+u3N~|6u$E1OG(3Vcp6&+?H!QvYs;J<@3{TJn~#c zW$6!wywvNEflIv(8@SY~3%8TBkJKy6z@=UctM->?NjN0;?$RHWlk_u%_m7E(Spdz& zO{NgJzY|>g`65GJ`ddY1?Kc`DJtlwR_`ERE(Z{cDkegicp+NajK=03b)1nKiQF$nA z{)?geg2l0qFu1t*rS_88Q}u7!B@bWS#Mqzu|uG(31X{F<5n!ra(C?1K6?rxown7cPvo&g`0U)!h77 zu|qYo*vi#QiFA8Xgb*QB^R=*WKHPz7=>*w0me|h9c)3reI zTWL{@k&))zTSv9%FA_B5!i$Hnv7$le1^WO0qMefw@h2#i8eD6!(<~wvLd&lI9D8_3d_X zbK3JwTa}k28H~-$?uFb)ecRRuF`0^?Nl!_M*zlop9^)R(?$!8dba138njKc7UE0ot z@5E+CVo&D3*tQaE?8!*exNMz2pMaA556RoPjc?Bl75zOD+8?Rk7c7}{L3S__E3!&r zUq)9IQy(wNe?QXrMl?{;G@>~4?98T_*%>9VzZNyN)?Eg3CHbF`eIMGTguHl4dy%P1 zp%UBL=)qn2mH#5x*ND}HmV}BvJQP!FoRACAPShfEW8=`YIcJ<%xUBHZ!m|p?_R$`3 zQ>RehLC1|gaatg~&%j~1wV0zqfVHTlGZEB?%ciK;N$Zr`nvS!KVS;E*HQ=OdbAEQ_}E>r+3-qrYtg;1Bt*qhu*d$r4X65_C`oY~a5tSFyxwqd$Nu zgYvc#4VL6#NBKakvJH&nm0glk7|A&Hkw;}I0VSkK<)ebPS{Vhw0!#k`O{o6Hm0<-7 zG6<(@B5ffVjbt^TR{v#u3Q2Mu(DC!&*Z7HFVfkW2P7^IX8czu*X{#$}Sz(Q(U<-`$Q^G7Wm}rYqnEs$kTl~S6MKUSKr$3d4ZP?NYILQOIK+{Iq zh71z$Fk$vqolmwLOzDyiFeH+da$rZ<8w_1Av<=e_bgZo;OMk>GIf7wBl@X?+gZ4-` z1G&L4ZHZQA0Zl_IgK*Lb(~(6q1PLR6aQdYLjA&)U3Ts-~P_|%`WC*7`t;00I(9z|Q ztk#9RvZ2ZY4H?LyJmmv?3ljtT*n+1-ekfZ|aq|?e{Zp`#RrOFllWE(^@X^uWLpGWS zw4FjGQ-EW|HD#XU2viQKG9>R)x=IhUvPpIo4m(JY@odQtWs7aYKIJOA zN>Z64M)-;=`bu*bobCIcj%<5IfC}2$s=jq%5%udj3 z7PAGK9muR+WsCyWv~H=+4Kuq$vqS9X$$#I_<(kd5f1_Bv$`}Q#=^Aa&xx<;&tBg^= z+ICgJ%{n*FK7&|il`#rf8>M(&WsCyWFrS38$`}Q#9a6j-uy(bQ=T*iiU=8oq{X=<` zF$!4IJg+iF0c)D)RmLb_P4m3U7zM21TZuPd4VCc^aN$CQ-vE z0=sqVNWhwI90^#{ZG%@^!1km+A^|c9v%M&i>`6t`RMuMde&tah_%KQJE~b2K@US+BSFJr}%p{A4 zA*a41*`F&FE%%ze5`~PWL#aoNWxocl$2mkm21UKDic+hmy@AZWy`pP3SoT2_C51hw z3#)?>c>f%fwad@B-ajYaKks^fz;(qpURm+)fE9|+8?Um|kOkYa)yYT|$v+gR_GK!? z{mii_7Zg&zb1KgRuT+WePZhA$k%8R)sv-PN?ts12I^JXl>|@AM)=P{ZgUo?{aHIyE z>yWOR?YHs5F#KK0n~-${OJr?hVz4Wzse!j}&cL5CK@my`o&@b5f0ZXgl6unFR$kG)~yE!7*4c(mGkj)mbpOKEG-H@(!gS~Ws={dz^ z-4WpSD@gQQ?}H?5HVl@rtov~w>|UxP=g7AOU`TdvJ4;_DXutl08(iD$MjZ`lU>_zl zJcK!9<>0vRCVPM#K9#V7tl6BCRltPSUe4S=ET6~eczq=u_Ijt zB;At-sWSrjZ2VBZG^xoC!og=Id#L>fYM`v`k~hGVvgxfNmFP+gF(qKr9%j1|)Jt$a z8?GxgBJs$CMssIfp%HF{)M|tyY~&#ItEKT6_6VbbBb*BMtEPn)U2$DsH+uwZ*dv_| zn7sZY?LWlTPW73y$pfvP>!@pfw8JaG!6evUo$d0S3@dp-1@_4#>^4&JW*qHp#^fSJ zUXehsm})r^RSn*T3!H6h=0}=IL-xZ|u)3@q(UP5~Jxz#h_r_A&X*gvcBx01h=Gj`L zOV;~ZKb@8$0*?9R|i0!!fR8Hqvp)Bj5YcKcHJttVvH4bG(-7qzrxDuQ!ux;}SL zjMVMn2Hnyn+>NoN4&g?_(%#h(vRM9+17GRRpevmcGTCJ6acS-fl(a~v3eHWXz+O7l zOL#7`Dm-@qEjvl!xv6l=4bat#Q4So(0lR}dfxJpGj8NVz+Bbu{(q6%L!y#S~x|X@_ z6sr*60u|t!%@t!0j^(O>rOq%6#ln%}xO#-swE&jIP0Kpo2_B}ZdTkH)W~eq$wnn(N z&;}#jmeaw+qa>I(*UgCwCN8C}hm<5RPG``EY$hmXOd#2+o=uEcK_Kc@&XjQ`N!H>s z)hP5#EL_FfRG5(0I#B5=3AQ_QX_likU&y%(b+MvWclwfcK2yT$z_VKu zwGw)kXo(-m+Af)l_~;%G32k?fU2EelLSu!NagPX%75Y@VY9m2TQ||9UCWoq9DRpFb zVewwPwXHLR9OFPsToalSL#{|dlZeQ%j+KO}9b&WpawQvjPUg$`jaUGK~ zYLa%vT@2mhO6_M-g7r!2Er#B4rObv9Z%=kamIyiDfl7s3;XtR$kjP71sF}&{xzLZ9 z{FMvsVe)wwdV|T2T*&lOoRSvvStqs#EluXL#sxSmR7@*20}}- z`K&Q5LW^sd)H9;4#?>!*Z98^p|9XPpS95v+Vv^H zZ5cy+m#Y>O`WH@B64ZXlS$kZy451(ISnVKZz2&HF3JU$Ui)9Gi?qZoj<4rRXb)T@% ze|51Op+9l4JfXjEu?a%w@Jk%OwdtTG%<&9TArpii?qYdDk94sdp>tgXhO=ln8{y1kIU za-cFHr2$CFYZr8)?fGI`nlj0OC|c=GSqp?5%n&U*esRK;N%W)$TIpR#*&(*GlAGgd zqSjK;^0eFC3GF5>eaG?gtecta!n@P9&g#iz*oB;unFz9$81z}2O%dxFmT7ScE0uTV zpSjRsCIe1krJa}*KayOTrMAl*L#M7|a=incDddF?RC)=MS31zC`O6O{d=RAD-;!sAoQ+c}7OB zDlZ>Rvn7>{A2*67!l>IkYSp^B(c^N*=jM-=iIFS}vNtC?a%MQ9TFS&n)NsirJ0b~K zh@0$)uns3XqRD?S^~|Q4YFe^JY0)PDr_=b4&}UkIR?os0>J0=okK8b-PYm-Ie&=tTeSi(lCYdCK<%cBo(f zGuD0({`t`I`A1i&O=O$eq$zF+=t&CLG+S-D2RKXUQ+{gb2qw5b37i)S}JHL247Yir5V zyBn5HBA2hfXa~*kbjXe_J$v{Z;;+3ZO8oowY(-C2^yH<)T%$5Ru%nIsP0=Z*`MYkL zGbuQF($y(GD#i9+aZxS}umkmXyDG3P5V@=3bbtEnr~Dg(RrT)#hXi|)jY}^2J_*Ep zll^OE`+F`a@t-q!HS5PN+NSjV{=+u*gdcNY`KS0hFZpeKaPYgqOj7^bg-b}i**AF( z%?)hZ^dYfq8377aoy)_h+3sH^2=&h)2u@@D-Tao^_BDKxYP0I10ines;aW8 zx^?9|dlB_qtG0SeB~4t#1(ea`PgWUEf>pS9X3;{6K4vPP+=-VwlULQPTd}5k)w;?G zIv}mGgn6r=eQl+3Z6iPVyot2(z96Atgl;FQAXn&YN^g+9Ox?faPQ>R&Pm67i>azfRe z8n2vorf!~=$|1Id^De-)Fg;_tZ)SRCz5nF&ux~||^h`nu(}RUwtq5hyQ;&K> zI6Xb%D&O?<%q#sx>EY&->FGIFq|Qvw+a8#iKB2zT$?41expw-5!t}ht^qlGGVUi?` z>ECu8xucsK%RBki`trEt=V7sn+R)}b% ztz1y6IILkS%v;$^B?9_pD(I$>pScDT`-m6NCPX{qajfP>daJ$}S<9Wd6U(uL2{=iXQoh!5gOkYY8)LLgkPA z9aYXBz>rMY)r2K0KYXeZcg{a(KkN##e4Kkso6ro6z%PBTH#(Lniw~nF2EDRe{92Z* z*{r!l*~=*-ng6BizwBrDkHN5}|KB4F<(uvFCv>RH))^mE}{F?qJ^Buw)rf8J{u2^4U;e%N|j)`RD-#tz1uhSdn*DT-3FbK%~ zyXWfid3yedrEZsI@~~Oj-x-ME_$QR1Hff2FFp(% zd=1MjG~_2U|AB!&#Qfh4T-s$2A5h|t$Pear5_~u7=NS0;jN{sjgnIC$U-4<`SL4{b zWBFjmc?Svdz;nP*!tsM7_+>2LPs7yr*FQ&5%{O`;!HSp!!pI00B3*63|4E$8~XS;zv z$@q5+{2{h;tAXFk_%97yF1~vWd=c}~PSS4KjK68fXLG$|kc-Ga%yQC?1nrQOp+__&Db08~7yVR~WdAP&wDYGq_%t7`O~nyvD$vWceEn{1;r` z+YCI+{4WiB9?S1BaOr<3T#mHQgUoj|@GIGl)I;R&;dUNo$}=wKX_5b5#tRL3`2e-b zz^`Qa8UsJb{xo-h-(cWd*p7U+6o1ZRxj!26^1b+wfv;pcGN?f8Ok=q@d=o9W__^4? z#h;A^zK-j4wSgBfek0>xd6z1Weqi8oAGyn8C!KxA=4k^T%6YFE_$4;r}Gf8Vep z=ZjAb{4_qkuqqvr9A7f3A%k(L*FhykaU2FNg9O7KJ7`ZCUNP3dU*~cQ4V>0vRB4t6 z$9>%*Zio3E9QJ3id==y3r`i#ezs@7C`ZD*Q1`iH9)oiEPz;9>#8V?RTa$fzO2Zx7znWyat2 z;IMOm?flh)!_EcFA2#q&ohXyimmVB;GI)OlIA6{K70mbKt<*~f0u1oT!%ivNk#fXN zKEJ3K?~zx2GCs+J!_HQ=Gt+}Z{ueAi*T7$4e6a_|ev$W;D;XF6m$Ut|4O|9))_Clo z+-`WWLaD*P5v_-Goq-2XaY{FOaQGv~@2wsj_D^B?pLlTZadfW-hkPT;Kg_t)ONMAZ zZs0N`^EJcHZnpC$LtX}M9P-Fxzue93_74vZe**j}BbE1q__K@UyBWCLhaJN>+<=`a zY-fZAM>{ZUjWz5XWc!m0T%KEJc!@b)|uS$#|WCFXe~wEgl?x{+j)1 z^x!D>Dwe;_z@KFNMi1`Y@3(qz*!hy>f8xO*|1&Q4UJnlW6YxXnVa8>@$bH@82AmxkSw85&QEr(1%<|w6 zT^rJdhA}Snl>tGy1}(Ql# zo%h(zbsik;_9pN59~k&AxP2Zm@ISNsn+9IY_$LNFhwb#{^8_|1H^lOT8Am(g(Ar9W zNYf1Y-)q<^GjMr7b&g?&#jThj-x&o_`i>!Apis+t(2)Ng`}w#b-^%hY8S>Je2Mt`> z^L+!C_B>+X(w^P$^ES0a(<|&E{}RAfz2N~cEY%ECyX64 zCLGSs%ggipjvqgcxUmx_(1y~{&jEY;Kz52Y1&S=7)vSA2m?IMtWS&YBb$&uqV`fGg zkAxbUNTMkJ?Fdc8nHCvwS}?NbigpEh8miQr@2RC`$P9d zQ)w2~UjCBMBhS&_-dRn(E}b>8*HzJ18(xf76xKgxQ(2qtpfY7nSDKG9vn1B$nUYfG zBrPIKJtrKfD{N?u4$Xh+P!~0qWkJKI(E;&=6-;;~+IHysG6yWV0HGhzOqywptVUQQ=U-8$^{fZ3#x2PKv~O zWh>RDu92o0g!Ia$Nk}8*AH}*x_Pm=Cv7d-EO^w7(iZpGcIYDcJb7_*%{7Cszkv(sw zkg=3d1KvEA#Il3L1*6NzO!=P3o`We7|BPTsY(o(3(3PfFeX6c+r0IOjtE!5l`9pQF zG_`5dGE8f_COcfxRFR!iLR4M}&09L5r0Ig}0&4uoKHc7P8;?X&>)#32O^uX~D2aU* zp}ijQpQGbLso+>q@X(IXAev2e3r$%{lbv$aP^tC|igFGO+DbJiZ;!AKpG9JiD{^LY zMXF8s-14_eV(%&_g85n>4>eq`G~OzSeTvCTp&wVrNNjbmy)PMe=j@HxdrD$|j$ry$ zZK-JyCRFvczeb_f8APNd;9VrPub3uWZI6&Z)sCjIXsP-qXgAOV#qXwwJJIw= zY(}uDE7h$%N|F!!jf!o57&=I~(tl{y*)JDj0$l1L)FbLf9h#>4B~2jAJBE%6ZM59) zLYuiEdp1u$()eP`U-vxR&~h}{Z6x;BGtO*B{R>Z}zF4@ZF!r*V-!}gZlyztT?W6`| zQ~NKZqQ}mRy(xP+(tLu-h`s(GPDEr%>O?iCa@1V9nDBLS$u}zwk zpzmdTO!VuS&HO?2V3v}SiZM{B8UE}V$_&uZD$9Q?NZ(LP-75QsX^v)P3vPzKtxny_ zqW`$LkfcA$fBbjoS6zfNQikKLsM1auF^fpCl`;~q*?mKUV#V)MUMLHx`M-r7J4nBl z->1}d#<&lGq-b}v-zp=}jE}>byb@%WAlEJ!yjZEIn-YIeZPW$r)lMP%e@R1Kayn($ z?44$N+gw%6_F*HjCK;%?@NXqS-;rmTET4 z>=Mlmu_x25jc@33&1T!v6}wuq!?;EpG&`KxsAfmnczx>|x>>V%_8-tnL$}(R&$qGP z{6n`fKgN!bZOq1|^T*p5rtTkl8S~R@+|~Gp?qEJblOKVc3ZaZQwKlPccnlFl^L$1~%OKilfsbt=t7L}P83q_cQxPurdTC*V&1Gl8Bd zIuXkg_J9qB$N(m{>8vIO>M9chbpcKfXb!4o+eu?(nhpob-NY4YF552di5YW3Y8D$( z&CnAB(F{Y=(sYUOv*dW@8S+t$Ju?k~^~^N{wzr-KsE^Fc)7LXa4rOP`n4Ld!T26fE?^u3T8?M_nva=shl$A@qJ1 z3ksddN2_v>^Ak2x82O6niqug-VieRXq*RRpZ}+kRDUG0nLKqmv+axm>h{_B{WPy+; zJ5ZTO$u^gX+Z>T)iS8^DY1yu4;s!@+foS201_@Ik2>p(RsQL@qnEb+pg#0H%(8OgP zNtz_t#0o34h_#BhKI=k28q|P1`S_UYn&MAz9dqPm?1$13NO4^I1 zgj2aB>cv$|%4(1l2P_j@h^Zu@!D2|pp-^8J@_onlGBI?6Py0lX;IA-=TS25G!Qo=t zeMd82NEs$ZLEd89b@D82(ft)e;u-ZwAzddIi=hI?$;D?fd7cX;`n}jKNK-OaM;g~> z)mcJIx#+e+_j0T+6d!s!t+KEmlLH;7R7khV38#+b-1xFrDP&td#ddQInVySQjJ0t9 z3hlO3nRqG9V_RiHN=rdg=sTVIl?f?J>XBPQO2g8TDx`Q!_Jx%0lI+xQEtex>V1jg@ zZM23AwOh=3p1@5Y){+FYFK3Yzyv3m^}(@vW9+=;#$v)TtGPeAJb4EHJT#vqT#`RcLW8$#qG5+w1XBXc?eH?Uf<)uU)xJ zp`UlLu+YD8u^gd$^Q{Tl%M)5Av?VM@=)SI8Sm=H(mMQcA7t0Vj%f%AfTI%{+_Kn(F zNKsF6T1?bhBwFHJk}Fc8)_l)6)Pq9^GtY*}>k|A<*0oEK$D? zf!nr!xx0PG^*_C~W$r3}=U|Vr zWKm3UQ;NH`G*av}m{0Repmo zXz5Ai>o=T-Aa5+H0JGmb3R<6Rd+|BfjD?O6p2d0Uy5YtvQ#3NiD^qmx_CTSIS1$Ga zuuJ*`ieNV4l~3-f;zCxlEp=O4vOQ4WX>N1M6{+*mORw@>>G!?YB|S)zdX9R0#6wz+ zA2+6YCdE|GP0yUELaN76)w>4 z!l!d<&s&Rd_}toPjoz*nN(D1V5%`~5u_C&{%3WDY0narmb{gXOx%qK1(bem!)=NP2 zij^y|J2^a>_C}oKe{b}3n3@g`BJxs-NRZAX_6|?>qC9z46bu*WL5R508 zz1vA%o_6M3n>@Oy|z z)_w)te#==9?bn0;L|@vqJ7Go>DUDZ;Q5$DWzUJI|dwJ7$SSC zvhpYJ`R`6`#`!hd&&e){zanVr)*z?XM`SJaBEa$$N^h+Kw>aj+j(Y4s~YE{+e(1 zlpQ<=Ns_OKVt*`WOyaHJ>0HQk1AmD53IqQm%gehzvGXhL-&+lNiQQ^4@Leo_eFyk0 z27U^cd$)m$+#Unp!Tf#$m-c$rz%OS0bpvl_{!Ih_2mAl7f#ZCL^oia$`&Yg($){Cm zx7%6nh#`M6*B5UykwiY1@qPwAhIv^eL*#GP>eeVjUiz!(i9F6_NYf1YQVm=44E$#1 z&opp}WnW|9-(~;LH}D4LFE{Y%T<(nq9%ehY8+bX(-*4bQVg3mNe}?V+#=uuG{rOhseiRZnPoK=B=p){vv10GjRFNc9wy!Wxv-M_XJvhz{G6%-X9vt@HWcfD@yf53A>#z7Tm+?MOIm zpX|XQkNa(;1&pIv;JVzepKjpt&1$8`4(!YRiyFApr{2I|F z*Mmb|_OHxAAng|5N1eMo@~~6KxY!f<&l%tAk%#?bxt~1a!C_}K-$1?K!C~ue`a^o# zgG2s(mVb|Nr=5BKer(|KjWCt{53XGG~F< zKZ)&6_SlF2uP|P0;DeA!snmnRpAeUOn&FR>TV~*LALyOS0HznS{Vg8*fFyP>X5gFg zLW0tj9^BhcymJ=7&Rr~jn@1k_+l>FzgTu}yKCT}ya5+wYW8fFE{9yzCko#2^?iaEj zTUkEKz@^;d4P43{Z{SjH#K5K8(+yn8Wmui7gr;gc&)CwhfFbqedYE`v{~v%ba?-1fDxZFyr(q_8(iM<3gkAvclaLxJ+6fJSuprqGsU zh}Wvf{xA}I32|G85y;g>5i&WK90@*n-!BVeUsAwUsNsjyDi@tg*sgmX3N_$VqGEJH zSKUO`2!8m^2SW{K5q!y!yC1oISEyk+(KBOzjl^E32&K<-yjNo@MJQc{xt1jMCf0^< zDhj_@lbwNZs!W7ag(<)$XP>fv$&uYZzVD}@1`Kt)=yWRQ=RdnU)bNTfbN8-agc^2f z`p%#JtZoO#?Hro##P(cr5}VH({G$f{bAxX&_^aai z_6w-Q(4Yc~?YFNn_+eYZmy1o zYbwvJtE`PyR#-*rD#Gil!uYOBbU95}?Nysuxz?~ev(l8AULBX%6(Yl{CDgB3!*LTvEMq#m1504J)GMt1D~6 zn=04P@Qq56FJ4Dqb*n4F_=u=mCcJ5N<+|{On)T(CwYAmjR+0J!`fz&(UG((H;b`K( zbaa)EqpNgCl~0Gq_&Bgjhh+J6V3?1?#83r)GX`v`YpnlDkg35yu%5Q8sd7^C5yPX& zad^St)2p8QbP$%xNPT%aWvGkctAUWco!rOe!U|;AxRs)4G0pb2FH~$$vwfJ&&}?63 zGc}vZY*@4Xn9b2_e`fPEJAl~o=mS*#8e33>xmge*AV#RM`evFMT35dti`Qz<_iocBc zX*Qlb5s#(wBR1a5ARbHe#mw(yem3*BGe3vPjED7gu1KvS$~XM7@Cu?AEQr+(Wu?f;z8N@9hj)$-S8r0>KAKI}JSw_3Abq#t23K zQ0S+E_9XP5#H6d<#}R?L7l-J4O-(vgyJ{Et>9Si^R!a!_5|QhOM77k*INwy*>|ym( zT6Q0$1p{XK3)#UdM9c0Ycl*r3EE2OYjnun_-aOlxB8=CDmfa7fA@!A8JI(4}dtBxO zDn{Ox();nuQN-H|GlyV9Z^zXO!A`fK5p7#DKhjLv6T+5+&3rJ{~9-9}m=7RH-c;LAB0!*Z8QTG>I1KCecFaI$9{? zjo&Hm8SXkR4M9a2-Zja)d)FlIf!FChYr4Zx12gdxyE<1Psa!*Ye*sSqtEw0vWL9A_tNRxmI&PH;>AJO; z%_eN5Tv!t8&#@FRp?}Mmca3GivOL}hEsH99Qjd12s%N-0<_Ks!NOMe~Zh-gbcT*?sV>h)u2pfXiYhA$I|G0QTl z*%<{**NT5-SaTmcc+1MO{k?oA+Mf;|^M=2i#tV1z<=Xz*U^sZ!1O6_-$$R{3s{Flj z{n3yA{=sMdEg$YHYE02(w#~BZI-h&Vo^KC>&21DV$_TZbz#!ef_{;{du42vA)LAOEi6p zg_x3z8!juWTB`@js@3CYHKGcuEcpmwRPsMO68J0o?8>_8H5FxgDZYPg#IL%|#W}}V z_b8h%`5vauSaYxN*VEA4yzME?KHtSOG8CNX|KiwL&rsS4aRX$N4W;$2E!5F? zTCdE1?fOIJRUm_}0p;xI5~ zS-5(^=C{?)CtZ|3hW@-s%74cT63x|dwgrrt`g!coQbS+rFLoArYT8(_pP@NH$sdA9DG!pHO}}{h8(ekTBRZ>-l>KQ~J<2j--6q-bFIW^q=KH zLnD+G_eb<(dq3;D5}G>9`X(-VfN~)FZ1&P+(BGp=N;QDkONH~s%D!Ekad_!J$?^Npq1IJr%dU0hn8~9kp z&BJnn!o6P$wc-?(zelsq?+nHlJBTJCj29XBT*h&nn%6z zt^<5~2l&+;;LdZS8vIK?`4lfzGGi=$=ytDU#tHbDh@Wxz$=)rNc2wv{NaSRAv>%n__@Olr9 zYn;em>%npE6#R!C9OqEMf9b(-j0wKagZKB~FL`j>!;1W$JUC9lg3AK;XrCb-T#g*? zy$NNjdj)KP@HtM60VVhSrP7H-^g)tJmavhAAB?*_XkpL zZ?5Nw9(nlbhcQZ1^~Uj2CRUN-TkM?6c1jHSp^W2rMiP19S7_M5Ut_+?z$dal=NfoD z+sAQ^B=(i8~7}i|Dl0D%KRM$KAQQT8~B;blNM#ejEEE&mDq`e}6ON&*k>VO42Ig2?i9wM!s8ZkIY(HTvF5~7{+|KNWITrUV_U9GD&x_g4 zy9U0B`A-e}CAJe_J@K=G@jeDFV}FMkxV*s~Z{TvCnq}bcu^)>K{3FJz4E!ACHyZfO zEPttiON@Y=&!k?j)F{m;|5@uOcSvsBN1();fN{=0W^@aRHjLZ80X@^S~zt&?1@-n9P76XrRyLrd-qTC1A&OL^FS8fb<)*szI2icBH z?_;*lOKb;tD*Zjf_TTr|N4XMH^o4=T*lU>;N9ubT`y;cN3VxXVDZz!BlHk%W&oXc+ z_Z$P4ayJ{elzX{>OSv~2xRfi$skDRk&a&jV6Fi$UWbC})^1QHz>kSHMguR>uoJ6~{o;KZ#62n! z%4L@op9X-EiH8-cWxev1GXe+-5eeuJ@v;d(BdHU)|-um;gv z=+J$AXo~t}`K>4QtsDLTJU*1J#<115+9xgQbfj)7&1)ZMc(LvS+IDK5-ZHu0CYpNv z6B_xq6=s^JADG;E;|HNfp3ZNrZ!fI>yx+z@<+pDAqAc{CR+6EK;`h-s^q6eD0pe;b zV;hDq(pbh%Fs4yWJ6}IFljaxSxH8gIOT=H>UZFv7M2Cs~IMjV+c23)4gf#i9LOJ_C z4rSnG+^TQuTz|N0XgfyeyYrNj#9oY6%)@9!n(e)UXM30OoBBlbXuC*xuN@Klz>$M` zj38NEOd}jOW>R@H#rvsLTpLOuyjS+ep``~7-KNG8D!D^9y7ehvoDpd{nbb(1(zTc?i zRYR)A%V@ilEs$_Yc1E0?XDCbUZ*s4#j2Nl|jtNU@uiEtw#hqRqU4bW9>DpZ@@U0?FFJ?j z?ahC&u{BhDAX5G!*m4poJ6_iQ;(_gwpp3g!N6)Z-Y+la|x{ru}S) zJM-up^6%5LnjwEuoP4BNxf>}@*%q<)9(jxObxVe+0}!(io$f$;Dk%|1wWVD}&AoJC zu>B*lE!bI%{oaEuW$Y=9;V8q7bdBDvGgNsWhxSr4`>H~VUeMOBO~|y}%#DsoWerUi zYWf}-r+w3^9A2a)l*4DTBLyCoDHzyNKs zfu%0=0PRRQtzoe@^3q$M?fr}0YDZ!(M6)7IXVCH}Z-g2#0GUi4+U54o`ZxWB>b|n> zw)XLq9VwqnZSX|orFTDjLL2xf)QBKI5)3trhD6gDVKSoJh1G^?0#!?_rYgBD5o#!< z45u|V4bi6Kd8wC)((nOo0fyUVGV(jx zMw-@oJbXXY@Faots$qXmR_NTSjC5y}pD2|J!)+D=H_%qj9|^TRpE6Z#aaZT9?MljU zY8%?Vkh0xwl2D(|C{x#G40U0tPa&(kMq9$d zZFvmrSAenCeo3J2zeYW7q6|+xeyXx{i~W&~KDfC_8Ke@PW1xyla683!#QbYY|9sWr zEi8Vb5UtTI#FshZ=Vg-mXu`gJ#mMFHfTtPK?g;N9r@GU;dJW z6I$s70?|qx^t@Z>=129s5mc;qPu)m*sv^9no+3e~=lzb(9B6_l3F$rcG$SjM`7oD# z2yL&YV@USYcUfh$QlWO-u7Sp#1hn^~ALo8zF5)lf7PVKTyeD0LVlQ|uKp)37&OZ*5 zcnNAES2cLreylQ3K>DZR`ehgxyA_?_bO`1_HK|Zo3B3e&enLM^jsFJZaVpk9wgUMj zkfh#{9odz0;q8~o+8LScZxNxES#qzxi1m`^qrc1Z(FD5Ph%`sDGt~{63c^|lF^yjc5&?G$%iW zvg#k3K#zI2A785O6N_oBvqR6i^`Uz>^*Er4ld@GcP@<0ztW-rsqHI;HkBU8XsdK&6 zOSwg8fwEw9FfG=m+aN-#oYC$7X1YjIiZoNMrf6BUecpAe3Qv9DJvw_7E-H@wQ`Uyd zX<8hlh0LzR`}X?xY-nf176;o3=%r3$>v?5|>RkUL^c)NUdMy0|t&~NNaTEmC)<;Qh zUioManNW9Jx^!yn|3}@M09I98|Ks<*8pXaIQ)D5$O0wt}r&Tea5KeZ!(ftZlI_wb}(ODwJ9g_x*Ry%sKbYoA;j9 z_WS+)|G$B}Ip;HH&YU?jckVhfO@4ZuescOjvBC{(<^`F{VdJuTxSySs4Ju}Ow-ikd z--MO$cFwfH(Mj0_`*A{@+z;-6QhwxZ$V0nmVVzweIkydF?;Qj+=mu#6UK0sQY~^+0 z$D)Hd_aC@VUTNeDVYs?qp1k%i>#Fwp#U5qCQtW@3>05EF2hsgtKAO-hY78wp8=ByJ zZ`s7R!dap&@`XWJwBw4Lc$(oYDfwHcdup1lr+W!Dr3*UK6U$AX|Y2+L`ee1oz zmUb11P5XWVbioJod?Eebl*p;AaDsgZ&bmdjjrL9ARD7a0&%J~8DJtvsWqWPV7ou>bik|K2U|DB|2*{=-{7?!LY>{n4lB>BO`tf$${W#SOPfGoJ)Y!Q_&IDNuw_ z5?StD5SixsS=jEJfBmq9T4~pmlW6I-0Q9U!b0AaH=3_Ix>05K~(igi9beWPZml!$e zTTQ%d*tHou(lNX~f~$rdF9U|%A^l$OmQO~fZ^btaTRs_)zU>|$(95E~WjdM;&K3`v z((j#ZOleEshA%YaCDtx+kex`~jiN%HTMEki59v#pcl#Dd*j0Xb3*4A*$49a0j~?#)M@c8B-HsaxO$nrL#WyJaE-}8q z-gDmLJD@muUMSdqyc$k~;#d=XNKojD6>zFTU;Iv-ZDxAQBCpaIwxtL>fhxHEqLYcP zb$lO4voWKf85Cm%0E@=pBND}!1(94Zq8{?eJ?_?s@~}IKc9KVT=Rx1GL*is28s&Ji zuvv_3U{}HZNAW;&c1Fa`EGi?$nBzS`qig+%XZ@HSb@U!T4wao!oxW|S-VRay8QZUK zoc7yLKvPSxzs>lkyz+VnEmC}r)po}Z>7(@r9sjI<7!H8@)eL`!I!+0f?w^ix!zJMS7LMh=A2TJ}^3csFIG4zK?$a9Z#ulHzge(xgGy& zbo%SZg*$|PeC&Pv(dhIim2`Y%fBc5%^qZA*d{uIMQ*`<^B^^IUI=&`4J*1@L&~|)U zboy+W-lw!{wy(5nX(o&|@VC@=;&)0VeTjr3iqNOW+?wLU{o~I^cdu8JbQ{xu8J+%+ zl8zsb9LGB)MgRAdbR0*HhojRkQqoVy^d-^hE0uKosO0##==8}Vy?p^}keQGB+&25W z3JVUEJchRVVPn+*j1{rM2wTmG49 z`RQBtfIQjo6r2}}xY(qqVsH8oZ!NY02B&LzJyWt2_SSWG{{?&Jc*Pk;oLNVeq+j#o zmQTi{U-PTBE%%CWF`T=L%_*abp@b<=!2a}m_m6neA34@}1oZ#PA6e`@wnOMo-?1C= z(-k9Mqrt^i`qt}E@1yVo0k4U^JSaYk^21KIWs$Y8O>l=#T#lu0ZGz#l^S5xFKJv*^ zCFzxOZTRgy*A@>e<#`sLEA}fvnGzC$i$;`!XhCFH>_u7R&8Rb!cHOfZH=RvzeTkyt zRH|%Zyc>667CX7}#kNnL@|VDf4A<6cPi&_9#LizS*VT)~x)R=Fxk9SryvJW3M2>=+ zp2t5Q)cIs@aRLB$h1dD%JC~EwBRS|Ff20F<1(rU7!vI>uGi9V`ki77<#arKMzlts# zX2a_!u-eB4AE?Fp>GgM$;r{h2>MyUaf2Lhu!yeS?t%j`q8=_v~-eKdy6G70+J?PkP zWR(MPZY9nyr8nCrr{hh;LGdwLS)`b5C7_ql-9-Am#*{JP+oy~Q-&PtK9epdo*LVNz zeZ=ju-Aa}(h#bUQh~Hs5zW|3Eytwm6J`~$-U;0mMr83y0IMaV{YxYZ`NArEjt`3vi z5Du#Jtt;?aQPd#vC--`VAMpy{9uDIv5|JQg#i|Yn_#$S&1 z`21a4vwdV-1!{sGHY zCw_|gB7ak|oVc#!5!}f6#C85l|B0Q*54D48eBsAEq?cs-kA+`@k@?amFfHnS8JZLJ z2Y-A)Z;%m63tFMoVyT=P!xQkIXahs4V*M@XF33|5y!=6X3Z|DcvJ}w7Cp+4Tsc~ zs}EqQ|F4BU;tLoHzadBm+woe+$Q1VzhVd_W!C<_DcXXEV`GLh3jGU7rER^r~~%NfKp%)8L3{??34+Ms?;0R&29Atm{t!v zz%(I;i~)%xr7qYG8$GORt})gHJB)Q88M?rz3y0v( zfMsIf&uFYM8rqsbQCry9P>(Cnz(h@)qZn#vG{UXzP1WF`^P8GCH2G?Q5o_K!#?8jP zS-vi$j1_C+Rm7G1XtRV*(x-mjV#yzw-fj2?gRbtCR6JIM=P2Ev^lXZK6w6%jyM?JA z!8IZ@IE4T0C1^bE5;UH8OVFew*#&Q)9cauJkBpLJWXs4aBcF`+lPE2@vW4=<1x{ps zncWs&WW(O*rJy+p)m!dLH&&vRZjzp#0g`w#V!YHX-FyqYB>HwYXQdm-IxF2s)>-LB zvd&63l66+Pk*u@QjbxpbZY1lhbR$`3r5njQE8R%eS?NZy&Pq3u9b)49Tu;_o$!44Q zjglv;Ub4Ou5=^$Li23UjVs+qeu9bL3F6ME$MVcV%V4N;i0CXmtCf9Q3+9h%OP& zsk%KRy+ho?(mAj+35qK#-Mj~VAlb%qu~@wZ>y?h31X1iC0$t50u5?okjJFd6XfY;Q zuc>!_vJY3@6eT1N#VoLLlH^9cBRE-la^dHKli#!?Pg;(uvNEM)vE&9w&M!Hi2r~(>49p~dP;CbOKy`2-DEJR# z`Fao#WXd2v#KNaJ=K3z6g$3p%e}d~6u9dkd4ZP;bvik-Nb882jeLPvRPUf})g3FXD z?lOI4kWZ=@jHIJth^(O97q(H)!lip071_ATBD=*LS|vE?2y@tFg3FN_hs(5l$>rQ3 z(uyQELZ%f)=;Pp=qvE28sRxMRD!LWczCPO+)y1K!|SGT{eiB zhmDYuWNtt|i?LGvsw1N%a5+A96LhlpO%cCxyzMUN9^yAu{Pq;Ty~J;t_)QnTa$xQ) z=sw~%L;Rj5e*22w)5UK;@tbL!ZkwC$0Q35R2Mluyx>u5yKH{L4p-&{*Db|~moEx`K0*_ zoZi1uVBOaVEK~)IF>%Up^c!ED9M8Vnzlrv5uKqW0hIGt}SAOHy2`o?rzS@BQp!z@k zCfdKc^mw)Fp>~h2&W^n+7e{NuoR{!G`2pz5lQMXKVjvb%FyJv##$7%i5p#h!lkKS} z5b4mV7vTsZL$ZyDg|b|H1s5Cs0Gjc5yoZlRV=M}p*UCdBHiKbY3+L)_kmXu2w4uZ} zIJ&PD!y9tr#qxLG6+;g46GAXXT`vwb&z|D(AsD74Clld7=S2UQr97x$8U*t;bJVv8 z8?~8=nC>%N-Lx)&hGluoe|*Cnra1uIn7BS-XrBNg)0>R(_ECg zURmO<_d|H*fL*UFs_T_GU2h^PH{}&Pk~%*@G?z>_%SFdLN0g5ZEqbP8G4F&B^h{2@ zfAeU(22g`pZVm-=2Im9bjnDv6&V3Dto*W;0XS`iPxyso-Lauz(IJJj-2~9kKbUJ&x)mSQRDaxAo>TF#R2m< z$7tD`o_Cx-6_?U7dFm!)C(nEe3zNn@V;ROh;29hRJ{1OFk!q;m!Ly8KPbRZ6)rU>d!-Hol&z=hD-Bcke%ucq^i()2ukDKwiglS6V z7RjW&17e4vj^gI$ODWlX`dA3-ErnJ6+0vrZ+&-6c7?+jVGb8=K|sic}D}A*j|y+eflMCQL^v>S4u=N=SEk? zFngOr(=t-6wEk(hHmeuz_B{W=+OtV!YAUYYYC;uZbsH-UpPh7f7Mksbc#r56X;a-5 zX?r??LP4+S6=~CWMcQ;;k=83$r0t!dl-j4SIlO0S1{MTcSl|M=r)7X0Q{bAcFX*GS zWsBg#_w;^Bwtj9|aBB-|BBo(AP?JyCa)!FRE$o3I(@}kY67J>-4| zC%g(v`$BOAXenHLtGV53ja9ws!sA@eqRR1918^s@6BHIoI9st(G-44}2`+lb5Xv>l zu|PDTTi9f`eFddvdEaIlGh%bQjcU8i6~ zI#CNz+Z~w=Hq&nsW*Hj}8_b+k1eu1;CxQ^9bSL5xzD)=$O3dV69cbAxBG06g4M;J` z+D&IhZH(?K97Ri*{F4JMX5Fr$#f}CdZl(CAPOc!6zb43I?5X$;4Wf5ZjMyVYvv$NN zixb^V6zejLpsora*3=80Lty}j$=(iB`yhBNio)hmj?3D zvmM0FCwiNLIZBAAA{}iM#~GdGP(v?w`dZAmGcHA{n@zE4#E5)GN%C<$cDxvoHB{wl zr|K~xXHrrz#n?&yEZ+9OyD{h3Ys(x-^b`fttGoIcG5yxfF(MkV!icu~^ z^!F4@*MC8b{`GP4#df&+Dc>QA<1|SPHN_!{(WED-PjOE`teC2?RH=?`=8ZAB)@QyP zqicN}U9qMgBV8X;9LMzC)FQVyEwjO9dL}&G!2l=V{RT6B0&zHI`Z`rm=5c?yguAH( z7~+^5Px+wp%_5Rj#p#c%=uSt`5+)}(ik8JHiaB5(CIufmih@jf97WYOk;`0&$#w?{ zGP%)#s<#s9R)sH_9H+cWCA-Cyvu;;Wxg$=*K2m%W#n=Q)Kj&gTrk{5)IzC;Etm|%) z!B!#C&9Ngh_TX9FVM=s}E4D?wE6g zmvo-)=q{f`WSI-G?w`7lYo4UWQ_@6=;gYzR={6_ZGS+mj3&mO)GbZ>+noR=bex_aJ zt7A2-*3D#1Zmwmqxe}Joxje?qy?Qpp^wJiP-JB0L9pP+;9S6jWB)W|rqaaRc1u>b%2h9u3))<6=%$!9a)VPT0fi9NMw9mzI zm>%L{KBlu>ER*SBF6L!A-^FaE@23l6VW70t{pBYAjG7XL9VXckrm=?W%0&Y-oJwNt z0J&Nv#kzZu*GyvxliX-9#;|U76F{-LV}_j}q;s6pB5hu#xuszwWaaEzfMS)$jF%Tu z-L_K3BfVRYle`Qye!RRf1*J{cRqmeD6`Lre#sJ#!#%LwGq}yPma{I`v~KXp{BW>k<`ta zZI%IVX?3IEvR1bRAl(Fj^pfLT4|9RPr-IR8tm$V|Da2mXDj3hP>#3sbgm^M3By$GE zDD&^+W1Aw1O|0vy$~$(tbnFKddyGqby3-F(+OuCFv!6QRubd9K!Djji7xOZG$i*_5 z{+)~YnEt(s;`}a5yS<@IV-X56lzsCD>2C(2u?w)o0|+E*3C{rDJ^_J_WsGyy_ywq z`@vp%tcX1pXM4S6q~IP$(K1%V9R@}>R>VydXTUq16l6JyR^=1+$ zU&HmoUkV0b>j6W|sgIt2^c_(?~j79o^+u z5qXCTvF=ndHqJ4yi=_8ZjE`KHKI~{(#hSQ5U?7OKGUg`g$E1Kw!bdJlyUN$ZYKpm! zWKC|af2aIAseCtAIhU26*d=;d_~?YQadRUU)0ar)B8tTjK=cw9^Df<)Q(yNGodxC{eREIJ%cG z$xeo2mUVOW0gBZfa~PjTI@=xH<=cq7)`eL2yDp>~$qF8JM3yo6I6)qxC6hIAgTU2d ztd+}jk`Rv*`_0}432ar*+%G8yGRAAigQ=Qis~IjOPJj5K#Q6DkpnHdgUC5lhG{H% zDWSm4E@7 z%e%pmT77^>HUah#{KsBqo^|D3B$DkDa?Eh8<30W4v^Plsj(|*C17%CXfxh2lCW$~4 z)Ekk>7Tlom+9MGEXMs@+X9k-v6o4<5iWbK zrc^EkphRw4;wXw~G%m{(N$C83j+RACvU_0MXLGoMaZUwX)|rl?3MSp+7bU91XeU=C zlWwjGJ=ao_KF`Tj&K9!k<6M7?1~u|K%IHSnEP5$d5OA2{ecJb@{KY7Lzp3Zv&ky(0 zr+E6Ohy2;$Q}hwrM-*?N&zP>G_$lqPCjLCCfQAAgp} z_T5iz;ZHH|B745hzPrdiAK9VX*TVK`2Jk0}Tt3&IKk}3dYZ!*^4=ztrXYgl=obQ|3 z!{0D+y}2CS|E!nm^`H8mKZsmIem2NY3H56g=8quR-f!Ce{9!Im1i`>xO#a{Qm;Cjy zw8H(>?c>ii**^CB5%wGP^CGR^|GWD6TTj-%kM!^tn)=t73+d~$e^)<$D9ZZ3Ep4mBm!coh7n%FXPhaP+f4AOxdHm(*FR45pcUYe;&tHtPeP8EiJwJa= z$`eTS1+tB(6kCVE7{>1bs9Un)&W*pY@^Jk@O-#0D)chtWI(MNx4DdrC* z_420CrzbNh=C7BUi2rZp_t6IvKcbjFq}WgV6BK_yF@HBRj=mA7r;j7}BMaT0|84#E zkR9(*%-=`+jqKW;AuYOwV%@&~Hb0kZQ+Yip#!0Ri^zRuY>i+(>`So)7I|v_rQ;|(^ zEyZrhlKOA+^S2nfpZR-{BjooFDc0@M?fIY9x0$}<*h%qGiuoH5z5KnDemljFQOw_i z=<@tM$20VDn_v6d^xjREA4m8!iut8yeFFIw!rLk4SA$m(|80tIrC2ZTzs=vFy(lo~ zDWR8QAI1FmUoZc=l>Y{b`4z%%i2rZpBUJts6!Y`Q2Z-18e^dES;5^|myfBB(G(S!2 z1;4mG08AM%%)I*Mb)h_1^06(iyuGTip*k-JA+NEaD!5+$wufO6#Ju*l*1U$M>c;k( zP+mvTgusMxV;UQp+B?S7HMQqeHH6!uL?i=B^6ILqW97%?PRK1_b%r5!q=aP%3?sa; zCDfK%k2gbY;hKh~Fwk&s12n8p2{cSm1Emek5{88yfq-m6fuO2UgG{Y%Ubn8fNeZAc z$^=T+1;h0chv~sIe+|Cr`KMu?)^7h``=KihPm-A&7Qas>KbSn(I`b*Ja`IH`wA_c< z>MF-rz2{jims!2-3aipSYW1|kR=X$1eAj;6lb?bA{o=Pc!&96AN~~nh&^|($wZYD{ zyr+}l3j9=l@i zWV^D`>h+@48iweoj80jtmjQRmUSVAzY?@-V&9l;WTWv?D)mXheBcPP<@;z3s-5?K< zXN)O{Q&yWN*Tj??fEp(#l0nsgM@x*3mS_Xbq!!$eHpObKuzKANW!qDskRewTiP~GjG0!S1}pdz(UO}h;%)XTpIn)@=Z|}>znFHP!XvwnZJWc^F4L1`TH|k@YFzXf|=ldlw| z{A<%GaLH449eA(O8hV4wk(>PPe@7hR?Ef}l7yKIY*m=pqYCAXC9?VKy>fctE3<`v> zou9lr`Ca=N*h~eq4}7Nc(z2;Yb|gOqYs&#{uRzEeeAK#d_YCX8+sl^Om4^b>`L-B= ztbS9ThR&F8r9xkXo`1;dSz*;)W(};cswyh4wtP2Ofhl$K=UbWc)_CAT2{b2Hz^a5( z^Q;SwK4hiMv({rrvbsa#%v<}2on^1Yu6T_#cZxN!!kT+Kbi{nQ!NNJhiNIg>_-Yw2h0` z9NK%w(+}Tdmy~UVqa(bvrqX_6<YH1`RqeG#aDAYr8$H0Yy^Tlt0 zu|Cv_OCEo9A>tH_C*M3eKZXLdqH&u~v~egP z5{>4TZ~)eIt^oiSKn?}uGRL3^45|fvt>Hj8SY@<>g<}iB84wpi)Z7xhpgn}=-RAbN zs8w5Vy{r_hj2sN3CvoZKfN&n@t!Y>f>n=Cd`NU6D#e=x)GL+xmXq2O?TXBKrKx1fq zs4>u7TiX^2Qv^bx3uGe%tIuz52~-8!uqv3JMFORZ8=E(P4yaaRsHxeIu7^grFa&m^ zzm29)hp1gc6Z$y>8W(reG}JZ7inNA;HBvLSNFn)8Tx}Qukrnzv8}^D&QyBV49lA0M zD%k`mN2~}f`waTqz~!x>37TuLuyd#_1Sv{u3AaKuWCxIO0r7UJ zeO()5LS?c$30Jrd#ttR>Z8+4rj=OMc1N4H8s9LOEjk!g$iOk@OhT4sy)u3Hl;TovA zo-$%fqL-?h!mW)?)7G|zgzu#5q8dC9Y^n)huf$w!Ey3y#Y6`A10?;993S?9$qp>m? zC!_JuIvYe*X$dNk6m(TQBm(Q9KQ@Ng*+E>d8;+-SqMg8S=ota%&>`p&rHfl|F>c`{ z;b%N<5p6~Hz#)LEcZ*|R9DvY~aP9AaT;N;yQpyEu@W_BQz(t2JsvCo_UO3m6YgyMC zY^fJLw>pg78SI7wM7BX~usRH@g^K~jC|Nce-6;=FX=&^+fhDyShyvTdPt7oz$U{L? zW=?6@Y^+GIv86s}%w4$DH`6CBnW?z`7jWL}}8`js@shJa(v7 z;NBn%IWU?)+v3OrX)xTt$P<9v&@50udrONru5oMwpH#QE!jae5zOKoTzJ?ZoejA2i zEP!e!j6=KHo7&q#uo@}W4u@{h)s49`XHN3vEUjv93b*H#H8cfVo23KCOl%k6*b(GV zy0hZv3g(52470;)_V1Zu?}i%-d|pIvlZ`r(^+B9Z^c}cn#)9ouXHsce`A&}~*dxs@ zg@=3D052h#AU-5raD}Hcd0ATiE^BAf_HLfMw)k*XKq^NP75TqCzYh-batDYR_?jJM_Nuvny(}+ z6C`G&+4EDEXviFV9=R6&Nb`ZD)L)Y7`FY%gd8r+s7I&S)a3$GHWz5DhX2+Ca4K(BGD#1#` zDSSq1AgyRlj7?A;w#P9l`xF`g)?R`2+hsx7JJDa;v3{M&=(MYQ2p!-zr(QF$NUW?1 z&Pv60D5kr}mr3s~)T_6{g__s>@!J9Q?IwM9IX;?=?V$N+F1EwGw0$0HG&*TkOs!{O zyJG)2Li(^@8gtY3o2$}n?86@s{(Zzt(!AR}^U^XqEp$LbkF?C0Y2I0B_MFsn(=s8k z1Ug-A+s1Wx*yiG)DB^miT0@P&Ts%=4xizpWgOOVW!)UHRTbm^!W6WESTLftWmTUou zq9A61L`R^yE$m7IQ!s&rLsji{a5|_3*&0CytEyT<>!Xt4GB1jU6ID|kTryD(=7gbA z2|U;caWdFy_QxEe5Wo0`L+To{nYh!YX14b=x~;p7)WAO4rY2l=td>AAk6t(YkN zg)lwOcI5DR5e`Xu*nO=;_(cJJDuLzD`x}Fv`x(Osr}xP+6a4;@US~T15qepp0Y{zx zY5ob27ww{M2^57vGJcVHihUYi0K9G!inRPt3U-iTSbu!?t=E4VU|4=3{Hft3D*sz5 z2sG!%JQxT^NILt7`Kd) zG5_kaw?RTY`&*uoIrdXVv>$z@+y4k)x=zfpoCc?SWR#%G-VbT<%Fq9;%*6SzeC#87 z`DmuD6LVh9<@ZF+4Z7^#AW6qi`o0Tfo-ee4QJ2N@Z#?_glKtGyXg_X?q}zW2Fx1KQ z1X6^1I%NC~4jM|}@;Uwh(&FX6Ws}ULHNR6=&i^IlSBenivy@-QIUnPv0f3l3e)89E zxKXegxc-c#L*{t?>mdIXQGw_`eD}fm*{}HiQY%8LzDz~~DZk`m+d7`@D0_qkULU>a z#?#S!_|wbBF)eQSw6x%rnqxF`Ab0$La!JNJ*gP@8a#}Gu$%=0Yps^mtdUzB)e6NB2 zM7)Jmi~9|tEpY}Th9W%wqr8v$skrw5Y&iUxAiob{3^be>V}V9_UOq9v>|7AUbvneY z@Mp^1nh=gUKH*zcf$2Y%k*Y(2xA-dyE!C3S(r75wH~v=&mKcF!#6ey^drBEgT#3h% z$B`&DSaNfem;}p+|CZF^8Kp`NIc&xH;SwQ}8dC##n5M?G79R#or;kNW;HJc(I1xNO+Eh%hP#kR6jtGp9(o!jO}WcpA(*~fQ|=*>r*7-y`aR*g{Vxzsmz9qED}stWzFsBy(T=1f-XvT=F#!LVEp!tr`m4OxV* zRY9Of5MHC8O1E;?$6D%0pz_d>rlHA;8!QWuT6mOO@QB=0RKq> z{7%68z?p$p7UbtwxVd~h`yV6uee}Vac%BBednSSW3kmQe3Gg=);Qva1pGts#m;nDG z0q%k8nt1h1Nr3lEfO`|*eG}kkCcpw=B&nD9b;F$QlHF{-X_h4&jk z;?}bu0WU1z^_S^wYc>x7bF_eEdUG^A1DQ?@Ldt&Yzg)c`9>`&tNWr2 zVE6q$e!5HLCy{us|D9QF7Vyd(jBqoPN(GmY-! zbUi=o1xg`cw#D$rs(UI6g|_axYNu;R?Q< zaI{m^{|g1j_cE;K@dWs96nv>7UrM)TsDGJ)-=^TI{@*6R|Cj*pK_^vRe}RJIH7(o! ziGnXz@Oiy~fq;7O8jR%+5srSwdj!TmRqzoCzO)Z85b%z-68>1eop98z`sX^rQU6Fq z{xwAp-ix!IVHv1Pd$9NIpsDGt`&ropH&&w1&c+bLmY7@wJD)M6#`MVW7SHTYv zj()&<1lIqFg0EKajMIRDfc46QKbCJG9QCYG@a>9xzJh;;aNQ3-R`4Z?{DX>~0tNpq z;aF}!!T+Mj7b^HkMSiV<^NlXnYpjB2^aTb2>JP#n*EfrBlpm+y6BPL>1)rnHk5}+Y zMSg*THz@M>jET#=Sdp(*@STeM*$Tc_k*`tkpDFT13jTWq$4Bj4?%N8E_q>d!pAHNJ z^uuKMV?0m6rzrS23O-fAn-zSTf?uiNcu&pxf2QEY3jVx;mnith3O+-@&*%pX1hju9 z{IULt3O-B0D;0dUf^SstIST$=1)r8vOEH?yyY)_qnHz;_! zf~$HqDfmJ~9!L?ezWA4KN*>F@!1ye}Z3#PgJ>fky{QHE{>DrM$O!#S<`~WNnLZ*xy z`EtUkxg7i&!hM?jON3`@_}#?gH2?+_!@qlxfxyrG7=KX0&T~k{A0>Po#f<-ocpNh^ zF#c=F%FP88{At3ADQ5ZK5kE`A|3EyB2^d)ZMahbL4HbWx@N$Y-{;$Mi-@w55EV};2 zYbOkhUq|>V2|M^Rgs;_b?hiE@zMDD}9y=IV|0jeuO4z}-65gWWwSZzLYip%~cyOG!_egdMz+^eoo!&&mHm4ev{O@LYg_^}}XxB3vLN z2Y;6E?HXQ1PP$sdZz6g2H|xjepBQeGk)!`!vgbAppF;NkOvAZxc-&(Bt4N;5C&u3* zoW~)?XHdC3-Z0MFhdr;AJB;-3xWe*(B>adb4;w0q@TP{3CO@3g@SDk>pKG{$9|7$| z`MBJL#LM>{ZaaR9$~|3^KT7;y4d?g0xf=c~*)dhaJIKy54L?GDSgGMXNd7zxe~|Ev z8lFt{@6d1_3-EbA2KK{IlD|d6`S|2r&smp4U?`-5@59@wnu`4jnnmxe!1{P#5c7UF-b;a5?8@6+%- z)Zd=e@bP5la~l3B>G?>*KO{THQq1+rCI3&;@FwC*6W~iV{3!9&8vZ!xzeK}BWZzB= z{}$EvIt|Yw{uT}Y4e8mh;bm0r?=<`+^3R_&{A%L=q2WVF&qo@5J@Guwu|G4ZT~4EX zjE|*yu|CE-NG@NKpHKRKui@;U*ED=F$sg13cd5Sr((r9$=X)B?oPldmFtp@t76JC|s9C;5GahW8;oYc;$V>8aK5lVoS3hJQfE zORI*TL-LnucsuFeso~qnKi6tF-#`3N!$**wmo*&yhv7X9f0*q2Qo}csA5v3fKK4Jp zi^5Q#;U`FbnTB6M`s+2E$FZ=6^Eh^+hW8;o4{7*csNClXN0wYH?EJHa*9p`xzEJeg zBQ%kcL^o7i-|tho>4dX>zR&EZ;k>}xAVm-A=llG84d?6rsT%$P**QbO>5-mDS*+lw ze>(Yrzb{1l5x;@(I+ADmi^xgM8qU|NTQ&WaB>yc<9zIqP;VKO;Cj2%<58mG;6MjgO z=kFt*)o@-g>raXvtk=b4&l?*4XTsghWo3Wh1@=Bv_(1)qn-TRpg_~Z3))Ro$Jtk*T9=U)l*e4xlTkmp9PN3T^yDYdQ>4hFo?>cWzk;Kl&q>cBO^>s1oFXskMS5x# z9QE+Rlox1vcmcVMiahG!>&0yfj(Yffd4;Bj7l!+eB9D6by6qMPM?KF_`|<*e>}Osu z?tVoc^{gd7JfYyICyCAnhY4pryl~u0iahGsM|zGbIO-Wrdfw9X+(>r5ugIewzRv5G zij3QT+DK12;cO2t6xUCYM?J-)KTE;Up2tYf7zM|1_#oL|r0M7H_IN=&E|(XQ^DBB# z|7)cGTm?t{zo6r5rGlgUEE<2;DmcpXb^Lh>j`F)meuIX;NchDHj(T{!`j&#Df3}c+ zu2pcR2T(5nkCr6P-e|qV-o~q$3gwIiMwC4`ef3BvV7ecI5esONRk)2iW@ z_JKqQ8x&mFN#np41xG!nNWP13t}ic)c(o#rddf-9k2QQZ;k>^(`*~UhT4NZGX!?2K z!zVR8he^*X8qU|3M-?3HuOj_#Yx;R1!w(gCVLy#0y{O-zorv!v{B#9J{nwNJvlJZV zPm+9rf}{K&Nd9aEM|mF>1Yxd%qx=UXzfi%kKd+?giWP)&yYRfDDh=m-$<9;sp#C%I z!R5so{#|<6^(_s5pYSUc9PQ!z*6S4<^`DDB5cVoK%JcKtpC~wrUQhBbYWUv?=Uv&k zzP!NW2a3FCNAjml-@ltYd(esc#YeRe4N`FQLq46y3khfYdBMy{nmjK|K1ab(|LTG81K}JE zzm@Px1;=vtQMpwLj(Yw=^1LZD_uCA5kQ7$r(Ph7(@nH+$Y(LL?+@ayT8PIM;50*Qh z^#4%9f9-=r2zP1tkiin)ui={r|BHqnB>X+X*-l;v^fN^s{d1W7W7GMK{g6FGmfKsy zn+QKs!|x}2kb}XDT?#^Krquy|ezLQIH5BN0aB{VyuFr{z)Xy-=(7-)X&GoTtyyn?*IH< zI?Ho=g*16SF2Wkl$Hn&)9PMc#du~;5EH~Q&KM;PY;ge|Gdsf5u(0KKphQCkp$#fmc z_V*(^Q^WbaDleRlV${^ao~fFAK%j^2muvD|uNn>KdR?I5Trb|(p6%y) zeOr^~dVNIW654~eApCvUX;c{<&rg7tCBW5jL)CvLU5BE6Eb|7s9)3Cj{zd|v9utV? zv}`-5bLMKIe(E9!8*<)r>>3_Ekt$_X`EeTFLVSgW`>0=S(QtnLc9VwlbEk(joSzHz zM8hGVE%?XJD_S(1@3a1?;e35Niz>r<__~X~pJkk{2aam;JpO;C;XHoUHq` z6pS5PG;ZAZv4w>`UqOC;zVbU^!Z_f@O(-f7!fShMo?SM_W0K)eM-x`Xa5(@d9O0Lg zz!wXw7`}nbF#OxTT@rv$E}i{r+vQgopbhZ%erA;%vxh z`K>&Eq?ts!K+fM;WQ5`OiOiL&5A62u0x`+}i6`C^=D7BB&CMP)*N25m`xg7V0-2)* zi5w#iL|)SEFIiq1`F+WrPW{ft&6<=uEm-DiGTD*F7mdf_`4<} zF?+=Ov&^>a+1uXQ{4mtTo)tN=a&^h7StE{>tS(to5;)+p$|{W< zEK6Vb$%5(+%Oa=B%=blw$|4`?tjIrRjW_{* zm=*aKH|e%lHXp{i7VO8WQa#fLZ4uqX(ep0r`8DV{xuE)sSt9`YWP$masN<~22a3L@ zPTU!7uRpRX`-nf%n0*Y|tSnNKeX}c(QdEc--H$3i?x5 zW45=ft0p_M3@9HMm~+7GKcdXY+a-}F1?Ati-yeB0yxiZFUvLQO2uFj!p%2V5*Jb<7 z+0fdPrD)e|==^VE7w(!3J$WYj$qO+^%+7=u`q6A3#6BT@yb)%+mOPB}UXKUi2b@w3 zCoef9*y50lcif`yMDUn4#vWKK8YB5`#$!uPzCrWI7m!v`H(c1%V~gQ53B|2lYv5Os zS0LHVPPRKC_Q;$fC8=Nx3nh)4jEPAC_t-KS5To1kGvHSg`ciVbxgE?GW+i*g<(MOj z*uLf^g0*Gp>BM>^+mF~x$z~Gklk6G9=1BHTV)G^2pV%VF4j{HzvIB|rOLh>k<&yOg zTOrvY<`ZDQCu^-_v(2XkTQAvRRHGKjjwCiL+0kZ5RIo#``6iy^tgJ1vm68k0Qo&zF ze4%+5bX!@S#7{7f2!03g(@i`nT3Ne^_nQ|9{yO4IiQh;3JmPO7em?Pc5npEBDe~V> z{6b;9m9?Mva`O#QK76X#9R!W!U*g4%k(vA;x;L)^pCIkrsOFI(GdB-{Aa zRx<1b0k_-Oqp)7RW}q@av405k14d!13E3~H>n7Vh;O-(#l%A7vRwFQ?gp`3uLVuFn zAj!$nQ;74X<66qhWlBlkx1nTDmM@CS23x)bxai0!gHu7ZR~&7g0_iyOZh*vPoTmUi zPh^sdqCXA!C6qZV?veT`2xrt9<}f5gNVf4)PF(H`PR#suv`oTZ&jvdKEb0q+axss& z)R3QCn`fAg4p&@IOCSSY%Nynyc!*-ig#7(c-m|B|I71c&J7mbjs9z{>D-}2{y1LU1KY?S;r#q!obAz*qUHj}} z1nJM|%np{Q`zw7rgRL1*TWFXwSr^<4qojQ^9{r{%nOh{&6OX9hL+Rph|58eJpZ;e+ zOf%~-h7v-+A?IW%Wr zH*f|#xK~O8^*$89ParI8`iLc+YhKY>X!kILHU{{kPJ;b7Tn;K9Nqu_VVpMREf#0 zBot>qLDzKMGx3)2M!(b@_uKR`o zyAIR1<{M#Nrg@h;kjrE`)s^!xo$g{eOlPKc0(ZIIR`(p(La!W(}KX--k)OuE&G8A91Go=gqPKQrm(im`b#lp|dfeR059 zgdxh0k4Cou#XJCBPCO5UJo+hF1?i*q;4aNaH+NoL{zK5~F}lO=|1bAG6>liS-lwqW zU_(>gSlE~pYWU4ILKRBH{-?@Dr|SNv@YE94tBkkl=`b^6vTtf$=d^)$zMnDmg{@Y7 zcMMxP(Nwfr1clIx6RL6Ke=p0>D1Dx z%|O7mpGh8TO)czXIb_O@fUKMXWX=?zDv%mg0XeJzpbB&DooY24wJ+On$K<^;t&LM= z+*xL|+hLHMdppQZoN{9c(2s4#j8jp?Or-W36?a;Gdy2i+O0TtArWD}bhHaiyS{ayb=55!jn<}` z4g)v*5|XVbz>4HfYR*=EXsWZX8Sf7#x8KA4!(e|c-fs^dO3U5HoNdhluv{cmkX6@( znqdF8YPp+S)aF`Zw>xduwGC*ax+~cRv1eFwIM}FdGRFGBPFz8=&?&Gr1RMKB?GWag z8?{TAv-MyUiglM;8XE5Qjmo}XkgRNs7qtzTv*jM|35Jg{KgMWx_eXY(aE!BGA?C_LX~0y4ygCqg-xXS*2`{D7P+*+EWd@ z<7|c|dmrqO=4?+W98`sSD+XX2#-^wZ=0J_JDJ1UH=X7UxBf)^!PL6BG9SfCy^?sI7 zn`Qh5J2k3Hv$o2B%URZwI3k!DD+6-G^$^EZpz*8m6e=*6zvoI0x_5W_7#is@!-svfa z(%>~N{M}Az&tVMvj$P>y`+32xX|%7}T-;Y}mfTmZ*t1gI%?l)XUo}zoN2E*C4QSNg zlTMyL#I$(&p%$cnPFnFrpnhh|W??wj#s}FeNY^3MwP1TvXSap0Z=GkSb)Imc@gMF1 zCb!m#w^tW!y4C#u&Nf}>8R08*6+CZ?3dO|f7eLr=)X*OoetxFn-Vu`9LhXS497*g; z7_hHl7zTfc(={GKBJdn*<~i2O!V5Rl`Jd*W0C~woE<(gyejOhil&Z@X0Iu7FqPs`R z40quNIS{b^`210?{|vx%od6j;C+#gQQDepNu49dc2fHT>!f$^Am>m|Q-`-vzOF`PUOQCgIZPG9r|URPKrbKrWW4h8b7cNM$;kQD%Xbnq0_FZU_gcc@ z;_aOzac$5-5JJ4YjUnEVkfxmcqRwTe{65#6qNB#RD#=tFfA<&2)7AVp( z>>&Ik@#2~bXne^M&z_q}{xG?S{qqaL`2hbR@ED$gKP;CY)*KQj{Lu9|Um1(r!uUHE zpa|}+&7$&Vi8*=0037d1;E*B%?^)p9ZgNI>|HvF)nTtCTgYG^#QQq1z$D-mQoJ$PzjoY($A z9Qz{Uej2wB$7?Lcc?~38{<;M6CJk4wvx8a4L^S2*z)tdSY8(VEh7-r_(O-f5M z1mUO$|2X6m!TOidadoza&nJ7PX*jR-H(SHkkbIejUq<>DYxo@EgBt!W@wFPhkMv)l z;XE#E*KmGk(xu_g5dR$w$Gwd({76QQ|DPxRCmPPj+s`z-ocISd9FIK=2W8~wznu6N zHT)FW^SXvVM*Mpkogj1LnME_hI@(UagP14jP%^A$qywxA8YvE$Zvdc%X+RL`JSYYaTd?i z@L8mn-=VPlk0`@9O@1EfFW2yIll&SDpGfj;8qW5pYg*!Y0q?gk?9t>uld!>SkFlM+ z#^tS={9xjFPaKx#w|);%I+{l=5G5SY@F7$#ul0y}_}UJW{;ZUXco;zl#}ypw#oq~> z)b#Uth}X3@QJ|v=N$6SU+!K^V(J~DmeOK2>f9k5wY+>UQ6IEr?|8)FFSTB+DB#Rx*M$X@Oz zlSzKKf}{RwYWG6Ixn21FaFT}e_45ox58879>0hkjyhdS#f@8VUslBQc9QB+@ovTj4 zQT}@P!*GFuqkJ{VuP2=C=kwnt4QKoJXnKB1diHAgtAyX8;AqbqG;aJt!*8T|9oF!F zlKi_GK9TTlSQ!Z1uf~#|ej3i@W@|W?tFASQc5=BhHF+*~sfKg8WTvo(x}LDlD}LSk zDPrk!^jO?S0$5F|sz8c0JfHX_8eUHP77gD|{52YWnE1Oi{3P*wy}(*+y2M_|H0Wv8tFT(f?t2+waBj@LpP8>`i|cq+!fBwpIvaM;LDQ8OAnyi9>gwN z8flku{?3oSOyBwrN=9ZIk-rtZC9?awt`SDn_{W|mtc)B>-}bT4_kEZ~hk9?%E{C|R z>!xgcnO6q%>BPz@ktzL%l~W>9GKuwp%R%`W#L6j=DQ6NZ zr$naoCst00Oc_9IvCKP=SUDv!We~A)N@R+USUDv!Wr&Fn<~&(zW!`Laj9}%I$du?Q zktxwrB2z}2w~7kNDUm7Kl*klqN@Pl*iRU0^N@U6ebEe>FN@U7(6W={KQzBFR=2L>F zDUm6q#M6|>lzGI{l*p9%#M6|>lroq@g8FDmWQsN=GNs%s73K4k$P}6qnergI1kbTX z%0tpS#62vXLz5DfDUm0k4cZ?0`J`{6%Xm(`xQF!+VJxdtby%4AEda}Hdn}knTJXvyfWcOmp4UlPm$;r8r z-4~7(`Ep=tBx*;Uz0u`h9u|yG!3`7UYl2kT7XWxoEC@3RvEGh}dFtI}iI9>K|~^eAo-oUBTZ zl8XcLphv(^@2V9#-6w)nW9+5eM&{M9=UT>6zxh-M|Vla}bj36w@cG zBb{On#zukm1?S@3Q5xRD3lEz^P+x`^n?3U2v`oBVISn!xo{`uM9#~-Q*|({GsI}EF$FT5#+8W}_#RK3wLNga_wD#=2q(6QNXy&mRarb8CpHCJ^ ztp!uS1Z&U!O#^Si3M#=IgEJHdJ%OMeExi=d_q$ByeVpk9mcg1_QCENrWu?O}!ZhAec5Om|G;%6U)4Z z3;NO!i9M(P3J}vwyBVUMAA!V6KxAXjgf}Tdq}PDgrN}{uBr@?siC`w_vTW>d-7U<9 zL5Rh*LZtMZj%Oq)RjM2?Pa;Yot6Z7?2c~M`G{y7`Q%nRE^E*N5Vmf*Z%JG%WiVICr*0gsh2Rr6pp)SRqg~$*dvUU;Y>?);w22V z{iA1GsuM6F^(=QbCFUJ?mRXRo2xe+lq*jWm!F0@m3>;r!VV;5v6d8;nSU8HnLk`s{ zVUw8sndR!0vovF;XATto2L>gW1;I4mvcb%klOATEdx{{YOA!4W#X^u2#Y8I!f%y^- z6Upx&U>eKk1hFcBVl)sim13A2!Q_1ow2T#{kWDbx2Jdb#EO#N^$@5khk}|Qscrl9s zCV4UWzC-|8&BeKPucpM9$aTP?m^1=hkqTYpbh4By1NEvUh${ooy#)O(alLLP%@0uw zpJ1?po19$bdhy!`xQSxR*t7oG$r=Xd zx|k5C8I!J}#j%POI~s^MLVh^v_+#nUi|_*!M{+b!9>KwYs)W}`s{#pfG67R5=K8H7 z9nNHKm@sZkV?$GW$C$dN_Pn-@ZAM;uTWelJQ*~o| zO-M5EEqY#Eb#<)xxZDZ31&%Cy2?LLI#H5zm>ZWjGp`6o#cg{dr@n^TdQ4P&N0?cz^AY)^59bn)X(gm%;GhRUO-<$C=(zKtlD`8eik1)(CY0sUCqzyAy zmL+-elgyD@lPv2;7S3cjdht;!{j!zzSqmy}wtVyQ#;mX&-RzlVwja!E_YBK;24gGZ zs6DlPryz&feeA5$Jl&w#+QNa>n$UXq!oIz!y)9H@$ax#vk_w0i(XyttP_@zA z5{79sF!zF|uHf{I#$cW39il|+CNOP9R5>6lF&e_5b2ttZfsvC8b{Q^ z5L08|x)|nC7%jopP*Yf1D+_1u%lQy6p#i!#N~-f_oarHQ{t0H8Fb;||5a3c++iUPs0gP>roQ>`&Un=!Cu=|DEcjT*SOPZnph5@asqe|LCQCnoI@uyaZe1iK1U}TumL0^F1W-zlXKHfdT^qN=dUo+WES48WByqr z2PXwLhkQd7@gg-TK`O{Po zXsV7A7ZaxEuP6KI(|bn?*Pr#^rDeSO@1y+rPEJYqG#;1x(iokWna}%^Ak4TB61p zTN32Y=!II~ensmTdj8!Yqhpw_i8?y_4>1h7Y!_hh>VIUc5O?OXV13afz5aUv({*Cb z8>swZWR#%G-VJFwhT?yv{QM0KtI%cdfP{GVd&kKf+)fyyO5OfP0Yja-pKj~}AcPk* z_MH@8v#3Kpc8>(B6O zKxkDINjc;{_6zzC-xhOz_G@pzv@R<0^Q1m}*{cTK{&=>ddw8AK9xxFJDblX_Wi_ZqAN=Hk0)>m9Gi8UC?Gr!PPoga=lI!67)Bp%R_^a zrYYXs927}B$A=E87(IAZ6dNqjd{Pn*#|xr(`1uKNe0mg5en$fQ$^`g6z_GqZsLI`d z$8ab7#nXRJ0-T?a#JK~`Et{EdzzzFVOZ}mIyt^r8=kO89V z#^yGh;}3VRaJvQ9s&H2ecgXOx0Ioa%Y!)j|z|957h>K3RSvo&Z8*FIQo+7N14-+6G zJe~=*H^NP;bDNH}H;l7oB*s-7b9n9xkEb|h;uy&IMv_My$128eRB(JR!ub6Pj(wVO zliC6G;Qa*S{B1qrXDN6N$>aEsM;FWUoCA~}sNm-&(BGios(zmHiTd$qVg0rw*8>W!mdn@OST2qZT<-4`c|1ih&evIJ&tL@yQUuI~eS4y0o%6{5;qFV| zqbRcfyQgzZNXP^dAS%KD0RlouLckzIGLXOo0t5(06on8Hh=fCua41S(2rwHW;O%+@ zcXd}+SJ+(_5w8S9z%$^*>aNBc!~;bUFYb>rsnu#m>`~8pKzdlLVt8c%0_3Bl1 z^)Xei5T{#(IKv|d{Ny2je z0d>Z}IKQ{_ldzCOkD>xewc)4_`$gk^%jFKBn=~|4W2#l(30kNOEpeaMt^71^)x- z^MHciOmhCF;5-K$pARvxJ}Zd-1qqw@!(<=(nj~zOouvP9h5t3;|3bmp@5T2DKAHF< zs2;2j_rLZE-k0***D#?z{A&U4%fWI|h@aQ$F#cP@d2I&c4Wti#)5pL#*OPzHV*C@b z8~-rG_-{x~wIXM;6sxUQ@N$yF;|$B$L;Sx}_@5#9e^KysYL`X@{}ajQafaoOB>C?s z{4IpDZwBVyL~?#o_-hE~wRX(^BH`zgzKpZaf_@6VljQQ8UFQFR;JgN? zT*2{q1j8x?=efgv1wTdUI~4o}N(#W zKBa$FaGpcWYhl@*yuamnR6gVTsoePr&XY7M6#Ok|PSfcg%ejQ~*r4$9IK|@=^W)@Q z3_Ol9zKrmliX488d|JVIu08iVmUEcoyru9PgtsdA-GpC4_GUTVsb0AXo=xe=3eMy2 zYz6O2auzB00ci&9S_S9w{0iQi^uA5O*-7913ci}k{hNYQv09UY)9b4Cih|E4`}|A6 zoutnR1%HzG?Q4B-+&)bON74g2+xZ336P$F5z&Kwgy%c;F$w^c2@l@_e1;=M!3}p(= zYwM~Md;-;Hor3do$z2ML)44G`py1zwqui)(O_EiPv@yNc02JOku6JII( zUy(lH^dQLgTtwxfM|cd#My40(L84eG(M>{cJeu)0N5{Y{QX%uHc5XQZ^j< zeN^};8;<-B5&u{lj{IB5o|A1j^0Q0f={6ksxgF=&aOCH;L8Uev`MG_U*l^_EK=rD! z;mH3Q=~HjRk)M4a>{4)E`}KqkM>+kdzwNi-D2Km)KX1d4|9R5qUxafz4u^9XKClp6b)RM&;pK*3qhOBI~;lvCxc z=V8{9x{r8H#&4D!_!|qiBjfC2LdD(0fZc<-h(Npw&i$c$(fsPF@`_4cmt^i2*T$Np z!D*>OhPpBQ`ZY<3TsY{EE%eBSZx`pmesQP0IC&Em>Kqs=?B!aI-#xqsgf+Ye#z=72 zs2G2fuf=FQ?(p~zdh260dVDRBIm7kUu^wNep5xaKgl#}Eu3e*I|2-#~3^?QdJtrCv zI6DeXZ+*f>(7^XzYfcI zoDlVD%ZX1sg^zy<%blkAU#Cs-+`h9Dl^(ES0_p25ISu+Q&#zBv_PBQCBt<{qtWJ9% ztm+a-RVBsjKGWK|#=p1ehwj;pUpRapNBW-AzdJkZ*y{GK9p9!M@;w*Xbk^`+4BET> z2XPCzeX#!=>Ywj_AM_W>!w!L<`_n@AW4iB*?%IGqN9+b2*VI>~wAPJC^6!21ER-Si z2Jr{hJOY^#(hj+HeCHEc{DVb)*M-l&5xxxdo6d|`b>a;wlB*4V{B-k(jie;)RnYs;y#uy$?77iow52mK3U&@93z zVqZqEXns=Es~;bCKmo8;&P)$b(z626Ehp*%`=4hTw5P{^SZPvEAza>K9D^9YiE7iP zK7k#p~G$XS09n_mF2DiEgv9c=(K#5c7^ zT5db{b48O2>W_(_Znd<#?}|MYxRHXdG!Zq8Bbk) zY8Y%~xx(o`=K1c2VNGkM4$?1XpF@0Y+^J&RvqsM=0tM6=_fA8|B-Pl&RhH`vK%y0Ac z!>#YpK8*e*4~&fO>rLMqp2Oe6(CqQOXLy=goSuFMAIA?#P^Clu!%gow`yI~lKM!Z( zn%;NnhjXCdn2lZ-bi7&kpj>@xSz06L2hu$LM&J7&<9mmv=}fr)Fi4CXTOZcA2gQx8 zk2wTF;M98#*N*2;JVbgxCaDPIK}~W%4rl`9=Jadw?8dCQt{n$G{${CM^YO({BT*g< zr@#yqs82W|IkCj1?;}K6kSV7=>=wwcVVTD-hHPL5R1-Bl-WSDK`#*Z?#Yl_$N7kP9 z7vh$r`8Z&PC0(CX+j_mbeq#+ts=pPFUe}Ih*u`}14|rX!2p2m^((+S}|D^x>v_`R7 zl!q$O1}FXzc)j6nmB;e^RY@m3{+D1UQC#EOjN|`N9Q<4I{i~DCq#XfuylIE>{HWhrKV;4t;kt&wteaMZUi^ zM}HqiogRDr@pV(f%*52Nx~Wbp<*b_;W2ItX^Gj3g$~=$$Y+i}npwn9m>x`dstzRz` z_!P?U`kO>C7Jrc!_Dro4&)RSg%!dD_)7jCE>V8}O&3LbZtuZT-+<32o8&*Y9YCa5r znfb6IY&ICxi~TmQZjICb1vZF~3RkZ41mds-DsCogfsgF@23qvQA9{*o#``=a#%&k3iee#5oGx;T_^GlA)>)-zlZ0-sBl8TaG1J-=~ zgva-pUj1>XO+`_EsL5)+^;-Q4_E#-w^i0q5pY}}4gBCA@b=k1XDy-8^$i_W#Vb@a8 z0dt^MU~}ku`Sm04?l~52p03&~xYQnSxN7%qXqOnW=6vG$N_eG;7TmLOx{j2O85 z;NfD}tFHXF-~t_XaP>!^PaLQdlXgVtpHr8gGzWTr{b+c`SPgfxw_$%-xV*o63oM*) zBG%H^3u6}yba%u0?81L(p1O>C^6EzXQwZ_@BY)VB^^0lj)M939n5;TTq3e~xkzU^ceK&siI&o)RXWy|f9H9Lm;6T`k zTV0O<;sC@^CLqW0YoLokS^o{8puD82dReI(XH&X+SFh|{?Jlo`b=}L0E6V4!)AA;a zomQBa&%el=LxF9q*?tp#V3O|?PQ2gX(A{?UFRj@==RIcAaXJb%p(eMRm1O290RH{X zv$&Cl6Z8HL-Ffyc(BIK(j;unG*bUavOD?mH2wY|z5xC4c;+%J$#n0g8GV6$;`e~8= z-?#JZv(PH$GV2IsnRP^g{*x&G*`S?g(Ioi!L5p}oT8C0kw!jHq-5gBb={5 zju;;tuwLdeYwRBaje%=ipt#H$-{@nJSKWm6A~@lSOO15j282)|vNz`BCAg6n{ZXXk z65Po2zloGwmmC?e#5yuyiFIVa66?r`?~8oNS_d7aqs)%if;ylY795WxEU|tZ=-5BQ zp@WVEVJ5-W5i`ld4B+gD2gr)Q1Bi@1F5#4%AE z&lAV<#qk1h>?)2Iieoo%>@JROaqJZ*lA+j(x>3SseR`V}EhHNE`=< z<3Mpt5ywH|m@1BG;+QUugT*mJ9EXVGP;tCi95cmnm^fY{j>E-qgg9o24{=;#%r#b7mFgMV=y8&q~-2_Wr|Gf{uB zGklT~x%8Ki1Px{CWxPbVZ2c9y*5u0huD}(0j4vF$`CSm!Mcf=66KG3l+(TBp`Z^|H zJ|a;dkvPzCCf-N-Rx^{>M_O{G;V)H0icE6mkN&Q%e**mH&%?Fr?;Tc%U&Lezj&7v%-fM{&RY2Yd=W0M=vCSf!8>+hZY14T?7x;=Q zi%&TP7Q;YERzOL*kws5sU3-dT8j5jj%a*BhnJVa3sp*4Rj244bU*MxIMXF`BsoHC% zYFTJA3{sb@Kuxo_2(;TsPPma@&koen6QJiP(i5&NFghq}?vL$8M4!sCOgqkMQ`raM zvXE^$3rT&NRCQLMsxiDEgxP;iuNVoa+#9Uhfwb%{{P@i}$qylhW`y&*av_jKg;~$!mpnhgT+Wa*x zkCNhU4|%1r-sk~!c5Ex)vUapt)ZFNTq>yljeCaH7l*e{;X_a_`93&MU8!C&xe}yYdmdqgt*(1Y1ZI#hG>^8>9e~E|BQ1f02kygMA8*^UBvH zg2nz%aTd}CRE@KH4C!Eb3<0mL=-nfpJ%%K}dTzPNyl}wLDH)u5bOj4_wlilur`TLv^;{qv}HSwTL?WL&eI0*@R(pfZ+Yn$R$a31bR(LW>+Qs z0$r8#M;wLywilHvLIF<#9qHFh`o+OUt`kJXjZVGS*k|YP_f(1;-?4any%)0lej-L zb4^iMSb3fUgqCIc3}pi>j_DsQEYYOl{)Ykh+zz67E~sb~PF!VUWO|{6B{IFp!s3`- zYGF>MuQz1Dq7Y83ArQ4;y2ip1nOVO_$cd^mr3XZ(#Zw6C2#XG#BmAG8&k^#pFwEVETR&OKV{I?0cLBl*$Gxf-$o*LP^@cH4im{!r~&Fg3iqcN zpb12lS&%CGk0j`6Q+DC|MDlcNaE#TH1dK8T6<$eXr3nQ!YcriXLNSg3Odq$fIHrHF zutcVRv@kc*3*e&^29TG`bh(AOnO*M zVR1}vu`u&nimZjEv7P#hkGy#2C>%&+fdw%)$DAwEWSPt)7p7}P%*`?9`oPRJg~?J= z#cFLa(L5y>IunyD+@V#oP%~adQh!4+UdT+}X<}&&Oh0U5=?zRjWnzOHm}V96Vdf%I zZ8XKY=^xBggR^msLJWdz2R3xT<;oyizm4ni3~9=HGw9l7rV2!`;$j^eU|>g;Wh>R= zCbK?;O!5R-L#uKI4LF>yf%2iPRoVZfbEiz%GkH?72cCm5=-SLxL|Q)fXYM5E?-rM2 zw~il?%vh79Xatd#>>{39Y{@PPmL1efKO@;^OueU!43a&C=QCTfr`$(emfk`3ZYGwu zDaKKWX&1cXVgM|a={O5>GM#Q=sWOLkWcks=1GjF@*2jXFWUr|qI!3UdLKf7^6jaEh zC1|Fli=s%@OBphiqcMiehXA zrsvTR36Dn28YkqBr=o3~Oy6N=vs zJ{<2M=s}7B`j$!43I)B1>~BF#vJP+=u?qY}5TNTQL!FgTRf^l%ZLu(E$-a_hTOBi~ zXKW_{2PwvDi0LHwYL7v@UT~r}fygLNTSpf5fvHu{`)e>uA#*!OvaYqMC9{H&tWqTv zEO-iYTY`i7b8xPi!MTF2=HOgGx1ZO^1S}1nqnP~Ow9YIh*<**HtzOf>2}|vu>mXSA zWR`B_3K~0tb4?4*6?CPhQnRGn8lLHkEi8`d5f+xnw8z5SOy^oyGSd?*ES2fW7M97h z^t&&5W{buN{8SJt}hmpZ)!A|Nwylih6f93 zv$NEgf~GLZW(60;!GeM=OxEb{rl6TjTDINx@EW^akq*vR6e8cwpnPRi&I@LFvzZ)e zwk7<6$%%&vgnNB(ZGr}jYf0*6it$1F_eB5EEU|#eH*9PM6_jWe7&P>SlD?fp95kf| z4F|!cZPPv^_8-h_MNw367RB&Pr!mde2=SKqG)ZVOB^5Af37^@Wgr=CaD`3)+9rOq} z02*3;VFGogOn#e92hGrM?4TLy z2rh)ASLUVVE9aF~mavQFdBTG;Ftq8I88VbDLgC^YbQJY3u<(U?CveN0F#>+I%l{B5 z^v68;L+78DUv2)+zwABd{2Bb`oYF9STV+<>ph@$cS2*kcJiG|zx*E_)?(n z0y>lFoj{}PL3kLChlk807H7=ZK5|h1Y-8mckkBI>sU0JX7-!W`W90}ae+8Bwg>_ny zg4EZb8YC9aghU4i{Kx`%it*s={q)+bZx+nU$HXE$IC45Q8rRJH-DQw49>BwVJcx=8 zL`sxigVbd=j-OFvtQu!Tt%DMs)qv>{Z$zB9!no?;`B|k#rxC`&GNaSD35muv_hcB| zs*JfQ#(61M8pY#`n6C$AU6M6CE3bN+(H>4XXBs`$8Kq^zFCCtjKQJ$UM&9`GSw_s( ztgK7M1K0e92BWGf>ykm^FPWd0m6yLZ-&nrRIG{PJ;wvW%cwUrTCXT1@IPjL~&IV(e zbDSfobN`9`ubO++$Ih$zkAk+ysBvT@9R2g~tOd>u&JB)amviY8B}R`o9Le#+vzCL6 zUb)_hCi|QIM%J)}j+8EghC2u46;(Fmzkq_Fst`Gx@!~jq)dxjJ`3U2@gUpXxem7 zMtW)i_V9G@j~9UuJ*iEN9f%DKPh(Q!}Se7(IJJLGIY}*?Bpm3&AO~ z(1%Y?E1F)EkuF@Efr_(XAOQbjl_kr{msTxVR%y8yXZ|9{fc)q&xfC3zuc`zuWZ=`R z1bkLkq?@IJ4nu|vfi^H5kh6g49#28u>?RaBU( zRV}G1u8^LZS=`tuo}$bEr_PItSI&m2fL=?%nfRimmBRP=;B@evOf{5!2RyFN#eo(5 zEYB-lTD4&IBJjLlnI=qa`h7=V!MK>A(o_ffu^ z4MnEnrLshNu}6p8Fk6#7cjqmdKMj{+n|b8bfZZuA1ZK6r#b@=ziPO_825dJ`Z!|76 zO`vMn2Qon|yQ*nv1!fw0jO<=mMd3qzZgC}g&xhNj$uzA9`gT!98nmczko zQp$X|l30i)z0@y4pX02X=yEs&Vs#f4FI!l;OpvDcc;RE)#*Mvd7?jOk{{v2e98OQ1 zG%;6OJXc&NOBRC*Y^$YZH_xzm(LkBD`p6D1#}rUY4o;#OtgejC;khhqQ+XLPQUrU6 zdIHX8WME$eY2x}5!fcmwfO6u(LHoiy;@P79;Ljf}cTtTTa|qKGl`g{V8BmNlB$#DN z!=_u66qgw`9OwZ#OO~z@8$OsBu;a{pJtuE|59?>Jx zhQbABd5@e8H&v5KXo=$t7{D_fZc}3xRoSd*skvn7s@d`$%nDIft7qb!%HH8&tAzzi zmQ}%WFvTixy9T3(Zeu^^0c%^8DuEJBHRUyI8zJQ73xKI%aRqvY$KGLHT6Rt03K7N- zTS4%BUv9;L`vKt1ZD|GG4#X}QIOO7I}glg#lDYRw!UJ4{8(O%M948 zf(1}-5ylkzpz;Y1lw}r!TzIJm8p0D$>q>1waV0gCeIo?11B2Y=gJq-EIP97_i?PVs zsiP7fw7^g4vJ#<}wV#P;bkXyE`I5EiD(@20!Of~|V+!msp~f?D>*GB;a2pfc0!3WX zbl66xo;V5~J}SYU;;{^#!z!Q_rXYEjgnq>xly+#r=bC`+Qdk^x z4lzgz`-rY>Zs8)H24Fi8d8fo@l+tVwijCXs7!#Yg!5AIu_Jxg&&32Tw zi*=8VP4vXZjf!=Sjy7U-06YwgiOz;>x5GaMvEehwsCUeWP26luj&*Mc^Ta0m!i`0g z3r-3#(}WC2jfsU1GpPSRg#=9-LUXecA$^jtxfqX+O|1gOJvdJulI#bw2>B=6VAO|Q z5nHguu{nH0gfG(ZgV;_3`7%geEzsHoJb8I+_7(?b*c|Sdg~e<6@IQ^+I#vQm*hb@Wwc>MprafcgBh|NGBtALUrn_~6r9rho4xBwFLq0J6!&GcoH zeSe(~XR#dqHi&%=Lm&7@oId&?B*F;Ux|}p)wJiMVh%*1v{6irxmT!I>0vZFCpCgmz zQ7u0W&ZrnNpP?VwZb#t|u>SagP_6%^fFVmd{M$nf)xWzP1e)`cSZxAeq4GCSe*U<~ zVmKei#gt#QUnAw`agFo4nV=Yd1q)UGt+ZT%^JD!{7uKKKzY;Lk1xPcTr1Ia!6$7@Q z@-BvRp~@G_jp5usvO`F(-bIMrd zy}OP4zr#iL5ZHb)6Gy5q4HY%G1J|GPe+fh=`>iDV9VJGzA9h8~ z&vxwqn9@WdN8(r!X=i0*9u;+j?Nr^7IdPKAvXX@3eWDZmtL5XE5UTvGG{5Uor9dSq z3kh*VzW;lBhS0ndn_e+Mljj71+WV_vTE&(D$aCK_1eP3y2!^H%qQukoo*~#Pf`cKh zz)*NXFbIetm#hb!Gvp5C0XX&#xvNwFEE1vi9&y7N``#e@EIyp@0_rH+A&p@&{Kp9@ z@G!p({CdDqK2QG^&+LHRN;uCm70=;-{h4t7)sUa9pJje}z!J~bfZ=r+N*^3guw0&s zC7!tf`=Sm0Gi~5_VWOPvbivgE9|rWz8>-w3h@XF|7tiLv->(gR^TiEzVpZPZ#2zER z@ZxNq3ivu0dixRJ4fXZj6rp^k48+Zk5^a3bH@R(}rT~K%NA+V1po`>Z7of_Pm6loz z`1OW9LeO_LODulafmEn{P0GQp7;yZSbJPl=t$J_9}gkv!m+VC|t9N&{!4zCtQ{_|`&E{ny0INqa} z|Evw~Zo@C6{;cv3BwVd;rHvoQ7?!`uhP!R}*EYPT4KGB&5LEepB^>qX4F4?uI~(4^ zhIgW0^Hu)oHr&n+Sw%qmg0=Q<)z#fV8B_D51~7i@lP3+`up2WA}K^Dy9; zfPwLQWKvvHNMgBYBM#V?Ffh*V^Zg_&6eMsj!}6w7&yuK!|%|0}}F6#PPxbG3qJk+C-@IIr=jQ}7&Wcf8MIV11@j zx%W!g#K)1bA6D=Zs_)|pelPJiD)_Uc|9%DkgdUEY6+D8*mwzcZ@AdMTf_JBS{ixuN zQ@z?@2Z6x#?M(xW^mt?8JkBI5{P&PP7b|!yrN=0E0ksSJ*5-0=lxk@66#nl?|4Iet zm22x1d==Swn}XL;db@(ZN%r5N;H%00!gH|AK3@?3OA7y|)b9UO@E%lOc6Pz_jUxO1 zr11A9JH${unExJ<-&MgEk)8t-{2m_P6#Ra|^A()O)maMuH{!2Q@I8d{a|rACGxeX% z3cvUm4t2X*!ADVj?^EyuYWJNAKAz=}$k(@^q+)sM)8cdeY&mZ3? z{P-P21S*I5XOVp(6r5LC#3(rLVboE<-zPm26+DgbZVG;y`gxLqPbHk!RI;AwR3Cos zWju`X4^`xJqxK!4;QyrlJW9duMS&2!3Oyk6l?Bz(PsA0$0_^(V{u7q!b)h5zq_->Tp`+5avD zKSb^LI|V;T=?4^?*Cjoo;Df0DKdRs^!i5i7XiwHZkLuf~@V`O&Jg4A4QMU&hdMW=$pI|{yrPJF1~^`y_I3Vtu)Cl&lS$vLgyZ<8HWQgW(9wX(swF2--mvu-~;J-=|Ke_ zMEdh=d)DV2vNONGGG0X2#nXzMRb%lG{MS8TJAVgeIlMY%yux2jX?{;-{@1A;OBDXK zR3BbB&HOCCM&ZAm`fZ(pv;5l?{1!^@RPfhnoOw>c<@Q6Gc38o0B>sOYcoXT*_kY&^ zVbW74d*khZOdxuMeJ?7+`FDf!h@a&|l6)Tj7|$eOgBAXlg>+5Jvf=z~2TzSt@I2z5 zL^$i&m+%=1&U((V$-(}{{rM^zj^%z&a&EBU$p1ds(^`Ej?Zdy9+^dw!C^OYh$lg2MzX36sT`85&&2#j-kb+F;6Ctv@aZ8+A8 z$3wRbNB&!>9}iOS7YWa>;V6guRh|t;IsK_V{Jx8)k)N;YnF{}3i2n*3j{KXbT`ClO z9PwYH;C%hAx8bM{`gO+Ox8c|y3Iq!Ew&BRnD|LUb;KM1+OS3VFdfr3h+W|Vy?asgN zzM|l~%JVbASq``3X&a9ETuEtz`XeS0XT9Zy1+qV2y|%+YhE59q9+J~j!8=oWkb*Cx zG=CSz>{#C~s9n5tp6km#X83z8<9uDrROG)*>2d{6!OB5cuHY*Ozt)DMKKvY2Yr~PX zk@$aO!;zn#uWq*C$Qn&kBJQx^$X`MI|3L-6nD9pl=lb$<*pmv*_t9r9jj^sh& zPq5+0&;7WY4M(yA{fKmtf{!Kq5(R&P@H_=Cz(OEQC7kWQo$PkGg0tt75=G7(Bxk9D ze@yr)1&^W^jCBe=lJGhOpG)}73Vu7`cPseIg#UqXuGi~SuSXP|J%&7`$oY!oG%NTd zoE!(?9R;r?{9_xACWxeRKPQ~^;rSomDmedc__Iw8l24HQ2BOI8!;wFk#;X(?j{FV8KiGyNKR<6}*>L1PM*O2}IP&v#k#ED1 zU+yyk^NDOY^7Hf3m`F_1v!TEl-(uSj)dr8i9gmZiG@3XZEo=x|K zTNOF2BUZDE+qH&Ay~{QSbpIXNrO^rh3g&@b)y$E+rh< zNHkEe7qr69`fpHh*8e62XZ`P2aMu4Z1!w&aDLCs-mxp+sB-02z(Y6@4|Hu@~Kc{-D zxSJTzTx@!TG8CNOA7?5!zwg|o;QajDqTu{|^^Jn_b4VQN$@=hpIa9&;elbVEd3+m` z>JAA1ZZGDv)U=_QBFC@ai@Aly7OYCPs82S`_3EU-uF505IPn=m3v3m6#yjlrigDgO zuvr}hm*%BO196(SsWrpfW3RXA%*eH$w8ATdSAX8?JE*Vy68jhKYx%X;)qn4Clw|D% z__Zreyp6%Wi#2!#3h;gAtWVHR(TTM`0NT3ZV%Wj;O!ubNE^FV1O;k0M`$;RDS-ThB zpR~1K-U>7p0VNy*QY&*MG?uw8gH2JNb;5qgDX#A85!O8ZA3Xl=^ZaK#O`pbjnvN&t zH63&3x^^9b|3h9l13Qrd+30OLo;*Q63>5}E54H^THXVbFWPg~T9~5Ul&CJ6MP5nRS z>rGxftsjKkUcg+te)j6k*{)r0V9KlS_4-e`c72lrdsu>OU&|Umqt1Bsud932@80_i zY-&M2tm26tNp8AhmIktfHgRUHGp1Xb{X7I5_(=t5_b6- z>_8wH08s(Z-!-NgSO$O$U*q*nEnR@2tvVcxIvCZwZyMPAAa26BKolxWhPxT3qP6FF z>%w{`1A*q8nbueaCt%W-&<3m~ZhykGV7k3vN?{|{Iy}#(0d00|cmojF<8;6?*+2wj zU%UV8NWmSGy(qu4!Cy|7v5%z56yF=n;1 zH_b}Q&fZj!LTa^3ogHc#{<+3b-uP697X+c7va zMIM>Pi&6$in=~T7gTWrhdzf7(Mspg{1rl&@=;F5LkUw6ECk{v7QNR)w7LMz$CDN}D z5ZXvkB57ra$WO)&Ib*{SCO+86^O+k&4uJ%2aVf0V&gl9qFo?2^3z2m6qExrnM9QH> zUJe8%oG43|=?^&_DOEGN-w8;RtfX7N84_xM4U~Go`F6`S-JQoLqh*dhdOagbTu52^ z@H9RyWI$Vm;5?{yr7K}mp#eN4DrS+U54@Hn$CPS%3Yr!}4D63%CbafgEmA2fcvce6OXPH_aSnU1zG%(x`a-Rq!=7JR$N9jmlndoZVj<) zG_$R6GQFQLQAJKP+ZdT1D(-S*3r=Jc80wniQu)VUsG?5nE{XwCtH=^PHpxtnv9LI% z$5~h+)62u8RH##p&WRNSf~tv3^E@}e;+U?n_?%2P+Xc3zF)v~aQK>3YlHX_BffLc2 zbo{@`$yf%J;nb$yq)*2)jEoC9!wA>I%EJiPCQ93uP2w2hZ5rB%Q`$@K0o*=O{Kba1i?vC0KFrW2;I8NEP)i<@%ap zblA%D&nA}Ez_gPTN9W^A$D7#T2BvxLDULr(_cQs1G%(GrhU1T_+i$4+$0&xb!j|Wn zh3Gw8BbE#UzbbeD0P>m*y!El=Rep5B;m~{l|97|rg%6mEtAsx|;f+i<#z`TMp5(a` zlncQV>~yoc9{+mQWsY(2-^|ZiyWVke{5QID(siEeCSB}VGRfI#Si|t~!<|{f$NMh3 z>X5PO>(yJFpCowmo#+A+ol82BJMACj%yM|+^ZtBk!X^3A_h!VN2IxW>n9}Dti4*W2JN4_O%Uz?lh`X78}vd zd*F3J*P#x=tqiW-TU?c1R#AmZ_aI7#B)CUfTvc9KS!{V$DqSf(a*?;ZK+i(LNFXY0I<5i?(xP0uGa_y5=+T$Blc&wCUR+f@D8GDh@vkoo~b#ob6l>r^iP-%HXtyml%Ja6pu3CfoB8yr12R! zu{F9e036VuR~}ESQ~o@9?mlOvUzw81D$B_XBr;5oGmuCd$_{5r=T^@LdzUTIQsxP| zc<$U~rOP>m-oMB-jXb-oc=3Gj<7mgwGZ^!O?_Dhgo#cWWJS}DMlB&`a=z0SytBOk& zQl`=cu&T9qQ7IbdzaHEm0w1~H1tTD2Q%W7WuubjZ0!YyCYlpSO?lQ?fWjaF=%i)1B zk+}O1PD3%F@H@A7TQ`#?p_YaH0cHND`O_dT>P0_|0VM;M51*p~0_)E)uBi)^-%I+d z`f{4%@onTUp#1KD(&g{}2yr`H2{e|khNYDM5A+Pl=T+V!IKjFw560O&WNJIf!S=&C zbG^C!t^!Pzi8(tH&LfLZc{jC@e-Rldl`~ST=Es|FsQR~H z$ArN7vHtiQm|A}vi&U8aX?Iik{62&j29+0Iazm9L*H^I1&FX=~^5Nq|Q27r4hB8@C zAVqkcetX78413@t$A5#9q4Gz;rwj}i$;do%K8~M+GfbOIKx9yUJBGB%dzdh#n`)Vq z|DYm(?a%OwK!mbiGTCn{F{1rYBC4v~d!fNzV0bx`%kw5mIDx12BY@asqy zNa9$jmLCOJsPboallh;Kk$F_hH%}-8^8MfQsiNLZq;iHPzRD_^V*S}Ffu{`di)bK* zDMNUN3Wehp8XVg8sX`a2lBI3mDZ!l@`<3+05GVxOI{2=tX>NfB+o89>!-Fi*pKw)E zxwazGyblOAIAjn%_ix6B5$4_wmBdhWI?F z>WMBy+P5AfKSKY9orF2(~qQs$2yhKDrC zm?pfF(DQm|zbX~;;QfW!=v{~3ENm|T;Oa!O@q3W%Z3En;;u9pe{aiS^thl@aetLs? zVL&rr{n!`AbqGR099x<3M-ha8W3AnXNF5DGs+^u=U*zur|14)L;TYjF7vpnnI9_Fp z^G>^X8i!=YKOufqzLVMyPj|BM_p#x2`6)IWuVt3cYb#Xw*V*{(`rlx~?eg!k;dl>V z`HvE=+Ve>pKVHMke*-c?z0g^L6v_kwU>(jp$(iza`>qsU=9tB zw20%6!^_|w1CI=h?~}0U3j>RxrW0qdFJWMu-#6rV2tOOaIW7zN2H*h#%jb{vgC%U@ zt(4AG@ST(%r{I*-W+-?9*=3f3-%V*A=UAVSgfCV2XH$BGf^VfXj&B%P4n4kTehHiS z1WI#0=9lBUrroCSbN;&&{CY}1px~*L-lgF5IHG-|;4J4W1;3E&_7maUzLeC$=se?W zNA^jA^}>G+y@;Rd%TEj`iX684PzB#lf-bemL0Nf(Pg3w(2%m1lv7g^hc(EeCnecK2 z=ifYhHaS@CJH*fT8N~2^F!9~3@V8K!3VQc~O62JR*ti=mzc{`xt8yzUcK$QF8JgWpwox50TX z0M$&NHVq#^voi({9{kXs{?xyB-i=9+c3*hl>aM@N7@}HixVRbcljp#%BsWR5tr`_@AB8J;n8!Kg@Zof{Z|ePpR&7Kctm)3`2LBX zg^k?!T3G76Plb)&`o}P+Lzuhiy0D@z%EN9yFg+|cCnv0MR(jZIXOFOOPaO8>u&|LQ zjgeM#a2 zJ7S6sItK1+bVQ^*?il;lUmRc`$Jy<_cXWF4F30OX+~VjrYm1}(yPF)ob?Y3r=dN~? z^j+>S`Yv^BAAObMs@3xxw>MwuxN2mPqtC&qj>M}bI-ngKU!5N9*xGWbIarElh)A7hX7drZwm8NNPqvm_w*%KyrVlmeoHUA_Dy}%g|F#FFEs1r zwJ+&uYeb!MM_bxWiE_>rgd8(-O@Kl{dGde>u*>ZQhC^@`*jx?{$}`gb=x zs9(_h2YuA}_vzV-?$tj%c#qy`;9WZOE4?80Ha)KHX8rH38};+<+M=JATCZ<=;Wzr6 z#hdiGi5v8lhkW|FwQKb`*=zJ~!>`kO9Jxk6bl*z-mFt%4iC0wVn?^0uBT|;?E4nY% z_jaz(Uyi>@U)OnoexO^KzG1*T{eh8l^)55#=ucK(srzo9rO#-*Oi%iJrv6&D89MYI z{g$m$^)=0tbw{THJ^IRty8oekec{jJ^oFTQBXt(Kjy1(M#SKrH}G>^n{%w z^%r|ys$YJ`2>q||!}WdJhUx3#Gxe6+hw9BehUjA+8LSVvG+p0zI91PIFi5|`k)r>- zVSqk9`yxI5!+yG>E?JKm(pOJ@zqbz8gT5fQm%i%99{Safx^?f;?)o<=-SmYgyXyBp zdVzl1wdd=@a?jJ(bx739TRQ6>|D}`uRc(U4ZdSa$Wk^RIu0h@LrAwdjN~|9J*YoV-Re)&i%gi93a!aV1KYGu9k(1PY%D5WaXtl)?cXg~izJIR7S0M9~co#)JxS z_LrtES+kYG?6a7{d2&*On4A<2)0JQr5lwO$8RLMPkW1 zKhA~t?auxy*soI?YANqNuyu>MSDT^Ngk9yo8t@wyUJU$`ayCRlP zj~YP9kWDfBo1&!VW`bgTr^5Vd$RS1VP)?}4`0S+C39}^1M+~ioGT?J6T$ARvKYZ`U zkPH8+OvL|1LiwE%F$^j%4l62#d?TyL*<`N z9qQlxwopm=m14BDYKJ5SE|>Z7K}_vCc#iY?n2};NKc>~bgRBSfp&bJMwu8URV3YFm zH@9CDV4=$A4;u2@F)&e3%V%7Tk?-8U?T4xf>K9T&KtuIhHGJFd64p3|lIZnGNTbV9ynmxs;{+P`Eer8#!aGr{_7C-27O`o) ziNJEXk06BO69&XlemN!}43?3J|AEpT1s_UjuYz}{^dtqJPU%7gA4ut91*fF8K*4dm z!oc5tSpSg{*6Jum`><^hswkUpzR%%H-M@RM%N&+2mvOm&{X3ob7)j-4i#Qv8cT3c! zdi|$h6-sK|MjVo0^@wN`h(&iU+ge|6sNQ?b_x?!Vdn4--ZZi_Lc>PU4`xCa{YNR9e z-sANJ&jSD~@_fBl_cb~I!Sl}}pR4FKTwMh5i?HhDEr{WN)wui69`e>#B{}!RL53Vy zPZHywmE`pJ_J?`>-wADCSqd!l%1Lqq5rae$5OGK(1CfBlfIQ!`aUS2#+0}m&tDsXkkyyMF0mc&Cv(;a|Q|cl{5w(i~ESrrR|-KkdDR6N7K8B z2uXXG1*i+=_I2a$tHO$UHSG7q8(I3;v-aY+M1 zmed7W!39??tS8~JT)11UJ`m4f=(sWsUJlmD1fkM#8Kq1=S88SA7n z>4UA4T6?D`$F_cBiasquUBS`TYf!u%9gZtIaGl1#U%$~MV7*5>SnuKFWg)O;L%u%s zjme953wbftst))?#0ASqaQ#TEeR&2hHpv!CJ6sksF71Fph~LIA*&%R=M@L%{&cfPREPqESl19@nzE7!1}nZfnrC!vs!6v&=-L%+oH1djZjj1=1yxNf z05EeA5sERCKs8?o8w9ibXB93978C>pv&{V!P%z89Uj-GbTx$APSpz@z280oik^@~} z`+XF^rD+c->Hky7%V6|`z5vAqf3R7wWKroL_~pNHP(k(Fit>^{#SjLG*~RjRbBwis z?>gckO-vfcr!_G%Tx@7v1vHoeKEvRC&vI^g@VxO0^+A`oBtMG6)9=6~i z9}hk}YzsUX*K9SS?s>hz0rM|l+a+misE;vFUk9AJvl2eZLTp@92EQ625$zm@@l*wG zl$$ z5~@yk{tVSWm6);q`0l3GKNm2RiF1bR;V2cvcH(oKpJSYtqUwaaCkgCk4x3Vf%8T=X zLg}B}Me@7pB`7_X15OS4(RrTKhm?{$>Z51(QW5O0x-nDQpRQW4=$V^_!i{-b6f3^JI0;bBuERPf8 z98B1P%8S28g(|<1%5S8+SU$RIQ_KG|V5&^aa-MiQ1s{jXNhPU00KB2fujz?WtZ&3v zK7Myq%YPg&l*!i#kRq(Wk4F&r-BPA3U0IK3;Y6tXmDt!2E|QUX7hE`{9tn`T6>5>sxjlePH{H3!+%nAJeMt z$l3@msTh{hNu0Kx0RL+F*iDp66cA`n8vk&7um`n#`#C#}eCPfxJCr7BUTAUUBskzxNBY0Go&dwEhL*<>IYYOhU+Q={1U<@av;S8sVzcArSIy*Uf^ zH~dPjJ_jIbm`{6{k^xKXXtVP}gk$#(B_p#9d~_Q)J`3XfYz`k0fxl6Ol27k3FwxqY zke!YX%=mOH9)Uwowg!$x^M=f>tX`xAO`3*t{J4$#PKv|51yAx%Rj_5hqh$= zL6J+21vpkR{ujbg4$5Slzu{xgMjJDJ7tk0G$6Gk#bQ=`E9q=`bd^Ai59Pdw8BM3pZ zv-}MLan9dcoRv8C?o>+mv*9cgAwG{+2+BE$AcTu$WR|;^(zy!$38lv=INJ-Ke=xB8 zOJ!2S*%TNU=QNK;jK3q<%=v4KZzFsK#f;}u`g#Q)OzBz$$LSjwZjzCy4<)sG75qs` zH!1j0O24S!>nZ)df^)y&`LwJ*=Z~gK2BUDwi&4CS^Yw~*%VIz|IOcO0px~d=i8LFI z?LLg~;WixQ@cdog^N!^g5g+?PWc}|UIn{I?BfK^^T&Lh4(Fxu&j^(c=zS}8g{3}ZT zQNa_a5Z;@H`FZcaeF}dK@i!~@F2esoI7SG$NzeBboIlQgLpYb)N^;IB{MjTYg3cqq z{VrsmH;eY~soXMAoV`ErSiv}nHAi|C$MyWhGZE9;XFPte;o0RQ1}_oQE(jN zFciqhl+XA~1?S&l=e2=XDENJpUeyM^R>AM5bbT8*KCffo`u;&C&2d1*d7NYX0pkBV z#VY=kg8zxqhuXjoD>z^8d>ylVV$;4=_|y3WGD2W}#^tYc7S8qM>z?^#Zg^f-Iaf^oJFj|YfzA4kshHh#n@scmfo=kbK)@bz<_ z!q51_3jP5W3gPiK@FoTSP_k>hhb5jyJsE#p;s1#Ed7NW@g0=4z{)g!VkAEtES27mk z-H5+$8~7jvXFYiwWjPB;&J=~8_2K#U%-=}-r3(KM!g)Mq{%Z-}r0}zRo^Q|m&k_Hf z3jZ5~^SI9Z8wr0};b-}W6nqcyA69T)xA@OC@DCN7+n4VTtPi(KB#rlsvp#$uV4UsW zzYTtV9>n{L{q2FrX_iCP(%eKKj@Pdmm_M6N@b$s?<%Fy9=Mc{C!^~eocq+w=Q&PkC z3=E93-LeI0jaQU3{gog;>d)ik`ZoBv-?4m_<0b-|&29(2Pa#fCDmW`DD$i+d%&=jD zhq^`h^>bsqe6xfSvqh=d@Jb4+9ZrYLD+C#bZMf%Fig)iQ`k|SRKS2_OXJosyB z3D47;1@0|r_BHDH`d*mYlJKUS%hCafxL8O;d3{Yz&#)$#F7rIhZHamFx>r2Dy}H-; zoHKXWTh)I$wa+snr|vc^F~9y9yzhWRp4uaxX)xPms=q4f8`lkm2-c5k_0~7U0h#YV z>vpubNqSNAB|FH=rAC0RYaE$8F2o>|z zhr!&NxP;`D?i~L?SNCiU>v2p6Eana0nO0Ce<}l3nIb8io?y!BX^*f-TuSdDAO!yd% z9TJXvu&A|7sBrGEy=(rI=i3kI=R^g3O?v)tu)nLe3e*INW1ZgmEpgC6(i+oFd;MR- zjG=?*KH1}kNjn)|L&^F2S?_SD!Pl-UW57Lfhs_6^JvFUrR&FhDEJdwy4#cgBJJG#t zD{w<{^P9*Zv;?h%!n2yHKOmLBN%M)@(9vu@n6L%d^OIUuguz^+=TZBZkB?`e{pzo3 z%>g~XacxHb%6TRG^XvM0{m*%uJ_dcmp7ZKw^Yt^(Drj|KUzi~D4U`5J{wBBfbJwP6 zaAHEqx7d%4<@jHn;6Djg$G(B~oKW&Y&ae~yqflbp=2uYLH5udTZ+;0)B<+p9lpW*h zH|yD9nkMYI7f+s0 zfxZK?zbvuWr=&G* z1+MkaA(!we{65H>iMjWR&N}QMx$g0O3Ka$; zW0k#YzrgWNwp?x1+16G$1Iu%zXEyj5)@s4S@QlWlgTW6sT(O`qI6dEw12fDJ)88yZ zePSY@vYR7?Qocr~7qoEAY^wg~)IMOtHPH@nSz&3`vy*`AhrpRtkPE(FyapO;v=Ab2 zf)>xp3UCxm-hpX>MYxlueu>*u+-Rc*-bclK%IJwC%+!*pUibiF^xBjolSw~7GOX98 z^}0;=u8`>sy5_`N335lFW^Q?uC}tAr?(!&6+>V{nqDn>|AMhax%Y!CKygvOC$5z}z_+=E$MeU66oQvX{u7n#tA}@i$VO za>evuIuDqeX?|DzrKwr`eEtiQkTU zb{SD-#1a=;EKFLt3QTq)c2fLTiqRNM@3pWvrVm(HBGdd41C7h{^A=w+(=S+9D$}QE zc!0c_On+lxsZ5`?uw7Ohtj%jve8mjTxCb!T)3*JSeU}VA2kKzyx zM>*FAk`r#>g-mi`;Gp%%HFVmH8j0dh!r0tfspRbxBlZH(?@(-LOZ5g$uzrTNQg0|D zCD)tEUcqEInL^htXEMXIPHICT(a)G{Q=TRA6%)F`RGkQU?*xZgq#4YwWRfeOYcp9z z%Y-url7dStMcEBBw`YjCnuDmA4AT(Tt!ZF~5R*+E3b^@L2SWqzyKm8X{%{L!VVV5V zlm~|8M5L)&!EcGY&xEEjxyOVGn0%QaXr?s{oOsvbt0Q}Ep%|N3HEbgR)6H!7`&mFx zE9uaxom^qAD|A*S&He(vtPD=7)_V4eGa<8(;(!t$p;|l~axd3fu`gzfM;(H~HJnqnSc zBB{CfvgN^MH{nlF%mWU8!)zw}HHx{dZAA<6*OpsGa@vy11BEJ|UA^;F@jW&B&lK~( zHkvxv7>cJ*Je^|hZL0ihNX~T>*HFwC?^l%mj$$?cEWjPwqX7SROz|DGGIQwcp&0|g z?QHeRf%6wv51LzERVily!_?qG^GiyCS%jltbMd!^U#rNo^s@5B^9Rex!HDvV;d!NH zKnufI&1$%HXU8yyk&yzEcqi?d@7&&L{{)_ zFz~a%S1%i4tQt`^*;rL(ba~h)A7Qw*8du)~r*$Lh4H2ynvwV$c5nX~1&Og@YMQn|@ z^pYEal(Uena%LbVO5Bomi&4GD`8x6&aSw~Ae5Q!HY)$*qrN5nZB-L0j!ss$?KIU=u zz@x}6(s>an5ypx=#?{V_Mu%}m%)>^>hsK2?jFJ&XUx13Lgrsg?gFEcnVIym@W;7Uc zQc#4^V-H3j;NcJ+?oMrSCe1aXQoP3H>x{l5j3PLWGm1Vm`p*3Jf$Ux5-yG=ZEzDDd z?9PYqD5`Kb=umI0eAtL{^wN)Z9+2N(Fo+r1&h92#Ub@2peX6Xuq-x1BoE%ZPq+)sL zY-mRN|>E&uG*hHdtPa!n7CZM6xP7YvPzbemX%pEo5g~E`$S~Z6#&h7E?r(+ zQO%i`7K1b7P%gWLm|wZxU-oDF+-p&t*{h`H0SeHp?2;wmNLzzCmlrQCDTRsg^GcV_ zmf-B!6{U-{CClcOF4Ke@$+Db#66&3+LZq#k|9}v57Yrxv}p0uu-weo5MY^sT(3Zv6;R|BiV>e z^~5HRigl0TY1v|q%T^&l)3PZ359eY_f7!p_>!2;)*)rq*V-u{w7H;^*TM)cb283)% zsrOfGBYVK9tf6kf?(UKc+ZzLZ2*Gmr?#*}~!s&JdDH&=)358QCjL!uq^FPf$6!Ow7 z7$_@n`D+!yDsLKOQFTHonN62MfM0BLim{2Jw? zlGN6Ag2vf|YwNU=;%t$fUpJDt=63Tu{$$oQ) z5zT>3!ui>*h$)wt$WbG{e!@P+B4r&^{V}cTj@$?7CUb@|V0Cc5k6J$V$x!7t(nl}; zZ5P-?P|Igrjgjwv&KzMHER;&L?biaYgy3-QKC9^>RYZlFYm7g6*yqw_P@Z^*X{ZR0 z(yt91uTzwhP25W6dK@t6$4&dXr)kdW$i;dw+MVH7QfCosiU%m8GjqjW8mQd+3eTPh2pFnClKfR ze{aH34*qk%`!5ETkM_dA-(zy!WmGsY7@C}sa54|jZAL0B(nDOm| z7gNmm&6HlC;9URZ3O<+8YZUwqO0QRN8veCy3Xa|lFf_=>v_lQ0`71T+Ih^=u3V_L< zLpaZsWqvNV3!P`2$FY72zL3i0&sfZ#Lik99zkt&D3eIzArxK2ly)SthuyU6HV?hwk~%Z8)fCR4fm^_lte zh%a5?pHFf|*l^Tw4W&6B%Xy4&{yxR{D!SR0C~}SwzQBf~o*ej-ILkRg4;?EMejZ0Q zDtH3vf3t$KefaY!%D3MQxgK2Zw^Z&^HaW;&Ly9)raJ0{5;qt^AHXQj|B&;2`;mH3- z;{VcyBY!sOf7XU0|G$X8E7=eAM7#YN{xS3=9J7n8r2ilV=W(9D7jk{O(oM#z$bU*m zhrJFIoPAHvw&AGfNRm^b;MIg*tKfGKPLUY*sH&pmI4a+)7p0rpz}w!`QOa*zg%U& zxNSw>cp+sFB-k}ZP)s)VDj3=s`jS^qPuF*ZFXII%;%N7wTG^E zd+UaK>&3&((^y8D+$R2j$b+mob-gjlt^Lro39or1YR3cNt%I%8r5bgz%*LwDp{052 zvrxt!tgF}mg;3pFC+%r^k#g1U6jJX>%0#xhhm*1)&ab;K$t&WAlL|!qXwpm(KbbTK zV(;2#v6*0oQw~&4)T8!@YrP-lKY3tYni~u-&U?GJF2V5D9;q7Xt#fz*f{onY^um_y ziLC`N-4WvadQpWuf79crq-YhW9W=H-AxRitD(!#Q(^?2qB%wuJqD8lf7CqeK`L*wh zCOzgqEHab8rsHwn?X9VS>1O^WSI%K?{UnFi-xaos&-q?E!YvHVDvE&80$TU@zMorL z#hf_*r*-YTzP(}fYpJ+{+<}^8OF}uK`?zwNy!GQ8Apfw|==Hs2pv+HeRws0C=eoJE z_HEfaT(uv94{Sb_({bZZhHo9te0E_HU zFhkAvqwW`-%T?wBd{d*AZbWm5M#eim|Cb4xuhYK$J^JxD)~e&=G^+wYs_vuD9Z~ zy571R%HfIPfj8bDB6xxq{GX@l`F8izOmz3R`~H9XzV%7EpZeBQPd#(qH;<_2|sIFk)(TKlImH_@3)Q2FF=_2rp+IkKkqcJkiFF9_(In#~YN zr)Db14A5xjNJe?{`W>i|s- z_+q2CDO|m{cS?*oA@TQ-+KKcZ`@pN7NP@_M(My`OOxE(J_^aqFIaLZi$5ewyH4bo(4S(YKg7+QeR>qJAB1 zD$#TuJyD_=I+`KTfQ~kkXqJvPmuR+*o+QzpI@&^_xjK4^M8i7TQlf=A8jxs_j<&Y@ z&@?Kk%_JSow0Sm{)aE=LZ6`IFqob!uv|L9!*k!7M3w1Qx<|j0A6R2NA*Uqu?ReXiS zJKOmr+t;Q_;@$1BDt@WN``L38|2m0>?Tb|WI*I2?e1pUXOZ-lW50Ur-5-+eXQ~4j0 z_%NltugxZj7ur1I^tGYqG}XEOth=cz>+pvt{9m^}<(BVOGwN8!2~uxN>R4)Aw26%+ zOB$=3)W#nZOVPBLmg!A-6>YCox4Ut&+`#@D%PZ_=YF-AeJNP=*vg54$>5 zbl`Rq^-}z-m_la*ZA84hu~U8KRaHwV(gzmXfDe@QL`tVWs&nBgV$f@PlP2lzw0RS9^$H_tl80nTO(^en$|f25 zN`{9hLsMGyZYA~Q3zW!NMDkeCV*2X5l52?M`p(HU#LYFt%{7E`X#qo+m&)c*bRtn! zy;)kwX=HDjmQa){rg-B>y%VP0#kPkLv*NM4Fnd$pGuQ6IrC80h4aJKSLOkJbWSN@J zVdjyl=_%5+^xjJ;S}x=Z?LBq(Nw7A7Xr6@55%h=wjoEL0F+07y>K<> zKOfx1;5mgmz#GV7kPy2J&MZBWWp}lDecgD z3G`%~f?eA3cGTep5bGSKQ{woiUc$Bcojh$#ZB;Sli8NLwg}bO-e_}fBqwyT1qEq~g z>96kX;rc3PA)Y`Ve6xkkQe$v9k3oC1rC%c2m#dNMVdl^EClI$DqL;^x*vn%_?By{d z_Hv9^Tn@|QWOF&sJHnU83SS;8d^v(00S&ZV-V*Iuu#Xm3TB zrpib~uZ>fN(&#p#ynTSAaQ4v%q5q!H^g#pNW@+4$lh=TktF*Jn+a`L zS%5aIVw;#DaikJhoEQeY_MR0^bsiRv(!5I1N2J`~k5 zvtzSsu#y|YW!KgH!@4WBdi|br)t0Kgr4din_Pacmvr^%t`n)jUpLN_TYZb6Wptf4H zP>;Ov*5c3j{jzAGR(_+NR8}1MmZOJ72u>U|N9yf5O_E za5JxDcL_yvR}QahILR%Dqb*{WIh-83CgK#YcVMnfOZW{Am>z{&aSHj2@a7;F9<+lF z^%-Z)^pr#exAh93!H!*KPW9FT3oAH(mZu)nW9_|ssbfeoagV`QJV4M`VwH%m|v_G;vUjnv6dd2t;26 zgM80{M(!4|uhBG!!|!+)#!oNw?LWwn6o=nqhzlfIg}5NgJVT&ujQ|N}Dz-HdvY|h5fplf_Q)^5ZF0n37 zn~aB`)lLJ9kI6z2{QkGn$u)7Kw4mEYab?BlDvr+;S9|1oR+OksZ{L$EtQJuKJ0u~& zx*aobUHS!-zOb)bnA{?2)=96%qpLycRM-6yqek9V!kc8xGsQV_+%_767IoWbjG66R zkvQj{&;q=(e@BadNGDi0BxlVwqoM9&Tm$pPfDGq<$s!cPZ9V;FEGtr`OrPCZ zFGwk0G^dQ0q>$?5#NJtw;yARY%be-i#6l!3egR1+JzwetEWIaJOrKGH#`IZzxmozP zX|=|sboR`dvuA0V)+Nj=DL+p~=mErOLf>x7zSXz5w||GfE1j;Tx8}4fCmnq$eO^3s zgRkyXTJ}-q|CSb-oJ5Z5ePt^gs+_5E#>nfv@1!E8b`W(kuSD^^zz5neCfPTA6&>xA z!6`3KBR~1R3kDO?Zzu*Pk_wB+X_?&5}CUL{HI0n3U7#@v-Oh`KHe~zP{^xBZ?YL^Yy-|k+1w)|GK0eyfnr>mk-PM(3cN>-h9C3 zWk2><|Fp3iKJ=ZC)YESKL!)Uo^It`hP2-zh!_BaG2gvEOXIZk|qd0$f@xc6okj2Ej z5?UrxHfstk@0c-rE_vpkI;VoxP`R5$%32wfY!%O*I+a(!a89*zLNUJqDxNx{WE!oz z`lmK&=)~i$)GD1(GH+h-tdf~!O4#Izsl}5^=9SShl;RoF^|~7NOj(Am0(Xf|aLjNmYU&(RoW9B=wRlqkS{XB+78MnjR?MZvGBYY>&f-Nxr8B0} z+8O1YmDn^370Vp7E@_%0XX+eUZB{~Y&boMNE?vEmi=TYNO%g>nNAWU@c zN-LP0!;Ftm2F|J@GLHlvkMo_TDK0LV zW0@6nB$m)(B&&E9??tN0&atM?D=sN7U!pbz=o&Pd!yWD^)Q^4?SryWr&zV~`b^1aQ!*AAk45-ePE_kh!XvJCy*Ov>V{wEnw*B$Ai1P=o}0QFJbE96?G4w^}8 z;@mD!y;NLGYbZ;hvQ<2vdTB-(>gHWjMupG2aBjKNjmnBB8OpFwTg@jO>F10xTG95q zc7bn6Q;PLMPHS%2G;NSnGmygU9)w$suS=@#zqHy+{jfs!IdiR97GdgrA)O0(dOY;< zT2-|t)<5iDopMFeT3>at?+&|eeg8oEDKDLp!}QNVUg0YY590K`Q3ZZ8h6jR=7#UQ5 zubp%kNeS0u8J9Cg!7F2fLSnIp6JU6(b|$00vn8+E*`tPic{@^f3?4RSINDVsdLKsm&5fd5 z4*HG92#0p`&$u~z-Xo6}sm$aFW?B4r!ZOYLs8FVnA>fh4WDfmv`JFl94bmWmUW{nw z<$!ap&}RNZ$zQ+L>Ak?~Rfl*9b%)AL4xNF=p2PPRWn*z;DL+mjk1T z6s!MCodf;E{l|HcANU1?nL2UK2c-N%^y=0dOx~%Kn5g`Kl;4xy_;TR#S(I7+0>Vt0 z1XeSX;x4*hZ7O>BwsH)^Z%<97rd zbK45}-;?}E$GNZMM;vG5L;M>e7&Ds5%9Z?kz$jW&NU0&e7CAk?zc#p?)^BtlU~UD-S2Gl36~_84{IW)J5mpU=(OX zHB*8k^ZoCwEfnMD(TmN9?WrmHjLnREj-|MPw-SEDapq=We#CL+wMC2v1OT2Va?tL; zd3Y#(I;$WFMHI1}nVCBuo2YO|ar=?;{^#~vG4J*)o#nITj1N9#(GuZe{EZ}^{vOLf zS-u#1BgLn^2pTB!^OY1EW~pe3l@$xiFEF*#8cA=`LKTsV!;`?DTE)-CENg|rYgs{c zb`O^bPSf+4aJk@S&DIOvK8D+}t`%G^+nCfu`_bG$9Nx92>e+#?hv+{&Cby34tO0+! z27GS~_}4Yy-`9X2uL0*>m=o#Qqz3%t8t}{-a9%UT?Spo~G=lwwGCoPJH@1HqMhK3V z`yXl88Vi0IDv)zN_znCb!Iv30e}}~7t`pq3lIfwFUO>rHvVJy}R|Xxs_UfEtd7t+Q z$>~9_jQIVQdb`9xPs@F!!;iX*_0liUAl7*UK->0ow&*|)THXzOdT_K0AG-3P8y~tO zGal(3A&J)z)5`_CBcay<7w`*Uex*fkDD*oe1?ty%R9Sl5n^8K4--^U!nm$jxE1}d` zrL@sDz1S+7rJvpD%?L{?$HVWPzcgV*DDa7=z~JYFSR7b(2l@vN7mOzVEj94NK_Dly zEXes)`1$13CsiWMdxnR2-e460qxSHkR zKZWu`{u04ithXN@^6;~L2mcli-qM4=S%aKUJp2I<{{atwCl7wa!_TBt*YXL$?cB=4 zua{S7KChg{9{$!I{$_&n$;*Gb2lw`GcaNMl9yxtI{9ZZuPL`ATSqkk|>XE~kUikp|vV;w1(S9|!zih6BodOZ2%=!w&w2$X{*XJ4K&0 z2Hs!d*BN*~5n$y-qjy&k;Fi8hEwzSH6Lx9g7V7K9LU} z1}GQT|9pcVYw5lFvhnpLuYIhm4gO7{=Pd@lOZ5Dkf&X3b%?92;+Gm%6@02*MC+J@y z_#uP8x5$C-2=Et5J9vFWaJ}H0rKO~Uf4J1ElYt+Ucs~QbP~yW49QSWr$B^%nc9?DO z*A=|dz;U0r!ocCfb%TMQA?@&_fme$B?FPP9+L2xBbAX-$1^>jrZxK20g$n-rq+Co^ zfNvEX`y2reiQGma5BL{?w=!^ig4)Tz?-G8mF9q)32UTq>Ypub5z2Nw~2<0k+Pic1> z{QMls;V}c3+nKe^z|WER>jr+8wCBeL4qrO8rJbNpAK~wB;Mr2&VFrGk@J}-EizI%5 zfuAjUR2ujOk#mQEga7Xa&P&8Nyl>#(-)G>@3jfarK2yr2Z}L?@JA5qs^bvdvey-rB z8~ACO&FX33wWPd41MeX1aE{=thKN>@iVYmk|I<8ja1Y@Oiw%6Tl0rUXJUEX}=%ZKj z>+6o?+#~#$cW^r}-dx(}c8?s!VaMh-ALoSh+Q25XbS&+lP4yy)R)-hgCy z!{DDU_(vwcl44n38vJcP3b80YvM4|?M3?#B%I_#E>EL(XK;=XC>zo&CU&gU>NP_wcix z53rIHzVYC!=ifyB&j$X1;Cde*cYcm}KplCJhI--q@1}yoo_wK7rE%@Sx!fcfbnOi} z_}nwc!_WGsOZ)fs;4BC8kdT4nv*}?5zE;W|D>(GWXQL$^el9mx%AMoEx!eau&LRVc zU0z|}&Ez_~TyT_&&&IDd@O9Guw-|ClB4?w4Unuyi9-QqGRtUUj$cJ71)WFY?dimr9 zC;IUQ(WkE9&>#1|h6X-eox0QZ<(Sx)6LK)9*36AKDjECBr8*=czZ@9sa_xR@+IOYM<3_18r{8|IA zC*%AU1Aj{J2Mk=V#J8-M41As3j}9An18L_ZZZJ=~;W}+>;0vVP0)lf?M5z4j4gR`P zZZ{7C57HYdic`?W}O@?=Wp9o0V@Lt2$;!zDrxVk@5!9 z9!;tGIeBWNHcVhRx{O!$fLGf|g_x@l{#CieWQ zZK=J!E~uWCx+D|6wF*iP6hyvg|9(N_%Yw*{_PhI7*P-@Tz22|^OtSKjNSXIwv?dJ?0-(zWybXV-OE9URzK>5EXn)lfZo)a9Sx2dIe zIgkBgh1b*%lUu>;Ftudvs-5L+!{nGQye9iG9;T~)tms2po#)xCliY~qu~#q3S=GyK zMsD1Yd}LQ}V$~)eZRqLhPae@ahf8;ceFaoP>5t*+bM3JGCYO~JtUA_!6$qqV!G5Q> zEwY3E;8JrAhI@_A%*sm}@LSHo{SR}4pnjC8U)tKQi7V}q)AM-i)*m(>O(G9%wZc_f z?W(=CgS4e>^$gnXb>ERa;p+AYE~ppom6w^Fwt6Dv3s$|7%-Uz=MSiII%txIP z*%xmAcDUE`OB;n(?Noz5oR&|n+g`D0*IH%`6tw>+-0RgP=|*}|)xP94jmUpr^>|-$ zkX-Q%t)7ycOjYi}%7j)OPg^yGYzpa|mUcyd`lXV#pIy0vE<>$5GqLi@_h|KuJMI00 zh$mR}H8smO`K8;GRy)$Jm`5_6W+NU{mh>Nd9f!zso*FWzmuF@_&W#rQ2j9-Zy|yiB z5~BTjSN)h5d8r^R|HokD=!3rCqxG0QJ5)XO*ERiZ>V{hRksl%{v;lB3xl9~d`sva@ zLFD6b&F} z%s_tWOUmAI=C?V~UZ0+bU@`Wn2z&9l` zWB+IpE56>SxRz;aCsNgeRiC#^TgC4H)F25y-J0^xKb7=4UAOwdv{g$vmGsV97hJxL zKdT7$+FH>eR6VP;9$;LFv_}TehR$1)Xc%nXo3i=0r0N-2_WtL{{~r4^^oT2ea!~b* zj;#(n&v@FS>Er@1c`EmI+M|U@M2yNL^D%^aj^fF*@og&YGOXZa0#X!}LX=-oexm9s zii}88%0wILrsnlJIJBC4Z(bZAN2CZmlWLq9xo1?-J_`EA9{jDH!B-s97 zLF8xZE&HGtm}9|S2P;3Oy^QnL5Pu%^bs_JTUBtcKGoKC5cE!2>uc}SSPv(zltL~t2 zqZ;us{uwIx3?JurMGq^MENXG?nJgMpTz{uMcauX*&Q!In5e-${tco$*{+)2IElZkm zr$0j+G%$I1QrCaWW13{q_%S5tCke$}%yIDaHVzO;Tp zUCqXdm-Hv%jp~m~Q1-*7D!@Sl)>;ChZ@>I<9ldD!(mMJ)>6b z0}t!#irU%7dR|Z6mlru&wZl)t(9TN>9o6aFMQjqtDsz|Tawl*F25gDgbRh)t+V72| zu&JiZ9%H_au8E}m2f6uLE~BbiL1k$6cjLBUE3)%xwkp&=-vl48N0eG(${nt55BnFA z(s|YA)!tv1GLVj{Eq|bEh^o|T|1~6+@~{^g8b%cUJNyf}ZUmESawAyl_5P%;dam1( zl4h?a_5ECdlvp={DY0$@Q)1l+ro_4tOo??Pm=fzoFeTQFU`nhT!IW4xf+?|X1XE(& z2&Tlk5lm@q^PB0UHj{J}GVSM8RJ##OiFG5G66;1VCDx5#is42u#c(5-(%IfcvK=>q zDc$Y8DlTpWQw%qPDTW)t6vK^Ris42u#c(5-QefXlz2a*lZUj>dH-agJ_UEenXKn2T zJmq2aY>|=j1UCr}Xe;GO-8vF`N;i&Qr+M7`Ra1r(Kfl9Bt)c_h>xBL+fKVPE3jGl% zt^4$=>9jboO!4!tVC-RuzFDwau~&jLS`KEnW-6(TE*vpkxZP&HN=r{udo4>WLn(%| zfR1JIPpj_@%BM3y*)FD&{@pn# zN4sjY-zSJ)hgeBD7tvA3WEbV8N2Z~YiM*-dti>%yg7ex|tG}pWWqY z|9k1$iCzQOr(J%dfO4hR&~^LvPdd+YWoQXaU6*ilH>pP^GsAWBMt77rM{+6b3hocw z=Eb_XI~i{APN`>)CM(#oD>=hs_j&=ZaPdE<#J6%)V7}I_jvOVod7~9urnekcE5>ae z1MRejJsL)?MD4pS3oiAjxpinKXLdaV`c)Up2EEtC{Gfg6Rzs5uYe6<>{P4)~K;y?? z<^zovsmv#$<4#=#Ay-Ck3RzovzhPW_+*fvHi{kY59Hu&wb>%xz_Kg=V2+d!bMc`3eN- z7P-_da+&b^tfi?@L|zh*GJ|}>ft;bm&&wQ$OB3#KwU8U+OhXMMszq)ULE^_&;u3!6 zlr4k4vwI2pLF1cRy0p?kcX#TeE8OfJPU&K2;xUo4u5f)XCla39jNdgA-{5@gS|f^pWCOe<_5Fzsi4AI?~`}u(36-GD@Yyav>FCB9SDdT_vTl(uNo$ z-B2?Nk~aO0&PaPncoOT3R9uXSbVk~lGCCV`E4oUn2EQsDsTT@YqnMfr6A~8*Q-bOv z371DAjga&*ODjQ1PLfaRhzDu-NP}8>Y5eFwDn5NkBnfHze@7#v z;gWA`t$&OMYwTD=Dr`Z5>LY2K*p5UBA#Km^@E~ok@KE(Hj;}sa@x^gdlj~y6bX7Xi ze-&x5!$_Er2(y-;c1UU>hKsba+S9H^ z2?i5V-};@>kcLTAqSBCt2~>iHL=x_u^<%E$2m$;yc< z6mntkNt9`83Bue528|%t3HQc71~-0O`ox7H2^9#!tr}yamNjSDGCPVWrbEPun{|@h zaS1ZpEMENy(Dgnsy7c4*5}%2a`+1OVjV3_-tDSkv1dyl^wSMY9(}d8$m7b_^YN`yn zwXXH8!vcx88F zJc-}yjS~pUB*Kf+!pCA0(5~mg3L-iBbvL-?R4g9rv?*1qEo3eFODMe zr0@~wk0SDuo4JnIc~^@Gf2_qn)9LZLJ2i&FRAZ3P%x7Jk?5K%eATTuwMQQgC6=;SF z5*=e(MK$T3U<{yW@?rwg)nbmT1;&ccnv)tu1gcSHkggUZL84LVvEaJ6C%2c-2~LH^ z*g~SNv@Zonh)Q59U^TG_j95U~`SFm|2TRNTZEt4WsUajzy86z4TPX0hHh zvv_Y>O=UohTGmo)c=ITtzdB}XB1ru5$Tz`LW%y)c7+DiX2??d?5;1ip$W)PqnW~{c z_*w8)!z{&{7L);8EoW~UZk2fO^`?!LJNmV9_NL*+`Ei0Y^gJdw-hAeC#+zo=7grZ_ zOS1Y!QJ!>V3Px-ovABb(Ff)o?&Xe9EK4|(!wKug+G%zu+ZgJJPSIBKH^t_O- zyAa5|0+F)GQAF^tLdu%Wg91^n-)l*m^oXz^~72G`GO~49y6M!G6;8FuWPF*GG zX8yf`V-}8jt_iQS5d_J<*u>OtN|^|n-WO=JHl4XdrFi2UdFnYzoieZ@t- zR=sh&Nzv>2_yWCslRDDYNq1NBj!7R{ym`{imAsGAhZb-3bhE-gw~G2v`3BtN>(kLUprfx( zZ(qTV@Uq;2mkb&=dHj@azRY#Ll5aPZ^*L*Z@4m`Uul&w8aj@?SyU6#=(y2S2oWJu) zR$(Ytst4CKp9|_a*tg8)&9ZFYxD{9W8r|fpyTUilztQ*S%5vW)R7GwE|N5P0QHD{x z!&DdEV{0hyJeAXX2$92BUgwSleb1yw0XIw!|EGO?Z(6;pd{0;Ur}~HN+_IjM1~Xsw z4&M&T-_ZBn(wlrUZrbTZzvxQe&GytGzW0~;MFxxQ?{P8KhSlUsHeY`$s>0Wqu#uOG}^d&G^=rz0v=qZ_37` zQ|OB2jcL@DRFiq*D*BwAHtnIyprl;ytK;mf6}OibcGRIPYOAAS^0VvN9LTe!7IToq zx#d>Dxx)wOeW4VmvtQQCvYE=OuiCjP@orhXxl>QxEQ-!uXzL}}0ZVoRb9aQ|t)8aO z;!2QE-sQ{L7i;<~(Q`@}EuHXgc~z{oZHnC}$h%b)I|H7)h*~6erz&znJhxO;#N9c_ zyIGa1l#`FOo6NOj1!GX|hq&#j+`X1m?-XPAFQ?N~D^pJFH$@vOk?&*z^wwzJ4W+QB z6>n{2?kA;owbGqHyGWH@z+!cW$LJWp<<{@+ibMvqWPU~Y^ckJB4R&k8J4dPApVaC5#!nEiflEpP$p+DuF~0a7CHLs-NUd)6elU)&WmT~ETrwG zN_pcba@=fGx|lYbnq}3rNfbGz=KasqmQ=KTmD}ucT$*XHsr6k=$J2(xmS4zjB^~Trt zTNe|50sV8hkS9O=>!)9l)W3elT3`SAf$HS`^|LOo6|A4VIwe@YXI1UI`Wx)&b?f&e zBv?O-IEa&S^snz9RBxDp=haUS)%Opn=UZQkQu5+*^jB-N{`I||%4U>w)EhBPpEY&1 zC3MN;$-GAwZ}o&^YT1~0$=s4z(`ea@1_$f6`!` zYn?bE;rjDS3A6tF2{UDK&RZMskroNc#97DUc}G)1qWpiSr2`yBoTAS-n!JUSkVyZ- z@^fjCl+XIJ?xy}c22Gg+S+&`*Glgt@a*ihNBuYtCez;g?L4Gd3F8!P3mlI~nVW*b?Rcrk~D#x;{Ba63Fb^-rWbGtU{Mv+R`&O(~j2|7Q7Y9uk#b zDE4ot7ULYv@|^^OV7~voJ&5G3k)e~%seNpMPhFX@7{`28YCNcLydI8C_Wj59|YQn=H~@|2$9DI-qgc8S0r&avrGzn&G6WVkNk-;2u*yq2j}Yt{7LeL+~n_2 z1O9Cd_-iDSgDEFjnwoKMxiH6U%RzH~j1I;LjC)?oSR} zyw@hRQmBh#UejK1mc#!D*+M`*#!C+a$BXN}2F`owa0uy>qh|+E3Ugn`A1?g(qyu=C zH){C)%PEb%7{ ze7ESc-N0o!V!dhLe;5AG4EzR(e{bLtweSNH+W9Xcr=gsI50eb74EzFVPh9WdUnuifB>uU9;|HoA4g7MElOlRS|6YPOHSmume>(%;FF1Zsftb6X2tLNZ zvG>JP1OG_k^9_8X$bqj+l#3VM_zVj;R-*mckn^6%xzoV00O1h>hn@Y&z_&@eVRC|U z$BBIG?E`$K@V6B^3j9mKv4;=vQo)BC{6WDd7&v@FWA7cvLAjS2{F$QX-3Go&Xb> zxzO`156=9s*Pk0W?BO9ppIRdSh=-r&-Uyh_Kp)uidXf=%eW|q9_dn~iMDS)FewM#Z z3TW-Yng6ixpX$MxKOpU&?ZKIUzKo|{9-PMs_Mm_dYmAf5!hf~Ff18xM(ZI1+?xTXE ze{p~Mhk;}Mv)v!x#OB9$bxc;^na4gR`79GPyfq;9CX9Ct9fQ>q-jE z2_+r<)ry5tsOQ1CT+IKl#s&QFZQk0$&ms!t!L5^l@0LN-)q^uMN&0b+2WL5Z_#u$O zP!G=h8-#z72WS3Yg&)58QD0mavkm?W<>3OKT%jK^&&2x-mZMac@o0|W7giXelqy?3cvfcowjd{WWc3!VH8j=%ri0s zN4?VJ`aRWyGdW)5WE=Psf@94RC(?n!m4ZW0++Y9f;b%GNV)t+J;7r~x zavn6~;De9HJ^U=EP~`0J;7ms4g_3s<0mcsq{*J-lT^=+)^x!OigUH|K!I}KC@P8vX z>WdFae)90MoWmj~S?m_ZE$W*tIOO2NlMDlgoju)<6P7RXx*GW7g7-4yKz`7`A%B=5 z=QELWj)D8-0cNrx2OqGU@8RcmzcLq~E%|ct9Rt5a zaO_=R-SQ&~9*ET8f7<+{dR1i&{5e}TcjM(~LS z9uPTm3>@VyF>sW7nSrC+8x0)g-e=$_H(l;m+`rs~?WFxX)PRR;z+V!3Y|7axcG1K? ztO5U}27HUyIaAIDHQ+zjfHxI;X3FVY13s(<{QMg5)ivPxV*ku?%WA-v*MPq$cEyzQ zx?JBTez*oaRjzN7KdT1(&vM;cioSr~GM`@`GE|Pqor6sZd06+Dd)}7Jh>K8FQ!%KSmyx6%|x&*2DJCKqpB{{3&chV#JPhrrQN?JCPUcX zq4QL$pJ&3=-MDYV)qVK%#MyM%$5c3BGLOgKNgj^msZ-thKh77%e){L_1oB8SHF@b4 z-j!hUPt=q@2S~-uiirqvH@-#lc7(6*F!eckW#7wtOzaD9J{ky@ejP4-TldwJ%)`9h z1lM+-+HxZD29X~;&KFUBu}^9rEx*8eQI=Fd{Q{_rApUs_f=xfYx%vNO^a@c z(8dGfGyS~h18opN&hUAc2(>}PR#JW?SAtrm|M75p8V;|9U)>*WMa@oI2D};WwIiH1 zXxmo$P3gSZGs`;BhaB@d6;@21F}<`?358DT6D56AA1Zk-;ZmzK&^M56O%C+!lWk?; zOQ`m9XHDtdr(2+1y8uzG`gB$0Tg!4c1vX6Do4&4aSM~#Q4*M?+@5s9IynPwh747Ny z*uta9EAyVsymiW_jjtZ{de?``zfZlq;KdFbXMEM-#_{jqFB|;)X?LIhW%ECu`_7q9EdDuV^}ucIZlC&j(`(1P+5M6EKh|G6?B$O4 z&HDP3n&!f)zC@^`ksYx@3X*N=U>*W-(Rsa7{_!s+*1aNwjH#=U#ilNbF``;tN1PrYN>7bpJdoVR*By5LCK6~kZYbpPx_Eu+OB z_WMWWak8Fv5(S@xWFyr2gOKuXhT8wj!Ad`|MIbZl^p4qGy7xS@ci-Ipc>}|P3x*Ca z95HJ2IYsA=8$Ypl(&W-9Q>UFb{el@YXU(27cV2nL`~?daExzdDB}*%pEniW!a@Fcf zE{$Ba=JM*bSFBsN{>rPazUJCL{pq^v|9r!ZH~!_O=!Ok9|MiwzZ@umIJMO&muDkEK zXXCy1-FN>34?Os{haP(P?~gq4=wpvP{=^ecKK0bo&ph*wO`A4v*|PQ7XP?`)ZTpTL zJD-34g%@9Z>7|!nd1cqGS6_Q=_v^2}@y45Py|ri0+wZ*d?z`{3_x=YTeE8wsy&rx2 z@h6{r`srt%fBwZ6`}XbM|K))LUww7(;MZRtI&}E(H{X8y-FM%A|HBVI{&?ib(W5{8 z^z+ZZ{POFszx{TMEhGJ0O5TY}OJ34{} zaY<{7%==y?$*=yfzn$vTf;ozyhI?`!us zF{I3@m}&V=?ZLcltduGA!JjWn$C9-mUweM_s0AnYK18%CQXi#wh3MVtYFYXh7uwAQ zKSfd&CnPQKccezBTVmN^q}QG7iCB69Vh>H2o#iy5w&eUnz4_e;ectXyxcTj&&r0#B zb1i!qa;baEX(Y?8BU68RS(S4edl=1ti zsZ`O+ku#MPs73^JyQ-$TvD*}Gr>oEh+)hrU@yyvYG*r|+y9rh3Y8Gr4T4{xJ=C_2Z zYmU=&lJS9j*NCUvVz7o3^Pb(`G4ZfK`d$0uc4_3HJl=cD206Oyi| zWOzQ#rzWZu>-#t*)~j)C`aZsXy?X5Cm|gYyvn*fz7Bs-?B=8DcmpSUX&W@8vfqDt} zlw07`Sa-oEuJ<69%@ta)GH7_@N*zf7a-efgt>%@JAswlLY^v#Zmv-#d$s^F zy&-G9zz=%7vgy=`Ej)D?z zID$q&_V+FX*=#B~P!DRtJwkSwK;(!MZ@NpR zTFZ)kxk19!3MyXtO0}9x?=5G~Dw#nsO7XHPfF@Sbyfk6kZrP2_>Z2Bn?nv>szOUfS zzSGwGTPq-`bwhQ2%-{OTd-uH3_pJPaK11Fa7#x^8XV~XYectD+4P*QG77zB-S>dZY z*f(~?&h@^wy?x^b`%a?OnuJUU_}c97O&IKJMr$2=cLo^Mn5zz z>ytlZ$e03un?`3vE9OS?2lpK^x}SfD|BO{hnT;D&l>L}wQ^V2oq*`P~52&=TXHLo7 zvSOYFm(MFMv4UfYM+_f5EU)<7(1_t~EPvQQwaid2PAe`P5gIjWZ1KR+!v>7XA3m(O zSe72r%CmVF&Mhx4FPZEvmr;@8O~SWM>>J}eX*QOsp}mz@R2jF??9ix#*|vt)@Q zRbX1_6kf9?587^_{LJi#%Nu^qFiWX{C6jIz^=$q>dKE_PHQ7^k@r4{ggO<;u;z!5; zl7)k;Q~6|SWI9ZC7hx)0=9kT-wWi*slHOH(PEAG^TGpTe1I`R&jhIbTeN!3mu1sBxx9K4=s2d{ z*>o(e$9aoHE+)~8%@C}eoC9=TCiEqI9<@5Ts@7OqiI;S_FKH~Tywhv=ZWW$WCJNAi5sBI_TiS1( zFtRxA668m_HXzKnM0E~f_(I2=qp3f~P2HI}tEJA8Ey7tG>tL2&hpGsh?kBa6Md8oV902)c3WNxchq##Sq`l4Exk7H%QRu-gNS=ImDaJ z0fNJR;4K?Jc&6*DF~{?2!1+F))*Q;kfO+9^!E*&~C(_mmjt6BmKP2o%!7)xSC%lL7 z2HtTZ7s4aJabd`L3vemdF+AQUIdWDK|1{IFbGPoDt&Rl)viZ=34=S3&GyK>m4)yp@ zoN)1EadFAKd1dr8G__><49|mthm3n>@H|2ABbn#X!23Aheay0~=cT?}O|~sqTk)y~ zZ^$@*p+RAf2j@`>9BY`^mhxv!!1sIjz4Eb!iOcoM#~LQa+1^5qE&X81_Y2M^ulzI* z?v>xvgYzv8@&kgK@*ncxY=gnSs|LJ#4fy05a9n{r-ZAEhbgpB@*w*p*<-qqF4#2U- zPj1(0m`YKK?__n<_f5tzpKmKT%kf$9-90G>P*(hXeHAr=!*T+!#Rg7b;(67EO$c=+kpRVS$L|0o9i@og}E zZvlQx=09(EuaR`B@-ezD+K1IKb$p8~1>rNR$=awWdbz_C`= zT)P?-`FPC_J+}z{tf9|mg1_&M z$HW7IGq0DwtAWElk2i72G{?YkeXTTbjPpAU9CmW%ly2&q?|_6q{Pw$hPyPg)!lb&D zp@M-)wlo~cx2?X;^j(Tmr|iydELV}a^uDBt72d8od;6g9{863Lw+|{f_TCfMZ68z^ zx#y)r+Xs!Z+k~cV^?v&sJSV&+jlT8`j-k(vSG^V-9gfrvjv75OZS4vgmQ^41%h_}w zjlX%OZ=ri_Nn1OE(7d!qQd0^_H&<<@Z=-VuURqGwU-4nynrZ&LHG@X28D5yT=A3Ze zn&Q;FHM0u_RNoj_c|%A$xl$ayYp8mAWC$dL-29 zC=sMmv(vU+GKk6zMUGOjp`62c_AgW}5u{khMgz0&B*n5_6+$^jwF*Rps-Nm)Uo-GG zQiaPUO}K3PWnDZKNeX7EGVLRzjBn3%%cheStO1H|aQ~6KHKbtA8dZ33-0|b2Lhl+> zP_58aT47N2Q?;LYYkb6Ph1Lz$T~K2Sw7=@Y>wXK`d-5W`1UK(!mY4Hg$Ud6aidy73 zrgJFm?KQ=@-2S9PsQTek)(%*7d#Ke*loYb5br<9XH@`%k@Ddf@qm}>R{7~fOP|mhc ztFQTJQw0~K>Q*>3sCs3}XPV<$N7#MSNd}?8C$npt4V*f~iaD=RTCXDHPcj z$~mTF91Gds5C>Iq=ZU1jpz4hs&pvlzJCt&aitT;(_DA-s(taRa8j>!d2$fDfv5kuK zO-S$bCdcd}q(^GVJ``Vmwx|4&jq{S?%coj8gNx?IvQL&_$F`tJB;_ZN;1 zx@_X;AmwvAeE!l$tsFfDR$pH4&DuS->h=&_;&q_m?&xsI32%HKuLF%YRe#puVB>Q` z@jCSO=um6_CwDnIIDL`sX^W$`9QxJKV_@~hGu}>`J&k+D{zi0hbf6;7ysY4~>ID6e z7b(yDRXU@8ub*k{2X)4=yfqhR{z^ladW1Ub2oJk8l~jQpEoe;8KuBBu?ZC^X@%V%y4MM&x^s$9NMsqFU4SDiMzS`{_ zp~z39U6WAGH>7JQXLHEj&(?udN>?g9+-=TN|9FNj9KJMiUZTSI%GKq*OwH40+tM4d zLJ`vGInpBe=TmR~GL-X!(wIi(OD&Z8KPZj4DX6!pFnb?2#j5N>uPcqIHK-|G$y+m= zE}2)T-0ftja%!D?X>usCIg~?J!B6^np|Q4;>iZL4FTHlX{W$t0bo{gdY{PO6>mK9b zLVBnkD;u-%S?V#ic6YS7`W~(dx5oD1kvB*cN}-E@dU$7@;E}i3n$)2Vpz8cewWZQt zY#y>-4AuE86xlnd`s&tO$BrwbW(*$Lm1iHMW}|kf*K5O7zixi1DaoUINOqq6S+LH* zP|jz0_5o_@)Xgt6unz?5>j7cdtH>XKyB!0&2=U-#MeWN_DoX_IM#LLh;Qn)C<}# z;>aJ}PHp%tjKAtLt*Z8XT(kiT@JuCKxtIKIMQRKrXXkMciPOTX* zDiX5R3@D6*lGh9V4+p1kuXUih?+7d{;(MG7KQXrWWpR|`qM zVC401ZfQujFKyC8pe7xJXv*16%$3-QBS64|)QMAo%oHLcUlXZ*_OjKC zd!ZSZFIB>)XDrtZ_c&Eriz+poLcY=MwVc9%>v09@!SBf}d)-nxCao``HseyHfEz^* zW^n_54WK372#F0X^`el`t>U4gVSHp=Oo4Lqti2D@k zv(iUe_8EN%ZN{vsD@TH-pOrq!vb&DwRNj$Ey|}bb=K?*e6#h>vP@we+@TRI5jn(mORvV*B8(Q;O3%{ z?yfDM4vH&AEpuq-X5iHcjod71vBJrAPNNa_=#-**W9cLfCT3(`RcT`U9iKo<*u9^_(K zpu;Yf4H}LfsEnSVU-N55{-hT4>n@fB`b`%LfZpR`8KB`bg6jeLU6)TNQI1Y%lVJkU zr>dicM79K9uhLyo1+XUCq^+C5m3EX-ob)V(6>3*z$oa~9jr$b^p6hKI|>@k7 z1s!p)U=%cLEXxD^lEc?63i^yeR0m9jsdv^mh){D+;lOuF>0rI0p#S1veWReU z(-_wm^qUS}*C^;89PF$p=u_myd6JbI1>MQP21P*+bFi*a&j%0eS#%Cb)}Scpu!D7tf-Z5ev!b9cbuiLT=qDX) zP!u#i>`St`M?oKR_|A-ihI238couX!HPvMOLQ&9XI#~B8=midTW)$=_4%ROU`cVf9 zMM1yeVBMpj4?EbIQP6cAo82!88V;OTKhR?wzV1=b7dY6NQP2?w>lXzLv&r&w&$vfe z&6NU?X?@*7a{uIJIII9h)oQ)OoZf2~4jG zvu%xpxebUpBM4Tszd&j9L-iu-)Jm&49a#*%|HJQ|lm}K87Ly>5_llU>*1SCru6Qve z3Se_h@^?sryQFL+tS)})Bl$3<_|+~>%|T)Thsl}Nv%%QHa1sO(A63-07JmHv(FZD{ z0Jcc>G^^5DVx79kYEH+6)C@>?-jxsI+fIxd$?qa$e>umALBe1+4{R>%Cy4?1q;Qd% zpWkrF6-iM5_^~HW{%exsO;k1lAWs#W zSle3i_=eptFNp%^CJCuD#z;6Rzl4OJC1`&+lO$N{n_UP77siuz+y&W5Y}^U-NpoP4 z)oPw~>SB@$xQ8Uu(nMI(TdL7pJiE}5zjaO~n=1*Jkj-sV8# zK;G%(|%ly_6gUut5@7J`J!XR&zRXGav!q6p%1jM89J&iZNM)T}#tf z*g|znU@;wp7oP@`7#KcG3<&~xy>L@A>^SnuGfSfY?v#W$`AB%c)d?06lSYyc@?^0i zB>&)D`|eJT0_Y$Kaq^MS)v-Xuu!!qi=uRQ;k#i~;F}DqX!s^vm2F^`?Tykx31Wtri zgcoJn^cwTZ%vgIv_nf8F&OkdzDrJCK!~~Kckn4o2wzc%|(PKYc6a{djBYYuQ9JV(s z9O$jCaF|8RCV5wGF+F}cr&vo@J+UD(iglHW|p=!7UVkN zs%iBZo{N|>*(FW{&!b6rl#Mx5Xd7AG{GUonkAFafHO61Cg=&Y zn_6I=)oMPsRO=|PbE*o+ISyA5$i+@+Y$!2F#e|dcf@~sIk(%M=TQ(d{ zb|#>hOcF21t6kppciiya(i)8@9;V5NzGxxxlUUd$WF(atrJ6R^1os}2@c{!31DM}p z$5>9pV>Rq&8VOUQtGNtx6AZ*@sBo~DlrSDY9m)OKv*L>O2+Ig=QW6^>0@ zy7rRK9$Fj)u)?v4auGmHB&>GiPk@2NlQi9mLE75XfI#`Ip@A z`t6lb0PN(2L!ACdXy_QS39!6#T?h~1u%B^at`*)tyLs@Cjt6dP29UoA7d7)=xBT!` zN)!NWC)*pE^2yw(f!MGN$CgciWu4+ecqm^k5YNBVv{B8!fUa^fjD=;z6E|IeAmO2% zF4k2aJ$1*DD1e_F;Y&m~TM?kYIl_x!S@HNycQlaG#b(hR?dVUD-|Q%W<&xmedHHq> zbd_W3ieOsbaG`XuLqi=CH4_SYkXj69lqEtR883bo(>YqKL!J#))4j87`JH$$}xqBQ-%FKM*cz*<&?aV0s4VsREuDq@rX?_!eRo?b!_J%-PP)41kj0&p_~XS{Gbbg#QqFqt3f^^ zT*)Lf;Jgoo-93TERp4T)72T)i)0K{W7O;PUZH>X(QaqCr1hT(a&f3=eE3bd(=)x!f z*zFT&$`x4bNCylXt_pXP0mHPXlJBC0PUd1MY^Iz^j|D>B9;sP=xHNDO=wkVT znXnAdlUytvbcu_JWLHDzmLfd#;~q$eq!*ele{78oi#&440}_Q&mzcTwOBrEDpX?~; zVGfoP1wG2aI!8gD>tJ1?pxyd)jeE3!bNSUyz6E~Jn*{S&3zpf4Z1ymk6@aiSgohdn ziIl1szxuYnrN7FZ<*q%nM97Z89JAfd(=Esk% zPm7q%vEm#t|8D;Gl)ha0f5^uWeFsn9#Kig*ig6zF133?xUqRvdoIX7}_w_CA*tut6 zsqey@d<_Rz-Fwzp-_(x2*(-bvdMB+(~F>fWSRzaax(?D@dJ{uJFr|HFMJ z_CC!wv!k!k-~-=hj>?_0(!cPrs;B*J{1yIl{YBHO-nuubG1V#9e?Xq=%tyQ7Vb?UY z*pxomFP=xPVEDtV-t;d-~3JbTI_YclWd?mFjDu6R(~^u@7$Zv?NH zL%v+fl%8EW7ni%4wP&B9dELaT4xCU2I6+DFIt>zO(`QXD*E+?pD_u*;s}QXv{FmJ7 zG?vl!dp>nCg(sKJ*+SpLV^-}gALhN~2l3wWq1e6UeGz}$9`P2-A{|v&&c|T=^wmj) z^)sqSMt0KF`WXZS>-$?!(v6DCB0q){hOYKiCFj>)W?!DPn7!@%TRwIE-*uuBpr+#4 zzsyC5(jiyQrmadB9H*Lm=p2^sbnXQ# zmia%;pF??BFMMi5qzWkCl*_yvaLyH49yT~h1;6NT>TAY_5;tT?R&`31{0j{QOx`eY zn=)Czb!RCt)&`m3a{Ked%549!gqboq=SuZ;rDatZiAL0#Rzv=uWMTI1Q&^fC%=`-| z$;6oZ#WQps*bg0x=bcLliR#}o7@ME#&uiq&`mZJ|QTe}0`O7HX8%*BoDbd83|Kg51 z*Is>cjwbKbl#)pQ^MX1Ht`pXuo7B|*Ho{n@*-qm-5lEq_Q6Qo?KR`T*^3N54rz_)vMXpjm)8qI@G+MJzvT3!KXh7k4x~yc!_Y6>0@Cx;-M1xkl|#XcIEEjl#K!O z2l6p^s*2T$8`li`98VZ-79NLQA2peh#6B>TZyAZJc@)unT{6B`E{Nrl&ciNIt%eCd zo@CAzezyM&Ja>QRTH-~lrH(5Y!!v@K-UkYD|{(PCR z-tbYqF0b1+O&tYf1bv z1K%p~TMc}k#Q$dC5_S3wjQpwazebfvrjd|Nof# z68I>J?EmhWBs35*K@ftV3=lAKgbbJA&Oiba2oUZdM+i9}8j_GqI8-2zM463I@YvN| z6+9PRuU%I~bTJ$XcC~9| zX?Tbl?hp+>jROb>GZY-#HRpF8;p_+Qm-93{j|!n!k%Q1Oe1L^;y@p3o$55}~BM84! z!^;WhRl&KwwIx6E+lq`QNVWF5>{LeqOaQQAJ z{0B|WJ%lfzK@r<|BiYG6rJy}*J6=-zXDV`$g71ZFzX0J-OoWbm2}iTYG=U7!aBg?2 zHJrh+vYzLdb z`CuQz{St&d|8UDUx%nG>i7EEsv%kIcy~m$kCIsp(fTUnwku1Gou{kCG<1G3RGayCB zWzh$j&1A!#a@`W~JIr|e(i8iC{7FdGfuH&Q65Syf-G5C5(k(xPjFKBzxh-+8;*hCB__zLSPENjae^*F{T+Bkgcu92P~LwX z(QxEz1b%7iuh~>7>24OxGVT|ROvu&_y`X36RB4#^V{O17B|L~-1%^xH$vJirU+6xJ zr7HtY{~E0x!m4PRGV-vDw8OnVrho!b_bwRXqBZs^Kups!8cyxb14lU!-9+s)B}?mW zYb8rAoJ6A5!*7uYCTdwBDR@ESZQbn+i74_uba%IAEi zoDc>Jom~_qaEH63t%*tG$H4XmXQQA4>n3svrD6weJ^1rH(>$&NES~8rDFt9&rbjwh zJkz5bOx!GOMGDb_X!s?W$-Xu;U11bt8Ua)245@IE1;b2vf`|OsMA@e_qMTH-!c$@Y z+bk@mSOJ|Q2rj2fE9i`lW4hMC;+d{l zl*()t*Am>VH?RDz^BM1$nyS~1j-EGibd<}zV|_AgfApGhz?!mkz^x<3 z4BYa#z;6=xS>vdy6S$Q&2+GZzmOCLcE5ksdGH+#JZXs+1>%8(%3Dd9eZb5EYQBh?f zoOAP+3D#8=#lgZ{9FgP}mEYvxxy$n^u7S;a#I=gT zyaJ&@c_#vPqbaB=#|ht}io!zLC`oLGBo6r20!T;oc04z?pb*v^$<42-fDMI8s+N}; zx#eY`VkK;>1ltL-xn(5sh&&B7 zV4?HkQra46Sy@HU+ssa3elrAZlx2syz$Z{3=oF9#K9ieQ6&1titqh#IEU&l}+yN8t z;wshyG&C>&nyPYH!eTQpG@_(zDZGP{w}h$#SPQGOLptCWMJ_X+i^D?o5c#~EU14spb?;U7b^Jc)U$0-`U*vyd}W>nQV1YH;2Mp5SfH2pA08%Y)G z=XIRf6rI-x7j&DDSG-gO=L0wi3jyBZfie#rC0N$oDZR zdR%ji&bzpU^jl(4O8C1Gdiwdm6Dj|PuwWsi$dkxF&L-*khu$Tk{kutjzNS!%8fB0^ zl78cIshH~-`X6V7bp6$Up-i?DND&g@nH57q3;ts}>VYRx`cdsg@}J!Y>2^vlxt-%u zO79?&V!ez%0t90ApolIkqx3tNkNS-{zW;acfbbK#Y7yp> zbFbs*h4A1OH9ivFE*u1;<^7AWdBn7KkBpmx?l#>Q$3|Rj# z_~Abie$S;GyfWCNjE)4ziN{W}3s)JP?w9>fG5YG+vAkdb3 zEk8E^LJt{m!Z9d4t$=+PsQHV&0rSD{eykQ(WuJj%!ub6Pj_s83=M=oNg8xgwyD0d1 z1y|*CpoWWm6*g^_KS|-oE{E|v1;@UFaUSR3ZJB9grQ4180RgXFOC2iKTMUTd|E+{` zePR54!Z9xx&|HEAiPB5zl88g4ZoD)Tz^;&@4r%`@$)+hcWU@uB%kL~SWX|p zf2Z+de}rL&JlXzXf9==sYLatQ!#O{nXm}A7^0ykkjO4iK%yx45$=@iP@;XC&Jv4qU zrxXoup!iq~e~Ijws^Pq#32*t%_HZ9nqVZo%`MFNR`CX7-X!s?hm&=Fc^E;f|HGcNv za~l3K>D{m4Tpn+0_#%pbs^JABhyBX-aJy39jlpXVQu@x659a56doI`TKM?Gp*6?;T*jcaPGl^e)*9G%%FX6oZJLl^trT?ua=S}k4HyU0| z_>USsn&hkd&7h876F;xNzaV2|uIYsy!w>Jg_~-iC_NS?euTA67C^> z_RnI%J8L-KZ+x13o{>*gaMaD8wDVGGEWe!O^FCRO*AYHVk%Rdijtmf%Xm}mrD>R(@ zwRH-P_Ixd*7)FS2*1MVTEgH_hmfWStL3{p2dhb_o)&GwvIP&+Ua(_X?xu4;Mkx&Ny zZ-RdeZxBD*c}T*>TN=*emJc-fkC5JfY4~@9^GYJ96YcCr^+~?Ar?pgS`6{?2lULJMg06_JmY*Hs?p@|x;1xbIP1M%!&xsc zb;t5q?{1Bs^&Zi1*2`m8ltV1SVe!&!VdGDJhmrkBY=)Nz%s#n5AZZ%T@mU(anBvPc zoZDTkhI9Sjrr})Q%F2V0-|>S@o_r}ODavseZu~TK$Z+3(`;K4E22u{EG(n~rm%-Z+ z{yDHgi+^^8?@RwIf9Q4C&gre0xHm%Rn?QY9JiGuGoF1r8g_q=lnSr{)nW2}f;!ezh z{hc!F*BXeH!S)27p}e}rsvZCeR(Ln>Ukt|j>oZc)dmK+6eli%7S@UvQ)jr&#Aq%$G zfNdJ~vYg8mIckz4BFQ@^Uh{OXMm6&nqN#TB&4Iep!4AI0K+QUM->_j$TELUBN4)C? zd4LS;_0P==y-k_Sgk2UWljr5Tjn-zdyTVt(SoyY}rxu5E_2X0gb^C&U_t(8r_5PH) z3!YkhKWD>r9npxYR|EBxsac^5oX4Gk`nG`v@p!b$3k+EyDY53dj;#U>V&cJb1HKSc zw3*m^jm;QAotD1lxLI@7>~hf8So8O$n%x;fRU|f-&GvcC?(`Pf;%&BLHM{4u$Y$AW zU)JpQx5(zT+1{(!JyWm+>L*))x`V+^T1I@0^0IV~mhV9QOsFu2J+)OoUbsNs_0%qd zNJi*ndg$+2p??LymsbMNGy@LcznXoPvd70}JJDdc>=c8hM=gjO*8pez_>N>}AU|qj zz&vyTcJ>ej)pQjKB6_Mqk5lMj3f)(sFH`7?6gmcI*rFsIcOqGkcpTqhg-t-j{vRi^ z=!MoK@g^$n1L6<85uApNP^nVjhCsbV&V;>mz&XCdVwaE)KT9}&;Q}-P*c=4jNrjhQ z@uk#+ETFvLtt7b*$`0Jn_{4jgX9AL=kgX*3ZWc&oP+-Q z39@rJUiBy8Us*S@V7s_6kKS=}*aWoqVrcv}pDC@25^45SU*M-N^y#zM8ko5onEP_jY0WR3a& zRAg~84CKddf<5^z9GCSh-<27PN~|9jk2eoyTq6;U!qWa~uA8<1IU$&o2*gXdv?>mT%;s@AHM>ri=5XlPt6Y3V+y9AgS z+UIMWQulE%9;;tl|Ay-mMXw(0_7g40up1ke3-~TRJrVA5drpC=Jr13C8Js8Y`d~%s zDNnp85%fj^dZRyj!;9V!FMGmSyybJs(>^`X3&*I$&mM#}T-OLGqY_uohZFMG&q_=v z@+2R)t}l9O&r6`$1ZV9QuIi7jl2xl_Un-vZeDLU9D0}87Pwi#$X2Lt9CSb|YlRiV3Dc?Eo_Am8|hjhz{x46%PDqnccRH(nx#79_Nr+^I z-uHdEIm7d8)&SNB-$g+EQJl03pDY3(GP7o%OL)mY{9o%|Ybt~E)SuYppA~x9DSy#; zp~Lit-oh5+gOTOyzJsDEK>N)Mot8Db?n}`kf>E%c77RBVJ+;?^J4H9@xp@VU&=UK; zbt==-_jO>*NrKk#F8m*WR`Z(YMlUh|3{7m_y8yl8xv?EUqWe7}x?SIn&xLE#pr3_m zgB>k&uLX%=b;te&1*)T7g+xDz9Rak44kq7x?A% zbkCE=eU0g%UQIsrx~DD(QLqlSRJ$fhq;IcYr!j`8rCFh`cg16Y(v5h>-+;5}A6S-l z{&!eUJ^8z)KRe|szQlP`G#Tvbpf{JDpZ&SeXW!%SDE3j*~~y_1A{Y7=p)n_4G49l$Lm=*|qafzDocr~$!N@WeB!Ulr85xn{a&7YrQ1D9^JK%|PgF-+R8pwT;2FQT>9WfHief zdg9_2z&7JVFWLU!LNB<`eN+0S;H$l6V8ag=P<$<}n&^2ps(a|&+QzDPpiPLI!0gj|Bvb-#qN8+Y4l7y|^o;C+7Hp z>Ieh0W&WD;{XDh!iw95xJhk{8BUBM!2|&-BIwf>g6r8L-pzrk`@ZRFt^fvee2bykl zWC#x6pjv4ELC}sq!aO#82-T4KIjQGPfKgA?-9kFv`ehcNF&==b1_|X2bO9J3ZofHA z*gl;4?Rho>3T3&c_G!!-WfSjnGMlyUfQFj0d7fI_GK?M*_(=jjiOT^mX5hdNoCl*c zyyHV!7{$N{hY3-u12onJzQwZDS=IXU(URBTPwXW4w-Ky8ZuiJH3LjJH|k|f&_;WGpHiam8*;TrIk zdg`!Kko>KP-z)hCNq)#zp#FAI?+XHhJBo&o4o25)g8~g~*oUn}c`mc<+ljTU=^ki^ zKT{$(PKo>@oExf47L*u_4Bv#&3=TN3kHl<01I%^rRm})M76Y;x!>FKB(^SZYrc%~B z6mlqV=5U}#GdasqDHKx<7E{wGjO8EBtRK}$xLq`8L5aqUt_hsD2|3K80)}D=?G@DN zy{3Qv1PjIZ(ViRd7E;sX_lst-3o><~`upfrZ5mb`^oL*<-KOrIXD69~nmsPjEu=S0Kjhi< zy}$Zg>y^QV>07JMMXy{5$svvB#@9hq!`y?RHz5^ht$PvT8AxDV-~G?1)~EcN;2sEO zWx@`hWZEXU7HFt2K`M5Gfrb@_z_8Yy8?ORW8de=5E1Iex3eN)#a}NpmC+=;S`-r4& zZ&>vRb4>#-sOwEnfq$V2mU!xRz+e)pAW%;T3ajjcK-mu!FUflND0B?)q~Z@PvY;+D zm0xy&O!cYh3eUR{eP3v1f#2EB=ayk=^BU zm6RhsqxBsW2A-$^|M|YOKR$&DZQ%eHMz0B>&t&6*`K%1z1^Xd8GxYD-Gv)0Qwk7pE z8xsh{CJOo3SK{x&LIFQ9SEoXz_Ihg1-~|}#STw%^Q8~K$o47CpJOE$!;ttQ zqgGu~^S!%b3RD;9dB#IGE%{Ht*vF{(KE_jvZM(7%suVo6*j37AyIVYO)bM;4qyj(G zd~dG2Mu>xhn6NtK$-(jNZcqK4AWrsf^@CYT(@fbeYrcmO$3&nvd|wT0p4yQ>XVts; zR)b{;Y50lbQjrSuNy~*i7(~LOmbzGK}fjgR=Zn#-;mZHvYdlCJacQ^+S)=X~lCp*0*^nI!zc? zy-=PZGAFO3s?giJqzJN9;VsX@x3GhS6*8yr&b+s*$Xk(Dy0j2~lz}k26hFN12FsAQ zvd{~^ZGa=aD}|Vzy(@bXUq(d*$b*kLf>0#P1+IsLlDBsyxDP&!BMu1)|Dqw+kh4h| zd^uWNS&5SH0$eXGLu#N*RauC32LTqv;>|0<95feEQdU`sc`2_b%rCA)lZ#8eRKAG! zu9T{{YIyO}9&hggyheEh>#^vImzS3m;=AmH1>QAXE z8ASs!+MS}=GU}yhj*Rv+{{r^AdM%dGMDr~XT_&S_C`aWo+Lxk18SQTtiVUun(G+tC zL~#`Y8TXm^&X&8^Mv4zI-vimW3W2;n%se6DnFk}BF`vl$9W3X)@ML#sV_tm9eSkM7kvSsvo7J%nn!?z-Uw~ zj82R7p>&ZTc93dBY^sb&BVxx$(b9<6v2Edj*ww3}OgCwoh$XaN4qu7IPW}THNH1^u z<$0@(*en@KlAKeeloT0TAT^|dL2rT)acOY4$V7Y4a$zfc_70RdVA2kF0QRGB9sa=Z z?3aL{Ba%_EJ<$&NimEu8;^-1bw>UL#B)GVu^n>!f#Ki^7 zb`Evfnbhrk9_}?#$WU8|v;z{kC3ocbFjsTCop?W}aj7n@a%j?U+ayuvZU&{&p=mCx zbSfQQ>(r|%Z5RX5KGSNs6qdK)+*w*FK%!>3vrOd0aE0gyERzPQ#ucJBu*@}dU3$YZ z*Hawx*T(j5zXJG%+H7lU!$&j2ywoYc7z;}$#=?#!#zGgySigXyd@;@(X_^>|6k0=H zFNpnf} zJx#$7!31NIZ9`AZ21wM*hMt-YiOp^3-P{Hm)PnozzVN9nPB-H^_@bq|=mkIJ2Jb~4 z^HVl}qFk4|shyLp%XOI2YNzSx|{QQ(*!}PqMx#sC{ zKa=drh{;Sd6@Ac#Du-cg9gePW54HUOZT}8XFhXcabvk~GE1{c*%RQCL$BUOuF|tIe zyJ*;{*sd{j7Y#d=i_43cnaUjtMY)n-H5k#n8jNH$Tqi$pS}V#@!k=y1KHx-Nylj5J zb+S8Dqz_p4NZ$5I5n-4g4(*BqD+t5mfiOo!!x3(87*38IdX6j5S44!}sz>*M1i0v! zJ-Ry9qQy(&*_+3jTYOBl_!##^V|0tncZZ|3=2$d!C|Zgk+{iS9!woyqqG9dfV=>vh zk2E*zh-%moF679rd`lW9{rD5s{Rb{w*I=~M=Ld0Fnl!nnB&=38Fk#VB4yBlqDZ+U8MkNo8Y zhItQP?E#T{*>xhZ6u6xgjYolM7<;m8yuij$-E(>BkO4v!#_B@GW!?~~2-KKT=RyMmK@R20IRbicQ` z!fHt`6m33^N)@stHdHR{c-$6=0@Cmx?>HN;Yv!059%jiKP_2Cf5-asNQE@-2W1&Lc zxIDwW2@!MFxFv?!Ajs)MFo! zUT&DZTtC27*Oov((Zmw%F*|6+D>2q|;7`W{<`;6q@ac*F2;?01rXDWdjw9g+koSJAf}E3!Z4*UPq!w?@*12( zBG2$2Bq9?10a)W<;z@{g8`DJ6yxxGcriuj36(^Env0{zTIhRdq&e<2DEoXv^z7Ckk zXlYTm28k#(ZgqGfu9Zn^VnPq%c9zGC;E7M;6QY@2cHD4yPH7A8ZtIa5u z$!yzvnao&TCbJzclNl$M$%NH1!Id4%wrxkW9Vt?_hm;mZF`czKyQ*t- zb_3TMmpW@?!nm<{Drfc1?v8914EDT^7>xFCWMH&sTXVKpf3p|hw9cksB=YK;y(1_Q zYkl@nl(d1*^%W%$O`;q}Umok&bp<7XHBM1;UrIvJeqx8o=`7=@(cWpQF9PFGzc>tcpeE`~9|DHZ5B9jCw>0{BT?reXx-Zjvw#6i!A0 z-UtaR4^dgBIM$7g#Wh@~@*1wwoGWOk9iT520aw6enx=#e!0aVmK^F5RFb$7OjCq-+ zAqS>SV!F!VOJRDYgC#M&+QGa`^9%*ZOJI7v!xztVwS!qq|K7n;n8qF*1KP**a}q+# z%QU{Wg#q<4y-Pxf#WVeqgVAFt0m`Wt(GgZ`WiE$h7L)8L)0kOJY@7*zIH7(XN`Prh zXOi6utCd#MRnB>Y1x#5Wr#6ilOmdl+#sU_^?gEGt>Ss<3dp9%5g=QLySP=UYAYA~* z`w-zWsu;4*ml4H0(ZCbaE1sjQ7}iu}vXoMo#zH152#PY+HX2(w7IYY^iM-E&n0$yJ znU-VEIE+Nur{hHZgU(Q?ET%touz04waIgfXzjiP$)89E*64T#1SPIh@94wXTKT;0> z+x<2g9C?O7Fff(rXB{ks=^YN1#Pm)F^D_OSgC#J%%faHAZgenCv6E0|>Z3+?Lf~K<|&LwO;9xf>N=LOARLF{U1 zf#HI}8fCaeIV_0F0$O0Wps+@%3&M4dSrXp$F+exPr2IJ)p=>6(E&&<QWYLbc!jg z%PWT=HwOHv9|N`^rvKq!DNKLnU>4I~IhgoCMoN-LmVX!VKz(BJFE%vuBO+N+gua;t zZMRd+V)CyxG$&lpEY%vMSk@l0nrSlDfqb+Sw-7bZD*ghJ3$VTI*nZAcr`yS79Q zaG=3Nj;6EA*s^R4(QGHA)LoNJEHmt6t1PBxIaoZ?^BgRJ>4gsFWjfEnl9)xo?>7EYeWttb(0Gkt- zh9?(J8_zU6zAzS671+n+WE)fkCfN;872c<-Y+;1j!Gf-}1f;is*$xJ%Oa6vOz5SJWu`7DT?8etq3E+|KSJSH}&5DH;v<|vjFrz*Eg zy~<#k?Qj{DhAs**J+Le%UCP!?B$t<^fx8Zq57}jq%_P@B;9`<<4lR$#ukD13m^^Po z*-WyY z)l5EOLv#K_Buk1=8N&sI-BOq((-u6P$p>v{X1K1fyD{K~SK5at_!v%%4AQr^FGmUvnK4A-55H2We(6o%WH`%GOIn}EU z!iR@6JyjZAN_Xmq#q`|{mcsNl2eX)d#KFSq7Rz5nJW#h!%`jl)XFAEjET$(qSXf3_{`*cwm~2nUpr7weBuk3W^@j_Z#ezE7g64z^nxp%T z1s%36n$F~RHWXI5zNAZE+br2kdTsR!!_|jXch+&n5yWIyThM}VL17kU6Zb4SLn&EI z?(9mavK$&JtEJ`SpP)8cksKn9g;u6sF}H z=koDFH=1Q#N$DaO9nKPFbT~_x(QHJWW1z)!6JerEIC4^9Wcn(a_>1`T%o=WYvcjbJ z0vWO%;SLj?DlB)*a-%JHI+F)&Xu;=1UP?Ab7|5`oHFl~QOge&QvY;X2U3u{kI*drp ze}qneWjENebC}$3Lkn5#Pwpb48tOH;V;KPP3ueOmcO08`rN3t5u7M{{}ka-GS-e z@N*Fc(SLG8erO?Y4@{4sUq~W%v?Td%$1*0rx1pJ5NEeHWkZU%TQ=7&tCVNn7c*f}y zCMc{ChYQM+8Fh}#vdOk^I+OCl80=^lhU*IJXIM~!EocUlQMS+sN=o0J`L`gx%IzN|r4pY|s*cg}EKU zVN;6LBoJS##(-I6`Z)*lGW~*sg=LjxZ6}@xGL58YADz)VOn>EIUZ%fsurTkitmDKJ!8_qBVMd3ugk{};w>Csk@)?YF5#7eY z;+gh1SOU}Vx`>nkwVdgT94v|H4i1*W^koi~%5+w|lm~tEQ*Mq-ArQQp%JftROJO?O z!IGGs;b2~-XE|5`({mgwp6SI7W-I1_^cNyOaUeyJB*WCrVs(z0TQ;q2DP3>d%;`)j>F#VX9lYHm0{jTgBUcBPz7v2#2#JbPhtS6n~gttV2K!z7mw{7%Q-WXl1P?9TCac;gDgV|0dF0z3RV z+q>D4$2kT_?MhpHHj`Yr;BhEieb^0340+7dEhB+n%<0QnoV9_QDWCw-zAXR)BO%0n+VceRHWOAT!(7a>Rsh z6EFynBL`KGBezlA5}X`ST)BNMn`cp#6Pz6Bq=Fn#oW6Z6XJtFp50RWBN=a;A%k7iv zpWu}FaE`pa*bJuz!hYBybfhy>%IApO=Rl4KNev?b>@t^e%AZazS|^#JL{N0Sx@($`HxeLCavJVt?O+&>!@`!_g_i3t$g7Yhe7clFz^Mg zcR%gFUy$~P=?ra!$tP_n?8h=L8yB^K=2jMW+sYSW9R|h9(r#P%0=J@{wvzAX+;_lD zoU_MwJAj;aB`H0X+gN99)zb-3PkAl1XGdQ)r`y}|ZH-giN~yt@Oge&cUL*mIpfLCH z&3w8eh{&pDo&M3!1^?Q5%}=BO|BSxt&o!q?45yy4xNi0W1(k zF*^v_=lNN1O^Vm;HnNokC+<<7M+zHV&KY{xDp**<2~{mi(o{$o;mmd-8l zog|f~=!_2{OrLSEc&2}Fumq<6?O zrk`}Mc&49nu&^g3&TL!af#EijoIJu1Bs|qDPQ`{qnC8|~;Q))1CENOEGC9G9vYBLW zM3_flK~wF_rfg-p#F4~ggAL7L@>V4!)4y}rm}GB4qt|N~U;2YBX_dwFa}E~I^z#mu z!1OK$^D@21!IGHX>tHEN?{~0Nrf=^kt%MqO$l%DG1me>m(|0*o3e&%Fuq3AMaWF5_ zTOBNc>H8ckp6TrlW-;CEV#UCgJbHw32Gx^Ewg)QO{Unw}MW}mRG=H%L&0>;M!Kib` z`kyyoIvc>5hxQR}K-j3A4dB$!WirX70;OS>5K9E3o?6clwiFrlpvxCeFO*q!KRnmz zq9Q!%9j8?FPGK2(vPc%_>Hagn=&7Qx6t?R6B&z3GPy3%$g>NW-7Ud5bGLxKT=wEaT zB6K;!NWe%(5R(&aXa^Us^gv}K;QCmcp%50WwCLKYG!Uctmjl9&ndeRw6&SLs< z2a9K#zwraU1f~Z%d|sx9I#?3Z4?0*1(+@dV64MVmn3w784wk_5qYf6&^ivLIF}pOq_U(4k3r#rX0af)7wTWQps=}&a6!{q5N8saPPm}3 zE=3oFO`auXQih<~GC9?TvYF%p0WKz4FSH6K9jDCHy_-)mE9eX_$tCDKGpKYH&^f}5 za~oaSZnMnRrSu0tzBk`|4D$#j(fR!ZWYRfA=Pf!T#eYNZ(>+Y*Z|M9Zox_sxZ-I1f zN9Pne>->`m=bu6QM>E*&toVxrwiN8HP`E;W5C3NNo zJeJ2#Z9gZEpC|c2HJjw|Qy|OJ?cs;bBV-pp^YYW5E=Nz#V~f>v18$@*#tby)7OAp=T^ORH87SXx>&a7l5nvKfnvfRKSp^Yg>`ha?Y6_OUp_ zfQ90cVNEkwU^-Y(TsA0q8Fs#M1?0gpf-BfoGF||yCIbzxzW_h1dkZx5o1m0@Vv{p&m$(oL{zld0DB1LCEsF;4&G3Z`SFHD*P(k zyxzTf)V2|0vRu77xCXSp#&AWsp4kFNGiGPZ^GyRr!$=t;Ij}5QmHTd&*QyzSzz2nkUj6h&gDjLdreql)Lo-tCkXV zv^G8`g8Sl~?#`Ci+B$NJ&w9d28R%YP9dK_jH}(*^U;XBwHRn5bmjhO()HES+vpD`5 zk7-X?16_$7DjyIEu03T9MB)=Xz(SBwW|_OqQTM*JAbsh87etpNMs;XaqbMou2-ASji?mNC^UhS>c3xxTuEkD-SJyD6k93Q#nub^guLXKt=5Ra?yHZ=^i>;DtflTht5F!UfK)=h~xNc{ZDJj#H zV!C&%J7p~$35HfKy=v=ZVdCbPC&k%16=Mxv2EMw@T>&|_uCsbr)7+~zyIW6kuS&Lh z%y6$xzT4gAlzV0JTkf_8+*Qd|XOXZ-93ONqKV>~`rMkD8r`+e)O|mk#%u8`^G&j1} zeB2>(vU|h&QSJ-Iz3%GuleSc)xX&AK;eh+b^^-nAzOxX$Z@o3?su8dD4_?*ZS~+jz z=z*g}EsQxD^P0Q!QS02qv6HPa-=MM!c&Nd{1~|B44#aF5JA1yk1O@*pUWl=ZV%+WS z-Lmz*Vpq?O2cK}SvPNwc7o@pR5UHl%w3goL3UnASda3n^d*vx$aeoVk=osV^2lHM8 zW2_zm#z+hv%zI<7QoGxYa?fxLMJJo?F5-eK+2d}HW#o2$zHSo0zcF)0L*!#oM0cB$ z1n<>3;uOSUx%B7@?q}CqImPov4!mk)%?n#<+(p)bgInghyMFA>Kj6M}k~@FY(i(R+ zYn0W=y=G&sd(EWB-32>cS9Eay#jrMlB)7W^Ptn3Q+rUC=)ac2OpvGPH*rV>h8jraT zxgL9AKo+Wg$NI!tI(J~oWb1_$)(Ur<#9CMdHw$y#8YmnK&)f#RF z6DH(N%bt}xYhHFn?u4vq{#nMd!qxf9@+t;F*JqUERR#@}W#+6InNuekxs}VxDuTFp zO>XA2+>)~VYjT4|QE_2OL2fCmye?3}VEp7=W=T~sq>(oj?6GmJHL+N}A=YKj zg|%;T#p>v}<$1*wLhh=H;$WeWTvb|GytK5i0M4AVD1`E^EX=FOUq;y%&IjKWgZ?t~0m^|=T2fds$fzv7wh;0Nc^x(c&Ljq0 zQ(TILAnQRzVP1jMqgJHMsk30QV!Z2?8o8x~tHDL(WtCX!up~XysHM43Izhl4s*Ygt&q;?74p;`;K{WFNphjhBIcyyfEaE(@ zXqNBs)27ax1#-*t3eYY%q0`_rSe}N+(@;!}H65*}DlLX`6|OLHS3+ekDdYlCOLGQn zRWog>Kg)ooxmV)aB6A;}Ic175JL{BAKPP0anTLzsFHv(|?giNR(6Q|Dhj`xb; zs*w*JVWrI1vci&b1IMJ`8|r>Uh2uJe=1|+ot;8Nu_0xnb|HPT-f{J{l^s!2*<(g3% z)CyN_;9*z%qKZOMPcg@`EkgS7XrobFFWK9P_FM@qS9F}ha_L_? zH|Sp~Jd(YMx1f&zUqMbp?~+?pT2)zybrwnpOO)Ef4B90H)_@s5euOt^ z_7dnGs|IG_jwxlb{00oK65!w~s5}jN$TG}pXTa)+@n+Z9R@P>CXb8aLRyTU&dI`_t z;^J?1WyB>kxHICsH$|n#CEXC69+y%RIT=XZhQ%5CAYs03Ya= zkt{ErQU3Kr{{kN-K>jT#|7Mim5S0;^bQ8+IAtpU8wWigCxHR`OW}CQFe_V<`E@_-l z2T4HPxVBzMet=|&-xH?X5LFXBH7=#Wb(7mQw@sWip)Ka+3*woFXMbFLjVm+G>zWc5 z?~k+4o><5?hIjEG@(Xzi&u_V%U*O4zvohMQX9q|i5t8SSEZo4-m~umOP0XyDT@7w@ zT#9Qcn3UdDtQucUe8s2}ujR;VUWndJ*M5c9uENYbbYbBp5mGxXQ6#(2|tJD=Jutz3P8rhwqliRFFokJYxB+Ke5ARy0^j7e zq7DU!Z@ARsT>%DQ-C9ieNW=qi-ZH{h6F!*uuK_#@=*@(Gj-Nb&J8y9X>^djYGQ z8)E!eCnm=|<#s2#BUXw@_-^$O_&-ka8i7W64Oqu+a;L|6Z-|15R1*y~%k@xP()c*9 zKP~|nphjU`NT3f(N-*ET4pBFu;;D60*pVKW?Ro>OfP&GgCipNFk{6IH+yGU#0ooDT zkm4$nwaPYPLR$md%{EGFPeLYFu33(KOfuXvY5HJohl3^HAm<)HK0WeFGe+`K(guxkZ za0Gt(-v%!Tz~Z4V9&K@HMCr5MG)ZambpdUU75| zdVB#~ie&$?2V|N6B}MzOEwg?u{~%zfpC(&@lHoY%XFkR`J)duY3z%LHXDR(dngE@5 z10;-O|5IdtLW-1(_G49My)5=tz;v0I;vT9{!!+SK??Wx5KQauZ7{=S;Mj>fD>gl%u zrl~+SMdGFHoz7}MYn1G@ds0H({tB#&N=N5i1(%Lp8G-lqVIq(AMiG6|1HW%_>dWFI*lpU+Twn}LX1D7}tzI>vGAhnU`fZKm{3 zX&nRSpVPO3#F6~BiTuaoE%YBYNlwpx#X6y>5Tetn#mVTT8LUMk+KwrYZIbCfBZZej zbQJvS`ms-nq`z^COn*#sjILjDg&&bG%J}+1_!ZO_S&BQNCCDGi!-(Txv3bBx|6L&e zIKko>gJ^fyT^`nxC4OG%LyX&Pe)bjtaJr26`9nc5J_c+6{F@-Z8qOHJ;wZOYpiS2V z!Z=3U;*KETW(T+2>8lxr5x3}p!(hPaCspl|+n}F9!*Hy1;lXWm2nPXi+fR$lFT0J% zgA}*i7ppn5kV7{m<;ny>hnM4I!WSsKNKPmG5)Ge2xc=^jOdoA5*7%nYe}RTCBb+|l zw688FJYXY|s33f-hOZ+0N)5lB@MI0&KzJVwzkzVChSw8*k%n(3e5Qu~lJFu8zgxud zsi}FmUqsv5{RLm$E{JGD+Qq10JVAJk0}1Mngp22M<=Rfdr9YetjfB(f!@lqe;Wycc zBwiP%@OFy#HCUqBpl(dW@Ni5}(Z*diB8k6=lNEL!`X<~L@nbpm6>R_(K!r_gY*|E{q0M{flDZ2-=~L^ z7Vs-cP9r7o(s@D){8Na(oNg{${#OysYw67+IYlkVDIHLc1-^FrhZ5T0c0@v;bJdz(CA%1QEi%HINgfFHlcMjqhUT#6oUx_~r2hR|O z%aidT;njqTc@ntx8R3nD^YHgH;ryMUm?r`LXt+N|vcFpkcw!59atrv-7Vxnx;Mss< zedAZq8!5jy9~8;Xk`{2BCyK;hNAmeCTrp1rI)2jv|MnK}CrJ*!+9&2{K+ZnG`9(Q< z{srcC;XMs|h8L!GmC5I3)5U|D&orw)vL$DYPch)&g9(|e@q-09NE{_SM9_E`jt7`^ z$r^tp9){szC>{ihOd~}J)F&8xf_IR(I!LG(Bzc51pAa`lXo4lwLDnFVc92LrNbn36 z{DY-=f^)Et25YPX|6sv6So}a@|3;BJF>Bg5e^&0a2@_^!zz?Z@_-!c{-(bmyO+vsi z>W>i+g~@WB0+;jRfQc!3n$pLqeUVOp%I}UeEiYjF`HAMvA-Vm#N5LTR^9ROhcAl<+ zHL&S4{_a3O5WxifHE0IT=PUF5BDpfhPaHD&U`$ZBy1W8@GJ@asa`WIvnnL`U5n%p7 z0yqn*$}#u&a|>KpE`P!S%{YIBYIBS7;GH74ggFtq@Ruuy8w1^$c{_-8Bp-9QiLtDpt` zYZQKbW@P?rTi`#U@L#6z|Dy%|FBN{Z9M3B_-lAD=I~qUWcpnAds^FI^`0okV%eNH*5b&h7Bisub1D?jiKl^8d zf~)+uw1D5Q;A(q(t_A#41y|*tQ*c#I0X@p$<#ff)R|v;)#PY?uh~XU?zajr9_~(56 zs|DPLi6J0A_Fc@MLpaJ$Qt+1){(ypyq468?U!mYz2-ofZM&U=1sql{>h6V^Ir!V}o zJ$(pAIruEg_*8|zpMo!Kf&WH@zrVu2tp)z)6n>nOV7-T0;Qw6V$7fRJzk(isF<%1} zJd1EWUw0{Zy23w<9xYK0`i-BXmJyC})N*mtxEJ|T;GgZ`9Yc^mO~Gd?{7DKvrX55e zAirvlm!?W|d^q8#*9ZTs_alWrQ^CD7wSxSE6g*AAF~8TtKZc14j;68v4TPgT*$RHA z!jI1Y%>S6epQhkdG+0JCs+|ugxY}MmYXR>?Q$r{R=UQ0r00p0+;OPpEa}LZuRl(K% zYNdkDQurHbB16~vPX)(MRak!K4iJHW{#WlKiG-t^x$w{Y;}v|Gf-h3!3{mjq3V)h{ z->BeNms$QV6?~q8H!1jh1&{6s5eR7K0{CY+y%k*L?@u`9cc{XjuJETR_*Dw7=C?$_ zrz`xy7Vy1wRD0&r)!ACx}2m{^9V?{1*|f+do*rRXLLtTNK`PQ`BHeF;xMr4U$ePr`Y;!1%RAsGA6b8l{>HfV~pbox|@B$6rPWUnnznkz94c|m~xrTQj zJgDJ|2`5<0c%ti{CV=ZLK87LwEa6-~8Q(!T6~BSmXCA!7^&D~R5-y?grQ4d|M?6T+ zd(>^%_!78=0qlO2#A^9^Y9pevRM+YHKo^1J#6JDg@M@h~K4c|s~-k{<9oLR5o>Eyg$ zYWP&@AMVrex#(C3Pso#P=Y51fqv6BJo}C&#n)JS`;q573hc*0jivL~1lgQ4K8eU6& zyP)BVNH5OoV_^SZPjW8RaNa_ozlL-EM{4-fl;24jK1ZrEcz%ZU-cNd$Y5d<(e3gbT zr8v&hV_-S*cMZe1L&I^yL<|pVcpvfu&(E-&V&dPU@kdj+ys6=}#Q%2VcZzS&@JGoH zw`zDA<@YWPKS%M0G`yDLPiy!B^8aoP=ilc<1jj;XL2^ zq=w%{`TdiIcc-{X@;JW-C?2cf(d0+oyNCIg5Z`4Q|7I#*-hPSs@%JnYy!Q{|pAydR znJ_N7;n_-)--|Ac(r}*d8>ivvR9*oM|B&)kqv2eRH)}XOZX1tk_!}hWu!cWE`T9`9 zJCT2W&~UCN-RL^|;U>y2Z$-p7kK3nd{IR6>Dh&^kzCsQEE%~QH!?#d9SxY#wk!WF2 zorb?eb~Y$-ce^7Ab=lcAjf+Ih-i`@#2{GY%- z27dnz{fYctD07E2er`waDmd~lA^uM_{C9+ZtKokk{CfrO0CG6EXg-$9_f_I=r{TO! zVi&@>TzDMPL&F!5g1(v@mOoU(S$?L5^PX?KTMg@NB>4+8y~hb(qsh69@EbKei~Mp+ z3vzy?;kmjeo}*0&=Hj{Jqhe@wxV z|2_D}@R5Qe{}aUjnSvvKXR7DlC^+)-^M#up*tp*Edma|yTrR^%PP~SXBfN_u2laA& z=&j*gABJf70xGXGO+LTZ63}qo!!uivgZbJ^atbuO7v;ZL!O>1Gub_gXoD$;aZELt4 zvHxo|{%43kq~NOmd4nGI^N+;;8;zgK@d3iw|NI`$?=+luwR~EUgZ59PIPXZqdS4*? zEsg(ciodVmX#d~1UJ=gr@OwhMVG-keKR&C-L3@_ayhkjZ*`8OBfY4sSQ7`w~-4q<< zcxe8ihk_$N_uJ0SHL@ShA%366KZEi$O2JY7eZ=oqaFpMH`p+x{NB+-=|0)gl(gemb z4KE>lxq@TA&GQQ@6&&?)JKCt>+>UM`oc;ea^-I6f@D~W@-?Px|s{F@VkiS#Icaq;; z(d6@Z>(3g_hse%0RKHlh zMZYs$qT$mC@2lazCVZfRqkJAmjZkp3hkwTkXn246Jt;@Smk_>C!BKvDEKmpqgmd}w zbJmR-e@80c+cbXe&wr!gyz$@ziX60`e-C?3!_ShPFDkfNF8dW6<#eUVyw??6Etj_y z9Qnr(|N9EA`nfH&GrWxW3hL)O6VCqO_Yu2mIPWTWxgrPk=8@i!8orzGGzCY!li?o& ze3mH!+Jkc1-~mFmf+PP>8V}4@aAciH{5+q^`Ffnn{ThuwMEvCnj`DX=xnHN?$aX?sF&OC9tB4^e3Xc5T zeh(`+^1n^|Z!0+Rb9;=T{+0dNm;8AV;hbN7-}Dj<=l4x}DsoWoInp~!!+9a!kqWNn zcY=bWoMIZJPgZa>zjG8E`EMfr`3kP)_ZJ$zlFFA?!Q=dLzV0D@#;-z0L3l`!gL-+b zeM?yHvxI-3>E%@;d0c?}sP`o4{Z^Cz4#_#M;nDO1 zX$;-}S#JvA@r1LVKcf65X!uFO`)P7!lAIwLzMk;W8vZEZ6E*o>Gz`Kt4bLV#Pr-3W zbd%sVj4Dn38zg_Df@9Uk_th~pC~^>5O!Dv0aNerz9z_n8Zvy=g_mqZTOZYPij(Yii z@sfh0oV~>VXAO_Vmr@~opy2}v|A&I3eD=c^3Xbwu6aUu=j{JN-`a!{w|F6Vv(fEk# z$)#Q4B81KwzJ~D26ddJ$Ex6$wIl{SKrBT1;({SE3Znz=`?Rk>qXKDBkgilv+)z9-4 z9OYa_F9Iyna6jQI2xmLf$<8$zzJl;gnw$cX^N@zK-X}Di?SER6&w5|baMsJKlw!GH zetF*iJ&nJb?EFZ>dCR&Jgmd}+n(Y5k!~aRRo5qiUnHFE+(&lq)9@37f7pT? zey@+~1MB@-<7fL%Yw}s|j~dQ;J78uYaQ&G_y|~B-{0X1B9D2 zd=BAvY4}Zq->cwQpR3V<5PqxRsF%OP{=I@D`4-7}R>4sY|1Pjs!I2!^6AlpmuHh>P z|CfgUo$zlIT(oPv*+Sq|ez`u3rRPc)J(qAjJl0F{w;~*~i6VH9Fpq|3(EY5NA_x7z z^G=s*IL|xr>cyO$8;9lJLGrIs_)-2-BtKWdQT__5 zZ^a6ZuKkYWlqxv#FC+fd3Xc5Kd&2?3dcxVCybAV>8qV`Pw<~hg{BG57&hH}%j(XoF zy-zAQ=Jz<|cZY(j@_BD2t|u)24TT@&_v!-&2!|CM<;PRK;^%CZ!~Xoc!jE$1lN^43 znEBbC{Cy&q;}+sSLvq-kyqDMo4R56TYbP`g0?X-qxr}!soaOL56~CX%IPcmuK#`;R zEmgzWZ~Q(p%VGJGHN7l0@SHJ;+i=O*g4sX=eM#Fhk^)7_7odqN(QRC;;)cJjHw%?$B;7U!-uSrgtCg)=` z7D7P7xxb#P$?4Kp^4BOh*26!MA8yg)aQpd{hVys1yg3o)*H7|!zJ&4Qep2raP4Bam zUw;3b`3s2uO@$w``fI{ZYWNw#U6>gNCAFan{!h8I$PQ#JgcWH*X6d=BwfY507? zH)!}`!ukDkw&x z9OZOMmi+H2IFjt2e=0cgPbK~n3XUZE?X-d;|F4L@HO=d=ANW11jtY+aXNdn&!r4E^ zseSfV_z_B@eEAd{<@g7}0m29kUqkqK4S$mGEDb+F_;dwFz2&6$Dg{TqJyK9BtgWx% zR})^M;ja+Bf^g0+_eX0qyfxMPUn+9Y<HT-kJzayOe!~5i%*YHZp@5MB) z#{J3i!BTNo!dZ@&()ZHvD+wR1;c0|tX!t_H=Mm0&w~*dE1xFKqjgw&ziZwagNX`lk z=l8>Zp~ykM{gLEvR&bQRj_Sib8on4a4q>N;^Y3&YX!uN$^Oc6DlAQK5Z^!ML*Q>ac zaAa!*|JCr1VWh_YZwVU{6@Hou6<20!{G6{P8qWDD({Rq$1`X$Y-KOE3uXR)oXg?O! z4P@t84X+`*g8ak$>k0ot!>=d2i1adl72z>-Mt^#U#uGiJ8^}*ZBCbwD0D_Kt1uA(} z{t^vuqQfxwrM#3uDVad`FF#Q zHJpE6`?rSk?@)>46t;6QIvfJOugW;je->!`JYRRchV#7B?HbPWBp+)ykFUDXxBxHX zKaU5NX*l=i4{A8~8)C@{Tvfj^xon`<>-7yDoH}I4(7}U-0G*POq8x_}18hj@mBR-C zpVzy%&H9Y22`-Zy1~!uLn*hc#i;)4f)p{@Jivdg!mS z1EKF`20}jsYQC^MyE2Tr#$dOav%P~!ftr_1&#n%`_f$jzYy3wUZr0a<-+il=rjSXq6pckmCG)c2l~ zxX9Bz9WNDlY6l9Q<(}GS!M5si^Qw-ddv^8v3=Iv`8=3iUoleh&Em8jD*)`Mj*L;~0 z$ba>8dcd?iwU2?Ci47%>8xtBzu090UUCy<=`Zc$64W|Y~xPCx8U*fx8fzaNJP)TCPrdNNwaKY2P8tsf^u&367 zMBzqbC1T|+NBMgo&0ljq)^p37KxNc@>ACrUfW9z6Q$i>_-qo zrBSGK6+}GU(^|;i4!jzczt_P35%O0L%%HEc=avmXIr=IghWel)?`>*@5?j<4z^j_R z;Iat1x&x!k+r>aRx=?&ZsDC1=x*NXt3^a^4o3;Qbh-h%1AWE1x!o&!uIe6*BHaNPP z7Re;;rrAKCz5cmb4WqH*`R8Q#PWxw137y9V{Vg=;^U$D=K!Z*=kx-P(<>#+?#muaE zIo@CMWAEU&%=)!Zi~lBC7&PmDOvyi;x%;0{Q_LUz^@}Wj{e;-M#&z@R-di_2w9xQ} zq7r?L(0mhQv-dCZ=k5(O1kr&X?!>-15L%FEQFFaM(F*OY9%}?!2Ws|1#f7-w6^w%C z!~;7%huocbyr{^r4{SaeXc&q)g6`;fyaNS7`ym%;-#qN8y$os;U41@EUP2iA4TkaN z3@H%yDliE`xQhZS+!raZ!reA99HqcA>q6yu)ZTD?Vrqu(V1}>JchGk@5PBuBKRwY4 zR}46dF$Dr*w19+#R|5N^67ft$vHFTrp7`{{)R&Sbco++W+`?h&+SSjDsynf3e=~&ppe|i>T5)1V+Yu8oOoyR4(Nl76K~q> zdk5aLPV9E#=;jl@cjD-p6ZbiB^x%mtP8OAuAQss0 z#dbIq1nQ%DCt*BPn|LRjeT~&)dIkFjWYvBiZG@8hRio$D-AM;LyBcfGnt?9w)qLav zBBRS`f6YH#b%#Bh1_ERH6{j*AhI9)wEJ%#6*<n~oSqv;0bM=9@YD?k0?Ytq^|y;MCSC0uc?As10l%_B4+dHuuD>j_C3yMA+)`O`#T{U0JbY}kBf#HXO=~)fYRcEkU z6V3d2l(6$AAx7o{%EME88UW98*;Y~L|M2!M@KIIQ{`fg_k}!~vgohH8$3OyvS27a< z1bJm3zyuNq5FYWtFi9rKNM0lpNEC$5lDI!iO0qAD0c-u7N+%5LlvNQHgqV+S;r^zkR)Tm4iws4MFDh}z)P zvoNIYIhS(fA)n}4kadUjo9Fnc9#JyX3tQ@A=jr|2->8>)dWt(v`a0fx1}!S;_><5n zdh4kNAuHIBkg}^ujOC(Nf}3LsZwF!SxG@DbfPhfWet;9$iK33m3@H745ilPYb%Zm{ zdOKb(f+6<{9FdO~cJx9=6aA`pk>`Dp-PiG_LKv7j3NqFUes@pDv)5nhy9?4&4iv=q z&bi#1a{J*q*QDIulX9TP+yAiWP@bMAuz$lf0uEdyKtkL9@pIn;GJd$dD`3!*F2I(= zpYL%>$6J_k<9Vp%?jACrq$NEvxh66>W!Jxh25-uNggId-2k1gLiCI~SI{y0cbeRR~ zQ-bXt4`5;nmKrvrvr!h@Q00f{dZwC+7g`4ZVeL?|4%l zc}_oJz+esIY3M}$f)wa1St+|Zuz-#ezQ3M;IQOM2I^luJjP`Y2nNj2Gtj%aF>a5IY zE$VzQV+ZIe>U=cgCUJZ!V-FmmCt+K_D2)BYb79AI+SHU??J#y(HlvpUe-U0{n^ShL z5b+bvDEY+z_OB1jE`b`Q`euESvI~EB3hg4MpWv7VrD&&8A(wT2h4QF>z7G;^Nb616 zH4O4W-CdnU85y11GDdVY>h0e+Qf|S8F~4&NFLgr~aFX_5HJqvoKr+qy1bXQ^XO4nI z$Js;QjQ;B z4}ID1&=>I&UzqrO#~1q9u3f3$i$C8BRT=6H9YMc`dUmYT(fcp^?$Tc{N}+xbQ~GgH zU0Xx!-YWXb0vNKP^NXgH(T!t)uhZ#);BC@1P4FjD@Iw0;cj!Xu1h~S7S6m~Mnm|&k5d&2OgrQ50yTzdk7^OHK%{;Y9TqN#*GPOCSDZ73H7oKxmDZ3BB@zmq6gX@5< z#)02CvKDP+ZpZWqXU7tjKu5UEJGfJj3k69^X)ZXhy|$n$mPyCFVtG>wXAZ07t^ zpME9m7p0uO%evlJEAMDugbU!;#U1T;KE+NKafyMw5ko_tGe2b){z||7j9!T6(f5if z&YYf%*VVgv!V~6w^lH1W^A_W!gSIdgyO z0GYSK)5H;KD^Dpn_FV_ry*uV)j8ED9V<0gflydqx%U&35GxWl)q6~c($nORrEEe+> zcD#6cm{J~?^}{*i!`}y!d=uX+nsw^B_vcJ*dF!_h7n*hY_j{x%r|?uG`nkBy!&5re z**vAUZsF6p?fUWb%UFM?50rmu66isrQx16bQ*ZFO2Qt=&n=9Z0d9~VRL2X8| zS&+?0!YBIbgv?Yyxmz{((oAJTomL*&6l|^uR%&if&a~X=GiK(^@-A3duxN3hyaHCo z)D{Nn;WINXT+!48U*T$Ka!nZ5JYfKQLT{@!u59YKx~bzTff!eZ2j6AmiZ2_t8i;Yl zaA@9K5vtO}4vAdcd1eS~^Oov>CU!_P#|iZWXf-70w@yR|_e zn&&exp{8b&xB=PYbrf%V7%~ErF+!}yl7dA9OL&3ftzUsI& z*d!%^Z4T9L(iS#_>YCw`bqm`9^;!XZj#4BeVIoW5Lv_LWRZtSbOPT_0LF9-z$y`na>CAb7umX$(aMLkp$a!vuPWLpxd-=rb2dQ+Rs8>*AJ8Y-*F0gFRT!39kr@b+Q| zzCf*PqQwpH!N9OAesN1hO>-!qErGAfHJ3LuHE2s}8k)mW5PhOqjuF~rHnA@Y!bb$R zYQBd0U|T^DiLfxLu)Z=BsK-hpRo$Q!ZfSt8?nwt0!KXUwD}zlM6JUFD4RBlQrRt&} z_-J8GsHzHFRTQeOk*zK$*~*f{rWBNEAlW0qreGT-i^dV4uuf3a5|ZYokQ{kaGT1Pp z+L8?igSEoff;G#7??n}b>L?80>v#|h93#c>r97xdaj-JfQipv50PGeL5V|Bu;Ubxm zmZnDd5TImMvwg&x!9qNKn6g^>P9j#wNL~gFwnuTOvflJ)F)UBK5I($F2XJ$^ZB+xr zSaCx|MW7izFt|LhC2)0v3m+ikg^O!&N8ng&=_b7K%tFVNia}RQ_@mZ1yoauCR(lpK4YkrG;D?F5so7-VWD7r zn;bD#HM9j}8?6phR@OrJ<2XX?y&8sXk~6&u#A^8RWUaP36s)fgz@Zktu&Qydvihdg zFIVIEz1rsY)n;InLR6LpVJIrC0jEM6mNvjw&KoqV%G8C|)dT}!O*&ZYSJ%NZ%NoU$ zJjh1HlV?4w1|6z&xm#DQTC!xpf-AhWBcz>W29C(PZ1Ovl{2E+aep`OKz8$C& z{(0LE1fKADQ_Jg7?Ark|2|MCgTGRFc*=n&`zGA;>uM6y5Z>z6{x&Y%1pCRqH>DQc) zf^$i{;Y@}-9VgjPhBv&)No7XUNrsKV%U0=^tk>#EJ0_Tsc?aR}@w-}^)Bh$C{z7~;wR!Kj9{+)>Q-uDkj@G8@L z8gJ$7TV#3Po&26XQTyqnNfG>iK7L~a@4tIr1iw8}o%TwIUWz8E-t8q3@|Aad7Qy#^ z5m}#ihT;vgZByzGH{iBJAUh-Z$8SiCNWcI7`y+U*GLn7zu}u*`r=ow&CVFXxq@Y=5< z8zdA8MWm0~6Pf;tv123Bd%rvz!H?}!(zVF^@4OS)eqSi@-m8TBTR(M0=!co&2wqdz zhk7IZf3`Q$zTVKI5&4f@d1VB@Oxqd3_bU0%ei+%HAAa~{r2N_Q5&X8VBUr8X%gFxq z(1{Nt1kNh;JE_F;mtVdTA^+;Dk?p(Z%$|t!-UEjs`F)Y`<@&|XBGPYsDY8CWZ{oKI zrP%(%{~00Q+j}yCSDIVPIYuurk<^!GBkS9%WY`g@O{+Q70LhSLlHcj z5hM7&osaa75)Rs?Thb%sdw&|iYQ2jh`L`P1hyc!f9O=)yzPc+S{gE?~{yEVYIbQVs z>GcTt-nX8J;E(N|AHnzb{4Rq3!@fU6@cU0H^;P^4IeKW?Q@2Krhu%=6zdIKViO~P$ zj;09yFF)BB!Dn@@i{N|DN7jGes;Lp_Jv}`U{EaW2j^MApJTg8TcPRbw%gA`qdbda9 zU%WGNe0t^4$ni!~0^-E4BjdfdVo8L){FBEc_%k~r>v#S?e;JVu^HLG~`SX$EnUbvi z(B8jKHss69Cl~%YmEYBpt6ti#c_Iox#(_KIwLIKA;Q|c~y0}I(mbR za1k39k6*PhoPrZ7;=1tUCCOVX@(v{9oe54H$_!m75km1rHvrNvT&Ly5?}mwSc_AEs zV>xO`C+;T6#R-GrJ0vHUXo~-?fxy7(I;^L4ooZ^s#^of2c`lE2oJP?_Fsk*EVu@~t$fH=~f zGWB9&<&)HY!-!3jscFQzBs-kgOvzqCtXr~|5}PO45ya+8b`-Hb$&MzrM6xbo*GqP+ zj%!Rh(l<&rL&qgb9qBca9ZxlClf>S3D2If3G72+WFV z&P>V0$(VFboCR`2Q}wa?;3%xs(`A<-E?2 zCp{qLZ^PS4S=#p^KGTHBb#)5Wa`Ma>BzR}h^D1JkJN|n z{6K|0GU#+%@$wRhVAK+s1C=IHRD?1WQ>K+>reZ5oF;-t@Di)b8MYZ~Cy1oyOcS4?v zVcZ4)$q`{qe?z2 z-~a!hHuveZ{};vlSbz0@znJk+A@H#Nzuf%V1QBq$-;7Cn$RYg~2=PoLbU%`~DeOd; zhlW(qZy4dyz*elYI8``qV&CM z<|@?j!UZ>}zi(a>?v_$Z&8kX%nO-cFz&^n#E(B05)>m8&YzH(0nErTuKyC6--)-_h zGPl7;I?}jFpMPXlig|7m7lijIGt~tF^ocHBS%AFL@f>hk#}lEk_w4m9=pdh(eiUbS z{WJX#6eQ_C>%Rqh`esc(FBC!(ZkP4EVCIrdXz?=ruZlOnu;lTvmHw5!4{X3~EM5cH zH@(<#4V0Q*LAdbtxO(EowKB1jiJOVgw5fJINaIr{O<(6QeFM>Eao9xYnN$pKthHz& z_?-REffhSzp-P8ozFGn%~F|<>_wFh=CQ@9Om2EO00Tm`L-v`T z>s{dfYEySq6=h59bYOy=mfy3|2K*E+*>!ye8b07&$%re|Ux4MJ!oA|lS6bryUjw4+ z{eKLH)R({|uLChN4>RggBx%HZQsgikgvO*?l{UWG6}9SsWoLD;KM#A|-MD4?vu1Ce0r4fJAH+ zdD@cE^g;T#J^T4LfnNQb!yBH>CUJ_S$+ zDm|^T9{fH8@;jyRn1ARHTbUPS>GP9>Veu1^3WvCa zo{QsU1}G4&Xo1113nnes#tb*}Cd$0INm%$LltFmm(k!S7=C-tt03B$KP&m?_j^556 zfI8rd1T5nK_m7T}Nr3t0R3?SnMLHLdxse6X3($^%cPb?E&Opn(*Lr^Ru5m2}i z$R&QfT@p^?k+l*wiPAEydZC($WFk}(*-2yzv6C%!1hm5xU@3l3cxocV82&yY%fjJ| zV3sVrWtHrvlEGt`+e4X%h0k4c13931r%B!DpIodd64OD1T#h0$tWxJE&4H8POc5{8 z*Yd0s6f`%!PS>?HCZ-VF$8`%feht-)doL zOz*X@RHpB;FelS5lHb8THzk_~_B;CqT8~L~gRZS+l3P~SN|?NfRDslOL@t7;#SI`P z%S@<*$%7`enn}K;1occ#a+tc9oM}QOOm>^lY9{g5iMW9-CixpXU>B48^HPvvlE2&s zQv9*wYsrBCF?pj2l`zR}1}RyzwU734DSLSWN$J{JCMOeQXj}B|Tw)ela!f9<%WWiv z0|xYQdsv38B_Z<=ZP-dSjH6rEuH?4nzyl~+cjU8DD1obklf<}zkJ<9&5gwkzwZH5u(^UhnCyT0kwy+BX*EzZcD^WB}AyY;`~NKm>c>81ZNa(;t|ar<-a1QMW_O z>1KKiMS(+`7Nf2nv#!sXt&`KuwADJ(`m8_OW4G-j*`{k(v1wmh5L=dJj+j@mkwq57 zBu7%5cHO7RQ8j=PREGjYWtoRx62-QH2$PqYC9YIkP1jaN>t1OpB|>c@7%o{i*WJ*X z^{6%i&=J*002)zs6xrDlZW@uD8Ez+$T{Vy$$io5#2X{qYehjg1&o?JVzB&IuK2MB% zo^Q=(?-;7R_O!n2-f0HDyPN5|P3)huiSuKSGtHkigkWN|;zz1r4?s+^*A4ADJ<1I+ zLbZ}CD=ki{yCdCKgJN#@#a3=OYZ z93xy_BLi6>h%jj>S{bb!NxNy;YO@X1oVe)|OJfpf@&1Y!N z*-;q<_-#4S$9gZZ=i~i>fMS1aZ-PU5C-a zk;9i$u_8##Ck7lfW6V)V&55Isnh`Op)g`6ov&V^=-=5Z&o&{$AaCb9(xrupV*c2T@ zY!l~4yO~~Tw)0i2mYodIpjsRwhB8P2D+CcH8%^CSnY47Tiq;(!L#p8rL#&&P72%?) ziWx)4$(mQ_i1T<%zinZuOrNx{G^RhWFc;JOy9>~l$@FKIoSW&tSXds@i{M!TZicq? zxW>$40zqLO(@QMO%`|_=4+~~`nI-39nm-5(a%oJju;fyiF0n8t)3*~Q43xH7d-muB zsu|4CG08T>AWMa$q7{|0BCZ%r>_jW#=@?UAw4#-)XbRN?Vu%&hTac-N2vrew z8TksKd_xSybZrA`>M}KLP&K(JiA4=<@8jF?{Vd!p_W~#(YtJ^YtCQ)2 z7M9BN8}U+Jgd;P*ClKO0mFbff=44vFLQ9>EnK*bPfg5IK+G$}A27XG%H&ffR3a;3?K#)8rW4)WOuuPjo^GbknpjRZ z)BQ{zPU~ixKemmNd`wR_<)(KtU1VZ2x|yypv6goVQEZ%$HH7p@3yc^raLUm&Ga1>mdA8HJQBtY zqWz@KjF&(#Fpud47UpKUz``<_UTk45rhOKc#`IDPOJ$lr*o%%~`Y608W*R6-YtJ5i zlxhaukx8}@PD0D5C{`8Yyu^y0G!^kfG_x=kdEXRSnM$?|qa$2GUqa+)6N(BIR`i6a zXcd#}Fu1geHacpCbZ9?mTm~H>ESY4>;2gB?dbWk@FF>-P z2=_SdZf?25luv-Fr7?1PV&#m!&4`gRCsxkr`Dtzxt~P|?eb>K5rgOvykiEfG5g^xx zn_qxxy;OA&$?Q`0CqV4d4%4+!9rZXReM3hamYDu7ye)wnjGOy(X7&(>f=vG&UcWH~ zC28%s1o24(fMNV%vYm86U+E;0RmJE&tf(Ko4FPXAFqvQ~TFZ)lWI-2*G~o3L++b{c zYoH_tlH~x6A~M5*n4DtPZ_D=XGGZ)CqwfI7nQR`6nM^jDW?jXWT8g4ZzjajAC(J6Z zW%9pGXakdfGodxCo2w4>W76`%2KK_A$r~WWq~(|m>=^a}Nc{soxQr_5H7i`g4+mP)9gr`={!p5r)+Xe zb8MlU>O<70`XbiM=`7N_$*lR6+(K6CN8SI8pj<9GLXT#$-h@`NqJKAauZ(W7sL6;- zQZUU_6y-ebZl?o$=P6VjlNYKPGR>d9pf~3MYo%cWCJB?l_sfYl)TVps>m1;nMud~ z+TLB;Z;wldr^pQP>h8L>ipiZM4GP(k;S~6BS`*}Dj_rfIYRQ?TW3H*IlyzCTqAm(K z7rO&|_VxAA`S=ABvrv4c8@G`(x?mGAecT*zqTHiqOVE;V{X#PNBX0i5c$!OD(l}xgW;e5zNvMPWq6_R2_Y%+AuXq%#XY$6rQZiHM+{)=hR zl}z$SV-0Pa-p$N@Q*ITL90)KC$(GCIDDm0|)|QqQ&oo`Nib<<}Q70>|*HW{%l`Du` zZ$V66WkRc&yxN3T-bf_d3lYMk^?llvO!B8`L5fXh&&CL?DNs52pop%>siC-P#F~dk zIGrA7^PK-4nkME4HvFoKnURS9Y5t8=F2B3U$w0M<`$7x8&n{Vl_Wsobf#Ze~8{iXU_krd@K0Tp-qQgr|VzA zPk(gSKqvCqH4Sya?B;NwIlH8#92Pvy4#1XO8!8WMk$e2`jh5Zg+>{-vuc&RQ3}(0H z&G662omv~JZ)u%cUEh*j9tt;05y+QaT~QG&lAARn%flKX)WLV(0!__9`F$Pu-LR&~ z1^=dH)!?Ak9Ik|QW`Ty74YxH0nrT&QzHL zj8w@|6%BQ;7N?W}EwGSbjbtjYEFeV$_NV>`=iPf9`Viw!+Bs*=vZ6JHXQ{CwY)o5f zEMIEOSZWkI2e%tJj!@sh^D{nIemnH>pxP(^~X8V_Z-^Wbh4?gZ9ujNWMsT52?8UEvHlCS8OH z2}cr~E9Pe#O%C`?jvwmh9Bm9*?>rUfFy6RsPn>St>2Tid94kcMNci#9?#rr;=AFjo z^@iu1QSE$xt})_>^I=RjuDrY3*>0rX?W{J2-EI6?J7^36rJh-rU$(1kYIe5s9?<#n zw)G(SOCvlRn3uL;0lze=gmun4QHyg7?q}n!eX29lXr1$2BeCkq<<2p)%YsJ95yL&l zxb(;!dyN6m>|2cidyY<>XMBIVBUd+O&bbGq+G{>ox9pB~fLyXO87V?+-2UfN9RbTW>RN-M$pa^>AEod=AGhIG)qyWINqUif5G-Ret#HUi|yp z-Va~h`{5Sj!R_Z-rp`6e4x()dI}?n@x1XD9ysjN7G)5mZTAZ%#b#sl82}==9ShI4<+_^?l z)?BCiVWWDfamgH`@xfr(pEuMPZA*_nw9II`d#;gkWP@Y!AftBYJfmf&G3p4cr=#m@ zLzTgXRj|mcx4gVb6U%k_We3-41I^)z8qMEa)6f(yZ>iG!g)98E4HcXGVXdjU+%MLX z*1~oEwn|v57!yIr4{Pgce|OX>Zwb{_`sE-ca&2vbWt&C57FaB~x;|J5YlDV0_<69u zF3_s^t7-$)&05_i98;?6v`R1*f9vh{L($j3(!UyrHEjwuHKQ$cXp79a5ZAk2R3CMJ8Av7wvC`rGbSZu!J+Ljq3N~Pn0WLDX>a@Tyg?^n+LWF09_Dpjo0=Qz{S`T&dvyi0eXUw$^pFN85{&G^ z)zYhV!8&ZQ=DI*_Evjfl`!N|7U#|cHd{&8dfCDJT!!&uwm51r%eRP*!dcOwN8?OP| zw?N3%2Dzc3+XOWD#jt26$O}K^Z>bGqyn<`}ezeISsHg}whK0)ng(XT13N2jS*iv5s zdN~fTyMZe~9FkxiW~c>rSJ{IwU=gZ^71YDHYO=klg^Q}20*y6VeE_Ok+fePV2*b+q zU?cTy(c3ALtOuNsA%0L8R7Z9LSgM<=iPkMHELtST6EsZ>EM`Ui{s18^Zt!{|JL1Y? z$?`R>g)VWS0*W9GtLwth)ihWM9eTKFi-=o)vly@Z%}o`;RWis#s0QG2Nd#JTFzm;L zhCmmFFZvYBL~-MN29?^ zT4dtWpyy+3_|Y8MSf=sVSfH{wSfN2oRy4LD7izAAaRkOH2qYX8prK&+f{_g31r|-m zvRfJ(VZ~@Meh9U4%!C%MXlcT>Y^k$#eG%L;5=5iQ%7`(?-%<~&+GCJI3*u-ldYX6b zD!N*O55g^6c$q76O?gXwxFs7_8i&=zWt&W$)gr)Y6RC~FRq;@|HrB6MrRlAy`lU(z zoO|Gc5AX9wP#WJ9`+#>7_7vU%El5u7ax6$ryV)p6cHIzHket~bza-gRGaxw=0B>>{ z2rNi;79`dKveHknDm|rE++HfVb~QNZ0dVyXH+!ZFiIv4SdzR?H*N+6&c%rZAQL9pAReI>w_w>_2Gr_i^x+Ly@AibH$vwI;402(Oy|x+` zib?&f=C(SFu`CE@d8}coDOelG3gbB^3p!Fj%PMbf*0P!!kU?=zmM4vrjVKZm2yro*4H=s;GV;>D}VFdz$+!1_0EDR5($sEi{Q)CWY2%nO{ za4ie(H()%`vf!f`!7LbYroycke7r!~8LaVFHQ`YCKi^!S0-J{(%bN=GiBhMAXkN^e z!)39=y^o1VqGuNYq!{}cmg6KijgI39rel8O9?`-xy0VutpHN>38waZ zSIY2Oa$JfhyYp8DrU>_ODXodY3$+{Ymi8<+A-h1WeV5 zIfmro9@fZI8djBk2xL?Y^NpH`dpONamPg*JviCtkEc+Xuk~#7y1KN)>%c}iP1E%W4 zoWXM3TjxQ^Maw=839-t*4;91amIrZ;9R##m{)>RcD*p~D|LnK;?~i@t-(4jO-liC* zmh~2hDIy}{39_Ht8U2UX5UTyB0YjZ!PawsnZ<5FCZy7%>fLN^j?#(j4()^~cxE{Tf zUrJm1D=5E(NQ(0@J`@1Nlwn5ONcnMTBKyYmXDkKMWBKna`R_gwME?zkf6mW-#h6f< zSma1+76)yVQoh2*v>kIkj;ol$c9#4<66kFBSIfsSDOUOS?Sur_E>aw$mM^8E_b3;q z{TZ7lYBS7Mj7&0OT7vdPdl+YY9X35&ud#&luqUox0rSAWF3tczz*b_bmw}6hD%%3! zQGO%I?XaaAQCAC^c-`@dlQjuLi#`8sh!M{e zGYLb(sEghVZAdf-h#`7@bdsT691RM2j_$~0L-c@1%rDqz|5p;Ori2JrJy%aSj`8+Q zcBA;H8ngEyHz$kG5e*?j$@z!EYoyOTlj@9OKTu?G;SCTtds1aHpW7+xJ#2)869^(%3R*VZcuPZHj!;D-ngEBNz-OaEDk#|YnL zL4taf@Gb>M){x7$Mx?w69QSE^!k_xUzw86Y)zAk+&*oo)942KW0FR|Vy$>9}K8$+y z#YqL?eiX=geaNrr1HY2=@JrL;J{9zA>O+1@ANX~B;Czoy)ie)x_95Th2YzoK_``kR zzv=^jst^1a;G$iqWAmfTxBHMk*$4h6w zz5*AlsB47DDek4 zv!zpb1X)m3i<56?Mh!d_+2Y5^LYP2+Pj15G9DMFg6h?;@_*AEucGk+9VQRdh23eYH zhq*d2B?yxUFk83DUxm|;pifT1iadM`oPE0#hWVsI^mcN@7vg(i%}3ZJWPXs#w%<% z-nub##h*IJf}1MZ-is;;Y&hP6vixT@J?PIXsXg}7^)<3Co4kRO4X~m9S@6$# zQf>HUHrz)z>KS9h8*TD#8-A@#eyj~|??Zl%4WDh3f7+(UWy4R{WF(uE89VXh5tBpmBI&W5+zM2@90DRUYmTTP5wY1^1rd+3vBXn^gc7%Utq(B+VFfEzL9XO z*F+n>$tJ(ZhF@copJc;-V8ijAoc;fz4WDAeKegdgZTLRA#6^4T^1mY->t!E*-owrY z8{+nHHJ5IA5MK=cY|kbezQl&VY{PvvyqazpP>+2)^wPy3;t~D_9yi48{ZW9h!(p95 zPe6Q4$v6!onoFcw^3>esbvw)R{Y<_hKa}_q1;?=!w~bF4{IMg`9xeuskJPW&DP z{~_`F6ug`G{R(~$@jVKDAMwW({9)oxD)^(spH=WDh!>6rn*H`P;i(9~#`v?6HNQ#9 z_-_e!EAqc1JYT`t?h*xmo#Zzv_}hdxD)_sE?@;g$3E!jOrwQMu;D083zk>gj@E!&K z8{x+lJdXI23Z6*(Sp^?VJWrq@i}634@Ko&RurZEbrN_;s;JnzLTfyaO{xDW6_*Bxf zQNg8lxJ*}Y?sq#BocrA#1?PUZPr&t-(W6}*J-dPy5_(O!BRd91&m(uZoar-RssS19Cc$b3zo_M!{pCmqC!9OOR+Xq=J z_cOvbD)JYIZ&dJJ;&&+cK#H?H3Vt!+`xM+o_>IjP_!B!5=H zuOM8bBPOFCDu_>2@Ot9eUY5U>aJM4gL43Y~-$^{%#d>~9_(ny3KkgiH*x0MtrJ*^8!XL z1s_kmTfrw2pReE^;!6~KF7X=`d@=Ej3cj599SXjl_&o~lCw`xT2Z`UW;G2l=QSdPF z#}#}h@h27hX5!B(IRDf_Tu4F-u>bENxm3KswBZjE?o#l_33n^_F~ai|{P%>HDENDX zZ&dJ432#(z{DuW?I}|*D_&o|fg!p|5K9>0X3hp7kN5SV3e_X*A5Pwp^i-BgC65gob{1cHK3Vwv- z_bB)Y!uKgS|CD6Ef}bb(9tG#0njBZ~{=}bD@WI5NRdD`k3O`C?Kf~uC#Fm;6>Cef8 zyA<3*xLd(z6P~Z&3kWY!aQ-RGMg_;O1LD@G-~qySDEKDA_b7N9;rkT)M#A?i_-%yu zDEPk;eq6zMKI^1{-%Ijm75o9h`Ozf%{{Z1UPsRAtgu7^-hw(#%yA}L*gy$>x>x7pm z_`8H}RPc`pZ&dKl3E!dMUlYDZ!Fl&#l6)%Qt_)@}M3cj3hw}P)GJYT`DAe?{7#pRY0zEP2{C7kE$SiYI? z9g2J#;d>N(JK_5j{JVtjSMa@r(?P5nk}6#y_B1Ud@QVQX8I4ziNCu~$5Z^*L(zr3c zMzZD;X{;ArB8ikSl+HN62Z(cMxS<}t7eqb_cd)Vk-Ix(JoNL96@tI`L0tuTqkK2U` zzMbN^M8WyF={g0!lH_^WATF2JhpbiP-=XvPW(A)~dbTMzFZp((g2QiE#P+WWKAfET zZwkJa@W&LK$GzVu_(YPI&y6jA&ZlzURpgHmkI#p3V?Q{kU3mV3aX0Dbc@D;hlYXAh zVB9O!($@wp{d|7K9}(il@_fEtsNe^sn8weESpGRGw^oto`}Af7ucWxTM!~9R=bqdbo&Nc<-#g97`d;!_{Lj~_o`27lg znC#&%xv+npqV|1Wk-wVsyrJN{ROSZ?&a12bMZy1*^z+isTrS@a4yATrd@R|?ivcq} zlKh;j$gd(h3lyC5mnt~l7gs8H4)J_{$>q)>e3v4hPyFo)o=)}uiGn9nyZ=hT@fi$m z{GJ?_`$wwR5k>wvZWjfAgZ%Tpg1<%b6DXba-$8a}DfncPzf8e1$bNoK&3YK;^E~52 zsoi%edTu8Dyp$`;^SlAC*~<8@$<9X=J*@v(1s_H7{F8mwBfYF??5Jo@JXHNp|X+5TLz=XC{tgz!Ju^b8>k z51-j^w0|DO@dX9{F5$fj{tn?z3IMi0liGEl4aaix;UBk)Z8(<8-}xP_;F(ljrh>ml zxJSX=#LuB4`)4Dy3oo~ecA`By;2*bAMbFE`U!~yv`%C#M1@{u(px|wUhiy2PyI-o& zuCw9jheITPgMtr4gJHW>!M78Bmx3Q5{2s#D5Bz-P0h>J9a}t%q_M{C*doH5)Ck`uk zG2zD)d^h3zo(!6SdY&fyZJRunn@a8Sz70qDc)Ah)Ou<(YenG(>CcIa{|4R4(@+En>^aXC%sQ? zII4Jo^qg042mRoV*SlqV<`B+nwlW?jJP85V@POs=yun2_9E*I4$?o{v~ z;cf*#L^!V^iph9>;pc+|B+vfg=Tb!q&L2i7RrDv*B-T|n9QD6Q=Zk6^j`iAziLlk$ zaD>7nzr}{5{QV@qTfxr}ew%{Nrk|ADui(20f7phj3cj9y+=gShzb5&oZ8*yFb^h}< z9OVm!!49?;31@#M)A{{11;2#wKiKr3{!}{ef2`p55dO7-{|O6%tsjlMTrNK+OHpuM z#(x;$s1EJ_G1>33;b;%vk4&=RC?BGq=*&{^-w-Z-@D6gU|0}}RDDr-K@ugnDcM{HP z9-|%%<&ETrR-3%tZ@ert$|KHxyHk-LL-BSG;q13Yx}JGJ!H-h^|D{b2`r%%(^C=sS zG zf3@K#{}9Q4ZNpKXpLh1-^D1B{e}UwaY&goFp>cJDg7f|D1RIWe7LJ4+Y`khM$4MLE z_&IajxE*<3a)}K`Jj9e{w7;J0ueIT*KM7w3hpowmiy@Wd zueIT*X9M~91{;ogvPn;;4M%x8jcebx;V9op^8ZRW*Q<`Mdw!ze+X(-;O%Lk7isI@i z8;<(FBK?PKILeok{EIdm<)_n&XfNAvl&>cFcWgMyH;_EPf6M*1g#7lAO&;}dyq&Y* zsONstV_x3@hVtBA4!X|b_!;PeMA#HrjBM|Aj!|cUm?a<@GT#q0xq;{8-X|tqn){2S~m{!T&<| zoeKWQSgHR}10!QJHNPi#2a`4s8@Qo+v=-fP3LTpA{| z0n|abeV1oQJ5y{p%6~v{b%_nfayOIwBn8hIC-qDt9Nmjm8;<&~ zCOsuK9OZk+9$ssl?Z21g%Wd+g=P2R){yEDp91n@Gg%$ZW!mlNq?dOHI+ZFsI`S(sm z&(BHEPZj)Q!jIW-^m8r6!<(vp;@?$pe(rh7rU&cWHUVp;X@67jdom^Np!*5*1D4xN z{v2q-QO~C&KiGz&{9%$GX~R)|%S710Hr9rt{6VVMR2z=+zb1LUui|z&Pk5Ok-#rPn z!+C&kZkLV3S1I@=;v4A5_2uipYZaWYXF3%8X)Fk~?<@FM64rjH;QQlc!W#vm(!a*rDL; zhb{$YKXfZN`{Cyb&VJzeSgbF)s*SEU_;Xn*&hI;@_|0@(sp9wbfgh*qG*zCj_f%ZB z^+&s%Bm2M?QhilD{yy*<={{AJzo!p8LA08@uA>kW2&val4|PR>^K(KKcZpOfYnSKw zQN-|{_3lvQ`9AkW1?T&wuN9o{3yRPX*jPVbKeQ@1|L(Uj)C#LdR%A6~yTs<1HZ3nV zclxxPT$jt^cDrr+88ZNzHX|27*ftK>zNl!iLnp;hrmoEs{t*V)c00-}CSQ>GaQ;lw zyz6`&N4y77fp@KUjaSS;drQ}>_Ei*R=s6wlZU3)+-i|*Obo`gM=TpPm{(cGq?a%3py22THLC2rHufFGP|3tqpE@ju9 zP)c#dXS+XJ+8K9dL1)s>!q+THdE~i8DF=GnKhwP_j~p%NEXwdL=_<(U^;H}#=y=xK zezM=8FAZPCD?a^&C$Rq%Onld;KkMsS;wYGSXwmMYDZ3|v@kL#6HK+TfjMjYZJ&u$E zIj??GF!4=q$I*f@Z?wPL&wJ>stiSo{mjz>9@y$A0)iDe#ZTaBTzKyrh@7reZ-cb))v#gNdLsrcPjgv z-rkha1?&&u&#FT&ILW6m^1N~CtH1U3iu#j&n>@F{yQkg&p{gp&f7nGZ485gZ@i-eh zNx%P22PsK{?gE|U)kR}o^Y(lqI?0&dc-!CW*YOAFLy0{f8|^1kyzS5G z7oLMou@kfvSG>Py_uET5lRjL~nfv2#HH6=@`6&lJ^R}PHZt>?uT?LuYBQ7XC;v9F1 ziH9&iphGP0id%2>gU2xBU;VIP;>-EYoQ{{EX%Bq^?Fx;04!gkHvKb)!^U(rmp<`Gm zc7PwF1ziPB9pZm^S3x|+|FW*3u=e!O58JGM+_%c(l_lJnJ% z`hNpePI>GCa#bBH|0b8a$J5i^yL{_KzKY(WPQ0dr-W0dJuq*CaU#Ir@b5(o1Ys7a1 zVFdJb{LR-jSBP|+S?z28)K}^2j2nm7lD>|Dj66@z=l7=U+9p)6n8@qv64xW2-|I^$ z_}KgO3XoXjdEeJL5_O$UtrBtSZ9fct`%DinFRVBWHst#{=RD`z-5dVU*Ky`!l-%9Z z@|F*}e_o|;+E7t!LC49I-M2xKul=x(YUJyhio&PwyU?t3#jKBfFr25dVQ-!)hbHqrh070|S_eCkfb9dH7?)bWw96xz=T;SPItRKDRP!SZG(Qtc$y8Imp9) zT=TeQSm#Yu%PI1R>KInT`n9CS@c+h>$@<$ZQD&8bh%7bwz_FN#P$!ZmBh!$uk3Ti)L{*imD1a z2WZBT26IHsb1fX2PvBMsbG6FWErA?AYRB5-=7I`IKz=YxB9cIjaM2eKIMyFwtUuW@ zi;9Funq{FLw*`CLjDv+Hjx^z5A!|X>LQQF`14`qDt4NDWP?xJ7SBI}_gvHtG!_CNv zPf!RcYiGbUsw;0y-q<_~L&|{bp^Utuyqi@V(lYaWc{Tqi4tiqh2R$)yhocWXwmhhJ zxD;E^e!$~gNGO}Y>3+|i)R&&W=bxDNgVIorit=*v zZdY;iL$Yg#i*K4J7u>SPP0@;+H%Dl}b+$m>aP@b^!v8n)h`1V;w@9_K4?GU+m;&)u zt3=%Y77p&zGg_6(0t>hn3&(W|W3^*nc$}yg_M`O38tZz@_JyxL{6EE^ef8YdaO@&Bj#|F`^!{XL^~Td zEP0H#7&!Q|4?L#)KU*)+UTGO4GSX~~2qeZsTx?t`h>gdT$GMY?yn@IWC;ffIRqS{} zf98+NAD<7IZJY3aY+TRqjq{E7*@S@<@-cDne{5WfiR1VXt6V6f4?MPhl(&_OpE^aK z!SIhmjTmq67;_VXaj&6s4W~Fs8FG{`9FmJ8P|U;`@^?3Jaq;-Y0>c@PI)#e(u8>LI zf@Hii!FdZD4PE3ET23US==j7?3_}U2dO2oEC-x%!Cc(;A1`{qOHdP7_BQ{O4X~eoD zJDgbgI$**j#LBn+5-ue+PYRD9Hea%%i1kT!G_fU;brHK>vSamqV80`MqhvGmdj(q~ z+3{4PM#)YhR=(tyFhy?^6>OEMZhbMjCw+(XcY;SR75q-(b9DSMgpuA({0#jm!QVvu zeEnJ>zlV6AeuLoeBEFFLeZ(&%{yyTD5x<}KA{}oZjr7NfUoNaS(tC(6(VrFN!%twu zWOKr!IH|9tB^*SThXzX~-{{%5Pl`7pa$s{iR|* zLhMJ1{V1^?E%x#nYK)-Aiaj_AHu;swae^K%_7lWDQ|u>-{UouUEcR2xeyZ4KiG8-% z%lGO$g3b~9X<{#*w@erG46&Er-^>&AEU~{#>}QMp9I>A(_VdJkzS#H3#yBJo&&tDd z@^Dxlej^XRm51l$;fOpOm4_GP;dk=zqC6avhnM8xKWMz^=a~=gfvA9YnR2iriC}a% zN34f237^Di&XK1fMjVc07-1xkE&wCZ1SU$rX#$fZ5N`sL1rVnLAPaL&xd2*aOTucr2LGa87*uv? z1t5kKbi*M|9K>@IN8&REjIu*&wZv!8VEI!~hf6O;LHzB&MXhk{jhrTbfo9B;y<0EE zMEH1(X3V<@Qh}@o5=R2@hLy<|9E9tzP5-PGbd@1}A{8o)VlHU)%6jSw)UyEU% z9?$C|2a1u8*->&VhrF$tKB}DbUD9S_MpO{v*sEQ#)s`S8&}1gZ-c<2&ita+6;U?KJ ztWmOKnH6t{=;_Gnm&>#aPLu4oNOnB4E>wOGR7r|WWPD7crcZKE-DKKiP8*AP#^86q z^eo2Uak4-m+f2?Tt;$0YeWfkaJkFGkEo|TP`58lPP=XU%KEa6!6P$PwO~%kla1KEd zwIn!4A&F5Xe_pB=it7WrQlvkD;r$Z)f|6c{ByO@f3;C^9Vk4V#sl7Ruvf0?2CWFl> z7-~*4K{~A{vH^=(hfH10taQ~1WVr!LIBlFT*S5nKt!4hzEQ8He`W4kormf*L*)p<( z4WfiqDDG$RDE;37J+gW0M9;&b$J@#mq!hTC1tzFXi9-6-zXerRlV-*g+GGhpo&@Jv z$dfD^9!*SeVw>YrFi`lUp=0M&H^)}zOc=i=Ar3NsV3ElJc*M{V(YJxf6hcr7jtH9m zb0MB3nO_-rwA1k3nk@QxsRi?>8-C(lmi@fJ=DATwKWf_ILjD7=Kq~*8D9D4LF6nqJ zsv+_^4<3<=VW)xCdRMSmc(^pDvIi%#)%jBqh)3GG|6$7hl z?A^CLhkwCkw?Kc*IEJM!p?;h(hY1f6+KiZ1zi#}GEvBoiJg`rkV@7k>yk&?}gWXP~ zA#CtFxRa39-!izf&x9`hj!}*%Y|`l#FTL;wk$!PY|J!wEUWPMoT+0Ba#&(azd^4Lh z{iLbI45N<>arKQ7>Q*~Y)AI0RZ~8~ZO_V5Y`^eP8JcoExBS~{VGb=MoZ6y7S@%I`> z(=NlJ`~MU#bah=a_ev%S$Jy_LmBPErrKEGiJ%H$X@(pn4JMV1Ns&6@gviAiL(<6;Z-stLrYAY2kDv?MNi9;k`oglQ@jqWbD-1^UpOQW0=hpdgex6WFcAe4Nf4BvV3MvE4nch27_D$fHk6P& z9tgNhhYy)b{UTdxCg>jl)fr^vPfQ$`n3RZG1`mr69s)8>uFg>S-mIwGgrveDE}`tA zcw73#S^E4WyF_jh+A|DfOqZnL#KdsBAbKu80R=CylsUkams~KT6nOIwvCr0 z{CWdr5k*-{$+QD7;G1=eM>mPu4M4d`WH7WV>Yhx_6jIWeQ!EJ>KdA;F4oi&S+7#I_ zG>b~PEm73$vDgt%n;e^cBEY8QQuT6?fcJwfdGzEAyF3gBkcu87v-7AGh@FMPbL zmys$6$@xk69{6lKfZELsda2kP+Eypi5R{CiGREV)dkdHM#+HEFtT11!x!bex5yGA-wSgndq?c|{7yo5%DY zth{cf`4{;hm&x?ImYj=eUdaM&Vfq70E|uxC7UpC+ml^?WVS2iSxtX46VVO+NvM?9Z zvn?!*>A4n`%5=VkIho#SVR=lqT9}*ZYb-32XfvJgdP^>i=^Yl9%JfYZ=46_G z6^wqNkcc`QBShEMF!`DZl`#1y6Iyeg$S+N(gh~9$2X3H?$z3K?!X&SS3Q|n&v!s~h zl~X{9$-|ZulW&^P8YVw9p%Ny)F`+d~@`5M2R>CB&T>>RCIggwQQcUtnEg;2YsU^i^ z*o4+F`5hA~Ve)PhTEpZ|OsIs(!zQ$b$=6J%gvl>VXbqEbbjrs%5;@X@)-cII0#dT| zqW2sax>g!buH=Pu0pb>W%=B_;wBt+Jf4!!iI87OI>n2p!R&sGJQ}@c4SpXDwU~ts6 zRZLDY74=!QU8cx-F6&aWto4)_b-3NkRmQo7nYnDQMMh@4o>+&r*U2=ywjW@($9YC{ zv%W>74~3cLPGt(S>$!)R32FnF3ET`EyJmtKlV(C>9jv=jA0-ThA1VFF0lVAvX&KYU zcmK%Hew3(j>N1iV7A>_JB)_M#z}mhA{X&oh%1JOYS|bXg)~12C>z<5Uuq96Wk*;wL zzP?Y^eiW~;Q3H`2-6P z*MZM-0I6jIWR^pOpN>{>8<_ltk_>H|ZuX*4X0P19BwvIGIW~;X^18Nx4dautkW)<) zplV!5F|NPXtjQZy(;ki&TM|QTN`I}1b1}rBV9Ui;a#P!q7~&?hDf~8zb?pjnJr$eN%M$1NNd%u)kbZn%8rGxkCV7VCTpD9s$n|gKOj|3P_bR4 zs3!98${MFf6*g_W)0N?LjlWLI$=Ixoy*;i?8zqsk*J;x-!rIt`u~7!)L>lxD>0qPz zoH2!s{)cjNF0S%eH8%u{sE5sJKBv59w$IAwi?)@~S3)b(X*}WJf)nt!IrbuG!_lo) zGme;f$u=#zB?p_117VV3$8gn>plYMHb82)YR=r2Yd|=jV6_ck-s4TjwtD>vAD!Qtx z)T%~XP|6nYm;+Zo(Yj0H$c;&K9Hed5c%rIF8-I;JA~tQr(POEm5kP zmqSBar#ZxxbrJbH3pz$54<))*#yYQ{vH=Pa`G5sILFC&O^cj(f=0#-LAR?{NBI@dg zFIxEWAA*WWHa$^m({6V--5E~zxNZiyG9b?+{?Y-r1aK&Nk$Juh0#Uva;u{2jm}IYr z(r5;;n?d#y$TN9dDUEr{l`Huws?>DSN+#L65v4JBl_k&QMuNC*%vV{W+)DKXrD$Pi z0*+l=8BXA{6;$SKlI5ETfSBaQj_^K%4_U=Bxt}1mkog0aCO_VG@|rIOD>b?%@*cjy4k|gm~OGKRHk=Wn3L(pEi9AiCoIgx z^ph5r#`Mz`mdbRGg*ln#<>$c%nM|Lu>ll(yhkYe(0mK2kvR31n%d8G-JFj;OwYnbHqDxpLsyDcdue_}!df1X;@_7?l^E#32niyA<>=|B66wbzRl#6QxP_&&Bg|Y;6Azq=8xYRfoGZ=D6?N+6T76%>*@iOUOC=f#9K9BhD5yM$Q&+Y6VFT(k=&~Yv4NEoKWDTDpO=N zh&0v@h;m@s{{1_=lT$#@UG?eXW(wIFDd>TTEHmIXpnASsCYn$(EHNcA4#F zn;{;OOs#aE&iFIbB(|&!@kpa)Wt_W@Evwo@>^82xu3gF1<*^qawv~rUfY=5e*#J^? zw^5VuI+q5lMAyyQT~sXrsyVNtoO~+Mwbh)jz>N6SY}M@+q$;|B6mf^c`_5~$QCn>H zot$(xi6(2DD(^cPe}K}RkSvU@X+#{Rq?hQJD3sA16oafMMt<(P ztOrE+gv+J&hZ|B-$dFaLD1&$*r6hQgiW{8gC1LGTDT%+W0~bY3rulmXfTc1GkJQD6 z7f(!QT9}Jzc=XJ2nM^-Hn4xVwt1)xXCdl-Y7Up95X$wnZ`qvhg$~1pu2rI&L5j@1k zO%yCiYtJ5lhxB3tCo#zjO9$3g#lj#>M`9sR1O7)#R5hhg)^x*R~c|5LLlElu%O8 z6j{UHsCmqSOmQMMQWA?|`F9ZZ?{qY@&3ZR8_nW#_GWjdJoLT^z6{`Tw7~=|_#rK)T zt>WT-X+dgXJ(TnY9kKs0J(u1T2F%TLzJ)oNUTtCG?Jav5tp6R;gf&d&QZ~36VRD`c zl`zT5LCUTdY1Vz-)LqJCwy9_>D_UworA%77qlN(1{fVi2B`aEDDvCObpCRc9rbtxZ zx}b>sy}qT&_Q$imn4ym9JE~|5cTEA8$(fzV`(pNj>fX%+@C5Byn!}q$(?hEKYXtD5 zaU99<^zeA%`Go*AKfeu=Lgfsmf<-5ms9?gbmW;%{=V!F2 zVLa)_^Ia)@$nzvp16}9vB+p~S^YzO|#7C9}uLROL1m5El+ekW2prb0kl_LEPI{uK3 z`{}64a|nOQ>C}n((QyDBhtqKc9l5iq`gVdJ92!P}u78z05ccq+PQ04Z^z533x?py5 zIMAG3(o$Xlw&mR%bv4{VY9mT;(6`^UtxTk~dU*)7dY*`fN1+Lp>70{$7fQ)@%@ zEv-|l>szwLPws^X6p>wBQ4uYYn>8cL!x|#g!HVOw0u{X13(I>pZw)kN)nHd{4p)X6 za)5@K0$mxb0vcK`+}0RumN1kTY5)@22&L=8l4gxHs8Ogf@v1tM0T_gvf`Q7dO`&j5 zBJdU}#Vr1WMZdDVsB+o5WhKTnOOMWOTeQ#TT~c<>uKAO9Pcp(gje&EPtu3oA-1{A) zd5)31)Mz?r3_5bf+&u5>qRN1A$$F#l4Wlk>44Jcc-ehO`Ud<7w?<-n6&)5()#?CP| zJZOyF>0GyB)|!PzTa~f#LBka`HtsaWI0rK}Aj?<_E8Yxp&beY%e)g<+mGfrKzY>Kn zfrKL~&?I z&;GY1Ig97bExv93EU4g?okrr)La5)9MmTIFEj7Y(jFcnov*%^c?lMNMH#R*ud)W&< zr~7iFYP~UhsZl*g?5m7R-+1UUW6*l6t`T+)HUfK$OLiJnVD(aCz@GMbM(Z3SX}z)K z2pISH_9~D%qAhI!=CSQ)>QQZ}mqd;v>=}w`62b}2Wk&y{o;9I=S$}@l2S(7D<$UP# z?-&_im1C?PXBg*O&q3aE36ANybMEIqy4`R+_`QppZd<##cvdZ_FsgCqTwCT`x8V`z zK7I?TJli8_f7g2{T>ARrB)|q_?ZxTqjip>KlC}j zzoDwiAJ+VZEBqKv{>E^V=C7y;gzB~C&^19wDk)s=UtC=3FI%$~Ry!&2xQiBP{^pv7 zrZB!t&Z$dQdCT%l4rG_Y3LGU`V2i&x81_Rz`yq1uxbTIB>s^?V3zn?P6{UkRe|exe zXiv%08fydfK@EOwmE*4s*4xv(CR4Vi3@yWs($HeryK2b-FaeBZ6Ga8wB__YNpv1ez zzpi-gG&ECmB!8$bP#yHc&|ulIer@qWe{sp8B{}}$g=S{Z4r`w*SftbtoK{^QtaO0~ zn@m~Z4R9UG3Mbo2@mGbQVhyG&_yhE!i@8OD^_3blQZu@-wx!vl)i%^uyYSb^+sJ7BChhb9*RKnh*(4y`V&kS@# z0|-k804*G$HP?iytoqA_#3r(8WnnpH5o^8Pl0tv+iiImINW=hUwLFM%0+!U&>j*#@&;uM=V@BicO z+vBS$uKo8uCkZEjNfd+#2qzE~e8e0;1X0O>bKpb*qCCWB2q8Q)1jqx>dW#BJk1@X6 zTCWv+)Y6s~+RL@nVsFA5MFby+uU4(%14YED;Pbb>Gi&WVXL4fE_K$mi^GVL0`Oca( zYu3!3nZ5VS8g3D@D{8N*s?~!9HG~=cacfmo*EtO}-15*csE*{0gKfmxS##^>)cS3J zWF`AZA}Ct2l3cZ`6h1<7F=Z~d|sxvzT&6Wx~t)jkyDvbJz zaC+wGS5ViWt(sduQ)N_FF~3Up2db2nGi&F}t|*@=w;P7+^0`&Dy7*3c^_C&JbAO_0R81k2 z^g@Mu2R*1qj-GBXmC;H*#DY}IOKnHgl~Qv+hoIGuTT-~_{z9p)u2RuJ72KnbEKOyE zW{vz%cm18|)pIJS=bt;Lj?|;tmET0<9zbU=Sy4B8G5T2vtMXH?W`$KndNrNW5$cQ?O8I$_ z`sP<%qR@{W?!|IhR9()hD<4et>5LjXF+3uyW`0geF_dzQ8#GGdk^#^WV#g`w-E)MF zo3(J{?0N%|+|ktzFN=;Cohk&~2~hgTk+A7iPN}P^N6x98O*JJ6p`3vONsHw*RSWB# zx~pc*B@I%~IA|c(ySfq7V2VbgZY8vtx|+Gv(bW5c_Si{ef~*`Pv&USuQlrw9Vv5HN zF(8oW$`OgiMau?%dzY`~?wGZoPB)yg*Gi2QJt*CpxD3#jf%ftM@)#Rew7<$nb(5X11 zMvOQs+;`&ChMM|@)5~VnRMgJVP4~1R4GJ94kDD?*WOe3;G54Aa9d}`#+r4AE5T3i2 z5Z;61)H;yiIeE7QM(5<;8XTSzZpujH^t~lBnp1pZRy1eu;&y>I+UFEUbNW);@SJ?2 z9i9`4bqGAy8Xess5NnN&=&+zQn4ry2crEiV%kdYI%OT!PfkaOJEx}Pa;Ttn3&&8R6 zb?tM)QOP&nAu!VnkM6M0436k9(;&_xmKoqnuBW~@*fx^S*x6p5qmXA5d5%S%v7EVq zruI2~3Gs4{c2IT}CUDvr%r8vWnT*{9Y|M?p#TlhJ#kT|kGur2bMo>AOqPnYRQ@=*n z`dWRRDZbjO>WZRz+~7rO1TC6cSLYPf&Ord=k)lXya4-dtMiG#YXp3kpp!o{pRZ|;g zl+UV}K8H9ef5p_PwN>*|qA5X2xT3bAW=0idtW!uxXQY^@xiUwSSWXd5?`M-SJEy2- z4n3JtCwdw^$p^>jd~s)A39952uIz;g$SF z|J8(vEadfE=osz&>ro!0JT~nNLeu4cV75*-xR<^nf3g+OD*uIq**uYAFQ*%5DaNL4 zY$JWQKHx%Up72$NTIY2mMWmCzZ<9_T@B1M?ZS!m;|9=u@%Y>A-jKnW*PS;-bYt#OO z&~*7vPLn_Fu5Ok8uL-kxBBOPje{&n{7c_8>(|@}3*OsbiM;1irP;1(?6p>E;n^=Bn zXVBl#^l!JnZG<6z(KC6K3yjg%t!Olc6Itbock=1dKfxb7PBGHLE9vC=s)3oLpS1d5 zqGKhU&>rOUmYSVIoc<;&fs|j;e?Xpe`diNWyPXN4zb^DI=|!*5sdbB}6xU5w7w1cT z@qR6Fls;_PL0mFLC%K)OccUQw?fg+a>GI!Msncg!8CpS2l;#(78O}%Fq=};Z(sK!> zl?3vo(=hP#FZP42Mnf${Q1zg#B?_vZEgg;tN^2KPIeo;B4|*qU`51gbZG|coR5)tC zwF|0K=+fcGwgw3as+N@+r6teQMyHG@J^p95l1Ou=J#Ypsyl69I2}1pvKe~I*^v+O{ zxI*R0Y$Z`Y#$~Q4^hL^(CBc+y(3_?E@Bs22W3(SxtBvjwxU7Oyb7sOWVO*B1Nd7g1 zYh94Xa7)O4w9!sv{KYr{{<5k=&5sE~|DBG{@7ute+rW1b4*v3O9pf_G+w>1yKKH75 zG+|%Sf4Y2)PccPhBlQ> z!v?*a84vz=_7wil8vJn&3jUITW84t@OM`!bfuGK|kezSBz$A!}R zGyP5rXV`hi!VgIVPr@W$wGx2h@-4hQ>r2Ktp_jEN35#Cr8%(kALgus3!nG|n|13h` zKa}ZLSoEV9Z?^CY8Q){!moa|8!lyAVYd{c$j;k3Dqk|zQcmw0Id{^)vGCt0t{}JOe zEgbLs;I6Z9S#xubg+Ivjt1bLDjBmB@HH^Pz;s3+~#JG%iLVp?KQ!M&vj4!nCYQ}H3aIx;Q!oqK0dYPX|zPB>I$D+TN@dFkP z`)_dCoVMT2|G;>d$4%k?IOBsYd@JMQEL_%haklEY0As&6yc>bTYpWdkm$gfnBf$wi znjawb^Ma2{Ka1yFILOJOsBnS$^>KMG*^hDXKZ^ah6tQ3Om3Q((ExaS&Kf^72G8eSe z!sY%SXW`qpKf1`mWli1{7Je=B$NM)pkyGyXc^dX`4m#Ib_*Skb8J~quU&eo8(aXH> zAq#&43MVJyu<+sPa$0n>Cy$&xDdVcpKg0R{&7yDM#vG#(k#R}zZroT-w&;J%{D)Y0JC-M5;jgj$7g=~auCM79F6~&x6Ore7rdwjsOFu4a zGll*kmS4sP!DUV9A1pqy@_D_5pUL`p#=>Q@q|~$UU&Z+zwCK;`_8j1Np_enfkFoH@ z+)#R3_|1$<|1Es(V0^em{|?vJg%aF2z{JVf@^37_Yg|HBsjDlYG@E&Nk1 z?`jM0%Kh!57JeGHlXVt;FW=YeExd^NY_)LNZMMV0WuEh#h412a`;vwKgUj`rh2P2f z?zQl>jK6Q;_i&h?dN;bP38i-pT} zH`z`u{F9t-Z;Spd)>~f-e}nTavhZeZ4+AayHs*7dh5vxVB^Ex4^*qwTW1O$_-y;8w z+ zI1XcgyT!t@na^DoUdQzJTKI8H|A2)LWcn2rzLd+g%EIMU_oEixM~mr*VGPmF-PvOnr|3x9y=-?#Adxqd&haM?i>WO*gu-c#?l@ZT_f2G^&^Df7#)g@3^Mk>`4$4|02( zWYLSM(#sh~^>J0Hn)kO-YFxe_%{KTT4{_I7_;zNt)WGq)T*-QtaUMMIe}M73E&6KK z!~F&h`f}FSLk151PcZ&l0|)(&8Gp>epJaTCg}WSn&BD**@LL9se4k?ZKeljbCtn#j zR4~Z|F>s7V(?bT1JgS+` zSBy)&%X3;L_cwxzg_L6$7dfSU_b_n8{WtUPXW_lOQ6xEe9uhv%Uk$eCbFom9+_?sh z_P-N?ksD#)(1Y-qY~aY_Ip%XY<5I4NxxcNlaG5V&Yw5$p1S7hqr_m==_&~gI>z@7Xyd) zKBnJb;J7d3yVZ6B2OrVH9t#&e>}6caE7nlWYOQr@|0V+Ja05uxP1Tn z4+|f~?eIp%ML(Z1|9dTZ;q#z{%k$%-1|RUckLCX#3*XB4Rtx`t@n_oL|B{7^{O?(O zI)zbtj`N{KFLHin;ld{ajg_3Vhaq7Vbg~(jdhEw~JKDkrFn*T72kq_m+`o;q=*Kbr zSPTCn<5yUGhH?Km%fKP)VwQ7(h5w21YYiOoB)EQmWZ>Y_t$=>W-D2RNf1Ky@s|+08 z5`O-A+`z%-0_L;Hz`zs>mP29A6$;qqqk zJQ_UkKcYANkZW(?pqKvbSOW+BGN$jwxX3RyYI<9^*qS)S-~;|rkAn;x{GVt3!z?~x z>td8ak0Q=x{f{?r@HxbMF0=4LevwpV;pa0x+rS~`AGyA+vGDB_2lrD8-_7*DvT)(^ zsD%rk4HhnZb}|k2&vVe31P0`A zVHK-zSp90u#8+6jJio~LG0@^)<|jRvzu+>CPquLBA7tH)(98Wo+n=V*nO$C2RW+?> z>QBWWa#I0|%Zlp#MPf7Z(>Bzk>z=>p!GFf#jyNUlcDJ8E`p6lFfC_RpsTP_!piV z11M2w39Uo!>O?0dn$$YK$fuF!=!A*m6N}&P`wj>eANnS_p}udTslKqsW9a#kTNIxB zTOzqhQ+$=t7%S|NyW~BJHQ0RDq^z)GS-&?9CUQ?+pL@x+>A4eBk1##AsAYc1^( z?&Rj^;;)9OuSuH!qT_E@vW{8$X2bmnDscT{i#NF-Dot+u;hVXUM9UlDWOKsZnTYHm z2@);ug~`8oW8X_Jk6sqNe8cqH6Uq0YlxFc8ZlbBjCHtCBpH?;h^afp{jta1!%D8>q zEvGonb)(7aIlY4Rn?(X(jRM*Sty)o)>esAL7}tP45j>z@3iA%unH2uihj{+dVg2yrHvy06Naz z$SFH=n$Tnq#9|Z0BzrJYW`#bb-*zg8421`D-XVgWJ?(Sd-J}jRV7AY5v66(&cGkgT zU3_??!<}`o3kUObuqy}ibugcUVI4e)7rb)DMj9dvLHs$M)o4LI-R_=ukb*d; zUWX%YsS4k~;r=cjY;aD!jvwTr0}J-KiNnKOyl4vcxt+uQIrW;}Kc`-Y{d4Md*gvOU zhs#{txHzX?hsP@EgLF>44v%vOsr)y(s>gQPujxSaPJa8xpb|BMfRg%A*w4-cyl-_MQe#on|?15$=ypbPDU~Uy$e6PIQ)cf280%-5yHG?nT6} zi#qAM2fRv5w+9N>Y5Fueo*SGyRn^uyZZCLAO%OvLu|=m%BaqHrNkgo9Y2=OuN#KsM z;~=@|+%cz7AJT0Q!R@Kw+AZsL3WbArlr8HHphuKK?)c+JbK2ujHKucWeo0Y1rvdII zwyT{m>dAC&pI-Me)ay3!Eb)m7Y~hgDJs<1;dqF_BUXTo~x4!tlMad zI`;ylrQ=^_{P?}%`A9rpiYJq$?*j&>Q1u+2%ZO8mwrV?fSgUd#FY~tJo6Q6#AZdqR z;Ffb;9e6|sj(VD6@Nq@mW8XL`vg0s(E_B^?OXzYGS_d9)PE>cHt4WUPu~CyeLKl_j zs3E&Gf<$d+$QfW5;|z4_9(dDDh{5kfpC;`Iy#ArPa{ew2BpGsyE{;=ebpo$GC^zJt zudB{U%}zatx4m#6m3f5f1lW%LLArR)bd(&#nVt7~`YwSJhF$o&Dofsb}awonaR~k5xr?P0hzYSvTKLheKG8Gfr()CFrJ3yrr1# z`as+s>WEkhA1`Oc_5=mqru34-aly;+G}1goVW~%MuCeEB-Tienr-XcRCUn z%peHGFKZ>iQ2axEx_t4U<70W^FY&RE_{TA(GUkGM7k(~s&SZo(Q+~5d0vI6RXkVLn zOEp5!B=&h1DX5T`mPZ8}z_OTe=Q1X8nsFX;_7w0{_ywGS%l;Wn(4oPiEusiVP!Yu| zyvfAr6po$iQ;8STQaGa09{*Pu{Hukv`KW@}+DcnG%%$Px>x-jmRRY&ANJSQ}Uzk?4 zI)$l)B%Q`>nzS+rg9n)*>>A6m<8K%v^U>Y7HOLb$Nhw~@XBw;5N5=f}JZA25x}0fsG_-Km0nE7N|R61h>lE-Ng{_|qEu9;rY{PvsP^QIB%Upj2M^dbC?JQQ6t`WF4Nw*KZ-|?U7tyb2*g& z-Lr>MqND~=K#!INS&op-?QENn!!m08tMuKN-|>9y)kb~=jQ8g&p4Z@{>((LvSNf8R z8M=(G(o^`9+Bb!Pd3>$ot8^k9^e!vdC+*N4d^|$-d|&$gocgNx7 zdf@OslLv-p1J30{{k@I(9)X44BQguz%HFTG)_a7OeI4@^pEBq>y|Sjh8diL%hz&Kf z$jGSn*Uy?=RZCu)m5V`NlY-{{M5=B6(p(ADM66M=!KVFU{+D4`0wymED9x!MKdF;Q z$@JSy9Y`_oyUlUQ>}+)rnRM;E5M5X2CnAwHI?1mNl?6@DJgc$^Nn83wUP$5_Z#8YI zY8#Boe5Psbl=t}?P0}~>sSFaD#%3X?G63ic;Td71C_g0vC^DN8^-cN0h9KFBH4IHo zg*{%+)}GQ48nU8LA*FHH&SOKd-)i>Nw*hFBsHjrgR>V7XHfYF}Rlm(VAlWRQRWrY; zmc&bAS+unwQ@@R%jtygpY<;)9yk_dv^DxXf+lOB^<|AN+yu<3NG@?bqqzMOW(}tZGB5vu2VR@@R#dOPJb%BFEbs(9&{=BL>3Pu&(=a6 z+N0jZ>$k!viG3(`R8+klJv+Qk0Eyc_Y-FGB*^)I^FLrk zT0!UcZKQvd8{|>)3R+&@ayDBr@tv_ z^oPe)NiX6ZO_-%3#X65Wo&zf6|Jd@UlO5F8g>@RSr2=+c>EF&jo3M2G5ALJW&(as~ z*UsOIusopqzhkRTw31qgp#E-|3Q{PjdXiQ!;qsy(H7@ALt7;p^9o5t(O=#MUfBk2J&}{qHf7CC8Fy1A-IRs5fnqAnc(icR8)(C z(<6kMqEq(DNll=i!96dwySnITrAO3(;6({6TDB9o zvw{xc1ed+zawiC0!SuR)x9;l;G#hUWkapRRaquzk>S6|hyQ5dVyj`Jg)icKpS1ALIlR-tH*xr73xA5k828~spYxgj*BbWl zzjIjLoC`g}PJ2!#xb&3rs#Ea)-~=aH^kRGD3=3b)^f3$ng7rM!!kalf)xzg6pLrI3 z7xTH!!hg*4w^{gy9KPSe&*A&)w-){+^IvD-(sw^;;lJd3U$XFZ%tvfbh(3SAxY*tj z`~$|@@l|m77Td+br9Q-_jL>)Cat*TRf5-BTv~a2KNfthX%QfA?OE^5=!bfrVMhhRy z;h$LeL=Hb<;bNofQ49Zs!<#MqX)f0b7B03jY+El6F}-c;j>s9dn zj3+ESo5Pn__!8DR)7g3CB~ zjllQHMNM-O#z6}{%NaLq9w6@b%ty}21cv|T89&kB1N?Kw z`&;>zQXJe_7XAYbJ7N<-_)EVt$>M)ME85un}8zc!<=u0CC?VduQG7-8?py|p@lcH zKII%)@CW_t+z!RYli*?l?Foxdg!#zc9-)_f-?iu^U)if8^pdY$-R}3pl5aPj_zAt_ zEA0h(V-=9kajxZh6I`A#?r8&`#pSl?m$rd(u~gqhJ=Td{6rB{ESeksE_N$a7 zH;qpupG+ioC6ap*E$X~ndsq^*gCkj1n3qVtSQ>dnMI^5+EH3T0F_GMvNY)n) z24PupFA;@HlbcH;yG#3RE=zv)4l+tCZB8Ux>ceHpgJsDBiI&fYB|bY`mV5)g(&VPH z|2ywI^=`gTbos?mvfigOByUozE_rfr!-0VBIOr}A)9hU8YdJM zC(nu{UD^SY&^utFS47J(XyX{?Sbx2jwosqfUHjbA7kc%9cdGO|(NMk$gvK z?z68GLpCRJM;##1c0`&>-6zN7u6m_($jkF@YdpI!ch%RqtEf0J_l1#789DDRq`fh; z7ie2N@@YKsO!QCCl``=gr=3cFR+`%qD^!g;u_dDrK=g6^mR7Durv2!5r_T2)67JoZ z#7`BD(knjib|Hkyogj5kEmyukO(LAA{4~*WI7|}mre>5MT}w2JD6|zDp)wN5vkMc+ zw{;_F%qS#HhMAAsR}8grOgc|AH>Ee3D%!7J@=yKNHcAvA~5$S%~Y^(Q_T71QtWXef28@+4N@LT zSymWIW)zY~^=Y&btL0#>HjAwIAI!Z%MUaO6bPhB?y6c>1y0$Q{ta8J_+*5ZheI_@t zQ&mR4U5RI3!;Y?I(#FBuiz$0yMd+zJb)jgVSsuiI5Kd|GV`{nBj8)pQkCb>>A>Gl{ zg?q}9(+XcJt$e490`HVnzA>h9U!wA_xJ3?}-&B7Z-ImuD9wP0&Qc4xR`2B_C{h*ZU zI+{F4?eHIE$sI&+c5*^t_)i!$VpPHyh4NyQL#V9j>{H69v&dI{!Z%8+GP*PJ|AcN) zgNbCUu$b6rnJdc*&yGA3Ln|3tR#+UP+b1v9NUU=2Tb~%RHTS;e+((Y2^LVmM@1z z7jJi?xvMtrd(e-MPAW})jSlt`>R=-ujBos5#?o)<&rUR5L0!!O+LR~qR6d_*r1E}N z+Bo5PM->|V=ALNo`R^wdZwN&fZ*&{$zFhig!}FIW-%&f}qE~Ei9J-_6yfut{hTqxo zf%~=${cy`oct0A{gLH=8^A^-Q(d44H%mww9 zxuD)M7u0*@f_kr<$}*#AByrN-Tj9+NWrgr^glSbw=4Qljb_&UgOps(*1E+f4!AdN> zzb&Zux2gHUo_4wJuPI@OD4lkBE{ab3+jQ_)7au2Sf13_=;b5K)cI9Bc4(4+(tb@mK zu&)kw<6yB4cIV(=9qhru5*_Tx!GsR>;@~(P40CX@4)%86A^8J+rs!ayyI%!o>fni7 zqPaSFG6(B*@KhIXn*)6o>R_>ZDFv~=O@|}yEET?i!~NZV5O3^n)A57okaL7@;_xu{ z21S26hZAm-3g5%wQVuWY@Od0w!Qs&yUd`b$_cWD$Er-V{>9M~}=ReNH2B=^k+TWH< zgigCPnEW~U?H+?lIwNit;pl|~Hb$M41{V^33L}tfKWlyJiI%g&@0Fh2-ybL}TBd_BYszmVG4p#rw z*ABN3UN|e*6(w;C<<)Xm6vYV6u2^UU^DBxS_XNlUmtPSvLh5C|dm@womp`MD_Qahe zeDS%%$tPX|Ho`|v(+?Da{EGgR@fk*tk`Iy~Y6_gWz++vJL9sG^UZqlYpX#_{K@hlO zN>^I=sr-tDlaFsRIo=?2rR3vv$^N1?(_cpEk^MzR_R4Q&e_5N!@8j$*Gqd*s zlKqr6(`V2VNLSL^6nUf8Rn^}VsgxcSj$6T^sh3=CC8F|GrBCye&1#z4X0yU3`mXaF zcdjSrJZcI?sJ{`)r%daFcRnenUIMxaEJzJrBf*}yX-wx{+v_fddfm(()vm%~;Bfi0A@q7tn3m8BQY$PZvd&0a0OHUu(7U*<4m_d*9e+nL zu)m=?j&C$&_ApqUbluJ)=+f~|L@}Q{y;XD}W5%;zyluX0FqL`qC_1K-JFMny2>gg;MwM zWeY=kdiMy`ZnX}nd-yua9=@Yw4_^)ugwEq}etde9U6 z(XDsz9b<0MOWn?=_Z=SF*0w!t?#t16;^h$;Hx>~P#HK!$2*Kn0?Q{rs(>wXP8)-;v z+Suo%p&)JVlMLuPf9i%lf1{u50W9#T^@hFPN3>y&dwLp(7UYSa1XPZ&eDSLxkx=Zf z6Tf=@r?I}`S0j|hip76|;-=CL7XMOLgS5ZyI#&WWGDw*W7XOcYtXTYF=$YvHioemP z3yZ(W$MVH5AI>Okp7`Y@9bxJ~Y=|a@t|$Sy0Ie>UGvYcE#p|cLWA&m|2^bjTrJEpL zBi-6I(^YusE)eha9(1{Qmw3=P@&4U|E*G!th@@>)Wv-5%$X9~ITj@cUiXHO&UG#y%3diCK{~GWuj)-zstd&{!jS~xl`pKWbD?-e-n61$D578C%PC$d4Ytuq zaenTRT_|2D7VVi6?*|^$c=1X}iAubFp=CWlt5R1m;yRPXD^k(+P!UQ#V-h41_`D~z zV#?+I^fP%b9Rj#szm}NcfP6PrfTd!cx90XX0HMgiHI9 z@(CXaOLGc2lCvP9i7e;xyE4Y#l_B8;o*r}#5|-D@*|f*87nOiA7f4iyIv`krzD6~t zz06rOD`k+duW6CBwWcM;)-)D*!ByxBJx1Me`=YxuYMqmo2_&tuqmH^`ImMr}jOo40 zO!m#?D{V&8a9Ej~eBKJ58DU-x^w$H}@8S(iZ)h(>?I8YD=( zfAgRTB0(RoiyJqHy&_4P&6Og7w8(7dKWGnYozt_&vYyOa8lCHuizHIF1WC5i*%%B2 zlA6^~*MfIjiV!hKQt?XLcby4^ERi&Cf<&U9wN`{=djzEp(EU-=s<;;jbHBJ3NO6TZ zQrd+X$7+}3$}n1sUyf!VEG+)pnI3d)@tWe*>V%o>{echJsf6R*250fhLM_TIPy7!W zbZzmv&&zINTO{{*BzSq1;#PCi8Y3t1f8}Fg@qg`Ot#l&1o?#kl2D{n&vJa(Xk3di( zvLFQ77JmW9K_}wx?PIMZ5MDi)hNe|*Wp}Jc(n=?=J_IM9_#lz^&-8Q86aP#fD;EE3 zAIlT}TptUGzuw1+#lOJE^2C3gkA=i9$ET2d#o`ycGSHa##r!hLp-blfN?D`K-*qa) z>nFQovY$ZvS|^(*$)vP2x2j>LQV4<;G913_Yu*S(3fxw-5$d7CXc0> zE=jN>ON|knrUMd`oOp88Rz7k{j_X`7mHA(9S!<36|GZUVW+yE^ZEr}X_yeNGoSOWz_i>sx{%jp9O++_rMt%P}E`W?@Rbf(R#1?*a&GKS^86Ww}%qSskf!dMuN$ z{?dU5s!2A}G)82ma1Bl6D{d3<&+xH4@mKp;zW8VRSXlgXeXOte*Z5em`2Xl*eZ?<_ zG?6S}@&DPU%NPISK9(o`zxY_I9#6_DhXm1`eLa&)a@T3qDkYVW(#l^YaW=Kkq7AzZJ-~oWBuDW~OP*e2nkCazJH7P6 zIo!a<@pU|3rK6MH=eLZDnPoXXshM%PJr8j>%o>ur;eT8HKO$uZoZ+Okf602q5t^7d z{Rk{wd@D)a)pgpY#jKjj>V|1m4sDU)H9pE>g%?s5Bs?n=R7f#YK?AaQsfyI5c37mK zY7&bS{Lp_4?rU!GU2j`tfzvupO=2>M!hYp)|&ge-ErRU689&EogSUdf! zVBXomxsx9ac3b)9iopj-xh8nVXVA_N* zjBI#PUJ}3Xe3i9lVMCc4Xv4$?GRFr*F|l#PMkBmNUbS%UoSG^sj<&-=(odT;pOoU8 zzCc;$l~B-S^`M#F;IS!4la zYKqkj&!mKHYlCWsZ+mS)V`2HUISXnWuViR7RG|xDx@2y}w1~ctr3!=w=*vKTIRm@r zDre6n6{az#L2 z2w`Al_8jWVP~0Q5xIvW42#L}cah%qln0+5B8=lHy=U+7TJ6P9PSl&Rda_Z^U)D~6P z#0H5{*D#ez_HVPbQAQ(X4<0qudp5GQaa&+`PX4XI;W^=^jCfApTQZ|L#W!Zfat1GM zH!~Ihb(Ndb>IiV=N*Tf z!a7#t;Xr9l2z=HcOs+S6N^|li6MZpxwk-`7e*vPc1sSPvG9i~uL&_2}}WN)TOM@vX$ z&M9WqR7o_+<`iKNMxR$yGpD|)i0sFlMh25AuVS`UGs~yfR*-F;e}@Yb6R20d`3cVw z_Sh5AJR#s~ce?W2FC}K}89I0!*Bw6gz$??-e5O8;aei^YC|zuUIL6Kk6KL@KzUd>B z7ILY3fUch7{O$5eSgyk;LAvyE9*UGx_)7WZdI6`Gc)9lF{P)oZdDF2vJqZ1UtrJ8J z=FPA9degaD)&o|OugHZDbv93=??hkq;nd#XX5N+j$I`#ZFZG&DSi1Zj?muNOHjyc3=P$T@ z1>OH0TOZIuYxnQ7^}(H)l|?YE)e6){tI3Ed1fsbN7neB^tSyartnh z=7@w%Wn3C_ZwkX~Bgw@i2IytXt1HYjS{6@l+9=H=w^GU+)Y=iy*rk}!9 z=DjuaUZv3N%``mX+Z^HNyY!|;=t%%8TIr%6pzx5Q9#qMrALGfRpA`^==a=$Xbu|_A zOhwmOHDqsc&I}~?9+t>YPy3Y>)m7!S^n_2rG|%ncTTc`peT>-dSj_ba9Q}^qKQnOj zL4to|;3oZX+&O^{7E=oSxdwi`fsZlpo(A5;II=;#3!k4EIPMw2?>G4LGH^Lx0esLV zh5k*05Bhn*_Zxi7axLZdf=hux|6m*VPr1DyI&9F(9ZqZaQtoNpFX%mqM^W7QEQjtF zeEc622M5{Uzz6h;nO?0hrLar?Tt(#L)t+<}T;}OA?1GQT0Qw^QkQ4q>RLF6L@>TGk zb0(!0E^8>zFTe@CEGoK4!yeuU!N|$|CG^)b|0*5r(eGjUY73Xe2z3@diNgym{A1?7 z*uvK{evgIAx(>|a;6%>tO#f>Qd$=spT4mwybNDd}-^AtGWZ}PH{22>Bo$(hfT-w23 zEnMn*pM^id;mf=Og8Pf$8!s{1k47vbR|1W$*SNi(d2_w{TgYFu}tA%=yat zAK~AN<*c>nXRtiiTe!=(d;k$XCCq=BMZbe_sZXJ2*n92~{5h6qyTzvu=limSFXHff z7JeCrMSsG-g!#1Rd;~wh^xZ6cD+_wEh0kGJY<>tIu}N~CMK3lT-p3e6kV%!K>n&X7k#ar~zv;i7XCDc&oXexxk}oDfkVzAJmAX*Q_1%R z#wQ!}c;6td%D})75PEc>)ps(YKH*LHC|D5qVE&5sffU(@b!T)Y9*KZh? z_8{~B|FUq=^Pdeq$af3#-(%sO5J^tXL5F^j?-^W=vTj5275)dUd}SHk=NA7`=HG$m zW1{~bGoEkZYZ<4_6UvD^VI6c%W?bZ1&HAxzzsMpwvHc?XzRdhDGWY|M^U$v_aOhzp zx5HUhzVh5O&%$Nt+|>pj@V^`akh|H!f5o`WS4B=aAN+oU9`X!fd46T(E6;1cw{Tfu zCd)g7|A(CK69#|C`7+-GFIxC9JUJCx!blEzPULp-jYVI>^jUo02>sh!Uq>@8^(Zfe z#5RlIvM`~*-~&1DVE+9r{A0#TEPNz{B{$Z>f5-Tx7Vh#Zh?y3CCgZaW94vmz^|HXg zA?IwSzt+G(FAF|yG;q-Wg6VH#T=XFN`KdvVsw$y>xCad!e6}*5-&pt{e$Ttwz`>`P z{^9;);NWu?)2}yh$iD!@`0OV{utWZ5? z;i4*Ju7%6^b(4k5__Ex>rJrAG;nEN9v~cMUGgwZ@qU7Q6so27$-PTqP6mvXbxPNAo zXUKp-gB9U-I7d2!7ar_N)U|}(CmiEUOg;}wDc`hw6^i0>)lxHqoLuskM_ulH)R|bb6Y6fGBWqk z&h19t)UjRcCNcri?3NALQ-Ac3_Zps3rgF%Z%f4-76D0T1QSO!>fg$}l$sa*?WV7UQ zvWRgV#EedgHLCoUZX>3*Av!uSo_rNYUjOjQSkt_3%9=*H@!UtBrTjCx#*_aT<8It{ zlqY{FpcJRqXY~&xs0h);8{C_+%95Ks zUQxGY%#ha_9v{_IeTIAK<%EAg|J$OM#geNaZ7iw9xg5qZR?t|a+uo7bywH{izTf%J z0ss8xfI9yf7A_W(s?3v~gZ|OYL3MO$JylP}{S}?8ZTD&myxs2emzm%pM#p(P?{f zP}{S}?8QNC&muF-L2b_>v$wmE{qvf2 z*gvmXhx@xbiMMCZB6E=YnhLW$i%kE#W=)@Pe?a;R_F;P#nWY?Ndls4JahUB{WRB)A z+q1|lbAPAOvptJU|GZ|+f1JBl<-d{bS!A+3i_FKM5;eEV{Ik{$ht_H3XnPi!#(B+6 zlprhgC(5oPS`^B4)Nt|uMf*_br-F8J_*`;6J6sL_AvderSu_x-e6za48|dTYE_AYb z;Qb$&2?^w0?FE(uoQ^jWd>)ahoW9YM4!1jOY2=|#aNOh7*~#$Q?r3VrN7oVsJnqD! zud2G50$mZ9fH%Jske7~D5N9^4)0R75$sUk*rsTaK51e}4>V|tO*6N##TOi!JY7+lf z$Dbl;p)iywD|9?1&j*|p!tZgqNMb(KX8<1_WKf*`x;Wj`LDBso0Nl}awX~qKzbf4Y zx;Xtso^G?|QoiWp@an%Xy|?gs7EB?S6qK z<+?iXh!F@4E1<5?b@R~@ls%L)DSW(YRjy8)-6N(+U}RHq$R2_@I4An28QfseX7{+e z6~9M(8i$U!Jt3!4hhR?k92|CwWf+0)asIGpi{RgFv_LV=6e|U}sWuGq+Oj)9+c8Wl z0We@-m?20tVPF^(pu!*Pn+U)`!(EIZ#deh=f%CQDgX2sA{L_kQOOBU4rSi`t7Ads# zf#X|QA5b?0wIgg!5I;}QfqBOT{}j!S9AWw5mp93v6aUXNnc~OZRu_Iyp;7#TR&fjr z*m+PZt*dIv?vR{(fAyl(ty>C;M1m@elN| zu=ry>mM{L1K9(nb+3A3Cun68|Is1;`bhOh$ynQ`rvUr6PQF$ELBaGy!fEtK+Utp4; zQ@dzcTj@4)1a0(hi{!sNl8bE;$?7Oi=1Zj*zRZ`lmC6^eVM#y&e!5n<3CWwDK$AXU zuV^YwgKVAZLOT`OXq{dpYRY;l1!x>0ms)=!qKYzpK4kwvzDhQS4I0y1Ls|0^>1WWOA34Z>2 zVz9&H(-xoh0_|0!9Sn1-r^&Vg`y^0x!e{Cpg;rY=BrO(#>s95(jsvwioX(omOXT$l zmUL*NtOUpUbJ8*!vwN1d!%cDUqDFKL{<{(bJUfRt`BJ?P5Xy#erx&v-N$RHHTUST?DI9lgsF)zUDXVS*3jP= z7@L#7I2gEz*US&5xDxt@`z3zVI{5La>)>e*0Ih?cozpj(6Fx5|f1KI|K(ybo2EO(3 zcPxt6>(Xge(i~ZrUNLoQZPk1U{oh*S-knr{A(f`CDXxS=_6WqUiapu_@*zESy(#V{ zfN2~*(|Iu`kq=|u_e~$6wCS>v{AGKpWN6c3d^54PVW{MFooK1__xs`>Y4j1Y~k{;!U zNOt+JB+TZClwTiV{+O+&OJ9T!0px0}NGnJa{`B&XWBH|?AU~cdZ26Offv1#{yvi-- zM*SjeqUHbd^+r}x9kgt+Xu0QAW7MZh+)7!YD6Z{XH-kaNS#7<5R{g_V5 zFW7I%ldk?}rm272`;uPtifrtA7rYbdU5w+%V-PSnTYiLX*+G}!4DR6soe9gOe>;Em zJqigd_u6q92wS+FzZLBTLHFI)h^H$F^pj3Qz|(0SxZN9Tv4Y+T7f(#(33^(waqhfQ zVd5`O*QpWzzVjgEJ%i65-Jx2G%#a$($&dRI_;SY8_zgcM_mwHL&6LTUXb2?~Kaz2` zqrR=7lyYvE+)kheE^B9wB|n^pa}{#)QSH^N)dEfK;W9q~ z9F`YEQr_Dbf5@W0hr_?NaH-c-7CwZ-@>)jtqg}ym(HE~=@-}L>g->Pq-?H#J4$E3( z;Xj}C5ae`%pT}W&IU#t0`AB^V{x#FfH&VebXZm3l|2Z5UYvHnn^l}Ry$#Pa(cyHz} z^(OgV$+)aJ6FkCvWX-YQT^L_s@fYi1f3$FB?`*d4r#ND_h0});<@Q?m5DtH8;VYR> z7N-+AOBfe<1s}obPqgUoVtkN=-^;k@Rrox>_#}&7^fKMT=W=+ygCH8y=-;kme1%2-p5p2_k6O62`@Tj_3@srD-9g{ zf6DahEnNDer!8Fi|K|)G{6#;q7E|QBiTUp{=#lSmYI`N|qk!6o1M7QN(ap4SKYCEt53ddXMjgy7F45TngCR_(YP zQeTRge!}cQakxkdiCOq^4%b!8o?BfteRe&sZ2D(wnj(=Q{fonJQ`#?zmyHa#EC}&) zopaSZlUaM0oib@9q(q@5wEwIttsh$aO~!&_5|!U1npBw+EpKNe8Z!oetk2m=G@Suz zwT*xlG=2O?{cM5IIugk(1Wj!XUDO(yU_ojv)yI$I{+L)n|OXVfyWB!F7Xw zPEVv+%c0IuLOc{|#IHqLHNtdI8V-WWTl&nxvc;cgEILz)RrySr6!47<97naK1#7ty z?)t{zIOnOXv3;aj_1NzaM>@}HBb}?Z2WK%|r@~E2fs`=PtO)kKs?H(O`a3pNe~q!h zp_W5Ilqaoz5&!W9r(v*D7a8Q#4d_qSc&dCvO_`jI<0DM{Y>YC(+1U1;Dr9u z!VuwGUC4^XbGPZjW`O*5xP;>i=_b%^Hl!Mr-?Es%yafK0wOK)bZC0?&wOJYd+N_MW z)@EfsH=Kk*$K~wFGS+5grLN7&N?n_kmAW=7D|KyFR_fZUtkktxS*dHYvQpP(Wu>mo z%1T|Em6f_SD=T$vR#xiTtgO_vSy`!Tv$9gxW@V+W&C0UYW@TAxv$CwUSy|TFtSoD7 zR+hCkE6ZA&m1V8X%CgpGWm#*pvaGdPS@znjEMA+H<*&`kN?Dtgm9jP~>t9%#l@R3S)Gu?~9$bss&s@cQrxBl$X~zfphV`le~21(Ye1PuX;=koC}7X z<@}YCTm)?wSP*)X*mMEzo|H>o<&M>Nc9H8L9Dxg^!MsbSDH5(-X$e>{goabE+0@Gp zcK`%3ytJuVGasy$94d0_=Q-luovfWX?qC!QPG>e)_;XOCQ`xDxu6r&N3U~Z9QWza} z++jT*VyM?W-Y0mc2lzC~wkVRH^=>V_pQtS4n zQxaacry@hcV1LtfbFh9(t@cWir(ig^xQ-&p?(q{%vXCws8G_Zbk_hU6#ZJXGL$48V zdp$#ln2)Ab{aZZFdP zox&XkcElk!sR!Bki^AweLnBOgj7@u_>*A9JNJm{$myG4>gKCW9Yv?X97lxH~@|T8@ zrCM`o7>=_sR;C@FdV)>QOefL_IjW;0^6?QAL(I{W#Yfs!}>21f3=4VSSJ3Tc-X*Y;(y4)ikFEWoevx=-HZQG4H4FV znfNz**nn0`jdpU}E{|qGNc?+zEKmGBRR4xN7lg$h_OU$i_w})m_=oyfm|1%lk>eFc zNZsNUmaa2iyamjOEJKS|m=l%9ls&?`tCwnmr0VZOZKe9uljs6Tb-I`80y~ww-0Z|8 z?depGyF&9qFb6J}$dT<_d{<}zS=_!0v;Gt(Z2bN6UVq-I3T@gn8Yp3DCVGNTOv#P{ zQ#h)jZIV-oOb@fE(`|VnYO@S8fOK$jZ>TPw!g61TEOJlGRMftq!5?t=I=IHAj`C1n?91Rlt6=Z($?oJ*IC zz_1KARF)Aqkm1hB2t>*3Z)aLG=4RDrg+`C{yaj;(soS@HJ3cyQTv@z)-v{tHJHCV>H94z(~HQ+UZ^48#KD%`S-qqP#z0|=)u4FT+hSFM?=^t=UWYW-NM$YY1=)nfz6a`23rs%hagG~?;fzm2tStxHR$ zEMZR=tMt^eJTG%BjZ3>4F3qYutP#|vW!qRHN2}V%a#H_t*!BcdwKU8&pgUgG!N}S5 zrC8FW3a0W>lC*6&*RMLQnlntpw&~Wlp_Yx7rxwPsNnCm~il~O^Go=NFB#juw)d4C& z>&0-X6*aPKf>S=dx?)BhE%f{TOX8p`erRm4`6{T)o{QfFjY z(Tz^x`k7Np2FAaeEnTdcfV0=s;lWnEH*{AN`hmEZ{g3c9OxGCuufkQ?uN{>W4!~}0 zEGLxcpdO@Ui0jF;$oE?I3x5^-mbG@@YHybAmPk=VEXTs;ERh%0&MBharJ`DJWnnhm zx;)dI?418Y257^iG>q0+N_qZI3486S3hLE#(0!}P7-8eWnrbjl1@JrsuS|pxhC7k| zfqSzxfaKP3Ivw(V?YuBm0?+T8K0;}cRe$<7o#Zc5F^Lngxn^PfeS%@cX)^UEFQf2>F=sP17KL;5rMsZ+j<0fVz?7Z8?C{P%ME3n_)BcLc(#bCd>mWBAuDJJY`SA@JJf)oERW1Z#a@{TFlD}Lx5ly=EeRyCw zMRD_rjepdZuO z`I~X3A9UY+ZDTq~AYW?@svyx=2}jf4EgYP+}a-a!B9w0ut+_%GYQ zR}&8YC42+OJajALQy3RH9sQVrkMx!7SC622?pQXWIIWdivV1!T5$cqXbPunsC;qLF za(?bhZzq=?gZLSh-T++XKd>^JR!_8or+EmWlIt-ISM;A~J7V{>4?uFj(Z>m{+lR)n zd|U8R^2321ZA9?P0Fnca)-U)RfaHLqUlsgKfaHLi^6Xcr#=DST=sR=0p@+deBlszd zgHKljKf|C$8xZ<22ECc@>^5*psvM%txwo`c!R0;;YjSFVnjU$;73+(K^K{KAv2eLh zB`-{`(D#e$$R6OBI>_2L)E%7QSzI3I98U0^EGWhpIFLbi;tJR!xXerXF%CXFGJTnbJ^VhVmv`YpKaA-rEc)x2&vXlK&w7|= z;U_WujTU|_=nCZ4y^m4!Lws5g) z`j&-bUJdsTeev`>hV>(_mL*?V`)jUgM*WK3LoeB#VAEhs`z3pdZEhnQzgTaM)ba40>6MYOZMpE}fIPrWyFn%*R~Q415~P z`KXnztPzJv9XQd?S{-ycSh%e5&9m^1JjIn`n1#>nOxN3@|0VP9YvD336j`{mvw;?V z8i!#)22S$brGrk1g)d<}NIeLB4eMpRMPJVJrafNhb2IawYtajzYb|^d^N}^HlJE1J zuh`EM{O`>Fapr^MOsZlwS-8yGp11P-1t9WZ;PF!+gRPK9cbh3|z)^M44->A*Y--VA|saJ{iR1Mi_j6?_&LrWnARn zsi*kbxtQOPJ3}#vulvee@5v#-IoP)e5EeUAJ6oH%eZ)& z#Yggmfhsu3SJuRzW8ld5B)(6~HQ&HLXIzd|1|Q(1thbvjK7VBVJ`11Ee8i5a@cEqS zpI~~FOZrsuI(sZWBIjEcE^;2UaFH`33*7wvR^;qr;UcH(y@EU-3DZ9ulPi6iZ!z+8 zbgOxIFEAj73l~*|!|GRKCO*)@g)U*?(hpQycnRlsorOlB0y)XCCWBFN#izPK33~#P#pP9$w@5p~j0c z8rvn3*A_N6F6tO->={iymnvO}?`d3=7i*lK5!o7Tc{!C6xS@#vgW!<~|wC-QjLX zZjD7=>qE?A?#s!STGnUgK22$xZgD^xOCE|fjtmh+GRSC@#JC3u;7iR`+|xg6+7}ov}Id&_t{wTjacNpm`mb6 z5i9t7c+)LMYm%n}gu729UuXG{dDP&E&Y2~pxzt3ZlH=@aH1usR3LW%zd zN!mCm9Cx3JCSS~bA|5$RMd+;96>Osd0B~QAC*O~@Y|MVa> zRg}qX(a4MOf_G64_}s(sMl}o-LVNrKm$$rodh!?A*Glm}JV;h0z6sJp#! z?BK@vXDj*@RBx)hvE;VMi!oi?+#Qh@ll6sbo9-K+v)vI>rH@7SLjkdZy%df`c0`j; zyC27rdt;5$3YWL+2$1+x+ApG!=c38K#UmTzkyql$ebHSTqmhqe)LtJR)pSb%I7SPe zY}powNA_ubl72|@u>oa;E25EiK)E*Vei2Xp4bjoa;Q`kcu8c=MiY9kNcQr?MwL~MI zQj=9Gi5C2ov_Zh|rZrh$9oZ6h_eYbj#v*S=BTvQMuj2);#*?2#6%}cV#CP|TLE4!6 z^{y=gsteaeBd<2yGDJz0{48GZNwj5iPn|FEcwQ;_lNfP|P?E#DHboI(Q0A!nYU5>v%j51>@#KfG$c6!z6|Mn`$cE&BT^nMN1M#N&x`RHlm5Lp6_r!>N zMa(@EO>T)sNMFy!BhN;YPegZZh(->MYFg71#PP^`N)Bp&ara<6xj#;KQR4(CYC_>! z{H%#m9Yi*_G?N0}i|$%aI_RRrazBkFzi!z~4dc_s`of1}k-d@K$@P)H(w($xb1d>X z@$K1kO9Zs;6S3q+>eh-SKc~jF22~MRAB!A}MYd6mtc*oo+|_~>2 z{d|;E5ldDVt|qb8#UkrTCd%xYUF%~_EAte6@&NS~RH18P?mI}iI;z_1ChFIy*;f~C zRqPbWN@5y_9N5)NO|qR%jCxOg7>|4wqweit^oXlt5%#T&1>vKJm588@k*Ze6{79V& z1xDm*kgkYPgQ9x>FdBI}x@!yYb)@ujRi4Nr9{CU?TdDPc{$a3=yPw5Km!$W4NN(gx z%KvLLvO7werJH6swaha#r+RSu8VMebyPqI66>&3h+K)n$==G!)LRXMZs88ApeUP}M zqvX9D5WbdR0ZARk*{LZl&R22tJ$vwd(tjt8b|B(>S`^L zQDs#ZuH8j98bWKS(>qbbJ3N-0 zruxp4z=nF(c;p|k0n;dPs|r;>oYIK0i{$jL}$1vY|{7@(~*qg3gJ>%1q7T zKs@r=$fk$2oRLFl7;*OIQU#@!xIex&Xrj3qRbMI%qB z?jfFhm#gV8^_=nKUi1(c$aGbu9aJO4ClI zDR>vR%vS1%;{|WWvJcY;w>64h8Qt+=G$g8~9W)})JmFg06?9ADPG3Vr5$fpT1)ouU zuAy#54gBDlJQ&M9NOOr;_UA-I?R+_PPEibqTd0(qGU?7!;mGFX)_B2JG+f2957A&q zw`l=&$PW+Hg?R^RS{HL)qgfdmCHc@mX&|CD{C+g~JZ{8-r?`o4rM7q?5`sE=d%WPw zc=r3Fnod12n%sy+xE3s0)>D&uOAU(DHQ>f3hIGU1B_g_;quI})CaKF=ccx~wIa;tg zTCg4MAp0MxqyG}OHMFoI?*0Reb(cUbfjX^EqXk=}x1lLT1WeFavNxj#C0_At)o-n( zsU2#bs+@e_LRGXIT@q@Iu4q@f*IF^W>F)lT&)#_U{%FDGc)^Fb_m~wa=pcq)#pEU#oH*?>fudGigmem#IyHex>c~B*-#Z7h$eSyHV2eMQ4%9Ujh~pj z0Ob@s4JI^GSb2tKvOAi+0~#$L!Ib3GF?|wEQd!ZJa<>}U&&67yI6*zpf)^rx1Fw~% zxU!Kbdw1kB(sQ(6hrXe=5>rwtZfnsrM)bJ*Wh{a_aMz|?TSyz!DA&>~0TRWMA7*cX zq6=PVy8C2>WE16Hmu7FI=;Yhbb@qpZP`Rn1NQtrR&q#SL4ZE8&lTVW>b-%F=okl$J zB)W^`_*omvewzrXsIh_%F>gaUs<8DmiJ+mC#)-|DO-u5XUUqFD6&(++dnow=={5Ul zXqL)V@HVMSC8gnmX4F)Vbk8R@#oW*6&W~n44?Pq-MOx{tIHA3eLcfl?)TdCZquzB5 zepaJBy8ob*(FoPrW;KJ0W`7ke_&QqfJf_6ipP+fsd<+@T+!pN63D6|XeJXjFbfJ1m zP?2;6JEBc@=Yd9R1#=~6Zom6EwZ}CWaOof2H8oc?-^t#q>gfgQ^$Xsn=C+Rh*ETH~ ztn$fLErz-@v?=OGP{WZQvV%Z0H$Z%VdJL!RBWYgJ^Rv?+0Fs-9$0jOv?Nn;&)O~e!W8RkCAqq{ay3prJBq?-X_t(Le(A2>f_a+K3Mv;ls%aDz2;|f}mP1H*w#I@;Ov6-?W{>0r2~9`nnF4cG zo*S)2aVdfn{~=EW=?RdtAnsdLQSd|EgQ8UJ6Mhna$_)XKx6&V}J@V|XO{zR}JJV3L zu1E<>6b~z*2;EM1Jl)bX>BlXB%t9{)uXys zbgiwVoO()5E7gn>9H~k$ED}5ATLES?LV27>cLb<P$Eff7VSo>pU=V&5=CR)SMazlk;r(?obkjDCtXh{`M~+UIECPayg5-|(bMgU$BX z=i2R;Fj*vuFjNeGRE&7Fhrh&g=kC+({TR5Ss%}FexZd95V9F{tS{IWWwQ{4YgLt6X zLKS&aZnUO%ezYzrvi@*^V^mueV%@~BJR1L^$T@geZj=}1llc?R@ zk9ol)lHD9*!{-3#JaFFTO})0}opUMW{Qg`TAav~RpC8?+W(^0}d!o;Ebo2{EV}CpGE0EkZXS#eYRtFKa?lP zLo!}b9r>vpxCP%S`8}S_jbcpEk&MKA#N zZ$9nz*M9vTQhyV$=vR3du-mWXV&ZLAf6V#xqf!`tjo5g&dC?bex5uvh=nJ{2yYf=; zQ1(n-kJpIp*oEMZzaJXSzY6GSH=unwpgat(?AKZs^zC?}KdZx2Vf4jB_}hi& z!M~sI_c?e@%tOp+o|r;{l}~g$f%qJWz6d<82c|h+$WMJbFZD${&h>Z$oC*cj&=gw~ zkN!{eB+5QQqrg}4S{I}sG)xueA>FQ;y!p{HZo6XAbQDqx>n4l3V1i0nb(9hTeibT5^z`#ScWLg|X|4(9cE z9|7j49!W)ncOpQV%cQy8j;H$|q15#8Gbd4!*+*Jeq$zEf$a^|J`Z(%M>I<7U472C9 zoQNpmG3f=A%N~El)E_cOBANORm4!Nr$Wz=!9&|jBj4a!rXM4wH4xrcJ8We*?IUXWO%U`u}VWzvJ8)XjNO%o^ii8!dL~OGM$3JNi<` zll^mPRu%->q0i{y@dH$1JmU4h(492kaTpJY7}WRpgr22#pWg8#!oeWn7#M`39s{w;Msdc*;S`9vDAgSv{SO+=|N;DZo*5K=e8y$$XbxHrSa01!_#U^ani zr#x*3vjfbdu;WqCTk@i4qu!@p`0DJ zVpWex@%6d(K{QYHq12QPL}p)*EHfwm28gEAGCC{x34Q>t!4%ZiMk z4w5?fj%Q#gUc-D{j0`*s(-9dZmfP`Hhw1CpyO`@COX)2j1W@LX5YO0ea1tXJ3{r;2 z7jMp{sN^|)9c}p2us#<_XuleL8n$b1kVfsI%mSVleGScKKH3`el&MHt3^ID4^?gmn z;Rqdfhz>9h(S`LpkjKhMDjt{^c@+bKDOy1vkgKz4oU*-`=qlN zIzNO&^l7{{iY|_|@}1uCsbA3xB4nx4Fdvqob;i66(i}ba zYx$|@b5Lc8Ri+<>O%O*gN9hsjQS}Us?5232^?L=TqisOrvM=5$*^IY^+}eLdwfibI`YM&&TO3qCJod!Hv=ixN2}$I3eBgk_94KTl zX^;CS;6BC^gyAlROekm*)4bxI>l7=qbE5;$>V1vm!++l9iKpa6J22!$8<>yLT*ng_ zqoEZ91gU+|=V%(H$6jm@`LGKO0Xf(1f9}@Jie(|DIuyuK@!=NuWEs+ z(5hw3b(&GC5R>pHl+KusQeBUV-W%w2bPT^nZ`84y(jodRV%XzlbRjBs`D)r7{S0*g zDuU=5_Q8{mpvoqW;GLMAq?p`EosN+~cs_PxgxR4t$!Jt-juzhVaA4k*?R2 z;Q7vQRJS*AtZ678@1Rm&#y>iqDVv9%i>{9QGwM>msZYD@JM?L)GrKL4-HsL|apRIN zjvYhiwjZ%eLGGnFrD?m zH!oV2k{8VxfQMdsl=VOK%JXjY!;a5m*Z=bn!n-Oyal_qk*Z-5g#A%$h{-4{yHTF?^ z9C~{Q#?E=;*s`!)2t-0%!mNRxwU3SX8LvvlF)#&qM3$(t2x5jorU;K;B

4H|jE=Z~UBu&sbl$ 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%0DpJ;e zLH~&xXq@m6e(S_$YOvQ8MBiGufTH5UFekEEHRjQ$TlU0keExSdTFgs~v`3JGOqFBNNZ_Y%HqiAzADY3I&tIA z5fnB`4b8>pKzT^9Pur6k{}XqpqUN-`jWF}tkKD5*Km1yL_<5w|duL&r*Xk|NFB0wj zdDzhSP~5sd-Qkor1whwdJ>xcc;wN;!0F0uYOKN0x=Sl_r{!5wu_gs)?-s0RtXgJWi6jju znQ!@mK?wy8P%U!!;{*MtO224vD+Evfevgf(VIikjXso&0V|;aj-pZD-S@Thu2bzuC@)dzeXHYb zPbhC|gLoS5=5=Tsy$+4@-ha~T(0H&xdhJ_~Ol;6&@yvI!?Y$DF_qZ$w>wQYlD)*Lm zwSDAWt$KTlD9A-ori*sL5n6`dz>!2z{N0B?-OF!-7JO)uolfkQP}7ihn&7 zfX|H?p$%h%-psmet4zorxloCace_xTY?1YtYeYty&@XyouQHjzc0s?8@|7^wp}8h9 zk<0Fd>_X%TRwQc}zQNb)uCEy>>}w#qv`-$B^Id4BMDIU5h*h|bJYJ7?b(fea(2Yg% zkQU=A?h;kWlw4L!nIiO!ZeY{Rz`EP)M^s7IPco7Kvs?>YRgyK|q>5@FT_hv4m||NO z2`L#*VnTb_dy&@R{fnWZv3u=vznk{Co?cDS6Fj%soo-3h=mdf}0Z9|EE(i5JKTjBm z?@0f(eSBz;q&_%s_v=vx_uxu`_UtU%85nXFq!&5^KiWS0o+W$dWHmLkITvklhD^+I z=1z3Zy7kkKpL+D;PiR-1r`n!!5+^#fjTug2nR98GlUV39O#Jv`r^iPn!I4hiY70Bt zI8}jxc8&8Nmj^?YPS&j#Wo0XLV6d>`=oe}`9H%ZAa{69@ZpgO1{aon%JIpMvtf*_S zXoHmUMr(P+>T<%CRjouPSzWPw>9Wi8n|JqhIeGJxbb`Bi^Gph9ml>_ll~(WE)t^#D zI{n+5tilkj#ugbEmsIy zs6A7o6raW%rp=m;abl#tW)Fsc(L%HNO_!|+StkHXJ?N%-zuJKrQ(y2Pb9TA|eq{*$vTW$sDtnX);!VaADM z4{`c!;fPUrr#v##Z#pnjCm?G8D}96*-(|{{s$jS77 zG5mKI|2pp2#6QK~|GX~cr{y@|ujKIi837uswe~pSZ|CqO915SF`popdmcti2!KzEv z8J%eaD6F_QL7HgOzdl1i?^B>P>VNSk?$6o3Uxw&6DY3e_#Gl-v=U>9i>UN0z=ZGM? z5`Tdo0MT9kJ=9J5(fb_nFX>8{QN)z$5YJ2ORGjx`+TWe+Bwa&_aUEh0{XlmY{_)<` zM!5b>Q(C+~Gkot(XNu(hU%aa&D~|t8R#LySt^a-de&Dm-Zm#a$jgnY*?_~9Zn|gZh zq>1Vty_2PB5A*77UlGb{|GQV|$Ed$aG8KTIcpTi)!yNC$YPVyX@@_ZqC`W&ejvF8L zT~c0Mu@nOw*u({h>Kmn&yc=EU!|6S$;9;(qRL7`D3NHOMRa1G`1?j%WB%G>{Joj*Q zP;DsTJMg26>IGdCyuS@NO`#qx={J~h($7tVLeBExq+gy(&N1-O%u~Nfm)N;QvsN*? zf-~!GBrmu;Y|8_Y;4+t5Vdy!D)3?UJ-(a5lF}g&LJov5Du#2}cFX4;4#E1GLx&;47 zv(`22n(6#w1DABZm2uMJueEpha7yQRj@PezILTkde7k{i_@% diff --git a/tizen/distrib/libav/tizen_configure b/tizen/distrib/libav/tizen_configure index dc62c76c75..f76e6c711e 100755 --- a/tizen/distrib/libav/tizen_configure +++ b/tizen/distrib/libav/tizen_configure @@ -10,9 +10,9 @@ fi case $TARGET_OS in Linux*) -./configure --extra-cflags="-m32 -I$PWD/include" --extra-ldflags="-m32" --prefix=./$BIN_DIR --arch=x86 --enable-static --enable-pic --enable-optimizations --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1 +./configure --prefix=./$BIN_DIR --arch=x86 --enable-static --enable-pic --enable-optimizations --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1 ;; MINGW*) -./configure --extra-cflags="-m32 -I$PWD/include" --extra-ldflags="-m32" --prefix=./$BIN_DIR --arch=x86 --enable-shared --disable-static --enable-optimizations --enable-memalign-hack --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1 +./configure --prefix=./$BIN_DIR --arch=x86 --enable-shared --disable-static --enable-optimizations --enable-memalign-hack --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1 ;; esac diff --git a/tizen/distrib/libav/tizen_configure_x86_64 b/tizen/distrib/libav/tizen_configure_x86_64 deleted file mode 100755 index a603d89777..0000000000 --- a/tizen/distrib/libav/tizen_configure_x86_64 +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -TARGET_OS=`uname -s` - -case $TARGET_OS in -Linux*) -rm -rf build_x86_64 -mkdir -p build_x86_64 -cd build_x86_64 -../configure --extra-cflags="-m64 -I$PWD/../include" --extra-ldflags="-m64" --prefix=/ --arch=x86_64 --enable-static --enable-pic --enable-optimizations --disable-doc --disable-gpl --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=vc1 -make install DESTDIR="$PWD/../install_x86_64" -;; -MINGW*) -rm -rf build_x86_64 -mkdir -p build_x86_64 -cd build_x86_64 -./configure --extra-cflags="-m64 -I$PWD/../include" --extra-ldflags="-m64" --prefix=/ --arch=x86_64 --enable-shared --disable-static --enable-optimizations --enable-memalign-hack --disable-yasm --disable-doc --disable-gpl --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=vc1 -make install DESTDIR="$PWD/../install_x86_64" -;; -esac diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/avcodec.h b/tizen/distrib/libav/x86_64/include/libavcodec/avcodec.h new file mode 100644 index 0000000000..0269892028 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/avcodec.h @@ -0,0 +1,4185 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_AVCODEC_H +#define AVCODEC_AVCODEC_H + +/** + * @file + * external API header + */ + +#include +#include "libavutil/samplefmt.h" +#include "libavutil/avutil.h" +#include "libavutil/cpu.h" + +#include "libavcodec/version.h" + +/** + * Identify the syntax and semantics of the bitstream. + * The principle is roughly: + * Two decoders with the same ID can decode the same streams. + * Two encoders with the same ID can encode compatible streams. + * There may be slight deviations from the principle due to implementation + * details. + * + * If you add a codec ID to this list, add it so that + * 1. no value of a existing codec ID changes (that would break ABI), + * 2. it is as close as possible to similar codecs. + */ +enum CodecID { + CODEC_ID_NONE, + + /* video codecs */ + CODEC_ID_MPEG1VIDEO, + CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding + CODEC_ID_MPEG2VIDEO_XVMC, + CODEC_ID_H261, + CODEC_ID_H263, + CODEC_ID_RV10, + CODEC_ID_RV20, + CODEC_ID_MJPEG, + CODEC_ID_MJPEGB, + CODEC_ID_LJPEG, + CODEC_ID_SP5X, + CODEC_ID_JPEGLS, + CODEC_ID_MPEG4, + CODEC_ID_RAWVIDEO, + CODEC_ID_MSMPEG4V1, + CODEC_ID_MSMPEG4V2, + CODEC_ID_MSMPEG4V3, + CODEC_ID_WMV1, + CODEC_ID_WMV2, + CODEC_ID_H263P, + CODEC_ID_H263I, + CODEC_ID_FLV1, + CODEC_ID_SVQ1, + CODEC_ID_SVQ3, + CODEC_ID_DVVIDEO, + CODEC_ID_HUFFYUV, + CODEC_ID_CYUV, + CODEC_ID_H264, + CODEC_ID_INDEO3, + CODEC_ID_VP3, + CODEC_ID_THEORA, + CODEC_ID_ASV1, + CODEC_ID_ASV2, + CODEC_ID_FFV1, + CODEC_ID_4XM, + CODEC_ID_VCR1, + CODEC_ID_CLJR, + CODEC_ID_MDEC, + CODEC_ID_ROQ, + CODEC_ID_INTERPLAY_VIDEO, + CODEC_ID_XAN_WC3, + CODEC_ID_XAN_WC4, + CODEC_ID_RPZA, + CODEC_ID_CINEPAK, + CODEC_ID_WS_VQA, + CODEC_ID_MSRLE, + CODEC_ID_MSVIDEO1, + CODEC_ID_IDCIN, + CODEC_ID_8BPS, + CODEC_ID_SMC, + CODEC_ID_FLIC, + CODEC_ID_TRUEMOTION1, + CODEC_ID_VMDVIDEO, + CODEC_ID_MSZH, + CODEC_ID_ZLIB, + CODEC_ID_QTRLE, + CODEC_ID_SNOW, + CODEC_ID_TSCC, + CODEC_ID_ULTI, + CODEC_ID_QDRAW, + CODEC_ID_VIXL, + CODEC_ID_QPEG, + CODEC_ID_PNG, + CODEC_ID_PPM, + CODEC_ID_PBM, + CODEC_ID_PGM, + CODEC_ID_PGMYUV, + CODEC_ID_PAM, + CODEC_ID_FFVHUFF, + CODEC_ID_RV30, + CODEC_ID_RV40, + CODEC_ID_VC1, + CODEC_ID_WMV3, + CODEC_ID_LOCO, + CODEC_ID_WNV1, + CODEC_ID_AASC, + CODEC_ID_INDEO2, + CODEC_ID_FRAPS, + CODEC_ID_TRUEMOTION2, + CODEC_ID_BMP, + CODEC_ID_CSCD, + CODEC_ID_MMVIDEO, + CODEC_ID_ZMBV, + CODEC_ID_AVS, + CODEC_ID_SMACKVIDEO, + CODEC_ID_NUV, + CODEC_ID_KMVC, + CODEC_ID_FLASHSV, + CODEC_ID_CAVS, + CODEC_ID_JPEG2000, + CODEC_ID_VMNC, + CODEC_ID_VP5, + CODEC_ID_VP6, + CODEC_ID_VP6F, + CODEC_ID_TARGA, + CODEC_ID_DSICINVIDEO, + CODEC_ID_TIERTEXSEQVIDEO, + CODEC_ID_TIFF, + CODEC_ID_GIF, + CODEC_ID_FFH264, + CODEC_ID_DXA, + CODEC_ID_DNXHD, + CODEC_ID_THP, + CODEC_ID_SGI, + CODEC_ID_C93, + CODEC_ID_BETHSOFTVID, + CODEC_ID_PTX, + CODEC_ID_TXD, + CODEC_ID_VP6A, + CODEC_ID_AMV, + CODEC_ID_VB, + CODEC_ID_PCX, + CODEC_ID_SUNRAST, + CODEC_ID_INDEO4, + CODEC_ID_INDEO5, + CODEC_ID_MIMIC, + CODEC_ID_RL2, + CODEC_ID_8SVX_EXP, + CODEC_ID_8SVX_FIB, + CODEC_ID_ESCAPE124, + CODEC_ID_DIRAC, + CODEC_ID_BFI, + CODEC_ID_CMV, + CODEC_ID_MOTIONPIXELS, + CODEC_ID_TGV, + CODEC_ID_TGQ, + CODEC_ID_TQI, + CODEC_ID_AURA, + CODEC_ID_AURA2, + CODEC_ID_V210X, + CODEC_ID_TMV, + CODEC_ID_V210, + CODEC_ID_DPX, + CODEC_ID_MAD, + CODEC_ID_FRWU, + CODEC_ID_FLASHSV2, + CODEC_ID_CDGRAPHICS, + CODEC_ID_R210, + CODEC_ID_ANM, + CODEC_ID_BINKVIDEO, + CODEC_ID_IFF_ILBM, + CODEC_ID_IFF_BYTERUN1, + CODEC_ID_KGV1, + CODEC_ID_YOP, + CODEC_ID_VP8, + CODEC_ID_PICTOR, + CODEC_ID_ANSI, + CODEC_ID_A64_MULTI, + CODEC_ID_A64_MULTI5, + CODEC_ID_R10K, + CODEC_ID_MXPEG, + CODEC_ID_LAGARITH, + CODEC_ID_PRORES, + CODEC_ID_JV, + CODEC_ID_DFA, + + /* various PCM "codecs" */ + CODEC_ID_PCM_S16LE= 0x10000, + CODEC_ID_PCM_S16BE, + CODEC_ID_PCM_U16LE, + CODEC_ID_PCM_U16BE, + CODEC_ID_PCM_S8, + CODEC_ID_PCM_U8, + CODEC_ID_PCM_MULAW, + CODEC_ID_PCM_ALAW, + CODEC_ID_PCM_S32LE, + CODEC_ID_PCM_S32BE, + CODEC_ID_PCM_U32LE, + CODEC_ID_PCM_U32BE, + CODEC_ID_PCM_S24LE, + CODEC_ID_PCM_S24BE, + CODEC_ID_PCM_U24LE, + CODEC_ID_PCM_U24BE, + CODEC_ID_PCM_S24DAUD, + CODEC_ID_PCM_ZORK, + CODEC_ID_PCM_S16LE_PLANAR, + CODEC_ID_PCM_DVD, + CODEC_ID_PCM_F32BE, + CODEC_ID_PCM_F32LE, + CODEC_ID_PCM_F64BE, + CODEC_ID_PCM_F64LE, + CODEC_ID_PCM_BLURAY, + CODEC_ID_PCM_LXF, + CODEC_ID_S302M, + + /* various ADPCM codecs */ + CODEC_ID_ADPCM_IMA_QT= 0x11000, + CODEC_ID_ADPCM_IMA_WAV, + CODEC_ID_ADPCM_IMA_DK3, + CODEC_ID_ADPCM_IMA_DK4, + CODEC_ID_ADPCM_IMA_WS, + CODEC_ID_ADPCM_IMA_SMJPEG, + CODEC_ID_ADPCM_MS, + CODEC_ID_ADPCM_4XM, + CODEC_ID_ADPCM_XA, + CODEC_ID_ADPCM_ADX, + CODEC_ID_ADPCM_EA, + CODEC_ID_ADPCM_G726, + CODEC_ID_ADPCM_CT, + CODEC_ID_ADPCM_SWF, + CODEC_ID_ADPCM_YAMAHA, + CODEC_ID_ADPCM_SBPRO_4, + CODEC_ID_ADPCM_SBPRO_3, + CODEC_ID_ADPCM_SBPRO_2, + CODEC_ID_ADPCM_THP, + CODEC_ID_ADPCM_IMA_AMV, + CODEC_ID_ADPCM_EA_R1, + CODEC_ID_ADPCM_EA_R3, + CODEC_ID_ADPCM_EA_R2, + CODEC_ID_ADPCM_IMA_EA_SEAD, + CODEC_ID_ADPCM_IMA_EA_EACS, + CODEC_ID_ADPCM_EA_XAS, + CODEC_ID_ADPCM_EA_MAXIS_XA, + CODEC_ID_ADPCM_IMA_ISS, + CODEC_ID_ADPCM_G722, + + /* AMR */ + CODEC_ID_AMR_NB= 0x12000, + CODEC_ID_AMR_WB, + + /* RealAudio codecs*/ + CODEC_ID_RA_144= 0x13000, + CODEC_ID_RA_288, + + /* various DPCM codecs */ + CODEC_ID_ROQ_DPCM= 0x14000, + CODEC_ID_INTERPLAY_DPCM, + CODEC_ID_XAN_DPCM, + CODEC_ID_SOL_DPCM, + + /* audio codecs */ + CODEC_ID_MP2= 0x15000, + CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 + CODEC_ID_AAC, + CODEC_ID_AC3, + CODEC_ID_DTS, + CODEC_ID_VORBIS, + CODEC_ID_DVAUDIO, + CODEC_ID_WMAV1, + CODEC_ID_WMAV2, + CODEC_ID_MACE3, + CODEC_ID_MACE6, + CODEC_ID_VMDAUDIO, + CODEC_ID_SONIC, + CODEC_ID_SONIC_LS, + CODEC_ID_FLAC, + CODEC_ID_MP3ADU, + CODEC_ID_MP3ON4, + CODEC_ID_SHORTEN, + CODEC_ID_ALAC, + CODEC_ID_WESTWOOD_SND1, + CODEC_ID_GSM, ///< as in Berlin toast format + CODEC_ID_QDM2, + CODEC_ID_COOK, + CODEC_ID_TRUESPEECH, + CODEC_ID_TTA, + CODEC_ID_SMACKAUDIO, + CODEC_ID_QCELP, + CODEC_ID_WAVPACK, + CODEC_ID_DSICINAUDIO, + CODEC_ID_IMC, + CODEC_ID_MUSEPACK7, + CODEC_ID_MLP, + CODEC_ID_GSM_MS, /* as found in WAV */ + CODEC_ID_ATRAC3, + CODEC_ID_VOXWARE, + CODEC_ID_APE, + CODEC_ID_NELLYMOSER, + CODEC_ID_MUSEPACK8, + CODEC_ID_SPEEX, + CODEC_ID_WMAVOICE, + CODEC_ID_WMAPRO, + CODEC_ID_WMALOSSLESS, + CODEC_ID_ATRAC3P, + CODEC_ID_EAC3, + CODEC_ID_SIPR, + CODEC_ID_MP1, + CODEC_ID_TWINVQ, + CODEC_ID_TRUEHD, + CODEC_ID_MP4ALS, + CODEC_ID_ATRAC1, + CODEC_ID_BINKAUDIO_RDFT, + CODEC_ID_BINKAUDIO_DCT, + CODEC_ID_AAC_LATM, + CODEC_ID_QDMC, + + /* subtitle codecs */ + CODEC_ID_DVD_SUBTITLE= 0x17000, + CODEC_ID_DVB_SUBTITLE, + CODEC_ID_TEXT, ///< raw UTF-8 text + CODEC_ID_XSUB, + CODEC_ID_SSA, + CODEC_ID_MOV_TEXT, + CODEC_ID_HDMV_PGS_SUBTITLE, + CODEC_ID_DVB_TELETEXT, + CODEC_ID_SRT, + + /* other specific kind of codecs (generally used for attachments) */ + CODEC_ID_TTF= 0x18000, + + CODEC_ID_PROBE= 0x19000, ///< codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it + + CODEC_ID_MPEG2TS= 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS + * stream (only used by libavformat) */ + CODEC_ID_FFMETADATA=0x21000, ///< Dummy codec for streams containing only metadata information. +}; + +#if FF_API_OLD_SAMPLE_FMT +#define SampleFormat AVSampleFormat + +#define SAMPLE_FMT_NONE AV_SAMPLE_FMT_NONE +#define SAMPLE_FMT_U8 AV_SAMPLE_FMT_U8 +#define SAMPLE_FMT_S16 AV_SAMPLE_FMT_S16 +#define SAMPLE_FMT_S32 AV_SAMPLE_FMT_S32 +#define SAMPLE_FMT_FLT AV_SAMPLE_FMT_FLT +#define SAMPLE_FMT_DBL AV_SAMPLE_FMT_DBL +#define SAMPLE_FMT_NB AV_SAMPLE_FMT_NB +#endif + +#if FF_API_OLD_AUDIOCONVERT +#include "libavutil/audioconvert.h" + +/* Audio channel masks */ +#define CH_FRONT_LEFT AV_CH_FRONT_LEFT +#define CH_FRONT_RIGHT AV_CH_FRONT_RIGHT +#define CH_FRONT_CENTER AV_CH_FRONT_CENTER +#define CH_LOW_FREQUENCY AV_CH_LOW_FREQUENCY +#define CH_BACK_LEFT AV_CH_BACK_LEFT +#define CH_BACK_RIGHT AV_CH_BACK_RIGHT +#define CH_FRONT_LEFT_OF_CENTER AV_CH_FRONT_LEFT_OF_CENTER +#define CH_FRONT_RIGHT_OF_CENTER AV_CH_FRONT_RIGHT_OF_CENTER +#define CH_BACK_CENTER AV_CH_BACK_CENTER +#define CH_SIDE_LEFT AV_CH_SIDE_LEFT +#define CH_SIDE_RIGHT AV_CH_SIDE_RIGHT +#define CH_TOP_CENTER AV_CH_TOP_CENTER +#define CH_TOP_FRONT_LEFT AV_CH_TOP_FRONT_LEFT +#define CH_TOP_FRONT_CENTER AV_CH_TOP_FRONT_CENTER +#define CH_TOP_FRONT_RIGHT AV_CH_TOP_FRONT_RIGHT +#define CH_TOP_BACK_LEFT AV_CH_TOP_BACK_LEFT +#define CH_TOP_BACK_CENTER AV_CH_TOP_BACK_CENTER +#define CH_TOP_BACK_RIGHT AV_CH_TOP_BACK_RIGHT +#define CH_STEREO_LEFT AV_CH_STEREO_LEFT +#define CH_STEREO_RIGHT AV_CH_STEREO_RIGHT + +/** Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. */ +#define CH_LAYOUT_NATIVE AV_CH_LAYOUT_NATIVE + +/* Audio channel convenience macros */ +#define CH_LAYOUT_MONO AV_CH_LAYOUT_MONO +#define CH_LAYOUT_STEREO AV_CH_LAYOUT_STEREO +#define CH_LAYOUT_2_1 AV_CH_LAYOUT_2_1 +#define CH_LAYOUT_SURROUND AV_CH_LAYOUT_SURROUND +#define CH_LAYOUT_4POINT0 AV_CH_LAYOUT_4POINT0 +#define CH_LAYOUT_2_2 AV_CH_LAYOUT_2_2 +#define CH_LAYOUT_QUAD AV_CH_LAYOUT_QUAD +#define CH_LAYOUT_5POINT0 AV_CH_LAYOUT_5POINT0 +#define CH_LAYOUT_5POINT1 AV_CH_LAYOUT_5POINT1 +#define CH_LAYOUT_5POINT0_BACK AV_CH_LAYOUT_5POINT0_BACK +#define CH_LAYOUT_5POINT1_BACK AV_CH_LAYOUT_5POINT1_BACK +#define CH_LAYOUT_7POINT0 AV_CH_LAYOUT_7POINT0 +#define CH_LAYOUT_7POINT1 AV_CH_LAYOUT_7POINT1 +#define CH_LAYOUT_7POINT1_WIDE AV_CH_LAYOUT_7POINT1_WIDE +#define CH_LAYOUT_STEREO_DOWNMIX AV_CH_LAYOUT_STEREO_DOWNMIX +#endif + +/* in bytes */ +#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio + +/** + * Required number of additionally allocated bytes at the end of the input bitstream for decoding. + * This is mainly needed because some optimized bitstream readers read + * 32 or 64 bit at once and could read over the end.
+ * Note: If the first 23 bits of the additional bytes are not 0, then damaged + * MPEG bitstreams could cause overread and segfault. + */ +#define FF_INPUT_BUFFER_PADDING_SIZE 8 + +/** + * minimum encoding buffer size + * Used to avoid some checks during header writing. + */ +#define FF_MIN_BUFFER_SIZE 16384 + + +/** + * motion estimation type. + */ +enum Motion_Est_ID { + ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed + ME_FULL, + ME_LOG, + ME_PHODS, + ME_EPZS, ///< enhanced predictive zonal search + ME_X1, ///< reserved for experiments + ME_HEX, ///< hexagon based search + ME_UMH, ///< uneven multi-hexagon search + ME_ITER, ///< iterative search + ME_TESA, ///< transformed exhaustive search algorithm +}; + +enum AVDiscard{ + /* We leave some space between them for extensions (drop some + * keyframes for intra-only or drop just some bidir frames). */ + AVDISCARD_NONE =-16, ///< discard nothing + AVDISCARD_DEFAULT= 0, ///< discard useless packets like 0 size packets in avi + AVDISCARD_NONREF = 8, ///< discard all non reference + AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames + AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes + AVDISCARD_ALL = 48, ///< discard all +}; + +enum AVColorPrimaries{ + AVCOL_PRI_BT709 =1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B + AVCOL_PRI_UNSPECIFIED=2, + AVCOL_PRI_BT470M =4, + AVCOL_PRI_BT470BG =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM + AVCOL_PRI_SMPTE170M =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC + AVCOL_PRI_SMPTE240M =7, ///< functionally identical to above + AVCOL_PRI_FILM =8, + AVCOL_PRI_NB , ///< Not part of ABI +}; + +enum AVColorTransferCharacteristic{ + AVCOL_TRC_BT709 =1, ///< also ITU-R BT1361 + AVCOL_TRC_UNSPECIFIED=2, + AVCOL_TRC_GAMMA22 =4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM + AVCOL_TRC_GAMMA28 =5, ///< also ITU-R BT470BG + AVCOL_TRC_NB , ///< Not part of ABI +}; + +enum AVColorSpace{ + AVCOL_SPC_RGB =0, + AVCOL_SPC_BT709 =1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B + AVCOL_SPC_UNSPECIFIED=2, + AVCOL_SPC_FCC =4, + AVCOL_SPC_BT470BG =5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 + AVCOL_SPC_SMPTE170M =6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above + AVCOL_SPC_SMPTE240M =7, + AVCOL_SPC_NB , ///< Not part of ABI +}; + +enum AVColorRange{ + AVCOL_RANGE_UNSPECIFIED=0, + AVCOL_RANGE_MPEG =1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges + AVCOL_RANGE_JPEG =2, ///< the normal 2^n-1 "JPEG" YUV ranges + AVCOL_RANGE_NB , ///< Not part of ABI +}; + +/** + * X X 3 4 X X are luma samples, + * 1 2 1-6 are possible chroma positions + * X X 5 6 X 0 is undefined/unknown position + */ +enum AVChromaLocation{ + AVCHROMA_LOC_UNSPECIFIED=0, + AVCHROMA_LOC_LEFT =1, ///< mpeg2/4, h264 default + AVCHROMA_LOC_CENTER =2, ///< mpeg1, jpeg, h263 + AVCHROMA_LOC_TOPLEFT =3, ///< DV + AVCHROMA_LOC_TOP =4, + AVCHROMA_LOC_BOTTOMLEFT =5, + AVCHROMA_LOC_BOTTOM =6, + AVCHROMA_LOC_NB , ///< Not part of ABI +}; + +#if FF_API_FLAC_GLOBAL_OPTS +/** + * LPC analysis type + */ +attribute_deprecated enum AVLPCType { + AV_LPC_TYPE_DEFAULT = -1, ///< use the codec default LPC type + AV_LPC_TYPE_NONE = 0, ///< do not use LPC prediction or use all zero coefficients + AV_LPC_TYPE_FIXED = 1, ///< fixed LPC coefficients + AV_LPC_TYPE_LEVINSON = 2, ///< Levinson-Durbin recursion + AV_LPC_TYPE_CHOLESKY = 3, ///< Cholesky factorization + AV_LPC_TYPE_NB , ///< Not part of ABI +}; +#endif + +enum AVAudioServiceType { + AV_AUDIO_SERVICE_TYPE_MAIN = 0, + AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, + AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, + AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, + AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, + AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, + AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, + AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, + AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, + AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI +}; + +typedef struct RcOverride{ + int start_frame; + int end_frame; + int qscale; // If this is 0 then quality_factor will be used instead. + float quality_factor; +} RcOverride; + +#define FF_MAX_B_FRAMES 16 + +/* encoding support + These flags can be passed in AVCodecContext.flags before initialization. + Note: Not everything is supported yet. +*/ + +#define CODEC_FLAG_QSCALE 0x0002 ///< Use fixed qscale. +#define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed / advanced prediction for H.263. +#define CODEC_FLAG_QPEL 0x0010 ///< Use qpel MC. +#define CODEC_FLAG_GMC 0x0020 ///< Use GMC. +#define CODEC_FLAG_MV0 0x0040 ///< Always try a MB with MV=<0,0>. +#define CODEC_FLAG_PART 0x0080 ///< Use data partitioning. +/** + * The parent program guarantees that the input for B-frames containing + * streams is not written to for at least s->max_b_frames+1 frames, if + * this is not set the input will be copied. + */ +#define CODEC_FLAG_INPUT_PRESERVED 0x0100 +#define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode. +#define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode. +#define CODEC_FLAG_EXTERN_HUFF 0x1000 ///< Use external Huffman table (for MJPEG). +#define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale. +#define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges. +#define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding. +#define CODEC_FLAG_TRUNCATED 0x00010000 /** Input bitstream might be truncated at a random + location instead of only at frame boundaries. */ +#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< Normalize adaptive quantization. +#define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< Use interlaced DCT. +#define CODEC_FLAG_LOW_DELAY 0x00080000 ///< Force low delay. +#define CODEC_FLAG_ALT_SCAN 0x00100000 ///< Use alternate scan. +#define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< Place global headers in extradata instead of every keyframe. +#define CODEC_FLAG_BITEXACT 0x00800000 ///< Use only bitexact stuff (except (I)DCT). +/* Fx : Flag for h263+ extra options */ +#define CODEC_FLAG_AC_PRED 0x01000000 ///< H.263 advanced intra coding / MPEG-4 AC prediction +#define CODEC_FLAG_H263P_UMV 0x02000000 ///< unlimited motion vector +#define CODEC_FLAG_CBP_RD 0x04000000 ///< Use rate distortion optimization for cbp. +#define CODEC_FLAG_QP_RD 0x08000000 ///< Use rate distortion optimization for qp selectioon. +#define CODEC_FLAG_H263P_AIV 0x00000008 ///< H.263 alternative inter VLC +#define CODEC_FLAG_OBMC 0x00000001 ///< OBMC +#define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter +#define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 +#define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation +#define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000 ///< Will reserve space for SVCD scan offset user data. +#define CODEC_FLAG_CLOSED_GOP 0x80000000 +#define CODEC_FLAG2_FAST 0x00000001 ///< Allow non spec compliant speedup tricks. +#define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size. +#define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding. +#define CODEC_FLAG2_LOCAL_HEADER 0x00000008 ///< Place global headers at every keyframe instead of in extradata. +#define CODEC_FLAG2_BPYRAMID 0x00000010 ///< H.264 allow B-frames to be used as references. +#define CODEC_FLAG2_WPRED 0x00000020 ///< H.264 weighted biprediction for B-frames +#define CODEC_FLAG2_MIXED_REFS 0x00000040 ///< H.264 one reference per partition, as opposed to one reference per macroblock +#define CODEC_FLAG2_8X8DCT 0x00000080 ///< H.264 high profile 8x8 transform +#define CODEC_FLAG2_FASTPSKIP 0x00000100 ///< H.264 fast pskip +#define CODEC_FLAG2_AUD 0x00000200 ///< H.264 access unit delimiters +#define CODEC_FLAG2_BRDO 0x00000400 ///< B-frame rate-distortion optimization +#define CODEC_FLAG2_INTRA_VLC 0x00000800 ///< Use MPEG-2 intra VLC table. +#define CODEC_FLAG2_MEMC_ONLY 0x00001000 ///< Only do ME/MC (I frames -> ref, P frame -> ME+MC). +#define CODEC_FLAG2_DROP_FRAME_TIMECODE 0x00002000 ///< timecode is in drop frame format. +#define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping +#define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries. +#define CODEC_FLAG2_NON_LINEAR_QUANT 0x00010000 ///< Use MPEG-2 nonlinear quantizer. +#define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir when encoding if possible +#define CODEC_FLAG2_MBTREE 0x00040000 ///< Use macroblock tree ratecontrol (x264 only) +#define CODEC_FLAG2_PSY 0x00080000 ///< Use psycho visual optimizations. +#define CODEC_FLAG2_SSIM 0x00100000 ///< Compute SSIM during encoding, error[] values are undefined. +#define CODEC_FLAG2_INTRA_REFRESH 0x00200000 ///< Use periodic insertion of intra blocks instead of keyframes. + +/* Unsupported options : + * Syntax Arithmetic coding (SAC) + * Reference Picture Selection + * Independent Segment Decoding */ +/* /Fx */ +/* codec capabilities */ + +#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback. +/** + * Codec uses get_buffer() for allocating buffers and supports custom allocators. + * If not set, it might not use get_buffer() at all or use operations that + * assume the buffer was allocated by avcodec_default_get_buffer. + */ +#define CODEC_CAP_DR1 0x0002 +/* If 'parse_only' field is true, then avcodec_parse_frame() can be used. */ +#define CODEC_CAP_PARSE_ONLY 0x0004 +#define CODEC_CAP_TRUNCATED 0x0008 +/* Codec can export data for HW decoding (XvMC). */ +#define CODEC_CAP_HWACCEL 0x0010 +/** + * Codec has a nonzero delay and needs to be fed with NULL at the end to get the delayed data. + * If this is not set, the codec is guaranteed to never be fed with NULL data. + */ +#define CODEC_CAP_DELAY 0x0020 +/** + * Codec can be fed a final frame with a smaller size. + * This can be used to prevent truncation of the last audio samples. + */ +#define CODEC_CAP_SMALL_LAST_FRAME 0x0040 +/** + * Codec can export data for HW decoding (VDPAU). + */ +#define CODEC_CAP_HWACCEL_VDPAU 0x0080 +/** + * Codec can output multiple frames per AVPacket + * Normally demuxers return one frame at a time, demuxers which do not do + * are connected to a parser to split what they return into proper frames. + * This flag is reserved to the very rare category of codecs which have a + * bitstream that cannot be split into frames without timeconsuming + * operations like full decoding. Demuxers carring such bitstreams thus + * may return multiple frames in a packet. This has many disadvantages like + * prohibiting stream copy in many cases thus it should only be considered + * as a last resort. + */ +#define CODEC_CAP_SUBFRAMES 0x0100 +/** + * Codec is experimental and is thus avoided in favor of non experimental + * encoders + */ +#define CODEC_CAP_EXPERIMENTAL 0x0200 +/** + * Codec should fill in channel configuration and samplerate instead of container + */ +#define CODEC_CAP_CHANNEL_CONF 0x0400 +/** + * Codec is able to deal with negative linesizes + */ +#define CODEC_CAP_NEG_LINESIZES 0x0800 +/** + * Codec supports frame-level multithreading. + */ +#define CODEC_CAP_FRAME_THREADS 0x1000 +/** + * Codec supports slice-based (or partition-based) multithreading. + */ +#define CODEC_CAP_SLICE_THREADS 0x2000 + +//The following defines may change, don't expect compatibility if you use them. +#define MB_TYPE_INTRA4x4 0x0001 +#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific +#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific +#define MB_TYPE_16x16 0x0008 +#define MB_TYPE_16x8 0x0010 +#define MB_TYPE_8x16 0x0020 +#define MB_TYPE_8x8 0x0040 +#define MB_TYPE_INTERLACED 0x0080 +#define MB_TYPE_DIRECT2 0x0100 //FIXME +#define MB_TYPE_ACPRED 0x0200 +#define MB_TYPE_GMC 0x0400 +#define MB_TYPE_SKIP 0x0800 +#define MB_TYPE_P0L0 0x1000 +#define MB_TYPE_P1L0 0x2000 +#define MB_TYPE_P0L1 0x4000 +#define MB_TYPE_P1L1 0x8000 +#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) +#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) +#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) +#define MB_TYPE_QUANT 0x00010000 +#define MB_TYPE_CBP 0x00020000 +//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...) + +/** + * Pan Scan area. + * This specifies the area which should be displayed. + * Note there may be multiple such areas for one frame. + */ +typedef struct AVPanScan{ + /** + * id + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int id; + + /** + * width and height in 1/16 pel + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int width; + int height; + + /** + * position of the top left corner in 1/16 pel for up to 3 fields/frames + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int16_t position[3][2]; +}AVPanScan; + +#define FF_COMMON_FRAME \ + /**\ + * pointer to the picture planes.\ + * This might be different from the first allocated byte\ + * - encoding: \ + * - decoding: \ + */\ + uint8_t *data[4];\ + int linesize[4];\ + /**\ + * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer.\ + * This isn't used by libavcodec unless the default get/release_buffer() is used.\ + * - encoding: \ + * - decoding: \ + */\ + uint8_t *base[4];\ + /**\ + * 1 -> keyframe, 0-> not\ + * - encoding: Set by libavcodec.\ + * - decoding: Set by libavcodec.\ + */\ + int key_frame;\ +\ + /**\ + * Picture type of the frame, see ?_TYPE below.\ + * - encoding: Set by libavcodec. for coded_picture (and set by user for input).\ + * - decoding: Set by libavcodec.\ + */\ + enum AVPictureType pict_type;\ +\ + /**\ + * presentation timestamp in time_base units (time when frame should be shown to user)\ + * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed.\ + * - encoding: MUST be set by user.\ + * - decoding: Set by libavcodec.\ + */\ + int64_t pts;\ +\ + /**\ + * picture number in bitstream order\ + * - encoding: set by\ + * - decoding: Set by libavcodec.\ + */\ + int coded_picture_number;\ + /**\ + * picture number in display order\ + * - encoding: set by\ + * - decoding: Set by libavcodec.\ + */\ + int display_picture_number;\ +\ + /**\ + * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) \ + * - encoding: Set by libavcodec. for coded_picture (and set by user for input).\ + * - decoding: Set by libavcodec.\ + */\ + int quality; \ +\ + /**\ + * buffer age (1->was last buffer and dint change, 2->..., ...).\ + * Set to INT_MAX if the buffer has not been used yet.\ + * - encoding: unused\ + * - decoding: MUST be set by get_buffer().\ + */\ + int age;\ +\ + /**\ + * is this picture used as reference\ + * The values for this are the same as the MpegEncContext.picture_structure\ + * variable, that is 1->top field, 2->bottom field, 3->frame/both fields.\ + * Set to 4 for delayed, non-reference frames.\ + * - encoding: unused\ + * - decoding: Set by libavcodec. (before get_buffer() call)).\ + */\ + int reference;\ +\ + /**\ + * QP table\ + * - encoding: unused\ + * - decoding: Set by libavcodec.\ + */\ + int8_t *qscale_table;\ + /**\ + * QP store stride\ + * - encoding: unused\ + * - decoding: Set by libavcodec.\ + */\ + int qstride;\ +\ + /**\ + * mbskip_table[mb]>=1 if MB didn't change\ + * stride= mb_width = (width+15)>>4\ + * - encoding: unused\ + * - decoding: Set by libavcodec.\ + */\ + uint8_t *mbskip_table;\ +\ + /**\ + * motion vector table\ + * @code\ + * example:\ + * int mv_sample_log2= 4 - motion_subsample_log2;\ + * int mb_width= (width+15)>>4;\ + * int mv_stride= (mb_width << mv_sample_log2) + 1;\ + * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];\ + * @endcode\ + * - encoding: Set by user.\ + * - decoding: Set by libavcodec.\ + */\ + int16_t (*motion_val[2])[2];\ +\ + /**\ + * macroblock type table\ + * mb_type_base + mb_width + 2\ + * - encoding: Set by user.\ + * - decoding: Set by libavcodec.\ + */\ + uint32_t *mb_type;\ +\ + /**\ + * log2 of the size of the block which a single vector in motion_val represents: \ + * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)\ + * - encoding: unused\ + * - decoding: Set by libavcodec.\ + */\ + uint8_t motion_subsample_log2;\ +\ + /**\ + * for some private data of the user\ + * - encoding: unused\ + * - decoding: Set by user.\ + */\ + void *opaque;\ +\ + /**\ + * error\ + * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR.\ + * - decoding: unused\ + */\ + uint64_t error[4];\ +\ + /**\ + * type of the buffer (to keep track of who has to deallocate data[*])\ + * - encoding: Set by the one who allocates it.\ + * - decoding: Set by the one who allocates it.\ + * Note: User allocated (direct rendering) & internal buffers cannot coexist currently.\ + */\ + int type;\ + \ + /**\ + * When decoding, this signals how much the picture must be delayed.\ + * extra_delay = repeat_pict / (2*fps)\ + * - encoding: unused\ + * - decoding: Set by libavcodec.\ + */\ + int repeat_pict;\ + \ + /**\ + * \ + */\ + int qscale_type;\ + \ + /**\ + * The content of the picture is interlaced.\ + * - encoding: Set by user.\ + * - decoding: Set by libavcodec. (default 0)\ + */\ + int interlaced_frame;\ + \ + /**\ + * If the content is interlaced, is top field displayed first.\ + * - encoding: Set by user.\ + * - decoding: Set by libavcodec.\ + */\ + int top_field_first;\ + \ + /**\ + * Pan scan.\ + * - encoding: Set by user.\ + * - decoding: Set by libavcodec.\ + */\ + AVPanScan *pan_scan;\ + \ + /**\ + * Tell user application that palette has changed from previous frame.\ + * - encoding: ??? (no palette-enabled encoder yet)\ + * - decoding: Set by libavcodec. (default 0).\ + */\ + int palette_has_changed;\ + \ + /**\ + * codec suggestion on buffer type if != 0\ + * - encoding: unused\ + * - decoding: Set by libavcodec. (before get_buffer() call)).\ + */\ + int buffer_hints;\ +\ + /**\ + * DCT coefficients\ + * - encoding: unused\ + * - decoding: Set by libavcodec.\ + */\ + short *dct_coeff;\ +\ + /**\ + * motion reference frame index\ + * the order in which these are stored can depend on the codec.\ + * - encoding: Set by user.\ + * - decoding: Set by libavcodec.\ + */\ + int8_t *ref_index[2];\ +\ + /**\ + * reordered opaque 64bit (generally an integer or a double precision float\ + * PTS but can be anything). \ + * The user sets AVCodecContext.reordered_opaque to represent the input at\ + * that time,\ + * the decoder reorders values as needed and sets AVFrame.reordered_opaque\ + * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque \ + * @deprecated in favor of pkt_pts\ + * - encoding: unused\ + * - decoding: Read by user.\ + */\ + int64_t reordered_opaque;\ +\ + /**\ + * hardware accelerator private data (Libav-allocated)\ + * - encoding: unused\ + * - decoding: Set by libavcodec\ + */\ + void *hwaccel_picture_private;\ +\ + /**\ + * reordered pts from the last AVPacket that has been input into the decoder\ + * - encoding: unused\ + * - decoding: Read by user.\ + */\ + int64_t pkt_pts;\ +\ + /**\ + * dts from the last AVPacket that has been input into the decoder\ + * - encoding: unused\ + * - decoding: Read by user.\ + */\ + int64_t pkt_dts;\ +\ + /**\ + * the AVCodecContext which ff_thread_get_buffer() was last called on\ + * - encoding: Set by libavcodec.\ + * - decoding: Set by libavcodec.\ + */\ + struct AVCodecContext *owner;\ +\ + /**\ + * used by multithreading to store frame-specific info\ + * - encoding: Set by libavcodec.\ + * - decoding: Set by libavcodec.\ + */\ + void *thread_opaque;\ + +#define FF_QSCALE_TYPE_MPEG1 0 +#define FF_QSCALE_TYPE_MPEG2 1 +#define FF_QSCALE_TYPE_H264 2 +#define FF_QSCALE_TYPE_VP56 3 + +#define FF_BUFFER_TYPE_INTERNAL 1 +#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user) +#define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared. +#define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything. + +#if FF_API_OLD_FF_PICT_TYPES +/* DEPRECATED, directly use the AV_PICTURE_TYPE_* enum values */ +#define FF_I_TYPE AV_PICTURE_TYPE_I ///< Intra +#define FF_P_TYPE AV_PICTURE_TYPE_P ///< Predicted +#define FF_B_TYPE AV_PICTURE_TYPE_B ///< Bi-dir predicted +#define FF_S_TYPE AV_PICTURE_TYPE_S ///< S(GMC)-VOP MPEG4 +#define FF_SI_TYPE AV_PICTURE_TYPE_SI ///< Switching Intra +#define FF_SP_TYPE AV_PICTURE_TYPE_SP ///< Switching Predicted +#define FF_BI_TYPE AV_PICTURE_TYPE_BI +#endif + +#define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore). +#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. +#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content. +#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update). + +enum AVPacketSideDataType { + AV_PKT_DATA_PALETTE, +}; + +typedef struct AVPacket { + /** + * Presentation timestamp in AVStream->time_base units; the time at which + * the decompressed packet will be presented to the user. + * Can be AV_NOPTS_VALUE if it is not stored in the file. + * pts MUST be larger or equal to dts as presentation cannot happen before + * decompression, unless one wants to view hex dumps. Some formats misuse + * the terms dts and pts/cts to mean something different. Such timestamps + * must be converted to true pts/dts before they are stored in AVPacket. + */ + int64_t pts; + /** + * Decompression timestamp in AVStream->time_base units; the time at which + * the packet is decompressed. + * Can be AV_NOPTS_VALUE if it is not stored in the file. + */ + int64_t dts; + uint8_t *data; + int size; + int stream_index; + int flags; + /** + * Additional packet data that can be provided by the container. + * Packet can contain several types of side information. + */ + struct { + uint8_t *data; + int size; + enum AVPacketSideDataType type; + } *side_data; + int side_data_elems; + + /** + * Duration of this packet in AVStream->time_base units, 0 if unknown. + * Equals next_pts - this_pts in presentation order. + */ + int duration; + void (*destruct)(struct AVPacket *); + void *priv; + int64_t pos; ///< byte position in stream, -1 if unknown + + /** + * Time difference in AVStream->time_base units from the pts of this + * packet to the point at which the output from the decoder has converged + * independent from the availability of previous frames. That is, the + * frames are virtually identical no matter if decoding started from + * the very first frame or from this keyframe. + * Is AV_NOPTS_VALUE if unknown. + * This field is not the display duration of the current packet. + * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + * set. + * + * The purpose of this field is to allow seeking in streams that have no + * keyframes in the conventional sense. It corresponds to the + * recovery point SEI in H.264 and match_time_delta in NUT. It is also + * essential for some types of subtitle streams to ensure that all + * subtitles are correctly displayed after seeking. + */ + int64_t convergence_duration; +} AVPacket; +#define AV_PKT_FLAG_KEY 0x0001 + +/** + * Audio Video Frame. + * New fields can be added to the end of FF_COMMON_FRAME with minor version + * bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. No fields should be added into AVFrame before or after + * FF_COMMON_FRAME! + * sizeof(AVFrame) must not be used outside libav*. + */ +typedef struct AVFrame { + FF_COMMON_FRAME +} AVFrame; + +/** + * main external API structure. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVCodecContext) must not be used outside libav*. + */ +typedef struct AVCodecContext { + /** + * information on struct for av_log + * - set by avcodec_alloc_context + */ + const AVClass *av_class; + /** + * the average bitrate + * - encoding: Set by user; unused for constant quantizer encoding. + * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. + */ + int bit_rate; + + /** + * number of bits the bitstream is allowed to diverge from the reference. + * the reference can be CBR (for CBR pass1) or VBR (for pass2) + * - encoding: Set by user; unused for constant quantizer encoding. + * - decoding: unused + */ + int bit_rate_tolerance; + + /** + * CODEC_FLAG_*. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int flags; + + /** + * Some codecs need additional format info. It is stored here. + * If any muxer uses this then ALL demuxers/parsers AND encoders for the + * specific codec MUST set it correctly otherwise stream copy breaks. + * In general use of this field by muxers is not recommanded. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. (FIXME: Is this OK?) + */ + int sub_id; + + /** + * Motion estimation algorithm used for video coding. + * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), + * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] + * - encoding: MUST be set by user. + * - decoding: unused + */ + int me_method; + + /** + * some codecs need / can use extradata like Huffman tables. + * mjpeg: Huffman tables + * rv10: additional flags + * mpeg4: global headers (they can be in the bitstream or here) + * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger + * than extradata_size to avoid prolems if it is read with the bitstream reader. + * The bytewise contents of extradata must not depend on the architecture or CPU endianness. + * - encoding: Set/allocated/freed by libavcodec. + * - decoding: Set/allocated/freed by user. + */ + uint8_t *extradata; + int extradata_size; + + /** + * This is the fundamental unit of time (in seconds) in terms + * of which frame timestamps are represented. For fixed-fps content, + * timebase should be 1/framerate and timestamp increments should be + * identically 1. + * - encoding: MUST be set by user. + * - decoding: Set by libavcodec. + */ + AVRational time_base; + + /* video only */ + /** + * picture width / height. + * - encoding: MUST be set by user. + * - decoding: Set by libavcodec. + * Note: For compatibility it is possible to set this instead of + * coded_width/height before decoding. + */ + int width, height; + +#define FF_ASPECT_EXTENDED 15 + + /** + * the number of pictures in a group of pictures, or 0 for intra_only + * - encoding: Set by user. + * - decoding: unused + */ + int gop_size; + + /** + * Pixel format, see PIX_FMT_xxx. + * May be set by the demuxer if known from headers. + * May be overriden by the decoder if it knows better. + * - encoding: Set by user. + * - decoding: Set by user if known, overridden by libavcodec if known + */ + enum PixelFormat pix_fmt; + + /** + * If non NULL, 'draw_horiz_band' is called by the libavcodec + * decoder to draw a horizontal band. It improves cache usage. Not + * all codecs can do that. You must check the codec capabilities + * beforehand. + * When multithreading is used, it may be called from multiple threads + * at the same time; threads might draw different parts of the same AVFrame, + * or multiple AVFrames, and there is no guarantee that slices will be drawn + * in order. + * The function is also used by hardware acceleration APIs. + * It is called at least once during frame decoding to pass + * the data needed for hardware render. + * In that mode instead of pixel data, AVFrame points to + * a structure specific to the acceleration API. The application + * reads the structure and can change some fields to indicate progress + * or mark state. + * - encoding: unused + * - decoding: Set by user. + * @param height the height of the slice + * @param y the y position of the slice + * @param type 1->top field, 2->bottom field, 3->frame + * @param offset offset into the AVFrame.data from which the slice should be read + */ + void (*draw_horiz_band)(struct AVCodecContext *s, + const AVFrame *src, int offset[4], + int y, int type, int height); + + /* audio only */ + int sample_rate; ///< samples per second + int channels; ///< number of audio channels + + /** + * audio sample format + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + enum AVSampleFormat sample_fmt; ///< sample format + + /* The following data should not be initialized. */ + /** + * Samples per packet, initialized when calling 'init'. + */ + int frame_size; + int frame_number; ///< audio or video frame number + + /** + * Number of frames the decoded output will be delayed relative to + * the encoded input. + * - encoding: Set by libavcodec. + * - decoding: unused + */ + int delay; + + /* - encoding parameters */ + float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) + float qblur; ///< amount of qscale smoothing over time (0.0-1.0) + + /** + * minimum quantizer + * - encoding: Set by user. + * - decoding: unused + */ + int qmin; + + /** + * maximum quantizer + * - encoding: Set by user. + * - decoding: unused + */ + int qmax; + + /** + * maximum quantizer difference between frames + * - encoding: Set by user. + * - decoding: unused + */ + int max_qdiff; + + /** + * maximum number of B-frames between non-B-frames + * Note: The output will be delayed by max_b_frames+1 relative to the input. + * - encoding: Set by user. + * - decoding: unused + */ + int max_b_frames; + + /** + * qscale factor between IP and B-frames + * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). + * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). + * - encoding: Set by user. + * - decoding: unused + */ + float b_quant_factor; + + /** obsolete FIXME remove */ + int rc_strategy; +#define FF_RC_STRATEGY_XVID 1 + + int b_frame_strategy; + + struct AVCodec *codec; + + void *priv_data; + + int rtp_payload_size; /* The size of the RTP payload: the coder will */ + /* do its best to deliver a chunk with size */ + /* below rtp_payload_size, the chunk will start */ + /* with a start code on some codecs like H.263. */ + /* This doesn't take account of any particular */ + /* headers inside the transmitted RTP payload. */ + + + /* The RTP callback: This function is called */ + /* every time the encoder has a packet to send. */ + /* It depends on the encoder if the data starts */ + /* with a Start Code (it should). H.263 does. */ + /* mb_nb contains the number of macroblocks */ + /* encoded in the RTP payload. */ + void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); + + /* statistics, used for 2-pass encoding */ + int mv_bits; + int header_bits; + int i_tex_bits; + int p_tex_bits; + int i_count; + int p_count; + int skip_count; + int misc_bits; + + /** + * number of bits used for the previously encoded frame + * - encoding: Set by libavcodec. + * - decoding: unused + */ + int frame_bits; + + /** + * Private data of the user, can be used to carry app specific stuff. + * - encoding: Set by user. + * - decoding: Set by user. + */ + void *opaque; + + char codec_name[32]; + enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ + enum CodecID codec_id; /* see CODEC_ID_xxx */ + + /** + * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). + * This is used to work around some encoder bugs. + * A demuxer should set this to what is stored in the field used to identify the codec. + * If there are multiple such fields in a container then the demuxer should choose the one + * which maximizes the information about the used codec. + * If the codec tag field in a container is larger then 32 bits then the demuxer should + * remap the longer ID to 32 bits with a table or other structure. Alternatively a new + * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated + * first. + * - encoding: Set by user, if not then the default based on codec_id will be used. + * - decoding: Set by user, will be converted to uppercase by libavcodec during init. + */ + unsigned int codec_tag; + + /** + * Work around bugs in encoders which sometimes cannot be detected automatically. + * - encoding: Set by user + * - decoding: Set by user + */ + int workaround_bugs; +#define FF_BUG_AUTODETECT 1 ///< autodetection +#define FF_BUG_OLD_MSMPEG4 2 +#define FF_BUG_XVID_ILACE 4 +#define FF_BUG_UMP4 8 +#define FF_BUG_NO_PADDING 16 +#define FF_BUG_AMV 32 +#define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. +#define FF_BUG_QPEL_CHROMA 64 +#define FF_BUG_STD_QPEL 128 +#define FF_BUG_QPEL_CHROMA2 256 +#define FF_BUG_DIRECT_BLOCKSIZE 512 +#define FF_BUG_EDGE 1024 +#define FF_BUG_HPEL_CHROMA 2048 +#define FF_BUG_DC_CLIP 4096 +#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. +#define FF_BUG_TRUNCATED 16384 +//#define FF_BUG_FAKE_SCALABILITY 16 //Autodetection should work 100%. + + /** + * luma single coefficient elimination threshold + * - encoding: Set by user. + * - decoding: unused + */ + int luma_elim_threshold; + + /** + * chroma single coeff elimination threshold + * - encoding: Set by user. + * - decoding: unused + */ + int chroma_elim_threshold; + + /** + * strictly follow the standard (MPEG4, ...). + * - encoding: Set by user. + * - decoding: Set by user. + * Setting this to STRICT or higher means the encoder and decoder will + * generally do stupid things, whereas setting it to unofficial or lower + * will mean the encoder might produce output that is not supported by all + * spec-compliant decoders. Decoders don't differentiate between normal, + * unofficial and experimental (that is, they always try to decode things + * when they can) unless they are explicitly asked to behave stupidly + * (=strictly conform to the specs) + */ + int strict_std_compliance; +#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. +#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. +#define FF_COMPLIANCE_NORMAL 0 +#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions +#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. + + /** + * qscale offset between IP and B-frames + * - encoding: Set by user. + * - decoding: unused + */ + float b_quant_offset; + + /** + * Error recognization; higher values will detect more errors but may + * misdetect some more or less valid parts as errors. + * - encoding: unused + * - decoding: Set by user. + */ + int error_recognition; +#define FF_ER_CAREFUL 1 +#define FF_ER_COMPLIANT 2 +#define FF_ER_AGGRESSIVE 3 +#define FF_ER_VERY_AGGRESSIVE 4 + + /** + * Called at the beginning of each frame to get a buffer for it. + * If pic.reference is set then the frame will be read later by libavcodec. + * avcodec_align_dimensions2() should be used to find the required width and + * height, as they normally need to be rounded up to the next multiple of 16. + * if CODEC_CAP_DR1 is not set then get_buffer() must call + * avcodec_default_get_buffer() instead of providing buffers allocated by + * some other means. + * If frame multithreading is used and thread_safe_callbacks is set, + * it may be called from a different thread, but not from more than one at once. + * Does not need to be reentrant. + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); + + /** + * Called to release buffers which were allocated with get_buffer. + * A released buffer can be reused in get_buffer(). + * pic.data[*] must be set to NULL. + * May be called from a different thread if frame multithreading is used, + * but not by more than one thread at once, so does not need to be reentrant. + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); + + /** + * Size of the frame reordering buffer in the decoder. + * For MPEG-2 it is 1 IPB or 0 low delay IP. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int has_b_frames; + + /** + * number of bytes per packet if constant and known or 0 + * Used by some WAV based audio codecs. + */ + int block_align; + + int parse_only; /* - decoding only: If true, only parsing is done + (function avcodec_parse_frame()). The frame + data is returned. Only MPEG codecs support this now. */ + + /** + * 0-> h263 quant 1-> mpeg quant + * - encoding: Set by user. + * - decoding: unused + */ + int mpeg_quant; + + /** + * pass1 encoding statistics output buffer + * - encoding: Set by libavcodec. + * - decoding: unused + */ + char *stats_out; + + /** + * pass2 encoding statistics input buffer + * Concatenated stuff from stats_out of pass1 should be placed here. + * - encoding: Allocated/set/freed by user. + * - decoding: unused + */ + char *stats_in; + + /** + * ratecontrol qmin qmax limiting method + * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. + * - encoding: Set by user. + * - decoding: unused + */ + float rc_qsquish; + + float rc_qmod_amp; + int rc_qmod_freq; + + /** + * ratecontrol override, see RcOverride + * - encoding: Allocated/set/freed by user. + * - decoding: unused + */ + RcOverride *rc_override; + int rc_override_count; + + /** + * rate control equation + * - encoding: Set by user + * - decoding: unused + */ + const char *rc_eq; + + /** + * maximum bitrate + * - encoding: Set by user. + * - decoding: unused + */ + int rc_max_rate; + + /** + * minimum bitrate + * - encoding: Set by user. + * - decoding: unused + */ + int rc_min_rate; + + /** + * decoder bitstream buffer size + * - encoding: Set by user. + * - decoding: unused + */ + int rc_buffer_size; + float rc_buffer_aggressivity; + + /** + * qscale factor between P and I-frames + * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset). + * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). + * - encoding: Set by user. + * - decoding: unused + */ + float i_quant_factor; + + /** + * qscale offset between P and I-frames + * - encoding: Set by user. + * - decoding: unused + */ + float i_quant_offset; + + /** + * initial complexity for pass1 ratecontrol + * - encoding: Set by user. + * - decoding: unused + */ + float rc_initial_cplx; + + /** + * DCT algorithm, see FF_DCT_* below + * - encoding: Set by user. + * - decoding: unused + */ + int dct_algo; +#define FF_DCT_AUTO 0 +#define FF_DCT_FASTINT 1 +#define FF_DCT_INT 2 +#define FF_DCT_MMX 3 +#define FF_DCT_MLIB 4 +#define FF_DCT_ALTIVEC 5 +#define FF_DCT_FAAN 6 + + /** + * luminance masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float lumi_masking; + + /** + * temporary complexity masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float temporal_cplx_masking; + + /** + * spatial complexity masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float spatial_cplx_masking; + + /** + * p block masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float p_masking; + + /** + * darkness masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float dark_masking; + + /** + * IDCT algorithm, see FF_IDCT_* below. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int idct_algo; +#define FF_IDCT_AUTO 0 +#define FF_IDCT_INT 1 +#define FF_IDCT_SIMPLE 2 +#define FF_IDCT_SIMPLEMMX 3 +#define FF_IDCT_LIBMPEG2MMX 4 +#define FF_IDCT_PS2 5 +#define FF_IDCT_MLIB 6 +#define FF_IDCT_ARM 7 +#define FF_IDCT_ALTIVEC 8 +#define FF_IDCT_SH4 9 +#define FF_IDCT_SIMPLEARM 10 +#define FF_IDCT_H264 11 +#define FF_IDCT_VP3 12 +#define FF_IDCT_IPP 13 +#define FF_IDCT_XVIDMMX 14 +#define FF_IDCT_CAVS 15 +#define FF_IDCT_SIMPLEARMV5TE 16 +#define FF_IDCT_SIMPLEARMV6 17 +#define FF_IDCT_SIMPLEVIS 18 +#define FF_IDCT_WMV2 19 +#define FF_IDCT_FAAN 20 +#define FF_IDCT_EA 21 +#define FF_IDCT_SIMPLENEON 22 +#define FF_IDCT_SIMPLEALPHA 23 +#define FF_IDCT_BINK 24 + + /** + * slice count + * - encoding: Set by libavcodec. + * - decoding: Set by user (or 0). + */ + int slice_count; + /** + * slice offsets in the frame in bytes + * - encoding: Set/allocated by libavcodec. + * - decoding: Set/allocated by user (or NULL). + */ + int *slice_offset; + + /** + * error concealment flags + * - encoding: unused + * - decoding: Set by user. + */ + int error_concealment; +#define FF_EC_GUESS_MVS 1 +#define FF_EC_DEBLOCK 2 + + /** + * dsp_mask could be add used to disable unwanted CPU features + * CPU features (i.e. MMX, SSE. ...) + * + * With the FORCE flag you may instead enable given CPU features. + * (Dangerous: Usable in case of misdetection, improper usage however will + * result into program crash.) + */ + unsigned dsp_mask; + + /** + * bits per sample/pixel from the demuxer (needed for huffyuv). + * - encoding: Set by libavcodec. + * - decoding: Set by user. + */ + int bits_per_coded_sample; + + /** + * prediction method (needed for huffyuv) + * - encoding: Set by user. + * - decoding: unused + */ + int prediction_method; +#define FF_PRED_LEFT 0 +#define FF_PRED_PLANE 1 +#define FF_PRED_MEDIAN 2 + + /** + * sample aspect ratio (0 if unknown) + * That is the width of a pixel divided by the height of the pixel. + * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + AVRational sample_aspect_ratio; + + /** + * the picture in the bitstream + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + AVFrame *coded_frame; + + /** + * debug + * - encoding: Set by user. + * - decoding: Set by user. + */ + int debug; +#define FF_DEBUG_PICT_INFO 1 +#define FF_DEBUG_RC 2 +#define FF_DEBUG_BITSTREAM 4 +#define FF_DEBUG_MB_TYPE 8 +#define FF_DEBUG_QP 16 +#define FF_DEBUG_MV 32 +#define FF_DEBUG_DCT_COEFF 0x00000040 +#define FF_DEBUG_SKIP 0x00000080 +#define FF_DEBUG_STARTCODE 0x00000100 +#define FF_DEBUG_PTS 0x00000200 +#define FF_DEBUG_ER 0x00000400 +#define FF_DEBUG_MMCO 0x00000800 +#define FF_DEBUG_BUGS 0x00001000 +#define FF_DEBUG_VIS_QP 0x00002000 +#define FF_DEBUG_VIS_MB_TYPE 0x00004000 +#define FF_DEBUG_BUFFERS 0x00008000 +#define FF_DEBUG_THREADS 0x00010000 + + /** + * debug + * - encoding: Set by user. + * - decoding: Set by user. + */ + int debug_mv; +#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames +#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames +#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames + + /** + * error + * - encoding: Set by libavcodec if flags&CODEC_FLAG_PSNR. + * - decoding: unused + */ + uint64_t error[4]; + + /** + * motion estimation comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_cmp; + /** + * subpixel motion estimation comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_sub_cmp; + /** + * macroblock comparison function (not supported yet) + * - encoding: Set by user. + * - decoding: unused + */ + int mb_cmp; + /** + * interlaced DCT comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int ildct_cmp; +#define FF_CMP_SAD 0 +#define FF_CMP_SSE 1 +#define FF_CMP_SATD 2 +#define FF_CMP_DCT 3 +#define FF_CMP_PSNR 4 +#define FF_CMP_BIT 5 +#define FF_CMP_RD 6 +#define FF_CMP_ZERO 7 +#define FF_CMP_VSAD 8 +#define FF_CMP_VSSE 9 +#define FF_CMP_NSSE 10 +#define FF_CMP_W53 11 +#define FF_CMP_W97 12 +#define FF_CMP_DCTMAX 13 +#define FF_CMP_DCT264 14 +#define FF_CMP_CHROMA 256 + + /** + * ME diamond size & shape + * - encoding: Set by user. + * - decoding: unused + */ + int dia_size; + + /** + * amount of previous MV predictors (2a+1 x 2a+1 square) + * - encoding: Set by user. + * - decoding: unused + */ + int last_predictor_count; + + /** + * prepass for motion estimation + * - encoding: Set by user. + * - decoding: unused + */ + int pre_me; + + /** + * motion estimation prepass comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_pre_cmp; + + /** + * ME prepass diamond size & shape + * - encoding: Set by user. + * - decoding: unused + */ + int pre_dia_size; + + /** + * subpel ME quality + * - encoding: Set by user. + * - decoding: unused + */ + int me_subpel_quality; + + /** + * callback to negotiate the pixelFormat + * @param fmt is the list of formats which are supported by the codec, + * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. + * The first is always the native one. + * @return the chosen format + * - encoding: unused + * - decoding: Set by user, if not set the native format will be chosen. + */ + enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt); + + /** + * DTG active format information (additional aspect ratio + * information only used in DVB MPEG-2 transport streams) + * 0 if not set. + * + * - encoding: unused + * - decoding: Set by decoder. + */ + int dtg_active_format; +#define FF_DTG_AFD_SAME 8 +#define FF_DTG_AFD_4_3 9 +#define FF_DTG_AFD_16_9 10 +#define FF_DTG_AFD_14_9 11 +#define FF_DTG_AFD_4_3_SP_14_9 13 +#define FF_DTG_AFD_16_9_SP_14_9 14 +#define FF_DTG_AFD_SP_4_3 15 + + /** + * maximum motion estimation search range in subpel units + * If 0 then no limit. + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_range; + + /** + * intra quantizer bias + * - encoding: Set by user. + * - decoding: unused + */ + int intra_quant_bias; +#define FF_DEFAULT_QUANT_BIAS 999999 + + /** + * inter quantizer bias + * - encoding: Set by user. + * - decoding: unused + */ + int inter_quant_bias; + + /** + * color table ID + * - encoding: unused + * - decoding: Which clrtable should be used for 8bit RGB images. + * Tables have to be stored somewhere. FIXME + */ + int color_table_id; + + /** + * internal_buffer count + * Don't touch, used by libavcodec default_get_buffer(). + */ + int internal_buffer_count; + + /** + * internal_buffers + * Don't touch, used by libavcodec default_get_buffer(). + */ + void *internal_buffer; + + /** + * Global quality for codecs which cannot change it per frame. + * This should be proportional to MPEG-1/2/4 qscale. + * - encoding: Set by user. + * - decoding: unused + */ + int global_quality; + +#define FF_CODER_TYPE_VLC 0 +#define FF_CODER_TYPE_AC 1 +#define FF_CODER_TYPE_RAW 2 +#define FF_CODER_TYPE_RLE 3 +#define FF_CODER_TYPE_DEFLATE 4 + /** + * coder type + * - encoding: Set by user. + * - decoding: unused + */ + int coder_type; + + /** + * context model + * - encoding: Set by user. + * - decoding: unused + */ + int context_model; +#if 0 + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + uint8_t * (*realloc)(struct AVCodecContext *s, uint8_t *buf, int buf_size); +#endif + + /** + * slice flags + * - encoding: unused + * - decoding: Set by user. + */ + int slice_flags; +#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display +#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) +#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) + + /** + * XVideo Motion Acceleration + * - encoding: forbidden + * - decoding: set by decoder + */ + int xvmc_acceleration; + + /** + * macroblock decision mode + * - encoding: Set by user. + * - decoding: unused + */ + int mb_decision; +#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp +#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits +#define FF_MB_DECISION_RD 2 ///< rate distortion + + /** + * custom intra quantization matrix + * - encoding: Set by user, can be NULL. + * - decoding: Set by libavcodec. + */ + uint16_t *intra_matrix; + + /** + * custom inter quantization matrix + * - encoding: Set by user, can be NULL. + * - decoding: Set by libavcodec. + */ + uint16_t *inter_matrix; + + /** + * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). + * This is used to work around some encoder bugs. + * - encoding: unused + * - decoding: Set by user, will be converted to uppercase by libavcodec during init. + */ + unsigned int stream_codec_tag; + + /** + * scene change detection threshold + * 0 is default, larger means fewer detected scene changes. + * - encoding: Set by user. + * - decoding: unused + */ + int scenechange_threshold; + + /** + * minimum Lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int lmin; + + /** + * maximum Lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int lmax; + +#if FF_API_PALETTE_CONTROL + /** + * palette control structure + * - encoding: ??? (no palette-enabled encoder yet) + * - decoding: Set by user. + */ + struct AVPaletteControl *palctrl; +#endif + + /** + * noise reduction strength + * - encoding: Set by user. + * - decoding: unused + */ + int noise_reduction; + + /** + * Called at the beginning of a frame to get cr buffer for it. + * Buffer type (size, hints) must be the same. libavcodec won't check it. + * libavcodec will pass previous buffer in pic, function should return + * same buffer or new buffer with old frame "painted" into it. + * If pic.data[0] == NULL must behave like get_buffer(). + * if CODEC_CAP_DR1 is not set then reget_buffer() must call + * avcodec_default_reget_buffer() instead of providing buffers allocated by + * some other means. + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic); + + /** + * Number of bits which should be loaded into the rc buffer before decoding starts. + * - encoding: Set by user. + * - decoding: unused + */ + int rc_initial_buffer_occupancy; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int inter_threshold; + + /** + * CODEC_FLAG2_* + * - encoding: Set by user. + * - decoding: Set by user. + */ + int flags2; + + /** + * Simulates errors in the bitstream to test error concealment. + * - encoding: Set by user. + * - decoding: unused + */ + int error_rate; + +#if FF_API_ANTIALIAS_ALGO + /** + * MP3 antialias algorithm, see FF_AA_* below. + * - encoding: unused + * - decoding: Set by user. + */ + attribute_deprecated int antialias_algo; +#define FF_AA_AUTO 0 +#define FF_AA_FASTINT 1 //not implemented yet +#define FF_AA_INT 2 +#define FF_AA_FLOAT 3 +#endif + + /** + * quantizer noise shaping + * - encoding: Set by user. + * - decoding: unused + */ + int quantizer_noise_shaping; + + /** + * thread count + * is used to decide how many independent tasks should be passed to execute() + * - encoding: Set by user. + * - decoding: Set by user. + */ + int thread_count; + + /** + * The codec may call this to execute several independent things. + * It will return only after finishing all tasks. + * The user may replace this with some multithreaded implementation, + * the default implementation will execute the parts serially. + * @param count the number of things to execute + * - encoding: Set by libavcodec, user can override. + * - decoding: Set by libavcodec, user can override. + */ + int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); + + /** + * thread opaque + * Can be used by execute() to store some per AVCodecContext stuff. + * - encoding: set by execute() + * - decoding: set by execute() + */ + void *thread_opaque; + + /** + * Motion estimation threshold below which no motion estimation is + * performed, but instead the user specified motion vectors are used. + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_threshold; + + /** + * Macroblock threshold below which the user specified macroblock types will be used. + * - encoding: Set by user. + * - decoding: unused + */ + int mb_threshold; + + /** + * precision of the intra DC coefficient - 8 + * - encoding: Set by user. + * - decoding: unused + */ + int intra_dc_precision; + + /** + * noise vs. sse weight for the nsse comparsion function + * - encoding: Set by user. + * - decoding: unused + */ + int nsse_weight; + + /** + * Number of macroblock rows at the top which are skipped. + * - encoding: unused + * - decoding: Set by user. + */ + int skip_top; + + /** + * Number of macroblock rows at the bottom which are skipped. + * - encoding: unused + * - decoding: Set by user. + */ + int skip_bottom; + + /** + * profile + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int profile; +#define FF_PROFILE_UNKNOWN -99 +#define FF_PROFILE_RESERVED -100 + +#define FF_PROFILE_AAC_MAIN 0 +#define FF_PROFILE_AAC_LOW 1 +#define FF_PROFILE_AAC_SSR 2 +#define FF_PROFILE_AAC_LTP 3 + +#define FF_PROFILE_DTS 20 +#define FF_PROFILE_DTS_ES 30 +#define FF_PROFILE_DTS_96_24 40 +#define FF_PROFILE_DTS_HD_HRA 50 +#define FF_PROFILE_DTS_HD_MA 60 + +#define FF_PROFILE_MPEG2_422 0 +#define FF_PROFILE_MPEG2_HIGH 1 +#define FF_PROFILE_MPEG2_SS 2 +#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 +#define FF_PROFILE_MPEG2_MAIN 4 +#define FF_PROFILE_MPEG2_SIMPLE 5 + +#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag +#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag + +#define FF_PROFILE_H264_BASELINE 66 +#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) +#define FF_PROFILE_H264_MAIN 77 +#define FF_PROFILE_H264_EXTENDED 88 +#define FF_PROFILE_H264_HIGH 100 +#define FF_PROFILE_H264_HIGH_10 110 +#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_HIGH_422 122 +#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_HIGH_444 144 +#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 +#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_CAVLC_444 44 + +#define FF_PROFILE_VC1_SIMPLE 0 +#define FF_PROFILE_VC1_MAIN 1 +#define FF_PROFILE_VC1_COMPLEX 2 +#define FF_PROFILE_VC1_ADVANCED 3 + + /** + * level + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int level; +#define FF_LEVEL_UNKNOWN -99 + + /** + * low resolution decoding, 1-> 1/2 size, 2->1/4 size + * - encoding: unused + * - decoding: Set by user. + */ + int lowres; + + /** + * Bitstream width / height, may be different from width/height if lowres + * or other things are used. + * - encoding: unused + * - decoding: Set by user before init if known. Codec should override / dynamically change if needed. + */ + int coded_width, coded_height; + + /** + * frame skip threshold + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_threshold; + + /** + * frame skip factor + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_factor; + + /** + * frame skip exponent + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_exp; + + /** + * frame skip comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_cmp; + + /** + * Border processing masking, raises the quantizer for mbs on the borders + * of the picture. + * - encoding: Set by user. + * - decoding: unused + */ + float border_masking; + + /** + * minimum MB lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int mb_lmin; + + /** + * maximum MB lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int mb_lmax; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_penalty_compensation; + + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_loop_filter; + + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_idct; + + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_frame; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int bidir_refine; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int brd_scale; + + /** + * constant rate factor - quality-based VBR - values ~correspond to qps + * - encoding: Set by user. + * - decoding: unused + */ + float crf; + + /** + * constant quantization parameter rate control method + * - encoding: Set by user. + * - decoding: unused + */ + int cqp; + + /** + * minimum GOP size + * - encoding: Set by user. + * - decoding: unused + */ + int keyint_min; + + /** + * number of reference frames + * - encoding: Set by user. + * - decoding: Set by lavc. + */ + int refs; + + /** + * chroma qp offset from luma + * - encoding: Set by user. + * - decoding: unused + */ + int chromaoffset; + + /** + * Influences how often B-frames are used. + * - encoding: Set by user. + * - decoding: unused + */ + int bframebias; + + /** + * trellis RD quantization + * - encoding: Set by user. + * - decoding: unused + */ + int trellis; + + /** + * Reduce fluctuations in qp (before curve compression). + * - encoding: Set by user. + * - decoding: unused + */ + float complexityblur; + + /** + * in-loop deblocking filter alphac0 parameter + * alpha is in the range -6...6 + * - encoding: Set by user. + * - decoding: unused + */ + int deblockalpha; + + /** + * in-loop deblocking filter beta parameter + * beta is in the range -6...6 + * - encoding: Set by user. + * - decoding: unused + */ + int deblockbeta; + + /** + * macroblock subpartition sizes to consider - p8x8, p4x4, b8x8, i8x8, i4x4 + * - encoding: Set by user. + * - decoding: unused + */ + int partitions; +#define X264_PART_I4X4 0x001 /* Analyze i4x4 */ +#define X264_PART_I8X8 0x002 /* Analyze i8x8 (requires 8x8 transform) */ +#define X264_PART_P8X8 0x010 /* Analyze p16x8, p8x16 and p8x8 */ +#define X264_PART_P4X4 0x020 /* Analyze p8x4, p4x8, p4x4 */ +#define X264_PART_B8X8 0x100 /* Analyze b16x8, b8x16 and b8x8 */ + + /** + * direct MV prediction mode - 0 (none), 1 (spatial), 2 (temporal), 3 (auto) + * - encoding: Set by user. + * - decoding: unused + */ + int directpred; + + /** + * Audio cutoff bandwidth (0 means "automatic") + * - encoding: Set by user. + * - decoding: unused + */ + int cutoff; + + /** + * Multiplied by qscale for each frame and added to scene_change_score. + * - encoding: Set by user. + * - decoding: unused + */ + int scenechange_factor; + + /** + * + * Note: Value depends upon the compare function used for fullpel ME. + * - encoding: Set by user. + * - decoding: unused + */ + int mv0_threshold; + + /** + * Adjusts sensitivity of b_frame_strategy 1. + * - encoding: Set by user. + * - decoding: unused + */ + int b_sensitivity; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int compression_level; +#define FF_COMPRESSION_DEFAULT -1 + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int min_prediction_order; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int max_prediction_order; + +#if FF_API_FLAC_GLOBAL_OPTS + /** + * @name FLAC options + * @deprecated Use FLAC encoder private options instead. + * @{ + */ + + /** + * LPC coefficient precision - used by FLAC encoder + * - encoding: Set by user. + * - decoding: unused + */ + attribute_deprecated int lpc_coeff_precision; + + /** + * search method for selecting prediction order + * - encoding: Set by user. + * - decoding: unused + */ + attribute_deprecated int prediction_order_method; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + attribute_deprecated int min_partition_order; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + attribute_deprecated int max_partition_order; + /** + * @} + */ +#endif + + /** + * GOP timecode frame start number, in non drop frame format + * - encoding: Set by user. + * - decoding: unused + */ + int64_t timecode_frame_start; + +#if FF_API_REQUEST_CHANNELS + /** + * Decoder should decode to this many channels if it can (0 for default) + * - encoding: unused + * - decoding: Set by user. + * @deprecated Deprecated in favor of request_channel_layout. + */ + int request_channels; +#endif + + /** + * Percentage of dynamic range compression to be applied by the decoder. + * The default value is 1.0, corresponding to full compression. + * - encoding: unused + * - decoding: Set by user. + */ + float drc_scale; + + /** + * opaque 64bit number (generally a PTS) that will be reordered and + * output in AVFrame.reordered_opaque + * @deprecated in favor of pkt_pts + * - encoding: unused + * - decoding: Set by user. + */ + int64_t reordered_opaque; + + /** + * Bits per sample/pixel of internal libavcodec pixel/sample format. + * - encoding: set by user. + * - decoding: set by libavcodec. + */ + int bits_per_raw_sample; + + /** + * Audio channel layout. + * - encoding: set by user. + * - decoding: set by libavcodec. + */ + int64_t channel_layout; + + /** + * Request decoder to use this channel layout if it can (0 for default) + * - encoding: unused + * - decoding: Set by user. + */ + int64_t request_channel_layout; + + /** + * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. + * - encoding: Set by user. + * - decoding: unused. + */ + float rc_max_available_vbv_use; + + /** + * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. + * - encoding: Set by user. + * - decoding: unused. + */ + float rc_min_vbv_overflow_use; + + /** + * Hardware accelerator in use + * - encoding: unused. + * - decoding: Set by libavcodec + */ + struct AVHWAccel *hwaccel; + + /** + * For some codecs, the time base is closer to the field rate than the frame rate. + * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + * if no telecine is used ... + * + * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + */ + int ticks_per_frame; + + /** + * Hardware accelerator context. + * For some hardware accelerators, a global context needs to be + * provided by the user. In that case, this holds display-dependent + * data Libav cannot instantiate itself. Please refer to the + * Libav HW accelerator documentation to know how to fill this + * is. e.g. for VA API, this is a struct vaapi_context. + * - encoding: unused + * - decoding: Set by user + */ + void *hwaccel_context; + + /** + * Chromaticity coordinates of the source primaries. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorPrimaries color_primaries; + + /** + * Color Transfer Characteristic. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorTransferCharacteristic color_trc; + + /** + * YUV colorspace type. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorSpace colorspace; + + /** + * MPEG vs JPEG YUV range. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorRange color_range; + + /** + * This defines the location of chroma samples. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVChromaLocation chroma_sample_location; + + /** + * The codec may call this to execute several independent things. + * It will return only after finishing all tasks. + * The user may replace this with some multithreaded implementation, + * the default implementation will execute the parts serially. + * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. + * @param c context passed also to func + * @param count the number of things to execute + * @param arg2 argument passed unchanged to func + * @param ret return values of executed functions, must have space for "count" values. May be NULL. + * @param func function that will be called count times, with jobnr from 0 to count-1. + * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no + * two instances of func executing at the same time will have the same threadnr. + * @return always 0 currently, but code should handle a future improvement where when any call to func + * returns < 0 no further calls to func may be done and < 0 is returned. + * - encoding: Set by libavcodec, user can override. + * - decoding: Set by libavcodec, user can override. + */ + int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); + + /** + * explicit P-frame weighted prediction analysis method + * 0: off + * 1: fast blind weighting (one reference duplicate with -1 offset) + * 2: smart weighting (full fade detection analysis) + * - encoding: Set by user. + * - decoding: unused + */ + int weighted_p_pred; + + /** + * AQ mode + * 0: Disabled + * 1: Variance AQ (complexity mask) + * 2: Auto-variance AQ (experimental) + * - encoding: Set by user + * - decoding: unused + */ + int aq_mode; + + /** + * AQ strength + * Reduces blocking and blurring in flat and textured areas. + * - encoding: Set by user + * - decoding: unused + */ + float aq_strength; + + /** + * PSY RD + * Strength of psychovisual optimization + * - encoding: Set by user + * - decoding: unused + */ + float psy_rd; + + /** + * PSY trellis + * Strength of psychovisual optimization + * - encoding: Set by user + * - decoding: unused + */ + float psy_trellis; + + /** + * RC lookahead + * Number of frames for frametype and ratecontrol lookahead + * - encoding: Set by user + * - decoding: unused + */ + int rc_lookahead; + + /** + * Constant rate factor maximum + * With CRF encoding mode and VBV restrictions enabled, prevents quality from being worse + * than crf_max, even if doing so would violate VBV restrictions. + * - encoding: Set by user. + * - decoding: unused + */ + float crf_max; + + int log_level_offset; + +#if FF_API_FLAC_GLOBAL_OPTS + /** + * Determines which LPC analysis algorithm to use. + * - encoding: Set by user + * - decoding: unused + */ + attribute_deprecated enum AVLPCType lpc_type; + + /** + * Number of passes to use for Cholesky factorization during LPC analysis + * - encoding: Set by user + * - decoding: unused + */ + attribute_deprecated int lpc_passes; +#endif + + /** + * Number of slices. + * Indicates number of picture subdivisions. Used for parallelized + * decoding. + * - encoding: Set by user + * - decoding: unused + */ + int slices; + + /** + * Header containing style information for text subtitles. + * For SUBTITLE_ASS subtitle type, it should contain the whole ASS + * [Script Info] and [V4+ Styles] section, plus the [Events] line and + * the Format line following. It shouldn't include any Dialogue line. + * - encoding: Set/allocated/freed by user (before avcodec_open()) + * - decoding: Set/allocated/freed by libavcodec (by avcodec_open()) + */ + uint8_t *subtitle_header; + int subtitle_header_size; + + /** + * Current packet as passed into the decoder, to avoid having + * to pass the packet into every function. Currently only valid + * inside lavc and get/release_buffer callbacks. + * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts + * - encoding: unused + */ + AVPacket *pkt; + + /** + * Whether this is a copy of the context which had init() called on it. + * This is used by multithreading - shared tables and picture pointers + * should be freed from the original context only. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int is_copy; + + /** + * Which multithreading methods to use. + * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, + * so clients which cannot provide future frames should not use it. + * + * - encoding: Set by user, otherwise the default is used. + * - decoding: Set by user, otherwise the default is used. + */ + int thread_type; +#define FF_THREAD_FRAME 1 //< Decode more than one frame at once +#define FF_THREAD_SLICE 2 //< Decode more than one part of a single frame at once + + /** + * Which multithreading methods are in use by the codec. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int active_thread_type; + + /** + * Set by the client if its custom get_buffer() callback can be called + * from another thread, which allows faster multithreaded decoding. + * draw_horiz_band() will be called from other threads regardless of this setting. + * Ignored if the default get_buffer() is used. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int thread_safe_callbacks; + + /** + * VBV delay coded in the last frame (in periods of a 27 MHz clock). + * Used for compliant TS muxing. + * - encoding: Set by libavcodec. + * - decoding: unused. + */ + uint64_t vbv_delay; + + /** + * Type of service that the audio stream conveys. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + enum AVAudioServiceType audio_service_type; + + /** + * Used to request a sample format from the decoder. + * - encoding: unused. + * - decoding: Set by user. + */ + enum AVSampleFormat request_sample_fmt; +} AVCodecContext; + +/** + * AVProfile. + */ +typedef struct AVProfile { + int profile; + const char *name; ///< short name for the profile +} AVProfile; + +/** + * AVCodec. + */ +typedef struct AVCodec { + /** + * Name of the codec implementation. + * The name is globally unique among encoders and among decoders (but an + * encoder and a decoder can share the same name). + * This is the primary way to find a codec from the user perspective. + */ + const char *name; + enum AVMediaType type; + enum CodecID id; + int priv_data_size; + int (*init)(AVCodecContext *); + int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); + int (*close)(AVCodecContext *); + int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); + /** + * Codec capabilities. + * see CODEC_CAP_* + */ + int capabilities; + struct AVCodec *next; + /** + * Flush buffers. + * Will be called when seeking + */ + void (*flush)(AVCodecContext *); + const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} + const enum PixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 + /** + * Descriptive name for the codec, meant to be more human readable than name. + * You should use the NULL_IF_CONFIG_SMALL() macro to define it. + */ + const char *long_name; + const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 + const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 + const int64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 + uint8_t max_lowres; ///< maximum value for lowres supported by the decoder + const AVClass *priv_class; ///< AVClass for the private context + const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} + + /** + * @name Frame-level threading support functions + * @{ + */ + /** + * If defined, called on thread contexts when they are created. + * If the codec allocates writable tables in init(), re-allocate them here. + * priv_data will be set to a copy of the original. + */ + int (*init_thread_copy)(AVCodecContext *); + /** + * Copy necessary context variables from a previous thread context to the current one. + * If not defined, the next thread will start automatically; otherwise, the codec + * must call ff_thread_finish_setup(). + * + * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. + */ + int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); + /** @} */ +} AVCodec; + +/** + * AVHWAccel. + */ +typedef struct AVHWAccel { + /** + * Name of the hardware accelerated codec. + * The name is globally unique among encoders and among decoders (but an + * encoder and a decoder can share the same name). + */ + const char *name; + + /** + * Type of codec implemented by the hardware accelerator. + * + * See AVMEDIA_TYPE_xxx + */ + enum AVMediaType type; + + /** + * Codec implemented by the hardware accelerator. + * + * See CODEC_ID_xxx + */ + enum CodecID id; + + /** + * Supported pixel format. + * + * Only hardware accelerated formats are supported here. + */ + enum PixelFormat pix_fmt; + + /** + * Hardware accelerated codec capabilities. + * see FF_HWACCEL_CODEC_CAP_* + */ + int capabilities; + + struct AVHWAccel *next; + + /** + * Called at the beginning of each frame or field picture. + * + * Meaningful frame information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * Note that buf can be NULL along with buf_size set to 0. + * Otherwise, this means the whole frame is available at this point. + * + * @param avctx the codec context + * @param buf the frame data buffer base + * @param buf_size the size of the frame in bytes + * @return zero if successful, a negative value otherwise + */ + int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Callback for each slice. + * + * Meaningful slice information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * @param avctx the codec context + * @param buf the slice data buffer base + * @param buf_size the size of the slice in bytes + * @return zero if successful, a negative value otherwise + */ + int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Called at the end of each frame or field picture. + * + * The whole picture is parsed at this point and can now be sent + * to the hardware accelerator. This function is mandatory. + * + * @param avctx the codec context + * @return zero if successful, a negative value otherwise + */ + int (*end_frame)(AVCodecContext *avctx); + + /** + * Size of HW accelerator private data. + * + * Private data is allocated with av_mallocz() before + * AVCodecContext.get_buffer() and deallocated after + * AVCodecContext.release_buffer(). + */ + int priv_data_size; +} AVHWAccel; + +/** + * four components are given, that's all. + * the last component is alpha + */ +typedef struct AVPicture { + uint8_t *data[4]; + int linesize[4]; ///< number of bytes per line +} AVPicture; + +#if FF_API_PALETTE_CONTROL +/** + * AVPaletteControl + * This structure defines a method for communicating palette changes + * between and demuxer and a decoder. + * + * @deprecated Use AVPacket to send palette changes instead. + * This is totally broken. + */ +#define AVPALETTE_SIZE 1024 +#define AVPALETTE_COUNT 256 +typedef struct AVPaletteControl { + + /* Demuxer sets this to 1 to indicate the palette has changed; + * decoder resets to 0. */ + int palette_changed; + + /* 4-byte ARGB palette entries, stored in native byte order; note that + * the individual palette components should be on a 8-bit scale; if + * the palette data comes from an IBM VGA native format, the component + * data is probably 6 bits in size and needs to be scaled. */ + unsigned int palette[AVPALETTE_COUNT]; + +} AVPaletteControl attribute_deprecated; +#endif + +enum AVSubtitleType { + SUBTITLE_NONE, + + SUBTITLE_BITMAP, ///< A bitmap, pict will be set + + /** + * Plain text, the text field must be set by the decoder and is + * authoritative. ass and pict fields may contain approximations. + */ + SUBTITLE_TEXT, + + /** + * Formatted text, the ass field must be set by the decoder and is + * authoritative. pict and text fields may contain approximations. + */ + SUBTITLE_ASS, +}; + +typedef struct AVSubtitleRect { + int x; ///< top left corner of pict, undefined when pict is not set + int y; ///< top left corner of pict, undefined when pict is not set + int w; ///< width of pict, undefined when pict is not set + int h; ///< height of pict, undefined when pict is not set + int nb_colors; ///< number of colors in pict, undefined when pict is not set + + /** + * data+linesize for the bitmap of this subtitle. + * can be set for text/ass as well once they where rendered + */ + AVPicture pict; + enum AVSubtitleType type; + + char *text; ///< 0 terminated plain UTF-8 text + + /** + * 0 terminated ASS/SSA compatible event line. + * The pressentation of this is unaffected by the other values in this + * struct. + */ + char *ass; +} AVSubtitleRect; + +typedef struct AVSubtitle { + uint16_t format; /* 0 = graphics */ + uint32_t start_display_time; /* relative to packet pts, in ms */ + uint32_t end_display_time; /* relative to packet pts, in ms */ + unsigned num_rects; + AVSubtitleRect **rects; + int64_t pts; ///< Same as packet pts, in AV_TIME_BASE +} AVSubtitle; + +/* packet functions */ + +/** + * @deprecated use NULL instead + */ +attribute_deprecated void av_destruct_packet_nofree(AVPacket *pkt); + +/** + * Default packet destructor. + */ +void av_destruct_packet(AVPacket *pkt); + +/** + * Initialize optional fields of a packet with default values. + * + * @param pkt packet + */ +void av_init_packet(AVPacket *pkt); + +/** + * Allocate the payload of a packet and initialize its fields with + * default values. + * + * @param pkt packet + * @param size wanted payload size + * @return 0 if OK, AVERROR_xxx otherwise + */ +int av_new_packet(AVPacket *pkt, int size); + +/** + * Reduce packet size, correctly zeroing padding + * + * @param pkt packet + * @param size new size + */ +void av_shrink_packet(AVPacket *pkt, int size); + +/** + * Increase packet size, correctly zeroing padding + * + * @param pkt packet + * @param grow_by number of bytes by which to increase the size of the packet + */ +int av_grow_packet(AVPacket *pkt, int grow_by); + +/** + * @warning This is a hack - the packet memory allocation stuff is broken. The + * packet is allocated if it was not really allocated. + */ +int av_dup_packet(AVPacket *pkt); + +/** + * Free a packet. + * + * @param pkt packet to free + */ +void av_free_packet(AVPacket *pkt); + +/** + * Allocate new information of a packet. + * + * @param pkt packet + * @param type side information type + * @param size side information size + * @return pointer to fresh allocated data or NULL otherwise + */ +uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + int size); + +/** + * Get side information from packet. + * + * @param pkt packet + * @param type desired side information type + * @param size pointer for side information size to store (optional) + * @return pointer to data if present or NULL otherwise + */ +uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + int *size); + +/* resample.c */ + +struct ReSampleContext; +struct AVResampleContext; + +typedef struct ReSampleContext ReSampleContext; + +/** + * Initialize audio resampling context. + * + * @param output_channels number of output channels + * @param input_channels number of input channels + * @param output_rate output sample rate + * @param input_rate input sample rate + * @param sample_fmt_out requested output sample format + * @param sample_fmt_in input sample format + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear if 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + * @return allocated ReSampleContext, NULL if error occured + */ +ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, + int output_rate, int input_rate, + enum AVSampleFormat sample_fmt_out, + enum AVSampleFormat sample_fmt_in, + int filter_length, int log2_phase_count, + int linear, double cutoff); + +int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); + +/** + * Free resample context. + * + * @param s a non-NULL pointer to a resample context previously + * created with av_audio_resample_init() + */ +void audio_resample_close(ReSampleContext *s); + + +/** + * Initialize an audio resampler. + * Note, if either rate is not an integer then simply scale both rates up so they are. + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear If 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + */ +struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); + +/** + * Resample an array of samples using a previously configured context. + * @param src an array of unconsumed samples + * @param consumed the number of samples of src which have been consumed are returned here + * @param src_size the number of unconsumed samples available + * @param dst_size the amount of space in samples available in dst + * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. + * @return the number of samples written in dst or -1 if an error occurred + */ +int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); + + +/** + * Compensate samplerate/timestamp drift. The compensation is done by changing + * the resampler parameters, so no audible clicks or similar distortions occur + * @param compensation_distance distance in output samples over which the compensation should be performed + * @param sample_delta number of output samples which should be output less + * + * example: av_resample_compensate(c, 10, 500) + * here instead of 510 samples only 500 samples would be output + * + * note, due to rounding the actual compensation might be slightly different, + * especially if the compensation_distance is large and the in_rate used during init is small + */ +void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); +void av_resample_close(struct AVResampleContext *c); + +/** + * Allocate memory for a picture. Call avpicture_free() to free it. + * + * \see avpicture_fill() + * + * @param picture the picture to be filled in + * @param pix_fmt the format of the picture + * @param width the width of the picture + * @param height the height of the picture + * @return zero if successful, a negative value if not + */ +int avpicture_alloc(AVPicture *picture, enum PixelFormat pix_fmt, int width, int height); + +/** + * Free a picture previously allocated by avpicture_alloc(). + * The data buffer used by the AVPicture is freed, but the AVPicture structure + * itself is not. + * + * @param picture the AVPicture to be freed + */ +void avpicture_free(AVPicture *picture); + +/** + * Fill in the AVPicture fields. + * The fields of the given AVPicture are filled in by using the 'ptr' address + * which points to the image data buffer. Depending on the specified picture + * format, one or multiple image data pointers and line sizes will be set. + * If a planar format is specified, several pointers will be set pointing to + * the different picture planes and the line sizes of the different planes + * will be stored in the lines_sizes array. + * Call with ptr == NULL to get the required size for the ptr buffer. + * + * To allocate the buffer and fill in the AVPicture fields in one call, + * use avpicture_alloc(). + * + * @param picture AVPicture whose fields are to be filled in + * @param ptr Buffer which will contain or contains the actual image data + * @param pix_fmt The format in which the picture data is stored. + * @param width the width of the image in pixels + * @param height the height of the image in pixels + * @return size of the image data in bytes + */ +int avpicture_fill(AVPicture *picture, uint8_t *ptr, + enum PixelFormat pix_fmt, int width, int height); + +/** + * Copy pixel data from an AVPicture into a buffer. + * The data is stored compactly, without any gaps for alignment or padding + * which may be applied by avpicture_fill(). + * + * \see avpicture_get_size() + * + * @param[in] src AVPicture containing image data + * @param[in] pix_fmt The format in which the picture data is stored. + * @param[in] width the width of the image in pixels. + * @param[in] height the height of the image in pixels. + * @param[out] dest A buffer into which picture data will be copied. + * @param[in] dest_size The size of 'dest'. + * @return The number of bytes written to dest, or a negative value (error code) on error. + */ +int avpicture_layout(const AVPicture* src, enum PixelFormat pix_fmt, int width, int height, + unsigned char *dest, int dest_size); + +/** + * Calculate the size in bytes that a picture of the given width and height + * would occupy if stored in the given picture format. + * Note that this returns the size of a compact representation as generated + * by avpicture_layout(), which can be smaller than the size required for e.g. + * avpicture_fill(). + * + * @param pix_fmt the given picture format + * @param width the width of the image + * @param height the height of the image + * @return Image data size in bytes or -1 on error (e.g. too large dimensions). + */ +int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height); +void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift); + +#if FF_API_GET_PIX_FMT_NAME +/** + * @deprecated Deprecated in favor of av_get_pix_fmt_name(). + */ +attribute_deprecated +const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt); +#endif + +void avcodec_set_dimensions(AVCodecContext *s, int width, int height); + +/** + * Return a value representing the fourCC code associated to the + * pixel format pix_fmt, or 0 if no associated fourCC code can be + * found. + */ +unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat pix_fmt); + +/** + * Put a string representing the codec tag codec_tag in buf. + * + * @param buf_size size in bytes of buf + * @return the length of the string that would have been generated if + * enough space had been available, excluding the trailing null + */ +size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); + +#define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ +#define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ +#define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ +#define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ +#define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ +#define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ + +/** + * Compute what kind of losses will occur when converting from one specific + * pixel format to another. + * When converting from one pixel format to another, information loss may occur. + * For example, when converting from RGB24 to GRAY, the color information will + * be lost. Similarly, other losses occur when converting from some formats to + * other formats. These losses can involve loss of chroma, but also loss of + * resolution, loss of color depth, loss due to the color space conversion, loss + * of the alpha bits or loss due to color quantization. + * avcodec_get_fix_fmt_loss() informs you about the various types of losses + * which will occur when converting from one pixel format to another. + * + * @param[in] dst_pix_fmt destination pixel format + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @return Combination of flags informing you what kind of losses will occur. + */ +int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt, + int has_alpha); + +/** + * Find the best pixel format to convert to given a certain source pixel + * format. When converting from one pixel format to another, information loss + * may occur. For example, when converting from RGB24 to GRAY, the color + * information will be lost. Similarly, other losses occur when converting from + * some formats to other formats. avcodec_find_best_pix_fmt() searches which of + * the given pixel formats should be used to suffer the least amount of loss. + * The pixel formats from which it chooses one, are determined by the + * pix_fmt_mask parameter. + * + * @code + * src_pix_fmt = PIX_FMT_YUV420P; + * pix_fmt_mask = (1 << PIX_FMT_YUV422P) || (1 << PIX_FMT_RGB24); + * dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss); + * @endcode + * + * @param[in] pix_fmt_mask bitmask determining which pixel format to choose from + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. + * @return The best pixel format to convert to or -1 if none was found. + */ +enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, + int has_alpha, int *loss_ptr); + +#define FF_ALPHA_TRANSP 0x0001 /* image has some totally transparent pixels */ +#define FF_ALPHA_SEMI_TRANSP 0x0002 /* image has some transparent pixels */ + +/** + * Tell if an image really has transparent alpha values. + * @return ored mask of FF_ALPHA_xxx constants + */ +int img_get_alpha_info(const AVPicture *src, + enum PixelFormat pix_fmt, int width, int height); + +/* deinterlace a picture */ +/* deinterlace - if not supported return -1 */ +int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, + enum PixelFormat pix_fmt, int width, int height); + +/* external high level API */ + +/** + * If c is NULL, returns the first registered codec, + * if c is non-NULL, returns the next registered codec after c, + * or NULL if c is the last one. + */ +AVCodec *av_codec_next(AVCodec *c); + +/** + * Return the LIBAVCODEC_VERSION_INT constant. + */ +unsigned avcodec_version(void); + +/** + * Return the libavcodec build-time configuration. + */ +const char *avcodec_configuration(void); + +/** + * Return the libavcodec license. + */ +const char *avcodec_license(void); + +/** + * Initialize libavcodec. + * If called more than once, does nothing. + * + * @warning This function must be called before any other libavcodec + * function. + * + * @warning This function is not thread-safe. + */ +void avcodec_init(void); + +/** + * Register the codec codec and initialize libavcodec. + * + * @see avcodec_init(), avcodec_register_all() + */ +void avcodec_register(AVCodec *codec); + +/** + * Find a registered encoder with a matching codec ID. + * + * @param id CodecID of the requested encoder + * @return An encoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_encoder(enum CodecID id); + +/** + * Find a registered encoder with the specified name. + * + * @param name name of the requested encoder + * @return An encoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_encoder_by_name(const char *name); + +/** + * Find a registered decoder with a matching codec ID. + * + * @param id CodecID of the requested decoder + * @return A decoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_decoder(enum CodecID id); + +/** + * Find a registered decoder with the specified name. + * + * @param name name of the requested decoder + * @return A decoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_decoder_by_name(const char *name); +void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); + +/** + * Return a name for the specified profile, if available. + * + * @param codec the codec that is searched for the given profile + * @param profile the profile value for which a name is requested + * @return A name for the profile if found, NULL otherwise. + */ +const char *av_get_profile_name(const AVCodec *codec, int profile); + +/** + * Set the fields of the given AVCodecContext to default values. + * + * @param s The AVCodecContext of which the fields should be set to default values. + */ +void avcodec_get_context_defaults(AVCodecContext *s); + +/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! */ +void avcodec_get_context_defaults2(AVCodecContext *s, enum AVMediaType); + +/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! */ +int avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec); + +/** + * Allocate an AVCodecContext and set its fields to default values. The + * resulting struct can be deallocated by simply calling av_free(). + * + * @return An AVCodecContext filled with default values or NULL on failure. + * @see avcodec_get_context_defaults + */ +AVCodecContext *avcodec_alloc_context(void); + +/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! */ +AVCodecContext *avcodec_alloc_context2(enum AVMediaType); + +/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! */ +AVCodecContext *avcodec_alloc_context3(AVCodec *codec); + +/** + * Copy the settings of the source AVCodecContext into the destination + * AVCodecContext. The resulting destination codec context will be + * unopened, i.e. you are required to call avcodec_open() before you + * can use this AVCodecContext to decode/encode video/audio data. + * + * @param dest target codec context, should be initialized with + * avcodec_alloc_context(), but otherwise uninitialized + * @param src source codec context + * @return AVERROR() on error (e.g. memory allocation error), 0 on success + */ +int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); + +/** + * Set the fields of the given AVFrame to default values. + * + * @param pic The AVFrame of which the fields should be set to default values. + */ +void avcodec_get_frame_defaults(AVFrame *pic); + +/** + * Allocate an AVFrame and set its fields to default values. The resulting + * struct can be deallocated by simply calling av_free(). + * + * @return An AVFrame filled with default values or NULL on failure. + * @see avcodec_get_frame_defaults + */ +AVFrame *avcodec_alloc_frame(void); + +int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic); +void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic); +int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic); + +/** + * Return the amount of padding in pixels which the get_buffer callback must + * provide around the edge of the image for codecs which do not have the + * CODEC_FLAG_EMU_EDGE flag. + * + * @return Required padding in pixels. + */ +unsigned avcodec_get_edge_width(void); +/** + * Modify width and height values so that they will result in a memory + * buffer that is acceptable for the codec if you do not use any horizontal + * padding. + * + * May only be used if a codec with CODEC_CAP_DR1 has been opened. + * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + * according to avcodec_get_edge_width() before. + */ +void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); +/** + * Modify width and height values so that they will result in a memory + * buffer that is acceptable for the codec if you also ensure that all + * line sizes are a multiple of the respective linesize_align[i]. + * + * May only be used if a codec with CODEC_CAP_DR1 has been opened. + * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + * according to avcodec_get_edge_width() before. + */ +void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, + int linesize_align[4]); + +enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt); + +#if FF_API_THREAD_INIT +/** + * @deprecated Set s->thread_count before calling avcodec_open() instead of calling this. + */ +attribute_deprecated +int avcodec_thread_init(AVCodecContext *s, int thread_count); +#endif + +int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); +int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); +//FIXME func typedef + +/** + * Initialize the AVCodecContext to use the given AVCodec. Prior to using this + * function the context has to be allocated. + * + * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), + * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for + * retrieving a codec. + * + * @warning This function is not thread safe! + * + * @code + * avcodec_register_all(); + * codec = avcodec_find_decoder(CODEC_ID_H264); + * if (!codec) + * exit(1); + * + * context = avcodec_alloc_context(); + * + * if (avcodec_open(context, codec) < 0) + * exit(1); + * @endcode + * + * @param avctx The context which will be set up to use the given codec. + * @param codec The codec to use within the context. + * @return zero on success, a negative value on error + * @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder, avcodec_close + */ +int avcodec_open(AVCodecContext *avctx, AVCodec *codec); + +/** + * Decode the audio frame of size avpkt->size from avpkt->data into samples. + * Some decoders may support multiple frames in a single AVPacket, such + * decoders would then just decode the first frame. In this case, + * avcodec_decode_audio3 has to be called again with an AVPacket that contains + * the remaining data in order to decode the second frame etc. + * If no frame + * could be outputted, frame_size_ptr is zero. Otherwise, it is the + * decompressed frame size in bytes. + * + * @warning You must set frame_size_ptr to the allocated size of the + * output buffer before calling avcodec_decode_audio3(). + * + * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + * the actual read bytes because some optimized bitstream readers read 32 or 64 + * bits at once and could read over the end. + * + * @warning The end of the input buffer avpkt->data should be set to 0 to ensure that + * no overreading happens for damaged MPEG streams. + * + * @note You might have to align the input buffer avpkt->data and output buffer + * samples. The alignment requirements depend on the CPU: On some CPUs it isn't + * necessary at all, on others it won't work at all if not aligned and on others + * it will work but it will have an impact on performance. + * + * In practice, avpkt->data should have 4 byte alignment at minimum and + * samples should be 16 byte aligned unless the CPU doesn't need it + * (AltiVec and SSE do). + * + * @param avctx the codec context + * @param[out] samples the output buffer, sample type in avctx->sample_fmt + * @param[in,out] frame_size_ptr the output buffer size in bytes + * @param[in] avpkt The input AVPacket containing the input buffer. + * You can create such packet with av_init_packet() and by then setting + * data and size, some decoders might in addition need other fields. + * All decoders are designed to use the least fields possible though. + * @return On error a negative value is returned, otherwise the number of bytes + * used or zero if no frame data was decompressed (used) from the input AVPacket. + */ +int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, + int *frame_size_ptr, + AVPacket *avpkt); + +/** + * Decode the video frame of size avpkt->size from avpkt->data into picture. + * Some decoders may support multiple frames in a single AVPacket, such + * decoders would then just decode the first frame. + * + * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + * the actual read bytes because some optimized bitstream readers read 32 or 64 + * bits at once and could read over the end. + * + * @warning The end of the input buffer buf should be set to 0 to ensure that + * no overreading happens for damaged MPEG streams. + * + * @note You might have to align the input buffer avpkt->data. + * The alignment requirements depend on the CPU: on some CPUs it isn't + * necessary at all, on others it won't work at all if not aligned and on others + * it will work but it will have an impact on performance. + * + * In practice, avpkt->data should have 4 byte alignment at minimum. + * + * @note Some codecs have a delay between input and output, these need to be + * fed with avpkt->data=NULL, avpkt->size=0 at the end to return the remaining frames. + * + * @param avctx the codec context + * @param[out] picture The AVFrame in which the decoded video frame will be stored. + * Use avcodec_alloc_frame to get an AVFrame, the codec will + * allocate memory for the actual bitmap. + * with default get/release_buffer(), the decoder frees/reuses the bitmap as it sees fit. + * with overridden get/release_buffer() (needs CODEC_CAP_DR1) the user decides into what buffer the decoder + * decodes and the decoder tells the user once it does not need the data anymore, + * the user app can at this point free/reuse/keep the memory as it sees fit. + * + * @param[in] avpkt The input AVpacket containing the input buffer. + * You can create such packet with av_init_packet() and by then setting + * data and size, some decoders might in addition need other fields like + * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least + * fields possible. + * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. + * @return On error a negative value is returned, otherwise the number of bytes + * used or zero if no frame could be decompressed. + */ +int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, + int *got_picture_ptr, + AVPacket *avpkt); + +/** + * Decode a subtitle message. + * Return a negative value on error, otherwise return the number of bytes used. + * If no subtitle could be decompressed, got_sub_ptr is zero. + * Otherwise, the subtitle is stored in *sub. + * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for + * simplicity, because the performance difference is expect to be negligible + * and reusing a get_buffer written for video codecs would probably perform badly + * due to a potentially very different allocation pattern. + * + * @param avctx the codec context + * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be + freed with avsubtitle_free if *got_sub_ptr is set. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + */ +int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, + int *got_sub_ptr, + AVPacket *avpkt); + +/** + * Frees all allocated data in the given subtitle struct. + * + * @param sub AVSubtitle to free. + */ +void avsubtitle_free(AVSubtitle *sub); + +int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, + int *data_size_ptr, + uint8_t *buf, int buf_size); + +/** + * Encode an audio frame from samples into buf. + * + * @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. + * However, for PCM audio the user will know how much space is needed + * because it depends on the value passed in buf_size as described + * below. In that case a lower value can be used. + * + * @param avctx the codec context + * @param[out] buf the output buffer + * @param[in] buf_size the output buffer size + * @param[in] samples the input buffer containing the samples + * The number of samples read from this buffer is frame_size*channels, + * both of which are defined in avctx. + * For PCM audio the number of samples read from samples is equal to + * buf_size * input_sample_size / output_sample_size. + * @return On error a negative value is returned, on success zero or the number + * of bytes used to encode the data read from the input buffer. + */ +int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, + const short *samples); + +/** + * Encode a video frame from pict into buf. + * The input picture should be + * stored using a specific format, namely avctx.pix_fmt. + * + * @param avctx the codec context + * @param[out] buf the output buffer for the bitstream of encoded frame + * @param[in] buf_size the size of the output buffer in bytes + * @param[in] pict the input picture to encode + * @return On error a negative value is returned, on success zero or the number + * of bytes used from the output buffer. + */ +int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, + const AVFrame *pict); +int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, + const AVSubtitle *sub); + +int avcodec_close(AVCodecContext *avctx); + +/** + * Register all the codecs, parsers and bitstream filters which were enabled at + * configuration time. If you do not call this function you can select exactly + * which formats you want to support, by using the individual registration + * functions. + * + * @see avcodec_register + * @see av_register_codec_parser + * @see av_register_bitstream_filter + */ +void avcodec_register_all(void); + +/** + * Flush buffers, should be called when seeking or when switching to a different stream. + */ +void avcodec_flush_buffers(AVCodecContext *avctx); + +void avcodec_default_free_buffers(AVCodecContext *s); + +/* misc useful functions */ + +#if FF_API_OLD_FF_PICT_TYPES +/** + * Return a single letter to describe the given picture type pict_type. + * + * @param[in] pict_type the picture type + * @return A single character representing the picture type. + * @deprecated Use av_get_picture_type_char() instead. + */ +attribute_deprecated +char av_get_pict_type_char(int pict_type); +#endif + +/** + * Return codec bits per sample. + * + * @param[in] codec_id the codec + * @return Number of bits per sample or zero if unknown for the given codec. + */ +int av_get_bits_per_sample(enum CodecID codec_id); + +#if FF_API_OLD_SAMPLE_FMT +/** + * @deprecated Use av_get_bytes_per_sample() instead. + */ +attribute_deprecated +int av_get_bits_per_sample_format(enum AVSampleFormat sample_fmt); +#endif + +/* frame parsing */ +typedef struct AVCodecParserContext { + void *priv_data; + struct AVCodecParser *parser; + int64_t frame_offset; /* offset of the current frame */ + int64_t cur_offset; /* current offset + (incremented by each av_parser_parse()) */ + int64_t next_frame_offset; /* offset of the next frame */ + /* video info */ + int pict_type; /* XXX: Put it back in AVCodecContext. */ + /** + * This field is used for proper frame duration computation in lavf. + * It signals, how much longer the frame duration of the current frame + * is compared to normal frame duration. + * + * frame_duration = (1 + repeat_pict) * time_base + * + * It is used by codecs like H.264 to display telecined material. + */ + int repeat_pict; /* XXX: Put it back in AVCodecContext. */ + int64_t pts; /* pts of the current frame */ + int64_t dts; /* dts of the current frame */ + + /* private data */ + int64_t last_pts; + int64_t last_dts; + int fetch_timestamp; + +#define AV_PARSER_PTS_NB 4 + int cur_frame_start_index; + int64_t cur_frame_offset[AV_PARSER_PTS_NB]; + int64_t cur_frame_pts[AV_PARSER_PTS_NB]; + int64_t cur_frame_dts[AV_PARSER_PTS_NB]; + + int flags; +#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 +#define PARSER_FLAG_ONCE 0x0002 +/// Set if the parser has a valid file offset +#define PARSER_FLAG_FETCHED_OFFSET 0x0004 + + int64_t offset; ///< byte offset from starting packet start + int64_t cur_frame_end[AV_PARSER_PTS_NB]; + + /*! + * Set by parser to 1 for key frames and 0 for non-key frames. + * It is initialized to -1, so if the parser doesn't set this flag, + * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames + * will be used. + */ + int key_frame; + + /** + * Time difference in stream time base units from the pts of this + * packet to the point at which the output from the decoder has converged + * independent from the availability of previous frames. That is, the + * frames are virtually identical no matter if decoding started from + * the very first frame or from this keyframe. + * Is AV_NOPTS_VALUE if unknown. + * This field is not the display duration of the current frame. + * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + * set. + * + * The purpose of this field is to allow seeking in streams that have no + * keyframes in the conventional sense. It corresponds to the + * recovery point SEI in H.264 and match_time_delta in NUT. It is also + * essential for some types of subtitle streams to ensure that all + * subtitles are correctly displayed after seeking. + */ + int64_t convergence_duration; + + // Timestamp generation support: + /** + * Synchronization point for start of timestamp generation. + * + * Set to >0 for sync point, 0 for no sync point and <0 for undefined + * (default). + * + * For example, this corresponds to presence of H.264 buffering period + * SEI message. + */ + int dts_sync_point; + + /** + * Offset of the current timestamp against last timestamp sync point in + * units of AVCodecContext.time_base. + * + * Set to INT_MIN when dts_sync_point unused. Otherwise, it must + * contain a valid timestamp offset. + * + * Note that the timestamp of sync point has usually a nonzero + * dts_ref_dts_delta, which refers to the previous sync point. Offset of + * the next frame after timestamp sync point will be usually 1. + * + * For example, this corresponds to H.264 cpb_removal_delay. + */ + int dts_ref_dts_delta; + + /** + * Presentation delay of current frame in units of AVCodecContext.time_base. + * + * Set to INT_MIN when dts_sync_point unused. Otherwise, it must + * contain valid non-negative timestamp delta (presentation time of a frame + * must not lie in the past). + * + * This delay represents the difference between decoding and presentation + * time of the frame. + * + * For example, this corresponds to H.264 dpb_output_delay. + */ + int pts_dts_delta; + + /** + * Position of the packet in file. + * + * Analogous to cur_frame_pts/dts + */ + int64_t cur_frame_pos[AV_PARSER_PTS_NB]; + + /** + * Byte position of currently parsed frame in stream. + */ + int64_t pos; + + /** + * Previous frame byte position. + */ + int64_t last_pos; +} AVCodecParserContext; + +typedef struct AVCodecParser { + int codec_ids[5]; /* several codec IDs are permitted */ + int priv_data_size; + int (*parser_init)(AVCodecParserContext *s); + int (*parser_parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*parser_close)(AVCodecParserContext *s); + int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); + struct AVCodecParser *next; +} AVCodecParser; + +AVCodecParser *av_parser_next(AVCodecParser *c); + +void av_register_codec_parser(AVCodecParser *parser); +AVCodecParserContext *av_parser_init(int codec_id); + +/** + * Parse a packet. + * + * @param s parser context. + * @param avctx codec context. + * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. + * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. + * @param buf input buffer. + * @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). + * @param pts input presentation timestamp. + * @param dts input decoding timestamp. + * @param pos input byte position in stream. + * @return the number of bytes of the input bitstream used. + * + * Example: + * @code + * while(in_len){ + * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, + * in_data, in_len, + * pts, dts, pos); + * in_data += len; + * in_len -= len; + * + * if(size) + * decode_frame(data, size); + * } + * @endcode + */ +int av_parser_parse2(AVCodecParserContext *s, + AVCodecContext *avctx, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, + int64_t pts, int64_t dts, + int64_t pos); + +int av_parser_change(AVCodecParserContext *s, + AVCodecContext *avctx, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); +void av_parser_close(AVCodecParserContext *s); + + +typedef struct AVBitStreamFilterContext { + void *priv_data; + struct AVBitStreamFilter *filter; + AVCodecParserContext *parser; + struct AVBitStreamFilterContext *next; +} AVBitStreamFilterContext; + + +typedef struct AVBitStreamFilter { + const char *name; + int priv_data_size; + int (*filter)(AVBitStreamFilterContext *bsfc, + AVCodecContext *avctx, const char *args, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); + void (*close)(AVBitStreamFilterContext *bsfc); + struct AVBitStreamFilter *next; +} AVBitStreamFilter; + +void av_register_bitstream_filter(AVBitStreamFilter *bsf); +AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); +int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, + AVCodecContext *avctx, const char *args, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); +void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); + +AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); + +/* memory */ + +/** + * Reallocate the given block if it is not large enough, otherwise do nothing. + * + * @see av_realloc + */ +void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Allocate a buffer, reusing the given one if large enough. + * + * Contrary to av_fast_realloc the current buffer contents might not be + * preserved and on error the old buffer is freed, thus no special + * handling to avoid memleaks is necessary. + * + * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer + * @param size size of the buffer *ptr points to + * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and + * *size 0 if an error occurred. + */ +void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Copy image src to dst. Wraps av_picture_data_copy() above. + */ +void av_picture_copy(AVPicture *dst, const AVPicture *src, + enum PixelFormat pix_fmt, int width, int height); + +/** + * Crop image top and left side. + */ +int av_picture_crop(AVPicture *dst, const AVPicture *src, + enum PixelFormat pix_fmt, int top_band, int left_band); + +/** + * Pad image. + */ +int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum PixelFormat pix_fmt, + int padtop, int padbottom, int padleft, int padright, int *color); + +/** + * Encode extradata length to a buffer. Used by xiph codecs. + * + * @param s buffer to write to; must be at least (v/255+1) bytes long + * @param v size of extradata in bytes + * @return number of bytes written to the buffer. + */ +unsigned int av_xiphlacing(unsigned char *s, unsigned int v); + +/** + * Logs a generic warning message about a missing feature. This function is + * intended to be used internally by Libav (libavcodec, libavformat, etc.) + * only, and would normally not be used by applications. + * @param[in] avc a pointer to an arbitrary struct of which the first field is + * a pointer to an AVClass struct + * @param[in] feature string containing the name of the missing feature + * @param[in] want_sample indicates if samples are wanted which exhibit this feature. + * If want_sample is non-zero, additional verbage will be added to the log + * message which tells the user how to report samples to the development + * mailing list. + */ +void av_log_missing_feature(void *avc, const char *feature, int want_sample); + +/** + * Log a generic warning message asking for a sample. This function is + * intended to be used internally by Libav (libavcodec, libavformat, etc.) + * only, and would normally not be used by applications. + * @param[in] avc a pointer to an arbitrary struct of which the first field is + * a pointer to an AVClass struct + * @param[in] msg string containing an optional message, or NULL if no message + */ +void av_log_ask_for_sample(void *avc, const char *msg, ...); + +/** + * Register the hardware accelerator hwaccel. + */ +void av_register_hwaccel(AVHWAccel *hwaccel); + +/** + * If hwaccel is NULL, returns the first registered hardware accelerator, + * if hwaccel is non-NULL, returns the next registered hardware accelerator + * after hwaccel, or NULL if hwaccel is the last one. + */ +AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel); + + +/** + * Lock operation used by lockmgr + */ +enum AVLockOp { + AV_LOCK_CREATE, ///< Create a mutex + AV_LOCK_OBTAIN, ///< Lock the mutex + AV_LOCK_RELEASE, ///< Unlock the mutex + AV_LOCK_DESTROY, ///< Free mutex resources +}; + +/** + * Register a user provided lock manager supporting the operations + * specified by AVLockOp. mutex points to a (void *) where the + * lockmgr should store/get a pointer to a user allocated mutex. It's + * NULL upon AV_LOCK_CREATE and != NULL for all other ops. + * + * @param cb User defined callback. Note: Libav may invoke calls to this + * callback during the call to av_lockmgr_register(). + * Thus, the application must be prepared to handle that. + * If cb is set to NULL the lockmgr will be unregistered. + * Also note that during unregistration the previously registered + * lockmgr callback may also be invoked. + */ +int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); + +#endif /* AVCODEC_AVCODEC_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/avfft.h b/tizen/distrib/libav/x86_64/include/libavcodec/avfft.h new file mode 100644 index 0000000000..91fe2f4297 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/avfft.h @@ -0,0 +1,99 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_AVFFT_H +#define AVCODEC_AVFFT_H + +typedef float FFTSample; + +typedef struct FFTComplex { + FFTSample re, im; +} FFTComplex; + +typedef struct FFTContext FFTContext; + +/** + * Set up a complex FFT. + * @param nbits log2 of the length of the input array + * @param inverse if 0 perform the forward transform, if 1 perform the inverse + */ +FFTContext *av_fft_init(int nbits, int inverse); + +/** + * Do the permutation needed BEFORE calling ff_fft_calc(). + */ +void av_fft_permute(FFTContext *s, FFTComplex *z); + +/** + * Do a complex FFT with the parameters defined in av_fft_init(). The + * input data must be permuted before. No 1.0/sqrt(n) normalization is done. + */ +void av_fft_calc(FFTContext *s, FFTComplex *z); + +void av_fft_end(FFTContext *s); + +FFTContext *av_mdct_init(int nbits, int inverse, double scale); +void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_mdct_end(FFTContext *s); + +/* Real Discrete Fourier Transform */ + +enum RDFTransformType { + DFT_R2C, + IDFT_C2R, + IDFT_R2C, + DFT_C2R, +}; + +typedef struct RDFTContext RDFTContext; + +/** + * Set up a real FFT. + * @param nbits log2 of the length of the input array + * @param trans the type of transform + */ +RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); +void av_rdft_calc(RDFTContext *s, FFTSample *data); +void av_rdft_end(RDFTContext *s); + +/* Discrete Cosine Transform */ + +typedef struct DCTContext DCTContext; + +enum DCTTransformType { + DCT_II = 0, + DCT_III, + DCT_I, + DST_I, +}; + +/** + * Set up DCT. + * @param nbits size of the input array: + * (1 << nbits) for DCT-II, DCT-III and DST-I + * (1 << nbits) + 1 for DCT-I + * + * @note the first element of the input of DST-I is ignored + */ +DCTContext *av_dct_init(int nbits, enum DCTTransformType type); +void av_dct_calc(DCTContext *s, FFTSample *data); +void av_dct_end (DCTContext *s); + +#endif /* AVCODEC_AVFFT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/dxva2.h b/tizen/distrib/libav/x86_64/include/libavcodec/dxva2.h new file mode 100644 index 0000000000..5db5d0bc9f --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/dxva2.h @@ -0,0 +1,68 @@ +/* + * DXVA2 HW acceleration + * + * copyright (c) 2009 Laurent Aimar + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_DXVA_H +#define AVCODEC_DXVA_H + +#include + +#include + +/** + * This structure is used to provides the necessary configurations and data + * to the DXVA2 Libav HWAccel implementation. + * + * The application must make it available as AVCodecContext.hwaccel_context. + */ +struct dxva_context { + /** + * DXVA2 decoder object + */ + IDirectXVideoDecoder *decoder; + + /** + * DXVA2 configuration used to create the decoder + */ + const DXVA2_ConfigPictureDecode *cfg; + + /** + * The number of surface in the surface array + */ + unsigned surface_count; + + /** + * The array of Direct3D surfaces used to create the decoder + */ + LPDIRECT3DSURFACE9 *surface; + + /** + * A bit field configuring the workarounds needed for using the decoder + */ + uint64_t workaround; + + /** + * Private to the Libav AVHWAccel implementation + */ + unsigned report_id; +}; + +#endif /* AVCODEC_DXVA_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/opt.h b/tizen/distrib/libav/x86_64/include/libavcodec/opt.h new file mode 100644 index 0000000000..2380e74332 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/opt.h @@ -0,0 +1,34 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * This header is provided for compatibility only and will be removed + * on next major bump + */ + +#ifndef AVCODEC_OPT_H +#define AVCODEC_OPT_H + +#include "libavcodec/version.h" + +#if FF_API_OPT_H +#include "libavutil/opt.h" +#endif + +#endif /* AVCODEC_OPT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/vaapi.h b/tizen/distrib/libav/x86_64/include/libavcodec/vaapi.h new file mode 100644 index 0000000000..306e164b88 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/vaapi.h @@ -0,0 +1,167 @@ +/* + * Video Acceleration API (shared data between Libav and the video player) + * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 + * + * Copyright (C) 2008-2009 Splitted-Desktop Systems + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_VAAPI_H +#define AVCODEC_VAAPI_H + +#include + +/** + * \defgroup VAAPI_Decoding VA API Decoding + * \ingroup Decoder + * @{ + */ + +/** + * This structure is used to share data between the Libav library and + * the client video application. + * This shall be zero-allocated and available as + * AVCodecContext.hwaccel_context. All user members can be set once + * during initialization or through each AVCodecContext.get_buffer() + * function call. In any case, they must be valid prior to calling + * decoding functions. + */ +struct vaapi_context { + /** + * Window system dependent data + * + * - encoding: unused + * - decoding: Set by user + */ + void *display; + + /** + * Configuration ID + * + * - encoding: unused + * - decoding: Set by user + */ + uint32_t config_id; + + /** + * Context ID (video decode pipeline) + * + * - encoding: unused + * - decoding: Set by user + */ + uint32_t context_id; + + /** + * VAPictureParameterBuffer ID + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t pic_param_buf_id; + + /** + * VAIQMatrixBuffer ID + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t iq_matrix_buf_id; + + /** + * VABitPlaneBuffer ID (for VC-1 decoding) + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t bitplane_buf_id; + + /** + * Slice parameter/data buffer IDs + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t *slice_buf_ids; + + /** + * Number of effective slice buffer IDs to send to the HW + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int n_slice_buf_ids; + + /** + * Size of pre-allocated slice_buf_ids + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_buf_ids_alloc; + + /** + * Pointer to VASliceParameterBuffers + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + void *slice_params; + + /** + * Size of a VASliceParameterBuffer element + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_param_size; + + /** + * Size of pre-allocated slice_params + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_params_alloc; + + /** + * Number of slices currently filled in + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_count; + + /** + * Pointer to slice data buffer base + * - encoding: unused + * - decoding: Set by libavcodec + */ + const uint8_t *slice_data; + + /** + * Current size of slice data + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t slice_data_size; +}; + +/* @} */ + +#endif /* AVCODEC_VAAPI_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/vdpau.h b/tizen/distrib/libav/x86_64/include/libavcodec/vdpau.h new file mode 100644 index 0000000000..d06ba634fb --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/vdpau.h @@ -0,0 +1,88 @@ +/* + * The Video Decode and Presentation API for UNIX (VDPAU) is used for + * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. + * + * Copyright (C) 2008 NVIDIA + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_VDPAU_H +#define AVCODEC_VDPAU_H + +/** + * \defgroup Decoder VDPAU Decoder and Renderer + * + * VDPAU hardware acceleration has two modules + * - VDPAU decoding + * - VDPAU presentation + * + * The VDPAU decoding module parses all headers using Libav + * parsing mechanisms and uses VDPAU for the actual decoding. + * + * As per the current implementation, the actual decoding + * and rendering (API calls) are done as part of the VDPAU + * presentation (vo_vdpau.c) module. + * + * \defgroup VDPAU_Decoding VDPAU Decoding + * \ingroup Decoder + * @{ + */ + +#include +#include + +/** \brief The videoSurface is used for rendering. */ +#define FF_VDPAU_STATE_USED_FOR_RENDER 1 + +/** + * \brief The videoSurface is needed for reference/prediction. + * The codec manipulates this. + */ +#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2 + +/** + * \brief This structure is used as a callback between the Libav + * decoder (vd_) and presentation (vo_) module. + * This is used for defining a video frame containing surface, + * picture parameter, bitstream information etc which are passed + * between the Libav decoder and its clients. + */ +struct vdpau_render_state { + VdpVideoSurface surface; ///< Used as rendered surface, never changed. + + int state; ///< Holds FF_VDPAU_STATE_* values. + + /** picture parameter information for all supported codecs */ + union VdpPictureInfo { + VdpPictureInfoH264 h264; + VdpPictureInfoMPEG1Or2 mpeg; + VdpPictureInfoVC1 vc1; + VdpPictureInfoMPEG4Part2 mpeg4; + } info; + + /** Describe size/location of the compressed video data. + Set to 0 when freeing bitstream_buffers. */ + int bitstream_buffers_allocated; + int bitstream_buffers_used; + /** The user is responsible for freeing this buffer using av_freep(). */ + VdpBitstreamBuffer *bitstream_buffers; +}; + +/* @}*/ + +#endif /* AVCODEC_VDPAU_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavcodec/xvmc.h b/tizen/distrib/libav/x86_64/include/libavcodec/xvmc.h new file mode 100644 index 0000000000..1239015fcd --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavcodec/xvmc.h @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2003 Ivan Kalvachev + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_XVMC_H +#define AVCODEC_XVMC_H + +#include + +#include "avcodec.h" + +#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct + the number is 1337 speak for the letters IDCT MCo (motion compensation) */ + +struct xvmc_pix_fmt { + /** The field contains the special constant value AV_XVMC_ID. + It is used as a test that the application correctly uses the API, + and that there is no corruption caused by pixel routines. + - application - set during initialization + - libavcodec - unchanged + */ + int xvmc_id; + + /** Pointer to the block array allocated by XvMCCreateBlocks(). + The array has to be freed by XvMCDestroyBlocks(). + Each group of 64 values represents one data block of differential + pixel information (in MoCo mode) or coefficients for IDCT. + - application - set the pointer during initialization + - libavcodec - fills coefficients/pixel data into the array + */ + short* data_blocks; + + /** Pointer to the macroblock description array allocated by + XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks(). + - application - set the pointer during initialization + - libavcodec - fills description data into the array + */ + XvMCMacroBlock* mv_blocks; + + /** Number of macroblock descriptions that can be stored in the mv_blocks + array. + - application - set during initialization + - libavcodec - unchanged + */ + int allocated_mv_blocks; + + /** Number of blocks that can be stored at once in the data_blocks array. + - application - set during initialization + - libavcodec - unchanged + */ + int allocated_data_blocks; + + /** Indicate that the hardware would interpret data_blocks as IDCT + coefficients and perform IDCT on them. + - application - set during initialization + - libavcodec - unchanged + */ + int idct; + + /** In MoCo mode it indicates that intra macroblocks are assumed to be in + unsigned format; same as the XVMC_INTRA_UNSIGNED flag. + - application - set during initialization + - libavcodec - unchanged + */ + int unsigned_intra; + + /** Pointer to the surface allocated by XvMCCreateSurface(). + It has to be freed by XvMCDestroySurface() on application exit. + It identifies the frame and its state on the video hardware. + - application - set during initialization + - libavcodec - unchanged + */ + XvMCSurface* p_surface; + +/** Set by the decoder before calling ff_draw_horiz_band(), + needed by the XvMCRenderSurface function. */ +//@{ + /** Pointer to the surface used as past reference + - application - unchanged + - libavcodec - set + */ + XvMCSurface* p_past_surface; + + /** Pointer to the surface used as future reference + - application - unchanged + - libavcodec - set + */ + XvMCSurface* p_future_surface; + + /** top/bottom field or frame + - application - unchanged + - libavcodec - set + */ + unsigned int picture_structure; + + /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence + - application - unchanged + - libavcodec - set + */ + unsigned int flags; +//}@ + + /** Number of macroblock descriptions in the mv_blocks array + that have already been passed to the hardware. + - application - zeroes it on get_buffer(). + A successful ff_draw_horiz_band() may increment it + with filled_mb_block_num or zero both. + - libavcodec - unchanged + */ + int start_mv_blocks_num; + + /** Number of new macroblock descriptions in the mv_blocks array (after + start_mv_blocks_num) that are filled by libavcodec and have to be + passed to the hardware. + - application - zeroes it on get_buffer() or after successful + ff_draw_horiz_band(). + - libavcodec - increment with one of each stored MB + */ + int filled_mv_blocks_num; + + /** Number of the the next free data block; one data block consists of + 64 short values in the data_blocks array. + All blocks before this one have already been claimed by placing their + position into the corresponding block description structure field, + that are part of the mv_blocks array. + - application - zeroes it on get_buffer(). + A successful ff_draw_horiz_band() may zero it together + with start_mb_blocks_num. + - libavcodec - each decoded macroblock increases it by the number + of coded blocks it contains. + */ + int next_free_data_block_num; +}; + +#endif /* AVCODEC_XVMC_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavdevice/avdevice.h b/tizen/distrib/libav/x86_64/include/libavdevice/avdevice.h new file mode 100644 index 0000000000..d82b26fda6 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavdevice/avdevice.h @@ -0,0 +1,62 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVDEVICE_AVDEVICE_H +#define AVDEVICE_AVDEVICE_H + +#include "libavutil/avutil.h" + +#define LIBAVDEVICE_VERSION_MAJOR 53 +#define LIBAVDEVICE_VERSION_MINOR 0 +#define LIBAVDEVICE_VERSION_MICRO 0 + +#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ + LIBAVDEVICE_VERSION_MINOR, \ + LIBAVDEVICE_VERSION_MICRO) +#define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \ + LIBAVDEVICE_VERSION_MINOR, \ + LIBAVDEVICE_VERSION_MICRO) +#define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT + +#ifndef FF_API_V4L +#define FF_API_V4L (LIBAVDEVICE_VERSION_MAJOR < 54) +#endif + +/** + * Return the LIBAVDEVICE_VERSION_INT constant. + */ +unsigned avdevice_version(void); + +/** + * Return the libavdevice build-time configuration. + */ +const char *avdevice_configuration(void); + +/** + * Return the libavdevice license. + */ +const char *avdevice_license(void); + +/** + * Initialize libavdevice and register all the input and output devices. + * @warning This function is not thread safe. + */ +void avdevice_register_all(void); + +#endif /* AVDEVICE_AVDEVICE_H */ + diff --git a/tizen/distrib/libav/x86_64/include/libavfilter/avfilter.h b/tizen/distrib/libav/x86_64/include/libavfilter/avfilter.h new file mode 100644 index 0000000000..33e93e27fc --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavfilter/avfilter.h @@ -0,0 +1,862 @@ +/* + * filter layer + * Copyright (c) 2007 Bobby Bingham + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFILTER_AVFILTER_H +#define AVFILTER_AVFILTER_H + +#include "libavutil/avutil.h" +#include "libavutil/samplefmt.h" + +#define LIBAVFILTER_VERSION_MAJOR 2 +#define LIBAVFILTER_VERSION_MINOR 4 +#define LIBAVFILTER_VERSION_MICRO 0 + +#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ + LIBAVFILTER_VERSION_MINOR, \ + LIBAVFILTER_VERSION_MICRO) +#define LIBAVFILTER_VERSION AV_VERSION(LIBAVFILTER_VERSION_MAJOR, \ + LIBAVFILTER_VERSION_MINOR, \ + LIBAVFILTER_VERSION_MICRO) +#define LIBAVFILTER_BUILD LIBAVFILTER_VERSION_INT + +#include + +/** + * Return the LIBAVFILTER_VERSION_INT constant. + */ +unsigned avfilter_version(void); + +/** + * Return the libavfilter build-time configuration. + */ +const char *avfilter_configuration(void); + +/** + * Return the libavfilter license. + */ +const char *avfilter_license(void); + + +typedef struct AVFilterContext AVFilterContext; +typedef struct AVFilterLink AVFilterLink; +typedef struct AVFilterPad AVFilterPad; + +/** + * A reference-counted buffer data type used by the filter system. Filters + * should not store pointers to this structure directly, but instead use the + * AVFilterBufferRef structure below. + */ +typedef struct AVFilterBuffer { + uint8_t *data[8]; ///< buffer data for each plane/channel + int linesize[8]; ///< number of bytes per line + + unsigned refcount; ///< number of references to this buffer + + /** private data to be used by a custom free function */ + void *priv; + /** + * A pointer to the function to deallocate this buffer if the default + * function is not sufficient. This could, for example, add the memory + * back into a memory pool to be reused later without the overhead of + * reallocating it from scratch. + */ + void (*free)(struct AVFilterBuffer *buf); + + int format; ///< media format + int w, h; ///< width and height of the allocated buffer +} AVFilterBuffer; + +#define AV_PERM_READ 0x01 ///< can read from the buffer +#define AV_PERM_WRITE 0x02 ///< can write to the buffer +#define AV_PERM_PRESERVE 0x04 ///< nobody else can overwrite the buffer +#define AV_PERM_REUSE 0x08 ///< can output the buffer multiple times, with the same contents each time +#define AV_PERM_REUSE2 0x10 ///< can output the buffer multiple times, modified each time +#define AV_PERM_NEG_LINESIZES 0x20 ///< the buffer requested can have negative linesizes + +/** + * Audio specific properties in a reference to an AVFilterBuffer. Since + * AVFilterBufferRef is common to different media formats, audio specific + * per reference properties must be separated out. + */ +typedef struct AVFilterBufferRefAudioProps { + int64_t channel_layout; ///< channel layout of audio buffer + int nb_samples; ///< number of audio samples + int size; ///< audio buffer size + uint32_t sample_rate; ///< audio buffer sample rate + int planar; ///< audio buffer - planar or packed +} AVFilterBufferRefAudioProps; + +/** + * Video specific properties in a reference to an AVFilterBuffer. Since + * AVFilterBufferRef is common to different media formats, video specific + * per reference properties must be separated out. + */ +typedef struct AVFilterBufferRefVideoProps { + int w; ///< image width + int h; ///< image height + AVRational pixel_aspect; ///< pixel aspect ratio + int interlaced; ///< is frame interlaced + int top_field_first; ///< field order + enum AVPictureType pict_type; ///< picture type of the frame + int key_frame; ///< 1 -> keyframe, 0-> not +} AVFilterBufferRefVideoProps; + +/** + * A reference to an AVFilterBuffer. Since filters can manipulate the origin of + * a buffer to, for example, crop image without any memcpy, the buffer origin + * and dimensions are per-reference properties. Linesize is also useful for + * image flipping, frame to field filters, etc, and so is also per-reference. + * + * TODO: add anything necessary for frame reordering + */ +typedef struct AVFilterBufferRef { + AVFilterBuffer *buf; ///< the buffer that this is a reference to + uint8_t *data[8]; ///< picture/audio data for each plane + int linesize[8]; ///< number of bytes per line + int format; ///< media format + + /** + * presentation timestamp. The time unit may change during + * filtering, as it is specified in the link and the filter code + * may need to rescale the PTS accordingly. + */ + int64_t pts; + int64_t pos; ///< byte position in stream, -1 if unknown + + int perms; ///< permissions, see the AV_PERM_* flags + + enum AVMediaType type; ///< media type of buffer data + AVFilterBufferRefVideoProps *video; ///< video buffer specific properties + AVFilterBufferRefAudioProps *audio; ///< audio buffer specific properties +} AVFilterBufferRef; + +/** + * Copy properties of src to dst, without copying the actual data + */ +static inline void avfilter_copy_buffer_ref_props(AVFilterBufferRef *dst, AVFilterBufferRef *src) +{ + // copy common properties + dst->pts = src->pts; + dst->pos = src->pos; + + switch (src->type) { + case AVMEDIA_TYPE_VIDEO: *dst->video = *src->video; break; + case AVMEDIA_TYPE_AUDIO: *dst->audio = *src->audio; break; + } +} + +/** + * Add a new reference to a buffer. + * + * @param ref an existing reference to the buffer + * @param pmask a bitmask containing the allowable permissions in the new + * reference + * @return a new reference to the buffer with the same properties as the + * old, excluding any permissions denied by pmask + */ +AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask); + +/** + * Remove a reference to a buffer. If this is the last reference to the + * buffer, the buffer itself is also automatically freed. + * + * @param ref reference to the buffer, may be NULL + */ +void avfilter_unref_buffer(AVFilterBufferRef *ref); + +/** + * A list of supported formats for one end of a filter link. This is used + * during the format negotiation process to try to pick the best format to + * use to minimize the number of necessary conversions. Each filter gives a + * list of the formats supported by each input and output pad. The list + * given for each pad need not be distinct - they may be references to the + * same list of formats, as is often the case when a filter supports multiple + * formats, but will always output the same format as it is given in input. + * + * In this way, a list of possible input formats and a list of possible + * output formats are associated with each link. When a set of formats is + * negotiated over a link, the input and output lists are merged to form a + * new list containing only the common elements of each list. In the case + * that there were no common elements, a format conversion is necessary. + * Otherwise, the lists are merged, and all other links which reference + * either of the format lists involved in the merge are also affected. + * + * For example, consider the filter chain: + * filter (a) --> (b) filter (b) --> (c) filter + * + * where the letters in parenthesis indicate a list of formats supported on + * the input or output of the link. Suppose the lists are as follows: + * (a) = {A, B} + * (b) = {A, B, C} + * (c) = {B, C} + * + * First, the first link's lists are merged, yielding: + * filter (a) --> (a) filter (a) --> (c) filter + * + * Notice that format list (b) now refers to the same list as filter list (a). + * Next, the lists for the second link are merged, yielding: + * filter (a) --> (a) filter (a) --> (a) filter + * + * where (a) = {B}. + * + * Unfortunately, when the format lists at the two ends of a link are merged, + * we must ensure that all links which reference either pre-merge format list + * get updated as well. Therefore, we have the format list structure store a + * pointer to each of the pointers to itself. + */ +typedef struct AVFilterFormats { + unsigned format_count; ///< number of formats + int *formats; ///< list of media formats + + unsigned refcount; ///< number of references to this list + struct AVFilterFormats ***refs; ///< references to this list +} AVFilterFormats; + +/** + * Create a list of supported formats. This is intended for use in + * AVFilter->query_formats(). + * + * @param fmts list of media formats, terminated by -1 + * @return the format list, with no existing references + */ +AVFilterFormats *avfilter_make_format_list(const int *fmts); + +/** + * Add fmt to the list of media formats contained in *avff. + * If *avff is NULL the function allocates the filter formats struct + * and puts its pointer in *avff. + * + * @return a non negative value in case of success, or a negative + * value corresponding to an AVERROR code in case of error + */ +int avfilter_add_format(AVFilterFormats **avff, int fmt); + +/** + * Return a list of all formats supported by Libav for the given media type. + */ +AVFilterFormats *avfilter_all_formats(enum AVMediaType type); + +/** + * Return a format list which contains the intersection of the formats of + * a and b. Also, all the references of a, all the references of b, and + * a and b themselves will be deallocated. + * + * If a and b do not share any common formats, neither is modified, and NULL + * is returned. + */ +AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b); + +/** + * Add *ref as a new reference to formats. + * That is the pointers will point like in the ascii art below: + * ________ + * |formats |<--------. + * | ____ | ____|___________________ + * | |refs| | | __|_ + * | |* * | | | | | | AVFilterLink + * | |* *--------->|*ref| + * | |____| | | |____| + * |________| |________________________ + */ +void avfilter_formats_ref(AVFilterFormats *formats, AVFilterFormats **ref); + +/** + * If *ref is non-NULL, remove *ref as a reference to the format list + * it currently points to, deallocates that list if this was the last + * reference, and sets *ref to NULL. + * + * Before After + * ________ ________ NULL + * |formats |<--------. |formats | ^ + * | ____ | ____|________________ | ____ | ____|________________ + * | |refs| | | __|_ | |refs| | | __|_ + * | |* * | | | | | | AVFilterLink | |* * | | | | | | AVFilterLink + * | |* *--------->|*ref| | |* | | | |*ref| + * | |____| | | |____| | |____| | | |____| + * |________| |_____________________ |________| |_____________________ + */ +void avfilter_formats_unref(AVFilterFormats **ref); + +/** + * + * Before After + * ________ ________ + * |formats |<---------. |formats |<---------. + * | ____ | ___|___ | ____ | ___|___ + * | |refs| | | | | | |refs| | | | | NULL + * | |* *--------->|*oldref| | |* *--------->|*newref| ^ + * | |* * | | |_______| | |* * | | |_______| ___|___ + * | |____| | | |____| | | | | + * |________| |________| |*oldref| + * |_______| + */ +void avfilter_formats_changeref(AVFilterFormats **oldref, + AVFilterFormats **newref); + +/** + * A filter pad used for either input or output. + */ +struct AVFilterPad { + /** + * Pad name. The name is unique among inputs and among outputs, but an + * input may have the same name as an output. This may be NULL if this + * pad has no need to ever be referenced by name. + */ + const char *name; + + /** + * AVFilterPad type. Only video supported now, hopefully someone will + * add audio in the future. + */ + enum AVMediaType type; + + /** + * Minimum required permissions on incoming buffers. Any buffer with + * insufficient permissions will be automatically copied by the filter + * system to a new buffer which provides the needed access permissions. + * + * Input pads only. + */ + int min_perms; + + /** + * Permissions which are not accepted on incoming buffers. Any buffer + * which has any of these permissions set will be automatically copied + * by the filter system to a new buffer which does not have those + * permissions. This can be used to easily disallow buffers with + * AV_PERM_REUSE. + * + * Input pads only. + */ + int rej_perms; + + /** + * Callback called before passing the first slice of a new frame. If + * NULL, the filter layer will default to storing a reference to the + * picture inside the link structure. + * + * Input video pads only. + */ + void (*start_frame)(AVFilterLink *link, AVFilterBufferRef *picref); + + /** + * Callback function to get a video buffer. If NULL, the filter system will + * use avfilter_default_get_video_buffer(). + * + * Input video pads only. + */ + AVFilterBufferRef *(*get_video_buffer)(AVFilterLink *link, int perms, int w, int h); + + /** + * Callback function to get an audio buffer. If NULL, the filter system will + * use avfilter_default_get_audio_buffer(). + * + * Input audio pads only. + */ + AVFilterBufferRef *(*get_audio_buffer)(AVFilterLink *link, int perms, + enum AVSampleFormat sample_fmt, int size, + int64_t channel_layout, int planar); + + /** + * Callback called after the slices of a frame are completely sent. If + * NULL, the filter layer will default to releasing the reference stored + * in the link structure during start_frame(). + * + * Input video pads only. + */ + void (*end_frame)(AVFilterLink *link); + + /** + * Slice drawing callback. This is where a filter receives video data + * and should do its processing. + * + * Input video pads only. + */ + void (*draw_slice)(AVFilterLink *link, int y, int height, int slice_dir); + + /** + * Samples filtering callback. This is where a filter receives audio data + * and should do its processing. + * + * Input audio pads only. + */ + void (*filter_samples)(AVFilterLink *link, AVFilterBufferRef *samplesref); + + /** + * Frame poll callback. This returns the number of immediately available + * samples. It should return a positive value if the next request_frame() + * is guaranteed to return one frame (with no delay). + * + * Defaults to just calling the source poll_frame() method. + * + * Output video pads only. + */ + int (*poll_frame)(AVFilterLink *link); + + /** + * Frame request callback. A call to this should result in at least one + * frame being output over the given link. This should return zero on + * success, and another value on error. + * + * Output video pads only. + */ + int (*request_frame)(AVFilterLink *link); + + /** + * Link configuration callback. + * + * For output pads, this should set the link properties such as + * width/height. This should NOT set the format property - that is + * negotiated between filters by the filter system using the + * query_formats() callback before this function is called. + * + * For input pads, this should check the properties of the link, and update + * the filter's internal state as necessary. + * + * For both input and output filters, this should return zero on success, + * and another value on error. + */ + int (*config_props)(AVFilterLink *link); +}; + +/** default handler for start_frame() for video inputs */ +void avfilter_default_start_frame(AVFilterLink *link, AVFilterBufferRef *picref); + +/** default handler for draw_slice() for video inputs */ +void avfilter_default_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); + +/** default handler for end_frame() for video inputs */ +void avfilter_default_end_frame(AVFilterLink *link); + +/** default handler for filter_samples() for audio inputs */ +void avfilter_default_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref); + +/** default handler for config_props() for audio/video outputs */ +int avfilter_default_config_output_link(AVFilterLink *link); + +/** default handler for config_props() for audio/video inputs */ +int avfilter_default_config_input_link (AVFilterLink *link); + +/** default handler for get_video_buffer() for video inputs */ +AVFilterBufferRef *avfilter_default_get_video_buffer(AVFilterLink *link, + int perms, int w, int h); + +/** default handler for get_audio_buffer() for audio inputs */ +AVFilterBufferRef *avfilter_default_get_audio_buffer(AVFilterLink *link, int perms, + enum AVSampleFormat sample_fmt, int size, + int64_t channel_layout, int planar); + +/** + * A helper for query_formats() which sets all links to the same list of + * formats. If there are no links hooked to this filter, the list of formats is + * freed. + */ +void avfilter_set_common_formats(AVFilterContext *ctx, AVFilterFormats *formats); + +/** Default handler for query_formats() */ +int avfilter_default_query_formats(AVFilterContext *ctx); + +/** start_frame() handler for filters which simply pass video along */ +void avfilter_null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref); + +/** draw_slice() handler for filters which simply pass video along */ +void avfilter_null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); + +/** end_frame() handler for filters which simply pass video along */ +void avfilter_null_end_frame(AVFilterLink *link); + +/** filter_samples() handler for filters which simply pass audio along */ +void avfilter_null_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref); + +/** get_video_buffer() handler for filters which simply pass video along */ +AVFilterBufferRef *avfilter_null_get_video_buffer(AVFilterLink *link, + int perms, int w, int h); + +/** get_audio_buffer() handler for filters which simply pass audio along */ +AVFilterBufferRef *avfilter_null_get_audio_buffer(AVFilterLink *link, int perms, + enum AVSampleFormat sample_fmt, int size, + int64_t channel_layout, int planar); + +/** + * Filter definition. This defines the pads a filter contains, and all the + * callback functions used to interact with the filter. + */ +typedef struct AVFilter { + const char *name; ///< filter name + + int priv_size; ///< size of private data to allocate for the filter + + /** + * Filter initialization function. Args contains the user-supplied + * parameters. FIXME: maybe an AVOption-based system would be better? + * opaque is data provided by the code requesting creation of the filter, + * and is used to pass data to the filter. + */ + int (*init)(AVFilterContext *ctx, const char *args, void *opaque); + + /** + * Filter uninitialization function. Should deallocate any memory held + * by the filter, release any buffer references, etc. This does not need + * to deallocate the AVFilterContext->priv memory itself. + */ + void (*uninit)(AVFilterContext *ctx); + + /** + * Queries formats supported by the filter and its pads, and sets the + * in_formats for links connected to its output pads, and out_formats + * for links connected to its input pads. + * + * @return zero on success, a negative value corresponding to an + * AVERROR code otherwise + */ + int (*query_formats)(AVFilterContext *); + + const AVFilterPad *inputs; ///< NULL terminated list of inputs. NULL if none + const AVFilterPad *outputs; ///< NULL terminated list of outputs. NULL if none + + /** + * A description for the filter. You should use the + * NULL_IF_CONFIG_SMALL() macro to define it. + */ + const char *description; +} AVFilter; + +/** An instance of a filter */ +struct AVFilterContext { + const AVClass *av_class; ///< needed for av_log() + + AVFilter *filter; ///< the AVFilter of which this is an instance + + char *name; ///< name of this filter instance + + unsigned input_count; ///< number of input pads + AVFilterPad *input_pads; ///< array of input pads + AVFilterLink **inputs; ///< array of pointers to input links + + unsigned output_count; ///< number of output pads + AVFilterPad *output_pads; ///< array of output pads + AVFilterLink **outputs; ///< array of pointers to output links + + void *priv; ///< private data for use by the filter +}; + +/** + * A link between two filters. This contains pointers to the source and + * destination filters between which this link exists, and the indexes of + * the pads involved. In addition, this link also contains the parameters + * which have been negotiated and agreed upon between the filter, such as + * image dimensions, format, etc. + */ +struct AVFilterLink { + AVFilterContext *src; ///< source filter + AVFilterPad *srcpad; ///< output pad on the source filter + + AVFilterContext *dst; ///< dest filter + AVFilterPad *dstpad; ///< input pad on the dest filter + + /** stage of the initialization of the link properties (dimensions, etc) */ + enum { + AVLINK_UNINIT = 0, ///< not started + AVLINK_STARTINIT, ///< started, but incomplete + AVLINK_INIT ///< complete + } init_state; + + enum AVMediaType type; ///< filter media type + + /* These parameters apply only to video */ + int w; ///< agreed upon image width + int h; ///< agreed upon image height + AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio + /* These two parameters apply only to audio */ + int64_t channel_layout; ///< channel layout of current buffer (see libavutil/audioconvert.h) + int64_t sample_rate; ///< samples per second + + int format; ///< agreed upon media format + + /** + * Lists of formats supported by the input and output filters respectively. + * These lists are used for negotiating the format to actually be used, + * which will be loaded into the format member, above, when chosen. + */ + AVFilterFormats *in_formats; + AVFilterFormats *out_formats; + + /** + * The buffer reference currently being sent across the link by the source + * filter. This is used internally by the filter system to allow + * automatic copying of buffers which do not have sufficient permissions + * for the destination. This should not be accessed directly by the + * filters. + */ + AVFilterBufferRef *src_buf; + + AVFilterBufferRef *cur_buf; + AVFilterBufferRef *out_buf; + + /** + * Define the time base used by the PTS of the frames/samples + * which will pass through this link. + * During the configuration stage, each filter is supposed to + * change only the output timebase, while the timebase of the + * input link is assumed to be an unchangeable property. + */ + AVRational time_base; +}; + +/** + * Link two filters together. + * + * @param src the source filter + * @param srcpad index of the output pad on the source filter + * @param dst the destination filter + * @param dstpad index of the input pad on the destination filter + * @return zero on success + */ +int avfilter_link(AVFilterContext *src, unsigned srcpad, + AVFilterContext *dst, unsigned dstpad); + +/** + * Negotiate the media format, dimensions, etc of all inputs to a filter. + * + * @param filter the filter to negotiate the properties for its inputs + * @return zero on successful negotiation + */ +int avfilter_config_links(AVFilterContext *filter); + +/** + * Request a picture buffer with a specific set of permissions. + * + * @param link the output link to the filter from which the buffer will + * be requested + * @param perms the required access permissions + * @param w the minimum width of the buffer to allocate + * @param h the minimum height of the buffer to allocate + * @return A reference to the buffer. This must be unreferenced with + * avfilter_unref_buffer when you are finished with it. + */ +AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, + int w, int h); + +/** + * Create a buffer reference wrapped around an already allocated image + * buffer. + * + * @param data pointers to the planes of the image to reference + * @param linesize linesizes for the planes of the image to reference + * @param perms the required access permissions + * @param w the width of the image specified by the data and linesize arrays + * @param h the height of the image specified by the data and linesize arrays + * @param format the pixel format of the image specified by the data and linesize arrays + */ +AVFilterBufferRef * +avfilter_get_video_buffer_ref_from_arrays(uint8_t *data[4], int linesize[4], int perms, + int w, int h, enum PixelFormat format); + +/** + * Request an audio samples buffer with a specific set of permissions. + * + * @param link the output link to the filter from which the buffer will + * be requested + * @param perms the required access permissions + * @param sample_fmt the format of each sample in the buffer to allocate + * @param size the buffer size in bytes + * @param channel_layout the number and type of channels per sample in the buffer to allocate + * @param planar audio data layout - planar or packed + * @return A reference to the samples. This must be unreferenced with + * avfilter_unref_buffer when you are finished with it. + */ +AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms, + enum AVSampleFormat sample_fmt, int size, + int64_t channel_layout, int planar); + +/** + * Request an input frame from the filter at the other end of the link. + * + * @param link the input link + * @return zero on success + */ +int avfilter_request_frame(AVFilterLink *link); + +/** + * Poll a frame from the filter chain. + * + * @param link the input link + * @return the number of immediately available frames, a negative + * number in case of error + */ +int avfilter_poll_frame(AVFilterLink *link); + +/** + * Notifie the next filter of the start of a frame. + * + * @param link the output link the frame will be sent over + * @param picref A reference to the frame about to be sent. The data for this + * frame need only be valid once draw_slice() is called for that + * portion. The receiving filter will free this reference when + * it no longer needs it. + */ +void avfilter_start_frame(AVFilterLink *link, AVFilterBufferRef *picref); + +/** + * Notifie the next filter that the current frame has finished. + * + * @param link the output link the frame was sent over + */ +void avfilter_end_frame(AVFilterLink *link); + +/** + * Send a slice to the next filter. + * + * Slices have to be provided in sequential order, either in + * top-bottom or bottom-top order. If slices are provided in + * non-sequential order the behavior of the function is undefined. + * + * @param link the output link over which the frame is being sent + * @param y offset in pixels from the top of the image for this slice + * @param h height of this slice in pixels + * @param slice_dir the assumed direction for sending slices, + * from the top slice to the bottom slice if the value is 1, + * from the bottom slice to the top slice if the value is -1, + * for other values the behavior of the function is undefined. + */ +void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir); + +/** + * Send a buffer of audio samples to the next filter. + * + * @param link the output link over which the audio samples are being sent + * @param samplesref a reference to the buffer of audio samples being sent. The + * receiving filter will free this reference when it no longer + * needs it or pass it on to the next filter. + */ +void avfilter_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref); + +/** Initialize the filter system. Register all builtin filters. */ +void avfilter_register_all(void); + +/** Uninitialize the filter system. Unregister all filters. */ +void avfilter_uninit(void); + +/** + * Register a filter. This is only needed if you plan to use + * avfilter_get_by_name later to lookup the AVFilter structure by name. A + * filter can still by instantiated with avfilter_open even if it is not + * registered. + * + * @param filter the filter to register + * @return 0 if the registration was succesfull, a negative value + * otherwise + */ +int avfilter_register(AVFilter *filter); + +/** + * Get a filter definition matching the given name. + * + * @param name the filter name to find + * @return the filter definition, if any matching one is registered. + * NULL if none found. + */ +AVFilter *avfilter_get_by_name(const char *name); + +/** + * If filter is NULL, returns a pointer to the first registered filter pointer, + * if filter is non-NULL, returns the next pointer after filter. + * If the returned pointer points to NULL, the last registered filter + * was already reached. + */ +AVFilter **av_filter_next(AVFilter **filter); + +/** + * Create a filter instance. + * + * @param filter_ctx put here a pointer to the created filter context + * on success, NULL on failure + * @param filter the filter to create an instance of + * @param inst_name Name to give to the new instance. Can be NULL for none. + * @return >= 0 in case of success, a negative error code otherwise + */ +int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name); + +/** + * Initialize a filter. + * + * @param filter the filter to initialize + * @param args A string of parameters to use when initializing the filter. + * The format and meaning of this string varies by filter. + * @param opaque Any extra non-string data needed by the filter. The meaning + * of this parameter varies by filter. + * @return zero on success + */ +int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque); + +/** + * Free a filter context. + * + * @param filter the filter to free + */ +void avfilter_free(AVFilterContext *filter); + +/** + * Insert a filter in the middle of an existing link. + * + * @param link the link into which the filter should be inserted + * @param filt the filter to be inserted + * @param filt_srcpad_idx the input pad on the filter to connect + * @param filt_dstpad_idx the output pad on the filter to connect + * @return zero on success + */ +int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt, + unsigned filt_srcpad_idx, unsigned filt_dstpad_idx); + +/** + * Insert a new pad. + * + * @param idx Insertion point. Pad is inserted at the end if this point + * is beyond the end of the list of pads. + * @param count Pointer to the number of pads in the list + * @param padidx_off Offset within an AVFilterLink structure to the element + * to increment when inserting a new pad causes link + * numbering to change + * @param pads Pointer to the pointer to the beginning of the list of pads + * @param links Pointer to the pointer to the beginning of the list of links + * @param newpad The new pad to add. A copy is made when adding. + */ +void avfilter_insert_pad(unsigned idx, unsigned *count, size_t padidx_off, + AVFilterPad **pads, AVFilterLink ***links, + AVFilterPad *newpad); + +/** Insert a new input pad for the filter. */ +static inline void avfilter_insert_inpad(AVFilterContext *f, unsigned index, + AVFilterPad *p) +{ + avfilter_insert_pad(index, &f->input_count, offsetof(AVFilterLink, dstpad), + &f->input_pads, &f->inputs, p); +} + +/** Insert a new output pad for the filter. */ +static inline void avfilter_insert_outpad(AVFilterContext *f, unsigned index, + AVFilterPad *p) +{ + avfilter_insert_pad(index, &f->output_count, offsetof(AVFilterLink, srcpad), + &f->output_pads, &f->outputs, p); +} + +#endif /* AVFILTER_AVFILTER_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavfilter/avfiltergraph.h b/tizen/distrib/libav/x86_64/include/libavfilter/avfiltergraph.h new file mode 100644 index 0000000000..a0f6b2e01f --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavfilter/avfiltergraph.h @@ -0,0 +1,123 @@ +/* + * Filter graphs + * copyright (c) 2007 Bobby Bingham + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFILTER_AVFILTERGRAPH_H +#define AVFILTER_AVFILTERGRAPH_H + +#include "avfilter.h" + +typedef struct AVFilterGraph { + unsigned filter_count; + AVFilterContext **filters; + + char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters +} AVFilterGraph; + +/** + * Allocate a filter graph. + */ +AVFilterGraph *avfilter_graph_alloc(void); + +/** + * Get a filter instance with name name from graph. + * + * @return the pointer to the found filter instance or NULL if it + * cannot be found. + */ +AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, char *name); + +/** + * Add an existing filter instance to a filter graph. + * + * @param graphctx the filter graph + * @param filter the filter to be added + */ +int avfilter_graph_add_filter(AVFilterGraph *graphctx, AVFilterContext *filter); + +/** + * Create and add a filter instance into an existing graph. + * The filter instance is created from the filter filt and inited + * with the parameters args and opaque. + * + * In case of success put in *filt_ctx the pointer to the created + * filter instance, otherwise set *filt_ctx to NULL. + * + * @param name the instance name to give to the created filter instance + * @param graph_ctx the filter graph + * @return a negative AVERROR error code in case of failure, a non + * negative value otherwise + */ +int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt, + const char *name, const char *args, void *opaque, + AVFilterGraph *graph_ctx); + +/** + * Check validity and configure all the links and formats in the graph. + * + * @param graphctx the filter graph + * @param log_ctx context used for logging + * @return 0 in case of success, a negative AVERROR code otherwise + */ +int avfilter_graph_config(AVFilterGraph *graphctx, AVClass *log_ctx); + +/** + * Free a graph, destroy its links, and set *graph to NULL. + * If *graph is NULL, do nothing. + */ +void avfilter_graph_free(AVFilterGraph **graph); + +/** + * A linked-list of the inputs/outputs of the filter chain. + * + * This is mainly useful for avfilter_graph_parse(), since this + * function may accept a description of a graph with not connected + * input/output pads. This struct specifies, per each not connected + * pad contained in the graph, the filter context and the pad index + * required for establishing a link. + */ +typedef struct AVFilterInOut { + /** unique name for this input/output in the list */ + char *name; + + /** filter context associated to this input/output */ + AVFilterContext *filter_ctx; + + /** index of the filt_ctx pad to use for linking */ + int pad_idx; + + /** next input/input in the list, NULL if this is the last */ + struct AVFilterInOut *next; +} AVFilterInOut; + +/** + * Add a graph described by a string to a graph. + * + * @param graph the filter graph where to link the parsed graph context + * @param filters string to be parsed + * @param inputs linked list to the inputs of the graph + * @param outputs linked list to the outputs of the graph + * @return zero on success, a negative AVERROR code on error + */ +int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, + AVFilterInOut *inputs, AVFilterInOut *outputs, + AVClass *log_ctx); + +#endif /* AVFILTER_AVFILTERGRAPH_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavformat/avformat.h b/tizen/distrib/libav/x86_64/include/libavformat/avformat.h new file mode 100644 index 0000000000..8561a50c01 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavformat/avformat.h @@ -0,0 +1,1544 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_AVFORMAT_H +#define AVFORMAT_AVFORMAT_H + + +/** + * Return the LIBAVFORMAT_VERSION_INT constant. + */ +unsigned avformat_version(void); + +/** + * Return the libavformat build-time configuration. + */ +const char *avformat_configuration(void); + +/** + * Return the libavformat license. + */ +const char *avformat_license(void); + +#include +#include /* FILE */ +#include "libavcodec/avcodec.h" +#include "libavutil/dict.h" + +#include "avio.h" +#include "libavformat/version.h" + +struct AVFormatContext; + + +/** + * @defgroup metadata_api Public Metadata API + * @{ + * The metadata API allows libavformat to export metadata tags to a client + * application using a sequence of key/value pairs. Like all strings in Libav, + * metadata must be stored as UTF-8 encoded Unicode. Note that metadata + * exported by demuxers isn't checked to be valid UTF-8 in most cases. + * Important concepts to keep in mind: + * - Keys are unique; there can never be 2 tags with the same key. This is + * also meant semantically, i.e., a demuxer should not knowingly produce + * several keys that are literally different but semantically identical. + * E.g., key=Author5, key=Author6. In this example, all authors must be + * placed in the same tag. + * - Metadata is flat, not hierarchical; there are no subtags. If you + * want to store, e.g., the email address of the child of producer Alice + * and actor Bob, that could have key=alice_and_bobs_childs_email_address. + * - Several modifiers can be applied to the tag name. This is done by + * appending a dash character ('-') and the modifier name in the order + * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. + * - language -- a tag whose value is localized for a particular language + * is appended with the ISO 639-2/B 3-letter language code. + * For example: Author-ger=Michael, Author-eng=Mike + * The original/default language is in the unqualified "Author" tag. + * A demuxer should set a default if it sets any translated tag. + * - sorting -- a modified version of a tag that should be used for + * sorting will have '-sort' appended. E.g. artist="The Beatles", + * artist-sort="Beatles, The". + * + * - Demuxers attempt to export metadata in a generic format, however tags + * with no generic equivalents are left as they are stored in the container. + * Follows a list of generic tag names: + * + @verbatim + album -- name of the set this work belongs to + album_artist -- main creator of the set/album, if different from artist. + e.g. "Various Artists" for compilation albums. + artist -- main creator of the work + comment -- any additional description of the file. + composer -- who composed the work, if different from artist. + copyright -- name of copyright holder. + creation_time-- date when the file was created, preferably in ISO 8601. + date -- date when the work was created, preferably in ISO 8601. + disc -- number of a subset, e.g. disc in a multi-disc collection. + encoder -- name/settings of the software/hardware that produced the file. + encoded_by -- person/group who created the file. + filename -- original name of the file. + genre -- . + language -- main language in which the work is performed, preferably + in ISO 639-2 format. Multiple languages can be specified by + separating them with commas. + performer -- artist who performed the work, if different from artist. + E.g for "Also sprach Zarathustra", artist would be "Richard + Strauss" and performer "London Philharmonic Orchestra". + publisher -- name of the label/publisher. + service_name -- name of the service in broadcasting (channel name). + service_provider -- name of the service provider in broadcasting. + title -- name of the work. + track -- number of this work in the set, can be in form current/total. + variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of + @endverbatim + * + * Look in the examples section for an application example how to use the Metadata API. + * + * @} + */ + +#if FF_API_OLD_METADATA2 +/** + * @defgroup old_metadata Old metadata API + * The following functions are deprecated, use + * their equivalents from libavutil/dict.h instead. + * @{ + */ + +#define AV_METADATA_MATCH_CASE AV_DICT_MATCH_CASE +#define AV_METADATA_IGNORE_SUFFIX AV_DICT_IGNORE_SUFFIX +#define AV_METADATA_DONT_STRDUP_KEY AV_DICT_DONT_STRDUP_KEY +#define AV_METADATA_DONT_STRDUP_VAL AV_DICT_DONT_STRDUP_VAL +#define AV_METADATA_DONT_OVERWRITE AV_DICT_DONT_OVERWRITE + +typedef attribute_deprecated AVDictionary AVMetadata; +typedef attribute_deprecated AVDictionaryEntry AVMetadataTag; + +typedef struct AVMetadataConv AVMetadataConv; + +/** + * Get a metadata element with matching key. + * + * @param prev Set to the previous matching element to find the next. + * If set to NULL the first matching element is returned. + * @param flags Allows case as well as suffix-insensitive comparisons. + * @return Found tag or NULL, changing key or value leads to undefined behavior. + */ +attribute_deprecated AVDictionaryEntry * +av_metadata_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags); + +/** + * Set the given tag in *pm, overwriting an existing tag. + * + * @param pm pointer to a pointer to a metadata struct. If *pm is NULL + * a metadata struct is allocated and put in *pm. + * @param key tag key to add to *pm (will be av_strduped depending on flags) + * @param value tag value to add to *pm (will be av_strduped depending on flags). + * Passing a NULL value will cause an existing tag to be deleted. + * @return >= 0 on success otherwise an error code <0 + */ +attribute_deprecated int av_metadata_set2(AVDictionary **pm, const char *key, const char *value, int flags); + +/** + * This function is provided for compatibility reason and currently does nothing. + */ +attribute_deprecated void av_metadata_conv(struct AVFormatContext *ctx, const AVMetadataConv *d_conv, + const AVMetadataConv *s_conv); + +/** + * Copy metadata from one AVDictionary struct into another. + * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + * this function will allocate a struct for you and put it in *dst + * @param src pointer to source AVDictionary struct + * @param flags flags to use when setting metadata in *dst + * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + */ +attribute_deprecated void av_metadata_copy(AVDictionary **dst, AVDictionary *src, int flags); + +/** + * Free all the memory allocated for an AVDictionary struct. + */ +attribute_deprecated void av_metadata_free(AVDictionary **m); +/** + * @} + */ +#endif + + +/* packet functions */ + + +/** + * Allocate and read the payload of a packet and initialize its + * fields with default values. + * + * @param pkt packet + * @param size desired payload size + * @return >0 (read size) if OK, AVERROR_xxx otherwise + */ +int av_get_packet(AVIOContext *s, AVPacket *pkt, int size); + + +/** + * Read data and append it to the current content of the AVPacket. + * If pkt->size is 0 this is identical to av_get_packet. + * Note that this uses av_grow_packet and thus involves a realloc + * which is inefficient. Thus this function should only be used + * when there is no reasonable way to know (an upper bound of) + * the final size. + * + * @param pkt packet + * @param size amount of data to read + * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data + * will not be lost even if an error occurs. + */ +int av_append_packet(AVIOContext *s, AVPacket *pkt, int size); + +/*************************************************/ +/* fractional numbers for exact pts handling */ + +/** + * The exact value of the fractional number is: 'val + num / den'. + * num is assumed to be 0 <= num < den. + */ +typedef struct AVFrac { + int64_t val, num, den; +} AVFrac; + +/*************************************************/ +/* input/output formats */ + +struct AVCodecTag; + +/** + * This structure contains the data a format has to probe a file. + */ +typedef struct AVProbeData { + const char *filename; + unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */ + int buf_size; /**< Size of buf except extra allocated bytes */ +} AVProbeData; + +#define AVPROBE_SCORE_MAX 100 ///< maximum score, half of that is used for file-extension-based detection +#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer + +typedef struct AVFormatParameters { +#if FF_API_FORMAT_PARAMETERS + attribute_deprecated AVRational time_base; + attribute_deprecated int sample_rate; + attribute_deprecated int channels; + attribute_deprecated int width; + attribute_deprecated int height; + attribute_deprecated enum PixelFormat pix_fmt; + attribute_deprecated int channel; /**< Used to select DV channel. */ + attribute_deprecated const char *standard; /**< deprecated, use demuxer-specific options instead. */ + attribute_deprecated unsigned int mpeg2ts_raw:1; /**< deprecated, use mpegtsraw demuxer */ + /**< deprecated, use mpegtsraw demuxer-specific options instead */ + attribute_deprecated unsigned int mpeg2ts_compute_pcr:1; + attribute_deprecated unsigned int initial_pause:1; /**< Do not begin to play the stream + immediately (RTSP only). */ + attribute_deprecated unsigned int prealloced_context:1; +#endif +} AVFormatParameters; + +//! Demuxer will use avio_open, no opened file should be provided by the caller. +#define AVFMT_NOFILE 0x0001 +#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ +#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ +#define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for + raw picture data. */ +#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ +#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ +#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ +#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */ +#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ +#define AVFMT_NODIMENSIONS 0x0800 /**< Format does not need width/height */ +#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ +#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */ +#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fallback to generic search */ + +typedef struct AVOutputFormat { + const char *name; + /** + * Descriptive name for the format, meant to be more human-readable + * than name. You should use the NULL_IF_CONFIG_SMALL() macro + * to define it. + */ + const char *long_name; + const char *mime_type; + const char *extensions; /**< comma-separated filename extensions */ + /** + * size of private data so that it can be allocated in the wrapper + */ + int priv_data_size; + /* output support */ + enum CodecID audio_codec; /**< default audio codec */ + enum CodecID video_codec; /**< default video codec */ + int (*write_header)(struct AVFormatContext *); + int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); + int (*write_trailer)(struct AVFormatContext *); + /** + * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, + * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, + * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS + */ + int flags; + /** + * Currently only used to set pixel format if not YUV420P. + */ + int (*set_parameters)(struct AVFormatContext *, AVFormatParameters *); + int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, + AVPacket *in, int flush); + + /** + * List of supported codec_id-codec_tag pairs, ordered by "better + * choice first". The arrays are all terminated by CODEC_ID_NONE. + */ + const struct AVCodecTag * const *codec_tag; + + enum CodecID subtitle_codec; /**< default subtitle codec */ + +#if FF_API_OLD_METADATA2 + const AVMetadataConv *metadata_conv; +#endif + + const AVClass *priv_class; ///< AVClass for the private context + + /* private fields */ + struct AVOutputFormat *next; +} AVOutputFormat; + +typedef struct AVInputFormat { + /** + * A comma separated list of short names for the format. New names + * may be appended with a minor bump. + */ + const char *name; + + /** + * Descriptive name for the format, meant to be more human-readable + * than name. You should use the NULL_IF_CONFIG_SMALL() macro + * to define it. + */ + const char *long_name; + + /** + * Size of private data so that it can be allocated in the wrapper. + */ + int priv_data_size; + + /** + * Tell if a given file has a chance of being parsed as this format. + * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes + * big so you do not have to check for that unless you need more. + */ + int (*read_probe)(AVProbeData *); + + /** + * Read the format header and initialize the AVFormatContext + * structure. Return 0 if OK. 'ap' if non-NULL contains + * additional parameters. Only used in raw format right + * now. 'av_new_stream' should be called to create new streams. + */ + int (*read_header)(struct AVFormatContext *, + AVFormatParameters *ap); + + /** + * Read one packet and put it in 'pkt'. pts and flags are also + * set. 'av_new_stream' can be called only if the flag + * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a + * background thread). + * @return 0 on success, < 0 on error. + * When returning an error, pkt must not have been allocated + * or must be freed before returning + */ + int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); + + /** + * Close the stream. The AVFormatContext and AVStreams are not + * freed by this function + */ + int (*read_close)(struct AVFormatContext *); + +#if FF_API_READ_SEEK + /** + * Seek to a given timestamp relative to the frames in + * stream component stream_index. + * @param stream_index Must not be -1. + * @param flags Selects which direction should be preferred if no exact + * match is available. + * @return >= 0 on success (but not necessarily the new offset) + */ + attribute_deprecated int (*read_seek)(struct AVFormatContext *, + int stream_index, int64_t timestamp, int flags); +#endif + /** + * Gets the next timestamp in stream[stream_index].time_base units. + * @return the timestamp or AV_NOPTS_VALUE if an error occurred + */ + int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, + int64_t *pos, int64_t pos_limit); + + /** + * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER. + */ + int flags; + + /** + * If extensions are defined, then no probe is done. You should + * usually not use extension format guessing because it is not + * reliable enough + */ + const char *extensions; + + /** + * General purpose read-only value that the format can use. + */ + int value; + + /** + * Start/resume playing - only meaningful if using a network-based format + * (RTSP). + */ + int (*read_play)(struct AVFormatContext *); + + /** + * Pause playing - only meaningful if using a network-based format + * (RTSP). + */ + int (*read_pause)(struct AVFormatContext *); + + const struct AVCodecTag * const *codec_tag; + + /** + * Seek to timestamp ts. + * Seeking will be done so that the point from which all active streams + * can be presented successfully will be closest to ts and within min/max_ts. + * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. + */ + int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); + +#if FF_API_OLD_METADATA2 + const AVMetadataConv *metadata_conv; +#endif + + const AVClass *priv_class; ///< AVClass for the private context + + /* private fields */ + struct AVInputFormat *next; +} AVInputFormat; + +enum AVStreamParseType { + AVSTREAM_PARSE_NONE, + AVSTREAM_PARSE_FULL, /**< full parsing and repack */ + AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ + AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ + AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ +}; + +typedef struct AVIndexEntry { + int64_t pos; + int64_t timestamp; +#define AVINDEX_KEYFRAME 0x0001 + int flags:2; + int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). + int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ +} AVIndexEntry; + +#define AV_DISPOSITION_DEFAULT 0x0001 +#define AV_DISPOSITION_DUB 0x0002 +#define AV_DISPOSITION_ORIGINAL 0x0004 +#define AV_DISPOSITION_COMMENT 0x0008 +#define AV_DISPOSITION_LYRICS 0x0010 +#define AV_DISPOSITION_KARAOKE 0x0020 + +/** + * Track should be used during playback by default. + * Useful for subtitle track that should be displayed + * even when user did not explicitly ask for subtitles. + */ +#define AV_DISPOSITION_FORCED 0x0040 +#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080 /**< stream for hearing impaired audiences */ +#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100 /**< stream for visual impaired audiences */ +#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200 /**< stream without voice */ + +/** + * Stream structure. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVStream) must not be used outside libav*. + */ +typedef struct AVStream { + int index; /**< stream index in AVFormatContext */ + int id; /**< format-specific stream ID */ + AVCodecContext *codec; /**< codec context */ + /** + * Real base framerate of the stream. + * This is the lowest framerate with which all timestamps can be + * represented accurately (it is the least common multiple of all + * framerates in the stream). Note, this value is just a guess! + * For example, if the time base is 1/90000 and all frames have either + * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. + */ + AVRational r_frame_rate; + void *priv_data; + + /* internal data used in av_find_stream_info() */ + int64_t first_dts; + + /** + * encoding: pts generation when outputting stream + */ + struct AVFrac pts; + + /** + * This is the fundamental unit of time (in seconds) in terms + * of which frame timestamps are represented. For fixed-fps content, + * time base should be 1/framerate and timestamp increments should be 1. + * decoding: set by libavformat + * encoding: set by libavformat in av_write_header + */ + AVRational time_base; + int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ + /* ffmpeg.c private use */ + int stream_copy; /**< If set, just copy stream. */ + enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed. + + //FIXME move stuff to a flags field? + /** + * Quality, as it has been removed from AVCodecContext and put in AVVideoFrame. + * MN: dunno if that is the right place for it + */ + float quality; + + /** + * Decoding: pts of the first frame of the stream, in stream time base. + * Only set this if you are absolutely 100% sure that the value you set + * it to really is the pts of the first frame. + * This may be undefined (AV_NOPTS_VALUE). + */ + int64_t start_time; + + /** + * Decoding: duration of the stream, in stream time base. + * If a source file does not specify a duration, but does specify + * a bitrate, this value will be estimated from bitrate and file size. + */ + int64_t duration; + + /* av_read_frame() support */ + enum AVStreamParseType need_parsing; + struct AVCodecParserContext *parser; + + int64_t cur_dts; + int last_IP_duration; + int64_t last_IP_pts; + /* av_seek_frame() support */ + AVIndexEntry *index_entries; /**< Only used if the format does not + support seeking natively. */ + int nb_index_entries; + unsigned int index_entries_allocated_size; + + int64_t nb_frames; ///< number of frames in this stream if known or 0 + + int disposition; /**< AV_DISPOSITION_* bit field */ + + AVProbeData probe_data; +#define MAX_REORDER_DELAY 16 + int64_t pts_buffer[MAX_REORDER_DELAY+1]; + + /** + * sample aspect ratio (0 if unknown) + * - encoding: Set by user. + * - decoding: Set by libavformat. + */ + AVRational sample_aspect_ratio; + + AVDictionary *metadata; + + /* Intended mostly for av_read_frame() support. Not supposed to be used by */ + /* external applications; try to use something else if at all possible. */ + const uint8_t *cur_ptr; + int cur_len; + AVPacket cur_pkt; + + // Timestamp generation support: + /** + * Timestamp corresponding to the last dts sync point. + * + * Initialized when AVCodecParserContext.dts_sync_point >= 0 and + * a DTS is received from the underlying container. Otherwise set to + * AV_NOPTS_VALUE by default. + */ + int64_t reference_dts; + + /** + * Number of packets to buffer for codec probing + * NOT PART OF PUBLIC API + */ +#define MAX_PROBE_PACKETS 2500 + int probe_packets; + + /** + * last packet in packet_buffer for this stream when muxing. + * used internally, NOT PART OF PUBLIC API, dont read or write from outside of libav* + */ + struct AVPacketList *last_in_packet_buffer; + + /** + * Average framerate + */ + AVRational avg_frame_rate; + + /** + * Number of frames that have been demuxed during av_find_stream_info() + */ + int codec_info_nb_frames; + + /** + * Stream informations used internally by av_find_stream_info() + */ +#define MAX_STD_TIMEBASES (60*12+5) + struct { + int64_t last_dts; + int64_t duration_gcd; + int duration_count; + double duration_error[MAX_STD_TIMEBASES]; + int64_t codec_info_duration; + } *info; +} AVStream; + +#define AV_PROGRAM_RUNNING 1 + +/** + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVProgram) must not be used outside libav*. + */ +typedef struct AVProgram { + int id; + int flags; + enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller + unsigned int *stream_index; + unsigned int nb_stream_indexes; + AVDictionary *metadata; +} AVProgram; + +#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present + (streams are added dynamically) */ + +typedef struct AVChapter { + int id; ///< unique ID to identify the chapter + AVRational time_base; ///< time base in which the start/end timestamps are specified + int64_t start, end; ///< chapter start/end time in time_base units + AVDictionary *metadata; +} AVChapter; + +/** + * Format I/O context. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVFormatContext) must not be used outside libav*. + */ +typedef struct AVFormatContext { + const AVClass *av_class; /**< Set by avformat_alloc_context. */ + /* Can only be iformat or oformat, not both at the same time. */ + struct AVInputFormat *iformat; + struct AVOutputFormat *oformat; + void *priv_data; + AVIOContext *pb; + unsigned int nb_streams; + AVStream **streams; + char filename[1024]; /**< input or output filename */ + /* stream info */ + int64_t timestamp; + + int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */ + /* private data for pts handling (do not modify directly). */ + /** + * This buffer is only needed when packets were already buffered but + * not decoded, for example to get the codec parameters in MPEG + * streams. + */ + struct AVPacketList *packet_buffer; + + /** + * Decoding: position of the first frame of the component, in + * AV_TIME_BASE fractional seconds. NEVER set this value directly: + * It is deduced from the AVStream values. + */ + int64_t start_time; + + /** + * Decoding: duration of the stream, in AV_TIME_BASE fractional + * seconds. Only set this value if you know none of the individual stream + * durations and also dont set any of them. This is deduced from the + * AVStream values if not set. + */ + int64_t duration; + + /** + * decoding: total file size, 0 if unknown + */ + int64_t file_size; + + /** + * Decoding: total stream bitrate in bit/s, 0 if not + * available. Never set it directly if the file_size and the + * duration are known as Libav can compute it automatically. + */ + int bit_rate; + + /* av_read_frame() support */ + AVStream *cur_st; + + /* av_seek_frame() support */ + int64_t data_offset; /**< offset of the first packet */ + + int mux_rate; + unsigned int packet_size; + int preload; + int max_delay; + +#define AVFMT_NOOUTPUTLOOP -1 +#define AVFMT_INFINITEOUTPUTLOOP 0 + /** + * number of times to loop output in formats that support it + */ + int loop_output; + + int flags; +#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames. +#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. +#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. +#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS +#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container +#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled +#if FF_API_FLAG_RTP_HINT +#define AVFMT_FLAG_RTP_HINT 0x0040 ///< Deprecated, use the -movflags rtphint muxer specific AVOption instead +#endif +#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. + + int loop_input; + + /** + * decoding: size of data to probe; encoding: unused. + */ + unsigned int probesize; + + /** + * Maximum time (in AV_TIME_BASE units) during which the input should + * be analyzed in av_find_stream_info(). + */ + int max_analyze_duration; + + const uint8_t *key; + int keylen; + + unsigned int nb_programs; + AVProgram **programs; + + /** + * Forced video codec_id. + * Demuxing: Set by user. + */ + enum CodecID video_codec_id; + + /** + * Forced audio codec_id. + * Demuxing: Set by user. + */ + enum CodecID audio_codec_id; + + /** + * Forced subtitle codec_id. + * Demuxing: Set by user. + */ + enum CodecID subtitle_codec_id; + + /** + * Maximum amount of memory in bytes to use for the index of each stream. + * If the index exceeds this size, entries will be discarded as + * needed to maintain a smaller size. This can lead to slower or less + * accurate seeking (depends on demuxer). + * Demuxers for which a full in-memory index is mandatory will ignore + * this. + * muxing : unused + * demuxing: set by user + */ + unsigned int max_index_size; + + /** + * Maximum amount of memory in bytes to use for buffering frames + * obtained from realtime capture devices. + */ + unsigned int max_picture_buffer; + + unsigned int nb_chapters; + AVChapter **chapters; + + /** + * Flags to enable debugging. + */ + int debug; +#define FF_FDEBUG_TS 0x0001 + + /** + * Raw packets from the demuxer, prior to parsing and decoding. + * This buffer is used for buffering packets until the codec can + * be identified, as parsing cannot be done without knowing the + * codec. + */ + struct AVPacketList *raw_packet_buffer; + struct AVPacketList *raw_packet_buffer_end; + + struct AVPacketList *packet_buffer_end; + + AVDictionary *metadata; + + /** + * Remaining size available for raw_packet_buffer, in bytes. + * NOT PART OF PUBLIC API + */ +#define RAW_PACKET_BUFFER_SIZE 2500000 + int raw_packet_buffer_remaining_size; + + /** + * Start time of the stream in real world time, in microseconds + * since the unix epoch (00:00 1st January 1970). That is, pts=0 + * in the stream was captured at this real world time. + * - encoding: Set by user. + * - decoding: Unused. + */ + int64_t start_time_realtime; + + /** + * decoding: number of frames used to probe fps + */ + int fps_probe_size; +} AVFormatContext; + +typedef struct AVPacketList { + AVPacket pkt; + struct AVPacketList *next; +} AVPacketList; + +/** + * If f is NULL, returns the first registered input format, + * if f is non-NULL, returns the next registered input format after f + * or NULL if f is the last one. + */ +AVInputFormat *av_iformat_next(AVInputFormat *f); + +/** + * If f is NULL, returns the first registered output format, + * if f is non-NULL, returns the next registered output format after f + * or NULL if f is the last one. + */ +AVOutputFormat *av_oformat_next(AVOutputFormat *f); + +#if FF_API_GUESS_IMG2_CODEC +attribute_deprecated enum CodecID av_guess_image2_codec(const char *filename); +#endif + +/* XXX: Use automatic init with either ELF sections or C file parser */ +/* modules. */ + +/* utils.c */ +void av_register_input_format(AVInputFormat *format); +void av_register_output_format(AVOutputFormat *format); + +/** + * Return the output format in the list of registered output formats + * which best matches the provided parameters, or return NULL if + * there is no match. + * + * @param short_name if non-NULL checks if short_name matches with the + * names of the registered formats + * @param filename if non-NULL checks if filename terminates with the + * extensions of the registered formats + * @param mime_type if non-NULL checks if mime_type matches with the + * MIME type of the registered formats + */ +AVOutputFormat *av_guess_format(const char *short_name, + const char *filename, + const char *mime_type); + +/** + * Guess the codec ID based upon muxer and filename. + */ +enum CodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, + const char *filename, const char *mime_type, + enum AVMediaType type); + +/** + * Send a nice hexadecimal dump of a buffer to the specified file stream. + * + * @param f The file stream pointer where the dump should be sent to. + * @param buf buffer + * @param size buffer size + * + * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 + */ +void av_hex_dump(FILE *f, uint8_t *buf, int size); + +/** + * Send a nice hexadecimal dump of a buffer to the log. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param buf buffer + * @param size buffer size + * + * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 + */ +void av_hex_dump_log(void *avcl, int level, uint8_t *buf, int size); + +/** + * Send a nice dump of a packet to the specified file stream. + * + * @param f The file stream pointer where the dump should be sent to. + * @param pkt packet to dump + * @param dump_payload True if the payload must be displayed, too. + * @param st AVStream that the packet belongs to + */ +void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st); + + +/** + * Send a nice dump of a packet to the log. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param pkt packet to dump + * @param dump_payload True if the payload must be displayed, too. + * @param st AVStream that the packet belongs to + */ +void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload, + AVStream *st); + +#if FF_API_PKT_DUMP +attribute_deprecated void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload); +attribute_deprecated void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, + int dump_payload); +#endif + +/** + * Initialize libavformat and register all the muxers, demuxers and + * protocols. If you do not call this function, then you can select + * exactly which formats you want to support. + * + * @see av_register_input_format() + * @see av_register_output_format() + * @see av_register_protocol() + */ +void av_register_all(void); + +/** + * Get the CodecID for the given codec tag tag. + * If no codec id is found returns CODEC_ID_NONE. + * + * @param tags list of supported codec_id-codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + */ +enum CodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); + +/** + * Get the codec tag for the given codec id id. + * If no codec tag is found returns 0. + * + * @param tags list of supported codec_id-codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + */ +unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum CodecID id); + +/* media file input */ + +/** + * Find AVInputFormat based on the short name of the input format. + */ +AVInputFormat *av_find_input_format(const char *short_name); + +/** + * Guess the file format. + * + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + */ +AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened); + +/** + * Guess the file format. + * + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + * @param score_max A probe score larger that this is required to accept a + * detection, the variable is set to the actual detection + * score afterwards. + * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended + * to retry with a larger probe buffer. + */ +AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max); + +/** + * Probe a bytestream to determine the input format. Each time a probe returns + * with a score that is too low, the probe buffer size is increased and another + * attempt is made. When the maximum probe size is reached, the input format + * with the highest score is returned. + * + * @param pb the bytestream to probe + * @param fmt the input format is put here + * @param filename the filename of the stream + * @param logctx the log context + * @param offset the offset within the bytestream to probe from + * @param max_probe_size the maximum probe buffer size (zero for default) + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, + const char *filename, void *logctx, + unsigned int offset, unsigned int max_probe_size); + +#if FF_API_FORMAT_PARAMETERS +/** + * Allocate all the structures needed to read an input stream. + * This does not open the needed codecs for decoding the stream[s]. + * @deprecated use avformat_open_input instead. + */ +attribute_deprecated int av_open_input_stream(AVFormatContext **ic_ptr, + AVIOContext *pb, const char *filename, + AVInputFormat *fmt, AVFormatParameters *ap); + +/** + * Open a media file as input. The codecs are not opened. Only the file + * header (if present) is read. + * + * @param ic_ptr The opened media file handle is put here. + * @param filename filename to open + * @param fmt If non-NULL, force the file format to use. + * @param buf_size optional buffer size (zero if default is OK) + * @param ap Additional parameters needed when opening the file + * (NULL if default). + * @return 0 if OK, AVERROR_xxx otherwise + * + * @deprecated use avformat_open_input instead. + */ +attribute_deprecated int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, + AVInputFormat *fmt, + int buf_size, + AVFormatParameters *ap); +#endif + +/** + * Open an input stream and read the header. The codecs are not opened. + * The stream must be closed with av_close_input_file(). + * + * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). + * May be a pointer to NULL, in which case an AVFormatContext is allocated by this + * function and written into ps. + * Note that a user-supplied AVFormatContext will be freed on failure. + * @param filename Name of the stream to open. + * @param fmt If non-NULL, this parameter forces a specific input format. + * Otherwise the format is autodetected. + * @param options A dictionary filled with AVFormatContext and demuxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return 0 on success, a negative AVERROR on failure. + * + * @note If you want to use custom IO, preallocate the format context and set its pb field. + */ +int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options); + +/** + * Allocate an AVFormatContext. + * avformat_free_context() can be used to free the context and everything + * allocated by the framework within it. + */ +AVFormatContext *avformat_alloc_context(void); + +/** + * Read packets of a media file to get stream information. This + * is useful for file formats with no headers such as MPEG. This + * function also computes the real framerate in case of MPEG-2 repeat + * frame mode. + * The logical file position is not changed by this function; + * examined packets may be buffered for later processing. + * + * @param ic media file handle + * @return >=0 if OK, AVERROR_xxx on error + * @todo Let the user decide somehow what information is needed so that + * we do not waste time getting stuff the user does not need. + */ +int av_find_stream_info(AVFormatContext *ic); + +/** + * Find the "best" stream in the file. + * The best stream is determined according to various heuristics as the most + * likely to be what the user expects. + * If the decoder parameter is non-NULL, av_find_best_stream will find the + * default decoder for the stream's codec; streams for which no decoder can + * be found are ignored. + * + * @param ic media file handle + * @param type stream type: video, audio, subtitles, etc. + * @param wanted_stream_nb user-requested stream number, + * or -1 for automatic selection + * @param related_stream try to find a stream related (eg. in the same + * program) to this one, or -1 if none + * @param decoder_ret if non-NULL, returns the decoder for the + * selected stream + * @param flags flags; none are currently defined + * @return the non-negative stream number in case of success, + * AVERROR_STREAM_NOT_FOUND if no stream with the requested type + * could be found, + * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder + * @note If av_find_best_stream returns successfully and decoder_ret is not + * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. + */ +int av_find_best_stream(AVFormatContext *ic, + enum AVMediaType type, + int wanted_stream_nb, + int related_stream, + AVCodec **decoder_ret, + int flags); + +/** + * Read a transport packet from a media file. + * + * This function is obsolete and should never be used. + * Use av_read_frame() instead. + * + * @param s media file handle + * @param pkt is filled + * @return 0 if OK, AVERROR_xxx on error + */ +int av_read_packet(AVFormatContext *s, AVPacket *pkt); + +/** + * Return the next frame of a stream. + * This function returns what is stored in the file, and does not validate + * that what is there are valid frames for the decoder. It will split what is + * stored in the file into frames and return one for each call. It will not + * omit invalid data between valid frames so as to give the decoder the maximum + * information possible for decoding. + * + * The returned packet is valid + * until the next av_read_frame() or until av_close_input_file() and + * must be freed with av_free_packet. For video, the packet contains + * exactly one frame. For audio, it contains an integer number of + * frames if each frame has a known fixed size (e.g. PCM or ADPCM + * data). If the audio frames have a variable size (e.g. MPEG audio), + * then it contains one frame. + * + * pkt->pts, pkt->dts and pkt->duration are always set to correct + * values in AVStream.time_base units (and guessed if the format cannot + * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format + * has B-frames, so it is better to rely on pkt->dts if you do not + * decompress the payload. + * + * @return 0 if OK, < 0 on error or end of file + */ +int av_read_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Seek to the keyframe at timestamp. + * 'timestamp' in 'stream_index'. + * @param stream_index If stream_index is (-1), a default + * stream is selected, and timestamp is automatically converted + * from AV_TIME_BASE units to the stream specific time_base. + * @param timestamp Timestamp in AVStream.time_base units + * or, if no stream is specified, in AV_TIME_BASE units. + * @param flags flags which select direction and seeking mode + * @return >= 0 on success + */ +int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, + int flags); + +/** + * Seek to timestamp ts. + * Seeking will be done so that the point from which all active streams + * can be presented successfully will be closest to ts and within min/max_ts. + * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. + * + * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and + * are the file position (this may not be supported by all demuxers). + * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames + * in the stream with stream_index (this may not be supported by all demuxers). + * Otherwise all timestamps are in units of the stream selected by stream_index + * or if stream_index is -1, in AV_TIME_BASE units. + * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as + * keyframes (this may not be supported by all demuxers). + * + * @param stream_index index of the stream which is used as time base reference + * @param min_ts smallest acceptable timestamp + * @param ts target timestamp + * @param max_ts largest acceptable timestamp + * @param flags flags + * @return >=0 on success, error code otherwise + * + * @note This is part of the new seek API which is still under construction. + * Thus do not use this yet. It may change at any time, do not expect + * ABI compatibility yet! + */ +int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); + +/** + * Start playing a network-based stream (e.g. RTSP stream) at the + * current position. + */ +int av_read_play(AVFormatContext *s); + +/** + * Pause a network-based stream (e.g. RTSP stream). + * + * Use av_read_play() to resume it. + */ +int av_read_pause(AVFormatContext *s); + +/** + * Free a AVFormatContext allocated by av_open_input_stream. + * @param s context to free + */ +void av_close_input_stream(AVFormatContext *s); + +/** + * Close a media file (but not its codecs). + * + * @param s media file handle + */ +void av_close_input_file(AVFormatContext *s); + +/** + * Free an AVFormatContext and all its streams. + * @param s context to free + */ +void avformat_free_context(AVFormatContext *s); + +/** + * Add a new stream to a media file. + * + * Can only be called in the read_header() function. If the flag + * AVFMTCTX_NOHEADER is in the format context, then new streams + * can be added in read_packet too. + * + * @param s media file handle + * @param id file-format-dependent stream ID + */ +AVStream *av_new_stream(AVFormatContext *s, int id); +AVProgram *av_new_program(AVFormatContext *s, int id); + +/** + * Set the pts for a given stream. If the new values would be invalid + * (<= 0), it leaves the AVStream unchanged. + * + * @param s stream + * @param pts_wrap_bits number of bits effectively used by the pts + * (used for wrap control, 33 is the value for MPEG) + * @param pts_num numerator to convert to seconds (MPEG: 1) + * @param pts_den denominator to convert to seconds (MPEG: 90000) + */ +void av_set_pts_info(AVStream *s, int pts_wrap_bits, + unsigned int pts_num, unsigned int pts_den); + +#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward +#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes +#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes +#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number + +int av_find_default_stream_index(AVFormatContext *s); + +/** + * Get the index for a specific timestamp. + * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond + * to the timestamp which is <= the requested one, if backward + * is 0, then it will be >= + * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise + * @return < 0 if no such timestamp could be found + */ +int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); + +/** + * Add an index entry into a sorted list. Update the entry if the list + * already contains it. + * + * @param timestamp timestamp in the time base of the given stream + */ +int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, + int size, int distance, int flags); + +/** + * Perform a binary search using av_index_search_timestamp() and + * AVInputFormat.read_timestamp(). + * This is not supposed to be called directly by a user application, + * but by demuxers. + * @param target_ts target timestamp in the time base of the given stream + * @param stream_index stream number + */ +int av_seek_frame_binary(AVFormatContext *s, int stream_index, + int64_t target_ts, int flags); + +/** + * Update cur_dts of all streams based on the given timestamp and AVStream. + * + * Stream ref_st unchanged, others set cur_dts in their native time base. + * Only needed for timestamp wrapping or if (dts not set and pts!=dts). + * @param timestamp new dts expressed in time_base of param ref_st + * @param ref_st reference stream giving time_base of param timestamp + */ +void av_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp); + +/** + * Perform a binary search using read_timestamp(). + * This is not supposed to be called directly by a user application, + * but by demuxers. + * @param target_ts target timestamp in the time base of the given stream + * @param stream_index stream number + */ +int64_t av_gen_search(AVFormatContext *s, int stream_index, + int64_t target_ts, int64_t pos_min, + int64_t pos_max, int64_t pos_limit, + int64_t ts_min, int64_t ts_max, + int flags, int64_t *ts_ret, + int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t )); + +/** + * media file output + */ +#if FF_API_FORMAT_PARAMETERS +/** + * @deprecated pass the options to avformat_write_header directly. + */ +attribute_deprecated int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap); +#endif + +/** + * Split a URL string into components. + * + * The pointers to buffers for storing individual components may be null, + * in order to ignore that component. Buffers for components not found are + * set to empty strings. If the port is not found, it is set to a negative + * value. + * + * @param proto the buffer for the protocol + * @param proto_size the size of the proto buffer + * @param authorization the buffer for the authorization + * @param authorization_size the size of the authorization buffer + * @param hostname the buffer for the host name + * @param hostname_size the size of the hostname buffer + * @param port_ptr a pointer to store the port number in + * @param path the buffer for the path + * @param path_size the size of the path buffer + * @param url the URL to split + */ +void av_url_split(char *proto, int proto_size, + char *authorization, int authorization_size, + char *hostname, int hostname_size, + int *port_ptr, + char *path, int path_size, + const char *url); + +/** + * Allocate the stream private data and write the stream header to + * an output media file. + * + * @param s Media file handle, must be allocated with avformat_alloc_context(). + * Its oformat field must be set to the desired output format; + * Its pb field must be set to an already openened AVIOContext. + * @param options An AVDictionary filled with AVFormatContext and muxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return 0 on success, negative AVERROR on failure. + * + * @see av_opt_find, av_dict_set, avio_open, av_oformat_next. + */ +int avformat_write_header(AVFormatContext *s, AVDictionary **options); + +#if FF_API_FORMAT_PARAMETERS +/** + * Allocate the stream private data and write the stream header to an + * output media file. + * @note: this sets stream time-bases, if possible to stream->codec->time_base + * but for some formats it might also be some other time base + * + * @param s media file handle + * @return 0 if OK, AVERROR_xxx on error + * + * @deprecated use avformat_write_header. + */ +attribute_deprecated int av_write_header(AVFormatContext *s); +#endif + +/** + * Write a packet to an output media file. + * + * The packet shall contain one audio or video frame. + * The packet must be correctly interleaved according to the container + * specification, if not then av_interleaved_write_frame must be used. + * + * @param s media file handle + * @param pkt The packet, which contains the stream_index, buf/buf_size, + dts/pts, ... + * @return < 0 on error, = 0 if OK, 1 if end of stream wanted + */ +int av_write_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Write a packet to an output media file ensuring correct interleaving. + * + * The packet must contain one audio or video frame. + * If the packets are already correctly interleaved, the application should + * call av_write_frame() instead as it is slightly faster. It is also important + * to keep in mind that completely non-interleaved input will need huge amounts + * of memory to interleave with this, so it is preferable to interleave at the + * demuxer level. + * + * @param s media file handle + * @param pkt The packet, which contains the stream_index, buf/buf_size, + dts/pts, ... + * @return < 0 on error, = 0 if OK, 1 if end of stream wanted + */ +int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Interleave a packet per dts in an output media file. + * + * Packets with pkt->destruct == av_destruct_packet will be freed inside this + * function, so they cannot be used after it. Note that calling av_free_packet() + * on them is still safe. + * + * @param s media file handle + * @param out the interleaved packet will be output here + * @param pkt the input packet + * @param flush 1 if no further packets are available as input and all + * remaining packets should be output + * @return 1 if a packet was output, 0 if no packet could be output, + * < 0 if an error occurred + */ +int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, + AVPacket *pkt, int flush); + +/** + * Write the stream trailer to an output media file and free the + * file private data. + * + * May only be called after a successful call to av_write_header. + * + * @param s media file handle + * @return 0 if OK, AVERROR_xxx on error + */ +int av_write_trailer(AVFormatContext *s); + +#if FF_API_DUMP_FORMAT +attribute_deprecated void dump_format(AVFormatContext *ic, + int index, + const char *url, + int is_output); +#endif + +void av_dump_format(AVFormatContext *ic, + int index, + const char *url, + int is_output); + +#if FF_API_PARSE_DATE +/** + * Parse datestr and return a corresponding number of microseconds. + * + * @param datestr String representing a date or a duration. + * See av_parse_time() for the syntax of the provided string. + * @deprecated in favor of av_parse_time() + */ +attribute_deprecated +int64_t parse_date(const char *datestr, int duration); +#endif + +/** + * Get the current time in microseconds. + */ +int64_t av_gettime(void); + +#if FF_API_FIND_INFO_TAG +/** + * @deprecated use av_find_info_tag in libavutil instead. + */ +attribute_deprecated int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); +#endif + +/** + * Return in 'buf' the path with '%d' replaced by a number. + * + * Also handles the '%0nd' format where 'n' is the total number + * of digits and '%%'. + * + * @param buf destination buffer + * @param buf_size destination buffer size + * @param path numbered sequence string + * @param number frame number + * @return 0 if OK, -1 on format error + */ +int av_get_frame_filename(char *buf, int buf_size, + const char *path, int number); + +/** + * Check whether filename actually is a numbered sequence generator. + * + * @param filename possible numbered sequence string + * @return 1 if a valid numbered sequence string, 0 otherwise + */ +int av_filename_number_test(const char *filename); + +/** + * Generate an SDP for an RTP session. + * + * @param ac array of AVFormatContexts describing the RTP streams. If the + * array is composed by only one context, such context can contain + * multiple AVStreams (one AVStream per RTP stream). Otherwise, + * all the contexts in the array (an AVCodecContext per RTP stream) + * must contain only one AVStream. + * @param n_files number of AVCodecContexts contained in ac + * @param buf buffer where the SDP will be stored (must be allocated by + * the caller) + * @param size the size of the buffer + * @return 0 if OK, AVERROR_xxx on error + */ +int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size); + +#if FF_API_SDP_CREATE +attribute_deprecated int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size); +#endif + +/** + * Return a positive value if the given filename has one of the given + * extensions, 0 otherwise. + * + * @param extensions a comma-separated list of filename extensions + */ +int av_match_ext(const char *filename, const char *extensions); + +#endif /* AVFORMAT_AVFORMAT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavformat/avio.h b/tizen/distrib/libav/x86_64/include/libavformat/avio.h new file mode 100644 index 0000000000..211fe9349e --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavformat/avio.h @@ -0,0 +1,634 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#ifndef AVFORMAT_AVIO_H +#define AVFORMAT_AVIO_H + +/** + * @file + * Buffered I/O operations + */ + +#include + +#include "libavutil/common.h" +#include "libavutil/log.h" + +#include "libavformat/version.h" + + +#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */ + +/** + * Bytestream IO Context. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVIOContext) must not be used outside libav*. + * + * @note None of the function pointers in AVIOContext should be called + * directly, they should only be set by the client application + * when implementing custom I/O. Normally these are set to the + * function pointers specified in avio_alloc_context() + */ +typedef struct { + unsigned char *buffer; /**< Start of the buffer. */ + int buffer_size; /**< Maximum buffer size */ + unsigned char *buf_ptr; /**< Current position in the buffer */ + unsigned char *buf_end; /**< End of the data, may be less than + buffer+buffer_size if the read function returned + less data than requested, e.g. for streams where + no more data has been received yet. */ + void *opaque; /**< A private pointer, passed to the read/write/seek/... + functions. */ + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); + int64_t (*seek)(void *opaque, int64_t offset, int whence); + int64_t pos; /**< position in the file of the current buffer */ + int must_flush; /**< true if the next seek should flush */ + int eof_reached; /**< true if eof reached */ + int write_flag; /**< true if open for writing */ +#if FF_API_OLD_AVIO + attribute_deprecated int is_streamed; +#endif + int max_packet_size; + unsigned long checksum; + unsigned char *checksum_ptr; + unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); + int error; /**< contains the error code or 0 if no error happened */ + /** + * Pause or resume playback for network streaming protocols - e.g. MMS. + */ + int (*read_pause)(void *opaque, int pause); + /** + * Seek to a given timestamp in stream with the specified stream_index. + * Needed for some network streaming protocols which don't support seeking + * to byte position. + */ + int64_t (*read_seek)(void *opaque, int stream_index, + int64_t timestamp, int flags); + /** + * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. + */ + int seekable; +} AVIOContext; + +/* unbuffered I/O */ + +#if FF_API_OLD_AVIO +/** + * URL Context. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(URLContext) must not be used outside libav*. + * @deprecated This struct will be made private + */ +typedef struct URLContext { + const AVClass *av_class; ///< information for av_log(). Set by url_open(). + struct URLProtocol *prot; + int flags; + int is_streamed; /**< true if streamed (no seek possible), default = false */ + int max_packet_size; /**< if non zero, the stream is packetized with this max packet size */ + void *priv_data; + char *filename; /**< specified URL */ + int is_connected; +} URLContext; + +#define URL_PROTOCOL_FLAG_NESTED_SCHEME 1 /*< The protocol name can be the first part of a nested protocol scheme */ + +/** + * @deprecated This struct is to be made private. Use the higher-level + * AVIOContext-based API instead. + */ +typedef struct URLProtocol { + const char *name; + int (*url_open)(URLContext *h, const char *url, int flags); + int (*url_read)(URLContext *h, unsigned char *buf, int size); + int (*url_write)(URLContext *h, const unsigned char *buf, int size); + int64_t (*url_seek)(URLContext *h, int64_t pos, int whence); + int (*url_close)(URLContext *h); + struct URLProtocol *next; + int (*url_read_pause)(URLContext *h, int pause); + int64_t (*url_read_seek)(URLContext *h, int stream_index, + int64_t timestamp, int flags); + int (*url_get_file_handle)(URLContext *h); + int priv_data_size; + const AVClass *priv_data_class; + int flags; + int (*url_check)(URLContext *h, int mask); +} URLProtocol; + +typedef struct URLPollEntry { + URLContext *handle; + int events; + int revents; +} URLPollEntry; + +/* not implemented */ +attribute_deprecated int url_poll(URLPollEntry *poll_table, int n, int timeout); + +/** + * @name URL open modes + * The flags argument to url_open and cosins must be one of the following + * constants, optionally ORed with other flags. + * @{ + */ +#define URL_RDONLY 1 /**< read-only */ +#define URL_WRONLY 2 /**< write-only */ +#define URL_RDWR (URL_RDONLY|URL_WRONLY) /**< read-write */ +/** + * @} + */ + +/** + * Use non-blocking mode. + * If this flag is set, operations on the context will return + * AVERROR(EAGAIN) if they can not be performed immediately. + * If this flag is not set, operations on the context will never return + * AVERROR(EAGAIN). + * Note that this flag does not affect the opening/connecting of the + * context. Connecting a protocol will always block if necessary (e.g. on + * network protocols) but never hang (e.g. on busy devices). + * Warning: non-blocking protocols is work-in-progress; this flag may be + * silently ignored. + */ +#define URL_FLAG_NONBLOCK 4 + +typedef int URLInterruptCB(void); +extern URLInterruptCB *url_interrupt_cb; + +/** + * @defgroup old_url_funcs Old url_* functions + * The following functions are deprecated. Use the buffered API based on #AVIOContext instead. + * @{ + */ +attribute_deprecated int url_open_protocol (URLContext **puc, struct URLProtocol *up, + const char *url, int flags); +attribute_deprecated int url_alloc(URLContext **h, const char *url, int flags); +attribute_deprecated int url_connect(URLContext *h); +attribute_deprecated int url_open(URLContext **h, const char *url, int flags); +attribute_deprecated int url_read(URLContext *h, unsigned char *buf, int size); +attribute_deprecated int url_read_complete(URLContext *h, unsigned char *buf, int size); +attribute_deprecated int url_write(URLContext *h, const unsigned char *buf, int size); +attribute_deprecated int64_t url_seek(URLContext *h, int64_t pos, int whence); +attribute_deprecated int url_close(URLContext *h); +attribute_deprecated int64_t url_filesize(URLContext *h); +attribute_deprecated int url_get_file_handle(URLContext *h); +attribute_deprecated int url_get_max_packet_size(URLContext *h); +attribute_deprecated void url_get_filename(URLContext *h, char *buf, int buf_size); +attribute_deprecated int av_url_read_pause(URLContext *h, int pause); +attribute_deprecated int64_t av_url_read_seek(URLContext *h, int stream_index, + int64_t timestamp, int flags); +attribute_deprecated void url_set_interrupt_cb(int (*interrupt_cb)(void)); +/** + * If protocol is NULL, returns the first registered protocol, + * if protocol is non-NULL, returns the next registered protocol after protocol, + * or NULL if protocol is the last one. + */ +attribute_deprecated URLProtocol *av_protocol_next(URLProtocol *p); +/** + * Register the URLProtocol protocol. + * + * @param size the size of the URLProtocol struct referenced + */ +attribute_deprecated int av_register_protocol2(URLProtocol *protocol, int size); +/** + * @} + */ + + +typedef attribute_deprecated AVIOContext ByteIOContext; + +attribute_deprecated int init_put_byte(AVIOContext *s, + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + int64_t (*seek)(void *opaque, int64_t offset, int whence)); +attribute_deprecated AVIOContext *av_alloc_put_byte( + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + int64_t (*seek)(void *opaque, int64_t offset, int whence)); + +/** + * @defgroup old_avio_funcs Old put_/get_*() functions + * The following functions are deprecated. Use the "avio_"-prefixed functions instead. + * @{ + */ +attribute_deprecated int get_buffer(AVIOContext *s, unsigned char *buf, int size); +attribute_deprecated int get_partial_buffer(AVIOContext *s, unsigned char *buf, int size); +attribute_deprecated int get_byte(AVIOContext *s); +attribute_deprecated unsigned int get_le16(AVIOContext *s); +attribute_deprecated unsigned int get_le24(AVIOContext *s); +attribute_deprecated unsigned int get_le32(AVIOContext *s); +attribute_deprecated uint64_t get_le64(AVIOContext *s); +attribute_deprecated unsigned int get_be16(AVIOContext *s); +attribute_deprecated unsigned int get_be24(AVIOContext *s); +attribute_deprecated unsigned int get_be32(AVIOContext *s); +attribute_deprecated uint64_t get_be64(AVIOContext *s); + +attribute_deprecated void put_byte(AVIOContext *s, int b); +attribute_deprecated void put_nbyte(AVIOContext *s, int b, int count); +attribute_deprecated void put_buffer(AVIOContext *s, const unsigned char *buf, int size); +attribute_deprecated void put_le64(AVIOContext *s, uint64_t val); +attribute_deprecated void put_be64(AVIOContext *s, uint64_t val); +attribute_deprecated void put_le32(AVIOContext *s, unsigned int val); +attribute_deprecated void put_be32(AVIOContext *s, unsigned int val); +attribute_deprecated void put_le24(AVIOContext *s, unsigned int val); +attribute_deprecated void put_be24(AVIOContext *s, unsigned int val); +attribute_deprecated void put_le16(AVIOContext *s, unsigned int val); +attribute_deprecated void put_be16(AVIOContext *s, unsigned int val); +attribute_deprecated void put_tag(AVIOContext *s, const char *tag); +/** + * @} + */ + +attribute_deprecated int av_url_read_fpause(AVIOContext *h, int pause); +attribute_deprecated int64_t av_url_read_fseek (AVIOContext *h, int stream_index, + int64_t timestamp, int flags); + +/** + * @defgroup old_url_f_funcs Old url_f* functions + * The following functions are deprecated, use the "avio_"-prefixed functions instead. + * @{ + */ +attribute_deprecated int url_fopen( AVIOContext **s, const char *url, int flags); +attribute_deprecated int url_fclose(AVIOContext *s); +attribute_deprecated int64_t url_fseek(AVIOContext *s, int64_t offset, int whence); +attribute_deprecated int url_fskip(AVIOContext *s, int64_t offset); +attribute_deprecated int64_t url_ftell(AVIOContext *s); +attribute_deprecated int64_t url_fsize(AVIOContext *s); +#define URL_EOF (-1) +attribute_deprecated int url_fgetc(AVIOContext *s); +attribute_deprecated int url_setbufsize(AVIOContext *s, int buf_size); +#ifdef __GNUC__ +attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); +#else +attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...); +#endif +attribute_deprecated void put_flush_packet(AVIOContext *s); +attribute_deprecated int url_open_dyn_buf(AVIOContext **s); +attribute_deprecated int url_open_dyn_packet_buf(AVIOContext **s, int max_packet_size); +attribute_deprecated int url_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); +attribute_deprecated int url_fdopen(AVIOContext **s, URLContext *h); +/** + * @} + */ + +/** + * @deprecated use AVIOContext.eof_reached + */ +attribute_deprecated int url_feof(AVIOContext *s); +attribute_deprecated int url_ferror(AVIOContext *s); + +attribute_deprecated int udp_set_remote_url(URLContext *h, const char *uri); +attribute_deprecated int udp_get_local_port(URLContext *h); + +attribute_deprecated void init_checksum(AVIOContext *s, + unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), + unsigned long checksum); +attribute_deprecated unsigned long get_checksum(AVIOContext *s); +attribute_deprecated void put_strz(AVIOContext *s, const char *buf); +/** @note unlike fgets, the EOL character is not returned and a whole + line is parsed. return NULL if first char read was EOF */ +attribute_deprecated char *url_fgets(AVIOContext *s, char *buf, int buf_size); +/** + * @deprecated use avio_get_str instead + */ +attribute_deprecated char *get_strz(AVIOContext *s, char *buf, int maxlen); +/** + * @deprecated Use AVIOContext.seekable field directly. + */ +attribute_deprecated static inline int url_is_streamed(AVIOContext *s) +{ + return !s->seekable; +} +attribute_deprecated URLContext *url_fileno(AVIOContext *s); + +/** + * @deprecated use AVIOContext.max_packet_size directly. + */ +attribute_deprecated int url_fget_max_packet_size(AVIOContext *s); + +attribute_deprecated int url_open_buf(AVIOContext **s, uint8_t *buf, int buf_size, int flags); + +/** return the written or read size */ +attribute_deprecated int url_close_buf(AVIOContext *s); + +/** + * Return a non-zero value if the resource indicated by url + * exists, 0 otherwise. + * @deprecated Use avio_check instead. + */ +attribute_deprecated int url_exist(const char *url); +#endif // FF_API_OLD_AVIO + +/** + * Return AVIO_FLAG_* access flags corresponding to the access permissions + * of the resource in url, or a negative value corresponding to an + * AVERROR code in case of failure. The returned access flags are + * masked by the value in flags. + * + * @note This function is intrinsically unsafe, in the sense that the + * checked resource may change its existence or permission status from + * one call to another. Thus you should not trust the returned value, + * unless you are sure that no other processes are accessing the + * checked resource. + */ +int avio_check(const char *url, int flags); + +/** + * The callback is called in blocking functions to test regulary if + * asynchronous interruption is needed. AVERROR_EXIT is returned + * in this case by the interrupted function. 'NULL' means no interrupt + * callback is given. + */ +void avio_set_interrupt_cb(int (*interrupt_cb)(void)); + +/** + * Allocate and initialize an AVIOContext for buffered I/O. It must be later + * freed with av_free(). + * + * @param buffer Memory block for input/output operations via AVIOContext. + * The buffer must be allocated with av_malloc() and friends. + * @param buffer_size The buffer size is very important for performance. + * For protocols with fixed blocksize it should be set to this blocksize. + * For others a typical size is a cache page, e.g. 4kb. + * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + * @param opaque An opaque pointer to user-specific data. + * @param read_packet A function for refilling the buffer, may be NULL. + * @param write_packet A function for writing the buffer contents, may be NULL. + * @param seek A function for seeking to specified byte position, may be NULL. + * + * @return Allocated AVIOContext or NULL on failure. + */ +AVIOContext *avio_alloc_context( + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + int64_t (*seek)(void *opaque, int64_t offset, int whence)); + +void avio_w8(AVIOContext *s, int b); +void avio_write(AVIOContext *s, const unsigned char *buf, int size); +void avio_wl64(AVIOContext *s, uint64_t val); +void avio_wb64(AVIOContext *s, uint64_t val); +void avio_wl32(AVIOContext *s, unsigned int val); +void avio_wb32(AVIOContext *s, unsigned int val); +void avio_wl24(AVIOContext *s, unsigned int val); +void avio_wb24(AVIOContext *s, unsigned int val); +void avio_wl16(AVIOContext *s, unsigned int val); +void avio_wb16(AVIOContext *s, unsigned int val); + +/** + * Write a NULL-terminated string. + * @return number of bytes written. + */ +int avio_put_str(AVIOContext *s, const char *str); + +/** + * Convert an UTF-8 string to UTF-16LE and write it. + * @return number of bytes written. + */ +int avio_put_str16le(AVIOContext *s, const char *str); + +/** + * Passing this as the "whence" parameter to a seek function causes it to + * return the filesize without seeking anywhere. Supporting this is optional. + * If it is not supported then the seek function will return <0. + */ +#define AVSEEK_SIZE 0x10000 + +/** + * Oring this flag as into the "whence" parameter to a seek function causes it to + * seek by any means (like reopening and linear reading) or other normally unreasonble + * means that can be extreemly slow. + * This may be ignored by the seek code. + */ +#define AVSEEK_FORCE 0x20000 + +/** + * fseek() equivalent for AVIOContext. + * @return new position or AVERROR. + */ +int64_t avio_seek(AVIOContext *s, int64_t offset, int whence); + +/** + * Skip given number of bytes forward + * @return new position or AVERROR. + */ +static av_always_inline int64_t avio_skip(AVIOContext *s, int64_t offset) +{ + return avio_seek(s, offset, SEEK_CUR); +} + +/** + * ftell() equivalent for AVIOContext. + * @return position or AVERROR. + */ +static av_always_inline int64_t avio_tell(AVIOContext *s) +{ + return avio_seek(s, 0, SEEK_CUR); +} + +/** + * Get the filesize. + * @return filesize or AVERROR + */ +int64_t avio_size(AVIOContext *s); + +/** @warning currently size is limited */ +#ifdef __GNUC__ +int avio_printf(AVIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); +#else +int avio_printf(AVIOContext *s, const char *fmt, ...); +#endif + +void avio_flush(AVIOContext *s); + + +/** + * Read size bytes from AVIOContext into buf. + * @return number of bytes read or AVERROR + */ +int avio_read(AVIOContext *s, unsigned char *buf, int size); + +/** + * @name Functions for reading from AVIOContext + * @{ + * + * @note return 0 if EOF, so you cannot use it if EOF handling is + * necessary + */ +int avio_r8 (AVIOContext *s); +unsigned int avio_rl16(AVIOContext *s); +unsigned int avio_rl24(AVIOContext *s); +unsigned int avio_rl32(AVIOContext *s); +uint64_t avio_rl64(AVIOContext *s); +unsigned int avio_rb16(AVIOContext *s); +unsigned int avio_rb24(AVIOContext *s); +unsigned int avio_rb32(AVIOContext *s); +uint64_t avio_rb64(AVIOContext *s); +/** + * @} + */ + +/** + * Read a string from pb into buf. The reading will terminate when either + * a NULL character was encountered, maxlen bytes have been read, or nothing + * more can be read from pb. The result is guaranteed to be NULL-terminated, it + * will be truncated if buf is too small. + * Note that the string is not interpreted or validated in any way, it + * might get truncated in the middle of a sequence for multi-byte encodings. + * + * @return number of bytes read (is always <= maxlen). + * If reading ends on EOF or error, the return value will be one more than + * bytes actually read. + */ +int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen); + +/** + * Read a UTF-16 string from pb and convert it to UTF-8. + * The reading will terminate when either a null or invalid character was + * encountered or maxlen bytes have been read. + * @return number of bytes read (is always <= maxlen) + */ +int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen); +int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); + + +/** + * @name URL open modes + * The flags argument to avio_open must be one of the following + * constants, optionally ORed with other flags. + * @{ + */ +#define AVIO_FLAG_READ 1 /**< read-only */ +#define AVIO_FLAG_WRITE 2 /**< write-only */ +#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */ +/** + * @} + */ + +/** + * Use non-blocking mode. + * If this flag is set, operations on the context will return + * AVERROR(EAGAIN) if they can not be performed immediately. + * If this flag is not set, operations on the context will never return + * AVERROR(EAGAIN). + * Note that this flag does not affect the opening/connecting of the + * context. Connecting a protocol will always block if necessary (e.g. on + * network protocols) but never hang (e.g. on busy devices). + * Warning: non-blocking protocols is work-in-progress; this flag may be + * silently ignored. + */ +#define AVIO_FLAG_NONBLOCK 8 + +/** + * Create and initialize a AVIOContext for accessing the + * resource indicated by url. + * @note When the resource indicated by url has been opened in + * read+write mode, the AVIOContext can be used only for writing. + * + * @param s Used to return the pointer to the created AVIOContext. + * In case of failure the pointed to value is set to NULL. + * @param flags flags which control how the resource indicated by url + * is to be opened + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure + */ +int avio_open(AVIOContext **s, const char *url, int flags); + +/** + * Close the resource accessed by the AVIOContext s and free it. + * This function can only be used if s was opened by avio_open(). + * + * @return 0 on success, an AVERROR < 0 on error. + */ +int avio_close(AVIOContext *s); + +/** + * Open a write only memory stream. + * + * @param s new IO context + * @return zero if no error. + */ +int avio_open_dyn_buf(AVIOContext **s); + +/** + * Return the written size and a pointer to the buffer. The buffer + * must be freed with av_free(). + * Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer. + * + * @param s IO context + * @param pbuffer pointer to a byte buffer + * @return the length of the byte buffer + */ +int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); + +/** + * Iterate through names of available protocols. + * + * @param opaque A private pointer representing current protocol. + * It must be a pointer to NULL on first iteration and will + * be updated by successive calls to avio_enum_protocols. + * @param output If set to 1, iterate over output protocols, + * otherwise over input protocols. + * + * @return A static string containing the name of current protocol or NULL + */ +const char *avio_enum_protocols(void **opaque, int output); + +/** + * Pause and resume playing - only meaningful if using a network streaming + * protocol (e.g. MMS). + * @param pause 1 for pause, 0 for resume + */ +int avio_pause(AVIOContext *h, int pause); + +/** + * Seek to a given timestamp relative to some component stream. + * Only meaningful if using a network streaming protocol (e.g. MMS.). + * @param stream_index The stream index that the timestamp is relative to. + * If stream_index is (-1) the timestamp should be in AV_TIME_BASE + * units from the beginning of the presentation. + * If a stream_index >= 0 is used and the protocol does not support + * seeking based on component streams, the call will fail with ENOTSUP. + * @param timestamp timestamp in AVStream.time_base units + * or if there is no stream specified then in AV_TIME_BASE units. + * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE + * and AVSEEK_FLAG_ANY. The protocol may silently ignore + * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will + * fail with ENOTSUP if used and not supported. + * @return >= 0 on success + * @see AVInputFormat::read_seek + */ +int64_t avio_seek_time(AVIOContext *h, int stream_index, + int64_t timestamp, int flags); + +#endif /* AVFORMAT_AVIO_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/adler32.h b/tizen/distrib/libav/x86_64/include/libavutil/adler32.h new file mode 100644 index 0000000000..913db2d0b6 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/adler32.h @@ -0,0 +1,42 @@ +/* + * copyright (c) 2006 Mans Rullgard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_ADLER32_H +#define AVUTIL_ADLER32_H + +#include +#include "attributes.h" + +/** + * Calculate the Adler32 checksum of a buffer. + * + * Passing the return value to a subsequent av_adler32_update() call + * allows the checksum of multiple buffers to be calculated as though + * they were concatenated. + * + * @param adler initial checksum value + * @param buf pointer to input buffer + * @param len size of input buffer + * @return updated checksum + */ +unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, + unsigned int len) av_pure; + +#endif /* AVUTIL_ADLER32_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/aes.h b/tizen/distrib/libav/x86_64/include/libavutil/aes.h new file mode 100644 index 0000000000..6e5d320487 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/aes.h @@ -0,0 +1,47 @@ +/* + * copyright (c) 2007 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AES_H +#define AVUTIL_AES_H + +#include + +extern const int av_aes_size; + +struct AVAES; + +/** + * Initialize an AVAES context. + * @param key_bits 128, 192 or 256 + * @param decrypt 0 for encryption, 1 for decryption + */ +int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * @param count number of 16 byte blocks + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); + +#endif /* AVUTIL_AES_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/attributes.h b/tizen/distrib/libav/x86_64/include/libavutil/attributes.h new file mode 100644 index 0000000000..4abe78f3bf --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/attributes.h @@ -0,0 +1,134 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Macro definitions for various function/variable attributes + */ + +#ifndef AVUTIL_ATTRIBUTES_H +#define AVUTIL_ATTRIBUTES_H + +#ifdef __GNUC__ +# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y) +#else +# define AV_GCC_VERSION_AT_LEAST(x,y) 0 +#endif + +#ifndef av_always_inline +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_always_inline __attribute__((always_inline)) inline +#else +# define av_always_inline inline +#endif +#endif + +#ifndef av_noinline +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_noinline __attribute__((noinline)) +#else +# define av_noinline +#endif +#endif + +#ifndef av_pure +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_pure __attribute__((pure)) +#else +# define av_pure +#endif +#endif + +#ifndef av_const +#if AV_GCC_VERSION_AT_LEAST(2,6) +# define av_const __attribute__((const)) +#else +# define av_const +#endif +#endif + +#ifndef av_cold +#if AV_GCC_VERSION_AT_LEAST(4,3) +# define av_cold __attribute__((cold)) +#else +# define av_cold +#endif +#endif + +#ifndef av_flatten +#if AV_GCC_VERSION_AT_LEAST(4,1) +# define av_flatten __attribute__((flatten)) +#else +# define av_flatten +#endif +#endif + +#ifndef attribute_deprecated +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define attribute_deprecated __attribute__((deprecated)) +#else +# define attribute_deprecated +#endif +#endif + +#ifndef av_unused +#if defined(__GNUC__) +# define av_unused __attribute__((unused)) +#else +# define av_unused +#endif +#endif + +/** + * Mark a variable as used and prevent the compiler from optimizing it + * away. This is useful for variables accessed only from inline + * assembler without the compiler being aware. + */ +#ifndef av_used +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_used __attribute__((used)) +#else +# define av_used +#endif +#endif + +#ifndef av_alias +#if AV_GCC_VERSION_AT_LEAST(3,3) +# define av_alias __attribute__((may_alias)) +#else +# define av_alias +#endif +#endif + +#ifndef av_uninit +#if defined(__GNUC__) && !defined(__ICC) +# define av_uninit(x) x=x +#else +# define av_uninit(x) x +#endif +#endif + +#ifdef __GNUC__ +# define av_builtin_constant_p __builtin_constant_p +#else +# define av_builtin_constant_p(x) 0 +#endif + +#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/audioconvert.h b/tizen/distrib/libav/x86_64/include/libavutil/audioconvert.h new file mode 100644 index 0000000000..e37a2e84c1 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/audioconvert.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2006 Michael Niedermayer + * Copyright (c) 2008 Peter Ross + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AUDIOCONVERT_H +#define AVUTIL_AUDIOCONVERT_H + +#include + +/** + * @file + * audio conversion routines + */ + +/* Audio channel masks */ +#define AV_CH_FRONT_LEFT 0x00000001 +#define AV_CH_FRONT_RIGHT 0x00000002 +#define AV_CH_FRONT_CENTER 0x00000004 +#define AV_CH_LOW_FREQUENCY 0x00000008 +#define AV_CH_BACK_LEFT 0x00000010 +#define AV_CH_BACK_RIGHT 0x00000020 +#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 +#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 +#define AV_CH_BACK_CENTER 0x00000100 +#define AV_CH_SIDE_LEFT 0x00000200 +#define AV_CH_SIDE_RIGHT 0x00000400 +#define AV_CH_TOP_CENTER 0x00000800 +#define AV_CH_TOP_FRONT_LEFT 0x00001000 +#define AV_CH_TOP_FRONT_CENTER 0x00002000 +#define AV_CH_TOP_FRONT_RIGHT 0x00004000 +#define AV_CH_TOP_BACK_LEFT 0x00008000 +#define AV_CH_TOP_BACK_CENTER 0x00010000 +#define AV_CH_TOP_BACK_RIGHT 0x00020000 +#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. +#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT. + +/** Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. */ +#define AV_CH_LAYOUT_NATIVE 0x8000000000000000LL + +/* Audio channel convenience macros */ +#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) +#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) +#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) +#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) +#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) +#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) + +/** + * Return a channel layout id that matches name, 0 if no match. + */ +int64_t av_get_channel_layout(const char *name); + +/** + * Return a description of a channel layout. + * If nb_channels is <= 0, it is guessed from the channel_layout. + * + * @param buf put here the string containing the channel layout + * @param buf_size size in bytes of the buffer + */ +void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout); + +/** + * Return the number of channels in the channel layout. + */ +int av_get_channel_layout_nb_channels(int64_t channel_layout); + +#endif /* AVUTIL_AUDIOCONVERT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/avassert.h b/tizen/distrib/libav/x86_64/include/libavutil/avassert.h new file mode 100644 index 0000000000..b223d26e8d --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/avassert.h @@ -0,0 +1,66 @@ +/* + * copyright (c) 2010 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * simple assert() macros that are a bit more flexible than ISO C assert(). + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_AVASSERT_H +#define AVUTIL_AVASSERT_H + +#include +#include "avutil.h" +#include "log.h" + +/** + * assert() equivalent, that is always enabled. + */ +#define av_assert0(cond) do { \ + if (!(cond)) { \ + av_log(NULL, AV_LOG_FATAL, "Assertion %s failed at %s:%d\n", \ + AV_STRINGIFY(cond), __FILE__, __LINE__); \ + abort(); \ + } \ +} while (0) + + +/** + * assert() equivalent, that does not lie in speed critical code. + * These asserts() thus can be enabled without fearing speedloss. + */ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 +#define av_assert1(cond) av_assert0(cond) +#else +#define av_assert1(cond) ((void)0) +#endif + + +/** + * assert() equivalent, that does lie in speed critical code. + */ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 +#define av_assert2(cond) av_assert0(cond) +#else +#define av_assert2(cond) ((void)0) +#endif + +#endif /* AVUTIL_AVASSERT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/avconfig.h b/tizen/distrib/libav/x86_64/include/libavutil/avconfig.h new file mode 100644 index 0000000000..f10aa6186b --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/avconfig.h @@ -0,0 +1,6 @@ +/* Generated by ffconf */ +#ifndef AVUTIL_AVCONFIG_H +#define AVUTIL_AVCONFIG_H +#define AV_HAVE_BIGENDIAN 0 +#define AV_HAVE_FAST_UNALIGNED 1 +#endif /* AVUTIL_AVCONFIG_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/avstring.h b/tizen/distrib/libav/x86_64/include/libavutil/avstring.h new file mode 100644 index 0000000000..b40acf6ebb --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/avstring.h @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2007 Mans Rullgard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AVSTRING_H +#define AVUTIL_AVSTRING_H + +#include + +/** + * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to + * the address of the first character in str after the prefix. + * + * @param str input string + * @param pfx prefix to test + * @param ptr updated if the prefix is matched inside str + * @return non-zero if the prefix matches, zero otherwise + */ +int av_strstart(const char *str, const char *pfx, const char **ptr); + +/** + * Return non-zero if pfx is a prefix of str independent of case. If + * it is, *ptr is set to the address of the first character in str + * after the prefix. + * + * @param str input string + * @param pfx prefix to test + * @param ptr updated if the prefix is matched inside str + * @return non-zero if the prefix matches, zero otherwise + */ +int av_stristart(const char *str, const char *pfx, const char **ptr); + +/** + * Locate the first case-independent occurrence in the string haystack + * of the string needle. A zero-length string needle is considered to + * match at the start of haystack. + * + * This function is a case-insensitive version of the standard strstr(). + * + * @param haystack string to search in + * @param needle string to search for + * @return pointer to the located match within haystack + * or a null pointer if no match + */ +char *av_stristr(const char *haystack, const char *needle); + +/** + * Copy the string src to dst, but no more than size - 1 bytes, and + * null-terminate dst. + * + * This function is the same as BSD strlcpy(). + * + * @param dst destination buffer + * @param src source string + * @param size size of destination buffer + * @return the length of src + * + * WARNING: since the return value is the length of src, src absolutely + * _must_ be a properly 0-terminated string, otherwise this will read beyond + * the end of the buffer and possibly crash. + */ +size_t av_strlcpy(char *dst, const char *src, size_t size); + +/** + * Append the string src to the string dst, but to a total length of + * no more than size - 1 bytes, and null-terminate dst. + * + * This function is similar to BSD strlcat(), but differs when + * size <= strlen(dst). + * + * @param dst destination buffer + * @param src source string + * @param size size of destination buffer + * @return the total length of src and dst + * + * WARNING: since the return value use the length of src and dst, these absolutely + * _must_ be a properly 0-terminated strings, otherwise this will read beyond + * the end of the buffer and possibly crash. + */ +size_t av_strlcat(char *dst, const char *src, size_t size); + +/** + * Append output to a string, according to a format. Never write out of + * the destination buffer, and always put a terminating 0 within + * the buffer. + * @param dst destination buffer (string to which the output is + * appended) + * @param size total size of the destination buffer + * @param fmt printf-compatible format string, specifying how the + * following parameters are used + * @return the length of the string that would have been generated + * if enough space had been available + */ +size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...); + +/** + * Convert a number to a av_malloced string. + */ +char *av_d2str(double d); + +/** + * Unescape the given string until a non escaped terminating char, + * and return the token corresponding to the unescaped string. + * + * The normal \ and ' escaping is supported. Leading and trailing + * whitespaces are removed, unless they are escaped with '\' or are + * enclosed between ''. + * + * @param buf the buffer to parse, buf will be updated to point to the + * terminating char + * @param term a 0-terminated list of terminating chars + * @return the malloced unescaped string, which must be av_freed by + * the user, NULL in case of allocation failure + */ +char *av_get_token(const char **buf, const char *term); + +#endif /* AVUTIL_AVSTRING_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/avutil.h b/tizen/distrib/libav/x86_64/include/libavutil/avutil.h new file mode 100644 index 0000000000..18461467b4 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/avutil.h @@ -0,0 +1,130 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AVUTIL_H +#define AVUTIL_AVUTIL_H + +/** + * @file + * external API header + */ + + +#define AV_STRINGIFY(s) AV_TOSTRING(s) +#define AV_TOSTRING(s) #s + +#define AV_GLUE(a, b) a ## b +#define AV_JOIN(a, b) AV_GLUE(a, b) + +#define AV_PRAGMA(s) _Pragma(#s) + +#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c) +#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c +#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) + +#define LIBAVUTIL_VERSION_MAJOR 51 +#define LIBAVUTIL_VERSION_MINOR 7 +#define LIBAVUTIL_VERSION_MICRO 0 + +#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ + LIBAVUTIL_VERSION_MINOR, \ + LIBAVUTIL_VERSION_MICRO) +#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ + LIBAVUTIL_VERSION_MINOR, \ + LIBAVUTIL_VERSION_MICRO) +#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT + +#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) + +/** + * Those FF_API_* defines are not part of public API. + * They may change, break or disappear at any time. + */ +#ifndef FF_API_GET_BITS_PER_SAMPLE_FMT +#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_FIND_OPT +#define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 52) +#endif + +/** + * Return the LIBAVUTIL_VERSION_INT constant. + */ +unsigned avutil_version(void); + +/** + * Return the libavutil build-time configuration. + */ +const char *avutil_configuration(void); + +/** + * Return the libavutil license. + */ +const char *avutil_license(void); + +enum AVMediaType { + AVMEDIA_TYPE_UNKNOWN = -1, + AVMEDIA_TYPE_VIDEO, + AVMEDIA_TYPE_AUDIO, + AVMEDIA_TYPE_DATA, + AVMEDIA_TYPE_SUBTITLE, + AVMEDIA_TYPE_ATTACHMENT, + AVMEDIA_TYPE_NB +}; + +#define FF_LAMBDA_SHIFT 7 +#define FF_LAMBDA_SCALE (1< + +/** + * Decode a base64-encoded string. + * + * @param out buffer for decoded data + * @param in null-terminated input string + * @param out_size size in bytes of the out buffer, must be at + * least 3/4 of the length of in + * @return number of bytes written, or a negative value in case of + * invalid input + */ +int av_base64_decode(uint8_t *out, const char *in, int out_size); + +/** + * Encode data to base64 and null-terminate. + * + * @param out buffer for encoded data + * @param out_size size in bytes of the output buffer, must be at + * least AV_BASE64_SIZE(in_size) + * @param in_size size in bytes of the 'in' buffer + * @return 'out' or NULL in case of error + */ +char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size); + +/** + * Calculate the output size needed to base64-encode x bytes. + */ +#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1) + +#endif /* AVUTIL_BASE64_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/bswap.h b/tizen/distrib/libav/x86_64/include/libavutil/bswap.h new file mode 100644 index 0000000000..3657ccd402 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/bswap.h @@ -0,0 +1,118 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * byte swapping routines + */ + +#ifndef AVUTIL_BSWAP_H +#define AVUTIL_BSWAP_H + +#include +#include "libavutil/avconfig.h" +#include "attributes.h" + +#ifdef HAVE_AV_CONFIG_H + +#include "config.h" + +#if ARCH_ARM +# include "arm/bswap.h" +#elif ARCH_AVR32 +# include "avr32/bswap.h" +#elif ARCH_BFIN +# include "bfin/bswap.h" +#elif ARCH_SH4 +# include "sh4/bswap.h" +#elif ARCH_X86 +# include "x86/bswap.h" +#endif + +#endif /* HAVE_AV_CONFIG_H */ + +#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) +#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) +#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) + +#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) + +#ifndef av_bswap16 +static av_always_inline av_const uint16_t av_bswap16(uint16_t x) +{ + x= (x>>8) | (x<<8); + return x; +} +#endif + +#ifndef av_bswap32 +static av_always_inline av_const uint32_t av_bswap32(uint32_t x) +{ + x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF); + x= (x>>16) | (x<<16); + return x; +} +#endif + +#ifndef av_bswap64 +static inline uint64_t av_const av_bswap64(uint64_t x) +{ + union { + uint64_t ll; + uint32_t l[2]; + } w, r; + w.ll = x; + r.l[0] = av_bswap32 (w.l[1]); + r.l[1] = av_bswap32 (w.l[0]); + return r.ll; +} +#endif + +// be2ne ... big-endian to native-endian +// le2ne ... little-endian to native-endian + +#if AV_HAVE_BIGENDIAN +#define av_be2ne16(x) (x) +#define av_be2ne32(x) (x) +#define av_be2ne64(x) (x) +#define av_le2ne16(x) av_bswap16(x) +#define av_le2ne32(x) av_bswap32(x) +#define av_le2ne64(x) av_bswap64(x) +#define AV_BE2NEC(s, x) (x) +#define AV_LE2NEC(s, x) AV_BSWAPC(s, x) +#else +#define av_be2ne16(x) av_bswap16(x) +#define av_be2ne32(x) av_bswap32(x) +#define av_be2ne64(x) av_bswap64(x) +#define av_le2ne16(x) (x) +#define av_le2ne32(x) (x) +#define av_le2ne64(x) (x) +#define AV_BE2NEC(s, x) AV_BSWAPC(s, x) +#define AV_LE2NEC(s, x) (x) +#endif + +#define AV_BE2NE16C(x) AV_BE2NEC(16, x) +#define AV_BE2NE32C(x) AV_BE2NEC(32, x) +#define AV_BE2NE64C(x) AV_BE2NEC(64, x) +#define AV_LE2NE16C(x) AV_LE2NEC(16, x) +#define AV_LE2NE32C(x) AV_LE2NEC(32, x) +#define AV_LE2NE64C(x) AV_LE2NEC(64, x) + +#endif /* AVUTIL_BSWAP_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/common.h b/tizen/distrib/libav/x86_64/include/libavutil/common.h new file mode 100644 index 0000000000..a985fa4804 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/common.h @@ -0,0 +1,385 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * common internal and external API header + */ + +#ifndef AVUTIL_COMMON_H +#define AVUTIL_COMMON_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include "attributes.h" +#include "libavutil/avconfig.h" + +#if AV_HAVE_BIGENDIAN +# define AV_NE(be, le) (be) +#else +# define AV_NE(be, le) (le) +#endif + +//rounded division & shift +#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) +/* assume b>0 */ +#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) +#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) +#define FFSIGN(a) ((a) > 0 ? 1 : -1) + +#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) +#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) +#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) +#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) + +#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) +#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) +#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) + +/* misc math functions */ +extern const uint8_t ff_log2_tab[256]; + +extern const uint8_t av_reverse[256]; + +static av_always_inline av_const int av_log2_c(unsigned int v) +{ + int n = 0; + if (v & 0xffff0000) { + v >>= 16; + n += 16; + } + if (v & 0xff00) { + v >>= 8; + n += 8; + } + n += ff_log2_tab[v]; + + return n; +} + +static av_always_inline av_const int av_log2_16bit_c(unsigned int v) +{ + int n = 0; + if (v & 0xff00) { + v >>= 8; + n += 8; + } + n += ff_log2_tab[v]; + + return n; +} + +#ifdef HAVE_AV_CONFIG_H +# include "config.h" +# include "intmath.h" +#endif + +/* Pull in unguarded fallback defines at the end of this file. */ +#include "common.h" + +/** + * Clip a signed integer value into the amin-amax range. + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static av_always_inline av_const int av_clip_c(int a, int amin, int amax) +{ + if (a < amin) return amin; + else if (a > amax) return amax; + else return a; +} + +/** + * Clip a signed integer value into the 0-255 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const uint8_t av_clip_uint8_c(int a) +{ + if (a&(~0xFF)) return (-a)>>31; + else return a; +} + +/** + * Clip a signed integer value into the -128,127 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int8_t av_clip_int8_c(int a) +{ + if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F; + else return a; +} + +/** + * Clip a signed integer value into the 0-65535 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const uint16_t av_clip_uint16_c(int a) +{ + if (a&(~0xFFFF)) return (-a)>>31; + else return a; +} + +/** + * Clip a signed integer value into the -32768,32767 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int16_t av_clip_int16_c(int a) +{ + if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF; + else return a; +} + +/** + * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) +{ + if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF; + else return a; +} + +/** + * Clip a signed integer to an unsigned power of two range. + * @param a value to clip + * @param p bit position to clip at + * @return clipped value + */ +static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) +{ + if (a & ~((1<> 31 & ((1< amax) return amax; + else return a; +} + +/** Compute ceil(log2(x)). + * @param x value used to compute ceil(log2(x)) + * @return computed ceiling of log2(x) + */ +static av_always_inline av_const int av_ceil_log2_c(int x) +{ + return av_log2((x - 1) << 1); +} + +/** + * Count number of bits set to one in x + * @param x value to count bits of + * @return the number of bits set to one in x + */ +static av_always_inline av_const int av_popcount_c(uint32_t x) +{ + x -= (x >> 1) & 0x55555555; + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x + (x >> 4)) & 0x0F0F0F0F; + x += x >> 8; + return (x + (x >> 16)) & 0x3F; +} + +#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24)) +#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((a) << 24)) + +/** + * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. + * + * @param val Output value, must be an lvalue of type uint32_t. + * @param GET_BYTE Expression reading one byte from the input. + * Evaluated up to 7 times (4 for the currently + * assigned Unicode range). With a memory buffer + * input, this could be *ptr++. + * @param ERROR Expression to be evaluated on invalid input, + * typically a goto statement. + */ +#define GET_UTF8(val, GET_BYTE, ERROR)\ + val= GET_BYTE;\ + {\ + int ones= 7 - av_log2(val ^ 255);\ + if(ones==1)\ + ERROR\ + val&= 127>>ones;\ + while(--ones > 0){\ + int tmp= GET_BYTE - 128;\ + if(tmp>>6)\ + ERROR\ + val= (val<<6) + tmp;\ + }\ + } + +/** + * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. + * + * @param val Output value, must be an lvalue of type uint32_t. + * @param GET_16BIT Expression returning two bytes of UTF-16 data converted + * to native byte order. Evaluated one or two times. + * @param ERROR Expression to be evaluated on invalid input, + * typically a goto statement. + */ +#define GET_UTF16(val, GET_16BIT, ERROR)\ + val = GET_16BIT;\ + {\ + unsigned int hi = val - 0xD800;\ + if (hi < 0x800) {\ + val = GET_16BIT - 0xDC00;\ + if (val > 0x3FFU || hi > 0x3FFU)\ + ERROR\ + val += (hi<<10) + 0x10000;\ + }\ + }\ + +/*! + * \def PUT_UTF8(val, tmp, PUT_BYTE) + * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). + * \param val is an input-only argument and should be of type uint32_t. It holds + * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If + * val is given as a function it is executed only once. + * \param tmp is a temporary variable and should be of type uint8_t. It + * represents an intermediate value during conversion that is to be + * output by PUT_BYTE. + * \param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. + * It could be a function or a statement, and uses tmp as the input byte. + * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be + * executed up to 4 times for values in the valid UTF-8 range and up to + * 7 times in the general case, depending on the length of the converted + * Unicode character. + */ +#define PUT_UTF8(val, tmp, PUT_BYTE)\ + {\ + int bytes, shift;\ + uint32_t in = val;\ + if (in < 0x80) {\ + tmp = in;\ + PUT_BYTE\ + } else {\ + bytes = (av_log2(in) + 4) / 5;\ + shift = (bytes - 1) * 6;\ + tmp = (256 - (256 >> bytes)) | (in >> shift);\ + PUT_BYTE\ + while (shift >= 6) {\ + shift -= 6;\ + tmp = 0x80 | ((in >> shift) & 0x3f);\ + PUT_BYTE\ + }\ + }\ + } + +/*! + * \def PUT_UTF16(val, tmp, PUT_16BIT) + * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). + * \param val is an input-only argument and should be of type uint32_t. It holds + * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If + * val is given as a function it is executed only once. + * \param tmp is a temporary variable and should be of type uint16_t. It + * represents an intermediate value during conversion that is to be + * output by PUT_16BIT. + * \param PUT_16BIT writes the converted UTF-16 data to any proper destination + * in desired endianness. It could be a function or a statement, and uses tmp + * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" + * PUT_BYTE will be executed 1 or 2 times depending on input character. + */ +#define PUT_UTF16(val, tmp, PUT_16BIT)\ + {\ + uint32_t in = val;\ + if (in < 0x10000) {\ + tmp = in;\ + PUT_16BIT\ + } else {\ + tmp = 0xD800 | ((in - 0x10000) >> 10);\ + PUT_16BIT\ + tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ + PUT_16BIT\ + }\ + }\ + + + +#include "mem.h" + +#ifdef HAVE_AV_CONFIG_H +# include "internal.h" +#endif /* HAVE_AV_CONFIG_H */ + +#endif /* AVUTIL_COMMON_H */ + +/* + * The following definitions are outside the multiple inclusion guard + * to ensure they are immediately available in intmath.h. + */ + +#ifndef av_log2 +# define av_log2 av_log2_c +#endif +#ifndef av_log2_16bit +# define av_log2_16bit av_log2_16bit_c +#endif +#ifndef av_ceil_log2 +# define av_ceil_log2 av_ceil_log2_c +#endif +#ifndef av_clip +# define av_clip av_clip_c +#endif +#ifndef av_clip_uint8 +# define av_clip_uint8 av_clip_uint8_c +#endif +#ifndef av_clip_int8 +# define av_clip_int8 av_clip_int8_c +#endif +#ifndef av_clip_uint16 +# define av_clip_uint16 av_clip_uint16_c +#endif +#ifndef av_clip_int16 +# define av_clip_int16 av_clip_int16_c +#endif +#ifndef av_clipl_int32 +# define av_clipl_int32 av_clipl_int32_c +#endif +#ifndef av_clip_uintp2 +# define av_clip_uintp2 av_clip_uintp2_c +#endif +#ifndef av_clipf +# define av_clipf av_clipf_c +#endif +#ifndef av_popcount +# define av_popcount av_popcount_c +#endif diff --git a/tizen/distrib/libav/x86_64/include/libavutil/cpu.h b/tizen/distrib/libav/x86_64/include/libavutil/cpu.h new file mode 100644 index 0000000000..777cdc01d1 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/cpu.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_CPU_H +#define AVUTIL_CPU_H + +#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ + + /* lower 16 bits - CPU features */ +#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX +#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext +#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW +#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions +#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions +#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster +#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt +#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions +#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster +#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions +#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower +#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions +#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions +#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used +#define AV_CPU_FLAG_IWMMXT 0x0100 ///< XScale IWMMXT +#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard + +/** + * Return the flags which specify extensions supported by the CPU. + */ +int av_get_cpu_flags(void); + +/* The following CPU-specific functions shall not be called directly. */ +int ff_get_cpu_flags_arm(void); +int ff_get_cpu_flags_ppc(void); +int ff_get_cpu_flags_x86(void); + +#endif /* AVUTIL_CPU_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/crc.h b/tizen/distrib/libav/x86_64/include/libavutil/crc.h new file mode 100644 index 0000000000..a934119413 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/crc.h @@ -0,0 +1,44 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_CRC_H +#define AVUTIL_CRC_H + +#include +#include +#include "attributes.h" + +typedef uint32_t AVCRC; + +typedef enum { + AV_CRC_8_ATM, + AV_CRC_16_ANSI, + AV_CRC_16_CCITT, + AV_CRC_32_IEEE, + AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */ + AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */ +}AVCRCId; + +int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size); +const AVCRC *av_crc_get_table(AVCRCId crc_id); +uint32_t av_crc(const AVCRC *ctx, uint32_t start_crc, const uint8_t *buffer, size_t length) av_pure; + +#endif /* AVUTIL_CRC_H */ + diff --git a/tizen/distrib/libav/x86_64/include/libavutil/dict.h b/tizen/distrib/libav/x86_64/include/libavutil/dict.h new file mode 100644 index 0000000000..397ce3852f --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/dict.h @@ -0,0 +1,81 @@ +/* + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Public dictionary API. + */ + +#ifndef AVUTIL_DICT_H +#define AVUTIL_DICT_H + +#define AV_DICT_MATCH_CASE 1 +#define AV_DICT_IGNORE_SUFFIX 2 +#define AV_DICT_DONT_STRDUP_KEY 4 +#define AV_DICT_DONT_STRDUP_VAL 8 +#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. +#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no + delimiter is added, the strings are simply concatenated. */ + +typedef struct { + char *key; + char *value; +} AVDictionaryEntry; + +typedef struct AVDictionary AVDictionary; + +/** + * Get a dictionary entry with matching key. + * + * @param prev Set to the previous matching element to find the next. + * If set to NULL the first matching element is returned. + * @param flags Allows case as well as suffix-insensitive comparisons. + * @return Found entry or NULL, changing key or value leads to undefined behavior. + */ +AVDictionaryEntry * +av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags); + +/** + * Set the given entry in *pm, overwriting an existing entry. + * + * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL + * a dictionary struct is allocated and put in *pm. + * @param key entry key to add to *pm (will be av_strduped depending on flags) + * @param value entry value to add to *pm (will be av_strduped depending on flags). + * Passing a NULL value will cause an existing tag to be deleted. + * @return >= 0 on success otherwise an error code <0 + */ +int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); + +/** + * Copy entries from one AVDictionary struct into another. + * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + * this function will allocate a struct for you and put it in *dst + * @param src pointer to source AVDictionary struct + * @param flags flags to use when setting entries in *dst + * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + */ +void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags); + +/** + * Free all the memory allocated for an AVDictionary struct. + */ +void av_dict_free(AVDictionary **m); + +#endif // AVUTIL_DICT_H diff --git a/tizen/distrib/libav/x86_64/include/libavutil/error.h b/tizen/distrib/libav/x86_64/include/libavutil/error.h new file mode 100644 index 0000000000..ba12d2bfae --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/error.h @@ -0,0 +1,68 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * error code definitions + */ + +#ifndef AVUTIL_ERROR_H +#define AVUTIL_ERROR_H + +#include +#include "avutil.h" + +/* error handling */ +#if EDOM > 0 +#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. +#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. +#else +/* Some platforms have E* and errno already negated. */ +#define AVERROR(e) (e) +#define AVUNERROR(e) (e) +#endif + +#define AVERROR_BSF_NOT_FOUND (-MKTAG(0xF8,'B','S','F')) ///< Bitstream filter not found +#define AVERROR_DECODER_NOT_FOUND (-MKTAG(0xF8,'D','E','C')) ///< Decoder not found +#define AVERROR_DEMUXER_NOT_FOUND (-MKTAG(0xF8,'D','E','M')) ///< Demuxer not found +#define AVERROR_ENCODER_NOT_FOUND (-MKTAG(0xF8,'E','N','C')) ///< Encoder not found +#define AVERROR_EOF (-MKTAG( 'E','O','F',' ')) ///< End of file +#define AVERROR_EXIT (-MKTAG( 'E','X','I','T')) ///< Immediate exit was requested; the called function should not be restarted +#define AVERROR_FILTER_NOT_FOUND (-MKTAG(0xF8,'F','I','L')) ///< Filter not found +#define AVERROR_INVALIDDATA (-MKTAG( 'I','N','D','A')) ///< Invalid data found when processing input +#define AVERROR_MUXER_NOT_FOUND (-MKTAG(0xF8,'M','U','X')) ///< Muxer not found +#define AVERROR_OPTION_NOT_FOUND (-MKTAG(0xF8,'O','P','T')) ///< Option not found +#define AVERROR_PATCHWELCOME (-MKTAG( 'P','A','W','E')) ///< Not yet implemented in Libav, patches welcome +#define AVERROR_PROTOCOL_NOT_FOUND (-MKTAG(0xF8,'P','R','O')) ///< Protocol not found +#define AVERROR_STREAM_NOT_FOUND (-MKTAG(0xF8,'S','T','R')) ///< Stream not found + +/** + * Put a description of the AVERROR code errnum in errbuf. + * In case of failure the global variable errno is set to indicate the + * error. Even in case of failure av_strerror() will print a generic + * error message indicating the errnum provided to errbuf. + * + * @param errnum error code to describe + * @param errbuf buffer to which description is written + * @param errbuf_size the size in bytes of errbuf + * @return 0 on success, a negative value if a description for errnum + * cannot be found + */ +int av_strerror(int errnum, char *errbuf, size_t errbuf_size); + +#endif /* AVUTIL_ERROR_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/eval.h b/tizen/distrib/libav/x86_64/include/libavutil/eval.h new file mode 100644 index 0000000000..c485c69fb1 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/eval.h @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2002 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * simple arithmetic expression evaluator + */ + +#ifndef AVUTIL_EVAL_H +#define AVUTIL_EVAL_H + +#include "avutil.h" + +typedef struct AVExpr AVExpr; + +/** + * Parse and evaluate an expression. + * Note, this is significantly slower than av_expr_eval(). + * + * @param res a pointer to a double where is put the result value of + * the expression, or NAN in case of error + * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" + * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} + * @param const_values a zero terminated array of values for the identifiers from const_names + * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers + * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument + * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers + * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments + * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 + * @param log_ctx parent logging context + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_expr_parse_and_eval(double *res, const char *s, + const char * const *const_names, const double *const_values, + const char * const *func1_names, double (* const *funcs1)(void *, double), + const char * const *func2_names, double (* const *funcs2)(void *, double, double), + void *opaque, int log_offset, void *log_ctx); + +/** + * Parse an expression. + * + * @param expr a pointer where is put an AVExpr containing the parsed + * value in case of successfull parsing, or NULL otherwise. + * The pointed to AVExpr must be freed with av_expr_free() by the user + * when it is not needed anymore. + * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" + * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} + * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers + * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument + * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers + * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments + * @param log_ctx parent logging context + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_expr_parse(AVExpr **expr, const char *s, + const char * const *const_names, + const char * const *func1_names, double (* const *funcs1)(void *, double), + const char * const *func2_names, double (* const *funcs2)(void *, double, double), + int log_offset, void *log_ctx); + +/** + * Evaluate a previously parsed expression. + * + * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names + * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 + * @return the value of the expression + */ +double av_expr_eval(AVExpr *e, const double *const_values, void *opaque); + +/** + * Free a parsed expression previously created with av_expr_parse(). + */ +void av_expr_free(AVExpr *e); + +/** + * Parse the string in numstr and return its value as a double. If + * the string is empty, contains only whitespaces, or does not contain + * an initial substring that has the expected syntax for a + * floating-point number, no conversion is performed. In this case, + * returns a value of zero and the value returned in tail is the value + * of numstr. + * + * @param numstr a string representing a number, may contain one of + * the International System number postfixes, for example 'K', 'M', + * 'G'. If 'i' is appended after the postfix, powers of 2 are used + * instead of powers of 10. The 'B' postfix multiplies the value for + * 8, and can be appended after another postfix or used alone. This + * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix. + * @param tail if non-NULL puts here the pointer to the char next + * after the last parsed character + */ +double av_strtod(const char *numstr, char **tail); + +#endif /* AVUTIL_EVAL_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/fifo.h b/tizen/distrib/libav/x86_64/include/libavutil/fifo.h new file mode 100644 index 0000000000..cd361b0222 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/fifo.h @@ -0,0 +1,116 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * a very simple circular buffer FIFO implementation + */ + +#ifndef AVUTIL_FIFO_H +#define AVUTIL_FIFO_H + +#include + +typedef struct AVFifoBuffer { + uint8_t *buffer; + uint8_t *rptr, *wptr, *end; + uint32_t rndx, wndx; +} AVFifoBuffer; + +/** + * Initialize an AVFifoBuffer. + * @param size of FIFO + * @return AVFifoBuffer or NULL in case of memory allocation failure + */ +AVFifoBuffer *av_fifo_alloc(unsigned int size); + +/** + * Free an AVFifoBuffer. + * @param *f AVFifoBuffer to free + */ +void av_fifo_free(AVFifoBuffer *f); + +/** + * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. + * @param *f AVFifoBuffer to reset + */ +void av_fifo_reset(AVFifoBuffer *f); + +/** + * Return the amount of data in bytes in the AVFifoBuffer, that is the + * amount of data you can read from it. + * @param *f AVFifoBuffer to read from + * @return size + */ +int av_fifo_size(AVFifoBuffer *f); + +/** + * Return the amount of space in bytes in the AVFifoBuffer, that is the + * amount of data you can write into it. + * @param *f AVFifoBuffer to write into + * @return size + */ +int av_fifo_space(AVFifoBuffer *f); + +/** + * Feed data from an AVFifoBuffer to a user-supplied callback. + * @param *f AVFifoBuffer to read from + * @param buf_size number of bytes to read + * @param *func generic read function + * @param *dest data destination + */ +int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); + +/** + * Feed data from a user-supplied callback to an AVFifoBuffer. + * @param *f AVFifoBuffer to write to + * @param *src data source; non-const since it may be used as a + * modifiable context by the function defined in func + * @param size number of bytes to write + * @param *func generic write function; the first parameter is src, + * the second is dest_buf, the third is dest_buf_size. + * func must return the number of bytes written to dest_buf, or <= 0 to + * indicate no more data available to write. + * If func is NULL, src is interpreted as a simple byte array for source data. + * @return the number of bytes written to the FIFO + */ +int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); + +/** + * Resize an AVFifoBuffer. + * @param *f AVFifoBuffer to resize + * @param size new AVFifoBuffer size in bytes + * @return <0 for failure, >=0 otherwise + */ +int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); + +/** + * Read and discard the specified amount of data from an AVFifoBuffer. + * @param *f AVFifoBuffer to read from + * @param size amount of data to read in bytes + */ +void av_fifo_drain(AVFifoBuffer *f, int size); + +static inline uint8_t av_fifo_peek(AVFifoBuffer *f, int offs) +{ + uint8_t *ptr = f->rptr + offs; + if (ptr >= f->end) + ptr -= f->end - f->buffer; + return *ptr; +} +#endif /* AVUTIL_FIFO_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/file.h b/tizen/distrib/libav/x86_64/include/libavutil/file.h new file mode 100644 index 0000000000..c481c37f93 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/file.h @@ -0,0 +1,52 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_FILE_H +#define AVUTIL_FILE_H + +#include "avutil.h" + +/** + * @file + * Misc file utilities. + */ + +/** + * Read the file with name filename, and put its content in a newly + * allocated buffer or map it with mmap() when available. + * In case of success set *bufptr to the read or mmapped buffer, and + * *size to the size in bytes of the buffer in *bufptr. + * The returned buffer must be released with av_file_unmap(). + * + * @param log_offset loglevel offset used for logging + * @param log_ctx context used for logging + * @return a non negative number in case of success, a negative value + * corresponding to an AVERROR error code in case of failure + */ +int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, + int log_offset, void *log_ctx); + +/** + * Unmap or free the buffer bufptr created by av_file_map(). + * + * @param size size in bytes of bufptr, must be the same as returned + * by av_file_map() + */ +void av_file_unmap(uint8_t *bufptr, size_t size); + +#endif /* AVUTIL_FILE_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/imgutils.h b/tizen/distrib/libav/x86_64/include/libavutil/imgutils.h new file mode 100644 index 0000000000..fad4435b94 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/imgutils.h @@ -0,0 +1,130 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_IMGUTILS_H +#define AVUTIL_IMGUTILS_H + +/** + * @file + * misc image utilities + */ + +#include "avutil.h" +#include "pixdesc.h" + +/** + * Compute the max pixel step for each plane of an image with a + * format described by pixdesc. + * + * The pixel step is the distance in bytes between the first byte of + * the group of bytes which describe a pixel component and the first + * byte of the successive group in the same plane for the same + * component. + * + * @param max_pixsteps an array which is filled with the max pixel step + * for each plane. Since a plane may contain different pixel + * components, the computed max_pixsteps[plane] is relative to the + * component in the plane with the max pixel step. + * @param max_pixstep_comps an array which is filled with the component + * for each plane which has the max pixel step. May be NULL. + */ +void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4], + const AVPixFmtDescriptor *pixdesc); + +/** + * Compute the size of an image line with format pix_fmt and width + * width for the plane plane. + * + * @return the computed size in bytes + */ +int av_image_get_linesize(enum PixelFormat pix_fmt, int width, int plane); + +/** + * Fill plane linesizes for an image with pixel format pix_fmt and + * width width. + * + * @param linesizes array to be filled with the linesize for each plane + * @return >= 0 in case of success, a negative error code otherwise + */ +int av_image_fill_linesizes(int linesizes[4], enum PixelFormat pix_fmt, int width); + +/** + * Fill plane data pointers for an image with pixel format pix_fmt and + * height height. + * + * @param data pointers array to be filled with the pointer for each image plane + * @param ptr the pointer to a buffer which will contain the image + * @param linesizes the array containing the linesize for each + * plane, should be filled by av_image_fill_linesizes() + * @return the size in bytes required for the image buffer, a negative + * error code in case of failure + */ +int av_image_fill_pointers(uint8_t *data[4], enum PixelFormat pix_fmt, int height, + uint8_t *ptr, const int linesizes[4]); + +/** + * Allocate an image with size w and h and pixel format pix_fmt, and + * fill pointers and linesizes accordingly. + * The allocated image buffer has to be freed by using + * av_freep(&pointers[0]). + * + * @param align the value to use for buffer size alignment + * @return the size in bytes required for the image buffer, a negative + * error code in case of failure + */ +int av_image_alloc(uint8_t *pointers[4], int linesizes[4], + int w, int h, enum PixelFormat pix_fmt, int align); + +/** + * Copy image plane from src to dst. + * That is, copy "height" number of lines of "bytewidth" bytes each. + * The first byte of each successive line is separated by *_linesize + * bytes. + * + * @param dst_linesize linesize for the image plane in dst + * @param src_linesize linesize for the image plane in src + */ +void av_image_copy_plane(uint8_t *dst, int dst_linesize, + const uint8_t *src, int src_linesize, + int bytewidth, int height); + +/** + * Copy image in src_data to dst_data. + * + * @param dst_linesize linesizes for the image in dst_data + * @param src_linesize linesizes for the image in src_data + */ +void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], + const uint8_t *src_data[4], const int src_linesizes[4], + enum PixelFormat pix_fmt, int width, int height); + +/** + * Check if the given dimension of an image is valid, meaning that all + * bytes of the image can be addressed with a signed int. + * + * @param w the width of the picture + * @param h the height of the picture + * @param log_offset the offset to sum to the log level for logging with log_ctx + * @param log_ctx the parent logging context, it may be NULL + * @return >= 0 if valid, a negative error code otherwise + */ +int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx); + +int ff_set_systematic_pal2(uint32_t pal[256], enum PixelFormat pix_fmt); + +#endif /* AVUTIL_IMGUTILS_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/intfloat_readwrite.h b/tizen/distrib/libav/x86_64/include/libavutil/intfloat_readwrite.h new file mode 100644 index 0000000000..10ecbed76c --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/intfloat_readwrite.h @@ -0,0 +1,40 @@ +/* + * copyright (c) 2005 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_INTFLOAT_READWRITE_H +#define AVUTIL_INTFLOAT_READWRITE_H + +#include +#include "attributes.h" + +/* IEEE 80 bits extended float */ +typedef struct AVExtFloat { + uint8_t exponent[2]; + uint8_t mantissa[8]; +} AVExtFloat; + +double av_int2dbl(int64_t v) av_const; +float av_int2flt(int32_t v) av_const; +double av_ext2dbl(const AVExtFloat ext) av_const; +int64_t av_dbl2int(double d) av_const; +int32_t av_flt2int(float d) av_const; +AVExtFloat av_dbl2ext(double d) av_const; + +#endif /* AVUTIL_INTFLOAT_READWRITE_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/intreadwrite.h b/tizen/distrib/libav/x86_64/include/libavutil/intreadwrite.h new file mode 100644 index 0000000000..01eb27804a --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/intreadwrite.h @@ -0,0 +1,522 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_INTREADWRITE_H +#define AVUTIL_INTREADWRITE_H + +#include +#include "libavutil/avconfig.h" +#include "attributes.h" +#include "bswap.h" + +typedef union { + uint64_t u64; + uint32_t u32[2]; + uint16_t u16[4]; + uint8_t u8 [8]; + double f64; + float f32[2]; +} av_alias av_alias64; + +typedef union { + uint32_t u32; + uint16_t u16[2]; + uint8_t u8 [4]; + float f32; +} av_alias av_alias32; + +typedef union { + uint16_t u16; + uint8_t u8 [2]; +} av_alias av_alias16; + +/* + * Arch-specific headers can provide any combination of + * AV_[RW][BLN](16|24|32|64) and AV_(COPY|SWAP|ZERO)(64|128) macros. + * Preprocessor symbols must be defined, even if these are implemented + * as inline functions. + */ + +#ifdef HAVE_AV_CONFIG_H + +#include "config.h" + +#if ARCH_ARM +# include "arm/intreadwrite.h" +#elif ARCH_AVR32 +# include "avr32/intreadwrite.h" +#elif ARCH_MIPS +# include "mips/intreadwrite.h" +#elif ARCH_PPC +# include "ppc/intreadwrite.h" +#elif ARCH_TOMI +# include "tomi/intreadwrite.h" +#elif ARCH_X86 +# include "x86/intreadwrite.h" +#endif + +#endif /* HAVE_AV_CONFIG_H */ + +/* + * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers. + */ + +#if AV_HAVE_BIGENDIAN + +# if defined(AV_RN16) && !defined(AV_RB16) +# define AV_RB16(p) AV_RN16(p) +# elif !defined(AV_RN16) && defined(AV_RB16) +# define AV_RN16(p) AV_RB16(p) +# endif + +# if defined(AV_WN16) && !defined(AV_WB16) +# define AV_WB16(p, v) AV_WN16(p, v) +# elif !defined(AV_WN16) && defined(AV_WB16) +# define AV_WN16(p, v) AV_WB16(p, v) +# endif + +# if defined(AV_RN24) && !defined(AV_RB24) +# define AV_RB24(p) AV_RN24(p) +# elif !defined(AV_RN24) && defined(AV_RB24) +# define AV_RN24(p) AV_RB24(p) +# endif + +# if defined(AV_WN24) && !defined(AV_WB24) +# define AV_WB24(p, v) AV_WN24(p, v) +# elif !defined(AV_WN24) && defined(AV_WB24) +# define AV_WN24(p, v) AV_WB24(p, v) +# endif + +# if defined(AV_RN32) && !defined(AV_RB32) +# define AV_RB32(p) AV_RN32(p) +# elif !defined(AV_RN32) && defined(AV_RB32) +# define AV_RN32(p) AV_RB32(p) +# endif + +# if defined(AV_WN32) && !defined(AV_WB32) +# define AV_WB32(p, v) AV_WN32(p, v) +# elif !defined(AV_WN32) && defined(AV_WB32) +# define AV_WN32(p, v) AV_WB32(p, v) +# endif + +# if defined(AV_RN64) && !defined(AV_RB64) +# define AV_RB64(p) AV_RN64(p) +# elif !defined(AV_RN64) && defined(AV_RB64) +# define AV_RN64(p) AV_RB64(p) +# endif + +# if defined(AV_WN64) && !defined(AV_WB64) +# define AV_WB64(p, v) AV_WN64(p, v) +# elif !defined(AV_WN64) && defined(AV_WB64) +# define AV_WN64(p, v) AV_WB64(p, v) +# endif + +#else /* AV_HAVE_BIGENDIAN */ + +# if defined(AV_RN16) && !defined(AV_RL16) +# define AV_RL16(p) AV_RN16(p) +# elif !defined(AV_RN16) && defined(AV_RL16) +# define AV_RN16(p) AV_RL16(p) +# endif + +# if defined(AV_WN16) && !defined(AV_WL16) +# define AV_WL16(p, v) AV_WN16(p, v) +# elif !defined(AV_WN16) && defined(AV_WL16) +# define AV_WN16(p, v) AV_WL16(p, v) +# endif + +# if defined(AV_RN24) && !defined(AV_RL24) +# define AV_RL24(p) AV_RN24(p) +# elif !defined(AV_RN24) && defined(AV_RL24) +# define AV_RN24(p) AV_RL24(p) +# endif + +# if defined(AV_WN24) && !defined(AV_WL24) +# define AV_WL24(p, v) AV_WN24(p, v) +# elif !defined(AV_WN24) && defined(AV_WL24) +# define AV_WN24(p, v) AV_WL24(p, v) +# endif + +# if defined(AV_RN32) && !defined(AV_RL32) +# define AV_RL32(p) AV_RN32(p) +# elif !defined(AV_RN32) && defined(AV_RL32) +# define AV_RN32(p) AV_RL32(p) +# endif + +# if defined(AV_WN32) && !defined(AV_WL32) +# define AV_WL32(p, v) AV_WN32(p, v) +# elif !defined(AV_WN32) && defined(AV_WL32) +# define AV_WN32(p, v) AV_WL32(p, v) +# endif + +# if defined(AV_RN64) && !defined(AV_RL64) +# define AV_RL64(p) AV_RN64(p) +# elif !defined(AV_RN64) && defined(AV_RL64) +# define AV_RN64(p) AV_RL64(p) +# endif + +# if defined(AV_WN64) && !defined(AV_WL64) +# define AV_WL64(p, v) AV_WN64(p, v) +# elif !defined(AV_WN64) && defined(AV_WL64) +# define AV_WN64(p, v) AV_WL64(p, v) +# endif + +#endif /* !AV_HAVE_BIGENDIAN */ + +/* + * Define AV_[RW]N helper macros to simplify definitions not provided + * by per-arch headers. + */ + +#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__) + +union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; +union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias; +union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; + +# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l) +# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v)) + +#elif defined(__DECC) + +# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) +# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v)) + +#elif AV_HAVE_FAST_UNALIGNED + +# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s) +# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v)) + +#else + +#ifndef AV_RB16 +# define AV_RB16(x) \ + ((((const uint8_t*)(x))[0] << 8) | \ + ((const uint8_t*)(x))[1]) +#endif +#ifndef AV_WB16 +# define AV_WB16(p, d) do { \ + ((uint8_t*)(p))[1] = (d); \ + ((uint8_t*)(p))[0] = (d)>>8; \ + } while(0) +#endif + +#ifndef AV_RL16 +# define AV_RL16(x) \ + ((((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL16 +# define AV_WL16(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + } while(0) +#endif + +#ifndef AV_RB32 +# define AV_RB32(x) \ + (((uint32_t)((const uint8_t*)(x))[0] << 24) | \ + (((const uint8_t*)(x))[1] << 16) | \ + (((const uint8_t*)(x))[2] << 8) | \ + ((const uint8_t*)(x))[3]) +#endif +#ifndef AV_WB32 +# define AV_WB32(p, d) do { \ + ((uint8_t*)(p))[3] = (d); \ + ((uint8_t*)(p))[2] = (d)>>8; \ + ((uint8_t*)(p))[1] = (d)>>16; \ + ((uint8_t*)(p))[0] = (d)>>24; \ + } while(0) +#endif + +#ifndef AV_RL32 +# define AV_RL32(x) \ + (((uint32_t)((const uint8_t*)(x))[3] << 24) | \ + (((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL32 +# define AV_WL32(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + } while(0) +#endif + +#ifndef AV_RB64 +# define AV_RB64(x) \ + (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ + (uint64_t)((const uint8_t*)(x))[7]) +#endif +#ifndef AV_WB64 +# define AV_WB64(p, d) do { \ + ((uint8_t*)(p))[7] = (d); \ + ((uint8_t*)(p))[6] = (d)>>8; \ + ((uint8_t*)(p))[5] = (d)>>16; \ + ((uint8_t*)(p))[4] = (d)>>24; \ + ((uint8_t*)(p))[3] = (d)>>32; \ + ((uint8_t*)(p))[2] = (d)>>40; \ + ((uint8_t*)(p))[1] = (d)>>48; \ + ((uint8_t*)(p))[0] = (d)>>56; \ + } while(0) +#endif + +#ifndef AV_RL64 +# define AV_RL64(x) \ + (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL64 +# define AV_WL64(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + ((uint8_t*)(p))[4] = (d)>>32; \ + ((uint8_t*)(p))[5] = (d)>>40; \ + ((uint8_t*)(p))[6] = (d)>>48; \ + ((uint8_t*)(p))[7] = (d)>>56; \ + } while(0) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RN(s, p) AV_RB##s(p) +# define AV_WN(s, p, v) AV_WB##s(p, v) +#else +# define AV_RN(s, p) AV_RL##s(p) +# define AV_WN(s, p, v) AV_WL##s(p, v) +#endif + +#endif /* HAVE_FAST_UNALIGNED */ + +#ifndef AV_RN16 +# define AV_RN16(p) AV_RN(16, p) +#endif + +#ifndef AV_RN32 +# define AV_RN32(p) AV_RN(32, p) +#endif + +#ifndef AV_RN64 +# define AV_RN64(p) AV_RN(64, p) +#endif + +#ifndef AV_WN16 +# define AV_WN16(p, v) AV_WN(16, p, v) +#endif + +#ifndef AV_WN32 +# define AV_WN32(p, v) AV_WN(32, p, v) +#endif + +#ifndef AV_WN64 +# define AV_WN64(p, v) AV_WN(64, p, v) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RB(s, p) AV_RN##s(p) +# define AV_WB(s, p, v) AV_WN##s(p, v) +# define AV_RL(s, p) av_bswap##s(AV_RN##s(p)) +# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v)) +#else +# define AV_RB(s, p) av_bswap##s(AV_RN##s(p)) +# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v)) +# define AV_RL(s, p) AV_RN##s(p) +# define AV_WL(s, p, v) AV_WN##s(p, v) +#endif + +#define AV_RB8(x) (((const uint8_t*)(x))[0]) +#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) + +#define AV_RL8(x) AV_RB8(x) +#define AV_WL8(p, d) AV_WB8(p, d) + +#ifndef AV_RB16 +# define AV_RB16(p) AV_RB(16, p) +#endif +#ifndef AV_WB16 +# define AV_WB16(p, v) AV_WB(16, p, v) +#endif + +#ifndef AV_RL16 +# define AV_RL16(p) AV_RL(16, p) +#endif +#ifndef AV_WL16 +# define AV_WL16(p, v) AV_WL(16, p, v) +#endif + +#ifndef AV_RB32 +# define AV_RB32(p) AV_RB(32, p) +#endif +#ifndef AV_WB32 +# define AV_WB32(p, v) AV_WB(32, p, v) +#endif + +#ifndef AV_RL32 +# define AV_RL32(p) AV_RL(32, p) +#endif +#ifndef AV_WL32 +# define AV_WL32(p, v) AV_WL(32, p, v) +#endif + +#ifndef AV_RB64 +# define AV_RB64(p) AV_RB(64, p) +#endif +#ifndef AV_WB64 +# define AV_WB64(p, v) AV_WB(64, p, v) +#endif + +#ifndef AV_RL64 +# define AV_RL64(p) AV_RL(64, p) +#endif +#ifndef AV_WL64 +# define AV_WL64(p, v) AV_WL(64, p, v) +#endif + +#ifndef AV_RB24 +# define AV_RB24(x) \ + ((((const uint8_t*)(x))[0] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[2]) +#endif +#ifndef AV_WB24 +# define AV_WB24(p, d) do { \ + ((uint8_t*)(p))[2] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[0] = (d)>>16; \ + } while(0) +#endif + +#ifndef AV_RL24 +# define AV_RL24(x) \ + ((((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL24 +# define AV_WL24(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + } while(0) +#endif + +/* + * The AV_[RW]NA macros access naturally aligned data + * in a type-safe way. + */ + +#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) +#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) + +#ifndef AV_RN16A +# define AV_RN16A(p) AV_RNA(16, p) +#endif + +#ifndef AV_RN32A +# define AV_RN32A(p) AV_RNA(32, p) +#endif + +#ifndef AV_RN64A +# define AV_RN64A(p) AV_RNA(64, p) +#endif + +#ifndef AV_WN16A +# define AV_WN16A(p, v) AV_WNA(16, p, v) +#endif + +#ifndef AV_WN32A +# define AV_WN32A(p, v) AV_WNA(32, p, v) +#endif + +#ifndef AV_WN64A +# define AV_WN64A(p, v) AV_WNA(64, p, v) +#endif + +/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be + * naturally aligned. They may be implemented using MMX, + * so emms_c() must be called before using any float code + * afterwards. + */ + +#define AV_COPY(n, d, s) \ + (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) + +#ifndef AV_COPY16 +# define AV_COPY16(d, s) AV_COPY(16, d, s) +#endif + +#ifndef AV_COPY32 +# define AV_COPY32(d, s) AV_COPY(32, d, s) +#endif + +#ifndef AV_COPY64 +# define AV_COPY64(d, s) AV_COPY(64, d, s) +#endif + +#ifndef AV_COPY128 +# define AV_COPY128(d, s) \ + do { \ + AV_COPY64(d, s); \ + AV_COPY64((char*)(d)+8, (char*)(s)+8); \ + } while(0) +#endif + +#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) + +#ifndef AV_SWAP64 +# define AV_SWAP64(a, b) AV_SWAP(64, a, b) +#endif + +#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) + +#ifndef AV_ZERO16 +# define AV_ZERO16(d) AV_ZERO(16, d) +#endif + +#ifndef AV_ZERO32 +# define AV_ZERO32(d) AV_ZERO(32, d) +#endif + +#ifndef AV_ZERO64 +# define AV_ZERO64(d) AV_ZERO(64, d) +#endif + +#ifndef AV_ZERO128 +# define AV_ZERO128(d) \ + do { \ + AV_ZERO64(d); \ + AV_ZERO64((char*)(d)+8); \ + } while(0) +#endif + +#endif /* AVUTIL_INTREADWRITE_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/lfg.h b/tizen/distrib/libav/x86_64/include/libavutil/lfg.h new file mode 100644 index 0000000000..904d00a669 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/lfg.h @@ -0,0 +1,62 @@ +/* + * Lagged Fibonacci PRNG + * Copyright (c) 2008 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_LFG_H +#define AVUTIL_LFG_H + +typedef struct { + unsigned int state[64]; + int index; +} AVLFG; + +void av_lfg_init(AVLFG *c, unsigned int seed); + +/** + * Get the next random unsigned 32-bit number using an ALFG. + * + * Please also consider a simple LCG like state= state*1664525+1013904223, + * it may be good enough and faster for your specific use case. + */ +static inline unsigned int av_lfg_get(AVLFG *c){ + c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63]; + return c->state[c->index++ & 63]; +} + +/** + * Get the next random unsigned 32-bit number using a MLFG. + * + * Please also consider av_lfg_get() above, it is faster. + */ +static inline unsigned int av_mlfg_get(AVLFG *c){ + unsigned int a= c->state[(c->index-55) & 63]; + unsigned int b= c->state[(c->index-24) & 63]; + return c->state[c->index++ & 63] = 2*a*b+a+b; +} + +/** + * Get the next two numbers generated by a Box-Muller Gaussian + * generator using the random numbers issued by lfg. + * + * @param out array where the two generated numbers are placed + */ +void av_bmg_get(AVLFG *lfg, double out[2]); + +#endif /* AVUTIL_LFG_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/log.h b/tizen/distrib/libav/x86_64/include/libavutil/log.h new file mode 100644 index 0000000000..c823a763ee --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/log.h @@ -0,0 +1,167 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_LOG_H +#define AVUTIL_LOG_H + +#include +#include "avutil.h" + +/** + * Describe the class of an AVClass context structure. That is an + * arbitrary struct of which the first field is a pointer to an + * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). + */ +typedef struct { + /** + * The name of the class; usually it is the same name as the + * context structure type to which the AVClass is associated. + */ + const char* class_name; + + /** + * A pointer to a function which returns the name of a context + * instance ctx associated with the class. + */ + const char* (*item_name)(void* ctx); + + /** + * a pointer to the first option specified in the class if any or NULL + * + * @see av_set_default_options() + */ + const struct AVOption *option; + + /** + * LIBAVUTIL_VERSION with which this structure was created. + * This is used to allow fields to be added without requiring major + * version bumps everywhere. + */ + + int version; + + /** + * Offset in the structure where log_level_offset is stored. + * 0 means there is no such variable + */ + int log_level_offset_offset; + + /** + * Offset in the structure where a pointer to the parent context for loging is stored. + * for example a decoder that uses eval.c could pass its AVCodecContext to eval as such + * parent context. And a av_log() implementation could then display the parent context + * can be NULL of course + */ + int parent_log_context_offset; + + /** + * A function for extended searching, e.g. in possible + * children objects. + */ + const struct AVOption* (*opt_find)(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags); +} AVClass; + +/* av_log API */ + +#define AV_LOG_QUIET -8 + +/** + * Something went really wrong and we will crash now. + */ +#define AV_LOG_PANIC 0 + +/** + * Something went wrong and recovery is not possible. + * For example, no header was found for a format which depends + * on headers or an illegal combination of parameters is used. + */ +#define AV_LOG_FATAL 8 + +/** + * Something went wrong and cannot losslessly be recovered. + * However, not all future data is affected. + */ +#define AV_LOG_ERROR 16 + +/** + * Something somehow does not look correct. This may or may not + * lead to problems. An example would be the use of '-vstrict -2'. + */ +#define AV_LOG_WARNING 24 + +#define AV_LOG_INFO 32 +#define AV_LOG_VERBOSE 40 + +/** + * Stuff which is only useful for libav* developers. + */ +#define AV_LOG_DEBUG 48 + +/** + * Send the specified message to the log if the level is less than or equal + * to the current av_log_level. By default, all logging messages are sent to + * stderr. This behavior can be altered by setting a different av_vlog callback + * function. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param fmt The format string (printf-compatible) that specifies how + * subsequent arguments are converted to output. + * @see av_vlog + */ +#ifdef __GNUC__ +void av_log(void *avcl, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4))); +#else +void av_log(void *avcl, int level, const char *fmt, ...); +#endif + +void av_vlog(void *avcl, int level, const char *fmt, va_list); +int av_log_get_level(void); +void av_log_set_level(int); +void av_log_set_callback(void (*)(void*, int, const char*, va_list)); +void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl); +const char* av_default_item_name(void* ctx); + +/** + * av_dlog macros + * Useful to print debug messages that shouldn't get compiled in normally. + */ + +#ifdef DEBUG +# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) +#else +# define av_dlog(pctx, ...) +#endif + +/** + * Skip repeated messages, this requires the user app to use av_log() instead of + * (f)printf as the 2 would otherwise interfere and lead to + * "Last message repeated x times" messages below (f)printf messages with some + * bad luck. + * Also to receive the last, "last repeated" line if any, the user app must + * call av_log(NULL, AV_LOG_QUIET, ""); at the end + */ +#define AV_LOG_SKIP_REPEATED 1 +void av_log_set_flags(int arg); + +#endif /* AVUTIL_LOG_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/lzo.h b/tizen/distrib/libav/x86_64/include/libavutil/lzo.h new file mode 100644 index 0000000000..a3924de908 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/lzo.h @@ -0,0 +1,66 @@ +/* + * LZO 1x decompression + * copyright (c) 2006 Reimar Doeffinger + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_LZO_H +#define AVUTIL_LZO_H + +#include + +/** @name Error flags returned by av_lzo1x_decode + * \{ */ +//! end of the input buffer reached before decoding finished +#define AV_LZO_INPUT_DEPLETED 1 +//! decoded data did not fit into output buffer +#define AV_LZO_OUTPUT_FULL 2 +//! a reference to previously decoded data was wrong +#define AV_LZO_INVALID_BACKPTR 4 +//! a non-specific error in the compressed bitstream +#define AV_LZO_ERROR 8 +/** \} */ + +#define AV_LZO_INPUT_PADDING 8 +#define AV_LZO_OUTPUT_PADDING 12 + +/** + * \brief Decodes LZO 1x compressed data. + * \param out output buffer + * \param outlen size of output buffer, number of bytes left are returned here + * \param in input buffer + * \param inlen size of input buffer, number of bytes left are returned here + * \return 0 on success, otherwise a combination of the error flags above + * + * Make sure all buffers are appropriately padded, in must provide + * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. + */ +int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); + +/** + * \brief deliberately overlapping memcpy implementation + * \param dst destination buffer; must be padded with 12 additional bytes + * \param back how many bytes back we start (the initial size of the overlapping window) + * \param cnt number of bytes to copy, must be >= 0 + * + * cnt > back is valid, this will copy the bytes we just copied, + * thus creating a repeating pattern with a period length of back. + */ +void av_memcpy_backptr(uint8_t *dst, int back, int cnt); + +#endif /* AVUTIL_LZO_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/mathematics.h b/tizen/distrib/libav/x86_64/include/libavutil/mathematics.h new file mode 100644 index 0000000000..35494bb391 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/mathematics.h @@ -0,0 +1,112 @@ +/* + * copyright (c) 2005 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_MATHEMATICS_H +#define AVUTIL_MATHEMATICS_H + +#include +#include +#include "attributes.h" +#include "rational.h" + +#ifndef M_E +#define M_E 2.7182818284590452354 /* e */ +#endif +#ifndef M_LN2 +#define M_LN2 0.69314718055994530942 /* log_e 2 */ +#endif +#ifndef M_LN10 +#define M_LN10 2.30258509299404568402 /* log_e 10 */ +#endif +#ifndef M_LOG2_10 +#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ +#endif +#ifndef M_PHI +#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ +#endif +#ifndef M_PI +#define M_PI 3.14159265358979323846 /* pi */ +#endif +#ifndef M_SQRT1_2 +#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ +#endif +#ifndef M_SQRT2 +#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ +#endif +#ifndef NAN +#define NAN (0.0/0.0) +#endif +#ifndef INFINITY +#define INFINITY (1.0/0.0) +#endif + +enum AVRounding { + AV_ROUND_ZERO = 0, ///< Round toward zero. + AV_ROUND_INF = 1, ///< Round away from zero. + AV_ROUND_DOWN = 2, ///< Round toward -infinity. + AV_ROUND_UP = 3, ///< Round toward +infinity. + AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. +}; + +/** + * Return the greatest common divisor of a and b. + * If both a and b are 0 or either or both are <0 then behavior is + * undefined. + */ +int64_t av_const av_gcd(int64_t a, int64_t b); + +/** + * Rescale a 64-bit integer with rounding to nearest. + * A simple a*b/c isn't possible as it can overflow. + */ +int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; + +/** + * Rescale a 64-bit integer with specified rounding. + * A simple a*b/c isn't possible as it can overflow. + */ +int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const; + +/** + * Rescale a 64-bit integer by 2 rational numbers. + */ +int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; + +/** + * Compare 2 timestamps each in its own timebases. + * The result of the function is undefined if one of the timestamps + * is outside the int64_t range when represented in the others timebase. + * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position + */ +int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); + +/** + * Compare 2 integers modulo mod. + * That is we compare integers a and b for which only the least + * significant log2(mod) bits are known. + * + * @param mod must be a power of 2 + * @return a negative value if a is smaller than b + * a positive value if a is greater than b + * 0 if a equals b + */ +int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); + +#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/md5.h b/tizen/distrib/libav/x86_64/include/libavutil/md5.h new file mode 100644 index 0000000000..c178bbb4d5 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/md5.h @@ -0,0 +1,36 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_MD5_H +#define AVUTIL_MD5_H + +#include + +extern const int av_md5_size; + +struct AVMD5; + +void av_md5_init(struct AVMD5 *ctx); +void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len); +void av_md5_final(struct AVMD5 *ctx, uint8_t *dst); +void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len); + +#endif /* AVUTIL_MD5_H */ + diff --git a/tizen/distrib/libav/x86_64/include/libavutil/mem.h b/tizen/distrib/libav/x86_64/include/libavutil/mem.h new file mode 100644 index 0000000000..5dea492021 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/mem.h @@ -0,0 +1,126 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * memory handling functions + */ + +#ifndef AVUTIL_MEM_H +#define AVUTIL_MEM_H + +#include "attributes.h" +#include "avutil.h" + +#if defined(__ICC) && _ICC < 1200 || defined(__SUNPRO_C) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v +#elif defined(__TI_COMPILER_VERSION__) + #define DECLARE_ALIGNED(n,t,v) \ + AV_PRAGMA(DATA_ALIGN(v,n)) \ + t __attribute__((aligned(n))) v + #define DECLARE_ASM_CONST(n,t,v) \ + AV_PRAGMA(DATA_ALIGN(v,n)) \ + static const t __attribute__((aligned(n))) v +#elif defined(__GNUC__) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v +#elif defined(_MSC_VER) + #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v + #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v +#else + #define DECLARE_ALIGNED(n,t,v) t v + #define DECLARE_ASM_CONST(n,t,v) static const t v +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) + #define av_malloc_attrib __attribute__((__malloc__)) +#else + #define av_malloc_attrib +#endif + +#if AV_GCC_VERSION_AT_LEAST(4,3) + #define av_alloc_size(n) __attribute__((alloc_size(n))) +#else + #define av_alloc_size(n) +#endif + +/** + * Allocate a block of size bytes with alignment suitable for all + * memory accesses (including vectors if available on the CPU). + * @param size Size in bytes for the memory block to be allocated. + * @return Pointer to the allocated block, NULL if the block cannot + * be allocated. + * @see av_mallocz() + */ +void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); + +/** + * Allocate or reallocate a block of memory. + * If ptr is NULL and size > 0, allocate a new block. If + * size is zero, free the memory block pointed to by ptr. + * @param size Size in bytes for the memory block to be allocated or + * reallocated. + * @param ptr Pointer to a memory block already allocated with + * av_malloc(z)() or av_realloc() or NULL. + * @return Pointer to a newly reallocated block or NULL if the block + * cannot be reallocated or the function is used to free the memory block. + * @see av_fast_realloc() + */ +void *av_realloc(void *ptr, size_t size) av_alloc_size(2); + +/** + * Free a memory block which has been allocated with av_malloc(z)() or + * av_realloc(). + * @param ptr Pointer to the memory block which should be freed. + * @note ptr = NULL is explicitly allowed. + * @note It is recommended that you use av_freep() instead. + * @see av_freep() + */ +void av_free(void *ptr); + +/** + * Allocate a block of size bytes with alignment suitable for all + * memory accesses (including vectors if available on the CPU) and + * zero all the bytes of the block. + * @param size Size in bytes for the memory block to be allocated. + * @return Pointer to the allocated block, NULL if it cannot be allocated. + * @see av_malloc() + */ +void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); + +/** + * Duplicate the string s. + * @param s string to be duplicated + * @return Pointer to a newly allocated string containing a + * copy of s or NULL if the string cannot be allocated. + */ +char *av_strdup(const char *s) av_malloc_attrib; + +/** + * Free a memory block which has been allocated with av_malloc(z)() or + * av_realloc() and set the pointer pointing to it to NULL. + * @param ptr Pointer to the pointer to the memory block which should + * be freed. + * @see av_free() + */ +void av_freep(void *ptr); + +#endif /* AVUTIL_MEM_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/opt.h b/tizen/distrib/libav/x86_64/include/libavutil/opt.h new file mode 100644 index 0000000000..ce65865069 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/opt.h @@ -0,0 +1,242 @@ +/* + * AVOptions + * copyright (c) 2005 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_OPT_H +#define AVUTIL_OPT_H + +/** + * @file + * AVOptions + */ + +#include "rational.h" +#include "avutil.h" +#include "dict.h" + +enum AVOptionType{ + FF_OPT_TYPE_FLAGS, + FF_OPT_TYPE_INT, + FF_OPT_TYPE_INT64, + FF_OPT_TYPE_DOUBLE, + FF_OPT_TYPE_FLOAT, + FF_OPT_TYPE_STRING, + FF_OPT_TYPE_RATIONAL, + FF_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length + FF_OPT_TYPE_CONST=128, +}; + +/** + * AVOption + */ +typedef struct AVOption { + const char *name; + + /** + * short English help text + * @todo What about other languages? + */ + const char *help; + + /** + * The offset relative to the context structure where the option + * value is stored. It should be 0 for named constants. + */ + int offset; + enum AVOptionType type; + + /** + * the default value for scalar options + */ + union { + double dbl; + const char *str; + /* TODO those are unused now */ + int64_t i64; + AVRational q; + } default_val; + double min; ///< minimum valid value for the option + double max; ///< maximum valid value for the option + + int flags; +#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding +#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding +#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ... +#define AV_OPT_FLAG_AUDIO_PARAM 8 +#define AV_OPT_FLAG_VIDEO_PARAM 16 +#define AV_OPT_FLAG_SUBTITLE_PARAM 32 +//FIXME think about enc-audio, ... style flags + + /** + * The logical unit to which the option belongs. Non-constant + * options and corresponding named constants share the same + * unit. May be NULL. + */ + const char *unit; +} AVOption; + +#if FF_API_FIND_OPT +/** + * Look for an option in obj. Look only for the options which + * have the flags set as specified in mask and flags (that is, + * for which it is the case that opt->flags & mask == flags). + * + * @param[in] obj a pointer to a struct whose first element is a + * pointer to an AVClass + * @param[in] name the name of the option to look for + * @param[in] unit the unit of the option to look for, or any if NULL + * @return a pointer to the option found, or NULL if no option + * has been found + * + * @deprecated use av_opt_find. + */ +attribute_deprecated +const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags); +#endif + +/** + * Set the field of obj with the given name to value. + * + * @param[in] obj A struct whose first element is a pointer to an + * AVClass. + * @param[in] name the name of the field to set + * @param[in] val The value to set. If the field is not of a string + * type, then the given string is parsed. + * SI postfixes and some named scalars are supported. + * If the field is of a numeric type, it has to be a numeric or named + * scalar. Behavior with more than one scalar and +- infix operators + * is undefined. + * If the field is of a flags type, it has to be a sequence of numeric + * scalars or named flags separated by '+' or '-'. Prefixing a flag + * with '+' causes it to be set without affecting the other flags; + * similarly, '-' unsets a flag. + * @param[out] o_out if non-NULL put here a pointer to the AVOption + * found + * @param alloc when 1 then the old value will be av_freed() and the + * new av_strduped() + * when 0 then no av_free() nor av_strdup() will be used + * @return 0 if the value has been set, or an AVERROR code in case of + * error: + * AVERROR_OPTION_NOT_FOUND if no matching option exists + * AVERROR(ERANGE) if the value is out of range + * AVERROR(EINVAL) if the value is not valid + */ +int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out); + +const AVOption *av_set_double(void *obj, const char *name, double n); +const AVOption *av_set_q(void *obj, const char *name, AVRational n); +const AVOption *av_set_int(void *obj, const char *name, int64_t n); +double av_get_double(void *obj, const char *name, const AVOption **o_out); +AVRational av_get_q(void *obj, const char *name, const AVOption **o_out); +int64_t av_get_int(void *obj, const char *name, const AVOption **o_out); +const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len); +const AVOption *av_next_option(void *obj, const AVOption *last); + +/** + * Show the obj options. + * + * @param req_flags requested flags for the options to show. Show only the + * options for which it is opt->flags & req_flags. + * @param rej_flags rejected flags for the options to show. Show only the + * options for which it is !(opt->flags & req_flags). + * @param av_log_obj log context to use for showing the options + */ +int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); + +void av_opt_set_defaults(void *s); +void av_opt_set_defaults2(void *s, int mask, int flags); + +/** + * Parse the key/value pairs list in opts. For each key/value pair + * found, stores the value in the field in ctx that is named like the + * key. ctx must be an AVClass context, storing is done using + * AVOptions. + * + * @param key_val_sep a 0-terminated list of characters used to + * separate key from value + * @param pairs_sep a 0-terminated list of characters used to separate + * two pairs from each other + * @return the number of successfully set key/value pairs, or a negative + * value corresponding to an AVERROR code in case of error: + * AVERROR(EINVAL) if opts cannot be parsed, + * the error code issued by av_set_string3() if a key/value pair + * cannot be set + */ +int av_set_options_string(void *ctx, const char *opts, + const char *key_val_sep, const char *pairs_sep); + +/** + * Free all string and binary options in obj. + */ +void av_opt_free(void *obj); + +/** + * Check whether a particular flag is set in a flags field. + * + * @param field_name the name of the flag field option + * @param flag_name the name of the flag to check + * @return non-zero if the flag is set, zero if the flag isn't set, + * isn't of the right type, or the flags field doesn't exist. + */ +int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); + +/* + * Set all the options from a given dictionary on an object. + * + * @param obj a struct whose first element is a pointer to AVClass + * @param options options to process. This dictionary will be freed and replaced + * by a new one containing all options not found in obj. + * Of course this new dictionary needs to be freed by caller + * with av_dict_free(). + * + * @return 0 on success, a negative AVERROR if some option was found in obj, + * but could not be set. + * + * @see av_dict_copy() + */ +int av_opt_set_dict(void *obj, struct AVDictionary **options); + +#define AV_OPT_SEARCH_CHILDREN 0x0001 /**< Search in possible children of the + given object first. */ + +/** + * Look for an option in an object. Consider only options which + * have all the specified flags set. + * + * @param[in] obj A pointer to a struct whose first element is a + * pointer to an AVClass. + * @param[in] name The name of the option to look for. + * @param[in] unit When searching for named constants, name of the unit + * it belongs to. + * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). + * @param search_flags A combination of AV_OPT_SEARCH_*. + * + * @return A pointer to the option found, or NULL if no option + * was found. + * + * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable + * directly with av_set_string3(). Use special calls which take an options + * AVDictionary (e.g. avformat_open_input()) to set options found with this + * flag. + */ +const AVOption *av_opt_find(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags); + +#endif /* AVUTIL_OPT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/parseutils.h b/tizen/distrib/libav/x86_64/include/libavutil/parseutils.h new file mode 100644 index 0000000000..befbbb56a1 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/parseutils.h @@ -0,0 +1,117 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_PARSEUTILS_H +#define AVUTIL_PARSEUTILS_H + +#include "rational.h" + +/** + * @file + * misc parsing utilities + */ + +/** + * Parse str and put in width_ptr and height_ptr the detected values. + * + * @param[in,out] width_ptr pointer to the variable which will contain the detected + * width value + * @param[in,out] height_ptr pointer to the variable which will contain the detected + * height value + * @param[in] str the string to parse: it has to be a string in the format + * width x height or a valid video size abbreviation. + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str); + +/** + * Parse str and store the detected values in *rate. + * + * @param[in,out] rate pointer to the AVRational which will contain the detected + * frame rate + * @param[in] str the string to parse: it has to be a string in the format + * rate_num / rate_den, a float number or a valid video rate abbreviation + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_video_rate(AVRational *rate, const char *str); + +/** + * Put the RGBA values that correspond to color_string in rgba_color. + * + * @param color_string a string specifying a color. It can be the name of + * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence, + * possibly followed by "@" and a string representing the alpha + * component. + * The alpha component may be a string composed by "0x" followed by an + * hexadecimal number or a decimal number between 0.0 and 1.0, which + * represents the opacity value (0x00/0.0 means completely transparent, + * 0xff/1.0 completely opaque). + * If the alpha component is not specified then 0xff is assumed. + * The string "random" will result in a random color. + * @param slen length of the initial part of color_string containing the + * color. It can be set to -1 if color_string is a null terminated string + * containing nothing else than the color. + * @return >= 0 in case of success, a negative value in case of + * failure (for example if color_string cannot be parsed). + */ +int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, + void *log_ctx); + +/** + * Parses timestr and returns in *time a corresponding number of + * microseconds. + * + * @param timeval puts here the number of microseconds corresponding + * to the string in timestr. If the string represents a duration, it + * is the number of microseconds contained in the time interval. If + * the string is a date, is the number of microseconds since 1st of + * January, 1970 up to the time of the parsed date. If timestr cannot + * be successfully parsed, set *time to INT64_MIN. + + * @param datestr a string representing a date or a duration. + * - If a date the syntax is: + * @code + * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH[:MM[:SS[.m...]]]}|{HH[MM[SS[.m...]]]}}[Z] + * now + * @endcode + * If the value is "now" it takes the current time. + * Time is local time unless Z is appended, in which case it is + * interpreted as UTC. + * If the year-month-day part is not specified it takes the current + * year-month-day. + * - If a duration the syntax is: + * @code + * [-]HH[:MM[:SS[.m...]]] + * [-]S+[.m...] + * @endcode + * @param duration flag which tells how to interpret timestr, if not + * zero timestr is interpreted as a duration, otherwise as a date + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_parse_time(int64_t *timeval, const char *timestr, int duration); + +/** + * Attempt to find a specific tag in a URL. + * + * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. + * Return 1 if found. + */ +int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); + +#endif /* AVUTIL_PARSEUTILS_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/pixdesc.h b/tizen/distrib/libav/x86_64/include/libavutil/pixdesc.h new file mode 100644 index 0000000000..979a23539b --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/pixdesc.h @@ -0,0 +1,175 @@ +/* + * pixel format descriptor + * Copyright (c) 2009 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_PIXDESC_H +#define AVUTIL_PIXDESC_H + +#include +#include "pixfmt.h" + +typedef struct AVComponentDescriptor{ + uint16_t plane :2; ///< which of the 4 planes contains the component + + /** + * Number of elements between 2 horizontally consecutive pixels minus 1. + * Elements are bits for bitstream formats, bytes otherwise. + */ + uint16_t step_minus1 :3; + + /** + * Number of elements before the component of the first pixel plus 1. + * Elements are bits for bitstream formats, bytes otherwise. + */ + uint16_t offset_plus1 :3; + uint16_t shift :3; ///< number of least significant bits that must be shifted away to get the value + uint16_t depth_minus1 :4; ///< number of bits in the component minus 1 +}AVComponentDescriptor; + +/** + * Descriptor that unambiguously describes how the bits of a pixel are + * stored in the up to 4 data planes of an image. It also stores the + * subsampling factors and number of components. + * + * @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV + * and all the YUV variants) AVPixFmtDescriptor just stores how values + * are stored not what these values represent. + */ +typedef struct AVPixFmtDescriptor{ + const char *name; + uint8_t nb_components; ///< The number of components each pixel has, (1-4) + + /** + * Amount to shift the luma width right to find the chroma width. + * For YV12 this is 1 for example. + * chroma_width = -((-luma_width) >> log2_chroma_w) + * The note above is needed to ensure rounding up. + * This value only refers to the chroma components. + */ + uint8_t log2_chroma_w; ///< chroma_width = -((-luma_width )>>log2_chroma_w) + + /** + * Amount to shift the luma height right to find the chroma height. + * For YV12 this is 1 for example. + * chroma_height= -((-luma_height) >> log2_chroma_h) + * The note above is needed to ensure rounding up. + * This value only refers to the chroma components. + */ + uint8_t log2_chroma_h; + uint8_t flags; + + /** + * Parameters that describe how pixels are packed. If the format + * has chroma components, they must be stored in comp[1] and + * comp[2]. + */ + AVComponentDescriptor comp[4]; +}AVPixFmtDescriptor; + +#define PIX_FMT_BE 1 ///< Pixel format is big-endian. +#define PIX_FMT_PAL 2 ///< Pixel format has a palette in data[1], values are indexes in this palette. +#define PIX_FMT_BITSTREAM 4 ///< All values of a component are bit-wise packed end to end. +#define PIX_FMT_HWACCEL 8 ///< Pixel format is an HW accelerated format. + +/** + * The array of all the pixel format descriptors. + */ +extern const AVPixFmtDescriptor av_pix_fmt_descriptors[]; + +/** + * Read a line from an image, and write the values of the + * pixel format component c to dst. + * + * @param data the array containing the pointers to the planes of the image + * @param linesize the array containing the linesizes of the image + * @param desc the pixel format descriptor for the image + * @param x the horizontal coordinate of the first pixel to read + * @param y the vertical coordinate of the first pixel to read + * @param w the width of the line to read, that is the number of + * values to write to dst + * @param read_pal_component if not zero and the format is a paletted + * format writes the values corresponding to the palette + * component c in data[1] to dst, rather than the palette indexes in + * data[0]. The behavior is undefined if the format is not paletted. + */ +void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4], + const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component); + +/** + * Write the values from src to the pixel format component c of an + * image line. + * + * @param src array containing the values to write + * @param data the array containing the pointers to the planes of the + * image to write into. It is supposed to be zeroed. + * @param linesize the array containing the linesizes of the image + * @param desc the pixel format descriptor for the image + * @param x the horizontal coordinate of the first pixel to write + * @param y the vertical coordinate of the first pixel to write + * @param w the width of the line to write, that is the number of + * values to write to the image line + */ +void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4], + const AVPixFmtDescriptor *desc, int x, int y, int c, int w); + +/** + * Return the pixel format corresponding to name. + * + * If there is no pixel format with name name, then looks for a + * pixel format with the name corresponding to the native endian + * format of name. + * For example in a little-endian system, first looks for "gray16", + * then for "gray16le". + * + * Finally if no pixel format has been found, returns PIX_FMT_NONE. + */ +enum PixelFormat av_get_pix_fmt(const char *name); + +/** + * Return the short name for a pixel format, NULL in case pix_fmt is + * unknown. + * + * @see av_get_pix_fmt(), av_get_pix_fmt_string() + */ +const char *av_get_pix_fmt_name(enum PixelFormat pix_fmt); + +/** + * Print in buf the string corresponding to the pixel format with + * number pix_fmt, or an header if pix_fmt is negative. + * + * @param buf the buffer where to write the string + * @param buf_size the size of buf + * @param pix_fmt the number of the pixel format to print the + * corresponding info string, or a negative value to print the + * corresponding header. + */ +char *av_get_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt); + +/** + * Return the number of bits per pixel used by the pixel format + * described by pixdesc. + * + * The returned number of bits refers to the number of bits actually + * used for storing the pixel information, that is padding bits are + * not counted. + */ +int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); + +#endif /* AVUTIL_PIXDESC_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/pixfmt.h b/tizen/distrib/libav/x86_64/include/libavutil/pixfmt.h new file mode 100644 index 0000000000..ea3619ef6f --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/pixfmt.h @@ -0,0 +1,184 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_PIXFMT_H +#define AVUTIL_PIXFMT_H + +/** + * @file + * pixel format definitions + * + * @warning This file has to be considered an internal but installed + * header, so it should not be directly included in your projects. + */ + +#include "libavutil/avconfig.h" + +/** + * Pixel format. Notes: + * + * PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA + * color is put together as: + * (A << 24) | (R << 16) | (G << 8) | B + * This is stored as BGRA on little-endian CPU architectures and ARGB on + * big-endian CPUs. + * + * When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized + * image data is stored in AVFrame.data[0]. The palette is transported in + * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is + * formatted the same as in PIX_FMT_RGB32 described above (i.e., it is + * also endian-specific). Note also that the individual RGB palette + * components stored in AVFrame.data[1] should be in the range 0..255. + * This is important as many custom PAL8 video codecs that were designed + * to run on the IBM VGA graphics adapter use 6-bit palette components. + * + * For all the 8bit per pixel formats, an RGB32 palette is in data[1] like + * for pal8. This palette is filled in automatically by the function + * allocating the picture. + * + * Note, make sure that all newly added big endian formats have pix_fmt&1==1 + * and that all newly added little endian formats have pix_fmt&1==0 + * this allows simpler detection of big vs little endian. + */ + +#define PixelFormat FFmpeg_PixelFormat + +enum PixelFormat { + PIX_FMT_NONE= -1, + PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) + PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr + PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... + PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... + PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) + PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) + PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) + PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) + PIX_FMT_GRAY8, ///< Y , 8bpp + PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb + PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb + PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette + PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range + PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range + PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range + PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing + PIX_FMT_XVMC_MPEG2_IDCT, + PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 + PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 + PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) + PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) + PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) + PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) + PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) + PIX_FMT_NV21, ///< as above, but U and V bytes are swapped + + PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... + PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... + PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... + PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... + + PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian + PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian + PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) + PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range + PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) + PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian + PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian + + PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian + PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian + PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 + PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 + + PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian + PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian + PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 + PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 + + PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers + PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers + PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + + PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer + + PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 + PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 + PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 + PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 + PIX_FMT_Y400A, ///< 8bit gray, 8bit alpha + PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian + PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian + PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions +}; + +#if AV_HAVE_BIGENDIAN +# define PIX_FMT_NE(be, le) PIX_FMT_##be +#else +# define PIX_FMT_NE(be, le) PIX_FMT_##le +#endif + +#define PIX_FMT_RGB32 PIX_FMT_NE(ARGB, BGRA) +#define PIX_FMT_RGB32_1 PIX_FMT_NE(RGBA, ABGR) +#define PIX_FMT_BGR32 PIX_FMT_NE(ABGR, RGBA) +#define PIX_FMT_BGR32_1 PIX_FMT_NE(BGRA, ARGB) + +#define PIX_FMT_GRAY16 PIX_FMT_NE(GRAY16BE, GRAY16LE) +#define PIX_FMT_RGB48 PIX_FMT_NE(RGB48BE, RGB48LE) +#define PIX_FMT_RGB565 PIX_FMT_NE(RGB565BE, RGB565LE) +#define PIX_FMT_RGB555 PIX_FMT_NE(RGB555BE, RGB555LE) +#define PIX_FMT_RGB444 PIX_FMT_NE(RGB444BE, RGB444LE) +#define PIX_FMT_BGR48 PIX_FMT_NE(BGR48BE, BGR48LE) +#define PIX_FMT_BGR565 PIX_FMT_NE(BGR565BE, BGR565LE) +#define PIX_FMT_BGR555 PIX_FMT_NE(BGR555BE, BGR555LE) +#define PIX_FMT_BGR444 PIX_FMT_NE(BGR444BE, BGR444LE) + +#define PIX_FMT_YUV420P9 PIX_FMT_NE(YUV420P9BE , YUV420P9LE) +#define PIX_FMT_YUV444P9 PIX_FMT_NE(YUV444P9BE , YUV444P9LE) +#define PIX_FMT_YUV420P10 PIX_FMT_NE(YUV420P10BE, YUV420P10LE) +#define PIX_FMT_YUV422P10 PIX_FMT_NE(YUV422P10BE, YUV422P10LE) +#define PIX_FMT_YUV444P10 PIX_FMT_NE(YUV444P10BE, YUV444P10LE) +#define PIX_FMT_YUV420P16 PIX_FMT_NE(YUV420P16BE, YUV420P16LE) +#define PIX_FMT_YUV422P16 PIX_FMT_NE(YUV422P16BE, YUV422P16LE) +#define PIX_FMT_YUV444P16 PIX_FMT_NE(YUV444P16BE, YUV444P16LE) + +#endif /* AVUTIL_PIXFMT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/random_seed.h b/tizen/distrib/libav/x86_64/include/libavutil/random_seed.h new file mode 100644 index 0000000000..8157d42d73 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/random_seed.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2009 Baptiste Coudurier + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_RANDOM_SEED_H +#define AVUTIL_RANDOM_SEED_H + +#include + +/** + * Get a seed to use in conjunction with random functions. + */ +uint32_t av_get_random_seed(void); + +#endif /* AVUTIL_RANDOM_SEED_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/rational.h b/tizen/distrib/libav/x86_64/include/libavutil/rational.h new file mode 100644 index 0000000000..a4871148bd --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/rational.h @@ -0,0 +1,135 @@ +/* + * rational numbers + * Copyright (c) 2003 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * rational numbers + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_RATIONAL_H +#define AVUTIL_RATIONAL_H + +#include +#include +#include "attributes.h" + +/** + * rational number numerator/denominator + */ +typedef struct AVRational{ + int num; ///< numerator + int den; ///< denominator +} AVRational; + +/** + * Compare two rationals. + * @param a first rational + * @param b second rational + * @return 0 if a==b, 1 if a>b, -1 if a>63)|1; + else if(b.den && a.den) return 0; + else if(a.num && b.num) return (a.num>>31) - (b.num>>31); + else return INT_MIN; +} + +/** + * Convert rational to double. + * @param a rational to convert + * @return (double) a + */ +static inline double av_q2d(AVRational a){ + return a.num / (double) a.den; +} + +/** + * Reduce a fraction. + * This is useful for framerate calculations. + * @param dst_num destination numerator + * @param dst_den destination denominator + * @param num source numerator + * @param den source denominator + * @param max the maximum allowed for dst_num & dst_den + * @return 1 if exact, 0 otherwise + */ +int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); + +/** + * Multiply two rationals. + * @param b first rational + * @param c second rational + * @return b*c + */ +AVRational av_mul_q(AVRational b, AVRational c) av_const; + +/** + * Divide one rational by another. + * @param b first rational + * @param c second rational + * @return b/c + */ +AVRational av_div_q(AVRational b, AVRational c) av_const; + +/** + * Add two rationals. + * @param b first rational + * @param c second rational + * @return b+c + */ +AVRational av_add_q(AVRational b, AVRational c) av_const; + +/** + * Subtract one rational from another. + * @param b first rational + * @param c second rational + * @return b-c + */ +AVRational av_sub_q(AVRational b, AVRational c) av_const; + +/** + * Convert a double precision floating point number to a rational. + * inf is expressed as {1,0} or {-1,0} depending on the sign. + * + * @param d double to convert + * @param max the maximum allowed numerator and denominator + * @return (AVRational) d + */ +AVRational av_d2q(double d, int max) av_const; + +/** + * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer + * than q1, 0 if they have the same distance. + */ +int av_nearer_q(AVRational q, AVRational q1, AVRational q2); + +/** + * Find the nearest value in q_list to q. + * @param q_list an array of rationals terminated by {0, 0} + * @return the index of the nearest value found in the array + */ +int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); + +#endif /* AVUTIL_RATIONAL_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/samplefmt.h b/tizen/distrib/libav/x86_64/include/libavutil/samplefmt.h new file mode 100644 index 0000000000..e38214927f --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/samplefmt.h @@ -0,0 +1,80 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_SAMPLEFMT_H +#define AVUTIL_SAMPLEFMT_H + +#include "avutil.h" + +/** + * all in native-endian format + */ +enum AVSampleFormat { + AV_SAMPLE_FMT_NONE = -1, + AV_SAMPLE_FMT_U8, ///< unsigned 8 bits + AV_SAMPLE_FMT_S16, ///< signed 16 bits + AV_SAMPLE_FMT_S32, ///< signed 32 bits + AV_SAMPLE_FMT_FLT, ///< float + AV_SAMPLE_FMT_DBL, ///< double + AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically +}; + +/** + * Return the name of sample_fmt, or NULL if sample_fmt is not + * recognized. + */ +const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); + +/** + * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE + * on error. + */ +enum AVSampleFormat av_get_sample_fmt(const char *name); + +/** + * Generate a string corresponding to the sample format with + * sample_fmt, or a header if sample_fmt is negative. + * + * @param buf the buffer where to write the string + * @param buf_size the size of buf + * @param sample_fmt the number of the sample format to print the + * corresponding info string, or a negative value to print the + * corresponding header. + * @return the pointer to the filled buffer or NULL if sample_fmt is + * unknown or in case of other errors + */ +char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); + +#if FF_API_GET_BITS_PER_SAMPLE_FMT +/** + * @deprecated Use av_get_bytes_per_sample() instead. + */ +attribute_deprecated +int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt); +#endif + +/** + * Return number of bytes per sample. + * + * @param sample_fmt the sample format + * @return number of bytes per sample or zero if unknown for the given + * sample format + */ +int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); + +#endif /* AVUTIL_SAMPLEFMT_H */ diff --git a/tizen/distrib/libav/x86_64/include/libavutil/sha.h b/tizen/distrib/libav/x86_64/include/libavutil/sha.h new file mode 100644 index 0000000000..df261fa4b5 --- /dev/null +++ b/tizen/distrib/libav/x86_64/include/libavutil/sha.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2007 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_SHA_H +#define AVUTIL_SHA_H + +#include + +extern const int av_sha_size; + +struct AVSHA; + +/** + * Initialize SHA-1 or SHA-2 hashing. + * + * @param context pointer to the function context (of size av_sha_size) + * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) + * @return zero if initialization succeeded, -1 otherwise + */ +int av_sha_init(struct AVSHA* context, int bits); + +/** + * Update hash value. + * + * @param context hash function context + * @param data input data to update hash with + * @param len input data length + */ +void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len); + +/** + * Finish hashing and output digest value. + * + * @param context hash function context + * @param digest buffer where output digest value is stored + */ +void av_sha_final(struct AVSHA* context, uint8_t *digest); + +#endif /* AVUTIL_SHA_H */ diff --git a/tizen/distrib/libav/x86_64/lib/pkgconfig/libavcodec.pc b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavcodec.pc new file mode 100644 index 0000000000..850a4d2895 --- /dev/null +++ b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavcodec.pc @@ -0,0 +1,14 @@ +prefix=./x86_64 +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libavcodec +Description: Libav codec library +Version: 53.5.0 +Requires: libavutil = 51.7.0 +Requires.private: +Conflicts: +Libs: -L${libdir} -lavcodec -lm -pthread -lbz2 -lz +Libs.private: +Cflags: -I${includedir} diff --git a/tizen/distrib/libav/x86_64/lib/pkgconfig/libavdevice.pc b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavdevice.pc new file mode 100644 index 0000000000..571f216bad --- /dev/null +++ b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavdevice.pc @@ -0,0 +1,14 @@ +prefix=./x86_64 +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libavdevice +Description: Libav device handling library +Version: 53.0.0 +Requires: libavformat = 53.2.0 +Requires.private: +Conflicts: +Libs: -L${libdir} -lavdevice -lm -pthread -lbz2 -lz +Libs.private: +Cflags: -I${includedir} diff --git a/tizen/distrib/libav/x86_64/lib/pkgconfig/libavfilter.pc b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavfilter.pc new file mode 100644 index 0000000000..f8ee2b439c --- /dev/null +++ b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavfilter.pc @@ -0,0 +1,14 @@ +prefix=./x86_64 +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libavfilter +Description: Libav video filtering library +Version: 2.4.0 +Requires: +Requires.private: +Conflicts: +Libs: -L${libdir} -lavfilter -lm -pthread -lbz2 -lz +Libs.private: +Cflags: -I${includedir} diff --git a/tizen/distrib/libav/x86_64/lib/pkgconfig/libavformat.pc b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavformat.pc new file mode 100644 index 0000000000..079d8fbe22 --- /dev/null +++ b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavformat.pc @@ -0,0 +1,14 @@ +prefix=./x86_64 +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libavformat +Description: Libav container format library +Version: 53.2.0 +Requires: libavcodec = 53.5.0 +Requires.private: +Conflicts: +Libs: -L${libdir} -lavformat -lm -pthread -lbz2 -lz +Libs.private: +Cflags: -I${includedir} diff --git a/tizen/distrib/libav/x86_64/lib/pkgconfig/libavutil.pc b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavutil.pc new file mode 100644 index 0000000000..1255e2eed8 --- /dev/null +++ b/tizen/distrib/libav/x86_64/lib/pkgconfig/libavutil.pc @@ -0,0 +1,14 @@ +prefix=./x86_64 +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libavutil +Description: Libav utility library +Version: 51.7.0 +Requires: +Requires.private: +Conflicts: +Libs: -L${libdir} -lavutil -lm +Libs.private: +Cflags: -I${includedir} diff --git a/tizen/src/Makefile.tizen b/tizen/src/Makefile.tizen index bc071a7bb6..b1615c5232 100755 --- a/tizen/src/Makefile.tizen +++ b/tizen/src/Makefile.tizen @@ -7,10 +7,6 @@ $(call set-vpath, $(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/tizen/sr QEMU_CFLAGS += -I$(SRC_PATH)/hw -I$(SRC_PATH)/tizen/src QEMU_CFLAGS += -I$(SRC_PATH)/tizen/distrib/libav/$(ARCH)/include QEMU_CFLAGS += -L$(SRC_PATH)/tizen/distrib/libav/$(ARCH)/lib -ifeq ($(ARCH), i386) -else -QEMU_CFLAGS += -L$(SRC_PATH)/tizen/distrib/libav/lib_x86_64 -endif QEMU_CFLAGS += $(SDL_CFLAGS) QEMU_CFLAGS += $(GLIB_CFLAGS) CFLAGS += -g -O2 @@ -19,9 +15,6 @@ ifdef CONFIG_WIN32 LIBS += -lavformat -lavcodec -lavutil -lm else LIBS += -lavformat -lavcodec -lavutil -lm -lGL -#ifeq ($(ARCH),x86_64) -#LIBS += -lva -#endif endif ifdef CONFIG_DEBUG_EXEC -- 2.34.1