From 372e78121fcdc13921cbb2acea9b7af3761a90af Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Tue, 18 Aug 2026 17:16:58 +0000 Subject: [PATCH 01/11] GraphQL schema update (#62826) Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- src/graphql/data/fpt/changelog.json | 14 ++++++++++++++ src/graphql/data/fpt/schema-issues.json | 10 ++++++++++ src/graphql/data/fpt/schema-pulls.json | 10 ++++++++++ src/graphql/data/fpt/schema.docs.graphql | 10 ++++++++++ src/graphql/data/ghec/schema-issues.json | 10 ++++++++++ src/graphql/data/ghec/schema-pulls.json | 10 ++++++++++ src/graphql/data/ghec/schema.docs.graphql | 10 ++++++++++ 7 files changed, 74 insertions(+) diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index c84b778cce8d..a012e77740cf 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,18 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [ + "

Argument excludeUserLinked: Boolean (with default value) added to field Issue.closedByPullRequestsReferences

", + "

Argument excludeUserLinked: Boolean (with default value) added to field PullRequest.closingIssuesReferences

" + ] + } + ], + "previewChanges": [], + "upcomingChanges": [], + "date": "2026-08-18" + }, { "schemaChanges": [ { diff --git a/src/graphql/data/fpt/schema-issues.json b/src/graphql/data/fpt/schema-issues.json index b87484eb9db7..7dfefa34f677 100644 --- a/src/graphql/data/fpt/schema-issues.json +++ b/src/graphql/data/fpt/schema-issues.json @@ -2803,6 +2803,16 @@ "href": "/graphql/reference/other#scalar-string" } }, + { + "name": "excludeUserLinked", + "defaultValue": false, + "description": "

Exclude manually linked PRs.

", + "type": { + "name": "Boolean", + "id": "boolean", + "href": "/graphql/reference/other#scalar-boolean" + } + }, { "name": "first", "description": "

Returns the first n elements from the list.

", diff --git a/src/graphql/data/fpt/schema-pulls.json b/src/graphql/data/fpt/schema-pulls.json index 30bf004153a7..64fffeec3665 100644 --- a/src/graphql/data/fpt/schema-pulls.json +++ b/src/graphql/data/fpt/schema-pulls.json @@ -2938,6 +2938,16 @@ "href": "/graphql/reference/other#scalar-string" } }, + { + "name": "excludeUserLinked", + "defaultValue": false, + "description": "

Exclude manually linked Issues.

", + "type": { + "name": "Boolean", + "id": "boolean", + "href": "/graphql/reference/other#scalar-boolean" + } + }, { "name": "first", "description": "

Returns the first n elements from the list.

", diff --git a/src/graphql/data/fpt/schema.docs.graphql b/src/graphql/data/fpt/schema.docs.graphql index a984c46c8e0b..29c6962045b0 100644 --- a/src/graphql/data/fpt/schema.docs.graphql +++ b/src/graphql/data/fpt/schema.docs.graphql @@ -20155,6 +20155,11 @@ type Issue implements Assignable & """ before: String + """ + Exclude manually linked PRs + """ + excludeUserLinked: Boolean = false + """ Returns the first _n_ elements from the list. """ @@ -44339,6 +44344,11 @@ type PullRequest implements Assignable & """ before: String + """ + Exclude manually linked Issues + """ + excludeUserLinked: Boolean = false + """ Returns the first _n_ elements from the list. """ diff --git a/src/graphql/data/ghec/schema-issues.json b/src/graphql/data/ghec/schema-issues.json index b87484eb9db7..7dfefa34f677 100644 --- a/src/graphql/data/ghec/schema-issues.json +++ b/src/graphql/data/ghec/schema-issues.json @@ -2803,6 +2803,16 @@ "href": "/graphql/reference/other#scalar-string" } }, + { + "name": "excludeUserLinked", + "defaultValue": false, + "description": "

Exclude manually linked PRs.

", + "type": { + "name": "Boolean", + "id": "boolean", + "href": "/graphql/reference/other#scalar-boolean" + } + }, { "name": "first", "description": "

Returns the first n elements from the list.

", diff --git a/src/graphql/data/ghec/schema-pulls.json b/src/graphql/data/ghec/schema-pulls.json index 30bf004153a7..64fffeec3665 100644 --- a/src/graphql/data/ghec/schema-pulls.json +++ b/src/graphql/data/ghec/schema-pulls.json @@ -2938,6 +2938,16 @@ "href": "/graphql/reference/other#scalar-string" } }, + { + "name": "excludeUserLinked", + "defaultValue": false, + "description": "

Exclude manually linked Issues.

", + "type": { + "name": "Boolean", + "id": "boolean", + "href": "/graphql/reference/other#scalar-boolean" + } + }, { "name": "first", "description": "

Returns the first n elements from the list.

", diff --git a/src/graphql/data/ghec/schema.docs.graphql b/src/graphql/data/ghec/schema.docs.graphql index a984c46c8e0b..29c6962045b0 100644 --- a/src/graphql/data/ghec/schema.docs.graphql +++ b/src/graphql/data/ghec/schema.docs.graphql @@ -20155,6 +20155,11 @@ type Issue implements Assignable & """ before: String + """ + Exclude manually linked PRs + """ + excludeUserLinked: Boolean = false + """ Returns the first _n_ elements from the list. """ @@ -44339,6 +44344,11 @@ type PullRequest implements Assignable & """ before: String + """ + Exclude manually linked Issues + """ + excludeUserLinked: Boolean = false + """ Returns the first _n_ elements from the list. """ From 9c997462fdf3db97aeacf7d4bd7b92e4158b382e Mon Sep 17 00:00:00 2001 From: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> Date: Tue, 18 Aug 2026 17:17:10 +0000 Subject: [PATCH 02/11] Add Claude Opus 5 to EU data residency and US FedRAMP model lists (#62796) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2d94a59a-db04-4786-bf53-5bd68e4fdd0f --- .../admin/data-residency/github-copilot-with-data-residency.md | 1 + data/reusables/copilot/model-compliance/us-models.md | 1 + 2 files changed, 2 insertions(+) diff --git a/content/admin/data-residency/github-copilot-with-data-residency.md b/content/admin/data-residency/github-copilot-with-data-residency.md index 00c92259de1e..31c2e2a8b6d5 100644 --- a/content/admin/data-residency/github-copilot-with-data-residency.md +++ b/content/admin/data-residency/github-copilot-with-data-residency.md @@ -69,6 +69,7 @@ The models available for {% data variables.product.prodname_copilot_short %} var * {% data variables.copilot.copilot_claude_opus_46 %} * {% data variables.copilot.copilot_claude_opus_47 %} * {% data variables.copilot.copilot_claude_opus_48 %} +* {% data variables.copilot.copilot_claude_opus_5 %} * {% data variables.copilot.copilot_claude_sonnet_45 %} * {% data variables.copilot.copilot_claude_sonnet_46 %} * {% data variables.copilot.copilot_claude_sonnet_5 %} diff --git a/data/reusables/copilot/model-compliance/us-models.md b/data/reusables/copilot/model-compliance/us-models.md index 4d52eec22a12..95a3197640d7 100644 --- a/data/reusables/copilot/model-compliance/us-models.md +++ b/data/reusables/copilot/model-compliance/us-models.md @@ -12,4 +12,5 @@ * Claude Sonnet 5 * Claude Opus 4.6 * Claude Opus 4.8 +* Claude Opus 5 * MAI-Code-1-Flash From c07edcdce680e83d930f42424ee542024d1b9586 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Tue, 18 Aug 2026 17:18:00 +0000 Subject: [PATCH 03/11] Delete orphaned files (2026-08-17-16-29) (#62804) Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> --- .../advanced-code-scanning-setup-ghas.png | Bin 67330 -> 0 bytes .../code-quality/workflow-generation.md | 1 - .../inviting-users-to-your-enterprise.md | 6 ------ data/reusables/enterprise/about-ghec.md | 1 - data/reusables/enterprise/emus-trial-content.md | 6 ------ .../organizations/models-development.md | 1 - 6 files changed, 15 deletions(-) delete mode 100644 assets/images/help/security/advanced-code-scanning-setup-ghas.png delete mode 100644 data/reusables/code-quality/workflow-generation.md delete mode 100644 data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md delete mode 100644 data/reusables/enterprise/about-ghec.md delete mode 100644 data/reusables/enterprise/emus-trial-content.md delete mode 100644 data/reusables/organizations/models-development.md diff --git a/assets/images/help/security/advanced-code-scanning-setup-ghas.png b/assets/images/help/security/advanced-code-scanning-setup-ghas.png deleted file mode 100644 index 51d3800d55a1cac94722fdfdd5f8263e2cb7284c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67330 zcmc$FWmH_v(k>7ngF6fwEVvAkKya7f5ZnfWJHdlbaCZqV!8JGp85}|&NN{)e5S%-Z z_nhy1>#TeK-d?kM_f&UR+tXFGyK9FkD@tRalAyxD!C}bCNT|ZWAx*-;A!Gs&U=(_> zMLalo}!EbmLBZ08hbf7`Xb_q6M+-#WN@==CZ(^k5+3Y`Pt4LQAXPcUTxS;T&~->MVcCsM zgMuIF%<%&io*uS&LZ6>J~Oc@wu=)M@h+zOIfu%;oHj{F5IU@hogjcn{uY+jkNPy?v_35 zXCOtdzx^8cu;%%FNIp5$F(q~7w6$vp7Px*0PSk$Onut>mdv9*)qK-CF=w`WqUoseeeRIQzi!y@e&pWT~%%`dtPr%F?3)Ye{G+gq%Kg&w8XXNlunEWY^IN6Ju zc2yR!xfIv{B(Zvp$=(?hQ4v4d(Gk)hM_*6zK7ykc2#b=yu15<*=V%{Qgg@T$vSKTH z;hT{Qx_;aBYO#NSkMMDfEKaoXxi4KB^DZtdm9uHmgN|}Ui z?bl|K2l|W7T4p*mu6NNs7jo1@EkEcfOPRMc@g0waNiyZ^i16I@=YOy^y4<)PMBi8p zHJW|l`=9yY^+3Ke{yppBVtz2wAUw2sTp3N(Heu@+IVw+Ww0;s#k3vdfx6tAytOi-} z%P>F}>+08&`6-S4cC0dVPO-DWeQlG~0)7V&p3HW$CH$bxcXyG&&lDDTlD6~^+lq>p z%=W-t+qk;=4JjPAO_;}iQS}XtK+s1>zB)lbWd}RDci{2#-E*w47T?RWB`bS{G>-7{ z<;W5rL{#$j4=F{*1Su((1i!P(F_4(_8hEPyE^DtA#Ihb$HoEVP3$cJ&S{anmlGS*_HGOJUvE>mS8AU&iOvCEi{MK2vNCeLmXwYRYwioPhR4s`u++dYtKeKT&D zIa*m`{Oj}3j@Nws#YHV*jnVj~GqwR?;7e9$x`0Q?p|N6y5SKBE+3tC2{=h_H`uY2l z>y@c;Op4_xzn6~?d&F5a;`rO)OhKZk&o83WVwU&NZEelKNuWf9P$!Hbnax1=4);~_2osc>k4`Bg2UkAtSyM2( z5GM+qQ-B_+4_RfF@B;2Xpne=Z@n_*&A(E?rwb}ykP)2)97%7Y7+wZP~Yz8`QuNetM z>2oWj6Ot*R`S0Sg?r(W+c?XMSeo;M_9#;FvbaVS%6$dpsks9HU{ds&uT!Z0K`%eb2Bi9&xuWvl?(DmmS?}0 zb2rPBIdnZ^`dX$_Q{Q+qk5*aq8lMl_QU$$~6}7I!j$mKdLHSEXE#jv$$MPNY%4{** zdwxa~sgjDzqke{Ks?V`t8N1cFm#@QAT2d#%n4P z<_{EEdD37`(`A1SmavAcm1r1;0#SA5Tl!Bgrf$b%*87DBW zfUKR=Y^!2{YO@)Gw6vKV3FXr&QN=SgG3>8qjRvzgZ>XTl$hdZiR%8yxKVy&AJ38Q| z#+5DbzA|YktzJ?7Fez9pq6{2F|XAWg)V%iHMT-MXPzP@(XmIIY{|I-^5D3}B{>hrrl+{E!~ZXu!C_P@H?uMb{W zW#umihJ&0g=G`gVUz}Nd7~aBP2+$Q2Y;A4Dase-^W{SijV&P;?SW)J`u=Pn8wl$L3 zl&OhX=;Fk#KYa;A3>j0VngeJ{(*kjX5ChVFdNLS7R1Tz8G%GI}NjOhiR>L_{W{o9FAO52bcnZeGGa=OS?qkeC#Qdrq7Po;Z5#w7nzvBS<05DYx|o zDy>cO!AdW;3s=6VH#gPISaYZDf3XJs_E1<)vuJp~`!>w~ zPTCUB0udq+Gvl-sjPw(zHK$YfT`Gx1zXCUct)R%LnB<%1!2`N1vt<#LSm>q2{-qW? z?b`l~Q}b)@KC-G|)`DQcE&UjGi#Gup#wZ1~wHSG1sjRPzlfeIyVz~09KS`3#h}b4G zB%72|0;i-Bppa|FFC-b3TJhvtH; zd&1Q9f(c5Eah_+^si)F};KzMZJH(S8-yWl!KF5`K2|W26t1+I3#olN=vRDO2qPZva zCDPsD?8^xLDeBzt<@p(V(2r1c-{ReLTNLEVRfj#E_J{YyeP^>Sq>XdNC{LEhWArj5 zDoRn%;X}7V5hx$4=%N2dT0UlA9M#1TtcZV9XAS@FO zvZ|&Ehu+0z@4ijexuEA`vijs<_meQ2gEa`1A!nH(ed~pZeFCb1#q)isM)%up*$lah z7_?ZwuQYd(az4r_imAXUR_Ol#M#bp5?9Io`?nw!(u_D~1GOaIIc=3ycZWCI)QmN3a7jYUF@Q}*-O1;|*->eiD|fs)sVY8rW>KLL~F zOCfm2ZFkRMMvu6+$V(sz>5iw$w)4&@!3SBHs18>m_1yXDmjmUx4X-$NK;Pc0(0*|- zuppL19J6&kDI(>un-BHqri1m4_4=BNapA_sT~7JFS=b+1mbso5&{< ziWDN4eUbz|7LVnAL7W@6?r^l|J*urLUiaxRGxN62s7$UaZ?B)Hx*kx%KfX|rr`FQ#Xz}}mG9kOZ21!n3C01Hm^Z3%oEpKo3iI?S=Xcye?VzePB z?Z7Gs<}N{drsI|*-#Yw%&eX(8k?f&tGvDSz`&rjUmXBhNvZAJ$VhwxiwUi~z45dx82S14}BL1i%4HH2CgyOP< zrW0LHSqRApty_Sh;f3sqT{nMTbf^=Fui{9LFMlI%q9Gq7nO$#5rj;HfBz25&Mes;Z^T#bgL)0VgY3tZdU24!S?YLw%%4~uFj>^ ze(TFHw@X2)=kWeA=PcM4iU8*aKu#G+d^&jV&UciXd!0b^Af#2sfXG4aHZ|=&T>Az(qd!mC4t@jSx7P&?v-J12BcL;>< zFV(aNVOb$y5gyqa9bMnMgFho}m#1q=!Z$m~hCDXYjS2U|ux`To0SlB*#|VGZA>c>K z|1B-?bky*-%-=Ni)9JzgEscZDT&Y?PvqzEr)Gfgd78dR%FJGJLF9_D@u(IG^=)p#n zB9+I%r?dM4SfpWXpYe zH{b{7B^o8VuE;JxG=$lMdoaH;?V&vm~pUAUDCihlIwmX%` zfH>G?sCX;Tk*14g05I?IkVhrWGw-vs9zX_Gm7>D?1s|numj{4fv+#{3{Z#&*ZzihSS;PL0^`SD9a14 zQ%Qz`kF7qd+C)9FjR%XtUCs{`+Q~!JrFP%ASkeJ>lVSNEyFcQdCO%}J1p_vFrWPr% z-U=z&OMT@rohcna($vekH5pH`&Eb^*5r>n)`6b1KPhLcY-o8xIT=e2$iGP@~les_p zGPQ)+^RDz)oNNfAy39XgQh7255N3qcCR zX|WLs+Pzk)Ov%1?Ye%i+wmB9OpsS-MI5-K=c=wR06(Zh<$8e24DjnJ$fEY8)@i51?b2OSX3O7D(b960c|$+7o<`&@2cWOs*(H5zDL3ao z3@4v6(4@5~*_2Z9x%r#i2Lm6Z`vK2R1j$N+_WEc6gEg9H*~sN6@8Gh-xrU?DLzbV@ z^QYgc8gsw)8X~_Gii8X=14$?tS=da?MfGv&f_lxuke>&4e(j>gdS=;>SA%x#v9Te5 zgSWCYP!kD%!AhveCI{cN{5&1e3|AFoG2KWK4)B&>{3fXbKupuoF)C}T)~@Sh1P0hz zALXODBP@;2C2MjW`>6wQ_Gz;Ra&nB&agmkH(C2DHs0b31)Hqsq*69Sm$<~vOAm56L z(my9(I0~mg&+ui$qk=g42TMrs<%I9acyg%O`SFuADA^Zwf8s0?)qekuQ=&fgQ>J{e z?Y>_?zr)$|fKwldm@R6Gg}3T&9W`KD8IZbo*T+3Soaf~kCBD(EEEe9BYr2_ z$vf2R{#Vm96(T=>i;B*41+2%Z3K3}x%Qt0%n4#+-pYl0AlMxe}))*zA{1}n-Gd^LL zcLqCvPB9@7mn!NmtmVO>PWkwI<=Ykmap|*^BtXXY?_-A%mR@fO7^9XM3FW!5;$?_H z0?%>n$b?LN8tUBySQ#L}?$K(%EhLUJL*aBjE0w)pb-&+%{i$Yq|G6yq*wW&%DMF>dg&7o0!;)HcaEE7Erm zQ)5EfF#I{Hapf_+qx?6zu~(QwyLewkre5MloLlnYSPYweVF2|CL}dxt)3|%vFM0d< zw`D;_9nzW3W$Xy1T@fFCw=;SWc%H9oufXN|OqX{+p|!oA52-nA-ym1{?6DoMr4io|YySA`bJHx1zp=PivA*PIcP~R875iMm-v!&)%;{GVW*_6t zS&e%+-AKU=xUsf=~@f&!+Xgl^^lGaFX`2xJN8W} z=Mz25Jk?>__z|mKH)Vm$WU5-RADB_xdbx$}4i#Mko=0cB8I-0@dd-|2n~YNW^1gQ^ zcyNBZ8-u5J&4eo~^13%)_S5x|rxm!yed8n5lJBJi^C{?cpRXkm*4=GjYt7GA+P>e% zT?Quv)-S-RsYWTOsl-XzRYOAz>36lM_s;lJTCoo^naH}Y#ur>v36j@nFW95TC;kR( z`NNB<>u%vU#m-vxL8THht1~pr%6ldPmov;2a+E+@BG&w!usRD7-+eAk3zrOod|-rP z?4h)?+&4N+csI>8&S3CRj?=H-4f61!1w2txf>=VTU^8+E$FJ4rV)x+fYWghV_C=SY zPt2F!sovLq&dsDuv9|lhniQR*eu*1wYS*%NKQ1Xr`my==xLnhiiaTk7f5Uc9T`rJ` zR-=jL;iI(L_r-_fH9pB|fuo#njYIjglPwKtA|1BXDGavVBtdq|w*jZd5MpTBP@mzE z=VkQ?v#$p^VEIeoulfwzF)Z2 z=G$w7rH7ShR;-gRYeFM*UHt+Htj>7I>5k^80ixlnYRxBVyq{{MzE!mDT>QRbHhAU? zm!fq)YjE@*wsQNCAMh zWs87#8y}u1RW21tI^?ZEha%or1{IowQ2FqZ{QMlsa=NDJw;ZK$FPBS%n*RRHr=EF-wgG}JpM){+wpY(czZC6pAT4kQQO+-t- zq0w2*(7mBDaS*47KTqeVyVGi&)Y)vZ@WWUsa6H5t0ilSE!Zr%Ur>oqp8Uvp7db_al z=XeK}qbN}JR3~GXN|%s|KnOt-0H@B4*tgWY`f5x9 z>>)9pP;B{k?IU`Q+X2COp{HlCA-X9AOGPgl5P_ZGN_VA+}VD z;ATPz0NM>yGEIPS*l5ZK*zqi$m%*sxP(^`JwSg@oK zz-^zGma z6Z9h|9WF48$d>jxac6N`pqrPSfcw?ofcQzDlU#dH>SJUHA7V{R6cL)zP1*v-3B725 zg^2Lk?e{{t;_DcoLjXm(T?7&P&mx4kK(~s<&0b4cLNcp&VL0i9YYOPv#_gtNgKr&< z#4DevcE2V{(N^l)<1E08wgePt<#!VoSWUGSR&EvopfPOSX^pW-$uDreB${M-MO6!E zaAXVKz5FoFz-Dg@RXVxag=2cx&!tlep{sv^aZgYNCad>3XO3aDTW_@V#iw@6LJRnW zuj3@n6M6)Fwys!~j8@2OjN$e5h*%wscBOvfgNFKixJipN!7LiIV|~JCwDkm!M)h$i zf7qTW%&pqQ@^X^Cp?<)Wj*n?t^9idF2ki;I0|dnm2GPw9$K|q)`)&3T|Lh&0Dx9Xh zkm=P?O=+@3Ra4c)Z0RNcBjBJzVIq2A?BO=vUF?7Zflp{S4q$CNXnmp5XT|m2e`I<- zFbZ5n+O8=6vZM_Gicg0bJXrM0BRaf`mm_n0(Wq`Ji>`WF_R9(2m14_c$9K#&z(1SV z3V>|Rcn$ij!RCG#2-X{qGSHj%vt_6ZGLtuk2nzaiQv1?WXuLLS$(8(&#EH1(c5;9- z)uCe=i){@Q&hHpPMa+}NiF{AUl;D4LDlWEM z^y^6emeAqoMVStzjn^NA>>|SWXMd*a4VSRpU#%QI%Q!f|j@YH*;Ev4Fnyj!WFpeEC z?Q|hif}fVW_b?yY8xlf0jIR5`g9I_U^PTr-?^2we*o@LNf8qbVRidS@!f3AN^n!Ct zKO8Y5ys}9+N%|!r6>$B1DSUCa#u^4Xx$~FKA+2Su*KRp9A)_=yKx-5x*0ES|P+(|R z&N5zB3sW2Gk)ufxu`o{LHYgJ-GYqMQ{_7TRdjh1P_-~*BVke0^h{i`1MYduO1z1~9 z%Z)nyl$sC-!=&|xR&rf*MzAO!&Hn*s*b65#D+gLtK9DU;4RB0W zikx!H_0aO6WYppv9MFAxL+z(>rqVxfHmV)AOZ&QdTVOnm&LlpqnQx8?nB!k$iEj7m zM*uZTT)b9v+v<>S2%Q|?DNHOxf ztXP8xA#B#9pK-IYYo`#SdG&6xIV0w%)}v{&h)KRdR7>L}V+y5;+&H5s6cWDNjt?F| zjVk>WW*Ub6p>>dK#U=-G|SXoZLako)2S(A+t_Xf%@d%*+G8{f9VcTM3+M!QgqU4FlR!oNjN_E1wv|9EYuM zut}@LRR4BMMve60`N*C2)!c-VDC$xT5rpyG$?cm!TD+e|@E3QH2=1BJ1dh!9>ZF`_ ztwgPLtqa|g5sE#vxBMPLR`)BbT)~1TBk2rWsGe+Ad3&H z9)#RnMB$@|Czo4f5XbLQv~?l%LJ!yx-n8uuu3@|>E-rlDskFtRag8gc61udSi?472 z$ae!R9n^?4`3#FB#R6P}mk~eow*k3BEbHrY;kbYTkYfTBP@Ow#YRCwEA~9T&x`s33 z{P3s&=|=qWa6Q$& z!`TgA>=GQJ8`puvamuSqjv;}yA=-Axf*qkl)Z!<8M~&E3xY1`bW!_7jMM?>TNPH;j zZ+M9D#x!C8EP^BixItgvR`ITWAUNuMR+*`!b)f+V0fP1X!mbs*gr5QHJL zw?ZMigrnABr1%zLo)?v)tp_;5iAd9tOlI{7s~rG!$ktl4`kh+czl974;zS;dHS}Uq znl$p!_Xnfm^=VTAhet>LD4}F$>z887%Ov!YBmyWWC#?Ss7j%C1&m?%&nOr%~wA}4B zql1OOe`vAM?__Ot`3_00+}p(13?e7w-^sjou=l|iLIVf%Ur0J_{PQKQR6f)o-}t8J-J z!{k^|uA&p~e*-f>w?7V)hY++-75vr`mbhfp$WY5c1+&}ULEAy;lo=eHM3jhYq4bcd z(MZP?Z+^u0_`oBw6_>{1Q1O?FRLYQ&qd>6L=hW~Xj-Nl7o)adrih(|cR=Eu_efm^) z1Odm{;Zgzfq5KLb6eDXy_9X8ip9DY>#{qXSBJjnbPiV?iKhP_i{+Ic`FNT=i7?MB2@LhrK)cy#7ojI1r8*CisT|v07w8ZLB_p zeIF_U0Y23vu#trXDpX$9=(iS#Ep%}5dLpEcsdKH9s~i2-DvtN`o^CT!$g7A?PjJ&mQXwahftp#kD=3OE`sS1O#WlpZ#MaW~2Z#CDj(A z&POoGZqAJfPz1lIsfu9Uqi4||FIGkx{$wRyy24-0j@~kV_feqdbSDr6x{W&fIXzc$ z8}FF-09cFD|KNU=bI?D zPoyUR={^l0$F+C*V06Y3k9ODJJPd$t%XnUM>cc6E*C$h^_@QvJRJ}*j!b?CknP-#Y zR{m!#ISv^O7(kX)gp?_r-73N0ch69Hjk)Nl7fbCLCH0L9G!R0yy2;3W`^6=YiHFaq zUn{FLYMHi^>hIM3W8!>Ag}^I~&O5$jRTAA@^l4RQ$FSB51VBYT(p^^+5=P*_pWsr= z?&%sES-)1$$ZI<^S;nOlBpALUOqvDt8xxG8>4RY#CFI3RVm!i;)8nxZzn{I5|7~LI zu_ij-l4H*4EhJZbf8Db5Ac`kofMCS2CHBoBQQOk6Ql~`S2qIM)av*0RXv$^+=)F1l zfHo!tpwrZ!Wgc-MiC&oTp;lGkate-ldD4}tN62VP+xCiY%K4gOySIBX+1=J}!QZ6D9Pq!4K~fCNS$oc$6rB zG6^jYy^cC?crFv;qY1N%9f4SzJYnjf%|;ks@RFVnelT4JDJh}hU(J8ubF0wTDGCLKppUh$PHQ32JMaHX>?bKwu9+(IMLYD&rGK}oTNSqx-&uB%LF zz@~sedy#=I6k<@JjDWPVQ|Rti4u>YnFrZg)zzyv)aZj8auwFYgn0SpJ z^XfTr9DJ*E{jofIp~-wMZcr@f@3Bvcf;>KQwbC^94KYnne+}Z~o6eMU_d5%&>+ciS z&QhIu^Wh0@ktwkfG5xV*yh9@|KIAdad>toj3J}pBT}SaUq9kZ8{}F)%I|oYUhs@-O zHg4kw@h;pf=eu|C5PJ}W%BY9XVQ)+@GU`h)1`VgH5lTR{4^XCf-V7G`wi zwP@dKu9Du!V)fPrRBYxU$11rt>WgHwtQd6d7z+iq&+4N3$^l>_tT+6f>CaI=YtwVb zum#zFV=y2FezfqL^C@w~8|<3?nVO&CIVg2@a<3zH3B1;WU7fGA!5P zVM7Ly$q2tI+yKla!M_!uMY($83Gas@4T|CUZfA9SYKaQBqZ(bxz3_2QEdDtX+>kKD zUtagri8J(P=Gcg6$)AR2emTDv`LvoRLMLd`7G#twOc&VT;Ansa4KKFx%E3s;e$jRp zhd+_UC;?p-b>>Q$0>M>!C=O z3uV~a@lCtFoNVHdRZYuWHKcfemaVaW0S>=0P3^@JTK9{~H+U!o6G?V|#y36+6pH`h zf4l^Z(&y8!uxw18HDH1YSnXXyJ3Jq~tDWzTiw+2IhmNmWy?@Pl4!>t~$($Wa5`L`m zFf);)s!Q>G&T}!Y=lF`8A9~(U$=a5{mqrZBosL%BV(o@eicrj2e6RZRRA5)Ie%{yp zYp!T`?65Y*4PmAHv7eH>G6%Iw$IkzkbG53oNXEKgp<9coVxKSY|ROJbR)tKX5o58MdE z$7+;MIRY^66j+b}{Zsxi=Q!Z0K-DwcA?D)o+vHZy)aU9W z_tduZmK-z+;tJiY6iXs^Z{wG;r*zcIj|VF1THWi}E3^BVa31+TUT2Fj?7QQi?9US& z%jwjbTs+m=KoEfL(bpapaO6*W8v2wnT@My~Wlp54$2Jfa&WPCYp2qfgPhFTu9L{`S zq*ChBZ!#ojvruil*!l83y?iE@?`TpvKj(Xc%kM|?O8O0sXA#;?eM+CL_}y3!tI@X| zX@D&>JChln{D1bdUcbLM*LFJawVQ8_Pd2n*eQMj_g#<_f^v2^VuUBy*#rn7^*5Ipd zysGN>T|7R;CZY8xlw3oAj%gtBIt`&}<aw^(kRF=c8X! zljqGn2Hwvb_skHsG?+9?7ruBNi7?c-b`=Cmfezn%CbZ=%GiY$U&;5e&ncFR#B_)as0&%?%>5}BV$BH-AVCZkN*&GE(ug?Kld=x`?>m51))n?gVhny0#=l<0rhdn zf>r+EJW_aiFNUg20I;FoC~)L6t|NcdeGf%gNT`)}W2|fk zND-hZb2IAJAB}bNbF6jIqy);{evB#qq}}Q&Uf>G%2=Yf%$Vh`Wm^9R;V1ui`g3P~a zeQ5jP)NpL2x{pbNaZV1R6@YNaC6$j=lZ-~nn2#8a(LPnAgoIiljyHNRyRaKHlWZ?G zJ1H%c)a~lLguy*hhMRHkwcTU~%&T9V8dx3w3I?2pR<2o^wR`;ZK=?-negL{toQQ?j z<%clnAuP1sU=`2Rizh#@ImpT?UU{7vFhVcKtuBLO^4FCmg16^gGip*7D2>Y z0GM@c+8)*?ODJY~^7gPXsk+Uas{1Smv8y`5(5HdZvfi(t#Aet^feW2xotkq!yg;(c z%;fOQ+&mbj`}NcX*p8v4Nl8g|5RcFFzMkuo_DSKi*arNHEZ?kat}ZQDXzpPq*3SIJ zuGgH~FSX|h8w$@|b$Lf~!YrG_S3Djo+oh(yNAdPFnmC*Y7Q?#9qcAbz)CPyp8<{Bz zZ;I>wVy>-D8eq6iZOD|bc=&7b=0At_p1$g}@X`DwPrZOmq%$H7Y#UBSgpdbUkHjM! zO;9Z5PuflAuf*tsS}qPXU1?6utH-w3^d_G~7#!?|3rwLtB-glfgV=1WYfs8;Ss^R= zTGws=Enilerp26Vcp@8-d%pPAVY93bA-is|e^;MkW4R}zC3(xmgd3)i)7P0XAro#8%J zI)*t2Jtg39hJ^R0{gL26aNQkug?8}xi1;Ht3OHzw8oA?1YFQ9I7WG4V|0IgEKp6kd zsRFY+>1MQo$GOmY8XjT9)2BS(r^1N;u&D;a^5LEe`~A()0{z4F5y;s8u<3njuL}Iw zM?a*qN3rXN#Dxlb{OyUmHprYwHjWndLz8-XFxG${|H;O&0RN#3Kw_ULyDTXSZ2WGK zhZ6X3VCN~`(vA#@g=b?_8%~ieE&4X@>UIReTi<0ePJ9tz{A0lXOX0_YVKg|}6yC?j zKW524w8sJa@&13J0sgyPne*qLK79H7);wB?9WzSt0;^$tizvxVtH5X=XoEEA>tFR* z_4P9D$L5zX@~c48)_v?Jl`2xcD3j^&M#*$HQloWd7bB<@+HW83(Z^QBH>m-_o1=@6gf2`>$LZ zJ?t!d`JDkS;9)l-+7tqrLawZKFYlZCt}~*_rS=Elrf&J9Govck#c*d+xryAGZ|8>< zPJ1XPmw;K2ky)lZnVFfCcuFdC2(u>jeUxb&mHVI4DXy&yH{HX+?zoNEc0-ph35RWE zDjWBk=WiNF?=RW!2WwqOaa;RU41Gz7zCLtN=}q{HOP`*i>FDT?pB*i<(ARf{6P1*d zY+TS4+E8GAUz}l-zP*e;F^HfHz!n2g1yItLUM8ymuR2430&ZnOTr(cUV5tB|lf%iF z?vamQgK3LG=Igvd`d#XR`U=IUMzaNEc3hLK&DPUvT`Kn7yJ(>%ud6VkFswe>{#yQn z0|Px}6>UbM#Ds4H;X+q1m)9WSkLUd~e;ezjM(iyU7d6AaPFArtin;6a!pMCA5Jy@= zJnCgkYnY7_YpC?Sxd~CdB4Y%W)oE8*FuHEo4W!jiTfw1o8>n+uI$3m1XIAbblUs0jOv-CV044dPvp7im9YL#4$d2 z;T?NtLqby_jI7L4LaY2s4=STgXIL+UxQ|8(NAf$rS+I{U34=}v&=qwJC%D+ZMZA*U z%w0x^Awm`v{Mh-+da4+_iu+GjOZ zxEupMoPQ+r_V#|$bmjTyg;qO<dc!%+O}g#B6fWt_sjlaea{#&A`jgKRH=Fh zg_wrE6FwP^P=D(^(gCyKLsUk8K~ocwQ>}YgCdASnO9YOb*Bv-2Wj<0M7D%~ZFC&S7 z7oef4WA>4Rgj6Y=FA~3V8g;04M2(i@*=3Gf@j?`?*d7ha!{&M$)*RC0uk+xSYrt3JjPcm9Eqdq zws8OS>8%nc9+WOt9R#Qyg>>14+yjciRlizZM4&VcboPATj}wn_z3-HC!yhVnwU>|Q zFS$J$k;SVnWk3IIL*^?DMjj>-O%BgBKiK-!8^XV64M3$+Bq2a27>YAxUjOCxd$v!p z9U@Ubt;~LvDr6nS{$p^z3GJN!Dmv@q@SnDWy=nq^56LeSA5RjeIG9}W4lcVlzOS2lqaa$oGpg~We$IB#DyYT6;? zalu0iJi>1N9DT2Fn5FxM6#MFW#%O1JruO^`v&PP+RgWfuh$P+@zMK@Hp4fwk&x-g3 z|4u1@KwjV#6AS|Zwf&w)#pC9!eeiZ-rT(xFK?apSN+nUm2~hUi zeb9wcs)V1@*hpXFFz2}VP0Ww-b+ncsL0|Ei+9ML6-v%mj=W(rVdq&~?M3pKOw6n3| zyn}s~;GoNixM6f1>m$jx;%0(`jr(JJn{?gDv2g9zAUbnl{=?V?^H@6-$Bgst>PF)O zRTdJpH5saun;2*(;`MdCn~R(0U)hDtl+tMV4)hKb5*L$fV50e(;<*G{f4$b|8mWGj zMRA1P?AKq;)OuokvHri*z^%A?e&yhjQtN!Dv5B4SQ7}DcSVDu8h(+R>;t>hJd0Qm0 zUkZvS{H)N#^FWDvAEGjC2Z2S7nPhziwt{Eg} zW%2=nnaxyF{c_I=HHf(=t5;?^*x)g zxhKIcvCGCfx^tA}Rb=wdXB!F7IoE>TSpr(Cze`fRLlxw^M$VDvEizxx3dz@eZ?tu6 z(GVu5+&B1-#8-xPTjxP?Afs0rFmvv#`&Zcs$q{MKEOo|s_q(ytCP@J_cQV-0DoXGz zD7=o%yW}jKri>Cd6M9&+#?b^h;K77{e`MUI2I%6)Xp+fH*sqU(RrD1mSD}n!f(S(M zo!@%Re81|+TTIN%HIp$l#t_iXeDo|x;_E=S7 zCym~@wXi|`K{k3u0g+(HewBAHWt50lnEuzkg&3V_O!|QVmoIC-9C>7<@L*d49ZLNv zs092u%@*mIW-eC^x+HYFQ;UH(isGI0*SpX7oKwY42VXUKIf5avoLjC<45K1(Ka>B; zJ~5;&DI`34R4Mi|(W;>HIUyus@i?{Dd8xmJM2Hl7SBaMBSXs;K9by~ozL|Lv!UTOi zL=+I@Je(p(RO;@9vGra^27p{JK)3grb{BUzt-*#1q#6I!sR3 zKP-Hnohv5R4js^iNngjB#xnkC>2XmcaU?tvJdPEaOoZn--^J_~n-|W-jkX)?^#44E z$K*R>6BD)>Kw!`7K}6NO!EKR|H9JsPXE@!B%Ep@Lk`mVo!Vj2aKLe43oK}_c?gYWU zppDFijQR{FQz7}k!BGLF5OVH;4w+DGgexGT8v4YN_as*l{AGXAlMQ3ilB0v1zh@#0 zIR6%OV*mxoP)@g+UG*CpLtBY24PA8I~9_GCNZ;3 zTd4zu%kV&a=?Pjo=i%lS8=M|xgG*l4&412OcR&^%ql1J|nS-r-l!EXhiIWs((Xvw-5%ii1!#v(rEqsw@wfpxI7U=1mE^B#7Jgjd z81u|yz>{Z2Zt&9vNZTn&;73TD%QO>rQwxgn8NlQIXkgXw_dsn)!5Q{|eG1n$7x)Gf z>De!c+Al+3nLp$UTvVDOsHo?!7C_Rh~ah`zP0x`3f_*LoS5fJ zcvh~RWpQ!Vl_enODTaiHh1%OHCe6MTi}Z?wmd{a>QOr5Wz9-CpZq3uBfgpkx;9=iD z>KYP5#y`hg@+$bfDu`r$I%QtyM7<18Gr=Dj{zIO^ z?b4jyq{my5-*xIv1N^JTi@+M?3zQEL_I9=n^j-q45Z#P-QxjjzH}@Caj;9C4x7ZDK zc7B^5ONK3toerjE1@8LpSTFS&jt-Vu&2MR_>sy;4^EG>k_v6_F4KkJF*VOQD?**tZ z3HY9Lth|REy(_|Ogp?5DD;x>&?Cg>IXTitx_);kw{x}K#%YoKYmC2g#_`D*0gr#w) z-TlF!?Ldsh5o;^!STsUu$Mlp86(E#yGdCNnLa#NbM?v+Su7G4h$3jO2G&1qL3+K7c zbGNUB^xGKl0-`Xha9faG`Sr1}J0Z;7;ZV-$MJ-}Nk}TOcAoyRRF$G5(g8xBGQk@ka zdG6YSJ{59e%?=VIS=lH(3VcSP>*AMhRE&0&G*ksH# zmDqRrt}ufWcw8DtA5F=AWwZ}+_{c&Lr^{%U_!(%()-B(Z|Irvl;EVkS58O~L%hVP7 z5I8(p!uJjF=3~aC;G_yI^5%fU@ew!Y=TBT>L_+u4MvkSJ&Bw=7QuJ00=cz#d-VJFz zrtL9DA5J)@BNy*m4$HCMpPpLV4`^gXq@gE%dZjR1kFVcoLPx_u=W+I0);E-h@Roqp z^t)?>lmWCT=nP6g)fed__nF&;4rW=PQ;8!n`g^zY%DmtIN2Rh9foZo6yBWFmdn9Dw zKXHzI`eHqkQmaju#TU7O?`06|0zlIKlN=k!6bxuIA9+Gc?K5vSV!MOZ;3q`wu8M#d2F8smRaiT)$D{G|H;w^)=cm)2I7`gfOt zY*mptdmjts!bhsF+>099fHlmfE4eyOApIIZfBqK}2ms8<#1N^A5wIVp`TnCC{}%8N z=M*xN1U6l47OUwjd(m@6W%wpFCQhJw?sCrm_qpZQqVM*J5}n(=d1z|t5ZGw?4kK|oDuRb)9&K|lai@$iQ^@X5#YovBkI-3y_EmQz5ziz zHW5E2<9ep%_9^SNyS2K6r{T;@&iYC+|2aKFCY+#giK^9E<_Y=vCnfW@HRPM&KZB51 zq&YOZ*#Bb+&wp^?6)3zPJ{@>r=HPPw( zdXI~=|K8AKGLP15&rULi+5UOI8;`1_igA0DW8!t*J5-tSo44ZC_0!G4ZVue_SyC<& z`V`|j7qzR>A*i?mMxel}4r+?lI;PZST>1*EG#&>XSer*3)6g)_)KFUpKCRe?zYoc> zi<|x6aQKGnPKe49Na7WOcIDTeL)86f4)fq8D8)B8AM?JEjv#>}H0 zL&TyQ{rwKrs;9X|QIO0eg8A@z7^|nNXWZ+04?n~6ZW%0!kgo>z%D2>BXi?gn_V3@m z@B~&DGuneqCppDFM(3e?nSgmv5CNF*dTT4N(Z`g$;pQyqhp9*P!3{GvX=H|AP`+d&A_DEh}pH=m@M|yu3Du+*{=ZRA_PwmgT ziIYdE^`Xs8SM&OvsU8H__e) z2gCW>$Q&E={oS`F36yMwJKOc=Y|4`#3KsW@o3$e+W}h)#`|YE$h$kh)*SkYzVqEK$ zQ}#vhJa5nDBIiR!h*?&KHvkLiGkWiM*9Z}4|4FX2Xj?+xR3uXGW#)7I*ekaX9YJx} zU%jhTQoZ18L7pb`ssmn`uu@K~$dTlOg%>n?(1_pJBb_yz2bYfqPPVk(PH_Fr=t@dW z(<2|(#>Vt|vrR?$^{d|@ZT@+Ge&(Wr?A75{`deEH;mdi*vbtAGs*$_>T$i6~n+J_( z{FRE$-t7A+6S>8F{ zV`6me>98};#USlN+RQ`7%d0aF%I|_BuQi@vG|2rx zZ$9)5bw!)Skn^yAQfY&S%Hn}fQkCQIPZ!>Y=qo|AI^p|C0#SS^_7 z(Ip}*x4EN-ka_v~Sn@HvD4}Ch#Rv>`dm8$SC#4HDm}@OXrG)?4<_|XJo7^vAQ)FF% z@oEx0C$;Z*bYQ-D@NXb*?&ILwkSNBkrH$_LI#=XTWm5RvoS~MX#M^y$9T-=Uy(LS( zYLbY8)n_*HPHNbjMQqi!jJ*&Q4C1KvJMCP=aMi2%n3wzE$!@pSpWK!NU-;rOq8O7) znqS`h-e=PBF}J&=Rr@(1&q&}6%Y1~3Fl#E$l^!@a@6_}2Fu0ZMFOboX*hGd@EX{|q zk$aK??!x@)rLBH5agOff&`16{2z|gBTk+4`OFv-GQ#kT*SDW8&&0!wC|1Jq@>tLb2 zK4Wt?YHP~|Yim*8^YLxH=9yUQ_)qhZn`1dHMU{pTPOq<0_DDllOeF(iW*uxL-lK^0 zKVH;({6gb@a3!U5BpCi)veKRGQdFl_2@g@)r{zTk`P4*^HtB+`CO4G)5x$g?LZB*z zI@w1>wC?-XR1C2&gNaFLku^(==4LpjFhe46Jcn=@q z;;nj@(bCZ5dJk-CaRnGkiX%#$&;j_)n1sk@5&BN-Y}1lc(GFf>f8AcXTGV?krqk3P z2xps^%W5tE1n=l%4JBP%$MPg2tZPm1r0I4gVTrTgXGcTIzGbt1o&8*v^?7CtFQfkX zX%I=R6Z0WDjea#{1>z(9cvI+?(8KePG>Nk8w3|HW=Vr}8XRr+8wDe`a(u$wk!Rrpr z8x&R!j3dDFBx1IISx{#yBh!f-$@WBzBP9!gKGq-UES*5LyX+g#Y&vg_;d@y$@tQ8F z-QeF;>647IWsP`8hi@R(()W^GV?dZE{xYn-tiD@u+%=LYoG!s=l+!qioT#wal_x=M z`=R#bdUX?(cUNCIj05A_!PR*TNZNB#T`y4|U&5xCS2azS^8L)t|-Rd*gc!W^|;`_d$I#=j7xv7rt1 zzP*vkkYG|55)#zDLWa9eZo)*2yR=oi9L$trBT&-p^>@BnBK7pPMCoN2=Juq6kWh~w z$SMh?8>S!TlPxWORU8}MJQj=+ICzm?B<}jwoIt4Q(7;l$%e+}V_-gQOQL+$ME%Qyd z6gg7XF>k)fcV-YPsCIlJPu!2Nlh(-O#>iCimlVGEC7OM?W=@dJ>unu64Q6Nby}=`G z?gsgRvhnR{T~5A&e!8@qN#0f8YT;`_BjJ9W2(#LEeC5Sx9)j*4ZUS4y+s|?_cN@R1 zB7R=7=G9PDa)Vu#SnrM`qvCCd`1Q{J9C?dHbrl*kb)bOV^t_h#v!!xUTw4CI0ks$d zORF(OxftxO^xig178p%8=ZmeBGPJwO@8x2&vIzDbL5T_51>Zxz$-BAFkzrgEQrWIf zJwlPG!MYhVc^~2G<59kYeEkfZ`U?cv9r*_VY9_ky_21u>or9c}%XnohM==V|lz?XSjCH;0oi!#q!>(L2Sqjv;-e`q;R-weS;ARUhJ?x~R%j^**24CKXq z#Dk4XdiBnKe)V;e#Pq(ck}-d`D-OS$0R4FXfJZTI+CVo{vZ|vb)ooeV$0N;VFzvke z+w08sU_#Z|;3s;UL7zuF`*L^dIf)U*zQ+}+C3dwu zc<(VKmi^PF+1FVv-EEF=vl@wcQyL0p{wVRZ~a*x+!?|Wo%ruHBZMVqw9>sD zv+7Z#1t0Bq)#tEd5c1$#G1+f|hq$euzO?6)u3TuGiBTJ^U90FGe2JJA8(cVBiHPtI z-_0rgGH+CYJO19q1zT>$&9^5iGICl*OqtAau81i^>4?(lM9_`3=^2UV@WG` zjZ|@Sd&l$MJIEw_)iN~TX;01ftQmMrOdaqW*>ugdOYt?D6?~?D2^F`pTkE_E~El%RjsgT}xZI_9XXDw36lbBhu;%7!Ay>T{X9@@%`%{gf; z7*7PnCn${i(VlQ{EtKDVsrsbsB77~p9YTVL#t3YgD2b5<6E}aSBLt#Nl0#umMgFr_ zZ*9UoArXbEMZW_zF*!c=A4T0Amb~i8qko}v;*UiT9zos+hv&ztnJ05hI$)0_xTcK0 zrF=^ep@fY4bTk!h=RTYT0TYw^nTgcb6+OIJCGZi$p8h1l8;;(~9_xp|uG0(|ENzul zOs3;=N%dmq9O0!fr$sv9ymFzCieS3?>^H5Z#S~`J#zmOInB0bok=6jIe4`1M=;5+_ zrL&qdCticGXkKxl-~3qpB>C<`ff!mZt*?GrjGytS{19pD6`BI%@AJq&cwW14CY&Q> z;GwjKx?nh}m8wV=w~Zns`$iQe)_+>%%yD+G_6s8lo*VnmW}d^?NqQ~TVE2yv!_>>s z5xW68akR4CZJL~Le0HtEYnGasEJPXRL87FdR#fh7aDiokRP@8?L`3t1=?E$4C9Xfu z-LNkbrtS`G;idZewZI?l5)~{@w2*M;#d3n#OIAq80(vN3BVu|F<@cGIS{B?Oe zmdFL9!(*YzeciNI(*4YsA8}}j{K%R(8rP?e{K}QVnIh}WmVI$~9E1u^fi`xSGxdqG zSte-5OwJov{Va=um-Mi6L!(?L{HFq3O}bR>!I`b%y`;j7yw4hV z)FyJFDqKlnPWYjvCJQ%OD&Qv z+v$?PX8&MS={d|nnbUfYKItR;MGmLJU_TMf=&2R=+`P*pz7b9Q7tT4QRubDX1e_V< ziZ5kh5bQwqFHK(0|Gugmlk_qvq~6)(dWW9zpY$6GI;*>)nl_E)lIZ;MG+hf8i|Pa6 zUB!>`6ZMJY7|HD><5RgqH_U&24c6-^xzSyc+n#MR>NzZe4SnIla%4PhO`8S|lgz*1 z4LcC5WKqd9vy)F%!)k!&5lQ})1}}39C%jtgiJDq_2hC)^{7l>X@_m#LIO`BUbjF|K zi=*Z9mrOe^jx=643%>rO0k7rw>6>NA33677{+d%T(MeAp0uhaehmqOR%X6%eo@hFh zGKO4yzZ;Kg9&6R3CbPdITA0jJaEgQ5<_^Y}f>^fpKhT!oaQ!Eg`cz`VG>k5ti2uHKzc%~1*?0R*#^kU5{tc%?o ztX=dl=cU_Hg^ETCF|Uo&#}_PT1$8)yf${D5A3#X>^hz9)x+@5|vaq(Ovqv{qY^RJ72p zk%bm~vc>irZ*tidV^TGQe6ibdu&Gcw=>fQ{NArT@$1-?T4rdkpb4DA+UyN@I+j4(5 zIN}qf9}>QtM#J5#q^gEdgv!8XTXzr=%l@IcKr}Jk*^WZz;--Ns(=03B0^vC0$=S!|1w3 z*wF2)o6)b``@ zkGRmQ=1O==-DivTiWAkITIR^&`Lf-KP(y#{agjhsALBq*_Fz3hSN=6+wQldkH z8#E@2uxIqtb|i$j=I?WELYV#GkT3aqw?tPjp~$~!n%z;DZ@w-OhI`?uv}-qo+e)dQ zi)moxYNrpH0`eMB^wD_A;PcTESfu4az%qY{u76I3L0j=gPHOMX?-0V$DR4K5MZ-#r zPJCBgg%Ro=y7qLa1nBKqd2itas*sG z`I)k=5P6!U{dd%V&9{9((CtwtL6o%qmerD$oD~TubYhEE&NFGv1a00QkwJBqg!4EEI;e9-Zx-9FWLvnvq`+czD z%vlX21 zwqQnaCQ4-2=Z_$^+&AApuTYa_nryAs+DWJ<{aF(&n&|4)D;8Bq)xkk39@Br<6~=_5 z9=Aed9_)RB+cr4<$xPgmKpZZEUBiDd1nN9MZg6=zxp1-Z)^WTU6c+p(slwdGfXVu3 zBE_}$FOm61hej%&o7&62pNApA(pAz!mlB2~=3wH|?+gTeq2v3~3>MxX(MQjjUnsTv zlSRN={}@O6xPPhrXv;F8pqg>yxFrN`b8sgNd_KQnn&^o5T&IbJ@t(B+xfV8BT#13( z4{Mm&d;kvI&KO58F94Rf%u8%c9~Q|j%9-uYxI#3H2C9x_63UlWq&&K3I(T~hyp5_? z-SE^62KN14JmFSyGrf~#B8Yk%RYV=jQM7zl^D`E#Uz!>jpmck45TWVbp8B&-szc(Y zm+}EX*W|+C9p^GXOdYqgJLws6zQA-%^DkcyT zSMDI`%dF+-{QA)jqt3m)q5yqSm$a6RWw&SrIHb-wtUe%p`}rnC1P>XfygPweMeZFd zfQyT}C+VicAqM!2dlug3@K2njC66sdoX25^?~^O!Dy^?SW$0lb>1-(FNgVHaaNF|e z8iiZwt66n+7sS3+OJo@f;Y%_;3YP;C2JB*J}bR6d90n% zu*CgvD*ej_zv6Z8H<{f-n0PI@hP~OHM7D&=MdRtjU` zjo)Is$Y{K~;ZLRi>60m^Dzab_wrh{N>k}pVN{Fy~v!B|O*hdX$6q9};ca_6{n&7UR zCP&U@`%CuJpXACuV=!X)6OBj_BPH^ibiR^`?k`5xX0{mwhG^H>?V(8Iq(&t{xP05y z2J7R$l=85ok&9hfXWqX{jO0`{tlgn>l*o&SQkh(|*s#i=1)^=1?^2a${igDs->yOx zNa`G33_~z^ELNGUzq|<|RBaFbECm}Yj@V(+xpHETMmH5hKpkB@mM%VZ zET_Z*V8uudHlk{Nfca|5;NND0yZ(gzOoE3uQ8~K>jT9`>J>{z=7dQ|;$lyZHLBxz` zKEYLsPwXu1>I%&m5QsFSIHW8ua~>IN@B{?g)l|@y?2fShE32MDJ3pI))?pF;mu+q< z$;tP*H643P$pFiw^co+#D?$CgB}WVri7c3Oh*>M9S5f$FtET)xY zy>cGIyHp0x$ud?dyhiAX2y7)yrv$U-pxFl$?G@1Kzr2Xr^p!=Yp&kB^qshil7^jbg zgvehYA_B)5#aWxbeGfX7n%7A@js{kQu@^OG1|j7Zc^1ME{ansj0eU!*P?7phwEB$| z%2*&qVrF&_>}B7qlMh!^BciRwrT0O3I?- zm%w5nLlUa8fOP%(kDh6ztUi-x`6_>j-M-#hNQH(lczDI?{?i35QH0(E-IAkY?9U&) z^ugCUmTw;<&WL`)7x5A19Hvqx!po9r4xM^_yY-B#oq^HszkLSd76ztEja#GNH$xKCSJhzu46VjAIA5e zww`y3opbfT+g$2hEw&u;Dj0h8Qv}EGh@#f~rt5KLgUw-)OIS1P@4I=m^9agPwD?sP zk^*ziNAED(B!tz!Y2ZgO+KFdesk0nCH2(3kM};f$@?Ap$PsbDwsgE5VrFlzWPP_9y8o_# zv+;gWYu?B4GLbg}>Sro`&W)=M)hc`p$eV|2F@zpl(ljD@8}{p<3mz;dgTvM988nd4 zlN`?8XzcQmS$%thhrM6yo_vtETMjvr;N<(`Tsh$aX5k>}qoqrf=!r-nX-pypNv?sm zxVSF^aX|3uKkPYgJMF8y%7RvtiY6q!uQYIo_Y?{SB)2C{9&;PMsl{NSCF*m8&#zd_ zzn_1of)Z9hr%BE42)||L}Y) zs?5ZL-P+nZagODkdp$NI@-04S$V@$)d$okuzVznkNFI1i!l7~gbgONvCg`1eAaF|| z2FR&4v6(ZRo2$Me{>HP-yN#-f1k_b*BC)5|6FBp(il7`dexFCyGF`aM{i8FHmusDO z7kTjH*7>$qw4A@cuWtt}_y^UDDZAh+PBN|$i=X5k=Hb$I< zGdK7^dkfuLnSG{Pzs-^?6g;WVsE>sNI1o<_`qo?+#oaa(S(=S?yEuD#;@nS`b?XHM znW{$382;&>ZM#bqnn=o_UvmNOuk``>qj;mZkB@j!me-RY(CfKX<47)R8ViAZ7*XFD z2z0yJ@AxOJGf|WMRWmv0g|bqXL8!;^wI{bGaFCws0q9Ca^yVn{Vr2d@MvK<6Pk8@< z|4Wwvo{l&?5|(DJ_MI(^C*fe%6yQP3gN`({@4z6|pOq3#iE+iozyplXKpWhvntq>n z9=4T85`*C6!Q`}hNiK_kKsm8MPQOuF*0;=C+=&nTv59R+atn*^1?Z1L1HCmf2eK;s z!OI}I+L5rmw?u-vI)(_`V-4E&(PE;!5 zc+wX(SI?Am`2PN0y&7vjieUQON6!l@_a6A;6jTNiSSq){jI&!6VZ9GP#%0a?yEnbC z?6DB1M!gmgs0}#8p}lpjYp!gst3wWCO~AuYBf!^X(XYo{ky}8_{p3JW5PEeI>kr4$ zN!GUo9!7}ddsRlIZW1dxx@>U!NVX?EhX}9V0$o*v*9o47?=tmK5vi6hp)1|n$C=(2 zWr|=i6KQM{vNJs_kedm4&KPAMKootBPBpXfv<_)VojTe zN8d3ep*cs?H?yrs)aU*H6xq_y*t{}(e^33dKPxhdAgQ9t?K*M`QAlj>ACA7CV7|TI z_xX;gL8vkq5|=%PU}>WI3#i2;J81^%rxC)y@3EZ$f=><=p?Tv zuu${@!5Mk7f6d7mI#J~R=XTgy6nd`*F2BH^hYn`E_mSLr;2&{v3zLYH5n@RS!PI_T zek3x20Q1GbLH;C6N$)W1r2W`Kz{J|v^s@^KiCSl%7I|g%vzk3OI zz5e2Ft?gpEN-*E%5Adk_;@+O`jmi{~$l?{B7s}$R_m3W(bwFI6txIwX z0zO*qnCo*rN~?0#UqkEX=V2Cgy;#k9y>;!}9C>|IZ`R>+xI35;DH-8&d8?4&qrGhn zXfw}UP$IH3+; zkHN>6GKfp(8@v6s!KP_PY|upsa}up&26IxC95i?L2-+dX1ZpvYlNw7uiKSm}@`)4? z^P9gt-JKnZa@x));=V7v#$4O`41k(JZ-A`U>t2UT!lYCq z#3y_x%lyKE3Jl~#1znT)NFD`cNqjF1DKDtkyGMOprle!)fNo()CD@%q8lY1@vuOB{ zFdpDJAQ0c=2SUefZZ2eYQxs1S!5(0>_d`1W0yhk_1D@l3rQ$)xloSmvrw08c9m!;b z)%rwxCcsg1LO_Do9ZFOMwwt0D%d6KrQ?GdM7cU*?D^W*G$aZza1AilBm{i}7Xm&WoB;lRvHk^K$H$svE&b06{K4fnq$35_ zy}-Y)m8N}571*3t3|wo=@AkA>^6rKs$JdV}CoXBE=KUo%8XeN@&T{|h>>r^s@$fsI zMB19ZKDVTvI9}Hj3nAxan9O5qmr)pBY?_E2b!4niM@J;jhjm}qvy({={v+T`vA))o zZ+fGX?$PT?t&|J#az5bH&eK!1JJakqj=nUjfBDK3b3t(~h}vW(q+7*;8mwO#w!nX? zk2SnKGl3rTJkg>xJ74mmo7?vqAH_DqqQT`Xo_Vg2F%!1MZ_Eh-opd@M7Za;0cqPHJ z0YL~rS>A&{AY!EKm|4Z#MxQ34l!?&c?lv%^>F~^pO2B@=A$pi+m)TPY*>JbWY6n;u z2->kH8SK?#j+l2M zUiv6l8z@WI*lEjQ($x9@^p`nlqRRHUsS3>Q;m6uoS#Janpe+!A1w#@ibCNZ4Qh`Sd z{B6oJoAll(Aj4+IzfB?X9m@~s+TZVORenHX#<2Ro>A1S;5`}+(k6?j7H8||I;MgIv zUw14>w-p%jW=`_%`mk6-_74gjORv!Qc5B;_Stp6{)#_8eV^YqttoV3ZX5=G0Aotr% zHWtaGLr$c61&HI8`I;EnjvD~<-MO?!*u6y9IqV#Qv%C;XSVgwiiFX&Y&Bo-rI+X^x zb>2Peqd-@jpBdOcqJ%XKJWdKeOUne$4C@vd6o}6N^~_Qg^wwr;kBzDvG9)Y~5OOMb zk0oOG6;1Mfe)heYIxIH%mbs*VVmtmjj0c)~)k7j~Gthuh)oi;_vVm1lP+YSw2$EW! z15j>;l9`+elUR^|MZFFxuLw&9k{wmSv6E2wCga+kVpvF2obch>g<2Ix+ty9XgaqG3 zv6-w}CBcZA(jWJ|m&CqSt($q~dzSw=*RT21jgc6=IT+)H|R7iHi>R zs4kUGkG!~LR)(crCd0EA{OM72gzK8o(B&Y>fgB^K_3Q4Fq%6C~+cPsFM5=p$LF8)t zSzVI^->3H-QMn!}KS$L13L@{V^YN9JX)KYdB@J`Zv+apLqcpySiMx_MYlRD(p5oW7 z?cLf7p4HXOqX}AC^_#cDKYG~ChRV4c3dLtK*{$6~W9|a)kK0Zi5)-dwu_p`g)kEc@ z6cNWgTWSVZXi8!zWxtXO-AC>^sXKbt{i zpq3u|DZY+>+stBfxUYEhBkIt`WOxTQkmcbNiS z8SvI{m!h1U+}yRk>2egfvCe`iDfI#H&9fJ}SA0i6@B~Rk(ILSy@CuXtA-9HIW!Ns4 zGED6<9v-K23s2~`qDzWr0Gjia~y60y9(0KlXoOsyZdc|jm)dkO#J zzxoD`d=Zx{enjDz4Ij%(futtk-(WtMlPO>#ETUsfHD|U1#6X(v)v{1E^q*E0VFu}8 zf~v5GmvM0Z@i1}w*^f%Y13))}nSlp^VFC`baV49mtc^RM&5zp?Xzqs#Hpxn{yAck< zJ4GymYF|rlMCqnoI4U^R1BmV4=p~R=yo}rc*aGOmp|$X22V8DtkZ&ecF{4>wX3w0u z%WUe6817f73XLJndzYSQ=EbK91Iqj96$=Ot2L1e5LEP7XLGcfZ|FfC_t@`6YPEchM$ZH%x8c9j%*fHa_sRKd*OCH@^k!s^~_A&1(?w@ za#zpDna1Qxb{3qUrt{rvOp5hnLtgP+@Tg-8!8$tN6o!U>Zosi_^7BSb4y;L{_b4TW z=yqZtS1O~{f`N0jp}ASwcMpy5h{JUsYkdj@8Z5l$)US{=m%F}IJ3e~%OlWn~7u{`b z7`3&sNs9J{-I3K%7$Z(wNvOo>eHvkc-BV3;cwPv>Ds{!=T2lCx2hMGkS)z%iEOWzZe< zYK)oKL0)rba78;SxkvSRCklV7i_(pl?{V>*{iEjJtmG+Bp&KON{7!hlT3m zAC1L0Fq2aVTN}4Z127^AlJccP{!1->BtWF9`p)B`)U>YAcChKzw+LcV=T_@@Cv7e` zYz$k(f8F@~0FxQ0>t|W{+uC}#Q86$Ww^AG$JJ6RdDrwF%(E3}&U1?X+_rlrCs|^ayPCnHXC{bE)uyMF|CYgJN$|bwWcZR^_TG*TVv`P#;g<#I znnU0xqePK@Fe6h^dX9z?ZLWY%Cf);+gpI2yCU2mhr6MBQfjNov-f#h*GOUY-e+0+A zx*|WL6{@jV-Lf0C0UD>(*>|cJWpD5fU1w>uv0s^^PKr?ybwYzp2W9A>Z!d`Yxb8o{ zP<{U`ocArZNNrW?yq5!`#J-=BxgQ#zHv%!62?%Q6AAk~MdVCSJ@`!F$0MYs?X_R2^ z6=C!wq%Zw1cGJ!!#;}&r%Gdg|6+#6bCbNJ07pg^%frPyK7*7;lJJ%0(4Fmwb*$icKnQ=>C`tQs6BMQhLjxUr z0p>@HbN?uMq+){#(9JJ;bsu%PFj=&a_vY<;*2c57dK9tsK)MV9KyaX#1(fCP0brW+ z$OeFj_?qX7c|0*5+2}SMydJc(eOn>r3Pjo{iCsth_=KmEH1_?IzubXtZp%PM7Duvx z>-B)iyS!{5SFXx_;kyuTrB$87BM~j#bpEA{y&oHLS+SELh2oSm%@;7?aOuu$zr8_GB=ieGD2`Yii z0zO(}ogJ~CT=iBO^#p#$+kI_Nw0I%=0YhgeZLB(Ty4h4>MJ0b^ew&8hp;VtUe@EwoE<%5>Yk?>< z_txRw`d2va`9M~qD0Gb!%3`0@5m~*kr4W@y&}>zi0m@9fik_$S*$N?d2k#E+YC896 zz)-n0-wx>#Xflh+%6M^Qs)$AbRxs{!6HQka%ccs0jzYJYfmU{-FTF;Tt{T?>fRl4u z00ywiT0B+vwwyxJ(@0L2=n;@231_qG(^z zHq>vWp_UN}Xom3KZO(0gpQ`V?0d%=8^4-09`0LFT^-birLDq=P54Wtg>154n`WH2x zmEC?#BT}#bU2M5Du@3I1Me_#qMrTE>I>#VHy z*_Gw%8)asIU{))bd9R*cfGyF(PV&C$w0@G?dGi%$!E;ZK%l`Qu(6r2V_uLUfSsZDb z^L>vc31($m_}MQ?qoN#uWz z3h&i}-Y{K`vq&H>V%IjH%PguR`7=X6`J8*8ctj3Znf$g=CwGX|NdS0RqAm@7f@Hpl z7&0ScpUEd=sN(be`tBgZ4jN-;csc9NbhVim(8|%$tAZ^C=Ynr% z>kUmTyh%bc`GiaIqKjBWLrrV>9+`n2!BUDapnctsH_h{JUYkxni-D(;X1PJ z1>IkUSzK3lRFqWvCWyn%@3tcrWNefoed$gc2ZVmVW}PNdoE|#*6k8I9#}~(SM+_5q%HA~?7qr5>1Fh9Gk)dV1l4K<$<05KEXcgD-I+$#nV(NhcV538 z0P^oQ{-+(bd+o%dNfzfpY)#fDfJGi*2EdX(*277;x!jk4N)n&Mf0oi4(kSY|cEMRW zxwnLZDhcs3Oic#M~VyEL>Fyw{+?Og;%;YFDEV5&IlqNdN>$wz>cpeQ0U_7bZ099t9o+H=+&PEje zjGU;iF=zUvR_cRuz%QYEpCw(3BxUS9q4NAhoo7bV!?I7zp*=8U9)FMxYPy6_;HDF^ z^eX_7Jx=9WjJQ(SrCPr@ZXia*`iRJu=Lt_T66;jH0l-u$A0*qSq!vW8+OBxQ!^u|+-}>QVVsvQ6MS3MWOVpfIzQQT z{+i>l`86=&y=&-=hz3w(S1l;Tw;h`d^o-^yQAB-e z+(@=2V2$zskY`rE3hX)X8>q_;U}F48WA54ebtV)j*^`uVPsM@YHW=81c_sCDFFDc- zfAAf~0A|WIj_aMD2k1YB2n49DzFOcQ`oPy_tKqWvRg%urYPI){#tp`|UFF4gZ(cX8 z@oIZ)g%5a~A#y}^fjd+4#8&HGEDU{ET*`6$C2(r>_`_CCHLds7>S;>V^njq}`8d@= zjk`i0O*U$C`)F$`P1J04FT$>TZTljNHKBc{d-iPZdj6`Uc|NSF|Id32v-HC08jpH) z)8f^UaXz!jMl8JTm+4-&K3KCh|E;m4fF`MHg}&t@`(DsLKLUfd{_Sn-zJB?`KlIKSTAqGSz$GWS_b5d}rP8p3wk8XClYIxjx-LTwi$c z&f`2bph}_H+3rBml$rcmjdzA$Uuu2U<^XalSyk@#`)evIxet~El`v}jy=1tg3 z&3pX!hT-O&(l)48a=h*e(?`$i{Bb6?)*?&N5>ISqvGZ#8=+(LE#cH<_LK9U|yn4=s z+-U2cQFwdL34s9s)V;a(_4IQ=_Kk{N!Is}S97VlTC~rmBRnFLe#~@1P%65l%)-R9q zYFyK3TCdY31&+p)bR#)V%|ssYXXJs3^+1@1I+7KLSoe5!Z%2JYn#7rA4rE+L(QcnV zZw$|Q;k!Kxuyw^guHD!IntyEH=ElH**JW?G>SRqCElyOvRn1-F1#7$rDm@gvdbHOJ z&f0dZ%vW+OvZ)J}2t7N~vB9_k(rvbsVoYk={7TJ$mpEtUz-uPpO7+_4KG@+-JtHIO zF|5=zdH-W@w(rH;lZiYX#G@4rXgDwWn3$}Uv`ez%7$;apjg1&-YopHcxX;6wK-Jc9 zab&~IOqQWy=J88T>*UAv!r-IqlhYR5u%y>)MT82l|=M(ISw85Kk#J zeDB+SLVTq$n@j3tLYgHSeGDvASb3Bh9l3YhRz>{B>-0Z+P0gFTc_itaU*G%P4Wc5~ zy_sjd4~*RDeGkljyL2KPvd5#>Cw;f0o;Ge>aW`FgCa=d1HiZt-r=#o&xiQDP%P84VR^2^A6O?yyG zxiC;KBm+x*{lHe&1WkK@mqtwti}Ao*hHY3j9p`DIrym59npN4-t&ETIe#r)Y|{TJUsPk7joCXz)es1Cl6N&evha*1%zuZnf6&9fk+P8}Q?#gx(8-Db(OoE4 zw{>OI#dkPvHri!GFqk|bPCfZikSU2qIJ&q) z=%eBGlFc_`p_H~P#19uoH5WzqJp31!zRrfg6+zJ__`NvsQNdr5BZuFGr$?p2gA^8g zG^z>8#M2?jlQ$&71`LJqJ3mp7*fdAYnzL}A3#w-%1e0H;;^OY6_>N^v+)>V+;x>&S zoaZ|ncY>mY{gHkd;nLp_{a>3~Qtpf6q273ll{O^Lu zN5nW&1d7B;;-q%f(OWWBw-e703D@d7Am)PKvV*g7l@j!xv1cYGyg-8}HmB>zcw70I z!5{$*VE~2RJ7O^Lq2{!G9)Vc+^Bg8cK6``C%vof&(U^z%{(709PaTT`Qb+O0f8OV= z?SncW28Jv+;aD+@$tr>R1CA8@KT!swEklO}dDlrM=PP78zqE8Kz4rHS!GdZ6^}72S z@lmvO^a3kwu$<%rjL`r%YBd!naoW`LG~xqZ&vcDUCSF879=_lq26_TA&dd`Ibz7cE zaX2;y>$dgu9X=$DNDc3TfYB3V7bUPvKVctu-^egzCkyIlI@YW{6$)V2Zi0WtMqH8v z!9O?5UR-Kv655E~64G#z02i1TQ#zD?xtI;>$%(S!8~PNFXLBokMDafYC!camj=+$0eIC#&hB(`0AqZ!SKhe9p*#AB>M!xz=W4_%N`;0sQ z&fgp31Y>gYHl#%;=>$KY%?nkOlVk;g1G&h~F?aLx;mExVr@+C_xt2wEK9{G0D@^&j zm&eQ}dRbf-zo>+#qP4?Dg)QuJ2yQz1$u#+UGv%gmJBMwUu-m#bX5{3sR56goo~Nhu zu_xSHd;>AN{=93g7D=w2RNUY!98AZHlt+Wko^||Jf9LDX1{W@4oAHc30pUQ+x+M68 z7o<1xN4k%+BAWHL(ueIOT;R6g-b-RR^wi*^VcX#<0#yZ6Us>ZfDPrP~I=j=@Vg7ka z+c8{l8&gi(YC_sa&Y*{nGde~db_@mX1L>eh_HzX)ASA{%(mkUIJ&=fflUF~jMweu? z-%#zLP8%GdvD}U|WaBQcEwNlljQGx~Co|KFyG%>;ee~wxGB+M91Rwe69+|@T>Kj(c znG?%d4H&NDmY>lGK-Ej}VlIYjz*M-*d8NP9f3JnUjDJ35?Hf7gJ~U=C%rJQS6P)2} z@!mh*EwM&CLSr{GGw=rjUcx3kXArJOb}CKTx+oiW)?u`N=4t^cnU&@TZ8F_d{j?iN zTzK@G1ack%j}wcYD&pE*RiudzAf6&!7L;ig2FrvAy<2mbrbd*y7o6)qp=+5^c>!ul z^M{K>d<}#HyJ3pFAJR4K@DRwe_3;mh`9&l#ik(#ixZ=|R@GC}$Tbccf*U-tyUW$<7 z1XMU_?Y0c;Qe%oC|CA3!zsoipHA=60zRFY9sHVBLT7d{utHGu5X zBS*Gkago`3B1#0Rgp{oxX#Z|(UX{@Io4p_dYwPF`s4}GLc5rq~Z~f(%rOJ36jU-%a zoyKaN_YwZFlq?z=QXpio_`Y0;^XCnK!21lWA~?Op8>vAgpJYRDFe!vz`2j_BeV1tE z7H3q0Xf0;H{yo>}6iktUNwHo@|okR_srEBEV_u={SWK0up=#xM|&f zZK}n|!X>1Y-ms%9vO=?fv-z_Q!cdX%7X4%8TIbvw6 zG*Iu-zxgt@ht5bE#-`gIB>W&nhiAwYyEI{W=WxhU!vW~~hv~Hw?(WDr(5fa z4lHAoK(5`PdvH}M3Fe#6gPOsFgnP=V&PxfgI`d3x*Gf96!RRIz&E#PFNo;7vo<1G< zL1B3LM(tUj6ihgB3i1kq30l>$4i9Y@rH$eE7`Ry>^YMTBZL^+GP9RUbz~j-uodmc| zNSPI1_~;QAqY^YQIiF-fWdMZ>Xgo-=~HiEW*Wm8%@|t|Rd-ng| zd9Rt%XNImWyH<7U$|yjAj0K7ki?NkS!mCkfGwYDU9f_|ZUPrmL&_&$MK zeCROJE=w{n1pu>8A&{!(3#66?^F`_)NYqnDb};7bk@$MwoEAD|V<=v5>=lIRn*ShQ z^=l!japJ^?1@TA)NmyRFiooW2R=4CzSa2KJ7#m`&hF6eK3`SN@3jwS3B0RES8@jnMqNAkoJZOYbL>~ZbcX|kzZ~uiJuhR}= zAR!hfaRcBq&@?u)-iM^LKl|E8N-4$NKl|I(1I&Dp91Vy9$^GGlE`(Xx4o{Pxx;aKe zGivB*$N8-s{MX`d?9UHfIdDtSQ7G_7s-&t4Dj~ok5`}bmjVV(BgX4K>W?6S@_3anF zm=(ge6inq>5&~+%zW1Z%@sj3SvYo|Kd)X+g{RX$S&MWOdjx5cR@0V_cF~=jFrC% z><7pWqi|Q>zP>9DQEzB+TKi4oB#1>blW{le9|6s{syDF+M7mtOKiA>68{u>0CGk0+ zdm6C!TGOL&9VaJ{V(6#|cov8=6M>zHlLn5X%AMLyg31wk)~T^v<4V&ycCImH{Hk0C zm5T~w6>{shzsn-z80iD&~et`5uM;zrjX&T-<%-n$%qEE9!TeT zjEGk<1mi}|wxxxFdkCh=EJMIiQElOvMNH0Sd#B~hRz zaTypPiLjE&H-5N!)8s@La4M?5zsY`U6!O*K9dUK=c4d@Jf0emY(|)OKoAnyL%oyzm z1Ak+!JqLAX^#;{+%&cyDce95>CRlk(ocZ0)jZ7JmjFsfdNz7BkhraM>)u{~C&I?@s zl#L;^PvkV)aecg}HZJHpRav>dp{34G^>XYHwE80}yOajbTVjuMmPi4-Yyc@mw7n5C zl+wp+c#6rH!|BwMQb2qE;FjCfc@$q`zZvg}{+pz9j54X>zcIQ*nfIbt^2iS5zF39-yv~y*Hr*5lHn~0c(39 z7FSXc7Ns7VpGa|Geaf>MT+A$#@6?TsKd>6rhnPd(gtAQ{8Gi2fq(n?K&Qo;@kmpNM zeoH#r_h-zSw4Rp0$I~hp&z^>O?grv3s-~)dH3-Jo-sha=f4g!k2qch-q`+x5TO6y3 zRyqH$GnQzof6{cyRY;b?D!YXl?Jr7@6kYPsa?AJqzLzWi3ccmvE-O8Z24{dP<-yV| zD6w$X$F=HICrT`ygEKyiU!q4qf<&B2jV2~Pl4H~Gi?gs=usrt2YUM8?krreP*56o+ z1KOR_4CCF7GF!FW4u1^ARN53WVJtDQf<}K4wgyqgz;8~NRBJg-m+!KDAGv@rh72dF zx{(*64|O+Nu!d2xPhY&d=AEU9w&QwKtl9~cRPc$%{XB|Q^1Ft)%D*G#+2iP!Rw@Zv z@)Zq7I8!Ktq+05Gl(BwTNCqw-PkQu1K9J$fn++41h4VyIb2)SePsy|@`c48VD%oC zeQ=RU$oq$%XXICw+pjuqCP!!?_iiLj|1!!T#e`~#Xg&)4qL?(HD*Jo!5$z0e6v7EV zqDW;s-NxdOIZ*X#S(wCT$zCc~b`q}}yyJkg)g!&b*G@*;lp;9u_LIP_=ExBoncPeo z%qb}i*IabD9z4@5AKUc!^}92&CUMz!ANW=_Mlnp$0}S?T#rYVg@>a>QTRgnVm6scH4qx6~4+tu;eFk<;!+fAvd){G z#>t+8rl(%$4I#a!Ye_ZG(D4Rb=#uTlT{P@IFTw{HLSP#;qxiSmsh_ASq5nh?etwsO zltPKTgs`ywC!aa6P@hBvo@!5B#jZV0YTqP~s10KzIKY7?x z3B|1#u}w_UC|g3VvY%kq)JI#&S_gQG6atFc9`+@fv_3iz$El4Si#Kv-!(LMyienp? zN2#Z&d%EhtWt8E;24xopIi9DX*U=8x*DBxwTejRZG9zMH=FfCc*WZY+_@N{JXt7&n zA+$QJlTwORU5tNer{9Y>#GEo?*lu51YKG0A6ajV62Kq`$V3q0cnQVLsSIZvGAVP*a z`hah$4*y8p=}b(g5!NV8Jl{~(_ONXQm^@XXy31 z{?HVhp{UF(^i|Gz{Sc{Mi5KF}9UdHWT@KG9-!39q70oK*PRSP|!%Y+yCj^3U;@Q9n zS{zjU!YS%1363Q%*VvpVhiE-$*m>gz>_Rca!%O3^5bj>uhQ%?bvsgk^Co8SdV1ZW8r5 zNjl^WDtbioLl{U=TI^#IS<`V4c;$}qwVAP6A|-(#S2L_K!895d^?As1UcrO)7N{LP-CJMJD??uP6FYM{_`7wBW6r4eGq6Bf4DZ9J}RWw$@tK zKO2A-wN>mpdpD6Wi3NsQK)?E;NlB#)wtEapt#)LO^!q5MRYg^I03g!%UVzjLr zo5G05{?OlIF!E$fnM7a7p2Z=`8hBh?N#Nx8Xk-00VE2dY9*JRnougSWksw$}nDwt* z0(Nl;t@V4>g@B6kW!tkQT~VJ2vNBXlrpEpr6eb1(0YmaCC(+qw5kP@z1uz`Y1Xb{0 zu3Rf2cnIxV6~nR^+N*D*xO$;0UZ39>DQVWB^56|4UfBwEBbbR^=Yy@XS?zfCgSlC4 zh121_nJ^%PXe+zv<`sE-kXq60`(ma<4Q}pf4e!?IBpU&Rhs<~^{c2Q<-ywhEB6Vti zgPXaErYPx=R#^<2`!vFL*}J1emJ$)N0m%#jcYHZ-qO931>_N-4G^-j3N&-~Y{~pqY zO`kLjOCKR)Jzdqm2F4nW@Q6bw%!L>nj_xLsVvbV1ozSCIjE<6ZzK)ngZ8mXlMiQXR zO@nMTO9f!ymk4k;w$VEyvUP7I^avNcIRPXNFo|o+o~{&$*Msy!Sd`w~aR--G=k8B` z@Hb?ZRz9oPmB@pz0<`{|l9)}TmdG6%SU(DW>#-FDq33nR5{&r6KS3X8Md(7RrZuIV zC_FQA{N=iyaEW+8qR-}qjnMiN=qR2a^pn*9TXj6AcZ_(-egnZZaQN^!q$!8Re}VJ$ z@Aa}*4=KGT9L_@|FTD({gkF2QUe#g=*9)vBdQ_@PAdC{^jT=~?;Ry(2Pc)j(SX$h_1)#6qyufX&_j58p&;i&G7@mS_17Y7t{2Xhp}fsNUxaITlZ7Md{FLD!2a%$j*5v!xbNM;w40-G-d>;i>l` zSWDxkI7*1>a&f^natd8gRYrHRIvg#fsbR z5k=}bSs}bQdRdRZR{SVLStAIp$9Xx{*1oXdaw7NT#uT78qXFs9b*RcukG}rY%r>A0 z87mRTt1zhCae}%&Y_sparVeHlzHMCCEmB4(SkS{<@_qbFyA^?skJR|&k5Dv;uAJl+ zSF@|*5hd=AiSOGKDU^)rU&HwMGw*}a7#+5w!lpS6$H6HZpC&@c07pe~ZWkw6*0rDU z!CN8g?~-Ao?{-O^4qMEGxp5n%8{+>I=B}7Yx#jAj0jB}~XjxvAu7A~VSEP>!jt0J- zlbZBn#US6+FvQci91-lHX_7B&gLaJ@!m9?XB6E!K0ZpquA|io8Yup~MBQ>LpIxT-> zACPtOpNA5=cZO1E<6>}7sk|2xo0$^}0e4PQKgq)7-}wwvf$lBZcxC{x3?BiF{_YjT zPaces`&&UIu=tjbBQkVr6}~`6rff)@N+0(4^eFCto6>|N3Ox<^HIzR!^1j3qpP67M z9w`wglJYW&BO{V-Kp=7WYei<-l88yda-FumzVWMww$-C@;Q`jk?}7wT82SBZh3Qxt zbP|>LzOGX|`@b~wB}184gxoyQHBHvenaqPmMI~8&tFzG&!W2)9-<03o`|?MVp~D%; zV-Xz6SzF>Z>D8Iz{MYHp%Zz34e!s?$jLl83yIaj4d+vn_%F1-?8L7WGs}$N*7P&CY zuwbzjHwAJ-mR}ISv6Q@%Q_8gwO(n&aYM1*lVn~F=q=LU}-6VTU2v3Xkt6HH$d0@!9 z6_L-*@om1Qn@Y6QdN%{D(gBDB5C6B~T{Z-tBo~GTKML9K+xH<#un8PJ{&wk9$axIf zm_G&P?sKIpJRt_i9yhdI=mRMaLVyzGr2Vd-#JI*RGGo#%)zhzl?vEU!#;-tBN3Q(G zd7l&t>#v9|<9*?P)7TFIc%+aRp~~nP__J150th|i0d_8m$XYe91zs(@@6uCIWT0qx zn-vQ%ym&c`MhsbOb#Q4L+zsS2CWlx(6N@o>mM|^xz2b&WGA(|SV)C02&sQKd5q;t% z0}qg(Cq?jpnR$QRAk#M%{8LSXf4i}%%{q|md8Nj$CabfxvDwxSFf(w92UFr^8R%b! z8uzGvZgoaKe{b%=J6e%_*Y7ddwMv(KZ{qYb^6Mu)Qw+0bw;>N#YFo==IKVE{&o=>h z6EIWw+t|x^UP1B6{`F-8s(r~Wx0&hfsZ`E@1jBllH1!QI8UE*!i(lw#yx>|kYfdq{ zyaD~viNCq%NFl(n``;TBFYxW3M0S{R^wR15%hCmIf?H(8n{7SgKF|7x&3r!%R6PHo-%E8G)}P};JL|C+cP9lvhpX6JOm zveECR=`kcK68Xzu%6mtB6&hBrg9OdrK$K+~D)|3&#(c!!>$%DFB#Gw-I@yu z`}grQ0T;NeE!Qi`Btq(4!xDfUL!6H~kn%1pURXt=(tdv=DbvGxxm9SJVZw1CN&p_| z3HPP)7t4`=Pk-_i35jqRwX`mpr+PrDt!6BmZaXaz?Og;3IMhb0k_XMTS8YO z0U8dJh@I^hpx&XO+Myv%;1D0U2Kh;+n~$+o`W!B6ECr6b5VSZR$LBU3J~mF_W!gOp zM{X5ndq)Y=pF0&1^QBf>w*Am<9*e_gm5z89mGC`U@G0mQJvUr^$DAP@?p4R*eO)TW zkD=s}gZm*_Th@GM7bPHV^ek zKWBdb5T=m%-nqaB=XLWJiG0Cg9Wk`ImG}7AG-*RT8J0)rm^&9M*wjs8MKi8GcRIz7 zTcgpVS?$=N<&)jmRvgE)NnuSR^1(O;zM--;CO#?yn>`1jOx&*B$d*vas;18Kg#o14 zaRxP*K!*JFNKdD$&yU3%^XLdgjN-}Ba83Ysu9D<8u= z5eB{xQe=bErB>;(*Eth=1$jN(!44YU1`F-Za;aPu4$vVR)MI?KxIddT{kWGhr}MygA)}t@Bd{p1!6L zv26N%!xCY6j5C;9 zSQ?9?c$YgFXk>pPvN^NC#NRd^c=&L=RC3)~!xWAj63nvzp|OmJ07C*ETz^fJAM$=f1!er!)|igk*eLJ?>kdD#8KL;j zvKtj7RZu2K-GpN$*%_Owe4wE*d*uPQsO_z?1#H}`gYU=k=}d)x7#^IrAHe#HQ`wFo(mze5fWghr}aL&&sDn#2xFcv*&E?`IMNVw^RB1Itoo=-?u z0!f|8W?BK^o|uD|nRJ4+a8jhtYW=T=8r}*WY`J}N7hQh$LasWn9E2y;$m9p;0Pbm{ zOOo|*&3C%4v4#017mu~W|XinyQKYlK+KOc8ihHo+Pb+pG=9I^dq4=553Pfk?C*uUiN!jn_ zHvf; zTawb;X3}vqPw8GmemSKp`C~dz$w6jetplnvTj_B3auP5&%@~N|0wCtZjd)T}t5)t8 zxnL{n>*`Md9^@)!U7WUGA6ZFZRfS#|d@3cHQU)#qw?k`%$Afy`x*!LpMThLaUr;;YVrNZh`7UB z%$AM+o?)eEF-XKyW{Z?eT&TqGSU)?91r>)NQV32Hk_$s13q2jK2ic70vE$o^^MsL3 zWOSkrWgiFJ(NTY=2gJHY-fQbez5RuHjzG-pTZ>uKeRsN++o9xJV%)1o6MlIuh-^LVc}L0SIwN64DXP zgCk9bE2eW}^~hXe(EW-ImsllIZZ+o!!z!cDz@wFF8%DTr+GdeFj4!GcjzaZ==cn7f z%T2muU3+f>i*FuCW`u+Cdr8FV!N{jM%KJ!g{{tQPJPLlJNjYTfQB%EI9xHkJw$)3x zczi>P+kBCR`BB}M+zZG~!o?{+*O-cNvc2Exx^(1+8kqf<`9&=$?ibf#0r-mKJtN|9 z*dRKLt10o{x%R? z$Kb7LAG>n>_8e=NP`8a6X+b2n4)vq^HZyty_ z9b(@j5AmznX0fy*(S=oP6Ni9rUzSzQL+R)N%Ezq}2*rf2D&AbHW6R+Q7;eU5M+|yd z1fB65yM3)ve!((%U@zzjfgu)j={&pBnxBz=p%;$Rpk!0rpX73G=1(t@ zpC*Mz*ks0}zf2vfnHYCQAPrGcUKkh&Bk*c0X0zHVq6?iqg)uTjpCrXbd45a=GFy!5 zhXg2VJpX$sB=7;w|ACLBcCZd-26QXq(zOw$Z2LX2E@x!;g0)&qv&rGm1bZm$GF?K2 zRYwBjHEtvi(W3S**cIud$Mi9OZwtQKhG|m{q8&d}+l)N|>cWHoVQKutE4!AEOmpY@ zPf?0mSdOAhrfYQX+28sx^E%%#77pOX0Ld5=lI(dCQHv7K;#peEq&Gnk)vPj9xLRFJ zZr0IyoRj4Emv<)0T!p=$f}sqW@;pjLO$0|m4?EqF0>oL`Y3Pv73nVrcJ4aJ2r*SW@ z!L;qDKlcMsvSl`6ULi`HX{YiPfP5qBu620?GM*8gPeNZFB8dV`%ul7iI8fBxmrFlKlJKLR{b9C;G&|pq%(BOj@T<6Npq(om z7o<7K1QdH0ix-U6&9=u23sa_SMP*5`>a_-{$Ab%=Z#Xa`JY%8!<`q~OwW{uJL^;QE zSZ~Y7cVBUCig;!8+EdySD75gO(MU_P){zk-ypbI3-YPI!$CqL~gojFNwH$goK53JSB)Y;W6D|i zhk+(0mmU?1zJuazgLVlB`+hS0*x8G+abp&hJ z+a7KoKN+hIuJ#l-?a2&>)5QMb=N{=$fCr0`0bW7=t2-=gRj>sEm~yzd`09p#H~I7# zp!n@p?U2 z&3W(K%(d*VjLo^*O^m>NdUy0?uHEpyEu~J!wPLQ?^RkC%aK?HN%CGwCCePbV%`{_w z1qNrvxhlKua5u)C+clr@@4n+y!c7Wa&^g$6Gl^yNE)l8G*z66)W2egnLbY{;@r@(c zUg9qeB!XRzY~RmLF3oYUvhiNJs=xxfsCi)2Phh=B1{tydMim2oBHUfRJd6)F=WbxGCgiLLtpgWH2@t-%gCIx1XgrL9q zyggN&5k@o%c>#*nAE3b(2>w-P{7a`nNA{xp`bRPKuYUnLk^d-0Uj6e%40wQsS$U#+ zfsCJMtu=cIuwsjOr6lyXHXzbZ%WV8b2m7 zrU#b5=_;b!6>t??B~x<++NS?qjP|Zsp9)b5x9S}S(kuU zd-8S?|1rNHWGJ)!TOSB;IQ~cFg*o(9y;K#uZ~L--iHRKoAlP3$lppB)NiutDmomHU z$>*haf5+x$B*pq%<@$ESn(`Cjqj3~+RBCGKtqpKXb?q7=>@_r#NX1+Ka?lsUqfgsp zP*St(?95QJAum4dd3hwW`{^~E4#%zf^^8Yr?czp(&T-{vcoL&5^RnlKrsb~zbz~f- zxn|qvl@;(9f&_O-!Ox#fTR#9l;8P!@V4r$*?H%KEmEw}GZx{*{vK!scfh>J4e|l~> zt)6$Cdg?gqYnin^vU!fYk35n_jZ-@_>mAW+QXw*0FJQ{d)ays)HLcci27;a(UEtMB z|Ik@p8jJO^O;6LAwq4}3g?ukta4Gu8_L6QLL+)1M#SsTejP)xfBX@DB?M+wq^Qz$U z=JB)OvPOcd*RiCKD#Hv2vHDG>1R><6E{LV^fxcbbU`ElbcZ!h8 zcb~=Q9G*zrJ7BWs$>T=U0UJ%=u3Hs|MUvKL8p)U8qq^{1Gum#F&S;IO{RL1eegVJS zp}s|s1}IbE$bzEsOLTKPVP%;EW(1i&mbs_~t1Vh!Oa&lr?P>ynWbz+1_1B}BQ`_yT zE|+~*VhDtcnA#t^vLC}_UH{zsS*zfs0fD+DE_TX$#-b1Q_Z<)Ctfp<3YfVdujApW0 zeY7$flwEt^T6RQifR*fmnsVbnT`8r!9m(Pjab`--F*?A3(IGE)s1Lj%pj>HAdmeVv zd6ag(h~?*ejo!HeAa=)Hy4q%Ubvjr)uV1wg=T8n?bhjjlPx`l;awD9DFf-XVk>CJC z;isK9Qx##VG;hqMH3a@sCnXE^lBEmlX!n} zlKa2FGy9$tnZk-F8|)I7^9}Nj&QTgybzKrjY?}GBQNSahth{t{!MLT=s$)u`jZNoH z^ZamZ3URGtj>_f*v-m!xx>m|UENN8uhIq}hA!*`ex7S_)_Kp_Lq9o` z!qvM6O7F*rkf{Z2*BGvwEi{=Qw|#r4l+&!9$Ha5?OtzfL0~1Ed;Pf&uVEost;sH_g zlP#oOmi+_my}rHiUGx4~SD(!iFcvrUQ~ERUTtY^}+R#$#J>!mhGDZZG3{l2tkG#$r zLJte^k7e3h=1gY66GWQkM-9Uf3ie@R7r)*L#5`{ z)_*7y+gn9E;K8~7 z>M(24!(<;~jb<MLGK#cbyjr{|8}{ZEj#PH%-{5~{Yl^lJly4qOO|&6T9!JRYa#Kq#}5B!D@swT?~c>Y`t~yZT!fyv%p;~l zgn~!6=}sIfmKHH`a`H8P8Bp#S^IK4nmsPDm1SY3@FPCK)$>#)oncP=7(A`B`t zlB|1XI>W)?$#>otlI<KeTyGLfB}(5$ymhFSxMq@%Q@QUKF?{Hzn=VIG5;wQX zS5fC9NuE*rq50_$pTy}X0S^B0NyET(eU(B|T~)%MmQC!1FBl61*taoX#(k@xZMLI} z*rH0b1R1XzjNf)Pd-aL{*iIQx6`X1vBpZ?Vxk|g{^h09D27<(*&y2S)Hlp=OHFDe>BTfja^;+WGr61`MUJVkFa<|*QEUL0r;^L+vAmd99`7$)3 ziU|{}Z_rbM+87Z_rhrs}y!&-D+sI(}%9bN%Yf!c#iecWdXK3!L=NIq*8Wd?jtgR+e zZbdS{;P0Akp2nJeA^(g=`SrX-h_b!fU3a#U@nNvYGvGLggR-O4xah=Z%rwBbMr4Vn z=zH>|q^O9^Z1p=;$#b#mEk3|WhLsz_J4wp0oBV|z0n$!0_9cS1DD zmcXAVKS9?aSKzY645 zFa#7^TCt=eNZf``7N1W8Eqr-dbO1|iK)_kVlc%VO7K^jCumkmyW1wKXEXM&hS`FkI zc;TGnFMhq`xG#TyF^ddX4g=Fc769M@@bEv6|CUW*2MYTkgdo5H+#&2Af&L=b(f|Gg zp1u6|`!n{X(Eq3G08sdEv;TLalmT>l|Ej98E_c7*JgfZ}BB?s%YNEQ z;PxrFS;BqgWK4O1+;lW|i$w@*!xJY$80PPXz1e9_AaY=3_ z5PF_Emh_E7#X$KV4fgHUZ28QZe_ws)(xBytQ?v=qZ?lHY@87Tz{`9u|Pi66UhdPPw zmgih_27?;F-_Z7gEpvSg5>J^nFZjzwE2pbBF><2){s&5`fyjfOmU3>WgJH zPSmp3L{Qe%6)o`TFf{rj5no!|VdftokLLGJVjSB;GwrLFs<-@OwvDFuBe&s6^eZXN z;L|Op1;wk-Tq!=j=DJcKiqBjXvF90{?{nK-zU#5TH<(5u%k4XzIIl=`u1ow@_D_2# znX5}Mp$@IV-vY^Li1y1pNouh)Yn>Xk^PFugtn8WQb;fcpOdRm3IUKKA5aSDr%gZpS z9+@JVon5XiXcRQgHA81xtP9)fetcKq{#eibG~GO>ICFY2FtzUl4FLXbJxp$iuc*!8 zk!d5UhWIf-4A{C<+{BG+kbrvHzB`^&w+FpI>OM)sJo znLpis2sPodcCU&-;ee<0bY}C66VH#*PadM|d%Mt1BDsP{HQ5z1_k82(`N(V5X@Zhe zp`E@0xv2Mj)EJfy1N({5Uxvz8y2c^IUd5b=o6YjY_nWZe1+amP`{Sr&lNevViniZ> zAd_GndPwc+MF{aMkoF;!|Aibbvlj%m14|d#o&U^){1WndVBF%u6z6H@B!p0A!$#tA z2$JyOz4vk&5$%wOSh+xufTHCGarmx|2fYi}^DcG|l28#LVW@~gpn+r}qKo6~;4X=F1H7Xg+RAuYxajBD;+0dEEa zhXy~;O-Lg_vqxCY#A9+lBCv}Qp~ziiK0b*T84hj`e$tvH{5rDz_U8TIwe@K%de4IE z;V=0xaciG~2zl!Gel=5s9`uNpNdh_!d_`f?HThj`JOc%>KvlGRYoh{XL%CL2WO4k| zwQ<8>p%SuwIfI44A%1(KdZR(Ujj;^bFmJzW4afn~wYYo$Cnv1B8H2F6L*3Yzv)Q-- z%Fb4biO0&UjF9DL4%6*(r4|UtY3&YB{zO5JyO{QX)$dHp1KTiQdiER6Si*a}N>=gB zX>I(ce^2MU$KUCc4FRJ-et+g+iD9u`surLLAglbWM8k|mf5>g2sl?~8D3-{qSV(iq3_bB>B z;Gp6}CK~KL3&6$4I}~_!^4Pe6{}qJ~2ztG);~=o{j=9pz7im zjzL0FVqMynX7%Zinu2dqLc-o?Qu^1g;fF{IM(iMC1c@jVg=fndHccED`IYi+1i0;l z28GIS6uTHi8OW=rwQnXMES4a{+wr>edT+xYDmcm4PhGuFarrk$e~`(Iz5$)RY0Z0z zokf(&XPEhc!zaB%*xofkf%_esp?wSkWxwR%jk@r5%}<6Xgf2{0-=L1ZSyyQtQ?4qY zll>+LAvl4p@KKC9t%iRJh%{^$*V>;e7Cw}els|oLK5D=HeD4h(?K3&Mb(LJ9zuad2 z{C)GY%K@+5F(h|>ew3YW<~+H==Xq42s3EV`U;R((bBuqh*RVv-6~OI|7hAJO&mKbq z3P%mF-`4dtayr&*e&+tUzmyG$SZZ;X+yVk$+&)C33OE;P8{xCr(3hpKT1V*_I(S^I zQNc8PtE9~q)^dl1D=PT;j@IM$Za8>w2J=H)R9SiX?M`w@4I>a62-Wv;%i0^?48TY^ z#>3#e)>IgfXi##4LOp-C76v<|j$&o?7#^+T&{yj%!)-tN!a;J8_l*M!3!B0&oQPUDn+U_*=%CW zV05!~yyP|kS7I7SbF8?LTGinrG<(fs0Aj4gAZDFB}^KPMY)}`r_fLrYRmT-?z;Ugo# zs#-8ABmL@2N5JD4R$(HC`O|kRbQD9=ucnH{jDb8{@hKr8a^>U}tCko-Q ztwYZX-4^$2K|BcS_|3c=lnN>F3#-M)gFp#VnyvHLcYHQYC5GIDt0JspCa4t3%)!#V z4$xW?_ar-F95jTkdg}AGgBabapc?m@_<`LFop}dPYCj+Q;02D1UoKAsF$clvV6d*wG?h7EcOdR7CoJ`b5QL&}xVD?7){o#dc zcl4o16Eh5W0cG{^AC1UrO*ZRE)Do;>*|Cr(n9x8K?N~Sn$Ti-lbeYxj{0K%IM3yl%lNb1w#(U1Awhnv}|-HUn$NJoJZgK4r*`lbxXL$MBF5saEeuTEUMu119Cy} zT;urfjvs+pYo9t6_xyuu}FI_sagAmU?`)WGBweTg`R<70wr#3Ee?o*YyzTK zj~lPPVg6jZ(z=NXq>B`RR_ly_d&d`GSZP1kzfR`8O*_ULahM@)yVT~$4+-c>20kF_|k1kt(-2tCC7cioT~$&4N1?{tlKOMZRlJg7b9Tf(ud$c2~Bt##ZjU(;n~75 z8-wu4*eorcMVsmVL#f5;+9ods%9{dVRz{X_G9dDybLxER0u3q%+R6x&Yi8;FadE02 zfx0a{zHm6gFlpcG$@!J*obMiB3a0=WnTV-F&woK5IvBiwRZ~4=X@|Di*xl*$3*z@O z=dYG>Fpir1?Vk8qv2Jsa z=Ez)H=MZjGE5>U6V^g~DRAviu3O@H0zzz(<#S276<=K!rM)r6gI+8; zD}%D2Myi$+A)r|%#&FV$%eUxpuV?=UP$~b(B&d-hbbjdn^gKqB(K!&7Yf{X!b7Cxo z(=^sMDJa&U+8`~?>T=)QPT1{JXFpzSUL7}45}w(8U7tD$EbsRm3}s zX79xWa~ z?KQ^bo<+}tVm_1gOUxy<(e@J~P72dYCKqu8q0qn zEr+E+LV*kIHJj_ln&o?HdZk*VGj1}yS`Q%o1RMfo@PZ^F2tLPO3#4jx-e(+z`2Q>%G$$Rr0ZgbbT#w0cl%hGo>P}t?lGGaHn}Dm$oLz>rgaB zZ{j>}oXt~7CfnIGzWW<8%I1WGLm@C!y(`k^t-|u`htr?*)J3Yb_*D37_9VN4jZq!< zd|d9V4g1rt*;?f3N+vJ3%tDf)crZ(_K*1)-y=rJe-PgzKMbCCWx~mx6UrTVmS1aI& zFsxa}>gyomW*M>1Q~LuE;}I#vVtd$>A{a<&AQ;QJS*9NP$I0&6z%%AWh1%OeVaWrW z0Do6IkHqZfqtTmR2g1Bn1{z$y4#pHL5^4Q|Fo+Kv=9r>Kd$51SHoGF?`Fr%oeC#?U zWI|;0%#gv5OPI%~U<}SIKR+#n(p~eUXw@%yxb^G8#77;7@YsjKY>_4SK%f*D$kQ#k@P(7F;JE#&SL3n5DGTlyj3pNFSQBR#$3Cd+-?(t%Qp4I2UP&^ zM?Za<3kG1PA#at}UphpAD@c7ik9y8y^rbSNO}TcM+@6A3sS@gGa2bKx-;}GinAmN{ zaEoOXRh^yP_chan~W>ppT$L)i8HI zdJ*IE5LLO-0v;^?`LQXgWP`(2T#SO@5W8a@C$J$j2=eLx17g8YoiwD=?c-tAs@}z) z##V-P`*{=LGX~0L)1}v{Z4!f!`v7_lho{mACcer~l&G$=o>Ll^CFfCZW({Sc{rKlP zD?4%4A1YVfO|VMe?ar)K*Qs5~#aMG(_L@a$8tdGW$dv5A+<552Ze#~!b&D2~4Bx0L zz3RQ>{`1}J1haD?Jos^6h!~yUy=Kb)w6=PFH;Ika2Zpsb$9L=?K$h9ysF#lJ3QJ90 zvZzppHuXe+8PN0bmi1m9&t&Wu2q80|D`5NP*3M&AyCbN!oZ4GAWNd*qQK}MFEj4I{y_PIfPlgaBE?w}WBN|r z!|3(Yo={#69tG}n>27H0Y}Z0G7+u$A9PFgvp98>nW1OKJf7Hy9F|-6)hNDnU7PtnP z^DrV@z7&iIlHDKM5gFyQG z7$|nEV0iAjjEUK3g3cC)#bRHiXwl1M-pwHk-T_!u43wb!a-ErT50L7*svFHopX2(J zo=Biq1~PDFP)Em z$KGaMQ>s=2cXb6WQ-;U(ijxrmjt?uEMmc}#(-+=Nfn|XE4hi;+vu3@Aby(F}zF$>@ zV-oI!L#KOwURBh!JIyCp;AqC4iA5!yoH(`Ez`LF2Zr@j4#Zcgub3csvKr^2F1tyO` ztpu=H-;;IHYy}g(`9E#FbyQT{_dkwGIkeQ!-5^7Q64KobA_GX5G)l?PFm$(cOE-c; zcS<)B($XQq_wqc?=e^c%t>5{Fnc>ddd-mD!+UM*5GiUZ_&@I0F=r{Gf{e0T7aBryO z`=yzxaAMRaYpB{Q-c?oSLmEt0AtJ5-wUlsZ)aw(1bR&Z* z>fDpymbR+_tmQ(t#BGD}-srnUi<|MhC{=XStL!zrX>Ej;>+nL?q5$)EnsxGON(5w< z3-yj}?^b+gdm~jh3WH2LKM6Vi*ELTVbkarPHu@8WEgoFofQg@6Cx?Si@2D6 zRIc4zid9zn4EPW}KwQooh-0zd;p8j(%dUy@xPV-GmmDLs5y2f-_h?QhU%FBkdfBmk z%@90E=PzAf^B@u7a*UX9v(UFTZ#BFonG?AZDOMb96(0vb`*}GV9bS|$ze#zs3@>uB zxNPRtytrh}2l`+X6aZPW6X@zlf1;qgz7p+M@y2IDUyXQWAZby2N%;$h2Bq6mkyyex z{zkn*5m1O(6>Ha=T-MDB>2vX9*sNrQFn7OUiOLtDTZexA;fWZ2Od93(Z!{_5CTV-@ zZ-PTF3W6^5V$ov`%of?tFw7+&g&6A73I|LswSlG2?=Ghw9$L-s4s*}*Pl#SefK`$|8kOrH~ePt+PG@9Z{FX3QA5!?v@^O_ z#4LpG?>1)F`ZyS|mJ?ti%?O2(M6izc(#z<(d?i!$$w=h(D@vx9@V_xYj~>srNAJC` zfELcuR#oFE(WNB)H)J4ms&4G5M%3V3rYi3$Z4F9&r|;j7V6yqf`pehd(O;QoYU{L| z#O95W=?Ze65Gx~|9#DnKS&{!VV~XwQd*}G-<(|er{6pEWl8NW@HXh+nh-RK8!Ip}P_pexSB=r|C_Uq%h5h*&{ZyZKm zYPzP#mf0RoBFP!$P8VD-n%XV}WV2kI7v7_FvogzigUL#7hUCNO`$nC$+tFpf-OY;x z4zXt5Xi02RXt+y-F-YVvVTTWB?;y5`wRFgu&!x>Z2oWi+y^-7+02kz|xT@S*)`URx zuXp3=+{e&S?+xQ^_UlY*iv9wO^a>Ta&OsYM2_LWdHO#2*_+b}D9N!$qT+1bsD&`>q zqnRB}u|6#&rv^*ZX+<29FgE^wSKH9%pgIEf6bd-beCL|Q*$WN_<>-v_o^#U+-^^MS zUn5(_>5ScWRB`SBfMG`<$!r8)H4h+1ZOnUr#3TUAB& z?vWy!8JPF!P}ocOzi$i^>C5okYhWick-1;nc}TIf8zMc0y6fS=onEB{#lJzG#3PCb zuKO4&l+W=kx*7WWeMt^iet@{*+2A|{?1YuEreb)=VXO2#O$oL23k3AeaWkbVMT8El z)xu%U-bfWvp4UN%C`QX|{4#Aig+Q;^PRim=ngQnxXSY%!euoZV4QRI!Nc0M8;laVL z;@)SvUw&lDbk||$$tstDL;@{6{vD(Uxc5Q5;=cOev)T8NbBpyUY*I4Fd2Y&NlP>wH zGH}(yj}^%_38qvsA$QnqOR5#d<%}+c2k3|o7fm2}Ht+*=_DiB5_#1bZ{@6a6JE$nh zcEGF*HKDgjDVN1bn$|~TMEds#gW@LodZQp{lMm9{((<8`I6Kx18dEuWDk~DDDK-ConB1JH` zC~=;*eh?biCcs*<9`tzy6>R>u`3yanWo@~b$!IG$tV{>l%)#2V|7mTCE?tTYgyX+q zSb&E)K(HYx+{O{gGl`1b4UL_6UwG=bnoVxikW&F5t65}xm&0ybIz@gPW;r4SBk(M2s;+(1#O&p2A$GFwLFv2#La z73KTlnA4ibY);SN8iOb?d?c@lusgHl1cnIXiBV;&^D7X%)3-(e&^h#1wNy%&I#Ezin?b0v_9AJ5d7zom1YUz2xig^$St(wj=bcL-z6x4}p zk*KT8FM`oK2`|MCDfA-WJK4Kv9#n2r?HAH%WT?!c&pwU#{GDA~q%tFu7CezvHu@&# zd!BpQJRDb``x)3)qm3^BDy2wp35w>o&{v~{k#vAqVO-|yDw1zuNw{yg4-!Z<{scgO zPv%y4dO3fF9thhcInfnIi3hWdAmx>dc@QDMH^pLR^C^{jG41bJVe%~1@4OBHO%i6_ zaI$V{#1$3^B}KH2{bQ&eZ51Y2uxpCRQ(_9-&g&xazwWbkXYBO2a5W_Is)N2>?`}za zjd@*^Mt85!)r<(M@grn}X8=&?99@r|LYrfIki_xxi)o3sZ|v33@;^xFlReSD@BlSr6B>j;wa=O zIOd43u!tidK*nU`Zo~}vnXFm$bgK;Evqudsk8CFD_*`*W?(1eVA)@K;dF1cnO=X@p zkZ1ls1RmjlX!8FI6{$hO%Tn?uW_D&#V7pl)k_A)(k>_OxftsUwpK9Z!C0uBg#4{-N zWW|j4(q`_y)r}31NPtT4 z)y>G|U}X_uoDMXl`0htJN3@h+qqr2LMR$6(`d5F5{Pcx=s8Ol86;phtRnSYO zgqsB`!nMRVFfygLC0GcDxGx0m1PJ0$?pU2|7kNrF`ci8C5r;hXg!*b53)}=XCiRE% zAMc8?M2PbchTSYc(_H!&C&=DTuwWF8}cHa@*HxlSY)tRNh&UM6e#wurnWxA zMlzuWeSdgJF7$na`Ad^rOSqy2U&?Uth-2k&rT%CyP7y)ipucIu`&x@>s!bT2b9NS} z|1s#E&|Ued%}i;^VQZnwroILoliKpY1V4e>AD;`xgn=}{YpA$}Hdm)u#X+#uAmtut zX8aj3w;4tAeRt!|s#AmYr}IX0Zq;1hGF4Nc=0{nXxcQ3%Jl(_CUz)fn*vh3yVhQqB zwGM4d)9z+FFI^YWpE8HvcihUGTVOMFat9C8`IJ@g4-cqpW#t(XB)lH26@jlJo55n~ z<+%~A(U(G-Z!^2sueg|>Uj9I z+c##sNA_{-`TuVH1PKb`LdeC@r$T|~3ViruiTnX%7n=Xyk2R5y{`V*tPyTncCei;s z1|uVwH?8x9 zmX1@yQvy@F6J=o`oJ^F$US2yVwm?_01Q9eB@*TC&iHv70LM1Nmch($mPRM^9uD2hL zuU^Hh{SLwZmy|$wc_(oHl9!lBP}ewr;rOtwaVY)Ss{Z~i3 z@=C|@uN54XT8>g;w^YECZAev1qn#fU^1TqB8 z+%p6}-hEQdO|Gn~kZ)b)paOs;|sN7Ep z1d!;Fh*-(KJM7>qmMG?oHDwDqF2F+_#UV1*ZM252c_(Sq3oqrh`%=so!uT1&WRUCEXnC)s zmqD-l)hgpC@)|3%O-yFq!mD978Wbqc{v(1}DO64a0x1N^bO{efbVmI4n|u~6#>CeZ z4Z=120u_DjzOf>kwO#x$#Opm=ck}xY!jkg+J{foww zvp&|%gJuIOfx917%B9Q`n`-;xYSE%+lR!caeT6e$?#Yc(P%YlY&94*u^^C(1u_405 zd)#-ge)!U}MF8wID~AcNwctOjp##aU)`grAb4<&rKHtfuc?&iqVgt+Ul2-PH#V1>T zFdfN1o>sy#5+HzgZer7+O{nDvr`^XFTE6oQXmuAsacTHD_*qB})E>>2?c+D8$t5?_ zhJ)4LwdfM295u)cCe7}$!rg-OGNKj5&!l0<^Zu~M{}B!AcyYxf^4Wt>Hn2yp;8;Ql zz89(ZTvlPV8x%~`udR$`3yKrP_(dk2gDt;JJL}l>R{?+M)>%V7G2B)*_WD|JAV}%9 zw@MkroYRu*`!myewO*zK3Uqe@z=I5I6~f+mM1saZL+-45lE!@)c!1jA|= zgqRGQ5u2ye`&~^D5An=~A5j8~zjGsd{GKRky>TC0oy%_Ff3^Jmqe!&rHcVm6Ql-v&b=9TnzUv#C z7m(VU%cG|93g^uDe*bHT#5O`w)|LLuSb_|7u_v}=*;c?oo^ZHI`SxUVIZe2yoT?W_ zpmZDUF12Nxqa)?2U( z$mXvJ4LFpQxX(2&V?};xeHzIorKt!eoBoDUzBE9q=S+C&M#aFc#_#0V9jjhCuITbN zi2~8^+Hl2?4%?_knOe*iEov~jC_wJT209nj27O+T&J?EPadY`7{IV~s3mGyz( z-3F0tDg{k^>TCVyfWmsh_NZNfSrG zacleQc3HihRaPv%c}>TG^AJoWU^oBOj5lU`QZ_n!m<1e8aEGBmO{{hCd%|qp&RTEA zuYHU1G}S#Pwj+&~!a!FCQj$NegtpCxSq7~$EjZfRBxPkzDO_zbMUiCBdMnD~Fe!u7 zX6PBQkt3&9HO}twdnrh;{&xvTzt{k=3phM zHL9}BFWz2Q>Pvl)XNzJ<#U61 z$aNsbb+E^DH#i9$iew85A*S0bL4Xh1f=d_@^W9LlzfCQa6}~x?T-3=9-qvJRfy7hP zpi2}4-t8MDgjTG}AhkP_L0+SCB z2wa$!sQseloJe@EMIMET_>8hcPl~;t|076lVZWsfCgi@MC3t#1k8Qp^!)#4JX6 zq+c#Q>B`iwKWY#RSPSFYf1Y%B&J4xH`YDGL==E;Zg9^VhdY98TJxCp@UqO-iVDzS} z7GQ?N_Uu%;~K^d@hnOa+%3WA033FnqOsbkiqC#CH`4bDM57VwYn7mS~AQG$~x zeYOksK!qO#zQSM#b~#A`YLgtFrpeFTx1XssJ7afc)PdSNSbPU8H5FAel^_ z9#Lg_&43VQ;Y@FwBm9XIVXDt8C2FftIGR>@n5v0_5B)1AxD5bFt?h`) z4t#EstC~osP)C>qC{-$Z`j-fNQr=EV#PuRVm|^{{LLE}~MlYpH3)?_O6z1QeAdQo6 zS)&pngF%r8707;T_ChTiA0e#vWd5*_v1$3KkFgOZv?v-v=|h`mb1tRvOAT@`OrG@ioLRQcY}L z+=qG>9)3{j&wpmArhCvp+=QPJ{%QwIRFcZ~yFms7(EXYs^MD-@BUf+9vapHp>r( zIzl*OIx`Cawrx4=Ko0*zwr2f1=P%Dgr0H`qU2#NU%~tMu;e_5sX0v(TMt50rkex|` z)=T-7=faBQLAng%v47u%@ot{!)1wX}ffir>%rtIa)zYZD%K8jEW z;@^jc6Jnmc-e*nODx0;%q$&&HD?rqnZK4EAQ=yQtUT?S2ggiFIun~Gp}E1Y6lv2i zJImm(96Uids=A7rm^A_6x!Na*7LpSyt5mH@NGePSkDOEXvoP&DRUPbww}}#}@Rdk5 zHOK*F=1}sb=|oH^(MFZkRBlEUbPq%rje=Y4JjsPaWoQt$SkYDN_A)7ayP`X}(7h=x zLQ--!N>OQm#X&>7V=_OzYMC!ct0S?51s^S>CTKBpzZeLR!t&8O^N_&+mJ8be0sluj zt6?@~H&K@Gh%UnC+N1oH2A38V1%97^JRy9T+5?S4TMe~DU{vV9|4sB+3I4Isguu{s#y7L8yalDMPvh!v!-eK+dmFrPz|ItT}eRMBRQUAqyVWrNSY~ijHNihzkMfL80|Nbb0&FR!2074|aHfCW>LK1*g~9N2 zAc_BYk%X87|J=HHo?uwF;$H{0_YEROCLj8eUlAcVQwZRe^c@<}G|=`2I^qAWAq5-) z5C|236|gcQMrQB}<2_O>Nc#QSS#xDp@+jq~!_&tHq5Rk!LLJ?st_CqiSG8ZG$r6B| zrwoF&_W>exKY}712)&$ubU5KKpy0Oy{QgEQHI7ME{xx&Qe|(nT{X-(iAKCde5pUyQ z@{N*l{?#yR{>SN_6w3Y7M0oS>^0zw`5(SH4t`xJy0pGYrjF`Q=;H0OFz?Vg6tz!Q> zJ1&7#7)_!!B;OfS=+O-Vtn%`{?~RN1Zrg7BKVxd=CHd+UGRl6*GV}HtZQ>Sh(27v?;^! zBJ=m=fTrb`yVic>-F+Ij{jJ}U^Pk|zbeAHmt<6SV3pkfqUmzgzln2X~x(|OW?ne(d zA4hjy4B7@(A(XqRgg|MIqo%U*;qK;)*Naslt@Gq3)BSOyx1n4-qpJ4(p~rHWx6uS# zV1bAOz@znEV^})$uU5(`J1!JEE)8F;lR18ikIc}0=Ot-*eE@`&`t4l({m_56-{JDR zp9~EUH2{J`GGIbu9_==J-oKRojM$lEJdOinPXhjZHiR~cOFQ83mqG&xm85yCl%{b0 zUaPLU?}$+Oom$U8WTPpjtXDI6rEfA;K^AwlRfi(Wg+{IJt5E6N#)mfTA{!~h9fIm1 zXcXdSk`55mVuLMZBeYEeQUlp-|M9_%ajjse8a9F7(fJn42wi>e^zZF6MEib5hd}X@ z34ofEo!wPYcBX?;(#D$ns`OaT)@;5|eC({J30s!IpwIF+EM;agqH{VC;8S zVhMDoj*TR*ix{0+UVij9QmxjZ0193gkdA{j2f~^|VI-TcsnE<5)m-242S61^mHmF- zkXT-6jBC@7i$A;i=8&5{U*uLG?WY`XMa zwgGh&3M7#K5*`!2k_a$MSM@kb<8eeZ8*n@W#C2E--j6Y|lxzUn#t=tjh(*J8chcVh ztKXZ#1w(T>PE@1UfEY8ELEB$RpqyPultaO{JC6(K57V% z1(1lAN4Wi{C4MT$0uqXb!qeUO?f(8AfkFIOlc5)mCmj0cPXLSr&R zK9^~cIG}piT6OzQ7cEkP-tKjIgi%r?&_Nx^0REKdHOG$9Rpxc&^RteEVyE+fWo8W$ zXu+#OH9-6F9XXIPgCV+6;lWtVZ@Kezx$T=L-{37)y5MvTAsbG8V~Fo}?ar;HuPdY8 z9Me$_X|Kn^@R_<4(QxW5FV;2{lPf&`EDsE`8q_+7ROphkG=KXGk>0pggNRbb{VRXu%B4_{knt33E%4fJ$r`*72@7&tQnY5CR z`iX9(ejh^0!6HeaqBj04Sr^isG$WGx1Vf?c$+=Bthz#~IEx)Hj7UfC){7&d8(D(i! zUe&`ntmT{B>=s84XnV6nbG`pB8n(srU!%WS?a91`W9EIY(Zx=^BFPv0X(yzbaWFhW zl2^R{7+GwM2mdtb<9giS>!BgQT)jcPz5T=UFRgw4LO$FJqgn{F0Gb(UMojTNKP6_M zN+(sbXl(dfkV*495%)XKS^`WP>Ll?+kG4uGc~@$R0X5?rr^CHbr?p(5PD45Nl-kX3 zYAtXmk>EV{l9hbyLnG7x*AbJGYj5;hw?ki=HbGGcrH^ohAceZWw6paJjNfglZc~Av zefUSd@k7O`^6DQ;zmrD2xTmWKWz}?D#}Xae=GwO(-bx22l``u<&XGZR$-gkWR8-`r z;tGb`=Av*!H}`hA{QlrPNc}Elf4Z8Z%f;RUV*F~cz;y9~3U}*a=J;N{|1K>1CTMi@ zYm*kbEJXuQZmI5jf{FNIuHE^g;mODQ*zpTseZ)Nz z+|C)!6GDdh(-R%*F$3fw6{AFrZiY?#((PKvfTi-9r*S7vR=`lE-aGeMCHygNT$yJ_ zktE&;oCU(OaYPEUlKB1{2{W#&R&ESRDMAR;5jfGXi>;tVL7<01)jeWZkwpHRA%#p8EV^bnBfk}uzt&ITSWPF^F+ zWO7J!f0=UZha>%=N0f*ez1D8KNP|TjL0oDV@*YLg2muL?Ld*Cmj>tdb%$Eb3^m4AN z0WIe^WG<@pp(iTB#?&7CGR?dFZ8b1;;vJw#i|E578;w9}lr8RP%b`iS?+Y z-cqjQ!Uh=BR~L_41mL}H&dzdi=(&1PcYPd<4?`WRac3AM$DxLCjpNq?qxyulBg@H& z_q}ghaEXHC42x+MSjrC$HguzYUH#PdbFbJ zc;0S=ll_g7w|l<;bdlmIgc&e)@&&rd80s!A5T^U38_nv4>}WdVyN>TTE-7Wmy2x@+ z39_;lWbE5@&5HB!Gn|rmr%^o?4R2iMs1scka>HX46Ps4kmP>Cx59a*&1L0ACc-tSL!WgN|DR&;9f+2;hMUk zbAEp+WmW*y(@QXXPRPk-*ygGaWa68|B|WlV=!6y|xl%6$7aO&2d3mY~$+F^~eM({P zkH}}#*#1yY-m}k?B7jOYsfOXzk!`2n{@UGF~tj~ z)W)kZ*orMCP&Il1nRvm=N$dCmdwX)NzFzKIMJD>AS^-nGn-ET}O{=vvzkx*dZPde9 z%AmZG^z<`ttt6PRlWG&J`G7;rmcnbzNq?v<4Ad5+k*-0mi^XPE z0r2Zcnu+BWyZ@JtNH#D(P``zB+oQP9>2utic@@1ZMmZ}R*!^_oWVmSnB=3V(RtGX@ zH>hBs;7u&Fi;e5n(I??mMc6IWBvLd@Hg%fiK?%UGO$O_B85ZBhr#}jLq+>Yp79qT$ zkdnL&GVW(ii@A6+lpf9c$o78~|HS4Ad!yarK?Yd!Uw}{nd<+;~HrCDV>-mINisL$h zU5u#H3$3q`xP?-DC!1gq$yc6>PN_1A3MBw%@C5;v<=pua2B&#NH~4308+|c;!j*zl%F4>U zUBaXK83wk6#O^$I!ZeHG-?SmV^HQQ0hQkKdEPykfwM6iS!+b-gn5sEm32fc*ICcC@ z-4;k@;vIo-V!fObZ44I6UG}k8vlXWnzakVS18hKjl|AC{yW8G6%SL1u#==|t5;)gLH{M4!r9cvNe3MV8sHnB- zU5{4a+uvtsi_zZa1786^WFkpV*)1G3r22^8r3F`>f;)GO9`VwVHvbDsd=$w$42tht zHS23BF#O4(z2KjjjbD^g1Fht{`ugeQ@_t<#I&{1)Llyy_k? zk7Z_YKYc>K9sFLxi^vl`tlEJ`a#4uOPKrnDsGFz{THm6su6eM0%EG+x<~ zG?+Zcix&FB2P{@_i*S@xE`)NtkVE9- zn_Tacb*Q9bEYFIKPfbMxk<mRT!adTx(qe8lJ! zFzeYEK`9Z(?IzROnhDx%0h0`BF6A&OXQj2H#E3d^=mqQiLz07qZ%htz4GmYFI^#^L zS>eekPSK$7?xz{o!OpXQ8Zn?_!Z&|K;8t7%i-iFD=;{3&c{o#!10`Re&H@`NXp|c0 zOoiAzR7%_U=DjJbdI(-?+F^4JS<;pdZUK9u?y`GF(zv#RCO;q9y0EqAVRILISW&j3 zY-W0KO5lyu3Q%v^J!4-BoYJdHQ!fFWrQ%BF3vOBh8vj7-gIb@}E2N8X7d`m|hq1RA zfWs^so6js)4a<2~T9{^VDcepBM*A+h+3?KoZlI_hBp*y0MOt6K+vrz z1~@M^^)oLTV6-QB-m+iiN_E+*=E5>m{kDSS*mJ@wM^l~TM?igL(=yhjfF5fpzFioC zdoVP*@pAPFk}HLMX-h+QIWa{C@!+y6Rn$g!+P5*-B0UN|0pe%Aiwq8f_4ZX{brjJfagwGl@kjYS*sT?=n( zr?cMF`v-P2pA?Fhg$sn6`I4@O>;#t}sex6GU)r=#UI)Fg5SnMsm}P}64Tx#Z%y&ZT zu5-DIF?=Q!Y(siRE*4{iQz;AhmAy)134NVv07xb$bLt%E=BlLzNh{F)g02o#sso_g zNbfqdR3$Jrh@{Qb7!CFQSy7Z!DkwKd%>BB=x}wva=XI9O=z5P zlSYu+h)rG-q)0piwx)eH#7-@@#`jPozim;2Ki23+JM&s>i@AB6HJ=^*0gk!3k+71A z*7|`wD|z|JT}bxPQsT5(SMNx3^D{7(PQDqJ21=fCa=me!MP@(sCIOsit;&=wb4Gj( zXGKq-r8IcyBzUCc$rDiqDcvyQ^s01KesZnwQ2J(CrwOeSc7rx4w1fH9N+@S3s_lqd zYGM8&&CfS*GV-?rwAB~d{i^nIATK$>^6`>so6^kO!z!ZZ&x^?`JR%x}#Jn2lv>~oI z<~GeqtYwM%ceFpEz28jQ&qmnqrt(-G`~8m9BE!RwX`BZ0+ycvvkOJ$cusMC4kAH%3 zwtA3>;_*|EK<42g+rYwtwVPevj$!xIeKmqlecwso9>-DkPOgRWAjpj6#1HxBsPKN{JmH(y-9~EDjv(r2s)L-)*sxnka^E#Z#<w zwOgQ{A6W+UiXwNtu(>j0IDGIXg;YC2?tfgvkBNYLcyi>Z!p=V?iTdB-7H~^XzjZ8C zR(C9Iu$%m?$VB*8qcW2pu>{m9nkz&;tCN9-`k~W`{4nsmTds9$q5Xbgg>8c=Sp%(YO@fpJuWj7Ki$l@3?n*%$=Mr`u8`t+&;P)8QGWG))Yt7uwb7QY+T0$8|OC+ z3feb!2nqy83vUJNOkdC8ct(0ZoF&ajV(D_f;T>ggevt9%H z@|j?*!E*(MKl$&ybS$KGC=*Rf_14bN+8)-6HVcchi*P0MUe?n@2nlF66ff9ia_k>{ zDK=Oqb2EY;=$_rh~&Pzlaf&j;@b6@67wS=9aDAI67S|4r(6hZiBw0qmUhPUfm}XxkS!Nb6f`X}nmI$w+?y<+112_tiZ~DE$K(n0 z&tZ@|e#^y%W6Culb zVQUdcd~!bmq5?4@h60DcDQ6o!=`mIPb2IMBmZF-$;*qrQQ4((Uz?G%b>#IDp2i#NJzc}?(XA`tRjxQh@}^ZQ)Yz{oZ#Ghn3}e|f z^1^z@SdIQh!S^)#`xtt_jpo95y$!N4g=}Fpgecs29JIKgT}wYAcfiDpA26`H`4R8oNy^^6D_?MR=t8Qxxd}q$q9go+Jvd*2_H{yOjpT zF9$Ql`M8vY@5#c`*)3;}CFsci zs8h36WU27;Fd5gi8&&w6pZA>4V_317u2peazI^+&yyR-Y|4_t}pmq7%aTU(1_n3ZI zw*)v~5k(>xC7*;^I}*Kd_Z`OR6GAwrqd(%VJCrTO__Pxg46G9{nN{?kvKRs0G4!Tw zEnpft$+?t=09YCok};LGJE^P)HN6|FdO2sJYU8KOFBZ9Xh#>@IZ#G$M|r z!c_yJ!LMKM%QKTL=<{y$>uQix987(?XP|!|FXGuNnWmN0p z#n61mp8j+8r=!x}+tB-oIR!dG{}3bHVNf3!zh8OU1(Lx-I1>3-^Bevi8YTApc71bZ zne9Gs^DQS~)IVZ6B)dZf@td<%2Js6Qb6xTy7jb7yHO2EYt9Qfd;BE@}>*OvdkWUcR zLp@H+{)^|S56LSl0`U;&X9_SYZ9Ywkv+!U{2sEb0zsxzQLJw;xNGgX1R}x}7`>Z*D z+(?=f*6e+O%4Lux?AL5Pba~i%`4p$~OZVQiEgsPFkmtiTrva)H&4<@7d=tO3g-j52 z1WNZz3wR*OmO$xr(2?6P;1VI)(|lba&|k#VdA}%-@xbl~DaQ#kV+e7_7m9lc=-pPA r0;q7tV*72GsS{{Eg@hz8ts?bR0t)+o_*N!Q diff --git a/data/reusables/code-quality/workflow-generation.md b/data/reusables/code-quality/workflow-generation.md deleted file mode 100644 index 5d9ac3d4c574..000000000000 --- a/data/reusables/code-quality/workflow-generation.md +++ /dev/null @@ -1 +0,0 @@ -You can use the automatic setup option to generate a workflow with an AI-powered agent, or configure your workflow manually. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/set-up-code-coverage). diff --git a/data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md b/data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md deleted file mode 100644 index 02925d9b95eb..000000000000 --- a/data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md +++ /dev/null @@ -1,6 +0,0 @@ -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -1. On the "Members" page, click **Invite member**. -1. Search for the users you want to invite, then click **Invite**. - -After you invite someone to join the enterprise account, they must accept the emailed invitation before they can access the enterprise account. Pending invitations will expire after 7 days. diff --git a/data/reusables/enterprise/about-ghec.md b/data/reusables/enterprise/about-ghec.md deleted file mode 100644 index 5252c346fab0..000000000000 --- a/data/reusables/enterprise/about-ghec.md +++ /dev/null @@ -1 +0,0 @@ -{% data variables.product.prodname_ghe_cloud %} is designed for large businesses or teams who collaborate on {% data variables.product.github %}. diff --git a/data/reusables/enterprise/emus-trial-content.md b/data/reusables/enterprise/emus-trial-content.md deleted file mode 100644 index 9d5605cc69f1..000000000000 --- a/data/reusables/enterprise/emus-trial-content.md +++ /dev/null @@ -1,6 +0,0 @@ -### Enterprises with managed users - -If you choose an {% data variables.enterprise.prodname_emu_enterprise %}, you will also choose whether to create an enterprise on {% data variables.product.prodname_dotcom_the_website %} or in a specific data residency region on {% data variables.enterprise.data_residency_site %}. - -* Trials on **{% data variables.product.prodname_dotcom_the_website %}** include free access to {% data variables.product.prodname_GHAS %} features. Your enterprise will be hosted in the US. -* Trials on **{% data variables.enterprise.data_residency_site %}** allow you to meet specific regulatory requirements and choose a unique subdomain for your enterprise. However, there are some features that are not included in the trial. See [AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency#currently-unavailable-features). diff --git a/data/reusables/organizations/models-development.md b/data/reusables/organizations/models-development.md deleted file mode 100644 index 5ffe396b8a91..000000000000 --- a/data/reusables/organizations/models-development.md +++ /dev/null @@ -1 +0,0 @@ -1. {% data reusables.user-settings.code-planning-automation %} click the **{% octicon "ai-model" aria-hidden="true" aria-label="ai-model" %} Models** dropdown. Then click **Development**. From 27083a813aaf78545bc99b6c5c96f93e9c48543c Mon Sep 17 00:00:00 2001 From: Ria Gopu Date: Tue, 18 Aug 2026 17:19:11 +0000 Subject: [PATCH 04/11] Note automatic review applies to Copilot code review without a license (#62816) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- content/copilot/concepts/agents/code-review.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/copilot/concepts/agents/code-review.md b/content/copilot/concepts/agents/code-review.md index f82e9dd07c30..0fbccf38cd99 100644 --- a/content/copilot/concepts/agents/code-review.md +++ b/content/copilot/concepts/agents/code-review.md @@ -219,6 +219,9 @@ By default, {% data variables.product.prodname_copilot_short %} only reviews a p * **Repository owners** can configure {% data variables.product.prodname_copilot_short %} to automatically review all pull requests in the repository that are created by people with access to {% data variables.product.prodname_copilot_short %}. * **Organization owners** can configure {% data variables.product.prodname_copilot_short %} to automatically review all pull requests in some or all of the repositories in the organization where the pull request is created by a {% data variables.product.prodname_copilot_short %} user. +If your organization has enabled {% data variables.copilot.copilot_code-review_short %} without a {% data variables.product.prodname_copilot_short %} license, automatic reviews also apply to pull requests created by organization members without a license. This applies to repositories covered by a policy where automatic reviews are enabled. For more information, see [{% data variables.copilot.copilot_code-review_short %} without a {% data variables.product.prodname_copilot_short %} license](#copilot-code-review-without-a-copilot-license). + + ### Triggering an automatic pull request review The triggers for automatic code review depend on the configuration settings. From 6113eb8d99a42318e83ff9c86fcb7395809e48f1 Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Tue, 18 Aug 2026 17:26:25 +0000 Subject: [PATCH 05/11] Fix two cross-version links broken in enterprise-server@3.22 (#62811) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Copilot-Session: 645c73a6-af94-4c7e-9444-66c92aabd7a9 --- .../setting-up-a-trial-of-github-enterprise-server.md | 4 ++-- .../learning-about-github/about-github-advanced-security.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/admin/overview/setting-up-a-trial-of-github-enterprise-server.md b/content/admin/overview/setting-up-a-trial-of-github-enterprise-server.md index 486593f8dccc..eb82c14c0037 100644 --- a/content/admin/overview/setting-up-a-trial-of-github-enterprise-server.md +++ b/content/admin/overview/setting-up-a-trial-of-github-enterprise-server.md @@ -21,7 +21,7 @@ You can request a 45-day trial to evaluate {% data variables.product.prodname_gh {% ifversion ghes %}{% data variables.product.prodname_dependabot %}{% else %}Security{% endif %} alerts and {% data variables.product.prodname_github_connect %} are not currently available in trials of {% data variables.product.prodname_ghe_server %}. For a demonstration of these features, contact {% data variables.contact.contact_enterprise_sales %}. For more information about these features, see [AUTOTITLE](/code-security/concepts/supply-chain-security/dependabot-alerts) and [AUTOTITLE](/enterprise-server@latest/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom). -Trials are also available for {% data variables.product.prodname_ghe_cloud %}. For more information, see [AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud). +Trials are also available for {% data variables.product.prodname_ghe_cloud %}. For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/overview/setting-up-a-trial-of-github-enterprise-cloud). {% data reusables.products.which-product-to-use %} @@ -64,4 +64,4 @@ If you haven't upgraded by the last day of your trial, you'll receive an email n ## Further reading -* [AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-cloud) +* [AUTOTITLE](/enterprise-cloud@latest/admin/overview/setting-up-a-trial-of-github-enterprise-cloud) diff --git a/content/get-started/learning-about-github/about-github-advanced-security.md b/content/get-started/learning-about-github/about-github-advanced-security.md index 02a37c1bc9be..354e80f8c8c6 100644 --- a/content/get-started/learning-about-github/about-github-advanced-security.md +++ b/content/get-started/learning-about-github/about-github-advanced-security.md @@ -130,7 +130,7 @@ If you are on a {% data variables.product.prodname_team %} or {% data variables. ## Managing {% data variables.product.prodname_GHAS %} -Enterprise owners can manage {% data variables.product.prodname_GHAS %} licensing and access for their enterprise, including disabling {% data variables.product.prodname_GHAS %} across all repositories and preventing future re-enablement. See [AUTOTITLE](/billing/how-tos/products/manage-ghas-licenses#disabling-github-advanced-security-in-an-enterprise). +Enterprise owners can manage {% data variables.product.prodname_GHAS %} licensing and access for their enterprise, including disabling {% data variables.product.prodname_GHAS %} across all repositories and preventing future re-enablement. See [AUTOTITLE](/billing/how-tos/products/disable-ghas-for-enterprise). For information about managing your {% data variables.product.prodname_GHAS %} license, see [AUTOTITLE](/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/managing-your-github-advanced-security-license-usage). From 5c3f2eddc9e04099d84cc462bfe87d1884f8fbb7 Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Tue, 18 Aug 2026 17:26:29 +0000 Subject: [PATCH 06/11] Update src/links READMEs for the rebuilt link checker (#62810) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 645c73a6-af94-4c7e-9444-66c92aabd7a9 --- src/links/README.md | 71 ++++++++++++++++++++++++--------- src/links/lib/README.md | 17 +++++--- src/links/lib/excluded-links.ts | 4 +- 3 files changed, 66 insertions(+), 26 deletions(-) diff --git a/src/links/README.md b/src/links/README.md index 14e62b17a33b..1d561906d99a 100644 --- a/src/links/README.md +++ b/src/links/README.md @@ -5,6 +5,7 @@ This module contains the tooling and components responsible for link integrity, ## Purpose & Scope The `src/links` directory manages: + - **Link Validation**: Ensuring all internal and external links in the documentation are valid. - **Link Maintenance**: Automated tools to update links when pages are moved or renamed. - **User Experience**: Components like "Hover Cards" that provide context when users hover over internal links. @@ -12,7 +13,7 @@ The `src/links` directory manages: ## Architecture -### Components +### Components (`src/links/components`) - **`LinkPreviewPopover.tsx`**: A React component that renders a preview card when a user hovers over a link. It handles: - **Delay Logic**: Prevents the popover from appearing during accidental mouse-overs. @@ -20,20 +21,23 @@ The `src/links` directory manages: ### Libraries (`src/links/lib`) +- **`extract-links.ts`**: Pulls links out of content files. Shared by all the checkers. +- **`page-anchors.ts`** and **`heading-anchors.ts`**: Compute the anchors a page exposes, so `#fragment` links can be validated. `heading-anchors.ts` strips inline Markdown from a heading before computing its slug. +- **`cross-page-anchors.ts`**: Tracks `/some/path#fragment` links found while scanning, so they can be resolved once every page's anchors are known. +- **`validate-docs-urls.ts`**: Validates URLs that point at docs.github.com. +- **`validate-redirected-fragment.ts`**: When `update-internal-links` rewrites a link's path via a redirect, checks that the original fragment still exists at the new destination. +- **`link-report.ts`**: Builds the reports the checkers post to pull requests and issues. - **`update-internal-links.ts`**: The core logic for refactoring links. It parses Markdown/Liquid, identifies links, and updates their `href` or title based on a provided map of changes. It handles: - Stripping Liquid conditionals to find the "pure" link. - Updating frontmatter links. - Handling anchors and query parameters. -- **`excluded-links.ts`**: Configuration for links that should be ignored by validators (e.g., localhost links, specific example domains). +- **`excluded-links.ts`** and **`excluded-links.yml`**: Configuration for links that should be ignored by validators (e.g., localhost links, specific example domains). ### Scripts (`src/links/scripts`) -- **`rendered-content-link-checker.ts`**: A comprehensive CLI tool that: - - Renders content pages to HTML. - - Parses the HTML to find all `` and `` tags. - - Validates internal links (checking for 404s, broken anchors). - - Validates external links (with caching and retry logic). - - Reports flaws and can comment directly on GitHub Pull Requests. +- **`check-links-pr.ts`**: Fast validation of internal links in changed files. Built to finish in under 10 minutes on a typical PR. +- **`check-links-internal.ts`**: Comprehensive check of all internal links across every version and language. Runs on a schedule. +- **`check-links-external.ts`**: Validates external URLs, with aggressive caching to keep the cost down. Runs on a schedule. - **`check-github-github-links.ts`**: Ensures that we don't accidentally link to private `github/github` URLs in public documentation. - **`update-internal-links.ts`**: A CLI wrapper around the library function to perform bulk updates on the content files. @@ -41,16 +45,34 @@ The `src/links` directory manages: ### Validating Links -To run the link checker locally: +Which command you want depends on what you are checking. + +Internal links in the files you changed: + +```bash +npm run check-links-pr +npm run check-links-pr -- --files content/actions/index.md content/repos/index.md +``` + +All internal links, across all versions and languages. This one is slow: + +```bash +npm run check-links-internal +npm run check-links-internal -- --version free-pro-team@latest --language en +``` + +External links: ```bash -npm run rendered-content-link-checker-cli +npm run check-links-external +npm run check-links-external -- --max 100 ``` -Options: -- `--level `: Set the reporting level. -- `--check-external-links`: Check external links (slower). -- `--verbose`: Show detailed output. +Links into `github/github`: + +```bash +npm run check-github-github-links +``` ### Updating Links @@ -62,10 +84,20 @@ npm run update-internal-links This script typically relies on the state of the `content` directory to determine what needs updating. +## Automation + +| Workflow | Runs | +| ------------------------------ | ------------------ | +| `link-check-on-pr.yml` | Every pull request | +| `link-check-internal.yml` | Mondays, 16:20 UTC | +| `link-check-external.yml` | Mondays, 16:20 UTC | +| `link-check-github-github.yml` | Mondays, 16:20 UTC | + +See [`lib/README.md`](lib/README.md) for how to investigate and triage a broken link report. + ## Dependencies -- **`cheerio`**: Used by the link checker to parse rendered HTML. -- **`src/content-render`**: The link checker needs to render pages to see the final HTML output. +- **`cheerio`**: Used by `validate-docs-urls.ts` to parse HTML. - **`src/frame`**: Uses `cookies` and other utilities for request context. ## Ownership @@ -74,6 +106,7 @@ This script typically relies on the state of the `content` directory to determin ## Current State & Known Issues -- **Performance**: The `rendered-content-link-checker` is resource-intensive because it renders pages. It uses concurrency limits and caching (especially for external links) to mitigate this. -- **False Positives**: External link checking can be flaky due to temporary network issues or anti-bot protections on target sites. The system uses a "retry and cache" strategy to reduce noise. -- **Liquid Complexity**: `update-internal-links` has to use regex and heuristics to parse Markdown mixed with Liquid, which is inherently fragile compared to a full AST parser, but necessary to preserve code formatting. \ No newline at end of file +- **Cost of a full check**: `check-links-internal` walks every page in every version and language, so it is scheduled rather than run per PR. `check-links-pr` exists to give fast feedback on just the changed files. +- **False Positives**: External link checking can be flaky due to temporary network issues or anti-bot protections on target sites. The system uses caching and exclusions to reduce noise. +- **Liquid Complexity**: `update-internal-links` has to use regex and heuristics to parse Markdown mixed with Liquid, which is inherently fragile compared to a full AST parser, but necessary to preserve code formatting. +- **Cross-version links**: A link is only valid if the target page exists in every version the source page renders in. Linking from a page with `ghes` to a page without it produces a render error, not a soft 404. diff --git a/src/links/lib/README.md b/src/links/lib/README.md index 0ce4e4eb8031..3024f42b2b5f 100644 --- a/src/links/lib/README.md +++ b/src/links/lib/README.md @@ -4,13 +4,20 @@ - [Automations](#automations) - [Tips for investigation](#tips-for-investigation) -- [Excluding links from daily checking](#excluding-links-from-daily-checking) +- [Excluding links from scheduled checking](#excluding-links-from-scheduled-checking) ## Automations -Every day, the [`link-check-daily.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-daily.yml) GitHub Actions workflow checks all links in the English content on GitHub Docs. The workflow checks both internal links within GitHub Docs and external links to other domains. +Link checking is split across several GitHub Actions workflows: -If the action finds any broken links, it opens an internal issue for the Docs Content team with the `broken link report` label. +| Workflow | Runs | Checks | +| ---------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------ | +| [`link-check-on-pr.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-on-pr.yml) | Every pull request | Internal links in the changed files | +| [`link-check-internal.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-internal.yml) | Mondays, 16:20 UTC | All internal links, every version and language | +| [`link-check-external.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-external.yml) | Mondays, 16:20 UTC | External links to other domains | +| [`link-check-github-github.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-github-github.yml) | Mondays, 16:20 UTC | Accidental links to private `github/github` URLs | + +If the scheduled workflows find any broken links, they open an internal issue for the Docs Content team with the `broken link report` label. The pull request workflow comments on the PR instead. ## Tips for investigation @@ -32,9 +39,9 @@ If the action finds any broken links, it opens an internal issue for the Docs Co - Seek help if you're not sure where the link should go. The blame view for the article may help you track down who originally added the link. -## Excluding links from daily checking +## Excluding links from scheduled checking -Before you decide whether to exclude a link from the daily link checker, you should check whether the URL for the article is stable. For example: +Before you decide whether to exclude a link from the link checker, you should check whether the URL for the article is stable. For example: - Has it has been flagged as a broken link for more than a week, but the URL works when a real user opens it in their browser? - Has the URL been available for more than 3 months? You can check using the [Wayback Machine](https://web.archive.org). diff --git a/src/links/lib/excluded-links.ts b/src/links/lib/excluded-links.ts index b12a1197c534..487617fbd08f 100644 --- a/src/links/lib/excluded-links.ts +++ b/src/links/lib/excluded-links.ts @@ -1,6 +1,6 @@ /** - * Linkinator relies - * on this in `src/links/scripts/rendered-content-link-checker-cli.ts` when we encounter external + * The external and internal link checkers rely on this + * (`src/links/scripts/check-links-external.ts` and `check-links-internal.ts`) when we encounter * links that we *specifically ignore*. That means, that URLs or patterns * mentioned in the corresponding YAML file might appear within our content but we don't * bother checking that they actually work. From 9eaee0af43decd58b41a8ba821d1f1d04499064a Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Tue, 18 Aug 2026 17:26:36 +0000 Subject: [PATCH 07/11] Fix redirected internal links in content/copilot (#62763) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: heiskr <1221423+heiskr@users.noreply.github.com> Copilot-Session: 026fdb7b-a47f-4af1-bf87-caa90fbbdf7f --- .../concepts/agents/about-enterprise-plugin-standards.md | 2 +- .../concepts/agents/cloud-agent/about-automations.md | 2 +- .../concepts/agents/cloud-agent/access-management.md | 2 +- .../concepts/agents/cloud-agent/risks-and-mitigations.md | 2 +- content/copilot/concepts/agents/code-review.md | 2 +- .../concepts/agents/copilot-cli/about-remote-control.md | 2 +- content/copilot/concepts/agents/enterprise-management.md | 4 ++-- content/copilot/concepts/mcp-management.md | 2 +- content/copilot/concepts/models/default-availability.md | 2 +- content/copilot/concepts/policies.md | 2 +- .../manage-for-enterprise/enable-custom-models.md | 2 +- .../manage-for-enterprise/manage-access/grant-access.md | 2 +- .../configure-enterprise-managed-settings.md | 4 ++-- .../manage-agents/monitor-agentic-activity.md | 2 +- .../manage-for-enterprise/manage-enterprise-policies.md | 2 +- .../manage-for-enterprise/review-audit-logs.md | 2 +- .../manage-for-organization/add-copilot-cloud-agent.md | 2 +- .../manage-for-organization/enable-custom-models.md | 2 +- .../manage-mcp-usage/configure-enterprise-allowlist.md | 2 +- .../manage-mcp-usage/configure-mcp-registry.md | 6 +++--- .../manage-mcp-usage/restrict-based-on-registry.md | 2 +- .../administer-copilot-cli-for-your-enterprise.md | 4 ++-- .../copilot-cli/customize-copilot/use-byok-models.md | 2 +- .../how-tos/copilot-cli/use-copilot-cli/steer-remotely.md | 2 +- .../integrate-cloud-agent-with-linear.md | 2 +- .../customize-the-agent-environment.md | 6 +++--- .../use-copilot-agents/copilot-code-review.md | 4 ++-- .../how-tos/copilot-sdk/features/usage-and-billing.md | 2 +- .../how-tos/copilot-sdk/troubleshooting/debugging.md | 2 +- .../copilot/how-tos/github-copilot-app/agent-sessions.md | 2 +- .../copilot/how-tos/github-copilot-app/use-byok-models.md | 2 +- .../cloud-agent/troubleshoot-cloud-agent.md | 2 +- .../request-a-code-review/use-code-review.md | 8 ++++---- content/copilot/reference/copilot-allowlist-reference.md | 2 +- content/copilot/responsible-use/agents.md | 2 +- .../tutorials/cloud-agent/give-access-to-resources.md | 2 +- content/copilot/tutorials/optimize-code-reviews.md | 2 +- content/copilot/tutorials/review-ai-generated-code.md | 2 +- .../govern-at-scale/govern-for-adoption.md | 2 +- .../govern-at-scale/pilot-a-feature-or-model.md | 2 +- 40 files changed, 51 insertions(+), 51 deletions(-) diff --git a/content/copilot/concepts/agents/about-enterprise-plugin-standards.md b/content/copilot/concepts/agents/about-enterprise-plugin-standards.md index d591d4e707f8..e64fbdffef4c 100644 --- a/content/copilot/concepts/agents/about-enterprise-plugin-standards.md +++ b/content/copilot/concepts/agents/about-enterprise-plugin-standards.md @@ -19,7 +19,7 @@ Enterprise-managed plugin standards allow administrators to **define and enforce ## Where plugin standards apply -Plugin standards apply to all users on the enterprise's {% data variables.product.prodname_copilot_short %} plan, across supported clients. See [AUTOTITLE](/copilot/reference/enterprise-managed-settings-reference#supported-keys). +Plugin standards apply to all users on the enterprise's {% data variables.product.prodname_copilot_short %} plan, across supported clients. See [AUTOTITLE](/copilot/reference/enterprise-administrators/enterprise-managed-settings#supported-keys). Users must upgrade to a supported client version for these standards to be applied. diff --git a/content/copilot/concepts/agents/cloud-agent/about-automations.md b/content/copilot/concepts/agents/cloud-agent/about-automations.md index b6ef139c1a5f..e54bcd366add 100644 --- a/content/copilot/concepts/agents/cloud-agent/about-automations.md +++ b/content/copilot/concepts/agents/cloud-agent/about-automations.md @@ -80,7 +80,7 @@ When an {% data variables.copilot.copilot_automation %} changes an issue, it can * **Custom instructions**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions). * **Agent skills**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/add-skills). -* **Firewall rules**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +* **Firewall rules**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). * **Secrets and variables**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/configure-secrets-and-variables). {% data variables.copilot.copilot_automations_cap %} are stored separately from your repository's contents. They are not committed to Git, so they are not versioned alongside your code or managed through pull requests. diff --git a/content/copilot/concepts/agents/cloud-agent/access-management.md b/content/copilot/concepts/agents/cloud-agent/access-management.md index 02bbbf6089d1..24bccba9ea62 100644 --- a/content/copilot/concepts/agents/cloud-agent/access-management.md +++ b/content/copilot/concepts/agents/cloud-agent/access-management.md @@ -64,6 +64,6 @@ In addition to the {% data variables.copilot.copilot_cloud_agent %} policy, orga * [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent) * [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment) -* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall) +* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall) * [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/configure-mcp-servers) * [AUTOTITLE](/copilot/tutorials/cloud-agent/pilot-cloud-agent) diff --git a/content/copilot/concepts/agents/cloud-agent/risks-and-mitigations.md b/content/copilot/concepts/agents/cloud-agent/risks-and-mitigations.md index df4f8362dfd7..8eb2eed04d76 100644 --- a/content/copilot/concepts/agents/cloud-agent/risks-and-mitigations.md +++ b/content/copilot/concepts/agents/cloud-agent/risks-and-mitigations.md @@ -43,7 +43,7 @@ To mitigate this risk, {% data variables.product.github %}: {% data variables.copilot.copilot_cloud_agent %} has access to code and other sensitive information, and could leak it, either accidentally or due to malicious user input. -To mitigate this risk, {% data variables.product.github %} **restricts {% data variables.copilot.copilot_cloud_agent %}'s access to the internet**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +To mitigate this risk, {% data variables.product.github %} **restricts {% data variables.copilot.copilot_cloud_agent %}'s access to the internet**. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). ## AI prompts can be vulnerable to injection diff --git a/content/copilot/concepts/agents/code-review.md b/content/copilot/concepts/agents/code-review.md index 0fbccf38cd99..81388488fe0e 100644 --- a/content/copilot/concepts/agents/code-review.md +++ b/content/copilot/concepts/agents/code-review.md @@ -205,7 +205,7 @@ These are short, natural-language statements that you write and store as one or | Scope | Repository-wide and {% data variables.product.prodname_copilot_short %}-specific | Repository sub-paths and {% data variables.product.prodname_copilot_short %}-specific | Cross-tool / agent-agnostic | Invoked per task | | Rule | "{% data variables.product.prodname_copilot_short %}, always know this for this repository" | "{% data variables.product.prodname_copilot_short %}, always know this when working in these paths" | "Any agent, always know this" | "Do this when needed" | -For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/add-skills) and [AUTOTITLE](/copilot/how-tos/configure-custom-instructions/add-repository-instructions). +For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/add-skills) and [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions). ### {% data variables.copilot.copilot_memory %} ({% data variables.release-phases.public_preview %}) diff --git a/content/copilot/concepts/agents/copilot-cli/about-remote-control.md b/content/copilot/concepts/agents/copilot-cli/about-remote-control.md index 45d1ede8f2c9..126896132400 100644 --- a/content/copilot/concepts/agents/copilot-cli/about-remote-control.md +++ b/content/copilot/concepts/agents/copilot-cli/about-remote-control.md @@ -82,6 +82,6 @@ Enterprise and organization owners control whether users can enable remote contr For remote control to be available, the applicable policy (enterprise-enforced or organization-level) must be set to "View and control." -Enterprise owners can further restrict remote control using the `remoteControl` enterprise managed setting, which applies on top of the "Store local sessions in the Cloud" policy. This setting is applied per device and controls whether a session **hosted on that device** can be remotely controlled: it can require that the controlling client is SSO-authorized for specific organizations, or disable remote control of sessions hosted on that device entirely. It doesn't affect the same user's ability to remotely control sessions hosted on other devices. See [AUTOTITLE](/copilot/reference/enterprise-managed-settings-reference). +Enterprise owners can further restrict remote control using the `remoteControl` enterprise managed setting, which applies on top of the "Store local sessions in the Cloud" policy. This setting is applied per device and controls whether a session **hosted on that device** can be remotely controlled: it can require that the controlling client is SSO-authorized for specific organizations, or disable remote control of sessions hosted on that device entirely. It doesn't affect the same user's ability to remotely control sessions hosted on other devices. See [AUTOTITLE](/copilot/reference/enterprise-administrators/enterprise-managed-settings). For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies) and [AUTOTITLE](/copilot/how-tos/copilot-cli/administer-copilot-cli-for-your-enterprise). diff --git a/content/copilot/concepts/agents/enterprise-management.md b/content/copilot/concepts/agents/enterprise-management.md index d2ba26a1f4ed..569f3863650b 100644 --- a/content/copilot/concepts/agents/enterprise-management.md +++ b/content/copilot/concepts/agents/enterprise-management.md @@ -42,9 +42,9 @@ An agent session encompasses an entire interaction with {% data variables.copilo * Prompting the agent to create or edit a pull request * Assigning the agent to an issue -Enterprise administrators can use AI Controls to view active and recent agent sessions, track audit log events, and search agentic activity in your enterprise using filters. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity) and [AUTOTITLE](/copilot/reference/agent-session-filters). +Enterprise administrators can use AI Controls to view active and recent agent sessions, track audit log events, and search agentic activity in your enterprise using filters. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity) and [AUTOTITLE](/copilot/reference/enterprise-administrators/agent-session-filters). -For long-term retention and analysis, you can stream enterprise audit log data to supported destinations. For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) and [AUTOTITLE](/copilot/reference/agentic-audit-log-events). +For long-term retention and analysis, you can stream enterprise audit log data to supported destinations. For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) and [AUTOTITLE](/copilot/reference/enterprise-administrators/agentic-audit-log-events). For billing information on agent sessions, see [AUTOTITLE](/copilot/reference/copilot-billing/request-based-billing-legacy/github-copilot-premium-requests#usage-by-copilot-cloud-agent). diff --git a/content/copilot/concepts/mcp-management.md b/content/copilot/concepts/mcp-management.md index 933171efa45b..19b7d6d23791 100644 --- a/content/copilot/concepts/mcp-management.md +++ b/content/copilot/concepts/mcp-management.md @@ -29,7 +29,7 @@ Alternatively, you can host your own MCP registry and restrict access to servers | Release phase | Generally available | {% data variables.release-phases.public_preview_caps %}, not prioritized for development | | Ease of setup | You can host a configuration file on {% data variables.product.github %} that applies automatically to clients. | You must host your own registry that matches the MCP specification and serves HTTPS requests. | | Enforcement level | Enterprise-wide settings, overridable for enterprise teams | Enterprise-wide or for individual organizations | -| Supported clients | Clients supported by the `{% data variables.copilot.managed_setting_file %}` file, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings). Planned to expand in the near future. | See [AUTOTITLE](/copilot/reference/mcp-allowlist-enforcement). | +| Supported clients | Clients supported by the `{% data variables.copilot.managed_setting_file %}` file, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings). Planned to expand in the near future. | See [AUTOTITLE](/copilot/reference/enterprise-administrators/mcp-private-registry-enforcement). | | Server matching method | Secure matching based on name, URL, or `stdio` commands | Less secure matching, based on name or ID only. Users can bypass the restriction by editing configuration files. | {% endrowheaders %} diff --git a/content/copilot/concepts/models/default-availability.md b/content/copilot/concepts/models/default-availability.md index a5911f838f9d..6d0ec2335f6f 100644 --- a/content/copilot/concepts/models/default-availability.md +++ b/content/copilot/concepts/models/default-availability.md @@ -37,4 +37,4 @@ For instructions on managing model policies, see [AUTOTITLE](/copilot/how-tos/ad ## How do I prepare for new models? -We recommend keeping up with new model releases so you can choose your enablement settings for each one. New models are announced on {% data variables.product.github %}'s changelog. For more information, see [AUTOTITLE](/copilot/concepts/preparing-for-new-features-and-models#learning-about-new-copilot-models). +We recommend keeping up with new model releases so you can choose your enablement settings for each one. New models are announced on {% data variables.product.github %}'s changelog. For more information, see [AUTOTITLE](/copilot/concepts/learning-about-new-features-and-models#learning-about-new-copilot-models). diff --git a/content/copilot/concepts/policies.md b/content/copilot/concepts/policies.md index 354e0f7adf57..c77a3792402a 100644 --- a/content/copilot/concepts/policies.md +++ b/content/copilot/concepts/policies.md @@ -32,7 +32,7 @@ More rarely, if a user receives a license from multiple different enterprises, t A user's individual plan is cancelled when they are added to a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, so a user's personal policies cannot conflict with an enterprise's or organization's. -To see details for each policy, see [AUTOTITLE](/copilot/reference/policy-conflicts). +To see details for each policy, see [AUTOTITLE](/copilot/reference/enterprise-administrators/policy-conflicts). ## Where do policies apply? diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models.md index 7f4e08290bee..1a198b807f5c 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models.md @@ -52,6 +52,6 @@ You can choose whether the models you have added are available to organizations ## Further reading -* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys) in our documentation for organizations. +* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models) in our documentation for organizations. * [AUTOTITLE](/copilot/concepts/chat) * [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies) diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-access/grant-access.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-access/grant-access.md index 72dfc39fecad..f795a45d8b3a 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-access/grant-access.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-access/grant-access.md @@ -30,7 +30,7 @@ When you assign licenses to an enterprise team, users receive or lose access to ### Prerequisites * Set the **Policies for enterprise-assigned users** policy to define a default setting for these users when other enterprise policies are set to "No policy". See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies#defining-policies-for-your-enterprise). -* If you want to assign licenses to users who are not already in your enterprise, you must first invite the users (personal accounts) or provision them from your identity provider ({% data variables.product.prodname_emus %}). For personal accounts, see [AUTOTITLE](/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/invite-users-directly). +* If you want to assign licenses to users who are not already in your enterprise, you must first invite the users (personal accounts) or provision them from your identity provider ({% data variables.product.prodname_emus %}). For personal accounts, see [AUTOTITLE](/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/add-users). * If you want to assign a license to an enterprise team, you must create the team first. See [AUTOTITLE](/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams). ### Assigning licenses diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings.md index e6455fa71a48..780822710507 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings.md @@ -32,7 +32,7 @@ MDM-managed and file-based settings are loaded from the device, so they can appl ## Defining settings -For detailed information on the available properties and syntax, see [AUTOTITLE](/copilot/reference/enterprise-managed-settings-reference). +For detailed information on the available properties and syntax, see [AUTOTITLE](/copilot/reference/enterprise-administrators/enterprise-managed-settings). Use `copilot/{% data variables.copilot.team_mappings_file %}` and the `copilot/{% data variables.copilot.team_settings_directory %}` directory when you need one or more enterprise teams to use settings that differ from the defaults in `copilot/{% data variables.copilot.managed_setting_file %}`. For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings#overriding-settings-for-specific-teams). @@ -127,7 +127,7 @@ For example: | `sandbox.enabled` | `true` | | `enabledPlugins` | `{"PLUGIN-NAME@MARKETPLACE-NAME":true}` | -1. Choose the settings you want to enforce. See [AUTOTITLE](/copilot/reference/enterprise-managed-settings-reference). +1. Choose the settings you want to enforce. See [AUTOTITLE](/copilot/reference/enterprise-administrators/enterprise-managed-settings). 1. Convert each setting to the native key and string value representation. 1. Deploy the settings to the native policy location using your enterprise MDM platform and standard rollout process. 1. Assign the policy to the target device groups. diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity.md index c6a95a99f3e1..47e304d35eb2 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity.md @@ -15,7 +15,7 @@ category: {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.ai-controls-tab %} 1. Towards the top of the page, in the "Agent sessions" section, you will see the three most recent agent sessions in your enterprise. To view all agent sessions from the last 24 hours, click **View all**. -1. To filter agent sessions, click the search bar at the top of the list, then press Space. From the dropdown menu that appears, select your filter criteria. For a list of available filters, see [AUTOTITLE](/copilot/reference/agent-session-filters). +1. To filter agent sessions, click the search bar at the top of the list, then press Space. From the dropdown menu that appears, select your filter criteria. For a list of available filters, see [AUTOTITLE](/copilot/reference/enterprise-administrators/agent-session-filters). ## Tracking agentic activity in your enterprise through the audit log diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md index 3c7c3526e26f..b463f142c793 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md @@ -47,5 +47,5 @@ If you enable "{% data variables.product.prodname_copilot_short %} in {% data va ## Further reading -* [AUTOTITLE](/copilot/reference/policy-conflicts) +* [AUTOTITLE](/copilot/reference/enterprise-administrators/policy-conflicts) * [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies) diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/review-audit-logs.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/review-audit-logs.md index a471daaaec45..322e1a15fa6a 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/review-audit-logs.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/review-audit-logs.md @@ -44,7 +44,7 @@ Use the `action:copilot` search term to view all events related to your {% data You can also filter by a specific event. For example, `action:copilot.cfb_seat_assignment_created` returns events related to a license being assigned to a new user. For a full list of {% data variables.product.prodname_copilot_short %} events, see [AUTOTITLE](/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise) or [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/audit-log-events-for-your-organization). -To view a record of agent activity, use the `actor:Copilot` search term. See [AUTOTITLE](/copilot/reference/agentic-audit-log-events). +To view a record of agent activity, use the `actor:Copilot` search term. See [AUTOTITLE](/copilot/reference/enterprise-administrators/agentic-audit-log-events). ## Retaining audit log history diff --git a/content/copilot/how-tos/administer-copilot/manage-for-organization/add-copilot-cloud-agent.md b/content/copilot/how-tos/administer-copilot/manage-for-organization/add-copilot-cloud-agent.md index a22c521e74e0..f064a1ce01b6 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-organization/add-copilot-cloud-agent.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-organization/add-copilot-cloud-agent.md @@ -58,7 +58,7 @@ Once {% data variables.copilot.copilot_cloud_agent %} is enabled for a repositor ## Managing the agent firewall for your organization -Organization owners can configure the {% data variables.copilot.copilot_cloud_agent %} firewall for their organization, including whether it is enabled for the organization and which external hosts and URLs the agent can access. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +Organization owners can configure the {% data variables.copilot.copilot_cloud_agent %} firewall for their organization, including whether it is enabled for the organization and which external hosts and URLs the agent can access. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). ## Next steps diff --git a/content/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models.md b/content/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models.md index 8bb421f81f78..a70d09ef9b0d 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models.md @@ -39,6 +39,6 @@ After you've added your key and selected one or more models, you and your organi ## Further reading -* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys) in our documentation for enterprise accounts. +* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models) in our documentation for enterprise accounts. * [AUTOTITLE](/copilot/concepts/chat) * [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies) diff --git a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-enterprise-allowlist.md b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-enterprise-allowlist.md index 7e1af0f2a05e..97f4ef40bad4 100644 --- a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-enterprise-allowlist.md +++ b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-enterprise-allowlist.md @@ -28,7 +28,7 @@ You can find these settings in the {% octicon "mcp" aria-hidden="true" aria-labe ## Defining an allowlist or denylist 1. Create a `{% data variables.copilot.managed_setting_file %}` file for your enterprise. Most enterprises store this file in a `.github-private` repository. You can also install it directly on users' machines using mobile device management. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings#deploying-server-managed-settings). -1. Edit the file to define an allowlist and denylist for MCP servers. You can match by name, server URL, or specific commands. For syntax details, see [allowedMcpServers](/copilot/reference/enterprise-managed-settings-reference#allowedMcpServers), and [deniedMcpServers](/copilot/reference/enterprise-managed-settings-reference#deniedMcpServers) in "Enterprise managed settings reference." +1. Edit the file to define an allowlist and denylist for MCP servers. You can match by name, server URL, or specific commands. For syntax details, see [allowedMcpServers](/copilot/reference/enterprise-administrators/enterprise-managed-settings#allowedmcpservers), and [deniedMcpServers](/copilot/reference/enterprise-administrators/enterprise-managed-settings#deniedmcpservers) in "Enterprise managed settings." The following example allows servers that match any of the three allowlist entries. The filesystem server configured to access the root filesystem is always blocked, even if it also matches an allowlist entry. diff --git a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-registry.md b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-registry.md index 9940a155c1ea..4e8ba65eb0b4 100644 --- a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-registry.md +++ b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-registry.md @@ -26,7 +26,7 @@ At its core, an MCP registry is a set of HTTPS endpoints that serve details abou * Publish your own custom implementation. > [!NOTE] -> If you want your developers to have access to local MCP servers, include those servers in your registry with the correct server ID. For more information, see [AUTOTITLE](/copilot/reference/mcp-allowlist-enforcement). +> If you want your developers to have access to local MCP servers, include those servers in your registry with the correct server ID. For more information, see [AUTOTITLE](/copilot/reference/enterprise-administrators/mcp-private-registry-enforcement). To create a valid MCP registry that is reachable by {% data variables.product.prodname_copilot %}, the registry must meet the following requirements: * [Endpoint and specification requirements](#endpoint-and-specification-requirements) @@ -70,7 +70,7 @@ Access-Control-Allow-Headers: Authorization, Content-Type Azure API Center provides a fully managed MCP registry with automatic CORS configuration, built-in governance features, and no additional web server setup. 1. To complete the initial setup for your registry, see [Register and discover remote MCP servers in your API inventory](https://learn.microsoft.com/azure/api-center/register-discover-mcp-server) in the Azure documentation. -1. If you want your developers to have access to local MCP servers, include those servers in your registry with the correct server ID. For more information, see [AUTOTITLE](/copilot/reference/mcp-allowlist-enforcement). +1. If you want your developers to have access to local MCP servers, include those servers in your registry with the correct server ID. For more information, see [AUTOTITLE](/copilot/reference/enterprise-administrators/mcp-private-registry-enforcement). 1. To ensure {% data variables.product.prodname_copilot %} can fetch your registry, in the visibility settings of your API Center, allow anonymous access. 1. Copy your API Center endpoint URL. In the next article, you will use this URL to make your registry available across your company. @@ -80,4 +80,4 @@ Azure API Center offers a **free tier** for basic API cataloging and discovery, ## Next steps -Now that you have created your MCP registry, you can set MCP policies for your company. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-server-access). +Now that you have created your MCP registry, you can set MCP policies for your company. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-mcp-usage/restrict-based-on-registry). diff --git a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/restrict-based-on-registry.md b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/restrict-based-on-registry.md index e6add7d8789b..a38206b9ced4 100644 --- a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/restrict-based-on-registry.md +++ b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/restrict-based-on-registry.md @@ -57,7 +57,7 @@ To ensure uniform access, you can set and maintain your MCP registry URL and all ## Next steps -For detailed information on MCP allowlist enforcement and limitations, see [AUTOTITLE](/copilot/reference/mcp-allowlist-enforcement). +For detailed information on MCP allowlist enforcement and limitations, see [AUTOTITLE](/copilot/reference/enterprise-administrators/mcp-private-registry-enforcement). ## Further reading diff --git a/content/copilot/how-tos/copilot-cli/administer-copilot-cli-for-your-enterprise.md b/content/copilot/how-tos/copilot-cli/administer-copilot-cli-for-your-enterprise.md index bfd4a3d173ef..8dabe088b3e4 100644 --- a/content/copilot/how-tos/copilot-cli/administer-copilot-cli-for-your-enterprise.md +++ b/content/copilot/how-tos/copilot-cli/administer-copilot-cli-for-your-enterprise.md @@ -40,7 +40,7 @@ You can enable or disable {% data variables.copilot.copilot_cli_short %} at the Users can only access AI models that are enabled at the enterprise level. When you enable or disable models in your enterprise settings, those changes are reflected in {% data variables.copilot.copilot_cli_short %}. Users can view which models are available to them using the `/model` command. -Enterprise and organization owners can provide keys for custom models. Users can select these like any other model: with the {% data variables.copilot.copilot_cli_short %} model selector, the `--model` flag, or environment variables. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys). +Enterprise and organization owners can provide keys for custom models. Users can select these like any other model: with the {% data variables.copilot.copilot_cli_short %} model selector, the `--model` flag, or environment variables. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models). Separately, users can also provide their own LLM keys locally. This is not controlled by enterprise policies. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models). @@ -50,7 +50,7 @@ Enterprise-configured custom agents are available to use with {% data variables. ### MCP server policies -Enterprise and organization MCP policies apply to {% data variables.copilot.copilot_cli_short %}. You can configure an MCP registry URL so developers can discover approved servers, and set an allowlist policy to restrict which MCP servers can run. For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-server-access). +Enterprise and organization MCP policies apply to {% data variables.copilot.copilot_cli_short %}. You can configure an MCP registry URL so developers can discover approved servers, and set an allowlist policy to restrict which MCP servers can run. For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-mcp-usage/restrict-based-on-registry). ### {% data variables.copilot.copilot_cloud_agent %} enablement diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md b/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md index 3747921fc526..7872d4ded2df 100644 --- a/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md +++ b/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md @@ -17,7 +17,7 @@ docsTeamMetrics: You can configure {% data variables.copilot.copilot_cli_short %} to use your own LLM provider, also called BYOK (Bring Your Own Key), instead of {% data variables.product.github %}-hosted models. This lets you connect to OpenAI-compatible endpoints, Azure OpenAI, or Anthropic, including locally running models such as Ollama. > [!NOTE] -> This article is for users who want to configure their own LLM provider API key on their local machine. To set up custom models for users in an enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys). +> This article is for users who want to configure their own LLM provider API key on their local machine. To set up custom models for users in an enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models). ## Prerequisites diff --git a/content/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely.md b/content/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely.md index dbb83a4a6766..133361dcbffd 100644 --- a/content/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely.md +++ b/content/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely.md @@ -168,7 +168,7 @@ Remote control is disabled by default, but may be enabled in your {% data variab * **For a single session**: Start the CLI with `--no-remote` to prevent remote control for that session, regardless of your settings file value. * **Permanently**: Remove the `"remoteSessions": true` setting from `~/.copilot/settings.json`, or set it to `false`. -Enterprise owners can also restrict remote control of sessions hosted on your device using enterprise managed settings, regardless of your personal settings. Depending on the configured policy, remote control of sessions on your device may be disabled entirely, or only available to a controlling client that is SSO-authorized for specific organizations. This doesn't affect your ability to remotely control your own sessions hosted on other devices. See [AUTOTITLE](/copilot/reference/enterprise-managed-settings-reference). +Enterprise owners can also restrict remote control of sessions hosted on your device using enterprise managed settings, regardless of your personal settings. Depending on the configured policy, remote control of sessions on your device may be disabled entirely, or only available to a controlling client that is SSO-authorized for specific organizations. This doesn't affect your ability to remotely control your own sessions hosted on other devices. See [AUTOTITLE](/copilot/reference/enterprise-administrators/enterprise-managed-settings). ## Further reading diff --git a/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md index a44935853f95..6d546c1296fa 100644 --- a/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md +++ b/content/copilot/how-tos/copilot-integrations/integrate-cloud-agent-with-linear.md @@ -15,7 +15,7 @@ redirect_from: --- > [!NOTE] -> {% data variables.product.prodname_copilot %} uses AI. Check for mistakes. See [AUTOTITLE](/copilot/responsible-use/copilot-cloud-agent). +> {% data variables.product.prodname_copilot %} uses AI. Check for mistakes. See [AUTOTITLE](/copilot/responsible-use/agents). The {% data variables.product.prodname_copilot_short %} integration in Linear allows you to invoke {% data variables.copilot.copilot_cloud_agent %} without leaving your Linear workspace. From within a Linear issue you can initiate {% data variables.copilot.copilot_cloud_agent_short %} sessions, customize which model, custom agent, or branches the agent uses, steer a session, and open pull requests, all using the context of your issue description and comments. diff --git a/content/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment.md b/content/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment.md index a791c3602d58..8ee0ce1cf4e6 100644 --- a/content/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment.md +++ b/content/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment.md @@ -34,7 +34,7 @@ You can customize {% data variables.product.prodname_copilot_short %}'s developm In addition, you can: * [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/configure-secrets-and-variables) -* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). > [!NOTE] > Organization owners can configure the default runner type for {% data variables.copilot.copilot_cloud_agent %} across all repositories in their organization, and choose whether repositories are allowed to override this default. For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/configure-runner-for-coding-agent). @@ -152,7 +152,7 @@ We recommend that you only use {% data variables.copilot.copilot_cloud_agent %} {% data reusables.copilot.cloud-agent-required-hosts %} -1. Disable {% data variables.copilot.copilot_cloud_agent %}'s integrated firewall in your repository settings. The firewall is not compatible with self-hosted runners. Unless this is disabled, use of {% data variables.copilot.copilot_cloud_agent %} will be blocked. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +1. Disable {% data variables.copilot.copilot_cloud_agent %}'s integrated firewall in your repository settings. The firewall is not compatible with self-hosted runners. Unless this is disabled, use of {% data variables.copilot.copilot_cloud_agent %} will be blocked. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). 1. In your `copilot-setup-steps.yml` file, set the `runs-on` attribute to your ARC-managed scale set name: ```yaml @@ -205,4 +205,4 @@ jobs: ## Further reading * [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/configure-secrets-and-variables) -* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall) +* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall) diff --git a/content/copilot/how-tos/copilot-on-github/use-copilot-agents/copilot-code-review.md b/content/copilot/how-tos/copilot-on-github/use-copilot-agents/copilot-code-review.md index 8cbd1afc3edc..23da4e23e1d1 100644 --- a/content/copilot/how-tos/copilot-on-github/use-copilot-agents/copilot-code-review.md +++ b/content/copilot/how-tos/copilot-on-github/use-copilot-agents/copilot-code-review.md @@ -33,7 +33,7 @@ You can also request a review from {% data variables.product.prodname_copilot_sh ## Work with suggested changes -{% data variables.product.prodname_copilot_short %}'s feedback often includes suggested changes you can apply in a few clicks. Accept a single suggestion or group multiple suggestions into one commit. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request). +{% data variables.product.prodname_copilot_short %}'s feedback often includes suggested changes you can apply in a few clicks. Accept a single suggestion or group multiple suggestions into one commit. For more information, see [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request). To have {% data variables.copilot.copilot_cloud_agent %} implement suggested changes directly: @@ -56,7 +56,7 @@ Rate {% data variables.product.prodname_copilot_short %}'s comments to help impr When you push new changes to a pull request that {% data variables.product.prodname_copilot_short %} has reviewed, it does not automatically re-review unless you've configured automatic reviews to include new pushes. -To manually request a re-review, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). +To manually request a re-review, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review). To automatically request re-reviews on every push, enable automatic code review and select **Review new pushes** in the ruleset settings. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/set-up-copilot/configure-automatic-review#configuring-automatic-code-review-for-repositories-in-an-organization). diff --git a/content/copilot/how-tos/copilot-sdk/features/usage-and-billing.md b/content/copilot/how-tos/copilot-sdk/features/usage-and-billing.md index e704a2fdfd5e..5fc22e9d4d6e 100644 --- a/content/copilot/how-tos/copilot-sdk/features/usage-and-billing.md +++ b/content/copilot/how-tos/copilot-sdk/features/usage-and-billing.md @@ -627,7 +627,7 @@ The example uses the fields below. The generated `UsageGetMetricsResult` type is | `modelMetrics` | `Record` | Per-model breakdown; each entry has `usage.inputTokens`, `usage.outputTokens`, and `totalNanoAiu` | > [!NOTE] -> Cost is reported in **nano-AI units** (the field is named `totalNanoAiu`). The exact conversion to AI credits and the precise meaning of premium request accounting are defined by GitHub Copilot billing, not by the SDK—treat [GitHub's Copilot billing documentation](/copilot/managing-copilot/understanding-and-managing-copilot-usage) as the source of truth and verify before surfacing currency-like values to users. The examples divide by `1e9` as a convenience, following the SI `nano` prefix; confirm this matches current billing before relying on it. The `modelMetrics` and `tokenDetails` maps are keyed by runtime strings (model IDs and token-type names) that the SDK type system does not validate. +> Cost is reported in **nano-AI units** (the field is named `totalNanoAiu`). The exact conversion to AI credits and the precise meaning of premium request accounting are defined by GitHub Copilot billing, not by the SDK—treat [GitHub's Copilot billing documentation](/copilot/concepts/billing) as the source of truth and verify before surfacing currency-like values to users. The examples divide by `1e9` as a convenience, following the SI `nano` prefix; confirm this matches current billing before relying on it. The `modelMetrics` and `tokenDetails` maps are keyed by runtime strings (model IDs and token-type names) that the SDK type system does not validate. {% codetabs %} {% codetab typescript %} diff --git a/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md b/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md index 301053a71553..72d819632cd5 100644 --- a/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md +++ b/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md @@ -193,7 +193,7 @@ var client = new CopilotClient(new CopilotClientOptions **Solution:** -1. Install the CLI: [Installation guide](/copilot/how-tos/set-up/install-copilot-cli) +1. Install the CLI: [Installation guide](/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli) 1. Verify installation: diff --git a/content/copilot/how-tos/github-copilot-app/agent-sessions.md b/content/copilot/how-tos/github-copilot-app/agent-sessions.md index 0966bcdab42e..3dcc02d1ee34 100644 --- a/content/copilot/how-tos/github-copilot-app/agent-sessions.md +++ b/content/copilot/how-tos/github-copilot-app/agent-sessions.md @@ -39,7 +39,7 @@ The session mode controls how much autonomy the agent has. You can set the mode You can select a model and reasoning effort from the dropdowns below the prompt field. Higher reasoning effort gives the agent more time to think through complex problems but may take longer. You can change both settings at any time during a session. -If you choose **Auto** in the model picker, the app automatically selects the optimal model for your task based on task complexity. After the session starts, the picker next to **Auto** shows which model handled each response. For more information, see [AUTOTITLE](/copilot/concepts/auto-model-selection). +If you choose **Auto** in the model picker, the app automatically selects the optimal model for your task based on task complexity. After the session starts, the picker next to **Auto** shows which model handled each response. For more information, see [AUTOTITLE](/copilot/concepts/models/auto-model-selection). If you configured your own model provider in the app, those models also appear in the picker. For setup steps, see [AUTOTITLE](/copilot/how-tos/github-copilot-app/use-byok-models). diff --git a/content/copilot/how-tos/github-copilot-app/use-byok-models.md b/content/copilot/how-tos/github-copilot-app/use-byok-models.md index 264be63c1fdd..c1dc52a7d273 100644 --- a/content/copilot/how-tos/github-copilot-app/use-byok-models.md +++ b/content/copilot/how-tos/github-copilot-app/use-byok-models.md @@ -20,7 +20,7 @@ You can configure the {% data variables.copilot.github_copilot_app %} to use you You must sign in with a {% data variables.product.github %} account to use the app, but you do not need a {% data variables.product.prodname_copilot_short %} plan if you use your own model provider. If you do have a {% data variables.product.prodname_copilot_short %} plan, you can use both your own model provider and {% data variables.product.github %}-hosted models in the same app. > [!NOTE] -> This article is for users who want to configure their own LLM provider settings on their local machine. To set up custom models for users in an organization or enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys) and [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys). +> This article is for users who want to configure their own LLM provider settings on their local machine. To set up custom models for users in an organization or enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models) and [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models). ## Supported providers diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md b/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md index 8a6bd4110ae8..51964014c6ce 100644 --- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md +++ b/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md @@ -103,7 +103,7 @@ If {% data variables.product.prodname_copilot_short %} tries to make a request w ![Screenshot of a warning from {% data variables.product.prodname_copilot_short %} about being blocked by the firewall.](/assets/images/help/copilot/cloud-agent/firewall-warning.png) -For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). ## {% data variables.product.prodname_copilot_short %} is not picking up attached screenshots diff --git a/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md b/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md index 18a297626263..a3361b40ed62 100644 --- a/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md +++ b/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md @@ -45,7 +45,7 @@ These instructions explain how to use {% data variables.copilot.copilot_code-rev ![Screenshot of a code review left by {% data variables.product.prodname_copilot_short %}.](/assets/images/help/copilot/code-review/review-comment@2x.png) - {% data variables.product.prodname_copilot_short %} always leaves a "Comment" review, not an "Approve" review or a "Request changes" review. This means that {% data variables.product.prodname_copilot_short %}'s reviews do not count toward required approvals for the pull request, and {% data variables.product.prodname_copilot_short %}'s reviews will not block merging changes. For more details, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews). + {% data variables.product.prodname_copilot_short %} always leaves a "Comment" review, not an "Approve" review or a "Request changes" review. This means that {% data variables.product.prodname_copilot_short %}'s reviews do not count toward required approvals for the pull request, and {% data variables.product.prodname_copilot_short %}'s reviews will not block merging changes. For more details, see [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews). 1. {% data variables.product.prodname_copilot_short %}'s review comments behave like review comments from humans. You can add reactions to them, comment on them, resolve them and hide them. @@ -72,7 +72,7 @@ For more information, see [AUTOTITLE](/copilot/concepts/agents/code-review#revie Where possible, {% data variables.product.prodname_copilot_short %}'s feedback includes suggested changes which you can apply with a couple of clicks. -If you're happy with the changes, you can accept a single suggestion from {% data variables.product.prodname_copilot_short %} and commit it, or accept a group of suggestions together in a single commit. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request). +If you're happy with the changes, you can accept a single suggestion from {% data variables.product.prodname_copilot_short %} and commit it, or accept a group of suggestions together in a single commit. For more information, see [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request). You can also invoke {% data variables.copilot.copilot_cloud_agent %} to implement suggested changes. To do this, you must: @@ -83,7 +83,7 @@ You can also invoke {% data variables.copilot.copilot_cloud_agent %} to implemen When you push changes to a pull request that {% data variables.product.prodname_copilot_short %} has reviewed, it won't automatically re-review your changes unless you've configured it to review new pushes after enabling automatic reviews. -To manually request a re-review from {% data variables.product.prodname_copilot_short %}, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review). +To manually request a re-review from {% data variables.product.prodname_copilot_short %}, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review). To automatically request re-reviews from {% data variables.product.prodname_copilot_short %} on every push, enable automatic code review for the repository and select **Review new pushes** in the ruleset settings. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/set-up-copilot/configure-automatic-review#configuring-automatic-code-review-for-repositories-in-an-organization). @@ -115,7 +115,7 @@ You can use either of the following files to configure {% data variables.copilot * `.github/workflows/copilot-setup-steps.yml`: If you have already configured this file for {% data variables.copilot.copilot_cloud_agent %}, {% data variables.copilot.copilot_code-review_short %} will use the same configuration by default. * `.github/workflows/copilot-code-review.yml`: We recommend creating this file if you want to configure {% data variables.copilot.copilot_code-review_short %}'s environment independently of {% data variables.copilot.copilot_cloud_agent %}. If this file is present in your repository, it is used for {% data variables.copilot.copilot_code-review_short %} instead of `copilot-setup-steps.yml`. -You can also configure firewall rules to control the domains and URLs that {% data variables.copilot.copilot_code-review_short %} can access, at both the organization and repository level. These settings are configured separately from {% data variables.copilot.copilot_cloud_agent %}'s firewall settings, in their own section of the same "Internet access" tab. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +You can also configure firewall rules to control the domains and URLs that {% data variables.copilot.copilot_code-review_short %} can access, at both the organization and repository level. These settings are configured separately from {% data variables.copilot.copilot_cloud_agent %}'s firewall settings, in their own section of the same "Internet access" tab. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). ## Providing feedback on {% data variables.product.prodname_copilot_short %}'s reviews diff --git a/content/copilot/reference/copilot-allowlist-reference.md b/content/copilot/reference/copilot-allowlist-reference.md index d39fea8cdb5f..c7d6a9b40187 100644 --- a/content/copilot/reference/copilot-allowlist-reference.md +++ b/content/copilot/reference/copilot-allowlist-reference.md @@ -103,7 +103,7 @@ The {% data variables.copilot.copilot_cloud_agent %} includes a built-in firewal * Common certificate authorities (to allow SSL certificates to be validated). * Hosts used to download web browsers for the Playwright MCP server. -For more information about configuring the {% data variables.copilot.copilot_cloud_agent %} firewall, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +For more information about configuring the {% data variables.copilot.copilot_cloud_agent %} firewall, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). The allowlist allows access to the following hosts: diff --git a/content/copilot/responsible-use/agents.md b/content/copilot/responsible-use/agents.md index 6ec40a2541df..e75a8d5ac80f 100644 --- a/content/copilot/responsible-use/agents.md +++ b/content/copilot/responsible-use/agents.md @@ -340,7 +340,7 @@ For additional guidance on the responsible use of Copilot agentic features, we r * [AUTOTITLE](/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review) * [AUTOTITLE](/copilot/tutorials/cloud-agent/get-the-best-results) * [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment) -* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall) +* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall) * [AUTOTITLE](/copilot/how-tos/copilot-sdk/getting-started) * [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/configure-mcp-servers) * [AUTOTITLE](/copilot/concepts/agents/copilot-cli/about-copilot-cli) diff --git a/content/copilot/tutorials/cloud-agent/give-access-to-resources.md b/content/copilot/tutorials/cloud-agent/give-access-to-resources.md index 8ccae1e703da..ca0fae4e8c09 100644 --- a/content/copilot/tutorials/cloud-agent/give-access-to-resources.md +++ b/content/copilot/tutorials/cloud-agent/give-access-to-resources.md @@ -100,5 +100,5 @@ Now you have seen how access to resources is controlled at the repository and or 1. **Choose which repositories have access** to {% data variables.copilot.copilot_cloud_agent %}. If you're concerned about a specific repository, you can block it for all users. 1. **Consider who gets admin access** to these repositories. You can control this at the organization level by creating a team with the **All-repository admin** custom role. These users will be able to manage configuration _settings_, such as MCP configuration and Agents secrets and variables, in every repository. 1. **Use rulesets and CODEOWNERS files** to control edits of configuration _files_, such as `copilot-setup-steps.yml`, which anyone with write access can edit by default. -1. **Review the default firewall**. The firewall doesn't affect connections to MCP servers or setup steps in `copilot-setup-steps.yml`, but it does limit {% data variables.product.prodname_copilot_short %}'s access to the Internet during task execution. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall). +1. **Review the default firewall**. The firewall doesn't affect connections to MCP servers or setup steps in `copilot-setup-steps.yml`, but it does limit {% data variables.product.prodname_copilot_short %}'s access to the Internet during task execution. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall). 1. **Define plugin standards**. Plugins are installable packages that extend {% data variables.product.prodname_copilot_short %} with reusable agents, skills, hooks, and integrations. You can control which plugins and marketplaces are permitted in an enterprise's `{% data variables.copilot.managed_setting_file %}` file. See [AUTOTITLE](/copilot/concepts/agents/about-enterprise-plugin-standards). diff --git a/content/copilot/tutorials/optimize-code-reviews.md b/content/copilot/tutorials/optimize-code-reviews.md index a5cbf7b748ae..2b3b80f78a89 100644 --- a/content/copilot/tutorials/optimize-code-reviews.md +++ b/content/copilot/tutorials/optimize-code-reviews.md @@ -211,7 +211,7 @@ So far, {% data variables.copilot.copilot_code-review_short %} has provided per- When {% data variables.product.prodname_code_quality_short %} is enabled, it posts reliability and maintainability findings as inline comments on the pull request, each with a one-click, {% data variables.product.prodname_copilot_short %}-powered autofix you can apply directly. It also reports coverage metrics that show whether the change maintains or reduces reported code coverage from your test suite compared to the default branch. If you want to enforce these standards, rulesets can require rules-based findings to be resolved and coverage thresholds to be met before merge. -For more information, see [AUTOTITLE](/code-security/concepts/about-code-quality). +For more information, see [AUTOTITLE](/code-security/concepts/code-quality/code-quality). ## Optimized reviews with {% data variables.product.prodname_copilot_short %} diff --git a/content/copilot/tutorials/review-ai-generated-code.md b/content/copilot/tutorials/review-ai-generated-code.md index 2718f4c2e9ed..b951e4de001b 100644 --- a/content/copilot/tutorials/review-ai-generated-code.md +++ b/content/copilot/tutorials/review-ai-generated-code.md @@ -22,7 +22,7 @@ Always run automated tests and static analysis tools first. * Make sure the code compiles and all tests pass. Check for any new warnings or errors. * Use tools like [{% data variables.product.prodname_codeql %}](https://codeql.github.com/) and [{% data variables.product.prodname_dependabot %}](/code-security/concepts/supply-chain-security/dependabot-version-updates) to catch vulnerabilities and dependency issues. -* Use {% data variables.product.prodname_code_quality %} to catch reliability and maintainability issues and see code coverage. [AUTOTITLE](/code-security/concepts/about-code-quality). +* Use {% data variables.product.prodname_code_quality %} to catch reliability and maintainability issues and see code coverage. [AUTOTITLE](/code-security/concepts/code-quality/code-quality). * See [AUTOTITLE](/copilot/tutorials/copilot-cookbook/testing-code/generate-unit-tests) and [AUTOTITLE](/copilot/tutorials/copilot-cookbook/testing-code/create-end-to-end-tests) for examples of verifying code with {% data variables.product.prodname_copilot_short %}. ### Example prompts diff --git a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md index 219567311924..694929e9995e 100644 --- a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md +++ b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md @@ -54,4 +54,4 @@ This approach offers several advantages: * **Cost management**: Align with existing payment methods, contracts, credits, or negotiated rates. * **Visibility and control**: Monitor usage through your provider's existing dashboards and billing. -For setup instructions, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys). +For setup instructions, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models). diff --git a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md index 0efa78c6ac8b..580c83697efe 100644 --- a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md +++ b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md @@ -15,7 +15,7 @@ This tutorial walks you through running a pilot end to end: setting a budget, en ## Before you start your pilot -Before you enable anything, make sure you've evaluated the feature or model and confirmed it meets your compliance requirements. See [AUTOTITLE](/copilot/concepts/preparing-for-new-features-and-models). +Before you enable anything, make sure you've evaluated the feature or model and confirmed it meets your compliance requirements. See [AUTOTITLE](/copilot/concepts/learning-about-new-features-and-models). If you're not sure whether a feature or model is safe to enable, check with security and compliance teams at your company before you start the pilot. From 7219c67709b4dd20475e9cbbab9de5c5bae34721 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Tue, 18 Aug 2026 17:43:16 +0000 Subject: [PATCH 08/11] Delete orphaned features (2026-08-17-16-33) (#62805) Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> --- data/features/push-rulesets.yml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 data/features/push-rulesets.yml diff --git a/data/features/push-rulesets.yml b/data/features/push-rulesets.yml deleted file mode 100644 index 5c5f5448a5ec..000000000000 --- a/data/features/push-rulesets.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Issue 14025 -# Push rulesets for prohibiting certain files from entering a private or internal repository, and/or paths in the repository -versions: - fpt: '*' - ghec: '*' - ghes: '>=3.17' From cdb3465fb2ef81dda6947530592c59d502b8dba4 Mon Sep 17 00:00:00 2001 From: Sarita Iyer <66540150+saritai@users.noreply.github.com> Date: Tue, 18 Aug 2026 18:08:27 +0000 Subject: [PATCH 09/11] Refresh GitHub Copilot app documentation for chats, automations, custom agent usage (#62793) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> Copilot-Session: 375b7a52-9e3b-4dfd-bf8a-666d24f6824b --- .../concepts/agents/github-copilot-app.md | 4 +-- .../github-copilot-app/agent-sessions.md | 15 +++++++++-- .../customize-github-copilot-app.md | 4 ++- .../github-copilot-app/getting-started.md | 4 ++- .../managing-issues-and-pull-requests.md | 6 +++++ .../github-copilot-app/using-automations.md | 27 ++++++++++++------- 6 files changed, 44 insertions(+), 16 deletions(-) diff --git a/content/copilot/concepts/agents/github-copilot-app.md b/content/copilot/concepts/agents/github-copilot-app.md index c57c2811150c..4584f0247f9f 100644 --- a/content/copilot/concepts/agents/github-copilot-app.md +++ b/content/copilot/concepts/agents/github-copilot-app.md @@ -46,7 +46,7 @@ The {% data variables.copilot.github_copilot_app %} supports the following opera * **{% data variables.product.github %} integration:** Browse and find issues, start sessions from them, create and close pull requests, review pull requests, view CI check results, and search across your repositories—all within the app. * **Customizations:** Configure and use global instructions, MCP servers, and agent skills. * **Automations:** Save recurring agent tasks and run them on a schedule or on demand. -* **Quick chats:** Brainstorm in a conversation mode without creating a dedicated branch or workspace. +* **Chats:** Brainstorm in a conversation mode without creating a dedicated branch or workspace. * **Session history:** Use `/chronicle` to get insights from previous sessions, including work you started in the app. * **Canvases:** Open custom, agent-driven artifacts and interfaces where people and agents can collaborate. @@ -68,7 +68,7 @@ Follow these practices to use {% data variables.product.prodname_ai_credits_shor * **Match model capability to task complexity.** Use lighter models for straightforward changes and higher-capability models for complex debugging, design decisions, and multi-step tasks. * **Choose the right session mode for the stage of work.** Use **Plan** mode to validate scope and approach, use **Interactive** mode when you want tighter steering, and move to **Autopilot** when the task is well-defined. -* **Use quick chats to scope before opening a full session.** For early exploration, use **Quick chats** to clarify requirements and reduce rework before creating a dedicated session. +* **Use chats to scope before opening a full session.** For early exploration, use **Chats** to clarify requirements and reduce rework before creating a dedicated session. * **Start a new session when you switch tasks.** A new session keeps context focused and avoids carrying irrelevant history into unrelated work. * **Use usage insights regularly.** Run `/chronicle cost tips` to find expensive patterns in your session usage and improve efficiency over time. diff --git a/content/copilot/how-tos/github-copilot-app/agent-sessions.md b/content/copilot/how-tos/github-copilot-app/agent-sessions.md index 3dcc02d1ee34..85195a14a5a7 100644 --- a/content/copilot/how-tos/github-copilot-app/agent-sessions.md +++ b/content/copilot/how-tos/github-copilot-app/agent-sessions.md @@ -45,9 +45,20 @@ If you configured your own model provider in the app, those models also appear i Hover over the {% octicon "info" aria-label="the info icon" %} icon in the model picker to see model details. -## Using quick chats +## Using chats -**Quick chats** in the sidebar opens a conversation mode without creating a dedicated branch or worktree. Use it for brainstorming, asking questions, or exploring ideas before starting a session. Your chat history is saved and listed by conversation name. +The **Chats** section in the sidebar opens a conversation mode without creating a dedicated branch or worktree. Use it for brainstorming, asking questions, or exploring ideas before starting a session. Your chat history is saved and listed by conversation name. + +To archive a chat without losing its history, right-click the chat in the sidebar to open its menu, then click **Archive chat**. + +## Managing sessions and chats + +Use **Manage sessions** to view, search, and filter sessions and chats, including archived chats. You can select multiple items to archive or delete, and restore chats that you previously archived. The view also shows separate, sortable columns for the disk space used by working files and chat history. + +1. Open the app settings, then select **Sessions**. +1. Click **Manage sessions**. +1. Search or filter to find the sessions or chats you want to manage. +1. Select one or more sessions or chats, then archive or delete them. To restore an archived chat, find the chat, then restore it. ## Using `/security-review` in app sessions diff --git a/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md b/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md index 6c935a181dea..e9aa352eb388 100644 --- a/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md +++ b/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md @@ -41,7 +41,9 @@ For more information about MCP, see [AUTOTITLE](/copilot/how-tos/copilot-cli/cus {% data variables.copilot.custom_agents_caps_short %} are specialized versions of {% data variables.copilot.copilot_cloud_agent %} that you can tailor to specific tasks and workflows. -In a session, type `/agent` to choose and invoke a {% data variables.copilot.copilot_custom_agent_short %}. +Use the agent picker dropdown in the prompt box to select a {% data variables.copilot.copilot_custom_agent_short %} before or during a session. + +Alternatively, type `/agent` in the prompt box to choose and invoke a {% data variables.copilot.copilot_custom_agent_short %}. For more information, see [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-custom-agents). diff --git a/content/copilot/how-tos/github-copilot-app/getting-started.md b/content/copilot/how-tos/github-copilot-app/getting-started.md index 0cf581b6260f..4607b3e03e7b 100644 --- a/content/copilot/how-tos/github-copilot-app/getting-started.md +++ b/content/copilot/how-tos/github-copilot-app/getting-started.md @@ -75,12 +75,14 @@ To work on code, you need at least one project connected to the app. A project c ## Orienting yourself + The sidebar gives you access to the main areas of the app: * **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** — Browse and filter issues and pull requests from your repositories, check CI status, and leave reviews. * **[Automations](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fautomations)** — Saved agent tasks that run on a schedule or on demand. * **Search** — Search across your repositories directly from the app. -* **Sessions** — Active agent sessions, grouped by project. This also includes **Quick chats**, which are general chat conversations. +* **Sessions** — Active agent sessions, grouped by project. +* **Chats** — General conversations that do not require a dedicated branch or workspace. ## Next steps diff --git a/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md b/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md index cfa307a90649..c3afd562b464 100644 --- a/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md +++ b/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md @@ -17,6 +17,12 @@ category: Open **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** in the sidebar to see your issues and pull requests in one place. The view is organized into sections—by default, **All**, **Active**, **Review requests**, and **Done**. You can edit the default sections or add new ones with your own filters. Use the search bar within any section to find items by keyword or qualifiers like `label:bug`. +## Creating an issue or pull request from a session + +When you ask an agent in the app to create an issue, the agent chooses a repository issue template based on the type of issue. To use a particular template, specify it in your prompt. + +When you ask an agent to create a pull request, it also follows the repository's pull request template. + ## Starting a session from an issue 1. Open **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** in the sidebar. diff --git a/content/copilot/how-tos/github-copilot-app/using-automations.md b/content/copilot/how-tos/github-copilot-app/using-automations.md index 12a38ac10453..91bce8c3fd60 100644 --- a/content/copilot/how-tos/github-copilot-app/using-automations.md +++ b/content/copilot/how-tos/github-copilot-app/using-automations.md @@ -43,18 +43,25 @@ To use cloud {% data variables.copilot.copilot_automations %}, make sure the fol ## Creating an {% data variables.copilot.copilot_automation %} 1. Click **New automation** in the top-right corner. -1. Enter a **name** for the {% data variables.copilot.copilot_automation %}. -1. Select one or more **triggers** that determine when the {% data variables.copilot.copilot_automation %} runs: - - * **Manual**: Run the {% data variables.copilot.copilot_automation %} manually. - * **On a schedule**: choose a recurring interval, either hourly, daily, or weekly. - * **When an issue is created**: the {% data variables.copilot.copilot_automation %} runs each time an issue is opened in the repository. You can add a search query filter for specific issues. +1. Enter a name for the {% data variables.copilot.copilot_automation %}. +1. Select a **Trigger** from the dropdown. Selecting a trigger will reveal additional fields for you to populate. + + * **Manual**: Run the {% data variables.copilot.copilot_automation %} only when you start it. + * **Hourly**: Run the {% data variables.copilot.copilot_automation %} every hour. + * **Daily**: Choose one or more hours and a minute. The {% data variables.copilot.copilot_automation %} runs at each selected time. + * **Weekly**: Choose one or more days of the week and a time of day. + * **CRON**: For a local {% data variables.copilot.copilot_automation %}, enter a custom CRON expression. The app validates the expression and shows a human-readable preview of the schedule. + * **Issue**: Choose the repository event that triggers the {% data variables.copilot.copilot_automation %}, such as an issue being created. You can add a search query to limit which issues trigger it. + * **Pull request**: Choose the repository event that triggers the {% data variables.copilot.copilot_automation %}, such as a pull request being opened or new commits being pushed to it. You can add filters to limit which pull requests trigger it. + + To configure more than one trigger, click **Add another trigger**. The {% data variables.copilot.copilot_automation %} runs when any of its triggers occur. 1. Optionally, enable **Run in the cloud** to let the {% data variables.copilot.copilot_automation %} run in a cloud environment, allowing the {% data variables.copilot.copilot_automation %} to run even when your computer is off. - For cloud {% data variables.copilot.copilot_automations %}, you can also use the **Tools** dropdown to select the tools {% data variables.product.prodname_copilot_short %} can use when the automation runs, such as pushing changes, updating issue labels, or creating a pull request. Select only the tools the task requires. The tools you select control what actions {% data variables.product.prodname_copilot_short %} can take in your repository. -1. In the **prompt** field, describe the task you want {% data variables.product.prodname_copilot_short %} to perform each time the {% data variables.copilot.copilot_automation %} runs. -1. Optionally, select the **project** and **model** you want {% data variables.product.prodname_copilot_short %} to use. -1. Click **Create** to save, or select **Create and run** to save and test the {% data variables.copilot.copilot_automation %} immediately. + For a cloud {% data variables.copilot.copilot_automation %}, use the **Tools** dropdown to select the tools {% data variables.product.prodname_copilot_short %} can use, such as pushing changes, updating issue labels, or creating a pull request. Select only the tools the task requires. +1. In the prompt box, describe the task you want {% data variables.product.prodname_copilot_short %} to perform each time the {% data variables.copilot.copilot_automation %} runs. You can type `/` to use an available skill. +1. Use the controls below the prompt box to select the model, reasoning effort, and agent for the {% data variables.copilot.copilot_automation %}. +1. Click **Select project**, then choose the project where the {% data variables.copilot.copilot_automation %} will run. +1. Click **Create** to save the {% data variables.copilot.copilot_automation %}. To save and test it immediately, open the dropdown next to **Create**, then click **Create and run**. ## Running an {% data variables.copilot.copilot_automation %} on demand From 7556635fe8c6f9d8dee7b8681c0c7b14a5ab499d Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Tue, 18 Aug 2026 18:54:50 +0000 Subject: [PATCH 10/11] Always serve Copilot variables in English (#62812) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 645c73a6-af94-4c7e-9444-66c92aabd7a9 --- src/data-directory/lib/get-data.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/data-directory/lib/get-data.ts b/src/data-directory/lib/get-data.ts index c585c9c25875..65b3d8d8bc91 100644 --- a/src/data-directory/lib/get-data.ts +++ b/src/data-directory/lib/get-data.ts @@ -28,7 +28,10 @@ const DEBUG_JIT_DATA_READS = Boolean(JSON.parse(process.env.DEBUG_JIT_DATA_READS // English for. // Having this is safer than trying to wrangle the translations to NOT // have them translated. -const ALWAYS_ENGLISH_YAML_FILES = new Set(['data/variables/product.yml']) +const ALWAYS_ENGLISH_YAML_FILES = new Set([ + 'data/variables/product.yml', + 'data/variables/copilot.yml', +]) const ALWAYS_ENGLISH_MD_FILES = new Set([ 'data/reusables/ssh/fingerprints.md', 'data/reusables/ssh/known_hosts.md', From 48ac3a7e2c6a980bebb2945c0d19a117d5599eec Mon Sep 17 00:00:00 2001 From: Nhu Do Date: Tue, 18 Aug 2026 20:14:09 +0000 Subject: [PATCH 11/11] Update auto-model-selection.yml (#62777) --- data/tables/copilot/auto-model-selection.yml | 45 +++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/data/tables/copilot/auto-model-selection.yml b/data/tables/copilot/auto-model-selection.yml index f8d304f126b0..395d90358523 100644 --- a/data/tables/copilot/auto-model-selection.yml +++ b/data/tables/copilot/auto-model-selection.yml @@ -43,6 +43,30 @@ cli: true app: true +- name: GPT-5.5 + cloud_agent: false + chat: true + cli: true + app: false + +- name: GPT-5.6 Luna + cloud_agent: false + chat: true + cli: true + app: false + +- name: GPT-5.6 Sol + cloud_agent: false + chat: true + cli: true + app: false + +- name: GPT-5.6 Terra + cloud_agent: false + chat: true + cli: true + app: false + # Anthropic - name: Claude Haiku 4.5 cloud_agent: false @@ -50,28 +74,27 @@ cli: true app: true +- name: Claude Opus 5 + cloud_agent: false + chat: true + cli: true + app: false + - name: Claude Sonnet 4.6 cloud_agent: true chat: true cli: true app: true -# Microsoft -- name: MAI-Code-1-Flash - cloud_agent: true +- name: Claude Sonnet 5 + cloud_agent: false chat: true cli: true - app: true + app: false +# Microsoft - name: MAI-Code-1.1-Flash cloud_agent: true chat: true cli: true app: true - -# Fine-tuned OAI models -- name: Raptor mini - cloud_agent: false - chat: true - cli: false - app: false