From dca9e841526716a172dc37e557a0033d24cfd4d8 Mon Sep 17 00:00:00 2001 From: Marcel Amirault <4155490-marcel.amirault@users.noreply.gitlab.com> Date: Fri, 10 Sep 2021 10:55:53 +0000 Subject: [PATCH] Settings UI text - Admin Area-Network/Import/Export Rate Limits --- .../_import_export_limits.html.haml | 16 +++--- .../application_settings/network.html.haml | 5 +- .../img/import_export_rate_limits_v13_2.png | Bin 18320 -> 0 bytes .../settings/import_export_rate_limits.md | 34 ++++++------ locale/gitlab.pot | 51 +++++++++--------- 5 files changed, 56 insertions(+), 50 deletions(-) delete mode 100644 doc/user/admin_area/settings/img/import_export_rate_limits_v13_2.png diff --git a/app/views/admin/application_settings/_import_export_limits.html.haml b/app/views/admin/application_settings/_import_export_limits.html.haml index 6a49f884a802..bc4a1577f902 100644 --- a/app/views/admin/application_settings/_import_export_limits.html.haml +++ b/app/views/admin/application_settings/_import_export_limits.html.haml @@ -1,34 +1,38 @@ = form_for @application_setting, url: network_admin_application_settings_path(anchor: 'js-import-export-limits-settings'), html: { class: 'fieldset-form' } do |f| = form_errors(@application_setting) + %fieldset + = html_escape(_("Set any rate limit to %{code_open}0%{code_close} to disable the limit.")) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe } + + %fieldset .form-group - = f.label :project_import_limit, _('Max Project Import requests per minute per user'), class: 'label-bold' + = f.label :project_import_limit, _('Maximum project import requests per minute'), class: 'label-bold' = f.number_field :project_import_limit, class: 'form-control gl-form-input' %fieldset .form-group - = f.label :project_export_limit, _('Max Project Export requests per minute per user'), class: 'label-bold' + = f.label :project_export_limit, _('Maximum project export requests per minute'), class: 'label-bold' = f.number_field :project_export_limit, class: 'form-control gl-form-input' %fieldset .form-group - = f.label :project_download_export_limit, _('Max Project Export Download requests per minute per user'), class: 'label-bold' + = f.label :project_download_export_limit, _('Maximum project export download requests per minute'), class: 'label-bold' = f.number_field :project_download_export_limit, class: 'form-control gl-form-input' %fieldset .form-group - = f.label :group_import_limit, _('Max Group Import requests per minute per user'), class: 'label-bold' + = f.label :group_import_limit, _('Maximum group import requests per minute'), class: 'label-bold' = f.number_field :group_import_limit, class: 'form-control gl-form-input' %fieldset .form-group - = f.label :group_export_limit, _('Max Group Export requests per minute per user'), class: 'label-bold' + = f.label :group_export_limit, _('Maximum group export requests per minute'), class: 'label-bold' = f.number_field :group_export_limit, class: 'form-control gl-form-input' %fieldset .form-group - = f.label :group_download_export_limit, _('Max Group Export Download requests per minute per user'), class: 'label-bold' + = f.label :group_download_export_limit, _('Maximum group export download requests per minute'), class: 'label-bold' = f.number_field :group_download_export_limit, class: 'form-control gl-form-input' = f.submit _('Save changes'), class: "gl-button btn btn-confirm", data: { qa_selector: 'save_changes_button' } diff --git a/app/views/admin/application_settings/network.html.haml b/app/views/admin/application_settings/network.html.haml index 1bb8a278f2bb..238e5c8b299d 100644 --- a/app/views/admin/application_settings/network.html.haml +++ b/app/views/admin/application_settings/network.html.haml @@ -110,11 +110,12 @@ %section.settings.as-import-export-limits.no-animate#js-import-export-limits-settings{ class: ('expanded' if expanded_by_default?) } .settings-header %h4 - = _('Import/Export Rate Limits') + = _('Import and export rate limits') %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p - = _('Configure limits for Project/Group Import/Export.') + = _('Set per-user rate limits for imports and exports of projects and groups.') + = link_to _('Learn more.'), help_page_path('user/admin_area/settings/import_export_rate_limits.md'), target: '_blank', rel: 'noopener noreferrer' .settings-content = render 'import_export_limits' diff --git a/doc/user/admin_area/settings/img/import_export_rate_limits_v13_2.png b/doc/user/admin_area/settings/img/import_export_rate_limits_v13_2.png deleted file mode 100644 index 76015ce0ee3459dea16972025ec068b451b69770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18320 zcmeAS@N?(olHy`uVBq!ia0y~yU_QgZz|_aV%)r3lBAC$6z`($g?&#~tz_78O`%fY( z0|NtNage(c!@6@aFBuq^Y%@b5N+NuHtdjF{^%7I^lT!66atjzhz^1~gBDWwnwIorY zA~z?m*s8)-39P~@uh<GCtgoa1R#K8}s}$iIpx~Tel&WB=XQF4IWXGkTpkPy!l4cd; z;s(`Tl#*tvlu=SrV5P5LUS6(OZmgGIl&)`RX=$l%V5Dzkq+67drdwQ@SCUwvn^&w1 zF$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tW3NQe1XKF<z!lt}psJD{ybM-+o`i6Q2 z`q;FUWTxTJ29kkj1N#eNn+?b?tI*=qBIo?v+|;}hyWr%a)YQD<jQkQCuuUkE2zNp> z24q&G=0vz;=BDNqXXfYGS(+O`b)m~()ftJ<X=ZAItP@EFNhin)R{lkqsd*)dpfI#E zw9&^9gQ~aD2L&)vfP;Mv5e;&2v*WVS2gf@o4cKx0N&A?@z`(dXz$e7@|NsBa&dzCR zX#oKN!NI|Q{`~pz<H!B`_x1GjtgWr*&6}5)m^f+Dq`!avo;-Qd)6?_)`}hC;{rmFe zOKfcH*RNmCojcdw-u~dhgRro$l`B`STeq&bxcI<<15r^?+qZ8&c<|t-PoG}Acu`tf z`uX$cpFe+IxpE~dE32TOVAiZzd-v{bZEfxE@87+9_pxKg?%ut7?b@}OGiUz({rmj+ z^Kag~Iez?jc6N4ha`NlfuV>7d(a_Lv<Hn7`!op3PHvRhbtEQ&r`Sa(C7cYMH?AfYS ztD2gcPM<z~`}XY#6DE|EmEF8~bNTY+Jv}|&zkk1c`Eq)CdR|^$Z*TA0w{PFQdpCXh z^rcIee)#a=;lqa&6%~^wPp+z}YHVzL`t<3eM~~*rnKOU>{OaoJWy_Xr*s$T!rAr?_ zeq6nJb$567w{PDTE?l^C=gzrv=bk-#_SC6UM~)m>vu4e{eftg_I&}E(;f)(NZr!?d z^XAQUb#+swOj)pCL0enfk|j%CzI-`#>eOk|rY%~uXvK;Zw{G1!dh}>#XXpC$>#twG ze&ND}EnBwSyLa#6#f#gvZQHYFPghshu3fucy?WKs((>fVljT_!N(>AN44y8IAr-gY z%>C^w>?zcc%^{q9U;?`!lg`754HC|qSVUMvVp&)gyQp>_YGisQQh2pBnm_hy%GIx1 z>%WA4^@&q)WHG6ZskK+}_4ohY@z*!ppWm3FNr3|wI%KYPBdq>O!-{<FQ}2TXPCYBC zUHy2$tD-H}y3aNR=-rCq-?Z(T+0R}sr<p6tWm0ncem(lR>+Zh$Wp~PU^EvKr-S^!& z<afO*i{O^;OD31q`)(9c-NgFvchQsGA?6J`?*Ef>e)BD1*5m4R%a5%&P<d|u?oU_J za;<DTcZ4qS=*)2xm|5(@)!Mc>wBnmiad<|}>@!C^_l86-P04eR(Fr<o=AQ(Y>JocS zrDD!1!SfL(y=;yqWghO@w|@2UHn+YrZ?m%x&rK=b0n%W1TSz->_e|T~8B_kL{HZ^2 zXR^l}*6=m+>+)i&P9Ii!%5qTj?RlTI#~+nVjqp3uU@rC{#%YcRi$ywLp{oCyuzTVM zW_#RFocO`vRnVom_sq8MTC*>>vn9H}?}o6SiO{;9GtAc%ZJ)kBkZ@M!{PW^lMe51- z78%9+sg#6jp3yBldG<z{RkVMP(lMbw>v!2y7_Rg_FT}U`Ol^n!?M#O`*Ti33?qGgy zGjmZ%@%Br_7Z-e)%AuNl@mj}?a<|sQZ})uUORAk0abEECi;{rO8-flzwhNnXRo;6b zaY5tl@777z1^p!|{`N|SJwGkuxP|e?@vF=18I5vZZr)RWG(vFZ`N`{JGUr4ct)Ay< z_a!^6>{3p$z@F_tZg10y^|rWUB)#gm{|s6CiDw;+Zbav*ZMB>>^W@Y@j=4XRmd@$W zZ=53E?yzi@xyhP&Tb3Qk_DWl{<BV>J48!v^hYm;1Tz*z2dEJ&Xv$PDC*kx}&>GN^- z!kPb-94(F*B_}_T?BCbCKBq%hD?LN|mJ74y0rsGmP1z1hJ=5MM-+3yl{5VGD(=vg6 zt&JO^3Vk9Y4U-pKK5evk?Xo(DxeE7`t=NOVbnf+fcKc(>1=qxF*=pfw?ptQ@zH?tQ zhyUK<SqgWraUKcYTQy^|*QuN<B_<z5x12DjjSIfXcRl@x>U2Nj_hongsz2(#w7tdX z^qZ6O-?hF@{P+0a$(rs(5mGLh7pgmU9I%|#ert*2wbSA&Gvr>aaF~-g^Kqs4(iKl! zgVTih7HQ5~8*)?Uv+AiIk{=oGn3nJD|IxMAI{pdMjEA2;-pKsYtSvJyT>ScliFvP? zxAO<IOXz5RUeA#K@<L{x-9byO+q)Rdnr=uk9PccM`86#dY-YHp>YT0V##>5vq|3}X z!#l-p9n(F&BU<NHGGCsvqMI$#Pk+Nim16&SXHvRiJ5xh6cgTt#zor;qWPNoed!bNG zM~zjNV%f%WZ`TyFmw%4f@5`~Vx|R3AE-ZS>e}RWS>zza=&)lwHcJcXs!SK&1&kUs1 z)sEk}w6$f^sXq+M`z!Qr&DuBf3_o|uzvZeQ_ydpZp7SkO=bVxAx-)sb>N_fv1l>>0 z<_mu2XTUnIY{ly+hI++&DevRNCjPwgt7@%f+UxGjt(T3gjhgL!nY~W_2|9Vky=1Y& zvn7$KUzdH+T{y=moadv`*-I~dFYK;~dJ*jQ?5gYHoBoS*+j4Kk&N{sAs+9TtiQKVM z&rP2GUG=j@zT8rSnLT^B(rRS1Cs;P^h*S97Ar*huEA6Zm|C$f$Y>d_y{Z&no3pl&j z`|i7oHR^IJ&q~kSy2LZf-)QnV-kR3;JHO~I>@j*>p+0xcA-4VNEmKe0w9l8XUy%8d z%c?!Rr}#_p^^NDFxcsDE*S)>7FU3qKZBNeg&TM@Lf8!*D@U*bD{24j7^)^>?Y?Qs2 ze{N>~#fS4Bt)JXc<KFq})I`azHZvD?E)&k0wwG1Fr~k|yv9miX?^>H#zWkLn^Eksc zDJeaMnoWNCO#x~%pGR=EPM6*3U^T;tUGL=r>Ght^9Oup4l~uq}#kN<o=E(GAQQwt~ z!~S0=lKN<J!1zel(&>w}=1#lm%_`R)aN@x99aAH2`FFWzwf*T2W9FSc>1M?Gg|UT_ zyEOMs+tXVktF2sY`l#1q-kIc(2TW&_`o7Cc1{p=?ZoQBoTY7PMaQh###nz|)C_h@8 z@j>?NQriuwu?zw&Mkn{=_zE*FO4063-@p9un|tlS(m$BOcub>?y^(5@dmWOsab4cU zUB|Y#&pfLd-R!nmuK2E4Zs(daHZhY;PCr?z8usj7j?_6*eVd04w!6>maciyH-gQJ# z`*X!ZtIuriR|~U!BYE$nMPEpL`(I9B|JhY@Q|peT##yboTJ&bxKGiA3=hpm9YrFl< zK4itq-T5bF4nBK5neF76jgNWk8bXqVe>EBYxt{Ox>9kS##xtfhnceyS9ZGi@r2gwX zexYn@U-Ep_xm(W5_@}4z1t|PA{*$yeq|!Kv*U{r{^xEGU!Y6GmK3~#!_mA_6V_cUu z+osKPJ|n$z+VY~*caPpzKB+$SOM{`jEdRr$DObgIsQVWm5ID=CnJM<;)>rwLUZIhF z|C7_qcC0qJCp71&uy<~IiSEKRM*3Mc{yfRi+WVL?mNwp+QhDlS+h!Z1&s>GPb)U|C zaLWG9^Z#qhy=$LSXL>I<mUTR>O!Lgu_yD)<)(?!Otna>&30S;DTl!u6JZ+74dSBHq ztX=nK+l-J;Z|2p_w0*Yz(AML3Ssy+~xo4skcXs__C5PSDt{2A4-k37)$i5Sjs>P*m z8aE$$d))52mD_@olHEBH_x_&zlUlO)#eL)4$&mss&t$BAESsn)rMcH!(7%7_^kqyY z=l}YbGOxLjCTLxKux>ijO>2|+a~#(69Ns?7a@NcPU1yp$c+V`(dw%8fwf^8&%cpv6 znEiM|9_#XSTkG)c#wVYjFE75nxVEnD`0+n1>+Qdv{=Y=QsNOem(ocoe!Ym78jQU$$ z(;O{CjOxF?VsR9h$?BLQh9FoH=hw`?ewm}`!`X@A$2kuvI>x=!;%GmXR(W$5dMhHL z!fVgw9pBGxoOyem{(Jf8))TMy$b9$Olu^3dW`RfYO5I;p_KgSYo=C^ce$VgiFYxcU zW<_V{vhw7$`)AJ&`K{`d{y=hBQE|);2IIPF$I{m4f_2-{K0n#^^$X({u_=E}_)E0u zI=8P~y~RKHzuv#hTGv;aN31T03twAYegEC69SVQmYSeUw&Qkw#=Pbh;ue93PrgH2& zkG39q#g$rDtoTXl{qyHmT^1R37Bvrf_8h)2qx{W|hj)9=?C#LM#9ozpxA}Fk%lUO( z+=uS>z42aCH9u<~<ExYVK1>L_&G?w@mfXM8*Q_(XNM6>T=cK&<ZQ3^OKjy2qXm$8Y zg#R`&+W)?#>h|Ka$NyrM2O9DR+`hYL;by)`;l1bLLlr}1-<Lk+4Y;}CeV1l2Z*AYL zO;bOmt>XPPKWposv{U!2&VE~yexyyxUSg#c&)o2zO9U+L@dk%VA2a+AZ>V;UG3Uc) z_SNwRue^Od>%Ci8+Wo!3$IjlH@G!dh&9*y-4fsWve#Cz}_jPS&cK6}zNuGb+9+}XR zz`^Nh;<ZCnK|}D#q9WlZMJ^7GJ6DK)jo2D>@zlnw+_h_M|6NRfJM*N2N!081c~{c+ z#wVn`kKF9`Z0_E)IqBatttA(UcU~9SW#QTROmwRLyRz*?CA+wt&Th2soNAwz<`x=L z@BHt}_h&M5-xzeAUSHVNw&C+_n`fE}o?FOQI^9>O{rc0|bW*SN{f+4}*SBSIJzFas z@Y>l;exjDlEVpIWSx>6O->%eNQxG1qs+OJg-D<PfWvOz8Zx=jG>wDIJ^p^O?hChy< zAM(Gt<0B{@v6@xq$AfzT&kM|oAIW{&{``W+Jcjjw`IV{rKFHtOpkrK6E|s<5!9l_8 zYn6Dl0~h^PQ!loW>ix9e^Q7>p2S)i)`Sz!eN4(2>`l3X<Wma;z(CWgNi}5$@eQv0o zQgZTL_HW)lO)vYz%ZIB|`vlf5trg*Y7jnYJ&n~&)#g<D((N8n>&bzhf^^B|D?b)9{ z{Y|quR@?p5Xm_7f-Qgv&Tkf2>c&u>V`?;6@6wh@1eOGfcx1ryU`!2%y_xHVB7Sq$+ z^+4j{hRVe7G+XyS-o@e1Oyz#^%AftTw_xX5Bi`M4bvNJplpnsSzu5Dm!}{fwa%Spx z--Y!BrEzaP^-d*hcH(QztEQLY57`}Mo}~QQ;MUd+)hX9D>+n}S{<vfNdZ%Z?E~;Ux zB-fqU(in1S=i6%!qe>gA_z#E0e`l0<mi7h|nr6Ix?+<=Rs(5ev`M@sIne3*LY*w1( ze&J%j6u<1;7dzA3WBG&f)P2Xp<@)EfXP?Sl?Q_`6B;`wyQRA*%R{O#}-1Ck(9qsD< ze9r7?Qx~7mxuWw<C9MDJN~wp1{AZ)G!k@``PdA*l^N79qyc_Xf=XSr`xu#7k#qQg} zGYj9W3W{BKrt(_<zQa9NuTQI78?ndd-14T=XJv9@U;gO-YreNS<(sBn!C}U1%RkId zt-j7#ucQ4|f8z6P%A4nf{c8OyaeLCv%KkHc(Wz2li-aYXeX`wb$6_0-a_>bui=(;j z@8V-hn*&zwm>eNmDp)z^{FU!1%Wf!7J2zvw?_Y~sB`ME}=VWMp@|-#U(ubcKrY+?$ zGs`c<NPM5Y#Xaq~ymrRUnTz*6sG7fRUXhbch28VpDY5!nUhuF@$$hYX+L<Z)Tw>n) z2d$oWnM-H$^xraHgF<J{-FC{PWYLx#o788%UKJdF@WMjp`vtqFr`Bnu_XbSfF*!n( z=lj`ft<f);XWqUzQ73WUs|{tJG-PH*U${Tx=ri?{IH%i}%PYiwMykfn+-+$2RiImb z^3FSFF7in=3vccWTg6{(v0BD^_Nzq=a*^ky4?cU^^hsu8s@%~FSIp8@%Flc^Wtya{ z`hA6f*tF$qjd<s3RNi}$a_#s`T`BM1OkL}<GG^U+7_{`x-Dx*p?VCHv*nNfV9nUp! z(;GH_Epx19iZwa){GFYQ(y1-W=Eu%je!*M8UTFF5YnHJem?r<*bcX-Xml*p^T5Dgo zr%yX$(iygE)tei)toBB3<}6jr`o4C;O}<wqo6ndCvanT#<URSqwv$OiBf#hW-peg@ znJKNWUu=#_%Q8;*bdRs-+wFTyPvyQc7S2~LZZ0+1{``kj!}Hy_Q!@(|v43p0zW@2P z)s_kNe>w^dax3qgJ#Fsd(irix6XsYt@jlvj&NBFGZRfP?nA}(Hx1Ox8XnnHlz5k<c z1??G6_Qtg@o`2_9R-FHfc<DLiW^?E7Q$C(B{p*wU75`0MrG)0knpEsq_y5M0wbi$@ zF1`3@s{T!<t)ygrKl|4Vm8h-Ou18ZJ&i4?yZU6L3J;&eJImfE5e$8*5zj0$|_5Y{a z)N@0_UU9_=>{DCR%6tC(=K9Bco3F3x|M~BH<>g&Beyiqwy?Sr^zF&U-e&FgglPmt` zzeU`uU(1*7x%X=N{@EWwlNZJRe_?nbWUb}u<?{V=>*}M9E!L>HP?~sRrq(9ma=Yy7 z!p`aYRFcc>>wCA%Gym7zeQAP(UX81f_I};m(3!I*?!W#1=)dn_zgK142zvK*r;+}n z-TEhYJZ;Xg>t3528n$iP^L+7^^^R%T6V65(?LWEli+PEv?epaqk9^;DCf6l>fz#b* z{mQGR=bc@>uib_JOxz-$xUFJ4&+Au)?sC2VDOIszr_Se9kv=Q78rOa>3EDpMjY*U9 zt;4)i?QS_APP0k4vnTg}_4?npyG^PCS(kq;RbBsYw&DJzAx{0v*Se@bO3Y7Z4&1op zlfBjNk8}N2bi2OhC_8K|I4MnyfB)T0tCD(s+X}6{WYd`6uQ)mT-^u4~d90UmpJaPW z_e=d(xwhkE`&`4<E9~UV9>wN``F&~%U^ZIq(wQMCH*KeE+MNTnUCF;}4n?m!W8Cnc zVS&wE))l<1@h{Z6LK-U19Wbrp*t+OK&GF`fcL9-U{5_QiG%5vE?uF>5yxe*yQh4=~ z=a+0NzPbx<WW0Mn?#}Wny%J_CrC)F}OYS>UAid|xgkxEJ%?oQktg8;#^8GWzPX~!> z39sAq-8nvR_219ytW4C%Tl@I*)x>)f4~DPJGyk&c&>toFy!*l}%JciCK4q11weEdz zk}qjtQCQihA~{Y|#bTk@5>Cl!Kd<gp-F4XYO=&By-QUwj`d<zoUcU4DF1h2<FS!m) zJG0EnC-#Mc{<;fAKT=a?zJ2(1vcwYQhW89T9D5z)eIF_Q^p#0sT=s3s&2NuX>eTip zZiw=nW%&KXoTJH$L}T<4dZjk0zx{i}&@X+{@*KvyAIe%7!roN>Vb=IrC31RqXL{e6 z`hu|Ryo}Xn;vC{TuBX|_o}Oyi^ZJX{?$C3mEX5pGu+HRv6mOihz;F7^;N0Zm4q^UX z5*qi7qf0(#+Ie1Kh@F3I!x1BMhLs^)omEFx-7&5%m{GOSPvlCoRr?pmkMC{%e0|(1 zuNHb@jd-(!&r%U3!@HUr+@F~p3DVSmr_Yd<zJ2q2r3aigrBg}|-xg$wiLuZX?|5e5 z^LR(@=`%0=6V?PhD{Ki~xnS;}<H<XX@|kx&nKpZBu})I}x6x$@w~MP&=d~FcEb@OI zeqiUOGimNNm67wGxpz*}DYUgXXyl&oCjHv9fK^(>&AP>&r_UT*<Y3ZR_4cK${q=jI zMz4>usFm*NxcYLYYH`Q*PnYUquJG!XESr4#y<)ok=9qVjPm5jP&3EUp2yLDFS*EHi z^`Ct8_kY)pOg+Z<XKspG4ZmTFfC>l8q0pV&LID$Jb9e*_9MyicN_%NXSoGRk*J8J> zt^IcMt^D5ica$`yX5}i{+&|CXc*f^maob7r=W{+B&Ty90KU0^fe}-SMJbv4+hf%x| z;(wX9c3+-)edTwL8>=70bd<TyxX*C0MLKOU=bLK=){!Zt26}5|av!{4`D{@}*WS!+ zsY#EveEV@*ZGPqnt2+HN7iZ|TDqES$O>kj3-D<EtkE57<nM+mF++-^;D?#4kn9ZwR zr$k<@+-|bX%zpl?$);-`ZJqp5@Hv~;-+8Q04|Cmax71miIBx>ynU0VxeYHEnB-eGU zn|^!l%Iu)X?yVcbd5qsKGgzK;rc3%6hge!~+fODv8TZorVu}CwZc1m~ebV+*`^@|u zi?}ZYrFdWdb?w|i8QuF<XC(IIycGOva6Mh1u!&)cV%5Xk8UBh<#c}RG+YK&%ekY#5 z-QlNhTIkI7n4M>uTw=vvBe6eaZXZ)>B}xxY53BpR;n254KJV9a?Ei1A+jD2{)N7_c z*t2;V7xynrytemkAW!Swq#2p!t&ws)dR2*bb6Yfzp5|0Z{&eO4{^G;W43_gn8~6*w z%@Cemy6Cp0dguGE&jXLoby%EIJYzrip*w<&H>V3_ZZADJllzi(?bclux-F5f79Vhw zl|RnA>9W+bPZk9yE*+7*9{*;(%C-gF-)DQ*S)Vt3zwFA#YO!hjT6^T5naUpiEPW_O zWAB`!E1qO+y{7xKK(~@rW&R73-`n18cy;evSK_j}D{uC?pYmkkkM@}Q+WPKHm;Jwg z3;v&d?~3LB8&ftv^}gd1%Cfs?HlJrsonvM9epB(9oi*vIHv%Ic{w+B4?T);zd(ivo z{8~Bd18x<r{xbFSx2<!O55_M^$_!rL(G@8?>72a%E%__<ULWQ!+P~`0{h;m@5?9vO zpILCF;=#A$W*^owtJbIf+`m*z5EERKzjSGars5)d-OD#N9gaNrMCgx;@~_WAJI|b3 zw$t!<x5JmpCsO5Ge)1eoU3A{mEWK>YPoX%*MSBI++h%qoswsiUv>BZeX&?rKdvD^k z;M3(5jve0|X2h#D{;`Y`T9m|JEPhM-_@l#nR9ueAJ$sW_+hO{7l7MLC4B47$^I89= zhPSM^aoC2j_`}sD)%=A@TAvK&m%6N)v`59oRqmN!&+BB_qCILZM`hDI<FB^M`*vM# zS#jcUO#AQN(ufDDidx?cmd7#7c=H&{e7)&sQjd5`hJMS;4v93SB$)HS?o_(fTlna0 zW{2H$*?qRW`7-WbcE0)0`?$h8e9?Imz4u>qV=Fh8F0w7!T&hGxuxM{q!iME1s%mtD zj-Pg`p543nUB4YS`?gzm8K%mW-@92O5&K?tSH+{A|K7`gOU=lgZTB(rqm+f<@0Re= z$Ls#oP4E2XGQ;-_|J!Ma>zr@@T^#tPI(@V8$A1ggJ`9}u<NoIK^Y8L+o2;^5d7M4) zpQiro0=o;Ti);nc@+aheKJ+Jh^2vX}(>A9k7j60#ZGWcSgx#Ps?)T9ZFQ;Fvoc!PI z$;7+*LHE=6%3d4VZ=ZQEH1c|X>km`=GvD`In!ft=QcJrXLCNdQXC~G*eh$4AQ>7e~ ze0{s3F#99kcZK&Z&nVW&wmsKja^E+s{Q2!CQ`Ww{ayzxPOl#Gou+aWA$(znag*QU} zPxw4*XV!hc=*hiN_tqOEg-?x&|5d$f_1UkTHcFC~dHXN4N%75E)uVIszo6#Ee3n?d z;*&?xQ%^_jTDZ>Y{kxwRueBa++N*K5dD+`mk*cTV^WH1p;!QNW+N>llc+p_{;dPrn zYz;~LCNoL9)!;ni#=lmDeP7BB-ZA+RxzA;L$-#ez4(0x2d)DQ6cQ3~z-`=_zyQ8C` zWPb84dt?*mshPlk$R{JVnr%jrdBnu~vl^B$ey@0+xrXcKa*t`tXC*u>Z9XUZPq9eo zZEKm^$1l}Ogu{8C>07Y1_djHR&!c3JzSyJRBS3Lk@t+^M_5G&nm$EJHI4x}(C2f_R z7;*05f)j;zzV41mI&*i+?HgiSOPc@r{+awrH1kjZ=OS|@>2vqq+uV2GqJ1c)S#D=f z74PTQ?A}HG>GR5Y@)r3VGSHWEb@`@TbzJti@ur?7;%T={y!owEx>9$}sM%RK>#dcV zQQvBbk}rSl=3fvyCN4PlvcR4zyy0_rFXy~}sq~3+rQ=_TNmGON8=gtD_PjIkI<NLU zlWLxH*_U!0Og|QXIa;W;W<jEz?!kFRcMWuO8y>gs4E~b5K#6Db{im6KR18nw+B7Y1 zhy1)L^3U{Qrk`qi+#1LF+-ZySp*e>S&9Mx7=C|2jewGclY{#xWI=>RXeaV`!+*NDu zpQRg@B(7u0%FYgqZTwQ5{mlFM`T5sR{_Z&Uu)gr{t*2?}U*z;&r$l;BdG%ty=9yn# zL?&(BTKGn~VD%BR7Rwy>c`rQTHVdtpxp{-y>p2Py$x7@6N^1m~brWaIUMg?y@~Goy zVx0KQgP)!m95;-K&i>Q-WB1k)=bz6E^j`(sy{Qdzqt0ZD&N}lmn>Y0J?n<oVtr2Xy z`EJFki%UP$$%sXMYLY%Up>3zkHM`PU&gS>6KjQ*wB=Ri0K02gu8UHWaZ_%%~O8S&p zd*pmOmpi)Ke_gO$ai070j*R|Whs%z<ELwhFxo(E`vCRh_D{OM!RpRO!p}1`FD}ysr z>t?VYHpq5foHygSYt><c@Z?*yu|LDM?h!iZIk)h9x`&$8<O7{f>zj%dZ;2+>F}n!o z&FI}%yxa7QpIBtM0@w93dirOquEvVg%2!{`Iep|v=G%|keeEu%l<X0HW)<7XzdLbm zNphrB+m6M`AFevhSj(F@??8{+meMy$o8CE2oAR)0_MUGWWYb^G3b~f#d)P+tY;gCd zcy8@FhS#d5JzGIl>AIG}Clkff-WIj5d$e@<)tjrX-8PVS>+Ok<sIoIv&))Th<NUnD zWp_oMP3es+JS=nY(3*<|@dsKTuXy*{zPkM1RhMaPj6YT{(b_jv!dXbI(cuQ`O;_s^ zYTXaIRxD`hxaGCGcg5nj*KBX~_Fc9u-t~9!^VL(o_S`CPv3dWQxh>@Bz4dE;U)w8c zyWEWPGq=e4^sl<=XTBHaz2KU&bEU-jR{`sr?}k5Xtz5N#|Nm_!Qf12=)1O)x{E1Ic zh;=$#>&(7izCmXi`ym5$<sG%g-JE+Tn7rR=ddB@r@c9La-+pi85s6xCW%_O5mkRzx zYgy+$-plZ)hB;{Fg4X`_$o$XB&le_^dCzm$V(?gB|JwGgLeH{pY%hI1QC%Wt*5RL_ z?&l3IUl&fRG_iTx_A`X5Oy+d5$I&NCzrR1XHT&=!yNm;M^GXiSnX|d^o2Tc$HTB;j z-)+BC9k!2Q^HZLCr<r;_S*%++Vb#Tzd12QXzN>H?nAE7AIAiHLFZ<%)<r%$aGSe^B zaW9#dJ)^lU&$V=FtnQ|OBO7cke%};Z$DsZ7tHX^$zYO*l9IoLuj&nc%!EqOF!j+%# zDtRYOZxx(Au`G9O%groiugw-hmsd07#c-`on(<Qm>I)sS%VC%PZ|p3IjB@{G!DqRi zzdGJ=seZ-pW!LN0&n~IkIwybg_od>0J#^OHOn&>%_FuX0Ou2m4JlSvF9KTM+e6nAr z>T&alSIXLBTXk#hJd}$JEsDIXzQt7Xi=52Y#JXPJ-SgME*e5IeZ#}8KW9~nZhfj9$ zZriN8=<b3v&Cin6^ViD!zQf1mJbzz)cIx?UvNy`Mxw>G2FP^hreXj1vIQ{9Xul1a# zHL;VzO%|>7zV@`-?CjT48%~$oi`Uh;?>=7~r*>=IPRsp^@4kO1sqo9}(Gde-!!s^m zlE+x^@EHWx`cidO;zae97t$P`Z;J%%IuPu%<@Vt_jn_U+Jfh&wc`=W__~U|q9j2eA z2)zAd5dGt0*_JQX=Q%Fs@qd<hGj020jSo`<-u^Q1k5t+z;?H?ekN<OE&#UuUS3b@W zc>B)4yDYAL&$i1p>Mpx&&RngCi0}Puqw2ET_RLFjhGRds6fTODPurWjPv$YF;xDm7 zJ}x}Qf`(^Yc#IGG95FBkF$8OS3m-ks?AUgi&wgGTf1mO#J?lRYEbJ~#&6xe{>D;;{ z+Vb1{zVzDU%<Ui!9K5{D1hy7{C><}NzsBZYpZ>1sK~mjk-u*FunzqK|cYb_xIsBB% z{Lk+Fji=6<U3W@#Ut5|l?{d5?c6s}`D*an?&mZ`gaozdq>R%d1PyhRW&;Eh^?EH%E zS^Ep_ByOF*yyKUzUaqr`MXhM!w&b`4X1v9wv*f?IZY;lh``V3TvESLNw>~}}zCO<O zPsa5X9KSmDRLyfJdE(tx`M)jsmr6Nb{--qVQx+3mWOHn`K54c)@!#HqdjAx-kFJ~{ zv--zH?pur#4R4&x`+Rmot;f5$o4x&A=gnw$$(r?cn%~{$wVUr&`%n9_X~K?Itv?%Y ze~EGJHBqa2FLGunTXlea!rk+?Ht+8gIWsHmiLk>Wvp33nd(xHKr!QW4N8TuB+UelW zdwpgdc0U`Fy5+~UPlw)=zZYM1eL-6FzpdhFcMbFI@OEF)t-m(IJLqYQVVAB_divWV znYDLsW}EN-xO%Ib_M4l2+i&D;zL2NVredSB{ltvzsrSx3)8>6#7j^5*rwxl1ycAnd z;jo6;^>JifY;@i7#AxAVVe!fDCj026KKb(Pfrp-Gu0DU4`mLZDZ@c0qp6<w)5uNyq z$7Y(0U%bOBKZz}#3g66QE!=lmC*0rgG49=>V5@|Ah6Ud94(&@?{L7JLWm}d0nYq5c zzSC+N=FU7A-N~G$|Hd%)x(%mH`8@+Ad8vlB_lNAB2n7Yj9SJc$bF4mVGw+H^FE{Hi z`~7O_vfI4H7it4C%nhbCiKpEa?40cwxNGT?Ji~`;7#D3izAZof<K8!pU#eK<#%=Y# zAme{<ZqC;qJ;e^W6%lz84fDOtxDH=i`}@nH>k?riCbs#H@3`9Txa7U$)U_?5B~sf$ zSMNVzxaE{V+`pcjApVMdjLn|wEBf4SCC%V|G0E~u#*F*6yHxl~e(ub8+{SlDA>(pw z#|wsDJ*&?ZabhN=elvV`2kyF{7N~RL>6K5fQnxLRPZ9b2Vrz-UeD5s&#g{w$vcjf) z?bW_ED|MT2nqfeAcjd*9k~hvvS*5Qz+gwQe*Dg|U7UDfV*3OxUGyFXxrfg2V6eIdf z_{a1kJkG!Ot3BPy9Jkfd=S0NY4snOYK6S2|IS2JG-Mp0j^@h~F_aATZZw?Q<ux0m| zd2X63-(Opksr|wvN1LaZtNYWsZ+^OQ9We((*H<jkZQIHBT>b68+H*#~uQYzteB$E1 zXR@n)#=1P&1?n!R?*2(F^gJBH7ZMt}P^tM%TlKS>GiT1^OMlA!C%Q!A^=n2R`vY@4 z+-7&YUb0K^jOT+Fj5?if4#%*W*BzAR`LfvN*_%?C$9^*oziW2deC}+P4aeq}A}>U@ zZc_D#VQLNyH9NJebmoP7Z^LhMx;(P~Iq~Y_YuX++n&OviPIXJ+a!+OYzSrQl=vvOt zEJ2~6obT5wWN5zu`QmeN>@<;gCm2&!uUb^`M$CW9RfE$OeGexHKf7%3t9@?c4?YWF zma{phMb}v|e_60uq^wE$pdfFtWY6ALw^YC6aeQXp|Isnw$jK|p>0jpmx%%^w&9cSz z?|gq}AFheKJ+Ij8PwekL3I4a9A<LGP{BQBN$6b7*HXwu5=-i+8?UCg?U7xn?DLXu8 z%9d}Djl$=q8A)befBJnw{M*Rbt&2}{FOVyg;)wpx{iVN#%T_z_n>N?1vcrG)Rpy+( z8+|v->V-+pYO%$O>d&rCDxFgDvbID&ZLaLM-MK=!mS^@eUR)xaCjHbZ^63$+MJpzM zT&23feo1Mm#aotRv1!s}K5PEQ-m8AR-b60<^`V%x<&T>EW*na@C?oH9=#tBs_C&L= zR?Epp&+k&Y;Q2vn-l@`%Gp7<*->u^WJAePZ=}{9y6ZyJdUEg`(?xYKAUe#{e@^bI4 zlDFIItn5}!@9qfC-RHgLbw~Aa@!pqn%T#h6K2GGDb<Lpvq=erq$2ankm%}b(-njPv z#_rGS)i#;%9Eew4`5`XJ!)b!8j-!BMSnGy-rmlt#iw9oZi+Q`aZL@Zl_}@PLWsc?D z|6gjRdZ{KZaKGipe`3#h{<c-oKi}yF<=<U3sW_-9deQgO&)>|n4hm~N9$jUw(0kUG z$5>SD%tnT1M>se0dl$PIZ)%#V81hX<;MsMLJN>V<)X&`BVOGR_PGp)!-)qO448{Vb zhxb@mSo{c>r4u~sO5{!niQnP|BCnl`ZeMzARh)DDW1@!fZ+^X3toZ@!qBG{VdY)wZ z;Gpk*agX_#xbOEI$`jJoE83sAw;--U*ZaeHH<QB4AHwfn=<bN+dA}y{r0iRXxVJou z%|2gPRe$!<-4k!G9Y6GD>NLhLw*0?8d~l3;fADj5<=nLFrC-873Q48q+CF#JN;L>f zEts6R>`+VOyk6bqhig=sf_wNUcd$Io{{DaN>+fxr*K!Z;;aYxJChoHLm2Z`t`!8Q- zygjoqa7r~p+7qq1NxL_k>MGQ4>QGx(61tvo+Y#$+<vMS6)mqe>6zzAcfAfajDf~;G z^ok4G#l8V%R{mcfU3qP195B&*+C0w<Q@J;rYs@t8IFmJFvEqWOmyTTh*|_<!P|T%s z*YbBQu3cSeestUJ`dqsi!5ed0|0dS0DXxf*o3VN6do=?!Uel=8jc-;yEuFPi^*-~& z@LlTCw-R1Prg&tt)QPms<XU&qazk>N#pm;kNrAR*Z@piX*6n*>x41X9e0%TPzs?&s zY|gOu-|U?<`<+&G@p-Xt|9*Y$|M!~V^4)6Y(q9?3w!5YUJZw92_^I#uq%S?USDI%% ze|n}hLT}U3Z}Yh1r|afghgL1xw0_$4%)IIPDRt|Yn%}*?DM+rYq-9dajrRLi=K6p8 zL;v^f=Ph1u!?k$A){cKMrPlk?ts+;<vYD0mZ||xX7jBz{<%+Di?{p2zNXH`K_ddz4 zf`We&MSIixEKZB^CeFLq@oz_g^U;gTc5ZBxX9`R-F_FvsE;?s=Czq*txJ>4E*FP*B zer|Il(m=yPU@}oHX@(>!*M8^ssLRLCH^2DIU%ch0eAdI~j$eMZSH8IVBD8Jhi<CRY zkQNkLgG%<lf&RySw+=tI8J#%Bo&H_^@H(@D>uJaSd2R7B?jaiPe~uRZ@d{tWboR9S z->K{VY${zO{3-P{W&@Q15%oiJKi+t5^M@~<)!zA6y}*Hn&zF)HzB*9$doJq?^KXe+ zR~LT`sMYJ&sks#4o@M_u_I+XA|5Gz3de(g_d2}eJ>7|UE%(IK3KUS4Lj<E7sd&{|P zr{r?G%rz_iOew#~ezc5L|HsYCo!rLfUVD36o%!!G>qz|5yd*=7;HmY+v-FkLMe@4| z$ns7RkB;~HyvwuX`-zeV+7ov<bl&01IkMKf_ohKP>#F?O6|PfLbB`DGek;4P=AX{4 zMcX#zyZb9Fv_2<&se6)E|Bu_JU97JA-k<ESx<>egNF<j|_uW|=;$E44if{9M`n&C; zfWWHheRY>Vt*u_fIi>%{-}mlES6>kQQFi9bE?wcUCr3+`M(R(#>#)A;i%N=Uep>t9 z+=KPLDT!BGp7E`ldNVfk@f;_i^rQ1un5>rlRUF%GdHW&nyca)OZialzj(Kp|V7~K$ zJBNxjkKZYEk+VFz{$ps`VFeR!{(p%DmJPS9Cf6$(EfwEjH^bHb(c-un{>+8;I>o#i zCrzg*7f8;yD0=Itu)NaAl0TQbQ#tSWC0Xo|bX4No;%U9hWs=9s-M{v^sboo)@IU&i z@2OC^k>lTQyOIiJt84@9IM%nff9$$5&11h_M)vlamC>&q&M_6=Osto7s0rxmsgx+c zCKGV_ZtVAx=P@EbQpI(T3dT(M%n`G7!$ZD#>;kgO4Z;@(Ukg~C`0wFO-^xYP56otJ zE#>MiR8?(lWNK=<(*3*W#7N$9gN9>!4C<9_6?L8*x|9E1qW7`*tp}!hhwaxZ{#c+r z?^%4>a`D$6qn?Ppn{#~EiS?C<ac=Pus{+mYT%)b@c1^$eywLyDt9B#CI}_X%9A8}^ z_0RYH5#gz)t&Zq@Nj(&!J@>`=xy_fR-`xBouxVOpf^K>F=fg35nKReOU%wwQ`C8WL zH{2Huxr&*mJv*DwSv<3L>DNn2r{*3>xRAT=Nz1JlI;Dmk4SMY+szwd(KOM5s3u>Jh zGb6u4Cn;pv#<{sQO{Nor&MrD%SzR}ybff6USyJ}%_$_``%@Kc=>5`S@v@4hC+R~`o zyq`CnYkwO%^Mu=+)d?XLqJFQ>%*yQSzT>{$<`Tp1#6B;cYxOObEe~f&O_sZ~FY4X9 zXYD(gKZx$1YP4Y4GPT|MF2^;_NZru<VwE_r+0^1$%TM+Pt8V`h$v0{9-F`vR#bdg5 zpjJ>%`qvo(ckgi)dzJiJbFOvgZO&qUwKI8-%g-r)Uch#!ebe5=Ye$14Y?sdRcT~UM zTQZ|`p1j*DRwuv1)28^TG)$k#o-p~X;Ev~f%NLx`O54Nra^Kx)6QrO0%$c!O`EiS- z@tcwv+J>+9=vM{kmY3f(X#eW6;4Js+s<78Rhl<R0Ous3<=&{JN`Hb~9I5%HByxIA1 zj{1ZK>))n_Up%qOOW5sRzEe%_&EdO3cZ4Lp+jsgU9j^EzomeJ)TyRtA(YHA>Zhtzo z=jj|ysoAsZik@8!%YAiCbg@{_<Q;3&Cq4VPY-Z}uqlc6)t_;0*?#$~iZ%@Za-Jcr7 z?YREX@xyauzj1AIx%EXa&T97C=B%fOWG>wn*c&{(%WvcR#SuEfBD;4^PF$8O@hpO& z_)*Kv_NA7K6XOn^640u?^mcv1soTBxe(!QG*FUrO^oN_832#&{B_0bBnt16x$L8A- zplaXCUa*+y0)w%@*)~gXRa`9dW9!*UhA{5W0rzKKntbdqd!bMEq;sLx!O1f6ZDodg zHb494KlAg9*Rf2iZ*s}=7nj{o{jmOpz~8Ip|IXf<Yj3)7X(GcvtCxK5J$XDiycJq% zLtT`Ww5&PwG<GO7?e6Kb>bkx<Cg%07D?O#z|6cvHx-0u&nsL=sEum+%bqrQ_|9*Y> zYESJs&XrkrA7yVfJG`giLyi-_ecM;{!&cwxT7FJU-H^U4h-dSf-dL@cpFT`#UHp?h zTv87I-@p0uHKsMzbq+37xeM01K3Tl)_jT^Xb?lc~`Im6TOKG<K+*p=$bZV>>5-j z6c_>*ERsmGl)PN|A${UvvokGiH!phd>%HXItI9oNx6=92irMePE0Z2prZ}p9*e?Ee z=10qf9eX1lo=^O@roQFLTt2lX1M%5&&pY|=(c~%VuitttZN}tZPW__Ou7AEYYlZU1 z>|1k~i+PNvZYwK4F|+8=KmPM6ueaq!?a6PpWG=Mt_xoM1y*+j5=3S+(S-;Isty=x( z(#M&HIBN1P#!viipX_z+XDAnYnVGWm%-eAfXa7m-KEfS3N%nqV_SeSmyOR(6j?2zE z@G!dd+r0lb?f-r~m#sF#ufF~4xzEqvrsyvEbR~NJ|ASNGr><H5=UwjHmHT9^d*`lk z#Zu3G2`|}lEmYv5|LW|wH=gQT-+H9dUHMn#$7#Fn`W9z%>oZ+Emyvn*>f!4f<JE4h z+*esH-x6|A+hL12p23;jMPIJ;hQ<jjvK4sN&zbN+NuM)tXZue6y;mP^OpFs+RK#EW zZo|KhEuSX|Os$+DyJv^I+@C|*P9g6S=e4~2XYtl9drrqGn=|4v6K}ETa|X_AuM`pf zwOLSikDAL<*)-4fFZ#>Xj%GWBJWI?wa`~E@&WA|?Q>$kLzi0G$Ug_C!%Jz&^?mnr9 ztctg|Arn++EfFt6zZx6fi+(qs9>4tIV4;h3>U4RT<L<kJ-UjU7bGyIf>EUag-%cF9 z)=AVr3z3SxwY+}3vMBH0+IJl57600AD7^D`>h^&DSHGT<<~CSA=l#m7Jx#0c-+K4r z1pm?Ow3JWoWv3UG9-rk9aw*YFP`^E%_wx%OC*JdyBYw<_>gCuQ)P4WfI_Z=0nXg3u zd{W+RD{*6|n!wbO85fuD-^G>q?^0S({bcE#+=4St?a}y>;E{bznN!96?X4AG%U|xv zEo%Q<bn0K|l9TJEi2jbdH7oDy;XA=U?#{mWX8)NvmMP{k8<LcNb?v{d`1|h+%S*gZ zxTLGPFI`F9#ox8$UaHXhsyFrex9U4WZftisr$6&Xq^yij%9%@!l_`og@;W=D-l*rM z{pk4jG(2LXv~lyjSzGlsmlPgOndSQJ_SIVxcqgwFIhl56-LB|8Y8JMZuT$q%_;SvA zbv<jt>|GD;J?l!33Z1<n>$huLmheO7tB#L5z0}XB75hBVa*}!$cVnyAJWt(oaW0P< zcmFc~^D1BBB4f#$clNw~w<9jj`_p$qq)L^gSh45J3h`&#Wo2b6CASv7(8%-VO*qSZ zR_M)A{TUY)iZ=h$e)sKOlKh)uv3H)f7jhe3i(k|&68gUM(2U=iw&#jVT!ken@|A0q zA_~g;nZ6m$@Z{8L`O+Fye|ABmXdmO-s`**hnQvw;aL$k2C6@ScRzUYbUX@98!F!gm zZQar$`stX?znOiBk9jYBd?gch%RuJ4)OmA(sX;TOFX&&tuq5%{mTemU57<ST?&v*r z=#|+VamkspX3e@{Fkf)y)dKgNEqR=utxq1mv-Xa`?w%92GMmpfs2%Y-^<F~fU1;-% zSJMpFZO@op_VRe0XM)?SZEcle^Hq}~XYC9&x@q%{cXM;AQ_Azlw?1_ywF=CuQWrg1 zIJ0r(HRZdX56wA!deb|}mYo+`yd`?PnP=@;_QRJq%XQ<MAMz|e(q|o5Rg+bBq36C! zcI@}_tt(m%-DzsIEM9a;Hf{dPnfn;t-u~4feD77J`ITGok1|-c=^ei#BX|6L^r1Be zR~_#VfA;0+>FK34I`R$Tc}`oVEq=-OZPmdwIozA|!kBO7h|Mh9;r!sjG=t*?bIwYs z@G~uZkzIdIMn^>H_VYXov5*UMCp*sQ_mUHLsrqn(`?IO6#pBc84CXs2&F+19*4u1$ z)Ed#Nf~US2tY^;U<=>KGHJkVG%z8Z+RgpB_HzIvI679HOADQuc-9MH&pTq2rYENAC zE%l4Lz~!ertM05>W18K*;`Z)DxuW7r8%oc;S$A;OY=O0tn1T+*nOf|zJ+o^@%U1up zK1yr#d3PnwyKcFr&9XVN+&Adl{cE>9_y1>{u|J?=ja)L@@@B4E(_Sf@nHo1EpDpnk zbFauDnd@vn6aTRqmhW$m3*NI#EZg<(!cLL%S6)hAS@`{hozBkal3&lALc9|Hi3{}Y zPBfEhYnDn=Z<pEgGC{rP+n&d4ed5oe-hO_hcxT0tO)qpV@fJ^B(q?KLeb}aN&c<7J z6H8o@CAHp#@_c@hHsh#~V4>CTuP>Y@ne2$;ef;9ek9}{h7jFMjZdLmC(H*Cd!)tbO zi*ZeyTb3-Q8}_4YMsk((iVufuG$&iEHD7hEu>Qz<Q_~fpJjDge&YdY;dG66i=kLd^ z-nx0tAeghwGWGGA9f^F24?z<>2d7Rx@r3*J^~5ZGiMbNhiFQoIpG}<32^f46YBfk+ z$lIx<f94yf>4aBq&!?1?njYAgJ#F95=DmLyWR5@BeAdAJ(4P}Vd8h1d<mb#a_Lf-4 znlZy)@lJu{aTCwi{%sdm`0~VS>Q%@W_x@#^qXTlNxWGK$9f@VL7i^#YyZo}%<ZpHi zpJz#3(Q31_2zI~zt<BIR#UL<$!wHZ>Bd;CP6FpR;#wdKW-BU$r)5HJwZ&qf%eDJC7 zN8+@&v(eGrC)^b_#&HzePOy8~@3B|Ecg@S5YLgy+(;M<lH>Yd8d&>U6jW2n2Vqg5_ z!q1JCFE5<v;mw}G|58xh<jf@zwq3`cezn;W+xKL%)n7g_u8DhRIxNcEd}#imJ5TRv z$h|&c%TYX8CE1~0^xNzUldeXU|8+c6e`ELO?P}|6c^=&NOnX$_A>pLJ;*@efWpeDb z4XZ>11z8Ipimkf3EBf}WRpHUqZ{J@2clo=uu_uS=_g7bKTr2LK=jVKKW{&0NJ<sQG z+MG|BHEXT5__I6n^0Kpa-nt&!!uPw^;LMlG?4n?yQZHlueKYs|cMN@BfBH2~1$Rcn zoMrp32$h=bU+Q;d@4eG=ZL?D?s{c8fSUnJL%R9NNEiz?+esIvWH+xO_f1I9fRk?ph zW%s)`YajkC%X@0RQ2%r9%qON_=k7A9UKRZ5%>Kh6Q$Bkwbk;DJ68j+7JYD`7|7Poo zI;+0TF0xl^|8HHhu<G~!weLc|w)a;(UzOgqO<Mk92)0p!MHzW3tejltuUWOQa{lI+ z(D+kwy)Q0Ly%zp9f0p#CN}-Of#rqQD&Et<2&Rh|ZTzqw3-an4>3>P1E2!ke1gatt) zcmM#zfN<ZRzP9-Kk10Wm4huY+uYBMF>pY=F&2rE5N<x+#er%)a!ftzJ<>X&NS&uXo ztsW$neRzBJ!G(MqWstbBL9YGzo&7@Ui<sq}rMj!gJp`+ncVx@HYm4SRZ+Vf>9+@=z z*QY}+m3|$36*IC6_b(LFhM0MAI>WPH6<!^DRWrVB`&rbX-txi#>w=PBGLMfOzbqhn z+72?;qcyFzu0TfqrB}$3!pi;fFHg0v6_%aUzE&7>^$qzVvRvVpFaEvrr*&&`EBC2u zZ2$L#m9Vd>P`&W{>@m&nYtK8C9xQsU&TVjh4*$y4eDhAfkIpMldUE_qtkt%SANEhT z>%Pw|{^h}u<8MB?ygk0=tBmaXx*Z0FhqXKG78}f-F#m8<;=CC51<wk3wB>`sb(zjz zS^8b~dYjSvT83+ztsfuwb6+Y=#V$>Ec|gwf4;|qGwQh-S)AwzyO8mF>;*x!nvR6Kx za7Jz4SGK?-Ca)KAoKkyR(fM`jmYkVaPTI}fKEFd|d;iI0du2C2lQK%o`+m<_Xx885 zotyWT`7RfocfsE%`|B<J<v#V&6SBS^mbrFaPvY#Uxicc`wXc4Qe!20nQgCNLZ|wE7 zN1=5yj73kJY0EWTW_lvr=k<Q$#Cuz^g`JIr`dO^Cx1^lrxx4lD)7HDno08UdU7ojT z-Yc1(pLTfKtoLtkESOuuKl|GBy7JWH>P-iqPoA{)VE&SLqg+?Hv+8HUT5Y!dE_E(H z9Cp$#@A>-(j(Osi+w%@}x4u3lV=}d5_k@ty7MD3U-&<=hpKqFb_vSHSQROpghHJ#F zn53TZ-6-VdSM58>-EpU=d;jstXPOk}3bpV5GyR~X^lYn1|D999md|6H@l+vca@~yi z=H}+#U#j-pbIkEnO_<C6N@e%7x&)@Zv)P_sFFUNmY4Sqtt?>aT^SBe?4VT+zOkp@J zc5JUfy7mm81QX8aG9{0r6F7?*ZoTUgF_Sioo2C8IWxa>8+m=@g<png0dHnhw{gm%@ zc>F++C7<QO+`H?|nlD2<DkOO=e#@67HEX?J@5^%EGUN8o>1Iibi;m2gZTNjMQ|V9k zv+qsrdO8NkE#9iq#Q65m8-1Oe-@VUMJ&tk~^H!xWA2&U--)4tOd0|Ky&$b8kudj3z zS53FHwzgh;{b}UH%Tn(q^tSCW*gs+4hTT)7)28=rzAdrsY(v_0t;yjMr`CpcJ~%fo zbDQ`x;TLhP1)l5QU-$L!T72+^eQA%r<MIrq({~NhwIixNxT*AP(u*m)e!A`FzUuiO z_MQ-pd3(vv<=+|Z&suF>OWBTJjwoAFePMoD`NLfyS9(*KcIfgt#BXc!QQkYr$a1mu zt<}39wC@ai{_XH?+nMHP?Rw3HHmzwY{mHItf2MHn${8!YUl-<odMCW+n6Rk&nXeI% zMvIT%$^3Tn+s@P@ce7;|*L|ELowZm{mgi-|3s%o3B5_Y!Bh~j_o$=wY%<hVhk9hyS zG+nUyi`RBN_ser*R|m1LEkC@c@9pjz0-D!nwDu;)E%+5(vp8{|`mCkdc{4VPdi;EQ zJzDJ2@;f4-&kn6=ecPcr+0o{U*S?e7pKX**rbO&sA+ly?)N%gLtNPmK?wxtU?M|e@ zs!gUTQZJ_+amiZ{pO@M2*I>G*$hG)GGRG>6GWWz*E!X?M;A#6#X^ts>G(;VYW?osw zVsyM|1xMnw1Lqdq=l!g-=Ax!~!+wVNA4k7`^a;LJ!fLCiU&%S8``8;t*=4TN%MaTq zS$(+r<i7E4)rtqpe6u^5F20GHY879rex|SWQ~0~`SBiVDd0%L3-IgNb{cG_z<>0y* zn?<KcZ}}(Z@=K$n!*)9N=6hQ5M}GxgeKa+vI`P`gLl$mwif_d3O#Adw<b%m))*C+Q zEOq=(@~*xO5QBK8<*$MM(?e^djq+v~Tfc9$Y`pxgDz)|1C;nOT&w^}4qH6NIe;=D? z6!DJf`d_QgE|F*39X4Fy-F%UIb@bskOC~hg=WRXk;>2vTf<Lc~)<tUaKDcFAKF|7T z>(3o7$4eE?@)t{KCYxr?XjYuNn5`)L=^>lV(rM4tf_6FGm{_@2^PT%43w^<yskVvd z!alfc7w}d5yV|-c?mYkJ-0k+68JVBFZf$+Cq|P8SF@-ICi*=T#x$c@%@?v?Nd}}{F zJ~WB%e&d-dKW0sd=19%1sGm`6y}#}DyPSH*CCiU$hFs5^ak$EOarvvDtIFqir*xz` zJ=*fc;7rIB1NU5=F6n0sVPd^)mAu)>9$zY--amN6y7!*M@9U}dXTBP9SSTO35?qmZ z%u8A6Y2A#sfu;hv&ZpP(otk>!L)+5prDbb<{QMGMER;`kbe#8-fq_}g)5S5wc$IKS zap)rFj6KPjRi=E=Mr`GF6Xc)eu>R$^mcy9&HuhPaL){E_o@J|f^_Di;`|nWQYGA&# zQ27@7oj*oxmA*mlz1AkjK2*IiJoY~KM}2<r{%5~5TffHezUME_d)}|OV_9v$hG&cP z0#~fNYp`CS!fMg%`G?BCANzXmH{Ut`7)JLrt-Kje4_;X%{%o`0452;q4%Xk=egFEh zMvK13*GsS0y*`s;rFdnfO7_gY&Y-OMKCks}OcuQ(Jd>ZLp64jL5|4~h*MjOd@^8&w znr;n!zUAhoYu{fxM$h{4&gs+5r<<Cs!;RkG{Xh5Z@g|RlGk0(4jhrnW$=UmJ(e<}= zLeF-c2>PU<IoIS<nERc(i)yYqzMT_t?$^upF@E!6CRu;nJ=-McTK`try|xu|zuemX z_;{Ro%#8adx1axHq<dgpcS)FvQTOMdogb2CoITdm*UaCub7l0qmtw0YzI*dRK_NzL zrHy%-e}4Y-b<&@gDO4}bUHkK;vboVcp`BMfye0TQH`dKCp8w@ug21yc528<he7x_p z>qPDH`p9brXF~rz%37FVXLIG+oQ=n-*PM-fFPJ7X-K}Qxi|F%vzufJ2`^Ncu^TC|k z#h#mbHwM+L{`qx{{P9I;?sZRZ%vbNYb@%Y>XIwA%*8OcW-*^1ytlO7w`y}0yJ`<O@ zGu`LvywzHn`()j=U6Iy(*nj8Xarc=bcWj&@cd!5T{%qO*2Y<IcZ91G;6mfpiw?g&Y z&-%~Wc&*Q$OpO#PxODB++WUFkuk=4<hHTwe@uc=`bN0-uvr{8MhsYrCgZhg-O-2o! ztbxYQb=Vgkk2gsuij#OU`<ccQ6^5G}i(^*vznI>*=GU{D=>}TGYz;R%gcI2~j2RB` z2&BO<LyM%s84&&-^ZTe*`)5X<`WdTNA8idi$8PX9@!pO1d4g#PX2-xv7&wd_W^h6= z<D7p6`No+nGkOh}70#ea38Xa`$V*RK&bVpP=T9a&GVCd;&s!fyToOI8BK};pXSi52 lds@oIQiM+!7#I$S{N&?$Qhs<@z%w?Ggr}>Y%Q~loCIBBm&w>B| diff --git a/doc/user/admin_area/settings/import_export_rate_limits.md b/doc/user/admin_area/settings/import_export_rate_limits.md index 12235bdb5ef4..7d5a928eedf8 100644 --- a/doc/user/admin_area/settings/import_export_rate_limits.md +++ b/doc/user/admin_area/settings/import_export_rate_limits.md @@ -5,28 +5,26 @@ group: Import info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments --- -# Project/group import/export rate limits **(FREE SELF)** +# Rate limits for imports and exports of project and groups **(FREE SELF)** > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/35728) in GitLab 13.2. -The following table includes configurable rate limits. The following table includes limits on a -per minute per user basis: +You can configure the rate limits for imports and exports of projects and groups: -| Limit | Default (per minute per user) | -|--------------------------|-------------------------------| -| Project Import | 6 | -| Project Export | 6 | -| Project Export Download | 1 | -| Group Import | 6 | -| Group Export | 6 | -| Group Export Download | 1 | +To change a rate limit: -All rate limits are: +1. On the top bar, select **Menu > Admin**. +1. On the left sidebar, select **Settings > Network**, then expand **Import and export rate limits**. +1. Change the value of any rate limit. The rate limits are per minute per user, not per IP address. + Set to `0` to disable a rate limit. -- Configurable through the top bar at **Menu > Admin > Settings > Network > Import/Export Rate Limits** -- Applied per minute per user -- Not applied per IP address -- Active by default. To disable, set the option to `0` -- Logged to `auth.log` file if exceed rate limit +| Limit | Default | +|-------------------------|---------| +| Project Import | 6 | +| Project Export | 6 | +| Project Export Download | 1 | +| Group Import | 6 | +| Group Export | 6 | +| Group Export Download | 1 | - +When a user exceeds a rate limit, it is logged in `auth.log`. diff --git a/locale/gitlab.pot b/locale/gitlab.pot index e13803067b03..44779dc0e440 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -8514,9 +8514,6 @@ msgstr "" msgid "Configure limit for notes created per minute by web and API requests." msgstr "" -msgid "Configure limits for Project/Group Import/Export." -msgstr "" - msgid "Configure limits for web and API requests." msgstr "" @@ -17001,6 +16998,9 @@ msgstr "" msgid "Import an exported GitLab project" msgstr "" +msgid "Import and export rate limits" +msgstr "" + msgid "Import failed due to a GitHub error: %{original}" msgstr "" @@ -17079,9 +17079,6 @@ msgstr "" msgid "Import timed out. Import took longer than %{import_jobs_expiration} seconds" msgstr "" -msgid "Import/Export Rate Limits" -msgstr "" - msgid "ImportButtons|Connect repositories from" msgstr "" @@ -20654,24 +20651,6 @@ msgstr "" msgid "Max 20 characters" msgstr "" -msgid "Max Group Export Download requests per minute per user" -msgstr "" - -msgid "Max Group Export requests per minute per user" -msgstr "" - -msgid "Max Group Import requests per minute per user" -msgstr "" - -msgid "Max Project Export Download requests per minute per user" -msgstr "" - -msgid "Max Project Export requests per minute per user" -msgstr "" - -msgid "Max Project Import requests per minute per user" -msgstr "" - msgid "Max authenticated API requests per period per user" msgstr "" @@ -20777,6 +20756,15 @@ msgstr "" msgid "Maximum files in a diff" msgstr "" +msgid "Maximum group export download requests per minute" +msgstr "" + +msgid "Maximum group export requests per minute" +msgstr "" + +msgid "Maximum group import requests per minute" +msgstr "" + msgid "Maximum import size" msgstr "" @@ -20822,6 +20810,15 @@ msgstr "" msgid "Maximum page size" msgstr "" +msgid "Maximum project export download requests per minute" +msgstr "" + +msgid "Maximum project export requests per minute" +msgstr "" + +msgid "Maximum project import requests per minute" +msgstr "" + msgid "Maximum push size" msgstr "" @@ -30626,6 +30623,9 @@ msgstr "" msgid "Set an instance-wide domain that will be available to all clusters when installing Knative." msgstr "" +msgid "Set any rate limit to %{code_open}0%{code_close} to disable the limit." +msgstr "" + msgid "Set default and restrict visibility levels. Configure import sources and git access protocol." msgstr "" @@ -30653,6 +30653,9 @@ msgstr "" msgid "Set parent epic to an epic" msgstr "" +msgid "Set per-user rate limits for imports and exports of projects and groups." +msgstr "" + msgid "Set projects and maximum size limits, session duration, user options, and check feature availability for namespace plan." msgstr "" -- GitLab