From 5c200edc1c6ec8813d3d9f1d4c40dbe946cc4874 Mon Sep 17 00:00:00 2001 From: Jelmer de Wit <1598297+jdwit@users.noreply.github.com> Date: Thu, 28 May 2026 18:38:12 +0200 Subject: [PATCH] docs: unify tagline and add not-a-google-product disclaimer - one tagline everywhere: "Manage and analyze your YouTube channel from the terminal. Designed for humans and AI agents." (readme, docs index, mkdocs site_description, pyproject) - readme: top NOTE callout linking to disclaimer section; plain prose disclaimer at the bottom (no callout there) - docs: warning admonition in disclaimer section - docs index: drop highlight icons, rephrase "what it is" / "why it exists", tighten readme docs-link blurb - new ascii header image --- README.md | 12 +++++++----- ascii.png | Bin 18747 -> 16047 bytes docs/index.md | 24 +++++++++++++----------- mkdocs.yml | 2 +- pyproject.toml | 2 +- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 2898f8d..9452c88 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,12 @@
- Manage and analyze your YouTube channel from the terminal. Ideal for automation and AI workflows. + Manage and analyze your YouTube channel from the terminal. Designed for humans and AI agents.
+> [!NOTE] +> This is **not** an official Google product, see [disclaimer](#disclaimer). + ## Motivation I built this because I needed to bulk update video titles for a YouTube channel I manage with 300+ @@ -34,8 +37,7 @@ command line. ## Documentation -Full documentation, including installation, OAuth setup, and per-command reference, lives at -[jdwit.github.io/ytstudio-cli](https://jdwit.github.io/ytstudio-cli/). +See the [full documentation](https://jdwit.github.io/ytstudio-cli/) for installation, OAuth setup, and the command reference. ## Development @@ -70,7 +72,7 @@ full details. ## Disclaimer -This project is not affiliated with or endorsed by Google. YouTube and YouTube Studio are trademarks -of Google. All channel data is accessed exclusively through the official +This is not an officially supported Google or YouTube product. YouTube and YouTube Studio are +trademarks of Google. All channel data is accessed exclusively through the official [YouTube Data API](https://developers.google.com/youtube/v3) and [YouTube Analytics API](https://developers.google.com/youtube/analytics). diff --git a/ascii.png b/ascii.png index 27b3ecee80fe7d50ece835ee95a70adb0779928b..f498e7af57a70bc107294e8750026b3571f0cf75 100644 GIT binary patch literal 16047 zcmcJ$by!s2zcvht0*Z7AgD73n(n#kJQqmyZ&5!~T0s{;P(o(|E<&e^nBSSX~DM*7z zOTQbxCw}KS=Q{88T<`V%!Ja+Co;_=?^~w9b7xa~y!lMUN4=^w=9w{lxYGPnu+TQ-* z+y_4KTQ!>iUT|F%^*t~!9+KStVPd3bPy!!fdT1(0V^j=+Hi0)-Hd3lm7#N7ShnHse zfcN;Ga(bRxF4msjX6{xP@^&^(W?6`23k-~xY)Z0H+CG@OnW7&+I?2~sIK|yEciJP( zWMov{W!wWh;DX&Tz(Vi3MWpemZ1`ip$acv-eaP{JA)=kiK|Xo%aala0Z`H8S1}!xn zf~QnpUU~!i3*$-3 zX$U#q*GWA2`GU>`BzoA}oZ>{JGdf*C95aOxi`<_%UO~YHN=O>gm=W-_8gCd5$*vJ& zhb*;nZsLs_TiCMf^`3X9jWJ$UW9N85=4YJ$Rm+NMK@}@=TUr$RML~ zjZO-mdcDL}a8PDN`*E0%=OcNVK95{$IWvtpmXO1#d*8}vN0omN(bS-!wy8H7g@%GE zIW2B;BffnzZHI%RozXs|hz_2ypbZ OLjC!bsc9gTpaf30Xhq?dd%?lYz= zq)GH(Ftq4gXwYLKREp$v-WePgLjs*_WFu(e!1?Qx uuPczqMNZ@ z2zv)~lHxM~ba;weOm-qF0$Bir~&V}b4P+cUJP)SkBuPVzb ze5mldZd$b%y4)KB&?-ohp;ri5CRV dCGPB9_jqt*L!lSNXa~Cc^RoK!?T2`%LYGIy-(9;|V)f-iwq#&5gzCNjMdyXA8 zNvmK+w;+RU^9fS!KJ1tEU|D;{_H_sMv?3%}8|S;Z(p4m5doL~e{kwFuzY%qOa1j>y zImn?LLaSs_*miLFJ)XYv_>Vy>^E^J(IX>6KiawfAHLg3sj~Fa1Av5z%XsJY0j88E# z5ve}}dT(Z#r T+Z9_nH?)J7MBMGBOFW+(jq%j z!sV93A@w0NW9NHuVhZ%l$z`CU;&qo~UA3nMk?G~K_(n9rMG-hm559t^cj&jytT)?V z5!%(x8LsktYt?g3y!g3QvOz=`JmL{%Hof+u{cr7jz9Y%}I;{O>T H~lMjlqju`nf<9=-yq?26>s{1#|J$@ZvYUR~oG`Uxu# z^^1x80r~NKlzadTDzK5Q5hx%{P8T3hvfbUN;sE%gu_OOrD&ZK~R{T3ksxX(iI2E |PWbB9+54zU2U%9l#L}$|jno!)W2bRB$^r*t76$|B%>cUw zKNH5RvB?F*oX?;a^+0RO>=y4s>H&9^n$P_1s{XQYFC4q5KPrynQXF=~)G$#d_oq$5 z8* C<%`K-x*4{#Rv=-wk74S>pyl(+bw;@4-gEfAPs zw*)I@a&~yM3h-V96E>|~#-uR{ncTUH%bKs{`ie~Ncc|d7!dd2f_oMVQ@yX@yq`e9T zguO@aFZ8beS09>ZLBM^9@1R+Lv}$Tx&~C0YW`Tf{S+gdO-?yvUU(41B;iG hdC7fnreL5;f$%Ku7Gwp*OIhU`z&b06{FecA;B>l+xl^s%(-<@F1$E2Nd zFirNE>rUj=#c7H|2JREhf!G3n8Ux^-mbLw{r4;hy6j@(Qn{Sqtl{a(D7;EV8TRqG9 z1u~yK=*Gy@KRe%v)*aX5ysOh8vYeC>#B#&8#PE)OqhFa|wS;=8_e_XuDI@a1YECaz zVqUHX$@7E puTfD_EbK^*%SQFEd8jZ8G`^U0J(Do=2 zaRAY%y1K71wK-PUH|5q3$3b2hWhf@*T)TITG+59td}7k5nXodVeo=c07wA} (^_-@xdrrRERM)$oX8VfP#}DfjDiSELFYxE)U(3Hl znts(c$=s`$zCxWutma34R|;WaJIywvO-6zMOuD%-@MLb6s6FjaeSwSKR@V6?+M|@T zL8BqXON_-!9Id%?;Vb+go`rC@Jta9=8L7e`ZG+TrpKtQ+3y@{KIN4>-)b2;;8YLo= z?^^}^URJj<*5(v2pwbTiFAgf*u;^S_NAw}8qGrhg8T%-YErX-d!_4nuw>}!2!kGlo z#k!i%HBA~q5K*u#<=#ttAHWhCO+oQa=$^Fk7osc1a`30y6iuyhe^)#fHtr3@AHvH} z*l9AAIQFoR0I;0nCnO2&-PisnJCE(OIIG$&=J%r1U!K7ohZZl_1g#cZ+*g&iQ#b7M zN*ep!Rk~VdE%QKM^fc9%g@s6Kgl^FzynFG>pb`*K=nwUv^RY-80clEWO$0+^<1-zP z{^`$b c#mu|BbB9pl?FMvhClKX{pi%WIq2>Y84M nw@xxL?y zaY1o9JL8z=YZJ6y!{Y7DApDKLxE%D*Ga5^RPHE3TL)Yl@9bh=pYga-x1)*i(0<^Br z)`EwL3D$A~_IC&z+>TTx*zl{B$Lujaayi!@xBt`4YJvVwu#+6TrB~6N(3sSu2)L)n zZK?#IBf#CODZu8YWz66$20zmJJQ|_bA|Q>N2uOXEhP}jsZtb<7=3gAv2$(+r7_!aN zk7Cpi1eI1XDJg4cM%OXEWB8PFmJ>!ntPMAn78Z1#W0{&`!&F>7Fxpe!EgRC4n KnN+&E!cGeDBqDb&Y@gOO5GT}g`EbE75@{=QWc$`z7s=|f zAA8~52N7Xp{;6&1)4 t?%H&z!fr0%*M) PjPm~V+PH`| z`? &8HtWuRAY&oVsxRB(ABxE7%PCBPq==IY{^iM1op-M zOkV!B>y&i0QT}PxepZx*#Qe2I$Pi7RP6yF$554NCJO^&mfspTkB@xsj1n?J4<1JvA z3CXioD%!9;PnC@fCks04D)-^StTufU;b7Yz;~u5)_v7#CDm+E4me9&M$38kCI(}Py z^oHfS%HUV|0p%N0j+9fk7uXdQQBN?XsKph2hVQz(J~$8dpu3;vemo-;D }t;xRyH;f6N>&p%qw!%pF&RpIA8f&(AS;{35 ?`R|PT6yf&H~&2aI|-mLZw;ilmh)p2BdfBt#O%)41zav9 zw9AffRU^4=`I}ph|LHH9Ey%_Tno?iKI=7|bCs Ro zzUYnGYxm_?)7C}CYL8JyS+2Zgy6}-eYGm=}NyVDl`w0Cm!Aa+3rB`l9ch&>it(_eI z4ghbUcy_<`z8C1XkikOb%}D%Kgv@=3O5~MWY*UHR@FNob2{Y@^?u1DSz~f?oSK7eK z&dqJkr{qUzw|+!hWoTV*J1tx(Av+ Rik-J^*N}L) zcXPehx$C{)Yx6T>6cai=9}L2$eQETv 0`|)zlC%_3eWyZlpb+9 z<2RAhlI!B1pV@NtG)0(l^+w%|e^nylw+<#My5wnk!g@~2db;ER_5@gC#E4il Zt~cr@~LJ&bN8l vM9* zZZR!y?eeph_cOUbkUj>&y12!9v)*_u^VqZW*#$hUr(XTrq5lxV|D!!tY!XB>)}}Zh z;8_TumID|>Fo)7H2yLHVR@Z1N%JduVWe1okFrBP-fhPo9;D8uBDlBW*urIvI1_1%o z5%2OBof{yr-2PL55*S`GaJS~J1asp*&B}^qK}PO9FKcVJig>^3_4XovJ~oM_Q`wh( zgMd%C0~laCFyXaE0Jq7QOe*0rjv2oacm7ld^4Z8_s&(Tx#7yQL%T 7;<|xVUSHBf4QB|s;!iLRdKYHvBDXS(-u=l?A%h<_ z2m?{(xVv~k9I(f+dja4j1?e@fm1dV%VDJI1So3^dg9Q(Ha Lxn0`&O84Bul||# ze|UJn+c^Mua~}0#KxHfrFf9`xDf{*OGqYR>hOh3cs8@M(a>vlP#Ob)ibdZzj)WWtn zQ|@jai?%M1wM99SwSh%I1BJ(gxsuaHvq-^~5PJ1s^lJ2k=N^^XHMg< 7))7cr-cS zRJ+?kWUf>b(JJ-9h-CMhT*~<&jIK5qD1oB?^0hTUU%1tsfJO9@f|~zzNrIB=&Q4tH zwtGb2`1nEtlyStR!9kcJ&yx)W)E59g53s=Hz&Bryyf07&x>u%Ukdk4XwB(~J+w>C? z;HhWsV^;)H7sdeNG`#e9s}4*jqAOu}J%L;<=_?WB*)sgnS6<86ZR^qUdp#|6z`F=U zH*Q1yGL#V$`T2dnKVik9qap`X_-!C9P^h#CO*Gj6UQbR0m?6PGoNv}LcTcJcB2?f% zk9wL&!1Tt;=j7<>1A*B&xqZh6gmYj$K0+A>LTqnQ^#_>Uo<9#fhJy7H94o`}YE+v5 zo1NMBiGQp?8IG4Df?&{;w-6vwq`WUhYDXN&l6-WvLSWyWp!is|4`AdF6wYO5%^DoI z^B>p{aL=^N` rNIW;5fHKrv=@oNw*i{5;H+zS? zr1(rS{`-W-i7!~Co@F^0iV#%wLP?mzak&`YvS@_3>kaj%8!}=P8$lVn6Mxzz2bbHUaI3x_TQvJ_7~)u=a(tHW70h&0K#m+E;~hNRcL8 z0BW5+3;aj-@pY$$vYN!{ggmZ$FRVK0+z&^x4D-LkP%SkpQi$!5Wb?(LJ`Ef?9{aZ$ z9iyX~tSmAN(qSAn?x(-z-D%aF7Fz@INuu;U6Z_s6P$gcqM@u9@G#aLD?Or_wxaP>l z@A4&mLINeF4_5=5TF~ Qy5N#*uts%_w^4J_BcyxZ8TSrMx) zfrp=}_S{Dts7Z{Sv~^PSW1-XDpBxkK-s&MV9gNqMIG|Jcd%-KJZ6RQ#4;EUp>SGI; z@87K%aVRZf`5IHS6e$70Y-ZWY>o)MgNWkZAR!_*93MD}9c=4YB=eyTkmVl~`DoV@T zvime+fjv(`4n|WV7zUB+-+t)MXGIM?d@F}kI?Qr&Uay&n*CX~g69eKI*W~gBkdvJ7 zqB0sJ&2K!DV$$$$op9!PwITmbhG00$@LuIoH8R#02$)W{?78s22$cRKJkH~+^~(R_ ziSvM;KOhIEx9Dk}i$(pedFB-RM=_ _2=-u(jU N!h&iW6_=WQ5!`1Vy=g+g@O3fLGId~j-HHqzttnwh0h7; zo~I0+1FAQ}+x1g&BHfnmayvTL%!i?d_=^fhE8KEfMw3pcWeqpXe~ZMX?NoowjwXT9 zjhn^_ig-JA`6p>|ptpD{U;y~1Np0rgXgXP)yC-m*SFt-kmHOc;nbh45MZ|#X_Zs?M zx!aOq7MHC3^Q2N|D&-Vl*!;Je2m$KVcmD+Rkurb+Yi=HVzqwn#$k`1kYNFeyY&|b| z8w>lHny--?Ba2#E?!Jc+L9-nK+u*V@MmvsAE|7yuD8LCOf>*CMPism?_W)@JAmIUK zZn9B@Et%oV-D8zP9(aB*Y>U{>C-YR+cl6I$>DH)o-c0=|ApW{zQmEhV~=a250IK54YCf`Y{!l{#&*FCZZ&G@WO3S1$$u2 zOUF8(=v>~?I!>#_ABfxo-+A~X;>t%2*&kP@0d>{Tw6Gw_i>&ANmi;WTe>I(A*tdpf z{?8Esk6m?6)YBx1w#@S-8PaC}ByoVn9RWG${V^#x>W&NtUnz0M4{=M%EHPjA0jeJv zT?y7^c}m@YK#4yS_Wc1oC_f-Z+xdA?Oh7F=@GLasV77BIa7joP+5KQmd!jsO2;W@H zN6g$$`BjZlX%RXCXhj6vtl^QgB(idsMM76_KVzn*zB?h^N%n>w<5dUgpn)Iv&Wf;- zv_dS1wO)UH0Wx0=B;Sa?*lmJr!8c3?7}wpqNR_DSnnw&m^zl#Y7+;M|$WuQ{=C6R| zejk9}3Zv2kRTQUW12h|{R)uwCTNzyQk2ei?{Z>&)@g50`%BB@1Ku#_IsycBfBhfK& zaL%9iU-0lLH6AZHtiY%RQ8%7`!d8=a_$JzOo|?y=lZ^b8tksTWVaJsdHQ131**UlX zh_V1vVwU=OGw4OGPRO;wO_J8y)e(~A0u}mnW!9yQM(GRy2OWWR0MHk}{Fz)kgw}=R zc*^$PJdlxA?)0d@3uzQ?o9jwwL>H<4EKn9JEN=nqXeRX)t^Zoui121)!Bno->F?&y zR@EqpRXEk{6h8;#X1G^>6cm`zZ`fq~h9xaw{Y;q|!Zy!fch_=e3P8D!qwl5ZOWovh z5wjj i_Iw&NNS*KiFXfSW|!g1$9xW3&cfCQ-~Kn$ z<(E7z=4yC%0{T?dB5%&s--TnQJhbOs;m!ULH{|2xpRd0&nth?OZ_oPYmw}eQ@jg77 zPFiM*3E4I0*QL#(TinP4BPF~e?QrM2yL6#cj?Fh=)|CDt0@FWsaHG-CiLVzy0Zy|1 zPYXWx94*vv@-TW4dvZxm8acGQ*fy$noYAcKJUQTyU;LppC5(#LL3RSYZA;Hj@cp}y zIyG!|Ashdsc&?^J=_ZNgwF QGRo$_S37Tn%Yy2=?$LvI>EG% z#6DpqmYJLFAXo-p-6=e9r6cwtbSQBsiaeT;> _d4Uhj0qy>FSUHz0f{F^F zr&kqUuKK@N3@gQhyAW+&-ulw6pf7LeSNrR*$cbGGrjn3`GA$j6{Yf%`eJ;3FTI8 z1`C9KxUyyW{Xxafh>M1Vpl9H>bWkudf;Lb{lLCrkhGe52`70)>8EFzsMqNz{E4#j) zwLL#6pjCQmgT5_-wEX+zA-5xcYM;EDS9gz2)=#|73cW!5Lem{LHjRP!JnB3; =EuQ_1o^S@K3y@J05`S#~#jWwWN5A;#lKJo5r}AKJUgr^;c_ zsWDdkC*NK!bP7M-X;vt)0;24$LO>+r2)SlV=Shu{PFLTBkMS-{j3vP8=K8AhWK9pm zdlf$Avj+%il#4OLU>gs2R@%-f@eQl)3diCmH9hW5s7hbXkuqtiXY=Ewd#Ua0O%V?L zefbSFr`_mcw4YHk=dHW8F&cp2)al?ZF-+p_zXiIZMwYmfPM%Y~!sEz?Dtw0IGT)~= zOjNP^;xZ>{)n|rW`LhEQA)3@WwSV#7CQy!Hi4$$N$7o>9=UrnBXWw5^hNu(cLVDM# z^Lfe5NlnSF%~pVzw4&AgNptaFj81HWOLm7xWXMegZmwk4pt@TgI4;M*DhM=q&xGCt zyzkafh-bv*&J=-^kd{N2v>&@hF4!8#h8o{Jg$XXO(3k!(2oqMVzFvA->R9QbUeiEl z`S~Hg$Kc$NR3#? $bF7V`^Hd5V<@;~&g z|AH( =PK*<#^TV&68K;4a3v z+-hqUJie!qMMviYSw8UcBFjUQdO~XQjmjzPi}h>p)psFF=<9i7Wa(3Vy5#uL3Hg<} ze=pUHpc~prO$9C36x7dkb{_Q6S@F%Q=&_zFugA^gu2lVp94V659jM*pvdoo?!vJCu z(1)T &mNnyUW DRC0lK7Sf>-%Oa&$xRzAeejK~u5j uzXe`+pP %UQ=t^niNxt q0-X%&**@Al30vZ&HysZ=GI^bk1 zZhQe@#4EbJbq9`S|44EI&`k!}?GDpTzc_cR#CJy_=Uo=kkjE}6kwBR!`5Iq@OkAm3 zo6}{FGnusQi7}38KBso_tT83ib6~3ipxiY#E(tRWU-cpkFJ`armA5kvw~8R$ DQwT=;CjcRDfMLrg%}SPA@!yj9gdEMMYBz#1jVD8`5;{ zPjic$Fo`iuCW{WH+5+k+pR~-!AtcXGrRfSi`?<4(-G2Q(gu!4o{(FTSvxN`BSSArJ z8MM{|=5Mf_!j~`zSL0v0Dr+6tqDKT{*j)Q{LKIB{jsYRwK!*4HQG&ivS+|*d>JhmT zL@_4oM(9d^p38-Pc#eCJm|4WZZn9AaL@tJI)+0d2aD!Ff1agd{2wKrY)gF^An8gnl z89q2?zJS!#dn_~yh1^04`=Gx N%tdhbjtVVResBuf2`=? zzxsa1e0Oy)`kkKc8lXJqD3&lwt!tE}?$(|imA{J&i+rV`rKThoEF{lP{|D2Vsy#=a z@O_NuVrwed3 PWZC_~sr?AAAdY-Zz|c?NsW zKfiyVuWI^M^DnxgrgKKsdp`-rYJs|xiQ@J*pgGTzwaYSWcoA>`vs7)d^?B-9g)O>$ z&;p-%9vKl+*xSKOQ9)w2 Y5qmZdFr(Rb_Xbx!i?ot;aa_OvBA zZt=w4?u51A2Df4IaE)74-IjS?LE|{uRxYrb?O=i*^PEH{4eEMzemqJ9riEXYv4=>* zCGuLme}0c2wJRJErnqZDe=jqp>1a+!|Ku5dzI$+$D_X~HH$kObgw|E+b1U&Linsnt zkgat01{r{9ba@zgOrOk8&_6(mbhm)qX1R12LsMyv?vDXD_FgkhEwkp5&tnmVYs$J0RQAK5Y!}M%2)$)weXWRRE`#5 z2rsgIWszlOmtuZNF`Gy|vHos-l=_*0TCKtsR=#J}(X6DeisN4SN`3t~P-6J2#7Ho$ zVRBXTwLFW6l2Ivqi4~jRJL@TeSqKgNDWS#(fs52ZORf@RR@;8Q9y@bref0LAmpREw z`PGB T4WIXT6?zODgFU&Z~!4Em24{yuNsZh$D(+w{Atq{ zP9*uSVQJ)rexHiJ%@A!8>$tadgklp^xcPjXL$TVFa8jnDhs(>;!>(YPQ2^Ac&29WG z;6boma7pD=^v{gXB`+H@$&OvpDFm%S|6OitH6{%Bi6?t~EbNO0?FSGEiE7FB0if-- z=kgwz=6_KOAki&Q#$(Gowm(v_6U54-W*04|3+z3?Iusl?rJ9S;0_nHaDu8J^b|;W0 zsa8kbQYq^@N*u)i{Pm}nW_5jwDNC#TBcWE+S=_?CnP{7#tmibI#%#Vc@ORZl74{Rj z0-FAXz{Z(f7(hAC{?*hxXZvJMhOHqTBf=@>*5-55y_&D-SreyAWzu|bK(HDlQY>qM zm8rj(Yt(H~h-BrBd{=rivJLJG@aziZGG?#egcHMvcC>6%`|_&;uXn1#F-L$sdr$U^ zD3bc#LCr Er(g2{%C)J4^CP;byrl_URNV6EeB|q{_z Z^)`amKoqB#fix@I8heh&?*U^{X*W+R}Hdnz@eyD z6e8C%?HG{|vz(RykBcvyh`H#{0PJ7R?A!jA?>|{Jlspu$FX^kFEv)|AJQjmL!XlmB z`XlgZ*s6($WX`uuZ$!!-+AYeq3)x&F6;mChw6`L^%&2>oU+u`;gdUvk&I-~UzyW2? zj*4*)LL=p*q8f08QlM{P)!j9oh(n|OHF~<}s#(`^xWXzm9SiB6ui$icsS#zHDz;Y0 zVWzN|rJ6O+gqdxjTJ-c&e%)%_tqiDZZ}%=qvQsfrP5hD+p<;kF@ApvCUnmkV+l4jQ z)BR={XF%kYSbhZdX|Xy2(6(_`!l(x)Dpk+2xqr}7HS;Oa7^#qpT|gJ@h370QofX}# z$Y&-CcO*W#pT?m5bJJJCNAx`m{5L9zuwNc?Hh>yk+oihrX}Yzufdpv}Ed>nFurj8p z-Wz#wI3_z!{(`q*<)0mB9{**V(l!9n6mU%mq_;JuZXzJJAjcJSy#^OkjygX!Oxrps z`dY>qpcSc1IePo?E0;F_*xPQ=5|HxXV7B-==zlFz13iq;V#d0~w7L@dcYd?Q-lFH8 zf3JW!0Hz2Klk@U>5y0lED%P$9fjdBpHfcqSfOASqPDiecHP*}&soqM?J_6(YyZ`D< zPP1R738g$uYc#itfivk4)KomBzA2h9ACSCO){S}CSJX!PsOdC7Aa;OqOOqK(TLkgE zds=`>0jH>h6aA!+v-4y@BoJ7{f|Fl#$%$Eq-;^!0egS%3>$?BTt$6^r;14{$J=fIF zXhSD_fbKy94`lb2I_=Vp=?4hFIRW| NU3$Ha&H!Mh40I@kdI>XgfY31!V0Y9J4Al+$abf={;<%0< zzEwc}Ln!?%GNS(LQC|?)a+$zW-O =Cw{1`Zx@n5&@@^J~TC(Ndt7rmMXxe z!rmj)?WY9 ^xC5=GDe3es{Q(wl`|6_C(-iAWI;>AjbLB}ymK6$!mpBOL?;DI(IF z5Q=~hLI}MEA^*+s-21!jy&vxLe&CUfJ8Q4KGS@6)jJYCowP7@um@iRKP|&EUD(h2F zoM}7#0bKz863o>70Ql#kyXr$P3JPla)1NaGscB5WAJ2H{!xSmX`&jY71*P46t@{)d z7!>tytMkA$t@i`Cw}IPJZ$B$fTM88iI~S{TOtK9Hg=&qO@_j@9Geor92iDR0a;h6o zVx{Qb24U9uG|`F@cX;MhBst?F!k@LrBIy|BKrmgOlD`xqq~a1O; ExA3Quf?1X4C_6zNoOX&WE zy+}cEFK? Wm<8eWdLN U|!)=ln5jR_{?t)@P>x@yYFPQMo>9kKH?p}oQSc<;FgkI3=Q zz9G1d!rnNy9?arX0QnbV=yAcr(%IkJj0q;}hgizY>#9gyuKw9W*Mz?k8D>Z)xL$i+ zE%Etkaw_-xTF7tft?oJA^_=f_>f!Z+Gd-~Ge1S0?g~p2Uz%mvAtrxv^vYLg8JyX(~ zF5=fe%PVmriw79y48pqS4!?ktbgkV#Mhw61XN{!{{k`b-bof>66>@$%eL}o7-^A}7 zHy%do2MikP6FkPQP2y| E#yt~k_TbqDlsakxmUPg=rRA@{HS!B-IN-*`85M|)MzyuD qkCuO#On{A6j^FdYyza6x$nitsx_p}}WG<>U zKSPg@%{ikJTrZjJleNx7NceuVXdOpsmGTB;RiLVHb3H>^DTnqEG@`MkUxsqD)$yH9 zD(C1nZ7Yl=r_J0XBP0ap9Ry5aT3)d$aAo^w2{6PUvVF|rxhoxkJkev=8WU#f$5`Em z7ks~UC@9<_e1Lj5VtPkYw1r|PIN-&o4?@W*!ESOphbq=*oLT5NRue~#3MhGdb^FjM z(v%PSzKnNqgrh!Wpl-$NlE??E?v(qB7;AIVaM9BXnL^h;*H}3+_ HTC0g=1VdwV!rh2ze12`u?{x6NmE3Rl}~e$rN*pC++=Uq`?NbrYqiaB_@o~ z27gy2NKJT5 u^%EgCLg%PiuKUXjhRFd1ECwvCea* tp#-ywa;5bO5~Ad@61 z!=hiI+*=UH$lZ~-=g;Y;#jVfW61(K}U21a;Pgo($U1hxkm`WeqW*;m*oHlo;)phpg z|7jo4$hU#BhD;kbPUfKPusRV8=>T+8Rmow~x|Y>G338`_u~3l$$*;XZ^QZs6F5gy# zc7a|`JQLwgSvdS5RTXX5cf=F)yeX9bqu{^pQgktJTbIWeE
OOeBDx3aXMG&DrD}7Fz`~I2xMx^Km+;Lc94t>{uzv$ zTI8;l>uev}k35X`oA{$>-Rp+Qd~aQX$Q$5!C`0ujNUUwx8}|`DPTtsPyMxC+tAS6h zwWw(e-IIC)qVDXg76_G{7F`lH$xyLO?R>O!OrWQRaLBjSz>k)pW<1HXZ6SvW>w+=6 zLvvEjI{mfg_s%zl6%D?asNcT=nR^U;QON}8)RR)I5GGTw4)tGy*qrr^)0n05zs0YY zs9RrZ5KsQLTPCMRw5|HBFn r@0 z%a -xng_XNyP_FO&O 9 ArSNH*_z!?ks@rv$kd|Lc841y3noL&!+2-qDp z;ZYzBqPTSwj=d|R>1GXd (^>PCs|GlS^^6ZFL0?d85^2}EbcACW7rSu$1y+ZEWQ9ZPaT%e_YL8pU z$LsIoEGo;x)YfLn$FuK$?Qivn=&&Pp2DvZh=g11>jPt*yoAv6KlL!i_(YgzT31xHw zW5|w`Ban@;qhnp8my&F`kJ+r14!=6OgT{VB8K|hJv|i|Qdd8E8ZlN*(_`H-Q3%|v0 zN!){c0S*B%7l!fLB01w0pZqZo$8uD*C!H$9)^nZ|Axp-2wasWDR)_L!`ZlANBHTYN zuQ+*yKUkl=1DW8*ymkk+$y5wVH$oSBhf9cu=Qxd93eEE=_|S8^GJZ**;?o^9Jvwh| zgYT9nTPc-si_T573Cl<8EwjImS4K;E4?9JR=AnYKFiG#yEK;7Sm818^<@CnsIq0LM z!bd#D*JxYicEPC 1-zOlmebZ{U@fOZ)gr8kB `;aPk=-%d`4lGrph&Xgi1ad5D!ngUehTjNKvRWIl>G1~>G1 z=QoR}t-olIH!-REPHdXRpEz0FU62tXJ;Bhxri9HQrg!+X!c c8&dRS6*~t8TZ`*gQ z>X{93mfaRTs`y`YZsxnXC~En(4!F$@n07)W=G7o~n|WQs2DrT00=olt6wRZ|?6bUx zo2vIppn?Q{P~*ja M7Bm7*s6C1EHl6~PD_tC*j7rJJoK|p1;_^w62 z_XrDHIO!pQfBS)E`vGVh)42p?Ek?1h Cv#nR-+EbA?JIwJZecSN4wDz$p&qHQHCt}u_E4e>UD%lJ{nr6QZ4YiEs zGMU}E8(KXGuf)IM!hFxSDY_ep*$EX+9u&=t5AQp(GMG%6Mmf5P%fBqfza`aJ^JFrN zno(F3H|I&Kn3J1ryJOGNRQ>|y%gzy`oT>!1 lCE^g3hhuemc(gt&LUW^}O5W8u+E=-b+JsTQ zP0?D&qsT!tk$K)g_T!+ch@Y_b6yU$^x(s;;b8n6~n%vpCa}ofmT2n`=n=((-WJUQQ z3lgydh4sYDvk)u!u^++6>IRy6)YZM%X0@K{Ag6dwRrE+QuLg{9Q5pMyWzwSgPL06B zD?YY-_Z;4Uvebi*kTDxB+6r3l@^RliKOHW;?=>u8Z*KEWut(zdhm~^17`P-5owgS> zhtbSp{0~>WC`LM$-7+X7X&W-ukN0OY%y~bq71~{c{Jd(AA#Z0l*7T-}u)T+M)9Fi> zlab+NBJeUj2E6@QXC^L2E;zcvt4*uls^MGI07yrHke$dOoOb4!E0B{rU*(eI5+C;U zh;`m=m>ji7s?bsXpas%D@o0^7zKb d_;Cg{u)un4;2|kLOo??o_^JAPoyEkr#3bXTNBUeO 6D|hpkmV zE{!H}F^ykzR_{x6UY`q9ad7u!ZyZUGoQ5#gj`zUgC(7Z)s~Mf74;|=Q?NZ50yS`d# z70$#2P*Zfd|ESZ#`g=_z5Urz|P*|}C+-(RypHbkELM$rw?1PKaDt`IQ#Juvxy6BU& zM__%kNzMJAh>cb%EgHS)_XUAj^@I7E)XW#fGsGfzQ07w>wK~CGH?N&Y2QPi17tu2F z-QA5?bZLo!t3-&zrj2WvO} iP{6`vz@S>6mq2xhvrupUv zM=Y Qr{vI_A$RQt=mO(zj5FFt%7uM-?r8()kHxwS%N|^1tG&V4n6fF`v&BhLxB*aM&Va8m-5XlN2`?)gd7nYeX@<4V! zpRZqBG^r?7A60X9jJef;GLFUNSN=j8t5|h1lzU`nH!9<{0(!VBK@xF7DC<}ujKA-Y zlzqH$|BJ`Bh7O0N8oYKdsPJn5E72iURCwVW E1HA>*TV@#V$9U@5D zad7!@Ar`tiJ}jl6mGoeKxqlt^ IcxsM`*i4PPU_0b`0*lxf{&rY_7*uh zEg2$#k?qIIN3?lMk6D0P6uQi7p{5d{2Bq)`kq*t(n{Ggt)1~Eq^(;I$YWP0ia5scq zjMnFbn%fJv@2$H d}1S&q_AP~ z^O(ncrF7Z-jKxaWUoqPamqzw)I9@VRd!sk&zWllE3aZBBer>~Y _|!8S+<&(Qe3!p_o=r;Rn`WpY@L~IoBl+$>$|$Zz}$f z83|ZPSJY{8Ff10ha)!bacp Z!suTk-{FxasaUEp9=L4HWiEvx?X}(a$j|B zJ2G)BbvXq2ft|h&h`4Z%m4Al)06Ret$gT(b&+um%rkNlj_w-&}H7|2WL9fvpNR`!@ z_30H*n|k^@z{>g-?XS08S=TJ*-la1L%XAd`hOZSg?&GNImsi}L?>%~t7{C~&VSR4J z?A>?pi=`I`q=weSgJkG(ob*k|E6LRB8Z&nKVY&OgS~6ER!L$&k@t@GkBR`?C!YlTP z1BUl+ax2Oe#0ne7Y&Hcq_}php2}SitTB!G3jteB`OQSp1Z%b1ys(p{?^Q3J}%eT)! zAS?S1Qi?jVdPaHHGpr{@dG4w)YY-ATNjC-Qn_hvrgn1MZIN^q}6*1EEtItM-kCrJk zJQDBOa0ai{<5Hj0sZnvtw>AERPTd0B(B(zwPMp8&x0*#cyQkwHUDzebrHb8=Svh__ zPw+I`kwvj;u!BGdilnbruBK7Zq1dx>t4hl&z5NHrSGoP=x$VKxf{ajHEt0IEu`fc*QTG;U`Mo80-*I-sQ~izB?;Q2J zlP%64RTnO |@XEv*Z?F&JSh zN<&ZoAOcf0%o_ZA0H`JnCr;53-0@wH$uhT6r}1(zwpUf+>f!3X4S2H%K5oTPydhm$ zP|FwX9(0&A^=R78PJ*-`TakuCuB|l{&eq(^utM)fRk$=S+a~TrJj(0GSF!Vzt9SE< z6S%eKsyoyR&ULYBpdWg-R(D9(Z4P`NWsE4eK53md?252 6%@Bx0iU$Vy*}FkM_;l)nvi!2Z||ark;#-C-Tj=0E|d zABMV>?iNAr%CTW-9c|^cYN+%Fs<-uK%jIZ6t6g%@OKps~lcD!D>{t*sBIVm7;>z|& z gSU>n}PKYCM4!@%w=Z!h=TMsHnNZVnq zXlt^S);GK<*o@he8_zdt8*Q#255J=eMjqSDL0Kux%n#vR9w5gRJ^M)gVO8U)+^6mw zZkaMr#vb2Zm`KI8sCH`lo~Dd|kFtk%5p99c4VCq@f@V{Ng@|S>!GER&u@BDgcab)} z$^L9{C0yn1t344Ol^jF|W0!r)u<9*zI!aqpVSOT^(ElS=zmhIQSOO7=azBRW9f9gm zALvFtlyQ5`$B&E5({^W%_~)jl&Z1e-hR4CmIDce9MulK+mZbEhacIH*^W(NzAIEgY zW_81e?(8MQcIVl=^nLk4L{C3#J|qoG{(Ul7_#B@ttctugM|~yuVvu9>{w(puuu?7~ zO(B5STjhL`NtG01Hd0kbHfMHrgEMJ#>>OJLJ4_XitTnaemxsJ&6q {<`u?199D97N8v`IR* z12+vg=bzaD=+i;tOt1*w`psx_Xp-OdS8@d+z%q= zM1u%`cYKpqahLY-W&bhjiQ`v@l$XaZ{&>0(-v1GKZ-q%_!?F1&>@Cu6EJ4jo48UnT zjsVYB((bDQsSVly`?gQ!mGtygr`^teNX|Lh8d~)10h#!09zPV;$vdK4(E18|T9@Wt z#vp%6b9#H4(yf@$aR5Mcmz8fThfB3sFqf1a6Yi?ew@J^mq_OkY(9{alRxTS?y}T=r z^G$9R21>9SfPYK;wW1I8+|qw_SxnW)c95n8GZcjgakLMdnNf)2R_xI-hZxcrDilQM zqFbh4`!$7 POG2cya@;Ui7wRiGu@Euc{9x=uTkLDc36tPX?MbUG+ zzz!MPy-5rH1OJKRq0U%~dbpi}Oucbw)wWwy5_@60<6VACa`D&b$>hl#YVBO2rqSDx z3rW8X+52oS3=aZR`pA0+tU`V#{^9jlFZcnIb_rOSC%O4v*5W*^uC*ZX>OZxaqbzeb zel9gV-BWGQ%ki0dGJnuhxnBNU!me^c=Jj#Hp$rdBHUj6S9cs)YnsDX{lLodxr_?LV zz`>)TclKrcN?FdsJkjLjaiyMi=x8%W)LKv|S-MCblR9|c9VBg>rmbNk=T#R<$ci)4 z cbj+A)Lq&n$UcwdE)X0q>e`yP95FjZqVZiRYHKS}UG`7;wzi12$uz-{uasFg-|{C|v(9-j7igm$Px=qB z6pm14y(yJ!W5H~%(7-Bm7>aQaq!XuD{|2-lZekITC-!i%KA-xGux0bqlst!Ltv1C7 z@~K(5S^b@$s)+no@v{{nyCvsS3L=>K%q4Tq4Wz-DzP(U}Ure<&S}=s}BElRCm!D?( z2DfC=Cr`e1MZl|Fl 8sszrpy~?ljeeUWrS-)%A#Q|?X>2`NhQIH;X zob#ry3_(S*`It>wn5sk!_@dJI3$D~F7i!;50d4*nUAIo8yTemv*pHBlJ0?unWuQxe zUFCWDy${1AgNRm2GJb1Qzgnpv&diTZHAWuP`*;_3Iv(qrW@2Yr{0-~XfMq}+nFpIT zJ6RGmQiOZs6Ew{8U<6a+(BUs9oviAmljVrmJ)@bvYQACr(}Xu^395+&ihf$>n-ejM zLsew^S=AnfNyGIP!ZU$s9st^X5GOHWN&fPMx*rI+(%-_h1#=wU{)k9s(vazG?Ybf) zn4q0h)LLYN%6m7mEZP=9qruj~&i`)d!dvY*^WWR&06z}(iIsWPOsFQp)ss_SJiM-9 ze`(nEW7V{$!Mi|v8Gg0qy-BCamM(BriiX;Pc}s}g(eEi~uHpJhxRoP@csJi53SnJz zH%hp!22Lfxp1KWA^>@q?GL|NaFTq`0#ACR+%T=DcwH*6ay5aq*JNz?qYxYl$*88g; z5*eArI>jG3LB@SaPsSPEfvUki$Q(9vG`h)aQ&kbh7-$9%GD}~TwFPyGIvm70hT hY2c2b-`_{kqq;%@P9I6-Ll4LXD=OgV)#uTXd0cFq8L$*&Uym8)5iT1hM z-DTrZwQFvD{Z(ZtHUTgIEz-gquqp+57i}Z?`Gq~PtrxXn2h!^~+TWncJc=$~PBSG1 z!mc#cuf8%Nu*y)MUPeFe-Yc0GuLfIweF`%$VO~7An~%-X5p)~2#q5O0_vegbuZ>^R z7 5t$4P*6Z~c2i*A*;7wk5gspVi&bjv8tB5t{wHh-O zg=5vawK6PWgux4M<^_%?f5+rk+`h-i@8F$D $Hq~$Tm z;eYb`uv*SREEBJ#73GLsR-Mj~V~Zm=wip3U3**g>Sx?HLaI8#~_j!L!+T@2=AaeTU zYX{1oYFM^r5%A+{8zHgOf4Fpmod1zszW|vFw?1{g4W9u%0&vwIZHSkGk!%3xv6g}w zFn(62Y1W7BS*x$pdLU?pgBNw(idkIG78uJ1?q>`}9>Q&w7i!MPw^7Kq@g1!~zjOU1 zbIE6+Qd*SDa2%qQkV2P1pB0LV7{HjVK0@bpv^WTs;kfAm@`VrJB3__w0g3oU`8MyS zy;0cm`}gK#J=o!GDFE1q^^yboB6M%d(rwHlYh9Ro@_wvxNB2046bE8LG7gUYl}q*q z{p?fBNr)ij5^(+=byj@PZQunKfvL|!qk*lEW2eaiS0XHhb6zeO1!dD~SY{4*dQkD+ zPWBBq6J#^$z;}(n3i}??2$DcK0d1j-c-4i|==mx1@91f>AN#I+oL=jNsab_f*U%oG zo&X^9T3tEBrG^~5uWp;}kRDH-i$HA}?VV3T3*@#7L6F_9`R+*D)(V>&UEvqiBQ$oc z*?PM5c_;Eulz0~2UY5I7ZrfzZo3BC+(ecsOpJj?^-Wh0pAj|BgLe)BoI~Lb2$it*d zO||R}eC6j(VA7a9ertUSf+nwwJ2Lq1txinT_-Q>#Ac1z-mH+^7&%>cqpLeTR4;{1- zaNfuF6#C4GDZ(KV1$dG}bi$?s`wY(aSWnljzb|Xwsu%5wFVSeh9@`pLnb4>k_^vE_ z|0>d!9lgK@E{-em+TrCDqUL6Vn~4OF^ReqCuXa =Y~E>g>Dw{b;K^o!Zq!yH zHVtgQ8~b@w@{-6);P*6piV^C;zc;%o7v< r?K#K-r>o`k|FtsD*P`z?KcXH2bL_6IxBL{5fh+$=BmmLzicuB@o{ z3oZUOb-{eEv6&c6>il*HTG+1Kmu0?2;;rh1`P;a@4{6#9B+8CO1PjJ(gH>cN4U6wQ ze?WhC1gTkYS1vNTf{~rgbc4mFSAKS|A0@Z kt2niaV>ba!yT{QKM&ca#9oFqW3UY2h=+1Ul>L#0tO zLjvSaF}uN2Gn+WkWb*ZXXy*@yQt^bQW+zLJw-(W7Y=P1+Ez^qm%mHX0!sR(lF8Wm# zo3I`<1t4aO4@{Du^NHp+{5)b;2o77wJ}}Lp5X;<-OywVaB^6D1riS{DM==vT_wQ<+ zzl#K==cub=bKjB#dJ*r&%gx^h16f8{&m7c@hEzBG67>OkU0yL5iQNFNtQ(8D@Ec?8 zR-$SuN(i~5UYx)?pZk;L1BvAel>3pqBAMOBK`zmGx2Y3u+K1UW+%Y|F7EHD%;iMqk zRBTe|U^QG4F;cn_j4XMM`oIcAgbi>$0iezsflPf*Yq`msYLvi6?(g` G=G1@ zDztMAYG&8u3Dp79m)0l+`V^-`)ILAB1e0Vx0Cin_Pz$4wSNy@yvnS-UY@w25OF3K! zJWx_N@)P3hQr7L(e0YtUgD8 WiMN-dJjYLm!CjyGvTZE+o>O VjJLC-Z9;uP$cFV%Ds9w8};bQpKt}xt|kyGVPn#}Pg*G*--s_=uy)rrz`~Xl z F-Pg$dZAtYXz8A+MTD6tQ5UA&(bNo=t=&j znTxk;EpE5s#(FlzJlBU_%|X9c0JhNEia?$R_P7|ZE0#jmw!odX4b}l{h*w2X?zMcm zpU8{W#B;z5=;{7;R5XAE0@@FRuwKt{fSjy#57!n`Pxsx -x^}a1jKIH=Mv%?_Hc+P)FwEVKGGFM5sdtx z
!ByRMbt z*1ufobl6^e46n=2*TcSP;|W0lP(y@#Tix+#nlL2^m `SwTo5$@N* zGMiyR Dh51Af2O72B&7CO zlrS;O@wTRt4uKTcszX2YO1hi2ygr#s3M%gfk}F$a3%vlIX@!t)V<0L7@&c4s06z5u zTchM|BCqJ;MZ6;XEW=g6WnaLg{5#u-edFKCn>zre`o}H$L#&i9P7ar(5A}K+lXfSd z*Y7ZHo!}dt#%!r+Tg?wZ03**iaz@LQJai_qCT6lU7+Ee8dHR;$ey*efH60g_C)pf< zpu)5+FI8ByDFX$6NT;qZ5Pt1X%K*wFE>ZqfN4pdGDPy@vZ7e`hJp3n?0Va}ApV0_x z4sj3gs&_8qVB#l8_1K`dwUd+GrmS!@)qgT2XaoN!l#S^0LB3|pNoIxN^}ZVL_DVo* z3jl(EEjOTU30F`fg0lwYFL~9zs>zuw6EWP93OT)LkO+Q;y877cG#35A-SbucXO$?R zU+Q26memJCy$)pbCj(u?bj~POmSE(mw+VsF9weO)RG@v|_#nH8zDJPUU0FQK(xr ze5Wp3f>ypQ1c0mor4RQTuD@JGh^Tr~RMEZ&Zly (EfW`aI zL1qFcODcc$ZP|e>`=WfTy$h?y7HYQE95G|DM?k#wJ{ja-YN_=fSb*ywLT1fM)0Er+ zm_1eR1L>QOUG;ReTi$5sZ@I(udh4YFP!ABqDNlt-(?=i!6gs(5{aeI<+SDv2zEXvZ z|9Zz~*I_3wj8=Gl(BFGE; yvQY*G5WnZE)Qfc56*gaZ wl#P8bIvFCBK5-F=D9=kO7tEH_l zChR*cdN68v+8DwAg-WCA;i }M)|$rb=OMAiok<5p??|AjYgENfor<&w#yB^$t&|htPKy8 z6bKZbp~gRiNESPC4X68T@$XUyT1usp7x1L;$yyMdmF#~=Z32G=&0MjsTmXPi-M^ak zB`tK%QM`X%q<5<2`lDO N-r3> zDfNi03SFueDV^7R@EWfg-13#Wwgt=Ze9z8M2sYXl{fqU*ByEutXH1@H>>n-g0f+~U zi6uZaj}t=7tHLkWTbKjG?omOkC?Io*h&}Km 1wpd*?sKWiRU9c8G07R9b$kRYdgJ+jg3QqhR8;uY(?(_N zvBlcRPGHPdRjC$)Z)GRAM2Y0rNcu!{%Q#qCe)f}4-(MGbD)|BjBfIv&mwL4e HAezM=J{UAw9sKIs4`dhM;=c^3=rf-i|REJK}Vwm&S? zT1{7ri7`h dfn;UBUzoH^%p_58ZLeAj&1 _ta(ui4ra&)q*8ZAEoFye|X%4~D?FcUkwbu-!cfx%bo zDJR~=Qg`C$dkh>sOtmoHPdFn09ihpIe}jW4Ha2ftW@{@CbMwIarM{BB{?57wvkuKV zkaX>Nl?$3QSg4B*E&UoJbUfOZz}ZcX^ +-J>L@}7xygn1?P?xk6tt{jGT9<|5$A{*>C72I?ae*_?G>( zXz-~cCm=WQ&nYM`H!B^f7`@&DAU)>hd{U6Cbf;}_Am#89G|h6qV%(wv-L>-8qWci! zWniH0DxEzpuBCOwgL3U3l;o~mT}xy0c6l=^Lf$3=;M`729^d2U9(YL&*`=KhgI)|q zcCM7e-yYWys!<3tzW-45EC?JAd6n}aem_(E8ybPFrGZze5D4UCi}#yF-;1_NWrHvD zatvVQ+jJ%s79FrU p z;sLz#&Sw}CQ%;EnyW*(4p_1VjBYo!*sbYSc(Yfq^h1^;! zOrZublRlD0Xcb;x%@;O%;7j#5b{9dApE-hbh#n?lvP(o_t{umi&$Nt0)Y6>NB6Gn= z=8KVbvnlF;mVFlgTIf%5R fv^MY44gk)p@vDYph!VS+Xk@pvM8wzNBMIQ%xIdn<$tE*OxIk8q$o`eIGgc`jeS@ zvGx}j{QBv{8yd_^wXW2Ie5&~P3SHO4wULhPHNz#CVwI wKyQWiMFIuQFdUe! zsBz!XxWw31+ExyLS2Pn!w(V1Y;ez{){uxYaozbaosaj2^b`fY@@sV-^O7TClUh#Ag zdw6Z6F7dN9U34L)NUzw#bUd-sQ=gbU9*E{0hSf2hQjDh~3jTokdxun@JT+VZAt$kn z_$f0!JKr>ka<}rS` (26(aSp-!CPtxl-O8%xl23Oa?U=u{P_uY ze++J+F+N+=KClX4IEsBs#7pA-vOWA32GsVhx^1v`sTX?9??FYY>2_GvZhUOr zW&jmak8HU0^jhLyV%dfZzJeXCnKacozL{P)=_?h=O9F~wJs =|6GKJ@&r}oBu8TO;y4XpF(YbVmY`JBTd G;XD#o_kFK-)#HIt%fM0gi$*+!|7+JTe`(1C2oR2WL5!OyNvK2r1-#36B($@ zhGq-5(C(20H>?_JA}xd;M2Hi=1BxRBV^@X-AxPH#a|W*Rw;({nvp64;W7 eIc9zxuDuVzPN6l|077*aH=Z2$lRwa4pq=`I@SP4(sjrzL(&E1aGuX z%}%#|oi7_N8P@;4FoP`J4d _vT$;2@x0;EHqgjWPh!=81 0x zosV;zg)`qyzOI2b%z*bU|5Zm~75EqO7%sy7ok`>9iLh}lvGMvOW5ZtFfdrQjv1bs< zL>9gluM(khR2uJ8Rc9X{RM1j1k{U90KYd3%4zZr{IvUVg=V8>dzLu!?thM5 $16Z&lQrT}4eFM$nNze6r09roPa%h+yv`R~Wn>T$cN#IRd@*zWB?i-PTCt zNk5|VRH5a!2C%<4%%pX|Q5n4kHu#|+!VepnhbYq#L}z#luEX&403K#7iWR|sC$&c& zG>+M@QAh48tp{CS%)e-ORJV`II9|2u^ Xa9bF}ege ztn)`8s-2UIZ0CC #F@2&Ppdm0+}MD z#1LY2GZr*H$na3UjI!`po65f)A0T%sW$(XM){jpR6{;AfnkjH`dUrF!;cG~Qd^zg} z9YbZ-3BLLwrEv5cX=*eI1Jml(9@gd~HA-L3@LE+zu6ZY4BaI!tlWaPFq~++0`n8uN z`f#RMjt$|MF)F_-5P$q>pt%5?zHfJ2QAB2)2^0EI17cZu# *@VU% zr^qReEx9|8Xz*T1iw!AFeOwVHQ!Xi1+`fe6&8^)G%0j#lPW!Yo5Rwz7YIia1CgRpo zhRxR2{kJFMCuwWzDn}I+_Q}PXJp{xN6TwR1FR<|onKN1_esG{8-^_U4uf@T15uJXm zM}LbKe04n@9+&Rx%Qm5;Su&!|*ee~yR49&x z3MLiA*j5ZKkj(p)*fOnNoEPLa$4&K$&);XeTs`amr0awVXk<7o58pDM{~y~50hmM3 z7y_~Ko_7&2W~pa6s(rO)G)#p43!wz`MY<9REk|pOy@*^FiL@)vn{hDqfZW5wD3RBr zFL$RccDQW2Ca*oP6pKXNg7o S6xmT>)(P=qqUpE+wNAdx3UmmS;^qrWO)M z1+HI=bT9jniUn>&-GTv-;L4H*W4^rC()TAu*>(f_M~BT#%NItx0+;Kvia|v#%ctUp znx@bLfG%~t3 ZFmJH=#HS%J7kI*elhI?d zYJM?h$D9k0EZVb%tQ^v3OgLsflz+QVN}peUpZM!rLg7t&oosoVl>LgH`sL=_)7CVg z@&(W^J|z-}O@Q5~rUTG07@LcrCRZbd`?pw%17WVrh8OWbZQ0weuIb{Vam}PB|F*M` zNmq#^$+AagP%3@Ar>^FSIv}T%;csH|ybdy9+G40t@d{i6XcFp(;k?6SEiWep-OC-C z3;y2t!4TJ~8$f1D9PYEk5?1YoZL@i9vlr$PTZ8~K;_z=VmZ#&+f37i#w5-F-0P%w; z6-1%xgQm2R?`Hp%?}s3*G+zO+Q%uS+2%UL(tyWfzKdi3TV| z%h2Q9B`HRF#ufL`)|Ek9#= ~p znQ|HEY2yGoN0Ov`9Hr&n64FL*lxzpDH|?9kl0Q81ru{KHcPIG6@FGU}6(#nWGU&m^ zN=b#dTHi%szw -onu)z_m|8WFUAdu%QQe!9IkMC z*na)@;dXDoG^Dy)W6i4epwT!!;YjC7&bmUn&R8or-~WfG{o72YnmM77paX>L{Bpy) z(2T(VV>WlydnH~KN;AvNmo1%#eLufcx>|D)=-cINLR#j~n3tKdY}Qa_A#;eIRaqU8 z${?dG%FGgWv3d9I8q>j%oG5yG(XY$YjzH_*f022n&LfbB)+4bzLjV`Dt_C*8Cc$MW z&P2MT;V+Y23HI@Xx(K*G*_Xb=TP0LU4v;-2u0S @CVj9U^f-B?Iso zGciWls9THzCTTJ;Ni6uhnHGGYP^af@yXm^7wWK%N$kQ&Bil)8E)%_v*toX*rWWtPU z+0kj+RLLMS{T%=D-JaP(JzvL_TO@f48E2)onHHTpyIhM`NA~U4GveWsMHO^_mDMAr z;7l&3ST@QCP}k|!&RK `>40fyJ>D>g?mhAPr_gmIZB_3nx+)&_I0LZvp5=wkPJ8++=KJ2(cxnbx+dS=6 zv@Pl5PU?~>&*kk}HVqk*zcZ?xh0}~GfXu2vGa~bpnGnHUB#81kS@O4bINFKyNtD&> zdt9NM?PZQ|gs<$XJI;n2xfuT}`ITjx_%^XU@k7<8^cMHIHfJdwX0E3(-&uLaelVnm zj5bK|1xgz)SK{xk$R%aUN>^sw4lyo?XMk-s@Z-#yg9G*|XQ0=aHX2}_V~78_+ogHW za`yf4$#<(qgGxD7Z{OCi3Aj|cVANMN)MLfCRf0x&0T91~8Nl0~2sV;fdqSE-ljBi+ zem+SThnH0%?z07W&o6#p(d*_w)9&! PcSB9)LxJYEr}5MN!n(`VdlJ5ASmJ(vdb{}g z?3>e;*=>wE;dF&zK*SJ;1&ofmyNHH|) =bG;%sbCJtRu|AKC7Mj1F&nkfV zE}Hq8dMDy{jOV$)n`QfjgY9R0zJy;bR*cYs%Er9$?pu>Yhp@ilJ3M@msuf%KJ3a79 zQvocHz-`&2-TjE_f+-njz JU)(bb)dP`)ya%|7DI)xnk}j zK$?1X 0kasH?KyUVZ;;T7eMe;iS_HU|{iot+GV}n)C1wIrBZ8FhsDZ zOR-lbGq{uU48;-Up92v7BL@OB%drBe!b12cplh=6F=}GEGbaA9qrUEM?0d7T_+lUU z0>EMMjO8PcA1%yehosBsG^+0yOdA3oiP5O#qezW}vJ6sWMeX=m$zNgFZd(doOPann zd|rF*cJ%)k3I9}!JsKb908B0z`K3!b7WF~A4#5d U4E zSYUW;ZnkBQy*iKY*MGW$y#cQ=dFIL=%yN==icWg%zLR`qq6GAHYvBZ=lC*tNC0~tS z7eKcW=rxvqr^Uyik%|!l)tZI;Q3A8}hh{#>gz*ZIPZ_R{O(rUViP+yO4~&)WTuyR2 ziaynE)sr~w*vUOZaC{Z^txa|Hgy@(qvE>)MT9GqN6LodBZmVlpD<{tK59)|+RFO&* zHsEoFSgbOQM{t>Bd *YRf2i?-egjeYb>bXnu(22sqn0g)?2 zEC+{|f+B>2aGuzaQ&`cVdZE2xr@)~1@;wv5827|w^_c3?V;N(UBgmaG-D7=V9i; zr2)=E>ilLYCh qm4ucd~ox>mn^H2>a%z&G{_A`U9>0 zpDDbPyeg+#UGE*QIgEHqJ;ZgqqGsd;Q+?n%?F4%ZX!yj)8e2{YO~TQG3`J3)PDtFM z>>Y*%c)r%<%M@QehhKgCa#>xU+D*)dIc8Iu(cZhSe;7@&tQdxB7oGk5^r!WWXW*>C z-1wDxFB~(*eeIGF1)K(GV^tkcy`5|@T(wf!FW*zI{LDs?ladKMSkKgd`|M}ZKOJRo z;OLcq4kQ7{2W232Lm8!_-03myptTm%Ro^QTBd6S@AJD-3gJ k!$G0g8bL6+G2hZvlSs`pr}5 z6W)x{#Uuxi8M<)yY5~d<=t5THrOsCYMzhi=eG!aA*x MN0l2$=fA#-<7Rv@$Q2+o`A=F_%_kgEEfTJ!1|0oOADo|JdJ}KcR^m`ZZJ jq6dzQ8vmJnp?!u|UBU>D}h`720KqY~|`Yh~$&z>G&05ENuz~!Pe<(dC$ zC;ipPGmts!(n+=#6xe5UPP&wT6Qh(r 0EoL2#GR;OAB;DW#Bv-YXV z<5tZ14=$?655O@HK)1{)kk-0<8R0#>@k KiH*php|9iS2wdeeS i}BbkJEZKR6Djzj>$(;faFE zN7re-H<{ij12;dd0tVZxet`vSK!vivm2&&;8?`Gq@B%~dYGc2_|0p4aD_rD7Ev=5( hf#fJkO+WjeT~+atjcp&tQs9X}44$rjF6*2UngG?&Z8iV^ diff --git a/docs/index.md b/docs/index.md index d7a1654..1dbc37b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,7 @@ # ytstudio Manage and analyze your YouTube channel from the terminal. Designed for -automation and AI workflows. +humans and AI agents. ## What it is @@ -20,22 +20,22 @@ and plug your channel into AI agent workflows. ## Highlights -- :material-account-multiple: **Multiple channels** in a single install, with +- **Multiple channels** in a single install, with per-profile credential storage. See [Multi-channel profiles](profiles.md). -- :material-video-outline: **Bulk video updates** with search-and-replace on +- **Bulk video updates** with search-and-replace on titles or descriptions, plus per-video title/description/tag edits. See [Bulk video updates](videos.md). -- :material-cloud-upload-outline: **Batch upload** from a directory of YAML +- **Batch upload** from a directory of YAML sidecars with resumable, quota-aware behaviour. See [Upload a batch from sidecars](videos.md#upload-a-batch-from-sidecars). -- :material-chart-line: **Scripted analytics** with table or JSON output. +- **Scripted analytics** with table or JSON output. See [Analytics](analytics.md). -- :material-broadcast: **Live broadcast control** for the full lifecycle: +- **Live broadcast control** for the full lifecycle: schedule, start (testing or live), update, stop, with stream-key handling. See [Live broadcasts](livestreams.md). -- :material-comment-check-outline: **Comment moderation** at the CLI: +- **Comment moderation** at the CLI: approve, reject, or ban in bulk. See [Comments](comments.md). -- :material-shield-lock-outline: **OAuth credentials live owner-only +- **OAuth credentials live owner-only (`0600`)** under `~/.config/ytstudio-cli/`. The `init` step is one-shot. ## Quick start @@ -55,6 +55,8 @@ Continue with [Installation](installation.md) for the full setup or the ## Disclaimer -This project is not affiliated with or endorsed by Google. YouTube and -YouTube Studio are trademarks of Google. All channel data is accessed -exclusively through the official YouTube Data and Analytics APIs. +!!! warning + This is **not** an officially supported Google or YouTube product. + +YouTube and YouTube Studio are trademarks of Google. All channel data is +accessed exclusively through the official YouTube Data and Analytics APIs. diff --git a/mkdocs.yml b/mkdocs.yml index 0a1fb52..cb6b69a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,5 @@ site_name: ytstudio-cli -site_description: Manage and analyze your YouTube channel from the terminal. +site_description: Manage and analyze your YouTube channel from the terminal. Designed for humans and AI agents. site_url: https://jdwit.github.io/ytstudio-cli/ site_author: Jelmer de Wit repo_name: jdwit/ytstudio-cli diff --git a/pyproject.toml b/pyproject.toml index 36aa5ef..f072680 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "ytstudio-cli" version = "0.2.0" -description = "CLI tool to manage and analyze your YouTube channel from the terminal" +description = "Manage and analyze your YouTube channel from the terminal. Designed for humans and AI agents." readme = "README.md" license = { text = "MIT" } requires-python = ">=3.12"